All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/anvil/penalty.c:55,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/anvil/penalty.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: penalty_init
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - hash_table_create
    - i_new
    linkageType: ''
    returnType: struct penalty
    signature: struct penalty *penalty_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/anvil/penalty.c:63,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/penalty.c:65,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/penalty.c:66,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/penalty.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - penalty
    - rec
    argTypes:
    - struct penalty*
    - struct penalty_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: penalty_rec_free
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    - i_free
    linkageType: ''
    returnType: void
    signature: void penalty_rec_free(struct penalty *penalty, struct penalty_rec *rec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: penalty_rec_free
      Src: /src/dovecot/src/anvil/penalty.c:77,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/anvil/penalty.c:78,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/anvil/penalty.c:80,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/penalty.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _penalty
    argTypes:
    - struct penalty**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 82
    functionName: penalty_deinit
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - penalty_rec_free
    - i_free
    - hash_table_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void penalty_deinit(struct penalty **_penalty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - penalty
    - expire_secs
    argTypes:
    - struct penalty*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: penalty_set_expire_secs
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void penalty_set_expire_secs(struct penalty *penalty, unsigned int
      expire_secs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/dovecot/src/anvil/penalty.c:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - rec
    - checksum
    argTypes:
    - struct penalty_rec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: penalty_bump_checksum
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - memmove
    linkageType: ''
    returnType: bool
    signature: bool penalty_bump_checksum(struct penalty_rec *rec, unsigned int checksum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/penalty.c:120,1
    - Dst: memmove
      Src: /src/dovecot/src/anvil/penalty.c:124,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/penalty.c:132,1
    - Dst: memcpy
      Src: /src/dovecot/src/anvil/penalty.c:133,1
    - Dst: memmove
      Src: /src/dovecot/src/anvil/penalty.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - rec
    - checksum
    argTypes:
    - struct penalty_rec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 143
    functionName: penalty_add_checksum
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_assert
    - i_new
    - memmove
    linkageType: ''
    returnType: void
    signature: void penalty_add_checksum(struct penalty_rec *rec, unsigned int checksum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/penalty.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - penalty
    - ident
    - last_penalty_r
    argTypes:
    - struct penalty*
    - char*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 158
    functionName: penalty_get
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int penalty_get(struct penalty *penalty, const char *ident,\n\t\t\t
      time_t *last_penalty_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/anvil/penalty.c:166,1
    - Dst: timeout_add
      Src: /src/dovecot/src/anvil/penalty.c:175,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/penalty.c:179,1
    - Dst: penalty_rec_free
      Src: /src/dovecot/src/anvil/penalty.c:180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - penalty
    argTypes:
    - struct penalty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 182
    functionName: penalty_timeout
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - penalty_rec_free
    - timeout_add
    - hash_table_remove
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void penalty_timeout(struct penalty *penalty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/penalty.c:190,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/penalty.c:191,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/penalty.c:193,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/penalty.c:195,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/penalty.c:196,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/anvil/penalty.c:197,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/anvil/penalty.c:199,1
    - Dst: time_to_uint32
      Src: /src/dovecot/src/anvil/penalty.c:204,1
    - Dst: penalty_bump_checksum
      Src: /src/dovecot/src/anvil/penalty.c:206,1
    - Dst: penalty_add_checksum
      Src: /src/dovecot/src/anvil/penalty.c:209,1
    - Dst: time_to_uint32
      Src: /src/dovecot/src/anvil/penalty.c:211,1
    - Dst: time_to_uint32
      Src: /src/dovecot/src/anvil/penalty.c:220,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/anvil/penalty.c:223,1
    - Dst: timeout_add
      Src: /src/dovecot/src/anvil/penalty.c:226,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 4
    argNames:
    - penalty
    - ident
    - checksum
    - value
    argTypes:
    - struct penalty*
    - char*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 229
    functionName: penalty_inc
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - i_assert
    - DLLIST2_APPEND
    - time_to_uint32
    - timeout_add
    - penalty_add_checksum
    - i_strdup
    - DLLIST2_REMOVE
    - i_new
    - penalty_bump_checksum
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void penalty_inc(struct penalty *penalty, const char *ident,\n\t\t
      unsigned int checksum, unsigned int value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/penalty.c:238,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - penalty
    - ident
    - checksum
    argTypes:
    - struct penalty*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 255
    functionName: penalty_has_checksum
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: bool
    signature: "bool penalty_has_checksum(struct penalty *penalty, const char *ident,\n\t\t\t
      \ unsigned int checksum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/anvil/penalty.c:260,1
    - Dst: str_truncate
      Src: /src/dovecot/src/anvil/penalty.c:263,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/anvil/penalty.c:264,1
    - Dst: str_printfa
      Src: /src/dovecot/src/anvil/penalty.c:265,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/anvil/penalty.c:268,1
    - Dst: str_data
      Src: /src/dovecot/src/anvil/penalty.c:268,1
    - Dst: str_len
      Src: /src/dovecot/src/anvil/penalty.c:268,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/anvil/penalty.c:271,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - penalty
    - output
    argTypes:
    - struct penalty*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 272
    functionName: penalty_dump
    functionSourceFile: /src/dovecot/src/anvil/penalty.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - str_append_tabescaped
    - o_stream_send
    - o_stream_nsend
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void penalty_dump(struct penalty *penalty, struct ostream *output)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/anvil/test-connect-limit.c:30,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/anvil/test-connect-limit.c:31,1
    - Dst: connect_limit_dump
      Src: /src/dovecot/src/anvil/test-connect-limit.c:33,1
    - Dst: str_len
      Src: /src/dovecot/src/anvil/test-connect-limit.c:34,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:35,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/anvil/test-connect-limit.c:36,1
    - Dst: str_free
      Src: /src/dovecot/src/anvil/test-connect-limit.c:37,1
    - Dst: strchr
      Src: /src/dovecot/src/anvil/test-connect-limit.c:42,1
    - Dst: str_c
      Src: /src/dovecot/src/anvil/test-connect-limit.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:44,1
    - Dst: str_len
      Src: /src/dovecot/src/anvil/test-connect-limit.c:44,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:45,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:47,1
    - Dst: t_strndup
      Src: /src/dovecot/src/anvil/test-connect-limit.c:48,1
    - Dst: str_c
      Src: /src/dovecot/src/anvil/test-connect-limit.c:48,1
    - Dst: str_c
      Src: /src/dovecot/src/anvil/test-connect-limit.c:48,1
    - Dst: str_delete
      Src: /src/dovecot/src/anvil/test-connect-limit.c:49,1
    - Dst: str_c
      Src: /src/dovecot/src/anvil/test-connect-limit.c:49,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:54,1
    - Dst: str_c
      Src: /src/dovecot/src/anvil/test-connect-limit.c:54,1
    - Dst: str_array_length
      Src: /src/dovecot/src/anvil/test-connect-limit.c:55,1
    - Dst: i_qsort
      Src: /src/dovecot/src/anvil/test-connect-limit.c:56,1
    - Dst: str_new
      Src: /src/dovecot/src/anvil/test-connect-limit.c:58,1
    - Dst: str_len
      Src: /src/dovecot/src/anvil/test-connect-limit.c:58,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:61,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:62,1
    - Dst: str_append
      Src: /src/dovecot/src/anvil/test-connect-limit.c:64,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/test-connect-limit.c:65,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:67,1
    - Dst: str_c
      Src: /src/dovecot/src/anvil/test-connect-limit.c:67,1
    - Dst: str_free
      Src: /src/dovecot/src/anvil/test-connect-limit.c:68,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/anvil/test-connect-limit.c:70,1
    - Dst: str_free
      Src: /src/dovecot/src/anvil/test-connect-limit.c:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 3
    argNames:
    - limit
    - expected_altnames
    - expected_dump
    argTypes:
    - struct connect_limit*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 72
    functionName: test_session_dump
    functionSourceFile: /src/dovecot/src/anvil/test-connect-limit.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_c
    - str_append_c
    - str_len
    - connect_limit_dump
    - i_qsort
    - str_array_length
    - test_assert_strcmp
    - t_strndup
    - t_strsplit
    - str_delete
    - test_assert
    - str_append
    - i_assert
    - str_new
    - o_stream_destroy
    - o_stream_create_buffer
    - str_free
    linkageType: ''
    returnType: void
    signature: "void test_session_dump(struct connect_limit *limit, const char *expected_altnames,\n\t\t
      \ const char *expected_dump)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/anvil/test-connect-limit.c:78,1
    - Dst: connect_limit_init
      Src: /src/dovecot/src/anvil/test-connect-limit.c:79,1
    - Dst: i_zero
      Src: /src/dovecot/src/anvil/test-connect-limit.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:93,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/test-connect-limit.c:93,1
    - Dst: connect_limit_connect
      Src: /src/dovecot/src/anvil/test-connect-limit.c:94,1
    - Dst: test_session_dump
      Src: /src/dovecot/src/anvil/test-connect-limit.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:98,1
    - Dst: connect_limit_lookup
      Src: /src/dovecot/src/anvil/test-connect-limit.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:111,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/test-connect-limit.c:111,1
    - Dst: i_zero
      Src: /src/dovecot/src/anvil/test-connect-limit.c:112,1
    - Dst: connect_limit_connect
      Src: /src/dovecot/src/anvil/test-connect-limit.c:113,1
    - Dst: test_session_dump
      Src: /src/dovecot/src/anvil/test-connect-limit.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:118,1
    - Dst: connect_limit_lookup
      Src: /src/dovecot/src/anvil/test-connect-limit.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:131,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/test-connect-limit.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:132,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/test-connect-limit.c:132,1
    - Dst: connect_limit_connect
      Src: /src/dovecot/src/anvil/test-connect-limit.c:133,1
    - Dst: test_session_dump
      Src: /src/dovecot/src/anvil/test-connect-limit.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:138,1
    - Dst: connect_limit_lookup
      Src: /src/dovecot/src/anvil/test-connect-limit.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:139,1
    - Dst: connect_limit_lookup
      Src: /src/dovecot/src/anvil/test-connect-limit.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:146,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/test-connect-limit.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:147,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/test-connect-limit.c:147,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/anvil/test-connect-limit.c:148,1
    - Dst: connect_limit_connect
      Src: /src/dovecot/src/anvil/test-connect-limit.c:149,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/anvil/test-connect-limit.c:151,1
    - Dst: test_session_dump
      Src: /src/dovecot/src/anvil/test-connect-limit.c:152,1
    - Dst: connect_limit_iter_begin
      Src: /src/dovecot/src/anvil/test-connect-limit.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:159,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:159,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:161,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:162,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:164,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:165,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:166,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:167,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:169,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:169,1
    - Dst: connect_limit_iter_deinit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:170,1
    - Dst: connect_limit_iter_begin
      Src: /src/dovecot/src/anvil/test-connect-limit.c:173,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:174,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:174,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:175,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:176,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:179,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:179,1
    - Dst: connect_limit_iter_deinit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:180,1
    - Dst: connect_limit_iter_begin
      Src: /src/dovecot/src/anvil/test-connect-limit.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:184,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:184,1
    - Dst: connect_limit_iter_deinit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:185,1
    - Dst: connect_limit_iter_begin_alt_username
      Src: /src/dovecot/src/anvil/test-connect-limit.c:188,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:190,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:190,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:191,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:192,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:195,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:196,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:197,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:198,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:200,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:200,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:201,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:202,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:205,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/test-connect-limit.c:205,1
    - Dst: connect_limit_iter_deinit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:206,1
    - Dst: connect_limit_disconnect
      Src: /src/dovecot/src/anvil/test-connect-limit.c:209,1
    - Dst: test_session_dump
      Src: /src/dovecot/src/anvil/test-connect-limit.c:210,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:212,1
    - Dst: connect_limit_lookup
      Src: /src/dovecot/src/anvil/test-connect-limit.c:212,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:213,1
    - Dst: connect_limit_lookup
      Src: /src/dovecot/src/anvil/test-connect-limit.c:213,1
    - Dst: connect_limit_disconnect_pid
      Src: /src/dovecot/src/anvil/test-connect-limit.c:216,1
    - Dst: test_session_dump
      Src: /src/dovecot/src/anvil/test-connect-limit.c:217,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:218,1
    - Dst: connect_limit_lookup
      Src: /src/dovecot/src/anvil/test-connect-limit.c:218,1
    - Dst: connect_limit_deinit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:220,1
    - Dst: test_end
      Src: /src/dovecot/src/anvil/test-connect-limit.c:221,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 222
    functionName: test_connect_limit
    functionSourceFile: /src/dovecot/src/anvil/test-connect-limit.c
    functionUses: 0
    functionsReached:
    - guid_128_cmp
    - connect_limit_lookup
    - test_assert
    - connect_limit_iter_begin
    - connect_limit_connect
    - test_expect_no_more_errors
    - net_addr2ip
    - connect_limit_iter_next
    - connect_limit_deinit
    - connect_limit_init
    - test_expect_error_string
    - test_end
    - i_zero
    - connect_limit_disconnect
    - connect_limit_iter_deinit
    - strcmp
    - test_session_dump
    - connect_limit_iter_begin_alt_username
    - connect_limit_disconnect_pid
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connect_limit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:241,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/anvil/test-connect-limit.c:246,1
    - Dst: connect_limit_disconnect
      Src: /src/dovecot/src/anvil/test-connect-limit.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - limit
    - test_sessions
    - test_session_count
    argTypes:
    - struct connect_limit*
    - struct test_session**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 251
    functionName: test_session_disconnect
    functionSourceFile: /src/dovecot/src/anvil/test-connect-limit.c
    functionUses: 0
    functionsReached:
    - connect_limit_disconnect
    - DLLIST_REMOVE
    - i_rand_limit
    linkageType: ''
    returnType: void
    signature: "void test_session_disconnect(struct connect_limit *limit,\n\t\t\tstruct
      test_session **test_sessions,\n\t\t\tunsigned int *test_session_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/anvil/test-connect-limit.c:263,1
    - Dst: connect_limit_disconnect_pid
      Src: /src/dovecot/src/anvil/test-connect-limit.c:268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - limit
    - pid
    - test_sessions
    - test_session_count
    argTypes:
    - struct connect_limit*
    - pid_t
    - struct test_session**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 269
    functionName: test_session_disconnect_pid
    functionSourceFile: /src/dovecot/src/anvil/test-connect-limit.c
    functionUses: 0
    functionsReached:
    - connect_limit_disconnect_pid
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: "void test_session_disconnect_pid(struct connect_limit *limit, pid_t
      pid,\n\t\t\t    struct test_session **test_sessions,\n\t\t\t    unsigned int
      *test_session_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_equals
      Src: /src/dovecot/src/anvil/test-connect-limit.c:277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - test_sessions
    - guid
    argTypes:
    - struct test_session*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 281
    functionName: test_session_find
    functionSourceFile: /src/dovecot/src/anvil/test-connect-limit.c
    functionUses: 0
    functionsReached:
    - guid_128_equals
    linkageType: ''
    returnType: struct test_session
    signature: 'struct test_session *

      test_session_find(struct test_session *test_sessions, const guid_128_t guid)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/anvil/test-connect-limit.c:286,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/anvil/test-connect-limit.c:287,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/anvil/test-connect-limit.c:288,1
    - Dst: connect_limit_dump
      Src: /src/dovecot/src/anvil/test-connect-limit.c:289,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/anvil/test-connect-limit.c:290,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/anvil/test-connect-limit.c:293,1
    - Dst: str_data
      Src: /src/dovecot/src/anvil/test-connect-limit.c:293,1
    - Dst: str_len
      Src: /src/dovecot/src/anvil/test-connect-limit.c:293,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/anvil/test-connect-limit.c:296,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/anvil/test-connect-limit.c:296,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/anvil/test-connect-limit.c:298,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/anvil/test-connect-limit.c:298,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/anvil/test-connect-limit.c:301,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/anvil/test-connect-limit.c:305,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:306,1
    - Dst: str_array_length
      Src: /src/dovecot/src/anvil/test-connect-limit.c:306,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:309,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/anvil/test-connect-limit.c:309,1
    - Dst: test_session_find
      Src: /src/dovecot/src/anvil/test-connect-limit.c:311,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:312,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:314,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:318,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/anvil/test-connect-limit.c:318,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:319,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:320,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:321,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:323,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/test-connect-limit.c:323,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:324,1
    - Dst: net_ip_cmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:324,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:326,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:328,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/test-connect-limit.c:328,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:329,1
    - Dst: net_ip_cmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:329,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:339,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:340,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:344,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/anvil/test-connect-limit.c:345,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:348,1
    - Dst: str_array_length
      Src: /src/dovecot/src/anvil/test-connect-limit.c:348,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-connect-limit.c:354,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/anvil/test-connect-limit.c:358,1
    - Dst: str_free
      Src: /src/dovecot/src/anvil/test-connect-limit.c:359,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 2
    argNames:
    - limit
    - test_sessions
    argTypes:
    - struct connect_limit*
    - struct test_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 360
    functionName: test_sessions_compare
    functionSourceFile: /src/dovecot/src/anvil/test-connect-limit.c
    functionUses: 0
    functionsReached:
    - str_len
    - test_assert_idx
    - o_stream_unref
    - guid_128_from_string
    - test_assert
    - i_stream_create_from_data
    - o_stream_create_buffer
    - net_ip_cmp
    - net_addr2ip
    - connect_limit_dump
    - t_strsplit_tabescaped
    - str_to_pid
    - i_stream_next_line
    - str_new
    - test_session_find
    - str_free
    - str_data
    - test_assert_strcmp
    - i_assert
    - strcmp
    - str_begins_with
    - str_array_length
    - o_stream_set_no_error_handling
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void test_sessions_compare(struct connect_limit *limit,\n\t\t\t\t
      \ struct test_session *test_sessions)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/anvil/test-connect-limit.c:368,1
    - Dst: connect_limit_init
      Src: /src/dovecot/src/anvil/test-connect-limit.c:369,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/anvil/test-connect-limit.c:371,1
    - Dst: p_new
      Src: /src/dovecot/src/anvil/test-connect-limit.c:374,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/anvil/test-connect-limit.c:375,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/anvil/test-connect-limit.c:377,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:377,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/anvil/test-connect-limit.c:379,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:379,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/anvil/test-connect-limit.c:381,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/anvil/test-connect-limit.c:382,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/anvil/test-connect-limit.c:385,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:387,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/anvil/test-connect-limit.c:389,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:393,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/anvil/test-connect-limit.c:393,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:396,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/anvil/test-connect-limit.c:398,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/anvil/test-connect-limit.c:400,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:401,1
    - Dst: connect_limit_connect
      Src: /src/dovecot/src/anvil/test-connect-limit.c:404,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:408,1
    - Dst: test_session_disconnect
      Src: /src/dovecot/src/anvil/test-connect-limit.c:409,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:412,1
    - Dst: test_session_disconnect_pid
      Src: /src/dovecot/src/anvil/test-connect-limit.c:413,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:417,1
    - Dst: test_sessions_compare
      Src: /src/dovecot/src/anvil/test-connect-limit.c:418,1
    - Dst: test_sessions_compare
      Src: /src/dovecot/src/anvil/test-connect-limit.c:420,1
    - Dst: connect_limit_deinit
      Src: /src/dovecot/src/anvil/test-connect-limit.c:422,1
    - Dst: pool_unref
      Src: /src/dovecot/src/anvil/test-connect-limit.c:423,1
    - Dst: test_end
      Src: /src/dovecot/src/anvil/test-connect-limit.c:424,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 425
    functionName: test_connect_limit_random
    functionSourceFile: /src/dovecot/src/anvil/test-connect-limit.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - connect_limit_connect
    - p_new
    - test_session_disconnect_pid
    - connect_limit_deinit
    - connect_limit_init
    - test_session_disconnect
    - p_strdup_printf
    - guid_128_generate
    - test_sessions_compare
    - pool_unref
    - test_end
    - DLLIST_PREPEND
    - i_rand_limit
    - i_rand_minmax
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connect_limit_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/anvil/test-connect-limit.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 435
    functionName: main
    functionSourceFile: /src/dovecot/src/anvil/test-connect-limit.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/anvil/test-penalty.c:15,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/anvil/test-penalty.c:17,1
    - Dst: penalty_init
      Src: /src/dovecot/src/anvil/test-penalty.c:18,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:20,1
    - Dst: penalty_get
      Src: /src/dovecot/src/anvil/test-penalty.c:20,1
    - Dst: penalty_inc
      Src: /src/dovecot/src/anvil/test-penalty.c:23,1
    - Dst: I_MIN
      Src: /src/dovecot/src/anvil/test-penalty.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:26,1
    - Dst: penalty_get
      Src: /src/dovecot/src/anvil/test-penalty.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:28,1
    - Dst: penalty_has_checksum
      Src: /src/dovecot/src/anvil/test-penalty.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:30,1
    - Dst: penalty_get
      Src: /src/dovecot/src/anvil/test-penalty.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:32,1
    - Dst: penalty_has_checksum
      Src: /src/dovecot/src/anvil/test-penalty.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:34,1
    - Dst: penalty_get
      Src: /src/dovecot/src/anvil/test-penalty.c:34,1
    - Dst: penalty_inc
      Src: /src/dovecot/src/anvil/test-penalty.c:38,1
    - Dst: penalty_inc
      Src: /src/dovecot/src/anvil/test-penalty.c:39,1
    - Dst: penalty_inc
      Src: /src/dovecot/src/anvil/test-penalty.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:42,1
    - Dst: penalty_get
      Src: /src/dovecot/src/anvil/test-penalty.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:44,1
    - Dst: penalty_has_checksum
      Src: /src/dovecot/src/anvil/test-penalty.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:47,1
    - Dst: penalty_get
      Src: /src/dovecot/src/anvil/test-penalty.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/anvil/test-penalty.c:49,1
    - Dst: penalty_has_checksum
      Src: /src/dovecot/src/anvil/test-penalty.c:49,1
    - Dst: penalty_deinit
      Src: /src/dovecot/src/anvil/test-penalty.c:52,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/anvil/test-penalty.c:53,1
    - Dst: test_end
      Src: /src/dovecot/src/anvil/test-penalty.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 55
    functionName: test_penalty_checksum
    functionSourceFile: /src/dovecot/src/anvil/test-penalty.c
    functionUses: 0
    functionsReached:
    - penalty_init
    - penalty_deinit
    - I_MIN
    - penalty_has_checksum
    - io_loop_destroy
    - io_loop_create
    - test_end
    - penalty_inc
    - test_assert
    - penalty_get
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_penalty_checksum(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/anvil/test-penalty.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: main
    functionSourceFile: /src/dovecot/src/anvil/test-penalty.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: anvil_get_global_counts
      Src: /src/dovecot/src/anvil/main.c:41,1
    - Dst: process_title_set
      Src: /src/dovecot/src/anvil/main.c:60,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/anvil/main.c:60,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/anvil/main.c:66,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 67
    functionName: anvil_refresh_proctitle
    functionSourceFile: /src/dovecot/src/anvil/main.c
    functionUses: 0
    functionsReached:
    - anvil_get_global_counts
    - process_title_set
    - t_strdup_printf
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void anvil_refresh_proctitle(void *context ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/anvil/main.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 78
    functionName: anvil_refresh_proctitle_delayed
    functionSourceFile: /src/dovecot/src/anvil/main.c
    functionUses: 0
    functionsReached:
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void anvil_refresh_proctitle_delayed(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: anvil_connection_find
      Src: /src/dovecot/src/anvil/main.c:84,1
    - Dst: anvil_connection_send_cmd
      Src: /src/dovecot/src/anvil/main.c:86,1
    - Dst: admin_client_pool_send_cmd
      Src: /src/dovecot/src/anvil/main.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - service
    - pid
    - cmd
    - callback
    - context
    argTypes:
    - char*
    - pid_t
    - char*
    - admin_cmd_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: admin_cmd_send
    functionSourceFile: /src/dovecot/src/anvil/main.c
    functionUses: 0
    functionsReached:
    - anvil_connection_send_cmd
    - anvil_connection_find
    - admin_client_pool_send_cmd
    linkageType: ''
    returnType: void
    signature: "void admin_cmd_send(const char *service, pid_t pid, const char *cmd,\n\t\t
      \   admin_cmd_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/anvil/main.c:97,1
    - Dst: anvil_connection_create
      Src: /src/dovecot/src/anvil/main.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/anvil/main.c
    functionUses: 0
    functionsReached:
    - anvil_connection_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fd_read
      Src: /src/dovecot/src/anvil/main.c:109,1
    - Dst: i_error
      Src: /src/dovecot/src/anvil/main.c:111,1
    - Dst: io_remove
      Src: /src/dovecot/src/anvil/main.c:114,1
    - Dst: dup2
      Src: /src/dovecot/src/anvil/main.c:116,1
    - Dst: i_fatal
      Src: /src/dovecot/src/anvil/main.c:117,1
    - Dst: close
      Src: /src/dovecot/src/anvil/main.c:118,1
    - Dst: i_error
      Src: /src/dovecot/src/anvil/main.c:119,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 121
    functionName: log_fdpass_input
    functionSourceFile: /src/dovecot/src/anvil/main.c
    functionUses: 0
    functionsReached:
    - dup2
    - i_error
    - io_remove
    - i_fatal
    - fd_read
    - close
    linkageType: ''
    returnType: void
    signature: void log_fdpass_input(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/anvil/main.c:126,1
    - Dst: master_service_set_die_with_master
      Src: /src/dovecot/src/anvil/main.c:129,1
    - Dst: getenv
      Src: /src/dovecot/src/anvil/main.c:132,1
    - Dst: anvil_connections_init
      Src: /src/dovecot/src/anvil/main.c:133,1
    - Dst: admin_clients_init
      Src: /src/dovecot/src/anvil/main.c:134,1
    - Dst: admin_client_pool_init
      Src: /src/dovecot/src/anvil/main.c:135,1
    - Dst: connect_limit_init
      Src: /src/dovecot/src/anvil/main.c:137,1
    - Dst: penalty_init
      Src: /src/dovecot/src/anvil/main.c:138,1
    - Dst: io_add
      Src: /src/dovecot/src/anvil/main.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 141
    functionName: main_init
    functionSourceFile: /src/dovecot/src/anvil/main.c
    functionUses: 0
    functionsReached:
    - admin_client_pool_init
    - penalty_init
    - io_add
    - connect_limit_init
    - anvil_connections_init
    - getenv
    - master_service_set_die_with_master
    - admin_clients_init
    - master_service_get_service_settings
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/anvil/main.c:145,1
    - Dst: penalty_deinit
      Src: /src/dovecot/src/anvil/main.c:146,1
    - Dst: connect_limit_deinit
      Src: /src/dovecot/src/anvil/main.c:147,1
    - Dst: admin_client_pool_deinit
      Src: /src/dovecot/src/anvil/main.c:148,1
    - Dst: admin_clients_deinit
      Src: /src/dovecot/src/anvil/main.c:149,1
    - Dst: anvil_connections_deinit
      Src: /src/dovecot/src/anvil/main.c:150,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/anvil/main.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 152
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/anvil/main.c
    functionUses: 0
    functionsReached:
    - penalty_deinit
    - connect_limit_deinit
    - io_remove
    - admin_clients_deinit
    - admin_client_pool_deinit
    - anvil_connections_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/anvil/main.c:160,1
    - Dst: master_getopt
      Src: /src/dovecot/src/anvil/main.c:162,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/anvil/main.c:164,1
    - Dst: i_fatal
      Src: /src/dovecot/src/anvil/main.c:165,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/anvil/main.c:166,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/anvil/main.c:168,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/anvil/main.c:169,1
    - Dst: main_init
      Src: /src/dovecot/src/anvil/main.c:171,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/anvil/main.c:172,1
    - Dst: master_service_run
      Src: /src/dovecot/src/anvil/main.c:174,1
    - Dst: main_deinit
      Src: /src/dovecot/src/anvil/main.c:176,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/anvil/main.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 179
    functionName: main
    functionSourceFile: /src/dovecot/src/anvil/main.c
    functionUses: 0
    functionsReached:
    - restrict_access_by_env
    - main_init
    - master_service_run
    - i_fatal
    - main_deinit
    - master_service_init_finish
    - restrict_access_allow_coredumps
    - master_getopt
    - master_service_init
    - master_service_deinit
    - master_service_init_log
    - master_service_settings_read_simple
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - session
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: SESSION_TRACK_USERIP
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SESSION_TRACK_USERIP(session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_hash
      Src: /src/dovecot/src/anvil/connect-limit.c:104,1
    - Dst: str_hash
      Src: /src/dovecot/src/anvil/connect-limit.c:104,1
    - Dst: net_ip_hash
      Src: /src/dovecot/src/anvil/connect-limit.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - userip
    argTypes:
    - struct userip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: userip_hash
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - net_ip_hash
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int userip_hash(const struct userip *userip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/connect-limit.c:111,1
    - Dst: net_ip_cmp
      Src: /src/dovecot/src/anvil/connect-limit.c:114,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/connect-limit.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - userip1
    - userip2
    argTypes:
    - struct userip*
    - struct userip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: userip_cmp
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - strcmp
    - net_ip_cmp
    linkageType: ''
    returnType: int
    signature: "int userip_cmp(const struct userip *userip1,\n\t\t      const struct
      userip *userip2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/anvil/connect-limit.c:124,1
    - Dst: str_table_init
      Src: /src/dovecot/src/anvil/connect-limit.c:125,1
    - Dst: i_array_init
      Src: /src/dovecot/src/anvil/connect-limit.c:126,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/anvil/connect-limit.c:127,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/anvil/connect-limit.c:129,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/anvil/connect-limit.c:131,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/anvil/connect-limit.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 135
    functionName: connect_limit_init
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 3
    functionsReached:
    - i_array_init
    - hash_table_create
    - str_table_init
    - hash_table_create_direct
    - i_new
    linkageType: ''
    returnType: struct connect_limit
    signature: struct connect_limit *connect_limit_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/anvil/connect-limit.c:143,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/anvil/connect-limit.c:144,1
    - Dst: connect_limit_process_free
      Src: /src/dovecot/src/anvil/connect-limit.c:146,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/anvil/connect-limit.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - limit
    argTypes:
    - struct connect_limit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 148
    functionName: connect_limit_destroy_all_processes
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate_init
    - hash_table_iterate
    - connect_limit_process_free
    linkageType: ''
    returnType: void
    signature: void connect_limit_destroy_all_processes(struct connect_limit *limit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connect_limit_destroy_all_processes
      Src: /src/dovecot/src/anvil/connect-limit.c:158,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/connect-limit.c:160,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/anvil/connect-limit.c:160,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/connect-limit.c:161,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/anvil/connect-limit.c:161,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/connect-limit.c:162,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/anvil/connect-limit.c:162,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/connect-limit.c:163,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/anvil/connect-limit.c:163,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/anvil/connect-limit.c:165,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/anvil/connect-limit.c:166,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/anvil/connect-limit.c:167,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/anvil/connect-limit.c:168,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/anvil/connect-limit.c:170,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/anvil/connect-limit.c:172,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:173,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:175,1
    - Dst: array_free
      Src: /src/dovecot/src/anvil/connect-limit.c:176,1
    - Dst: str_table_deinit
      Src: /src/dovecot/src/anvil/connect-limit.c:177,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - _limit
    argTypes:
    - struct connect_limit**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 179
    functionName: connect_limit_deinit
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 3
    functionsReached:
    - i_free
    - array_get_modifiable
    - str_table_deinit
    - array_free
    - hash_table_count
    - i_assert
    - connect_limit_destroy_all_processes
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void connect_limit_deinit(struct connect_limit **_limit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strcut
      Src: /src/dovecot/src/anvil/connect-limit.c:186,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:191,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/anvil/connect-limit.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - limit
    - key
    argTypes:
    - struct connect_limit*
    - struct connect_limit_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 193
    functionName: connect_limit_lookup
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 1
    functionsReached:
    - POINTER_CAST_TO
    - hash_table_lookup
    - t_strcut
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int connect_limit_lookup(struct connect_limit *limit,\n\t\t\t\t
      \ const struct connect_limit_key *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:197,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/anvil/connect-limit.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - limit
    - pid
    argTypes:
    - struct connect_limit*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: process_lookup
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - POINTER_CAST
    linkageType: ''
    returnType: struct process
    signature: struct process *process_lookup(struct connect_limit *limit, pid_t pid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: process_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:206,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/connect-limit.c:208,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/anvil/connect-limit.c:210,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/anvil/connect-limit.c:211,1
    - Dst: DLLIST_PREPEND_FULL
      Src: /src/dovecot/src/anvil/connect-limit.c:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - limit
    - session
    - pid
    - kick_type
    argTypes:
    - struct connect_limit*
    - struct session*
    - pid_t
    - enum kick_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 220
    functionName: session_link_process
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - process_lookup
    - DLLIST_PREPEND_FULL
    - i_new
    - hash_table_insert
    linkageType: ''
    returnType: void
    signature: "void session_link_process(struct connect_limit *limit, struct session
      *session,\n\t\t     pid_t pid, enum kick_type kick_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/anvil/connect-limit.c:228,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/connect-limit.c:231,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/anvil/connect-limit.c:232,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - limit
    - session
    argTypes:
    - struct connect_limit*
    - struct session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 235
    functionName: session_unlink_process
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - DLLIST_REMOVE_FULL
    - POINTER_CAST
    - hash_table_remove
    - i_free
    linkageType: ''
    returnType: void
    signature: void session_unlink_process(struct connect_limit *limit, struct session
      *session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/anvil/connect-limit.c:244,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/connect-limit.c:246,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - limit
    - name
    - idx_r
    argTypes:
    - struct connect_limit*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 255
    functionName: alt_username_field_find
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool alt_username_field_find(struct connect_limit *limit, const char
      *name,\n\t\t\tunsigned int *idx_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: alt_username_field_find
      Src: /src/dovecot/src/anvil/connect-limit.c:263,1
    - Dst: array_count
      Src: /src/dovecot/src/anvil/connect-limit.c:267,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/anvil/connect-limit.c:270,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:271,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/connect-limit.c:272,1
    - Dst: i_realloc
      Src: /src/dovecot/src/anvil/connect-limit.c:275,1
    - Dst: I_MAX
      Src: /src/dovecot/src/anvil/connect-limit.c:279,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/anvil/connect-limit.c:280,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/anvil/connect-limit.c:281,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/connect-limit.c:284,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/anvil/connect-limit.c:284,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/anvil/connect-limit.c:287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - limit
    - name
    argTypes:
    - struct connect_limit*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 291
    functionName: alt_username_field_ref
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - alt_username_field_find
    - hash_table_create
    - array_idx_modifiable
    - I_MAX
    - i_strdup
    - array_count
    - hash_table_is_created
    - array_idx_get_space
    - hash_table_count
    - i_assert
    - i_free
    - i_realloc
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int alt_username_field_ref(struct connect_limit *limit, const
      char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/anvil/connect-limit.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/connect-limit.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - limit
    - alt_idx
    argTypes:
    - struct connect_limit*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 301
    functionName: alt_username_field_unref
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: void alt_username_field_unref(struct connect_limit *limit, unsigned
      int alt_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/anvil/connect-limit.c:311,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/connect-limit.c:313,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/anvil/connect-limit.c:315,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/anvil/connect-limit.c:319,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/anvil/connect-limit.c:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - limit
    - alt
    - alt_idx
    - alt_username
    argTypes:
    - struct connect_limit*
    - struct session_alt_username*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 323
    functionName: alt_username_value_link
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - hash_table_update
    - i_strdup
    - DLLIST_PREPEND
    - hash_table_lookup_full
    - hash_table_insert
    linkageType: ''
    returnType: void
    signature: "void alt_username_value_link(struct connect_limit *limit,\n\t\t\tstruct
      session_alt_username *alt,\n\t\t\tunsigned int alt_idx, const char *alt_username)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/anvil/connect-limit.c:329,1
    - Dst: t_new
      Src: /src/dovecot/src/anvil/connect-limit.c:334,1
    - Dst: alt_username_field_ref
      Src: /src/dovecot/src/anvil/connect-limit.c:336,1
    - Dst: I_MAX
      Src: /src/dovecot/src/anvil/connect-limit.c:337,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/connect-limit.c:342,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/connect-limit.c:346,1
    - Dst: alt_username_value_link
      Src: /src/dovecot/src/anvil/connect-limit.c:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - limit
    - session
    - alt_usernames
    argTypes:
    - struct connect_limit*
    - struct session*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 351
    functionName: session_set_alt_usernames
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - t_new
    - alt_username_field_ref
    - str_array_length
    - I_MAX
    - i_new
    - alt_username_value_link
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void session_set_alt_usernames(struct connect_limit *limit, struct
      session *session,\n\t\t\t  const char *const *alt_usernames)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/anvil/connect-limit.c:366,1
    - Dst: i_panic
      Src: /src/dovecot/src/anvil/connect-limit.c:369,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/anvil/connect-limit.c:371,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/connect-limit.c:373,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:375,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/anvil/connect-limit.c:377,1
    - Dst: alt_username_field_unref
      Src: /src/dovecot/src/anvil/connect-limit.c:380,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:382,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - limit
    - session
    argTypes:
    - struct connect_limit*
    - struct session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 383
    functionName: session_unset_alt_usernames
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - i_panic
    - hash_table_update
    - hash_table_remove
    - hash_table_lookup_full
    - DLLIST_REMOVE
    - i_free
    - alt_username_field_unref
    linkageType: ''
    returnType: void
    signature: "void session_unset_alt_usernames(struct connect_limit *limit,\n\t\t\t
      \   struct session *session)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:397,1
    - Dst: i_error
      Src: /src/dovecot/src/anvil/connect-limit.c:399,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/anvil/connect-limit.c:402,1
    - Dst: dec2str
      Src: /src/dovecot/src/anvil/connect-limit.c:403,1
    - Dst: dec2str
      Src: /src/dovecot/src/anvil/connect-limit.c:403,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/anvil/connect-limit.c:406,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/anvil/connect-limit.c:406,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/anvil/connect-limit.c:407,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/anvil/connect-limit.c:407,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/anvil/connect-limit.c:411,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/connect-limit.c:413,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/connect-limit.c:417,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/anvil/connect-limit.c:418,1
    - Dst: str_table_ref
      Src: /src/dovecot/src/anvil/connect-limit.c:419,1
    - Dst: session_set_alt_usernames
      Src: /src/dovecot/src/anvil/connect-limit.c:423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 7
    argNames:
    - limit
    - pid
    - key
    - conn_guid
    - kick_type
    - dest_ip
    - alt_usernames
    argTypes:
    - struct connect_limit*
    - pid_t
    - struct connect_limit_key*
    - guid_128_t
    - enum kick_type
    - struct ip_addr*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 385
    functionDepth: 4
    functionLinenumber: 385
    functionLinenumberEnd: 424
    functionName: connect_limit_connect
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 2
    functionsReached:
    - dec2str
    - i_error
    - guid_128_to_string
    - str_table_ref
    - guid_128_copy
    - i_strdup
    - session_set_alt_usernames
    - net_ip2addr
    - hash_table_lookup_full
    - i_new
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void connect_limit_connect(struct connect_limit *limit, pid_t pid,\n\t\t\t
      \  const struct connect_limit_key *key,\n\t\t\t   const guid_128_t conn_guid,\n\t\t\t
      \  enum kick_type kick_type,\n\t\t\t   const struct ip_addr *dest_ip,\n\t\t\t
      \  const char *const *alt_usernames)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_table_unref
      Src: /src/dovecot/src/anvil/connect-limit.c:459,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - limit
    - userip
    argTypes:
    - struct connect_limit*
    - struct userip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 461
    functionName: userip_free
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - str_table_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void userip_free(struct connect_limit *limit, struct userip *userip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/anvil/connect-limit.c:470,1
    - Dst: i_panic
      Src: /src/dovecot/src/anvil/connect-limit.c:472,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/anvil/connect-limit.c:474,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/anvil/connect-limit.c:476,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/anvil/connect-limit.c:477,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/connect-limit.c:479,1
    - Dst: userip_free
      Src: /src/dovecot/src/anvil/connect-limit.c:480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - limit
    - session
    argTypes:
    - struct connect_limit*
    - struct session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 482
    functionName: userip_hash_unref
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - i_panic
    - hash_table_update
    - POINTER_CAST
    - hash_table_remove
    - userip_free
    - hash_table_lookup_full
    - POINTER_CAST_TO
    linkageType: ''
    returnType: void
    signature: void userip_hash_unref(struct connect_limit *limit, struct session
      *session)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SESSION_TRACK_USERIP
      Src: /src/dovecot/src/anvil/connect-limit.c:491,1
    - Dst: userip_hash_unref
      Src: /src/dovecot/src/anvil/connect-limit.c:492,1
    - Dst: userip_free
      Src: /src/dovecot/src/anvil/connect-limit.c:494,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/anvil/connect-limit.c:496,1
    - Dst: i_panic
      Src: /src/dovecot/src/anvil/connect-limit.c:498,1
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/anvil/connect-limit.c:501,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/connect-limit.c:503,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:504,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/anvil/connect-limit.c:506,1
    - Dst: session_unset_alt_usernames
      Src: /src/dovecot/src/anvil/connect-limit.c:509,1
    - Dst: str_table_unref
      Src: /src/dovecot/src/anvil/connect-limit.c:510,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:511,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:512,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - limit
    - session
    argTypes:
    - struct connect_limit*
    - struct session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 484
    functionDepth: 3
    functionLinenumber: 484
    functionLinenumberEnd: 513
    functionName: session_free
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - i_panic
    - hash_table_update
    - session_unset_alt_usernames
    - hash_table_remove
    - DLLIST_REMOVE_FULL
    - userip_free
    - hash_table_lookup_full
    - userip_hash_unref
    - str_table_unref
    - i_free
    - SESSION_TRACK_USERIP
    linkageType: ''
    returnType: void
    signature: void session_free(struct connect_limit *limit, struct session *session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:521,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/anvil/connect-limit.c:525,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/connect-limit.c:526,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/connect-limit.c:527,1
    - Dst: i_error
      Src: /src/dovecot/src/anvil/connect-limit.c:528,1
    - Dst: dec2str
      Src: /src/dovecot/src/anvil/connect-limit.c:530,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/anvil/connect-limit.c:531,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/anvil/connect-limit.c:531,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/connect-limit.c:534,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:534,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/anvil/connect-limit.c:534,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/connect-limit.c:537,1
    - Dst: session_unlink_process
      Src: /src/dovecot/src/anvil/connect-limit.c:538,1
    - Dst: session_free
      Src: /src/dovecot/src/anvil/connect-limit.c:539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 4
    argNames:
    - limit
    - pid
    - key
    - conn_guid
    argTypes:
    - struct connect_limit*
    - pid_t
    - struct connect_limit_key*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 515
    functionDepth: 4
    functionLinenumber: 515
    functionLinenumberEnd: 540
    functionName: connect_limit_disconnect
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 2
    functionsReached:
    - strcmp
    - dec2str
    - i_assert
    - POINTER_CAST
    - i_error
    - guid_128_to_string
    - hash_table_remove
    - session_unlink_process
    - net_ip2addr
    - session_free
    - hash_table_lookup
    - net_ip_compare
    linkageType: ''
    returnType: void
    signature: "void connect_limit_disconnect(struct connect_limit *limit, pid_t pid,\n\t\t\t
      \     const struct connect_limit_key *key,\n\t\t\t      const guid_128_t conn_guid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/anvil/connect-limit.c:549,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/connect-limit.c:553,1
    - Dst: session_free
      Src: /src/dovecot/src/anvil/connect-limit.c:554,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/connect-limit.c:556,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/anvil/connect-limit.c:556,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/connect-limit.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - limit
    - process
    argTypes:
    - struct connect_limit*
    - struct process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 542
    functionDepth: 4
    functionLinenumber: 542
    functionLinenumberEnd: 558
    functionName: connect_limit_process_free
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 1
    functionsReached:
    - POINTER_CAST
    - hash_table_remove
    - DLLIST_REMOVE_FULL
    - session_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void connect_limit_process_free(struct connect_limit *limit, struct
      process *process)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: process_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:564,1
    - Dst: connect_limit_process_free
      Src: /src/dovecot/src/anvil/connect-limit.c:566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - limit
    - pid
    argTypes:
    - struct connect_limit*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 560
    functionDepth: 5
    functionLinenumber: 560
    functionLinenumberEnd: 567
    functionName: connect_limit_disconnect_pid
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 2
    functionsReached:
    - process_lookup
    - connect_limit_process_free
    linkageType: ''
    returnType: void
    signature: void connect_limit_disconnect_pid(struct connect_limit *limit, pid_t
      pid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/anvil/connect-limit.c:576,1
    - Dst: array_foreach
      Src: /src/dovecot/src/anvil/connect-limit.c:580,1
    - Dst: str_len
      Src: /src/dovecot/src/anvil/connect-limit.c:581,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/connect-limit.c:582,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/anvil/connect-limit.c:583,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/connect-limit.c:585,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/anvil/connect-limit.c:586,1
    - Dst: str_data
      Src: /src/dovecot/src/anvil/connect-limit.c:586,1
    - Dst: str_len
      Src: /src/dovecot/src/anvil/connect-limit.c:586,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/anvil/connect-limit.c:589,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/anvil/connect-limit.c:591,1
    - Dst: str_truncate
      Src: /src/dovecot/src/anvil/connect-limit.c:593,1
    - Dst: str_printfa
      Src: /src/dovecot/src/anvil/connect-limit.c:594,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/anvil/connect-limit.c:595,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/connect-limit.c:596,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/anvil/connect-limit.c:597,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/connect-limit.c:598,1
    - Dst: str_append
      Src: /src/dovecot/src/anvil/connect-limit.c:600,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/anvil/connect-limit.c:600,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/connect-limit.c:601,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/anvil/connect-limit.c:602,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/anvil/connect-limit.c:602,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/connect-limit.c:603,1
    - Dst: str_append
      Src: /src/dovecot/src/anvil/connect-limit.c:605,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/anvil/connect-limit.c:605,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/connect-limit.c:607,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/anvil/connect-limit.c:609,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/connect-limit.c:613,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/anvil/connect-limit.c:614,1
    - Dst: str_data
      Src: /src/dovecot/src/anvil/connect-limit.c:614,1
    - Dst: str_len
      Src: /src/dovecot/src/anvil/connect-limit.c:614,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - limit
    - output
    argTypes:
    - struct connect_limit*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 615
    functionName: connect_limit_dump
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 2
    functionsReached:
    - str_printfa
    - str_append_c
    - hash_table_iterate
    - str_data
    - str_len
    - hash_table_iterate_init
    - guid_128_to_string
    - array_foreach
    - str_append_tabescaped
    - o_stream_nsend
    - net_ip2addr
    - str_truncate
    - o_stream_send
    - str_append
    - str_new
    linkageType: ''
    returnType: void
    signature: void connect_limit_dump(struct connect_limit *limit, struct ostream
      *output)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/anvil/connect-limit.c:629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - result1
    - result2
    argTypes:
    - struct connect_limit_iter_result*
    - struct connect_limit_iter_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 630
    functionName: connect_limit_iter_result_cmp
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - guid_128_cmp
    linkageType: ''
    returnType: int
    signature: "int connect_limit_iter_result_cmp(const struct connect_limit_iter_result
      *result1,\n\t\t\t      const struct connect_limit_iter_result *result2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/anvil/connect-limit.c:637,1
    - Dst: p_new
      Src: /src/dovecot/src/anvil/connect-limit.c:638,1
    - Dst: i_array_init
      Src: /src/dovecot/src/anvil/connect-limit.c:641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - limit
    argTypes:
    - struct connect_limit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 632
    functionDepth: 1
    functionLinenumber: 632
    functionLinenumberEnd: 643
    functionName: connect_limit_iter_init_common
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct connect_limit_iter
    signature: 'struct connect_limit_iter *

      connect_limit_iter_init_common(struct connect_limit *limit)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/anvil/connect-limit.c:652,1
    - Dst: connect_limit_iter_init_common
      Src: /src/dovecot/src/anvil/connect-limit.c:654,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:655,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/anvil/connect-limit.c:658,1
    - Dst: array_append_space
      Src: /src/dovecot/src/anvil/connect-limit.c:660,1
    - Dst: str_table_ref
      Src: /src/dovecot/src/anvil/connect-limit.c:663,1
    - Dst: p_strdup
      Src: /src/dovecot/src/anvil/connect-limit.c:665,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/anvil/connect-limit.c:667,1
    - Dst: array_sort
      Src: /src/dovecot/src/anvil/connect-limit.c:671,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - limit
    - username
    - conn_guid
    argTypes:
    - struct connect_limit*
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 673
    functionName: connect_limit_iter_begin
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - guid_128_cmp
    - array_append_space
    - str_table_ref
    - guid_128_copy
    - connect_limit_iter_init_common
    - array_sort
    - hash_table_lookup
    - guid_128_is_empty
    linkageType: ''
    returnType: struct connect_limit_iter
    signature: "struct connect_limit_iter *\nconnect_limit_iter_begin(struct connect_limit
      *limit, const char *username,\n\t\t\t const guid_128_t conn_guid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connect_limit_iter_init_common
      Src: /src/dovecot/src/anvil/connect-limit.c:685,1
    - Dst: alt_username_field_find
      Src: /src/dovecot/src/anvil/connect-limit.c:686,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/connect-limit.c:689,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/anvil/connect-limit.c:693,1
    - Dst: array_append_space
      Src: /src/dovecot/src/anvil/connect-limit.c:695,1
    - Dst: str_table_ref
      Src: /src/dovecot/src/anvil/connect-limit.c:698,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/anvil/connect-limit.c:700,1
    - Dst: p_strdup
      Src: /src/dovecot/src/anvil/connect-limit.c:701,1
    - Dst: array_sort
      Src: /src/dovecot/src/anvil/connect-limit.c:705,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - limit
    - alt_username_field
    - alt_username
    - except_ip
    argTypes:
    - struct connect_limit*
    - char*
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 675
    functionDepth: 2
    functionLinenumber: 675
    functionLinenumberEnd: 707
    functionName: connect_limit_iter_begin_alt_username
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - alt_username_field_find
    - array_append_space
    - str_table_ref
    - guid_128_copy
    - connect_limit_iter_init_common
    - array_sort
    - hash_table_lookup
    - net_ip_compare
    linkageType: ''
    returnType: struct connect_limit_iter
    signature: "struct connect_limit_iter *\nconnect_limit_iter_begin_alt_username(struct
      connect_limit *limit,\n\t\t\t\t      const char *alt_username_field,\n\t\t\t\t
      \     const char *alt_username,\n\t\t\t\t      const struct ip_addr *except_ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/anvil/connect-limit.c:715,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - iter
    - result_r
    argTypes:
    - struct connect_limit_iter*
    - struct connect_limit_iter_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 720
    functionName: connect_limit_iter_next
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 1
    functionsReached:
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool connect_limit_iter_next(struct connect_limit_iter *iter,\n\t\t\t
      \    struct connect_limit_iter_result *result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/anvil/connect-limit.c:728,1
    - Dst: str_table_unref
      Src: /src/dovecot/src/anvil/connect-limit.c:729,1
    - Dst: array_free
      Src: /src/dovecot/src/anvil/connect-limit.c:730,1
    - Dst: pool_unref
      Src: /src/dovecot/src/anvil/connect-limit.c:731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct connect_limit_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 722
    functionDepth: 1
    functionLinenumber: 722
    functionLinenumberEnd: 732
    functionName: connect_limit_iter_deinit
    functionSourceFile: /src/dovecot/src/anvil/connect-limit.c
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - str_table_unref
    - array_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void connect_limit_iter_deinit(struct connect_limit_iter **_iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/anvil-connection.c:100,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct anvil_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 103
    functionName: anvil_connection_unref
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void anvil_connection_unref(struct anvil_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_hash
      Src: /src/dovecot/src/anvil/anvil-connection.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct anvil_connection_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: anvil_connection_key_hash
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int anvil_connection_key_hash(const struct anvil_connection_key
      *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - struct anvil_connection_key*
    - struct anvil_connection_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 117
    functionName: anvil_connection_key_cmp
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int anvil_connection_key_cmp(const struct anvil_connection_key *key1,\n\t\t\t\t
      \   const struct anvil_connection_key *key2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/anvil/anvil-connection.c:126,1
    - Dst: i_zero
      Src: /src/dovecot/src/anvil/anvil-connection.c:129,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/anvil-connection.c:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - _args
    - key_r
    argTypes:
    - char***
    - struct connect_limit_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 137
    functionName: connect_limit_key_parse
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_array_length
    - net_addr2ip
    linkageType: ''
    returnType: bool
    signature: "bool connect_limit_key_parse(const char *const **_args,\n\t\t\tstruct
      connect_limit_key *key_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - str
    - kick_type_r
    argTypes:
    - char*
    - enum kick_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 158
    functionName: str_to_kick_type
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int str_to_kick_type(const char *str, enum kick_type *kick_type_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/anvil/anvil-connection.c:166,1
    - Dst: struct anvil_connection_command*::callback
      Src: /src/dovecot/src/anvil/anvil-connection.c:167,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:168,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/anvil/anvil-connection.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - conn
    - reply
    - error
    argTypes:
    - struct anvil_connection*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 170
    functionName: anvil_connection_cmd_reply
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - array_pop_front
    - struct anvil_connection_command*::callback
    - i_free
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: "void anvil_connection_cmd_reply(struct anvil_connection *conn,\n\t\t\t
      \  const char *reply, const char *error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_read_stream
      Src: /src/dovecot/src/anvil/anvil-connection.c:176,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/anvil/anvil-connection.c:179,1
    - Dst: array_count
      Src: /src/dovecot/src/anvil/anvil-connection.c:180,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:181,1
    - Dst: anvil_connection_cmd_reply
      Src: /src/dovecot/src/anvil/anvil-connection.c:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct anvil_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 188
    functionName: anvil_cmd_input
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_read_stream
    - i_stream_next_line
    - e_error
    - array_count
    - anvil_connection_cmd_reply
    linkageType: ''
    returnType: void
    signature: void anvil_cmd_input(struct anvil_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/anvil-connection.c:192,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/anvil-connection.c:193,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/anvil/anvil-connection.c:196,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/anvil/anvil-connection.c:197,1
    - Dst: anvil_connection_unref
      Src: /src/dovecot/src/anvil/anvil-connection.c:199,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/anvil/anvil-connection.c:200,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - kick
    argTypes:
    - struct anvil_cmd_kick*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 202
    functionName: kick_user_finished
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - anvil_connection_unref
    - i_free
    - t_strdup_printf
    - o_stream_nsend_str
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void kick_user_finished(struct anvil_cmd_kick *kick)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/anvil/anvil-connection.c:208,1
    - Dst: kick_user_iter_more
      Src: /src/dovecot/src/anvil/anvil-connection.c:211,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 214
    functionName: kick_more
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - kick_user_iter_more
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void kick_more(void *context ATTR_UNUSED)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/anvil-connection.c:223,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/anvil-connection.c:224,1
    - Dst: anvil_refresh_proctitle_delayed
      Src: /src/dovecot/src/anvil/anvil-connection.c:227,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/anvil/anvil-connection.c:230,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:233,1
    - Dst: admin_client_unref
      Src: /src/dovecot/src/anvil/anvil-connection.c:241,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/anvil/anvil-connection.c:245,1
    - Dst: kick_user_finished
      Src: /src/dovecot/src/anvil/anvil-connection.c:247,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:249,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:250,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:251,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - reply
    - error
    - target
    argTypes:
    - char*
    - char*
    - struct anvil_cmd_kick_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 216
    functionDepth: 3
    functionLinenumber: 216
    functionLinenumberEnd: 252
    functionName: kick_user_callback
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - admin_client_unref
    - timeout_add_short
    - anvil_refresh_proctitle_delayed
    - e_error
    - kick_user_finished
    - str_to_uint
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void kick_user_callback(const char *reply, const char *error,\n\t\t
      \  struct anvil_cmd_kick_target *target)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: admin_client_init
      Src: /src/dovecot/src/anvil/anvil-connection.c:262,1
    - Dst: admin_client_send_cmd
      Src: /src/dovecot/src/anvil/anvil-connection.c:263,1
    - Dst: kill
      Src: /src/dovecot/src/anvil/anvil-connection.c:264,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - target
    - cmd
    argTypes:
    - struct anvil_cmd_kick_target*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 270
    functionName: kick_user_with_signal
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - admin_client_send_cmd
    - admin_client_init
    - kill
    linkageType: ''
    returnType: void
    signature: void kick_user_with_signal(struct anvil_cmd_kick_target *target, const
      char *cmd)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/anvil/anvil-connection.c:275,1
    - Dst: connect_limit_iter_next
      Src: /src/dovecot/src/anvil/anvil-connection.c:282,1
    - Dst: kill
      Src: /src/dovecot/src/anvil/anvil-connection.c:296,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:299,1
    - Dst: str_truncate
      Src: /src/dovecot/src/anvil/anvil-connection.c:306,1
    - Dst: str_append
      Src: /src/dovecot/src/anvil/anvil-connection.c:308,1
    - Dst: str_append
      Src: /src/dovecot/src/anvil/anvil-connection.c:310,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/anvil/anvil-connection.c:311,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/anvil/anvil-connection.c:312,1
    - Dst: str_append_c
      Src: /src/dovecot/src/anvil/anvil-connection.c:314,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/anvil/anvil-connection.c:315,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/anvil/anvil-connection.c:316,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/anvil-connection.c:320,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/anvil-connection.c:322,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/anvil-connection.c:323,1
    - Dst: kick_user_with_signal
      Src: /src/dovecot/src/anvil/anvil-connection.c:330,1
    - Dst: str_c
      Src: /src/dovecot/src/anvil/anvil-connection.c:330,1
    - Dst: admin_cmd_send
      Src: /src/dovecot/src/anvil/anvil-connection.c:332,1
    - Dst: str_c
      Src: /src/dovecot/src/anvil/anvil-connection.c:333,1
    - Dst: connect_limit_iter_deinit
      Src: /src/dovecot/src/anvil/anvil-connection.c:340,1
    - Dst: kick_user_finished
      Src: /src/dovecot/src/anvil/anvil-connection.c:342,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 1
    argNames:
    - kick
    argTypes:
    - struct anvil_cmd_kick*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 344
    functionName: kick_user_iter_more
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - admin_cmd_send
    - str_append_c
    - connect_limit_iter_next
    - guid_128_to_string
    - connect_limit_iter_deinit
    - e_error
    - i_strdup
    - str_append_tabescaped
    - kill
    - kick_user_with_signal
    - str_truncate
    - i_new
    - kick_user_finished
    - str_append
    - guid_128_is_empty
    linkageType: ''
    returnType: bool
    signature: bool kick_user_iter_more(struct anvil_cmd_kick *kick)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/anvil/anvil-connection.c:352,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/anvil/anvil-connection.c:358,1
    - Dst: kick_user_iter_more
      Src: /src/dovecot/src/anvil/anvil-connection.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - iter
    - add_conn_guid
    argTypes:
    - struct anvil_connection*
    - struct connect_limit_iter*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 346
    functionDepth: 4
    functionLinenumber: 346
    functionLinenumberEnd: 361
    functionName: kick_user_iter
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - kick_user_iter_more
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: void
    signature: "void kick_user_iter(struct anvil_connection *conn, struct connect_limit_iter
      *iter,\n\t       bool add_conn_guid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connect_limit_iter_begin
      Src: /src/dovecot/src/anvil/anvil-connection.c:368,1
    - Dst: kick_user_iter
      Src: /src/dovecot/src/anvil/anvil-connection.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - conn
    - username
    - conn_guid
    argTypes:
    - struct anvil_connection*
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 363
    functionDepth: 5
    functionLinenumber: 363
    functionLinenumberEnd: 370
    functionName: kick_user
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - connect_limit_iter_begin
    - kick_user_iter
    linkageType: ''
    returnType: void
    signature: "void kick_user(struct anvil_connection *conn, const char *username,\n\t\t
      \     const guid_128_t conn_guid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connect_limit_iter_begin_alt_username
      Src: /src/dovecot/src/anvil/anvil-connection.c:379,1
    - Dst: kick_user_iter
      Src: /src/dovecot/src/anvil/anvil-connection.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - conn
    - alt_username_field
    - alt_username
    - except_ip
    argTypes:
    - struct anvil_connection*
    - char*
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 372
    functionDepth: 5
    functionLinenumber: 372
    functionLinenumberEnd: 382
    functionName: kick_alt_user
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - connect_limit_iter_begin_alt_username
    - kick_user_iter
    linkageType: ''
    returnType: void
    signature: "void kick_alt_user(struct anvil_connection *conn,\n\t      const char
      *alt_username_field, const char *alt_username,\n\t      const struct ip_addr
      *except_ip)"
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: anvil_refresh_proctitle_delayed
      Src: /src/dovecot/src/anvil/anvil-connection.c:396,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:399,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/anvil/anvil-connection.c:404,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/anvil/anvil-connection.c:409,1
    - Dst: connect_limit_key_parse
      Src: /src/dovecot/src/anvil/anvil-connection.c:414,1
    - Dst: str_to_kick_type
      Src: /src/dovecot/src/anvil/anvil-connection.c:421,1
    - Dst: i_zero
      Src: /src/dovecot/src/anvil/anvil-connection.c:428,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/anvil-connection.c:431,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/anvil/anvil-connection.c:439,1
    - Dst: connect_limit_connect
      Src: /src/dovecot/src/anvil/anvil-connection.c:442,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:445,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/anvil/anvil-connection.c:450,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/anvil/anvil-connection.c:455,1
    - Dst: connect_limit_key_parse
      Src: /src/dovecot/src/anvil/anvil-connection.c:460,1
    - Dst: connect_limit_disconnect
      Src: /src/dovecot/src/anvil/anvil-connection.c:464,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:465,1
    - Dst: connect_limit_dump
      Src: /src/dovecot/src/anvil/anvil-connection.c:467,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:468,1
    - Dst: guid_128_empty
      Src: /src/dovecot/src/anvil/anvil-connection.c:475,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/anvil/anvil-connection.c:476,1
    - Dst: kick_user
      Src: /src/dovecot/src/anvil/anvil-connection.c:480,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:481,1
    - Dst: i_zero
      Src: /src/dovecot/src/anvil/anvil-connection.c:488,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/anvil/anvil-connection.c:489,1
    - Dst: kick_alt_user
      Src: /src/dovecot/src/anvil/anvil-connection.c:493,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:495,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/anvil/anvil-connection.c:504,1
    - Dst: connect_limit_disconnect_pid
      Src: /src/dovecot/src/anvil/anvil-connection.c:508,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:509,1
    - Dst: connect_limit_key_parse
      Src: /src/dovecot/src/anvil/anvil-connection.c:514,1
    - Dst: connect_limit_lookup
      Src: /src/dovecot/src/anvil/anvil-connection.c:522,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/anvil/anvil-connection.c:523,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/anvil/anvil-connection.c:524,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:525,1
    - Dst: penalty_get
      Src: /src/dovecot/src/anvil/anvil-connection.c:530,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/anvil/anvil-connection.c:531,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/anvil/anvil-connection.c:532,1
    - Dst: dec2str
      Src: /src/dovecot/src/anvil/anvil-connection.c:532,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:533,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/anvil/anvil-connection.c:538,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/anvil/anvil-connection.c:539,1
    - Dst: penalty_inc
      Src: /src/dovecot/src/anvil/anvil-connection.c:545,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:546,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/anvil/anvil-connection.c:547,1
    - Dst: penalty_set_expire_secs
      Src: /src/dovecot/src/anvil/anvil-connection.c:552,1
    - Dst: strcmp
      Src: /src/dovecot/src/anvil/anvil-connection.c:553,1
    - Dst: penalty_dump
      Src: /src/dovecot/src/anvil/anvil-connection.c:554,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/anvil/anvil-connection.c:556,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 159
    argCount: 3
    argNames:
    - conn
    - args
    - error_r
    argTypes:
    - struct anvil_connection*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 384
    functionDepth: 6
    functionLinenumber: 384
    functionLinenumberEnd: 560
    functionName: anvil_connection_request
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - connect_limit_lookup
    - t_strdup_printf
    - guid_128_from_string
    - str_to_kick_type
    - str_to_uint
    - connect_limit_connect
    - net_addr2ip
    - penalty_set_expire_secs
    - str_to_pid
    - t_strsplit_tabescaped
    - connect_limit_dump
    - anvil_refresh_proctitle_delayed
    - penalty_dump
    - i_zero
    - connect_limit_disconnect
    - guid_128_empty
    - penalty_inc
    - o_stream_nsend_str
    - strcmp
    - dec2str
    - connect_limit_key_parse
    - kick_user
    - connect_limit_disconnect_pid
    - kick_alt_user
    - penalty_get
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int anvil_connection_request(struct anvil_connection *conn,\n\t\t\t
      const char *const *args, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/anvil-connection.c:577,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/anvil/anvil-connection.c:578,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:579,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:584,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/anvil/anvil-connection.c:593,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/anvil/anvil-connection.c:594,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/anvil/anvil-connection.c:597,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/anvil/anvil-connection.c:599,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/anvil/anvil-connection.c:600,1
    - Dst: connection_streams_changed
      Src: /src/dovecot/src/anvil/anvil-connection.c:602,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/anvil/anvil-connection.c:605,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/anvil/anvil-connection.c:607,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/anvil/anvil-connection.c:608,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/anvil/anvil-connection.c:616,1
    - Dst: e_warning
      Src: /src/dovecot/src/anvil/anvil-connection.c:618,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/anvil-connection.c:622,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/anvil-connection.c:623,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/anvil-connection.c:626,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/anvil/anvil-connection.c:629,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct anvil_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 632
    functionName: anvil_connection_handshake
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - str_to_pid
    - io_add_istream
    - o_stream_unref
    - o_stream_create_multiplex
    - o_stream_multiplex_add_channel
    - hash_table_remove
    - i_stream_create_multiplex
    - i_strdup
    - e_error
    - o_stream_set_no_error_handling
    - e_warning
    - hash_table_lookup_full
    - i_new
    - i_stream_unref
    - connection_streams_changed
    - hash_table_insert
    - i_assert
    - i_stream_multiplex_add_channel
    linkageType: ''
    returnType: int
    signature: "int anvil_connection_handshake(struct anvil_connection *conn,\n\t\t\t
      \  const char *const *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/anvil/anvil-connection.c:638,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/anvil/anvil-connection.c:642,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:649,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/anvil/anvil-connection.c:658,1
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/anvil/anvil-connection.c:659,1
    - Dst: anvil_connection_handshake
      Src: /src/dovecot/src/anvil/anvil-connection.c:660,1
    - Dst: connection_set_handshake_ready
      Src: /src/dovecot/src/anvil/anvil-connection.c:662,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:667,1
    - Dst: anvil_connection_request
      Src: /src/dovecot/src/anvil/anvil-connection.c:671,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/anvil-connection.c:672,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 634
    functionDepth: 7
    functionLinenumber: 634
    functionLinenumberEnd: 677
    functionName: anvil_connection_input_line
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - anvil_connection_handshake
    - container_of
    - connection_set_handshake_ready
    - t_strsplit_tabescaped
    - connection_handshake_received
    - e_error
    - anvil_connection_request
    - version_string_verify
    linkageType: ''
    returnType: int
    signature: int anvil_connection_input_line(struct connection *_conn, const char
      *line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/anvil/anvil-connection.c:683,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/anvil/anvil-connection.c:684,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/anvil/anvil-connection.c:688,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/anvil/anvil-connection.c:689,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/anvil/anvil-connection.c:690,1
    - Dst: i_array_init
      Src: /src/dovecot/src/anvil/anvil-connection.c:695,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - fd
    - master
    - fifo
    argTypes:
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 696
    functionName: anvil_connection_create
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - o_stream_create_fd
    - connection_init_server
    - o_stream_set_no_error_handling
    - i_new
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void anvil_connection_create(int fd, bool master, bool fifo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/anvil/anvil-connection.c:701,1
    - Dst: array_count
      Src: /src/dovecot/src/anvil/anvil-connection.c:704,1
    - Dst: anvil_connection_cmd_reply
      Src: /src/dovecot/src/anvil/anvil-connection.c:705,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/anvil/anvil-connection.c:706,1
    - Dst: array_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:708,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/anvil/anvil-connection.c:709,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/anvil/anvil-connection.c:717,1
    - Dst: i_unreached
      Src: /src/dovecot/src/anvil/anvil-connection.c:719,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/anvil-connection.c:720,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/anvil/anvil-connection.c:721,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:722,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/anvil/anvil-connection.c:725,1
    - Dst: io_remove
      Src: /src/dovecot/src/anvil/anvil-connection.c:726,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/anvil/anvil-connection.c:727,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/anvil/anvil-connection.c:728,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:729,1
    - Dst: anvil_connection_unref
      Src: /src/dovecot/src/anvil/anvil-connection.c:730,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/anvil/anvil-connection.c:733,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 698
    functionDepth: 2
    functionLinenumber: 698
    functionLinenumberEnd: 734
    functionName: anvil_connection_destroy
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 0
    functionsReached:
    - connection_deinit
    - anvil_connection_unref
    - container_of
    - i_free
    - i_unreached
    - io_remove
    - hash_table_remove
    - connection_disconnect_reason
    - array_count
    - hash_table_lookup_full
    - anvil_connection_cmd_reply
    - i_assert
    - array_free
    - o_stream_destroy
    - master_service_client_connection_destroyed
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void anvil_connection_destroy(struct connection *_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/anvil/anvil-connection.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - service
    - pid
    argTypes:
    - char*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 743
    functionName: anvil_connection_find
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 1
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: struct anvil_connection
    signature: struct anvil_connection *anvil_connection_find(const char *service,
      pid_t pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/anvil/anvil-connection.c:753,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/anvil/anvil-connection.c:756,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/anvil/anvil-connection.c:756,1
    - Dst: array_append_space
      Src: /src/dovecot/src/anvil/anvil-connection.c:758,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/anvil-connection.c:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - conn
    - cmdline
    - callback
    - context
    argTypes:
    - struct anvil_connection*
    - char*
    - anvil_connection_cmd_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 762
    functionName: anvil_connection_send_cmd
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 1
    functionsReached:
    - array_append_space
    - strlen
    - i_strdup
    - o_stream_nsendv
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void anvil_connection_send_cmd(struct anvil_connection *conn,\n\t\t\t
      \      const char *cmdline,\n\t\t\t       anvil_connection_cmd_callback_t *callback,\n\t\t\t
      \      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - connection_count_r
    - kicks_pending_count_r
    - cmd_counter_r
    - connect_dump_counter_r
    argTypes:
    - unsigned int*
    - unsigned int*
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 764
    functionDepth: 0
    functionLinenumber: 764
    functionLinenumberEnd: 773
    functionName: anvil_get_global_counts
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void anvil_get_global_counts(unsigned int *connection_count_r,\n\t\t\t
      \    unsigned int *kicks_pending_count_r,\n\t\t\t     unsigned int *cmd_counter_r,\n\t\t\t
      \    unsigned int *connect_dump_counter_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/anvil-connection.c:788,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/anvil/anvil-connection.c:791,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/anvil/anvil-connection.c:793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - base_dir
    - max_kick_connections
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 785
    functionDepth: 1
    functionLinenumber: 785
    functionLinenumberEnd: 795
    functionName: anvil_connections_init
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - connection_list_init
    - hash_table_create
    linkageType: ''
    returnType: void
    signature: "void anvil_connections_init(const char *base_dir,\n\t\t\t    unsigned
      int max_kick_connections)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/anvil/anvil-connection.c:799,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/anvil-connection.c:801,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/anvil/anvil-connection.c:801,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/anvil/anvil-connection.c:802,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/anvil/anvil-connection.c:803,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/anvil-connection.c:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 805
    functionName: anvil_connections_deinit
    functionSourceFile: /src/dovecot/src/anvil/anvil-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    - hash_table_count
    - i_assert
    - i_free
    - hash_table_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void anvil_connections_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - client
    - ','
    - cmd
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 20
    functionName: admin_client_send_cmd
    functionSourceFile: /src/dovecot/src/anvil/admin-client.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: admin_client_send_cmd(client, cmd, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - service
    - ','
    - pid
    - ','
    - cmd
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 24
    functionName: admin_cmd_send
    functionSourceFile: /src/dovecot/src/anvil/common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: admin_cmd_send(service, pid, cmd, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/anvil/admin-client.c:30,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/admin-client.c:33,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/anvil/admin-client.c:35,1
    - Dst: i_array_init
      Src: /src/dovecot/src/anvil/admin-client.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - base_dir
    - service
    - pid
    argTypes:
    - char*
    - char*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 38
    functionName: admin_client_init
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - connection_init_client_unix
    - t_strdup_printf
    - i_new
    linkageType: ''
    returnType: struct admin_client
    signature: 'struct admin_client *

      admin_client_init(const char *base_dir, const char *service, pid_t pid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/admin-client.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct admin_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: admin_client_ref
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void admin_client_ref(struct admin_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/anvil/admin-client.c:51,1
    - Dst: struct admin_client_command*::callback
      Src: /src/dovecot/src/anvil/admin-client.c:52,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/admin-client.c:53,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/anvil/admin-client.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - client
    - reply
    - error
    argTypes:
    - struct admin_client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: admin_client_reply
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 0
    functionsReached:
    - struct admin_client_command*::callback
    - array_pop_front
    - i_free
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: "void admin_client_reply(struct admin_client *client,\n\t\t\t       const
      char *reply, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: admin_client_ref
      Src: /src/dovecot/src/anvil/admin-client.c:60,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/anvil/admin-client.c:61,1
    - Dst: array_count
      Src: /src/dovecot/src/anvil/admin-client.c:62,1
    - Dst: admin_client_reply
      Src: /src/dovecot/src/anvil/admin-client.c:63,1
    - Dst: admin_client_unref
      Src: /src/dovecot/src/anvil/admin-client.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - error
    argTypes:
    - struct admin_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: admin_client_fail_commands
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 0
    functionsReached:
    - admin_client_unref
    - admin_client_ref
    - admin_client_reply
    - array_count
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void admin_client_fail_commands(struct admin_client *client, const
      char *error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/anvil/admin-client.c:70,1
    - Dst: admin_client_fail_commands
      Src: /src/dovecot/src/anvil/admin-client.c:72,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/anvil/admin-client.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 73
    functionName: admin_client_destroy
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 0
    functionsReached:
    - container_of
    - connection_disconnect_reason
    - admin_client_fail_commands
    linkageType: ''
    returnType: void
    signature: void admin_client_destroy(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/admin-client.c:84,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/anvil/admin-client.c:88,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/admin-client.c:89,1
    - Dst: array_free
      Src: /src/dovecot/src/anvil/admin-client.c:90,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/anvil/admin-client.c:91,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/admin-client.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct admin_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 93
    functionName: admin_client_unref
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 2
    functionsReached:
    - i_free
    - array_free
    - array_foreach_modifiable
    - i_assert
    - connection_deinit
    linkageType: ''
    returnType: void
    signature: void admin_client_unref(struct admin_client **_client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/anvil/admin-client.c:98,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/admin-client.c:103,1
    - Dst: admin_client_fail_commands
      Src: /src/dovecot/src/anvil/admin-client.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 106
    functionName: admin_client_connected
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - container_of
    - admin_client_fail_commands
    linkageType: ''
    returnType: void
    signature: void admin_client_connected(struct connection *conn, bool success)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/anvil/admin-client.c:114,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/admin-client.c:115,1
    - Dst: connection_client_connect_async
      Src: /src/dovecot/src/anvil/admin-client.c:120,1
    - Dst: strlen
      Src: /src/dovecot/src/anvil/admin-client.c:124,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/anvil/admin-client.c:127,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/anvil/admin-client.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - client
    - cmdline
    - callback
    - context
    argTypes:
    - struct admin_client*
    - char*
    - admin_client_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 128
    functionName: admin_client_send_cmd
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 1
    functionsReached:
    - array_append_space
    - strlen
    - i_strdup
    - o_stream_nsendv
    - connection_client_connect_async
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void admin_client_send_cmd(struct admin_client *client, const char
      *cmdline,\n\t\t\t   admin_client_callback_t *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/anvil/admin-client.c:134,1
    - Dst: connection_input_line_default
      Src: /src/dovecot/src/anvil/admin-client.c:137,1
    - Dst: array_count
      Src: /src/dovecot/src/anvil/admin-client.c:139,1
    - Dst: e_error
      Src: /src/dovecot/src/anvil/admin-client.c:140,1
    - Dst: admin_client_ref
      Src: /src/dovecot/src/anvil/admin-client.c:143,1
    - Dst: admin_client_reply
      Src: /src/dovecot/src/anvil/admin-client.c:144,1
    - Dst: admin_client_unref
      Src: /src/dovecot/src/anvil/admin-client.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 148
    functionName: admin_client_input_line
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 0
    functionsReached:
    - admin_client_unref
    - container_of
    - connection_input_line_default
    - admin_client_ref
    - admin_client_reply
    - e_error
    - array_count
    linkageType: ''
    returnType: int
    signature: int admin_client_input_line(struct connection *conn, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/anvil/admin-client.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: admin_clients_init
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void admin_clients_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/anvil/admin-client.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: admin_clients_deinit
    functionSourceFile: /src/dovecot/src/anvil/admin-client.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void admin_clients_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/anvil/admin-client-pool.c:32,1
    - Dst: i_strdup
      Src: /src/dovecot/src/anvil/admin-client-pool.c:33,1
    - Dst: i_array_init
      Src: /src/dovecot/src/anvil/admin-client-pool.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - base_dir
    - max_connections
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 38
    functionName: admin_client_pool_init
    functionSourceFile: /src/dovecot/src/anvil/admin-client-pool.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct admin_client_pool
    signature: 'struct admin_client_pool *

      admin_client_pool_init(const char *base_dir, unsigned int max_connections)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/anvil/admin-client-pool.c:45,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/admin-client-pool.c:46,1
    - Dst: admin_client_unref
      Src: /src/dovecot/src/anvil/admin-client-pool.c:47,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/admin-client-pool.c:48,1
    - Dst: array_free
      Src: /src/dovecot/src/anvil/admin-client-pool.c:50,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/admin-client-pool.c:51,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/admin-client-pool.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - _pool
    argTypes:
    - struct admin_client_pool**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: admin_client_pool_deinit
    functionSourceFile: /src/dovecot/src/anvil/admin-client-pool.c
    functionUses: 1
    functionsReached:
    - admin_client_unref
    - array_foreach_elem
    - array_free
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void admin_client_pool_deinit(struct admin_client_pool **_pool)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/anvil/admin-client-pool.c:62,1
    - Dst: array_count
      Src: /src/dovecot/src/anvil/admin-client-pool.c:64,1
    - Dst: admin_client_unref
      Src: /src/dovecot/src/anvil/admin-client-pool.c:71,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/admin-client-pool.c:72,1
    - Dst: array_delete
      Src: /src/dovecot/src/anvil/admin-client-pool.c:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - pool
    argTypes:
    - struct admin_client_pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 76
    functionName: admin_client_pool_cleanup
    functionSourceFile: /src/dovecot/src/anvil/admin-client-pool.c
    functionUses: 0
    functionsReached:
    - admin_client_unref
    - array_delete
    - array_get
    - array_count
    - i_free
    linkageType: ''
    returnType: void
    signature: void admin_client_pool_cleanup(struct admin_client_pool *pool)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/anvil/admin-client-pool.c:84,1
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/admin-client-pool.c:87,1
    - Dst: i_new
      Src: /src/dovecot/src/anvil/admin-client-pool.c:94,1
    - Dst: admin_client_init
      Src: /src/dovecot/src/anvil/admin-client-pool.c:97,1
    - Dst: array_push_back
      Src: /src/dovecot/src/anvil/admin-client-pool.c:99,1
    - Dst: admin_client_pool_cleanup
      Src: /src/dovecot/src/anvil/admin-client-pool.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - pool
    - service
    - pid
    argTypes:
    - struct admin_client_pool*
    - char*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 102
    functionName: admin_client_pool_get
    functionSourceFile: /src/dovecot/src/anvil/admin-client-pool.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_foreach_elem
    - admin_client_pool_cleanup
    - admin_client_init
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct admin_client_ref
    signature: "struct admin_client_ref *\nadmin_client_pool_get(struct admin_client_pool
      *pool,\n\t\t      const char *service, pid_t pid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/anvil/admin-client-pool.c:110,1
    - Dst: struct admin_client_cmd_context*::callback
      Src: /src/dovecot/src/anvil/admin-client-pool.c:112,1
    - Dst: i_free
      Src: /src/dovecot/src/anvil/admin-client-pool.c:113,1
    - Dst: admin_client_pool_cleanup
      Src: /src/dovecot/src/anvil/admin-client-pool.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - reply
    - error
    - cmd_ctx
    argTypes:
    - char*
    - char*
    - struct admin_client_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 119
    functionName: admin_client_pool_cmd_callback
    functionSourceFile: /src/dovecot/src/anvil/admin-client-pool.c
    functionUses: 0
    functionsReached:
    - struct admin_client_cmd_context*::callback
    - admin_client_pool_cleanup
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void admin_client_pool_cmd_callback(const char *reply, const char
      *error,\n\t\t\t       struct admin_client_cmd_context *cmd_ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/anvil/admin-client-pool.c:128,1
    - Dst: admin_client_pool_get
      Src: /src/dovecot/src/anvil/admin-client-pool.c:129,1
    - Dst: admin_client_send_cmd
      Src: /src/dovecot/src/anvil/admin-client-pool.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - pool
    - service
    - pid
    - cmd
    - callback
    - context
    argTypes:
    - struct admin_client_pool*
    - char*
    - pid_t
    - char*
    - admin_client_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 134
    functionName: admin_client_pool_send_cmd
    functionSourceFile: /src/dovecot/src/anvil/admin-client-pool.c
    functionUses: 1
    functionsReached:
    - admin_client_pool_get
    - i_new
    - admin_client_send_cmd
    linkageType: ''
    returnType: void
    signature: "void admin_client_pool_send_cmd(struct admin_client_pool *pool,\n\t\t\t\tconst
      char *service, pid_t pid, const char *cmd,\n\t\t\t\tadmin_client_callback_t
      *callback,\n\t\t\t\tvoid *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-feature.c:10,1
    - Dst: array_idx
      Src: /src/dovecot/src/imap/imap-feature.c:12,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-feature.c:13,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - name
    - feature_idx_r
    argTypes:
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 19
    functionName: imap_feature_lookup
    functionSourceFile: /src/dovecot/src/imap/imap-feature.c
    functionUses: 0
    functionsReached:
    - array_count
    - strcasecmp
    - array_idx
    linkageType: ''
    returnType: bool
    signature: bool imap_feature_lookup(const char *name, unsigned int *feature_idx_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/imap/imap-feature.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - feature_idx
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: imap_feature_idx
    functionSourceFile: /src/dovecot/src/imap/imap-feature.c
    functionUses: 0
    functionsReached:
    - array_idx
    linkageType: ''
    returnType: struct imap_feature
    signature: struct imap_feature *imap_feature_idx(unsigned int feature_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/imap-feature.c:30,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-feature.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - feature
    - mailbox_features
    - callback
    argTypes:
    - char*
    - enum mailbox_feature
    - imap_client_enable_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 35
    functionName: imap_feature_register
    functionSourceFile: /src/dovecot/src/imap/imap-feature.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_append_space
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int imap_feature_register(const char *feature, enum mailbox_feature
      mailbox_features,\n\t\t      imap_client_enable_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-feature.c:39,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-feature.c:39,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-feature.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: imap_features_init
    functionSourceFile: /src/dovecot/src/imap/imap-feature.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imap_features_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-feature.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: imap_features_deinit
    functionSourceFile: /src/dovecot/src/imap/imap-feature.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void imap_features_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-fetch.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h1
    - h2
    argTypes:
    - struct imap_fetch_handler*
    - struct imap_fetch_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: imap_fetch_handler_cmp
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void imap_fetch_handler_cmp(const struct imap_fetch_handler *h1,\n\t\t\t\t
      \ const struct imap_fetch_handler *h2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append
      Src: /src/dovecot/src/imap/imap-fetch.c:36,1
    - Dst: array_sort
      Src: /src/dovecot/src/imap/imap-fetch.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - handlers
    - count
    argTypes:
    - struct imap_fetch_handler*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 38
    functionName: imap_fetch_handlers_register
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - array_sort
    - array_append
    linkageType: ''
    returnType: void
    signature: "void imap_fetch_handlers_register(const struct imap_fetch_handler
      *handlers,\n\t\t\t\t  size_t count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_front
      Src: /src/dovecot/src/imap/imap-fetch.c:44,1
    - Dst: imap_fetch_handler_lookup
      Src: /src/dovecot/src/imap/imap-fetch.c:45,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:46,1
    - Dst: array_delete
      Src: /src/dovecot/src/imap/imap-fetch.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: imap_fetch_handler_unregister
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - array_delete
    - i_assert
    - imap_fetch_handler_lookup
    - array_front
    linkageType: ''
    returnType: void
    signature: void imap_fetch_handler_unregister(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-fetch.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - h
    argTypes:
    - char*
    - struct imap_fetch_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: imap_fetch_handler_bsearch
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int imap_fetch_handler_bsearch(const char *name, const struct imap_fetch_handler
      *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_bsearch
      Src: /src/dovecot/src/imap/imap-fetch.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: imap_fetch_handler_lookup
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 1
    functionsReached:
    - array_bsearch
    linkageType: ''
    returnType: struct imap_fetch_handler
    signature: struct imap_fetch_handler *imap_fetch_handler_lookup(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_isalnum
      Src: /src/dovecot/src/imap/imap-fetch.c:66,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/imap/imap-fetch.c:67,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/imap/imap-fetch.c:69,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-fetch.c:72,1
    - Dst: struct imap_fetch_handler*::init
      Src: /src/dovecot/src/imap/imap-fetch.c:76,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - init_ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 81
    functionName: imap_fetch_init_handler
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_isalnum
    - t_strdup_printf
    - array_bsearch
    - t_strdup_until
    - struct imap_fetch_handler*::init
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_init_handler(struct imap_fetch_init_context *init_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-fetch.c:88,1
    - Dst: init
      Src: /src/dovecot/src/imap/imap-fetch.c:92,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-fetch.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 94
    functionName: imap_fetch_init_nofail_handler
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - init
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void imap_fetch_init_nofail_handler(struct imap_fetch_context *ctx,\n\t\t\t\t
      \   bool (*init)(struct imap_fetch_init_context *))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-fetch.c:104,1
    - Dst: imap_fetch_alloc
      Src: /src/dovecot/src/imap/imap-fetch.c:105,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/imap-fetch.c:109,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/imap-fetch.c:110,1
    - Dst: imap_fetch_init_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:112,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-fetch.c:113,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/imap-fetch.c:115,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/imap-fetch.c:119,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/imap-fetch.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 6
    argNames:
    - client
    - pool
    - list
    - utf8
    - fetch_ctx_r
    - client_error_r
    argTypes:
    - struct client*
    - pool_t
    - struct imap_arg*
    - bool
    - struct imap_fetch_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 126
    functionName: imap_fetch_att_list_parse
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_str_ucase
    - imap_fetch_free
    - imap_fetch_alloc
    - imap_arg_get_atom
    - IMAP_ARG_IS_EOL
    - t_strconcat
    - imap_fetch_init_handler
    linkageType: ''
    returnType: int
    signature: "int imap_fetch_att_list_parse(struct client *client, pool_t pool,\n\t\t\t
      \     const struct imap_arg *list, bool utf8,\n\t\t\t      struct imap_fetch_context
      **fetch_ctx_r,\n\t\t\t      const char **client_error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-fetch.c:134,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-fetch.c:137,1
    - Dst: pool_ref
      Src: /src/dovecot/src/imap/imap-fetch.c:139,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-fetch.c:141,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-fetch.c:142,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-fetch.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - client
    - pool
    - reason
    - utf8
    argTypes:
    - struct client*
    - pool_t
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 146
    functionName: imap_fetch_alloc
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_new
    - pool_ref
    - p_array_init
    linkageType: ''
    returnType: struct imap_fetch_context
    signature: "struct imap_fetch_context *\nimap_fetch_alloc(struct client *client,
      pool_t pool, const char *reason,\n\t\t bool utf8)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/imap-fetch.c:169,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-fetch.c:176,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-fetch.c:181,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-fetch.c:182,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-fetch.c:185,1
    - Dst: array_insert
      Src: /src/dovecot/src/imap/imap-fetch.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - ctx
    - flags
    - nil_reply
    - handler
    - context
    argTypes:
    - struct imap_fetch_init_context*
    - enum imap_fetch_handler_flags
    - char*
    - imap_fetch_handler_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 191
    functionName: imap_fetch_add_handler
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - array_push_back
    - array_foreach
    - array_insert
    linkageType: ''
    returnType: void
    signature: "void imap_fetch_add_handler(struct imap_fetch_init_context *ctx,\n\t\t\t
      \   enum imap_fetch_handler_flags flags,\n\t\t\t    const char *nil_reply,\n\t\t\t
      \   imap_fetch_handler_t *handler, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-fetch.c:204,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/imap-fetch.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:206,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-fetch.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:207,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/imap-fetch.c:209,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/imap/imap-fetch.c:210,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/imap/imap-fetch.c:214,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/imap/imap-fetch.c:219,1
    - Dst: mail_free
      Src: /src/dovecot/src/imap/imap-fetch.c:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - box
    - qresync_args
    - trans
    - expunged_uids
    argTypes:
    - struct mailbox*
    - struct imap_fetch_qresync_args*
    - struct mailbox_transaction_context*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 221
    functionName: expunges_drop_known
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - mail_alloc
    - array_get
    - mail_set_seq
    - array_count
    - mailbox_get_open_status
    - seq_range_array_remove_range
    - array_front
    - mail_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void expunges_drop_known(struct mailbox *box,\n\t\t    const struct
      imap_fetch_qresync_args *qresync_args,\n\t\t    struct mailbox_transaction_context
      *trans,\n\t\t    ARRAY_TYPE(seq_range) *expunged_uids)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-fetch.c:239,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:240,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-fetch.c:245,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-fetch.c:246,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-fetch.c:248,1
    - Dst: array_append_array
      Src: /src/dovecot/src/imap/imap-fetch.c:249,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/imap-fetch.c:251,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/imap-fetch.c:252,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-fetch.c:253,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/imap-fetch.c:255,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:265,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-fetch.c:267,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:271,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-fetch.c:275,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:288,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-fetch.c:289,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-fetch.c:294,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/imap-fetch.c:298,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/imap/imap-fetch.c:299,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/imap-fetch.c:302,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-fetch.c:306,1
    - Dst: expunges_drop_known
      Src: /src/dovecot/src/imap/imap-fetch.c:307,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/imap-fetch.c:309,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 4
    argNames:
    - box
    - qresync_args
    - uid_filter_arr
    - expunged_uids
    argTypes:
    - struct mailbox*
    - struct imap_fetch_qresync_args*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 311
    functionName: get_expunges_fallback
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add_range
    - p_new
    - p_array_init
    - mailbox_transaction_begin
    - expunges_drop_known
    - array_get
    - array_is_created
    - mailbox_search_deinit
    - mail_search_build_init
    - mailbox_get_open_status
    - mailbox_search_init
    - seq_range_array_remove_range
    - mailbox_transaction_commit
    - mailbox_search_next
    - i_assert
    - mail_search_args_unref
    - array_append_array
    linkageType: ''
    returnType: int
    signature: "int get_expunges_fallback(struct mailbox *box,\n\t\t      const struct
      imap_fetch_qresync_args *qresync_args,\n\t\t      const ARRAY_TYPE(seq_range)
      *uid_filter_arr,\n\t\t      ARRAY_TYPE(seq_range) *expunged_uids)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/imap-fetch.c:321,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:325,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:326,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-fetch.c:331,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-fetch.c:331,1
    - Dst: mailbox_get_expunged_uids
      Src: /src/dovecot/src/imap/imap-fetch.c:332,1
    - Dst: get_expunges_fallback
      Src: /src/dovecot/src/imap/imap-fetch.c:334,1
    - Dst: array_clear
      Src: /src/dovecot/src/imap/imap-fetch.c:336,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-fetch.c:340,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/imap-fetch.c:341,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch.c:342,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/imap-fetch.c:343,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch.c:344,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-fetch.c:345,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-fetch.c:345,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-fetch.c:345,1
    - Dst: str_free
      Src: /src/dovecot/src/imap/imap-fetch.c:346,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-fetch.c:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 4
    argNames:
    - client
    - box
    - search_args
    - qresync_args
    argTypes:
    - struct client*
    - struct mailbox*
    - struct mail_search_args*
    - struct imap_fetch_qresync_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 313
    functionDepth: 3
    functionLinenumber: 313
    functionLinenumberEnd: 350
    functionName: imap_fetch_send_vanished
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - str_data
    - str_len
    - get_expunges_fallback
    - imap_write_seq_range
    - mailbox_get_expunged_uids
    - array_count
    - o_stream_nsend
    - array_clear
    - ARRAY_TYPE
    - array_free
    - str_append
    - i_assert
    - str_new
    - str_free
    linkageType: ''
    returnType: int
    signature: "int imap_fetch_send_vanished(struct client *client, struct mailbox
      *box,\n\t\t\t     const struct mail_search_args *search_args,\n\t\t\t     const
      struct imap_fetch_qresync_args *qresync_args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_init_nofail_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:360,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 365
    functionName: imap_fetch_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_init_nofail_handler
    linkageType: ''
    returnType: void
    signature: void imap_fetch_init(struct imap_fetch_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:375,1
    - Dst: imap_fetch_init
      Src: /src/dovecot/src/imap/imap-fetch.c:377,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-fetch.c:378,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-fetch.c:380,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/imap/imap-fetch.c:383,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/imap-fetch.c:385,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/imap/imap-fetch.c:386,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/imap/imap-fetch.c:387,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/imap-fetch.c:401,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/imap/imap-fetch.c:404,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/imap-fetch.c:407,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/imap-fetch.c:409,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/imap/imap-fetch.c:412,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - box
    - search_args
    argTypes:
    - struct imap_fetch_context*
    - struct mailbox*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 413
    functionName: imap_fetch_begin
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_transaction_begin
    - mailbox_header_lookup_unref
    - mail_search_args_init
    - mailbox_search_init
    - imap_fetch_init
    - array_count
    - mailbox_header_lookup_init
    - array_pop_back
    - array_front
    - array_append_zero
    - i_assert
    - str_new
    linkageType: ''
    returnType: void
    signature: "void imap_fetch_begin(struct imap_fetch_context *ctx, struct mailbox
      *box,\n\t\t      struct mail_search_args *search_args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-fetch.c:420,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-fetch.c:421,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:434,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-fetch.c:437,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 439
    functionName: imap_fetch_flush_buffer
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - o_stream_send
    - str_truncate
    - str_data
    - str_len
    linkageType: ''
    returnType: int
    signature: int imap_fetch_flush_buffer(struct imap_fetch_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch.c:446,1
    - Dst: array_idx
      Src: /src/dovecot/src/imap/imap-fetch.c:448,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:449,1
    - Dst: imap_fetch_flush_buffer
      Src: /src/dovecot/src/imap/imap-fetch.c:453,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 441
    functionDepth: 2
    functionLinenumber: 441
    functionLinenumberEnd: 457
    functionName: imap_fetch_send_nil_reply
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - imap_fetch_flush_buffer
    - array_idx
    linkageType: ''
    returnType: int
    signature: int imap_fetch_send_nil_reply(struct imap_fetch_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 470
    functionName: imap_fetch_fix_empty_reply
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - str_printfa
    linkageType: ''
    returnType: void
    signature: void imap_fetch_fix_empty_reply(struct imap_fetch_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-fetch.c:479,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-fetch.c:480,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/imap/imap-fetch.c:481,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-fetch.c:485,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/imap-fetch.c:486,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 489
    functionName: imap_fetch_cur_failed
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - p_strdup
    - mailbox_get_last_error
    - p_array_init
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_cur_failed(struct imap_fetch_context *ctx)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: struct imap_fetch_state*::cont_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:500,1
    - Dst: imap_fetch_send_nil_reply
      Src: /src/dovecot/src/imap/imap-fetch.c:511,1
    - Dst: imap_fetch_cur_failed
      Src: /src/dovecot/src/imap/imap-fetch.c:514,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/imap-fetch.c:522,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-fetch.c:525,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/imap-fetch.c:527,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap/imap-fetch.c:529,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/imap-fetch.c:538,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:542,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-fetch.c:546,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:547,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-fetch.c:551,1
    - Dst: imap_fetch_flush_buffer
      Src: /src/dovecot/src/imap/imap-fetch.c:555,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:559,1
    - Dst: handler
      Src: /src/dovecot/src/imap/imap-fetch.c:564,1
    - Dst: imap_fetch_send_nil_reply
      Src: /src/dovecot/src/imap/imap-fetch.c:575,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:578,1
    - Dst: imap_fetch_cur_failed
      Src: /src/dovecot/src/imap/imap-fetch.c:580,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/imap-fetch.c:587,1
    - Dst: imap_fetch_fix_empty_reply
      Src: /src/dovecot/src/imap/imap-fetch.c:590,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-fetch.c:591,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-fetch.c:593,1
    - Dst: imap_fetch_flush_buffer
      Src: /src/dovecot/src/imap/imap-fetch.c:595,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-fetch.c:600,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 77
    argCount: 2
    argNames:
    - ctx
    - cancel
    argTypes:
    - struct imap_fetch_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 491
    functionDepth: 3
    functionLinenumber: 491
    functionLinenumberEnd: 606
    functionName: imap_fetch_more_int
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - struct imap_fetch_state*::cont_handler
    - imap_fetch_flush_buffer
    - imap_fetch_send_nil_reply
    - str_len
    - imap_fetch_fix_empty_reply
    - array_get
    - imap_fetch_cur_failed
    - handler
    - o_stream_get_buffer_used_size
    - o_stream_nsend
    - i_stream_unref
    - o_stream_flush
    - mailbox_search_next
    - i_assert
    linkageType: ''
    returnType: int
    signature: int imap_fetch_more_int(struct imap_fetch_context *ctx, bool cancel)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch.c:616,1
    - Dst: imap_fetch_more_int
      Src: /src/dovecot/src/imap/imap-fetch.c:619,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/imap-fetch.c:630,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - cmd
    argTypes:
    - struct imap_fetch_context*
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 611
    functionDepth: 4
    functionLinenumber: 611
    functionLinenumberEnd: 634
    functionName: imap_fetch_more
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_assert
    - imap_fetch_more_int
    - client_disconnect
    linkageType: ''
    returnType: int
    signature: "int imap_fetch_more(struct imap_fetch_context *ctx,\n\t\t    struct
      client_command_context *cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_more_int
      Src: /src/dovecot/src/imap/imap-fetch.c:640,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/imap-fetch.c:646,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 636
    functionDepth: 4
    functionLinenumber: 636
    functionLinenumberEnd: 651
    functionName: imap_fetch_more_no_lock_update
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_more_int
    - client_disconnect
    linkageType: ''
    returnType: int
    signature: int imap_fetch_more_no_lock_update(struct imap_fetch_context *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_fix_empty_reply
      Src: /src/dovecot/src/imap/imap-fetch.c:660,1
    - Dst: imap_fetch_flush_buffer
      Src: /src/dovecot/src/imap/imap-fetch.c:661,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:663,1
    - Dst: str_free
      Src: /src/dovecot/src/imap/imap-fetch.c:669,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/imap-fetch.c:671,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/imap-fetch.c:674,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/imap-fetch.c:682,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 686
    functionName: imap_fetch_end
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_flush_buffer
    - imap_fetch_fix_empty_reply
    - o_stream_send
    - mailbox_search_deinit
    - mailbox_transaction_commit
    - i_stream_unref
    - str_free
    linkageType: ''
    returnType: int
    signature: int imap_fetch_end(struct imap_fetch_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_end
      Src: /src/dovecot/src/imap/imap-fetch.c:695,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/imap-fetch.c:697,1
    - Dst: struct imap_fetch_context_handler*::handler
      Src: /src/dovecot/src/imap/imap-fetch.c:699,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-fetch.c:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct imap_fetch_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 688
    functionDepth: 3
    functionLinenumber: 688
    functionLinenumberEnd: 702
    functionName: imap_fetch_free
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 1
    functionsReached:
    - struct imap_fetch_context_handler*::handler
    - pool_unref
    - imap_fetch_end
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void imap_fetch_free(struct imap_fetch_context **_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/imap/imap-fetch.c:709,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:715,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:719,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/imap/imap-fetch.c:720,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:721,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 724
    functionName: fetch_body
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - o_stream_send_str
    - mail_get_special
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: "int fetch_body(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t
      \     void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:730,1
    - Dst: imap_fetch_body_section_init
      Src: /src/dovecot/src/imap/imap-fetch.c:734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 735
    functionName: fetch_body_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    - imap_fetch_body_section_init
    linkageType: ''
    returnType: bool
    signature: bool fetch_body_init(struct imap_fetch_init_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/imap/imap-fetch.c:742,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:749,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:753,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/imap/imap-fetch.c:754,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:755,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 759
    functionName: fetch_bodystructure
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - o_stream_send_str
    - mail_get_special
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: "int fetch_bodystructure(struct imap_fetch_context *ctx,\n\t\t\t       struct
      mail *mail, void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 767
    functionName: fetch_bodystructure_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool fetch_bodystructure_init(struct imap_fetch_init_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/imap/imap-fetch.c:774,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:780,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:784,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/imap/imap-fetch.c:785,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch.c:786,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 769
    functionDepth: 1
    functionLinenumber: 769
    functionLinenumberEnd: 789
    functionName: fetch_envelope
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - o_stream_send_str
    - mail_get_special
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: "int fetch_envelope(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t\t
      \ void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 791
    functionDepth: 0
    functionLinenumber: 791
    functionLinenumberEnd: 797
    functionName: fetch_envelope_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool fetch_envelope_init(struct imap_fetch_init_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_flags
      Src: /src/dovecot/src/imap/imap-fetch.c:805,1
    - Dst: mailbox_is_readonly
      Src: /src/dovecot/src/imap/imap-fetch.c:807,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/imap/imap-fetch.c:811,1
    - Dst: client_get_keyword_names
      Src: /src/dovecot/src/imap/imap-fetch.c:816,1
    - Dst: mail_get_keyword_indexes
      Src: /src/dovecot/src/imap/imap-fetch.c:817,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch.c:819,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/imap/imap-fetch.c:820,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch.c:821,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 823
    functionName: fetch_flags
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_keyword_indexes
    - client_get_keyword_names
    - mail_update_flags
    - imap_write_flags
    - mail_get_flags
    - mailbox_is_readonly
    - str_append
    linkageType: ''
    returnType: int
    signature: "int fetch_flags(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t
      \      void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 832
    functionName: imap_fetch_flags_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_flags_init(struct imap_fetch_init_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/imap/imap-fetch.c:839,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:842,1
    - Dst: imap_to_datetime
      Src: /src/dovecot/src/imap/imap-fetch.c:843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 845
    functionName: fetch_internaldate
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_received_date
    - str_printfa
    - imap_to_datetime
    linkageType: ''
    returnType: int
    signature: "int fetch_internaldate(struct imap_fetch_context *ctx, struct mail
      *mail,\n\t\t\t      void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 847
    functionDepth: 0
    functionLinenumber: 847
    functionLinenumberEnd: 854
    functionName: fetch_internaldate_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool fetch_internaldate_init(struct imap_fetch_init_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/imap/imap-fetch.c:861,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:864,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 866
    functionName: fetch_modseq
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - mail_get_modseq
    linkageType: ''
    returnType: int
    signature: "int fetch_modseq(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t\tvoid
      *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_enable
      Src: /src/dovecot/src/imap/imap-fetch.c:874,1
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 868
    functionDepth: 1
    functionLinenumber: 868
    functionLinenumberEnd: 878
    functionName: imap_fetch_modseq_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    - client_enable
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_modseq_init(struct imap_fetch_init_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 885
    functionName: fetch_uid
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - str_printfa
    linkageType: ''
    returnType: int
    signature: "int fetch_uid(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t
      \    void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 892
    functionName: imap_fetch_uid_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_uid_init(struct imap_fetch_init_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/imap/imap-fetch.c:900,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch.c:905,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:907,1
    - Dst: imap_to_datetime
      Src: /src/dovecot/src/imap/imap-fetch.c:908,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 894
    functionDepth: 1
    functionLinenumber: 894
    functionLinenumberEnd: 911
    functionName: imap_fetch_savedate
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - str_append
    - mail_get_save_date
    - str_printfa
    - imap_to_datetime
    linkageType: ''
    returnType: int
    signature: "int imap_fetch_savedate(struct imap_fetch_context *ctx, struct mail
      *mail,\n\t\t\t       void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 919
    functionName: imap_fetch_savedate_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_savedate_init(struct imap_fetch_init_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/imap/imap-fetch.c:926,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch.c:929,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/imap-fetch.c:930,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch.c:931,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 933
    functionName: fetch_guid
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - str_append
    - mail_get_special
    - str_append_c
    - imap_append_astring
    linkageType: ''
    returnType: int
    signature: "int fetch_guid(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t
      \     void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 935
    functionDepth: 0
    functionLinenumber: 935
    functionLinenumberEnd: 941
    functionName: fetch_guid_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool fetch_guid_init(struct imap_fetch_init_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/imap/imap-fetch.c:949,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-fetch.c:956,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-fetch.c:956,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/imap-fetch.c:957,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-fetch.c:958,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-fetch.c:959,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch.c:962,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/imap-fetch.c:963,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch.c:964,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 966
    functionName: fetch_x_mailbox
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_panic
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - imap_utf8_to_utf7
    - imap_append_astring
    - str_append
    - mail_get_special
    linkageType: ''
    returnType: int
    signature: "int fetch_x_mailbox(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t\t
      \  void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 968
    functionDepth: 0
    functionLinenumber: 968
    functionLinenumberEnd: 973
    functionName: fetch_x_mailbox_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool fetch_x_mailbox_init(struct imap_fetch_init_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_backend_mail
      Src: /src/dovecot/src/imap/imap-fetch.c:980,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 984
    functionName: fetch_x_real_uid
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - mail_get_backend_mail
    linkageType: ''
    returnType: int
    signature: "int fetch_x_real_uid(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t\t
      \   void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 986
    functionDepth: 0
    functionLinenumber: 986
    functionLinenumberEnd: 991
    functionName: fetch_x_real_uid_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool fetch_x_real_uid_init(struct imap_fetch_init_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/imap/imap-fetch.c:998,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch.c:1001,1
    - Dst: imap_to_datetime
      Src: /src/dovecot/src/imap/imap-fetch.c:1002,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 993
    functionDepth: 1
    functionLinenumber: 993
    functionLinenumberEnd: 1004
    functionName: fetch_x_savedate
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_save_date
    - str_printfa
    - imap_to_datetime
    linkageType: ''
    returnType: int
    signature: "int fetch_x_savedate(struct imap_fetch_context *ctx, struct mail *mail,\n\t\t\t
      \   void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch.c:1009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1006
    functionDepth: 0
    functionLinenumber: 1006
    functionLinenumberEnd: 1013
    functionName: fetch_x_savedate_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    linkageType: ''
    returnType: bool
    signature: bool fetch_x_savedate_init(struct imap_fetch_init_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-fetch.c:1037,1
    - Dst: imap_fetch_handlers_register
      Src: /src/dovecot/src/imap/imap-fetch.c:1038,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/imap/imap-fetch.c:1039,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1035
    functionDepth: 2
    functionLinenumber: 1035
    functionLinenumberEnd: 1040
    functionName: imap_fetch_handlers_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - N_ELEMENTS
    - imap_fetch_handlers_register
    linkageType: ''
    returnType: void
    signature: void imap_fetch_handlers_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-fetch.c:1044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1042
    functionDepth: 1
    functionLinenumber: 1042
    functionLinenumberEnd: 1045
    functionName: imap_fetch_handlers_deinit
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void imap_fetch_handlers_deinit(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-sort.c:40,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-sort.c:42,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-sort.c:47,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-sort.c:48,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-sort.c:55,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-sort.c:60,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-sort.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-sort.c:71,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-sort.c:77,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-sort.c:82,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-sort.c:83,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 3
    argNames:
    - cmd
    - args
    - program
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    - enum mail_sort_type[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 89
    functionName: get_sort_program
    functionSourceFile: /src/dovecot/src/imap/cmd-sort.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - client_send_command_error
    - IMAP_ARG_IS_EOL
    - i_assert
    - t_strconcat
    - imap_arg_get_astring
    linkageType: ''
    returnType: int
    signature: "int get_sort_program(struct client_command_context *cmd,\n\t\t const
      struct imap_arg *args,\n\t\t enum mail_sort_type program[MAX_SORT_PROGRAM_SIZE])"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-sort.c:100,1
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-sort.c:103,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-sort.c:106,1
    - Dst: cmd_search_parse_return_if_found
      Src: /src/dovecot/src/imap/cmd-sort.c:109,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-sort.c:115,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-sort.c:116,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/cmd-sort.c:117,1
    - Dst: get_sort_program
      Src: /src/dovecot/src/imap/cmd-sort.c:121,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/cmd-sort.c:122,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-sort.c:128,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-sort.c:129,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/cmd-sort.c:130,1
    - Dst: imap_search_args_build
      Src: /src/dovecot/src/imap/cmd-sort.c:135,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/cmd-sort.c:137,1
    - Dst: imap_search_start
      Src: /src/dovecot/src/imap/cmd-sort.c:141,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 142
    functionName: cmd_sort
    functionSourceFile: /src/dovecot/src/imap/cmd-sort.c
    functionUses: 0
    functionsReached:
    - client_verify_open_mailbox
    - cmd_search_parse_return_if_found
    - imap_arg_get_list
    - p_new
    - imap_search_context_free
    - imap_search_args_build
    - imap_search_start
    - client_read_args
    - client_send_command_error
    - get_sort_program
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_sort(struct client_command_context *cmd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-status.c:20,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-status.c:23,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-status.c:24,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-status.c:25,1
    - Dst: imap_status_parse_items
      Src: /src/dovecot/src/imap/cmd-status.c:30,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-status.c:34,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-status.c:38,1
    - Dst: mailbox_equals
      Src: /src/dovecot/src/imap/cmd-status.c:40,1
    - Dst: imap_status_get
      Src: /src/dovecot/src/imap/cmd-status.c:41,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-status.c:42,1
    - Dst: imap_status_send
      Src: /src/dovecot/src/imap/cmd-status.c:46,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-status.c:48,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-status.c:50,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 54
    functionName: cmd_status
    functionSourceFile: /src/dovecot/src/imap/cmd-status.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - client_find_namespace
    - client_send_tagline
    - mailbox_equals
    - imap_status_send
    - client_read_args
    - client_send_command_error
    - imap_status_get
    - event_add_str
    - imap_status_parse_items
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_status(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-close.c:15,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-close.c:18,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/imap/cmd-close.c:20,1
    - Dst: imap_expunge
      Src: /src/dovecot/src/imap/cmd-close.c:21,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-close.c:22,1
    - Dst: client_send_untagged_storage_error
      Src: /src/dovecot/src/imap/cmd-close.c:24,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-close.c:26,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/imap/cmd-close.c:30,1
    - Dst: client_send_untagged_storage_error
      Src: /src/dovecot/src/imap/cmd-close.c:31,1
    - Dst: imap_client_close_mailbox
      Src: /src/dovecot/src/imap/cmd-close.c:33,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-close.c:34,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 36
    functionName: cmd_close
    functionSourceFile: /src/dovecot/src/imap/cmd-close.c
    functionUses: 0
    functionsReached:
    - client_verify_open_mailbox
    - mailbox_get_storage
    - mailbox_get_last_error
    - t_strdup_printf
    - client_send_tagline
    - mailbox_sync
    - imap_client_close_mailbox
    - imap_expunge
    - i_assert
    - client_send_untagged_storage_error
    linkageType: ''
    returnType: bool
    signature: bool cmd_close(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - items
    argTypes:
    - struct imap_status_items*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: imap_status_items_is_empty
    functionSourceFile: /src/dovecot/src/imap/imap-status.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_status_items_is_empty(const struct imap_status_items *items)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/imap/imap-master-client.c:57,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/imap/imap-master-client.c:58,1
    - Dst: i_free
      Src: /src/dovecot/src/imap/imap-master-client.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 60
    functionName: imap_master_client_destroy
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - i_free
    - connection_deinit
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void imap_master_client_destroy(struct connection *conn)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-master-client.c:73,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-master-client.c:74,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-master-client.c:75,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/imap/imap-master-client.c:76,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/imap/imap-master-client.c:77,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/imap/imap-master-client.c:78,1
    - Dst: strchr
      Src: /src/dovecot/src/imap/imap-master-client.c:92,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/imap/imap-master-client.c:94,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:99,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/imap/imap-master-client.c:100,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:101,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:105,1
    - Dst: net_str2port
      Src: /src/dovecot/src/imap/imap-master-client.c:106,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:107,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:111,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/imap/imap-master-client.c:112,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:113,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:117,1
    - Dst: net_str2port
      Src: /src/dovecot/src/imap/imap-master-client.c:118,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:119,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:123,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:124,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:125,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:129,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:130,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:131,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:135,1
    - Dst: str_to_ino
      Src: /src/dovecot/src/imap/imap-master-client.c:136,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:137,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:141,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:143,1
    - Dst: str_to_time
      Src: /src/dovecot/src/imap/imap-master-client.c:144,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:145,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:149,1
    - Dst: str_to_timeval
      Src: /src/dovecot/src/imap/imap-master-client.c:150,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:151,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:155,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:157,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap/imap-master-client.c:159,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:160,1
    - Dst: base64_decode
      Src: /src/dovecot/src/imap/imap-master-client.c:161,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-master-client.c:161,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:163,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:167,1
    - Dst: base64_decode
      Src: /src/dovecot/src/imap/imap-master-client.c:168,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-master-client.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:170,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:174,1
    - Dst: base64_decode
      Src: /src/dovecot/src/imap/imap-master-client.c:175,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-master-client.c:175,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:177,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:181,1
    - Dst: t_strdup
      Src: /src/dovecot/src/imap/imap-master-client.c:182,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:185,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:187,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:188,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:189,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:193,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/imap/imap-master-client.c:194,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:195,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:199,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:200,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:201,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:205,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/imap/imap-master-client.c:206,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:207,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:211,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:212,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:213,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:217,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:218,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:219,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:223,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:224,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:225,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:229,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:230,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:231,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:235,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/imap-master-client.c:236,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:237,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:241,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/imap/imap-master-client.c:242,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:243,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-master-client.c:247,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/imap/imap-master-client.c:248,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:249,1
    - Dst: makedev
      Src: /src/dovecot/src/imap/imap-master-client.c:257,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 182
    argCount: 7
    argNames:
    - args
    - pool
    - create_flags
    - input_r
    - stats_r
    - master_input_r
    - error_r
    argTypes:
    - char**
    - pool_t
    - enum client_create_flags*
    - struct mail_storage_service_input*
    - struct imap_logout_stats*
    - struct imap_master_input*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 260
    functionName: imap_master_client_parse_input
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - strchr
    - buffer_create_dynamic
    - strlen
    - t_strdup_printf
    - str_to_uint
    - t_strdup
    - net_addr2ip
    - t_strsplit_tabescaped
    - str_to_uoff
    - net_str2port
    - i_zero
    - str_to_ino
    - makedev
    - str_to_time
    - str_to_timeval
    - strcmp
    - base64_decode
    - t_strdup_until
    - str_to_uint64
    linkageType: ''
    returnType: int
    signature: "int imap_master_client_parse_input(const char *const *args, pool_t
      pool,\n\t\t\t       enum client_create_flags *create_flags,\n\t\t\t       struct
      mail_storage_service_input *input_r,\n\t\t\t       struct imap_logout_stats
      *stats_r,\n\t\t\t       struct imap_master_input *master_input_r,\n\t\t\t       const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/imap/imap-master-client.c:271,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:272,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/imap/imap-master-client.c:276,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:277,1
    - Dst: major
      Src: /src/dovecot/src/imap/imap-master-client.c:280,1
    - Dst: minor
      Src: /src/dovecot/src/imap/imap-master-client.c:281,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-master-client.c:281,1
    - Dst: major
      Src: /src/dovecot/src/imap/imap-master-client.c:282,1
    - Dst: minor
      Src: /src/dovecot/src/imap/imap-master-client.c:283,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-master-client.c:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - master_input
    - fd_client
    - error_r
    argTypes:
    - struct imap_master_input*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 288
    functionName: imap_master_client_verify
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_strdup_printf
    - fstat
    - CMP_DEV_T
    - minor
    - major
    linkageType: ''
    returnType: int
    signature: "int imap_master_client_verify(const struct imap_master_input *master_input,\n\t\t\t\t
      \    int fd_client, const char **error_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: imap_master_client_parse_input
      Src: /src/dovecot/src/imap/imap-master-client.c:303,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-master-client.c:305,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/imap-master-client.c:306,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:306,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/imap-master-client.c:308,1
    - Dst: imap_master_client_verify
      Src: /src/dovecot/src/imap/imap-master-client.c:311,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-master-client.c:312,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/imap-master-client.c:313,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:313,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/imap-master-client.c:315,1
    - Dst: process_title_set
      Src: /src/dovecot/src/imap/imap-master-client.c:319,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/imap/imap-master-client.c:323,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-master-client.c:326,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/imap-master-client.c:329,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:329,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/imap-master-client.c:331,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/imap/imap-master-client.c:337,1
    - Dst: event_create
      Src: /src/dovecot/src/imap/imap-master-client.c:339,1
    - Dst: event_set_name
      Src: /src/dovecot/src/imap/imap-master-client.c:340,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/imap-master-client.c:341,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-master-client.c:348,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-master-client.c:351,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-master-client.c:354,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/imap-master-client.c:362,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap/imap-master-client.c:363,1
    - Dst: client_add_istream_prefix
      Src: /src/dovecot/src/imap/imap-master-client.c:366,1
    - Dst: client_create_finish_io
      Src: /src/dovecot/src/imap/imap-master-client.c:371,1
    - Dst: client_create_finish
      Src: /src/dovecot/src/imap/imap-master-client.c:372,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-master-client.c:373,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-master-client.c:374,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/imap-master-client.c:375,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-master-client.c:376,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-master-client.c:382,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/imap/imap-master-client.c:387,1
    - Dst: imap_state_import_internal
      Src: /src/dovecot/src/imap/imap-master-client.c:389,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/imap/imap-master-client.c:391,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:396,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-master-client.c:397,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-master-client.c:398,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/imap-master-client.c:399,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-master-client.c:400,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/imap-master-client.c:403,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-master-client.c:404,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-master-client.c:412,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-master-client.c:413,1
    - Dst: imap_state_import_idle_cmd_tag
      Src: /src/dovecot/src/imap/imap-master-client.c:417,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-master-client.c:419,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/imap-master-client.c:422,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-master-client.c:426,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap/imap-master-client.c:428,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-master-client.c:428,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/imap/imap-master-client.c:429,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/imap-master-client.c:432,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 82
    argCount: 4
    argNames:
    - conn
    - args
    - fd_client
    - pool
    argTypes:
    - struct connection*
    - char**
    - int
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 435
    functionName: imap_master_client_input_args
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - event_unref
    - timeval_diff_usecs
    - event_set_name
    - t_strdup_printf
    - event_reason_end
    - str_sanitize
    - client_add_istream_prefix
    - process_title_set
    - event_add_int
    - client_destroy
    - i_close_fd
    - imap_state_import_internal
    - o_stream_nsend
    - o_stream_flush
    - event_add_str
    - imap_master_client_verify
    - event_create
    - imap_refresh_proctitle
    - client_create_finish
    - event_reason_begin
    - e_error
    - client_create_from_input
    - mailbox_get_vname
    - o_stream_nsend_str
    - imap_master_client_parse_input
    - imap_state_import_idle_cmd_tag
    - e_debug
    - io_set_pending
    - client_create_finish_io
    linkageType: ''
    returnType: int
    signature: "int imap_master_client_input_args(struct connection *conn, const char
      *const *args,\n\t\t\t      int fd_client, pool_t pool)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/imap/imap-master-client.c:445,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap/imap-master-client.c:445,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/imap/imap-master-client.c:451,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-master-client.c:453,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-master-client.c:458,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap/imap-master-client.c:460,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/imap/imap-master-client.c:461,1
    - Dst: imap_master_client_input_args
      Src: /src/dovecot/src/imap/imap-master-client.c:462,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-master-client.c:464,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 466
    functionName: imap_master_client_input_line
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_strsplit_tabescaped
    - e_debug
    - p_strsplit_tabescaped
    - pool_unref
    - e_error
    - i_stream_unix_get_read_fd
    - imap_master_client_input_args
    - connection_handshake_args_default
    linkageType: ''
    returnType: int
    signature: int imap_master_client_input_line(struct connection *conn, const char
      *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-master-client.c:470,1
    - Dst: struct connection*::v::destroy
      Src: /src/dovecot/src/imap/imap-master-client.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 476
    functionName: imap_master_client_idle_timeout
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - struct connection*::v::destroy
    linkageType: ''
    returnType: void
    signature: void imap_master_client_idle_timeout(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/imap/imap-master-client.c:482,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/imap/imap-master-client.c:484,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/imap/imap-master-client.c:488,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/imap-master-client.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 491
    functionName: imap_master_client_create
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - imap_refresh_proctitle
    - i_new
    - i_stream_unix_set_read_fd
    - connection_init_server
    linkageType: ''
    returnType: void
    signature: void imap_master_client_create(int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: process_title_set
      Src: /src/dovecot/src/imap/imap-master-client.c:519,1
    - Dst: process_title_set
      Src: /src/dovecot/src/imap/imap-master-client.c:522,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-master-client.c:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 526
    functionName: imap_master_clients_refresh_proctitle
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - process_title_set
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: bool imap_master_clients_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/imap/imap-master-client.c:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: imap_master_clients_init
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void imap_master_clients_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/imap/imap-master-client.c:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: imap_master_clients_deinit
    functionSourceFile: /src/dovecot/src/imap/imap-master-client.c
    functionUses: 0
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void imap_master_clients_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-capability.c:9,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-capability.c:9,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-capability.c:10,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-capability.c:12,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 14
    functionName: cmd_capability
    functionSourceFile: /src/dovecot/src/imap/cmd-capability.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - t_strconcat
    - str_c
    - client_send_tagline
    linkageType: ''
    returnType: bool
    signature: bool cmd_capability(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_list_full
      Src: /src/dovecot/src/imap/cmd-lsub.c:8,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 9
    functionName: cmd_lsub
    functionSourceFile: /src/dovecot/src/imap/cmd-lsub.c
    functionUses: 0
    functionsReached:
    - cmd_list_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_lsub(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: imap_refresh_proctitle
    functionSourceFile: /src/dovecot/src/imap/test-imap-client-hibernate.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: imap_refresh_proctitle_delayed
    functionSourceFile: /src/dovecot/src/imap/test-imap-client-hibernate.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_refresh_proctitle_delayed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_storage_service_input*
    - struct imap_logout_stats*
    - int
    - int
    - enum client_create_flags
    - struct client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: client_create_from_input
    functionSourceFile: /src/dovecot/src/imap/test-imap-client-hibernate.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int client_create_from_input(const struct mail_storage_service_input
      *input ATTR_UNUSED,\n\t\t\t     const struct imap_logout_stats *stats ATTR_UNUSED,\n\t\t\t
      \    int fd_in ATTR_UNUSED, int fd_out ATTR_UNUSED,\n\t\t\t     enum client_create_flags
      flags ATTR_UNUSED,\n\t\t\t     struct client **client_r ATTR_UNUSED,\n\t\t\t
      \    const char **error_r ATTR_UNUSED)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:53,1
    - Dst: net_accept
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:55,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:56,1
    - Dst: i_stream_create_unix
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:57,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:58,1
    - Dst: write
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:62,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:62,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:62,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:63,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:67,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:68,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:69,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:70,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:71,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:73,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:74,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:75,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:77,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:78,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:79,1
    - Dst: write
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:82,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:82,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:82,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:83,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:87,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:88,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:89,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:90,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:93,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:94,1
    - Dst: write
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:96,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:97,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:101,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:102,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:104,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:105,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:106,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:106,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:108,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:108,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:109,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:110,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:111,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:113,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:114,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:114,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:116,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:118,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:118,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:119,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:121,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:138,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:140,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:142,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:143,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:144,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:147,1
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:149,1
    - Dst: master_service_deinit_forked
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:150,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:151,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 58
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_imap_client_hibernate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 152
    functionName: imap_hibernate_server
    functionSourceFile: /src/dovecot/src/imap/test-imap-client-hibernate.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_deinit
    - strlen
    - write
    - test_assert
    - master_service_deinit_forked
    - t_strsplit_tabescaped
    - i_close_fd
    - client_destroy
    - i_fatal
    - i_stream_read_next_line
    - i_stream_get_error
    - net_accept
    - test_assert_strcmp
    - i_stream_unix_get_read_fd
    - i_assert
    - N_ELEMENTS
    - i_stream_create_unix
    - strcmp
    - str_begins_with
    - i_set_failure_prefix
    - test_has_failed
    - i_stream_unix_set_read_fd
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int imap_hibernate_server(struct test_imap_client_hibernate *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 158
    functionName: mailbox_notify_callback
    functionSourceFile: /src/dovecot/src/imap/test-imap-client-hibernate.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_notify_callback(struct mailbox *box ATTR_UNUSED,\n\t\t\tstruct
      client *client ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:177,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:177,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:178,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:178,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:189,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:189,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:190,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:190,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:191,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:191,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:193,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:194,1
    - Dst: event_create
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:196,1
    - Dst: dup
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:197,1
    - Dst: client_create
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:198,1
    - Dst: test_begin
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:204,1
    - Dst: imap_client_hibernate
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:204,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:205,1
    - Dst: test_end
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:206,1
    - Dst: client_command_alloc
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:208,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:211,1
    - Dst: test_begin
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:214,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:215,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:216,1
    - Dst: imap_client_hibernate
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:216,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:217,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:218,1
    - Dst: strstr
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:218,1
    - Dst: test_end
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:219,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:222,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:223,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:224,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:226,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:227,1
    - Dst: test_begin
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:230,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:232,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:234,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:235,1
    - Dst: imap_client_hibernate
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:235,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:236,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:237,1
    - Dst: strstr
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:237,1
    - Dst: test_end
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:238,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:241,1
    - Dst: memset
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:246,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:247,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:247,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:248,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:248,1
    - Dst: test_begin
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:252,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:255,1
    - Dst: mailbox_notify_changes
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:258,1
    - Dst: test_assert
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:259,1
    - Dst: imap_client_hibernate
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:259,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:260,1
    - Dst: test_end
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:262,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:264,1
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 266
    functionName: test_imap_client_hibernate
    functionSourceFile: /src/dovecot/src/imap/test-imap-client-hibernate.c
    functionUses: 0
    functionsReached:
    - net_listen_unix
    - event_unref
    - mail_storage_service_lookup_next
    - dup
    - mail_storage_service_deinit
    - t_strdup_printf
    - mailbox_alloc
    - test_assert
    - mailbox_create
    - imap_client_hibernate
    - test_expect_no_more_errors
    - net_addr2ip
    - i_close_fd
    - i_fatal
    - test_expect_error_string
    - mail_storage_service_init
    - test_end
    - test_dir_get
    - mailbox_notify_changes
    - client_create
    - i_zero
    - event_create
    - test_subprocess_fork
    - test_assert_strcmp
    - memset
    - mailbox_open
    - fd_set_nonblock
    - test_subprocess_kill_all
    - client_command_alloc
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_client_hibernate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:297,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:302,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:304,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:306,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:307,1
    - Dst: test_run
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:313,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/imap/test-imap-client-hibernate.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 317
    functionName: main
    functionSourceFile: /src/dovecot/src/imap/test-imap-client-hibernate.c
    functionUses: 0
    functionsReached:
    - master_service_init
    - test_dir_init
    - test_run
    - master_service_init_finish
    - test_subprocesses_init
    - settings_info_register
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-list.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rflag
    argTypes:
    - struct imap_list_return_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 12
    functionName: imap_list_return_flag_register
    functionSourceFile: /src/dovecot/src/imap/imap-list.c
    functionUses: 0
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void imap_list_return_flag_register(const struct imap_list_return_flag
      *rflag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/imap/imap-list.c:18,1
    - Dst: array_delete
      Src: /src/dovecot/src/imap/imap-list.c:19,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-list.c:23,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rflag
    argTypes:
    - struct imap_list_return_flag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 25
    functionName: imap_list_return_flag_unregister
    functionSourceFile: /src/dovecot/src/imap/imap-list.c
    functionUses: 0
    functionsReached:
    - i_panic
    - array_delete
    - array_lsearch_ptr_idx
    linkageType: ''
    returnType: void
    signature: void imap_list_return_flag_unregister(const struct imap_list_return_flag
      *rflag)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-list.c:35,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-list.c:37,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/imap-list.c:48,1
    - Dst: parse
      Src: /src/dovecot/src/imap/imap-list.c:50,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 5
    argNames:
    - cmd
    - flag
    - args
    - rflag_r
    - context_r
    argTypes:
    - struct client_command_context*
    - char*
    - struct imap_arg**
    - struct imap_list_return_flag**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 56
    functionName: imap_list_return_flag_parse
    functionSourceFile: /src/dovecot/src/imap/imap-list.c
    functionUses: 0
    functionsReached:
    - array_get
    - imap_arg_get_list
    - strcasecmp
    - parse
    linkageType: ''
    returnType: int
    signature: "int imap_list_return_flag_parse(struct client_command_context *cmd,\n\t\t\t\tconst
      char *flag, const struct imap_arg **args,\n\t\t\t\tconst struct imap_list_return_flag
      **rflag_r,\n\t\t\t\tvoid **context_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct imap_list_return_flag*::send
      Src: /src/dovecot/src/imap/imap-list.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cmd
    - rflag
    - context
    - params
    argTypes:
    - struct client_command_context*
    - struct imap_list_return_flag*
    - void*
    - struct imap_list_return_flag_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: imap_list_return_flag_send
    functionSourceFile: /src/dovecot/src/imap/imap-list.c
    functionUses: 0
    functionsReached:
    - struct imap_list_return_flag*::send
    linkageType: ''
    returnType: void
    signature: "void imap_list_return_flag_send(\n\tstruct client_command_context
      *cmd,\n\tconst struct imap_list_return_flag *rflag, void *context,\n\tconst
      struct imap_list_return_flag_params *params)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-list.c:68,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-list.c:71,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-list.c:74,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-list.c:76,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-list.c:79,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-list.c:81,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-list.c:83,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-list.c:86,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-list.c:88,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-list.c:90,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-list.c:92,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-list.c:92,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - str
    - flags
    argTypes:
    - string_t*
    - enum mailbox_info_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 94
    functionName: imap_mailbox_flags2str
    functionSourceFile: /src/dovecot/src/imap/imap-list.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_truncate
    - str_len
    linkageType: ''
    returnType: bool
    signature: bool imap_mailbox_flags2str(string_t *str, enum mailbox_info_flags
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-list.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: imap_list_init
    functionSourceFile: /src/dovecot/src/imap/imap-list.c
    functionUses: 0
    functionsReached:
    - i_array_init
    linkageType: ''
    returnType: void
    signature: void imap_list_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-list.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: imap_list_deinit
    functionSourceFile: /src/dovecot/src/imap/imap-list.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void imap_list_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_subscribe_full
      Src: /src/dovecot/src/imap/cmd-unsubscribe.c:8,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 9
    functionName: cmd_unsubscribe
    functionSourceFile: /src/dovecot/src/imap/cmd-unsubscribe.c
    functionUses: 0
    functionsReached:
    - cmd_subscribe_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_unsubscribe(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_notify_flush
      Src: /src/dovecot/src/imap/cmd-noop.c:12,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-noop.c:14,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 15
    functionName: cmd_noop
    functionSourceFile: /src/dovecot/src/imap/cmd-noop.c
    functionUses: 0
    functionsReached:
    - imap_notify_flush
    - cmd_sync
    linkageType: ''
    returnType: bool
    signature: bool cmd_noop(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_search_update_lookup
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:12,1
    - Dst: imap_search_update_free
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:16,1
    - Dst: array_delete
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:17,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - client
    - tag
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 19
    functionName: client_search_update_cancel
    functionSourceFile: /src/dovecot/src/imap/cmd-cancelupdate.c
    functionUses: 0
    functionsReached:
    - array_delete
    - client_search_update_lookup
    - imap_search_update_free
    linkageType: ''
    returnType: bool
    signature: bool client_search_update_cancel(struct client *client, const char
      *tag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:27,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:31,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:32,1
    - Dst: imap_arg_get_quoted
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:36,1
    - Dst: client_search_update_cancel
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:37,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:38,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-cancelupdate.c:43,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 45
    functionName: cmd_cancelupdate
    functionSourceFile: /src/dovecot/src/imap/cmd-cancelupdate.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_quoted
    - client_search_update_cancel
    - client_send_tagline
    - client_read_args
    - client_send_command_error
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: bool cmd_cancelupdate(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-enable.c:14,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-enable.c:17,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-enable.c:18,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-enable.c:19,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-enable.c:20,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-enable.c:21,1
    - Dst: imap_feature_lookup
      Src: /src/dovecot/src/imap/cmd-enable.c:24,1
    - Dst: client_enable
      Src: /src/dovecot/src/imap/cmd-enable.c:25,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-enable.c:26,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-enable.c:27,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/cmd-enable.c:27,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-enable.c:30,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-enable.c:31,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-enable.c:31,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-enable.c:32,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 7
    functionDepth: 2
    functionLinenumber: 7
    functionLinenumberEnd: 34
    functionName: cmd_enable
    functionSourceFile: /src/dovecot/src/imap/cmd-enable.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_atom
    - str_c
    - t_str_new
    - t_str_ucase
    - str_append_c
    - imap_feature_lookup
    - str_len
    - client_send_tagline
    - client_read_args
    - client_send_command_error
    - client_send_line
    - str_append
    - client_enable
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: bool cmd_enable(struct client_command_context *cmd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-notify.c:25,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-notify.c:27,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/imap-notify.c:28,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-notify.c:31,1
    - Dst: imap_mailbox_flags2str
      Src: /src/dovecot/src/imap/imap-notify.c:32,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-notify.c:33,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-notify.c:35,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-notify.c:36,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-notify.c:37,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-notify.c:41,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/imap-notify.c:42,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-notify.c:43,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-notify.c:44,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/imap-notify.c:46,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-notify.c:50,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/imap-notify.c:51,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-notify.c:52,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-notify.c:55,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-notify.c:57,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/imap-notify.c:58,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-notify.c:59,1
    - Dst: client_send_line_next
      Src: /src/dovecot/src/imap/imap-notify.c:61,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-notify.c:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - notify_ns
    - rec
    - flags
    argTypes:
    - struct imap_notify_namespace*
    - struct mailbox_list_notify_rec*
    - enum mailbox_info_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 62
    functionName: imap_notify_list
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mail_namespace_get_sep
    - t_str_new
    - client_has_enabled
    - str_append_c
    - str_c
    - imap_utf8_to_utf7
    - imap_append_astring
    - imap_mailbox_flags2str
    - str_truncate
    - str_append
    - client_send_line_next
    linkageType: ''
    returnType: int
    signature: "int imap_notify_list(struct imap_notify_namespace *notify_ns,\n\t\t\t
      \   const struct mailbox_list_notify_rec *rec,\n\t\t\t    enum mailbox_info_flags
      flags)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-notify.c:74,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-notify.c:75,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/imap-notify.c:78,1
    - Dst: imap_status_items_is_empty
      Src: /src/dovecot/src/imap/imap-notify.c:93,1
    - Dst: imap_status_get_result
      Src: /src/dovecot/src/imap/imap-notify.c:95,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/imap-notify.c:99,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-notify.c:103,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-notify.c:107,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/imap-notify.c:108,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-notify.c:109,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-notify.c:110,1
    - Dst: imap_status_send
      Src: /src/dovecot/src/imap/imap-notify.c:112,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-notify.c:114,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - notify_ns
    - rec
    argTypes:
    - struct imap_notify_namespace*
    - struct mailbox_list_notify_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 116
    functionName: imap_notify_status
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_panic
    - t_str_new
    - client_has_enabled
    - mailbox_get_last_error
    - str_c
    - mailbox_free
    - imap_status_get_result
    - imap_utf8_to_utf7
    - imap_status_send
    - mailbox_alloc
    - imap_status_items_is_empty
    linkageType: ''
    returnType: int
    signature: "int imap_notify_status(struct imap_notify_namespace *notify_ns,\n\t\t\t
      \     const struct mailbox_list_notify_rec *rec)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_mailbox
      Src: /src/dovecot/src/imap/imap-notify.c:126,1
    - Dst: imap_notify_list
      Src: /src/dovecot/src/imap/imap-notify.c:129,1
    - Dst: imap_notify_list
      Src: /src/dovecot/src/imap/imap-notify.c:133,1
    - Dst: mailbox_list_mailbox
      Src: /src/dovecot/src/imap/imap-notify.c:137,1
    - Dst: imap_notify_list
      Src: /src/dovecot/src/imap/imap-notify.c:140,1
    - Dst: mailbox_list_mailbox
      Src: /src/dovecot/src/imap/imap-notify.c:144,1
    - Dst: imap_notify_list
      Src: /src/dovecot/src/imap/imap-notify.c:147,1
    - Dst: mailbox_list_mailbox
      Src: /src/dovecot/src/imap/imap-notify.c:152,1
    - Dst: imap_notify_list
      Src: /src/dovecot/src/imap/imap-notify.c:155,1
    - Dst: imap_notify_status
      Src: /src/dovecot/src/imap/imap-notify.c:163,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 2
    argNames:
    - notify_ns
    - rec
    argTypes:
    - struct imap_notify_namespace*
    - struct mailbox_list_notify_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 167
    functionName: imap_notify_next
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - imap_notify_list
    - imap_notify_status
    - mailbox_list_mailbox
    linkageType: ''
    returnType: int
    signature: "int imap_notify_next(struct imap_notify_namespace *notify_ns,\n\t\t
      const struct mailbox_list_notify_rec *rec)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_equals
      Src: /src/dovecot/src/imap/imap-notify.c:192,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 3
    argNames:
    - notify_ns
    - notify_boxes
    - rec
    argTypes:
    - struct imap_notify_namespace*
    - struct imap_notify_mailboxes*
    - struct mailbox_list_notify_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 215
    functionName: imap_notify_match_event
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_equals
    linkageType: ''
    returnType: bool
    signature: "bool imap_notify_match_event(struct imap_notify_namespace *notify_ns,\n\t\t\tconst
      struct imap_notify_mailboxes *notify_boxes,\n\t\t\tconst struct mailbox_list_notify_rec
      *rec)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/imap-notify.c:228,1
    - Dst: mailbox_is_subscribed
      Src: /src/dovecot/src/imap/imap-notify.c:229,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-notify.c:230,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/imap-notify.c:233,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/imap/imap-notify.c:234,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap/imap-notify.c:241,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/imap/imap-notify.c:247,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-notify.c:248,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - notify_ns
    - notify_boxes
    - vname
    argTypes:
    - struct imap_notify_namespace*
    - struct imap_notify_mailboxes*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 254
    functionName: imap_notify_match_mailbox
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_get_sep
    - mailbox_free
    - array_foreach_elem
    - str_begins
    - mailbox_alloc
    - mailbox_is_subscribed
    linkageType: ''
    returnType: bool
    signature: "bool imap_notify_match_mailbox(struct imap_notify_namespace *notify_ns,\n\t\t\t
      \      const struct imap_notify_mailboxes *notify_boxes,\n\t\t\t       const
      char *vname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/imap-notify.c:262,1
    - Dst: imap_notify_match_event
      Src: /src/dovecot/src/imap/imap-notify.c:263,1
    - Dst: imap_notify_match_mailbox
      Src: /src/dovecot/src/imap/imap-notify.c:264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - notify_ns
    - rec
    argTypes:
    - struct imap_notify_namespace*
    - struct mailbox_list_notify_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 268
    functionName: imap_notify_match
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - imap_notify_match_event
    - imap_notify_match_mailbox
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: "bool imap_notify_match(struct imap_notify_namespace *notify_ns,\n\t\t
      \ const struct mailbox_list_notify_rec *rec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_notify_next
      Src: /src/dovecot/src/imap/imap-notify.c:278,1
    - Dst: imap_notify_match
      Src: /src/dovecot/src/imap/imap-notify.c:279,1
    - Dst: imap_notify_next
      Src: /src/dovecot/src/imap/imap-notify.c:280,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - notify_ns
    argTypes:
    - struct imap_notify_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 270
    functionDepth: 4
    functionLinenumber: 270
    functionLinenumberEnd: 284
    functionName: imap_client_notify_ns
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - imap_notify_match
    - mailbox_list_notify_next
    - imap_notify_next
    linkageType: ''
    returnType: int
    signature: int imap_client_notify_ns(struct imap_notify_namespace *notify_ns)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_more_no_lock_update
      Src: /src/dovecot/src/imap/imap-notify.c:301,1
    - Dst: imap_fetch_end
      Src: /src/dovecot/src/imap/imap-notify.c:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 292
    functionDepth: 5
    functionLinenumber: 292
    functionLinenumberEnd: 307
    functionName: imap_client_notify_selected
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - imap_fetch_more_no_lock_update
    - imap_fetch_end
    linkageType: ''
    returnType: int
    signature: int imap_client_notify_selected(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/imap/imap-notify.c:314,1
    - Dst: imap_client_notify_selected
      Src: /src/dovecot/src/imap/imap-notify.c:319,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/imap-notify.c:326,1
    - Dst: imap_client_notify_ns
      Src: /src/dovecot/src/imap/imap-notify.c:329,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-notify.c:334,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/imap/imap-notify.c:337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 309
    functionDepth: 6
    functionLinenumber: 309
    functionLinenumberEnd: 339
    functionName: imap_client_notify_more
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - event_reason_begin
    - event_reason_end
    - client_send_line
    - array_foreach_modifiable
    - imap_client_notify_ns
    - imap_client_notify_selected
    linkageType: ''
    returnType: int
    signature: int imap_client_notify_more(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-notify.c:348,1
    - Dst: imap_client_notify_more
      Src: /src/dovecot/src/imap/imap-notify.c:355,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-notify.c:358,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/imap-notify.c:360,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-notify.c:362,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/imap/imap-notify.c:363,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-notify.c:364,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-notify.c:365,1
    - Dst: imap_fetch_begin
      Src: /src/dovecot/src/imap/imap-notify.c:369,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-notify.c:370,1
    - Dst: imap_client_notify_more
      Src: /src/dovecot/src/imap/imap-notify.c:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 341
    functionDepth: 7
    functionLinenumber: 341
    functionLinenumberEnd: 373
    functionName: imap_client_notify_newmails
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - imap_fetch_begin
    - seq_range_array_add_range
    - mail_search_build_add
    - p_array_init
    - imap_client_notify_more
    - mail_search_build_init
    - mailbox_get_open_status
    - mail_search_args_unref
    - i_assert
    linkageType: ''
    returnType: int
    signature: int imap_client_notify_newmails(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 379
    functionName: imap_client_notify_finished
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_client_notify_finished(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/imap/imap-notify.c:383,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/imap-notify.c:384,1
    - Dst: imap_client_notify_ns
      Src: /src/dovecot/src/imap/imap-notify.c:385,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/imap-notify.c:386,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/imap/imap-notify.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - notify_ns
    argTypes:
    - struct imap_notify_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 381
    functionDepth: 5
    functionLinenumber: 381
    functionLinenumberEnd: 388
    functionName: notify_callback
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - o_stream_cork
    - event_reason_begin
    - event_reason_end
    - imap_client_notify_ns
    linkageType: ''
    returnType: void
    signature: void notify_callback(struct imap_notify_namespace *notify_ns)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - events
    argTypes:
    - enum imap_notify_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 418
    functionName: imap_events_to_notify
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mailbox_list_notify_event
    signature: enum mailbox_list_notify_event imap_events_to_notify(enum imap_notify_event
      events)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-notify.c:425,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-notify.c:426,1
    - Dst: client_command_alloc
      Src: /src/dovecot/src/imap/imap-notify.c:429,1
    - Dst: client_command_init_finished
      Src: /src/dovecot/src/imap/imap-notify.c:433,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/imap-notify.c:437,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-notify.c:438,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/imap-notify.c:439,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - box
    - client
    argTypes:
    - struct mailbox*
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 440
    functionName: imap_notify_callback
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - cmd_sync_delayed
    - client_command_init_finished
    - i_assert
    - client_command_alloc
    - cmd_sync
    linkageType: ''
    returnType: void
    signature: void imap_notify_callback(struct mailbox *box, struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-notify.c:444,1
    - Dst: mailbox_notify_changes
      Src: /src/dovecot/src/imap/imap-notify.c:455,1
    - Dst: imap_notify_callback
      Src: /src/dovecot/src/imap/imap-notify.c:459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 460
    functionName: imap_notify_watch_selected_mailbox
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - imap_notify_callback
    - i_assert
    - mailbox_notify_changes
    linkageType: ''
    returnType: void
    signature: void imap_notify_watch_selected_mailbox(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/imap-notify.c:464,1
    - Dst: imap_notify_watch_selected_mailbox
      Src: /src/dovecot/src/imap/imap-notify.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 462
    functionDepth: 3
    functionLinenumber: 462
    functionLinenumberEnd: 466
    functionName: imap_notify_watch_timeout
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - imap_notify_watch_selected_mailbox
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_notify_watch_timeout(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-notify.c:477,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap/imap-notify.c:483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 485
    functionName: imap_client_notify_command_freed
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imap_client_notify_command_freed(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_notify_changes_stop
      Src: /src/dovecot/src/imap/imap-notify.c:496,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/imap-notify.c:499,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 500
    functionName: imap_client_notify_command_allocated
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_notify_changes_stop
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_client_notify_command_allocated(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/imap-notify.c:509,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/imap-notify.c:511,1
    - Dst: imap_events_to_notify
      Src: /src/dovecot/src/imap/imap-notify.c:513,1
    - Dst: mailbox_list_notify_init
      Src: /src/dovecot/src/imap/imap-notify.c:515,1
    - Dst: mailbox_list_notify_wait
      Src: /src/dovecot/src/imap/imap-notify.c:520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_notify_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 527
    functionName: imap_notify_begin
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_list_notify_wait
    - mailbox_list_notify_init
    - array_foreach
    - array_foreach_modifiable
    - imap_events_to_notify
    linkageType: ''
    returnType: int
    signature: int imap_notify_begin(struct imap_notify_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/imap-notify.c:536,1
    - Dst: mailbox_list_notify_deinit
      Src: /src/dovecot/src/imap/imap-notify.c:538,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/imap-notify.c:540,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/imap-notify.c:542,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-notify.c:543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct imap_notify_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 529
    functionDepth: 4
    functionLinenumber: 529
    functionLinenumberEnd: 544
    functionName: imap_notify_deinit
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - array_foreach_modifiable
    - timeout_remove
    - mailbox_list_notify_deinit
    - imap_fetch_free
    linkageType: ''
    returnType: void
    signature: void imap_notify_deinit(struct imap_notify_context **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/imap-notify.c:550,1
    - Dst: mailbox_list_notify_flush
      Src: /src/dovecot/src/imap/imap-notify.c:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_notify_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 554
    functionName: imap_notify_flush
    functionSourceFile: /src/dovecot/src/imap/imap-notify.c
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - mailbox_list_notify_flush
    linkageType: ''
    returnType: void
    signature: void imap_notify_flush(struct imap_notify_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: IS_STANDALONE
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STANDALONE()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - new_hook
    argTypes:
    - imap_client_created_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: imap_client_created_hook_set
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: imap_client_created_func_t
    signature: 'imap_client_created_func_t *

      imap_client_created_hook_set(imap_client_created_func_t *new_hook)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/main.c:60,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/main.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: imap_refresh_proctitle_callback
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - imap_refresh_proctitle
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_refresh_proctitle_callback(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_short
      Src: /src/dovecot/src/imap/main.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: imap_refresh_proctitle_delayed
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    linkageType: ''
    returnType: void
    signature: void imap_refresh_proctitle_delayed(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: imap_master_clients_refresh_proctitle
      Src: /src/dovecot/src/imap/main.c:81,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/main.c:85,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/main.c:86,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/main.c:89,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/main.c:93,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/main.c:95,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/main.c:96,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap/main.c:97,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/main.c:104,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/main.c:105,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/main.c:106,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/main.c:112,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/main.c:113,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/imap/main.c:114,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/main.c:115,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/main.c:118,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/main.c:121,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/main.c:124,1
    - Dst: process_title_set
      Src: /src/dovecot/src/imap/main.c:125,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/main.c:125,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 126
    functionName: imap_refresh_proctitle
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 3
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - str_len
    - net_ip2addr
    - o_stream_get_buffer_used_size
    - str_append
    - imap_master_clients_refresh_proctitle
    - process_title_set
    - o_stream_is_corked
    linkageType: ''
    returnType: void
    signature: void imap_refresh_proctitle(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/imap/main.c:133,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/main.c:134,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/main.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 136
    functionName: client_kill_idle
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_send_line
    - mail_storage_service_io_activate_user
    linkageType: ''
    returnType: void
    signature: void client_kill_idle(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/imap/main.c:141,1
    - Dst: I_MAX
      Src: /src/dovecot/src/imap/main.c:148,1
    - Dst: client_kill_idle
      Src: /src/dovecot/src/imap/main.c:150,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/main.c:152,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap/main.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 158
    functionName: imap_die
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - client_kill_idle
    - timeout_add
    - I_MAX
    - time
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_die(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/main.c:174,1
    - Dst: t_strndup
      Src: /src/dovecot/src/imap/main.c:182,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/main.c:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - data
    - len
    - input_r
    argTypes:
    - unsigned char*
    - size_t
    - struct imap_login_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 189
    functionName: client_parse_imap_login_request
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strlen
    - t_strndup
    linkageType: ''
    returnType: void
    signature: "void client_parse_imap_login_request(const unsigned char *data, size_t
      len,\n\t\t\t\tstruct imap_login_request *input_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/main.c:197,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/main.c:200,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/main.c:202,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/main.c:208,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/main.c:210,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/main.c:214,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/main.c:215,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/main.c:217,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/main.c:220,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/main.c:220,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/main.c:220,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/imap/main.c:221,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/main.c:224,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/imap/main.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - output
    - capability_string
    - preauth_username
    - request
    - event
    argTypes:
    - struct ostream*
    - char*
    - char*
    - struct imap_login_request*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 225
    functionName: client_send_login_reply
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_get_error
    - o_stream_cork
    - e_error
    - o_stream_nsend
    - str_append
    - o_stream_uncork_flush
    linkageType: ''
    returnType: void
    signature: "void client_send_login_reply(struct ostream *output, const char *capability_string,\n\t\t\tconst
      char *preauth_username,\n\t\t\tconst struct imap_login_request *request,\n\t\t\tstruct
      event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_ref
      Src: /src/dovecot/src/imap/main.c:234,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/main.c:235,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/imap/main.c:236,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/main.c:237,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/imap/main.c:238,1
    - Dst: client_continue_pending_input
      Src: /src/dovecot/src/imap/main.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 243
    functionName: client_add_input_finalize
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - o_stream_unref
    - o_stream_cork
    - o_stream_ref
    - client_continue_pending_input
    - client_handle_input
    linkageType: ''
    returnType: void
    signature: void client_add_input_finalize(struct client *client)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/imap/main.c:258,1
    - Dst: event_add_category
      Src: /src/dovecot/src/imap/main.c:259,1
    - Dst: event_add_fields
      Src: /src/dovecot/src/imap/main.c:260,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/imap/main.c:265,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/main.c:267,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/imap/main.c:269,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/main.c:271,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/imap/main.c:275,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/main.c:277,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/main.c:282,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/imap/main.c:284,1
    - Dst: settings_get
      Src: /src/dovecot/src/imap/main.c:286,1
    - Dst: settings_get
      Src: /src/dovecot/src/imap/main.c:288,1
    - Dst: settings_free
      Src: /src/dovecot/src/imap/main.c:290,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/imap/main.c:291,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/main.c:292,1
    - Dst: client_create
      Src: /src/dovecot/src/imap/main.c:298,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/imap/main.c:301,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/main.c:305,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 7
    argNames:
    - input
    - stats
    - fd_in
    - fd_out
    - flags
    - client_r
    - error_r
    argTypes:
    - struct mail_storage_service_input*
    - struct imap_logout_stats*
    - int
    - int
    - enum client_create_flags
    - struct client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 308
    functionName: client_create_from_input
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 1
    functionsReached:
    - event_create
    - mail_user_deinit
    - event_unref
    - mail_storage_service_lookup_next
    - p_strarray_dup
    - event_add_fields
    - event_add_ip
    - settings_free
    - restrict_access_allow_coredumps
    - settings_get
    - client_create
    - event_add_str
    - event_add_category
    - event_add_int
    linkageType: ''
    returnType: int
    signature: "int client_create_from_input(const struct mail_storage_service_input
      *input,\n\t\t\t     const struct imap_logout_stats *stats,\n\t\t\t     int fd_in,
      int fd_out,\n\t\t\t     enum client_create_flags flags,\n\t\t\t     struct client
      **client_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/main.c:317,1
    - Dst: getenv
      Src: /src/dovecot/src/imap/main.c:319,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap/main.c:320,1
    - Dst: getlogin
      Src: /src/dovecot/src/imap/main.c:321,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/main.c:323,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/imap/main.c:325,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/main.c:327,1
    - Dst: client_create_finish_io
      Src: /src/dovecot/src/imap/main.c:329,1
    - Dst: client_send_login_reply
      Src: /src/dovecot/src/imap/main.c:330,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/main.c:331,1
    - Dst: client_create_finish
      Src: /src/dovecot/src/imap/main.c:334,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/main.c:335,1
    - Dst: client_add_input_finalize
      Src: /src/dovecot/src/imap/main.c:336,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - username
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 338
    functionName: main_stdio_run
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - client_send_login_reply
    - client_create_finish
    - i_fatal
    - IS_STANDALONE
    - getenv
    - client_create_from_input
    - getlogin
    - client_create_finish_io
    - client_add_input_finalize
    linkageType: ''
    returnType: void
    signature: void main_stdio_run(const char *username)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/main.c:352,1
    - Dst: client_parse_imap_login_request
      Src: /src/dovecot/src/imap/main.c:366,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/imap/main.c:370,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/imap/main.c:374,1
    - Dst: client_send_login_reply
      Src: /src/dovecot/src/imap/main.c:375,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/imap/main.c:377,1
    - Dst: i_error
      Src: /src/dovecot/src/imap/main.c:379,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/imap/main.c:380,1
    - Dst: client_add_istream_prefix
      Src: /src/dovecot/src/imap/main.c:386,1
    - Dst: client_create_finish_io
      Src: /src/dovecot/src/imap/main.c:396,1
    - Dst: client_send_login_reply
      Src: /src/dovecot/src/imap/main.c:397,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/main.c:398,1
    - Dst: client_create_finish
      Src: /src/dovecot/src/imap/main.c:400,1
    - Dst: write_full
      Src: /src/dovecot/src/imap/main.c:401,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/main.c:402,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/main.c:405,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/main.c:408,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/main.c:409,1
    - Dst: client_add_input_finalize
      Src: /src/dovecot/src/imap/main.c:413,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 3
    argNames:
    - request
    - username
    - extra_fields
    argTypes:
    - struct login_server_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 415
    functionName: login_request_finished
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - client_add_input_finalize
    - i_error
    - client_send_login_reply
    - client_destroy
    - write_full
    - client_create_finish
    - strlen
    - e_error
    - client_create_from_input
    - client_parse_imap_login_request
    - o_stream_create_fd_autoclose
    - client_add_istream_prefix
    - client_create_finish_io
    - o_stream_destroy
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: "void login_request_finished(const struct login_server_request *request,\n\t\t
      \      const char *username, const char *const *extra_fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_parse_imap_login_request
      Src: /src/dovecot/src/imap/main.c:423,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/main.c:426,1
    - Dst: write
      Src: /src/dovecot/src/imap/main.c:428,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/main.c:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - request
    - errormsg
    argTypes:
    - struct login_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 417
    functionDepth: 2
    functionLinenumber: 417
    functionLinenumberEnd: 431
    functionName: login_request_failed
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - client_parse_imap_login_request
    - strlen
    - t_strdup_printf
    - write
    linkageType: ''
    returnType: void
    signature: "void login_request_failed(const struct login_server_request *request,\n\t\t\t\t
      const char *errormsg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap/main.c:441,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/imap/main.c:442,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/imap/main.c:443,1
    - Dst: client_kick
      Src: /src/dovecot/src/imap/main.c:444,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - user
    - conn_guid
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 447
    functionName: master_admin_cmd_kick_user
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - guid_128_is_empty
    - guid_128_cmp
    - client_kick
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_admin_cmd_kick_user(const char *user, const guid_128_t
      conn_guid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/main.c:458,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/imap/main.c:460,1
    - Dst: master_service_connection_get_type
      Src: /src/dovecot/src/imap/main.c:461,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/main.c:462,1
    - Dst: imap_master_client_create
      Src: /src/dovecot/src/imap/main.c:464,1
    - Dst: login_server_add
      Src: /src/dovecot/src/imap/main.c:467,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 468
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - master_service_connection_get_type
    - login_server_add
    - i_assert
    - imap_master_client_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/main.c:487,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap/main.c:492,1
    - Dst: getuid
      Src: /src/dovecot/src/imap/main.c:492,1
    - Dst: net_getpeername
      Src: /src/dovecot/src/imap/main.c:493,1
    - Dst: printf
      Src: /src/dovecot/src/imap/main.c:494,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap/main.c:499,1
    - Dst: master_service_init
      Src: /src/dovecot/src/imap/main.c:504,1
    - Dst: master_getopt
      Src: /src/dovecot/src/imap/main.c:506,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap/main.c:509,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/main.c:511,1
    - Dst: master_admin_clients_init
      Src: /src/dovecot/src/imap/main.c:526,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/imap/main.c:527,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/imap/main.c:533,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/main.c:535,1
    - Dst: commands_init
      Src: /src/dovecot/src/imap/main.c:538,1
    - Dst: imap_fetch_handlers_init
      Src: /src/dovecot/src/imap/main.c:539,1
    - Dst: imap_features_init
      Src: /src/dovecot/src/imap/main.c:540,1
    - Dst: clients_init
      Src: /src/dovecot/src/imap/main.c:541,1
    - Dst: imap_master_clients_init
      Src: /src/dovecot/src/imap/main.c:542,1
    - Dst: imap_list_init
      Src: /src/dovecot/src/imap/main.c:543,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap/main.c:545,1
    - Dst: getenv
      Src: /src/dovecot/src/imap/main.c:546,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/imap/main.c:549,1
    - Dst: t_abspath
      Src: /src/dovecot/src/imap/main.c:550,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/main.c:552,1
    - Dst: t_abspath
      Src: /src/dovecot/src/imap/main.c:557,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap/main.c:558,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/imap/main.c:563,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap/main.c:565,1
    - Dst: login_server_init
      Src: /src/dovecot/src/imap/main.c:566,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/imap/main.c:569,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/imap/main.c:571,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/imap/main.c:577,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap/main.c:579,1
    - Dst: main_stdio_run
      Src: /src/dovecot/src/imap/main.c:581,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 59
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 583
    functionName: main
    functionSourceFile: /src/dovecot/src/imap/main.c
    functionUses: 0
    functionsReached:
    - master_service_settings_read
    - imap_list_init
    - IS_STANDALONE
    - str_to_uint
    - commands_init
    - master_service_init
    - t_abspath
    - net_getpeername
    - printf
    - i_fatal
    - imap_fetch_handlers_init
    - main_stdio_run
    - master_service_init_finish
    - mail_storage_service_init
    - master_getopt
    - i_zero
    - master_admin_clients_init
    - imap_master_clients_init
    - master_service_set_die_callback
    - login_server_init
    - imap_features_init
    - clients_init
    - getuid
    - master_service_get_client_limit
    - getenv
    - io_loop_set_running
    - master_service_get_service_settings
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-logout.c:12,1
    - Dst: imap_client_close_mailbox
      Src: /src/dovecot/src/imap/cmd-logout.c:18,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-logout.c:21,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/cmd-logout.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 24
    functionName: cmd_logout
    functionSourceFile: /src/dovecot/src/imap/cmd-logout.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - client_disconnect
    - client_send_tagline
    - imap_client_close_mailbox
    linkageType: ''
    returnType: bool
    signature: bool cmd_logout(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - no1
    - no2
    argTypes:
    - struct namespace_order*
    - struct namespace_order*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: namespace_order_cmp
    functionSourceFile: /src/dovecot/src/imap/cmd-namespace.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int namespace_order_cmp(const struct namespace_order *no1,\n\t\t\t
      \      const struct namespace_order *no2)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/cmd-namespace.c:40,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/cmd-namespace.c:45,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/cmd-namespace.c:52,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-namespace.c:53,1
    - Dst: array_sort
      Src: /src/dovecot/src/imap/cmd-namespace.c:56,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-namespace.c:58,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:59,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/cmd-namespace.c:60,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/cmd-namespace.c:64,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:65,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-namespace.c:68,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/cmd-namespace.c:69,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/cmd-namespace.c:70,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:73,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/imap/cmd-namespace.c:76,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-namespace.c:77,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:79,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:80,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-namespace.c:81,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:83,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 4
    argNames:
    - ns
    - type
    - str
    - utf8
    argTypes:
    - struct mail_namespace*
    - enum mail_namespace_type
    - string_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 84
    functionName: list_namespaces
    functionSourceFile: /src/dovecot/src/imap/cmd-namespace.c
    functionUses: 0
    functionsReached:
    - array_sort
    - mail_namespace_get_sep
    - t_str_new
    - i_panic
    - array_append_space
    - str_append_c
    - str_c
    - imap_append_string
    - imap_utf8_to_utf7
    - array_count
    - t_array_init
    - str_truncate
    - str_append
    - array_foreach_modifiable
    linkageType: ''
    returnType: void
    signature: "void list_namespaces(struct mail_namespace *ns, enum mail_namespace_type
      type,\n\t\tstring_t *str, bool utf8)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-namespace.c:91,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-namespace.c:92,1
    - Dst: list_namespaces
      Src: /src/dovecot/src/imap/cmd-namespace.c:94,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:96,1
    - Dst: list_namespaces
      Src: /src/dovecot/src/imap/cmd-namespace.c:97,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:99,1
    - Dst: list_namespaces
      Src: /src/dovecot/src/imap/cmd-namespace.c:100,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-namespace.c:103,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-namespace.c:103,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-namespace.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 106
    functionName: cmd_namespace
    functionSourceFile: /src/dovecot/src/imap/cmd-namespace.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - client_send_tagline
    - list_namespaces
    - client_send_line
    - str_append
    linkageType: ''
    returnType: bool
    signature: bool cmd_namespace(struct client_command_context *cmd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-search.c:15,1
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-search.c:18,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-search.c:21,1
    - Dst: cmd_search_parse_return_if_found
      Src: /src/dovecot/src/imap/cmd-search.c:24,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-search.c:29,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-search.c:33,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-search.c:37,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-search.c:38,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/cmd-search.c:40,1
    - Dst: imap_search_args_build
      Src: /src/dovecot/src/imap/cmd-search.c:48,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/cmd-search.c:50,1
    - Dst: imap_search_start
      Src: /src/dovecot/src/imap/cmd-search.c:54,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 55
    functionName: cmd_search
    functionSourceFile: /src/dovecot/src/imap/cmd-search.c
    functionUses: 0
    functionsReached:
    - client_verify_open_mailbox
    - cmd_search_parse_return_if_found
    - p_new
    - imap_search_context_free
    - imap_search_args_build
    - imap_search_start
    - client_read_args
    - client_send_command_error
    - imap_arg_atom_equals
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_search(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-client.c:65,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:66,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: client_idle_timeout
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_send_line
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void client_idle_timeout(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-client.c:75,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-client.c:78,1
    - Dst: imap_urlauth_init
      Src: /src/dovecot/src/imap/imap-client.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 86
    functionName: client_init_urlauth
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_strconcat
    - imap_urlauth_init
    linkageType: ''
    returnType: void
    signature: void client_init_urlauth(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_override
      Src: /src/dovecot/src/imap/imap-client.c:91,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - set_instance
    - capability
    argTypes:
    - struct settings_instance*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 94
    functionName: imap_unset_capability
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - settings_override
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void imap_unset_capability(struct settings_instance *set_instance,
      const char *capability)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/imap/imap-client.c:106,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/imap/imap-client.c:107,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap/imap-client.c:109,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-client.c:110,1
    - Dst: event_ref
      Src: /src/dovecot/src/imap/imap-client.c:114,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/imap/imap-client.c:120,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/imap/imap-client.c:122,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/imap/imap-client.c:125,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/imap/imap-client.c:127,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/imap/imap-client.c:130,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/imap/imap-client.c:131,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/imap/imap-client.c:132,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/imap/imap-client.c:134,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-client.c:136,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap/imap-client.c:138,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap/imap-client.c:142,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-client.c:146,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/imap/imap-client.c:149,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:154,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:156,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:159,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:164,1
    - Dst: mailbox_attribute_dict_is_enabled
      Src: /src/dovecot/src/imap/imap-client.c:167,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-client.c:169,1
    - Dst: client_init_urlauth
      Src: /src/dovecot/src/imap/imap-client.c:174,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:176,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:177,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:180,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:182,1
    - Dst: imap_unset_capability
      Src: /src/dovecot/src/imap/imap-client.c:184,1
    - Dst: settings_get
      Src: /src/dovecot/src/imap/imap-client.c:187,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-client.c:190,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/imap-client.c:192,1
    - Dst: imap_write_capability
      Src: /src/dovecot/src/imap/imap-client.c:193,1
    - Dst: settings_free
      Src: /src/dovecot/src/imap/imap-client.c:195,1
    - Dst: mail_user_get_mail_max_size
      Src: /src/dovecot/src/imap/imap-client.c:196,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:199,1
    - Dst: mail_user_get_anvil_session
      Src: /src/dovecot/src/imap/imap-client.c:205,1
    - Dst: master_service_anvil_connect
      Src: /src/dovecot/src/imap/imap-client.c:206,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/imap/imap-client.c:211,1
    - Dst: hook_client_created
      Src: /src/dovecot/src/imap/imap-client.c:213,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/imap-client.c:215,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 73
    argCount: 7
    argNames:
    - fd_in
    - fd_out
    - flags
    - event
    - user
    - set
    - smtp_set
    argTypes:
    - int
    - int
    - enum client_create_flags
    - struct event*
    - struct mail_user*
    - struct imap_settings*
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 217
    functionName: client_create
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 3
    functionsReached:
    - mailbox_attribute_dict_is_enabled
    - p_strdup
    - str_printfa
    - p_array_init
    - o_stream_set_name
    - o_stream_unref
    - DLLIST_PREPEND
    - imap_unset_capability
    - o_stream_set_flush_callback
    - o_stream_create_fd
    - p_new
    - event_ref
    - i_stream_set_name
    - timeout_add
    - str_new
    - imap_refresh_proctitle
    - master_service_anvil_connect
    - o_stream_create_multiplex
    - mail_storage_service_user_get_settings_instance
    - net_set_nonblock
    - mail_user_get_mail_max_size
    - imap_write_capability
    - pool_alloconly_create
    - i_stream_create_fd
    - mail_user_get_anvil_session
    - client_init_urlauth
    - hook_client_created
    - settings_free
    - o_stream_set_no_error_handling
    - settings_get
    linkageType: ''
    returnType: struct client
    signature: "struct client *client_create(int fd_in, int fd_out,\n\t\t\t     enum
      client_create_flags flags,\n\t\t\t     struct event *event, struct mail_user
      *user,\n\t\t\t     const struct imap_settings *set,\n\t\t\t     const struct
      smtp_submit_settings *smtp_set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/imap/imap-client.c:224,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/imap/imap-client.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 238
    functionName: client_create_finish_io
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 3
    functionsReached:
    - iostream_rawlog_create
    - io_add_istream
    linkageType: ''
    returnType: void
    signature: void client_create_finish_io(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespaces_init
      Src: /src/dovecot/src/imap/imap-client.c:246,1
    - Dst: mail_namespaces_set_storage_callbacks
      Src: /src/dovecot/src/imap/imap-client.c:248,1
    - Dst: struct client*::v::init
      Src: /src/dovecot/src/imap/imap-client.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 252
    functionName: client_create_finish
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 3
    functionsReached:
    - struct client*::v::init
    - mail_namespaces_set_storage_callbacks
    - mail_namespaces_init
    linkageType: ''
    returnType: int
    signature: int client_create_finish(struct client *client, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:257,1
    - Dst: i_stream_create_copy_from_data
      Src: /src/dovecot/src/imap/imap-client.c:260,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/imap/imap-client.c:264,1
    - Dst: i_stream_copy_fd
      Src: /src/dovecot/src/imap/imap-client.c:265,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/imap-client.c:266,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/imap-client.c:267,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/imap/imap-client.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - client
    - data
    - size
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 270
    functionName: client_add_istream_prefix
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 2
    functionsReached:
    - i_assert
    - i_stream_copy_fd
    - i_stream_set_input_pending
    - i_stream_create_copy_from_data
    - i_stream_unref
    - i_stream_create_concat
    linkageType: ''
    returnType: void
    signature: "void client_add_istream_prefix(struct client *client,\n\t\t\t       const
      unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 275
    functionName: client_default_init
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void client_default_init(struct client *client ATTR_UNUSED)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-client.c:299,1
    - Dst: command_exec
      Src: /src/dovecot/src/imap/imap-client.c:303,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-client.c:306,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-client.c:308,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct client_command_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 310
    functionName: client_command_cancel
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - i_panic
    - command_exec
    - client_command_free
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void client_command_cancel(struct client_command_context **_cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:315,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/imap/imap-client.c:315,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:316,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:318,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:319,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:320,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:321,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:322,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:323,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:324,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:325,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client.c:326,1
    - Dst: mail_user_var_expand_params
      Src: /src/dovecot/src/imap/imap-client.c:330,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/imap-client.c:344,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/imap/imap-client.c:344,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/imap-client.c:345,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-client.c:347,1
    - Dst: var_expand
      Src: /src/dovecot/src/imap/imap-client.c:348,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-client.c:350,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-client.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 356
    functionName: client_stats
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - i_stream_get_absolute_offset
    - mail_user_var_expand_params
    - e_error
    - var_expand
    - event_add_int
    linkageType: ''
    returnType: char
    signature: char *client_stats(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::destroy
      Src: /src/dovecot/src/imap/imap-client.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 361
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 5
    functionsReached:
    - struct client*::v::destroy
    linkageType: ''
    returnType: void
    signature: void client_destroy(struct client *client, const char *reason)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_get_wait_usecs
      Src: /src/dovecot/src/imap/imap-client.c:372,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:375,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:379,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:380,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:384,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:387,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:390,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - str
    - stats
    - wait_condition
    - buffered_size
    argTypes:
    - string_t*
    - struct client_command_stats*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 392
    functionName: client_command_stats_append
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - io_loop_get_wait_usecs
    linkageType: ''
    returnType: void
    signature: "void client_command_stats_append(string_t *str,\n\t\t\t    const struct
      client_command_stats *stats,\n\t\t\t    const char *wait_condition,\n\t\t\t
      \   size_t buffered_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-client.c:409,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/imap/imap-client.c:410,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:412,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/imap/imap-client.c:416,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:418,1
    - Dst: client_command_stats_append
      Src: /src/dovecot/src/imap/imap-client.c:419,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client.c:421,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-client.c:422,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 423
    functionName: client_get_last_command_status
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_command_stats_append
    - t_str_new
    - timeval_diff_msecs
    - str_printfa
    - str_append_c
    - str_c
    - str_append
    linkageType: ''
    returnType: char
    signature: char *client_get_last_command_status(struct client *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_get_last_command_status
      Src: /src/dovecot/src/imap/imap-client.c:434,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-client.c:436,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-client.c:437,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:438,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:445,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client.c:447,1
    - Dst: client_get_last_command_status
      Src: /src/dovecot/src/imap/imap-client.c:455,1
    - Dst: io_loop_find_fd_conditions
      Src: /src/dovecot/src/imap/imap-client.c:457,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client.c:469,1
    - Dst: client_command_stats_append
      Src: /src/dovecot/src/imap/imap-client.c:470,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/imap-client.c:471,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:472,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-client.c:474,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 425
    functionDepth: 3
    functionLinenumber: 425
    functionLinenumberEnd: 475
    functionName: client_get_commands_status
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - client_command_stats_append
    - t_str_new
    - str_printfa
    - client_get_last_command_status
    - str_append_c
    - str_c
    - io_loop_find_fd_conditions
    - o_stream_get_buffer_used_size
    - str_append
    linkageType: ''
    returnType: char
    signature: char *client_get_commands_status(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/imap/imap-client.c:479,1
    - Dst: client_stats
      Src: /src/dovecot/src/imap/imap-client.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 480
    functionName: client_log_disconnect
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - e_info
    - client_stats
    linkageType: ''
    returnType: void
    signature: void client_log_disconnect(struct client *client, const char *reason)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:486,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-client.c:493,1
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/imap/imap-client.c:494,1
    - Dst: client_get_commands_status
      Src: /src/dovecot/src/imap/imap-client.c:496,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/imap/imap-client.c:498,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/imap/imap-client.c:499,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/imap/imap-client.c:500,1
    - Dst: client_command_cancel
      Src: /src/dovecot/src/imap/imap-client.c:504,1
    - Dst: client_command_cancel
      Src: /src/dovecot/src/imap/imap-client.c:507,1
    - Dst: client_command_cancel
      Src: /src/dovecot/src/imap/imap-client.c:514,1
    - Dst: imap_notify_deinit
      Src: /src/dovecot/src/imap/imap-client.c:517,1
    - Dst: imap_urlauth_deinit
      Src: /src/dovecot/src/imap/imap-client.c:519,1
    - Dst: imap_client_close_mailbox
      Src: /src/dovecot/src/imap/imap-client.c:523,1
    - Dst: mail_user_get_anvil_session
      Src: /src/dovecot/src/imap/imap-client.c:526,1
    - Dst: master_service_anvil_disconnect
      Src: /src/dovecot/src/imap/imap-client.c:527,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/imap/imap-client.c:532,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/imap-client.c:533,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/imap-client.c:534,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/imap-client.c:535,1
    - Dst: shutdown
      Src: /src/dovecot/src/imap/imap-client.c:538,1
    - Dst: fd_close_maybe_stdio
      Src: /src/dovecot/src/imap/imap-client.c:540,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/imap-client.c:551,1
    - Dst: mail_user_autoexpunge
      Src: /src/dovecot/src/imap/imap-client.c:553,1
    - Dst: client_log_disconnect
      Src: /src/dovecot/src/imap/imap-client.c:554,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/imap/imap-client.c:556,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/imap/imap-client.c:560,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/imap/imap-client.c:561,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/imap/imap-client.c:562,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-client.c:564,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-client.c:565,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-client.c:566,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-client.c:567,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-client.c:568,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/imap/imap-client.c:571,1
    - Dst: settings_free
      Src: /src/dovecot/src/imap/imap-client.c:573,1
    - Dst: settings_free
      Src: /src/dovecot/src/imap/imap-client.c:574,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/imap-client.c:575,1
    - Dst: i_free
      Src: /src/dovecot/src/imap/imap-client.c:576,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-client.c:577,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/imap/imap-client.c:579,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/imap-client.c:580,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 60
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 482
    functionDepth: 5
    functionLinenumber: 482
    functionLinenumberEnd: 581
    functionName: client_default_destroy
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - mail_user_deinit
    - client_get_commands_status
    - event_unref
    - imap_parser_unref
    - io_stream_get_disconnect_reason
    - io_remove
    - i_stream_close
    - pool_unref
    - client_command_cancel
    - DLLIST_REMOVE
    - master_service_anvil_disconnect
    - master_service_client_connection_destroyed
    - client_log_disconnect
    - imap_notify_deinit
    - array_free
    - i_stream_destroy
    - shutdown
    - mail_user_autoexpunge
    - imap_refresh_proctitle
    - o_stream_close
    - i_assert
    - i_free
    - o_stream_destroy
    - mail_user_get_anvil_session
    - settings_free
    - imap_client_close_mailbox
    - fd_close_maybe_stdio
    - imap_urlauth_deinit
    - array_is_created
    - t_strconcat
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_default_destroy(struct client *client, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 586
    functionName: client_destroy_timeout
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void client_destroy_timeout(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-client.c:594,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/imap/imap-client.c:596,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/imap-client.c:597,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/imap/imap-client.c:599,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/imap/imap-client.c:600,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/imap-client.c:602,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap/imap-client.c:603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 604
    functionName: client_disconnect
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 3
    functionsReached:
    - p_strdup
    - o_stream_close
    - o_stream_uncork
    - timeout_add
    - o_stream_finish
    - i_stream_close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_disconnect(struct client *client, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-client.c:609,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-client.c:609,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/imap-client.c:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - client_error
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 611
    functionName: client_disconnect_with_error
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - t_strconcat
    - client_disconnect
    linkageType: ''
    returnType: void
    signature: "void client_disconnect_with_error(struct client *client,\n\t\t\t\t
      \ const char *client_error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:616,1
    - Dst: strchr
      Src: /src/dovecot/src/imap/imap-client.c:616,1
    - Dst: settings_boollist_is_stopped
      Src: /src/dovecot/src/imap/imap-client.c:617,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client.c:621,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - client
    - capability
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 623
    functionName: client_add_capability
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_append_c
    - settings_boollist_is_stopped
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void client_add_capability(struct client *client, const char *capability)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line_next
      Src: /src/dovecot/src/imap/imap-client.c:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - data
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 628
    functionName: client_send_line
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 8
    functionsReached:
    - client_send_line_next
    linkageType: ''
    returnType: void
    signature: void client_send_line(struct client *client, const char *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-client.c:638,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/imap/imap-client.c:642,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/imap-client.c:646,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap/imap-client.c:649,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - client
    - data
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 652
    functionName: client_send_line_next
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 2
    functionsReached:
    - o_stream_flush
    - o_stream_sendv
    - strlen
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: int
    signature: int client_send_line_next(struct client *client, const char *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: command_stats_flush
      Src: /src/dovecot/src/imap/imap-client.c:664,1
    - Dst: io_loop_get_wait_usecs
      Src: /src/dovecot/src/imap/imap-client.c:666,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/imap/imap-client.c:670,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-client.c:673,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-client.c:673,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-client.c:674,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-client.c:674,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:675,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:679,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:682,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - cmd
    - str
    argTypes:
    - struct client_command_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 683
    functionName: client_cmd_append_timing_stats
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - timeval_diff_msecs
    - str_data
    - str_len
    - str_truncate
    - str_append
    - command_stats_flush
    - io_loop_get_wait_usecs
    linkageType: ''
    returnType: void
    signature: "void client_cmd_append_timing_stats(struct client_command_context
      *cmd,\n\t\t\t       string_t *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client_command_context*::client::v::send_tagline
      Src: /src/dovecot/src/imap/imap-client.c:687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct client_command_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 688
    functionName: client_send_tagline
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 7
    functionsReached:
    - struct client_command_context*::client::v::send_tagline
    linkageType: ''
    returnType: void
    signature: void client_send_tagline(struct client_command_context *cmd, const
      char *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:699,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-client.c:701,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-client.c:707,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:708,1
    - Dst: client_cmd_append_timing_stats
      Src: /src/dovecot/src/imap/imap-client.c:709,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:710,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-client.c:711,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-client.c:711,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-client.c:711,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct client_command_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 690
    functionDepth: 2
    functionLinenumber: 690
    functionLinenumberEnd: 712
    functionName: client_default_send_tagline
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - p_strdup
    - str_printfa
    - str_data
    - str_len
    - client_cmd_append_timing_stats
    - o_stream_nsend
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void client_default_send_tagline(struct client_command_context *cmd,
      const char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct imap_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 721
    functionName: client_default_sync_notify_more
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int client_default_sync_notify_more(struct imap_sync_context *ctx ATTR_UNUSED)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/imap/imap-client.c:731,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-client.c:734,1
    - Dst: client_disconnect_with_error
      Src: /src/dovecot/src/imap/imap-client.c:736,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-client.c:744,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-client.c:746,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/imap-client.c:748,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-client.c:749,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-client.c:753,1
    - Dst: client_disconnect_with_error
      Src: /src/dovecot/src/imap/imap-client.c:756,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - cmd
    - client_error
    argTypes:
    - struct client_command_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 723
    functionDepth: 2
    functionLinenumber: 723
    functionLinenumberEnd: 765
    functionName: client_send_command_error
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 6
    functionsReached:
    - imap_parser_get_error
    - t_str_ucase
    - i_unreached
    - client_send_tagline
    - client_disconnect_with_error
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void client_send_command_error(struct client_command_context *cmd,\n\t\t\t
      \      const char *client_error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-client.c:769,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/imap/imap-client.c:770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 771
    functionName: client_send_internal_error
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_send_tagline
    - t_strflocaltime
    linkageType: ''
    returnType: void
    signature: void client_send_internal_error(struct client_command_context *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:778,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap/imap-client.c:780,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:783,1
    - Dst: client_args_finished
      Src: /src/dovecot/src/imap/imap-client.c:786,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-client.c:798,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - cmd
    - count
    - flags
    - args_r
    argTypes:
    - struct client_command_context*
    - unsigned int
    - unsigned int
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 773
    functionDepth: 3
    functionLinenumber: 773
    functionLinenumberEnd: 802
    functionName: client_read_args
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 5
    functionsReached:
    - client_send_command_error
    - imap_parser_read_args
    - i_assert
    - client_args_finished
    linkageType: ''
    returnType: bool
    signature: "bool client_read_args(struct client_command_context *cmd, unsigned
      int count,\n\t\t      unsigned int flags, const struct imap_arg **args_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/imap-client.c:812,1
    - Dst: va_start
      Src: /src/dovecot/src/imap/imap-client.c:815,1
    - Dst: va_arg
      Src: /src/dovecot/src/imap/imap-client.c:817,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/imap-client.c:819,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-client.c:820,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/imap-client.c:824,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-client.c:825,1
    - Dst: va_end
      Src: /src/dovecot/src/imap/imap-client.c:832,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - cmd
    - count
    argTypes:
    - struct client_command_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 804
    functionDepth: 4
    functionLinenumber: 804
    functionLinenumberEnd: 835
    functionName: client_read_string_args
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_arg
    - va_end
    - client_read_args
    - client_send_command_error
    - imap_arg_get_astring
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool client_read_string_args(struct client_command_context *cmd,\n\t\t\t
      \    unsigned int count, ...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-client.c:840,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:843,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client.c:844,1
    - Dst: imap_write_args
      Src: /src/dovecot/src/imap/imap-client.c:846,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-client.c:847,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-client.c:847,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:848,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-client.c:850,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client.c:852,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client.c:853,1
    - Dst: imap_write_args_for_human
      Src: /src/dovecot/src/imap/imap-client.c:855,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-client.c:856,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-client.c:856,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:857,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 837
    functionDepth: 1
    functionLinenumber: 837
    functionLinenumberEnd: 858
    functionName: client_args_finished
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - p_strdup
    - str_append_c
    - imap_write_args
    - str_truncate
    - imap_write_args_for_human
    - str_append
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void client_args_finished(struct client_command_context *cmd,\n\t\t\t
      \ const struct imap_arg *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - new_cmd
    - flags
    - max_state
    argTypes:
    - struct client_command_context*
    - enum command_flags
    - enum client_command_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 860
    functionDepth: 0
    functionLinenumber: 860
    functionLinenumberEnd: 880
    functionName: client_command_find_with_flags
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct client_command_context
    signature: "struct client_command_context *\nclient_command_find_with_flags(struct
      client_command_context *new_cmd,\n\t\t\t       enum command_flags flags,\n\t\t\t
      \      enum client_command_state max_state)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: imap_sync_is_allowed
      Src: /src/dovecot/src/imap/imap-client.c:890,1
    - Dst: client_command_find_with_flags
      Src: /src/dovecot/src/imap/imap-client.c:921,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-client.c:936,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 882
    functionDepth: 1
    functionLinenumber: 882
    functionLinenumberEnd: 942
    functionName: client_command_is_ambiguous
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - imap_sync_is_allowed
    - client_command_find_with_flags
    linkageType: ''
    returnType: bool
    signature: bool client_command_is_ambiguous(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-client.c:948,1
    - Dst: event_create
      Src: /src/dovecot/src/imap/imap-client.c:951,1
    - Dst: event_create
      Src: /src/dovecot/src/imap/imap-client.c:952,1
    - Dst: io_loop_get_wait_usecs
      Src: /src/dovecot/src/imap/imap-client.c:956,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-client.c:957,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-client.c:958,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/imap/imap-client.c:960,1
    - Dst: imap_client_notify_command_allocated
      Src: /src/dovecot/src/imap/imap-client.c:963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 944
    functionDepth: 2
    functionLinenumber: 944
    functionLinenumberEnd: 965
    functionName: client_command_alloc
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 2
    functionsReached:
    - event_create
    - client_has_enabled
    - p_new
    - p_array_init
    - imap_client_notify_command_allocated
    - DLLIST_PREPEND
    - io_loop_get_wait_usecs
    linkageType: ''
    returnType: struct client_command_context
    signature: struct client_command_context *client_command_alloc(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:969,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:971,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 974
    functionName: client_command_init_finished
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 1
    functionsReached:
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void client_command_init_finished(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_command_alloc
      Src: /src/dovecot/src/imap/imap-client.c:981,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/imap/imap-client.c:987,1
    - Dst: imap_parser_enable_literal_minus
      Src: /src/dovecot/src/imap/imap-client.c:990,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 976
    functionDepth: 3
    functionLinenumber: 976
    functionLinenumberEnd: 993
    functionName: client_command_new
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - imap_parser_enable_literal_minus
    - imap_parser_create
    - client_command_alloc
    linkageType: ''
    returnType: struct client_command_context
    signature: 'struct client_command_context *

      client_command_new(struct client *client)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_add_istream
      Src: /src/dovecot/src/imap/imap-client.c:998,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 995
    functionDepth: 0
    functionLinenumber: 995
    functionLinenumberEnd: 999
    functionName: client_add_missing_io
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    linkageType: ''
    returnType: void
    signature: void client_add_missing_io(struct client *client)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1009,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1010,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap/imap-client.c:1015,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-client.c:1019,1
    - Dst: i_free
      Src: /src/dovecot/src/imap/imap-client.c:1023,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap/imap-client.c:1024,1
    - Dst: event_set_name
      Src: /src/dovecot/src/imap/imap-client.c:1037,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:1039,1
    - Dst: t_strcut
      Src: /src/dovecot/src/imap/imap-client.c:1040,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:1041,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/imap/imap-client.c:1043,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/imap-client.c:1045,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/imap-client.c:1046,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/imap-client.c:1047,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap/imap-client.c:1048,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-client.c:1051,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:1052,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:1054,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client.c:1056,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-client.c:1057,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-client.c:1057,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/imap-client.c:1059,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/imap-client.c:1060,1
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/imap/imap-client.c:1064,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/imap/imap-client.c:1067,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/imap/imap-client.c:1072,1
    - Dst: p_clear
      Src: /src/dovecot/src/imap/imap-client.c:1077,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/imap-client.c:1078,1
    - Dst: imap_client_notify_command_freed
      Src: /src/dovecot/src/imap/imap-client.c:1080,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/imap-client.c:1081,1
    - Dst: client_add_missing_io
      Src: /src/dovecot/src/imap/imap-client.c:1088,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/imap/imap-client.c:1089,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct client_command_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1001
    functionDepth: 2
    functionLinenumber: 1001
    functionLinenumberEnd: 1091
    functionName: client_command_free
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 1
    functionsReached:
    - str_c
    - str_printfa
    - event_unref
    - imap_parser_unref
    - event_set_name
    - i_strdup
    - t_strcut
    - DLLIST_REMOVE
    - event_add_int
    - imap_client_notify_command_freed
    - t_str_new
    - timeout_reset
    - event_add_str
    - p_clear
    - event_add_timeval
    - imap_refresh_proctitle
    - imap_parser_reset
    - client_send_tagline
    - i_assert
    - i_free
    - e_debug
    - io_set_pending
    - client_add_missing_io
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_command_free(struct client_command_context **_cmd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1107,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1113,1
    - Dst: io_loop_find_fd_conditions
      Src: /src/dovecot/src/imap/imap-client.c:1113,1
    - Dst: io_loop_find_fd_conditions
      Src: /src/dovecot/src/imap/imap-client.c:1123,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-client.c:1132,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1135,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1136
    functionName: client_check_command_hangs
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - io_loop_find_fd_conditions
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void client_check_command_hangs(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: client_command_is_ambiguous
      Src: /src/dovecot/src/imap/imap-client.c:1149,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/imap-client.c:1151,1
    - Dst: client_command_is_ambiguous
      Src: /src/dovecot/src/imap/imap-client.c:1153,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1138
    functionDepth: 2
    functionLinenumber: 1138
    functionLinenumberEnd: 1159
    functionName: client_remove_pending_unambiguity
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - cmd_sync_delayed
    - client_command_is_ambiguous
    linkageType: ''
    returnType: bool
    signature: bool client_remove_pending_unambiguity(struct client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1163,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:1166,1
    - Dst: client_remove_pending_unambiguity
      Src: /src/dovecot/src/imap/imap-client.c:1172,1
    - Dst: client_add_missing_io
      Src: /src/dovecot/src/imap/imap-client.c:1173,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/imap/imap-client.c:1176,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/imap/imap-client.c:1181,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/imap-client.c:1182,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/imap/imap-client.c:1183,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/imap-client.c:1184,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/imap/imap-client.c:1185,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:1190,1
    - Dst: client_check_command_hangs
      Src: /src/dovecot/src/imap/imap-client.c:1192,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1161
    functionDepth: 3
    functionLinenumber: 1161
    functionLinenumberEnd: 1193
    functionName: client_continue_pending_input
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 1
    functionsReached:
    - i_stream_get_data_size
    - o_stream_uncork
    - client_destroy
    - o_stream_unref
    - o_stream_cork
    - client_add_missing_io
    - client_check_command_hangs
    - o_stream_ref
    - client_remove_pending_unambiguity
    - i_assert
    - client_handle_input
    linkageType: ''
    returnType: void
    signature: void client_continue_pending_input(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/imap/imap-client.c:1202,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap/imap-client.c:1212,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/imap/imap-client.c:1218,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1197
    functionDepth: 1
    functionLinenumber: 1197
    functionLinenumberEnd: 1221
    functionName: client_skip_line
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - i_stream_set_input_pending
    - i_stream_get_data
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: bool client_skip_line(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:1225,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client.c:1225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1223
    functionDepth: 1
    functionLinenumber: 1223
    functionLinenumberEnd: 1228
    functionName: client_idle_output_timeout
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void client_idle_output_timeout(struct client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_add_missing_io
      Src: /src/dovecot/src/imap/imap-client.c:1240,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/imap/imap-client.c:1246,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap/imap-client.c:1250,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1230
    functionDepth: 1
    functionLinenumber: 1230
    functionLinenumberEnd: 1254
    functionName: client_handle_unfinished_cmd
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    - timeout_add
    - client_add_missing_io
    linkageType: ''
    returnType: bool
    signature: bool client_handle_unfinished_cmd(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/imap/imap-client.c:1265,1
    - Dst: command_stats_start
      Src: /src/dovecot/src/imap/imap-client.c:1266,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-client.c:1267,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-client.c:1269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - _cmd
    - error
    argTypes:
    - struct client_command_context**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1256
    functionDepth: 3
    functionLinenumber: 1256
    functionLinenumberEnd: 1270
    functionName: client_command_failed_early
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_send_command_error
    - io_loop_time_refresh
    - command_stats_start
    - client_command_free
    linkageType: ''
    returnType: void
    signature: "void client_command_failed_early(struct client_command_context **_cmd,\n\t\t\t
      \   const char *error)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: command_exec
      Src: /src/dovecot/src/imap/imap-client.c:1281,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-client.c:1283,1
    - Dst: client_add_missing_io
      Src: /src/dovecot/src/imap/imap-client.c:1284,1
    - Dst: client_handle_unfinished_cmd
      Src: /src/dovecot/src/imap/imap-client.c:1288,1
    - Dst: imap_parser_read_tag
      Src: /src/dovecot/src/imap/imap-client.c:1292,1
    - Dst: client_command_failed_early
      Src: /src/dovecot/src/imap/imap-client.c:1296,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-client.c:1299,1
    - Dst: imap_parser_read_command_name
      Src: /src/dovecot/src/imap/imap-client.c:1303,1
    - Dst: client_command_failed_early
      Src: /src/dovecot/src/imap/imap-client.c:1307,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-client.c:1313,1
    - Dst: client_command_input
      Src: /src/dovecot/src/imap/imap-client.c:1315,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-client.c:1317,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/imap/imap-client.c:1318,1
    - Dst: client_command_init_finished
      Src: /src/dovecot/src/imap/imap-client.c:1319,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/imap-client.c:1320,1
    - Dst: command_find
      Src: /src/dovecot/src/imap/imap-client.c:1327,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:1331,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/imap/imap-client.c:1332,1
    - Dst: event_reason_code_prefix
      Src: /src/dovecot/src/imap/imap-client.c:1333,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-client.c:1334,1
    - Dst: client_command_is_ambiguous
      Src: /src/dovecot/src/imap/imap-client.c:1335,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1337,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/imap-client.c:1339,1
    - Dst: client_command_failed_early
      Src: /src/dovecot/src/imap/imap-client.c:1346,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1349,1
    - Dst: client_command_input
      Src: /src/dovecot/src/imap/imap-client.c:1351,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1272
    functionDepth: 4
    functionLinenumber: 1272
    functionLinenumberEnd: 1353
    functionName: client_command_input
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - imap_parser_read_command_name
    - io_remove
    - client_handle_unfinished_cmd
    - command_find
    - event_reason_code_prefix
    - client_command_failed_early
    - client_command_is_ambiguous
    - event_add_str
    - command_exec
    - client_command_input
    - imap_refresh_proctitle
    - event_strlist_append
    - strcasecmp
    - p_strconcat
    - client_command_init_finished
    - imap_parser_read_tag
    - i_assert
    - client_add_missing_io
    - client_command_free
    linkageType: ''
    returnType: bool
    signature: bool client_command_input(struct client_command_context *cmd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_command_input
      Src: /src/dovecot/src/imap/imap-client.c:1369,1
    - Dst: client_skip_line
      Src: /src/dovecot/src/imap/imap-client.c:1374,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/imap/imap-client.c:1381,1
    - Dst: client_command_new
      Src: /src/dovecot/src/imap/imap-client.c:1392,1
    - Dst: client_command_input
      Src: /src/dovecot/src/imap/imap-client.c:1393,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - client
    - remove_io_r
    argTypes:
    - struct client*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1355
    functionDepth: 5
    functionLinenumber: 1355
    functionLinenumberEnd: 1394
    functionName: client_handle_next_command
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_command_new
    - i_stream_get_data_size
    - client_skip_line
    - client_command_input
    linkageType: ''
    returnType: bool
    signature: bool client_handle_next_command(struct client *client, bool *remove_io_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1400,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/imap/imap-client.c:1400,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1402,1
    - Dst: client_handle_next_command
      Src: /src/dovecot/src/imap/imap-client.c:1407,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/imap-client.c:1415,1
    - Dst: client_add_missing_io
      Src: /src/dovecot/src/imap/imap-client.c:1417,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/imap-client.c:1423,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/imap-client.c:1426,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1396
    functionDepth: 6
    functionLinenumber: 1396
    functionLinenumberEnd: 1429
    functionName: client_handle_input
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 2
    functionsReached:
    - i_assert
    - io_remove
    - client_add_missing_io
    - cmd_sync_delayed
    - client_handle_next_command
    - o_stream_is_corked
    linkageType: ''
    returnType: bool
    signature: bool client_handle_input(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1437,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap/imap-client.c:1440,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap/imap-client.c:1442,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:1445,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/imap/imap-client.c:1449,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/imap-client.c:1450,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/imap/imap-client.c:1451,1
    - Dst: client_command_new
      Src: /src/dovecot/src/imap/imap-client.c:1458,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-client.c:1460,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-client.c:1461,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/imap-client.c:1465,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/imap-client.c:1467,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/imap/imap-client.c:1468,1
    - Dst: imap_refresh_proctitle
      Src: /src/dovecot/src/imap/imap-client.c:1469,1
    - Dst: client_continue_pending_input
      Src: /src/dovecot/src/imap/imap-client.c:1471,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1431
    functionDepth: 4
    functionLinenumber: 1431
    functionLinenumberEnd: 1472
    functionName: client_input
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - imap_refresh_proctitle
    - client_continue_pending_input
    - o_stream_uncork
    - client_destroy
    - o_stream_unref
    - timeout_reset
    - o_stream_cork
    - o_stream_ref
    - cmd_sync_delayed
    - client_send_command_error
    - client_command_free
    - client_command_new
    - i_stream_read
    - client_handle_input
    linkageType: ''
    returnType: void
    signature: void client_input(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: command_exec
      Src: /src/dovecot/src/imap/imap-client.c:1479,1
    - Dst: client_handle_unfinished_cmd
      Src: /src/dovecot/src/imap/imap-client.c:1482,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-client.c:1485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1474
    functionDepth: 3
    functionLinenumber: 1474
    functionLinenumberEnd: 1487
    functionName: client_output_cmd
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - command_exec
    - client_handle_unfinished_cmd
    - client_command_free
    linkageType: ''
    returnType: void
    signature: void client_output_cmd(struct client_command_context *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: client_output_cmd
      Src: /src/dovecot/src/imap/imap-client.c:1499,1
    - Dst: client_output_cmd
      Src: /src/dovecot/src/imap/imap-client.c:1510,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1489
    functionDepth: 4
    functionLinenumber: 1489
    functionLinenumberEnd: 1519
    functionName: client_output_commands
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_output_cmd
    linkageType: ''
    returnType: void
    signature: void client_output_commands(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1525,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap/imap-client.c:1528,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap/imap-client.c:1530,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap/imap-client.c:1532,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:1533,1
    - Dst: client_output_commands
      Src: /src/dovecot/src/imap/imap-client.c:1537,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/imap-client.c:1538,1
    - Dst: imap_refresh_proctitle_delayed
      Src: /src/dovecot/src/imap/imap-client.c:1540,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:1542,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/imap-client.c:1548,1
    - Dst: client_continue_pending_input
      Src: /src/dovecot/src/imap/imap-client.c:1549,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1521
    functionDepth: 5
    functionLinenumber: 1521
    functionLinenumberEnd: 1552
    functionName: client_output
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_output_commands
    - o_stream_uncork
    - client_destroy
    - timeout_reset
    - cmd_sync_delayed
    - imap_refresh_proctitle_delayed
    - o_stream_flush
    - i_assert
    - client_continue_pending_input
    linkageType: ''
    returnType: int
    signature: int client_output(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client.c:1568,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/imap-client.c:1572,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1574
    functionName: client_handle_search_save_ambiguity
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - io_remove
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool client_handle_search_save_ambiguity(struct client_command_context
      *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-client.c:1578,1
    - Dst: imap_feature_idx
      Src: /src/dovecot/src/imap/imap-client.c:1581,1
    - Dst: struct imap_feature*::callback
      Src: /src/dovecot/src/imap/imap-client.c:1582,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/imap/imap-client.c:1588,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - client
    - feature_idx
    argTypes:
    - struct client*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1576
    functionDepth: 2
    functionLinenumber: 1576
    functionLinenumberEnd: 1590
    functionName: client_enable
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 2
    functionsReached:
    - imap_feature_idx
    - struct imap_feature*::callback
    - client_has_enabled
    - array_idx_set
    linkageType: ''
    returnType: bool
    signature: bool client_enable(struct client *client, unsigned int feature_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-client.c:1594,1
    - Dst: array_idx
      Src: /src/dovecot/src/imap/imap-client.c:1597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - client
    - feature_idx
    argTypes:
    - struct client*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1592
    functionDepth: 1
    functionLinenumber: 1592
    functionLinenumberEnd: 1599
    functionName: client_has_enabled
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 4
    functionsReached:
    - array_count
    - array_idx
    linkageType: ''
    returnType: bool
    signature: bool client_has_enabled(struct client *client, unsigned int feature_idx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-client.c:1609,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/imap/imap-client.c:1612,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/imap/imap-client.c:1616,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-client.c:1619,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client.c:1619,1
    - Dst: client_send_untagged_storage_error
      Src: /src/dovecot/src/imap/imap-client.c:1625,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/imap/imap-client.c:1626,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1629
    functionName: imap_client_enable_condstore
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - mailbox_enable
    - mailbox_get_status
    - t_strdup_printf
    - client_send_line
    - client_enabled_mailbox_features
    - client_send_untagged_storage_error
    linkageType: ''
    returnType: bool
    signature: bool imap_client_enable_condstore(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_enable
      Src: /src/dovecot/src/imap/imap-client.c:1634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1631
    functionDepth: 3
    functionLinenumber: 1631
    functionLinenumberEnd: 1635
    functionName: imap_client_enable_qresync
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - client_enable
    linkageType: ''
    returnType: bool
    signature: bool imap_client_enable_qresync(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-client.c:1641,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/imap/imap-client.c:1646,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1648
      start: 1638
    functionDepth: 1
    functionLinenumber: 1638
    functionLinenumberEnd: 1648
    functionName: imap_client_enable_utf8accept
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mailbox_enable
    linkageType: ''
    returnType: bool
    signature: bool imap_client_enable_utf8accept(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-client.c:1655,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/imap/imap-client.c:1660,1
    - Dst: client_enable
      Src: /src/dovecot/src/imap/imap-client.c:1663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1652
    functionDepth: 3
    functionLinenumber: 1652
    functionLinenumberEnd: 1665
    functionName: imap_client_enable_imap4rev2
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mailbox_enable
    - client_enable
    linkageType: ''
    returnType: bool
    signature: bool imap_client_enable_imap4rev2(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-client.c:1675,1
    - Dst: imap_feature_idx
      Src: /src/dovecot/src/imap/imap-client.c:1678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1668
    functionDepth: 2
    functionLinenumber: 1668
    functionLinenumberEnd: 1683
    functionName: client_enabled_mailbox_features
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 1
    functionsReached:
    - imap_feature_idx
    - array_get
    linkageType: ''
    returnType: enum mailbox_feature
    signature: enum mailbox_feature client_enabled_mailbox_features(struct client
      *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/imap-client.c:1687,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-client.c:1692,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-client.c:1693,1
    - Dst: imap_feature_idx
      Src: /src/dovecot/src/imap/imap-client.c:1696,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-client.c:1697,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/imap/imap-client.c:1700,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/imap-client.c:1701,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1702
      start: 1685
    functionDepth: 2
    functionLinenumber: 1685
    functionLinenumberEnd: 1702
    functionName: client_enabled_features
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - imap_feature_idx
    - array_push_back
    - array_get
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: char
    signature: char *const *client_enabled_features(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-client.c:1711,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/imap/imap-client.c:1714,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-client.c:1716,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - client
    - tag
    - idx_r
    argTypes:
    - struct client*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1704
    functionDepth: 1
    functionLinenumber: 1704
    functionLinenumberEnd: 1722
    functionName: client_search_update_lookup
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 1
    functionsReached:
    - array_get_modifiable
    - array_is_created
    - strcmp
    linkageType: ''
    returnType: struct imap_search_update
    signature: "struct imap_search_update *\nclient_search_update_lookup(struct client
      *client, const char *tag,\n\t\t\t    unsigned int *idx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-client.c:1728,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/imap-client.c:1731,1
    - Dst: imap_search_update_free
      Src: /src/dovecot/src/imap/imap-client.c:1732,1
    - Dst: array_clear
      Src: /src/dovecot/src/imap/imap-client.c:1733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1724
    functionDepth: 1
    functionLinenumber: 1724
    functionLinenumberEnd: 1734
    functionName: client_search_updates_free
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - array_clear
    - imap_search_update_free
    linkageType: ''
    returnType: void
    signature: void client_search_updates_free(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_feature_register
      Src: /src/dovecot/src/imap/imap-client.c:1739,1
    - Dst: imap_feature_register
      Src: /src/dovecot/src/imap/imap-client.c:1742,1
    - Dst: imap_feature_register
      Src: /src/dovecot/src/imap/imap-client.c:1746,1
    - Dst: imap_feature_register
      Src: /src/dovecot/src/imap/imap-client.c:1751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1736
    functionDepth: 2
    functionLinenumber: 1736
    functionLinenumberEnd: 1755
    functionName: clients_init
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 2
    functionsReached:
    - imap_feature_register
    linkageType: ''
    returnType: void
    signature: void clients_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/imap/imap-client.c:1759,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-client.c:1761,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client.c:1764,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - shutdown
    argTypes:
    - struct client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1757
    functionDepth: 1
    functionLinenumber: 1757
    functionLinenumberEnd: 1767
    functionName: client_kick
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 1
    functionsReached:
    - client_destroy
    - client_send_line
    - mail_storage_service_io_activate_user
    linkageType: ''
    returnType: void
    signature: void client_kick(struct client *client, bool shutdown)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_user_kicked
      Src: /src/dovecot/src/imap/imap-client.c:1771,1
    - Dst: client_kick
      Src: /src/dovecot/src/imap/imap-client.c:1773,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1769
    functionDepth: 1
    functionLinenumber: 1769
    functionLinenumberEnd: 1774
    functionName: clients_destroy_all
    functionSourceFile: /src/dovecot/src/imap/imap-client.c
    functionUses: 0
    functionsReached:
    - master_service_is_user_kicked
    - client_kick
    linkageType: ''
    returnType: void
    signature: void clients_destroy_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_select_full
      Src: /src/dovecot/src/imap/cmd-examine.c:8,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 9
    functionName: cmd_examine
    functionSourceFile: /src/dovecot/src/imap/cmd-examine.c
    functionUses: 0
    functionsReached:
    - cmd_select_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_examine(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:19,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:23,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:24,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - status
    - text
    - context
    argTypes:
    - struct mailbox*
    - char*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 26
    functionName: notify_status
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 1
    functionsReached:
    - o_stream_flush
    - t_strdup_printf
    - o_stream_nsend_str
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: void
    signature: "void notify_status(struct mailbox *mailbox ATTR_UNUSED,\n\t\t\t  const
      char *status,\n\t\t      \t  const char *text, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_status
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - text
    - context
    argTypes:
    - struct mailbox*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: notify_ok
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 0
    functionsReached:
    - notify_status
    linkageType: ''
    returnType: void
    signature: "void notify_ok(struct mailbox *mailbox ATTR_UNUSED,\n\t\t      const
      char *text, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_status
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - text
    - context
    argTypes:
    - struct mailbox*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: notify_no
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 0
    functionsReached:
    - notify_status
    linkageType: ''
    returnType: void
    signature: "void notify_no(struct mailbox *mailbox ATTR_UNUSED,\n\t\t      const
      char *text, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_status
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - text
    - context
    argTypes:
    - struct mailbox*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: notify_bad
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 0
    functionsReached:
    - notify_status
    linkageType: ''
    returnType: void
    signature: "void notify_bad(struct mailbox *mailbox ATTR_UNUSED,\n\t\t      const
      char *text, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: find_cmd_tag
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 0
    functionsReached:
    - event_find_field_recursive
    linkageType: ''
    returnType: char
    signature: char *find_cmd_tag(struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:60,1
    - Dst: find_cmd_tag
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:61,1
    - Dst: event_get_global
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:61,1
    - Dst: imap_progress_line
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:62,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:64,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:65,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dtl
    - client
    argTypes:
    - struct mail_storage_progress_details*
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: imap_notify_progress
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 0
    functionsReached:
    - event_get_global
    - find_cmd_tag
    - o_stream_cork
    - client_send_line
    - imap_progress_line
    - o_stream_is_corked
    - o_stream_uncork_flush
    linkageType: ''
    returnType: int
    signature: "int imap_notify_progress(const struct mail_storage_progress_details
      *dtl,\n\t\t\t struct client *client)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_notify_progress
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - dtl
    - context
    argTypes:
    - struct mailbox*
    - struct mail_storage_progress_details*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: notify_progress
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 1
    functionsReached:
    - imap_notify_progress
    linkageType: ''
    returnType: void
    signature: "void notify_progress(struct mailbox *mailbox ATTR_UNUSED,\n\t\t\t
      \   const struct mail_storage_progress_details *dtl,\n\t\t\t    void *context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:85,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:86,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:87,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:88,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:91,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:93,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:94,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:95,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:97,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:101,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:102,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:103,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:104,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:106,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:110,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:111,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:112,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:115,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:118,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:119,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:120,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:123,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - client
    - mailbox
    - old_vname
    argTypes:
    - struct client*
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 124
    functionName: notify_mailbox_implicit_rename_line
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mailbox_get_namespace
    - t_str_new
    - mail_namespace_get_sep
    - client_has_enabled
    - str_append_c
    - str_c
    - imap_utf8_to_utf7
    - imap_append_astring
    - str_truncate
    - mailbox_get_vname
    - str_append
    linkageType: ''
    returnType: char
    signature: "char *\nnotify_mailbox_implicit_rename_line(struct client *client,\n\t\t\t\t
      \   struct mailbox *mailbox,\n\t\t\t\t    const char *old_vname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:133,1
    - Dst: notify_mailbox_implicit_rename_line
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:135,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:138,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:139,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/imap-storage-callbacks.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mailbox
    - old_vname
    - context
    argTypes:
    - struct mailbox*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 142
    functionName: notify_mailbox_implicit_rename
    functionSourceFile: /src/dovecot/src/imap/imap-storage-callbacks.c
    functionUses: 0
    functionsReached:
    - o_stream_cork
    - client_send_line
    - notify_mailbox_implicit_rename_line
    - o_stream_is_corked
    - o_stream_uncork_flush
    linkageType: ''
    returnType: void
    signature: "void notify_mailbox_implicit_rename(struct mailbox *mailbox, const
      char *old_vname,\n\t\t\t       void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_critical
      Src: /src/dovecot/src/imap/imap-fetch-body.c:51,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/imap/imap-fetch-body.c:53,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/imap/imap-fetch-body.c:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - disconnect_reason_r
    argTypes:
    - struct imap_fetch_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 57
    functionName: fetch_read_error
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - i_stream_get_name
    - mail_set_critical
    linkageType: ''
    returnType: void
    signature: "void fetch_read_error(struct imap_fetch_context *ctx,\n\t\t\t     const
      char **disconnect_reason_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-fetch-body.c:63,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:65,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:67,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:69,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch-body.c:70,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch-body.c:72,1
    - Dst: imap_msgpart_get_partial_offset
      Src: /src/dovecot/src/imap/imap-fetch-body.c:73,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - body
    argTypes:
    - struct imap_fetch_body_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 76
    functionName: get_body_name
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - imap_msgpart_get_partial_offset
    - str_append
    linkageType: ''
    returnType: char
    signature: char *get_body_name(const struct imap_fetch_body_data *body)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-fetch-body.c:84,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:88,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:90,1
    - Dst: get_body_name
      Src: /src/dovecot/src/imap/imap-fetch-body.c:90,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:93,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch-body.c:95,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch-body.c:97,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - state
    - body
    - size
    - has_nuls
    argTypes:
    - struct imap_fetch_state*
    - struct imap_fetch_body_data*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 99
    functionName: get_prefix
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - get_body_name
    - str_append
    linkageType: ''
    returnType: string_t
    signature: "string_t *get_prefix(struct imap_fetch_state *state,\n\t\t\t    const
      struct imap_fetch_body_data *body,\n\t\t\t    uoff_t size, bool has_nuls)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/imap/imap-fetch-body.c:108,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/imap/imap-fetch-body.c:109,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/imap/imap-fetch-body.c:110,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/imap/imap-fetch-body.c:121,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-fetch-body.c:122,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/imap/imap-fetch-body.c:125,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/imap-fetch-body.c:128,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-fetch-body.c:133,1
    - Dst: fetch_read_error
      Src: /src/dovecot/src/imap/imap-fetch-body.c:137,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/imap-fetch-body.c:138,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-fetch-body.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 145
    functionName: fetch_stream_continue
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - mail_set_cache_corrupted
    - i_unreached
    - o_stream_send_istream
    - fetch_read_error
    - t_strdup_printf
    - client_disconnect
    - i_stream_get_name
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: int
    signature: int fetch_stream_continue(struct imap_fetch_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-fetch-body.c:153,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:155,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:157,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:158,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:159,1
    - Dst: imap_msgpart_get_partial_offset
      Src: /src/dovecot/src/imap/imap-fetch-body.c:161,1
    - Dst: imap_msgpart_get_partial_size
      Src: /src/dovecot/src/imap/imap-fetch-body.c:162,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch-body.c:164,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch-body.c:166,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:167,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-fetch-body.c:169,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:169,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - pool
    - body
    argTypes:
    - pool_t
    - struct imap_fetch_body_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 170
    functionName: get_body_human_name
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - p_strdup
    - imap_msgpart_get_partial_size
    - imap_msgpart_get_partial_offset
    - str_append
    linkageType: ''
    returnType: char
    signature: 'char *

      get_body_human_name(pool_t pool, struct imap_fetch_body_data *body)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_contains_body
      Src: /src/dovecot/src/imap/imap-fetch-body.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - msgpart
    argTypes:
    - struct imap_fetch_context*
    - struct imap_msgpart*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 182
    functionName: fetch_state_update_stats
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_contains_body
    linkageType: ''
    returnType: void
    signature: "void fetch_state_update_stats(struct imap_fetch_context *ctx,\n\t\t\t\t
      \    const struct imap_msgpart *msgpart)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/imap/imap-fetch-body.c:191,1
    - Dst: imap_msgpart_open
      Src: /src/dovecot/src/imap/imap-fetch-body.c:195,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch-body.c:197,1
    - Dst: get_body_human_name
      Src: /src/dovecot/src/imap/imap-fetch-body.c:201,1
    - Dst: fetch_state_update_stats
      Src: /src/dovecot/src/imap/imap-fetch-body.c:203,1
    - Dst: get_prefix
      Src: /src/dovecot/src/imap/imap-fetch-body.c:204,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-fetch-body.c:206,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-fetch-body.c:206,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-fetch-body.c:206,1
    - Dst: struct imap_fetch_context*::state::cont_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - mail
    - body
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - struct imap_fetch_body_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 210
    functionName: fetch_body_msgpart
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_free
    - fetch_state_update_stats
    - str_data
    - str_len
    - struct imap_fetch_context*::state::cont_handler
    - get_body_human_name
    - o_stream_nsend
    - imap_msgpart_open
    - i_assert
    - get_prefix
    linkageType: ''
    returnType: int
    signature: "int fetch_body_msgpart(struct imap_fetch_context *ctx, struct mail
      *mail,\n\t\t\t      struct imap_fetch_body_data *body)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/imap/imap-fetch-body.c:219,1
    - Dst: imap_msgpart_size
      Src: /src/dovecot/src/imap/imap-fetch-body.c:223,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-fetch-body.c:226,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:230,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch-body.c:231,1
    - Dst: get_body_name
      Src: /src/dovecot/src/imap/imap-fetch-body.c:231,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap/imap-fetch-body.c:233,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-fetch-body.c:233,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-fetch-body.c:233,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - mail
    - body
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - struct imap_fetch_body_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 236
    functionName: fetch_binary_size
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - imap_msgpart_free
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - imap_msgpart_size
    - get_body_name
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: "int fetch_binary_size(struct imap_fetch_context *ctx, struct mail
      *mail,\n\t\t\t     struct imap_fetch_body_data *body)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uoff
      Src: /src/dovecot/src/imap/imap-fetch-body.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - value
    argTypes:
    - char**
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: read_uoff_t
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - str_parse_uoff
    linkageType: ''
    returnType: int
    signature: int read_uoff_t(const char **p, uoff_t *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/imap/imap-fetch-body.c:258,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:259,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:260,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/imap-fetch-body.c:263,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/imap-fetch-body.c:268,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:271,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:274,1
    - Dst: imap_append_quoted
      Src: /src/dovecot/src/imap/imap-fetch-body.c:276,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:278,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 5
    argNames:
    - ctx
    - body
    - prefix
    - args
    - args_count
    argTypes:
    - struct imap_fetch_init_context*
    - struct imap_fetch_body_data*
    - char*
    - struct imap_arg*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 281
    functionName: body_header_fields_parse
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_ucase
    - str_append_c
    - str_append
    - imap_append_quoted
    - str_new
    - imap_arg_get_astring
    linkageType: ''
    returnType: int
    signature: "int body_header_fields_parse(struct imap_fetch_init_context *ctx,\n\t\t\t
      struct imap_fetch_body_data *body, const char *prefix,\n\t\t\t const struct
      imap_arg *args, unsigned int args_count)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: read_uoff_t
      Src: /src/dovecot/src/imap/imap-fetch-body.c:299,1
    - Dst: read_uoff_t
      Src: /src/dovecot/src/imap/imap-fetch-body.c:307,1
    - Dst: imap_msgpart_set_partial
      Src: /src/dovecot/src/imap/imap-fetch-body.c:322,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - body
    - p
    - error_r
    argTypes:
    - struct imap_fetch_body_data*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 324
    functionName: body_parse_partial
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - read_uoff_t
    - imap_msgpart_set_partial
    linkageType: ''
    returnType: int
    signature: "int body_parse_partial(struct imap_fetch_body_data *body,\n\t\t\t
      \     const char *p, const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/imap/imap-fetch-body.c:333,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-fetch-body.c:334,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-fetch-body.c:336,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap/imap-fetch-body.c:338,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/imap/imap-fetch-body.c:345,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/imap-fetch-body.c:347,1
    - Dst: body_header_fields_parse
      Src: /src/dovecot/src/imap/imap-fetch-body.c:352,1
    - Dst: strchr
      Src: /src/dovecot/src/imap/imap-fetch-body.c:360,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/imap/imap-fetch-body.c:365,1
    - Dst: imap_msgpart_parse
      Src: /src/dovecot/src/imap/imap-fetch-body.c:368,1
    - Dst: imap_msgpart_get_fetch_data
      Src: /src/dovecot/src/imap/imap-fetch-body.c:373,1
    - Dst: imap_msgpart_get_wanted_headers
      Src: /src/dovecot/src/imap/imap-fetch-body.c:374,1
    - Dst: body_parse_partial
      Src: /src/dovecot/src/imap/imap-fetch-body.c:376,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/imap/imap-fetch-body.c:377,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-fetch-body.c:383,1
    - Dst: get_body_name
      Src: /src/dovecot/src/imap/imap-fetch-body.c:383,1
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:384,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 387
    functionName: imap_fetch_body_section_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 1
    functionsReached:
    - strchr
    - p_strdup_until
    - body_header_fields_parse
    - p_new
    - p_strdup
    - i_unreached
    - str_begins
    - imap_msgpart_parse
    - imap_fetch_add_handler
    - body_parse_partial
    - get_body_name
    - imap_msgpart_get_wanted_headers
    - imap_arg_get_atom
    - imap_msgpart_get_fetch_data
    - p_strdup_printf
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_body_section_init(struct imap_fetch_init_context *ctx)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/imap/imap-fetch-body.c:396,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-fetch-body.c:397,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-fetch-body.c:399,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap/imap-fetch-body.c:402,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap/imap-fetch-body.c:405,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/imap/imap-fetch-body.c:413,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/imap-fetch-body.c:415,1
    - Dst: body_header_fields_parse
      Src: /src/dovecot/src/imap/imap-fetch-body.c:420,1
    - Dst: strchr
      Src: /src/dovecot/src/imap/imap-fetch-body.c:428,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/imap/imap-fetch-body.c:433,1
    - Dst: imap_msgpart_parse
      Src: /src/dovecot/src/imap/imap-fetch-body.c:436,1
    - Dst: imap_msgpart_set_decode_to_binary
      Src: /src/dovecot/src/imap/imap-fetch-body.c:440,1
    - Dst: imap_msgpart_get_fetch_data
      Src: /src/dovecot/src/imap/imap-fetch-body.c:442,1
    - Dst: body_parse_partial
      Src: /src/dovecot/src/imap/imap-fetch-body.c:445,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/imap/imap-fetch-body.c:446,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-fetch-body.c:453,1
    - Dst: get_body_name
      Src: /src/dovecot/src/imap/imap-fetch-body.c:453,1
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:455,1
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:458,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 53
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 389
    functionDepth: 2
    functionLinenumber: 389
    functionLinenumberEnd: 462
    functionName: imap_fetch_binary_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_strdup_until
    - body_header_fields_parse
    - p_new
    - p_strdup
    - i_unreached
    - str_begins
    - imap_msgpart_parse
    - imap_fetch_add_handler
    - imap_msgpart_set_decode_to_binary
    - body_parse_partial
    - get_body_name
    - imap_arg_get_atom
    - imap_msgpart_get_fetch_data
    - p_strdup_printf
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_binary_init(struct imap_fetch_init_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/imap/imap-fetch-body.c:470,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-fetch-body.c:473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 475
    functionName: fetch_rfc822_size
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - mail_get_virtual_size
    linkageType: ''
    returnType: void
    signature: "void fetch_rfc822_size(struct imap_fetch_context *ctx, struct mail
      *mail,\n\t\t  void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_open
      Src: /src/dovecot/src/imap/imap-fetch-body.c:484,1
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/imap/imap-fetch-body.c:485,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-fetch-body.c:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - mail
    - _msgpart
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - struct imap_msgpart**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 494
    functionName: fetch_and_free_msgpart
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_free
    - imap_msgpart_open
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fetch_and_free_msgpart(struct imap_fetch_context *ctx,\n\t\t       struct
      mail *mail, struct imap_msgpart **_msgpart)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_full
      Src: /src/dovecot/src/imap/imap-fetch-body.c:503,1
    - Dst: fetch_state_update_stats
      Src: /src/dovecot/src/imap/imap-fetch-body.c:504,1
    - Dst: fetch_and_free_msgpart
      Src: /src/dovecot/src/imap/imap-fetch-body.c:505,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-fetch-body.c:508,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/imap-fetch-body.c:513,1
    - Dst: struct imap_fetch_context*::state::cont_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 497
    functionDepth: 2
    functionLinenumber: 497
    functionLinenumberEnd: 517
    functionName: fetch_rfc822
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - fetch_and_free_msgpart
    - fetch_state_update_stats
    - t_strdup_printf
    - imap_msgpart_full
    - o_stream_nsend_str
    - struct imap_fetch_context*::state::cont_handler
    linkageType: ''
    returnType: void
    signature: "void fetch_rfc822(struct imap_fetch_context *ctx, struct mail *mail,\n\t
      \    void *context ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_header
      Src: /src/dovecot/src/imap/imap-fetch-body.c:526,1
    - Dst: fetch_state_update_stats
      Src: /src/dovecot/src/imap/imap-fetch-body.c:527,1
    - Dst: fetch_and_free_msgpart
      Src: /src/dovecot/src/imap/imap-fetch-body.c:528,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-fetch-body.c:531,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/imap-fetch-body.c:536,1
    - Dst: struct imap_fetch_context*::state::cont_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:539,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 520
    functionDepth: 2
    functionLinenumber: 520
    functionLinenumberEnd: 540
    functionName: fetch_rfc822_header
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_header
    - fetch_and_free_msgpart
    - fetch_state_update_stats
    - t_strdup_printf
    - o_stream_nsend_str
    - struct imap_fetch_context*::state::cont_handler
    linkageType: ''
    returnType: void
    signature: "void fetch_rfc822_header(struct imap_fetch_context *ctx,\n\t\t    struct
      mail *mail, void *context ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_body
      Src: /src/dovecot/src/imap/imap-fetch-body.c:549,1
    - Dst: fetch_state_update_stats
      Src: /src/dovecot/src/imap/imap-fetch-body.c:550,1
    - Dst: fetch_and_free_msgpart
      Src: /src/dovecot/src/imap/imap-fetch-body.c:551,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-fetch-body.c:554,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/imap-fetch-body.c:559,1
    - Dst: struct imap_fetch_context*::state::cont_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 563
    functionName: fetch_rfc822_text
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - fetch_and_free_msgpart
    - fetch_state_update_stats
    - t_strdup_printf
    - imap_msgpart_body
    - o_stream_nsend_str
    - struct imap_fetch_context*::state::cont_handler
    linkageType: ''
    returnType: void
    signature: "void fetch_rfc822_text(struct imap_fetch_context *ctx, struct mail
      *mail,\n\t\t  void *context ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:573,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-fetch-body.c:578,1
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:580,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-fetch-body.c:584,1
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:586,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-fetch-body.c:590,1
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:593,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-fetch-body.c:598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 600
    functionName: imap_fetch_rfc822_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_handler
    - t_strconcat
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_rfc822_init(struct imap_fetch_init_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/imap/imap-fetch-body.c:613,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/imap/imap-fetch-body.c:621,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:640,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:642,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:644,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/imap/imap-fetch-body.c:646,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:648,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-fetch-body.c:650,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-fetch-body.c:651,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - mail
    - preview
    argTypes:
    - struct imap_fetch_context*
    - struct mail*
    - struct imap_fetch_preview_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 654
    functionName: fetch_snippet
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - str_append_c
    - imap_append_string
    - str_append
    - mail_get_special
    linkageType: ''
    returnType: void
    signature: "void fetch_snippet(struct imap_fetch_context *ctx, struct mail *mail,\n\t
      \     struct imap_fetch_preview_data *preview)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-fetch-body.c:663,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/imap/imap-fetch-body.c:677,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/imap-fetch-body.c:683,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-fetch-body.c:688,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-fetch-body.c:690,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-fetch-body.c:693,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-fetch-body.c:696,1
    - Dst: imap_fetch_add_handler
      Src: /src/dovecot/src/imap/imap-fetch-body.c:707,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - preview_cmd
    argTypes:
    - struct imap_fetch_init_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 710
    functionName: fetch_preview_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - p_new
    - imap_fetch_add_handler
    - t_strdup_printf
    - strcasecmp
    - imap_arg_get_atom
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: "bool fetch_preview_init(struct imap_fetch_init_context *ctx,\n\t\t\t
      \      bool preview_cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fetch_preview_init
      Src: /src/dovecot/src/imap/imap-fetch-body.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 712
    functionDepth: 2
    functionLinenumber: 712
    functionLinenumberEnd: 715
    functionName: imap_fetch_preview_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - fetch_preview_init
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_preview_init(struct imap_fetch_init_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fetch_preview_init
      Src: /src/dovecot/src/imap/imap-fetch-body.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_init_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 717
    functionDepth: 2
    functionLinenumber: 717
    functionLinenumberEnd: 720
    functionName: imap_fetch_snippet_init
    functionSourceFile: /src/dovecot/src/imap/imap-fetch-body.c
    functionUses: 0
    functionsReached:
    - fetch_preview_init
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_snippet_init(struct imap_fetch_init_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/imap/cmd-rename.c:14,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-rename.c:17,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-rename.c:20,1
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/imap/cmd-rename.c:27,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap/cmd-rename.c:28,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/cmd-rename.c:29,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-rename.c:30,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-rename.c:36,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-rename.c:37,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-rename.c:38,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-rename.c:39,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-rename.c:40,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-rename.c:41,1
    - Dst: mailbox_rename
      Src: /src/dovecot/src/imap/cmd-rename.c:42,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-rename.c:43,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-rename.c:45,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-rename.c:46,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-rename.c:47,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 7
    functionDepth: 5
    functionLinenumber: 7
    functionLinenumberEnd: 49
    functionName: cmd_rename
    functionSourceFile: /src/dovecot/src/imap/cmd-rename.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_free
    - client_find_namespace
    - str_begins
    - mailbox_rename
    - mailbox_list_get_namespace
    - client_read_string_args
    - client_send_tagline
    - mailbox_alloc
    - client_send_box_error
    - mailbox_get_vname
    - event_add_str
    linkageType: ''
    returnType: bool
    signature: bool cmd_rename(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/imap/cmd-compress.c:18,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-compress.c:19,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap/cmd-compress.c:21,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap/cmd-compress.c:23,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-compress.c:25,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 27
    functionName: client_skip_line
    functionSourceFile: /src/dovecot/src/imap/cmd-compress.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_stream_get_data
    - i_unreached
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void client_skip_line(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_set_streams
      Src: /src/dovecot/src/imap/cmd-compress.c:34,1
    - Dst: imap_parser_set_streams
      Src: /src/dovecot/src/imap/cmd-compress.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 42
    functionName: client_update_imap_parser_streams
    functionSourceFile: /src/dovecot/src/imap/cmd-compress.c
    functionUses: 0
    functionsReached:
    - imap_parser_set_streams
    linkageType: ''
    returnType: void
    signature: void client_update_imap_parser_streams(struct client *client)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-compress.c:54,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-compress.c:57,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-compress.c:58,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-compress.c:59,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-compress.c:64,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-compress.c:64,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/cmd-compress.c:66,1
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/imap/cmd-compress.c:69,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/imap/cmd-compress.c:69,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-compress.c:72,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-compress.c:74,1
    - Dst: client_skip_line
      Src: /src/dovecot/src/imap/cmd-compress.c:78,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/imap/cmd-compress.c:82,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-compress.c:83,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/imap/cmd-compress.c:94,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/imap/cmd-compress.c:96,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-compress.c:99,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-compress.c:100,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/cmd-compress.c:101,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-compress.c:102,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/cmd-compress.c:103,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-compress.c:104,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-compress.c:105,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/cmd-compress.c:106,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-compress.c:106,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-compress.c:110,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-compress.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-compress.c:116,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-compress.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-compress.c:121,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-compress.c:122,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/imap/cmd-compress.c:127,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/imap/cmd-compress.c:128,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/imap/cmd-compress.c:131,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/imap/cmd-compress.c:132,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/cmd-compress.c:133,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-compress.c:136,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/imap/cmd-compress.c:141,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/imap/cmd-compress.c:142,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-compress.c:146,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/imap/cmd-compress.c:147,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/imap/cmd-compress.c:150,1
    - Dst: client_add_missing_io
      Src: /src/dovecot/src/imap/cmd-compress.c:157,1
    - Dst: client_update_imap_parser_streams
      Src: /src/dovecot/src/imap/cmd-compress.c:160,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 67
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 163
    functionName: cmd_compress
    functionSourceFile: /src/dovecot/src/imap/cmd-compress.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - i_stream_get_data_size
    - str_len
    - compression_lookup_handler
    - io_remove
    - o_stream_unref
    - i_stream_ref
    - t_strdup_printf
    - client_read_args
    - str_append_tabescaped
    - t_str_new
    - client_update_imap_parser_streams
    - str_append_c
    - struct compression_handler*::create_istream
    - client_send_command_error
    - o_stream_nsend
    - IMAP_ARG_IS_EOL
    - imap_arg_get_atom
    - i_stream_destroy
    - str_data
    - struct compression_handler*::create_ostream_auto
    - client_send_tagline
    - client_skip_line
    - i_assert
    - o_stream_destroy
    - str_append
    - o_stream_multiplex_add_channel
    - client_add_missing_io
    - o_stream_set_no_error_handling
    - o_stream_ref
    - iostream_rawlog_create
    - i_stream_unref
    - t_str_lcase
    linkageType: ''
    returnType: bool
    signature: bool cmd_compress(struct client_command_context *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/imap/cmd-create.c:17,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-create.c:21,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/cmd-create.c:25,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/cmd-create.c:26,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/cmd-create.c:36,1
    - Dst: t_strndup
      Src: /src/dovecot/src/imap/cmd-create.c:37,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-create.c:40,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-create.c:41,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-create.c:41,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/imap/cmd-create.c:42,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-create.c:43,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-create.c:45,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-create.c:46,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 8
    functionDepth: 5
    functionLinenumber: 8
    functionLinenumberEnd: 48
    functionName: cmd_create
    functionSourceFile: /src/dovecot/src/imap/cmd-create.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_free
    - client_find_namespace
    - strlen
    - client_read_string_args
    - t_strndup
    - client_send_tagline
    - mailbox_alloc
    - client_send_box_error
    - mailbox_get_vname
    - mailbox_create
    - event_add_str
    linkageType: ''
    returnType: bool
    signature: bool cmd_create(struct client_command_context *cmd)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/imap-status.c:16,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-status.c:17,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-status.c:21,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/imap-status.c:22,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/imap-status.c:23,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-status.c:25,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/imap-status.c:30,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:31,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:33,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-status.c:34,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:37,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:39,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:41,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:43,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:45,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:47,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:49,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-status.c:51,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-status.c:54,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-status.c:54,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 3
    argNames:
    - cmd
    - args
    - items_r
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    - struct imap_status_items*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 62
    functionName: imap_status_parse_items
    functionSourceFile: /src/dovecot/src/imap/imap-status.c
    functionUses: 1
    functionsReached:
    - i_zero
    - strcmp
    - t_str_ucase
    - client_send_command_error
    - client_enabled_mailbox_features
    - imap_arg_get_atom
    - t_strconcat
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: int
    signature: "int imap_status_parse_items(struct client_command_context *cmd,\n\t\t\t
      \   const struct imap_arg *args,\n\t\t\t    struct imap_status_items *items_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:72,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:74,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:76,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:78,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:80,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:82,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:84,1
    - Dst: client_enable
      Src: /src/dovecot/src/imap/imap-status.c:85,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/imap-status.c:88,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:91,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/imap/imap-status.c:94,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/imap/imap-status.c:96,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 4
    argNames:
    - client
    - box
    - items
    - result_r
    argTypes:
    - struct client*
    - struct mailbox*
    - struct imap_status_items*
    - struct imap_status_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 99
    functionName: imap_status_get_result
    functionSourceFile: /src/dovecot/src/imap/imap-status.c
    functionUses: 1
    functionsReached:
    - mailbox_get_status
    - HAS_ANY_BITS
    - HAS_ALL_BITS
    - client_enable
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int imap_status_get_result(struct client *client, struct mailbox *box,\n\t\t\t
      \  const struct imap_status_items *items,\n\t\t\t   struct imap_status_result
      *result_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_equals
      Src: /src/dovecot/src/imap/imap-status.c:112,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/imap-status.c:117,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/imap/imap-status.c:118,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-status.c:118,1
    - Dst: imap_status_get_result
      Src: /src/dovecot/src/imap/imap-status.c:121,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/imap-status.c:123,1
    - Dst: imap_get_error_string
      Src: /src/dovecot/src/imap/imap-status.c:124,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-status.c:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - cmd
    - ns
    - mailbox
    - items
    - result_r
    argTypes:
    - struct client_command_context*
    - struct mail_namespace*
    - char*
    - struct imap_status_items*
    - struct imap_status_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 129
    functionName: imap_status_get
    functionSourceFile: /src/dovecot/src/imap/imap-status.c
    functionUses: 1
    functionsReached:
    - mailbox_enable
    - mailbox_get_last_error
    - mailbox_free
    - imap_status_get_result
    - mailbox_equals
    - imap_get_error_string
    - mailbox_alloc
    - client_enabled_mailbox_features
    linkageType: ''
    returnType: int
    signature: "int imap_status_get(struct client_command_context *cmd,\n\t\t    struct
      mail_namespace *ns, const char *mailbox,\n\t\t    const struct imap_status_items
      *items,\n\t\t    struct imap_status_result *result_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-status.c:135,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-status.c:141,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-status.c:142,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/imap-status.c:143,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-status.c:144,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-status.c:146,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:147,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:148,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-status.c:149,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:150,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:151,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:152,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:153,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:154,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:155,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:156,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:157,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:158,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:159,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:160,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:161,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:164,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:165,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:168,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:169,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-status.c:172,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-status.c:173,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/imap/imap-status.c:174,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-status.c:177,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-status.c:178,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-status.c:178,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-status.c:179,1
    - Dst: client_send_line_next
      Src: /src/dovecot/src/imap/imap-status.c:181,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-status.c:181,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 4
    argNames:
    - client
    - mailbox_mutf7
    - items
    - result
    argTypes:
    - struct client*
    - char*
    - struct imap_status_items*
    - struct imap_status_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 131
    functionDepth: 3
    functionLinenumber: 131
    functionLinenumberEnd: 182
    functionName: imap_status_send
    functionSourceFile: /src/dovecot/src/imap/imap-status.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - client_has_enabled
    - str_printfa
    - str_append_c
    - str_len
    - guid_128_to_string
    - imap_append_astring
    - client_enabled_mailbox_features
    - str_truncate
    - str_append
    - HAS_ALL_BITS
    - client_send_line_next
    linkageType: ''
    returnType: int
    signature: "int imap_status_send(struct client *client, const char *mailbox_mutf7,\n\t\t
      \    const struct imap_status_items *items,\n\t\t     const struct imap_status_result
      *result)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct imap_search_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 42
    functionName: imap_partial_range_parse
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int imap_partial_range_parse(struct imap_search_context *ctx, const
      char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap/imap-search.c:50,1
    - Dst: imap_fetch_att_list_parse
      Src: /src/dovecot/src/imap/imap-search.c:51,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:54,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-search.c:54,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-search.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - update_args
    argTypes:
    - struct imap_search_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 44
    functionDepth: 3
    functionLinenumber: 44
    functionLinenumberEnd: 60
    functionName: search_parse_fetch_att
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - imap_fetch_att_list_parse
    - pool_alloconly_create
    - pool_unref
    - client_send_command_error
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool search_parse_fetch_att(struct imap_search_context *ctx,\n\t\t
      \      const struct imap_arg *update_args)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/imap-search.c:71,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/imap-search.c:72,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:73,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/imap-search.c:77,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:79,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:81,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:83,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:85,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:87,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:89,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:91,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:93,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/imap-search.c:98,1
    - Dst: search_parse_fetch_att
      Src: /src/dovecot/src/imap/imap-search.c:99,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:103,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search.c:105,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:107,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/imap-search.c:112,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:113,1
    - Dst: imap_partial_range_parse
      Src: /src/dovecot/src/imap/imap-search.c:117,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:118,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:124,1
    - Dst: client_search_update_lookup
      Src: /src/dovecot/src/imap/imap-search.c:131,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:132,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search.c:137,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 66
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct imap_search_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 62
    functionDepth: 4
    functionLinenumber: 62
    functionLinenumberEnd: 145
    functionName: search_parse_return_options
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - imap_arg_get_list
    - imap_partial_range_parse
    - client_send_command_error
    - search_parse_fetch_att
    - imap_arg_get_atom
    - client_search_update_lookup
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool search_parse_return_options(struct imap_search_context *ctx,\n\t\t\t
      \   const struct imap_arg *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_search_args_check
      Src: /src/dovecot/src/imap/imap-search.c:160,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - sargs
    argTypes:
    - struct imap_search_context*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 166
    functionName: imap_search_args_check
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 1
    functionsReached:
    - imap_search_args_check
    linkageType: ''
    returnType: void
    signature: "void imap_search_args_check(struct imap_search_context *ctx,\n\t\t\t\t
      \  const struct mail_search_arg *sargs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-search.c:174,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-search.c:175,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-search.c:176,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-search.c:179,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:180,1
    - Dst: imap_append_quoted
      Src: /src/dovecot/src/imap/imap-search.c:181,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-search.c:182,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-search.c:183,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-search.c:183,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap/imap-search.c:184,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/imap-search.c:185,1
    - Dst: mailbox_search_result_save
      Src: /src/dovecot/src/imap/imap-search.c:188,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/imap-search.c:192,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap/imap-search.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 200
    functionName: imap_search_result_save
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - str_c
    - t_str_new
    - str_append_c
    - mailbox_search_result_save
    - ENUM_NEGATE
    - imap_search_context_free
    - array_append_space
    - i_strdup
    - client_send_line
    - array_count
    - str_append
    - array_is_created
    - imap_append_quoted
    linkageType: ''
    returnType: void
    signature: void imap_search_result_save(struct imap_search_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-search.c:208,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:209,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/imap-search.c:210,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-search.c:212,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-search.c:213,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-search.c:214,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-search.c:215,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-search.c:215,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-search.c:216,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-search.c:221,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:224,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-search.c:225,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-search.c:225,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-search.c:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 226
    functionName: imap_search_send_result_standard
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - array_foreach
    - o_stream_nsend
    - str_truncate
    - str_append
    linkageType: ''
    returnType: void
    signature: void imap_search_send_result_standard(struct imap_search_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-search.c:231,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-search.c:232,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:234,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/imap-search.c:236,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-search.c:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct imap_search_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 239
    functionName: imap_search_send_partial
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - imap_write_seq_range
    - array_count
    - str_append
    linkageType: ''
    returnType: void
    signature: void imap_search_send_partial(struct imap_search_context *ctx, string_t
      *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-search.c:248,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-search.c:260,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:263,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-search.c:265,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - dest
    argTypes:
    - struct imap_search_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 267
    functionName: imap_search_send_relevancy
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - str_append
    - array_get
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void imap_search_send_relevancy(struct imap_search_context *ctx, string_t
      *dest)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: imap_search_send_result_standard
      Src: /src/dovecot/src/imap/imap-search.c:275,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/imap-search.c:286,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:287,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/imap/imap-search.c:288,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-search.c:289,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:292,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-search.c:295,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-search.c:299,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-search.c:303,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:304,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/imap-search.c:305,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:308,1
    - Dst: imap_search_send_relevancy
      Src: /src/dovecot/src/imap/imap-search.c:309,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-search.c:310,1
    - Dst: imap_search_send_partial
      Src: /src/dovecot/src/imap/imap-search.c:314,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-search.c:317,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-search.c:319,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-search.c:322,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-search.c:323,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-search.c:323,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-search.c:323,1
    - Dst: str_free
      Src: /src/dovecot/src/imap/imap-search.c:324,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 325
    functionName: imap_search_send_result
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - imap_search_send_result_standard
    - str_data
    - imap_append_string
    - str_len
    - imap_write_seq_range
    - array_count
    - imap_search_send_partial
    - o_stream_nsend
    - str_append
    - str_new
    - str_free
    - imap_search_send_relevancy
    linkageType: ''
    returnType: void
    signature: void imap_search_send_result(struct imap_search_context *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/imap/imap-search.c:339,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/imap/imap-search.c:344,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/imap/imap-search.c:351,1
    - Dst: strtod
      Src: /src/dovecot/src/imap/imap-search.c:354,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-search.c:355,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct imap_search_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 360
    functionName: search_update_mail
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - array_push_back
    - strtod
    - mail_get_modseq
    - mail_get_special
    linkageType: ''
    returnType: void
    signature: void search_update_mail(struct imap_search_context *ctx, struct mail
      *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/imap/imap-search.c:370,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/imap-search.c:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - id
    argTypes:
    - struct imap_search_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 377
    functionName: search_add_result_id
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void search_add_result_id(struct imap_search_context *ctx, uint32_t
      id)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: imap_search_deinit
      Src: /src/dovecot/src/imap/imap-search.c:390,1
    - Dst: mailbox_search_next_nonblock
      Src: /src/dovecot/src/imap/imap-search.c:394,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/imap-search.c:401,1
    - Dst: search_update_mail
      Src: /src/dovecot/src/imap/imap-search.c:404,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/imap-search.c:406,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-search.c:408,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/imap/imap-search.c:408,1
    - Dst: search_add_result_id
      Src: /src/dovecot/src/imap/imap-search.c:409,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-search.c:412,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/imap/imap-search.c:412,1
    - Dst: search_add_result_id
      Src: /src/dovecot/src/imap/imap-search.c:415,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/imap/imap-search.c:416,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/imap/imap-search.c:422,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/imap-search.c:428,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/imap-search.c:431,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/imap-search.c:436,1
    - Dst: search_update_mail
      Src: /src/dovecot/src/imap/imap-search.c:439,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/imap-search.c:446,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/imap/imap-search.c:449,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/imap/imap-search.c:450,1
    - Dst: search_update_mail
      Src: /src/dovecot/src/imap/imap-search.c:451,1
    - Dst: mail_free
      Src: /src/dovecot/src/imap/imap-search.c:452,1
    - Dst: mailbox_search_seen_lost_data
      Src: /src/dovecot/src/imap/imap-search.c:455,1
    - Dst: imap_search_deinit
      Src: /src/dovecot/src/imap/imap-search.c:456,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/imap-search.c:457,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-search.c:464,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/imap-search.c:467,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 56
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 379
    functionDepth: 2
    functionLinenumber: 379
    functionLinenumberEnd: 468
    functionName: cmd_search_more
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - imap_search_deinit
    - mailbox_search_seen_lost_data
    - mail_alloc
    - HAS_ANY_BITS
    - t_strdup_printf
    - mailbox_search_next_nonblock
    - search_update_mail
    - mail_set_seq
    - HAS_NO_BITS
    - client_send_box_error
    - search_add_result_id
    - mail_free
    - HAS_ALL_BITS
    - i_assert
    - cmd_sync
    linkageType: ''
    returnType: bool
    signature: bool cmd_search_more(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/imap-search.c:475,1
    - Dst: command_exec
      Src: /src/dovecot/src/imap/imap-search.c:476,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/imap-search.c:477,1
    - Dst: client_handle_unfinished_cmd
      Src: /src/dovecot/src/imap/imap-search.c:480,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-search.c:482,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/imap-search.c:483,1
    - Dst: client_continue_pending_input
      Src: /src/dovecot/src/imap/imap-search.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 470
    functionDepth: 4
    functionLinenumber: 470
    functionLinenumberEnd: 486
    functionName: cmd_search_more_callback
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 0
    functionsReached:
    - client_handle_unfinished_cmd
    - o_stream_uncork
    - o_stream_cork
    - cmd_sync_delayed
    - client_command_free
    - command_exec
    - client_continue_pending_input
    linkageType: ''
    returnType: void
    signature: void cmd_search_more_callback(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/imap-search.c:494,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/imap-search.c:495,1
    - Dst: search_parse_return_options
      Src: /src/dovecot/src/imap/imap-search.c:500,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/imap-search.c:501,1
    - Dst: client_handle_search_save_ambiguity
      Src: /src/dovecot/src/imap/imap-search.c:507,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/imap-search.c:508,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - _args
    argTypes:
    - struct imap_search_context*
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 488
    functionDepth: 5
    functionLinenumber: 488
    functionLinenumberEnd: 517
    functionName: cmd_search_parse_return_if_found
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 2
    functionsReached:
    - imap_arg_get_list
    - imap_search_context_free
    - imap_arg_atom_equals
    - client_handle_search_save_ambiguity
    - search_parse_return_options
    linkageType: ''
    returnType: int
    signature: "int cmd_search_parse_return_if_found(struct imap_search_context *ctx,\n\t\t\t\t
      \    const struct imap_arg **_args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_search_args_check
      Src: /src/dovecot/src/imap/imap-search.c:525,1
    - Dst: client_enable
      Src: /src/dovecot/src/imap/imap-search.c:529,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/imap-search.c:533,1
    - Dst: imap_client_command_get_reason
      Src: /src/dovecot/src/imap/imap-search.c:534,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/imap-search.c:537,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-search.c:539,1
    - Dst: imap_search_result_save
      Src: /src/dovecot/src/imap/imap-search.c:541,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-search.c:543,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-search.c:546,1
    - Dst: cmd_search_more
      Src: /src/dovecot/src/imap/imap-search.c:551,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap/imap-search.c:556,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - sargs
    - sort_program
    argTypes:
    - struct imap_search_context*
    - struct mail_search_args*
    - enum mail_sort_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 560
    functionName: imap_search_start
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - imap_search_args_check
    - i_assert
    - mailbox_transaction_begin
    - imap_client_command_get_reason
    - timeout_add
    - imap_search_result_save
    - cmd_search_more
    - mailbox_search_init
    - client_enable
    linkageType: ''
    returnType: bool
    signature: "bool imap_search_start(struct imap_search_context *ctx,\n\t\t       struct
      mail_search_args *sargs,\n\t\t       const enum mail_sort_type *sort_program)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/imap-search.c:566,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-search.c:573,1
    - Dst: imap_search_send_result
      Src: /src/dovecot/src/imap/imap-search.c:574,1
    - Dst: array_clear
      Src: /src/dovecot/src/imap/imap-search.c:579,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/imap-search.c:582,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/imap-search.c:584,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-search.c:585,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-search.c:586,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-search.c:587,1
    - Dst: mail_search_args_deinit
      Src: /src/dovecot/src/imap/imap-search.c:588,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-search.c:589,1
    - Dst: imap_search_context_free
      Src: /src/dovecot/src/imap/imap-search.c:590,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 562
    functionDepth: 3
    functionLinenumber: 562
    functionLinenumberEnd: 594
    functionName: imap_search_deinit
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 1
    functionsReached:
    - imap_search_context_free
    - mail_search_args_deinit
    - array_count
    - mailbox_search_deinit
    - array_clear
    - mailbox_transaction_commit
    - array_is_created
    - mail_search_args_unref
    - array_free
    - imap_search_send_result
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int imap_search_deinit(struct imap_search_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/imap-search.c:599,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-search.c:600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 596
    functionDepth: 4
    functionLinenumber: 596
    functionLinenumberEnd: 602
    functionName: imap_search_context_free
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 5
    functionsReached:
    - pool_unref
    - imap_fetch_free
    linkageType: ''
    returnType: void
    signature: void imap_search_context_free(struct imap_search_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/imap-search.c:607,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-search.c:608,1
    - Dst: mailbox_search_result_free
      Src: /src/dovecot/src/imap/imap-search.c:610,1
    - Dst: i_free
      Src: /src/dovecot/src/imap/imap-search.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct imap_search_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 604
    functionDepth: 4
    functionLinenumber: 604
    functionLinenumberEnd: 612
    functionName: imap_search_update_free
    functionSourceFile: /src/dovecot/src/imap/imap-search.c
    functionUses: 2
    functionsReached:
    - i_free
    - mailbox_search_result_free
    - pool_unref
    - imap_fetch_free
    linkageType: ''
    returnType: void
    signature: void imap_search_update_free(struct imap_search_update *update)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/cmd-idle.c:31,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/cmd-idle.c:32,1
    - Dst: imap_sync_deinit
      Src: /src/dovecot/src/imap/cmd-idle.c:36,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/imap/cmd-idle.c:39,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/cmd-idle.c:40,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/cmd-idle.c:41,1
    - Dst: mailbox_notify_changes_stop
      Src: /src/dovecot/src/imap/cmd-idle.c:44,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-idle.c:47,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-idle.c:49,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/cmd-idle.c:52,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/cmd-idle.c:54,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - done_ok
    - free_cmd
    argTypes:
    - struct cmd_idle_context*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 26
    functionDepth: 3
    functionLinenumber: 26
    functionLinenumberEnd: 55
    functionName: idle_finish
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - io_remove
    - o_stream_cork
    - client_send_tagline
    - imap_sync_deinit
    - client_command_free
    - o_stream_is_corked
    - mailbox_notify_changes_stop
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void idle_finish(struct cmd_idle_context *ctx, bool done_ok, bool free_cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/imap/cmd-idle.c:62,1
    - Dst: idle_finish
      Src: /src/dovecot/src/imap/cmd-idle.c:66,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-idle.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - free_cmd
    argTypes:
    - struct cmd_idle_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 72
    functionName: idle_client_handle_input
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - idle_finish
    - i_stream_next_line
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool idle_client_handle_input(struct cmd_idle_context *ctx, bool free_cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap/cmd-idle.c:79,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap/cmd-idle.c:81,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/cmd-idle.c:84,1
    - Dst: idle_finish
      Src: /src/dovecot/src/imap/cmd-idle.c:88,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/cmd-idle.c:95,1
    - Dst: idle_client_handle_input
      Src: /src/dovecot/src/imap/cmd-idle.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_idle_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 100
    functionName: idle_client_input_more
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - idle_finish
    - io_remove
    - timeout_reset
    - client_disconnect
    - idle_client_handle_input
    - i_stream_read
    linkageType: ''
    returnType: bool
    signature: bool idle_client_input_more(struct cmd_idle_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: idle_client_input_more
      Src: /src/dovecot/src/imap/cmd-idle.c:106,1
    - Dst: client_continue_pending_input
      Src: /src/dovecot/src/imap/cmd-idle.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_idle_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 6
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: idle_client_input
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - idle_client_input_more
    - client_continue_pending_input
    linkageType: ''
    returnType: void
    signature: void idle_client_input(struct cmd_idle_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/cmd-idle.c:117,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/cmd-idle.c:122,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-idle.c:123,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/cmd-idle.c:124,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap/cmd-idle.c:129,1
    - Dst: idle_add_keepalive_timeout
      Src: /src/dovecot/src/imap/cmd-idle.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_idle_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: keepalive_timeout
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 1
    functionsReached:
    - o_stream_uncork
    - timeout_reset
    - o_stream_cork
    - idle_add_keepalive_timeout
    - client_send_line
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: void
    signature: void keepalive_timeout(struct cmd_idle_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-idle.c:136,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/cmd-idle.c:140,1
    - Dst: imap_sync_init
      Src: /src/dovecot/src/imap/cmd-idle.c:143,1
    - Dst: cmd_idle_continue
      Src: /src/dovecot/src/imap/cmd-idle.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - box
    - ctx
    argTypes:
    - struct mailbox*
    - struct cmd_idle_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 145
    functionName: idle_sync_now
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - cmd_idle_continue
    - i_assert
    - imap_sync_init
    - timeout_remove
    linkageType: ''
    returnType: bool
    signature: bool idle_sync_now(struct mailbox *box, struct cmd_idle_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: idle_sync_now
      Src: /src/dovecot/src/imap/cmd-idle.c:155,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/cmd-idle.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - box
    - ctx
    argTypes:
    - struct mailbox*
    - struct cmd_idle_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 159
    functionName: idle_callback
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - idle_sync_now
    linkageType: ''
    returnType: void
    signature: void idle_callback(struct mailbox *box, struct cmd_idle_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_keepalive_interval_msecs
      Src: /src/dovecot/src/imap/cmd-idle.c:169,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/cmd-idle.c:173,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap/cmd-idle.c:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_idle_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 175
    functionName: idle_add_keepalive_timeout
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 1
    functionsReached:
    - timeout_add
    - imap_keepalive_interval_msecs
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void idle_add_keepalive_timeout(struct cmd_idle_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-idle.c:182,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-idle.c:183,1
    - Dst: imap_client_hibernate
      Src: /src/dovecot/src/imap/cmd-idle.c:185,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap/cmd-idle.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_idle_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 191
    functionName: idle_hibernate_timeout
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - imap_client_hibernate
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void idle_hibernate_timeout(struct cmd_idle_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-idle.c:197,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap/cmd-idle.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_idle_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 204
    functionName: idle_add_hibernate_timeout
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: void
    signature: void idle_add_hibernate_timeout(struct cmd_idle_context *ctx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: idle_finish
      Src: /src/dovecot/src/imap/cmd-idle.c:213,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap/cmd-idle.c:218,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/cmd-idle.c:223,1
    - Dst: imap_sync_more
      Src: /src/dovecot/src/imap/cmd-idle.c:227,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/cmd-idle.c:231,1
    - Dst: imap_sync_deinit
      Src: /src/dovecot/src/imap/cmd-idle.c:237,1
    - Dst: client_send_untagged_storage_error
      Src: /src/dovecot/src/imap/cmd-idle.c:238,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/imap/cmd-idle.c:239,1
    - Dst: mailbox_notify_changes_stop
      Src: /src/dovecot/src/imap/cmd-idle.c:240,1
    - Dst: idle_add_keepalive_timeout
      Src: /src/dovecot/src/imap/cmd-idle.c:246,1
    - Dst: idle_sync_now
      Src: /src/dovecot/src/imap/cmd-idle.c:254,1
    - Dst: idle_add_hibernate_timeout
      Src: /src/dovecot/src/imap/cmd-idle.c:257,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/cmd-idle.c:262,1
    - Dst: idle_finish
      Src: /src/dovecot/src/imap/cmd-idle.c:266,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/imap/cmd-idle.c:272,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/imap/cmd-idle.c:274,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 206
    functionDepth: 4
    functionLinenumber: 206
    functionLinenumberEnd: 277
    functionName: cmd_idle_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 1
    functionsReached:
    - mailbox_get_storage
    - idle_sync_now
    - o_stream_uncork
    - io_add_istream
    - idle_finish
    - i_stream_set_input_pending
    - timeout_reset
    - o_stream_cork
    - idle_add_hibernate_timeout
    - idle_add_keepalive_timeout
    - imap_sync_deinit
    - imap_sync_more
    - mailbox_notify_changes_stop
    - client_send_untagged_storage_error
    linkageType: ''
    returnType: bool
    signature: bool cmd_idle_continue(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-idle.c:284,1
    - Dst: idle_add_keepalive_timeout
      Src: /src/dovecot/src/imap/cmd-idle.c:287,1
    - Dst: idle_add_hibernate_timeout
      Src: /src/dovecot/src/imap/cmd-idle.c:288,1
    - Dst: mailbox_notify_changes
      Src: /src/dovecot/src/imap/cmd-idle.c:291,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-idle.c:293,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/cmd-idle.c:299,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/imap/cmd-idle.c:300,1
    - Dst: idle_sync_now
      Src: /src/dovecot/src/imap/cmd-idle.c:308,1
    - Dst: idle_client_handle_input
      Src: /src/dovecot/src/imap/cmd-idle.c:311,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 279
    functionDepth: 5
    functionLinenumber: 279
    functionLinenumberEnd: 312
    functionName: cmd_idle
    functionSourceFile: /src/dovecot/src/imap/cmd-idle.c
    functionUses: 0
    functionsReached:
    - idle_sync_now
    - p_new
    - io_add_istream
    - io_remove
    - idle_add_hibernate_timeout
    - idle_add_keepalive_timeout
    - client_send_line
    - idle_client_handle_input
    - mailbox_notify_changes
    linkageType: ''
    returnType: bool
    signature: bool cmd_idle(struct client_command_context *cmd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:49,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:50,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:52,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:53,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:54,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:58,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:60,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:61,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:65,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:67,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:69,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:72,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:77,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - options
    argTypes:
    - struct imap_getmetadata_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 83
    functionName: cmd_getmetadata_parse_options
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_to_uint32
    - client_send_command_error
    - imap_arg_get_atom
    - imap_arg_atom_equals
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool cmd_getmetadata_parse_options(struct imap_getmetadata_context
      *ctx,\n\t\t\t      const struct imap_arg *options)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:91,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:92,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:93,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:94,1
    - Dst: imap_metadata_verify_entry_name
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:97,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:98,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:103,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:103,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - entries
    argTypes:
    - struct imap_getmetadata_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 85
    functionDepth: 3
    functionLinenumber: 85
    functionLinenumberEnd: 107
    functionName: imap_metadata_parse_entry_names
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - imap_metadata_verify_entry_name
    - p_array_init
    - array_push_back
    - client_send_command_error
    - t_str_lcase
    - IMAP_ARG_IS_EOL
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: "bool imap_metadata_parse_entry_names(struct imap_getmetadata_context
      *ctx,\n\t\t\t\tconst struct imap_arg *entries)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:116,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:118,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:121,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:124,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:126,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:126,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:128,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:128,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:129,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:130,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:130,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:132,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:137,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:139,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - entry
    argTypes:
    - struct imap_getmetadata_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 141
    functionName: metadata_add_entry
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - i_unreached
    - imap_utf8_to_utf7
    - imap_append_astring
    - mailbox_get_vname
    - str_append
    linkageType: ''
    returnType: string_t
    signature: 'string_t *

      metadata_add_entry(struct imap_getmetadata_context *ctx, const char *entry)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: metadata_add_entry
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:151,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:152,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:153,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:153,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - entry
    argTypes:
    - struct imap_getmetadata_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 154
    functionName: cmd_getmetadata_send_nil_reply
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - o_stream_nsend
    - metadata_add_entry
    - str_append
    linkageType: ''
    returnType: void
    signature: "void cmd_getmetadata_send_nil_reply(struct imap_getmetadata_context
      *ctx,\n\t\t\t       const char *entry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:161,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:162,1
    - Dst: str_append_str
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:163,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:164,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:165,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - error_string
    - error
    argTypes:
    - struct imap_getmetadata_context*
    - char*
    - enum mail_error
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 169
    functionName: cmd_getmetadata_handle_error_str
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_truncate
    - str_append_str
    - str_len
    linkageType: ''
    returnType: void
    signature: "void cmd_getmetadata_handle_error_str(struct imap_getmetadata_context
      *ctx,\n\t\t\t\t const char *error_string,\n\t\t\t\t enum mail_error error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_metadata_transaction_get_last_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:177,1
    - Dst: cmd_getmetadata_handle_error_str
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:196,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_getmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 198
    functionName: cmd_getmetadata_handle_error
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - cmd_getmetadata_handle_error_str
    - imap_metadata_transaction_get_last_error
    linkageType: ''
    returnType: bool
    signature: bool cmd_getmetadata_handle_error(struct imap_getmetadata_context *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: imap_metadata_get_stream
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:208,1
    - Dst: cmd_getmetadata_handle_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:209,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:214,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:216,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:217,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:219,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:220,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:221,1
    - Dst: cmd_getmetadata_handle_error_str
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:222,1
    - Dst: cmd_getmetadata_send_nil_reply
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:229,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:238,1
    - Dst: metadata_add_entry
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:242,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:244,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:245,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:245,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:245,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:247,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:248,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:248,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:248,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:250,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:251,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - entry
    - require_reply
    argTypes:
    - struct imap_getmetadata_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 200
    functionDepth: 3
    functionLinenumber: 200
    functionLinenumberEnd: 253
    functionName: cmd_getmetadata_send_entry
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - imap_metadata_get_stream
    - str_printfa
    - cmd_getmetadata_send_nil_reply
    - str_data
    - str_len
    - cmd_getmetadata_handle_error
    - strlen
    - e_error
    - i_stream_get_size
    - i_stream_get_error
    - cmd_getmetadata_handle_error_str
    - metadata_add_entry
    - o_stream_nsend
    - i_stream_create_sized
    - i_stream_unref
    - i_stream_get_name
    linkageType: ''
    returnType: void
    signature: "void cmd_getmetadata_send_entry(struct imap_getmetadata_context *ctx,\n\t\t\t\t
      \      const char *entry, bool require_reply)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:260,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:261,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:262,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:268,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:272,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:273,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:274,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:275,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_getmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 283
    functionName: cmd_getmetadata_stream_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - o_stream_send_istream
    - client_disconnect
    - e_error
    - i_stream_get_error
    - i_stream_get_name
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: bool
    signature: bool cmd_getmetadata_stream_continue(struct imap_getmetadata_context
      *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:291,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:293,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:294,1
    - Dst: imap_metadata_iter_next
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:304,1
    - Dst: imap_metadata_iter_deinit
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:307,1
    - Dst: cmd_getmetadata_handle_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:308,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:309,1
    - Dst: strchr
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:313,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:314,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:314,1
    - Dst: cmd_getmetadata_send_entry
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:317,1
    - Dst: cmd_getmetadata_stream_continue
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:320,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:322,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:333,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:334,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:335,1
    - Dst: imap_metadata_iter_init
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:337,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - entry
    argTypes:
    - struct imap_getmetadata_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 285
    functionDepth: 4
    functionLinenumber: 285
    functionLinenumberEnd: 340
    functionName: cmd_getmetadata_send_entry_tree
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_c
    - cmd_getmetadata_stream_continue
    - str_append_c
    - i_unreached
    - str_append
    - cmd_getmetadata_handle_error
    - cmd_getmetadata_send_entry
    - imap_metadata_iter_deinit
    - imap_metadata_iter_next
    - o_stream_set_flush_pending
    - o_stream_get_buffer_used_size
    - str_truncate
    - i_stream_unref
    - o_stream_flush
    - t_strconcat
    - imap_metadata_iter_init
    linkageType: ''
    returnType: int
    signature: "int cmd_getmetadata_send_entry_tree(struct imap_getmetadata_context
      *ctx,\n\t\t\t\t\t   const char *entry)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_metadata_iter_deinit
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:345,1
    - Dst: imap_metadata_transaction_commit
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:347,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_getmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 352
    functionName: cmd_getmetadata_iter_deinit
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - imap_metadata_iter_deinit
    - imap_metadata_transaction_commit
    linkageType: ''
    returnType: void
    signature: void cmd_getmetadata_iter_deinit(struct imap_getmetadata_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cmd_getmetadata_iter_deinit
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:358,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:362,1
    - Dst: client_send_list_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:363,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:365,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:365,1
    - Dst: imap_get_error_string
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:367,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:367,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:369,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:371,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:371,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:375,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_getmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 377
    functionName: cmd_getmetadata_deinit
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - str_c
    - mailbox_list_iter_deinit
    - str_len
    - client_send_tagline
    - t_strdup_printf
    - imap_get_error_string
    - client_send_list_error
    - cmd_getmetadata_iter_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void cmd_getmetadata_deinit(struct imap_getmetadata_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: cmd_getmetadata_deinit
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:387,1
    - Dst: cmd_getmetadata_stream_continue
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:392,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:394,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:397,1
    - Dst: cmd_getmetadata_send_entry_tree
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:401,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:408,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:410,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:411,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:412,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:413,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:414,1
    - Dst: cmd_getmetadata_iter_deinit
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:417,1
    - Dst: cmd_getmetadata_mailbox_iter_next
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:419,1
    - Dst: cmd_getmetadata_deinit
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:420,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 379
    functionDepth: 5
    functionLinenumber: 379
    functionLinenumberEnd: 422
    functionName: cmd_getmetadata_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - cmd_getmetadata_stream_continue
    - str_data
    - str_len
    - array_get
    - cmd_getmetadata_iter_deinit
    - o_stream_nsend
    - str_truncate
    - i_stream_unref
    - o_stream_nsend_str
    - cmd_getmetadata_deinit
    - cmd_getmetadata_mailbox_iter_next
    - cmd_getmetadata_send_entry_tree
    linkageType: ''
    returnType: bool
    signature: bool cmd_getmetadata_continue(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:430,1
    - Dst: imap_metadata_transaction_validated_only
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:431,1
    - Dst: cmd_getmetadata_continue
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_getmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 424
    functionDepth: 6
    functionLinenumber: 424
    functionLinenumberEnd: 440
    functionName: cmd_getmetadata_start
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - cmd_getmetadata_continue
    - str_new
    - imap_metadata_transaction_validated_only
    linkageType: ''
    returnType: bool
    signature: bool cmd_getmetadata_start(struct imap_getmetadata_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_metadata_transaction_begin_server
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:445,1
    - Dst: cmd_getmetadata_start
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_getmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 442
    functionDepth: 7
    functionLinenumber: 442
    functionLinenumberEnd: 447
    functionName: cmd_getmetadata_server
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - cmd_getmetadata_start
    - imap_metadata_transaction_begin_server
    linkageType: ''
    returnType: bool
    signature: bool cmd_getmetadata_server(struct imap_getmetadata_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:453,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:454,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:455,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:458,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:461,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:462,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:463,1
    - Dst: imap_metadata_transaction_begin
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:467,1
    - Dst: cmd_getmetadata_start
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - ns
    - mailbox
    argTypes:
    - struct imap_getmetadata_context*
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 449
    functionDepth: 7
    functionLinenumber: 449
    functionLinenumberEnd: 469
    functionName: cmd_getmetadata_try_mailbox
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - cmd_getmetadata_start
    - mailbox_alloc
    - mailbox_get_vname
    - event_add_str
    - imap_metadata_transaction_begin
    - mail_storage_set_error
    - mailbox_exists
    linkageType: ''
    returnType: int
    signature: "int cmd_getmetadata_try_mailbox(struct imap_getmetadata_context *ctx,\n\t\t\t
      \   struct mail_namespace *ns, const char *mailbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cmd_getmetadata_try_mailbox
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:477,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:479,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - ns
    - mailbox
    argTypes:
    - struct imap_getmetadata_context*
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 471
    functionDepth: 8
    functionLinenumber: 471
    functionLinenumberEnd: 483
    functionName: cmd_getmetadata_mailbox
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - cmd_getmetadata_try_mailbox
    - mailbox_free
    - client_send_box_error
    linkageType: ''
    returnType: bool
    signature: "bool cmd_getmetadata_mailbox(struct imap_getmetadata_context *ctx,\n\t\t\tstruct
      mail_namespace *ns, const char *mailbox)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:491,1
    - Dst: cmd_getmetadata_try_mailbox
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:494,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:505,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:505,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:507,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:509,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_getmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 485
    functionDepth: 8
    functionLinenumber: 485
    functionLinenumberEnd: 510
    functionName: cmd_getmetadata_mailbox_iter_next
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 1
    functionsReached:
    - mailbox_get_last_error
    - mailbox_free
    - mailbox_list_iter_next
    - t_strdup_printf
    - client_send_line
    - cmd_getmetadata_try_mailbox
    linkageType: ''
    returnType: bool
    signature: bool cmd_getmetadata_mailbox_iter_next(struct imap_getmetadata_context
      *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:522,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:525,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:529,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:530,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:532,1
    - Dst: cmd_getmetadata_parse_options
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:533,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:537,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:538,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:541,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:542,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:543,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:544,1
    - Dst: imap_metadata_parse_entry_names
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:549,1
    - Dst: cmd_getmetadata_server
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:554,1
    - Dst: strchr
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:555,1
    - Dst: strchr
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:556,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:558,1
    - Dst: cmd_getmetadata_mailbox
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:561,1
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:571,1
    - Dst: cmd_getmetadata_mailbox_iter_next
      Src: /src/dovecot/src/imap/cmd-getmetadata.c:574,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 515
    functionDepth: 9
    functionLinenumber: 515
    functionLinenumberEnd: 576
    functionName: cmd_getmetadata
    functionSourceFile: /src/dovecot/src/imap/cmd-getmetadata.c
    functionUses: 0
    functionsReached:
    - strchr
    - imap_arg_get_list
    - p_new
    - imap_metadata_parse_entry_names
    - client_find_namespace
    - cmd_getmetadata_parse_options
    - client_read_args
    - client_send_command_error
    - cmd_getmetadata_mailbox
    - mailbox_list_iter_init_namespaces
    - IMAP_ARG_IS_EOL
    - str_new
    - cmd_getmetadata_mailbox_iter_next
    - cmd_getmetadata_server
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_getmetadata(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-notify.c:30,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/imap/cmd-notify.c:33,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:34,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - arg
    - event_r
    argTypes:
    - struct imap_arg*
    - enum imap_notify_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 40
    functionName: cmd_notify_parse_event
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_atom
    - N_ELEMENTS
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int cmd_notify_parse_event(const struct imap_arg *arg,\n\t\t       enum
      imap_notify_event *event_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_att_list_parse
      Src: /src/dovecot/src/imap/cmd-notify.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - list
    argTypes:
    - struct imap_notify_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 51
    functionName: cmd_notify_parse_fetch
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - imap_fetch_att_list_parse
    linkageType: ''
    returnType: int
    signature: "int cmd_notify_parse_fetch(struct imap_notify_context *ctx,\n\t\t
      \      const struct imap_arg *list)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cmd_notify_parse_event
      Src: /src/dovecot/src/imap/cmd-notify.c:66,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-notify.c:72,1
    - Dst: cmd_notify_parse_fetch
      Src: /src/dovecot/src/imap/cmd-notify.c:74,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - list
    - parse_fetch
    - mask_r
    argTypes:
    - struct imap_notify_context*
    - struct imap_arg*
    - bool
    - enum imap_notify_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 97
    functionName: cmd_notify_parse_event_list
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - cmd_notify_parse_fetch
    - imap_arg_get_list
    - cmd_notify_parse_event
    linkageType: ''
    returnType: bool
    signature: "bool cmd_notify_parse_event_list(struct imap_notify_context *ctx,\n\t\t\t
      \   const struct imap_arg *list,\n\t\t\t    bool parse_fetch,\n\t\t\t    enum
      imap_notify_event *mask_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-notify.c:106,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:107,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-notify.c:115,1
    - Dst: cmd_notify_parse_event_list
      Src: /src/dovecot/src/imap/cmd-notify.c:121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - events
    argTypes:
    - struct imap_notify_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 99
    functionDepth: 5
    functionLinenumber: 99
    functionLinenumberEnd: 124
    functionName: cmd_notify_set_selected
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_atom
    - imap_arg_get_list
    - strcasecmp
    - cmd_notify_parse_event_list
    linkageType: ''
    returnType: int
    signature: "int cmd_notify_set_selected(struct imap_notify_context *ctx,\n\t\t\tconst
      struct imap_arg *events)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/cmd-notify.c:132,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/cmd-notify.c:136,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-notify.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - ns
    argTypes:
    - struct imap_notify_context*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 141
    functionName: imap_notify_namespace_get
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_append_space
    - p_array_init
    linkageType: ''
    returnType: struct imap_notify_namespace
    signature: "struct imap_notify_namespace *\nimap_notify_namespace_get(struct imap_notify_context
      *ctx,\n\t\t\t  struct mail_namespace *ns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/cmd-notify.c:150,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/cmd-notify.c:155,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-notify.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - notify_ns
    - type
    - events
    argTypes:
    - struct imap_notify_namespace*
    - enum imap_notify_type
    - enum imap_notify_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 160
    functionName: imap_notify_mailboxes_get
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_append_space
    - p_array_init
    linkageType: ''
    returnType: struct imap_notify_mailboxes
    signature: "struct imap_notify_mailboxes *\nimap_notify_mailboxes_get(struct imap_notify_namespace
      *notify_ns,\n\t\t\t  enum imap_notify_type type,\n\t\t\t  enum imap_notify_event
      events)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/cmd-notify.c:172,1
    - Dst: mail_namespace_is_removable
      Src: /src/dovecot/src/imap/cmd-notify.c:174,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap/cmd-notify.c:180,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/imap/cmd-notify.c:181,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-notify.c:185,1
    - Dst: imap_notify_namespace_get
      Src: /src/dovecot/src/imap/cmd-notify.c:188,1
    - Dst: imap_notify_mailboxes_get
      Src: /src/dovecot/src/imap/cmd-notify.c:189,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/cmd-notify.c:191,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-notify.c:193,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap/cmd-notify.c:201,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap/cmd-notify.c:206,1
    - Dst: array_delete
      Src: /src/dovecot/src/imap/cmd-notify.c:209,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/cmd-notify.c:210,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/cmd-notify.c:216,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-notify.c:217,1
    - Dst: I_MAX
      Src: /src/dovecot/src/imap/cmd-notify.c:220,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/cmd-notify.c:221,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 5
    argNames:
    - ctx
    - ns
    - name
    - type
    - events
    argTypes:
    - struct imap_notify_context*
    - struct mail_namespace*
    - char*
    - enum imap_notify_type
    - enum imap_notify_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 222
    functionName: cmd_notify_add_mailbox
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_get_sep
    - array_delete
    - p_strdup
    - str_begins_with
    - mail_namespace_is_removable
    - array_push_back
    - str_begins
    - array_get
    - I_MAX
    - str_begins_icase_with
    - array_count
    - imap_notify_mailboxes_get
    - imap_notify_namespace_get
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void cmd_notify_add_mailbox(struct imap_notify_context *ctx,\n\t\t
      \      struct mail_namespace *ns, const char *name,\n\t\t       enum imap_notify_type
      type,\n\t\t       enum imap_notify_event events)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cmd_notify_add_mailbox
      Src: /src/dovecot/src/imap/cmd-notify.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - events
    argTypes:
    - struct imap_notify_context*
    - enum imap_notify_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 235
    functionName: cmd_notify_add_personal
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - cmd_notify_add_mailbox
    linkageType: ''
    returnType: void
    signature: "void cmd_notify_add_personal(struct imap_notify_context *ctx,\n\t\t\t\t
      \   enum imap_notify_event events)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/imap/cmd-notify.c:249,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/imap/cmd-notify.c:250,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/imap/cmd-notify.c:251,1
    - Dst: client_send_list_error
      Src: /src/dovecot/src/imap/cmd-notify.c:252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - cmd
    - ctx
    argTypes:
    - struct client_command_context*
    - struct imap_notify_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 257
    functionName: imap_notify_refresh_subscriptions
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - client_send_list_error
    - mailbox_list_iter_next
    - mailbox_list_iter_deinit
    - mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: "int imap_notify_refresh_subscriptions(struct client_command_context
      *cmd,\n\t\t\t\t  struct imap_notify_context *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_notify_add_mailbox
      Src: /src/dovecot/src/imap/cmd-notify.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - events
    argTypes:
    - struct imap_notify_context*
    - enum imap_notify_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 259
    functionDepth: 3
    functionLinenumber: 259
    functionLinenumberEnd: 269
    functionName: cmd_notify_add_subscribed
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - cmd_notify_add_mailbox
    linkageType: ''
    returnType: void
    signature: "void cmd_notify_add_subscribed(struct imap_notify_context *ctx,\n\t\t\t\t
      \     enum imap_notify_event events)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/imap/cmd-notify.c:279,1
    - Dst: cmd_notify_add_mailbox
      Src: /src/dovecot/src/imap/cmd-notify.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctx
    - name
    - type
    - events
    argTypes:
    - struct imap_notify_context*
    - char*
    - enum imap_notify_type
    - enum imap_notify_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 281
    functionName: cmd_notify_add_mailbox_namespaces
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - cmd_notify_add_mailbox
    - mail_namespace_find
    linkageType: ''
    returnType: void
    signature: "void cmd_notify_add_mailbox_namespaces(struct imap_notify_context
      *ctx,\n\t\t\t\t  const char *name,\n\t\t\t\t  enum imap_notify_type type,\n\t\t\t\t
      \ enum imap_notify_event events)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-notify.c:292,1
    - Dst: cmd_notify_add_mailbox_namespaces
      Src: /src/dovecot/src/imap/cmd-notify.c:293,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-notify.c:296,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-notify.c:300,1
    - Dst: cmd_notify_add_mailbox_namespaces
      Src: /src/dovecot/src/imap/cmd-notify.c:303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - arg
    - type
    - events
    argTypes:
    - struct imap_notify_context*
    - struct imap_arg*
    - enum imap_notify_type
    - enum imap_notify_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 283
    functionDepth: 4
    functionLinenumber: 283
    functionLinenumberEnd: 306
    functionName: cmd_notify_add_mailboxes
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - cmd_notify_add_mailbox_namespaces
    - imap_arg_get_list
    - imap_arg_get_astring
    linkageType: ''
    returnType: int
    signature: "int cmd_notify_add_mailboxes(struct imap_notify_context *ctx,\n\t\t\t
      const struct imap_arg *arg,\n\t\t\t enum imap_notify_type type,\n\t\t\t enum
      imap_notify_event events)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-notify.c:315,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:316,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-notify.c:323,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-notify.c:327,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:331,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:332,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:340,1
    - Dst: cmd_notify_set_selected
      Src: /src/dovecot/src/imap/cmd-notify.c:342,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:347,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:348,1
    - Dst: IMAP_ARG_IS_ASTRING
      Src: /src/dovecot/src/imap/cmd-notify.c:353,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-notify.c:355,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-notify.c:366,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:367,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-notify.c:371,1
    - Dst: cmd_notify_parse_event_list
      Src: /src/dovecot/src/imap/cmd-notify.c:376,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:381,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:382,1
    - Dst: cmd_notify_add_personal
      Src: /src/dovecot/src/imap/cmd-notify.c:383,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:384,1
    - Dst: cmd_notify_add_subscribed
      Src: /src/dovecot/src/imap/cmd-notify.c:385,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:386,1
    - Dst: cmd_notify_add_mailboxes
      Src: /src/dovecot/src/imap/cmd-notify.c:387,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:391,1
    - Dst: cmd_notify_add_mailboxes
      Src: /src/dovecot/src/imap/cmd-notify.c:392,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 61
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct imap_notify_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 308
    functionDepth: 6
    functionLinenumber: 308
    functionLinenumberEnd: 401
    functionName: cmd_notify_set
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - cmd_notify_parse_event_list
    - imap_arg_get_list
    - cmd_notify_add_mailboxes
    - strcasecmp
    - cmd_notify_add_personal
    - IMAP_ARG_IS_ASTRING
    - cmd_notify_add_subscribed
    - imap_arg_get_atom
    - cmd_notify_set_selected
    linkageType: ''
    returnType: int
    signature: int cmd_notify_set(struct imap_notify_context *ctx, const struct imap_arg
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/cmd-notify.c:406,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-notify.c:408,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/cmd-notify.c:409,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/imap/cmd-notify.c:409,1
    - Dst: mailbox_list_mailbox
      Src: /src/dovecot/src/imap/cmd-notify.c:413,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/imap/cmd-notify.c:413,1
    - Dst: mailbox_get_name
      Src: /src/dovecot/src/imap/cmd-notify.c:414,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-notify.c:417,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-notify.c:419,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/cmd-notify.c:420,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/cmd-notify.c:421,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-notify.c:422,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-notify.c:425,1
    - Dst: imap_mailbox_flags2str
      Src: /src/dovecot/src/imap/cmd-notify.c:426,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-notify.c:427,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-notify.c:428,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-notify.c:430,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-notify.c:431,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-notify.c:432,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-notify.c:434,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-notify.c:435,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-notify.c:435,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - client
    - box
    argTypes:
    - struct client*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 403
    functionDepth: 2
    functionLinenumber: 403
    functionLinenumberEnd: 436
    functionName: imap_notify_box_list_noperm
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mail_namespace_get_sep
    - t_str_new
    - client_has_enabled
    - mailbox_get_namespace
    - mailbox_get_name
    - str_c
    - str_append_c
    - imap_utf8_to_utf7
    - imap_append_astring
    - client_send_line
    - imap_mailbox_flags2str
    - mailbox_get_vname
    - str_append
    - mailbox_list_mailbox
    linkageType: ''
    returnType: void
    signature: void imap_notify_box_list_noperm(struct client *client, struct mailbox
      *box)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_equals
      Src: /src/dovecot/src/imap/cmd-notify.c:453,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-notify.c:456,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-notify.c:457,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-notify.c:465,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/imap/cmd-notify.c:466,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/cmd-notify.c:466,1
    - Dst: imap_status_get
      Src: /src/dovecot/src/imap/cmd-notify.c:468,1
    - Dst: imap_notify_box_list_noperm
      Src: /src/dovecot/src/imap/cmd-notify.c:470,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-notify.c:472,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-notify.c:473,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-notify.c:479,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/cmd-notify.c:480,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/cmd-notify.c:481,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-notify.c:482,1
    - Dst: imap_status_send
      Src: /src/dovecot/src/imap/cmd-notify.c:484,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-notify.c:486,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - cmd
    - ctx
    - info
    argTypes:
    - struct client_command_context*
    - struct imap_notify_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 438
    functionDepth: 5
    functionLinenumber: 438
    functionLinenumberEnd: 487
    functionName: imap_notify_box_send_status
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_panic
    - mailbox_enable
    - t_str_new
    - str_c
    - mailbox_free
    - mailbox_equals
    - imap_utf8_to_utf7
    - imap_status_send
    - imap_status_get
    - client_send_line
    - mailbox_alloc
    - client_enabled_mailbox_features
    - t_strconcat
    - imap_notify_box_list_noperm
    linkageType: ''
    returnType: void
    signature: "void imap_notify_box_send_status(struct client_command_context *cmd,\n\t\t\t
      \   struct imap_notify_context *ctx,\n\t\t\t    const struct mailbox_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/cmd-notify.c:493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - notify_ns
    argTypes:
    - struct imap_notify_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 502
    functionName: imap_notify_ns_want_status
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: bool imap_notify_ns_want_status(struct imap_notify_namespace *notify_ns)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_notify_ns_want_status
      Src: /src/dovecot/src/imap/cmd-notify.c:513,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/imap/cmd-notify.c:518,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/imap/cmd-notify.c:521,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/cmd-notify.c:522,1
    - Dst: imap_notify_match_mailbox
      Src: /src/dovecot/src/imap/cmd-notify.c:523,1
    - Dst: imap_notify_box_send_status
      Src: /src/dovecot/src/imap/cmd-notify.c:525,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/imap/cmd-notify.c:530,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-notify.c:531,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - cmd
    - ctx
    - notify_ns
    argTypes:
    - struct client_command_context*
    - struct imap_notify_context*
    - struct imap_notify_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 504
    functionDepth: 6
    functionLinenumber: 504
    functionLinenumberEnd: 534
    functionName: imap_notify_ns_send_status
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_list_iter_deinit
    - mailbox_list_iter_next
    - array_foreach
    - imap_notify_ns_want_status
    - client_send_line
    - imap_notify_match_mailbox
    - mailbox_list_iter_init
    - imap_notify_box_send_status
    linkageType: ''
    returnType: void
    signature: "void imap_notify_ns_send_status(struct client_command_context *cmd,\n\t\t\t
      \  struct imap_notify_context *ctx,\n\t\t\t   struct imap_notify_namespace *notify_ns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap/cmd-notify.c:541,1
    - Dst: imap_notify_ns_send_status
      Src: /src/dovecot/src/imap/cmd-notify.c:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cmd
    - ctx
    argTypes:
    - struct client_command_context*
    - struct imap_notify_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 536
    functionDepth: 7
    functionLinenumber: 536
    functionLinenumberEnd: 543
    functionName: cmd_notify_send_status
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - imap_notify_ns_send_status
    linkageType: ''
    returnType: void
    signature: "void cmd_notify_send_status(struct client_command_context *cmd,\n\t\t\t\t
      \  struct imap_notify_context *ctx)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-notify.c:553,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap/cmd-notify.c:556,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-notify.c:557,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-notify.c:561,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-notify.c:563,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:565,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-notify.c:567,1
    - Dst: cmd_notify_set
      Src: /src/dovecot/src/imap/cmd-notify.c:568,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-notify.c:573,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/cmd-notify.c:575,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-notify.c:580,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-notify.c:583,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/imap/cmd-notify.c:584,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-notify.c:587,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-notify.c:588,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-notify.c:591,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-notify.c:592,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-notify.c:592,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/cmd-notify.c:593,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/cmd-notify.c:597,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-notify.c:600,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/cmd-notify.c:602,1
    - Dst: imap_notify_refresh_subscriptions
      Src: /src/dovecot/src/imap/cmd-notify.c:604,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/cmd-notify.c:606,1
    - Dst: imap_notify_begin
      Src: /src/dovecot/src/imap/cmd-notify.c:608,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-notify.c:609,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/cmd-notify.c:611,1
    - Dst: imap_notify_deinit
      Src: /src/dovecot/src/imap/cmd-notify.c:615,1
    - Dst: cmd_notify_send_status
      Src: /src/dovecot/src/imap/cmd-notify.c:618,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-notify.c:627,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 59
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 545
    functionDepth: 8
    functionLinenumber: 545
    functionLinenumberEnd: 628
    functionName: cmd_notify
    functionSourceFile: /src/dovecot/src/imap/cmd-notify.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_array_init
    - imap_notify_begin
    - pool_unref
    - imap_notify_refresh_subscriptions
    - client_read_args
    - array_count
    - t_str_new
    - p_new
    - str_append_c
    - client_send_command_error
    - imap_notify_deinit
    - imap_arg_get_atom
    - client_send_tagline
    - strcasecmp
    - N_ELEMENTS
    - cmd_notify_send_status
    - pool_alloconly_create
    - cmd_notify_set
    - str_append
    - cmd_sync
    linkageType: ''
    returnType: bool
    signature: bool cmd_notify(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap/cmd-store.c:35,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-store.c:38,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct imap_store_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 42
    functionName: get_modify_type
    functionSourceFile: /src/dovecot/src/imap/cmd-store.c
    functionUses: 0
    functionsReached:
    - str_begins_icase
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool get_modify_type(struct imap_store_context *ctx, const char *type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-store.c:50,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-store.c:51,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-store.c:52,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-store.c:53,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-store.c:58,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-store.c:60,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/imap/cmd-store.c:64,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-store.c:65,1
    - Dst: client_enable
      Src: /src/dovecot/src/imap/cmd-store.c:69,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-store.c:71,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct imap_store_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 44
    functionDepth: 3
    functionLinenumber: 44
    functionLinenumberEnd: 77
    functionName: store_parse_modifiers
    functionSourceFile: /src/dovecot/src/imap/cmd-store.c
    functionUses: 0
    functionsReached:
    - str_to_uint64
    - strcasecmp
    - client_send_command_error
    - imap_arg_get_atom
    - client_enable
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool store_parse_modifiers(struct imap_store_context *ctx,\n\t\t      const
      struct imap_arg *args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-store.c:88,1
    - Dst: store_parse_modifiers
      Src: /src/dovecot/src/imap/cmd-store.c:89,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-store.c:94,1
    - Dst: get_modify_type
      Src: /src/dovecot/src/imap/cmd-store.c:95,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-store.c:96,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-store.c:101,1
    - Dst: client_parse_mail_flags
      Src: /src/dovecot/src/imap/cmd-store.c:102,1
    - Dst: client_parse_mail_flags
      Src: /src/dovecot/src/imap/cmd-store.c:106,1
    - Dst: mailbox_keywords_create
      Src: /src/dovecot/src/imap/cmd-store.c:112,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-store.c:115,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct imap_store_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 120
    functionName: store_parse_args
    functionSourceFile: /src/dovecot/src/imap/cmd-store.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - store_parse_modifiers
    - mailbox_keywords_create
    - client_parse_mail_flags
    - client_send_command_error
    - client_send_box_error
    - get_modify_type
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool store_parse_args(struct imap_store_context *ctx, const struct
      imap_arg *args)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/cmd-store.c:131,1
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-store.c:140,1
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-store.c:143,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-store.c:146,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-store.c:147,1
    - Dst: imap_search_get_seqset
      Src: /src/dovecot/src/imap/cmd-store.c:150,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-store.c:154,1
    - Dst: store_parse_args
      Src: /src/dovecot/src/imap/cmd-store.c:156,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-store.c:157,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-store.c:162,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/imap/cmd-store.c:164,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-store.c:169,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/cmd-store.c:181,1
    - Dst: imap_client_command_get_reason
      Src: /src/dovecot/src/imap/cmd-store.c:182,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/cmd-store.c:184,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-store.c:186,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-store.c:188,1
    - Dst: mailbox_transaction_set_max_modseq
      Src: /src/dovecot/src/imap/cmd-store.c:191,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/cmd-store.c:198,1
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/imap/cmd-store.c:202,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/imap/cmd-store.c:203,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/imap/cmd-store.c:208,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/imap/cmd-store.c:212,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/imap/cmd-store.c:214,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/imap/cmd-store.c:220,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/cmd-store.c:222,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/imap/cmd-store.c:224,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/cmd-store.c:226,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-store.c:228,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-store.c:229,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/cmd-store.c:234,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-store.c:238,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/cmd-store.c:238,1
    - Dst: mailbox_get_uid_range
      Src: /src/dovecot/src/imap/cmd-store.c:239,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-store.c:241,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/cmd-store.c:244,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-store.c:245,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/cmd-store.c:246,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-store.c:247,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-store.c:248,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-store.c:250,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/cmd-store.c:258,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-store.c:261,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 90
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 122
    functionDepth: 5
    functionLinenumber: 122
    functionLinenumberEnd: 263
    functionName: cmd_store
    functionSourceFile: /src/dovecot/src/imap/cmd-store.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - str_c
    - client_read_args
    - array_count
    - imap_write_seq_range
    - client_verify_open_mailbox
    - mailbox_transaction_begin
    - client_send_command_error
    - mail_get_flags
    - mailbox_search_deinit
    - client_send_box_error
    - mail_get_modseq
    - mail_update_keywords
    - array_free
    - str_new
    - i_zero
    - client_has_enabled
    - mailbox_transaction_rollback
    - mailbox_transaction_commit
    - mailbox_search_init
    - imap_search_get_seqset
    - seq_range_array_add
    - mailbox_keywords_unref
    - imap_client_command_get_reason
    - str_append
    - mail_update_flags
    - ARRAY_TYPE
    - mailbox_transaction_set_max_modseq
    - imap_arg_get_atom
    - mailbox_search_next
    - mail_search_args_unref
    - mailbox_get_uid_range
    - cmd_sync
    - store_parse_args
    linkageType: ''
    returnType: bool
    signature: bool cmd_store(struct client_command_context *cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-list.c:40,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap/cmd-list.c:45,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap/cmd-list.c:49,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap/cmd-list.c:59,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap/cmd-list.c:67,1
    - Dst: imap_mailbox_flags2str
      Src: /src/dovecot/src/imap/cmd-list.c:68,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-list.c:72,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-list.c:73,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-list.c:74,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 4
    argNames:
    - ctx
    - str
    - special_use
    - flags
    argTypes:
    - struct cmd_list_context*
    - string_t*
    - char*
    - enum mailbox_info_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 76
    functionName: mailbox_flags2str
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 3
    functionsReached:
    - str_append_c
    - ENUM_NEGATE
    - str_len
    - imap_mailbox_flags2str
    - str_append
    linkageType: ''
    returnType: void
    signature: "void mailbox_flags2str(struct cmd_list_context *ctx, string_t *str,\n\t\t
      \ const char *special_use, enum mailbox_info_flags flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-list.c:87,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-list.c:90,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - str
    - flags
    argTypes:
    - struct cmd_list_context*
    - string_t*
    - enum mailbox_info_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: mailbox_childinfo2str
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - str_append
    linkageType: ''
    returnType: void
    signature: "void mailbox_childinfo2str(struct cmd_list_context *ctx, string_t
      *str,\n\t\t      enum mailbox_info_flags flags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-list.c:99,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-list.c:100,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:101,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-list.c:106,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-list.c:109,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-list.c:111,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-list.c:114,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:118,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:128,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct cmd_list_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 93
    functionDepth: 3
    functionLinenumber: 93
    functionLinenumberEnd: 135
    functionName: parse_select_flags
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_atom
    - client_send_command_error
    - strcasecmp
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: bool parse_select_flags(struct cmd_list_context *ctx, const struct
      imap_arg *args)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-list.c:147,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-list.c:148,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:149,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-list.c:154,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-list.c:156,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-list.c:158,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-list.c:160,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-list.c:161,1
    - Dst: imap_status_parse_items
      Src: /src/dovecot/src/imap/cmd-list.c:162,1
    - Dst: imap_list_return_flag_parse
      Src: /src/dovecot/src/imap/cmd-list.c:167,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-list.c:171,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-list.c:172,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/cmd-list.c:175,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:182,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct cmd_list_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 191
    functionName: parse_return_flags
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - array_append_space
    - p_array_init
    - strcasecmp
    - client_send_command_error
    - imap_list_return_flag_parse
    - imap_arg_get_atom
    - array_is_created
    - imap_status_parse_items
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: bool parse_return_flags(struct cmd_list_context *ctx, const struct
      imap_arg *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-list.c:200,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/cmd-list.c:201,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/cmd-list.c:202,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-list.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 204
    functionName: ns_prefix_mutf7
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - i_panic
    - str_c
    - t_str_new
    - imap_utf8_to_utf7
    linkageType: ''
    returnType: char
    signature: char *ns_prefix_mutf7(struct mail_namespace *ns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-list.c:208,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-list.c:210,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-list.c:212,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-list.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - str
    - sep
    argTypes:
    - string_t*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: list_reply_append_ns_sep_param
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void list_reply_append_ns_sep_param(string_t *str, char sep)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-list.c:231,1
    - Dst: imap_status_get
      Src: /src/dovecot/src/imap/cmd-list.c:235,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-list.c:237,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-list.c:238,1
    - Dst: imap_status_send
      Src: /src/dovecot/src/imap/cmd-list.c:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - params
    argTypes:
    - struct cmd_list_context*
    - struct imap_list_return_flag_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 244
    functionName: list_send_status
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - imap_status_send
    - imap_status_get
    - client_send_line
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void list_send_status(struct cmd_list_context *ctx,\n\t\t const struct
      imap_list_return_flag_params *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-list.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_list_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 252
    functionName: list_has_options
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool list_has_options(struct cmd_list_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_send_status
      Src: /src/dovecot/src/imap/cmd-list.c:261,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-list.c:263,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/cmd-list.c:266,1
    - Dst: imap_list_return_flag_send
      Src: /src/dovecot/src/imap/cmd-list.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - params
    argTypes:
    - struct cmd_list_context*
    - struct imap_list_return_flag_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 254
    functionDepth: 6
    functionLinenumber: 254
    functionLinenumberEnd: 271
    functionName: list_send_options
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - imap_list_return_flag_send
    - array_is_created
    - list_send_status
    - array_foreach
    linkageType: ''
    returnType: void
    signature: "void list_send_options(struct cmd_list_context *ctx,\n\t\t  const
      struct imap_list_return_flag_params *params)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/imap/cmd-list.c:285,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-list.c:288,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-list.c:289,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/imap/cmd-list.c:290,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-list.c:303,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/imap/cmd-list.c:304,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/cmd-list.c:305,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-list.c:306,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-list.c:309,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-list.c:310,1
    - Dst: mailbox_flags2str
      Src: /src/dovecot/src/imap/cmd-list.c:311,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-list.c:312,1
    - Dst: list_reply_append_ns_sep_param
      Src: /src/dovecot/src/imap/cmd-list.c:313,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/cmd-list.c:314,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-list.c:315,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-list.c:316,1
    - Dst: mailbox_childinfo2str
      Src: /src/dovecot/src/imap/cmd-list.c:317,1
    - Dst: client_send_line_next
      Src: /src/dovecot/src/imap/cmd-list.c:320,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-list.c:320,1
    - Dst: list_has_options
      Src: /src/dovecot/src/imap/cmd-list.c:325,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/imap/cmd-list.c:336,1
    - Dst: list_send_options
      Src: /src/dovecot/src/imap/cmd-list.c:340,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 273
    functionDepth: 7
    functionLinenumber: 273
    functionLinenumberEnd: 347
    functionName: cmd_list_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - list_reply_append_ns_sep_param
    - str_c
    - str_printfa
    - mail_namespace_get_sep
    - i_panic
    - t_str_new
    - str_append_c
    - imap_append_astring
    - mailbox_childinfo2str
    - imap_utf8_to_utf7
    - client_send_line_next
    - mailbox_list_iter_deinit
    - mail_namespace_find
    - str_append
    - mailbox_list_iter_next
    - list_has_options
    - str_truncate
    - mailbox_flags2str
    - list_send_options
    linkageType: ''
    returnType: bool
    signature: bool cmd_list_continue(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/imap/cmd-list.c:370,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/cmd-list.c:372,1
    - Dst: mailbox_list_join_refpattern
      Src: /src/dovecot/src/imap/cmd-list.c:374,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-list.c:375,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/imap/cmd-list.c:377,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/cmd-list.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 379
    functionName: list_get_ref_patterns
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_join_refpattern
    - mail_namespace_find
    - array_push_back
    - t_array_init
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: char
    signature: "char *const *\nlist_get_ref_patterns(struct cmd_list_context *ctx,
      const char *ref,\n\t\t      const char *const *patterns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/imap/cmd-list.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - patterns
    argTypes:
    - struct cmd_list_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 390
    functionName: cmd_list_init
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_iter_init_namespaces
    linkageType: ''
    returnType: void
    signature: "void cmd_list_init(struct cmd_list_context *ctx,\n\t\t\t  const char
      *const *patterns)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_visible
      Src: /src/dovecot/src/imap/cmd-list.c:403,1
    - Dst: ns_prefix_mutf7
      Src: /src/dovecot/src/imap/cmd-list.c:408,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/cmd-list.c:409,1
    - Dst: mail_namespaces_get_root_sep
      Src: /src/dovecot/src/imap/cmd-list.c:412,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-list.c:415,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-list.c:416,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-list.c:418,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-list.c:419,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-list.c:422,1
    - Dst: strchr
      Src: /src/dovecot/src/imap/cmd-list.c:428,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-list.c:431,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-list.c:433,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/imap/cmd-list.c:433,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-list.c:437,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-list.c:437,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - client
    - ref
    - utf8
    argTypes:
    - struct client*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 438
    functionName: cmd_list_ref_root
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - t_str_new
    - str_printfa
    - str_append_c
    - strchr
    - str_c
    - imap_append_astring
    - client_send_line
    - t_strdup_until
    - str_append
    - mail_namespace_find_visible
    - mail_namespaces_get_root_sep
    - ns_prefix_mutf7
    linkageType: ''
    returnType: void
    signature: void cmd_list_ref_root(struct client *client, const char *ref, bool
      utf8)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-list.c:453,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-list.c:456,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-list.c:463,1
    - Dst: parse_select_flags
      Src: /src/dovecot/src/imap/cmd-list.c:466,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-list.c:471,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:472,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-list.c:475,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/imap/cmd-list.c:477,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/imap/cmd-list.c:479,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/cmd-list.c:480,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-list.c:480,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-list.c:484,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/imap/cmd-list.c:486,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-list.c:489,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-list.c:490,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-list.c:491,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:492,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/imap/cmd-list.c:497,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-list.c:498,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/imap/cmd-list.c:499,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/cmd-list.c:500,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-list.c:500,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-list.c:501,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-list.c:503,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-list.c:507,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:508,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-list.c:511,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/imap/cmd-list.c:513,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-list.c:514,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/imap/cmd-list.c:515,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/cmd-list.c:516,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-list.c:516,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-list.c:517,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/cmd-list.c:522,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-list.c:528,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-list.c:529,1
    - Dst: parse_return_flags
      Src: /src/dovecot/src/imap/cmd-list.c:532,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-list.c:556,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-list.c:557,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/imap/cmd-list.c:561,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/cmd-list.c:562,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-list.c:565,1
    - Dst: cmd_list_ref_root
      Src: /src/dovecot/src/imap/cmd-list.c:569,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-list.c:570,1
    - Dst: list_get_ref_patterns
      Src: /src/dovecot/src/imap/cmd-list.c:573,1
    - Dst: cmd_list_init
      Src: /src/dovecot/src/imap/cmd-list.c:574,1
    - Dst: cmd_list_continue
      Src: /src/dovecot/src/imap/cmd-list.c:576,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 107
    argCount: 2
    argNames:
    - cmd
    - lsub
    argTypes:
    - struct client_command_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 440
    functionDepth: 8
    functionLinenumber: 440
    functionLinenumberEnd: 587
    functionName: cmd_list_full
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 1
    functionsReached:
    - str_c
    - p_strdup
    - p_array_init
    - strlen
    - client_read_args
    - cmd_list_init
    - array_front
    - array_append_zero
    - imap_arg_get_astring
    - t_str_new
    - p_new
    - uni_utf8_str_is_valid
    - parse_return_flags
    - parse_select_flags
    - client_send_command_error
    - IMAP_ARG_IS_EOL
    - imap_arg_get_list
    - client_send_tagline
    - list_get_ref_patterns
    - imap_utf7_to_utf8
    - imap_arg_atom_equals
    - cmd_list_continue
    - array_push_back
    - cmd_list_ref_root
    - str_truncate
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_list_full(struct client_command_context *cmd, bool lsub)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_list_full
      Src: /src/dovecot/src/imap/cmd-list.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 589
    functionDepth: 9
    functionLinenumber: 589
    functionLinenumberEnd: 592
    functionName: cmd_list
    functionSourceFile: /src/dovecot/src/imap/cmd-list.c
    functionUses: 0
    functionsReached:
    - cmd_list_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_list(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - ctx
    - ','
    - flags
    - ','
    - nil_reply
    - ','
    - handler
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: imap_fetch_add_handler
    functionSourceFile: /src/dovecot/src/imap/imap-fetch.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: imap_fetch_add_handler(ctx, flags, nil_reply, handler, context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-unselect.c:10,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-unselect.c:13,1
    - Dst: imap_client_close_mailbox
      Src: /src/dovecot/src/imap/cmd-unselect.c:15,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-unselect.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 18
    functionName: cmd_unselect
    functionSourceFile: /src/dovecot/src/imap/cmd-unselect.c
    functionUses: 0
    functionsReached:
    - client_verify_open_mailbox
    - i_assert
    - client_send_tagline
    - imap_client_close_mailbox
    linkageType: ''
    returnType: bool
    signature: bool cmd_unselect(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:31,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:35,1
    - Dst: imap_metadata_transaction_rollback
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:37,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:39,1
    - Dst: i_free
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:40,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_setmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 41
    functionName: cmd_setmetadata_deinit
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - imap_metadata_transaction_rollback
    - mailbox_free
    - imap_parser_unref
    - o_stream_set_flush_callback
    - i_free
    linkageType: ''
    returnType: void
    signature: void cmd_setmetadata_deinit(struct imap_setmetadata_context *ctx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:54,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:62,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:63,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:68,1
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:76,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:79,1
    - Dst: client_disconnect_with_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:81,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:85,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:91,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:95,1
    - Dst: imap_metadata_verify_entry_name
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:99,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:100,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:118,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 3
    argNames:
    - ctx
    - entry_r
    - value_r
    argTypes:
    - struct imap_setmetadata_context*
    - char**
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 121
    functionName: cmd_setmetadata_parse_entryvalue
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - imap_parser_get_error
    - imap_metadata_verify_entry_name
    - i_unreached
    - imap_parser_read_args
    - client_send_command_error
    - client_disconnect_with_error
    - t_str_lcase
    - imap_arg_get_astring
    linkageType: ''
    returnType: int
    signature: "int cmd_setmetadata_parse_entryvalue(struct imap_setmetadata_context
      *ctx,\n\t\t\t\t const char **entry_r,\n\t\t\t\t const struct imap_arg **value_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:131,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:132,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:138,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:143,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:146,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:150,1
    - Dst: imap_metadata_set
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:152,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_setmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: cmd_setmetadata_entry_read_stream
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_stream_skip
    - imap_metadata_set
    - i_stream_seek
    - i_stream_unref
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int cmd_setmetadata_entry_read_stream(struct imap_setmetadata_context
      *ctx)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:179,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:186,1
    - Dst: imap_arg_as_nstring
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:187,1
    - Dst: imap_metadata_set
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:188,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:197,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:198,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:199,1
    - Dst: i_free
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:202,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:203,1
    - Dst: imap_arg_as_literal_size
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:204,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:206,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:210,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:211,1
    - Dst: i_stream_create_seekable_path
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:212,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:213,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:214,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:214,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:215,1
    - Dst: cmd_setmetadata_entry_read_stream
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:216,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - entry_name
    - entry_value
    argTypes:
    - struct imap_setmetadata_context*
    - char*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 223
    functionName: cmd_setmetadata_entry
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - str_c
    - o_stream_uncork
    - o_stream_cork
    - i_strdup
    - t_str_new
    - i_stream_create_seekable_path
    - imap_arg_as_nstring
    - i_unreached
    - i_stream_set_name
    - o_stream_nsend
    - i_stream_get_name
    - i_zero
    - imap_arg_as_literal_size
    - cmd_setmetadata_entry_read_stream
    - i_free
    - mail_user_set_get_temp_prefix
    - i_stream_create_limit
    - imap_metadata_set
    - i_stream_unref
    - imap_arg_get_atom
    linkageType: ''
    returnType: int
    signature: "int cmd_setmetadata_entry(struct imap_setmetadata_context *ctx,\n\t\t
      \     const char *entry_name,\n\t\t      const struct imap_arg *entry_value)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: cmd_setmetadata_deinit
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:234,1
    - Dst: cmd_setmetadata_entry_read_stream
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:239,1
    - Dst: cmd_setmetadata_deinit
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:242,1
    - Dst: cmd_setmetadata_parse_entryvalue
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:247,1
    - Dst: cmd_setmetadata_entry
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:250,1
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:251,1
    - Dst: client_disconnect_if_inconsistent
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:262,1
    - Dst: imap_metadata_transaction_get_last_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:263,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:265,1
    - Dst: imap_get_error_string
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:266,1
    - Dst: imap_metadata_transaction_commit
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:267,1
    - Dst: client_disconnect_if_inconsistent
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:270,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:271,1
    - Dst: imap_get_error_string
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:272,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:274,1
    - Dst: cmd_setmetadata_deinit
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:276,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 278
    functionName: cmd_setmetadata_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - cmd_setmetadata_parse_entryvalue
    - cmd_setmetadata_entry_read_stream
    - imap_parser_reset
    - client_send_tagline
    - cmd_setmetadata_deinit
    - imap_get_error_string
    - client_disconnect_if_inconsistent
    - cmd_setmetadata_entry
    - imap_metadata_transaction_get_last_error
    - imap_metadata_transaction_commit
    linkageType: ''
    returnType: bool
    signature: bool cmd_setmetadata_continue(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_metadata_transaction_validated_only
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:286,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:291,1
    - Dst: imap_parser_enable_literal_minus
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:294,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:295,1
    - Dst: cmd_setmetadata_continue
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_setmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 280
    functionDepth: 5
    functionLinenumber: 280
    functionLinenumberEnd: 300
    functionName: cmd_setmetadata_start
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - imap_parser_enable_literal_minus
    - cmd_setmetadata_continue
    - o_stream_unset_flush_callback
    - imap_parser_create
    - imap_metadata_transaction_validated_only
    linkageType: ''
    returnType: bool
    signature: bool cmd_setmetadata_start(struct imap_setmetadata_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_metadata_transaction_begin_server
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:305,1
    - Dst: cmd_setmetadata_start
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_setmetadata_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 302
    functionDepth: 6
    functionLinenumber: 302
    functionLinenumberEnd: 307
    functionName: cmd_setmetadata_server
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - imap_metadata_transaction_begin_server
    - cmd_setmetadata_start
    linkageType: ''
    returnType: bool
    signature: bool cmd_setmetadata_server(struct imap_setmetadata_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:317,1
    - Dst: mailbox_equals
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:322,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:325,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:328,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:329,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:330,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:333,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:334,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:335,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:336,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:337,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:341,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:342,1
    - Dst: imap_metadata_transaction_begin
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:343,1
    - Dst: cmd_setmetadata_start
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:344,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - mailbox
    argTypes:
    - struct imap_setmetadata_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 309
    functionDepth: 6
    functionLinenumber: 309
    functionLinenumberEnd: 345
    functionName: cmd_setmetadata_mailbox
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - client_find_namespace
    - t_strdup_printf
    - mailbox_equals
    - cmd_setmetadata_start
    - mailbox_alloc
    - client_send_box_error
    - mailbox_get_vname
    - event_add_str
    - imap_metadata_transaction_begin
    - mail_storage_set_error
    - mailbox_exists
    linkageType: ''
    returnType: bool
    signature: "bool cmd_setmetadata_mailbox(struct imap_setmetadata_context *ctx,\n\tconst
      char *mailbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:354,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:357,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:362,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:364,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:368,1
    - Dst: cmd_setmetadata_server
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:374,1
    - Dst: cmd_setmetadata_mailbox
      Src: /src/dovecot/src/imap/cmd-setmetadata.c:377,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 347
    functionDepth: 7
    functionLinenumber: 347
    functionLinenumberEnd: 378
    functionName: cmd_setmetadata
    functionSourceFile: /src/dovecot/src/imap/cmd-setmetadata.c
    functionUses: 0
    functionsReached:
    - p_new
    - imap_parser_read_args
    - cmd_setmetadata_mailbox
    - client_send_command_error
    - cmd_setmetadata_server
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_setmetadata(struct client_command_context *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_expunge
      Src: /src/dovecot/src/imap/cmd-expunge.c:17,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-expunge.c:20,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-expunge.c:22,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-expunge.c:24,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-expunge.c:27,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-expunge.c:28,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-expunge.c:34,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - cmd
    - search_args
    argTypes:
    - struct client_command_context*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 36
    functionName: cmd_expunge_finish
    functionSourceFile: /src/dovecot/src/imap/cmd-expunge.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_error
    - t_strdup_printf
    - imap_expunge
    - client_send_box_error
    - mail_search_args_unref
    - cmd_sync
    linkageType: ''
    returnType: void
    signature: "void cmd_expunge_finish(struct client_command_context *cmd,\n\t\t
      \  struct mail_search_args *search_args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-expunge.c:45,1
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-expunge.c:48,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-expunge.c:51,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-expunge.c:52,1
    - Dst: imap_search_get_seqset
      Src: /src/dovecot/src/imap/cmd-expunge.c:56,1
    - Dst: cmd_expunge_finish
      Src: /src/dovecot/src/imap/cmd-expunge.c:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 38
    functionDepth: 4
    functionLinenumber: 38
    functionLinenumberEnd: 60
    functionName: cmd_uid_expunge
    functionSourceFile: /src/dovecot/src/imap/cmd-expunge.c
    functionUses: 0
    functionsReached:
    - client_verify_open_mailbox
    - cmd_expunge_finish
    - client_read_args
    - client_send_command_error
    - imap_search_get_seqset
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_uid_expunge(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-expunge.c:64,1
    - Dst: cmd_expunge_finish
      Src: /src/dovecot/src/imap/cmd-expunge.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: cmd_expunge
    functionSourceFile: /src/dovecot/src/imap/cmd-expunge.c
    functionUses: 0
    functionsReached:
    - client_verify_open_mailbox
    - cmd_expunge_finish
    linkageType: ''
    returnType: bool
    signature: bool cmd_expunge(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-append.c:66,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-append.c:69,1
    - Dst: i_stream_get_disconnect_reason
      Src: /src/dovecot/src/imap/cmd-append.c:70,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-append.c:73,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-append.c:76,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-append.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - lit_offset
    argTypes:
    - struct cmd_append_context*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 78
    functionName: get_disconnect_reason
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - i_stream_get_disconnect_reason
    - str_append_c
    linkageType: ''
    returnType: char
    signature: 'char *

      get_disconnect_reason(struct cmd_append_context *ctx, uoff_t lit_offset)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:88,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap/cmd-append.c:91,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap/cmd-append.c:93,1
    - Dst: get_disconnect_reason
      Src: /src/dovecot/src/imap/cmd-append.c:98,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:99,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/cmd-append.c:102,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/cmd-append.c:103,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:111,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:119,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/cmd-append.c:121,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/cmd-append.c:124,1
    - Dst: command_exec
      Src: /src/dovecot/src/imap/cmd-append.c:125,1
    - Dst: client_handle_unfinished_cmd
      Src: /src/dovecot/src/imap/cmd-append.c:127,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/cmd-append.c:129,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/cmd-append.c:133,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/cmd-append.c:134,1
    - Dst: client_continue_pending_input
      Src: /src/dovecot/src/imap/cmd-append.c:136,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 80
    functionDepth: 4
    functionLinenumber: 80
    functionLinenumberEnd: 137
    functionName: client_input_append
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - i_assert
    - cmd_append_finish
    - client_handle_unfinished_cmd
    - get_disconnect_reason
    - o_stream_uncork
    - client_destroy
    - timeout_reset
    - o_stream_cork
    - cmd_sync_delayed
    - client_send_command_error
    - client_command_free
    - command_exec
    - i_stream_read
    - client_continue_pending_input
    linkageType: ''
    returnType: void
    signature: void client_input_append(struct client_command_context *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/imap/cmd-append.c:142,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:144,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/cmd-append.c:146,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/imap/cmd-append.c:149,1
    - Dst: mail_free
      Src: /src/dovecot/src/imap/cmd-append.c:153,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/imap/cmd-append.c:154,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-append.c:157,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-append.c:158,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/imap/cmd-append.c:160,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/imap/cmd-append.c:162,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-append.c:164,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 165
    functionName: cmd_append_finish
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 1
    functionsReached:
    - mailbox_free
    - imap_parser_unref
    - mailbox_transaction_rollback
    - io_remove
    - mailbox_save_cancel
    - i_stream_unref
    - mail_free
    - o_stream_set_flush_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: void cmd_append_finish(struct cmd_append_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-append.c:174,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/cmd-append.c:175,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/cmd-append.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cmd_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 178
    functionName: cmd_append_send_literal_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    - o_stream_cork
    - o_stream_uncork
    linkageType: ''
    returnType: bool
    signature: bool cmd_append_send_literal_continue(struct cmd_append_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_url_read_part
      Src: /src/dovecot/src/imap/cmd-append.c:191,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:193,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-append.c:198,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-append.c:199,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-append.c:210,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/imap/cmd-append.c:217,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap/cmd-append.c:220,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:221,1
    - Dst: mailbox_save_continue
      Src: /src/dovecot/src/imap/cmd-append.c:222,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/imap/cmd-append.c:225,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/imap/cmd-append.c:227,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/imap/cmd-append.c:228,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:229,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:233,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:238,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/imap/cmd-append.c:238,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 3
    argNames:
    - cmd
    - caturl
    - mpurl
    argTypes:
    - struct client_command_context*
    - char*
    - struct imap_msgpart_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 242
    functionName: cmd_append_catenate_mpurl
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_chain_append
    - i_stream_have_bytes_left
    - t_strdup_printf
    - client_send_tagline
    - mailbox_save_continue
    - i_stream_get_error
    - imap_msgpart_url_read_part
    - client_send_box_error
    - mailbox_set_critical
    - i_stream_get_name
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: "int cmd_append_catenate_mpurl(struct client_command_context *cmd,\n\t\t\t
      \ const char *caturl, struct imap_msgpart_url *mpurl)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_url_parse
      Src: /src/dovecot/src/imap/cmd-append.c:255,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-append.c:258,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-append.c:259,1
    - Dst: cmd_append_catenate_mpurl
      Src: /src/dovecot/src/imap/cmd-append.c:263,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/imap/cmd-append.c:264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - cmd
    - caturl
    argTypes:
    - struct client_command_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 266
    functionName: cmd_append_catenate_url
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_url_free
    - imap_msgpart_url_parse
    - t_strdup_printf
    - client_send_tagline
    - cmd_append_catenate_mpurl
    linkageType: ''
    returnType: int
    signature: int cmd_append_catenate_url(struct client_command_context *cmd, const
      char *caturl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-append.c:274,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/imap/cmd-append.c:285,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/imap/cmd-append.c:288,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/imap/cmd-append.c:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 292
    functionName: cmd_append_catenate_text
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - i_stream_chain_append
    - i_stream_create_limit
    - i_stream_create_from_data
    - client_send_tagline
    linkageType: ''
    returnType: void
    signature: void cmd_append_catenate_text(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-append.c:301,1
    - Dst: cmd_append_catenate_text
      Src: /src/dovecot/src/imap/cmd-append.c:307,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - cmd
    - args
    - nonsync_r
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 308
    functionName: cmd_append_catenate_arg_text
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - client_send_tagline
    - cmd_append_catenate_text
    linkageType: ''
    returnType: void
    signature: "void cmd_append_catenate_arg_text(struct client_command_context *cmd,\n\t\t\t
      \    const struct imap_arg *args, bool *nonsync_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-append.c:321,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-append.c:324,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-append.c:327,1
    - Dst: cmd_append_catenate_url
      Src: /src/dovecot/src/imap/cmd-append.c:331,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-append.c:336,1
    - Dst: imap_arg_get_literal_size
      Src: /src/dovecot/src/imap/cmd-append.c:339,1
    - Dst: cmd_append_catenate_arg_text
      Src: /src/dovecot/src/imap/cmd-append.c:344,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-append.c:346,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-append.c:350,1
    - Dst: imap_arg_get_literal_size
      Src: /src/dovecot/src/imap/cmd-append.c:352,1
    - Dst: cmd_append_catenate_arg_text
      Src: /src/dovecot/src/imap/cmd-append.c:357,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-append.c:365,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:371,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - cmd
    - args
    - nonsync_r
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 310
    functionDepth: 3
    functionLinenumber: 310
    functionLinenumberEnd: 373
    functionName: cmd_append_catenate
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - cmd_append_catenate_arg_text
    - strcasecmp
    - cmd_append_catenate_url
    - imap_arg_get_literal_size
    - client_send_command_error
    - imap_arg_get_atom
    - IMAP_ARG_IS_EOL
    - imap_arg_get_astring
    linkageType: ''
    returnType: int
    signature: "int cmd_append_catenate(struct client_command_context *cmd,\n\t\t
      \   const struct imap_arg *args, bool *nonsync_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_chain_append_eof
      Src: /src/dovecot/src/imap/cmd-append.c:379,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-append.c:380,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/imap/cmd-append.c:387,1
    - Dst: mailbox_save_finish
      Src: /src/dovecot/src/imap/cmd-append.c:389,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 394
    functionName: cmd_append_finish_catenate
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - mailbox_save_finish
    - mailbox_save_cancel
    - i_stream_chain_append_eof
    - client_send_box_error
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void cmd_append_finish_catenate(struct client_command_context *cmd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:401,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:403,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-append.c:406,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:414,1
    - Dst: cmd_append_send_literal_continue
      Src: /src/dovecot/src/imap/cmd-append.c:426,1
    - Dst: imap_parser_read_last_literal
      Src: /src/dovecot/src/imap/cmd-append.c:429,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct cmd_append_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 435
    functionName: catenate_args_can_stop
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - cmd_append_send_literal_continue
    - imap_arg_get_list
    - imap_arg_atom_equals
    - imap_parser_read_last_literal
    linkageType: ''
    returnType: bool
    signature: "bool catenate_args_can_stop(struct cmd_append_context *ctx,\n\t\t\t\t
      \  const struct imap_arg *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/imap/cmd-append.c:444,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-append.c:447,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-append.c:449,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-append.c:449,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/cmd-append.c:452,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 459
    functionName: cmd_append_handle_parse_error
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - imap_parser_get_error
    - i_unreached
    - client_disconnect
    - client_send_line
    - client_send_command_error
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void cmd_append_handle_parse_error(struct client_command_context *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap/cmd-append.c:468,1
    - Dst: cmd_append_handle_parse_error
      Src: /src/dovecot/src/imap/cmd-append.c:473,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-append.c:481,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:482,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 461
    functionDepth: 4
    functionLinenumber: 461
    functionLinenumberEnd: 486
    functionName: cmd_append_finish_list
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - client_send_command_error
    - imap_parser_read_args
    - cmd_append_handle_parse_error
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: int
    signature: int cmd_append_finish_list(struct client_command_context *cmd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:497,1
    - Dst: cmd_append_finish_list
      Src: /src/dovecot/src/imap/cmd-append.c:502,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:506,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap/cmd-append.c:517,1
    - Dst: catenate_args_can_stop
      Src: /src/dovecot/src/imap/cmd-append.c:521,1
    - Dst: cmd_append_handle_parse_error
      Src: /src/dovecot/src/imap/cmd-append.c:523,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:524,1
    - Dst: cmd_append_catenate
      Src: /src/dovecot/src/imap/cmd-append.c:532,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:534,1
    - Dst: cmd_append_finish_catenate
      Src: /src/dovecot/src/imap/cmd-append.c:540,1
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/imap/cmd-append.c:543,1
    - Dst: cmd_append_parse_new_msg
      Src: /src/dovecot/src/imap/cmd-append.c:545,1
    - Dst: cmd_append_send_literal_continue
      Src: /src/dovecot/src/imap/cmd-append.c:551,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:552,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:557,1
    - Dst: cmd_append_continue_message
      Src: /src/dovecot/src/imap/cmd-append.c:560,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 488
    functionDepth: 5
    functionLinenumber: 488
    functionLinenumberEnd: 561
    functionName: cmd_append_continue_catenate
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - cmd_append_finish
    - cmd_append_send_literal_continue
    - cmd_append_finish_catenate
    - i_assert
    - imap_parser_reset
    - imap_parser_read_args
    - cmd_append_parse_new_msg
    - cmd_append_continue_message
    - cmd_append_catenate
    - cmd_append_finish_list
    - catenate_args_can_stop
    - cmd_append_handle_parse_error
    linkageType: ''
    returnType: bool
    signature: bool cmd_append_continue_catenate(struct client_command_context *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:570,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-append.c:572,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:580,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-append.c:582,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:591,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - args
    - cat_list_r
    argTypes:
    - struct cmd_append_context*
    - struct imap_arg**
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 596
    functionName: cmd_append_start_catenate
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - imap_arg_atom_equals
    linkageType: ''
    returnType: int
    signature: "int cmd_append_start_catenate(struct cmd_append_context *ctx,\n\t\t\t
      \ const struct imap_arg **args,\n\t\t\t  const struct imap_arg **cat_list_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:609,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-append.c:611,1
    - Dst: imap_arg_get_literal_size
      Src: /src/dovecot/src/imap/cmd-append.c:613,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/imap/cmd-append.c:618,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - args
    - nonsync_r
    argTypes:
    - struct cmd_append_context*
    - struct imap_arg**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 622
    functionName: cmd_append_start_utf8
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_literal_size
    - imap_arg_get_list
    - imap_arg_atom_equals
    - i_stream_create_limit
    linkageType: ''
    returnType: int
    signature: "int cmd_append_start_utf8(struct cmd_append_context *ctx,\n\t\t      const
      struct imap_arg **args,\n\t\t      bool *nonsync_r)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: client_args_finished
      Src: /src/dovecot/src/imap/cmd-append.c:643,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-append.c:647,1
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/imap/cmd-append.c:656,1
    - Dst: imap_arg_get_literal_size
      Src: /src/dovecot/src/imap/cmd-append.c:663,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/imap/cmd-append.c:666,1
    - Dst: cmd_append_start_catenate
      Src: /src/dovecot/src/imap/cmd-append.c:670,1
    - Dst: cmd_append_start_utf8
      Src: /src/dovecot/src/imap/cmd-append.c:672,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-append.c:675,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:680,1
    - Dst: client_parse_mail_flags
      Src: /src/dovecot/src/imap/cmd-append.c:688,1
    - Dst: mailbox_keywords_create
      Src: /src/dovecot/src/imap/cmd-append.c:693,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:696,1
    - Dst: imap_parse_datetime
      Src: /src/dovecot/src/imap/cmd-append.c:706,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:708,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/imap/cmd-append.c:710,1
    - Dst: i_stream_create_chain
      Src: /src/dovecot/src/imap/cmd-append.c:723,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-append.c:729,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/imap/cmd-append.c:735,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:742,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/imap/cmd-append.c:744,1
    - Dst: i_stream_create_binary_converter
      Src: /src/dovecot/src/imap/cmd-append.c:747,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-append.c:748,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/imap/cmd-append.c:754,1
    - Dst: mailbox_save_set_flags
      Src: /src/dovecot/src/imap/cmd-append.c:755,1
    - Dst: mailbox_save_set_received_date
      Src: /src/dovecot/src/imap/cmd-append.c:756,1
    - Dst: mailbox_save_begin
      Src: /src/dovecot/src/imap/cmd-append.c:759,1
    - Dst: mailbox_save_begin_replace
      Src: /src/dovecot/src/imap/cmd-append.c:761,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:767,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/imap/cmd-append.c:772,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:781,1
    - Dst: cmd_append_catenate
      Src: /src/dovecot/src/imap/cmd-append.c:784,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 120
    argCount: 3
    argNames:
    - cmd
    - args
    - nonsync_r
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 624
    functionDepth: 4
    functionLinenumber: 624
    functionLinenumberEnd: 794
    functionName: cmd_append_handle_args
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - cmd_append_start_utf8
    - i_stream_create_binary_converter
    - mailbox_save_alloc
    - i_stream_ref
    - imap_arg_as_astring
    - client_parse_mail_flags
    - i_stream_create_chain
    - mailbox_save_begin
    - cmd_append_start_catenate
    - client_send_command_error
    - client_send_box_error
    - imap_parse_datetime
    - cmd_append_catenate
    - mailbox_save_begin_replace
    - IMAP_ARG_IS_EOL
    - imap_arg_get_list
    - mailbox_keywords_create
    - client_send_tagline
    - mailbox_save_set_flags
    - client_args_finished
    - imap_arg_get_literal_size
    - i_assert
    - mailbox_keywords_unref
    - i_stream_create_limit
    - i_stream_unref
    - mailbox_save_set_received_date
    linkageType: ''
    returnType: int
    signature: "int cmd_append_handle_args(struct client_command_context *cmd,\n\t\t
      \      const struct imap_arg *args, bool *nonsync_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:813,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:817,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:818,1
    - Dst: mailbox_transaction_commit_get_changes
      Src: /src/dovecot/src/imap/cmd-append.c:822,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:824,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:825,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-append.c:829,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/imap/cmd-append.c:830,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:835,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-append.c:836,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/cmd-append.c:838,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-append.c:839,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-append.c:840,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-append.c:840,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-append.c:841,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:845,1
    - Dst: mail_free
      Src: /src/dovecot/src/imap/cmd-append.c:846,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/cmd-append.c:847,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-append.c:848,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/imap/cmd-append.c:848,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/cmd-append.c:851,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-append.c:853,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-append.c:862,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-append.c:864,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:866,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-append.c:867,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/cmd-append.c:869,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-append.c:870,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-append.c:872,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-append.c:873,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/cmd-append.c:875,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:885,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-append.c:886,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-append.c:886,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 59
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 796
    functionDepth: 3
    functionLinenumber: 796
    functionLinenumberEnd: 887
    functionName: cmd_append_finish_parsing
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - mailbox_transaction_commit_get_changes
    - pool_unref
    - mail_free
    - imap_write_seq_range
    - t_strflocaltime
    - t_str_new
    - str_append_c
    - client_send_line
    - client_send_command_error
    - client_send_box_error
    - mailbox_get_last_error
    - e_error
    - mailbox_transaction_commit
    - i_assert
    - cmd_append_finish
    - str_truncate
    - str_append
    - seq_range_count
    - cmd_sync
    linkageType: ''
    returnType: bool
    signature: bool cmd_append_finish_parsing(struct client_command_context *cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:909,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-append.c:910,1
    - Dst: catenate_args_can_stop
      Src: /src/dovecot/src/imap/cmd-append.c:911,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/imap/cmd-append.c:916,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-append.c:917,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - args
    - last_literal_r
    argTypes:
    - struct cmd_append_context*
    - struct imap_arg*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 889
    functionDepth: 3
    functionLinenumber: 889
    functionLinenumberEnd: 924
    functionName: cmd_append_args_can_stop
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - catenate_args_can_stop
    - imap_arg_get_list
    - imap_arg_atom_equals
    linkageType: ''
    returnType: bool
    signature: "bool cmd_append_args_can_stop(struct cmd_append_context *ctx,\n\t\t\t\t
      \    const struct imap_arg *args,\n\t\t\t\t     bool *last_literal_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: cmd_append_finish_list
      Src: /src/dovecot/src/imap/cmd-append.c:936,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:940,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:951,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap/cmd-append.c:969,1
    - Dst: cmd_append_args_can_stop
      Src: /src/dovecot/src/imap/cmd-append.c:973,1
    - Dst: cmd_append_handle_parse_error
      Src: /src/dovecot/src/imap/cmd-append.c:975,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:976,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-append.c:984,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:987,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:988,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-append.c:992,1
    - Dst: cmd_append_finish_parsing
      Src: /src/dovecot/src/imap/cmd-append.c:994,1
    - Dst: cmd_append_handle_args
      Src: /src/dovecot/src/imap/cmd-append.c:997,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:1000,1
    - Dst: cmd_append_finish_catenate
      Src: /src/dovecot/src/imap/cmd-append.c:1006,1
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/imap/cmd-append.c:1007,1
    - Dst: cmd_append_parse_new_msg
      Src: /src/dovecot/src/imap/cmd-append.c:1008,1
    - Dst: cmd_append_send_literal_continue
      Src: /src/dovecot/src/imap/cmd-append.c:1012,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:1013,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-append.c:1018,1
    - Dst: cmd_append_continue_message
      Src: /src/dovecot/src/imap/cmd-append.c:1021,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 926
    functionDepth: 5
    functionLinenumber: 926
    functionLinenumberEnd: 1022
    functionName: cmd_append_parse_new_msg
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 2
    functionsReached:
    - cmd_append_finish
    - cmd_append_finish_parsing
    - cmd_append_finish_catenate
    - cmd_append_send_literal_continue
    - imap_parser_reset
    - imap_parser_read_args
    - cmd_append_parse_new_msg
    - cmd_append_finish_list
    - client_send_command_error
    - cmd_append_continue_message
    - cmd_append_handle_args
    - cmd_append_args_can_stop
    - i_assert
    - cmd_append_handle_parse_error
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: bool cmd_append_parse_new_msg(struct client_command_context *cmd)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:1032,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap/cmd-append.c:1038,1
    - Dst: mailbox_save_continue
      Src: /src/dovecot/src/imap/cmd-append.c:1039,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/imap/cmd-append.c:1042,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap/cmd-append.c:1053,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap/cmd-append.c:1054,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/imap/cmd-append.c:1055,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/imap/cmd-append.c:1066,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap/cmd-append.c:1067,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-append.c:1068,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/imap/cmd-append.c:1072,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:1075,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/imap/cmd-append.c:1081,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/cmd-append.c:1082,1
    - Dst: get_disconnect_reason
      Src: /src/dovecot/src/imap/cmd-append.c:1083,1
    - Dst: mailbox_save_finish
      Src: /src/dovecot/src/imap/cmd-append.c:1086,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-append.c:1087,1
    - Dst: cmd_append_finish
      Src: /src/dovecot/src/imap/cmd-append.c:1092,1
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/imap/cmd-append.c:1098,1
    - Dst: cmd_append_continue_catenate
      Src: /src/dovecot/src/imap/cmd-append.c:1102,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-append.c:1105,1
    - Dst: cmd_append_parse_new_msg
      Src: /src/dovecot/src/imap/cmd-append.c:1107,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1024
    functionDepth: 6
    functionLinenumber: 1024
    functionLinenumberEnd: 1110
    functionName: cmd_append_continue_message
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 2
    functionsReached:
    - cmd_append_finish
    - i_stream_get_data_size
    - get_disconnect_reason
    - imap_parser_reset
    - mailbox_save_continue
    - cmd_append_parse_new_msg
    - i_stream_skip
    - client_disconnect
    - mailbox_save_finish
    - mailbox_save_cancel
    - i_stream_seek
    - client_send_box_error
    - i_stream_unref
    - cmd_append_continue_catenate
    - i_stream_read
    linkageType: ''
    returnType: bool
    signature: bool cmd_append_continue_message(struct client_command_context *cmd)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-append.c:1127,1
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-append.c:1131,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-append.c:1137,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/imap/cmd-append.c:1138,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:1139,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-append.c:1147,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:1148,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-append.c:1154,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-append.c:1163,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/cmd-append.c:1168,1
    - Dst: client_open_save_dest_box
      Src: /src/dovecot/src/imap/cmd-append.c:1170,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-append.c:1173,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-append.c:1174,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/cmd-append.c:1175,1
    - Dst: imap_client_command_get_reason
      Src: /src/dovecot/src/imap/cmd-append.c:1178,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/cmd-append.c:1182,1
    - Dst: imap_client_command_get_reason
      Src: /src/dovecot/src/imap/cmd-append.c:1184,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/imap/cmd-append.c:1185,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/imap/cmd-append.c:1189,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/imap/cmd-append.c:1190,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-append.c:1191,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap/cmd-append.c:1197,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/imap/cmd-append.c:1198,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/imap/cmd-append.c:1202,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/imap/cmd-append.c:1204,1
    - Dst: imap_parser_enable_literal_minus
      Src: /src/dovecot/src/imap/cmd-append.c:1207,1
    - Dst: cmd_append_parse_new_msg
      Src: /src/dovecot/src/imap/cmd-append.c:1211,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 58
    argCount: 2
    argNames:
    - cmd
    - replace
    argTypes:
    - struct client_command_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1112
    functionDepth: 6
    functionLinenumber: 1112
    functionLinenumberEnd: 1212
    functionName: cmd_append_full
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - imap_parser_enable_literal_minus
    - io_remove
    - str_to_uint32
    - cmd_append_parse_new_msg
    - o_stream_unset_flush_callback
    - client_read_args
    - client_open_save_dest_box
    - imap_arg_get_astring
    - client_verify_open_mailbox
    - p_new
    - mailbox_transaction_begin
    - mail_set_seq
    - client_send_command_error
    - client_enabled_mailbox_features
    - event_add_str
    - io_add_istream
    - client_send_tagline
    - imap_parser_create
    - mailbox_get_vname
    - mail_alloc
    - imap_client_command_get_reason
    - mail_set_uid
    - imap_arg_get_atom
    linkageType: ''
    returnType: bool
    signature: bool cmd_append_full(struct client_command_context *cmd, bool replace)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_append_full
      Src: /src/dovecot/src/imap/cmd-append.c:1216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1214
    functionDepth: 7
    functionLinenumber: 1214
    functionLinenumberEnd: 1217
    functionName: cmd_append
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - cmd_append_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_append(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_append_full
      Src: /src/dovecot/src/imap/cmd-append.c:1221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1219
    functionDepth: 7
    functionLinenumber: 1219
    functionLinenumberEnd: 1222
    functionName: cmd_replace
    functionSourceFile: /src/dovecot/src/imap/cmd-append.c
    functionUses: 0
    functionsReached:
    - cmd_append_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_replace(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:42,1
    - Dst: imap_urlauth_fetch_deinit
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:44,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:51,1
    - Dst: client_send_internal_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:53,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:58,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 59
    functionName: cmd_urlfetch_finish
    functionSourceFile: /src/dovecot/src/imap/cmd-urlfetch.c
    functionUses: 0
    functionsReached:
    - client_send_internal_error
    - client_send_tagline
    - client_disconnect
    - i_stream_unref
    - imap_urlauth_fetch_deinit
    linkageType: ''
    returnType: void
    signature: void cmd_urlfetch_finish(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:69,1
    - Dst: imap_urlauth_fetch_deinit
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 75
    functionName: cmd_urlfetch_cancel
    functionSourceFile: /src/dovecot/src/imap/cmd-urlfetch.c
    functionUses: 0
    functionsReached:
    - e_debug
    - imap_urlauth_fetch_deinit
    linkageType: ''
    returnType: bool
    signature: bool cmd_urlfetch_cancel(struct client_command_context *cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:89,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:91,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:96,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:97,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:98,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:102,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:105,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:109,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:110,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:111,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:112,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 119
    functionName: cmd_urlfetch_transfer_literal
    functionSourceFile: /src/dovecot/src/imap/cmd-urlfetch.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - o_stream_send_istream
    - client_disconnect
    - e_error
    - i_stream_get_error
    - o_stream_get_buffer_used_size
    - i_stream_unref
    - o_stream_flush
    - i_stream_get_name
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: int
    signature: int cmd_urlfetch_transfer_literal(struct client_command_context *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cmd_urlfetch_cancel
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:129,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:131,1
    - Dst: cmd_urlfetch_transfer_literal
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:135,1
    - Dst: cmd_urlfetch_finish
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:138,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:147,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:149,1
    - Dst: imap_urlauth_fetch_continue
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:153,1
    - Dst: cmd_urlfetch_finish
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:166,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 168
    functionName: cmd_urlfetch_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-urlfetch.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_fetch_continue
    - client_send_line
    - cmd_urlfetch_finish
    - cmd_urlfetch_transfer_literal
    - cmd_urlfetch_cancel
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool cmd_urlfetch_continue(struct client_command_context *cmd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:174,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:177,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:178,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:184,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:185,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:185,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:186,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:193,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:194,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:195,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:200,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:202,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:204,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:207,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:212,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:212,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:216,1
    - Dst: cmd_urlfetch_transfer_literal
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:218,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:232,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:234,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 2
    argNames:
    - cmd
    - reply
    argTypes:
    - struct client_command_context*
    - struct imap_urlauth_fetch_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 237
    functionName: cmd_urlfetch_url_success
    functionSourceFile: /src/dovecot/src/imap/cmd-urlfetch.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - imap_append_astring
    - client_send_line
    - i_stream_create_sized
    - cmd_urlfetch_transfer_literal
    - str_append
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int cmd_urlfetch_url_success(struct client_command_context *cmd,\n\t\t\t\t
      \  struct imap_urlauth_fetch_reply *reply)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:250,1
    - Dst: cmd_urlfetch_url_success
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:253,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:256,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:258,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:259,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:260,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:261,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:261,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:263,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:263,1
    - Dst: cmd_urlfetch_finish
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:271,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:273,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:276,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - reply
    - last
    - context
    argTypes:
    - struct imap_urlauth_fetch_reply*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 278
    functionName: cmd_urlfetch_url_callback
    functionSourceFile: /src/dovecot/src/imap/cmd-urlfetch.c
    functionUses: 0
    functionsReached:
    - cmd_urlfetch_url_success
    - str_c
    - t_str_new
    - o_stream_uncork
    - o_stream_cork
    - t_strdup_printf
    - imap_append_astring
    - client_send_line
    - cmd_urlfetch_finish
    - client_command_free
    - str_append
    linkageType: ''
    returnType: int
    signature: "int cmd_urlfetch_url_callback(struct imap_urlauth_fetch_reply *reply,\n\t\t\t
      \ bool last, void *context)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:291,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:297,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:298,1
    - Dst: t_strdup
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:301,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:305,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:308,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:309,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:314,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:316,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:318,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:321,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:322,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:330,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 3
    argNames:
    - cmd
    - arg
    - ufurl_r
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    - struct cmd_urlfetch_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 280
    functionDepth: 3
    functionLinenumber: 280
    functionLinenumberEnd: 339
    functionName: cmd_urlfetch_parse_arg
    functionSourceFile: /src/dovecot/src/imap/cmd-urlfetch.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_atom
    - imap_arg_get_list
    - t_strdup_printf
    - strcasecmp
    - client_send_command_error
    - imap_arg_get_astring
    - t_strdup
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: int
    signature: "int cmd_urlfetch_parse_arg(struct client_command_context *cmd,\n\t\t
      \      const struct imap_arg *arg,\n\t\t       struct cmd_urlfetch_url *ufurl_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:351,1
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:355,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:358,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:359,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:363,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:366,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:367,1
    - Dst: cmd_urlfetch_parse_arg
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:368,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:371,1
    - Dst: imap_urlauth_fetch_init
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:375,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:379,1
    - Dst: imap_urlauth_fetch_url
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:380,1
    - Dst: imap_urlauth_fetch_is_pending
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:388,1
    - Dst: cmd_urlfetch_finish
      Src: /src/dovecot/src/imap/cmd-urlfetch.c:391,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 341
    functionDepth: 4
    functionLinenumber: 341
    functionLinenumberEnd: 398
    functionName: cmd_urlfetch
    functionSourceFile: /src/dovecot/src/imap/cmd-urlfetch.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_fetch_url
    - array_append_space
    - p_new
    - imap_urlauth_fetch_is_pending
    - imap_urlauth_fetch_init
    - array_foreach
    - client_read_args
    - client_send_command_error
    - cmd_urlfetch_finish
    - t_array_init
    - cmd_urlfetch_parse_arg
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: bool cmd_urlfetch(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-commands.c:105,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-commands.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - name
    - func
    - flags
    argTypes:
    - char*
    - command_func_t*
    - enum command_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 112
    functionName: command_register
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void command_register(const char *name, command_func_t *func,\n\t\t
      \     enum command_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-commands.c:119,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-commands.c:121,1
    - Dst: array_delete
      Src: /src/dovecot/src/imap/imap-commands.c:122,1
    - Dst: i_error
      Src: /src/dovecot/src/imap/imap-commands.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 128
    functionName: command_unregister
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - i_error
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: void command_unregister(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append
      Src: /src/dovecot/src/imap/imap-commands.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cmdarr
    - count
    argTypes:
    - struct command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: command_register_array
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - array_append
    linkageType: ''
    returnType: void
    signature: void command_register_array(const struct command *cmdarr, unsigned
      int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: command_unregister
      Src: /src/dovecot/src/imap/imap-commands.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cmdarr
    - count
    argTypes:
    - struct command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 142
    functionName: command_unregister_array
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - command_unregister
    linkageType: ''
    returnType: void
    signature: void command_unregister_array(const struct command *cmdarr, unsigned
      int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-commands.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pre
    - post
    argTypes:
    - command_hook_callback_t*
    - command_hook_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 152
    functionName: command_hook_register
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void command_hook_register(command_hook_callback_t *pre,\n\t\t\t   command_hook_callback_t
      *post)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-commands.c:160,1
    - Dst: array_delete
      Src: /src/dovecot/src/imap/imap-commands.c:163,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-commands.c:167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - pre
    - post
    argTypes:
    - command_hook_callback_t*
    - command_hook_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 168
    functionName: command_hook_unregister
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - i_panic
    - array_delete
    - array_get
    linkageType: ''
    returnType: void
    signature: "void command_hook_unregister(command_hook_callback_t *pre,\n\t\t\t
      \    command_hook_callback_t *post)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_lock_wait_get_total_usecs
      Src: /src/dovecot/src/imap/imap-commands.c:173,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/imap/imap-commands.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 176
    functionName: command_stats_start
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 1
    functionsReached:
    - file_lock_wait_get_total_usecs
    - i_stream_get_absolute_offset
    linkageType: ''
    returnType: void
    signature: void command_stats_start(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/imap/imap-commands.c:180,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/imap/imap-commands.c:182,1
    - Dst: file_lock_wait_get_total_usecs
      Src: /src/dovecot/src/imap/imap-commands.c:184,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/imap/imap-commands.c:186,1
    - Dst: command_stats_start
      Src: /src/dovecot/src/imap/imap-commands.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 192
    functionName: command_stats_flush
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 1
    functionsReached:
    - i_stream_get_absolute_offset
    - timeval_diff_usecs
    - file_lock_wait_get_total_usecs
    - io_loop_time_refresh
    - command_stats_start
    linkageType: ''
    returnType: void
    signature: void command_stats_flush(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-commands.c:199,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/imap/imap-commands.c:201,1
    - Dst: command_stats_start
      Src: /src/dovecot/src/imap/imap-commands.c:202,1
    - Dst: event_push_global
      Src: /src/dovecot/src/imap/imap-commands.c:204,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/imap-commands.c:206,1
    - Dst: struct client_command_context*::func
      Src: /src/dovecot/src/imap/imap-commands.c:208,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/imap-commands.c:209,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/imap/imap-commands.c:212,1
    - Dst: command_stats_flush
      Src: /src/dovecot/src/imap/imap-commands.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 218
    functionName: command_exec
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 5
    functionsReached:
    - array_foreach
    - event_push_global
    - event_pop_global
    - io_loop_time_refresh
    - struct client_command_context*::func
    - command_stats_flush
    - i_assert
    - command_stats_start
    linkageType: ''
    returnType: bool
    signature: bool command_exec(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-commands.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - struct command*
    - struct command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: command_cmp
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int command_cmp(const struct command *c1, const struct command *c2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-commands.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - cmd
    argTypes:
    - char*
    - struct command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 228
    functionName: command_bsearch
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int command_bsearch(const char *name, const struct command *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/imap/imap-commands.c:233,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/imap/imap-commands.c:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 238
    functionName: command_find
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 1
    functionsReached:
    - array_sort
    - array_bsearch
    linkageType: ''
    returnType: struct command
    signature: struct command *command_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-commands.c:242,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-commands.c:243,1
    - Dst: command_register_array
      Src: /src/dovecot/src/imap/imap-commands.c:246,1
    - Dst: command_register_array
      Src: /src/dovecot/src/imap/imap-commands.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 248
    functionName: commands_init
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - command_register_array
    linkageType: ''
    returnType: void
    signature: void commands_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-commands.c:252,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-commands.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 254
    functionName: commands_deinit
    functionSourceFile: /src/dovecot/src/imap/imap-commands.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void commands_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-expunge.c:20,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-expunge.c:21,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/imap-expunge.c:28,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/imap-expunge.c:30,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/imap-expunge.c:33,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/imap/imap-expunge.c:34,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/imap-expunge.c:36,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/imap-expunge.c:38,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-expunge.c:39,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-expunge.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - box
    - next_search_arg
    - seqset
    argTypes:
    - struct mailbox*
    - struct mail_search_arg*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 45
    functionName: imap_expunge_get_seqset
    functionSourceFile: /src/dovecot/src/imap/imap-expunge.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - p_new
    - mailbox_transaction_begin
    - mailbox_search_deinit
    - mail_search_build_init
    - mailbox_transaction_commit
    - mailbox_search_init
    - mailbox_search_next
    - mail_search_args_unref
    - array_free
    linkageType: ''
    returnType: int
    signature: "int imap_expunge_get_seqset(struct mailbox *box,\n\t\t\t\t   struct
      mail_search_arg *next_search_arg,\n\t\t\t\t   ARRAY_TYPE(seq_range) *seqset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_readonly
      Src: /src/dovecot/src/imap/imap-expunge.c:56,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/imap-expunge.c:61,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-expunge.c:63,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-expunge.c:64,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-expunge.c:66,1
    - Dst: imap_expunge_get_seqset
      Src: /src/dovecot/src/imap/imap-expunge.c:68,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-expunge.c:70,1
    - Dst: mail_search_seqset_iter_init
      Src: /src/dovecot/src/imap/imap-expunge.c:88,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/imap-expunge.c:96,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/imap-expunge.c:97,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/imap-expunge.c:99,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/imap/imap-expunge.c:101,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/imap-expunge.c:105,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/imap-expunge.c:108,1
    - Dst: mail_search_seqset_iter_next
      Src: /src/dovecot/src/imap/imap-expunge.c:110,1
    - Dst: mail_search_seqset_iter_deinit
      Src: /src/dovecot/src/imap/imap-expunge.c:112,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-expunge.c:113,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - box
    - next_search_arg
    - expunged_count
    argTypes:
    - struct mailbox*
    - struct mail_search_arg*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 119
    functionName: imap_expunge
    functionSourceFile: /src/dovecot/src/imap/imap-expunge.c
    functionUses: 2
    functionsReached:
    - p_new
    - p_array_init
    - mailbox_transaction_begin
    - mail_expunge
    - imap_expunge_get_seqset
    - mail_search_seqset_iter_deinit
    - mailbox_search_init
    - mailbox_search_deinit
    - mail_search_build_init
    - mailbox_get_open_status
    - mailbox_is_readonly
    - mail_search_seqset_iter_init
    - mailbox_transaction_commit
    - mailbox_search_next
    - mail_search_args_unref
    - mail_search_seqset_iter_next
    linkageType: ''
    returnType: int
    signature: "int imap_expunge(struct mailbox *box, struct mail_search_arg *next_search_arg,\n\t\t
      unsigned int *expunged_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-check.c:8,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-check.c:11,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 13
    functionName: cmd_check
    functionSourceFile: /src/dovecot/src/imap/cmd-check.c
    functionUses: 0
    functionsReached:
    - client_verify_open_mailbox
    - cmd_sync
    linkageType: ''
    returnType: bool
    signature: bool cmd_check(struct client_command_context *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-commands-util.c:26,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/imap/imap-commands-util.c:28,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-commands-util.c:32,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/imap/imap-commands-util.c:33,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/imap/imap-commands-util.c:38,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-commands-util.c:38,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-commands-util.c:43,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/imap/imap-commands-util.c:46,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-commands-util.c:52,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-commands-util.c:53,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-commands-util.c:53,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/imap-commands-util.c:53,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-commands-util.c:55,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-commands-util.c:55,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-commands-util.c:58,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - cmd
    - mailbox
    - client_error_r
    argTypes:
    - struct client_command_context*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 60
    functionName: client_find_namespace_full
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mail_namespace_get_sep
    - mail_namespace_find
    - str_len
    - uni_utf8_str_is_valid
    - t_strdup_printf
    - imap_utf7_to_utf8
    - str_truncate
    - str_append
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nclient_find_namespace_full(struct client_command_context
      *cmd,\n\t\t\t   const char **mailbox, const char **client_error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_find_namespace_full
      Src: /src/dovecot/src/imap/imap-commands-util.c:68,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-commands-util.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cmd
    - mailbox
    argTypes:
    - struct client_command_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 72
    functionName: client_find_namespace
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 5
    functionsReached:
    - client_send_tagline
    - client_find_namespace_full
    linkageType: ''
    returnType: struct mail_namespace
    signature: 'struct mail_namespace *

      client_find_namespace(struct client_command_context *cmd, const char **mailbox)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/imap-commands-util.c:77,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-commands-util.c:78,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-commands-util.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: client_verify_open_mailbox
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 9
    functionsReached:
    - event_add_str
    - client_send_tagline
    - mailbox_get_vname
    linkageType: ''
    returnType: bool
    signature: bool client_verify_open_mailbox(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-commands-util.c:90,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-commands-util.c:92,1
    - Dst: array_clear
      Src: /src/dovecot/src/imap/imap-commands-util.c:93,1
    - Dst: client_search_updates_free
      Src: /src/dovecot/src/imap/imap-commands-util.c:94,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-commands-util.c:95,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-commands-util.c:100,1
    - Dst: client_update_mailbox_flags
      Src: /src/dovecot/src/imap/imap-commands-util.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 102
    functionName: imap_client_close_mailbox
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 4
    functionsReached:
    - mailbox_free
    - client_search_updates_free
    - client_update_mailbox_flags
    - array_clear
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void imap_client_close_mailbox(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/imap-commands-util.c:112,1
    - Dst: mailbox_equals
      Src: /src/dovecot/src/imap/imap-commands-util.c:117,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/imap-commands-util.c:121,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/imap/imap-commands-util.c:122,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:123,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-commands-util.c:125,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-commands-util.c:125,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:128,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-commands-util.c:130,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/imap/imap-commands-util.c:133,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-commands-util.c:133,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:134,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-commands-util.c:135,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - cmd
    - name
    - destbox_r
    argTypes:
    - struct client_command_context*
    - char*
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 140
    functionName: client_open_save_dest_box
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 1
    functionsReached:
    - mailbox_enable
    - mailbox_get_last_error
    - mailbox_open
    - client_find_namespace
    - mailbox_free
    - client_send_tagline
    - t_strdup_printf
    - mailbox_equals
    - mailbox_alloc
    - client_send_box_error
    - client_enabled_mailbox_features
    linkageType: ''
    returnType: int
    signature: "int client_open_save_dest_box(struct client_command_context *cmd,\n\t\t\t
      \     const char *name, struct mailbox **destbox_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-commands-util.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: imap_client_command_get_reason
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 3
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *imap_client_command_get_reason(struct client_command_context
      *cmd)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-commands-util.c:198,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-commands-util.c:200,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 2
    argNames:
    - error_string
    - error
    argTypes:
    - char*
    - enum mail_error
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 201
    functionName: imap_get_error_string
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 3
    functionsReached:
    - t_strdup_printf
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: 'char *

      imap_get_error_string(const char *error_string, enum mail_error error)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-commands-util.c:206,1
    - Dst: imap_get_error_string
      Src: /src/dovecot/src/imap/imap-commands-util.c:206,1
    - Dst: client_disconnect_if_inconsistent
      Src: /src/dovecot/src/imap/imap-commands-util.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - cmd
    - error_string
    - error
    argTypes:
    - struct client_command_context*
    - char*
    - enum mail_error
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 208
    functionName: client_send_error
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 0
    functionsReached:
    - client_disconnect_if_inconsistent
    - client_send_tagline
    - imap_get_error_string
    linkageType: ''
    returnType: void
    signature: "void client_send_error(struct client_command_context *cmd,\n\t\t       const
      char *error_string, enum mail_error error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:216,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-commands-util.c:217,1
    - Dst: imap_get_error_string
      Src: /src/dovecot/src/imap/imap-commands-util.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cmd
    - list
    argTypes:
    - struct client_command_context*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 218
    functionName: client_send_list_error
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 2
    functionsReached:
    - client_send_tagline
    - mailbox_list_get_last_error
    - imap_get_error_string
    linkageType: ''
    returnType: void
    signature: "void client_send_list_error(struct client_command_context *cmd,\n\t\t\t
      \   struct mailbox_list *list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_inconsistent
      Src: /src/dovecot/src/imap/imap-commands-util.c:223,1
    - Dst: client_disconnect_with_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 228
    functionName: client_disconnect_if_inconsistent
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 2
    functionsReached:
    - mailbox_is_inconsistent
    - client_disconnect_with_error
    linkageType: ''
    returnType: void
    signature: void client_disconnect_if_inconsistent(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_storage_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:233,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/imap/imap-commands-util.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - box
    argTypes:
    - struct client_command_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: client_send_box_error
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 14
    functionsReached:
    - mailbox_get_storage
    - client_send_storage_error
    linkageType: ''
    returnType: void
    signature: "void client_send_box_error(struct client_command_context *cmd,\n\t\t\t
      \  struct mailbox *box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:242,1
    - Dst: client_send_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cmd
    - storage
    argTypes:
    - struct client_command_context*
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 236
    functionDepth: 3
    functionLinenumber: 236
    functionLinenumberEnd: 244
    functionName: client_send_storage_error
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 1
    functionsReached:
    - mail_storage_get_last_error
    - client_send_error
    linkageType: ''
    returnType: void
    signature: "void client_send_storage_error(struct client_command_context *cmd,\n\t\t\t
      \      struct mail_storage *storage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:252,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-commands-util.c:253,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-commands-util.c:253,1
    - Dst: client_disconnect_if_inconsistent
      Src: /src/dovecot/src/imap/imap-commands-util.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - client
    - storage
    argTypes:
    - struct client*
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 246
    functionDepth: 3
    functionLinenumber: 246
    functionLinenumberEnd: 256
    functionName: client_send_untagged_storage_error
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 3
    functionsReached:
    - client_disconnect_if_inconsistent
    - client_send_line
    - mail_storage_get_last_error
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void client_send_untagged_storage_error(struct client *client,\n\t\t\t\t\tstruct
      mail_storage *storage)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-commands-util.c:269,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/imap-commands-util.c:271,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/imap-commands-util.c:272,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:273,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/imap-commands-util.c:280,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/imap/imap-commands-util.c:281,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-commands-util.c:285,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-commands-util.c:285,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-commands-util.c:291,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-commands-util.c:297,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/imap/imap-commands-util.c:300,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/imap-commands-util.c:301,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - cmd
    - args
    - flags_r
    - keywords_r
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    - enum mail_flags*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 258
    functionDepth: 3
    functionLinenumber: 258
    functionLinenumberEnd: 304
    functionName: client_parse_mail_flags
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 2
    functionsReached:
    - t_str_ucase
    - p_array_init
    - array_push_back
    - imap_parse_system_flag
    - client_send_command_error
    - array_count
    - array_front
    - imap_arg_get_atom
    - array_append_zero
    - t_strconcat
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool client_parse_mail_flags(struct client_command_context *cmd,\n\t\t\t
      \    const struct imap_arg *args,\n\t\t\t     enum mail_flags *flags_r,\n\t\t\t
      \    const char *const **keywords_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-commands-util.c:309,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/imap-commands-util.c:319,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/imap-commands-util.c:323,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-commands-util.c:324,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-commands-util.c:325,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/imap/imap-commands-util.c:326,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-commands-util.c:327,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-commands-util.c:328,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-commands-util.c:328,1
    - Dst: mailbox_is_readonly
      Src: /src/dovecot/src/imap/imap-commands-util.c:330,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-commands-util.c:346,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-commands-util.c:347,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/imap/imap-commands-util.c:348,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-commands-util.c:351,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-commands-util.c:352,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-commands-util.c:354,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-commands-util.c:357,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-commands-util.c:359,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-commands-util.c:360,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-commands-util.c:360,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - client
    - selecting
    argTypes:
    - struct client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 361
    functionName: client_send_mailbox_flags
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - imap_write_flags
    - array_count
    - client_send_line
    - mailbox_is_readonly
    - mailbox_get_open_status
    - str_truncate
    - array_front
    - str_append
    linkageType: ''
    returnType: void
    signature: void client_send_mailbox_flags(struct client *client, bool selecting)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - keywords
    argTypes:
    - struct client*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 368
    functionName: client_update_mailbox_flags
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void client_update_mailbox_flags(struct client *client,\n\t\t\t\t
      const ARRAY_TYPE(keywords) *keywords)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_mailbox_flags
      Src: /src/dovecot/src/imap/imap-commands-util.c:378,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-commands-util.c:381,1
    - Dst: array_clear
      Src: /src/dovecot/src/imap/imap-commands-util.c:382,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-commands-util.c:384,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-commands-util.c:385,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/imap/imap-commands-util.c:388,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/imap-commands-util.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 390
    functionName: client_get_keyword_names
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 1
    functionsReached:
    - array_push_back
    - array_get
    - array_clear
    - array_front
    - array_append_zero
    - i_assert
    - client_send_mailbox_flags
    linkageType: ''
    returnType: char
    signature: "char *const *\nclient_get_keyword_names(struct client *client, ARRAY_TYPE(keywords)
      *dest,\n\t\t\t const ARRAY_TYPE(keyword_indexes) *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-commands-util.c:384,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-commands-util.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 3
    functionsReached:
    - i_assert
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(src, kw_index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-commands-util.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct msgset_generator_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 397
    functionName: msgset_generator_init
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void msgset_generator_init(struct msgset_generator_context *ctx, string_t
      *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-commands-util.c:401,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-commands-util.c:407,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-commands-util.c:409,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct msgset_generator_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 415
    functionName: msgset_generator_next
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - i_assert
    linkageType: ''
    returnType: void
    signature: void msgset_generator_next(struct msgset_generator_context *ctx, uint32_t
      uid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-commands-util.c:420,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-commands-util.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct msgset_generator_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 423
    functionName: msgset_generator_finish
    functionSourceFile: /src/dovecot/src/imap/imap-commands-util.c
    functionUses: 0
    functionsReached:
    - str_printfa
    linkageType: ''
    returnType: void
    signature: void msgset_generator_finish(struct msgset_generator_context *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/imap/imap-progress.c:27,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-progress.c:29,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-progress.c:30,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-progress.c:32,1
    - Dst: imap_append_quoted
      Src: /src/dovecot/src/imap/imap-progress.c:34,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-progress.c:36,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-progress.c:39,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-progress.c:41,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-progress.c:44,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-progress.c:46,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-progress.c:48,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-progress.c:50,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-progress.c:54,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/imap/imap-progress.c:56,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-progress.c:62,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-progress.c:66,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-progress.c:68,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-progress.c:70,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 30
    argCount: 2
    argNames:
    - dtl
    - tag
    argTypes:
    - struct mail_storage_progress_details*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 71
    functionName: imap_progress_line
    functionSourceFile: /src/dovecot/src/imap/imap-progress.c
    functionUses: 1
    functionsReached:
    - strchr
    - t_str_new
    - str_printfa
    - str_append_c
    - timeval_diff_msecs
    - str_c
    - str_append
    - imap_append_quoted
    linkageType: ''
    returnType: char
    signature: "char *\nimap_progress_line(const struct mail_storage_progress_details
      *dtl,\n\t\t   const char *tag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/cmd-select.c:40,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/imap/cmd-select.c:42,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-select.c:43,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-select.c:44,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/imap/cmd-select.c:46,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-select.c:48,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-select.c:50,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/imap/cmd-select.c:55,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-select.c:58,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-select.c:60,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/imap/cmd-select.c:63,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - seqset
    - uidset
    argTypes:
    - struct imap_select_context*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 66
    functionName: select_qresync_get_uids
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - seq_range_array_iter_nth
    - array_push_back
    - seq_range_array_iter_init
    - array_get
    linkageType: ''
    returnType: int
    signature: "int select_qresync_get_uids(struct imap_select_context *ctx,\n\t\t\t\t
      \  const ARRAY_TYPE(seq_range) *seqset,\n\t\t\t\t   const ARRAY_TYPE(seq_range)
      *uidset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/cmd-select.c:73,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/cmd-select.c:76,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-select.c:77,1
    - Dst: imap_seq_set_nostar_parse
      Src: /src/dovecot/src/imap/cmd-select.c:78,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/cmd-select.c:84,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-select.c:85,1
    - Dst: imap_seq_set_nostar_parse
      Src: /src/dovecot/src/imap/cmd-select.c:86,1
    - Dst: select_qresync_get_uids
      Src: /src/dovecot/src/imap/cmd-select.c:92,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-select.c:96,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - args
    - error_r
    argTypes:
    - struct imap_select_context*
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 101
    functionName: select_parse_qresync_known_set
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - select_qresync_get_uids
    - t_array_init
    - ARRAY_TYPE
    - imap_arg_get_atom
    - imap_seq_set_nostar_parse
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool select_parse_qresync_known_set(struct imap_select_context *ctx,\n\t\t\t
      \      const struct imap_arg *args,\n\t\t\t       const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/cmd-select.c:111,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/imap/cmd-select.c:115,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-select.c:120,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/imap/cmd-select.c:121,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-select.c:122,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/imap/cmd-select.c:123,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-select.c:129,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-select.c:130,1
    - Dst: imap_seq_set_nostar_parse
      Src: /src/dovecot/src/imap/cmd-select.c:131,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/cmd-select.c:137,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-select.c:140,1
    - Dst: select_parse_qresync_known_set
      Src: /src/dovecot/src/imap/cmd-select.c:141,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-select.c:145,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - args
    - error_r
    argTypes:
    - struct imap_select_context*
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 150
    functionName: select_parse_qresync
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - seq_range_array_add_range
    - client_has_enabled
    - str_to_uint64
    - imap_arg_get_list
    - str_to_uint32
    - select_parse_qresync_known_set
    - imap_arg_get_atom
    - IMAP_ARG_IS_EOL
    - imap_seq_set_nostar_parse
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: "bool select_parse_qresync(struct imap_select_context *ctx,\n\t\t     const
      struct imap_arg *args, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-select.c:158,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-select.c:159,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/cmd-select.c:163,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-select.c:166,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-select.c:168,1
    - Dst: select_parse_qresync
      Src: /src/dovecot/src/imap/cmd-select.c:169,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - args
    - error_r
    argTypes:
    - struct imap_select_context*
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 152
    functionDepth: 4
    functionLinenumber: 152
    functionLinenumberEnd: 178
    functionName: select_parse_options
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - select_parse_qresync
    - imap_arg_get_atom
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool select_parse_options(struct imap_select_context *ctx,\n\t\t     const
      struct imap_arg *args, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-select.c:182,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-select.c:183,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-select.c:184,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-select.c:185,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-select.c:186,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-select.c:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_select_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 188
    functionName: select_context_free
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void select_context_free(struct imap_select_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-select.c:196,1
    - Dst: mailbox_is_readonly
      Src: /src/dovecot/src/imap/cmd-select.c:199,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-select.c:201,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-select.c:201,1
    - Dst: select_context_free
      Src: /src/dovecot/src/imap/cmd-select.c:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - ret
    argTypes:
    - struct imap_select_context*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 206
    functionName: cmd_select_finish
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - t_strdup_printf
    - client_send_tagline
    - mailbox_is_readonly
    - select_context_free
    linkageType: ''
    returnType: void
    signature: void cmd_select_finish(struct imap_select_context *ctx, int ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_more
      Src: /src/dovecot/src/imap/cmd-select.c:213,1
    - Dst: imap_fetch_end
      Src: /src/dovecot/src/imap/cmd-select.c:218,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-select.c:220,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/cmd-select.c:221,1
    - Dst: cmd_select_finish
      Src: /src/dovecot/src/imap/cmd-select.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 208
    functionDepth: 5
    functionLinenumber: 208
    functionLinenumberEnd: 224
    functionName: cmd_select_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - imap_fetch_end
    - imap_fetch_more
    - client_send_box_error
    - cmd_select_finish
    - imap_fetch_free
    linkageType: ''
    returnType: bool
    signature: bool cmd_select_continue(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/cmd-select.c:233,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-select.c:234,1
    - Dst: imap_search_add_changed_since
      Src: /src/dovecot/src/imap/cmd-select.c:237,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-select.c:239,1
    - Dst: imap_fetch_send_vanished
      Src: /src/dovecot/src/imap/cmd-select.c:243,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-select.c:245,1
    - Dst: imap_fetch_alloc
      Src: /src/dovecot/src/imap/cmd-select.c:249,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-select.c:250,1
    - Dst: imap_fetch_init_nofail_handler
      Src: /src/dovecot/src/imap/cmd-select.c:253,1
    - Dst: imap_fetch_init_nofail_handler
      Src: /src/dovecot/src/imap/cmd-select.c:254,1
    - Dst: imap_fetch_init_nofail_handler
      Src: /src/dovecot/src/imap/cmd-select.c:255,1
    - Dst: imap_fetch_begin
      Src: /src/dovecot/src/imap/cmd-select.c:257,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-select.c:258,1
    - Dst: imap_fetch_more
      Src: /src/dovecot/src/imap/cmd-select.c:260,1
    - Dst: imap_fetch_end
      Src: /src/dovecot/src/imap/cmd-select.c:269,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/cmd-select.c:270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_select_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 226
    functionDepth: 5
    functionLinenumber: 226
    functionLinenumberEnd: 272
    functionName: select_qresync
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imap_fetch_begin
    - imap_search_add_changed_since
    - p_new
    - imap_fetch_end
    - imap_fetch_alloc
    - imap_fetch_init_nofail_handler
    - t_strdup_printf
    - imap_fetch_more
    - mail_search_build_init
    - mail_search_args_unref
    - imap_fetch_send_vanished
    - imap_fetch_free
    linkageType: ''
    returnType: int
    signature: int select_qresync(struct imap_select_context *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-select.c:286,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-select.c:287,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-select.c:288,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/imap/cmd-select.c:289,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-select.c:290,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-select.c:291,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/imap/cmd-select.c:295,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/cmd-select.c:295,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/imap/cmd-select.c:297,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-select.c:298,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/cmd-select.c:301,1
    - Dst: client_update_mailbox_flags
      Src: /src/dovecot/src/imap/cmd-select.c:313,1
    - Dst: client_send_mailbox_flags
      Src: /src/dovecot/src/imap/cmd-select.c:314,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/cmd-select.c:316,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-select.c:318,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-select.c:319,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-select.c:321,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-select.c:322,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-select.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-select.c:327,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-select.c:331,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-select.c:332,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-select.c:335,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-select.c:336,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-select.c:341,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-select.c:344,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-select.c:345,1
    - Dst: select_qresync
      Src: /src/dovecot/src/imap/cmd-select.c:352,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-select.c:353,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 3
    argNames:
    - ctx
    - mailbox
    - readonly
    argTypes:
    - struct imap_select_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 274
    functionDepth: 6
    functionLinenumber: 274
    functionLinenumberEnd: 360
    functionName: select_open
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - mailbox_enable
    - mailbox_free
    - mailbox_open
    - select_qresync
    - t_strdup_printf
    - client_update_mailbox_flags
    - mailbox_sync
    - client_send_line
    - mailbox_alloc
    - client_send_box_error
    - mailbox_get_vname
    - client_enabled_mailbox_features
    - mailbox_get_open_status
    - event_add_str
    - client_send_mailbox_flags
    linkageType: ''
    returnType: int
    signature: int select_open(struct imap_select_context *ctx, const char *mailbox,
      bool readonly)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_client_close_mailbox
      Src: /src/dovecot/src/imap/cmd-select.c:367,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-select.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 370
    functionName: close_selected_mailbox
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - imap_client_close_mailbox
    linkageType: ''
    returnType: void
    signature: void close_selected_mailbox(struct client *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-select.c:381,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-select.c:384,1
    - Dst: close_selected_mailbox
      Src: /src/dovecot/src/imap/cmd-select.c:385,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-select.c:386,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/cmd-select.c:390,1
    - Dst: client_find_namespace_full
      Src: /src/dovecot/src/imap/cmd-select.c:392,1
    - Dst: close_selected_mailbox
      Src: /src/dovecot/src/imap/cmd-select.c:395,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-select.c:396,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-select.c:400,1
    - Dst: select_parse_options
      Src: /src/dovecot/src/imap/cmd-select.c:401,1
    - Dst: select_context_free
      Src: /src/dovecot/src/imap/cmd-select.c:402,1
    - Dst: close_selected_mailbox
      Src: /src/dovecot/src/imap/cmd-select.c:404,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-select.c:405,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-select.c:410,1
    - Dst: close_selected_mailbox
      Src: /src/dovecot/src/imap/cmd-select.c:413,1
    - Dst: client_enable
      Src: /src/dovecot/src/imap/cmd-select.c:418,1
    - Dst: select_open
      Src: /src/dovecot/src/imap/cmd-select.c:421,1
    - Dst: cmd_select_finish
      Src: /src/dovecot/src/imap/cmd-select.c:424,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - cmd
    - readonly
    argTypes:
    - struct client_command_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 372
    functionDepth: 7
    functionLinenumber: 372
    functionLinenumberEnd: 426
    functionName: cmd_select_full
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 1
    functionsReached:
    - i_assert
    - imap_arg_get_list
    - p_new
    - select_open
    - client_enable
    - client_send_tagline
    - client_read_args
    - client_send_command_error
    - select_parse_options
    - cmd_select_finish
    - select_context_free
    - close_selected_mailbox
    - client_find_namespace_full
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_select_full(struct client_command_context *cmd, bool readonly)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_select_full
      Src: /src/dovecot/src/imap/cmd-select.c:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 428
    functionDepth: 8
    functionLinenumber: 428
    functionLinenumberEnd: 431
    functionName: cmd_select
    functionSourceFile: /src/dovecot/src/imap/cmd-select.c
    functionUses: 0
    functionsReached:
    - cmd_select_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_select(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-fetch.c:29,1
    - Dst: imap_fetch_init_handler
      Src: /src/dovecot/src/imap/cmd-fetch.c:35,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-fetch.c:36,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - cmd
    - name
    - args
    argTypes:
    - struct imap_fetch_context*
    - struct client_command_context*
    - char*
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 22
    functionDepth: 3
    functionLinenumber: 22
    functionLinenumberEnd: 42
    functionName: imap_fetch_cmd_init_handler
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - client_send_command_error
    - i_assert
    - imap_fetch_init_handler
    linkageType: ''
    returnType: bool
    signature: "bool imap_fetch_cmd_init_handler(struct imap_fetch_context *ctx,\n\t\t\t
      \   struct client_command_context *cmd,\n\t\t\t    const char *name, const struct
      imap_arg **args)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_cmd_init_handler
      Src: /src/dovecot/src/imap/cmd-fetch.c:52,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-fetch.c:55,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/cmd-fetch.c:56,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-fetch.c:60,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-fetch.c:62,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-fetch.c:64,1
    - Dst: imap_fetch_cmd_init_handler
      Src: /src/dovecot/src/imap/cmd-fetch.c:68,1
    - Dst: imap_fetch_cmd_init_handler
      Src: /src/dovecot/src/imap/cmd-fetch.c:73,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/imap/cmd-fetch.c:81,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-fetch.c:82,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:83,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-fetch.c:87,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/cmd-fetch.c:88,1
    - Dst: imap_fetch_cmd_init_handler
      Src: /src/dovecot/src/imap/cmd-fetch.c:90,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-fetch.c:93,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:94,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 4
    argNames:
    - ctx
    - cmd
    - arg
    - next_arg_r
    argTypes:
    - struct imap_fetch_context*
    - struct client_command_context*
    - struct imap_arg*
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 100
    functionName: fetch_parse_args
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - client_send_command_error
    - imap_arg_get_atom
    - imap_fetch_cmd_init_handler
    - imap_arg_as_list
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool fetch_parse_args(struct imap_fetch_context *ctx,\n\t\t struct
      client_command_context *cmd,\n\t\t const struct imap_arg *arg, const struct
      imap_arg **next_arg_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-fetch.c:112,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:114,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-fetch.c:118,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/imap/cmd-fetch.c:119,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:120,1
    - Dst: imap_search_add_changed_since
      Src: /src/dovecot/src/imap/cmd-fetch.c:125,1
    - Dst: imap_fetch_init_nofail_handler
      Src: /src/dovecot/src/imap/cmd-fetch.c:126,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-fetch.c:129,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/cmd-fetch.c:130,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:131,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:138,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 6
    argNames:
    - ctx
    - cmd
    - search_args
    - name
    - args
    - send_vanished
    argTypes:
    - struct imap_fetch_context*
    - struct client_command_context*
    - struct mail_search_args*
    - char*
    - struct imap_arg**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 140
    functionName: fetch_parse_modifier
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imap_arg_get_atom
    - client_has_enabled
    - imap_search_add_changed_since
    - imap_fetch_init_nofail_handler
    - client_send_command_error
    - str_to_uint64
    linkageType: ''
    returnType: bool
    signature: "bool fetch_parse_modifier(struct imap_fetch_context *ctx,\n\t\t     struct
      client_command_context *cmd,\n\t\t     struct mail_search_args *search_args,\n\t\t
      \    const char *name, const struct imap_arg **args,\n\t\t     bool *send_vanished)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-fetch.c:152,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-fetch.c:153,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:154,1
    - Dst: fetch_parse_modifier
      Src: /src/dovecot/src/imap/cmd-fetch.c:159,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/imap/cmd-fetch.c:160,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:167,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 5
    argNames:
    - ctx
    - cmd
    - search_args
    - args
    - send_vanished_r
    argTypes:
    - struct imap_fetch_context*
    - struct client_command_context*
    - struct mail_search_args*
    - struct imap_arg*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 142
    functionDepth: 4
    functionLinenumber: 142
    functionLinenumberEnd: 172
    functionName: fetch_parse_modifiers
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - fetch_parse_modifier
    - client_send_command_error
    - imap_arg_get_atom
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool fetch_parse_modifiers(struct imap_fetch_context *ctx,\n\t\t      struct
      client_command_context *cmd,\n\t\t      struct mail_search_args *search_args,\n\t\t
      \     const struct imap_arg *args, bool *send_vanished_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: cmd_fetch_finished
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool cmd_fetch_finished(struct client_command_context *cmd ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-fetch.c:181,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-fetch.c:182,1
    - Dst: seq_range_array_have_common
      Src: /src/dovecot/src/imap/cmd-fetch.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 187
    functionName: imap_fetch_is_failed_retry
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - seq_range_array_have_common
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool imap_fetch_is_failed_retry(struct imap_fetch_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-fetch.c:191,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/cmd-fetch.c:193,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-fetch.c:194,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/cmd-fetch.c:195,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/imap/cmd-fetch.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 199
    functionName: imap_fetch_add_failed_uids
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    - p_array_init
    - seq_range_array_merge
    linkageType: ''
    returnType: void
    signature: void imap_fetch_add_failed_uids(struct imap_fetch_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_end
      Src: /src/dovecot/src/imap/cmd-fetch.c:214,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/cmd-fetch.c:226,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:231,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-fetch.c:238,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-fetch.c:242,1
    - Dst: imap_fetch_is_failed_retry
      Src: /src/dovecot/src/imap/cmd-fetch.c:245,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:251,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-fetch.c:252,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-fetch.c:252,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap/cmd-fetch.c:254,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/cmd-fetch.c:254,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/cmd-fetch.c:256,1
    - Dst: imap_fetch_add_failed_uids
      Src: /src/dovecot/src/imap/cmd-fetch.c:262,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-fetch.c:263,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/cmd-fetch.c:267,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-fetch.c:269,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - cmd
    argTypes:
    - struct imap_fetch_context*
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 273
    functionName: cmd_fetch_finish
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_add_failed_uids
    - mailbox_get_last_error
    - imap_fetch_is_failed_retry
    - imap_fetch_end
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - client_disconnect
    - client_send_line
    - t_strconcat
    - cmd_sync
    - imap_fetch_free
    linkageType: ''
    returnType: bool
    signature: "bool cmd_fetch_finish(struct imap_fetch_context *ctx,\n\t\t\t     struct
      client_command_context *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_more
      Src: /src/dovecot/src/imap/cmd-fetch.c:279,1
    - Dst: cmd_fetch_finish
      Src: /src/dovecot/src/imap/cmd-fetch.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 275
    functionDepth: 5
    functionLinenumber: 275
    functionLinenumberEnd: 284
    functionName: cmd_fetch_continue
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_more
    - cmd_fetch_finish
    linkageType: ''
    returnType: bool
    signature: bool cmd_fetch_continue(struct client_command_context *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_strlist_append
      Src: /src/dovecot/src/imap/cmd-fetch.c:292,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/imap/cmd-fetch.c:297,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/cmd-fetch.c:306,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/imap/cmd-fetch.c:309,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/cmd-fetch.c:312,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/imap/cmd-fetch.c:315,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/imap/cmd-fetch.c:318,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/imap/cmd-fetch.c:321,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - cmd
    - ctx
    argTypes:
    - struct client_command_context*
    - struct imap_fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 324
    functionName: cmd_fetch_set_reason_codes
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - event_strlist_append
    - HAS_ANY_BITS
    linkageType: ''
    returnType: void
    signature: "void cmd_fetch_set_reason_codes(struct client_command_context *cmd,\n\t\t\t\t
      \      struct imap_fetch_context *ctx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-fetch.c:337,1
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-fetch.c:340,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-fetch.c:344,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-fetch.c:346,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-fetch.c:347,1
    - Dst: imap_search_get_anyset
      Src: /src/dovecot/src/imap/cmd-fetch.c:353,1
    - Dst: imap_fetch_alloc
      Src: /src/dovecot/src/imap/cmd-fetch.c:357,1
    - Dst: imap_client_command_get_reason
      Src: /src/dovecot/src/imap/cmd-fetch.c:358,1
    - Dst: fetch_parse_args
      Src: /src/dovecot/src/imap/cmd-fetch.c:360,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-fetch.c:361,1
    - Dst: fetch_parse_modifiers
      Src: /src/dovecot/src/imap/cmd-fetch.c:362,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/cmd-fetch.c:364,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-fetch.c:365,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-fetch.c:370,1
    - Dst: imap_fetch_send_vanished
      Src: /src/dovecot/src/imap/cmd-fetch.c:371,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-fetch.c:373,1
    - Dst: cmd_fetch_finish
      Src: /src/dovecot/src/imap/cmd-fetch.c:374,1
    - Dst: cmd_fetch_set_reason_codes
      Src: /src/dovecot/src/imap/cmd-fetch.c:378,1
    - Dst: imap_fetch_begin
      Src: /src/dovecot/src/imap/cmd-fetch.c:379,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-fetch.c:380,1
    - Dst: imap_fetch_more
      Src: /src/dovecot/src/imap/cmd-fetch.c:382,1
    - Dst: cmd_fetch_finish
      Src: /src/dovecot/src/imap/cmd-fetch.c:390,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 326
    functionDepth: 5
    functionLinenumber: 326
    functionLinenumberEnd: 391
    functionName: cmd_fetch
    functionSourceFile: /src/dovecot/src/imap/cmd-fetch.c
    functionUses: 0
    functionsReached:
    - imap_fetch_begin
    - client_read_args
    - imap_fetch_send_vanished
    - client_verify_open_mailbox
    - fetch_parse_args
    - imap_search_get_anyset
    - imap_fetch_more
    - client_send_command_error
    - fetch_parse_modifiers
    - IMAP_ARG_IS_EOL
    - i_zero
    - imap_arg_get_list
    - imap_fetch_alloc
    - cmd_fetch_finish
    - imap_fetch_free
    - cmd_fetch_set_reason_codes
    - imap_client_command_get_reason
    - imap_arg_get_atom
    - mail_search_args_unref
    linkageType: ''
    returnType: bool
    signature: bool cmd_fetch(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write_full
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:31,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:32,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:33,1
    - Dst: read
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:35,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:36,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:40,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:45,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - fd
    - path
    - error_r
    argTypes:
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 48
    functionName: imap_hibernate_handshake
    functionSourceFile: /src/dovecot/src/imap/imap-client-hibernate.c
    functionUses: 0
    functionsReached:
    - write_full
    - strlen
    - t_strdup_printf
    - read
    - version_string_verify
    linkageType: ''
    returnType: int
    signature: int imap_hibernate_handshake(int fd, const char *path, const char **error_r)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:59,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:60,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:61,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:62,1
    - Dst: fstat
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:64,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:65,1
    - Dst: major
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:66,1
    - Dst: minor
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:67,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:71,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:72,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:74,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:75,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:78,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:78,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:80,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:82,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:82,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:84,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:86,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:88,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:93,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:94,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:96,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:97,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:97,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:100,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:100,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:102,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:102,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:104,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:105,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:105,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:108,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:109,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:111,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:112,1
    - Dst: client_stats
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:112,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:114,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:115,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:117,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:118,1
    - Dst: base64_encode
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:119,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:122,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:138,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:141,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 55
    argCount: 4
    argNames:
    - client
    - cmd
    - state
    - fd_notify
    argTypes:
    - struct client*
    - string_t*
    - buffer_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 142
    functionName: imap_hibernate_write_cmd
    functionSourceFile: /src/dovecot/src/imap/imap-client-hibernate.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - str_printfa
    - t_str_new
    - str_append_c
    - client_stats
    - i_stream_get_absolute_offset
    - strcasecmp
    - base64_encode
    - str_append_tabescaped
    - fstat
    - net_ip2addr
    - mailbox_get_vname
    - str_append
    - minor
    - major
    linkageType: ''
    returnType: void
    signature: "void imap_hibernate_write_cmd(struct client *client, string_t *cmd,\n\t\t\t\t
      \    const buffer_t *state, int fd_notify)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:151,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:152,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:152,1
    - Dst: imap_hibernate_handshake
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:154,1
    - Dst: fd_send
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:156,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:156,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:157,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:160,1
    - Dst: write_full
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:161,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:161,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:161,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - fd_socket
    - path
    - cmd
    - fd_client
    - error_r
    argTypes:
    - int
    - char*
    - string_t*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 166
    functionName: imap_hibernate_process_send_cmd
    functionSourceFile: /src/dovecot/src/imap/imap-client-hibernate.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - write_full
    - t_strdup_printf
    - imap_hibernate_handshake
    - fd_send
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int imap_hibernate_process_send_cmd(int fd_socket, const char *path,\n\t\t\t\tconst
      string_t *cmd, int fd_client,\n\t\t\t\tconst char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:174,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:175,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:178,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - fd
    - path
    - error_r
    argTypes:
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 188
    functionName: imap_hibernate_process_read
    functionSourceFile: /src/dovecot/src/imap/imap-client-hibernate.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - read
    linkageType: ''
    returnType: int
    signature: int imap_hibernate_process_read(int fd, const char *path, const char
      **error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:194,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:199,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:203,1
    - Dst: net_connect_unix_with_retries
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:205,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:207,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:211,1
    - Dst: imap_hibernate_write_cmd
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:213,1
    - Dst: alarm
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:215,1
    - Dst: imap_hibernate_process_send_cmd
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:216,1
    - Dst: imap_hibernate_process_read
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:217,1
    - Dst: fd_send
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:220,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:221,1
    - Dst: imap_hibernate_process_read
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:223,1
    - Dst: alarm
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:225,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:227,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - client
    - state
    - fd_notify
    - fd_r
    - error_r
    argTypes:
    - struct client*
    - buffer_t*
    - int
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 190
    functionDepth: 3
    functionLinenumber: 190
    functionLinenumberEnd: 232
    functionName: imap_hibernate_process_send
    functionSourceFile: /src/dovecot/src/imap/imap-client-hibernate.c
    functionUses: 0
    functionsReached:
    - net_disconnect
    - t_str_new
    - imap_hibernate_process_read
    - net_connect_unix_with_retries
    - alarm
    - t_strdup_printf
    - fd_send
    - imap_hibernate_write_cmd
    - imap_hibernate_process_send_cmd
    - net_set_nonblock
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int imap_hibernate_process_send(struct client *client, const buffer_t
      *state,\n\t\t\t    int fd_notify, int *fd_r, const char **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:251,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:258,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:261,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:261,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:263,1
    - Dst: imap_state_export_internal
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:264,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:266,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:267,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:267,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:270,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:273,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:274,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:274,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:277,1
    - Dst: mailbox_watch_extract_notify_fd
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:281,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:284,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:285,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:285,1
    - Dst: imap_hibernate_process_send
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:293,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:295,1
    - Dst: e_error
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:296,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:296,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:302,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:306,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:306,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:309,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:312,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:320,1
    - Dst: buffer_free
      Src: /src/dovecot/src/imap/imap-client-hibernate.c:321,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 55
    argCount: 2
    argNames:
    - _client
    - reason_r
    argTypes:
    - struct client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 327
    functionName: imap_client_hibernate
    functionSourceFile: /src/dovecot/src/imap/imap-client-hibernate.c
    functionUses: 2
    functionsReached:
    - mailbox_watch_extract_notify_fd
    - net_disconnect
    - e_debug
    - i_close_fd
    - buffer_create_dynamic
    - client_destroy
    - imap_state_export_internal
    - e_error
    - imap_hibernate_process_send
    - struct event_passthrough*::event
    - event_create_passthrough
    - o_stream_get_buffer_used_size
    - mailbox_get_vname
    - buffer_free
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: bool
    signature: bool imap_client_hibernate(struct client **_client, const char **reason_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: DEF
    functionSourceFile: /src/dovecot/src/imap/imap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/imap/imap-settings.c:221,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-settings.c:225,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-settings.c:231,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct imap_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 238
    functionName: imap_settings_parse_workarounds
    functionSourceFile: /src/dovecot/src/imap/imap-settings.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int imap_settings_parse_workarounds(struct imap_settings *set,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imap_settings_parse_workarounds
      Src: /src/dovecot/src/imap/imap-settings.c:259,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-settings.c:262,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-settings.c:264,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-settings.c:266,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-settings.c:269,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 274
    functionName: imap_settings_verify
    functionSourceFile: /src/dovecot/src/imap/imap-settings.c
    functionUses: 0
    functionsReached:
    - imap_settings_parse_workarounds
    - t_strdup_printf
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool imap_settings_verify(void *_set, pool_t pool ATTR_UNUSED, const
      char **error_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search-args.c:23,1
    - Dst: search_args_have_searchres
      Src: /src/dovecot/src/imap/imap-search-args.c:28,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - sargs
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 36
    functionName: search_args_have_searchres
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 1
    functionsReached:
    - strcmp
    - search_args_have_searchres
    linkageType: ''
    returnType: bool
    signature: bool search_args_have_searchres(struct mail_search_arg *sargs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-search-args.c:40,1
    - Dst: array_clear
      Src: /src/dovecot/src/imap/imap-search-args.c:41,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-search-args.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: imap_search_saved_uidset_clear
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - array_clear
    linkageType: ''
    returnType: void
    signature: void imap_search_saved_uidset_clear(struct client_command_context *cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/imap-search-args.c:56,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search-args.c:57,1
    - Dst: mail_search_parser_init_imap
      Src: /src/dovecot/src/imap/imap-search-args.c:61,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-search-args.c:64,1
    - Dst: mail_search_register_get_imap4rev2
      Src: /src/dovecot/src/imap/imap-search-args.c:66,1
    - Dst: mail_search_register_get_imap4rev1
      Src: /src/dovecot/src/imap/imap-search-args.c:68,1
    - Dst: mail_search_build
      Src: /src/dovecot/src/imap/imap-search-args.c:70,1
    - Dst: mail_search_parser_deinit
      Src: /src/dovecot/src/imap/imap-search-args.c:71,1
    - Dst: imap_search_saved_uidset_clear
      Src: /src/dovecot/src/imap/imap-search-args.c:75,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-search-args.c:76,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap/imap-search-args.c:76,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search-args.c:79,1
    - Dst: search_args_have_searchres
      Src: /src/dovecot/src/imap/imap-search-args.c:84,1
    - Dst: client_handle_search_save_ambiguity
      Src: /src/dovecot/src/imap/imap-search-args.c:85,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/imap/imap-search-args.c:89,1
    - Dst: imap_search_saved_uidset_clear
      Src: /src/dovecot/src/imap/imap-search-args.c:94,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - cmd
    - args
    - charset
    - search_args_r
    argTypes:
    - struct client_command_context*
    - struct imap_arg*
    - char*
    - struct mail_search_args**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 46
    functionDepth: 3
    functionLinenumber: 46
    functionLinenumberEnd: 98
    functionName: imap_search_args_build
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 2
    functionsReached:
    - mail_search_parser_deinit
    - t_strconcat
    - mail_search_args_init
    - client_send_tagline
    - client_send_command_error
    - imap_search_saved_uidset_clear
    - mail_search_parser_init_imap
    - client_enabled_mailbox_features
    - mail_search_build
    - mail_search_register_get_imap4rev2
    - mail_search_register_get_imap4rev1
    - client_handle_search_save_ambiguity
    - search_args_have_searchres
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: int
    signature: "int imap_search_args_build(struct client_command_context *cmd,\n\t\t\t
      \  const struct imap_arg *args, const char *charset,\n\t\t\t   struct mail_search_args
      **search_args_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-search-args.c:134,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-search-args.c:135,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-search-args.c:137,1
    - Dst: imap_seq_set_parse
      Src: /src/dovecot/src/imap/imap-search-args.c:138,1
    - Dst: msgset_is_valid
      Src: /src/dovecot/src/imap/imap-search-args.c:139,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-search-args.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - cmd
    - messageset
    - args_r
    - error_r
    argTypes:
    - struct client_command_context*
    - char*
    - struct mail_search_args**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 147
    functionName: imap_search_get_msgset_arg
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 0
    functionsReached:
    - p_new
    - p_array_init
    - imap_seq_set_parse
    - mail_search_build_init
    - mail_search_args_unref
    - msgset_is_valid
    linkageType: ''
    returnType: int
    signature: "int imap_search_get_msgset_arg(struct client_command_context *cmd,\n\t\t\t\t
      \     const char *messageset,\n\t\t\t\t      struct mail_search_args **args_r,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-search-args.c:155,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-search-args.c:156,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-search-args.c:158,1
    - Dst: imap_seq_set_parse
      Src: /src/dovecot/src/imap/imap-search-args.c:159,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-search-args.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - uidset
    - args_r
    - error_r
    argTypes:
    - char*
    - struct mail_search_args**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 167
    functionName: imap_search_get_uidset_arg
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 0
    functionsReached:
    - p_new
    - p_array_init
    - imap_seq_set_parse
    - mail_search_build_init
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: "int imap_search_get_uidset_arg(const char *uidset, struct mail_search_args
      **args_r,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_search_get_anyset
      Src: /src/dovecot/src/imap/imap-search-args.c:175,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/imap/imap-search-args.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - cmd
    - set
    - uid
    - search_args_r
    argTypes:
    - struct client_command_context*
    - char*
    - bool
    - struct mail_search_args**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 182
    functionName: imap_search_get_seqset
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 2
    functionsReached:
    - mail_search_args_init
    - imap_search_get_anyset
    linkageType: ''
    returnType: int
    signature: "int imap_search_get_seqset(struct client_command_context *cmd,\n\t\t\t
      \  const char *set, bool uid,\n\t\t\t   struct mail_search_args **search_args_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-search-args.c:189,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-search-args.c:194,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-search-args.c:195,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/imap-search-args.c:198,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-search-args.c:201,1
    - Dst: mailbox_get_uid_range
      Src: /src/dovecot/src/imap/imap-search-args.c:202,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-search-args.c:209,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct client_command_context*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 211
    functionName: imap_search_anyset_to_uidset
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add_range
    - p_array_init
    - i_unreached
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    - mailbox_get_uid_range
    linkageType: ''
    returnType: void
    signature: "void imap_search_anyset_to_uidset(struct client_command_context *cmd,\n\t\t\t\t
      \ struct mail_search_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_handle_search_save_ambiguity
      Src: /src/dovecot/src/imap/imap-search-args.c:218,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-search-args.c:221,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-search-args.c:222,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-search-args.c:223,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-search-args.c:225,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-search-args.c:227,1
    - Dst: array_append_array
      Src: /src/dovecot/src/imap/imap-search-args.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - cmd
    - search_args_r
    argTypes:
    - struct client_command_context*
    - struct mail_search_args**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 237
    functionName: imap_search_get_searchres
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 0
    functionsReached:
    - array_append_array
    - p_new
    - p_array_init
    - array_count
    - mail_search_build_init
    - array_is_created
    - client_handle_search_save_ambiguity
    linkageType: ''
    returnType: int
    signature: "int imap_search_get_searchres(struct client_command_context *cmd,\n\t\t\t\t
      \    struct mail_search_args **search_args_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap/imap-search-args.c:246,1
    - Dst: imap_search_get_searchres
      Src: /src/dovecot/src/imap/imap-search-args.c:249,1
    - Dst: imap_search_get_msgset_arg
      Src: /src/dovecot/src/imap/imap-search-args.c:252,1
    - Dst: imap_search_get_uidset_arg
      Src: /src/dovecot/src/imap/imap-search-args.c:255,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/imap-search-args.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - cmd
    - set
    - uid
    - search_args_r
    argTypes:
    - struct client_command_context*
    - char*
    - bool
    - struct mail_search_args**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 263
    functionName: imap_search_get_anyset
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 2
    functionsReached:
    - strcmp
    - imap_search_get_uidset_arg
    - imap_search_get_searchres
    - client_send_command_error
    - imap_search_get_msgset_arg
    linkageType: ''
    returnType: int
    signature: "int imap_search_get_anyset(struct client_command_context *cmd,\n\t\t\t
      \  const char *set, bool uid,\n\t\t\t   struct mail_search_args **search_args_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-search-args.c:270,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-search-args.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - search_args
    - modseq
    argTypes:
    - struct mail_search_args*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 278
    functionName: imap_search_add_changed_since
    functionSourceFile: /src/dovecot/src/imap/imap-search-args.c
    functionUses: 2
    functionsReached:
    - p_new
    linkageType: ''
    returnType: void
    signature: "void imap_search_add_changed_since(struct mail_search_args *search_args,\n\t\t\t\t
      \  uint64_t modseq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-state.c:50,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:51,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:54,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:56,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:58,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - dest
    - range
    argTypes:
    - buffer_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 63
    functionName: export_seq_range
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    - numpack_encode
    linkageType: ''
    returnType: void
    signature: void export_seq_range(buffer_t *dest, const ARRAY_TYPE(seq_range) *range)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:71,1
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:76,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/imap/imap-state.c:81,1
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:83,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-state.c:86,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - data
    - end
    - range
    argTypes:
    - unsigned char**
    - unsigned char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 91
    functionName: import_seq_range
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - seq_range_array_add_range
    - numpack_decode32
    linkageType: ''
    returnType: int
    signature: "int import_seq_range(const unsigned char **data, const unsigned char
      *end,\n\t\t ARRAY_TYPE(seq_range) *range)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/imap-state.c:102,1
    - Dst: struct client*::v::state_export
      Src: /src/dovecot/src/imap/imap-state.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - client
    - dest
    - error_r
    argTypes:
    - struct client*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 110
    functionName: imap_state_export_internal
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    - struct client*::v::state_export
    linkageType: ''
    returnType: int
    signature: "int imap_state_export_internal(struct client *client, buffer_t *dest,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::state_import
      Src: /src/dovecot/src/imap/imap-state.c:119,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - client
    - internal
    - data
    - size
    - error_r
    argTypes:
    - struct client*
    - bool
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 130
    functionName: imap_state_import
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - struct client*::v::state_import
    - i_assert
    linkageType: ''
    returnType: enum imap_state_result
    signature: "enum imap_state_result imap_state_import(struct client *client, bool
      internal,\n\t\t  const unsigned char *data, size_t size, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_state_import
      Src: /src/dovecot/src/imap/imap-state.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - client
    - data
    - size
    - error_r
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: imap_state_import_internal
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 1
    functionsReached:
    - imap_state_import
    linkageType: ''
    returnType: enum imap_state_result
    signature: "enum imap_state_result imap_state_import_internal(struct client *client,\n\t\t\t
      \  const unsigned char *data, size_t size,\n\t\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_state_import
      Src: /src/dovecot/src/imap/imap-state.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - client
    - data
    - size
    - error_r
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: imap_state_import_external
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - imap_state_import
    linkageType: ''
    returnType: enum imap_state_result
    signature: "enum imap_state_result imap_state_import_external(struct client *client,\n\t\t\t
      \  const unsigned char *data, size_t size,\n\t\t\t   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/imap-state.c:156,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-state.c:160,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/imap/imap-state.c:161,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/imap-state.c:163,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/imap-state.c:165,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-state.c:166,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-state.c:168,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/imap-state.c:169,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/imap/imap-state.c:170,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/imap/imap-state.c:171,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/imap/imap-state.c:172,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/imap-state.c:174,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/imap/imap-state.c:175,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/imap-state.c:178,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:180,1
    - Dst: export_seq_range
      Src: /src/dovecot/src/imap/imap-state.c:181,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - dest
    - box
    - error_r
    argTypes:
    - buffer_t*
    - struct mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 183
    functionName: imap_state_export_mailbox_mails
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - mail_search_build_add_all
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - export_seq_range
    - mail_get_flags
    - t_array_init
    - mail_search_build_init
    - ARRAY_TYPE
    - mailbox_search_init
    - mailbox_search_deinit
    - mailbox_transaction_commit
    - mailbox_search_next
    - mail_search_args_unref
    - crc32_data_more
    - numpack_encode
    linkageType: ''
    returnType: int
    signature: "int imap_state_export_mailbox_mails(buffer_t *dest, struct mailbox
      *box,\n\t\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/imap/imap-state.c:191,1
    - Dst: crc32_str
      Src: /src/dovecot/src/imap/imap-state.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 194
    functionName: mailbox_status_keywords_crc32
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - crc32_str
    - array_foreach_elem
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mailbox_status_keywords_crc32(const struct mailbox_status
      *status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/imap-state.c:202,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/imap-state.c:205,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/imap/imap-state.c:214,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/imap/imap-state.c:215,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap/imap-state.c:220,1
    - Dst: buffer_append
      Src: /src/dovecot/src/imap/imap-state.c:221,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-state.c:221,1
    - Dst: buffer_append
      Src: /src/dovecot/src/imap/imap-state.c:222,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap/imap-state.c:224,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:225,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:226,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:227,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-state.c:228,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:230,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:232,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:236,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-state.c:236,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/imap/imap-state.c:237,1
    - Dst: mailbox_status_keywords_crc32
      Src: /src/dovecot/src/imap/imap-state.c:237,1
    - Dst: imap_state_export_mailbox_mails
      Src: /src/dovecot/src/imap/imap-state.c:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - dest
    - client
    - box
    - error_r
    argTypes:
    - buffer_t*
    - struct client*
    - struct mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 196
    functionDepth: 3
    functionLinenumber: 196
    functionLinenumberEnd: 243
    functionName: imap_state_export_mailbox
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - client_has_enabled
    - mailbox_get_last_internal_error
    - strlen
    - mailbox_status_keywords_crc32
    - imap_state_export_mailbox_mails
    - array_count
    - mailbox_get_open_status
    - mailbox_get_vname
    - buffer_append_c
    - mailbox_get_metadata
    - numpack_encode
    linkageType: ''
    returnType: int
    signature: "int imap_state_export_mailbox(buffer_t *dest, struct client *client,\n\t\t\t
      \ struct mailbox *box, const char **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-state.c:250,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-state.c:251,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-state.c:252,1
    - Dst: imap_state_export_mailbox
      Src: /src/dovecot/src/imap/imap-state.c:271,1
    - Dst: client_enabled_features
      Src: /src/dovecot/src/imap/imap-state.c:278,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap/imap-state.c:281,1
    - Dst: buffer_append
      Src: /src/dovecot/src/imap/imap-state.c:282,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-state.c:282,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap/imap-state.c:287,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap/imap-state.c:289,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-state.c:293,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-state.c:294,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap/imap-state.c:295,1
    - Dst: export_seq_range
      Src: /src/dovecot/src/imap/imap-state.c:296,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap/imap-state.c:300,1
    - Dst: buffer_append
      Src: /src/dovecot/src/imap/imap-state.c:301,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/imap-state.c:302,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 4
    argNames:
    - client
    - internal
    - dest
    - error_r
    argTypes:
    - struct client*
    - bool
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 305
    functionName: imap_state_export_base
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - strlen
    - array_count
    - client_enabled_features
    - buffer_append_c
    - str_append
    - export_seq_range
    - array_is_created
    - imap_state_export_mailbox
    linkageType: ''
    returnType: int
    signature: "int imap_state_export_base(struct client *client, bool internal,\n\t\t\t
      \  buffer_t *dest, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/imap/imap-state.c:313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - data
    - end
    - str_r
    argTypes:
    - unsigned char**
    - unsigned char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 319
    functionName: import_string
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: int
    signature: "int import_string(const unsigned char **data, const unsigned char
      *end,\n\t      const char **str_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/imap-state.c:332,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-state.c:353,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-state.c:354,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-state.c:355,1
    - Dst: mailbox_get_expunged_uids
      Src: /src/dovecot/src/imap/imap-state.c:356,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:358,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/imap/imap-state.c:364,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-state.c:366,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/imap/imap-state.c:367,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/imap-state.c:369,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/imap-state.c:371,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-state.c:372,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-state.c:375,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-state.c:375,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/imap-state.c:376,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/imap/imap-state.c:377,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-state.c:380,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/imap/imap-state.c:381,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/imap/imap-state.c:386,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/imap/imap-state.c:390,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/imap-state.c:393,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/imap/imap-state.c:394,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/imap-state.c:398,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/imap/imap-state.c:399,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:402,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/imap-state.c:407,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-state.c:411,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:413,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:420,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-state.c:425,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-state.c:426,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-state.c:428,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-state.c:429,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-state.c:430,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-state.c:430,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/imap-state.c:433,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-state.c:434,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/imap-state.c:435,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-state.c:436,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-state.c:437,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-state.c:437,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-state.c:437,1
    - Dst: str_free
      Src: /src/dovecot/src/imap/imap-state.c:438,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 83
    argCount: 4
    argNames:
    - client
    - state
    - expunge_count_r
    - error_r
    argTypes:
    - struct client*
    - struct mailbox_import_state*
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 442
    functionName: import_send_expunges
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - mail_search_build_add_all
    - seq_range_array_add_range
    - str_printfa
    - str_c
    - mailbox_get_last_internal_error
    - seq_range_array_iter_init
    - str_len
    - t_strdup_printf
    - array_count
    - imap_write_seq_range
    - t_str_new
    - mailbox_transaction_begin
    - client_send_line
    - o_stream_nsend
    - mailbox_search_deinit
    - crc32_data_more
    - str_new
    - str_free
    - client_has_enabled
    - str_data
    - array_get
    - mail_search_build_init
    - mailbox_transaction_commit
    - mailbox_search_init
    - array_push_back
    - mailbox_get_expunged_uids
    - t_array_init
    - str_truncate
    - ARRAY_TYPE
    - str_append
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: "int import_send_expunges(struct client *client,\n\t\t     const struct
      mailbox_import_state *state,\n\t\t     unsigned int *expunge_count_r,\n\t\t
      \    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-state.c:449,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/imap-state.c:452,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-state.c:460,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-state.c:461,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-state.c:463,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-state.c:464,1
    - Dst: imap_search_add_changed_since
      Src: /src/dovecot/src/imap/imap-state.c:467,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap/imap-state.c:469,1
    - Dst: imap_fetch_alloc
      Src: /src/dovecot/src/imap/imap-state.c:470,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/imap-state.c:471,1
    - Dst: imap_fetch_init_nofail_handler
      Src: /src/dovecot/src/imap/imap-state.c:473,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-state.c:474,1
    - Dst: imap_fetch_init_nofail_handler
      Src: /src/dovecot/src/imap/imap-state.c:475,1
    - Dst: imap_fetch_init_nofail_handler
      Src: /src/dovecot/src/imap/imap-state.c:476,1
    - Dst: imap_fetch_begin
      Src: /src/dovecot/src/imap/imap-state.c:479,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-state.c:480,1
    - Dst: imap_fetch_more_no_lock_update
      Src: /src/dovecot/src/imap/imap-state.c:483,1
    - Dst: imap_fetch_end
      Src: /src/dovecot/src/imap/imap-state.c:485,1
    - Dst: imap_fetch_free
      Src: /src/dovecot/src/imap/imap-state.c:487,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - client
    - state
    - flag_change_count_r
    argTypes:
    - struct client*
    - struct mailbox_import_state*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 444
    functionDepth: 5
    functionLinenumber: 444
    functionLinenumberEnd: 489
    functionName: import_send_flag_changes
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - seq_range_array_add_range
    - client_has_enabled
    - p_new
    - imap_search_add_changed_since
    - imap_fetch_begin
    - imap_fetch_more_no_lock_update
    - imap_fetch_alloc
    - imap_fetch_init_nofail_handler
    - imap_fetch_end
    - pool_unref
    - t_array_init
    - mail_search_build_init
    - ARRAY_TYPE
    - mail_search_args_unref
    - imap_fetch_free
    linkageType: ''
    returnType: int
    signature: "int import_send_flag_changes(struct client *client,\n\t\t\t const
      struct mailbox_import_state *state,\n\t\t\t unsigned int *flag_change_count_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap/imap-state.c:498,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-state.c:499,1
    - Dst: import_string
      Src: /src/dovecot/src/imap/imap-state.c:502,1
    - Dst: memcpy
      Src: /src/dovecot/src/imap/imap-state.c:512,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/imap/imap-state.c:515,1
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:529,1
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:530,1
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:531,1
    - Dst: numpack_decode
      Src: /src/dovecot/src/imap/imap-state.c:532,1
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:533,1
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:534,1
    - Dst: numpack_decode32
      Src: /src/dovecot/src/imap/imap-state.c:535,1
    - Dst: import_seq_range
      Src: /src/dovecot/src/imap/imap-state.c:536,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 4
    argNames:
    - data
    - size
    - state_r
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - struct mailbox_import_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 491
    functionDepth: 2
    functionLinenumber: 491
    functionLinenumberEnd: 549
    functionName: import_state_mailbox_struct
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - import_seq_range
    - import_string
    - numpack_decode32
    - t_array_init
    - guid_128_is_empty
    - numpack_decode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t import_state_mailbox_struct(const unsigned char *data, size_t
      size,\n\t\t\t    struct mailbox_import_state *state_r,\n\t\t\t    const char
      **error_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/imap/imap-state.c:566,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/imap-state.c:576,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/imap/imap-state.c:577,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/imap/imap-state.c:579,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:580,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-state.c:582,1
    - Dst: client_disconnect_with_error
      Src: /src/dovecot/src/imap/imap-state.c:583,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-state.c:585,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-state.c:589,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/imap/imap-state.c:593,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-state.c:593,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/imap/imap-state.c:594,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:595,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/imap/imap-state.c:596,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-state.c:597,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/imap/imap-state.c:601,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/imap/imap-state.c:602,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-state.c:603,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/imap/imap-state.c:606,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:607,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/imap/imap-state.c:608,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/imap/imap-state.c:609,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-state.c:610,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/imap-state.c:613,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:617,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-state.c:619,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:623,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-state.c:625,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:629,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/imap-state.c:632,1
    - Dst: import_send_expunges
      Src: /src/dovecot/src/imap/imap-state.c:642,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:644,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:646,1
    - Dst: client_update_mailbox_flags
      Src: /src/dovecot/src/imap/imap-state.c:652,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap/imap-state.c:653,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/imap/imap-state.c:657,1
    - Dst: mailbox_recent_flags_set_uid_forced
      Src: /src/dovecot/src/imap/imap-state.c:658,1
    - Dst: mailbox_recent_flags_count
      Src: /src/dovecot/src/imap/imap-state.c:661,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-state.c:667,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:668,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-state.c:669,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-state.c:670,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:671,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-state.c:674,1
    - Dst: mailbox_status_keywords_crc32
      Src: /src/dovecot/src/imap/imap-state.c:675,1
    - Dst: client_send_mailbox_flags
      Src: /src/dovecot/src/imap/imap-state.c:679,1
    - Dst: import_send_flag_changes
      Src: /src/dovecot/src/imap/imap-state.c:681,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-state.c:685,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-state.c:688,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:688,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/imap-state.c:693,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 94
    argCount: 3
    argNames:
    - client
    - state
    - error_r
    argTypes:
    - struct client*
    - struct mailbox_import_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 551
    functionDepth: 6
    functionLinenumber: 551
    functionLinenumberEnd: 698
    functionName: import_state_mailbox_open
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - mailbox_enable
    - mailbox_get_last_internal_error
    - mail_index_lookup_seq
    - t_strdup_printf
    - mailbox_status_keywords_crc32
    - array_count
    - mailbox_alloc
    - import_send_expunges
    - mailbox_recent_flags_set_uid_forced
    - mailbox_free
    - import_send_flag_changes
    - mailbox_sync
    - client_send_line
    - client_enabled_mailbox_features
    - mailbox_recent_flags_count
    - client_has_enabled
    - guid_128_to_string
    - client_disconnect_with_error
    - i_assert
    - mailbox_get_metadata
    - client_send_mailbox_flags
    - mailbox_open
    - mail_namespace_find
    - e_debug
    - guid_128_equals
    - client_update_mailbox_flags
    - array_foreach
    - mailbox_get_open_status
    linkageType: ''
    returnType: enum imap_state_result
    signature: "enum imap_state_result import_state_mailbox_open(struct client *client,\n\t\t\t
      \ const struct mailbox_import_state *state,\n\t\t\t  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: import_state_mailbox_struct
      Src: /src/dovecot/src/imap/imap-state.c:712,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:714,1
    - Dst: import_state_mailbox_open
      Src: /src/dovecot/src/imap/imap-state.c:717,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:718,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - client
    - data
    - size
    - error_r
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 700
    functionDepth: 7
    functionLinenumber: 700
    functionLinenumberEnd: 722
    functionName: import_state_mailbox
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - import_state_mailbox_struct
    - i_assert
    - t_strdup_printf
    - import_state_mailbox_open
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t import_state_mailbox(struct client *client, const unsigned
      char *data,\n\t\t     size_t size, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: import_string
      Src: /src/dovecot/src/imap/imap-state.c:731,1
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/imap/imap-state.c:735,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:736,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - client
    - data
    - size
    - error_r
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 724
    functionDepth: 1
    functionLinenumber: 724
    functionLinenumberEnd: 740
    functionName: import_state_compress
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - compression_lookup_handler
    - import_string
    - t_strdup_printf
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t import_state_compress(struct client *client, const unsigned
      char *data,\n\t\t      size_t size, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: import_string
      Src: /src/dovecot/src/imap/imap-state.c:750,1
    - Dst: imap_feature_lookup
      Src: /src/dovecot/src/imap/imap-state.c:754,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:755,1
    - Dst: client_enable
      Src: /src/dovecot/src/imap/imap-state.c:758,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:759,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - client
    - data
    - size
    - error_r
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 742
    functionDepth: 3
    functionLinenumber: 742
    functionLinenumberEnd: 764
    functionName: import_state_enabled_feature
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - import_string
    - client_enable
    - t_strdup_printf
    - imap_feature_lookup
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t import_state_enabled_feature(struct client *client, const
      unsigned char *data,\n\t\t\t     size_t size, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-state.c:772,1
    - Dst: import_seq_range
      Src: /src/dovecot/src/imap/imap-state.c:773,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - client
    - data
    - size
    - error_r
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 766
    functionDepth: 2
    functionLinenumber: 766
    functionLinenumberEnd: 778
    functionName: import_state_searchres
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - import_seq_range
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t import_state_searchres(struct client *client, const unsigned
      char *data,\n\t\t       size_t size, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - client
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 780
    functionDepth: 0
    functionLinenumber: 780
    functionLinenumberEnd: 788
    functionName: import_state_id_logged
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t import_state_id_logged(struct client *client,\n\t\t       const
      unsigned char *data ATTR_UNUSED,\n\t\t       size_t size ATTR_UNUSED,\n\t\t
      \      const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - client
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 790
    functionDepth: 0
    functionLinenumber: 790
    functionLinenumberEnd: 798
    functionName: import_state_tls_compression
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t import_state_tls_compression(struct client *client,\n\t\t\t
      \    const unsigned char *data ATTR_UNUSED,\n\t\t\t     size_t size ATTR_UNUSED,\n\t\t\t
      \    const char **error_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_command_alloc
      Src: /src/dovecot/src/imap/imap-state.c:807,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-state.c:808,1
    - Dst: command_find
      Src: /src/dovecot/src/imap/imap-state.c:811,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:812,1
    - Dst: client_command_init_finished
      Src: /src/dovecot/src/imap/imap-state.c:815,1
    - Dst: command_exec
      Src: /src/dovecot/src/imap/imap-state.c:817,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-state.c:820,1
    - Dst: client_add_missing_io
      Src: /src/dovecot/src/imap/imap-state.c:821,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:823,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-state.c:828,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:828,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - client
    - tag
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 800
    functionDepth: 4
    functionLinenumber: 800
    functionLinenumberEnd: 832
    functionName: imap_state_import_idle_cmd_tag
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - command_find
    - t_strdup_printf
    - client_add_missing_io
    - client_send_line
    - client_command_free
    - client_command_init_finished
    - command_exec
    - i_assert
    - client_command_alloc
    linkageType: ''
    returnType: void
    signature: void imap_state_import_idle_cmd_tag(struct client *client, const char
      *tag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:862,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/imap/imap-state.c:864,1
    - Dst: import
      Src: /src/dovecot/src/imap/imap-state.c:866,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - client
    - data
    - size
    - skip_r
    - error_r
    - state_r
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - size_t*
    - char**
    - enum imap_state_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 878
    functionName: imap_state_try_import_public
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - import
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int imap_state_try_import_public(struct client *client, const unsigned
      char *data,\n\t\t\t     size_t size, size_t *skip_r, const char **error_r,\n\t\t\t
      \    enum imap_state_result *state_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:888,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/imap/imap-state.c:890,1
    - Dst: import
      Src: /src/dovecot/src/imap/imap-state.c:892,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - client
    - data
    - size
    - skip_r
    - error_r
    - state_r
    argTypes:
    - struct client*
    - unsigned char*
    - size_t
    - size_t*
    - char**
    - enum imap_state_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 904
    functionName: imap_state_try_import_internal
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - import
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int imap_state_try_import_internal(struct client *client, const unsigned
      char *data,\n\t\t\t       size_t size, size_t *skip_r, const char **error_r,\n\t\t\t
      \      enum imap_state_result *state_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:915,1
    - Dst: memcmp
      Src: /src/dovecot/src/imap/imap-state.c:919,1
    - Dst: memchr
      Src: /src/dovecot/src/imap/imap-state.c:920,1
    - Dst: I_MIN
      Src: /src/dovecot/src/imap/imap-state.c:922,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:923,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap/imap-state.c:924,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/imap/imap-state.c:924,1
    - Dst: imap_state_try_import_public
      Src: /src/dovecot/src/imap/imap-state.c:932,1
    - Dst: imap_state_try_import_internal
      Src: /src/dovecot/src/imap/imap-state.c:936,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-state.c:941,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:945,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-state.c:948,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 6
    argNames:
    - client
    - internal
    - data
    - size
    - skip_r
    - error_r
    argTypes:
    - struct client*
    - bool
    - unsigned char*
    - size_t
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 906
    functionDepth: 2
    functionLinenumber: 906
    functionLinenumberEnd: 953
    functionName: imap_state_import_base
    functionSourceFile: /src/dovecot/src/imap/imap-state.c
    functionUses: 0
    functionsReached:
    - imap_state_try_import_internal
    - I_MIN
    - t_strdup_printf
    - memchr
    - imap_state_try_import_public
    - str_sanitize
    - t_strdup_until
    - memcmp
    - i_assert
    linkageType: ''
    returnType: enum imap_state_result
    signature: "enum imap_state_result imap_state_import_base(struct client *client,
      bool internal,\n\t\t       const unsigned char *data, size_t size,\n\t\t       size_t
      *skip_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/imap-sync.c:19,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-sync.c:23,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-sync.c:23,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/imap/imap-sync.c:25,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:30,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-sync.c:32,1
    - Dst: array_clear
      Src: /src/dovecot/src/imap/imap-sync.c:35,1
    - Dst: array_append_array
      Src: /src/dovecot/src/imap/imap-sync.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - box
    - uids
    argTypes:
    - struct mailbox*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 38
    functionName: uids_to_seqs
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_get_seq_range
    - seq_range_array_add_range
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - i_assert
    - array_append_array
    linkageType: ''
    returnType: void
    signature: void uids_to_seqs(struct mailbox *box, ARRAY_TYPE(seq_range) *uids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/imap/imap-sync.c:25,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:30,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-sync.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 33
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 12
    functionsReached:
    - mailbox_get_seq_range
    - seq_range_array_add_range
    - i_assert
    linkageType: ''
    returnType: void
    signature: void array_foreach(uids, range)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_fetch_more_no_lock_update
      Src: /src/dovecot/src/imap/imap-sync.c:45,1
    - Dst: imap_fetch_end
      Src: /src/dovecot/src/imap/imap-sync.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct imap_search_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: search_update_fetch_more
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - imap_fetch_more_no_lock_update
    - imap_fetch_end
    linkageType: ''
    returnType: int
    signature: int search_update_fetch_more(const struct imap_search_update *update)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/imap-sync.c:59,1
    - Dst: search_update_fetch_more
      Src: /src/dovecot/src/imap/imap-sync.c:62,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:64,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-sync.c:66,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/imap/imap-sync.c:69,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/imap/imap-sync.c:70,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/imap-sync.c:71,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap/imap-sync.c:76,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-sync.c:77,1
    - Dst: mailbox_get_uid_range
      Src: /src/dovecot/src/imap/imap-sync.c:79,1
    - Dst: seq_range_array_intersect
      Src: /src/dovecot/src/imap/imap-sync.c:81,1
    - Dst: imap_fetch_begin
      Src: /src/dovecot/src/imap/imap-sync.c:83,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/imap-sync.c:84,1
    - Dst: search_update_fetch_more
      Src: /src/dovecot/src/imap/imap-sync.c:85,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - update
    argTypes:
    - struct imap_sync_context*
    - struct imap_search_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 53
    functionDepth: 6
    functionLinenumber: 53
    functionLinenumberEnd: 86
    functionName: imap_sync_send_fetch_to_search_update
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - imap_fetch_begin
    - seq_range_array_add_range
    - mail_search_build_add
    - p_array_init
    - seq_range_array_intersect
    - array_count
    - t_array_init
    - mail_search_build_init
    - ARRAY_TYPE
    - mail_search_args_unref
    - i_assert
    - mailbox_get_uid_range
    - search_update_fetch_more
    linkageType: ''
    returnType: int
    signature: "int imap_sync_send_fetch_to_search_update(struct imap_sync_context
      *ctx,\n\t\t\t\t      const struct imap_search_update *update)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_result_sync
      Src: /src/dovecot/src/imap/imap-sync.c:98,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-sync.c:101,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-sync.c:102,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:105,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-sync.c:105,1
    - Dst: imap_sync_send_fetch_to_search_update
      Src: /src/dovecot/src/imap/imap-sync.c:107,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-sync.c:115,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-sync.c:116,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/imap/imap-sync.c:117,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-sync.c:118,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-sync.c:120,1
    - Dst: uids_to_seqs
      Src: /src/dovecot/src/imap/imap-sync.c:123,1
    - Dst: uids_to_seqs
      Src: /src/dovecot/src/imap/imap-sync.c:124,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-sync.c:127,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:128,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/imap-sync.c:129,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-sync.c:130,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-sync.c:132,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:133,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/imap-sync.c:134,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-sync.c:135,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-sync.c:137,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-sync.c:138,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-sync.c:138,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-sync.c:138,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - update
    - removes_only
    argTypes:
    - struct imap_sync_context*
    - struct imap_search_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 88
    functionDepth: 7
    functionLinenumber: 88
    functionLinenumberEnd: 140
    functionName: imap_sync_send_search_update
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - imap_sync_send_fetch_to_search_update
    - imap_append_string
    - str_data
    - str_len
    - imap_write_seq_range
    - array_count
    - uids_to_seqs
    - o_stream_nsend
    - str_append
    - i_assert
    - mailbox_search_result_sync
    linkageType: ''
    returnType: int
    signature: "int imap_sync_send_search_update(struct imap_sync_context *ctx,\n\t\t\t
      \    const struct imap_search_update *update,\n\t\t\t     bool removes_only)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-sync.c:149,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-sync.c:152,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-sync.c:153,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-sync.c:154,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-sync.c:157,1
    - Dst: imap_sync_send_search_update
      Src: /src/dovecot/src/imap/imap-sync.c:160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - removes_only
    argTypes:
    - struct imap_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 142
    functionDepth: 8
    functionLinenumber: 142
    functionLinenumberEnd: 165
    functionName: imap_sync_send_search_updates
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_get
    - array_is_created
    - imap_sync_send_search_update
    linkageType: ''
    returnType: int
    signature: int imap_sync_send_search_updates(struct imap_sync_context *ctx, bool
      removes_only)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:177,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap/imap-sync.c:181,1
    - Dst: i_new
      Src: /src/dovecot/src/imap/imap-sync.c:184,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-sync.c:189,1
    - Dst: mail_user_drop_useless_namespaces
      Src: /src/dovecot/src/imap/imap-sync.c:193,1
    - Dst: mailbox_sync_init
      Src: /src/dovecot/src/imap/imap-sync.c:195,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/imap-sync.c:196,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/imap/imap-sync.c:197,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-sync.c:199,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-sync.c:201,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/imap-sync.c:202,1
    - Dst: client_send_mailbox_flags
      Src: /src/dovecot/src/imap/imap-sync.c:207,1
    - Dst: imap_sync_send_search_updates
      Src: /src/dovecot/src/imap/imap-sync.c:211,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/imap-sync.c:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 5
    argNames:
    - client
    - box
    - imap_flags
    - flags
    - utf8
    argTypes:
    - struct client*
    - struct mailbox*
    - enum imap_sync_flags
    - enum mailbox_sync_flags
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 170
    functionDepth: 9
    functionLinenumber: 170
    functionLinenumberEnd: 215
    functionName: imap_sync_init
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - mail_user_drop_useless_namespaces
    - client_has_enabled
    - mail_alloc
    - ENUM_NEGATE
    - mailbox_transaction_begin
    - i_unreached
    - imap_sync_send_search_updates
    - mailbox_sync_init
    - i_new
    - i_assert
    - client_send_mailbox_flags
    linkageType: ''
    returnType: struct imap_sync_context
    signature: "struct imap_sync_context *\nimap_sync_init(struct client *client,
      struct mailbox *box,\n\t       enum imap_sync_flags imap_flags, enum mailbox_sync_flags
      flags,\n\t       bool utf8)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/imap/imap-sync.c:244,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/imap/imap-sync.c:247,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-sync.c:252,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-sync.c:252,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - sync_cmd
    argTypes:
    - struct imap_sync_context*
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 262
    functionName: imap_sync_send_highestmodseq
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - str_begins
    - client_send_line
    - t_strdup_printf
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void imap_sync_send_highestmodseq(struct imap_sync_context *ctx,\n\t\t\t
      \    struct client_command_context *sync_cmd)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_free
      Src: /src/dovecot/src/imap/imap-sync.c:273,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/imap-sync.c:276,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-sync.c:278,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-sync.c:279,1
    - Dst: mailbox_sync_deinit
      Src: /src/dovecot/src/imap/imap-sync.c:281,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/imap/imap-sync.c:286,1
    - Dst: client_disconnect_with_error
      Src: /src/dovecot/src/imap/imap-sync.c:292,1
    - Dst: mailbox_is_inconsistent
      Src: /src/dovecot/src/imap/imap-sync.c:295,1
    - Dst: client_disconnect_with_error
      Src: /src/dovecot/src/imap/imap-sync.c:296,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap/imap-sync.c:304,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-sync.c:307,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-sync.c:308,1
    - Dst: client_enabled_mailbox_features
      Src: /src/dovecot/src/imap/imap-sync.c:313,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/imap-sync.c:314,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/imap-sync.c:315,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - aborting
    argTypes:
    - struct imap_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 264
    functionDepth: 3
    functionLinenumber: 264
    functionLinenumberEnd: 321
    functionName: imap_sync_finish
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_is_inconsistent
    - i_panic
    - mailbox_sync_deinit
    - t_strdup_printf
    - client_send_line
    - mailbox_get_open_status
    - mailbox_transaction_commit
    - client_disconnect_with_error
    - mail_free
    - client_enabled_mailbox_features
    - array_is_created
    - array_free
    linkageType: ''
    returnType: int
    signature: int imap_sync_finish(struct imap_sync_context *ctx, bool aborting)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_client_notify_newmails
      Src: /src/dovecot/src/imap/imap-sync.c:329,1
    - Dst: imap_sync_send_search_updates
      Src: /src/dovecot/src/imap/imap-sync.c:337,1
    - Dst: struct imap_sync_context*::client::v::sync_notify_more
      Src: /src/dovecot/src/imap/imap-sync.c:341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 323
    functionDepth: 9
    functionLinenumber: 323
    functionLinenumberEnd: 343
    functionName: imap_sync_notify_more
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - imap_client_notify_newmails
    - struct imap_sync_context*::client::v::sync_notify_more
    - imap_sync_send_search_updates
    linkageType: ''
    returnType: int
    signature: int imap_sync_notify_more(struct imap_sync_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_sync_finish
      Src: /src/dovecot/src/imap/imap-sync.c:350,1
    - Dst: imap_client_notify_finished
      Src: /src/dovecot/src/imap/imap-sync.c:351,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-sync.c:353,1
    - Dst: imap_sync_send_highestmodseq
      Src: /src/dovecot/src/imap/imap-sync.c:355,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-sync.c:357,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-sync.c:358,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-sync.c:359,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-sync.c:362,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/imap-sync.c:363,1
    - Dst: i_free
      Src: /src/dovecot/src/imap/imap-sync.c:364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - sync_cmd
    argTypes:
    - struct imap_sync_context*
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 345
    functionDepth: 4
    functionLinenumber: 345
    functionLinenumberEnd: 366
    functionName: imap_sync_deinit
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 2
    functionsReached:
    - imap_sync_send_highestmodseq
    - client_has_enabled
    - imap_client_notify_finished
    - imap_sync_finish
    - array_is_created
    - i_free
    - array_free
    linkageType: ''
    returnType: int
    signature: "int imap_sync_deinit(struct imap_sync_context *ctx,\n\t\t     struct
      client_command_context *sync_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/imap/imap-sync.c:372,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct imap_sync_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 376
    functionName: imap_sync_add_modseq
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - mail_get_modseq
    linkageType: ''
    returnType: void
    signature: void imap_sync_add_modseq(struct imap_sync_context *ctx, string_t *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_seq
      Src: /src/dovecot/src/imap/imap-sync.c:383,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/imap/imap-sync.c:384,1
    - Dst: client_get_keyword_names
      Src: /src/dovecot/src/imap/imap-sync.c:385,1
    - Dst: mail_get_keyword_indexes
      Src: /src/dovecot/src/imap/imap-sync.c:386,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-sync.c:391,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:392,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:394,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-sync.c:395,1
    - Dst: imap_sync_add_modseq
      Src: /src/dovecot/src/imap/imap-sync.c:397,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-sync.c:398,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-sync.c:400,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/imap/imap-sync.c:401,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-sync.c:402,1
    - Dst: client_send_line_next
      Src: /src/dovecot/src/imap/imap-sync.c:403,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-sync.c:403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct imap_sync_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 404
    functionName: imap_sync_send_flags
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - imap_sync_add_modseq
    - str_printfa
    - client_has_enabled
    - mail_get_keyword_indexes
    - str_append_c
    - str_c
    - client_get_keyword_names
    - mail_set_seq
    - imap_write_flags
    - mail_get_flags
    - str_truncate
    - str_append
    - client_send_line_next
    linkageType: ''
    returnType: int
    signature: int imap_sync_send_flags(struct imap_sync_context *ctx, string_t *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_seq
      Src: /src/dovecot/src/imap/imap-sync.c:408,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-sync.c:410,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:411,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:413,1
    - Dst: imap_sync_add_modseq
      Src: /src/dovecot/src/imap/imap-sync.c:414,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-sync.c:415,1
    - Dst: client_send_line_next
      Src: /src/dovecot/src/imap/imap-sync.c:416,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-sync.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct imap_sync_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 417
    functionName: imap_sync_send_modseq
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - imap_sync_add_modseq
    - str_printfa
    - str_c
    - str_append_c
    - mail_set_seq
    - str_truncate
    - client_send_line_next
    linkageType: ''
    returnType: int
    signature: int imap_sync_send_modseq(struct imap_sync_context *ctx, string_t *str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/imap/imap-sync.c:428,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-sync.c:432,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-sync.c:433,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/imap/imap-sync.c:437,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-sync.c:443,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:444,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:446,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/imap-sync.c:457,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:458,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:460,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/imap-sync.c:462,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/imap-sync.c:463,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/imap-sync.c:463,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/imap-sync.c:463,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 464
    functionName: imap_sync_vanished
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - array_get
    - mail_set_seq
    - o_stream_nsend
    - str_append
    linkageType: ''
    returnType: void
    signature: void imap_sync_vanished(struct imap_sync_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-sync.c:475,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/imap/imap-sync.c:477,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/imap-sync.c:490,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/imap-sync.c:491,1
    - Dst: client_send_line_next
      Src: /src/dovecot/src/imap/imap-sync.c:492,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/imap-sync.c:492,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct imap_sync_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 466
    functionDepth: 2
    functionLinenumber: 466
    functionLinenumberEnd: 495
    functionName: imap_sync_send_expunges
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - seq_range_array_add_range
    - str_truncate
    - array_is_created
    - client_send_line_next
    linkageType: ''
    returnType: int
    signature: int imap_sync_send_expunges(struct imap_sync_context *ctx, string_t
      *str)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: imap_sync_notify_more
      Src: /src/dovecot/src/imap/imap-sync.c:503,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/imap-sync.c:509,1
    - Dst: mailbox_sync_next
      Src: /src/dovecot/src/imap/imap-sync.c:513,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:531,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-sync.c:531,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/imap-sync.c:532,1
    - Dst: imap_sync_send_flags
      Src: /src/dovecot/src/imap/imap-sync.c:549,1
    - Dst: imap_sync_send_expunges
      Src: /src/dovecot/src/imap/imap-sync.c:553,1
    - Dst: client_has_enabled
      Src: /src/dovecot/src/imap/imap-sync.c:564,1
    - Dst: imap_sync_send_modseq
      Src: /src/dovecot/src/imap/imap-sync.c:582,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap/imap-sync.c:594,1
    - Dst: imap_sync_vanished
      Src: /src/dovecot/src/imap/imap-sync.c:595,1
    - Dst: imap_sync_finish
      Src: /src/dovecot/src/imap/imap-sync.c:596,1
    - Dst: imap_sync_more
      Src: /src/dovecot/src/imap/imap-sync.c:598,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 68
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imap_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 497
    functionDepth: 10
    functionLinenumber: 497
    functionLinenumberEnd: 601
    functionName: imap_sync_more
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 2
    functionsReached:
    - t_str_new
    - client_has_enabled
    - imap_sync_more
    - imap_sync_send_flags
    - imap_sync_send_expunges
    - mailbox_sync_next
    - imap_sync_finish
    - array_count
    - imap_sync_notify_more
    - imap_sync_send_modseq
    - array_is_created
    - i_assert
    - imap_sync_vanished
    linkageType: ''
    returnType: int
    signature: int imap_sync_more(struct imap_sync_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_get_count
      Src: /src/dovecot/src/imap/imap-sync.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 613
    functionName: imap_sync_is_allowed
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 1
    functionsReached:
    - mailbox_transaction_get_count
    linkageType: ''
    returnType: bool
    signature: bool imap_sync_is_allowed(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-sync.c:618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 620
    functionName: cmd_finish_sync
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - client_send_tagline
    linkageType: ''
    returnType: bool
    signature: bool cmd_finish_sync(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:629,1
    - Dst: imap_sync_more
      Src: /src/dovecot/src/imap/imap-sync.c:631,1
    - Dst: imap_sync_deinit
      Src: /src/dovecot/src/imap/imap-sync.c:637,1
    - Dst: client_send_untagged_storage_error
      Src: /src/dovecot/src/imap/imap-sync.c:638,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/imap/imap-sync.c:639,1
    - Dst: cmd_finish_sync
      Src: /src/dovecot/src/imap/imap-sync.c:654,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-sync.c:655,1
    - Dst: cmd_finish_sync
      Src: /src/dovecot/src/imap/imap-sync.c:658,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - sync_cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 622
    functionDepth: 11
    functionLinenumber: 622
    functionLinenumberEnd: 660
    functionName: cmd_sync_continue
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - imap_sync_more
    - cmd_finish_sync
    - imap_sync_deinit
    - client_command_free
    - i_assert
    - client_send_untagged_storage_error
    linkageType: ''
    returnType: bool
    signature: bool cmd_sync_continue(struct client_command_context *sync_cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:684,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap/imap-sync.c:686,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:688,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - client
    - flags_r
    - imap_flags_r
    argTypes:
    - struct client*
    - enum mailbox_sync_flags*
    - enum imap_sync_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 689
    functionName: get_common_sync_flags
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void get_common_sync_flags(struct client *client,\n\t\t\t\t  enum
      mailbox_sync_flags *flags_r,\n\t\t\t\t  enum imap_sync_flags *imap_flags_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_common_sync_flags
      Src: /src/dovecot/src/imap/imap-sync.c:700,1
    - Dst: imap_sync_init
      Src: /src/dovecot/src/imap/imap-sync.c:714,1
    - Dst: cmd_sync_continue
      Src: /src/dovecot/src/imap/imap-sync.c:723,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/imap/imap-sync.c:724,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-sync.c:728,1
    - Dst: cmd_sync_delayed
      Src: /src/dovecot/src/imap/imap-sync.c:729,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - sync_cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 691
    functionDepth: 12
    functionLinenumber: 691
    functionLinenumberEnd: 731
    functionName: cmd_sync_client
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - get_common_sync_flags
    - cmd_sync_continue
    - cmd_sync_delayed
    - o_stream_set_flush_pending
    - client_command_free
    - imap_sync_init
    linkageType: ''
    returnType: bool
    signature: bool cmd_sync_client(struct client_command_context *sync_cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:738,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/imap-sync.c:747,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap/imap-sync.c:750,1
    - Dst: p_new
      Src: /src/dovecot/src/imap/imap-sync.c:752,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - cmd
    - flags
    - imap_flags
    - tagline
    argTypes:
    - struct client_command_context*
    - enum mailbox_sync_flags
    - enum imap_sync_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 765
    functionName: cmd_sync
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 9
    functionsReached:
    - p_strdup
    - i_assert
    - client_send_tagline
    - p_new
    linkageType: ''
    returnType: bool
    signature: "bool cmd_sync(struct client_command_context *cmd, enum mailbox_sync_flags
      flags,\n\t      enum imap_sync_flags imap_flags, const char *tagline)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:782,1
    - Dst: cmd_finish_sync
      Src: /src/dovecot/src/imap/imap-sync.c:784,1
    - Dst: client_command_free
      Src: /src/dovecot/src/imap/imap-sync.c:785,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 767
    functionDepth: 3
    functionLinenumber: 767
    functionLinenumberEnd: 790
    functionName: cmd_sync_drop_fast
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    - cmd_finish_sync
    - client_command_free
    linkageType: ''
    returnType: bool
    signature: bool cmd_sync_drop_fast(struct client *client)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: imap_sync_is_allowed
      Src: /src/dovecot/src/imap/imap-sync.c:801,1
    - Dst: cmd_sync_drop_fast
      Src: /src/dovecot/src/imap/imap-sync.c:803,1
    - Dst: cmd_sync_drop_fast
      Src: /src/dovecot/src/imap/imap-sync.c:834,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/imap-sync.c:835,1
    - Dst: cmd_sync_client
      Src: /src/dovecot/src/imap/imap-sync.c:836,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 792
    functionDepth: 13
    functionLinenumber: 792
    functionLinenumberEnd: 837
    functionName: cmd_sync_delayed_real
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 0
    functionsReached:
    - cmd_sync_drop_fast
    - cmd_sync_client
    - i_assert
    - imap_sync_is_allowed
    linkageType: ''
    returnType: bool
    signature: bool cmd_sync_delayed_real(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_sync_delayed_real
      Src: /src/dovecot/src/imap/imap-sync.c:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 839
    functionDepth: 14
    functionLinenumber: 839
    functionLinenumberEnd: 845
    functionName: cmd_sync_delayed
    functionSourceFile: /src/dovecot/src/imap/imap-sync.c
    functionUses: 8
    functionsReached:
    - cmd_sync_delayed_real
    linkageType: ''
    returnType: bool
    signature: bool cmd_sync_delayed(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/imap/cmd-copy.c:43,1
    - Dst: I_MAX
      Src: /src/dovecot/src/imap/cmd-copy.c:47,1
    - Dst: imap_notify_progress
      Src: /src/dovecot/src/imap/cmd-copy.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - client
    - ctx
    argTypes:
    - struct client*
    - struct cmd_copy_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 60
    functionName: client_send_sendalive_if_needed
    functionSourceFile: /src/dovecot/src/imap/cmd-copy.c
    functionUses: 0
    functionsReached:
    - I_MAX
    - imap_notify_progress
    - io_loop_time_refresh
    linkageType: ''
    returnType: int
    signature: "int client_send_sendalive_if_needed(struct client *client,\n\t\t\t\t\t
      \  struct cmd_copy_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_settings
      Src: /src/dovecot/src/imap/cmd-copy.c:67,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/imap/cmd-copy.c:68,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/imap/cmd-copy.c:69,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/imap/cmd-copy.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 3
    argNames:
    - client
    - box
    - count
    argTypes:
    - struct client*
    - struct mailbox*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 72
    functionName: copy_update_trashed
    functionSourceFile: /src/dovecot/src/imap/cmd-copy.c
    functionUses: 0
    functionsReached:
    - str_array_icase_find
    - settings_boollist_get
    - mailbox_get_settings
    - array_not_empty
    linkageType: ''
    returnType: void
    signature: "void copy_update_trashed(struct client *client, struct mailbox *box,\n\t\t\t\tunsigned
      int count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap/cmd-copy.c:82,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/imap/cmd-copy.c:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 88
    functionName: client_is_disconnected
    functionSourceFile: /src/dovecot/src/imap/cmd-copy.c
    functionUses: 0
    functionsReached:
    - i_stream_set_input_pending
    - i_stream_read
    linkageType: ''
    returnType: bool
    signature: bool client_is_disconnected(struct client *client)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap/cmd-copy.c:101,1
    - Dst: mail_search_args_dup
      Src: /src/dovecot/src/imap/cmd-copy.c:105,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/imap/cmd-copy.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-copy.c:108,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-copy.c:109,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/imap/cmd-copy.c:113,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/imap/cmd-copy.c:114,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-copy.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-copy.c:119,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/imap/cmd-copy.c:119,1
    - Dst: imap_client_command_get_reason
      Src: /src/dovecot/src/imap/cmd-copy.c:122,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/cmd-copy.c:123,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/cmd-copy.c:128,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/cmd-copy.c:131,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-copy.c:133,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-copy.c:135,1
    - Dst: mailbox_search_set_progress_hidden
      Src: /src/dovecot/src/imap/cmd-copy.c:145,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/cmd-copy.c:147,1
    - Dst: client_send_sendalive_if_needed
      Src: /src/dovecot/src/imap/cmd-copy.c:163,1
    - Dst: client_is_disconnected
      Src: /src/dovecot/src/imap/cmd-copy.c:165,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/imap/cmd-copy.c:174,1
    - Dst: mailbox_save_copy_flags
      Src: /src/dovecot/src/imap/cmd-copy.c:175,1
    - Dst: mailbox_move
      Src: /src/dovecot/src/imap/cmd-copy.c:178,1
    - Dst: mailbox_copy
      Src: /src/dovecot/src/imap/cmd-copy.c:181,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/imap/cmd-copy.c:188,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-copy.c:193,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/imap/cmd-copy.c:195,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-copy.c:197,1
    - Dst: client_is_disconnected
      Src: /src/dovecot/src/imap/cmd-copy.c:203,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/imap/cmd-copy.c:207,1
    - Dst: mailbox_transaction_commit_get_changes
      Src: /src/dovecot/src/imap/cmd-copy.c:208,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/imap/cmd-copy.c:209,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-copy.c:216,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/imap/cmd-copy.c:222,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/imap/cmd-copy.c:233,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/imap/cmd-copy.c:234,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-copy.c:236,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/imap/cmd-copy.c:236,1
    - Dst: copy_update_trashed
      Src: /src/dovecot/src/imap/cmd-copy.c:238,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap/cmd-copy.c:239,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-copy.c:241,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/cmd-copy.c:247,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-copy.c:249,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/imap/cmd-copy.c:254,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/imap/cmd-copy.c:257,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/imap/cmd-copy.c:258,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-copy.c:261,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 95
    argCount: 2
    argNames:
    - copy_ctx
    - uid_search_args
    argTypes:
    - struct cmd_copy_context*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 266
    functionName: fetch_and_copy
    functionSourceFile: /src/dovecot/src/imap/cmd-copy.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_search_args_dup
    - mailbox_save_alloc
    - mailbox_transaction_commit_get_changes
    - pool_unref
    - mailbox_copy
    - o_stream_is_corked
    - seq_range_array_merge
    - mailbox_transaction_begin
    - mail_search_args_init
    - mailbox_sync
    - mailbox_search_deinit
    - mailbox_save_copy_flags
    - array_free
    - mailbox_get_last_error
    - mailbox_transaction_rollback
    - mailbox_transaction_commit
    - mailbox_search_init
    - i_assert
    - mailbox_search_set_progress_hidden
    - seq_range_array_add
    - mailbox_get_last_mail_error
    - copy_update_trashed
    - client_send_sendalive_if_needed
    - imap_client_command_get_reason
    - client_is_disconnected
    - mailbox_move
    - ARRAY_TYPE
    - mailbox_search_next
    - mail_search_args_unref
    - seq_range_count
    linkageType: ''
    returnType: int
    signature: "int fetch_and_copy(struct cmd_copy_context *copy_ctx,\n\t\t\t  const
      struct mail_search_args *uid_search_args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/imap/cmd-copy.c:271,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-copy.c:273,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-copy.c:274,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/cmd-copy.c:275,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-copy.c:276,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-copy.c:277,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-copy.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - copy_ctx
    - msg
    - src_uidset
    argTypes:
    - struct cmd_copy_context*
    - string_t*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 278
    functionName: cmd_move_send_untagged
    functionSourceFile: /src/dovecot/src/imap/cmd-copy.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - str_append
    - client_send_line
    - array_count
    - imap_write_seq_range
    linkageType: ''
    returnType: void
    signature: "void cmd_move_send_untagged(struct cmd_copy_context *copy_ctx,\n\t\t\t\t
      \  string_t *msg, string_t *src_uidset)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/imap/cmd-copy.c:294,1
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-copy.c:297,1
    - Dst: imap_search_get_seqset
      Src: /src/dovecot/src/imap/cmd-copy.c:302,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-copy.c:306,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-copy.c:307,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-copy.c:308,1
    - Dst: imap_search_anyset_to_uidset
      Src: /src/dovecot/src/imap/cmd-copy.c:314,1
    - Dst: client_open_save_dest_box
      Src: /src/dovecot/src/imap/cmd-copy.c:316,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-copy.c:317,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap/cmd-copy.c:321,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-copy.c:327,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/imap/cmd-copy.c:327,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-copy.c:328,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/imap/cmd-copy.c:329,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-copy.c:330,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-copy.c:331,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-copy.c:332,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-copy.c:333,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-copy.c:338,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-copy.c:339,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-copy.c:341,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/imap/cmd-copy.c:342,1
    - Dst: mail_search_seqset_iter_init
      Src: /src/dovecot/src/imap/cmd-copy.c:348,1
    - Dst: fetch_and_copy
      Src: /src/dovecot/src/imap/cmd-copy.c:353,1
    - Dst: mail_search_seqset_iter_next
      Src: /src/dovecot/src/imap/cmd-copy.c:360,1
    - Dst: mail_search_seqset_iter_deinit
      Src: /src/dovecot/src/imap/cmd-copy.c:361,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-copy.c:362,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-copy.c:364,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/cmd-copy.c:365,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-copy.c:367,1
    - Dst: array_count
      Src: /src/dovecot/src/imap/cmd-copy.c:369,1
    - Dst: cmd_move_send_untagged
      Src: /src/dovecot/src/imap/cmd-copy.c:371,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-copy.c:374,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/imap/cmd-copy.c:375,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-copy.c:379,1
    - Dst: cmd_move_send_untagged
      Src: /src/dovecot/src/imap/cmd-copy.c:382,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-copy.c:383,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-copy.c:384,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-copy.c:386,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-copy.c:387,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/imap/cmd-copy.c:388,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-copy.c:389,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-copy.c:392,1
    - Dst: array_free
      Src: /src/dovecot/src/imap/cmd-copy.c:393,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-copy.c:401,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-copy.c:407,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-copy.c:410,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-copy.c:410,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-copy.c:413,1
    - Dst: client_send_error
      Src: /src/dovecot/src/imap/cmd-copy.c:417,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 94
    argCount: 2
    argNames:
    - cmd
    - move
    argTypes:
    - struct client_command_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 280
    functionDepth: 5
    functionLinenumber: 280
    functionLinenumberEnd: 421
    functionName: cmd_copy_full
    functionSourceFile: /src/dovecot/src/imap/cmd-copy.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mailbox_get_namespace
    - str_printfa
    - str_c
    - mail_search_seqset_iter_deinit
    - fetch_and_copy
    - client_open_save_dest_box
    - array_count
    - mailbox_alloc
    - mail_search_seqset_iter_init
    - mail_search_seqset_iter_next
    - client_verify_open_mailbox
    - t_str_new
    - mailbox_free
    - client_send_error
    - mailbox_sync
    - cmd_move_send_untagged
    - client_send_box_error
    - array_free
    - i_zero
    - client_read_string_args
    - mailbox_get_vname
    - i_assert
    - imap_search_get_seqset
    - str_append
    - imap_search_anyset_to_uidset
    - str_truncate
    - imap_write_seq_range
    - mail_search_args_unref
    - seq_range_count
    - cmd_sync
    linkageType: ''
    returnType: bool
    signature: bool cmd_copy_full(struct client_command_context *cmd, bool move)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_copy_full
      Src: /src/dovecot/src/imap/cmd-copy.c:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 423
    functionDepth: 6
    functionLinenumber: 423
    functionLinenumberEnd: 426
    functionName: cmd_copy
    functionSourceFile: /src/dovecot/src/imap/cmd-copy.c
    functionUses: 0
    functionsReached:
    - cmd_copy_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_copy(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_copy_full
      Src: /src/dovecot/src/imap/cmd-copy.c:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 428
    functionDepth: 6
    functionLinenumber: 428
    functionLinenumberEnd: 431
    functionName: cmd_move
    functionSourceFile: /src/dovecot/src/imap/cmd-copy.c
    functionUses: 0
    functionsReached:
    - cmd_copy_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_move(struct client_command_context *cmd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/imap/cmd-delete.c:16,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-delete.c:19,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-delete.c:23,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-delete.c:24,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-delete.c:24,1
    - Dst: mailbox_is_any_inbox
      Src: /src/dovecot/src/imap/cmd-delete.c:25,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-delete.c:28,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-delete.c:29,1
    - Dst: mailbox_backends_equal
      Src: /src/dovecot/src/imap/cmd-delete.c:33,1
    - Dst: client_search_updates_free
      Src: /src/dovecot/src/imap/cmd-delete.c:35,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-delete.c:36,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/imap/cmd-delete.c:40,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-delete.c:41,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/imap/cmd-delete.c:43,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-delete.c:45,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-delete.c:48,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-delete.c:48,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-delete.c:52,1
    - Dst: client_disconnect_with_error
      Src: /src/dovecot/src/imap/cmd-delete.c:55,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 6
    functionDepth: 5
    functionLinenumber: 6
    functionLinenumberEnd: 59
    functionName: cmd_delete
    functionSourceFile: /src/dovecot/src/imap/cmd-delete.c
    functionUses: 0
    functionsReached:
    - mailbox_is_any_inbox
    - mailbox_free
    - client_find_namespace
    - mailbox_get_last_error
    - client_search_updates_free
    - client_read_string_args
    - client_send_tagline
    - t_strdup_printf
    - mailbox_delete
    - mailbox_alloc
    - client_send_box_error
    - mailbox_get_vname
    - client_disconnect_with_error
    - event_add_str
    - mailbox_backends_equal
    linkageType: ''
    returnType: bool
    signature: bool cmd_delete(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_exists
      Src: /src/dovecot/src/imap/cmd-subscribe.c:13,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-subscribe.c:14,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-subscribe.c:18,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-subscribe.c:18,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-subscribe.c:20,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - cmd
    - box
    argTypes:
    - struct client_command_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 24
    functionName: subscribe_is_valid_name
    functionSourceFile: /src/dovecot/src/imap/cmd-subscribe.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - client_send_tagline
    - client_send_box_error
    - mailbox_get_vname
    - mailbox_exists
    linkageType: ''
    returnType: bool
    signature: bool subscribe_is_valid_name(struct client_command_context *cmd, struct
      mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/imap/cmd-subscribe.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - str
    - c
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 31
    functionName: str_ends_with_char
    functionSourceFile: /src/dovecot/src/imap/cmd-subscribe.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool str_ends_with_char(const char *str, char c)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/imap/cmd-subscribe.c:42,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-subscribe.c:46,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-subscribe.c:50,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-subscribe.c:51,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-subscribe.c:51,1
    - Dst: subscribe_is_valid_name
      Src: /src/dovecot/src/imap/cmd-subscribe.c:53,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-subscribe.c:54,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/imap/cmd-subscribe.c:59,1
    - Dst: str_ends_with_char
      Src: /src/dovecot/src/imap/cmd-subscribe.c:62,1
    - Dst: str_ends_with_char
      Src: /src/dovecot/src/imap/cmd-subscribe.c:63,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-subscribe.c:65,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-subscribe.c:66,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/imap/cmd-subscribe.c:67,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-subscribe.c:69,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/imap/cmd-subscribe.c:72,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-subscribe.c:74,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-subscribe.c:76,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-subscribe.c:80,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - cmd
    - subscribe
    argTypes:
    - struct client_command_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 33
    functionDepth: 5
    functionLinenumber: 33
    functionLinenumberEnd: 82
    functionName: cmd_subscribe_full
    functionSourceFile: /src/dovecot/src/imap/cmd-subscribe.c
    functionUses: 1
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_free
    - client_find_namespace
    - str_ends_with_char
    - client_read_string_args
    - t_strdup_printf
    - client_send_tagline
    - mailbox_alloc
    - mailbox_set_subscribed
    - mailbox_get_vname
    - client_send_box_error
    - event_add_str
    - subscribe_is_valid_name
    linkageType: ''
    returnType: bool
    signature: bool cmd_subscribe_full(struct client_command_context *cmd, bool subscribe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_subscribe_full
      Src: /src/dovecot/src/imap/cmd-subscribe.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 6
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: cmd_subscribe
    functionSourceFile: /src/dovecot/src/imap/cmd-subscribe.c
    functionUses: 0
    functionsReached:
    - cmd_subscribe_full
    linkageType: ''
    returnType: bool
    signature: bool cmd_subscribe(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/imap/test-imap-progress.c:44,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/imap/test-imap-progress.c:45,1
    - Dst: imap_progress_line
      Src: /src/dovecot/src/imap/test-imap-progress.c:47,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/imap/test-imap-progress.c:48,1
    - Dst: test_end
      Src: /src/dovecot/src/imap/test-imap-progress.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 51
    functionName: test_imap_storage_callback_line
    functionSourceFile: /src/dovecot/src/imap/test-imap-progress.c
    functionUses: 0
    functionsReached:
    - test_end
    - imap_progress_line
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_storage_callback_line(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/imap/test-imap-progress.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 61
    functionName: main
    functionSourceFile: /src/dovecot/src/imap/test-imap-progress.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:17,1
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:21,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:24,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:25,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:29,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:31,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:32,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:33,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:37,1
    - Dst: client_send_internal_error
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:42,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:44,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:48,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:49,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:52,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:52,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-genurlauth.c:53,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 9
    functionDepth: 4
    functionLinenumber: 9
    functionLinenumberEnd: 55
    functionName: cmd_genurlauth
    functionSourceFile: /src/dovecot/src/imap/cmd-genurlauth.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_atom
    - str_c
    - t_str_new
    - str_append_c
    - client_send_internal_error
    - client_send_tagline
    - imap_urlauth_generate
    - imap_append_astring
    - client_read_args
    - client_send_command_error
    - imap_arg_get_astring
    - client_send_line
    - str_append
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: bool cmd_genurlauth(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_reset_all_keys
      Src: /src/dovecot/src/imap/cmd-resetkey.c:10,1
    - Dst: client_send_internal_error
      Src: /src/dovecot/src/imap/cmd-resetkey.c:11,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-resetkey.c:15,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 17
    functionName: cmd_resetkey_all
    functionSourceFile: /src/dovecot/src/imap/cmd-resetkey.c
    functionUses: 0
    functionsReached:
    - client_send_internal_error
    - client_send_tagline
    - imap_urlauth_reset_all_keys
    linkageType: ''
    returnType: bool
    signature: bool cmd_resetkey_all(struct client_command_context *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-resetkey.c:28,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-resetkey.c:31,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap/cmd-resetkey.c:32,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-resetkey.c:33,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-resetkey.c:38,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/imap/cmd-resetkey.c:46,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/imap/cmd-resetkey.c:51,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-resetkey.c:52,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/imap/cmd-resetkey.c:52,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/imap/cmd-resetkey.c:53,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-resetkey.c:54,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-resetkey.c:55,1
    - Dst: imap_urlauth_reset_mailbox_key
      Src: /src/dovecot/src/imap/cmd-resetkey.c:60,1
    - Dst: client_send_internal_error
      Src: /src/dovecot/src/imap/cmd-resetkey.c:61,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-resetkey.c:62,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-resetkey.c:72,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/imap/cmd-resetkey.c:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - cmd
    - mailbox
    - mech_args
    argTypes:
    - struct client_command_context*
    - char*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 19
    functionDepth: 3
    functionLinenumber: 19
    functionLinenumberEnd: 75
    functionName: cmd_resetkey_mailbox
    functionSourceFile: /src/dovecot/src/imap/cmd-resetkey.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - client_find_namespace
    - mailbox_open
    - client_send_internal_error
    - client_send_tagline
    - strcasecmp
    - client_send_command_error
    - mailbox_alloc
    - client_send_box_error
    - mailbox_get_vname
    - imap_urlauth_reset_mailbox_key
    - IMAP_ARG_IS_EOL
    - event_add_str
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: "bool cmd_resetkey_mailbox(struct client_command_context *cmd,\n\t\t
      \    const char *mailbox, const struct imap_arg *mech_args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-resetkey.c:83,1
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-resetkey.c:87,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-resetkey.c:90,1
    - Dst: cmd_resetkey_all
      Src: /src/dovecot/src/imap/cmd-resetkey.c:91,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-resetkey.c:92,1
    - Dst: cmd_resetkey_mailbox
      Src: /src/dovecot/src/imap/cmd-resetkey.c:93,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-resetkey.c:95,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 97
    functionName: cmd_resetkey
    functionSourceFile: /src/dovecot/src/imap/cmd-resetkey.c
    functionUses: 0
    functionsReached:
    - cmd_resetkey_mailbox
    - client_read_args
    - client_send_command_error
    - cmd_resetkey_all
    - IMAP_ARG_IS_EOL
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_resetkey(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_thread_iterate_count
      Src: /src/dovecot/src/imap/cmd-thread.c:19,1
    - Dst: mail_thread_iterate_next
      Src: /src/dovecot/src/imap/cmd-thread.c:25,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-thread.c:26,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-thread.c:28,1
    - Dst: imap_thread_write
      Src: /src/dovecot/src/imap/cmd-thread.c:30,1
    - Dst: mail_thread_iterate_deinit
      Src: /src/dovecot/src/imap/cmd-thread.c:32,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - iter
    - str
    - root
    argTypes:
    - struct mail_thread_iterate_context*
    - string_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 36
    functionName: imap_thread_write
    functionSourceFile: /src/dovecot/src/imap/cmd-thread.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - str_append_c
    - imap_thread_write
    - mail_thread_iterate_count
    - mail_thread_iterate_deinit
    - mail_thread_iterate_next
    linkageType: ''
    returnType: int
    signature: "int imap_thread_write(struct mail_thread_iterate_context *iter,\n\t\t\t
      \    string_t *str, bool root)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_thread_iterate_init
      Src: /src/dovecot/src/imap/cmd-thread.c:66,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-thread.c:67,1
    - Dst: imap_thread_write
      Src: /src/dovecot/src/imap/cmd-thread.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - str
    - thread_type
    - write_seqs
    argTypes:
    - struct mail_thread_context*
    - string_t*
    - enum mail_thread_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 70
    functionName: imap_thread_write_reply
    functionSourceFile: /src/dovecot/src/imap/cmd-thread.c
    functionUses: 0
    functionsReached:
    - str_append
    - mail_thread_iterate_init
    - imap_thread_write
    linkageType: ''
    returnType: int
    signature: "int imap_thread_write_reply(struct mail_thread_context *ctx, string_t
      *str,\n\t\t\tenum mail_thread_type thread_type, bool write_seqs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap/cmd-thread.c:86,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/cmd-thread.c:89,1
    - Dst: mail_thread_init
      Src: /src/dovecot/src/imap/cmd-thread.c:90,1
    - Dst: imap_thread_write_reply
      Src: /src/dovecot/src/imap/cmd-thread.c:93,1
    - Dst: mail_thread_deinit
      Src: /src/dovecot/src/imap/cmd-thread.c:95,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-thread.c:99,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/cmd-thread.c:99,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-thread.c:99,1
    - Dst: str_free
      Src: /src/dovecot/src/imap/cmd-thread.c:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - cmd
    - search_args
    - thread_type
    argTypes:
    - struct client_command_context*
    - struct mail_search_args*
    - enum mail_thread_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 102
    functionName: imap_thread
    functionSourceFile: /src/dovecot/src/imap/cmd-thread.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - mail_thread_deinit
    - o_stream_nsend
    - imap_thread_write_reply
    - i_assert
    - str_new
    - str_free
    - mail_thread_init
    linkageType: ''
    returnType: int
    signature: "int imap_thread(struct client_command_context *cmd,\n\t\t       struct
      mail_search_args *search_args,\n\t\t       enum mail_thread_type thread_type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_front
      Src: /src/dovecot/src/imap/cmd-thread.c:119,1
    - Dst: array_front
      Src: /src/dovecot/src/imap/cmd-thread.c:120,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap/cmd-thread.c:125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - struct orderedsubject_thread*
    - struct orderedsubject_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 126
    functionName: orderedsubject_thread_cmp
    functionSourceFile: /src/dovecot/src/imap/cmd-thread.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - array_front
    linkageType: ''
    returnType: int
    signature: "int orderedsubject_thread_cmp(const struct orderedsubject_thread *t1,\n\t\t\t\t
      \    const struct orderedsubject_thread *t2)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-thread.c:135,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-thread.c:136,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/cmd-thread.c:136,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-thread.c:136,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-thread.c:137,1
    - Dst: array_get
      Src: /src/dovecot/src/imap/cmd-thread.c:140,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-thread.c:143,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-thread.c:146,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-thread.c:150,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-thread.c:152,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap/cmd-thread.c:153,1
    - Dst: str_data
      Src: /src/dovecot/src/imap/cmd-thread.c:153,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-thread.c:154,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-thread.c:155,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap/cmd-thread.c:157,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap/cmd-thread.c:159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - output
    - reply
    - thread
    argTypes:
    - struct ostream*
    - string_t*
    - struct orderedsubject_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 161
    functionName: imap_orderedsubject_thread_write
    functionSourceFile: /src/dovecot/src/imap/cmd-thread.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - array_get
    - o_stream_nsend
    - str_truncate
    linkageType: ''
    returnType: void
    signature: "void imap_orderedsubject_thread_write(struct ostream *output, string_t
      *reply,\n\t\t\t\t const struct orderedsubject_thread *thread)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/imap/cmd-thread.c:184,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap/cmd-thread.c:187,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap/cmd-thread.c:188,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/imap/cmd-thread.c:189,1
    - Dst: imap_client_command_get_reason
      Src: /src/dovecot/src/imap/cmd-thread.c:190,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/imap/cmd-thread.c:191,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/imap/cmd-thread.c:193,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/imap/cmd-thread.c:194,1
    - Dst: imap_get_base_subject_cased
      Src: /src/dovecot/src/imap/cmd-thread.c:197,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/imap/cmd-thread.c:198,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap/cmd-thread.c:200,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-thread.c:200,1
    - Dst: str_truncate
      Src: /src/dovecot/src/imap/cmd-thread.c:204,1
    - Dst: str_append
      Src: /src/dovecot/src/imap/cmd-thread.c:205,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap/cmd-thread.c:211,1
    - Dst: mail_get_date
      Src: /src/dovecot/src/imap/cmd-thread.c:212,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/imap/cmd-thread.c:215,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap/cmd-thread.c:218,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap/cmd-thread.c:221,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - cmd
    - search_args
    argTypes:
    - struct client_command_context*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 222
    functionName: imap_thread_orderedsubject
    functionSourceFile: /src/dovecot/src/imap/cmd-thread.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - str_c
    - p_array_init
    - imap_get_base_subject_cased
    - array_append_space
    - mailbox_transaction_begin
    - mail_get_first_header
    - str_new
    - pool_datastack_create
    - mailbox_search_init
    - strcmp
    - pool_alloconly_create
    - mail_get_date
    - array_push_back
    - imap_client_command_get_reason
    - str_append
    - str_truncate
    - mail_get_received_date
    - mailbox_search_next
    linkageType: ''
    returnType: int
    signature: "int imap_thread_orderedsubject(struct client_command_context *cmd,\n\t\t\t\t
      \     struct mail_search_args *search_args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-thread.c:259,1
    - Dst: client_verify_open_mailbox
      Src: /src/dovecot/src/imap/cmd-thread.c:262,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-thread.c:265,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap/cmd-thread.c:266,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-thread.c:267,1
    - Dst: mail_thread_type_parse
      Src: /src/dovecot/src/imap/cmd-thread.c:272,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/imap/cmd-thread.c:273,1
    - Dst: imap_search_args_build
      Src: /src/dovecot/src/imap/cmd-thread.c:277,1
    - Dst: imap_thread
      Src: /src/dovecot/src/imap/cmd-thread.c:282,1
    - Dst: imap_thread_orderedsubject
      Src: /src/dovecot/src/imap/cmd-thread.c:284,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/imap/cmd-thread.c:285,1
    - Dst: client_send_box_error
      Src: /src/dovecot/src/imap/cmd-thread.c:287,1
    - Dst: cmd_sync
      Src: /src/dovecot/src/imap/cmd-thread.c:291,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 294
    functionName: cmd_thread
    functionSourceFile: /src/dovecot/src/imap/cmd-thread.c
    functionUses: 0
    functionsReached:
    - client_verify_open_mailbox
    - imap_search_args_build
    - imap_thread
    - imap_thread_orderedsubject
    - client_read_args
    - client_send_command_error
    - mail_thread_type_parse
    - client_send_box_error
    - mail_search_args_unref
    - cmd_sync
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool cmd_thread(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/imap/cmd-id.c:12,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-id.c:20,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap/cmd-id.c:21,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/imap/cmd-id.c:22,1
    - Dst: strlen
      Src: /src/dovecot/src/imap/cmd-id.c:28,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/imap/cmd-id.c:35,1
    - Dst: imap_id_add_log_entry
      Src: /src/dovecot/src/imap/cmd-id.c:37,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 3
    argNames:
    - args
    - event
    - reply
    argTypes:
    - struct imap_arg*
    - struct event*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 40
    functionName: cmd_id_log_params
    functionSourceFile: /src/dovecot/src/imap/cmd-id.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - strlen
    - imap_arg_get_nstring
    - imap_arg_get_string
    - imap_id_add_log_entry
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: void
    signature: "void cmd_id_log_params(const struct imap_arg *args, struct event *event,\n\t\t
      \ string_t *reply)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/imap/cmd-id.c:48,1
    - Dst: event_create
      Src: /src/dovecot/src/imap/cmd-id.c:54,1
    - Dst: event_set_name
      Src: /src/dovecot/src/imap/cmd-id.c:55,1
    - Dst: str_new
      Src: /src/dovecot/src/imap/cmd-id.c:57,1
    - Dst: cmd_id_log_params
      Src: /src/dovecot/src/imap/cmd-id.c:58,1
    - Dst: str_len
      Src: /src/dovecot/src/imap/cmd-id.c:59,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap/cmd-id.c:60,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap/cmd-id.c:61,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap/cmd-id.c:62,1
    - Dst: str_c
      Src: /src/dovecot/src/imap/cmd-id.c:62,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap/cmd-id.c:64,1
    - Dst: str_free
      Src: /src/dovecot/src/imap/cmd-id.c:65,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap/cmd-id.c:68,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap/cmd-id.c:69,1
    - Dst: imap_id_reply_generate
      Src: /src/dovecot/src/imap/cmd-id.c:70,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/imap/cmd-id.c:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 73
    functionName: cmd_id
    functionSourceFile: /src/dovecot/src/imap/cmd-id.c
    functionUses: 0
    functionsReached:
    - str_c
    - event_create
    - event_unref
    - str_len
    - event_set_name
    - e_debug
    - t_strdup_printf
    - client_send_tagline
    - imap_id_reply_generate
    - client_read_args
    - str_sanitize
    - client_send_line
    - cmd_id_log_params
    - event_add_str
    - str_new
    - str_free
    linkageType: ''
    returnType: bool
    signature: bool cmd_id(struct client_command_context *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/stats/stats-event-category.c:12,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/stats-event-category.c:14,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/stats-event-category.c:18,1
    - Dst: event_add_categories
      Src: /src/dovecot/src/stats/stats-event-category.c:20,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/stats-event-category.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - name
    - parent
    argTypes:
    - char*
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 22
    functionName: stats_event_category_register
    functionSourceFile: /src/dovecot/src/stats/stats-event-category.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - event_create
    - event_unref
    - p_new
    - event_add_categories
    linkageType: ''
    returnType: void
    signature: "void stats_event_category_register(const char *name,\n\t\t\t\t   struct
      event_category *parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/stats/stats-event-category.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: stats_event_categories_init
    functionSourceFile: /src/dovecot/src/stats/stats-event-category.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    linkageType: ''
    returnType: void
    signature: void stats_event_categories_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/stats/stats-event-category.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: stats_event_categories_deinit
    functionSourceFile: /src/dovecot/src/stats/stats-event-category.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void stats_event_categories_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:17,1
    - Dst: strlen
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:21,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:24,1
    - Dst: uni_utf8_data_truncate
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:28,1
    - Dst: json_ostream_nopen_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:30,1
    - Dst: json_ostream_nwrite_string_data
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:31,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:32,1
    - Dst: json_ostream_nclose_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - joutput
    - str
    - info
    argTypes:
    - struct json_ostream*
    - char*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 34
    functionName: append_str_max_len
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_nclose_string
    - strlen
    - json_ostream_nwrite_string_data
    - json_ostream_nwrite_string
    - uni_utf8_data_truncate
    - json_ostream_nopen_string
    linkageType: ''
    returnType: void
    signature: "void append_str_max_len(struct json_ostream *joutput, const char *str,\n\t\t\t
      \      const struct metric_export_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:43,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:44,1
    - Dst: append_str_max_len
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:45,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - joutput
    - strlist
    - info
    argTypes:
    - struct json_ostream*
    - ARRAY_TYPE*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: append_strlist
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_array
    - append_str_max_len
    - json_ostream_nascend_array
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void append_strlist(struct json_ostream *joutput,\n\t       const
      ARRAY_TYPE(const_string) *strlist,\n\t       const struct metric_export_info
      *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - joutput
    - val
    argTypes:
    - struct json_ostream*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: append_int
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_nwrite_number
    linkageType: ''
    returnType: void
    signature: void append_int(struct json_ostream *joutput, intmax_t val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:58,1
    - Dst: i_panic
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:62,1
    - Dst: event_export_helper_fmt_unix_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:64,1
    - Dst: json_ostream_nwrite_number_raw
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:65,1
    - Dst: str_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:65,1
    - Dst: event_export_helper_fmt_rfc3339_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:68,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - joutput
    - time
    - fmt
    argTypes:
    - struct json_ostream*
    - struct timeval*
    - enum event_exporter_time_fmt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 72
    functionName: append_time
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - i_panic
    - str_c
    - t_str_new
    - event_export_helper_fmt_unix_time
    - json_ostream_nwrite_number_raw
    - event_export_helper_fmt_rfc3339_time
    - json_ostream_nwrite_string_buffer
    linkageType: ''
    returnType: void
    signature: "void append_time(struct json_ostream *joutput, const struct timeval
      *time,\n\t    enum event_exporter_time_fmt fmt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:76,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - joutput
    - ip
    argTypes:
    - struct json_ostream*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: append_ip
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - net_ip2addr
    - json_ostream_nwrite_string
    linkageType: ''
    returnType: void
    signature: void append_ip(struct json_ostream *joutput, const struct ip_addr *ip)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: append_str_max_len
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:86,1
    - Dst: append_int
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:89,1
    - Dst: append_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:92,1
    - Dst: append_ip
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:96,1
    - Dst: append_strlist
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:99,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - joutput
    - field
    - info
    argTypes:
    - struct json_ostream*
    - struct event_field*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 102
    functionName: append_field_value
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - append_int
    - append_time
    - append_ip
    - append_str_max_len
    - append_strlist
    linkageType: ''
    returnType: void
    signature: "void append_field_value(struct json_ostream *joutput,\n\t\t   const
      struct event_field *field,\n\t\t   const struct metric_export_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - joutput
    - event
    - info
    argTypes:
    - struct json_ostream*
    - struct event*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 113
    functionName: json_export_name
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_nwrite_string
    linkageType: ''
    returnType: void
    signature: "void json_export_name(struct json_ostream *joutput, struct event *event,\n\t\t
      const struct metric_export_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - joutput
    - info
    argTypes:
    - struct json_ostream*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 123
    functionName: json_export_hostname
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_nwrite_string
    linkageType: ''
    returnType: void
    signature: "void json_export_hostname(struct json_ostream *joutput,\n\t\t     const
      struct metric_export_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_object_member
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:132,1
    - Dst: append_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:133,1
    - Dst: json_ostream_nwrite_object_member
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:135,1
    - Dst: append_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - joutput
    - event
    - info
    argTypes:
    - struct json_ostream*
    - struct event*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: json_export_timestamps
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - append_time
    - json_ostream_nwrite_object_member
    linkageType: ''
    returnType: void
    signature: "void json_export_timestamps(struct json_ostream *joutput, struct event
      *event,\n\t\t       const struct metric_export_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:149,1
    - Dst: event_categories_iterate_init
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:151,1
    - Dst: event_categories_iterate
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:152,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:153,1
    - Dst: event_categories_iterate_deinit
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:154,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - joutput
    - event
    - info
    argTypes:
    - struct json_ostream*
    - struct event*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 157
    functionName: json_export_categories
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_array
    - event_categories_iterate_deinit
    - event_categories_iterate
    - json_ostream_nascend_array
    - json_ostream_nwrite_string
    - event_categories_iterate_init
    linkageType: ''
    returnType: void
    signature: "void json_export_categories(struct json_ostream *joutput, struct event
      *event,\n\t\t       const struct metric_export_info *info)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:168,1
    - Dst: event_get_fields
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:175,1
    - Dst: json_ostream_nwrite_object_member
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:180,1
    - Dst: append_field_value
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:181,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:188,1
    - Dst: json_ostream_nwrite_object_member
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:192,1
    - Dst: append_field_value
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:193,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:197,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - joutput
    - event
    - info
    - fields_count
    - fields
    argTypes:
    - struct json_ostream*
    - struct event*
    - struct metric_export_info*
    - unsigned int
    - struct metric_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 198
    functionName: json_export_fields
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_object
    - append_field_value
    - event_get_fields
    - json_ostream_nwrite_object_member
    - json_ostream_nascend_object
    - event_find_field_recursive
    linkageType: ''
    returnType: void
    signature: "void json_export_fields(struct json_ostream *joutput, struct event
      *event,\n\t\t   const struct metric_export_info *info,\n\t\t   const unsigned
      int fields_count,\n\t\t   const struct metric_field *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:222,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:228,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:229,1
    - Dst: json_export_name
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:231,1
    - Dst: json_export_hostname
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:232,1
    - Dst: json_export_timestamps
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:233,1
    - Dst: json_export_categories
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:234,1
    - Dst: json_export_fields
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:235,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:238,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/stats/event-exporter-fmt-json.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - metric
    - event
    - dest
    argTypes:
    - struct metric*
    - struct event*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 240
    functionName: event_export_fmt_json
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_object
    - json_ostream_nascend_object
    - json_export_timestamps
    - json_ostream_create_str
    - json_export_name
    - json_export_categories
    - str_append
    - json_ostream_nfinish_destroy
    - json_export_fields
    - json_export_hostname
    linkageType: ''
    returnType: void
    signature: "void event_export_fmt_json(const struct metric *metric,\n\t\t\t   struct
      event *event, buffer_t *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_event
      Src: /src/dovecot/src/stats/test-stats-metrics.c:12,1
    - Dst: stats_metrics_get_event_filter
      Src: /src/dovecot/src/stats/test-stats-metrics.c:14,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/stats/test-stats-metrics.c:15,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - event
    - ATTR_UNUSED
    - ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event*
    - enum event_callback_type
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 18
    functionName: test_stats_callback
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - event_filter_match
    - stats_metrics_get_event_filter
    - stats_metrics_event
    linkageType: ''
    returnType: bool
    signature: "bool test_stats_callback(struct event *event,\n\t\t\t enum event_callback_type
      type ATTR_UNUSED,\n\t\t\t struct failure_context *ctx, const char *fmt ATTR_UNUSED,\n\t\t\t
      va_list args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/stats/test-stats-metrics.c:29,1
    - Dst: test_stats_init
      Src: /src/dovecot/src/stats/test-stats-metrics.c:32,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-stats-metrics.c:35,1
    - Dst: event_add_category
      Src: /src/dovecot/src/stats/test-stats-metrics.c:36,1
    - Dst: event_set_name
      Src: /src/dovecot/src/stats/test-stats-metrics.c:37,1
    - Dst: test_event_send
      Src: /src/dovecot/src/stats/test-stats-metrics.c:38,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-stats-metrics.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:41,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-stats-metrics.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:42,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-stats-metrics.c:42,1
    - Dst: test_stats_deinit
      Src: /src/dovecot/src/stats/test-stats-metrics.c:44,1
    - Dst: test_end
      Src: /src/dovecot/src/stats/test-stats-metrics.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 46
    functionName: test_stats_metrics
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - test_stats_deinit
    - event_create
    - event_unref
    - test_event_send
    - test_stats_init
    - event_set_name
    - get_stats_dist_field
    - test_end
    - test_assert
    - event_add_category
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_stats_metrics(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/stats/test-stats-metrics.c:57,1
    - Dst: test_stats_init
      Src: /src/dovecot/src/stats/test-stats-metrics.c:59,1
    - Dst: stats_metrics_get_event_filter
      Src: /src/dovecot/src/stats/test-stats-metrics.c:63,1
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/test-stats-metrics.c:64,1
    - Dst: event_filter_export
      Src: /src/dovecot/src/stats/test-stats-metrics.c:65,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-stats-metrics.c:66,1
    - Dst: str_c
      Src: /src/dovecot/src/stats/test-stats-metrics.c:67,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-stats-metrics.c:70,1
    - Dst: event_add_category
      Src: /src/dovecot/src/stats/test-stats-metrics.c:71,1
    - Dst: event_set_name
      Src: /src/dovecot/src/stats/test-stats-metrics.c:72,1
    - Dst: event_add_str
      Src: /src/dovecot/src/stats/test-stats-metrics.c:73,1
    - Dst: test_event_send
      Src: /src/dovecot/src/stats/test-stats-metrics.c:74,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-stats-metrics.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:77,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-stats-metrics.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:78,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-stats-metrics.c:78,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-stats-metrics.c:81,1
    - Dst: event_add_category
      Src: /src/dovecot/src/stats/test-stats-metrics.c:82,1
    - Dst: event_set_name
      Src: /src/dovecot/src/stats/test-stats-metrics.c:83,1
    - Dst: event_add_str
      Src: /src/dovecot/src/stats/test-stats-metrics.c:84,1
    - Dst: e_debug
      Src: /src/dovecot/src/stats/test-stats-metrics.c:85,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-stats-metrics.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:88,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-stats-metrics.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:89,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-stats-metrics.c:89,1
    - Dst: test_stats_deinit
      Src: /src/dovecot/src/stats/test-stats-metrics.c:91,1
    - Dst: test_end
      Src: /src/dovecot/src/stats/test-stats-metrics.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 93
    functionName: test_stats_metrics_filter
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - test_stats_deinit
    - str_c
    - t_str_new
    - event_create
    - event_unref
    - test_event_send
    - test_stats_init
    - event_set_name
    - e_debug
    - get_stats_dist_field
    - test_assert_strcmp
    - stats_metrics_get_event_filter
    - test_end
    - event_filter_export
    - test_assert
    - event_add_str
    - event_add_category
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_stats_metrics_filter(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-stats-metrics.c:104,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-stats-metrics.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:111,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/stats/test-stats-metrics.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:114,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/test-stats-metrics.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:115,1
    - Dst: array_count
      Src: /src/dovecot/src/stats/test-stats-metrics.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:117,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/test-stats-metrics.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:121,1
    - Dst: i_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:123,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-stats-metrics.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 8
    argNames:
    - metric
    - sub_name
    - total_count
    - submetric_count
    - group_by_count
    - group_by_func
    - group_by_field
    - value_type
    argTypes:
    - struct metric*
    - char*
    - unsigned int
    - unsigned int
    - unsigned int
    - enum stats_metric_group_by_func
    - char*
    - enum metric_value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 131
    functionName: test_stats_metrics_group_by_check_one
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - array_count
    - test_assert
    - stats_dist_get_count
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void test_stats_metrics_group_by_check_one(const struct metric *metric,\n\t\t\t\t\t\t
      \ const char *sub_name,\n\t\t\t\t\t\t  unsigned int total_count,\n\t\t\t\t\t\t
      \ unsigned int submetric_count,\n\t\t\t\t\t\t  unsigned int group_by_count,\n\t\t\t\t\t\t
      \ enum stats_metric_group_by_func group_by_func,\n\t\t\t\t\t\t  const char *group_by_field,\n\t\t\t\t\t\t
      \ enum metric_value_type value_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/stats/test-stats-metrics.c:188,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/test-stats-metrics.c:188,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/stats/test-stats-metrics.c:197,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/stats/test-stats-metrics.c:198,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/stats/test-stats-metrics.c:198,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/stats/test-stats-metrics.c:199,1
    - Dst: test_stats_init
      Src: /src/dovecot/src/stats/test-stats-metrics.c:200,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-stats-metrics.c:204,1
    - Dst: event_add_category
      Src: /src/dovecot/src/stats/test-stats-metrics.c:205,1
    - Dst: event_set_name
      Src: /src/dovecot/src/stats/test-stats-metrics.c:206,1
    - Dst: event_add_str
      Src: /src/dovecot/src/stats/test-stats-metrics.c:207,1
    - Dst: event_add_str
      Src: /src/dovecot/src/stats/test-stats-metrics.c:208,1
    - Dst: test_event_send
      Src: /src/dovecot/src/stats/test-stats-metrics.c:209,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-stats-metrics.c:210,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:215,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-stats-metrics.c:215,1
    - Dst: stats_metrics_iterate_init
      Src: /src/dovecot/src/stats/test-stats-metrics.c:218,1
    - Dst: stats_metrics_iterate
      Src: /src/dovecot/src/stats/test-stats-metrics.c:219,1
    - Dst: stats_metrics_iterate_deinit
      Src: /src/dovecot/src/stats/test-stats-metrics.c:220,1
    - Dst: test_stats_metrics_group_by_check_one
      Src: /src/dovecot/src/stats/test-stats-metrics.c:222,1
    - Dst: array_idx
      Src: /src/dovecot/src/stats/test-stats-metrics.c:229,1
    - Dst: test_stats_metrics_group_by_check_one
      Src: /src/dovecot/src/stats/test-stats-metrics.c:233,1
    - Dst: array_idx
      Src: /src/dovecot/src/stats/test-stats-metrics.c:241,1
    - Dst: test_stats_metrics_group_by_check_one
      Src: /src/dovecot/src/stats/test-stats-metrics.c:245,1
    - Dst: test_stats_deinit
      Src: /src/dovecot/src/stats/test-stats-metrics.c:252,1
    - Dst: test_end
      Src: /src/dovecot/src/stats/test-stats-metrics.c:253,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - test
    - group_idx
    argTypes:
    - struct discrete_test*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 254
    functionName: test_stats_metrics_group_by_discrete_real
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - event_unref
    - array_idx
    - event_set_name
    - stats_metrics_iterate
    - t_strdup_printf
    - get_stats_dist_field
    - test_assert
    - test_stats_deinit
    - t_strarray_join
    - test_end
    - event_add_str
    - stats_metrics_iterate_init
    - event_create
    - test_event_send
    - stats_metrics_iterate_deinit
    - test_stats_metrics_group_by_check_one
    - test_stats_init
    - t_strsplit
    - event_add_category
    - t_strconcat
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_stats_metrics_group_by_discrete_real(const struct discrete_test
      *test,\n\t\t\t\t\t  unsigned int group_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/stats/test-stats-metrics.c:260,1
    - Dst: test_stats_metrics_group_by_discrete_real
      Src: /src/dovecot/src/stats/test-stats-metrics.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 256
    functionDepth: 3
    functionLinenumber: 256
    functionLinenumberEnd: 262
    functionName: test_stats_metrics_group_by_discrete
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - test_stats_metrics_group_by_discrete_real
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_stats_metrics_group_by_discrete(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/stats/test-stats-metrics.c:478,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/test-stats-metrics.c:478,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/stats/test-stats-metrics.c:490,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/stats/test-stats-metrics.c:491,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/stats/test-stats-metrics.c:491,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/stats/test-stats-metrics.c:492,1
    - Dst: test_stats_init
      Src: /src/dovecot/src/stats/test-stats-metrics.c:493,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-stats-metrics.c:498,1
    - Dst: event_add_category
      Src: /src/dovecot/src/stats/test-stats-metrics.c:499,1
    - Dst: event_set_name
      Src: /src/dovecot/src/stats/test-stats-metrics.c:500,1
    - Dst: event_add_str
      Src: /src/dovecot/src/stats/test-stats-metrics.c:501,1
    - Dst: event_add_int
      Src: /src/dovecot/src/stats/test-stats-metrics.c:502,1
    - Dst: test_event_send
      Src: /src/dovecot/src/stats/test-stats-metrics.c:503,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-stats-metrics.c:504,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:508,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-stats-metrics.c:508,1
    - Dst: stats_metrics_iterate_init
      Src: /src/dovecot/src/stats/test-stats-metrics.c:511,1
    - Dst: stats_metrics_iterate
      Src: /src/dovecot/src/stats/test-stats-metrics.c:512,1
    - Dst: stats_metrics_iterate_deinit
      Src: /src/dovecot/src/stats/test-stats-metrics.c:513,1
    - Dst: test_stats_metrics_group_by_check_one
      Src: /src/dovecot/src/stats/test-stats-metrics.c:515,1
    - Dst: array_idx
      Src: /src/dovecot/src/stats/test-stats-metrics.c:520,1
    - Dst: test_stats_metrics_group_by_check_one
      Src: /src/dovecot/src/stats/test-stats-metrics.c:521,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:531,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:533,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:534,1
    - Dst: array_idx
      Src: /src/dovecot/src/stats/test-stats-metrics.c:538,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:545,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-stats-metrics.c:546,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/test-stats-metrics.c:552,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/test-stats-metrics.c:555,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/test-stats-metrics.c:558,1
    - Dst: test_stats_metrics_group_by_check_one
      Src: /src/dovecot/src/stats/test-stats-metrics.c:563,1
    - Dst: test_stats_deinit
      Src: /src/dovecot/src/stats/test-stats-metrics.c:570,1
    - Dst: test_end
      Src: /src/dovecot/src/stats/test-stats-metrics.c:571,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 2
    argNames:
    - test
    - group_idx
    argTypes:
    - struct quantized_test*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 472
    functionDepth: 2
    functionLinenumber: 472
    functionLinenumberEnd: 572
    functionName: test_stats_metrics_group_by_quantized_real
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - event_unref
    - array_idx
    - event_set_name
    - stats_metrics_iterate
    - t_strdup_printf
    - get_stats_dist_field
    - test_assert
    - event_add_int
    - test_stats_deinit
    - t_strarray_join
    - test_end
    - event_add_str
    - stats_metrics_iterate_init
    - event_create
    - test_event_send
    - stats_metrics_iterate_deinit
    - test_stats_metrics_group_by_check_one
    - test_stats_init
    - t_strsplit
    - event_add_category
    - t_strconcat
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_stats_metrics_group_by_quantized_real(const struct quantized_test
      *test,\n\t\t\t\t\t   unsigned int group_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/stats/test-stats-metrics.c:578,1
    - Dst: test_stats_metrics_group_by_quantized_real
      Src: /src/dovecot/src/stats/test-stats-metrics.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 574
    functionDepth: 3
    functionLinenumber: 574
    functionLinenumberEnd: 580
    functionName: test_stats_metrics_group_by_quantized
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - test_stats_metrics_group_by_quantized_real
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_stats_metrics_group_by_quantized(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/stats/test-stats-metrics.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 594
    functionName: main
    functionSourceFile: /src/dovecot/src/stats/test-stats-metrics.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_root_init
      Src: /src/dovecot/src/stats/test-stats-common.c:30,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/stats/test-stats-common.c:33,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/stats/test-stats-common.c:34,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-stats-common.c:38,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/stats/test-stats-common.c:39,1
    - Dst: settings_get
      Src: /src/dovecot/src/stats/test-stats-common.c:40,1
    - Dst: i_fatal
      Src: /src/dovecot/src/stats/test-stats-common.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - settings
    - event_r
    argTypes:
    - char*[]
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 44
    functionName: read_settings
    functionSourceFile: /src/dovecot/src/stats/test-stats-common.c
    functionUses: 0
    functionsReached:
    - event_create
    - i_fatal
    - event_set_ptr
    - settings_root_init
    - t_split_key_value_eq
    - settings_root_override
    - settings_get
    linkageType: ''
    returnType: struct stats_settings
    signature: "struct stats_settings *read_settings(const char *const settings[],\n\t\t\t\t\t
      \   struct event **event_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_register_callback
      Src: /src/dovecot/src/stats/test-stats-common.c:51,1
    - Dst: stats_event_categories_init
      Src: /src/dovecot/src/stats/test-stats-common.c:55,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/stats/test-stats-common.c:56,1
    - Dst: time
      Src: /src/dovecot/src/stats/test-stats-common.c:57,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/stats/test-stats-common.c:59,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/stats/test-stats-common.c:60,1
    - Dst: stats_event_category_register
      Src: /src/dovecot/src/stats/test-stats-common.c:62,1
    - Dst: stats_event_category_register
      Src: /src/dovecot/src/stats/test-stats-common.c:63,1
    - Dst: read_settings
      Src: /src/dovecot/src/stats/test-stats-common.c:67,1
    - Dst: stats_metrics_init
      Src: /src/dovecot/src/stats/test-stats-common.c:68,1
    - Dst: i_fatal
      Src: /src/dovecot/src/stats/test-stats-common.c:69,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-stats-common.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - settings_blob
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 71
    functionName: test_stats_init
    functionSourceFile: /src/dovecot/src/stats/test-stats-common.c
    functionUses: 4
    functionsReached:
    - pool_alloconly_create
    - read_settings
    - event_unref
    - settings_info_register
    - event_register_callback
    - stats_metrics_init
    - i_fatal
    - stats_event_categories_init
    - stats_event_category_register
    - time
    linkageType: ''
    returnType: void
    signature: void test_stats_init(const char *const settings_blob[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_deinit
      Src: /src/dovecot/src/stats/test-stats-common.c:75,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/test-stats-common.c:76,1
    - Dst: settings_root_deinit
      Src: /src/dovecot/src/stats/test-stats-common.c:77,1
    - Dst: stats_event_categories_deinit
      Src: /src/dovecot/src/stats/test-stats-common.c:78,1
    - Dst: pool_unref
      Src: /src/dovecot/src/stats/test-stats-common.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: test_stats_deinit
    functionSourceFile: /src/dovecot/src/stats/test-stats-common.c
    functionUses: 4
    functionsReached:
    - settings_root_deinit
    - settings_free
    - stats_metrics_deinit
    - pool_unref
    - stats_event_categories_deinit
    linkageType: ''
    returnType: void
    signature: void test_stats_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: usleep
      Src: /src/dovecot/src/stats/test-stats-common.c:88,1
    - Dst: event_send
      Src: /src/dovecot/src/stats/test-stats-common.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: test_event_send
    functionSourceFile: /src/dovecot/src/stats/test-stats-common.c
    functionUses: 4
    functionsReached:
    - event_send
    - usleep
    linkageType: ''
    returnType: void
    signature: void test_event_send(struct event *event)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_iterate_init
      Src: /src/dovecot/src/stats/test-stats-common.c:95,1
    - Dst: stats_metrics_iterate
      Src: /src/dovecot/src/stats/test-stats-common.c:97,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/test-stats-common.c:98,1
    - Dst: i_assert
      Src: /src/dovecot/src/stats/test-stats-common.c:102,1
    - Dst: stats_metrics_iterate_deinit
      Src: /src/dovecot/src/stats/test-stats-common.c:104,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/stats/test-stats-common.c:108,1
    - Dst: stats_dist_get_sum
      Src: /src/dovecot/src/stats/test-stats-common.c:110,1
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/test-stats-common.c:112,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - metric_name
    - field
    argTypes:
    - char*
    - enum stats_dist_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 114
    functionName: get_stats_dist_field
    functionSourceFile: /src/dovecot/src/stats/test-stats-common.c
    functionUses: 4
    functionsReached:
    - stats_metrics_iterate_init
    - strcmp
    - stats_dist_get_sum
    - i_unreached
    - stats_metrics_iterate_deinit
    - stats_metrics_iterate
    - stats_dist_get_count
    - i_assert
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t get_stats_dist_field(const char *metric_name, enum stats_dist_field
      field)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_connection_get_type
      Src: /src/dovecot/src/stats/main.c:25,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/main.c:27,1
    - Dst: client_http_create
      Src: /src/dovecot/src/stats/main.c:28,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/main.c:29,1
    - Dst: client_writer_create
      Src: /src/dovecot/src/stats/main.c:30,1
    - Dst: client_reader_create
      Src: /src/dovecot/src/stats/main.c:32,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/stats/main.c:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 34
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/stats/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - client_reader_create
    - client_writer_create
    - master_service_connection_get_type
    - client_http_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: stats_die
    functionSourceFile: /src/dovecot/src/stats/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stats_die(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/stats/main.c:43,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/stats/main.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: main_preinit
    functionSourceFile: /src/dovecot/src/stats/main.c
    functionUses: 0
    functionsReached:
    - restrict_access_by_env
    - restrict_access_allow_coredumps
    linkageType: ''
    returnType: void
    signature: void main_preinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/stats/main.c:52,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/stats/main.c:52,1
    - Dst: stats_metrics_init
      Src: /src/dovecot/src/stats/main.c:56,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/stats/main.c:56,1
    - Dst: i_fatal
      Src: /src/dovecot/src/stats/main.c:58,1
    - Dst: stats_event_categories_init
      Src: /src/dovecot/src/stats/main.c:59,1
    - Dst: client_readers_init
      Src: /src/dovecot/src/stats/main.c:60,1
    - Dst: client_writers_init
      Src: /src/dovecot/src/stats/main.c:61,1
    - Dst: client_http_init
      Src: /src/dovecot/src/stats/main.c:62,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/stats/main.c:62,1
    - Dst: stats_services_init
      Src: /src/dovecot/src/stats/main.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 64
    functionName: main_init
    functionSourceFile: /src/dovecot/src/stats/main.c
    functionUses: 1
    functionsReached:
    - client_http_init
    - stats_metrics_init
    - i_fatal
    - client_readers_init
    - master_service_get_event
    - stats_event_categories_init
    - client_writers_init
    - stats_services_init
    - settings_get_or_fatal
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_services_deinit
      Src: /src/dovecot/src/stats/main.c:68,1
    - Dst: client_readers_deinit
      Src: /src/dovecot/src/stats/main.c:69,1
    - Dst: client_writers_deinit
      Src: /src/dovecot/src/stats/main.c:70,1
    - Dst: client_http_deinit
      Src: /src/dovecot/src/stats/main.c:71,1
    - Dst: stats_event_categories_deinit
      Src: /src/dovecot/src/stats/main.c:72,1
    - Dst: stats_metrics_deinit
      Src: /src/dovecot/src/stats/main.c:73,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/main.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/stats/main.c
    functionUses: 1
    functionsReached:
    - client_readers_deinit
    - stats_services_deinit
    - client_http_deinit
    - stats_metrics_deinit
    - settings_free
    - client_writers_deinit
    - stats_event_categories_deinit
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/stats/main.c:86,1
    - Dst: master_getopt
      Src: /src/dovecot/src/stats/main.c:88,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/stats/main.c:91,1
    - Dst: i_fatal
      Src: /src/dovecot/src/stats/main.c:92,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/stats/main.c:93,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/stats/main.c:94,1
    - Dst: main_preinit
      Src: /src/dovecot/src/stats/main.c:96,1
    - Dst: main_init
      Src: /src/dovecot/src/stats/main.c:98,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/stats/main.c:99,1
    - Dst: master_service_run
      Src: /src/dovecot/src/stats/main.c:100,1
    - Dst: main_deinit
      Src: /src/dovecot/src/stats/main.c:101,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/stats/main.c:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 104
    functionName: main
    functionSourceFile: /src/dovecot/src/stats/main.c
    functionUses: 0
    functionsReached:
    - master_service_set_die_callback
    - main_init
    - master_service_run
    - i_fatal
    - main_deinit
    - master_service_init_finish
    - main_preinit
    - master_getopt
    - master_service_init
    - master_service_deinit
    - master_service_init_log
    - master_service_settings_read_simple
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/event-exporter-fmt.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - time
    argTypes:
    - string_t*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 13
    functionName: event_export_helper_fmt_unix_time
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt.c
    functionUses: 1
    functionsReached:
    - str_printfa
    linkageType: ''
    returnType: void
    signature: "void event_export_helper_fmt_unix_time(string_t *dest,\n\t\t\t\t       const
      struct timeval *time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gmtime
      Src: /src/dovecot/src/stats/event-exporter-fmt.c:20,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/event-exporter-fmt.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dest
    - time
    argTypes:
    - string_t*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 26
    functionName: event_export_helper_fmt_rfc3339_time
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt.c
    functionUses: 1
    functionsReached:
    - gmtime
    - str_printfa
    linkageType: ''
    returnType: void
    signature: "void event_export_helper_fmt_rfc3339_time(string_t *dest,\n\t\t\t\t\t
      \ const struct timeval *time)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_categories_iterate_init
      Src: /src/dovecot/src/stats/event-exporter-fmt.c:37,1
    - Dst: event_categories_iterate
      Src: /src/dovecot/src/stats/event-exporter-fmt.c:38,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt.c:40,1
    - Dst: append
      Src: /src/dovecot/src/stats/event-exporter-fmt.c:42,1
    - Dst: event_categories_iterate_deinit
      Src: /src/dovecot/src/stats/event-exporter-fmt.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - dest
    - event
    - separator
    argTypes:
    - string_t*
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 47
    functionName: event_export_helper_fmt_categories
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt.c
    functionUses: 0
    functionsReached:
    - event_categories_iterate_deinit
    - append
    - event_categories_iterate
    - str_append
    - event_categories_iterate_init
    linkageType: ''
    returnType: void
    signature: "void event_export_helper_fmt_categories(string_t *dest,\n\t\t\t\t
      \       const struct event *event,\n\t\t\t\t\tvoid (*append)(string_t *, const
      char *),\n\t\t\t\t\tconst char *separator)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/stats/event-exporter.c:20,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/event-exporter.c:21,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 25
    functionName: event_exporter_transport_find
    functionSourceFile: /src/dovecot/src/stats/event-exporter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void event_exporter_transport_find(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/event-exporter.c:31,1
    - Dst: struct event_exporter*::transport::reopen
      Src: /src/dovecot/src/stats/event-exporter.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: event_exporters_reopen
    functionSourceFile: /src/dovecot/src/stats/event-exporter.c
    functionUses: 0
    functionsReached:
    - struct event_exporter*::transport::reopen
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void event_exporters_reopen(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/event-exporter.c:41,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/event-exporter.c:44,1
    - Dst: struct event_exporter*::transport::deinit
      Src: /src/dovecot/src/stats/event-exporter.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 48
    functionName: event_exporters_deinit
    functionSourceFile: /src/dovecot/src/stats/event-exporter.c
    functionUses: 0
    functionsReached:
    - struct event_exporter*::transport::deinit
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void event_exporters_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/stats/event-exporter.c:58,1
    - Dst: struct event_exporter_transport*::init
      Src: /src/dovecot/src/stats/event-exporter.c:59,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/event-exporter.c:62,1
    - Dst: i_array_init
      Src: /src/dovecot/src/stats/event-exporter.c:63,1
    - Dst: array_push_back
      Src: /src/dovecot/src/stats/event-exporter.c:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - transport
    - pool
    - event
    - exporter_r
    - error_r
    argTypes:
    - struct event_exporter_transport*
    - pool_t
    - struct event*
    - struct event_exporter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 67
    functionName: event_exporter_init
    functionSourceFile: /src/dovecot/src/stats/event-exporter.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - p_new
    - array_push_back
    - array_is_created
    - struct event_exporter_transport*::init
    linkageType: ''
    returnType: int
    signature: "int event_exporter_init(const struct event_exporter_transport *transport,\n\t\t\tpool_t
      pool, struct event *event,\n\t\t\tstruct event_exporter **exporter_r,\n\t\t\tconst
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: DEF
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: DEF
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 136
    functionName: DEF
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: DEF
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 227
    functionName: DEF
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-settings.c:274,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-settings.c:276,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-settings.c:278,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:281,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-settings.c:286,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-settings.c:288,1
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-settings.c:291,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:296,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 302
    functionName: stats_exporter_settings_check
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool stats_exporter_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/stats/stats-settings.c:329,1
    - Dst: pow
      Src: /src/dovecot/src/stats/stats-settings.c:334,1
    - Dst: pow
      Src: /src/dovecot/src/stats/stats-settings.c:335,1
    - Dst: pow
      Src: /src/dovecot/src/stats/stats-settings.c:340,1
    - Dst: pow
      Src: /src/dovecot/src/stats/stats-settings.c:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - group_by
    - pool
    - base
    - min
    - max
    argTypes:
    - struct stats_metric_settings_group_by*
    - pool_t
    - unsigned int
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 343
    functionName: metrics_group_by_exponential_init
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - pow
    - p_new
    linkageType: ''
    returnType: void
    signature: "void metrics_group_by_exponential_init(struct stats_metric_settings_group_by
      *group_by,\n\t\t\t\t       pool_t pool, unsigned int base,\n\t\t\t\t       unsigned
      int min, unsigned int max)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/stats/stats-settings.c:360,1
    - Dst: p_new
      Src: /src/dovecot/src/stats/stats-settings.c:366,1
    - Dst: I_MIN
      Src: /src/dovecot/src/stats/stats-settings.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 5
    argNames:
    - group_by
    - pool
    - min
    - max
    - step
    argTypes:
    - struct stats_metric_settings_group_by*
    - pool_t
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 382
    functionName: metrics_group_by_linear_init
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - i_assert
    - p_new
    linkageType: ''
    returnType: void
    signature: "void metrics_group_by_linear_init(struct stats_metric_settings_group_by
      *group_by,\n\t\t\t\t  pool_t pool, uint64_t min, uint64_t max,\n\t\t\t\t  uint64_t
      step)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/stats/stats-settings.c:394,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/stats/stats-settings.c:395,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/stats/stats-settings.c:396,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/stats/stats-settings.c:397,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:398,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:404,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:410,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 6
    argNames:
    - func
    - params
    - min_r
    - max_r
    - other_r
    - error_r
    argTypes:
    - char*
    - char**
    - intmax_t*
    - intmax_t*
    - intmax_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 421
    functionName: parse_metric_group_by_common
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - str_array_length
    - t_strdup_printf
    - str_to_intmax
    linkageType: ''
    returnType: bool
    signature: "bool parse_metric_group_by_common(const char *func,\n\t\t\t\t\t const
      char *const *params,\n\t\t\t\t\t intmax_t *min_r,\n\t\t\t\t\t intmax_t *max_r,\n\t\t\t\t\t
      intmax_t *other_r,\n\t\t\t\t\t const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_metric_group_by_common
      Src: /src/dovecot/src/stats/stats-settings.c:428,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:432,1
    - Dst: metrics_group_by_exponential_init
      Src: /src/dovecot/src/stats/stats-settings.c:438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - pool
    - group_by
    - params
    - error_r
    argTypes:
    - pool_t
    - struct stats_metric_settings_group_by*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 423
    functionDepth: 2
    functionLinenumber: 423
    functionLinenumberEnd: 440
    functionName: parse_metric_group_by_exp
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - parse_metric_group_by_common
    - t_strdup_printf
    - metrics_group_by_exponential_init
    linkageType: ''
    returnType: bool
    signature: "bool parse_metric_group_by_exp(pool_t pool, struct stats_metric_settings_group_by
      *group_by,\n\t\t\t\t      const char *const *params, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_metric_group_by_common
      Src: /src/dovecot/src/stats/stats-settings.c:447,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:451,1
    - Dst: metrics_group_by_linear_init
      Src: /src/dovecot/src/stats/stats-settings.c:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - pool
    - group_by
    - params
    - error_r
    argTypes:
    - pool_t
    - struct stats_metric_settings_group_by*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 459
    functionName: parse_metric_group_by_lin
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - metrics_group_by_linear_init
    - parse_metric_group_by_common
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool parse_metric_group_by_lin(pool_t pool, struct stats_metric_settings_group_by
      *group_by,\n\t\t\t\t      const char *const *params, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/stats-settings.c:472,1
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/stats-settings.c:483,1
    - Dst: var_expand
      Src: /src/dovecot/src/stats/stats-settings.c:484,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:485,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - pool
    - group_by
    - params
    - error_r
    argTypes:
    - pool_t
    - struct stats_metric_settings_group_by*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 491
    functionName: parse_metric_group_by_mod
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - t_strdup_printf
    - p_strdup
    - var_expand
    linkageType: ''
    returnType: bool
    signature: "bool parse_metric_group_by_mod(pool_t pool,\n\t\t\t  struct stats_metric_settings_group_by
      *group_by,\n\t\t\t  const char *const *params, const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/stats/stats-settings.c:497,1
    - Dst: i_zero
      Src: /src/dovecot/src/stats/stats-settings.c:499,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/stats-settings.c:503,1
    - Dst: str_array_length
      Src: /src/dovecot/src/stats/stats-settings.c:503,1
    - Dst: i_zero
      Src: /src/dovecot/src/stats/stats-settings.c:510,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/stats/stats-settings.c:513,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/stats-settings.c:514,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-settings.c:519,1
    - Dst: parse_metric_group_by_mod
      Src: /src/dovecot/src/stats/stats-settings.c:522,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-settings.c:524,1
    - Dst: parse_metric_group_by_exp
      Src: /src/dovecot/src/stats/stats-settings.c:526,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-settings.c:528,1
    - Dst: parse_metric_group_by_lin
      Src: /src/dovecot/src/stats/stats-settings.c:530,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:533,1
    - Dst: array_push_back
      Src: /src/dovecot/src/stats/stats-settings.c:538,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 4
    argNames:
    - pool
    - group_by_str
    - group_by_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 493
    functionDepth: 3
    functionLinenumber: 493
    functionLinenumberEnd: 542
    functionName: parse_legacy_metric_group_by
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - p_strdup
    - p_array_init
    - array_push_back
    - str_array_length
    - t_strdup_printf
    - parse_metric_group_by_mod
    - parse_metric_group_by_lin
    - t_strsplit
    - parse_metric_group_by_exp
    - t_strsplit_spaces
    linkageType: ''
    returnType: bool
    signature: "bool parse_legacy_metric_group_by(pool_t pool, const char *group_by_str,\n\t\t\t\t
      \ ARRAY_TYPE(stats_metric_settings_group_by) *group_by_r,\n\t\t\t\t  const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:553,1
    - Dst: event_filter_create_fragment
      Src: /src/dovecot/src/stats/stats-settings.c:558,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/stats/stats-settings.c:559,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - _set
    - pool
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 563
    functionName: stats_metric_settings_check
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - event_filter_create_fragment
    - event_filter_parse
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: bool stats_metric_settings_check(void *_set, pool_t pool, const char
      **error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-settings.c:575,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-settings.c:579,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/stats/stats-settings.c:580,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:585,1
    - Dst: t_strdup
      Src: /src/dovecot/src/stats/stats-settings.c:591,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/stats-settings.c:592,1
    - Dst: settings_try_get_filter
      Src: /src/dovecot/src/stats/stats-settings.c:597,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:604,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-settings.c:610,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/stats-settings.c:616,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - event
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct event*
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 620
    functionName: stats_settings_ext_check
    functionSourceFile: /src/dovecot/src/stats/stats-settings.c
    functionUses: 0
    functionsReached:
    - settings_try_get_filter
    - array_foreach_elem
    - t_strdup
    - t_strdup_printf
    - settings_free
    - settings_get_filter
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool stats_settings_ext_check(struct event *event, void *_set,\n\t\t\t
      pool_t pool ATTR_UNUSED, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/stats/client-http.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - http_sreq
    argTypes:
    - void*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: stats_http_server_handle_request
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 0
    functionsReached:
    - http_server_request_fail
    linkageType: ''
    returnType: void
    signature: "void stats_http_server_handle_request(void *context ATTR_UNUSED,\n\t\t\t\t
      struct http_server_request *http_sreq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/stats/client-http.c:62,1
    - Dst: http_server_connection_create
      Src: /src/dovecot/src/stats/client-http.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 67
    functionName: client_http_create
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 1
    functionsReached:
    - http_server_connection_create
    - i_new
    linkageType: ''
    returnType: void
    signature: void client_http_create(struct master_service_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/stats/client-http.c:71,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/stats/client-http.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct stats_http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: stats_http_client_destroy
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 0
    functionsReached:
    - i_free
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void stats_http_client_destroy(struct stats_http_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_http_client_destroy
      Src: /src/dovecot/src/stats/client-http.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - context
    - ATTR_UNUSED
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 92
    functionName: stats_http_server_connection_destroy
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 0
    functionsReached:
    - stats_http_client_destroy
    linkageType: ''
    returnType: void
    signature: "void stats_http_server_connection_destroy(void *context,\n\t\t\t\t
      \    const char *reason ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct stats_http_resource*::callback
      Src: /src/dovecot/src/stats/client-http.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - res
    - req
    - sub_path
    argTypes:
    - struct stats_http_resource*
    - struct http_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: stats_http_resource_callback
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 0
    functionsReached:
    - struct stats_http_resource*::callback
    linkageType: ''
    returnType: void
    signature: "void stats_http_resource_callback(struct stats_http_resource *res,\n\t\t\t
      \    struct http_server_request *req,\n\t\t\t     const char *sub_path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/stats/client-http.c:116,1
    - Dst: p_new
      Src: /src/dovecot/src/stats/client-http.c:117,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/client-http.c:119,1
    - Dst: http_server_resource_create
      Src: /src/dovecot/src/stats/client-http.c:123,1
    - Dst: http_server_resource_add_location
      Src: /src/dovecot/src/stats/client-http.c:125,1
    - Dst: pool_unref
      Src: /src/dovecot/src/stats/client-http.c:127,1
    - Dst: array_append
      Src: /src/dovecot/src/stats/client-http.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - path
    - title
    - callback
    - context
    argTypes:
    - char*
    - char*
    - stats_http_resource_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 129
    functionName: stats_http_resource_add
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - http_server_resource_add_location
    - pool_unref
    - http_server_resource_create
    - array_append
    linkageType: ''
    returnType: void
    signature: "void stats_http_resource_add(const char *path, const char *title,\n\t\t\t
      \    stats_http_resource_callback_t *callback,\n\t\t\t     void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_url_init_authority_from
      Src: /src/dovecot/src/stats/client-http.c:141,1
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/client-http.c:143,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:145,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:146,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:147,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:148,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:149,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:150,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:151,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:152,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:153,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:155,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:156,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/client-http.c:158,1
    - Dst: http_server_resource_get_path
      Src: /src/dovecot/src/stats/client-http.c:163,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:165,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:166,1
    - Dst: http_url_create
      Src: /src/dovecot/src/stats/client-http.c:166,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:167,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:168,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:169,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:172,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:173,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:174,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-http.c:175,1
    - Dst: http_server_response_set_payload_data
      Src: /src/dovecot/src/stats/client-http.c:177,1
    - Dst: str_data
      Src: /src/dovecot/src/stats/client-http.c:178,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/client-http.c:178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 2
    argNames:
    - resp
    - hreq
    argTypes:
    - struct http_server_response*
    - struct http_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 179
    functionName: stats_http_resource_root_make_response
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - array_foreach_elem
    - str_len
    - http_server_resource_get_path
    - http_server_response_set_payload_data
    - http_url_create
    - str_append
    - http_url_init_authority_from
    linkageType: ''
    returnType: void
    signature: "void stats_http_resource_root_make_response(struct http_server_response
      *resp,\n\t\t\t\t       const struct http_request *hreq)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/stats/client-http.c:186,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-http.c:189,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/stats/client-http.c:190,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/stats/client-http.c:191,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/stats/client-http.c:192,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-http.c:195,1
    - Dst: http_server_request_fail_bad_method
      Src: /src/dovecot/src/stats/client-http.c:196,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/stats/client-http.c:200,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/stats/client-http.c:204,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/stats/client-http.c:205,1
    - Dst: stats_http_resource_root_make_response
      Src: /src/dovecot/src/stats/client-http.c:208,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/stats/client-http.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - req
    - sub_path
    argTypes:
    - void*
    - struct http_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 211
    functionName: stats_http_resource_root_request
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 0
    functionsReached:
    - strcmp
    - http_server_request_fail
    - http_server_response_create
    - http_server_request_fail_bad_method
    - stats_http_resource_root_make_response
    - http_server_response_add_header
    - http_server_request_get
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: "void stats_http_resource_root_request(void *context ATTR_UNUSED,\n\t\t\t\t
      struct http_server_request *req,\n\t\t\t\t const char *sub_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/stats/client-http.c:220,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/client-http.c:222,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/stats/client-http.c:223,1
    - Dst: http_server_init_auto
      Src: /src/dovecot/src/stats/client-http.c:224,1
    - Dst: i_fatal
      Src: /src/dovecot/src/stats/client-http.c:225,1
    - Dst: stats_http_resource_add
      Src: /src/dovecot/src/stats/client-http.c:226,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/client-http.c:228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - parent_event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 229
    functionName: client_http_init
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - event_create
    - event_unref
    - i_fatal
    - settings_event_add_filter_name
    - http_server_init_auto
    - stats_http_resource_add
    linkageType: ''
    returnType: void
    signature: void client_http_init(struct event *parent_event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_deinit
      Src: /src/dovecot/src/stats/client-http.c:233,1
    - Dst: array_free
      Src: /src/dovecot/src/stats/client-http.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: client_http_deinit
    functionSourceFile: /src/dovecot/src/stats/client-http.c
    functionUses: 1
    functionsReached:
    - http_server_deinit
    - array_free
    linkageType: ''
    returnType: void
    signature: void client_http_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/stats/test-client-reader.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 20
    functionName: test_reader_server_destroy
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void test_reader_server_destroy(struct connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_event
      Src: /src/dovecot/src/stats/test-client-reader.c:39,1
    - Dst: stats_metrics_get_event_filter
      Src: /src/dovecot/src/stats/test-client-reader.c:41,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/stats/test-client-reader.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - event
    - ATTR_UNUSED
    - ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event*
    - enum event_callback_type
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 45
    functionName: test_stats_callback
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - event_filter_match
    - stats_metrics_get_event_filter
    - stats_metrics_event
    linkageType: ''
    returnType: bool
    signature: "bool test_stats_callback(struct event *event,\n\t\t\t enum event_callback_type
      type ATTR_UNUSED,\n\t\t\t struct failure_context *ctx, const char *fmt ATTR_UNUSED,\n\t\t\t
      va_list args ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-client-reader.c:60,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-client-reader.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 64
    functionName: test_reader_server_input_args
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    linkageType: ''
    returnType: int
    signature: "int test_reader_server_input_args(struct connection *conn ATTR_UNUSED,\n\t\t\t\t\t
      const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-reader.c:70,1
    - Dst: socketpair
      Src: /src/dovecot/src/stats/test-client-reader.c:70,1
    - Dst: i_new
      Src: /src/dovecot/src/stats/test-client-reader.c:72,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/stats/test-client-reader.c:74,1
    - Dst: client_reader_create
      Src: /src/dovecot/src/stats/test-client-reader.c:76,1
    - Dst: connection_init_client_fd
      Src: /src/dovecot/src/stats/test-client-reader.c:77,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/stats/test-client-reader.c:78,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/stats/test-client-reader.c:80,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/stats/test-client-reader.c:81,1
    - Dst: i_free
      Src: /src/dovecot/src/stats/test-client-reader.c:82,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/stats/test-client-reader.c:85,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/stats/test-client-reader.c:86,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/stats/test-client-reader.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 89
    functionName: test_dump_metrics
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - io_loop_handler_run
    - client_reader_create
    - i_free
    - io_loop_destroy
    - io_loop_create
    - i_new
    - test_assert
    - io_loop_set_running
    - socketpair
    - o_stream_nsend_str
    - connection_init_client_fd
    - connection_deinit
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void test_dump_metrics(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/stats/test-client-reader.c:98,1
    - Dst: test_stats_init
      Src: /src/dovecot/src/stats/test-client-reader.c:101,1
    - Dst: client_readers_init
      Src: /src/dovecot/src/stats/test-client-reader.c:103,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/stats/test-client-reader.c:104,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-client-reader.c:107,1
    - Dst: event_add_category
      Src: /src/dovecot/src/stats/test-client-reader.c:108,1
    - Dst: event_set_name
      Src: /src/dovecot/src/stats/test-client-reader.c:109,1
    - Dst: test_event_send
      Src: /src/dovecot/src/stats/test-client-reader.c:110,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-client-reader.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-reader.c:113,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-client-reader.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-reader.c:114,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-client-reader.c:114,1
    - Dst: test_dump_metrics
      Src: /src/dovecot/src/stats/test-client-reader.c:117,1
    - Dst: test_stats_deinit
      Src: /src/dovecot/src/stats/test-client-reader.c:119,1
    - Dst: client_readers_deinit
      Src: /src/dovecot/src/stats/test-client-reader.c:121,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/stats/test-client-reader.c:122,1
    - Dst: test_end
      Src: /src/dovecot/src/stats/test-client-reader.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 125
    functionName: test_client_reader
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - test_stats_deinit
    - event_create
    - connection_list_init
    - event_unref
    - test_event_send
    - test_stats_init
    - client_readers_deinit
    - event_set_name
    - get_stats_dist_field
    - client_readers_init
    - test_end
    - test_dump_metrics
    - test_assert
    - connection_list_deinit
    - event_add_category
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_client_reader(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/stats/test-client-reader.c:145,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-client-reader.c:153,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-client-reader.c:154,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-client-reader.c:156,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-client-reader.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 160
    functionName: test_reader_server_input_args_group_by
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - container_of
    - test_assert_strcmp
    linkageType: ''
    returnType: int
    signature: "int test_reader_server_input_args_group_by(struct connection *conn,\n\t\t\t\t
      \      const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-reader.c:166,1
    - Dst: socketpair
      Src: /src/dovecot/src/stats/test-client-reader.c:166,1
    - Dst: i_new
      Src: /src/dovecot/src/stats/test-client-reader.c:168,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/stats/test-client-reader.c:170,1
    - Dst: client_reader_create
      Src: /src/dovecot/src/stats/test-client-reader.c:172,1
    - Dst: connection_init_client_fd
      Src: /src/dovecot/src/stats/test-client-reader.c:173,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/stats/test-client-reader.c:174,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/stats/test-client-reader.c:176,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/stats/test-client-reader.c:177,1
    - Dst: i_free
      Src: /src/dovecot/src/stats/test-client-reader.c:178,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/stats/test-client-reader.c:180,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/stats/test-client-reader.c:181,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/stats/test-client-reader.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 184
    functionName: test_dump_metrics_group_by
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - io_loop_handler_run
    - client_reader_create
    - i_free
    - io_loop_destroy
    - io_loop_create
    - i_new
    - test_assert
    - io_loop_set_running
    - socketpair
    - o_stream_nsend_str
    - connection_init_client_fd
    - connection_deinit
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void test_dump_metrics_group_by(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/stats/test-client-reader.c:193,1
    - Dst: test_stats_init
      Src: /src/dovecot/src/stats/test-client-reader.c:196,1
    - Dst: client_readers_init
      Src: /src/dovecot/src/stats/test-client-reader.c:198,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/stats/test-client-reader.c:199,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-client-reader.c:202,1
    - Dst: event_add_category
      Src: /src/dovecot/src/stats/test-client-reader.c:203,1
    - Dst: event_set_name
      Src: /src/dovecot/src/stats/test-client-reader.c:204,1
    - Dst: event_add_str
      Src: /src/dovecot/src/stats/test-client-reader.c:205,1
    - Dst: test_event_send
      Src: /src/dovecot/src/stats/test-client-reader.c:206,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-client-reader.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-reader.c:209,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-client-reader.c:209,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-reader.c:210,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-client-reader.c:210,1
    - Dst: test_dump_metrics_group_by
      Src: /src/dovecot/src/stats/test-client-reader.c:213,1
    - Dst: test_stats_deinit
      Src: /src/dovecot/src/stats/test-client-reader.c:215,1
    - Dst: client_readers_deinit
      Src: /src/dovecot/src/stats/test-client-reader.c:217,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/stats/test-client-reader.c:218,1
    - Dst: test_end
      Src: /src/dovecot/src/stats/test-client-reader.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 186
    functionDepth: 3
    functionLinenumber: 186
    functionLinenumberEnd: 221
    functionName: test_client_reader_group_by
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - test_stats_deinit
    - event_create
    - connection_list_init
    - event_unref
    - test_event_send
    - test_stats_init
    - client_readers_deinit
    - event_set_name
    - get_stats_dist_field
    - client_readers_init
    - test_dump_metrics_group_by
    - test_end
    - test_assert
    - connection_list_deinit
    - event_add_str
    - event_add_category
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_client_reader_group_by(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/stats/test-client-reader.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 242
    functionName: main
    functionSourceFile: /src/dovecot/src/stats/test-client-reader.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_exporter_transport_find
      Src: /src/dovecot/src/stats/stats-metrics.c:41,1
    - Dst: i_assert
      Src: /src/dovecot/src/stats/stats-metrics.c:42,1
    - Dst: event_exporter_init
      Src: /src/dovecot/src/stats/stats-metrics.c:44,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/stats-metrics.c:47,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:55,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:58,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:61,1
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-metrics.c:65,1
    - Dst: array_push_back
      Src: /src/dovecot/src/stats/stats-metrics.c:70,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - metrics
    - event
    - set
    - error_r
    argTypes:
    - struct stats_metrics*
    - struct event*
    - struct stats_exporter_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 72
    functionName: stats_exporters_add_set
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - i_unreached
    - event_exporter_init
    - array_push_back
    - event_exporter_transport_find
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int stats_exporters_add_set(struct stats_metrics *metrics,\n\t\t\t\t
      \  struct event *event,\n\t\t\t\t   const struct stats_exporter_settings *set,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_filter
      Src: /src/dovecot/src/stats/stats-metrics.c:81,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/stats-metrics.c:90,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/stats/stats-metrics.c:91,1
    - Dst: stats_exporters_add_set
      Src: /src/dovecot/src/stats/stats-metrics.c:93,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/stats-metrics.c:94,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/stats-metrics.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - metrics
    - filter_name
    - error_r
    argTypes:
    - struct stats_metrics*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 98
    functionName: stats_exporters_add_filter
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - settings_free
    - settings_event_add_list_filter_name
    - settings_get_filter
    - stats_exporters_add_set
    linkageType: ''
    returnType: int
    signature: "int stats_exporters_add_filter(struct stats_metrics *metrics,\n\t\t\t\t
      \     const char *filter_name,\n\t\t\t\t      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/stats/stats-metrics.c:105,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/stats-metrics.c:106,1
    - Dst: pool_ref
      Src: /src/dovecot/src/stats/stats-metrics.c:108,1
    - Dst: stats_dist_init
      Src: /src/dovecot/src/stats/stats-metrics.c:109,1
    - Dst: str_array_length
      Src: /src/dovecot/src/stats/stats-metrics.c:110,1
    - Dst: p_new
      Src: /src/dovecot/src/stats/stats-metrics.c:112,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/stats-metrics.c:115,1
    - Dst: stats_dist_init
      Src: /src/dovecot/src/stats/stats-metrics.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - pool
    - name
    - set
    - fields
    argTypes:
    - pool_t
    - char*
    - struct stats_metric_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 120
    functionName: stats_metric_alloc
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - pool_ref
    - str_array_length
    - stats_dist_init
    linkageType: ''
    returnType: struct metric
    signature: "struct metric *\nstats_metric_alloc(pool_t pool, const char *name,\n\t\t
      \  const struct stats_metric_settings *set,\n\t\t   const char *const *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:128,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - metrics
    - name
    argTypes:
    - struct stats_metrics*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 133
    functionName: stats_metrics_exporter_find
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct event_exporter
    signature: "struct event_exporter *\nstats_metrics_exporter_find(struct stats_metrics
      *metrics,\n\t\t\t    const char *name)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_exporter_find
      Src: /src/dovecot/src/stats/stats-metrics.c:146,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-metrics.c:148,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/stats/stats-metrics.c:156,1
    - Dst: stats_metric_alloc
      Src: /src/dovecot/src/stats/stats-metrics.c:157,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-metrics.c:159,1
    - Dst: array_get
      Src: /src/dovecot/src/stats/stats-metrics.c:160,1
    - Dst: array_push_back
      Src: /src/dovecot/src/stats/stats-metrics.c:162,1
    - Dst: event_filter_merge_with_context
      Src: /src/dovecot/src/stats/stats-metrics.c:164,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/stats/stats-metrics.c:179,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:181,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:185,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:187,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:189,1
    - Dst: i_warning
      Src: /src/dovecot/src/stats/stats-metrics.c:192,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 4
    argNames:
    - metrics
    - set
    - group_by
    - error_r
    argTypes:
    - struct stats_metrics*
    - struct stats_metric_settings*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 195
    functionName: stats_metrics_add_set
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - stats_metrics_exporter_find
    - array_push_back
    - array_get
    - t_strdup_printf
    - i_warning
    - settings_boollist_get
    - stats_metric_alloc
    - array_is_created
    - event_filter_merge_with_context
    linkageType: ''
    returnType: int
    signature: "int stats_metrics_add_set(struct stats_metrics *metrics,\n\t\t\t\t
      const struct stats_metric_settings *set,\n\t\t\t\t ARRAY_TYPE(stats_metric_settings_group_by)
      *group_by,\n\t\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct stats_metric_group_by_method_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: stats_metrics_group_by_exponential_check
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool stats_metrics_group_by_exponential_check(const struct stats_metric_group_by_method_settings
      *set,\n\t\t\t\t\t const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-metrics.c:217,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-metrics.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct stats_metric_group_by_method_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 232
    functionName: stats_metrics_group_by_linear_check
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool stats_metrics_group_by_linear_check(const struct stats_metric_group_by_method_settings
      *set,\n\t\t\t\t    const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/stats/stats-metrics.c:241,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:245,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/stats/stats-metrics.c:248,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:249,1
    - Dst: stats_metrics_group_by_exponential_check
      Src: /src/dovecot/src/stats/stats-metrics.c:250,1
    - Dst: metrics_group_by_exponential_init
      Src: /src/dovecot/src/stats/stats-metrics.c:252,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:256,1
    - Dst: stats_metrics_group_by_linear_check
      Src: /src/dovecot/src/stats/stats-metrics.c:257,1
    - Dst: metrics_group_by_linear_init
      Src: /src/dovecot/src/stats/stats-metrics.c:259,1
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-metrics.c:262,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/stats-metrics.c:265,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - event
    - pool
    - group_by
    - error_r
    argTypes:
    - struct event*
    - pool_t
    - struct stats_metric_settings_group_by*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 267
    functionName: stats_metrics_get_group_by_method
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - metrics_group_by_linear_init
    - p_strdup_empty
    - stats_metrics_group_by_exponential_check
    - i_unreached
    - settings_free
    - settings_get
    - metrics_group_by_exponential_init
    - stats_metrics_group_by_linear_check
    linkageType: ''
    returnType: int
    signature: "int stats_metrics_get_group_by_method(struct event *event, pool_t
      pool,\n\t\t\t\t  struct stats_metric_settings_group_by *group_by,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/stats/stats-metrics.c:278,1
    - Dst: i_zero
      Src: /src/dovecot/src/stats/stats-metrics.c:279,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/stats-metrics.c:282,1
    - Dst: array_count
      Src: /src/dovecot/src/stats/stats-metrics.c:282,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:283,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/stats/stats-metrics.c:284,1
    - Dst: array_append_space
      Src: /src/dovecot/src/stats/stats-metrics.c:291,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/stats-metrics.c:292,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/stats/stats-metrics.c:295,1
    - Dst: array_count
      Src: /src/dovecot/src/stats/stats-metrics.c:298,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/stats-metrics.c:302,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/stats/stats-metrics.c:303,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/stats-metrics.c:305,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/stats/stats-metrics.c:306,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:308,1
    - Dst: stats_metrics_get_group_by_method
      Src: /src/dovecot/src/stats/stats-metrics.c:309,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/stats-metrics.c:311,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/stats-metrics.c:312,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/stats-metrics.c:314,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-metrics.c:316,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - event
    - set
    - group_by_r
    - error_r
    argTypes:
    - struct event*
    - struct stats_metric_settings*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 269
    functionDepth: 3
    functionLinenumber: 269
    functionLinenumberEnd: 322
    functionName: stats_metrics_get_group_by
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - event_create
    - array_append_space
    - p_array_init
    - event_unref
    - array_foreach_elem
    - stats_metrics_get_group_by_method
    - t_strdup_printf
    - settings_free
    - array_is_empty
    - array_count
    - array_idx_elem
    - settings_event_add_list_filter_name
    - settings_get_filter
    linkageType: ''
    returnType: int
    signature: "int stats_metrics_get_group_by(struct event *event,\n\t\t\t   const
      struct stats_metric_settings *set,\n\t\t\t   ARRAY_TYPE(stats_metric_settings_group_by)
      *group_by_r,\n\t\t\t   const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_filter
      Src: /src/dovecot/src/stats/stats-metrics.c:331,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/stats/stats-metrics.c:340,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/stats-metrics.c:341,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/stats/stats-metrics.c:342,1
    - Dst: stats_metrics_get_group_by
      Src: /src/dovecot/src/stats/stats-metrics.c:344,1
    - Dst: stats_metrics_add_set
      Src: /src/dovecot/src/stats/stats-metrics.c:346,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/stats-metrics.c:347,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/stats-metrics.c:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - metrics
    - filter_name
    - error_r
    argTypes:
    - struct stats_metrics*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 324
    functionDepth: 4
    functionLinenumber: 324
    functionLinenumberEnd: 351
    functionName: stats_metrics_add_filter
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - settings_free
    - stats_metrics_get_group_by
    - settings_event_add_list_filter_name
    - settings_get_filter
    - ARRAY_TYPE
    - stats_metrics_add_set
    linkageType: ''
    returnType: int
    signature: "int stats_metrics_add_filter(struct stats_metrics *metrics,\n\t\t\t\t
      \   const char *filter_name,\n\t\t\t\t    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/stats/stats-metrics.c:358,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:359,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/stats/stats-metrics.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - metrics
    - name
    - idx_r
    argTypes:
    - struct stats_metrics*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 365
    functionName: stats_metrics_find
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: struct metric
    signature: "struct metric *\nstats_metrics_find(struct stats_metrics *metrics,\n\t\t
      \  const char *name, unsigned int *idx_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-metrics.c:376,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:380,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:381,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - metrics
    - name
    argTypes:
    - struct stats_metrics*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 388
    functionName: stats_metrics_check_for_exporter
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool stats_metrics_check_for_exporter(struct stats_metrics *metrics,
      const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_find
      Src: /src/dovecot/src/stats/stats-metrics.c:396,1
    - Dst: stats_metrics_check_for_exporter
      Src: /src/dovecot/src/stats/stats-metrics.c:401,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-metrics.c:402,1
    - Dst: stats_metrics_add_set
      Src: /src/dovecot/src/stats/stats-metrics.c:407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - metrics
    - set
    - group_by
    - error_r
    argTypes:
    - struct stats_metrics*
    - struct stats_metric_settings*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 410
    functionName: stats_metrics_add_dynamic
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - stats_metrics_find
    - stats_metrics_check_for_exporter
    - stats_metrics_add_set
    linkageType: ''
    returnType: bool
    signature: "bool stats_metrics_add_dynamic(struct stats_metrics *metrics,\n\t\t\t
      \      const struct stats_metric_settings *set,\n\t\t\t       ARRAY_TYPE(stats_metric_settings_group_by)
      *group_by,\n\t\t\t       const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_find
      Src: /src/dovecot/src/stats/stats-metrics.c:417,1
    - Dst: array_delete
      Src: /src/dovecot/src/stats/stats-metrics.c:419,1
    - Dst: event_filter_remove_queries_with_context
      Src: /src/dovecot/src/stats/stats-metrics.c:420,1
    - Dst: stats_metric_free
      Src: /src/dovecot/src/stats/stats-metrics.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - metrics
    - name
    argTypes:
    - struct stats_metrics*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 412
    functionDepth: 2
    functionLinenumber: 412
    functionLinenumberEnd: 424
    functionName: stats_metrics_remove_dynamic
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - stats_metric_free
    - array_delete
    - stats_metrics_find
    - event_filter_remove_queries_with_context
    linkageType: ''
    returnType: bool
    signature: "bool stats_metrics_remove_dynamic(struct stats_metrics *metrics,\n\t\t\t\t
      \ const char *name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-metrics.c:434,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/stats-metrics.c:435,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/stats-metrics.c:437,1
    - Dst: array_count
      Src: /src/dovecot/src/stats/stats-metrics.c:438,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:439,1
    - Dst: stats_exporters_add_filter
      Src: /src/dovecot/src/stats/stats-metrics.c:440,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-metrics.c:447,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/stats-metrics.c:448,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/stats-metrics.c:452,1
    - Dst: array_count
      Src: /src/dovecot/src/stats/stats-metrics.c:453,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:454,1
    - Dst: stats_metrics_add_filter
      Src: /src/dovecot/src/stats/stats-metrics.c:456,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/stats/stats-metrics.c:457,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - metrics
    - set
    - error_r
    argTypes:
    - struct stats_metrics*
    - struct stats_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 426
    functionDepth: 5
    functionLinenumber: 426
    functionLinenumberEnd: 461
    functionName: stats_metrics_add_from_settings
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - stats_metrics_add_filter
    - T_END_PASS_STR_IF
    - p_array_init
    - array_foreach_elem
    - stats_exporters_add_filter
    - array_count
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int stats_metrics_add_from_settings(struct stats_metrics *metrics,\n\t\t\t\tconst
      struct stats_settings *set,\n\t\t\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/stats/stats-metrics.c:470,1
    - Dst: p_new
      Src: /src/dovecot/src/stats/stats-metrics.c:472,1
    - Dst: event_ref
      Src: /src/dovecot/src/stats/stats-metrics.c:475,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/stats/stats-metrics.c:476,1
    - Dst: stats_metrics_add_from_settings
      Src: /src/dovecot/src/stats/stats-metrics.c:477,1
    - Dst: stats_metrics_deinit
      Src: /src/dovecot/src/stats/stats-metrics.c:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - event
    - set
    - metrics_r
    - error_r
    argTypes:
    - struct event*
    - struct stats_settings*
    - struct stats_metrics**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 465
    functionDepth: 6
    functionLinenumber: 465
    functionLinenumberEnd: 483
    functionName: stats_metrics_init
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - p_new
    - stats_metrics_add_from_settings
    - event_ref
    - stats_metrics_deinit
    - event_filter_create
    linkageType: ''
    returnType: int
    signature: "int stats_metrics_init(struct event *event,\n\t\t       const struct
      stats_settings *set,\n\t\t       struct stats_metrics **metrics_r, const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/stats/stats-metrics.c:488,1
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/stats/stats-metrics.c:490,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/stats-metrics.c:491,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-metrics.c:493,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:495,1
    - Dst: stats_metric_free
      Src: /src/dovecot/src/stats/stats-metrics.c:496,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - metric
    argTypes:
    - struct metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 497
    functionName: stats_metric_free
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 2
    functionsReached:
    - array_foreach_elem
    - stats_metric_free
    - settings_free
    - stats_dist_deinit
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void stats_metric_free(struct metric *metric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_exporters_deinit
      Src: /src/dovecot/src/stats/stats-metrics.c:506,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:508,1
    - Dst: stats_metric_free
      Src: /src/dovecot/src/stats/stats-metrics.c:509,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/stats/stats-metrics.c:510,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/stats-metrics.c:511,1
    - Dst: pool_unref
      Src: /src/dovecot/src/stats/stats-metrics.c:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - _metrics
    argTypes:
    - struct stats_metrics**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 499
    functionDepth: 2
    functionLinenumber: 499
    functionLinenumberEnd: 513
    functionName: stats_metrics_deinit
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 3
    functionsReached:
    - event_unref
    - array_foreach_elem
    - stats_metric_free
    - pool_unref
    - event_exporters_deinit
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: void stats_metrics_deinit(struct stats_metrics **_metrics)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_reset
      Src: /src/dovecot/src/stats/stats-metrics.c:518,1
    - Dst: stats_dist_reset
      Src: /src/dovecot/src/stats/stats-metrics.c:520,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-metrics.c:521,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:523,1
    - Dst: stats_metric_reset
      Src: /src/dovecot/src/stats/stats-metrics.c:524,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - metric
    argTypes:
    - struct metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 525
    functionName: stats_metric_reset
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - stats_metric_reset
    - stats_dist_reset
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void stats_metric_reset(struct metric *metric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:531,1
    - Dst: stats_metric_reset
      Src: /src/dovecot/src/stats/stats-metrics.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - metrics
    argTypes:
    - struct stats_metrics*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 527
    functionDepth: 2
    functionLinenumber: 527
    functionLinenumberEnd: 533
    functionName: stats_metrics_reset
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - stats_metric_reset
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void stats_metrics_reset(struct stats_metrics *metrics)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - metrics
    argTypes:
    - struct stats_metrics*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 539
    functionName: stats_metrics_get_event_filter
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct event_filter
    signature: 'struct event_filter *

      stats_metrics_get_event_filter(struct stats_metrics *metrics)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:548,1
    - Dst: memcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:551,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/stats/stats-metrics.c:560,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - metric
    - value
    argTypes:
    - struct metric*
    - struct metric_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 571
    functionName: stats_metric_find_sub_metric
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - net_ip_compare
    - memcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct metric
    signature: "struct metric *\nstats_metric_find_sub_metric(struct metric *metric,\n\t\t\t
      \    const struct metric_value *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/stats/stats-metrics.c:577,1
    - Dst: t_array_init
      Src: /src/dovecot/src/stats/stats-metrics.c:578,1
    - Dst: array_append
      Src: /src/dovecot/src/stats/stats-metrics.c:580,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/stats/stats-metrics.c:581,1
    - Dst: stats_metric_alloc
      Src: /src/dovecot/src/stats/stats-metrics.c:582,1
    - Dst: array_idx
      Src: /src/dovecot/src/stats/stats-metrics.c:583,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/stats-metrics.c:585,1
    - Dst: str_sanitize_utf8
      Src: /src/dovecot/src/stats/stats-metrics.c:585,1
    - Dst: strlen
      Src: /src/dovecot/src/stats/stats-metrics.c:587,1
    - Dst: array_append
      Src: /src/dovecot/src/stats/stats-metrics.c:588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - metric
    - name
    - pool
    argTypes:
    - struct metric*
    - char*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 590
    functionName: stats_metric_sub_metric_alloc
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_idx
    - str_sanitize_utf8
    - strlen
    - stats_metric_alloc
    - t_array_init
    - ARRAY_TYPE
    - array_append_zero
    - array_append
    linkageType: ''
    returnType: struct metric
    signature: 'struct metric *

      stats_metric_sub_metric_alloc(struct metric *metric, const char *name, pool_t
      pool)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/stats-metrics.c:609,1
    - Dst: var_expand
      Src: /src/dovecot/src/stats/stats-metrics.c:610,1
    - Dst: i_error
      Src: /src/dovecot/src/stats/stats-metrics.c:611,1
    - Dst: str_c
      Src: /src/dovecot/src/stats/stats-metrics.c:614,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - group_by
    - value
    argTypes:
    - struct stats_metric_settings_group_by*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 615
    functionName: label_by_mod_str
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - var_expand
    - i_error
    linkageType: ''
    returnType: char
    signature: "char *\nlabel_by_mod_str(const struct stats_metric_settings_group_by
      *group_by,\n\t\t const char *value)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: label_by_mod_str
      Src: /src/dovecot/src/stats/stats-metrics.c:627,1
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/stats/stats-metrics.c:630,1
    - Dst: strlen
      Src: /src/dovecot/src/stats/stats-metrics.c:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 3
    argNames:
    - field
    - group_by
    - value_r
    argTypes:
    - struct event_field*
    - struct stats_metric_settings_group_by*
    - struct metric_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 617
    functionDepth: 2
    functionLinenumber: 617
    functionLinenumberEnd: 645
    functionName: stats_metric_group_by_discrete
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - label_by_mod_str
    - strlen
    - sha1_get_digest
    linkageType: ''
    returnType: bool
    signature: "bool stats_metric_group_by_discrete(const struct event_field *field,\n\t\t\t
      \      const struct stats_metric_settings_group_by *group_by,\n\t\t\t       struct
      metric_value *value_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/stats/stats-metrics.c:677,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - field
    - value_r
    - group_by
    argTypes:
    - struct event_field*
    - struct metric_value*
    - struct stats_metric_settings_group_by*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 679
    functionName: stats_metric_group_by_quantized
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: bool
    signature: "bool stats_metric_group_by_quantized(const struct event_field *field,\n\t\t\t\tstruct
      metric_value *value_r,\n\t\t\t\tconst struct stats_metric_settings_group_by
      *group_by)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-metrics.c:696,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-metrics.c:702,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-metrics.c:704,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/stats-metrics.c:706,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - field
    - group_by
    - bucket_index
    argTypes:
    - struct event_field*
    - struct stats_metric_settings_group_by*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 710
    functionName: stats_metric_group_by_quantized_label
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - i_unreached
    linkageType: ''
    returnType: char
    signature: "char *\nstats_metric_group_by_quantized_label(const struct event_field
      *field,\n\t\t\t\t      const struct stats_metric_settings_group_by *group_by,\n\t\t\t\t
      \     const size_t bucket_index)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stats_metric_group_by_discrete
      Src: /src/dovecot/src/stats/stats-metrics.c:719,1
    - Dst: stats_metric_group_by_quantized
      Src: /src/dovecot/src/stats/stats-metrics.c:723,1
    - Dst: i_panic
      Src: /src/dovecot/src/stats/stats-metrics.c:728,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - field
    - group_by
    - value_r
    argTypes:
    - struct event_field*
    - struct stats_metric_settings_group_by*
    - struct metric_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 712
    functionDepth: 3
    functionLinenumber: 712
    functionLinenumberEnd: 729
    functionName: stats_metric_group_by_get_value
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - i_panic
    - stats_metric_group_by_discrete
    - stats_metric_group_by_quantized
    linkageType: ''
    returnType: bool
    signature: "bool stats_metric_group_by_get_value(const struct event_field *field,\n\t\t\t\tconst
      struct stats_metric_settings_group_by *group_by,\n\t\t\t\tstruct metric_value
      *value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-metrics.c:738,1
    - Dst: stats_metric_group_by_quantized_label
      Src: /src/dovecot/src/stats/stats-metrics.c:740,1
    - Dst: i_panic
      Src: /src/dovecot/src/stats/stats-metrics.c:744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - field
    - group_by
    - value
    argTypes:
    - struct event_field*
    - struct stats_metric_settings_group_by*
    - struct metric_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 745
    functionName: stats_metric_group_by_get_label
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - i_panic
    - stats_metric_group_by_quantized_label
    - i_unreached
    linkageType: ''
    returnType: char
    signature: "char *\nstats_metric_group_by_get_label(const struct event_field *field,\n\t\t\t\tconst
      struct stats_metric_settings_group_by *group_by,\n\t\t\t\tconst struct metric_value
      *value)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: label_by_mod_str
      Src: /src/dovecot/src/stats/stats-metrics.c:754,1
    - Dst: dec2str
      Src: /src/dovecot/src/stats/stats-metrics.c:756,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/stats/stats-metrics.c:758,1
    - Dst: stats_metric_group_by_get_label
      Src: /src/dovecot/src/stats/stats-metrics.c:760,1
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-metrics.c:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - field
    - group_by
    - value
    argTypes:
    - struct event_field*
    - struct stats_metric_settings_group_by*
    - struct metric_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 747
    functionDepth: 3
    functionLinenumber: 747
    functionLinenumberEnd: 763
    functionName: stats_metric_group_by_value_label
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - dec2str
    - i_unreached
    - label_by_mod_str
    - stats_metric_group_by_get_label
    - net_ip2addr
    linkageType: ''
    returnType: char
    signature: "char *\nstats_metric_group_by_value_label(const struct event_field
      *field,\n\t\t\t\t  const struct stats_metric_settings_group_by *group_by,\n\t\t\t\t
      \ const struct metric_value *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_metric_find_sub_metric
      Src: /src/dovecot/src/stats/stats-metrics.c:773,1
    - Dst: stats_metric_group_by_value_label
      Src: /src/dovecot/src/stats/stats-metrics.c:779,1
    - Dst: stats_metric_sub_metric_alloc
      Src: /src/dovecot/src/stats/stats-metrics.c:781,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - metric
    - field
    - value
    - pool
    argTypes:
    - struct metric*
    - struct event_field*
    - struct metric_value*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 765
    functionDepth: 4
    functionLinenumber: 765
    functionLinenumberEnd: 783
    functionName: stats_metric_get_sub_metric
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - stats_metric_sub_metric_alloc
    - stats_metric_group_by_value_label
    - stats_metric_find_sub_metric
    linkageType: ''
    returnType: struct metric
    signature: "struct metric *\nstats_metric_get_sub_metric(struct metric *metric,\n\t\t\t
      \   const struct event_field *field,\n\t\t\t    const struct metric_value *value,\n\t\t\t
      \   pool_t pool)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stats_metric_group_by_get_value
      Src: /src/dovecot/src/stats/stats-metrics.c:802,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-metrics.c:807,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/stats-metrics.c:808,1
    - Dst: stats_metric_get_sub_metric
      Src: /src/dovecot/src/stats/stats-metrics.c:809,1
    - Dst: stats_metric_event
      Src: /src/dovecot/src/stats/stats-metrics.c:813,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - metric
    - event
    - field
    - pool
    argTypes:
    - struct metric*
    - struct event*
    - struct event_field*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 795
    functionDepth: 5
    functionLinenumber: 795
    functionLinenumberEnd: 814
    functionName: stats_metric_group_by_field
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - stats_metric_event
    - stats_metric_get_sub_metric
    - stats_metric_group_by_get_value
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void stats_metric_group_by_field(struct metric *metric, struct event
      *event,\n\t\t\t    const struct event_field *field, pool_t pool)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/stats/stats-metrics.c:824,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:827,1
    - Dst: array_push_back
      Src: /src/dovecot/src/stats/stats-metrics.c:828,1
    - Dst: stats_event_get_strlist
      Src: /src/dovecot/src/stats/stats-metrics.c:830,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/stats/stats-metrics.c:830,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - event
    - name
    - strings
    argTypes:
    - struct event*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 831
    functionName: stats_event_get_strlist
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 1
    functionsReached:
    - array_push_back
    - array_foreach_elem
    - stats_event_get_strlist
    - event_get_parent
    - event_find_field_nonrecursive
    linkageType: ''
    returnType: void
    signature: "void stats_event_get_strlist(struct event *event, const char *name,\n\t\t\tARRAY_TYPE(const_string)
      *strings)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/stats/stats-metrics.c:837,1
    - Dst: stats_metric_group_by_field
      Src: /src/dovecot/src/stats/stats-metrics.c:848,1
    - Dst: stats_metric_group_by_field
      Src: /src/dovecot/src/stats/stats-metrics.c:851,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/stats/stats-metrics.c:856,1
    - Dst: t_array_init
      Src: /src/dovecot/src/stats/stats-metrics.c:858,1
    - Dst: stats_event_get_strlist
      Src: /src/dovecot/src/stats/stats-metrics.c:859,1
    - Dst: stats_event_get_strlist
      Src: /src/dovecot/src/stats/stats-metrics.c:861,1
    - Dst: event_get_global
      Src: /src/dovecot/src/stats/stats-metrics.c:861,1
    - Dst: array_sort
      Src: /src/dovecot/src/stats/stats-metrics.c:870,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-metrics.c:871,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-metrics.c:873,1
    - Dst: stats_metric_group_by_field
      Src: /src/dovecot/src/stats/stats-metrics.c:875,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - metric
    - event
    - pool
    argTypes:
    - struct metric*
    - struct event*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 833
    functionDepth: 6
    functionLinenumber: 833
    functionLinenumberEnd: 880
    functionName: stats_metric_group_by
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - event_get_global
    - array_foreach_elem
    - stats_event_get_strlist
    - event_find_field_recursive
    - t_array_init
    - ARRAY_TYPE
    - array_sort
    - stats_metric_group_by_field
    linkageType: ''
    returnType: void
    signature: void stats_metric_group_by(struct metric *metric, struct event *event,
      pool_t pool)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/stats/stats-metrics.c:887,1
    - Dst: stats_dist_add
      Src: /src/dovecot/src/stats/stats-metrics.c:907,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - event
    - fieldname
    - stats
    argTypes:
    - struct event*
    - char*
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 882
    functionDepth: 1
    functionLinenumber: 882
    functionLinenumberEnd: 908
    functionName: stats_metric_event_field
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - event_find_field_recursive
    - stats_dist_add
    linkageType: ''
    returnType: void
    signature: "void stats_metric_event_field(struct event *event, const char *fieldname,\n\t\t\t
      struct stats_dist *stats)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_metric_event_field
      Src: /src/dovecot/src/stats/stats-metrics.c:914,1
    - Dst: stats_metric_event_field
      Src: /src/dovecot/src/stats/stats-metrics.c:918,1
    - Dst: stats_metric_group_by
      Src: /src/dovecot/src/stats/stats-metrics.c:923,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - metric
    - event
    - pool
    argTypes:
    - struct metric*
    - struct event*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 910
    functionDepth: 7
    functionLinenumber: 910
    functionLinenumberEnd: 924
    functionName: stats_metric_event
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 1
    functionsReached:
    - stats_metric_group_by
    - stats_metric_event_field
    linkageType: ''
    returnType: void
    signature: void stats_metric_event(struct metric *metric, struct event *event,
      pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/stats/stats-metrics.c:933,1
    - Dst: event_flatten
      Src: /src/dovecot/src/stats/stats-metrics.c:935,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/stats/stats-metrics.c:940,1
    - Dst: struct event_exporter*::format
      Src: /src/dovecot/src/stats/stats-metrics.c:942,1
    - Dst: struct event_exporter*::transport::send
      Src: /src/dovecot/src/stats/stats-metrics.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - metric
    - oldevent
    argTypes:
    - struct metric*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 944
    functionName: stats_export_event
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 0
    functionsReached:
    - struct event_exporter*::format
    - event_flatten
    - t_buffer_create
    - struct event_exporter*::transport::send
    - i_assert
    linkageType: ''
    returnType: void
    signature: void stats_export_event(struct metric *metric, struct event *oldevent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_get_last_duration
      Src: /src/dovecot/src/stats/stats-metrics.c:959,1
    - Dst: event_add_int
      Src: /src/dovecot/src/stats/stats-metrics.c:960,1
    - Dst: event_filter_match_iter_init
      Src: /src/dovecot/src/stats/stats-metrics.c:963,1
    - Dst: event_filter_match_iter_next
      Src: /src/dovecot/src/stats/stats-metrics.c:964,1
    - Dst: stats_metric_event
      Src: /src/dovecot/src/stats/stats-metrics.c:966,1
    - Dst: stats_export_event
      Src: /src/dovecot/src/stats/stats-metrics.c:970,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - metrics
    - event
    - ctx
    argTypes:
    - struct stats_metrics*
    - struct event*
    - struct failure_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 949
    functionDepth: 8
    functionLinenumber: 949
    functionLinenumberEnd: 971
    functionName: stats_metrics_event
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 2
    functionsReached:
    - stats_metric_event
    - event_filter_match_iter_next
    - event_filter_match_iter_init
    - event_get_last_duration
    - stats_export_event
    - event_add_int
    linkageType: ''
    returnType: void
    signature: "void stats_metrics_event(struct stats_metrics *metrics, struct event
      *event,\n\t\t\t const struct failure_context *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/stats/stats-metrics.c:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - metrics
    argTypes:
    - struct stats_metrics*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 980
    functionDepth: 0
    functionLinenumber: 980
    functionLinenumberEnd: 988
    functionName: stats_metrics_iterate_init
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 3
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct stats_metrics_iter
    signature: 'struct stats_metrics_iter *

      stats_metrics_iterate_init(struct stats_metrics *metrics)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/stats/stats-metrics.c:995,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct stats_metrics_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 990
    functionDepth: 1
    functionLinenumber: 990
    functionLinenumberEnd: 999
    functionName: stats_metrics_iterate
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 3
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct metric
    signature: struct metric *stats_metrics_iterate(struct stats_metrics_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/stats/stats-metrics.c:1006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct stats_metrics_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 1001
    functionDepth: 1
    functionLinenumber: 1001
    functionLinenumberEnd: 1007
    functionName: stats_metrics_iterate_deinit
    functionSourceFile: /src/dovecot/src/stats/stats-metrics.c
    functionUses: 3
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void stats_metrics_iterate_deinit(struct stats_metrics_iter **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/stats/test-client-writer.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 16
    functionName: test_writer_server_destroy
    functionSourceFile: /src/dovecot/src/stats/test-client-writer.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void test_writer_server_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-client-writer.c:22,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/stats/test-client-writer.c:23,1
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/test-client-writer.c:25,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/stats/test-client-writer.c:26,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/test-client-writer.c:27,1
    - Dst: event_export
      Src: /src/dovecot/src/stats/test-client-writer.c:28,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/test-client-writer.c:29,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/test-client-writer.c:30,1
    - Dst: str_data
      Src: /src/dovecot/src/stats/test-client-writer.c:30,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/test-client-writer.c:30,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/test-client-writer.c:31,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/test-client-writer.c:32,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/test-client-writer.c:33,1
    - Dst: str_data
      Src: /src/dovecot/src/stats/test-client-writer.c:33,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/test-client-writer.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 36
    functionName: test_writer_server_input_args
    functionSourceFile: /src/dovecot/src/stats/test-client-writer.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - event_export
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - test_assert_strcmp
    - o_stream_nsend
    - str_truncate
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: "int test_writer_server_input_args(struct connection *conn,\n\t\t\t\t\t
      const char *const *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-writer.c:58,1
    - Dst: socketpair
      Src: /src/dovecot/src/stats/test-client-writer.c:58,1
    - Dst: i_new
      Src: /src/dovecot/src/stats/test-client-writer.c:60,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/stats/test-client-writer.c:62,1
    - Dst: client_writer_create
      Src: /src/dovecot/src/stats/test-client-writer.c:64,1
    - Dst: connection_init_client_fd
      Src: /src/dovecot/src/stats/test-client-writer.c:65,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/stats/test-client-writer.c:68,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/stats/test-client-writer.c:70,1
    - Dst: i_free
      Src: /src/dovecot/src/stats/test-client-writer.c:71,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/stats/test-client-writer.c:74,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/stats/test-client-writer.c:75,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/stats/test-client-writer.c:76,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/stats/test-client-writer.c:77,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/stats/test-client-writer.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 80
    functionName: test_write_one
    functionSourceFile: /src/dovecot/src/stats/test-client-writer.c
    functionUses: 0
    functionsReached:
    - io_loop_handler_run
    - i_free
    - io_loop_destroy
    - io_loop_create
    - client_writer_create
    - i_new
    - test_assert
    - io_loop_set_running
    - socketpair
    - connection_init_client_fd
    - connection_deinit
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void test_write_one(struct event *event ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_write_one
      Src: /src/dovecot/src/stats/test-client-writer.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - event
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event*
    - enum event_callback_type
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 98
    functionName: test_stats_callback
    functionSourceFile: /src/dovecot/src/stats/test-client-writer.c
    functionUses: 0
    functionsReached:
    - test_write_one
    linkageType: ''
    returnType: bool
    signature: "bool test_stats_callback(struct event *event,\n\t\t\t enum event_callback_type
      type ATTR_UNUSED,\n\t\t\t struct failure_context *ctx ATTR_UNUSED,\n\t\t\t const
      char *fmt ATTR_UNUSED,\n\t\t\t va_list args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/stats/test-client-writer.c:109,1
    - Dst: test_stats_init
      Src: /src/dovecot/src/stats/test-client-writer.c:112,1
    - Dst: client_writers_init
      Src: /src/dovecot/src/stats/test-client-writer.c:114,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/stats/test-client-writer.c:115,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/test-client-writer.c:118,1
    - Dst: event_add_category
      Src: /src/dovecot/src/stats/test-client-writer.c:119,1
    - Dst: event_set_name
      Src: /src/dovecot/src/stats/test-client-writer.c:120,1
    - Dst: test_event_send
      Src: /src/dovecot/src/stats/test-client-writer.c:121,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/test-client-writer.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-writer.c:124,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-client-writer.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/stats/test-client-writer.c:125,1
    - Dst: get_stats_dist_field
      Src: /src/dovecot/src/stats/test-client-writer.c:125,1
    - Dst: test_stats_deinit
      Src: /src/dovecot/src/stats/test-client-writer.c:127,1
    - Dst: client_writers_deinit
      Src: /src/dovecot/src/stats/test-client-writer.c:129,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/stats/test-client-writer.c:130,1
    - Dst: test_end
      Src: /src/dovecot/src/stats/test-client-writer.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 133
    functionName: test_client_writer
    functionSourceFile: /src/dovecot/src/stats/test-client-writer.c
    functionUses: 0
    functionsReached:
    - test_stats_deinit
    - event_create
    - connection_list_init
    - event_unref
    - test_event_send
    - test_stats_init
    - event_set_name
    - get_stats_dist_field
    - test_end
    - client_writers_init
    - test_assert
    - connection_list_deinit
    - client_writers_deinit
    - event_add_category
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_client_writer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/stats/test-client-writer.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 153
    functionName: main
    functionSourceFile: /src/dovecot/src/stats/test-client-writer.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: DEF
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-http-post.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:63,1
    - Dst: settings_get
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:64,1
    - Dst: http_client_init_auto
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - pool
    - event
    - exporter_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct event_exporter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: event_exporter_http_post_init
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-http-post.c
    functionUses: 0
    functionsReached:
    - settings_get
    - p_new
    - http_client_init_auto
    linkageType: ''
    returnType: int
    signature: "int event_exporter_http_post_init(pool_t pool, struct event *event,\n\t\t\t
      \     struct event_exporter **exporter_r,\n\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:77,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:80,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _exporter
    argTypes:
    - struct event_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 82
    functionName: event_exporter_http_post_deinit
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-http-post.c
    functionUses: 0
    functionsReached:
    - http_client_deinit
    - container_of
    - settings_free
    linkageType: ''
    returnType: void
    signature: void event_exporter_http_post_deinit(struct event_exporter *_exporter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_response_is_success
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:90,1
    - Dst: i_error
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:99,1
    - Dst: i_error
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - response
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 107
    functionName: response_fxn
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-http-post.c
    functionUses: 0
    functionsReached:
    - http_response_is_success
    - i_error
    linkageType: ''
    returnType: void
    signature: "void response_fxn(const struct http_response *response,\n\t\t\t void
      *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:114,1
    - Dst: http_client_request_url_str
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:118,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:121,1
    - Dst: http_client_request_set_payload_data
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:122,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/stats/event-exporter-transport-http-post.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _exporter
    - buf
    argTypes:
    - struct event_exporter*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 125
    functionName: event_exporter_http_post_send
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-http-post.c
    functionUses: 0
    functionsReached:
    - container_of
    - http_client_request_set_payload_data
    - http_client_request_url_str
    - http_client_request_add_header
    - http_client_request_submit
    linkageType: ''
    returnType: void
    signature: "void event_exporter_http_post_send(struct event_exporter *_exporter,\n\t\t\t
      \     const buffer_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_service_openmetrics_init
      Src: /src/dovecot/src/stats/stats-service.c:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 10
    functionName: stats_services_init
    functionSourceFile: /src/dovecot/src/stats/stats-service.c
    functionUses: 1
    functionsReached:
    - stats_service_openmetrics_init
    linkageType: ''
    returnType: void
    signature: void stats_services_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: stats_services_deinit
    functionSourceFile: /src/dovecot/src/stats/stats-service.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stats_services_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct metric*
    - struct event*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 12
    functionName: event_export_fmt_none
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void event_export_fmt_none(const struct metric *metric ATTR_UNUSED,\n\t\t\t
      \  struct event *event ATTR_UNUSED,\n\t\t\t   buffer_t *dest ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: DEF
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: DEF_MSECS
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_MSECS(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_finish
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:74,1
    - Dst: i_error
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:75,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:76,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:79,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct file_event_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 81
    functionName: exporter_file_close
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - i_error
    - o_stream_get_error
    - i_close_fd
    - o_stream_finish
    - o_stream_destroy
    linkageType: ''
    returnType: void
    signature: void exporter_file_close(struct file_event_exporter *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:86,1
    - Dst: exporter_file_close
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:88,1
    - Dst: i_free
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _exporter
    argTypes:
    - struct event_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 90
    functionName: event_exporter_file_deinit
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - exporter_file_close
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void event_exporter_file_deinit(struct event_exporter *_exporter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:99,1
    - Dst: settings_get
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:104,1
    - Dst: i_strdup
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:109,1
    - Dst: i_strdup
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:111,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - pool
    - event
    - unix_socket
    - exporter_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - bool
    - struct event_exporter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 117
    functionName: event_exporter_file_init_common
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - settings_get
    - p_new
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int event_exporter_file_init_common(pool_t pool, struct event *event,\n\t\t\t\tbool
      unix_socket,\n\t\t\t\tstruct event_exporter **exporter_r,\n\t\t\t\tconst char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_exporter_file_init_common
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - pool
    - event
    - exporter_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct event_exporter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: event_exporter_file_init
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - event_exporter_file_init_common
    linkageType: ''
    returnType: int
    signature: "int event_exporter_file_init(pool_t pool, struct event *event,\n\t\t\t
      struct event_exporter **exporter_r,\n\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_exporter_file_init_common
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - pool
    - event
    - exporter_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct event_exporter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: event_exporter_unix_init
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - event_exporter_file_init_common
    linkageType: ''
    returnType: int
    signature: "int event_exporter_unix_init(pool_t pool, struct event *event,\n\t\t\t
      struct event_exporter **exporter_r,\n\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:140,1
    - Dst: i_error
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:142,1
    - Dst: eacces_error_get_creating
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - func
    argTypes:
    - struct file_event_exporter*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: exporter_file_open_error
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - eacces_error_get_creating
    - i_error
    linkageType: ''
    returnType: void
    signature: void exporter_file_open_error(struct file_event_exporter *node, const
      char *func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_connect_unix_with_retries
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:148,1
    - Dst: exporter_file_open_error
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:152,1
    - Dst: o_stream_create_unix
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct file_event_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 157
    functionName: exporter_file_open_unix
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - net_connect_unix_with_retries
    - exporter_file_open_error
    - o_stream_create_unix
    linkageType: ''
    returnType: bool
    signature: bool exporter_file_open_unix(struct file_event_exporter *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:161,1
    - Dst: exporter_file_open_error
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:164,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct file_event_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 169
    functionName: exporter_file_open_plain
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - open
    - o_stream_create_fd_file
    - exporter_file_open_error
    linkageType: ''
    returnType: bool
    signature: bool exporter_file_open_plain(struct file_event_exporter *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:173,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:175,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:176,1
    - Dst: exporter_file_open_unix
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:178,1
    - Dst: exporter_file_open_plain
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:180,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:182,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct file_event_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 184
    functionName: exporter_file_open
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - exporter_file_open_unix
    - o_stream_set_name
    - i_close_fd
    - likely
    - exporter_file_open_plain
    - o_stream_destroy
    linkageType: ''
    returnType: bool
    signature: bool exporter_file_open(struct file_event_exporter *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:193,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:193,1
    - Dst: i_error
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:195,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:195,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:196,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - buf
    argTypes:
    - struct file_event_exporter*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 201
    functionName: event_exporter_file_write
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - i_error
    - o_stream_close
    - o_stream_get_error
    - o_stream_sendv
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void event_exporter_file_write(struct file_event_exporter *node,\n\t\t\t\t
      \     const buffer_t *buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:207,1
    - Dst: exporter_file_open
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:208,1
    - Dst: event_exporter_file_write
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _exporter
    - buf
    argTypes:
    - struct event_exporter*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 4
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: event_exporter_file_send
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - container_of
    - event_exporter_file_write
    - exporter_file_open
    linkageType: ''
    returnType: void
    signature: void event_exporter_file_send(struct event_exporter *_exporter, const
      buffer_t *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:216,1
    - Dst: exporter_file_close
      Src: /src/dovecot/src/stats/event-exporter-transport-file.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _exporter
    argTypes:
    - struct event_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 218
    functionName: event_exporter_file_reopen
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-file.c
    functionUses: 0
    functionsReached:
    - exporter_file_close
    - container_of
    linkageType: ''
    returnType: void
    signature: void event_exporter_file_reopen(struct event_exporter *_exporter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event_exporter*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 10
    functionName: event_exporter_drop_send
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-drop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void event_exporter_drop_send(struct event_exporter *exporter ATTR_UNUSED,\n\t\t\t
      const buffer_t *buf ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/stats/event-exporter-transport-log.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - pool
    - ATTR_UNUSED
    - exporter_r
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - struct event*
    - struct event_exporter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 19
    functionName: event_exporter_log_init
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-log.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: int
    signature: "int event_exporter_log_init(pool_t pool, struct event *event ATTR_UNUSED,\n\t\t\t\t
      \  struct event_exporter **exporter_r,\n\t\t\t\t   const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_info
      Src: /src/dovecot/src/stats/event-exporter-transport-log.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - buf
    argTypes:
    - struct event_exporter*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 26
    functionName: event_exporter_log_send
    functionSourceFile: /src/dovecot/src/stats/event-exporter-transport-log.c
    functionUses: 0
    functionsReached:
    - i_info
    linkageType: ''
    returnType: void
    signature: "void event_exporter_log_send(struct event_exporter *exporter ATTR_UNUSED,\n\t\t\tconst
      buffer_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/stats/client-reader.c:30,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/stats/client-reader.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 33
    functionName: client_reader_create
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 3
    functionsReached:
    - i_new
    - connection_init_server
    linkageType: ''
    returnType: void
    signature: void client_reader_create(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_deinit
      Src: /src/dovecot/src/stats/client-reader.c:37,1
    - Dst: i_free
      Src: /src/dovecot/src/stats/client-reader.c:38,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/stats/client-reader.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 41
    functionName: reader_client_destroy
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - i_free
    - connection_deinit
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void reader_client_destroy(struct connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/client-reader.c:49,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:50,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/client-reader.c:51,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/stats/client-reader.c:51,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:52,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/client-reader.c:53,1
    - Dst: stats_dist_get_sum
      Src: /src/dovecot/src/stats/client-reader.c:53,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:54,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/client-reader.c:55,1
    - Dst: stats_dist_get_min
      Src: /src/dovecot/src/stats/client-reader.c:55,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:56,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/client-reader.c:57,1
    - Dst: stats_dist_get_max
      Src: /src/dovecot/src/stats/client-reader.c:57,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:58,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/client-reader.c:59,1
    - Dst: stats_dist_get_avg
      Src: /src/dovecot/src/stats/client-reader.c:59,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:60,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/client-reader.c:61,1
    - Dst: stats_dist_get_median
      Src: /src/dovecot/src/stats/client-reader.c:61,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:62,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/client-reader.c:63,1
    - Dst: stats_dist_get_variance
      Src: /src/dovecot/src/stats/client-reader.c:63,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/client-reader.c:65,1
    - Dst: stats_dist_get_percentile
      Src: /src/dovecot/src/stats/client-reader.c:66,1
    - Dst: strtod
      Src: /src/dovecot/src/stats/client-reader.c:66,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - str
    - stats
    - fields
    argTypes:
    - string_t*
    - struct stats_dist*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 71
    functionName: reader_client_dump_stats
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_printfa
    - str_append_c
    - stats_dist_get_sum
    - stats_dist_get_avg
    - stats_dist_get_min
    - strtod
    - stats_dist_get_variance
    - stats_dist_get_median
    - stats_dist_get_percentile
    - stats_dist_get_count
    - stats_dist_get_max
    linkageType: ''
    returnType: void
    signature: "void reader_client_dump_stats(string_t *str, struct stats_dist *stats,\n\t\t\t\t
      \    const char *const *fields)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reader_client_dump_stats
      Src: /src/dovecot/src/stats/client-reader.c:76,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/client-reader.c:78,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/client-reader.c:79,1
    - Dst: reader_client_dump_stats
      Src: /src/dovecot/src/stats/client-reader.c:80,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/client-reader.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - str
    - metric
    - fields
    argTypes:
    - string_t*
    - struct metric*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 83
    functionName: reader_client_dump_metric
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - str_append_tabescaped
    - str_append_c
    - reader_client_dump_stats
    linkageType: ''
    returnType: void
    signature: "void reader_client_dump_metric(string_t *str, const struct metric
      *metric,\n\t\t\t\t      const char *const *fields)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/client-reader.c:94,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/client-reader.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - str
    - sub_name
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 100
    functionName: reader_client_append_sub_name
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void reader_client_append_sub_name(string_t *str, const char *sub_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/client-reader.c:108,1
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/client-reader.c:110,1
    - Dst: reader_client_append_sub_name
      Src: /src/dovecot/src/stats/client-reader.c:111,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/client-reader.c:112,1
    - Dst: array_foreach
      Src: /src/dovecot/src/stats/client-reader.c:115,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/client-reader.c:116,1
    - Dst: reader_client_append_sub_name
      Src: /src/dovecot/src/stats/client-reader.c:117,1
    - Dst: reader_client_dump_metric
      Src: /src/dovecot/src/stats/client-reader.c:119,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/client-reader.c:120,1
    - Dst: str_data
      Src: /src/dovecot/src/stats/client-reader.c:120,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/client-reader.c:120,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/client-reader.c:121,1
    - Dst: reader_client_dump_sub_metrics
      Src: /src/dovecot/src/stats/client-reader.c:122,1
    - Dst: str_c
      Src: /src/dovecot/src/stats/client-reader.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - output
    - metric
    - sub_name
    - fields
    argTypes:
    - struct ostream*
    - struct metric*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 125
    functionName: reader_client_dump_sub_metrics
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - reader_client_dump_sub_metrics
    - array_foreach
    - o_stream_nsend
    - reader_client_append_sub_name
    - str_truncate
    - array_is_created
    - reader_client_dump_metric
    linkageType: ''
    returnType: void
    signature: "void reader_client_dump_sub_metrics(struct ostream *output, const
      struct metric *metric,\n\t\t\t       const char *sub_name, const char *const
      *fields)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/stats/client-reader.c:133,1
    - Dst: stats_metrics_iterate_init
      Src: /src/dovecot/src/stats/client-reader.c:134,1
    - Dst: stats_metrics_iterate
      Src: /src/dovecot/src/stats/client-reader.c:135,1
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/client-reader.c:136,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/client-reader.c:137,1
    - Dst: reader_client_dump_metric
      Src: /src/dovecot/src/stats/client-reader.c:138,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/client-reader.c:139,1
    - Dst: str_data
      Src: /src/dovecot/src/stats/client-reader.c:139,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/client-reader.c:139,1
    - Dst: reader_client_dump_sub_metrics
      Src: /src/dovecot/src/stats/client-reader.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct reader_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 127
    functionDepth: 4
    functionLinenumber: 127
    functionLinenumberEnd: 142
    functionName: reader_client_input_dump
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - stats_metrics_iterate_init
    - t_str_new
    - str_data
    - str_len
    - reader_client_dump_sub_metrics
    - o_stream_cork
    - stats_metrics_iterate
    - str_append_tabescaped
    - o_stream_nsend
    - reader_client_dump_metric
    linkageType: ''
    returnType: int
    signature: int reader_client_input_dump(struct reader_client *client, const char
      *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reader_client_input_dump
      Src: /src/dovecot/src/stats/client-reader.c:153,1
    - Dst: stats_metrics_reset
      Src: /src/dovecot/src/stats/client-reader.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct reader_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 149
    functionDepth: 5
    functionLinenumber: 149
    functionLinenumberEnd: 156
    functionName: reader_client_input_dump_reset
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - stats_metrics_reset
    - reader_client_input_dump
    linkageType: ''
    returnType: int
    signature: "int reader_client_input_dump_reset(struct reader_client *client,\n\t\t\t
      \      const char *const *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/stats/client-reader.c:162,1
    - Dst: str_array_length
      Src: /src/dovecot/src/stats/client-reader.c:165,1
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-reader.c:166,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/stats/client-reader.c:170,1
    - Dst: settings_defaults_dup
      Src: /src/dovecot/src/stats/client-reader.c:172,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/client-reader.c:173,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/client-reader.c:174,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/client-reader.c:175,1
    - Dst: p_strdup
      Src: /src/dovecot/src/stats/client-reader.c:176,1
    - Dst: parse_legacy_metric_group_by
      Src: /src/dovecot/src/stats/client-reader.c:178,1
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-reader.c:179,1
    - Dst: pool_unref
      Src: /src/dovecot/src/stats/client-reader.c:181,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/client-reader.c:185,1
    - Dst: settings_parse_boollist_string
      Src: /src/dovecot/src/stats/client-reader.c:186,1
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-reader.c:188,1
    - Dst: pool_unref
      Src: /src/dovecot/src/stats/client-reader.c:190,1
    - Dst: settings_boollist_finish
      Src: /src/dovecot/src/stats/client-reader.c:193,1
    - Dst: p_array_init
      Src: /src/dovecot/src/stats/client-reader.c:195,1
    - Dst: settings_parse_boollist_string
      Src: /src/dovecot/src/stats/client-reader.c:196,1
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-reader.c:198,1
    - Dst: pool_unref
      Src: /src/dovecot/src/stats/client-reader.c:200,1
    - Dst: settings_boollist_finish
      Src: /src/dovecot/src/stats/client-reader.c:203,1
    - Dst: check_func
      Src: /src/dovecot/src/stats/client-reader.c:205,1
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-reader.c:206,1
    - Dst: pool_unref
      Src: /src/dovecot/src/stats/client-reader.c:207,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/stats/client-reader.c:211,1
    - Dst: stats_metrics_add_dynamic
      Src: /src/dovecot/src/stats/client-reader.c:212,1
    - Dst: client_writer_update_connections
      Src: /src/dovecot/src/stats/client-reader.c:213,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/client-reader.c:214,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/client-reader.c:216,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/stats/client-reader.c:217,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/stats/client-reader.c:218,1
    - Dst: settings_free
      Src: /src/dovecot/src/stats/client-reader.c:220,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/client-reader.c:222,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/stats/client-reader.c:223,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct reader_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 158
    functionDepth: 4
    functionLinenumber: 158
    functionLinenumberEnd: 225
    functionName: reader_client_input_metrics_add
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_array_init
    - o_stream_uncork
    - o_stream_cork
    - pool_unref
    - settings_boollist_finish
    - parse_legacy_metric_group_by
    - o_stream_nsend
    - client_writer_update_connections
    - check_func
    - e_error
    - o_stream_nsend_str
    - settings_defaults_dup
    - pool_alloconly_create
    - stats_metrics_add_dynamic
    - str_array_length
    - settings_free
    - ARRAY_TYPE
    - settings_parse_boollist_string
    linkageType: ''
    returnType: int
    signature: "int reader_client_input_metrics_add(struct reader_client *client,\n\t\t\t\tconst
      char *const *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/stats/client-reader.c:231,1
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-reader.c:232,1
    - Dst: stats_metrics_remove_dynamic
      Src: /src/dovecot/src/stats/client-reader.c:236,1
    - Dst: client_writer_update_connections
      Src: /src/dovecot/src/stats/client-reader.c:237,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/client-reader.c:238,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/stats/client-reader.c:240,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/client-reader.c:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct reader_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 244
    functionName: reader_client_input_metrics_remove
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - stats_metrics_remove_dynamic
    - str_array_length
    - t_strdup_printf
    - e_error
    - o_stream_nsend
    - o_stream_nsend_str
    - client_writer_update_connections
    linkageType: ''
    returnType: int
    signature: "int reader_client_input_metrics_remove(struct reader_client *client,\n\t\t\t\t
      \  const char *const *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-reader.c:253,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:257,1
    - Dst: reader_client_input_dump
      Src: /src/dovecot/src/stats/client-reader.c:258,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:259,1
    - Dst: reader_client_input_metrics_add
      Src: /src/dovecot/src/stats/client-reader.c:260,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:261,1
    - Dst: reader_client_input_metrics_remove
      Src: /src/dovecot/src/stats/client-reader.c:262,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:263,1
    - Dst: reader_client_input_dump_reset
      Src: /src/dovecot/src/stats/client-reader.c:264,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-reader.c:265,1
    - Dst: event_exporters_reopen
      Src: /src/dovecot/src/stats/client-reader.c:266,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/client-reader.c:267,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 246
    functionDepth: 6
    functionLinenumber: 246
    functionLinenumberEnd: 270
    functionName: reader_client_input_args
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 0
    functionsReached:
    - strcmp
    - reader_client_input_dump
    - reader_client_input_metrics_remove
    - e_error
    - reader_client_input_metrics_add
    - reader_client_input_dump_reset
    - event_exporters_reopen
    - o_stream_nsend
    linkageType: ''
    returnType: int
    signature: int reader_client_input_args(struct connection *conn, const char *const
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/stats/client-reader.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 291
    functionName: client_readers_init
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 3
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void client_readers_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/stats/client-reader.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 296
    functionName: client_readers_deinit
    functionSourceFile: /src/dovecot/src/stats/client-reader.c
    functionUses: 3
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void client_readers_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/client-writer.c:40,1
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/client-writer.c:41,1
    - Dst: event_filter_export
      Src: /src/dovecot/src/stats/client-writer.c:43,1
    - Dst: stats_metrics_get_event_filter
      Src: /src/dovecot/src/stats/client-writer.c:43,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/client-writer.c:45,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/client-writer.c:46,1
    - Dst: str_c
      Src: /src/dovecot/src/stats/client-writer.c:46,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/client-writer.c:47,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/stats/client-writer.c:48,1
    - Dst: str_data
      Src: /src/dovecot/src/stats/client-writer.c:48,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/client-writer.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct writer_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: client_writer_send_handshake
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - stats_metrics_get_event_filter
    - str_append_tabescaped
    - o_stream_nsend
    - event_filter_export
    - str_append
    linkageType: ''
    returnType: void
    signature: void client_writer_send_handshake(struct writer_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct stats_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: stats_event_hash
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int stats_event_hash(const struct stats_event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event1
    - event2
    argTypes:
    - struct stats_event*
    - struct stats_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: stats_event_cmp
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int stats_event_cmp(const struct stats_event *event1,\n\t\t\t   const
      struct stats_event *event2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/stats/client-writer.c:66,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/stats/client-writer.c:67,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/stats/client-writer.c:70,1
    - Dst: client_writer_send_handshake
      Src: /src/dovecot/src/stats/client-writer.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 73
    functionName: client_writer_create
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 2
    functionsReached:
    - client_writer_send_handshake
    - hash_table_create
    - i_new
    - connection_init_server
    linkageType: ''
    returnType: void
    signature: void client_writer_create(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/stats/client-writer.c:82,1
    - Dst: i_free
      Src: /src/dovecot/src/stats/client-writer.c:83,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/stats/client-writer.c:85,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/stats/client-writer.c:87,1
    - Dst: i_free
      Src: /src/dovecot/src/stats/client-writer.c:88,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/stats/client-writer.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 91
    functionName: writer_client_destroy
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - event_unref
    - master_service_client_connection_destroyed
    - i_free
    - connection_deinit
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void writer_client_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/stats/client-writer.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - event_id
    argTypes:
    - struct writer_client*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 98
    functionName: writer_client_find_event
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: struct stats_event
    signature: 'struct stats_event *

      writer_client_find_event(struct writer_client *client, uint64_t event_id)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: writer_client_find_event
      Src: /src/dovecot/src/stats/client-writer.c:112,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/stats/client-writer.c:119,1
    - Dst: event_create
      Src: /src/dovecot/src/stats/client-writer.c:129,1
    - Dst: event_import_unescaped
      Src: /src/dovecot/src/stats/client-writer.c:130,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/client-writer.c:131,1
    - Dst: stats_metrics_event
      Src: /src/dovecot/src/stats/client-writer.c:134,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - client
    - parent_event_id
    - args
    - event_r
    - error_r
    argTypes:
    - struct writer_client*
    - uint64_t
    - char**
    - struct event**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 100
    functionDepth: 9
    functionLinenumber: 100
    functionLinenumberEnd: 137
    functionName: writer_client_run_event
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - writer_client_find_event
    - event_import_unescaped
    - stats_metrics_event
    - str_to_uint
    linkageType: ''
    returnType: bool
    signature: "bool writer_client_run_event(struct writer_client *client,\n\t\t\tuint64_t
      parent_event_id, const char *const *args,\n\t\t\tstruct event **event_r, const
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint64
      Src: /src/dovecot/src/stats/client-writer.c:147,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/stats/client-writer.c:151,1
    - Dst: writer_client_find_event
      Src: /src/dovecot/src/stats/client-writer.c:158,1
    - Dst: event_push_global
      Src: /src/dovecot/src/stats/client-writer.c:164,1
    - Dst: writer_client_run_event
      Src: /src/dovecot/src/stats/client-writer.c:167,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/stats/client-writer.c:170,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/client-writer.c:173,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct writer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 139
    functionDepth: 10
    functionLinenumber: 139
    functionLinenumberEnd: 175
    functionName: writer_client_input_event
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - writer_client_run_event
    - event_unref
    - writer_client_find_event
    - event_push_global
    - str_to_uint64
    - event_pop_global
    linkageType: ''
    returnType: bool
    signature: "bool writer_client_input_event(struct writer_client *client,\n\t\t\t
      \ const char *const *args, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint64
      Src: /src/dovecot/src/stats/client-writer.c:186,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/stats/client-writer.c:187,1
    - Dst: writer_client_find_event
      Src: /src/dovecot/src/stats/client-writer.c:191,1
    - Dst: writer_client_run_event
      Src: /src/dovecot/src/stats/client-writer.c:195,1
    - Dst: i_new
      Src: /src/dovecot/src/stats/client-writer.c:198,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/stats/client-writer.c:201,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/stats/client-writer.c:202,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct writer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 177
    functionDepth: 10
    functionLinenumber: 177
    functionLinenumberEnd: 204
    functionName: writer_client_input_event_begin
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - writer_client_run_event
    - writer_client_find_event
    - DLLIST_PREPEND
    - i_new
    - str_to_uint64
    - hash_table_insert
    linkageType: ''
    returnType: bool
    signature: "bool writer_client_input_event_begin(struct writer_client *client,\n\t\t\t\tconst
      char *const *args, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint64
      Src: /src/dovecot/src/stats/client-writer.c:215,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/stats/client-writer.c:216,1
    - Dst: writer_client_find_event
      Src: /src/dovecot/src/stats/client-writer.c:220,1
    - Dst: writer_client_find_event
      Src: /src/dovecot/src/stats/client-writer.c:226,1
    - Dst: event_import_unescaped
      Src: /src/dovecot/src/stats/client-writer.c:233,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct writer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 234
    functionName: writer_client_input_event_update
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - str_to_uint64
    - event_import_unescaped
    - writer_client_find_event
    linkageType: ''
    returnType: bool
    signature: "bool writer_client_input_event_update(struct writer_client *client,\n\t\t\t\t
      const char *const *args, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint64
      Src: /src/dovecot/src/stats/client-writer.c:243,1
    - Dst: writer_client_find_event
      Src: /src/dovecot/src/stats/client-writer.c:247,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/stats/client-writer.c:253,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/stats/client-writer.c:254,1
    - Dst: event_unref
      Src: /src/dovecot/src/stats/client-writer.c:255,1
    - Dst: i_free
      Src: /src/dovecot/src/stats/client-writer.c:256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct writer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 258
    functionName: writer_client_input_event_end
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - event_unref
    - writer_client_find_event
    - hash_table_remove
    - str_to_uint64
    - i_free
    - DLLIST_REMOVE
    linkageType: ''
    returnType: bool
    signature: "bool writer_client_input_event_end(struct writer_client *client,\n\t\t\t
      \     const char *const *args, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_category_find_registered
      Src: /src/dovecot/src/stats/client-writer.c:272,1
    - Dst: event_category_find_registered
      Src: /src/dovecot/src/stats/client-writer.c:277,1
    - Dst: stats_event_category_register
      Src: /src/dovecot/src/stats/client-writer.c:280,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/stats/client-writer.c:282,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - args
    - error_r
    argTypes:
    - struct writer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 292
    functionName: writer_client_input_category
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - stats_event_category_register
    - event_category_find_registered
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool writer_client_input_category(struct writer_client *client ATTR_UNUSED,\n\t\t\t
      \    const char *const *args, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-writer.c:302,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-writer.c:305,1
    - Dst: writer_client_input_event
      Src: /src/dovecot/src/stats/client-writer.c:306,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-writer.c:307,1
    - Dst: writer_client_input_event_begin
      Src: /src/dovecot/src/stats/client-writer.c:308,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-writer.c:309,1
    - Dst: writer_client_input_event_update
      Src: /src/dovecot/src/stats/client-writer.c:310,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-writer.c:311,1
    - Dst: writer_client_input_event_end
      Src: /src/dovecot/src/stats/client-writer.c:312,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/client-writer.c:313,1
    - Dst: writer_client_input_category
      Src: /src/dovecot/src/stats/client-writer.c:314,1
    - Dst: e_error
      Src: /src/dovecot/src/stats/client-writer.c:320,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/stats/client-writer.c:322,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 294
    functionDepth: 11
    functionLinenumber: 294
    functionLinenumberEnd: 326
    functionName: writer_client_input_args
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strarray_join
    - writer_client_input_event
    - e_error
    - writer_client_input_event_begin
    - writer_client_input_category
    - writer_client_input_event_end
    - writer_client_input_event_update
    linkageType: ''
    returnType: int
    signature: int writer_client_input_args(struct connection *conn, const char *const
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/stats/client-writer.c:350,1
    - Dst: client_writer_send_handshake
      Src: /src/dovecot/src/stats/client-writer.c:351,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/stats/client-writer.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 354
    functionName: client_writer_update_connections_internal
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 0
    functionsReached:
    - client_writer_send_handshake
    - container_of
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_writer_update_connections_internal(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/stats/client-writer.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 363
    functionName: client_writer_update_connections
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 2
    functionsReached:
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void client_writer_update_connections(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/stats/client-writer.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 368
    functionName: client_writers_init
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 2
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void client_writers_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/stats/client-writer.c:372,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/stats/client-writer.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: client_writers_deinit
    functionSourceFile: /src/dovecot/src/stats/client-writer.c
    functionUses: 2
    functionsReached:
    - connection_list_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_writers_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:14,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:23,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:24,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:27,1
    - Dst: str_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dest
    - strlist
    argTypes:
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 28
    functionName: append_strlist
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void append_strlist(string_t *dest, const ARRAY_TYPE(const_string)
      *strlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:23,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 20
    functionsReached:
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(strlist, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - val
    argTypes:
    - string_t*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: append_int
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 1
    functionsReached:
    - str_printfa
    linkageType: ''
    returnType: void
    signature: void append_int(string_t *dest, intmax_t val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:40,1
    - Dst: event_export_helper_fmt_unix_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:42,1
    - Dst: event_export_helper_fmt_rfc3339_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:45,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - dest
    - time
    - fmt
    argTypes:
    - string_t*
    - struct timeval*
    - enum event_exporter_time_fmt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 48
    functionName: append_time
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 2
    functionsReached:
    - i_panic
    - event_export_helper_fmt_rfc3339_time
    - event_export_helper_fmt_unix_time
    linkageType: ''
    returnType: void
    signature: "void append_time(string_t *dest, const struct timeval *time,\n\t\t\tenum
      event_exporter_time_fmt fmt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:52,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - ip
    argTypes:
    - string_t*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: append_ip
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 1
    functionsReached:
    - str_append
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: void append_ip(string_t *dest, const struct ip_addr *ip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:59,1
    - Dst: strlen
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:61,1
    - Dst: str_append_tabescaped_n
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:62,1
    - Dst: I_MIN
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:63,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - dest
    - str
    - info
    argTypes:
    - string_t*
    - char*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 67
    functionName: append_field_str
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 0
    functionsReached:
    - str_append_tabescaped_n
    - I_MIN
    - strlen
    - str_append_tabescaped
    - str_append
    linkageType: ''
    returnType: void
    signature: "void append_field_str(string_t *dest, const char *str,\n\t\t\t     const
      struct metric_export_info *info)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: append_field_str
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:74,1
    - Dst: append_int
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:77,1
    - Dst: append_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:80,1
    - Dst: append_ip
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:84,1
    - Dst: append_strlist
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:87,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - dest
    - field
    - info
    argTypes:
    - string_t*
    - struct event_field*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 90
    functionName: append_field_value
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 1
    functionsReached:
    - append_int
    - append_time
    - append_ip
    - append_field_str
    - append_strlist
    linkageType: ''
    returnType: void
    signature: "void append_field_value(string_t *dest, const struct event_field *field,\n\t\t\t
      \      const struct metric_export_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:98,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:99,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - dest
    - event
    - info
    argTypes:
    - string_t*
    - struct event*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: tabtext_export_name
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void tabtext_export_name(string_t *dest, struct event *event,\n\t\t\t\tconst
      struct metric_export_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:109,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:110,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dest
    - info
    argTypes:
    - string_t*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 112
    functionName: tabtext_export_hostname
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void tabtext_export_hostname(string_t *dest,\n\t\t\t\t    const struct
      metric_export_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:120,1
    - Dst: append_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:121,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:122,1
    - Dst: append_time
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:123,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - dest
    - event
    - info
    argTypes:
    - string_t*
    - struct event*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 125
    functionName: tabtext_export_timestamps
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 0
    functionsReached:
    - str_append
    - append_time
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void tabtext_export_timestamps(string_t *dest, struct event *event,\n\t\t\t\t
      \     const struct metric_export_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:129,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dest
    - cat
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: append_category
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_tabescaped
    linkageType: ''
    returnType: void
    signature: void append_category(string_t *dest, const char *cat)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_export_helper_fmt_categories
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:139,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - dest
    - event
    - info
    argTypes:
    - string_t*
    - struct event*
    - struct metric_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 142
    functionName: tabtext_export_categories
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 0
    functionsReached:
    - event_export_helper_fmt_categories
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void tabtext_export_categories(string_t *dest, struct event *event,\n\t\t\t\t
      \     const struct metric_export_info *info)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_get_fields
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:157,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:162,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:163,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:164,1
    - Dst: append_field_value
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:165,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:166,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:173,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:177,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:178,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:179,1
    - Dst: append_field_value
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:180,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 5
    argNames:
    - dest
    - event
    - info
    - fields_count
    - fields
    argTypes:
    - string_t*
    - struct event*
    - struct metric_export_info*
    - unsigned int
    - struct metric_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 184
    functionName: tabtext_export_fields
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 0
    functionsReached:
    - append_field_value
    - event_get_fields
    - str_append_c
    - str_append_tabescaped
    - event_find_field_recursive
    - str_append
    linkageType: ''
    returnType: void
    signature: "void tabtext_export_fields(string_t *dest, struct event *event,\n\t\t\t\t
      \ const struct metric_export_info *info,\n\t\t\t\t  const unsigned int fields_count,\n\t\t\t\t
      \ const struct metric_field *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tabtext_export_name
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:206,1
    - Dst: tabtext_export_hostname
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:207,1
    - Dst: tabtext_export_timestamps
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:208,1
    - Dst: tabtext_export_categories
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:209,1
    - Dst: tabtext_export_fields
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:210,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:214,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - metric
    - event
    - dest
    argTypes:
    - struct metric*
    - struct event*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 215
    functionName: event_export_fmt_tabescaped_text
    functionSourceFile: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
    functionUses: 0
    functionsReached:
    - tabtext_export_name
    - str_len
    - tabtext_export_categories
    - tabtext_export_hostname
    - tabtext_export_timestamps
    - str_truncate
    - tabtext_export_fields
    linkageType: ''
    returnType: void
    signature: "void event_export_fmt_tabescaped_text(const struct metric *metric,\n\t\t\t\t
      \     struct event *event, buffer_t *dest)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:81,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 14
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: openmetrics_check_name
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool openmetrics_check_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:101,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:102,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:104,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:105,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:108,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:110,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - out
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 112
    functionName: openmetrics_export_dovecot
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - i_assert
    linkageType: ''
    returnType: void
    signature: void openmetrics_export_dovecot(string_t *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: openmetrics_export_eof
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - str_append
    linkageType: ''
    returnType: void
    signature: void openmetrics_export_eof(string_t *out)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:125,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:126,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:129,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:130,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:132,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:135,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:136,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:138,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:142,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:143,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:145,1
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:148,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:151,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:152,1
    - Dst: str_append_str
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:153,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:154,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:159,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:160,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:164,1
    - Dst: stats_dist_get_sum
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:165,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:169,1
    - Dst: stats_dist_get_sum
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:170,1
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:173,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 3
    argNames:
    - req
    - out
    - metric
    argTypes:
    - struct openmetrics_request*
    - string_t*
    - struct metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 175
    functionName: openmetrics_export_metric_value
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - stats_dist_get_sum
    - stats_dist_get_count
    - i_unreached
    - str_len
    - str_append_str
    - str_append
    linkageType: ''
    returnType: void
    signature: "void openmetrics_export_metric_value(struct openmetrics_request *req,
      string_t *out,\n\t\t\t\tconst struct metric *metric)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:183,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - metric
    - index
    argTypes:
    - struct metric*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 195
    functionName: openmetrics_find_histogram_bucket
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: struct metric
    signature: "struct metric *\nopenmetrics_find_histogram_bucket(const struct metric
      *metric,\n\t\t\t\t unsigned int index)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:203,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:204,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:205,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:207,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:208,1
    - Dst: str_append_str
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:209,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:210,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:213,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:214,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:217,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:219,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - req
    - out
    - metric
    - bucket_limit
    - count
    argTypes:
    - struct openmetrics_request*
    - string_t*
    - struct metric*
    - intmax_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 222
    functionName: openmetrics_export_histogram_bucket
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_printfa
    - str_append_c
    - str_len
    - str_append_str
    - str_append
    linkageType: ''
    returnType: void
    signature: "void openmetrics_export_histogram_bucket(struct openmetrics_request
      *req,\n\t\t\t\t    string_t *out, const struct metric *metric,\n\t\t\t\t    intmax_t
      bucket_limit, int64_t count)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: openmetrics_find_histogram_bucket
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:236,1
    - Dst: stats_dist_get_sum
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:239,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:240,1
    - Dst: openmetrics_export_histogram_bucket
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:243,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:255,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:256,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:257,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:259,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:260,1
    - Dst: str_append_str
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:261,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:262,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:264,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:269,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:271,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:272,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:273,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:275,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:276,1
    - Dst: str_append_str
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:277,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:278,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:280,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - req
    - out
    - metric
    argTypes:
    - struct openmetrics_request*
    - string_t*
    - struct metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 281
    functionName: openmetrics_export_histogram
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_printfa
    - stats_dist_get_sum
    - str_append_c
    - stats_dist_get_count
    - str_len
    - str_append_str
    - openmetrics_find_histogram_bucket
    - str_append
    - openmetrics_export_histogram_bucket
    linkageType: ''
    returnType: void
    signature: "void openmetrics_export_histogram(struct openmetrics_request *req,
      string_t *out,\n\t\t\t     const struct metric *metric)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:290,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:291,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:294,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:297,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:301,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:305,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:309,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:310,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:312,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:314,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:315,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:318,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:321,1
    - Dst: str_printfa
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:325,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:328,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 2
    argNames:
    - req
    - out
    argTypes:
    - struct openmetrics_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 331
    functionName: openmetrics_export_metric_header
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void openmetrics_export_metric_header(struct openmetrics_request *req,
      string_t *out)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:340,1
    - Dst: json_append_escaped
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:341,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:342,1
    - Dst: openmetrics_export_histogram
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:350,1
    - Dst: openmetrics_export_metric_value
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:354,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - req
    - out
    - metric
    argTypes:
    - struct openmetrics_request*
    - string_t*
    - struct metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 357
    functionName: openmetrics_export_submetric
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - openmetrics_export_metric_value
    - openmetrics_export_histogram
    - str_append_c
    - json_append_escaped
    linkageType: ''
    returnType: void
    signature: "void openmetrics_export_submetric(struct openmetrics_request *req,
      string_t *out,\n\t\t\t     const struct metric *metric)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:362,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reqsm
    argTypes:
    - struct openmetrics_request_sub_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 366
    functionName: openmetrics_export_sub_metric_get
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_idx_elem
    linkageType: ''
    returnType: struct metric
    signature: 'struct metric *

      openmetrics_export_sub_metric_get(struct openmetrics_request_sub_metric *reqsm)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openmetrics_export_sub_metric_get
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - reqsm
    argTypes:
    - struct openmetrics_request_sub_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 375
    functionName: openmetrics_export_sub_metric_get_next
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - openmetrics_export_sub_metric_get
    linkageType: ''
    returnType: struct metric
    signature: "struct metric *\nopenmetrics_export_sub_metric_get_next(\n\tstruct
      openmetrics_request_sub_metric *reqsm)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:381,1
    - Dst: openmetrics_check_name
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:387,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:388,1
    - Dst: array_count
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:389,1
    - Dst: openmetrics_export_sub_metric_get
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:398,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:404,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:405,1
    - Dst: str_append
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:406,1
    - Dst: str_append_c
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:407,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:408,1
    - Dst: array_append_space
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:411,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 415
    functionName: openmetrics_export_sub_metric_down
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - array_append_space
    - str_len
    - str_append
    - array_count
    - openmetrics_export_sub_metric_get
    - array_back_modifiable
    - openmetrics_check_name
    - array_is_created
    linkageType: ''
    returnType: struct openmetrics_request_sub_metric
    signature: 'struct openmetrics_request_sub_metric *

      openmetrics_export_sub_metric_down(struct openmetrics_request *req)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:425,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:427,1
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:428,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:429,1
    - Dst: openmetrics_export_sub_metric_get_next
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:432,1
    - Dst: array_append_space
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:444,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 447
    functionName: openmetrics_export_sub_metric_up_next
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - array_append_space
    - openmetrics_export_sub_metric_get_next
    - array_count
    - array_pop_back
    - str_truncate
    - array_back_modifiable
    linkageType: ''
    returnType: struct openmetrics_request_sub_metric
    signature: 'struct openmetrics_request_sub_metric *

      openmetrics_export_sub_metric_up_next(struct openmetrics_request *req)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:456,1
    - Dst: i_array_init
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:457,1
    - Dst: array_count
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:458,1
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:460,1
    - Dst: array_append_space
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:465,1
    - Dst: str_len
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:467,1
    - Dst: openmetrics_export_sub_metric_down
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:469,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 449
    functionDepth: 3
    functionLinenumber: 449
    functionLinenumberEnd: 470
    functionName: openmetrics_export_sub_metric_current
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - openmetrics_export_sub_metric_down
    - array_append_space
    - str_len
    - array_count
    - array_back_modifiable
    - array_is_created
    linkageType: ''
    returnType: struct openmetrics_request_sub_metric
    signature: 'struct openmetrics_request_sub_metric *

      openmetrics_export_sub_metric_current(struct openmetrics_request *req)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:477,1
    - Dst: openmetrics_export_sub_metric_current
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:480,1
    - Dst: openmetrics_export_submetric
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:485,1
    - Dst: openmetrics_export_sub_metric_down
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:489,1
    - Dst: openmetrics_export_sub_metric_up_next
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:494,1
    - Dst: array_clear
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:499,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - req
    - out
    argTypes:
    - struct openmetrics_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 472
    functionDepth: 4
    functionLinenumber: 472
    functionLinenumberEnd: 503
    functionName: openmetrics_export_sub_metrics
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - openmetrics_export_sub_metric_down
    - openmetrics_export_submetric
    - openmetrics_export_sub_metric_up_next
    - array_clear
    - openmetrics_export_sub_metric_current
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool openmetrics_export_sub_metrics(struct openmetrics_request *req,
      string_t *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openmetrics_export_metric_value
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - out
    argTypes:
    - struct openmetrics_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 505
    functionDepth: 2
    functionLinenumber: 505
    functionLinenumberEnd: 509
    functionName: openmetrics_export_metric_body
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - openmetrics_export_metric_value
    linkageType: ''
    returnType: void
    signature: void openmetrics_export_metric_body(struct openmetrics_request *req,
      string_t *out)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:519,1
    - Dst: i_assert
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:524,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - req
    - buffer
    argTypes:
    - struct openmetrics_request*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 529
    functionName: openmetrics_send_buffer
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - i_assert
    - o_stream_send
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: int
    signature: int openmetrics_send_buffer(struct openmetrics_request *req, buffer_t
      *buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 551
    functionName: openmetrics_export_has_histogram
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool openmetrics_export_has_histogram(struct openmetrics_request *req)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: openmetrics_export_has_histogram
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:563,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 598
    functionName: openmetrics_export_next
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - openmetrics_export_has_histogram
    linkageType: ''
    returnType: void
    signature: void openmetrics_export_next(struct openmetrics_request *req)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:606,1
    - Dst: stats_metrics_iterate_init
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:607,1
    - Dst: openmetrics_export_dovecot
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:608,1
    - Dst: i_assert
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:613,1
    - Dst: stats_metrics_iterate
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:615,1
    - Dst: openmetrics_check_name
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:617,1
    - Dst: str_new
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:625,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:627,1
    - Dst: openmetrics_export_has_histogram
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:633,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:641,1
    - Dst: array_is_created
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:643,1
    - Dst: array_clear
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:644,1
    - Dst: openmetrics_export_metric_header
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:645,1
    - Dst: openmetrics_export_sub_metrics
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:652,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:659,1
    - Dst: openmetrics_export_histogram
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:661,1
    - Dst: openmetrics_export_metric_body
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:663,1
    - Dst: openmetrics_export_next
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:664,1
    - Dst: i_unreached
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:667,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 2
    argNames:
    - req
    - out
    argTypes:
    - struct openmetrics_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 600
    functionDepth: 5
    functionLinenumber: 600
    functionLinenumberEnd: 669
    functionName: openmetrics_export_continue
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - stats_metrics_iterate_init
    - openmetrics_export_histogram
    - openmetrics_export_next
    - i_unreached
    - openmetrics_export_dovecot
    - stats_metrics_iterate
    - openmetrics_export_sub_metrics
    - openmetrics_export_metric_body
    - openmetrics_export_metric_header
    - str_truncate
    - openmetrics_export_has_histogram
    - array_clear
    - openmetrics_check_name
    - array_is_created
    - i_assert
    - str_new
    linkageType: ''
    returnType: void
    signature: void openmetrics_export_continue(struct openmetrics_request *req, string_t
      *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_info
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:673,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:674,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:675,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 677
    functionName: openmetrics_handle_write_error
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - o_stream_get_name
    - i_info
    - o_stream_destroy
    linkageType: ''
    returnType: void
    signature: void openmetrics_handle_write_error(struct openmetrics_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_iterate_deinit
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:681,1
    - Dst: str_free
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:682,1
    - Dst: array_free
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 679
    functionDepth: 2
    functionLinenumber: 679
    functionLinenumberEnd: 684
    functionName: openmetrics_request_deinit
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - stats_metrics_iterate_deinit
    - array_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void openmetrics_request_deinit(struct openmetrics_request *req)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:691,1
    - Dst: openmetrics_handle_write_error
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:693,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:704,1
    - Dst: t_str_new
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:713,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:715,1
    - Dst: openmetrics_export_continue
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:717,1
    - Dst: openmetrics_send_buffer
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:719,1
    - Dst: openmetrics_handle_write_error
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:721,1
    - Dst: str_truncate
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:737,1
    - Dst: openmetrics_export_eof
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:738,1
    - Dst: openmetrics_send_buffer
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:739,1
    - Dst: openmetrics_handle_write_error
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:741,1
    - Dst: openmetrics_request_deinit
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:746,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:749,1
    - Dst: openmetrics_handle_write_error
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:751,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 686
    functionDepth: 6
    functionLinenumber: 686
    functionLinenumberEnd: 755
    functionName: openmetrics_export
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - openmetrics_export_continue
    - openmetrics_handle_write_error
    - o_stream_finish
    - openmetrics_export_eof
    - openmetrics_request_deinit
    - str_truncate
    - o_stream_flush
    - openmetrics_send_buffer
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: int openmetrics_export(struct openmetrics_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:759,1
    - Dst: openmetrics_request_deinit
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct openmetrics_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 757
    functionDepth: 3
    functionLinenumber: 757
    functionLinenumberEnd: 761
    functionName: openmetrics_request_destroy
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - openmetrics_request_deinit
    - o_stream_destroy
    linkageType: ''
    returnType: void
    signature: void openmetrics_request_destroy(struct openmetrics_request *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:768,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:773,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:774,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:775,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:776,1
    - Dst: strcmp
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:779,1
    - Dst: http_server_request_fail_bad_method
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:780,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:784,1
    - Dst: http_server_request_get_pool
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:788,1
    - Dst: p_new
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:789,1
    - Dst: http_server_request_set_destroy_callback
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:791,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:794,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:795,1
    - Dst: http_server_response_get_payload_output
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:800,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:803,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:804,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - hsreq
    - sub_path
    argTypes:
    - void*
    - struct http_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 805
    functionName: stats_service_openmetrics_request
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - http_server_request_fail
    - http_server_response_create
    - http_server_request_fail_bad_method
    - http_server_request_get_pool
    - http_server_request_set_destroy_callback
    - http_server_response_get_payload_output
    - http_server_response_add_header
    - o_stream_set_flush_pending
    - http_server_request_get
    - o_stream_set_flush_callback
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: "void stats_service_openmetrics_request(void *context ATTR_UNUSED,\n\t\t\t\t
      \ struct http_server_request *hsreq,\n\t\t\t\t  const char *sub_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_metrics_iterate_init
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:812,1
    - Dst: stats_metrics_iterate
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:813,1
    - Dst: openmetrics_check_name
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:814,1
    - Dst: i_warning
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:815,1
    - Dst: stats_metrics_iterate_deinit
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:822,1
    - Dst: stats_http_resource_add
      Src: /src/dovecot/src/stats/stats-service-openmetrics.c:824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 807
    functionDepth: 2
    functionLinenumber: 807
    functionLinenumberEnd: 826
    functionName: stats_service_openmetrics_init
    functionSourceFile: /src/dovecot/src/stats/stats-service-openmetrics.c
    functionUses: 1
    functionsReached:
    - stats_metrics_iterate_init
    - stats_metrics_iterate_deinit
    - stats_metrics_iterate
    - i_warning
    - stats_http_resource_add
    - openmetrics_check_name
    linkageType: ''
    returnType: void
    signature: void stats_service_openmetrics_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - path
    - ','
    - title
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: stats_http_resource_add
    functionSourceFile: /src/dovecot/src/stats/client-http.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: stats_http_resource_add(path, title, callback, context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/json-tree-io.c:22,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/json-tree-io.c:28,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/json-tree-io.c:30,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree-io.c:31,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/json-tree-io.c:32,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree-io.c:33,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-tree-io.c:36,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-tree-io.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - data
    - size
    - parser_flags
    - jtree_r
    - error_r
    argTypes:
    - void*
    - size_t
    - enum json_parser_flags
    - struct json_tree**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 40
    functionName: json_tree_read_data
    functionSourceFile: /src/dovecot/src/lib-json/json-tree-io.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - i_stream_create_from_data
    - json_istream_finish
    - json_tree_unref
    - json_istream_read_tree
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int json_tree_read_data(const void *data, size_t size,\n\t\t\tenum
      json_parser_flags parser_flags,\n\t\t\tstruct json_tree **jtree_r, const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_read_data
      Src: /src/dovecot/src/lib-json/json-tree-io.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - buf
    - parser_flags
    - jtree_r
    - error_r
    argTypes:
    - buffer_t*
    - enum json_parser_flags
    - struct json_tree**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: json_tree_read_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-tree-io.c
    functionUses: 0
    functionsReached:
    - json_tree_read_data
    linkageType: ''
    returnType: int
    signature: "int json_tree_read_buffer(const buffer_t *buf,\n\t\t\t  enum json_parser_flags
      parser_flags,\n\t\t\t  struct json_tree **jtree_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_read_data
      Src: /src/dovecot/src/lib-json/json-tree-io.c:53,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-tree-io.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - str
    - parser_flags
    - jtree_r
    - error_r
    argTypes:
    - char*
    - enum json_parser_flags
    - struct json_tree**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: json_tree_read_cstr
    functionSourceFile: /src/dovecot/src/lib-json/json-tree-io.c
    functionUses: 0
    functionsReached:
    - strlen
    - json_tree_read_data
    linkageType: ''
    returnType: int
    signature: "int json_tree_read_cstr(const char *str, enum json_parser_flags parser_flags,\n\t\t\tstruct
      json_tree **jtree_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-json/json-tree-io.c:68,1
    - Dst: json_ostream_set_format
      Src: /src/dovecot/src/lib-json/json-tree-io.c:70,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/json-tree-io.c:71,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/json-tree-io.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - jtree
    - buf
    - gen_flags
    - format
    argTypes:
    - struct json_tree*
    - buffer_t*
    - enum json_generator_flags
    - struct json_format*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: json_tree_write_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-tree-io.c
    functionUses: 0
    functionsReached:
    - json_ostream_nwrite_tree
    - json_ostream_create_str
    - json_ostream_nfinish_destroy
    - json_ostream_set_format
    linkageType: ''
    returnType: void
    signature: "void json_tree_write_buffer(const struct json_tree *jtree, buffer_t
      *buf,\n\t\t\t    enum json_generator_flags gen_flags,\n\t\t\t    const struct
      json_format *format)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-json/json-tree-io.c:80,1
    - Dst: json_tree_write_buffer
      Src: /src/dovecot/src/lib-json/json-tree-io.c:82,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/json-tree-io.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - jtree
    - gen_flags
    - format
    argTypes:
    - struct json_tree*
    - enum json_generator_flags
    - struct json_format*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: json_tree_to_text
    functionSourceFile: /src/dovecot/src/lib-json/json-tree-io.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - json_tree_write_buffer
    linkageType: ''
    returnType: char
    signature: "char *\njson_tree_to_text(const struct json_tree *jtree,\n\t\t  enum
      json_generator_flags gen_flags,\n\t\t  const struct json_format *format)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-json/json-tree-io.c:88,1
    - Dst: json_tree_write_buffer
      Src: /src/dovecot/src/lib-json/json-tree-io.c:90,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/json-tree-io.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: json_tree_to_text_line
    functionSourceFile: /src/dovecot/src/lib-json/json-tree-io.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - json_tree_write_buffer
    linkageType: ''
    returnType: char
    signature: char *json_tree_to_text_line(const struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-types.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum json_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: json_type_get_name
    functionSourceFile: /src/dovecot/src/lib-json/json-types.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *json_type_get_name(enum json_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-types.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctype
    argTypes:
    - enum json_content_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: json_content_type_get_name
    functionSourceFile: /src/dovecot/src/lib-json/json-types.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *json_content_type_get_name(enum json_content_type ctype)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-json/json-types.c:72,1
    - Dst: json_type_get_name
      Src: /src/dovecot/src/lib-json/json-types.c:73,1
    - Dst: json_content_type_get_name
      Src: /src/dovecot/src/lib-json/json-types.c:74,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-types.c:83,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 84
    functionName: json_node_get_label
    functionSourceFile: /src/dovecot/src/lib-json/json-types.c
    functionUses: 0
    functionsReached:
    - json_content_type_get_name
    - t_strconcat
    - i_unreached
    - json_type_get_name
    linkageType: ''
    returnType: char
    signature: char *json_node_get_label(const struct json_node *jnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 18
    functionName: json_unichar_is_uchar
    functionSourceFile: /src/dovecot/src/lib-json/json-syntax.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_unichar_is_uchar(unichar_t ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 25
    functionName: json_unichar_is_control
    functionSourceFile: /src/dovecot/src/lib-json/json-syntax.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_unichar_is_control(unichar_t ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 32
    functionName: json_unichar_is_ws
    functionSourceFile: /src/dovecot/src/lib-json/json-syntax.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_unichar_is_ws(unichar_t ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: json_unichar_is_digit
    functionSourceFile: /src/dovecot/src/lib-json/json-syntax.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_unichar_is_digit(unichar_t ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_string_data
      Src: /src/dovecot/src/lib-json/json-ostream.h:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stream
    - name
    - buf
    argTypes:
    - struct json_ostream*
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: json_ostream_write_string_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.h
    functionUses: 0
    functionsReached:
    - json_ostream_write_string_data
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_string_buffer(struct json_ostream *stream,\n
      \                                const char *name, const buffer_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_string_data
      Src: /src/dovecot/src/lib-json/json-ostream.h:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stream
    - name
    - buf
    argTypes:
    - struct json_ostream*
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 166
    functionName: json_ostream_nwrite_string_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.h
    functionUses: 1
    functionsReached:
    - json_ostream_nwrite_string_data
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_string_buffer(struct json_ostream *stream,\n
      \                                 const char *name, const buffer_t *buf)"
  - BBCount: 157
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:25,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:26,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:27,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:30,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:31,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:32,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:33,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:34,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:35,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:36,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:37,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:37,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:38,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:39,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:43,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:44,1
    - Dst: json_ostream_write_false
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:45,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:46,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:47,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:48,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:49,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:50,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:50,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:51,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:52,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:56,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:57,1
    - Dst: json_ostream_write_null
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:58,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:59,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:61,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:62,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:63,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:63,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:64,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:65,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:69,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:70,1
    - Dst: json_ostream_write_true
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:71,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:72,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:74,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:75,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:76,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:76,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:77,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:78,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:82,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:83,1
    - Dst: json_ostream_write_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:84,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:85,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:86,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:87,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:88,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:89,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:89,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:90,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:91,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:95,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:96,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:98,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:98,1
    - Dst: json_ostream_write_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:100,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:101,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:102,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:103,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:104,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:105,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:107,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:108,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:109,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:113,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:114,1
    - Dst: json_ostream_write_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:116,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:118,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:119,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:120,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:120,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:121,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:122,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:126,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:127,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:128,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:129,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:130,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:131,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:132,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:133,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:134,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:135,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:135,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:136,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:137,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:141,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:142,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:143,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:144,1
    - Dst: json_ostream_write_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:145,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:146,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:147,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:148,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:150,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:151,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:152,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:152,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:153,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:154,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:158,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:159,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:160,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:161,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:163,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:163,1
    - Dst: json_ostream_write_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:165,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:166,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:168,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:169,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:170,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:171,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:172,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:174,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:175,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:176,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:180,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:181,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:182,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:183,1
    - Dst: json_ostream_write_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:184,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:185,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:187,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:189,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:190,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:191,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:191,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:192,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:193,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:197,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:198,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:199,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:200,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:202,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:203,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:204,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:205,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:206,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:206,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:207,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:208,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:212,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:213,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:215,1
    - Dst: json_ostream_write_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:217,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:219,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:220,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:221,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:222,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:223,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:223,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:224,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:225,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:229,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:230,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:231,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:232,1
    - Dst: json_ostream_write_object_member
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:233,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:234,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:235,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:236,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:237,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:238,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:239,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:240,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:241,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:242,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:242,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:243,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:244,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:248,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:249,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:250,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:251,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:253,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:253,1
    - Dst: json_ostream_write_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:254,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:255,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:256,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:257,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:258,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:259,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:260,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:261,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:262,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:265,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:266,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:267,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:271,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:274,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:275,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:276,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:277,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:278,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:279,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:280,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:281,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:282,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:283,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:284,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:285,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:286,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:287,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:288,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:289,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:290,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:291,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:292,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:293,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:294,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:295,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:296,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:297,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:298,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:299,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:300,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:301,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:302,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:303,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:304,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:305,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:306,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:307,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:308,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:309,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:310,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:311,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:312,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:314,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:315,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:316,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:320,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:321,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:322,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:323,1
    - Dst: json_ostream_write_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:324,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:326,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:327,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:328,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:329,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:330,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:331,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:332,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:332,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:333,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:334,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:338,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:339,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:340,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:343,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:346,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:347,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:352,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:353,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:358,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:359,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:364,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:365,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:370,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:371,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:376,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:377,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:382,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:383,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:388,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:389,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:394,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:395,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:400,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:401,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:406,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:407,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:412,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:413,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:418,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:419,1
    - Dst: json_ostream_write_object_member
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:424,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:426,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:431,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:432,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:437,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:438,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:443,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:444,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:449,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:450,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:456,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:457,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:459,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:460,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:461,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:465,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:466,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:467,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:470,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:473,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:474,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:479,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:480,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:485,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:486,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:491,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:492,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:497,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:498,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:503,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:504,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:509,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:510,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:515,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:516,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:521,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:522,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:527,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:528,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:533,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:534,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:539,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:540,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:545,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:546,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:551,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:552,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:557,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:558,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:563,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:564,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:569,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:570,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:575,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:576,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:581,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:582,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:587,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:588,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:593,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:594,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:599,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:600,1
    - Dst: json_ostream_write_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:605,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:606,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:611,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:612,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:617,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:618,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:623,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:624,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:630,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:631,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:634,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:635,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:636,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:640,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:641,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:642,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:645,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:648,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:649,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:654,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:655,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:660,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:661,1
    - Dst: json_ostream_write_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:666,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:668,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:673,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:674,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:679,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:680,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:685,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:686,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:691,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:692,1
    - Dst: json_ostream_write_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:697,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:699,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:704,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:705,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:710,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:711,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:716,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:717,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:722,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:723,1
    - Dst: json_ostream_write_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:728,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:730,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:735,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:736,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:741,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:742,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:747,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:748,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:754,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:755,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:758,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:759,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:760,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:764,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:765,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:766,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:769,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:772,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:773,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:779,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:780,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:786,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:787,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:791,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:791,1
    - Dst: json_ostream_write_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:795,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:797,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:800,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:804,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:805,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:811,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:812,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:818,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:819,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:825,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:826,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:830,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:830,1
    - Dst: json_ostream_write_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:834,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:836,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:839,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:843,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:844,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:850,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:851,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:857,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:858,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:864,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:865,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:869,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:869,1
    - Dst: json_ostream_write_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:873,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:875,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:878,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:882,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:883,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:889,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:890,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:896,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:897,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:904,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:905,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:908,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:909,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:910,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:913,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:914,1
    CyclomaticComplexity: 246
    EdgeCount: 246
    ICount: 879
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 915
    functionName: test_json_ostream_write
    functionSourceFile: /src/dovecot/src/lib-json/test-json-ostream.c
    functionUses: 0
    functionsReached:
    - str_c
    - strlen
    - json_ostream_write_string
    - json_ostream_write_true
    - json_ostream_write_null
    - i_stream_create_from_data
    - o_stream_create_buffer
    - json_ostream_write_text
    - test_end
    - json_ostream_write_string_stream
    - str_new
    - str_free
    - json_ostream_write_number
    - json_ostream_write_object_member
    - json_ostream_ascend_array
    - test_assert_strcmp
    - json_ostream_descend_array
    - i_assert
    - o_stream_set_max_buffer_size
    - o_stream_destroy
    - json_ostream_ascend_object
    - json_ostream_write_false
    - json_ostream_create
    - json_ostream_descend_object
    - o_stream_set_no_error_handling
    - json_ostream_flush
    - str_truncate
    - i_stream_unref
    - test_begin
    - json_ostream_unref
    linkageType: ''
    returnType: void
    signature: void test_json_ostream_write(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:925,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:926,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:927,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:930,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:931,1
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:932,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:933,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:934,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:934,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:935,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:936,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:940,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:941,1
    - Dst: json_ostream_nwrite_false
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:942,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:943,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:944,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:944,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:945,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:946,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:950,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:951,1
    - Dst: json_ostream_nwrite_null
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:952,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:953,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:954,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:954,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:955,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:956,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:960,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:961,1
    - Dst: json_ostream_nwrite_true
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:962,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:963,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:964,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:964,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:965,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:966,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:970,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:971,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:972,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:973,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:974,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:974,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:975,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:976,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:980,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:981,1
    - Dst: json_ostream_nwritef_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:982,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:983,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:984,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:984,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:985,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:986,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:990,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:991,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:993,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:993,1
    - Dst: json_ostream_nwrite_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:994,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:995,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:996,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:997,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:999,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1000,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1001,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1005,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1006,1
    - Dst: json_ostream_nwrite_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1007,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1008,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1009,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1009,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1010,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1011,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1015,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1016,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1017,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1018,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1019,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1020,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1020,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1021,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1022,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1026,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1027,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1028,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1029,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1030,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1031,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1032,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1032,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1033,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1034,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1038,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1039,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1040,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1042,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1042,1
    - Dst: json_ostream_nwrite_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1043,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1044,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1045,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1046,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1047,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1049,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1050,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1051,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1055,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1056,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1057,1
    - Dst: json_ostream_nwrite_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1058,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1059,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1060,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1061,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1061,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1062,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1063,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1067,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1068,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1069,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1070,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1071,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1072,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1072,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1073,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1074,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1078,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1079,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1080,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1081,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1082,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1083,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1084,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1084,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1085,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1086,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1090,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1091,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1092,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1093,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1094,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1095,1
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1096,1
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1097,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1098,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1102,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1105,1
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1107,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1108,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1109,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1110,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1119,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1120,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1121,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1125,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1126,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1127,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1129,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1129,1
    - Dst: json_ostream_nwrite_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1130,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1131,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1132,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1133,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1134,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1137,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1138,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1139,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1143,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1144,1
    - Dst: json_ostream_nopen_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1145,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1146,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1147,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1148,1
    - Dst: json_ostream_nclose_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1149,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1150,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1151,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1151,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1152,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1153,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1157,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1158,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1159,1
    - Dst: json_ostream_nopen_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1160,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1161,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1162,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1163,1
    - Dst: json_ostream_nclose_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1164,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1165,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1166,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1167,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1167,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1168,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1169,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1173,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1174,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1175,1
    - Dst: json_ostream_nopen_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1176,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1177,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1178,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1179,1
    - Dst: json_ostream_nclose_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1180,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1181,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1182,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1183,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1183,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1184,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1185,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1189,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1191,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1192,1
    - Dst: json_ostream_nopen_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1193,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1194,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1195,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1196,1
    - Dst: json_ostream_nclose_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1197,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1198,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1199,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1200,1
    - Dst: json_ostream_nopen_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1201,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1202,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1203,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1204,1
    - Dst: json_ostream_nclose_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1205,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1206,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1207,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1208,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1210,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1211,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1212,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1216,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1218,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1219,1
    - Dst: json_ostream_nopen_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1220,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1221,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1222,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1223,1
    - Dst: json_ostream_nclose_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1224,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1225,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1226,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1227,1
    - Dst: json_ostream_nopen_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1228,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1229,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1230,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1231,1
    - Dst: json_ostream_nclose_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1232,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1233,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1234,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1235,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1237,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1238,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1239,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1242,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 249
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 1244
    functionName: test_json_ostream_nwrite
    functionSourceFile: /src/dovecot/src/lib-json/test-json-ostream.c
    functionUses: 0
    functionsReached:
    - json_ostream_nwrite_number
    - str_c
    - json_ostream_nclose_string
    - strlen
    - json_ostream_nwrite_string
    - json_ostream_nwrite_null
    - i_stream_create_from_data
    - json_ostream_nopen_string
    - o_stream_create_buffer
    - json_ostream_nwrite_text
    - test_end
    - str_new
    - str_free
    - json_ostream_nascend_object
    - json_ostream_nwrite_true
    - test_assert_strcmp
    - json_ostream_nascend_array
    - json_ostream_nwrite_false
    - o_stream_destroy
    - i_stream_unref
    - json_ostream_ndescend_array
    - json_ostream_ndescend_object
    - json_ostream_create_str
    - json_ostream_create
    - o_stream_set_no_error_handling
    - str_truncate
    - json_ostream_nwrite_string_stream
    - json_ostream_nwritef_string
    - json_ostream_nfinish_destroy
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_ostream_nwrite(void)
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1258,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1259,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1260,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1263,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1264,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1265,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1266,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1266,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1267,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1268,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1269,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1270,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1271,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1272,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1273,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1273,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1274,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1275,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1279,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1280,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1281,1
    - Dst: json_tree_node_add_false
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1282,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1282,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1283,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1284,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1285,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1286,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1287,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1288,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1289,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1289,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1290,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1291,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1295,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1296,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1297,1
    - Dst: json_tree_node_add_null
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1298,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1298,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1299,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1300,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1301,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1302,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1303,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1304,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1305,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1305,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1306,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1307,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1311,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1312,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1313,1
    - Dst: json_tree_node_add_true
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1314,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1314,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1315,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1316,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1317,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1318,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1319,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1320,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1321,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1321,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1322,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1323,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1327,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1328,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1329,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1330,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1330,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1331,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1332,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1333,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1334,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1335,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1336,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1337,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1337,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1338,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1339,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1343,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1344,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1345,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1347,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1347,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1348,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1348,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1350,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1351,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1352,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1353,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1354,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1355,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1356,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1357,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1359,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1360,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1361,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1365,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1366,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1367,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1368,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1368,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1369,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1370,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1371,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1372,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1373,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1374,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1375,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1375,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1376,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1377,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1381,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1382,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1383,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1384,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1384,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1385,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1386,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1387,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1388,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1389,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1390,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1391,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1392,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1392,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1393,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1394,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1398,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1399,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1400,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1401,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1401,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1403,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1403,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1404,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1405,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1406,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1407,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1408,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1409,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1410,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1411,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1412,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1414,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1415,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1416,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1420,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1421,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1422,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1423,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1423,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1424,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1425,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1426,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1427,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1428,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1429,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1430,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1430,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1431,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1432,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1436,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1437,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1438,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1439,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1439,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1440,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1441,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1442,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1443,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1444,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1445,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1446,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1447,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1447,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1448,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1449,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1453,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1454,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1455,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1456,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1456,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1458,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1458,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1459,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1460,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1462,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1463,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1464,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1465,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1466,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1467,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1470,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1471,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1472,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1476,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1479,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1480,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1481,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1481,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1482,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1483,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1484,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1485,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1486,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1487,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1488,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1489,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1490,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1491,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1492,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1493,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1494,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1495,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1496,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1497,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1498,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1499,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1500,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1501,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1503,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1504,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1505,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1509,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1510,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1511,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1512,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1513,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1514,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1515,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1516,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1517,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1518,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1519,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1520,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1521,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1522,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1523,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1524,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1525,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1526,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1527,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1528,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1529,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1530,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1531,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1532,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1533,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1534,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1535,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1536,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1537,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1538,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1539,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1540,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1541,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1542,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1544,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1545,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1546,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1550,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1551,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1552,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1553,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1554,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1555,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1556,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1557,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1558,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1559,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1560,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1561,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1562,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1563,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1564,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1565,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1566,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1567,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1568,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1569,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1570,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1571,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1572,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1573,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1574,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1575,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1576,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1577,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1578,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1579,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1580,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1581,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1582,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1583,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1585,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1586,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1587,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1591,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1592,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1593,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1594,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1595,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1596,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1597,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1598,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1599,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1600,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1601,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1602,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1603,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1604,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1605,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1606,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1607,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1608,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1609,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1610,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1611,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1612,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1613,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1614,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1615,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1616,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1617,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1618,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1619,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1620,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1621,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1622,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1623,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1624,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1625,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1626,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1628,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1629,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1630,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1634,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1635,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1636,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1637,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1638,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1639,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1640,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1641,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1642,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1643,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1644,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1645,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1646,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1647,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1648,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1649,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1650,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1651,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1652,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1655,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1658,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1659,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1662,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1666,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1667,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1674,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1675,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1676,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1678,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1679,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1680,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1684,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1685,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1686,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1689,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1692,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1693,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1699,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1700,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1701,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1702,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1703,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1707,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1708,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1711,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1715,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1716,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1717,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1718,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1719,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1723,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1724,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1727,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1731,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1732,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1733,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1734,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1735,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1739,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1740,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1743,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1747,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1748,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1755,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1756,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1757,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1759,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1760,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1761,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1765,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1766,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1767,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1768,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1769,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1770,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1771,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1772,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1773,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1774,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1775,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1776,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1777,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1778,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1779,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1780,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1781,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1782,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1783,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1784,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1785,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1786,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1787,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1788,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1789,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1790,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1791,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1792,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1793,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1794,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1797,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1800,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1801,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1804,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1808,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1809,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1816,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1817,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1818,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1820,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1821,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1822,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1826,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1827,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1828,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1831,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1834,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1835,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1841,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1842,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1843,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1844,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1845,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1850,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1851,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1854,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1858,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1859,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1860,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1861,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1862,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1867,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1868,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1871,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1875,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1876,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1877,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1878,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1879,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1884,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1885,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1888,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1892,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1893,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1900,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1901,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1902,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1905,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1906,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1907,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1911,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1912,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1913,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1916,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1919,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1920,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1926,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1927,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1928,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1929,1
    - Dst: json_tree_node_add_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1930,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1934,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1935,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1938,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1942,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1943,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1944,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1945,1
    - Dst: json_tree_node_add_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1946,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1951,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1952,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1955,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1959,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1960,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1961,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1962,1
    - Dst: json_tree_node_add_text
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1963,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1968,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1969,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1972,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1976,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1977,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1984,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1985,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1986,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1989,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1990,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1991,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1995,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1996,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1997,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1998,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1998,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:1999,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2000,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2002,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2002,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2003,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2004,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2005,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2006,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2007,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2008,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2010,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2010,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2011,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2012,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2013,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2014,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2015,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2016,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2018,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2018,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2019,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2020,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2021,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2024,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2027,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2028,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2030,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2034,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2035,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2041,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2042,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2043,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2046,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2047,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2048,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2051,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2052,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 705
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 1246
    functionDepth: 1
    functionLinenumber: 1246
    functionLinenumberEnd: 2053
    functionName: test_json_ostream_write_tree
    functionSourceFile: /src/dovecot/src/lib-json/test-json-ostream.c
    functionUses: 0
    functionsReached:
    - str_c
    - json_tree_node_add_string
    - json_tree_node_add_false
    - strlen
    - json_tree_node_add_array
    - test_assert
    - i_stream_create_from_data
    - o_stream_create_buffer
    - json_tree_create
    - json_tree_node_add_text
    - json_tree_node_add_subtree
    - test_end
    - json_tree_get_root
    - json_tree_unref
    - json_ostream_unref
    - json_tree_node_add_true
    - str_new
    - str_free
    - json_tree_node_get_parent
    - json_ostream_write_tree
    - test_assert_strcmp
    - i_assert
    - json_tree_node_add_number_int
    - json_tree_node_add_object
    - o_stream_set_max_buffer_size
    - o_stream_destroy
    - json_ostream_ascend_object
    - json_ostream_create
    - json_ostream_descend_object
    - o_stream_set_no_error_handling
    - json_ostream_flush
    - str_truncate
    - i_stream_unref
    - json_tree_node_add_string_stream
    - test_begin
    - json_tree_node_add_null
    linkageType: ''
    returnType: void
    signature: void test_json_ostream_write_tree(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2065,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2066,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2067,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2070,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2071,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2072,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2073,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2073,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2074,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2075,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2076,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2077,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2077,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2078,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2079,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2083,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2084,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2085,1
    - Dst: json_tree_node_add_false
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2086,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2086,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2087,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2088,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2089,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2090,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2090,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2091,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2092,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2096,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2097,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2098,1
    - Dst: json_tree_node_add_null
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2099,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2099,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2100,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2101,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2102,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2103,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2103,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2104,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2105,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2109,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2110,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2111,1
    - Dst: json_tree_node_add_true
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2112,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2112,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2113,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2114,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2115,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2116,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2116,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2117,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2118,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2122,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2123,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2124,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2125,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2125,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2126,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2127,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2128,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2129,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2129,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2130,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2131,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2135,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2136,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2137,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2139,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2139,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2140,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2140,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2142,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2143,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2144,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2145,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2146,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2148,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2149,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2150,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2154,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2155,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2156,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2157,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2157,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2158,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2159,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2160,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2161,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2161,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2162,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2163,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2167,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2168,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2169,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2170,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2170,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2171,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2172,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2173,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2174,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2175,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2175,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2176,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2177,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2181,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2182,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2183,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2184,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2184,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2186,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2186,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2187,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2188,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2189,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2190,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2191,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2192,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2194,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2195,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2196,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2200,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2201,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2202,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2203,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2203,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2204,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2205,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2206,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2207,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2207,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2208,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2209,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2213,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2214,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2215,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2216,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2216,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2217,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2218,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2219,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2220,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2221,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2221,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2222,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2223,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2227,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2229,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2230,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2231,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2231,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2233,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2233,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2234,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2235,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2236,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2237,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2238,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2239,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2242,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2243,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2244,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2248,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2251,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2252,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2253,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2253,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2254,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2255,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2256,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2257,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2258,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2259,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2260,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2261,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2262,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2263,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2264,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2265,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2266,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2267,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2268,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2269,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2270,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2272,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2273,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2274,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2278,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2279,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2280,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2281,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2282,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2283,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2284,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2285,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2286,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2287,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2288,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2289,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2290,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2291,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2292,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2293,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2294,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2295,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2296,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2297,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2298,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2299,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2300,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2301,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2302,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2303,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2304,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2306,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2307,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2308,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2312,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2313,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2314,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2315,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2316,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2317,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2318,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2319,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2320,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2321,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2322,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2323,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2324,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2325,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2326,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2327,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2328,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2329,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2330,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2331,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2332,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2333,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2334,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2335,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2336,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2337,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2338,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2340,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2341,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2342,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2346,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2347,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2348,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2349,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2350,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2351,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2352,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2353,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2354,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2355,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2356,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2357,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2358,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2359,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2360,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2361,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2362,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2363,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2364,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2365,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2366,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2367,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2368,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2369,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2370,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2371,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2372,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2373,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2374,1
    - Dst: json_ostream_nwrite_tree
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2375,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2376,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2377,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2378,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2380,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2381,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2382,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2385,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 271
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 2055
    functionDepth: 1
    functionLinenumber: 2055
    functionLinenumberEnd: 2387
    functionName: test_json_ostream_nwrite_tree
    functionSourceFile: /src/dovecot/src/lib-json/test-json-ostream.c
    functionUses: 0
    functionsReached:
    - str_c
    - json_tree_node_add_string
    - json_tree_node_add_false
    - json_ostream_nwrite_tree
    - strlen
    - json_tree_node_add_array
    - i_stream_create_from_data
    - o_stream_create_buffer
    - json_tree_create
    - json_tree_node_add_subtree
    - test_end
    - json_tree_get_root
    - json_tree_unref
    - json_tree_node_add_true
    - str_new
    - str_free
    - json_tree_node_get_parent
    - json_ostream_nascend_object
    - test_assert_strcmp
    - json_tree_node_add_number_int
    - json_tree_node_add_object
    - o_stream_destroy
    - json_ostream_ndescend_object
    - json_tree_node_add_string_stream
    - json_ostream_create
    - o_stream_set_no_error_handling
    - str_truncate
    - i_stream_unref
    - json_ostream_nfinish_destroy
    - test_begin
    - json_tree_node_add_null
    linkageType: ''
    returnType: void
    signature: void test_json_ostream_nwrite_tree(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2395,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2396,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2397,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2400,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2401,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2402,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2403,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2404,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2405,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2406,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2406,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2407,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2408,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2412,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2413,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2414,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2415,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2416,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2417,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2418,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2419,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2420,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2420,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2421,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2422,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2426,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2427,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2428,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2429,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2430,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2431,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2432,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2433,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2434,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2435,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2435,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2436,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2437,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2441,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2442,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2443,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2444,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2445,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2446,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2447,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2448,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2449,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2450,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2450,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2451,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2452,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2456,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2457,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2458,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2459,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2460,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2461,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2462,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2463,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2464,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2465,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2466,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2467,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2467,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2468,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2469,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2473,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2474,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2475,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2476,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2477,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2478,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2479,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2480,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2481,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2481,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2482,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2483,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2487,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2489,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2490,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2491,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2492,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2493,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2494,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2495,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2496,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2497,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2497,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2498,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2499,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2503,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2505,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2506,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2507,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2508,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2509,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2510,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2511,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2512,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2513,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2513,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2514,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2515,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2519,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2521,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2522,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2523,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2524,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2525,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2526,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2527,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2528,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2529,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2530,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2531,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2531,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2532,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2533,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2537,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2538,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2539,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2540,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2541,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2542,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2543,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2544,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2545,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2545,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2546,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2547,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2551,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2552,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2553,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2554,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2555,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2556,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2557,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2558,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2559,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2560,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2560,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2561,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2562,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2566,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2568,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2569,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2570,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2571,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2572,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2573,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2574,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2575,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2576,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2576,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2577,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2578,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2582,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2583,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2584,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2585,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2586,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2587,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2588,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2589,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2590,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2591,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2592,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2593,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2593,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2594,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2595,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2599,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2600,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2601,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2602,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2603,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2604,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2605,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2606,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2607,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2608,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2609,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2610,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2610,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2611,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2612,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2616,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2617,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2618,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2619,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2620,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2621,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2622,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2623,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2624,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2625,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2626,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2627,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2627,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2628,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2629,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2632,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 205
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2634
      start: 2389
    functionDepth: 1
    functionLinenumber: 2389
    functionLinenumberEnd: 2634
    functionName: test_json_ostream_nwrite_space
    functionSourceFile: /src/dovecot/src/lib-json/test-json-ostream.c
    functionUses: 0
    functionsReached:
    - json_ostream_nopen_space
    - str_c
    - json_ostream_nwrite_string
    - o_stream_create_buffer
    - test_end
    - str_new
    - str_free
    - json_ostream_nascend_object
    - test_assert_strcmp
    - json_ostream_nascend_array
    - o_stream_nsend_str
    - o_stream_destroy
    - json_ostream_ndescend_array
    - json_ostream_ndescend_object
    - json_ostream_create
    - json_ostream_close_space
    - o_stream_set_no_error_handling
    - str_truncate
    - json_ostream_nfinish_destroy
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_ostream_nwrite_space(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2649,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2655,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-json/test-json-ostream.c:2659,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2660
      start: 2636
    functionDepth: 1
    functionLinenumber: 2636
    functionLinenumberEnd: 2660
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-json/test-json-ostream.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - getopt
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-io.c:715,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/test-json-io.c:716,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:717,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-io.c:722,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-json/test-json-io.c:723,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-json/test-json-io.c:725,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - tproc
    - type
    - value
    argTypes:
    - struct test_io_processor*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 730
    functionName: test_copy_value
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_data
    - str_truncate
    - str_append
    - str_append_data
    linkageType: ''
    returnType: void
    signature: "void test_copy_value(struct test_io_processor *tproc, enum json_type
      type,\n\t\tconst struct json_value *value)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-io.c:747,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-io.c:749,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/test-json-io.c:750,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/test-json-io.c:751,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-io.c:758,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-io.c:760,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - context
    - parent_context ATTR_UNUSED
    - name
    - object
    - list_context_r ATTR_UNUSED
    argTypes:
    - void*
    - void*
    - char*
    - bool
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 761
    functionName: test_parse_list_open
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - json_parser_interrupt
    - json_generate_array_open
    - json_generate_object_member
    - str_truncate
    - str_append
    - json_generate_object_open
    linkageType: ''
    returnType: void
    signature: "void test_parse_list_open(void *context, void *parent_context ATTR_UNUSED,\n\t\t
      \    const char *name, bool object,\n\t\t     void **list_context_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-io.c:772,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-io.c:775,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/test-json-io.c:778,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - context
    - list_context ATTR_UNUSED
    - object
    argTypes:
    - void*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 783
    functionName: test_parse_list_close
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - json_generate_array_close
    - json_parser_interrupt
    - json_generate_object_close
    linkageType: ''
    returnType: void
    signature: "void test_parse_list_close(void *context, void *list_context ATTR_UNUSED,\n\t\t
      \     bool object)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-io.c:796,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-io.c:798,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/test-json-io.c:799,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/test-json-io.c:800,1
    - Dst: test_copy_value
      Src: /src/dovecot/src/lib-json/test-json-io.c:801,1
    - Dst: json_generate_value
      Src: /src/dovecot/src/lib-json/test-json-io.c:808,1
    - Dst: test_copy_value
      Src: /src/dovecot/src/lib-json/test-json-io.c:811,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/test-json-io.c:812,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - context
    - parent_context ATTR_UNUSED
    - name
    - type
    - value
    argTypes:
    - void*
    - void*
    - char*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 785
    functionDepth: 2
    functionLinenumber: 785
    functionLinenumberEnd: 817
    functionName: test_parse_value
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - json_parser_interrupt
    - json_generate_object_member
    - test_copy_value
    - str_truncate
    - json_generate_value
    - str_append
    linkageType: ''
    returnType: void
    signature: "void test_parse_value(void *context, void *parent_context ATTR_UNUSED,\n\t\t
      const char *name, enum json_type type,\n\t\t const struct json_value *value)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-io.c:827,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:828,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-io.c:832,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-io.c:835,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:836,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-io.c:840,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-io.c:843,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:844,1
    - Dst: json_generate_value
      Src: /src/dovecot/src/lib-json/test-json-io.c:850,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-io.c:856,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-io.c:861,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 1
    argNames:
    - tproc
    argTypes:
    - struct test_io_processor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 819
    functionDepth: 1
    functionLinenumber: 819
    functionLinenumberEnd: 869
    functionName: test_write
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - json_generate_array_close
    - str_c
    - json_generate_array_open
    - json_generate_object_close
    - json_generate_object_member
    - json_generate_value
    - json_generate_object_open
    linkageType: ''
    returnType: int
    signature: int test_write(struct test_io_processor *tproc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:883,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-io.c:884,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-io.c:885,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-io.c:888,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-io.c:891,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-io.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - tproc
    - test
    - input
    - output
    argTypes:
    - struct test_io_processor*
    - struct json_io_test*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 895
    functionName: test_io_processor_init
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_generator_init
    - o_stream_set_no_error_handling
    - json_parser_init
    - str_new
    linkageType: ''
    returnType: void
    signature: "void test_io_processor_init(struct test_io_processor *tproc,\n\t\t
      \      const struct json_io_test *test,\n\t\t       struct istream *input, struct
      ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-io.c:899,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-io.c:900,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-json/test-json-io.c:902,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-json/test-json-io.c:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tproc
    argTypes:
    - struct test_io_processor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 904
    functionName: test_io_processor_deinit
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - json_generator_deinit
    - json_parser_deinit
    linkageType: ''
    returnType: void
    signature: void test_io_processor_deinit(struct test_io_processor *tproc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-io.c:912,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-io.c:925,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-io.c:927,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:927,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-io.c:929,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:937,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-io.c:939,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-io.c:940,1
    - Dst: test_io_processor_init
      Src: /src/dovecot/src/lib-json/test-json-io.c:941,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:943,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:949,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:950,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-io.c:953,1
    - Dst: test_write
      Src: /src/dovecot/src/lib-json/test-json-io.c:958,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-io.c:966,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:968,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-io.c:969,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:971,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:972,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:975,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:976,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:979,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:980,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-io.c:982,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:982,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-io.c:984,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-io.c:985,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:985,1
    - Dst: test_io_processor_deinit
      Src: /src/dovecot/src/lib-json/test-json-io.c:988,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:989,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:990,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-io.c:993,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 906
    functionDepth: 2
    functionLinenumber: 906
    functionLinenumberEnd: 995
    functionName: test_json_io
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - str_c
    - strlen
    - t_strdup_printf
    - json_parse_more
    - buffer_set_used_size
    - test_io_processor_init
    - json_generator_flush
    - test_write
    - o_stream_create_buffer
    - test_end
    - test_istream_set_size
    - str_new
    - i_stream_destroy
    - test_out_reason_quiet
    - test_io_processor_deinit
    - test_out_quiet
    - o_stream_set_max_buffer_size
    - N_ELEMENTS
    - o_stream_destroy
    - strcmp
    - test_istream_create_data
    - i_debug
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_io(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-io.c:1005,1
    - Dst: test_write
      Src: /src/dovecot/src/lib-json/test-json-io.c:1007,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-json/test-json-io.c:1009,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1010,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1014,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1015,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1020,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1021,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1025,1
    - Dst: test_write
      Src: /src/dovecot/src/lib-json/test-json-io.c:1027,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-io.c:1029,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-json/test-json-io.c:1031,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1032,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1035,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1035,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1039,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1043,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-json/test-json-io.c:1044,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 1
    argNames:
    - tproc
    argTypes:
    - struct test_io_processor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1000
    functionDepth: 2
    functionLinenumber: 1000
    functionLinenumberEnd: 1046
    functionName: test_json_async_io_input_callback
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - test_out_reason_quiet
    - o_stream_close
    - io_remove
    - json_parse_more
    - t_strdup_printf
    - test_out_quiet
    - o_stream_set_flush_pending
    - io_loop_stop
    - json_generator_flush
    - test_assert
    - test_write
    linkageType: ''
    returnType: void
    signature: void test_json_async_io_input_callback(struct test_io_processor *tproc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-io.c:1052,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1056,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1057,1
    - Dst: test_write
      Src: /src/dovecot/src/lib-json/test-json-io.c:1061,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1065,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1066,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-json/test-json-io.c:1071,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-json/test-json-io.c:1073,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - tproc
    argTypes:
    - struct test_io_processor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1048
    functionDepth: 2
    functionLinenumber: 1048
    functionLinenumberEnd: 1076
    functionName: test_json_async_io_flush_callback
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - i_stream_set_input_pending
    - io_loop_stop
    - json_generator_flush
    - test_assert
    - test_write
    linkageType: ''
    returnType: int
    signature: int test_json_async_io_flush_callback(struct test_io_processor *tproc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1083,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1084,1
    - Dst: iostream_pump_get_output
      Src: /src/dovecot/src/lib-json/test-json-io.c:1088,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-json/test-json-io.c:1090,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1091,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - status
    - tctx
    argTypes:
    - enum iostream_pump_status
    - struct test_io_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1078
    functionDepth: 1
    functionLinenumber: 1078
    functionLinenumberEnd: 1092
    functionName: test_json_async_io_pump_in_callback
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - iostream_pump_get_output
    - o_stream_close
    - iostream_pump_destroy
    - io_loop_stop
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_json_async_io_pump_in_callback(enum iostream_pump_status
      status,\n\t\t\t\t    struct test_io_context *tctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1099,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1101,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - status
    - tctx
    argTypes:
    - enum iostream_pump_status
    - struct test_io_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1103
    functionName: test_json_async_io_pump_out_callback
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - iostream_pump_destroy
    - io_loop_stop
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_json_async_io_pump_out_callback(enum iostream_pump_status
      status,\n\t\t\t\t     struct test_io_context *tctx)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1118,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-io.c:1126,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-io.c:1128,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-json/test-json-io.c:1130,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1131,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-json/test-json-io.c:1132,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1133,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-json/test-json-io.c:1134,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1135,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1136,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1137,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1138,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1139,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1140,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1141,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1143,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-io.c:1145,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-io.c:1146,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1150,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1151,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1152,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1155,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1156,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1157,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/test-json-io.c:1160,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1165,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1166,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1167,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1170,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1171,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1172,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/test-json-io.c:1175,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1178,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1179,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib-json/test-json-io.c:1181,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib-json/test-json-io.c:1183,1
    - Dst: test_io_processor_init
      Src: /src/dovecot/src/lib-json/test-json-io.c:1187,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-json/test-json-io.c:1190,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-json/test-json-io.c:1192,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-json/test-json-io.c:1194,1
    - Dst: test_io_processor_init
      Src: /src/dovecot/src/lib-json/test-json-io.c:1198,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-json/test-json-io.c:1201,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-json/test-json-io.c:1203,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-json/test-json-io.c:1205,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1214,1
    - Dst: json_generator_set_format
      Src: /src/dovecot/src/lib-json/test-json-io.c:1218,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/test-json-io.c:1221,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-json/test-json-io.c:1224,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib-json/test-json-io.c:1226,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib-json/test-json-io.c:1227,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-json/test-json-io.c:1229,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1231,1
    - Dst: test_io_processor_deinit
      Src: /src/dovecot/src/lib-json/test-json-io.c:1233,1
    - Dst: test_io_processor_deinit
      Src: /src/dovecot/src/lib-json/test-json-io.c:1234,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1236,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1237,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1239,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1240,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1241,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1242,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1244,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1245,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1246,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1247,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1249,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1251,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1251,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-io.c:1252,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:1252,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-json/test-json-io.c:1254,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 119
    argCount: 2
    argNames:
    - test
    - scenario
    argTypes:
    - struct json_io_test*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1105
    functionDepth: 2
    functionLinenumber: 1105
    functionLinenumberEnd: 1255
    functionName: test_json_async_io_run
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - str_c
    - iostream_pump_set_completion_callback
    - iostream_pump_create
    - o_stream_uncork
    - strlen
    - t_strdup_printf
    - io_loop_destroy
    - test_io_processor_init
    - o_stream_set_flush_callback
    - i_stream_create_from_data
    - io_loop_run
    - o_stream_create_buffer
    - i_unreached
    - iostream_pump_destroy
    - timeout_add
    - i_fatal
    - buffer_free
    - str_new
    - pipe
    - i_zero
    - i_stream_destroy
    - test_io_processor_deinit
    - io_add_istream
    - json_generator_set_format
    - test_out_quiet
    - o_stream_create_fd_autoclose
    - i_stream_create_fd_autoclose
    - o_stream_destroy
    - strcmp
    - fd_set_nonblock
    - io_loop_create
    - iostream_pump_start
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_json_async_io_run(const struct json_io_test *test, unsigned
      int scenario)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-io.c:1262,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1262,1
    - Dst: test_json_async_io_run
      Src: /src/dovecot/src/lib-json/test-json-io.c:1265,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-io.c:1267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1257
    functionDepth: 3
    functionLinenumber: 1257
    functionLinenumberEnd: 1268
    functionName: test_json_io_async
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_json_async_io_run
    - t_strdup_printf
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_io_async(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-io.c:1306,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-io.c:1318,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-io.c:1320,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1320,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-io.c:1322,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:1333,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-io.c:1335,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-io.c:1336,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-io.c:1337,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1339,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1340,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:1342,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1344,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:1348,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:1349,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-io.c:1353,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1356,1
    - Dst: json_istream_failed
      Src: /src/dovecot/src/lib-json/test-json-io.c:1356,1
    - Dst: json_node_is_none
      Src: /src/dovecot/src/lib-json/test-json-io.c:1358,1
    - Dst: json_ostream_write_node
      Src: /src/dovecot/src/lib-json/test-json-io.c:1361,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1366,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:1370,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-io.c:1371,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1372,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-io.c:1374,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1376,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1377,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1380,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1381,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1384,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1385,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-io.c:1387,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:1387,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-io.c:1389,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-io.c:1390,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:1390,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-io.c:1393,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-io.c:1394,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-io.c:1397,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1300
    functionDepth: 1
    functionLinenumber: 1300
    functionLinenumberEnd: 1399
    functionName: test_json_stream_io
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - str_c
    - json_ostream_write_node
    - json_istream_create
    - strlen
    - o_stream_unref
    - t_strdup_printf
    - buffer_set_used_size
    - json_istream_walk
    - test_assert
    - json_node_is_none
    - o_stream_create_buffer
    - test_end
    - test_istream_set_size
    - str_new
    - json_ostream_destroy
    - i_zero
    - test_out_reason_quiet
    - test_out_quiet
    - json_istream_finish
    - o_stream_set_max_buffer_size
    - N_ELEMENTS
    - json_istream_failed
    - strcmp
    - json_ostream_create
    - o_stream_set_no_error_handling
    - test_istream_create_data
    - json_ostream_flush
    - i_stream_unref
    - i_debug
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_stream_io(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_none
      Src: /src/dovecot/src/lib-json/test-json-io.c:1408,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1409,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-io.c:1413,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1414,1
    - Dst: json_istream_failed
      Src: /src/dovecot/src/lib-json/test-json-io.c:1414,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-io.c:1418,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1419,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1421,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1422,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1427,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1430,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-json/test-json-io.c:1431,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-json/test-json-io.c:1438,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - tproc
    argTypes:
    - struct test_sio_processor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1404
    functionDepth: 1
    functionLinenumber: 1404
    functionLinenumberEnd: 1439
    functionName: test_json_stream_io_input_callback
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - i_assert
    - test_out_reason_quiet
    - io_remove
    - t_strdup_printf
    - o_stream_set_flush_pending
    - io_loop_stop
    - json_istream_finish
    - json_istream_walk
    - test_assert
    - json_node_is_none
    - json_istream_failed
    linkageType: ''
    returnType: void
    signature: void test_json_stream_io_input_callback(struct test_sio_processor *tproc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_none
      Src: /src/dovecot/src/lib-json/test-json-io.c:1445,1
    - Dst: json_ostream_write_node
      Src: /src/dovecot/src/lib-json/test-json-io.c:1448,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1452,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1453,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1457,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1460,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-io.c:1463,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1466,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1467,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1471,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1473,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-json/test-json-io.c:1474,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-json/test-json-io.c:1480,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-json/test-json-io.c:1482,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 1
    argNames:
    - tproc
    argTypes:
    - struct test_sio_processor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1441
    functionDepth: 1
    functionLinenumber: 1441
    functionLinenumberEnd: 1485
    functionName: test_json_stream_io_flush_callback
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_node
    - o_stream_close
    - io_add_istream
    - io_remove
    - i_stream_set_input_pending
    - t_strdup_printf
    - test_out_quiet
    - io_loop_stop
    - json_ostream_flush
    - test_assert
    - json_node_is_none
    linkageType: ''
    returnType: int
    signature: int test_json_stream_io_flush_callback(struct test_sio_processor *tproc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1492,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1493,1
    - Dst: iostream_pump_get_output
      Src: /src/dovecot/src/lib-json/test-json-io.c:1497,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-json/test-json-io.c:1499,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - status
    - tctx
    argTypes:
    - enum iostream_pump_status
    - struct test_sio_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1487
    functionDepth: 1
    functionLinenumber: 1487
    functionLinenumberEnd: 1501
    functionName: test_json_stream_io_pump_in_callback
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - iostream_pump_get_output
    - o_stream_close
    - iostream_pump_destroy
    - io_loop_stop
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_json_stream_io_pump_in_callback(enum iostream_pump_status
      status,\n\t\t\t\t     struct test_sio_context *tctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1508,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-json/test-json-io.c:1510,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - status
    - tctx
    argTypes:
    - enum iostream_pump_status
    - struct test_sio_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1503
    functionDepth: 1
    functionLinenumber: 1503
    functionLinenumberEnd: 1512
    functionName: test_json_stream_io_pump_out_callback
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - iostream_pump_destroy
    - io_loop_stop
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_json_stream_io_pump_out_callback(enum iostream_pump_status
      status,\n\t\t\t\t      struct test_sio_context *tctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1519,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-io.c:1522,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-json/test-json-io.c:1523,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-json/test-json-io.c:1525,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-json/test-json-io.c:1528,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1531,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - tproc
    - test
    - input
    - output
    argTypes:
    - struct test_sio_processor*
    - struct json_io_test*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1514
    functionDepth: 1
    functionLinenumber: 1514
    functionLinenumberEnd: 1534
    functionName: test_sio_processor_init
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_istream_create
    - io_add_istream
    - o_stream_uncork
    - json_ostream_create
    - o_stream_set_no_error_handling
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: void
    signature: "void test_sio_processor_init(struct test_sio_processor *tproc,\n\t\t\tconst
      struct json_io_test *test,\n\t\t\tstruct istream *input, struct ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1538,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tproc
    argTypes:
    - struct test_sio_processor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1536
    functionDepth: 1
    functionLinenumber: 1536
    functionLinenumberEnd: 1540
    functionName: test_sio_processor_deinit
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - json_istream_destroy
    - json_ostream_destroy
    linkageType: ''
    returnType: void
    signature: void test_sio_processor_deinit(struct test_sio_processor *tproc)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1556,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-io.c:1564,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-io.c:1566,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-json/test-json-io.c:1568,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1569,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-json/test-json-io.c:1570,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1571,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-json/test-json-io.c:1572,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1573,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1574,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1575,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1576,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1577,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1578,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-json/test-json-io.c:1579,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1581,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-io.c:1583,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-io.c:1584,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1588,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1589,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1590,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1593,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1594,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1595,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/test-json-io.c:1598,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1603,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1604,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1605,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1608,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1609,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1610,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/test-json-io.c:1613,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1616,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1617,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib-json/test-json-io.c:1619,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib-json/test-json-io.c:1621,1
    - Dst: test_sio_processor_init
      Src: /src/dovecot/src/lib-json/test-json-io.c:1625,1
    - Dst: test_sio_processor_init
      Src: /src/dovecot/src/lib-json/test-json-io.c:1630,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1640,1
    - Dst: json_ostream_set_format
      Src: /src/dovecot/src/lib-json/test-json-io.c:1644,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/test-json-io.c:1647,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-json/test-json-io.c:1650,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib-json/test-json-io.c:1652,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib-json/test-json-io.c:1653,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-json/test-json-io.c:1655,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-json/test-json-io.c:1657,1
    - Dst: test_sio_processor_deinit
      Src: /src/dovecot/src/lib-json/test-json-io.c:1659,1
    - Dst: test_sio_processor_deinit
      Src: /src/dovecot/src/lib-json/test-json-io.c:1660,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1662,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1663,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1665,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1666,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1667,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1668,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1670,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1671,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1672,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1673,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1675,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1677,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1677,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-io.c:1678,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:1678,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-json/test-json-io.c:1680,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 113
    argCount: 2
    argNames:
    - test
    - scenario
    argTypes:
    - struct json_io_test*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1542
    functionDepth: 2
    functionLinenumber: 1542
    functionLinenumberEnd: 1681
    functionName: test_json_stream_io_async_run
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - str_c
    - iostream_pump_set_completion_callback
    - iostream_pump_create
    - strlen
    - t_strdup_printf
    - io_loop_destroy
    - i_stream_create_from_data
    - io_loop_run
    - o_stream_create_buffer
    - test_sio_processor_init
    - i_unreached
    - iostream_pump_destroy
    - timeout_add
    - i_fatal
    - buffer_free
    - str_new
    - json_ostream_set_format
    - pipe
    - i_zero
    - i_stream_destroy
    - test_out_quiet
    - o_stream_create_fd_autoclose
    - i_stream_create_fd_autoclose
    - o_stream_destroy
    - strcmp
    - fd_set_nonblock
    - io_loop_create
    - iostream_pump_start
    - test_sio_processor_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void test_json_stream_io_async_run(const struct json_io_test *test,\n\t\t\t
      \     unsigned int scenario)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-io.c:1688,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1688,1
    - Dst: test_json_stream_io_async_run
      Src: /src/dovecot/src/lib-json/test-json-io.c:1691,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-io.c:1692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1683
    functionDepth: 3
    functionLinenumber: 1683
    functionLinenumberEnd: 1693
    functionName: test_json_stream_io_async
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - test_json_stream_io_async_run
    - test_end
    - t_strdup_printf
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_stream_io_async(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-io.c:1706,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-io.c:1707,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1709,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:1720,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-json/test-json-io.c:1721,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-io.c:1729,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1729,1
    - Dst: json_text_format_cstr
      Src: /src/dovecot/src/lib-json/test-json-io.c:1731,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1733,1
    - Dst: json_text_format_buffer
      Src: /src/dovecot/src/lib-json/test-json-io.c:1735,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1737,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-io.c:1739,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-io.c:1740,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:1740,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-io.c:1742,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-io.c:1743,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:1743,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-io.c:1744,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-io.c:1744,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-io.c:1747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1700
    functionDepth: 1
    functionLinenumber: 1700
    functionLinenumberEnd: 1748
    functionName: test_json_text_io
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_text_format_cstr
    - strcmp
    - str_c
    - test_out_reason_quiet
    - json_text_format_buffer
    - t_strdup_printf
    - buffer_set_used_size
    - test_out_quiet
    - i_debug
    - test_end
    - str_new
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_text_io(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1767,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1773,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1774,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1777,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-io.c:1780,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1783,1
    - Dst: json_istream_failed
      Src: /src/dovecot/src/lib-json/test-json-io.c:1783,1
    - Dst: json_node_is_none
      Src: /src/dovecot/src/lib-json/test-json-io.c:1785,1
    - Dst: json_ostream_write_node
      Src: /src/dovecot/src/lib-json/test-json-io.c:1788,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-io.c:1793,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-io.c:1796,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-io.c:1798,1
    - Dst: json_istream_failed
      Src: /src/dovecot/src/lib-json/test-json-io.c:1799,1
    - Dst: json_istream_failed
      Src: /src/dovecot/src/lib-json/test-json-io.c:1800,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-io.c:1801,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-json/test-json-io.c:1802,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1804,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-io.c:1805,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1758
    functionDepth: 1
    functionLinenumber: 1758
    functionLinenumberEnd: 1806
    functionName: test_json_file_io_run
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_node
    - json_istream_create
    - test_out_reason
    - json_istream_get_error
    - json_ostream_create
    - test_out
    - json_ostream_destroy
    - json_ostream_flush
    - json_istream_walk
    - test_assert
    - json_istream_destroy
    - json_node_is_none
    - json_istream_failed
    linkageType: ''
    returnType: void
    signature: void test_json_file_io_run(struct istream *input, struct ostream *output)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/test-json-io.c:1815,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/test-json-io.c:1816,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-io.c:1819,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-io.c:1822,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-json/test-json-io.c:1826,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1827,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-io.c:1831,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1836,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-json/test-json-io.c:1837,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-io.c:1839,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-io.c:1842,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-json/test-json-io.c:1844,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1846,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-json/test-json-io.c:1847,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/test-json-io.c:1848,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-io.c:1849,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1851,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - input1
    - input2
    argTypes:
    - struct istream*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1808
    functionDepth: 1
    functionLinenumber: 1808
    functionLinenumberEnd: 1854
    functionName: test_json_file_compare
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - i_stream_have_bytes_left
    - i_fatal
    - i_stream_skip
    - i_stream_get_error
    - i_stream_read
    - i_stream_seek
    - memcmp
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void test_json_file_compare(struct istream *input1, struct istream
      *input2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-io.c:1862,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-io.c:1862,1
    - Dst: open
      Src: /src/dovecot/src/lib-json/test-json-io.c:1864,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1866,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/test-json-io.c:1868,1
    - Dst: iostream_temp_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1869,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-io.c:1870,1
    - Dst: test_json_file_io_run
      Src: /src/dovecot/src/lib-json/test-json-io.c:1871,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-io.c:1872,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-json/test-json-io.c:1874,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-io.c:1875,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-json/test-json-io.c:1879,1
    - Dst: iostream_temp_create
      Src: /src/dovecot/src/lib-json/test-json-io.c:1880,1
    - Dst: test_json_file_io_run
      Src: /src/dovecot/src/lib-json/test-json-io.c:1881,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-json/test-json-io.c:1883,1
    - Dst: test_json_file_compare
      Src: /src/dovecot/src/lib-json/test-json-io.c:1884,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-io.c:1886,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-io.c:1887,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-io.c:1889,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1856
    functionDepth: 2
    functionLinenumber: 1856
    functionLinenumberEnd: 1890
    functionName: test_json_file_io
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - iostream_temp_finish
    - o_stream_unref
    - i_fatal
    - open
    - t_strdup_printf
    - test_json_file_io_run
    - test_has_failed
    - o_stream_set_no_error_handling
    - test_end
    - iostream_temp_create
    - i_stream_create_fd_autoclose
    - test_json_file_compare
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_json_file_io(const char *file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: random_init
      Src: /src/dovecot/src/lib-json/test-json-io.c:1896,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-json/test-json-io.c:1907,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1913,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-io.c:1920,1
    - Dst: test_json_file_io
      Src: /src/dovecot/src/lib-json/test-json-io.c:1922,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-json/test-json-io.c:1926,1
    - Dst: random_deinit
      Src: /src/dovecot/src/lib-json/test-json-io.c:1928,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1892
    functionDepth: 3
    functionLinenumber: 1892
    functionLinenumberEnd: 1931
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-json/test-json-io.c
    functionUses: 0
    functionsReached:
    - getopt
    - i_fatal
    - test_json_file_io
    - test_run
    - random_init
    - random_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 173
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-generator.c:27,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-generator.c:28,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-generator.c:29,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:32,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:33,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:35,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:37,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:38,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:39,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:39,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:39,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:40,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:41,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:45,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:46,1
    - Dst: json_generate_number_raw
      Src: /src/dovecot/src/lib-json/test-json-generator.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:48,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:50,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:52,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:52,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:52,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:53,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:54,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:58,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:59,1
    - Dst: json_generate_false
      Src: /src/dovecot/src/lib-json/test-json-generator.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:61,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:63,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:65,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:65,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:65,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:66,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:67,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:71,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:72,1
    - Dst: json_generate_null
      Src: /src/dovecot/src/lib-json/test-json-generator.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:74,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:76,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:78,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:78,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:78,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:79,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:80,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:84,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:85,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:87,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:89,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:91,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:91,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:91,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:92,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:93,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:97,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:98,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:100,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:102,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:104,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:104,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:104,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:105,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:106,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:110,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:111,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:113,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:115,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:117,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:117,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:117,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:118,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:119,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:123,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:124,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:126,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:128,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:130,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:130,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:130,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:131,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:132,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:136,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:137,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:139,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:141,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:143,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:143,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:143,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:144,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:145,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:149,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:150,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:152,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:154,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:155,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:156,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:156,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:157,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:158,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:162,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:163,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:165,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:167,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:169,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:169,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:169,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:170,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:171,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:175,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:176,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:178,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:179,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:180,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:181,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:182,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:182,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:182,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:183,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:184,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:188,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:189,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:190,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:191,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:193,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:195,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:195,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:195,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:196,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:197,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:201,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:202,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:204,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:205,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:206,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:209,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:209,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:210,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:211,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:212,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:216,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:217,1
    - Dst: json_generate_string_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:218,1
    - Dst: json_generate_string_more
      Src: /src/dovecot/src/lib-json/test-json-generator.c:219,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:220,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:221,1
    - Dst: json_generate_string_more
      Src: /src/dovecot/src/lib-json/test-json-generator.c:222,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:223,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:224,1
    - Dst: json_generate_string_more
      Src: /src/dovecot/src/lib-json/test-json-generator.c:225,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:227,1
    - Dst: json_generate_string_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:228,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:230,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:232,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:232,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:232,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:233,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:234,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:238,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:239,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:241,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:241,1
    - Dst: json_generate_string_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:242,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:243,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:244,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:245,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:246,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:247,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:248,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:248,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:248,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:249,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:250,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:254,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:255,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:257,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:258,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:259,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:261,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:261,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:261,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:262,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:263,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:267,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:268,1
    - Dst: json_generate_text_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:269,1
    - Dst: json_generate_text_more
      Src: /src/dovecot/src/lib-json/test-json-generator.c:270,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:271,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:272,1
    - Dst: json_generate_text_more
      Src: /src/dovecot/src/lib-json/test-json-generator.c:273,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:275,1
    - Dst: json_generate_text_more
      Src: /src/dovecot/src/lib-json/test-json-generator.c:276,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:278,1
    - Dst: json_generate_text_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:279,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:280,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:282,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:283,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:284,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:284,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:284,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:285,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:286,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:290,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:291,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:293,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:293,1
    - Dst: json_generate_text_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:294,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:295,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:296,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:298,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:299,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:300,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:300,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:300,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:301,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:302,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:306,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:307,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:308,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:309,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:310,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:311,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:312,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:313,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:314,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:314,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:314,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:315,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:316,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:320,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:321,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:322,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:323,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:324,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:326,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:327,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:328,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:329,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:330,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:330,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:330,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:331,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:332,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:336,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:337,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:338,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:339,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:340,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:341,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:342,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:344,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:345,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:346,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:346,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:346,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:347,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:348,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:352,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:353,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:354,1
    - Dst: json_generate_false
      Src: /src/dovecot/src/lib-json/test-json-generator.c:355,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:356,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:357,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:358,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:359,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:360,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:361,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:362,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:362,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:362,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:363,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:364,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:368,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:369,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:370,1
    - Dst: json_generate_null
      Src: /src/dovecot/src/lib-json/test-json-generator.c:371,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:372,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:373,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:374,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:375,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:376,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:377,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:378,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:378,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:378,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:379,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:380,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:384,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:385,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:386,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:387,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:388,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:389,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:390,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:391,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:392,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:393,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:394,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:394,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:394,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:395,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:396,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:400,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:401,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:402,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:403,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:404,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:405,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:407,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:409,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:410,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:411,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:411,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:411,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:412,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:413,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:417,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:418,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:419,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:420,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:421,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:422,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:423,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:424,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:425,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:426,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:427,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:428,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:428,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:428,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:429,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:430,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:434,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:435,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:436,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:437,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:438,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:440,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:441,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:442,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:443,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:444,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:444,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:444,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:445,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:446,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:450,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:451,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:452,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:453,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:454,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:455,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:456,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:457,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:458,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:459,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:460,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:461,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:461,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:462,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:463,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:464,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:468,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:469,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:470,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:471,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:472,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:473,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:474,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:475,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:476,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:477,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:478,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:480,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:480,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:480,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:481,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:482,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:486,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:487,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:488,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:489,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:490,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:491,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:492,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:493,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:494,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:495,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:496,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:497,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:498,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:499,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:500,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:500,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:500,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:501,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:502,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:506,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:507,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:508,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:509,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:510,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:511,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:512,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:513,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:514,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:515,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:516,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:517,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:518,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:519,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:520,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:520,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:521,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:522,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:523,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:527,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:528,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:529,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:530,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:531,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:532,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:533,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:534,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:535,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:536,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:537,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:538,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:539,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:540,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:541,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:541,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:541,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:542,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:543,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:547,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:548,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:549,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:550,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:551,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:552,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:553,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:554,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:555,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:556,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:557,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:558,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:559,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:560,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:561,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:562,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:563,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:564,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:564,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:564,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:565,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:566,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:570,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:571,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:572,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:573,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:574,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:575,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:576,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:577,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:578,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:579,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:580,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:581,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:582,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:583,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:584,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:585,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:586,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:587,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:587,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:587,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:588,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:589,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:593,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:595,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:596,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:597,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:598,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:599,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:600,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:601,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:602,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:603,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:604,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:605,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:606,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:607,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:608,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:609,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:610,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:611,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:612,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:613,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:614,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:615,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:616,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:617,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:618,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:619,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:620,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:621,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:622,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:623,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:624,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:625,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:626,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:627,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:628,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:629,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:630,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:631,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:632,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:633,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:634,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:635,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:636,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:637,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:638,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:638,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:639,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:640,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:641,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:645,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:647,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:648,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:649,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:650,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:651,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:652,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:653,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:654,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:655,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:656,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:657,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:658,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:659,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:660,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:660,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:660,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:661,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:662,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:666,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:667,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:668,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:669,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:670,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:671,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:672,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:673,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:674,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:675,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:676,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:677,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:678,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:679,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:680,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:680,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:680,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:681,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:682,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:686,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:687,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:689,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:689,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:690,1
    - Dst: json_generate_string_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:691,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:692,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:693,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:694,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:695,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:696,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:697,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:698,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:699,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:699,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:701,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:702,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:703,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:707,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:708,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:710,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:710,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:711,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:712,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:713,1
    - Dst: json_generate_string_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:714,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:715,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:716,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:717,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:718,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:719,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:720,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:721,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:722,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:722,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:724,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:725,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:726,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:730,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:731,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:733,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:733,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:734,1
    - Dst: json_generate_text_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:735,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:736,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:737,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:738,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:739,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:740,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:741,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:742,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:743,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:743,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:744,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:745,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:746,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:750,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:751,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:753,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:753,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:754,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:755,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:756,1
    - Dst: json_generate_text_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:757,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:758,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:759,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:760,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:761,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:762,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:763,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:764,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:765,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:765,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:766,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:767,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:768,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:772,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:773,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:774,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:775,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:776,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:777,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:778,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:779,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:780,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:780,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:780,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:781,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:782,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:786,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:787,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:788,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:789,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:790,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:791,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:792,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:793,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:794,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:795,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:796,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:797,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:798,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:798,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:798,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:799,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:800,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:804,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:805,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:806,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:807,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:808,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:809,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:810,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:811,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:812,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:813,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:814,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:815,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:816,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:816,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:816,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:817,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:818,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:822,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:823,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:824,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:825,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:826,1
    - Dst: json_generate_false
      Src: /src/dovecot/src/lib-json/test-json-generator.c:827,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:828,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:829,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:830,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:831,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:832,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:833,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:834,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:834,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:834,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:835,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:836,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:840,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:841,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:842,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:843,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:844,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:845,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:846,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:847,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:848,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:849,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:850,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:851,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:852,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:853,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:853,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:853,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:854,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:855,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:859,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:860,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:861,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:862,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:863,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:864,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:865,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:866,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:867,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:868,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:869,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:870,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:871,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:872,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:872,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:872,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:873,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:874,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:878,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:879,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:880,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:881,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:882,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:883,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:884,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:885,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:886,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:887,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:888,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:889,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:890,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:890,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:891,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:892,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:893,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:897,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:898,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:899,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:900,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:901,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:902,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:903,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:904,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:905,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:906,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:907,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:908,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:909,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:910,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:911,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:912,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:913,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:914,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:915,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:915,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:915,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:916,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:917,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:921,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:923,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:924,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:925,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:926,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:927,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:928,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:929,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:930,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:931,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:932,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:933,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:934,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:935,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:936,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:937,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:938,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:939,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:940,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:941,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:942,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:943,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:944,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:945,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:945,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:946,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:947,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:948,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:952,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:954,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:955,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:956,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:957,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:958,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:959,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:960,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:961,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:962,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:963,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:964,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:965,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:966,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:967,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:968,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:969,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:970,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:971,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:972,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:973,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:974,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:975,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:976,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:977,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:978,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:979,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:980,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:981,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:982,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:982,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:983,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:984,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:985,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:989,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:992,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:993,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:994,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:995,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:996,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:997,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:998,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:999,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1000,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1001,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1002,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1003,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1004,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1005,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1006,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1007,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1008,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1009,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1010,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1011,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1012,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1013,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1014,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1015,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1016,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1017,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1018,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1019,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1020,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1021,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1022,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1023,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1024,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1025,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1026,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1027,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1028,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1029,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1030,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1031,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1032,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1033,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1034,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1035,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1035,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1037,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1038,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1039,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1043,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1044,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1045,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1046,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1047,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1048,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1049,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1050,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1051,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1052,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1053,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1054,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1055,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1056,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1057,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1058,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1059,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1060,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1061,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1062,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1063,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1064,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1065,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1066,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1067,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1068,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1069,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1070,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1071,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1072,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1072,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1073,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1074,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1075,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1079,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1080,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1082,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1082,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1083,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1084,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1085,1
    - Dst: json_generate_string_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1086,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1087,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1088,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1089,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1090,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1091,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1092,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1093,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1094,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1094,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1094,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1095,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1096,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1100,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1101,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1103,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1103,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1104,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1106,1
    - Dst: json_generate_text_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1108,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1109,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1111,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1113,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1115,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1115,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1116,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1117,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1118,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1122,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1123,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1124,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1125,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1128,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1132,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1134,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1135,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1140,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1146,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1152,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1158,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1164,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1166,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1167,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1172,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1178,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1184,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1189,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1190,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1196,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1198,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1199,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1204,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1209,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1210,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1215,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1216,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1222,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1227,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1228,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1234,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1235,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1236,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1236,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1239,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1240,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1241,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1245,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1246,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1247,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1248,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1251,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1255,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1257,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1258,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1263,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1268,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1269,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1275,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1277,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1282,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1287,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1288,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1293,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1294,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1299,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1300,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1305,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1306,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1308,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1309,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1313,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1314,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1320,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1326,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1328,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1332,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1333,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1338,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1339,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1344,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1345,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1350,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1351,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1356,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1357,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1359,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1360,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1364,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1365,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1370,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1371,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1376,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1377,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1379,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1384,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1389,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1390,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1395,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1396,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1401,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1402,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1407,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1408,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1415,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1416,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1416,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1419,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1420,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1421,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1425,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1426,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1427,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1428,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1431,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1434,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1435,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1437,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1438,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1442,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1443,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1448,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1449,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1454,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1455,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1460,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1461,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1467,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1469,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1470,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1474,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1475,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1480,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1481,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1486,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1487,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1492,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1493,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1498,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1499,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1501,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1502,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1506,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1507,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1512,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1513,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1518,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1519,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1524,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1525,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1530,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1531,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1537,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1538,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1539,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1539,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1542,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1543,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1544,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1548,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1549,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1550,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1551,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1554,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1557,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1558,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1560,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1561,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1565,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1566,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1572,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1572,1
    - Dst: json_generate_string_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1573,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1574,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1575,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1579,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1580,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1585,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1586,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1591,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1592,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1594,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1595,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1599,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1600,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1606,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1606,1
    - Dst: json_generate_string_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1607,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1608,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1609,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1613,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1614,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1619,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1620,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1625,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1626,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1628,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1629,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1633,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1634,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1640,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1640,1
    - Dst: json_generate_string_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1641,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1642,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1643,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1647,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1648,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1653,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1654,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1659,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1660,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1666,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1667,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1668,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1668,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1670,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1671,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1672,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1676,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1677,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1678,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1679,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1682,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1685,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1686,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1688,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1689,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1693,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1694,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1700,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1700,1
    - Dst: json_generate_text_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1701,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1702,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1703,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1707,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1708,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1713,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1714,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1719,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1720,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1722,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1723,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1727,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1728,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1734,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1734,1
    - Dst: json_generate_text_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1735,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1736,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1737,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1741,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1742,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1747,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1748,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1753,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1754,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1756,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1757,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1761,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1762,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1768,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1768,1
    - Dst: json_generate_text_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1769,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1770,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1771,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1775,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1776,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1781,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1782,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1787,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1788,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1794,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1795,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1796,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1796,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1799,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1800,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1801,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1804,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1805,1
    CyclomaticComplexity: 270
    EdgeCount: 270
    ICount: 1696
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 1806
    functionName: test_json_generate_buffer
    functionSourceFile: /src/dovecot/src/lib-json/test-json-generator.c
    functionUses: 0
    functionsReached:
    - json_generate_array_close
    - str_c
    - json_generate_string_close
    - json_generate_string_stream
    - json_generate_object_close
    - json_generate_text_more
    - strlen
    - json_generator_flush
    - test_assert
    - i_stream_create_from_data
    - json_generate_text
    - o_stream_create_buffer
    - json_generator_deinit
    - json_generate_string_open
    - json_generate_string_more
    - json_generate_object_member
    - test_end
    - json_generate_text_close
    - json_generate_false
    - json_generate_text_open
    - str_new
    - str_free
    - json_generate_array_open
    - json_generate_number_raw
    - json_generate_object_open
    - o_stream_set_max_buffer_size
    - o_stream_destroy
    - json_generator_init
    - strcmp
    - json_generate_string
    - json_generate_text_stream
    - json_generate_true
    - o_stream_set_no_error_handling
    - json_generate_null
    - str_truncate
    - json_generate_number
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_generate_buffer(void)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1819,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1820,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1821,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1823,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1824,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1825,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1826,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1827,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1828,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1829,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1830,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1831,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1832,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1832,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1832,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1833,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1834,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1837,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1838,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1839,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1840,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1841,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1842,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1843,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1844,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1844,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1844,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1845,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1846,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1849,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1850,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1851,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1852,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1853,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1854,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1855,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1856,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1857,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1858,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1859,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1860,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1861,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1861,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1861,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1862,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1863,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1866,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1867,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1868,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1869,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1870,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1871,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1872,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1873,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1874,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1875,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1876,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1877,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1878,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1879,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1880,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1880,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1881,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1882,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1883,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1886,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1887,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1888,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1889,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1890,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1891,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1892,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1893,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1894,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1895,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1896,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1896,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1896,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1897,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1898,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1901,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1902,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1903,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1904,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1905,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1906,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1907,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1908,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1909,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1910,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1911,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1912,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1913,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1913,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1913,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1914,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1915,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1918,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1919,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1920,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1922,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1923,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1927,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1930,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1934,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1941,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1942,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1945,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1949,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1950,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1957,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1958,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1959,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1959,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1959,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1960,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1961,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1964,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1965,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1966,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1968,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1969,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1970,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1974,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1977,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1981,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1988,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1989,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1992,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1996,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:1997,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2003,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2004,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2011,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2012,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2013,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2013,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2013,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2014,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2015,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2018,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2019,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2020,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2022,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2023,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2027,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2030,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2031,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2034,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2038,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2042,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2049,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2050,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2053,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2057,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2058,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2064,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2065,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2072,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2073,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2074,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2074,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2075,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2076,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2077,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2080,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2081,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2082,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2083,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2084,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2087,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2090,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2094,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2095,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2102,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2111,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2111,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2111,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2112,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2113,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2116,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2117,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2118,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2119,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2122,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2126,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2130,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2131,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2136,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2143,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2150,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2152,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2152,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2152,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2153,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2154,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2157,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2158,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 315
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 1808
    functionDepth: 1
    functionLinenumber: 1808
    functionLinenumberEnd: 2159
    functionName: test_json_generate_stream
    functionSourceFile: /src/dovecot/src/lib-json/test-json-generator.c
    functionUses: 0
    functionsReached:
    - json_generate_array_close
    - str_c
    - json_generate_object_close
    - o_stream_send_str
    - o_stream_unref
    - strlen
    - json_generator_flush
    - test_assert
    - o_stream_create_buffer
    - json_generator_deinit
    - json_generate_object_member
    - test_end
    - o_stream_flush
    - str_new
    - str_free
    - json_generate_string_open_stream
    - json_generate_array_open
    - json_generate_object_open
    - i_assert
    - o_stream_set_max_buffer_size
    - o_stream_destroy
    - json_generator_init
    - strcmp
    - o_stream_set_no_error_handling
    - o_stream_send
    - str_truncate
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_generate_stream(void)
  - BBCount: 53
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2170,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2176,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2177,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2178,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2181,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2182,1
    - Dst: json_generator_set_format
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2183,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2185,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2186,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2187,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2188,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2189,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2189,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2189,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2190,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2191,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2195,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2196,1
    - Dst: json_generator_set_format
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2197,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2198,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2199,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2200,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2202,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2204,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2205,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2206,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2206,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2208,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2209,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2210,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2214,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2215,1
    - Dst: json_generator_set_format
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2216,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2217,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2218,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2219,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2220,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2221,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2222,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2223,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2225,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2227,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2229,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2229,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2234,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2235,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2236,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2240,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2241,1
    - Dst: json_generator_set_format
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2242,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2243,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2244,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2245,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2246,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2247,1
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2248,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2249,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2250,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2251,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2253,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2255,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2255,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2260,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2261,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2262,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2266,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2269,1
    - Dst: json_generator_set_format
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2270,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2271,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2273,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2274,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2275,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2276,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2277,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2278,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2279,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2281,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2283,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2284,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2285,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2286,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2287,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2288,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2289,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2291,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2293,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2294,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2295,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2297,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2298,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2299,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2300,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2301,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2302,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2303,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2304,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2305,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2306,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2307,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2308,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2309,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2310,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2311,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2312,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2313,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2313,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2329,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2330,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2331,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2335,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2336,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2337,1
    - Dst: json_generator_set_format
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2338,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2339,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2342,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2345,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2346,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2348,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2349,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2353,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2354,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2359,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2360,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2365,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2366,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2368,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2372,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2373,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2379,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2384,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2385,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2390,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2391,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2396,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2397,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2399,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2400,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2404,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2405,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2410,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2411,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2416,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2417,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2419,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2423,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2424,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2429,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2430,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2435,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2436,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2441,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2442,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2447,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2448,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2450,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2451,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2455,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2456,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2461,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2462,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2467,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2468,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2470,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2474,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2475,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2480,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2481,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2486,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2487,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2492,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2493,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2498,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2499,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2504,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2505,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2511,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2512,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2513,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2513,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2538,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2539,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2540,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2543,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2544,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 333
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2545
      start: 2161
    functionDepth: 1
    functionLinenumber: 2161
    functionLinenumberEnd: 2545
    functionName: test_json_generate_formatted
    functionSourceFile: /src/dovecot/src/lib-json/test-json-generator.c
    functionUses: 0
    functionsReached:
    - json_generate_array_close
    - str_c
    - json_generate_object_close
    - json_generator_flush
    - test_assert
    - o_stream_create_buffer
    - json_generator_deinit
    - json_generate_object_member
    - test_end
    - str_new
    - str_free
    - i_zero
    - json_generate_array_open
    - json_generator_set_format
    - json_generate_object_open
    - o_stream_set_max_buffer_size
    - o_stream_destroy
    - json_generator_init
    - strcmp
    - json_generate_string
    - json_generate_true
    - o_stream_set_no_error_handling
    - str_truncate
    - json_generate_number
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_generate_formatted(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2549,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2551,1
    - Dst: json_append_escaped
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2552,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2554,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2554,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2554,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2547
    functionDepth: 1
    functionLinenumber: 2547
    functionLinenumberEnd: 2559
    functionName: test_json_append_escaped
    functionSourceFile: /src/dovecot/src/lib-json/test-json-generator.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_end
    - test_assert
    - json_append_escaped
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_append_escaped(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2566,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2568,1
    - Dst: json_append_escaped_data
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2569,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2570,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2570,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2570,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2575
      start: 2561
    functionDepth: 1
    functionLinenumber: 2561
    functionLinenumberEnd: 2575
    functionName: test_json_append_escaped_data
    functionSourceFile: /src/dovecot/src/lib-json/test-json-generator.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - json_append_escaped_data
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_append_escaped_data(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2590,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2596,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-json/test-json-generator.c:2600,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2601
      start: 2577
    functionDepth: 1
    functionLinenumber: 2577
    functionLinenumberEnd: 2601
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-json/test-json-generator.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - getopt
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/fuzz-json-istream.c:26,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/fuzz-json-istream.c:27,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/fuzz-json-istream.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/fuzz-json-istream.c:30,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/fuzz-json-istream.c:32,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/fuzz-json-istream.c:33,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/fuzz-json-istream.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 35
    functionName: FUZZ_BEGIN_DATA
    functionSourceFile: /src/dovecot/src/lib-json/fuzz-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - json_istream_unref
    - test_istream_create_data
    - json_tree_unref
    - json_istream_read_tree
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_DATA(const unsigned char *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: json_parser_is_busy
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_parser_is_busy(struct json_parser *parser)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-json/json-parser.c:207,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-json/json-parser.c:210,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/json-parser.c:213,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 5
    argNames:
    - input
    - limits
    - flags
    - callbacks
    - context
    argTypes:
    - struct istream*
    - struct json_limits*
    - enum json_parser_flags
    - struct json_parser_callbacks*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 233
    functionName: json_parser_init
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - i_stream_ref
    - i_new
    linkageType: ''
    returnType: struct json_parser
    signature: "struct json_parser *\njson_parser_init(struct istream *input, const
      struct json_limits *limits,\n\t\t enum json_parser_flags flags,\n\t\t const
      struct json_parser_callbacks *callbacks, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/json-parser.c:243,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/json-parser.c:244,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-json/json-parser.c:245,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-parser.c:246,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-parser.c:247,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-parser.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct json_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 249
    functionName: json_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 1
    functionsReached:
    - i_free
    - array_free
    - str_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void json_parser_deinit(struct json_parser **_parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-parser.c:259,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-json/json-parser.c:260,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-json/json-parser.c:261,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-json/json-parser.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - parser
    - format
    argTypes:
    - struct json_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 263
    functionName: json_parser_error
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - va_end
    - i_free
    - i_strdup_vprintf
    - va_start
    linkageType: ''
    returnType: void
    signature: void json_parser_error(struct json_parser *parser, const char *format,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: json_parser_interrupt
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void json_parser_interrupt(struct json_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-parser.c:277,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 281
    functionName: json_parser_callback_init
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void json_parser_callback_init(struct json_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 293
    functionName: json_parser_callback_deinit
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_parser_callback_deinit(struct json_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/json-parser.c:307,1
    - Dst: json_parser_callback_init
      Src: /src/dovecot/src/lib-json/json-parser.c:309,1
    - Dst: struct json_parser*::callbacks::parse_list_open
      Src: /src/dovecot/src/lib-json/json-parser.c:310,1
    - Dst: json_parser_callback_deinit
      Src: /src/dovecot/src/lib-json/json-parser.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - parser
    - parent_context
    - object
    - list_context_r
    argTypes:
    - struct json_parser*
    - void*
    - bool
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 313
    functionName: json_parser_callback_parse_list_open
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_callback_init
    - str_c
    - struct json_parser*::callbacks::parse_list_open
    - json_parser_callback_deinit
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_parse_list_open(struct json_parser *parser,\n\t\t\t\t
      \    void *parent_context, bool object,\n\t\t\t\t     void **list_context_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_callback_init
      Src: /src/dovecot/src/lib-json/json-parser.c:323,1
    - Dst: struct json_parser*::callbacks::parse_list_close
      Src: /src/dovecot/src/lib-json/json-parser.c:324,1
    - Dst: json_parser_callback_deinit
      Src: /src/dovecot/src/lib-json/json-parser.c:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - parser
    - list_context
    - object
    argTypes:
    - struct json_parser*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 327
    functionName: json_parser_callback_parse_list_close
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_callback_init
    - struct json_parser*::callbacks::parse_list_close
    - json_parser_callback_deinit
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_parse_list_close(struct json_parser *parser,\n\t\t\t\t
      \     void *list_context, bool object)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:335,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/json-parser.c:341,1
    - Dst: json_parser_callback_init
      Src: /src/dovecot/src/lib-json/json-parser.c:343,1
    - Dst: struct json_parser*::callbacks::parse_object_member
      Src: /src/dovecot/src/lib-json/json-parser.c:344,1
    - Dst: json_parser_callback_deinit
      Src: /src/dovecot/src/lib-json/json-parser.c:346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - parser
    - parent_context
    argTypes:
    - struct json_parser*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 347
    functionName: json_parser_callback_parse_object_member
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - json_parser_callback_deinit
    - struct json_parser*::callbacks::parse_object_member
    - json_parser_callback_init
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_parse_object_member(struct json_parser *parser,\n\t\t\t\t\t
      void *parent_context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/json-parser.c:361,1
    - Dst: json_parser_callback_init
      Src: /src/dovecot/src/lib-json/json-parser.c:363,1
    - Dst: struct json_parser*::callbacks::parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:364,1
    - Dst: json_parser_callback_deinit
      Src: /src/dovecot/src/lib-json/json-parser.c:366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - parser
    - parent_context
    - type
    - value
    argTypes:
    - struct json_parser*
    - void*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 367
    functionName: json_parser_callback_parse_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_callback_init
    - str_c
    - json_parser_callback_deinit
    - struct json_parser*::callbacks::parse_value
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_parse_value(struct json_parser *parser,\n\t\t\t\t
      void *parent_context, enum json_type type,\n\t\t\t\t const struct json_value
      *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:373,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:378,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:382,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - parser
    - dir
    argTypes:
    - struct json_parser*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 384
    functionName: json_parser_number_range_error
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_error
    linkageType: ''
    returnType: void
    signature: void json_parser_number_range_error(struct json_parser *parser, int
      dir)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:444,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 93
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - intmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 500
    functionName: str_float_to_intmax
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: int str_float_to_intmax(const char *str, intmax_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/json-parser.c:507,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:509,1
    - Dst: str_float_to_intmax
      Src: /src/dovecot/src/lib-json/json-parser.c:515,1
    - Dst: json_parser_number_range_error
      Src: /src/dovecot/src/lib-json/json-parser.c:516,1
    - Dst: json_parser_callback_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:523,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - parser
    - list_context
    argTypes:
    - struct json_parser*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 502
    functionDepth: 3
    functionLinenumber: 502
    functionLinenumberEnd: 525
    functionName: json_parser_callback_number_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - json_parser_callback_parse_value
    - json_parser_number_range_error
    - str_float_to_intmax
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_number_value(struct json_parser *parser,\n\t\t\t\t
      \ void *list_context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:541,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:544,1
    - Dst: json_string_stream_create
      Src: /src/dovecot/src/lib-json/json-parser.c:547,1
    - Dst: json_parser_callback_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:548,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-parser.c:551,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:563,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-json/json-parser.c:564,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:565,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/json-parser.c:573,1
    - Dst: json_parser_callback_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:576,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 2
    argNames:
    - parser
    - list_context
    argTypes:
    - struct json_parser*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 527
    functionDepth: 3
    functionLinenumber: 527
    functionLinenumberEnd: 578
    functionName: json_parser_callback_string_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_string_stream_create
    - str_c
    - json_parser_callback_parse_value
    - str_data
    - str_len
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_string_value(struct json_parser *parser,\n\t\t\t\t
      \ void *list_context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:591,1
    - Dst: json_string_stream_create
      Src: /src/dovecot/src/lib-json/json-parser.c:593,1
    - Dst: json_parser_callback_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:595,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-parser.c:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - parser
    - list_context
    argTypes:
    - struct json_parser*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 580
    functionDepth: 3
    functionLinenumber: 580
    functionLinenumberEnd: 599
    functionName: json_parser_callback_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_parser_callback_parse_value
    - i_stream_unref
    - json_string_stream_create
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_string_stream(struct json_parser *parser,\n\t\t\t\t
      \  void *list_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:607,1
    - Dst: json_parser_callback_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parser
    - list_context
    argTypes:
    - struct json_parser*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 601
    functionDepth: 3
    functionLinenumber: 601
    functionLinenumberEnd: 610
    functionName: json_parser_callback_true_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_parser_callback_parse_value
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_true_value(struct json_parser *parser,\n\t\t\t\t
      void *list_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:618,1
    - Dst: json_parser_callback_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parser
    - list_context
    argTypes:
    - struct json_parser*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 612
    functionDepth: 3
    functionLinenumber: 612
    functionLinenumberEnd: 621
    functionName: json_parser_callback_false_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_parser_callback_parse_value
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_false_value(struct json_parser *parser,\n\t\t\t\t
      \ void *list_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:629,1
    - Dst: json_parser_callback_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parser
    - list_context
    argTypes:
    - struct json_parser*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 623
    functionDepth: 3
    functionLinenumber: 623
    functionLinenumberEnd: 632
    functionName: json_parser_callback_null_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_parser_callback_parse_value
    linkageType: ''
    returnType: int
    signature: "int json_parser_callback_null_value(struct json_parser *parser,\n\t\t\t\tvoid
      *list_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 642
    functionName: json_parser_have_data
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_parser_have_data(struct json_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - parser
    - data
    - size
    argTypes:
    - struct json_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 651
    functionName: json_parser_set_data
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void json_parser_set_data(struct json_parser *parser,\n\t\t     const
      unsigned char *data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:659,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-json/json-parser.c:660,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:667,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-json/json-parser.c:672,1
    - Dst: json_parser_set_data
      Src: /src/dovecot/src/lib-json/json-parser.c:673,1
    - Dst: json_parser_set_data
      Src: /src/dovecot/src/lib-json/json-parser.c:678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 680
    functionName: json_parser_read
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data
    - json_parser_set_data
    - i_assert
    - i_stream_read_data
    linkageType: ''
    returnType: int
    signature: int json_parser_read(struct json_parser *parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:690,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/json-parser.c:692,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/json-parser.c:704,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/json-parser.c:706,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 686
    functionDepth: 1
    functionLinenumber: 686
    functionLinenumberEnd: 707
    functionName: json_parser_curchar_str
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *json_parser_curchar_str(struct json_parser *parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char_buf
      Src: /src/dovecot/src/lib-json/json-parser.c:716,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:720,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:724,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:734,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 747
    functionName: json_parser_readchar
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - uni_utf8_get_char_buf
    - json_parser_error
    linkageType: ''
    returnType: int
    signature: int json_parser_readchar(struct json_parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_readchar
      Src: /src/dovecot/src/lib-json/json-parser.c:755,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - parser
    - ch_r
    argTypes:
    - struct json_parser*
    - unichar_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 749
    functionDepth: 3
    functionLinenumber: 749
    functionLinenumberEnd: 763
    functionName: json_parser_curchar
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_parser_readchar
    linkageType: ''
    returnType: int
    signature: int json_parser_curchar(struct json_parser *parser, unichar_t *ch_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:767,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 774
    functionName: json_parser_shift
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void json_parser_shift(struct json_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 776
    functionDepth: 1
    functionLinenumber: 776
    functionLinenumberEnd: 780
    functionName: json_parser_available_size
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: size_t json_parser_available_size(struct json_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parser
    - offset
    argTypes:
    - struct json_parser*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 788
    functionName: json_parser_shifted_size
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: "size_t json_parser_shifted_size(struct json_parser *parser,\n\t\t\t
      const unsigned char *offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_shifted_size
      Src: /src/dovecot/src/lib-json/json-parser.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - offset
    argTypes:
    - struct json_parser*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 790
    functionDepth: 2
    functionLinenumber: 790
    functionLinenumberEnd: 796
    functionName: json_parser_parsed_size
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_shifted_size
    linkageType: ''
    returnType: size_t
    signature: "size_t json_parser_parsed_size(struct json_parser *parser,\n\t\t\tconst
      unsigned char *offset)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_have_data
      Src: /src/dovecot/src/lib-json/json-parser.c:811,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:815,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-json/json-parser.c:825,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:829,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:839,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:842,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:852,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:853,1
    - Dst: parse_func
      Src: /src/dovecot/src/lib-json/json-parser.c:866,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-json/json-parser.c:867,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:870,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 61
    argCount: 3
    argNames:
    - parser
    - parse_func
    - param
    argTypes:
    - struct json_parser*
    - json_parser_func_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 893
    functionName: json_parser_call
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_idx_modifiable
    - json_parser_error
    - parse_func
    - array_idx_get_space
    - i_assert
    - json_parser_have_data
    linkageType: ''
    returnType: int
    signature: "int json_parser_call(struct json_parser *parser,\n\t\t json_parser_func_t
      parse_func, void *param)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_have_data
      Src: /src/dovecot/src/lib-json/json-parser.c:904,1
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:908,1
    - Dst: json_parser_call
      Src: /src/dovecot/src/lib-json/json-parser.c:916,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:917,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-json/json-parser.c:942,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:949,1
    - Dst: struct json_parser_level*::func
      Src: /src/dovecot/src/lib-json/json-parser.c:951,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-json/json-parser.c:952,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:955,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:977,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:980,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 2
    argNames:
    - parser
    - parse_func
    argTypes:
    - struct json_parser*
    - json_parser_func_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 895
    functionDepth: 4
    functionLinenumber: 895
    functionLinenumberEnd: 986
    functionName: json_parser_run
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - array_idx_modifiable
    - struct json_parser_level*::func
    - array_idx_get_space
    - json_parser_have_data
    - i_assert
    - json_parser_call
    - json_parser_curchar
    linkageType: ''
    returnType: int
    signature: int json_parser_run(struct json_parser *parser, json_parser_func_t
      parse_func)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/json-parser.c:995,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/json-parser.c:997,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 998
    functionName: json_parser_reset_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - str_new
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void json_parser_reset_buffer(struct json_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_shifted_size
      Src: /src/dovecot/src/lib-json/json-parser.c:1004,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-json/json-parser.c:1008,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - parser
    - buffer
    - offset
    argTypes:
    - struct json_parser*
    - buffer_t*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1000
    functionDepth: 2
    functionLinenumber: 1000
    functionLinenumberEnd: 1009
    functionName: json_parser_append_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_shifted_size
    - str_append_data
    linkageType: ''
    returnType: void
    signature: "void json_parser_append_buffer(struct json_parser *parser,\n\t\t\t
      \ buffer_t *buffer, const unsigned char *offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:1029,1
    - Dst: json_unichar_is_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:1030,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1032,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1017
    functionDepth: 4
    functionLinenumber: 1017
    functionLinenumberEnd: 1039
    functionName: json_parser_skip_ws
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_unichar_is_ws
    - json_parser_curchar
    - json_parser_shift
    linkageType: ''
    returnType: int
    signature: int json_parser_skip_ws(struct json_parser *parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:1053,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1057,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1058,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1065,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1069,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-json/json-parser.c:1072,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1073,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1079,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1082,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:1085,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - parser
    - state
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1043
    functionDepth: 4
    functionLinenumber: 1043
    functionLinenumberEnd: 1090
    functionName: json_parser_do_parse_literal
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_shift
    - i_unreached
    - json_parser_error
    - t_strdup_until
    - i_assert
    - json_parser_curchar_str
    - json_parser_curchar
    linkageType: ''
    returnType: int
    signature: "int json_parser_do_parse_literal(struct json_parser *parser,\n\t\t\t
      \    struct json_parser_state *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_call
      Src: /src/dovecot/src/lib-json/json-parser.c:1094,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - literal
    argTypes:
    - struct json_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1096
    functionName: json_parser_parse_literal
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_call
    linkageType: ''
    returnType: int
    signature: int json_parser_parse_literal(struct json_parser *parser, const char
      *literal)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1128,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1129,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1129,1
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:1131,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1132,1
    - Dst: json_parser_parsed_size
      Src: /src/dovecot/src/lib-json/json-parser.c:1133,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1140,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1147,1
    - Dst: json_unichar_is_digit
      Src: /src/dovecot/src/lib-json/json-parser.c:1150,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1152,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1155,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1157,1
    - Dst: json_unichar_is_digit
      Src: /src/dovecot/src/lib-json/json-parser.c:1160,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1161,1
    - Dst: json_unichar_is_digit
      Src: /src/dovecot/src/lib-json/json-parser.c:1168,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1172,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1178,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1184,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1187,1
    - Dst: json_unichar_is_digit
      Src: /src/dovecot/src/lib-json/json-parser.c:1191,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1192,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1195,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1199,1
    - Dst: json_unichar_is_digit
      Src: /src/dovecot/src/lib-json/json-parser.c:1202,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1206,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1211,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1214,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1220,1
    - Dst: json_unichar_is_digit
      Src: /src/dovecot/src/lib-json/json-parser.c:1225,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1226,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1229,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1233,1
    - Dst: json_unichar_is_digit
      Src: /src/dovecot/src/lib-json/json-parser.c:1236,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1237,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1240,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:1244,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1248,1
    - Dst: json_parser_parsed_size
      Src: /src/dovecot/src/lib-json/json-parser.c:1249,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1259,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1264,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1268,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 129
    argCount: 2
    argNames:
    - parser
    - state
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1100
    functionDepth: 4
    functionLinenumber: 1100
    functionLinenumberEnd: 1271
    functionName: json_parser_do_parse_number
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_unichar_is_digit
    - json_parser_append_buffer
    - json_parser_shift
    - str_len
    - i_unreached
    - json_parser_error
    - json_parser_parsed_size
    - i_assert
    - json_parser_curchar_str
    - json_parser_curchar
    linkageType: ''
    returnType: int
    signature: "int json_parser_do_parse_number(struct json_parser *parser,\n\t\t\t
      \   struct json_parser_state *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_call
      Src: /src/dovecot/src/lib-json/json-parser.c:1274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1272
    functionDepth: 3
    functionLinenumber: 1272
    functionLinenumberEnd: 1275
    functionName: json_parser_parse_number
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_call
    linkageType: ''
    returnType: int
    signature: int json_parser_parse_number(struct json_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:1287,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1289,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - parser
    - ATTR_UNUSED
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1279
    functionDepth: 4
    functionLinenumber: 1279
    functionLinenumberEnd: 1295
    functionName: json_parser_finish_bad_unicode_escape
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_error
    - json_parser_curchar_str
    - json_parser_curchar
    linkageType: ''
    returnType: int
    signature: "int json_parser_finish_bad_unicode_escape(\n\tstruct json_parser *parser,\n\tstruct
      json_parser_state *state ATTR_UNUSED)"
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1310,1
    - Dst: uni_ucs4_to_utf8_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1310,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1315,1
    - Dst: json_parser_available_size
      Src: /src/dovecot/src/lib-json/json-parser.c:1321,1
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:1325,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1338,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1340,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1343,1
    - Dst: json_parser_call
      Src: /src/dovecot/src/lib-json/json-parser.c:1353,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1359,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1366,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1368,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1381,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib-json/json-parser.c:1387,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1388,1
    - Dst: json_unichar_is_control
      Src: /src/dovecot/src/lib-json/json-parser.c:1394,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1397,1
    - Dst: uni_ucs4_to_utf8_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1397,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1404,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 94
    argCount: 3
    argNames:
    - parser
    - state
    - max_size
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1297
    functionDepth: 4
    functionLinenumber: 1297
    functionLinenumberEnd: 1407
    functionName: json_parser_parse_unicode_escape
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - uni_ucs4_to_utf8_len
    - uni_is_valid_ucs4
    - json_parser_shift
    - str_len
    - uni_ucs4_to_utf8_c
    - json_parser_error
    - json_parser_available_size
    - json_unichar_is_control
    - i_assert
    - json_parser_call
    - json_parser_curchar_str
    - json_parser_curchar
    linkageType: ''
    returnType: int
    signature: "int json_parser_parse_unicode_escape(struct json_parser *parser,\n\t\t\t\t
      struct json_parser_state *state,\n\t\t\t\t size_t max_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1416,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - parser
    - state
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1409
    functionDepth: 2
    functionLinenumber: 1409
    functionLinenumberEnd: 1425
    functionName: json_parser_parse_unicode_escape_close
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_error
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int json_parser_parse_unicode_escape_close(struct json_parser *parser,\n\t\t\t\t
      \      struct json_parser_state *state)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1456,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1456,1
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:1458,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1463,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1465,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1468,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1478,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1478,1
    - Dst: json_parser_shifted_size
      Src: /src/dovecot/src/lib-json/json-parser.c:1479,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1481,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1483,1
    - Dst: json_parser_parse_unicode_escape_close
      Src: /src/dovecot/src/lib-json/json-parser.c:1486,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1491,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1491,1
    - Dst: json_parser_shifted_size
      Src: /src/dovecot/src/lib-json/json-parser.c:1492,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1494,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1496,1
    - Dst: json_unichar_is_uchar
      Src: /src/dovecot/src/lib-json/json-parser.c:1500,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1501,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1503,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1506,1
    - Dst: json_parser_parsed_size
      Src: /src/dovecot/src/lib-json/json-parser.c:1507,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1513,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1516,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1520,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1526,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1530,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1534,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1539,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1544,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1548,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1552,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-parser.c:1556,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1561,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1564,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1566,1
    - Dst: json_parser_parse_unicode_escape_close
      Src: /src/dovecot/src/lib-json/json-parser.c:1569,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1573,1
    - Dst: json_parser_parse_unicode_escape
      Src: /src/dovecot/src/lib-json/json-parser.c:1578,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:1586,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1593,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1600,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:1606,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:1609,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:1609,1
    - Dst: json_parser_shifted_size
      Src: /src/dovecot/src/lib-json/json-parser.c:1610,1
    - Dst: json_parser_append_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1612,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 121
    argCount: 3
    argNames:
    - parser
    - state
    - max_size
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1427
    functionDepth: 5
    functionLinenumber: 1427
    functionLinenumberEnd: 1616
    functionName: json_parser_do_parse_string
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_shifted_size
    - str_append_c
    - json_parser_append_buffer
    - json_parser_shift
    - str_len
    - i_unreached
    - json_parser_error
    - json_unichar_is_uchar
    - json_parser_parsed_size
    - json_parser_parse_unicode_escape_close
    - json_parser_parse_unicode_escape
    - i_assert
    - json_parser_curchar_str
    - json_parser_curchar
    linkageType: ''
    returnType: int
    signature: "int json_parser_do_parse_string(struct json_parser *parser,\n\t\t\t
      \   struct json_parser_state *state, size_t max_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_do_parse_string
      Src: /src/dovecot/src/lib-json/json-parser.c:1637,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - parser
    - state
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1618
    functionDepth: 6
    functionLinenumber: 1618
    functionLinenumberEnd: 1638
    functionName: json_parser_do_parse_string_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_do_parse_string
    linkageType: ''
    returnType: int
    signature: "int json_parser_do_parse_string_value(struct json_parser *parser,\n\t\t\t\t
      \ struct json_parser_state *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_call
      Src: /src/dovecot/src/lib-json/json-parser.c:1643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - buf
    argTypes:
    - struct json_parser*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1645
      start: 1640
    functionDepth: 3
    functionLinenumber: 1640
    functionLinenumberEnd: 1645
    functionName: json_parser_parse_string_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_call
    linkageType: ''
    returnType: int
    signature: int json_parser_parse_string_value(struct json_parser *parser, string_t
      *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_do_parse_string
      Src: /src/dovecot/src/lib-json/json-parser.c:1651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - state
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1647
    functionDepth: 6
    functionLinenumber: 1647
    functionLinenumberEnd: 1653
    functionName: json_parser_do_parse_object_member
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_do_parse_string
    linkageType: ''
    returnType: int
    signature: "int json_parser_do_parse_object_member(struct json_parser *parser,\n\t\t\t\t
      \  struct json_parser_state *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_call
      Src: /src/dovecot/src/lib-json/json-parser.c:1658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - buf
    argTypes:
    - struct json_parser*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1655
    functionDepth: 3
    functionLinenumber: 1655
    functionLinenumberEnd: 1660
    functionName: json_parser_parse_object_member
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_call
    linkageType: ''
    returnType: int
    signature: int json_parser_parse_object_member(struct json_parser *parser, string_t
      *buf)
  - BBCount: 110
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:1708,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1716,1
    - Dst: json_parser_callback_parse_list_open
      Src: /src/dovecot/src/lib-json/json-parser.c:1717,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1727,1
    - Dst: json_parser_callback_parse_list_open
      Src: /src/dovecot/src/lib-json/json-parser.c:1728,1
    - Dst: json_parser_reset_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1738,1
    - Dst: json_parser_reset_buffer
      Src: /src/dovecot/src/lib-json/json-parser.c:1743,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1761,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1763,1
    - Dst: json_parser_skip_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:1767,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/json-parser.c:1771,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1779,1
    - Dst: json_parser_callback_parse_list_close
      Src: /src/dovecot/src/lib-json/json-parser.c:1780,1
    - Dst: json_parser_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:1790,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1799,1
    - Dst: json_parser_callback_parse_list_close
      Src: /src/dovecot/src/lib-json/json-parser.c:1800,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1807,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1810,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1814,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1819,1
    - Dst: json_parser_skip_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:1823,1
    - Dst: json_parser_skip_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:1830,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/json-parser.c:1834,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1842,1
    - Dst: json_parser_callback_parse_list_close
      Src: /src/dovecot/src/lib-json/json-parser.c:1843,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/json-parser.c:1851,1
    - Dst: json_parser_parse_object_member
      Src: /src/dovecot/src/lib-json/json-parser.c:1857,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1861,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1868,1
    - Dst: json_parser_callback_parse_object_member
      Src: /src/dovecot/src/lib-json/json-parser.c:1874,1
    - Dst: json_parser_skip_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:1881,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1889,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1891,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1895,1
    - Dst: json_parser_skip_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:1899,1
    - Dst: json_parser_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:1906,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/json-parser.c:1910,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1918,1
    - Dst: json_parser_callback_parse_list_close
      Src: /src/dovecot/src/lib-json/json-parser.c:1919,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1926,1
    - Dst: json_parser_curchar_str
      Src: /src/dovecot/src/lib-json/json-parser.c:1929,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1933,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:1938,1
    - Dst: json_parser_skip_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:1942,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/json-parser.c:1945,1
    - Dst: json_parser_parse_number
      Src: /src/dovecot/src/lib-json/json-parser.c:1951,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1954,1
    - Dst: json_parser_callback_number_value
      Src: /src/dovecot/src/lib-json/json-parser.c:1961,1
    - Dst: json_parser_parse_string_value
      Src: /src/dovecot/src/lib-json/json-parser.c:1968,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:1974,1
    - Dst: json_parser_callback_string_stream
      Src: /src/dovecot/src/lib-json/json-parser.c:1979,1
    - Dst: json_parser_callback_string_value
      Src: /src/dovecot/src/lib-json/json-parser.c:1986,1
    - Dst: json_parser_parse_literal
      Src: /src/dovecot/src/lib-json/json-parser.c:1993,1
    - Dst: json_parser_callback_false_value
      Src: /src/dovecot/src/lib-json/json-parser.c:1997,1
    - Dst: json_parser_parse_literal
      Src: /src/dovecot/src/lib-json/json-parser.c:2004,1
    - Dst: json_parser_callback_null_value
      Src: /src/dovecot/src/lib-json/json-parser.c:2008,1
    - Dst: json_parser_parse_literal
      Src: /src/dovecot/src/lib-json/json-parser.c:2015,1
    - Dst: json_parser_callback_true_value
      Src: /src/dovecot/src/lib-json/json-parser.c:2019,1
    - Dst: json_parser_skip_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:2026,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:2033,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2039,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2048,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2060,1
    - Dst: json_parser_callback_number_value
      Src: /src/dovecot/src/lib-json/json-parser.c:2064,1
    - Dst: json_parser_callback_string_value
      Src: /src/dovecot/src/lib-json/json-parser.c:2067,1
    - Dst: json_parser_callback_false_value
      Src: /src/dovecot/src/lib-json/json-parser.c:2070,1
    - Dst: json_parser_callback_null_value
      Src: /src/dovecot/src/lib-json/json-parser.c:2073,1
    - Dst: json_parser_callback_true_value
      Src: /src/dovecot/src/lib-json/json-parser.c:2076,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:2081,1
    CyclomaticComplexity: 84
    EdgeCount: 84
    ICount: 316
    argCount: 2
    argNames:
    - parser
    - state
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2086
      start: 1666
    functionDepth: 5
    functionLinenumber: 1666
    functionLinenumberEnd: 2086
    functionName: json_parser_do_parse_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_callback_number_value
    - json_parser_shift
    - json_parser_callback_false_value
    - json_parser_reset_buffer
    - json_parser_callback_parse_list_open
    - json_parser_callback_string_value
    - json_parser_parse_object_member
    - i_unreached
    - json_parser_parse_string_value
    - json_parser_callback_parse_list_close
    - str_new
    - json_parser_callback_null_value
    - json_parser_parse_number
    - json_parser_error
    - json_parser_parse_value
    - json_parser_callback_true_value
    - json_parser_parse_literal
    - json_parser_callback_string_stream
    - json_parser_skip_ws
    - str_truncate
    - json_parser_callback_parse_object_member
    - json_parser_curchar_str
    - json_parser_curchar
    linkageType: ''
    returnType: int
    signature: "int json_parser_do_parse_value(struct json_parser *parser,\n\t\t\t
      \  struct json_parser_state *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_call
      Src: /src/dovecot/src/lib-json/json-parser.c:2090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - context
    argTypes:
    - struct json_parser*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 2087
    functionDepth: 3
    functionLinenumber: 2087
    functionLinenumberEnd: 2091
    functionName: json_parser_parse_value
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 1
    functionsReached:
    - json_parser_call
    linkageType: ''
    returnType: int
    signature: int json_parser_parse_value(struct json_parser *parser, void *context)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_curchar
      Src: /src/dovecot/src/lib-json/json-parser.c:2105,1
    - Dst: json_parser_shift
      Src: /src/dovecot/src/lib-json/json-parser.c:2114,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2117,1
    - Dst: json_parser_skip_ws
      Src: /src/dovecot/src/lib-json/json-parser.c:2125,1
    - Dst: json_parser_parse_value
      Src: /src/dovecot/src/lib-json/json-parser.c:2132,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:2138,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:2150,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2152,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 2
    argNames:
    - parser
    - state
    argTypes:
    - struct json_parser*
    - struct json_parser_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2095
    functionDepth: 5
    functionLinenumber: 2095
    functionLinenumberEnd: 2156
    functionName: json_parser_parse_text
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_shift
    - i_unreached
    - json_parser_error
    - json_parser_skip_ws
    - json_parser_parse_value
    - json_parser_curchar
    linkageType: ''
    returnType: int
    signature: "int json_parser_parse_text(struct json_parser *parser,\n\t\t       struct
      json_parser_state *state)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_is_busy
      Src: /src/dovecot/src/lib-json/json-parser.c:2169,1
    - Dst: json_parser_have_data
      Src: /src/dovecot/src/lib-json/json-parser.c:2174,1
    - Dst: json_parser_run
      Src: /src/dovecot/src/lib-json/json-parser.c:2176,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/json-parser.c:2188,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2201,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:2209,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2211,1
    - Dst: json_parser_read
      Src: /src/dovecot/src/lib-json/json-parser.c:2212,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2216,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-json/json-parser.c:2217,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2218,1
    - Dst: json_parser_run
      Src: /src/dovecot/src/lib-json/json-parser.c:2224,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:2235,1
    - Dst: json_parser_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2237,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 63
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2241
      start: 2162
    functionDepth: 5
    functionLinenumber: 2162
    functionLinenumberEnd: 2241
    functionName: json_parser_continue
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - json_parser_is_busy
    - i_unreached
    - json_parser_run
    - json_parser_error
    - i_stream_skip
    - i_stream_get_error
    - json_parser_read
    - i_stream_get_name
    - i_assert
    - json_parser_have_data
    linkageType: ''
    returnType: int
    signature: int json_parser_continue(struct json_parser *parser)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2247,1
    - Dst: json_parser_continue
      Src: /src/dovecot/src/lib-json/json-parser.c:2251,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:2267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - parser
    - error_r
    argTypes:
    - struct json_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2271
      start: 2243
    functionDepth: 6
    functionLinenumber: 2243
    functionLinenumberEnd: 2271
    functionName: json_parse_more
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 2
    functionsReached:
    - json_parser_continue
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: int
    signature: int json_parse_more(struct json_parser *parser, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-parser.c:2276,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - parser
    - loc_r
    argTypes:
    - struct json_parser*
    - struct json_parser_location*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2273
    functionDepth: 1
    functionLinenumber: 2273
    functionLinenumberEnd: 2283
    functionName: json_parser_get_location
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void json_parser_get_location(struct json_parser *parser,\n\t\t\t
      \     struct json_parser_location *loc_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2311,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2313,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2313,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2314,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2319,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/json-parser.c:2320,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib-json/json-parser.c:2322,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2325,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2330,1
    - Dst: json_parser_continue
      Src: /src/dovecot/src/lib-json/json-parser.c:2331,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2332,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2332,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2333,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2338,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2344,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2354,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-json/json-parser.c:2359,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-parser.c:2364,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2368,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-json/json-parser.c:2369,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 57
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2371
      start: 2298
    functionDepth: 6
    functionLinenumber: 2298
    functionLinenumberEnd: 2371
    functionName: json_string_istream_read
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - str_len
    - i_unreached
    - str_data
    - str_delete
    - str_truncate
    - json_parser_continue
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t json_string_istream_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2382
      start: 2373
    functionDepth: 1
    functionLinenumber: 2373
    functionLinenumberEnd: 2382
    functionName: json_string_istream_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void json_string_istream_set_max_buffer_size(struct iostream_private
      *stream,\n\t\t\t\t\tsize_t max_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2393
      start: 2384
    functionDepth: 0
    functionLinenumber: 2384
    functionLinenumberEnd: 2393
    functionName: json_string_istream_close
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void json_string_istream_close(struct iostream_private *stream,\n\t\t\t
      \ bool close_parent ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2402,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-json/json-parser.c:2404,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-parser.c:2408,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-json/json-parser.c:2409,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-json/json-parser.c:2424,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-json/json-parser.c:2425,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-json/json-parser.c:2427,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-json/json-parser.c:2429,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-json/json-parser.c:2431,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/json-parser.c:2431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - parser
    - complete
    argTypes:
    - struct json_parser*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2435
      start: 2395
    functionDepth: 1
    functionLinenumber: 2395
    functionLinenumberEnd: 2435
    functionName: json_string_stream_create
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 2
    functionsReached:
    - i_stream_get_fd
    - str_data
    - str_len
    - i_stream_set_name
    - t_strdup_printf
    - i_new
    - i_stream_create
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      json_string_stream_create(struct json_parser *parser, bool complete)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-parser.c:2440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - parser
    - threshold
    - max_buffer_size
    argTypes:
    - struct json_parser*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2437
    functionDepth: 1
    functionLinenumber: 2437
    functionLinenumberEnd: 2445
    functionName: json_parser_enable_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void json_parser_enable_string_stream(struct json_parser *parser,\n\t\t\t\t
      \     size_t threshold, size_t max_buffer_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct json_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2447
    functionDepth: 0
    functionLinenumber: 2447
    functionLinenumberEnd: 2450
    functionName: json_parser_disable_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void json_parser_disable_string_stream(struct json_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-tree.c:22,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-tree.c:24,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-json/test-json-tree.c:25,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-tree.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:29,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/test-json-tree.c:29,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:31,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-tree.c:31,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - val_input
    - expected
    argTypes:
    - struct istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 33
    functionName: test_stream_value
    functionSourceFile: /src/dovecot/src/lib-json/test-json-tree.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_stream_have_bytes_left
    - test_assert_strcmp
    - i_stream_skip
    - test_assert
    - str_append_data
    - str_new
    - str_free
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void test_stream_value(struct istream *val_input, const char *expected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:46,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:47,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:48,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:48,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:50,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:50,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:51,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:52,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:53,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:54,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:54,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:55,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:56,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:57,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:60,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:61,1
    - Dst: json_tree_node_add_false
      Src: /src/dovecot/src/lib-json/test-json-tree.c:62,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:62,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:64,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:65,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-tree.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:66,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:66,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:67,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:68,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:69,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:72,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:73,1
    - Dst: json_tree_node_add_null
      Src: /src/dovecot/src/lib-json/test-json-tree.c:74,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:74,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:76,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:77,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-tree.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:78,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:78,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:79,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:80,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:81,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:84,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:85,1
    - Dst: json_tree_node_add_true
      Src: /src/dovecot/src/lib-json/test-json-tree.c:86,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:86,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:88,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:89,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-tree.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:90,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:90,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:91,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:92,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:93,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:96,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:97,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:98,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:98,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:100,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:101,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:101,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:102,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-tree.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:103,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:103,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:104,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:105,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:106,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:109,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:110,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-tree.c:112,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-tree.c:112,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-tree.c:113,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:113,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:115,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:117,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:118,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:120,1
    - Dst: test_stream_value
      Src: /src/dovecot/src/lib-json/test-json-tree.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:122,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:122,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:123,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:124,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:125,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:128,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:129,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:130,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:130,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:132,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:133,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:133,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:134,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:135,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:136,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:136,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:137,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:138,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:139,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:142,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:143,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:144,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:144,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:145,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:147,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:148,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:149,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:150,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:150,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:151,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-tree.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:152,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:153,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:154,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:154,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:155,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:156,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:157,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:160,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:161,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:162,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:162,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-tree.c:164,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-tree.c:164,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-tree.c:165,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:166,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:167,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:168,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:169,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:169,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:170,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:170,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:171,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:173,1
    - Dst: test_stream_value
      Src: /src/dovecot/src/lib-json/test-json-tree.c:174,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:175,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:176,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:176,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:177,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:177,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:178,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:179,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:180,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:183,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:184,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:185,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:185,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:186,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:187,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:188,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:188,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:189,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:189,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:190,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:190,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:191,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:191,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:192,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:193,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:194,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:197,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:198,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:199,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:199,1
    - Dst: json_tree_node_add_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:200,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:202,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:202,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:203,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:204,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:204,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:205,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:205,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:206,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:207,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-tree.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:208,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:208,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:209,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:209,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:210,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:210,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:211,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:212,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:213,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:216,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:217,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:218,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:218,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-tree.c:220,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-tree.c:220,1
    - Dst: json_tree_node_add_string_stream
      Src: /src/dovecot/src/lib-json/test-json-tree.c:221,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:222,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:223,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:224,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:225,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:225,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:226,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:227,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-tree.c:227,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:230,1
    - Dst: test_stream_value
      Src: /src/dovecot/src/lib-json/test-json-tree.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:232,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:232,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:233,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:233,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:234,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:234,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:235,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:236,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:237,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:240,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:241,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:242,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:242,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:243,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:244,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:245,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-tree.c:246,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-tree.c:247,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:248,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:249,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:250,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-tree.c:251,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-tree.c:252,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:253,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:254,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:255,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:257,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:257,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:258,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:258,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:259,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:259,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:260,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:260,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:262,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:263,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:264,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:264,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:265,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:265,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:266,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:267,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:267,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:268,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:269,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:269,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:270,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:270,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:271,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:271,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:272,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:273,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:273,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:274,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:274,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:276,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:276,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:277,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:278,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:278,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:279,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:279,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:281,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:283,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:283,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:284,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:284,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:285,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:286,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:286,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:287,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:287,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:288,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:288,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:290,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:291,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:292,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:293,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:293,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:294,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:295,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:295,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:297,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:298,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:298,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:299,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:299,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:300,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:300,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:301,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:301,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:302,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:302,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:303,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:303,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:304,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:305,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:306,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:309,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:310,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:311,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:312,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:313,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:314,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:315,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:316,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:317,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:318,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:319,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:320,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:321,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:322,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:323,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:324,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:325,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:326,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:327,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:328,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:329,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:330,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:331,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:332,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:333,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:334,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:335,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:336,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:337,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:338,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:338,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:339,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:339,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:340,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:340,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:341,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:341,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:342,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:343,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:344,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:344,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:345,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:345,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:346,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:346,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:347,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:348,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:349,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:350,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:350,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:351,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:351,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:352,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:352,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:353,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:353,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:354,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:354,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:355,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:355,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:356,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:357,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:357,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:358,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:358,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:359,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:359,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:360,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:360,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:361,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:362,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:362,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:363,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:364,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:364,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:365,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:365,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:366,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:366,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:367,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:367,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:368,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:368,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:369,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:369,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:370,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:371,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:371,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:372,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:372,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:373,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:373,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:374,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:374,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:375,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:376,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:376,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:377,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:378,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:379,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:379,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:380,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:380,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:381,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:381,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:382,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:382,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:383,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:384,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:384,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:385,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:386,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:387,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree.c:390,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:391,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:392,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:393,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:394,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:395,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:396,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:397,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:398,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:399,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:400,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:401,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:402,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:403,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:404,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:405,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:406,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:407,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:408,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:409,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:410,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:411,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:412,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:413,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:414,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:415,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:416,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:417,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:418,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:419,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:420,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:421,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:422,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:423,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:424,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:425,1
    - Dst: json_tree_node_add_number_int
      Src: /src/dovecot/src/lib-json/test-json-tree.c:426,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:427,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:428,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:429,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-tree.c:430,1
    - Dst: json_tree_node_add_subtree
      Src: /src/dovecot/src/lib-json/test-json-tree.c:431,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:432,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/test-json-tree.c:433,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:434,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:434,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:435,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:435,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:436,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:436,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:437,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:437,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:438,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:439,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:440,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:440,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:441,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:441,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:442,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:442,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:443,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:444,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:444,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:445,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:446,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:446,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:447,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:447,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:448,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:448,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:449,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:449,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:450,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:450,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:451,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:451,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:452,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:453,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:454,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:454,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:455,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:455,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:456,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:456,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:457,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:458,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:458,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:459,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:460,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:460,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:461,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:461,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:462,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:462,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:463,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:463,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:464,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:464,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:465,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-tree.c:465,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:467,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:467,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:468,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-tree.c:468,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:469,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:469,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:470,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-tree.c:470,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree.c:471,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:472,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-tree.c:472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:473,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:474,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:474,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:475,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:475,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:476,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:476,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:477,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:477,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:478,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:478,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:479,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree.c:480,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/test-json-tree.c:480,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/test-json-tree.c:481,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree.c:482,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 410
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 484
    functionName: test_json_tree_walker
    functionSourceFile: /src/dovecot/src/lib-json/test-json-tree.c
    functionUses: 0
    functionsReached:
    - json_tree_node_add_string
    - test_stream_value
    - json_tree_node_add_false
    - json_node_is_false
    - strlen
    - json_tree_node_add_array
    - json_node_get_intmax
    - test_assert
    - i_stream_create_from_data
    - json_tree_create
    - json_tree_walker_free
    - json_tree_node_add_subtree
    - json_node_get_str
    - test_end
    - json_tree_get_root
    - json_node_is_object
    - json_tree_unref
    - json_node_is_array_end
    - json_tree_node_add_true
    - json_node_is_string
    - json_node_is_array
    - json_node_is_null
    - json_tree_node_get_parent
    - test_assert_strcmp
    - json_node_is_number
    - json_tree_node_add_number_int
    - json_tree_node_add_object
    - json_node_is_true
    - json_tree_walk
    - json_tree_walker_create
    - i_stream_unref
    - json_tree_node_add_string_stream
    - json_node_is_object_end
    - test_begin
    - json_tree_node_add_null
    linkageType: ''
    returnType: void
    signature: void test_json_tree_walker(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/dovecot/src/lib-json/test-json-tree.c:495,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-tree.c:501,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-json/test-json-tree.c:505,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 506
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-json/test-json-tree.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - getopt
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-json/json-generator.c:102,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-json/json-generator.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum json_generator_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 107
    functionName: json_generator_new
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct json_generator
    signature: 'struct json_generator *

      json_generator_new(enum json_generator_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_new
      Src: /src/dovecot/src/lib-json/json-generator.c:114,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/json-generator.c:115,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-json/json-generator.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - output
    - flags
    argTypes:
    - struct ostream*
    - enum json_generator_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 120
    functionName: json_generator_init
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 4
    functionsReached:
    - o_stream_ref
    - str_new
    - json_generator_new
    linkageType: ''
    returnType: struct json_generator
    signature: 'struct json_generator *

      json_generator_init(struct ostream *output, enum json_generator_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_new
      Src: /src/dovecot/src/lib-json/json-generator.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - flags
    argTypes:
    - string_t*
    - enum json_generator_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 131
    functionName: json_generator_init_str
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generator_new
    linkageType: ''
    returnType: struct json_generator
    signature: 'struct json_generator *

      json_generator_init_str(string_t *buf, enum json_generator_flags flags)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:141,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-generator.c:143,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/json-generator.c:145,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/json-generator.c:146,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-json/json-generator.c:148,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-generator.c:149,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-generator.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - _generator
    argTypes:
    - struct json_generator**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 151
    functionName: json_generator_deinit
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 4
    functionsReached:
    - i_free
    - o_stream_unref
    - i_stream_unref
    - i_assert
    - array_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void json_generator_deinit(struct json_generator **_generator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:157,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-generator.c:160,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-json/json-generator.c:162,1
    - Dst: memset
      Src: /src/dovecot/src/lib-json/json-generator.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - generator
    - format
    argTypes:
    - struct json_generator*
    - struct json_format*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 167
    functionName: json_generator_set_format
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 2
    functionsReached:
    - i_malloc
    - memset
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void json_generator_set_format(struct json_generator *generator,\n\t\t\t\tconst
      struct json_format *format)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-json/json-generator.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 175
    functionName: json_generator_bytes_available
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_avail_size
    linkageType: ''
    returnType: size_t
    signature: size_t json_generator_bytes_available(struct json_generator *generator)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_bytes_available
      Src: /src/dovecot/src/lib-json/json-generator.c:181,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:184,1
    - Dst: json_generator_bytes_available
      Src: /src/dovecot/src/lib-json/json-generator.c:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - generator
    - space
    - avail_r
    argTypes:
    - struct json_generator*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 188
    functionName: json_generator_make_space
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - json_generator_bytes_available
    linkageType: ''
    returnType: int
    signature: "int json_generator_make_space(struct json_generator *generator, size_t
      space,\n\t\t\t  size_t *avail_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-json/json-generator.c:197,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-json/json-generator.c:200,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - generator
    - data
    - size
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 205
    functionName: json_generator_write
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_assert
    - str_append_data
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: "int json_generator_write(struct json_generator *generator,\n\t\t     const
      void *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_make_space
      Src: /src/dovecot/src/lib-json/json-generator.c:214,1
    - Dst: json_generator_write
      Src: /src/dovecot/src/lib-json/json-generator.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - generator
    - data
    - size
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 207
    functionDepth: 3
    functionLinenumber: 207
    functionLinenumberEnd: 219
    functionName: json_generator_write_all
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generator_write
    - json_generator_make_space
    linkageType: ''
    returnType: int
    signature: "int json_generator_write_all(struct json_generator *generator,\n\t\t\t
      const void *data, size_t size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-generator.c:228,1
    - Dst: json_generator_make_space
      Src: /src/dovecot/src/lib-json/json-generator.c:230,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:234,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-generator.c:235,1
    - Dst: json_generator_write
      Src: /src/dovecot/src/lib-json/json-generator.c:236,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-json/json-generator.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:244,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-generator.c:246,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib-json/json-generator.c:248,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-json/json-generator.c:250,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 4
    argNames:
    - generator
    - data
    - size
    - continued
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 253
    functionName: json_generator_write_buffered
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - json_generator_make_space
    - str_len
    - str_append_data
    - json_generator_write
    - str_delete
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int json_generator_write_buffered(struct json_generator *generator,\n\t\t\t
      \     const void *data, size_t size, bool continued)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-generator.c:262,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-json/json-generator.c:265,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-json/json-generator.c:266,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:267,1
    - Dst: json_generator_make_space
      Src: /src/dovecot/src/lib-json/json-generator.c:272,1
    - Dst: json_generator_write
      Src: /src/dovecot/src/lib-json/json-generator.c:277,1
    - Dst: json_generator_write
      Src: /src/dovecot/src/lib-json/json-generator.c:282,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/json-generator.c:285,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 255
    functionDepth: 3
    functionLinenumber: 255
    functionLinenumberEnd: 287
    functionName: json_generator_flush_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generator_make_space
    - str_data
    - str_len
    - json_generator_write
    - str_truncate
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_generator_flush_buffer(struct json_generator *generator)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:297,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:303,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:313,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:315,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:325,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-generator.c:336,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 289
    functionDepth: 4
    functionLinenumber: 289
    functionLinenumberEnd: 337
    functionName: json_generator_flush_format
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generator_write_all
    - i_assert
    - i_unreached
    - json_generator_write_buffered
    linkageType: ''
    returnType: int
    signature: int json_generator_flush_format(struct json_generator *generator)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:345,1
    - Dst: json_generator_flush_format
      Src: /src/dovecot/src/lib-json/json-generator.c:355,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - generator
    - indent_count
    - finish
    argTypes:
    - struct json_generator*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 339
    functionDepth: 5
    functionLinenumber: 339
    functionLinenumberEnd: 356
    functionName: json_generator_write_newline
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_generator_flush_format
    linkageType: ''
    returnType: int
    signature: "int json_generator_write_newline(struct json_generator *generator,\n\t\t\t
      \     unsigned int indent_count, bool finish)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:364,1
    - Dst: json_generator_flush_format
      Src: /src/dovecot/src/lib-json/json-generator.c:369,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - generator
    - finish
    argTypes:
    - struct json_generator*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 358
    functionDepth: 5
    functionLinenumber: 358
    functionLinenumberEnd: 370
    functionName: json_generator_write_space
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_generator_flush_format
    linkageType: ''
    returnType: int
    signature: "int json_generator_write_space(struct json_generator *generator,\n\t\t\t
      \   bool finish)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 375
    functionName: json_generator_finish_format
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void json_generator_finish_format(struct json_generator *generator)
  - BBCount: 47
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-json/json-generator.c:379,1
    - Dst: json_generator_flush_buffer
      Src: /src/dovecot/src/lib-json/json-generator.c:384,1
    - Dst: json_generator_flush_format
      Src: /src/dovecot/src/lib-json/json-generator.c:388,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:394,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:401,1
    - Dst: json_generator_write_space
      Src: /src/dovecot/src/lib-json/json-generator.c:405,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:413,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:418,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:424,1
    - Dst: json_generator_write_newline
      Src: /src/dovecot/src/lib-json/json-generator.c:428,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-json/json-generator.c:435,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:439,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:448,1
    - Dst: json_generator_write_newline
      Src: /src/dovecot/src/lib-json/json-generator.c:456,1
    - Dst: json_generator_write_newline
      Src: /src/dovecot/src/lib-json/json-generator.c:467,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:481,1
    - Dst: json_generator_write_newline
      Src: /src/dovecot/src/lib-json/json-generator.c:489,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:496,1
    - Dst: json_generator_write_space
      Src: /src/dovecot/src/lib-json/json-generator.c:500,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:510,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:512,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:516,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:527,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:529,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:540,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:542,1
    - Dst: json_generator_flush_string_input
      Src: /src/dovecot/src/lib-json/json-generator.c:548,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:554,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:569,1
    - Dst: json_generator_flush_text_input
      Src: /src/dovecot/src/lib-json/json-generator.c:571,1
    CyclomaticComplexity: 63
    EdgeCount: 63
    ICount: 156
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 377
    functionDepth: 6
    functionLinenumber: 377
    functionLinenumberEnd: 578
    functionName: json_generator_flush
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 6
    functionsReached:
    - json_generator_flush_buffer
    - json_generator_write_space
    - json_generator_write_newline
    - json_generator_flush_string_input
    - json_generator_flush_text_input
    - json_generator_write_all
    - json_generator_flush_format
    - array_idx_get_space
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_generator_flush(struct json_generator *generator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:587,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 589
    functionName: json_generator_value_begin
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void json_generator_value_begin(struct json_generator *generator)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin
      Src: /src/dovecot/src/lib-json/json-generator.c:596,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:599,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 591
    functionDepth: 7
    functionLinenumber: 591
    functionLinenumberEnd: 604
    functionName: json_generator_value_begin_flushed
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generator_value_begin
    - i_assert
    - json_generator_flush
    linkageType: ''
    returnType: int
    signature: int json_generator_value_begin_flushed(struct json_generator *generator)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 616
    functionName: json_generator_value_end
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void json_generator_value_end(struct json_generator *generator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin_flushed
      Src: /src/dovecot/src/lib-json/json-generator.c:626,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-json/json-generator.c:630,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:632,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - generator
    - number
    argTypes:
    - struct json_generator*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 622
    functionDepth: 8
    functionLinenumber: 622
    functionLinenumberEnd: 634
    functionName: json_generate_number
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 2
    functionsReached:
    - str_printfa
    - json_generator_flush
    - json_generator_value_begin_flushed
    - json_generator_value_end
    linkageType: ''
    returnType: int
    signature: int json_generate_number(struct json_generator *generator, intmax_t
      number)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin_flushed
      Src: /src/dovecot/src/lib-json/json-generator.c:641,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:644,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-generator.c:645,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:647,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - generator
    - number
    argTypes:
    - struct json_generator*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 636
    functionDepth: 8
    functionLinenumber: 636
    functionLinenumberEnd: 649
    functionName: json_generate_number_raw
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - strlen
    - json_generator_write_buffered
    - json_generator_value_begin_flushed
    - json_generator_value_end
    linkageType: ''
    returnType: int
    signature: "int json_generate_number_raw(struct json_generator *generator,\n\t\t\t
      \     const char *number)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin
      Src: /src/dovecot/src/lib-json/json-generator.c:657,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 655
    functionDepth: 2
    functionLinenumber: 655
    functionLinenumberEnd: 659
    functionName: json_generate_string_open
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generator_value_begin
    linkageType: ''
    returnType: void
    signature: void json_generate_string_open(struct json_generator *generator)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_make_space
      Src: /src/dovecot/src/lib-json/json-generator.c:683,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-json/json-generator.c:693,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib-json/json-generator.c:695,1
    - Dst: dec2hex
      Src: /src/dovecot/src/lib-json/json-generator.c:738,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:750,1
    - Dst: json_generator_write
      Src: /src/dovecot/src/lib-json/json-generator.c:755,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:765,1
    - Dst: json_generator_write
      Src: /src/dovecot/src/lib-json/json-generator.c:770,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 85
    argCount: 5
    argNames:
    - generator
    - data
    - size
    - buffered
    - last
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 661
    functionDepth: 4
    functionLinenumber: 661
    functionLinenumberEnd: 782
    functionName: json_generate_string_write_data
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generator_write_buffered
    - uni_is_valid_ucs4
    - json_generator_make_space
    - uni_utf8_get_char_n
    - dec2hex
    - json_generator_write
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t json_generate_string_write_data(struct json_generator *generator,\n\t\t\t\tconst
      void *data, size_t size,\n\t\t\t\tbool buffered, bool last)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:789,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:790,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:791,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:794,1
    - Dst: json_generate_string_write_data
      Src: /src/dovecot/src/lib-json/json-generator.c:796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - generator
    - data
    - size
    - last
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 784
    functionDepth: 7
    functionLinenumber: 784
    functionLinenumberEnd: 798
    functionName: json_generate_string_more
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generate_string_write_data
    - i_assert
    - json_generator_flush
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t json_generate_string_more(struct json_generator *generator,\n\t\t\t\t
      \ const void *data, size_t size, bool last)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:802,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:803,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:804,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 818
    functionName: json_generate_string_close
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void json_generate_string_close(struct json_generator *generator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:822,1
    - Dst: json_generate_string_close
      Src: /src/dovecot/src/lib-json/json-generator.c:824,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:825,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 820
    functionDepth: 7
    functionLinenumber: 820
    functionLinenumberEnd: 826
    functionName: json_generate_string_write_close
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generate_string_close
    - i_assert
    - json_generator_flush
    linkageType: ''
    returnType: int
    signature: int json_generate_string_write_close(struct json_generator *generator)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin_flushed
      Src: /src/dovecot/src/lib-json/json-generator.c:833,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:837,1
    - Dst: json_generate_string_write_data
      Src: /src/dovecot/src/lib-json/json-generator.c:839,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:842,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:845,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - generator
    - data
    - size
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 828
    functionDepth: 8
    functionLinenumber: 828
    functionLinenumberEnd: 847
    functionName: json_generate_string_data
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generate_string_write_data
    - json_generator_write_buffered
    - json_generator_value_begin_flushed
    - json_generator_value_end
    linkageType: ''
    returnType: int
    signature: "int json_generate_string_data(struct json_generator *generator,\n\t\t\t
      \     const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_string_data
      Src: /src/dovecot/src/lib-json/json-generator.c:851,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-generator.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - generator
    - str
    argTypes:
    - struct json_generator*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 849
    functionDepth: 9
    functionLinenumber: 849
    functionLinenumberEnd: 854
    functionName: json_generate_string
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 2
    functionsReached:
    - strlen
    - json_generate_string_data
    linkageType: ''
    returnType: int
    signature: int json_generate_string(struct json_generator *generator, const char
      *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/json-generator.c:864,1
    - Dst: json_generate_string_write_data
      Src: /src/dovecot/src/lib-json/json-generator.c:866,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/json-generator.c:873,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:879,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/json-generator.c:879,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-generator.c:880,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 856
    functionDepth: 5
    functionLinenumber: 856
    functionLinenumberEnd: 884
    functionName: json_generator_flush_string_input
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - i_stream_have_bytes_left
    - i_stream_skip
    - json_generate_string_write_data
    - i_stream_unref
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int json_generator_flush_string_input(struct json_generator *generator)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:889,1
    - Dst: json_generator_value_begin
      Src: /src/dovecot/src/lib-json/json-generator.c:890,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/json-generator.c:892,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - generator
    - input
    argTypes:
    - struct json_generator*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 886
    functionDepth: 7
    functionLinenumber: 886
    functionLinenumberEnd: 905
    functionName: json_generate_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generator_value_begin
    - json_generator_flush
    - i_assert
    - i_stream_ref
    linkageType: ''
    returnType: int
    signature: "int json_generate_string_stream(struct json_generator *generator,\n\t\t\t\tstruct
      istream *input)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-generator.c:914,1
    - Dst: json_generator_value_begin_flushed
      Src: /src/dovecot/src/lib-json/json-generator.c:917,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:921,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:925,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - generator
    - literal
    argTypes:
    - struct json_generator*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 911
    functionDepth: 8
    functionLinenumber: 911
    functionLinenumberEnd: 927
    functionName: json_generate_literal
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generator_write_all
    - strlen
    - json_generator_value_begin_flushed
    - json_generator_value_end
    linkageType: ''
    returnType: int
    signature: int json_generate_literal(struct json_generator *generator, const char
      *literal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_literal
      Src: /src/dovecot/src/lib-json/json-generator.c:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 929
    functionDepth: 9
    functionLinenumber: 929
    functionLinenumberEnd: 932
    functionName: json_generate_null
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generate_literal
    linkageType: ''
    returnType: int
    signature: int json_generate_null(struct json_generator *generator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_literal
      Src: /src/dovecot/src/lib-json/json-generator.c:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 934
    functionDepth: 9
    functionLinenumber: 934
    functionLinenumberEnd: 937
    functionName: json_generate_false
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generate_literal
    linkageType: ''
    returnType: int
    signature: int json_generate_false(struct json_generator *generator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_literal
      Src: /src/dovecot/src/lib-json/json-generator.c:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 939
    functionDepth: 9
    functionLinenumber: 939
    functionLinenumberEnd: 942
    functionName: json_generate_true
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 2
    functionsReached:
    - json_generate_literal
    linkageType: ''
    returnType: int
    signature: int json_generate_true(struct json_generator *generator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-json/json-generator.c:953,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-generator.c:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - generator
    - object
    argTypes:
    - struct json_generator*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 958
    functionName: json_generator_level_open
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_idx_get_space
    linkageType: ''
    returnType: void
    signature: void json_generator_level_open(struct json_generator *generator, bool
      object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:965,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:967,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-json/json-generator.c:974,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-json/json-generator.c:979,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - generator
    - object
    argTypes:
    - struct json_generator*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 982
    functionName: json_generator_level_close
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: void json_generator_level_close(struct json_generator *generator, bool
      object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin
      Src: /src/dovecot/src/lib-json/json-generator.c:990,1
    - Dst: json_generator_level_open
      Src: /src/dovecot/src/lib-json/json-generator.c:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 988
    functionDepth: 2
    functionLinenumber: 988
    functionLinenumberEnd: 993
    functionName: json_generate_array_open
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 5
    functionsReached:
    - json_generator_value_begin
    - json_generator_level_open
    linkageType: ''
    returnType: void
    signature: void json_generate_array_open(struct json_generator *generator)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-json/json-generator.c:997,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1001,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1002,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:1003,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1006,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1009,1
    - Dst: json_generator_write_newline
      Src: /src/dovecot/src/lib-json/json-generator.c:1010,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:1015,1
    - Dst: json_generator_level_close
      Src: /src/dovecot/src/lib-json/json-generator.c:1019,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:1020,1
    - Dst: json_generator_finish_format
      Src: /src/dovecot/src/lib-json/json-generator.c:1021,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 995
    functionDepth: 7
    functionLinenumber: 995
    functionLinenumberEnd: 1023
    functionName: json_generate_array_close
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 5
    functionsReached:
    - json_generator_write_newline
    - json_generator_finish_format
    - json_generator_write_all
    - json_generator_level_close
    - json_generator_flush
    - json_generator_value_end
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_generate_array_close(struct json_generator *generator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin
      Src: /src/dovecot/src/lib-json/json-generator.c:1031,1
    - Dst: json_generator_level_open
      Src: /src/dovecot/src/lib-json/json-generator.c:1032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1029
    functionDepth: 2
    functionLinenumber: 1029
    functionLinenumberEnd: 1034
    functionName: json_generate_object_open
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 5
    functionsReached:
    - json_generator_value_begin
    - json_generator_level_open
    linkageType: ''
    returnType: void
    signature: void json_generate_object_open(struct json_generator *generator)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1041,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1042,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:1046,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1049,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:1052,1
    - Dst: json_generate_string_write_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1054,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-generator.c:1055,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:1057,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - generator
    - name
    argTypes:
    - struct json_generator*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1036
    functionDepth: 7
    functionLinenumber: 1036
    functionLinenumberEnd: 1061
    functionName: json_generate_object_member
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 6
    functionsReached:
    - json_generator_write_buffered
    - strlen
    - json_generate_string_write_data
    - json_generator_flush
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int json_generate_object_member(struct json_generator *generator,\n\t\t\t\tconst
      char *name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-json/json-generator.c:1065,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1069,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1070,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:1071,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1074,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1076,1
    - Dst: json_generator_write_newline
      Src: /src/dovecot/src/lib-json/json-generator.c:1077,1
    - Dst: json_generator_write_all
      Src: /src/dovecot/src/lib-json/json-generator.c:1082,1
    - Dst: json_generator_level_close
      Src: /src/dovecot/src/lib-json/json-generator.c:1086,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:1087,1
    - Dst: json_generator_finish_format
      Src: /src/dovecot/src/lib-json/json-generator.c:1088,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1063
    functionDepth: 7
    functionLinenumber: 1063
    functionLinenumberEnd: 1090
    functionName: json_generate_object_close
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 5
    functionsReached:
    - json_generator_write_newline
    - json_generator_finish_format
    - json_generator_write_all
    - json_generator_level_close
    - json_generator_flush
    - json_generator_value_end
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_generate_object_close(struct json_generator *generator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin
      Src: /src/dovecot/src/lib-json/json-generator.c:1098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1096
    functionDepth: 2
    functionLinenumber: 1096
    functionLinenumberEnd: 1100
    functionName: json_generate_text_open
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generator_value_begin
    linkageType: ''
    returnType: void
    signature: void json_generate_text_open(struct json_generator *generator)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_make_space
      Src: /src/dovecot/src/lib-json/json-generator.c:1111,1
    - Dst: json_generator_write_buffered
      Src: /src/dovecot/src/lib-json/json-generator.c:1121,1
    - Dst: json_generator_write
      Src: /src/dovecot/src/lib-json/json-generator.c:1125,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - generator
    - data
    - size
    - buffered
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1102
    functionDepth: 4
    functionLinenumber: 1102
    functionLinenumberEnd: 1129
    functionName: json_generate_text_write_data
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generator_write_buffered
    - json_generator_write
    - json_generator_make_space
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t json_generate_text_write_data(struct json_generator *generator,\n\t\t\t
      \     const void *data, size_t size, bool buffered)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1136,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:1137,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1140,1
    - Dst: json_generate_text_write_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - generator
    - data
    - size
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1131
    functionDepth: 7
    functionLinenumber: 1131
    functionLinenumberEnd: 1143
    functionName: json_generate_text_more
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generate_text_write_data
    - i_assert
    - json_generator_flush
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t json_generate_text_more(struct json_generator *generator,\n\t\t\t\tconst
      void *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1149,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:1150,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1153,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:1155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1145
    functionDepth: 7
    functionLinenumber: 1145
    functionLinenumberEnd: 1157
    functionName: json_generate_text_close
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - i_assert
    - json_generator_flush
    - json_generator_value_end
    linkageType: ''
    returnType: int
    signature: int json_generate_text_close(struct json_generator *generator)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_value_begin_flushed
      Src: /src/dovecot/src/lib-json/json-generator.c:1164,1
    - Dst: json_generate_text_write_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1168,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:1170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - generator
    - data
    - size
    argTypes:
    - struct json_generator*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1159
    functionDepth: 8
    functionLinenumber: 1159
    functionLinenumberEnd: 1172
    functionName: json_generate_text_data
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generate_text_write_data
    - json_generator_value_begin_flushed
    - json_generator_value_end
    linkageType: ''
    returnType: int
    signature: "int json_generate_text_data(struct json_generator *generator,\n\t\t\t
      \   const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_text_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1176,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-generator.c:1177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - generator
    - str
    argTypes:
    - struct json_generator*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1174
    functionDepth: 9
    functionLinenumber: 1174
    functionLinenumberEnd: 1178
    functionName: json_generate_text
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generate_text_data
    - strlen
    linkageType: ''
    returnType: int
    signature: int json_generate_text(struct json_generator *generator, const char
      *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/json-generator.c:1188,1
    - Dst: json_generate_text_write_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1190,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/json-generator.c:1196,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1202,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/json-generator.c:1202,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-generator.c:1203,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1180
    functionDepth: 5
    functionLinenumber: 1180
    functionLinenumberEnd: 1207
    functionName: json_generator_flush_text_input
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generate_text_write_data
    - i_stream_have_bytes_left
    - i_stream_skip
    - i_stream_unref
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int json_generator_flush_text_input(struct json_generator *generator)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1212,1
    - Dst: json_generator_value_begin
      Src: /src/dovecot/src/lib-json/json-generator.c:1213,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/json-generator.c:1215,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:1225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - generator
    - input
    argTypes:
    - struct json_generator*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1209
    functionDepth: 7
    functionLinenumber: 1209
    functionLinenumberEnd: 1228
    functionName: json_generate_text_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generator_value_begin
    - json_generator_flush
    - i_assert
    - i_stream_ref
    linkageType: ''
    returnType: int
    signature: "int json_generate_text_stream(struct json_generator *generator,\n\t\t\t
      \     struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1239,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-generator.c:1244,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1234
    functionDepth: 7
    functionLinenumber: 1234
    functionLinenumberEnd: 1248
    functionName: json_generate_space_open
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_generator_flush
    linkageType: ''
    returnType: int
    signature: int json_generate_space_open(struct json_generator *generator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1252,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1253,1
    - Dst: json_generator_value_end
      Src: /src/dovecot/src/lib-json/json-generator.c:1255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1250
    functionDepth: 1
    functionLinenumber: 1250
    functionLinenumberEnd: 1256
    functionName: json_generate_space_close
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_generator_value_end
    linkageType: ''
    returnType: void
    signature: void json_generate_space_close(struct json_generator *generator)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_string
      Src: /src/dovecot/src/lib-json/json-generator.c:1270,1
    - Dst: json_generate_string_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1273,1
    - Dst: json_generate_string_stream
      Src: /src/dovecot/src/lib-json/json-generator.c:1277,1
    - Dst: json_generate_number_raw
      Src: /src/dovecot/src/lib-json/json-generator.c:1287,1
    - Dst: json_generate_number
      Src: /src/dovecot/src/lib-json/json-generator.c:1290,1
    - Dst: json_generate_true
      Src: /src/dovecot/src/lib-json/json-generator.c:1298,1
    - Dst: json_generate_false
      Src: /src/dovecot/src/lib-json/json-generator.c:1301,1
    - Dst: json_generate_null
      Src: /src/dovecot/src/lib-json/json-generator.c:1304,1
    - Dst: json_generate_text
      Src: /src/dovecot/src/lib-json/json-generator.c:1309,1
    - Dst: json_generate_text_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1312,1
    - Dst: json_generate_text_stream
      Src: /src/dovecot/src/lib-json/json-generator.c:1316,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-generator.c:1326,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 3
    argNames:
    - generator
    - type
    - value
    argTypes:
    - struct json_generator*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1262
    functionDepth: 10
    functionLinenumber: 1262
    functionLinenumberEnd: 1327
    functionName: json_generate_value
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 2
    functionsReached:
    - json_generate_string_stream
    - json_generate_string
    - json_generate_text_stream
    - i_unreached
    - json_generate_number_raw
    - json_generate_true
    - json_generate_null
    - json_generate_number
    - json_generate_false
    - json_generate_text_data
    - json_generate_text
    - json_generate_string_data
    linkageType: ''
    returnType: int
    signature: "int json_generate_value(struct json_generator *generator,\n\t\t\tenum
      json_type type, const struct json_value *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_string_close
      Src: /src/dovecot/src/lib-json/json-generator.c:1349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - jstream
    argTypes:
    - struct json_string_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1341
    functionDepth: 2
    functionLinenumber: 1341
    functionLinenumberEnd: 1354
    functionName: json_string_ostream_finish
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_generate_string_close
    linkageType: ''
    returnType: void
    signature: void json_string_ostream_finish(struct json_string_ostream *jstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1359,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-json/json-generator.c:1365,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-json/json-generator.c:1367,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1356
    functionDepth: 1
    functionLinenumber: 1356
    functionLinenumberEnd: 1368
    functionName: json_string_ostream_cork
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_cork
    - o_stream_uncork
    linkageType: ''
    returnType: void
    signature: void json_string_ostream_cork(struct ostream_private *stream, bool
      set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1375,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1377,1
    - Dst: json_string_ostream_finish
      Src: /src/dovecot/src/lib-json/json-generator.c:1380,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-json/json-generator.c:1382,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1370
    functionDepth: 3
    functionLinenumber: 1370
    functionLinenumberEnd: 1383
    functionName: json_string_ostream_close
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - o_stream_close
    - container_of
    - json_string_ostream_finish
    linkageType: ''
    returnType: void
    signature: "void json_string_ostream_close(struct iostream_private *stream,\n\t\t\t
      \  bool close_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_string_more
      Src: /src/dovecot/src/lib-json/json-generator.c:1395,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-json/json-generator.c:1398,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-json/json-generator.c:1399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - jstream
    - data
    - size
    argTypes:
    - struct json_string_ostream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1385
    functionDepth: 8
    functionLinenumber: 1385
    functionLinenumberEnd: 1408
    functionName: json_string_ostream_send
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - json_generate_string_more
    - io_stream_set_error
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t json_string_ostream_send(struct json_string_ostream *jstream,\n\t\t\t
      \ const void *data, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_string_ostream_send
      Src: /src/dovecot/src/lib-json/json-generator.c:1417,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-json/json-generator.c:1423,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-json/json-generator.c:1426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - jstream
    argTypes:
    - struct json_string_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1410
    functionDepth: 9
    functionLinenumber: 1410
    functionLinenumberEnd: 1428
    functionName: json_string_ostream_send_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - buffer_delete
    - json_string_ostream_send
    - buffer_set_used_size
    linkageType: ''
    returnType: int
    signature: int json_string_ostream_send_buffer(struct json_string_ostream *jstream)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1436,1
    - Dst: json_string_ostream_send_buffer
      Src: /src/dovecot/src/lib-json/json-generator.c:1441,1
    - Dst: json_string_ostream_send
      Src: /src/dovecot/src/lib-json/json-generator.c:1447,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1469,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-json/json-generator.c:1471,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1479,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1482,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1430
    functionDepth: 10
    functionLinenumber: 1430
    functionLinenumberEnd: 1490
    functionName: json_string_ostream_sendv
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_string_ostream_send_buffer
    - PTR_OFFSET
    - container_of
    - buffer_append
    - i_assert
    - json_string_ostream_send
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t json_string_ostream_sendv(struct ostream_private *stream,\n\t\t\t
      \ const struct const_iovec *iov,\n\t\t\t  unsigned int iov_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1495,1
    - Dst: json_string_ostream_send_buffer
      Src: /src/dovecot/src/lib-json/json-generator.c:1497,1
    - Dst: json_string_ostream_finish
      Src: /src/dovecot/src/lib-json/json-generator.c:1501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1492
    functionDepth: 10
    functionLinenumber: 1492
    functionLinenumberEnd: 1503
    functionName: json_string_ostream_flush
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - json_string_ostream_send_buffer
    - container_of
    - json_string_ostream_finish
    linkageType: ''
    returnType: int
    signature: int json_string_ostream_flush(struct ostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1508,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1510,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-json/json-generator.c:1512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1505
    functionDepth: 1
    functionLinenumber: 1505
    functionLinenumberEnd: 1513
    functionName: json_string_ostream_destroy
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - container_of
    linkageType: ''
    returnType: void
    signature: void json_string_ostream_destroy(struct iostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1519,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-json/json-generator.c:1526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1515
    functionDepth: 1
    functionLinenumber: 1515
    functionLinenumberEnd: 1527
    functionName: json_string_ostream_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t json_string_ostream_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1533,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-json/json-generator.c:1537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1529
    functionDepth: 1
    functionLinenumber: 1529
    functionLinenumberEnd: 1538
    functionName: json_string_ostream_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_buffer_avail_size
    linkageType: ''
    returnType: size_t
    signature: size_t json_string_ostream_get_buffer_avail_size(const struct ostream_private
      *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1545,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-json/json-generator.c:1547,1
    - Dst: o_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-json/json-generator.c:1551,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-json/json-generator.c:1555,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-json/json-generator.c:1557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1540
    functionDepth: 1
    functionLinenumber: 1540
    functionLinenumberEnd: 1559
    functionName: json_string_ostream_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - o_stream_get_max_buffer_size
    - buffer_create_dynamic
    - container_of
    - buffer_free
    linkageType: ''
    returnType: void
    signature: "void json_string_ostream_set_max_buffer_size(struct iostream_private
      *stream,\n\t\t\t\t\tsize_t max_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-generator.c:1566,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-json/json-generator.c:1568,1
    - Dst: o_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-json/json-generator.c:1584,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-json/json-generator.c:1589,1
    - Dst: json_generate_string_open
      Src: /src/dovecot/src/lib-json/json-generator.c:1592,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-json/json-generator.c:1595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - generator
    argTypes:
    - struct json_generator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1561
    functionDepth: 3
    functionLinenumber: 1561
    functionLinenumberEnd: 1596
    functionName: json_generate_string_open_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 1
    functionsReached:
    - json_generate_string_open
    - buffer_create_dynamic
    - o_stream_create
    - i_new
    - o_stream_get_max_buffer_size
    - i_assert
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      json_generate_string_open_stream(struct json_generator *generator)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1606,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1609,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1612,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1615,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1618,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1621,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-json/json-generator.c:1624,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-json/json-generator.c:1628,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-json/json-generator.c:1630,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - string_t*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1602
    functionDepth: 1
    functionLinenumber: 1602
    functionLinenumberEnd: 1633
    functionName: json_append_escaped_char
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void json_append_escaped_char(string_t *dest, unsigned char src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_append_escaped_char
      Src: /src/dovecot/src/lib-json/json-generator.c:1638,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-json/json-generator.c:1640,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-json/json-generator.c:1642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - dest
    - chr
    argTypes:
    - string_t*
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1635
    functionDepth: 2
    functionLinenumber: 1635
    functionLinenumberEnd: 1643
    functionName: json_append_escaped_ucs4
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 0
    functionsReached:
    - uni_ucs4_to_utf8_c
    - str_printfa
    - json_append_escaped_char
    linkageType: ''
    returnType: void
    signature: void json_append_escaped_ucs4(string_t *dest, unichar_t chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_append_escaped_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1648,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-generator.c:1648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1646
    functionDepth: 1
    functionLinenumber: 1646
    functionLinenumberEnd: 1649
    functionName: json_append_escaped
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 2
    functionsReached:
    - strlen
    - json_append_escaped_data
    linkageType: ''
    returnType: void
    signature: void json_append_escaped(string_t *dest, const char *src)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-json/json-generator.c:1659,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib-json/json-generator.c:1660,1
    - Dst: json_append_escaped_ucs4
      Src: /src/dovecot/src/lib-json/json-generator.c:1661,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-json/json-generator.c:1664,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - dest
    - src
    - size
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1669
      start: 1651
    functionDepth: 3
    functionLinenumber: 1651
    functionLinenumberEnd: 1669
    functionName: json_append_escaped_data
    functionSourceFile: /src/dovecot/src/lib-json/json-generator.c
    functionUses: 2
    functionsReached:
    - json_append_escaped_ucs4
    - uni_utf8_get_char_n
    - str_append_data
    - uni_is_valid_ucs4
    linkageType: ''
    returnType: void
    signature: "void json_append_escaped_data(string_t *dest, const unsigned char
      *src,\n\t\t\t      size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-json/json-tree.c:40,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-json/json-tree.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 51
    functionName: json_tree_create_pool
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - p_new
    - pool_ref
    linkageType: ''
    returnType: struct json_tree
    signature: struct json_tree *json_tree_create_pool(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-json/json-tree.c:58,1
    - Dst: json_tree_create_pool
      Src: /src/dovecot/src/lib-json/json-tree.c:59,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-json/json-tree.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: json_tree_create
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - json_tree_create_pool
    - pool_alloconly_create
    - pool_unref
    linkageType: ''
    returnType: struct json_tree
    signature: struct json_tree *json_tree_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: json_tree_ref
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void json_tree_ref(struct json_tree *jtree)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:79,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-json/json-tree.c:83,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-json/json-tree.c:85,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-tree.c:86,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-json/json-tree.c:87,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-json/json-tree.c:89,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-json/json-tree.c:91,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-tree.c:92,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-json/json-tree.c:93,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-json/json-tree.c:95,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - _jtree
    argTypes:
    - struct json_tree**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 96
    functionName: json_tree_unref
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 6
    functionsReached:
    - pool_unref
    - json_tree_unref
    - i_stream_unref
    - array_foreach_modifiable
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void json_tree_unref(struct json_tree **_jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/json-tree.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: json_tree_is_object
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_object
    linkageType: ''
    returnType: bool
    signature: bool json_tree_is_object(const struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/json-tree.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: json_tree_is_array
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_array
    linkageType: ''
    returnType: bool
    signature: bool json_tree_is_array(const struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/json-tree.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: json_tree_is_string
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_string
    linkageType: ''
    returnType: bool
    signature: bool json_tree_is_string(const struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/json-tree.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: json_tree_is_number
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_number
    linkageType: ''
    returnType: bool
    signature: bool json_tree_is_number(const struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/json-tree.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: json_tree_is_true
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_true
    linkageType: ''
    returnType: bool
    signature: bool json_tree_is_true(const struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/json-tree.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: json_tree_is_false
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_false
    linkageType: ''
    returnType: bool
    signature: bool json_tree_is_false(const struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_boolean
      Src: /src/dovecot/src/lib-json/json-tree.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: json_tree_is_boolean
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_boolean
    linkageType: ''
    returnType: bool
    signature: bool json_tree_is_boolean(const struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/json-tree.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: json_tree_is_null
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_null
    linkageType: ''
    returnType: bool
    signature: bool json_tree_is_null(const struct json_tree *jtree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:145,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:147,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-json/json-tree.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 154
    functionName: json_tree_node_create_list
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_assert
    - p_new
    linkageType: ''
    returnType: struct json_tree_node_list
    signature: 'struct json_tree_node_list *

      json_tree_node_create_list(struct json_tree_node *jtnode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 159
    functionName: json_tree_get_root
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct json_tree_node
    signature: struct json_tree_node *json_tree_get_root(struct json_tree *jtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: json_tree_get_root_const
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_get_root_const(const struct json_tree *jtree)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:174,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:178,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:181,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-json/json-tree.c:184,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-json/json-tree.c:186,1
    - Dst: json_tree_node_create_list
      Src: /src/dovecot/src/lib-json/json-tree.c:188,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-json/json-tree.c:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - struct json_tree_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 195
    functionName: json_tree_node_create
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - p_new
    - DLLIST2_APPEND
    - json_tree_node_create_list
    - i_assert
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_create(struct json_tree_node *parent, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parent
    - jnode
    argTypes:
    - struct json_tree_node*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 205
    functionName: json_tree_node_add
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add(struct json_tree_node
      *parent,\n\t\t   const struct json_node *jnode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_node_create
      Src: /src/dovecot/src/lib-json/json-tree.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - struct json_tree_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 209
    functionDepth: 3
    functionLinenumber: 209
    functionLinenumberEnd: 220
    functionName: json_tree_node_add_object
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - json_tree_node_create
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_add_object(struct json_tree_node *parent, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_node_create
      Src: /src/dovecot/src/lib-json/json-tree.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - struct json_tree_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 233
    functionName: json_tree_node_add_array
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - json_tree_node_create
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_add_array(struct json_tree_node *parent, const char *name)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_node_create
      Src: /src/dovecot/src/lib-json/json-tree.c:246,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-json/json-tree.c:259,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-json/json-tree.c:262,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-json/json-tree.c:264,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-json/json-tree.c:265,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-json/json-tree.c:269,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-json/json-tree.c:270,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-json/json-tree.c:271,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/json-tree.c:273,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:279,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-json/json-tree.c:280,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-json/json-tree.c:281,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-json/json-tree.c:282,1
    - Dst: json_tree_ref
      Src: /src/dovecot/src/lib-json/json-tree.c:284,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 4
    argNames:
    - parent
    - name
    - type
    - jvalue
    argTypes:
    - struct json_tree_node*
    - char*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 289
    functionName: json_tree_node_add_value
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 1
    functionsReached:
    - memcpy
    - i_array_init
    - p_strdup
    - p_new
    - i_stream_ref
    - json_tree_ref
    - json_tree_node_create
    - array_is_created
    - i_assert
    - array_append
    - p_malloc
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_value(struct json_tree_node
      *parent, const char *name,\n\t\t\t enum json_type type, const struct json_value
      *jvalue)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:299,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - parent
    - name
    - str
    argTypes:
    - struct json_tree_node*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 293
    functionDepth: 4
    functionLinenumber: 293
    functionLinenumberEnd: 304
    functionName: json_tree_node_add_string
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_string(struct json_tree_node
      *parent, const char *name,\n\t\t\t  const char *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:313,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:317,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - parent
    - name
    - data
    - size
    argTypes:
    - struct json_tree_node*
    - char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 306
    functionDepth: 4
    functionLinenumber: 306
    functionLinenumberEnd: 322
    functionName: json_tree_node_add_data
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_data(struct json_tree_node
      *parent, const char *name,\n\t\t\tconst unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:330,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - parent
    - name
    - input
    argTypes:
    - struct json_tree_node*
    - char*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 324
    functionDepth: 4
    functionLinenumber: 324
    functionLinenumberEnd: 335
    functionName: json_tree_node_add_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_string_stream(struct json_tree_node
      *parent,\n\t\t\t\t const char *name, struct istream *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:345,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - parent
    - name
    - num
    argTypes:
    - struct json_tree_node*
    - char*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 339
    functionDepth: 4
    functionLinenumber: 339
    functionLinenumberEnd: 350
    functionName: json_tree_node_add_number_int
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_number_int(struct json_tree_node
      *parent, const char *name,\n\t\t\t      uintmax_t num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:358,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - parent
    - name
    - num
    argTypes:
    - struct json_tree_node*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 352
    functionDepth: 4
    functionLinenumber: 352
    functionLinenumberEnd: 363
    functionName: json_tree_node_add_number_str
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_number_str(struct json_tree_node
      *parent, const char *name,\n\t\t\t      const char *num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:372,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - struct json_tree_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 367
    functionDepth: 4
    functionLinenumber: 367
    functionLinenumberEnd: 375
    functionName: json_tree_node_add_false
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_add_false(struct json_tree_node *parent, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:382,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - struct json_tree_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 377
    functionDepth: 4
    functionLinenumber: 377
    functionLinenumberEnd: 385
    functionName: json_tree_node_add_true
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_add_true(struct json_tree_node *parent, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:393,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - parent
    - name
    - val
    argTypes:
    - struct json_tree_node*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 387
    functionDepth: 4
    functionLinenumber: 387
    functionLinenumberEnd: 397
    functionName: json_tree_node_add_boolean
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_boolean(struct json_tree_node
      *parent, const char *name,\n\t\t\t   bool val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:406,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - struct json_tree_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 401
    functionDepth: 4
    functionLinenumber: 401
    functionLinenumberEnd: 409
    functionName: json_tree_node_add_null
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_add_null(struct json_tree_node *parent, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:419,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - parent
    - name
    - literal
    argTypes:
    - struct json_tree_node*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 413
    functionDepth: 4
    functionLinenumber: 413
    functionLinenumberEnd: 423
    functionName: json_tree_node_add_text
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_text(struct json_tree_node
      *parent, const char *name,\n\t\t\tconst char *literal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:432,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:436,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - parent
    - name
    - data
    - size
    argTypes:
    - struct json_tree_node*
    - char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 425
    functionDepth: 4
    functionLinenumber: 425
    functionLinenumberEnd: 440
    functionName: json_tree_node_add_text_data
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_text_data(struct json_tree_node
      *parent, const char *name,\n\t\t\t     const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:448,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-tree.c:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - parent
    - name
    - tree
    argTypes:
    - struct json_tree_node*
    - char*
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 442
    functionDepth: 4
    functionLinenumber: 442
    functionLinenumberEnd: 452
    functionName: json_tree_node_add_subtree
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached:
    - i_zero
    - json_tree_node_add_value
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_add_subtree(struct json_tree_node
      *parent, const char *name,\n\t\t\t   struct json_tree *tree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 461
    functionName: json_tree_node_get_type
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum json_type
    signature: enum json_type json_tree_node_get_type(const struct json_tree_node
      *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 466
    functionName: json_tree_node_get_name
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *json_tree_node_get_name(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 472
    functionName: json_tree_node_get_tree
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct json_tree
    signature: 'struct json_tree *

      json_tree_node_get_tree(struct json_tree_node *jtnode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 478
    functionName: json_tree_node_get_tree_const
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct json_tree
    signature: 'struct json_tree *

      json_tree_node_get_tree_const(const struct json_tree_node *jtnode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/json-tree.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 483
    functionName: json_tree_node_is_root
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_tree_get_root
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_root(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/json-tree.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: json_tree_node_is_object
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_object
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_object(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/json-tree.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 493
    functionName: json_tree_node_is_array
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_array
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_array(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/json-tree.c:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 498
    functionName: json_tree_node_is_string
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_string
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_string(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/json-tree.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 503
    functionName: json_tree_node_is_number
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_number
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_number(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/json-tree.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 508
    functionName: json_tree_node_is_true
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_true
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_true(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/json-tree.c:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 513
    functionName: json_tree_node_is_false
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_false
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_false(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_boolean
      Src: /src/dovecot/src/lib-json/json-tree.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 518
    functionName: json_tree_node_is_boolean
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_boolean
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_boolean(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/json-tree.c:522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 523
    functionName: json_tree_node_is_null
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_node_is_null
    linkageType: ''
    returnType: bool
    signature: bool json_tree_node_is_null(const struct json_tree_node *jtnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 529
    functionName: json_tree_node_get
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct json_node
    signature: 'struct json_node *

      json_tree_node_get(const struct json_tree_node *jtnode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 535
    functionName: json_tree_node_get_next
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_get_next(const struct json_tree_node *jtnode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 541
    functionName: json_tree_node_get_parent
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_get_parent(const struct json_tree_node *jtnode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 550
    functionName: json_tree_node_get_child
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_node_get_child(const struct json_tree_node *jtnode)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 559
    functionName: json_tree_node_get_child_count
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int json_tree_node_get_child_count(const struct json_tree_node
      *jtnode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:567,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/json-tree.c:567,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:568,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/json-tree.c:575,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - jtnode
    - name
    argTypes:
    - struct json_tree_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 580
    functionName: json_tree_node_get_member
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_node_is_object
    - i_assert
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_get_member(const struct json_tree_node
      *jtnode,\n\t\t\t  const char *name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:588,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/json-tree.c:596,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-json/json-tree.c:598,1
    - Dst: json_tree_node_is_string
      Src: /src/dovecot/src/lib-json/json-tree.c:601,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/json-tree.c:603,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-json/json-tree.c:603,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 3
    argNames:
    - jtnode
    - key
    - value
    argTypes:
    - struct json_tree_node*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 582
    functionDepth: 2
    functionLinenumber: 582
    functionLinenumberEnd: 610
    functionName: json_tree_node_get_child_with
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_tree_node_get_member
    - json_tree_node_get_str
    - json_node_is_object
    - json_tree_node_is_string
    - i_assert
    linkageType: ''
    returnType: struct json_tree_node
    signature: "struct json_tree_node *\njson_tree_node_get_child_with(const struct
      json_tree_node *jtnode,\n\t\t\t      const char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:629,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-json/json-tree.c:631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tree_node
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 635
    functionName: json_tree_walker_create_from_node
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct json_tree_walker
    signature: 'struct json_tree_walker *

      json_tree_walker_create_from_node(const struct json_tree_node *tree_node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:640,1
    - Dst: json_tree_walker_create_from_node
      Src: /src/dovecot/src/lib-json/json-tree.c:641,1
    - Dst: json_tree_get_root_const
      Src: /src/dovecot/src/lib-json/json-tree.c:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 637
    functionDepth: 2
    functionLinenumber: 637
    functionLinenumberEnd: 643
    functionName: json_tree_walker_create
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 1
    functionsReached:
    - i_assert
    - json_tree_walker_create_from_node
    - json_tree_get_root_const
    linkageType: ''
    returnType: struct json_tree_walker
    signature: 'struct json_tree_walker *

      json_tree_walker_create(const struct json_tree *tree)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-json/json-tree.c:653,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-tree.c:654,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _twalker
    argTypes:
    - struct json_tree_walker**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 655
    functionName: json_tree_walker_free
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 1
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void json_tree_walker_free(struct json_tree_walker **_twalker)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:665,1
    - Dst: json_node_is_singular
      Src: /src/dovecot/src/lib-json/json-tree.c:673,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-json/json-tree.c:674,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/json-tree.c:683,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/json-tree.c:689,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - twalker
    - is_end_r
    argTypes:
    - struct json_tree_walker*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 657
    functionDepth: 2
    functionLinenumber: 657
    functionLinenumberEnd: 690
    functionName: json_tree_walk_next
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 0
    functionsReached:
    - json_tree_node_get_parent
    - json_node_is_singular
    - json_tree_node_get_next
    - json_tree_node_get_child
    - i_assert
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      json_tree_walk_next(struct json_tree_walker *twalker, bool *is_end_r)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_walk_next
      Src: /src/dovecot/src/lib-json/json-tree.c:697,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:699,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:700,1
    - Dst: json_tree_node_is_root
      Src: /src/dovecot/src/lib-json/json-tree.c:705,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:709,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:710,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-json/json-tree.c:710,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:711,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-json/json-tree.c:711,1
    - Dst: array_back
      Src: /src/dovecot/src/lib-json/json-tree.c:712,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-json/json-tree.c:713,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:715,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-tree.c:727,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-json/json-tree.c:736,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-json/json-tree.c:737,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-json/json-tree.c:738,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/json-tree.c:739,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:740,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-tree.c:741,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 2
    argNames:
    - twalker
    - node_r
    argTypes:
    - struct json_tree_walker*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 692
    functionDepth: 3
    functionLinenumber: 692
    functionLinenumberEnd: 752
    functionName: json_tree_walk
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_array_init
    - array_push_back
    - array_back
    - array_count
    - json_tree_get_root
    - array_pop_back
    - json_tree_walk_next
    - array_is_created
    - i_assert
    - json_tree_node_is_root
    linkageType: ''
    returnType: bool
    signature: bool json_tree_walk(struct json_tree_walker *twalker, struct json_node
      *node_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/json-tree.h:125,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: json_tree_node_get_str
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 1
    functionsReached:
    - json_node_get_str
    - json_tree_node_get
    linkageType: ''
    returnType: char
    signature: 'char *

      json_tree_node_get_str(const struct json_tree_node *jtnode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_data
      Src: /src/dovecot/src/lib-json/json-tree.h:131,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - size_r
    argTypes:
    - struct json_tree_node*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: json_tree_node_get_data
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_get_data
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      json_tree_node_get_data(const struct json_tree_node *jtnode, size_t *size_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_as_str
      Src: /src/dovecot/src/lib-json/json-tree.h:137,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jtnode
    argTypes:
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: json_tree_node_as_str
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_as_str
    linkageType: ''
    returnType: char
    signature: 'char *

      json_tree_node_as_str(const struct json_tree_node *jtnode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/json-tree.h:143,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - intmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: json_tree_node_get_intmax
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_get_intmax
    linkageType: ''
    returnType: int
    signature: int json_tree_node_get_intmax(const struct json_tree_node *jtnode,
      intmax_t *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_int
      Src: /src/dovecot/src/lib-json/json-tree.h:149,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: json_tree_node_get_int
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_node_get_int
    - json_tree_node_get
    linkageType: ''
    returnType: int
    signature: int json_tree_node_get_int(const struct json_tree_node *jtnode, int
      *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_long
      Src: /src/dovecot/src/lib-json/json-tree.h:155,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: json_tree_node_get_long
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_get_long
    linkageType: ''
    returnType: int
    signature: int json_tree_node_get_long(const struct json_tree_node *jtnode, long
      *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_llong
      Src: /src/dovecot/src/lib-json/json-tree.h:161,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - long long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 162
    functionName: json_tree_node_get_llong
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_get_llong
    linkageType: ''
    returnType: int
    signature: int json_tree_node_get_llong(const struct json_tree_node *jtnode, long
      long *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_int32
      Src: /src/dovecot/src/lib-json/json-tree.h:167,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - int32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: json_tree_node_get_int32
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_get_int32
    linkageType: ''
    returnType: int
    signature: int json_tree_node_get_int32(const struct json_tree_node *jtnode, int32_t
      *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_int64
      Src: /src/dovecot/src/lib-json/json-tree.h:173,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - int64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 174
    functionName: json_tree_node_get_int64
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_node_get_int64
    - json_tree_node_get
    linkageType: ''
    returnType: int
    signature: int json_tree_node_get_int64(const struct json_tree_node *jtnode, int64_t
      *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_uintmax
      Src: /src/dovecot/src/lib-json/json-tree.h:180,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - uintmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: json_tree_node_get_uintmax
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_node_get_uintmax
    - json_tree_node_get
    linkageType: ''
    returnType: int
    signature: "int json_tree_node_get_uintmax(const struct json_tree_node *jtnode,\n\t\t\t
      \  uintmax_t *num_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_uint
      Src: /src/dovecot/src/lib-json/json-tree.h:187,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 188
    functionName: json_tree_node_get_uint
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_get_uint
    linkageType: ''
    returnType: int
    signature: "int json_tree_node_get_uint(const struct json_tree_node *jtnode,\n\t\t\tunsigned
      int *num_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_ulong
      Src: /src/dovecot/src/lib-json/json-tree.h:194,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - unsigned long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: json_tree_node_get_ulong
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_get_ulong
    linkageType: ''
    returnType: int
    signature: "int json_tree_node_get_ulong(const struct json_tree_node *jtnode,\n\t\t\t
      unsigned long *num_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_ullong
      Src: /src/dovecot/src/lib-json/json-tree.h:201,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - unsigned long long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 202
    functionName: json_tree_node_get_ullong
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_node_get_ullong
    - json_tree_node_get
    linkageType: ''
    returnType: int
    signature: "int json_tree_node_get_ullong(const struct json_tree_node *jtnode,\n\t\t\t
      \ unsigned long long *num_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_uint32
      Src: /src/dovecot/src/lib-json/json-tree.h:207,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 208
    functionName: json_tree_node_get_uint32
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_node_get_uint32
    - json_tree_node_get
    linkageType: ''
    returnType: int
    signature: int json_tree_node_get_uint32(const struct json_tree_node *jtnode,
      uint32_t *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_node_get_uint64
      Src: /src/dovecot/src/lib-json/json-tree.h:213,1
    - Dst: json_tree_node_get
      Src: /src/dovecot/src/lib-json/json-tree.h:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - jtnode
    - num_r
    argTypes:
    - struct json_tree_node*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 214
    functionName: json_tree_node_get_uint64
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_get
    - json_node_get_uint64
    linkageType: ''
    returnType: int
    signature: int json_tree_node_get_uint64(const struct json_tree_node *jtnode,
      uint64_t *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/json-tree.h:234,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/json-tree.h:235,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/json-tree.h:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - root_r
    argTypes:
    - struct json_tree_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 229
    functionDepth: 4
    functionLinenumber: 229
    functionLinenumberEnd: 237
    functionName: json_tree_create_object
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_get_root
    - json_tree_create
    - json_tree_node_add_object
    linkageType: ''
    returnType: struct json_tree
    signature: 'struct json_tree *

      json_tree_create_object(struct json_tree_node **root_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/json-tree.h:243,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/json-tree.h:244,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/json-tree.h:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - root_r
    argTypes:
    - struct json_tree_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 246
    functionName: json_tree_create_array
    functionSourceFile: /src/dovecot/src/lib-json/json-tree.h
    functionUses: 0
    functionsReached:
    - json_tree_node_add_array
    - json_tree_create
    - json_tree_get_root
    linkageType: ''
    returnType: struct json_tree
    signature: 'struct json_tree *

      json_tree_create_array(struct json_tree_node **root_r)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-parser.c:800,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-parser.c:801,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-parser.c:803,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-parser.c:803,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-parser.c:805,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-parser.c:809,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:810,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-parser.c:813,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:817,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-parser.c:820,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/test-json-parser.c:822,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-parser.c:823,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-parser.c:826,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:827,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-parser.c:830,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:832,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-parser.c:834,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-parser.c:836,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:838,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 785
    functionDepth: 7
    functionLinenumber: 785
    functionLinenumberEnd: 840
    functionName: test_json_parse_valid
    functionSourceFile: /src/dovecot/src/lib-json/test-json-parser.c
    functionUses: 0
    functionsReached:
    - test_out_reason_quiet
    - strlen
    - t_strdup_printf
    - json_parse_more
    - test_end
    - test_istream_create_data
    - i_stream_seek
    - json_parser_init
    - json_parser_deinit
    - i_stream_unref
    - test_istream_set_size
    - i_debug
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_parse_valid(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2344,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2345,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2348,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2349,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2353,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2353,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2355,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2359,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2360,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2365,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2368,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2371,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2373,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2374,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2377,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2378,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2381,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2383,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2385,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2387,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2389,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2390
      start: 2327
    functionDepth: 7
    functionLinenumber: 2327
    functionLinenumberEnd: 2390
    functionName: test_json_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-json/test-json-parser.c
    functionUses: 0
    functionsReached:
    - test_out_reason_quiet
    - strlen
    - t_strdup_printf
    - json_parse_more
    - test_end
    - test_istream_create_data
    - i_stream_seek
    - json_parser_init
    - json_parser_deinit
    - i_stream_unref
    - test_istream_set_size
    - i_debug
    - test_begin
    - i_stream_create_base64_decoder
    linkageType: ''
    returnType: void
    signature: void test_json_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2497,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2498,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - context
    - parent_context ATTR_UNUSED
    - ATTR_UNUSED
    - type
    - value
    argTypes:
    - void*
    - void*
    - char*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2501
      start: 2489
    functionDepth: 1
    functionLinenumber: 2489
    functionLinenumberEnd: 2501
    functionName: test_parse_stream_parse_value
    functionSourceFile: /src/dovecot/src/lib-json/test-json-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_parse_stream_parse_value(void *context,\n\tvoid *parent_context
      ATTR_UNUSED,\n\tconst char *name ATTR_UNUSED, enum json_type type,\n\tconst
      struct json_value *value)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2513,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2526,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2528,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2530,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2530,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2533,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2536,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2538,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2540,1
    - Dst: json_parser_enable_string_stream
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2542,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2546,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2548,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2556,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2558,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2559,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2562,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2562,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2563,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2564,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2569,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2570,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2574,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2575,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2575,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2577,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2581,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2582,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2584,1
    - Dst: json_parser_enable_string_stream
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2586,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2588,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2589,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2590,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2596,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2598,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2599,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2601,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2603,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2603,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2604,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2605,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2610,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2611,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2614,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2615,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2615,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2616,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2618,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2620,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2621
      start: 2507
    functionDepth: 7
    functionLinenumber: 2507
    functionLinenumberEnd: 2621
    functionName: test_json_parse_stream
    functionSourceFile: /src/dovecot/src/lib-json/test-json-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - strlen
    - t_strdup_printf
    - json_parse_more
    - i_stream_seek
    - buffer_append
    - i_stream_have_bytes_left
    - i_stream_skip
    - test_end
    - test_istream_set_size
    - str_new
    - i_stream_read_more
    - test_out_reason_quiet
    - test_out_quiet
    - json_parser_init
    - json_parser_deinit
    - i_assert
    - N_ELEMENTS
    - strcmp
    - json_parser_enable_string_stream
    - test_istream_create_data
    - str_truncate
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_parse_stream(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2706,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2707,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - context
    - parent_context ATTR_UNUSED
    - ATTR_UNUSED
    - type
    - value
    argTypes:
    - void*
    - void*
    - char*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2710
      start: 2697
    functionDepth: 1
    functionLinenumber: 2697
    functionLinenumberEnd: 2710
    functionName: test_parse_stream_parse_error_value
    functionSourceFile: /src/dovecot/src/lib-json/test-json-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_parse_stream_parse_error_value(void *context,\n\t\t\t\t
      \   void *parent_context ATTR_UNUSED,\n\t\t\t\t    const char *name ATTR_UNUSED,\n\t\t\t\t
      \   enum json_type type,\n\t\t\t\t    const struct json_value *value)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2722,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2735,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2737,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2739,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2739,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2742,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2745,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2747,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2749,1
    - Dst: json_parser_enable_string_stream
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2751,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2755,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2757,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2765,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2767,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2768,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2771,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2772,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2774,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2775,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2780,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2781,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2785,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2789,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2790,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2792,1
    - Dst: json_parser_enable_string_stream
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2794,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2796,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2797,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2798,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2804,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2806,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2807,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2809,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2811,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2812,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2814,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2815,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2820,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2821,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2824,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2826,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2828,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2829
      start: 2716
    functionDepth: 7
    functionLinenumber: 2716
    functionLinenumberEnd: 2829
    functionName: test_json_parse_stream_error
    functionSourceFile: /src/dovecot/src/lib-json/test-json-parser.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strdup_printf
    - json_parse_more
    - i_stream_seek
    - test_assert
    - buffer_append
    - i_stream_skip
    - test_end
    - test_istream_set_size
    - str_new
    - i_stream_read_more
    - test_out_reason_quiet
    - test_out_quiet
    - json_parser_init
    - json_parser_deinit
    - i_assert
    - N_ELEMENTS
    - json_parser_enable_string_stream
    - test_istream_create_data
    - str_truncate
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_parse_stream_error(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2846,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2852,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-json/test-json-parser.c:2856,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2857
      start: 2834
    functionDepth: 1
    functionLinenumber: 2834
    functionLinenumberEnd: 2857
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-json/test-json-parser.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - getopt
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-json/json-istream.c:80,1
    - Dst: json_parser_init
      Src: /src/dovecot/src/lib-json/json-istream.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - input
    - type
    - limits
    - parser_flags
    argTypes:
    - struct istream*
    - enum json_istream_type
    - struct json_limits*
    - enum json_parser_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 89
    functionName: json_istream_create
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 5
    functionsReached:
    - json_parser_init
    - i_new
    linkageType: ''
    returnType: struct json_istream
    signature: "struct json_istream *\njson_istream_create(struct istream *input,
      enum json_istream_type type,\n\t\t    const struct json_limits *limits,\n\t\t
      \   enum json_parser_flags parser_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: json_istream_ref
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void json_istream_ref(struct json_istream *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:105,1
    - Dst: json_istream_dereference_value
      Src: /src/dovecot/src/lib-json/json-istream.c:109,1
    - Dst: json_parser_deinit
      Src: /src/dovecot/src/lib-json/json-istream.c:111,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-istream.c:112,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-istream.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct json_istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 114
    functionName: json_istream_unref
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 1
    functionsReached:
    - json_istream_dereference_value
    - i_assert
    - i_free
    - json_parser_deinit
    linkageType: ''
    returnType: void
    signature: void json_istream_unref(struct json_istream **_stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_dereference_value
      Src: /src/dovecot/src/lib-json/json-istream.c:123,1
    - Dst: json_istream_close
      Src: /src/dovecot/src/lib-json/json-istream.c:125,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct json_istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 127
    functionName: json_istream_destroy
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 2
    functionsReached:
    - json_istream_close
    - json_istream_dereference_value
    - json_istream_unref
    linkageType: ''
    returnType: void
    signature: void json_istream_destroy(struct json_istream **_stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-json/json-istream.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: json_istream_close
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 1
    functionsReached:
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: void json_istream_close(struct json_istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: json_istream_is_closed
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_istream_is_closed(struct json_istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: json_istream_get_node_level
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int json_istream_get_node_level(struct json_istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: json_istream_is_at_end
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool json_istream_is_at_end(struct json_istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: json_istream_failed
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_istream_failed(struct json_istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-json/json-istream.c:162,1
    - Dst: json_istream_close
      Src: /src/dovecot/src/lib-json/json-istream.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - error
    argTypes:
    - struct json_istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: json_istream_set_error
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - json_istream_close
    linkageType: ''
    returnType: void
    signature: void json_istream_set_error(struct json_istream *stream, const char
      *error)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 173
    functionName: json_istream_get_error
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *json_istream_get_error(struct json_istream *stream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:181,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/json-istream.c:183,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-json/json-istream.c:189,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-json/json-istream.c:199,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:200,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - _stream
    - error_r
    argTypes:
    - struct json_istream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 205
    functionName: json_istream_finish
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 3
    functionsReached:
    - json_istream_read
    - i_strdup
    - json_istream_unref
    - t_strdup
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_istream_finish(struct json_istream **_stream, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_get_location
      Src: /src/dovecot/src/lib-json/json-istream.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - loc_r
    argTypes:
    - struct json_istream*
    - struct json_parser_location*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: json_istream_get_location
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_parser_get_location
    linkageType: ''
    returnType: void
    signature: "void json_istream_get_location(struct json_istream *stream,\n\t\t\t
      \      struct json_parser_location *loc_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 226
    functionName: json_istream_parse_skip
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool json_istream_parse_skip(struct json_istream *stream)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:240,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:241,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:250,1
    - Dst: json_istream_set_error
      Src: /src/dovecot/src/lib-json/json-istream.c:251,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:258,1
    - Dst: json_istream_set_error
      Src: /src/dovecot/src/lib-json/json-istream.c:259,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:261,1
    - Dst: json_tree_node_add_object
      Src: /src/dovecot/src/lib-json/json-istream.c:274,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/json-istream.c:277,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-istream.c:283,1
    - Dst: json_istream_parse_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:289,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:291,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 5
    argNames:
    - context
    - parent_context
    - name
    - object
    - list_context_r
    argTypes:
    - void*
    - void*
    - char*
    - bool
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 228
    functionDepth: 4
    functionLinenumber: 228
    functionLinenumberEnd: 294
    functionName: json_istream_parse_list_open
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_istream_set_error
    - json_tree_node_add_array
    - json_parser_interrupt
    - i_assert
    - json_tree_node_add_object
    - json_istream_parse_skip
    linkageType: ''
    returnType: void
    signature: "void json_istream_parse_list_open(void *context, void *parent_context,\n\t\t\t
      \    const char *name, bool object,\n\t\t\t     void **list_context_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:305,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:309,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-istream.c:316,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:337,1
    - Dst: json_istream_parse_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:339,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:341,1
    - Dst: json_istream_parse_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:349,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-istream.c:350,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:355,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 3
    argNames:
    - context
    - list_context ATTR_UNUSED
    - object
    argTypes:
    - void*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 296
    functionDepth: 2
    functionLinenumber: 296
    functionLinenumberEnd: 358
    functionName: json_istream_parse_list_close
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_unreached
    - json_parser_interrupt
    - i_assert
    - json_istream_parse_skip
    linkageType: ''
    returnType: void
    signature: "void json_istream_parse_list_close(void *context, void *list_context
      ATTR_UNUSED,\n\t\t\t      bool object)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:370,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:377,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:378,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-istream.c:383,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:386,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - context
    - parent_context ATTR_UNUSED
    - name
    argTypes:
    - void*
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 387
    functionName: json_istream_parse_object_member
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - json_parser_interrupt
    linkageType: ''
    returnType: void
    signature: "void json_istream_parse_object_member(void *context,\n\t\t\t\t void
      *parent_context ATTR_UNUSED,\n\t\t\t\t const char *name)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:399,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:400,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:407,1
    - Dst: json_istream_set_error
      Src: /src/dovecot/src/lib-json/json-istream.c:408,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:410,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:413,1
    - Dst: json_istream_set_error
      Src: /src/dovecot/src/lib-json/json-istream.c:414,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:416,1
    - Dst: json_tree_node_add_value
      Src: /src/dovecot/src/lib-json/json-istream.c:426,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:429,1
    - Dst: json_istream_parse_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:437,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-istream.c:439,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/json-istream.c:446,1
    - Dst: json_parser_interrupt
      Src: /src/dovecot/src/lib-json/json-istream.c:448,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 5
    argNames:
    - context
    - parent_context
    - name
    - type
    - value
    argTypes:
    - void*
    - void*
    - char*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 389
    functionDepth: 4
    functionLinenumber: 389
    functionLinenumberEnd: 449
    functionName: json_istream_parse_value
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_istream_set_error
    - i_stream_ref
    - json_parser_interrupt
    - i_assert
    - json_tree_node_add_value
    - json_istream_parse_skip
    linkageType: ''
    returnType: void
    signature: "void json_istream_parse_value(void *context, void *parent_context,
      const char *name,\n\t\t\t enum json_type type, const struct json_value *value)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:464,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:466,1
    - Dst: json_parser_disable_string_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:468,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:471,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 472
    functionName: json_istream_dereference_value
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 2
    functionsReached:
    - json_parser_disable_string_stream
    - json_tree_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void json_istream_dereference_value(struct json_istream *stream)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_dereference_value
      Src: /src/dovecot/src/lib-json/json-istream.c:493,1
    - Dst: json_istream_consume_value_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:494,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/json-istream.c:497,1
    - Dst: json_istream_set_error
      Src: /src/dovecot/src/lib-json/json-istream.c:499,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-istream.c:506,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 2
    argNames:
    - stream
    - node_r
    argTypes:
    - struct json_istream*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 474
    functionDepth: 7
    functionLinenumber: 474
    functionLinenumberEnd: 522
    functionName: json_istream_read
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_istream_set_error
    - json_parse_more
    - json_istream_dereference_value
    - json_istream_consume_value_stream
    linkageType: ''
    returnType: int
    signature: int json_istream_read(struct json_istream *stream, struct json_node
      *node_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/json-istream.c:529,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - node_r
    argTypes:
    - struct json_istream*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 524
    functionDepth: 8
    functionLinenumber: 524
    functionLinenumberEnd: 534
    functionName: json_istream_read_next
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_read
    - json_istream_skip
    linkageType: ''
    returnType: int
    signature: "int json_istream_read_next(struct json_istream *stream,\n\t\t\t   struct
      json_node *node_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 543
    functionName: json_istream_next_node
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void json_istream_next_node(struct json_istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_dereference_value
      Src: /src/dovecot/src/lib-json/json-istream.c:547,1
    - Dst: json_istream_next_node
      Src: /src/dovecot/src/lib-json/json-istream.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 545
    functionDepth: 3
    functionLinenumber: 545
    functionLinenumberEnd: 549
    functionName: json_istream_skip
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 1
    functionsReached:
    - json_istream_dereference_value
    - json_istream_next_node
    linkageType: ''
    returnType: void
    signature: void json_istream_skip(struct json_istream *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:557,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - stream
    - count
    argTypes:
    - struct json_istream*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 551
    functionDepth: 4
    functionLinenumber: 551
    functionLinenumberEnd: 568
    functionName: json_istream_ignore
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_skip
    linkageType: ''
    returnType: void
    signature: void json_istream_ignore(struct json_istream *stream, unsigned int
      count)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_dereference_value
      Src: /src/dovecot/src/lib-json/json-istream.c:588,1
    - Dst: json_istream_consume_value_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:589,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/json-istream.c:593,1
    - Dst: json_istream_set_error
      Src: /src/dovecot/src/lib-json/json-istream.c:596,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:609,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 2
    argNames:
    - stream
    - name_r
    argTypes:
    - struct json_istream*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 570
    functionDepth: 7
    functionLinenumber: 570
    functionLinenumberEnd: 622
    functionName: json_istream_read_object_member
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_set_error
    - json_parse_more
    - json_istream_dereference_value
    - i_assert
    - json_istream_consume_value_stream
    linkageType: ''
    returnType: int
    signature: "int json_istream_read_object_member(struct json_istream *stream,\n\t\t\t\t
      \   const char **name_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/json-istream.c:630,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:634,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/json-istream.c:635,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/json-istream.c:635,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - stream
    - node_r
    argTypes:
    - struct json_istream*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 624
    functionDepth: 8
    functionLinenumber: 624
    functionLinenumberEnd: 640
    functionName: json_istream_descend
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_node_is_object
    - json_node_is_array
    - json_istream_read
    - json_istream_skip
    linkageType: ''
    returnType: int
    signature: "int json_istream_descend(struct json_istream *stream,\n\t\t\t struct
      json_node *node_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 642
    functionDepth: 2
    functionLinenumber: 642
    functionLinenumberEnd: 650
    functionName: json_istream_ascend_common
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_tree_unref
    linkageType: ''
    returnType: void
    signature: void json_istream_ascend_common(struct json_istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:654,1
    - Dst: json_istream_ascend_common
      Src: /src/dovecot/src/lib-json/json-istream.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 652
    functionDepth: 3
    functionLinenumber: 652
    functionLinenumberEnd: 657
    functionName: json_istream_ascend
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_istream_ascend_common
    linkageType: ''
    returnType: void
    signature: void json_istream_ascend(struct json_istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:662,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:664,1
    - Dst: json_istream_ascend_common
      Src: /src/dovecot/src/lib-json/json-istream.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - node_level
    argTypes:
    - struct json_istream*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 659
    functionDepth: 4
    functionLinenumber: 659
    functionLinenumberEnd: 669
    functionName: json_istream_ascend_to
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_istream_ascend_common
    - json_istream_skip
    linkageType: ''
    returnType: void
    signature: "void json_istream_ascend_to(struct json_istream *stream,\n\t\t\t     unsigned
      int node_level)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/json-istream.c:676,1
    - Dst: json_node_is_end
      Src: /src/dovecot/src/lib-json/json-istream.c:679,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:680,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:681,1
    - Dst: json_istream_ascend_common
      Src: /src/dovecot/src/lib-json/json-istream.c:682,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - stream
    - node_r
    argTypes:
    - struct json_istream*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 671
    functionDepth: 9
    functionLinenumber: 671
    functionLinenumberEnd: 688
    functionName: json_istream_walk
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 3
    functionsReached:
    - json_node_is_end
    - i_assert
    - json_istream_descend
    - json_istream_ascend_common
    linkageType: ''
    returnType: int
    signature: int json_istream_walk(struct json_istream *stream, struct json_node
      *node_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_disable_string_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 700
    functionName: json_istream_drop_seekable_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_parser_disable_string_stream
    linkageType: ''
    returnType: void
    signature: void json_istream_drop_seekable_stream(struct json_istream *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib-json/json-istream.c:707,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:710,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 715
    functionName: json_istream_drop_value_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_stream_remove_destroy_callback
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void json_istream_drop_value_stream(struct json_istream *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_dereference_value
      Src: /src/dovecot/src/lib-json/json-istream.c:719,1
    - Dst: i_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib-json/json-istream.c:721,1
    - Dst: i_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib-json/json-istream.c:726,1
    - Dst: json_parser_disable_string_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 717
    functionDepth: 3
    functionLinenumber: 717
    functionLinenumberEnd: 733
    functionName: json_istream_consumed_value_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_parser_disable_string_stream
    - json_istream_dereference_value
    - i_stream_remove_destroy_callback
    linkageType: ''
    returnType: void
    signature: void json_istream_consumed_value_stream(struct json_istream *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/json-istream.c:745,1
    - Dst: json_istream_consumed_value_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:746,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/json-istream.c:751,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/json-istream.c:752,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:753,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-json/json-istream.c:754,1
    - Dst: json_istream_set_error
      Src: /src/dovecot/src/lib-json/json-istream.c:759,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/json-istream.c:760,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-json/json-istream.c:761,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-json/json-istream.c:762,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:765,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/json-istream.c:766,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:767,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/json-istream.c:768,1
    - Dst: json_istream_consumed_value_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:769,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 735
    functionDepth: 4
    functionLinenumber: 735
    functionLinenumberEnd: 771
    functionName: json_istream_consume_value_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 2
    functionsReached:
    - json_istream_set_error
    - i_stream_have_bytes_left
    - t_strdup_printf
    - i_stream_skip
    - i_stream_get_error
    - i_stream_seek
    - i_stream_get_name
    - i_assert
    - i_stream_read_more
    - json_istream_consumed_value_stream
    linkageType: ''
    returnType: int
    signature: int json_istream_consume_value_stream(struct json_istream *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:784,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:785,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:786,1
    - Dst: i_stream_create_seekable_path
      Src: /src/dovecot/src/lib-json/json-istream.c:789,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:791,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-json/json-istream.c:793,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib-json/json-istream.c:796,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib-json/json-istream.c:799,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - stream
    - temp_path_prefix
    - max_buffer_size
    - node
    argTypes:
    - struct json_istream*
    - char*
    - size_t
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 805
    functionName: json_istream_handle_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable_path
    - i_stream_set_name
    - i_stream_add_destroy_callback
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void json_istream_handle_stream(struct json_istream *stream,\n\t\t\t
      \   const char *temp_path_prefix,\n\t\t\t    size_t max_buffer_size,\n\t\t\t
      \   struct json_node *node)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_enable_string_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:827,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/json-istream.c:829,1
    - Dst: json_parser_disable_string_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:831,1
    - Dst: json_istream_handle_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:835,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 5
    argNames:
    - stream
    - threshold
    - max_buffer_size
    - temp_path_prefix
    - node_r
    argTypes:
    - struct json_istream*
    - size_t
    - size_t
    - char*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 807
    functionDepth: 8
    functionLinenumber: 807
    functionLinenumberEnd: 838
    functionName: json_istream_read_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_parser_disable_string_stream
    - json_istream_handle_stream
    - json_parser_enable_string_stream
    - json_istream_read
    linkageType: ''
    returnType: int
    signature: "int json_istream_read_stream(struct json_istream *stream,\n\t\t\t
      \    size_t threshold, size_t max_buffer_size,\n\t\t\t     const char *temp_path_prefix,\n\t\t\t
      \    struct json_node *node_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:847,1
    - Dst: json_istream_next_node
      Src: /src/dovecot/src/lib-json/json-istream.c:851,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - stream
    - threshold
    - max_buffer_size
    - temp_path_prefix
    - node_r
    argTypes:
    - struct json_istream*
    - size_t
    - size_t
    - char*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 840
    functionDepth: 9
    functionLinenumber: 840
    functionLinenumberEnd: 853
    functionName: json_istream_read_next_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_read_stream
    - json_istream_next_node
    linkageType: ''
    returnType: int
    signature: "int json_istream_read_next_stream(struct json_istream *stream,\n\t\t\t\t
      \ size_t threshold, size_t max_buffer_size,\n\t\t\t\t  const char *temp_path_prefix,\n\t\t\t\t
      \ struct json_node *node_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_parser_enable_string_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:875,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/json-istream.c:877,1
    - Dst: json_parser_disable_string_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:879,1
    - Dst: json_istream_handle_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:883,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 5
    argNames:
    - stream
    - threshold
    - max_buffer_size
    - temp_path_prefix
    - node_r
    argTypes:
    - struct json_istream*
    - size_t
    - size_t
    - char*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 855
    functionDepth: 10
    functionLinenumber: 855
    functionLinenumberEnd: 886
    functionName: json_istream_walk_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_parser_disable_string_stream
    - json_istream_handle_stream
    - json_parser_enable_string_stream
    - json_istream_walk
    linkageType: ''
    returnType: int
    signature: "int json_istream_walk_stream(struct json_istream *stream,\n\t\t\t
      \    size_t threshold, size_t max_buffer_size,\n\t\t\t     const char *temp_path_prefix,\n\t\t\t
      \    struct json_node *node_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_consume_value_stream
      Src: /src/dovecot/src/lib-json/json-istream.c:897,1
    - Dst: json_parse_more
      Src: /src/dovecot/src/lib-json/json-istream.c:900,1
    - Dst: json_istream_set_error
      Src: /src/dovecot/src/lib-json/json-istream.c:902,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 892
    functionDepth: 7
    functionLinenumber: 892
    functionLinenumberEnd: 916
    functionName: json_istream_read_tree_common
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_parse_more
    - json_istream_set_error
    - json_istream_consume_value_stream
    linkageType: ''
    returnType: int
    signature: int json_istream_read_tree_common(struct json_istream *stream)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:923,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:947,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:948,1
    - Dst: json_node_is_end
      Src: /src/dovecot/src/lib-json/json-istream.c:948,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/json-istream.c:952,1
    - Dst: json_tree_node_add
      Src: /src/dovecot/src/lib-json/json-istream.c:953,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/json-istream.c:954,1
    - Dst: json_node_is_singular
      Src: /src/dovecot/src/lib-json/json-istream.c:958,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/json-istream.c:969,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/json-istream.c:970,1
    - Dst: json_istream_read_tree_common
      Src: /src/dovecot/src/lib-json/json-istream.c:974,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:977,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:992,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 2
    argNames:
    - stream
    - tree_r
    argTypes:
    - struct json_istream*
    - struct json_tree**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 918
    functionDepth: 8
    functionLinenumber: 918
    functionLinenumberEnd: 994
    functionName: json_istream_read_tree
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 2
    functionsReached:
    - json_istream_read_tree_common
    - json_tree_create
    - json_node_is_end
    - json_tree_node_add
    - json_node_is_singular
    - json_istream_skip
    - json_tree_get_root
    - json_tree_unref
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int json_istream_read_tree(struct json_istream *stream,\n\t\t\t   struct
      json_tree **tree_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/json-istream.c:1006,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:1013,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-istream.c:1014,1
    - Dst: json_node_is_end
      Src: /src/dovecot/src/lib-json/json-istream.c:1014,1
    - Dst: json_tree_node_add
      Src: /src/dovecot/src/lib-json/json-istream.c:1017,1
    - Dst: json_node_is_singular
      Src: /src/dovecot/src/lib-json/json-istream.c:1021,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:1023,1
    - Dst: json_tree_node_get_tree
      Src: /src/dovecot/src/lib-json/json-istream.c:1027,1
    - Dst: json_tree_ref
      Src: /src/dovecot/src/lib-json/json-istream.c:1028,1
    - Dst: json_istream_read_tree_common
      Src: /src/dovecot/src/lib-json/json-istream.c:1033,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-istream.c:1036,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/json-istream.c:1041,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - stream
    - tree_node
    argTypes:
    - struct json_istream*
    - struct json_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 996
    functionDepth: 8
    functionLinenumber: 996
    functionLinenumberEnd: 1043
    functionName: json_istream_read_into_tree_node
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_read_tree_common
    - json_node_is_end
    - json_tree_node_add
    - json_istream_read
    - json_node_is_singular
    - json_istream_skip
    - json_tree_node_get_tree
    - json_tree_unref
    - json_tree_ref
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int json_istream_read_into_tree_node(struct json_istream *stream,\n\t\t\t\t
      \    struct json_tree_node *tree_node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_into_tree_node
      Src: /src/dovecot/src/lib-json/json-istream.c:1048,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/json-istream.c:1049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - tree
    argTypes:
    - struct json_istream*
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1045
    functionDepth: 9
    functionLinenumber: 1045
    functionLinenumberEnd: 1050
    functionName: json_istream_read_into_tree
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.c
    functionUses: 0
    functionsReached:
    - json_tree_get_root
    - json_istream_read_into_tree_node
    linkageType: ''
    returnType: int
    signature: "int json_istream_read_into_tree(struct json_istream *stream,\n\t\t\t\tstruct
      json_tree *tree)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/json-text.c:29,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/json-text.c:31,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/json-text.c:32,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/json-text.c:34,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/json-text.c:36,1
    - Dst: json_ostream_set_format
      Src: /src/dovecot/src/lib-json/json-text.c:38,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-text.c:40,1
    - Dst: json_istream_walk_stream
      Src: /src/dovecot/src/lib-json/json-text.c:42,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-text.c:44,1
    - Dst: json_ostream_nwrite_node
      Src: /src/dovecot/src/lib-json/json-text.c:47,1
    - Dst: json_ostream_nfinish
      Src: /src/dovecot/src/lib-json/json-text.c:49,1
    - Dst: json_ostream_get_error
      Src: /src/dovecot/src/lib-json/json-text.c:51,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/lib-json/json-text.c:52,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/json-text.c:55,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/json-text.c:57,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-json/json-text.c:59,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-json/json-text.c:60,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 7
    argNames:
    - data
    - size
    - parser_flags
    - limits
    - format
    - outbuf
    - error_r
    argTypes:
    - void*
    - size_t
    - enum json_parser_flags
    - struct json_limits*
    - struct json_format*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 12
    functionDepth: 11
    functionLinenumber: 12
    functionLinenumberEnd: 62
    functionName: json_text_format_data
    functionSourceFile: /src/dovecot/src/lib-json/json-text.c
    functionUses: 0
    functionsReached:
    - json_ostream_set_format
    - i_zero
    - i_assert
    - json_istream_create
    - json_ostream_create
    - o_stream_set_no_error_handling
    - json_istream_walk_stream
    - json_ostream_destroy
    - json_ostream_get_error
    - json_ostream_nfinish
    - json_istream_finish
    - json_ostream_nwrite_node
    - json_istream_destroy
    - i_stream_create_from_data
    - o_stream_destroy
    - o_stream_create_buffer
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int json_text_format_data(const void *data, size_t size,\n\t\t\t  enum
      json_parser_flags parser_flags,\n\t\t\t  const struct json_limits *limits,\n\t\t\t
      \ const struct json_format *format,\n\t\t\t  buffer_t *outbuf, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_text_format_data
      Src: /src/dovecot/src/lib-json/json-text.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - buf
    - parser_flags
    - limits
    - format
    - outbuf
    - error_r
    argTypes:
    - buffer_t*
    - enum json_parser_flags
    - struct json_limits*
    - struct json_format*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 64
    functionDepth: 12
    functionLinenumber: 64
    functionLinenumberEnd: 72
    functionName: json_text_format_buffer
    functionSourceFile: /src/dovecot/src/lib-json/json-text.c
    functionUses: 1
    functionsReached:
    - json_text_format_data
    linkageType: ''
    returnType: int
    signature: "int json_text_format_buffer(const buffer_t *buf,\n\t\t\t    enum json_parser_flags
      parser_flags,\n\t\t\t    const struct json_limits *limits,\n\t\t\t    const
      struct json_format *format,\n\t\t\t    buffer_t *outbuf, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_text_format_data
      Src: /src/dovecot/src/lib-json/json-text.c:79,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-text.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - str
    - parser_flags
    - limits
    - format
    - outbuf
    - error_r
    argTypes:
    - char*
    - enum json_parser_flags
    - struct json_limits*
    - struct json_format*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 74
    functionDepth: 12
    functionLinenumber: 74
    functionLinenumberEnd: 81
    functionName: json_text_format_cstr
    functionSourceFile: /src/dovecot/src/lib-json/json-text.c
    functionUses: 1
    functionsReached:
    - strlen
    - json_text_format_data
    linkageType: ''
    returnType: int
    signature: "int json_text_format_cstr(const char *str, enum json_parser_flags
      parser_flags,\n\t\t\t  const struct json_limits *limits,\n\t\t\t  const struct
      json_format *format,\n\t\t\t  buffer_t *outbuf, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-types.h:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - jvalue
    - num_r
    argTypes:
    - struct json_value*
    - uintmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 100
    functionName: json_value_get_uintmax
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_value_get_uintmax(const struct json_value *jvalue, uintmax_t
      *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-types.h:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - jvalue
    - num_r
    argTypes:
    - struct json_value*
    - intmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: json_value_get_intmax
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_value_get_intmax(const struct json_value *jvalue, intmax_t
      *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - uint_max
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 122
    functionName: JSON_VALUE_GET_U__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_VALUE_GET_U__TEMPLATE(name, type, uint_max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - int_min
    - ','
    - int_max
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 146
    functionName: JSON_VALUE_GET_S__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_VALUE_GET_S__TEMPLATE(name, type, int_min, int_max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-types.h:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - jvalue
    argTypes:
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 165
    functionName: json_value_get_str
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: ATTR_PURE
    signature: 'ATTR_PURE *

      json_value_get_str(const struct json_value *jvalue)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/json-types.h:173,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-types.h:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - jvalue
    argTypes:
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 178
    functionName: json_value_as_str
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - i_unreached
    linkageType: ''
    returnType: ATTR_PURE
    signature: 'ATTR_PURE *

      json_value_as_str(const struct json_value *jvalue)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-types.h:184,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-types.h:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - jvalue
    - size_r
    argTypes:
    - struct json_value*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 193
    functionName: json_value_get_data
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached:
    - strlen
    - i_unreached
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      json_value_get_data(const struct json_value *jvalue, size_t *size_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/json-types.h:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - jvalue
    - stream_r
    argTypes:
    - struct json_value*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 204
    functionName: json_value_get_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached:
    - i_stream_ref
    linkageType: ''
    returnType: int
    signature: "int json_value_get_stream(const struct json_value *jvalue,\n\t\t       struct
      istream **stream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 223
    functionName: json_node_is_none
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_none(const struct json_node *jnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 234
    functionName: json_node_is_object
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_object(const struct json_node *jnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 241
    functionName: json_node_is_array
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_array(const struct json_node *jnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 248
    functionName: json_node_is_object_end
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_object_end(const struct json_node *jnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: json_node_is_array_end
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_array_end(const struct json_node *jnode)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 268
    functionName: json_node_is_end
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_end(const struct json_node *jnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 276
    functionName: json_node_is_string
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_string(const struct json_node *jnode)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-types.h:293,1
    - Dst: json_value_get_str
      Src: /src/dovecot/src/lib-json/json-types.h:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 296
    functionName: json_node_get_str
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 2
    functionsReached:
    - json_value_get_str
    - i_unreached
    linkageType: ''
    returnType: ATTR_PURE
    signature: 'ATTR_PURE *

      json_node_get_str(const struct json_node *jnode)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-types.h:312,1
    - Dst: json_value_as_str
      Src: /src/dovecot/src/lib-json/json-types.h:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 297
    functionDepth: 2
    functionLinenumber: 297
    functionLinenumberEnd: 315
    functionName: json_node_as_str
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_as_str
    - i_unreached
    linkageType: ''
    returnType: ATTR_PURE
    signature: 'ATTR_PURE *

      json_node_as_str(const struct json_node *jnode)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-types.h:329,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-types.h:333,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-types.h:337,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-types.h:340,1
    - Dst: json_value_get_data
      Src: /src/dovecot/src/lib-json/json-types.h:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - jnode
    - size_r
    argTypes:
    - struct json_node*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 343
    functionName: json_node_get_data
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - strlen
    - json_value_get_data
    - i_unreached
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      json_node_get_data(const struct json_node *jnode, size_t *size_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_stream
      Src: /src/dovecot/src/lib-json/json-types.h:352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - jnode
    - stream_r
    argTypes:
    - struct json_node*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 353
    functionName: json_node_get_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached:
    - json_value_get_stream
    linkageType: ''
    returnType: int
    signature: "int json_node_get_stream(const struct json_node *jnode,\n\t\t      struct
      istream **stream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: json_node_is_number
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_number(const struct json_node *jnode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_intmax
      Src: /src/dovecot/src/lib-json/json-types.h:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - intmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 371
    functionName: json_node_get_intmax
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 2
    functionsReached:
    - json_value_get_intmax
    linkageType: ''
    returnType: int
    signature: int json_node_get_intmax(const struct json_node *jnode, intmax_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_int
      Src: /src/dovecot/src/lib-json/json-types.h:379,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 380
    functionName: json_node_get_int
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_int
    linkageType: ''
    returnType: int
    signature: int json_node_get_int(const struct json_node *jnode, int *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_long
      Src: /src/dovecot/src/lib-json/json-types.h:388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 389
    functionName: json_node_get_long
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_long
    linkageType: ''
    returnType: int
    signature: int json_node_get_long(const struct json_node *jnode, long *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_llong
      Src: /src/dovecot/src/lib-json/json-types.h:397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - long long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 398
    functionName: json_node_get_llong
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_llong
    linkageType: ''
    returnType: int
    signature: int json_node_get_llong(const struct json_node *jnode, long long *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_int32
      Src: /src/dovecot/src/lib-json/json-types.h:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - int32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 407
    functionName: json_node_get_int32
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_int32
    linkageType: ''
    returnType: int
    signature: int json_node_get_int32(const struct json_node *jnode, int32_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_int64
      Src: /src/dovecot/src/lib-json/json-types.h:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - int64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 416
    functionName: json_node_get_int64
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_int64
    linkageType: ''
    returnType: int
    signature: int json_node_get_int64(const struct json_node *jnode, int64_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_uintmax
      Src: /src/dovecot/src/lib-json/json-types.h:425,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - uintmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 418
    functionDepth: 2
    functionLinenumber: 418
    functionLinenumberEnd: 426
    functionName: json_node_get_uintmax
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_uintmax
    linkageType: ''
    returnType: int
    signature: int json_node_get_uintmax(const struct json_node *jnode, uintmax_t
      *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_uint
      Src: /src/dovecot/src/lib-json/json-types.h:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 435
    functionName: json_node_get_uint
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_uint
    linkageType: ''
    returnType: int
    signature: int json_node_get_uint(const struct json_node *jnode, unsigned int
      *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_ulong
      Src: /src/dovecot/src/lib-json/json-types.h:443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - unsigned long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 444
    functionName: json_node_get_ulong
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_ulong
    linkageType: ''
    returnType: int
    signature: int json_node_get_ulong(const struct json_node *jnode, unsigned long
      *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_ullong
      Src: /src/dovecot/src/lib-json/json-types.h:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - unsigned long long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 453
    functionName: json_node_get_ullong
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_ullong
    linkageType: ''
    returnType: int
    signature: int json_node_get_ullong(const struct json_node *jnode, unsigned long
      long *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_uint32
      Src: /src/dovecot/src/lib-json/json-types.h:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 462
    functionName: json_node_get_uint32
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_uint32
    linkageType: ''
    returnType: int
    signature: int json_node_get_uint32(const struct json_node *jnode, uint32_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_value_get_uint64
      Src: /src/dovecot/src/lib-json/json-types.h:470,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - jnode
    - num_r
    argTypes:
    - struct json_node*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 471
    functionName: json_node_get_uint64
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 1
    functionsReached:
    - json_value_get_uint64
    linkageType: ''
    returnType: int
    signature: int json_node_get_uint64(const struct json_node *jnode, uint64_t *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 479
    functionName: json_node_is_true
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_true(const struct json_node *jnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 485
    functionName: json_node_is_false
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_false(const struct json_node *jnode)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 498
    functionName: json_node_is_boolean
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_boolean(const struct json_node *jnode)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - jnode
    - bool_r
    argTypes:
    - struct json_node*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 514
    functionName: json_node_get_boolean
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int json_node_get_boolean(const struct json_node *jnode, bool *bool_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 522
    functionName: json_node_is_null
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_null(const struct json_node *jnode)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - jnode
    argTypes:
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 537
    functionName: json_node_is_singular
    functionSourceFile: /src/dovecot/src/lib-json/json-types.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE json_node_is_singular(const struct json_node *jnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-json/json-ostream.c:62,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-json/json-ostream.c:66,1
    - Dst: json_generator_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - output
    - gen_flags
    argTypes:
    - struct ostream*
    - enum json_generator_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 71
    functionName: json_ostream_create
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 9
    functionsReached:
    - o_stream_ref
    - i_new
    - json_generator_init
    linkageType: ''
    returnType: struct json_ostream
    signature: "struct json_ostream *\njson_ostream_create(struct ostream *output,\n\t\t
      \   enum json_generator_flags gen_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-json/json-ostream.c:78,1
    - Dst: json_generator_init_str
      Src: /src/dovecot/src/lib-json/json-ostream.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - gen_flags
    argTypes:
    - string_t*
    - enum json_generator_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 73
    functionDepth: 3
    functionLinenumber: 73
    functionLinenumberEnd: 84
    functionName: json_ostream_create_str
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 3
    functionsReached:
    - json_generator_init_str
    - i_new
    linkageType: ''
    returnType: struct json_ostream
    signature: 'struct json_ostream *

      json_ostream_create_str(string_t *buf, enum json_generator_flags gen_flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: json_ostream_ref
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void json_ostream_ref(struct json_ostream *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:100,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-json/json-ostream.c:106,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-json/json-ostream.c:107,1
    - Dst: json_generator_deinit
      Src: /src/dovecot/src/lib-json/json-ostream.c:110,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/json-ostream.c:111,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/json-ostream.c:112,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/json-ostream.c:114,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-ostream.c:115,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-ostream.c:117,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-ostream.c:118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct json_ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 119
    functionName: json_ostream_unref
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - i_panic
    - o_stream_get_name
    - json_tree_walker_free
    - json_generator_deinit
    - o_stream_unref
    - json_tree_unref
    - i_assert
    - i_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void json_ostream_unref(struct json_ostream **_stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:128,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/json-ostream.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct json_ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 130
    functionName: json_ostream_destroy
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 4
    functionsReached:
    - json_ostream_close
    - json_ostream_unref
    linkageType: ''
    returnType: void
    signature: void json_ostream_destroy(struct json_ostream **_stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: json_ostream_get_write_node_level
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int json_ostream_get_write_node_level(struct json_ostream
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-json/json-ostream.c:142,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-json/json-ostream.c:143,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-json/json-ostream.c:144,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-json/json-ostream.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - fmt
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: json_ostream_set_error
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - va_end
    - i_free
    - i_strdup_vprintf
    - va_start
    linkageType: ''
    returnType: void
    signature: void json_ostream_set_error(struct json_ostream *stream, const char
      *fmt, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-json/json-ostream.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 157
    functionName: json_ostream_get_error
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - o_stream_get_error
    linkageType: ''
    returnType: char
    signature: char *json_ostream_get_error(struct json_ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: json_ostream_close
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void json_ostream_close(struct json_ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: json_ostream_is_closed
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool json_ostream_is_closed(struct json_ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_generator_set_format
      Src: /src/dovecot/src/lib-json/json-ostream.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - format
    argTypes:
    - struct json_ostream*
    - struct json_format*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 173
    functionName: json_ostream_set_format
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 3
    functionsReached:
    - json_generator_set_format
    linkageType: ''
    returnType: void
    signature: "void json_ostream_set_format(struct json_ostream *stream,\n\t\t\t
      \    const struct json_format *format)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-json/json-ostream.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 179
    functionName: json_ostream_cork
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_cork
    linkageType: ''
    returnType: void
    signature: void json_ostream_cork(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-json/json-ostream.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 185
    functionName: json_ostream_uncork
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    linkageType: ''
    returnType: void
    signature: void json_ostream_uncork(struct json_ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib-json/json-ostream.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: json_ostream_is_corked
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_is_corked
    linkageType: ''
    returnType: bool
    signature: bool json_ostream_is_corked(struct json_ostream *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nflush
      Src: /src/dovecot/src/lib-json/json-ostream.c:198,1
    - Dst: json_ostream_ignore_last_errors
      Src: /src/dovecot/src/lib-json/json-ostream.c:201,1
    - Dst: json_ostream_set_error
      Src: /src/dovecot/src/lib-json/json-ostream.c:203,1
    - Dst: o_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-json/json-ostream.c:205,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 209
    functionName: json_ostream_nfinish
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - o_stream_get_max_buffer_size
    - json_ostream_nflush
    - json_ostream_set_error
    - json_ostream_ignore_last_errors
    linkageType: ''
    returnType: int
    signature: int json_ostream_nfinish(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nfinish
      Src: /src/dovecot/src/lib-json/json-ostream.c:219,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:220,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/lib-json/json-ostream.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct json_ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 211
    functionDepth: 4
    functionLinenumber: 211
    functionLinenumberEnd: 222
    functionName: json_ostream_nfinish_destroy
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 5
    functionsReached:
    - json_ostream_destroy
    - i_assert
    - json_ostream_nfinish
    linkageType: ''
    returnType: void
    signature: void json_ostream_nfinish_destroy(struct json_ostream **_stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: json_ostream_ignore_last_errors
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void json_ostream_ignore_last_errors(struct json_ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct json_ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: json_ostream_set_no_error_handling
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void json_ostream_set_no_error_handling(struct json_ostream *stream,
      bool set)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_singular
      Src: /src/dovecot/src/lib-json/json-ostream.c:240,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-ostream.c:248,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/json-ostream.c:251,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/json-ostream.c:253,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-json/json-ostream.c:254,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-json/json-ostream.c:256,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 262
    functionName: json_ostream_persist_value
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - json_node_is_singular
    - str_data
    - i_unreached
    - str_truncate
    - str_append_data
    - str_new
    linkageType: ''
    returnType: void
    signature: void json_ostream_persist_value(struct json_ostream *stream)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: json_generate_space_open
      Src: /src/dovecot/src/lib-json/json-ostream.c:274,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:284,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/json-ostream.c:287,1
    - Dst: json_generate_string_open
      Src: /src/dovecot/src/lib-json/json-ostream.c:300,1
    - Dst: json_generate_string_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:304,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:309,1
    - Dst: json_generate_string_write_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:314,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:324,1
    - Dst: json_generate_text_open
      Src: /src/dovecot/src/lib-json/json-ostream.c:326,1
    - Dst: json_generate_text_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:330,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:335,1
    - Dst: json_generate_text_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:339,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-ostream.c:345,1
    - Dst: json_generate_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:352,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 72
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 264
    functionDepth: 11
    functionLinenumber: 264
    functionLinenumberEnd: 354
    functionName: json_ostream_do_write_more
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_generate_space_open
    - i_unreached
    - json_generate_string_open
    - json_generate_string_more
    - strlen
    - json_generate_text_more
    - json_generate_value
    - json_generate_string_write_close
    - json_generate_text_close
    - json_generate_text_open
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_ostream_do_write_more(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_do_write_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:360,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:362,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 356
    functionDepth: 12
    functionLinenumber: 356
    functionLinenumberEnd: 369
    functionName: json_ostream_write_more
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_do_write_more
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_ostream_write_more(struct json_ostream *stream)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_node_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:378,1
    - Dst: json_ostream_write_tree_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:383,1
    - Dst: json_ostream_write_node_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:387,1
    - Dst: json_node_is_none
      Src: /src/dovecot/src/lib-json/json-ostream.c:392,1
    - Dst: json_generator_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:393,1
    - Dst: json_ostream_write_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:394,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 371
    functionDepth: 13
    functionLinenumber: 371
    functionLinenumberEnd: 398
    functionName: json_ostream_flush
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 5
    functionsReached:
    - json_ostream_write_node_more
    - json_ostream_write_more
    - json_generator_flush
    - json_ostream_write_tree_more
    - json_node_is_none
    linkageType: ''
    returnType: int
    signature: int json_ostream_flush(struct json_ostream *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib-json/json-ostream.c:402,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-json/json-ostream.c:404,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:405,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-json/json-ostream.c:409,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:413,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:414,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 400
    functionDepth: 14
    functionLinenumber: 400
    functionLinenumberEnd: 418
    functionName: json_ostream_nflush
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - json_ostream_flush
    - i_assert
    - unlikely
    linkageType: ''
    returnType: void
    signature: void json_ostream_nflush(struct json_ostream *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:426,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:427,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:428,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:430,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:438,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/json-ostream.c:439,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - stream
    - name
    - type
    argTypes:
    - struct json_ostream*
    - char*
    - enum json_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 420
    functionDepth: 14
    functionLinenumber: 420
    functionLinenumberEnd: 445
    functionName: json_ostream_write_init
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_generate_object_member
    - json_ostream_flush
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_init(struct json_ostream *stream, const char
      *name,\n\t\t\tenum json_type type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:452,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:454,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:462,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/json-ostream.c:463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 447
    functionDepth: 14
    functionLinenumber: 447
    functionLinenumberEnd: 469
    functionName: json_ostream_write_space_init
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_generate_object_member
    - json_ostream_flush
    linkageType: ''
    returnType: int
    signature: int json_ostream_write_space_init(struct json_ostream *stream, const
      char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib-json/json-ostream.c:477,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-json/json-ostream.c:479,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:480,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-json/json-ostream.c:484,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 489
    functionName: json_ostream_nwrite_pre
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - unlikely
    linkageType: ''
    returnType: bool
    signature: bool json_ostream_nwrite_pre(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - ret
    argTypes:
    - struct json_ostream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 499
    functionName: json_ostream_nwrite_post
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void json_ostream_nwrite_post(struct json_ostream *stream, int ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:508,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:512,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/json-ostream.c:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 503
    functionDepth: 14
    functionLinenumber: 503
    functionLinenumberEnd: 518
    functionName: json_ostream_write_object_member
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_assert
    - json_generate_object_member
    - json_ostream_flush
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_object_member(struct json_ostream *stream,\n\t\t\t\t
      \    const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:525,1
    - Dst: json_ostream_write_object_member
      Src: /src/dovecot/src/lib-json/json-ostream.c:527,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 520
    functionDepth: 15
    functionLinenumber: 520
    functionLinenumberEnd: 529
    functionName: json_ostream_nwrite_object_member
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - json_ostream_write_object_member
    - json_ostream_nwrite_post
    - json_ostream_nwrite_pre
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_object_member(struct json_ostream *stream,\n\t\t\t\t
      \      const char *name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:540,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:544,1
    - Dst: json_ostream_write_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:548,1
    - Dst: json_ostream_persist_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:552,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - stream
    - name
    - type
    - value
    - persist
    argTypes:
    - struct json_ostream*
    - char*
    - enum json_type
    - struct json_value*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 533
    functionDepth: 15
    functionLinenumber: 533
    functionLinenumberEnd: 554
    functionName: json_ostream_do_write_value
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_more
    - json_ostream_write_init
    - json_ostream_persist_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_do_write_value(struct json_ostream *stream,\n\t\t\t
      \   const char *name, enum json_type type,\n\t\t\t    const struct json_value
      *value, bool persist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_do_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - stream
    - name
    - type
    - value
    argTypes:
    - struct json_ostream*
    - char*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 556
    functionDepth: 16
    functionLinenumber: 556
    functionLinenumberEnd: 561
    functionName: json_ostream_write_value
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - json_ostream_do_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_value(struct json_ostream *stream,\n\t\t\t
      \    const char *name, enum json_type type,\n\t\t\t     const struct json_value
      *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:569,1
    - Dst: json_ostream_do_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:571,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - stream
    - name
    - type
    - value
    argTypes:
    - struct json_ostream*
    - char*
    - enum json_type
    - struct json_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 563
    functionDepth: 16
    functionLinenumber: 563
    functionLinenumberEnd: 573
    functionName: json_ostream_nwrite_value
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - json_ostream_do_write_value
    - json_ostream_nwrite_post
    - json_ostream_nwrite_pre
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_value(struct json_ostream *stream,\n\t\t\t
      \      const char *name, enum json_type type,\n\t\t\t       const struct json_value
      *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:582,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - number
    argTypes:
    - struct json_ostream*
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 577
    functionDepth: 17
    functionLinenumber: 577
    functionLinenumberEnd: 588
    functionName: json_ostream_write_number
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_number(struct json_ostream *stream,\n\t\t\t
      \     const char *name, intmax_t number)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:595,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - number
    argTypes:
    - struct json_ostream*
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 590
    functionDepth: 17
    functionLinenumber: 590
    functionLinenumberEnd: 601
    functionName: json_ostream_nwrite_number
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_number(struct json_ostream *stream,\n\t\t\t\tconst
      char *name, intmax_t number)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:608,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - number
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 603
    functionDepth: 17
    functionLinenumber: 603
    functionLinenumberEnd: 614
    functionName: json_ostream_write_number_raw
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_number_raw(struct json_ostream *stream,\n\t\t\t\t
      \ const char *name, const char *number)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:621,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - number
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 616
    functionDepth: 17
    functionLinenumber: 616
    functionLinenumberEnd: 626
    functionName: json_ostream_nwrite_number_raw
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_number_raw(struct json_ostream *stream,\n\t\t\t\t
      \   const char *name, const char *number)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:637,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:641,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - stream
    - name
    - data
    - size
    argTypes:
    - struct json_ostream*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 630
    functionDepth: 17
    functionLinenumber: 630
    functionLinenumberEnd: 647
    functionName: json_ostream_write_string_data
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_string_data(struct json_ostream *stream,\n\t\t\t\t
      \  const char *name,\n\t\t\t\t   const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:656,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:660,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - stream
    - name
    - data
    - size
    argTypes:
    - struct json_ostream*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 649
    functionDepth: 17
    functionLinenumber: 649
    functionLinenumberEnd: 665
    functionName: json_ostream_nwrite_string_data
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_string_data(struct json_ostream *stream,\n\t\t\t\t
      \    const char *name,\n\t\t\t\t     const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:672,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - str
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 667
    functionDepth: 17
    functionLinenumber: 667
    functionLinenumberEnd: 678
    functionName: json_ostream_write_string
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_string(struct json_ostream *stream,\n\t\t\t
      \     const char *name, const char *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:685,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - str
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 680
    functionDepth: 17
    functionLinenumber: 680
    functionLinenumberEnd: 690
    functionName: json_ostream_nwrite_string
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 7
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_string(struct json_ostream *stream,\n\t\t\t\tconst
      char *name, const char *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-json/json-ostream.c:697,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-json/json-ostream.c:698,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-json/json-ostream.c:699,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-json/json-ostream.c:700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - stream
    - name
    - format
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 692
    functionDepth: 18
    functionLinenumber: 692
    functionLinenumberEnd: 701
    functionName: json_ostream_nwritef_string
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - t_strdup_vprintf
    - json_ostream_nwrite_string
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwritef_string(struct json_ostream *stream,\n\t\t\t\t
      const char *name, const char *format, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:708,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - input
    argTypes:
    - struct json_ostream*
    - char*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 703
    functionDepth: 17
    functionLinenumber: 703
    functionLinenumberEnd: 714
    functionName: json_ostream_write_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_string_stream(struct json_ostream *stream,\n\t\t\t\t
      \    const char *name, struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:721,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:725,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - name
    - input
    argTypes:
    - struct json_ostream*
    - char*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 716
    functionDepth: 17
    functionLinenumber: 716
    functionLinenumberEnd: 728
    functionName: json_ostream_nwrite_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_string_stream(struct json_ostream *stream,\n\t\t\t\t
      \      const char *name, struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:734,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:738,1
    - Dst: json_generate_string_open
      Src: /src/dovecot/src/lib-json/json-ostream.c:739,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 730
    functionDepth: 15
    functionLinenumber: 730
    functionLinenumberEnd: 742
    functionName: json_ostream_open_string
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_init
    - json_generate_string_open
    linkageType: ''
    returnType: int
    signature: int json_ostream_open_string(struct json_ostream *stream, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:748,1
    - Dst: json_ostream_open_string
      Src: /src/dovecot/src/lib-json/json-ostream.c:750,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 744
    functionDepth: 16
    functionLinenumber: 744
    functionLinenumberEnd: 752
    functionName: json_ostream_nopen_string
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - json_ostream_nwrite_post
    - json_ostream_open_string
    - json_ostream_nwrite_pre
    linkageType: ''
    returnType: void
    signature: void json_ostream_nopen_string(struct json_ostream *stream, const char
      *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:758,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:760,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:763,1
    - Dst: json_generate_string_write_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:764,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 754
    functionDepth: 14
    functionLinenumber: 754
    functionLinenumberEnd: 769
    functionName: json_ostream_close_string
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - json_ostream_flush
    - json_generate_string_write_close
    linkageType: ''
    returnType: int
    signature: int json_ostream_close_string(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:775,1
    - Dst: json_ostream_close_string
      Src: /src/dovecot/src/lib-json/json-ostream.c:777,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 771
    functionDepth: 15
    functionLinenumber: 771
    functionLinenumberEnd: 779
    functionName: json_ostream_nclose_string
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - json_ostream_close_string
    - json_ostream_nwrite_post
    - json_ostream_nwrite_pre
    linkageType: ''
    returnType: void
    signature: void json_ostream_nclose_string(struct json_ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:787,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 783
    functionDepth: 17
    functionLinenumber: 783
    functionLinenumberEnd: 789
    functionName: json_ostream_write_null
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: int json_ostream_write_null(struct json_ostream *stream, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:795,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 791
    functionDepth: 17
    functionLinenumber: 791
    functionLinenumberEnd: 797
    functionName: json_ostream_nwrite_null
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: void json_ostream_nwrite_null(struct json_ostream *stream, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:806,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 802
    functionDepth: 17
    functionLinenumber: 802
    functionLinenumberEnd: 809
    functionName: json_ostream_write_false
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: int json_ostream_write_false(struct json_ostream *stream, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:815,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 811
    functionDepth: 17
    functionLinenumber: 811
    functionLinenumberEnd: 817
    functionName: json_ostream_nwrite_false
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: void json_ostream_nwrite_false(struct json_ostream *stream, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:823,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 819
    functionDepth: 17
    functionLinenumber: 819
    functionLinenumberEnd: 825
    functionName: json_ostream_write_true
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: int json_ostream_write_true(struct json_ostream *stream, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:831,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 827
    functionDepth: 17
    functionLinenumber: 827
    functionLinenumberEnd: 833
    functionName: json_ostream_nwrite_true
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: void json_ostream_nwrite_true(struct json_ostream *stream, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:840,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - name
    - value
    argTypes:
    - struct json_ostream*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 835
    functionDepth: 17
    functionLinenumber: 835
    functionLinenumberEnd: 844
    functionName: json_ostream_write_bool
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_bool(struct json_ostream *stream, const char
      *name,\n\t\t\t    bool value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:851,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - name
    - value
    argTypes:
    - struct json_ostream*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 846
    functionDepth: 17
    functionLinenumber: 846
    functionLinenumberEnd: 855
    functionName: json_ostream_nwrite_bool
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_bool(struct json_ostream *stream, const char
      *name,\n\t\t\t      bool value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:863,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:867,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/json-ostream.c:868,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 859
    functionDepth: 15
    functionLinenumber: 859
    functionLinenumberEnd: 871
    functionName: json_ostream_descend_object
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - i_zero
    - json_ostream_write_init
    - json_generate_object_open
    linkageType: ''
    returnType: int
    signature: int json_ostream_descend_object(struct json_ostream *stream, const
      char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:878,1
    - Dst: json_ostream_descend_object
      Src: /src/dovecot/src/lib-json/json-ostream.c:880,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:881,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 873
    functionDepth: 16
    functionLinenumber: 873
    functionLinenumberEnd: 882
    functionName: json_ostream_ndescend_object
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 5
    functionsReached:
    - json_ostream_descend_object
    - json_ostream_nwrite_post
    - json_ostream_nwrite_pre
    linkageType: ''
    returnType: void
    signature: "void json_ostream_ndescend_object(struct json_ostream *stream,\n\t\t\t\t
      \ const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:888,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:891,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:894,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 884
    functionDepth: 14
    functionLinenumber: 884
    functionLinenumberEnd: 897
    functionName: json_ostream_ascend_object
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - i_assert
    - json_ostream_flush
    - json_generate_object_close
    linkageType: ''
    returnType: int
    signature: int json_ostream_ascend_object(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:903,1
    - Dst: json_ostream_ascend_object
      Src: /src/dovecot/src/lib-json/json-ostream.c:905,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:906,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 899
    functionDepth: 15
    functionLinenumber: 899
    functionLinenumberEnd: 907
    functionName: json_ostream_nascend_object
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 5
    functionsReached:
    - json_ostream_ascend_object
    - json_ostream_nwrite_post
    - json_ostream_nwrite_pre
    linkageType: ''
    returnType: void
    signature: void json_ostream_nascend_object(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:915,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:919,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/json-ostream.c:920,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 911
    functionDepth: 15
    functionLinenumber: 911
    functionLinenumberEnd: 923
    functionName: json_ostream_descend_array
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_init
    - json_generate_array_open
    linkageType: ''
    returnType: int
    signature: int json_ostream_descend_array(struct json_ostream *stream, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:930,1
    - Dst: json_ostream_descend_array
      Src: /src/dovecot/src/lib-json/json-ostream.c:932,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 925
    functionDepth: 16
    functionLinenumber: 925
    functionLinenumberEnd: 934
    functionName: json_ostream_ndescend_array
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 4
    functionsReached:
    - json_ostream_descend_array
    - json_ostream_nwrite_post
    - json_ostream_nwrite_pre
    linkageType: ''
    returnType: void
    signature: "void json_ostream_ndescend_array(struct json_ostream *stream,\n\t\t\t\t
      const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:940,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:943,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:946,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 936
    functionDepth: 14
    functionLinenumber: 936
    functionLinenumberEnd: 949
    functionName: json_ostream_ascend_array
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - json_generate_array_close
    - i_assert
    - json_ostream_flush
    linkageType: ''
    returnType: int
    signature: int json_ostream_ascend_array(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:955,1
    - Dst: json_ostream_ascend_array
      Src: /src/dovecot/src/lib-json/json-ostream.c:957,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:958,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 951
    functionDepth: 15
    functionLinenumber: 951
    functionLinenumberEnd: 959
    functionName: json_ostream_nascend_array
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 4
    functionsReached:
    - json_ostream_ascend_array
    - json_ostream_nwrite_post
    - json_ostream_nwrite_pre
    linkageType: ''
    returnType: void
    signature: void json_ostream_nascend_array(struct json_ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:972,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:976,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - stream
    - name
    - data
    - size
    argTypes:
    - struct json_ostream*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 965
    functionDepth: 17
    functionLinenumber: 965
    functionLinenumberEnd: 981
    functionName: json_ostream_write_text_data
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_text_data(struct json_ostream *stream,\n\t\t\t\t
      const char *name,\n\t\t\t\t const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:990,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:994,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - stream
    - name
    - data
    - size
    argTypes:
    - struct json_ostream*
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 983
    functionDepth: 17
    functionLinenumber: 983
    functionLinenumberEnd: 999
    functionName: json_ostream_nwrite_text_data
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_text_data(struct json_ostream *stream,\n\t\t\t\t
      \  const char *name,\n\t\t\t\t   const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1006,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:1010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - str
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1001
    functionDepth: 17
    functionLinenumber: 1001
    functionLinenumberEnd: 1011
    functionName: json_ostream_write_text
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_text(struct json_ostream *stream,\n\t\t\t    const
      char *name, const char *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1018,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - str
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1013
    functionDepth: 17
    functionLinenumber: 1013
    functionLinenumberEnd: 1023
    functionName: json_ostream_nwrite_text
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_text(struct json_ostream *stream,\n\t\t\t
      \     const char *name, const char *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1030,1
    - Dst: json_ostream_write_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:1034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - name
    - input
    argTypes:
    - struct json_ostream*
    - char*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1025
    functionDepth: 17
    functionLinenumber: 1025
    functionLinenumberEnd: 1036
    functionName: json_ostream_write_text_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_value
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_text_stream(struct json_ostream *stream,\n\t\t\t\t
      \  const char *name, struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1043,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:1047,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - name
    - input
    argTypes:
    - struct json_ostream*
    - char*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1038
    functionDepth: 17
    functionLinenumber: 1038
    functionLinenumberEnd: 1050
    functionName: json_ostream_nwrite_text_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_text_stream(struct json_ostream *stream,\n\t\t\t\t
      \    const char *name, struct istream *input)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1056,1
    - Dst: json_node_is_none
      Src: /src/dovecot/src/lib-json/json-ostream.c:1060,1
    - Dst: json_tree_walk
      Src: /src/dovecot/src/lib-json/json-ostream.c:1061,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/json-ostream.c:1063,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-ostream.c:1064,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1065,1
    - Dst: json_ostream_do_write_node
      Src: /src/dovecot/src/lib-json/json-ostream.c:1069,1
    - Dst: json_tree_walker_free
      Src: /src/dovecot/src/lib-json/json-ostream.c:1072,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/json-ostream.c:1073,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1074,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1079,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-ostream.c:1081,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1052
    functionDepth: 4
    functionLinenumber: 1052
    functionLinenumberEnd: 1082
    functionName: json_ostream_write_tree_more
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_tree_walker_free
    - json_ostream_do_write_node
    - json_tree_walk
    - i_unreached
    - json_node_is_none
    - json_tree_unref
    - i_assert
    linkageType: ''
    returnType: int
    signature: int json_ostream_write_tree_more(struct json_ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1090,1
    - Dst: json_ostream_write_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:1092,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1096,1
    - Dst: json_tree_walker_create
      Src: /src/dovecot/src/lib-json/json-ostream.c:1097,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1098,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - name
    - jtree
    argTypes:
    - struct json_ostream*
    - char*
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1084
    functionDepth: 15
    functionLinenumber: 1084
    functionLinenumberEnd: 1101
    functionName: json_ostream_write_tree_init
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - json_ostream_write_init
    - json_tree_walker_create
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_tree_init(struct json_ostream *stream, const
      char *name,\n\t\t\t     const struct json_tree *jtree)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_tree_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:1108,1
    - Dst: json_ostream_write_tree_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:1112,1
    - Dst: json_tree_ref
      Src: /src/dovecot/src/lib-json/json-ostream.c:1115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - stream
    - name
    - jtree
    argTypes:
    - struct json_ostream*
    - char*
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1103
    functionDepth: 16
    functionLinenumber: 1103
    functionLinenumberEnd: 1118
    functionName: json_ostream_write_tree
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - json_tree_ref
    - json_ostream_write_tree_init
    - json_ostream_write_tree_more
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_tree(struct json_ostream *stream, const char
      *name,\n\t\t\t    struct json_tree *jtree)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:1125,1
    - Dst: json_ostream_write_tree_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:1127,1
    - Dst: json_ostream_write_tree_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:1129,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1130,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:1131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - stream
    - name
    - jtree
    argTypes:
    - struct json_ostream*
    - char*
    - struct json_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1120
    functionDepth: 16
    functionLinenumber: 1120
    functionLinenumberEnd: 1132
    functionName: json_ostream_nwrite_tree
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 2
    functionsReached:
    - json_ostream_write_tree_init
    - json_ostream_nwrite_post
    - json_ostream_write_tree_more
    - json_ostream_nwrite_pre
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_tree(struct json_ostream *stream, const char
      *name,\n\t\t\t      const struct json_tree *jtree)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:1147,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1151,1
    - Dst: json_generate_array_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:1155,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1159,1
    - Dst: json_generate_object_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:1163,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1167,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-json/json-ostream.c:1170,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1138
    functionDepth: 13
    functionLinenumber: 1138
    functionLinenumberEnd: 1173
    functionName: json_ostream_write_node_more
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_zero
    - json_generate_array_close
    - i_unreached
    - json_generate_object_close
    - json_ostream_write_more
    linkageType: ''
    returnType: int
    signature: int json_ostream_write_node_more(struct json_ostream *stream)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-ostream.c:1183,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1187,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1192,1
    - Dst: json_node_is_none
      Src: /src/dovecot/src/lib-json/json-ostream.c:1192,1
    - Dst: json_node_is_end
      Src: /src/dovecot/src/lib-json/json-ostream.c:1194,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1195,1
    - Dst: json_generate_object_member
      Src: /src/dovecot/src/lib-json/json-ostream.c:1196,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/json-ostream.c:1205,1
    - Dst: json_generate_array_open
      Src: /src/dovecot/src/lib-json/json-ostream.c:1207,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/json-ostream.c:1215,1
    - Dst: json_generate_object_open
      Src: /src/dovecot/src/lib-json/json-ostream.c:1217,1
    - Dst: json_ostream_write_node_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:1231,1
    - Dst: json_ostream_persist_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:1235,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 4
    argNames:
    - stream
    - node
    - flush
    - persist
    argTypes:
    - struct json_ostream*
    - struct json_node*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1175
    functionDepth: 14
    functionLinenumber: 1175
    functionLinenumberEnd: 1238
    functionName: json_ostream_do_write_node
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - json_ostream_write_node_more
    - json_node_is_end
    - json_generate_array_open
    - json_node_is_none
    - json_generate_object_member
    - json_ostream_flush
    - json_node_is_array_end
    - json_ostream_persist_value
    - json_generate_object_open
    - i_assert
    - json_node_is_object_end
    linkageType: ''
    returnType: int
    signature: "int json_ostream_do_write_node(struct json_ostream *stream,\n\t\t\t
      \  const struct json_node *node, bool flush,\n\t\t\t   bool persist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1243,1
    - Dst: json_ostream_do_write_node
      Src: /src/dovecot/src/lib-json/json-ostream.c:1245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - node
    - copy
    argTypes:
    - struct json_ostream*
    - struct json_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1240
    functionDepth: 15
    functionLinenumber: 1240
    functionLinenumberEnd: 1246
    functionName: json_ostream_write_node
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 3
    functionsReached:
    - json_ostream_do_write_node
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int json_ostream_write_node(struct json_ostream *stream,\n\t\t\t    const
      struct json_node *node, bool copy)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/json-ostream.c:1253,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/lib-json/json-ostream.c:1255,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/lib-json/json-ostream.c:1259,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/json-ostream.c:1262,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-json/json-ostream.c:1264,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-json/json-ostream.c:1268,1
    - Dst: json_ostream_nwrite_value
      Src: /src/dovecot/src/lib-json/json-ostream.c:1274,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - stream
    - node
    argTypes:
    - struct json_ostream*
    - struct json_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1248
    functionDepth: 17
    functionLinenumber: 1248
    functionLinenumberEnd: 1276
    functionName: json_ostream_nwrite_node
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - json_ostream_ndescend_array
    - json_ostream_ndescend_object
    - json_ostream_nascend_object
    - json_ostream_nascend_array
    - json_node_is_array_end
    - json_node_is_object_end
    - json_ostream_nwrite_value
    linkageType: ''
    returnType: void
    signature: "void json_ostream_nwrite_node(struct json_ostream *stream,\n\t\t\t
      \     const struct json_node *node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:1290,1
    - Dst: json_generate_string_open_stream
      Src: /src/dovecot/src/lib-json/json-ostream.c:1294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - name
    - ostream_r
    argTypes:
    - struct json_ostream*
    - char*
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1282
    functionDepth: 15
    functionLinenumber: 1282
    functionLinenumberEnd: 1296
    functionName: json_ostream_open_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - json_ostream_write_init
    - json_generate_string_open_stream
    linkageType: ''
    returnType: int
    signature: "int json_ostream_open_string_stream(struct json_ostream *stream,\n\t\t\t\t
      \   const char *name,\n\t\t\t\t    struct ostream **ostream_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:1305,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1307,1
    - Dst: o_stream_create_error
      Src: /src/dovecot/src/lib-json/json-ostream.c:1315,1
    - Dst: json_ostream_open_string_stream
      Src: /src/dovecot/src/lib-json/json-ostream.c:1317,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:1318,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1298
    functionDepth: 16
    functionLinenumber: 1298
    functionLinenumberEnd: 1320
    functionName: json_ostream_nopen_string_stream
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - json_ostream_nwrite_post
    - json_ostream_open_string_stream
    - json_ostream_nwrite_pre
    - o_stream_create_error
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      json_ostream_nopen_string_stream(struct json_ostream *stream, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_write_space_init
      Src: /src/dovecot/src/lib-json/json-ostream.c:1330,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-ostream.c:1334,1
    - Dst: json_ostream_write_more
      Src: /src/dovecot/src/lib-json/json-ostream.c:1338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1326
    functionDepth: 15
    functionLinenumber: 1326
    functionLinenumberEnd: 1339
    functionName: json_ostream_open_space
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_more
    - json_ostream_write_space_init
    linkageType: ''
    returnType: int
    signature: int json_ostream_open_space(struct json_ostream *stream, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nwrite_pre
      Src: /src/dovecot/src/lib-json/json-ostream.c:1345,1
    - Dst: json_ostream_open_space
      Src: /src/dovecot/src/lib-json/json-ostream.c:1347,1
    - Dst: json_ostream_nwrite_post
      Src: /src/dovecot/src/lib-json/json-ostream.c:1348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1341
    functionDepth: 16
    functionLinenumber: 1341
    functionLinenumberEnd: 1349
    functionName: json_ostream_nopen_space
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - json_ostream_nwrite_post
    - json_ostream_nwrite_pre
    - json_ostream_open_space
    linkageType: ''
    returnType: void
    signature: void json_ostream_nopen_space(struct json_ostream *stream, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1353,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-ostream.c:1354,1
    - Dst: json_generate_space_close
      Src: /src/dovecot/src/lib-json/json-ostream.c:1356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct json_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1351
    functionDepth: 2
    functionLinenumber: 1351
    functionLinenumberEnd: 1358
    functionName: json_ostream_close_space
    functionSourceFile: /src/dovecot/src/lib-json/json-ostream.c
    functionUses: 1
    functionsReached:
    - i_assert
    - json_generate_space_close
    linkageType: ''
    returnType: void
    signature: void json_ostream_close_space(struct json_ostream *stream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-format.c:37,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/json-format.c:43,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/json-format.c:44,1
    - Dst: json_ostream_set_format
      Src: /src/dovecot/src/lib-json/json-format.c:45,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-format.c:48,1
    - Dst: json_istream_walk_stream
      Src: /src/dovecot/src/lib-json/json-format.c:51,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-format.c:55,1
    - Dst: json_node_is_none
      Src: /src/dovecot/src/lib-json/json-format.c:59,1
    - Dst: json_ostream_write_node
      Src: /src/dovecot/src/lib-json/json-format.c:62,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/json-format.c:63,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-format.c:66,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/json-format.c:69,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/json-format.c:71,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-json/json-format.c:72,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-json/json-format.c:74,1
    - Dst: json_ostream_get_error
      Src: /src/dovecot/src/lib-json/json-format.c:75,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/lib-json/json-format.c:77,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 3
    argNames:
    - input
    - output
    - json_format
    argTypes:
    - struct istream*
    - struct ostream*
    - struct json_format*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 26
    functionDepth: 16
    functionLinenumber: 26
    functionLinenumberEnd: 78
    functionName: json_format_file_io_run
    functionSourceFile: /src/dovecot/src/lib-json/json-format.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_ostream_write_node
    - json_istream_create
    - i_error
    - json_ostream_create
    - json_node_is_none
    - json_istream_walk_stream
    - json_ostream_destroy
    - json_ostream_get_error
    - json_istream_finish
    - json_ostream_flush
    - i_assert
    - json_ostream_set_format
    linkageType: ''
    returnType: void
    signature: "void json_format_file_io_run(struct istream *input, struct ostream
      *output,\n\t\t\tconst struct json_format *json_format)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib-json/json-format.c:87,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/json-format.c:88,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/json-format.c:91,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-json/json-format.c:92,1
    - Dst: json_format_file_io_run
      Src: /src/dovecot/src/lib-json/json-format.c:93,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/json-format.c:94,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/json-format.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - file
    - json_format
    argTypes:
    - char*
    - struct json_format*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 80
    functionDepth: 17
    functionLinenumber: 80
    functionLinenumberEnd: 96
    functionName: json_format_file_io
    functionSourceFile: /src/dovecot/src/lib-json/json-format.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - i_fatal
    - open
    - json_format_file_io_run
    - o_stream_create_fd_autoclose
    - i_stream_create_fd_autoclose
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void json_format_file_io(const char *file, const struct json_format
      *json_format)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-json/json-format.c:103,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/json-format.c:105,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-json/json-format.c:110,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-json/json-format.c:116,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/json-format.c:118,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/json-format.c:125,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/json-format.c:133,1
    - Dst: json_format_file_io
      Src: /src/dovecot/src/lib-json/json-format.c:137,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-json/json-format.c:139,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 98
    functionDepth: 18
    functionLinenumber: 98
    functionLinenumberEnd: 141
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-json/json-format.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_format_file_io
    - getopt
    - lib_init
    - lib_deinit
    - i_fatal
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:254,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:269,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:271,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:271,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:273,1
    - Dst: json_tree_read_data
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:275,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:276,1
    - Dst: json_tree_write_buffer
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:279,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:281,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:282,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:282,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:285,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:286,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:286,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:289,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:291,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 293
    functionName: test_json_tree_io
    functionSourceFile: /src/dovecot/src/lib-json/test-json-tree-io.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - test_out_reason_quiet
    - json_tree_read_data
    - strlen
    - t_strdup_printf
    - buffer_set_used_size
    - test_out_quiet
    - i_debug
    - test_end
    - json_tree_write_buffer
    - json_tree_unref
    - str_new
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_tree_io(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:303,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:322,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:324,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:324,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:326,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:328,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:329,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:330,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:332,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:333,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:335,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:338,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:339,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:341,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:343,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:344,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:345,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:350,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:352,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:354,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:357,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:359,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:360,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:362,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:363,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:363,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:366,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:367,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:367,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:370,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:371,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:372,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:374,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:376,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:377,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:378,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:380,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:381,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:384,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:386,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:387,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:391,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:393,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:394,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:397,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:398,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:400,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:401,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:401,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:404,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:405,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:405,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:408,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:409,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:410,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:412,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 298
    functionDepth: 17
    functionLinenumber: 298
    functionLinenumberEnd: 414
    functionName: test_json_tree_stream_io
    functionSourceFile: /src/dovecot/src/lib-json/test-json-tree-io.c
    functionUses: 0
    functionsReached:
    - str_c
    - json_istream_create
    - strlen
    - o_stream_unref
    - t_strdup_printf
    - buffer_set_used_size
    - test_assert
    - o_stream_create_buffer
    - test_end
    - json_tree_unref
    - json_istream_read_tree
    - test_istream_set_size
    - str_new
    - test_out_reason_quiet
    - json_ostream_write_tree
    - test_out_quiet
    - json_istream_finish
    - o_stream_set_max_buffer_size
    - strcmp
    - json_ostream_create
    - o_stream_set_no_error_handling
    - test_istream_create_data
    - json_ostream_flush
    - i_stream_unref
    - i_debug
    - test_begin
    - json_ostream_unref
    linkageType: ''
    returnType: void
    signature: void test_json_tree_stream_io(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:428,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:429,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:430,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:432,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:434,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:438,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:441,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:442,1
    - Dst: json_ostream_write_tree
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:448,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:450,1
    - Dst: json_ostream_flush
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:453,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:457,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:458,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:461,1
    - Dst: json_ostream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:462,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:464,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:465,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:466,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 419
    functionDepth: 17
    functionLinenumber: 419
    functionLinenumberEnd: 467
    functionName: test_json_tree_file
    functionSourceFile: /src/dovecot/src/lib-json/test-json-tree-io.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - json_istream_create
    - json_istream_get_error
    - o_stream_get_error
    - json_ostream_write_tree
    - i_stream_create_file
    - json_ostream_create
    - i_fatal
    - o_stream_unref
    - o_stream_set_no_error_handling
    - json_istream_unref
    - i_stream_unref
    - json_tree_unref
    - json_istream_read_tree
    - json_ostream_flush
    - o_stream_nsend_str
    - json_ostream_unref
    linkageType: ''
    returnType: void
    signature: void test_json_tree_file(const char *file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:479,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:485,1
    - Dst: test_json_tree_file
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:492,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-json/test-json-tree-io.c:496,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 469
    functionDepth: 18
    functionLinenumber: 469
    functionLinenumberEnd: 497
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-json/test-json-tree-io.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - getopt
    - test_run
    - test_json_tree_file
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/json-istream.h:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - limits
    - parser_flags
    argTypes:
    - struct istream*
    - struct json_limits*
    - enum json_parser_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: json_istream_create_array
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.h
    functionUses: 0
    functionsReached:
    - json_istream_create
    linkageType: ''
    returnType: struct json_istream
    signature: "struct json_istream *\njson_istream_create_array(struct istream *input,\n\t\t\t
      \ const struct json_limits *limits,\n\t\t\t  enum json_parser_flags parser_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/json-istream.h:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - limits
    - parser_flags
    argTypes:
    - struct istream*
    - struct json_limits*
    - enum json_parser_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: json_istream_create_object
    functionSourceFile: /src/dovecot/src/lib-json/json-istream.h
    functionUses: 0
    functionsReached:
    - json_istream_create
    linkageType: ''
    returnType: struct json_istream
    signature: "struct json_istream *\njson_istream_create_object(struct istream *input,\n\t\t\t
      \  const struct json_limits *limits,\n\t\t\t   enum json_parser_flags parser_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-istream.c:22,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:23,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _jinput
    - text
    argTypes:
    - struct json_istream**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 16
    functionDepth: 4
    functionLinenumber: 16
    functionLinenumberEnd: 27
    functionName: test_json_read_success_text
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_destroy
    - json_istream_finish
    - test_out_reason_quiet
    linkageType: ''
    returnType: void
    signature: void test_json_read_success_text(struct json_istream **_jinput, const
      char *text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-istream.c:35,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:36,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _jinput
    - text
    argTypes:
    - struct json_istream**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 29
    functionDepth: 4
    functionLinenumber: 29
    functionLinenumberEnd: 40
    functionName: test_json_read_failure_text
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_destroy
    - json_istream_finish
    - test_out_reason_quiet
    linkageType: ''
    returnType: void
    signature: void test_json_read_failure_text(struct json_istream **_jinput, const
      char *text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_json_read_success_text
      Src: /src/dovecot/src/lib-json/test-json-istream.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _jinput
    argTypes:
    - struct json_istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: test_json_read_success
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - test_json_read_success_text
    linkageType: ''
    returnType: void
    signature: void test_json_read_success(struct json_istream **_jinput)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_json_read_failure_text
      Src: /src/dovecot/src/lib-json/test-json-istream.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _jinput
    argTypes:
    - struct json_istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 5
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: test_json_read_failure
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - test_json_read_failure_text
    linkageType: ''
    returnType: void
    signature: void test_json_read_failure(struct json_istream **_jinput)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-istream.c:222,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-istream.c:235,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-istream.c:238,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-istream.c:241,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:246,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:248,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-istream.c:248,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:251,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:252,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:255,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:257,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:257,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:258,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:259,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:260,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:262,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:264,1
    - Dst: test_json_read_success_text
      Src: /src/dovecot/src/lib-json/test-json-istream.c:265,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:267,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:268,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:271,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:272,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:276,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:276,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:278,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:278,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:280,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:282,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:283,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:284,1
    - Dst: test_json_read_success_text
      Src: /src/dovecot/src/lib-json/test-json-istream.c:285,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:287,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:288,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:290,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 56
    functionDepth: 8
    functionLinenumber: 56
    functionLinenumberEnd: 292
    functionName: test_json_istream_read_number
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - json_istream_create
    - json_istream_read
    - json_istream_skip
    - json_node_get_str
    - strlen
    - t_strdup_printf
    - test_assert_strcmp
    - test_end
    - json_istream_unref
    - json_node_is_number
    - json_node_get_intmax
    - test_assert
    - i_stream_unref
    - test_json_read_success_text
    - i_stream_create_from_data
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_read_number(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-istream.c:355,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-istream.c:369,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:372,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:374,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-json/test-json-istream.c:374,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:377,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:378,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:380,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:382,1
    - Dst: test_json_read_failure
      Src: /src/dovecot/src/lib-json/test-json-istream.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:386,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:386,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:387,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:388,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:389,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:392,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:393,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:394,1
    - Dst: test_json_read_success_text
      Src: /src/dovecot/src/lib-json/test-json-istream.c:395,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:399,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:400,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:403,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:404,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:407,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:409,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:410,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:410,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:411,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:412,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:413,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:416,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:417,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:418,1
    - Dst: test_json_read_success_text
      Src: /src/dovecot/src/lib-json/test-json-istream.c:419,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:422,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:423,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:423,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:424,1
    - Dst: json_node_get_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:426,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:427,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:429,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:430,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-json/test-json-istream.c:431,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:434,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:435,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:436,1
    - Dst: test_json_read_success_text
      Src: /src/dovecot/src/lib-json/test-json-istream.c:437,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:441,1
    - Dst: test_json_read_failure
      Src: /src/dovecot/src/lib-json/test-json-istream.c:442,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:445,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:446,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:448,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 298
    functionDepth: 8
    functionLinenumber: 298
    functionLinenumberEnd: 450
    functionName: test_json_istream_read_string
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - json_istream_read
    - test_json_read_failure
    - strlen
    - t_strdup_printf
    - json_node_get_data
    - test_assert
    - i_stream_create_from_data
    - test_assert_ucmp
    - json_node_get_str
    - I_MIN
    - test_end
    - test_json_read_success_text
    - json_node_is_string
    - i_zero
    - json_istream_skip
    - test_assert_strcmp
    - N_ELEMENTS
    - json_istream_unref
    - memcmp
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_read_string(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-json/test-json-istream.c:466,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:470,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:472,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:473,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:475,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:477,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:478,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:479,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:480,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:480,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:481,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:482,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:483,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:484,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:485,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:487,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:489,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:490,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:494,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:496,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:497,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:499,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:501,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:502,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:503,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:503,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:504,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:504,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:504,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:505,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:506,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:507,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:508,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:510,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:512,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:513,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:517,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:519,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:520,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:522,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:524,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:525,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:526,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:526,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:527,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:528,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:529,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:530,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:532,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:534,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:535,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:539,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:541,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:542,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:544,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:546,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:547,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:548,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:548,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:549,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:550,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:551,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:552,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:554,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:556,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:557,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:561,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:563,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:564,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:566,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:568,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:569,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:570,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:570,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:572,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:573,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:574,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:574,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:576,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:577,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:578,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:578,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:579,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:579,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:579,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:581,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:583,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:584,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:585,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:587,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:589,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:590,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:594,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:596,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:597,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:599,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:601,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:602,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:603,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:603,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:605,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:606,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:607,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:607,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:609,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:610,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:611,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:611,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:612,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:612,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:613,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:614,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:614,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:615,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:617,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:618,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:619,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:621,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:623,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:624,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:628,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:630,1
    - Dst: json_istream_create_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:631,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:633,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:635,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:636,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:637,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:637,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:638,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:638,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:638,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:639,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:641,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:642,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:643,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:643,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:644,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:644,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:645,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:646,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:648,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:649,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:650,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:650,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:652,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:653,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:654,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:654,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:655,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:657,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:658,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:659,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:659,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:661,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:662,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:663,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:663,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:664,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:666,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:667,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:668,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:668,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:669,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:671,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:672,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:673,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:673,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:674,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:676,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:677,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:678,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:678,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:679,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:681,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:682,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:683,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:685,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:687,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:688,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:693,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:695,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:696,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:698,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:700,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:701,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:702,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:702,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:703,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:703,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:703,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:704,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:704,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:705,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:707,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:708,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:709,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:709,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:710,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:710,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:711,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:712,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:712,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:713,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:715,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:716,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:717,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:717,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:718,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:718,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:720,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:721,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:722,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:722,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:723,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:723,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:724,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:726,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:727,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:728,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:728,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:729,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:729,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:731,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:732,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:733,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:733,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:734,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:734,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:735,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:737,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:738,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:739,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:739,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:740,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:740,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:741,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:743,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:744,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:745,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:745,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:746,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:746,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:747,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:749,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:750,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:751,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:751,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:752,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:752,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:753,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:755,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:756,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:757,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:759,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:761,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 216
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 456
    functionDepth: 9
    functionLinenumber: 456
    functionLinenumberEnd: 763
    functionName: test_json_istream_read_buffer
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - json_node_is_false
    - json_istream_read
    - json_istream_create_object
    - strlen
    - json_node_get_intmax
    - test_assert
    - i_stream_create_from_data
    - json_istream_descend
    - json_node_get_str
    - test_end
    - json_node_is_object
    - json_istream_create_array
    - json_node_is_string
    - json_node_is_array
    - i_zero
    - json_node_is_null
    - json_istream_skip
    - json_node_is_number
    - null_strcmp
    - test_json_read_success
    - i_assert
    - json_node_is_true
    - json_istream_unref
    - i_stream_unref
    - json_istream_ascend
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_read_buffer(void)
  - BBCount: 319
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:781,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:783,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:784,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:786,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:793,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:794,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:799,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:799,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:800,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:800,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:801,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:803,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:805,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:806,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:807,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:809,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:811,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:812,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:816,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:818,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:819,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:821,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:827,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:828,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:833,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:833,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:834,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:834,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:834,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:837,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:839,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:840,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:841,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:843,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:845,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:846,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:850,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:852,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:853,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:855,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:861,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:862,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:867,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:867,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:869,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:871,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:872,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:873,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:875,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:877,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:878,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:882,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:884,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:885,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:887,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:893,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:894,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:899,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:899,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:901,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:903,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:904,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:905,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:907,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:909,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:910,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:914,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:916,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:917,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:919,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:925,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:928,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:933,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:933,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:937,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:938,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:939,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:939,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:943,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:948,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:948,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:949,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:949,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:949,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:951,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:955,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:964,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:965,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:966,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:968,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:970,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:971,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:975,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:977,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:978,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:980,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:986,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:989,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:994,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:994,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:998,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:999,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1000,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1000,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1004,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1009,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1009,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1010,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1010,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1012,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1013,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1013,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1014,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1018,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1027,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1028,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1029,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1031,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1033,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1034,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1038,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1040,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1041,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1043,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1049,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1052,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1057,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1057,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1061,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1062,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1063,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1063,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1067,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1072,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1072,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1073,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1073,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1073,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1075,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1079,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1084,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1084,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1085,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1085,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1087,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1088,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1092,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1097,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1097,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1098,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1107,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1107,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1108,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1117,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1117,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1118,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1127,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1127,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1128,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1137,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1137,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1138,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1151,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1152,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1153,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1155,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1157,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1158,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1163,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1165,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1166,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1168,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1174,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1182,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1182,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1186,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1188,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1188,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1197,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1198,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1198,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1198,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1200,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1200,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1201,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1205,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1210,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1210,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1211,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1211,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1213,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1214,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1214,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1215,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1219,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1224,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1225,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1225,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1226,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1230,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1235,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1235,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1236,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1236,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1237,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1241,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1246,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1246,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1247,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1247,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1248,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1257,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1257,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1258,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1258,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1259,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1268,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1268,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1269,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1269,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1270,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1283,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1284,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1285,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1287,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1289,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1290,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1294,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1296,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1297,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1299,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1305,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1308,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1313,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1313,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1317,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1322,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1322,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1326,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1331,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1331,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1332,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1332,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1332,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1334,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1338,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1343,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1344,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1344,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1346,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1347,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1351,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1356,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1356,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1360,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1365,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1365,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1366,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1370,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1371,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1372,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1372,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1376,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1381,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1381,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1382,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1386,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1391,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1391,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1392,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1396,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1401,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1401,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1402,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1411,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1411,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1412,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1416,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1425,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1426,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1427,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1429,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1431,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1432,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1437,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1439,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1440,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1442,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1448,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1451,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1456,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1456,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1460,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1461,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1462,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1462,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1471,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1471,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1472,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1472,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1474,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1474,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1475,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1484,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1484,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1485,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1485,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1487,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1488,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1488,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1489,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1493,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1498,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1498,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1499,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1499,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1503,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1508,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1508,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1509,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1509,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1510,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1514,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1519,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1519,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1520,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1520,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1524,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1529,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1529,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1530,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1530,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1531,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1535,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1540,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1540,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1541,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1541,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1542,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1546,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1551,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1551,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1552,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1552,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1553,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1557,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1562,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1562,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1563,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1563,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1564,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1568,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1577,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1578,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1579,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1581,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1583,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1584,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1588,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1590,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1591,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1593,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1599,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1602,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1607,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1607,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1611,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1612,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1613,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1613,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1617,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1622,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1622,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1623,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1623,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1623,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1625,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1629,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1634,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1634,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1635,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1635,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1637,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1638,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1642,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1647,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1647,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1648,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1652,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1657,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1657,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1658,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1662,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1671,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1672,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1673,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1675,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1677,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1678,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1684,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1686,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1687,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1689,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1695,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1698,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1703,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1703,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1707,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1708,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1709,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1709,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1713,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1718,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1718,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1719,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1719,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1719,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1721,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1721,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1722,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1726,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1731,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1731,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1732,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1732,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1733,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1737,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1742,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1742,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1743,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1743,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1744,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1748,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1753,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1753,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1754,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1754,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1755,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1759,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1768,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1769,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1770,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1772,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1774,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1775,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1779,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1781,1
    - Dst: json_istream_create_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1782,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1784,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1790,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1793,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1798,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1798,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1799,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1799,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1799,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1801,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1805,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1810,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1810,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1811,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1811,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1813,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1814,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1818,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1823,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1823,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1827,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1832,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1832,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1833,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1837,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1838,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1839,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1839,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1843,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1848,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1848,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1849,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1853,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1858,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1858,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1859,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1863,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1868,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1868,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1869,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1873,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1878,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1878,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1879,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1883,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1892,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1893,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1894,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1896,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1898,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1899,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1904,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1906,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1907,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1909,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1915,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1918,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1923,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1923,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1924,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1924,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1924,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1926,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1926,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1927,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1931,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1936,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1936,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1937,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1937,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1939,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1940,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1940,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1941,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1945,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1950,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1950,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1951,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1951,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1955,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1960,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1960,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1961,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1961,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1962,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1966,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1971,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1971,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1972,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1972,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1976,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1981,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1981,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1982,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1982,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1983,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1987,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1992,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1992,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1993,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1993,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1994,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:1998,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2003,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2003,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2004,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2004,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2005,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2009,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2014,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2014,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2015,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2015,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2016,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2020,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2029,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2030,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2031,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2033,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2035,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2036,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2041,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2043,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2044,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2046,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2052,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2055,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2060,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2060,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2064,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2065,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2066,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2066,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2070,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2075,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2075,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2076,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2076,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2076,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2078,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2078,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2082,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2087,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2087,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2088,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2088,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2090,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2091,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2091,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2095,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2100,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2101,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2101,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2110,1
    - Dst: json_node_is_false
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2111,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2111,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2120,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2121,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2121,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2130,1
    - Dst: json_node_is_true
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2130,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2131,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2131,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2140,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2140,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2149,1
    - Dst: json_node_is_null
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2150,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2150,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2159,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2159,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2168,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2169,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2169,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2173,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2178,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2178,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2179,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2179,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2181,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2185,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2190,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2190,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2199,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2199,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2200,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2200,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2204,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2209,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2209,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2210,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2210,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2212,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2213,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2213,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2217,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2222,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2222,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2231,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2231,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2235,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2244,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2245,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2246,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2248,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2250,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2251,1
    CyclomaticComplexity: 557
    EdgeCount: 557
    ICount: 1370
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 769
    functionDepth: 10
    functionLinenumber: 769
    functionLinenumberEnd: 2252
    functionName: test_json_istream_read_trickle
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - json_node_is_false
    - json_istream_read
    - json_istream_create_object
    - strlen
    - json_node_get_intmax
    - test_assert
    - json_istream_walk
    - json_istream_descend
    - json_node_get_str
    - test_end
    - json_node_is_object
    - json_node_is_array_end
    - json_istream_create_array
    - test_istream_set_size
    - json_node_is_string
    - json_node_is_array
    - json_node_is_null
    - json_istream_skip
    - json_node_is_number
    - null_strcmp
    - test_json_read_success
    - json_node_is_true
    - json_istream_unref
    - test_istream_create_data
    - i_stream_unref
    - json_istream_ascend
    - json_node_is_object_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_read_trickle(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2270,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2272,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2273,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2275,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2277,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2278,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2279,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2279,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2280,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2280,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2281,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2281,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2282,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2284,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2285,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2288,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2290,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2291,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2296,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2298,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2299,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2301,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2307,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2310,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2315,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2315,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2320,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2321,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2321,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2330,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2330,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2331,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2331,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2331,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2333,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2333,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2337,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2346,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2349,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2351,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2353,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2354,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2355
      start: 2258
    functionDepth: 10
    functionLinenumber: 2258
    functionLinenumberEnd: 2355
    functionName: test_json_istream_finish
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - json_istream_create_object
    - json_istream_read
    - strlen
    - test_assert
    - json_istream_walk
    - i_stream_create_from_data
    - json_istream_get_error
    - json_node_get_str
    - test_end
    - json_node_is_object
    - test_istream_set_size
    - json_node_is_string
    - test_out_reason_quiet
    - json_istream_skip
    - null_strcmp
    - json_istream_finish
    - json_istream_destroy
    - i_assert
    - test_istream_create_data
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_finish(void)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2374,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2376,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2377,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2379,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2385,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2386,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2391,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2392,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2392,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2394,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2394,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2395,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2398,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2399,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2400,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2402,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2404,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2405,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2409,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2411,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2412,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2414,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2420,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2421,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2426,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2427,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2427,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2429,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2429,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2430,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2433,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2434,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2435,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2437,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2439,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2440,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2444,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2446,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2447,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2449,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2455,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2456,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2461,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2462,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2462,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2464,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2465,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2465,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2467,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2467,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2468,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2469,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2469,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2471,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2471,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2475,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2476,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2477,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2479,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2481,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2482,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2487,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2489,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2490,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2492,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2498,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2501,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2506,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2506,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2510,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2515,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2516,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2516,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2518,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2518,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2519,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2523,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2528,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2529,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2529,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2531,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2532,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2532,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2534,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2535,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2535,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2537,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2538,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2538,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2540,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2541,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2541,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2543,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2544,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2544,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2546,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2547,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2547,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2549,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2549,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2550,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2551,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2551,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2553,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2554,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2554,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2556,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2556,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2557,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2558,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2558,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2560,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2560,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2561,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2565,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2570,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2571,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2571,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2573,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2573,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2574,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2575,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2579,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2588,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2589,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2590,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2592,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2594,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2595,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 188
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2596
      start: 2361
    functionDepth: 9
    functionLinenumber: 2361
    functionLinenumberEnd: 2596
    functionName: test_json_istream_read_tree
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - json_istream_read
    - strlen
    - test_assert
    - json_tree_node_get_child
    - json_istream_descend
    - test_end
    - json_tree_get_root
    - json_tree_unref
    - json_istream_read_tree
    - test_istream_set_size
    - json_node_is_array
    - json_tree_node_get_parent
    - json_tree_node_get_next
    - test_json_read_success
    - json_istream_unref
    - test_istream_create_data
    - i_stream_unref
    - json_istream_ascend
    - json_tree_node_get_type
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_read_tree(void)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2614,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2616,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2618,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2619,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2621,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2627,1
    - Dst: json_istream_read_into_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2628,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2633,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2634,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2634,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2636,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2636,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2639,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2640,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2641,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2643,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2645,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2646,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2647,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2650,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2652,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2654,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2655,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2657,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2663,1
    - Dst: json_istream_read_into_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2664,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2669,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2670,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2670,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2672,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2672,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2675,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2676,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2677,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2679,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2681,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2682,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2683,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2686,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2688,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2690,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2691,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2693,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2699,1
    - Dst: json_istream_read_into_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2700,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2705,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2706,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2706,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2708,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2709,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2709,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2711,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2711,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2712,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2713,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2713,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2715,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2715,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2718,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2719,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2720,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2722,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2724,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2725,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2726,1
    - Dst: json_tree_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2729,1
    - Dst: json_tree_node_add_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2730,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2730,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2733,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2735,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2736,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2738,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2744,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2747,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2752,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2752,1
    - Dst: json_istream_read_into_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2756,1
    - Dst: json_istream_read_into_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2764,1
    - Dst: json_istream_read_into_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2772,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2780,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2786,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2787,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2787,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2789,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2790,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2790,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2792,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2793,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2793,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2795,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2796,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2796,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2798,1
    - Dst: json_tree_node_get_name
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2798,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2800,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2801,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2801,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2803,1
    - Dst: json_tree_node_get_name
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2803,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2805,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2806,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2806,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2808,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2809,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2809,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2811,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2812,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2812,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2814,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2815,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2815,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2817,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2817,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2818,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2819,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2819,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2821,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2822,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2822,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2824,1
    - Dst: json_tree_node_get_name
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2824,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2826,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2826,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2827,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2828,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2828,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2830,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2831,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2831,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2833,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2833,1
    - Dst: json_tree_node_get_parent
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2834,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2835,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2835,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2837,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2837,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2839,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2844,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2845,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2846,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2848,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2850,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2851,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 196
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2852
      start: 2602
    functionDepth: 10
    functionLinenumber: 2602
    functionLinenumberEnd: 2852
    functionName: test_json_istream_read_into_tree
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - json_istream_read
    - strlen
    - json_tree_node_add_array
    - test_assert
    - json_tree_node_get_child
    - json_istream_read_into_tree
    - json_istream_descend
    - json_tree_create
    - test_end
    - json_tree_get_root
    - json_tree_unref
    - test_istream_set_size
    - json_node_is_array
    - json_tree_node_get_parent
    - test_assert_strcmp
    - json_tree_node_get_name
    - json_tree_node_get_next
    - test_json_read_success
    - json_istream_unref
    - test_istream_create_data
    - i_stream_unref
    - json_istream_ascend
    - json_tree_node_get_type
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_read_into_tree(void)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2868,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2902,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2904,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2905,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2907,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2914,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2917,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2922,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2922,1
    - Dst: json_istream_read_stream
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2926,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2928,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2933,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2933,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2934,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2936,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2938,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2939,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2943,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2952,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2954,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2955,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2959,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2961,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2962,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2965,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2965,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2966,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2967,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2970,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2970,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2970,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2971,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2973,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2975,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2976,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2978,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2995,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2997,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:2998,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3000,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3007,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3010,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3015,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3015,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3019,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3024,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3024,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3028,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3033,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3033,1
    - Dst: json_istream_read_stream
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3037,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3039,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3044,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3044,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3045,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3047,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3049,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3050,1
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3054,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3059,1
    - Dst: json_node_is_object_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3059,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3060,1
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3064,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3069,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3069,1
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3073,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3078,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3078,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3079,1
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3083,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3088,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3088,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3089,1
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3093,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3104,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3105,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3109,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3111,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3115,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3115,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3116,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3117,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3120,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3120,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3120,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3121,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3123,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3125,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3126,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3128,1
    CyclomaticComplexity: 76
    EdgeCount: 76
    ICount: 192
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3129
      start: 2858
    functionDepth: 9
    functionLinenumber: 2858
    functionLinenumberEnd: 3129
    functionName: test_json_istream_read_stream
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - str_c
    - json_istream_create
    - json_istream_read
    - strlen
    - i_stream_ref
    - test_assert_cmp
    - test_assert
    - json_istream_descend
    - buffer_append
    - i_stream_have_bytes_left
    - test_dir_prepend
    - i_stream_skip
    - test_end
    - json_node_is_object
    - json_node_is_array_end
    - json_istream_read_stream
    - test_istream_set_size
    - json_node_is_string
    - str_new
    - json_node_is_array
    - i_stream_read_more
    - str_free
    - json_istream_read_next
    - json_istream_skip
    - test_out_quiet
    - test_json_read_success
    - i_assert
    - strcmp
    - test_has_failed
    - json_istream_unref
    - test_istream_create_data
    - str_truncate
    - i_stream_unref
    - json_istream_ascend
    - json_node_is_object_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_read_stream(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3327,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3330,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3334,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3335,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3336,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - input
    - value_r
    argTypes:
    - struct istream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3338
      start: 3320
    functionDepth: 1
    functionLinenumber: 3320
    functionLinenumberEnd: 3338
    functionName: stream_read_value
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data
    - t_strndup
    - i_stream_read
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: int
    signature: int stream_read_value(struct istream **input, const char **value_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3346,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3347,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3350,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3352,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3353,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3358,1
    - Dst: json_istream_ignore
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3367,1
    - Dst: json_istream_walk
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3373,1
    - Dst: json_istream_read_next_stream
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3382,1
    - Dst: json_node_get_stream
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3385,1
    - Dst: stream_read_value
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3391,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3398,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3399,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3400,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3402,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3403,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3405,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3408,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3413,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3415,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3415,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3416,1
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3417,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3418,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3419,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3421,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3422,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 1
    argNames:
    - full_size
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3423
      start: 3340
    functionDepth: 10
    functionLinenumber: 3340
    functionLinenumberEnd: 3423
    functionName: test_json_istream_tokens
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create_object
    - test_assert_idx
    - strlen
    - json_istream_walk
    - test_assert
    - test_istream_set_allow_eof
    - test_istream_set_size
    - json_istream_read_next
    - null_strcmp
    - test_json_read_success
    - i_assert
    - stream_read_value
    - N_ELEMENTS
    - json_node_get_stream
    - json_istream_unref
    - test_istream_create_data
    - i_stream_unref
    - json_istream_ignore
    - json_istream_read_next_stream
    linkageType: ''
    returnType: void
    signature: void test_json_istream_tokens(bool full_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3427,1
    - Dst: test_json_istream_tokens
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3428,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3430
      start: 3425
    functionDepth: 11
    functionLinenumber: 3425
    functionLinenumberEnd: 3430
    functionName: test_json_istream_tokens_buffer
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_json_istream_tokens
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_tokens_buffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3434,1
    - Dst: test_json_istream_tokens
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3435,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3437
      start: 3432
    functionDepth: 11
    functionLinenumber: 3432
    functionLinenumberEnd: 3437
    functionName: test_json_istream_tokens_trickle
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_json_istream_tokens
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_tokens_trickle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3454,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3456,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3456,1
    - Dst: json_istream_create_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3457,1
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3459,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3460,1
    - Dst: json_node_get_intmax
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3461,1
    - Dst: json_istream_ignore
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3463,1
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3467,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3468,1
    - Dst: json_istream_is_at_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3468,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3469,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3471,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3472,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3474,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3475
      start: 3443
    functionDepth: 9
    functionLinenumber: 3443
    functionLinenumberEnd: 3475
    functionName: test_json_istream_skip_array
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_read_next
    - strlen
    - test_end
    - test_istream_create_data
    - json_node_get_intmax
    - test_assert
    - i_stream_unref
    - test_json_read_success
    - json_istream_ignore
    - json_istream_create_array
    - json_istream_is_at_end
    - json_istream_destroy
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_skip_array(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3504,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3513,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3515,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3515,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3516,1
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3518,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3521,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3522,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3522,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3523,1
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3525,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3526,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3527,1
    - Dst: json_istream_is_at_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3527,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3528,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3530,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3531,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3534,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3534,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3535,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3536,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3537,1
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3538,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3543,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3544,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3544,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3545,1
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3548,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3549,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3550,1
    - Dst: json_istream_is_at_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3550,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3551,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3553,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3554,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3556,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3558,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3560,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3560,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3561,1
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3563,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3566,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3567,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3567,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3568,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3569,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3570,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3570,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3571,1
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3573,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3574,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3575,1
    - Dst: json_istream_is_at_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3575,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3576,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3578,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3579,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3582,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3582,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3583,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3585,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3586,1
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3587,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3591,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3592,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3592,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3598,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3599,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3600,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3604,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3605,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3605,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3612,1
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3614,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3615,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3616,1
    - Dst: json_istream_is_at_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3616,1
    - Dst: test_json_read_success
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3617,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3619,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3620,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3622,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 100
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3623
      start: 3481
    functionDepth: 8
    functionLinenumber: 3481
    functionLinenumberEnd: 3623
    functionName: test_json_istream_skip_object_fields
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - json_istream_create_object
    - json_istream_read
    - json_istream_skip
    - strlen
    - test_end
    - test_istream_create_data
    - test_assert
    - json_istream_read_object_member
    - test_json_read_success
    - json_istream_destroy
    - test_istream_set_size
    - json_istream_is_at_end
    - N_ELEMENTS
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_json_istream_skip_object_fields(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3641,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3643,1
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3644,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3645,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3646,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3647,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3649,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3651,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3652,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3653,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3654,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3654,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3655,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3656,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3657,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3658,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3658,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3659,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3660,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3661,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3662,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3663,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3665,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3667,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3671,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3673,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3674,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3676,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3678,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3679,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3680,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3681,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3681,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3682,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3683,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3684,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3685,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3685,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3686,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3687,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3688,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3689,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3689,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3690,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3691,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3692,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3693,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3695,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3697,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3698,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3702,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3704,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3705,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3707,1
    - Dst: json_istream_read_tree
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3709,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3710,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3711,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3713,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3715,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3716,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3720,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3722,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3723,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3725,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3727,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3728,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3729,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3730,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3730,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3731,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3732,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3733,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3734,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3734,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3735,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3736,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3737,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3738,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3738,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3739,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3740,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3741,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3742,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3743,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3743,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3744,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3745,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3746,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3748,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3750,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3751,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3755,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3757,1
    - Dst: json_istream_create_array
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3758,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3760,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3762,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3763,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3764,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3766,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3768,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3769,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3773,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3775,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3776,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3778,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3780,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3781,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3782,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3784,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3786,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3787,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3791,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3793,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3794,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3796,1
    - Dst: json_istream_read_stream
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3798,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3799,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3800,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3802,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3804,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3805,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3809,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3811,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3812,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3814,1
    - Dst: json_istream_read_stream
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3816,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3817,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3818,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3819,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3820,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3821,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3823,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3825,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3826,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3830,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3832,1
    - Dst: json_istream_create
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3833,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3835,1
    - Dst: json_istream_read_stream
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3837,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3838,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3839,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3840,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3841,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3841,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3842,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3843,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3846,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3847,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3848,1
    - Dst: json_istream_get_error
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3849,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3850,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3852,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3854,1
    - Dst: json_istream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3855,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3856,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 145
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3857
      start: 3629
    functionDepth: 9
    functionLinenumber: 3629
    functionLinenumberEnd: 3857
    functionName: test_json_istream_error
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - json_istream_create
    - json_istream_create_object
    - json_istream_read
    - strlen
    - i_stream_ref
    - test_assert
    - i_stream_create_from_data
    - json_istream_descend
    - json_istream_get_error
    - i_stream_create_failure_at
    - test_dir_prepend
    - test_end
    - json_istream_read_tree
    - json_node_is_array_end
    - json_istream_read_stream
    - json_istream_create_array
    - json_node_is_string
    - json_node_is_array
    - test_out_reason_quiet
    - test_out_reason
    - json_istream_skip
    - json_istream_finish
    - json_istream_unref
    - i_stream_unref
    - json_istream_ascend
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_json_istream_error(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3884,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3890,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3894,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-json/test-json-istream.c:3895,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3896
      start: 3863
    functionDepth: 1
    functionLinenumber: 3863
    functionLinenumberEnd: 3896
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-json/test-json-istream.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - getopt
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: process_title_set
      Src: /src/dovecot/src/log/log-connection.c:75,1
    - Dst: process_title_set
      Src: /src/dovecot/src/log/log-connection.c:77,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/log/log-connection.c:77,1
    - Dst: process_title_set
      Src: /src/dovecot/src/log/log-connection.c:80,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/log/log-connection.c:80,1
    - Dst: process_title_set
      Src: /src/dovecot/src/log/log-connection.c:87,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/log/log-connection.c:87,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 93
    functionName: log_refresh_proctitle
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - process_title_set
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void log_refresh_proctitle(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/log/log-connection.c:99,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/log/log-connection.c:99,1
    - Dst: i_new
      Src: /src/dovecot/src/log/log-connection.c:101,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/log/log-connection.c:102,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/log/log-connection.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - log
    - pid
    argTypes:
    - struct log_connection*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 105
    functionName: log_client_get
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - hash_table_insert
    - hash_table_lookup
    - POINTER_CAST
    - i_new
    linkageType: ''
    returnType: struct log_client
    signature: struct log_client *log_client_get(struct log_connection *log, pid_t
      pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_remove
      Src: /src/dovecot/src/log/log-connection.c:110,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/log/log-connection.c:110,1
    - Dst: i_free
      Src: /src/dovecot/src/log/log-connection.c:112,1
    - Dst: i_free
      Src: /src/dovecot/src/log/log-connection.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - log
    - client
    - pid
    argTypes:
    - struct log_connection*
    - struct log_client*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: log_client_free
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - hash_table_remove
    - i_free
    linkageType: ''
    returnType: void
    signature: "void log_client_free(struct log_connection *log,\n\t\t\t    struct
      log_client *client, pid_t pid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_client_get
      Src: /src/dovecot/src/log/log-connection.c:122,1
    - Dst: str_begins
      Src: /src/dovecot/src/log/log-connection.c:123,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/log/log-connection.c:124,1
    - Dst: str_begins
      Src: /src/dovecot/src/log/log-connection.c:125,1
    - Dst: i_free
      Src: /src/dovecot/src/log/log-connection.c:126,1
    - Dst: i_strdup
      Src: /src/dovecot/src/log/log-connection.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - log
    - failure
    argTypes:
    - struct log_connection*
    - struct failure_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 129
    functionName: log_parse_option
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - log_client_get
    - str_begins
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void log_parse_option(struct log_connection *log,\n\t\t\t     const
      struct failure_line *failure)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/log/log-connection.c:147,1
    - Dst: log_error_buffer_add
      Src: /src/dovecot/src/log/log-connection.c:152,1
    - Dst: i_unreached
      Src: /src/dovecot/src/log/log-connection.c:156,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/log/log-connection.c:161,1
    - Dst: i_log_type
      Src: /src/dovecot/src/log/log-connection.c:162,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/log/log-connection.c:164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 5
    argNames:
    - log
    - ctx
    - log_time
    - prefix
    - text
    argTypes:
    - struct log_connection*
    - struct failure_context*
    - struct timeval*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 165
    functionName: client_log_ctx
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_unreached
    - i_log_type
    - i_set_failure_prefix
    - log_error_buffer_add
    linkageType: ''
    returnType: void
    signature: "void client_log_ctx(struct log_connection *log,\n\t       const struct
      failure_context *ctx,\n\t       const struct timeval *log_time,\n\t       const
      char *prefix, const char *text)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/log/log-connection.c:175,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/log/log-connection.c:184,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/log/log-connection.c:185,1
    - Dst: client_log_ctx
      Src: /src/dovecot/src/log/log-connection.c:188,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/log/log-connection.c:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - log
    - client
    - line
    - log_time
    - tm
    argTypes:
    - struct log_connection*
    - struct log_client*
    - char*
    - struct timeval*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 190
    functionName: client_log_fatal
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_strdup_printf
    - client_log_ctx
    - net_ip2addr
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void client_log_fatal(struct log_connection *log, struct log_client
      *client,\n\t\t const char *line, const struct timeval *log_time,\n\t\t const
      struct tm *tm)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/log/log-connection.c:203,1
    - Dst: strchr
      Src: /src/dovecot/src/log/log-connection.c:204,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/log/log-connection.c:205,1
    - Dst: t_strcut
      Src: /src/dovecot/src/log/log-connection.c:205,1
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:206,1
    - Dst: t_strcut
      Src: /src/dovecot/src/log/log-connection.c:209,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/log/log-connection.c:210,1
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:211,1
    - Dst: array_get
      Src: /src/dovecot/src/log/log-connection.c:216,1
    - Dst: strcmp
      Src: /src/dovecot/src/log/log-connection.c:218,1
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:223,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/log/log-connection.c:229,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/log/log-connection.c:229,1
    - Dst: strcmp
      Src: /src/dovecot/src/log/log-connection.c:231,1
    - Dst: log_client_free
      Src: /src/dovecot/src/log/log-connection.c:237,1
    - Dst: str_begins
      Src: /src/dovecot/src/log/log-connection.c:238,1
    - Dst: client_log_fatal
      Src: /src/dovecot/src/log/log-connection.c:239,1
    - Dst: str_begins
      Src: /src/dovecot/src/log/log-connection.c:240,1
    - Dst: client_log_fatal
      Src: /src/dovecot/src/log/log-connection.c:244,1
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:246,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 4
    argNames:
    - line
    - log_time
    - tm
    - event
    argTypes:
    - char*
    - struct timeval*
    - struct tm*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 192
    functionDepth: 3
    functionLinenumber: 192
    functionLinenumberEnd: 249
    functionName: log_parse_master_line
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - POINTER_CAST
    - log_client_free
    - str_to_pid
    - str_begins
    - array_get
    - client_log_fatal
    - e_error
    - str_to_uint
    - hash_table_lookup
    - t_strcut
    linkageType: ''
    returnType: void
    signature: "void log_parse_master_line(const char *line, const struct timeval
      *log_time,\n\t\t      const struct tm *tm, struct event *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/log/log-connection.c:255,1
    - Dst: i_zero
      Src: /src/dovecot/src/log/log-connection.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct log_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: log_partial_line_free
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_free
    linkageType: ''
    returnType: void
    signature: void log_partial_line_free(struct log_connection *log)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:271,1
    - Dst: log_parse_master_line
      Src: /src/dovecot/src/log/log-connection.c:274,1
    - Dst: i_zero
      Src: /src/dovecot/src/log/log-connection.c:285,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/log/log-connection.c:288,1
    - Dst: t_strdup
      Src: /src/dovecot/src/log/log-connection.c:290,1
    - Dst: log_partial_line_free
      Src: /src/dovecot/src/log/log-connection.c:292,1
    - Dst: i_failure_parse_line
      Src: /src/dovecot/src/log/log-connection.c:294,1
    - Dst: log_partial_line_free
      Src: /src/dovecot/src/log/log-connection.c:300,1
    - Dst: log_client_get
      Src: /src/dovecot/src/log/log-connection.c:307,1
    - Dst: log_parse_option
      Src: /src/dovecot/src/log/log-connection.c:312,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/log/log-connection.c:316,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/log/log-connection.c:317,1
    - Dst: i_assert
      Src: /src/dovecot/src/log/log-connection.c:320,1
    - Dst: i_zero
      Src: /src/dovecot/src/log/log-connection.c:322,1
    - Dst: t_strndup
      Src: /src/dovecot/src/log/log-connection.c:328,1
    - Dst: i_strdup
      Src: /src/dovecot/src/log/log-connection.c:332,1
    - Dst: client_log_ctx
      Src: /src/dovecot/src/log/log-connection.c:340,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 5
    argNames:
    - log
    - line
    - log_time
    - tm
    - partial_line
    argTypes:
    - struct log_connection*
    - char*
    - struct timeval*
    - struct tm*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 341
    functionName: log_it
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_failure_parse_line
    - i_assert
    - POINTER_CAST
    - log_client_get
    - log_partial_line_free
    - t_strndup
    - e_error
    - log_parse_option
    - i_strdup
    - client_log_ctx
    - log_parse_master_line
    - t_strdup
    - hash_table_lookup
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void log_it(struct log_connection *log, const char *line,\n       const
      struct timeval *log_time, const struct tm *tm, bool partial_line)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/log/log-connection.c:353,1
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:355,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/log/log-connection.c:357,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/log/log-connection.c:360,1
    - Dst: i_assert
      Src: /src/dovecot/src/log/log-connection.c:366,1
    - Dst: memcpy
      Src: /src/dovecot/src/log/log-connection.c:367,1
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:375,1
    - Dst: i_free
      Src: /src/dovecot/src/log/log-connection.c:379,1
    - Dst: i_strndup
      Src: /src/dovecot/src/log/log-connection.c:380,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/log/log-connection.c:382,1
    - Dst: strcmp
      Src: /src/dovecot/src/log/log-connection.c:384,1
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:386,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct log_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 395
    functionName: log_connection_handshake
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strcmp
    - i_stream_get_data
    - i_strndup
    - i_stream_skip
    - e_error
    - i_stream_get_error
    - i_stream_read
    - i_assert
    - i_free
    linkageType: ''
    returnType: int
    signature: int log_connection_handshake(struct log_connection *log)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_connection_handshake
      Src: /src/dovecot/src/log/log-connection.c:406,1
    - Dst: log_connection_destroy
      Src: /src/dovecot/src/log/log-connection.c:407,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/log/log-connection.c:415,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/log/log-connection.c:417,1
    - Dst: localtime
      Src: /src/dovecot/src/log/log-connection.c:420,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/log/log-connection.c:423,1
    - Dst: log_it
      Src: /src/dovecot/src/log/log-connection.c:424,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/log/log-connection.c:431,1
    - Dst: t_strndup
      Src: /src/dovecot/src/log/log-connection.c:432,1
    - Dst: log_it
      Src: /src/dovecot/src/log/log-connection.c:433,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/log/log-connection.c:434,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/log/log-connection.c:436,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/log/log-connection.c:437,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct log_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 397
    functionDepth: 5
    functionLinenumber: 397
    functionLinenumberEnd: 441
    functionName: log_connection_input
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - i_stream_next_line
    - i_stream_get_data
    - t_strndup
    - i_stream_skip
    - localtime
    - log_it
    - io_loop_time_refresh
    - i_stream_read
    - log_connection_handshake
    - log_connection_destroy
    linkageType: ''
    returnType: void
    signature: void log_connection_input(struct log_connection *log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/log/log-connection.c:431,1
    - Dst: t_strndup
      Src: /src/dovecot/src/log/log-connection.c:432,1
    - Dst: log_it
      Src: /src/dovecot/src/log/log-connection.c:433,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/log/log-connection.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 426
    functionDepth: 5
    functionLinenumber: 426
    functionLinenumberEnd: 435
    functionName: T_BEGIN
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - log_it
    - i_stream_get_data
    - t_strndup
    - i_stream_skip
    linkageType: ''
    returnType: else
    signature: else T_BEGIN
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/log/log-connection.c:481,1
    - Dst: event_create
      Src: /src/dovecot/src/log/log-connection.c:482,1
    - Dst: io_add
      Src: /src/dovecot/src/log/log-connection.c:486,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/log/log-connection.c:487,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/log/log-connection.c:488,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/log/log-connection.c:489,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/log/log-connection.c:490,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/log/log-connection.c:492,1
    - Dst: log_connection_input
      Src: /src/dovecot/src/log/log-connection.c:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - errorbuf
    - fd
    - listen_fd
    argTypes:
    - struct log_error_buffer*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 476
    functionDepth: 6
    functionLinenumber: 476
    functionLinenumberEnd: 494
    functionName: log_connection_create
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - log_connection_input
    - event_create
    - i_stream_create_fd
    - io_add
    - DLLIST_PREPEND
    - i_new
    - hash_table_create_direct
    - i_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void log_connection_create(struct log_error_buffer *errorbuf,\n\t\t\t
      \  int fd, int listen_fd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_clear
      Src: /src/dovecot/src/log/log-connection.c:504,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/log/log-connection.c:506,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/log/log-connection.c:508,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/log/log-connection.c:509,1
    - Dst: i_free
      Src: /src/dovecot/src/log/log-connection.c:510,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/log/log-connection.c:513,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/log/log-connection.c:514,1
    - Dst: e_warning
      Src: /src/dovecot/src/log/log-connection.c:517,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/log/log-connection.c:522,1
    - Dst: io_remove
      Src: /src/dovecot/src/log/log-connection.c:523,1
    - Dst: close
      Src: /src/dovecot/src/log/log-connection.c:524,1
    - Dst: e_error
      Src: /src/dovecot/src/log/log-connection.c:525,1
    - Dst: log_partial_line_free
      Src: /src/dovecot/src/log/log-connection.c:527,1
    - Dst: event_unref
      Src: /src/dovecot/src/log/log-connection.c:528,1
    - Dst: i_free
      Src: /src/dovecot/src/log/log-connection.c:529,1
    - Dst: i_free
      Src: /src/dovecot/src/log/log-connection.c:530,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/log/log-connection.c:532,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - log
    - shutting_down
    argTypes:
    - struct log_connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 496
    functionDepth: 2
    functionLinenumber: 496
    functionLinenumberEnd: 533
    functionName: log_connection_destroy
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - event_unref
    - io_remove
    - hash_table_iterate_init
    - master_service_client_connection_destroyed
    - log_partial_line_free
    - e_error
    - array_idx_clear
    - e_warning
    - i_stream_unref
    - i_free
    - DLLIST_REMOVE
    - hash_table_destroy
    - close
    linkageType: ''
    returnType: void
    signature: void log_connection_destroy(struct log_connection *log, bool shutting_down)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/log/log-connection.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: log_connections_init
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - i_array_init
    linkageType: ''
    returnType: void
    signature: void log_connections_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_connection_destroy
      Src: /src/dovecot/src/log/log-connection.c:545,1
    - Dst: array_free
      Src: /src/dovecot/src/log/log-connection.c:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 540
    functionDepth: 3
    functionLinenumber: 540
    functionLinenumberEnd: 547
    functionName: log_connections_deinit
    functionSourceFile: /src/dovecot/src/log/log-connection.c
    functionUses: 0
    functionsReached:
    - array_free
    - log_connection_destroy
    linkageType: ''
    returnType: void
    signature: void log_connections_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/log/doveadm-connection.c:26,1
    - Dst: log_error_buffer_iter_init
      Src: /src/dovecot/src/log/doveadm-connection.c:29,1
    - Dst: log_error_buffer_iter_next
      Src: /src/dovecot/src/log/doveadm-connection.c:30,1
    - Dst: str_truncate
      Src: /src/dovecot/src/log/doveadm-connection.c:31,1
    - Dst: str_printfa
      Src: /src/dovecot/src/log/doveadm-connection.c:32,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/log/doveadm-connection.c:36,1
    - Dst: str_append_c
      Src: /src/dovecot/src/log/doveadm-connection.c:37,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/log/doveadm-connection.c:38,1
    - Dst: str_append_c
      Src: /src/dovecot/src/log/doveadm-connection.c:39,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/log/doveadm-connection.c:40,1
    - Dst: str_data
      Src: /src/dovecot/src/log/doveadm-connection.c:41,1
    - Dst: str_len
      Src: /src/dovecot/src/log/doveadm-connection.c:41,1
    - Dst: log_error_buffer_iter_deinit
      Src: /src/dovecot/src/log/doveadm-connection.c:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 48
    functionName: doveadm_connection_send_errors
    functionSourceFile: /src/dovecot/src/log/doveadm-connection.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - log_error_buffer_iter_deinit
    - str_data
    - str_len
    - log_error_buffer_iter_next
    - str_append_tabescaped
    - o_stream_send
    - str_truncate
    - log_error_buffer_iter_init
    linkageType: ''
    returnType: int
    signature: int doveadm_connection_send_errors(struct doveadm_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/log/doveadm-connection.c:52,1
    - Dst: doveadm_connection_destroy
      Src: /src/dovecot/src/log/doveadm-connection.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 57
    functionName: doveadm_output
    functionSourceFile: /src/dovecot/src/log/doveadm-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - doveadm_connection_destroy
    linkageType: ''
    returnType: int
    signature: int doveadm_output(struct doveadm_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/log/doveadm-connection.c:63,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/log/doveadm-connection.c:66,1
    - Dst: doveadm_connection_send_errors
      Src: /src/dovecot/src/log/doveadm-connection.c:67,1
    - Dst: doveadm_connection_destroy
      Src: /src/dovecot/src/log/doveadm-connection.c:68,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/log/doveadm-connection.c:70,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/log/doveadm-connection.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - errorbuf
    - fd
    argTypes:
    - struct log_error_buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 73
    functionName: doveadm_connection_create
    functionSourceFile: /src/dovecot/src/log/doveadm-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - doveadm_connection_destroy
    - doveadm_connection_send_errors
    - o_stream_set_flush_pending
    - i_new
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: void
    signature: void doveadm_connection_create(struct log_error_buffer *errorbuf, int
      fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/log/doveadm-connection.c:81,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/log/doveadm-connection.c:82,1
    - Dst: i_free
      Src: /src/dovecot/src/log/doveadm-connection.c:83,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/log/doveadm-connection.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct doveadm_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 86
    functionName: doveadm_connection_destroy
    functionSourceFile: /src/dovecot/src/log/doveadm-connection.c
    functionUses: 2
    functionsReached:
    - i_close_fd
    - i_free
    - o_stream_destroy
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void doveadm_connection_destroy(struct doveadm_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init_log_with_prefix
      Src: /src/dovecot/src/log/main.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 25
    functionName: sig_reopen_logs
    functionSourceFile: /src/dovecot/src/log/main.c
    functionUses: 0
    functionsReached:
    - master_service_init_log_with_prefix
    linkageType: ''
    returnType: void
    signature: void sig_reopen_logs(const siginfo_t *si ATTR_UNUSED, void *context
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/log/main.c:29,1
    - Dst: log_error_buffer_init
      Src: /src/dovecot/src/log/main.c:32,1
    - Dst: log_connections_init
      Src: /src/dovecot/src/log/main.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 34
    functionName: main_init
    functionSourceFile: /src/dovecot/src/log/main.c
    functionUses: 2
    functionsReached:
    - log_error_buffer_init
    - log_connections_init
    - lib_signals_set_handler
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_connections_deinit
      Src: /src/dovecot/src/log/main.c:38,1
    - Dst: log_error_buffer_deinit
      Src: /src/dovecot/src/log/main.c:39,1
    - Dst: i_free
      Src: /src/dovecot/src/log/main.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 4
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/log/main.c
    functionUses: 2
    functionsReached:
    - log_error_buffer_deinit
    - i_free
    - log_connections_deinit
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_connection_create
      Src: /src/dovecot/src/log/main.c:46,1
    - Dst: master_service_connection_get_type
      Src: /src/dovecot/src/log/main.c:52,1
    - Dst: strcmp
      Src: /src/dovecot/src/log/main.c:54,1
    - Dst: doveadm_connection_create
      Src: /src/dovecot/src/log/main.c:55,1
    - Dst: i_error
      Src: /src/dovecot/src/log/main.c:57,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/log/main.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 43
    functionDepth: 7
    functionLinenumber: 43
    functionLinenumberEnd: 63
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/log/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_error
    - log_connection_create
    - master_service_connection_get_type
    - doveadm_connection_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/log/main.c:71,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/log/main.c:76,1
    - Dst: i_set_failure_file
      Src: /src/dovecot/src/log/main.c:77,1
    - Dst: master_getopt
      Src: /src/dovecot/src/log/main.c:79,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/log/main.c:82,1
    - Dst: i_fatal
      Src: /src/dovecot/src/log/main.c:83,1
    - Dst: master_service_init_log_with_prefix
      Src: /src/dovecot/src/log/main.c:84,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/log/main.c:86,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/log/main.c:88,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/log/main.c:89,1
    - Dst: master_service_set_die_with_master
      Src: /src/dovecot/src/log/main.c:92,1
    - Dst: main_init
      Src: /src/dovecot/src/log/main.c:94,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/log/main.c:95,1
    - Dst: master_service_run
      Src: /src/dovecot/src/log/main.c:96,1
    - Dst: main_deinit
      Src: /src/dovecot/src/log/main.c:97,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/log/main.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 100
    functionName: main
    functionSourceFile: /src/dovecot/src/log/main.c
    functionUses: 0
    functionsReached:
    - restrict_access_by_env
    - main_init
    - master_service_run
    - master_service_init_log_with_prefix
    - i_fatal
    - main_deinit
    - master_service_deinit
    - master_service_init_finish
    - restrict_access_allow_coredumps
    - master_service_set_die_with_master
    - master_getopt
    - master_service_get_service_settings
    - i_strdup_printf
    - master_service_init
    - i_set_failure_file
    - master_service_settings_read_simple
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lda/main.c:58,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/lda/main.c:59,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lda/main.c:60,1
    - Dst: i_error
      Src: /src/dovecot/src/lda/main.c:62,1
    - Dst: str_c
      Src: /src/dovecot/src/lda/main.c:62,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lda/main.c:67,1
    - Dst: str_c
      Src: /src/dovecot/src/lda/main.c:67,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lda/main.c:69,1
    - Dst: str_c
      Src: /src/dovecot/src/lda/main.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - path_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 75
    functionName: seekable_fd_callback
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_error
    - mail_user_set_get_temp_prefix
    - i_close_fd
    - i_unlink
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: int seekable_fd_callback(const char **path_r, void *context)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lda/main.c:89,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lda/main.c:91,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lda/main.c:94,1
    - Dst: memcmp
      Src: /src/dovecot/src/lda/main.c:95,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lda/main.c:97,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lda/main.c:98,1
    - Dst: mbox_from_parse
      Src: /src/dovecot/src/lda/main.c:104,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lda/main.c:106,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lda/main.c:109,1
    - Dst: smtp_address_parse_mailbox
      Src: /src/dovecot/src/lda/main.c:117,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lda/main.c:117,1
    - Dst: e_warning
      Src: /src/dovecot/src/lda/main.c:120,1
    - Dst: i_free
      Src: /src/dovecot/src/lda/main.c:126,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lda/main.c:130,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lda/main.c:132,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lda/main.c:134,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lda/main.c:137,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lda/main.c:139,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 3
    argNames:
    - dinput
    - fd
    - mtime_r
    argTypes:
    - struct mail_deliver_input*
    - int
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 141
    functionName: create_raw_stream
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable
    - i_stream_create_fd
    - fd_set_nonblock
    - smtp_address_parse_mailbox
    - i_stream_create_limit
    - i_stream_ref
    - mbox_from_parse
    - i_stream_skip
    - e_warning
    - pool_datastack_create
    - memcmp
    - i_stream_unref
    - i_free
    - i_stream_read_more
    - i_stream_read_bytes
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ncreate_raw_stream(struct mail_deliver_input *dinput,\n\t\t
      \ int fd, time_t *mtime_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_user_get_service_ctx
      Src: /src/dovecot/src/lda/main.c:157,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lda/main.c:159,1
    - Dst: raw_storage_create_from_set
      Src: /src/dovecot/src/lda/main.c:160,1
    - Dst: create_raw_stream
      Src: /src/dovecot/src/lda/main.c:165,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lda/main.c:166,1
    - Dst: raw_mailbox_alloc_stream
      Src: /src/dovecot/src/lda/main.c:167,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lda/main.c:168,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lda/main.c:169,1
    - Dst: raw_mailbox_alloc_path
      Src: /src/dovecot/src/lda/main.c:171,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lda/main.c:172,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lda/main.c:175,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lda/main.c:176,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/lda/main.c:178,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lda/main.c:180,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lda/main.c:181,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lda/main.c:182,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lda/main.c:183,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lda/main.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - dinput
    - path
    argTypes:
    - struct mail_deliver_input*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 186
    functionName: lda_raw_mail_open
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_user_get_service_ctx
    - raw_mailbox_alloc_path
    - mailbox_get_last_internal_error
    - create_raw_stream
    - mailbox_transaction_begin
    - i_stream_set_name
    - mail_alloc
    - i_fatal
    - raw_storage_create_from_set
    - mailbox_header_lookup_unref
    - mail_storage_service_user_get_settings_instance
    - raw_mailbox_alloc_stream
    - mail_set_seq
    - smtp_address_encode
    - mailbox_header_lookup_init
    - i_stream_unref
    - mail_user_unref
    linkageType: ''
    returnType: struct mail
    signature: 'struct mail *

      lda_raw_mail_open(struct mail_deliver_input *dinput, const char *path)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_deliver_get_address
      Src: /src/dovecot/src/lda/main.c:197,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lda/main.c:200,1
    - Dst: smtp_address_parse_username
      Src: /src/dovecot/src/lda/main.c:207,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lda/main.c:207,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lda/main.c:209,1
    - Dst: e_debug
      Src: /src/dovecot/src/lda/main.c:223,1
    - Dst: smtp_address_encode_path
      Src: /src/dovecot/src/lda/main.c:225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - dinput
    - rcpt_to
    - user
    - rcpt_to_source
    argTypes:
    - struct mail_deliver_input*
    - struct smtp_address*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 226
    functionName: lda_set_rcpt_to
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - mail_deliver_get_address
    - e_debug
    - i_fatal_status
    - smtp_address_parse_username
    - pool_datastack_create
    - smtp_address_encode_path
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void lda_set_rcpt_to(struct mail_deliver_input *dinput,\n\t\tconst
      struct smtp_address *rcpt_to, const char *user,\n\t\tconst char *rcpt_to_source)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_deliver
      Src: /src/dovecot/src/lda/main.c:235,1
    - Dst: fprintf
      Src: /src/dovecot/src/lda/main.c:246,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lda/main.c:251,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lda/main.c:262,1
    - Dst: mail_deliver_log
      Src: /src/dovecot/src/lda/main.c:270,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lda/main.c:271,1
    - Dst: mail_send_rejection
      Src: /src/dovecot/src/lda/main.c:275,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - stderr_rejection
    argTypes:
    - struct mail_deliver_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 281
    functionName: lda_do_deliver
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - mail_send_rejection
    - mail_deliver
    - str_sanitize
    - mail_deliver_log
    - fprintf
    linkageType: ''
    returnType: int
    signature: int lda_do_deliver(struct mail_deliver_context *ctx, bool stderr_rejection)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lda/main.c:293,1
    - Dst: settings_get
      Src: /src/dovecot/src/lda/main.c:295,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lda/main.c:298,1
    - Dst: lda_raw_mail_open
      Src: /src/dovecot/src/lda/main.c:300,1
    - Dst: lda_set_rcpt_to
      Src: /src/dovecot/src/lda/main.c:301,1
    - Dst: mail_deliver_init
      Src: /src/dovecot/src/lda/main.c:303,1
    - Dst: lda_do_deliver
      Src: /src/dovecot/src/lda/main.c:304,1
    - Dst: mail_deliver_deinit
      Src: /src/dovecot/src/lda/main.c:305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - dinput
    - user
    - path
    - rcpt_to
    - rcpt_to_source
    - stderr_rejection
    argTypes:
    - struct mail_deliver_input*
    - char*
    - char*
    - struct smtp_address*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 308
    functionName: lda_deliver
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - lda_set_rcpt_to
    - mail_deliver_deinit
    - lda_do_deliver
    - i_fatal
    - mail_deliver_init
    - settings_get
    - lda_raw_mail_open
    linkageType: ''
    returnType: int
    signature: "int lda_deliver(struct mail_deliver_input *dinput,\n\t    const char
      *user, const char *path,\n\t    struct smtp_address *rcpt_to, const char *rcpt_to_source,\n\t
      \   bool stderr_rejection)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/dovecot/src/lda/main.c:319,1
    - Dst: fputs
      Src: /src/dovecot/src/lda/main.c:322,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - status
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 333
    functionName: failure_exit_callback
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - fputs
    linkageType: ''
    returnType: void
    signature: void failure_exit_callback(int *status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/lda/main.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 342
    functionName: print_help
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_help(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_exit_callback
      Src: /src/dovecot/src/lda/main.c:358,1
    - Dst: master_service_init
      Src: /src/dovecot/src/lda/main.c:360,1
    - Dst: event_create
      Src: /src/dovecot/src/lda/main.c:366,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lda/main.c:367,1
    - Dst: i_zero
      Src: /src/dovecot/src/lda/main.c:369,1
    - Dst: mail_deliver_session_init
      Src: /src/dovecot/src/lda/main.c:370,1
    - Dst: getenv
      Src: /src/dovecot/src/lda/main.c:374,1
    - Dst: master_getopt
      Src: /src/dovecot/src/lda/main.c:377,1
    - Dst: smtp_address_parse_path
      Src: /src/dovecot/src/lda/main.c:381,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lda/main.c:382,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lda/main.c:386,1
    - Dst: smtp_address_parse_path
      Src: /src/dovecot/src/lda/main.c:401,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lda/main.c:402,1
    - Dst: smtp_address_is_broken
      Src: /src/dovecot/src/lda/main.c:409,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lda/main.c:410,1
    - Dst: if
      Src: /src/dovecot/src/lda/main.c:421,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lda/main.c:421,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lda/main.c:422,1
    - Dst: t_abspath
      Src: /src/dovecot/src/lda/main.c:430,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lda/main.c:431,1
    - Dst: smtp_address_parse_path
      Src: /src/dovecot/src/lda/main.c:437,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lda/main.c:438,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lda/main.c:442,1
    - Dst: print_help
      Src: /src/dovecot/src/lda/main.c:447,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 450
    functionName: main
    functionSourceFile: /src/dovecot/src/lda/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - event_create
    - uni_utf8_str_is_valid
    - i_fatal_status
    - smtp_address_is_broken
    - event_add_category
    - getenv
    - if
    - i_fatal
    - t_abspath
    - pool_datastack_create
    - print_help
    - smtp_address_parse_path
    - i_set_failure_exit_callback
    - master_getopt
    - mail_deliver_session_init
    - master_service_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/imap-hibernate/main.c:20,1
    - Dst: imap_hibernate_client_create
      Src: /src/dovecot/src/imap-hibernate/main.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 22
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/imap-hibernate/main.c
    functionUses: 0
    functionsReached:
    - imap_hibernate_client_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/imap-hibernate/main.c:31,1
    - Dst: master_getopt
      Src: /src/dovecot/src/imap-hibernate/main.c:33,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/imap-hibernate/main.c:43,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap-hibernate/main.c:44,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/imap-hibernate/main.c:46,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/imap-hibernate/main.c:47,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/imap-hibernate/main.c:48,1
    - Dst: master_admin_clients_init
      Src: /src/dovecot/src/imap-hibernate/main.c:50,1
    - Dst: imap_clients_init
      Src: /src/dovecot/src/imap-hibernate/main.c:51,1
    - Dst: imap_master_connections_init
      Src: /src/dovecot/src/imap-hibernate/main.c:52,1
    - Dst: imap_hibernate_clients_init
      Src: /src/dovecot/src/imap-hibernate/main.c:53,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/imap-hibernate/main.c:54,1
    - Dst: master_service_run
      Src: /src/dovecot/src/imap-hibernate/main.c:56,1
    - Dst: imap_master_connections_deinit
      Src: /src/dovecot/src/imap-hibernate/main.c:58,1
    - Dst: imap_hibernate_clients_deinit
      Src: /src/dovecot/src/imap-hibernate/main.c:59,1
    - Dst: imap_clients_deinit
      Src: /src/dovecot/src/imap-hibernate/main.c:60,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/imap-hibernate/main.c:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 63
    functionName: main
    functionSourceFile: /src/dovecot/src/imap-hibernate/main.c
    functionUses: 0
    functionsReached:
    - restrict_access_by_env
    - master_service_run
    - imap_master_connections_init
    - imap_hibernate_clients_init
    - master_admin_clients_init
    - imap_clients_init
    - i_fatal
    - imap_master_connections_deinit
    - master_service_init_finish
    - imap_hibernate_clients_deinit
    - restrict_access_allow_coredumps
    - master_getopt
    - imap_clients_deinit
    - master_service_init
    - master_service_deinit
    - master_service_init_log
    - master_service_settings_read_simple
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:23,1
    - Dst: imap_master_connection_deinit
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 27
    functionName: imap_master_connection_timeout
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - imap_master_connection_deinit
    linkageType: ''
    returnType: void
    signature: void imap_master_connection_timeout(struct imap_master_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:38,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:42,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:43,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:46,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:48,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:49,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 6
    argNames:
    - path
    - send_callback
    - read_callback
    - context
    - conn_r
    - error_r
    argTypes:
    - char*
    - imap_master_connection_send_callback_t*
    - imap_master_connection_read_callback_t*
    - void*
    - struct imap_master_connection**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 56
    functionName: imap_master_connection_init
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 0
    functionsReached:
    - connection_client_connect
    - connection_init_client_unix
    - timeout_add
    - t_strdup_printf
    - i_new
    - i_free
    - connection_deinit
    linkageType: ''
    returnType: int
    signature: "int imap_master_connection_init(const char *path,\n\t\t\t\timap_master_connection_send_callback_t
      *send_callback,\n\t\t\t\timap_master_connection_read_callback_t *read_callback,\n\t\t\t\tvoid
      *context,\n\t\t\t\tstruct imap_master_connection **conn_r,\n\t\t\t\tconst char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_callback
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct imap_master_connection**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 70
    functionName: imap_master_read_callback
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 0
    functionsReached:
    - read_callback
    linkageType: ''
    returnType: void
    signature: "void imap_master_read_callback(struct imap_master_connection **_conn,\n\t\t\t
      \ const char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_master_read_callback
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:74,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:74,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct imap_master_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: imap_master_connection_deinit
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    - imap_master_read_callback
    - connection_disconnect_reason
    linkageType: ''
    returnType: void
    signature: void imap_master_connection_deinit(struct imap_master_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:84,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:85,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct imap_master_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 87
    functionName: imap_master_connection_free
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 0
    functionsReached:
    - i_free
    - connection_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_master_connection_free(struct imap_master_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_master_connection_deinit
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 95
    functionName: imap_master_client_destroy
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 0
    functionsReached:
    - imap_master_connection_deinit
    linkageType: ''
    returnType: void
    signature: void imap_master_client_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_line_default
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:104,1
    - Dst: struct imap_master_connection*::send_callback
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:107,1
    - Dst: imap_master_read_callback
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 113
    functionName: imap_master_client_input_line
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 0
    functionsReached:
    - struct imap_master_connection*::send_callback
    - connection_input_line_default
    - imap_master_read_callback
    linkageType: ''
    returnType: int
    signature: int imap_master_client_input_line(struct connection *_conn, const char
      *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: imap_master_connections_init
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void imap_master_connections_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/imap-hibernate/imap-master-connection.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: imap_master_connections_deinit
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void imap_master_connections_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:111,1
    - Dst: imap_client_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct imap_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 113
    functionName: imap_client_disconnected
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - io_stream_get_disconnect_reason
    - imap_client_destroy
    linkageType: ''
    returnType: void
    signature: void imap_client_disconnected(struct imap_client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_get_create_time
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:120,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:123,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:126,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:128,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:128,1
    - Dst: imap_client_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _client
    - error
    argTypes:
    - struct imap_client**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 130
    functionName: imap_client_unhibernate_failed
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - timeval_diff_usecs
    - event_get_create_time
    - e_error
    - struct event_passthrough*::event
    - event_create_passthrough
    - imap_client_destroy
    linkageType: ''
    returnType: void
    signature: void imap_client_unhibernate_failed(struct imap_client **_client, const
      char *error)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:144,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:146,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - client
    - auth_user_r
    argTypes:
    - struct imap_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 149
    functionName: imap_client_parse_userdb_fields
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - t_strsplit_tabescaped
    - str_begins
    linkageType: ''
    returnType: void
    signature: "void imap_client_parse_userdb_fields(struct imap_client *client,\n\t\t\t\tconst
      char **auth_user_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:156,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:162,1
    - Dst: event_get_create_time
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:163,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:164,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:168,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:169,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:172,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:173,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:176,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:178,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:178,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:180,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:182,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:182,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:184,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:186,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:188,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:189,1
    - Dst: major
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:191,1
    - Dst: minor
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:191,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:192,1
    - Dst: major
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:193,1
    - Dst: minor
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:194,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:197,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:199,1
    - Dst: base64_encode
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:200,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:202,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:204,1
    - Dst: base64_encode
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:207,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:207,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:210,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:213,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:216,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:232,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:234,1
    - Dst: fd_send
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:237,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:237,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:237,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:239,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:240,1
    - Dst: imap_client_unhibernate_failed
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:241,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:248,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:249,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:249,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:249,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 2
    argNames:
    - context
    - output
    argTypes:
    - void*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 251
    functionName: imap_client_move_back_send_callback
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_len
    - i_stream_get_data
    - t_strdup_printf
    - str_append_tabescaped
    - minor
    - major
    - o_stream_get_name
    - t_str_new
    - str_append_c
    - o_stream_nsend
    - net_ip2addr
    - event_get_create_time
    - str_data
    - fd_send
    - base64_encode
    - i_assert
    - dec2str
    - imap_client_unhibernate_failed
    - i_stream_get_absolute_offset
    - o_stream_get_fd
    - o_stream_get_buffer_used_size
    - str_append
    linkageType: ''
    returnType: int
    signature: int imap_client_move_back_send_callback(void *context, struct ostream
      *output)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_client_unhibernate_failed
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:260,1
    - Dst: imap_client_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - context
    - line
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 265
    functionName: imap_client_move_back_read_callback
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - imap_client_unhibernate_failed
    - imap_client_destroy
    linkageType: ''
    returnType: void
    signature: void imap_client_move_back_read_callback(void *context, const char
      *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 274
    functionName: imap_move_has_reached_timeout
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_move_has_reached_timeout(struct imap_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:282,1
    - Dst: imap_client_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:284,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:288,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:289,1
    - Dst: imap_master_connection_init
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:291,1
    - Dst: imap_client_stop
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:297,1
    - Dst: imap_move_has_reached_timeout
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:299,1
    - Dst: imap_client_unhibernate_failed
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:301,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:305,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:305,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:314,1
    - Dst: imap_client_stop_notify_listening
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:315,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 317
    functionName: imap_client_try_move_back
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - imap_client_unhibernate_failed
    - t_strconcat
    - imap_master_connection_init
    - e_debug
    - io_remove
    - imap_client_stop
    - imap_client_stop_notify_listening
    - o_stream_get_buffer_used_size
    - event_create_passthrough
    - master_service_get_service_settings
    - imap_move_has_reached_timeout
    - imap_client_destroy
    linkageType: ''
    returnType: bool
    signature: bool imap_client_try_move_back(struct imap_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_client_try_move_back
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:321,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:329,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:332,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 335
    functionName: imap_client_move_back
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - priorityq_add
    - timeout_add_short
    - imap_client_try_move_back
    linkageType: ''
    returnType: void
    signature: void imap_client_move_back(struct imap_client *client)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:345,1
    - Dst: I_MIN
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:345,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:383,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:391,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 3
    argNames:
    - data
    - size
    - tag_r
    argTypes:
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 395
    functionName: imap_client_input_parse
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - i_memcasecmp
    - t_strdup_until
    linkageType: ''
    returnType: enum imap_client_input_state
    signature: enum imap_client_input_state imap_client_input_parse(const unsigned
      char *data, size_t size, const char **tag_r)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:409,1
    - Dst: imap_client_disconnected
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:413,1
    - Dst: imap_client_input_parse
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:417,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:427,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:430,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:436,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:437,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:438,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:439,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:441,1
    - Dst: imap_client_disconnected
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:443,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:446,1
    - Dst: imap_client_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:448,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:452,1
    - Dst: imap_client_move_back
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:460,1
    - Dst: imap_client_add_idle_keepalive_timeout
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:462,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 397
    functionDepth: 4
    functionLinenumber: 397
    functionLinenumberEnd: 463
    functionName: imap_client_input_idle_cmd
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - imap_client_add_idle_keepalive_timeout
    - imap_client_disconnected
    - o_stream_send_str
    - strlen
    - t_strdup_printf
    - imap_client_input_parse
    - i_stream_skip
    - i_strdup
    - imap_client_move_back
    - o_stream_flush
    - i_free
    - i_stream_read_bytes
    - imap_client_destroy
    linkageType: ''
    returnType: void
    signature: void imap_client_input_idle_cmd(struct imap_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:467,1
    - Dst: imap_client_disconnected
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:468,1
    - Dst: imap_client_move_back
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 465
    functionDepth: 4
    functionLinenumber: 465
    functionLinenumberEnd: 473
    functionName: imap_client_input_nonidle
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - imap_client_disconnected
    - i_stream_read
    - imap_client_move_back
    linkageType: ''
    returnType: void
    signature: void imap_client_input_nonidle(struct imap_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_client_move_back
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 478
    functionName: imap_client_input_notify
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - imap_client_move_back
    linkageType: ''
    returnType: void
    signature: void imap_client_input_notify(struct imap_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:485,1
    - Dst: imap_client_disconnected
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:486,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:491,1
    - Dst: imap_client_disconnected
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:493,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:497,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:497,1
    - Dst: imap_client_add_idle_keepalive_timeout
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 499
    functionName: keepalive_timeout
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 5
    functionsReached:
    - imap_client_add_idle_keepalive_timeout
    - imap_client_disconnected
    - strlen
    - o_stream_send_str
    - o_stream_flush
    - i_assert
    linkageType: ''
    returnType: void
    signature: void keepalive_timeout(struct imap_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_keepalive_interval_msecs
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:508,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:512,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 514
    functionName: imap_client_add_idle_keepalive_timeout
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 2
    functionsReached:
    - timeout_add
    - imap_keepalive_interval_msecs
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_client_add_idle_keepalive_timeout(struct imap_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:520,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:522,1
    - Dst: imap_client_parse_userdb_fields
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:525,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:534,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:536,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:546,1
    - Dst: dec2str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:547,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:557,1
    - Dst: memcpy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:558,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 560
    functionName: imap_client_get_var_expand_table
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - dec2str
    - memcpy
    - imap_client_parse_userdb_fields
    - net_ip2addr
    - t_malloc_no0
    linkageType: ''
    returnType: struct var_expand_table
    signature: 'struct var_expand_table *

      imap_client_get_var_expand_table(struct imap_client *client)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:567,1
    - Dst: t_strcut
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:567,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:568,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:572,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - data
    - value_r
    - context
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 579
    functionName: imap_client_var_expand_func_userdb
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - str_begins
    - i_strchr_to_next
    - t_strcut
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int imap_client_var_expand_func_userdb(const char *data, const char
      **value_r,\n\t\t\t\t   void *context, const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 584
    functionName: imap_client_io_activate_user
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - i_set_failure_prefix
    linkageType: ''
    returnType: void
    signature: void imap_client_io_activate_user(struct imap_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 589
    functionName: imap_client_io_deactivate_user
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - i_set_failure_prefix
    linkageType: ''
    returnType: void
    signature: void imap_client_io_deactivate_user(struct imap_client *client ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:594,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:595,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:598,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:599,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:600,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:601,1
    - Dst: array_count
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:604,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:607,1
    - Dst: array_front
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:608,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 609
    functionName: userdb_fields_get_alt_usernames
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - array_push_back
    - array_count
    - t_array_init
    - t_split_key_value_eq
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: char
    signature: 'char *const *

      userdb_fields_get_alt_usernames(char *const *userdb_fields)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:619,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:623,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:624,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:626,1
    - Dst: p_new
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:628,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:631,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:632,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:633,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:636,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:639,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:643,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:644,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:645,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:646,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:647,1
    - Dst: event_create
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:649,1
    - Dst: event_add_category
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:650,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:651,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:652,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:654,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:656,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:658,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:660,1
    - Dst: event_add_int
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:662,1
    - Dst: p_malloc
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:665,1
    - Dst: memcpy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:666,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:672,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:676,1
    - Dst: imap_client_get_var_expand_table
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:679,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:686,1
    - Dst: var_expand
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:687,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:688,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:692,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:692,1
    - Dst: userdb_fields_get_alt_usernames
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:694,1
    - Dst: master_service_anvil_connect
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:695,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 2
    argNames:
    - fd
    - state
    argTypes:
    - int
    - struct imap_client_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 611
    functionDepth: 3
    functionLinenumber: 611
    functionLinenumberEnd: 698
    functionName: imap_client_create
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - o_stream_unref
    - event_add_ip
    - i_strdup
    - userdb_fields_get_alt_usernames
    - imap_client_get_var_expand_table
    - event_add_int
    - memcpy
    - o_stream_create_fd
    - t_str_new
    - master_service_get_name
    - p_new
    - p_strsplit_tabescaped
    - event_add_str
    - event_create
    - master_service_anvil_connect
    - o_stream_create_multiplex
    - e_error
    - i_assert
    - pool_alloconly_create
    - i_stream_create_fd
    - fd_set_nonblock
    - o_stream_set_no_error_handling
    - event_add_category
    - var_expand
    - p_malloc
    linkageType: ''
    returnType: struct imap_client
    signature: 'struct imap_client *

      imap_client_create(int fd, const struct imap_client_state *state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:709,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:710,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 713
    functionName: imap_client_stop_notify_listening
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - io_remove
    - i_close_fd
    linkageType: ''
    returnType: void
    signature: void imap_client_stop_notify_listening(struct imap_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_remove
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:718,1
    - Dst: io_remove
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:721,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:722,1
    - Dst: imap_client_stop_notify_listening
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 724
    functionName: imap_client_stop
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 1
    functionsReached:
    - imap_client_stop_notify_listening
    - io_remove
    - priorityq_remove
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_client_stop(struct imap_client *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:735,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:742,1
    - Dst: master_service_anvil_disconnect
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:745,1
    - Dst: imap_master_connection_free
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:750,1
    - Dst: io_loop_context_remove_callbacks
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:752,1
    - Dst: imap_client_io_deactivate_user
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:755,1
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:756,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:760,1
    - Dst: shutdown
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:763,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:764,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:767,1
    - Dst: imap_client_stop
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:768,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:769,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:770,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:771,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:772,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:773,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:775,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - _client
    - reason
    argTypes:
    - struct imap_client**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 726
    functionDepth: 3
    functionLinenumber: 726
    functionLinenumberEnd: 776
    functionName: imap_client_destroy
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 5
    functionsReached:
    - shutdown
    - io_loop_context_unref
    - e_info
    - master_service_get_name
    - event_unref
    - i_close_fd
    - pool_unref
    - e_error
    - imap_client_stop
    - o_stream_destroy
    - imap_client_io_deactivate_user
    - imap_master_connection_free
    - DLLIST_REMOVE
    - io_loop_context_remove_callbacks
    - i_free
    - master_service_anvil_disconnect
    - master_service_client_connection_destroyed
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void imap_client_destroy(struct imap_client **_client, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - fd
    argTypes:
    - struct imap_client*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 784
    functionName: imap_client_add_notify_fd
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void imap_client_add_notify_fd(struct imap_client *client, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_context_new
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:790,1
    - Dst: io_loop_context_add_callbacks
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:791,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:794,1
    - Dst: io_add
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:797,1
    - Dst: io_add
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:800,1
    - Dst: imap_client_add_idle_keepalive_timeout
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:803,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:805,1
    - Dst: io_add
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 786
    functionDepth: 2
    functionLinenumber: 786
    functionLinenumberEnd: 809
    functionName: imap_client_create_finish
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - imap_client_add_idle_keepalive_timeout
    - io_add
    - io_loop_context_switch
    - io_loop_context_new
    - array_foreach_modifiable
    - io_loop_context_add_callbacks
    linkageType: ''
    returnType: void
    signature: void imap_client_create_finish(struct imap_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 829
    functionName: client_unhibernate_cmp
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int client_unhibernate_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_peek
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:835,1
    - Dst: imap_client_try_move_back
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:838,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:841,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 831
    functionDepth: 3
    functionLinenumber: 831
    functionLinenumberEnd: 842
    functionName: imap_clients_unhibernate
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - priorityq_peek
    - imap_client_try_move_back
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_clients_unhibernate(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_client_io_activate_user
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:846,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:847,1
    - Dst: imap_client_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - client
    - shutdown
    argTypes:
    - struct imap_client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 844
    functionDepth: 2
    functionLinenumber: 844
    functionLinenumberEnd: 852
    functionName: imap_client_kick
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - imap_client_io_activate_user
    - imap_client_destroy
    linkageType: ''
    returnType: void
    signature: void imap_client_kick(struct imap_client *client, bool shutdown)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:861,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:862,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:863,1
    - Dst: imap_client_kick
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:864,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - user
    - conn_guid
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 854
    functionDepth: 3
    functionLinenumber: 854
    functionLinenumberEnd: 867
    functionName: imap_clients_kick
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - guid_128_is_empty
    - guid_128_cmp
    - imap_client_kick
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int imap_clients_kick(const char *user, const guid_128_t conn_guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_init
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 869
    functionDepth: 1
    functionLinenumber: 869
    functionLinenumberEnd: 872
    functionName: imap_clients_init
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 1
    functionsReached:
    - priorityq_init
    linkageType: ''
    returnType: void
    signature: void imap_clients_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_client_kick
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:877,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:879,1
    - Dst: priorityq_deinit
      Src: /src/dovecot/src/imap-hibernate/imap-client.c:880,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 874
    functionDepth: 3
    functionLinenumber: 874
    functionLinenumberEnd: 881
    functionName: imap_clients_deinit
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-client.c
    functionUses: 1
    functionsReached:
    - imap_client_kick
    - priorityq_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_clients_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:41,1
    - Dst: imap_client_create_finish
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:43,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:44,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: imap_hibernate_client_destroy
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    functionUses: 0
    functionsReached:
    - connection_deinit
    - i_free
    - imap_client_create_finish
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void imap_hibernate_client_destroy(struct connection *conn)
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:56,1
    - Dst: strchr
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:69,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:71,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:76,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:77,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:78,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:82,1
    - Dst: net_str2port
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:83,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:84,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:88,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:89,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:90,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:94,1
    - Dst: net_str2port
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:95,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:96,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:100,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:101,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:102,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:106,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:107,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:108,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:112,1
    - Dst: str_to_ino
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:113,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:114,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:118,1
    - Dst: str_to_uid
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:119,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:120,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:124,1
    - Dst: str_to_gid
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:125,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:126,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:130,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:132,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:136,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:138,1
    - Dst: str_to_time
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:139,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:140,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:144,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:146,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:148,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:149,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:150,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:154,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:155,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:158,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:161,1
    - Dst: base64_decode
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:162,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:162,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:164,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:170,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:171,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:172,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:176,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:177,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:178,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:182,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:183,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:184,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:188,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:189,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:190,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:194,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:195,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:196,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:200,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:201,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:202,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:206,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:207,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:208,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:212,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:213,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:214,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:218,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:219,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:220,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:224,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:225,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:226,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:230,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:231,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:232,1
    - Dst: makedev
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:243,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 194
    argCount: 4
    argNames:
    - args
    - pool
    - state_r
    - error_r
    argTypes:
    - char**
    - pool_t
    - struct imap_client_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 245
    functionName: imap_hibernate_client_parse_input
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    functionUses: 0
    functionsReached:
    - strchr
    - buffer_create_dynamic
    - strlen
    - t_strdup_printf
    - str_to_uint
    - net_addr2ip
    - str_to_uoff
    - t_strdup_noconst
    - net_str2port
    - i_zero
    - str_to_ino
    - str_to_gid
    - makedev
    - str_to_uid
    - str_to_time
    - strcmp
    - base64_decode
    - t_strdup_until
    - str_to_uint64
    linkageType: ''
    returnType: int
    signature: "int imap_hibernate_client_parse_input(const char *const *args, pool_t
      pool,\n\t\t\t\t  struct imap_client_state *state_r,\n\t\t\t\t  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_hibernate_client_parse_input
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:256,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:257,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:258,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:258,1
    - Dst: imap_client_create
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - conn
    - args
    - fd
    - pool
    argTypes:
    - struct connection*
    - char**
    - int
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 266
    functionName: imap_hibernate_client_input_args
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    functionUses: 0
    functionsReached:
    - imap_hibernate_client_parse_input
    - t_strdup_printf
    - e_error
    - imap_client_create
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: "int imap_hibernate_client_input_args(struct connection *conn,\n\t\t\t\t
      const char *const *args, int fd, pool_t pool)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:276,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:277,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:283,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:291,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:293,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:297,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:298,1
    - Dst: imap_hibernate_client_input_args
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:299,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:302,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:303,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:305,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:307,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:311,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:313,1
    - Dst: imap_client_add_notify_fd
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:317,1
    - Dst: imap_client_destroy
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:324,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:325,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:329,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:336,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 338
    functionName: imap_hibernate_client_input_line
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_strsplit_tabescaped
    - e_debug
    - p_strsplit_tabescaped
    - imap_client_add_notify_fd
    - i_close_fd
    - pool_unref
    - e_error
    - i_stream_unix_get_read_fd
    - imap_hibernate_client_input_args
    - i_stream_unix_set_read_fd
    - connection_handshake_args_default
    - o_stream_nsend_str
    - imap_client_destroy
    linkageType: ''
    returnType: int
    signature: int imap_hibernate_client_input_line(struct connection *conn, const
      char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:344,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:347,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - debug
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 350
    functionName: imap_hibernate_client_create
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    functionUses: 1
    functionsReached:
    - i_new
    - i_stream_unix_set_read_fd
    - connection_init_server
    linkageType: ''
    returnType: void
    signature: void imap_hibernate_client_create(int fd, bool debug)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: imap_hibernate_clients_init
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void imap_hibernate_clients_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: imap_hibernate_clients_deinit
    functionSourceFile: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void imap_hibernate_clients_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - set
    - ','
    - input
    - ','
    - username
    - ','
    - password
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: oauth2_passwd_grant_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "oauth2_passwd_grant_start(set, input, username, password, callback,
      \\\n\t\t\t\t  context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - set
    - ','
    - input
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: oauth2_token_validation_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oauth2_token_validation_start(set, input, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - set
    - ','
    - input
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 120
    functionName: oauth2_introspection_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oauth2_introspection_start(set, input, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - set
    - ','
    - input
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 132
    functionName: oauth2_refresh_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: oauth2_refresh_start(set, input, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - set
    - ','
    - input
    - ','
    - resource
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 146
    functionName: oauth2_client_secret_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "oauth2_client_secret_start(set, input, resource, callback, \\\n\t\t\t\t
      \  context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - error
    argTypes:
    - struct oauth2_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 19
    functionName: test_oauth_json_valid_parsed
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-json.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_oauth_json_valid_parsed(struct oauth2_request *req ATTR_UNUSED,\n\t\t\t
      \    const char *error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:59,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:66,1
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:69,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:70,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:72,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:73,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:73,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:74,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:81,1
    - Dst: oauth2_request_parse_json
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:82,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:87,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:94,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:95,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:95,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:99,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 21
    functionDepth: 4
    functionLinenumber: 21
    functionLinenumberEnd: 102
    functionName: test_oauth2_json_valid
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-json.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - p_array_init
    - json_istream_create_object
    - strlen
    - array_get
    - pool_unref
    - pool_alloconly_create_clean
    - oauth2_request_parse_json
    - test_end
    - test_istream_create_data
    - test_assert
    - test_istream_set_size
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_oauth2_json_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:109,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - req
    - error
    argTypes:
    - struct oauth2_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 112
    functionName: test_oauth_json_has_error
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-json.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_oauth_json_has_error(struct oauth2_request *req,\n\t\t\t
      \ const char *error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:116,1
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:124,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:125,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:127,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:128,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:128,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:129,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:137,1
    - Dst: oauth2_request_parse_json
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:138,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:143,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:144,1
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:146,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:147,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:149,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:150,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:150,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:151,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:159,1
    - Dst: oauth2_request_parse_json
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:160,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:165,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:166,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:168,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 114
    functionDepth: 4
    functionLinenumber: 114
    functionLinenumberEnd: 169
    functionName: test_oauth2_json_error
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-json.c
    functionUses: 0
    functionsReached:
    - p_new
    - p_array_init
    - json_istream_create_object
    - strlen
    - pool_unref
    - pool_alloconly_create_clean
    - oauth2_request_parse_json
    - test_end
    - test_istream_create_data
    - test_assert
    - test_istream_set_size
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_oauth2_json_error(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-json.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 179
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-json.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:15,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:16,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:17,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:19,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 13
    functionDepth: 4
    functionLinenumber: 13
    functionLinenumberEnd: 21
    functionName: oauth2_request_free
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - io_remove
    - pool_unref
    - i_stream_unref
    - json_istream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void oauth2_request_free(struct oauth2_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:27,1
    - Dst: callback
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:30,1
    - Dst: oauth2_request_free
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - req
    - res
    argTypes:
    - struct oauth2_request*
    - struct oauth2_request_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 23
    functionDepth: 5
    functionLinenumber: 23
    functionLinenumberEnd: 32
    functionName: oauth2_request_callback
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - oauth2_request_free
    - i_assert
    - callback
    linkageType: ''
    returnType: void
    signature: "void oauth2_request_callback(struct oauth2_request *req,\n\t\t\tstruct
      oauth2_request_result *res)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:38,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:40,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:41,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:48,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:49,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:50,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - field
    - res
    argTypes:
    - struct oauth2_field*
    - struct oauth2_request_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 57
    functionName: oauth2_request_field_parse
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - str_to_uint32
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool oauth2_request_field_parse(const struct oauth2_field *field,\n\t\t\t
      \  struct oauth2_request_result *res)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:66,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:73,1
    - Dst: oauth2_request_field_parse
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:74,1
    - Dst: oauth2_request_callback
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:82,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - req
    - error
    argTypes:
    - struct oauth2_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 59
    functionDepth: 6
    functionLinenumber: 59
    functionLinenumberEnd: 83
    functionName: oauth2_request_continue
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - i_zero
    - oauth2_request_field_parse
    - array_foreach
    - oauth2_request_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: void oauth2_request_continue(struct oauth2_request *req, const char
      *error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - field
    argTypes:
    - char*
    - struct oauth2_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: request_field_cmp
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int request_field_cmp(const char *key, const struct oauth2_field *field)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:102,1
    - Dst: json_node_is_singular
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:103,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:104,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:105,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:107,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:108,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:109,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:110,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:119,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:124,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:125,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:127,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:132,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:133,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:134,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:138,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:143,1
    - Dst: struct oauth2_request*::json_parsed_cb
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:149,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 90
    functionDepth: 9
    functionLinenumber: 90
    functionLinenumberEnd: 150
    functionName: oauth2_request_parse_json
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 2
    functionsReached:
    - json_istream_read_next
    - p_strdup
    - json_node_is_singular
    - p_array_init
    - array_append_space
    - array_lsearch
    - json_node_get_str
    - i_stream_read_eof
    - io_remove
    - t_strdup_printf
    - struct oauth2_request*::json_parsed_cb
    - json_istream_finish
    - i_stream_unref
    - array_is_created
    - i_assert
    - json_istream_destroy
    linkageType: ''
    returnType: void
    signature: void oauth2_request_parse_json(struct oauth2_request *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_response_get_message
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:162,1
    - Dst: oauth2_request_callback
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:164,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:170,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:172,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:175,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:176,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:179,1
    - Dst: oauth2_request_parse_json
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - response
    - req
    argTypes:
    - struct http_response*
    - struct oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 152
    functionDepth: 10
    functionLinenumber: 152
    functionLinenumberEnd: 181
    functionName: oauth2_request_response
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - json_istream_create_object
    - io_add_istream
    - i_stream_ref
    - oauth2_request_parse_json
    - http_response_get_message
    - oauth2_request_callback
    - i_stream_create_from_data
    linkageType: ''
    returnType: void
    signature: "void oauth2_request_response(const struct http_response *response,\n\t\t\tstruct
      oauth2_request *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oauth2_request_callback
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 183
    functionDepth: 6
    functionLinenumber: 183
    functionLinenumberEnd: 191
    functionName: oauth2_request_fail
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - oauth2_request_callback
    linkageType: ''
    returnType: void
    signature: void oauth2_request_fail(struct oauth2_request *req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:200,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:204,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:206,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:210,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - req
    - input
    argTypes:
    - struct oauth2_request*
    - struct oauth2_request_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 215
    functionName: oauth2_request_set_headers
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - net_ipport2str
    - http_client_request_add_header
    linkageType: ''
    returnType: void
    signature: "void oauth2_request_set_headers(struct oauth2_request *req,\n\t\t\t
      \  const struct oauth2_request_input *input)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:230,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:232,1
    - Dst: oauth2_valid_token
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:239,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:241,1
    - Dst: http_client_request_url_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:245,1
    - Dst: oauth2_request_set_headers
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:248,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:250,1
    - Dst: i_stream_create_from_string
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:251,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:253,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:257,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:258,1
    - Dst: http_client_request_get_origin_url
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:261,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:263,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:265,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:268,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 10
    argNames:
    - set
    - input
    - callback
    - context
    - p
    - method
    - url
    - payload
    - add_auth_bearer
    - no_token
    argTypes:
    - struct oauth2_settings*
    - struct oauth2_request_input*
    - oauth2_request_callback_t*
    - void*
    - pool_t
    - char*
    - char*
    - string_t*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 271
    functionName: oauth2_request_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - timeout_add_short
    - http_client_request_set_payload
    - t_strdup_printf
    - pool_alloconly_create_clean
    - http_client_request_get_origin_url
    - http_client_request_url_str
    - oauth2_request_set_headers
    - http_client_request_add_header
    - oauth2_valid_token
    - http_client_request_submit
    - i_stream_create_from_string
    - i_stream_unref
    linkageType: ''
    returnType: struct oauth2_request
    signature: "struct oauth2_request *\noauth2_request_start(const struct oauth2_settings
      *set,\n\t\t     const struct oauth2_request_input *input,\n\t\t     oauth2_request_callback_t
      *callback,\n\t\t     void *context,\n\t\t     pool_t p,\n\t\t     const char
      *method,\n\t\t     const char *url,\n\t\t     const string_t *payload,\n\t\t
      \    bool add_auth_bearer,\n\t\t     bool no_token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:279,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:281,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:282,1
    - Dst: oauth2_request_start
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - set
    - input
    - callback
    - context
    argTypes:
    - struct oauth2_settings*
    - struct oauth2_request_input*
    - oauth2_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 274
    functionDepth: 3
    functionLinenumber: 274
    functionLinenumberEnd: 287
    functionName: oauth2_refresh_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - str_append
    - oauth2_request_start
    - t_str_new
    - http_url_escape_param
    linkageType: ''
    returnType: struct oauth2_request
    signature: "struct oauth2_request *\noauth2_refresh_start(const struct oauth2_settings
      *set,\n\t\t     const struct oauth2_request_input *input,\n\t\t     oauth2_request_callback_t
      *callback, void *context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:303,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:304,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:305,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:307,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:308,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:311,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:312,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:314,1
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:322,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:323,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:323,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:324,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:325,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:330,1
    - Dst: oauth2_request_start
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:333,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 4
    argNames:
    - set
    - input
    - callback
    - context
    argTypes:
    - struct oauth2_settings*
    - struct oauth2_request_input*
    - oauth2_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 290
    functionDepth: 3
    functionLinenumber: 290
    functionLinenumberEnd: 335
    functionName: oauth2_introspection_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_unreached
    - strlen
    - pool_alloconly_create_clean
    - str_append
    - oauth2_request_start
    - str_new
    - http_url_escape_param
    linkageType: ''
    returnType: struct oauth2_request
    signature: "struct oauth2_request *\noauth2_introspection_start(const struct oauth2_settings
      *set,\n\t\t\t   const struct oauth2_request_input *input,\n\t\t\t   oauth2_request_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:344,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:346,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:347,1
    - Dst: oauth2_request_start
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:349,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - set
    - input
    - callback
    - context
    argTypes:
    - struct oauth2_settings*
    - struct oauth2_request_input*
    - oauth2_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 3
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: oauth2_token_validation_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append
    - oauth2_request_start
    - http_url_escape_param
    linkageType: ''
    returnType: struct oauth2_request
    signature: "struct oauth2_request *\noauth2_token_validation_start(const struct
      oauth2_settings *set,\n\t\t\t      const struct oauth2_request_input *input,\n\t\t\t
      \     oauth2_request_callback_t *callback,\n\t\t\t      void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:360,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:361,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:364,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:365,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:366,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:367,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:369,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:370,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:373,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:374,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:377,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:378,1
    - Dst: oauth2_request_start
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 6
    argNames:
    - set
    - input
    - username
    - password
    - callback
    - context
    argTypes:
    - struct oauth2_settings*
    - struct oauth2_request_input*
    - char*
    - char*
    - oauth2_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 354
    functionDepth: 3
    functionLinenumber: 354
    functionLinenumberEnd: 384
    functionName: oauth2_passwd_grant_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create_clean
    - str_append
    - oauth2_request_start
    - str_new
    - http_url_escape_param
    linkageType: ''
    returnType: struct oauth2_request
    signature: "struct oauth2_request *\noauth2_passwd_grant_start(const struct oauth2_settings
      *set,\n\t\t\t  const struct oauth2_request_input *input,\n\t\t\t  const char
      *username, const char *password,\n\t\t\t  oauth2_request_callback_t *callback,
      void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:394,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:395,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:397,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:399,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:400,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:403,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:404,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:406,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:407,1
    - Dst: oauth2_request_start
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - set
    - input
    - resource
    - callback
    - context
    argTypes:
    - struct oauth2_settings*
    - struct oauth2_request_input*
    - char*
    - oauth2_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 412
    functionName: oauth2_client_secret_start
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create_clean
    - str_append
    - oauth2_request_start
    - str_new
    - http_url_escape_param
    linkageType: ''
    returnType: struct oauth2_request
    signature: "struct oauth2_request *\noauth2_client_secret_start(const struct oauth2_settings
      *set,\n\t\t\t  const struct oauth2_request_input *input,\n\t\t\t  const char
      *resource,\n\t\t\t  oauth2_request_callback_t *callback,\n\t\t\t  void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:422,1
    - Dst: oauth2_request_free
      Src: /src/dovecot/src/lib-oauth2/oauth2-request.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct oauth2_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 414
    functionDepth: 5
    functionLinenumber: 414
    functionLinenumberEnd: 424
    functionName: oauth2_request_abort
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-request.c
    functionUses: 0
    functionsReached:
    - oauth2_request_free
    - http_client_request_abort
    linkageType: ''
    returnType: void
    signature: void oauth2_request_abort(struct oauth2_request **_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_read_buffer
      Src: /src/dovecot/src/lib-oauth2/oauth2.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - json
    - jtree_r
    - error_r
    argTypes:
    - buffer_t*
    - struct json_tree**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 15
    functionName: oauth2_json_tree_build
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2.c
    functionUses: 0
    functionsReached:
    - json_tree_read_buffer
    linkageType: ''
    returnType: int
    signature: "int oauth2_json_tree_build(const buffer_t *json, struct json_tree
      **jtree_r,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-oauth2/oauth2.c:19,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - token
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 22
    functionName: oauth2_valid_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2.c
    functionUses: 1
    functionsReached:
    - strpbrk
    linkageType: ''
    returnType: bool
    signature: bool oauth2_valid_token(const char *token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_get_root_const
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:26,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:29,1
    - Dst: json_tree_node_is_object
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:31,1
    - Dst: json_tree_node_is_array
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:32,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - tree
    - key
    argTypes:
    - struct json_tree*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 36
    functionName: get_field_node
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - json_tree_node_get_member
    - json_tree_node_is_array
    - json_tree_get_root_const
    - json_tree_node_is_object
    linkageType: ''
    returnType: struct json_tree_node
    signature: 'struct json_tree_node *

      get_field_node(const struct json_tree *tree, const char *key)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_field_node
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:42,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:47,1
    - Dst: json_tree_node_as_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - tree
    - key
    - type_r
    argTypes:
    - struct json_tree*
    - char*
    - enum json_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: get_field
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - get_field_node
    - json_tree_node_as_str
    - json_tree_node_get_type
    linkageType: ''
    returnType: char
    signature: "char *\nget_field(const struct json_tree *tree, const char *key,\n\t
      \ enum json_type *type_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_get_root_const
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:54,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:57,1
    - Dst: json_tree_node_is_object
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:58,1
    - Dst: json_tree_node_is_array
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:60,1
    - Dst: json_tree_node_as_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:61,1
    - Dst: json_tree_node_get_child
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:65,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:66,1
    - Dst: json_tree_node_get_next
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:69,1
    - Dst: json_tree_node_is_object
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:70,1
    - Dst: json_tree_node_is_array
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:71,1
    - Dst: json_tree_node_as_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:74,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:76,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:77,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:78,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:80,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - tree
    - key
    argTypes:
    - struct json_tree*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 81
    functionName: get_field_multiple
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - json_tree_node_get_member
    - t_str_new
    - str_c
    - str_append_c
    - json_tree_get_root_const
    - str_len
    - json_tree_node_is_object
    - str_append_tabescaped
    - json_tree_node_get_next
    - json_tree_node_get_child
    - json_tree_node_as_str
    - json_tree_node_is_array
    linkageType: ''
    returnType: char
    signature: 'char *

      get_field_multiple(const struct json_tree *tree, const char *key)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_field_node
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:87,1
    - Dst: json_tree_node_get_type
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:92,1
    - Dst: json_tree_node_get_int64
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:97,1
    - Dst: json_tree_node_as_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:104,1
    - Dst: iso8601_date_parse
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:108,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:108,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - tree
    - key
    - value_r
    argTypes:
    - struct json_tree*
    - char*
    - int64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 116
    functionName: get_time_field
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - get_field_node
    - json_tree_node_get_int64
    - strlen
    - iso8601_date_parse
    - json_tree_node_as_str
    - json_tree_node_get_type
    linkageType: ''
    returnType: int
    signature: "int get_time_field(const struct json_tree *tree, const char *key,\n\t
      \      int64_t *value_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcspn
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:121,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:127,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:128,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:130,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:135,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:138,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:141,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:145,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - identifier
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 146
    functionName: escape_identifier
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strcspn
    - strlen
    - str_append
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char *escape_identifier(const char *identifier)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:157,1
    - Dst: oauth2_validation_key_cache_lookup_hmac_key
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:158,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:164,1
    - Dst: dict_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:169,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:169,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:173,1
    - Dst: t_base64_decode_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:179,1
    - Dst: oauth2_validation_key_cache_insert_hmac_key
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:184,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 6
    argNames:
    - set
    - azp
    - alg
    - key_id
    - hmac_key_r
    - error_r
    argTypes:
    - struct oauth2_settings*
    - char*
    - char*
    - char*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 188
    functionName: oauth2_lookup_hmac_key
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - dict_lookup
    - oauth2_validation_key_cache_lookup_hmac_key
    - t_strdup_printf
    - pool_datastack_create
    - t_base64_decode_str
    - t_strconcat
    - oauth2_validation_key_cache_insert_hmac_key
    linkageType: ''
    returnType: int
    signature: "int oauth2_lookup_hmac_key(const struct oauth2_settings *set, const
      char *azp,\n\t\t       const char *alg, const char *key_id,\n\t\t       const
      buffer_t **hmac_key_r, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:197,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:198,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:199,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:200,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:201,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:202,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:204,1
    - Dst: oauth2_lookup_hmac_key
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:210,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:216,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:217,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:217,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:218,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:219,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:219,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:220,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:223,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 6
    argNames:
    - set
    - azp
    - alg
    - key_id
    - blobs
    - error_r
    argTypes:
    - struct oauth2_settings*
    - char*
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 231
    functionName: oauth2_validate_hmac
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - strcmp
    - oauth2_lookup_hmac_key
    - hmac_update
    - strlen
    - hmac_final
    - t_strdup_printf
    - mem_equals_timing_safe
    - t_base64url_decode_str
    - hmac_init
    - hash_method_lookup
    linkageType: ''
    returnType: int
    signature: "int oauth2_validate_hmac(const struct oauth2_settings *set, const
      char *azp,\n\t\t     const char *alg, const char *key_id,\n\t\t     const char
      *const *blobs, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:242,1
    - Dst: oauth2_validation_key_cache_lookup_pubkey
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:243,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:248,1
    - Dst: dict_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:253,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:253,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:257,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:266,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:267,1
    - Dst: oauth2_validation_key_cache_insert_pubkey
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 6
    argNames:
    - set
    - azp
    - alg
    - key_id
    - key_r
    - error_r
    argTypes:
    - struct oauth2_settings*
    - char*
    - char*
    - char*
    - struct dcrypt_public_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 276
    functionName: oauth2_lookup_pubkey
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - dcrypt_key_load_public
    - dict_lookup
    - t_strdup_printf
    - oauth2_validation_key_cache_insert_pubkey
    - pool_datastack_create
    - t_strconcat
    - oauth2_validation_key_cache_lookup_pubkey
    linkageType: ''
    returnType: int
    signature: "int oauth2_lookup_pubkey(const struct oauth2_settings *set, const
      char *azp,\n\t\t     const char *alg, const char *key_id,\n\t\t     struct dcrypt_public_key
      **key_r, const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_is_initialized
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:287,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:292,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:295,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:298,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:303,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:306,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:307,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:309,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:311,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:314,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:319,1
    - Dst: oauth2_lookup_pubkey
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:322,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:326,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:330,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:330,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 6
    argNames:
    - set
    - azp
    - alg
    - key_id
    - blobs
    - error_r
    argTypes:
    - struct oauth2_settings*
    - char*
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 339
    functionName: oauth2_validate_rsa_ecdsa
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dcrypt_verify
    - str_begins_with
    - dcrypt_is_initialized
    - i_unreached
    - strlen
    - t_strdup_printf
    - t_base64url_decode_str
    - oauth2_lookup_pubkey
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int oauth2_validate_rsa_ecdsa(const struct oauth2_settings *set,\n\t\t\t
      \ const char *azp, const char *alg, const char *key_id,\n\t\t\t  const char
      *const *blobs, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:346,1
    - Dst: oauth2_validate_hmac
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:347,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:349,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:350,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:351,1
    - Dst: oauth2_validate_rsa_ecdsa
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:352,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:356,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 6
    argNames:
    - set
    - azp
    - alg
    - key_id
    - blobs
    - error_r
    argTypes:
    - struct oauth2_settings*
    - char*
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 341
    functionDepth: 3
    functionLinenumber: 341
    functionLinenumberEnd: 358
    functionName: oauth2_validate_signature
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - oauth2_validate_hmac
    - t_strdup_printf
    - str_begins_with
    - oauth2_validate_rsa_ecdsa
    linkageType: ''
    returnType: int
    signature: "int oauth2_validate_signature(const struct oauth2_settings *set, const
      char *azp,\n\t\t\t  const char *alg, const char *key_id,\n\t\t\t  const char
      *const *blobs, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 413
    functionName: array_foreach_modifiable
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 14
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void array_foreach_modifiable(fields, field_iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:441,1
    - Dst: get_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:442,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:451,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - tree
    - alg_r
    - kid_r
    - error_r
    argTypes:
    - struct json_tree*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 437
    functionDepth: 4
    functionLinenumber: 437
    functionLinenumberEnd: 454
    functionName: oauth2_jwt_header_process
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - t_strdup
    - t_str_ucase
    - get_field
    linkageType: ''
    returnType: int
    signature: "int oauth2_jwt_header_process(struct json_tree *tree, const char **alg_r,\n\t\t\t
      \ const char **kid_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:458,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:459,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - req
    - got
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 465
    functionName: check_scope
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - t_strsplit_spaces
    - str_array_icase_find
    linkageType: ''
    returnType: bool
    signature: bool check_scope(const char *req, const char *got)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: get_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:474,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:475,1
    - Dst: get_time_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:486,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:487,1
    - Dst: get_time_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:492,1
    - Dst: get_time_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:498,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:508,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:514,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:522,1
    - Dst: get_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:535,1
    - Dst: str_array_find
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:542,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:543,1
    - Dst: str_sanitize_utf8
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:544,1
    - Dst: get_field_multiple
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:549,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:558,1
    - Dst: str_array_find
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:559,1
    - Dst: get_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:565,1
    - Dst: check_scope
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:574,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:575,1
    - Dst: get_field
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:583,1
    - Dst: escape_identifier
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:587,1
    - Dst: oauth2_validate_signature
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:589,1
    - Dst: oauth2_jwt_copy_fields
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:592,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 74
    argCount: 7
    argNames:
    - set
    - alg
    - kid
    - fields
    - tree
    - blobs
    - error_r
    argTypes:
    - struct oauth2_settings*
    - char*
    - char*
    - ARRAY_TYPE*
    - struct json_tree*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 467
    functionDepth: 4
    functionLinenumber: 467
    functionLinenumberEnd: 594
    functionName: oauth2_jwt_body_process
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - oauth2_validate_signature
    - time
    - escape_identifier
    - t_strsplit_tabescaped
    - str_sanitize_utf8
    - t_strdup_printf
    - oauth2_jwt_copy_fields
    - get_time_field
    - check_scope
    - str_array_find
    - get_field_multiple
    - get_field
    linkageType: ''
    returnType: int
    signature: "int oauth2_jwt_body_process(const struct oauth2_settings *set,\n\t\t\tconst
      char *alg, const char *kid,\n\t\t\tARRAY_TYPE(oauth2_field) *fields,\n\t\t\tstruct
      json_tree *tree,\n\t\t\tconst char *const *blobs, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:600,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:603,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:608,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:615,1
    - Dst: oauth2_json_tree_build
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:623,1
    - Dst: oauth2_jwt_header_process
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:627,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:628,1
    - Dst: escape_identifier
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:641,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:647,1
    - Dst: oauth2_json_tree_build
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:648,1
    - Dst: oauth2_jwt_body_process
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:650,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-oauth2/oauth2-jwt.c:652,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 5
    argNames:
    - set
    - token
    - fields
    - is_jwt_r
    - error_r
    argTypes:
    - struct oauth2_settings*
    - char*
    - ARRAY_TYPE*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 596
    functionDepth: 5
    functionLinenumber: 596
    functionLinenumberEnd: 655
    functionName: oauth2_try_parse_jwt
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - oauth2_json_tree_build
    - escape_identifier
    - str_array_length
    - t_strsplit
    - t_base64url_decode_str
    - json_tree_unref
    - oauth2_jwt_body_process
    - i_assert
    - oauth2_jwt_header_process
    linkageType: ''
    returnType: int
    signature: "int oauth2_try_parse_jwt(const struct oauth2_settings *set,\n\t\t\t
      const char *token, ARRAY_TYPE(oauth2_field) *fields,\n\t\t\t bool *is_jwt_r,
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: base64url_encode_str
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: base64url_encode_str(str, dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:86,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:89,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:90,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:92,1
    - Dst: oauth2_try_parse_jwt
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - req
    - token
    - is_jwt_r
    - error_r
    argTypes:
    - struct oauth2_request*
    - char*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 81
    functionDepth: 6
    functionLinenumber: 81
    functionLinenumberEnd: 95
    functionName: parse_jwt_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_datastack_create
    - oauth2_try_parse_jwt
    - t_array_init
    linkageType: ''
    returnType: int
    signature: "int parse_jwt_token(struct oauth2_request *req, const char *token,\n\t\t\t
      \  bool *is_jwt_r, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:104,1
    - Dst: parse_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:109,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:109,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:110,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:113,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:114,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:119,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - token
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 97
    functionDepth: 7
    functionLinenumber: 97
    functionLinenumberEnd: 124
    functionName: test_jwt_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_error
    - parse_jwt_token
    - test_assert_strcmp
    - array_foreach
    - test_assert
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void test_jwt_token(const char *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:129,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:132,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:133,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:137,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:140,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:142,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:145,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - algo
    - kid
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 148
    functionName: create_jwt_token_kid
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - t_strdup_printf
    - t_buffer_create
    - base64url_encode_str
    - time
    linkageType: ''
    returnType: buffer_t
    signature: buffer_t *create_jwt_token_kid(const char *algo, const char *kid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:153,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:156,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:157,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:159,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:162,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:164,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:167,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - algo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 170
    functionName: create_jwt_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - t_strdup_printf
    - t_buffer_create
    - base64url_encode_str
    - time
    linkageType: ''
    returnType: buffer_t
    signature: buffer_t *create_jwt_token(const char *algo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:175,1
    - Dst: json_append_escaped
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:176,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:177,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:179,1
    - Dst: json_append_escaped
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:180,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - dest
    - key
    - value
    - str
    argTypes:
    - string_t*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 184
    functionName: append_key_value
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_c
    - json_append_escaped
    linkageType: ''
    returnType: void
    signature: void append_key_value(string_t *dest, const char *key, const char *value,
      bool str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - algo
    - ','
    - exp
    - ','
    - iat
    - ','
    - nbf
    - ','
    - fields
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 188
    functionName: create_jwt_token_fields
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: create_jwt_token_fields(algo, exp, iat, nbf, fields)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:193,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:194,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:195,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:197,1
    - Dst: json_append_escaped
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:198,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:199,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:201,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:202,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:202,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:203,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:205,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:206,1
    - Dst: append_key_value
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:208,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:208,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:212,1
    - Dst: append_key_value
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:213,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:213,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:217,1
    - Dst: append_key_value
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:218,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:218,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:221,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:222,1
    - Dst: append_key_value
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:223,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:225,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:226,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:226,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 6
    argNames:
    - algo
    - kid
    - exp
    - iat
    - nbf
    - fields
    argTypes:
    - char*
    - char*
    - time_t
    - time_t
    - time_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 229
    functionName: create_jwt_token_fields_kid
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - buffer_append
    - str_data
    - t_buffer_create
    - base64url_encode_str
    - json_append_escaped
    - str_append
    - append_key_value
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\ncreate_jwt_token_fields_kid(const char *algo, const char
      *kid, time_t exp, time_t iat,\n\t\t\t    time_t nbf, ARRAY_TYPE(oauth2_field)
      *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_data
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:221,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:222,1
    - Dst: append_key_value
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 3
    functionLinenumber: 220
    functionLinenumberEnd: 224
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 16
    functionsReached:
    - str_append_c
    - str_data
    - append_key_value
    linkageType: ''
    returnType: void
    signature: void array_foreach(fields, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - algo
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 232
    functionName: save_key
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: save_key(algo, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - algo
    - ','
    - name
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 233
    functionName: save_key_to
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: save_key_to(algo, name, key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:241,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:242,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:243,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:243,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:246,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - algo
    - azp
    - name
    - keydata
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 248
    functionName: save_key_azp_to
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - i_error
    - dict_transaction_commit
    - dict_set
    - dict_transaction_begin
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void save_key_azp_to(const char *algo, const char *azp,\n\t\t\t    const
      char *name, const char *keydata)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:252,1
    - Dst: t_hmac_buffer
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:253,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:255,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tokenbuf
    - key
    argTypes:
    - buffer_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 258
    functionName: sign_jwt_token_hs256
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - t_hmac_buffer
    - buffer_append
    - i_assert
    - base64url_encode
    linkageType: ''
    returnType: void
    signature: void sign_jwt_token_hs256(buffer_t *tokenbuf, buffer_t *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:262,1
    - Dst: t_hmac_buffer
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:263,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:265,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tokenbuf
    - key
    argTypes:
    - buffer_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 268
    functionName: sign_jwt_token_hs384
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - t_hmac_buffer
    - buffer_append
    - i_assert
    - base64url_encode
    linkageType: ''
    returnType: void
    signature: void sign_jwt_token_hs384(buffer_t *tokenbuf, buffer_t *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:272,1
    - Dst: t_hmac_buffer
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:273,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:275,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tokenbuf
    - key
    argTypes:
    - buffer_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 278
    functionName: sign_jwt_token_hs512
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - t_hmac_buffer
    - buffer_append
    - i_assert
    - base64url_encode
    linkageType: ''
    returnType: void
    signature: void sign_jwt_token_hs512(buffer_t *tokenbuf, buffer_t *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:282,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:284,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:285,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:286,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:287,1
    - Dst: save_key_to
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:290,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:290,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:291,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:292,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:293,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:294,1
    - Dst: save_key_to
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:297,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:297,1
    - Dst: create_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:299,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:301,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:302,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:302,1
    - Dst: create_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:304,1
    - Dst: sign_jwt_token_hs384
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:305,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:306,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:306,1
    - Dst: create_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:308,1
    - Dst: sign_jwt_token_hs512
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:309,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:310,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:310,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 280
    functionDepth: 8
    functionLinenumber: 280
    functionLinenumberEnd: 313
    functionName: test_jwt_hs_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - save_key_to
    - random_fill
    - str_c
    - create_jwt_token
    - t_buffer_create
    - test_end
    - sign_jwt_token_hs256
    - sign_jwt_token_hs512
    - buffer_append_space_unsafe
    - test_jwt_token
    - t_base64_encode
    - sign_jwt_token_hs384
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwt_hs_token(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:337,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:340,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:341,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:342,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:344,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:346,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:347,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:351,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:356,1
    - Dst: save_key_azp_to
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:360,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:361,1
    - Dst: create_jwt_token_fields_kid
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:362,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:364,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:365,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:367,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:368,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:368,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:371,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 315
    functionDepth: 8
    functionLinenumber: 315
    functionLinenumberEnd: 372
    functionName: test_jwt_token_escape
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - str_c
    - test_jwt_token
    - array_append_space
    - test_end
    - sign_jwt_token_hs256
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - save_key_azp_to
    - t_base64_encode
    - create_jwt_token_fields_kid
    - time
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwt_token_escape(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:438,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:440,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:445,1
    - Dst: parse_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:445,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:447,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 374
    functionDepth: 7
    functionLinenumber: 374
    functionLinenumberEnd: 449
    functionName: test_jwt_broken_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - parse_jwt_token
    - N_ELEMENTS
    - test_begin
    - test_assert_idx
    linkageType: ''
    returnType: void
    signature: void test_jwt_broken_token(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:456,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:457,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:519,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:522,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:524,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:531,1
    - Dst: create_jwt_token_fields
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:539,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:542,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:548,1
    - Dst: parse_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:548,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:548,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:550,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:552,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:552,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 454
    functionDepth: 7
    functionLinenumber: 454
    functionLinenumberEnd: 555
    functionName: test_jwt_bad_valid_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - str_c
    - create_jwt_token_fields
    - array_append_space
    - test_assert_idx
    - strstr
    - parse_jwt_token
    - sign_jwt_token_hs256
    - t_array_init
    - ARRAY_TYPE
    - test_assert
    - time
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwt_bad_valid_token(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:562,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:563,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:598,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:600,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:602,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:604,1
    - Dst: create_jwt_token_fields
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:610,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:613,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:619,1
    - Dst: parse_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:619,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:619,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:621,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:622,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:624,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 560
    functionDepth: 7
    functionLinenumber: 560
    functionLinenumberEnd: 625
    functionName: test_jwt_valid_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - str_c
    - create_jwt_token_fields
    - array_append_space
    - i_error
    - test_assert_idx
    - parse_jwt_token
    - sign_jwt_token_hs256
    - t_array_init
    - ARRAY_TYPE
    - time
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwt_valid_token(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:632,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:635,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:636,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:640,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:645,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:648,1
    - Dst: gmtime_r
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:650,1
    - Dst: iso8601_date_create_tm
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:651,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:652,1
    - Dst: gmtime_r
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:654,1
    - Dst: iso8601_date_create_tm
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:655,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:656,1
    - Dst: gmtime_r
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:658,1
    - Dst: iso8601_date_create_tm
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:659,1
    - Dst: create_jwt_token_fields
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:660,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:661,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:662,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:662,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:664,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:665,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:666,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:667,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:667,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:673,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:674,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:674,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 630
    functionDepth: 8
    functionLinenumber: 630
    functionLinenumberEnd: 677
    functionName: test_jwt_dates
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - str_c
    - create_jwt_token_fields
    - array_append_space
    - str_append_c
    - t_strdup_printf
    - gmtime_r
    - test_end
    - iso8601_date_create_tm
    - sign_jwt_token_hs256
    - t_array_init
    - str_truncate
    - ARRAY_TYPE
    - test_jwt_token
    - base64url_encode_str
    - time
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwt_dates(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:681,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:687,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:688,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:689,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:690,1
    - Dst: save_key_to
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:692,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:692,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:693,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:694,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:695,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:696,1
    - Dst: save_key_to
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:697,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:697,1
    - Dst: create_jwt_token_kid
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:700,1
    - Dst: create_jwt_token_kid
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:701,1
    - Dst: create_jwt_token_kid
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:702,1
    - Dst: create_jwt_token_kid
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:703,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:705,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:706,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:707,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:708,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:710,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:710,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:711,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:711,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:713,1
    - Dst: parse_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:713,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:713,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:714,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:715,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:716,1
    - Dst: parse_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:716,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:716,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:717,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:718,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 679
    functionDepth: 8
    functionLinenumber: 679
    functionLinenumberEnd: 721
    functionName: test_jwt_key_files
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - save_key_to
    - random_fill
    - str_c
    - create_jwt_token_kid
    - t_buffer_create
    - parse_jwt_token
    - test_assert_strcmp
    - test_end
    - sign_jwt_token_hs256
    - buffer_append_space_unsafe
    - test_assert
    - test_jwt_token
    - t_base64_encode
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwt_key_files(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:725,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:727,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:728,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:729,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:730,1
    - Dst: save_key_to
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:732,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:732,1
    - Dst: create_jwt_token_kid
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:734,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:736,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:737,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:737,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 723
    functionDepth: 8
    functionLinenumber: 723
    functionLinenumberEnd: 739
    functionName: test_jwt_kid_escape
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - save_key_to
    - random_fill
    - str_c
    - create_jwt_token_kid
    - t_buffer_create
    - test_end
    - sign_jwt_token_hs256
    - buffer_append_space_unsafe
    - test_jwt_token
    - t_base64_encode
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwt_kid_escape(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:743,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:745,1
    - Dst: time
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:748,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:753,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:754,1
    - Dst: base64url_encode_str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:755,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:755,1
    - Dst: sign_jwt_token_hs256
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:774,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:777,1
    - Dst: parse_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:777,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:777,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:778,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:782,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:783,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:784,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:803,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:804,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:804,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:805,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:806,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:809,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:809,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 741
    functionDepth: 7
    functionLinenumber: 741
    functionLinenumberEnd: 811
    functionName: test_jwt_nested_fields
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - i_assert
    - str_append_c
    - t_strdup_printf
    - parse_jwt_token
    - array_foreach
    - test_end
    - sign_jwt_token_hs256
    - test_assert
    - test_assert_ucmp
    - base64url_encode_str
    - test_assert_strcmp_idx
    - time
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwt_nested_fields(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:820,1
    - Dst: oauth2_validation_key_cache_evict
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:822,1
    - Dst: save_key
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:823,1
    - Dst: create_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:825,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:828,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:830,1
    - Dst: dcrypt_sign
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:832,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:835,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:836,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:838,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:841,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:842,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:845,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:845,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:847,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 813
    functionDepth: 8
    functionLinenumber: 813
    functionLinenumberEnd: 848
    functionName: test_jwt_rs_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - str_c
    - i_error
    - save_key
    - test_begin
    - t_buffer_create
    - lib_exit
    - dcrypt_key_unref_private
    - base64url_encode
    - test_end
    - test_jwt_token
    - dcrypt_key_load_private
    - oauth2_validation_key_cache_evict
    - dcrypt_sign
    - create_jwt_token
    linkageType: ''
    returnType: void
    signature: void test_jwt_rs_token(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:857,1
    - Dst: oauth2_validation_key_cache_evict
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:859,1
    - Dst: save_key
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:860,1
    - Dst: create_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:862,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:865,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:867,1
    - Dst: dcrypt_sign
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:869,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:872,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:873,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:875,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:878,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:879,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:882,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:882,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:884,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 850
    functionDepth: 8
    functionLinenumber: 850
    functionLinenumberEnd: 885
    functionName: test_jwt_ps_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - str_c
    - i_error
    - save_key
    - test_begin
    - t_buffer_create
    - lib_exit
    - dcrypt_key_unref_private
    - base64url_encode
    - test_end
    - test_jwt_token
    - dcrypt_key_load_private
    - oauth2_validation_key_cache_evict
    - dcrypt_sign
    - create_jwt_token
    linkageType: ''
    returnType: void
    signature: void test_jwt_ps_token(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:894,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:896,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:897,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:899,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:900,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:903,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:904,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:906,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:907,1
    - Dst: oauth2_validation_key_cache_evict
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:909,1
    - Dst: save_key
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:910,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:910,1
    - Dst: create_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:912,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:915,1
    - Dst: dcrypt_sign
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:916,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:919,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:920,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:922,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:925,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:926,1
    - Dst: test_jwt_token
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:928,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:928,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:930,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 887
    functionDepth: 8
    functionLinenumber: 887
    functionLinenumberEnd: 931
    functionName: test_jwt_ec_token
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - buffer_append
    - i_error
    - save_key
    - lib_exit
    - dcrypt_keypair_generate
    - t_buffer_create
    - dcrypt_key_store_public
    - base64url_encode
    - test_end
    - test_jwt_token
    - create_jwt_token
    - oauth2_validation_key_cache_evict
    - dcrypt_sign
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_jwt_ec_token(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:939,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:945,1
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:946,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:947,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:948,1
    - Dst: dcrypt_openssl_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:949,1
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:950,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:951,1
    - Dst: oauth2_validation_key_cache_init
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:955,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:958,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:959,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:960,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:961,1
    - Dst: save_key
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:964,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:964,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:965,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 966
    functionName: test_do_init
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - str_c
    - random_fill
    - dict_driver_register
    - settings_simple_deinit
    - i_error
    - dcrypt_initialize
    - save_key
    - buffer_create_dynamic
    - i_fatal
    - dcrypt_openssl_init
    - oauth2_validation_key_cache_init
    - settings_simple_init
    - i_unlink_if_exists
    - buffer_append_space_unsafe
    - t_base64_encode
    - dict_init_auto
    linkageType: ''
    returnType: void
    signature: void test_do_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_deinit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:970,1
    - Dst: dict_driver_unregister
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:971,1
    - Dst: oauth2_validation_key_cache_deinit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:972,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:973,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:974,1
    - Dst: dcrypt_deinitialize
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:975,1
    - Dst: dcrypt_openssl_deinit
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 977
    functionName: test_do_deinit
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_deinit
    - oauth2_validation_key_cache_deinit
    - i_unlink
    - dict_driver_unregister
    - dict_deinit
    - dcrypt_deinitialize
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void test_do_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c:999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1001
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:30,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:33,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 38
    functionName: oauth2_validation_key_cache_init
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_new
    - hash_table_create
    linkageType: ''
    returnType: struct oauth2_validation_key_cache
    signature: struct oauth2_validation_key_cache *oauth2_validation_key_cache_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:52,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:55,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _cache
    argTypes:
    - struct oauth2_validation_key_cache**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 57
    functionName: oauth2_validation_key_cache_deinit
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    functionUses: 1
    functionsReached:
    - dcrypt_key_unref_public
    - pool_unref
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: "void oauth2_validation_key_cache_deinit(\n\tstruct oauth2_validation_key_cache
      **_cache)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - cache
    - key_id
    - pubkey_r
    argTypes:
    - struct oauth2_validation_key_cache*
    - char*
    - struct dcrypt_public_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 73
    functionName: oauth2_validation_key_cache_lookup_pubkey
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    functionUses: 1
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: int
    signature: "int oauth2_validation_key_cache_lookup_pubkey(\n\tstruct oauth2_validation_key_cache
      *cache, const char *key_id,\n\tstruct dcrypt_public_key **pubkey_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - cache
    - key_id
    - hmac_key_r
    argTypes:
    - struct oauth2_validation_key_cache*
    - char*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 90
    functionName: oauth2_validation_key_cache_lookup_hmac_key
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    functionUses: 1
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: int
    signature: "int oauth2_validation_key_cache_lookup_hmac_key(\n\tstruct oauth2_validation_key_cache
      *cache, const char *key_id,\n\tconst buffer_t **hmac_key_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:100,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:102,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:105,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:108,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:109,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:111,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - cache
    - key_id
    - pubkey
    argTypes:
    - struct oauth2_validation_key_cache*
    - char*
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 113
    functionName: oauth2_validation_key_cache_insert_pubkey
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_new
    - buffer_set_used_size
    - DLLIST_PREPEND
    - dcrypt_key_unref_public
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void oauth2_validation_key_cache_insert_pubkey(\n\tstruct oauth2_validation_key_cache
      *cache, const char *key_id,\n\tstruct dcrypt_public_key *pubkey)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:123,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:125,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:127,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:130,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:132,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:135,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:136,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:137,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:138,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:139,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:140,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - cache
    - key_id
    - hmac_key
    argTypes:
    - struct oauth2_validation_key_cache*
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 141
    functionName: oauth2_validation_key_cache_insert_hmac_key
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - p_strdup
    - p_new
    - buffer_create_dynamic
    - buffer_set_used_size
    - DLLIST_PREPEND
    - dcrypt_key_unref_public
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void oauth2_validation_key_cache_insert_hmac_key(\n\tstruct oauth2_validation_key_cache
      *cache, const char *key_id,\n\tconst buffer_t *hmac_key)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:150,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:154,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:155,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - cache
    - key_id
    argTypes:
    - struct oauth2_validation_key_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 158
    functionName: oauth2_validation_key_cache_evict
    functionSourceFile: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    functionUses: 3
    functionsReached:
    - dcrypt_key_unref_public
    - hash_table_lookup
    - DLLIST_REMOVE
    - hash_table_remove
    linkageType: ''
    returnType: int
    signature: "int oauth2_validation_key_cache_evict(struct oauth2_validation_key_cache
      *cache,\n\t\t\t\t      const char *key_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/indexer/indexer-client.c:46,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/indexer/indexer-client.c:50,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/indexer/indexer-client.c:56,1
    - Dst: i_new
      Src: /src/dovecot/src/indexer/indexer-client.c:64,1
    - Dst: indexer_client_ref
      Src: /src/dovecot/src/indexer/indexer-client.c:67,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/indexer-client.c:70,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/indexer/indexer-client.c:72,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/indexer-client.c:72,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 4
    argNames:
    - client
    - append
    - args
    - error_r
    argTypes:
    - struct indexer_client*
    - bool
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 74
    functionName: indexer_client_request_queue
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - indexer_queue_append
    - str_array_length
    - t_strdup_printf
    - i_new
    - str_to_uint
    - o_stream_nsend_str
    - indexer_client_ref
    linkageType: ''
    returnType: int
    signature: "int indexer_client_request_queue(struct indexer_client *client, bool
      append,\n\t\t\t     const char *const *args, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/indexer/indexer-client.c:84,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/indexer/indexer-client.c:88,1
    - Dst: i_new
      Src: /src/dovecot/src/indexer/indexer-client.c:94,1
    - Dst: indexer_client_ref
      Src: /src/dovecot/src/indexer/indexer-client.c:97,1
    - Dst: indexer_queue_append_optimize
      Src: /src/dovecot/src/indexer/indexer-client.c:100,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/indexer/indexer-client.c:101,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/indexer-client.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct indexer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 103
    functionName: indexer_client_request_optimize
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - str_array_length
    - t_strdup_printf
    - indexer_queue_append_optimize
    - i_new
    - str_to_uint
    - o_stream_nsend_str
    - indexer_client_ref
    linkageType: ''
    returnType: int
    signature: "int indexer_client_request_optimize(struct indexer_client *client,\n\t\t\t\tconst
      char *const *args, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/indexer/indexer-client.c:112,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/indexer/indexer-client.c:116,1
    - Dst: wildcard_is_literal
      Src: /src/dovecot/src/indexer/indexer-client.c:123,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/indexer-client.c:124,1
    - Dst: indexer_queue_iter_init
      Src: /src/dovecot/src/indexer/indexer-client.c:128,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/indexer-client.c:129,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/indexer/indexer-client.c:130,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/indexer-client.c:131,1
    - Dst: indexer_queue_iter_deinit
      Src: /src/dovecot/src/indexer/indexer-client.c:135,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/indexer/indexer-client.c:137,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/indexer-client.c:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct indexer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 139
    functionName: indexer_client_request_remove
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - indexer_queue_iter_deinit
    - indexer_queue_iter_init
    - wildcard_is_literal
    - str_array_length
    - t_strdup_printf
    - indexer_queue_cancel
    - indexer_queue_iter_next
    - wildcard_match
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: "int indexer_client_request_remove(struct indexer_client *client,\n\t\t\t
      \     const char *const *args, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/indexer/indexer-client.c:145,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:146,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/indexer/indexer-client.c:147,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:148,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/indexer/indexer-client.c:150,1
    - Dst: str_printfa
      Src: /src/dovecot/src/indexer/indexer-client.c:151,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:154,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:157,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:160,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:162,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:164,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:166,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - str
    - request
    argTypes:
    - string_t*
    - struct indexer_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 167
    functionName: indexer_client_request_list_write
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - str_append_tabescaped
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void indexer_client_request_list_write(string_t *str,\n\t\t\t\t  struct
      indexer_request *request)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/indexer/indexer-client.c:178,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/indexer/indexer-client.c:182,1
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-client.c:186,1
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-client.c:188,1
    - Dst: t_str_new
      Src: /src/dovecot/src/indexer/indexer-client.c:196,1
    - Dst: indexer_queue_iter_init
      Src: /src/dovecot/src/indexer/indexer-client.c:199,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/indexer-client.c:200,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/indexer/indexer-client.c:201,1
    - Dst: str_truncate
      Src: /src/dovecot/src/indexer/indexer-client.c:204,1
    - Dst: str_printfa
      Src: /src/dovecot/src/indexer/indexer-client.c:205,1
    - Dst: indexer_client_request_list_write
      Src: /src/dovecot/src/indexer/indexer-client.c:206,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/indexer-client.c:207,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/indexer/indexer-client.c:208,1
    - Dst: str_data
      Src: /src/dovecot/src/indexer/indexer-client.c:208,1
    - Dst: str_len
      Src: /src/dovecot/src/indexer/indexer-client.c:208,1
    - Dst: indexer_queue_iter_deinit
      Src: /src/dovecot/src/indexer/indexer-client.c:210,1
    - Dst: str_truncate
      Src: /src/dovecot/src/indexer/indexer-client.c:212,1
    - Dst: str_printfa
      Src: /src/dovecot/src/indexer/indexer-client.c:213,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/indexer/indexer-client.c:214,1
    - Dst: str_data
      Src: /src/dovecot/src/indexer/indexer-client.c:214,1
    - Dst: str_len
      Src: /src/dovecot/src/indexer/indexer-client.c:214,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct indexer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 216
    functionName: indexer_client_request_list
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_new
    - str_printfa
    - str_append_c
    - indexer_queue_iter_deinit
    - str_data
    - indexer_queue_iter_init
    - str_len
    - str_array_length
    - o_stream_nsend
    - indexer_queue_iter_next
    - str_truncate
    - wildcard_match
    - indexer_client_request_list_write
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int indexer_client_request_list(struct indexer_client *client,\n\t\t\t
      \   const char *const *args, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-client.c:226,1
    - Dst: indexer_client_request_queue
      Src: /src/dovecot/src/indexer/indexer-client.c:227,1
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-client.c:228,1
    - Dst: indexer_client_request_queue
      Src: /src/dovecot/src/indexer/indexer-client.c:229,1
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-client.c:230,1
    - Dst: indexer_client_request_optimize
      Src: /src/dovecot/src/indexer/indexer-client.c:231,1
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-client.c:232,1
    - Dst: indexer_client_request_remove
      Src: /src/dovecot/src/indexer/indexer-client.c:233,1
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-client.c:234,1
    - Dst: indexer_client_request_list
      Src: /src/dovecot/src/indexer/indexer-client.c:235,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/indexer/indexer-client.c:237,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct indexer_client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 240
    functionName: indexer_client_request
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strconcat
    - indexer_client_request_list
    - indexer_client_request_optimize
    - indexer_client_request_remove
    - indexer_client_request_queue
    linkageType: ''
    returnType: int
    signature: "int indexer_client_request(struct indexer_client *client,\n\t\t       const
      char *const *args, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/indexer/indexer-client.c:246,1
    - Dst: indexer_client_request
      Src: /src/dovecot/src/indexer/indexer-client.c:249,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/indexer-client.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 242
    functionDepth: 4
    functionLinenumber: 242
    functionLinenumberEnd: 254
    functionName: indexer_client_input_args
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - indexer_client_request
    - container_of
    - e_error
    linkageType: ''
    returnType: int
    signature: int indexer_client_input_args(struct connection *conn, const char *const
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/indexer-client.c:262,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/indexer/indexer-client.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - status
    - context
    argTypes:
    - struct indexer_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 267
    functionName: indexer_client_status_callback
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void indexer_client_status_callback(const struct indexer_status *status,\n\t\t\t\t
      \   void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/indexer/indexer-client.c:299,1
    - Dst: i_new
      Src: /src/dovecot/src/indexer/indexer-client.c:303,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/indexer/indexer-client.c:306,1
    - Dst: indexer_refresh_proctitle
      Src: /src/dovecot/src/indexer/indexer-client.c:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - queue
    argTypes:
    - struct master_service_connection*
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 309
    functionName: indexer_client_create
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - connection_list_init
    - indexer_refresh_proctitle
    - i_new
    - connection_init_server
    linkageType: ''
    returnType: void
    signature: "void indexer_client_create(struct master_service_connection *conn,\n\t\t\t
      \  struct indexer_queue *queue)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/indexer/indexer-client.c:314,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/indexer/indexer-client.c:315,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/indexer/indexer-client.c:316,1
    - Dst: indexer_client_unref
      Src: /src/dovecot/src/indexer/indexer-client.c:317,1
    - Dst: indexer_refresh_proctitle
      Src: /src/dovecot/src/indexer/indexer-client.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 319
    functionName: indexer_client_destroy
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - indexer_client_unref
    - container_of
    - indexer_refresh_proctitle
    - connection_deinit
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void indexer_client_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-client.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct indexer_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: indexer_client_ref
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void indexer_client_ref(struct indexer_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-client.c:330,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/indexer-client.c:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct indexer_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 335
    functionName: indexer_client_unref
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void indexer_client_unref(struct indexer_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 342
    functionName: indexer_clients_get_count
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int indexer_clients_get_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/indexer/indexer-client.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 347
    functionName: indexer_clients_destroy_all
    functionSourceFile: /src/dovecot/src/indexer/indexer-client.c
    functionUses: 0
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void indexer_clients_destroy_all(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/indexer/indexer-worker.c:15,1
    - Dst: master_connection_create
      Src: /src/dovecot/src/indexer/indexer-worker.c:17,1
    - Dst: i_error
      Src: /src/dovecot/src/indexer/indexer-worker.c:18,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/indexer/indexer-worker.c:19,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/indexer/indexer-worker.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 22
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/indexer/indexer-worker.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_close_fd
    - master_connection_create
    - master_service_client_connection_accept
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/indexer/indexer-worker.c:29,1
    - Dst: i_fatal
      Src: /src/dovecot/src/indexer/indexer-worker.c:30,1
    - Dst: restrict_access_get_env
      Src: /src/dovecot/src/indexer/indexer-worker.c:33,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/indexer/indexer-worker.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 35
    functionName: drop_privileges
    functionSourceFile: /src/dovecot/src/indexer/indexer-worker.c
    functionUses: 0
    functionsReached:
    - restrict_access_by_env
    - restrict_access_get_env
    - i_fatal
    - master_service_settings_read_simple
    linkageType: ''
    returnType: void
    signature: void drop_privileges(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/indexer/indexer-worker.c:46,1
    - Dst: master_getopt
      Src: /src/dovecot/src/indexer/indexer-worker.c:48,1
    - Dst: drop_privileges
      Src: /src/dovecot/src/indexer/indexer-worker.c:59,1
    - Dst: master_service_init_log_with_pid
      Src: /src/dovecot/src/indexer/indexer-worker.c:60,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/indexer/indexer-worker.c:62,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/indexer/indexer-worker.c:64,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/indexer/indexer-worker.c:65,1
    - Dst: master_service_run
      Src: /src/dovecot/src/indexer/indexer-worker.c:67,1
    - Dst: master_connections_destroy
      Src: /src/dovecot/src/indexer/indexer-worker.c:69,1
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/indexer/indexer-worker.c:70,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/indexer/indexer-worker.c:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 73
    functionName: main
    functionSourceFile: /src/dovecot/src/indexer/indexer-worker.c
    functionUses: 0
    functionsReached:
    - master_service_run
    - drop_privileges
    - master_service_init_log_with_pid
    - mail_storage_service_deinit
    - master_service_init_finish
    - mail_storage_service_init
    - restrict_access_allow_coredumps
    - master_connections_destroy
    - master_getopt
    - master_service_init
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_hash
      Src: /src/dovecot/src/indexer/indexer-queue.c:31,1
    - Dst: str_hash
      Src: /src/dovecot/src/indexer/indexer-queue.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct indexer_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: indexer_request_hash
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int indexer_request_hash(const struct indexer_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-queue.c:37,1
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/indexer-queue.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct indexer_request*
    - struct indexer_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: indexer_request_cmp
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int indexer_request_cmp(const struct indexer_request *r1,\n\t\t\t
      \      const struct indexer_request *r2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/indexer/indexer-queue.c:46,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/indexer/indexer-queue.c:48,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/indexer/indexer-queue.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - callback
    argTypes:
    - indexer_queue_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: indexer_queue_init
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - hash_table_create
    - i_new
    linkageType: ''
    returnType: struct indexer_queue
    signature: 'struct indexer_queue *

      indexer_queue_init(indexer_queue_callback_t *callback)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-queue.c:60,1
    - Dst: indexer_queue_is_empty
      Src: /src/dovecot/src/indexer/indexer-queue.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-queue.c:61,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/indexer/indexer-queue.c:61,1
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-queue.c:62,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/indexer/indexer-queue.c:62,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/indexer/indexer-queue.c:64,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/indexer/indexer-queue.c:65,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/indexer-queue.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - _queue
    argTypes:
    - struct indexer_queue**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: indexer_queue_deinit
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - indexer_queue_is_empty
    - hash_table_count
    - i_assert
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void indexer_queue_deinit(struct indexer_queue **_queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: indexer_queue_set_listen_callback
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_set_listen_callback(struct indexer_queue *queue,\n\t\t\t\t
      \      void (*callback)(struct indexer_queue *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/indexer/indexer-queue.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - queue
    - username
    - mailbox
    argTypes:
    - struct indexer_queue*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: indexer_queue_lookup
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: struct indexer_request
    signature: "struct indexer_request *\nindexer_queue_lookup(struct indexer_queue
      *queue,\n\t\t     const char *username, const char *mailbox)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/indexer/indexer-queue.c:91,1
    - Dst: i_array_init
      Src: /src/dovecot/src/indexer/indexer-queue.c:92,1
    - Dst: array_push_back
      Src: /src/dovecot/src/indexer/indexer-queue.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - request
    - context
    argTypes:
    - struct indexer_request*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 94
    functionName: request_add_context
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void request_add_context(struct indexer_request *request, void *context)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: indexer_queue_lookup
      Src: /src/dovecot/src/indexer/indexer-queue.c:105,1
    - Dst: request_add_context
      Src: /src/dovecot/src/indexer/indexer-queue.c:109,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/indexer/indexer-queue.c:121,1
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/indexer/indexer-queue.c:122,1
    - Dst: i_new
      Src: /src/dovecot/src/indexer/indexer-queue.c:128,1
    - Dst: i_strdup
      Src: /src/dovecot/src/indexer/indexer-queue.c:129,1
    - Dst: i_strdup
      Src: /src/dovecot/src/indexer/indexer-queue.c:130,1
    - Dst: i_strdup
      Src: /src/dovecot/src/indexer/indexer-queue.c:131,1
    - Dst: request_add_context
      Src: /src/dovecot/src/indexer/indexer-queue.c:133,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/indexer/indexer-queue.c:134,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/indexer/indexer-queue.c:136,1
    - Dst: i_strdup
      Src: /src/dovecot/src/indexer/indexer-queue.c:138,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/indexer/indexer-queue.c:139,1
    - Dst: DLLIST_PREPEND_FULL
      Src: /src/dovecot/src/indexer/indexer-queue.c:141,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/indexer/indexer-queue.c:143,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/indexer/indexer-queue.c:147,1
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/indexer/indexer-queue.c:149,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 7
    argNames:
    - queue
    - append
    - username
    - mailbox
    - session_id
    - max_recent_msgs
    - context
    argTypes:
    - struct indexer_queue*
    - bool
    - char*
    - char*
    - char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 151
    functionName: indexer_queue_append_request
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - hash_table_update
    - request_add_context
    - DLLIST2_APPEND
    - DLLIST_PREPEND_FULL
    - DLLIST2_REMOVE
    - i_strdup
    - indexer_queue_lookup
    - i_new
    - hash_table_lookup_full
    - hash_table_insert
    - DLLIST2_PREPEND
    linkageType: ''
    returnType: struct indexer_request
    signature: "struct indexer_request *\nindexer_queue_append_request(struct indexer_queue
      *queue, bool append,\n\t\t\t     const char *username, const char *mailbox,\n\t\t\t
      \    const char *session_id,\n\t\t\t     unsigned int max_recent_msgs, void
      *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct indexer_queue*::listen_callback
      Src: /src/dovecot/src/indexer/indexer-queue.c:156,1
    - Dst: indexer_refresh_proctitle
      Src: /src/dovecot/src/indexer/indexer-queue.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 158
    functionName: indexer_queue_append_finish
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - indexer_refresh_proctitle
    - struct indexer_queue*::listen_callback
    linkageType: ''
    returnType: void
    signature: void indexer_queue_append_finish(struct indexer_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: indexer_queue_append_request
      Src: /src/dovecot/src/indexer/indexer-queue.c:167,1
    - Dst: indexer_queue_append_finish
      Src: /src/dovecot/src/indexer/indexer-queue.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - queue
    - append
    - username
    - mailbox
    - session_id
    - max_recent_msgs
    - context
    argTypes:
    - struct indexer_queue*
    - bool
    - char*
    - char*
    - char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 172
    functionName: indexer_queue_append
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 1
    functionsReached:
    - indexer_queue_append_request
    - indexer_queue_append_finish
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_append(struct indexer_queue *queue, bool append,\n\t\t\t
      \ const char *username, const char *mailbox,\n\t\t\t  const char *session_id,
      unsigned int max_recent_msgs,\n\t\t\t  void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: indexer_queue_append_request
      Src: /src/dovecot/src/indexer/indexer-queue.c:180,1
    - Dst: indexer_queue_append_finish
      Src: /src/dovecot/src/indexer/indexer-queue.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - queue
    - username
    - mailbox
    - context
    argTypes:
    - struct indexer_queue*
    - char*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 174
    functionDepth: 3
    functionLinenumber: 174
    functionLinenumberEnd: 184
    functionName: indexer_queue_append_optimize
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 1
    functionsReached:
    - indexer_queue_append_request
    - indexer_queue_append_finish
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_append_optimize(struct indexer_queue *queue,\n\t\t\t\t
      \  const char *username, const char *mailbox,\n\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: indexer_queue_request_peek
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct indexer_request
    signature: struct indexer_request *indexer_queue_request_peek(struct indexer_queue
      *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-queue.c:195,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/indexer/indexer-queue.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 198
    functionName: indexer_queue_request_remove
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    - i_assert
    linkageType: ''
    returnType: void
    signature: void indexer_queue_request_remove(struct indexer_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_elem
      Src: /src/dovecot/src/indexer/indexer-queue.c:208,1
    - Dst: struct indexer_queue*::callback
      Src: /src/dovecot/src/indexer/indexer-queue.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - queue
    - request
    - status
    argTypes:
    - struct indexer_queue*
    - struct indexer_request*
    - struct indexer_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 211
    functionName: indexer_queue_request_status_int
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - struct indexer_queue*::callback
    - array_idx_elem
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_request_status_int(struct indexer_queue *queue,\n\t\t\t\t\t
      \    struct indexer_request *request,\n\t\t\t\t\t     const struct indexer_status
      *status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-queue.c:217,1
    - Dst: indexer_queue_request_status_int
      Src: /src/dovecot/src/indexer/indexer-queue.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - queue
    - request
    - status
    argTypes:
    - struct indexer_queue*
    - struct indexer_request*
    - struct indexer_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 219
    functionName: indexer_queue_request_status
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - i_assert
    - indexer_queue_request_status_int
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_request_status(struct indexer_queue *queue,\n\t\t\t\t
      \ struct indexer_request *request,\n\t\t\t\t  const struct indexer_status *status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/indexer-queue.c:225,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/indexer/indexer-queue.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 227
    functionName: indexer_queue_move_head_to_tail
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - indexer_queue_request_remove
    - DLLIST2_APPEND
    linkageType: ''
    returnType: void
    signature: void indexer_queue_move_head_to_tail(struct indexer_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/indexer/indexer-queue.c:233,1
    - Dst: array_count
      Src: /src/dovecot/src/indexer/indexer-queue.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct indexer_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: indexer_queue_request_work
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    linkageType: ''
    returnType: void
    signature: void indexer_queue_request_work(struct indexer_request *request)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-queue.c:246,1
    - Dst: indexer_queue_request_status_int
      Src: /src/dovecot/src/indexer/indexer-queue.c:248,1
    - Dst: i_assert
      Src: /src/dovecot/src/indexer/indexer-queue.c:251,1
    - Dst: array_delete
      Src: /src/dovecot/src/indexer/indexer-queue.c:254,1
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/indexer/indexer-queue.c:258,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/indexer/indexer-queue.c:260,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/indexer/indexer-queue.c:266,1
    - Dst: i_unreached
      Src: /src/dovecot/src/indexer/indexer-queue.c:268,1
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/indexer/indexer-queue.c:269,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/indexer/indexer-queue.c:271,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/indexer/indexer-queue.c:273,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/indexer-queue.c:274,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/indexer/indexer-queue.c:276,1
    - Dst: array_is_created
      Src: /src/dovecot/src/indexer/indexer-queue.c:277,1
    - Dst: array_free
      Src: /src/dovecot/src/indexer/indexer-queue.c:278,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/indexer-queue.c:279,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/indexer-queue.c:280,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/indexer-queue.c:281,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/indexer-queue.c:282,1
    - Dst: indexer_refresh_proctitle
      Src: /src/dovecot/src/indexer/indexer-queue.c:284,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 3
    argNames:
    - queue
    - _request
    - state
    argTypes:
    - struct indexer_queue*
    - struct indexer_request**
    - enum indexer_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 285
    functionName: indexer_queue_request_finish
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - array_delete
    - hash_table_update
    - DLLIST2_APPEND
    - i_unreached
    - indexer_queue_request_status_int
    - hash_table_remove
    - DLLIST_REMOVE_FULL
    - indexer_refresh_proctitle
    - hash_table_lookup_full
    - array_free
    - array_is_created
    - i_assert
    - i_free
    - DLLIST2_PREPEND
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_request_finish(struct indexer_queue *queue,\n\t\t\t\t
      \ struct indexer_request **_request,\n\t\t\t\t  enum indexer_state state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/indexer/indexer-queue.c:295,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/indexer-queue.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - queue
    - _request
    argTypes:
    - struct indexer_queue*
    - struct indexer_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 287
    functionDepth: 3
    functionLinenumber: 287
    functionLinenumberEnd: 297
    functionName: indexer_queue_request_cancel
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    - indexer_queue_request_finish
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_request_cancel(struct indexer_queue *queue,\n\t\t\t
      \    struct indexer_request **_request)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_is_literal
      Src: /src/dovecot/src/indexer/indexer-queue.c:304,1
    - Dst: indexer_queue_lookup
      Src: /src/dovecot/src/indexer/indexer-queue.c:307,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/indexer/indexer-queue.c:309,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/indexer/indexer-queue.c:314,1
    - Dst: indexer_queue_request_cancel
      Src: /src/dovecot/src/indexer/indexer-queue.c:322,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 3
    argNames:
    - queue
    - username
    - mailbox_mask
    argTypes:
    - struct indexer_queue*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 299
    functionDepth: 4
    functionLinenumber: 299
    functionLinenumberEnd: 328
    functionName: indexer_queue_cancel
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 1
    functionsReached:
    - wildcard_is_literal
    - indexer_queue_lookup
    - wildcard_match
    - indexer_queue_request_cancel
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_cancel(struct indexer_queue *queue, const char
      *username,\n\t\t\t  const char *mailbox_mask)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/indexer/indexer-queue.c:338,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/indexer/indexer-queue.c:339,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/indexer/indexer-queue.c:341,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/indexer-queue.c:343,1
    - Dst: indexer_queue_request_cancel
      Src: /src/dovecot/src/indexer/indexer-queue.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 330
    functionDepth: 4
    functionLinenumber: 330
    functionLinenumberEnd: 345
    functionName: indexer_queue_cancel_all
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - indexer_queue_request_cancel
    - indexer_queue_request_peek
    linkageType: ''
    returnType: void
    signature: void indexer_queue_cancel_all(struct indexer_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: indexer_queue_is_empty
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool indexer_queue_is_empty(struct indexer_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_count
      Src: /src/dovecot/src/indexer/indexer-queue.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 355
    functionName: indexer_queue_count
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 0
    functionsReached:
    - hash_table_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int indexer_queue_count(struct indexer_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/indexer/indexer-queue.c:362,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/indexer/indexer-queue.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - queue
    - only_working
    argTypes:
    - struct indexer_queue*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 370
    functionName: indexer_queue_iter_init
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 2
    functionsReached:
    - hash_table_iterate_init
    - i_new
    linkageType: ''
    returnType: struct indexer_queue_iter
    signature: 'struct indexer_queue_iter *

      indexer_queue_iter_init(struct indexer_queue *queue, bool only_working)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/indexer/indexer-queue.c:377,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/indexer/indexer-queue.c:383,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/indexer-queue.c:386,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct indexer_queue_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 392
    functionName: indexer_queue_iter_next
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 2
    functionsReached:
    - hash_table_iterate_deinit
    - indexer_queue_request_peek
    - hash_table_iterate
    linkageType: ''
    returnType: struct indexer_request
    signature: struct indexer_request *indexer_queue_iter_next(struct indexer_queue_iter
      *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/indexer/indexer-queue.c:400,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/indexer-queue.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct indexer_queue_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 402
    functionName: indexer_queue_iter_deinit
    functionSourceFile: /src/dovecot/src/indexer/indexer-queue.c
    functionUses: 2
    functionsReached:
    - hash_table_iterate_deinit
    - i_free
    linkageType: ''
    returnType: void
    signature: void indexer_queue_iter_deinit(struct indexer_queue_iter **_iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: process_title_set
      Src: /src/dovecot/src/indexer/indexer.c:25,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/indexer.c:25,1
    - Dst: indexer_clients_get_count
      Src: /src/dovecot/src/indexer/indexer.c:26,1
    - Dst: indexer_queue_count
      Src: /src/dovecot/src/indexer/indexer.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 28
    functionName: indexer_refresh_proctitle
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 4
    functionsReached:
    - indexer_clients_get_count
    - process_title_set
    - t_strdup_printf
    - indexer_queue_count
    linkageType: ''
    returnType: void
    signature: void indexer_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: indexer_queue_is_empty
      Src: /src/dovecot/src/indexer/indexer.c:32,1
    - Dst: worker_connections_get_count
      Src: /src/dovecot/src/indexer/indexer.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: idle_die
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 0
    functionsReached:
    - indexer_queue_is_empty
    - worker_connections_get_count
    linkageType: ''
    returnType: bool
    signature: bool idle_die(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/indexer/indexer.c:38,1
    - Dst: indexer_client_create
      Src: /src/dovecot/src/indexer/indexer.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 0
    functionsReached:
    - master_service_client_connection_accept
    - indexer_client_create
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: worker_connection_try_create
      Src: /src/dovecot/src/indexer/indexer.c:44,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/indexer.c:48,1
    - Dst: indexer_queue_request_work
      Src: /src/dovecot/src/indexer/indexer.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct indexer_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 51
    functionName: worker_send_request
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 0
    functionsReached:
    - indexer_queue_request_remove
    - worker_connection_try_create
    - indexer_queue_request_work
    linkageType: ''
    returnType: bool
    signature: bool worker_send_request(struct indexer_request *request)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/indexer.c:58,1
    - Dst: worker_connections_find_user
      Src: /src/dovecot/src/indexer/indexer.c:59,1
    - Dst: indexer_queue_move_head_to_tail
      Src: /src/dovecot/src/indexer/indexer.c:72,1
    - Dst: worker_send_request
      Src: /src/dovecot/src/indexer/indexer.c:77,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 80
    functionName: queue_try_send_more
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 0
    functionsReached:
    - worker_send_request
    - indexer_queue_move_head_to_tail
    - indexer_queue_request_peek
    - worker_connections_find_user
    linkageType: ''
    returnType: void
    signature: void queue_try_send_more(struct indexer_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queue_try_send_more
      Src: /src/dovecot/src/indexer/indexer.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct indexer_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: queue_listen_callback
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 0
    functionsReached:
    - queue_try_send_more
    linkageType: ''
    returnType: void
    signature: void queue_listen_callback(struct indexer_queue *queue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: indexer_queue_request_status
      Src: /src/dovecot/src/indexer/indexer.c:91,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/indexer.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - status
    - request
    argTypes:
    - struct indexer_status*
    - struct indexer_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: worker_status_callback
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 0
    functionsReached:
    - indexer_queue_request_status
    - indexer_queue_request_finish
    linkageType: ''
    returnType: void
    signature: "void worker_status_callback(const struct indexer_status *status,\n\t\t\t\t
      \  struct indexer_request *request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queue_try_send_more
      Src: /src/dovecot/src/indexer/indexer.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: worker_avail_callback
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 0
    functionsReached:
    - queue_try_send_more
    linkageType: ''
    returnType: void
    signature: void worker_avail_callback(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/indexer/indexer.c:108,1
    - Dst: master_getopt
      Src: /src/dovecot/src/indexer/indexer.c:109,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/indexer/indexer.c:112,1
    - Dst: i_fatal
      Src: /src/dovecot/src/indexer/indexer.c:113,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/indexer/indexer.c:114,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/indexer/indexer.c:116,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/indexer/indexer.c:117,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/indexer/indexer.c:118,1
    - Dst: master_service_set_idle_die_callback
      Src: /src/dovecot/src/indexer/indexer.c:119,1
    - Dst: indexer_queue_init
      Src: /src/dovecot/src/indexer/indexer.c:121,1
    - Dst: indexer_queue_set_listen_callback
      Src: /src/dovecot/src/indexer/indexer.c:122,1
    - Dst: worker_connections_init
      Src: /src/dovecot/src/indexer/indexer.c:123,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/indexer/indexer.c:124,1
    - Dst: master_service_run
      Src: /src/dovecot/src/indexer/indexer.c:126,1
    - Dst: indexer_queue_cancel_all
      Src: /src/dovecot/src/indexer/indexer.c:128,1
    - Dst: indexer_clients_destroy_all
      Src: /src/dovecot/src/indexer/indexer.c:129,1
    - Dst: worker_connections_deinit
      Src: /src/dovecot/src/indexer/indexer.c:130,1
    - Dst: indexer_queue_deinit
      Src: /src/dovecot/src/indexer/indexer.c:131,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/indexer/indexer.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 104
    functionDepth: 5
    functionLinenumber: 104
    functionLinenumberEnd: 135
    functionName: main
    functionSourceFile: /src/dovecot/src/indexer/indexer.c
    functionUses: 0
    functionsReached:
    - master_service_run
    - master_service_set_idle_die_callback
    - restrict_access_allow_coredumps
    - master_service_get_service_settings
    - master_service_init
    - worker_connections_deinit
    - i_fatal
    - master_service_init_finish
    - indexer_queue_init
    - master_getopt
    - master_service_settings_read_simple
    - indexer_clients_destroy_all
    - indexer_queue_cancel_all
    - indexer_queue_set_listen_callback
    - master_service_init_log
    - worker_connections_init
    - restrict_access_by_env
    - indexer_queue_deinit
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct worker_connection*::callback
      Src: /src/dovecot/src/indexer/worker-connection.c:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - worker
    - status
    argTypes:
    - struct worker_connection*
    - struct indexer_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: worker_connection_call_callback
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 0
    functionsReached:
    - struct worker_connection*::callback
    linkageType: ''
    returnType: void
    signature: "void worker_connection_call_callback(struct worker_connection *worker,\n\t\t\t\t\t
      \   const struct indexer_status *status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/indexer/worker-connection.c:51,1
    - Dst: worker_connection_call_callback
      Src: /src/dovecot/src/indexer/worker-connection.c:54,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/indexer/worker-connection.c:55,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/indexer/worker-connection.c:56,1
    - Dst: struct worker_connection*::avail_callback
      Src: /src/dovecot/src/indexer/worker-connection.c:58,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/worker-connection.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 60
    functionName: worker_connection_destroy
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 0
    functionsReached:
    - struct worker_connection*::avail_callback
    - container_of
    - worker_connection_call_callback
    - i_free_and_null
    - i_free
    - connection_deinit
    linkageType: ''
    returnType: void
    signature: void worker_connection_destroy(struct connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/indexer/worker-connection.c:66,1
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/indexer/worker-connection.c:71,1
    - Dst: str_array_length
      Src: /src/dovecot/src/indexer/worker-connection.c:76,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/worker-connection.c:77,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/indexer/worker-connection.c:80,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/worker-connection.c:82,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/indexer/worker-connection.c:86,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/worker-connection.c:87,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 93
    functionName: worker_connection_handshake_args
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - str_to_uint
    - str_to_pid
    - str_array_length
    - e_error
    - connection_handshake_args_default
    linkageType: ''
    returnType: int
    signature: int worker_connection_handshake_args(struct connection *conn, const
      char *const *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/indexer/worker-connection.c:99,1
    - Dst: str_to_int
      Src: /src/dovecot/src/indexer/worker-connection.c:104,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/worker-connection.c:106,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/indexer/worker-connection.c:113,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/worker-connection.c:114,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/indexer/worker-connection.c:118,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/worker-connection.c:119,1
    - Dst: worker_connection_call_callback
      Src: /src/dovecot/src/indexer/worker-connection.c:129,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 136
    functionName: worker_connection_input_args
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - worker_connection_call_callback
    - str_to_uint32
    - e_error
    - str_to_int
    linkageType: ''
    returnType: int
    signature: int worker_connection_input_args(struct connection *conn, const char
      *const *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/indexer/worker-connection.c:142,1
    - Dst: t_str_new
      Src: /src/dovecot/src/indexer/worker-connection.c:146,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/indexer/worker-connection.c:148,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/worker-connection.c:149,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/indexer/worker-connection.c:150,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/worker-connection.c:151,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/indexer/worker-connection.c:153,1
    - Dst: str_printfa
      Src: /src/dovecot/src/indexer/worker-connection.c:154,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/worker-connection.c:157,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/worker-connection.c:160,1
    - Dst: str_append_c
      Src: /src/dovecot/src/indexer/worker-connection.c:163,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/indexer/worker-connection.c:164,1
    - Dst: str_data
      Src: /src/dovecot/src/indexer/worker-connection.c:164,1
    - Dst: str_len
      Src: /src/dovecot/src/indexer/worker-connection.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - worker
    - request
    argTypes:
    - struct worker_connection*
    - struct indexer_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 165
    functionName: worker_connection_send_request
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - i_strdup
    - str_append_tabescaped
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: "void worker_connection_send_request(struct worker_connection *worker,\n\t\t\t
      \      struct indexer_request *request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/indexer/worker-connection.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 189
    functionName: worker_connections_init
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void worker_connections_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/indexer/worker-connection.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: worker_connections_deinit
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void worker_connections_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: I_MAX
      Src: /src/dovecot/src/indexer/worker-connection.c:204,1
    - Dst: i_new
      Src: /src/dovecot/src/indexer/worker-connection.c:208,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/indexer/worker-connection.c:211,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/indexer/worker-connection.c:213,1
    - Dst: worker_connection_destroy
      Src: /src/dovecot/src/indexer/worker-connection.c:214,1
    - Dst: worker_connection_send_request
      Src: /src/dovecot/src/indexer/worker-connection.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - socket_path
    - request
    - callback
    - avail_callback
    argTypes:
    - char*
    - struct indexer_request*
    - indexer_status_callback_t*
    - worker_available_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 219
    functionName: worker_connection_try_create
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 1
    functionsReached:
    - connection_client_connect
    - connection_init_client_unix
    - worker_connection_send_request
    - I_MAX
    - i_new
    - worker_connection_destroy
    linkageType: ''
    returnType: int
    signature: "int worker_connection_try_create(const char *socket_path,\n\t\t\t\t
      struct indexer_request *request,\n\t\t\t\t indexer_status_callback_t *callback,\n\t\t\t\t
      worker_available_callback_t *avail_callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 224
    functionName: worker_connections_get_count
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int worker_connections_get_count(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/indexer/worker-connection.c:232,1
    - Dst: strcmp
      Src: /src/dovecot/src/indexer/worker-connection.c:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - username
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 238
    functionName: worker_connections_find_user
    functionSourceFile: /src/dovecot/src/indexer/worker-connection.c
    functionUses: 1
    functionsReached:
    - strcmp
    - container_of
    linkageType: ''
    returnType: struct worker_connection
    signature: struct worker_connection *worker_connections_find_user(const char *username)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/indexer/master-connection.c:43,1
    - Dst: process_title_set
      Src: /src/dovecot/src/indexer/master-connection.c:47,1
    - Dst: process_title_set
      Src: /src/dovecot/src/indexer/master-connection.c:49,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/master-connection.c:49,1
    - Dst: process_title_set
      Src: /src/dovecot/src/indexer/master-connection.c:51,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/master-connection.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - username
    - mailbox
    - seq1
    - seq2
    argTypes:
    - char*
    - char*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 54
    functionName: indexer_worker_refresh_proctitle
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - process_title_set
    - master_service_get_service_settings
    linkageType: ''
    returnType: void
    signature: "void indexer_worker_refresh_proctitle(const char *username, const
      char *mailbox,\n\t\t\t\t uint32_t seq1, uint32_t seq2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/master-connection.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - counter
    - first_uid
    - last_uid
    argTypes:
    - unsigned int
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 64
    functionName: get_attempt_error
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      get_attempt_error(unsigned int counter, uint32_t first_uid, uint32_t last_uid)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/indexer/master-connection.c:69,1
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/indexer/master-connection.c:70,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/indexer/master-connection.c:71,1
    - Dst: event_create
      Src: /src/dovecot/src/indexer/master-connection.c:81,1
    - Dst: event_add_category
      Src: /src/dovecot/src/indexer/master-connection.c:82,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/indexer/master-connection.c:84,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/master-connection.c:86,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/indexer/master-connection.c:87,1
    - Dst: event_unref
      Src: /src/dovecot/src/indexer/master-connection.c:88,1
    - Dst: e_debug
      Src: /src/dovecot/src/indexer/master-connection.c:93,1
    - Dst: event_unref
      Src: /src/dovecot/src/indexer/master-connection.c:97,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/indexer/master-connection.c:101,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/master-connection.c:103,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/indexer/master-connection.c:104,1
    - Dst: event_unref
      Src: /src/dovecot/src/indexer/master-connection.c:105,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/indexer/master-connection.c:110,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/indexer/master-connection.c:114,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/indexer/master-connection.c:116,1
    - Dst: mail_search_build_add_seqset
      Src: /src/dovecot/src/indexer/master-connection.c:117,1
    - Dst: event_enable_user_cpu_usecs
      Src: /src/dovecot/src/indexer/master-connection.c:119,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/indexer/master-connection.c:121,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/indexer/master-connection.c:123,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/indexer/master-connection.c:126,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/indexer/master-connection.c:132,1
    - Dst: e_debug
      Src: /src/dovecot/src/indexer/master-connection.c:136,1
    - Dst: mail_precache
      Src: /src/dovecot/src/indexer/master-connection.c:138,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/master-connection.c:139,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/indexer/master-connection.c:141,1
    - Dst: get_attempt_error
      Src: /src/dovecot/src/indexer/master-connection.c:142,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/master-connection.c:150,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/indexer/master-connection.c:153,1
    - Dst: indexer_worker_refresh_proctitle
      Src: /src/dovecot/src/indexer/master-connection.c:155,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 2
    argNames:
    - conn
    - box
    argTypes:
    - struct master_connection*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 158
    functionName: index_mailbox_precache_real
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - mailbox_get_seq_range
    - event_unref
    - mailbox_get_last_internal_error
    - o_stream_uncork
    - t_strdup_printf
    - get_attempt_error
    - event_enable_user_cpu_usecs
    - mail_storage_get_user
    - mailbox_transaction_begin
    - event_add_category
    - mail_precache
    - indexer_worker_refresh_proctitle
    - mailbox_get_storage
    - event_create
    - mailbox_get_status
    - e_error
    - mail_search_build_init
    - mailbox_get_vname
    - mailbox_search_init
    - mail_get_last_internal_error
    - o_stream_nsend_str
    - mailbox_get_metadata
    - e_debug
    - mail_search_build_add_seqset
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: int index_mailbox_precache_real(struct master_connection *conn, struct
      mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/indexer/master-connection.c:207,1
    - Dst: t_array_init
      Src: /src/dovecot/src/indexer/master-connection.c:208,1
    - Dst: struct mailbox*::virtual_vfuncs::get_virtual_backend_boxes
      Src: /src/dovecot/src/indexer/master-connection.c:209,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/indexer/master-connection.c:212,1
    - Dst: index_mailbox_precache
      Src: /src/dovecot/src/indexer/master-connection.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - box
    argTypes:
    - struct master_connection*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 217
    functionName: index_mailbox_precache_virtual
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - struct mailbox*::virtual_vfuncs::get_virtual_backend_boxes
    - t_array_init
    - index_mailbox_precache
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: int index_mailbox_precache_virtual(struct master_connection *conn,
      struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_precache_real
      Src: /src/dovecot/src/indexer/master-connection.c:223,1
    - Dst: index_mailbox_precache_virtual
      Src: /src/dovecot/src/indexer/master-connection.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - box
    argTypes:
    - struct master_connection*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: index_mailbox_precache
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 1
    functionsReached:
    - index_mailbox_precache_real
    - index_mailbox_precache_virtual
    linkageType: ''
    returnType: int
    signature: int index_mailbox_precache(struct master_connection *conn, struct mailbox
      *box)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/indexer/master-connection.c:240,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/indexer/master-connection.c:241,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/indexer/master-connection.c:242,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/indexer/master-connection.c:244,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/master-connection.c:246,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/indexer/master-connection.c:247,1
    - Dst: e_info
      Src: /src/dovecot/src/indexer/master-connection.c:251,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/indexer/master-connection.c:252,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/indexer/master-connection.c:261,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/indexer/master-connection.c:262,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/master-connection.c:264,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/indexer/master-connection.c:268,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/indexer/master-connection.c:271,1
    - Dst: strchr
      Src: /src/dovecot/src/indexer/master-connection.c:276,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/indexer/master-connection.c:279,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/indexer/master-connection.c:280,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/master-connection.c:282,1
    - Dst: e_debug
      Src: /src/dovecot/src/indexer/master-connection.c:284,1
    - Dst: strchr
      Src: /src/dovecot/src/indexer/master-connection.c:287,1
    - Dst: index_mailbox_precache
      Src: /src/dovecot/src/indexer/master-connection.c:288,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/indexer/master-connection.c:291,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 5
    argNames:
    - conn
    - user
    - mailbox
    - max_recent_msgs
    - what
    argTypes:
    - struct master_connection*
    - struct mail_user*
    - char*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 227
    functionDepth: 4
    functionLinenumber: 227
    functionLinenumberEnd: 293
    functionName: index_mailbox
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - strchr
    - e_info
    - mailbox_free
    - mail_namespace_find
    - mailbox_get_last_internal_error
    - mailbox_open
    - e_debug
    - mailbox_sync
    - e_error
    - mailbox_alloc
    - mailbox_get_open_status
    - index_mailbox_precache
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int index_mailbox(struct master_connection *conn, struct mail_user
      *user,\n\t      const char *mailbox, unsigned int max_recent_msgs,\n\t      const
      char *what)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/indexer/master-connection.c:306,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/indexer/master-connection.c:316,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/master-connection.c:318,1
    - Dst: mail_user_get_anvil_session
      Src: /src/dovecot/src/indexer/master-connection.c:326,1
    - Dst: master_service_anvil_connect
      Src: /src/dovecot/src/indexer/master-connection.c:327,1
    - Dst: indexer_worker_refresh_proctitle
      Src: /src/dovecot/src/indexer/master-connection.c:331,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/indexer/master-connection.c:333,1
    - Dst: index_mailbox
      Src: /src/dovecot/src/indexer/master-connection.c:334,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/indexer/master-connection.c:335,1
    - Dst: indexer_worker_refresh_proctitle
      Src: /src/dovecot/src/indexer/master-connection.c:338,1
    - Dst: master_service_anvil_disconnect
      Src: /src/dovecot/src/indexer/master-connection.c:341,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/indexer/master-connection.c:345,1
    - Dst: indexer_worker_refresh_proctitle
      Src: /src/dovecot/src/indexer/master-connection.c:346,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 6
    argNames:
    - conn
    - username
    - mailbox
    - session_id
    - max_recent_msgs
    - what
    argTypes:
    - struct master_connection*
    - char*
    - char*
    - char*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 295
    functionDepth: 5
    functionLinenumber: 295
    functionLinenumberEnd: 348
    functionName: master_connection_cmd_index
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - indexer_worker_refresh_proctitle
    - mail_user_get_anvil_session
    - mail_user_deinit
    - index_mailbox
    - master_service_anvil_connect
    - mail_storage_service_lookup_next
    - event_reason_begin
    - e_error
    - event_reason_end
    - master_service_anvil_disconnect
    linkageType: ''
    returnType: int
    signature: "int master_connection_cmd_index(struct master_connection *conn,\n\t\t\t
      \   const char *username, const char *mailbox,\n\t\t\t    const char *session_id,\n\t\t\t
      \   unsigned int max_recent_msgs, const char *what)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/indexer/master-connection.c:354,1
    - Dst: str_array_length
      Src: /src/dovecot/src/indexer/master-connection.c:359,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/indexer/master-connection.c:360,1
    - Dst: e_error
      Src: /src/dovecot/src/indexer/master-connection.c:361,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/indexer/master-connection.c:362,1
    - Dst: master_connection_cmd_index
      Src: /src/dovecot/src/indexer/master-connection.c:370,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/master-connection.c:373,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/indexer/master-connection.c:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - _conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 350
    functionDepth: 6
    functionLinenumber: 350
    functionLinenumberEnd: 377
    functionName: master_connection_input_args
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - t_strarray_join
    - str_array_length
    - t_strdup_printf
    - e_error
    - o_stream_nsend_str
    - str_to_uint
    - master_connection_cmd_index
    linkageType: ''
    returnType: int
    signature: int master_connection_input_args(struct connection *_conn, const char
      *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_deinit
      Src: /src/dovecot/src/indexer/master-connection.c:381,1
    - Dst: i_free
      Src: /src/dovecot/src/indexer/master-connection.c:382,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/indexer/master-connection.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - connection
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 384
    functionName: master_connection_destroy
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - i_free
    - connection_deinit
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void master_connection_destroy(struct connection *connection)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/indexer/master-connection.c:390,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/indexer/master-connection.c:392,1
    - Dst: master_service_get_process_limit
      Src: /src/dovecot/src/indexer/master-connection.c:393,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/indexer/master-connection.c:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - connection
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 396
    functionName: master_connection_handshake_args
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 0
    functionsReached:
    - master_service_get_process_limit
    - connection_handshake_args_default
    - o_stream_nsend_str
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int master_connection_handshake_args(struct connection *connection,\n\t\t\t\t\t
      \   const char *const *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/indexer/master-connection.c:423,1
    - Dst: i_new
      Src: /src/dovecot/src/indexer/master-connection.c:429,1
    - Dst: event_create
      Src: /src/dovecot/src/indexer/master-connection.c:431,1
    - Dst: event_add_category
      Src: /src/dovecot/src/indexer/master-connection.c:432,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/indexer/master-connection.c:433,1
    - Dst: event_unref
      Src: /src/dovecot/src/indexer/master-connection.c:436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - master
    - storage_service
    argTypes:
    - struct master_service_connection*
    - struct mail_storage_service_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 438
    functionName: master_connection_create
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    - event_create
    - event_unref
    - connection_init_server
    - i_new
    - event_add_category
    linkageType: ''
    returnType: bool
    signature: "bool master_connection_create(struct master_service_connection *master,\n\t\t\t
      struct mail_storage_service_ctx *storage_service)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/indexer/master-connection.c:443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 444
    functionName: master_connections_destroy
    functionSourceFile: /src/dovecot/src/indexer/master-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void master_connections_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 7
    functionName: indexer_refresh_proctitle
    functionSourceFile: /src/dovecot/src/indexer/test-indexer-queue.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void indexer_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct indexer_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 13
    functionName: indexer_queue_status_callback
    functionSourceFile: /src/dovecot/src/indexer/test-indexer-queue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void indexer_queue_status_callback(const struct indexer_status *status
      ATTR_UNUSED,\n\t\t\t      void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:20,1
    - Dst: indexer_queue_init
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:21,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:23,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:24,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:25,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:26,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:28,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:29,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:30,1
    - Dst: indexer_queue_move_head_to_tail
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:32,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:43,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:44,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:45,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:46,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:48,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:51,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:51,1
    - Dst: indexer_queue_deinit
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:53,1
    - Dst: test_end
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 15
    functionDepth: 4
    functionLinenumber: 15
    functionLinenumberEnd: 55
    functionName: test_indexer_queue
    functionSourceFile: /src/dovecot/src/indexer/test-indexer-queue.c
    functionUses: 0
    functionsReached:
    - indexer_queue_append
    - indexer_queue_request_remove
    - test_assert_strcmp
    - test_end
    - indexer_queue_init
    - indexer_queue_deinit
    - indexer_queue_request_finish
    - test_assert
    - indexer_queue_move_head_to_tail
    - test_assert_strcmp_idx
    - indexer_queue_request_peek
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_indexer_queue(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:62,1
    - Dst: indexer_queue_init
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:63,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:65,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:66,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:68,1
    - Dst: indexer_queue_count
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:68,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:70,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:71,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:74,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:74,1
    - Dst: indexer_queue_deinit
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:77,1
    - Dst: test_end
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 79
    functionName: test_indexer_queue_repeated_prepend
    functionSourceFile: /src/dovecot/src/indexer/test-indexer-queue.c
    functionUses: 0
    functionsReached:
    - indexer_queue_append
    - indexer_queue_count
    - indexer_queue_request_remove
    - test_end
    - indexer_queue_init
    - indexer_queue_deinit
    - test_assert_cmp
    - test_assert
    - indexer_queue_request_peek
    - indexer_queue_request_finish
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_indexer_queue_repeated_prepend(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:86,1
    - Dst: indexer_queue_init
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:87,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:89,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:90,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:92,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:93,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:96,1
    - Dst: indexer_queue_request_work
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:98,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:102,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:105,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:106,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:108,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:111,1
    - Dst: indexer_queue_request_work
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:112,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:115,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:118,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:120,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:121,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:122,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:123,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:125,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:126,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:127,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:130,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:130,1
    - Dst: indexer_queue_deinit
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:132,1
    - Dst: test_end
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 134
    functionName: test_indexer_queue_reindex
    functionSourceFile: /src/dovecot/src/indexer/test-indexer-queue.c
    functionUses: 0
    functionsReached:
    - indexer_queue_append
    - indexer_queue_request_remove
    - test_assert_strcmp
    - indexer_queue_request_work
    - test_end
    - indexer_queue_init
    - indexer_queue_deinit
    - test_assert
    - indexer_queue_request_peek
    - indexer_queue_request_finish
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_indexer_queue_reindex(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:141,1
    - Dst: indexer_queue_init
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:142,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:144,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:145,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:146,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:147,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:150,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:154,1
    - Dst: indexer_queue_count
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:154,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:155,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:156,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:159,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:160,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:161,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:162,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:163,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:166,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:167,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:169,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:172,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:172,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:175,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:176,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:177,1
    - Dst: indexer_queue_request_work
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:178,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:179,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:180,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:181,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:182,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:184,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:184,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:187,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:188,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:189,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:190,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:191,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:192,1
    - Dst: indexer_queue_cancel
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:194,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:194,1
    - Dst: indexer_queue_deinit
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:196,1
    - Dst: test_end
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 136
    functionDepth: 5
    functionLinenumber: 136
    functionLinenumberEnd: 198
    functionName: test_indexer_queue_cancel
    functionSourceFile: /src/dovecot/src/indexer/test-indexer-queue.c
    functionUses: 0
    functionsReached:
    - indexer_queue_append
    - indexer_queue_count
    - indexer_queue_request_remove
    - test_assert_strcmp
    - indexer_queue_request_work
    - indexer_queue_cancel
    - test_end
    - indexer_queue_init
    - indexer_queue_deinit
    - test_assert
    - indexer_queue_request_peek
    - indexer_queue_request_finish
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_indexer_queue_cancel(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:206,1
    - Dst: indexer_queue_init
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:207,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:209,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:210,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:211,1
    - Dst: indexer_queue_append
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:212,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:215,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:216,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:217,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:218,1
    - Dst: indexer_queue_request_work
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:219,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:221,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:222,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:223,1
    - Dst: indexer_queue_request_remove
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:224,1
    - Dst: indexer_queue_request_work
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:225,1
    - Dst: indexer_queue_iter_init
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:229,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:230,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:232,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:235,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:236,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:236,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:237,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:238,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:238,1
    - Dst: indexer_queue_iter_deinit
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:239,1
    - Dst: indexer_queue_iter_init
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:242,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:243,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:244,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:245,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:247,1
    - Dst: indexer_queue_iter_next
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:247,1
    - Dst: indexer_queue_iter_deinit
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:248,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:251,1
    - Dst: indexer_queue_request_finish
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:252,1
    - Dst: indexer_queue_cancel_all
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:255,1
    - Dst: indexer_queue_request_peek
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:255,1
    - Dst: indexer_queue_deinit
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:257,1
    - Dst: test_end
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:258,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 200
    functionDepth: 5
    functionLinenumber: 200
    functionLinenumberEnd: 259
    functionName: test_indexer_queue_iter
    functionSourceFile: /src/dovecot/src/indexer/test-indexer-queue.c
    functionUses: 0
    functionsReached:
    - indexer_queue_iter_deinit
    - indexer_queue_iter_init
    - indexer_queue_append
    - indexer_queue_request_remove
    - test_assert_strcmp
    - indexer_queue_request_work
    - test_end
    - indexer_queue_cancel_all
    - indexer_queue_init
    - indexer_queue_deinit
    - indexer_queue_iter_next
    - test_assert
    - indexer_queue_request_peek
    - indexer_queue_request_finish
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_indexer_queue_iter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/indexer/test-indexer-queue.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 272
    functionName: main
    functionSourceFile: /src/dovecot/src/indexer/test-indexer-queue.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/imap-login/imap-login-client.c:40,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap-login/imap-login-client.c:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 50
    functionName: client_skip_line
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 2
    functionsReached:
    - i_stream_get_data
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: bool client_skip_line(struct imap_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/imap-login/imap-login-client.c:58,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap-login/imap-login-client.c:61,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:63,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-login/imap-login-client.c:65,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - client
    - parser
    argTypes:
    - struct imap_client*
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 75
    functionName: client_handle_parser_error
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - imap_parser_get_error
    - client_destroy
    - client_send_reply
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool client_handle_parser_error(struct imap_client *client,\n\t\t\t\tstruct
      imap_parser *parser)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_find_available_mech
      Src: /src/dovecot/src/imap-login/imap-login-client.c:80,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-login/imap-login-client.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: is_login_cmd_disabled
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - sasl_server_find_available_mech
    linkageType: ''
    returnType: bool
    signature: bool is_login_cmd_disabled(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-login-client.c:100,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-login-client.c:101,1
    - Dst: imap_write_capability
      Src: /src/dovecot/src/imap-login/imap-login-client.c:103,1
    - Dst: client_is_tls_enabled
      Src: /src/dovecot/src/imap-login/imap-login-client.c:105,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:107,1
    - Dst: is_login_cmd_disabled
      Src: /src/dovecot/src/imap-login/imap-login-client.c:108,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:109,1
    - Dst: client_authenticate_get_capabilities
      Src: /src/dovecot/src/imap-login/imap-login-client.c:111,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/imap-login-client.c:112,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 113
    functionName: get_capability
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - container_of
    - client_authenticate_get_capabilities
    - client_is_tls_enabled
    - str_append
    - is_login_cmd_disabled
    - imap_write_capability
    linkageType: ''
    returnType: char
    signature: char *get_capability(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-login/imap-login-client.c:125,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap-login/imap-login-client.c:125,1
    - Dst: get_capability
      Src: /src/dovecot/src/imap-login/imap-login-client.c:126,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - imap_client
    - ATTR_UNUSED
    argTypes:
    - struct imap_client*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 130
    functionName: cmd_capability
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - get_capability
    - t_strconcat
    - client_send_reply
    - client_send_raw
    linkageType: ''
    returnType: int
    signature: "int cmd_capability(struct imap_client *imap_client,\n\t\t\t  const
      struct imap_arg *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_cmd_starttls
      Src: /src/dovecot/src/imap-login/imap-login-client.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - ATTR_UNUSED
    argTypes:
    - struct imap_client*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: cmd_starttls
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 1
    functionsReached:
    - client_cmd_starttls
    linkageType: ''
    returnType: int
    signature: "int cmd_starttls(struct imap_client *client,\n\t\t\tconst struct imap_arg
      *args ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:144,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - client
    - success
    - text
    argTypes:
    - struct client*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 147
    functionName: imap_client_notify_starttls
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - client_send_reply
    linkageType: ''
    returnType: void
    signature: "void imap_client_notify_starttls(struct client *client,\n\t\t\t    bool
      success, const char *text)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - ATTR_UNUSED
    argTypes:
    - struct imap_client*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 155
    functionName: cmd_noop
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - client_send_reply
    linkageType: ''
    returnType: int
    signature: "int cmd_noop(struct imap_client *client,\n\t\t    const struct imap_arg
      *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:160,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:161,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-login/imap-login-client.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - client
    - ATTR_UNUSED
    argTypes:
    - struct imap_client*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 165
    functionName: cmd_logout
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_send_reply
    linkageType: ''
    returnType: int
    signature: "int cmd_logout(struct imap_client *client,\n\t\t      const struct
      imap_arg *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-login/imap-login-client.c:170,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - client
    - ATTR_UNUSED
    argTypes:
    - struct imap_client*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 174
    functionName: cmd_enable
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - client_send_reply
    - client_send_raw
    linkageType: ''
    returnType: int
    signature: "int cmd_enable(struct imap_client *client,\n\t\t      const struct
      imap_arg *args ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_login_command_lookup
      Src: /src/dovecot/src/imap-login/imap-login-client.c:181,1
    - Dst: struct imap_login_command*::func
      Src: /src/dovecot/src/imap-login/imap-login-client.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - client
    - cmd
    - args
    argTypes:
    - struct imap_client*
    - char*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 185
    functionName: client_command_execute
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - imap_login_command_lookup
    - struct imap_login_command*::func
    linkageType: ''
    returnType: int
    signature: "int client_command_execute(struct imap_client *client, const char
      *cmd,\n\t\t\t\t  const struct imap_arg *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:192,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-login/imap-login-client.c:194,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 200
    functionName: client_invalid_command
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_send_reply
    linkageType: ''
    returnType: bool
    signature: bool client_invalid_command(struct imap_client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap-login/imap-login-client.c:205,1
    - Dst: client_handle_parser_error
      Src: /src/dovecot/src/imap-login/imap-login-client.c:208,1
    - Dst: client_skip_line
      Src: /src/dovecot/src/imap-login/imap-login-client.c:218,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap-login/imap-login-client.c:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - client
    - args_r
    argTypes:
    - struct imap_client*
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 222
    functionName: client_parse_command
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - imap_parser_read_args
    - client_skip_line
    - client_handle_parser_error
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int client_parse_command(struct imap_client *client,\n\t\t\t\tconst
      struct imap_arg **args_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-login-client.c:229,1
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/imap-login/imap-login-client.c:237,1
    - Dst: client_skip_line
      Src: /src/dovecot/src/imap-login/imap-login-client.c:241,1
    - Dst: imap_parser_read_tag
      Src: /src/dovecot/src/imap-login/imap-login-client.c:250,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/imap-login-client.c:253,1
    - Dst: client_invalid_command
      Src: /src/dovecot/src/imap-login/imap-login-client.c:260,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/imap-login/imap-login-client.c:262,1
    - Dst: imap_parser_read_command_name
      Src: /src/dovecot/src/imap-login/imap-login-client.c:268,1
    - Dst: client_invalid_command
      Src: /src/dovecot/src/imap-login/imap-login-client.c:274,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/imap-login/imap-login-client.c:276,1
    - Dst: struct imap_client*::common::v::input_next_cmd
      Src: /src/dovecot/src/imap-login/imap-login-client.c:280,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 281
    functionName: client_handle_input
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 6
    functionsReached:
    - imap_parser_read_command_name
    - client_invalid_command
    - imap_parser_reset
    - strlen
    - struct imap_client*::common::v::input_next_cmd
    - client_skip_line
    - imap_parser_read_tag
    - i_assert
    - client_handle_input
    linkageType: ''
    returnType: bool
    signature: bool client_handle_input(struct imap_client *client)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-login-client.c:286,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-login/imap-login-client.c:291,1
    - Dst: cmd_authenticate
      Src: /src/dovecot/src/imap-login/imap-login-client.c:294,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-login/imap-login-client.c:297,1
    - Dst: cmd_id
      Src: /src/dovecot/src/imap-login/imap-login-client.c:301,1
    - Dst: client_parse_command
      Src: /src/dovecot/src/imap-login/imap-login-client.c:307,1
    - Dst: client_command_execute
      Src: /src/dovecot/src/imap-login/imap-login-client.c:313,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-login/imap-login-client.c:317,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-client.c:318,1
    - Dst: client_invalid_command
      Src: /src/dovecot/src/imap-login/imap-login-client.c:323,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 328
    functionName: imap_client_input_next_cmd
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - cmd_authenticate
    - cmd_id
    - container_of
    - client_invalid_command
    - strcasecmp
    - client_parse_command
    - client_command_execute
    - client_send_reply
    linkageType: ''
    returnType: bool
    signature: bool imap_client_input_next_cmd(struct client *_client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-login-client.c:333,1
    - Dst: client_read
      Src: /src/dovecot/src/imap-login/imap-login-client.c:335,1
    - Dst: client_ref
      Src: /src/dovecot/src/imap-login/imap-login-client.c:338,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap-login/imap-login-client.c:339,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/imap-login/imap-login-client.c:341,1
    - Dst: client_notify_status
      Src: /src/dovecot/src/imap-login/imap-login-client.c:344,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-login/imap-login-client.c:346,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/imap-login/imap-login-client.c:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 358
    functionName: imap_client_input
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - container_of
    - client_read
    - o_stream_cork
    - client_notify_status
    - client_handle_input
    - client_ref
    - auth_client_is_connected
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_client_input(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/imap-login/imap-login-client.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 369
    functionName: imap_client_alloc
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct client
    signature: struct client *imap_client_alloc(pool_t pool)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-login-client.c:374,1
    - Dst: settings_get
      Src: /src/dovecot/src/imap-login/imap-login-client.c:377,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-login/imap-login-client.c:379,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/imap-login/imap-login-client.c:384,1
    - Dst: settings_instance_find
      Src: /src/dovecot/src/imap-login/imap-login-client.c:387,1
    - Dst: settings_instance_new
      Src: /src/dovecot/src/imap-login/imap-login-client.c:389,1
    - Dst: master_service_get_settings_root
      Src: /src/dovecot/src/imap-login/imap-login-client.c:390,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/imap-login/imap-login-client.c:392,1
    - Dst: settings_override
      Src: /src/dovecot/src/imap-login/imap-login-client.c:396,1
    - Dst: imap_parser_enable_literal_minus
      Src: /src/dovecot/src/imap-login/imap-login-client.c:399,1
    - Dst: settings_override
      Src: /src/dovecot/src/imap-login/imap-login-client.c:401,1
    - Dst: settings_override
      Src: /src/dovecot/src/imap-login/imap-login-client.c:405,1
    - Dst: imap_client_reload_config
      Src: /src/dovecot/src/imap-login/imap-login-client.c:408,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-login/imap-login-client.c:409,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 413
    functionName: imap_client_create
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 1
    functionsReached:
    - container_of
    - master_service_get_settings_root
    - imap_parser_enable_literal_minus
    - settings_instance_new
    - e_error
    - imap_parser_create
    - event_set_ptr
    - imap_client_reload_config
    - settings_override
    - settings_instance_find
    - settings_get
    linkageType: ''
    returnType: int
    signature: int imap_client_create(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-login-client.c:418,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-login-client.c:423,1
    - Dst: cmd_id_free
      Src: /src/dovecot/src/imap-login/imap-login-client.c:424,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/imap-login/imap-login-client.c:431,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/imap-login/imap-login-client.c:432,1
    - Dst: settings_free
      Src: /src/dovecot/src/imap-login/imap-login-client.c:434,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/imap-login/imap-login-client.c:435,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/imap-login/imap-login-client.c:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 437
    functionName: imap_client_destroy
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 7
    functionsReached:
    - settings_instance_free
    - container_of
    - imap_parser_unref
    - i_free_and_null
    - settings_free
    - event_set_ptr
    - cmd_id_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imap_client_destroy(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-login-client.c:443,1
    - Dst: settings_free
      Src: /src/dovecot/src/imap-login/imap-login-client.c:445,1
    - Dst: settings_get
      Src: /src/dovecot/src/imap-login/imap-login-client.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 448
    functionName: imap_client_reload_config
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 1
    functionsReached:
    - settings_get
    - container_of
    - settings_free
    linkageType: ''
    returnType: int
    signature: int imap_client_reload_config(struct client *client, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-login-client.c:454,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:455,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-login/imap-login-client.c:456,1
    - Dst: get_capability
      Src: /src/dovecot/src/imap-login/imap-login-client.c:456,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:457,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:458,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-login/imap-login-client.c:460,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/imap-login-client.c:460,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-login-client.c:463,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/imap-login/imap-login-client.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 450
    functionDepth: 3
    functionLinenumber: 450
    functionLinenumberEnd: 465
    functionName: imap_client_notify_auth_ready
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - get_capability
    - io_add_istream
    - client_send_raw
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imap_client_notify_auth_ready(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-login-client.c:470,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/imap-login/imap-login-client.c:472,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/imap-login/imap-login-client.c:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 480
    functionName: imap_client_starttls
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - imap_parser_create
    - container_of
    - imap_parser_unref
    linkageType: ''
    returnType: void
    signature: void imap_client_starttls(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-login-client.c:488,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-login-client.c:491,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:494,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-login-client.c:496,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-login-client.c:497,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:498,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-login-client.c:499,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-login/imap-login-client.c:501,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:502,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-client.c:503,1
    - Dst: client_send_raw_data
      Src: /src/dovecot/src/imap-login/imap-login-client.c:505,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-login/imap-login-client.c:505,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-login-client.c:505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - client
    - prefix
    - resp_code
    - text
    - tagged
    argTypes:
    - struct client*
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 506
    functionName: client_send_reply_raw
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - container_of
    - str_append_c
    - str_printfa
    - str_data
    - str_len
    - client_send_raw_data
    - str_append
    linkageType: ''
    returnType: void
    signature: "void client_send_reply_raw(struct client *client,\n\t\t      const
      char *prefix, const char *resp_code,\n\t\t      const char *text, bool tagged)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply_raw
      Src: /src/dovecot/src/imap-login/imap-login-client.c:529,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - client
    - reply
    - resp_code
    - text
    argTypes:
    - struct client*
    - enum imap_cmd_reply
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 530
    functionName: client_send_reply_code
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - client_send_reply_raw
    linkageType: ''
    returnType: void
    signature: "void client_send_reply_code(struct client *client, enum imap_cmd_reply
      reply,\n\t\t\t    const char *resp_code, const char *text)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/imap-login-client.c:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - reply
    - text
    argTypes:
    - struct client*
    - enum imap_cmd_reply
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 532
    functionDepth: 3
    functionLinenumber: 532
    functionLinenumberEnd: 536
    functionName: client_send_reply
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 8
    functionsReached:
    - client_send_reply_code
    linkageType: ''
    returnType: void
    signature: "void client_send_reply(struct client *client, enum imap_cmd_reply
      reply,\n\t\t       const char *text)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply_raw
      Src: /src/dovecot/src/imap-login/imap-login-client.c:542,1
    - Dst: client_send_reply_raw
      Src: /src/dovecot/src/imap-login/imap-login-client.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - client
    - bad
    - text
    argTypes:
    - struct client*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 538
    functionDepth: 2
    functionLinenumber: 538
    functionLinenumberEnd: 545
    functionName: imap_client_notify_status
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - client_send_reply_raw
    linkageType: ''
    returnType: void
    signature: void imap_client_notify_status(struct client *client, bool bad, const
      char *text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/imap-login-client.c:553,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/imap-login-client.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - client
    - reason
    - text
    argTypes:
    - struct client*
    - enum client_disconnect_reason
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 547
    functionDepth: 3
    functionLinenumber: 547
    functionLinenumberEnd: 558
    functionName: imap_client_notify_disconnect
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - client_send_reply_code
    linkageType: ''
    returnType: void
    signature: "void imap_client_notify_disconnect(struct client *client,\n\t\t\t
      \     enum client_disconnect_reason reason,\n\t\t\t      const char *text)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 562
    functionName: imap_login_preinit
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_login_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_login_commands_init
      Src: /src/dovecot/src/imap-login/imap-login-client.c:575,1
    - Dst: imap_login_commands_register
      Src: /src/dovecot/src/imap-login/imap-login-client.c:576,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/imap-login/imap-login-client.c:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 578
    functionName: imap_login_init
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - imap_login_commands_init
    - N_ELEMENTS
    - imap_login_commands_register
    linkageType: ''
    returnType: void
    signature: void imap_login_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clients_destroy_all
      Src: /src/dovecot/src/imap-login/imap-login-client.c:582,1
    - Dst: imap_login_commands_deinit
      Src: /src/dovecot/src/imap-login/imap-login-client.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 584
    functionName: imap_login_deinit
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - imap_login_commands_deinit
    - clients_destroy_all
    linkageType: ''
    returnType: void
    signature: void imap_login_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_binary_run
      Src: /src/dovecot/src/imap-login/imap-login-client.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 632
    functionDepth: 1
    functionLinenumber: 632
    functionLinenumberEnd: 635
    functionName: main
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-client.c
    functionUses: 0
    functionsReached:
    - login_binary_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: cmd_id_x_originating_ip
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_originating_ip(struct imap_id_params *params,\n\t\t\tconst
      char *key ATTR_UNUSED, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_str2port
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: cmd_id_x_originating_port
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - net_str2port
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_originating_port(struct imap_id_params *params,\n\t\t\t
      \ const char *key ATTR_UNUSED, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 64
    functionName: cmd_id_x_connected_ip
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_connected_ip(struct imap_id_params *params,\n\t\t      const
      char *key ATTR_UNUSED, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_str2port
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: cmd_id_x_connected_port
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - net_str2port
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_connected_port(struct imap_id_params *params,\n\t\t\tconst
      char *key ATTR_UNUSED, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 79
    functionName: cmd_id_x_proxy_ttl
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - str_to_uint
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_proxy_ttl(struct imap_id_params *params,\n\t\t   const
      char *key ATTR_UNUSED, const char *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:87,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 93
    functionName: cmd_id_x_session_id
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - strlen
    - p_strdup_empty
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_session_id(struct imap_id_params *params,\n\t\t    const
      char *key ATTR_UNUSED, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 105
    functionName: cmd_id_x_client_transport
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_client_transport(struct imap_id_params *params,\n\t\t\t
      \ const char *key ATTR_UNUSED, const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:113,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:114,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:115,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:116,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:120,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:121,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - params
    - key
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 124
    functionName: cmd_id_x_forward_
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - p_array_init
    - i_unreached
    - str_begins_icase
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_forward_(struct imap_id_params *params,\n\t\t  const
      char *key, const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:131,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: cmd_id_x_multiplex
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_multiplex(struct imap_id_params *params,\n\t\t   const
      char *key ATTR_UNUSED, const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:143,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - params
    - ATTR_UNUSED
    - value
    argTypes:
    - struct imap_id_params*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 148
    functionName: cmd_id_x_connected_name
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - connection_is_valid_dns_name
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_x_connected_name(struct imap_id_params *params,\n\t\t\tconst
      char *key ATTR_UNUSED, const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 183
    functionName: imap_id_param_handler_find
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - str_begins_icase
    linkageType: ''
    returnType: struct imap_id_param_handler
    signature: 'struct imap_id_param_handler *

      imap_id_param_handler_find(const char *key)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:191,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:192,1
    - Dst: imap_id_param_handler_find
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:194,1
    - Dst: struct imap_id_param_handler*::callback
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:209,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:210,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:220,1
    - Dst: str_new
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:222,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:224,1
    - Dst: imap_append_quoted
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:226,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:227,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:229,1
    - Dst: imap_append_quoted
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:231,1
    - Dst: imap_id_add_log_entry
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:235,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 4
    argNames:
    - client
    - log_entry
    - key
    - value
    argTypes:
    - struct imap_client*
    - struct imap_id_log_entry*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 237
    functionName: cmd_id_handle_keyvalue
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_len
    - e_debug
    - strlen
    - imap_id_param_handler_find
    - str_append
    - imap_append_quoted
    - str_new
    - struct imap_id_param_handler*::callback
    - imap_id_add_log_entry
    linkageType: ''
    returnType: bool
    signature: "bool cmd_id_handle_keyvalue(struct imap_client *client,\n\t\t\t\t
      \  struct imap_id_log_entry *log_entry,\n\t\t\t\t   const char *key, const char
      *value)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:255,1
    - Dst: i_strocpy
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:257,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:262,1
    - Dst: cmd_id_handle_keyvalue
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:266,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 3
    argNames:
    - client
    - log_entry
    - arg
    argTypes:
    - struct imap_client*
    - struct imap_id_log_entry*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 273
    functionName: cmd_id_handle_args
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_nstring
    - imap_arg_get_string
    - cmd_id_handle_keyvalue
    - i_strocpy
    linkageType: ''
    returnType: int
    signature: "int cmd_id_handle_args(struct imap_client *client,\n\t\t\t      struct
      imap_id_log_entry *log_entry,\n\t\t\t      const struct imap_arg *arg)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:289,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:293,1
    - Dst: array_is_created
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:300,1
    - Dst: array_foreach
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:303,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:304,1
    - Dst: client_add_forward_field
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:305,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 2
    argNames:
    - client
    - params
    argTypes:
    - struct imap_client*
    - struct imap_id_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 307
    functionName: cmd_id_copy_params
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_foreach
    - array_is_created
    - i_assert
    - client_add_forward_field
    linkageType: ''
    returnType: void
    signature: "void cmd_id_copy_params(struct imap_client *client,\n\t\t\t       struct
      imap_id_params *params)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:315,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:317,1
    - Dst: event_add_str
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:319,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:329,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:330,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:330,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:334,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:335,1
    - Dst: imap_id_reply_generate
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:336,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:341,1
    - Dst: client_multiplex_output_start
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:342,1
    - Dst: cmd_id_copy_params
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:344,1
    - Dst: client_addresses_changed
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:350,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:351,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:355,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:359,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 309
    functionDepth: 3
    functionLinenumber: 309
    functionLinenumberEnd: 361
    functionName: cmd_id_finish
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 0
    functionsReached:
    - str_c
    - client_addresses_changed
    - e_debug
    - client_destroy
    - client_send_reply_code
    - t_strdup_printf
    - client_send_raw
    - imap_id_reply_generate
    - str_sanitize
    - client_multiplex_output_start
    - client_send_reply
    - event_add_str
    - cmd_id_copy_params
    linkageType: ''
    returnType: int
    signature: int cmd_id_finish(struct imap_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:367,1
    - Dst: str_free
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:368,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:369,1
    - Dst: pool_unref
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:370,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 374
    functionName: cmd_id_free
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 1
    functionsReached:
    - event_unref
    - imap_parser_unref
    - i_free_and_null
    - pool_unref
    - str_free
    linkageType: ''
    returnType: void
    signature: void cmd_id_free(struct imap_client *client)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:384,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:388,1
    - Dst: i_new
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:389,1
    - Dst: p_new
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:390,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:392,1
    - Dst: str_new
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:395,1
    - Dst: imap_parser_enable_literal_minus
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:397,1
    - Dst: event_create
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:405,1
    - Dst: event_set_name
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:406,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:411,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:412,1
    - Dst: cmd_id_handle_args
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:414,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:415,1
    - Dst: cmd_id_free
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:418,1
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:426,1
    - Dst: cmd_id_finish
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:431,1
    - Dst: cmd_id_free
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:433,1
    - Dst: client_handle_parser_error
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:436,1
    - Dst: cmd_id_free
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:438,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-login-cmd-id.c:441,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 376
    functionDepth: 4
    functionLinenumber: 376
    functionLinenumberEnd: 444
    functionName: cmd_id
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - imap_parser_enable_literal_minus
    - event_set_name
    - imap_parser_reset
    - cmd_id_handle_args
    - imap_parser_read_args
    - imap_parser_create
    - cmd_id_free
    - str_truncate
    - i_new
    - client_send_reply
    - cmd_id_finish
    - i_assert
    - str_new
    - client_handle_parser_error
    linkageType: ''
    returnType: int
    signature: int cmd_id(struct imap_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-proxy.c:37,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:39,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:41,1
    - Dst: str_append_str
      Src: /src/dovecot/src/imap-login/imap-proxy.c:42,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:43,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:46,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-login/imap-proxy.c:47,1
    - Dst: client_get_session_id
      Src: /src/dovecot/src/imap-login/imap-proxy.c:54,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap-login/imap-proxy.c:55,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/imap-login/imap-proxy.c:57,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:64,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/imap-login/imap-proxy.c:65,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:71,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap-login/imap-proxy.c:72,1
    - Dst: t_strcut
      Src: /src/dovecot/src/imap-login/imap-proxy.c:73,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/imap-login/imap-proxy.c:75,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:76,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/imap-login/imap-proxy.c:77,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:78,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/imap-login/imap-proxy.c:79,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:83,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - client
    - str
    argTypes:
    - struct imap_client*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 84
    functionName: proxy_write_id
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - i_strchr_to_next
    - str_len
    - str_append_str
    - imap_append_string
    - client_get_session_id
    - t_strcut
    - str_begins_icase
    - net_ip2addr
    - imap_append_nstring
    - str_append
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void proxy_write_id(struct imap_client *client, string_t *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_get_ssl_flags
      Src: /src/dovecot/src/imap-login/imap-proxy.c:89,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/imap-login/imap-proxy.c:92,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/imap-login/imap-proxy.c:92,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:93,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:94,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - client
    - str
    argTypes:
    - struct imap_client*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 104
    functionName: proxy_write_starttls
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_failed
    - login_proxy_get_ssl_flags
    - t_strsplit
    - str_array_icase_find
    - login_proxy_get_event
    - str_append
    linkageType: ''
    returnType: int
    signature: int proxy_write_starttls(struct imap_client *client, string_t *str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:124,1
    - Dst: login_proxy_get_ssl_flags
      Src: /src/dovecot/src/imap-login/imap-proxy.c:134,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:135,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:136,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:141,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/imap-login/imap-proxy.c:142,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:143,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/imap-login/imap-proxy.c:144,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:145,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-proxy.c:151,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap-login/imap-proxy.c:152,1
    - Dst: login_proxy_get_host
      Src: /src/dovecot/src/imap-login/imap-proxy.c:159,1
    - Dst: login_proxy_get_port
      Src: /src/dovecot/src/imap-login/imap-proxy.c:160,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:162,1
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/imap-login/imap-proxy.c:163,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:165,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:166,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/imap-login/imap-proxy.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-proxy.c:171,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:174,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:175,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:179,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:181,1
    - Dst: base64_encode
      Src: /src/dovecot/src/imap-login/imap-proxy.c:183,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:185,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 2
    argNames:
    - client
    - str
    argTypes:
    - struct imap_client*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 188
    functionName: proxy_write_login
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - i_zero
    - login_proxy_failed
    - login_proxy_get_host
    - str_append_c
    - dsasl_client_mech_get_name
    - login_proxy_get_ssl_flags
    - imap_append_string
    - t_strdup_printf
    - dsasl_client_output
    - base64_encode
    - login_proxy_get_event
    - dsasl_client_new
    - str_append
    - login_proxy_get_port
    - i_assert
    linkageType: ''
    returnType: int
    signature: int proxy_write_login(struct imap_client *client, string_t *str)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:197,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-proxy.c:198,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-login/imap-proxy.c:199,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:200,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:201,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:206,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:207,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/imap-login/imap-proxy.c:208,1
    - Dst: t_strcut
      Src: /src/dovecot/src/imap-login/imap-proxy.c:208,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/imap-login/imap-proxy.c:209,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/imap-login/imap-proxy.c:211,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-login/imap-proxy.c:213,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-login/imap-proxy.c:215,1
    - Dst: t_strcut
      Src: /src/dovecot/src/imap-login/imap-proxy.c:215,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/imap-login/imap-proxy.c:216,1
    - Dst: proxy_write_id
      Src: /src/dovecot/src/imap-login/imap-proxy.c:219,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-login/imap-proxy.c:222,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-login/imap-proxy.c:222,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:222,1
    - Dst: proxy_write_starttls
      Src: /src/dovecot/src/imap-login/imap-proxy.c:228,1
    - Dst: proxy_write_login
      Src: /src/dovecot/src/imap-login/imap-proxy.c:231,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-login/imap-proxy.c:235,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-login/imap-proxy.c:235,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:235,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - client
    - output
    - line
    argTypes:
    - struct imap_client*
    - struct ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 237
    functionName: proxy_input_banner
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_failed
    - t_str_new
    - proxy_write_login
    - str_data
    - str_len
    - proxy_write_id
    - t_strdup_printf
    - proxy_write_starttls
    - t_strsplit
    - str_begins_icase
    - str_sanitize
    - login_proxy_get_event
    - str_array_icase_find
    - i_strdup
    - o_stream_nsend
    - t_strcut
    - i_free
    linkageType: ''
    returnType: int
    signature: "int proxy_input_banner(struct imap_client *client,\n\t\t\t      struct
      ostream *output, const char *line)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:246,1
    - Dst: t_strcut
      Src: /src/dovecot/src/imap-login/imap-proxy.c:249,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-login/imap-proxy.c:257,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:259,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:260,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-login/imap-proxy.c:263,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:272,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:273,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - client
    - str
    - line
    argTypes:
    - struct imap_client*
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 274
    functionName: client_send_login_reply
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 2
    functionsReached:
    - str_append
    - str_begins_icase
    - str_printfa
    - t_strcut
    linkageType: ''
    returnType: void
    signature: "void client_send_login_reply(struct imap_client *client, string_t
      *str,\n\t\t\tconst char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncasecmp
      Src: /src/dovecot/src/imap-login/imap-proxy.c:280,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/imap-proxy.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 282
    functionName: auth_resp_code_is_tempfail
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - strlen
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool auth_resp_code_is_tempfail(const char *resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncasecmp
      Src: /src/dovecot/src/imap-login/imap-proxy.c:288,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/imap-proxy.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 290
    functionName: auth_resp_code_is_serverbug
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - strlen
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool auth_resp_code_is_serverbug(const char *resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncasecmp
      Src: /src/dovecot/src/imap-login/imap-proxy.c:294,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/imap-proxy.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 296
    functionName: auth_resp_code_is_limit
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - strlen
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool auth_resp_code_is_limit(const char *resp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strncasecmp
      Src: /src/dovecot/src/imap-login/imap-proxy.c:305,1
    - Dst: imap_url_parse_prefix
      Src: /src/dovecot/src/imap-login/imap-proxy.c:307,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-login/imap-proxy.c:308,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:308,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-login/imap-proxy.c:310,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-login/imap-proxy.c:314,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:314,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-login/imap-proxy.c:317,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-login/imap-proxy.c:321,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:321,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-login/imap-proxy.c:324,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/imap-login/imap-proxy.c:324,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:328,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-login/imap-proxy.c:330,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:331,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-login/imap-proxy.c:333,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:334,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - client
    - resp
    - userhostport_r
    argTypes:
    - struct client*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 336
    functionName: auth_resp_code_parse_referral
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - imap_url_parse_prefix
    - e_debug
    - str_sanitize
    - strncasecmp
    - login_proxy_get_event
    - str_append
    - uri_char_sanitize
    linkageType: ''
    returnType: bool
    signature: "bool auth_resp_code_parse_referral(struct client *client, const char
      *resp,\n\t\t\t      const char **userhostport_r)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap-login/imap-proxy.c:346,1
    - Dst: login_proxy_get_server_ostream
      Src: /src/dovecot/src/imap-login/imap-proxy.c:348,1
    - Dst: proxy_input_banner
      Src: /src/dovecot/src/imap-login/imap-proxy.c:353,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap-login/imap-proxy.c:362,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:365,1
    - Dst: base64_decode
      Src: /src/dovecot/src/imap-login/imap-proxy.c:367,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/imap-proxy.c:367,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-proxy.c:368,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:370,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:371,1
    - Dst: login_proxy_sasl_step
      Src: /src/dovecot/src/imap-login/imap-proxy.c:375,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:377,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-login/imap-proxy.c:380,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-login/imap-proxy.c:380,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:380,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap-login/imap-proxy.c:382,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap-login/imap-proxy.c:383,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/imap-login/imap-proxy.c:386,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-proxy.c:388,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-login/imap-proxy.c:390,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:391,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:392,1
    - Dst: login_proxy_starttls
      Src: /src/dovecot/src/imap-login/imap-proxy.c:397,1
    - Dst: login_proxy_get_server_ostream
      Src: /src/dovecot/src/imap-login/imap-proxy.c:400,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:401,1
    - Dst: proxy_write_login
      Src: /src/dovecot/src/imap-login/imap-proxy.c:402,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-login/imap-proxy.c:404,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-login/imap-proxy.c:404,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:404,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:406,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap-login/imap-proxy.c:408,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:410,1
    - Dst: client_send_login_reply
      Src: /src/dovecot/src/imap-login/imap-proxy.c:411,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-login/imap-proxy.c:412,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-login/imap-proxy.c:412,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:412,1
    - Dst: client_proxy_finish_destroy_client
      Src: /src/dovecot/src/imap-login/imap-proxy.c:414,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap-login/imap-proxy.c:416,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap-login/imap-proxy.c:417,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:421,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/imap-login/imap-proxy.c:425,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/imap-proxy.c:431,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/imap-login/imap-proxy.c:434,1
    - Dst: auth_resp_code_is_tempfail
      Src: /src/dovecot/src/imap-login/imap-proxy.c:436,1
    - Dst: auth_resp_code_parse_referral
      Src: /src/dovecot/src/imap-login/imap-proxy.c:438,1
    - Dst: auth_resp_code_is_serverbug
      Src: /src/dovecot/src/imap-login/imap-proxy.c:441,1
    - Dst: auth_resp_code_is_limit
      Src: /src/dovecot/src/imap-login/imap-proxy.c:444,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-login/imap-proxy.c:446,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap-login/imap-proxy.c:446,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/imap-proxy.c:457,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:462,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:463,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:466,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-login/imap-proxy.c:467,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-login/imap-proxy.c:468,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap-login/imap-proxy.c:470,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap-login/imap-proxy.c:472,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/imap-login/imap-proxy.c:474,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/imap-login/imap-proxy.c:475,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:479,1
    - Dst: proxy_write_login
      Src: /src/dovecot/src/imap-login/imap-proxy.c:480,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-login/imap-proxy.c:482,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-login/imap-proxy.c:482,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:482,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:486,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/imap-login/imap-proxy.c:490,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:493,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:494,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:495,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-proxy.c:497,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:499,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-login/imap-proxy.c:500,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:500,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-login/imap-proxy.c:502,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:506,1
    - Dst: proxy_write_starttls
      Src: /src/dovecot/src/imap-login/imap-proxy.c:507,1
    - Dst: proxy_write_login
      Src: /src/dovecot/src/imap-login/imap-proxy.c:510,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-login/imap-proxy.c:513,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-login/imap-proxy.c:513,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:513,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/imap-login/imap-proxy.c:517,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:520,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-login/imap-proxy.c:521,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-proxy.c:522,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:524,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:525,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:530,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:531,1
    - Dst: login_proxy_multiplex_input_start
      Src: /src/dovecot/src/imap-login/imap-proxy.c:536,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/imap-login/imap-proxy.c:539,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/imap-login/imap-proxy.c:546,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-login/imap-proxy.c:548,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap-login/imap-proxy.c:548,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-login/imap-proxy.c:552,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/imap-login/imap-proxy.c:552,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-login/imap-proxy.c:554,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 143
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 338
    functionDepth: 3
    functionLinenumber: 338
    functionLinenumberEnd: 557
    functionName: imap_proxy_parse_line
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - proxy_write_login
    - str_len
    - strlen
    - t_strdup_printf
    - auth_resp_code_is_tempfail
    - str_sanitize
    - str_begins_icase
    - login_proxy_get_event
    - i_strdup
    - HAS_NO_BITS
    - auth_resp_code_parse_referral
    - t_str_new
    - auth_resp_code_is_serverbug
    - str_begins_icase_with
    - o_stream_nsend
    - login_proxy_starttls
    - str_data
    - proxy_write_starttls
    - client_send_raw
    - e_error
    - i_assert
    - i_free
    - client_proxy_finish_destroy_client
    - strcmp
    - login_proxy_failed
    - str_begins_with
    - ENUM_NEGATE
    - base64_decode
    - str_begins
    - login_proxy_sasl_step
    - client_send_login_reply
    - client_send_reply_code
    - e_debug
    - auth_resp_code_is_limit
    - login_proxy_multiplex_input_start
    - login_proxy_get_server_ostream
    - str_append
    - t_strconcat
    - proxy_input_banner
    linkageType: ''
    returnType: int
    signature: int imap_proxy_parse_line(struct client *client, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 569
    functionName: imap_proxy_reset
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_proxy_reset(struct client *client)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/imap-proxy.c:582,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/imap-proxy.c:589,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-login/imap-proxy.c:594,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap-login/imap-proxy.c:594,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - imap_client
    - type
    - reason
    argTypes:
    - struct imap_client*
    - enum login_proxy_failure_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 571
    functionDepth: 3
    functionLinenumber: 571
    functionLinenumberEnd: 602
    functionName: imap_proxy_send_failure_reply
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - client_send_reply_code
    - t_strconcat
    - client_send_raw
    linkageType: ''
    returnType: void
    signature: "void imap_proxy_send_failure_reply(struct imap_client *imap_client,\n\t\t\t
      \     enum login_proxy_failure_type type,\n\t\t\t      const char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/imap-login/imap-proxy.c:609,1
    - Dst: login_proxy_get_client_ostream
      Src: /src/dovecot/src/imap-login/imap-proxy.c:615,1
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/imap-login/imap-proxy.c:617,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/imap-login/imap-proxy.c:617,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap-login/imap-proxy.c:622,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-proxy.c:622,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-login/imap-proxy.c:628,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap-login/imap-proxy.c:630,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-login/imap-proxy.c:630,1
    - Dst: login_proxy_replace_client_iostream_pre
      Src: /src/dovecot/src/imap-login/imap-proxy.c:633,1
    - Dst: login_proxy_replace_client_iostream_post
      Src: /src/dovecot/src/imap-login/imap-proxy.c:636,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/imap-login/imap-proxy.c:637,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/imap-login/imap-proxy.c:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 640
    functionName: proxy_side_cmd_compress
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_replace_client_iostream_pre
    - compression_lookup_handler
    - e_debug
    - struct compression_handler*::create_istream
    - str_array_length
    - login_proxy_get_client_ostream
    - t_strdup_printf
    - struct compression_handler*::create_ostream_auto
    - login_proxy_replace_client_iostream_post
    - t_str_lcase
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: "int proxy_side_cmd_compress(struct client *client, const char *const
      *args,\n\t\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap-login/imap-proxy.c:645,1
    - Dst: proxy_side_cmd_compress
      Src: /src/dovecot/src/imap-login/imap-proxy.c:646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - client
    - args
    - error_r
    argTypes:
    - struct client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 642
    functionDepth: 2
    functionLinenumber: 642
    functionLinenumberEnd: 651
    functionName: imap_proxy_side_channel_input
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - strcmp
    - proxy_side_cmd_compress
    linkageType: ''
    returnType: int
    signature: "int imap_proxy_side_channel_input(struct client *client,\n\t\t\t\t
      \ const char *const *args, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-login/imap-proxy.c:658,1
    - Dst: imap_proxy_send_failure_reply
      Src: /src/dovecot/src/imap-login/imap-proxy.c:661,1
    - Dst: client_common_proxy_failed
      Src: /src/dovecot/src/imap-login/imap-proxy.c:662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - client
    - type
    - reason
    - reconnecting
    argTypes:
    - struct client*
    - enum login_proxy_failure_type
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 653
    functionDepth: 4
    functionLinenumber: 653
    functionLinenumberEnd: 663
    functionName: imap_proxy_failed
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - client_common_proxy_failed
    - imap_proxy_send_failure_reply
    - container_of
    linkageType: ''
    returnType: void
    signature: "void imap_proxy_failed(struct client *client,\n\t\t       enum login_proxy_failure_type
      type,\n\t\t       const char *reason, bool reconnecting)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/imap-proxy.c:668,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-login/imap-proxy.c:672,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:673,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:674,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:677,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/imap-proxy.c:679,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/imap-proxy.c:680,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 681
    functionName: imap_proxy_get_state
    functionSourceFile: /src/dovecot/src/imap-login/imap-proxy.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - str_append
    linkageType: ''
    returnType: char
    signature: char *imap_proxy_get_state(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:14,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:15,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 19
    functionName: imap_login_command_lookup
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-commands.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct imap_login_command
    signature: struct imap_login_command *imap_login_command_lookup(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:28,1
    - Dst: p_strdup
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:29,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - commands
    - count
    argTypes:
    - struct imap_login_command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 33
    functionName: imap_login_commands_register
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-commands.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_new
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void imap_login_commands_register(const struct imap_login_command
      *commands,\n\t\t\t\t  unsigned int count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:40,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:42,1
    - Dst: array_delete
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:43,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:44,1
    - Dst: i_panic
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - unreg_cmd
    argTypes:
    - struct imap_login_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 49
    functionName: imap_login_command_unregister
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-commands.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_delete
    - i_panic
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: void
    signature: void imap_login_command_unregister(const struct imap_login_command
      *unreg_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_login_command_unregister
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - commands
    - count
    argTypes:
    - struct imap_login_command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 58
    functionName: imap_login_commands_unregister
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-commands.c
    functionUses: 0
    functionsReached:
    - imap_login_command_unregister
    linkageType: ''
    returnType: void
    signature: "void imap_login_commands_unregister(const struct imap_login_command
      *commands,\n\t\t\t\t    unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:63,1
    - Dst: p_array_init
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: imap_login_commands_init
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-commands.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void imap_login_commands_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/imap-login/imap-login-commands.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: imap_login_commands_deinit
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-commands.c
    functionUses: 1
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void imap_login_commands_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_get_advertised_mechs
      Src: /src/dovecot/src/imap-login/client-authenticate.c:27,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-login/client-authenticate.c:29,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/client-authenticate.c:30,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/client-authenticate.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - client
    - str
    argTypes:
    - struct client*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 33
    functionName: client_authenticate_get_capabilities
    functionSourceFile: /src/dovecot/src/imap-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - sasl_server_get_advertised_mechs
    - str_append_c
    - str_append
    linkageType: ''
    returnType: void
    signature: void client_authenticate_get_capabilities(struct client *client, string_t
      *str)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-login/client-authenticate.c:58,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap-login/client-authenticate.c:60,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/client-authenticate.c:67,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-login/client-authenticate.c:68,1
    - Dst: imap_url_create
      Src: /src/dovecot/src/imap-login/client-authenticate.c:68,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:71,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/client-authenticate.c:72,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:74,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/client-authenticate.c:75,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/client-authenticate.c:80,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/imap-login/client-authenticate.c:85,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:87,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:92,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:96,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:100,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:105,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:109,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:114,1
    - Dst: client_send_reply_code
      Src: /src/dovecot/src/imap-login/client-authenticate.c:118,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 57
    argCount: 4
    argNames:
    - client
    - result
    - reply
    - text
    argTypes:
    - struct client*
    - enum client_auth_result
    - struct client_auth_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 35
    functionDepth: 3
    functionLinenumber: 35
    functionLinenumberEnd: 122
    functionName: imap_client_auth_result
    functionSourceFile: /src/dovecot/src/imap-login/client-authenticate.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - client_send_reply_code
    - imap_url_create
    - client_send_reply
    - str_append
    linkageType: ''
    returnType: void
    signature: "void imap_client_auth_result(struct client *client,\n\t\t\t     enum
      client_auth_result result,\n\t\t\t     const struct client_auth_reply *reply,\n\t\t\t
      \    const char *text)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/imap-login/client-authenticate.c:130,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-login/client-authenticate.c:134,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/client-authenticate.c:136,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-login/client-authenticate.c:140,1
    - Dst: client_auth_begin
      Src: /src/dovecot/src/imap-login/client-authenticate.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - imap_client
    - mech_name
    - init_resp
    argTypes:
    - struct imap_client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 143
    functionName: imap_client_auth_begin
    functionSourceFile: /src/dovecot/src/imap-login/client-authenticate.c
    functionUses: 0
    functionsReached:
    - strcmp
    - client_auth_begin
    - strlen
    - i_strdup_printf
    - i_free
    linkageType: ''
    returnType: int
    signature: "int imap_client_auth_begin(struct imap_client *imap_client, const
      char *mech_name,\n\t\t       const char *init_resp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/imap-login/client-authenticate.c:158,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-login/client-authenticate.c:171,1
    - Dst: i_strndup
      Src: /src/dovecot/src/imap-login/client-authenticate.c:172,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap-login/client-authenticate.c:176,1
    - Dst: client_auth_read_line
      Src: /src/dovecot/src/imap-login/client-authenticate.c:180,1
    - Dst: imap_client_auth_begin
      Src: /src/dovecot/src/imap-login/client-authenticate.c:185,1
    - Dst: t_strdup
      Src: /src/dovecot/src/imap-login/client-authenticate.c:186,1
    - Dst: t_strdup
      Src: /src/dovecot/src/imap-login/client-authenticate.c:187,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/client-authenticate.c:187,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - imap_client
    - parsed_r
    argTypes:
    - struct imap_client*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 188
    functionName: cmd_authenticate
    functionSourceFile: /src/dovecot/src/imap-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - str_c
    - i_stream_get_data
    - i_strndup
    - i_stream_skip
    - imap_client_auth_begin
    - client_auth_read_line
    - t_strdup
    - i_free
    linkageType: ''
    returnType: int
    signature: int cmd_authenticate(struct imap_client *imap_client, bool *parsed_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap-login/client-authenticate.c:197,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/imap-login/client-authenticate.c:198,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/imap-login/client-authenticate.c:199,1
    - Dst: client_check_plaintext_auth
      Src: /src/dovecot/src/imap-login/client-authenticate.c:202,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-login/client-authenticate.c:204,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/imap-login/client-authenticate.c:209,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap-login/client-authenticate.c:210,1
    - Dst: buffer_append
      Src: /src/dovecot/src/imap-login/client-authenticate.c:211,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/client-authenticate.c:211,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/imap-login/client-authenticate.c:212,1
    - Dst: buffer_append
      Src: /src/dovecot/src/imap-login/client-authenticate.c:213,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-login/client-authenticate.c:213,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/imap-login/client-authenticate.c:215,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/imap-login/client-authenticate.c:215,1
    - Dst: base64_encode
      Src: /src/dovecot/src/imap-login/client-authenticate.c:216,1
    - Dst: imap_client_auth_begin
      Src: /src/dovecot/src/imap-login/client-authenticate.c:217,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-login/client-authenticate.c:218,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - imap_client
    - args
    argTypes:
    - struct imap_client*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 219
    functionName: cmd_login
    functionSourceFile: /src/dovecot/src/imap-login/client-authenticate.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - str_c
    - client_check_plaintext_auth
    - strlen
    - t_buffer_create
    - imap_client_auth_begin
    - i_strdup
    - base64_encode
    - imap_arg_get_astring
    - buffer_append_c
    - MAX_BASE64_ENCODED_SIZE
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: int
    signature: int cmd_login(struct imap_client *imap_client, const struct imap_arg
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: DEF
    functionSourceFile: /src/dovecot/src/imap-login/imap-login-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/dns/dns-client.c:29,1
    - Dst: e_error
      Src: /src/dovecot/src/dns/dns-client.c:32,1
    - Dst: event_create
      Src: /src/dovecot/src/dns/dns-client.c:36,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dns/dns-client.c:37,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/dns/dns-client.c:37,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/dns/dns-client.c:39,1
    - Dst: e_debug
      Src: /src/dovecot/src/dns/dns-client.c:42,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/dns/dns-client.c:42,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/dns/dns-client.c:44,1
    - Dst: strcmp
      Src: /src/dovecot/src/dns/dns-client.c:48,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/dns/dns-client.c:49,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/dns/dns-client.c:56,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/dns/dns-client.c:58,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/dns/dns-client.c:59,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/dns/dns-client.c:60,1
    - Dst: e_debug
      Src: /src/dovecot/src/dns/dns-client.c:61,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/dns/dns-client.c:61,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dns/dns-client.c:62,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dns/dns-client.c:63,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/dns/dns-client.c:65,1
    - Dst: t_array_init
      Src: /src/dovecot/src/dns/dns-client.c:66,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dns/dns-client.c:67,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/dns/dns-client.c:69,1
    - Dst: array_push_back
      Src: /src/dovecot/src/dns/dns-client.c:70,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/dns/dns-client.c:72,1
    - Dst: e_debug
      Src: /src/dovecot/src/dns/dns-client.c:73,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/dns/dns-client.c:73,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/dns/dns-client.c:74,1
    - Dst: array_front
      Src: /src/dovecot/src/dns/dns-client.c:74,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dns/dns-client.c:75,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/dns/dns-client.c:76,1
    - Dst: array_front
      Src: /src/dovecot/src/dns/dns-client.c:76,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dns/dns-client.c:77,1
    - Dst: strcmp
      Src: /src/dovecot/src/dns/dns-client.c:79,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/dns/dns-client.c:80,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/dns/dns-client.c:81,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/dns/dns-client.c:82,1
    - Dst: e_debug
      Src: /src/dovecot/src/dns/dns-client.c:83,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/dns/dns-client.c:83,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dns/dns-client.c:84,1
    - Dst: net_gethostbyaddr
      Src: /src/dovecot/src/dns/dns-client.c:85,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/dns/dns-client.c:86,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/dns/dns-client.c:87,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/dns/dns-client.c:88,1
    - Dst: e_debug
      Src: /src/dovecot/src/dns/dns-client.c:89,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/dns/dns-client.c:89,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dns/dns-client.c:90,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dns/dns-client.c:91,1
    - Dst: e_debug
      Src: /src/dovecot/src/dns/dns-client.c:93,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/dns/dns-client.c:93,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dns/dns-client.c:94,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dns/dns-client.c:95,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/dns/dns-client.c:98,1
    - Dst: e_error
      Src: /src/dovecot/src/dns/dns-client.c:99,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/dns/dns-client.c:99,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dns/dns-client.c:100,1
    - Dst: event_unref
      Src: /src/dovecot/src/dns/dns-client.c:103,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 60
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 106
    functionName: dns_client_input_args
    functionSourceFile: /src/dovecot/src/dns/dns-client.c
    functionUses: 0
    functionsReached:
    - event_unref
    - net_gethostbyaddr
    - t_strdup_printf
    - struct event_passthrough*::add_int
    - event_create_passthrough
    - array_front
    - array_append_zero
    - net_addr2ip
    - t_strarray_join
    - event_set_append_log_prefix
    - net_gethostbyname
    - io_loop_time_refresh
    - net_ip2addr
    - event_create
    - e_error
    - struct event_passthrough*::event
    - net_gethosterror
    - o_stream_nsend_str
    - struct event_passthrough*::add_str
    - strcmp
    - array_push_back
    - e_debug
    - t_array_init
    - ARRAY_TYPE
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int dns_client_input_args(struct connection *client, const char *const
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_deinit
      Src: /src/dovecot/src/dns/dns-client.c:110,1
    - Dst: event_unref
      Src: /src/dovecot/src/dns/dns-client.c:111,1
    - Dst: i_free
      Src: /src/dovecot/src/dns/dns-client.c:112,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/dns/dns-client.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: dns_client_destroy
    functionSourceFile: /src/dovecot/src/dns/dns-client.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_free
    - connection_deinit
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void dns_client_destroy(struct connection *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/dns/dns-client.c:132,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/dns/dns-client.c:133,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/dns/dns-client.c:134,1
    - Dst: event_add_category
      Src: /src/dovecot/src/dns/dns-client.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - master_conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/dns/dns-client.c
    functionUses: 0
    functionsReached:
    - master_service_client_connection_accept
    - event_add_category
    - i_new
    - connection_init_server
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *master_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/dns/dns-client.c:141,1
    - Dst: master_getopt
      Src: /src/dovecot/src/dns/dns-client.c:143,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/dns/dns-client.c:146,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/dns/dns-client.c:147,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/dns/dns-client.c:148,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/dns/dns-client.c:151,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/dns/dns-client.c:153,1
    - Dst: master_service_run
      Src: /src/dovecot/src/dns/dns-client.c:154,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/dns/dns-client.c:157,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/dns/dns-client.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 161
    functionName: main
    functionSourceFile: /src/dovecot/src/dns/dns-client.c
    functionUses: 0
    functionsReached:
    - restrict_access_by_env
    - master_service_run
    - connection_list_init
    - master_service_init_finish
    - restrict_access_allow_coredumps
    - master_getopt
    - master_service_init
    - master_service_deinit
    - master_service_init_log
    - connection_list_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_parse
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:46,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:51,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:54,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:58,1
    - Dst: imap_msgpart_set_partial
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:62,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - user
    - url
    - mpurl_r
    - client_error_r
    argTypes:
    - struct mail_user*
    - struct imap_url*
    - struct imap_msgpart_url**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 68
    functionName: imap_msgpart_url_create
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - imap_msgpart_parse
    - i_new
    - imap_msgpart_set_partial
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_create(struct mail_user *user, const struct imap_url
      *url,\n\t\t\t    struct imap_msgpart_url **mpurl_r,\n\t\t\t    const char **client_error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:79,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:81,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:83,1
    - Dst: imap_url_parse
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:88,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:90,1
    - Dst: imap_msgpart_url_create
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:97,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - user
    - selected_box
    - urlstr
    - mpurl_r
    - client_error_r
    argTypes:
    - struct mail_user*
    - struct mailbox*
    - char*
    - struct imap_msgpart_url**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 101
    functionName: imap_msgpart_url_parse
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 1
    functionsReached:
    - i_zero
    - imap_msgpart_url_create
    - mailbox_get_open_status
    - mailbox_get_vname
    - imap_url_parse
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_parse(struct mail_user *user, struct mailbox
      *selected_box,\n\t\t\t   const char *urlstr, struct imap_msgpart_url **mpurl_r,\n\t\t\t
      \  const char **client_error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mpurl
    argTypes:
    - struct imap_msgpart_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: imap_msgpart_url_get_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox
    signature: struct mailbox *imap_msgpart_url_get_mailbox(struct imap_msgpart_url
      *mpurl)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:124,1
    - Dst: mailbox_equals
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:128,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:131,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:132,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:133,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:133,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:136,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:141,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:147,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - mpurl
    - box_r
    - error_code_r
    - client_error_r
    argTypes:
    - struct imap_msgpart_url*
    - struct mailbox**
    - enum mail_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 153
    functionName: imap_msgpart_url_open_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - mail_storage_get_last_error
    - mailbox_free
    - mailbox_open
    - mail_namespace_find
    - mailbox_equals
    - mailbox_alloc
    - mailbox_get_open_status
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_open_mailbox(struct imap_msgpart_url *mpurl,\n\t\t\t\t
      \ struct mailbox **box_r, enum mail_error *error_code_r,\n\t\t\t\t  const char
      **client_error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_url_open_mailbox
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:171,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:176,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:177,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:181,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:183,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - mpurl
    - mail_r
    - client_error_r
    argTypes:
    - struct imap_msgpart_url*
    - struct mail**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 192
    functionName: imap_msgpart_url_open_mail
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 0
    functionsReached:
    - mail_alloc
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - imap_msgpart_url_open_mailbox
    - mail_set_uid
    - mail_free
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_open_mail(struct imap_msgpart_url *mpurl,\n\t\t\t
      \      struct mail **mail_r,\n\t\t\t       const char **client_error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mpurl
    argTypes:
    - struct imap_msgpart_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: imap_msgpart_url_get_part
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct imap_msgpart
    signature: 'struct imap_msgpart *

      imap_msgpart_url_get_part(struct imap_msgpart_url *mpurl)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_set_decode_to_binary
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mpurl
    argTypes:
    - struct imap_msgpart_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: imap_msgpart_url_set_decode_to_binary
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_set_decode_to_binary
    linkageType: ''
    returnType: void
    signature: void imap_msgpart_url_set_decode_to_binary(struct imap_msgpart_url
      *mpurl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:213,1
    - Dst: imap_msgpart_url_open_mail
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:219,1
    - Dst: imap_msgpart_open
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:224,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:226,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - mpurl
    - result_r
    - client_error_r
    argTypes:
    - struct imap_msgpart_url*
    - struct imap_msgpart_open_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 232
    functionName: imap_msgpart_url_read_part
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 1
    functionsReached:
    - imap_msgpart_open
    - imap_msgpart_url_open_mail
    - i_stream_seek
    - mailbox_get_last_error
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_read_part(struct imap_msgpart_url *mpurl,\n\t\t\t
      \      struct imap_msgpart_open_result *result_r,\n\t\t\t       const char **client_error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_url_open_mail
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mpurl
    - client_error_r
    argTypes:
    - struct imap_msgpart_url*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 246
    functionName: imap_msgpart_url_verify
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_url_open_mail
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_verify(struct imap_msgpart_url *mpurl,\n\t\t\t
      \   const char **client_error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_url_open_mail
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:257,1
    - Dst: imap_msgpart_bodypartstructure
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:261,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - mpurl
    - qflags
    - bpstruct_r
    - client_error_r
    argTypes:
    - struct imap_msgpart_url*
    - enum imap_quote_flags
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 268
    functionName: imap_msgpart_url_get_bodypartstructure
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_error
    - imap_msgpart_url_open_mail
    - imap_msgpart_bodypartstructure
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_get_bodypartstructure(struct imap_msgpart_url
      *mpurl,\n\t\t\t\t\t   enum imap_quote_flags qflags,\n\t\t\t\t\t   const char
      **bpstruct_r,\n\t\t\t\t\t   const char **client_error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:276,1
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:278,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:280,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:282,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:284,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:286,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:287,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c:288,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - _mpurl
    argTypes:
    - struct imap_msgpart_url**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: imap_msgpart_url_free
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    functionUses: 1
    functionsReached:
    - imap_msgpart_free
    - mailbox_free
    - mailbox_transaction_rollback
    - i_stream_unref
    - mail_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void imap_msgpart_url_free(struct imap_msgpart_url **_mpurl)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:56,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:58,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:59,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:60,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - name
    - client_error_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 61
    functionName: imap_metadata_verify_entry_name
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 2
    functionsReached:
    - strcasecmp
    - strchr
    - t_strdup_until
    linkageType: ''
    returnType: bool
    signature: "bool imap_metadata_verify_entry_name(const char *name,\n\t\t\t\t     const
      char **client_error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:73,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - imtrans
    - error
    - string
    argTypes:
    - struct imap_metadata_transaction*
    - enum mail_error
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: imap_metadata_transaction_set_error
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void imap_metadata_transaction_set_error(struct imap_metadata_transaction
      *imtrans,\n\t\t\t\t    enum mail_error error, const char *string)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:87,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:89,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:91,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:98,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:105,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:113,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - imtrans
    - entry
    - type_r
    - key_r
    argTypes:
    - struct imap_metadata_transaction*
    - char*
    - enum mail_attribute_type*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 115
    functionName: imap_metadata_entry2key
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - i_unreached
    - str_begins
    - t_str_lcase
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool imap_metadata_entry2key(struct imap_metadata_transaction *imtrans,\n\t\t\tconst
      char *entry, enum mail_attribute_type *type_r,\n\t\t\tconst char **key_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:123,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - imtrans
    argTypes:
    - struct imap_metadata_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 128
    functionName: imap_metadata_get_mailbox_transaction
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 0
    functionsReached:
    - mailbox_open
    - mailbox_transaction_begin
    linkageType: ''
    returnType: int
    signature: int imap_metadata_get_mailbox_transaction(struct imap_metadata_transaction
      *imtrans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_metadata_entry2key
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:136,1
    - Dst: imap_metadata_transaction_set_error
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:137,1
    - Dst: imap_metadata_get_mailbox_transaction
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:142,1
    - Dst: mailbox_attribute_unset
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:145,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - imtrans
    - entry
    - value
    argTypes:
    - struct imap_metadata_transaction*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 147
    functionName: imap_metadata_set
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 2
    functionsReached:
    - mailbox_attribute_set
    - mailbox_attribute_unset
    - imap_metadata_get_mailbox_transaction
    - imap_metadata_transaction_set_error
    - imap_metadata_entry2key
    linkageType: ''
    returnType: int
    signature: "int imap_metadata_set(struct imap_metadata_transaction *imtrans,\n\tconst
      char *entry, const struct mail_attribute_value *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:154,1
    - Dst: imap_metadata_set
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - imtrans
    - entry
    argTypes:
    - struct imap_metadata_transaction*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 156
    functionName: imap_metadata_unset
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imap_metadata_set
    linkageType: ''
    returnType: int
    signature: "int imap_metadata_unset(struct imap_metadata_transaction *imtrans,\n\t\t\tconst
      char *entry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:164,1
    - Dst: imap_metadata_entry2key
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:165,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - imtrans
    - entry
    - value_r
    argTypes:
    - struct imap_metadata_transaction*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 168
    functionName: imap_metadata_get
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_attribute_get
    - imap_metadata_entry2key
    linkageType: ''
    returnType: int
    signature: "int imap_metadata_get(struct imap_metadata_transaction *imtrans,\n\t\t
      \     const char *entry, struct mail_attribute_value *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:176,1
    - Dst: imap_metadata_entry2key
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:177,1
    - Dst: mailbox_attribute_get_stream
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - imtrans
    - entry
    - value_r
    argTypes:
    - struct imap_metadata_transaction*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 180
    functionName: imap_metadata_get_stream
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mailbox_attribute_get_stream
    - imap_metadata_entry2key
    linkageType: ''
    returnType: int
    signature: "int imap_metadata_get_stream(struct imap_metadata_transaction *imtrans,\n\t\t
      \     const char *entry, struct mail_attribute_value *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:194,1
    - Dst: imap_metadata_entry2key
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:195,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:197,1
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - imtrans
    - entry
    argTypes:
    - struct imap_metadata_transaction*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 202
    functionName: imap_metadata_iter_init
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 1
    functionsReached:
    - imap_metadata_entry2key
    - mailbox_attribute_iter_init
    - t_strconcat
    - i_new
    linkageType: ''
    returnType: struct imap_metadata_iter
    signature: "struct imap_metadata_iter *\nimap_metadata_iter_init(struct imap_metadata_transaction
      *imtrans,\n\t\t\tconst char *entry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct imap_metadata_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 209
    functionName: imap_metadata_iter_next
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 1
    functionsReached:
    - mailbox_attribute_iter_next
    linkageType: ''
    returnType: char
    signature: char *imap_metadata_iter_next(struct imap_metadata_iter *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:221,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct imap_metadata_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 224
    functionName: imap_metadata_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 2
    functionsReached:
    - i_free
    - mailbox_attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: int imap_metadata_iter_deinit(struct imap_metadata_iter **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 234
    functionName: imap_metadata_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 2
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct imap_metadata_transaction
    signature: 'struct imap_metadata_transaction *

      imap_metadata_transaction_begin(struct mailbox *box)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:243,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:245,1
    - Dst: imap_metadata_transaction_begin
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 250
    functionName: imap_metadata_transaction_begin_server
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 2
    functionsReached:
    - mail_namespace_find_inbox
    - imap_metadata_transaction_begin
    - mailbox_alloc
    linkageType: ''
    returnType: struct imap_metadata_transaction
    signature: 'struct imap_metadata_transaction *

      imap_metadata_transaction_begin_server(struct mail_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - imtrans
    - set
    argTypes:
    - struct imap_metadata_transaction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 256
    functionName: imap_metadata_transaction_validated_only
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imap_metadata_transaction_validated_only(struct imap_metadata_transaction
      *imtrans,\n\t\t\t\t\t      bool set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:264,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:266,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _imtrans
    argTypes:
    - struct imap_metadata_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 269
    functionName: imap_metadata_transaction_finish
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void imap_metadata_transaction_finish(struct imap_metadata_transaction
      **_imtrans)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:280,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:282,1
    - Dst: imap_metadata_transaction_finish
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - _imtrans
    - error_code_r
    - client_error_r
    argTypes:
    - struct imap_metadata_transaction**
    - enum mail_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 288
    functionName: imap_metadata_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 2
    functionsReached:
    - imap_metadata_transaction_finish
    - mailbox_get_last_error
    - mailbox_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int imap_metadata_transaction_commit(\n\tstruct imap_metadata_transaction
      **_imtrans,\n\tenum mail_error *error_code_r, const char **client_error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:296,1
    - Dst: imap_metadata_transaction_finish
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _imtrans
    argTypes:
    - struct imap_metadata_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: imap_metadata_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 1
    functionsReached:
    - imap_metadata_transaction_finish
    - mailbox_transaction_rollback
    linkageType: ''
    returnType: void
    signature: "void imap_metadata_transaction_rollback(\n\tstruct imap_metadata_transaction
      **_imtrans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:310,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-imap-storage/imap-metadata.c:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - imtrans
    - error_code_r
    argTypes:
    - struct imap_metadata_transaction*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 312
    functionName: imap_metadata_transaction_get_last_error
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    functionUses: 2
    functionsReached:
    - mailbox_get_last_error
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *\nimap_metadata_transaction_get_last_error(\n\tstruct imap_metadata_transaction
      *imtrans,\n\tenum mail_error *error_code_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:63,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:64,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - fetch_type
    argTypes:
    - enum fetch_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 74
    functionName: imap_msgpart_type
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct imap_msgpart
    signature: struct imap_msgpart *imap_msgpart_type(enum fetch_type fetch_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_type
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: imap_msgpart_full
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached:
    - imap_msgpart_type
    linkageType: ''
    returnType: struct imap_msgpart
    signature: struct imap_msgpart *imap_msgpart_full(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_type
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: imap_msgpart_header
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached:
    - imap_msgpart_type
    linkageType: ''
    returnType: struct imap_msgpart
    signature: struct imap_msgpart *imap_msgpart_header(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_type
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: imap_msgpart_body
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached:
    - imap_msgpart_type
    linkageType: ''
    returnType: struct imap_msgpart
    signature: struct imap_msgpart *imap_msgpart_body(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:136,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 27
    argCount: 2
    argNames:
    - parts
    - section
    argTypes:
    - struct message_part*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 138
    functionName: imap_msgpart_find
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct message_part
    signature: 'struct message_part *

      imap_msgpart_find(struct message_part *parts, const char *section)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:151,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:151,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:152,1
    - Dst: imap_parser_finish_line
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:154,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:155,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:160,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:162,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:167,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:167,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:168,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:171,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:176,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:177,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - pool
    - header_list
    - fields
    argTypes:
    - pool_t
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 179
    functionName: imap_msgpart_get_header_fields
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - array_sort
    - p_strdup
    - imap_parser_finish_line
    - t_str_ucase
    - p_array_init
    - array_push_back
    - imap_parser_unref
    - strlen
    - imap_parser_create
    - i_stream_unref
    - imap_arg_get_astring
    - i_stream_create_from_data
    - imap_arg_get_list_full
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_get_header_fields(pool_t pool, const char *header_list,\n\t\t\t
      \      ARRAY_TYPE(const_string) *fields)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:185,1
    - Dst: imap_msgpart_get_header_fields
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:191,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:195,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - msgpart
    - header_list
    argTypes:
    - struct imap_msgpart*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 198
    functionName: imap_msgpart_parse_header_fields
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - array_append_zero
    - imap_msgpart_get_header_fields
    - ARRAY_TYPE
    - array_front
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_parse_header_fields(struct imap_msgpart *msgpart,\n\t\t\t\t
      const char *header_list)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:209,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:210,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:231,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:234,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:239,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:242,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:258,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:260,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:265,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:269,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:274,1
    - Dst: imap_msgpart_parse_header_fields
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:276,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:277,1
    - Dst: imap_msgpart_parse_header_fields
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:279,1
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:284,1
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:295,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 84
    argCount: 2
    argNames:
    - section
    - msgpart_r
    argTypes:
    - char*
    - struct imap_msgpart**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 200
    functionDepth: 3
    functionLinenumber: 200
    functionLinenumberEnd: 299
    functionName: imap_msgpart_parse
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 3
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - p_strdup
    - t_str_ucase
    - p_new
    - p_strndup
    - imap_msgpart_parse_header_fields
    - imap_msgpart_free
    - str_begins
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int imap_msgpart_parse(const char *section, struct imap_msgpart **msgpart_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_close_mailbox
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:307,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _msgpart
    argTypes:
    - struct imap_msgpart**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 309
    functionName: imap_msgpart_free
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 5
    functionsReached:
    - imap_msgpart_close_mailbox
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void imap_msgpart_free(struct imap_msgpart **_msgpart)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - msgpart
    argTypes:
    - struct imap_msgpart*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 325
    functionName: imap_msgpart_contains_body
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_msgpart_contains_body(const struct imap_msgpart *msgpart)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgpart
    argTypes:
    - struct imap_msgpart*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 330
    functionName: imap_msgpart_set_decode_to_binary
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_msgpart_set_decode_to_binary(struct imap_msgpart *msgpart)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - msgpart
    - offset
    - size
    argTypes:
    - struct imap_msgpart*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 337
    functionName: imap_msgpart_set_partial
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imap_msgpart_set_partial(struct imap_msgpart *msgpart,\n\t\t\t
      \     uoff_t offset, uoff_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgpart
    argTypes:
    - struct imap_msgpart*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 342
    functionName: imap_msgpart_get_partial_offset
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t imap_msgpart_get_partial_offset(struct imap_msgpart *msgpart)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgpart
    argTypes:
    - struct imap_msgpart*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 347
    functionName: imap_msgpart_get_partial_size
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t imap_msgpart_get_partial_size(struct imap_msgpart *msgpart)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgpart
    argTypes:
    - struct imap_msgpart*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 352
    functionName: imap_msgpart_get_fetch_data
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: enum mail_fetch_field
    signature: enum mail_fetch_field imap_msgpart_get_fetch_data(struct imap_msgpart
      *msgpart)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msgpart
    - headers
    argTypes:
    - struct imap_msgpart*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 364
    functionName: imap_msgpart_get_wanted_headers
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void imap_msgpart_get_wanted_headers(struct imap_msgpart *msgpart,\n\t\t\t\t
      \    ARRAY_TYPE(const_string) *headers)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:373,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:379,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:380,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:388,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:398,1
    - Dst: message_get_header_size
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:401,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:402,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:403,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:404,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:405,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 6
    argNames:
    - mail
    - mail_input
    - msgpart
    - virtual_size_r
    - have_crlfs_r
    - result_r
    argTypes:
    - struct mail*
    - struct istream*
    - struct imap_msgpart*
    - uoff_t*
    - bool*
    - struct imap_msgpart_open_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 415
    functionName: imap_msgpart_get_partial_header
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - mail_set_critical
    - str_array_length
    - i_stream_ref
    - i_stream_create_header_filter
    - i_stream_get_error
    - i_stream_seek
    - i_stream_unref
    - i_stream_get_name
    - message_get_header_size
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_get_partial_header(struct mail *mail, struct istream
      *mail_input,\n\t\t\t\tconst struct imap_msgpart *msgpart,\n\t\t\t\tuoff_t *virtual_size_r,
      bool *have_crlfs_r,\n\t\t\t\tstruct imap_msgpart_open_result *result_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:433,1
    - Dst: message_skip_virtual
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:436,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:437,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:437,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:438,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:438,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:439,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:458,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:460,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:461,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 3
    argNames:
    - mail
    - input
    - msgpart
    argTypes:
    - struct mail*
    - struct istream*
    - struct imap_msgpart*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 463
    functionName: imap_msgpart_crlf_seek
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - message_skip_virtual
    - i_stream_create_crlf
    - i_stream_set_name
    - i_stream_skip
    - i_stream_get_error
    - i_stream_create_error_str
    - i_stream_seek
    - i_stream_unref
    - i_stream_get_name
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\nimap_msgpart_crlf_seek(struct mail *mail, struct
      istream *input,\n\t\t       const struct imap_msgpart *msgpart)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:478,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:479,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:487,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:491,1
    - Dst: imap_msgpart_crlf_seek
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:492,1
    - Dst: i_stream_create_nonuls
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:508,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:509,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:512,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:513,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 7
    argNames:
    - mail
    - msgpart
    - convert_nuls
    - use_partial_cache
    - virtual_size
    - have_crlfs
    - result
    argTypes:
    - struct mail*
    - struct imap_msgpart*
    - bool
    - bool
    - uoff_t
    - bool
    - struct imap_msgpart_open_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 515
    functionName: imap_msgpart_get_partial
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_crlf_seek
    - i_stream_create_limit
    - i_stream_create_from_data
    - i_stream_skip
    - i_stream_unref
    - i_stream_create_nonuls
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imap_msgpart_get_partial(struct mail *mail, const struct imap_msgpart
      *msgpart,\n\t\t\t bool convert_nuls, bool use_partial_cache,\n\t\t\t uoff_t
      virtual_size, bool have_crlfs,\n\t\t\t struct imap_msgpart_open_result *result)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:528,1
    - Dst: imap_msgpart_find
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:530,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:557,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - mail
    - msgpart
    - part_r
    argTypes:
    - struct mail*
    - struct imap_msgpart*
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 517
    functionDepth: 2
    functionLinenumber: 517
    functionLinenumberEnd: 564
    functionName: imap_msgpart_find_part
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_get_parts
    - imap_msgpart_find
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_find_part(struct mail *mail, const struct imap_msgpart
      *msgpart,\n\t\t       struct message_part **part_r)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:576,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:577,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:578,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:582,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:584,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:587,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:593,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:594,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:598,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:600,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:606,1
    - Dst: mail_get_hdr_stream
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:610,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:618,1
    - Dst: mail_get_header_stream
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:621,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:628,1
    - Dst: imap_msgpart_get_partial_header
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:637,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:654,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:657,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:664,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 73
    argCount: 6
    argNames:
    - mail
    - msgpart
    - part
    - virtual_size_r
    - have_crlfs_r
    - result_r
    argTypes:
    - struct mail*
    - struct imap_msgpart*
    - struct message_part*
    - uoff_t*
    - bool*
    - struct imap_msgpart_open_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 669
    functionName: imap_msgpart_open_normal
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - imap_msgpart_get_partial_header
    - mail_get_physical_size
    - i_unreached
    - mail_get_header_stream
    - i_stream_ref
    - mail_get_hdr_stream
    - mail_get_stream_because
    - i_stream_skip
    - mailbox_header_lookup_init
    - i_stream_seek
    - mail_get_virtual_size
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_open_normal(struct mail *mail, struct imap_msgpart
      *msgpart,\n\t\t\t const struct message_part *part,\n\t\t\t uoff_t *virtual_size_r,
      bool *have_crlfs_r,\n\t\t\t struct imap_msgpart_open_result *result_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:680,1
    - Dst: imap_msgpart_find_part
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:682,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:686,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:697,1
    - Dst: mail_get_binary_stream
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:700,1
    - Dst: imap_msgpart_open_normal
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:708,1
    - Dst: imap_msgpart_get_partial
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:718,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 3
    argNames:
    - mail
    - msgpart
    - result_r
    argTypes:
    - struct mail*
    - struct imap_msgpart*
    - struct imap_msgpart_open_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 671
    functionDepth: 3
    functionLinenumber: 671
    functionLinenumberEnd: 721
    functionName: imap_msgpart_open
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 3
    functionsReached:
    - i_zero
    - imap_msgpart_open_normal
    - mail_get_binary_stream
    - imap_msgpart_find_part
    - mail_get_parts
    - i_stream_create_from_data
    - imap_msgpart_get_partial
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_open(struct mail *mail, struct imap_msgpart *msgpart,\n\t\t
      \     struct imap_msgpart_open_result *result_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_open
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:737,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:739,1
    - Dst: imap_msgpart_find_part
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:745,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:753,1
    - Dst: mail_get_binary_properties
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:757,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - mail
    - msgpart
    - size_r
    argTypes:
    - struct mail*
    - struct imap_msgpart*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 723
    functionDepth: 4
    functionLinenumber: 723
    functionLinenumberEnd: 761
    functionName: imap_msgpart_size
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached:
    - mail_get_binary_properties
    - imap_msgpart_find_part
    - mail_get_parts
    - i_stream_unref
    - imap_msgpart_open
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_size(struct mail *mail, struct imap_msgpart *msgpart,\n\t\t
      \     uoff_t *size_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:770,1
    - Dst: imap_bodystructure_parse
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:778,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:780,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:781,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - mail
    - all_parts
    argTypes:
    - struct mail*
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 787
    functionName: imap_msgpart_parse_bodystructure
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - t_strdup_printf
    - imap_bodystructure_parse
    - mail_set_cache_corrupted
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_parse_bodystructure(struct mail *mail,\n\t\t\t\t
      struct message_part *all_parts)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_binary_properties
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:796,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:799,1
    - Dst: imap_msgpart_vsizes_to_binary
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - mail
    - part
    - binpart_r
    argTypes:
    - struct mail*
    - struct message_part*
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 813
    functionName: imap_msgpart_vsizes_to_binary
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached:
    - t_new
    - imap_msgpart_vsizes_to_binary
    - mail_get_binary_properties
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_vsizes_to_binary(struct mail *mail, const struct
      message_part *part,\n\t\t\t      struct message_part **binpart_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:827,1
    - Dst: imap_msgpart_find_part
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:829,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:837,1
    - Dst: imap_msgpart_parse_bodystructure
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:840,1
    - Dst: imap_msgpart_vsizes_to_binary
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:847,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:850,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:851,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:853,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:855,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:859,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 4
    argNames:
    - mail
    - msgpart
    - qflags
    - bpstruct_r
    argTypes:
    - struct mail*
    - struct imap_msgpart*
    - enum imap_quote_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 815
    functionDepth: 3
    functionLinenumber: 815
    functionLinenumberEnd: 862
    functionName: imap_msgpart_bodypartstructure
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - imap_bodystructure_write
    - mail_set_cache_corrupted
    - mail_add_temp_wanted_fields
    - t_strdup_printf
    - imap_msgpart_vsizes_to_binary
    - imap_msgpart_find_part
    - mail_get_parts
    - imap_msgpart_parse_bodystructure
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_bodypartstructure(struct mail *mail,\n\t\t\t\t   struct
      imap_msgpart *msgpart,\n\t\t\t\t   enum imap_quote_flags qflags,\n\t\t\t\t   const
      char **bpstruct_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-imap-storage/imap-msgpart.c:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgpart
    argTypes:
    - struct imap_msgpart*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 868
    functionName: imap_msgpart_close_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    functionUses: 1
    functionsReached:
    - mailbox_header_lookup_unref
    linkageType: ''
    returnType: void
    signature: void imap_msgpart_close_mailbox(struct imap_msgpart *msgpart)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 10
    functionName: dns_tolower
    functionSourceFile: /src/dovecot/src/lib-dns/dns-util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char dns_tolower(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - a
    - b
    - c
    argTypes:
    - char*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 13
    functionName: strchr_ba
    functionSourceFile: /src/dovecot/src/lib-dns/dns-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *strchr_ba(const char *a, const char *b, char c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:24,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:24,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:27,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:27,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 3
    argNames:
    - a
    - b
    - n
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: dns_ncompare
    functionSourceFile: /src/dovecot/src/lib-dns/dns-util.c
    functionUses: 0
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: int
    signature: int dns_ncompare(const char *a, const char *b, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_ncompare
      Src: /src/dovecot/src/lib-dns/dns-util.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: dns_compare
    functionSourceFile: /src/dovecot/src/lib-dns/dns-util.c
    functionUses: 0
    functionsReached:
    - dns_ncompare
    linkageType: ''
    returnType: int
    signature: int dns_compare(const char *a, const char *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-dns/dns-util.c:41,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dns/dns-util.c:42,1
    - Dst: strchr_ba
      Src: /src/dovecot/src/lib-dns/dns-util.c:48,1
    - Dst: strchr_ba
      Src: /src/dovecot/src/lib-dns/dns-util.c:49,1
    - Dst: dns_ncompare
      Src: /src/dovecot/src/lib-dns/dns-util.c:55,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dns/dns-util.c:56,1
    - Dst: dns_ncompare
      Src: /src/dovecot/src/lib-dns/dns-util.c:58,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:63,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:63,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 64
    functionName: dns_compare_labels
    functionSourceFile: /src/dovecot/src/lib-dns/dns-util.c
    functionUses: 0
    functionsReached:
    - dns_tolower
    - dns_ncompare
    - I_MIN
    - strlen
    - strchr_ba
    linkageType: ''
    returnType: int
    signature: int dns_compare_labels(const char *a, const char *b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns/dns-util.c:68,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-dns/dns-util.c:73,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:80,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:80,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:84,1
    - Dst: dns_tolower
      Src: /src/dovecot/src/lib-dns/dns-util.c:84,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - name
    - mask
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 85
    functionName: dns_match_wildcard
    functionSourceFile: /src/dovecot/src/lib-dns/dns-util.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_assert
    - dns_tolower
    linkageType: ''
    returnType: int
    signature: int dns_match_wildcard(const char *name, const char *mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:35,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:37,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:38,1
    - Dst: dns_compare
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:38,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:39,1
    - Dst: dns_compare_labels
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:39,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 43
    functionName: test_dns_compare
    functionSourceFile: /src/dovecot/src/lib-dns/test-dns-util.c
    functionUses: 0
    functionsReached:
    - dns_compare_labels
    - test_assert_idx
    - test_end
    - dns_compare
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_compare(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:66,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:68,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:69,1
    - Dst: dns_match_wildcard
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:69,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 73
    functionName: test_dns_match
    functionSourceFile: /src/dovecot/src/lib-dns/test-dns-util.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - dns_match_wildcard
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_match(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_compare_labels
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: arr_dns_compare
    functionSourceFile: /src/dovecot/src/lib-dns/test-dns-util.c
    functionUses: 0
    functionsReached:
    - dns_compare_labels
    linkageType: ''
    returnType: int
    signature: int arr_dns_compare(const char *const *a, const char *const *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:99,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:101,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:102,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:104,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:104,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:106,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:108,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:109,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:110,1
    - Dst: dns_compare
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:110,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 81
    functionDepth: 3
    functionLinenumber: 81
    functionLinenumberEnd: 114
    functionName: test_dns_sort
    functionSourceFile: /src/dovecot/src/lib-dns/test-dns-util.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - array_append
    - array_idx_elem
    - t_array_init
    - ARRAY_TYPE
    - dns_compare
    - array_sort
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_sort(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-dns/test-dns-util.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 124
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-dns/test-dns-util.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lmtp/lmtp-local.c:61,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lmtp/lmtp-local.c:63,1
    - Dst: smtp_server_connection_get_stats
      Src: /src/dovecot/src/lmtp/lmtp-local.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 68
    functionName: lmtp_local_init
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - smtp_server_connection_get_stats
    - i_new
    linkageType: ''
    returnType: struct lmtp_local
    signature: 'struct lmtp_local *

      lmtp_local_init(struct client *client)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lmtp/lmtp-local.c:76,1
    - Dst: array_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:77,1
    - Dst: mail_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:84,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lmtp/lmtp-local.c:85,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:86,1
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _local
    argTypes:
    - struct lmtp_local**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 90
    functionName: lmtp_local_deinit
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_transaction_rollback
    - mail_free
    - array_is_created
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void lmtp_local_deinit(struct lmtp_local **_local)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_user_get_input
      Src: /src/dovecot/src/lmtp/lmtp-local.c:105,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lmtp/lmtp-local.c:108,1
    - Dst: master_service_anvil_disconnect
      Src: /src/dovecot/src/lmtp/lmtp-local.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - llrcpt
    argTypes:
    - struct lmtp_local_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 112
    functionName: lmtp_local_rcpt_anvil_disconnect
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_user_get_input
    - master_service_get_name
    - master_service_anvil_disconnect
    linkageType: ''
    returnType: void
    signature: void lmtp_local_rcpt_anvil_disconnect(struct lmtp_local_recipient *llrcpt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_query_abort
      Src: /src/dovecot/src/lmtp/lmtp-local.c:119,1
    - Dst: lmtp_local_rcpt_anvil_disconnect
      Src: /src/dovecot/src/lmtp/lmtp-local.c:120,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:121,1
    - Dst: mail_storage_service_user_unref
      Src: /src/dovecot/src/lmtp/lmtp-local.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - llrcpt
    argTypes:
    - struct smtp_server_recipient*
    - struct lmtp_local_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 123
    functionName: lmtp_local_rcpt_destroy
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - lmtp_local_rcpt_anvil_disconnect
    - anvil_client_query_abort
    - settings_free
    - mail_storage_service_user_unref
    linkageType: ''
    returnType: void
    signature: "void lmtp_local_rcpt_destroy(struct smtp_server_recipient *rcpt ATTR_UNUSED,\n\t\t\tstruct
      lmtp_local_recipient *llrcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:132,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - llrcpt
    - error
    argTypes:
    - struct lmtp_local_recipient*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: lmtp_local_rcpt_reply_overquota
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_reply
    linkageType: ''
    returnType: void
    signature: "void lmtp_local_rcpt_reply_overquota(struct lmtp_local_recipient *llrcpt,\n\t\t\t\tconst
      char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lmtp/lmtp-local.c:147,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lmtp/lmtp-local.c:148,1
    - Dst: va_end
      Src: /src/dovecot/src/lmtp/lmtp-local.c:149,1
    - Dst: array_get
      Src: /src/dovecot/src/lmtp/lmtp-local.c:151,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - local
    - status
    - enh_code
    - fmt
    argTypes:
    - struct lmtp_local*
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 157
    functionName: lmtp_local_rcpt_fail_all
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - va_start
    - array_get
    - t_strdup_vprintf
    - smtp_server_recipient_reply
    - va_end
    linkageType: ''
    returnType: void
    signature: "void lmtp_local_rcpt_fail_all(struct lmtp_local *local,\n\t\t\t unsigned
      int status, const char *enh_code,\n\t\t\t const char *fmt, ...)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_next_with_session_suffix
      Src: /src/dovecot/src/lmtp/lmtp-local.c:187,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:193,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lmtp/lmtp-local.c:194,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lmtp/lmtp-local.c:200,1
    - Dst: mail_storage_service_user_get_log_prefix
      Src: /src/dovecot/src/lmtp/lmtp-local.c:201,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lmtp/lmtp-local.c:202,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lmtp/lmtp-local.c:203,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/lmtp/lmtp-local.c:204,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:206,1
    - Dst: lmtp_local_rcpt_reply_overquota
      Src: /src/dovecot/src/lmtp/lmtp-local.c:208,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:210,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lmtp/lmtp-local.c:213,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:214,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:218,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/lmtp/lmtp-local.c:219,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lmtp/lmtp-local.c:220,1
    - Dst: smtp_server_recipient_is_replied
      Src: /src/dovecot/src/lmtp/lmtp-local.c:223,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - llrcpt
    argTypes:
    - struct lmtp_local_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 228
    functionName: lmtp_local_rcpt_check_quota
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - mail_user_deinit
    - mailbox_get_last_error
    - mailbox_free
    - mailbox_get_last_internal_error
    - mail_storage_service_io_deactivate_user
    - mailbox_get_status
    - lmtp_local_rcpt_reply_overquota
    - i_set_failure_prefix
    - e_error
    - smtp_server_recipient_is_replied
    - smtp_address_encode
    - smtp_server_recipient_reply
    - mail_storage_service_next_with_session_suffix
    - mailbox_alloc
    - mailbox_get_vname
    - mail_namespace_find_inbox
    - mail_storage_service_user_get_log_prefix
    linkageType: ''
    returnType: int
    signature: int lmtp_local_rcpt_check_quota(struct lmtp_local_recipient *llrcpt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_recipient_find_duplicate
      Src: /src/dovecot/src/lmtp/lmtp-local.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-local.c:240,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-local.c:242,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lmtp/lmtp-local.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - rcpt
    - llrcpt
    argTypes:
    - struct smtp_server_recipient*
    - struct lmtp_local_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 247
    functionName: lmtp_local_rcpt_approved
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - i_assert
    - lmtp_recipient_find_duplicate
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void lmtp_local_rcpt_approved(struct smtp_server_recipient *rcpt,\n\t\t\t
      struct lmtp_local_recipient *llrcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_local_rcpt_check_quota
      Src: /src/dovecot/src/lmtp/lmtp-local.c:255,1
    - Dst: smtp_server_cmd_rcpt_reply_success
      Src: /src/dovecot/src/lmtp/lmtp-local.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - llrcpt
    argTypes:
    - struct lmtp_local_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 249
    functionDepth: 3
    functionLinenumber: 249
    functionLinenumberEnd: 260
    functionName: lmtp_local_rcpt_anvil_finish
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - lmtp_local_rcpt_check_quota
    - smtp_server_cmd_rcpt_reply_success
    linkageType: ''
    returnType: bool
    signature: bool lmtp_local_rcpt_anvil_finish(struct lmtp_local_recipient *llrcpt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:273,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lmtp/lmtp-local.c:276,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:277,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:282,1
    - Dst: lmtp_local_rcpt_anvil_finish
      Src: /src/dovecot/src/lmtp/lmtp-local.c:285,1
    - Dst: mail_storage_service_user_get_input
      Src: /src/dovecot/src/lmtp/lmtp-local.c:286,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lmtp/lmtp-local.c:289,1
    - Dst: master_service_anvil_connect
      Src: /src/dovecot/src/lmtp/lmtp-local.c:291,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - reply
    - llrcpt
    argTypes:
    - struct anvil_reply*
    - struct lmtp_local_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 262
    functionDepth: 4
    functionLinenumber: 262
    functionLinenumberEnd: 295
    functionName: lmtp_local_rcpt_anvil_cb
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - master_service_get_name
    - master_service_anvil_connect
    - mail_storage_service_user_get_input
    - lmtp_local_rcpt_anvil_finish
    - e_error
    - smtp_server_recipient_reply
    - str_to_uint
    linkageType: ''
    returnType: void
    signature: "void lmtp_local_rcpt_anvil_cb(const struct anvil_reply *reply,\n\t\t\t
      struct lmtp_local_recipient *llrcpt)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-local.c:308,1
    - Dst: smtp_server_connection_is_ssl_secured
      Src: /src/dovecot/src/lmtp/lmtp-local.c:320,1
    - Dst: mail_storage_service_lookup
      Src: /src/dovecot/src/lmtp/lmtp-local.c:324,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:327,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:329,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:334,1
    - Dst: lmtp_local_init
      Src: /src/dovecot/src/lmtp/lmtp-local.c:341,1
    - Dst: p_new
      Src: /src/dovecot/src/lmtp/lmtp-local.c:343,1
    - Dst: settings_get
      Src: /src/dovecot/src/lmtp/lmtp-local.c:350,1
    - Dst: mail_storage_service_user_get_event
      Src: /src/dovecot/src/lmtp/lmtp-local.c:350,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:353,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:354,1
    - Dst: smtp_server_recipient_add_hook
      Src: /src/dovecot/src/lmtp/lmtp-local.c:359,1
    - Dst: smtp_server_recipient_add_hook
      Src: /src/dovecot/src/lmtp/lmtp-local.c:362,1
    - Dst: mail_storage_service_user_get_input
      Src: /src/dovecot/src/lmtp/lmtp-local.c:370,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lmtp/lmtp-local.c:371,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lmtp/lmtp-local.c:372,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lmtp/lmtp-local.c:373,1
    - Dst: anvil_client_query
      Src: /src/dovecot/src/lmtp/lmtp-local.c:374,1
    - Dst: lmtp_local_rcpt_anvil_finish
      Src: /src/dovecot/src/lmtp/lmtp-local.c:379,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 3
    argNames:
    - client
    - ATTR_UNUSED
    - lrcpt
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct lmtp_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 297
    functionDepth: 4
    functionLinenumber: 297
    functionLinenumberEnd: 382
    functionName: lmtp_local_rcpt
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - i_zero
    - master_service_get_name
    - smtp_server_connection_is_ssl_secured
    - p_new
    - lmtp_local_rcpt_anvil_finish
    - str_tabescape
    - lmtp_local_init
    - e_error
    - smtp_server_recipient_reply
    - mail_storage_service_user_get_event
    - smtp_server_recipient_add_hook
    - mail_storage_service_lookup
    - mail_storage_service_user_get_input
    - settings_get
    - t_strconcat
    - anvil_client_query
    linkageType: ''
    returnType: int
    signature: "int lmtp_local_rcpt(struct client *client,\n\t\t    struct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\t    struct lmtp_recipient *lrcpt)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/lmtp/lmtp-local.c:398,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lmtp/lmtp-local.c:399,1
    - Dst: array_get
      Src: /src/dovecot/src/lmtp/lmtp-local.c:401,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lmtp/lmtp-local.c:417,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lmtp/lmtp-local.c:418,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - local
    - trans
    - headers
    argTypes:
    - struct lmtp_local*
    - struct smtp_server_transaction*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 420
    functionName: lmtp_local_add_headers
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - str_printfa
    - array_get
    linkageType: ''
    returnType: void
    signature: "void lmtp_local_add_headers(struct lmtp_local *local,\n\t\t\t    struct
      smtp_server_transaction *trans,\n\t\t\t    string_t *headers)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_user_get_input
      Src: /src/dovecot/src/lmtp/lmtp-local.c:443,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lmtp/lmtp-local.c:444,1
    - Dst: settings_get
      Src: /src/dovecot/src/lmtp/lmtp-local.c:446,1
    - Dst: mail_storage_service_user_get_event
      Src: /src/dovecot/src/lmtp/lmtp-local.c:446,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:450,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:451,1
    - Dst: smtp_server_connection_get_proxy_data
      Src: /src/dovecot/src/lmtp/lmtp-local.c:456,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lmtp/lmtp-local.c:466,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-local.c:467,1
    - Dst: settings_override
      Src: /src/dovecot/src/lmtp/lmtp-local.c:470,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:473,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-local.c:475,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lmtp/lmtp-local.c:481,1
    - Dst: client_update_data_state
      Src: /src/dovecot/src/lmtp/lmtp-local.c:484,1
    - Dst: mail_storage_service_next
      Src: /src/dovecot/src/lmtp/lmtp-local.c:485,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:487,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:488,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lmtp/lmtp-local.c:496,1
    - Dst: mail_storage_service_user_get_log_prefix
      Src: /src/dovecot/src/lmtp/lmtp-local.c:497,1
    - Dst: settings_get
      Src: /src/dovecot/src/lmtp/lmtp-local.c:500,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:502,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:503,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lmtp/lmtp-local.c:512,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lmtp/lmtp-local.c:514,1
    - Dst: struct client*::v::local_deliver
      Src: /src/dovecot/src/lmtp/lmtp-local.c:517,1
    - Dst: lmtp_local_rcpt_anvil_disconnect
      Src: /src/dovecot/src/lmtp/lmtp-local.c:519,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:521,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 6
    argNames:
    - local
    - ATTR_UNUSED
    - trans
    - llrcpt
    - src_mail
    - session
    argTypes:
    - struct lmtp_local*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct lmtp_local_recipient*
    - struct mail*
    - struct mail_deliver_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 523
    functionName: lmtp_local_deliver
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - struct client*::v::local_deliver
    - t_strdup_printf
    - lmtp_local_rcpt_anvil_disconnect
    - smtp_server_recipient_reply
    - mail_storage_service_user_get_event
    - mail_namespace_find_inbox
    - settings_override
    - t_strdup
    - mail_storage_service_user_get_log_prefix
    - io_loop_time_refresh
    - i_zero
    - mail_storage_service_user_get_settings_instance
    - e_error
    - smtp_server_connection_get_proxy_data
    - mail_storage_service_next
    - settings_free
    - i_set_failure_prefix
    - mail_storage_service_user_get_input
    - settings_get
    - t_strconcat
    - client_update_data_state
    linkageType: ''
    returnType: int
    signature: "int lmtp_local_deliver(struct lmtp_local *local,\n\t\t   struct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\t   struct smtp_server_transaction *trans,\n\t\t   struct
      lmtp_local_recipient *llrcpt,\n\t\t   struct mail *src_mail,\n\t\t   struct
      mail_deliver_session *session)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_deliver
      Src: /src/dovecot/src/lmtp/lmtp-local.c:535,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-local.c:537,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:540,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lmtp/lmtp-local.c:547,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:549,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:552,1
    - Dst: lmtp_local_rcpt_reply_overquota
      Src: /src/dovecot/src/lmtp/lmtp-local.c:555,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-local.c:559,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - local
    - llrcpt
    - lldctx
    - dctx
    argTypes:
    - struct lmtp_local*
    - struct lmtp_local_recipient*
    - struct lmtp_local_deliver_context*
    - struct mail_deliver_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 564
    functionName: lmtp_local_default_do_deliver
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - mail_deliver
    - lmtp_local_rcpt_reply_overquota
    - smtp_server_recipient_reply
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int lmtp_local_default_do_deliver(struct lmtp_local *local,\n\t\t\t
      \     struct lmtp_local_recipient *llrcpt,\n\t\t\t      struct lmtp_local_deliver_context
      *lldctx,\n\t\t\t      struct mail_deliver_context *dctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lmtp/lmtp-local.c:581,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lmtp/lmtp-local.c:582,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-local.c:584,1
    - Dst: mail_deliver_get_address
      Src: /src/dovecot/src/lmtp/lmtp-local.c:602,1
    - Dst: array_count
      Src: /src/dovecot/src/lmtp/lmtp-local.c:611,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lmtp/lmtp-local.c:615,1
    - Dst: mail_deliver_init
      Src: /src/dovecot/src/lmtp/lmtp-local.c:619,1
    - Dst: smtp_server_connection_get_stats
      Src: /src/dovecot/src/lmtp/lmtp-local.c:623,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lmtp/lmtp-local.c:624,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lmtp/lmtp-local.c:626,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lmtp/lmtp-local.c:628,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lmtp/lmtp-local.c:630,1
    - Dst: lmtp_local_default_do_deliver
      Src: /src/dovecot/src/lmtp/lmtp-local.c:633,1
    - Dst: mail_deliver_deinit
      Src: /src/dovecot/src/lmtp/lmtp-local.c:634,1
    - Dst: event_unref
      Src: /src/dovecot/src/lmtp/lmtp-local.c:636,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 5
    argNames:
    - client
    - lrcpt
    - ATTR_UNUSED
    - trans
    - lldctx
    argTypes:
    - struct client*
    - struct lmtp_recipient*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct lmtp_local_deliver_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 566
    functionDepth: 3
    functionLinenumber: 566
    functionLinenumberEnd: 639
    functionName: lmtp_local_default_deliver
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_deliver_get_address
    - event_create
    - timeval_diff_msecs
    - event_unref
    - mail_deliver_deinit
    - mail_deliver_init
    - array_count
    - lmtp_local_default_do_deliver
    - smtp_server_connection_get_stats
    - event_drop_parent_log_prefixes
    - event_add_int
    linkageType: ''
    returnType: int
    signature: "int lmtp_local_default_deliver(struct client *client,\n\t\t\t       struct
      lmtp_recipient *lrcpt,\n\t\t\t       struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t
      \      struct smtp_server_transaction *trans,\n\t\t\t       struct lmtp_local_deliver_context
      *lldctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lmtp/lmtp-local.c:655,1
    - Dst: smtp_server_reply_submit_duplicate
      Src: /src/dovecot/src/lmtp/lmtp-local.c:664,1
    - Dst: lmtp_local_deliver
      Src: /src/dovecot/src/lmtp/lmtp-local.c:670,1
    - Dst: client_update_data_state
      Src: /src/dovecot/src/lmtp/lmtp-local.c:673,1
    - Dst: mail_user_autoexpunge
      Src: /src/dovecot/src/lmtp/lmtp-local.c:682,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lmtp/lmtp-local.c:683,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/lmtp/lmtp-local.c:684,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lmtp/lmtp-local.c:690,1
    - Dst: geteuid
      Src: /src/dovecot/src/lmtp/lmtp-local.c:693,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-local.c:694,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lmtp/lmtp-local.c:696,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 4
    argNames:
    - local
    - cmd
    - trans
    - session
    argTypes:
    - struct lmtp_local*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct mail_deliver_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 641
    functionDepth: 3
    functionLinenumber: 641
    functionLinenumberEnd: 698
    functionName: lmtp_local_deliver_to_rcpts
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - lmtp_local_deliver
    - mail_user_autoexpunge
    - mail_storage_service_io_deactivate_user
    - mail_user_deinit
    - geteuid
    - array_get
    - smtp_server_reply_submit_duplicate
    - i_assert
    - client_update_data_state
    linkageType: ''
    returnType: uid_t
    signature: "uid_t lmtp_local_deliver_to_rcpts(struct lmtp_local *local,\n\t\t\t
      \   struct smtp_server_cmd_ctx *cmd,\n\t\t\t    struct smtp_server_transaction
      *trans,\n\t\t\t    struct mail_deliver_session *session)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: raw_mailbox_alloc_stream
      Src: /src/dovecot/src/lmtp/lmtp-local.c:717,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lmtp/lmtp-local.c:718,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:720,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lmtp/lmtp-local.c:721,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:722,1
    - Dst: lmtp_local_rcpt_fail_all
      Src: /src/dovecot/src/lmtp/lmtp-local.c:723,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lmtp/lmtp-local.c:728,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lmtp/lmtp-local.c:730,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lmtp/lmtp-local.c:731,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lmtp/lmtp-local.c:732,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lmtp/lmtp-local.c:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - local
    - trans
    - input
    argTypes:
    - struct lmtp_local*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 702
    functionDepth: 2
    functionLinenumber: 702
    functionLinenumberEnd: 735
    functionName: lmtp_local_open_raw_mail
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - lmtp_local_rcpt_fail_all
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mail_alloc
    - mailbox_header_lookup_unref
    - raw_mailbox_alloc_stream
    - e_error
    - smtp_address_encode
    - mailbox_header_lookup_init
    - mail_set_seq
    linkageType: ''
    returnType: int
    signature: "int lmtp_local_open_raw_mail(struct lmtp_local *local,\n\t\t\t struct
      smtp_server_transaction *trans,\n\t\t\t struct istream *input)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_local_open_raw_mail
      Src: /src/dovecot/src/lmtp/lmtp-local.c:746,1
    - Dst: mail_deliver_session_init
      Src: /src/dovecot/src/lmtp/lmtp-local.c:749,1
    - Dst: geteuid
      Src: /src/dovecot/src/lmtp/lmtp-local.c:750,1
    - Dst: lmtp_local_deliver_to_rcpts
      Src: /src/dovecot/src/lmtp/lmtp-local.c:751,1
    - Dst: mail_deliver_session_deinit
      Src: /src/dovecot/src/lmtp/lmtp-local.c:752,1
    - Dst: seteuid
      Src: /src/dovecot/src/lmtp/lmtp-local.c:763,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lmtp/lmtp-local.c:764,1
    - Dst: seteuid
      Src: /src/dovecot/src/lmtp/lmtp-local.c:765,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lmtp/lmtp-local.c:766,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/lmtp/lmtp-local.c:769,1
    - Dst: mail_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:770,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lmtp/lmtp-local.c:771,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lmtp/lmtp-local.c:772,1
    - Dst: mail_user_autoexpunge
      Src: /src/dovecot/src/lmtp/lmtp-local.c:773,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lmtp/lmtp-local.c:774,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/lmtp/lmtp-local.c:775,1
    - Dst: mail_storage_service_restore_privileges
      Src: /src/dovecot/src/lmtp/lmtp-local.c:782,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - client
    - cmd
    - trans
    - input
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 737
    functionDepth: 4
    functionLinenumber: 737
    functionLinenumberEnd: 785
    functionName: lmtp_local_data
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-local.c
    functionUses: 0
    functionsReached:
    - seteuid
    - mail_storage_service_restore_privileges
    - mail_user_autoexpunge
    - geteuid
    - mailbox_free
    - mail_storage_service_io_deactivate_user
    - mail_user_deinit
    - mailbox_transaction_rollback
    - i_fatal
    - mail_storage_service_io_activate_user
    - mail_deliver_session_deinit
    - mail_free
    - mail_deliver_session_init
    - lmtp_local_deliver_to_rcpts
    - lmtp_local_open_raw_mail
    linkageType: ''
    returnType: void
    signature: "void lmtp_local_data(struct client *client,\n\t\t     struct smtp_server_cmd_ctx
      *cmd,\n\t\t     struct smtp_server_transaction *trans,\n\t\t     struct istream
      *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: IS_STANDALONE
    functionSourceFile: /src/dovecot/src/lmtp/main.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STANDALONE()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - new_hook
    argTypes:
    - lmtp_client_created_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: lmtp_client_created_hook_set
    functionSourceFile: /src/dovecot/src/lmtp/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: lmtp_client_created_func_t
    signature: 'lmtp_client_created_func_t *

      lmtp_client_created_hook_set(lmtp_client_created_func_t *new_hook)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/main.c:48,1
    - Dst: anvil_client_init
      Src: /src/dovecot/src/lmtp/main.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: lmtp_anvil_init
    functionSourceFile: /src/dovecot/src/lmtp/main.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - anvil_client_init
    linkageType: ''
    returnType: void
    signature: void lmtp_anvil_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/lmtp/main.c:55,1
    - Dst: client_create
      Src: /src/dovecot/src/lmtp/main.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/lmtp/main.c
    functionUses: 0
    functionsReached:
    - client_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/lmtp/main.c:64,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lmtp/main.c:65,1
    - Dst: restrict_access_get_env
      Src: /src/dovecot/src/lmtp/main.c:68,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/lmtp/main.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 70
    functionName: drop_privileges
    functionSourceFile: /src/dovecot/src/lmtp/main.c
    functionUses: 1
    functionsReached:
    - restrict_access_by_env
    - restrict_access_get_env
    - i_fatal
    - master_service_settings_read_simple
    linkageType: ''
    returnType: void
    signature: void drop_privileges(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/main.c:77,1
    - Dst: smtp_server_init
      Src: /src/dovecot/src/lmtp/main.c:84,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/lmtp/main.c:86,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/main.c:87,1
    - Dst: client_create
      Src: /src/dovecot/src/lmtp/main.c:88,1
    - Dst: t_abspath
      Src: /src/dovecot/src/lmtp/main.c:92,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lmtp/main.c:93,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lmtp/main.c:95,1
    - Dst: mail_deliver_hooks_init
      Src: /src/dovecot/src/lmtp/main.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 97
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lmtp/main.c
    functionUses: 3
    functionsReached:
    - i_zero
    - i_fatal
    - IS_STANDALONE
    - i_strdup
    - mail_deliver_hooks_init
    - smtp_server_init
    - client_create
    - t_abspath
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clients_destroy
      Src: /src/dovecot/src/lmtp/main.c:101,1
    - Dst: anvil_client_deinit
      Src: /src/dovecot/src/lmtp/main.c:103,1
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/main.c:104,1
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/main.c:105,1
    - Dst: smtp_server_deinit
      Src: /src/dovecot/src/lmtp/main.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 107
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lmtp/main.c
    functionUses: 3
    functionsReached:
    - smtp_server_deinit
    - clients_destroy
    - i_free
    - anvil_client_deinit
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/lmtp/main.c:120,1
    - Dst: master_service_init
      Src: /src/dovecot/src/lmtp/main.c:125,1
    - Dst: master_getopt
      Src: /src/dovecot/src/lmtp/main.c:127,1
    - Dst: t_get_working_dir
      Src: /src/dovecot/src/lmtp/main.c:139,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lmtp/main.c:140,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lmtp/main.c:141,1
    - Dst: drop_privileges
      Src: /src/dovecot/src/lmtp/main.c:143,1
    - Dst: master_service_init_log_with_pid
      Src: /src/dovecot/src/lmtp/main.c:144,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/lmtp/main.c:146,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/lmtp/main.c:148,1
    - Dst: main_init
      Src: /src/dovecot/src/lmtp/main.c:150,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/lmtp/main.c:151,1
    - Dst: master_service_run
      Src: /src/dovecot/src/lmtp/main.c:152,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lmtp/main.c:154,1
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/lmtp/main.c:155,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/lmtp/main.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 158
    functionName: main
    functionSourceFile: /src/dovecot/src/lmtp/main.c
    functionUses: 0
    functionsReached:
    - main_init
    - master_service_run
    - drop_privileges
    - master_service_init_log_with_pid
    - mail_storage_service_deinit
    - i_fatal
    - IS_STANDALONE
    - main_deinit
    - master_service_init_finish
    - i_strdup
    - mail_storage_service_init
    - restrict_access_allow_coredumps
    - t_get_working_dir
    - master_getopt
    - master_service_init
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:23,1
    - Dst: smtp_address_detail_parse_temp
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:29,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:31,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:32,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:43,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:45,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:49,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:56,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - client
    - trans
    - rcpt
    argTypes:
    - struct client*
    - struct smtp_server_transaction*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 62
    functionName: lmtp_recipient_create
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-recipient.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - p_array_init
    - smtp_address_detail_parse_temp
    - event_add_str
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: struct lmtp_recipient
    signature: "struct lmtp_recipient *\nlmtp_recipient_create(struct client *client,\n\t\t
      \     struct smtp_server_transaction *trans,\n\t\t      struct smtp_server_recipient
      *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:71,1
    - Dst: smtp_server_transaction_find_rcpt_duplicate
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:77,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-recipient.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - lrcpt
    - trans
    argTypes:
    - struct lmtp_recipient*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 81
    functionName: lmtp_recipient_find_duplicate
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-recipient.c
    functionUses: 1
    functionsReached:
    - smtp_server_transaction_find_rcpt_duplicate
    - i_assert
    linkageType: ''
    returnType: struct lmtp_recipient
    signature: "struct lmtp_recipient *\nlmtp_recipient_find_duplicate(struct lmtp_recipient
      *lrcpt,\n\t\t\t      struct smtp_server_transaction *trans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:111,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:114,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:115,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:117,1
    - Dst: smtp_server_connection_get_proxy_data
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:123,1
    - Dst: smtp_server_connection_is_ssl_secured
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:133,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 2
    argNames:
    - client
    - trans
    argTypes:
    - struct client*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 153
    functionName: lmtp_proxy_init
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_zero
    - smtp_server_connection_is_ssl_secured
    - i_new
    - smtp_server_connection_get_proxy_data
    - smtp_client_init
    linkageType: ''
    returnType: struct lmtp_proxy
    signature: "struct lmtp_proxy *\nlmtp_proxy_init(struct client *client,\n\t\tstruct
      smtp_server_transaction *trans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_destroy
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:158,1
    - Dst: smtp_client_connection_close
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:160,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:161,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:162,1
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:163,1
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct lmtp_proxy_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 165
    functionName: lmtp_proxy_connection_deinit
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_close
    - smtp_client_transaction_destroy
    - i_stream_unref
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void lmtp_proxy_connection_deinit(struct lmtp_proxy_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:174,1
    - Dst: lmtp_proxy_connection_deinit
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:175,1
    - Dst: smtp_client_deinit
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:177,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:178,1
    - Dst: array_free
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:179,1
    - Dst: array_free
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:180,1
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - _proxy
    argTypes:
    - struct lmtp_proxy**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 182
    functionName: lmtp_proxy_deinit
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - lmtp_proxy_connection_deinit
    - smtp_client_deinit
    - i_stream_unref
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void lmtp_proxy_deinit(struct lmtp_proxy **_proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - proxy_reply ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - struct lmtp_proxy_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 189
    functionName: lmtp_proxy_mail_cb
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_mail_cb(const struct smtp_reply *proxy_reply ATTR_UNUSED,\n\t\t
      \  struct lmtp_proxy_connection *conn ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct lmtp_proxy_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 195
    functionName: lmtp_proxy_connection_finish
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lmtp_proxy_connection_finish(struct lmtp_proxy_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_get_extra_capability
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct lmtp_proxy_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: lmtp_proxy_connection_has_rcpt_forward
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_get_extra_capability
    linkageType: ''
    returnType: bool
    signature: bool lmtp_proxy_connection_has_rcpt_forward(struct lmtp_proxy_connection
      *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:223,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:225,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:228,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:230,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:231,1
    - Dst: i_new
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:236,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:240,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:246,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:255,1
    - Dst: smtp_client_connection_create_ip
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:265,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:270,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:276,1
    - Dst: smtp_client_connection_update_proxy_data
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:279,1
    - Dst: smtp_client_connection_accept_extra_capability
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:280,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:282,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:284,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:288,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - proxy
    - set
    argTypes:
    - struct lmtp_proxy*
    - struct lmtp_proxy_rcpt_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 294
    functionName: lmtp_proxy_get_connection
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_zero
    - smtp_client_transaction_start
    - smtp_client_connection_create
    - smtp_client_connection_connect
    - array_foreach_elem
    - array_push_back
    - smtp_client_connection_create_ip
    - smtp_client_transaction_create
    - smtp_client_connection_update_proxy_data
    - t_strdup_printf
    - i_strdup
    - smtp_client_connection_accept_extra_capability
    - i_new
    - i_assert
    - net_ip_compare
    linkageType: ''
    returnType: struct lmtp_proxy_connection
    signature: "struct lmtp_proxy_connection *\nlmtp_proxy_get_connection(struct lmtp_proxy
      *proxy,\n\t\t\t  const struct lmtp_proxy_rcpt_settings *set)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:306,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:308,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:337,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - lprcpt
    - reply
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 340
    functionName: lmtp_proxy_handle_connection_error
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - smtp_server_command_fail
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_handle_connection_error(struct lmtp_proxy_recipient
      *lprcpt,\n\t\t\t\t   const struct smtp_reply *reply)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_is_remote
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:349,1
    - Dst: lmtp_proxy_handle_connection_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:351,1
    - Dst: smtp_reply_has_enhanced_code
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:355,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:357,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - lprcpt
    - reply
    - reply_r
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct smtp_reply*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 360
    functionName: lmtp_proxy_handle_reply
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_is_remote
    - smtp_reply_has_enhanced_code
    - lmtp_proxy_handle_connection_error
    linkageType: ''
    returnType: bool
    signature: "bool lmtp_proxy_handle_reply(struct lmtp_proxy_recipient *lprcpt,\n\t\t\tconst
      struct smtp_reply *reply,\n\t\t\tstruct smtp_reply *reply_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - lprcpt
    argTypes:
    - struct smtp_server_recipient*
    - struct lmtp_proxy_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 374
    functionName: lmtp_proxy_rcpt_destroy
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_rcpt_destroy(struct smtp_server_recipient *rcpt ATTR_UNUSED,\n\t\t\tstruct
      lmtp_proxy_recipient *lprcpt)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:391,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:396,1
    - Dst: auth_proxy_settings_parse
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:400,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:403,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:410,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:412,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:413,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:417,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:422,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:426,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:429,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:431,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:433,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:435,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:436,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:437,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:452,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:460,1
    - Dst: str_data
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:461,1
    - Dst: str_len
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:461,1
    - Dst: str_len
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:462,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 67
    argCount: 4
    argNames:
    - lprcpt
    - set
    - args
    - address
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct lmtp_proxy_rcpt_settings*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 465
    functionName: lmtp_proxy_rcpt_parse_fields
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - e_error
    - str_begins_icase
    - auth_proxy_settings_parse
    - str_append_tabescaped
    - t_strdup_until
    - p_memdup
    linkageType: ''
    returnType: int
    signature: "int lmtp_proxy_rcpt_parse_fields(struct lmtp_proxy_recipient *lprcpt,\n\t\t\t
      \    struct lmtp_proxy_rcpt_settings *set,\n\t\t\t     const char *const *args,
      const char **address)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:474,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:476,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:477,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:478,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:480,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:481,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - lprcpt
    - str
    argTypes:
    - struct lmtp_proxy_recipient*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 484
    functionName: lmtp_proxy_rcpt_get_redirect_path
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - array_foreach
    - array_is_created
    - i_assert
    - net_ipport2str
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_rcpt_get_redirect_path(struct lmtp_proxy_recipient
      *lprcpt,\n\t\t\t\t  string_t *str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:495,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:497,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:499,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:502,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:503,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - lprcpt
    - ip
    - port
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 507
    functionName: lmtp_proxy_rcpt_have_connected
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - array_foreach
    - array_is_created
    - i_assert
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool lmtp_proxy_rcpt_have_connected(struct lmtp_proxy_recipient *lprcpt,\n\t\t\t
      \      const struct ip_addr *ip, in_port_t port)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:521,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:524,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - client
    - set
    argTypes:
    - struct client*
    - struct lmtp_proxy_rcpt_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 527
    functionName: lmtp_proxy_is_ourself
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool lmtp_proxy_is_ourself(const struct client *client,\n\t\t      const
      struct lmtp_proxy_rcpt_settings *set)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_get_proxy_data
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:541,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:544,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:546,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:547,1
    - Dst: smtp_server_connection_get_transaction
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:554,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:555,1
    - Dst: lmtp_proxy_init
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:557,1
    - Dst: lmtp_proxy_get_connection
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:562,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:563,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:565,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:567,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - lprcpt
    - set
    - conn_r
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct lmtp_proxy_rcpt_settings*
    - struct lmtp_proxy_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 529
    functionDepth: 2
    functionLinenumber: 529
    functionLinenumberEnd: 572
    functionName: lmtp_proxy_rcpt_get_connection
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - event_add_ip
    - lmtp_proxy_init
    - lmtp_proxy_get_connection
    - e_error
    - smtp_address_encode
    - smtp_server_recipient_reply
    - smtp_server_connection_get_proxy_data
    - event_add_str
    - i_assert
    - smtp_server_connection_get_transaction
    linkageType: ''
    returnType: int
    signature: "int lmtp_proxy_rcpt_get_connection(struct lmtp_proxy_recipient *lprcpt,\n\t\t\t
      \      const struct lmtp_proxy_rcpt_settings *set,\n\t\t\t       struct lmtp_proxy_connection
      **conn_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:580,1
    - Dst: smtp_proxy_redirect_parse
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - proxy_reply
    - destuser_r
    - host_r
    - ip_r
    - port_r
    - error_r
    argTypes:
    - struct smtp_reply*
    - char**
    - char**
    - struct ip_addr*
    - in_port_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 584
    functionName: lmtp_proxy_rcpt_parse_redirect
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - smtp_proxy_redirect_parse
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int lmtp_proxy_rcpt_parse_redirect(const struct smtp_reply *proxy_reply,\n\t\t\t
      \      const char **destuser_r,\n\t\t\t       const char **host_r, struct ip_addr
      *ip_r,\n\t\t\t       in_port_t *port_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_proxy_rcpt_have_connected
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:598,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:599,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:601,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:602,1
    - Dst: lmtp_proxy_is_ourself
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:606,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:607,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:608,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:609,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:614,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:618,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:619,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:620,1
    - Dst: e_debug
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:625,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:625,1
    - Dst: lmtp_proxy_rcpt_get_connection
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:627,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:630,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - lprcpt
    - set
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct lmtp_proxy_rcpt_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 586
    functionDepth: 3
    functionLinenumber: 586
    functionLinenumberEnd: 632
    functionName: lmtp_proxy_rcpt_redirect_finish
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - lmtp_proxy_is_ourself
    - e_debug
    - lmtp_proxy_rcpt_get_connection
    - lmtp_proxy_rcpt_have_connected
    - e_error
    - smtp_server_recipient_reply
    - smtp_address_encode
    - net_ip2addr
    - array_is_created
    - i_assert
    - net_ipport2str
    - smtp_client_connection_connect
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_rcpt_redirect_finish(struct lmtp_proxy_recipient *lprcpt,\n\t\t\t\tstruct
      lmtp_proxy_rcpt_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:640,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - lrcpt
    - info_r
    argTypes:
    - struct lmtp_recipient*
    - struct auth_user_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 652
    functionName: lmtp_proxy_rcpt_init_auth_user_info
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - i_zero
    - master_service_get_name
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_rcpt_init_auth_user_info(struct lmtp_recipient *lrcpt,\n\t\t\t\t
      \   struct auth_user_info *info_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_proxy_rcpt_init_auth_user_info
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:668,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:670,1
    - Dst: str_append
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:671,1
    - Dst: lmtp_proxy_rcpt_get_redirect_path
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:672,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:674,1
    - Dst: str_c
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:676,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:677,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:677,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:678,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:680,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:680,1
    - Dst: array_append
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:681,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:682,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:685,1
    - Dst: mail_storage_service_get_auth_conn
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:686,1
    - Dst: auth_master_pass_lookup
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:687,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:693,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:697,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:698,1
    - Dst: lmtp_proxy_rcpt_parse_fields
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:702,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:704,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:709,1
    - Dst: smtp_server_recipient_reply_redirect
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:720,1
    - Dst: lmtp_proxy_rcpt_redirect_finish
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:722,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:724,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - lprcpt
    - set
    - destuser
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct lmtp_proxy_rcpt_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 654
    functionDepth: 4
    functionLinenumber: 654
    functionLinenumberEnd: 725
    functionName: lmtp_proxy_rcpt_redirect_relookup
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - str_c
    - smtp_server_recipient_reply_redirect
    - t_strdup_printf
    - pool_unref
    - smtp_server_recipient_reply
    - t_str_new
    - lmtp_proxy_rcpt_get_redirect_path
    - str_tabescape
    - lmtp_proxy_rcpt_parse_fields
    - lmtp_proxy_rcpt_redirect_finish
    - e_error
    - N_ELEMENTS
    - pool_alloconly_create
    - mail_storage_service_get_auth_conn
    - auth_master_pass_lookup
    - t_array_init
    - str_append
    - array_append
    - lmtp_proxy_rcpt_init_auth_user_info
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_rcpt_redirect_relookup(struct lmtp_proxy_recipient
      *lprcpt,\n\t\t\t\t  struct lmtp_proxy_rcpt_settings *set,\n\t\t\t\t  const char
      *destuser)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_proxy_rcpt_parse_redirect
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:739,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:741,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:743,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:743,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:744,1
    - Dst: lmtp_proxy_rcpt_redirect_relookup
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:755,1
    - Dst: lmtp_proxy_rcpt_redirect_finish
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:757,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - lprcpt
    - proxy_reply
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 727
    functionDepth: 5
    functionLinenumber: 727
    functionLinenumberEnd: 758
    functionName: lmtp_proxy_rcpt_redirect
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - lmtp_proxy_rcpt_parse_redirect
    - lmtp_proxy_rcpt_redirect_finish
    - lmtp_proxy_rcpt_redirect_relookup
    - e_error
    - str_sanitize
    - smtp_server_recipient_reply
    - smtp_reply_log
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_rcpt_redirect(struct lmtp_proxy_recipient *lprcpt,\n\t\t\t
      const struct smtp_reply *proxy_reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - lprcpt
    argTypes:
    - struct smtp_server_recipient*
    - struct lmtp_proxy_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 768
    functionName: lmtp_proxy_rcpt_approved
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_rcpt_approved(struct smtp_server_recipient *rcpt ATTR_UNUSED,\n\t\t\t
      struct lmtp_proxy_recipient *lprcpt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_proxy_handle_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:777,1
    - Dst: smtp_reply_is_proxy_redirect
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:780,1
    - Dst: lmtp_proxy_rcpt_redirect
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:781,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:785,1
    - Dst: smtp_reply_has_enhanced_code
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:789,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:790,1
    - Dst: smtp_server_recipient_reply_forward
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:794,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - proxy_reply
    - lprcpt
    argTypes:
    - struct smtp_reply*
    - struct lmtp_proxy_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 770
    functionDepth: 6
    functionLinenumber: 770
    functionLinenumberEnd: 795
    functionName: lmtp_proxy_rcpt_cb
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - lmtp_proxy_rcpt_redirect
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_is_proxy_redirect
    - smtp_server_recipient_reply_forward
    - smtp_reply_has_enhanced_code
    - lmtp_proxy_handle_reply
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_rcpt_cb(const struct smtp_reply *proxy_reply,\n\t\t
      \  struct lmtp_proxy_recipient *lprcpt)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_get_remote_ip
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:811,1
    - Dst: lmtp_proxy_handle_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:815,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:817,1
    - Dst: smtp_server_recipient_reply_forward
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:818,1
    - Dst: smtp_params_rcpt_has_orcpt
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:825,1
    - Dst: smtp_address_equals
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:826,1
    - Dst: lmtp_proxy_connection_has_rcpt_forward
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:831,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:837,1
    - Dst: p_new
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:838,1
    - Dst: smtp_params_rcpt_copy
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:839,1
    - Dst: smtp_params_rcpt_set_orcpt
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:844,1
    - Dst: smtp_params_rcpt_encode_extra
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:849,1
    - Dst: smtp_client_transaction_add_pool_rcpt
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:855,1
    - Dst: smtp_client_transaction_rcpt_set_data_callback
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:858,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - proxy_reply
    - context
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 797
    functionDepth: 3
    functionLinenumber: 797
    functionLinenumberEnd: 860
    functionName: lmtp_proxy_rcpt_login_cb
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - smtp_params_rcpt_copy
    - p_new
    - smtp_address_equals
    - smtp_params_rcpt_has_orcpt
    - smtp_server_recipient_reply_forward
    - smtp_client_connection_get_remote_ip
    - smtp_params_rcpt_encode_extra
    - pool_datastack_create
    - smtp_params_rcpt_set_orcpt
    - smtp_client_transaction_rcpt_set_data_callback
    - lmtp_proxy_connection_has_rcpt_forward
    - lmtp_proxy_handle_reply
    - smtp_client_transaction_add_pool_rcpt
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: void lmtp_proxy_rcpt_login_cb(const struct smtp_reply *proxy_reply,
      void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:875,1
    - Dst: smtp_server_recipient_reply_redirect
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - lprcpt
    - set
    - destuser
    argTypes:
    - struct lmtp_proxy_recipient*
    - struct lmtp_proxy_rcpt_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 862
    functionDepth: 1
    functionLinenumber: 862
    functionLinenumberEnd: 888
    functionName: lmtp_proxy_rcpt_handle_not_proxied
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_reply_redirect
    - smtp_server_recipient_reply
    linkageType: ''
    returnType: int
    signature: "int lmtp_proxy_rcpt_handle_not_proxied(struct lmtp_proxy_recipient
      *lprcpt,\n\t\t\t\t   struct lmtp_proxy_rcpt_settings *set,\n\t\t\t\t   const
      char *destuser)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:907,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:913,1
    - Dst: mail_storage_service_init_settings
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:915,1
    - Dst: lmtp_proxy_rcpt_init_auth_user_info
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:917,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:921,1
    - Dst: mail_storage_service_get_auth_conn
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:922,1
    - Dst: auth_master_pass_lookup
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:923,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:927,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:929,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:931,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:941,1
    - Dst: lmtp_proxy_rcpt_parse_fields
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:947,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:949,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:952,1
    - Dst: lmtp_proxy_rcpt_handle_not_proxied
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:957,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:958,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:961,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:964,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:965,1
    - Dst: smtp_address_parse_username
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:967,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:967,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:969,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:972,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:975,1
    - Dst: smtp_address_add_detail_temp
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:982,1
    - Dst: lmtp_proxy_is_ourself
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:985,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:986,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:988,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:990,1
    - Dst: lmtp_proxy_rcpt_get_connection
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:994,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:995,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:999,1
    - Dst: smtp_server_recipient_add_hook
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1001,1
    - Dst: smtp_server_recipient_add_hook
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1004,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1008,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1010,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 69
    argCount: 3
    argNames:
    - client
    - ATTR_UNUSED
    - lrcpt
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct lmtp_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 890
    functionDepth: 3
    functionLinenumber: 890
    functionLinenumberEnd: 1013
    functionName: lmtp_proxy_rcpt
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - lmtp_proxy_is_ourself
    - pool_unref
    - smtp_server_recipient_reply
    - t_strdup
    - mail_storage_service_init_settings
    - p_new
    - lmtp_proxy_rcpt_get_connection
    - smtp_address_parse_username
    - smtp_server_recipient_add_hook
    - lmtp_proxy_rcpt_handle_not_proxied
    - event_add_str
    - lmtp_proxy_rcpt_parse_fields
    - i_zero
    - e_error
    - smtp_address_clone
    - pool_datastack_create
    - strcmp
    - pool_alloconly_create
    - mail_storage_service_get_auth_conn
    - smtp_address_add_detail_temp
    - auth_master_pass_lookup
    - smtp_client_connection_connect
    - lmtp_proxy_rcpt_init_auth_user_info
    linkageType: ''
    returnType: int
    signature: "int lmtp_proxy_rcpt(struct client *client,\n\t\t    struct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\t    struct lmtp_recipient *lrcpt)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_get_times
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1030,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1036,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1037,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1038,1
    - Dst: str_append
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1039,1
    - Dst: str_append
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1041,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1042,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1043,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1045,1
    - Dst: array_count
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1046,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1047,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1050,1
    - Dst: e_info
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1052,1
    - Dst: str_c
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1052,1
    - Dst: smtp_reply_printf
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1055,1
    - Dst: smtp_reply_has_enhanced_code
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1057,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1058,1
    - Dst: smtp_reply_is_remote
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1063,1
    - Dst: e_info
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1067,1
    - Dst: str_c
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1067,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1069,1
    - Dst: str_c
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1069,1
    - Dst: lmtp_proxy_handle_reply
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1072,1
    - Dst: smtp_server_recipient_reply_forward
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1077,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - proxy_reply
    - lprcpt
    argTypes:
    - struct smtp_reply*
    - struct lmtp_proxy_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1019
    functionDepth: 3
    functionLinenumber: 1019
    functionLinenumberEnd: 1078
    functionName: lmtp_proxy_data_cb
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - timeval_diff_msecs
    - e_info
    - smtp_client_transaction_get_times
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_printf
    - e_error
    - smtp_server_recipient_reply_forward
    - smtp_address_encode
    - array_count
    - smtp_reply_is_remote
    - smtp_reply_has_enhanced_code
    - lmtp_proxy_handle_reply
    - str_append
    - smtp_reply_log
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_data_cb(const struct smtp_reply *proxy_reply,\n\t\t
      \  struct lmtp_proxy_recipient *lprcpt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - proxy_reply ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - struct lmtp_proxy_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1080
    functionDepth: 0
    functionLinenumber: 1080
    functionLinenumberEnd: 1085
    functionName: lmtp_proxy_data_dummy_cb
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_data_dummy_cb(const struct smtp_reply *proxy_reply
      ATTR_UNUSED,\n\t\t\t struct lmtp_proxy_connection *conn ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1096,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1097,1
    - Dst: client_update_data_state
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1099,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1102,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1103,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1104,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1106,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1111,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1119,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1122,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1128,1
    - Dst: smtp_client_transaction_set_timeout
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1134,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lmtp/lmtp-proxy.c:1136,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - client
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1087
    functionDepth: 1
    functionLinenumber: 1087
    functionLinenumberEnd: 1139
    functionName: lmtp_proxy_data
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-proxy.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_send
    - array_foreach_elem
    - i_stream_create_limit
    - i_stream_ref
    - e_error
    - i_stream_get_size
    - i_stream_get_error
    - i_stream_create_sized
    - smtp_client_transaction_set_timeout
    - i_assert
    - client_update_data_state
    linkageType: ''
    returnType: void
    signature: "void lmtp_proxy_data(struct client *client,\n\t\t     struct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\t     struct smtp_server_transaction *trans ATTR_UNUSED,\n\t\t
      \    struct istream *data_input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lmtp/lmtp-settings.c:165,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lmtp/lmtp-settings.c:169,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-settings.c:175,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct lmtp_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 183
    functionName: lmtp_settings_parse_workarounds
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-settings.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int lmtp_settings_parse_workarounds(struct lmtp_settings *set,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_settings_parse_workarounds
      Src: /src/dovecot/src/lmtp/lmtp-settings.c:197,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-settings.c:200,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-settings.c:203,1
    - Dst: strcmp
      Src: /src/dovecot/src/lmtp/lmtp-settings.c:206,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lmtp/lmtp-settings.c:210,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 222
    functionName: lmtp_settings_check
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    - lmtp_settings_parse_workarounds
    linkageType: ''
    returnType: bool
    signature: "bool lmtp_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lmtp/lmtp-client.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: client_remote_id
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - net_ip2addr
    linkageType: ''
    returnType: char
    signature: char *client_remote_id(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lmtp/lmtp-client.c:58,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lmtp/lmtp-client.c:59,1
    - Dst: str_append
      Src: /src/dovecot/src/lmtp/lmtp-client.c:62,1
    - Dst: str_append
      Src: /src/dovecot/src/lmtp/lmtp-client.c:66,1
    - Dst: client_remote_id
      Src: /src/dovecot/src/lmtp/lmtp-client.c:66,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lmtp/lmtp-client.c:67,1
    - Dst: str_append
      Src: /src/dovecot/src/lmtp/lmtp-client.c:68,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lmtp/lmtp-client.c:70,1
    - Dst: str_append
      Src: /src/dovecot/src/lmtp/lmtp-client.c:71,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lmtp/lmtp-client.c:75,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lmtp/lmtp-client.c:78,1
    - Dst: process_title_set
      Src: /src/dovecot/src/lmtp/lmtp-client.c:79,1
    - Dst: str_c
      Src: /src/dovecot/src/lmtp/lmtp-client.c:79,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 80
    functionName: refresh_proctitle
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 15
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - str_append
    - process_title_set
    - client_remote_id
    linkageType: ''
    returnType: void
    signature: void refresh_proctitle(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lmtp/lmtp-client.c:86,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lmtp/lmtp-client.c:87,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-client.c:89,1
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/lmtp/lmtp-client.c:96,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lmtp/lmtp-client.c:98,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/lmtp/lmtp-client.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 101
    functionName: client_load_modules
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - module_dir_load_missing
    - array_is_empty
    - settings_boollist_get
    - array_is_created
    - module_dir_init
    linkageType: ''
    returnType: void
    signature: void client_load_modules(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-client.c:108,1
    - Dst: settings_instance_new
      Src: /src/dovecot/src/lmtp/lmtp-client.c:117,1
    - Dst: master_service_get_settings_root
      Src: /src/dovecot/src/lmtp/lmtp-client.c:118,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lmtp/lmtp-client.c:119,1
    - Dst: raw_storage_create_from_set
      Src: /src/dovecot/src/lmtp/lmtp-client.c:122,1
    - Dst: mail_storage_service_get_var_expand_params
      Src: /src/dovecot/src/lmtp/lmtp-client.c:125,1
    - Dst: event_create
      Src: /src/dovecot/src/lmtp/lmtp-client.c:127,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lmtp/lmtp-client.c:128,1
    - Dst: settings_get
      Src: /src/dovecot/src/lmtp/lmtp-client.c:129,1
    - Dst: settings_get
      Src: /src/dovecot/src/lmtp/lmtp-client.c:131,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lmtp/lmtp-client.c:133,1
    - Dst: event_unref
      Src: /src/dovecot/src/lmtp/lmtp-client.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - client
    - ssl
    argTypes:
    - struct client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 135
    functionName: client_read_settings
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - event_create
    - master_service_get_settings_root
    - event_unref
    - settings_instance_new
    - i_fatal
    - raw_storage_create_from_set
    - event_set_ptr
    - settings_get
    - mail_storage_service_get_var_expand_params
    linkageType: ''
    returnType: void
    signature: void client_read_settings(struct client *client, bool ssl)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lmtp/lmtp-client.c:150,1
    - Dst: p_new
      Src: /src/dovecot/src/lmtp/lmtp-client.c:151,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lmtp/lmtp-client.c:163,1
    - Dst: event_create
      Src: /src/dovecot/src/lmtp/lmtp-client.c:167,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lmtp/lmtp-client.c:168,1
    - Dst: client_read_settings
      Src: /src/dovecot/src/lmtp/lmtp-client.c:170,1
    - Dst: client_load_modules
      Src: /src/dovecot/src/lmtp/lmtp-client.c:171,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lmtp/lmtp-client.c:172,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/lmtp/lmtp-client.c:174,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lmtp/lmtp-client.c:177,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-client.c:179,1
    - Dst: master_service_ssl_is_enabled
      Src: /src/dovecot/src/lmtp/lmtp-client.c:193,1
    - Dst: mail_user_get_mail_max_size
      Src: /src/dovecot/src/lmtp/lmtp-client.c:197,1
    - Dst: smtp_server_connection_create
      Src: /src/dovecot/src/lmtp/lmtp-client.c:215,1
    - Dst: smtp_server_connection_is_trusted
      Src: /src/dovecot/src/lmtp/lmtp-client.c:219,1
    - Dst: smtp_server_connection_add_extra_capability
      Src: /src/dovecot/src/lmtp/lmtp-client.c:220,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lmtp/lmtp-client.c:224,1
    - Dst: e_info
      Src: /src/dovecot/src/lmtp/lmtp-client.c:227,1
    - Dst: client_remote_id
      Src: /src/dovecot/src/lmtp/lmtp-client.c:227,1
    - Dst: hook_client_created
      Src: /src/dovecot/src/lmtp/lmtp-client.c:230,1
    - Dst: smtp_server_connection_start
      Src: /src/dovecot/src/lmtp/lmtp-client.c:232,1
    - Dst: refresh_proctitle
      Src: /src/dovecot/src/lmtp/lmtp-client.c:234,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 59
    argCount: 3
    argNames:
    - fd_in
    - fd_out
    - conn
    argTypes:
    - int
    - int
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 137
    functionDepth: 3
    functionLinenumber: 137
    functionLinenumberEnd: 236
    functionName: client_create
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 8
    functionsReached:
    - p_strdup
    - p_array_init
    - smtp_server_connection_is_trusted
    - DLLIST_PREPEND
    - client_read_settings
    - client_remote_id
    - p_new
    - client_load_modules
    - master_service_ssl_is_enabled
    - i_zero
    - event_create
    - smtp_server_connection_create
    - refresh_proctitle
    - mail_user_get_mail_max_size
    - pool_alloconly_create
    - e_info
    - smtp_server_connection_start
    - hook_client_created
    - event_add_category
    - master_service_get_service_settings
    - smtp_server_connection_add_extra_capability
    linkageType: ''
    returnType: struct client
    signature: "struct client *client_create(int fd_in, int fd_out,\n\t\t\t     const
      struct master_service_connection *conn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:240,1
    - Dst: lmtp_local_deinit
      Src: /src/dovecot/src/lmtp/lmtp-client.c:243,1
    - Dst: lmtp_proxy_deinit
      Src: /src/dovecot/src/lmtp/lmtp-client.c:245,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lmtp/lmtp-client.c:247,1
    - Dst: i_zero
      Src: /src/dovecot/src/lmtp/lmtp-client.c:249,1
    - Dst: p_clear
      Src: /src/dovecot/src/lmtp/lmtp-client.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 238
    functionDepth: 3
    functionLinenumber: 238
    functionLinenumberEnd: 251
    functionName: client_state_reset
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - o_stream_unref
    - lmtp_proxy_deinit
    - i_free
    - lmtp_local_deinit
    - p_clear
    linkageType: ''
    returnType: void
    signature: void client_state_reset(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-client.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 257
    functionName: client_ref
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 5
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void client_ref(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-client.c:267,1
    - Dst: struct client*::v::destroy
      Src: /src/dovecot/src/lmtp/lmtp-client.c:271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 272
    functionName: client_unref
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 6
    functionsReached:
    - i_assert
    - struct client*::v::destroy
    linkageType: ''
    returnType: void
    signature: void client_unref(struct client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_ref
      Src: /src/dovecot/src/lmtp/lmtp-client.c:282,1
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/lmtp/lmtp-client.c:283,1
    - Dst: client_unref
      Src: /src/dovecot/src/lmtp/lmtp-client.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _client
    - enh_code
    - reason
    argTypes:
    - struct client**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 290
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 26
    functionsReached:
    - client_unref
    - client_ref
    - smtp_server_connection_terminate
    linkageType: ''
    returnType: void
    signature: "void client_destroy(struct client **_client, const char *enh_code,\n\t\t
      \   const char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lmtp/lmtp-client.c:300,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/lmtp/lmtp-client.c:303,1
    - Dst: client_state_reset
      Src: /src/dovecot/src/lmtp/lmtp-client.c:305,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:307,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:308,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:309,1
    - Dst: event_unref
      Src: /src/dovecot/src/lmtp/lmtp-client.c:310,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-client.c:311,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lmtp/lmtp-client.c:312,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/lmtp/lmtp-client.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 315
    functionName: client_default_destroy
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - settings_instance_free
    - mail_user_deinit
    - event_unref
    - settings_free
    - pool_unref
    - client_state_reset
    - DLLIST_REMOVE
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void client_default_destroy(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::trans_start
      Src: /src/dovecot/src/lmtp/lmtp-client.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 324
    functionName: client_connection_trans_start
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - struct client*::v::trans_start
    linkageType: ''
    returnType: void
    signature: "void client_connection_trans_start(void *context,\n\t\t\t      struct
      smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct client*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 331
    functionName: client_default_trans_start
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void client_default_trans_start(struct client *client ATTR_UNUSED,\n\t\t\t
      \  struct smtp_server_transaction *trans ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::trans_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 340
    functionName: client_connection_trans_free
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - struct client*::v::trans_free
    linkageType: ''
    returnType: void
    signature: "void client_connection_trans_free(void *context,\n\t\t\t     struct
      smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_state_reset
      Src: /src/dovecot/src/lmtp/lmtp-client.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - ATTR_UNUSED
    argTypes:
    - struct client*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 347
    functionName: client_default_trans_free
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - client_state_reset
    linkageType: ''
    returnType: void
    signature: "void client_default_trans_free(struct client *client,\n\t\t\t  struct
      smtp_server_transaction *trans ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:356,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lmtp/lmtp-client.c:359,1
    - Dst: smtp_server_connection_get_server_name
      Src: /src/dovecot/src/lmtp/lmtp-client.c:363,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lmtp/lmtp-client.c:364,1
    - Dst: refresh_proctitle
      Src: /src/dovecot/src/lmtp/lmtp-client.c:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - context
    - new_state
    - new_args
    argTypes:
    - void*
    - enum smtp_server_state
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 368
    functionName: client_connection_state_changed
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - smtp_server_connection_get_server_name
    - i_strdup
    - refresh_proctitle
    - i_free
    linkageType: ''
    returnType: void
    signature: "void client_connection_state_changed(void *context,\n\t\t\t\tenum
      smtp_server_state new_state,\n\t\t\t\tconst char *new_args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-client.c:372,1
    - Dst: i_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:373,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lmtp/lmtp-client.c:374,1
    - Dst: refresh_proctitle
      Src: /src/dovecot/src/lmtp/lmtp-client.c:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - new_args
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 370
    functionDepth: 3
    functionLinenumber: 370
    functionLinenumberEnd: 378
    functionName: client_update_data_state
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 3
    functionsReached:
    - i_strdup
    - i_assert
    - i_free
    - refresh_proctitle
    linkageType: ''
    returnType: void
    signature: void client_update_data_state(struct client *client, const char *new_args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lmtp/lmtp-client.c:397,1
    - Dst: refresh_proctitle
      Src: /src/dovecot/src/lmtp/lmtp-client.c:402,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - void*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 380
    functionDepth: 3
    functionLinenumber: 380
    functionLinenumberEnd: 403
    functionName: client_connection_proxy_data_updated
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - refresh_proctitle
    linkageType: ''
    returnType: void
    signature: "void client_connection_proxy_data_updated(void *context,\n\t\t\t\t
      \    const struct smtp_proxy_data *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lmtp/lmtp-client.c:415,1
    - Dst: settings_get
      Src: /src/dovecot/src/lmtp/lmtp-client.c:416,1
    - Dst: settings_get
      Src: /src/dovecot/src/lmtp/lmtp-client.c:418,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:420,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:421,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:426,1
    - Dst: settings_free
      Src: /src/dovecot/src/lmtp/lmtp-client.c:427,1
    - Dst: smtp_server_connection_set_greeting
      Src: /src/dovecot/src/lmtp/lmtp-client.c:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - context
    - name
    - error_r
    argTypes:
    - void*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 432
    functionName: client_connection_tls_sni_callback
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - event_add_str
    - settings_get
    - settings_free
    - smtp_server_connection_set_greeting
    linkageType: ''
    returnType: int
    signature: "int client_connection_tls_sni_callback(void *context, const char *name,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/lmtp/lmtp-client.c:444,1
    - Dst: client_remote_id
      Src: /src/dovecot/src/lmtp/lmtp-client.c:445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - context
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 446
    functionName: client_connection_disconnect
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - e_info
    - client_remote_id
    linkageType: ''
    returnType: void
    signature: void client_connection_disconnect(void *context, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_unref
      Src: /src/dovecot/src/lmtp/lmtp-client.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 453
    functionName: client_connection_free
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - client_unref
    linkageType: ''
    returnType: void
    signature: void client_connection_free(void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lmtp/lmtp-client.c:462,1
    - Dst: net_parse_range
      Src: /src/dovecot/src/lmtp/lmtp-client.c:464,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-client.c:465,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lmtp/lmtp-client.c:470,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 474
    functionName: client_connection_is_trusted
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - settings_boollist_get
    - net_is_in_network
    - net_parse_range
    linkageType: ''
    returnType: bool
    signature: bool client_connection_is_trusted(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/lmtp/lmtp-client.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 482
    functionName: clients_destroy
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-client.c
    functionUses: 1
    functionsReached:
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void clients_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_pipeline_block
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:31,1
    - Dst: struct client*::v::cmd_mail
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - data
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 34
    functionName: cmd_mail
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 1
    functionsReached:
    - struct client*::v::cmd_mail
    - smtp_server_command_pipeline_block
    linkageType: ''
    returnType: int
    signature: "int cmd_mail(void *conn_ctx,\n\t     struct smtp_server_cmd_ctx *cmd,\n\t
      \    struct smtp_server_cmd_mail *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_anvil_init
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - client
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 45
    functionName: client_default_cmd_mail
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 0
    functionsReached:
    - lmtp_anvil_init
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_mail(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t    struct smtp_server_cmd_mail
      *data ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_rcpt_decode_extra
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:60,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:64,1
    - Dst: smtp_params_rcpt_drop_extra
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:73,1
    - Dst: smtp_server_connection_is_trusted
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:80,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:81,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:87,1
    - Dst: str_c
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - cmd
    - lrcpt
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct lmtp_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 90
    functionName: cmd_rcpt_handle_forward_fields
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - smtp_params_rcpt_decode_extra
    - p_strsplit_tabescaped
    - smtp_params_rcpt_drop_extra
    - smtp_server_connection_is_trusted
    - smtp_server_reply
    linkageType: ''
    returnType: int
    signature: "int cmd_rcpt_handle_forward_fields(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \      struct lmtp_recipient *lrcpt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:99,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:99,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:101,1
    - Dst: smtp_server_connection_get_transaction
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:107,1
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:108,1
    - Dst: lmtp_recipient_create
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:110,1
    - Dst: cmd_rcpt_handle_forward_fields
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:112,1
    - Dst: struct client*::v::cmd_rcpt
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 116
    functionName: cmd_rcpt
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 1
    functionsReached:
    - lmtp_recipient_create
    - smtp_server_recipient_reply
    - smtp_server_connection_get_transaction
    - cmd_rcpt_handle_forward_fields
    - i_assert
    - struct client*::v::cmd_rcpt
    - smtp_address_isnull
    linkageType: ''
    returnType: int
    signature: "int cmd_rcpt(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t
      \    struct smtp_server_recipient *rcpt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lmtp_proxy_rcpt
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:126,1
    - Dst: lmtp_local_rcpt
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - client
    - cmd
    - lrcpt
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct lmtp_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 133
    functionName: client_default_cmd_rcpt
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 0
    functionsReached:
    - lmtp_proxy_rcpt
    - lmtp_local_rcpt
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_rcpt(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t    struct lmtp_recipient *lrcpt)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:147,1
    - Dst: lmtp_local_add_headers
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:151,1
    - Dst: str_len
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:154,1
    - Dst: smtp_server_transaction_write_trace_record
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:175,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:180,1
    - Dst: str_c
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:180,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - client
    - ATTR_UNUSED
    - trans
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 183
    functionName: cmd_data_create_added_headers
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - p_strdup
    - str_len
    - lmtp_local_add_headers
    - smtp_server_transaction_write_trace_record
    linkageType: ''
    returnType: void
    signature: "void cmd_data_create_added_headers(struct client *client,\n\t\t\t
      \     struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t      struct smtp_server_transaction
      *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:194,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:194,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:200,1
    - Dst: struct client*::v::cmd_data
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:203,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - client
    - cmd
    - trans
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 208
    functionName: cmd_data_finish
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 0
    functionsReached:
    - iostream_temp_finish
    - struct client*::v::cmd_data
    - i_stream_unref
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int cmd_data_finish(struct client *client,\n\t\tstruct smtp_server_cmd_ctx
      *cmd,\n\t\tstruct smtp_server_transaction *trans)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:220,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:222,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:223,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:224,1
    - Dst: e_error
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:226,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:227,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:228,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:229,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:234,1
    - Dst: smtp_server_cmd_data_check_size
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:236,1
    - Dst: cmd_data_finish
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - trans
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 252
    functionName: cmd_data_continue
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - i_assert
    - cmd_data_finish
    - o_stream_get_error
    - i_stream_get_data
    - smtp_server_reply
    - i_stream_skip
    - e_error
    - smtp_server_cmd_data_check_size
    - o_stream_send
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: "int cmd_data_continue(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t\t
      \     struct smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:262,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:264,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:265,1
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:267,1
    - Dst: str_c
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - conn_ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 271
    functionName: cmd_data_begin
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mail_user_set_get_temp_prefix
    - iostream_temp_create_named
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int cmd_data_begin(void *conn_ctx,\n\t\t   struct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\t   struct smtp_server_transaction *trans ATTR_UNUSED,\n\t\t
      \  struct istream *data_input)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cmd_data_create_added_headers
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:284,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:289,1
    - Dst: strlen
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:291,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:295,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:296,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:297,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:300,1
    - Dst: strlen
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:302,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:306,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:307,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:308,1
    - Dst: lmtp_local_data
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:313,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:314,1
    - Dst: lmtp_proxy_data
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:318,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lmtp/lmtp-commands.c:319,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 5
    argNames:
    - client
    - cmd
    - trans
    - data_input
    - ATTR_UNUSED
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 273
    functionDepth: 5
    functionLinenumber: 273
    functionLinenumberEnd: 322
    functionName: client_default_cmd_data
    functionSourceFile: /src/dovecot/src/lmtp/lmtp-commands.c
    functionUses: 0
    functionsReached:
    - lmtp_local_data
    - lmtp_proxy_data
    - i_stream_set_name
    - strlen
    - i_stream_create_from_data
    - i_stream_unref
    - i_stream_create_concat
    - cmd_data_create_added_headers
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_data(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t    struct smtp_server_transaction *trans,\n\t\t\t
      \   struct istream *data_input,\n\t\t\t    uoff_t data_size ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - message
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 158
    functionName: pgsql_notice_processor
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - e_info
    linkageType: ''
    returnType: void
    signature: void pgsql_notice_processor(void *arg, const char *message)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:162,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:167,1
    - Dst: sql_db_set_state
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:168,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:170,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - db
    - state
    argTypes:
    - struct pgsql_db*
    - enum sql_db_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: driver_pgsql_set_state
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - i_assert
    - sql_db_set_state
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_set_state(struct pgsql_db *db, enum sql_db_state
      state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next_callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 184
    functionName: driver_pgsql_next_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - next_callback
    linkageType: ''
    returnType: bool
    signature: bool driver_pgsql_next_callback(struct pgsql_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 192
    functionName: driver_pgsql_stop_io
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - io_remove
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_stop_io(struct pgsql_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_stop_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:199,1
    - Dst: PQfinish
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:201,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:204,1
    - Dst: driver_pgsql_set_state
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:206,1
    - Dst: sql_connection_log_finished
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:207,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:211,1
    - Dst: driver_pgsql_next_callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 214
    functionName: driver_pgsql_close
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_stop_io
    - PQfinish
    - sql_connection_log_finished
    - driver_pgsql_next_callback
    - io_loop_stop
    - driver_pgsql_set_state
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_close(struct pgsql_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQerrorMessage
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:221,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:225,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:227,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:230,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:233,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 234
    functionName: last_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 22
    functionsReached:
    - strchr
    - strlen
    - PQerrorMessage
    - t_strndup
    linkageType: ''
    returnType: char
    signature: char *last_error(struct pgsql_db *db)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_stop_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:241,1
    - Dst: PQconnectPoll
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:243,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:258,1
    - Dst: PQdb
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:259,1
    - Dst: last_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:259,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:260,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:261,1
    - Dst: last_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:261,1
    - Dst: driver_pgsql_close
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:262,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:267,1
    - Dst: PQsocket
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:267,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:273,1
    - Dst: PQserverVersion
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:274,1
    - Dst: driver_pgsql_set_state
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:278,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:282,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 236
    functionDepth: 3
    functionLinenumber: 236
    functionLinenumberEnd: 285
    functionName: connect_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - PQsocket
    - driver_pgsql_stop_io
    - driver_pgsql_close
    - PQserverVersion
    - io_add
    - PQdb
    - e_error
    - i_strdup
    - io_loop_stop
    - driver_pgsql_set_state
    - last_error
    - PQconnectPoll
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void connect_callback(struct pgsql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:290,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:291,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:293,1
    - Dst: driver_pgsql_close
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 287
    functionDepth: 3
    functionLinenumber: 287
    functionLinenumberEnd: 295
    functionName: driver_pgsql_connect_timeout
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_strdup_printf
    - i_free
    - driver_pgsql_close
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_connect_timeout(struct pgsql_db *db)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:303,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:305,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:308,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:309,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:310,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:313,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:314,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:318,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:320,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:321,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:324,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:325,1
    - Dst: PQconnectStartParams
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:326,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:326,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:327,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:329,1
    - Dst: PQsetNoticeProcessor
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:332,1
    - Dst: PQstatus
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:334,1
    - Dst: PQdb
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:335,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:338,1
    - Dst: last_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:339,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:340,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:341,1
    - Dst: last_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:341,1
    - Dst: driver_pgsql_close
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:342,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:348,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:349,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:351,1
    - Dst: PQsetnonblocking
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:356,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:357,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:358,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:359,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:362,1
    - Dst: PQsocket
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:362,1
    - Dst: driver_pgsql_set_state
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:364,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 297
    functionDepth: 3
    functionLinenumber: 297
    functionLinenumberEnd: 366
    functionName: driver_pgsql_connect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - PQsetNoticeProcessor
    - i_strdup
    - array_front
    - array_append_zero
    - PQsocket
    - timeval_diff_msecs
    - i_fatal_status
    - timeout_add
    - PQsetnonblocking
    - e_warning
    - io_loop_time_refresh
    - driver_pgsql_close
    - array_get
    - PQconnectStartParams
    - e_error
    - PQstatus
    - i_assert
    - i_free
    - array_push_back
    - PQdb
    - io_add
    - driver_pgsql_set_state
    - t_array_init
    - last_error
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: int driver_pgsql_connect(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_stop_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:373,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:374,1
    - Dst: driver_pgsql_close
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 380
    functionName: driver_pgsql_disconnect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_stop_io
    - driver_pgsql_close
    - result_finish
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_disconnect(struct sql_db *_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:387,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:388,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:389,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:390,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct pgsql_db**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 392
    functionName: driver_pgsql_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_free
    - event_unref
    - settings_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_free(struct pgsql_db **_db)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:398,1
    - Dst: sql_wait
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:404,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 411
    functionName: driver_pgsql_get_flags
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - sql_connect
    - sql_wait
    linkageType: ''
    returnType: enum sql_db_flags
    signature: enum sql_db_flags driver_pgsql_get_flags(struct sql_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:418,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct pgsql_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 424
    functionName: driver_pgsql_db_cache_find
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - settings_equal
    linkageType: ''
    returnType: struct pgsql_db_cache
    signature: 'struct pgsql_db_cache *

      driver_pgsql_db_cache_find(const struct pgsql_settings *set)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:432,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:434,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:436,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:437,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:438,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - event_parent
    - set
    argTypes:
    - struct event*
    - struct pgsql_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 441
    functionName: driver_pgsql_init_from_set
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_set_append_log_prefix
    - t_strdup_printf
    - i_new
    - event_add_str
    - event_add_category
    linkageType: ''
    returnType: struct pgsql_db
    signature: "struct pgsql_db *\ndriver_pgsql_init_from_set(struct event *event_parent,\n\t\t\t
      \  const struct pgsql_settings *set)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:449,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:452,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:454,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:458,1
    - Dst: driver_pgsql_db_cache_find
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:461,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:463,1
    - Dst: driver_sqlpool_init
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:469,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:473,1
    - Dst: sql_ref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:477,1
    - Dst: driver_pgsql_init_from_set
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:484,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:485,1
    - Dst: sql_init_common
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:486,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - event
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 489
    functionName: driver_pgsql_init_v
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - event_drop_parent_log_prefixes
    - array_append_space
    - sql_init_common
    - driver_pgsql_db_cache_find
    - event_get_ptr
    - settings_free
    - driver_pgsql_init_from_set
    - array_is_empty
    - driver_sqlpool_init
    - sql_ref
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int driver_pgsql_init_v(struct event *event, struct sql_db **db_r,\n\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_disconnect
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:495,1
    - Dst: driver_pgsql_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 491
    functionDepth: 4
    functionLinenumber: 491
    functionLinenumberEnd: 497
    functionName: driver_pgsql_deinit_v
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_disconnect
    - driver_pgsql_free
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_deinit_v(struct sql_db *_db)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:501,1
    - Dst: driver_pgsql_close
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:504,1
    - Dst: driver_pgsql_next_callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:505,1
    - Dst: driver_pgsql_set_state
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 507
    functionName: driver_pgsql_set_idle
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_set_state
    - driver_pgsql_close
    - i_assert
    - driver_pgsql_next_callback
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_set_idle(struct pgsql_db *db)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_stop_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:513,1
    - Dst: PQconsumeInput
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:515,1
    - Dst: PQisBusy
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:516,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:517,1
    - Dst: PQsocket
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:517,1
    - Dst: PQgetResult
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:523,1
    - Dst: PQclear
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:526,1
    - Dst: PQstatus
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:529,1
    - Dst: driver_pgsql_close
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:530,1
    - Dst: driver_pgsql_set_idle
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:532,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 509
    functionDepth: 4
    functionLinenumber: 509
    functionLinenumberEnd: 533
    functionName: consume_results
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - PQsocket
    - driver_pgsql_stop_io
    - driver_pgsql_close
    - io_add
    - PQconsumeInput
    - PQclear
    - PQgetResult
    - driver_pgsql_set_idle
    - PQisBusy
    - PQstatus
    linkageType: ''
    returnType: void
    signature: void consume_results(struct pgsql_db *db)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:541,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:542,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:543,1
    - Dst: PQclear
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:551,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:557,1
    - Dst: consume_results
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:558,1
    - Dst: driver_pgsql_set_idle
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:560,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:563,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:566,1
    - Dst: PQfreemem
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:567,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:568,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:571,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:572,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:573,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:574,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:575,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 535
    functionDepth: 5
    functionLinenumber: 535
    functionLinenumberEnd: 576
    functionName: driver_pgsql_result_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_free
    - PQclear
    - PQfreemem
    - driver_pgsql_set_idle
    - consume_results
    - array_foreach_modifiable
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_result_free(struct sql_result *_result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:584,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:585,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:586,1
    - Dst: PQstatus
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:591,1
    - Dst: PQresultStatus
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:592,1
    - Dst: last_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:602,1
    - Dst: sql_query_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:604,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:606,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:607,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:607,1
    - Dst: sql_query_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:611,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:613,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:613,1
    - Dst: if
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:618,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct pgsql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 620
    functionName: result_finish
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 1
    functionsReached:
    - i_assert
    - e_debug
    - sql_query_finished_event
    - if
    - PQresultStatus
    - struct event_passthrough*::event
    - last_error
    - PQstatus
    - DLLIST_REMOVE
    - struct event_passthrough*::add_str
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void result_finish(struct pgsql_result *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_stop_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:637,1
    - Dst: PQconsumeInput
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:639,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:640,1
    - Dst: PQisBusy
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:644,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:645,1
    - Dst: PQsocket
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:645,1
    - Dst: PQgetResult
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:651,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:652,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct pgsql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 633
    functionDepth: 2
    functionLinenumber: 633
    functionLinenumberEnd: 653
    functionName: get_result
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 2
    functionsReached:
    - PQsocket
    - driver_pgsql_stop_io
    - io_add
    - PQconsumeInput
    - PQgetResult
    - PQisBusy
    - result_finish
    linkageType: ''
    returnType: void
    signature: void get_result(struct pgsql_result *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_stop_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:660,1
    - Dst: PQflush
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:662,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:664,1
    - Dst: PQsocket
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:664,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:671,1
    - Dst: get_result
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:674,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct pgsql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 655
    functionDepth: 3
    functionLinenumber: 655
    functionLinenumberEnd: 676
    functionName: flush_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 9
    functionsReached:
    - PQsocket
    - driver_pgsql_stop_io
    - io_add
    - get_result
    - result_finish
    - PQflush
    linkageType: ''
    returnType: void
    signature: void flush_callback(struct pgsql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_stop_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:682,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct pgsql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 686
    functionName: query_timeout
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_stop_io
    - result_finish
    linkageType: ''
    returnType: void
    signature: void query_timeout(struct pgsql_result *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:693,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:693,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:694,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:695,1
    - Dst: driver_pgsql_set_state
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:697,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:699,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:700,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:702,1
    - Dst: PQsendQuery
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:704,1
    - Dst: PQflush
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:705,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:707,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:713,1
    - Dst: PQsocket
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:713,1
    - Dst: get_result
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:717,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - result
    - query
    argTypes:
    - struct pgsql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 688
    functionDepth: 3
    functionLinenumber: 688
    functionLinenumberEnd: 719
    functionName: do_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - PQsocket
    - result_finish
    - io_add
    - timeout_add
    - PQsendQuery
    - i_strdup
    - SQL_DB_IS_READY
    - DLLIST_PREPEND
    - driver_pgsql_set_state
    - get_result
    - PQflush
    - i_assert
    linkageType: ''
    returnType: void
    signature: void do_query(struct pgsql_result *result, const char *query)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:725,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:731,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:736,1
    - Dst: PQescapeStringConn
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:737,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:741,1
    - Dst: PQescapeString
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:742,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - _db
    - string
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 746
    functionName: driver_pgsql_escape_string
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - t_buffer_get
    - strlen
    - PQescapeStringConn
    - sql_connect
    - t_buffer_alloc
    - PQescapeString
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_pgsql_escape_string(struct sql_db *_db, const char *string)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _result
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 753
    functionName: exec_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - result_finish
    linkageType: ''
    returnType: void
    signature: "void exec_callback(struct sql_result *_result,\n\t\t\t  void *context
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:759,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:763,1
    - Dst: do_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 755
    functionDepth: 4
    functionLinenumber: 755
    functionLinenumberEnd: 766
    functionName: driver_pgsql_exec
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - do_query
    - event_create
    - i_new
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_exec(struct sql_db *db, const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:773,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:777,1
    - Dst: do_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - db
    - query
    - callback
    - context
    argTypes:
    - struct sql_db*
    - char*
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 768
    functionDepth: 4
    functionLinenumber: 768
    functionLinenumberEnd: 781
    functionName: driver_pgsql_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - do_query
    - event_create
    - i_new
    linkageType: ''
    returnType: void
    signature: "void driver_pgsql_query(struct sql_db *db, const char *query,\n\t\t\t
      \      sql_query_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - struct sql_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 783
    functionDepth: 0
    functionLinenumber: 783
    functionLinenumberEnd: 788
    functionName: pgsql_query_s_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pgsql_query_s_callback(struct sql_result *result, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:796,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:800,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:803,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:806,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:808,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:810,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:813,1
    - Dst: PQsocket
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:813,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 816
    functionName: driver_pgsql_sync_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - PQsocket
    - io_add
    - io_remove
    - timeout_add
    - io_loop_create
    - i_assert
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_sync_init(struct pgsql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 821
    functionName: driver_pgsql_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - io_loop_destroy
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_sync_deinit(struct pgsql_db *db)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:828,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:833,1
    - Dst: driver_pgsql_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:841,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:843,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:845,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:857,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - db
    - query
    argTypes:
    - struct pgsql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 823
    functionDepth: 5
    functionLinenumber: 823
    functionLinenumberEnd: 859
    functionName: driver_pgsql_sync_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_assert
    - driver_pgsql_query
    - io_loop_run
    - i_unreached
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_pgsql_sync_query(struct pgsql_db *db, const char *query)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_sync_init
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:867,1
    - Dst: driver_pgsql_sync_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:868,1
    - Dst: driver_pgsql_sync_deinit
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 861
    functionDepth: 6
    functionLinenumber: 861
    functionLinenumberEnd: 871
    functionName: driver_pgsql_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_sync_deinit
    - driver_pgsql_sync_init
    - driver_pgsql_sync_query
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_pgsql_query_s(struct sql_db *_db, const char *query)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PQclear
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:886,1
    - Dst: PQgetResult
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:887,1
    - Dst: PQresultStatus
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:897,1
    - Dst: PQntuples
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:902,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 915
    functionName: driver_pgsql_result_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - PQclear
    - PQntuples
    - PQgetResult
    - PQresultStatus
    linkageType: ''
    returnType: int
    signature: int driver_pgsql_result_next_row(struct sql_result *_result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQnfields
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:925,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:926,1
    - Dst: PQfname
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct pgsql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 929
    functionName: driver_pgsql_result_fetch_fields
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - PQnfields
    - i_new
    - PQfname
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_result_fetch_fields(struct pgsql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_result_fetch_fields
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 931
    functionDepth: 1
    functionLinenumber: 931
    functionLinenumberEnd: 938
    functionName: driver_pgsql_result_get_fields_count
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_result_fetch_fields
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int driver_pgsql_result_get_fields_count(struct sql_result
      *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_result_fetch_fields
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:945,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 948
    functionName: driver_pgsql_result_get_field_name
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_assert
    - driver_pgsql_result_fetch_fields
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_pgsql_result_get_field_name(struct sql_result *_result, unsigned int
      idx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_result_fetch_fields
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:956,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:958,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 950
    functionDepth: 1
    functionLinenumber: 950
    functionLinenumberEnd: 962
    functionName: driver_pgsql_result_find_field
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - strcmp
    - driver_pgsql_result_fetch_fields
    linkageType: ''
    returnType: int
    signature: "int driver_pgsql_result_find_field(struct sql_result *_result,\n\t\t\t\t\t
      \ const char *field_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQgetisnull
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:970,1
    - Dst: PQgetvalue
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:973,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 974
    functionName: driver_pgsql_result_get_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - PQgetvalue
    - PQgetisnull
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_pgsql_result_get_field_value(struct sql_result *_result,\n\t\t\t\t
      \   unsigned int idx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQgetisnull
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:984,1
    - Dst: PQgetvalue
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:989,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:991,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:992,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:994,1
    - Dst: PQunescapeBytea
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:997,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - _result
    - idx
    - size_r
    argTypes:
    - struct sql_result*
    - unsigned int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 1003
    functionName: driver_pgsql_result_get_field_value_binary
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - PQunescapeBytea
    - PQgetvalue
    - PQgetisnull
    - array_idx_get_space
    - array_is_created
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\ndriver_pgsql_result_get_field_value_binary(struct
      sql_result *_result,\n\t\t\t\t\t   unsigned int idx, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_result_find_field
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1011,1
    - Dst: driver_pgsql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1014,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1005
    functionDepth: 2
    functionLinenumber: 1005
    functionLinenumberEnd: 1015
    functionName: driver_pgsql_result_find_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_result_find_field
    - driver_pgsql_result_get_field_value
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_pgsql_result_find_field_value(struct sql_result *result,\n\t\t\t\t
      \    const char *field_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_result_fetch_fields
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1024,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1025,1
    - Dst: driver_pgsql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1031,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1035
    functionName: driver_pgsql_result_get_values
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - driver_pgsql_result_get_field_value
    - driver_pgsql_result_fetch_fields
    - i_new
    linkageType: ''
    returnType: char
    signature: 'char *const *

      driver_pgsql_result_get_values(struct sql_result *_result)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1044,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1047,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1050,1
    - Dst: last_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1050,1
    - Dst: PQresultErrorMessage
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1052,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1057,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1059,1
    - Dst: i_strndup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1059,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1037
    functionDepth: 2
    functionLinenumber: 1037
    functionLinenumberEnd: 1062
    functionName: driver_pgsql_result_get_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_free_and_null
    - PQresultErrorMessage
    - i_strndup
    - i_strdup
    - last_error
    linkageType: ''
    returnType: char
    signature: char *driver_pgsql_result_get_error(struct sql_result *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1069,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1071,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1074,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1076
    functionName: driver_pgsql_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - i_new
    linkageType: ''
    returnType: struct sql_transaction_context
    signature: 'struct sql_transaction_context *

      driver_pgsql_transaction_begin(struct sql_db *db)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1081,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1082,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1083,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct pgsql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1078
    functionDepth: 1
    functionLinenumber: 1078
    functionLinenumberEnd: 1084
    functionName: driver_pgsql_transaction_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_free
    - event_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_transaction_free(struct pgsql_transaction_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1092,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1093,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1094,1
    - Dst: sql_result_get_error_type
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1095,1
    - Dst: struct pgsql_transaction_context*::callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1097,1
    - Dst: driver_pgsql_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1098,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct sql_result*
    - struct pgsql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1086
    functionDepth: 2
    functionLinenumber: 1086
    functionLinenumberEnd: 1099
    functionName: transaction_commit_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_zero
    - driver_pgsql_transaction_free
    - sql_result_get_error
    - sql_result_next_row
    - struct pgsql_transaction_context*::callback
    - sql_result_get_error_type
    linkageType: ''
    returnType: void
    signature: "void transaction_commit_callback(struct sql_result *result,\n\t\t\t
      \   struct pgsql_transaction_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1105,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1110,1
    - Dst: struct pgsql_transaction_context*::callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1114,1
    - Dst: sql_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1122,1
    - Dst: sql_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1101
    functionDepth: 1
    functionLinenumber: 1101
    functionLinenumberEnd: 1129
    functionName: transaction_send_next
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - SQL_DB_IS_READY
    - i_assert
    - struct pgsql_transaction_context*::callback
    - sql_query
    linkageType: ''
    returnType: bool
    signature: bool transaction_send_next(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1137,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1138,1
    - Dst: sql_result_get_error_type
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1139,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1140,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1140,1
    - Dst: struct pgsql_transaction_context*::callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct pgsql_transaction_context*
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1144
    functionName: transaction_commit_error_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_zero
    - e_debug
    - sql_result_get_error
    - struct pgsql_transaction_context*::callback
    - sql_transaction_finished_event
    - sql_result_get_error_type
    linkageType: ''
    returnType: void
    signature: "void transaction_commit_error_callback(struct pgsql_transaction_context
      *ctx,\n\t\t\t\t  struct sql_result *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1152,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1154,1
    - Dst: transaction_commit_error_callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1155,1
    - Dst: driver_pgsql_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct sql_result*
    - struct pgsql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1162
    functionName: transaction_begin_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_assert
    - driver_pgsql_transaction_free
    - sql_result_next_row
    - transaction_commit_error_callback
    linkageType: ''
    returnType: void
    signature: "void transaction_begin_callback(struct sql_result *result,\n\t\t\t
      \  struct pgsql_transaction_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1172,1
    - Dst: transaction_commit_error_callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1173,1
    - Dst: driver_pgsql_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1174,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1181,1
    - Dst: PQcmdTuples
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1181,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1183,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - result
    - query
    argTypes:
    - struct sql_result*
    - struct sql_transaction_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1164
    functionDepth: 2
    functionLinenumber: 1164
    functionLinenumberEnd: 1188
    functionName: transaction_update_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - driver_pgsql_transaction_free
    - transaction_commit_error_callback
    - PQcmdTuples
    - str_to_uint
    - i_assert
    - sql_result_next_row
    linkageType: ''
    returnType: void
    signature: "void transaction_update_callback(struct sql_result *result,\n\t\t\t
      \   struct sql_transaction_query *query)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1198,1
    - Dst: transaction_commit_error_callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1199,1
    - Dst: driver_pgsql_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1200,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1207,1
    - Dst: PQcmdTuples
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1207,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1209,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1211,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1211,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1213,1
    - Dst: struct pgsql_transaction_context*::callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1214,1
    - Dst: driver_pgsql_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - result
    - query
    argTypes:
    - struct sql_result*
    - struct sql_transaction_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1190
    functionDepth: 2
    functionLinenumber: 1190
    functionLinenumberEnd: 1216
    functionName: transaction_trans_query_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_unreached
    - e_debug
    - struct pgsql_transaction_context*::callback
    - driver_pgsql_transaction_free
    - transaction_commit_error_callback
    - PQcmdTuples
    - str_to_uint
    - sql_result_next_row
    - sql_transaction_finished_event
    linkageType: ''
    returnType: void
    signature: "void transaction_trans_query_callback(struct sql_result *result,\n\t\t\t\t
      struct sql_transaction_query *query)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1226,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1233,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1233,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1237,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1237,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1240,1
    - Dst: driver_pgsql_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1241,1
    - Dst: sql_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1244,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1248,1
    - Dst: sql_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - _ctx
    - callback
    - context
    argTypes:
    - struct sql_transaction_context*
    - sql_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1218
    functionDepth: 2
    functionLinenumber: 1218
    functionLinenumberEnd: 1251
    functionName: driver_pgsql_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_zero
    - e_debug
    - driver_pgsql_transaction_free
    - callback
    - sql_query
    - i_assert
    - sql_transaction_finished_event
    linkageType: ''
    returnType: void
    signature: "void driver_pgsql_transaction_commit(struct sql_transaction_context
      *_ctx,\n\t\t\t\tsql_commit_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1258,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1259,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - result
    - query
    argTypes:
    - struct pgsql_transaction_context*
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1261
    functionName: commit_multi_fail
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - sql_result_get_error
    - t_strdup_printf
    - sql_result_unref
    linkageType: ''
    returnType: void
    signature: "void commit_multi_fail(struct pgsql_transaction_context *ctx,\n\t\t
      \ struct sql_result *result, const char *query)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_sync_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1270,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1271,1
    - Dst: commit_multi_fail
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1272,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1275,1
    - Dst: driver_pgsql_sync_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1279,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1280,1
    - Dst: commit_multi_fail
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1281,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1288,1
    - Dst: PQcmdTuples
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1288,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1290,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1292,1
    - Dst: driver_pgsql_sync_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1295,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct pgsql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1263
    functionDepth: 6
    functionLinenumber: 1263
    functionLinenumberEnd: 1297
    functionName: driver_pgsql_transaction_commit_multi
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - commit_multi_fail
    - i_unreached
    - PQcmdTuples
    - driver_pgsql_sync_query
    - sql_result_unref
    - str_to_uint
    - sql_result_next_row
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_pgsql_transaction_commit_multi(struct pgsql_transaction_context *ctx)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sql_query_s
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1311,1
    - Dst: driver_pgsql_sync_init
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1314,1
    - Dst: driver_pgsql_transaction_commit_multi
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1315,1
    - Dst: driver_pgsql_sync_deinit
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1316,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1320,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1321,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1321,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1326,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1327,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1333,1
    - Dst: PQcmdTuples
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1333,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1335,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1340,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1340,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1345,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct pgsql_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1299
    functionDepth: 7
    functionLinenumber: 1299
    functionLinenumberEnd: 1346
    functionName: driver_pgsql_try_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - sql_query_s
    - i_unreached
    - e_debug
    - driver_pgsql_transaction_commit_multi
    - driver_pgsql_sync_deinit
    - driver_pgsql_sync_init
    - sql_result_get_error
    - PQcmdTuples
    - sql_result_unref
    - str_to_uint
    - i_assert
    - sql_result_next_row
    - sql_transaction_finished_event
    linkageType: ''
    returnType: void
    signature: "void driver_pgsql_try_commit_s(struct pgsql_transaction_context *ctx,\n\t\t\t
      \ const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_try_commit_s
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1359,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1361,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1362,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1364,1
    - Dst: driver_pgsql_try_commit_s
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1367,1
    - Dst: driver_pgsql_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1372,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct sql_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1348
    functionDepth: 8
    functionLinenumber: 1348
    functionLinenumberEnd: 1374
    functionName: driver_pgsql_transaction_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - e_info
    - sql_connect
    - driver_pgsql_transaction_free
    - driver_pgsql_try_commit_s
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int driver_pgsql_transaction_commit_s(struct sql_transaction_context
      *_ctx,\n\t\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1381,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1381,1
    - Dst: driver_pgsql_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct sql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1376
    functionDepth: 2
    functionLinenumber: 1376
    functionLinenumberEnd: 1386
    functionName: driver_pgsql_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - e_debug
    - driver_pgsql_transaction_free
    - sql_transaction_finished_event
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_transaction_rollback(struct sql_transaction_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_transaction_add_query
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - query
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1388
    functionDepth: 1
    functionLinenumber: 1388
    functionLinenumberEnd: 1396
    functionName: driver_pgsql_update
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - sql_transaction_add_query
    linkageType: ''
    returnType: void
    signature: "void driver_pgsql_update(struct sql_transaction_context *_ctx, const
      char *query,\n\t\t    unsigned int *affected_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1402,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1404,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1405,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1406,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - data
    - size
    argTypes:
    - struct sql_db*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1398
    functionDepth: 1
    functionLinenumber: 1398
    functionLinenumberEnd: 1408
    functionName: driver_pgsql_escape_blob
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_append
    - binary_to_hex_append
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_pgsql_escape_blob(struct sql_db *_db ATTR_UNUSED,\n\t\t\t
      const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct pgsql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1410
    functionDepth: 0
    functionLinenumber: 1410
    functionLinenumberEnd: 1414
    functionName: driver_pgsql_have_work
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool driver_pgsql_have_work(struct pgsql_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_pgsql_have_work
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1420,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1424,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1425,1
    - Dst: driver_pgsql_have_work
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1426,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1427,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1429,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1430,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1431,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1416
    functionDepth: 1
    functionLinenumber: 1416
    functionLinenumberEnd: 1433
    functionName: driver_pgsql_wait
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io
    - driver_pgsql_have_work
    - io_loop_set_current
    - io_loop_destroy
    - io_loop_create
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_wait(struct sql_db *_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1481,1
    - Dst: sql_driver_register
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1479
    functionDepth: 1
    functionLinenumber: 1479
    functionLinenumberEnd: 1483
    functionName: driver_pgsql_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - sql_driver_register
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1489,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1490,1
    - Dst: sql_unref
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1491,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1493,1
    - Dst: sql_driver_unregister
      Src: /src/dovecot/src/lib-sql/driver-pgsql.c:1494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1485
    functionDepth: 1
    functionLinenumber: 1485
    functionLinenumberEnd: 1495
    functionName: driver_pgsql_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-pgsql.c
    functionUses: 0
    functionsReached:
    - sql_driver_unregister
    - settings_free
    - array_foreach_modifiable
    - array_free
    - sql_unref
    linkageType: ''
    returnType: void
    signature: void driver_pgsql_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_driver_register
      Src: /src/dovecot/src/lib-sql/driver-test.c:178,1
    - Dst: sql_driver_register
      Src: /src/dovecot/src/lib-sql/driver-test.c:179,1
    - Dst: sql_driver_register
      Src: /src/dovecot/src/lib-sql/driver-test.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: sql_driver_test_register
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - sql_driver_register
    linkageType: ''
    returnType: void
    signature: void sql_driver_test_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_driver_unregister
      Src: /src/dovecot/src/lib-sql/driver-test.c:185,1
    - Dst: sql_driver_unregister
      Src: /src/dovecot/src/lib-sql/driver-test.c:186,1
    - Dst: sql_driver_unregister
      Src: /src/dovecot/src/lib-sql/driver-test.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 188
    functionName: sql_driver_test_unregister
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - sql_driver_unregister
    linkageType: ''
    returnType: void
    signature: void sql_driver_test_unregister(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-test.c:195,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/driver-test.c:196,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-sql/driver-test.c:199,1
    - Dst: sql_init_common
      Src: /src/dovecot/src/lib-sql/driver-test.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - driver
    - ATTR_UNUSED
    - db_r
    - ATTR_UNUSED
    argTypes:
    - struct sql_db*
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 203
    functionName: driver_test_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - sql_init_common
    - p_new
    - p_array_init
    linkageType: ''
    returnType: int
    signature: "int driver_test_init(const struct sql_db *driver,\n\t\t\t    struct
      event *event ATTR_UNUSED,\n\t\t\t    struct sql_db **db_r,\n\t\t\t    const
      char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_test_init
      Src: /src/dovecot/src/lib-sql/driver-test.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - event
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 209
    functionName: driver_test_mysql_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - driver_test_init
    linkageType: ''
    returnType: int
    signature: "int driver_test_mysql_init(struct event *event, struct sql_db **db_r,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_test_init
      Src: /src/dovecot/src/lib-sql/driver-test.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - event
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 216
    functionName: driver_test_cassandra_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - driver_test_init
    linkageType: ''
    returnType: int
    signature: "int driver_test_cassandra_init(struct event *event, struct sql_db
      **db_r,\n\t\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_test_init
      Src: /src/dovecot/src/lib-sql/driver-test.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - event
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 222
    functionName: driver_test_sqlite_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - driver_test_init
    linkageType: ''
    returnType: int
    signature: "int driver_test_sqlite_init(struct event *event, struct sql_db **db_r,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-test.c:227,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/driver-test.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 229
    functionName: driver_test_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - array_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void driver_test_deinit(struct sql_db *_db ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: driver_test_connect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int driver_test_connect(struct sql_db *_db ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 238
    functionName: driver_test_disconnect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void driver_test_disconnect(struct sql_db *_db ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-test.c:244,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-test.c:244,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sql/driver-test.c:248,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sql/driver-test.c:249,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-test.c:251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 7
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - string
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 252
    functionName: driver_test_mysql_escape_string
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - strlen
    - str_append_c
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_test_mysql_escape_string(struct sql_db *_db ATTR_UNUSED,\n\t\t\t\t
      const char *string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - string
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 258
    functionName: driver_test_escape_string
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_test_escape_string(struct sql_db *_db ATTR_UNUSED, const char *string)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-sql/driver-test.c:264,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-test.c:265,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/driver-test.c:270,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-test.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 278
    functionName: driver_test_exec
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - i_assert
    - strcmp
    - test_assert_strcmp
    linkageType: ''
    returnType: void
    signature: void driver_test_exec(struct sql_db *_db, const char *query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_test_query_s
      Src: /src/dovecot/src/lib-sql/driver-test.c:284,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sql/driver-test.c:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - _db
    - query
    - callback
    - context
    argTypes:
    - struct sql_db*
    - char*
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 287
    functionName: driver_test_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - driver_test_query_s
    - callback
    linkageType: ''
    returnType: void
    signature: "void driver_test_query(struct sql_db *_db, const char *query,\n\t\t
      \  sql_query_callback_t *callback, void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-sql/driver-test.c:294,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-test.c:295,1
    - Dst: driver_test_exec
      Src: /src/dovecot/src/lib-sql/driver-test.c:297,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-test.c:306,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sql/driver-test.c:307,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-sql/driver-test.c:313,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 316
    functionName: driver_test_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 1
    functionsReached:
    - array_front_modifiable
    - memcpy
    - array_pop_front
    - driver_test_exec
    - i_new
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_test_query_s(struct sql_db *_db, const char *query)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-test.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 325
    functionName: driver_test_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct sql_transaction_context
    signature: 'struct sql_transaction_context *

      driver_test_transaction_begin(struct sql_db *_db)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_test_transaction_commit_s
      Src: /src/dovecot/src/lib-sql/driver-test.c:332,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sql/driver-test.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - callback
    - context
    argTypes:
    - struct sql_transaction_context*
    - sql_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 334
    functionName: driver_test_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - driver_test_transaction_commit_s
    - callback
    linkageType: ''
    returnType: void
    signature: "void driver_test_transaction_commit(struct sql_transaction_context
      *ctx,\n\t\t\t\tsql_commit_callback_t *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-test.c:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct sql_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 352
    functionName: driver_test_transaction_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 1
    functionsReached:
    - i_free
    linkageType: ''
    returnType: int
    signature: "int driver_test_transaction_commit_s(struct sql_transaction_context
      *ctx,\n\t\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-test.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 361
    functionName: driver_test_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void driver_test_transaction_rollback(struct sql_transaction_context
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-sql/driver-test.c:369,1
    - Dst: driver_test_exec
      Src: /src/dovecot/src/lib-sql/driver-test.c:370,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-sql/driver-test.c:377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - query
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 378
    functionName: driver_test_update
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - driver_test_exec
    - array_pop_front
    linkageType: ''
    returnType: void
    signature: "void driver_test_update(struct sql_transaction_context *ctx, const
      char *query,\n\t\t    unsigned int *affected_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-test.c:384,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-sql/driver-test.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - data
    - size
    argTypes:
    - struct sql_db*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 385
    functionName: driver_test_mysql_escape_blob
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - binary_to_hex
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_test_mysql_escape_blob(struct sql_db *_db ATTR_UNUSED,\n\t\t\t
      \      const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-test.c:391,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-sql/driver-test.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - data
    - size
    argTypes:
    - struct sql_db*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 392
    functionName: driver_test_escape_blob
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - binary_to_hex
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_test_escape_blob(struct sql_db *_db ATTR_UNUSED,\n\t\t\t
      const unsigned char *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-test.c:399,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-test.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: driver_test_result_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void driver_test_result_free(struct sql_result *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 418
    functionName: driver_test_result_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int driver_test_result_next_row(struct sql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 429
    functionName: driver_test_result_get_fields_count
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int driver_test_result_get_fields_count(struct sql_result
      *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-test.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 441
    functionName: driver_test_result_get_field_name
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_test_result_get_field_name(struct sql_result *result, unsigned int idx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-test.c:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 456
    functionName: driver_test_result_find_field
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int driver_test_result_find_field(struct sql_result *result, const
      char *field_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-test.c:467,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-test.c:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 471
    functionName: driver_test_result_get_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_test_result_get_field_value(struct sql_result *result, unsigned int idx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-sql/driver-test.c:476,1
    - Dst: driver_test_result_get_field_value
      Src: /src/dovecot/src/lib-sql/driver-test.c:477,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-sql/driver-test.c:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - result
    - idx
    - size_r
    argTypes:
    - struct sql_result*
    - unsigned int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 472
    functionDepth: 2
    functionLinenumber: 472
    functionLinenumberEnd: 485
    functionName: driver_test_result_get_field_value_binary
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - hex_to_binary
    - t_buffer_create
    - driver_test_result_get_field_value
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\ndriver_test_result_get_field_value_binary(struct
      sql_result *result,\n\t\t\t\t\t   unsigned int idx, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_test_result_find_field
      Src: /src/dovecot/src/lib-sql/driver-test.c:490,1
    - Dst: driver_test_result_get_field_value
      Src: /src/dovecot/src/lib-sql/driver-test.c:492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 493
    functionName: driver_test_result_find_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - driver_test_result_get_field_value
    - driver_test_result_find_field
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_test_result_find_field_value(struct sql_result *result,\n\t\t\t\t
      \    const char *field_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-test.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 504
    functionName: driver_test_result_get_values
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *const *

      driver_test_result_get_values(struct sql_result *result)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 511
    functionName: driver_test_result_get_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *driver_test_result_get_error(struct sql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-test.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _db
    - result
    argTypes:
    - struct sql_db*
    - struct test_driver_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 519
    functionName: sql_driver_test_add_expected_result
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void sql_driver_test_add_expected_result(struct sql_db *_db,\n\t\t\t\t\t
      \ const struct test_driver_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-sql/driver-test.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 525
    functionName: sql_driver_test_clear_expected_results
    functionSourceFile: /src/dovecot/src/lib-sql/driver-test.c
    functionUses: 0
    functionsReached:
    - array_clear
    linkageType: ''
    returnType: void
    signature: void sql_driver_test_clear_expected_results(struct sql_db *_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/sql-api.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: sql_drivers_init_without_drivers
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - i_array_init
    linkageType: ''
    returnType: void
    signature: void sql_drivers_init_without_drivers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: sql_drivers_deinit_without_drivers
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void sql_drivers_deinit_without_drivers(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/sql-api.c:87,1
    - Dst: sql_drivers_init_without_drivers
      Src: /src/dovecot/src/lib-sql/sql-api.c:89,1
    - Dst: sql_drivers_init_all
      Src: /src/dovecot/src/lib-sql/sql-api.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: sql_drivers_init
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - sql_drivers_init_without_drivers
    - sql_drivers_init_all
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void sql_drivers_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_drivers_deinit_all
      Src: /src/dovecot/src/lib-sql/sql-api.c:95,1
    - Dst: sql_drivers_deinit_without_drivers
      Src: /src/dovecot/src/lib-sql/sql-api.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: sql_drivers_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - sql_drivers_deinit_without_drivers
    - sql_drivers_deinit_all
    linkageType: ''
    returnType: void
    signature: void sql_drivers_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/sql-api.c:104,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/sql-api.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 110
    functionName: sql_driver_lookup
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_get
    linkageType: ''
    returnType: struct sql_db
    signature: struct sql_db *sql_driver_lookup(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_driver_lookup
      Src: /src/dovecot/src/lib-sql/sql-api.c:114,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sql/sql-api.c:115,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/sql-api.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - driver
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: sql_driver_register
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 2
    functionsReached:
    - sql_driver_lookup
    - i_fatal
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void sql_driver_register(const struct sql_db *driver)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-sql/sql-api.c:125,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/sql-api.c:126,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-sql/sql-api.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - driver
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: sql_driver_unregister
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 2
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void sql_driver_unregister(const struct sql_db *driver)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:138,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-sql/sql-api.c:140,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:146,1
    - Dst: sql_driver_lookup
      Src: /src/dovecot/src/lib-sql/sql-api.c:149,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/sql-api.c:151,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:153,1
    - Dst: struct sql_db*::v::init
      Src: /src/dovecot/src/lib-sql/sql-api.c:157,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/sql-api.c:158,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:160,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - event
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 167
    functionName: sql_init_auto
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - i_assert
    - sql_driver_lookup
    - struct sql_db*::v::init
    - t_strdup_printf
    - settings_free
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int sql_init_auto(struct event *event, struct sql_db **db_r,\n\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/sql-api.c:173,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-sql/sql-api.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 176
    functionName: sql_init_common
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - hash_table_create
    linkageType: ''
    returnType: void
    signature: void sql_init_common(struct sql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: sql_ref
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void sql_ref(struct sql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:187,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - prep_stmt
    argTypes:
    - struct sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 189
    functionName: default_sql_prepared_statement_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void default_sql_prepared_statement_deinit(struct sql_prepared_statement
      *prep_stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-sql/sql-api.c:197,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-sql/sql-api.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:199,1
    - Dst: struct sql_prepared_statement*::db::v::prepared_statement_deinit
      Src: /src/dovecot/src/lib-sql/sql-api.c:201,1
    - Dst: default_sql_prepared_statement_deinit
      Src: /src/dovecot/src/lib-sql/sql-api.c:203,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-sql/sql-api.c:205,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/lib-sql/sql-api.c:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 207
    functionName: sql_prepared_statements_free
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - default_sql_prepared_statement_deinit
    - hash_table_iterate_init
    - hash_table_clear
    - struct sql_prepared_statement*::db::v::prepared_statement_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void sql_prepared_statements_free(struct sql_db *db)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:215,1
    - Dst: struct sql_db*::v::unref
      Src: /src/dovecot/src/lib-sql/sql-api.c:217,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/sql-api.c:221,1
    - Dst: sql_prepared_statements_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:222,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-sql/sql-api.c:223,1
    - Dst: struct sql_db*::v::deinit
      Src: /src/dovecot/src/lib-sql/sql-api.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 209
    functionDepth: 3
    functionLinenumber: 209
    functionLinenumberEnd: 225
    functionName: sql_unref
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_db*::v::unref
    - struct sql_db*::v::deinit
    - sql_prepared_statements_free
    - i_assert
    - hash_table_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void sql_unref(struct sql_db **_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::get_flags
      Src: /src/dovecot/src/lib-sql/sql-api.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: sql_get_flags
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_db*::v::get_flags
    linkageType: ''
    returnType: enum sql_db_flags
    signature: enum sql_db_flags sql_get_flags(struct sql_db *db)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib-sql/sql-api.c:249,1
    - Dst: struct sql_db*::v::connect
      Src: /src/dovecot/src/lib-sql/sql-api.c:254,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 255
    functionName: sql_connect
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 3
    functionsReached:
    - struct sql_db*::v::connect
    - time
    linkageType: ''
    returnType: int
    signature: int sql_connect(struct sql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_query_delayed_callback
      Src: /src/dovecot/src/lib-sql/sql-api.c:261,1
    - Dst: sql_commit_delayed_callback
      Src: /src/dovecot/src/lib-sql/sql-api.c:263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 264
    functionName: sql_call_delayed_callbacks
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - sql_query_delayed_callback
    - sql_commit_delayed_callback
    linkageType: ''
    returnType: void
    signature: void sql_call_delayed_callbacks(struct sql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/sql-api.c:268,1
    - Dst: sql_call_delayed_callbacks
      Src: /src/dovecot/src/lib-sql/sql-api.c:269,1
    - Dst: struct sql_db*::v::disconnect
      Src: /src/dovecot/src/lib-sql/sql-api.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 271
    functionName: sql_disconnect
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_db*::v::disconnect
    - sql_call_delayed_callbacks
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void sql_disconnect(struct sql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::escape_string
      Src: /src/dovecot/src/lib-sql/sql-api.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - db
    - string
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 276
    functionName: sql_escape_string
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_db*::v::escape_string
    linkageType: ''
    returnType: char
    signature: char *sql_escape_string(struct sql_db *db, const char *string)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::escape_blob
      Src: /src/dovecot/src/lib-sql/sql-api.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - db
    - data
    - size
    argTypes:
    - struct sql_db*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 282
    functionName: sql_escape_blob
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_db*::v::escape_blob
    linkageType: ''
    returnType: char
    signature: "char *sql_escape_blob(struct sql_db *db,\n\t\t\t    const unsigned
      char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::exec
      Src: /src/dovecot/src/lib-sql/sql-api.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 287
    functionName: sql_exec
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_db*::v::exec
    linkageType: ''
    returnType: void
    signature: void sql_exec(struct sql_db *db, const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/sql-api.c:291,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-sql/sql-api.c:292,1
    - Dst: struct sql_query_result_delayed*::callback
      Src: /src/dovecot/src/lib-sql/sql-api.c:293,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/sql-api.c:294,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - cb
    argTypes:
    - struct sql_query_result_delayed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 296
    functionName: sql_query_delayed_callback
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_query_result_delayed*::callback
    - sql_result_unref
    - DLLIST_REMOVE
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void sql_query_delayed_callback(struct sql_query_result_delayed *cb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::query
      Src: /src/dovecot/src/lib-sql/sql-api.c:303,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/sql-api.c:307,1
    - Dst: sql_query_s
      Src: /src/dovecot/src/lib-sql/sql-api.c:309,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-sql/sql-api.c:312,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-sql/sql-api.c:313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - db
    - query
    - callback
    - context
    argTypes:
    - struct sql_db*
    - char*
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 314
    functionName: sql_query
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 3
    functionsReached:
    - sql_query_s
    - timeout_add_short
    - struct sql_db*::v::query
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: void
    signature: "void sql_query(struct sql_db *db, const char *query,\n\t       sql_query_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::query_s
      Src: /src/dovecot/src/lib-sql/sql-api.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: sql_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 2
    functionsReached:
    - struct sql_db*::v::query_s
    linkageType: ''
    returnType: struct sql_result
    signature: struct sql_result *sql_query_s(struct sql_db *db, const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/sql-api.c:327,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/sql-api.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - db
    - query_template
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 332
    functionName: default_sql_prepared_statement_init
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_new
    linkageType: ''
    returnType: struct sql_prepared_statement
    signature: "struct sql_prepared_statement *\ndefault_sql_prepared_statement_init(struct
      sql_db *db,\n\t\t\t\t    const char *query_template)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_statement_init
      Src: /src/dovecot/src/lib-sql/sql-api.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 338
    functionName: default_sql_statement_init_prepared
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - sql_statement_init
    linkageType: ''
    returnType: struct sql_statement
    signature: 'struct sql_statement *

      default_sql_statement_init_prepared(struct sql_prepared_statement *stmt)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_statement_get_query
      Src: /src/dovecot/src/lib-sql/sql-api.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 345
    functionName: sql_statement_get_log_query
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - sql_statement_get_query
    linkageType: ''
    returnType: char
    signature: char *sql_statement_get_log_query(struct sql_statement *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/sql-api.c:349,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/sql-api.c:354,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-sql/sql-api.c:356,1
    - Dst: str_append_max
      Src: /src/dovecot/src/lib-sql/sql-api.c:358,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-sql/sql-api.c:361,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/sql-api.c:364,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/sql-api.c:367,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-sql/sql-api.c:370,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/sql-api.c:373,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 374
    functionName: sql_statement_get_query
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - i_panic
    - strchr
    - t_str_new
    - str_c
    - array_get
    - str_append_max
    - str_append
    linkageType: ''
    returnType: char
    signature: char *sql_statement_get_query(struct sql_statement *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_query
      Src: /src/dovecot/src/lib-sql/sql-api.c:380,1
    - Dst: sql_statement_get_query
      Src: /src/dovecot/src/lib-sql/sql-api.c:380,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/sql-api.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stmt
    - callback
    - context
    argTypes:
    - struct sql_statement*
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 383
    functionName: default_sql_statement_query
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - sql_statement_get_query
    - sql_query
    linkageType: ''
    returnType: void
    signature: "void default_sql_statement_query(struct sql_statement *stmt,\n\t\t\t
      \   sql_query_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_query_s
      Src: /src/dovecot/src/lib-sql/sql-api.c:389,1
    - Dst: sql_statement_get_query
      Src: /src/dovecot/src/lib-sql/sql-api.c:389,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/sql-api.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 392
    functionName: default_sql_statement_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - sql_query_s
    - sql_statement_get_query
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      default_sql_statement_query_s(struct sql_statement *stmt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_transaction_context*::db::v::update
      Src: /src/dovecot/src/lib-sql/sql-api.c:398,1
    - Dst: sql_statement_get_query
      Src: /src/dovecot/src/lib-sql/sql-api.c:398,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/sql-api.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - stmt
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - struct sql_statement*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: default_sql_update_stmt
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - sql_statement_get_query
    - pool_unref
    - struct sql_transaction_context*::db::v::update
    linkageType: ''
    returnType: void
    signature: "void default_sql_update_stmt(struct sql_transaction_context *ctx,\n\t\t\t\t
      \   struct sql_statement *stmt,\n\t\t\t\t    unsigned int *affected_rows)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-sql/sql-api.c:408,1
    - Dst: struct sql_db*::v::prepared_statement_init
      Src: /src/dovecot/src/lib-sql/sql-api.c:415,1
    - Dst: default_sql_prepared_statement_init
      Src: /src/dovecot/src/lib-sql/sql-api.c:417,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-sql/sql-api.c:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - db
    - query_template
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 403
    functionDepth: 2
    functionLinenumber: 403
    functionLinenumberEnd: 421
    functionName: sql_prepared_statement_init
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - hash_table_insert
    - struct sql_db*::v::prepared_statement_init
    - hash_table_lookup
    - default_sql_prepared_statement_init
    linkageType: ''
    returnType: struct sql_prepared_statement
    signature: 'struct sql_prepared_statement *

      sql_prepared_statement_init(struct sql_db *db, const char *query_template)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _prep_stmt
    argTypes:
    - struct sql_prepared_statement**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 434
    functionName: sql_prepared_statement_unref
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void sql_prepared_statement_unref(struct sql_prepared_statement **_prep_stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-sql/sql-api.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stmt
    - db
    argTypes:
    - struct sql_statement*
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 441
    functionName: sql_statement_init_fields
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void sql_statement_init_fields(struct sql_statement *stmt, struct sql_db
      *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::statement_init
      Src: /src/dovecot/src/lib-sql/sql-api.c:449,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/sql-api.c:451,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/sql-api.c:452,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sql/sql-api.c:455,1
    - Dst: sql_statement_init_fields
      Src: /src/dovecot/src/lib-sql/sql-api.c:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - db
    - query_template
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 458
    functionName: sql_statement_init
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - struct sql_db*::v::statement_init
    - p_new
    - sql_statement_init_fields
    linkageType: ''
    returnType: struct sql_statement
    signature: 'struct sql_statement *

      sql_statement_init(struct sql_db *db, const char *query_template)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: default_sql_statement_init_prepared
      Src: /src/dovecot/src/lib-sql/sql-api.c:466,1
    - Dst: struct sql_prepared_statement*::db::v::statement_init_prepared
      Src: /src/dovecot/src/lib-sql/sql-api.c:468,1
    - Dst: sql_statement_init_fields
      Src: /src/dovecot/src/lib-sql/sql-api.c:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - prep_stmt
    argTypes:
    - struct sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 471
    functionName: sql_statement_init_prepared
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_prepared_statement*::db::v::statement_init_prepared
    - default_sql_statement_init_prepared
    - sql_statement_init_fields
    linkageType: ''
    returnType: struct sql_statement
    signature: 'struct sql_statement *

      sql_statement_init_prepared(struct sql_prepared_statement *prep_stmt)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_statement*::db::v::statement_abort
      Src: /src/dovecot/src/lib-sql/sql-api.c:479,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/sql-api.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _stmt
    argTypes:
    - struct sql_statement**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 481
    functionName: sql_statement_abort
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_statement*::db::v::statement_abort
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void sql_statement_abort(struct sql_statement **_stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_statement*::db::v::statement_set_timestamp
      Src: /src/dovecot/src/lib-sql/sql-api.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stmt
    - ts
    argTypes:
    - struct sql_statement*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 488
    functionName: sql_statement_set_timestamp
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_statement*::db::v::statement_set_timestamp
    linkageType: ''
    returnType: void
    signature: "void sql_statement_set_timestamp(struct sql_statement *stmt,\n\t\t\t\t
      const struct timespec *ts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stmt
    - no_expand
    argTypes:
    - struct sql_statement*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 494
    functionName: sql_statement_set_no_log_expanded_values
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void sql_statement_set_no_log_expanded_values(struct sql_statement
      *stmt,\n\t\t\t\t\t      bool no_expand)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-sql/sql-api.c:500,1
    - Dst: sql_escape_string
      Src: /src/dovecot/src/lib-sql/sql-api.c:501,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-sql/sql-api.c:502,1
    - Dst: struct sql_statement*::db::v::statement_bind_str
      Src: /src/dovecot/src/lib-sql/sql-api.c:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 506
    functionName: sql_statement_bind_str
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - struct sql_statement*::db::v::statement_bind_str
    - p_strdup_printf
    - sql_escape_string
    linkageType: ''
    returnType: void
    signature: "void sql_statement_bind_str(struct sql_statement *stmt,\n\t\t\t    unsigned
      int column_idx, const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-sql/sql-api.c:513,1
    - Dst: sql_escape_blob
      Src: /src/dovecot/src/lib-sql/sql-api.c:514,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-sql/sql-api.c:515,1
    - Dst: struct sql_statement*::db::v::statement_bind_binary
      Src: /src/dovecot/src/lib-sql/sql-api.c:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - stmt
    - column_idx
    - value
    - value_size
    argTypes:
    - struct sql_statement*
    - unsigned int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 521
    functionName: sql_statement_bind_binary
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - sql_escape_blob
    - struct sql_statement*::db::v::statement_bind_binary
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void sql_statement_bind_binary(struct sql_statement *stmt,\n\t\t\t
      \      unsigned int column_idx, const void *value,\n\t\t\t       size_t value_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-sql/sql-api.c:526,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-sql/sql-api.c:527,1
    - Dst: struct sql_statement*::db::v::statement_bind_int64
      Src: /src/dovecot/src/lib-sql/sql-api.c:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 531
    functionName: sql_statement_bind_int64
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - p_strdup_printf
    - struct sql_statement*::db::v::statement_bind_int64
    linkageType: ''
    returnType: void
    signature: "void sql_statement_bind_int64(struct sql_statement *stmt,\n\t\t\t
      \     unsigned int column_idx, int64_t value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-sql/sql-api.c:536,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-sql/sql-api.c:537,1
    - Dst: struct sql_statement*::db::v::statement_bind_double
      Src: /src/dovecot/src/lib-sql/sql-api.c:540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 541
    functionName: sql_statement_bind_double
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - p_strdup_printf
    - struct sql_statement*::db::v::statement_bind_double
    linkageType: ''
    returnType: void
    signature: "void sql_statement_bind_double(struct sql_statement *stmt,\n\t\t\t
      \      unsigned int column_idx, double value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sql/sql-api.c:546,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib-sql/sql-api.c:546,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-sql/sql-api.c:547,1
    - Dst: struct sql_statement*::db::v::statement_bind_uuid
      Src: /src/dovecot/src/lib-sql/sql-api.c:550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - stmt
    - column_idx
    - uuid
    argTypes:
    - struct sql_statement*
    - unsigned int
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 551
    functionName: sql_statement_bind_uuid
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - guid_128_to_uuid_string
    - p_strdup
    - struct sql_statement*::db::v::statement_bind_uuid
    linkageType: ''
    returnType: void
    signature: "void sql_statement_bind_uuid(struct sql_statement *stmt,\n\t\t\t     unsigned
      int column_idx, const guid_128_t uuid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_statement*::db::v::statement_query
      Src: /src/dovecot/src/lib-sql/sql-api.c:561,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/sql-api.c:565,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/sql-api.c:569,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-sql/sql-api.c:570,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-sql/sql-api.c:571,1
    - Dst: default_sql_statement_query
      Src: /src/dovecot/src/lib-sql/sql-api.c:573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - _stmt
    - callback
    - context
    argTypes:
    - struct sql_statement**
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 554
    functionDepth: 3
    functionLinenumber: 554
    functionLinenumberEnd: 574
    functionName: sql_statement_query
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - sql_statement_query_s
    - timeout_add_short
    - struct sql_statement*::db::v::statement_query
    - DLLIST_PREPEND
    - default_sql_statement_query
    - i_new
    linkageType: ''
    returnType: void
    signature: "void sql_statement_query(struct sql_statement **_stmt,\n\t\t\t sql_query_callback_t
      *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_statement*::db::v::statement_query_s
      Src: /src/dovecot/src/lib-sql/sql-api.c:582,1
    - Dst: default_sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/sql-api.c:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _stmt
    argTypes:
    - struct sql_statement**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 576
    functionDepth: 3
    functionLinenumber: 576
    functionLinenumberEnd: 585
    functionName: sql_statement_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 2
    functionsReached:
    - struct sql_statement*::db::v::statement_query_s
    - default_sql_statement_query_s
    linkageType: ''
    returnType: struct sql_result
    signature: struct sql_result *sql_statement_query_s(struct sql_statement **_stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 590
    functionName: sql_result_ref
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sql_result_ref(struct sql_result *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:594,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:598,1
    - Dst: struct sql_result*::v::free
      Src: /src/dovecot/src/lib-sql/sql-api.c:599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 600
    functionName: sql_result_unref
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 4
    functionsReached:
    - struct sql_result*::v::free
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void sql_result_unref(struct sql_result *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-sql/sql-api.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - fields
    - name
    argTypes:
    - struct sql_field_def*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 612
    functionName: sql_field_def_find
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: struct sql_field_def
    signature: 'struct sql_field_def *

      sql_field_def_find(const struct sql_field_def *fields, const char *name)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-sql/sql-api.c:622,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/sql-api.c:625,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/sql-api.c:627,1
    - Dst: sql_field_def_find
      Src: /src/dovecot/src/lib-sql/sql-api.c:628,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:649,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - result
    - fields
    - dest_size
    argTypes:
    - struct sql_result*
    - struct sql_field_def*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 654
    functionName: sql_result_build_map
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - sql_result_get_field_name
    - sql_result_get_fields_count
    - i_new
    - sql_field_def_find
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sql_result_build_map(struct sql_result *result,\n\t\t     const
      struct sql_field_def *fields, size_t dest_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_build_map
      Src: /src/dovecot/src/lib-sql/sql-api.c:661,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - result
    - fields
    - dest
    - dest_size
    argTypes:
    - struct sql_result*
    - struct sql_field_def*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 656
    functionDepth: 2
    functionLinenumber: 656
    functionLinenumberEnd: 664
    functionName: sql_result_setup_fetch
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - sql_result_build_map
    linkageType: ''
    returnType: void
    signature: "void sql_result_setup_fetch(struct sql_result *result,\n\t\t\t    const
      struct sql_field_def *fields,\n\t\t\t    void *dest, size_t dest_size)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-sql/sql-api.c:672,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/sql-api.c:678,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-sql/sql-api.c:679,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-sql/sql-api.c:688,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/sql-api.c:689,1
    - Dst: str_to_ullong
      Src: /src/dovecot/src/lib-sql/sql-api.c:695,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/sql-api.c:696,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib-sql/sql-api.c:707,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 712
    functionName: sql_result_fetch
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - guid_128_from_uuid_string
    - sql_result_get_field_value
    - e_error
    - str_to_ullong
    - str_to_uint
    - memset
    linkageType: ''
    returnType: void
    signature: void sql_result_fetch(struct sql_result *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_result*::v::next_row
      Src: /src/dovecot/src/lib-sql/sql-api.c:718,1
    - Dst: sql_result_fetch
      Src: /src/dovecot/src/lib-sql/sql-api.c:722,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 714
    functionDepth: 2
    functionLinenumber: 714
    functionLinenumberEnd: 724
    functionName: sql_result_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 6
    functionsReached:
    - sql_result_fetch
    - struct sql_result*::v::next_row
    linkageType: ''
    returnType: int
    signature: int sql_result_next_row(struct sql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:730,1
    - Dst: v::more
      Src: /src/dovecot/src/lib-sql/sql-api.c:732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - result
    - callback
    - context
    argTypes:
    - struct sql_result**
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 733
    functionName: sql_result_more
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - i_assert
    - v::more
    linkageType: ''
    returnType: void
    signature: "void sql_result_more(struct sql_result **result,\n\t\t     sql_query_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - struct sql_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 735
    functionDepth: 0
    functionLinenumber: 735
    functionLinenumberEnd: 741
    functionName: sql_result_more_sync_callback
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sql_result_more_sync_callback(struct sql_result *result, void
      *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:745,1
    - Dst: v::more
      Src: /src/dovecot/src/lib-sql/sql-api.c:747,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 750
    functionName: sql_result_more_s
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - i_assert
    - v::more
    linkageType: ''
    returnType: void
    signature: void sql_result_more_s(struct sql_result **result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_result*::v::get_fields_count
      Src: /src/dovecot/src/lib-sql/sql-api.c:754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 755
    functionName: sql_result_get_fields_count
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_result*::v::get_fields_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int sql_result_get_fields_count(struct sql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_result*::v::get_field_name
      Src: /src/dovecot/src/lib-sql/sql-api.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 761
    functionName: sql_result_get_field_name
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_result*::v::get_field_name
    linkageType: ''
    returnType: char
    signature: "char *sql_result_get_field_name(struct sql_result *result,\n\t\t\t\t
      \     unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_result*::v::find_field
      Src: /src/dovecot/src/lib-sql/sql-api.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 766
    functionName: sql_result_find_field
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_result*::v::find_field
    linkageType: ''
    returnType: int
    signature: int sql_result_find_field(struct sql_result *result, const char *field_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_result*::v::get_field_value
      Src: /src/dovecot/src/lib-sql/sql-api.c:771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 772
    functionName: sql_result_get_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 3
    functionsReached:
    - struct sql_result*::v::get_field_value
    linkageType: ''
    returnType: char
    signature: "char *sql_result_get_field_value(struct sql_result *result,\n\t\t\t\t
      \      unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_result*::v::get_field_value_binary
      Src: /src/dovecot/src/lib-sql/sql-api.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - result
    - idx
    - size_r
    argTypes:
    - struct sql_result*
    - unsigned int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 774
    functionDepth: 0
    functionLinenumber: 774
    functionLinenumberEnd: 779
    functionName: sql_result_get_field_value_binary
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_result*::v::get_field_value_binary
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\nsql_result_get_field_value_binary(struct sql_result
      *result,\n\t\t\t\t  unsigned int idx, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_result*::v::find_field_value
      Src: /src/dovecot/src/lib-sql/sql-api.c:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 785
    functionName: sql_result_find_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_result*::v::find_field_value
    linkageType: ''
    returnType: char
    signature: "char *sql_result_find_field_value(struct sql_result *result,\n\t\t\t\t\tconst
      char *field_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: v::get_values
      Src: /src/dovecot/src/lib-sql/sql-api.c:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 790
    functionName: sql_result_get_values
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - v::get_values
    linkageType: ''
    returnType: char
    signature: char *const *sql_result_get_values(struct sql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_result*::v::get_error
      Src: /src/dovecot/src/lib-sql/sql-api.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: sql_result_get_error
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 4
    functionsReached:
    - struct sql_result*::v::get_error
    linkageType: ''
    returnType: char
    signature: char *sql_result_get_error(struct sql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 797
    functionDepth: 0
    functionLinenumber: 797
    functionLinenumberEnd: 800
    functionName: sql_result_get_error_type
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: enum sql_result_error_type
    signature: enum sql_result_error_type sql_result_get_error_type(struct sql_result
      *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 802
    functionDepth: 0
    functionLinenumber: 802
    functionLinenumberEnd: 805
    functionName: sql_result_not_connected_free
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sql_result_not_connected_free(struct sql_result *result ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 811
    functionName: sql_result_not_connected_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sql_result_not_connected_next_row(struct sql_result *result ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 813
    functionDepth: 0
    functionLinenumber: 813
    functionLinenumberEnd: 817
    functionName: sql_result_not_connected_get_error
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      sql_result_not_connected_get_error(struct sql_result *result ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::transaction_begin
      Src: /src/dovecot/src/lib-sql/sql-api.c:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 822
    functionName: sql_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_db*::v::transaction_begin
    linkageType: ''
    returnType: struct sql_transaction_context
    signature: struct sql_transaction_context *sql_transaction_begin(struct sql_db
      *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 824
    functionDepth: 0
    functionLinenumber: 824
    functionLinenumberEnd: 827
    functionName: sql_transaction_set_non_atomic
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sql_transaction_set_non_atomic(struct sql_transaction_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/sql-api.c:834,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-sql/sql-api.c:835,1
    - Dst: struct sql_commit_result_delayed*::callback
      Src: /src/dovecot/src/lib-sql/sql-api.c:836,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:837,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - cb
    argTypes:
    - struct sql_commit_result_delayed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 839
    functionName: sql_commit_delayed_callback
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_commit_result_delayed*::callback
    - i_free
    - DLLIST_REMOVE
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void sql_commit_delayed_callback(struct sql_commit_result_delayed *cb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_transaction_context*::db::v::transaction_commit
      Src: /src/dovecot/src/lib-sql/sql-api.c:850,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/sql-api.c:854,1
    - Dst: struct sql_transaction_context*::db::v::transaction_commit_s
      Src: /src/dovecot/src/lib-sql/sql-api.c:856,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/sql-api.c:858,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-sql/sql-api.c:861,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-sql/sql-api.c:862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - _ctx
    - callback
    - context
    argTypes:
    - struct sql_transaction_context**
    - sql_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 863
    functionName: sql_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_transaction_context*::db::v::transaction_commit
    - struct sql_transaction_context*::db::v::transaction_commit_s
    - timeout_add_short
    - i_strdup
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: void
    signature: "void sql_transaction_commit(struct sql_transaction_context **_ctx,\n\t\t\t
      \   sql_commit_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_transaction_context*::db::v::transaction_commit_s
      Src: /src/dovecot/src/lib-sql/sql-api.c:871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct sql_transaction_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 865
    functionDepth: 0
    functionLinenumber: 865
    functionLinenumberEnd: 872
    functionName: sql_transaction_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_transaction_context*::db::v::transaction_commit_s
    linkageType: ''
    returnType: int
    signature: "int sql_transaction_commit_s(struct sql_transaction_context **_ctx,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_transaction_context*::db::v::transaction_rollback
      Src: /src/dovecot/src/lib-sql/sql-api.c:879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct sql_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 880
    functionName: sql_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_transaction_context*::db::v::transaction_rollback
    linkageType: ''
    returnType: void
    signature: void sql_transaction_rollback(struct sql_transaction_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_transaction_context*::db::v::update
      Src: /src/dovecot/src/lib-sql/sql-api.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - query
    argTypes:
    - struct sql_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 885
    functionName: sql_update
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_transaction_context*::db::v::update
    linkageType: ''
    returnType: void
    signature: void sql_update(struct sql_transaction_context *ctx, const char *query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_transaction_context*::db::v::update_stmt
      Src: /src/dovecot/src/lib-sql/sql-api.c:894,1
    - Dst: default_sql_update_stmt
      Src: /src/dovecot/src/lib-sql/sql-api.c:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - _stmt
    argTypes:
    - struct sql_transaction_context*
    - struct sql_statement**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 887
    functionDepth: 3
    functionLinenumber: 887
    functionLinenumberEnd: 897
    functionName: sql_update_stmt
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - default_sql_update_stmt
    - struct sql_transaction_context*::db::v::update_stmt
    linkageType: ''
    returnType: void
    signature: "void sql_update_stmt(struct sql_transaction_context *ctx,\n\t\t     struct
      sql_statement **_stmt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_transaction_context*::db::v::update
      Src: /src/dovecot/src/lib-sql/sql-api.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - query
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 899
    functionDepth: 0
    functionLinenumber: 899
    functionLinenumberEnd: 903
    functionName: sql_update_get_rows
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - struct sql_transaction_context*::db::v::update
    linkageType: ''
    returnType: void
    signature: "void sql_update_get_rows(struct sql_transaction_context *ctx, const
      char *query,\n\t\t\t unsigned int *affected_rows)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_transaction_context*::db::v::update_stmt
      Src: /src/dovecot/src/lib-sql/sql-api.c:913,1
    - Dst: default_sql_update_stmt
      Src: /src/dovecot/src/lib-sql/sql-api.c:915,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - _stmt
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - struct sql_statement**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 905
    functionDepth: 3
    functionLinenumber: 905
    functionLinenumberEnd: 916
    functionName: sql_update_stmt_get_rows
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 0
    functionsReached:
    - default_sql_update_stmt
    - struct sql_transaction_context*::db::v::update_stmt
    linkageType: ''
    returnType: void
    signature: "void sql_update_stmt_get_rows(struct sql_transaction_context *ctx,\n\t\t\t
      \     struct sql_statement **_stmt,\n\t\t\t      unsigned int *affected_rows)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::state_change_callback
      Src: /src/dovecot/src/lib-sql/sql-api.c:927,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - db
    - state
    argTypes:
    - struct sql_db*
    - enum sql_db_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 930
    functionName: sql_db_set_state
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_db*::state_change_callback
    linkageType: ''
    returnType: void
    signature: void sql_db_set_state(struct sql_db *db, enum sql_db_state state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/sql-api.c:937,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sql/sql-api.c:939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - pool
    - query
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - pool_t
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 947
    functionName: sql_transaction_add_query
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_new
    linkageType: ''
    returnType: void
    signature: "void sql_transaction_add_query(struct sql_transaction_context *ctx,
      pool_t pool,\n\t\t\t       const char *query, unsigned int *affected_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-sql/sql-api.c:951,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/sql-api.c:955,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-sql/sql-api.c:955,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/sql-api.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 949
    functionDepth: 1
    functionLinenumber: 949
    functionLinenumberEnd: 960
    functionName: sql_connection_log_finished
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_free
    linkageType: ''
    returnType: void
    signature: void sql_connection_log_finished(struct sql_db *db)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_get_create_time
      Src: /src/dovecot/src/lib-sql/sql-api.c:968,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-sql/sql-api.c:969,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-sql/sql-api.c:970,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-sql/sql-api.c:972,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-sql/sql-api.c:973,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/sql-api.c:982,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/sql-api.c:985,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - db
    - event
    - query
    - success
    - duration_r
    argTypes:
    - struct sql_db*
    - struct event*
    - char*
    - bool
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 989
    functionName: sql_query_finished_event
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - i_gettimeofday
    - i_assert
    - timeval_diff_msecs
    - event_get_create_time
    - event_create_passthrough
    - t_strcut
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: struct event_passthrough
    signature: "struct event_passthrough *\nsql_query_finished_event(struct sql_db
      *db, struct event *event, const char *query,\n\t\t\t bool success, int *duration_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-sql/sql-api.c:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 995
    functionName: sql_transaction_finished_event
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 5
    functionsReached:
    - event_create_passthrough
    linkageType: ''
    returnType: struct event_passthrough
    signature: struct event_passthrough *sql_transaction_finished_event(struct sql_transaction_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::wait
      Src: /src/dovecot/src/lib-sql/sql-api.c:1000,1
    - Dst: sql_call_delayed_callbacks
      Src: /src/dovecot/src/lib-sql/sql-api.c:1001,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1002
    functionName: sql_wait
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.c
    functionUses: 1
    functionsReached:
    - struct sql_db*::v::wait
    - sql_call_delayed_callbacks
    linkageType: ''
    returnType: void
    signature: void sql_wait(struct sql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - db
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: IS_CONNECTED
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_CONNECTED(db)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: DEF_SECS
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_SECS(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: DEF_MSECS
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_MSECS(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - message
    - log_type
    - log_level_str
    - text
    - text_len
    argTypes:
    - CassLogMessage*
    - enum log_type
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 451
    functionName: log_one_line
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: "void log_one_line(const CassLogMessage *message,\n\t\t\t enum log_type
      log_type, const char *log_level_str,\n\t\t\t const char *text, size_t text_len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:463,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:486,1
    - Dst: log_one_line
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:487,1
    - Dst: log_one_line
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:490,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:490,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - message
    - ATTR_UNUSED
    argTypes:
    - CassLogMessage*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 491
    functionName: driver_cassandra_log_handler
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - strchr
    - log_one_line
    - strlen
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_log_handler(const CassLogMessage* message,\n\t\t\t
      \    void *data ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_get_failure_handlers
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:498,1
    - Dst: i_failure_handler_is_internal
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:500,1
    - Dst: cass_log_set_callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 505
    functionName: driver_cassandra_init_log
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_get_failure_handlers
    - i_failure_handler_is_internal
    - cass_log_set_callback
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_init_log(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:512,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - consistency_r
    argTypes:
    - char*
    - CassConsistency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 519
    functionName: consistency_parse
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int consistency_parse(const char *str, CassConsistency *consistency_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:525,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:526,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - log_level_r
    argTypes:
    - char*
    - CassLogLevel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 532
    functionName: log_level_parse
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int log_level_parse(const char *str, CassLogLevel *log_level_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:565,1
    - Dst: consistency_parse
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:570,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:572,1
    - Dst: log_level_parse
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:579,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:580,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:585,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:587,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:590,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:595,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 601
    functionName: cassandra_settings_check
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - strcmp
    - log_level_parse
    - consistency_parse
    - t_strdup_printf
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: "bool cassandra_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:610,1
    - Dst: sql_db_set_state
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:611,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:613,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - db
    - state
    argTypes:
    - struct cassandra_db*
    - enum sql_db_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 614
    functionName: driver_cassandra_set_state
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - sql_db_set_state
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_set_state(struct cassandra_db *db,\n\t\t\t\t
      \      enum sql_db_state state)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:621,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:623,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:624,1
    - Dst: driver_cassandra_set_state
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:626,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:628,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:630,1
    - Dst: prepare_finish_pending_statements
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:631,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:633,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:635,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:636,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:638,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:639,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:644,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - db
    - error
    argTypes:
    - struct cassandra_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 646
    functionName: driver_cassandra_close
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - result_finish
    - prepare_finish_pending_statements
    - array_foreach_elem
    - io_remove
    - i_close_fd
    - i_strdup
    - driver_cassandra_set_state
    - array_count
    - io_loop_stop
    - array_clear
    - array_front
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_close(struct cassandra_db *db, const char *error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cass_future_error_message
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:654,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - db
    - future
    - str
    argTypes:
    - struct cassandra_db*
    - CassFuture*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 648
    functionDepth: 0
    functionLinenumber: 648
    functionLinenumberEnd: 656
    functionName: driver_cassandra_log_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - e_error
    - cass_future_error_message
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_log_error(struct cassandra_db *db,\n\t\t\t\t
      \      CassFuture *future, const char *str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:665,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:668,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - db
    - id
    argTypes:
    - struct cassandra_db*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 674
    functionName: cassandra_callback_detach
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: struct cassandra_callback
    signature: 'struct cassandra_callback *

      cassandra_callback_detach(struct cassandra_db *db, unsigned int id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:678,1
    - Dst: struct cassandra_callback*::callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cb
    argTypes:
    - struct cassandra_callback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 681
    functionName: cassandra_callback_run
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - struct cassandra_callback*::callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void cassandra_callback_run(struct cassandra_callback *cb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cassandra_callback_detach
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:715,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:717,1
    - Dst: cassandra_callback_run
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:718,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - db
    - id
    argTypes:
    - struct cassandra_db*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 711
    functionDepth: 2
    functionLinenumber: 711
    functionLinenumberEnd: 719
    functionName: driver_cassandra_input_id
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_panic
    - cassandra_callback_run
    - cassandra_callback_detach
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_input_id(struct cassandra_db *db, unsigned int
      id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:726,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:728,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:730,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:732,1
    - Dst: driver_cassandra_input_id
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:739,1
    - Dst: driver_cassandra_close
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:742,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct cassandra_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 721
    functionDepth: 3
    functionLinenumber: 721
    functionLinenumberEnd: 743
    functionName: driver_cassandra_input
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - e_error
    - driver_cassandra_input_id
    - driver_cassandra_close
    - read
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_input(struct cassandra_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:752,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:754,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:760,1
    - Dst: cass_future_set_callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - future
    - db
    - callback
    - context
    argTypes:
    - CassFuture*
    - struct cassandra_db*
    - driver_cassandra_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 770
    functionName: driver_cassandra_set_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_assert
    - cass_future_set_callback
    - i_new
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_set_callback(CassFuture *future, struct cassandra_db
      *db,\n\t\t\t      driver_cassandra_callback_t *callback,\n\t\t\t      void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cass_future_error_code
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:776,1
    - Dst: driver_cassandra_log_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:780,1
    - Dst: cass_future_error_message
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:782,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:783,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:784,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:785,1
    - Dst: str_free_without_data
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:786,1
    - Dst: driver_cassandra_close
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:787,1
    - Dst: driver_cassandra_set_state
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:790,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:794,1
    - Dst: driver_cassandra_prepare_pending
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:796,1
    - Dst: driver_cassandra_send_queries
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - future
    - context
    argTypes:
    - CassFuture*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 772
    functionDepth: 3
    functionLinenumber: 772
    functionLinenumberEnd: 798
    functionName: connect_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_future_error_code
    - driver_cassandra_close
    - str_free_without_data
    - driver_cassandra_prepare_pending
    - driver_cassandra_log_error
    - cass_future_error_message
    - driver_cassandra_set_state
    - io_loop_stop
    - driver_cassandra_send_queries
    - str_append_data
    - i_free
    - str_new
    linkageType: ''
    returnType: void
    signature: void connect_callback(CassFuture *future, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 804
    functionName: driver_cassandra_table_prefix
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: char
    signature: char *driver_cassandra_table_prefix(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:808,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:811,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:813,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:814,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:817,1
    - Dst: driver_cassandra_set_state
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:819,1
    - Dst: cass_session_connect
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:821,1
    - Dst: driver_cassandra_set_callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 806
    functionDepth: 2
    functionLinenumber: 806
    functionLinenumberEnd: 824
    functionName: driver_cassandra_connect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - cass_session_connect
    - io_add
    - driver_cassandra_set_callback
    - e_error
    - driver_cassandra_set_state
    - i_assert
    - pipe
    linkageType: ''
    returnType: int
    signature: int driver_cassandra_connect(struct sql_db *_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:828,1
    - Dst: driver_cassandra_close
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 826
    functionDepth: 3
    functionLinenumber: 826
    functionLinenumberEnd: 831
    functionName: driver_cassandra_disconnect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_close
    - container_of
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_disconnect(struct sql_db *_db)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:840,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:842,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:842,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:845,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:846,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:848,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - string
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 833
    functionDepth: 1
    functionLinenumber: 833
    functionLinenumberEnd: 849
    functionName: driver_cassandra_escape_string
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - str_append_c
    - strlen
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_cassandra_escape_string(struct sql_db *db ATTR_UNUSED,\n\t\t\t
      \      const char *string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cass_session_get_metrics
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:861,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:862,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:863,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:864,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:865,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:866,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:867,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:868,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:869,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:870,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:871,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:872,1
    - Dst: ADD_DOUBLE
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:873,1
    - Dst: ADD_DOUBLE
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:874,1
    - Dst: ADD_DOUBLE
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:875,1
    - Dst: ADD_DOUBLE
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:876,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:877,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:877,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:879,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:880,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:881,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:882,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:883,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:884,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:884,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:886,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:887,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:888,1
    - Dst: ADD_UINT64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:889,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:890,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:890,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:892,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:894,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:897,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:897,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:898,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 35
    argCount: 2
    argNames:
    - db
    - dest
    argTypes:
    - struct cassandra_db*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 851
    functionDepth: 1
    functionLinenumber: 851
    functionLinenumberEnd: 899
    functionName: driver_cassandra_get_metrics_json
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - ADD_DOUBLE
    - cass_session_get_metrics
    - str_len
    - ADD_UINT64
    - str_truncate
    - str_append
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_get_metrics_json(struct cassandra_db *db, string_t
      *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _struct
    - ','
    - _field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 854
    functionDepth: 0
    functionLinenumber: 854
    functionLinenumberEnd: 857
    functionName: ADD_UINT64
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADD_UINT64(_struct, _field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _struct
    - ','
    - _field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 859
    functionName: ADD_DOUBLE
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADD_DOUBLE(_struct, _field)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:903,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:912,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:913,1
    - Dst: open
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:918,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:918,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:920,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:920,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:923,1
    - Dst: driver_cassandra_get_metrics_json
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:924,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:925,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:925,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:925,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:926,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:926,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:927,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct cassandra_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 901
    functionDepth: 2
    functionLinenumber: 901
    functionLinenumberEnd: 928
    functionName: driver_cassandra_metrics_write
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_data
    - str_len
    - write_full
    - i_close_fd
    - open
    - driver_cassandra_get_metrics_json
    - e_error
    - var_expand
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_metrics_write(struct cassandra_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:935,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:936,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:937,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:938,1
    - Dst: cass_ssl_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:940,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:941,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:942,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:943,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct cassandra_db**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 944
    functionName: driver_cassandra_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - event_unref
    - settings_free
    - array_free
    - i_free
    - cass_ssl_free
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_free(struct cassandra_db **_db)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:952,1
    - Dst: cass_ssl_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:954,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:955,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:958,1
    - Dst: cass_ssl_add_trusted_cert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:960,1
    - Dst: cass_error_desc
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:961,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:967,1
    - Dst: cass_ssl_set_private_key
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:969,1
    - Dst: cass_error_desc
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:972,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:976,1
    - Dst: cass_ssl_set_cert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:978,1
    - Dst: cass_error_desc
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:979,1
    - Dst: cass_ssl_set_verify_flags
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:985,1
    - Dst: cass_ssl_set_verify_flags
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:987,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - db
    - error_r
    argTypes:
    - struct cassandra_db*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 946
    functionDepth: 1
    functionLinenumber: 946
    functionLinenumberEnd: 991
    functionName: driver_cassandra_init_ssl
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_ssl_new
    - cass_ssl_add_trusted_cert
    - cass_error_desc
    - cass_ssl_set_verify_flags
    - cass_ssl_set_cert
    - settings_file_get
    - i_assert
    - cass_ssl_set_private_key
    linkageType: ''
    returnType: int
    signature: int driver_cassandra_init_ssl(struct cassandra_db *db, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:999,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1000,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1002,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1003,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - set
    - ssl_set
    argTypes:
    - struct cassandra_settings*
    - struct ssl_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 993
    functionDepth: 0
    functionLinenumber: 993
    functionLinenumberEnd: 1008
    functionName: driver_cassandra_db_cache_find
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - settings_equal
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct cassandra_db
    signature: "struct cassandra_db *\ndriver_cassandra_db_cache_find(const struct
      cassandra_settings *set,\n\t\t\t       const struct ssl_settings *ssl_set)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1018,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1027,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1032,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1033,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1034,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1035,1
    - Dst: driver_cassandra_init_ssl
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1037,1
    - Dst: driver_cassandra_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1038,1
    - Dst: driver_cassandra_init_log
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1042,1
    - Dst: cass_log_set_level
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1043,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1045,1
    - Dst: cass_timestamp_gen_monotonic_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1054,1
    - Dst: cass_cluster_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1055,1
    - Dst: cass_cluster_set_timestamp_gen
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1057,1
    - Dst: cass_cluster_set_connect_timeout
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1058,1
    - Dst: cass_cluster_set_request_timeout
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1059,1
    - Dst: cass_cluster_set_contact_points
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1060,1
    - Dst: p_array_const_string_join
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1061,1
    - Dst: cass_cluster_set_credentials
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1064,1
    - Dst: cass_cluster_set_port
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1065,1
    - Dst: cass_cluster_set_protocol_version
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1067,1
    - Dst: cass_cluster_set_num_threads_io
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1068,1
    - Dst: cass_cluster_set_latency_aware_routing
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1070,1
    - Dst: cass_cluster_set_connection_heartbeat_interval
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1071,1
    - Dst: cass_retry_policy_default_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1074,1
    - Dst: cass_retry_policy_logging_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1075,1
    - Dst: cass_cluster_set_retry_policy
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1076,1
    - Dst: cass_cluster_set_connection_idle_timeout
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1078,1
    - Dst: cass_cluster_set_constant_speculative_execution_policy
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1082,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1087,1
    - Dst: cass_cluster_set_ssl
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1088,1
    - Dst: cass_session_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1090,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1092,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1094,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1095,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1096,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1097,1
    - Dst: pthread_self
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1099,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 71
    argCount: 5
    argNames:
    - event_parent
    - set
    - ssl_set
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct cassandra_settings*
    - struct ssl_settings*
    - struct cassandra_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1010
    functionDepth: 2
    functionLinenumber: 1010
    functionLinenumberEnd: 1105
    functionName: driver_cassandra_init_from_set
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - cass_retry_policy_logging_new
    - cass_cluster_set_connect_timeout
    - array_is_empty
    - cass_cluster_new
    - cass_cluster_set_connection_heartbeat_interval
    - event_set_append_log_prefix
    - driver_cassandra_init_log
    - timeout_add
    - cass_cluster_set_latency_aware_routing
    - cass_cluster_set_request_timeout
    - cass_cluster_set_port
    - event_add_str
    - cass_cluster_set_connection_idle_timeout
    - cass_cluster_set_contact_points
    - i_strdup_printf
    - pthread_self
    - driver_cassandra_init_ssl
    - event_set_forced_debug
    - event_create
    - cass_cluster_set_constant_speculative_execution_policy
    - cass_retry_policy_default_new
    - cass_timestamp_gen_monotonic_new
    - p_array_const_string_join
    - cass_cluster_set_retry_policy
    - cass_cluster_set_credentials
    - cass_session_new
    - driver_cassandra_free
    - cass_cluster_set_num_threads_io
    - cass_log_set_level
    - cass_cluster_set_timestamp_gen
    - e_debug
    - cass_cluster_set_ssl
    - cass_cluster_set_protocol_version
    - i_new
    - event_add_category
    linkageType: ''
    returnType: int
    signature: "int driver_cassandra_init_from_set(struct event *event_parent,\n\t\t\t
      \      const struct cassandra_settings *set,\n\t\t\t       const struct ssl_settings
      *ssl_set,\n\t\t\t       struct cassandra_db **db_r, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1114,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1118,1
    - Dst: ssl_client_settings_get
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1119,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1120,1
    - Dst: driver_cassandra_db_cache_find
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1126,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1128,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1129,1
    - Dst: driver_cassandra_init_from_set
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1131,1
    - Dst: sql_init_common
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1134,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - event
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1107
    functionDepth: 3
    functionLinenumber: 1107
    functionLinenumberEnd: 1142
    functionName: driver_cassandra_init_v
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - strcmp
    - driver_cassandra_db_cache_find
    - sql_init_common
    - array_push_back
    - settings_free
    - ssl_client_settings_get
    - driver_cassandra_init_from_set
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int driver_cassandra_init_v(struct event *event, struct sql_db **db_r,\n\t\t\tconst
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1146,1
    - Dst: driver_cassandra_close
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1148,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1150,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1150,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1151,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1152,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1152,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1153,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1154,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1154,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1155,1
    - Dst: cass_session_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1157,1
    - Dst: cass_cluster_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1158,1
    - Dst: cass_retry_policy_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1160,1
    - Dst: cass_retry_policy_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1162,1
    - Dst: cass_timestamp_gen_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1163,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1164,1
    - Dst: sql_connection_log_finished
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1165,1
    - Dst: driver_cassandra_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1144
    functionDepth: 3
    functionLinenumber: 1144
    functionLinenumberEnd: 1167
    functionName: driver_cassandra_deinit_v
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_close
    - container_of
    - cass_session_free
    - cass_retry_policy_free
    - cass_cluster_free
    - sql_connection_log_finished
    - driver_cassandra_free
    - cass_timestamp_gen_free
    - array_count
    - i_assert
    - array_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_deinit_v(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1174,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1175,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - db
    - result
    argTypes:
    - struct cassandra_db*
    - struct cassandra_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1177
    functionName: driver_cassandra_result_unlink
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_result_unlink(struct cassandra_db *db,\n\t\t\t\t\t
      \  struct cassandra_result *result)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1182,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1187,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1189,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1190,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1194,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1196,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1200,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1204,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1206,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1207,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1209,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1211,1
    - Dst: sql_query_finished_event
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1215,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1219,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1220,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1223,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1224,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1227,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1229,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1231,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1234,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1234,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1237,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1237,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 3
    argNames:
    - result
    - all_pages
    - reply_usecs
    argTypes:
    - struct cassandra_result*
    - bool
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1179
    functionDepth: 2
    functionLinenumber: 1179
    functionLinenumberEnd: 1239
    functionName: driver_cassandra_log_result
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - event_set_forced_debug
    - t_str_new
    - container_of
    - str_printfa
    - timeval_diff_usecs
    - str_c
    - e_debug
    - sql_query_finished_event
    - e_warning
    - struct event_passthrough*::event
    - cass_consistency_string
    - str_append
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_log_result(struct cassandra_result *result,\n\t\t\t\t\tbool
      all_pages, long long reply_usecs)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1243,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1247,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1248,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1253,1
    - Dst: driver_cassandra_log_result
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1255,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1260,1
    - Dst: driver_cassandra_log_result
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1262,1
    - Dst: cass_result_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1266,1
    - Dst: cass_iterator_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1268,1
    - Dst: cass_batch_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1270,1
    - Dst: cass_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1272,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1273,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1274,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1275,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1276,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1277,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1241
    functionDepth: 3
    functionLinenumber: 1241
    functionLinenumberEnd: 1278
    functionName: driver_cassandra_result_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_statement_free
    - cass_iterator_free
    - driver_cassandra_log_result
    - container_of
    - cass_result_free
    - timeval_diff_usecs
    - event_unref
    - pool_unref
    - cass_batch_free
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_result_free(struct sql_result *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1282,1
    - Dst: driver_cassandra_result_unlink
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1287,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1289,1
    - Dst: struct cassandra_result*::callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct cassandra_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1280
    functionDepth: 2
    functionLinenumber: 1280
    functionLinenumberEnd: 1294
    functionName: result_finish
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 7
    functionsReached:
    - struct cassandra_result*::callback
    - driver_cassandra_result_unlink
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void result_finish(struct cassandra_result *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1309,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1314,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1317,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1318,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1321,1
    - Dst: driver_cassandra_result_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct cassandra_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1307
    functionDepth: 1
    functionLinenumber: 1307
    functionLinenumberEnd: 1326
    functionName: query_resend_with_fallback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_free_and_null
    - driver_cassandra_result_send_query
    - e_warning
    - cass_consistency_string
    linkageType: ''
    returnType: void
    signature: void query_resend_with_fallback(struct cassandra_result *result)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - db
    - error
    argTypes:
    - struct cassandra_db*
    - CassError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1328
    functionDepth: 0
    functionLinenumber: 1328
    functionLinenumberEnd: 1350
    functionName: counters_inc_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void counters_inc_error(struct cassandra_db *db, CassError error)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - error
    argTypes:
    - CassError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1352
    functionDepth: 0
    functionLinenumber: 1352
    functionLinenumberEnd: 1389
    functionName: query_error_want_fallback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool query_error_want_fallback(CassError error)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - error
    argTypes:
    - CassError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1391
    functionDepth: 0
    functionLinenumber: 1391
    functionLinenumberEnd: 1411
    functionName: driver_cassandra_error_is_uncertain
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum sql_result_error_type
    signature: enum sql_result_error_type driver_cassandra_error_is_uncertain(CassError
      error)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1425,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1426,1
    - Dst: cass_future_get_error_result
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1429,1
    - Dst: cass_error_result_consistency
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1431,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1434,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1435,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1436,1
    - Dst: cass_error_result_responses_received
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1437,1
    - Dst: cass_error_result_responses_required
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1438,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1440,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1441,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1445,1
    - Dst: cass_error_result_num_failures
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1446,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1450,1
    - Dst: cass_error_result_data_present
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1451,1
    - Dst: cass_error_result_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1455,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1456,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - result
    - future
    - error
    argTypes:
    - struct cassandra_result*
    - CassFuture*
    - CassError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1413
    functionDepth: 1
    functionLinenumber: 1413
    functionLinenumberEnd: 1457
    functionName: get_consistency_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_error_result_data_present
    - t_str_new
    - str_printfa
    - str_c
    - cass_error_result_responses_required
    - cass_error_result_responses_received
    - t_strdup_printf
    - cass_error_result_num_failures
    - cass_future_get_error_result
    - cass_consistency_string
    - cass_error_result_consistency
    - cass_error_result_free
    linkageType: ''
    returnType: char
    signature: "char *\nget_consistency_error(struct cassandra_result *result,\n\t\t
      \     CassFuture *future, CassError error)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1462,1
    - Dst: cass_future_error_code
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1463,1
    - Dst: cass_future_error_message
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1470,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1471,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1473,1
    - Dst: counters_inc_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1474,1
    - Dst: driver_cassandra_error_is_uncertain
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1478,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1479,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1484,1
    - Dst: get_consistency_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1485,1
    - Dst: query_error_want_fallback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1487,1
    - Dst: query_resend_with_fallback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1490,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1493,1
    - Dst: cass_future_get_result
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1504,1
    - Dst: cass_iterator_from_result
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1505,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1506,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - future
    - context
    argTypes:
    - CassFuture*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1459
    functionDepth: 2
    functionLinenumber: 1459
    functionLinenumberEnd: 1507
    functionName: query_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_future_error_code
    - driver_cassandra_error_is_uncertain
    - query_resend_with_fallback
    - container_of
    - timeval_diff_msecs
    - counters_inc_error
    - t_strdup_printf
    - cass_future_error_message
    - query_error_want_fallback
    - result_finish
    - cass_iterator_from_result
    - i_strdup_printf
    - get_consistency_error
    - i_free
    - cass_future_get_result
    linkageType: ''
    returnType: void
    signature: void query_callback(CassFuture *future, void *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1511,1
    - Dst: cass_batch_set_consistency
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1515,1
    - Dst: cass_statement_set_consistency
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1518,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1522,1
    - Dst: cass_consistency_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1524,1
    - Dst: cass_error_desc
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1525,1
    - Dst: cass_batch_set_is_idempotent
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1531,1
    - Dst: cass_statement_set_is_idempotent
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1533,1
    - Dst: cass_statement_set_paging_size
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1536,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct cassandra_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1509
    functionDepth: 1
    functionLinenumber: 1509
    functionLinenumberEnd: 1539
    functionName: driver_cassandra_init_statement
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - cass_statement_set_is_idempotent
    - cass_batch_set_consistency
    - cass_error_desc
    - cass_statement_set_paging_size
    - cass_statement_set_consistency
    - cass_batch_set_is_idempotent
    - e_error
    - cass_consistency_string
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_init_statement(struct cassandra_result *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1543,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1546,1
    - Dst: driver_cassandra_init_statement
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1550,1
    - Dst: cass_session_execute_batch
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1553,1
    - Dst: cass_session_execute
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1555,1
    - Dst: driver_cassandra_set_callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1556,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct cassandra_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1541
    functionDepth: 2
    functionLinenumber: 1541
    functionLinenumberEnd: 1557
    functionName: driver_cassandra_result_send_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 1
    functionsReached:
    - container_of
    - cass_session_execute_batch
    - driver_cassandra_set_callback
    - driver_cassandra_init_statement
    - i_assert
    - cass_session_execute
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_result_send_query(struct cassandra_result *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1562,1
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1590,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1591,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct cassandra_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1559
    functionDepth: 1
    functionLinenumber: 1559
    functionLinenumberEnd: 1592
    functionName: driver_cassandra_want_fallback_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - timeval_add_msecs
    - timeval_cmp
    linkageType: ''
    returnType: bool
    signature: bool driver_cassandra_want_fallback_query(struct cassandra_result *result)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1597,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1600,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1601,1
    - Dst: driver_cassandra_close
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1603,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1612,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1635,1
    - Dst: driver_cassandra_want_fallback_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1638,1
    - Dst: driver_cassandra_result_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1643,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct cassandra_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1594
    functionDepth: 3
    functionLinenumber: 1594
    functionLinenumberEnd: 1646
    functionName: cassandra_result_connect_and_send_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_close
    - pool_alloconly_create
    - container_of
    - i_unreached
    - sql_connect
    - driver_cassandra_result_send_query
    - SQL_DB_IS_READY
    - driver_cassandra_want_fallback_query
    linkageType: ''
    returnType: int
    signature: int cassandra_result_connect_and_send_query(struct cassandra_result
      *result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1653,1
    - Dst: cassandra_result_connect_and_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1658,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct cassandra_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1648
    functionDepth: 4
    functionLinenumber: 1648
    functionLinenumberEnd: 1662
    functionName: driver_cassandra_send_queries
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 1
    functionsReached:
    - cassandra_result_connect_and_send_query
    - array_get
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_send_queries(struct cassandra_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1664
    functionDepth: 0
    functionLinenumber: 1664
    functionLinenumberEnd: 1667
    functionName: exec_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void exec_callback(struct sql_result *_result ATTR_UNUSED,\n\t\t\t
      \ void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1677,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1684,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1687,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 6
    argNames:
    - db
    - log_query
    - query_type
    - result_type
    - callback
    - context
    argTypes:
    - struct cassandra_db*
    - char*
    - enum cassandra_query_type
    - enum cassandra_result_type
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1669
    functionDepth: 1
    functionLinenumber: 1669
    functionLinenumberEnd: 1690
    functionName: driver_cassandra_result_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - event_create
    - i_new
    - array_push_back
    linkageType: ''
    returnType: struct cassandra_result
    signature: "struct cassandra_result *\ndriver_cassandra_result_init(struct cassandra_db
      *db, const char *log_query,\n\t\t\t     enum cassandra_query_type query_type,\n\t\t\t
      \    enum cassandra_result_type result_type,\n\t\t\t     sql_query_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1697,1
    - Dst: driver_cassandra_result_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1700,1
    - Dst: cass_statement_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1703,1
    - Dst: cassandra_result_connect_and_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - _db
    - query
    - query_type
    - callback
    - context
    argTypes:
    - struct sql_db*
    - char*
    - enum cassandra_query_type
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1692
    functionDepth: 4
    functionLinenumber: 1692
    functionLinenumberEnd: 1705
    functionName: driver_cassandra_query_full
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_statement_new
    - driver_cassandra_result_init
    - container_of
    - cassandra_result_connect_and_send_query
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_query_full(struct sql_db *_db, const char *query,\n\t\t\t
      \   enum cassandra_query_type query_type,\n\t\t\t    sql_query_callback_t *callback,
      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_cassandra_query_full
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1707
    functionDepth: 5
    functionLinenumber: 1707
    functionLinenumberEnd: 1711
    functionName: driver_cassandra_exec
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_query_full
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_exec(struct sql_db *db, const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_cassandra_query_full
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - db
    - query
    - callback
    - context
    argTypes:
    - struct sql_db*
    - char*
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1713
    functionDepth: 5
    functionLinenumber: 1713
    functionLinenumberEnd: 1718
    functionName: driver_cassandra_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_query_full
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_query(struct sql_db *db, const char *query,\n\t\t\t\t
      \  sql_query_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - struct sql_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1720
    functionDepth: 0
    functionLinenumber: 1720
    functionLinenumberEnd: 1725
    functionName: cassandra_query_s_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cassandra_query_s_callback(struct sql_result *result, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1729,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1732,1
    - Dst: IS_CONNECTED
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1733,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1735,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1737,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1739,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct cassandra_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1727
    functionDepth: 1
    functionLinenumber: 1727
    functionLinenumberEnd: 1740
    functionName: driver_cassandra_sync_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io
    - sql_connect
    - io_loop_create
    - IS_CONNECTED
    - i_assert
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_sync_init(struct cassandra_db *db)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1747,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1748,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1749,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct cassandra_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1742
    functionDepth: 1
    functionLinenumber: 1742
    functionLinenumberEnd: 1752
    functionName: driver_cassandra_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io
    - io_loop_set_current
    - io_loop_destroy
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_sync_deinit(struct cassandra_db *db)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1760,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1765,1
    - Dst: driver_cassandra_query_full
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1773,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1776,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1777,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - db
    - query
    - query_type
    argTypes:
    - struct cassandra_db*
    - char*
    - enum cassandra_query_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1754
    functionDepth: 5
    functionLinenumber: 1754
    functionLinenumberEnd: 1790
    functionName: driver_cassandra_sync_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - io_loop_move_io
    - driver_cassandra_query_full
    - i_assert
    - io_loop_run
    linkageType: ''
    returnType: struct sql_result
    signature: "struct sql_result *\ndriver_cassandra_sync_query(struct cassandra_db
      *db, const char *query,\n\t\t\t    enum cassandra_query_type query_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1795,1
    - Dst: driver_cassandra_sync_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1798,1
    - Dst: driver_cassandra_sync_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1799,1
    - Dst: driver_cassandra_sync_deinit
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1792
    functionDepth: 6
    functionLinenumber: 1792
    functionLinenumberEnd: 1803
    functionName: driver_cassandra_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_cassandra_sync_deinit
    - driver_cassandra_sync_init
    - driver_cassandra_sync_query
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_cassandra_query_s(struct sql_db *_db, const char *query)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: cass_value_is_null
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1816,1
    - Dst: cass_data_type_type
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1822,1
    - Dst: cass_value_data_type
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1822,1
    - Dst: cass_value_get_int32
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1826,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1828,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1829,1
    - Dst: cass_value_get_double
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1838,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1840,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1841,1
    - Dst: cass_value_get_int64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1851,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1853,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1854,1
    - Dst: cass_value_get_uuid
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1863,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1865,1
    - Dst: cass_uuid_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1866,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1867,1
    - Dst: cass_value_get_bytes
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1874,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1879,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1880,1
    - Dst: cass_error_desc
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1881,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1884,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1886,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 61
    argCount: 4
    argNames:
    - result
    - value
    - str_r
    - len_r
    argTypes:
    - struct cassandra_result*
    - CassValue*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1805
    functionDepth: 1
    functionLinenumber: 1805
    functionLinenumberEnd: 1890
    functionName: driver_cassandra_get_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - memcpy
    - cass_value_get_uuid
    - cass_value_is_null
    - strlen
    - cass_value_get_int32
    - t_strdup_printf
    - cass_error_desc
    - cass_value_get_int64
    - cass_uuid_string
    - i_strdup_printf
    - cass_data_type_type
    - t_malloc_no0
    - cass_value_get_bytes
    - cass_value_data_type
    - i_free
    - cass_value_get_double
    - p_malloc
    linkageType: ''
    returnType: int
    signature: "int driver_cassandra_get_value(struct cassandra_result *result,\n\t\t\t
      \  const CassValue *value, const char **str_r,\n\t\t\t   size_t *len_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1894,1
    - Dst: cass_result_has_more_pages
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1900,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1905,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1906,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct cassandra_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1892
    functionDepth: 1
    functionLinenumber: 1892
    functionLinenumberEnd: 1909
    functionName: driver_cassandra_result_next_page
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - container_of
    - cass_result_has_more_pages
    - i_free
    linkageType: ''
    returnType: int
    signature: int driver_cassandra_result_next_page(struct cassandra_result *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cass_iterator_next
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1924,1
    - Dst: driver_cassandra_result_next_page
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1925,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1929,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1930,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1931,1
    - Dst: cass_iterator_get_row
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1933,1
    - Dst: cass_row_get_column
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1934,1
    - Dst: driver_cassandra_get_value
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1935,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1939,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1940,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1911
    functionDepth: 2
    functionLinenumber: 1911
    functionLinenumberEnd: 1943
    functionName: driver_cassandra_result_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_get_value
    - p_array_init
    - driver_cassandra_result_next_page
    - cass_iterator_next
    - array_push_back
    - cass_iterator_get_row
    - cass_row_get_column
    - p_clear
    linkageType: ''
    returnType: int
    signature: int driver_cassandra_result_next_row(struct sql_result *_result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1949,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1954,1
    - Dst: driver_cassandra_result_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1957,1
    - Dst: cass_statement_set_paging_state
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1965,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1970,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1978,1
    - Dst: cassandra_result_connect_and_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1982,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1984,1
    - Dst: driver_cassandra_sync_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1985,1
    - Dst: cassandra_result_connect_and_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1986,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1988,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1989,1
    - Dst: driver_cassandra_sync_deinit
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1991,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:1993,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 4
    argNames:
    - _result
    - async
    - callback
    - context
    argTypes:
    - struct sql_result**
    - bool
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1945
    functionDepth: 4
    functionLinenumber: 1945
    functionLinenumberEnd: 1995
    functionName: driver_cassandra_result_more
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_cassandra_sync_deinit
    - io_loop_move_io
    - cassandra_result_connect_and_send_query
    - i_free_and_null
    - driver_cassandra_sync_init
    - driver_cassandra_result_init
    - sql_result_unref
    - callback
    - i_assert
    - io_loop_run
    - cass_statement_set_paging_state
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_result_more(struct sql_result **_result, bool
      async,\n\t\t\t     sql_query_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1997
    functionDepth: 1
    functionLinenumber: 1997
    functionLinenumberEnd: 2003
    functionName: driver_cassandra_result_get_fields_count
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int driver_cassandra_result_get_fields_count(struct sql_result
      *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 2005
    functionDepth: 0
    functionLinenumber: 2005
    functionLinenumberEnd: 2010
    functionName: driver_cassandra_result_get_field_name
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_cassandra_result_get_field_name(struct sql_result *_result
      ATTR_UNUSED,\n\t\t\t\t       unsigned int idx ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - field_name ATTR_UNUSED
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2012
    functionDepth: 0
    functionLinenumber: 2012
    functionLinenumberEnd: 2017
    functionName: driver_cassandra_result_find_field
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int driver_cassandra_result_find_field(struct sql_result *_result
      ATTR_UNUSED,\n\t\t\t\t   const char *field_name ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 2019
    functionDepth: 1
    functionLinenumber: 2019
    functionLinenumberEnd: 2026
    functionName: driver_cassandra_result_get_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_idx_elem
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_cassandra_result_get_field_value(struct sql_result
      *_result,\n\t\t\t\t\tunsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2037,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    - unsigned int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2041
      start: 2028
    functionDepth: 1
    functionLinenumber: 2028
    functionLinenumberEnd: 2041
    functionName: driver_cassandra_result_get_field_value_binary
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_idx_elem
    - array_idx
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\ndriver_cassandra_result_get_field_value_binary(struct
      sql_result *_result ATTR_UNUSED,\n\t\t\t\t\t       unsigned int idx ATTR_UNUSED,\n\t\t\t\t\t
      \      size_t *size_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - field_name ATTR_UNUSED
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2043
    functionDepth: 0
    functionLinenumber: 2043
    functionLinenumberEnd: 2048
    functionName: driver_cassandra_result_find_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_cassandra_result_find_field_value(struct sql_result
      *result ATTR_UNUSED,\n\t\t\t\t\t const char *field_name ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_front
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2050
    functionDepth: 1
    functionLinenumber: 2050
    functionLinenumberEnd: 2056
    functionName: driver_cassandra_result_get_values
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_front
    linkageType: ''
    returnType: char
    signature: 'char *const *

      driver_cassandra_result_get_values(struct sql_result *_result)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2065
      start: 2058
    functionDepth: 0
    functionLinenumber: 2058
    functionLinenumberEnd: 2065
    functionName: driver_cassandra_result_get_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *driver_cassandra_result_get_error(struct sql_result *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2072,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2074,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 2067
    functionDepth: 1
    functionLinenumber: 2067
    functionLinenumberEnd: 2078
    functionName: driver_cassandra_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - event_create
    - i_new
    linkageType: ''
    returnType: struct sql_transaction_context
    signature: 'struct sql_transaction_context *

      driver_cassandra_transaction_begin(struct sql_db *db)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2089,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2090,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct cassandra_sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 2080
    functionDepth: 1
    functionLinenumber: 2080
    functionLinenumberEnd: 2091
    functionName: cassandra_prepared_statement_remove_pending
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    linkageType: ''
    returnType: void
    signature: void cassandra_prepared_statement_remove_pending(struct cassandra_sql_statement
      *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cassandra_prepared_statement_remove_pending
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2095,1
    - Dst: cass_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2097,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2098,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct cassandra_sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2099
      start: 2093
    functionDepth: 2
    functionLinenumber: 2093
    functionLinenumberEnd: 2099
    functionName: cassandra_sql_statement_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_statement_free
    - cassandra_prepared_statement_remove_pending
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void cassandra_sql_statement_free(struct cassandra_sql_statement *stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2108,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2112,1
    - Dst: cassandra_sql_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2113,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2114,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2115,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2116,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct cassandra_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2118
      start: 2101
    functionDepth: 3
    functionLinenumber: 2101
    functionLinenumberEnd: 2118
    functionName: driver_cassandra_transaction_unref
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_free
    - array_foreach_elem
    - cassandra_sql_statement_free
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_transaction_unref(struct cassandra_transaction_context
      **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2127,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - error
    argTypes:
    - struct cassandra_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2131
      start: 2120
    functionDepth: 1
    functionLinenumber: 2120
    functionLinenumberEnd: 2131
    functionName: transaction_set_failed
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void transaction_set_failed(struct cassandra_transaction_context *ctx,\n\t\t
      \      const char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2139,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2140,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2141,1
    - Dst: sql_result_get_error_type
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2142,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2143,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2143,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2147,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2147,1
    - Dst: struct cassandra_transaction_context*::callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2150,1
    - Dst: driver_cassandra_transaction_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - struct sql_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2152
      start: 2133
    functionDepth: 4
    functionLinenumber: 2133
    functionLinenumberEnd: 2152
    functionName: transaction_commit_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_zero
    - e_debug
    - struct cassandra_transaction_context*::callback
    - sql_result_get_error
    - driver_cassandra_transaction_unref
    - sql_result_next_row
    - sql_transaction_finished_event
    - sql_result_get_error_type
    linkageType: ''
    returnType: void
    signature: void transaction_commit_callback(struct sql_result *result, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cassandra_result_connect_and_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct cassandra_sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2161
      start: 2154
    functionDepth: 4
    functionLinenumber: 2154
    functionLinenumberEnd: 2161
    functionName: cassandra_statement_send_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cassandra_result_connect_and_send_query
    linkageType: ''
    returnType: void
    signature: void cassandra_statement_send_query(struct cassandra_sql_statement
      *stmt)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2167,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2173,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2173,1
    - Dst: struct cassandra_transaction_context*::callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2176,1
    - Dst: driver_cassandra_transaction_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2177,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2184,1
    - Dst: cass_statement_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2195,1
    - Dst: sql_statement_get_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2196,1
    - Dst: cass_statement_set_timestamp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2198,1
    - Dst: sql_statement_get_log_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2203,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2209,1
    - Dst: driver_cassandra_result_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2217,1
    - Dst: cass_batch_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2223,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2226,1
    - Dst: cass_batch_add_statement
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2227,1
    - Dst: cass_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2229,1
    - Dst: cassandra_result_connect_and_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2232,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2238,1
    - Dst: cassandra_statement_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2240,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2244,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 2
    argNames:
    - ctx
    - error
    argTypes:
    - struct cassandra_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2246
      start: 2163
    functionDepth: 5
    functionLinenumber: 2163
    functionLinenumberEnd: 2246
    functionName: cassandra_transaction_finish
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_statement_new
    - array_count
    - driver_cassandra_result_init
    - driver_cassandra_transaction_unref
    - sql_statement_get_log_query
    - sql_transaction_finished_event
    - array_foreach_elem
    - i_unreached
    - cass_statement_set_timestamp
    - array_idx_elem
    - sql_statement_get_query
    - cass_statement_free
    - cass_batch_new
    - cassandra_result_connect_and_send_query
    - struct cassandra_transaction_context*::callback
    - e_error
    - cass_batch_add_statement
    - cassandra_statement_send_query
    - container_of
    linkageType: ''
    returnType: void
    signature: "void cassandra_transaction_finish(struct cassandra_transaction_context
      *ctx,\n\t\t\t\t\t const char *error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2256,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2260,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2264,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2264,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2267,1
    - Dst: driver_cassandra_transaction_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2268,1
    - Dst: cassandra_transaction_finish
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - _ctx
    - callback
    - context
    argTypes:
    - struct sql_transaction_context*
    - sql_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2248
    functionDepth: 6
    functionLinenumber: 2248
    functionLinenumberEnd: 2273
    functionName: driver_cassandra_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_zero
    - cassandra_transaction_finish
    - e_debug
    - array_count
    - driver_cassandra_transaction_unref
    - callback
    - sql_transaction_finished_event
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_transaction_commit(struct sql_transaction_context
      *_ctx,\n\t\t\t\t    sql_commit_callback_t *callback, void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2279,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2283,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2284,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2286,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2289,1
    - Dst: driver_cassandra_sync_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2293,1
    - Dst: driver_cassandra_sync_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2294,1
    - Dst: sql_statement_get_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2295,1
    - Dst: driver_cassandra_sync_deinit
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2297,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2299,1
    - Dst: transaction_set_failed
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2300,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2300,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2301,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct cassandra_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2302
      start: 2275
    functionDepth: 6
    functionLinenumber: 2275
    functionLinenumberEnd: 2302
    functionName: driver_cassandra_try_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_panic
    - container_of
    - transaction_set_failed
    - driver_cassandra_sync_deinit
    - driver_cassandra_sync_init
    - array_count
    - array_idx_elem
    - sql_result_get_error
    - sql_result_unref
    - sql_statement_get_query
    - driver_cassandra_sync_query
    - sql_result_next_row
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_try_commit_s(struct cassandra_transaction_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2311,1
    - Dst: driver_cassandra_try_commit_s
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2312,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2313,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2315,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2316,1
    - Dst: driver_cassandra_transaction_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct sql_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2319
      start: 2304
    functionDepth: 7
    functionLinenumber: 2304
    functionLinenumberEnd: 2319
    functionName: driver_cassandra_transaction_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_try_commit_s
    - array_count
    - driver_cassandra_transaction_unref
    - t_strdup
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int driver_cassandra_transaction_commit_s(struct sql_transaction_context
      *_ctx,\n\t\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2327,1
    - Dst: driver_cassandra_transaction_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct sql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2329
      start: 2321
    functionDepth: 4
    functionLinenumber: 2321
    functionLinenumberEnd: 2329
    functionName: driver_cassandra_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_assert
    - driver_cassandra_transaction_unref
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_transaction_rollback(struct sql_transaction_context
      *_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2337,1
    - Dst: transaction_set_failed
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2342,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2342,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - query
    argTypes:
    - struct cassandra_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2331
    functionDepth: 2
    functionLinenumber: 2331
    functionLinenumberEnd: 2350
    functionName: driver_cassandra_update_query_type
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - str_begins_icase_with
    - transaction_set_failed
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool driver_cassandra_update_query_type(struct cassandra_transaction_context
      *ctx,\n\t\t\t\t   const char *query)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2359,1
    - Dst: driver_cassandra_update_query_type
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2361,1
    - Dst: sql_statement_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2364,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2366,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - query
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2352
    functionDepth: 3
    functionLinenumber: 2352
    functionLinenumberEnd: 2368
    functionName: driver_cassandra_update
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - array_push_back
    - driver_cassandra_update_query_type
    - sql_statement_init
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_update(struct sql_transaction_context *_ctx,
      const char *query,\n\t\t\tunsigned int *affected_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2374,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2376,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2377,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - data
    - size
    argTypes:
    - struct sql_db*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2379
      start: 2370
    functionDepth: 1
    functionLinenumber: 2370
    functionLinenumberEnd: 2379
    functionName: driver_cassandra_escape_blob
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_c
    - t_str_new
    - binary_to_hex_append
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_cassandra_escape_blob(struct sql_db *_db ATTR_UNUSED,\n\t\t\t
      \    const unsigned char *data, size_t size)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2388,1
    - Dst: cass_prepared_parameter_data_type
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2391,1
    - Dst: cass_data_type_type
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2393,1
    - Dst: cass_statement_bind_int32
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2399,1
    - Dst: cass_statement_bind_int64
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2403,1
    - Dst: cass_statement_bind_int16
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2408,1
    - Dst: cass_statement_bind_int8
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2413,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - stmt
    - column_idx
    - value
    argTypes:
    - struct cassandra_sql_statement*
    - unsigned int
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2418
      start: 2381
    functionDepth: 1
    functionLinenumber: 2381
    functionLinenumberEnd: 2418
    functionName: driver_cassandra_bind_int
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_prepared_parameter_data_type
    - cass_statement_bind_int64
    - cass_statement_bind_int16
    - cass_data_type_type
    - i_assert
    - cass_statement_bind_int8
    - cass_statement_bind_int32
    linkageType: ''
    returnType: CassError
    signature: "CassError driver_cassandra_bind_int(struct cassandra_sql_statement
      *stmt,\n\t\t\t  unsigned int column_idx, int64_t value)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: cass_statement_bind_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2427,1
    - Dst: cass_statement_bind_bytes
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2431,1
    - Dst: driver_cassandra_bind_int
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2436,1
    - Dst: cass_statement_bind_double
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2440,1
    - Dst: cass_statement_bind_uuid
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2445,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2450,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2453,1
    - Dst: cass_error_desc
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2456,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - stmt
    - arg
    argTypes:
    - struct cassandra_sql_statement*
    - struct cassandra_sql_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2458
      start: 2420
    functionDepth: 2
    functionLinenumber: 2420
    functionLinenumberEnd: 2458
    functionName: prepare_finish_arg
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_bind_int
    - i_unreached
    - cass_statement_bind_bytes
    - cass_statement_bind_double
    - cass_error_desc
    - e_error
    - cass_statement_bind_uuid
    - cass_statement_bind_string
    linkageType: ''
    returnType: void
    signature: "void prepare_finish_arg(struct cassandra_sql_statement *stmt,\n\t\t\t
      \      const struct cassandra_sql_arg *arg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2465,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2468,1
    - Dst: sql_statement_get_log_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2470,1
    - Dst: cassandra_transaction_finish
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2472,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2475,1
    - Dst: result_finish
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2476,1
    - Dst: cassandra_sql_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2477,1
    - Dst: cassandra_sql_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2479,1
    - Dst: cass_prepared_bind
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2483,1
    - Dst: cass_statement_set_timestamp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2486,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2488,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2489,1
    - Dst: prepare_finish_arg
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2490,1
    - Dst: cassandra_transaction_finish
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2493,1
    - Dst: cassandra_statement_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2495,1
    - Dst: cassandra_sql_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2496,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct cassandra_sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2460
    functionDepth: 6
    functionLinenumber: 2460
    functionLinenumberEnd: 2498
    functionName: prepare_finish_statement
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cassandra_transaction_finish
    - cassandra_sql_statement_free
    - t_strdup_printf
    - cass_statement_set_timestamp
    - array_foreach
    - prepare_finish_arg
    - i_strdup
    - cass_prepared_bind
    - sql_statement_get_log_query
    - result_finish
    - array_is_created
    - i_assert
    - cassandra_statement_send_query
    linkageType: ''
    returnType: void
    signature: void prepare_finish_statement(struct cassandra_sql_statement *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2504,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2508,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2508,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2509,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2510,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2512,1
    - Dst: prepare_finish_statement
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - prep_stmt
    argTypes:
    - struct cassandra_sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2500
    functionDepth: 7
    functionLinenumber: 2500
    functionLinenumberEnd: 2515
    functionName: prepare_finish_pending_statements
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 1
    functionsReached:
    - prepare_finish_statement
    - array_foreach_elem
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - array_append_array
    linkageType: ''
    returnType: void
    signature: void prepare_finish_pending_statements(struct cassandra_sql_prepared_statement
      *prep_stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cass_future_error_code
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2520,1
    - Dst: cass_future_error_message
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2526,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2527,1
    - Dst: i_strndup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2528,1
    - Dst: cass_future_get_prepared
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2530,1
    - Dst: prepare_finish_pending_statements
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - future
    - context
    argTypes:
    - CassFuture*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2534
      start: 2517
    functionDepth: 8
    functionLinenumber: 2517
    functionLinenumberEnd: 2534
    functionName: prepare_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_future_error_code
    - prepare_finish_pending_statements
    - i_strndup
    - cass_future_error_message
    - cass_future_get_prepared
    - i_free
    linkageType: ''
    returnType: void
    signature: void prepare_callback(CassFuture *future, void *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2538,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2541,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2544,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2546,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2547,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2553,1
    - Dst: cass_session_prepare
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2555,1
    - Dst: driver_cassandra_set_callback
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2557,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - prep_stmt
    argTypes:
    - struct cassandra_sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2558
      start: 2536
    functionDepth: 2
    functionLinenumber: 2536
    functionLinenumberEnd: 2558
    functionName: prepare_start
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_unreached
    - array_push_back
    - sql_connect
    - i_free_and_null
    - driver_cassandra_set_callback
    - SQL_DB_IS_READY
    - cass_session_prepare
    linkageType: ''
    returnType: void
    signature: void prepare_start(struct cassandra_sql_prepared_statement *prep_stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2564,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2564,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2566,1
    - Dst: prepare_start
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2568,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct cassandra_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2571
      start: 2560
    functionDepth: 3
    functionLinenumber: 2560
    functionLinenumberEnd: 2571
    functionName: driver_cassandra_prepare_pending
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 1
    functionsReached:
    - prepare_start
    - array_foreach_elem
    - SQL_DB_IS_READY
    - array_clear
    - i_assert
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_prepare_pending(struct cassandra_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2578,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2581,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2582,1
    - Dst: prepare_start
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - db
    - query_template
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2585
      start: 2573
    functionDepth: 3
    functionLinenumber: 2573
    functionLinenumberEnd: 2585
    functionName: driver_cassandra_prepared_statement_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_array_init
    - prepare_start
    - i_new
    linkageType: ''
    returnType: struct sql_prepared_statement
    signature: "struct sql_prepared_statement *\ndriver_cassandra_prepared_statement_init(struct
      sql_db *db,\n\t\t\t\t\t const char *query_template)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2593,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2593,1
    - Dst: cass_prepared_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2595,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2596,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2597,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2598,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _prep_stmt
    argTypes:
    - struct sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2600
      start: 2587
    functionDepth: 1
    functionLinenumber: 2587
    functionLinenumberEnd: 2600
    functionName: driver_cassandra_prepared_statement_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_count
    - i_assert
    - array_free
    - cass_prepared_free
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_prepared_statement_deinit(struct sql_prepared_statement
      *_prep_stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2606,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - query_template ATTR_UNUSED
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2611
      start: 2602
    functionDepth: 1
    functionLinenumber: 2602
    functionLinenumberEnd: 2611
    functionName: driver_cassandra_statement_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct sql_statement
    signature: "struct sql_statement *\ndriver_cassandra_statement_init(struct sql_db
      *db ATTR_UNUSED,\n\t\t\t\tconst char *query_template ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2618,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2620,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2624,1
    - Dst: cass_prepared_bind
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2629,1
    - Dst: prepare_start
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2632,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _prep_stmt
    argTypes:
    - struct sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2613
    functionDepth: 3
    functionLinenumber: 2613
    functionLinenumberEnd: 2637
    functionName: driver_cassandra_statement_init_prepared
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - prepare_start
    - p_new
    - array_push_back
    - cass_prepared_bind
    linkageType: ''
    returnType: struct sql_statement
    signature: 'struct sql_statement *

      driver_cassandra_statement_init_prepared(struct sql_prepared_statement *_prep_stmt)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cass_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _stmt
    argTypes:
    - struct sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2647
      start: 2639
    functionDepth: 0
    functionLinenumber: 2639
    functionLinenumberEnd: 2647
    functionName: driver_cassandra_statement_abort
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_statement_free
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_statement_abort(struct sql_statement *_stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2659,1
    - Dst: cass_statement_set_timestamp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _stmt
    - ts
    argTypes:
    - struct sql_statement*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2649
    functionDepth: 1
    functionLinenumber: 2649
    functionLinenumberEnd: 2664
    functionName: driver_cassandra_statement_set_timestamp
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_assert
    - cass_statement_set_timestamp
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_statement_set_timestamp(struct sql_statement
      *_stmt,\n\t\t\t\t\t const struct timespec *ts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2673,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2674,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2675,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stmt
    - column_idx
    - value_type
    argTypes:
    - struct cassandra_sql_statement*
    - unsigned int
    - enum cassandra_sql_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2679
      start: 2666
    functionDepth: 1
    functionLinenumber: 2666
    functionLinenumberEnd: 2679
    functionName: driver_cassandra_add_pending_arg
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_append_space
    - p_array_init
    linkageType: ''
    returnType: struct cassandra_sql_arg
    signature: "struct cassandra_sql_arg *\ndriver_cassandra_add_pending_arg(struct
      cassandra_sql_statement *stmt,\n\t\t\t\t unsigned int column_idx,\n\t\t\t\t
      enum cassandra_sql_arg_type value_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cass_statement_bind_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2689,1
    - Dst: driver_cassandra_add_pending_arg
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2692,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2696
      start: 2681
    functionDepth: 2
    functionLinenumber: 2681
    functionLinenumberEnd: 2696
    functionName: driver_cassandra_statement_bind_str
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - cass_statement_bind_string
    - driver_cassandra_add_pending_arg
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_statement_bind_str(struct sql_statement *_stmt,\n\t\t\t\t
      \   unsigned int column_idx,\n\t\t\t\t    const char *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cass_statement_bind_bytes
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2707,1
    - Dst: driver_cassandra_add_pending_arg
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2711,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - _stmt
    - column_idx
    - value
    - value_size
    argTypes:
    - struct sql_statement*
    - unsigned int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2717
      start: 2698
    functionDepth: 2
    functionLinenumber: 2698
    functionLinenumberEnd: 2717
    functionName: driver_cassandra_statement_bind_binary
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_statement_bind_bytes
    - p_memdup
    - driver_cassandra_add_pending_arg
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_statement_bind_binary(struct sql_statement *_stmt,\n\t\t\t\t
      \      unsigned int column_idx,\n\t\t\t\t       const void *value, size_t value_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: driver_cassandra_bind_int
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2727,1
    - Dst: driver_cassandra_add_pending_arg
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2734
      start: 2719
    functionDepth: 2
    functionLinenumber: 2719
    functionLinenumberEnd: 2734
    functionName: driver_cassandra_statement_bind_int64
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - driver_cassandra_bind_int
    - driver_cassandra_add_pending_arg
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_statement_bind_int64(struct sql_statement *_stmt,\n\t\t\t\t
      \     unsigned int column_idx, int64_t value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cass_statement_bind_double
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2744,1
    - Dst: driver_cassandra_add_pending_arg
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2747,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2751
      start: 2736
    functionDepth: 2
    functionLinenumber: 2736
    functionLinenumberEnd: 2751
    functionName: driver_cassandra_statement_bind_double
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - cass_statement_bind_double
    - driver_cassandra_add_pending_arg
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_statement_bind_double(struct sql_statement *_stmt,\n\t\t\t\t
      \      unsigned int column_idx, double value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2758,1
    - Dst: cass_uuid_from_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2761,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2761,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2762,1
    - Dst: cass_statement_bind_uuid
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2764,1
    - Dst: driver_cassandra_add_pending_arg
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2767,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2769,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - _stmt
    - column_idx
    - uuid
    argTypes:
    - struct sql_statement*
    - unsigned int
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2771
      start: 2753
    functionDepth: 2
    functionLinenumber: 2753
    functionLinenumberEnd: 2771
    functionName: driver_cassandra_statement_bind_uuid
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - memcpy
    - guid_128_to_uuid_string
    - container_of
    - driver_cassandra_add_pending_arg
    - cass_statement_bind_uuid
    - i_assert
    - cass_uuid_from_string
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_statement_bind_uuid(struct sql_statement *_stmt,\n\t\t\t\t
      \    unsigned int column_idx, const guid_128_t uuid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2780,1
    - Dst: driver_cassandra_result_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2785,1
    - Dst: sql_statement_get_log_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2786,1
    - Dst: cass_statement_new
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2800,1
    - Dst: sql_statement_get_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2800,1
    - Dst: cass_statement_set_timestamp
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2803,1
    - Dst: cassandra_result_connect_and_send_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2807,1
    - Dst: cassandra_sql_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - _stmt
    - callback
    - context
    argTypes:
    - struct sql_statement*
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2809
      start: 2774
    functionDepth: 4
    functionLinenumber: 2774
    functionLinenumberEnd: 2809
    functionName: driver_cassandra_statement_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - cassandra_result_connect_and_send_query
    - cassandra_sql_statement_free
    - cass_statement_set_timestamp
    - cass_statement_new
    - driver_cassandra_result_init
    - sql_statement_get_log_query
    - sql_statement_get_query
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_statement_query(struct sql_statement *_stmt,\n\t\t\t\t
      sql_query_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2811
    functionDepth: 1
    functionLinenumber: 2811
    functionLinenumberEnd: 2815
    functionName: driver_cassandra_statement_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_cassandra_statement_query_s(struct sql_statement *_stmt ATTR_UNUSED)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2827,1
    - Dst: driver_cassandra_update_query_type
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2829,1
    - Dst: sql_statement_get_query
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2830,1
    - Dst: cassandra_sql_statement_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2831,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - _stmt
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - struct sql_statement*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2836
      start: 2817
    functionDepth: 3
    functionLinenumber: 2817
    functionLinenumberEnd: 2836
    functionName: driver_cassandra_update_stmt
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - cassandra_sql_statement_free
    - driver_cassandra_update_query_type
    - sql_statement_get_query
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void driver_cassandra_update_stmt(struct sql_transaction_context *_ctx,\n\t\t\t
      \    struct sql_statement *_stmt,\n\t\t\t     unsigned int *affected_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2840,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2841,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2842,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct cassandra_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2843
      start: 2838
    functionDepth: 1
    functionLinenumber: 2838
    functionLinenumberEnd: 2843
    functionName: driver_cassandra_have_work
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - array_not_empty
    linkageType: ''
    returnType: bool
    signature: bool driver_cassandra_have_work(struct cassandra_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2847,1
    - Dst: driver_cassandra_have_work
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2849,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2853,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2854,1
    - Dst: driver_cassandra_have_work
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2855,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2856,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2858,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2859,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2860,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2861,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2862
      start: 2845
    functionDepth: 2
    functionLinenumber: 2845
    functionLinenumberEnd: 2862
    functionName: driver_cassandra_wait
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_cassandra_have_work
    - io_loop_move_io
    - io_loop_set_current
    - io_loop_destroy
    - io_loop_create
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_wait(struct sql_db *_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2926,1
    - Dst: sql_driver_register
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2928
      start: 2924
    functionDepth: 3
    functionLinenumber: 2924
    functionLinenumberEnd: 2928
    functionName: driver_cassandra_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - sql_driver_register
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2934,1
    - Dst: sql_unref
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2936,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2938,1
    - Dst: sql_driver_unregister
      Src: /src/dovecot/src/lib-sql/driver-cassandra.c:2939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2940
      start: 2930
    functionDepth: 4
    functionLinenumber: 2930
    functionLinenumberEnd: 2940
    functionName: driver_cassandra_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-cassandra.c
    functionUses: 0
    functionsReached:
    - sql_driver_unregister
    - array_free
    - sql_unref
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void driver_cassandra_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - db
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: SQL_DB_IS_READY
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api-private.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SQL_DB_IS_READY(db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sql_db*::v::table_prefix
      Src: /src/dovecot/src/lib-sql/sql-api-private.h:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 275
    functionName: sql_db_table_prefix
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api-private.h
    functionUses: 0
    functionsReached:
    - struct sql_db*::v::table_prefix
    linkageType: ''
    returnType: char
    signature: char *sql_db_table_prefix(struct sql_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_disconnect
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:19,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:20,1
    - Dst: sql_exec
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sql
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 17
    functionDepth: 3
    functionLinenumber: 17
    functionLinenumberEnd: 22
    functionName: setup_database
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql-sqlite.c
    functionUses: 0
    functionsReached:
    - sql_exec
    - i_unlink_if_exists
    - sql_disconnect
    linkageType: ''
    returnType: void
    signature: void setup_database(struct sql_db *sql)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:26,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:29,1
    - Dst: sql_drivers_init_without_drivers
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:38,1
    - Dst: driver_sqlite_init
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:39,1
    - Dst: sql_init_auto
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:41,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:43,1
    - Dst: setup_database
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:44,1
    - Dst: sql_transaction_begin
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:47,1
    - Dst: sql_update
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:48,1
    - Dst: sql_update
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:50,1
    - Dst: sql_transaction_commit_s
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:50,1
    - Dst: sql_query_s
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:54,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:54,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:55,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:55,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:56,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:56,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:57,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:58,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:58,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:59,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:59,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:60,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:60,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:61,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:61,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:62,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:62,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:64,1
    - Dst: sql_prepared_statement_init
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:67,1
    - Dst: sql_statement_init_prepared
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:69,1
    - Dst: sql_statement_bind_str
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:70,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:72,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:72,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:73,1
    - Dst: sql_statement_init
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:75,1
    - Dst: sql_statement_bind_str
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:76,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:78,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:78,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:79,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:79,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:80,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:80,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:81,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:81,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:82,1
    - Dst: sql_prepared_statement_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:83,1
    - Dst: sql_statement_init
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:85,1
    - Dst: sql_statement_bind_str
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:86,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:88,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:89,1
    - Dst: sql_statement_bind_uuid
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:90,1
    - Dst: sql_statement_bind_int64
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:91,1
    - Dst: sql_statement_bind_binary
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:92,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:94,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:94,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:95,1
    - Dst: sql_statement_init
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:97,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:99,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:99,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:100,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:100,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:101,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:101,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:102,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:102,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:103,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:103,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:104,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:104,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:105,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:105,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:106,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:106,1
    - Dst: sql_result_get_field_value_binary
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:109,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:110,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:111,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:112,1
    - Dst: sql_prepared_statement_init
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:114,1
    - Dst: sql_disconnect
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:115,1
    - Dst: sql_statement_init_prepared
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:116,1
    - Dst: sql_statement_bind_str
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:117,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:119,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:119,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:120,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:120,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:121,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:121,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:122,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:122,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:123,1
    - Dst: sql_prepared_statement_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:124,1
    - Dst: sql_unref
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:126,1
    - Dst: driver_sqlite_deinit
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:127,1
    - Dst: sql_drivers_deinit_without_drivers
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:128,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:129,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 24
    functionDepth: 4
    functionLinenumber: 24
    functionLinenumberEnd: 132
    functionName: test_sql_sqlite
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql-sqlite.c
    functionUses: 0
    functionsReached:
    - sql_transaction_begin
    - sql_transaction_commit_s
    - sql_result_get_field_value
    - sql_prepared_statement_unref
    - sql_statement_init
    - driver_sqlite_deinit
    - test_assert
    - sql_statement_bind_binary
    - guid_128_from_uuid_string
    - sql_result_get_fields_count
    - sql_statement_init_prepared
    - sql_disconnect
    - i_fatal
    - sql_statement_bind_str
    - test_end
    - sql_statement_bind_uuid
    - sql_prepared_statement_init
    - sql_update
    - settings_simple_deinit
    - sql_result_get_field_value_binary
    - sql_drivers_init_without_drivers
    - test_assert_strcmp
    - settings_simple_init
    - i_assert
    - test_assert_memcmp
    - sql_result_next_row
    - sql_statement_bind_int64
    - sql_unref
    - sql_drivers_deinit_without_drivers
    - sql_statement_query_s
    - sql_query_s
    - sql_result_get_field_name
    - sql_init_auto
    - driver_sqlite_init
    - sql_result_unref
    - setup_database
    - test_assert_ucmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sql_sqlite(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-sql/test-sql-sqlite.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql-sqlite.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: driver_sqlite_settings_check
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool driver_sqlite_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t\t
      const char **error_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:149,1
    - Dst: sqlite3_finalize
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:152,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:154,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:155,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:157,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - db
    - _handle
    - query
    argTypes:
    - struct sql_db*
    - struct sqlite3_stmt**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 161
    functionName: driver_sqlite_finalize_handle
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_result_str
    - e_debug
    - i_fatal_status
    - sqlite3_finalize
    - i_assert
    - sqlite3_errstr
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_finalize_handle(struct sql_db *db,\n\t\t\t\t\t
      \ struct sqlite3_stmt **_handle,\n\t\t\t\t\t  const char *query)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:165,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:168,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:172,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:175,1
    - Dst: driver_sqlite_finalize_handle
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:177,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:181,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlite_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 182
    functionName: driver_sqlite_finalize_prepared_statements
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - container_of
    - hash_table_iterate
    - hash_table_iterate_init
    - driver_sqlite_finalize_handle
    - hash_table_is_created
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_finalize_prepared_statements(struct sqlite_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:186,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:189,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:193,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:195,1
    - Dst: driver_sqlite_prepared_statement_reopen
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:196,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlite_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 200
    functionName: driver_sqlite_reopen_prepared_statements
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - container_of
    - hash_table_iterate
    - driver_sqlite_prepared_statement_reopen
    - hash_table_iterate_init
    - hash_table_is_created
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_reopen_prepared_statements(struct sqlite_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:204,1
    - Dst: sql_connection_log_finished
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:206,1
    - Dst: driver_sqlite_finalize_prepared_statements
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:207,1
    - Dst: sqlite3_close
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:208,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:210,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 215
    functionName: driver_sqlite_disconnect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - sql_connection_log_finished
    - e_error
    - driver_sqlite_finalize_prepared_statements
    - sqlite3_errstr
    - sqlite3_close
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_disconnect(struct sql_db *_db)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_system_errno
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:224,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:229,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:234,1
    - Dst: stat
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:239,1
    - Dst: eacces_error_get_creating
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:240,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:242,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:245,1
    - Dst: strerror
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:246,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - db
    - func
    argTypes:
    - struct sqlite_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 248
    functionName: driver_sqlite_get_eacces_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - sqlite3_system_errno
    - eacces_error_get_creating
    - strerror
    - t_strdup_printf
    - stat
    - eacces_error_get
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_sqlite_get_eacces_error(struct sqlite_db *db, const char *func)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:257,1
    - Dst: driver_sqlite_get_eacces_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:260,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:263,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:264,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:266,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlite_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 271
    functionName: driver_sqlite_connect_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - driver_sqlite_get_eacces_error
    - i_fatal_status
    - t_strdup_printf
    - sqlite3_errstr
    linkageType: ''
    returnType: char
    signature: char *driver_sqlite_connect_error(struct sqlite_db *db)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:277,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:280,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:280,1
    - Dst: sqlite3_prepare_v2
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:283,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:285,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:286,1
    - Dst: sqlite3_step
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:288,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:289,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:290,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:291,1
    - Dst: sqlite3_finalize
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - db
    - value
    argTypes:
    - struct sqlite_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 296
    functionName: driver_sqlite_set_pragma_synchronous
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - driver_sqlite_result_str
    - sqlite3_step
    - sqlite3_finalize
    - SQLITE_IS_OK
    - t_strdup_printf
    - e_error
    - sqlite3_prepare_v2
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_set_pragma_synchronous(struct sqlite_db *db, const
      char *value)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:300,1
    - Dst: sqlite3_open_v2
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:314,1
    - Dst: sqlite3_system_errno
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:315,1
    - Dst: sqlite3_busy_timeout
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:320,1
    - Dst: driver_sqlite_set_pragma_synchronous
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:322,1
    - Dst: driver_sqlite_reopen_prepared_statements
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:323,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:326,1
    - Dst: driver_sqlite_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:327,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:329,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:331,1
    - Dst: driver_sqlite_connect_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:331,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:332,1
    - Dst: driver_sqlite_disconnect
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:336,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 298
    functionDepth: 4
    functionLinenumber: 298
    functionLinenumberEnd: 338
    functionName: driver_sqlite_connect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 1
    functionsReached:
    - container_of
    - sqlite3_busy_timeout
    - sqlite3_system_errno
    - driver_sqlite_connect
    - driver_sqlite_connect_error
    - driver_sqlite_reopen_prepared_statements
    - i_strdup
    - e_error
    - driver_sqlite_set_pragma_synchronous
    - sqlite3_open_v2
    - i_assert
    - i_free
    - driver_sqlite_disconnect
    linkageType: ''
    returnType: int
    signature: int driver_sqlite_connect(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:345,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct sqlite_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 351
    functionName: driver_sqlite_db_cache_find
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - settings_equal
    - array_foreach_elem
    linkageType: ''
    returnType: struct sqlite_db
    signature: 'struct sqlite_db *

      driver_sqlite_db_cache_find(const struct sqlite_settings *set)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:359,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:363,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:364,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:365,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - event
    - set
    argTypes:
    - struct event*
    - struct sqlite_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 368
    functionName: driver_sqlite_init_from_set
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_set_append_log_prefix
    - i_new
    - event_add_str
    - event_add_category
    linkageType: ''
    returnType: struct sqlite_db
    signature: "struct sqlite_db *\ndriver_sqlite_init_from_set(struct event *event,\n\t\t\t
      \   const struct sqlite_settings *set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:376,1
    - Dst: driver_sqlite_db_cache_find
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:380,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:382,1
    - Dst: driver_sqlite_init_from_set
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:384,1
    - Dst: sql_init_common
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:385,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - event
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 394
    functionName: driver_sqlite_init_v
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - sql_init_common
    - driver_sqlite_init_from_set
    - array_push_back
    - settings_free
    - driver_sqlite_db_cache_find
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int driver_sqlite_init_v(struct event *event, struct sql_db **db_r,\n\t\t
      \    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:398,1
    - Dst: sql_db_set_state
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:401,1
    - Dst: driver_sqlite_disconnect
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:403,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:404,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:405,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:406,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 396
    functionDepth: 4
    functionLinenumber: 396
    functionLinenumberEnd: 408
    functionName: driver_sqlite_deinit_v
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - event_unref
    - settings_free
    - sql_db_set_state
    - i_free
    - array_free
    - driver_sqlite_disconnect
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_deinit_v(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:414,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:415,1
    - Dst: sqlite3_snprintf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:416,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - string
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 419
    functionName: driver_sqlite_escape_string
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - sqlite3_snprintf
    - strlen
    - t_malloc_no0
    - i_unreached
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_sqlite_escape_string(struct sql_db *_db ATTR_UNUSED,\n\t\t\t
      \   const char *string)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:423,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:425,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:429,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:441,1
    - Dst: eacces_error_get_creating
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:444,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:446,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:451,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:451,1
    - Dst: sqlite3_system_errno
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:452,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlite_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 453
    functionName: driver_sqlite_readonly_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - eacces_error_get_creating
    - sqlite3_system_errno
    - t_strdup_printf
    - eacces_error_get
    - t_strconcat
    - sqlite3_errstr
    - i_faccessat2
    linkageType: ''
    returnType: char
    signature: char *driver_sqlite_readonly_error(struct sqlite_db *db)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:458,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:462,1
    - Dst: driver_sqlite_connect_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:463,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:467,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:468,1
    - Dst: driver_sqlite_readonly_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:471,1
    - Dst: driver_sqlite_get_eacces_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:474,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:475,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:476,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:476,1
    - Dst: sqlite3_system_errno
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:477,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - _db
    - rc
    argTypes:
    - struct sql_db*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 480
    functionName: driver_sqlite_result_str
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 2
    functionsReached:
    - container_of
    - sqlite3_system_errno
    - driver_sqlite_get_eacces_error
    - driver_sqlite_connect_error
    - SQLITE_IS_OK
    - t_strdup_printf
    - driver_sqlite_readonly_error
    - t_strconcat
    - sqlite3_errstr
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_sqlite_result_str(struct sql_db *_db, int rc)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:485,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:486,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:490,1
    - Dst: sql_query_finished_event
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:492,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:494,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:497,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:498,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:499,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:501,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:503,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:504,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:505,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:509,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:511,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:511,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:512,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - result
    - query
    argTypes:
    - struct sqlite_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 482
    functionDepth: 4
    functionLinenumber: 482
    functionLinenumberEnd: 513
    functionName: driver_sqlite_result_log
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_sqlite_result_str
    - e_debug
    - i_fatal_status
    - SQLITE_IS_OK
    - t_strdup_printf
    - sql_query_finished_event
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - io_loop_time_refresh
    - t_strconcat
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_sqlite_result_log(const struct sqlite_result *result, const char *query)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:519,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:520,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:521,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:523,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:524,1
    - Dst: driver_sqlite_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:530,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:531,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:532,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:533,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:537,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:539,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - _prep_stmt
    argTypes:
    - struct sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 515
    functionDepth: 5
    functionLinenumber: 515
    functionLinenumberEnd: 545
    functionName: driver_sqlite_statement_init_prepared
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - container_of
    - p_new
    - driver_sqlite_result_str
    - driver_sqlite_connect
    - i_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: struct sql_statement
    signature: 'struct sql_statement *

      driver_sqlite_statement_init_prepared(struct sql_prepared_statement *_prep_stmt)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:550,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:551,1
    - Dst: sqlite3_reset
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:561,1
    - Dst: sqlite3_clear_bindings
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct sqlite_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 563
    functionName: driver_sqlite_release_prepared_statement
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - i_assert
    - sqlite3_clear_bindings
    - sqlite3_reset
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_release_prepared_statement(struct sqlite_statement
      *stmt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:568,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:569,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:570,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:574,1
    - Dst: driver_sqlite_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:576,1
    - Dst: sqlite3_prepare_v2
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:580,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:583,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:584,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:585,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:588,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - _db
    - query_template
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 565
    functionDepth: 5
    functionLinenumber: 565
    functionLinenumberEnd: 593
    functionName: driver_sqlite_statement_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - container_of
    - p_new
    - driver_sqlite_result_str
    - driver_sqlite_connect
    - SQLITE_IS_OK
    - sqlite3_prepare_v2
    - p_strdup_printf
    linkageType: ''
    returnType: struct sql_statement
    signature: 'struct sql_statement *

      driver_sqlite_statement_init(struct sql_db *_db, const char *query_template)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:598,1
    - Dst: driver_sqlite_release_prepared_statement
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:601,1
    - Dst: driver_sqlite_finalize_handle
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:603,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:607,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:608,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _stmt
    argTypes:
    - struct sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 595
    functionDepth: 2
    functionLinenumber: 595
    functionLinenumberEnd: 610
    functionName: driver_sqlite_statement_abort
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_sqlite_release_prepared_statement
    - pool_unref
    - driver_sqlite_finalize_handle
    - i_assert
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_statement_abort(struct sql_statement *_stmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:617,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:619,1
    - Dst: driver_sqlite_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:624,1
    - Dst: driver_sqlite_result_log
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:625,1
    - Dst: sqlite3_exec
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:628,1
    - Dst: driver_sqlite_result_log
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:629,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - db
    - query
    - error_r
    argTypes:
    - struct sqlite_db*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 612
    functionDepth: 5
    functionLinenumber: 612
    functionLinenumberEnd: 634
    functionName: driver_sqlite_exec_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - i_zero
    - sqlite3_exec
    - event_create
    - event_unref
    - driver_sqlite_connect
    - driver_sqlite_result_log
    linkageType: ''
    returnType: int
    signature: "int driver_sqlite_exec_query(struct sqlite_db *db, const char *query,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:638,1
    - Dst: driver_sqlite_exec_query
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 636
    functionDepth: 6
    functionLinenumber: 636
    functionLinenumberEnd: 642
    functionName: driver_sqlite_exec
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_sqlite_exec_query
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_exec(struct sql_db *_db, const char *query)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:649,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:655,1
    - Dst: sqlite3_column_count
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:660,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:664,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:669,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct sqlite_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 672
    functionName: driver_sqlite_statement_result_prepare
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - sqlite3_column_count
    - i_new
    - event_create
    linkageType: ''
    returnType: struct sqlite_result
    signature: 'struct sqlite_result *

      driver_sqlite_statement_result_prepare(struct sqlite_statement *stmt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlite_statement_init
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:677,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:679,1
    - Dst: driver_sqlite_statement_result_prepare
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:681,1
    - Dst: driver_sqlite_result_log
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 674
    functionDepth: 6
    functionLinenumber: 674
    functionLinenumberEnd: 685
    functionName: driver_sqlite_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_statement_result_prepare
    - container_of
    - driver_sqlite_result_log
    - driver_sqlite_statement_init
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_sqlite_query_s(struct sql_db *_db, const char *query)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:690,1
    - Dst: driver_sqlite_statement_abort
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:695,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:698,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:699,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:700,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 687
    functionDepth: 3
    functionLinenumber: 687
    functionLinenumberEnd: 702
    functionName: driver_sqlite_result_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_statement_abort
    - container_of
    - event_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_result_free(struct sql_result *_result)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:707,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:714,1
    - Dst: sqlite3_step
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:718,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:726,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:727,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:729,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:730,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:730,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 704
    functionDepth: 4
    functionLinenumber: 704
    functionLinenumberEnd: 734
    functionName: driver_sqlite_result_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_sqlite_result_str
    - sqlite3_step
    - i_fatal_status
    - i_strdup
    - i_assert
    - sqlite3_errstr
    linkageType: ''
    returnType: int
    signature: int driver_sqlite_result_next_row(struct sql_result *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 743
    functionName: driver_sqlite_result_get_fields_count
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int driver_sqlite_result_get_fields_count(struct sql_result
      *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:750,1
    - Dst: sqlite3_column_name
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 753
    functionName: driver_sqlite_result_get_field_name
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - sqlite3_column_name
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_sqlite_result_get_field_name(struct sql_result *_result,\n\t\t\t\t
      \   unsigned int idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:759,1
    - Dst: sqlite3_column_name
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:763,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:765,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - _result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 755
    functionDepth: 1
    functionLinenumber: 755
    functionLinenumberEnd: 770
    functionName: driver_sqlite_result_find_field
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - sqlite3_column_name
    linkageType: ''
    returnType: int
    signature: "int driver_sqlite_result_find_field(struct sql_result *_result,\n\t\t\t\t\t
      \  const char *field_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:777,1
    - Dst: sqlite3_column_text
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 780
    functionName: driver_sqlite_result_get_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - sqlite3_column_text
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_sqlite_result_get_field_value(struct sql_result *_result,\n\t\t\t\t
      \    unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:787,1
    - Dst: sqlite3_column_bytes
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:789,1
    - Dst: sqlite3_column_blob
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _result
    - idx
    - size_r
    argTypes:
    - struct sql_result*
    - unsigned int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 791
    functionName: driver_sqlite_result_get_field_value_binary
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - sqlite3_column_blob
    - sqlite3_column_bytes
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\ndriver_sqlite_result_get_field_value_binary(struct
      sql_result *_result,\n\t\t\t\t\t    unsigned int idx, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlite_result_find_field
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:799,1
    - Dst: driver_sqlite_result_get_field_value
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 803
    functionName: driver_sqlite_result_find_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_result_get_field_value
    - driver_sqlite_result_find_field
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_sqlite_result_find_field_value(struct sql_result *result,\n\t\t\t\t
      \    const char *field_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:809,1
    - Dst: driver_sqlite_result_get_field_value
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 805
    functionDepth: 2
    functionLinenumber: 805
    functionLinenumberEnd: 818
    functionName: driver_sqlite_result_get_values
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_result_get_field_value
    - container_of
    linkageType: ''
    returnType: char
    signature: 'char *const *

      driver_sqlite_result_get_values(struct sql_result *_result)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 825
    functionName: driver_sqlite_result_get_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: char
    signature: char *driver_sqlite_result_get_error(struct sql_result *_result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:831,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:836,1
    - Dst: driver_sqlite_exec_query
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:839,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:840,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:840,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:842,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:844,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - query
    argTypes:
    - struct sqlite_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 827
    functionDepth: 6
    functionLinenumber: 827
    functionLinenumberEnd: 846
    functionName: driver_sqlite_transaction_exec
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_sqlite_exec_query
    - SQLITE_IS_OK
    - i_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_transaction_exec(struct sqlite_transaction_context
      *ctx,\n\t\t\t       const char *query)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:853,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:856,1
    - Dst: driver_sqlite_transaction_exec
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 848
    functionDepth: 7
    functionLinenumber: 848
    functionLinenumberEnd: 861
    functionName: driver_sqlite_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - event_create
    - i_new
    - driver_sqlite_transaction_exec
    linkageType: ''
    returnType: struct sql_transaction_context
    signature: 'struct sql_transaction_context *

      driver_sqlite_transaction_begin(struct sql_db *_db)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:867,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:868,1
    - Dst: driver_sqlite_exec_query
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:871,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:872,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:873,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:873,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:877,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:877,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:882,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:883,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:884,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct sql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 863
    functionDepth: 6
    functionLinenumber: 863
    functionLinenumberEnd: 885
    functionName: driver_sqlite_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - event_unref
    - e_debug
    - SQLITE_IS_OK
    - driver_sqlite_exec_query
    - i_free
    - sql_transaction_finished_event
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_transaction_rollback(struct sql_transaction_context
      *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:892,1
    - Dst: driver_sqlite_transaction_exec
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:895,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:896,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:897,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:897,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:900,1
    - Dst: driver_sqlite_transaction_rollback
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:901,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:904,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:904,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:906,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:907,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct sql_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 887
    functionDepth: 7
    functionLinenumber: 887
    functionLinenumberEnd: 909
    functionName: driver_sqlite_transaction_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - container_of
    - event_unref
    - e_debug
    - SQLITE_IS_OK
    - t_strdup
    - i_free
    - driver_sqlite_transaction_rollback
    - sql_transaction_finished_event
    - driver_sqlite_transaction_exec
    linkageType: ''
    returnType: int
    signature: "int driver_sqlite_transaction_commit_s(struct sql_transaction_context
      *_ctx,\n\t\t\t\t   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:916,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:917,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:919,1
    - Dst: driver_sqlite_transaction_exec
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:922,1
    - Dst: sqlite3_changes
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:924,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - _ctx
    - query
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 911
    functionDepth: 7
    functionLinenumber: 911
    functionLinenumberEnd: 925
    functionName: driver_sqlite_update
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - sqlite3_changes
    - container_of
    - SQLITE_IS_OK
    - driver_sqlite_transaction_exec
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_update(struct sql_transaction_context *_ctx, const
      char *query,\n\t\t     unsigned int *affected_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:931,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:933,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:934,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:935,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - data
    - size
    argTypes:
    - struct sql_db*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 927
    functionDepth: 1
    functionLinenumber: 927
    functionLinenumberEnd: 937
    functionName: driver_sqlite_escape_blob
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_append
    - binary_to_hex_append
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_sqlite_escape_blob(struct sql_db *_db ATTR_UNUSED,\n\t\t\t
      \ const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:943,1
    - Dst: driver_sqlite_statement_result_prepare
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:945,1
    - Dst: driver_sqlite_result_log
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:947,1
    - Dst: sql_statement_get_log_query
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _stmt
    argTypes:
    - struct sql_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 939
    functionDepth: 5
    functionLinenumber: 939
    functionLinenumberEnd: 949
    functionName: driver_sqlite_statement_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - sql_statement_get_log_query
    - driver_sqlite_statement_result_prepare
    - container_of
    - driver_sqlite_result_log
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_sqlite_statement_query_s(struct sql_statement *_stmt)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:956,1
    - Dst: driver_sqlite_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:960,1
    - Dst: sqlite3_prepare_v2
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:961,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:964,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:964,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:967,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - db
    - prep_stmt
    argTypes:
    - struct sqlite_db*
    - struct sqlite_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 951
    functionDepth: 5
    functionLinenumber: 951
    functionLinenumberEnd: 971
    functionName: driver_sqlite_prepared_statement_reopen
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 1
    functionsReached:
    - driver_sqlite_result_str
    - driver_sqlite_connect
    - e_debug
    - i_strdup
    - sqlite3_prepare_v2
    - i_free
    linkageType: ''
    returnType: int
    signature: "int driver_sqlite_prepared_statement_reopen(struct sqlite_db *db,\n\t\t\t\t\tstruct
      sqlite_prepared_statement *prep_stmt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:977,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:979,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:980,1
    - Dst: driver_sqlite_prepared_statement_reopen
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - _db
    - query_template
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 973
    functionDepth: 6
    functionLinenumber: 973
    functionLinenumberEnd: 987
    functionName: driver_sqlite_prepared_statement_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - driver_sqlite_prepared_statement_reopen
    - container_of
    - i_new
    linkageType: ''
    returnType: struct sql_prepared_statement
    signature: "struct sql_prepared_statement *\ndriver_sqlite_prepared_statement_init(struct
      sql_db *_db,\n\t\t\t\t      const char *query_template)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:993,1
    - Dst: driver_sqlite_finalize_handle
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:995,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:998,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:999,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1000,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _prep_stmt
    argTypes:
    - struct sql_prepared_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 989
    functionDepth: 2
    functionLinenumber: 989
    functionLinenumberEnd: 1001
    functionName: driver_sqlite_prepared_statement_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_finalize_handle
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_prepared_statement_deinit(struct sql_prepared_statement
      *_prep_stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1007,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1009,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1013,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - func
    - stmt
    - column_idx
    argTypes:
    - char*
    - struct sqlite_statement*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1003
    functionDepth: 4
    functionLinenumber: 1003
    functionLinenumberEnd: 1017
    functionName: driver_sqlite_bind_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - driver_sqlite_result_str
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_bind_error(const char *func, struct sqlite_statement
      *stmt,\n\t\t\t unsigned int column_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1024,1
    - Dst: sqlite3_bind_text
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1027,1
    - Dst: driver_sqlite_bind_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1029,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1019
    functionDepth: 5
    functionLinenumber: 1019
    functionLinenumberEnd: 1030
    functionName: driver_sqlite_statement_bind_str
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_bind_error
    - sqlite3_bind_text
    - container_of
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_statement_bind_str(struct sql_statement *_stmt,\n\t\t\t\t
      unsigned int column_idx, const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1038,1
    - Dst: sqlite3_bind_blob
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1041,1
    - Dst: driver_sqlite_bind_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1043,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - _stmt
    - column_idx
    - value
    - value_size
    argTypes:
    - struct sql_statement*
    - unsigned int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1032
    functionDepth: 5
    functionLinenumber: 1032
    functionLinenumberEnd: 1044
    functionName: driver_sqlite_statement_bind_binary
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_bind_error
    - sqlite3_bind_blob
    - container_of
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_statement_bind_binary(struct sql_statement *_stmt,\n\t\t\t\t
      \   unsigned int column_idx, const void *value,\n\t\t\t\t    size_t value_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1051,1
    - Dst: sqlite3_bind_int64
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1054,1
    - Dst: driver_sqlite_bind_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1046
    functionDepth: 5
    functionLinenumber: 1046
    functionLinenumberEnd: 1056
    functionName: driver_sqlite_statement_bind_int64
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - sqlite3_bind_int64
    - container_of
    - driver_sqlite_bind_error
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_statement_bind_int64(struct sql_statement *_stmt,\n\t\t\t\t
      \  unsigned int column_idx, int64_t value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1063,1
    - Dst: sqlite3_bind_double
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1066,1
    - Dst: driver_sqlite_bind_error
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1067,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _stmt
    - column_idx
    - value
    argTypes:
    - struct sql_statement*
    - unsigned int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1058
    functionDepth: 5
    functionLinenumber: 1058
    functionLinenumberEnd: 1068
    functionName: driver_sqlite_statement_bind_double
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_bind_error
    - sqlite3_bind_double
    - container_of
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_statement_bind_double(struct sql_statement *_stmt,\n\t\t\t\t
      \   unsigned int column_idx, double value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1075,1
    - Dst: driver_sqlite_statement_bind_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - column_idx
    - uuid
    argTypes:
    - struct sql_statement*
    - unsigned int
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1070
    functionDepth: 6
    functionLinenumber: 1070
    functionLinenumberEnd: 1077
    functionName: driver_sqlite_statement_bind_uuid
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - driver_sqlite_statement_bind_str
    - guid_128_to_uuid_string
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_statement_bind_uuid(struct sql_statement *stmt,\n\t\t\t\t
      \ unsigned int column_idx, const guid_128_t uuid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1085,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1087,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1089,1
    - Dst: driver_sqlite_statement_query_s
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1091,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1093,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1094,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1096,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1097,1
    - Dst: driver_sqlite_result_str
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1097,1
    - Dst: SQLITE_IS_OK
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1100,1
    - Dst: sqlite3_changes
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1101,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - _ctx
    - _stmt
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - struct sql_statement*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1079
    functionDepth: 6
    functionLinenumber: 1079
    functionLinenumberEnd: 1104
    functionName: driver_sqlite_update_stmt
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached:
    - sqlite3_changes
    - container_of
    - driver_sqlite_statement_query_s
    - driver_sqlite_result_str
    - SQLITE_IS_OK
    - i_strdup
    - sql_result_unref
    - i_free
    - sql_result_next_row
    linkageType: ''
    returnType: void
    signature: "void driver_sqlite_update_stmt(struct sql_transaction_context *_ctx,\n\t\t\t
      \ struct sql_statement *_stmt,\n\t\t\t  unsigned int *affected_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1166
    functionDepth: 0
    functionLinenumber: 1166
    functionLinenumberEnd: 1170
    functionName: driver_sqlite_result_error_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int driver_sqlite_result_error_next_row(struct sql_result *result ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1184,1
    - Dst: sql_driver_register
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1185,1
    - Dst: sqlite3_initialize
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1186,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1188,1
    - Dst: sqlite3_errstr
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1182
    functionDepth: 3
    functionLinenumber: 1182
    functionLinenumberEnd: 1189
    functionName: driver_sqlite_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - sqlite3_initialize
    - sql_driver_register
    - i_fatal
    - sqlite3_errstr
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1195,1
    - Dst: sql_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1197,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1199,1
    - Dst: sql_driver_unregister
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1200,1
    - Dst: sqlite3_shutdown
      Src: /src/dovecot/src/lib-sql/driver-sqlite.c:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1191
    functionDepth: 4
    functionLinenumber: 1191
    functionLinenumberEnd: 1202
    functionName: driver_sqlite_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlite.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - sql_driver_unregister
    - sqlite3_shutdown
    - array_free
    - sql_unref
    linkageType: ''
    returnType: void
    signature: void driver_sqlite_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - struct_name
    - ','
    - type
    - ','
    - c_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: SQL_DEF_STRUCT
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SQL_DEF_STRUCT(name, struct_name, type, c_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: SQL_DEF_STRUCT_STR
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SQL_DEF_STRUCT_STR(name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: SQL_DEF_STRUCT_UINT
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SQL_DEF_STRUCT_UINT(name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: SQL_DEF_STRUCT_ULLONG
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SQL_DEF_STRUCT_ULLONG(name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: SQL_DEF_STRUCT_BOOL
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SQL_DEF_STRUCT_BOOL(name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - db
    - ','
    - query
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 138
    functionName: sql_query
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sql_query(db, query, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - stmt
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: sql_statement_query
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sql_statement_query(stmt, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - result
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 191
    functionName: sql_result_more
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sql_result_more(result, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: sql_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-sql/sql-api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sql_transaction_commit(ctx, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:99,1
    - Dst: time
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:101,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:102,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - db
    - query
    argTypes:
    - struct sqlpool_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 105
    functionName: sqlpool_request_new
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - event_create
    - time
    - i_new
    linkageType: ''
    returnType: void
    signature: void sqlpool_request_new(struct sqlpool_db *db, const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:114,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:115,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:116,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _request
    argTypes:
    - struct sqlpool_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 118
    functionName: sqlpool_request_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - i_assert
    - event_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void sqlpool_request_free(struct sqlpool_request **_request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sqlpool_request*::callback
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:128,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:130,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:132,1
    - Dst: sqlpool_request_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - _request
    argTypes:
    - struct sqlpool_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 135
    functionName: sqlpool_request_abort
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    - sqlpool_request_free
    - i_assert
    - struct sqlpool_request*::callback
    linkageType: ''
    returnType: void
    signature: void sqlpool_request_abort(struct sqlpool_request **_request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_transaction_begin
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - trans
    - conndb
    argTypes:
    - struct sqlpool_transaction_context*
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 152
    functionName: driver_sqlpool_new_conn_trans
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_transaction_begin
    linkageType: ''
    returnType: struct sql_transaction_context
    signature: "struct sql_transaction_context *\ndriver_sqlpool_new_conn_trans(struct
      sqlpool_transaction_context *trans,\n\t\t\t      struct sql_db *conndb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_request_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:160,1
    - Dst: driver_sqlpool_new_conn_trans
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:161,1
    - Dst: sql_transaction_commit
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conndb
    - trans
    argTypes:
    - struct sql_db*
    - struct sqlpool_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 164
    functionName: sqlpool_request_handle_transaction
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sqlpool_request_free
    - driver_sqlpool_new_conn_trans
    - sql_transaction_commit
    linkageType: ''
    returnType: void
    signature: "void sqlpool_request_handle_transaction(struct sql_db *conndb,\n\t\t\t\t
      \  struct sqlpool_transaction_context *trans)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:171,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:175,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:176,1
    - Dst: sql_query
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:179,1
    - Dst: sqlpool_request_handle_transaction
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:182,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:184,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - db
    - conndb
    argTypes:
    - struct sqlpool_db*
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 186
    functionName: sqlpool_request_send_next
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - timeout_reset
    - sqlpool_request_handle_transaction
    - DLLIST2_REMOVE
    - SQL_DB_IS_READY
    - sql_query
    linkageType: ''
    returnType: void
    signature: void sqlpool_request_send_next(struct sqlpool_db *db, struct sql_db
      *conndb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:190,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conndb
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: sqlpool_reconnect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_connect
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void sqlpool_reconnect(struct sql_db *conndb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - db
    - host_idx_r
    argTypes:
    - struct sqlpool_db*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 214
    functionName: sqlpool_find_host_with_least_connections
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - i_assert
    linkageType: ''
    returnType: struct sqlpool_host
    signature: "struct sqlpool_host *\nsqlpool_find_host_with_least_connections(struct
      sqlpool_db *db,\n\t\t\t\t\t unsigned int *host_idx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlpool_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 225
    functionName: sqlpool_have_successful_connections
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: bool sqlpool_have_successful_connections(struct sqlpool_db *db)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:243,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:244,1
    - Dst: sqlpool_have_successful_connections
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:249,1
    - Dst: sqlpool_find_host_with_least_connections
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:250,1
    - Dst: sqlpool_add_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - db
    - conndb
    argTypes:
    - struct sqlpool_db*
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 254
    functionName: sqlpool_handle_connect_failed
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sqlpool_add_connection
    - timeout_add
    - sqlpool_find_host_with_least_connections
    - sqlpool_have_successful_connections
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void sqlpool_handle_connect_failed(struct sqlpool_db *db, struct sql_db
      *conndb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_request_send_next
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:265,1
    - Dst: sqlpool_handle_connect_failed
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:271,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - conndb
    - prev_state
    - context
    argTypes:
    - struct sql_db*
    - enum sql_db_state
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 256
    functionDepth: 4
    functionLinenumber: 256
    functionLinenumberEnd: 272
    functionName: sqlpool_state_changed
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sqlpool_request_send_next
    - sqlpool_handle_connect_failed
    linkageType: ''
    returnType: void
    signature: "void sqlpool_state_changed(struct sql_db *conndb, enum sql_db_state
      prev_state,\n\t\t      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:285,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:287,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:288,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:289,1
    - Dst: struct sqlpool_db*::driver::v::init
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:290,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:291,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:293,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - db
    - host
    - host_idx
    argTypes:
    - struct sqlpool_db*
    - struct sqlpool_host*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 303
    functionName: sqlpool_add_connection
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 1
    functionsReached:
    - event_create
    - event_unref
    - array_append_space
    - e_debug
    - i_fatal
    - struct sqlpool_db*::driver::v::init
    - event_set_ptr
    - settings_event_add_list_filter_name
    linkageType: ''
    returnType: struct sqlpool_connection
    signature: "struct sqlpool_connection *\nsqlpool_add_connection(struct sqlpool_db
      *db, struct sqlpool_host *host,\n\t\t       unsigned int host_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_find_host_with_least_connections
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:311,1
    - Dst: sqlpool_add_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlpool_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 316
    functionName: sqlpool_add_new_connection
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sqlpool_add_connection
    - sqlpool_find_host_with_least_connections
    linkageType: ''
    returnType: struct sqlpool_connection
    signature: 'struct sqlpool_connection *

      sqlpool_add_new_connection(struct sqlpool_db *db)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:328,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:336,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:338,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:340,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - db
    - unwanted_host_idx
    - all_disconnected_r
    argTypes:
    - struct sqlpool_db*
    - unsigned int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 349
    functionName: sqlpool_find_available_connection
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - array_get
    - SQL_DB_IS_READY
    - sql_connect
    linkageType: ''
    returnType: struct sqlpool_connection
    signature: "struct sqlpool_connection *\nsqlpool_find_available_connection(struct
      sqlpool_db *db,\n\t\t\t\t  unsigned int unwanted_host_idx,\n\t\t\t\t  bool *all_disconnected_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_find_available_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:360,1
    - Dst: sqlpool_find_available_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:364,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:370,1
    - Dst: sqlpool_find_available_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:377,1
    - Dst: sqlpool_add_new_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:382,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:384,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:385,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - db
    - unwanted_host_idx
    - conn_r
    argTypes:
    - struct sqlpool_db*
    - unsigned int
    - struct sqlpool_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 390
    functionName: driver_sqlpool_get_connection
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sqlpool_add_new_connection
    - array_get
    - sql_connect
    - sqlpool_find_available_connection
    - SQL_DB_IS_READY
    linkageType: ''
    returnType: bool
    signature: "bool driver_sqlpool_get_connection(struct sqlpool_db *db,\n\t\t\t
      \     unsigned int unwanted_host_idx,\n\t\t\t      const struct sqlpool_connection
      **conn_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlpool_get_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:399,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:404,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - db
    - conn_r
    argTypes:
    - struct sqlpool_db*
    - struct sqlpool_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 392
    functionDepth: 4
    functionLinenumber: 392
    functionLinenumberEnd: 412
    functionName: driver_sqlpool_get_sync_connection
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - array_get
    - driver_sqlpool_get_connection
    linkageType: ''
    returnType: bool
    signature: "bool driver_sqlpool_get_sync_connection(struct sqlpool_db *db,\n\t\t\t\t
      \  const struct sqlpool_connection **conn_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:420,1
    - Dst: sql_get_flags
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - db
    - flags_r
    argTypes:
    - struct sqlpool_db*
    - enum sql_db_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 427
    functionName: driver_sqlpool_get_connected_flags
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_get_flags
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: "bool driver_sqlpool_get_connected_flags(struct sqlpool_db *db,\n\t\t\t\t
      \  enum sql_db_flags *flags_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlpool_get_connected_flags
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:436,1
    - Dst: driver_sqlpool_get_sync_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:439,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:442,1
    - Dst: sql_get_flags
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:444,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 429
    functionDepth: 5
    functionLinenumber: 429
    functionLinenumberEnd: 445
    functionName: driver_sqlpool_get_flags
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_get_flags
    - driver_sqlpool_get_sync_connection
    - driver_sqlpool_get_connected_flags
    - array_idx
    linkageType: ''
    returnType: enum sql_db_flags
    signature: enum sql_db_flags driver_sqlpool_get_flags(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_find_host_with_least_connections
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:453,1
    - Dst: sqlpool_add_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlpool_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 447
    functionDepth: 2
    functionLinenumber: 447
    functionLinenumberEnd: 458
    functionName: sqlpool_add_all_once
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sqlpool_add_connection
    - sqlpool_find_host_with_least_connections
    linkageType: ''
    returnType: void
    signature: void sqlpool_add_all_once(struct sqlpool_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:470,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:475,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:476,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:477,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:478,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:479,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:479,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:481,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:483,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:486,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:487,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - driver
    - event_parent
    - hostnames
    - connection_limit
    argTypes:
    - struct sql_db*
    - struct event*
    - ARRAY_TYPE*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 493
    functionName: driver_sqlpool_init_common
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - event_create
    - array_append_space
    - event_set_append_log_prefix
    - t_strdup_printf
    - i_strdup
    - array_count
    - i_new
    - array_append_zero
    - event_add_category
    linkageType: ''
    returnType: struct sqlpool_db
    signature: "struct sqlpool_db *\ndriver_sqlpool_init_common(const struct sql_db
      *driver,\n\t\t\t   struct event *event_parent,\n\t\t\t   const ARRAY_TYPE(const_string)
      *hostnames,\n\t\t\t   unsigned int connection_limit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:486,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 35
    functionsReached:
    - i_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(hostnames, hostname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:501,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:502,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:502,1
    - Dst: driver_sqlpool_init_common
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:505,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:507,1
    - Dst: sql_init_common
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:508,1
    - Dst: sqlpool_add_all_once
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - driver
    - event_parent
    - filter_name
    - hostnames
    - connection_limit
    argTypes:
    - struct sql_db*
    - struct event*
    - char*
    - ARRAY_TYPE*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 495
    functionDepth: 3
    functionLinenumber: 495
    functionLinenumberEnd: 513
    functionName: driver_sqlpool_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 1
    functionsReached:
    - sqlpool_add_all_once
    - sql_init_common
    - driver_sqlpool_init_common
    - i_strdup
    - array_count
    - i_assert
    linkageType: ''
    returnType: struct sql_db
    signature: "struct sql_db *driver_sqlpool_init(const struct sql_db *driver,\n\t\t\t\t
      \  struct event *event_parent,\n\t\t\t\t   const char *filter_name,\n\t\t\t\t
      \  const ARRAY_TYPE(const_string) *hostnames,\n\t\t\t\t   unsigned int connection_limit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_request_abort
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:520,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlpool_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 515
    functionDepth: 3
    functionLinenumber: 515
    functionLinenumberEnd: 523
    functionName: driver_sqlpool_abort_requests
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sqlpool_request_abort
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void driver_sqlpool_abort_requests(struct sqlpool_db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:531,1
    - Dst: sql_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:532,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:533,1
    - Dst: driver_sqlpool_abort_requests
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:535,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:537,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:538,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:540,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:540,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:541,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:542,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:543,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:544,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:545,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 525
    functionDepth: 4
    functionLinenumber: 525
    functionLinenumberEnd: 547
    functionName: driver_sqlpool_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - driver_sqlpool_abort_requests
    - event_unref
    - array_count
    - array_clear
    - array_free
    - array_foreach_modifiable
    - i_assert
    - i_free
    - sql_unref
    linkageType: ''
    returnType: void
    signature: void driver_sqlpool_deinit(struct sql_db *_db)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:555,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:557,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 564
    functionName: driver_sqlpool_connect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_connect
    - array_foreach
    linkageType: ''
    returnType: int
    signature: int driver_sqlpool_connect(struct sql_db *_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:571,1
    - Dst: sql_disconnect
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:572,1
    - Dst: driver_sqlpool_abort_requests
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 566
    functionDepth: 4
    functionLinenumber: 566
    functionLinenumberEnd: 574
    functionName: driver_sqlpool_disconnect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - driver_sqlpool_abort_requests
    - array_foreach
    - sql_disconnect
    linkageType: ''
    returnType: void
    signature: void driver_sqlpool_disconnect(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:584,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:586,1
    - Dst: sql_escape_string
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:587,1
    - Dst: sql_escape_string
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _db
    - string
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 592
    functionName: driver_sqlpool_escape_string
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - array_get
    - SQL_DB_IS_READY
    - sql_escape_string
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_sqlpool_escape_string(struct sql_db *_db, const char *string)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sql_query_finished_event
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:607,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:611,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:611,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:617,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:617,1
    - Dst: sqlpool_request_abort
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:624,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:628,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sqlpool_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 594
    functionDepth: 3
    functionLinenumber: 594
    functionLinenumberEnd: 629
    functionName: driver_sqlpool_timeout
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_query_finished_event
    - e_error
    - struct event_passthrough*::event
    - event_create_passthrough
    - sqlpool_request_abort
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void driver_sqlpool_timeout(struct sqlpool_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:635,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - db
    - request
    argTypes:
    - struct sqlpool_db*
    - struct sqlpool_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 640
    functionName: driver_sqlpool_prepend_request
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - DLLIST2_PREPEND
    linkageType: ''
    returnType: void
    signature: "void driver_sqlpool_prepend_request(struct sqlpool_db *db,\n\t\t\t
      \      struct sqlpool_request *request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:646,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - db
    - request
    argTypes:
    - struct sqlpool_db*
    - struct sqlpool_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 651
    functionName: driver_sqlpool_append_request
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - DLLIST2_APPEND
    linkageType: ''
    returnType: void
    signature: "void driver_sqlpool_append_request(struct sqlpool_db *db,\n\t\t\t
      \     struct sqlpool_request *request)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:662,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:663,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:664,1
    - Dst: driver_sqlpool_prepend_request
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:666,1
    - Dst: driver_sqlpool_get_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:668,1
    - Dst: sqlpool_request_send_next
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:671,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:675,1
    - Dst: struct sqlpool_request*::callback
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:681,1
    - Dst: sqlpool_request_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:682,1
    - Dst: sqlpool_request_send_next
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:684,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - result
    - request
    argTypes:
    - struct sql_result*
    - struct sqlpool_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 653
    functionDepth: 4
    functionLinenumber: 653
    functionLinenumberEnd: 686
    functionName: driver_sqlpool_query_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - struct sqlpool_request*::callback
    - e_error
    - e_warning
    - array_count
    - sql_result_get_error
    - driver_sqlpool_prepend_request
    - driver_sqlpool_get_connection
    - sqlpool_request_free
    - sqlpool_request_send_next
    linkageType: ''
    returnType: void
    signature: "void driver_sqlpool_query_callback(struct sql_result *result,\n\t\t\t
      \     struct sqlpool_request *request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_request_new
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:696,1
    - Dst: driver_sqlpool_get_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:700,1
    - Dst: driver_sqlpool_append_request
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:701,1
    - Dst: sql_query
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - _db
    - query
    - callback
    - context
    argTypes:
    - struct sql_db*
    - char*
    - sql_query_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 689
    functionDepth: 4
    functionLinenumber: 689
    functionLinenumberEnd: 707
    functionName: driver_sqlpool_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - driver_sqlpool_append_request
    - sql_query
    - sqlpool_request_new
    - driver_sqlpool_get_connection
    linkageType: ''
    returnType: void
    signature: "void driver_sqlpool_query(struct sql_db *_db, const char *query,\n\t\t
      \    sql_query_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlpool_query
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 709
    functionDepth: 5
    functionLinenumber: 709
    functionLinenumberEnd: 712
    functionName: driver_sqlpool_exec
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - driver_sqlpool_query
    linkageType: ''
    returnType: void
    signature: void driver_sqlpool_exec(struct sql_db *_db, const char *query)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlpool_get_sync_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:721,1
    - Dst: sql_query_s
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:726,1
    - Dst: driver_sqlpool_get_sync_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:728,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:731,1
    - Dst: sql_query_s
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:732,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 714
    functionDepth: 5
    functionLinenumber: 714
    functionLinenumberEnd: 735
    functionName: driver_sqlpool_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_result_unref
    - driver_sqlpool_get_sync_connection
    - sql_query_s
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_sqlpool_query_s(struct sql_db *_db, const char *query)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:742,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 750
    functionName: driver_sqlpool_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_new
    linkageType: ''
    returnType: struct sql_transaction_context
    signature: 'struct sql_transaction_context *

      driver_sqlpool_transaction_begin(struct sql_db *_db)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_request_abort
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:756,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:757,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:758,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sqlpool_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 752
    functionDepth: 3
    functionLinenumber: 752
    functionLinenumberEnd: 759
    functionName: driver_sqlpool_transaction_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - i_free
    - sqlpool_request_abort
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void driver_sqlpool_transaction_free(struct sqlpool_transaction_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct sqlpool_transaction_context*::callback
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:765,1
    - Dst: driver_sqlpool_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct sql_commit_result*
    - struct sqlpool_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 761
    functionDepth: 4
    functionLinenumber: 761
    functionLinenumberEnd: 767
    functionName: driver_sqlpool_commit_callback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - struct sqlpool_transaction_context*::callback
    - driver_sqlpool_transaction_free
    linkageType: ''
    returnType: void
    signature: "void driver_sqlpool_commit_callback(const struct sql_commit_result
      *result,\n\t\t\t       struct sqlpool_transaction_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlpool_request_new
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:782,1
    - Dst: driver_sqlpool_get_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:785,1
    - Dst: sqlpool_request_handle_transaction
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:786,1
    - Dst: driver_sqlpool_append_request
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:788,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - _ctx
    - callback
    - context
    argTypes:
    - struct sql_transaction_context*
    - sql_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 769
    functionDepth: 4
    functionLinenumber: 769
    functionLinenumberEnd: 789
    functionName: driver_sqlpool_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - driver_sqlpool_append_request
    - sqlpool_request_handle_transaction
    - sqlpool_request_new
    - driver_sqlpool_get_connection
    linkageType: ''
    returnType: void
    signature: "void driver_sqlpool_transaction_commit(struct sql_transaction_context
      *_ctx,\n\t\t\t\t  sql_commit_callback_t *callback,\n\t\t\t\t  void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlpool_get_sync_connection
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:804,1
    - Dst: driver_sqlpool_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:806,1
    - Dst: driver_sqlpool_new_conn_trans
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:810,1
    - Dst: sql_transaction_commit_s
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:811,1
    - Dst: driver_sqlpool_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:812,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct sql_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 791
    functionDepth: 5
    functionLinenumber: 791
    functionLinenumberEnd: 814
    functionName: driver_sqlpool_transaction_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_transaction_commit_s
    - driver_sqlpool_get_sync_connection
    - driver_sqlpool_new_conn_trans
    - driver_sqlpool_transaction_free
    linkageType: ''
    returnType: int
    signature: "int driver_sqlpool_transaction_commit_s(struct sql_transaction_context
      *_ctx,\n\t\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver_sqlpool_transaction_free
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct sql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 816
    functionDepth: 4
    functionLinenumber: 816
    functionLinenumberEnd: 823
    functionName: driver_sqlpool_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - driver_sqlpool_transaction_free
    linkageType: ''
    returnType: void
    signature: void driver_sqlpool_transaction_rollback(struct sql_transaction_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_transaction_add_query
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - query
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 825
    functionDepth: 2
    functionLinenumber: 825
    functionLinenumberEnd: 836
    functionName: driver_sqlpool_update
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_transaction_add_query
    linkageType: ''
    returnType: void
    signature: "void driver_sqlpool_update(struct sql_transaction_context *_ctx, const
      char *query,\n\t\t      unsigned int *affected_rows)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:847,1
    - Dst: SQL_DB_IS_READY
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:849,1
    - Dst: sql_escape_blob
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:850,1
    - Dst: sql_escape_blob
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:854,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - _db
    - data
    - size
    argTypes:
    - struct sql_db*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 855
    functionName: driver_sqlpool_escape_blob
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_escape_blob
    - array_get
    - SQL_DB_IS_READY
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_sqlpool_escape_blob(struct sql_db *_db,\n\t\t\t   const
      unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:862,1
    - Dst: sql_wait
      Src: /src/dovecot/src/lib-sql/driver-sqlpool.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 857
    functionDepth: 3
    functionLinenumber: 857
    functionLinenumberEnd: 864
    functionName: driver_sqlpool_wait
    functionSourceFile: /src/dovecot/src/lib-sql/driver-sqlpool.c
    functionUses: 0
    functionsReached:
    - sql_wait
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void driver_sqlpool_wait(struct sql_db *_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: DEF_SECS
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_SECS(type, name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:187,1
    - Dst: mysql_options
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:203,1
    - Dst: mysql_options
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:207,1
    - Dst: mysql_options
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:208,1
    - Dst: mysql_options
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:209,1
    - Dst: mysql_options
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:210,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:215,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:217,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:219,1
    - Dst: mysql_ssl_set
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:221,1
    - Dst: mysql_options
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:235,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:241,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:242,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:243,1
    - Dst: sql_db_set_state
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:248,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:249,1
    - Dst: time
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:255,1
    - Dst: mysql_real_connect
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:256,1
    - Dst: time
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:261,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:266,1
    - Dst: sql_db_set_state
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:270,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:271,1
    - Dst: mysql_error
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:273,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:275,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:276,1
    - Dst: mysql_error
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:276,1
    - Dst: sql_disconnect
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:277,1
    - Dst: sql_db_set_state
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:281,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 52
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 284
    functionName: driver_mysql_connect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - mysql_ssl_set
    - container_of
    - time
    - mysql_error
    - mysql_real_connect
    - sql_disconnect
    - e_debug
    - mysql_options
    - i_strdup
    - e_error
    - sql_db_set_state
    - settings_file_get
    - io_loop_time_refresh
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void driver_mysql_connect(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:288,1
    - Dst: mysql_close
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 291
    functionName: driver_mysql_disconnect
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - mysql_close
    - container_of
    linkageType: ''
    returnType: void
    signature: void driver_mysql_disconnect(struct sql_db *_db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:299,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:300,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:303,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - set
    - ssl_set
    argTypes:
    - struct mysql_settings*
    - struct ssl_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 308
    functionName: driver_mysql_db_cache_find
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - settings_equal
    linkageType: ''
    returnType: struct mysql_db_cache
    signature: "struct mysql_db_cache *\ndriver_mysql_db_cache_find(const struct mysql_settings
      *set,\n\t\t\t   const struct ssl_settings *ssl_set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:317,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:320,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:323,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:324,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:326,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:329,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:332,1
    - Dst: mysql_init
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:333,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - pool
    - event_parent
    - set
    - ssl_set
    argTypes:
    - pool_t
    - struct event*
    - struct mysql_settings*
    - struct ssl_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 336
    functionName: driver_mysql_init_from_set
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - mysql_init
    - event_create
    - p_new
    - event_set_append_log_prefix
    - i_fatal_status
    - t_strdup_printf
    - event_add_str
    - event_add_category
    linkageType: ''
    returnType: struct sql_db
    signature: "struct sql_db *\ndriver_mysql_init_from_set(pool_t pool, struct event
      *event_parent,\n\t\t\t   const struct mysql_settings *set,\n\t\t\t   const struct
      ssl_settings *ssl_set)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:347,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:350,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:352,1
    - Dst: ssl_client_settings_get
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:357,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:358,1
    - Dst: settings_file_has_path
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:364,1
    - Dst: settings_file_has_path
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:367,1
    - Dst: settings_file_has_path
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:370,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:374,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:375,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:380,1
    - Dst: driver_mysql_db_cache_find
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:383,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:385,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:386,1
    - Dst: driver_sqlpool_init
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:392,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:396,1
    - Dst: sql_ref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:401,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:408,1
    - Dst: driver_mysql_init_from_set
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:409,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:410,1
    - Dst: sql_init_common
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:411,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 3
    argNames:
    - event
    - db_r
    - error_r
    argTypes:
    - struct event*
    - struct sql_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 338
    functionDepth: 4
    functionLinenumber: 338
    functionLinenumberEnd: 413
    functionName: driver_mysql_init_v
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - driver_mysql_db_cache_find
    - event_drop_parent_log_prefixes
    - array_append_space
    - sql_init_common
    - event_get_ptr
    - settings_free
    - settings_file_has_path
    - driver_mysql_init_from_set
    - array_is_empty
    - ssl_client_settings_get
    - driver_sqlpool_init
    - sql_ref
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int driver_mysql_init_v(struct event *event, struct sql_db **db_r,\n\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:417,1
    - Dst: sql_db_set_state
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:420,1
    - Dst: driver_mysql_disconnect
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:422,1
    - Dst: sql_connection_log_finished
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:424,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:425,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:426,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:427,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:428,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 430
    functionName: driver_mysql_deinit_v
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    - event_unref
    - settings_free
    - pool_unref
    - sql_connection_log_finished
    - sql_db_set_state
    - driver_mysql_disconnect
    - array_free
    linkageType: ''
    returnType: void
    signature: void driver_mysql_deinit_v(struct sql_db *_db)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mysql_query
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:438,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:439,1
    - Dst: sql_query_finished_event
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:440,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:443,1
    - Dst: mysql_errno
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:443,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:444,1
    - Dst: mysql_error
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:444,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:445,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:445,1
    - Dst: mysql_error
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:446,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:448,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:448,1
    - Dst: mysql_errno
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:454,1
    - Dst: sql_db_set_state
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:457,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - db
    - query
    - event
    argTypes:
    - struct mysql_db*
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 432
    functionDepth: 2
    functionLinenumber: 432
    functionLinenumberEnd: 463
    functionName: driver_mysql_do_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - mysql_error
    - mysql_errno
    - e_debug
    - sql_query_finished_event
    - sql_db_set_state
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - io_loop_time_refresh
    - struct event_passthrough*::add_str
    - mysql_query
    linkageType: ''
    returnType: int
    signature: "int driver_mysql_do_query(struct mysql_db *db, const char *query,\n\t\t\t\t
      struct event *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:468,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:469,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:474,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:484,1
    - Dst: mysql_escape_string
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:485,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:486,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:490,1
    - Dst: mysql_real_escape_string
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:491,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:492,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - _db
    - string
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 494
    functionName: driver_mysql_escape_string
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    - t_buffer_get
    - mysql_escape_string
    - mysql_real_escape_string
    - strlen
    - sql_connect
    - t_buffer_alloc
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_mysql_escape_string(struct sql_db *_db, const char *string)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:498,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:499,1
    - Dst: driver_mysql_do_query
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:501,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 496
    functionDepth: 3
    functionLinenumber: 496
    functionLinenumberEnd: 504
    functionName: driver_mysql_exec
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - event_create
    - container_of
    - event_unref
    - driver_mysql_do_query
    linkageType: ''
    returnType: void
    signature: void driver_mysql_exec(struct sql_db *_db, const char *query)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:509,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:514,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:516,1
    - Dst: driver_mysql_do_query
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:518,1
    - Dst: mysql_affected_rows
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:522,1
    - Dst: mysql_store_result
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:523,1
    - Dst: mysql_next_result
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:528,1
    - Dst: mysql_errno
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:534,1
    - Dst: mysql_free_result
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:539,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - _db
    - query
    argTypes:
    - struct sql_db*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 548
    functionName: driver_mysql_query_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - event_create
    - container_of
    - mysql_affected_rows
    - mysql_store_result
    - driver_mysql_do_query
    - mysql_errno
    - mysql_free_result
    - i_new
    - mysql_next_result
    linkageType: ''
    returnType: struct sql_result
    signature: 'struct sql_result *

      driver_mysql_query_s(struct sql_db *_db, const char *query)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:553,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:555,1
    - Dst: mysql_free_result
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:560,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:561,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 563
    functionName: driver_mysql_result_free
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    - event_unref
    - mysql_free_result
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void driver_mysql_result_free(struct sql_result *_result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:568,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:569,1
    - Dst: mysql_fetch_row
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:577,1
    - Dst: mysql_errno
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:581,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 587
    functionName: driver_mysql_result_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - mysql_fetch_row
    - container_of
    - mysql_errno
    linkageType: ''
    returnType: int
    signature: int driver_mysql_result_next_row(struct sql_result *_result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mysql_num_fields
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:594,1
    - Dst: mysql_fetch_fields
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct mysql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 596
    functionName: driver_mysql_result_fetch_fields
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - mysql_num_fields
    - mysql_fetch_fields
    linkageType: ''
    returnType: void
    signature: void driver_mysql_result_fetch_fields(struct mysql_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:602,1
    - Dst: driver_mysql_result_fetch_fields
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 606
    functionName: driver_mysql_result_get_fields_count
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    - driver_mysql_result_fetch_fields
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int driver_mysql_result_get_fields_count(struct sql_result
      *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:612,1
    - Dst: driver_mysql_result_fetch_fields
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:614,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 617
    functionName: driver_mysql_result_get_field_name
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - driver_mysql_result_fetch_fields
    linkageType: ''
    returnType: char
    signature: 'char *

      driver_mysql_result_get_field_name(struct sql_result *_result, unsigned int
      idx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:623,1
    - Dst: driver_mysql_result_fetch_fields
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:626,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:628,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 632
    functionName: driver_mysql_result_find_field
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - driver_mysql_result_fetch_fields
    linkageType: ''
    returnType: int
    signature: "int driver_mysql_result_find_field(struct sql_result *_result,\n\t\t\t\t\t
      \ const char *field_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _result
    - idx
    argTypes:
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 642
    functionName: driver_mysql_result_get_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_mysql_result_get_field_value(struct sql_result *_result,\n\t\t\t\t
      \   unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:649,1
    - Dst: mysql_fetch_lengths
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - _result
    - idx
    - size_r
    argTypes:
    - struct sql_result*
    - unsigned int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 656
    functionName: driver_mysql_result_get_field_value_binary
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    - mysql_fetch_lengths
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\ndriver_mysql_result_get_field_value_binary(struct
      sql_result *_result,\n\t\t\t\t\t   unsigned int idx, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: driver_mysql_result_find_field
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:664,1
    - Dst: driver_mysql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - result
    - field_name
    argTypes:
    - struct sql_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 658
    functionDepth: 2
    functionLinenumber: 658
    functionLinenumberEnd: 668
    functionName: driver_mysql_result_find_field_value
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - driver_mysql_result_get_field_value
    - driver_mysql_result_find_field
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_mysql_result_find_field_value(struct sql_result *result,\n\t\t\t\t
      \    const char *field_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 670
    functionDepth: 1
    functionLinenumber: 670
    functionLinenumberEnd: 677
    functionName: driver_mysql_result_get_values
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: char
    signature: 'char *const *

      driver_mysql_result_get_values(struct sql_result *_result)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:681,1
    - Dst: mysql_errno
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:686,1
    - Dst: mysql_error
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:687,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:691,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 695
    functionName: driver_mysql_result_get_error
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - mysql_errno
    - mysql_error
    - container_of
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *driver_mysql_result_get_error(struct sql_result *_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:702,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:704,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 707
    functionName: driver_mysql_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - i_new
    linkageType: ''
    returnType: struct sql_transaction_context
    signature: 'struct sql_transaction_context *

      driver_mysql_transaction_begin(struct sql_db *db)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sql_query_s
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:719,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:720,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:721,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:726,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:728,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:731,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - query
    - affected_rows_r
    argTypes:
    - struct mysql_transaction_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 710
    functionDepth: 3
    functionLinenumber: 710
    functionLinenumberEnd: 733
    functionName: transaction_send_query
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    - sql_query_s
    - sql_result_get_error
    - sql_result_unref
    - i_assert
    - sql_result_next_row
    linkageType: ''
    returnType: void
    signature: "void transaction_send_query(struct mysql_transaction_context *ctx,
      const char *query,\n\t\t       unsigned int *affected_rows_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: transaction_send_query
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:741,1
    - Dst: transaction_send_query
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:751,1
    - Dst: transaction_send_query
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:756,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mysql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 735
    functionDepth: 4
    functionLinenumber: 735
    functionLinenumberEnd: 759
    functionName: driver_mysql_try_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - transaction_send_query
    linkageType: ''
    returnType: int
    signature: int driver_mysql_try_commit_s(struct mysql_transaction_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:766,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:767,1
    - Dst: driver_mysql_try_commit_s
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:773,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:774,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:776,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:778,1
    - Dst: driver_mysql_try_commit_s
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:780,1
    - Dst: sql_transaction_rollback
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:788,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct sql_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 761
    functionDepth: 5
    functionLinenumber: 761
    functionLinenumberEnd: 790
    functionName: driver_mysql_transaction_commit_s
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - driver_mysql_try_commit_s
    - e_info
    - container_of
    - sql_connect
    - sql_transaction_rollback
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int driver_mysql_transaction_commit_s(struct sql_transaction_context
      *_ctx,\n\t\t\t\t  const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:796,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:800,1
    - Dst: transaction_send_query
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:806,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:807,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:807,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:813,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:813,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:818,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:818,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:821,1
    - Dst: sql_transaction_finished_event
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:821,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:825,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:826,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:827,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct sql_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 792
    functionDepth: 4
    functionLinenumber: 792
    functionLinenumberEnd: 828
    functionName: driver_mysql_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    - event_unref
    - e_debug
    - transaction_send_query
    - pool_unref
    - event_create_passthrough
    - t_strdup
    - i_free
    - sql_transaction_finished_event
    linkageType: ''
    returnType: void
    signature: void driver_mysql_transaction_rollback(struct sql_transaction_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:835,1
    - Dst: sql_transaction_add_query
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - query
    - affected_rows
    argTypes:
    - struct sql_transaction_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 830
    functionDepth: 2
    functionLinenumber: 830
    functionLinenumberEnd: 839
    functionName: driver_mysql_update
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - container_of
    - sql_transaction_add_query
    linkageType: ''
    returnType: void
    signature: "void driver_mysql_update(struct sql_transaction_context *_ctx, const
      char *query,\n\t\t    unsigned int *affected_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:845,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:847,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:848,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:849,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - data
    - size
    argTypes:
    - struct sql_db*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 841
    functionDepth: 1
    functionLinenumber: 841
    functionLinenumberEnd: 851
    functionName: driver_mysql_escape_blob
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_append
    - binary_to_hex_append
    linkageType: ''
    returnType: char
    signature: "char *\ndriver_mysql_escape_blob(struct sql_db *_db ATTR_UNUSED,\n\t\t\t
      const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 896
    functionName: driver_mysql_result_error_next_row
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int driver_mysql_result_error_next_row(struct sql_result *result ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:911,1
    - Dst: sql_driver_register
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 909
    functionDepth: 3
    functionLinenumber: 909
    functionLinenumberEnd: 913
    functionName: driver_mysql_init
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - sql_driver_register
    linkageType: ''
    returnType: void
    signature: void driver_mysql_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:919,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:920,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:921,1
    - Dst: sql_unref
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:922,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:924,1
    - Dst: sql_driver_unregister
      Src: /src/dovecot/src/lib-sql/driver-mysql.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 915
    functionDepth: 4
    functionLinenumber: 915
    functionLinenumberEnd: 926
    functionName: driver_mysql_deinit
    functionSourceFile: /src/dovecot/src/lib-sql/driver-mysql.c
    functionUses: 0
    functionsReached:
    - sql_driver_unregister
    - settings_free
    - array_foreach_modifiable
    - array_free
    - sql_unref
    linkageType: ''
    returnType: void
    signature: void driver_mysql_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-sql/test-sql.c:12,1
    - Dst: sql_drivers_init_without_drivers
      Src: /src/dovecot/src/lib-sql/test-sql.c:19,1
    - Dst: sql_driver_test_register
      Src: /src/dovecot/src/lib-sql/test-sql.c:20,1
    - Dst: sql_init_auto
      Src: /src/dovecot/src/lib-sql/test-sql.c:22,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sql/test-sql.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql.c:26,1
    - Dst: sql_connect
      Src: /src/dovecot/src/lib-sql/test-sql.c:26,1
    - Dst: sql_disconnect
      Src: /src/dovecot/src/lib-sql/test-sql.c:27,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-sql/test-sql.c:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 30
    functionName: setup_sql
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached:
    - settings_simple_deinit
    - sql_init_auto
    - sql_drivers_init_without_drivers
    - sql_disconnect
    - i_fatal
    - sql_connect
    - sql_driver_test_register
    - settings_simple_init
    - test_assert
    linkageType: ''
    returnType: struct sql_db
    signature: struct sql_db *setup_sql(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_driver_test_clear_expected_results
      Src: /src/dovecot/src/lib-sql/test-sql.c:39,1
    - Dst: sql_unref
      Src: /src/dovecot/src/lib-sql/test-sql.c:40,1
    - Dst: sql_driver_test_unregister
      Src: /src/dovecot/src/lib-sql/test-sql.c:42,1
    - Dst: sql_drivers_deinit_without_drivers
      Src: /src/dovecot/src/lib-sql/test-sql.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _sql
    argTypes:
    - struct sql_db**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 44
    functionName: deinit_sql
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached:
    - sql_drivers_deinit_without_drivers
    - sql_driver_test_unregister
    - sql_driver_test_clear_expected_results
    - sql_unref
    linkageType: ''
    returnType: void
    signature: void deinit_sql(struct sql_db **_sql)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sql
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 62
    functionName: setup_result_1
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: setup_result_1(sql)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sql
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 79
    functionName: setup_result_2
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: setup_result_2(sql)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql.c:83,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql.c:83,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-sql/test-sql.c:84,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-sql/test-sql.c:84,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql.c:85,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql.c:85,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql.c:86,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql.c:87,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql.c:87,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-sql/test-sql.c:88,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-sql/test-sql.c:88,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql.c:89,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/lib-sql/test-sql.c:89,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sql/test-sql.c:90,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-sql/test-sql.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sql/test-sql.c:91,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-sql/test-sql.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - cursor
    argTypes:
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 81
    functionDepth: 3
    functionLinenumber: 81
    functionLinenumberEnd: 92
    functionName: test_result_1
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached:
    - sql_result_get_fields_count
    - sql_result_get_field_name
    - sql_result_get_field_value
    - test_assert_strcmp
    - test_assert
    - test_assert_ucmp
    - sql_result_next_row
    linkageType: ''
    returnType: void
    signature: void test_result_1(struct sql_result *cursor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sql/test-sql.c:96,1
    - Dst: setup_sql
      Src: /src/dovecot/src/lib-sql/test-sql.c:98,1
    - Dst: setup_result_1
      Src: /src/dovecot/src/lib-sql/test-sql.c:99,1
    - Dst: sql_query_s
      Src: /src/dovecot/src/lib-sql/test-sql.c:100,1
    - Dst: test_result_1
      Src: /src/dovecot/src/lib-sql/test-sql.c:102,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql.c:104,1
    - Dst: deinit_sql
      Src: /src/dovecot/src/lib-sql/test-sql.c:106,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sql/test-sql.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 94
    functionDepth: 5
    functionLinenumber: 94
    functionLinenumberEnd: 109
    functionName: test_sql_api
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached:
    - sql_query_s
    - setup_result_1
    - setup_sql
    - test_end
    - sql_result_unref
    - test_result_1
    - deinit_sql
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sql_api(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sql/test-sql.c:113,1
    - Dst: setup_sql
      Src: /src/dovecot/src/lib-sql/test-sql.c:115,1
    - Dst: setup_result_1
      Src: /src/dovecot/src/lib-sql/test-sql.c:116,1
    - Dst: sql_statement_init
      Src: /src/dovecot/src/lib-sql/test-sql.c:119,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/test-sql.c:120,1
    - Dst: test_result_1
      Src: /src/dovecot/src/lib-sql/test-sql.c:122,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql.c:124,1
    - Dst: deinit_sql
      Src: /src/dovecot/src/lib-sql/test-sql.c:126,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sql/test-sql.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 111
    functionDepth: 5
    functionLinenumber: 111
    functionLinenumberEnd: 128
    functionName: test_sql_stmt_api
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached:
    - sql_statement_query_s
    - setup_result_1
    - setup_sql
    - test_end
    - sql_statement_init
    - sql_result_unref
    - test_result_1
    - deinit_sql
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sql_stmt_api(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sql/test-sql.c:132,1
    - Dst: setup_sql
      Src: /src/dovecot/src/lib-sql/test-sql.c:134,1
    - Dst: setup_result_1
      Src: /src/dovecot/src/lib-sql/test-sql.c:135,1
    - Dst: sql_prepared_statement_init
      Src: /src/dovecot/src/lib-sql/test-sql.c:138,1
    - Dst: sql_statement_init_prepared
      Src: /src/dovecot/src/lib-sql/test-sql.c:140,1
    - Dst: sql_prepared_statement_unref
      Src: /src/dovecot/src/lib-sql/test-sql.c:141,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/test-sql.c:142,1
    - Dst: test_result_1
      Src: /src/dovecot/src/lib-sql/test-sql.c:144,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql.c:146,1
    - Dst: setup_result_2
      Src: /src/dovecot/src/lib-sql/test-sql.c:148,1
    - Dst: sql_prepared_statement_init
      Src: /src/dovecot/src/lib-sql/test-sql.c:150,1
    - Dst: sql_statement_init_prepared
      Src: /src/dovecot/src/lib-sql/test-sql.c:151,1
    - Dst: sql_statement_bind_str
      Src: /src/dovecot/src/lib-sql/test-sql.c:152,1
    - Dst: sql_prepared_statement_unref
      Src: /src/dovecot/src/lib-sql/test-sql.c:153,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-sql/test-sql.c:154,1
    - Dst: test_result_1
      Src: /src/dovecot/src/lib-sql/test-sql.c:156,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-sql/test-sql.c:158,1
    - Dst: deinit_sql
      Src: /src/dovecot/src/lib-sql/test-sql.c:160,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sql/test-sql.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 130
    functionDepth: 5
    functionLinenumber: 130
    functionLinenumberEnd: 162
    functionName: test_sql_stmt_prepared_api
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached:
    - sql_statement_query_s
    - setup_result_1
    - sql_statement_init_prepared
    - setup_sql
    - test_begin
    - setup_result_2
    - sql_prepared_statement_unref
    - sql_statement_bind_str
    - test_end
    - sql_result_unref
    - test_result_1
    - deinit_sql
    - sql_prepared_statement_init
    linkageType: ''
    returnType: void
    signature: void test_sql_stmt_prepared_api(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-sql/test-sql.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-sql/test-sql.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: charset_is_utf8
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:22,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:25,1
    - Dst: iconv_open
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:27,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:32,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - charset
    - normalizer
    - t_r
    argTypes:
    - char*
    - normalizer_func_t*
    - struct charset_translation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 37
    functionName: iconv_charset_to_utf8_begin
    functionSourceFile: /src/dovecot/src/lib-charset/charset-iconv.c
    functionUses: 0
    functionsReached:
    - strcmp
    - charset_is_utf8
    - iconv_open
    - i_new
    linkageType: ''
    returnType: int
    signature: "int iconv_charset_to_utf8_begin(const char *charset, normalizer_func_t
      *normalizer,\n\t\t\t    struct charset_translation **t_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: iconv_close
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:42,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct charset_translation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: iconv_charset_to_utf8_end
    functionSourceFile: /src/dovecot/src/lib-charset/charset-iconv.c
    functionUses: 0
    functionsReached:
    - iconv_close
    - i_free
    linkageType: ''
    returnType: void
    signature: void iconv_charset_to_utf8_end(struct charset_translation *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: iconv
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct charset_translation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: iconv_charset_to_utf8_reset
    functionSourceFile: /src/dovecot/src/lib-charset/charset-iconv.c
    functionUses: 0
    functionsReached:
    - iconv
    linkageType: ''
    returnType: void
    signature: void iconv_charset_to_utf8_reset(struct charset_translation *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: charset_utf8_to_utf8
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:64,1
    - Dst: iconv
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:74,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:81,1
    - Dst: charset_utf8_to_utf8
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:94,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 5
    argNames:
    - t
    - src
    - src_size
    - dest
    - result
    argTypes:
    - struct charset_translation*
    - unsigned char*
    - size_t*
    - buffer_t*
    - enum charset_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 98
    functionName: charset_to_utf8_try
    functionSourceFile: /src/dovecot/src/lib-charset/charset-iconv.c
    functionUses: 0
    functionsReached:
    - i_assert
    - iconv
    - charset_utf8_to_utf8
    linkageType: ''
    returnType: bool
    signature: "bool charset_to_utf8_try(struct charset_translation *t,\n\t\t    const
      unsigned char *src, size_t *src_size, buffer_t *dest,\n\t\t    enum charset_result
      *result)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:111,1
    - Dst: charset_to_utf8_try
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:113,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:121,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-charset/charset-iconv.c:133,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - t
    - src
    - src_size
    - dest
    argTypes:
    - struct charset_translation*
    - unsigned char*
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 136
    functionName: iconv_charset_to_utf8
    functionSourceFile: /src/dovecot/src/lib-charset/charset-iconv.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - strlen
    - i_assert
    - charset_to_utf8_try
    linkageType: ''
    returnType: enum charset_result
    signature: "enum charset_result iconv_charset_to_utf8(struct charset_translation
      *t,\n\t\t      const unsigned char *src, size_t *src_size,\n\t\t      buffer_t
      *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:14,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:15,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:16,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:17,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - charset
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 18
    functionName: charset_is_utf8
    functionSourceFile: /src/dovecot/src/lib-charset/charset-utf8.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool charset_is_utf8(const char *charset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:25,1
    - Dst: charset_to_utf8_begin
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:27,1
    - Dst: charset_to_utf8
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:30,1
    - Dst: charset_to_utf8_end
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - charset
    - normalizer
    - input
    - output
    - result_r
    argTypes:
    - char*
    - normalizer_func_t*
    - char*
    - string_t*
    - enum charset_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 34
    functionName: charset_to_utf8_str
    functionSourceFile: /src/dovecot/src/lib-charset/charset-utf8.c
    functionUses: 0
    functionsReached:
    - charset_to_utf8
    - strlen
    - charset_to_utf8_end
    - charset_to_utf8_begin
    linkageType: ''
    returnType: int
    signature: "int charset_to_utf8_str(const char *charset, normalizer_func_t *normalizer,\n\t\t\tconst
      char *input, string_t *output,\n\t\t\tenum charset_result *result_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: charset_to_utf8_begin
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:41,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - normalizer
    argTypes:
    - normalizer_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: charset_utf8_to_utf8_begin
    functionSourceFile: /src/dovecot/src/lib-charset/charset-utf8.c
    functionUses: 0
    functionsReached:
    - charset_to_utf8_begin
    - i_unreached
    linkageType: ''
    returnType: struct charset_translation
    signature: 'struct charset_translation *

      charset_utf8_to_utf8_begin(normalizer_func_t *normalizer)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:53,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:55,1
    - Dst: normalizer
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:61,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:63,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:66,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - normalizer
    - src
    - src_size
    - dest
    argTypes:
    - normalizer_func_t*
    - unsigned char*
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 69
    functionName: charset_utf8_to_utf8
    functionSourceFile: /src/dovecot/src/lib-charset/charset-utf8.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - uni_utf8_get_valid_data
    - normalizer
    - uni_utf8_partial_strlen_n
    - i_assert
    linkageType: ''
    returnType: enum charset_result
    signature: "enum charset_result charset_utf8_to_utf8(normalizer_func_t *normalizer,\n\t\t
      \    const unsigned char *src, size_t *src_size, buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_utf8_begin
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - charset
    - normalizer
    - t_r
    argTypes:
    - char*
    - normalizer_func_t*
    - struct charset_translation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: charset_to_utf8_begin
    functionSourceFile: /src/dovecot/src/lib-charset/charset-utf8.c
    functionUses: 2
    functionsReached:
    - to_utf8_begin
    linkageType: ''
    returnType: int
    signature: "int charset_to_utf8_begin(const char *charset, normalizer_func_t *normalizer,\n\t\t\t
      \ struct charset_translation **t_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_utf8_end
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _t
    argTypes:
    - struct charset_translation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 83
    functionName: charset_to_utf8_end
    functionSourceFile: /src/dovecot/src/lib-charset/charset-utf8.c
    functionUses: 1
    functionsReached:
    - to_utf8_end
    linkageType: ''
    returnType: void
    signature: void charset_to_utf8_end(struct charset_translation **_t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_utf8_reset
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct charset_translation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: charset_to_utf8_reset
    functionSourceFile: /src/dovecot/src/lib-charset/charset-utf8.c
    functionUses: 0
    functionsReached:
    - to_utf8_reset
    linkageType: ''
    returnType: void
    signature: void charset_to_utf8_reset(struct charset_translation *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_utf8
      Src: /src/dovecot/src/lib-charset/charset-utf8.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - t
    - src
    - src_size
    - dest
    argTypes:
    - struct charset_translation*
    - unsigned char*
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: charset_to_utf8
    functionSourceFile: /src/dovecot/src/lib-charset/charset-utf8.c
    functionUses: 1
    functionsReached:
    - to_utf8
    linkageType: ''
    returnType: enum charset_result
    signature: "enum charset_result charset_to_utf8(struct charset_translation *t,\n\t\tconst
      unsigned char *src, size_t *src_size, buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-charset/test-charset.c:13,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:14,1
    - Dst: charset_is_utf8
      Src: /src/dovecot/src/lib-charset/test-charset.c:14,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:15,1
    - Dst: charset_is_utf8
      Src: /src/dovecot/src/lib-charset/test-charset.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:16,1
    - Dst: charset_is_utf8
      Src: /src/dovecot/src/lib-charset/test-charset.c:16,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:17,1
    - Dst: charset_is_utf8
      Src: /src/dovecot/src/lib-charset/test-charset.c:17,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-charset/test-charset.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 19
    functionName: test_charset_is_utf8
    functionSourceFile: /src/dovecot/src/lib-charset/test-charset.c
    functionUses: 0
    functionsReached:
    - test_end
    - charset_is_utf8
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_charset_is_utf8(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-charset/test-charset.c:31,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-charset/test-charset.c:35,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-charset/test-charset.c:36,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:37,1
    - Dst: charset_to_utf8_str
      Src: /src/dovecot/src/lib-charset/test-charset.c:37,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:39,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-charset/test-charset.c:39,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-charset/test-charset.c:39,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:40,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-charset/test-charset.c:44,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-charset/test-charset.c:46,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-charset/test-charset.c:48,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-charset/test-charset.c:49,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:50,1
    - Dst: charset_to_utf8_str
      Src: /src/dovecot/src/lib-charset/test-charset.c:50,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-charset/test-charset.c:51,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-charset/test-charset.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - input_charset
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 54
    functionName: test_charset_utf8_common
    functionSourceFile: /src/dovecot/src/lib-charset/test-charset.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - test_assert_idx
    - str_truncate
    - charset_to_utf8_str
    - N_ELEMENTS
    - str_new
    - str_free
    linkageType: ''
    returnType: void
    signature: void test_charset_utf8_common(const char *input_charset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-charset/test-charset.c:58,1
    - Dst: test_charset_utf8_common
      Src: /src/dovecot/src/lib-charset/test-charset.c:59,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-charset/test-charset.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: test_charset_utf8
    functionSourceFile: /src/dovecot/src/lib-charset/test-charset.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_charset_utf8_common
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_charset_utf8(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-charset/test-charset.c:80,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-charset/test-charset.c:86,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-charset/test-charset.c:87,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-charset/test-charset.c:88,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:89,1
    - Dst: charset_to_utf8_str
      Src: /src/dovecot/src/lib-charset/test-charset.c:89,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:91,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-charset/test-charset.c:91,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-charset/test-charset.c:91,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:92,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-charset/test-charset.c:94,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:95,1
    - Dst: charset_to_utf8_begin
      Src: /src/dovecot/src/lib-charset/test-charset.c:95,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-charset/test-charset.c:96,1
    - Dst: charset_to_utf8
      Src: /src/dovecot/src/lib-charset/test-charset.c:99,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:105,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-charset/test-charset.c:105,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-charset/test-charset.c:105,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-charset/test-charset.c:106,1
    - Dst: charset_to_utf8_end
      Src: /src/dovecot/src/lib-charset/test-charset.c:107,1
    - Dst: test_charset_utf8_common
      Src: /src/dovecot/src/lib-charset/test-charset.c:111,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-charset/test-charset.c:112,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 113
    functionName: test_charset_iconv
    functionSourceFile: /src/dovecot/src/lib-charset/test-charset.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - strlen
    - charset_to_utf8_begin
    - charset_to_utf8_end
    - test_end
    - test_charset_utf8_common
    - str_truncate
    - charset_to_utf8
    - charset_to_utf8_str
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_charset_iconv(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-charset/test-charset.c:122,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-charset/test-charset.c:126,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-charset/test-charset.c:127,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-charset/test-charset.c:128,1
    - Dst: charset_to_utf8_str
      Src: /src/dovecot/src/lib-charset/test-charset.c:131,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-charset/test-charset.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 135
    functionName: test_charset_iconv_crashes
    functionSourceFile: /src/dovecot/src/lib-charset/test-charset.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - test_end
    - str_truncate
    - charset_to_utf8_str
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_charset_iconv_crashes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-charset/test-charset.c:140,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-charset/test-charset.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:145,1
    - Dst: charset_to_utf8_begin
      Src: /src/dovecot/src/lib-charset/test-charset.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:147,1
    - Dst: charset_to_utf8
      Src: /src/dovecot/src/lib-charset/test-charset.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:148,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-charset/test-charset.c:148,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-charset/test-charset.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:149,1
    - Dst: memset
      Src: /src/dovecot/src/lib-charset/test-charset.c:150,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-charset/test-charset.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:153,1
    - Dst: charset_to_utf8
      Src: /src/dovecot/src/lib-charset/test-charset.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-charset/test-charset.c:154,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-charset/test-charset.c:154,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-charset/test-charset.c:154,1
    - Dst: charset_to_utf8_end
      Src: /src/dovecot/src/lib-charset/test-charset.c:155,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-charset/test-charset.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 157
    functionName: test_charset_iconv_utf7_state
    functionSourceFile: /src/dovecot/src/lib-charset/test-charset.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - memcpy
    - charset_to_utf8_begin
    - test_end
    - test_assert
    - charset_to_utf8
    - memset
    - charset_to_utf8_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_charset_iconv_utf7_state(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-charset/test-charset.c:166,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-charset/test-charset.c:170,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-charset/test-charset.c:171,1
    - Dst: charset_to_utf8_begin
      Src: /src/dovecot/src/lib-charset/test-charset.c:173,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-charset/test-charset.c:174,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-charset/test-charset.c:177,1
    - Dst: charset_to_utf8
      Src: /src/dovecot/src/lib-charset/test-charset.c:178,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-charset/test-charset.c:181,1
    - Dst: write
      Src: /src/dovecot/src/lib-charset/test-charset.c:192,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-charset/test-charset.c:193,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-charset/test-charset.c:194,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-charset/test-charset.c:197,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-charset/test-charset.c:197,1
    - Dst: charset_to_utf8_end
      Src: /src/dovecot/src/lib-charset/test-charset.c:198,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-charset/test-charset.c:199,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-charset/test-charset.c:200,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-charset/test-charset.c:203,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-charset/test-charset.c:207,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 2
    argNames:
    - charset
    - path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 211
    functionName: convert
    functionSourceFile: /src/dovecot/src/lib-charset/test-charset.c
    functionUses: 0
    functionsReached:
    - i_stream_create_fd
    - i_error
    - buffer_create_dynamic
    - i_fatal
    - i_stream_create_file
    - charset_to_utf8_begin
    - write
    - i_stream_skip
    - buffer_set_used_size
    - i_stream_get_error
    - charset_to_utf8
    - buffer_free
    - charset_to_utf8_end
    - i_stream_read_bytes
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int convert(const char *charset, const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert
      Src: /src/dovecot/src/lib-charset/test-charset.c:228,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-charset/test-charset.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 231
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-charset/test-charset.c
    functionUses: 0
    functionsReached:
    - convert
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:62,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:65,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:66,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:67,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:68,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:73,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - ufetch
    argTypes:
    - struct imap_urlauth_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 78
    functionName: imap_urlauth_fetch_abort_local
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_url_free
    - i_free_and_null
    - i_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_fetch_abort_local(struct imap_urlauth_fetch *ufetch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_request_abort_by_context
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:83,1
    - Dst: imap_urlauth_fetch_abort_local
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:85,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ufetch
    argTypes:
    - struct imap_urlauth_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: imap_urlauth_fetch_abort
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - i_assert
    - imap_urlauth_request_abort_by_context
    - imap_urlauth_fetch_abort_local
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_fetch_abort(struct imap_urlauth_fetch *ufetch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_fetch_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ufetch
    argTypes:
    - struct imap_urlauth_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: imap_urlauth_fetch_fail
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_fetch_abort
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_fetch_fail(struct imap_urlauth_fetch *ufetch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - uctx
    - callback
    - context
    argTypes:
    - struct imap_urlauth_context*
    - imap_urlauth_fetch_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 108
    functionName: imap_urlauth_fetch_init
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 1
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct imap_urlauth_fetch
    signature: "struct imap_urlauth_fetch *\nimap_urlauth_fetch_init(struct imap_urlauth_context
      *uctx,\n\t\t\timap_urlauth_fetch_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ufetch
    argTypes:
    - struct imap_urlauth_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: imap_urlauth_fetch_ref
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_fetch_ref(struct imap_urlauth_fetch *ufetch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:120,1
    - Dst: imap_urlauth_fetch_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:127,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:129,1
    - Dst: imap_urlauth_connection_continue
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:133,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _ufetch
    argTypes:
    - struct imap_urlauth_fetch**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 135
    functionName: imap_urlauth_fetch_unref
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_connection_continue
    - i_assert
    - i_free
    - imap_urlauth_fetch_abort
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_fetch_unref(struct imap_urlauth_fetch **_ufetch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_fetch_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ufetch
    argTypes:
    - struct imap_urlauth_fetch**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: imap_urlauth_fetch_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 2
    functionsReached:
    - imap_urlauth_fetch_unref
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_fetch_deinit(struct imap_urlauth_fetch **_ufetch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:152,1
    - Dst: struct imap_urlauth_fetch*::callback
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - ufetch
    - url
    - url_flags
    - error
    argTypes:
    - struct imap_urlauth_fetch*
    - char*
    - enum imap_urlauth_fetch_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 161
    functionName: imap_urlauth_fetch_error
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - struct imap_urlauth_fetch*::callback
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_fetch_error(struct imap_urlauth_fetch *ufetch, const
      char *url,\n\t\t\t enum imap_urlauth_fetch_flags url_flags,\n\t\t\t const char
      *error)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:181,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:188,1
    - Dst: imap_urlauth_fetch
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:195,1
    - Dst: imap_urlauth_fetch_parsed
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:198,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:202,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:204,1
    - Dst: imap_msgpart_url_set_decode_to_binary
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:210,1
    - Dst: imap_msgpart_url_get_bodypartstructure
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:213,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:216,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:219,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:225,1
    - Dst: imap_msgpart_url_read_part
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:228,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:230,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:233,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:240,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:245,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:247,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:257,1
    - Dst: struct imap_urlauth_fetch*::callback
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:268,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:277,1
    - Dst: imap_urlauth_fetch_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:279,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 4
    argNames:
    - ufetch
    - url
    - url_flags
    - imap_url
    argTypes:
    - struct imap_urlauth_fetch*
    - char*
    - enum imap_urlauth_fetch_flags
    - struct imap_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 171
    functionDepth: 4
    functionLinenumber: 171
    functionLinenumberEnd: 281
    functionName: imap_urlauth_fetch_local
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imap_urlauth_fetch_fail
    - imap_urlauth_fetch
    - e_debug
    - imap_msgpart_url_free
    - imap_urlauth_fetch_parsed
    - t_strdup_printf
    - imap_msgpart_url_read_part
    - imap_msgpart_url_get_bodypartstructure
    - imap_msgpart_url_set_decode_to_binary
    - HAS_ALL_BITS
    - struct imap_urlauth_fetch*::callback
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_fetch_local(struct imap_urlauth_fetch *ufetch, const
      char *url,\n\t\t\t enum imap_urlauth_fetch_flags url_flags,\n\t\t\t struct imap_url
      *imap_url)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:292,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:293,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:296,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:297,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:300,1
    - Dst: imap_urlauth_fetch_ref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:312,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:318,1
    - Dst: struct imap_urlauth_fetch*::callback
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:321,1
    - Dst: imap_urlauth_fetch_abort_local
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:327,1
    - Dst: imap_urlauth_fetch_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:334,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imap_urlauth_fetch_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 283
    functionDepth: 4
    functionLinenumber: 283
    functionLinenumberEnd: 336
    functionName: imap_urlauth_fetch_request_callback
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_stream_ref
    - imap_urlauth_fetch_ref
    - i_strdup
    - imap_urlauth_fetch_abort_local
    - struct imap_urlauth_fetch*::callback
    - i_assert
    - imap_urlauth_fetch_unref
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_fetch_request_callback(struct imap_urlauth_fetch_reply
      *reply,\n\t\t\t\t    void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_url_parse
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:349,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:350,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:352,1
    - Dst: imap_urlauth_fetch_ref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:354,1
    - Dst: imap_urlauth_fetch_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:355,1
    - Dst: imap_urlauth_fetch_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:356,1
    - Dst: imap_urlauth_fetch_url_parsed
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ufetch
    - url
    - url_flags
    argTypes:
    - struct imap_urlauth_fetch*
    - char*
    - enum imap_urlauth_fetch_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 338
    functionDepth: 4
    functionLinenumber: 338
    functionLinenumberEnd: 361
    functionName: imap_urlauth_fetch_url
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 1
    functionsReached:
    - imap_urlauth_fetch_error
    - e_debug
    - t_strdup_printf
    - imap_urlauth_fetch_url_parsed
    - imap_urlauth_fetch_ref
    - imap_url_parse
    - imap_urlauth_fetch_unref
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_fetch_url(struct imap_urlauth_fetch *ufetch, const
      char *url,\n\t\t\t   enum imap_urlauth_fetch_flags url_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_fetch_ref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:375,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:379,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:384,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:385,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:388,1
    - Dst: imap_urlauth_fetch_local
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - ufetch
    - url
    - imap_url
    - url_flags
    argTypes:
    - struct imap_urlauth_fetch*
    - char*
    - struct imap_url*
    - enum imap_urlauth_fetch_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 363
    functionDepth: 5
    functionLinenumber: 363
    functionLinenumberEnd: 396
    functionName: imap_urlauth_fetch_url_parsed
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 1
    functionsReached:
    - strcmp
    - DLLIST2_APPEND
    - imap_urlauth_fetch_local
    - imap_urlauth_fetch_ref
    - i_strdup
    - i_new
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_fetch_url_parsed(struct imap_urlauth_fetch *ufetch,\n\t\t\t\t
      \ const char *url, struct imap_url *imap_url,\n\t\t\t\t  enum imap_urlauth_fetch_flags
      url_flags)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_continue
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:440,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:446,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:456,1
    - Dst: struct imap_urlauth_fetch*::callback
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:466,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:470,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:472,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:474,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:476,1
    - Dst: imap_urlauth_fetch_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:479,1
    - Dst: imap_urlauth_connection_continue
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:490,1
    - Dst: imap_urlauth_fetch_local
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:498,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:501,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:503,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:504,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 60
    argCount: 1
    argNames:
    - ufetch
    argTypes:
    - struct imap_urlauth_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 421
    functionDepth: 5
    functionLinenumber: 421
    functionLinenumberEnd: 508
    functionName: imap_urlauth_fetch_do_continue
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imap_urlauth_fetch_fail
    - imap_msgpart_url_free
    - imap_urlauth_fetch_local
    - DLLIST2_REMOVE
    - i_stream_unref
    - imap_urlauth_connection_continue
    - struct imap_urlauth_fetch*::callback
    - i_free
    linkageType: ''
    returnType: bool
    signature: bool imap_urlauth_fetch_do_continue(struct imap_urlauth_fetch *ufetch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_fetch_ref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:517,1
    - Dst: imap_urlauth_fetch_do_continue
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:518,1
    - Dst: imap_urlauth_fetch_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ufetch
    argTypes:
    - struct imap_urlauth_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 513
    functionDepth: 6
    functionLinenumber: 513
    functionLinenumberEnd: 522
    functionName: imap_urlauth_fetch_continue
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 1
    functionsReached:
    - imap_urlauth_fetch_do_continue
    - imap_urlauth_fetch_unref
    - imap_urlauth_fetch_ref
    linkageType: ''
    returnType: bool
    signature: bool imap_urlauth_fetch_continue(struct imap_urlauth_fetch *ufetch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ufetch
    argTypes:
    - struct imap_urlauth_fetch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 527
    functionName: imap_urlauth_fetch_is_pending
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_urlauth_fetch_is_pending(struct imap_urlauth_fetch *ufetch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:137,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:141,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:142,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:143,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:145,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:150,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:151,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - path
    - service
    - user
    - session_id
    - idle_timeout_msecs
    argTypes:
    - char*
    - char*
    - struct mail_user*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 157
    functionName: imap_urlauth_connection_init
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - connection_list_init
    - event_create
    - connection_init_client_unix
    - event_set_append_log_prefix
    - i_strdup
    - i_new
    linkageType: ''
    returnType: struct imap_urlauth_connection
    signature: "struct imap_urlauth_connection *\nimap_urlauth_connection_init(const
      char *path, const char *service,\n\t\t\t     struct mail_user *user, const char
      *session_id,\n\t\t\t     unsigned int idle_timeout_msecs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:165,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:167,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:168,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:170,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:172,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:173,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:174,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:176,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:177,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:178,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct imap_urlauth_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 182
    functionName: imap_urlauth_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_free
    - imap_urlauth_connection_abort
    - i_assert
    - connection_deinit
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_deinit(struct imap_urlauth_connection
      **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: imap_urlauth_stop_response_timeout
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_stop_response_timeout(struct imap_urlauth_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_stop_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:193,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: imap_urlauth_start_response_timeout
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - imap_urlauth_stop_response_timeout
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_start_response_timeout(struct imap_urlauth_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:205,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:210,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:211,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - target_user
    argTypes:
    - struct imap_urlauth_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 214
    functionName: imap_urlauth_connection_get_target
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_strdup
    - DLLIST2_APPEND
    - i_new
    linkageType: ''
    returnType: struct imap_urlauth_target
    signature: "struct imap_urlauth_target *\nimap_urlauth_connection_get_target(struct
      imap_urlauth_connection *conn,\n\t\t\t\t   const char *target_user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:220,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:221,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - target
    argTypes:
    - struct imap_urlauth_connection*
    - struct imap_urlauth_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 223
    functionName: imap_urlauth_target_free
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    - i_free
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_target_free(struct imap_urlauth_connection *conn,\n\t\t\t
      struct imap_urlauth_target *target)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:234,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:237,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:237,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:238,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:239,1
    - Dst: imap_urlauth_connection_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:241,1
    - Dst: imap_urlauth_start_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:244,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 245
    functionName: imap_urlauth_connection_select_target
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_start_response_timeout
    - e_debug
    - o_stream_send_str
    - t_strdup_printf
    - str_tabescape
    - e_warning
    - imap_urlauth_connection_fail
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_select_target(struct imap_urlauth_connection
      *conn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:257,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:259,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:261,1
    - Dst: imap_urlauth_connection_select_target
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:268,1
    - Dst: imap_urlauth_target_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:281,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:283,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:284,1
    - Dst: imap_urlauth_connection_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:286,1
    - Dst: imap_urlauth_start_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:288,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:292,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:294,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:295,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:296,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:298,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:300,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:302,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:303,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:306,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:306,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:306,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:307,1
    - Dst: imap_urlauth_connection_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:309,1
    - Dst: imap_urlauth_start_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:312,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 247
    functionDepth: 4
    functionLinenumber: 247
    functionLinenumberEnd: 313
    functionName: imap_urlauth_connection_send_request
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - imap_urlauth_start_response_timeout
    - str_append_c
    - imap_urlauth_connection_fail
    - str_data
    - e_debug
    - o_stream_send_str
    - timeout_add
    - str_len
    - e_warning
    - str_append_tabescaped
    - o_stream_send
    - imap_urlauth_connection_select_target
    - str_append
    - imap_urlauth_target_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_send_request(struct imap_urlauth_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_get_target
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:325,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:327,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:328,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:334,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:336,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:338,1
    - Dst: imap_urlauth_connection_send_request
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 6
    argNames:
    - conn
    - target_user
    - url
    - flags
    - callback
    - context
    argTypes:
    - struct imap_urlauth_connection*
    - char*
    - char*
    - enum imap_urlauth_fetch_flags
    - imap_urlauth_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 315
    functionDepth: 5
    functionLinenumber: 315
    functionLinenumberEnd: 343
    functionName: imap_urlauth_request_new
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - DLLIST2_APPEND
    - imap_urlauth_connection_get_target
    - e_debug
    - i_strdup
    - i_new
    - imap_urlauth_connection_send_request
    - timeout_remove
    linkageType: ''
    returnType: struct imap_urlauth_request
    signature: "struct imap_urlauth_request *\nimap_urlauth_request_new(struct imap_urlauth_connection
      *conn,\n\t\t\t const char *target_user, const char *url,\n\t\t\t enum imap_urlauth_fetch_flags
      flags,\n\t\t\t imap_urlauth_request_callback_t *callback,\n\t\t\t void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:349,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:350,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:351,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - urlreq
    argTypes:
    - struct imap_urlauth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 353
    functionName: imap_urlauth_request_free
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    - i_free
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_request_free(struct imap_urlauth_request *urlreq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_request_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:367,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - urlreq
    argTypes:
    - struct imap_urlauth_connection*
    - struct imap_urlauth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 369
    functionName: imap_urlauth_request_drop
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_request_free
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_request_drop(struct imap_urlauth_connection *conn,\n\t\t\t
      \ struct imap_urlauth_request *urlreq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - urlreq
    argTypes:
    - struct imap_urlauth_connection*
    - struct imap_urlauth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 382
    functionName: imap_urlauth_request_abort
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - callback
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_request_abort(struct imap_urlauth_connection *conn,\n\t\t\t\tstruct
      imap_urlauth_request *urlreq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:399,1
    - Dst: callback
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - conn
    - urlreq
    - error
    argTypes:
    - struct imap_urlauth_connection*
    - struct imap_urlauth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 408
    functionName: imap_urlauth_request_fail
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - callback
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_request_fail(struct imap_urlauth_connection *conn,\n\t\t\t
      \ struct imap_urlauth_request *urlreq,\n\t\t\t  const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_request_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:431,1
    - Dst: imap_urlauth_target_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - target
    argTypes:
    - struct imap_urlauth_connection*
    - struct imap_urlauth_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 436
    functionName: imap_urlauth_target_abort
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_target_free
    - imap_urlauth_request_abort
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_target_abort(struct imap_urlauth_connection *conn,\n\t\t\t
      \ struct imap_urlauth_target *target)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_request_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:447,1
    - Dst: imap_urlauth_target_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - conn
    - target
    - error
    argTypes:
    - struct imap_urlauth_connection*
    - struct imap_urlauth_target*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 452
    functionName: imap_urlauth_target_fail
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_target_free
    - imap_urlauth_request_fail
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_target_fail(struct imap_urlauth_connection *conn,\n\t\t\t
      struct imap_urlauth_target *target, const char *error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_request_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:466,1
    - Dst: imap_urlauth_target_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:471,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - target
    - context
    argTypes:
    - struct imap_urlauth_connection*
    - struct imap_urlauth_target*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 472
    functionName: imap_urlauth_target_abort_by_context
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_target_free
    - imap_urlauth_request_abort
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_target_abort_by_context(struct imap_urlauth_connection
      *conn,\n\t\t\t\t     struct imap_urlauth_target *target,\n\t\t\t\t     void
      *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_disconnect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:482,1
    - Dst: imap_urlauth_target_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct imap_urlauth_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 474
    functionDepth: 3
    functionLinenumber: 474
    functionLinenumberEnd: 491
    functionName: imap_urlauth_connection_abort
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 1
    functionsReached:
    - imap_urlauth_connection_disconnect
    - imap_urlauth_target_abort
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_connection_abort(struct imap_urlauth_connection
      *conn,\n\t\t\t      const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_target_abort_by_context
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - context
    argTypes:
    - struct imap_urlauth_connection*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 493
    functionDepth: 3
    functionLinenumber: 493
    functionLinenumberEnd: 505
    functionName: imap_urlauth_request_abort_by_context
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 1
    functionsReached:
    - imap_urlauth_target_abort_by_context
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_request_abort_by_context(struct imap_urlauth_connection
      *conn,\n\t\t\t\t\t   void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:510,1
    - Dst: imap_urlauth_connection_reconnect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 507
    functionDepth: 4
    functionLinenumber: 507
    functionLinenumberEnd: 515
    functionName: imap_urlauth_connection_fail
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 2
    functionsReached:
    - imap_urlauth_connection_abort
    - imap_urlauth_connection_reconnect
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_fail(struct imap_urlauth_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:524,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:525,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:526,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:528,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:529,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:534,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:534,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:536,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - path_r
    argTypes:
    - struct imap_urlauth_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 542
    functionName: imap_urlauth_connection_create_temp_fd
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mail_user_set_get_temp_prefix
    - i_close_fd
    - i_unlink
    - e_error
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_connection_create_temp_fd(struct imap_urlauth_connection
      *conn,\n\t\t\t\t       const char **path_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:550,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:556,1
    - Dst: imap_urlauth_connection_create_temp_fd
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:561,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:564,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - size
    argTypes:
    - struct imap_urlauth_connection*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 544
    functionDepth: 2
    functionLinenumber: 544
    functionLinenumberEnd: 571
    functionName: imap_urlauth_connection_read_literal_init
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - imap_urlauth_connection_create_temp_fd
    - buffer_create_dynamic
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_connection_read_literal_init(struct imap_urlauth_connection
      *conn,\n\t\t\t\t\t  uoff_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:575,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:576,1
    - Dst: imap_urlauth_request_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:582,1
    - Dst: imap_urlauth_connection_send_request
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 573
    functionDepth: 5
    functionLinenumber: 573
    functionLinenumberEnd: 585
    functionName: imap_urlauth_connection_continue
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 2
    functionsReached:
    - imap_urlauth_request_free
    - i_assert
    - imap_urlauth_connection_send_request
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_continue(struct imap_urlauth_connection
      *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:594,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:601,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:602,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:607,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:608,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:610,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:619,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:625,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:629,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 631
    functionName: imap_urlauth_connection_read_literal_data
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - write_full
    - i_stream_get_data
    - i_stream_skip
    - e_error
    - i_assert
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_connection_read_literal_data(struct imap_urlauth_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 636
    functionName: literal_stream_destroy
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void literal_stream_destroy(buffer_t *buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:648,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:650,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:652,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:653,1
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:655,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:660,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:661,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:662,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:663,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct imap_urlauth_connection*
    - struct imap_urlauth_fetch_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 638
    functionDepth: 4
    functionLinenumber: 638
    functionLinenumberEnd: 669
    functionName: imap_urlauth_fetch_reply_set_literal_stream
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_connection_abort
    - buffer_get_data
    - i_stream_create_from_data
    - i_stream_add_destroy_callback
    - e_error
    - i_stream_get_size
    - i_stream_create_fd_autoclose
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_fetch_reply_set_literal_stream(\n\tstruct imap_urlauth_connection
      *conn,\n\tstruct imap_urlauth_fetch_reply *reply)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:679,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:680,1
    - Dst: imap_urlauth_connection_read_literal_data
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:683,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:687,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:690,1
    - Dst: imap_urlauth_fetch_reply_set_literal_stream
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:697,1
    - Dst: callback
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:707,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 671
    functionDepth: 5
    functionLinenumber: 671
    functionLinenumberEnd: 708
    functionName: imap_urlauth_connection_read_literal
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imap_urlauth_connection_read_literal_data
    - imap_urlauth_fetch_reply_set_literal_stream
    - callback
    - i_assert
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_connection_read_literal(struct imap_urlauth_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:735,1
    - Dst: imap_urlauth_connection_disconnect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:739,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:743,1
    - Dst: imap_urlauth_connection_reconnect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 748
    functionName: imap_urlauth_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_connection_disconnect
    - container_of
    - imap_urlauth_connection_reconnect
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_destroy(struct connection *_conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:756,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:757,1
    - Dst: imap_urlauth_connection_read_literal
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:762,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:767,1
    - Dst: imap_urlauth_stop_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:769,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:771,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:773,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:774,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:778,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:779,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:783,1
    - Dst: imap_urlauth_request_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:787,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:791,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:792,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:801,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:803,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:810,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:811,1
    - Dst: imap_urlauth_connection_read_literal_init
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:818,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:821,1
    - Dst: imap_urlauth_connection_read_literal
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:822,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 750
    functionDepth: 6
    functionLinenumber: 750
    functionLinenumberEnd: 823
    functionName: imap_urlauth_input_pending
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strsplit_tabescaped
    - i_stream_next_line
    - imap_urlauth_stop_response_timeout
    - strcasecmp
    - imap_urlauth_request_fail
    - e_error
    - str_sanitize
    - str_begins_icase
    - str_to_uoff
    - i_strdup
    - i_assert
    - imap_urlauth_connection_read_literal_init
    - imap_urlauth_connection_read_literal
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_input_pending(struct imap_urlauth_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:831,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:832,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:833,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:834,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:836,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:837,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:838,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:839,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:840,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:840,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:840,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:841,1
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 825
    functionDepth: 4
    functionLinenumber: 825
    functionLinenumberEnd: 848
    functionName: imap_urlauth_authenticate
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - imap_urlauth_connection_abort
    - e_warning
    - str_append_tabescaped
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_authenticate(struct imap_urlauth_connection *conn)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:856,1
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:859,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:860,1
    - Dst: imap_urlauth_connection_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:861,1
    - Dst: imap_urlauth_authenticate
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:864,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:874,1
    - Dst: imap_urlauth_stop_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:876,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:878,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:880,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:883,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:885,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:888,1
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:890,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:895,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:898,1
    - Dst: imap_urlauth_connection_select_target
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:903,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:906,1
    - Dst: imap_urlauth_stop_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:908,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:910,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:912,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:913,1
    - Dst: imap_urlauth_target_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:915,1
    - Dst: imap_urlauth_connection_select_target
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:919,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:922,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:923,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:927,1
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:928,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:932,1
    - Dst: imap_urlauth_connection_send_request
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:935,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:940,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:943,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:945,1
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:946,1
    - Dst: imap_urlauth_input_pending
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:949,1
    - Dst: imap_urlauth_connection_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:950,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:955,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 74
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 850
    functionDepth: 7
    functionLinenumber: 850
    functionLinenumberEnd: 956
    functionName: imap_urlauth_input_next
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_input_pending
    - imap_urlauth_authenticate
    - i_unreached
    - t_strsplit_tabescaped
    - e_debug
    - i_stream_next_line
    - imap_urlauth_stop_response_timeout
    - imap_urlauth_connection_abort
    - strcasecmp
    - e_error
    - str_sanitize
    - imap_urlauth_target_fail
    - imap_urlauth_connection_send_request
    - imap_urlauth_connection_select_target
    - connection_handshake_args_default
    - i_assert
    - imap_urlauth_connection_fail
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_input_next(struct imap_urlauth_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:961,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:963,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:967,1
    - Dst: imap_urlauth_connection_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:968,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:972,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:975,1
    - Dst: imap_urlauth_connection_fail
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:976,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:980,1
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:981,1
    - Dst: imap_urlauth_input_next
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:986,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 958
    functionDepth: 8
    functionLinenumber: 958
    functionLinenumberEnd: 989
    functionName: imap_urlauth_connection_input
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - imap_urlauth_input_next
    - imap_urlauth_connection_abort
    - e_error
    - i_stream_read
    - i_assert
    - imap_urlauth_connection_fail
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_input(struct connection *_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:995,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:998,1
    - Dst: imap_urlauth_start_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 991
    functionDepth: 3
    functionLinenumber: 991
    functionLinenumberEnd: 1001
    functionName: imap_urlauth_connection_connected
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - imap_urlauth_start_response_timeout
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_connected(struct connection *_conn, bool
      success)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_send_request
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1007,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1014,1
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1017,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1021,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1023,1
    - Dst: imap_urlauth_start_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1026,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1028,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1029,1
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1031,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1003
    functionDepth: 5
    functionLinenumber: 1003
    functionLinenumberEnd: 1035
    functionName: imap_urlauth_connection_do_connect
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - connection_client_connect
    - imap_urlauth_start_response_timeout
    - e_debug
    - imap_urlauth_connection_abort
    - e_error
    - imap_urlauth_connection_send_request
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_connection_do_connect(struct imap_urlauth_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_do_connect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1042,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1037
    functionDepth: 6
    functionLinenumber: 1037
    functionLinenumberEnd: 1044
    functionName: imap_urlauth_connection_connect
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_connection_do_connect
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_connection_connect(struct imap_urlauth_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1054,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1056,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1058,1
    - Dst: close
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1063,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1064,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1067,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1071,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1072,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1073,1
    - Dst: imap_urlauth_stop_response_timeout
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1074,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct imap_urlauth_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1046
    functionDepth: 2
    functionLinenumber: 1046
    functionLinenumberEnd: 1075
    functionName: imap_urlauth_connection_disconnect
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 2
    functionsReached:
    - e_debug
    - i_free_and_null
    - imap_urlauth_stop_response_timeout
    - e_error
    - buffer_free
    - timeout_remove
    - close
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_connection_disconnect(struct imap_urlauth_connection
      *conn,\n\t\t\t\t   const char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1081,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1088,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1089,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1091,1
    - Dst: imap_urlauth_connection_do_connect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1096,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1077
    functionDepth: 6
    functionLinenumber: 1077
    functionLinenumberEnd: 1098
    functionName: imap_urlauth_connection_do_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - timeout_add
    - imap_urlauth_connection_abort
    - timeout_remove
    - imap_urlauth_connection_do_connect
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_do_reconnect(struct imap_urlauth_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_disconnect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1103,1
    - Dst: imap_urlauth_connection_do_reconnect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1100
    functionDepth: 7
    functionLinenumber: 1100
    functionLinenumberEnd: 1110
    functionName: imap_urlauth_connection_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 2
    functionsReached:
    - imap_urlauth_connection_disconnect
    - imap_urlauth_connection_do_reconnect
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_reconnect(struct imap_urlauth_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_disconnect
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1112
    functionDepth: 3
    functionLinenumber: 1112
    functionLinenumberEnd: 1116
    functionName: imap_urlauth_connection_idle_disconnect
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_connection_disconnect
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_idle_disconnect(struct imap_urlauth_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_abort
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c:1121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1118
    functionDepth: 4
    functionLinenumber: 1118
    functionLinenumberEnd: 1122
    functionName: imap_urlauth_connection_timeout_abort
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_connection_abort
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_timeout_abort(struct imap_urlauth_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1124
    functionDepth: 0
    functionLinenumber: 1124
    functionLinenumberEnd: 1128
    functionName: imap_urlauth_connection_is_connected
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_urlauth_connection_is_connected(struct imap_urlauth_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:25,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:26,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:31,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:36,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:37,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:39,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:41,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:44,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - box
    - mailbox_key_r
    - client_error_r
    - error_code_r
    argTypes:
    - struct mailbox*
    - unsigned char[]
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 50
    functionName: imap_urlauth_backend_trans_set_mailbox_key
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c
    functionUses: 0
    functionsReached:
    - i_zero
    - random_fill
    - mailbox_get_last_error
    - mailbox_open
    - mailbox_attribute_set
    - mailbox_transaction_begin
    - mailbox_transaction_commit
    - binary_to_hex
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_backend_trans_set_mailbox_key(struct mailbox *box,\n\t\t\t\t\t
      \  unsigned char mailbox_key_r[IMAP_URLAUTH_KEY_LEN],\n\t\t\t\t\t   const char
      **client_error_r,\n\t\t\t\t\t   enum mail_error *error_code_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:67,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:72,1
    - Dst: imap_urlauth_backend_trans_set_mailbox_key
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:79,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:86,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:89,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:92,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:93,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:95,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 5
    argNames:
    - box
    - create
    - mailbox_key_r
    - client_error_r
    - error_code_r
    argTypes:
    - struct mailbox*
    - bool
    - unsigned char[]
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 101
    functionName: imap_urlauth_backend_trans_get_mailbox_key
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_backend_trans_set_mailbox_key
    - e_debug
    - hex_to_binary
    - strlen
    - e_error
    - mailbox_attribute_get
    - buffer_create_from_data
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_backend_trans_get_mailbox_key(struct mailbox *box,\n\t\t\t\t\t
      \  bool create,\n\t\t\t\t\t   unsigned char mailbox_key_r[IMAP_URLAUTH_KEY_LEN],\n\t\t\t\t\t
      \  const char **client_error_r,\n\t\t\t\t\t   enum mail_error *error_code_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_backend_trans_get_mailbox_key
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - box
    - create
    - mailbox_key_r
    - client_error_r
    - error_code_r
    argTypes:
    - struct mailbox*
    - bool
    - unsigned char[]
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: imap_urlauth_backend_get_mailbox_key
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_backend_trans_get_mailbox_key
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_backend_get_mailbox_key(struct mailbox *box, bool
      create,\n\t\t\t\t\t unsigned char mailbox_key_r[IMAP_URLAUTH_KEY_LEN],\n\t\t\t\t\t
      const char **client_error_r,\n\t\t\t\t\t enum mail_error *error_code_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:122,1
    - Dst: mailbox_attribute_unset
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:124,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 129
    functionName: imap_urlauth_backend_reset_mailbox_key
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_transaction_commit
    - mailbox_attribute_unset
    - mailbox_transaction_begin
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_backend_reset_mailbox_key(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:136,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:137,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:140,1
    - Dst: imap_urlauth_backend_reset_mailbox_key
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 145
    functionName: imap_urlauth_backend_mailbox_reset_key
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c
    functionUses: 0
    functionsReached:
    - e_error
    - imap_urlauth_backend_reset_mailbox_key
    - mailbox_open
    - mailbox_get_last_internal_error
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_backend_mailbox_reset_key(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:155,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:160,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:161,1
    - Dst: imap_urlauth_backend_mailbox_reset_key
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:162,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:164,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:166,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:167,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c:169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 173
    functionName: imap_urlauth_backend_reset_all_keys
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_last_internal_error
    - mailbox_free
    - mailbox_list_iter_deinit
    - mailbox_list_iter_next
    - imap_urlauth_backend_mailbox_reset_key
    - e_error
    - mailbox_alloc
    - mailbox_list_iter_init_namespaces
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_backend_reset_all_keys(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - mpurl_r
    - ATTR_UNUSED
    argTypes:
    - struct mail_user*
    - struct imap_url*
    - struct imap_msgpart_url**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: imap_msgpart_url_create
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_create(struct mail_user *user ATTR_UNUSED,\n\t\t\t
      \   const struct imap_url *url ATTR_UNUSED,\n\t\t\t    struct imap_msgpart_url
      **mpurl_r,\n\t\t\t    const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct imap_msgpart_url**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: imap_msgpart_url_free
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_msgpart_url_free(struct imap_msgpart_url **mpurl ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct imap_msgpart_url*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: imap_msgpart_url_verify
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_verify(struct imap_msgpart_url *mpurl ATTR_UNUSED,\n\t\t\t
      \   const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct imap_msgpart_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: imap_msgpart_url_get_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox
    signature: struct mailbox *imap_msgpart_url_get_mailbox(struct imap_msgpart_url
      *mpurl ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - box_r
    - error_code_r ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct imap_msgpart_url*
    - struct mailbox**
    - enum mail_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: imap_msgpart_url_open_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int imap_msgpart_url_open_mailbox(struct imap_msgpart_url *mpurl ATTR_UNUSED,\n\t\t\t\t
      \ struct mailbox **box_r,\n\t\t\t\t  enum mail_error *error_code_r ATTR_UNUSED,\n\t\t\t\t
      \ const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - key_r
    - client_error_r ATTR_UNUSED
    - error_code_r ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - bool
    - unsigned char[]
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 58
    functionName: imap_urlauth_backend_get_mailbox_key
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_backend_get_mailbox_key(struct mailbox *box ATTR_UNUSED,\n\t\t\t\t\t
      bool create ATTR_UNUSED,\n\t\t\t\t\t unsigned char key_r[IMAP_URLAUTH_KEY_LEN],\n\t\t\t\t\t
      const char **client_error_r ATTR_UNUSED,\n\t\t\t\t\t enum mail_error *error_code_r
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: imap_urlauth_backend_reset_mailbox_key
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_backend_reset_mailbox_key(struct mailbox *box ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: imap_urlauth_backend_reset_all_keys
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_backend_reset_all_keys(struct mail_user *user ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - username_r ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct auth_master_connection*
    - char*
    - struct auth_user_info*
    - pool_t
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 78
    functionName: auth_master_user_lookup
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int auth_master_user_lookup(struct auth_master_connection *conn ATTR_UNUSED,\n\t\t\t
      \   const char *user ATTR_UNUSED,\n\t\t\t    const struct auth_user_info *info
      ATTR_UNUSED,\n\t\t\t    pool_t pool ATTR_UNUSED,\n\t\t\t    const char **username_r
      ATTR_UNUSED,\n\t\t\t    const char *const **fields_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - session_id ATTR_UNUSED
    - idle_timeout_msecs ATTR_UNUSED
    argTypes:
    - char*
    - char*
    - struct mail_user*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 89
    functionName: imap_urlauth_connection_init
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct imap_urlauth_connection
    signature: "struct imap_urlauth_connection *\nimap_urlauth_connection_init(const
      char *path ATTR_UNUSED,\n\t\t\t     const char *service ATTR_UNUSED,\n\t\t\t
      \    struct mail_user *user ATTR_UNUSED,\n\t\t\t     const char *session_id
      ATTR_UNUSED,\n\t\t\t     unsigned int idle_timeout_msecs ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imap_urlauth_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: imap_urlauth_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_connection_deinit(struct imap_urlauth_connection
      **conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:116,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:118,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:121,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:122,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:126,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:127,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:128,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:132,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:133,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:134,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:138,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:139,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:140,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:144,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:145,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:146,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:150,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:151,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:152,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:157,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:158,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:159,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:164,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:165,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:166,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:171,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:172,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:173,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:175,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:176,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:181,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:182,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:183,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:188,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:189,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:194,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:195,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:196,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:198,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:199,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:209,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:210,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:213,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:214,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:215,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:220,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:221,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:222,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:228,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:229,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:231,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:232,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:233,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:238,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:239,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:249,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:250,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:254,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:255,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:259,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:260,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:261,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:265,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:266,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:267,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:270,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:271,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:272,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:274,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:275,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:283,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:284,1
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:287,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:288,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:289,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 134
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 292
    functionName: test_imap_urlauth_check
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_check
    - test_assert_strcmp
    - test_end
    - test_out
    - time
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_urlauth_check(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:309,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:312,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:313,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:314,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:317,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:318,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:319,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:322,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:323,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:324,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:327,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:328,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:329,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:333,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:334,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:335,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:340,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:341,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:342,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:346,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:347,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:348,1
    - Dst: imap_urlauth_generate
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:351,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:352,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:354,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 355
    functionName: test_imap_urlauth_generate
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - imap_urlauth_generate
    - test_end
    - test_out
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_urlauth_generate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:388,1
    - Dst: imap_urlauth_fetch_parsed
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:392,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:393,1
    - Dst: imap_urlauth_fetch
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:397,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:398,1
    - Dst: imap_urlauth_fetch
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:401,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:403,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:405,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 406
    functionName: test_imap_urlauth_fetch
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_fetch
    - imap_urlauth_fetch_parsed
    - test_end
    - test_out
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_urlauth_fetch(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:414,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:415,1
    - Dst: imap_urlauth_reset_mailbox_key
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:415,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:416,1
    - Dst: imap_urlauth_reset_all_keys
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:416,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 418
    functionName: test_imap_urlauth_reset_keys
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_out
    - imap_urlauth_reset_all_keys
    - imap_urlauth_reset_mailbox_key
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_urlauth_reset_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 430
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:38,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:40,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:42,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:46,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:48,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:49,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:54,1
    - Dst: imap_urlauth_connection_init
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:62,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - user
    - config
    argTypes:
    - struct mail_user*
    - struct imap_urlauth_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 67
    functionName: imap_urlauth_init
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 1
    functionsReached:
    - p_strarray_dup
    - imap_urlauth_connection_init
    - i_strdup
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct imap_urlauth_context
    signature: "struct imap_urlauth_context *\nimap_urlauth_init(struct mail_user
      *user,\n\t\t  const struct imap_urlauth_config *config)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_connection_deinit
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:76,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:77,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:78,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:79,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:80,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _uctx
    argTypes:
    - struct imap_urlauth_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 82
    functionName: imap_urlauth_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 1
    functionsReached:
    - imap_urlauth_connection_deinit
    - i_free
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_deinit(struct imap_urlauth_context **_uctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:93,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:96,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:97,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:97,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - rumpurl
    - mailbox_key
    - token_len_r
    argTypes:
    - char*
    - unsigned char[]
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 102
    functionName: imap_urlauth_internal_generate
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - t_new
    - hmac_update
    - strlen
    - hmac_final
    - hmac_init
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\nimap_urlauth_internal_generate(\n\tconst char *rumpurl,\n\tconst
      unsigned char mailbox_key[IMAP_URLAUTH_KEY_LEN],\n\tsize_t *token_len_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_internal_generate
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:116,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - rumpurl
    - mailbox_key
    - token
    - token_len
    argTypes:
    - char*
    - unsigned char[]
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 123
    functionName: imap_urlauth_internal_verify
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_internal_generate
    - mem_equals_timing_safe
    linkageType: ''
    returnType: bool
    signature: "bool imap_urlauth_internal_verify(\n\tconst char *rumpurl,\n\tconst
      unsigned char mailbox_key[IMAP_URLAUTH_KEY_LEN],\n\tconst unsigned char *token,
      size_t token_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:139,1
    - Dst: strncasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:146,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - uctx
    - url
    - access_applications
    argTypes:
    - struct imap_urlauth_context*
    - struct imap_url*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 161
    functionName: access_applications_have_access
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - strlen
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: "bool access_applications_have_access(struct imap_urlauth_context *uctx,\n\t\t\t\tconst
      struct imap_url *url,\n\t\t\t\tconst char *const *access_applications)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:175,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:178,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:185,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:188,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:193,1
    - Dst: access_applications_have_access
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:197,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:201,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:203,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:205,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:206,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:214,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:221,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:224,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:228,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 46
    argCount: 4
    argNames:
    - uctx
    - url
    - ignore_unknown
    - client_error_r
    argTypes:
    - struct imap_urlauth_context*
    - struct imap_url*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 234
    functionName: imap_urlauth_check_access
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - access_applications_have_access
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool imap_urlauth_check_access(struct imap_urlauth_context *uctx,\n\t\t\t
      \ const struct imap_url *url, bool ignore_unknown,\n\t\t\t  const char **client_error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:245,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:246,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:250,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - uctx
    - url
    - client_error_r
    argTypes:
    - struct imap_urlauth_context*
    - struct imap_url*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 263
    functionName: imap_urlauth_check_hostport
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - net_ip2addr
    linkageType: ''
    returnType: bool
    signature: "bool imap_urlauth_check_hostport(struct imap_urlauth_context *uctx,\n\t\t\t
      \   const struct imap_url *url,\n\t\t\t    const char **client_error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:278,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:281,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:288,1
    - Dst: auth_master_user_lookup
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:289,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:298,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:302,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - uctx
    - url_userid
    - client_error_r
    argTypes:
    - struct imap_urlauth_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 306
    functionName: imap_urlauth_verify_url_userid
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - auth_master_user_lookup
    - i_zero
    - t_strdup_printf
    - pool_unref
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_verify_url_userid(struct imap_urlauth_context *uctx,\n\t\t\t
      \      const char *url_userid,\n\t\t\t       const char **client_error_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:327,1
    - Dst: imap_url_parse
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:333,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:334,1
    - Dst: time
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:347,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:351,1
    - Dst: imap_urlauth_verify_url_userid
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:366,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:379,1
    - Dst: imap_urlauth_check_hostport
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:386,1
    - Dst: imap_msgpart_url_create
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:390,1
    - Dst: imap_msgpart_url_verify
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:391,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:392,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:394,1
    - Dst: imap_msgpart_url_get_mailbox
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:397,1
    - Dst: imap_urlauth_backend_get_mailbox_key
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:400,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:403,1
    - Dst: imap_urlauth_internal_generate
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:407,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:409,1
    - Dst: imap_url_add_urlauth
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:411,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 56
    argCount: 5
    argNames:
    - uctx
    - mechanism
    - rumpurl
    - urlauth_r
    - client_error_r
    argTypes:
    - struct imap_urlauth_context*
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 413
    functionName: imap_urlauth_generate
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 2
    functionsReached:
    - imap_url_add_urlauth
    - imap_urlauth_check_hostport
    - time
    - imap_msgpart_url_get_mailbox
    - imap_msgpart_url_free
    - t_strdup_printf
    - strcasecmp
    - imap_urlauth_backend_get_mailbox_key
    - imap_msgpart_url_create
    - imap_urlauth_verify_url_userid
    - imap_msgpart_url_verify
    - imap_url_parse
    - imap_urlauth_internal_generate
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_generate(struct imap_urlauth_context *uctx,\n\t\t\t
      \ const char *mechanism, const char *rumpurl,\n\t\t\t  const char **urlauth_r,
      const char **client_error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:434,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:435,1
    - Dst: time
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:443,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:446,1
    - Dst: imap_urlauth_check_access
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:452,1
    - Dst: imap_urlauth_check_hostport
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:456,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 4
    argNames:
    - uctx
    - url
    - ignore_unknown_access
    - client_error_r
    argTypes:
    - struct imap_urlauth_context*
    - struct imap_url*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 459
    functionName: imap_urlauth_check
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 1
    functionsReached:
    - imap_urlauth_check_access
    - imap_urlauth_check_hostport
    - t_strdup_printf
    - strcasecmp
    - time
    linkageType: ''
    returnType: bool
    signature: "bool imap_urlauth_check(struct imap_urlauth_context *uctx,\n\t\t\tconst
      struct imap_url *url, bool ignore_unknown_access,\n\t\t\tconst char **client_error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_check
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:479,1
    - Dst: imap_urlauth_verify_url_userid
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:491,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:504,1
    - Dst: imap_msgpart_url_create
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:512,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:513,1
    - Dst: imap_msgpart_url_open_mailbox
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:518,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:520,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:530,1
    - Dst: imap_urlauth_internal_verify
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:531,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:534,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:535,1
    - Dst: imap_urlauth_backend_get_mailbox_key
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:540,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:543,1
    - Dst: imap_urlauth_internal_verify
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:548,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:553,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:559,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 57
    argCount: 5
    argNames:
    - uctx
    - url
    - mpurl_r
    - error_code_r
    - client_error_r
    argTypes:
    - struct imap_urlauth_context*
    - struct imap_url*
    - struct imap_msgpart_url**
    - enum mail_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 562
    functionName: imap_urlauth_fetch_parsed
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 2
    functionsReached:
    - imap_urlauth_check
    - random_fill
    - imap_urlauth_internal_verify
    - imap_msgpart_url_free
    - imap_msgpart_url_open_mailbox
    - t_strdup_printf
    - imap_urlauth_backend_get_mailbox_key
    - imap_msgpart_url_create
    - imap_urlauth_verify_url_userid
    - safe_memset
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_fetch_parsed(struct imap_urlauth_context *uctx,\n\t\t\t
      \     const struct imap_url *url,\n\t\t\t      struct imap_msgpart_url **mpurl_r,\n\t\t\t
      \     enum mail_error *error_code_r,\n\t\t\t      const char **client_error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_url_parse
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:574,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:575,1
    - Dst: imap_urlauth_fetch_parsed
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - uctx
    - urlauth
    - mpurl_r
    - error_code_r
    - client_error_r
    argTypes:
    - struct imap_urlauth_context*
    - char*
    - struct imap_msgpart_url**
    - enum mail_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 564
    functionDepth: 4
    functionLinenumber: 564
    functionLinenumberEnd: 582
    functionName: imap_urlauth_fetch
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 2
    functionsReached:
    - imap_urlauth_fetch_parsed
    - imap_url_parse
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_fetch(struct imap_urlauth_context *uctx,\n\t\t       const
      char *urlauth, struct imap_msgpart_url **mpurl_r,\n\t\t       enum mail_error
      *error_code_r,\n\t\t       const char **client_error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_backend_reset_mailbox_key
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - box
    argTypes:
    - struct imap_urlauth_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 588
    functionName: imap_urlauth_reset_mailbox_key
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 2
    functionsReached:
    - imap_urlauth_backend_reset_mailbox_key
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_reset_mailbox_key(\n\tstruct imap_urlauth_context
      *uctx ATTR_UNUSED, struct mailbox *box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_backend_reset_all_keys
      Src: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uctx
    argTypes:
    - struct imap_urlauth_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 593
    functionName: imap_urlauth_reset_all_keys
    functionSourceFile: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
    functionUses: 2
    functionsReached:
    - imap_urlauth_backend_reset_all_keys
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_reset_all_keys(struct imap_urlauth_context *uctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - struct mail_transaction_expunge_guid*
    - struct mail_transaction_expunge_guid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 19
    functionName: mail_transaction_expunge_guid_cmp
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_expunge_guid_cmp(const struct mail_transaction_expunge_guid
      *e1,\n\t\t\t\t      const struct mail_transaction_expunge_guid *e2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 28
    functionName: mail_index_transaction_sort_expunges
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - array_sort
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_sort_expunges(struct mail_index_transaction
      *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:38,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:42,1
    - Dst: mail_index_ext_set_reset_id
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:47,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:54,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:57,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - t
    - ext_id
    - expected_reset_id
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 62
    functionName: ext_reset_update_atomic
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - array_idx_modifiable
    - array_idx
    - mail_index_map_get_ext_idx
    - mail_index_ext_set_reset_id
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void ext_reset_update_atomic(struct mail_index_transaction *t,\n\t\t\tuint32_t
      ext_id, uint32_t expected_reset_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:70,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:73,1
    - Dst: ext_reset_update_atomic
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 80
    functionName: transaction_update_atomic_reset_ids
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - ext_reset_update_atomic
    linkageType: ''
    returnType: void
    signature: void transaction_update_atomic_reset_ids(struct mail_index_transaction
      *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:91,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:99,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - t
    - update
    - update_idx
    - keeps
    argTypes:
    - struct mail_index_transaction*
    - struct mail_index_flag_update
    - unsigned int
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 108
    functionName: mail_transaction_drop_range
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - array_insert
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int mail_transaction_drop_range(struct mail_index_transaction
      *t,\n\t\t\t    struct mail_index_flag_update update,\n\t\t\t    unsigned int
      update_idx,\n\t\t\t    ARRAY_TYPE(seq_range) *keeps)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:116,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:119,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:122,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:123,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:127,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:129,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:133,1
    - Dst: mail_transaction_drop_range
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:136,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:137,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:140,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:141,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 142
    functionName: mail_index_transaction_finish_flag_updates
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - array_get
    - mail_transaction_drop_range
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - mail_index_lookup
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_finish_flag_updates(struct mail_index_transaction
      *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:150,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:151,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:153,1
    - Dst: mail_index_modseq_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:163,1
    - Dst: mail_index_cancel_flag_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:164,1
    - Dst: mail_index_cancel_keyword_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:165,1
    - Dst: seq_range_array_add_with_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:167,1
    - Dst: mail_index_transaction_set_log_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:172,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 173
    functionName: mail_index_transaction_check_conflicts
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - mail_index_modseq_get_highest
    - seq_range_array_add_with_init
    - mail_index_modseq_lookup
    - mail_index_transaction_set_log_updates
    - mail_index_cancel_flag_updates
    - i_assert
    - mail_index_cancel_keyword_updates
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_check_conflicts(struct mail_index_transaction
      *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:180,1
    - Dst: mail_index_transaction_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:183,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:185,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 190
    functionName: mail_index_transaction_get_uid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - mail_index_transaction_lookup
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_index_transaction_get_uid(struct mail_index_transaction
      *t, uint32_t seq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:199,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:202,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:204,1
    - Dst: mail_index_transaction_get_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - t
    - array
    argTypes:
    - struct mail_index_transaction*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 207
    functionName: mail_index_convert_to_uids
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    - array_idx_modifiable
    - mail_index_transaction_get_uid
    linkageType: ''
    returnType: void
    signature: "void mail_index_convert_to_uids(struct mail_index_transaction *t,\n\t\t\t
      \  ARRAY_TYPE(seq_array) *array)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_get_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - t
    - uid1
    - seq1
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 220
    functionName: get_nonexpunged_uid2
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_get_uid
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t get_nonexpunged_uid2(struct mail_index_transaction *t,\n\t\t
      \    uint32_t uid1, uint32_t seq1)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:229,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:232,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:234,1
    - Dst: mail_index_transaction_get_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:236,1
    - Dst: mail_index_transaction_get_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:237,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:238,1
    - Dst: array_insert_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:246,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:247,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:250,1
    - Dst: get_nonexpunged_uid2
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:252,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:254,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - t
    - array
    argTypes:
    - struct mail_index_transaction*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 261
    functionName: mail_index_transaction_seq_range_to_uid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - memcpy
    - array_insert_space
    - mail_index_transaction_get_uid
    - array_idx_modifiable
    - get_nonexpunged_uid2
    - array_count
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_transaction_seq_range_to_uid(struct mail_index_transaction
      *t,\n\t\t\t\t\t     ARRAY_TYPE(seq_range) *array)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:267,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:270,1
    - Dst: mail_index_transaction_seq_range_to_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:271,1
    - Dst: mail_index_transaction_seq_range_to_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 263
    functionDepth: 4
    functionLinenumber: 263
    functionLinenumberEnd: 274
    functionName: keyword_updates_convert_to_uids
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - mail_index_transaction_seq_range_to_uid
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void keyword_updates_convert_to_uids(struct mail_index_transaction
      *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:281,1
    - Dst: mail_index_transaction_sort_expunges
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:284,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:286,1
    - Dst: mail_index_transaction_get_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:291,1
    - Dst: mail_index_transaction_get_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:294,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:297,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:303,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 304
    functionName: expunges_convert_to_uids
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - memcpy
    - array_delete
    - mail_index_transaction_get_uid
    - array_get_modifiable
    - mail_index_transaction_sort_expunges
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void expunges_convert_to_uids(struct mail_index_transaction *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:309,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:311,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:312,1
    - Dst: mail_index_convert_to_uids
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:313,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:315,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:316,1
    - Dst: mail_index_convert_to_uids
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:317,1
    - Dst: keyword_updates_convert_to_uids
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:320,1
    - Dst: expunges_convert_to_uids
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:321,1
    - Dst: mail_index_convert_to_uids
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:322,1
    - Dst: mail_index_transaction_seq_range_to_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 306
    functionDepth: 5
    functionLinenumber: 306
    functionLinenumberEnd: 324
    functionName: mail_index_transaction_convert_to_uids
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - mail_index_convert_to_uids
    - keyword_updates_convert_to_uids
    - ARRAY_TYPE
    - array_foreach_modifiable
    - mail_index_transaction_seq_range_to_uid
    - array_is_created
    - expunges_convert_to_uids
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_convert_to_uids(struct mail_index_transaction
      *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:328,1
    - Dst: mail_index_transaction_sort_appends
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:329,1
    - Dst: mail_index_transaction_finish_flag_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:330,1
    - Dst: mail_index_transaction_check_conflicts
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 326
    functionDepth: 3
    functionLinenumber: 326
    functionLinenumberEnd: 333
    functionName: mail_index_transaction_finish_so_far
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - mail_index_transaction_check_conflicts
    - mail_index_transaction_finish_flag_updates
    - mail_index_transaction_sort_appends
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_finish_so_far(struct mail_index_transaction
      *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_finish_so_far
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:337,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:339,1
    - Dst: mail_index_update_day_headers
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:340,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:341,1
    - Dst: transaction_update_atomic_reset_ids
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:342,1
    - Dst: mail_index_transaction_convert_to_uids
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:345,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-index/mail-index-transaction-finish.c:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 335
    functionDepth: 6
    functionLinenumber: 335
    functionLinenumberEnd: 350
    functionName: mail_index_transaction_finish
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_convert_to_uids
    - mail_index_update_modseq
    - mail_index_transaction_finish_so_far
    - mail_index_update_day_headers
    - array_is_created
    - transaction_update_atomic_reset_ids
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_finish(struct mail_index_transaction *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - file
    - idx
    argTypes:
    - struct mail_transaction_log_file*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 21
    functionName: modseq_cache_hit
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c
    functionUses: 0
    functionsReached:
    - memmove
    linkageType: ''
    returnType: struct modseq_cache
    signature: 'struct modseq_cache *

      modseq_cache_hit(struct mail_transaction_log_file *file, unsigned int idx)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:28,1
    - Dst: modseq_cache_hit
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:37,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - file
    - offset
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 48
    functionName: modseq_cache_get_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c
    functionUses: 0
    functionsReached:
    - modseq_cache_hit
    - N_ELEMENTS
    linkageType: ''
    returnType: struct modseq_cache
    signature: 'struct modseq_cache *

      modseq_cache_get_offset(struct mail_transaction_log_file *file, uoff_t offset)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:55,1
    - Dst: modseq_cache_hit
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:64,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - file
    - modseq
    argTypes:
    - struct mail_transaction_log_file*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 75
    functionName: modseq_cache_get_modseq
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c
    functionUses: 0
    functionsReached:
    - modseq_cache_hit
    - N_ELEMENTS
    linkageType: ''
    returnType: struct modseq_cache
    signature: 'struct modseq_cache *

      modseq_cache_get_modseq(struct mail_transaction_log_file *file, uint64_t modseq)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:85,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:90,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:93,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - file
    - offset
    - hdr_r
    - error_r
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t*
    - struct mail_transaction_header**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 103
    functionName: log_get_synced_record
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - mail_index_offset_to_uint32
    - CONST_PTR_OFFSET
    - mail_transaction_log_file_set_corrupted
    linkageType: ''
    returnType: int
    signature: "int log_get_synced_record(struct mail_transaction_log_file *file,
      uoff_t *offset,\n\t\t      const struct mail_transaction_header **hdr_r,\n\t\t
      \     const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:117,1
    - Dst: modseq_cache_get_offset
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:124,1
    - Dst: mail_transaction_log_file_map
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:152,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:161,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:162,1
    - Dst: log_get_synced_record
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:164,1
    - Dst: mail_transaction_update_modseq
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:166,1
    - Dst: MAIL_TRANSACTION_LOG_HDR_VERSION
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:167,1
    - Dst: memmove
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:171,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:173,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 4
    argNames:
    - file
    - offset
    - highest_modseq_r
    - error_r
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 179
    functionName: mail_transaction_log_file_get_highest_modseq_at
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c
    functionUses: 0
    functionsReached:
    - MAIL_TRANSACTION_LOG_HDR_VERSION
    - mail_transaction_update_modseq
    - modseq_cache_get_offset
    - memmove
    - t_strdup_printf
    - mail_transaction_log_file_map
    - i_assert
    - N_ELEMENTS
    - log_get_synced_record
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_get_highest_modseq_at(\n\t\tstruct mail_transaction_log_file
      *file,\n\t\tuoff_t offset, uint64_t *highest_modseq_r,\n\t\tconst char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_file_map
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:194,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:196,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:209,1
    - Dst: log_get_synced_record
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:211,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:212,1
    - Dst: mail_transaction_update_modseq
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:216,1
    - Dst: MAIL_TRANSACTION_LOG_HDR_VERSION
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 6
    argNames:
    - file
    - modseq
    - use_highest
    - cur_offset
    - cur_modseq
    - next_offset_r
    argTypes:
    - struct mail_transaction_log_file*
    - uint64_t
    - bool
    - uoff_t*
    - uint64_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 222
    functionName: get_modseq_next_offset_at
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c
    functionUses: 0
    functionsReached:
    - MAIL_TRANSACTION_LOG_HDR_VERSION
    - mail_transaction_update_modseq
    - mail_transaction_log_file_map
    - i_assert
    - mail_index_set_error
    - log_get_synced_record
    linkageType: ''
    returnType: int
    signature: "int get_modseq_next_offset_at(struct mail_transaction_log_file *file,\n\t\t\t
      \ uint64_t modseq, bool use_highest,\n\t\t\t  uoff_t *cur_offset, uint64_t *cur_modseq,\n\t\t\t
      \ uoff_t *next_offset_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: modseq_cache_get_modseq
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:242,1
    - Dst: get_modseq_next_offset_at
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:257,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:263,1
    - Dst: get_modseq_next_offset_at
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:270,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:275,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:279,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:283,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:286,1
    - Dst: memmove
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:290,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c:292,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 3
    argNames:
    - file
    - modseq
    - next_offset_r
    argTypes:
    - struct mail_transaction_log_file*
    - uint64_t
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 298
    functionName: mail_transaction_log_file_get_modseq_next_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c
    functionUses: 0
    functionsReached:
    - modseq_cache_get_modseq
    - memmove
    - i_strdup
    - get_modseq_next_offset_at
    - memset
    - i_assert
    - mail_index_set_error
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_get_modseq_next_offset(\n\t\tstruct
      mail_transaction_log_file *file,\n\t\tuint64_t modseq, uoff_t *next_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:19,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:24,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - log
    - file
    argTypes:
    - struct mail_transaction_log*
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 26
    functionName: mail_transaction_log_set_head
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_set_head(struct mail_transaction_log *log,\n\t\t\t
      \     struct mail_transaction_log_file *file)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: mail_transaction_log_alloc
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct mail_transaction_log
    signature: 'struct mail_transaction_log *

      mail_transaction_log_alloc(struct mail_index *index)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:43,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:47,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:52,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:61,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 77
    functionName: mail_transaction_log_2_unlink_old
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - nfs_safe_stat
    - i_unlink_if_exists
    - mail_index_set_error
    - MAIL_INDEX_IS_IN_MEMORY
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_2_unlink_old(struct mail_transaction_log
      *log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:85,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:86,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:87,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:89,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:92,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:94,1
    - Dst: mail_transaction_log_file_alloc
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:97,1
    - Dst: mail_transaction_log_file_open
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:98,1
    - Dst: mail_transaction_log_set_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 105
    functionName: mail_transaction_log_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_transaction_log_file_free
    - mail_transaction_log_file_alloc
    - i_strconcat
    - mail_transaction_log_set_head
    - mail_transaction_log_file_open
    - i_free
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_open(struct mail_transaction_log *log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:111,1
    - Dst: mail_transaction_log_file_alloc_in_memory
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:112,1
    - Dst: mail_transaction_log_set_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:113,1
    - Dst: mail_transaction_log_file_alloc
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:117,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:125,1
    - Dst: mail_transaction_log_file_create
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:128,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:129,1
    - Dst: mail_transaction_log_set_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - log
    - reset
    argTypes:
    - struct mail_transaction_log*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 135
    functionName: mail_transaction_log_create
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_file_alloc_in_memory
    - mail_transaction_log_file_create
    - mail_transaction_log_file_free
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_transaction_log_file_alloc
    - mail_transaction_log_set_head
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_create(struct mail_transaction_log *log, bool
      reset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:139,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:142,1
    - Dst: mail_transaction_logs_clean
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:145,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: mail_transaction_log_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - mail_transaction_logs_clean
    - i_assert
    - mail_transaction_log_file_free
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_close(struct mail_transaction_log *log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_close
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:155,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:157,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:158,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _log
    argTypes:
    - struct mail_transaction_log**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 160
    functionName: mail_transaction_log_free
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - i_free
    - mail_transaction_log_close
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_free(struct mail_transaction_log **_log)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_close
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:170,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:173,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:174,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:175,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:177,1
    - Dst: mail_transaction_log_file_move_to_memory
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:180,1
    - Dst: mail_transaction_log_file_alloc_in_memory
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:182,1
    - Dst: mail_transaction_log_set_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 186
    functionName: mail_transaction_log_move_to_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_file_alloc_in_memory
    - mail_transaction_log_set_head
    - mail_transaction_log_close
    - i_strconcat
    - mail_transaction_log_file_move_to_memory
    - i_free
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_move_to_memory(struct mail_transaction_log
      *log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:198,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:202,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:208,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 209
    functionName: mail_transaction_logs_clean
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 1
    functionsReached:
    - i_assert
    - mail_transaction_log_file_free
    linkageType: ''
    returnType: void
    signature: void mail_transaction_logs_clean(struct mail_transaction_log *log)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:217,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:225,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:233,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:245,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - log
    - reason_r
    argTypes:
    - struct mail_transaction_log*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 252
    functionName: mail_transaction_log_want_rotate
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - t_strdup
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool mail_transaction_log_want_rotate(struct mail_transaction_log
      *log,\n\t\t\t\t      const char **reason_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:261,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:263,1
    - Dst: mail_transaction_log_file_alloc_in_memory
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:264,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:272,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:273,1
    - Dst: mail_transaction_log_file_alloc
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:278,1
    - Dst: mail_transaction_log_file_create
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:285,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:286,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:290,1
    - Dst: file_lock_method_to_str
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:293,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:294,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:297,1
    - Dst: mail_transaction_log_set_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:301,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:303,1
    - Dst: mail_transaction_log_file_unlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:307,1
    - Dst: mail_transaction_logs_clean
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:311,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 2
    argNames:
    - log
    - reset
    argTypes:
    - struct mail_transaction_log*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 313
    functionName: mail_transaction_log_rotate
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_file_alloc_in_memory
    - mail_transaction_log_file_create
    - file_lock_method_to_str
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_transaction_log_file_alloc
    - mail_transaction_log_file_free
    - mail_index_file_set_syscall_error
    - e_debug
    - mail_transaction_logs_clean
    - fstat
    - mail_transaction_log_file_unlock
    - mail_transaction_log_set_head
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_rotate(struct mail_transaction_log *log, bool
      reset)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:321,1
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:323,1
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:330,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:331,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:333,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:336,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:349,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - log
    - nfs_flush
    - reason_r
    argTypes:
    - struct mail_transaction_log*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 359
    functionName: mail_transaction_log_has_changed
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - mail_index_file_set_syscall_error
    - t_strdup_printf
    - nfs_flush_file_handle_cache
    - CMP_DEV_T
    - nfs_safe_stat
    - i_assert
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_has_changed(struct mail_transaction_log *log,\n\t\t\t\t
      \    bool nfs_flush,\n\t\t\t\t     const char **reason_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_has_changed
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:367,1
    - Dst: mail_transaction_log_file_alloc
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:371,1
    - Dst: mail_transaction_log_file_open
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:372,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:373,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:375,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:379,1
    - Dst: mail_transaction_log_set_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:382,1
    - Dst: mail_transaction_logs_clean
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - log
    - nfs_flush
    - reason_r
    argTypes:
    - struct mail_transaction_log*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 387
    functionName: mail_transaction_log_refresh
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_transaction_log_has_changed
    - mail_transaction_log_file_free
    - mail_transaction_log_file_alloc
    - t_strdup_printf
    - mail_transaction_logs_clean
    - mail_transaction_log_set_head
    - mail_transaction_log_file_open
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_refresh(struct mail_transaction_log *log,
      bool nfs_flush,\n\t\t\t     const char **reason_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - log
    - file_seq_r
    - file_offset_r
    argTypes:
    - struct mail_transaction_log*
    - uint32_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 395
    functionName: mail_transaction_log_get_mailbox_sync_pos
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_get_mailbox_sync_pos(struct mail_transaction_log
      *log,\n\t\t\t\t\t       uint32_t *file_seq_r,\n\t\t\t\t\t       uoff_t *file_offset_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:401,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - log
    - file_seq
    - file_offset
    argTypes:
    - struct mail_transaction_log*
    - uint32_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 406
    functionName: mail_transaction_log_set_mailbox_sync_pos
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_set_mailbox_sync_pos(struct mail_transaction_log
      *log,\n\t\t\t\t\t       uint32_t file_seq,\n\t\t\t\t\t       uoff_t file_offset)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_refresh
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:426,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:433,1
    - Dst: mail_transaction_log_refresh
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:438,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:439,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:444,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:466,1
    - Dst: mail_transaction_log_file_alloc
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:472,1
    - Dst: mail_transaction_log_file_open
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:473,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:474,1
    - Dst: mail_transaction_log_file_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:476,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:482,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 5
    argNames:
    - log
    - file_seq
    - nfs_flush
    - file_r
    - reason_r
    argTypes:
    - struct mail_transaction_log*
    - uint32_t
    - bool
    - struct mail_transaction_log_file**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 408
    functionDepth: 3
    functionLinenumber: 408
    functionLinenumberEnd: 489
    functionName: mail_transaction_log_find_file
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_transaction_log_file_alloc
    - mail_transaction_log_file_free
    - t_strdup_printf
    - mail_transaction_log_refresh
    - mail_transaction_log_file_open
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_find_file(struct mail_transaction_log *log,\n\t\t\t\t
      \  uint32_t file_seq, bool nfs_flush,\n\t\t\t\t   struct mail_transaction_log_file
      **file_r,\n\t\t\t\t   const char **reason_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:507,1
    - Dst: mail_transaction_log_file_lock
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:510,1
    - Dst: mail_transaction_log_refresh
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:514,1
    - Dst: mail_transaction_log_file_unlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:516,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:516,1
    - Dst: mail_transaction_logs_clean
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:518,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:524,1
    - Dst: mail_transaction_log_file_unlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:530,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:530,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:539,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:544,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - log
    - lock_reason
    argTypes:
    - struct mail_transaction_log*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 491
    functionDepth: 3
    functionLinenumber: 491
    functionLinenumberEnd: 546
    functionName: mail_transaction_log_lock_head
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - i_assert
    - t_strdup_printf
    - mail_transaction_log_refresh
    - mail_transaction_logs_clean
    - e_warning
    - mail_transaction_log_file_unlock
    - mail_transaction_log_file_lock
    - time
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_lock_head(struct mail_transaction_log *log,\n\t\t\t\t
      \  const char *lock_reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:554,1
    - Dst: mail_transaction_log_2_unlink_old
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:564,1
    - Dst: mail_transaction_log_lock_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:567,1
    - Dst: mail_transaction_log_file_map
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:571,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:573,1
    - Dst: mail_transaction_log_file_unlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:577,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - log
    - lock_reason
    - file_seq_r
    - file_offset_r
    argTypes:
    - struct mail_transaction_log*
    - char*
    - uint32_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 586
    functionName: mail_transaction_log_sync_lock
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_lock_head
    - t_strdup_printf
    - mail_transaction_log_file_unlock
    - mail_transaction_log_file_map
    - i_assert
    - mail_index_set_error
    - mail_transaction_log_2_unlink_old
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_sync_lock(struct mail_transaction_log *log,\n\t\t\t\t
      \  const char *lock_reason,\n\t\t\t\t   uint32_t *file_seq_r, uoff_t *file_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:591,1
    - Dst: mail_transaction_log_file_unlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - log
    - lock_reason
    argTypes:
    - struct mail_transaction_log*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 595
    functionName: mail_transaction_log_sync_unlock
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_file_unlock
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_sync_unlock(struct mail_transaction_log
      *log,\n\t\t\t\t      const char *lock_reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - log
    - file_seq_r
    - file_offset_r
    argTypes:
    - struct mail_transaction_log*
    - uint32_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 602
    functionName: mail_transaction_log_get_head
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_get_head(struct mail_transaction_log *log,\n\t\t\t\t
      \  uint32_t *file_seq_r, uoff_t *file_offset_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - log
    - file_seq_r
    argTypes:
    - struct mail_transaction_log*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 614
    functionName: mail_transaction_log_get_tail
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_get_tail(struct mail_transaction_log *log,\n\t\t\t\t
      \  uint32_t *file_seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - log
    - file_seq
    - file_offset
    argTypes:
    - struct mail_transaction_log*
    - uint32_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 621
    functionName: mail_transaction_log_is_head_prev
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_transaction_log_is_head_prev(struct mail_transaction_log
      *log,\n\t\t\t\t       uint32_t file_seq, uoff_t file_offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:625,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:627,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 632
    functionName: mail_transaction_log_unlink
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - mail_index_file_set_syscall_error
    - unlink
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_unlink(struct mail_transaction_log *log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:639,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-transaction-log.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - log
    - set_r
    argTypes:
    - struct mail_transaction_log*
    - struct dotlock_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 646
    functionName: mail_transaction_log_get_dotlock_set
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.c
    functionUses: 0
    functionsReached:
    - i_zero
    - I_MIN
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_get_dotlock_set(struct mail_transaction_log
      *log,\n\t\t\t\t\t  struct dotlock_settings *set_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_map*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: mail_index_map_get_ext_idx
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_map_get_ext_idx(struct mail_index_map *map ATTR_UNUSED,\n\t\t\t\tuint32_t
      ext_id ATTR_UNUSED,\n\t\t\t\tuint32_t *idx_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: mail_index_ext_set_reset_id
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_set_reset_id(struct mail_index_transaction *t
      ATTR_UNUSED,\n\t\t\t\t uint32_t ext_id ATTR_UNUSED,\n\t\t\t\t uint32_t reset_id
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 20
    functionName: mail_index_transaction_set_log_updates
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_set_log_updates(struct mail_index_transaction
      *t ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_transaction*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 21
    functionName: mail_index_update_day_headers
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_update_day_headers(struct mail_index_transaction *t
      ATTR_UNUSED, time_t day_stamp ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: mail_index_cancel_flag_updates
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_cancel_flag_updates(struct mail_index_transaction
      *t ATTR_UNUSED,\n\t\t\t\t    uint32_t seq ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: mail_index_cancel_keyword_updates
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_cancel_keyword_updates(struct mail_index_transaction
      *t ATTR_UNUSED,\n\t\t\t\t       uint32_t seq ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 26
    functionName: mail_index_transaction_sort_appends
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_sort_appends(struct mail_index_transaction
      *t ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index*
    - enum mail_index_sync_handler_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: mail_index_map
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_index_map(struct mail_index *index ATTR_UNUSED,\n\t\t   enum
      mail_index_sync_handler_type type ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - min_modseq ATTR_UNUSED
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: mail_index_update_modseq
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_modseq(struct mail_index_transaction *t ATTR_UNUSED,
      uint32_t seq ATTR_UNUSED,\n\t\t\t      uint64_t min_modseq ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:35,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - seq
    argTypes:
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: mail_index_lookup
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached:
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: struct mail_index_record
    signature: 'struct mail_index_record *

      mail_index_lookup(struct mail_index_view *view ATTR_UNUSED, uint32_t seq)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:43,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: mail_index_transaction_lookup
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached:
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: struct mail_index_record
    signature: "struct mail_index_record *\nmail_index_transaction_lookup(struct mail_index_transaction
      *t ATTR_UNUSED,\n\t\t\t      uint32_t seq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:50,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - seq
    argTypes:
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: mail_index_modseq_lookup
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached:
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: uint64_t
    signature: "uint64_t mail_index_modseq_lookup(struct mail_index_view *view ATTR_UNUSED,\n\t\t\t\t
      \ uint32_t seq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: mail_index_modseq_get_highest
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mail_index_modseq_get_highest(struct mail_index_view *view
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - n_so_far
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: MAIL_INDEX_TRANSACTION_FINISH
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_TRANSACTION_FINISH(t, n_so_far)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:72,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:75,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:78,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:78,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:81,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:83,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:85,1
    - Dst: MAIL_INDEX_TRANSACTION_FINISH
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:86,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:93,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:96,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:98,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:100,1
    - Dst: MAIL_INDEX_TRANSACTION_FINISH
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:106,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:106,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:109,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:111,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:113,1
    - Dst: MAIL_INDEX_TRANSACTION_FINISH
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:114,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:119,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:121,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 1
    argNames:
    - n_so_far
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 122
    functionName: test_mail_index_transaction_finish_flag_updates
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_new
    - array_push_back
    - array_get
    - t_strdup_printf
    - MAIL_INDEX_TRANSACTION_FINISH
    - test_end
    - t_array_init
    - test_assert
    - array_is_created
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_index_transaction_finish_flag_updates(unsigned int n_so_far)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:129,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:132,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:133,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:144,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:144,1
    - Dst: MAIL_INDEX_TRANSACTION_FINISH
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:149,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:149,1
    - Dst: MAIL_INDEX_TRANSACTION_FINISH
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:153,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:155,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:155,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:159,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:160,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:162,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - n_so_far
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 164
    functionName: test_mail_index_transaction_finish_check_conflicts
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - t_new
    - array_get
    - t_strdup_printf
    - MAIL_INDEX_TRANSACTION_FINISH
    - test_end
    - ARRAY_TYPE
    - test_assert
    - array_is_created
    - i_assert
    - array_free
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_index_transaction_finish_check_conflicts(unsigned int
      n_so_far)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:174,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:176,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:176,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:178,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:181,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:184,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:187,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:190,1
    - Dst: MAIL_INDEX_TRANSACTION_FINISH
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:192,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:198,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:200,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:204,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:207,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 1
    argNames:
    - n_so_far
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 210
    functionName: test_mail_index_transaction_finish_modseq_updates
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - t_new
    - array_push_back
    - array_get
    - t_strdup_printf
    - MAIL_INDEX_TRANSACTION_FINISH
    - test_end
    - t_array_init
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_index_transaction_finish_modseq_updates(unsigned int
      n_so_far)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:231,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:234,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:234,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:236,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:238,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:239,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:240,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:242,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:243,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:244,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:246,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:247,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:248,1
    - Dst: MAIL_INDEX_TRANSACTION_FINISH
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:250,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:255,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:255,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:257,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:257,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:258,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:259,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:259,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 35
    argCount: 1
    argNames:
    - n_so_far
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 261
    functionName: test_mail_index_transaction_finish_expunges
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_new
    - array_push_back
    - array_get
    - t_strdup_printf
    - MAIL_INDEX_TRANSACTION_FINISH
    - test_end
    - t_array_init
    - test_assert
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_index_transaction_finish_expunges(unsigned int n_so_far)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:265,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:266,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: test_state_reset
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - memset
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_state_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:281,1
    - Dst: test_state_reset
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 287
    functionName: test_mail_index_transaction_finish
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - test_state_reset
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_mail_index_transaction_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 297
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 110
    functionName: MAIL_INDEX_TRANSACTION_HAS_CHANGES
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_TRANSACTION_HAS_CHANGES(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-dummy-view.c:10,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-dummy-view.c:12,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-dummy-view.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 14
    functionName: dummy_view_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-dummy-view.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void dummy_view_close(struct mail_index_view *view ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 20
    functionName: dummy_view_get_message_count
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-dummy-view.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dummy_view_get_message_count(struct mail_index_view *view
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-dummy-view.c:40,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-dummy-view.c:44,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-dummy-view.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: mail_index_dummy_view_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-dummy-view.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - I_MIN
    - i_new
    linkageType: ''
    returnType: struct mail_index_view
    signature: struct mail_index_view *mail_index_dummy_view_open(struct mail_index
      *index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:18,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:25,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - file_seq
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 37
    functionName: test_transaction_log_file_add
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - i_new
    linkageType: ''
    returnType: void
    signature: void test_transaction_log_file_add(uint32_t file_seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: mail_index_set_error
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_error(struct mail_index *index ATTR_UNUSED,\n\t\t\t
      \ const char *fmt ATTR_UNUSED, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: mail_transaction_log_file_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_file_set_corrupted(struct mail_transaction_log_file
      *file ATTR_UNUSED,\n\t\t\t\t\t     const char *fmt ATTR_UNUSED, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: mail_transaction_logs_clean
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_transaction_logs_clean(struct mail_transaction_log *log ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_transaction_log_file_add
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:73,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 5
    argNames:
    - log
    - file_seq
    - ATTR_UNUSED
    - file_r
    - reason_r
    argTypes:
    - struct mail_transaction_log*
    - uint32_t
    - bool
    - struct mail_transaction_log_file**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 79
    functionName: mail_transaction_log_find_file
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - test_transaction_log_file_add
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_find_file(struct mail_transaction_log *log,\n\t\t\t\t
      \  uint32_t file_seq, bool nfs_flush ATTR_UNUSED,\n\t\t\t\t   struct mail_transaction_log_file
      **file_r,\n\t\t\t\t   const char **reason_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - start_offset ATTR_UNUSED
    - end_offset ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    - uoff_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: mail_transaction_log_file_map
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_map(struct mail_transaction_log_file
      *file ATTR_UNUSED,\n\t\t\t\t  uoff_t start_offset ATTR_UNUSED, uoff_t end_offset
      ATTR_UNUSED,\n\t\t\t\t  const char **reason_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - highest_modseq_r
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: mail_transaction_log_file_get_highest_modseq_at
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_get_highest_modseq_at(\n\t\tstruct mail_transaction_log_file
      *file ATTR_UNUSED,\n\t\tuoff_t offset ATTR_UNUSED, uint64_t *highest_modseq_r,\n\t\tconst
      char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - cur_modseq
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_header*
    - void*
    - uint64_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: mail_transaction_update_modseq
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_update_modseq(const struct mail_transaction_header
      *hdr ATTR_UNUSED,\n\t\t\t\t    const void *data ATTR_UNUSED,\n\t\t\t\t    uint64_t
      *cur_modseq,\n\t\t\t\t    unsigned int version ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:111,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - file_seq
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 119
    functionName: view_is_file_refed
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool view_is_file_refed(uint32_t file_seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:128,1
    - Dst: mail_index_uint32_to_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:130,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:132,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - file
    - rec
    argTypes:
    - struct mail_transaction_log_file*
    - struct mail_index_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 138
    functionName: add_append_record
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_append
    - mail_index_uint32_to_offset
    linkageType: ''
    returnType: size_t
    signature: "size_t add_append_record(struct mail_transaction_log_file *file,\n\t\t
      \ const struct mail_index_record *rec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:152,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:153,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:154,1
    - Dst: test_transaction_log_file_add
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:157,1
    - Dst: test_transaction_log_file_add
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:158,1
    - Dst: test_transaction_log_file_add
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:159,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:162,1
    - Dst: add_append_record
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:166,1
    - Dst: mail_transaction_log_view_open
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:169,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:170,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:171,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:171,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:172,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:173,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:176,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:177,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:177,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:178,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:178,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:179,1
    - Dst: mail_transaction_log_view_is_corrupted
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:180,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:181,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:182,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:183,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:186,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:186,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:187,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:188,1
    - Dst: mail_transaction_log_view_is_last
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:188,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:189,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:190,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:191,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:194,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:194,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:196,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:197,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:197,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:198,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:199,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:200,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:202,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:203,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:203,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:204,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:205,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:206,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:206,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:208,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:209,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:211,1
    - Dst: mail_transaction_log_view_clear
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:212,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:213,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:213,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:213,1
    - Dst: view_is_file_refed
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:214,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:216,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:218,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:219,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:220,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:225,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:225,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:226,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:229,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:229,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:230,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:232,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:234,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:234,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:236,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:238,1
    - Dst: mail_transaction_log_view_clear
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:241,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:245,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:245,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:248,1
    - Dst: mail_transaction_log_view_close
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:250,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:251,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:254,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:256,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:258,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 82
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 259
    functionName: test_mail_transaction_log_view
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_close
    - test_transaction_log_file_add
    - test_assert
    - mail_transaction_log_view_set
    - mail_transaction_log_view_open
    - mail_transaction_log_view_is_last
    - test_end
    - buffer_free
    - i_zero
    - i_assert
    - i_free
    - mail_transaction_log_view_next
    - mail_transaction_log_view_is_corrupted
    - mail_transaction_log_view_clear
    - view_is_file_refed
    - add_append_record
    - i_new
    - mail_transaction_log_view_get_prev_pos
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_transaction_log_view(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 268
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 21
    functionName: uid_map_cmp
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int uid_map_cmp(const void *p1, const void *p2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:108,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:111,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:112,1
    - Dst: sort_appends_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:113,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:117,1
    - Dst: sort_appends_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - t
    - old_to_newseq_map
    argTypes:
    - struct mail_index_transaction*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 123
    functionName: mail_index_transaction_sort_appends_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - sort_appends_seq_range
    linkageType: ''
    returnType: void
    signature: "void mail_index_transaction_sort_appends_keywords(struct mail_index_transaction
      *t,\n\t\t\t\t\t     const uint32_t *old_to_newseq_map)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:132,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:134,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:135,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:138,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:141,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:147,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:149,1
    - Dst: qsort
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:155,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:158,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:163,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:165,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:167,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:169,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:172,1
    - Dst: mail_index_transaction_sort_appends_ext
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:174,1
    - Dst: mail_index_transaction_sort_appends_ext
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:177,1
    - Dst: mail_index_transaction_sort_appends_keywords
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:180,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c:181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 184
    functionName: mail_index_transaction_sort_appends
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c
    functionUses: 1
    functionsReached:
    - i_panic
    - array_get_modifiable
    - buffer_write
    - mail_index_transaction_sort_appends_keywords
    - mail_index_transaction_sort_appends_ext
    - i_new
    - qsort
    - array_is_created
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_sort_appends(struct mail_index_transaction
      *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:16,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:17,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:18,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - index
    - fmt
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 20
    functionName: mail_index_fsck_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 0
    functionsReached:
    - t_strdup_vprintf
    - mail_index_set_error
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void mail_index_fsck_error(struct mail_index *index,\n\t\t\t\t  const
      char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - field
    - ','
    - oper
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 27
    functionName: CHECK
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK(field, oper)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 35
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(names, arr_name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:108,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:122,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - map
    - ext_hdr
    argTypes:
    - struct mail_index_map*
    - struct mail_index_ext_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 125
    functionName: mail_index_fsck_find_keyword_count
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 0
    functionsReached:
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int mail_index_fsck_find_keyword_count(struct mail_index_map
      *map,\n\t\t\t\t   const struct mail_index_ext_header *ext_hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - buffer
    - pos
    - size
    argTypes:
    - char*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 139
    functionName: keyword_name_is_valid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool keyword_name_is_valid(const char *buffer, unsigned int pos, unsigned
      int size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:154,1
    - Dst: mail_index_map_ext_hdr_offset
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:159,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:160,1
    - Dst: mail_index_fsck_find_keyword_count
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:170,1
    - Dst: mail_index_fsck_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:171,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:182,1
    - Dst: keyword_name_is_valid
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:185,1
    - Dst: array_has_name
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:191,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:195,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:200,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:203,1
    - Dst: array_has_name
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:204,1
    - Dst: mail_index_fsck_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:217,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:220,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:221,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:222,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:227,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:228,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:234,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:237,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:237,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:242,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:249,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:260,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:261,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:266,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 71
    argCount: 6
    argNames:
    - index
    - map
    - hdr
    - ext_hdr
    - ext_offset
    - offset_p
    argTypes:
    - struct mail_index*
    - struct mail_index_map*
    - struct mail_index_header*
    - struct mail_index_ext_header*
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 267
    functionName: mail_index_fsck_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - mail_index_fsck_error
    - buffer_write
    - buffer_create_dynamic
    - strlen
    - t_strdup_printf
    - buffer_copy
    - keyword_name_is_valid
    - buffer_append
    - mail_index_map_ext_hdr_offset
    - buffer_free
    - i_zero
    - array_has_name
    - buffer_append_space_unsafe
    - mail_index_fsck_find_keyword_count
    - i_assert
    - buffer_append_zero
    - array_push_back
    - I_MAX
    - t_array_init
    - ARRAY_TYPE
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void mail_index_fsck_keywords(struct mail_index *index, struct mail_index_map
      *map,\n\t\t\t struct mail_index_header *hdr,\n\t\t\t const struct mail_index_ext_header
      *ext_hdr,\n\t\t\t unsigned int ext_offset, unsigned int *offset_p)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:274,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:278,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:279,1
    - Dst: mail_index_map_ext_get_next
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:286,1
    - Dst: mail_index_fsck_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:289,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:294,1
    - Dst: mail_index_map_ext_hdr_check
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:297,1
    - Dst: mail_index_fsck_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:299,1
    - Dst: array_has_name
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:301,1
    - Dst: mail_index_fsck_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:302,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:306,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:308,1
    - Dst: mail_index_fsck_keywords
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:309,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:313,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:320,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:322,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - index
    - map
    - hdr
    argTypes:
    - struct mail_index*
    - struct mail_index_map*
    - struct mail_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 269
    functionDepth: 3
    functionLinenumber: 269
    functionLinenumberEnd: 324
    functionName: mail_index_fsck_extensions
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_index_fsck_error
    - MAIL_INDEX_HEADER_SIZE_ALIGN
    - array_push_back
    - array_has_name
    - buffer_copy
    - buffer_set_used_size
    - mail_index_fsck_keywords
    - t_array_init
    - ARRAY_TYPE
    - mail_index_map_ext_hdr_check
    - t_strdup
    - mail_index_map_ext_get_next
    linkageType: ''
    returnType: void
    signature: "void mail_index_fsck_extensions(struct mail_index *index, struct mail_index_map
      *map,\n\t\t\t   struct mail_index_header *hdr)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:344,1
    - Dst: mail_index_fsck_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:349,1
    - Dst: mail_index_fsck_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:355,1
    - Dst: memmove
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:363,1
    - Dst: mail_index_fsck_error
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:394,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:408,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:409,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:410,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:411,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:413,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:414,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:415,1
    - Dst: mail_index_fsck_map
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:419,1
    - Dst: mail_transaction_log_get_head
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:426,1
    - Dst: mail_index_fsck_header
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:432,1
    - Dst: mail_index_fsck_extensions
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:433,1
    - Dst: mail_index_fsck_records
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:434,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:438,1
    - Dst: mail_transaction_log_create
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:455,1
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:460,1
    - Dst: mail_index_map_clone
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:465,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 68
    argCount: 3
    argNames:
    - index
    - map
    - hdr
    argTypes:
    - struct mail_index*
    - struct mail_index_map*
    - struct mail_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 326
    functionDepth: 4
    functionLinenumber: 326
    functionLinenumberEnd: 478
    functionName: mail_index_fsck_records
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 1
    functionsReached:
    - mail_index_map_clone
    - mail_index_fsck_error
    - PTR_OFFSET
    - mail_transaction_log_create
    - mail_transaction_log_sync_lock
    - mail_index_fsck_records
    - memmove
    - CHECK
    - mail_transaction_log_get_head
    - mail_index_fsck_extensions
    - mail_index_fsck_header
    - mail_index_fsck_map
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_fsck_records(struct mail_index *index, struct mail_index_map
      *map,\n\t\t\tstruct mail_index_header *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:484,1
    - Dst: mail_index_fsck
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:485,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-fsck.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 487
    functionName: mail_index_fsck_locked
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_index_fsck
    linkageType: ''
    returnType: void
    signature: void mail_index_fsck_locked(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 495
    functionName: mail_index_reset_fscked
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-fsck.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_index_reset_fscked(struct mail_index *index)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:19,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:23,1
    - Dst: mail_cache_map
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:28,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:33,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:39,1
    - Dst: mail_cache_map
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:44,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:47,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - cache
    - offset
    - rec_r
    argTypes:
    - struct mail_cache*
    - uint32_t
    - struct mail_cache_record**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 55
    functionName: mail_cache_get_record
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_corrupted
    - mail_cache_map
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_cache_get_record(struct mail_cache *cache, uint32_t offset,\n\t\t\t
      \ const struct mail_cache_record **rec_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:60,1
    - Dst: mail_index_lookup_ext_full
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:65,1
    - Dst: mail_index_ext_get_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:74,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - view
    - seq
    - reset_id_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 77
    functionName: mail_cache_lookup_cur_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_get_reset_id
    - i_unreached
    - mail_index_lookup_ext_full
    - mail_index_view_get_index
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t mail_cache_lookup_cur_offset(struct mail_index_view *view,\n\t\t\t\t
      \     uint32_t seq, uint32_t *reset_id_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_lookup_cur_offset
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:86,1
    - Dst: mail_cache_sync_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:92,1
    - Dst: mail_cache_lookup_cur_offset
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:96,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 4
    argNames:
    - cache
    - view
    - seq
    - offset_r
    argTypes:
    - struct mail_cache*
    - struct mail_index_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 112
    functionName: mail_cache_lookup_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_sync_reset_id
    - mail_cache_lookup_cur_offset
    linkageType: ''
    returnType: int
    signature: "int mail_cache_lookup_offset(struct mail_cache *cache, struct mail_index_view
      *view,\n\t\t\t uint32_t seq, uint32_t *offset_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - loop_track
    - offset
    - size
    argTypes:
    - struct mail_cache_loop_track*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 137
    functionName: mail_cache_track_loops
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool mail_cache_track_loops(struct mail_cache_loop_track *loop_track,\n\t\t\t
      \   uoff_t offset, uoff_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:146,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:148,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:152,1
    - Dst: mail_cache_lookup_offset
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:154,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - view
    - seq
    - ctx_r
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    - struct mail_cache_lookup_iterate_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 164
    functionName: mail_cache_lookup_iter_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_cache_open_and_verify
    - MAIL_CACHE_IS_UNUSABLE
    - mail_cache_lookup_offset
    linkageType: ''
    returnType: void
    signature: "void mail_cache_lookup_iter_init(struct mail_cache_view *view, uint32_t
      seq,\n\t\t\t\t struct mail_cache_lookup_iterate_ctx *ctx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_lookup_rec
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_lookup_iterate_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 180
    functionName: mail_cache_lookup_iter_transaction
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_transaction_lookup_rec
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_lookup_iter_transaction(struct mail_cache_lookup_iterate_ctx
      *ctx)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_lookup_iter_transaction
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:200,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:204,1
    - Dst: mail_cache_lookup_offset
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:209,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:215,1
    - Dst: mail_cache_get_record
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:222,1
    - Dst: mail_cache_track_loops
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:224,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:226,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_lookup_iterate_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 236
    functionName: mail_cache_lookup_iter_next_record
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_cache_track_loops
    - mail_cache_lookup_offset
    - mail_cache_get_record
    - mail_cache_set_corrupted
    - mail_cache_lookup_iter_transaction
    - MAIL_CACHE_IS_UNUSABLE
    linkageType: ''
    returnType: int
    signature: int mail_cache_lookup_iter_next_record(struct mail_cache_lookup_iterate_ctx
      *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:245,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:255,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:259,1
    - Dst: mail_cache_get_record
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:267,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - field_idx_r
    argTypes:
    - struct mail_cache_lookup_iterate_ctx*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 274
    functionName: mail_cache_lookup_rec_get_field
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_corrupted
    - mail_cache_header_fields_read
    - CONST_PTR_OFFSET
    - mail_cache_get_record
    linkageType: ''
    returnType: int
    signature: "int mail_cache_lookup_rec_get_field(struct mail_cache_lookup_iterate_ctx
      *ctx,\n\t\t\t\tunsigned int *field_idx_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:284,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:288,1
    - Dst: mail_cache_lookup_iter_next_record
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:293,1
    - Dst: mail_cache_lookup_rec_get_field
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:298,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:307,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:312,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:318,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - field_r
    argTypes:
    - struct mail_cache_lookup_iterate_ctx*
    - struct mail_cache_iterate_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 325
    functionName: mail_cache_lookup_iter_next
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_lookup_iter_next_record
    - mail_cache_lookup_rec_get_field
    - mail_cache_set_corrupted
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int mail_cache_lookup_iter_next(struct mail_cache_lookup_iterate_ctx
      *ctx,\n\t\t\t\tstruct mail_cache_iterate_field *field_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:336,1
    - Dst: mail_cache_lookup_iter_init
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:341,1
    - Dst: mail_cache_lookup_iter_next
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:342,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - view
    - seq
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 327
    functionDepth: 5
    functionLinenumber: 327
    functionLinenumberEnd: 347
    functionName: mail_cache_seq
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - buffer_write
    - mail_cache_lookup_iter_next
    - mail_cache_lookup_iter_init
    - buffer_set_used_size
    linkageType: ''
    returnType: int
    signature: int mail_cache_seq(struct mail_cache_view *view, uint32_t seq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:354,1
    - Dst: mail_cache_seq
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - view
    - seq
    - field
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 349
    functionDepth: 6
    functionLinenumber: 349
    functionLinenumberEnd: 369
    functionName: mail_cache_field_exists
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_seq
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_cache_field_exists(struct mail_cache_view *view, uint32_t
      seq,\n\t\t\t    unsigned int field)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_lookup_cur_offset
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - view
    - seq
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: mail_cache_field_exists_any
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_lookup_cur_offset
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_field_exists_any(struct mail_cache_view *view, uint32_t
      seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cache
    - field_idx
    argTypes:
    - struct mail_cache*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 384
    functionName: mail_cache_field_get_decision
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: enum mail_cache_decision_type
    signature: enum mail_cache_decision_type mail_cache_field_get_decision(struct
      mail_cache *cache, unsigned int field_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_write_zero
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:399,1
    - Dst: mail_cache_lookup_iter_next
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:401,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:407,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - iter
    - field_idx
    - field_size
    - dest_buf
    argTypes:
    - struct mail_cache_lookup_iterate_ctx*
    - unsigned int
    - unsigned int
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 386
    functionDepth: 5
    functionLinenumber: 386
    functionLinenumberEnd: 413
    functionName: mail_cache_lookup_bitmask
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - buffer_get_space_unsafe
    - mail_cache_lookup_iter_next
    - buffer_write_zero
    linkageType: ''
    returnType: int
    signature: "int mail_cache_lookup_bitmask(struct mail_cache_lookup_iterate_ctx
      *iter,\n\t\t\t  unsigned int field_idx, unsigned int field_size,\n\t\t\t  buffer_t
      *dest_buf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:422,1
    - Dst: mail_cache_decision_state_update
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:423,1
    - Dst: mail_cache_lookup_iter_init
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:428,1
    - Dst: mail_cache_lookup_bitmask
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:430,1
    - Dst: mail_cache_lookup_iter_next
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:436,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:438,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - view
    - dest_buf
    - seq
    - field_idx
    argTypes:
    - struct mail_cache_view*
    - buffer_t*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 415
    functionDepth: 7
    functionLinenumber: 415
    functionLinenumberEnd: 446
    functionName: mail_cache_lookup_field
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - mail_cache_field_exists
    - mail_cache_lookup_bitmask
    - mail_cache_decision_state_update
    - mail_cache_lookup_iter_init
    - mail_cache_lookup_iter_next
    linkageType: ''
    returnType: int
    signature: "int mail_cache_lookup_field(struct mail_cache_view *view, buffer_t
      *dest_buf,\n\t\t\t    uint32_t seq, unsigned int field_idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:489,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:493,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:494,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:494,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:500,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - field
    argTypes:
    - struct header_lookup_context*
    - struct mail_cache_iterate_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 502
    functionName: header_lines_save
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_new
    - array_push_back
    - CONST_PTR_OFFSET
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void header_lines_save(struct header_lookup_context *ctx,\n\t\t\t
      \     const struct mail_cache_iterate_field *field)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - l1
    - l2
    argTypes:
    - struct header_lookup_line*
    - struct header_lookup_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 508
    functionName: header_lookup_line_cmp
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int header_lookup_line_cmp(const struct header_lookup_line *l1,\n\t\t\t\t
      \ const struct header_lookup_line *l2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_decision_state_update
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:535,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:538,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:543,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:545,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:548,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:550,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:551,1
    - Dst: mail_cache_lookup_iter_init
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:553,1
    - Dst: mail_cache_lookup_iter_next
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:554,1
    - Dst: header_lines_save
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:560,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:575,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:576,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:592,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 6
    argNames:
    - view
    - dest
    - seq
    - field_idxs
    - fields_count
    - pool_r
    argTypes:
    - struct mail_cache_view*
    - string_t*
    - uint32_t
    - unsigned int[]
    - unsigned int
    - pool_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 510
    functionDepth: 5
    functionLinenumber: 510
    functionLinenumberEnd: 600
    functionName: mail_cache_lookup_headers_real
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - buffer_append
    - buffer_write
    - array_get_modifiable
    - t_buffer_create
    - buffer_get_modifiable_data
    - t_array_init
    - mail_cache_decision_state_update
    - mail_cache_lookup_iter_init
    - header_lines_save
    - array_sort
    - mail_cache_lookup_iter_next
    linkageType: ''
    returnType: int
    signature: "int mail_cache_lookup_headers_real(struct mail_cache_view *view, string_t
      *dest,\n\t\t\t       uint32_t seq, const unsigned int field_idxs[],\n\t\t\t
      \      unsigned int fields_count, pool_t *pool_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_pool
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:609,1
    - Dst: mail_cache_lookup_headers_real
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:610,1
    - Dst: mail_cache_lookup_headers_real
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:614,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - view
    - dest
    - seq
    - field_idxs
    - fields_count
    argTypes:
    - struct mail_cache_view*
    - string_t*
    - uint32_t
    - unsigned int[]
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 602
    functionDepth: 6
    functionLinenumber: 602
    functionLinenumberEnd: 617
    functionName: mail_cache_lookup_headers
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_lookup_headers_real
    - buffer_get_pool
    linkageType: ''
    returnType: int
    signature: "int mail_cache_lookup_headers(struct mail_cache_view *view, string_t
      *dest,\n\t\t\t      uint32_t seq, const unsigned int field_idxs[],\n\t\t\t      unsigned
      int fields_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_lookup_cur_offset
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:642,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - view
    - below_seq
    - reset_id_r
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 622
    functionDepth: 2
    functionLinenumber: 622
    functionLinenumberEnd: 653
    functionName: mail_cache_get_highest_seq_with_cache
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_cache_lookup_cur_offset
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t mail_cache_get_highest_seq_with_cache(struct mail_cache_view
      *view,\n\t\t\t\t      uint32_t below_seq, uint32_t *reset_id_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:660,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:663,1
    - Dst: mail_cache_lookup_cur_offset
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:666,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:669,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:673,1
    - Dst: mail_cache_get_highest_seq_with_cache
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:676,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:678,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:683,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:686,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache-lookup.c:691,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - view
    - seq
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 655
    functionDepth: 3
    functionLinenumber: 655
    functionLinenumberEnd: 694
    functionName: mail_cache_get_missing_reason
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-lookup.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_uid
    - t_strdup_printf
    - mail_cache_get_highest_seq_with_cache
    - mail_index_is_expunged
    - mail_cache_lookup_cur_offset
    - MAIL_CACHE_IS_UNUSABLE
    linkageType: ''
    returnType: char
    signature: 'char *

      mail_cache_get_missing_reason(struct mail_cache_view *view, uint32_t seq)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - highest_idx
    - ','
    - n_unique_indexes
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: STRIDX_MUST_RENUMBER
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRIDX_MUST_RENUMBER(highest_idx, n_unique_indexes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:99,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:101,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - index
    - suffix
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: mail_index_strmap_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - i_strconcat
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct mail_index_strmap
    signature: 'struct mail_index_strmap *

      mail_index_strmap_init(struct mail_index *index, const char *suffix)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:122,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:124,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - strmap
    - function
    argTypes:
    - struct mail_index_strmap*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 134
    functionName: mail_index_strmap_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_index_set_error
    - ENOSPACE
    linkageType: ''
    returnType: void
    signature: "void mail_index_strmap_set_syscall_error(struct mail_index_strmap
      *strmap,\n\t\t\t\t    const char *function)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:139,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:141,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:144,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:145,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - strmap
    argTypes:
    - struct mail_index_strmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 149
    functionName: mail_index_strmap_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - mail_index_strmap_set_syscall_error
    - i_stream_unref
    - file_lock_free
    - close
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_close(struct mail_index_strmap *strmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_strmap_close
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:156,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:157,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _strmap
    argTypes:
    - struct mail_index_strmap**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: mail_index_strmap_deinit
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_close
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_deinit(struct mail_index_strmap **_strmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 166
    functionName: mail_index_strmap_hash_key
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mail_index_strmap_hash_key(const void *_key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_strmap_view*::key_compare
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _key
    - _value
    - context
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 176
    functionName: mail_index_strmap_hash_cmp
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - struct mail_index_strmap_view*::key_compare
    linkageType: ''
    returnType: bool
    signature: bool mail_index_strmap_hash_cmp(const void *_key, const void *_value,
      void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:190,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:199,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:200,1
    - Dst: hash2_create
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 8
    argNames:
    - strmap
    - idx_view
    - key_compare_cb
    - rec_compare_cb
    - remap_cb
    - context
    - recs_r
    - hash_r
    argTypes:
    - struct mail_index_strmap*
    - struct mail_index_view*
    - mail_index_strmap_key_cmp_t*
    - mail_index_strmap_rec_cmp_t*
    - mail_index_strmap_remap_t*
    - void*
    - ARRAY_TYPE**
    - struct hash2_table**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 207
    functionName: mail_index_strmap_view_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    - hash2_create
    linkageType: ''
    returnType: struct mail_index_strmap_view
    signature: "struct mail_index_strmap_view *\nmail_index_strmap_view_open(struct
      mail_index_strmap *strmap,\n\t\t\t    struct mail_index_view *idx_view,\n\t\t\t
      \   mail_index_strmap_key_cmp_t *key_compare_cb,\n\t\t\t    mail_index_strmap_rec_cmp_t
      *rec_compare_cb,\n\t\t\t    mail_index_strmap_remap_t *remap_cb,\n\t\t\t    void
      *context,\n\t\t\t    const ARRAY_TYPE(mail_index_strmap_rec) **recs_r,\n\t\t\t
      \   const struct hash2_table **hash_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:214,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:215,1
    - Dst: hash2_destroy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:216,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _view
    argTypes:
    - struct mail_index_strmap_view**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 218
    functionName: mail_index_strmap_view_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - hash2_destroy
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_view_close(struct mail_index_strmap_view **_view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: mail_index_strmap_view_get_highest_idx
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_index_strmap_view_get_highest_idx(struct mail_index_strmap_view
      *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_strmap_view*::remap_cb
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:227,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:228,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:229,1
    - Dst: hash2_clear
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 235
    functionName: mail_index_strmap_view_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - struct mail_index_strmap_view*::remap_cb
    - hash2_clear
    - array_clear
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_view_reset(struct mail_index_strmap_view *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:239,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:242,1
    - Dst: mail_index_strmap_close
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:243,1
    - Dst: mail_index_strmap_view_reset
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 245
    functionName: mail_index_strmap_view_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_close
    - mail_index_set_error
    - i_unlink
    - mail_index_strmap_view_reset
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_view_set_corrupted(struct mail_index_strmap_view
      *view)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:256,1
    - Dst: open
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:258,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:262,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:265,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:266,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:269,1
    - Dst: mail_index_strmap_close
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:270,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:272,1
    - Dst: mail_index_strmap_view_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:273,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:277,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:279,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:284,1
    - Dst: mail_index_strmap_close
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:285,1
    - Dst: mail_index_strmap_view_reset
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:296,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 247
    functionDepth: 4
    functionLinenumber: 247
    functionLinenumberEnd: 298
    functionName: mail_index_strmap_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_stream_create_fd
    - mail_index_strmap_set_syscall_error
    - open
    - mail_index_get_header
    - i_unlink
    - mail_index_strmap_view_set_corrupted
    - mail_index_strmap_close
    - i_assert
    - i_stream_read_bytes
    - mail_index_strmap_view_reset
    linkageType: ''
    returnType: int
    signature: int mail_index_strmap_open(struct mail_index_strmap_view *view)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:305,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:306,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:307,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:310,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:311,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - strmap
    argTypes:
    - struct mail_index_strmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 315
    functionName: mail_index_strmap_need_reopen
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_set_syscall_error
    - ESTALE_FSTAT
    - fstat
    - stat
    - CMP_DEV_T
    linkageType: ''
    returnType: bool
    signature: bool mail_index_strmap_need_reopen(struct mail_index_strmap *strmap)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:321,1
    - Dst: mail_index_strmap_need_reopen
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:325,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:332,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:340,1
    - Dst: mail_index_strmap_close
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:344,1
    - Dst: mail_index_strmap_open
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:347,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 317
    functionDepth: 5
    functionLinenumber: 317
    functionLinenumberEnd: 348
    functionName: mail_index_strmap_refresh
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_index_lookup_seq
    - i_stream_sync
    - mail_index_strmap_need_reopen
    - mail_index_strmap_open
    - mail_index_strmap_close
    linkageType: ''
    returnType: int
    signature: int mail_index_strmap_refresh(struct mail_index_strmap_view *view)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:359,1
    - Dst: mail_index_unpack_num
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:368,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:370,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - num_r
    argTypes:
    - struct mail_index_strmap_read_context*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 372
    functionName: mail_index_strmap_read_packed
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_unpack_num
    - i_stream_read_bytes
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int mail_index_strmap_read_packed(struct mail_index_strmap_read_context
      *ctx,\n\t\t\t      uint32_t *num_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:380,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:392,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:403,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:404,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct mail_index_strmap_read_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 409
    functionName: mail_index_strmap_uid_exists
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - mail_index_refresh
    - mail_index_is_expunged
    linkageType: ''
    returnType: int
    signature: "int mail_index_strmap_uid_exists(struct mail_index_strmap_read_context
      *ctx,\n\t\t\t     uint32_t uid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_strmap_read_packed
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:425,1
    - Dst: mail_index_strmap_uid_exists
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:431,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:434,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:442,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:447,1
    - Dst: mail_index_strmap_read_rec_next
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:457,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:458,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - crc32_r
    argTypes:
    - struct mail_index_strmap_read_context*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 461
    functionName: mail_index_strmap_read_rec_first
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_strmap_read_rec_next
    - i_unreached
    - mail_index_strmap_read_packed
    - mail_index_strmap_uid_exists
    - i_stream_skip
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: "int mail_index_strmap_read_rec_first(struct mail_index_strmap_read_context
      *ctx,\n\t\t\t\t uint32_t *crc32_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:468,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:477,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - crc32_r
    argTypes:
    - struct mail_index_strmap_read_context*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 489
    functionName: mail_index_strmap_read_rec_next
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 1
    functionsReached:
    - memcpy
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_strmap_read_rec_next(struct mail_index_strmap_read_context
      *ctx,\n\t\t\t\tuint32_t *crc32_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:506,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:507,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:514,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:517,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:518,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:524,1
    - Dst: mail_index_strmap_view_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:531,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:538,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:540,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - view
    - ctx
    argTypes:
    - struct mail_index_strmap_view*
    - struct mail_index_strmap_read_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 491
    functionDepth: 4
    functionLinenumber: 491
    functionLinenumberEnd: 543
    functionName: strmap_read_block_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - mail_index_strmap_set_syscall_error
    - mail_index_lookup_seq_range
    - mail_index_view_get_messages_count
    - i_stream_skip
    - mail_index_strmap_view_set_corrupted
    - mail_index_offset_to_uint32
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: "int strmap_read_block_init(struct mail_index_strmap_view *view,\n\t\t
      \      struct mail_index_strmap_read_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_strmap_read_rec_next
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:552,1
    - Dst: mail_index_strmap_read_packed
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:561,1
    - Dst: mail_index_strmap_read_rec_first
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:565,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - crc32_r
    argTypes:
    - struct mail_index_strmap_read_context*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 545
    functionDepth: 3
    functionLinenumber: 545
    functionLinenumberEnd: 568
    functionName: strmap_read_block_next
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_read_rec_first
    - mail_index_strmap_read_packed
    - mail_index_strmap_read_rec_next
    linkageType: ''
    returnType: int
    signature: "int strmap_read_block_next(struct mail_index_strmap_read_context *ctx,\n\t\t
      \      uint32_t *crc32_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:580,1
    - Dst: mail_index_strmap_view_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:586,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:591,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:595,1
    - Dst: mail_index_strmap_view_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:597,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - ret
    - update_block_offset
    argTypes:
    - struct mail_index_strmap_read_context*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 570
    functionDepth: 4
    functionLinenumber: 570
    functionLinenumberEnd: 606
    functionName: strmap_read_block_deinit
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_view_set_corrupted
    - i_assert
    - mail_index_set_error
    - mail_index_strmap_set_syscall_error
    linkageType: ''
    returnType: int
    signature: "int strmap_read_block_deinit(struct mail_index_strmap_read_context
      *ctx, int ret,\n\t\t\t bool update_block_offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:616,1
    - Dst: hash2_remove_iter
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:618,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:621,1
    - Dst: struct mail_index_strmap_read_context*::view::rec_compare
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - hash_rec
    - iter
    argTypes:
    - struct mail_index_strmap_read_context*
    - struct mail_index_strmap_rec*
    - struct hash2_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 631
    functionName: strmap_view_sync_handle_conflict
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - struct mail_index_strmap_read_context*::view::rec_compare
    - mail_index_is_expunged
    - hash2_remove_iter
    - mail_index_lookup_seq
    linkageType: ''
    returnType: bool
    signature: "bool strmap_view_sync_handle_conflict(struct mail_index_strmap_read_context
      *ctx,\n\t\t\t\t const struct mail_index_strmap_rec *hash_rec,\n\t\t\t\t struct
      hash2_iter *iter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:655,1
    - Dst: hash2_iterate
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:656,1
    - Dst: strmap_view_sync_handle_conflict
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:660,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - crc32
    argTypes:
    - struct mail_index_strmap_read_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 633
    functionDepth: 2
    functionLinenumber: 633
    functionLinenumberEnd: 666
    functionName: strmap_view_sync_block_check_conflicts
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - i_zero
    - hash2_iterate
    - strmap_view_sync_handle_conflict
    linkageType: ''
    returnType: int
    signature: "int strmap_view_sync_block_check_conflicts(struct mail_index_strmap_read_context
      *ctx,\n\t\t\t\t       uint32_t crc32)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strmap_read_block_next
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:675,1
    - Dst: strmap_view_sync_block_check_conflicts
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:685,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:692,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:693,1
    - Dst: hash2_insert_hash
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:696,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:697,1
    - Dst: strmap_read_block_deinit
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:699,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_strmap_read_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 668
    functionDepth: 5
    functionLinenumber: 668
    functionLinenumberEnd: 700
    functionName: mail_index_strmap_view_sync_block
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strmap_read_block_deinit
    - array_push_back
    - hash2_insert_hash
    - strmap_view_sync_block_check_conflicts
    - strmap_read_block_next
    linkageType: ''
    returnType: int
    signature: int mail_index_strmap_view_sync_block(struct mail_index_strmap_read_context
      *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:710,1
    - Dst: mail_index_strmap_refresh
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:713,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:717,1
    - Dst: strmap_read_block_init
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:719,1
    - Dst: mail_index_strmap_view_sync_block
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:720,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:734,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - view
    - last_uid_r
    argTypes:
    - struct mail_index_strmap_view*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 702
    functionDepth: 6
    functionLinenumber: 702
    functionLinenumberEnd: 739
    functionName: mail_index_strmap_view_sync_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - strmap_read_block_init
    - i_stream_seek
    - mail_index_strmap_view_sync_block
    - i_new
    - i_assert
    - mail_index_strmap_refresh
    linkageType: ''
    returnType: struct mail_index_strmap_view_sync
    signature: "struct mail_index_strmap_view_sync *\nmail_index_strmap_view_sync_init(struct
      mail_index_strmap_view *view,\n\t\t\t\t uint32_t *last_uid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crc32_str
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 748
    functionName: crc32_str_nonzero
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - crc32_str
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crc32_str_nonzero(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:759,1
    - Dst: crc32_str_nonzero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:764,1
    - Dst: hash2_lookup
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:766,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:774,1
    - Dst: hash2_insert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:776,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:780,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:781,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - sync
    - uid
    - ref_index
    - key
    argTypes:
    - struct mail_index_strmap_view_sync*
    - uint32_t
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 785
    functionName: mail_index_strmap_view_sync_add
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - hash2_insert
    - crc32_str_nonzero
    - array_push_back
    - hash2_lookup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_strmap_view_sync_add(struct mail_index_strmap_view_sync
      *sync,\n\t\t\t\t     uint32_t uid, uint32_t ref_index,\n\t\t\t\t     const char
      *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:793,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:797,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:801,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:802,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - sync
    - uid
    - ref_index
    argTypes:
    - struct mail_index_strmap_view_sync*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 806
    functionName: mail_index_strmap_view_sync_add_unique
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_append_zero
    - i_assert
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void mail_index_strmap_view_sync_add_unique(struct mail_index_strmap_view_sync
      *sync,\n\t\t\t\t\t    uint32_t uid, uint32_t ref_index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:812,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 814
    functionName: mail_index_strmap_zero_terminate
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - array_append_zero
    - array_pop_back
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_zero_terminate(struct mail_index_strmap_view
      *view)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:824,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:830,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:832,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:833,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:834,1
    - Dst: mail_index_strmap_uid_exists
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:840,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:841,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:851,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:860,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:861,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:862,1
    - Dst: mail_index_strmap_zero_terminate
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:863,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:866,1
    - Dst: struct mail_index_strmap_view*::remap_cb
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:867,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:871,1
    - Dst: hash2_clear
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:872,1
    - Dst: hash2_insert_hash
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:875,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:876,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:881,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 47
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 816
    functionDepth: 2
    functionLinenumber: 816
    functionLinenumberEnd: 882
    functionName: mail_index_strmap_view_renumber
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_delete
    - memcpy
    - struct mail_index_strmap_view*::remap_cb
    - i_free
    - array_get_modifiable
    - mail_index_strmap_uid_exists
    - mail_index_strmap_zero_terminate
    - hash2_insert_hash
    - i_new
    - i_assert
    - hash2_clear
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_view_renumber(struct mail_index_strmap_view
      *view)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:898,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:901,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:902,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:903,1
    - Dst: mail_index_pack_num
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:907,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:921,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:928,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:932,1
    - Dst: mail_index_pack_num
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:935,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:936,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:938,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:940,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:941,1
    - Dst: mail_index_uint32_to_offset
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:949,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:950,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:953,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:954,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:955,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:960,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 51
    argCount: 4
    argNames:
    - view
    - output
    - i
    - base_uid
    argTypes:
    - struct mail_index_strmap_view*
    - struct ostream*
    - unsigned int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 963
    functionName: mail_index_strmap_write_block
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - o_stream_seek
    - array_get
    - mail_index_uint32_to_offset
    - mail_index_pack_num
    - o_stream_nsend
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_strmap_write_block(struct mail_index_strmap_view *view,\n\t\t\t\t\t
      \ struct ostream *output,\n\t\t\t\t\t  unsigned int i, uint32_t base_uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:972,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:975,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:978,1
    - Dst: mail_index_strmap_write_block
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - view
    - output
    argTypes:
    - struct mail_index_strmap_view*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 965
    functionDepth: 2
    functionLinenumber: 965
    functionLinenumberEnd: 982
    functionName: mail_index_strmap_recreate_write
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_strmap_write_block
    - o_stream_nsend
    - mail_index_get_header
    linkageType: ''
    returnType: void
    signature: "void mail_index_strmap_recreate_write(struct mail_index_strmap_view
      *view,\n\t\t\t\t struct ostream *output)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:992,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:994,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:995,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:999,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1000,1
    - Dst: safe_mkstemp_hostpid_group
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1001,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1004,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1007,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1012,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1013,1
    - Dst: mail_index_strmap_recreate_write
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1014,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1015,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1016,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1017,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1020,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1021,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1022,1
    - Dst: rename
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1025,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1026,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1032,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 1034
    functionName: mail_index_strmap_recreate
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - rename
    - str_c
    - t_str_new
    - mail_index_strmap_set_syscall_error
    - o_stream_create_fd
    - o_stream_get_error
    - mail_index_strmap_recreate_write
    - unlink
    - o_stream_cork
    - o_stream_finish
    - i_unlink
    - array_count
    - str_append
    - mail_index_set_error
    - o_stream_destroy
    - safe_mkstemp_hostpid_group
    - close
    linkageType: ''
    returnType: int
    signature: int mail_index_strmap_recreate(struct mail_index_strmap_view *view)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1042,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1045,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1050,1
    - Dst: file_wait_lock
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1052,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1056,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1061,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1063,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1066,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - strmap
    argTypes:
    - struct mail_index_strmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1036
    functionDepth: 2
    functionLinenumber: 1036
    functionLinenumberEnd: 1071
    functionName: mail_index_strmap_lock
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_set_syscall_error
    - file_dotlock_create
    - I_MIN
    - file_wait_lock
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: int mail_index_strmap_lock(struct mail_index_strmap *strmap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1076,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1078,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - strmap
    argTypes:
    - struct mail_index_strmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1073
    functionDepth: 1
    functionLinenumber: 1073
    functionLinenumberEnd: 1079
    functionName: mail_index_strmap_unlock
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - file_unlock
    - file_dotlock_delete
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_unlock(struct mail_index_strmap *strmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - uid
    - rec
    argTypes:
    - uint32_t*
    - struct mail_index_strmap_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1081
    functionDepth: 0
    functionLinenumber: 1081
    functionLinenumberEnd: 1086
    functionName: strmap_rec_cmp
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int strmap_rec_cmp(const uint32_t *uid, const struct mail_index_strmap_rec
      *rec)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1120,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1123,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1129,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1130,1
    - Dst: strmap_read_block_init
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1133,1
    - Dst: strmap_read_block_next
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1134,1
    - Dst: strmap_read_block_deinit
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1168,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1171,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1172,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1173,1
    - Dst: mail_index_strmap_write_block
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1174,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1176,1
    - Dst: mail_index_strmap_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1177,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1180,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1088
    functionDepth: 5
    functionLinenumber: 1088
    functionLinenumberEnd: 1182
    functionName: mail_index_strmap_write_append
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - mail_index_strmap_write_block
    - mail_index_strmap_set_syscall_error
    - o_stream_seek
    - strmap_read_block_deinit
    - i_stream_sync
    - array_get
    - strmap_read_block_init
    - strmap_read_block_next
    - o_stream_cork
    - o_stream_finish
    - i_stream_seek
    - i_assert
    - o_stream_destroy
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: int
    signature: int mail_index_strmap_write_append(struct mail_index_strmap_view *view)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: STRIDX_MUST_RENUMBER
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1190,1
    - Dst: hash2_count
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1191,1
    - Dst: mail_index_strmap_view_renumber
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1192,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1193,1
    - Dst: mail_index_strmap_recreate
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1194,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1202,1
    - Dst: mail_index_strmap_recreate
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1207,1
    - Dst: mail_index_strmap_lock
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1215,1
    - Dst: mail_index_strmap_need_reopen
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1218,1
    - Dst: mail_index_strmap_write_append
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1223,1
    - Dst: mail_index_strmap_unlock
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1225,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_strmap_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1184
    functionDepth: 6
    functionLinenumber: 1184
    functionLinenumberEnd: 1229
    functionName: mail_index_strmap_write
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_write_append
    - mail_index_strmap_lock
    - mail_index_strmap_view_renumber
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_index_strmap_unlock
    - mail_index_strmap_need_reopen
    - STRIDX_MUST_RENUMBER
    - hash2_count
    - mail_index_strmap_recreate
    linkageType: ''
    returnType: int
    signature: int mail_index_strmap_write(struct mail_index_strmap_view *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1237,1
    - Dst: mail_index_strmap_write
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1239,1
    - Dst: mail_index_strmap_zero_terminate
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1240,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1243,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _sync
    argTypes:
    - struct mail_index_strmap_view_sync**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1231
    functionDepth: 7
    functionLinenumber: 1231
    functionLinenumberEnd: 1245
    functionName: mail_index_strmap_view_sync_commit
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_write
    - mail_index_strmap_zero_terminate
    - array_pop_back
    - array_append_zero
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_view_sync_commit(struct mail_index_strmap_view_sync
      **_sync)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_strmap_view_reset
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1253,1
    - Dst: mail_index_strmap_zero_terminate
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1254,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-strmap.c:1255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _sync
    argTypes:
    - struct mail_index_strmap_view_sync**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1247
    functionDepth: 2
    functionLinenumber: 1247
    functionLinenumberEnd: 1256
    functionName: mail_index_strmap_view_sync_rollback
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-strmap.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_zero_terminate
    - i_free
    - mail_index_strmap_view_reset
    linkageType: ''
    returnType: void
    signature: void mail_index_strmap_view_sync_rollback(struct mail_index_strmap_view_sync
      **_sync)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - first_uid
    - last_uid
    - first_seq_r
    - last_seq_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 16
    functionName: test_lookup_seq_range
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-sync-ext.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void test_lookup_seq_range(struct mail_index_view *view ATTR_UNUSED,\n\t\t\t\t
      \ uint32_t first_uid, uint32_t last_uid,\n\t\t\t\t  uint32_t *first_seq_r, uint32_t
      *last_seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _type
    - ','
    - _value
    - ','
    - _diff
    - ','
    - _ret
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: TEST_ATOMIC
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-sync-ext.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ATOMIC(_type, _value, _diff, _ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _type
    - ','
    - _max
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 67
    functionName: TEST_ATOMIC_BLOCK
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-sync-ext.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ATOMIC_BLOCK(_type, _max)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:24,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:47,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - map
    - eol
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_index_map*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 54
    functionName: mail_index_sync_update_log_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_transaction_log_view_get_prev_pos
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_update_log_offset(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t\t  struct mail_index_map *map, bool eol)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:61,1
    - Dst: mail_index_sync_update_log_offset
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:63,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - map
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 69
    functionName: mail_index_sync_replace_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_update_log_offset
    - i_assert
    - mail_index_unmap
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_replace_map(struct mail_index_sync_map_ctx *ctx,\n\t\t\t\t\tstruct
      mail_index_map *map)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_clone
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:79,1
    - Dst: mail_index_sync_replace_map
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:80,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:81,1
    - Dst: MAIL_INDEX_MAP_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:84,1
    - Dst: mail_index_map_move_to_memory
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 89
    functionName: mail_index_sync_move_to_private_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_map_clone
    - mail_index_map_move_to_memory
    - MAIL_INDEX_MAP_IS_IN_MEMORY
    - i_assert
    - mail_index_sync_replace_map
    linkageType: ''
    returnType: struct mail_index_map
    signature: 'struct mail_index_map *

      mail_index_sync_move_to_private_memory(struct mail_index_sync_map_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_move_to_private_memory
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:96,1
    - Dst: mail_index_record_map_move_to_private
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: mail_index_sync_get_atomic_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_record_map_move_to_private
    - mail_index_sync_move_to_private_memory
    linkageType: ''
    returnType: struct mail_index_map
    signature: 'struct mail_index_map *

      mail_index_sync_get_atomic_map(struct mail_index_sync_map_ctx *ctx)'
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 4
    argNames:
    - hdr
    - old_flags
    - new_flags
    - error_r
    argTypes:
    - struct mail_index_header*
    - uint8_t
    - uint8_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 146
    functionName: mail_index_header_update_counts
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_index_header_update_counts(struct mail_index_header *hdr,\n\t\t\t\tuint8_t
      old_flags, uint8_t new_flags,\n\t\t\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:157,1
    - Dst: mail_index_header_update_counts
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:162,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - uid
    - old_flags
    - new_flags
    argTypes:
    - struct mail_index_sync_map_ctx*
    - uint32_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 167
    functionName: mail_index_sync_header_update_counts_all
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_set_corrupted
    - array_get
    - mail_index_header_update_counts
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_header_update_counts_all(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t\t\t uint32_t uid,\n\t\t\t\t\t uint8_t old_flags, uint8_t new_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:177,1
    - Dst: mail_index_header_update_counts
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:180,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - uid
    - old_flags
    - new_flags
    argTypes:
    - struct mail_index_sync_map_ctx*
    - uint32_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 185
    functionName: mail_index_sync_header_update_counts
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_set_corrupted
    - mail_index_header_update_counts
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_header_update_counts(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t\t     uint32_t uid, uint8_t old_flags,\n\t\t\t\t     uint8_t new_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - uid
    - flags
    argTypes:
    - struct mail_index_sync_map_ctx*
    - uint32_t
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 203
    functionName: mail_index_header_update_lowwaters
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: void
    signature: "void mail_index_header_update_lowwaters(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t\t   uint32_t uid, enum mail_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:213,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:215,1
    - Dst: struct mail_index_expunge_handler*::handler
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:216,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - seq1
    - seq2
    argTypes:
    - struct mail_index_sync_map_ctx*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 220
    functionName: sync_expunge_call_handlers
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    - PTR_OFFSET
    - struct mail_index_expunge_handler*::handler
    - array_foreach
    linkageType: ''
    returnType: void
    signature: "void sync_expunge_call_handlers(struct mail_index_sync_map_ctx *ctx,\n\t\t\t
      \  uint32_t seq1, uint32_t seq2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_init_expunge_handlers
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:230,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 235
    functionName: sync_expunge_handlers_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - mail_index_sync_init_expunge_handlers
    linkageType: ''
    returnType: bool
    signature: bool sync_expunge_handlers_init(struct mail_index_sync_map_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:245,1
    - Dst: mail_index_sync_get_atomic_map
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:250,1
    - Dst: sync_expunge_handlers_init
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:253,1
    - Dst: sync_expunge_call_handlers
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:255,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:269,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:272,1
    - Dst: mail_index_sync_header_update_counts
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:273,1
    - Dst: memmove
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:281,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:281,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:282,1
    - Dst: memmove
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:294,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:294,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:295,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - seqs
    argTypes:
    - struct mail_index_sync_map_ctx*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 237
    functionDepth: 5
    functionLinenumber: 237
    functionLinenumberEnd: 298
    functionName: sync_expunge_range
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - memmove
    - sync_expunge_handlers_init
    - array_get
    - mail_index_sync_get_atomic_map
    - mail_index_sync_header_update_counts
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - sync_expunge_call_handlers
    linkageType: ''
    returnType: void
    signature: void sync_expunge_range(struct mail_index_sync_map_ctx *ctx, const
      ARRAY_TYPE(seq_range) *seqs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:306,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 311
    functionName: sync_append_record
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - buffer_get_space_unsafe
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: void
    signature: void *sync_append_record(struct mail_index_map *map)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:325,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 337
    functionName: sync_update_ignored_change
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_get_prev_pos
    linkageType: ''
    returnType: bool
    signature: bool sync_update_ignored_change(struct mail_index_sync_map_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:350,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:354,1
    - Dst: mail_index_modseq_set
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:361,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:363,1
    - Dst: sync_update_ignored_change
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:367,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - u
    - size
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_modseq_update*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 371
    functionName: sync_modseq_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_set_corrupted
    - mail_index_modseq_set
    - mail_index_lookup_seq
    - sync_update_ignored_change
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int sync_modseq_update(struct mail_index_sync_map_ctx *ctx,\n\t\t
      \  const struct mail_transaction_modseq_update *u,\n\t\t   unsigned int size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:383,1
    - Dst: mail_index_sync_move_to_private_memory
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:392,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:395,1
    - Dst: MAIL_INDEX_MAP_IDX
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:399,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:400,1
    - Dst: sync_append_record
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:405,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:406,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:407,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:407,1
    - Dst: mail_index_modseq_update_to_highest
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:413,1
    - Dst: mail_index_header_update_lowwaters
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:425,1
    - Dst: mail_index_sync_header_update_counts
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:426,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - rec
    - ctx
    argTypes:
    - struct mail_index_record*
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 373
    functionDepth: 4
    functionLinenumber: 373
    functionLinenumberEnd: 428
    functionName: sync_append
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_sync_set_corrupted
    - PTR_OFFSET
    - mail_index_sync_move_to_private_memory
    - MAIL_INDEX_MAP_IDX
    - mail_index_header_update_lowwaters
    - memset
    - mail_index_modseq_update_to_highest
    - mail_index_sync_header_update_counts
    - sync_append_record
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int sync_append(const struct mail_index_record *rec,\n\t\t       struct
      mail_index_sync_map_ctx *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:438,1
    - Dst: MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:441,1
    - Dst: mail_index_modseq_update_to_highest
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:442,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:454,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:459,1
    - Dst: mail_index_header_update_lowwaters
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:464,1
    - Dst: mail_index_sync_header_update_counts_all
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:466,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - u
    - ctx
    argTypes:
    - struct mail_transaction_flag_update*
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 472
    functionName: sync_flag_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL
    - mail_index_sync_header_update_counts_all
    - mail_index_header_update_lowwaters
    - mail_index_lookup_seq_range
    - mail_index_modseq_update_to_highest
    - MAIL_INDEX_REC_AT_SEQ
    linkageType: ''
    returnType: int
    signature: "int sync_flag_update(const struct mail_transaction_flag_update *u,\n\t\t\t
      \   struct mail_index_sync_map_ctx *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:483,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:489,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:490,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:494,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:494,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:497,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:497,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - u
    - ctx
    argTypes:
    - struct mail_transaction_header_update*
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 513
    functionName: sync_header_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_sync_set_corrupted
    - PTR_OFFSET
    - buffer_write
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int sync_header_update(const struct mail_transaction_header_update
      *u,\n\t\t\t      struct mail_index_sync_map_ctx *ctx)"
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:526,1
    - Dst: sync_append
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:528,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:537,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:544,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:545,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:547,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:549,1
    - Dst: sync_expunge_range
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:551,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:557,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:564,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:565,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:567,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:569,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:570,1
    - Dst: sync_expunge_range
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:573,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:579,1
    - Dst: sync_flag_update
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:581,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:592,1
    - Dst: sync_header_update
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:593,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:609,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:622,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:624,1
    - Dst: mail_index_sync_ext_intro
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:626,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:641,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:646,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:647,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:647,1
    - Dst: mail_index_sync_ext_reset
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:648,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:656,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:660,1
    - Dst: mail_index_sync_ext_hdr_update
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:666,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:682,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:686,1
    - Dst: mail_index_sync_ext_hdr_update
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:692,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:708,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:724,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:727,1
    - Dst: mail_index_sync_ext_rec_update
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:733,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:743,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:755,1
    - Dst: mail_index_sync_ext_atomic_inc
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:757,1
    - Dst: mail_index_sync_keywords
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:766,1
    - Dst: mail_index_sync_keywords_reset
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:772,1
    - Dst: sync_modseq_update
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:778,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:797,1
    CyclomaticComplexity: 77
    EdgeCount: 77
    ICount: 202
    argCount: 3
    argNames:
    - ctx
    - hdr
    - data
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_header*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 515
    functionDepth: 6
    functionLinenumber: 515
    functionLinenumberEnd: 804
    functionName: mail_index_sync_record_real
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_set_corrupted
    - seq_range_array_add_range
    - mail_index_lookup_seq
    - mail_index_lookup_seq_range
    - mail_index_sync_ext_atomic_inc
    - CONST_PTR_OFFSET
    - memcpy
    - mail_index_sync_ext_rec_update
    - sync_modseq_update
    - I_MIN
    - i_zero
    - mail_index_sync_keywords
    - sync_append
    - i_assert
    - mail_index_sync_keywords_reset
    - seq_range_array_add
    - mail_index_sync_ext_intro
    - sync_header_update
    - t_array_init
    - mail_index_sync_ext_reset
    - ARRAY_TYPE
    - mail_transaction_log_view_get_prev_pos
    - sync_flag_update
    - sync_expunge_range
    - mail_index_sync_ext_hdr_update
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_record_real(struct mail_index_sync_map_ctx *ctx,\n\t\t\t
      \   const struct mail_transaction_header *hdr,\n\t\t\t    const void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_record_real
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - hdr
    - data
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_header*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 806
    functionDepth: 7
    functionLinenumber: 806
    functionLinenumberEnd: 814
    functionName: mail_index_sync_record
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_record_real
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_record(struct mail_index_sync_map_ctx *ctx,\n\t\t\t
      \  const struct mail_transaction_header *hdr,\n\t\t\t   const void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:822,1
    - Dst: mail_index_modseq_sync_begin
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:826,1
    - Dst: mail_index_sync_init_handlers
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - sync_map_ctx
    - view
    - type
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_index_view*
    - enum mail_index_sync_handler_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 829
    functionName: mail_index_sync_map_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_sync_init_handlers
    - mail_index_modseq_sync_begin
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_map_init(struct mail_index_sync_map_ctx *sync_map_ctx,\n\t\t\t
      \     struct mail_index_view *view,\n\t\t\t      enum mail_index_sync_handler_type
      type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:833,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:835,1
    - Dst: mail_index_sync_deinit_expunge_handlers
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:837,1
    - Dst: mail_index_sync_deinit_handlers
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - sync_map_ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 839
    functionName: mail_index_sync_map_deinit
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_assert
    - mail_index_sync_deinit_expunge_handlers
    - mail_index_sync_deinit_handlers
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_map_deinit(struct mail_index_sync_map_ctx *sync_map_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:852,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 841
    functionDepth: 1
    functionLinenumber: 841
    functionLinenumberEnd: 858
    functionName: mail_index_sync_update_hdr_dirty_flag
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_update_hdr_dirty_flag(struct mail_index_map *map)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:867,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:870,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:874,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:875,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:879,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:885,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:887,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:888,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 889
    functionName: mail_index_map_check
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - getenv
    linkageType: ''
    returnType: void
    signature: void mail_index_map_check(struct mail_index_map *map)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - map
    - type
    argTypes:
    - struct mail_index_map*
    - enum mail_index_sync_handler_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 926
    functionName: mail_index_sync_map_want_index_reopen
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_sync_map_want_index_reopen(struct mail_index_map *map,\n\t\t\t\t\t
      \  enum mail_index_sync_handler_type type)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:944,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:945,1
    - Dst: mail_index_view_open_with_map
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:950,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:951,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:956,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:962,1
    - Dst: mail_transaction_log_get_head
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:970,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:985,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:987,1
    - Dst: mail_index_sync_map_init
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:990,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:994,1
    - Dst: mail_index_map_alloc
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:996,1
    - Dst: mail_index_sync_replace_map
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1001,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1009,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1011,1
    - Dst: LOG_IS_BEFORE
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1014,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1018,1
    - Dst: mail_index_sync_record
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1023,1
    - Dst: mail_index_sync_update_hdr_dirty_flag
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1028,1
    - Dst: mail_index_modseq_sync_end
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1029,1
    - Dst: mail_index_sync_update_log_offset
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1031,1
    - Dst: mail_index_map_check
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1034,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1036,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1042,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1048,1
    - Dst: MAIL_INDEX_MAP_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1049,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1050,1
    - Dst: mail_index_sync_map_deinit
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1057,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1058,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1060,1
    - Dst: mail_index_map_check_header
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1062,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1063,1
    - Dst: mail_index_fsck
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1066,1
    - Dst: mail_index_fsck
      Src: /src/dovecot/src/lib-index/mail-index-sync-update.c:1070,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 72
    argCount: 3
    argNames:
    - _map
    - type
    - reason_r
    argTypes:
    - struct mail_index_map**
    - enum mail_index_sync_handler_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 928
    functionDepth: 8
    functionLinenumber: 928
    functionLinenumberEnd: 1076
    functionName: mail_index_sync_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_record
    - buffer_write
    - t_strdup_printf
    - mail_index_fsck
    - mail_transaction_log_get_head
    - mail_transaction_log_view_set
    - mail_index_map_check
    - LOG_IS_BEFORE
    - mail_index_map_alloc
    - mail_index_set_error
    - memcpy
    - mail_index_sync_update_hdr_dirty_flag
    - mail_index_modseq_sync_end
    - MAIL_INDEX_MAP_IS_IN_MEMORY
    - mail_index_view_close
    - mail_index_sync_update_log_offset
    - mail_index_sync_map_init
    - mail_index_view_open_with_map
    - i_assert
    - mail_index_sync_map_deinit
    - mail_transaction_log_view_next
    - ENUM_NEGATE
    - mail_transaction_log_view_get_prev_pos
    - mail_index_sync_replace_map
    - mail_index_map_check_header
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_map(struct mail_index_map **_map,\n\t\t\tenum
      mail_index_sync_handler_type type,\n\t\t\tconst char **reason_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index.c:17,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-index.c:18,1
    - Dst: test_mail_index_open
      Src: /src/dovecot/src/lib-index/test-mail-index.c:19,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-index.c:20,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-index.c:23,1
    - Dst: mail_index_reset
      Src: /src/dovecot/src/lib-index/test-mail-index.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:25,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:25,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-index.c:29,1
    - Dst: mail_index_reset
      Src: /src/dovecot/src/lib-index/test-mail-index.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:31,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:35,1
    - Dst: mail_transaction_log_find_file
      Src: /src/dovecot/src/lib-index/test-mail-index.c:35,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-index.c:37,1
    - Dst: test_mail_index_deinit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:38,1
    - Dst: test_mail_index_deinit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:39,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 41
    functionName: test_mail_index_rotate
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - test_mail_index_init
    - mail_index_view_open
    - mail_transaction_log_find_file
    - test_mail_index_open
    - test_end
    - test_assert
    - mail_index_reset
    - test_mail_index_deinit
    - mail_index_view_close
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_index_rotate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:53,1
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/test-mail-index.c:53,1
    - Dst: mail_index_write
      Src: /src/dovecot/src/lib-index/test-mail-index.c:55,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/test-mail-index.c:56,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-index/test-mail-index.c:59,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-index/test-mail-index.c:61,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-index.c:63,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-index.c:64,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-index/test-mail-index.c:66,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index.c:68,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-index/test-mail-index.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:70,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:70,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-index.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - index2
    - uid
    argTypes:
    - struct mail_index*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 72
    functionName: test_mail_index_new_extension_rotate_write
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_sync_lock
    - mail_index_append
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_index_write
    - mail_transaction_log_sync_unlock
    - mail_index_view_open
    - mail_index_update_ext
    - mail_index_update_header_ext
    - mail_index_ext_register
    - test_assert
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: "void test_mail_index_new_extension_rotate_write(struct mail_index
      *index2,\n\t\t\t\t\t   uint32_t uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:80,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/test-mail-index.c:80,1
    - Dst: mail_index_view_sync_begin
      Src: /src/dovecot/src/lib-index/test-mail-index.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:83,1
    - Dst: mail_index_view_sync_next
      Src: /src/dovecot/src/lib-index/test-mail-index.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:84,1
    - Dst: mail_index_view_sync_commit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: test_mail_index_new_extension_sync
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.c
    functionUses: 0
    functionsReached:
    - mail_index_view_sync_begin
    - test_assert
    - mail_index_view_sync_commit
    - mail_index_refresh
    - mail_index_view_sync_next
    linkageType: ''
    returnType: void
    signature: void test_mail_index_new_extension_sync(struct mail_index_view *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index.c:94,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-index.c:95,1
    - Dst: test_mail_index_open
      Src: /src/dovecot/src/lib-index/test-mail-index.c:96,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-index.c:97,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-index/test-mail-index.c:99,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-index.c:104,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/test-mail-index.c:106,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index.c:109,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-index/test-mail-index.c:110,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index.c:111,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-index/test-mail-index.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:113,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:116,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/test-mail-index.c:116,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-index.c:117,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-index.c:118,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-index.c:121,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-index.c:122,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-index/test-mail-index.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:125,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:125,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-index.c:126,1
    - Dst: test_mail_index_new_extension_sync
      Src: /src/dovecot/src/lib-index/test-mail-index.c:129,1
    - Dst: test_mail_index_new_extension_rotate_write
      Src: /src/dovecot/src/lib-index/test-mail-index.c:132,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-index.c:135,1
    - Dst: test_mail_index_new_extension_sync
      Src: /src/dovecot/src/lib-index/test-mail-index.c:136,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-index.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.c:138,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-index/test-mail-index.c:138,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-index/test-mail-index.c:146,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-index.c:147,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index.c:147,1
    - Dst: test_mail_index_new_extension_rotate_write
      Src: /src/dovecot/src/lib-index/test-mail-index.c:151,1
    - Dst: test_mail_index_new_extension_sync
      Src: /src/dovecot/src/lib-index/test-mail-index.c:153,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-index.c:155,1
    - Dst: test_mail_index_deinit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:156,1
    - Dst: test_mail_index_deinit
      Src: /src/dovecot/src/lib-index/test-mail-index.c:157,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 87
    functionDepth: 4
    functionLinenumber: 87
    functionLinenumberEnd: 159
    functionName: test_mail_index_new_extension
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - mail_index_lookup_ext
    - test_mail_index_open
    - test_assert
    - mail_index_append
    - test_expect_no_more_errors
    - mail_index_transaction_commit
    - mail_index_view_open
    - test_expect_error_string
    - test_end
    - test_mail_index_deinit
    - mail_index_view_close
    - test_mail_index_init
    - mail_index_get_header
    - test_mail_index_new_extension_sync
    - mail_index_refresh
    - mail_index_transaction_begin
    - mail_index_update_header
    - mail_index_update_ext
    - test_mail_index_new_extension_rotate_write
    - mail_index_ext_register
    - memcmp
    - test_begin
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void test_mail_index_new_extension(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-index/test-mail-index.c:168,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-index.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 170
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.c
    functionUses: 0
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: MAIL_INDEX_ALLOC_CACHE_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_ALLOC_CACHE_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:45,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:49,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - index
    - mailbox_path
    - st
    argTypes:
    - struct mail_index*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 58
    functionName: mail_index_alloc_cache_add
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - MODULE_CONTEXT_SET
    - i_new
    linkageType: ''
    returnType: struct mail_index_alloc_cache_list
    signature: "struct mail_index_alloc_cache_list *\nmail_index_alloc_cache_add(struct
      mail_index *index,\n\t\t\t   const char *mailbox_path, struct stat *st)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:64,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mail_index_alloc_cache_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 69
    functionName: mail_index_alloc_cache_list_unref
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - mail_index_close
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_index_alloc_cache_list_unref(struct mail_index_alloc_cache_list
      *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:74,1
    - Dst: mail_index_alloc_cache_list_unref
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:77,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:78,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:79,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mail_index_alloc_cache_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: mail_index_alloc_cache_list_free
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_index_free
    - i_free
    - mail_index_alloc_cache_list_unref
    linkageType: ''
    returnType: void
    signature: void mail_index_alloc_cache_list_free(struct mail_index_alloc_cache_list
      *list)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:104,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:108,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:110,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:117,1
    - Dst: mail_index_alloc_cache_list_free
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:125,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 32
    argCount: 3
    argNames:
    - mailbox_path
    - index_dir
    - index_st
    argTypes:
    - char*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 135
    functionName: mail_index_alloc_cache_find_and_expire
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - strcmp
    - stat
    - CMP_DEV_T
    - mail_index_alloc_cache_list_free
    linkageType: ''
    returnType: struct mail_index_alloc_cache_list
    signature: "struct mail_index_alloc_cache_list *\nmail_index_alloc_cache_find_and_expire(const
      char *mailbox_path,\n\t\t\t\t       const char *index_dir,\n\t\t\t\t       const
      struct stat *index_st)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:147,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:150,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:153,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:154,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:155,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:157,1
    - Dst: mail_index_alloc_cache_find_and_expire
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:161,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:165,1
    - Dst: mail_index_alloc_cache_add
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:166,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - parent_event
    - mailbox_path
    - index_dir
    - prefix
    argTypes:
    - struct event*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 172
    functionName: mail_index_alloc_cache_get
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_alloc
    - mail_index_alloc_cache_find_and_expire
    - e_error
    - mail_index_alloc_cache_add
    - stat
    - eacces_error_get
    - ENOACCESS
    - i_assert
    linkageType: ''
    returnType: struct mail_index
    signature: "struct mail_index *\nmail_index_alloc_cache_get(struct event *parent_event,
      const char *mailbox_path,\n\t\t\t   const char *index_dir, const char *prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:180,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:182,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:188,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - index_dir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 192
    functionName: mail_index_alloc_cache_find
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - stat
    - i_error
    - CMP_DEV_T
    linkageType: ''
    returnType: struct mail_index
    signature: 'struct mail_index *

      mail_index_alloc_cache_find(const char *index_dir)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_alloc_cache_list_free
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:207,1
    - Dst: mail_index_alloc_cache_list_unref
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:221,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:228,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 1
    argNames:
    - min_destroy_count
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 230
    functionName: destroy_unrefed
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - mail_index_alloc_cache_list_unref
    - timeout_remove
    - mail_index_alloc_cache_list_free
    linkageType: ''
    returnType: bool
    signature: bool destroy_unrefed(unsigned int min_destroy_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_unrefed
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 236
    functionName: index_removal_timeout
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - destroy_unrefed
    linkageType: ''
    returnType: void
    signature: void index_removal_timeout(void *context ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:252,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:253,1
    - Dst: mail_index_alloc_cache_list_free
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:261,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:265,1
    - Dst: io_loop_get_root
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:265,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - _index
    argTypes:
    - struct mail_index**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 238
    functionDepth: 3
    functionLinenumber: 238
    functionLinenumberEnd: 269
    functionName: mail_index_alloc_cache_unref
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - timeout_add_to
    - i_assert
    - io_loop_get_root
    - mail_index_alloc_cache_list_free
    linkageType: ''
    returnType: void
    signature: void mail_index_alloc_cache_unref(struct mail_index **_index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_unrefed
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 274
    functionName: mail_index_alloc_cache_destroy_unrefed
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - destroy_unrefed
    linkageType: ''
    returnType: void
    signature: void mail_index_alloc_cache_destroy_unrefed(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_ALLOC_CACHE_CONTEXT
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:279,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:283,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:285,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 290
    functionName: mail_index_alloc_cache_index_opened
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - stat
    - MAIL_INDEX_ALLOC_CACHE_CONTEXT
    - MAIL_INDEX_IS_IN_MEMORY
    linkageType: ''
    returnType: void
    signature: void mail_index_alloc_cache_index_opened(struct mail_index *index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_ALLOC_CACHE_CONTEXT
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:295,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:297,1
    - Dst: destroy_unrefed
      Src: /src/dovecot/src/lib-index/mail-index-alloc-cache.c:306,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 315
    functionName: mail_index_alloc_cache_index_closing
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    functionUses: 0
    functionsReached:
    - i_assert
    - destroy_unrefed
    - MAIL_INDEX_ALLOC_CACHE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_index_alloc_cache_index_closing(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cache
    - function
    argTypes:
    - struct mail_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 29
    functionName: mail_cache_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_index_file_set_syscall_error
    linkageType: ''
    returnType: void
    signature: "void mail_cache_set_syscall_error(struct mail_cache *cache,\n\t\t\t\t
      \ const char *function)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-cache.c:33,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-index/mail-cache.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: mail_cache_unlink
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - i_unlink_if_exists
    - MAIL_INDEX_IS_IN_MEMORY
    linkageType: ''
    returnType: void
    signature: void mail_cache_unlink(struct mail_cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_unlink
      Src: /src/dovecot/src/lib-index/mail-cache.c:43,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-index/mail-cache.c:45,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-index/mail-cache.c:47,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache.c:48,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:50,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-index/mail-cache.c:50,1
    - Dst: mail_index_set_error_nolog
      Src: /src/dovecot/src/lib-index/mail-cache.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - cache
    - fmt
    argTypes:
    - struct mail_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 54
    functionName: mail_cache_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 4
    functionsReached:
    - mail_index_set_error_nolog
    - va_start
    - t_strdup_printf
    - e_error
    - t_strdup_vprintf
    - event_create_passthrough
    - mail_cache_unlink
    linkageType: ''
    returnType: void
    signature: void mail_cache_set_corrupted(struct mail_cache *cache, const char
      *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/mail-cache.c:67,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-index/mail-cache.c:68,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/mail-cache.c:70,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-index/mail-cache.c:76,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache.c:77,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:79,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-index/mail-cache.c:79,1
    - Dst: mail_cache_expunge_count
      Src: /src/dovecot/src/lib-index/mail-cache.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - cache_view
    - seq
    - reason
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 84
    functionName: mail_cache_set_seq_corrupted_reason
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_begin
    - mail_index_lookup_uid
    - mail_index_transaction_commit
    - t_strdup_printf
    - mail_index_update_ext
    - e_error
    - mail_cache_expunge_count
    - event_create_passthrough
    linkageType: ''
    returnType: void
    signature: "void mail_cache_set_seq_corrupted_reason(struct mail_cache_view *cache_view,\n\t\t\t\t\t
      uint32_t seq, const char *reason)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/dovecot/src/lib-index/mail-cache.c:89,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:90,1
    - Dst: file_cache_set_fd
      Src: /src/dovecot/src/lib-index/mail-cache.c:94,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache.c:96,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:103,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-cache.c:107,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:108,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 112
    functionName: mail_cache_file_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - buffer_set_used_size
    - munmap
    - file_lock_free
    - close
    - file_cache_set_fd
    linkageType: ''
    returnType: void
    signature: void mail_cache_file_close(struct mail_cache *cache)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_cache_set_fd
      Src: /src/dovecot/src/lib-index/mail-cache.c:119,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-cache.c:121,1
    - Dst: file_cache_set_size
      Src: /src/dovecot/src/lib-index/mail-cache.c:123,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-cache.c:124,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 131
    functionName: mail_cache_init_file_cache
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - file_cache_set_size
    - ESTALE_FSTAT
    - fstat
    - file_cache_set_fd
    linkageType: ''
    returnType: void
    signature: void mail_cache_init_file_cache(struct mail_cache *cache)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:137,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-cache.c:140,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:143,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-index/mail-cache.c:144,1
    - Dst: mail_cache_file_close
      Src: /src/dovecot/src/lib-index/mail-cache.c:148,1
    - Dst: mail_cache_purge_later_reset
      Src: /src/dovecot/src/lib-index/mail-cache.c:150,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:154,1
    - Dst: mail_cache_init_file_cache
      Src: /src/dovecot/src/lib-index/mail-cache.c:158,1
    - Dst: mail_cache_map_all
      Src: /src/dovecot/src/lib-index/mail-cache.c:160,1
    - Dst: mail_cache_file_close
      Src: /src/dovecot/src/lib-index/mail-cache.c:161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 165
    functionName: mail_cache_try_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - mail_cache_map_all
    - mail_cache_file_close
    - mail_cache_purge_later_reset
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_cache_init_file_cache
    - nfs_safe_open
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mail_cache_try_open(struct mail_cache *cache)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-cache.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:181,1
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib-index/mail-cache.c:182,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-index/mail-cache.c:184,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:188,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-cache.c:194,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-cache.c:203,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-cache.c:204,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:206,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 211
    functionName: mail_cache_need_reopen
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - MAIL_INDEX_IS_IN_MEMORY
    - ESTALE_FSTAT
    - fstat
    - nfs_flush_file_handle_cache
    - CMP_DEV_T
    - nfs_safe_stat
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_need_reopen(struct mail_cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_file_close
      Src: /src/dovecot/src/lib-index/mail-cache.c:215,1
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/lib-index/mail-cache.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 217
    functionName: mail_cache_reopen
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_open_and_verify
    - mail_cache_file_close
    linkageType: ''
    returnType: int
    signature: int mail_cache_reopen(struct mail_cache *cache)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_purge_later
      Src: /src/dovecot/src/lib-index/mail-cache.c:231,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-index/mail-cache.c:244,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache.c:252,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache.c:261,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-cache.c:267,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-cache.c:268,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:269,1
    - Dst: mail_cache_purge_later
      Src: /src/dovecot/src/lib-index/mail-cache.c:273,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 276
    functionName: mail_cache_update_need_purge
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - t_strdup_printf
    - I_MAX
    - ESTALE_FSTAT
    - fstat
    - mail_cache_purge_later
    linkageType: ''
    returnType: void
    signature: void mail_cache_update_need_purge(struct mail_cache *cache)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache.c:283,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache.c:289,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache.c:295,1
    - Dst: mail_cache_unlink
      Src: /src/dovecot/src/lib-index/mail-cache.c:302,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache.c:306,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - cache
    - hdr
    argTypes:
    - struct mail_cache*
    - struct mail_cache_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 278
    functionDepth: 3
    functionLinenumber: 278
    functionLinenumberEnd: 310
    functionName: mail_cache_verify_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_corrupted
    - mail_cache_unlink
    linkageType: ''
    returnType: bool
    signature: "bool mail_cache_verify_header(struct mail_cache *cache,\n\t\t\t\t
      \    const struct mail_cache_header *hdr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_verify_header
      Src: /src/dovecot/src/lib-index/mail-cache.c:323,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache.c:324,1
    - Dst: mail_cache_purge_later
      Src: /src/dovecot/src/lib-index/mail-cache.c:326,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-cache.c:335,1
    - Dst: mail_cache_update_need_purge
      Src: /src/dovecot/src/lib-index/mail-cache.c:339,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:341,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:343,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 6
    argNames:
    - cache
    - offset
    - size
    - hdr_data
    - copy_hdr
    - corrupted_r
    argTypes:
    - struct mail_cache*
    - uoff_t
    - size_t
    - void*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 312
    functionDepth: 4
    functionLinenumber: 312
    functionLinenumberEnd: 348
    functionName: mail_cache_map_finish
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_cache_verify_header
    - mail_cache_update_need_purge
    - mail_cache_purge_later
    - i_assert
    - MAIL_CACHE_IS_UNUSABLE
    linkageType: ''
    returnType: int
    signature: "int mail_cache_map_finish(struct mail_cache *cache, uoff_t offset,
      size_t size,\n\t\t      const void *hdr_data, bool copy_hdr, bool *corrupted_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-cache.c:360,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache.c:364,1
    - Dst: mail_cache_map_finish
      Src: /src/dovecot/src/lib-index/mail-cache.c:367,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache.c:370,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-cache.c:379,1
    - Dst: pread
      Src: /src/dovecot/src/lib-index/mail-cache.c:380,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:383,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache.c:385,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache.c:390,1
    - Dst: mail_cache_map_finish
      Src: /src/dovecot/src/lib-index/mail-cache.c:397,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 5
    argNames:
    - cache
    - offset
    - size
    - data_r
    - corrupted_r
    argTypes:
    - struct mail_cache*
    - size_t
    - size_t
    - void**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 350
    functionDepth: 5
    functionLinenumber: 350
    functionLinenumberEnd: 400
    functionName: mail_cache_map_with_read
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - buffer_create_dynamic
    - buffer_set_used_size
    - buffer_append_space_unsafe
    - mail_cache_map_finish
    - pread
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int mail_cache_map_with_read(struct mail_cache *cache, size_t offset,
      size_t size,\n\t\t\t const void **data_r, bool *corrupted_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-cache.c:421,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:422,1
    - Dst: mail_cache_map_with_read
      Src: /src/dovecot/src/lib-index/mail-cache.c:437,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib-index/mail-cache.c:441,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:451,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib-index/mail-cache.c:456,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache.c:459,1
    - Dst: mail_cache_map_finish
      Src: /src/dovecot/src/lib-index/mail-cache.c:460,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:468,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache.c:469,1
    - Dst: munmap
      Src: /src/dovecot/src/lib-index/mail-cache.c:478,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:479,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:484,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-cache.c:485,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache.c:494,1
    - Dst: mmap_ro_file
      Src: /src/dovecot/src/lib-index/mail-cache.c:496,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:501,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-cache.c:501,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache.c:508,1
    - Dst: mail_cache_map_finish
      Src: /src/dovecot/src/lib-index/mail-cache.c:509,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 65
    argCount: 5
    argNames:
    - cache
    - offset
    - size
    - data_r
    - corrupted_r
    argTypes:
    - struct mail_cache*
    - size_t
    - size_t
    - void**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 402
    functionDepth: 6
    functionLinenumber: 402
    functionLinenumberEnd: 511
    functionName: mail_cache_map_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - mmap_ro_file
    - i_assert
    - file_cache_read
    - MAIL_INDEX_IS_IN_MEMORY
    - t_strdup_printf
    - mail_cache_map_with_read
    - buffer_set_used_size
    - e_error
    - munmap
    - fstat
    - mail_cache_map_finish
    - file_cache_get_map
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int mail_cache_map_full(struct mail_cache *cache, size_t offset, size_t
      size,\n\t\t    const void **data_r, bool *corrupted_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:516,1
    - Dst: mail_cache_map_full
      Src: /src/dovecot/src/lib-index/mail-cache.c:519,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - cache
    - offset
    - size
    - data_r
    argTypes:
    - struct mail_cache*
    - size_t
    - size_t
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 513
    functionDepth: 7
    functionLinenumber: 513
    functionLinenumberEnd: 522
    functionName: mail_cache_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 1
    functionsReached:
    - i_assert
    - mail_cache_map_full
    linkageType: ''
    returnType: int
    signature: "int mail_cache_map(struct mail_cache *cache, size_t offset, size_t
      size,\n\t\t   const void **data_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_map_full
      Src: /src/dovecot/src/lib-index/mail-cache.c:529,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:530,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 524
    functionDepth: 7
    functionLinenumber: 524
    functionLinenumberEnd: 536
    functionName: mail_cache_map_all
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 1
    functionsReached:
    - i_assert
    - mail_cache_map_full
    linkageType: ''
    returnType: int
    signature: int mail_cache_map_all(struct mail_cache *cache)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache.c:543,1
    - Dst: mail_cache_file_close
      Src: /src/dovecot/src/lib-index/mail-cache.c:545,1
    - Dst: mail_cache_try_open
      Src: /src/dovecot/src/lib-index/mail-cache.c:547,1
    - Dst: mail_cache_file_close
      Src: /src/dovecot/src/lib-index/mail-cache.c:549,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/mail-cache.c:554,1
    - Dst: mail_cache_file_close
      Src: /src/dovecot/src/lib-index/mail-cache.c:561,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 538
    functionDepth: 3
    functionLinenumber: 538
    functionLinenumberEnd: 564
    functionName: mail_cache_open_and_verify
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 2
    functionsReached:
    - mail_cache_try_open
    - mail_cache_header_fields_read
    - MAIL_CACHE_IS_UNUSABLE
    - mail_cache_file_close
    linkageType: ''
    returnType: int
    signature: int mail_cache_open_and_verify(struct mail_cache *cache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-cache.c:571,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-cache.c:574,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-index/mail-cache.c:575,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-index/mail-cache.c:576,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-index/mail-cache.c:579,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-index/mail-cache.c:580,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-cache.c:587,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-cache.c:590,1
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib-index/mail-cache.c:592,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-index/mail-cache.c:597,1
    - Dst: mail_index_register_expunge_handler
      Src: /src/dovecot/src/lib-index/mail-cache.c:599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - index
    - path
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 602
    functionName: mail_cache_open_or_create_path
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - hash_table_create
    - mail_index_register_expunge_handler
    - MAIL_INDEX_IS_IN_MEMORY
    - I_MIN
    - file_cache_new_path
    - i_strdup
    - i_new
    - mail_index_ext_register
    - event_add_category
    linkageType: ''
    returnType: struct mail_cache
    signature: 'struct mail_cache *

      mail_cache_open_or_create_path(struct mail_index *index, const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-cache.c:606,1
    - Dst: mail_cache_open_or_create_path
      Src: /src/dovecot/src/lib-index/mail-cache.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 604
    functionDepth: 2
    functionLinenumber: 604
    functionLinenumberEnd: 609
    functionName: mail_cache_open_or_create
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - mail_cache_open_or_create_path
    linkageType: ''
    returnType: struct mail_cache
    signature: struct mail_cache *mail_cache_open_or_create(struct mail_index *index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:617,1
    - Dst: file_cache_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:620,1
    - Dst: mail_index_unregister_expunge_handler
      Src: /src/dovecot/src/lib-index/mail-cache.c:622,1
    - Dst: mail_cache_file_close
      Src: /src/dovecot/src/lib-index/mail-cache.c:623,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:625,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-index/mail-cache.c:626,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-index/mail-cache.c:627,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-index/mail-cache.c:628,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:629,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:630,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:631,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:632,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:633,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - _cache
    argTypes:
    - struct mail_cache**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 611
    functionDepth: 2
    functionLinenumber: 611
    functionLinenumberEnd: 635
    functionName: mail_cache_free
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - event_unref
    - file_cache_free
    - mail_cache_file_close
    - mail_index_unregister_expunge_handler
    - pool_unref
    - buffer_free
    - i_assert
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void mail_cache_free(struct mail_cache **_cache)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:649,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-cache.c:651,1
    - Dst: mail_index_lock_fd
      Src: /src/dovecot/src/lib-index/mail-cache.c:654,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-index/mail-cache.c:663,1
    - Dst: file_lock_from_dotlock
      Src: /src/dovecot/src/lib-index/mail-cache.c:666,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:668,1
    - Dst: mail_index_flush_read_cache
      Src: /src/dovecot/src/lib-index/mail-cache.c:680,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 637
    functionDepth: 1
    functionLinenumber: 637
    functionLinenumberEnd: 683
    functionName: mail_cache_lock_file
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_index_lock_fd
    - mail_cache_set_syscall_error
    - I_MIN
    - file_dotlock_create
    - mail_index_flush_read_cache
    - i_assert
    - file_lock_from_dotlock
    linkageType: ''
    returnType: int
    signature: int mail_cache_lock_file(struct mail_cache *cache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-index/mail-cache.c:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 689
    functionName: mail_cache_unlock_file
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - file_unlock
    linkageType: ''
    returnType: void
    signature: void mail_cache_unlock_file(struct mail_cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/mail-cache.c:698,1
    - Dst: mail_index_view_get_ext
      Src: /src/dovecot/src/lib-index/mail-cache.c:699,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-cache.c:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - cache
    - reset_id_r
    argTypes:
    - struct mail_cache*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 705
    functionName: mail_cache_verify_reset_id
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_index_view_close
    - mail_index_view_open
    - mail_index_view_get_ext
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_verify_reset_id(struct mail_cache *cache, uint32_t
      *reset_id_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_unlock_file
      Src: /src/dovecot/src/lib-index/mail-cache.c:725,1
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/mail-cache.c:726,1
    - Dst: mail_cache_lock_file
      Src: /src/dovecot/src/lib-index/mail-cache.c:733,1
    - Dst: mail_cache_need_reopen
      Src: /src/dovecot/src/lib-index/mail-cache.c:736,1
    - Dst: mail_cache_reopen
      Src: /src/dovecot/src/lib-index/mail-cache.c:740,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/mail-cache.c:746,1
    - Dst: mail_cache_verify_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache.c:749,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-cache.c:750,1
    - Dst: mail_cache_unlock_file
      Src: /src/dovecot/src/lib-index/mail-cache.c:752,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 2
    argNames:
    - cache
    - reset_id_r
    argTypes:
    - struct mail_cache*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 707
    functionDepth: 3
    functionLinenumber: 707
    functionLinenumberEnd: 754
    functionName: mail_cache_sync_wait_index
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_sync_lock
    - mail_cache_lock_file
    - mail_transaction_log_sync_unlock
    - mail_cache_reopen
    - mail_cache_unlock_file
    - mail_cache_need_reopen
    - mail_index_refresh
    - mail_cache_verify_reset_id
    linkageType: ''
    returnType: int
    signature: int mail_cache_sync_wait_index(struct mail_cache *cache, uint32_t *reset_id_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_verify_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache.c:762,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:769,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache.c:770,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/mail-cache.c:775,1
    - Dst: mail_cache_verify_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache.c:777,1
    - Dst: mail_cache_sync_wait_index
      Src: /src/dovecot/src/lib-index/mail-cache.c:782,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache.c:784,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 756
    functionDepth: 4
    functionLinenumber: 756
    functionLinenumberEnd: 791
    functionName: mail_cache_sync_reset_id
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 1
    functionsReached:
    - mail_cache_sync_wait_index
    - mail_cache_set_corrupted
    - i_assert
    - mail_index_refresh
    - mail_cache_verify_reset_id
    linkageType: ''
    returnType: int
    signature: int mail_cache_sync_reset_id(struct mail_cache *cache)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:797,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:801,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-cache.c:803,1
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/lib-index/mail-cache.c:810,1
    - Dst: mail_cache_lock_file
      Src: /src/dovecot/src/lib-index/mail-cache.c:819,1
    - Dst: mail_cache_need_reopen
      Src: /src/dovecot/src/lib-index/mail-cache.c:821,1
    - Dst: mail_cache_reopen
      Src: /src/dovecot/src/lib-index/mail-cache.c:825,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:826,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:829,1
    - Dst: mail_cache_sync_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache.c:833,1
    - Dst: mail_cache_unlock_file
      Src: /src/dovecot/src/lib-index/mail-cache.c:834,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:837,1
    - Dst: file_cache_invalidate
      Src: /src/dovecot/src/lib-index/mail-cache.c:844,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache.c:848,1
    - Dst: mail_cache_map_all
      Src: /src/dovecot/src/lib-index/mail-cache.c:849,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/mail-cache.c:850,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 793
    functionDepth: 8
    functionLinenumber: 793
    functionLinenumberEnd: 855
    functionName: mail_cache_lock
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_map_all
    - i_assert
    - mail_cache_unlock
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_cache_sync_reset_id
    - mail_cache_lock_file
    - file_cache_invalidate
    - buffer_set_used_size
    - mail_cache_reopen
    - mail_cache_unlock_file
    - mail_cache_need_reopen
    - mail_cache_open_and_verify
    linkageType: ''
    returnType: int
    signature: int mail_cache_lock(struct mail_cache *cache)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:861,1
    - Dst: mail_cache_header_fields_update
      Src: /src/dovecot/src/lib-index/mail-cache.c:864,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache.c:869,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/mail-cache.c:870,1
    - Dst: mail_cache_write
      Src: /src/dovecot/src/lib-index/mail-cache.c:876,1
    - Dst: mail_cache_update_need_purge
      Src: /src/dovecot/src/lib-index/mail-cache.c:880,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/mail-cache.c:883,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 857
    functionDepth: 2
    functionLinenumber: 857
    functionLinenumberEnd: 885
    functionName: mail_cache_flush_and_unlock
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_unlock
    - mail_cache_header_fields_update
    - mail_cache_update_need_purge
    - i_assert
    - MAIL_CACHE_IS_UNUSABLE
    - mail_cache_write
    linkageType: ''
    returnType: int
    signature: int mail_cache_flush_and_unlock(struct mail_cache *cache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:889,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache.c:891,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-index/mail-cache.c:895,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:896,1
    - Dst: mail_cache_unlock_file
      Src: /src/dovecot/src/lib-index/mail-cache.c:900,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 887
    functionDepth: 2
    functionLinenumber: 887
    functionLinenumberEnd: 901
    functionName: mail_cache_unlock
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 2
    functionsReached:
    - mail_cache_set_syscall_error
    - fdatasync
    - mail_cache_unlock_file
    - i_assert
    - MAIL_CACHE_IS_UNUSABLE
    linkageType: ''
    returnType: void
    signature: void mail_cache_unlock(struct mail_cache *cache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:906,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-index/mail-cache.c:908,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:909,1
    - Dst: file_cache_write
      Src: /src/dovecot/src/lib-index/mail-cache.c:914,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache.c:916,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - cache
    - data
    - size
    - offset
    argTypes:
    - struct mail_cache*
    - void*
    - size_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 903
    functionDepth: 1
    functionLinenumber: 903
    functionLinenumberEnd: 918
    functionName: mail_cache_write
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 1
    functionsReached:
    - mail_cache_set_syscall_error
    - file_cache_write
    - pwrite_full
    - buffer_set_used_size
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_cache_write(struct mail_cache *cache, const void *data, size_t
      size,\n\t\t     uoff_t offset)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-cache.c:926,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-cache.c:927,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache.c:928,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache.c:933,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache.c:940,1
    - Dst: mail_cache_write
      Src: /src/dovecot/src/lib-index/mail-cache.c:943,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - cache
    - data
    - size
    - offset
    argTypes:
    - struct mail_cache*
    - void*
    - size_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 920
    functionDepth: 3
    functionLinenumber: 920
    functionLinenumberEnd: 946
    functionName: mail_cache_append
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - ESTALE_FSTAT
    - fstat
    - mail_cache_set_corrupted
    - mail_cache_write
    linkageType: ''
    returnType: int
    signature: "int mail_cache_append(struct mail_cache *cache, const void *data,
      size_t size,\n\t\t      uint32_t *offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache.c:950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 951
    functionName: mail_cache_exists
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - MAIL_CACHE_IS_UNUSABLE
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_exists(struct mail_cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-cache.c:958,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-cache.c:962,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-index/mail-cache.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - cache
    - iview
    argTypes:
    - struct mail_cache*
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 966
    functionName: mail_cache_view_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct mail_cache_view
    signature: 'struct mail_cache_view *

      mail_cache_view_open(struct mail_cache *cache, struct mail_index_view *iview)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache.c:972,1
    - Dst: mail_cache_header_fields_update
      Src: /src/dovecot/src/lib-index/mail-cache.c:977,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-index/mail-cache.c:979,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:980,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache.c:981,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _view
    argTypes:
    - struct mail_cache_view**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 982
    functionName: mail_cache_view_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - i_free
    - mail_cache_header_fields_update
    - buffer_free
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void mail_cache_view_close(struct mail_cache_view **_view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - view
    - update
    argTypes:
    - struct mail_cache_view*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 984
    functionDepth: 0
    functionLinenumber: 984
    functionLinenumberEnd: 988
    functionName: mail_cache_view_update_cache_decisions
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_cache_view_update_cache_decisions(struct mail_cache_view
      *view,\n\t\t\t\t\t    bool update)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-index/mail-cache.c:995,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-cache.c:999,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 1006
    functionName: mail_cache_get_first_new_seq
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_index_get_header
    - mail_index_lookup_seq_range
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_cache_get_first_new_seq(struct mail_index_view *view)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:23,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:26,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:27,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:28,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:30,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:32,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:33,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:34,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:35,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:37,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:38,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:49,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 53
    functionName: mail_index_sync_init_expunge_handlers
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_array_init
    - array_push_back
    - array_get_modifiable
    - I_MIN
    - array_get
    - array_clear
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_init_expunge_handlers(struct mail_index_sync_map_ctx
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:60,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:63,1
    - Dst: struct mail_index_expunge_handler*::handler
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:65,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: mail_index_sync_deinit_expunge_handlers
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - array_free
    - array_is_created
    - struct mail_index_expunge_handler*::handler
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_deinit_expunge_handlers(struct mail_index_sync_map_ctx
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:74,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:78,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:79,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:81,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:82,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 89
    functionName: mail_index_sync_init_handlers
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - array_count
    - array_idx_get_space
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_init_handlers(struct mail_index_sync_map_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:93,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: mail_index_sync_deinit_handlers
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_deinit_handlers(struct mail_index_sync_map_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:104,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:105,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:106,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:106,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - map
    - ext
    argTypes:
    - struct mail_index_map*
    - struct mail_index_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 109
    functionName: get_ext_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - strlen
    - buffer_get_modifiable_data
    - memcmp
    - i_assert
    linkageType: ''
    returnType: struct mail_index_ext_header
    signature: 'struct mail_index_ext_header *

      get_ext_header(struct mail_index_map *map, const struct mail_index_ext *ext)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: mail_index_ext_align_cmp
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mail_index_ext_align_cmp(const void *p1, const void *p2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:130,1
    - Dst: MAIL_INDEX_MAP_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:130,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:132,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:133,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:136,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:137,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:138,1
    - Dst: qsort
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:145,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:179,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:194,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:198,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:203,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:208,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:209,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:212,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:219,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:220,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:223,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:226,1
    - Dst: get_ext_header
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:231,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 72
    argCount: 3
    argNames:
    - map
    - ext_map_idx
    - old_ext_size
    argTypes:
    - struct mail_index_map*
    - uint32_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 234
    functionName: sync_ext_reorder
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 0
    functionsReached:
    - t_new
    - buffer_append_zero
    - array_get_modifiable
    - buffer_write
    - buffer_create_dynamic
    - get_ext_header
    - buffer_get_modifiable_data
    - MAIL_INDEX_MAP_IS_IN_MEMORY
    - qsort
    - buffer_free
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void sync_ext_reorder(struct mail_index_map *map, uint32_t ext_map_idx,\n\t\t\t
      \    uint16_t old_ext_size)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:247,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:248,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:249,1
    - Dst: mail_index_sync_get_atomic_map
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:264,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:266,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:273,1
    - Dst: buffer_insert_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:280,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:305,1
    - Dst: get_ext_header
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:308,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:317,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:321,1
    - Dst: sync_ext_reorder
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:329,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 4
    argNames:
    - u
    - ext_map_idx
    - ctx
    - no_shrink
    argTypes:
    - struct mail_transaction_ext_intro*
    - uint32_t
    - struct mail_index_sync_map_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 236
    functionDepth: 5
    functionLinenumber: 236
    functionLinenumberEnd: 330
    functionName: sync_ext_resize
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - array_idx_modifiable
    - MAIL_INDEX_HEADER_SIZE_ALIGN
    - sync_ext_reorder
    - get_ext_header
    - buffer_insert_zero
    - array_count
    - mail_index_sync_get_atomic_map
    - buffer_delete
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sync_ext_resize(const struct mail_transaction_ext_intro *u,\n\t\tuint32_t
      ext_map_idx, struct mail_index_sync_map_ctx *ctx,\n\t\tbool no_shrink)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:345,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - ext_map_idx
    argTypes:
    - struct mail_index_sync_map_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 354
    functionName: mail_index_sync_ext_unknown_complain
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 0
    functionsReached:
    - buffer_get_space_unsafe
    - buffer_create_dynamic
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_sync_ext_unknown_complain(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t\t     uint32_t ext_map_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:367,1
    - Dst: mail_index_ext_name_is_valid
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:367,1
    - Dst: mail_index_sync_get_atomic_map
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:372,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:375,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:377,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:379,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:380,1
    - Dst: mail_index_map_register_ext
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:386,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:388,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:391,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:391,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:392,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:393,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:395,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:396,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:397,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:398,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:399,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:400,1
    - Dst: mail_index_sync_init_handlers
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:404,1
    - Dst: sync_ext_reorder
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:405,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 4
    argNames:
    - ctx
    - name
    - ext_hdr
    - ext_map_idx_r
    argTypes:
    - struct mail_index_sync_map_ctx*
    - char*
    - struct mail_index_ext_header*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 356
    functionDepth: 5
    functionLinenumber: 356
    functionLinenumberEnd: 409
    functionName: mail_index_sync_ext_init_new
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_append_zero
    - mail_index_ext_name_is_valid
    - MAIL_INDEX_HEADER_SIZE_ALIGN
    - mail_index_map_register_ext
    - array_idx
    - strlen
    - mail_index_sync_init_handlers
    - sync_ext_reorder
    - mail_index_sync_get_atomic_map
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_ext_init_new(struct mail_index_sync_map_ctx *ctx,\n\t\t\t
      \    const char *name,\n\t\t\t     const struct mail_index_ext_header *ext_hdr,\n\t\t\t
      \    uint32_t *ext_map_idx_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:428,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:429,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:437,1
    - Dst: mail_index_sync_ext_unknown_complain
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:440,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:442,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:448,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:457,1
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:458,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:464,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:467,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:470,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:474,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:479,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:480,1
    - Dst: mail_index_map_ext_hdr_check
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:488,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:490,1
    - Dst: sync_ext_resize
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:500,1
    - Dst: mail_index_sync_ext_init_new
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:513,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 62
    argCount: 2
    argNames:
    - ctx
    - u
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_ext_intro*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 411
    functionDepth: 6
    functionLinenumber: 411
    functionLinenumberEnd: 519
    functionName: mail_index_sync_ext_intro
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - strcmp
    - mail_index_sync_set_corrupted
    - i_zero
    - sync_ext_resize
    - array_idx
    - strlen
    - mail_index_sync_ext_init_new
    - t_strndup
    - array_count
    - mail_index_map_lookup_ext
    - mail_index_map_ext_hdr_check
    - array_is_created
    - i_assert
    - mail_index_sync_ext_unknown_complain
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_ext_intro(struct mail_index_sync_map_ctx *ctx,\n\t\t\t
      \     const struct mail_transaction_ext_intro *u)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:528,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:528,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:530,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:533,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:534,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - view
    - map
    - ext
    argTypes:
    - struct mail_index_view*
    - struct mail_index_map*
    - struct mail_index_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 537
    functionName: mail_index_sync_ext_clear
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - buffer_get_space_unsafe
    - MAIL_INDEX_REC_AT_SEQ
    - memset
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_ext_clear(struct mail_index_view *view,\n\t\t\t\t
      \     struct mail_index_map *map,\n\t\t\t\t      struct mail_index_ext *ext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:547,1
    - Dst: mail_index_sync_get_atomic_map
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:559,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:561,1
    - Dst: mail_index_sync_ext_clear
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:565,1
    - Dst: get_ext_header
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:567,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - u
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_ext_reset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 539
    functionDepth: 5
    functionLinenumber: 539
    functionLinenumberEnd: 570
    functionName: mail_index_sync_ext_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - mail_index_sync_set_corrupted
    - array_idx_modifiable
    - get_ext_header
    - mail_index_sync_get_atomic_map
    - mail_index_sync_ext_clear
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_ext_reset(struct mail_index_sync_map_ctx *ctx,\n\t\t\t
      \     const struct mail_transaction_ext_reset *u)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:580,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:587,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:589,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:594,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:595,1
    - Dst: mail_index_modseq_hdr_update
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - offset
    - size
    - data
    argTypes:
    - struct mail_index_sync_map_ctx*
    - uint32_t
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 600
    functionName: mail_index_sync_ext_hdr_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - mail_index_sync_set_corrupted
    - array_idx
    - buffer_write
    - mail_index_modseq_hdr_update
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_ext_hdr_update(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t\t   uint32_t offset, uint32_t size,\n\t\t\t\t   const void *data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:612,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:613,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:616,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:621,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:624,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:625,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:628,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:629,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:632,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:634,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:634,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - u
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_ext_rec_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 638
    functionName: mail_index_sync_ext_rec_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - memcpy
    - mail_index_sync_set_corrupted
    - PTR_OFFSET
    - array_idx
    - mail_index_lookup_seq
    - MAIL_INDEX_REC_AT_SEQ
    - memset
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_ext_rec_update(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t       const struct mail_transaction_ext_rec_update *u)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:651,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:652,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:655,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:660,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:663,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:664,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:667,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:668,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:679,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:716,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:722,1
    - Dst: mail_index_sync_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-index-sync-ext.c:728,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 2
    argNames:
    - ctx
    - u
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_ext_atomic_inc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 735
    functionName: mail_index_sync_ext_atomic_inc
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-ext.c
    functionUses: 1
    functionsReached:
    - mail_index_sync_set_corrupted
    - PTR_OFFSET
    - array_idx
    - mail_index_lookup_seq
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_ext_atomic_inc(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t       const struct mail_transaction_ext_atomic_inc *u)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:23,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:25,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:25,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:28,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:28,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:40,1
    - Dst: mail_cache_header_fields_update
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:41,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:51,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:66,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:77,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:85,1
    - Dst: mail_cache_header_fields_update
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:95,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:98,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:101,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:102,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:104,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 105
    functionName: test_mail_cache_fields_read_write
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - test_mail_index_init
    - mail_cache_header_fields_update
    - test_mail_index_delete
    - mail_cache_purge
    - test_end
    - mail_cache_header_fields_read
    - test_assert
    - test_mail_cache_init
    - test_mail_cache_deinit
    - mail_cache_register_fields
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_fields_read_write(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:113,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-cache-fields.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 115
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:16,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:17,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:22,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:25,1
    - Dst: mail_index_map_lookup_seq_range
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:34,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:37,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - messages_count
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 38
    functionName: test_mail_index_map_lookup_seq_range_count
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-map.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_new
    - test_assert
    - MAIL_INDEX_REC_AT_SEQ
    - mail_index_map_lookup_seq_range
    - i_free
    linkageType: ''
    returnType: void
    signature: void test_mail_index_map_lookup_seq_range_count(unsigned int messages_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:44,1
    - Dst: test_mail_index_map_lookup_seq_range_count
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:46,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: test_mail_index_map_lookup_seq_range
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-map.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_index_map_lookup_seq_range_count
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_index_map_lookup_seq_range(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-index-map.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 57
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-map.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-util.c:10,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-util.c:11,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-index/mail-index-util.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - offset
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 20
    functionName: mail_index_uint32_to_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-util.c
    functionUses: 2
    functionsReached:
    - i_assert
    - cpu32_to_be
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_index_uint32_to_offset(uint32_t offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: be32_to_cpu
      Src: /src/dovecot/src/lib-index/mail-index-util.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - offset
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 33
    functionName: mail_index_offset_to_uint32
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-util.c
    functionUses: 2
    functionsReached:
    - be32_to_cpu
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_index_offset_to_uint32(uint32_t offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - p
    - num
    argTypes:
    - uint8_t**
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 46
    functionName: mail_index_pack_num
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_pack_num(uint8_t **p, uint32_t num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib-index/mail-index-util.c:56,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-index/mail-index-util.c:70,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - p
    - end
    - num_r
    argTypes:
    - uint8_t**
    - uint8_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 80
    functionName: mail_index_unpack_num
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-util.c
    functionUses: 1
    functionsReached:
    - unlikely
    linkageType: ''
    returnType: int
    signature: "int mail_index_unpack_num(const uint8_t **p, const uint8_t *end,\n\t\t\t
      \ uint32_t *num_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key_seq
    - data_seq
    argTypes:
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: mail_index_seq_record_cmp
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_index_seq_record_cmp(const uint32_t *key_seq,\n\t\t\t\t     const
      uint32_t *data_seq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-util.c:92,1
    - Dst: array_back
      Src: /src/dovecot/src/lib-index/mail-index-util.c:94,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-index/mail-index-util.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - array
    - seq
    - idx_r
    argTypes:
    - ARRAY_TYPE*
    - uint32_t
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 102
    functionName: mail_index_seq_array_lookup
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-util.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_back
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_seq_array_lookup(const ARRAY_TYPE(seq_array) *array,\n\t\t\t\t
      uint32_t seq, unsigned int *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:14,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:18,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:22,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 28
    functionName: mail_transaction_log_view_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - i_assert
    - i_new
    - array_push_back
    linkageType: ''
    returnType: struct mail_transaction_log_view
    signature: 'struct mail_transaction_log_view *

      mail_transaction_log_view_open(struct mail_transaction_log *log)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:36,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 41
    functionName: mail_transaction_log_view_unref_all
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_clear
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_view_unref_all(struct mail_transaction_log_view
      *view)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_unref_all
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:57,1
    - Dst: mail_transaction_logs_clean
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:58,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:60,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - _view
    argTypes:
    - struct mail_transaction_log_view**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 62
    functionName: mail_transaction_log_view_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 1
    functionsReached:
    - mail_transaction_logs_clean
    - i_free
    - array_free
    - mail_transaction_log_view_unref_all
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_view_close(struct mail_transaction_log_view
      **_view)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:68,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:74,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 76
    functionName: mail_transaction_log_get_file_seqs
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    linkageType: ''
    returnType: char
    signature: 'char *

      mail_transaction_log_get_file_seqs(struct mail_transaction_log *log)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:85,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:90,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:91,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - head
    - tail
    argTypes:
    - struct mail_transaction_log_file*
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 97
    functionName: view_set_failed_unref
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void view_set_failed_unref(struct mail_transaction_log_file *head,\n\t\t
      \     struct mail_transaction_log_file *tail)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:160,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:165,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:170,1
    - Dst: mail_transaction_log_view_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:174,1
    - Dst: mail_transaction_log_find_file
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:190,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:194,1
    - Dst: view_set_failed_unref
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:197,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:207,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:211,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:222,1
    - Dst: mail_transaction_log_get_file_seqs
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:225,1
    - Dst: view_set_failed_unref
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:226,1
    - Dst: view_set_failed_unref
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:251,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:265,1
    - Dst: mail_transaction_log_view_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:269,1
    - Dst: view_set_failed_unref
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:270,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:275,1
    - Dst: mail_transaction_log_view_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:279,1
    - Dst: view_set_failed_unref
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:280,1
    - Dst: mail_transaction_log_view_unref_all
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:285,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:291,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:309,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:310,1
    - Dst: mail_transaction_log_file_map
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:316,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:319,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:336,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:343,1
    - Dst: mail_transaction_log_view_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:347,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:351,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:353,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:355,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:366,1
    - Dst: mail_transaction_log_file_get_highest_modseq_at
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:369,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:374,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 153
    argCount: 7
    argNames:
    - view
    - min_file_seq
    - min_file_offset
    - max_file_seq
    - max_file_offset
    - reset_r
    - reason_r
    argTypes:
    - struct mail_transaction_log_view*
    - uint32_t
    - uoff_t
    - uint32_t
    - uoff_t
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 376
    functionName: mail_transaction_log_view_set
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 2
    functionsReached:
    - view_set_failed_unref
    - mail_transaction_log_view_set_corrupted
    - array_push_back
    - mail_transaction_log_file_get_highest_modseq_at
    - I_MIN
    - mail_transaction_log_get_file_seqs
    - t_strdup_printf
    - mail_transaction_log_view_unref_all
    - mail_transaction_log_find_file
    - array_count
    - array_front
    - mail_transaction_log_file_map
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_view_set(struct mail_transaction_log_view
      *view,\n\t\t\t\t  uint32_t min_file_seq, uoff_t min_file_offset,\n\t\t\t\t  uint32_t
      max_file_seq, uoff_t max_file_offset,\n\t\t\t\t  bool *reset_r, const char **reason_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_find_file
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:385,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:388,1
    - Dst: mail_transaction_log_file_map
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:391,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:407,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:408,1
    - Dst: mail_transaction_log_view_unref_all
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:414,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:416,1
    - Dst: mail_transaction_log_file_get_highest_modseq_at
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:433,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:435,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 441
    functionName: mail_transaction_log_view_set_all
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - mail_transaction_log_view_unref_all
    - mail_transaction_log_find_file
    - mail_transaction_log_file_get_highest_modseq_at
    - mail_transaction_log_file_map
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_view_set_all(struct mail_transaction_log_view
      *view)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_unref_all
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:449,1
    - Dst: mail_transaction_log_find_file
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:451,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:454,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - view
    - oldest_file_seq
    argTypes:
    - struct mail_transaction_log_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 472
    functionName: mail_transaction_log_view_clear
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 1
    functionsReached:
    - mail_transaction_log_find_file
    - mail_transaction_log_view_unref_all
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_view_clear(struct mail_transaction_log_view
      *view,\n\t\t\t\t     uint32_t oldest_file_seq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - view
    - file_seq_r
    - file_offset_r
    argTypes:
    - struct mail_transaction_log_view*
    - uint32_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 481
    functionName: mail_transaction_log_view_get_prev_pos
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_view_get_prev_pos(struct mail_transaction_log_view
      *view,\n\t\t\t\t       uint32_t *file_seq_r,\n\t\t\t\t       uoff_t *file_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 487
    functionName: mail_transaction_log_view_get_prev_modseq
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mail_transaction_log_view_get_prev_modseq(struct mail_transaction_log_view
      *view)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - view
    - last_r
    - last_offset_r
    argTypes:
    - struct mail_transaction_log_view*
    - struct mail_transaction_log_file**
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 529
    functionName: mail_transaction_log_view_get_last
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_transaction_log_view_get_last(struct mail_transaction_log_view
      *view,\n\t\t\t\t   struct mail_transaction_log_file **last_r,\n\t\t\t\t   uoff_t
      *last_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_get_last
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 537
    functionName: mail_transaction_log_view_is_last
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 1
    functionsReached:
    - mail_transaction_log_view_get_last
    linkageType: ''
    returnType: bool
    signature: bool mail_transaction_log_view_is_last(struct mail_transaction_log_view
      *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:547,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:549,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - view
    - fmt
    argTypes:
    - struct mail_transaction_log_view*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 551
    functionName: mail_transaction_log_view_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 1
    functionsReached:
    - t_strdup_vprintf
    - mail_transaction_log_file_set_corrupted
    - va_start
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_view_set_corrupted(struct mail_transaction_log_view
      *view,\n\t\t\t\t\tconst char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 559
    functionName: mail_transaction_log_view_is_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_transaction_log_view_is_corrupted(struct mail_transaction_log_view
      *view)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:567,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:570,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:574,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:580,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:582,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:588,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - file
    - rec_type
    - uids
    argTypes:
    - struct mail_transaction_log_file*
    - enum mail_transaction_type
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 594
    functionName: log_view_is_uid_range_valid
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - array_count
    - mail_transaction_log_file_set_corrupted
    - array_idx
    linkageType: ''
    returnType: bool
    signature: "bool log_view_is_uid_range_valid(struct mail_transaction_log_file
      *file,\n\t\t\t    enum mail_transaction_type rec_type,\n\t\t\t    const ARRAY_TYPE(seq_range)
      *uids)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:602,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:607,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:613,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:617,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:622,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:626,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:630,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:642,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:648,1
    - Dst: array_create_from_buffer
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:649,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:657,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:664,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:672,1
    - Dst: array_create_from_buffer
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:673,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:685,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:690,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:695,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:696,1
    - Dst: array_create_from_buffer
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:698,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:703,1
    - Dst: array_create_from_buffer
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:704,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:717,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:719,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:735,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:742,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:749,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:753,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:756,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:766,1
    - Dst: log_view_is_uid_range_valid
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:767,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 119
    argCount: 3
    argNames:
    - file
    - hdr
    - data
    argTypes:
    - struct mail_transaction_log_file*
    - struct mail_transaction_header*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 596
    functionDepth: 2
    functionLinenumber: 596
    functionLinenumberEnd: 771
    functionName: log_view_is_record_valid
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - array_create_from_buffer
    - mail_transaction_log_file_set_corrupted
    - ENUM_NEGATE
    - strlen
    - mail_index_offset_to_uint32
    - log_view_is_uid_range_valid
    - buffer_create_from_const_data
    - ARRAY_TYPE
    - array_is_created
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: bool
    signature: "bool log_view_is_record_valid(struct mail_transaction_log_file *file,\n\t\t\t
      const struct mail_transaction_header *hdr,\n\t\t\t const void *data)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_get_last
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:792,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:811,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:818,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:819,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:820,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:823,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:825,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:833,1
    - Dst: log_view_is_record_valid
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:841,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - view
    - hdr_r
    - data_r
    argTypes:
    - struct mail_transaction_log_view*
    - struct mail_transaction_header**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 773
    functionDepth: 3
    functionLinenumber: 773
    functionLinenumberEnd: 842
    functionName: log_view_get_next
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_file_set_corrupted
    - mail_transaction_log_view_get_last
    - mail_index_offset_to_uint32
    - log_view_is_record_valid
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int log_view_get_next(struct mail_transaction_log_view *view,\n\t\t
      \ const struct mail_transaction_header **hdr_r,\n\t\t  const void **data_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_view_get_next
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:864,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:876,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:881,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:882,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - view
    - hdr_r
    - data_r
    argTypes:
    - struct mail_transaction_log_view*
    - struct mail_transaction_header**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 853
    functionDepth: 4
    functionLinenumber: 853
    functionLinenumberEnd: 888
    functionName: mail_transaction_log_view_next
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 2
    functionsReached:
    - mail_index_offset_to_uint32
    - i_assert
    - log_view_get_next
    - ENUM_NEGATE
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_view_next(struct mail_transaction_log_view
      *view,\n\t\t\t\t   const struct mail_transaction_header **hdr_r,\n\t\t\t\t   const
      void **data_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 891
    functionDepth: 1
    functionLinenumber: 891
    functionLinenumberEnd: 902
    functionName: mail_transaction_log_view_mark
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_view_mark(struct mail_transaction_log_view
      *view)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-view.c:906,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 918
    functionName: mail_transaction_log_view_rewind
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-view.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_view_rewind(struct mail_transaction_log_view
      *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - index
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 434
    functionName: mail_index_view_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mail_index_view_open(index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index.c:63,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:64,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:65,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-index/mail-index.c:67,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-index/mail-index.c:68,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-index/mail-index.c:71,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-index/mail-index.c:72,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index.c:73,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index.c:74,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-index/mail-index.c:83,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-index/mail-index.c:85,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index.c:86,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-index/mail-index.c:87,1
    - Dst: mail_transaction_log_alloc
      Src: /src/dovecot/src/lib-index/mail-index.c:89,1
    - Dst: mail_index_modseq_init
      Src: /src/dovecot/src/lib-index/mail-index.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 3
    argNames:
    - parent_event
    - dir
    - prefix
    argTypes:
    - struct event*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 92
    functionName: mail_index_alloc
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - event_create
    - hash_table_create
    - p_array_init
    - I_MIN
    - mail_index_modseq_init
    - i_strdup
    - i_new
    - mail_index_ext_register
    - mail_transaction_log_alloc
    - event_add_category
    linkageType: ''
    returnType: struct mail_index
    signature: "struct mail_index *mail_index_alloc(struct event *parent_event,\n\t\t\t\t
      \   const char *dir, const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:100,1
    - Dst: mail_transaction_log_free
      Src: /src/dovecot/src/lib-index/mail-index.c:102,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-index/mail-index.c:103,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-index/mail-index.c:104,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-index/mail-index.c:105,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index.c:107,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index.c:108,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-index/mail-index.c:110,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:111,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:112,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:113,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:114,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:115,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:116,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:117,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - _index
    argTypes:
    - struct mail_index**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 119
    functionName: mail_index_free
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - event_unref
    - i_free
    - pool_unref
    - mail_transaction_log_free
    - i_assert
    - array_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void mail_index_free(struct mail_index **_index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:123,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - index
    - dir
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: mail_index_set_cache_dir
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_set_cache_dir(struct mail_index *index, const char
      *dir)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - index
    - mode
    - mask
    argTypes:
    - struct mail_index*
    - enum fsync_mode
    - enum mail_index_fsync_mask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 133
    functionName: mail_index_set_fsync_mode
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_fsync_mode(struct mail_index *index,\n\t\t\t       enum
      fsync_mode mode,\n\t\t\t       enum mail_index_fsync_mask mask)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:139,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/mail-index.c:142,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mail-index.c:144,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-index/mail-index.c:149,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-index/mail-index.c:156,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:163,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:165,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 167
    functionName: mail_index_use_existing_permissions
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_IS_IN_MEMORY
    - e_error
    - i_strdup
    - stat
    - getegid
    - S_ISDIR
    - i_free
    linkageType: ''
    returnType: bool
    signature: bool mail_index_use_existing_permissions(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:175,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - index
    - mode
    - gid
    - gid_origin
    argTypes:
    - struct mail_index*
    - mode_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 177
    functionName: mail_index_set_permissions
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_permissions(struct mail_index *index,\n\t\t\t\tmode_t
      mode, gid_t gid, const char *gid_origin)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - index
    - lock_method
    - max_timeout_secs
    argTypes:
    - struct mail_index*
    - enum file_lock_method
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 185
    functionName: mail_index_set_lock_method
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_lock_method(struct mail_index *index,\n\t\t\t\tenum
      file_lock_method lock_method,\n\t\t\t\tunsigned int max_timeout_secs)"
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 2
    argNames:
    - index
    - set
    argTypes:
    - struct mail_index*
    - struct mail_index_optimization_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 231
    functionName: mail_index_set_optimization_settings
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_optimization_settings(struct mail_index *index,\n\tconst
      struct mail_index_optimization_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:240,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index.c:242,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:243,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:246,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-index/mail-index.c:247,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - index
    - ext_id
    - data
    - size
    argTypes:
    - struct mail_index*
    - uint32_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 249
    functionName: mail_index_set_ext_init_data
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_malloc
    - array_idx
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_ext_init_data(struct mail_index *index, uint32_t
      ext_id,\n\t\t\t\t  const void *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-index/mail-index.c:256,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 262
    functionName: mail_index_ext_name_is_valid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - i_isalnum
    linkageType: ''
    returnType: bool
    signature: bool mail_index_ext_name_is_valid(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_name_is_valid
      Src: /src/dovecot/src/lib-index/mail-index.c:272,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-index/mail-index.c:273,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-index/mail-index.c:276,1
    - Dst: mail_index_ext_lookup
      Src: /src/dovecot/src/lib-index/mail-index.c:280,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index.c:283,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:284,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index.c:285,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index.c:290,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - index
    - name
    - default_hdr_size
    - default_record_size
    - default_record_align
    argTypes:
    - struct mail_index*
    - char*
    - uint32_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 292
    functionName: mail_index_ext_register
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 4
    functionsReached:
    - i_panic
    - i_zero
    - mail_index_ext_lookup
    - p_strdup
    - mail_index_ext_name_is_valid
    - array_push_back
    - array_count
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t mail_index_ext_register(struct mail_index *index, const char
      *name,\n\t\t\t\t uint32_t default_hdr_size,\n\t\t\t\t uint16_t default_record_size,\n\t\t\t\t
      uint16_t default_record_align)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - index
    - ext_id
    - default_hdr_size
    - default_record_size
    - default_record_align
    argTypes:
    - struct mail_index*
    - uint32_t
    - uint32_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 306
    functionName: mail_index_ext_register_resize_defaults
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_register_resize_defaults(struct mail_index *index,\n\t\t\t\t\t
      \    uint32_t ext_id,\n\t\t\t\t\t     uint32_t default_hdr_size,\n\t\t\t\t\t
      \    uint16_t default_record_size,\n\t\t\t\t\t     uint16_t default_record_align)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index.c:314,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index.c:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - index
    - name
    - ext_id_r
    argTypes:
    - struct mail_index*
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 324
    functionName: mail_index_ext_lookup
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_ext_lookup(struct mail_index *index, const char *name,\n\t\t\t
      \  uint32_t *ext_id_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index.c:332,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - index
    - ext_id
    - cb
    argTypes:
    - struct mail_index*
    - uint32_t
    - mail_index_expunge_handler_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 336
    functionName: mail_index_register_expunge_handler
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - i_assert
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: "void mail_index_register_expunge_handler(struct mail_index *index,\n\t\t\t\t\t
      uint32_t ext_id,\n\t\t\t\t\t mail_index_expunge_handler_t *cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index.c:343,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - index
    - ext_id
    argTypes:
    - struct mail_index*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 347
    functionName: mail_index_unregister_expunge_handler
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - i_assert
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: "void mail_index_unregister_expunge_handler(struct mail_index *index,\n\t\t\t\t\t
      \  uint32_t ext_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/lib-index/mail-index.c:358,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-index/mail-index.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - index
    - keyword
    - idx_r
    argTypes:
    - struct mail_index*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 366
    functionName: mail_index_keyword_lookup
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST_TO
    - hash_table_lookup_full
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_keyword_lookup(struct mail_index *index,\n\t\t\t       const
      char *keyword, unsigned int *idx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:374,1
    - Dst: mail_index_keyword_lookup
      Src: /src/dovecot/src/lib-index/mail-index.c:376,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:379,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index.c:380,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-index/mail-index.c:382,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-index/mail-index.c:383,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index.c:384,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-index/mail-index.c:387,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-index/mail-index.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - index
    - keyword
    - idx_r
    argTypes:
    - struct mail_index*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 389
    functionName: mail_index_keyword_lookup_or_create
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - POINTER_CAST
    - array_push_back
    - array_count
    - array_append_zero
    - mail_index_keyword_lookup
    - array_pop_back
    - hash_table_insert
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_keyword_lookup_or_create(struct mail_index *index,\n\t\t\t\t\t
      const char *keyword,\n\t\t\t\t\t unsigned int *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 394
    functionName: mail_index_get_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: ARRAY_TYPE *mail_index_get_keywords(struct mail_index *index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-index/mail-index.c:403,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index.c:405,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-index/mail-index.c:412,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib-index/mail-index.c:412,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib-index/mail-index.c:413,1
    - Dst: mail_index_keyword_lookup_or_create
      Src: /src/dovecot/src/lib-index/mail-index.c:420,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - index
    - keywords
    argTypes:
    - struct mail_index*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 396
    functionDepth: 3
    functionLinenumber: 396
    functionLinenumberEnd: 432
    functionName: mail_index_keywords_create
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - MALLOC_MULTIPLY
    - i_malloc
    - str_array_length
    - mail_index_keyword_lookup_or_create
    - i_new
    - MALLOC_ADD
    linkageType: ''
    returnType: struct mail_keywords
    signature: "struct mail_keywords *\nmail_index_keywords_create(struct mail_index
      *index,\n\t\t\t   const char *const keywords[])"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index.c:443,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index.c:445,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-index/mail-index.c:452,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib-index/mail-index.c:452,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib-index/mail-index.c:453,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - index
    - keyword_indexes
    argTypes:
    - struct mail_index*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 468
    functionName: mail_index_keywords_create_from_indexes
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - MALLOC_MULTIPLY
    - i_malloc
    - array_get
    - i_new
    - MALLOC_ADD
    linkageType: ''
    returnType: struct mail_keywords
    signature: "struct mail_keywords *\nmail_index_keywords_create_from_indexes(struct
      mail_index *index,\n\t\t\t\t\tconst ARRAY_TYPE(keyword_indexes)\n\t\t\t\t\t\t*keyword_indexes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - keywords
    argTypes:
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 473
    functionName: mail_index_keywords_ref
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_keywords_ref(struct mail_keywords *keywords)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:479,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _keywords
    argTypes:
    - struct mail_keywords**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 484
    functionName: mail_index_keywords_unref
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_keywords_unref(struct mail_keywords **_keywords)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:488,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:489,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:489,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-index/mail-index.c:495,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-index/mail-index.c:499,1
    - Dst: open
      Src: /src/dovecot/src/lib-index/mail-index.c:500,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 514
    functionName: mail_index_try_open_only
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_IS_IN_MEMORY
    - open
    - mail_index_set_syscall_error
    - nfs_safe_open
    - ENOACCESS
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mail_index_try_open_only(struct mail_index *index)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:521,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:523,1
    - Dst: mail_index_map
      Src: /src/dovecot/src/lib-index/mail-index.c:526,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-index.c:530,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:531,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 536
    functionName: mail_index_try_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_index_set_syscall_error
    - i_assert
    - close
    - mail_index_map
    linkageType: ''
    returnType: int
    signature: int mail_index_try_open(struct mail_index *index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:545,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:545,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-index.c:547,1
    - Dst: umask
      Src: /src/dovecot/src/lib-index/mail-index.c:548,1
    - Dst: open
      Src: /src/dovecot/src/lib-index/mail-index.c:549,1
    - Dst: umask
      Src: /src/dovecot/src/lib-index/mail-index.c:550,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/mail-index.c:554,1
    - Dst: umask
      Src: /src/dovecot/src/lib-index/mail-index.c:556,1
    - Dst: open
      Src: /src/dovecot/src/lib-index/mail-index.c:557,1
    - Dst: umask
      Src: /src/dovecot/src/lib-index/mail-index.c:558,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:561,1
    - Dst: mail_index_fchown
      Src: /src/dovecot/src/lib-index/mail-index.c:565,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - index
    - path_prefix
    - path_r
    argTypes:
    - struct mail_index*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 567
    functionName: mail_index_create_tmp_file
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_index_fchown
    - mail_index_file_set_syscall_error
    - umask
    - open
    - i_unlink
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int mail_index_create_tmp_file(struct mail_index *index,\n\t\t\t       const
      char *path_prefix, const char **path_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-index.c:579,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 581
    functionName: mail_index_get_cache_path
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: char *mail_index_get_cache_path(struct mail_index *index)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_open
      Src: /src/dovecot/src/lib-index/mail-index.c:588,1
    - Dst: mail_index_try_open
      Src: /src/dovecot/src/lib-index/mail-index.c:595,1
    - Dst: mail_transaction_log_create
      Src: /src/dovecot/src/lib-index/mail-index.c:606,1
    - Dst: mail_index_try_open
      Src: /src/dovecot/src/lib-index/mail-index.c:616,1
    - Dst: mail_transaction_log_close
      Src: /src/dovecot/src/lib-index/mail-index.c:619,1
    - Dst: mail_transaction_log_create
      Src: /src/dovecot/src/lib-index/mail-index.c:620,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index.c:623,1
    - Dst: mail_index_map_alloc
      Src: /src/dovecot/src/lib-index/mail-index.c:624,1
    - Dst: mail_index_move_to_memory
      Src: /src/dovecot/src/lib-index/mail-index.c:633,1
    - Dst: mail_index_get_cache_path
      Src: /src/dovecot/src/lib-index/mail-index.c:638,1
    - Dst: mail_cache_open_or_create_path
      Src: /src/dovecot/src/lib-index/mail-index.c:639,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 2
    argNames:
    - index
    - flags
    argTypes:
    - struct mail_index*
    - enum mail_index_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 583
    functionDepth: 3
    functionLinenumber: 583
    functionLinenumberEnd: 642
    functionName: mail_index_open_files
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_open
    - mail_transaction_log_create
    - mail_index_move_to_memory
    - mail_transaction_log_close
    - mail_index_unmap
    - mail_index_get_cache_path
    - mail_index_try_open
    - mail_index_map_alloc
    - mail_cache_open_or_create_path
    linkageType: ''
    returnType: int
    signature: "int mail_index_open_files(struct mail_index *index,\n\t\t\t\t enum
      mail_index_open_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:650,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index.c:655,1
    - Dst: mail_index_close_file
      Src: /src/dovecot/src/lib-index/mail-index.c:656,1
    - Dst: mail_transaction_log_close
      Src: /src/dovecot/src/lib-index/mail-index.c:657,1
    - Dst: mail_index_open_files
      Src: /src/dovecot/src/lib-index/mail-index.c:658,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - index
    - flags
    argTypes:
    - struct mail_index*
    - enum mail_index_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 644
    functionDepth: 4
    functionLinenumber: 644
    functionLinenumberEnd: 664
    functionName: mail_index_open_opened
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_close
    - mail_index_unmap
    - i_assert
    - mail_index_open_files
    - mail_index_close_file
    linkageType: ''
    returnType: int
    signature: "int mail_index_open_opened(struct mail_index *index,\n\t\t       enum
      mail_index_open_flags flags)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_open_opened
      Src: /src/dovecot/src/lib-index/mail-index.c:671,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:677,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:678,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-index/mail-index.c:679,1
    - Dst: mail_index_reset_error
      Src: /src/dovecot/src/lib-index/mail-index.c:681,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-index/mail-index.c:687,1
    - Dst: event_unset_forced_debug
      Src: /src/dovecot/src/lib-index/mail-index.c:689,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-index/mail-index.c:693,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-index/mail-index.c:696,1
    - Dst: mail_index_open_files
      Src: /src/dovecot/src/lib-index/mail-index.c:701,1
    - Dst: mail_index_close_nonopened
      Src: /src/dovecot/src/lib-index/mail-index.c:703,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-index/mail-index.c:710,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index.c:711,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:716,1
    - Dst: mail_index_alloc_cache_index_opened
      Src: /src/dovecot/src/lib-index/mail-index.c:717,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - index
    - flags
    argTypes:
    - struct mail_index*
    - enum mail_index_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 666
    functionDepth: 5
    functionLinenumber: 666
    functionLinenumberEnd: 719
    functionName: mail_index_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 2
    functionsReached:
    - event_set_forced_debug
    - mail_index_set_error
    - mail_index_reset_error
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_index_close
    - i_fatal
    - mail_index_alloc_cache_index_opened
    - mail_index_open_opened
    - i_strdup
    - i_strconcat
    - mail_index_close_nonopened
    - i_assert
    - event_unset_forced_debug
    - mail_index_open_files
    linkageType: ''
    returnType: int
    signature: int mail_index_open(struct mail_index *index, enum mail_index_open_flags
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_open
      Src: /src/dovecot/src/lib-index/mail-index.c:727,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - index
    - flags
    argTypes:
    - struct mail_index*
    - enum mail_index_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 721
    functionDepth: 6
    functionLinenumber: 721
    functionLinenumberEnd: 730
    functionName: mail_index_open_or_create
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - mail_index_open
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_index_open_or_create(struct mail_index *index,\n\t\t\t      enum
      mail_index_open_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-index.c:735,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:736,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 739
    functionName: mail_index_close_file
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - close
    - mail_index_set_syscall_error
    linkageType: ''
    returnType: void
    signature: void mail_index_close_file(struct mail_index *index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:743,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-index/mail-index.c:746,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:750,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index.c:753,1
    - Dst: mail_index_close_file
      Src: /src/dovecot/src/lib-index/mail-index.c:755,1
    - Dst: mail_transaction_log_close
      Src: /src/dovecot/src/lib-index/mail-index.c:756,1
    - Dst: mail_cache_free
      Src: /src/dovecot/src/lib-index/mail-index.c:758,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-index/mail-index.c:760,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 763
    functionName: mail_index_close_nonopened
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - i_panic
    - mail_transaction_log_close
    - i_free_and_null
    - mail_index_unmap
    - mail_cache_free
    - i_assert
    - mail_index_close_file
    linkageType: ''
    returnType: void
    signature: void mail_index_close_nonopened(struct mail_index *index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:767,1
    - Dst: mail_index_alloc_cache_index_closing
      Src: /src/dovecot/src/lib-index/mail-index.c:769,1
    - Dst: mail_index_close_nonopened
      Src: /src/dovecot/src/lib-index/mail-index.c:771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 765
    functionDepth: 4
    functionLinenumber: 765
    functionLinenumberEnd: 772
    functionName: mail_index_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 2
    functionsReached:
    - mail_index_close_nonopened
    - i_assert
    - mail_index_alloc_cache_index_closing
    linkageType: ''
    returnType: void
    signature: void mail_index_close(struct mail_index *index)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:779,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-index.c:783,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-index.c:787,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-index.c:788,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-index.c:791,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-index.c:793,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-index.c:797,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-index.c:798,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 807
    functionName: mail_index_unlink
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - unlink
    - t_strconcat
    - MAIL_INDEX_IS_IN_MEMORY
    linkageType: ''
    returnType: int
    signature: int mail_index_unlink(struct mail_index *index)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:817,1
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib-index/mail-index.c:826,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-index/mail-index.c:827,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:832,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-index.c:836,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-index.c:837,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:838,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-index.c:844,1
    - Dst: mail_index_close_file
      Src: /src/dovecot/src/lib-index/mail-index.c:854,1
    - Dst: mail_index_try_open_only
      Src: /src/dovecot/src/lib-index/mail-index.c:857,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 3
    argNames:
    - index
    - reopened_r
    - reason_r
    argTypes:
    - struct mail_index*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 809
    functionDepth: 2
    functionLinenumber: 809
    functionLinenumberEnd: 864
    functionName: mail_index_reopen_if_changed
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - mail_index_try_open_only
    - MAIL_INDEX_IS_IN_MEMORY
    - ESTALE_FSTAT
    - mail_index_set_syscall_error
    - fstat
    - nfs_flush_file_handle_cache
    - CMP_DEV_T
    - nfs_safe_stat
    - mail_index_close_file
    linkageType: ''
    returnType: int
    signature: "int mail_index_reopen_if_changed(struct mail_index *index, bool *reopened_r,\n\t\t\t\t
      const char **reason_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map
      Src: /src/dovecot/src/lib-index/mail-index.c:870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 866
    functionDepth: 0
    functionLinenumber: 866
    functionLinenumberEnd: 872
    functionName: mail_index_refresh
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 5
    functionsReached:
    - mail_index_map
    linkageType: ''
    returnType: int
    signature: int mail_index_refresh(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 877
    functionName: mail_index_get_cache
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mail_cache
    signature: struct mail_cache *mail_index_get_cache(struct mail_index *index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:882,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-index/mail-index.c:887,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mail-index.c:888,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - index
    - fmt
    - args
    argTypes:
    - struct mail_index*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 890
    functionName: mail_index_set_verror
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_free
    - i_strdup_vprintf
    linkageType: ''
    returnType: void
    signature: void mail_index_set_verror(struct mail_index *index, const char *fmt,
      va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-index/mail-index.c:895,1
    - Dst: mail_index_set_verror
      Src: /src/dovecot/src/lib-index/mail-index.c:896,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-index/mail-index.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - index
    - fmt
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 892
    functionDepth: 2
    functionLinenumber: 892
    functionLinenumberEnd: 898
    functionName: mail_index_set_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 14
    functionsReached:
    - mail_index_set_verror
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void mail_index_set_error(struct mail_index *index, const char *fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-index/mail-index.c:905,1
    - Dst: mail_index_set_verror
      Src: /src/dovecot/src/lib-index/mail-index.c:906,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-index/mail-index.c:908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - index
    - code
    - fmt
    argTypes:
    - struct mail_index*
    - enum mail_index_error_code
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 900
    functionDepth: 2
    functionLinenumber: 900
    functionLinenumberEnd: 909
    functionName: mail_index_set_error_code
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - mail_index_set_verror
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_error_code(struct mail_index *index,\n\t\t\t       enum
      mail_index_error_code code,\n\t\t\t       const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:913,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:916,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - index
    - str
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 911
    functionDepth: 1
    functionLinenumber: 911
    functionLinenumberEnd: 918
    functionName: mail_index_set_error_nolog
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_set_error_nolog(struct mail_index *index, const char
      *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 923
    functionName: mail_index_is_in_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_IS_IN_MEMORY
    linkageType: ''
    returnType: bool
    signature: bool mail_index_is_in_memory(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-index/mail-index.c:927,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:929,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 931
    functionName: mail_index_set_as_in_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free_and_null
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_set_as_in_memory(struct mail_index *index)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:937,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:946,1
    - Dst: mail_index_set_as_in_memory
      Src: /src/dovecot/src/lib-index/mail-index.c:947,1
    - Dst: MAIL_INDEX_MAP_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:952,1
    - Dst: mail_index_map_clone
      Src: /src/dovecot/src/lib-index/mail-index.c:953,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index.c:954,1
    - Dst: mail_transaction_log_move_to_memory
      Src: /src/dovecot/src/lib-index/mail-index.c:960,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-index.c:965,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:966,1
    - Dst: mail_index_set_as_in_memory
      Src: /src/dovecot/src/lib-index/mail-index.c:969,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 933
    functionDepth: 3
    functionLinenumber: 933
    functionLinenumberEnd: 971
    functionName: mail_index_move_to_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - mail_index_map_clone
    - mail_transaction_log_move_to_memory
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_index_unmap
    - mail_index_set_syscall_error
    - MAIL_INDEX_MAP_IS_IN_MEMORY
    - i_assert
    - mail_index_set_as_in_memory
    - close
    linkageType: ''
    returnType: int
    signature: int mail_index_move_to_memory(struct mail_index *index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-index.c:979,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:981,1
    - Dst: mail_transaction_log_unlink
      Src: /src/dovecot/src/lib-index/mail-index.c:982,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 984
    functionName: mail_index_mark_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - unlink
    - mail_index_set_syscall_error
    - mail_transaction_log_unlink
    linkageType: ''
    returnType: void
    signature: void mail_index_mark_corrupted(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 986
    functionDepth: 0
    functionLinenumber: 986
    functionLinenumberEnd: 989
    functionName: mail_index_is_deleted
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_index_is_deleted(struct mail_index *index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index.c:997,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-index.c:1003,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/mail-index.c:1005,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:1011,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - index
    - mtime_r
    argTypes:
    - struct mail_index*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1016
    functionName: mail_index_get_modification_time
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - stat
    - mail_index_file_set_syscall_error
    - t_strconcat
    - MAIL_INDEX_IS_IN_MEMORY
    linkageType: ''
    returnType: int
    signature: int mail_index_get_modification_time(struct mail_index *index, time_t
      *mtime_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fchown
      Src: /src/dovecot/src/lib-index/mail-index.c:1025,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-index/mail-index.c:1033,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:1034,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index.c:1036,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-index/mail-index.c:1037,1
    - Dst: fchmod
      Src: /src/dovecot/src/lib-index/mail-index.c:1046,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:1047,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - index
    - fd
    - path
    argTypes:
    - struct mail_index*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1018
    functionDepth: 1
    functionLinenumber: 1018
    functionLinenumberEnd: 1048
    functionName: mail_index_fchown
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - eperm_error_get_chgrp
    - fchmod
    - mail_index_file_set_syscall_error
    - ENOACCESS
    - mail_index_set_error
    - fchown
    linkageType: ''
    returnType: void
    signature: void mail_index_fchown(struct mail_index *index, int fd, const char
      *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/mail-index.c:1055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - index
    - lock_reason
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1050
    functionDepth: 3
    functionLinenumber: 1050
    functionLinenumberEnd: 1057
    functionName: mail_index_lock_sync
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_sync_lock
    linkageType: ''
    returnType: int
    signature: int mail_index_lock_sync(struct mail_index *index, const char *lock_reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-index.c:1061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - index
    - long_lock_reason
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1059
    functionDepth: 2
    functionLinenumber: 1059
    functionLinenumberEnd: 1062
    functionName: mail_index_unlock
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_sync_unlock
    linkageType: ''
    returnType: void
    signature: void mail_index_unlock(struct mail_index *index, const char *long_lock_reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1064
    functionDepth: 0
    functionLinenumber: 1064
    functionLinenumberEnd: 1067
    functionName: mail_index_is_locked
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_index_is_locked(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index.c:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - index
    - function
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1069
    functionDepth: 0
    functionLinenumber: 1069
    functionLinenumberEnd: 1073
    functionName: mail_index_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 6
    functionsReached:
    - mail_index_file_set_syscall_error
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_syscall_error(struct mail_index *index,\n\t\t\t\t
      \ const char *function)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:1081,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:1082,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index.c:1087,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-index/mail-index.c:1088,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib-index/mail-index.c:1098,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-index/mail-index.c:1104,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-index/mail-index.c:1105,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index.c:1106,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-index/mail-index.c:1107,1
    - Dst: eacces_error_get_creating
      Src: /src/dovecot/src/lib-index/mail-index.c:1108,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-index/mail-index.c:1110,1
    - Dst: mail_index_set_error_code
      Src: /src/dovecot/src/lib-index/mail-index.c:1112,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index.c:1117,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - index
    - filepath
    - function
    argTypes:
    - struct mail_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1075
    functionDepth: 3
    functionLinenumber: 1075
    functionLinenumberEnd: 1120
    functionName: mail_index_file_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 8
    functionsReached:
    - strcmp
    - str_begins_with
    - eacces_error_get_creating
    - mail_index_set_error
    - ENOSPACE
    - eacces_error_get
    - mail_index_set_error_code
    - ENOACCESS
    - nfs_safe_stat
    - i_assert
    - t_strcut
    linkageType: ''
    returnType: void
    signature: "void mail_index_file_set_syscall_error(struct mail_index *index,\n\t\t\t\t
      \      const char *filepath,\n\t\t\t\t       const char *function)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - index
    - code_r
    argTypes:
    - struct mail_index*
    - enum mail_index_error_code*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1122
    functionDepth: 0
    functionLinenumber: 1122
    functionLinenumberEnd: 1128
    functionName: mail_index_get_last_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *mail_index_get_last_error(struct mail_index *index,\n\t\t\t\t
      \     enum mail_index_error_code *code_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index.c:1132,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index.c:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1134
    functionName: mail_index_reset_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-index.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_reset_error(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dest
    - ','
    - src
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: mail_index_view_clone
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mail_index_view_clone(dest, src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - src
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: mail_index_view_dup_private
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mail_index_view_dup_private(src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - index
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: MAIL_INDEX_IS_IN_MEMORY
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-private.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_IS_IN_MEMORY(index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - map
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: MAIL_INDEX_MAP_IS_IN_MEMORY
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-private.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_MAP_IS_IN_MEMORY(map)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - map
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: MAIL_INDEX_MAP_IDX
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_MAP_IDX(map, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - map
    - ','
    - seq
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: MAIL_INDEX_REC_AT_SEQ
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-private.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_REC_AT_SEQ(map, seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: MAIL_INDEX_HEADER_SIZE_ALIGN
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_HEADER_SIZE_ALIGN(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - map
    - ','
    - hdr_offset
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: MAIL_INDEX_MAP_HDR_OFFSET
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_INDEX_MAP_HDR_OFFSET(map, hdr_offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - file
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY(file)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 1
    argNames:
    - test
    argTypes:
    - struct update_modseq_test*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 218
    functionName: update_modseq_test_get_size
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: size_t
    signature: size_t update_modseq_test_get_size(const struct update_modseq_test
      *test)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:225,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:226,1
    - Dst: update_modseq_test_get_size
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:235,1
    - Dst: mail_index_uint32_to_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:236,1
    - Dst: mail_transaction_update_modseq
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:237,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:238,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:239,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 242
    functionName: test_mail_transaction_update_modseq
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mail_transaction_update_modseq
    - test_assert_idx
    - test_end
    - update_modseq_test_get_size
    - mail_index_uint32_to_offset
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_transaction_update_modseq(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:246,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:247,1
    - Dst: mail_index_open_or_create
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:247,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:248,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:251,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:256,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:256,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 244
    functionDepth: 7
    functionLinenumber: 244
    functionLinenumberEnd: 259
    functionName: test_mail_index_open
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
    functionUses: 2
    functionsReached:
    - mail_index_transaction_begin
    - mail_index_alloc
    - mail_index_update_header
    - mail_index_transaction_commit
    - mail_index_open_or_create
    - mail_index_view_open
    - test_assert
    - mail_index_view_close
    linkageType: ''
    returnType: struct mail_index
    signature: struct mail_index *test_mail_index_open(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:263,1
    - Dst: test_mail_index_open
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:265,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:278,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:280,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:282,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:282,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:284,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:287,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:288,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:291,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:291,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:309,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:309,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:310,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:313,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:313,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:314,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:315,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:319,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:320,1
    - Dst: MODSEQ_MATCH
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:320,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:322,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:322,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:323,1
    - Dst: MODSEQ_MATCH
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:323,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:325,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:326,1
    - Dst: MODSEQ_MATCH
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:326,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:328,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:328,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:329,1
    - Dst: MODSEQ_MATCH
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:329,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:332,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:333,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:333,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:334,1
    - Dst: MODSEQ_MATCH
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:334,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:339,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:339,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:340,1
    - Dst: MODSEQ_MATCH
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:340,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:347,1
    - Dst: mail_transaction_log_file_get_highest_modseq_at
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:347,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:349,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:351,1
    - Dst: mail_transaction_log_file_get_highest_modseq_at
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:351,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:353,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:356,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:357,1
    - Dst: mail_transaction_log_file_get_highest_modseq_at
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:357,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:359,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:360,1
    - Dst: mail_transaction_log_file_get_highest_modseq_at
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:360,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:362,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:367,1
    - Dst: mail_transaction_log_file_get_highest_modseq_at
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:367,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:369,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:372,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:373,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:374,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 261
    functionDepth: 5
    functionLinenumber: 261
    functionLinenumberEnd: 375
    functionName: test_mail_transaction_log_file_modseq_offsets
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_index_update_flags
    - mail_index_close
    - MODSEQ_MATCH
    - mail_index_view_open
    - mail_transaction_log_file_get_modseq_next_offset
    - test_end
    - test_mail_index_open
    - test_assert
    - mail_transaction_log_file_get_highest_modseq_at
    - i_rand_minmax
    - mail_index_free
    - mail_index_view_close
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_transaction_log_file_modseq_offsets(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - modseq
    - ','
    - next_offset
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: MODSEQ_MATCH
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODSEQ_MATCH(modseq, next_offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:380,1
    - Dst: test_mail_index_open
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:382,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:387,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:389,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:390,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:391,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:391,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:392,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:398,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:399,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:399,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:400,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:401,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:403,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:404,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 377
    functionDepth: 5
    functionLinenumber: 377
    functionLinenumberEnd: 406
    functionName: test_mail_transaction_log_file_get_modseq_next_offset_inconsistency
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - test_expect_no_more_errors
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_index_close
    - mail_index_view_open
    - mail_transaction_log_file_get_modseq_next_offset
    - test_expect_error_string
    - test_end
    - test_mail_index_open
    - test_assert
    - mail_index_free
    - mail_index_view_close
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_transaction_log_file_get_modseq_next_offset_inconsistency(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 418
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-lock.c:32,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-lock.c:32,1
    - Dst: file_wait_lock
      Src: /src/dovecot/src/lib-index/mail-index-lock.c:39,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mail-index-lock.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - index
    - path
    - fd
    - lock_type
    - timeout_secs
    - lock_r
    argTypes:
    - struct mail_index*
    - char*
    - int
    - int
    - unsigned int
    - struct file_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 44
    functionName: mail_index_lock_fd
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-lock.c
    functionUses: 1
    functionsReached:
    - e_error
    - i_assert
    - file_wait_lock
    - MAIL_INDEX_IS_IN_MEMORY
    linkageType: ''
    returnType: int
    signature: "int mail_index_lock_fd(struct mail_index *index, const char *path,
      int fd,\n\t\t       int lock_type, unsigned int timeout_secs,\n\t\t       struct
      file_lock **lock_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nfs_flush_read_cache_locked
      Src: /src/dovecot/src/lib-index/mail-index-lock.c:57,1
    - Dst: nfs_flush_read_cache_unlocked
      Src: /src/dovecot/src/lib-index/mail-index-lock.c:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - index
    - path
    - fd
    - locked
    argTypes:
    - struct mail_index*
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 61
    functionName: mail_index_flush_read_cache
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-lock.c
    functionUses: 1
    functionsReached:
    - nfs_flush_read_cache_unlocked
    - nfs_flush_read_cache_locked
    linkageType: ''
    returnType: void
    signature: "void mail_index_flush_read_cache(struct mail_index *index, const char
      *path,\n\t\t\t\t int fd, bool locked)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mailbox-log.c:53,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-index/mailbox-log.c:54,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mailbox-log.c:55,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-index/mailbox-log.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - parent_event
    - path
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: mailbox_log_alloc
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - event_create
    - i_strconcat
    - i_new
    linkageType: ''
    returnType: struct mailbox_log
    signature: 'struct mailbox_log *

      mailbox_log_alloc(struct event *parent_event, const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_log_close
      Src: /src/dovecot/src/lib-index/mailbox-log.c:69,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-index/mailbox-log.c:70,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mailbox-log.c:71,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mailbox-log.c:72,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mailbox-log.c:73,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mailbox-log.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - _log
    argTypes:
    - struct mailbox_log**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 75
    functionName: mailbox_log_free
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - mailbox_log_close
    - i_free
    - event_unref
    linkageType: ''
    returnType: void
    signature: void mailbox_log_free(struct mailbox_log **_log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/lib-index/mailbox-log.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mailbox_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: mailbox_log_close
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 1
    functionsReached:
    - i_close_fd_path
    linkageType: ''
    returnType: void
    signature: void mailbox_log_close(struct mailbox_log *log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mailbox-log.c:87,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mailbox-log.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - log
    - mode
    - gid
    - gid_origin
    argTypes:
    - struct mailbox_log*
    - mode_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 89
    functionName: mailbox_log_set_permissions
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mailbox_log_set_permissions(struct mailbox_log *log, mode_t mode,\n\t\t\t\t
      gid_t gid, const char *gid_origin)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mailbox-log.c:95,1
    - Dst: open
      Src: /src/dovecot/src/lib-index/mailbox-log.c:98,1
    - Dst: umask
      Src: /src/dovecot/src/lib-index/mailbox-log.c:103,1
    - Dst: open
      Src: /src/dovecot/src/lib-index/mailbox-log.c:104,1
    - Dst: umask
      Src: /src/dovecot/src/lib-index/mailbox-log.c:105,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-index/mailbox-log.c:108,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:109,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:112,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-index/mailbox-log.c:113,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-index/mailbox-log.c:116,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-index/mailbox-log.c:117,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:118,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:121,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-index/mailbox-log.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mailbox_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 128
    functionName: mailbox_log_open
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - eacces_error_get
    - umask
    - open
    - e_error
    - ENOACCESS
    - i_assert
    - eperm_error_get_chgrp
    - fchown
    linkageType: ''
    returnType: int
    signature: int mailbox_log_open(struct mailbox_log *log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mailbox-log.c:134,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:135,1
    - Dst: rename
      Src: /src/dovecot/src/lib-index/mailbox-log.c:142,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:143,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mailbox_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 148
    functionName: mailbox_log_rotate_if_needed
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - e_error
    - rename
    - fstat
    linkageType: ''
    returnType: int
    signature: int mailbox_log_rotate_if_needed(struct mailbox_log *log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cpu32_to_be_unaligned
      Src: /src/dovecot/src/lib-index/mailbox-log.c:153,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-index/mailbox-log.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rec
    - stamp
    argTypes:
    - struct mailbox_log_record*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 154
    functionName: mailbox_log_record_set_timestamp
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - cpu32_to_be_unaligned
    - time_to_uint32_trunc
    linkageType: ''
    returnType: void
    signature: "void mailbox_log_record_set_timestamp(struct mailbox_log_record *rec,\n\t\t\t\t
      \     time_t stamp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-index/mailbox-log.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rec
    argTypes:
    - struct mailbox_log_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 159
    functionName: mailbox_log_record_get_timestamp
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - be32_to_cpu_unaligned
    linkageType: ''
    returnType: time_t
    signature: time_t mailbox_log_record_get_timestamp(const struct mailbox_log_record
      *rec)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_log_close
      Src: /src/dovecot/src/lib-index/mailbox-log.c:173,1
    - Dst: mailbox_log_open
      Src: /src/dovecot/src/lib-index/mailbox-log.c:175,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mailbox-log.c:177,1
    - Dst: write
      Src: /src/dovecot/src/lib-index/mailbox-log.c:184,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:186,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:189,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mailbox-log.c:191,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-index/mailbox-log.c:192,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:193,1
    - Dst: mailbox_log_rotate_if_needed
      Src: /src/dovecot/src/lib-index/mailbox-log.c:200,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - log
    - rec
    argTypes:
    - struct mailbox_log*
    - struct mailbox_log_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 202
    functionName: mailbox_log_append
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - mailbox_log_rotate_if_needed
    - ftruncate
    - mailbox_log_open
    - mailbox_log_close
    - write
    - e_error
    - fstat
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mailbox_log_append(struct mailbox_log *log,\n\t\t       const
      struct mailbox_log_record *rec)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/lib-index/mailbox-log.c:206,1
    - Dst: open
      Src: /src/dovecot/src/lib-index/mailbox-log.c:214,1
    - Dst: mailbox_log_iter_open_next
      Src: /src/dovecot/src/lib-index/mailbox-log.c:219,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:221,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mailbox_log_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 225
    functionName: mailbox_log_iter_open_next
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 1
    functionsReached:
    - e_error
    - open
    - i_close_fd_path
    - mailbox_log_iter_open_next
    linkageType: ''
    returnType: bool
    signature: bool mailbox_log_iter_open_next(struct mailbox_log_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mailbox-log.c:231,1
    - Dst: mailbox_log_iter_open_next
      Src: /src/dovecot/src/lib-index/mailbox-log.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mailbox_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 236
    functionName: mailbox_log_iter_init
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - i_new
    - mailbox_log_iter_open_next
    linkageType: ''
    returnType: struct mailbox_log_iter
    signature: struct mailbox_log_iter *mailbox_log_iter_init(struct mailbox_log *log)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pread
      Src: /src/dovecot/src/lib-index/mailbox-log.c:249,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:252,1
    - Dst: mailbox_log_iter_open_next
      Src: /src/dovecot/src/lib-index/mailbox-log.c:258,1
    - Dst: mailbox_log_iter_next
      Src: /src/dovecot/src/lib-index/mailbox-log.c:262,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-index/mailbox-log.c:273,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/mailbox-log.c:276,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mailbox_log_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 280
    functionName: mailbox_log_iter_next
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 1
    functionsReached:
    - mailbox_log_iter_next
    - mailbox_log_iter_open_next
    - i_unlink
    - e_error
    - pread
    linkageType: ''
    returnType: struct mailbox_log_record
    signature: 'struct mailbox_log_record *

      mailbox_log_iter_next(struct mailbox_log_iter *iter)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/lib-index/mailbox-log.c:289,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mailbox-log.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mailbox_log_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 292
    functionName: mailbox_log_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-index/mailbox-log.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_close_fd_path
    linkageType: ''
    returnType: int
    signature: int mailbox_log_iter_deinit(struct mailbox_log_iter **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 17
    functionName: mail_index_file_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_file_set_syscall_error(struct mail_index *index ATTR_UNUSED,\n\t\t\t\t
      \      const char *filepath ATTR_UNUSED,\n\t\t\t\t       const char *function
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - lock_reason ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 23
    functionName: mail_transaction_log_lock_head
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_lock_head(struct mail_transaction_log *log
      ATTR_UNUSED,\n\t\t\t\t   const char *lock_reason ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - lock_reason ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: mail_transaction_log_file_unlock
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_file_unlock(struct mail_transaction_log_file
      *file ATTR_UNUSED,\n\t\t\t\t      const char *lock_reason ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - hdr
    - ATTR_UNUSED
    - cur_modseq
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_header*
    - void*
    - uint64_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 35
    functionName: mail_transaction_update_modseq
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_update_modseq(const struct mail_transaction_header
      *hdr,\n\t\t\t\t    const void *data ATTR_UNUSED,\n\t\t\t\t    uint64_t *cur_modseq,\n\t\t\t\t
      \   unsigned int version ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: mail_index_move_to_memory
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mail_index_move_to_memory(struct mail_index *index ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:51,1
    - Dst: mail_transaction_log_append_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:51,1
    - Dst: mail_transaction_log_append_add
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:54,1
    - Dst: mail_transaction_log_append_add
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:55,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:59,1
    - Dst: mail_transaction_log_append_commit
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:61,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:66,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:73,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:81,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:85,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:87,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 90
    functionName: test_append_expunge
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_append_add
    - mail_transaction_log_append_commit
    - buffer_set_used_size
    - test_end
    - mail_index_offset_to_uint32
    - mail_transaction_log_append_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_append_expunge(struct mail_transaction_log *log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:101,1
    - Dst: mail_transaction_log_append_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:104,1
    - Dst: mail_transaction_log_append_commit
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:109,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:114,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 117
    functionName: test_append_sync_offset
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_append_commit
    - test_end
    - mail_index_offset_to_uint32
    - mail_transaction_log_append_begin
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_append_sync_offset(struct mail_transaction_log *log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_create_temp_fd
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:127,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:129,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:130,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:131,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:133,1
    - Dst: test_append_expunge
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:136,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:140,1
    - Dst: mail_transaction_log_append_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:140,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:142,1
    - Dst: test_append_sync_offset
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:144,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:152,1
    - Dst: mail_transaction_log_append_begin
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:153,1
    - Dst: mail_transaction_log_append_commit
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:153,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:154,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:155,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:157,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:159,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:160,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:161,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 163
    functionName: test_mail_transaction_log_append
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 0
    functionsReached:
    - test_create_temp_fd
    - test_append_sync_offset
    - test_append_expunge
    - i_fatal
    - mail_transaction_log_append_commit
    - test_end
    - fstat
    - i_new
    - test_assert
    - mail_transaction_log_append_begin
    - buffer_free
    - i_free
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_transaction_log_append(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 172
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 23
    functionName: mail_index_view_has_modseqs
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_ext_idx
    linkageType: ''
    returnType: bool
    signature: bool mail_index_view_has_modseqs(struct mail_index_view *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 3
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: mail_index_modseq_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 1
    functionsReached:
    - mail_index_ext_register
    linkageType: ''
    returnType: void
    signature: void mail_index_modseq_init(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 37
    functionName: mail_index_modseq_get_head
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - I_MAX
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mail_index_modseq_get_head(struct mail_index *index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:46,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:49,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:50,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:52,1
    - Dst: mail_index_modseq_get_head
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:53,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:54,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:58,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:59,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 69
    functionName: mail_index_modseq_enable
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_index_map_get_ext_idx
    - mail_index_view_open
    - mail_index_update_header_ext
    - mail_index_modseq_get_head
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void mail_index_modseq_enable(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_modseq_header
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: mail_index_have_modseq_tracking
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_modseq_header
    linkageType: ''
    returnType: bool
    signature: bool mail_index_have_modseq_tracking(struct mail_index *index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_modseq_header
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:79,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: mail_index_modseq_hdr_snapshot_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_modseq_header
    - i_zero
    linkageType: ''
    returnType: void
    signature: void mail_index_modseq_hdr_snapshot_update(struct mail_index_map *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:92,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:95,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 100
    functionName: mail_index_map_get_modseq_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 2
    functionsReached:
    - mail_index_map_get_ext_idx
    - MAIL_INDEX_MAP_HDR_OFFSET
    - array_idx
    linkageType: ''
    returnType: struct mail_index_modseq_header
    signature: 'struct mail_index_modseq_header *

      mail_index_map_get_modseq_header(struct mail_index_map *map)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_modseq_header
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 115
    functionName: mail_index_map_modseq_get_highest
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_modseq_header
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mail_index_map_modseq_get_highest(struct mail_index_map *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_modseq_get_highest
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: mail_index_modseq_get_highest
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 1
    functionsReached:
    - mail_index_map_modseq_get_highest
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mail_index_modseq_get_highest(struct mail_index_view *view)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_has_modseqs
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:130,1
    - Dst: mail_index_modseq_get_head
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:131,1
    - Dst: mail_index_lookup_full
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:133,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:134,1
    - Dst: mail_index_modseq_get_head
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:137,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:140,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:141,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - view
    - seq
    argTypes:
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 156
    functionName: mail_index_modseq_lookup
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 1
    functionsReached:
    - mail_index_modseq_get_highest
    - array_idx
    - mail_index_map_get_ext_idx
    - mail_index_modseq_get_head
    - CONST_PTR_OFFSET
    - mail_index_view_has_modseqs
    - mail_index_lookup_full
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mail_index_modseq_lookup(struct mail_index_view *view, uint32_t
      seq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_has_modseqs
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:166,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:169,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:170,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:174,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - view
    - seq
    - min_modseq
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 182
    functionName: mail_index_modseq_set
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 1
    functionsReached:
    - PTR_OFFSET
    - array_idx
    - mail_index_map_get_ext_idx
    - MAIL_INDEX_REC_AT_SEQ
    - mail_index_view_has_modseqs
    linkageType: ''
    returnType: int
    signature: "int mail_index_modseq_set(struct mail_index_view *view,\n\t\t\t  uint32_t
      seq, uint64_t min_modseq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:194,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:199,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:201,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:202,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - modseq
    - nonzeros
    - seq1
    - seq2
    argTypes:
    - struct mail_index_modseq_sync*
    - uint64_t
    - bool
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 206
    functionName: mail_index_modseq_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_ext_idx
    - MAIL_INDEX_REC_AT_SEQ
    - PTR_OFFSET
    - array_idx
    linkageType: ''
    returnType: void
    signature: "void mail_index_modseq_update(struct mail_index_modseq_sync *ctx,\n\t\t\t
      uint64_t modseq, bool nonzeros,\n\t\t\t uint32_t seq1, uint32_t seq2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_has_modseqs
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:214,1
    - Dst: mail_transaction_log_view_get_prev_modseq
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:217,1
    - Dst: mail_index_modseq_update
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - seq1
    - seq2
    argTypes:
    - struct mail_index_modseq_sync*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 220
    functionName: mail_index_modseq_update_to_highest
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 2
    functionsReached:
    - mail_transaction_log_view_get_prev_modseq
    - mail_index_view_has_modseqs
    - mail_index_modseq_update
    linkageType: ''
    returnType: void
    signature: "void mail_index_modseq_update_to_highest(struct mail_index_modseq_sync
      *ctx,\n\t\t\t\t    uint32_t seq1, uint32_t seq2)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:227,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:239,1
    - Dst: mail_index_modseq_update_to_highest
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:241,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:247,1
    - Dst: array_create_from_buffer
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:248,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:260,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:261,1
    - Dst: array_create_from_buffer
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:263,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:267,1
    - Dst: array_create_from_buffer
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:268,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:278,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:278,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:280,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:281,1
    - Dst: mail_index_modseq_update_to_highest
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:283,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - thdr
    - tdata
    argTypes:
    - struct mail_index_modseq_sync*
    - struct mail_transaction_header*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 285
    functionName: mail_index_modseq_update_old_rec
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - array_create_from_buffer
    - mail_index_lookup_seq
    - array_idx
    - mail_index_lookup_seq_range
    - mail_index_modseq_update_to_highest
    - array_count
    - buffer_create_from_const_data
    - ARRAY_TYPE
    - array_is_created
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void mail_index_modseq_update_old_rec(struct mail_index_modseq_sync
      *ctx,\n\t\t\t\t const struct mail_transaction_header *thdr,\n\t\t\t\t const
      void *tdata)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:302,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:304,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:305,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:308,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:316,1
    - Dst: mail_transaction_log_view_open
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:324,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:325,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:326,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:331,1
    - Dst: mail_transaction_log_view_get_prev_modseq
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:336,1
    - Dst: mail_index_modseq_update
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:344,1
    - Dst: mail_index_modseq_update
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:349,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:353,1
    - Dst: mail_index_modseq_update_old_rec
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:356,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_modseq_sync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 360
    functionName: mail_index_modseq_sync_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - mail_transaction_log_view_get_prev_modseq
    - array_idx
    - mail_index_map_get_ext_idx
    - i_unreached
    - I_MAX
    - mail_index_modseq_update
    - mail_transaction_log_view_set
    - mail_transaction_log_view_get_prev_pos
    - mail_transaction_log_view_open
    - mail_index_modseq_update_old_rec
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: void
    signature: void mail_index_modseq_sync_init(struct mail_index_modseq_sync *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:369,1
    - Dst: mail_index_view_has_modseqs
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:372,1
    - Dst: mail_index_modseq_sync_init
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - sync_map_ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 364
    functionDepth: 5
    functionLinenumber: 364
    functionLinenumberEnd: 377
    functionName: mail_index_modseq_sync_begin
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 1
    functionsReached:
    - mail_index_modseq_sync_init
    - i_new
    - mail_index_view_has_modseqs
    linkageType: ''
    returnType: struct mail_index_modseq_sync
    signature: 'struct mail_index_modseq_sync *

      mail_index_modseq_sync_begin(struct mail_index_sync_map_ctx *sync_map_ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:390,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:394,1
    - Dst: mail_transaction_log_view_get_prev_modseq
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:396,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:398,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:399,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:404,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:409,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:411,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_modseq_sync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 413
    functionName: mail_index_modseq_update_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_transaction_log_view_get_prev_modseq
    - array_idx
    - mail_index_map_get_ext_idx
    - buffer_write
    - mail_transaction_log_view_get_prev_pos
    - i_assert
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: void
    signature: void mail_index_modseq_update_header(struct mail_index_modseq_sync
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_modseq_update_header
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:421,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_index_modseq_sync**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 423
    functionName: mail_index_modseq_sync_end
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 1
    functionsReached:
    - mail_index_modseq_update_header
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_index_modseq_sync_end(struct mail_index_modseq_sync **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_modseq_sync_init
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_modseq_sync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 425
    functionDepth: 5
    functionLinenumber: 425
    functionLinenumberEnd: 429
    functionName: mail_index_modseq_hdr_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 1
    functionsReached:
    - mail_index_modseq_sync_init
    linkageType: ''
    returnType: void
    signature: void mail_index_modseq_hdr_update(struct mail_index_modseq_sync *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_find_file
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:446,1
    - Dst: mail_transaction_log_file_get_modseq_next_offset
      Src: /src/dovecot/src/lib-index/mail-index-modseq.c:465,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 4
    argNames:
    - view
    - modseq
    - log_seq_r
    - log_offset_r
    argTypes:
    - struct mail_index_view*
    - uint64_t
    - uint32_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 431
    functionDepth: 4
    functionLinenumber: 431
    functionLinenumberEnd: 478
    functionName: mail_index_modseq_get_next_log_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_find_file
    - mail_transaction_log_file_get_modseq_next_offset
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_modseq_get_next_log_offset(struct mail_index_view
      *view,\n\t\t\t\t\t   uint64_t modseq, uint32_t *log_seq_r,\n\t\t\t\t\t   uoff_t
      *log_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cache
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: MAIL_CACHE_IS_UNUSABLE
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-private.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CACHE_IS_UNUSABLE(cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: MAIL_CACHE_FIELD_LAST_USED
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CACHE_FIELD_LAST_USED()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: MAIL_CACHE_FIELD_SIZE
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CACHE_FIELD_SIZE(count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: MAIL_CACHE_FIELD_TYPE
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CACHE_FIELD_TYPE(count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: MAIL_CACHE_FIELD_DECISION
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CACHE_FIELD_DECISION(count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: MAIL_CACHE_FIELD_NAMES
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CACHE_FIELD_NAMES(count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_lock
      Src: /src/dovecot/src/lib-index/mail-cache-sync-update.c:13,1
    - Dst: mail_cache_flush_and_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-sync-update.c:20,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cache
    - count
    argTypes:
    - struct mail_cache*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 11
    functionDepth: 9
    functionLinenumber: 11
    functionLinenumberEnd: 22
    functionName: mail_cache_expunge_count
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-sync-update.c
    functionUses: 1
    functionsReached:
    - mail_cache_lock
    - mail_cache_flush_and_unlock
    linkageType: ''
    returnType: void
    signature: void mail_cache_expunge_count(struct mail_cache *cache, unsigned int
      count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-cache-sync-update.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - context
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 35
    functionName: mail_cache_handler_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-sync-update.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct mail_cache_sync_context
    signature: struct mail_cache_sync_context *mail_cache_handler_init(void **context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_expunge_count
      Src: /src/dovecot/src/lib-index/mail-cache-sync-update.c:45,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache-sync-update.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sync_ctx
    - ctx
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_cache_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 37
    functionDepth: 10
    functionLinenumber: 37
    functionLinenumberEnd: 48
    functionName: mail_cache_handler_deinit
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_cache_expunge_count
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mail_cache_handler_deinit(struct mail_index_sync_map_ctx *sync_ctx,\n\t\t\t\t
      \     struct mail_cache_sync_context *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_handler_deinit
      Src: /src/dovecot/src/lib-index/mail-cache-sync-update.c:57,1
    - Dst: mail_cache_handler_init
      Src: /src/dovecot/src/lib-index/mail-cache-sync-update.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - sync_ctx
    - data
    - sync_context
    argTypes:
    - struct mail_index_sync_map_ctx*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 50
    functionDepth: 11
    functionLinenumber: 50
    functionLinenumberEnd: 68
    functionName: mail_cache_expunge_handler
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-sync-update.c
    functionUses: 0
    functionsReached:
    - mail_cache_handler_deinit
    - mail_cache_handler_init
    linkageType: ''
    returnType: int
    signature: "int mail_cache_expunge_handler(struct mail_index_sync_map_ctx *sync_ctx,\n\t\t\t
      \      const void *data, void **sync_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cache
    - ','
    - field_idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 16
    functionName: CACHE_FIELD_IS_NEWLY_WANTED
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CACHE_FIELD_IS_NEWLY_WANTED(cache, field_idx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum mail_cache_field_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 34
    functionName: field_has_fixed_size
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: bool field_has_fixed_size(enum mail_cache_field_type type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum mail_cache_decision_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: field_decision_is_valid
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    linkageType: ''
    returnType: bool
    signature: bool field_decision_is_valid(enum mail_cache_decision_type type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:54,1
    - Dst: field_has_fixed_size
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:58,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - cache
    - idx
    - type
    - size
    argTypes:
    - struct mail_cache*
    - unsigned int
    - enum mail_cache_field_type
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 64
    functionName: field_type_verify
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_corrupted
    - field_has_fixed_size
    linkageType: ''
    returnType: int
    signature: "int field_type_verify(struct mail_cache *cache, unsigned int idx,\n\t\t\t
      \    enum mail_cache_field_type type, unsigned int size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:73,1
    - Dst: field_type_verify
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:101,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - cache
    - newfield
    argTypes:
    - struct mail_cache*
    - struct mail_cache_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 103
    functionName: mail_cache_field_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - i_assert
    - field_type_verify
    linkageType: ''
    returnType: void
    signature: "void mail_cache_field_update(struct mail_cache *cache,\n\t\t\tconst
      struct mail_cache_field *newfield)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:122,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:126,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:128,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:137,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:139,1
    - Dst: mail_cache_field_update
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:140,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:147,1
    - Dst: i_realloc_type
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:161,1
    - Dst: i_realloc_type
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:165,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:176,1
    - Dst: field_has_fixed_size
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:182,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:185,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:189,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 4
    argNames:
    - cache
    - fields
    - fields_count
    - fields_modify_pool
    argTypes:
    - struct mail_cache*
    - struct mail_cache_field*
    - unsigned int
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 105
    functionDepth: 5
    functionLinenumber: 105
    functionLinenumberEnd: 191
    functionName: mail_cache_register_fields
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - POINTER_CAST
    - p_strndup
    - i_realloc_type
    - strlen
    - mail_cache_field_update
    - strcasecmp
    - hash_table_insert
    - field_has_fixed_size
    - hash_table_lookup_full
    - POINTER_CAST_TO
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_cache_register_fields(struct mail_cache *cache,\n\t\t\t\tstruct
      mail_cache_field *fields,\n\t\t\t\tunsigned int fields_count,\n\t\t\t\tpool_t
      fields_modify_pool)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:203,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:204,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:205,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:206,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:209,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:210,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - cache
    - name
    argTypes:
    - struct mail_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 213
    functionName: mail_cache_register_lookup
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strndup
    - str_begins_icase_with
    - hash_table_lookup_full
    - POINTER_CAST_TO
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mail_cache_register_lookup(struct mail_cache *cache, const
      char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cache
    - field_idx
    argTypes:
    - struct mail_cache*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 221
    functionName: mail_cache_register_get_field
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct mail_cache_field
    signature: 'struct mail_cache_field *

      mail_cache_register_get_field(struct mail_cache *cache, unsigned int field_idx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:231,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:233,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:235,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - cache
    - pool_r
    - count_r
    argTypes:
    - struct mail_cache*
    - pool_t*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 223
    functionDepth: 4
    functionLinenumber: 223
    functionLinenumberEnd: 243
    functionName: mail_cache_register_get_list
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - mail_cache_open_and_verify
    - p_new
    linkageType: ''
    returnType: struct mail_cache_field
    signature: "struct mail_cache_field *\nmail_cache_register_get_list(struct mail_cache
      *cache, pool_t *pool_r,\n\t\t\t     unsigned int *count_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:257,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:268,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:271,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:280,1
    - Dst: mail_cache_map
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:287,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:292,1
    - Dst: pread_full
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:301,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:304,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:308,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:316,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:321,1
    - Dst: mail_cache_purge_later
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:327,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:333,1
    - Dst: file_cache_invalidate
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:337,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:341,1
    - Dst: mail_cache_map
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:342,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:346,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 69
    argCount: 3
    argNames:
    - cache
    - offset_r
    - field_hdr_r
    argTypes:
    - struct mail_cache*
    - uint32_t*
    - struct mail_cache_header_fields**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 245
    functionDepth: 8
    functionLinenumber: 245
    functionLinenumberEnd: 354
    functionName: mail_cache_header_fields_get_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - mail_cache_purge_later
    - I_MAX
    - file_cache_invalidate
    - buffer_set_used_size
    - mail_index_offset_to_uint32
    - mail_cache_map
    - pread_full
    - mail_cache_set_corrupted
    - MAIL_CACHE_IS_UNUSABLE
    linkageType: ''
    returnType: int
    signature: "int mail_cache_header_fields_get_offset(struct mail_cache *cache,\n\t\t\t\t
      \   uint32_t *offset_r,\n\t\t\t\t    const struct mail_cache_header_fields **field_hdr_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_header_fields_get_offset
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:369,1
    - Dst: MAIL_CACHE_FIELD_NAMES
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:379,1
    - Dst: MAIL_CACHE_FIELD_NAMES
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:380,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:381,1
    - Dst: i_realloc_type
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:392,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:395,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:399,1
    - Dst: MAIL_CACHE_FIELD_LAST_USED
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:399,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:400,1
    - Dst: MAIL_CACHE_FIELD_SIZE
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:401,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:402,1
    - Dst: MAIL_CACHE_FIELD_TYPE
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:403,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:404,1
    - Dst: MAIL_CACHE_FIELD_DECISION
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:405,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:406,1
    - Dst: MAIL_CACHE_FIELD_NAMES
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:407,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:408,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:409,1
    - Dst: mail_cache_purge_drop_init
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:415,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:416,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:420,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:426,1
    - Dst: field_decision_is_valid
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:429,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:430,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:437,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:439,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:442,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:448,1
    - Dst: field_type_verify
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:457,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:467,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:472,1
    - Dst: mail_cache_purge_drop_test
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:492,1
    - Dst: mail_cache_purge_later
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:496,1
    - Dst: mail_cache_purge_later
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:504,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 86
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 356
    functionDepth: 9
    functionLinenumber: 356
    functionLinenumberEnd: 515
    functionName: mail_cache_header_fields_read
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 3
    functionsReached:
    - MAIL_CACHE_FIELD_LAST_USED
    - MAIL_CACHE_FIELD_SIZE
    - field_type_verify
    - CONST_PTR_OFFSET
    - mail_cache_register_fields
    - mail_cache_purge_drop_init
    - i_free_and_null
    - hash_table_lookup_full
    - mail_cache_purge_drop_test
    - mail_cache_set_corrupted
    - mail_cache_header_fields_get_offset
    - i_zero
    - MAIL_CACHE_FIELD_NAMES
    - i_assert
    - MAIL_CACHE_FIELD_TYPE
    - MAIL_CACHE_FIELD_DECISION
    - i_realloc_type
    - ENUM_NEGATE
    - field_decision_is_valid
    - mail_cache_purge_later
    - POINTER_CAST_TO
    linkageType: ''
    returnType: int
    signature: int mail_cache_header_fields_read(struct mail_cache *cache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:526,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:527,1
    - Dst: CACHE_FIELD_IS_NEWLY_WANTED
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:534,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:535,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:536,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 5
    argNames:
    - cache
    - dest
    - add_new
    - offset
    - size
    argTypes:
    - struct mail_cache*
    - buffer_t*
    - bool
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 539
    functionName: copy_to_buf
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - CONST_PTR_OFFSET
    - CACHE_FIELD_IS_NEWLY_WANTED
    linkageType: ''
    returnType: void
    signature: "void copy_to_buf(struct mail_cache *cache, buffer_t *dest, bool add_new,\n\t\t\tsize_t
      offset, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:551,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:553,1
    - Dst: CACHE_FIELD_IS_NEWLY_WANTED
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:560,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:561,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:563,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - cache
    - dest
    - add_new
    - offset
    argTypes:
    - struct mail_cache*
    - buffer_t*
    - bool
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 566
    functionName: copy_to_buf_byte
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - CONST_PTR_OFFSET
    - CACHE_FIELD_IS_NEWLY_WANTED
    linkageType: ''
    returnType: void
    signature: "void copy_to_buf_byte(struct mail_cache *cache, buffer_t *dest,\n\t\t\t
      \    bool add_new, size_t offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copy_to_buf
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - cache
    - dest
    - add_new
    argTypes:
    - struct mail_cache*
    - buffer_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 580
    functionName: copy_to_buf_last_used
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - copy_to_buf
    linkageType: ''
    returnType: void
    signature: void copy_to_buf_last_used(struct mail_cache *cache, buffer_t *dest,
      bool add_new)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:588,1
    - Dst: mail_cache_header_fields_get_offset
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:589,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:592,1
    - Dst: copy_to_buf_last_used
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:594,1
    - Dst: mail_cache_write
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:595,1
    - Dst: MAIL_CACHE_FIELD_LAST_USED
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:596,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:598,1
    - Dst: copy_to_buf_byte
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:599,1
    - Dst: MAIL_CACHE_FIELD_DECISION
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:603,1
    - Dst: mail_cache_write
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:604,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 582
    functionDepth: 10
    functionLinenumber: 582
    functionLinenumberEnd: 615
    functionName: mail_cache_header_fields_update_locked
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - MAIL_CACHE_FIELD_DECISION
    - copy_to_buf_last_used
    - t_buffer_create
    - MAIL_CACHE_FIELD_LAST_USED
    - buffer_set_used_size
    - mail_cache_header_fields_read
    - copy_to_buf_byte
    - mail_cache_write
    - mail_cache_header_fields_get_offset
    linkageType: ''
    returnType: int
    signature: int mail_cache_header_fields_update_locked(struct mail_cache *cache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_header_fields_update_locked
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 617
    functionDepth: 11
    functionLinenumber: 617
    functionLinenumberEnd: 626
    functionName: mail_cache_header_fields_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 3
    functionsReached:
    - mail_cache_header_fields_update_locked
    linkageType: ''
    returnType: int
    signature: int mail_cache_header_fields_update(struct mail_cache *cache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:646,1
    - Dst: CACHE_FIELD_IS_NEWLY_WANTED
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:649,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:652,1
    - Dst: copy_to_buf_last_used
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:655,1
    - Dst: copy_to_buf
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:656,1
    - Dst: copy_to_buf_byte
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:659,1
    - Dst: copy_to_buf_byte
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:661,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:664,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:671,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:671,1
    - Dst: CACHE_FIELD_IS_NEWLY_WANTED
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:675,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:677,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:677,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:682,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:685,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - cache
    - dest
    argTypes:
    - struct mail_cache*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 639
    functionDepth: 3
    functionLinenumber: 639
    functionLinenumberEnd: 686
    functionName: mail_cache_header_fields_get
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_append
    - CACHE_FIELD_IS_NEWLY_WANTED
    - buffer_append_zero
    - copy_to_buf_last_used
    - buffer_write
    - copy_to_buf
    - strlen
    - i_assert
    - copy_to_buf_byte
    linkageType: ''
    returnType: void
    signature: void mail_cache_header_fields_get(struct mail_cache *cache, buffer_t
      *dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_header_fields_get_offset
      Src: /src/dovecot/src/lib-index/mail-cache-fields.c:691,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cache
    - offset_r
    argTypes:
    - struct mail_cache*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 688
    functionDepth: 9
    functionLinenumber: 688
    functionLinenumberEnd: 702
    functionName: mail_cache_header_fields_get_next_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-fields.c
    functionUses: 0
    functionsReached:
    - mail_cache_header_fields_get_offset
    linkageType: ''
    returnType: int
    signature: "int mail_cache_header_fields_get_next_offset(struct mail_cache *cache,\n\t\t\t\t\t
      \    uint32_t *offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib-index/test-mail-index.h:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 14
    functionName: test_mail_index_get_dir
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.h
    functionUses: 0
    functionsReached:
    - test_dir_prepend
    linkageType: ''
    returnType: char
    signature: char *test_mail_index_get_dir(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-index/test-mail-index.h:20,1
    - Dst: test_mail_index_get_dir
      Src: /src/dovecot/src/lib-index/test-mail-index.h:20,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index.h:22,1
    - Dst: mail_index_open_or_create
      Src: /src/dovecot/src/lib-index/test-mail-index.h:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - idx_initial_created
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 16
    functionDepth: 7
    functionLinenumber: 16
    functionLinenumberEnd: 25
    functionName: test_mail_index_open
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.h
    functionUses: 4
    functionsReached:
    - test_mail_index_get_dir
    - mail_index_alloc
    - test_assert
    - mail_index_open_or_create
    linkageType: ''
    returnType: struct mail_index
    signature: struct mail_index *test_mail_index_open(bool idx_initial_created)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_index_get_dir
      Src: /src/dovecot/src/lib-index/test-mail-index.h:29,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-index/test-mail-index.h:32,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib-index/test-mail-index.h:33,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-index/test-mail-index.h:34,1
    - Dst: test_mail_index_open
      Src: /src/dovecot/src/lib-index/test-mail-index.h:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - idx_initial_created
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: test_mail_index_init
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.h
    functionUses: 3
    functionsReached:
    - i_error
    - test_mail_index_open
    - unlink_directory
    - mkdir
    - test_mail_index_get_dir
    linkageType: ''
    returnType: struct mail_index
    signature: struct mail_index *test_mail_index_init(bool idx_initial_created)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-index/test-mail-index.h:43,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-index/test-mail-index.h:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: test_mail_index_close
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.h
    functionUses: 0
    functionsReached:
    - mail_index_close
    - mail_index_free
    linkageType: ''
    returnType: void
    signature: void test_mail_index_close(struct mail_index **index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-index/test-mail-index.h:51,1
    - Dst: test_mail_index_get_dir
      Src: /src/dovecot/src/lib-index/test-mail-index.h:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: test_mail_index_delete
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.h
    functionUses: 1
    functionsReached:
    - test_mail_index_get_dir
    - unlink_directory
    linkageType: ''
    returnType: void
    signature: void test_mail_index_delete(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_index_close
      Src: /src/dovecot/src/lib-index/test-mail-index.h:57,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-index.h:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 6
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: test_mail_index_deinit
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index.h
    functionUses: 2
    functionsReached:
    - test_mail_index_close
    - test_mail_index_delete
    linkageType: ''
    returnType: void
    signature: void test_mail_index_deinit(struct mail_index **index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - function
    argTypes:
    - struct mail_transaction_log_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 29
    functionName: log_file_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mail_index_file_set_syscall_error
    linkageType: ''
    returnType: void
    signature: "void log_file_set_syscall_error(struct mail_transaction_log_file *file,\n\t\t\t
      \  const char *function)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:38,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:45,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:47,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:51,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:52,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:56,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 61
    functionName: mail_transaction_log_mark_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mail_index_file_set_syscall_error
    - pwrite_full
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    - fcntl
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_mark_corrupted(struct mail_transaction_log_file
      *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_mark_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:71,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:73,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:75,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - file
    - fmt
    argTypes:
    - struct mail_transaction_log_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 80
    functionName: mail_transaction_log_file_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 5
    functionsReached:
    - mail_transaction_log_mark_corrupted
    - t_strdup_vprintf
    - mail_index_set_error
    - va_start
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_file_set_corrupted(struct mail_transaction_log_file
      *file,\n\t\t\t\t\tconst char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:90,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - log
    - path
    argTypes:
    - struct mail_transaction_log*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 95
    functionName: mail_transaction_log_file_alloc
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 5
    functionsReached:
    - i_strdup
    - i_new
    linkageType: ''
    returnType: struct mail_transaction_log_file
    signature: "struct mail_transaction_log_file *\nmail_transaction_log_file_alloc(struct
      mail_transaction_log *log,\n\t\t\t\tconst char *path)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:105,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:106,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:118,1
    - Dst: munmap
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:121,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:122,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:126,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:127,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:130,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:131,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:132,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct mail_transaction_log_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 135
    functionName: mail_transaction_log_file_free
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 7
    functionsReached:
    - i_free
    - log_file_set_syscall_error
    - munmap
    - buffer_free
    - i_assert
    - close
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_file_free(struct mail_transaction_log_file
      **_file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_modseq_header
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:154,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:156,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:171,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 187
    functionName: mail_transaction_log_file_skip_to_head
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_modseq_header
    - mail_index_set_error
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_file_skip_to_head(struct mail_transaction_log_file
      *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_file_skip_to_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:204,1
    - Dst: mail_transaction_log_file_sync
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:213,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 189
    functionDepth: 3
    functionLinenumber: 189
    functionLinenumberEnd: 217
    functionName: mail_transaction_log_file_add_to_list
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - i_assert
    - buffer_set_used_size
    - mail_transaction_log_file_skip_to_head
    - mail_transaction_log_file_sync
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_file_add_to_list(struct mail_transaction_log_file
      *file)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:226,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:228,1
    - Dst: mail_index_map
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:241,1
    - Dst: mail_index_map_modseq_get_highest
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:255,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 2
    argNames:
    - log
    - hdr
    argTypes:
    - struct mail_transaction_log*
    - struct mail_transaction_log_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 285
    functionName: mail_transaction_log_init_hdr
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_map_modseq_get_highest
    - i_assert
    - mail_index_map
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_init_hdr(struct mail_transaction_log *log,\n\t\t\t
      \     struct mail_transaction_log_header *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_file_alloc
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:292,1
    - Dst: mail_transaction_log_init_hdr
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:293,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:294,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:298,1
    - Dst: mail_transaction_log_file_add_to_list
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - log
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 303
    functionName: mail_transaction_log_file_alloc_in_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 3
    functionsReached:
    - mail_transaction_log_file_add_to_list
    - mail_transaction_log_file_alloc
    - buffer_create_dynamic
    - mail_transaction_log_init_hdr
    - i_free
    linkageType: ''
    returnType: struct mail_transaction_log_file
    signature: 'struct mail_transaction_log_file *

      mail_transaction_log_file_alloc_in_memory(struct mail_transaction_log *log)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:314,1
    - Dst: mail_transaction_log_get_dotlock_set
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:315,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:316,1
    - Dst: time
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:322,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:326,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 335
    functionName: mail_transaction_log_file_dotlock
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - time
    - mail_transaction_log_get_dotlock_set
    - file_dotlock_create
    - log_file_set_syscall_error
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_file_dotlock(struct mail_transaction_log_file
      *file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:342,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:346,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:348,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:353,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 359
    functionName: mail_transaction_log_file_undotlock
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - log_file_set_syscall_error
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_file_undotlock(struct mail_transaction_log_file
      *file)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:370,1
    - Dst: mail_index_set_error_code
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:376,1
    - Dst: mail_transaction_log_file_dotlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:384,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:386,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:387,1
    - Dst: mail_index_lock_fd
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:389,1
    - Dst: time
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:394,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:398,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:402,1
    - Dst: file_lock_find
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:406,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 361
    functionDepth: 3
    functionLinenumber: 361
    functionLinenumberEnd: 408
    functionName: mail_transaction_log_file_lock
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 1
    functionsReached:
    - mail_index_lock_fd
    - time
    - mail_index_set_error
    - I_MIN
    - log_file_set_syscall_error
    - mail_transaction_log_file_dotlock
    - file_lock_find
    - mail_index_set_error_code
    - i_assert
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_file_lock(struct mail_transaction_log_file
      *file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:421,1
    - Dst: time
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:424,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:426,1
    - Dst: mail_transaction_log_file_undotlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:432,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:436,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - file
    - lock_reason
    argTypes:
    - struct mail_transaction_log_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 437
    functionName: mail_transaction_log_file_unlock
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 4
    functionsReached:
    - file_unlock
    - mail_transaction_log_file_undotlock
    - e_warning
    - time
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_file_unlock(struct mail_transaction_log_file
      *file,\n\t\t\t\t      const char *lock_reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:446,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:448,1
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:449,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:453,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:456,1
    - Dst: pread
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:467,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:467,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:474,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:475,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:476,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 480
    functionName: mail_transaction_log_file_read_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - PTR_OFFSET
    - I_MIN
    - buffer_create_dynamic
    - buffer_set_used_size
    - buffer_append_space_unsafe
    - mmap_get_page_size
    - pread
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t mail_transaction_log_file_read_header(struct mail_transaction_log_file
      *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:490,1
    - Dst: mail_transaction_log_mark_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:493,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 506
    functionName: mail_transaction_log_file_fail_dupe
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_index_set_error
    - mail_transaction_log_mark_corrupted
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_file_fail_dupe(struct mail_transaction_log_file
      *file)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:515,1
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:515,1
    - Dst: mail_transaction_log_file_read_header
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:520,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:523,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:531,1
    - Dst: MAIL_TRANSACTION_LOG_HDR_VERSION
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:537,1
    - Dst: MAIL_TRANSACTION_LOG_VERSION_HAVE
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:538,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:547,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:555,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:562,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:562,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:569,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:578,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:585,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:593,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:613,1
    - Dst: mail_transaction_log_file_fail_dupe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:615,1
    - Dst: mail_transaction_log_file_fail_dupe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:618,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 2
    argNames:
    - file
    - ignore_estale
    argTypes:
    - struct mail_transaction_log_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 625
    functionName: mail_transaction_log_file_read_hdr
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - strcmp
    - MAIL_TRANSACTION_LOG_HDR_VERSION
    - PTR_OFFSET
    - mail_transaction_log_file_set_corrupted
    - mail_index_set_error
    - e_debug
    - mail_transaction_log_file_fail_dupe
    - log_file_set_syscall_error
    - MAIL_TRANSACTION_LOG_VERSION_HAVE
    - memset
    - i_assert
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    - mail_transaction_log_file_read_header
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_read_hdr(struct mail_transaction_log_file
      *file,\n\t\t\t\t   bool ignore_estale)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:633,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:634,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:635,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - file
    - ignore_estale
    argTypes:
    - struct mail_transaction_log_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 644
    functionName: mail_transaction_log_file_stat
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - log_file_set_syscall_error
    - fstat
    - ESTALE_FSTAT
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_stat(struct mail_transaction_log_file
      *file,\n\t\t\t       bool ignore_estale)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 657
    functionName: mail_transaction_log_file_is_dupe
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - CMP_DEV_T
    linkageType: ''
    returnType: bool
    signature: bool mail_transaction_log_file_is_dupe(struct mail_transaction_log_file
      *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:667,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:671,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:674,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:679,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:680,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:682,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:684,1
    - Dst: mail_index_uint32_to_offset
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:685,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:689,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:692,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:694,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:696,1
    - Dst: mail_index_uint32_to_offset
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 2
    argNames:
    - index
    - buf
    argTypes:
    - struct mail_index*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 659
    functionDepth: 2
    functionLinenumber: 659
    functionLinenumberEnd: 698
    functionName: log_write_ext_hdr_init_data
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_append_zero
    - array_idx
    - buffer_get_space_unsafe
    - strlen
    - buffer_append_space_unsafe
    - mail_index_uint32_to_offset
    linkageType: ''
    returnType: void
    signature: void log_write_ext_hdr_init_data(struct mail_index *index, buffer_t
      *buf)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:714,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:715,1
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:723,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:734,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:736,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:741,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:750,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:753,1
    - Dst: mail_transaction_log_file_read_hdr
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:759,1
    - Dst: mail_transaction_log_file_stat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:761,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:763,1
    - Dst: mail_transaction_log_file_add_to_list
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:764,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:768,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:769,1
    - Dst: mail_transaction_log_init_hdr
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:779,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:790,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:791,1
    - Dst: log_write_ext_hdr_init_data
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:794,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:795,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:796,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:803,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:804,1
    - Dst: mail_transaction_log_file_stat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:810,1
    - Dst: mail_transaction_log_file_lock
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:814,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:829,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:830,1
    - Dst: nfs_safe_link
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:833,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:835,1
    - Dst: file_dotlock_replace
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:846,1
    - Dst: mail_transaction_log_file_unlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:850,1
    - Dst: mail_transaction_log_file_add_to_list
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:856,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:858,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 89
    argCount: 4
    argNames:
    - file
    - new_fd
    - reset
    - dotlock
    argTypes:
    - struct mail_transaction_log_file*
    - int
    - bool
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 700
    functionDepth: 4
    functionLinenumber: 700
    functionLinenumberEnd: 860
    functionName: mail_transaction_log_file_create2
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - log_file_set_syscall_error
    - nfs_safe_open
    - CMP_DEV_T
    - mail_index_set_error
    - buffer_append
    - mail_transaction_log_file_unlock
    - nfs_safe_stat
    - mail_transaction_log_file_lock
    - nfs_safe_link
    - write_full
    - fcntl
    - mail_transaction_log_file_read_hdr
    - nfs_flush_file_handle_cache
    - i_unlink_if_exists
    - log_write_ext_hdr_init_data
    - i_assert
    - close
    - file_dotlock_delete
    - fdatasync
    - mail_transaction_log_file_add_to_list
    - mail_transaction_log_init_hdr
    - mail_transaction_log_file_stat
    - t_buffer_create
    - file_dotlock_replace
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_create2(struct mail_transaction_log_file
      *file,\n\t\t\t\t  int new_fd, bool reset,\n\t\t\t\t  struct dotlock **dotlock)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:871,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:871,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:874,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:881,1
    - Dst: mail_transaction_log_get_dotlock_set
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:887,1
    - Dst: umask
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:892,1
    - Dst: file_dotlock_open
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:893,1
    - Dst: umask
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:894,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:897,1
    - Dst: mail_index_fchown
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:900,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:900,1
    - Dst: mail_transaction_log_file_create2
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:904,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:907,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - file
    - reset
    argTypes:
    - struct mail_transaction_log_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 862
    functionDepth: 5
    functionLinenumber: 862
    functionLinenumberEnd: 911
    functionName: mail_transaction_log_file_create
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 2
    functionsReached:
    - file_dotlock_delete
    - mail_transaction_log_file_create2
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_index_fchown
    - mail_transaction_log_get_dotlock_set
    - umask
    - log_file_set_syscall_error
    - file_dotlock_open
    - file_dotlock_get_lock_path
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_create(struct mail_transaction_log_file
      *file,\n\t\t\t\t     bool reset)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:923,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:926,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:928,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:929,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:938,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:939,1
    - Dst: mail_transaction_log_file_stat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:944,1
    - Dst: mail_transaction_log_file_is_dupe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:946,1
    - Dst: mail_transaction_log_file_read_hdr
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:954,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:967,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:975,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:980,1
    - Dst: mail_transaction_log_file_add_to_list
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:983,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 2
    argNames:
    - file
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 913
    functionDepth: 4
    functionLinenumber: 913
    functionLinenumberEnd: 985
    functionName: mail_transaction_log_file_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 3
    functionsReached:
    - mail_transaction_log_file_add_to_list
    - log_file_set_syscall_error
    - mail_transaction_log_file_stat
    - t_strdup_printf
    - nfs_safe_open
    - mail_transaction_log_file_read_hdr
    - i_unlink_if_exists
    - ENOACCESS
    - mail_transaction_log_file_is_dupe
    - buffer_free
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_open(struct mail_transaction_log_file
      *file,\n\t\t\t\t   const char **reason_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1000,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1004,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1010,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1011,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1018,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - file
    - data
    - trans_size
    - error_r
    argTypes:
    - struct mail_transaction_log_file*
    - void*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1029
    functionName: log_file_track_mailbox_sync_offset_hdr
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_assert
    - CONST_PTR_OFFSET
    - mail_transaction_log_file_set_corrupted
    linkageType: ''
    returnType: int
    signature: "int log_file_track_mailbox_sync_offset_hdr(struct mail_transaction_log_file
      *file,\n\t\t\t\t       const void *data, unsigned int trans_size,\n\t\t\t\t
      \      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_TRANSACTION_LOG_VERSION_HAVE
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1038,1
    - Dst: MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1042,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - u
    - count
    - version
    argTypes:
    - struct mail_transaction_flag_update*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1046
    functionName: flag_updates_have_non_internal
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - MAIL_TRANSACTION_LOG_VERSION_HAVE
    - MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL
    linkageType: ''
    returnType: bool
    signature: "bool flag_updates_have_non_internal(const struct mail_transaction_flag_update
      *u,\n\t\t\t       unsigned int count, unsigned int version)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1054,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1055,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1065,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1068,1
    - Dst: flag_updates_have_non_internal
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1099,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1106,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 4
    argNames:
    - hdr
    - data
    - cur_modseq
    - version
    argTypes:
    - struct mail_transaction_header*
    - void*
    - uint64_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1048
    functionDepth: 2
    functionLinenumber: 1048
    functionLinenumberEnd: 1115
    functionName: mail_transaction_update_modseq
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 3
    functionsReached:
    - CONST_PTR_OFFSET
    - strlen
    - mail_index_offset_to_uint32
    - memcmp
    - i_assert
    - flag_updates_have_non_internal
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_update_modseq(const struct mail_transaction_header
      *hdr,\n\t\t\t\t    const void *data, uint64_t *cur_modseq,\n\t\t\t\t    unsigned
      int version)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_update_modseq
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1125,1
    - Dst: MAIL_TRANSACTION_LOG_HDR_VERSION
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1126,1
    - Dst: log_file_track_mailbox_sync_offset_hdr
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1134,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 4
    argNames:
    - file
    - hdr
    - trans_size
    - error_r
    argTypes:
    - struct mail_transaction_log_file*
    - struct mail_transaction_header*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1117
    functionDepth: 2
    functionLinenumber: 1117
    functionLinenumberEnd: 1179
    functionName: log_file_track_sync
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - MAIL_TRANSACTION_LOG_HDR_VERSION
    - log_file_track_mailbox_sync_offset_hdr
    - mail_transaction_update_modseq
    linkageType: ''
    returnType: int
    signature: "int log_file_track_sync(struct mail_transaction_log_file *file,\n\t\t
      \   const struct mail_transaction_header *hdr,\n\t\t    unsigned int trans_size,
      const char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1192,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1196,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1198,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1201,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1207,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1209,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1215,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1217,1
    - Dst: log_file_track_sync
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1225,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1244,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1245,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1246,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1264,1
    - Dst: mail_index_flush_read_cache
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1268,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1275,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1279,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 3
    argNames:
    - file
    - retry_r
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1181
    functionDepth: 3
    functionLinenumber: 1181
    functionLinenumberEnd: 1284
    functionName: mail_transaction_log_file_sync
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 1
    functionsReached:
    - mail_transaction_log_file_set_corrupted
    - log_file_set_syscall_error
    - buffer_get_data
    - t_strdup_printf
    - mail_index_flush_read_cache
    - mail_index_offset_to_uint32
    - fstat
    - log_file_track_sync
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_sync(struct mail_transaction_log_file
      *file,\n\t\t\t       bool *retry_r, const char **reason_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1295,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1297,1
    - Dst: pread_full
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1298,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1306,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1307,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1311,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1315,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1318,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1319,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 3
    argNames:
    - file
    - offset
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1286
    functionDepth: 1
    functionLinenumber: 1286
    functionLinenumberEnd: 1322
    functionName: mail_transaction_log_file_insert_read
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_file_set_corrupted
    - buffer_get_space_unsafe
    - buffer_copy
    - log_file_set_syscall_error
    - t_strdup_printf
    - buffer_set_used_size
    - pread_full
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_insert_read(struct mail_transaction_log_file
      *file,\n\t\t\t\t      uoff_t offset, const char **reason_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1336,1
    - Dst: pread
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1337,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1342,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1348,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - file
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1324
    functionDepth: 1
    functionLinenumber: 1324
    functionLinenumberEnd: 1357
    functionName: mail_transaction_log_file_read_more
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - log_file_set_syscall_error
    - t_strdup_printf
    - buffer_set_used_size
    - buffer_append_space_unsafe
    - pread
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_read_more(struct mail_transaction_log_file
      *file,\n\t\t\t\t    const char **reason_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1359
    functionDepth: 0
    functionLinenumber: 1359
    functionLinenumberEnd: 1378
    functionName: mail_transaction_log_file_need_nfs_flush
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_transaction_log_file_need_nfs_flush(struct mail_transaction_log_file
      *file)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1388,1
    - Dst: nfs_flush_attr_cache_unlocked
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1398,1
    - Dst: nfs_flush_attr_cache_fd_locked
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1400,1
    - Dst: mail_transaction_log_file_insert_read
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1405,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1412,1
    - Dst: mail_transaction_log_file_read_more
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1416,1
    - Dst: mail_transaction_log_file_need_nfs_flush
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1420,1
    - Dst: mail_transaction_log_file_read
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1422,1
    - Dst: mail_transaction_log_file_sync
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1423,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1424,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1426,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1427,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - file
    - start_offset
    - nfs_flush
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1380
    functionDepth: 4
    functionLinenumber: 1380
    functionLinenumberEnd: 1430
    functionName: mail_transaction_log_file_read
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 1
    functionsReached:
    - nfs_flush_attr_cache_unlocked
    - mail_transaction_log_file_sync
    - buffer_create_dynamic
    - buffer_set_used_size
    - mail_transaction_log_file_read_more
    - nfs_flush_attr_cache_fd_locked
    - mail_transaction_log_file_read
    - mail_transaction_log_file_need_nfs_flush
    - i_assert
    - mail_transaction_log_file_insert_read
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_read(struct mail_transaction_log_file
      *file,\n\t\t\t       uoff_t start_offset, bool nfs_flush,\n\t\t\t       const
      char **reason_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1441,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1442,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1449,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1450,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1453,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1458,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1460,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1464,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1467,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1472,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - file
    - start_offset
    - end_offset
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    - uoff_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1432
    functionDepth: 1
    functionLinenumber: 1432
    functionLinenumberEnd: 1480
    functionName: log_file_map_check_offsets
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - log_file_set_syscall_error
    - t_strdup_printf
    - fstat
    - stat
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    linkageType: ''
    returnType: bool
    signature: "bool log_file_map_check_offsets(struct mail_transaction_log_file *file,\n\t\t\t
      \  uoff_t start_offset, uoff_t end_offset,\n\t\t\t   const char **reason_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1487,1
    - Dst: mmap
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1490,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1496,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1496,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1499,1
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1505,1
    - Dst: posix_madvise
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1506,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1509,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1512,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - file
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1482
    functionDepth: 1
    functionLinenumber: 1482
    functionLinenumberEnd: 1517
    functionName: mail_transaction_log_file_mmap
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mmap
    - log_file_set_syscall_error
    - posix_madvise
    - t_strdup_printf
    - mmap_get_page_size
    - buffer_create_from_const_data
    - buffer_free
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_mmap(struct mail_transaction_log_file
      *file,\n\t\t\t       const char **reason_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1525,1
    - Dst: munmap
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1526,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1527,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1519
    functionDepth: 1
    functionLinenumber: 1519
    functionLinenumberEnd: 1531
    functionName: mail_transaction_log_file_munmap
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - munmap
    - i_assert
    - buffer_free
    - log_file_set_syscall_error
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_file_munmap(struct mail_transaction_log_file
      *file)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1543,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1544,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1546,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1547,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1548,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1554,1
    - Dst: mail_transaction_log_file_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1557,1
    - Dst: mail_transaction_log_file_sync
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1564,1
    - Dst: mail_transaction_log_file_munmap
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1571,1
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1573,1
    - Dst: mail_transaction_log_file_read
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1575,1
    - Dst: mail_transaction_log_file_mmap
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1580,1
    - Dst: mail_transaction_log_file_sync
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1582,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 3
    argNames:
    - file
    - start_offset
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1533
    functionDepth: 5
    functionLinenumber: 1533
    functionLinenumberEnd: 1586
    functionName: mail_transaction_log_file_map_mmap
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_file_set_corrupted
    - mail_transaction_log_file_mmap
    - mail_transaction_log_file_sync
    - log_file_set_syscall_error
    - t_strdup_printf
    - mail_transaction_log_file_munmap
    - fstat
    - mmap_get_page_size
    - mail_transaction_log_file_read
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_map_mmap(struct mail_transaction_log_file
      *file,\n\t\t\t\t   uoff_t start_offset, const char **reason_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1602,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1603,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1604,1
    - Dst: log_file_map_check_offsets
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1610,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1613,1
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1630,1
    - Dst: log_file_map_check_offsets
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1637,1
    - Dst: mail_transaction_log_file_skip_to_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1642,1
    - Dst: mail_transaction_log_file_map_mmap
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1651,1
    - Dst: mail_transaction_log_file_munmap
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1653,1
    - Dst: mail_transaction_log_file_read
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1654,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1657,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1662,1
    - Dst: log_file_map_check_offsets
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1663,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 44
    argCount: 4
    argNames:
    - file
    - start_offset
    - end_offset
    - reason_r
    argTypes:
    - struct mail_transaction_log_file*
    - uoff_t
    - uoff_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1588
    functionDepth: 6
    functionLinenumber: 1588
    functionLinenumberEnd: 1665
    functionName: mail_transaction_log_file_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 5
    functionsReached:
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    - mail_transaction_log_file_skip_to_head
    - mail_transaction_log_file_munmap
    - mail_transaction_log_file_read
    - i_assert
    - log_file_map_check_offsets
    - mail_transaction_log_file_map_mmap
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_map(struct mail_transaction_log_file
      *file,\n\t\t\t\t  uoff_t start_offset, uoff_t end_offset,\n\t\t\t\t  const char
      **reason_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1673,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1678,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1680,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1681,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1682,1
    - Dst: munmap
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1686,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1687,1
    - Dst: mail_transaction_log_file_read
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1691,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1693,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1699,1
    - Dst: log_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1700,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1703,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-transaction-log-file.c:1704,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mail_transaction_log_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1667
    functionDepth: 5
    functionLinenumber: 1667
    functionLinenumberEnd: 1706
    functionName: mail_transaction_log_file_move_to_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-file.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - mail_index_set_error
    - i_free
    - buffer_create_dynamic
    - log_file_set_syscall_error
    - i_strdup
    - munmap
    - mail_transaction_log_file_read
    - buffer_free
    - i_assert
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    - close
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_file_move_to_memory(struct mail_transaction_log_file
      *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:19,1
    - Dst: mail_index_keyword_lookup
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:20,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:23,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - keyword_name
    - idx_r
    argTypes:
    - struct mail_index_sync_map_ctx*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 11
    functionDepth: 2
    functionLinenumber: 11
    functionLinenumberEnd: 32
    functionName: keyword_lookup
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-keywords.c
    functionUses: 2
    functionsReached:
    - array_get
    - array_is_created
    - mail_index_keyword_lookup
    linkageType: ''
    returnType: bool
    signature: "bool keyword_lookup(struct mail_index_sync_map_ctx *ctx,\n\t       const
      char *keyword_name, unsigned int *idx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:48,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:55,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:62,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:64,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:65,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:66,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 7
    argNames:
    - map
    - ext
    - new_count
    - keywords_count_r
    - rec_offset_r
    - name_offset_root_r
    - name_offset_r
    argTypes:
    - struct mail_index_map*
    - struct mail_index_ext*
    - unsigned int
    - unsigned int*
    - size_t*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 73
    functionName: keywords_get_header_buf
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-keywords.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_write
    - strlen
    - t_buffer_create
    - i_assert
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nkeywords_get_header_buf(struct mail_index_map *map,\n\t\t\tconst
      struct mail_index_ext *ext,\n\t\t\tunsigned int new_count, unsigned int *keywords_count_r,\n\t\t\tsize_t
      *rec_offset_r, size_t *name_offset_root_r,\n\t\t\tsize_t *name_offset_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:84,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:86,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:89,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:102,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:103,1
    - Dst: mail_index_sync_ext_intro
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:108,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 5
    argNames:
    - ctx
    - ext_map_idx
    - reset_id
    - hdr_size
    - keywords_count
    argTypes:
    - struct mail_index_sync_map_ctx*
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 75
    functionDepth: 7
    functionLinenumber: 75
    functionLinenumberEnd: 111
    functionName: keywords_ext_register
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-keywords.c
    functionUses: 0
    functionsReached:
    - i_panic
    - buffer_append
    - strlen
    - mail_index_sync_ext_intro
    - buffer_append_space_unsafe
    - buffer_create_from_data
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void keywords_ext_register(struct mail_index_sync_map_ctx *ctx,\n\t\t\t\t
      \ uint32_t ext_map_idx, uint32_t reset_id,\n\t\t\t\t  uint32_t hdr_size, uint32_t
      keywords_count)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_get_atomic_map
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:129,1
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:131,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:136,1
    - Dst: keywords_get_header_buf
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:137,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:146,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:147,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:158,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:161,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:162,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:163,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:170,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:175,1
    - Dst: keywords_ext_register
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:176,1
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:183,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:185,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:188,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:191,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:192,1
    - Dst: mail_index_map_parse_keywords
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:194,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:195,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:198,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 3
    argNames:
    - ctx
    - keyword_name
    - keyword_idx_r
    argTypes:
    - struct mail_index_sync_map_ctx*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 113
    functionDepth: 8
    functionLinenumber: 113
    functionLinenumberEnd: 199
    functionName: keywords_header_add
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-keywords.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_panic
    - buffer_append_zero
    - keywords_ext_register
    - array_idx
    - buffer_write
    - i_unreached
    - strlen
    - buffer_copy
    - t_buffer_create
    - mail_index_map_lookup_ext
    - buffer_append_space_unsafe
    - mail_index_sync_get_atomic_map
    - mail_index_map_parse_keywords
    - keywords_get_header_buf
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void keywords_header_add(struct mail_index_sync_map_ctx *ctx,\n\t\t
      \   const char *keyword_name, unsigned int *keyword_idx_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:213,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:215,1
    - Dst: mail_index_modseq_update_to_highest
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:223,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:226,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:231,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:232,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:239,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:240,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:245,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 6
    argNames:
    - ctx
    - ext
    - keyword_idx
    - type
    - uid1
    - uid2
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_index_ext*
    - unsigned int
    - enum modify_type
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 201
    functionDepth: 3
    functionLinenumber: 201
    functionLinenumberEnd: 248
    functionName: keywords_update_records
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-keywords.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - i_unreached
    - mail_index_lookup_seq_range
    - mail_index_modseq_update_to_highest
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int keywords_update_records(struct mail_index_sync_map_ctx *ctx,\n\t\t\tconst
      struct mail_index_ext *ext,\n\t\t\tunsigned int keyword_idx, enum modify_type
      type,\n\t\t\tuint32_t uid1, uint32_t uid2)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:262,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:267,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:269,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:270,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:272,1
    - Dst: keyword_lookup
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:273,1
    - Dst: keywords_header_add
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:274,1
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:279,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:281,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:283,1
    - Dst: keywords_ext_register
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:291,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:293,1
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:294,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:297,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:298,1
    - Dst: keywords_update_records
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:302,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - ctx
    - hdr
    - rec
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_header*
    - struct mail_transaction_keyword_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 250
    functionDepth: 9
    functionLinenumber: 250
    functionLinenumberEnd: 312
    functionName: mail_index_sync_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-keywords.c
    functionUses: 1
    functionsReached:
    - keywords_update_records
    - keyword_lookup
    - keywords_ext_register
    - keywords_header_add
    - i_unreached
    - array_idx
    - t_strndup
    - array_count
    - mail_index_map_lookup_ext
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_keywords(struct mail_index_sync_map_ctx *ctx,\n\t\t\t
      \    const struct mail_transaction_header *hdr,\n\t\t\t     const struct mail_transaction_keyword_update
      *rec)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:325,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:331,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:332,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:334,1
    - Dst: mail_index_modseq_update_to_highest
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:338,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:340,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:341,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync-keywords.c:341,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - hdr
    - r
    argTypes:
    - struct mail_index_sync_map_ctx*
    - struct mail_transaction_header*
    - struct mail_transaction_keyword_reset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 346
    functionName: mail_index_sync_keywords_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync-keywords.c
    functionUses: 1
    functionsReached:
    - PTR_OFFSET
    - array_idx
    - mail_index_lookup_seq_range
    - mail_index_modseq_update_to_highest
    - mail_index_map_lookup_ext
    - MAIL_INDEX_REC_AT_SEQ
    - memset
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_keywords_reset(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t       const struct mail_transaction_header *hdr,\n\t\t\t       const
      struct mail_transaction_keyword_reset *r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:74,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:84,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:89,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:100,1
    - Dst: mail_transaction_log_view_clear
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:105,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 5
    argNames:
    - view
    - sync_expunges
    - reset_r
    - partial_sync_r
    - error_r
    argTypes:
    - struct mail_index_view*
    - bool
    - bool*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 112
    functionName: view_sync_set_log_view_range
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_clear
    - t_strdup_printf
    - mail_transaction_log_view_set
    - mail_transaction_log_view_get_prev_pos
    linkageType: ''
    returnType: int
    signature: "int view_sync_set_log_view_range(struct mail_index_view *view, bool
      sync_expunges,\n\t\t\t     bool *reset_r, bool *partial_sync_r,\n\t\t\t     const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:123,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:126,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:130,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:137,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_view_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 140
    functionName: view_sync_expunges2seqs
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get_modifiable
    - mail_index_lookup_seq_range
    - array_count
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int view_sync_expunges2seqs(struct mail_index_view_sync_ctx
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_mark
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:182,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:183,1
    - Dst: view_sync_add_expunge_guids
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:190,1
    - Dst: view_sync_add_expunge_range
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:193,1
    - Dst: mail_transaction_log_view_rewind
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:197,1
    - Dst: view_sync_expunges2seqs
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:199,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - expunge_count_r
    argTypes:
    - struct mail_index_view_sync_ctx*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 201
    functionName: view_sync_get_expunges
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - view_sync_add_expunge_guids
    - view_sync_add_expunge_range
    - view_sync_expunges2seqs
    - mail_transaction_log_view_rewind
    - mail_transaction_log_view_mark
    linkageType: ''
    returnType: int
    signature: "int view_sync_get_expunges(struct mail_index_view_sync_ctx *ctx,\n\t\t
      \      unsigned int *expunge_count_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:209,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - view
    - range
    - size
    argTypes:
    - struct mail_index_view*
    - struct seq_range*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 216
    functionName: have_existing_expunges
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - CONST_PTR_OFFSET
    - mail_index_lookup_seq_range
    linkageType: ''
    returnType: bool
    signature: "bool have_existing_expunges(struct mail_index_view *view,\n\t\t\t\t
      \  const struct seq_range *range, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:226,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - view
    - expunges
    - size
    argTypes:
    - struct mail_index_view*
    - struct mail_transaction_expunge_guid*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 232
    functionName: have_existing_guid_expunge
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - CONST_PTR_OFFSET
    - mail_index_lookup_seq
    linkageType: ''
    returnType: bool
    signature: "bool have_existing_guid_expunge(struct mail_index_view *view,\n\t\t\t
      \  const struct mail_transaction_expunge_guid *expunges,\n\t\t\t   size_t size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_is_last
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:241,1
    - Dst: mail_transaction_log_view_mark
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:244,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:246,1
    - Dst: have_existing_guid_expunge
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:254,1
    - Dst: have_existing_expunges
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:260,1
    - Dst: mail_transaction_log_view_rewind
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:267,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 272
    functionName: view_sync_have_expunges
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - mail_transaction_log_view_is_last
    - mail_transaction_log_view_mark
    - mail_transaction_log_view_rewind
    - have_existing_guid_expunge
    - have_existing_expunges
    linkageType: ''
    returnType: bool
    signature: bool view_sync_have_expunges(struct mail_index_view *view)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 283
    functionName: uint_cmp
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int uint_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:290,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:291,1
    - Dst: qsort
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:295,1
    - Dst: qsort
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:296,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_view_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 298
    functionName: view_sync_lost_keywords_equal
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - qsort
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool view_sync_lost_keywords_equal(struct mail_index_view_sync_ctx
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:309,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:312,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:314,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:316,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:320,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:321,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:322,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:323,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:326,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:329,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:330,1
    - Dst: mail_index_sync_record
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:333,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct mail_index_view_sync_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 300
    functionDepth: 8
    functionLinenumber: 300
    functionLinenumberEnd: 338
    functionName: view_sync_update_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_append
    - mail_index_sync_record
    - buffer_append_zero
    - array_get
    - strlen
    - buffer_set_used_size
    - array_front
    linkageType: ''
    returnType: int
    signature: "int view_sync_update_keywords(struct mail_index_view_sync_ctx *ctx,\n\t\t\t\t
      \    uint32_t uid)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:352,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:353,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:355,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:369,1
    - Dst: mail_index_sync_record
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:373,1
    - Dst: mail_index_map_lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:378,1
    - Dst: mail_index_map_lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:379,1
    - Dst: view_sync_lost_keywords_equal
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:380,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:388,1
    - Dst: mail_index_sync_record
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:390,1
    - Dst: view_sync_update_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:394,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:405,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:406,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:419,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 3
    argNames:
    - ctx
    - old_seq
    - new_seq
    argTypes:
    - struct mail_index_view_sync_ctx*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 340
    functionDepth: 9
    functionLinenumber: 340
    functionLinenumberEnd: 421
    functionName: view_sync_apply_lost_changes
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - view_sync_update_keywords
    - seq_range_array_add
    - mail_index_sync_record
    - array_idx
    - view_sync_lost_keywords_equal
    - mail_index_map_lookup_keywords
    - MAIL_INDEX_REC_AT_SEQ
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int view_sync_apply_lost_changes(struct mail_index_view_sync_ctx *ctx,\n\t\t\t\t\tuint32_t
      old_seq, uint32_t new_seq)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_get_atomic_map
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:439,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:441,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:445,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:446,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:447,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:448,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:453,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:454,1
    - Dst: view_sync_apply_lost_changes
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:457,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:462,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:466,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:475,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:476,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:482,1
    - Dst: mail_index_sync_record
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:483,1
    - Dst: mail_index_map_lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:486,1
    - Dst: view_sync_update_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:488,1
    - Dst: view_sync_expunges2seqs
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:491,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:503,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 2
    argNames:
    - ctx
    - expunge_count_r
    argTypes:
    - struct mail_index_view_sync_ctx*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 423
    functionDepth: 10
    functionLinenumber: 423
    functionLinenumberEnd: 512
    functionName: view_sync_get_log_lost_changes
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - view_sync_apply_lost_changes
    - seq_range_array_add
    - mail_index_sync_record
    - view_sync_update_keywords
    - mail_index_map_get_ext_idx
    - t_buffer_create
    - mail_index_map_lookup_keywords
    - t_array_init
    - mail_index_sync_get_atomic_map
    - view_sync_expunges2seqs
    - array_clear
    - MAIL_INDEX_REC_AT_SEQ
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: "int view_sync_get_log_lost_changes(struct mail_index_view_sync_ctx
      *ctx,\n\t\t\t       unsigned int *expunge_count_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:525,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:533,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_view_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 542
    functionName: mail_index_view_sync_init_fix
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_unmap
    - mail_index_set_error
    - mail_transaction_log_view_set
    linkageType: ''
    returnType: int
    signature: int mail_index_view_sync_init_fix(struct mail_index_view_sync_ctx *ctx)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:555,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:556,1
    - Dst: mail_index_view_unref_maps
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:562,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:564,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:570,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:573,1
    - Dst: mail_index_view_sync_init_fix
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:574,1
    - Dst: mail_index_view_is_inconsistent
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:578,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:579,1
    - Dst: view_sync_set_log_view_range
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:585,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:588,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:600,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:605,1
    - Dst: mail_index_sync_map_init
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:606,1
    - Dst: view_sync_get_log_lost_changes
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:608,1
    - Dst: mail_index_modseq_sync_end
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:609,1
    - Dst: mail_index_sync_map_deinit
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:610,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:612,1
    - Dst: view_sync_get_expunges
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:622,1
    - Dst: view_sync_have_expunges
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:631,1
    - Dst: mail_index_view_sync_init_fix
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:649,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:654,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:665,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:675,1
    - Dst: mail_index_map_clone
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:687,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:688,1
    - Dst: mail_index_sync_map_init
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:697,1
    - Dst: mail_index_map_check
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:701,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 97
    argCount: 2
    argNames:
    - view
    - flags
    argTypes:
    - struct mail_index_view*
    - enum mail_index_view_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 544
    functionDepth: 11
    functionLinenumber: 544
    functionLinenumberEnd: 704
    functionName: mail_index_view_sync_begin
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - mail_index_map_clone
    - mail_index_view_sync_init_fix
    - mail_index_view_unref_maps
    - view_sync_set_log_view_range
    - view_sync_get_expunges
    - mail_index_unmap
    - e_warning
    - mail_index_sync_map_init
    - view_sync_have_expunges
    - i_new
    - mail_index_view_is_inconsistent
    - mail_index_modseq_sync_end
    - mail_index_map_check
    - i_assert
    - mail_index_set_error
    - mail_index_sync_map_deinit
    - view_sync_get_log_lost_changes
    linkageType: ''
    returnType: struct mail_index_view_sync_ctx
    signature: "struct mail_index_view_sync_ctx *\nmail_index_view_sync_begin(struct
      mail_index_view *view,\n\t\t\t   enum mail_index_view_sync_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:711,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:714,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - view
    - seq
    - offset
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 722
    functionName: view_sync_is_hidden
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: bool view_sync_is_hidden(struct mail_index_view *view, uint32_t seq,
      uoff_t offset)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:732,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:739,1
    - Dst: LOG_IS_BEFORE
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:739,1
    - Dst: LOG_IS_BEFORE
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:749,1
    - Dst: LOG_IS_BEFORE
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:756,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mail_index_view_sync_ctx*
    - struct mail_transaction_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 724
    functionDepth: 1
    functionLinenumber: 724
    functionLinenumberEnd: 765
    functionName: mail_index_view_sync_want
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    - LOG_IS_BEFORE
    - mail_transaction_log_view_get_prev_pos
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_view_sync_want(struct mail_index_view_sync_ctx *ctx,\n\t\t\t
      \ const struct mail_transaction_header *hdr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:780,1
    - Dst: mail_index_view_sync_want
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:793,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:795,1
    - Dst: LOG_IS_BEFORE
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:802,1
    - Dst: mail_index_sync_record
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:810,1
    - Dst: view_sync_is_hidden
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:817,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_view_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 767
    functionDepth: 8
    functionLinenumber: 767
    functionLinenumberEnd: 819
    functionName: mail_index_view_sync_get_next_transaction
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - mail_index_sync_record
    - view_sync_is_hidden
    - mail_transaction_log_view_get_prev_pos
    - LOG_IS_BEFORE
    - mail_index_view_sync_want
    linkageType: ''
    returnType: int
    signature: int mail_index_view_sync_get_next_transaction(struct mail_index_view_sync_ctx
      *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:831,1
    - Dst: MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:836,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:843,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:868,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:878,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 2
    argNames:
    - ctx
    - rec
    argTypes:
    - struct mail_index_view_sync_ctx*
    - struct mail_index_view_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 894
    functionName: mail_index_view_sync_get_rec
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - CONST_PTR_OFFSET
    - MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_view_sync_get_rec(struct mail_index_view_sync_ctx
      *ctx,\n\t\t\t     struct mail_index_view_sync_rec *rec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:903,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - sync_rec
    argTypes:
    - struct mail_index_view_sync_ctx*
    - struct mail_index_view_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 896
    functionDepth: 1
    functionLinenumber: 896
    functionLinenumberEnd: 915
    functionName: mail_index_view_sync_next_lost
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_view_sync_next_lost(struct mail_index_view_sync_ctx
      *ctx,\n\t\t\t       struct mail_index_view_sync_rec *sync_rec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_sync_next_lost
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:923,1
    - Dst: mail_index_view_sync_get_next_transaction
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:927,1
    - Dst: mail_index_view_sync_get_rec
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:936,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - sync_rec
    argTypes:
    - struct mail_index_view_sync_ctx*
    - struct mail_index_view_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 917
    functionDepth: 9
    functionLinenumber: 917
    functionLinenumberEnd: 939
    functionName: mail_index_view_sync_next
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 1
    functionsReached:
    - mail_index_view_sync_get_rec
    - mail_index_view_sync_get_next_transaction
    - mail_index_view_sync_next_lost
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_view_sync_next(struct mail_index_view_sync_ctx *ctx,\n\t\t\t
      \      struct mail_index_view_sync_rec *sync_rec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - expunges_r
    argTypes:
    - struct mail_index_view_sync_ctx*
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 945
    functionName: mail_index_view_sync_get_expunges
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_view_sync_get_expunges(struct mail_index_view_sync_ctx
      *ctx,\n\t\t\t\t       const ARRAY_TYPE(seq_range) **expunges_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:953,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:957,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:966,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 967
    functionName: mail_index_view_sync_clean_log_syncs
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - array_delete
    linkageType: ''
    returnType: void
    signature: void mail_index_view_sync_clean_log_syncs(struct mail_index_view *view)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:976,1
    - Dst: mail_index_modseq_sync_end
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:988,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:991,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1001,1
    - Dst: mail_index_sync_map_deinit
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1009,1
    - Dst: mail_index_view_sync_clean_log_syncs
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1010,1
    - Dst: mail_index_map_check
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1013,1
    - Dst: mail_transaction_log_view_clear
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1017,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1020,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1021,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1022,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1023,1
    - Dst: mail_index_map_modseq_get_highest
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1025,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1027,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - _ctx
    - delayed_expunges_r
    argTypes:
    - struct mail_index_view_sync_ctx**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 969
    functionDepth: 3
    functionLinenumber: 969
    functionLinenumberEnd: 1029
    functionName: mail_index_view_sync_commit
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 1
    functionsReached:
    - i_free
    - mail_index_unmap
    - mail_transaction_log_view_clear
    - mail_index_modseq_sync_end
    - mail_index_view_sync_clean_log_syncs
    - mail_index_map_check
    - array_is_created
    - i_assert
    - array_free
    - mail_index_sync_map_deinit
    - mail_index_map_modseq_get_highest
    linkageType: ''
    returnType: int
    signature: "int mail_index_view_sync_commit(struct mail_index_view_sync_ctx **_ctx,\n\t\t\t\tbool
      *delayed_expunges_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1038,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1039,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-view-sync.c:1041,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - view
    - log_file_seq
    - log_file_offset
    - length
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uoff_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1045
    functionName: mail_index_view_add_hidden_transaction
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void mail_index_view_add_hidden_transaction(struct mail_index_view
      *view,\n\t\t\t\t\t    uint32_t log_file_seq,\n\t\t\t\t\t    uoff_t log_file_offset,\n\t\t\t\t\t
      \   unsigned int length)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:37,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:38,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:40,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:41,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:43,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:44,1
    - Dst: struct mail_index_view_transaction*::super::close
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:47,1
    - Dst: mail_index_transaction_unref
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 49
    functionName: tview_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - mail_index_unmap
    - struct mail_index_view_transaction*::super::close
    - array_is_created
    - array_free
    - mail_index_transaction_unref
    - buffer_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void tview_close(struct mail_index_view *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: tview_get_message_count
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t tview_get_message_count(struct mail_index_view *view)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view_transaction*::super::get_header
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:70,1
    - Dst: mail_index_transaction_get_next_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 79
    functionName: tview_get_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - struct mail_index_view_transaction*::super::get_header
    - mail_index_transaction_get_next_uid
    linkageType: ''
    returnType: struct mail_index_header
    signature: 'struct mail_index_header *

      tview_get_header(struct mail_index_view *view)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:93,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:96,1
    - Dst: mail_index_transaction_get_flag_update_pos
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:97,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:110,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:111,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:113,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:115,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:115,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:120,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:122,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - tview
    - map
    - rec
    - seq
    argTypes:
    - struct mail_index_view_transaction*
    - struct mail_index_map*
    - struct mail_index_record*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 127
    functionName: tview_apply_flag_updates
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - MALLOC_MULTIPLY
    - i_assert
    - i_malloc
    - PTR_OFFSET
    - memcpy
    - array_push_back
    - array_get
    - I_MAX
    - array_is_created
    - mail_index_transaction_get_flag_update_pos
    linkageType: ''
    returnType: struct mail_index_record
    signature: "struct mail_index_record *\ntview_apply_flag_updates(struct mail_index_view_transaction
      *tview,\n\t\t\t struct mail_index_map *map,\n\t\t\t const struct mail_index_record
      *rec, uint32_t seq)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:143,1
    - Dst: struct mail_index_view_transaction*::super::lookup_full
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:146,1
    - Dst: tview_apply_flag_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:147,1
    - Dst: mail_index_transaction_is_expunged
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:150,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - view
    - seq
    - map_r
    - expunged_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - struct mail_index_map**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 153
    functionName: tview_lookup_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_is_expunged
    - struct mail_index_view_transaction*::super::lookup_full
    - tview_apply_flag_updates
    - mail_index_transaction_lookup
    linkageType: ''
    returnType: struct mail_index_record
    signature: "struct mail_index_record *\ntview_lookup_full(struct mail_index_view
      *view, uint32_t seq,\n\t\t  struct mail_index_map **map_r, bool *expunged_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:162,1
    - Dst: struct mail_index_view_transaction*::super::lookup_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - view
    - seq
    - uid_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 165
    functionName: tview_lookup_uid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - struct mail_index_view_transaction*::super::lookup_uid
    - mail_index_transaction_lookup
    linkageType: ''
    returnType: void
    signature: void tview_lookup_uid(struct mail_index_view *view, uint32_t seq, uint32_t
      *uid_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view_transaction*::super::lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:177,1
    - Dst: mail_index_transaction_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:189,1
    - Dst: mail_index_transaction_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:203,1
    - Dst: mail_index_transaction_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:222,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:228,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 5
    argNames:
    - view
    - first_uid
    - last_uid
    - first_seq_r
    - last_seq_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 229
    functionName: tview_lookup_seq_range
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - struct mail_index_view_transaction*::super::lookup_seq_range
    - i_assert
    - mail_index_transaction_lookup
    linkageType: ''
    returnType: void
    signature: "void tview_lookup_seq_range(struct mail_index_view *view,\n\t\t\t\t
      \  uint32_t first_uid, uint32_t last_uid,\n\t\t\t\t   uint32_t *first_seq_r,
      uint32_t *last_seq_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view_transaction*::super::lookup_first
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:242,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:249,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:252,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - view
    - flags
    - flags_mask
    - seq_r
    argTypes:
    - struct mail_index_view*
    - enum mail_flags
    - uint8_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 260
    functionName: tview_lookup_first
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - array_get
    - struct mail_index_view_transaction*::super::lookup_first
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void tview_lookup_first(struct mail_index_view *view,\n\t\t\t       enum
      mail_flags flags, uint8_t flags_mask,\n\t\t\t       uint32_t *seq_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view_transaction*::super::lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:300,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:307,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:308,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:314,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:315,1
    - Dst: keyword_index_add
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:316,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:317,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:318,1
    - Dst: keyword_index_remove
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:319,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 3
    argNames:
    - view
    - seq
    - keyword_idx
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 321
    functionName: tview_lookup_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - seq_range_exists
    - keyword_index_remove
    - array_get
    - keyword_index_add
    - struct mail_index_view_transaction*::super::lookup_keywords
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void tview_lookup_keywords(struct mail_index_view *view, uint32_t
      seq,\n\t\t\t\t  ARRAY_TYPE(keyword_indexes) *keyword_idx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:336,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:338,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:340,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:344,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:350,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:351,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:352,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:367,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:372,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:376,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:377,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - tview
    - seq
    - data
    - ext_id
    argTypes:
    - struct mail_index_view_transaction*
    - uint32_t
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 379
    functionName: tview_return_updated_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - array_idx
    - mail_index_map_get_ext_idx
    - buffer_create_dynamic
    - buffer_set_used_size
    - array_count
    - array_is_created
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void *\ntview_return_updated_ext(struct mail_index_view_transaction
      *tview,\n\t\t\t uint32_t seq, const void *data, uint32_t ext_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:387,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:390,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - tview
    - ext_id
    argTypes:
    - struct mail_index_view_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 392
    functionName: tview_is_ext_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool tview_is_ext_reset(struct mail_index_view_transaction *tview,
      uint32_t ext_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:404,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:405,1
    - Dst: mail_index_seq_array_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:406,1
    - Dst: mail_index_map_clone
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:411,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:413,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:418,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:421,1
    - Dst: mail_index_map_register_ext
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:426,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:430,1
    - Dst: tview_return_updated_ext
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:432,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - tview
    - seq
    - ext_id
    - map_r
    - data_r
    argTypes:
    - struct mail_index_view_transaction*
    - uint32_t
    - uint32_t
    - struct mail_index_map**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 434
    functionName: tview_lookup_ext_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - mail_index_map_clone
    - i_zero
    - array_idx
    - mail_index_map_get_ext_idx
    - mail_index_map_register_ext
    - tview_return_updated_ext
    - mail_index_seq_array_lookup
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool tview_lookup_ext_update(struct mail_index_view_transaction *tview,
      uint32_t seq,\n\t\t\tuint32_t ext_id, struct mail_index_map **map_r,\n\t\t\tconst
      void **data_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:444,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:444,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:449,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:450,1
    - Dst: tview_lookup_ext_update
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:453,1
    - Dst: tview_is_ext_reset
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:460,1
    - Dst: struct mail_index_view_transaction*::super::lookup_ext_full
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:461,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 6
    argNames:
    - view
    - seq
    - ext_id
    - map_r
    - data_r
    - expunged_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - struct mail_index_map**
    - void**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 436
    functionDepth: 3
    functionLinenumber: 436
    functionLinenumberEnd: 467
    functionName: tview_lookup_ext_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - struct mail_index_view_transaction*::super::lookup_ext_full
    - tview_is_ext_reset
    - tview_lookup_ext_update
    - array_count
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void tview_lookup_ext_full(struct mail_index_view *view, uint32_t
      seq,\n\t\t      uint32_t ext_id, struct mail_index_map **map_r,\n\t\t      const
      void **data_r, bool *expunged_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view_transaction*::super::get_header_ext
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - view
    - map
    - ext_id
    - data_r
    - data_size_r
    argTypes:
    - struct mail_index_view*
    - struct mail_index_map*
    - uint32_t
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 478
    functionName: tview_get_header_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - struct mail_index_view_transaction*::super::get_header_ext
    linkageType: ''
    returnType: void
    signature: "void tview_get_header_ext(struct mail_index_view *view,\n\t\t\t\t
      struct mail_index_map *map, uint32_t ext_id,\n\t\t\t\t const void **data_r,
      size_t *data_size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:488,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:489,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:491,1
    - Dst: struct mail_index_view_transaction*::super::ext_get_reset_id
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - view
    - map
    - ext_id
    - reset_id_r
    argTypes:
    - struct mail_index_view*
    - struct mail_index_map*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 497
    functionName: tview_ext_get_reset_id
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    - struct mail_index_view_transaction*::super::ext_get_reset_id
    - array_idx
    linkageType: ''
    returnType: bool
    signature: "bool tview_ext_get_reset_id(struct mail_index_view *view,\n\t\t\t\t
      \  struct mail_index_map *map,\n\t\t\t\t   uint32_t ext_id, uint32_t *reset_id_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_ref
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:522,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:526,1
    - Dst: mail_index_view_clone
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:527,1
    - Dst: mail_index_transaction_ref
      Src: /src/dovecot/src/lib-index/mail-index-transaction-view.c:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 534
    functionName: mail_index_transaction_open_updated_view
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_ref
    - mail_index_view_ref
    - mail_index_view_clone
    - i_new
    linkageType: ''
    returnType: struct mail_index_view
    signature: 'struct mail_index_view *

      mail_index_transaction_open_updated_view(struct mail_index_transaction *t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:29,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:30,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:31,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:32,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:34,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:39,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:39,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:42,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:44,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:46,1
    - Dst: mail_transaction_log_file_lock
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:47,1
    - Dst: mail_transaction_log_rotate
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:47,1
    - Dst: mail_transaction_log_file_unlock
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:48,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:50,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:52,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:52,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:55,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:60,1
    - Dst: mail_index_modseq_get_next_log_offset
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:60,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:61,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:64,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:65,1
    - Dst: test_mail_index_deinit
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:66,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:67,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 9
    functionDepth: 7
    functionLinenumber: 9
    functionLinenumberEnd: 68
    functionName: test_mail_index_modseq_get_next_log_offset
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - mail_index_transaction_begin
    - mail_index_modseq_enable
    - mail_index_update_header
    - mail_index_transaction_commit
    - test_assert_idx
    - test_mail_index_init
    - mail_index_view_open
    - mail_transaction_log_rotate
    - test_end
    - test_mail_index_deinit
    - mail_index_modseq_get_next_log_offset
    - test_assert
    - mail_transaction_log_file_unlock
    - mail_transaction_log_file_lock
    - mail_index_view_close
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_index_modseq_get_next_log_offset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:76,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-index-modseq.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 78
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-modseq.c
    functionUses: 0
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:66,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - dec
    argTypes:
    - enum mail_cache_decision_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: mail_cache_decision_to_string
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char *mail_cache_decision_to_string(enum mail_cache_decision_type dec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cache
    - event
    - field
    argTypes:
    - struct mail_cache*
    - struct event*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: mail_cache_decision_changed_event
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 0
    functionsReached:
    - event_create_passthrough
    linkageType: ''
    returnType: struct event_passthrough
    signature: "struct event_passthrough *\nmail_cache_decision_changed_event(struct
      mail_cache *cache, struct event *event,\n\t\t\t\t  unsigned int field)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cache
    - field
    argTypes:
    - struct mail_cache*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 93
    functionName: mail_cache_update_last_used
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_cache_update_last_used(struct mail_cache *cache, unsigned
      int field)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:103,1
    - Dst: mail_cache_update_last_used
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:123,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:133,1
    - Dst: mail_cache_update_last_used
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:135,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:138,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:139,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:147,1
    - Dst: mail_cache_update_last_used
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:148,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:157,1
    - Dst: mail_cache_decision_changed_event
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:165,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:171,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:171,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - view
    - seq
    - field
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 174
    functionName: mail_cache_decision_state_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 2
    functionsReached:
    - mail_cache_update_last_used
    - mail_index_lookup_uid
    - e_debug
    - mail_index_get_header
    - mail_cache_decision_changed_event
    - struct event_passthrough*::event
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_cache_decision_state_update(struct mail_cache_view *view,\n\t\t\t\t
      \     uint32_t seq, unsigned int field)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 187
    functionName: mail_cache_count_alive_headers
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mail_cache_count_alive_headers(struct mail_cache *cache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_count_alive_headers
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 200
    functionName: mail_cache_headers_check_capped
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 0
    functionsReached:
    - mail_cache_count_alive_headers
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_headers_check_capped(struct mail_cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cache
    - field
    - reason
    argTypes:
    - struct mail_cache*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 210
    functionName: mail_cache_decision_rejected_event
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 0
    functionsReached:
    - event_create_passthrough
    linkageType: ''
    returnType: struct event_passthrough
    signature: "struct event_passthrough *\nmail_cache_decision_rejected_event(struct
      mail_cache *cache, unsigned int field,\n\t\t\t\t   const char *reason)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:219,1
    - Dst: mail_cache_headers_check_capped
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:236,1
    - Dst: mail_cache_decision_rejected_event
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:241,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:243,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:243,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:255,1
    - Dst: mail_cache_decision_to_string
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:259,1
    - Dst: mail_cache_decision_changed_event
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:261,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:266,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:266,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - view
    - seq
    - field
    - rejected_r
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    - unsigned int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 212
    functionDepth: 3
    functionLinenumber: 212
    functionLinenumberEnd: 268
    functionName: mail_cache_decision_add
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_uid
    - e_debug
    - mail_cache_decision_to_string
    - mail_cache_decision_changed_event
    - mail_cache_headers_check_capped
    - struct event_passthrough*::event
    - mail_cache_decision_rejected_event
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_cache_decision_add(struct mail_cache_view *view, uint32_t
      seq,\n\t\t\t     unsigned int field, bool *rejected_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:272,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:274,1
    - Dst: mail_cache_register_get_list
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:280,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:281,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:283,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:291,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/mail-cache-decisions.c:292,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - struct mail_cache*
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 270
    functionDepth: 6
    functionLinenumber: 270
    functionLinenumberEnd: 293
    functionName: mail_cache_decisions_copy
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-decisions.c
    functionUses: 0
    functionsReached:
    - mail_cache_open_and_verify
    - mail_cache_purge
    - pool_unref
    - mail_cache_register_get_list
    - i_assert
    - MAIL_CACHE_IS_UNUSABLE
    - mail_cache_register_fields
    linkageType: ''
    returnType: int
    signature: int mail_cache_decisions_copy(struct mail_cache *src, struct mail_cache
      *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 20
    functionName: mail_index_get_header
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: struct mail_index_header
    signature: 'struct mail_index_header *

      mail_index_get_header(struct mail_index_view *view ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 27
    functionName: mail_index_lookup
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct mail_index_record
    signature: "struct mail_index_record *\nmail_index_lookup(struct mail_index_view
      *view ATTR_UNUSED,\n\t\t  uint32_t seq ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - keyword_idx ATTR_UNUSED
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: mail_index_lookup_keywords
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_clear
    linkageType: ''
    returnType: void
    signature: "void mail_index_lookup_keywords(struct mail_index_view *view ATTR_UNUSED,\n\t\t\t\tuint32_t
      seq ATTR_UNUSED,\n\t\t\t\tARRAY_TYPE(keyword_indexes) *keyword_idx ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_map*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: mail_index_map_get_ext_idx
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_map_get_ext_idx(struct mail_index_map *map ATTR_UNUSED,\n\t\t\t\tuint32_t
      ext_id ATTR_UNUSED,\n\t\t\t\tuint32_t *idx_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: mail_index_view_get_messages_count
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_index_view_get_messages_count(struct mail_index_view
      *view ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: mail_index_transaction_lookup_latest_keywords
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_transaction_lookup_latest_keywords(struct mail_index_transaction
      *t ATTR_UNUSED,\n\t\t\t\t\t\t   uint32_t seq ATTR_UNUSED,\n\t\t\t\t\t\t   ARRAY_TYPE(keyword_indexes)
      *keywords ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - keyword_indexes ATTR_UNUSED
    argTypes:
    - struct mail_index*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 60
    functionName: mail_index_keywords_create_from_indexes
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mail_keywords
    signature: "struct mail_keywords *\nmail_index_keywords_create_from_indexes(struct
      mail_index *index ATTR_UNUSED,\n\t\t\t\t\tconst ARRAY_TYPE(keyword_indexes)\n\t\t\t\t\t\t*keyword_indexes
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_keywords**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: mail_index_keywords_unref
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_keywords_unref(struct mail_keywords **keywords ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: mail_index_transaction_new
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - t_new
    linkageType: ''
    returnType: struct mail_index_transaction
    signature: 'struct mail_index_transaction *

      mail_index_transaction_new(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:77,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:78,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:79,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:80,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:81,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:82,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:83,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 85
    functionName: mail_index_transaction_cleanup
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_cleanup(struct mail_index_transaction *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:91,1
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:97,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:99,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:102,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:105,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:107,1
    - Dst: mail_index_append_finish_uids
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:108,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:111,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:117,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:118,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:119,1
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:122,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:124,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:126,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:129,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:132,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:133,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:134,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:137,1
    - Dst: mail_index_append_finish_uids
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:139,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:145,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:150,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:153,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:154,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 157
    functionName: test_mail_index_append
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - mail_index_transaction_cleanup
    - array_get
    - mail_index_append_finish_uids
    - test_end
    - t_array_init
    - test_assert
    - ARRAY_TYPE
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_append(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:166,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:168,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:170,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:173,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:173,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:178,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:178,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:180,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:182,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:183,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:183,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:185,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:186,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:188,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:189,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:191,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:195,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:196,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 199
    functionName: test_mail_index_flag_update_fastpath
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_cleanup
    - array_get
    - test_end
    - array_count
    - test_assert
    - mail_index_update_flags_range
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_flag_update_fastpath(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:208,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:210,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:212,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:214,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:215,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:217,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:218,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:220,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:223,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:224,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:227,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:230,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:231,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:233,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:235,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:238,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:239,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:240,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:241,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 244
    functionName: test_mail_index_flag_update_simple_merges
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_cleanup
    - array_get
    - test_end
    - test_assert
    - mail_index_update_flags_range
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_flag_update_simple_merges(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:253,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:255,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:257,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:259,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:261,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:263,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:265,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:267,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:270,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:271,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:273,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:276,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:278,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:279,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:283,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:284,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:286,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:287,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:288,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:293,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:294,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:295,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:298,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:299,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:301,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 304
    functionName: test_mail_index_flag_update_complex_merges
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_cleanup
    - array_get
    - test_end
    - test_assert
    - mail_index_update_flags_range
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_flag_update_complex_merges(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:313,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:314,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:321,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:322,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:327,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:329,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:332,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 3
    argNames:
    - t
    - flags
    - msg_count
    argTypes:
    - struct mail_index_transaction*
    - enum mail_flags*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 333
    functionName: flags_array_check
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void flags_array_check(struct mail_index_transaction *t,\n\t\t  const
      enum mail_flags *flags, unsigned int msg_count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:343,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:345,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:347,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:349,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:350,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:352,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:354,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:363,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:371,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:373,1
    - Dst: flags_array_check
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:375,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:377,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:379,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 380
    functionName: test_mail_index_flag_update_random
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - t_new
    - ENUM_NEGATE
    - i_unreached
    - mail_index_transaction_cleanup
    - test_end
    - i_rand_limit
    - flags_array_check
    - i_rand_minmax
    - mail_index_update_flags_range
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_flag_update_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:389,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:391,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:393,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:394,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:395,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:396,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:397,1
    - Dst: mail_index_cancel_flag_updates
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:397,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:398,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:399,1
    - Dst: mail_index_cancel_flag_updates
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:399,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:400,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:401,1
    - Dst: mail_index_cancel_flag_updates
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:401,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:402,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:402,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:404,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:405,1
    - Dst: mail_index_cancel_flag_updates
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:405,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:407,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:409,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:411,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 414
    functionName: test_mail_index_cancel_flag_updates
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_cleanup
    - array_get
    - test_end
    - mail_index_cancel_flag_updates
    - test_assert
    - array_is_created
    - mail_index_update_flags_range
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_cancel_flag_updates(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:425,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:427,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:428,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:429,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:430,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:431,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:432,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:433,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:435,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:437,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:439,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:442,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:443,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:444,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:445,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:446,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:449,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:451,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:454,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:455,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:456,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:457,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:458,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 461
    functionName: test_mail_index_flag_update_appends
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - mail_index_transaction_cleanup
    - array_get
    - test_end
    - test_assert
    - mail_index_update_flags_range
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_flag_update_appends(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:468,1
    - Dst: mail_index_transaction_get_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:471,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - t
    - seq
    - idx
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 478
    functionName: test_flag_update_pos
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_count
    - mail_index_transaction_get_flag_update_pos
    - test_assert
    linkageType: ''
    returnType: bool
    signature: "bool test_flag_update_pos(struct mail_index_transaction *t,\n\t\t\t\t
      uint32_t seq, unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:484,1
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:487,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:488,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:489,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:490,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:491,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:493,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:493,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:494,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:494,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:495,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:495,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:496,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:496,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:497,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:497,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:498,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:498,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:499,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:499,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:500,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:500,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:501,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:501,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:502,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:502,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:503,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:503,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:504,1
    - Dst: test_flag_update_pos
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:504,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:505,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 508
    functionName: test_mail_index_transaction_get_flag_update_pos
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_cleanup
    - test_flag_update_pos
    - test_end
    - test_assert
    - mail_index_update_flags_range
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_transaction_get_flag_update_pos(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:516,1
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:519,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:521,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:522,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:523,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:524,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:526,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:527,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:529,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:530,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:531,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:534,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:537,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:540,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:543,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:545,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 546
    functionName: test_mail_index_modseq_update
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_cleanup
    - array_get
    - mail_index_update_modseq
    - test_end
    - test_assert
    - test_begin
    - mail_index_transaction_new
    linkageType: ''
    returnType: void
    signature: void test_mail_index_modseq_update(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:556,1
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:559,1
    - Dst: mail_index_expunge_guid
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:566,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:567,1
    - Dst: mail_index_expunge_guid
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:568,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:569,1
    - Dst: mail_index_expunge_guid
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:570,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:571,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:572,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:574,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:575,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:576,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:577,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:577,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:578,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:579,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:579,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:580,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:581,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:581,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:582,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:583,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:583,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:584,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:585,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:585,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:587,1
    - Dst: mail_index_transaction_cleanup
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 590
    functionName: test_mail_index_expunge
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_cleanup
    - array_get
    - mail_index_expunge_guid
    - test_end
    - test_assert
    - memcmp
    - mail_index_transaction_new
    - test_begin
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void test_mail_index_expunge(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:630,1
    - Dst: time
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:634,1
    - Dst: localtime
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:635,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:636,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:636,1
    - Dst: mail_index_transaction_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:639,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:640,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:641,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:643,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:644,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:647,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:648,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:649,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:652,1
    - Dst: mail_index_update_day_headers
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:653,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:656,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:657,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:658,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:658,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 592
    functionDepth: 2
    functionLinenumber: 592
    functionLinenumberEnd: 664
    functionName: test_mail_index_update_day_first_uid
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - t_new
    - array_append_space
    - test_assert_idx
    - test_end
    - localtime
    - t_array_init
    - test_assert
    - mail_index_update_day_headers
    - memcmp
    - time
    - N_ELEMENTS
    - mail_index_transaction_new
    - test_begin
    - utc_offset
    linkageType: ''
    returnType: void
    signature: void test_mail_index_update_day_first_uid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: env_put
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:683,1
    - Dst: tzset
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:684,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c:685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 686
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - env_put
    - tzset
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:16,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:18,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:21,1
    - Dst: test_mail_index_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:21,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:24,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:26,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:26,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:26,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:27,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 12
    functionDepth: 8
    functionLinenumber: 12
    functionLinenumberEnd: 30
    functionName: test_mail_cache_read_during_purge2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - mail_cache_view_close
    - i_set_failure_prefix
    - mail_cache_lookup_field
    - test_mail_index_open
    - test_assert
    - mail_cache_view_open
    - test_mail_cache_init
    - test_mail_cache_deinit
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_read_during_purge2(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:38,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:39,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:39,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:45,1
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:45,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:49,1
    - Dst: mail_cache_purge_with_trans
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:49,1
    - Dst: fork
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:51,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:53,1
    - Dst: test_mail_cache_read_during_purge2
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:55,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:57,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:58,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:59,1
    - Dst: test_exit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:60,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:60,1
    - Dst: usleep
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:69,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:69,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:70,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:71,1
    - Dst: wait
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:74,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:78,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:78,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:79,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:80,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 32
    functionDepth: 9
    functionLinenumber: 32
    functionLinenumberEnd: 82
    functionName: test_mail_cache_read_during_purge
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_sync_lock
    - fork
    - mail_transaction_log_sync_unlock
    - test_mail_index_delete
    - test_mail_cache_add_mail
    - test_assert
    - test_exit
    - mail_index_transaction_commit
    - i_fatal
    - test_mail_cache_get_purge_count
    - test_end
    - test_mail_cache_read_during_purge2
    - mail_index_transaction_rollback
    - mail_index_view_close
    - usleep
    - test_mail_index_init
    - test_mail_cache_init
    - mail_index_transaction_begin
    - i_error
    - wait
    - test_has_failed
    - mail_cache_purge_with_trans
    - test_mail_cache_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_read_during_purge(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:88,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:91,1
    - Dst: test_mail_index_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:91,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:92,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 94
    functionName: test_mail_cache_write_during_purge2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_mail_cache_add_field
    - i_set_failure_prefix
    - test_mail_index_open
    - test_mail_cache_init
    - test_mail_cache_deinit
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_write_during_purge2(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:102,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:105,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:106,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:106,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:112,1
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:112,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:116,1
    - Dst: mail_cache_purge_with_trans
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:116,1
    - Dst: fork
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:118,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:120,1
    - Dst: test_mail_cache_write_during_purge2
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:122,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:124,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:125,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:126,1
    - Dst: test_exit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:127,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:127,1
    - Dst: usleep
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:136,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:136,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:137,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:138,1
    - Dst: wait
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:141,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:146,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:146,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:148,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:150,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:150,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:152,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:152,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:152,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:154,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:156,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:156,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:157,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:160,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:160,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:161,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:162,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 96
    functionDepth: 8
    functionLinenumber: 96
    functionLinenumberEnd: 164
    functionName: test_mail_cache_write_during_purge
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_sync_lock
    - fork
    - str_c
    - mail_cache_view_close
    - mail_transaction_log_sync_unlock
    - test_mail_index_delete
    - mail_cache_lookup_field
    - test_mail_cache_add_mail
    - test_mail_cache_write_during_purge2
    - test_assert
    - t_str_new
    - test_exit
    - mail_index_transaction_commit
    - i_fatal
    - mail_index_view_open
    - test_mail_cache_get_purge_count
    - test_end
    - mail_cache_view_open
    - mail_index_transaction_rollback
    - mail_index_view_close
    - usleep
    - test_mail_index_init
    - test_mail_cache_init
    - mail_index_refresh
    - strcmp
    - mail_index_transaction_begin
    - i_error
    - wait
    - test_has_failed
    - mail_cache_purge_with_trans
    - str_truncate
    - test_mail_cache_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_write_during_purge(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:170,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:173,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:174,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:174,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:178,1
    - Dst: mail_cache_lock
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:178,1
    - Dst: fork
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:181,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:183,1
    - Dst: test_mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:185,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:186,1
    - Dst: test_exit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:187,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:187,1
    - Dst: usleep
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:194,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:196,1
    - Dst: wait
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:199,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:200,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:204,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:204,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:205,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:208,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:208,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:210,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:210,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:210,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:211,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:213,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:213,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:214,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:215,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 166
    functionDepth: 9
    functionLinenumber: 166
    functionLinenumberEnd: 217
    functionName: test_mail_cache_purge_while_cache_locked
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - fork
    - test_mail_cache_view_sync
    - str_c
    - mail_cache_view_close
    - mail_cache_lock
    - test_mail_index_delete
    - mail_cache_lookup_field
    - test_mail_cache_add_mail
    - test_assert
    - t_str_new
    - test_mail_cache_purge
    - test_exit
    - i_fatal
    - test_mail_cache_get_purge_count
    - test_end
    - mail_cache_view_open
    - mail_cache_unlock
    - usleep
    - test_mail_index_init
    - test_mail_cache_init
    - mail_index_refresh
    - strcmp
    - i_error
    - wait
    - test_has_failed
    - test_mail_cache_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_while_cache_locked(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:222,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:223,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:227,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:228,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:228,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:229,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:231,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - cache_view
    - seq
    - field_idx
    - value
    argTypes:
    - struct mail_cache_view*
    - uint32_t
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 219
    functionDepth: 8
    functionLinenumber: 219
    functionLinenumberEnd: 236
    functionName: cache_equals
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - test_assert_idx
    - mail_cache_lookup_field
    - str_new
    - str_free
    linkageType: ''
    returnType: bool
    signature: "bool cache_equals(struct mail_cache_view *cache_view, uint32_t seq,\n\t\t\t
      unsigned int field_idx, const char *value)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:253,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:253,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:254,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:257,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:258,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:263,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:263,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:264,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:265,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:268,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:269,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:270,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:271,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:275,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:276,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:281,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:282,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:282,1
    - Dst: test_mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:289,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:290,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:290,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:294,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:295,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:298,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:298,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:299,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:299,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:300,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:300,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:303,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:304,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:304,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:305,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:305,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:306,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:306,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:311,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:312,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:312,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:313,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:314,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:315,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:318,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:321,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:321,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:323,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:323,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:324,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:324,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:326,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:326,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:327,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:329,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:330,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:330,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:331,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:332,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:333,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 58
    argCount: 2
    argNames:
    - num_mails
    - commit_saves
    argTypes:
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 238
    functionDepth: 9
    functionLinenumber: 238
    functionLinenumberEnd: 334
    functionName: test_mail_cache_purge_during_write_n
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_mail_cache_view_sync
    - test_mail_index_delete
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - test_assert
    - mail_index_append
    - test_mail_cache_purge
    - test_expect_no_more_errors
    - cache_equals
    - mail_index_transaction_commit
    - test_mail_cache_get_purge_count
    - mail_index_transaction_open_updated_view
    - test_expect_error_string
    - mail_cache_view_open
    - mail_index_view_close
    - test_mail_index_init
    - mail_cache_add
    - memset
    - test_mail_cache_init
    - i_free
    - mail_index_transaction_begin
    - i_malloc
    - mail_cache_get_transaction
    - test_mail_cache_deinit
    linkageType: ''
    returnType: void
    signature: "void test_mail_cache_purge_during_write_n(unsigned int num_mails,\n\t\t\t\t\t\t
      bool commit_saves)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:338,1
    - Dst: test_mail_cache_purge_during_write_n
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:339,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 336
    functionDepth: 10
    functionLinenumber: 336
    functionLinenumberEnd: 341
    functionName: test_mail_cache_write_lost_during_purge
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_during_write_n
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_write_lost_during_purge(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:345,1
    - Dst: test_mail_cache_purge_during_write_n
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:346,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 343
    functionDepth: 10
    functionLinenumber: 343
    functionLinenumberEnd: 348
    functionName: test_mail_cache_write_lost_during_purge2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_during_write_n
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_write_lost_during_purge2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:352,1
    - Dst: test_mail_cache_purge_during_write_n
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:353,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 350
    functionDepth: 10
    functionLinenumber: 350
    functionLinenumberEnd: 355
    functionName: test_mail_cache_write_autocommit
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_during_write_n
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_write_autocommit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:359,1
    - Dst: test_mail_cache_purge_during_write_n
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:360,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 357
    functionDepth: 10
    functionLinenumber: 357
    functionLinenumberEnd: 362
    functionName: test_mail_cache_write_autocommit2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_during_write_n
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_write_autocommit2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - max_size
    - current_size
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 370
    functionName: max_field_size
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t max_field_size(size_t max_size, size_t current_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:382,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:382,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:383,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:384,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:387,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:387,1
    - Dst: max_field_size
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:391,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:393,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:396,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:397,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:398,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:399,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:400,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:403,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:403,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:404,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:407,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:408,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:409,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:411,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:411,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:413,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:414,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:415,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - exceed_on_first_write
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 372
    functionDepth: 3
    functionLinenumber: 372
    functionLinenumberEnd: 416
    functionName: test_mail_cache_delete_too_large_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - test_mail_cache_add_field
    - i_malloc
    - test_mail_index_init
    - test_mail_cache_deinit
    - test_mail_index_delete
    - test_expect_error_string
    - max_field_size
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - stat
    - test_assert
    - memset
    - test_mail_cache_init
    - i_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_delete_too_large_int(bool exceed_on_first_write)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:420,1
    - Dst: test_mail_cache_delete_too_large_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:421,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 418
    functionDepth: 4
    functionLinenumber: 418
    functionLinenumberEnd: 423
    functionName: test_mail_cache_delete_too_large
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_begin
    - test_mail_cache_delete_too_large_int
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_delete_too_large(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:427,1
    - Dst: test_mail_cache_delete_too_large_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:428,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 425
    functionDepth: 4
    functionLinenumber: 425
    functionLinenumberEnd: 430
    functionName: test_mail_cache_delete_too_large2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_begin
    - test_mail_cache_delete_too_large_int
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_delete_too_large2(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:444,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:444,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:445,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:448,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:449,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:450,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:451,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:452,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:452,1
    - Dst: test_mail_cache_index_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:457,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:457,1
    - Dst: max_field_size
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:459,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:460,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:461,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:462,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:464,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:464,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:468,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:471,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:473,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:473,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:474,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:474,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:475,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:477,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:479,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:481,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:481,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:482,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:483,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:484,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 1
    argNames:
    - exceed_size
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 432
    functionDepth: 9
    functionLinenumber: 432
    functionLinenumberEnd: 485
    functionName: test_mail_cache_purge_too_large_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_mail_cache_view_sync
    - test_mail_index_delete
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - stat
    - test_assert
    - cache_equals
    - mail_index_transaction_commit
    - test_mail_cache_index_sync
    - test_mail_cache_get_purge_count
    - max_field_size
    - mail_cache_view_open
    - mail_index_view_close
    - test_mail_index_init
    - memset
    - test_mail_cache_init
    - i_free
    - mail_index_transaction_begin
    - i_malloc
    - test_mail_cache_deinit
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_too_large_int(bool exceed_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:489,1
    - Dst: test_mail_cache_purge_too_large_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:490,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 487
    functionDepth: 10
    functionLinenumber: 487
    functionLinenumberEnd: 492
    functionName: test_mail_cache_purge_too_large
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_too_large_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_too_large(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:496,1
    - Dst: test_mail_cache_purge_too_large_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:497,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 494
    functionDepth: 10
    functionLinenumber: 494
    functionLinenumberEnd: 499
    functionName: test_mail_cache_purge_too_large2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_too_large_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_too_large2(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:506,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:506,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:507,1
    - Dst: test_mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:509,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:512,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:517,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:518,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:518,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:519,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:523,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:523,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:524,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:525,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:526,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:527,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:527,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:528,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:529,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:531,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:535,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:536,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:539,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:540,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:540,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:541,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:541,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:542,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:544,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:544,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:545,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 1
    argNames:
    - read_first
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 501
    functionDepth: 9
    functionLinenumber: 501
    functionLinenumberEnd: 547
    functionName: test_mail_cache_unexpectedly_lost_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_mail_cache_purge
    - test_mail_cache_view_sync
    - test_expect_no_more_errors
    - cache_equals
    - test_mail_cache_add_field
    - test_mail_index_init
    - test_mail_cache_get_purge_count
    - test_mail_cache_deinit
    - i_unlink
    - test_expect_error_string
    - test_mail_index_delete
    - test_mail_cache_add_mail
    - test_assert
    - mail_cache_view_open
    - test_mail_cache_init
    - mail_index_refresh
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_unexpectedly_lost_int(bool read_first)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:551,1
    - Dst: test_mail_cache_unexpectedly_lost_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:552,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 549
    functionDepth: 10
    functionLinenumber: 549
    functionLinenumberEnd: 554
    functionName: test_mail_cache_unexpectedly_lost
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_unexpectedly_lost_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_unexpectedly_lost(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:558,1
    - Dst: test_mail_cache_unexpectedly_lost_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:559,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 556
    functionDepth: 10
    functionLinenumber: 556
    functionLinenumberEnd: 561
    functionName: test_mail_cache_unexpectedly_lost2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_unexpectedly_lost_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_unexpectedly_lost2(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:569,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:569,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:570,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:573,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:574,1
    - Dst: link
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:574,1
    - Dst: test_mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:578,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:581,1
    - Dst: rename
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:581,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:585,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:586,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:586,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:587,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:591,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:591,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:592,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:593,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:595,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:596,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:596,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:597,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:598,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:601,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:601,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:604,1
    - Dst: rename
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:604,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:606,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:610,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:611,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:614,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:615,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:615,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:616,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:616,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:617,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:619,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:619,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:620,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 32
    argCount: 1
    argNames:
    - read_first
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 563
    functionDepth: 9
    functionLinenumber: 563
    functionLinenumberEnd: 622
    functionName: test_mail_cache_resetid_mismatch_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_mail_cache_view_sync
    - t_strdup_printf
    - mail_cache_purge
    - test_mail_index_delete
    - test_mail_cache_add_mail
    - link
    - test_assert
    - rename
    - test_expect_no_more_errors
    - test_mail_cache_purge
    - test_mail_cache_add_field
    - cache_equals
    - test_mail_cache_get_purge_count
    - test_expect_error_string
    - mail_cache_view_open
    - test_mail_index_init
    - test_mail_cache_init
    - mail_index_refresh
    - test_mail_cache_deinit
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_resetid_mismatch_int(bool read_first)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:626,1
    - Dst: test_mail_cache_resetid_mismatch_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:627,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 624
    functionDepth: 10
    functionLinenumber: 624
    functionLinenumberEnd: 629
    functionName: test_mail_cache_resetid_mismatch
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_resetid_mismatch_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_resetid_mismatch(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:633,1
    - Dst: test_mail_cache_resetid_mismatch_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:634,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 631
    functionDepth: 10
    functionLinenumber: 631
    functionLinenumberEnd: 636
    functionName: test_mail_cache_resetid_mismatch2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_resetid_mismatch_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_resetid_mismatch2(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:698,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:698,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:699,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:702,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:703,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:708,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:708,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:709,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:710,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:713,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:714,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:715,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:716,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:717,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:719,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:721,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:722,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:723,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:724,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:731,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:740,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:740,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:762,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:762,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:763,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:766,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:768,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:770,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:772,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:777,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:779,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:784,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:786,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:790,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:792,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:798,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:798,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:799,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:799,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:800,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:800,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:801,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:801,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:802,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:802,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:804,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:804,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:806,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:806,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:807,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:807,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:808,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:808,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:810,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:810,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:812,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:812,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:813,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:813,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:815,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:815,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:816,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:817,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:818,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 75
    argCount: 1
    argNames:
    - drop
    argTypes:
    - enum test_drop
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 645
    functionDepth: 9
    functionLinenumber: 645
    functionLinenumberEnd: 819
    functionName: test_mail_cache_purge_field_changes_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_mail_cache_view_sync
    - strlen
    - t_strdup_printf
    - mail_cache_purge
    - test_mail_index_delete
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - test_assert
    - mail_cache_register_fields
    - cache_equals
    - mail_index_transaction_commit
    - test_mail_cache_get_purge_count
    - mail_cache_view_open
    - test_mail_index_init
    - mail_cache_add
    - test_mail_cache_init
    - N_ELEMENTS
    - mail_index_transaction_begin
    - mail_index_update_header
    - ENUM_NEGATE
    - mail_cache_get_transaction
    - test_mail_cache_deinit
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_field_changes_int(enum test_drop drop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:823,1
    - Dst: test_mail_cache_purge_field_changes_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:824,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 821
    functionDepth: 10
    functionLinenumber: 821
    functionLinenumberEnd: 826
    functionName: test_mail_cache_purge_field_changes
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_field_changes_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_field_changes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:830,1
    - Dst: test_mail_cache_purge_field_changes_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:831,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 828
    functionDepth: 10
    functionLinenumber: 828
    functionLinenumberEnd: 833
    functionName: test_mail_cache_purge_field_changes2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_field_changes_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_field_changes2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:837,1
    - Dst: test_mail_cache_purge_field_changes_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:838,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 835
    functionDepth: 10
    functionLinenumber: 835
    functionLinenumberEnd: 840
    functionName: test_mail_cache_purge_field_changes3
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_field_changes_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_field_changes3(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:844,1
    - Dst: test_mail_cache_purge_field_changes_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:845,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 842
    functionDepth: 10
    functionLinenumber: 842
    functionLinenumberEnd: 847
    functionName: test_mail_cache_purge_field_changes4
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_purge_field_changes_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_field_changes4(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:853,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:854,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:854,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:855,1
    - Dst: test_mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:857,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:858,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:858,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:859,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:859,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:861,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:861,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:862,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:862,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:864,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:864,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:865,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:865,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:867,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:868,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 849
    functionDepth: 3
    functionLinenumber: 849
    functionLinenumberEnd: 870
    functionName: test_mail_cache_purge_already_done
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_mail_cache_purge
    - test_mail_index_init
    - test_mail_cache_get_purge_count
    - mail_cache_purge
    - test_mail_index_delete
    - test_end
    - test_mail_cache_add_mail
    - test_assert
    - test_mail_cache_init
    - test_mail_cache_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_already_done(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:888,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:889,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:889,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:890,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:892,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:893,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:894,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:894,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:895,1
    - Dst: test_mail_cache_update_day_first_uid7
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:898,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:900,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:901,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:902,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:903,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:904,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:905,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:911,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:911,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:913,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:914,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:914,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:915,1
    - Dst: cache_equals
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:915,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:916,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:918,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:919,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 872
    functionDepth: 9
    functionLinenumber: 872
    functionLinenumberEnd: 921
    functionName: test_mail_cache_purge_bitmask
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_mail_cache_add_field
    - cache_equals
    - test_mail_index_init
    - test_mail_index_delete
    - mail_cache_purge
    - test_mail_cache_update_day_first_uid7
    - test_end
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - test_assert
    - mail_cache_view_open
    - test_mail_cache_init
    - test_mail_cache_deinit
    - mail_cache_register_fields
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_bitmask(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:937,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:937,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:938,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:941,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:942,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:947,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:948,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:950,1
    - Dst: test_mail_cache_add_field
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:953,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:955,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:957,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:959,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:959,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:960,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:961,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - big_min_size
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 924
    functionDepth: 3
    functionLinenumber: 924
    functionLinenumberEnd: 962
    functionName: test_mail_cache_update_need_purge_continued_records_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_mail_cache_add_field
    - test_mail_index_init
    - test_mail_cache_get_purge_count
    - test_mail_index_delete
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - test_assert
    - i_snprintf
    - test_mail_cache_init
    - test_mail_cache_deinit
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_update_need_purge_continued_records_int(bool big_min_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:966,1
    - Dst: test_mail_cache_update_need_purge_continued_records_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:967,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 964
    functionDepth: 4
    functionLinenumber: 964
    functionLinenumberEnd: 969
    functionName: test_mail_cache_update_need_purge_continued_records
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_update_need_purge_continued_records_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_update_need_purge_continued_records(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:973,1
    - Dst: test_mail_cache_update_need_purge_continued_records_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:974,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 971
    functionDepth: 4
    functionLinenumber: 971
    functionLinenumberEnd: 976
    functionName: test_mail_cache_update_need_purge_continued_records2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_update_need_purge_continued_records_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_update_need_purge_continued_records2(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:992,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:992,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:993,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:996,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:997,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1001,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1003,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1004,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1006,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1006,1
    - Dst: test_mail_cache_index_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1007,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1009,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1010,1
    - Dst: mail_cache_reopen
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1010,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1011,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1012,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1012,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1015,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1016,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1017,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1017,1
    - Dst: test_mail_cache_index_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1019,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1021,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1022,1
    - Dst: mail_cache_reopen
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1022,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1023,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1025,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1025,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1027,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1027,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1029,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1030,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - big_min_size
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 978
    functionDepth: 3
    functionLinenumber: 978
    functionLinenumberEnd: 1031
    functionName: test_mail_cache_update_need_purge_deleted_records_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - test_mail_cache_index_sync
    - test_mail_index_init
    - test_mail_cache_get_purge_count
    - test_mail_index_delete
    - mail_cache_reopen
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - test_assert
    - i_snprintf
    - test_mail_cache_init
    - test_mail_cache_deinit
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_update_need_purge_deleted_records_int(bool big_min_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1035,1
    - Dst: test_mail_cache_update_need_purge_deleted_records_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1036,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1033
    functionDepth: 4
    functionLinenumber: 1033
    functionLinenumberEnd: 1038
    functionName: test_mail_cache_update_need_purge_deleted_records
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_update_need_purge_deleted_records_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_update_need_purge_deleted_records(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1042,1
    - Dst: test_mail_cache_update_need_purge_deleted_records_int
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1043,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1040
    functionDepth: 4
    functionLinenumber: 1040
    functionLinenumberEnd: 1045
    functionName: test_mail_cache_update_need_purge_deleted_records2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_update_need_purge_deleted_records_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_update_need_purge_deleted_records2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1057,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1058,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1059,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1060,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1067,1
    - Dst: mail_cache_purge_drop_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1069,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1070,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1071,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1072,1
    - Dst: mail_cache_purge_drop_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1075,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1076,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1077,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1078,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1080,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1081
    functionName: test_mail_cache_purge_deadlines
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_end
    - test_assert_cmp
    - test_begin
    - mail_cache_purge_drop_init
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge_deadlines(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1114,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-cache-purge.c:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1083
    functionDepth: 1
    functionLinenumber: 1083
    functionLinenumberEnd: 1116
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-index/mail-index-write.c:21,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:22,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-index-write.c:28,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/mail-index-write.c:29,1
    - Dst: link
      Src: /src/dovecot/src/lib-index/mail-index-write.c:30,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-index-write.c:32,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:33,1
    - Dst: link
      Src: /src/dovecot/src/lib-index/mail-index-write.c:37,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:44,1
    - Dst: rename
      Src: /src/dovecot/src/lib-index/mail-index-write.c:49,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:50,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 55
    functionName: mail_index_create_backup
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-write.c
    functionUses: 0
    functionsReached:
    - rename
    - mail_index_set_error
    - fdatasync
    - unlink
    - link
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int mail_index_create_backup(struct mail_index *index)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-write.c:65,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-write.c:65,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-write.c:66,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-write.c:67,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-write.c:68,1
    - Dst: mail_index_create_tmp_file
      Src: /src/dovecot/src/lib-index/mail-index-write.c:70,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-index/mail-index-write.c:74,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-index/mail-index-write.c:75,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-write.c:83,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-write.c:84,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-write.c:85,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-write.c:85,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-index-write.c:87,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-index/mail-index-write.c:89,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:90,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-index/mail-index-write.c:93,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-index/mail-index-write.c:96,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:97,1
    - Dst: close
      Src: /src/dovecot/src/lib-index/mail-index-write.c:103,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:104,1
    - Dst: mail_index_create_backup
      Src: /src/dovecot/src/lib-index/mail-index-write.c:109,1
    - Dst: rename
      Src: /src/dovecot/src/lib-index/mail-index-write.c:111,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:112,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/mail-index-write.c:118,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 120
    functionName: mail_index_recreate
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-write.c
    functionUses: 0
    functionsReached:
    - rename
    - fdatasync
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_index_set_error
    - I_MIN
    - mail_index_file_set_syscall_error
    - o_stream_cork
    - mail_index_create_backup
    - o_stream_finish
    - i_unlink
    - o_stream_nsend
    - mail_index_create_tmp_file
    - o_stream_create_fd_file
    - o_stream_destroy
    - i_assert
    - close
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: int
    signature: int mail_index_recreate(struct mail_index *index)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-index/mail-index-write.c:126,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:128,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-index-write.c:142,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-index-write.c:143,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-write.c:144,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-index/mail-index-write.c:148,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 154
    functionName: mail_index_should_recreate
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-write.c
    functionUses: 0
    functionsReached:
    - ESTALE_FSTAT
    - mail_index_set_syscall_error
    - fstat
    - CMP_DEV_T
    - nfs_safe_stat
    linkageType: ''
    returnType: bool
    signature: bool mail_index_should_recreate(struct mail_index *index)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-write.c:162,1
    - Dst: mail_transaction_log_rotate
      Src: /src/dovecot/src/lib-index/mail-index-write.c:172,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-write.c:181,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-write.c:182,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-index-write.c:194,1
    - Dst: mail_index_should_recreate
      Src: /src/dovecot/src/lib-index/mail-index-write.c:196,1
    - Dst: mail_index_recreate
      Src: /src/dovecot/src/lib-index/mail-index-write.c:200,1
    - Dst: mail_index_move_to_memory
      Src: /src/dovecot/src/lib-index/mail-index-write.c:201,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-index/mail-index-write.c:204,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-index-write.c:205,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - index
    - want_rotate
    - reason
    argTypes:
    - struct mail_index*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 211
    functionName: mail_index_write
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-write.c
    functionUses: 1
    functionsReached:
    - mail_index_recreate
    - mail_index_move_to_memory
    - MAIL_INDEX_IS_IN_MEMORY
    - event_set_name
    - e_debug
    - mail_transaction_log_rotate
    - mail_index_should_recreate
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_write(struct mail_index *index, bool want_rotate,\n\t\t
      \     const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:19,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:21,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 22
    functionName: mail_index_transaction_lookup
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 4
    functionsReached:
    - i_assert
    - array_idx_modifiable
    linkageType: ''
    returnType: struct mail_index_record
    signature: 'struct mail_index_record *

      mail_index_transaction_lookup(struct mail_index_transaction *t, uint32_t seq)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:26,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:29,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:30,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:31,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:32,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:34,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:36,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:37,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:38,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:39,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:41,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:43,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:44,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:45,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:46,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:48,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:51,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:54,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:55,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:56,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:57,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:58,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:60,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:63,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:64,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:65,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:66,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:67,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:68,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:69,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:70,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:71,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:72,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:73,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:74,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:75,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:76,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:77,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:78,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:79,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:80,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:82,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:89,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:90,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 69
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 103
    functionName: mail_index_transaction_reset_v
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - memset
    - array_free
    - ARRAY_TYPE
    - array_foreach_modifiable
    - array_is_created
    - i_free
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_reset_v(struct mail_index_transaction *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:108,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:109,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:110,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:111,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 115
    functionName: mail_index_transaction_set_log_updates
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 1
    functionsReached:
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_set_log_updates(struct mail_index_transaction
      *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:122,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:126,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:127,1
    - Dst: time_to_local_day_start
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:129,1
    - Dst: memmove
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:141,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:146,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:149,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:152,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - t
    - day_stamp
    argTypes:
    - struct mail_index_transaction*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 155
    functionName: mail_index_update_day_headers
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 2
    functionsReached:
    - mail_index_update_header
    - memmove
    - mail_index_get_header
    - time_to_uint32_trunc
    - time_to_local_day_start
    - array_front
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_day_headers(struct mail_index_transaction *t,\n\t\t\t\t
      \  time_t day_stamp)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:162,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:166,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:167,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:176,1
    - Dst: mail_index_transaction_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:183,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:187,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - t
    - uid
    - seq_r
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 192
    functionName: mail_index_append
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 8
    functionsReached:
    - i_array_init
    - i_panic
    - array_append_space
    - mail_index_transaction_lookup
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_append(struct mail_index_transaction *t, uint32_t
      uid,\n\t\t       uint32_t *seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_append_finish_uids_full
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - first_uid
    - uids_r
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: mail_index_append_finish_uids
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 1
    functionsReached:
    - mail_index_append_finish_uids_full
    linkageType: ''
    returnType: void
    signature: "void mail_index_append_finish_uids(struct mail_index_transaction *t,\n\t\t\t\t
      \  uint32_t first_uid,\n\t\t\t\t   ARRAY_TYPE(seq_range) *uids_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:211,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:215,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:219,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:226,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:231,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:241,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:242,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:248,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 4
    argNames:
    - t
    - min_allowed_uid
    - first_new_uid
    - uids_r
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 252
    functionName: mail_index_append_finish_uids_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 1
    functionsReached:
    - array_append_space
    - array_get_modifiable
    - array_clear
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_append_finish_uids_full(struct mail_index_transaction
      *t,\n\t\t\t\t\tuint32_t min_allowed_uid,\n\t\t\t\t\tuint32_t first_new_uid,\n\t\t\t\t\tARRAY_TYPE(seq_range)
      *uids_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:264,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:265,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - t
    - seq
    - min_modseq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 273
    functionName: mail_index_update_modseq
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - array_is_created
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_modseq(struct mail_index_transaction *t, uint32_t
      seq,\n\t\t\t      uint64_t min_modseq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - t
    - min_modseq
    argTypes:
    - struct mail_index_transaction*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 287
    functionName: mail_index_update_highest_modseq
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_highest_modseq(struct mail_index_transaction
      *t,\n\t\t\t\t      uint64_t min_modseq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:300,1
    - Dst: mail_index_seq_array_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:301,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 299
    functionDepth: 2
    functionLinenumber: 299
    functionLinenumberEnd: 303
    functionName: array_foreach_modifiable
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 24
    functionsReached:
    - mail_index_seq_array_lookup
    - array_is_created
    - array_delete
    linkageType: ''
    returnType: void
    signature: void array_foreach_modifiable(ext_updates, seqs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_revert_ext
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:313,1
    - Dst: mail_index_revert_ext
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:314,1
    - Dst: mail_index_transaction_has_ext_changes
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:315,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:318,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:319,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:320,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:321,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:324,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:325,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:331,1
    - Dst: mail_index_seq_array_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:332,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:333,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 306
    functionDepth: 2
    functionLinenumber: 306
    functionLinenumberEnd: 334
    functionName: mail_index_revert_changes_common
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_delete
    - mail_index_revert_ext
    - array_foreach_modifiable
    - mail_index_seq_array_lookup
    - array_is_created
    - mail_index_transaction_has_ext_changes
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: void mail_index_revert_changes_common(struct mail_index_transaction
      *t, uint32_t seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_revert_changes_common
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:338,1
    - Dst: mail_index_cancel_flag_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 336
    functionDepth: 3
    functionLinenumber: 336
    functionLinenumberEnd: 340
    functionName: mail_index_revert_changes
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_revert_changes_common
    - mail_index_cancel_flag_updates
    linkageType: ''
    returnType: void
    signature: void mail_index_revert_changes(struct mail_index_transaction *t, uint32_t
      seq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:345,1
    - Dst: mail_index_revert_changes_common
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:347,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:350,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:355,1
    - Dst: mail_index_transaction_set_log_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 342
    functionDepth: 3
    functionLinenumber: 342
    functionLinenumberEnd: 358
    functionName: mail_index_expunge_last_append
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_delete
    - mail_index_revert_changes_common
    - mail_index_transaction_set_log_updates
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_index_expunge_last_append(struct mail_index_transaction *t,
      uint32_t seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_expunge_guid
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 365
    functionName: mail_index_expunge
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 4
    functionsReached:
    - mail_index_expunge_guid
    linkageType: ''
    returnType: void
    signature: void mail_index_expunge(struct mail_index_transaction *t, uint32_t
      seq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:374,1
    - Dst: mail_index_expunge_last_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:380,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:385,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:386,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:389,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:393,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:395,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - t
    - seq
    - guid_128
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 367
    functionDepth: 4
    functionLinenumber: 367
    functionLinenumberEnd: 397
    functionName: mail_index_expunge_guid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - memcpy
    - array_append_space
    - array_get
    - array_is_created
    - i_assert
    - mail_index_expunge_last_append
    linkageType: ''
    returnType: void
    signature: "void mail_index_expunge_guid(struct mail_index_transaction *t, uint32_t
      seq,\n\t\t\t     const guid_128_t guid_128)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - t
    - seq1
    - seq2
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 411
    functionName: update_minmax_flagupdate_seq
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void update_minmax_flagupdate_seq(struct mail_index_transaction *t,\n\t\t\t\t\t
      uint32_t seq1, uint32_t seq2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:422,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:423,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:424,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - t
    - left_idx
    - right_idx
    - seq
    argTypes:
    - struct mail_index_transaction*
    - unsigned int
    - unsigned int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 442
    functionName: mail_index_transaction_get_flag_update_pos
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 2
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int mail_index_transaction_get_flag_update_pos(struct mail_index_transaction
      *t,\n\t\t\t\t\t   unsigned int left_idx,\n\t\t\t\t\t   unsigned int right_idx,\n\t\t\t\t\t
      \  uint32_t seq)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:452,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:455,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:456,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:476,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:477,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:479,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:480,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:494,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:495,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:497,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:498,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:512,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:513,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:522,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:525,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:526,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:527,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:529,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:534,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:541,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:545,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 67
    argCount: 3
    argNames:
    - t
    - u
    - idx
    argTypes:
    - struct mail_index_transaction*
    - struct mail_index_flag_update
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 550
    functionName: mail_index_insert_flag_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get_modifiable
    - I_MIN
    - array_insert
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_insert_flag_update(struct mail_index_transaction *t,\n\t\t\t
      \     struct mail_index_flag_update u,\n\t\t\t      unsigned int idx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:564,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - rec
    - modify_type
    - flags
    argTypes:
    - struct mail_index_record*
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 567
    functionName: mail_index_record_modify_flags
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void mail_index_record_modify_flags(struct mail_index_record *rec,\n\t\t\t\t\t
      \  enum modify_type modify_type,\n\t\t\t\t\t   enum mail_flags flags)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: update_minmax_flagupdate_seq
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:578,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:583,1
    - Dst: mail_index_transaction_lookup
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:584,1
    - Dst: mail_index_record_modify_flags
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:585,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:594,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:595,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:595,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:600,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:607,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:621,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:622,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:623,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:627,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:649,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:651,1
    - Dst: mail_index_transaction_get_flag_update_pos
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:662,1
    - Dst: mail_index_insert_flag_update
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:664,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 5
    argNames:
    - t
    - seq1
    - seq2
    - modify_type
    - flags
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 569
    functionDepth: 2
    functionLinenumber: 569
    functionLinenumberEnd: 666
    functionName: mail_index_update_flags_range
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 7
    functionsReached:
    - i_zero
    - i_array_init
    - ENUM_NEGATE
    - array_push_back
    - array_get_modifiable
    - mail_index_transaction_get_flag_update_pos
    - I_MAX
    - mail_index_record_modify_flags
    - mail_index_transaction_lookup
    - update_minmax_flagupdate_seq
    - mail_index_insert_flag_update
    - array_is_created
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_flags_range(struct mail_index_transaction *t,\n\t\t\t\t
      \  uint32_t seq1, uint32_t seq2,\n\t\t\t\t   enum modify_type modify_type,\n\t\t\t\t
      \  enum mail_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - t
    - seq
    - modify_type
    - flags
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 668
    functionDepth: 3
    functionLinenumber: 668
    functionLinenumberEnd: 673
    functionName: mail_index_update_flags
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 1
    functionsReached:
    - mail_index_update_flags_range
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_flags(struct mail_index_transaction *t, uint32_t
      seq,\n\t\t\t     enum modify_type modify_type,\n\t\t\t     enum mail_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:680,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:683,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:684,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:686,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:687,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:688,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:688,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:690,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - t
    - key
    - pvt
    - prefix
    - timestamp
    - value_len
    argTypes:
    - struct mail_index_transaction*
    - char*
    - bool
    - char
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 696
    functionName: mail_index_attribute_set_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_create_dynamic
    - strlen
    - time_to_uint32_trunc
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: "void mail_index_attribute_set_full(struct mail_index_transaction *t,\n\t\t\t
      \     const char *key, bool pvt, char prefix,\n\t\t\t      time_t timestamp,
      uint32_t value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_attribute_set_full
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - t
    - pvt
    - key
    - timestamp
    - value_len
    argTypes:
    - struct mail_index_transaction*
    - bool
    - char*
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 698
    functionDepth: 2
    functionLinenumber: 698
    functionLinenumberEnd: 703
    functionName: mail_index_attribute_set
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_attribute_set_full
    linkageType: ''
    returnType: void
    signature: "void mail_index_attribute_set(struct mail_index_transaction *t,\n\t\t\t
      \     bool pvt, const char *key,\n\t\t\t      time_t timestamp, uint32_t value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_attribute_set_full
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - t
    - pvt
    - key
    - timestamp
    argTypes:
    - struct mail_index_transaction*
    - bool
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 2
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: mail_index_attribute_unset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_attribute_set_full
    linkageType: ''
    returnType: void
    signature: "void mail_index_attribute_unset(struct mail_index_transaction *t,\n\t\t\t\tbool
      pvt, const char *key,\n\t\t\t\ttime_t timestamp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:716,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:717,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:718,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:724,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:729,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 5
    argNames:
    - t
    - offset
    - data
    - size
    - prepend
    argTypes:
    - struct mail_index_transaction*
    - size_t
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 733
    functionName: mail_index_update_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 5
    functionsReached:
    - memcpy
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_header(struct mail_index_transaction *t,\n\t\t\t
      \     size_t offset, const void *data, size_t size,\n\t\t\t      bool prepend)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:739,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:742,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:744,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:745,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:749,1
    - Dst: mail_index_seq_array_alloc
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:750,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:753,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:754,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:756,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:756,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:759,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - t
    - ext_id
    - new_record_size
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 735
    functionDepth: 1
    functionLinenumber: 735
    functionLinenumberEnd: 760
    functionName: mail_index_ext_rec_updates_resize
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_seq_array_alloc
    - memcpy
    - array_append_space
    - array_idx_modifiable
    - array_idx
    - array_count
    - ARRAY_TYPE
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_rec_updates_resize(struct mail_index_transaction
      *t,\n\t\t\t\t  uint32_t ext_id, uint16_t new_record_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:772,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:773,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:776,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:784,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:792,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:793,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:810,1
    - Dst: mail_index_ext_rec_updates_resize
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:811,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:816,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:817,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:821,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:825,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:830,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 5
    argNames:
    - t
    - ext_id
    - hdr_size
    - record_size
    - record_align
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 762
    functionDepth: 2
    functionLinenumber: 762
    functionLinenumberEnd: 831
    functionName: mail_index_ext_resize
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_array_init
    - array_idx_set
    - array_idx
    - mail_index_map_get_ext_idx
    - array_get
    - array_is_created
    - i_assert
    - mail_index_ext_rec_updates_resize
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_resize(struct mail_index_transaction *t, uint32_t
      ext_id,\n\t\t\t   uint32_t hdr_size, uint16_t record_size,\n\t\t\t   uint16_t
      record_align)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_resize
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - ext_id
    - hdr_size
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 833
    functionDepth: 3
    functionLinenumber: 833
    functionLinenumberEnd: 837
    functionName: mail_index_ext_resize_hdr
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_resize
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_resize_hdr(struct mail_index_transaction *t,\n\t\t\t
      \      uint32_t ext_id, uint32_t hdr_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:844,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:846,1
    - Dst: mail_index_ext_set_reset_id
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:850,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:852,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:853,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:854,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - t
    - ext_id
    - reset_id
    - clear_data
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 839
    functionDepth: 1
    functionLinenumber: 839
    functionLinenumberEnd: 856
    functionName: mail_index_ext_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_array_init
    - array_idx_set
    - mail_index_ext_set_reset_id
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_reset(struct mail_index_transaction *t, uint32_t
      ext_id,\n\t\t\t  uint32_t reset_id, bool clear_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_reset
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:863,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:865,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:866,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - t
    - ext_id
    - prev_reset_id
    - clear_data
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 858
    functionDepth: 2
    functionLinenumber: 858
    functionLinenumberEnd: 868
    functionName: mail_index_ext_reset_inc
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - mail_index_ext_reset
    - array_idx_set
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_reset_inc(struct mail_index_transaction *t, uint32_t
      ext_id,\n\t\t\t      uint32_t prev_reset_id, bool clear_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:875,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:877,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arr
    argTypes:
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 882
    functionName: mail_index_transaction_has_ext_updates
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool mail_index_transaction_has_ext_updates(const ARRAY_TYPE(seq_array_array)
      *arr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:877,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 876
    functionDepth: 1
    functionLinenumber: 876
    functionLinenumberEnd: 879
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 31
    functionsReached:
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void array_foreach(arr, array)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_has_ext_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:887,1
    - Dst: mail_index_transaction_has_ext_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:889,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:892,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:895,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:900,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:903,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:908,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:911,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 884
    functionDepth: 2
    functionLinenumber: 884
    functionLinenumberEnd: 917
    functionName: mail_index_transaction_has_ext_changes
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - mail_index_transaction_has_ext_updates
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: bool mail_index_transaction_has_ext_changes(struct mail_index_transaction
      *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_update_reset
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:935,1
    - Dst: mail_index_ext_update_reset
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:936,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:937,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:938,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:942,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:944,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:945,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:949,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:950,1
    - Dst: array_idx_clear
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:952,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:954,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:955,1
    - Dst: array_idx_clear
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:957,1
    - Dst: mail_index_transaction_has_ext_changes
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:960,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - t
    - ext_id
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 932
    functionDepth: 3
    functionLinenumber: 932
    functionLinenumberEnd: 961
    functionName: mail_index_ext_reset_changes
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_idx_modifiable
    - i_free_and_null
    - array_idx_clear
    - array_count
    - array_is_created
    - mail_index_transaction_has_ext_changes
    - mail_index_ext_update_reset
    linkageType: ''
    returnType: void
    signature: void mail_index_ext_reset_changes(struct mail_index_transaction *t,
      uint32_t ext_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:969,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:970,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:971,1
    - Dst: mail_index_ext_reset_changes
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:976,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - t
    - ext_id
    - reset_id
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 963
    functionDepth: 4
    functionLinenumber: 963
    functionLinenumberEnd: 978
    functionName: mail_index_ext_using_reset_id
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_index_ext_reset_changes
    - array_is_created
    - array_idx_get_space
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_using_reset_id(struct mail_index_transaction *t,\n\t\t\t\t
      \  uint32_t ext_id, uint32_t reset_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_using_reset_id
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:983,1
    - Dst: mail_index_ext_reset_changes
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - t
    - ext_id
    - reset_id
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 980
    functionDepth: 5
    functionLinenumber: 980
    functionLinenumberEnd: 986
    functionName: mail_index_ext_set_reset_id
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 2
    functionsReached:
    - mail_index_ext_reset_changes
    - mail_index_ext_using_reset_id
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_set_reset_id(struct mail_index_transaction *t,\n\t\t\t\t
      uint32_t ext_id, uint32_t reset_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:995,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:996,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:999,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1000,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1002,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1004,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1005,1
    - Dst: i_realloc
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1006,1
    - Dst: i_realloc
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1007,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1010,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1011,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 5
    argNames:
    - t
    - ext_id
    - offset
    - data
    - size
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 1014
    functionName: mail_index_update_header_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - memcpy
    - memset
    - nearest_power
    - array_idx_get_space
    - array_is_created
    - i_assert
    - i_realloc
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_header_ext(struct mail_index_transaction *t,\n\t\t\t\t
      \ uint32_t ext_id, size_t offset,\n\t\t\t\t  const void *data, size_t size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1023,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1026,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1027,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1029,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1029,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1033,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1037,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1043,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1046,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1048,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1049,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1050,1
    - Dst: mail_index_seq_array_add
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1053,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1057,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 5
    argNames:
    - t
    - seq
    - ext_id
    - data
    - old_data_r
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1059
    functionName: mail_index_update_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 3
    functionsReached:
    - i_array_init
    - array_idx
    - array_get
    - memset
    - array_count
    - array_idx_get_space
    - ARRAY_TYPE
    - mail_index_seq_array_add
    - array_is_created
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_ext(struct mail_index_transaction *t, uint32_t
      seq,\n\t\t\t   uint32_t ext_id, const void *data, void *old_data_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1064,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1067,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1068,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1070,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1070,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1077,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1078,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1079,1
    - Dst: mail_index_seq_array_add
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1080,1
    - Dst: mail_index_seq_array_add
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1084,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - t
    - seq
    - ext_id
    - diff
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1088
    functionName: mail_index_atomic_inc_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_count
    - array_idx_get_space
    - ARRAY_TYPE
    - mail_index_seq_array_add
    - array_is_created
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: "int mail_index_atomic_inc_ext(struct mail_index_transaction *t,\n\t\t\t
      \     uint32_t seq, uint32_t ext_id, int diff)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1095,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1100,1
    - Dst: mail_index_transaction_lookup_latest_keywords
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1102,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1103,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 4
    argNames:
    - t
    - seq
    - modify_type
    - keywords
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - enum modify_type
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1090
    functionDepth: 1
    functionLinenumber: 1090
    functionLinenumberEnd: 1129
    functionName: keyword_update_has_changes
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - array_get
    - mail_index_transaction_lookup_latest_keywords
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: bool
    signature: "bool keyword_update_has_changes(struct mail_index_transaction *t,
      uint32_t seq,\n\t\t\t   enum modify_type modify_type,\n\t\t\t   struct mail_keywords
      *keywords)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1134,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1137,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1144,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1146,1
    - Dst: mail_index_transaction_lookup_latest_keywords
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1148,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1150,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1154
    functionName: keyword_update_remove_existing
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_lookup_latest_keywords
    - array_push_back
    - mail_index_keywords_create_from_indexes
    - array_count
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: struct mail_keywords
    signature: 'struct mail_keywords *

      keyword_update_remove_existing(struct mail_index_transaction *t, uint32_t seq)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1166,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1169,1
    - Dst: update_minmax_flagupdate_seq
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1174,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1176,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1180,1
    - Dst: keyword_update_has_changes
      Src: /src/dovecot/src/lib-index/mail-index-transaction-update.c:1185,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 4
    argNames:
    - t
    - seq
    - modify_type
    - keywords
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - enum modify_type
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1156
    functionDepth: 2
    functionLinenumber: 1156
    functionLinenumberEnd: 1191
    functionName: mail_index_update_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-update.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - update_minmax_flagupdate_seq
    - keyword_update_has_changes
    - array_is_created
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void mail_index_update_keywords(struct mail_index_transaction *t,
      uint32_t seq,\n\t\t\t\tenum modify_type modify_type,\n\t\t\t\tstruct mail_keywords
      *keywords)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:106,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:108,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:109,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:109,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:110,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:111,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:114,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:117,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:118,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:119,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:122,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:125,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:128,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:131,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:143,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:145,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:151,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:152,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:152,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:154,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:154,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:155,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:155,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:155,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:156,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:157,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:157,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:159,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:159,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:160,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:160,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:160,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:161,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:162,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:162,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:164,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:164,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:165,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:165,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:165,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:166,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:167,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:167,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:169,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:169,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:170,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:170,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:170,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:175,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:176,1
    - Dst: mail_cache_lookup_headers
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:176,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:178,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:179,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:179,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:188,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:191,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:192,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:192,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:194,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:194,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:195,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:195,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:198,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:198,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:207,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:208,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:209,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:211,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:211,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:215,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:216,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:216,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:218,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:218,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:219,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:219,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:219,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:222,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:222,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:223,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:225,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:226,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:228,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:228,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:229,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:229,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:231,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:231,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:232,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:233,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:234,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:235,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 58
    functionDepth: 8
    functionLinenumber: 58
    functionLinenumberEnd: 236
    functionName: test_mail_cache_fields
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - str_c
    - test_mail_cache_view_sync
    - mail_cache_view_close
    - test_assert_idx
    - str_len
    - test_mail_index_delete
    - mail_cache_purge
    - mail_cache_lookup_field
    - test_mail_cache_add_mail
    - mail_cache_lookup_headers
    - test_assert
    - mail_cache_register_fields
    - t_str_new
    - mail_index_transaction_commit
    - test_mail_cache_get_purge_count
    - test_end
    - mail_cache_view_open
    - str_data
    - test_mail_index_init
    - test_assert_strcmp
    - mail_cache_add
    - test_mail_cache_init
    - N_ELEMENTS
    - mail_index_transaction_begin
    - str_truncate
    - mail_cache_get_transaction
    - memcmp
    - test_mail_cache_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_fields(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:254,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:256,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:256,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:257,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:264,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:267,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:268,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:269,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:270,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:273,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:273,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:274,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:277,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:279,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:280,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:282,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:285,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:285,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:287,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:287,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:289,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:289,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:292,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:296,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:297,1
    - Dst: mail_cache_reopen
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:297,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:299,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:302,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:302,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:304,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:304,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:306,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:306,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:309,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:310,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:310,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:312,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:312,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:314,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:314,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:316,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:317,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:317,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:319,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 1
    argNames:
    - field3_size
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 238
    functionDepth: 8
    functionLinenumber: 238
    functionLinenumberEnd: 321
    functionName: test_mail_cache_record_max_size_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_mail_cache_view_sync
    - str_c
    - test_mail_index_delete
    - mail_cache_purge
    - mail_cache_lookup_field
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - test_assert
    - t_str_new
    - mail_index_transaction_commit
    - test_mail_cache_get_purge_count
    - mail_cache_view_open
    - test_mail_index_init
    - test_assert_strcmp
    - mail_cache_reopen
    - mail_cache_add
    - test_mail_cache_init
    - mail_index_transaction_begin
    - str_truncate
    - mail_cache_get_transaction
    - test_mail_cache_deinit
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_record_max_size_int(unsigned int field3_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:325,1
    - Dst: test_mail_cache_record_max_size_int
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:326,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 323
    functionDepth: 9
    functionLinenumber: 323
    functionLinenumberEnd: 328
    functionName: test_mail_cache_record_max_size
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_record_max_size_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_record_max_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:332,1
    - Dst: test_mail_cache_record_max_size_int
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:333,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 330
    functionDepth: 9
    functionLinenumber: 330
    functionLinenumberEnd: 335
    functionName: test_mail_cache_record_max_size2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_record_max_size_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_record_max_size2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:339,1
    - Dst: test_mail_cache_record_max_size_int
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:340,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 337
    functionDepth: 9
    functionLinenumber: 337
    functionLinenumberEnd: 342
    functionName: test_mail_cache_record_max_size3
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_cache_record_max_size_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_record_max_size3(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:358,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:360,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:361,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:361,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:362,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:364,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:365,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:367,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:368,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:369,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:370,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:371,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:372,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:372,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:373,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:376,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:379,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:379,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:381,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:381,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:384,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:386,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:387,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 344
    functionDepth: 8
    functionLinenumber: 344
    functionLinenumberEnd: 389
    functionName: test_mail_cache_record_max_size4
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - t_str_new
    - mail_index_transaction_begin
    - test_mail_cache_view_sync
    - mail_index_transaction_commit
    - test_mail_index_init
    - test_mail_index_delete
    - mail_cache_lookup_field
    - test_end
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - mail_cache_get_transaction
    - mail_cache_view_open
    - mail_cache_add
    - test_assert
    - test_mail_cache_init
    - test_mail_cache_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_record_max_size4(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:401,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:403,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:403,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:404,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:405,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:411,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:412,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:413,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:413,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:417,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:419,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:420,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:421,1
    - Dst: mail_cache_view_update_cache_decisions
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:425,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:426,1
    - Dst: mail_cache_view_update_cache_decisions
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:427,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:428,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:432,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:434,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:435,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:436,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:438,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:438,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:443,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:447,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:448,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:451,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:456,1
    - Dst: test_mail_cache_get_purge_count
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:456,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:457,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:458,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:459,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 391
    functionDepth: 6
    functionLinenumber: 391
    functionLinenumberEnd: 460
    functionName: test_mail_cache_add_decisions
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_assert_idx
    - test_mail_index_delete
    - mail_cache_purge
    - test_mail_cache_add_mail
    - test_assert
    - mail_cache_register_fields
    - memcpy
    - mail_index_transaction_commit
    - test_mail_cache_get_purge_count
    - test_end
    - mail_cache_view_open
    - test_mail_index_init
    - mail_cache_view_update_cache_decisions
    - mail_cache_add
    - test_mail_cache_init
    - mail_index_transaction_begin
    - mail_cache_get_transaction
    - test_mail_cache_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_add_decisions(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:472,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:474,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:474,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:476,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:477,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:478,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:479,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:479,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:482,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:483,1
    - Dst: test_mail_cache_update_day_first_uid7
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:492,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:494,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:495,1
    - Dst: mail_cache_view_update_cache_decisions
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:498,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:503,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:503,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:509,1
    - Dst: mail_cache_lookup_headers
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:509,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:512,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:513,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:514,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:515,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - header_lookups
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 462
    functionDepth: 8
    functionLinenumber: 462
    functionLinenumberEnd: 516
    functionName: test_mail_cache_lookup_decisions_int
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_str_new
    - mail_index_transaction_begin
    - test_assert_idx
    - test_mail_index_init
    - mail_cache_purge
    - test_mail_cache_update_day_first_uid7
    - mail_cache_lookup_field
    - mail_cache_view_update_cache_decisions
    - test_mail_cache_add_mail
    - test_assert
    - mail_cache_view_open
    - mail_cache_lookup_headers
    - test_mail_cache_init
    - mail_cache_register_fields
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_lookup_decisions_int(bool header_lookups)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:632,1
    - Dst: test_mail_cache_lookup_decisions_int
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:633,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 630
    functionDepth: 9
    functionLinenumber: 630
    functionLinenumberEnd: 635
    functionName: test_mail_cache_lookup_decisions
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_begin
    - test_mail_cache_lookup_decisions_int
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_lookup_decisions(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:639,1
    - Dst: test_mail_cache_lookup_decisions_int
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:640,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 637
    functionDepth: 9
    functionLinenumber: 637
    functionLinenumberEnd: 642
    functionName: test_mail_cache_lookup_decisions2
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_begin
    - test_mail_cache_lookup_decisions_int
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_lookup_decisions2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:657,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:659,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:660,1
    - Dst: mail_index_open_or_create
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:660,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:661,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:662,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:663,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:665,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:666,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:668,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:669,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:672,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:673,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:674,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:675,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:676,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:679,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:680,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:680,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:682,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:682,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:683,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:684,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:684,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:686,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:686,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:687,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:688,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:688,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:690,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:690,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:695,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:696,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:696,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:698,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:698,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:700,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:701,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:701,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:703,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:703,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:704,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:705,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:705,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:707,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:707,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:709,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:709,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:711,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:712,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:714,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:715,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:716,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:717,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 644
    functionDepth: 8
    functionLinenumber: 644
    functionLinenumberEnd: 718
    functionName: test_mail_cache_in_memory
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - str_c
    - mail_cache_view_close
    - str_len
    - test_mail_index_delete
    - mail_cache_lookup_field
    - mail_index_set_optimization_settings
    - test_mail_cache_add_mail
    - test_assert
    - mail_index_transaction_commit
    - test_end
    - mail_cache_view_open
    - str_new
    - str_free
    - mail_index_open_or_create
    - test_assert_strcmp
    - mail_cache_add
    - memset
    - test_mail_cache_init
    - i_free
    - mail_index_transaction_begin
    - mail_index_alloc
    - i_malloc
    - str_truncate
    - mail_cache_get_transaction
    - test_mail_cache_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_in_memory(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:727,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:729,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:729,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:730,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:731,1
    - Dst: mail_cache_lookup_iter_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:734,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:735,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:740,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:740,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:742,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:743,1
    - Dst: mail_cache_lookup_iter_next
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:743,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:744,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:746,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:747,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:748,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 720
    functionDepth: 5
    functionLinenumber: 720
    functionLinenumberEnd: 750
    functionName: test_mail_cache_size_corruption
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - mail_cache_view_close
    - test_mail_index_init
    - pwrite_full
    - test_mail_cache_deinit
    - test_mail_index_delete
    - test_expect_error_string
    - test_end
    - test_mail_cache_add_mail
    - mail_cache_lookup_iter_init
    - mail_cache_view_open
    - test_assert
    - test_mail_cache_init
    - mail_cache_lookup_iter_next
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_size_corruption(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:770,1
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:771,1
    - Dst: test_mail_index_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:771,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:772,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:773,1
    - Dst: test_mail_cache_add_mail
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:776,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:779,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:780,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:781,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:784,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:787,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:787,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:790,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:793,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:794,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:795,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:797,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:797,1
    - Dst: stat
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:799,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:800,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:802,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:803,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:804,1
    - Dst: test_mail_index_delete
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:805,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 752
    functionDepth: 6
    functionLinenumber: 752
    functionLinenumberEnd: 807
    functionName: test_mail_cache_duplicate_fields
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - test_mail_cache_view_sync
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - test_mail_index_init
    - test_mail_index_delete
    - test_end
    - mail_cache_register_fields
    - test_mail_cache_add_mail
    - stat
    - mail_cache_get_transaction
    - mail_cache_view_open
    - mail_cache_add
    - test_assert
    - test_mail_cache_init
    - test_mail_cache_deinit
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_duplicate_fields(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:825,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-cache.c:826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 809
    functionDepth: 1
    functionLinenumber: 809
    functionLinenumberEnd: 827
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache.c
    functionUses: 0
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: mail_index_sync_add_expunge
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_add_expunge(struct mail_index_sync_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_expunge_guid
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: mail_index_sync_add_expunge_guid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_expunge_guid
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_add_expunge_guid(struct mail_index_sync_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:63,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 75
    functionName: mail_index_sync_add_flag_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_update_flags_range
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_add_flag_update(struct mail_index_sync_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:86,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:91,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:93,1
    - Dst: mail_index_keywords_create
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:95,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:101,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 107
    functionName: mail_index_sync_add_keyword_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_update_keywords
    - t_strndup
    - mail_index_keywords_unref
    - i_assert
    - CONST_PTR_OFFSET
    - mail_index_keywords_create
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_add_keyword_update(struct mail_index_sync_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_keywords_create
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:116,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:119,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 124
    functionName: mail_index_sync_add_keyword_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_keywords_unref
    - mail_index_update_keywords
    - mail_index_keywords_create
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_add_keyword_reset(struct mail_index_sync_ctx *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_add_expunge
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:130,1
    - Dst: mail_index_sync_add_expunge_guid
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:133,1
    - Dst: mail_index_sync_add_flag_update
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:136,1
    - Dst: mail_index_sync_add_keyword_update
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:139,1
    - Dst: mail_index_sync_add_keyword_reset
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:142,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 126
    functionDepth: 6
    functionLinenumber: 126
    functionLinenumberEnd: 148
    functionName: mail_index_sync_add_transaction
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_add_keyword_reset
    - mail_index_sync_add_expunge_guid
    - mail_index_sync_add_flag_update
    - mail_index_sync_add_keyword_update
    - mail_index_sync_add_expunge
    linkageType: ''
    returnType: bool
    signature: bool mail_index_sync_add_transaction(struct mail_index_sync_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:156,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:158,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:160,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 167
    functionName: mail_index_sync_add_dirty_updates
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_update_flags
    - mail_index_view_get_messages_count
    - mail_index_lookup
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_add_dirty_updates(struct mail_index_sync_ctx *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_add_dirty_updates
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:182,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:188,1
    - Dst: if
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:199,1
    - Dst: mail_index_sync_add_transaction
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:199,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:212,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:213,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:214,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:216,1
    - Dst: mail_index_transaction_sort_expunges
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:217,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:218,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:222,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:223,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:228,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:230,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:231,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:236,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:237,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 169
    functionDepth: 7
    functionLinenumber: 169
    functionLinenumberEnd: 246
    functionName: mail_index_sync_read_and_sort
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - i_array_init
    - array_append_space
    - mail_index_sync_add_transaction
    - if
    - array_count
    - array_front
    - mail_index_transaction_sort_expunges
    - array_is_created
    - mail_index_sync_add_dirty_updates
    linkageType: ''
    returnType: int
    signature: int mail_index_sync_read_and_sort(struct mail_index_sync_ctx *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_get_head
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:268,1
    - Dst: mail_cache_need_purge
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:281,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 15
    argCount: 4
    argNames:
    - index
    - flags
    - log_file_seq
    - log_file_offset
    argTypes:
    - struct mail_index*
    - enum mail_index_sync_flags
    - uint32_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 282
    functionName: mail_index_need_sync
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_cache_need_purge
    - mail_transaction_log_get_head
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_need_sync(struct mail_index *index, enum mail_index_sync_flags
      flags,\n\t\t     uint32_t log_file_seq, uoff_t log_file_offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_get_head
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:294,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:296,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - view
    - start_file_seq
    - start_file_offset
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 310
    functionName: mail_index_sync_set_log_view
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_set_error
    - mail_transaction_log_view_set
    - mail_transaction_log_get_head
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_set_log_view(struct mail_index_view *view,\n\t\t\t
      \    uint32_t start_file_seq, uoff_t start_file_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_begin_to
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:320,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - index
    - ctx_r
    - view_r
    - trans_r
    - flags
    argTypes:
    - struct mail_index*
    - struct mail_index_sync_ctx**
    - struct mail_index_view**
    - struct mail_index_transaction**
    - enum mail_index_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 325
    functionName: mail_index_sync_begin
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_index_sync_begin_to
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_begin(struct mail_index *index,\n\t\t\t  struct
      mail_index_sync_ctx **ctx_r,\n\t\t\t  struct mail_index_view **view_r,\n\t\t\t
      \ struct mail_index_transaction **trans_r,\n\t\t\t  enum mail_index_sync_flags
      flags)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:341,1
    - Dst: mail_index_map
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:354,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:357,1
    - Dst: mail_index_map
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:362,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:364,1
    - Dst: mail_index_need_sync
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:369,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:372,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:379,1
    - Dst: mail_index_sync_begin_init
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:380,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:388,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:397,1
    - Dst: mail_index_fsck_locked
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:400,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 38
    argCount: 4
    argNames:
    - index
    - flags
    - log_file_seq
    - log_file_offset
    argTypes:
    - struct mail_index*
    - enum mail_index_sync_flags
    - uint32_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 327
    functionDepth: 3
    functionLinenumber: 327
    functionLinenumberEnd: 403
    functionName: mail_index_sync_begin_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 1
    functionsReached:
    - mail_transaction_log_sync_lock
    - ENUM_NEGATE
    - mail_index_fsck_locked
    - mail_transaction_log_sync_unlock
    - mail_index_sync_begin_init
    - mail_index_need_sync
    - mail_index_set_error
    - mail_index_map
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_begin_init(struct mail_index *index,\n\t\t\t   enum
      mail_index_sync_flags flags,\n\t\t\t   uint32_t log_file_seq, uoff_t log_file_offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:419,1
    - Dst: mail_index_sync_begin_init
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 8
    argNames:
    - index
    - ctx_r
    - view_r
    - trans_r
    - log_file_seq
    - log_file_offset
    - flags
    - retry_r
    argTypes:
    - struct mail_index*
    - struct mail_index_sync_ctx**
    - struct mail_index_view**
    - struct mail_index_transaction**
    - uint32_t
    - uoff_t
    - enum mail_index_sync_flags
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 405
    functionDepth: 4
    functionLinenumber: 405
    functionLinenumberEnd: 435
    functionName: mail_index_sync_begin_to2
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_index_sync_begin_init
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_begin_to2(struct mail_index *index,\n\t\t\t  struct
      mail_index_sync_ctx **ctx_r,\n\t\t\t  struct mail_index_view **view_r,\n\t\t\t
      \ struct mail_index_transaction **trans_r,\n\t\t\t  uint32_t log_file_seq, uoff_t
      log_file_offset,\n\t\t\t  enum mail_index_sync_flags flags, bool *retry_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:508,1
    - Dst: mail_index_sync_begin_to2
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:510,1
    - Dst: mail_index_sync_begin_to2
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 7
    argNames:
    - index
    - ctx_r
    - view_r
    - trans_r
    - log_file_seq
    - log_file_offset
    - flags
    argTypes:
    - struct mail_index*
    - struct mail_index_sync_ctx**
    - struct mail_index_view**
    - struct mail_index_transaction**
    - uint32_t
    - uoff_t
    - enum mail_index_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 498
    functionDepth: 5
    functionLinenumber: 498
    functionLinenumberEnd: 519
    functionName: mail_index_sync_begin_to
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 1
    functionsReached:
    - mail_index_sync_begin_to2
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_index_sync_begin_to(struct mail_index *index,\n\t\t\t     struct
      mail_index_sync_ctx **ctx_r,\n\t\t\t     struct mail_index_view **view_r,\n\t\t\t
      \    struct mail_index_transaction **trans_r,\n\t\t\t     uint32_t log_file_seq,
      uoff_t log_file_offset,\n\t\t\t     enum mail_index_sync_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:523,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 525
    functionName: mail_index_sync_has_expunges
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool mail_index_sync_has_expunges(struct mail_index_sync_ctx *ctx)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_get_head
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:548,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:555,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:564,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 3
    argNames:
    - view
    - flags
    - expunges_only
    argTypes:
    - struct mail_index_view*
    - enum mail_index_sync_flags
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 591
    functionName: mail_index_sync_view_have_any
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - mail_transaction_log_view_set
    - mail_transaction_log_get_head
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_sync_view_have_any(struct mail_index_view *view,\n\t\t\t\t\t
      \ enum mail_index_sync_flags flags,\n\t\t\t\t\t  bool expunges_only)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:599,1
    - Dst: mail_index_sync_view_have_any
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:600,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - index
    - flags
    argTypes:
    - struct mail_index*
    - enum mail_index_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 603
    functionName: mail_index_sync_have_any
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_view_open
    - mail_index_view_close
    - mail_index_sync_view_have_any
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_sync_have_any(struct mail_index *index,\n\t\t\t      enum
      mail_index_sync_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:610,1
    - Dst: mail_index_sync_view_have_any
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:611,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 605
    functionDepth: 2
    functionLinenumber: 605
    functionLinenumberEnd: 614
    functionName: mail_index_sync_have_any_expunges
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_view_open
    - mail_index_view_close
    - mail_index_sync_view_have_any
    linkageType: ''
    returnType: bool
    signature: bool mail_index_sync_have_any_expunges(struct mail_index *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_get_head
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - ctx
    - seq1_r
    - offset1_r
    - seq2_r
    - offset2_r
    argTypes:
    - struct mail_index_sync_ctx*
    - uint32_t*
    - uoff_t*
    - uint32_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 625
    functionName: mail_index_sync_get_offsets
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_get_head
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_get_offsets(struct mail_index_sync_ctx *ctx,\n\t\t\t\t
      uint32_t *seq1_r, uoff_t *offset1_r,\n\t\t\t\t uint32_t *seq2_r, uoff_t *offset2_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rec
    - exp
    argTypes:
    - struct mail_index_sync_rec*
    - struct mail_transaction_expunge_guid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 635
    functionName: mail_index_sync_get_expunge
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_get_expunge(struct mail_index_sync_rec *rec,\n\t\t\t
      \   const struct mail_transaction_expunge_guid *exp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rec
    - update
    argTypes:
    - struct mail_index_sync_rec*
    - struct mail_index_flag_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 647
    functionName: mail_index_sync_get_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_get_update(struct mail_index_sync_rec *rec,\n\t\t\t
      \  const struct mail_index_flag_update *update)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rec
    - range
    - sync_list
    argTypes:
    - struct mail_index_sync_rec*
    - struct uid_range*
    - struct mail_index_sync_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 649
    functionDepth: 0
    functionLinenumber: 649
    functionLinenumberEnd: 660
    functionName: mail_index_sync_get_keyword_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_get_keyword_update(struct mail_index_sync_rec
      *rec,\n\t\t\t\t   const struct uid_range *range,\n\t\t\t\t   struct mail_index_sync_list
      *sync_list)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:679,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:681,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:682,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:685,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:704,1
    - Dst: mail_index_sync_get_expunge
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:708,1
    - Dst: mail_index_sync_get_update
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:711,1
    - Dst: mail_index_sync_get_keyword_update
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:714,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - sync_rec
    argTypes:
    - struct mail_index_sync_ctx*
    - struct mail_index_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 662
    functionDepth: 2
    functionLinenumber: 662
    functionLinenumberEnd: 719
    functionName: mail_index_sync_next
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_get_keyword_update
    - mail_index_sync_get_update
    - array_idx
    - array_get_modifiable
    - array_count
    - array_is_created
    - mail_index_sync_get_expunge
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_sync_next(struct mail_index_sync_ctx *ctx,\n\t\t\t
      \ struct mail_index_sync_rec *sync_rec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:725,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:726,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:727,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 731
    functionName: mail_index_sync_have_more
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: bool mail_index_sync_have_more(struct mail_index_sync_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct mail_index_sync_ctx*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 733
    functionDepth: 0
    functionLinenumber: 733
    functionLinenumberEnd: 737
    functionName: mail_index_sync_set_commit_result
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_set_commit_result(struct mail_index_sync_ctx
      *ctx,\n\t\t\t\t       struct mail_index_transaction_commit_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 739
    functionDepth: 0
    functionLinenumber: 739
    functionLinenumberEnd: 746
    functionName: mail_index_sync_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_reset(struct mail_index_sync_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 751
    functionName: mail_index_sync_no_warning
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_no_warning(struct mail_index_sync_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:756,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - reason
    argTypes:
    - struct mail_index_sync_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 758
    functionName: mail_index_sync_set_reason
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_set_reason(struct mail_index_sync_ctx *ctx,\n\t\t\t\tconst
      char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:765,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:776,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:778,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:779,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:780,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:781,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:782,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:783,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_index_sync_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 784
    functionName: mail_index_sync_end
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - i_free
    - mail_transaction_log_sync_unlock
    - mail_index_transaction_rollback
    - array_is_created
    - i_assert
    - array_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_end(struct mail_index_sync_ctx **_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_get_head
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:815,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:817,1
    - Dst: mail_transaction_log_set_mailbox_sync_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:820,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 786
    functionDepth: 2
    functionLinenumber: 786
    functionLinenumberEnd: 838
    functionName: mail_index_sync_update_mailbox_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_get_prev_pos
    - mail_transaction_log_set_mailbox_sync_pos
    - mail_transaction_log_get_head
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_update_mailbox_offset(struct mail_index_sync_ctx
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:856,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:865,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:874,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - index
    - reason_r
    argTypes:
    - struct mail_index*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 879
    functionName: mail_index_sync_want_index_write
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: bool mail_index_sync_want_index_write(struct mail_index *index, const
      char **reason_r)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_set_deleted
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:896,1
    - Dst: mail_index_set_error_nolog
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:901,1
    - Dst: mail_index_sync_update_mailbox_offset
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:905,1
    - Dst: mail_index_transaction_get_next_uid
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:908,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:910,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:923,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:929,1
    - Dst: mail_index_sync_end
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:931,1
    - Dst: mail_index_map
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:946,1
    - Dst: mail_cache_need_purge
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:953,1
    - Dst: mail_cache_transactions_have_changes
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:954,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:955,1
    - Dst: mail_index_map
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:967,1
    - Dst: mail_transaction_log_want_rotate
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:978,1
    - Dst: mail_index_sync_want_index_write
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:980,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:981,1
    - Dst: mail_index_write
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:983,1
    - Dst: mail_index_sync_end
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:985,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 50
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_index_sync_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 881
    functionDepth: 4
    functionLinenumber: 881
    functionLinenumberEnd: 987
    functionName: mail_index_sync_commit
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_end
    - mail_transaction_log_want_rotate
    - mail_index_update_header
    - mail_index_transaction_commit
    - mail_index_write
    - mail_cache_need_purge
    - mail_cache_transactions_have_changes
    - mail_cache_purge
    - mail_index_set_deleted
    - mail_index_sync_want_index_write
    - mail_index_transaction_get_next_uid
    - i_free
    - mail_index_sync_update_mailbox_offset
    - mail_index_set_error_nolog
    - mail_index_map
    linkageType: ''
    returnType: int
    signature: int mail_index_sync_commit(struct mail_index_sync_ctx **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:992,1
    - Dst: mail_index_sync_end
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_sync_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 989
    functionDepth: 3
    functionLinenumber: 989
    functionLinenumberEnd: 994
    functionName: mail_index_sync_rollback
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_rollback
    - mail_index_sync_end
    linkageType: ''
    returnType: void
    signature: void mail_index_sync_rollback(struct mail_index_sync_ctx **ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sync_rec
    - flags
    argTypes:
    - struct mail_index_sync_rec*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1002
    functionName: mail_index_sync_flags_apply
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_flags_apply(const struct mail_index_sync_rec
      *sync_rec,\n\t\t\t\t uint8_t *flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1011,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1019,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1024,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1030,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - sync_rec
    - keywords
    argTypes:
    - struct mail_index_sync_rec*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1004
    functionDepth: 1
    functionLinenumber: 1004
    functionLinenumberEnd: 1033
    functionName: mail_index_sync_keywords_apply
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - i_unreached
    - array_push_back
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_sync_keywords_apply(const struct mail_index_sync_rec
      *sync_rec,\n\t\t\t\t    ARRAY_TYPE(keyword_indexes) *keywords)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1043,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1044,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1045,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1055,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1063,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-sync.c:1069,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - fmt
    argTypes:
    - struct mail_index_sync_map_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1070
    functionName: mail_index_sync_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-sync.c
    functionUses: 11
    functionsReached:
    - va_start
    - i_strdup_vprintf
    - mail_transaction_log_view_get_prev_pos
    - i_free
    - mail_index_set_error
    - va_end
    linkageType: ''
    returnType: void
    signature: "void mail_index_sync_set_corrupted(struct mail_index_sync_map_ctx
      *ctx,\n\t\t\t\t   const char *fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:18,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:19,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hook
    argTypes:
    - hook_mail_index_transaction_created_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: mail_index_transaction_hook_register
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_hook_register(hook_mail_index_transaction_created_t
      *hook)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:28,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:28,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:29,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:31,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:33,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:38,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:39,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:40,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - hook
    argTypes:
    - hook_mail_index_transaction_created_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 41
    functionName: mail_index_transaction_hook_unregister
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_count
    - array_idx_elem
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_hook_unregister(hook_mail_index_transaction_created_t
      *hook)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: mail_index_transaction_get_view
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mail_index_view
    signature: 'struct mail_index_view *

      mail_index_transaction_get_view(struct mail_index_transaction *t)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:55,1
    - Dst: mail_index_transaction_sort_expunges
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:59,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 64
    functionName: mail_index_transaction_is_expunged
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 1
    functionsReached:
    - mail_index_transaction_sort_expunges
    - array_is_created
    - array_bsearch
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_transaction_is_expunged(struct mail_index_transaction
      *t,\n\t\t\t\t\tuint32_t seq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: mail_index_transaction_ref
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_ref(struct mail_index_transaction *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_reset_v
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:79,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:81,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:82,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:84,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:85,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _t
    argTypes:
    - struct mail_index_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 87
    functionName: mail_index_transaction_unref
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 1
    functionsReached:
    - array_free
    - DLLIST_REMOVE
    - mail_index_transaction_reset_v
    - i_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_unref(struct mail_index_transaction **_t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:99,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 120
    functionName: mail_index_transaction_get_next_uid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 2
    functionsReached:
    - array_is_created
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_index_transaction_get_next_uid(struct mail_index_transaction
      *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:129,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:134,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:135,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:137,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:138,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - t
    - seq
    - keywords
    argTypes:
    - struct mail_index_transaction*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 141
    functionName: mail_index_transaction_lookup_latest_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 2
    functionsReached:
    - mail_index_lookup_uid
    - mail_index_lookup_seq
    - mail_index_view_open
    - mail_index_lookup_keywords
    - mail_index_refresh
    linkageType: ''
    returnType: void
    signature: "void mail_index_transaction_lookup_latest_keywords(struct mail_index_transaction
      *t,\n\t\t\t\t\t\t   uint32_t seq,\n\t\t\t\t\t\t   ARRAY_TYPE(keyword_indexes)
      *keywords)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_rotate
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:153,1
    - Dst: mail_index_map
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:159,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - t
    - ctx
    argTypes:
    - struct mail_index_transaction*
    - struct mail_transaction_log_append_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 165
    functionName: mail_transaction_log_file_refresh
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_index_map
    - mail_transaction_log_rotate
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_file_refresh(struct mail_index_transaction
      *t,\n\t\t\t\t  struct mail_transaction_log_append_ctx *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_append_begin
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:186,1
    - Dst: mail_transaction_log_file_refresh
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:188,1
    - Dst: mail_index_transaction_finish
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:190,1
    - Dst: mail_index_transaction_export
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:191,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - t
    - commit_size_r
    - changes_r
    argTypes:
    - struct mail_index_transaction*
    - uoff_t*
    - enum mail_index_transaction_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 167
    functionDepth: 7
    functionLinenumber: 167
    functionLinenumberEnd: 192
    functionName: mail_index_transaction_commit_real
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_file_refresh
    - mail_index_transaction_finish
    - mail_transaction_log_append_begin
    - mail_index_transaction_export
    linkageType: ''
    returnType: int
    signature: "int mail_index_transaction_commit_real(struct mail_index_transaction
      *t,\n\t\t\t\t   uoff_t *commit_size_r,\n\t\t\t\t   enum mail_index_transaction_change
      *changes_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:224,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:225,1
    - Dst: MAIL_INDEX_TRANSACTION_HAS_CHANGES
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:227,1
    - Dst: mail_index_transaction_commit_real
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - t
    - result_r
    argTypes:
    - struct mail_index_transaction*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 8
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: mail_index_transaction_commit_v
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_TRANSACTION_HAS_CHANGES
    - mail_index_transaction_commit_real
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: "int mail_index_transaction_commit_v(struct mail_index_transaction
      *t,\n\t\t\t\t\t   struct mail_index_transaction_commit_result *result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_unref
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 256
    functionDepth: 3
    functionLinenumber: 256
    functionLinenumberEnd: 259
    functionName: mail_index_transaction_rollback_v
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_unref
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_rollback_v(struct mail_index_transaction
      *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_commit_full
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 266
    functionName: mail_index_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 22
    functionsReached:
    - mail_index_transaction_commit_full
    linkageType: ''
    returnType: int
    signature: int mail_index_transaction_commit(struct mail_index_transaction **t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_is_inconsistent
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:275,1
    - Dst: mail_index_set_error_nolog
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:276,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:277,1
    - Dst: mail_index_set_error_nolog
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:285,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:286,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:292,1
    - Dst: struct mail_index_transaction*::v::commit
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:293,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - _t
    - result_r
    argTypes:
    - struct mail_index_transaction**
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 301
    functionName: mail_index_transaction_commit_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 1
    functionsReached:
    - i_zero
    - struct mail_index_transaction*::v::commit
    - mail_index_view_is_inconsistent
    - mail_index_transaction_rollback
    - mail_index_set_error_nolog
    linkageType: ''
    returnType: int
    signature: "int mail_index_transaction_commit_full(struct mail_index_transaction
      **_t,\n\t\t\t\t       struct mail_index_transaction_commit_result *result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_transaction*::v::rollback
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _t
    argTypes:
    - struct mail_index_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 309
    functionName: mail_index_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 5
    functionsReached:
    - struct mail_index_transaction*::v::rollback
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_rollback(struct mail_index_transaction
      **_t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_ref
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:324,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:326,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:339,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:342,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:343,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:344,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:346,1
    - Dst: hook_build_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:348,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:350,1
    - Dst: callback
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:351,1
    - Dst: hook_build_update
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:352,1
    - Dst: hook_build_deinit
      Src: /src/dovecot/src/lib-index/mail-index-transaction.c:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 2
    argNames:
    - view
    - flags
    argTypes:
    - struct mail_index_view*
    - enum mail_index_transaction_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 358
    functionName: mail_index_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction.c
    functionUses: 22
    functionsReached:
    - i_array_init
    - array_foreach_elem
    - hook_build_deinit
    - I_MIN
    - hook_build_init
    - DLLIST_PREPEND
    - i_new
    - callback
    - array_is_created
    - mail_index_view_ref
    - mail_index_view_get_messages_count
    - hook_build_update
    linkageType: ''
    returnType: struct mail_index_transaction
    signature: "struct mail_index_transaction *\nmail_index_transaction_begin(struct
      mail_index_view *view,\n\t\t\t     enum mail_index_transaction_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: CACHE_TRANS_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CACHE_TRANS_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: CACHE_TRANS_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CACHE_TRANS_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CACHE_TRANS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:66,1
    - Dst: mail_cache_transaction_reset
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:69,1
    - Dst: struct mail_index_transaction_vfuncs::reset
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: mail_index_transaction_cache_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - struct mail_index_transaction_vfuncs::reset
    - CACHE_TRANS_CONTEXT_REQUIRE
    - mail_cache_transaction_reset
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_cache_reset(struct mail_index_transaction
      *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CACHE_TRANS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:77,1
    - Dst: mail_cache_transaction_commit
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:82,1
    - Dst: struct mail_index_transaction_vfuncs::commit
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - t
    - result_r
    argTypes:
    - struct mail_index_transaction*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 84
    functionName: mail_index_transaction_cache_commit
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - CACHE_TRANS_CONTEXT_REQUIRE
    - struct mail_index_transaction_vfuncs::commit
    - mail_cache_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int mail_index_transaction_cache_commit(struct mail_index_transaction
      *t,\n\t\t\t\t    struct mail_index_transaction_commit_result *result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CACHE_TRANS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:89,1
    - Dst: mail_cache_transaction_rollback
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:92,1
    - Dst: struct mail_index_transaction_vfuncs::rollback
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 94
    functionName: mail_index_transaction_cache_rollback
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - CACHE_TRANS_CONTEXT_REQUIRE
    - mail_cache_transaction_rollback
    - struct mail_index_transaction_vfuncs::rollback
    linkageType: ''
    returnType: void
    signature: void mail_index_transaction_cache_rollback(struct mail_index_transaction
      *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CACHE_TRANS_CONTEXT
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:103,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:108,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:113,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:115,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - view
    - t
    argTypes:
    - struct mail_cache_view*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 124
    functionName: mail_cache_get_transaction
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 8
    functionsReached:
    - mail_index_transaction_open_updated_view
    - MODULE_CONTEXT_SET
    - CACHE_TRANS_CONTEXT
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct mail_cache_transaction_ctx
    signature: "struct mail_cache_transaction_ctx *\nmail_cache_get_transaction(struct
      mail_cache_view *view,\n\t\t\t   struct mail_index_transaction *t)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:130,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:133,1
    - Dst: mail_index_ext_set_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - reset_id_changed
    argTypes:
    - struct mail_cache_transaction_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 144
    functionName: mail_cache_transaction_forget_flushed
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_set_reset_id
    - e_warning
    - MAIL_CACHE_IS_UNUSABLE
    linkageType: ''
    returnType: void
    signature: "void mail_cache_transaction_forget_flushed(struct mail_cache_transaction_ctx
      *ctx,\n\t\t\t\t      bool reset_id_changed)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_forget_flushed
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:148,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:150,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:151,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_transaction_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 157
    functionName: mail_cache_transaction_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - mail_cache_transaction_forget_flushed
    - array_clear
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void mail_cache_transaction_reset(struct mail_cache_transaction_ctx
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_lock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:168,1
    - Dst: mail_cache_flush_and_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:172,1
    - Dst: MODULE_CONTEXT_UNSET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:176,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:181,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:182,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:183,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:184,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:185,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:186,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:187,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_cache_transaction_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 189
    functionName: mail_cache_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 1
    functionsReached:
    - mail_cache_transaction_lock
    - mail_cache_flush_and_unlock
    - array_is_created
    - MODULE_CONTEXT_UNSET
    - buffer_free
    - i_free
    - array_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void mail_cache_transaction_rollback(struct mail_cache_transaction_ctx
      **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 201
    functionName: mail_cache_transactions_have_changes
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_transactions_have_changes(struct mail_cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:212,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:214,1
    - Dst: mail_cache_transaction_forget_flushed
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - reason
    argTypes:
    - struct mail_cache_transaction_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 219
    functionName: mail_cache_transaction_purge
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - MAIL_CACHE_IS_UNUSABLE
    - mail_cache_purge
    - mail_cache_transaction_forget_flushed
    linkageType: ''
    returnType: int
    signature: "int mail_cache_transaction_purge(struct mail_cache_transaction_ctx
      *ctx,\n\t\t\t     const char *reason)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_lock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:228,1
    - Dst: mail_cache_transaction_purge
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:233,1
    - Dst: mail_cache_transaction_lock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:235,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:240,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:240,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:248,1
    - Dst: mail_cache_transaction_purge
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:249,1
    - Dst: mail_cache_transaction_lock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:250,1
    - Dst: mail_cache_transaction_forget_flushed
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:259,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:260,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_transaction_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 221
    functionDepth: 9
    functionLinenumber: 221
    functionLinenumberEnd: 263
    functionName: mail_cache_transaction_lock
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 2
    functionsReached:
    - mail_cache_unlock
    - mail_cache_transaction_forget_flushed
    - mail_cache_transaction_lock
    - mail_cache_lock
    - MAIL_CACHE_IS_UNUSABLE
    - i_assert
    - mail_cache_transaction_purge
    linkageType: ''
    returnType: int
    signature: int mail_cache_transaction_lock(struct mail_cache_transaction_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:273,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:277,1
    - Dst: mail_cache_transaction_update_last_rec_size
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:286,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:288,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - seq
    - trans_next_idx
    argTypes:
    - struct mail_cache_transaction_ctx*
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 292
    functionName: mail_cache_transaction_lookup_rec
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 1
    functionsReached:
    - mail_cache_transaction_update_last_rec_size
    - array_get
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: struct mail_cache_record
    signature: "struct mail_cache_record *\nmail_cache_transaction_lookup_rec(struct
      mail_cache_transaction_ctx *ctx,\n\t\t\t\t  unsigned int seq,\n\t\t\t\t  unsigned
      int *trans_next_idx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:316,1
    - Dst: mail_index_ext_using_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:320,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:326,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:328,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:332,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:336,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:337,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - write_offset
    - committing
    argTypes:
    - struct mail_cache_transaction_ctx*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 294
    functionDepth: 5
    functionLinenumber: 294
    functionLinenumberEnd: 343
    functionName: mail_cache_transaction_update_index
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - array_get
    - mail_index_update_ext
    - i_assert
    - CONST_PTR_OFFSET
    - mail_index_ext_using_reset_id
    linkageType: ''
    returnType: void
    signature: "void mail_cache_transaction_update_index(struct mail_cache_transaction_ctx
      *ctx,\n\t\t\t\t    uint32_t write_offset, bool committing)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:357,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:359,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:360,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:361,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:363,1
    - Dst: mail_index_lookup_ext_full
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:368,1
    - Dst: mail_index_ext_get_reset_id
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:375,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:383,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:385,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:400,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:402,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - write_offset
    argTypes:
    - struct mail_cache_transaction_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 405
    functionName: mail_cache_link_records
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - PTR_OFFSET
    - array_get
    - mail_index_lookup_ext_full
    - buffer_get_modifiable_data
    - array_idx_get_space
    - mail_cache_set_corrupted
    - i_assert
    - array_free
    - mail_index_ext_get_reset_id
    linkageType: ''
    returnType: int
    signature: "int mail_cache_link_records(struct mail_cache_transaction_ctx *ctx,\n\t\t\tuint32_t
      write_offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:414,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:415,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_transaction_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 424
    functionName: mail_cache_transaction_set_used
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_transaction_set_used(struct mail_cache_transaction_ctx
      *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_set_used
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:433,1
    - Dst: mail_cache_header_rewrite_fields
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:435,1
    - Dst: mail_cache_transaction_set_used
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:438,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:439,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:451,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:452,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:457,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:468,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:475,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:483,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_transaction_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 426
    functionDepth: 2
    functionLinenumber: 426
    functionLinenumberEnd: 485
    functionName: mail_cache_transaction_update_fields
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_cache_transaction_set_used
    - CONST_PTR_OFFSET
    - buffer_get_modifiable_data
    - mail_cache_header_rewrite_fields
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: int mail_cache_transaction_update_fields(struct mail_cache_transaction_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:490,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:492,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:497,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_transaction_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 499
    functionName: mail_cache_transaction_drop_last_flush
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - buffer_copy
    - array_clear
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void mail_cache_transaction_drop_last_flush(struct mail_cache_transaction_ctx
      *ctx)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:509,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:511,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:513,1
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:526,1
    - Dst: mail_cache_transaction_lock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:532,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:534,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:540,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:541,1
    - Dst: mail_cache_transaction_update_fields
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:543,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:545,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:548,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:553,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:554,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:555,1
    - Dst: mail_cache_set_corrupted
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:558,1
    - Dst: mail_cache_link_records
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:562,1
    - Dst: mail_cache_append
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:568,1
    - Dst: mail_cache_transaction_update_index
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:573,1
    - Dst: mail_cache_flush_and_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:576,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:580,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 49
    argCount: 2
    argNames:
    - ctx
    - committing
    argTypes:
    - struct mail_cache_transaction_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 501
    functionDepth: 10
    functionLinenumber: 501
    functionLinenumberEnd: 584
    functionName: mail_cache_transaction_flush
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - mail_transaction_log_sync_lock
    - mail_cache_unlock
    - mail_cache_transaction_lock
    - mail_cache_transaction_update_fields
    - mail_transaction_log_sync_unlock
    - ESTALE_FSTAT
    - mail_cache_flush_and_unlock
    - array_count
    - fstat
    - mail_cache_link_records
    - mail_cache_set_corrupted
    - i_assert
    - mail_cache_append
    - mail_cache_transaction_update_index
    linkageType: ''
    returnType: int
    signature: "int mail_cache_transaction_flush(struct mail_cache_transaction_ctx
      *ctx,\n\t\t\t     bool committing)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:593,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:597,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:602,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:612,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:613,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - space_needed
    argTypes:
    - struct mail_cache_transaction_ctx*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 614
    functionName: mail_cache_transaction_drop_unwanted
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - array_delete
    - seq_range_exists
    - array_get_modifiable
    - buffer_delete
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: "void mail_cache_transaction_drop_unwanted(struct mail_cache_transaction_ctx
      *ctx,\n\t\t\t\t     size_t space_needed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:624,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:625,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - size_r
    argTypes:
    - struct mail_cache_transaction_ctx*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 632
    functionName: mail_cache_transaction_update_last_rec_size
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 1
    functionsReached:
    - PTR_OFFSET
    - i_assert
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: bool
    signature: "bool mail_cache_transaction_update_last_rec_size(struct mail_cache_transaction_ctx
      *ctx,\n\t\t\t\t\t    size_t *size_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_update_last_rec_size
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:640,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:642,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:648,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_transaction_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 634
    functionDepth: 2
    functionLinenumber: 634
    functionLinenumberEnd: 652
    functionName: mail_cache_transaction_update_last_rec
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - mail_cache_transaction_update_last_rec_size
    - array_append_space
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void mail_cache_transaction_update_last_rec(struct mail_cache_transaction_ctx
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_update_last_rec
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:661,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:664,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:666,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:667,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:668,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:671,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_transaction_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 654
    functionDepth: 3
    functionLinenumber: 654
    functionLinenumberEnd: 676
    functionName: mail_cache_transaction_switch_seq
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - buffer_append
    - i_zero
    - buffer_create_dynamic
    - mail_cache_transaction_update_last_rec
    linkageType: ''
    returnType: void
    signature: void mail_cache_transaction_switch_seq(struct mail_cache_transaction_ctx
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_update_last_rec
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:685,1
    - Dst: mail_cache_transaction_flush
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:686,1
    - Dst: mail_cache_transaction_rollback
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:698,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_cache_transaction_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 678
    functionDepth: 11
    functionLinenumber: 678
    functionLinenumberEnd: 700
    functionName: mail_cache_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 1
    functionsReached:
    - mail_cache_transaction_update_last_rec
    - mail_cache_transaction_rollback
    - mail_cache_transaction_flush
    linkageType: ''
    returnType: int
    signature: int mail_cache_transaction_commit(struct mail_cache_transaction_ctx
      **_ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:707,1
    - Dst: mail_cache_append
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:710,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:714,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:715,1
    - Dst: mail_cache_header_fields_get_next_offset
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:720,1
    - Dst: mail_index_uint32_to_offset
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:724,1
    - Dst: mail_cache_write
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:725,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - cache
    - buffer
    argTypes:
    - struct mail_cache*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 702
    functionDepth: 10
    functionLinenumber: 702
    functionLinenumberEnd: 736
    functionName: mail_cache_header_fields_write
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - fdatasync
    - mail_cache_write
    - mail_index_uint32_to_offset
    - i_assert
    - mail_cache_append
    - mail_cache_header_fields_get_next_offset
    linkageType: ''
    returnType: int
    signature: int mail_cache_header_fields_write(struct mail_cache *cache, const
      buffer_t *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:743,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:749,1
    - Dst: mail_cache_header_fields_get
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:750,1
    - Dst: mail_cache_header_fields_write
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 738
    functionDepth: 11
    functionLinenumber: 738
    functionLinenumberEnd: 752
    functionName: mail_cache_header_rewrite_fields
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 1
    functionsReached:
    - mail_cache_header_fields_get
    - mail_cache_header_fields_read
    - t_buffer_create
    - mail_cache_header_fields_write
    linkageType: ''
    returnType: int
    signature: int mail_cache_header_rewrite_fields(struct mail_cache *cache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:771,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:773,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_cache_transaction_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 762
    functionDepth: 10
    functionLinenumber: 762
    functionLinenumberEnd: 775
    functionName: mail_cache_transaction_refresh_decisions
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - mail_cache_header_fields_read
    - mail_cache_open_and_verify
    linkageType: ''
    returnType: void
    signature: void mail_cache_transaction_refresh_decisions(struct mail_cache_transaction_ctx
      *ctx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:784,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:785,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:787,1
    - Dst: mail_cache_transaction_refresh_decisions
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:795,1
    - Dst: mail_cache_decision_add
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:800,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:805,1
    - Dst: mail_cache_transaction_switch_seq
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:813,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:815,1
    - Dst: mail_cache_transaction_update_last_rec_size
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:825,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:838,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:842,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:848,1
    - Dst: mail_cache_transaction_drop_unwanted
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:852,1
    - Dst: mail_cache_transaction_flush
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:854,1
    - Dst: mail_cache_transaction_drop_last_flush
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:869,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:873,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:875,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:879,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:881,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 5
    argNames:
    - ctx
    - seq
    - field_idx
    - data
    - data_size
    argTypes:
    - struct mail_cache_transaction_ctx*
    - uint32_t
    - unsigned int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 777
    functionDepth: 11
    functionLinenumber: 777
    functionLinenumberEnd: 882
    functionName: mail_cache_add
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 8
    functionsReached:
    - seq_range_array_add
    - mail_cache_decision_add
    - array_idx_set
    - mail_cache_transaction_flush
    - buffer_append
    - mail_cache_transaction_drop_unwanted
    - MAIL_INDEX_IS_IN_MEMORY
    - buffer_append_zero
    - buffer_write
    - mail_cache_transaction_update_last_rec_size
    - mail_cache_field_can_add
    - mail_cache_transaction_drop_last_flush
    - i_assert
    - mail_cache_transaction_switch_seq
    - mail_cache_transaction_refresh_decisions
    linkageType: ''
    returnType: void
    signature: "void mail_cache_add(struct mail_cache_transaction_ctx *ctx, uint32_t
      seq,\n\t\t    unsigned int field_idx, const void *data, size_t data_size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_refresh_decisions
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:889,1
    - Dst: mail_cache_field_get_decision
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:891,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:892,1
    - Dst: mail_cache_get_first_new_seq
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:901,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:910,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - seq
    - field_idx
    argTypes:
    - struct mail_cache_transaction_ctx*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 884
    functionDepth: 11
    functionLinenumber: 884
    functionLinenumberEnd: 911
    functionName: mail_cache_field_want_add
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - mail_cache_get_first_new_seq
    - ENUM_NEGATE
    - mail_cache_field_exists
    - mail_cache_field_get_decision
    - mail_cache_transaction_refresh_decisions
    linkageType: ''
    returnType: bool
    signature: "bool mail_cache_field_want_add(struct mail_cache_transaction_ctx *ctx,\n\t\t\t
      \      uint32_t seq, unsigned int field_idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_transaction_refresh_decisions
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:918,1
    - Dst: mail_cache_field_get_decision
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:920,1
    - Dst: mail_cache_register_get_field
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:925,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:929,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - seq
    - field_idx
    argTypes:
    - struct mail_cache_transaction_ctx*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 913
    functionDepth: 11
    functionLinenumber: 913
    functionLinenumberEnd: 930
    functionName: mail_cache_field_can_add
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 1
    functionsReached:
    - mail_cache_field_get_decision
    - mail_cache_field_exists
    - mail_cache_register_get_field
    - mail_cache_transaction_refresh_decisions
    linkageType: ''
    returnType: bool
    signature: "bool mail_cache_field_can_add(struct mail_cache_transaction_ctx *ctx,\n\t\t\t
      \     uint32_t seq, unsigned int field_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:935,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-index/mail-cache-transaction.c:936,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - seq
    argTypes:
    - struct mail_cache_transaction_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 937
    functionName: mail_cache_close_mail
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-transaction.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: "void mail_cache_close_mail(struct mail_cache_transaction_ctx *ctx,\n\t\t\t
      \  uint32_t seq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:36,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - field
    argTypes:
    - struct mail_cache_copy_context*
    - struct mail_cache_iterate_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 45
    functionName: mail_cache_merge_bitmask
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - buffer_get_space_unsafe
    - array_idx_get_space
    linkageType: ''
    returnType: void
    signature: "void mail_cache_merge_bitmask(struct mail_cache_copy_context *ctx,\n\t\t\t
      const struct mail_cache_iterate_field *field)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:62,1
    - Dst: mail_cache_merge_bitmask
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:67,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:72,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:81,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:85,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:92,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:94,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:96,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - field
    argTypes:
    - struct mail_cache_copy_context*
    - struct mail_cache_iterate_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 97
    functionName: mail_cache_purge_field
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - buffer_append
    - buffer_append_zero
    - ENUM_NEGATE
    - buffer_get_space_unsafe
    - mail_cache_merge_bitmask
    linkageType: ''
    returnType: void
    signature: "void mail_cache_purge_field(struct mail_cache_copy_context *ctx,\n\t\t
      \      const struct mail_cache_iterate_field *field)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:106,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:109,1
    - Dst: mail_index_view_get_ext
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:110,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 118
    functionName: get_next_file_seq
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_index_view_close
    - mail_index_view_open
    - mail_index_refresh
    - mail_index_view_get_ext
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_next_file_seq(struct mail_cache *cache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:129,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:134,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:136,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:140,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:147,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:149,1
    - Dst: mail_cache_header_fields_get
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:150,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - used_fields_count
    argTypes:
    - struct mail_cache_copy_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 120
    functionDepth: 4
    functionLinenumber: 120
    functionLinenumberEnd: 151
    functionName: mail_cache_purge_get_fields
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - memcpy
    - buffer_set_used_size
    - mail_cache_header_fields_get
    - i_new
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mail_cache_purge_get_fields(struct mail_cache_copy_context *ctx,\n\t\t\t
      \   unsigned int used_fields_count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_purge_drop_test
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:160,1
    - Dst: mail_cache_decision_to_string
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:164,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:166,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:171,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:171,1
    - Dst: mail_cache_decision_changed_event
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:179,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:183,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:183,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - field
    argTypes:
    - struct mail_cache_copy_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 199
    functionName: mail_cache_purge_check_field
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - e_debug
    - mail_cache_decision_to_string
    - mail_cache_decision_changed_event
    - struct event_passthrough*::event
    - event_create_passthrough
    - mail_cache_purge_drop_test
    linkageType: ''
    returnType: bool
    signature: "bool mail_cache_purge_check_field(struct mail_cache_copy_context *ctx,\n\t\t\t
      \    unsigned int field)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:219,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:225,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:228,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:229,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:230,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:232,1
    - Dst: get_next_file_seq
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:237,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:238,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:240,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:241,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:242,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:243,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:245,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:248,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:249,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:251,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:252,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:256,1
    - Dst: mail_cache_purge_drop_init
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:257,1
    - Dst: mail_cache_purge_check_field
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:267,1
    - Dst: mail_cache_get_first_new_seq
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:276,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:277,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:286,1
    - Dst: mail_index_transaction_is_expunged
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:288,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:289,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:294,1
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:298,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:298,1
    - Dst: buffer_get_size
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:299,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:302,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:304,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:305,1
    - Dst: mail_cache_lookup_iter_init
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:307,1
    - Dst: mail_cache_lookup_iter_next
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:308,1
    - Dst: mail_cache_purge_field
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:309,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:316,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:319,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:321,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:325,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:327,1
    - Dst: mail_index_uint32_to_offset
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:333,1
    - Dst: mail_cache_purge_get_fields
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:334,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:335,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:339,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:340,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:343,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:344,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:346,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:347,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:349,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:352,1
    - Dst: o_stream_ignore_last_errors
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:355,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:356,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:359,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:361,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:362,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:365,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:368,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:369,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:370,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 119
    argCount: 10
    argNames:
    - cache
    - trans
    - event
    - fd
    - reason
    - file_seq_r
    - file_size_r
    - max_uid_r
    - ext_first_seq_r
    - ext_offsets
    argTypes:
    - struct mail_cache*
    - struct mail_index_transaction*
    - struct event*
    - int
    - char*
    - uint32_t*
    - uoff_t*
    - uint32_t*
    - uint32_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 201
    functionDepth: 10
    functionLinenumber: 201
    functionLinenumberEnd: 377
    functionName: mail_cache_copy
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_cache_view_close
    - t_new
    - o_stream_seek
    - mail_index_lookup_uid
    - event_set_name
    - mail_index_transaction_is_expunged
    - buffer_create_dynamic
    - buffer_write
    - i_unlink
    - buffer_set_used_size
    - array_append_zero
    - mail_cache_lookup_iter_next
    - event_add_int
    - mail_index_set_error
    - mail_cache_purge_drop_init
    - o_stream_ignore_last_errors
    - buffer_append
    - mail_cache_get_first_new_seq
    - buffer_get_size
    - mail_index_transaction_open_updated_view
    - mail_cache_header_fields_read
    - o_stream_nsend
    - mail_cache_view_open
    - event_add_str
    - mail_index_uint32_to_offset
    - buffer_free
    - mail_index_view_close
    - array_free
    - i_zero
    - mail_cache_set_syscall_error
    - mail_cache_purge_get_fields
    - mail_index_get_header
    - o_stream_create_fd_file
    - array_clear
    - mail_cache_lookup_iter_init
    - mail_cache_purge_field
    - memset
    - i_assert
    - mail_cache_purge_check_field
    - o_stream_destroy
    - fdatasync
    - get_next_file_seq
    - e_debug
    - array_push_back
    - o_stream_finish
    - buffer_get_modifiable_data
    - t_array_init
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: "int mail_cache_copy(struct mail_cache *cache, struct mail_index_transaction
      *trans,\n\t\tstruct event *event, int fd, const char *reason,\n\t\tuint32_t
      *file_seq_r, uoff_t *file_size_r, uint32_t *max_uid_r,\n\t\tuint32_t *ext_first_seq_r,
      ARRAY_TYPE(uint32_t) *ext_offsets)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:402,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:403,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:404,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:405,1
    - Dst: mail_cache_copy
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:407,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:410,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:414,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:415,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:416,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:417,1
    - Dst: rename
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:420,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:421,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:422,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:423,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:427,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:428,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:429,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:430,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:433,1
    - Dst: mail_index_ext_reset
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:437,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:438,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:441,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:446,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:449,1
    - Dst: mail_cache_file_close
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:453,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 55
    argCount: 6
    argNames:
    - cache
    - trans
    - fd
    - temp_path
    - reason
    - unlock
    argTypes:
    - struct mail_cache*
    - struct mail_index_transaction*
    - int
    - char*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 379
    functionDepth: 11
    functionLinenumber: 379
    functionLinenumberEnd: 460
    functionName: mail_cache_purge_write
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - rename
    - event_create
    - mail_cache_unlock
    - event_unref
    - mail_cache_file_close
    - event_set_name
    - e_debug
    - array_get
    - mail_index_ext_reset
    - mail_index_update_ext
    - fstat
    - mail_cache_copy
    - array_free
    - event_add_int
    linkageType: ''
    returnType: int
    signature: "int mail_cache_purge_write(struct mail_cache *cache,\n\t\t       struct
      mail_index_transaction *trans,\n\t\t       int fd, const char *temp_path, const
      char *\n\t\t       reason, bool *unlock)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:471,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:476,1
    - Dst: read_full
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:480,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:481,1
    - Dst: mail_cache_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:493,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - cache
    - purge_file_seq
    argTypes:
    - struct mail_cache*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 497
    functionName: mail_cache_purge_has_file_changed
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_syscall_error
    - i_close_fd
    - read_full
    - nfs_safe_open
    linkageType: ''
    returnType: int
    signature: "int mail_cache_purge_has_file_changed(struct mail_cache *cache,\n\t\t\t\t
      \ uint32_t purge_file_seq)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_purge_has_file_changed
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:510,1
    - Dst: mail_cache_purge_later_reset
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:515,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:518,1
    - Dst: mail_cache_reopen
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:522,1
    - Dst: mail_cache_map_all
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:526,1
    - Dst: mail_index_create_tmp_file
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:531,1
    - Dst: mail_cache_purge_write
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:534,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:535,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:536,1
    - Dst: file_cache_set_fd
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:540,1
    - Dst: mail_cache_map_all
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:542,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:544,1
    - Dst: mail_cache_purge_later_reset
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:547,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 5
    argNames:
    - cache
    - purge_file_seq
    - trans
    - reason
    - unlock
    argTypes:
    - struct mail_cache*
    - uint32_t
    - struct mail_index_transaction*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 499
    functionDepth: 12
    functionLinenumber: 499
    functionLinenumberEnd: 549
    functionName: mail_cache_purge_locked
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_map_all
    - mail_cache_unlock
    - mail_cache_purge_later_reset
    - i_close_fd
    - i_unlink
    - mail_cache_reopen
    - mail_cache_header_fields_read
    - mail_cache_purge_has_file_changed
    - mail_index_create_tmp_file
    - mail_cache_purge_write
    - file_cache_set_fd
    linkageType: ''
    returnType: int
    signature: "int mail_cache_purge_locked(struct mail_cache *cache,\n\t\t\t\t   uint32_t
      purge_file_seq,\n\t\t\t\t   struct mail_index_transaction *trans,\n\t\t\t\t
      \  const char *reason, bool *unlock)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:559,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:560,1
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:562,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:569,1
    - Dst: mail_cache_lock
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:578,1
    - Dst: mail_cache_purge_locked
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:591,1
    - Dst: mail_cache_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:594,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:595,1
    - Dst: mail_cache_header_fields_read
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:599,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 4
    argNames:
    - cache
    - trans
    - purge_file_seq
    - reason
    argTypes:
    - struct mail_cache*
    - struct mail_index_transaction*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 551
    functionDepth: 13
    functionLinenumber: 551
    functionLinenumberEnd: 602
    functionName: mail_cache_purge_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 0
    functionsReached:
    - mail_cache_unlock
    - MAIL_INDEX_IS_IN_MEMORY
    - mail_cache_lock
    - mail_cache_purge_locked
    - buffer_set_used_size
    - mail_cache_header_fields_read
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_cache_purge_full(struct mail_cache *cache,\n\t\t      struct
      mail_index_transaction *trans,\n\t\t      uint32_t purge_file_seq, const char
      *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_purge_full
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - cache
    - trans
    - purge_file_seq
    - reason
    argTypes:
    - struct mail_cache*
    - struct mail_index_transaction*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 604
    functionDepth: 14
    functionLinenumber: 604
    functionLinenumberEnd: 609
    functionName: mail_cache_purge_with_trans
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 2
    functionsReached:
    - mail_cache_purge_full
    linkageType: ''
    returnType: int
    signature: "int mail_cache_purge_with_trans(struct mail_cache *cache,\n\t\t\t\tstruct
      mail_index_transaction *trans,\n\t\t\t\tuint32_t purge_file_seq, const char
      *reason)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_sync_lock
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:624,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:630,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:632,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:633,1
    - Dst: mail_cache_purge_full
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:637,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:639,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:641,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:644,1
    - Dst: mail_transaction_log_sync_unlock
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:646,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - cache
    - purge_file_seq
    - reason
    argTypes:
    - struct mail_cache*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 611
    functionDepth: 14
    functionLinenumber: 611
    functionLinenumberEnd: 650
    functionName: mail_cache_purge
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 15
    functionsReached:
    - mail_transaction_log_sync_lock
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_cache_purge_full
    - mail_index_view_open
    - mail_transaction_log_sync_unlock
    - mail_index_transaction_rollback
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int mail_cache_purge(struct mail_cache *cache, uint32_t purge_file_seq,\n\t\t
      \    const char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:665,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:668,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - cache
    - reason_r
    argTypes:
    - struct mail_cache*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 670
    functionName: mail_cache_need_purge
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 2
    functionsReached:
    - t_strdup
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool mail_cache_need_purge(struct mail_cache *cache, const char **reason_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:677,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:679,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:681,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:682,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - cache
    - reason_format
    argTypes:
    - struct mail_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 685
    functionName: mail_cache_purge_later
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 4
    functionsReached:
    - va_start
    - i_strdup_vprintf
    - i_assert
    - i_free
    - va_end
    linkageType: ''
    returnType: void
    signature: "void mail_cache_purge_later(struct mail_cache *cache,\n\t\t\t    const
      char *reason_format, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 691
    functionName: mail_cache_purge_later_reset
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 2
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_cache_purge_later_reset(struct mail_cache *cache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:697,1
    - Dst: mail_cache_headers_check_capped
      Src: /src/dovecot/src/lib-index/mail-cache-purge.c:707,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - cache
    - hdr
    - ctx_r
    argTypes:
    - struct mail_cache*
    - struct mail_index_header*
    - struct mail_cache_purge_drop_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 693
    functionDepth: 3
    functionLinenumber: 693
    functionLinenumberEnd: 713
    functionName: mail_cache_purge_drop_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 3
    functionsReached:
    - i_zero
    - mail_cache_headers_check_capped
    linkageType: ''
    returnType: void
    signature: "void mail_cache_purge_drop_init(struct mail_cache *cache,\n\t\t\t\tconst
      struct mail_index_header *hdr,\n\t\t\t\tstruct mail_cache_purge_drop_ctx *ctx_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - field
    argTypes:
    - struct mail_cache_purge_drop_ctx*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 737
    functionName: mail_cache_purge_drop_test
    functionSourceFile: /src/dovecot/src/lib-index/mail-cache-purge.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: enum mail_cache_purge_drop_decision
    signature: "enum mail_cache_purge_drop_decision mail_cache_purge_drop_test(struct
      mail_cache_purge_drop_ctx *ctx,\n\t\t\t   unsigned int field)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:18,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:24,1
    - Dst: mail_index_map_init_extbufs
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:25,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:29,1
    - Dst: mail_index_map_ext_get_next
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:34,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:36,1
    - Dst: mail_index_map_ext_hdr_check
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:42,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:44,1
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:49,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:50,1
    - Dst: mail_index_map_register_ext
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:56,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 59
    functionName: mail_index_map_parse_extensions
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-hdr.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_HEADER_SIZE_ALIGN
    - array_push_back
    - mail_index_map_register_ext
    - mail_index_map_init_extbufs
    - array_count
    - mail_index_map_lookup_ext
    - mail_index_map_ext_hdr_check
    - mail_index_set_error
    - mail_index_map_ext_get_next
    linkageType: ''
    returnType: int
    signature: int mail_index_map_parse_extensions(struct mail_index_map *map)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:71,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:72,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:73,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:76,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:89,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:90,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:94,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:95,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:99,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:106,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:115,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:122,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:129,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:130,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:134,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:142,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:147,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:149,1
    - Dst: mail_index_keyword_lookup
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:150,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:152,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:160,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:168,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:173,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:176,1
    - Dst: mail_index_keyword_lookup_or_create
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:181,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:182,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 58
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 185
    functionName: mail_index_map_parse_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-hdr.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - array_idx
    - array_push_back
    - strlen
    - mail_index_keyword_lookup_or_create
    - e_warning
    - array_count
    - mail_index_map_lookup_ext
    - mail_index_keyword_lookup
    - array_clear
    - array_is_created
    - i_assert
    - mail_index_set_error
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: int
    signature: int mail_index_map_parse_keywords(struct mail_index_map *map)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:194,1
    - Dst: mail_transaction_log_has_changed
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:200,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:208,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - index
    - hdr
    argTypes:
    - struct mail_index*
    - struct mail_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 214
    functionName: mail_index_hdr_check_indexid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-hdr.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_has_changed
    - i_assert
    - mail_index_set_error
    - i_unlink_if_exists
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_hdr_check_indexid(struct mail_index *index,\n\t\t\t\t
      \ const struct mail_index_header *hdr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:227,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:245,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:251,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - hdr
    - file_size
    - error_r
    argTypes:
    - struct mail_index_header*
    - uoff_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 257
    functionName: mail_index_check_header_compat
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-hdr.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_check_header_compat(const struct mail_index_header
      *hdr,\n\t\t\t\t    uoff_t file_size, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:265,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 268
    functionName: mail_index_map_clear_recent_flags
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-hdr.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: void mail_index_map_clear_recent_flags(struct mail_index_map *map)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_check_header_compat
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:276,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:281,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:288,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:297,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:304,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:310,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:322,1
    - Dst: mail_index_map_clear_recent_flags
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:345,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:351,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:357,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:368,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-hdr.c:374,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 71
    argCount: 2
    argNames:
    - map
    - error_r
    argTypes:
    - struct mail_index_map*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 381
    functionName: mail_index_map_check_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-hdr.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    - i_strdup
    - mail_index_map_clear_recent_flags
    - mail_index_check_header_compat
    - MAIL_INDEX_REC_AT_SEQ
    linkageType: ''
    returnType: int
    signature: "int mail_index_map_check_header(struct mail_index_map *map,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-index/mail-index-map.c:25,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib-index/mail-index-map.c:26,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-index/mail-index-map.c:28,1
    - Dst: p_get_max_easy_alloc_size
      Src: /src/dovecot/src/lib-index/mail-index-map.c:32,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-index/mail-index-map.c:39,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-index/mail-index-map.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - map
    - initial_count
    argTypes:
    - struct mail_index_map*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 41
    functionName: mail_index_map_init_extbufs
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_array_init
    - nearest_power
    - p_get_max_easy_alloc_size
    - p_clear
    linkageType: ''
    returnType: void
    signature: "void mail_index_map_init_extbufs(struct mail_index_map *map,\n\t\t\t\t
      unsigned int initial_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map.c:48,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-index/mail-index-map.c:51,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index-map.c:52,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-index/mail-index-map.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - map
    - name
    - idx_r
    argTypes:
    - struct mail_index_map*
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 58
    functionName: mail_index_map_lookup_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 6
    functionsReached:
    - strcmp
    - array_is_created
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_map_lookup_ext(struct mail_index_map *map, const char
      *name,\n\t\t\t       uint32_t *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-map.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name_len
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: mail_index_map_ext_hdr_offset
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 1
    functionsReached:
    - MAIL_INDEX_HEADER_SIZE_ALIGN
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mail_index_map_ext_hdr_offset(unsigned int name_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:74,1
    - Dst: mail_index_ext_name_is_valid
      Src: /src/dovecot/src/lib-index/mail-index-map.c:74,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map.c:76,1
    - Dst: mail_index_map_init_extbufs
      Src: /src/dovecot/src/lib-index/mail-index-map.c:77,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map.c:80,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:82,1
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-index/mail-index-map.c:82,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-map.c:84,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-index/mail-index-map.c:85,1
    - Dst: mail_index_map_ext_hdr_offset
      Src: /src/dovecot/src/lib-index/mail-index-map.c:88,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-map.c:88,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-index/mail-index-map.c:95,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map.c:102,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-map.c:103,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-index/mail-index-map.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - map
    - name
    - ext_offset
    - ext_hdr
    argTypes:
    - struct mail_index_map*
    - char*
    - uint32_t
    - struct mail_index_ext_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 106
    functionName: mail_index_map_register_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 3
    functionsReached:
    - array_idx_set
    - p_strdup
    - array_append_space
    - mail_index_ext_name_is_valid
    - array_push_back
    - strlen
    - mail_index_map_ext_hdr_offset
    - mail_index_map_init_extbufs
    - array_count
    - mail_index_map_lookup_ext
    - mail_index_ext_register
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t mail_index_map_register_ext(struct mail_index_map *map,\n\t\t\t
      \   const char *name, uint32_t ext_offset,\n\t\t\t    const struct mail_index_ext_header
      *ext_hdr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map.c:127,1
    - Dst: mail_index_map_ext_hdr_offset
      Src: /src/dovecot/src/lib-index/mail-index-map.c:131,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-index/mail-index-map.c:135,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map.c:135,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index-map.c:137,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-index/mail-index-map.c:137,1
    - Dst: MAIL_INDEX_HEADER_SIZE_ALIGN
      Src: /src/dovecot/src/lib-index/mail-index-map.c:145,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - map
    - offset_p
    - ext_hdr_r
    - name_r
    argTypes:
    - struct mail_index_map*
    - unsigned int*
    - struct mail_index_ext_header**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 152
    functionName: mail_index_map_ext_get_next
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 2
    functionsReached:
    - strcmp
    - MAIL_INDEX_HEADER_SIZE_ALIGN
    - mail_index_map_ext_hdr_offset
    - t_strndup
    - str_sanitize
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int mail_index_map_ext_get_next(struct mail_index_map *map,\n\t\t\t\tunsigned
      int *offset_p,\n\t\t\t\tconst struct mail_index_ext_header **ext_hdr_r,\n\t\t\t\tconst
      char **name_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map.c:183,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map.c:192,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map.c:197,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - hdr
    - ext_hdr
    - error_r
    argTypes:
    - struct mail_index_header*
    - struct mail_index_ext_header*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 203
    functionName: mail_index_map_ext_hdr_check_record
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int mail_index_map_ext_hdr_check_record(const struct mail_index_header
      *hdr,\n\t\t\t\t    const struct mail_index_ext_header *ext_hdr,\n\t\t\t\t    const
      char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_name_is_valid
      Src: /src/dovecot/src/lib-index/mail-index-map.c:213,1
    - Dst: mail_index_map_ext_hdr_check_record
      Src: /src/dovecot/src/lib-index/mail-index-map.c:219,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - hdr
    - ext_hdr
    - name
    - error_r
    argTypes:
    - struct mail_index_header*
    - struct mail_index_ext_header*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 229
    functionName: mail_index_map_ext_hdr_check
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 3
    functionsReached:
    - mail_index_map_ext_hdr_check_record
    - t_strdup_printf
    - mail_index_ext_name_is_valid
    linkageType: ''
    returnType: int
    signature: "int mail_index_map_ext_hdr_check(const struct mail_index_header *hdr,\n\t\t\t\t
      const struct mail_index_ext_header *ext_hdr,\n\t\t\t\t const char *name, const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:234,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-map.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - index
    - hdr
    argTypes:
    - struct mail_index*
    - struct mail_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 252
    functionName: mail_index_header_init
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_index_header_init(struct mail_index *index,\n\t\t\t\t   struct
      mail_index_header *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-map.c:258,1
    - Dst: mail_index_header_init
      Src: /src/dovecot/src/lib-index/mail-index-map.c:259,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-index-map.c:260,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-map.c:261,1
    - Dst: mail_index_map_clone
      Src: /src/dovecot/src/lib-index/mail-index-map.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 267
    functionName: mail_index_map_alloc
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 2
    functionsReached:
    - i_zero
    - buffer_append
    - mail_index_map_clone
    - mail_index_header_init
    - t_buffer_create
    linkageType: ''
    returnType: struct mail_index_map
    signature: struct mail_index_map *mail_index_map_alloc(struct mail_index *index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:273,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-map.c:274,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:276,1
    - Dst: munmap
      Src: /src/dovecot/src/lib-index/mail-index-map.c:277,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-map.c:278,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-map.c:281,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-map.c:282,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - map
    - rec_map
    argTypes:
    - struct mail_index_map*
    - struct mail_index_record_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 283
    functionName: mail_index_record_map_free
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 0
    functionsReached:
    - i_free
    - mail_index_set_syscall_error
    - munmap
    - buffer_free
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: "void mail_index_record_map_free(struct mail_index_map *map,\n\t\t\t\t
      \      struct mail_index_record_map *rec_map)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-index/mail-index-map.c:289,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-index/mail-index-map.c:290,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-index/mail-index-map.c:291,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map.c:293,1
    - Dst: mail_index_record_map_free
      Src: /src/dovecot/src/lib-index/mail-index-map.c:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 297
    functionName: mail_index_record_map_unlink
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 0
    functionsReached:
    - array_delete
    - mail_index_record_map_free
    - i_unreached
    - array_count
    - array_lsearch_ptr_idx
    linkageType: ''
    returnType: void
    signature: void mail_index_record_map_unlink(struct mail_index_map *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:307,1
    - Dst: mail_index_record_map_unlink
      Src: /src/dovecot/src/lib-index/mail-index-map.c:308,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-index/mail-index-map.c:310,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map.c:311,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-map.c:312,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-map.c:313,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-map.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _map
    argTypes:
    - struct mail_index_map**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 315
    functionName: mail_index_unmap
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 9
    functionsReached:
    - buffer_free
    - i_free
    - pool_unref
    - mail_index_record_map_unlink
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_index_unmap(struct mail_index_map **_map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-map.c:325,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-index/mail-index-map.c:326,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-map.c:327,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-index-map.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - dest
    - src
    - record_size
    argTypes:
    - struct mail_index_record_map*
    - struct mail_index_record_map*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 331
    functionName: mail_index_map_copy_records
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_create_dynamic
    - I_MAX
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: void
    signature: "void mail_index_map_copy_records(struct mail_index_record_map *dest,\n\t\t\t\t\tconst
      struct mail_index_record_map *src,\n\t\t\t\t\tunsigned int record_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-map.c:344,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-map.c:347,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-map.c:350,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-map.c:351,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-index/mail-index-map.c:353,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map.c:354,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:357,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct mail_index_map*
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 358
    functionName: mail_index_map_copy_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_write
    - I_MIN
    - buffer_create_dynamic
    - buffer_set_used_size
    - i_assert
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void mail_index_map_copy_header(struct mail_index_map *dest,\n\t\t\t\t
      \      const struct mail_index_map *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-map.c:365,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-map.c:366,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-map.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 369
    functionName: mail_index_record_map_alloc
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    - array_push_back
    linkageType: ''
    returnType: struct mail_index_record_map
    signature: 'struct mail_index_record_map *

      mail_index_record_map_alloc(struct mail_index_map *map)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-map.c:377,1
    - Dst: mail_index_record_map_alloc
      Src: /src/dovecot/src/lib-index/mail-index-map.c:381,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-map.c:383,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-map.c:386,1
    - Dst: mail_index_map_copy_header
      Src: /src/dovecot/src/lib-index/mail-index-map.c:389,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map.c:392,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map.c:393,1
    - Dst: mail_index_map_init_extbufs
      Src: /src/dovecot/src/lib-index/mail-index-map.c:394,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-index/mail-index-map.c:396,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-index/mail-index-map.c:397,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-map.c:400,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:401,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-index/mail-index-map.c:403,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map.c:409,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-map.c:410,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map.c:411,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-index/mail-index-map.c:412,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 417
    functionName: mail_index_map_clone
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 6
    functionsReached:
    - i_array_init
    - array_foreach_modifiable
    - p_strdup
    - array_push_back
    - mail_index_record_map_alloc
    - buffer_create_dynamic
    - mail_index_map_init_extbufs
    - array_count
    - i_new
    - mail_index_map_copy_header
    - array_is_created
    - i_assert
    - array_append_array
    linkageType: ''
    returnType: struct mail_index_map
    signature: struct mail_index_map *mail_index_map_clone(const struct mail_index_map
      *map)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map.c:424,1
    - Dst: mail_index_record_map_alloc
      Src: /src/dovecot/src/lib-index/mail-index-map.c:427,1
    - Dst: mail_index_map_copy_records
      Src: /src/dovecot/src/lib-index/mail-index-map.c:428,1
    - Dst: mail_index_record_map_unlink
      Src: /src/dovecot/src/lib-index/mail-index-map.c:430,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:440,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-map.c:445,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-map.c:448,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 419
    functionDepth: 3
    functionLinenumber: 419
    functionLinenumberEnd: 451
    functionName: mail_index_record_map_move_to_private
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 1
    functionsReached:
    - mail_index_record_map_alloc
    - mail_index_map_copy_records
    - buffer_set_used_size
    - mail_index_record_map_unlink
    - array_count
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_index_record_map_move_to_private(struct mail_index_map *map)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map.c:465,1
    - Dst: mail_index_record_map_alloc
      Src: /src/dovecot/src/lib-index/mail-index-map.c:468,1
    - Dst: mail_index_map_copy_records
      Src: /src/dovecot/src/lib-index/mail-index-map.c:471,1
    - Dst: mail_index_map_copy_header
      Src: /src/dovecot/src/lib-index/mail-index-map.c:473,1
    - Dst: mail_index_record_map_unlink
      Src: /src/dovecot/src/lib-index/mail-index-map.c:476,1
    - Dst: munmap
      Src: /src/dovecot/src/lib-index/mail-index-map.c:479,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-map.c:480,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 453
    functionDepth: 3
    functionLinenumber: 453
    functionLinenumberEnd: 483
    functionName: mail_index_map_move_to_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 1
    functionsReached:
    - mail_index_record_map_alloc
    - mail_index_set_syscall_error
    - mail_index_map_copy_records
    - mail_index_record_map_unlink
    - array_count
    - munmap
    - mail_index_map_copy_header
    linkageType: ''
    returnType: void
    signature: void mail_index_map_move_to_memory(struct mail_index_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-map.c:490,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-map.c:491,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-map.c:494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - map
    - ext_id
    - idx_r
    argTypes:
    - struct mail_index_map*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 497
    functionName: mail_index_map_get_ext_idx
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 13
    functionsReached:
    - array_is_created
    - array_count
    - array_idx
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_map_get_ext_idx(struct mail_index_map *map,\n\t\t\t\tuint32_t
      ext_id, uint32_t *idx_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:506,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-map.c:512,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:514,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map.c:518,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:526,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map.c:528,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 4
    argNames:
    - map
    - uid
    - left_idx
    - nearest_side
    argTypes:
    - struct mail_index_map*
    - uint32_t
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 541
    functionName: mail_index_bsearch_uid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t mail_index_bsearch_uid(struct mail_index_map *map,\n\t\t\t\t
      \      uint32_t uid, uint32_t left_idx,\n\t\t\t\t       int nearest_side)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:548,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:549,1
    - Dst: mail_index_bsearch_uid
      Src: /src/dovecot/src/lib-index/mail-index-map.c:556,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-map.c:558,1
    - Dst: mail_index_bsearch_uid
      Src: /src/dovecot/src/lib-index/mail-index-map.c:579,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map.c:582,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - map
    - first_uid
    - last_uid
    - first_seq_r
    - last_seq_r
    argTypes:
    - struct mail_index_map*
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 583
    functionName: mail_index_map_lookup_seq_range
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map.c
    functionUses: 1
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - mail_index_bsearch_uid
    linkageType: ''
    returnType: void
    signature: "void mail_index_map_lookup_seq_range(struct mail_index_map *map,\n\t\t\t\t
      \    uint32_t first_uid, uint32_t last_uid,\n\t\t\t\t     uint32_t *first_seq_r,\n\t\t\t\t
      \    uint32_t *last_seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: mail_index_set_error
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-write.c
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_error(struct mail_index *index ATTR_UNUSED,\n\t\t\t
      \ const char *fmt ATTR_UNUSED, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - function
    argTypes:
    - struct mail_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: mail_index_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-write.c
    functionUses: 9
    functionsReached:
    - i_error
    linkageType: ''
    returnType: void
    signature: "void mail_index_set_syscall_error(struct mail_index *index ATTR_UNUSED,\n\t\t\t\t
      \ const char *function)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - filepath
    - function
    argTypes:
    - struct mail_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: mail_index_file_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-write.c
    functionUses: 11
    functionsReached:
    - i_error
    linkageType: ''
    returnType: void
    signature: "void mail_index_file_set_syscall_error(struct mail_index *index ATTR_UNUSED,\n\t\t\t\t
      \      const char *filepath,\n\t\t\t\t       const char *function)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:55,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:57,1
    - Dst: open
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:58,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - path_prefix
    - path_r
    argTypes:
    - struct mail_index*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: mail_index_create_tmp_file
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-write.c
    functionUses: 2
    functionsReached:
    - open
    - t_strconcat
    - i_error
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int mail_index_create_tmp_file(struct mail_index *index ATTR_UNUSED,\n\t\t\t
      \      const char *path_prefix, const char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: mail_index_move_to_memory
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-write.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mail_index_move_to_memory(struct mail_index *index ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - log
    - reset
    argTypes:
    - struct mail_transaction_log*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: mail_transaction_log_rotate
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-write.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_rotate(struct mail_transaction_log *log, bool
      reset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:103,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:105,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:111,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:111,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:121,1
    - Dst: mail_index_write
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:125,1
    - Dst: mail_index_write
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:133,1
    - Dst: mail_index_write
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:139,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:141,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 83
    functionDepth: 4
    functionLinenumber: 83
    functionLinenumberEnd: 143
    functionName: test_mail_index_write
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-write.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - mail_index_write
    - test_end
    - p_strconcat
    - test_dir_get
    - buffer_create_from_const_data
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_index_write(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:152,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-index/test-mail-index-write.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 154
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-index-write.c
    functionUses: 0
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:26,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:29,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:39,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:40,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:41,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:42,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:44,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:45,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - index
    - ctx_r
    argTypes:
    - struct mail_index*
    - struct test_mail_cache_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 23
    functionDepth: 6
    functionLinenumber: 23
    functionLinenumberEnd: 48
    functionName: test_mail_cache_init
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 24
    functionsReached:
    - i_zero
    - mail_cache_register_fields
    - mail_index_view_open
    - i_rand_limit
    linkageType: ''
    returnType: void
    signature: "void test_mail_cache_init(struct mail_index *index,\n\t\t\t  struct
      test_mail_cache_ctx *ctx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:53,1
    - Dst: test_mail_index_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_mail_cache_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 6
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: test_mail_cache_deinit
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 23
    functionsReached:
    - test_mail_index_close
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_deinit(struct test_mail_cache_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_mail_cache_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: test_mail_cache_get_purge_count
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int test_mail_cache_get_purge_count(struct test_mail_cache_ctx
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:71,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:71,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:73,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:80,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_mail_cache_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 64
    functionDepth: 5
    functionLinenumber: 64
    functionLinenumberEnd: 81
    functionName: test_mail_cache_index_sync
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 2
    functionsReached:
    - mail_index_sync_next
    - mail_index_sync_commit
    - mail_index_sync_begin
    - test_assert
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_index_sync(struct test_mail_cache_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_sync_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:89,1
    - Dst: mail_index_view_sync_next
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:91,1
    - Dst: mail_index_view_sync_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_mail_cache_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 12
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: test_mail_cache_view_sync
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 10
    functionsReached:
    - mail_index_view_sync_commit
    - mail_index_view_sync_begin
    - test_assert
    - mail_index_view_sync_next
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_view_sync(struct test_mail_cache_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_cache_init
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:98,1
    - Dst: test_mail_index_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:99,1
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:99,1
    - Dst: test_mail_cache_deinit
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 94
    functionDepth: 15
    functionLinenumber: 94
    functionLinenumberEnd: 101
    functionName: test_mail_cache_purge
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 5
    functionsReached:
    - mail_cache_purge
    - test_mail_index_open
    - test_assert
    - test_mail_cache_init
    - test_mail_cache_deinit
    linkageType: ''
    returnType: void
    signature: void test_mail_cache_purge(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:107,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:114,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:115,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:116,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:117,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:120,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:125,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:127,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:130,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:130,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:131,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:132,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - cache_field_idx
    - cache_data
    argTypes:
    - struct test_mail_cache_ctx*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 103
    functionDepth: 13
    functionLinenumber: 103
    functionLinenumberEnd: 137
    functionName: test_mail_cache_add_mail
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 21
    functionsReached:
    - mail_index_append
    - mail_cache_view_close
    - mail_index_transaction_begin
    - mail_index_update_header
    - test_mail_cache_view_sync
    - mail_index_transaction_commit
    - strlen
    - mail_index_get_header
    - mail_index_transaction_open_updated_view
    - mail_cache_get_transaction
    - mail_cache_view_open
    - mail_cache_add
    - test_assert
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: "void test_mail_cache_add_mail(struct test_mail_cache_ctx *ctx,\n\t\t\t
      \     unsigned int cache_field_idx,\n\t\t\t      const char *cache_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:147,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:148,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:149,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:150,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:152,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:152,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - seq
    - cache_field_idx
    - cache_data
    argTypes:
    - struct test_mail_cache_ctx*
    - uint32_t
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 12
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: test_mail_cache_add_field
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 6
    functionsReached:
    - mail_cache_view_close
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - strlen
    - mail_cache_view_open
    - mail_cache_add
    - mail_cache_get_transaction
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_mail_cache_add_field(struct test_mail_cache_ctx *ctx, uint32_t
      seq,\n\t\t\t       unsigned int cache_field_idx,\n\t\t\t       const char *cache_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:165,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:165,1
    - Dst: test_mail_cache_view_sync
      Src: /src/dovecot/src/lib-index/test-mail-cache-common.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - first_new_uid
    argTypes:
    - struct test_mail_cache_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 156
    functionDepth: 13
    functionLinenumber: 156
    functionLinenumberEnd: 167
    functionName: test_mail_cache_update_day_first_uid7
    functionSourceFile: /src/dovecot/src/lib-index/test-mail-cache-common.c
    functionUses: 2
    functionsReached:
    - mail_index_transaction_commit
    - test_mail_cache_view_sync
    - mail_index_transaction_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_mail_cache_update_day_first_uid7(struct test_mail_cache_ctx
      *ctx,\n\t\t\t\t\t   uint32_t first_new_uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - major
    - ','
    - minor
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: MAIL_TRANSACTION_LOG_VERSION_FULL
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_TRANSACTION_LOG_VERSION_FULL(major, minor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - version
    - ','
    - wanted_feature
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: MAIL_TRANSACTION_LOG_VERSION_HAVE
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_TRANSACTION_LOG_VERSION_HAVE(version, wanted_feature)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: MAIL_TRANSACTION_LOG_HDR_VERSION
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_TRANSACTION_LOG_HDR_VERSION(hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - seq1
    - ','
    - offset1
    - ','
    - seq2
    - ','
    - offset2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 376
    functionName: LOG_IS_BEFORE
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG_IS_BEFORE(seq1, offset1, seq2, offset2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:15,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:16,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:21,1
    - Dst: mail_index_uint32_to_offset
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:29,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:31,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:32,1
    - Dst: mail_transaction_update_modseq
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:34,1
    - Dst: MAIL_TRANSACTION_LOG_HDR_VERSION
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:35,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - type
    - data
    - size
    argTypes:
    - struct mail_transaction_log_append_ctx*
    - enum mail_transaction_type
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 9
    functionDepth: 2
    functionLinenumber: 9
    functionLinenumberEnd: 37
    functionName: mail_transaction_log_append_add
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-append.c
    functionUses: 1
    functionsReached:
    - i_zero
    - buffer_append
    - MAIL_TRANSACTION_LOG_HDR_VERSION
    - mail_transaction_update_modseq
    - mail_index_uint32_to_offset
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_append_add(struct mail_transaction_log_append_ctx
      *ctx,\n\t\t\t\t     enum mail_transaction_type type,\n\t\t\t\t     const void
      *data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:46,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:47,1
    - Dst: mail_index_move_to_memory
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:52,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:54,1
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:54,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:56,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_transaction_log_append_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 60
    functionName: log_buffer_move_to_memory
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-append.c
    functionUses: 0
    functionsReached:
    - ftruncate
    - mail_index_move_to_memory
    - buffer_append_buf
    - mail_index_file_set_syscall_error
    - i_assert
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    linkageType: ''
    returnType: int
    signature: int log_buffer_move_to_memory(struct mail_transaction_log_append_ctx
      *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:69,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:71,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:74,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:79,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:81,1
    - Dst: log_buffer_move_to_memory
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:84,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:90,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:91,1
    - Dst: log_buffer_move_to_memory
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:103,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:105,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_transaction_log_append_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 112
    functionName: log_buffer_write
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-append.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - fdatasync
    - buffer_append_buf
    - write_full
    - buffer_create_dynamic
    - mail_index_file_set_syscall_error
    - log_buffer_move_to_memory
    - i_assert
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    linkageType: ''
    returnType: int
    signature: int log_buffer_write(struct mail_transaction_log_append_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:129,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:157,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:159,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:160,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:163,1
    - Dst: mail_transaction_log_append_add
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:165,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_transaction_log_append_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 114
    functionDepth: 3
    functionLinenumber: 114
    functionLinenumberEnd: 167
    functionName: log_append_sync_offset_if_needed
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-append.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - mail_transaction_log_append_add
    - buffer_append_space_unsafe
    - buffer_create_from_data
    - i_assert
    linkageType: ''
    returnType: void
    signature: void log_append_sync_offset_if_needed(struct mail_transaction_log_append_ctx
      *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:179,1
    - Dst: MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:181,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:182,1
    - Dst: mail_index_file_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:183,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:190,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:201,1
    - Dst: log_append_sync_offset_if_needed
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:204,1
    - Dst: log_buffer_write
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:205,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_transaction_log_append_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 209
    functionName: mail_transaction_log_append_locked
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-append.c
    functionUses: 0
    functionsReached:
    - ftruncate
    - buffer_get_space_unsafe
    - mail_index_file_set_syscall_error
    - log_buffer_write
    - buffer_set_used_size
    - log_append_sync_offset_if_needed
    - buffer_delete
    - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_append_locked(struct mail_transaction_log_append_ctx
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_lock_head
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:219,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:222,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:224,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:227,1
    - Dst: mail_transaction_log_append_add
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - index
    - flags
    - ctx_r
    argTypes:
    - struct mail_index*
    - enum mail_transaction_type
    - struct mail_transaction_log_append_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 211
    functionDepth: 3
    functionLinenumber: 211
    functionLinenumberEnd: 233
    functionName: mail_transaction_log_append_begin
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-append.c
    functionUses: 4
    functionsReached:
    - i_zero
    - mail_transaction_log_lock_head
    - mail_transaction_log_append_add
    - buffer_create_dynamic
    - i_new
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_append_begin(struct mail_index *index,\n\t\t\t\t
      \     enum mail_transaction_type flags,\n\t\t\t\t      struct mail_transaction_log_append_ctx
      **ctx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_append_locked
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:243,1
    - Dst: mail_transaction_log_file_unlock
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:245,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:247,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-transaction-log-append.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_transaction_log_append_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 235
    functionDepth: 5
    functionLinenumber: 235
    functionLinenumberEnd: 250
    functionName: mail_transaction_log_append_commit
    functionSourceFile: /src/dovecot/src/lib-index/mail-transaction-log-append.c
    functionUses: 3
    functionsReached:
    - mail_transaction_log_file_unlock
    - buffer_free
    - i_free
    - mail_transaction_log_append_locked
    linkageType: ''
    returnType: int
    signature: int mail_transaction_log_append_commit(struct mail_transaction_log_append_ctx
      **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-view.c:21,1
    - Dst: mail_index_view_clone
      Src: /src/dovecot/src/lib-index/mail-index-view.c:22,1
    - Dst: mail_index_map_clone
      Src: /src/dovecot/src/lib-index/mail-index-view.c:24,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-view.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - src
    - source_filename
    - source_linenum
    argTypes:
    - struct mail_index_view*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 13
    functionDepth: 4
    functionLinenumber: 13
    functionLinenumberEnd: 28
    functionName: mail_index_view_dup_private
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - mail_index_map_clone
    - mail_index_view_clone
    - mail_index_unmap
    - i_new
    linkageType: ''
    returnType: struct mail_index_view
    signature: "struct mail_index_view *\nmail_index_view_dup_private(const struct
      mail_index_view *src,\n\t\t\t    const char *source_filename,\n\t\t\t    unsigned
      int source_linenum)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-view.c:35,1
    - Dst: mail_transaction_log_view_open
      Src: /src/dovecot/src/lib-index/mail-index-view.c:41,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view.c:55,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-view.c:56,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-index/mail-index-view.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 4
    argNames:
    - dest
    - src
    - source_filename
    - source_linenum
    argTypes:
    - struct mail_index_view*
    - struct mail_index_view*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 62
    functionName: mail_index_view_clone
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached:
    - i_zero
    - i_array_init
    - I_MIN
    - DLLIST_PREPEND
    - mail_transaction_log_view_open
    linkageType: ''
    returnType: void
    signature: "void mail_index_view_clone(struct mail_index_view *dest,\n\t\t\t   const
      struct mail_index_view *src,\n\t\t\t   const char *source_filename,\n\t\t\t
      \  unsigned int source_linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: mail_index_view_ref
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_index_view_ref(struct mail_index_view *view)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view.c:71,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view.c:72,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-index/mail-index-view.c:74,1
    - Dst: mail_transaction_log_view_close
      Src: /src/dovecot/src/lib-index/mail-index-view.c:76,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view.c:78,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-view.c:79,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-view.c:80,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view.c:81,1
    - Dst: mail_index_view_unref_maps
      Src: /src/dovecot/src/lib-index/mail-index-view.c:82,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-view.c:83,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-view.c:85,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-index/mail-index-view.c:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 87
    functionName: view_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 41
    functionsReached:
    - mail_transaction_log_view_close
    - mail_index_view_unref_maps
    - i_free
    - mail_index_unmap
    - array_free
    - array_is_created
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void view_close(struct mail_index_view *view)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 95
    functionName: mail_index_view_is_inconsistent
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_index_view_is_inconsistent(struct mail_index_view *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: mail_index_view_get_index
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct mail_index
    signature: struct mail_index *mail_index_view_get_index(struct mail_index_view
      *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: mail_index_view_have_transactions
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_index_view_have_transactions(struct mail_index_view *view)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view.c:113,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-view.c:114,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view.c:122,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-view.c:128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - view
    - map
    argTypes:
    - struct mail_index_view*
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 129
    functionName: mail_index_view_ref_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_get
    - array_is_created
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void mail_index_view_ref_map(struct mail_index_view *view,\n\t\t\t\t
      \   struct mail_index_map *map)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view.c:136,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-view.c:139,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-index/mail-index-view.c:141,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-view.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 131
    functionDepth: 4
    functionLinenumber: 131
    functionLinenumberEnd: 144
    functionName: mail_index_view_unref_maps
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached:
    - array_get_modifiable
    - array_is_created
    - mail_index_unmap
    - array_clear
    linkageType: ''
    returnType: void
    signature: void mail_index_view_unref_maps(struct mail_index_view *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: view_get_messages_count
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t view_get_messages_count(struct mail_index_view *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: view_get_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mail_index_header
    signature: 'struct mail_index_header *

      view_get_header(struct mail_index_view *view)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view.c:165,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-view.c:165,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view.c:168,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-index/mail-index-view.c:169,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-view.c:171,1
    - Dst: mail_index_fsck
      Src: /src/dovecot/src/lib-index/mail-index-view.c:174,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view.c:213,1
    - Dst: mail_index_view_ref_map
      Src: /src/dovecot/src/lib-index/mail-index-view.c:221,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 4
    argNames:
    - view
    - seq
    - map_r
    - expunged_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - struct mail_index_map**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 233
    functionName: view_lookup_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - mail_index_fsck
    - unlikely
    - mail_index_view_ref_map
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - mail_index_set_error
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: struct mail_index_record
    signature: "struct mail_index_record *\nview_lookup_full(struct mail_index_view
      *view, uint32_t seq,\n\t\t struct mail_index_map **map_r, bool *expunged_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view.c:238,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-view.c:238,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - view
    - seq
    - uid_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: view_lookup_uid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void view_lookup_uid(struct mail_index_view *view, uint32_t seq,\n\t\t\t
      \   uint32_t *uid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-view.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - view
    - first_uid
    - last_uid
    - first_seq_r
    - last_seq_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 243
    functionDepth: 3
    functionLinenumber: 243
    functionLinenumberEnd: 249
    functionName: view_lookup_seq_range
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - mail_index_map_lookup_seq_range
    linkageType: ''
    returnType: void
    signature: "void view_lookup_seq_range(struct mail_index_view *view,\n\t\t\t\t
      \ uint32_t first_uid, uint32_t last_uid,\n\t\t\t\t  uint32_t *first_seq_r, uint32_t
      *last_seq_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOW_UPDATE
      Src: /src/dovecot/src/lib-index/mail-index-view.c:264,1
    - Dst: LOW_UPDATE
      Src: /src/dovecot/src/lib-index/mail-index-view.c:266,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-view.c:271,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view.c:276,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view.c:278,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 4
    argNames:
    - view
    - flags
    - flags_mask
    - seq_r
    argTypes:
    - struct mail_index_view*
    - enum mail_flags
    - uint8_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 284
    functionName: view_lookup_first
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - LOW_UPDATE
    - mail_index_lookup_seq_range
    linkageType: ''
    returnType: void
    signature: "void view_lookup_first(struct mail_index_view *view,\n\t\t\t      enum
      mail_flags flags, uint8_t flags_mask,\n\t\t\t      uint32_t *seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 257
    functionName: LOW_UPDATE
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOW_UPDATE(x)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-index/mail-index-view.c:296,1
    - Dst: mail_index_ext_get_size
      Src: /src/dovecot/src/lib-index/mail-index-view.c:301,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-view.c:306,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-view.c:309,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-index/mail-index-view.c:327,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - map
    - data
    - keyword_idx
    argTypes:
    - struct mail_index_map*
    - unsigned char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 330
    functionName: mail_index_data_lookup_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_get
    - array_clear
    - mail_index_ext_get_size
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void mail_index_data_lookup_keywords(struct mail_index_map *map,\n\t\t\t\tconst
      unsigned char *data,\n\t\t\t\tARRAY_TYPE(keyword_indexes) *keyword_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:338,1
    - Dst: mail_index_data_lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - view
    - seq
    - keyword_idx
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 341
    functionName: view_lookup_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - mail_index_data_lookup_keywords
    - mail_index_lookup_ext_full
    linkageType: ''
    returnType: void
    signature: "void view_lookup_keywords(struct mail_index_view *view, uint32_t seq,\n\t\t\t\t
      ARRAY_TYPE(keyword_indexes) *keyword_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:350,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:353,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - map
    - rec
    - ext_id
    argTypes:
    - struct mail_index_map*
    - struct mail_index_record*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 356
    functionName: view_map_lookup_ext_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_ext_idx
    - CONST_PTR_OFFSET
    - array_idx
    linkageType: ''
    returnType: void
    signature: "void *\nview_map_lookup_ext_full(struct mail_index_map *map,\n\t\t\t
      const struct mail_index_record *rec, uint32_t ext_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:365,1
    - Dst: view_map_lookup_ext_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - view
    - seq
    - ext_id
    - map_r
    - data_r
    - expunged_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - struct mail_index_map**
    - void**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 367
    functionName: view_lookup_ext_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - view_map_lookup_ext_full
    - struct mail_index_view*::v::lookup_full
    linkageType: ''
    returnType: void
    signature: "void view_lookup_ext_full(struct mail_index_view *view, uint32_t seq,\n\t\t
      \    uint32_t ext_id, struct mail_index_map **map_r,\n\t\t     const void **data_r,
      bool *expunged_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:381,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:388,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view.c:389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - view
    - map
    - ext_id
    - data_r
    - data_size_r
    argTypes:
    - struct mail_index_view*
    - struct mail_index_map*
    - uint32_t
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 391
    functionName: view_get_header_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_ext_idx
    - MAIL_INDEX_MAP_HDR_OFFSET
    - array_idx
    linkageType: ''
    returnType: void
    signature: "void view_get_header_ext(struct mail_index_view *view,\n\t\t\t\tstruct
      mail_index_map *map, uint32_t ext_id,\n\t\t\t\tconst void **data_r, size_t *data_size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:400,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - map
    - ext_id
    - reset_id_r
    argTypes:
    - struct mail_index_view*
    - struct mail_index_map*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 406
    functionName: view_ext_get_reset_id
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_ext_idx
    - array_idx
    linkageType: ''
    returnType: bool
    signature: "bool view_ext_get_reset_id(struct mail_index_view *view ATTR_UNUSED,\n\t\t\t\t
      \ struct mail_index_map *map,\n\t\t\t\t  uint32_t ext_id, uint32_t *reset_id_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view.c:416,1
    - Dst: struct mail_index_view*::v::close
      Src: /src/dovecot/src/lib-index/mail-index-view.c:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _view
    argTypes:
    - struct mail_index_view**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 419
    functionName: mail_index_view_close
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 25
    functionsReached:
    - struct mail_index_view*::v::close
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_index_view_close(struct mail_index_view **_view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-view.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: mail_index_view_get_messages_count
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 12
    functionsReached:
    - struct mail_index_view*::v::get_messages_count
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_index_view_get_messages_count(struct mail_index_view
      *view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::get_header
      Src: /src/dovecot/src/lib-index/mail-index-view.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 430
    functionName: mail_index_get_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 8
    functionsReached:
    - struct mail_index_view*::v::get_header
    linkageType: ''
    returnType: struct mail_index_header
    signature: 'struct mail_index_header *

      mail_index_get_header(struct mail_index_view *view)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - view
    - seq
    argTypes:
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 438
    functionName: mail_index_lookup
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached:
    - mail_index_lookup_full
    linkageType: ''
    returnType: struct mail_index_record
    signature: 'struct mail_index_record *

      mail_index_lookup(struct mail_index_view *view, uint32_t seq)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - view
    - seq
    - map_r
    - expunged_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - struct mail_index_map**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 445
    functionName: mail_index_lookup_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached:
    - struct mail_index_view*::v::lookup_full
    linkageType: ''
    returnType: struct mail_index_record
    signature: "struct mail_index_record *\nmail_index_lookup_full(struct mail_index_view
      *view, uint32_t seq,\n\t\t       struct mail_index_map **map_r, bool *expunged_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - view
    - seq
    argTypes:
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 454
    functionName: mail_index_is_expunged
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 3
    functionsReached:
    - struct mail_index_view*::v::lookup_full
    linkageType: ''
    returnType: bool
    signature: bool mail_index_is_expunged(struct mail_index_view *view, uint32_t
      seq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:464,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view.c:467,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:468,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-view.c:470,1
    - Dst: mail_index_data_lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - map
    - seq
    - keyword_idx
    argTypes:
    - struct mail_index_map*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 473
    functionName: mail_index_map_lookup_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached:
    - mail_index_data_lookup_keywords
    - array_idx
    - mail_index_map_get_ext_idx
    - MAIL_INDEX_REC_AT_SEQ
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void mail_index_map_lookup_keywords(struct mail_index_map *map, uint32_t
      seq,\n\t\t\t\t    ARRAY_TYPE(keyword_indexes) *keyword_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view.c:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - view
    - seq
    - keyword_idx
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 479
    functionName: mail_index_lookup_keywords
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 1
    functionsReached:
    - struct mail_index_view*::v::lookup_keywords
    linkageType: ''
    returnType: void
    signature: "void mail_index_lookup_keywords(struct mail_index_view *view, uint32_t
      seq,\n\t\t\t\tARRAY_TYPE(keyword_indexes) *keyword_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view.c:488,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-index/mail-index-view.c:488,1
    - Dst: MAIL_INDEX_REC_AT_SEQ
      Src: /src/dovecot/src/lib-index/mail-index-view.c:490,1
    - Dst: view_map_lookup_ext_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:493,1
    - Dst: mail_index_data_lookup_keywords
      Src: /src/dovecot/src/lib-index/mail-index-view.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - view
    - seq
    - flags_r
    - keyword_idx
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - enum mail_flags*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 496
    functionName: mail_index_lookup_view_flags
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - mail_index_data_lookup_keywords
    - view_map_lookup_ext_full
    - MAIL_INDEX_REC_AT_SEQ
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void mail_index_lookup_view_flags(struct mail_index_view *view, uint32_t
      seq,\n\t\t\t\t  enum mail_flags *flags_r,\n\t\t\t\t  ARRAY_TYPE(keyword_indexes)
      *keyword_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_uid
      Src: /src/dovecot/src/lib-index/mail-index-view.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - view
    - seq
    - uid_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 502
    functionName: mail_index_lookup_uid
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 6
    functionsReached:
    - struct mail_index_view*::v::lookup_uid
    linkageType: ''
    returnType: void
    signature: "void mail_index_lookup_uid(struct mail_index_view *view, uint32_t
      seq,\n\t\t\t   uint32_t *uid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-view.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - view
    - first_uid
    - last_uid
    - first_seq_r
    - last_seq_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 511
    functionName: mail_index_lookup_seq_range
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 10
    functionsReached:
    - struct mail_index_view*::v::lookup_seq_range
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_lookup_seq_range(struct mail_index_view *view,\n\t\t\t\t
      uint32_t first_uid, uint32_t last_uid,\n\t\t\t\t uint32_t *first_seq_r, uint32_t
      *last_seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_seq_range
      Src: /src/dovecot/src/lib-index/mail-index-view.c:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - view
    - uid
    - seq_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 518
    functionName: mail_index_lookup_seq
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 10
    functionsReached:
    - struct mail_index_view*::v::lookup_seq_range
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_lookup_seq(struct mail_index_view *view,\n\t\t\t   uint32_t
      uid, uint32_t *seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_first
      Src: /src/dovecot/src/lib-index/mail-index-view.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - view
    - flags
    - flags_mask
    - seq_r
    argTypes:
    - struct mail_index_view*
    - enum mail_flags
    - uint8_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 525
    functionName: mail_index_lookup_first
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - struct mail_index_view*::v::lookup_first
    linkageType: ''
    returnType: void
    signature: "void mail_index_lookup_first(struct mail_index_view *view,\n\t\t\t
      \    enum mail_flags flags, uint8_t flags_mask,\n\t\t\t     uint32_t *seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - view
    - seq
    - ext_id
    - data_r
    - expunged_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - void**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 534
    functionName: mail_index_lookup_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 1
    functionsReached:
    - mail_index_lookup_ext_full
    linkageType: ''
    returnType: void
    signature: "void mail_index_lookup_ext(struct mail_index_view *view, uint32_t
      seq,\n\t\t\t   uint32_t ext_id, const void **data_r,\n\t\t\t   bool *expunged_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::lookup_ext_full
      Src: /src/dovecot/src/lib-index/mail-index-view.c:540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - view
    - seq
    - ext_id
    - map_r
    - data_r
    - expunged_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - struct mail_index_map**
    - void**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 541
    functionName: mail_index_lookup_ext_full
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 4
    functionsReached:
    - struct mail_index_view*::v::lookup_ext_full
    linkageType: ''
    returnType: void
    signature: "void mail_index_lookup_ext_full(struct mail_index_view *view, uint32_t
      seq,\n\t\t\t\tuint32_t ext_id, struct mail_index_map **map_r,\n\t\t\t\tconst
      void **data_r, bool *expunged_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::get_header_ext
      Src: /src/dovecot/src/lib-index/mail-index-view.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - view
    - ext_id
    - data_r
    - data_size_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 547
    functionName: mail_index_get_header_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - struct mail_index_view*::v::get_header_ext
    linkageType: ''
    returnType: void
    signature: "void mail_index_get_header_ext(struct mail_index_view *view, uint32_t
      ext_id,\n\t\t\t       const void **data_r, size_t *data_size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::get_header_ext
      Src: /src/dovecot/src/lib-index/mail-index-view.c:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - view
    - map
    - ext_id
    - data_r
    - data_size_r
    argTypes:
    - struct mail_index_view*
    - struct mail_index_map*
    - uint32_t
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 554
    functionName: mail_index_map_get_header_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 0
    functionsReached:
    - struct mail_index_view*::v::get_header_ext
    linkageType: ''
    returnType: void
    signature: "void mail_index_map_get_header_ext(struct mail_index_view *view,\n\t\t\t\t
      \  struct mail_index_map *map, uint32_t ext_id,\n\t\t\t\t   const void **data_r,
      size_t *data_size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_index_view*::v::ext_get_reset_id
      Src: /src/dovecot/src/lib-index/mail-index-view.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - view
    - map
    - ext_id
    - reset_id_r
    argTypes:
    - struct mail_index_view*
    - struct mail_index_map*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 561
    functionName: mail_index_ext_get_reset_id
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached:
    - struct mail_index_view*::v::ext_get_reset_id
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_ext_get_reset_id(struct mail_index_view *view,\n\t\t\t\t
      struct mail_index_map *map,\n\t\t\t\t uint32_t ext_id, uint32_t *reset_id_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-view.c:570,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:572,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - map
    - ext_id
    - hdr_size_r
    - record_size_r
    - record_align_r
    argTypes:
    - struct mail_index_map*
    - uint32_t
    - uint32_t*
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 584
    functionName: mail_index_ext_get_size
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 1
    functionsReached:
    - mail_index_map_get_ext_idx
    - i_assert
    - array_idx
    linkageType: ''
    returnType: void
    signature: "void mail_index_ext_get_size(struct mail_index_map *map, uint32_t
      ext_id,\n\t\t\t     uint32_t *hdr_size_r, uint16_t *record_size_r,\n\t\t\t     uint16_t
      *record_align_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-index/mail-index-view.c:606,1
    - Dst: mail_transaction_log_view_open
      Src: /src/dovecot/src/lib-index/mail-index-view.c:610,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-view.c:622,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-index/mail-index-view.c:623,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-index/mail-index-view.c:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - index
    - map
    argTypes:
    - struct mail_index*
    - struct mail_index_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 626
    functionName: mail_index_view_open_with_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - I_MIN
    - DLLIST_PREPEND
    - i_new
    - mail_transaction_log_view_open
    linkageType: ''
    returnType: struct mail_index_view
    signature: "struct mail_index_view *\nmail_index_view_open_with_map(struct mail_index
      *index,\n\t\t\t      struct mail_index_map *map)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_open_with_map
      Src: /src/dovecot/src/lib-index/mail-index-view.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - index
    - source_filename
    - source_linenum
    argTypes:
    - struct mail_index*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 629
    functionDepth: 2
    functionLinenumber: 629
    functionLinenumberEnd: 640
    functionName: mail_index_view_open
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 16
    functionsReached:
    - mail_index_view_open_with_map
    linkageType: ''
    returnType: struct mail_index_view
    signature: "struct mail_index_view *\nmail_index_view_open(struct mail_index *index,\n\t\t
      \    const char *source_filename, unsigned int source_linenum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:647,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-view.c:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - view
    - ext_id
    argTypes:
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 651
    functionName: mail_index_view_get_ext
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-view.c
    functionUses: 2
    functionsReached:
    - mail_index_map_get_ext_idx
    - array_idx
    linkageType: ''
    returnType: struct mail_index_ext
    signature: 'struct mail_index_ext *

      mail_index_view_get_ext(struct mail_index_view *view, uint32_t ext_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_append_add
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - type
    argTypes:
    - struct mail_index_export_context*
    - buffer_t*
    - enum mail_transaction_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 21
    functionName: log_append_buffer
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_append_add
    linkageType: ''
    returnType: void
    signature: "void log_append_buffer(struct mail_index_export_context *ctx,\n\t\t
      \ const buffer_t *buf, enum mail_transaction_type type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:31,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:35,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:38,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:46,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - t
    argTypes:
    - struct mail_index_export_context*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 23
    functionDepth: 4
    functionLinenumber: 23
    functionLinenumberEnd: 49
    functionName: log_append_flag_updates
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - array_get
    - array_free
    - log_append_buffer
    linkageType: ''
    returnType: void
    signature: "void log_append_flag_updates(struct mail_index_export_context *ctx,\n\t\t\t\t
      \   struct mail_index_transaction *t)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:60,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:65,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:75,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:76,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - t
    - prepend
    argTypes:
    - struct mail_index_transaction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 82
    functionName: log_get_hdr_update_buffer
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_append
    - t_buffer_create
    linkageType: ''
    returnType: buffer_t
    signature: 'buffer_t *

      log_get_hdr_update_buffer(struct mail_index_transaction *t, bool prepend)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hu
    argTypes:
    - struct mail_index_transaction_ext_hdr_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 94
    functionName: ext_hdr_update_get_size
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ext_hdr_update_get_size(const struct mail_index_transaction_ext_hdr_update
      *hu)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:108,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:111,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:116,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:117,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:121,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:124,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:134,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:136,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:139,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:145,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:147,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:154,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:155,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:159,1
    - Dst: ext_hdr_update_get_size
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:160,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:165,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:172,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:177,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:179,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:182,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:187,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 4
    argNames:
    - ctx
    - ext_id
    - reset_id
    - hdr_size_r
    argTypes:
    - struct mail_index_export_context*
    - uint32_t
    - uint32_t
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 189
    functionName: log_append_ext_intro
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - strcmp
    - buffer_append
    - ext_hdr_update_get_size
    - buffer_append_zero
    - array_idx
    - mail_index_map_get_ext_idx
    - array_get_modifiable
    - strlen
    - t_buffer_create
    - array_count
    - buffer_append_space_unsafe
    - array_is_created
    - i_assert
    - log_append_buffer
    linkageType: ''
    returnType: void
    signature: "void log_append_ext_intro(struct mail_index_export_context *ctx,\n\t\t\t\t
      uint32_t ext_id, uint32_t reset_id,\n\t\t\t\t unsigned int *hdr_size_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:203,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:204,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:209,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:220,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:224,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:226,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:227,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:233,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:234,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:236,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - hdr
    - ext_hdr_size
    argTypes:
    - struct mail_index_export_context*
    - struct mail_index_transaction_ext_hdr_update*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 191
    functionDepth: 4
    functionLinenumber: 191
    functionLinenumberEnd: 237
    functionName: log_append_ext_hdr_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_append
    - buffer_append_zero
    - buffer_create_dynamic
    - buffer_free
    - i_assert
    - log_append_buffer
    linkageType: ''
    returnType: void
    signature: "void log_append_ext_hdr_update(struct mail_index_export_context *ctx,\n\t\t\t
      \ const struct mail_index_transaction_ext_hdr_update *hdr,\n\t\t\t  unsigned
      int ext_hdr_size)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:253,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:257,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:262,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:266,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:269,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:273,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:278,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:282,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:287,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:288,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:289,1
    - Dst: log_append_ext_intro
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:307,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:312,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:314,1
    - Dst: log_append_ext_hdr_update
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:319,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 57
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_export_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 239
    functionDepth: 5
    functionLinenumber: 239
    functionLinenumberEnd: 323
    functionName: mail_transaction_log_append_ext_intros
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_get
    - log_append_ext_intro
    - buffer_set_used_size
    - buffer_create_from_data
    - log_append_ext_hdr_update
    - array_is_created
    - i_assert
    - log_append_buffer
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_append_ext_intros(struct mail_index_export_context
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:336,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:340,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:344,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:346,1
    - Dst: log_append_ext_intro
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:350,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:352,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - arr
    - type
    argTypes:
    - struct mail_index_export_context*
    - ARRAY_TYPE*
    - enum mail_transaction_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 326
    functionDepth: 5
    functionLinenumber: 326
    functionLinenumberEnd: 354
    functionName: log_append_ext_recs
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_get
    - log_append_ext_intro
    - array_is_created
    - log_append_buffer
    linkageType: ''
    returnType: void
    signature: "void log_append_ext_recs(struct mail_index_export_context *ctx,\n\t\t\t\tconst
      ARRAY_TYPE(seq_array_array) *arr,\n\t\t\t\tenum mail_transaction_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:363,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:365,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:367,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:369,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:370,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:371,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:373,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:374,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - ctx
    - tmp_buf
    - modify_type
    - keyword
    - uid_buffer
    argTypes:
    - struct mail_index_export_context*
    - buffer_t*
    - enum modify_type
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 356
    functionDepth: 4
    functionLinenumber: 356
    functionLinenumberEnd: 377
    functionName: log_append_keyword_update
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_append
    - buffer_append_zero
    - strlen
    - buffer_set_used_size
    - i_assert
    - log_append_buffer
    linkageType: ''
    returnType: void
    signature: "void log_append_keyword_update(struct mail_index_export_context *ctx,\n\t\t\t
      \ buffer_t *tmp_buf, enum modify_type modify_type,\n\t\t\t  const char *keyword,
      const buffer_t *uid_buffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:388,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:390,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:392,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:393,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:396,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:397,1
    - Dst: log_append_keyword_update
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:399,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:403,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:404,1
    - Dst: log_append_keyword_update
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:406,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_index_export_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 379
    functionDepth: 5
    functionLinenumber: 379
    functionLinenumberEnd: 412
    functionName: log_append_keyword_updates
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - t_buffer_create
    - log_append_keyword_update
    - array_count
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool log_append_keyword_updates(struct mail_index_export_context *ctx)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:424,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:429,1
    - Dst: mail_transaction_log_append_add
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:430,1
    - Dst: mail_transaction_log_append_ext_intros
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:436,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:439,1
    - Dst: log_get_hdr_update_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:439,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:447,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:450,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:454,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:457,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:459,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:462,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:465,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:469,1
    - Dst: log_append_flag_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:472,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:475,1
    - Dst: log_append_ext_recs
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:477,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:480,1
    - Dst: log_append_ext_recs
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:482,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:486,1
    - Dst: log_append_keyword_updates
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:487,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:493,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:495,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:499,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:508,1
    - Dst: log_append_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:514,1
    - Dst: log_get_hdr_update_buffer
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:514,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:519,1
    - Dst: mail_transaction_log_append_add
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:521,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-transaction-export.c:526,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 75
    argCount: 3
    argNames:
    - t
    - append_ctx
    - changes_r
    argTypes:
    - struct mail_index_transaction*
    - struct mail_transaction_log_append_ctx*
    - enum mail_index_transaction_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 414
    functionDepth: 6
    functionLinenumber: 414
    functionLinenumberEnd: 533
    functionName: mail_index_transaction_export
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    functionUses: 1
    functionsReached:
    - i_zero
    - buffer_append
    - log_append_flag_updates
    - buffer_append_zero
    - mail_transaction_log_append_add
    - mail_transaction_log_append_ext_intros
    - array_is_created
    - log_append_keyword_updates
    - buffer_append_c
    - i_assert
    - log_append_ext_recs
    - log_get_hdr_update_buffer
    - log_append_buffer
    linkageType: ''
    returnType: void
    signature: "void mail_index_transaction_export(struct mail_index_transaction *t,\n\t\t\t\t
      \  struct mail_transaction_log_append_ctx *append_ctx,\n\t\t\t\t   enum mail_index_transaction_change
      *changes_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:20,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:21,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - map
    - hdr
    argTypes:
    - struct mail_index_map*
    - struct mail_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 29
    functionName: mail_index_map_copy_hdr
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void mail_index_map_copy_hdr(struct mail_index_map *map,\n\t\t\t\t
      \   const struct mail_index_header *hdr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:38,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:40,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:43,1
    - Dst: mmap
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:48,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:54,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:54,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:70,1
    - Dst: mail_index_check_header_compat
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:76,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:78,1
    - Dst: mail_index_hdr_check_indexid
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:82,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:96,1
    - Dst: mail_index_map_copy_hdr
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:102,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:103,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:104,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:106,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 2
    argNames:
    - map
    - file_size
    argTypes:
    - struct mail_index_map*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 31
    functionDepth: 3
    functionLinenumber: 31
    functionLinenumberEnd: 108
    functionName: mail_index_mmap
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - mmap
    - PTR_OFFSET
    - mail_index_hdr_check_indexid
    - mail_index_map_copy_hdr
    - t_strdup_printf
    - mail_index_set_syscall_error
    - buffer_set_used_size
    - mail_index_check_header_compat
    - buffer_free
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: int mail_index_mmap(struct mail_index_map *map, uoff_t file_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:116,1
    - Dst: pread
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:124,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - index
    - buf
    - buf_size
    - pos_r
    argTypes:
    - struct mail_index*
    - void*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: mail_index_read_header
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 0
    functionsReached:
    - pread
    - memset
    - PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int mail_index_read_header(struct mail_index *index,\n\t\t\t\t  void
      *buf, size_t buf_size, size_t *pos_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:148,1
    - Dst: mail_index_read_header
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:151,1
    - Dst: mail_index_check_header_compat
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:162,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:164,1
    - Dst: mail_index_hdr_check_indexid
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:168,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:176,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:177,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:181,1
    - Dst: pread_full
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:184,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:200,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:208,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:213,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:218,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:219,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:223,1
    - Dst: pread_full
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:225,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:236,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:240,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:247,1
    - Dst: mail_index_map_copy_hdr
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:250,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:251,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 4
    argNames:
    - map
    - file_size
    - retry_r
    - try_retry
    argTypes:
    - struct mail_index_map*
    - uoff_t
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 134
    functionDepth: 3
    functionLinenumber: 134
    functionLinenumberEnd: 253
    functionName: mail_index_try_read_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - mail_index_hdr_check_indexid
    - CONST_PTR_OFFSET
    - mail_index_map_copy_hdr
    - mail_index_read_header
    - buffer_create_dynamic
    - mail_index_set_syscall_error
    - buffer_set_used_size
    - buffer_get_modifiable_data
    - mail_index_check_header_compat
    - buffer_append_space_unsafe
    - pread_full
    - i_assert
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: "int mail_index_try_read_map(struct mail_index_map *map,\n\t\t\tuoff_t
      file_size, bool *retry_r, bool try_retry)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_try_read_map
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:270,1
    - Dst: mail_index_close_file
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:277,1
    - Dst: mail_index_try_open_only
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:279,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:284,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:289,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:292,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:293,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - map
    - file_size
    argTypes:
    - struct mail_index_map*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 255
    functionDepth: 4
    functionLinenumber: 255
    functionLinenumberEnd: 300
    functionName: mail_index_read_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 0
    functionsReached:
    - mail_index_try_open_only
    - ESTALE_FSTAT
    - mail_index_set_syscall_error
    - mail_index_try_read_map
    - fstat
    - mail_index_close_file
    linkageType: ''
    returnType: int
    signature: int mail_index_read_map(struct mail_index_map *map, uoff_t file_size)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_reopen_if_changed
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:317,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:326,1
    - Dst: nfs_flush_attr_cache_fd_locked
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:329,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:331,1
    - Dst: ESTALE_FSTAT
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:334,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:335,1
    - Dst: mail_index_map_alloc
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:346,1
    - Dst: mail_index_mmap
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:348,1
    - Dst: mail_index_read_map
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:350,1
    - Dst: mail_index_map_check_header
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:359,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:361,1
    - Dst: mail_index_hdr_check_indexid
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:366,1
    - Dst: if
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:371,1
    - Dst: mail_index_map_parse_extensions
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:371,1
    - Dst: mail_index_map_parse_keywords
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:373,1
    - Dst: mail_index_fsck
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:388,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 61
    argCount: 2
    argNames:
    - index
    - reason_r
    argTypes:
    - struct mail_index*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 304
    functionDepth: 5
    functionLinenumber: 304
    functionLinenumberEnd: 396
    functionName: mail_index_map_latest_file
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 0
    functionsReached:
    - mail_index_map_parse_extensions
    - mail_index_read_map
    - mail_index_hdr_check_indexid
    - mail_index_mmap
    - ESTALE_FSTAT
    - mail_index_set_syscall_error
    - if
    - mail_index_fsck
    - nfs_flush_attr_cache_fd_locked
    - fstat
    - mail_index_map_check_header
    - mail_index_map_parse_keywords
    - mail_index_reopen_if_changed
    - i_assert
    - mail_index_set_error
    - mail_index_map_alloc
    linkageType: ''
    returnType: int
    signature: int mail_index_map_latest_file(struct mail_index *index, const char
      **reason_r)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_map
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:431,1
    - Dst: mail_index_reopen_if_changed
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:442,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:455,1
    - Dst: mail_index_fsck
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:460,1
    - Dst: mail_index_map_latest_file
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:465,1
    - Dst: mail_index_sync_map
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:467,1
    - Dst: mail_index_set_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:469,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 3
    argNames:
    - index
    - type
    - reason
    argTypes:
    - struct mail_index*
    - enum mail_index_sync_handler_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 415
    functionDepth: 9
    functionLinenumber: 415
    functionLinenumberEnd: 474
    functionName: mail_index_map_latest_sync
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_map
    - mail_index_map_latest_file
    - mail_index_fsck
    - mail_index_reopen_if_changed
    - mail_index_set_error
    linkageType: ''
    returnType: int
    signature: "int mail_index_map_latest_sync(struct mail_index *index,\n\t\t\t   enum
      mail_index_sync_handler_type type,\n\t\t\t   const char *reason)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:483,1
    - Dst: mail_index_map_alloc
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:488,1
    - Dst: mail_index_sync_map_want_index_reopen
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:494,1
    - Dst: mail_index_sync_map
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:500,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:502,1
    - Dst: mail_index_map_latest_file
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:515,1
    - Dst: mail_index_map_latest_sync
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:517,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:520,1
    - Dst: mail_index_set_syscall_error
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:521,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - index
    - type
    argTypes:
    - struct mail_index*
    - enum mail_index_sync_handler_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 476
    functionDepth: 10
    functionLinenumber: 476
    functionLinenumberEnd: 529
    functionName: mail_index_map_real
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_map
    - mail_index_map_latest_file
    - e_debug
    - unlink
    - mail_index_set_syscall_error
    - mail_index_map_latest_sync
    - i_assert
    - mail_index_map_alloc
    - mail_index_sync_map_want_index_reopen
    linkageType: ''
    returnType: int
    signature: "int mail_index_map_real(struct mail_index *index,\n\t\t    enum mail_index_sync_handler_type
      type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_real
      Src: /src/dovecot/src/lib-index/mail-index-map-read.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - index
    - type
    argTypes:
    - struct mail_index*
    - enum mail_index_sync_handler_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 531
    functionDepth: 11
    functionLinenumber: 531
    functionLinenumberEnd: 537
    functionName: mail_index_map
    functionSourceFile: /src/dovecot/src/lib-index/mail-index-map-read.c
    functionUses: 6
    functionsReached:
    - mail_index_map_real
    linkageType: ''
    returnType: int
    signature: "int mail_index_map(struct mail_index *index,\n\t\t   enum mail_index_sync_handler_type
      type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:121,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - value_type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 126
    functionName: dict_sql_type_parse
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_panic
    linkageType: ''
    returnType: enum dict_sql_type
    signature: enum dict_sql_type dict_sql_type_parse(const char *value_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:135,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:138,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:146,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:151,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:151,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 153
    functionName: pattern_read_name
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_isalnum
    - strlen
    - t_strdup_until
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: char *pattern_read_name(const char **pattern)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:167,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:167,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:169,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:170,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:176,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:179,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:184,1
    - Dst: dict_sql_type_parse
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:187,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:189,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:192,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:195,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:200,1
    - Dst: pattern_read_name
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:202,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:205,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:209,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:216,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:223,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:229,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:229,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 5
    argNames:
    - event
    - pool
    - map_set
    - map
    - error_r
    argTypes:
    - struct event*
    - pool_t
    - struct dict_map_settings*
    - struct dict_sql_map*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 231
    functionName: dict_sql_fields_map
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - t_new
    - str_append_c
    - p_array_init
    - p_strdup
    - array_push_back
    - array_get
    - strlen
    - settings_free
    - pattern_read_name
    - array_is_empty
    - dict_sql_type_parse
    - settings_get_filter
    - pool_add_external_ref
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int dict_sql_fields_map(struct event *event, pool_t pool,\n\t\t\t
      \      const struct dict_map_settings *map_set,\n\t\t\t       struct dict_sql_map
      *map,\n\t\t\t       const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:242,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:245,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:247,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:249,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:254,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:260,1
    - Dst: dict_sql_fields_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:261,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:264,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:266,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:268,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:269,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:274,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:275,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:276,1
    - Dst: dict_sql_type_parse
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:278,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:279,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:280,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:282,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:282,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:283,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - event
    - set
    - error_r
    argTypes:
    - struct event*
    - struct dict_sql_map_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 285
    functionName: dict_sql_map_settings_get
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - p_array_init
    - str_len
    - pool_unref
    - array_is_empty
    - dict_sql_type_parse
    - array_count
    - array_front
    - t_str_new
    - array_append_space
    - str_append_c
    - array_foreach_elem
    - dict_sql_fields_map
    - array_push_back
    - settings_free
    - settings_get_filter
    - str_append
    - pool_add_external_ref
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int dict_sql_map_settings_get(struct event *event,\n\t\t\t  struct
      dict_sql_map_settings *set,\n\t\t\t  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:292,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:295,1
    - Dst: dict_sql_map_settings_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:296,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:297,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - event
    - name
    - set
    - error_r
    argTypes:
    - struct event*
    - char*
    - struct dict_sql_map_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 302
    functionName: dict_sql_settings_get_map
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - t_strdup_printf
    - settings_event_add_list_filter_name
    - dict_sql_map_settings_get
    linkageType: ''
    returnType: int
    signature: "int dict_sql_settings_get_map(struct event *event, const char *name,\n\t\t\t
      \ struct dict_sql_map_settings *set,\n\t\t\t  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:313,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:314,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:316,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:318,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:320,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:323,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:324,1
    - Dst: dict_sql_settings_get_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:326,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c:327,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - event
    - set_r
    - error_r
    argTypes:
    - struct event*
    - struct dict_sql_map_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 304
    functionDepth: 5
    functionLinenumber: 304
    functionLinenumberEnd: 334
    functionName: dict_sql_settings_get
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - T_END_PASS_STR_IF
    - p_new
    - p_array_init
    - dict_sql_settings_get_map
    - array_foreach_elem
    - pool_unref
    - array_is_created
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int dict_sql_settings_get(struct event *event,\n\t\t\t  struct dict_sql_map_settings
      **set_r,\n\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - field
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: DEFN
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFN(type, field, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - field
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: DEFN
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFN(type, field, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:131,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _set
    - pool
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 135
    functionName: dict_ldap_map_settings_post_check
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - array_push_back
    linkageType: ''
    returnType: bool
    signature: "bool dict_ldap_map_settings_post_check(void *_set, pool_t pool,\n\t\t\t\t
      \ const char **error_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:143,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:146,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:147,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:150,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:151,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:156,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:159,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:160,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:165,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:166,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:168,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:170,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - set
    - post
    - error_r
    argTypes:
    - struct dict_ldap_map_settings*
    - struct dict_ldap_map_post_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 173
    functionName: ldap_parse_attributes
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_array_init
    - var_expand_program_create
    - array_foreach_elem
    - str_begins
    - array_push_back
    - t_strdup_printf
    - var_expand_program_free
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - var_expand_program_variables
    linkageType: ''
    returnType: int
    signature: "int ldap_parse_attributes(struct dict_ldap_map_settings *set,\n\t\t\t\t
      struct dict_ldap_map_post_settings *post,\n\t\t\t\t const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:181,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:185,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:195,1
    - Dst: ldap_parse_scope
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:200,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:201,1
    - Dst: ldap_parse_attributes
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - set
    - pre
    - post
    - error_r
    argTypes:
    - struct dict_ldap_map_settings*
    - struct dict_ldap_map_pre_settings*
    - struct dict_ldap_map_post_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 207
    functionName: dict_ldap_map_settings_postcheck
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - ldap_parse_scope
    - str_ends_with
    - t_strdup_printf
    - array_is_empty
    - ldap_parse_attributes
    linkageType: ''
    returnType: int
    signature: "int dict_ldap_map_settings_postcheck(struct dict_ldap_map_settings
      *set,\n\t\t\t\t struct dict_ldap_map_pre_settings *pre,\n\t\t\t\t struct dict_ldap_map_post_settings
      *post,\n\t\t\t\t const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:216,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:219,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:227,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:232,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 234
    functionName: pattern_read_name
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 1
    functionsReached:
    - strchr
    - strlen
    - t_strdup_until
    - i_isalnum
    linkageType: ''
    returnType: char
    signature: char *pattern_read_name(const char **pattern)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:238,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:238,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:239,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:246,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:251,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:253,1
    - Dst: pattern_read_name
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:253,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:254,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:257,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct dict_ldap_map_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 258
    functionName: dict_ldap_settings_parse_pattern
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - p_strdup
    - str_append_c
    - p_array_init
    - array_push_back
    - strlen
    - pattern_read_name
    linkageType: ''
    returnType: void
    signature: void dict_ldap_settings_parse_pattern(struct dict_ldap_map_settings
      *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dst
    - ','
    - src
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 266
    functionName: chain_ref
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: chain_ref(dst, src)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:271,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:276,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:276,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:279,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:283,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:286,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:290,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:294,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:296,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:297,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:298,1
    - Dst: dict_ldap_map_settings_postcheck
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:302,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:303,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:304,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:305,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:308,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:309,1
    - Dst: dict_ldap_settings_parse_pattern
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:311,1
    - Dst: chain_ref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:312,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:313,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - event
    - set
    - error_r
    argTypes:
    - struct event*
    - struct dict_ldap_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 267
    functionDepth: 3
    functionLinenumber: 267
    functionLinenumberEnd: 317
    functionName: dict_ldap_settings_parse_maps
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - array_foreach_elem
    - dict_ldap_map_settings_postcheck
    - array_push_back
    - dict_ldap_settings_parse_pattern
    - t_strdup_printf
    - settings_free
    - array_is_empty
    - array_count
    - settings_get_filter
    - chain_ref
    linkageType: ''
    returnType: int
    signature: "int dict_ldap_settings_parse_maps(struct event *event, struct dict_ldap_settings
      *set,\n\t\t\t      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:324,1
    - Dst: dict_ldap_settings_parse_maps
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:325,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - event
    - set_r
    - error_r
    argTypes:
    - struct event*
    - struct dict_ldap_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 319
    functionDepth: 4
    functionLinenumber: 319
    functionLinenumberEnd: 333
    functionName: dict_ldap_settings_get
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
    functionUses: 0
    functionsReached:
    - dict_ldap_settings_parse_maps
    - settings_get
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int dict_ldap_settings_get(struct event *event,\n\t\t\t   const struct
      dict_ldap_settings **set_r,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:22,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:67,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dict_r
    argTypes:
    - struct dict**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 71
    functionName: test_setup
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - settings_simple_init
    - dict_init_auto
    linkageType: ''
    returnType: void
    signature: void test_setup(struct dict **dict_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_deinit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:78,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 81
    functionName: test_teardown
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - settings_simple_deinit
    - dict_deinit
    linkageType: ''
    returnType: void
    signature: void test_teardown(struct dict **_dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_driver_test_add_expected_result
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _dict
    - result
    argTypes:
    - struct dict*
    - struct test_driver_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 90
    functionName: test_set_expected
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_driver_test_add_expected_result
    linkageType: ''
    returnType: void
    signature: "void test_set_expected(struct dict *_dict,\n\t\t\t      const struct
      test_driver_result *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:110,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:112,1
    - Dst: test_setup
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:113,1
    - Dst: test_set_expected
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:117,1
    - Dst: dict_lookup
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:117,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:118,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:120,1
    - Dst: test_teardown
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:121,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 123
    functionName: test_lookup_one
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - test_setup
    - i_error
    - dict_lookup
    - test_teardown
    - test_assert_strcmp
    - test_end
    - pool_datastack_create
    - test_assert
    - test_set_expected
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lookup_one(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:142,1
    - Dst: test_setup
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:143,1
    - Dst: test_set_expected
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:145,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:148,1
    - Dst: dict_atomic_inc
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:150,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:150,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:152,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:156,1
    - Dst: dict_atomic_inc
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:157,1
    - Dst: dict_atomic_inc
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:159,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:159,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:161,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:165,1
    - Dst: dict_atomic_inc
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:166,1
    - Dst: dict_atomic_inc
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:167,1
    - Dst: dict_atomic_inc
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:169,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:169,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:171,1
    - Dst: test_teardown
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:172,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 174
    functionName: test_atomic_inc
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - test_setup
    - i_error
    - dict_transaction_commit
    - test_teardown
    - dict_transaction_begin
    - test_end
    - dict_atomic_inc
    - test_assert
    - test_set_expected
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_atomic_inc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:191,1
    - Dst: test_setup
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:192,1
    - Dst: test_set_expected
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:194,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:197,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:198,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:199,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:199,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:201,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:205,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:206,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:208,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:208,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:210,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:214,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:215,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:216,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:217,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:218,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:218,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:220,1
    - Dst: test_teardown
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:221,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 176
    functionDepth: 3
    functionLinenumber: 176
    functionLinenumberEnd: 223
    functionName: test_set
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - test_setup
    - i_error
    - dict_transaction_commit
    - test_teardown
    - dict_transaction_begin
    - test_end
    - test_assert
    - dict_set
    - test_set_expected
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_set(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:240,1
    - Dst: test_setup
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:241,1
    - Dst: test_set_expected
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:243,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:245,1
    - Dst: dict_unset
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:246,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:247,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:247,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:249,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:251,1
    - Dst: dict_unset
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:252,1
    - Dst: dict_unset
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:254,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:254,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:256,1
    - Dst: test_teardown
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:257,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 259
    functionName: test_unset
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - test_setup
    - i_error
    - dict_transaction_commit
    - test_teardown
    - dict_transaction_begin
    - test_end
    - dict_unset
    - test_assert
    - test_set_expected
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unset(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:285,1
    - Dst: test_setup
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:286,1
    - Dst: test_set_expected
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:288,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:291,1
    - Dst: dict_iterate
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:295,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:296,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:297,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:298,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:302,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:303,1
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:303,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:305,1
    - Dst: test_set_expected
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:316,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:318,1
    - Dst: dict_iterate
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:322,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:323,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:324,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:329,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:330,1
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:330,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:332,1
    - Dst: test_teardown
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:333,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:334,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 335
    functionName: test_iterate
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - i_assert
    - test_setup
    - i_error
    - test_teardown
    - test_end
    - dict_iterate_init
    - dict_iterate
    - test_assert
    - test_assert_strcmp_idx
    - test_set_expected
    - dict_iterate_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iterate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_drivers_init_without_drivers
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:338,1
    - Dst: sql_driver_test_register
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:339,1
    - Dst: dict_sql_register
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:340,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:341,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:352,1
    - Dst: dict_sql_unregister
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:354,1
    - Dst: sql_driver_test_unregister
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:355,1
    - Dst: sql_drivers_deinit_without_drivers
      Src: /src/dovecot/src/lib-dict-backend/test-dict-sql.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 359
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_drivers_deinit_without_drivers
    - sql_driver_test_unregister
    - sql_drivers_init_without_drivers
    - test_run
    - sql_driver_test_register
    - dict_sql_unregister
    - dict_sql_register
    - settings_info_register
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_sql_settings_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:101,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:104,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:105,1
    - Dst: sql_init_auto
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:110,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:111,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - dict_driver
    - event
    - dict_r
    - error_r
    argTypes:
    - struct dict*
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 95
    functionDepth: 6
    functionLinenumber: 95
    functionLinenumberEnd: 117
    functionName: sql_dict_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - sql_init_auto
    - pool_unref
    - dict_sql_settings_get
    linkageType: ''
    returnType: int
    signature: "int sql_dict_init(const struct dict *dict_driver, struct event *event,\n\t
      \     struct dict **dict_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:123,1
    - Dst: sql_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:124,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 4
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: sql_dict_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void sql_dict_deinit(struct dict *_dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_wait
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 3
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: sql_dict_wait
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_wait
    linkageType: ''
    returnType: void
    signature: void sql_dict_wait(struct dict *_dict)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:145,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:154,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:161,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:162,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:165,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:169,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:177,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:179,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:180,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:185,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:186,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:212,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 7
    argNames:
    - map
    - path
    - pattern_values
    - pat_len_r
    - path_len_r
    - partial_ok
    - recurse
    argTypes:
    - struct dict_sql_map*
    - char*
    - ARRAY_TYPE*
    - size_t*
    - size_t*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 214
    functionName: dict_sql_map_match
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - strchr
    - array_push_back
    - strlen
    - t_strndup
    - array_clear
    - t_strdup_until
    linkageType: ''
    returnType: bool
    signature: "bool dict_sql_map_match(const struct dict_sql_map *map, const char
      *path,\n\t\t   ARRAY_TYPE(const_string) *pattern_values, size_t *pat_len_r,\n\t\t
      \  size_t *path_len_r, bool partial_ok, bool recurse)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:224,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:225,1
    - Dst: dict_sql_map_match
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - dict
    - path
    - pattern_values
    argTypes:
    - struct sql_dict*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 232
    functionName: sql_dict_find_map
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - array_get
    - t_array_init
    - dict_sql_map_match
    linkageType: ''
    returnType: struct dict_sql_map
    signature: "struct dict_sql_map *\nsql_dict_find_map(struct sql_dict *dict, const
      char *path,\n\t\t  ARRAY_TYPE(const_string) *pattern_values)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sql_statement_bind_str
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:240,1
    - Dst: sql_statement_bind_int64
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:244,1
    - Dst: sql_statement_bind_double
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:247,1
    - Dst: sql_statement_bind_binary
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:250,1
    - Dst: sql_statement_bind_uuid
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:254,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:257,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - stmt
    - column_idx
    - param
    argTypes:
    - struct sql_statement*
    - unsigned int
    - struct sql_dict_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 259
    functionName: sql_dict_statement_bind
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - sql_statement_bind_str
    - sql_statement_bind_uuid
    - sql_statement_bind_double
    - sql_statement_bind_binary
    - sql_statement_bind_int64
    linkageType: ''
    returnType: void
    signature: "void sql_dict_statement_bind(struct sql_statement *stmt, unsigned
      int column_idx,\n\t\t\tconst struct sql_dict_param *param)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_get_flags
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:269,1
    - Dst: sql_prepared_statement_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:270,1
    - Dst: sql_statement_init_prepared
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:271,1
    - Dst: sql_prepared_statement_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:272,1
    - Dst: sql_statement_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:276,1
    - Dst: sql_dict_statement_bind
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:280,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - dict
    - query
    - params
    argTypes:
    - struct sql_dict*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 284
    functionName: sql_dict_statement_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_statement_init_prepared
    - sql_get_flags
    - sql_prepared_statement_unref
    - sql_statement_init
    - array_foreach_idx
    - sql_dict_statement_bind
    - sql_prepared_statement_init
    linkageType: ''
    returnType: struct sql_statement
    signature: "struct sql_statement *\nsql_dict_statement_init(struct sql_dict *dict,
      const char *query,\n\t\t\tconst ARRAY_TYPE(sql_dict_param) *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_dict_statement_bind
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:280,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 34
    functionsReached:
    - sql_dict_statement_bind
    - array_foreach_idx
    linkageType: ''
    returnType: void
    signature: void array_foreach(params, param)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:295,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:301,1
    - Dst: str_to_int64
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:306,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:307,1
    - Dst: str_to_int64
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:315,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:316,1
    - Dst: str_to_double
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:324,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:325,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:333,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:334,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:343,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:346,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:346,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:347,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:350,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:354,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 7
    argNames:
    - map
    - value_type
    - field_name
    - value
    - value_suffix
    - params
    - error_r
    argTypes:
    - struct dict_sql_map*
    - enum dict_sql_type
    - char*
    - char*
    - char*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 358
    functionName: sql_dict_value_get
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - guid_128_from_uuid_string
    - array_append_space
    - str_to_double
    - i_unreached
    - hex_to_binary
    - strlen
    - t_strdup_printf
    - t_buffer_create
    - str_to_int64
    - str_append
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int sql_dict_value_get(const struct dict_sql_map *map,\n\t\t   enum
      dict_sql_type value_type, const char *field_name,\n\t\t   const char *value,
      const char *value_suffix,\n\t\t   ARRAY_TYPE(sql_dict_param) *params, const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_dict_value_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - map
    - field
    - value
    - value_suffix
    - params
    - error_r
    argTypes:
    - struct dict_sql_map*
    - struct dict_sql_field*
    - char*
    - char*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 369
    functionName: sql_dict_field_get_value
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_dict_value_get
    linkageType: ''
    returnType: int
    signature: "int sql_dict_field_get_value(const struct dict_sql_map *map,\n\t\t\t
      const struct dict_sql_field *field,\n\t\t\t const char *value, const char *value_suffix,\n\t\t\t
      ARRAY_TYPE(sql_dict_param) *params,\n\t\t\t const char **error_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:382,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:383,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:386,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:393,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:396,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:397,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:403,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:404,1
    - Dst: sql_dict_field_get_value
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:405,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:415,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:417,1
    - Dst: sql_dict_field_get_value
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:418,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:422,1
    - Dst: sql_dict_field_get_value
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:423,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:428,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:437,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:438,1
    - Dst: sql_dict_field_get_value
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:440,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:448,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:450,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:451,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:453,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 8
    argNames:
    - username
    - map
    - values_arr
    - add_username
    - recurse_type
    - query
    - params
    - error_r
    argTypes:
    - char*
    - struct dict_sql_map*
    - ARRAY_TYPE*
    - bool
    - enum sql_recurse_type
    - string_t*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 371
    functionDepth: 3
    functionLinenumber: 371
    functionLinenumberEnd: 456
    functionName: sql_dict_where_build
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - array_append_space
    - array_get
    - sql_dict_field_get_value
    - t_strdup_printf
    - array_count
    - str_append
    - t_strdup
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int sql_dict_where_build(const char *username, const struct dict_sql_map
      *map,\n\t\t     const ARRAY_TYPE(const_string) *values_arr,\n\t\t     bool add_username,
      enum sql_recurse_type recurse_type,\n\t\t     string_t *query, ARRAY_TYPE(sql_dict_param)
      *params,\n\t\t     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:467,1
    - Dst: sql_dict_find_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:470,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:472,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:477,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:478,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:479,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:480,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:482,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:483,1
    - Dst: sql_db_table_prefix
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:484,1
    - Dst: sql_dict_where_build
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:485,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:489,1
    - Dst: sql_dict_statement_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:493,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:493,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 6
    argNames:
    - dict
    - set
    - key
    - map_r
    - stmt_r
    - error_r
    argTypes:
    - struct sql_dict*
    - struct dict_op_settings*
    - char*
    - struct dict_sql_map**
    - struct sql_statement**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 458
    functionDepth: 4
    functionLinenumber: 458
    functionLinenumberEnd: 495
    functionName: sql_lookup_get_query
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - sql_db_table_prefix
    - sql_dict_statement_init
    - t_strdup_printf
    - sql_dict_where_build
    - t_array_init
    - ARRAY_TYPE
    - str_append
    - sql_dict_find_map
    linkageType: ''
    returnType: int
    signature: "int sql_lookup_get_query(struct sql_dict *dict,\n\t\t     const struct
      dict_op_settings *set,\n\t\t     const char *key,\n\t\t     const struct dict_sql_map
      **map_r,\n\t\t     struct sql_statement **stmt_r,\n\t\t     const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:512,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:513,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:515,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:518,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:519,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:519,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:523,1
    - Dst: sql_result_get_field_value_binary
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:526,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:527,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:528,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:529,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 4
    argNames:
    - type
    - pool
    - result
    - result_idx
    argTypes:
    - enum dict_sql_type
    - pool_t
    - struct sql_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 530
    functionName: sql_dict_result_unescape
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - guid_128_to_uuid_string
    - guid_128_from_uuid_string
    - p_strdup
    - str_c
    - sql_result_get_field_value_binary
    - i_unreached
    - sql_result_get_field_value
    - binary_to_hex_append
    - str_new
    linkageType: ''
    returnType: char
    signature: "char *\nsql_dict_result_unescape(enum dict_sql_type type, pool_t pool,\n\t\t\t
      struct sql_result *result, unsigned int result_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:539,1
    - Dst: sql_dict_result_unescape
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:545,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 550
    functionName: sql_dict_result_unescape_values
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_dict_result_unescape
    - p_new
    linkageType: ''
    returnType: char
    signature: "char *const *\nsql_dict_result_unescape_values(const struct dict_sql_map
      *map, pool_t pool,\n\t\t\t\tstruct sql_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:559,1
    - Dst: sql_dict_result_unescape
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - map
    - pool
    - result
    - result_idx
    - sql_field_idx
    argTypes:
    - struct dict_sql_map*
    - pool_t
    - struct sql_result*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 552
    functionDepth: 2
    functionLinenumber: 552
    functionLinenumberEnd: 562
    functionName: sql_dict_result_unescape_field
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_dict_result_unescape
    - array_idx
    linkageType: ''
    returnType: char
    signature: "char *\nsql_dict_result_unescape_field(const struct dict_sql_map *map,
      pool_t pool,\n\t\t\t       struct sql_result *result, unsigned int result_idx,\n\t\t\t
      \      unsigned int sql_field_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:570,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:573,1
    - Dst: str_to_time
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:577,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 2
    argNames:
    - map
    - result
    argTypes:
    - struct dict_sql_map*
    - struct sql_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 564
    functionDepth: 3
    functionLinenumber: 564
    functionLinenumberEnd: 583
    functionName: sql_dict_result_next_row
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_result_get_field_value
    - str_to_time
    - sql_result_next_row
    linkageType: ''
    returnType: int
    signature: "int sql_dict_result_next_row(const struct dict_sql_map *map,\n\t\t\t
      struct sql_result *result)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sql_lookup_get_query
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:595,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:598,1
    - Dst: sql_dict_result_next_row
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:599,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:601,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:602,1
    - Dst: sql_dict_result_unescape_values
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:604,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - _dict
    - set
    - pool
    - key
    - values_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 585
    functionDepth: 5
    functionLinenumber: 585
    functionLinenumberEnd: 609
    functionName: sql_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_statement_query_s
    - t_strdup_printf
    - sql_result_get_error
    - sql_result_unref
    - sql_dict_result_unescape_values
    - sql_lookup_get_query
    - sql_dict_result_next_row
    linkageType: ''
    returnType: int
    signature: "int sql_dict_lookup(struct dict *_dict, const struct dict_op_settings
      *set,\n\t\t\t   pool_t pool, const char *key,\n\t\t\t   const char *const **values_r,
      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:623,1
    - Dst: sql_dict_result_next_row
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:624,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:626,1
    - Dst: sql_dict_result_unescape_values
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:628,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:629,1
    - Dst: struct sql_dict_lookup_context*::callback
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:638,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:640,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - sql_result
    - ctx
    argTypes:
    - struct sql_result*
    - struct sql_dict_lookup_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 617
    functionDepth: 4
    functionLinenumber: 617
    functionLinenumberEnd: 641
    functionName: sql_dict_lookup_async_callback
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - i_zero
    - struct sql_dict_lookup_context*::callback
    - sql_result_get_error
    - pool_datastack_create
    - sql_dict_result_unescape_values
    - i_free
    - sql_dict_result_next_row
    linkageType: ''
    returnType: void
    signature: "void sql_dict_lookup_async_callback(struct sql_result *sql_result,\n\t\t\t
      \      struct sql_dict_lookup_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_lookup_get_query
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:655,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:658,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:661,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:663,1
    - Dst: sql_statement_query
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 5
    argNames:
    - _dict
    - set
    - key
    - callback
    - context
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - dict_lookup_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 643
    functionDepth: 5
    functionLinenumber: 643
    functionLinenumberEnd: 669
    functionName: sql_dict_lookup_async
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - i_zero
    - sql_statement_query
    - i_new
    - callback
    - sql_lookup_get_query
    linkageType: ''
    returnType: void
    signature: "void sql_dict_lookup_async(struct dict *_dict,\n\t\t      const struct
      dict_op_settings *set,\n\t\t      const char *key,\n\t\t      dict_lookup_callback_t
      *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:681,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:682,1
    - Dst: dict_sql_map_match
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:684,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:688,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:688,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:693,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:694,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - pattern_values
    argTypes:
    - struct sql_dict_iterate_context*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 671
    functionDepth: 2
    functionLinenumber: 671
    functionLinenumberEnd: 699
    functionName: sql_dict_iterate_find_next_map
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - dict_sql_map_match
    - array_get
    - array_count
    - t_array_init
    - str_truncate
    - str_append
    linkageType: ''
    returnType: struct dict_sql_map
    signature: "struct dict_sql_map *\nsql_dict_iterate_find_next_map(struct sql_dict_iterate_context
      *ctx,\n\t\t\t       ARRAY_TYPE(const_string) *pattern_values)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:709,1
    - Dst: sql_dict_iterate_find_next_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:714,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:725,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:729,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:730,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:732,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:734,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:737,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:738,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:742,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:747,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:748,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:748,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:750,1
    - Dst: sql_db_table_prefix
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:750,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:759,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:760,1
    - Dst: sql_dict_where_build
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:762,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:767,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:769,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:771,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:774,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:777,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:778,1
    - Dst: sql_dict_statement_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:782,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:782,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 57
    argCount: 3
    argNames:
    - ctx
    - stmt_r
    - error_r
    argTypes:
    - struct sql_dict_iterate_context*
    - struct sql_statement**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 701
    functionDepth: 4
    functionLinenumber: 701
    functionLinenumberEnd: 785
    functionName: sql_dict_iterate_build_next_query
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - sql_db_table_prefix
    - str_append_c
    - str_len
    - array_get
    - sql_dict_iterate_find_next_map
    - sql_dict_where_build
    - sql_result_unref
    - array_count
    - t_array_init
    - str_truncate
    - ARRAY_TYPE
    - str_append
    - i_assert
    - sql_dict_statement_init
    linkageType: ''
    returnType: int
    signature: "int sql_dict_iterate_build_next_query(struct sql_dict_iterate_context
      *ctx,\n\t\t\t\t  struct sql_statement **stmt_r,\n\t\t\t\t  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_ref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:791,1
    - Dst: struct sql_dict_iterate_context*::ctx::async_callback
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:794,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct sql_result*
    - struct sql_dict_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 799
    functionName: sql_dict_iterate_callback
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - struct sql_dict_iterate_context*::ctx::async_callback
    - sql_result_ref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: "void sql_dict_iterate_callback(struct sql_result *result,\n\t\t\t\t
      \     struct sql_dict_iterate_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sql_dict_iterate_build_next_query
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:807,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:813,1
    - Dst: sql_statement_query_s
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:820,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:822,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:824,1
    - Dst: sql_statement_query
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:825,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_dict_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 801
    functionDepth: 5
    functionLinenumber: 801
    functionLinenumberEnd: 829
    functionName: sql_dict_iterate_next_query
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_statement_query_s
    - pool_ref
    - sql_statement_query
    - sql_dict_iterate_build_next_query
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: int sql_dict_iterate_next_query(struct sql_dict_iterate_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:839,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:840,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:845,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:847,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - _dict
    - ATTR_UNUSED
    - path
    - flags
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - enum dict_iterate_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 850
    functionName: sql_dict_iterate_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - str_new
    linkageType: ''
    returnType: struct dict_iterate_context
    signature: "struct dict_iterate_context *\nsql_dict_iterate_init(struct dict *_dict,\n\t\t
      \     const struct dict_op_settings *set ATTR_UNUSED,\n\t\t      const char
      *path, enum dict_iterate_flags flags)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: sql_dict_iterate_next_query
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:866,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:872,1
    - Dst: sql_dict_result_next_row
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:877,1
    - Dst: sql_result_more_s
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:880,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:884,1
    - Dst: sql_result_more
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:885,1
    - Dst: sql_dict_result_next_row
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:892,1
    - Dst: sql_dict_iterate
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:904,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:907,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:909,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:914,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:916,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:917,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:919,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:925,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:927,1
    - Dst: sql_dict_result_unescape_field
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:928,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:929,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:931,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:936,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:938,1
    - Dst: sql_dict_result_unescape_values
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:939,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 63
    argCount: 3
    argNames:
    - _ctx
    - key_r
    - values_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 852
    functionDepth: 6
    functionLinenumber: 852
    functionLinenumberEnd: 943
    functionName: sql_dict_iterate
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 1
    functionsReached:
    - str_c
    - str_append_c
    - pool_ref
    - sql_dict_iterate
    - sql_result_get_fields_count
    - sql_dict_iterate_next_query
    - sql_result_more_s
    - sql_dict_result_unescape_field
    - sql_result_get_error
    - pool_datastack_create
    - p_clear
    - str_truncate
    - sql_dict_result_unescape_values
    - sql_result_more
    - str_append
    - i_assert
    - p_strdup_printf
    - sql_dict_result_next_row
    linkageType: ''
    returnType: bool
    signature: "bool sql_dict_iterate(struct dict_iterate_context *_ctx,\n\t\t\t     const
      char **key_r, const char *const **values_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:952,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:954,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:957,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:959,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 945
    functionDepth: 2
    functionLinenumber: 945
    functionLinenumberEnd: 961
    functionName: sql_dict_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - t_strdup
    - pool_unref
    - sql_result_unref
    linkageType: ''
    returnType: int
    signature: "int sql_dict_iterate_deinit(struct dict_iterate_context *_ctx,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:969,1
    - Dst: sql_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 963
    functionDepth: 1
    functionLinenumber: 963
    functionLinenumberEnd: 974
    functionName: sql_dict_transaction_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_transaction_begin
    - i_new
    linkageType: ''
    returnType: struct dict_transaction_context
    signature: 'struct dict_transaction_context *

      sql_dict_transaction_init(struct dict *_dict)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:978,1
    - Dst: sql_dict_prev_inc_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:979,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:980,1
    - Dst: sql_dict_prev_set_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:981,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:983,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:984,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:985,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 986
    functionName: sql_dict_transaction_free
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - pool_unref
    - sql_dict_prev_set_free
    - sql_dict_prev_inc_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void sql_dict_transaction_free(struct sql_dict_transaction_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:994,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 999
    functionName: sql_dict_transaction_has_nonexistent
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool sql_dict_transaction_has_nonexistent(struct sql_dict_transaction_context
      *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1007,1
    - Dst: sql_dict_transaction_has_nonexistent
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1009,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1012,1
    - Dst: struct sql_dict_transaction_context*::async_callback
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1026,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1028,1
    - Dst: sql_dict_transaction_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1029,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - sql_result
    - ctx
    argTypes:
    - struct sql_commit_result*
    - struct sql_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1001
    functionDepth: 2
    functionLinenumber: 1001
    functionLinenumberEnd: 1030
    functionName: sql_dict_transaction_commit_callback
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - i_zero
    - struct sql_dict_transaction_context*::async_callback
    - t_strdup_printf
    - e_error
    - sql_dict_transaction_free
    - sql_dict_transaction_has_nonexistent
    linkageType: ''
    returnType: void
    signature: "void sql_dict_transaction_commit_callback(const struct sql_commit_result
      *sql_result,\n\t\t\t\t     struct sql_dict_transaction_context *ctx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1043,1
    - Dst: sql_dict_prev_inc_flush
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1044,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1045,1
    - Dst: sql_dict_prev_set_flush
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1046,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1049,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1051,1
    - Dst: sql_transaction_set_non_atomic
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1054,1
    - Dst: sql_transaction_rollback
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1057,1
    - Dst: sql_transaction_rollback
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1060,1
    - Dst: sql_transaction_commit
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1065,1
    - Dst: sql_transaction_commit_s
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1068,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1069,1
    - Dst: sql_dict_transaction_has_nonexistent
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1072,1
    - Dst: sql_dict_transaction_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1077,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1079,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 4
    argNames:
    - _ctx
    - async
    - callback
    - context
    argTypes:
    - struct dict_transaction_context*
    - bool
    - dict_transaction_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1032
    functionDepth: 2
    functionLinenumber: 1032
    functionLinenumberEnd: 1080
    functionName: sql_dict_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - i_zero
    - sql_transaction_commit_s
    - sql_dict_prev_set_flush
    - t_strdup
    - t_strdup_printf
    - sql_dict_prev_inc_flush
    - sql_dict_transaction_free
    - sql_dict_transaction_has_nonexistent
    - callback
    - sql_transaction_rollback
    - array_is_created
    - sql_transaction_set_non_atomic
    - sql_transaction_commit
    linkageType: ''
    returnType: void
    signature: "void sql_dict_transaction_commit(struct dict_transaction_context *_ctx,
      bool async,\n\t\t\t    dict_transaction_commit_callback_t *callback,\n\t\t\t
      \   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_transaction_rollback
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1087,1
    - Dst: sql_dict_transaction_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1082
    functionDepth: 2
    functionLinenumber: 1082
    functionLinenumberEnd: 1089
    functionName: sql_dict_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_transaction_rollback
    - sql_dict_transaction_free
    linkageType: ''
    returnType: void
    signature: void sql_dict_transaction_rollback(struct dict_transaction_context
      *_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sql_dict_statement_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1098,1
    - Dst: sql_statement_set_timestamp
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1101,1
    - Dst: sql_statement_set_no_log_expanded_values
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - query
    - params
    argTypes:
    - struct sql_dict_transaction_context*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1091
    functionDepth: 4
    functionLinenumber: 1091
    functionLinenumberEnd: 1105
    functionName: sql_dict_transaction_stmt_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_statement_set_timestamp
    - sql_statement_set_no_log_expanded_values
    - sql_dict_statement_init
    linkageType: ''
    returnType: struct sql_statement
    signature: "struct sql_statement *\nsql_dict_transaction_stmt_init(struct sql_dict_transaction_context
      *ctx,\n\t\t\t       const char *query,\n\t\t\t       const ARRAY_TYPE(sql_dict_param)
      *params)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1128,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1134,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1135,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1141,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1142,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1143,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1148,1
    - Dst: sql_db_table_prefix
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1149,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1150,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1151,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1154,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1155,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1157,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1157,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1161,1
    - Dst: sql_dict_value_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1162,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1168,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1169,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1170,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1175,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1176,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1177,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1183,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1184,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1185,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1187,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1188,1
    - Dst: sql_dict_field_get_value
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1189,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1195,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1196,1
    - Dst: sql_get_flags
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1198,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1200,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1202,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1205,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1206,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1210,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1211,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1213,1
    - Dst: sql_dict_transaction_stmt_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1215,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1215,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1224,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1226,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1227,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1228,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1232,1
    - Dst: sql_dict_value_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1233,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1239,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1240,1
    - Dst: sql_dict_transaction_stmt_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1244,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1244,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 80
    argCount: 4
    argNames:
    - ctx
    - build
    - stmt_r
    - error_r
    argTypes:
    - struct sql_dict_transaction_context*
    - struct dict_sql_build_query*
    - struct sql_statement**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1120
    functionDepth: 5
    functionLinenumber: 1120
    functionLinenumberEnd: 1246
    functionName: sql_dict_set_query
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - sql_db_table_prefix
    - str_append_c
    - array_append_space
    - sql_dict_transaction_stmt_init
    - str_append_str
    - array_get
    - sql_dict_field_get_value
    - sql_get_flags
    - t_array_init
    - ARRAY_TYPE
    - sql_dict_value_get
    - str_append
    - i_assert
    - t_strcut
    linkageType: ''
    returnType: int
    signature: "int sql_dict_set_query(struct sql_dict_transaction_context *ctx,\n\t\t\t
      \     const struct dict_sql_build_query *build,\n\t\t\t      struct sql_statement
      **stmt_r,\n\t\t\t      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1258,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1259,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1261,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1262,1
    - Dst: sql_db_table_prefix
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1263,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1266,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1268,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1269,1
    - Dst: sql_dict_where_build
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1273,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1277,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - build
    - set
    - query_r
    - params
    - error_r
    argTypes:
    - struct dict_sql_build_query*
    - struct dict_op_settings_private*
    - char**
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1248
    functionDepth: 4
    functionLinenumber: 1248
    functionLinenumberEnd: 1279
    functionName: sql_dict_update_query
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - sql_db_table_prefix
    - str_append_c
    - array_get
    - sql_dict_where_build
    - i_assert
    - t_strcut
    linkageType: ''
    returnType: int
    signature: "int sql_dict_update_query(const struct dict_sql_build_query *build,\n\t\t
      \     const struct dict_op_settings_private *set,\n\t\t      const char **query_r,
      ARRAY_TYPE(sql_dict_param) *params,\n\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1285,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1286,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1287,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1281
    functionDepth: 1
    functionLinenumber: 1281
    functionLinenumberEnd: 1290
    functionName: sql_dict_prev_set_free
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void sql_dict_prev_set_free(struct sql_dict_transaction_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1298,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1303,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1303,1
    - Dst: sql_dict_prev_set_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1306,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1311,1
    - Dst: sql_dict_find_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1315,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1316,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1318,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1328,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1330,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1332,1
    - Dst: sql_dict_set_query
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1337,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1338,1
    - Dst: sql_update_stmt
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1342,1
    - Dst: sql_dict_prev_set_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1344,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1292
    functionDepth: 6
    functionLinenumber: 1292
    functionLinenumberEnd: 1345
    functionName: sql_dict_prev_set_flush
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 1
    functionsReached:
    - i_zero
    - array_append_space
    - sql_dict_set_query
    - i_unreached
    - array_get
    - sql_dict_prev_set_free
    - t_array_init
    - i_strdup_printf
    - ARRAY_TYPE
    - sql_update_stmt
    - array_is_created
    - i_assert
    - sql_dict_find_map
    linkageType: ''
    returnType: void
    signature: void sql_dict_prev_set_flush(struct sql_dict_transaction_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1355,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1356,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1357,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1365,1
    - Dst: sql_dict_prev_inc_flush
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1366,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1367,1
    - Dst: sql_dict_prev_set_flush
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1368,1
    - Dst: sql_dict_find_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1370,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1372,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1376,1
    - Dst: sql_db_table_prefix
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1376,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1377,1
    - Dst: sql_dict_where_build
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1378,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1382,1
    - Dst: sql_dict_transaction_stmt_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1386,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1386,1
    - Dst: sql_update_stmt
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1387,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - _ctx
    - key
    argTypes:
    - struct dict_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1347
    functionDepth: 7
    functionLinenumber: 1347
    functionLinenumberEnd: 1389
    functionName: sql_dict_unset
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - sql_db_table_prefix
    - sql_dict_prev_set_flush
    - sql_dict_where_build
    - sql_dict_prev_inc_flush
    - i_strdup_printf
    - t_array_init
    - ARRAY_TYPE
    - sql_update_stmt
    - array_is_created
    - sql_dict_transaction_stmt_init
    - sql_dict_find_map
    linkageType: ''
    returnType: void
    signature: "void sql_dict_unset(struct dict_transaction_context *_ctx,\n\t\t\t
      \  const char *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1398,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1391
    functionDepth: 1
    functionLinenumber: 1391
    functionLinenumberEnd: 1405
    functionName: sql_dict_next_inc_row
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: unsigned int
    signature: 'unsigned int *

      sql_dict_next_inc_row(struct sql_dict_transaction_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1411,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1412,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1407
    functionDepth: 1
    functionLinenumber: 1407
    functionLinenumberEnd: 1414
    functionName: sql_dict_prev_inc_free
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void sql_dict_prev_inc_free(struct sql_dict_transaction_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1422,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1425,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1429,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1429,1
    - Dst: sql_dict_prev_inc_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1432,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1436,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1437,1
    - Dst: sql_dict_find_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1441,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1442,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1444,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1456,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1457,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1459,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1461,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1465,1
    - Dst: sql_dict_update_query
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1470,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1471,1
    - Dst: sql_dict_transaction_stmt_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1476,1
    - Dst: sql_update_stmt_get_rows
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1477,1
    - Dst: sql_dict_next_inc_row
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1478,1
    - Dst: sql_dict_prev_inc_free
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1480,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sql_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1416
    functionDepth: 5
    functionLinenumber: 1416
    functionLinenumberEnd: 1481
    functionName: sql_dict_prev_inc_flush
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 2
    functionsReached:
    - i_zero
    - sql_dict_update_query
    - array_append_space
    - sql_dict_transaction_stmt_init
    - sql_update_stmt_get_rows
    - i_unreached
    - array_get
    - sql_dict_next_inc_row
    - array_is_created
    - t_array_init
    - i_strdup_printf
    - ARRAY_TYPE
    - sql_dict_prev_inc_free
    - i_assert
    - sql_dict_find_map
    linkageType: ''
    returnType: void
    signature: void sql_dict_prev_inc_flush(struct sql_dict_transaction_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1491,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1494,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1501,1
    - Dst: sql_dict_find_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1506,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1507,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1509,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 5
    argNames:
    - dict
    - prev1
    - map2
    - map2_key
    - map2_pattern_values
    argTypes:
    - struct sql_dict*
    - struct sql_dict_prev*
    - struct dict_sql_map*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1483
    functionDepth: 3
    functionLinenumber: 1483
    functionLinenumberEnd: 1511
    functionName: sql_dict_maps_are_mergeable
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ARRAY_TYPE
    - array_equal_fn
    - i_assert
    - sql_dict_find_map
    linkageType: ''
    returnType: bool
    signature: "bool sql_dict_maps_are_mergeable(struct sql_dict *dict,\n\t\t\t    const
      struct sql_dict_prev *prev1,\n\t\t\t    const struct dict_sql_map *map2,\n\t\t\t
      \   const char *map2_key,\n\t\t\t    const ARRAY_TYPE(const_string) *map2_pattern_values)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1520,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1527,1
    - Dst: sql_dict_prev_inc_flush
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1528,1
    - Dst: sql_dict_find_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1530,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1532,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1537,1
    - Dst: sql_dict_maps_are_mergeable
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1538,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1538,1
    - Dst: sql_dict_prev_set_flush
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1541,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1544,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1545,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1548,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1550,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - _ctx
    - key
    - value
    argTypes:
    - struct dict_transaction_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1513
    functionDepth: 7
    functionLinenumber: 1513
    functionLinenumberEnd: 1552
    functionName: sql_dict_set
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - sql_dict_prev_set_flush
    - sql_dict_maps_are_mergeable
    - i_strdup
    - sql_dict_prev_inc_flush
    - i_strdup_printf
    - ARRAY_TYPE
    - array_front
    - array_is_created
    - sql_dict_find_map
    linkageType: ''
    returnType: void
    signature: "void sql_dict_set(struct dict_transaction_context *_ctx,\n\t\t\t const
      char *key, const char *value)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1561,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1568,1
    - Dst: sql_dict_prev_set_flush
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1569,1
    - Dst: sql_dict_find_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1571,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1573,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1578,1
    - Dst: sql_dict_maps_are_mergeable
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1579,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1579,1
    - Dst: sql_dict_prev_inc_flush
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1582,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1585,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1586,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1589,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1591,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - _ctx
    - key
    - diff
    argTypes:
    - struct dict_transaction_context*
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1554
    functionDepth: 7
    functionLinenumber: 1554
    functionLinenumberEnd: 1593
    functionName: sql_dict_atomic_inc
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - sql_dict_prev_set_flush
    - sql_dict_maps_are_mergeable
    - i_strdup
    - sql_dict_prev_inc_flush
    - i_strdup_printf
    - ARRAY_TYPE
    - array_front
    - array_is_created
    - sql_dict_find_map
    linkageType: ''
    returnType: void
    signature: "void sql_dict_atomic_inc(struct dict_transaction_context *_ctx,\n\t\t\t\tconst
      char *key, long long diff)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1599,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1602,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1603,1
    - Dst: sql_transaction_begin
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1609,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1610,1
    - Dst: sql_db_table_prefix
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1612,1
    - Dst: sql_dict_statement_init
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1614,1
    - Dst: sql_update_stmt
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1615,1
    - Dst: sql_transaction_commit_s
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1616,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - dict
    - map
    - error_r
    argTypes:
    - struct sql_dict*
    - struct dict_sql_map*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1595
    functionDepth: 4
    functionLinenumber: 1595
    functionLinenumberEnd: 1622
    functionName: sql_dict_expire_map
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - sql_transaction_begin
    - sql_transaction_commit_s
    - array_append_space
    - sql_db_table_prefix
    - t_strdup_printf
    - t_array_init
    - ARRAY_TYPE
    - sql_update_stmt
    - sql_dict_statement_init
    linkageType: ''
    returnType: int
    signature: "int sql_dict_expire_map(struct sql_dict *dict, const struct dict_sql_map
      *map,\n\t\t    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1630,1
    - Dst: sql_dict_expire_map
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1632,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - _dict
    - error_r
    argTypes:
    - struct dict*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1624
    functionDepth: 5
    functionLinenumber: 1624
    functionLinenumberEnd: 1638
    functionName: sql_dict_expire_scan
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 0
    functionsReached:
    - array_foreach
    - sql_dict_expire_map
    linkageType: ''
    returnType: int
    signature: int sql_dict_expire_scan(struct dict *_dict, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1662
    functionDepth: 1
    functionLinenumber: 1662
    functionLinenumberEnd: 1665
    functionName: dict_sql_register
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 1
    functionsReached:
    - dict_driver_register
    linkageType: ''
    returnType: void
    signature: void dict_sql_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_driver_unregister
      Src: /src/dovecot/src/lib-dict-backend/dict-sql.c:1669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1667
    functionDepth: 1
    functionLinenumber: 1667
    functionLinenumberEnd: 1670
    functionName: dict_sql_unregister
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-sql.c
    functionUses: 1
    functionsReached:
    - dict_driver_unregister
    linkageType: ''
    returnType: void
    signature: void dict_sql_unregister(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:79,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:88,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:89,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:94,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:96,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:97,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:102,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:103,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - map
    - path
    - values
    argTypes:
    - struct dict_ldap_map_settings*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 115
    functionName: dict_ldap_map_match
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - strchr
    - array_push_back
    - strlen
    - t_strdup_until
    - array_clear
    linkageType: ''
    returnType: bool
    signature: "bool dict_ldap_map_match(const struct dict_ldap_map_settings *map,
      const char *path,\n\t\t    ARRAY_TYPE(const_string) *values)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:124,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:125,1
    - Dst: dict_ldap_map_match
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - dict
    - path
    - values
    argTypes:
    - struct ldap_dict*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 131
    functionName: ldap_dict_find_map
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - dict_ldap_map_match
    - array_get
    - t_array_init
    linkageType: ''
    returnType: struct dict_ldap_map_settings
    signature: "struct dict_ldap_map_settings *\nldap_dict_find_map(struct ldap_dict
      *dict, const char *path,\n\t\t  ARRAY_TYPE(const_string) *values)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_client_init_auto
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dict
    - error_r
    argTypes:
    - struct ldap_dict*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: dict_ldap_connect
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_client_init_auto
    linkageType: ''
    returnType: int
    signature: int dict_ldap_connect(struct ldap_dict *dict, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: IS_LDAP_ESCAPED_CHAR
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LDAP_ESCAPED_CHAR(c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_LDAP_ESCAPED_CHAR
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:147,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:149,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:150,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:152,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:154,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - str
    - ATTR_UNUSED
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 158
    functionName: ldap_escape
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - IS_LDAP_ESCAPED_CHAR
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char *ldap_escape(const char *str, void *context ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_ldap_settings_get
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:165,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:168,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:169,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:171,1
    - Dst: dict_ldap_connect
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:175,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:176,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:177,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - dict_driver
    - event
    - dict_r
    - error_r
    argTypes:
    - struct dict*
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 160
    functionDepth: 5
    functionLinenumber: 160
    functionLinenumberEnd: 185
    functionName: ldap_dict_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - dict_ldap_settings_get
    - event_create
    - p_new
    - event_unref
    - settings_free
    - pool_unref
    - dict_ldap_connect
    linkageType: ''
    returnType: int
    signature: "int ldap_dict_init(const struct dict *dict_driver, struct event *event,\n\t\t
      \  struct dict **dict_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_client_deinit
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:192,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:193,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:194,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 196
    functionName: ldap_dict_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_client_deinit
    - event_unref
    - settings_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void ldap_dict_deinit(struct dict *_dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:202,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:205,1
    - Dst: dict_switch_ioloop
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:206,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:209,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:211,1
    - Dst: dict_switch_ioloop
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:212,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:213,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 216
    functionName: ldap_dict_wait
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - dict_switch_ioloop
    - io_loop_set_current
    - io_loop_destroy
    - io_loop_create
    - i_assert
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void ldap_dict_wait(struct dict *_dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_client_switch_ioloop
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 224
    functionName: ldap_dict_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_client_switch_ioloop
    linkageType: ''
    returnType: bool
    signature: bool ldap_dict_switch_ioloop(struct dict *dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:232,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:232,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct dict_lookup_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 236
    functionName: ldap_dict_lookup_done
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - pool_datastack_create
    - t_strdup
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: void ldap_dict_lookup_done(const struct dict_lookup_result *result,
      void *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:241,1
    - Dst: ldap_entry_dn
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:242,1
    - Dst: ldap_entry_get_attribute
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:246,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:248,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:252,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:253,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:253,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:254,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:258,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:265,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:266,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:266,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:269,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:270,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:271,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:274,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:275,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:276,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:277,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:278,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - entry
    - op
    argTypes:
    - struct ldap_entry*
    - struct dict_ldap_op*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 281
    functionName: ldap_dict_lookup_cb_values
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - p_array_init
    - ldap_entry_dn
    - e_debug
    - array_foreach_elem
    - array_push_back
    - settings_free
    - array_not_empty
    - array_count
    - array_pop_back
    - settings_get_filter
    - ARRAY_TYPE
    - array_front
    - t_str_lcase
    - array_append_zero
    - ldap_entry_get_attribute
    linkageType: ''
    returnType: void
    signature: void ldap_dict_lookup_cb_values(const struct ldap_entry *entry, struct
      dict_ldap_op *op)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ldap_result_has_failed
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:292,1
    - Dst: ldap_result_get_error
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:294,1
    - Dst: ldap_search_iterator_init
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:296,1
    - Dst: ldap_search_iterator_next
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:297,1
    - Dst: ldap_dict_lookup_cb_values
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:299,1
    - Dst: ldap_search_iterator_deinit
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:301,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:304,1
    - Dst: struct dict_ldap_op*::callback
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:305,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:307,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:308,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:311,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:312,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - result
    - op
    argTypes:
    - struct ldap_result*
    - struct dict_ldap_op*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 313
    functionName: ldap_dict_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_search_iterator_deinit
    - event_unref
    - ldap_result_get_error
    - io_loop_set_current
    - ldap_dict_lookup_cb_values
    - ldap_search_iterator_next
    - pool_unref
    - io_loop_stop
    - ldap_result_has_failed
    - ldap_search_iterator_init
    - struct dict_ldap_op*::callback
    linkageType: ''
    returnType: void
    signature: void ldap_dict_lookup_callback(struct ldap_result *result, struct dict_ldap_op
      *op)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldap_dict_lookup_async
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:322,1
    - Dst: ldap_dict_wait
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:324,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - dict
    - set
    - pool
    - key
    - values_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 332
    functionName: ldap_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_dict_wait
    - ldap_dict_lookup_async
    - p_strarray_dup
    linkageType: ''
    returnType: int
    signature: "int ldap_dict_lookup(struct dict *dict, const struct dict_op_settings
      *set,\n\t\t pool_t pool, const char *key,\n\t\t const char *const **values_r,
      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:385,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:386,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:389,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:390,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - key
    - value_r
    - _ctx
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 399
    functionName: ldap_dict_ldap_expand
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    - array_not_empty
    - array_foreach
    - t_str_lcase
    linkageType: ''
    returnType: int
    signature: "int ldap_dict_ldap_expand(const char *key, const char **value_r, void
      *_ctx,\n\t\t      const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:409,1
    - Dst: array_ptr_to_idx
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:411,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:412,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - key
    - value_r
    - _ctx
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 418
    functionName: ldap_dict_pattern_expand
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - array_ptr_to_idx
    - array_idx_elem
    - t_strdup_printf
    - array_lsearch
    linkageType: ''
    returnType: int
    signature: "int ldap_dict_pattern_expand(const char *key, const char **value_r,
      void *_ctx,\n\t\t\t const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:430,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:431,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:437,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:438,1
    - Dst: ldap_dict_find_map
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:440,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:441,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:451,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:453,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:456,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:461,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:463,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:468,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:469,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:470,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:475,1
    - Dst: ldap_search_start
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:484,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:485,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:488,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:489,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:490,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 5
    argNames:
    - dict
    - set
    - key
    - callback
    - context
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - dict_lookup_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 492
    functionName: ldap_dict_lookup_async
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 1
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - event_create
    - p_strdup
    - str_begins_with
    - p_new
    - p_array_init
    - event_unref
    - settings_free
    - pool_unref
    - event_set_ptr
    - settings_get_filter
    - callback
    - ldap_dict_find_map
    - ldap_search_start
    linkageType: ''
    returnType: void
    signature: "void ldap_dict_lookup_async(struct dict *dict,\n\t\t\t    const struct
      dict_op_settings *set,\n\t\t\t    const char *key,\n\t\t\t    dict_lookup_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 514
    functionName: dict_ldap_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - dict_driver_register
    linkageType: ''
    returnType: void
    signature: void dict_ldap_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_clients_cleanup
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:518,1
    - Dst: dict_driver_unregister
      Src: /src/dovecot/src/lib-dict-backend/dict-ldap.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 520
    functionName: dict_ldap_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    functionUses: 0
    functionsReached:
    - dict_driver_unregister
    - ldap_clients_cleanup
    linkageType: ''
    returnType: void
    signature: void dict_ldap_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:72,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:78,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:80,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:82,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:85,1
    - Dst: open
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:87,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:89,1
    - Dst: cdb_dict_deinit
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:90,1
    - Dst: cdb_init
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:95,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:96,1
    - Dst: cdb_dict_deinit
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:97,1
    - Dst: cdb_init
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 4
    argNames:
    - dict_driver
    - event
    - dict_r
    - error_r
    argTypes:
    - struct dict*
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 106
    functionName: cdb_dict_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    functionUses: 0
    functionsReached:
    - i_zero
    - cdb_init
    - cdb_dict_deinit
    - open
    - t_strdup_printf
    - settings_free
    - i_strdup
    - i_new
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int cdb_dict_init(const struct dict *dict_driver, struct event *event,\n\t
      \     struct dict **dict_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_free
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:114,1
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:116,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:118,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 120
    functionName: cdb_dict_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    functionUses: 1
    functionsReached:
    - i_close_fd_path
    - cdb_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void cdb_dict_deinit(struct dict *_dict)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: cdb_find
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:136,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:136,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:138,1
    - Dst: cdb_find
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:143,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:143,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:145,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:151,1
    - Dst: cdb_datalen
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:158,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:159,1
    - Dst: cdb_read
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:160,1
    - Dst: cdb_datapos
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:161,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:164,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 6
    argNames:
    - _dict
    - ATTR_UNUSED
    - pool
    - key
    - values_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 168
    functionName: cdb_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    functionUses: 0
    functionsReached:
    - cdb_datalen
    - cdb_find
    - p_new
    - ENUM_NEGATE
    - cdb_datapos
    - strlen
    - t_strdup_printf
    - cdb_read
    - p_malloc
    linkageType: ''
    returnType: int
    signature: "int cdb_dict_lookup(struct dict *_dict,\n\t\tconst struct dict_op_settings
      *set ATTR_UNUSED,\n\t\tpool_t pool,\n\t        const char *key, const char *const
      **values_r,\n\t        const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:176,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:180,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:182,1
    - Dst: cdb_seqinit
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - _dict
    - ATTR_UNUSED
    - path
    - flags
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - enum dict_iterate_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 187
    functionName: cdb_dict_iterate_init
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - buffer_create_dynamic
    - i_new
    - cdb_seqinit
    linkageType: ''
    returnType: struct dict_iterate_context
    signature: "struct dict_iterate_context *\ncdb_dict_iterate_init(struct dict *_dict,\n\t\t
      \     const struct dict_op_settings *set ATTR_UNUSED,\n\t\t      const char
      *path, enum dict_iterate_flags flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cdb_seqnext
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:197,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:199,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:204,1
    - Dst: cdb_keylen
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:206,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:207,1
    - Dst: cdb_read
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:209,1
    - Dst: cdb_keypos
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:209,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - key_r
    argTypes:
    - struct cdb_dict_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 219
    functionName: cdb_dict_next
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    functionUses: 0
    functionsReached:
    - cdb_keylen
    - cdb_seqnext
    - buffer_set_used_size
    - cdb_read
    - buffer_append_space_unsafe
    - cdb_keypos
    - i_strdup_printf
    linkageType: ''
    returnType: bool
    signature: bool cdb_dict_next(struct cdb_dict_iterate_context *ctx, const char
      **key_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cdb_dict_next
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:235,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:237,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:239,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:241,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:242,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:242,1
    - Dst: cdb_datalen
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:256,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:257,1
    - Dst: cdb_read
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:259,1
    - Dst: cdb_datapos
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:259,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:260,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 3
    argNames:
    - _ctx
    - key_r
    - values_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 270
    functionName: cdb_dict_iterate
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - cdb_datalen
    - str_begins_with
    - cdb_datapos
    - strlen
    - cdb_read
    - buffer_append_space_unsafe
    - cdb_dict_next
    - i_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool cdb_dict_iterate(struct dict_iterate_context *_ctx,\n\t\t\t     const
      char **key_r, const char *const **values_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:279,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:283,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:284,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:285,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-backend/dict-cdb.c:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 289
    functionName: cdb_dict_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    functionUses: 0
    functionsReached:
    - t_strdup
    - i_free
    - buffer_free
    linkageType: ''
    returnType: int
    signature: "int cdb_dict_iterate_deinit(struct dict_iterate_context *_ctx,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:17,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 21
    functionName: imapc_msgmap_init
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct imapc_msgmap
    signature: struct imapc_msgmap *imapc_msgmap_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:29,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _msgmap
    argTypes:
    - struct imapc_msgmap**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: imapc_msgmap_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void imapc_msgmap_deinit(struct imapc_msgmap **_msgmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgmap
    argTypes:
    - struct imapc_msgmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: imapc_msgmap_count
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t imapc_msgmap_count(struct imapc_msgmap *msgmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msgmap
    argTypes:
    - struct imapc_msgmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: imapc_msgmap_uidnext
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t imapc_msgmap_uidnext(struct imapc_msgmap *msgmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - msgmap
    - rseq
    argTypes:
    - struct imapc_msgmap*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: imapc_msgmap_rseq_to_uid
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached:
    - array_idx
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t imapc_msgmap_rseq_to_uid(struct imapc_msgmap *msgmap, uint32_t
      rseq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:56,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - msgmap
    - uid
    - rseq_r
    argTypes:
    - struct imapc_msgmap*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 65
    functionName: imapc_msgmap_uid_to_rseq
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached:
    - array_bsearch
    - array_front
    linkageType: ''
    returnType: bool
    signature: "bool imapc_msgmap_uid_to_rseq(struct imapc_msgmap *msgmap,\n\t\t\t
      \     uint32_t uid, uint32_t *rseq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:70,1
    - Dst: imapc_msgmap_count
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:70,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:71,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - msgmap
    - rseq
    - uid
    argTypes:
    - struct imapc_msgmap*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: imapc_msgmap_append
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_push_back
    - imapc_msgmap_count
    linkageType: ''
    returnType: void
    signature: "void imapc_msgmap_append(struct imapc_msgmap *msgmap,\n\t\t\t uint32_t
      rseq, uint32_t uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:80,1
    - Dst: imapc_msgmap_count
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:80,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - msgmap
    - rseq
    argTypes:
    - struct imapc_msgmap*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 83
    functionName: imapc_msgmap_expunge
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached:
    - array_delete
    - i_assert
    - imapc_msgmap_count
    linkageType: ''
    returnType: void
    signature: void imapc_msgmap_expunge(struct imapc_msgmap *msgmap, uint32_t rseq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-imap-client/imapc-msgmap.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msgmap
    argTypes:
    - struct imapc_msgmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: imapc_msgmap_reset
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    functionUses: 0
    functionsReached:
    - array_clear
    linkageType: ''
    returnType: void
    signature: void imapc_msgmap_reset(struct imapc_msgmap *msgmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 10
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: DEF_MSECS
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_MSECS(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: DEF_SECS
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_SECS(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 132
    functionName: imapc_capability_lookup
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-settings.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: enum imapc_capability
    signature: enum imapc_capability imapc_capability_lookup(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:166,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:167,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:168,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:169,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:170,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - set
    - throttle_str
    - error_r
    argTypes:
    - struct imapc_settings*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 175
    functionName: imapc_settings_parse_throttle
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-settings.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - str_to_uint
    - str_array_length
    linkageType: ''
    returnType: int
    signature: "int imapc_settings_parse_throttle(struct imapc_settings *set,\n\t\t\t
      \     const char *throttle_str, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:185,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:189,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:194,1
    - Dst: imapc_settings_parse_throttle
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:195,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:199,1
    - Dst: imapc_capability_lookup
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:201,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:208,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct imapc_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 215
    functionName: imapc_settings_parse_features
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins
    - t_strdup_printf
    - settings_boollist_get
    - imapc_capability_lookup
    - imapc_settings_parse_throttle
    linkageType: ''
    returnType: int
    signature: "int imapc_settings_parse_features(struct imapc_settings *set,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_settings_parse_features
      Src: /src/dovecot/src/lib-imap-client/imapc-settings.c:230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 3
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: imapc_settings_check
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-settings.c
    functionUses: 0
    functionsReached:
    - imapc_settings_parse_features
    linkageType: ''
    returnType: bool
    signature: "bool imapc_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:81,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 87
    functionName: test_imapc_cmd_last_reply_pop
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_pop_front
    linkageType: ''
    returnType: void
    signature: void test_imapc_cmd_last_reply_pop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:91,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:92,1
    - Dst: test_imapc_cmd_last_reply_pop
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum imapc_command_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: test_imapc_cmd_last_reply_expect
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_run
    - array_count
    - test_imapc_cmd_last_reply_pop
    linkageType: ''
    returnType: bool
    signature: bool test_imapc_cmd_last_reply_expect(enum imapc_command_state state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:100,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - reply
    - ATTR_UNUSED
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: imapc_login_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - i_debug
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_login_callback(const struct imapc_command_reply *reply,\n\t\t\t\t
      void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:112,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:116,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - reply
    - ATTR_UNUSED
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: imapc_command_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - i_debug
    - imapc_client_stop
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void imapc_command_callback(const struct imapc_command_reply *reply,\n\t\t\t\t
      \  void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:125,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:126,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: imapc_reopen_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_mailbox_cmd
    - imapc_command_send
    linkageType: ''
    returnType: void
    signature: void imapc_reopen_callback(void *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:138,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:141,1
    - Dst: printf
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:144,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:145,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:147,1
    - Dst: printf
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - server
    - expected_line
    argTypes:
    - struct test_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 154
    functionName: test_imapc_server_expect_full
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - printf
    - i_stream_read_next_line
    - i_stream_get_error
    - i_debug
    linkageType: ''
    returnType: bool
    signature: "bool test_imapc_server_expect_full(struct test_server *server,\n\t\t\t
      \     const char *expected_line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_imapc_server_expect_full
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - expected_line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 159
    functionName: test_imapc_server_expect
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_imapc_server_expect_full
    linkageType: ''
    returnType: bool
    signature: bool test_imapc_server_expect(const char *expected_line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:165,1
    - Dst: net_accept
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:168,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:171,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:173,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:174,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:175,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct test_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 177
    functionName: test_server_wait_connection_common
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - i_stream_create_fd
    - fd_set_nonblock
    - o_stream_set_no_error_handling
    - net_accept
    - i_assert
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_wait_connection_common(struct test_server *server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection_common
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:182,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - server
    - send_banner
    argTypes:
    - struct test_server*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 187
    functionName: test_server_wait_connection
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_server_wait_connection_common
    linkageType: ''
    returnType: void
    signature: void test_server_wait_connection(struct test_server *server, bool send_banner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection_common
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:193,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - server
    - send_banner
    argTypes:
    - struct test_server*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: test_server_wait_connection_imap4rev2
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_server_wait_connection_common
    linkageType: ''
    returnType: void
    signature: void test_server_wait_connection_imap4rev2(struct test_server *server,
      bool send_banner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:205,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:207,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:208,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct test_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 210
    functionName: test_server_disconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - o_stream_unref
    - i_debug
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_server_disconnect(struct test_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_disconnect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:214,1
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - send_banner
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 3
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: test_server_disconnect_and_wait
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_wait_connection
    - test_server_disconnect
    linkageType: ''
    returnType: void
    signature: void test_server_disconnect_and_wait(bool send_banner)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_listen
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:224,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:226,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:228,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:229,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bind_port
    argTypes:
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 233
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - fd_set_nonblock
    - i_fatal
    - net_ip2addr
    - i_debug
    - net_listen
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(in_port_t *bind_port)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:239,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:242,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:244,1
    - Dst: server_test
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:246,1
    - Dst: test_server_disconnect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:247,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:248,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:251,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:253,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:254,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - server_test
    argTypes:
    - test_server_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 261
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - server_test
    - settings_simple_deinit
    - i_close_fd
    - test_server_disconnect
    - io_loop_create
    - i_set_failure_prefix
    - io_loop_destroy
    - main_deinit
    - i_debug
    linkageType: ''
    returnType: int
    signature: int test_run_server(test_server_init_t *server_test)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:268,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:271,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:273,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:278,1
    - Dst: imapc_client_init
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:279,1
    - Dst: client_test
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:280,1
    - Dst: imapc_client_logout
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:282,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:282,1
    - Dst: imapc_client_deinit
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:284,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:285,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:288,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - client_test
    - temp_path_prefix
    argTypes:
    - test_client_init_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 289
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_logout
    - i_sleep_msecs
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - imapc_client_init
    - array_count
    - test_assert
    - client_test
    - i_debug
    - imapc_client_deinit
    linkageType: ''
    returnType: void
    signature: void test_run_client(test_client_init_t *client_test, const char *temp_path_prefix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:301,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:303,1
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:306,1
    - Dst: test_generate_settings
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:308,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:308,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:310,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:312,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:313,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:314,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:315,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:319,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:321,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:324,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:326,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:327,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:328,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:330,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:337,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - client_test
    - server_test
    - reduce_timeout
    argTypes:
    - test_client_init_t*
    - test_server_init_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 338
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dec2str
    - test_subprocess_fork
    - settings_simple_deinit
    - i_close_fd
    - i_fatal
    - t_strdup_printf
    - test_subprocess_kill_all
    - settings_simple_init
    - t_array_init
    - mkdir
    - test_open_server_fd
    - test_dir_get
    - test_run_client
    - unlink_directory
    - test_generate_settings
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(test_client_init_t *client_test,\n\t\t
      \      test_server_init_t *server_test,\n\t\t       bool reduce_timeout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:346,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:348,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:349,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:351,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:352,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 354
    functionName: test_imapc_connect_failed_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_run
    - test_expect_no_more_errors
    - test_expect_errors
    - imapc_client_login
    - imapc_client_set_login_callback
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_connect_failed_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:358,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:359,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 361
    functionName: test_imapc_connect_failed
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_connect_failed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:369,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:371,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:372,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:373,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:374,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 376
    functionName: test_imapc_banner_hangs_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_run
    - test_expect_no_more_errors
    - test_expect_errors
    - imapc_client_login
    - imapc_client_set_login_callback
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_banner_hangs_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:382,1
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:384,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:384,1
    - Dst: test_server_disconnect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 386
    functionName: test_imapc_banner_hangs_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_wait_connection
    - test_server_disconnect
    - test_assert
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_imapc_banner_hangs_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:390,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:391,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 395
    functionName: test_imapc_banner_hangs
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_banner_hangs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:403,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:405,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:407,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:408,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:409,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:412,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:413,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 416
    functionName: test_imapc_login_hangs_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_run
    - test_expect_no_more_errors
    - imapc_client_login
    - imapc_client_set_login_callback
    - test_expect_error_string
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_login_hangs_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:422,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:423,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:423,1
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:426,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:427,1
    - Dst: test_imapc_server_expect_full
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:427,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:430,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:430,1
    - Dst: test_server_disconnect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 432
    functionName: test_imapc_login_hangs_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_wait_connection
    - test_imapc_server_expect
    - test_server_disconnect
    - i_stream_read_next_line
    - test_imapc_server_expect_full
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_login_hangs_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:436,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:437,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 441
    functionName: test_imapc_login_hangs
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_login_hangs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:449,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:451,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:452,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:453,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:454,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 456
    functionName: test_imapc_login_fails_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_run
    - test_expect_no_more_errors
    - imapc_client_login
    - imapc_client_set_login_callback
    - test_expect_error_string
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_login_fails_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:460,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:461,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:461,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 458
    functionDepth: 3
    functionLinenumber: 458
    functionLinenumberEnd: 464
    functionName: test_imapc_login_fails_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_wait_connection
    - o_stream_nsend_str
    - test_imapc_server_expect
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_login_fails_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:468,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:469,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 473
    functionName: test_imapc_login_fails
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_login_fails(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:484,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:486,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:487,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:488,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:492,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:493,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:494,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:495,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:496,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:497,1
    - Dst: test_imapc_cmd_last_reply_pop
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:497,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:501,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:502,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:503,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:504,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:505,1
    - Dst: test_imapc_cmd_last_reply_pop
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 506
    functionName: test_imapc_reconnect_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_run
    - test_expect_no_more_errors
    - imapc_command_send
    - imapc_client_login
    - imapc_client_set_login_callback
    - test_expect_error_string
    - test_assert
    - test_imapc_cmd_last_reply_pop
    - imapc_client_cmd
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:510,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:511,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:511,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:513,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:515,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:515,1
    - Dst: test_server_disconnect_and_wait
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:516,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:518,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:518,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:520,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:521,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:521,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:522,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:524,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:524,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:525,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:527,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 508
    functionDepth: 4
    functionLinenumber: 508
    functionLinenumberEnd: 528
    functionName: test_imapc_reconnect_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_disconnect_and_wait
    - test_server_wait_connection
    - test_imapc_server_expect
    - i_stream_read_next_line
    - test_assert
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:532,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:533,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 537
    functionName: test_imapc_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:548,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:550,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:551,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:552,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:556,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:557,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:558,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:559,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:560,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:561,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:564,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:565,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:566,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:567,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:568,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:569,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:569,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:573,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:573,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:574,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 543
    functionDepth: 3
    functionLinenumber: 543
    functionLinenumberEnd: 575
    functionName: test_imapc_reconnect_resend_cmds_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_run
    - test_expect_no_more_errors
    - imapc_command_send
    - test_imapc_cmd_last_reply_expect
    - imapc_client_login
    - imapc_client_set_login_callback
    - test_expect_error_string
    - test_assert
    - imapc_client_cmd
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_resend_cmds_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:579,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:580,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:580,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:582,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:584,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:584,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:585,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:585,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:586,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:586,1
    - Dst: test_server_disconnect_and_wait
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:587,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:589,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:589,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:591,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:592,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:592,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:593,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:594,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:594,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:595,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:597,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:597,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:598,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:600,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 577
    functionDepth: 4
    functionLinenumber: 577
    functionLinenumberEnd: 601
    functionName: test_imapc_reconnect_resend_cmds_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_disconnect_and_wait
    - test_server_wait_connection
    - test_imapc_server_expect
    - i_stream_read_next_line
    - test_assert
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_resend_cmds_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:605,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:606,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 610
    functionName: test_imapc_reconnect_resend_commands
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_resend_commands(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:621,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:623,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:624,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:625,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:629,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:630,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:631,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:632,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:633,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:634,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:637,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:638,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:639,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:640,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:641,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:642,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:642,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:644,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:645,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:645,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:647,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:648,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 616
    functionDepth: 3
    functionLinenumber: 616
    functionLinenumberEnd: 650
    functionName: test_imapc_reconnect_resend_cmds_failed_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_run
    - test_expect_no_more_errors
    - imapc_command_send
    - test_imapc_cmd_last_reply_expect
    - imapc_client_login
    - imapc_client_set_login_callback
    - test_expect_error_string
    - test_assert
    - imapc_client_cmd
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_resend_cmds_failed_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:654,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:655,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:655,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:657,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:659,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:659,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:660,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:660,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:661,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:661,1
    - Dst: test_server_disconnect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:662,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 652
    functionDepth: 3
    functionLinenumber: 652
    functionLinenumberEnd: 665
    functionName: test_imapc_reconnect_resend_cmds_failed_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - test_server_wait_connection
    - test_imapc_server_expect
    - test_server_disconnect
    - test_assert
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_resend_cmds_failed_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:669,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:670,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: test_imapc_reconnect_resend_commands_failed
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_resend_commands_failed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:686,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:688,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:689,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:690,1
    - Dst: imapc_client_mailbox_open
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:694,1
    - Dst: imapc_client_mailbox_set_reopen_cb
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:695,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:697,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:698,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:699,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:700,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:701,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:701,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:704,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:705,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:706,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:709,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:710,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:711,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:712,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:713,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:714,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:714,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:718,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:718,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:719,1
    - Dst: test_imapc_cmd_last_reply_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:719,1
    - Dst: imapc_client_mailbox_close
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 680
    functionDepth: 3
    functionLinenumber: 680
    functionLinenumberEnd: 722
    functionName: test_imapc_reconnect_mailbox_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_run
    - imapc_client_mailbox_cmd
    - test_expect_no_more_errors
    - imapc_command_send
    - test_imapc_cmd_last_reply_expect
    - imapc_client_login
    - imapc_client_set_login_callback
    - test_expect_error_string
    - imapc_client_mailbox_close
    - test_assert
    - imapc_client_mailbox_set_reopen_cb
    - imapc_client_mailbox_open
    - imapc_client_cmd
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_mailbox_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:726,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:727,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:727,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:729,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:731,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:731,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:732,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:734,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:734,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:735,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:735,1
    - Dst: test_server_disconnect_and_wait
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:736,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:738,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:738,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:740,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:741,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:741,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:742,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:743,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:743,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:744,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:746,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:746,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:747,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:749,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 724
    functionDepth: 4
    functionLinenumber: 724
    functionLinenumberEnd: 750
    functionName: test_imapc_reconnect_mailbox_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_disconnect_and_wait
    - test_server_wait_connection
    - test_imapc_server_expect
    - i_stream_read_next_line
    - test_assert
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_mailbox_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:754,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:755,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 759
    functionName: test_imapc_reconnect_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_reconnect_mailbox(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:769,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:769,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 773
    functionName: test_imapc_client_get_capabilities_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_get_capabilities
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:777,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:778,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:778,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:780,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:782,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:782,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:783,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:785,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 775
    functionDepth: 3
    functionLinenumber: 775
    functionLinenumberEnd: 786
    functionName: test_imapc_client_get_capabilities_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_wait_connection
    - test_imapc_server_expect
    - i_stream_read_next_line
    - test_assert
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:790,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:791,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 788
    functionDepth: 1
    functionLinenumber: 788
    functionLinenumberEnd: 795
    functionName: test_imapc_client_get_capabilities
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:805,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:806,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:806,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:808,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 812
    functionName: test_imapc_client_get_capabilities_reconnected_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - imapc_client_get_capabilities
    - test_assert
    - test_expect_error_string
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_reconnected_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:816,1
    - Dst: test_server_disconnect_and_wait
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:817,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:819,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:819,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:821,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:823,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:823,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:824,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:826,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 814
    functionDepth: 4
    functionLinenumber: 814
    functionLinenumberEnd: 827
    functionName: test_imapc_client_get_capabilities_reconnected_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_disconnect_and_wait
    - test_server_wait_connection
    - test_imapc_server_expect
    - i_stream_read_next_line
    - test_assert
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_reconnected_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:831,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:833,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 838
    functionName: test_imapc_client_get_capabilities_reconnected
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_reconnected(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:848,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:849,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:849,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 852
    functionName: test_imapc_client_get_capabilities_disconnected_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - imapc_client_get_capabilities
    - test_expect_errors
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_disconnected_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:856,1
    - Dst: test_server_disconnect_and_wait
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 854
    functionDepth: 4
    functionLinenumber: 854
    functionLinenumberEnd: 858
    functionName: test_imapc_client_get_capabilities_disconnected_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_server_wait_connection
    - test_server_disconnect_and_wait
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_disconnected_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:862,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:864,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 869
    functionName: test_imapc_client_get_capabilities_disconnected
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_disconnected(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:880,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:880,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 876
    functionDepth: 1
    functionLinenumber: 876
    functionLinenumberEnd: 887
    functionName: test_imapc_client_get_capabilities_imap4rev2_client
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_client_get_capabilities
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_imap4rev2_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_wait_connection_imap4rev2
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:891,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:892,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:892,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:894,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:896,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:896,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:897,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:899,1
    - Dst: test_imapc_server_expect
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:899,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:900,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:902,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 889
    functionDepth: 3
    functionLinenumber: 889
    functionLinenumberEnd: 904
    functionName: test_imapc_client_get_capabilities_imap4rev2_server
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_imapc_server_expect
    - i_stream_read_next_line
    - test_server_wait_connection_imap4rev2
    - test_assert
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_imap4rev2_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:908,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:909,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 913
    functionName: test_imapc_client_get_capabilities_imap4rev2
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imapc_client_get_capabilities_imap4rev2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 923
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 925
    functionDepth: 0
    functionLinenumber: 925
    functionLinenumberEnd: 928
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:953,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:954,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:956,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:962,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:966,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:967,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:968,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:969,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:972,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:974,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:976,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:978,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-imap-client/test-imapc-client.c:979,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 982
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - main_init
    - event_set_forced_debug
    - getopt
    - lib_init
    - test_dir_init
    - lib_deinit
    - i_fatal
    - test_run
    - htonl
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc ATTR_UNUSED, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:180,1
    - Dst: struct imapc_connection*::client::state_change_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 187
    functionName: imapc_auth_ok
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - struct imapc_connection*::client::state_change_callback
    linkageType: ''
    returnType: void
    signature: void imapc_auth_ok(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:196,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:199,1
    - Dst: imapc_login_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:201,1
    - Dst: struct imapc_connection*::client::state_change_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - _reply
    - error
    argTypes:
    - struct imapc_connection*
    - struct imapc_command_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 209
    functionName: imapc_auth_failed
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - imapc_login_callback
    - t_strdup_printf
    - struct imapc_connection*::client::state_change_callback
    linkageType: ''
    returnType: void
    signature: "void imapc_auth_failed(struct imapc_connection *conn, const struct
      imapc_command_reply *_reply,\n\t\t  const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:218,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:219,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:227,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:228,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:229,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:230,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:232,1
    - Dst: imapc_client_ref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - client
    - login_callback
    - login_context
    argTypes:
    - struct imapc_client*
    - imapc_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 236
    functionName: imapc_connection_init
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - event_create
    - e_debug
    - i_new
    - imapc_client_ref
    linkageType: ''
    returnType: struct imapc_connection
    signature: "struct imapc_connection *\nimapc_connection_init(struct imapc_client
      *client,\n\t\t      imapc_command_callback_t *login_callback,\n\t\t      void
      *login_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: imapc_connection_ref
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_connection_ref(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:249,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:255,1
    - Dst: p_strsplit_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:258,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:259,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:260,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:261,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:262,1
    - Dst: imapc_client_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:263,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:264,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:265,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:266,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct imapc_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 268
    functionName: imapc_connection_unref
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_free
    - imapc_client_unref
    - i_assert
    - array_free
    - p_strsplit_free
    linkageType: ''
    returnType: void
    signature: void imapc_connection_unref(struct imapc_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:272,1
    - Dst: imapc_connection_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct imapc_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 274
    functionName: imapc_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_disconnect
    - imapc_connection_unref
    linkageType: ''
    returnType: void
    signature: void imapc_connection_deinit(struct imapc_connection **_conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:279,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:281,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:283,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:285,1
    - Dst: o_stream_switch_ioloop
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:287,1
    - Dst: dns_lookup_switch_ioloop
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:289,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:295,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 297
    functionName: imapc_connection_ioloop_changed
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io
    - io_loop_move_timeout
    - dns_lookup_switch_ioloop
    - o_stream_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void imapc_connection_ioloop_changed(struct imapc_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:301,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:307,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 310
    functionName: imapc_command_get_readable
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    linkageType: ''
    returnType: char
    signature: char *imapc_command_get_readable(struct imapc_command *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:344,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:347,1
    - Dst: imapc_connection_abort_commands_array
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:348,1
    - Dst: imapc_connection_abort_commands_array
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:350,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:353,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:355,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:357,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:358,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:360,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:365,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:374,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:378,1
    - Dst: struct imapc_command*::callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:380,1
    - Dst: imapc_command_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:381,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:383,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:384,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - conn
    - only_box
    - keep_retriable
    argTypes:
    - struct imapc_connection*
    - struct imapc_client_mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 385
    functionName: imapc_connection_abort_commands
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - seq_range_array_add
    - imapc_connection_abort_commands_array
    - imapc_command_free
    - array_foreach_elem
    - struct imapc_command*::callback
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - array_append_array
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_abort_commands(struct imapc_connection *conn,\n\t\t\t\t
      \    struct imapc_client_mailbox *only_box,\n\t\t\t\t     bool keep_retriable)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct imapc_connection*::login_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct imapc_connection*
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 393
    functionName: imapc_login_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - struct imapc_connection*::login_callback
    linkageType: ''
    returnType: void
    signature: "void imapc_login_callback(struct imapc_connection *conn,\n\t\t     const
      struct imapc_command_reply *reply)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:404,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:408,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:410,1
    - Dst: imapc_login_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:414,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:415,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:418,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:426,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:432,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - conn
    - state
    argTypes:
    - struct imapc_connection*
    - enum imapc_connection_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 437
    functionName: imapc_connection_set_state
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imapc_login_callback
    - i_free_and_null
    - t_strdup_printf
    - array_clear
    - i_free
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_set_state(struct imapc_connection *conn,\n\t\t\t\t
      \      enum imapc_connection_state state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:443,1
    - Dst: close
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:444,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:445,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 448
    functionName: imapc_connection_lfiles_free
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - close
    - array_clear
    - e_error
    linkageType: ''
    returnType: void
    signature: void imapc_connection_lfiles_free(struct imapc_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:453,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:454,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - literal
    argTypes:
    - struct imapc_connection_literal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 458
    functionName: imapc_connection_literal_reset
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_free_and_null
    - i_close_fd_path
    linkageType: ''
    returnType: void
    signature: void imapc_connection_literal_reset(struct imapc_connection_literal
      *literal)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:464,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:468,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:468,1
    - Dst: imapc_connection_abort_commands
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:470,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:475,1
    - Dst: dns_lookup_abort
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:478,1
    - Dst: imapc_connection_lfiles_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:479,1
    - Dst: imapc_connection_literal_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:480,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:481,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:482,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:483,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:485,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:486,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:487,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:489,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:490,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:491,1
    - Dst: p_strsplit_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:500,1
    - Dst: imapc_connection_set_state
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:504,1
    - Dst: imapc_connection_abort_commands
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:505,1
    - Dst: imapc_client_try_stop
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:508,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - conn
    - reconnecting
    argTypes:
    - struct imapc_connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 510
    functionName: imapc_connection_disconnect_full
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - net_disconnect
    - imapc_connection_abort_commands
    - imap_parser_unref
    - e_debug
    - io_remove
    - i_stream_destroy
    - imapc_connection_set_state
    - ssl_iostream_destroy
    - imapc_connection_lfiles_free
    - imapc_connection_literal_reset
    - array_count
    - imapc_client_try_stop
    - dns_lookup_abort
    - i_assert
    - o_stream_destroy
    - p_strsplit_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_disconnect_full(struct imapc_connection *conn,\n\t\t\t\t
      \     bool reconnecting)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 515
    functionName: imapc_connection_set_no_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imapc_connection_set_no_reconnect(struct imapc_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_disconnect_full
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 517
    functionDepth: 3
    functionLinenumber: 517
    functionLinenumberEnd: 520
    functionName: imapc_connection_disconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - imapc_connection_disconnect_full
    linkageType: ''
    returnType: void
    signature: void imapc_connection_disconnect(struct imapc_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_set_state
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:524,1
    - Dst: imapc_connection_abort_commands
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 522
    functionDepth: 2
    functionLinenumber: 522
    functionLinenumberEnd: 526
    functionName: imapc_connection_set_disconnected
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_set_state
    - imapc_connection_abort_commands
    linkageType: ''
    returnType: void
    signature: void imapc_connection_set_disconnected(struct imapc_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_mailbox_can_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:538,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 543
    functionName: imapc_connection_can_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_client_mailbox_can_reconnect
    linkageType: ''
    returnType: bool
    signature: bool imapc_connection_can_reconnect(struct imapc_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:551,1
    - Dst: imapc_connection_disconnect_full
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:558,1
    - Dst: imapc_connection_connect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 545
    functionDepth: 3
    functionLinenumber: 545
    functionLinenumberEnd: 560
    functionName: imapc_connection_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_disconnect_full
    - i_assert
    - imapc_connection_connect
    linkageType: ''
    returnType: void
    signature: void imapc_connection_reconnect(struct imapc_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_warning
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:569,1
    - Dst: imapc_connection_disconnect_full
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:571,1
    - Dst: imapc_connection_connect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:572,1
    - Dst: imapc_connection_can_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:576,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:577,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:578,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:582,1
    - Dst: imapc_connection_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:585,1
    - Dst: imapc_connection_disconnect_full
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:587,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:588,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - conn
    - errstr
    - delay_msecs
    - connect_error
    argTypes:
    - struct imapc_connection*
    - char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 562
    functionDepth: 4
    functionLinenumber: 562
    functionLinenumberEnd: 592
    functionName: imapc_connection_try_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_disconnect
    - timeout_add
    - imapc_connection_disconnect_full
    - imapc_connection_connect
    - e_error
    - e_warning
    - imapc_connection_reconnect
    - imapc_connection_can_reconnect
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_try_reconnect(struct imapc_connection *conn,\n\t\t\t\t
      \   const char *errstr,\n\t\t\t\t    unsigned int delay_msecs,\n\t\t\t\t    bool
      connect_error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:600,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:601,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:602,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:603,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - fmt
    argTypes:
    - struct imapc_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 595
    functionDepth: 4
    functionLinenumber: 595
    functionLinenumberEnd: 605
    functionName: imapc_connection_input_error
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_disconnect
    - va_start
    - e_error
    - t_strdup_vprintf
    - va_end
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_input_error(struct imapc_connection *conn,\n\t\t\t
      \    const char *fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:616,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:617,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:619,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:620,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 7
    argCount: 3
    argNames:
    - args
    - parent_arg_r
    - idx_r
    argTypes:
    - struct imap_arg*
    - struct imap_arg**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 626
    functionName: last_arg_is_fetch_body
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_atom
    - imap_arg_atom_equals
    - str_begins_icase_with
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: "bool last_arg_is_fetch_body(const struct imap_arg *args,\n\t\t\t\t
      \  const struct imap_arg **parent_arg_r,\n\t\t\t\t   unsigned int *idx_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:636,1
    - Dst: last_arg_is_fetch_body
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:639,1
    - Dst: imapc_client_create_temp_fd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:644,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:647,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - conn
    - size
    - args
    argTypes:
    - struct imapc_connection*
    - uoff_t
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 652
    functionName: imapc_connection_read_literal_init
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - last_arg_is_fetch_body
    - i_assert
    - imapc_client_create_temp_fd
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_read_literal_init(struct imapc_connection *conn,
      uoff_t size,\n\t\t\t\t   const struct imap_arg *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:663,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:667,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:668,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:670,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:673,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:680,1
    - Dst: imapc_connection_literal_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:686,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 654
    functionDepth: 4
    functionLinenumber: 654
    functionLinenumberEnd: 688
    functionName: imapc_connection_read_literal
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_disconnect
    - array_append_space
    - write_full
    - i_stream_get_data
    - i_stream_skip
    - e_error
    - imapc_connection_literal_reset
    linkageType: ''
    returnType: int
    signature: int imapc_connection_read_literal(struct imapc_connection *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_read_literal
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:697,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:700,1
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:711,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:713,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:715,1
    - Dst: imap_parser_get_literal_size
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:719,1
    - Dst: imapc_connection_read_literal_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:720,1
    - Dst: imap_parser_read_last_literal
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:722,1
    - Dst: imapc_connection_read_line_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:725,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - conn
    - imap_args_r
    argTypes:
    - struct imapc_connection*
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 690
    functionDepth: 5
    functionLinenumber: 690
    functionLinenumberEnd: 728
    functionName: imapc_connection_read_line_more
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - imap_parser_get_error
    - imapc_connection_read_literal_init
    - imapc_connection_read_literal
    - imap_parser_read_args
    - imapc_connection_input_error
    - e_error
    - imap_parser_read_last_literal
    - imapc_connection_read_line_more
    - imap_parser_get_literal_size
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_read_line_more(struct imapc_connection *conn,\n\t\t\t\tconst
      struct imap_arg **imap_args_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_read_line_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:738,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:742,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:744,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:746,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:748,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:750,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:751,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:753,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - imap_args_r
    argTypes:
    - struct imapc_connection*
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 730
    functionDepth: 6
    functionLinenumber: 730
    functionLinenumberEnd: 756
    functionName: imapc_connection_read_line
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_panic
    - i_stream_get_data
    - memchr
    - i_stream_skip
    - imapc_connection_read_line_more
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_read_line(struct imapc_connection *conn,\n\t\t\t
      \  const struct imap_arg **imap_args_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 766
    functionName: imapc_connection_imap4rev2_enable_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_imap4rev2_enable_callback(const struct imapc_command_reply
      *reply ATTR_UNUSED,\n\t\t\t\t\t   void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:776,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:779,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 780
    functionName: imapc_connection_send_enable_imap4rev2
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_send
    - imapc_connection_cmd
    linkageType: ''
    returnType: void
    signature: void imapc_connection_send_enable_imap4rev2(struct imapc_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:788,1
    - Dst: p_strsplit_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:792,1
    - Dst: p_strsplit
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:793,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:795,1
    - Dst: imapc_capability_lookup
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:796,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:799,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:803,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:805,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:807,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - value
    argTypes:
    - struct imapc_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 782
    functionDepth: 5
    functionLinenumber: 782
    functionLinenumberEnd: 811
    functionName: imapc_connection_parse_capability
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - e_debug
    - imapc_connection_input_error
    - t_strsplit
    - imapc_capability_lookup
    - p_strsplit
    - p_strsplit_free
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_parse_capability(struct imapc_connection *conn,\n\t\t\t\t
      \ const char *value)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:817,1
    - Dst: imapc_connection_parse_capability
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:818,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:821,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:827,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - conn
    - key
    - value
    argTypes:
    - struct imapc_connection*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 813
    functionDepth: 6
    functionLinenumber: 813
    functionLinenumberEnd: 831
    functionName: imapc_connection_handle_resp_text_code
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_parse_capability
    - i_free_and_null
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_handle_resp_text_code(struct imapc_connection
      *conn,\n\t\t\t\t       const char *key, const char *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:840,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:842,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:844,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:847,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:848,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:850,1
    - Dst: imapc_connection_handle_resp_text_code
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:856,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - conn
    - text
    - key_r
    - value_r
    argTypes:
    - struct imapc_connection*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 833
    functionDepth: 7
    functionLinenumber: 833
    functionLinenumberEnd: 857
    functionName: imapc_connection_handle_resp_text
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - strchr
    - imapc_connection_handle_resp_text_code
    - imapc_connection_input_error
    - t_strdup_until
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_handle_resp_text(struct imapc_connection *conn,\n\t\t\t\t
      \ const char *text,\n\t\t\t\t  const char **key_r, const char **value_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_args_to_str
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:869,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:872,1
    - Dst: imapc_connection_handle_resp_text
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:878,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - conn
    - args
    - key_r
    - value_r
    argTypes:
    - struct imapc_connection*
    - struct imap_arg*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 859
    functionDepth: 8
    functionLinenumber: 859
    functionLinenumberEnd: 879
    functionName: imapc_connection_handle_imap_resp_text
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imap_args_to_str
    - imapc_connection_handle_resp_text
    - imapc_connection_input_error
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_handle_imap_resp_text(struct imapc_connection
      *conn,\n\t\t\t\t       const struct imap_arg *args,\n\t\t\t\t       const char
      **key_r, const char **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 892
    functionName: need_literal
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool need_literal(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:900,1
    - Dst: imapc_connection_lfiles_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:901,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 894
    functionDepth: 2
    functionLinenumber: 894
    functionLinenumberEnd: 902
    functionName: imapc_connection_input_reset
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imap_parser_reset
    - imapc_connection_lfiles_free
    linkageType: ''
    returnType: void
    signature: void imapc_connection_input_reset(struct imapc_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_auth_failed
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:909,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:910,1
    - Dst: imapc_auth_ok
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:914,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:916,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:916,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:917,1
    - Dst: imapc_connection_set_state
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:918,1
    - Dst: imapc_login_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:919,1
    - Dst: imapc_connection_send_enable_imap4rev2
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:922,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct imapc_connection*
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 904
    functionDepth: 4
    functionLinenumber: 904
    functionLinenumberEnd: 925
    functionName: imapc_connection_auth_finish
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_auth_failed
    - imapc_connection_disconnect
    - imapc_login_callback
    - imapc_command_send_more
    - imapc_connection_set_state
    - imapc_connection_send_enable_imap4rev2
    - array_count
    - imapc_auth_ok
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_auth_finish(struct imapc_connection *conn,\n\t\t\t
      \    const struct imapc_command_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_auth_finish
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 927
    functionDepth: 5
    functionLinenumber: 927
    functionLinenumberEnd: 933
    functionName: imapc_connection_login_cb
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_auth_finish
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_login_cb(const struct imapc_command_reply *reply,\n\t\t\t\t
      \     void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:944,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:946,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:947,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:948,1
    - Dst: imapc_connection_auth_finish
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 935
    functionDepth: 5
    functionLinenumber: 935
    functionLinenumberEnd: 952
    functionName: imapc_connection_proxyauth_login_cb
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_connection_cmd
    - imapc_command_send_more
    - imapc_command_sendf
    - imapc_connection_auth_finish
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_proxyauth_login_cb(const struct imapc_command_reply
      *reply,\n\t\t\t\t    void *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:965,1
    - Dst: imapc_connection_auth_finish
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:966,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:970,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:971,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:971,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:972,1
    - Dst: imapc_auth_failed
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:973,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:974,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:976,1
    - Dst: imapc_auth_failed
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:978,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:979,1
    - Dst: imapc_auth_failed
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:981,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:983,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:987,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:987,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:988,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:989,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:990,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:990,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:991,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:994,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 954
    functionDepth: 5
    functionLinenumber: 954
    functionLinenumberEnd: 995
    functionName: imapc_connection_authenticate_cb
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_disconnect
    - str_len
    - strlen
    - t_strdup_printf
    - dsasl_client_input
    - MAX_BASE64_ENCODED_SIZE
    - imapc_auth_failed
    - t_str_new
    - o_stream_nsend
    - imapc_connection_auth_finish
    - MAX_BASE64_DECODED_SIZE
    - str_data
    - base64_encode
    - o_stream_nsend_str
    - base64_decode
    - t_buffer_create
    - dsasl_client_free
    - str_append
    - dsasl_client_output
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_authenticate_cb(const struct imapc_command_reply
      *reply,\n\t\t\t\t void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1004,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1005,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - mech_name
    argTypes:
    - struct imapc_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 1009
    functionName: imapc_connection_have_auth
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - str_begins_icase
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool imapc_connection_have_auth(struct imapc_connection *conn,\n\t\t\t\t
      \      const char *mech_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1018,1
    - Dst: imapc_connection_have_auth
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1022,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1023,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1027,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1032,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1033,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - conn
    - mech_r
    - error_r
    argTypes:
    - struct imapc_connection*
    - struct dsasl_client_mech**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1035
    functionName: imapc_connection_get_sasl_mech
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - dsasl_client_mech_find
    - t_strarray_join
    - t_strdup_printf
    - settings_boollist_get
    - imapc_connection_have_auth
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_get_sasl_mech(struct imapc_connection *conn,\n\t\t\t
      \      const struct dsasl_client_mech **mech_r,\n\t\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_channel_binding
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - type
    - context
    - data_r
    - error_r
    argTypes:
    - char*
    - void*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1037
    functionDepth: 1
    functionLinenumber: 1037
    functionLinenumberEnd: 1046
    functionName: imapc_connection_channel_bind_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_get_channel_binding
    linkageType: ''
    returnType: int
    signature: "int imapc_connection_channel_bind_callback(const char *type, void
      *context,\n\t\t\t\t       const buffer_t **data_r,\n\t\t\t\t       const char
      **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1057,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1059,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1063,1
    - Dst: imapc_connection_get_sasl_mech
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1064,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1066,1
    - Dst: imapc_auth_failed
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1069,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1070,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1078,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1080,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1081,1
    - Dst: need_literal
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1087,1
    - Dst: need_literal
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1087,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1090,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1092,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1093,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1098,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1113,1
    - Dst: dsasl_client_enable_channel_binding
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1115,1
    - Dst: ssl_iostream_get_protocol_version
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1117,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1121,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1123,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1131,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1134,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1137,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1140,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1140,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1141,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1143,1
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1144,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1145,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1147,1
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1148,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 60
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1048
    functionDepth: 4
    functionLinenumber: 1048
    functionLinenumberEnd: 1150
    functionName: imapc_connection_authenticate
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - str_c
    - imapc_connection_disconnect
    - array_not_empty
    - imapc_command_sendf
    - MAX_BASE64_ENCODED_SIZE
    - imapc_auth_failed
    - t_str_new
    - need_literal
    - i_zero
    - dsasl_client_enable_channel_binding
    - imapc_connection_cmd
    - ssl_iostream_get_protocol_version
    - e_error
    - base64_encode
    - e_debug
    - dsasl_client_new
    - imapc_connection_get_sasl_mech
    - dsasl_client_mech_get_name
    - dsasl_client_output
    linkageType: ''
    returnType: void
    signature: void imapc_connection_authenticate(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1160,1
    - Dst: imapc_connection_ssl_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1165,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1166,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1169,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1171,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1152
    functionDepth: 5
    functionLinenumber: 1152
    functionLinenumberEnd: 1174
    functionName: imapc_connection_starttls_cb
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_connection_cmd
    - imapc_connection_ssl_init
    - imapc_connection_disconnect
    - imapc_command_send
    - imapc_connection_input_error
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_starttls_cb(const struct imapc_command_reply
      *reply,\n\t\t\t     void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1176
    functionDepth: 0
    functionLinenumber: 1176
    functionLinenumberEnd: 1180
    functionName: imapc_connection_id_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_id_callback(const struct imapc_command_reply
      *reply ATTR_UNUSED,\n\t\t\t     void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1191,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1192,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1193,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1182
    functionDepth: 1
    functionLinenumber: 1182
    functionLinenumberEnd: 1196
    functionName: imapc_connection_send_id
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_command_send
    - imapc_connection_cmd
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void imapc_connection_send_id(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1205,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1207,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1210,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1212,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1213,1
    - Dst: imapc_connection_send_id
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1216,1
    - Dst: imapc_connection_authenticate
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1198
    functionDepth: 5
    functionLinenumber: 1198
    functionLinenumberEnd: 1218
    functionName: imapc_connection_starttls
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_connection_cmd
    - imapc_connection_disconnect
    - imapc_command_send
    - e_error
    - imapc_connection_send_id
    - imapc_connection_authenticate
    linkageType: ''
    returnType: void
    signature: void imapc_connection_starttls(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1227,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1230,1
    - Dst: imapc_connection_starttls
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1220
    functionDepth: 6
    functionLinenumber: 1220
    functionLinenumberEnd: 1235
    functionName: imapc_connection_capability_cb
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_input_error
    - imapc_connection_starttls
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_capability_cb(const struct imapc_command_reply
      *reply,\n\t\t\t       void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_read_line
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1244,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1247,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1247,1
    - Dst: imapc_connection_handle_imap_resp_text
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1250,1
    - Dst: imapc_connection_set_state
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1253,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1257,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1259,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1260,1
    - Dst: imapc_connection_starttls
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1262,1
    - Dst: imapc_connection_input_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1237
    functionDepth: 9
    functionLinenumber: 1237
    functionLinenumberEnd: 1267
    functionName: imapc_connection_input_banner
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_connection_cmd
    - imapc_command_send
    - imapc_connection_read_line
    - imapc_connection_set_state
    - imapc_connection_input_reset
    - imapc_connection_handle_imap_resp_text
    - i_assert
    - imap_arg_atom_equals
    - imapc_connection_starttls
    linkageType: ''
    returnType: int
    signature: int imapc_connection_input_banner(struct imapc_connection *conn)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1281,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1282,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1284,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1285,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1287,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1287,1
    - Dst: imapc_connection_read_line
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1294,1
    - Dst: imapc_connection_input_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1297,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1300,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1301,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1307,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1310,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1311,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1317,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1319,1
    - Dst: imapc_connection_handle_imap_resp_text
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1320,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1324,1
    - Dst: imap_args_to_str
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1325,1
    - Dst: imapc_connection_parse_capability
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1326,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1328,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1329,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1330,1
    - Dst: imap_args_to_str
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1330,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1336,1
    - Dst: imap_parser_ref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1346,1
    - Dst: struct imapc_connection*::client::untagged_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1347,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1348,1
    - Dst: imapc_connection_input_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1349,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1269
    functionDepth: 9
    functionLinenumber: 1269
    functionLinenumberEnd: 1351
    functionName: imapc_connection_input_untagged
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imap_parser_unref
    - i_stream_get_data
    - imapc_connection_input_reset
    - str_to_uint32
    - imapc_connection_handle_imap_resp_text
    - i_strdup
    - t_strcut
    - imap_args_to_str
    - struct imapc_connection*::client::untagged_callback
    - i_zero
    - imapc_connection_parse_capability
    - i_memcasecmp
    - array_get
    - imapc_connection_input_error
    - t_strndup
    - strcasecmp
    - i_free
    - imap_parser_ref
    - imapc_connection_read_line
    - memchr
    - imap_arg_get_atom
    linkageType: ''
    returnType: int
    signature: int imapc_connection_input_untagged(struct imapc_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1359,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1362,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1369,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1373,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1375,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1380,1
    - Dst: callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1383,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1385,1
    - Dst: imapc_connection_input_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1390,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1353
    functionDepth: 5
    functionLinenumber: 1353
    functionLinenumberEnd: 1392
    functionName: imapc_connection_input_plus
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imapc_command_send_more
    - array_get
    - i_stream_next_line
    - imapc_connection_input_reset
    - imapc_connection_input_error
    - callback
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int imapc_connection_input_plus(struct imapc_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1407,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1410,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1394
    functionDepth: 1
    functionLinenumber: 1394
    functionLinenumberEnd: 1413
    functionName: imapc_connection_throttle_shrink_timeout
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imapc_connection_throttle_shrink_timeout(struct imapc_connection
      *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1419,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1425,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1440,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1445,1
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1453,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct imapc_connection*
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1457
    functionName: imapc_connection_throttle
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - timeout_reset
    - timeval_add_msecs
    - strstr
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_throttle(struct imapc_connection *conn,\n\t\t\t
      \ const struct imapc_command_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct imapc_command*::callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1463,1
    - Dst: imapc_command_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cmd
    - reply
    argTypes:
    - struct imapc_command*
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1459
    functionDepth: 1
    functionLinenumber: 1459
    functionLinenumberEnd: 1465
    functionName: imapc_command_reply_free
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - struct imapc_command*::callback
    - imapc_command_free
    linkageType: ''
    returnType: void
    signature: "void imapc_command_reply_free(struct imapc_command *cmd,\n\t\t\t const
      struct imapc_command_reply *reply)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1475,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1479,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1481,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1483,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1491,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1493,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1495,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1498,1
    - Dst: imapc_connection_handle_resp_text
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1506,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1511,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1512,1
    - Dst: imapc_connection_throttle
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1522,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1526,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1529,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1531,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1535,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1540,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1541,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1543,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1546,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1548,1
    - Dst: imapc_connection_input_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1550,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1553,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1562,1
    - Dst: imapc_command_get_readable
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1563,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1565,1
    - Dst: imapc_connection_mailbox_closed
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1572,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1575,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1580,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1600,1
    - Dst: imapc_connection_try_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1604,1
    - Dst: imapc_connection_input_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1609,1
    - Dst: imapc_command_reply_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1610,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1611,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 91
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1467
    functionDepth: 8
    functionLinenumber: 1467
    functionLinenumberEnd: 1613
    functionName: imapc_connection_input_tagged
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - strchr
    - imapc_connection_disconnect
    - seq_range_exists
    - imapc_connection_input_reset
    - array_count
    - imapc_connection_try_reconnect
    - imapc_connection_handle_resp_text
    - array_delete
    - i_strchr_to_next
    - i_stream_next_line
    - i_free_and_null
    - seq_range_array_remove
    - t_strdup_noconst
    - i_zero
    - imapc_connection_throttle
    - array_pop_front
    - imapc_command_get_readable
    - imapc_command_send_more
    - array_get
    - strcasecmp
    - imapc_connection_input_error
    - e_error
    - i_assert
    - imapc_connection_mailbox_closed
    - array_push_back
    - imapc_command_reply_free
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int imapc_connection_input_tagged(struct imapc_connection *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: struct imapc_connection*::input_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1621,1
    - Dst: imap_parser_read_word
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1625,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1629,1
    - Dst: imapc_connection_input_untagged
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1632,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1633,1
    - Dst: imapc_connection_input_plus
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1635,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1638,1
    - Dst: imapc_connection_input_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1640,1
    - Dst: imapc_connection_input_tagged
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1644,1
    - Dst: imapc_connection_input_plus
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1649,1
    - Dst: imapc_connection_input_untagged
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1653,1
    - Dst: imapc_connection_input_tagged
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1656,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1615
    functionDepth: 10
    functionLinenumber: 1615
    functionLinenumberEnd: 1660
    functionName: imapc_connection_input_one
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - struct imapc_connection*::input_callback
    - str_to_uint
    - imapc_connection_input_error
    - imapc_connection_input_tagged
    - imap_parser_read_word
    - imapc_connection_input_plus
    - imapc_connection_input_untagged
    linkageType: ''
    returnType: int
    signature: int imapc_connection_input_one(struct imapc_connection *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_ref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1670,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1671,1
    - Dst: imapc_connection_input_pending
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1672,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1677,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1680,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1682,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1685,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1687,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1690,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1691,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1694,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1697,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1699,1
    - Dst: imapc_connection_try_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1702,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1702,1
    - Dst: imapc_connection_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1704,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1662
    functionDepth: 5
    functionLinenumber: 1662
    functionLinenumberEnd: 1705
    functionName: imapc_connection_input
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - imapc_connection_disconnect
    - str_printfa
    - i_stream_get_data_size
    - imapc_connection_unref
    - i_stream_get_error
    - ssl_iostream_get_last_error
    - imapc_connection_try_reconnect
    - i_stream_read
    - imapc_connection_input_pending
    - imapc_connection_ref
    linkageType: ''
    returnType: void
    signature: void imapc_connection_input(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_check_cert_validity
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1713,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1717,1
    - Dst: ssl_iostream_get_allow_invalid_cert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1718,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1719,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - error_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1707
    functionDepth: 1
    functionLinenumber: 1707
    functionLinenumberEnd: 1728
    functionName: imapc_connection_ssl_handshaked
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - ssl_iostream_check_cert_validity
    - ssl_iostream_get_allow_invalid_cert
    linkageType: ''
    returnType: enum ssl_iostream_state
    signature: enum ssl_iostream_state imapc_connection_ssl_handshaked(const char
      **error_r, void *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1734,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1738,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1739,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1740,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1741,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1746,1
    - Dst: io_stream_autocreate_ssl_client
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1756,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1759,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1763,1
    - Dst: ssl_iostream_set_handshake_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1764,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1767,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1768,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1769,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1774,1
    - Dst: imap_parser_set_streams
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1778,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1730
    functionDepth: 1
    functionLinenumber: 1730
    functionLinenumberEnd: 1780
    functionName: imapc_connection_ssl_init
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - imap_parser_set_streams
    - io_add_istream
    - e_debug
    - io_remove
    - ssl_iostream_set_handshake_callback
    - i_stream_ref
    - ssl_iostream_handshake
    - o_stream_ref
    - e_error
    - ssl_iostream_get_last_error
    - iostream_rawlog_create
    - io_stream_autocreate_ssl_client
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int imapc_connection_ssl_init(struct imapc_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1789,1
    - Dst: net_geterror
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1791,1
    - Dst: imapc_connection_try_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1793,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1793,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1795,1
    - Dst: strerror
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1796,1
    - Dst: net_getsockname
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1799,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1801,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1802,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1803,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1804,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1805,1
    - Dst: imapc_connection_ssl_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1809,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1810,1
    - Dst: imapc_connection_output
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1814,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1782
    functionDepth: 5
    functionLinenumber: 1782
    functionLinenumberEnd: 1815
    functionName: imapc_connection_connected
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - e_info
    - net_getsockname
    - imapc_connection_ssl_init
    - imapc_connection_disconnect
    - io_add
    - net_geterror
    - strerror
    - t_strdup_printf
    - imapc_connection_try_reconnect
    - net_ip2addr
    - imapc_connection_output
    - o_stream_set_flush_callback
    - i_assert
    linkageType: ''
    returnType: int
    signature: int imapc_connection_connected(struct imapc_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1825,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1826,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1831,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1835,1
    - Dst: imapc_connection_try_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1837,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1817
    functionDepth: 5
    functionLinenumber: 1817
    functionLinenumberEnd: 1838
    functionName: imapc_connection_timeout
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_try_reconnect
    - t_strdup_printf
    - net_ip2addr
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void imapc_connection_timeout(struct imapc_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1840
    functionDepth: 0
    functionLinenumber: 1840
    functionLinenumberEnd: 1844
    functionName: imapc_noop_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_noop_callback(const struct imapc_command_reply *reply ATTR_UNUSED,\n\t\t
      \   void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_idle
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1846
    functionDepth: 1
    functionLinenumber: 1846
    functionLinenumberEnd: 1853
    functionName: imapc_reidle_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_idle
    linkageType: ''
    returnType: void
    signature: "void imapc_reidle_callback(const struct imapc_command_reply *reply
      ATTR_UNUSED,\n\t\t      void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1860,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1861,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1862,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1867,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1868
    functionName: imapc_connection_reset_idle
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_send
    - imapc_connection_cmd
    - array_count
    linkageType: ''
    returnType: void
    signature: void imapc_connection_reset_idle(struct imapc_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1876,1
    - Dst: net_connect_ip
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1881,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1888,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1890,1
    - Dst: imapc_connection_try_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1892,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1896,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1899,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1903,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1904,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1905,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1909,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1913,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1914,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1916,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1918,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1920,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1922,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1922,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1870
    functionDepth: 5
    functionLinenumber: 1870
    functionLinenumberEnd: 1924
    functionName: imapc_connection_connect_next_ip
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - i_stream_create_fd
    - e_debug
    - timeout_add
    - t_strdup_printf
    - e_error
    - o_stream_set_no_error_handling
    - o_stream_set_flush_pending
    - imapc_connection_try_reconnect
    - net_ip2addr
    - iostream_rawlog_create
    - imap_parser_create
    - net_connect_ip
    - o_stream_set_flush_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_connection_connect_next_ip(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1936,1
    - Dst: imapc_connection_set_disconnected
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1938,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1942,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1944,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1945,1
    - Dst: imapc_connection_connect_next_ip
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1948,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - result
    - conn
    argTypes:
    - struct dns_lookup_result*
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1926
    functionDepth: 6
    functionLinenumber: 1926
    functionLinenumberEnd: 1949
    functionName: imapc_connection_dns_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - memcpy
    - imapc_connection_connect_next_ip
    - imapc_connection_set_disconnected
    - e_error
    - i_new
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_dns_callback(const struct dns_lookup_result
      *result,\n\t\t\t      struct imapc_connection *conn)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1968,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1969,1
    - Dst: imapc_connection_input_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1972,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1975,1
    - Dst: imapc_connection_set_state
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1980,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1983,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1984,1
    - Dst: imapc_connection_set_disconnected
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1985,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1987,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1989,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1992,1
    - Dst: imapc_connection_connect_next_ip
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:1997,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1951
    functionDepth: 6
    functionLinenumber: 1951
    functionLinenumberEnd: 1998
    functionName: imapc_connection_connect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 2
    functionsReached:
    - imapc_connection_connect_next_ip
    - imapc_connection_set_disconnected
    - net_addr2ip
    - dns_lookup
    - e_debug
    - imapc_connection_set_state
    - imapc_connection_input_reset
    - HAS_ANY_BITS
    - e_error
    - array_count
    - i_new
    linkageType: ''
    returnType: void
    signature: void imapc_connection_connect(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2008,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2010,1
    - Dst: imapc_connection_input_one
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2013,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 2000
    functionDepth: 11
    functionLinenumber: 2000
    functionLinenumberEnd: 2015
    functionName: imapc_connection_input_pending
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - imapc_connection_input_one
    - timeout_reset
    - o_stream_cork
    linkageType: ''
    returnType: void
    signature: void imapc_connection_input_pending(struct imapc_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2027,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2029,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2030,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - callback
    - context
    argTypes:
    - imapc_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2041
      start: 2021
    functionDepth: 1
    functionLinenumber: 2021
    functionLinenumberEnd: 2041
    functionName: imapc_command_begin
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_assert
    - p_new
    linkageType: ''
    returnType: struct imapc_command
    signature: 'struct imapc_command *

      imapc_command_begin(imapc_command_callback_t *callback, void *context)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2047,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2048,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2049,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2043
    functionDepth: 1
    functionLinenumber: 2043
    functionLinenumberEnd: 2052
    functionName: imapc_command_free
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 2
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - pool_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void imapc_command_free(struct imapc_command *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2057
      start: 2054
    functionDepth: 1
    functionLinenumber: 2054
    functionLinenumberEnd: 2057
    functionName: imapc_command_get_tag
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *imapc_command_get_tag(struct imapc_command *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_cmd_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2084,1
    - Dst: imapc_cmd_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2085,1
    - Dst: imapc_command_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2087,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct imapc_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2076
    functionDepth: 2
    functionLinenumber: 2076
    functionLinenumberEnd: 2088
    functionName: imapc_command_abort
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_cmd_remove
    - imapc_command_free
    linkageType: ''
    returnType: void
    signature: void imapc_command_abort(struct imapc_command **_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2095,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2096,1
    - Dst: imapc_connection_try_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2098,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2098,1
    - Dst: imapc_command_get_readable
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2099,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2100
      start: 2090
    functionDepth: 5
    functionLinenumber: 2090
    functionLinenumberEnd: 2100
    functionName: imapc_command_timeout
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_command_get_readable
    - array_get
    - t_strdup_printf
    - imapc_connection_try_reconnect
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_command_timeout(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2110,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2118,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 3
    argNames:
    - data
    - pos
    - value_r
    argTypes:
    - unsigned char*
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 2102
    functionDepth: 1
    functionLinenumber: 2102
    functionLinenumberEnd: 2125
    functionName: parse_sync_literal
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_isdigit
    linkageType: ''
    returnType: bool
    signature: "bool parse_sync_literal(const unsigned char *data, unsigned int pos,\n\t\t
      \  unsigned int *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2132,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2139,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2140,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2141,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2142,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - cmd
    argTypes:
    - struct imapc_connection*
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2146
      start: 2127
    functionDepth: 1
    functionLinenumber: 2127
    functionLinenumberEnd: 2146
    functionName: imapc_command_send_finished
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - array_pop_front
    - imapc_command_send_more
    - array_push_back
    - array_front
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imapc_command_send_finished(struct imapc_connection *conn,\n\t\t\t\t\tstruct
      imapc_command *cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2153,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2153,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2160
      start: 2148
    functionDepth: 1
    functionLinenumber: 2148
    functionLinenumberEnd: 2160
    functionName: imapc_command_get_sending_stream
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - array_is_created
    - array_count
    linkageType: ''
    returnType: struct imapc_command_stream
    signature: 'struct imapc_command_stream *

      imapc_command_get_sending_stream(struct imapc_command *cmd)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imapc_command_get_sending_stream
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2168,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2173,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2174,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2175,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2181,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2183,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2186,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2187,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2194,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2197,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - conn
    - cmd
    argTypes:
    - struct imapc_connection*
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2202
      start: 2162
    functionDepth: 2
    functionLinenumber: 2162
    functionLinenumberEnd: 2202
    functionName: imapc_command_try_send_stream
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - array_pop_front
    - i_unreached
    - o_stream_send_istream
    - imapc_command_get_sending_stream
    - e_error
    - i_stream_get_error
    - i_stream_unref
    - i_stream_get_name
    - i_assert
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: int
    signature: "int imapc_command_try_send_stream(struct imapc_connection *conn,\n\t\t\t\t\t
      struct imapc_command *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2208,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2218,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct imapc_client_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2223
      start: 2204
    functionDepth: 1
    functionLinenumber: 2204
    functionLinenumberEnd: 2223
    functionName: imapc_connection_set_selecting
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free_and_null
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_connection_set_selecting(struct imapc_client_mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2227,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2233,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2238,1
    - Dst: timeout_add_absolute
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2225
    functionDepth: 1
    functionLinenumber: 2225
    functionLinenumberEnd: 2248
    functionName: imapc_connection_is_throttled
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - array_count
    - timeout_add_absolute
    - timeval_cmp
    - timeout_remove
    linkageType: ''
    returnType: bool
    signature: bool imapc_connection_is_throttled(struct imapc_connection *conn)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_is_throttled
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2259,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2262,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2273,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2286,1
    - Dst: imapc_connection_set_selecting
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2293,1
    - Dst: imapc_client_mailbox_is_opened
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2294,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2300,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2304,1
    - Dst: imapc_command_reply_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2305,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2306,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2314,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2315,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2318,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2322,1
    - Dst: imapc_command_try_send_stream
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2323,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2326,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2330,1
    - Dst: imapc_command_reply_free
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2331,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2332,1
    - Dst: parse_sync_literal
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2340,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2342,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2348,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2348,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2350,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2358,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2360,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2364,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2364,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2365,1
    - Dst: imapc_command_send_finished
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2366,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 80
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2370
      start: 2250
    functionDepth: 3
    functionLinenumber: 2250
    functionLinenumberEnd: 2370
    functionName: imapc_command_send_more
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 6
    functionsReached:
    - array_count
    - CONST_PTR_OFFSET
    - imapc_command_try_send_stream
    - timeout_add
    - timeout_reset
    - o_stream_nsend
    - imapc_connection_is_throttled
    - imapc_command_send_finished
    - i_zero
    - array_pop_front
    - imapc_command_send_more
    - array_get
    - i_assert
    - imapc_client_mailbox_is_opened
    - imapc_command_reply_free
    - imapc_connection_set_selecting
    - memchr
    - parse_sync_literal
    - array_is_created
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imapc_command_send_more(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2376,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2378,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2383
      start: 2372
    functionDepth: 1
    functionLinenumber: 2372
    functionLinenumberEnd: 2383
    functionName: imapc_connection_send_idle_done
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void imapc_connection_send_idle_done(struct imapc_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_send_idle_done
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2391,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2394,1
    - Dst: array_push_front
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2399,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2400,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2405,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2410,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2412
      start: 2385
    functionDepth: 4
    functionLinenumber: 2385
    functionLinenumberEnd: 2412
    functionName: imapc_connection_cmd_send
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - imapc_connection_send_idle_done
    - imapc_command_send_more
    - array_push_front
    - array_get
    - array_insert
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_connection_cmd_send(struct imapc_command *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2421,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2423,1
    - Dst: imapc_connection_ref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2426,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2427,1
    - Dst: imapc_command_get_sending_stream
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2429,1
    - Dst: imapc_command_send_more
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2432,1
    - Dst: imapc_connection_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2435,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2414
    functionDepth: 4
    functionLinenumber: 2414
    functionLinenumberEnd: 2437
    functionName: imapc_connection_output
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - imapc_command_send_more
    - array_get
    - timeout_reset
    - imapc_command_get_sending_stream
    - imapc_connection_unref
    - o_stream_flush
    - imapc_connection_ref
    linkageType: ''
    returnType: int
    signature: int imapc_connection_output(struct imapc_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_command_begin
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - callback
    - context
    argTypes:
    - struct imapc_connection*
    - imapc_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2448
      start: 2439
    functionDepth: 2
    functionLinenumber: 2439
    functionLinenumberEnd: 2448
    functionName: imapc_connection_cmd
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 8
    functionsReached:
    - imapc_command_begin
    linkageType: ''
    returnType: struct imapc_command
    signature: "struct imapc_command *\nimapc_connection_cmd(struct imapc_connection
      *conn,\n\t\t     imapc_command_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - flags
    argTypes:
    - struct imapc_command*
    - enum imapc_command_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2454
      start: 2450
    functionDepth: 0
    functionLinenumber: 2450
    functionLinenumberEnd: 2454
    functionName: imapc_command_set_flags
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_command_set_flags(struct imapc_command *cmd,\n\t\t\t     enum
      imapc_command_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - box
    argTypes:
    - struct imapc_command*
    - struct imapc_client_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2456
    functionDepth: 0
    functionLinenumber: 2456
    functionLinenumberEnd: 2460
    functionName: imapc_command_set_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_command_set_mailbox(struct imapc_command *cmd,\n\t\t\t
      \      struct imapc_client_mailbox *box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2466
      start: 2462
    functionDepth: 0
    functionLinenumber: 2462
    functionLinenumberEnd: 2466
    functionName: imapc_command_connection_is_selected
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imapc_command_connection_is_selected(struct imapc_command *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2470,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2472,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2473,1
    - Dst: imapc_connection_cmd_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - cmd_str
    argTypes:
    - struct imapc_command*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2475
      start: 2468
    functionDepth: 5
    functionLinenumber: 2468
    functionLinenumberEnd: 2475
    functionName: imapc_command_send
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 11
    functionsReached:
    - strlen
    - str_printfa
    - str_new
    - imapc_connection_cmd_send
    linkageType: ''
    returnType: void
    signature: void imapc_command_send(struct imapc_command *cmd, const char *cmd_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2481,1
    - Dst: imapc_command_sendvf
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2482,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - cmd_fmt
    argTypes:
    - struct imapc_command*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2484
      start: 2477
    functionDepth: 1
    functionLinenumber: 2477
    functionLinenumberEnd: 2484
    functionName: imapc_command_sendf
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 2
    functionsReached:
    - imapc_command_sendvf
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void imapc_command_sendf(struct imapc_command *cmd, const char *cmd_fmt,
      ...)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2491,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2492,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2496,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2502,1
    - Dst: va_arg
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2504,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2506,1
    - Dst: va_arg
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2510,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2514,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2515,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2516,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2518,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2519,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2520,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2523,1
    - Dst: va_arg
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2527,1
    - Dst: need_literal
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2529,1
    - Dst: imap_append_quoted
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2530,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2533,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2534,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2536,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2537,1
    - Dst: va_arg
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2543,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2546,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2547,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2552,1
    - Dst: imapc_connection_cmd_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2554,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 3
    argNames:
    - cmd
    - cmd_fmt
    - args
    argTypes:
    - struct imapc_command*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2555
      start: 2486
    functionDepth: 5
    functionLinenumber: 2486
    functionLinenumberEnd: 2555
    functionName: imapc_command_sendvf
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - i_assert
    - str_append_c
    - p_array_init
    - array_append_space
    - i_unreached
    - str_len
    - imapc_connection_cmd_send
    - strlen
    - i_stream_ref
    - va_arg
    - need_literal
    - i_stream_get_size
    - str_append
    - array_is_created
    - imap_append_quoted
    - str_new
    linkageType: ''
    returnType: void
    signature: "void imapc_command_sendvf(struct imapc_command *cmd,\n\t\t\t  const
      char *cmd_fmt, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2561
      start: 2557
    functionDepth: 0
    functionLinenumber: 2557
    functionLinenumberEnd: 2561
    functionName: imapc_connection_get_state
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum imapc_connection_state
    signature: enum imapc_connection_state imapc_connection_get_state(struct imapc_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2567
      start: 2563
    functionDepth: 0
    functionLinenumber: 2563
    functionLinenumberEnd: 2567
    functionName: imapc_connection_get_capabilities
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum imapc_capability
    signature: enum imapc_capability imapc_connection_get_capabilities(struct imapc_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2572
      start: 2569
    functionDepth: 0
    functionLinenumber: 2569
    functionLinenumberEnd: 2572
    functionName: imapc_cmd_has_imap4rev2
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imapc_cmd_has_imap4rev2(struct imapc_command *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2583,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2587,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2593,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2598,1
    - Dst: imapc_connection_send_idle_done
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2605,1
    - Dst: imapc_connection_abort_commands
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2606,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - box
    - via_tagged_reply
    argTypes:
    - struct imapc_client_mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2574
    functionDepth: 4
    functionLinenumber: 2574
    functionLinenumberEnd: 2607
    functionName: imapc_connection_mailbox_closed
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - imapc_connection_send_idle_done
    - imapc_connection_disconnect
    - imapc_connection_abort_commands
    - i_free_and_null
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_mailbox_closed(struct imapc_client_mailbox *box,\n\t\t\t\t
      \    bool via_tagged_reply)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2615
      start: 2609
    functionDepth: 0
    functionLinenumber: 2609
    functionLinenumberEnd: 2615
    functionName: imapc_connection_get_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct imapc_client_mailbox
    signature: 'struct imapc_client_mailbox *

      imapc_connection_get_mailbox(struct imapc_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2617
    functionDepth: 0
    functionLinenumber: 2617
    functionLinenumberEnd: 2626
    functionName: imapc_connection_idle_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_connection_idle_callback(const struct imapc_command_reply
      *reply ATTR_UNUSED,\n\t\t\t       void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2632,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2633,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2638,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2640,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2641
      start: 2628
    functionDepth: 6
    functionLinenumber: 2628
    functionLinenumberEnd: 2641
    functionName: imapc_connection_idle
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 1
    functionsReached:
    - imapc_connection_cmd
    - array_count
    - imapc_command_send
    linkageType: ''
    returnType: void
    signature: void imapc_connection_idle(struct imapc_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2646
      start: 2643
    functionDepth: 0
    functionLinenumber: 2643
    functionLinenumberEnd: 2646
    functionName: imapc_connection_get_event
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *imapc_connection_get_event(struct imapc_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2652,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2659,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2661,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-connection.c:2665,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - client
    - tag_str
    argTypes:
    - struct imapc_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2671
      start: 2648
    functionDepth: 0
    functionLinenumber: 2648
    functionLinenumberEnd: 2671
    functionName: imapc_client_find_command_by_tag
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached:
    - str_to_uint
    - array_foreach_elem
    linkageType: ''
    returnType: struct imapc_command
    signature: 'struct imapc_command *

      imapc_client_find_command_by_tag(struct imapc_client *client, const char *tag_str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct imapc_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2676
      start: 2673
    functionDepth: 0
    functionLinenumber: 2673
    functionLinenumberEnd: 2676
    functionName: imapc_command_get_start_time
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval imapc_command_get_start_time(struct imapc_command *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct imapc_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2678
    functionDepth: 0
    functionLinenumber: 2678
    functionLinenumberEnd: 2682
    functionName: imapc_connection_get_selected_mailbox_name
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      imapc_connection_get_selected_mailbox_name(struct imapc_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct imapc_untagged_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 26
    functionName: default_untagged_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void default_untagged_callback(const struct imapc_untagged_reply *reply
      ATTR_UNUSED,\n\t\t\t  void *context ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:35,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:36,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:39,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:42,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:44,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:46,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:51,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:52,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:55,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:56,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:58,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:58,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:62,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:64,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - params
    - event_parent
    argTypes:
    - struct imapc_parameters*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 70
    functionName: imapc_client_init
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - p_strdup
    - event_create
    - p_new
    - p_array_init
    - event_set_append_log_prefix
    - t_strdup_printf
    - settings_get_or_fatal
    linkageType: ''
    returnType: struct imapc_client
    signature: "struct imapc_client *\nimapc_client_init(const struct imapc_parameters
      *params,\n\t\t  struct event *event_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: imapc_client_ref
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_client_ref(struct imapc_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:85,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:89,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:91,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct imapc_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 93
    functionName: imapc_client_unref
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - i_assert
    - event_unref
    - settings_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void imapc_client_unref(struct imapc_client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:100,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:105,1
    - Dst: imapc_connection_get_mailbox
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:105,1
    - Dst: imapc_connection_deinit
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:106,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 109
    functionName: imapc_client_disconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - imapc_connection_deinit
    - imapc_connection_get_mailbox
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void imapc_client_disconnect(struct imapc_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:115,1
    - Dst: imapc_client_unref
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct imapc_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 111
    functionDepth: 4
    functionLinenumber: 111
    functionLinenumberEnd: 117
    functionName: imapc_client_deinit
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - imapc_client_disconnect
    - imapc_client_unref
    linkageType: ''
    returnType: void
    signature: void imapc_client_deinit(struct imapc_client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - client
    - callback
    - context
    argTypes:
    - struct imapc_client*
    - imapc_untagged_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 125
    functionName: imapc_client_register_untagged
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_client_register_untagged(struct imapc_client *client,\n\t\t\t\t
      \   imapc_untagged_callback_t *callback,\n\t\t\t\t    void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:132,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:134,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:135,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:137,1
    - Dst: imapc_connection_ioloop_changed
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:138,1
    - Dst: imapc_connection_get_state
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:139,1
    - Dst: imapc_connection_connect
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:140,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:143,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:144,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 127
    functionDepth: 7
    functionLinenumber: 127
    functionLinenumberEnd: 146
    functionName: imapc_client_run_pre
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - io_loop_set_current
    - imapc_connection_ioloop_changed
    - imapc_connection_connect
    - io_loop_create
    - imapc_connection_get_state
    - io_loop_is_running
    - io_loop_set_running
    - i_assert
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void imapc_client_run_pre(struct imapc_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:154,1
    - Dst: imapc_connection_ioloop_changed
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:155,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:158,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:162,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 164
    functionName: imapc_client_run_post
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - io_loop_set_current
    - imapc_connection_ioloop_changed
    - io_loop_destroy
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: void imapc_client_run_post(struct imapc_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_run_pre
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:168,1
    - Dst: imapc_client_run_post
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 166
    functionDepth: 8
    functionLinenumber: 166
    functionLinenumberEnd: 170
    functionName: imapc_client_run
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 9
    functionsReached:
    - imapc_client_run_post
    - imapc_client_run_pre
    linkageType: ''
    returnType: void
    signature: void imapc_client_run(struct imapc_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: imapc_client_stop
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 3
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void imapc_client_stop(struct imapc_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:181,1
    - Dst: imapc_connection_get_state
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:182,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 185
    functionName: imapc_client_try_stop
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - imapc_connection_get_state
    - imapc_client_stop
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void imapc_client_try_stop(struct imapc_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: imapc_client_is_running
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imapc_client_is_running(struct imapc_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct imapc_client_mailbox*::reopen_callback
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:204,1
    - Dst: imapc_connection_abort_commands
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:206,1
    - Dst: callback
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 219
    functionName: imapc_client_login_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - struct imapc_client_mailbox*::reopen_callback
    - imapc_connection_abort_commands
    - callback
    linkageType: ''
    returnType: void
    signature: "void imapc_client_login_callback(const struct imapc_command_reply
      *reply,\n\t\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:226,1
    - Dst: imapc_connection_init
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:228,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 232
    functionName: imapc_client_add_connection
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_connection_init
    - i_new
    - array_push_back
    linkageType: ''
    returnType: struct imapc_client_connection
    signature: 'struct imapc_client_connection *

      imapc_client_add_connection(struct imapc_client *client)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:240,1
    - Dst: imapc_client_add_connection
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:241,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 244
    functionName: imapc_client_find_connection
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - array_count
    - imapc_client_add_connection
    - array_front
    linkageType: ''
    returnType: struct imapc_connection
    signature: 'struct imapc_connection *

      imapc_client_find_connection(struct imapc_client *client)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_find_connection
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:252,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - client
    - callback
    - context
    argTypes:
    - struct imapc_client*
    - imapc_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 246
    functionDepth: 4
    functionLinenumber: 246
    functionLinenumberEnd: 254
    functionName: imapc_client_cmd
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 4
    functionsReached:
    - imapc_connection_cmd
    - imapc_client_find_connection
    linkageType: ''
    returnType: struct imapc_command
    signature: "struct imapc_command *\nimapc_client_cmd(struct imapc_client *client,\n\t\t
      imapc_command_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_find_connection
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:259,1
    - Dst: imapc_connection_get_selected_mailbox_name
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:260,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - name
    argTypes:
    - struct imapc_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 256
    functionDepth: 4
    functionLinenumber: 256
    functionLinenumberEnd: 262
    functionName: imapc_client_is_server_selected
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    - imapc_connection_get_selected_mailbox_name
    - imapc_client_find_connection
    linkageType: ''
    returnType: bool
    signature: "bool imapc_client_is_server_selected(struct imapc_client *client,\n\t\t\t\t
      \    const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:270,1
    - Dst: imapc_client_add_connection
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 264
    functionDepth: 3
    functionLinenumber: 264
    functionLinenumberEnd: 276
    functionName: imapc_client_get_unboxed_connection
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - array_get
    - imapc_client_add_connection
    linkageType: ''
    returnType: struct imapc_client_connection
    signature: 'struct imapc_client_connection *

      imapc_client_get_unboxed_connection(struct imapc_client *client)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:283,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:284,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:284,1
    - Dst: imapc_client_add_connection
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:286,1
    - Dst: imapc_connection_connect
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 279
    functionDepth: 7
    functionLinenumber: 279
    functionLinenumberEnd: 288
    functionName: imapc_client_login
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 8
    functionsReached:
    - array_count
    - i_assert
    - imapc_connection_connect
    - imapc_client_add_connection
    linkageType: ''
    returnType: void
    signature: void imapc_client_login(struct imapc_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:301,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 305
    functionName: imapc_client_logout_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_client_logout_callback(const struct imapc_command_reply
      *reply ATTR_UNUSED,\n\t\t\t     void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:316,1
    - Dst: imapc_connection_get_state
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:317,1
    - Dst: imapc_connection_set_no_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:319,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:321,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:323,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:325,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:330,1
    - Dst: imapc_client_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 307
    functionDepth: 9
    functionLinenumber: 307
    functionLinenumberEnd: 335
    functionName: imapc_client_logout
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_run
    - imapc_connection_set_no_reconnect
    - imapc_connection_cmd
    - array_foreach_elem
    - imapc_command_send
    - imapc_client_disconnect
    - imapc_connection_get_state
    linkageType: ''
    returnType: void
    signature: void imapc_client_logout(struct imapc_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:344,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:347,1
    - Dst: imapc_client_get_unboxed_connection
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:348,1
    - Dst: imapc_msgmap_init
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - client
    - name
    - untagged_box_context
    argTypes:
    - struct imapc_client*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 337
    functionDepth: 4
    functionLinenumber: 337
    functionLinenumberEnd: 356
    functionName: imapc_client_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - i_new
    - imapc_msgmap_init
    - imapc_client_get_unboxed_connection
    linkageType: ''
    returnType: struct imapc_client_mailbox
    signature: "struct imapc_client_mailbox *\nimapc_client_mailbox_open(struct imapc_client
      *client, const char *name,\n\t\t\t  void *untagged_box_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - box
    - context
    argTypes:
    - struct imapc_client_mailbox*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: imapc_client_mailbox_set_reopen_cb
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_client_mailbox_set_reopen_cb(struct imapc_client_mailbox
      *box,\n\t\t\t\t\tvoid (*callback)(void *context),\n\t\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct imapc_client_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 372
    functionName: imapc_client_mailbox_can_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imapc_client_mailbox_can_reconnect(struct imapc_client_mailbox
      *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_try_reconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - box
    - errmsg
    argTypes:
    - struct imapc_client_mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 374
    functionDepth: 5
    functionLinenumber: 374
    functionLinenumberEnd: 378
    functionName: imapc_client_mailbox_reconnect
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_connection_try_reconnect
    linkageType: ''
    returnType: void
    signature: "void imapc_client_mailbox_reconnect(struct imapc_client_mailbox *box,\n\t\t\t\t
      \   const char *errmsg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_mailbox_closed
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:388,1
    - Dst: imapc_connection_disconnect
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:393,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:400,1
    - Dst: imapc_msgmap_deinit
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:407,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:408,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:409,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:410,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - _box
    argTypes:
    - struct imapc_client_mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 380
    functionDepth: 5
    functionLinenumber: 380
    functionLinenumberEnd: 411
    functionName: imapc_client_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - imapc_connection_disconnect
    - imapc_connection_mailbox_closed
    - array_foreach_elem
    - imapc_msgmap_deinit
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imapc_client_mailbox_close(struct imapc_client_mailbox **_box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:419,1
    - Dst: imapc_connection_cmd
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:421,1
    - Dst: imapc_command_set_mailbox
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - box
    - callback
    - context
    argTypes:
    - struct imapc_client_mailbox*
    - imapc_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 413
    functionDepth: 3
    functionLinenumber: 413
    functionLinenumberEnd: 424
    functionName: imapc_client_mailbox_cmd
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 2
    functionsReached:
    - imapc_connection_cmd
    - i_assert
    - imapc_command_set_mailbox
    linkageType: ''
    returnType: struct imapc_command
    signature: "struct imapc_command *\nimapc_client_mailbox_cmd(struct imapc_client_mailbox
      *box,\n\t\t\t imapc_command_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct imapc_client_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 430
    functionName: imapc_client_mailbox_get_msgmap
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct imapc_msgmap
    signature: 'struct imapc_msgmap *

      imapc_client_mailbox_get_msgmap(struct imapc_client_mailbox *box)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:434,1
    - Dst: imapc_client_mailbox_is_opened
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:435,1
    - Dst: imapc_connection_idle
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct imapc_client_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 432
    functionDepth: 7
    functionLinenumber: 432
    functionLinenumberEnd: 437
    functionName: imapc_client_mailbox_idle_send
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_connection_idle
    - imapc_client_mailbox_is_opened
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imapc_client_mailbox_idle_send(struct imapc_client_mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_mailbox_is_opened
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:443,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct imapc_client_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 450
    functionName: imapc_client_mailbox_idle
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - imapc_client_mailbox_is_opened
    linkageType: ''
    returnType: void
    signature: void imapc_client_mailbox_idle(struct imapc_client_mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_connection_get_state
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:457,1
    - Dst: imapc_connection_get_mailbox
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:460,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:463,1
    - Dst: imapc_connection_get_event
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct imapc_client_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 468
    functionName: imapc_client_mailbox_is_opened
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 3
    functionsReached:
    - e_error
    - imapc_connection_get_state
    - imapc_connection_get_mailbox
    - imapc_connection_get_event
    linkageType: ''
    returnType: bool
    signature: bool imapc_client_mailbox_is_opened(struct imapc_client_mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:476,1
    - Dst: imapc_connection_get_state
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:477,1
    - Dst: imapc_connection_get_capabilities
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - client
    - capabilities_r
    argTypes:
    - struct imapc_client*
    - enum imapc_capability*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 483
    functionName: imapc_client_get_any_capabilities
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - imapc_connection_get_state
    - imapc_connection_get_capabilities
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool imapc_client_get_any_capabilities(struct imapc_client *client,\n\t\t\t\t
      \ enum imapc_capability *capabilities_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_get_any_capabilities
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:489,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:493,1
    - Dst: imapc_client_add_connection
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:494,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:498,1
    - Dst: imapc_client_get_any_capabilities
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:500,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - client
    - capabilities_r
    argTypes:
    - struct imapc_client*
    - enum imapc_capability*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 485
    functionDepth: 9
    functionLinenumber: 485
    functionLinenumberEnd: 505
    functionName: imapc_client_get_capabilities
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 4
    functionsReached:
    - imapc_client_run
    - array_count
    - imapc_client_add_connection
    - imapc_client_get_any_capabilities
    linkageType: ''
    returnType: int
    signature: "int imapc_client_get_capabilities(struct imapc_client *client,\n\t\t\t\t
      \ enum imapc_capability *capabilities_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:514,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:519,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:520,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:521,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:523,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:524,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:529,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:529,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:531,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:534,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - client
    - path_r
    argTypes:
    - struct imapc_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 536
    functionName: imapc_client_create_temp_fd
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - i_close_fd
    - i_unlink
    - e_error
    - str_append
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: "int imapc_client_create_temp_fd(struct imapc_client *client,\n\t\t\t\tconst
      char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:542,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap-client/imapc-client.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - client
    - cb
    - context
    argTypes:
    - struct imapc_client*
    - imapc_state_change_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 547
    functionName: imapc_client_register_state_change_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imapc_client_register_state_change_callback(struct imapc_client
      *client,\n\t\t\t\t\t\t imapc_state_change_callback_t *cb,\n\t\t\t\t\t\t void
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - client
    - callback
    - context
    argTypes:
    - struct imapc_client*
    - imapc_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 555
    functionName: imapc_client_set_login_callback
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imapc_client_set_login_callback(struct imapc_client *client,\n\t\t\t\timapc_command_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: imapc_client_is_ssl
    functionSourceFile: /src/dovecot/src/lib-imap-client/imapc-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imapc_client_is_ssl(struct imapc_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:118,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:120,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:121,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:122,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - hpconn
    argTypes:
    - struct master_service_haproxy_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 124
    functionName: master_service_haproxy_conn_free
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - event_unref
    - io_remove
    - pool_unref
    - DLLIST_REMOVE
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void master_service_haproxy_conn_free(struct master_service_haproxy_conn
      *hpconn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_haproxy_conn_free
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:132,1
    - Dst: master_service_client_connection_handled
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hpconn
    argTypes:
    - struct master_service_haproxy_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 134
    functionName: master_service_haproxy_conn_failure
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - master_service_client_connection_handled
    - master_service_haproxy_conn_free
    linkageType: ''
    returnType: void
    signature: void master_service_haproxy_conn_failure(struct master_service_haproxy_conn
      *hpconn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:143,1
    - Dst: t_memdup
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:145,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:148,1
    - Dst: master_service_haproxy_conn_free
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:150,1
    - Dst: master_service_client_connection_callback
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - hpconn
    argTypes:
    - struct master_service_haproxy_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 152
    functionName: master_service_haproxy_conn_success
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - t_memdup
    - t_strdup
    - master_service_haproxy_conn_free
    - master_service_client_connection_callback
    linkageType: ''
    returnType: void
    signature: void master_service_haproxy_conn_success(struct master_service_haproxy_conn
      *hpconn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:157,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:158,1
    - Dst: master_service_haproxy_conn_failure
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hpconn
    argTypes:
    - struct master_service_haproxy_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: master_service_haproxy_timeout
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - e_error
    - net_ip2addr
    - master_service_haproxy_conn_failure
    linkageType: ''
    returnType: void
    signature: void master_service_haproxy_timeout(struct master_service_haproxy_conn
      *hpconn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:168,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - fd
    - buf
    - len
    - flags
    argTypes:
    - int
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 180
    functionName: master_service_haproxy_recv
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - recv
    linkageType: ''
    returnType: int
    signature: int master_service_haproxy_recv(int fd, void *buf, size_t len, int
      flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cpu32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - kvdata
    - dlen
    - kv
    argTypes:
    - unsigned char*
    - size_t
    - struct haproxy_pp2_tlv_ssl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 193
    functionName: get_ssl_tlv
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - cpu32_to_cpu_unaligned
    linkageType: ''
    returnType: int
    signature: "int get_ssl_tlv(const unsigned char *kvdata, size_t dlen,\n\t\t       struct
      haproxy_pp2_tlv_ssl *kv)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - kvdata
    - dlen
    - kv
    argTypes:
    - unsigned char*
    - size_t
    - struct haproxy_pp2_tlv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 214
    functionName: get_tlv
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int get_tlv(const unsigned char *kvdata, size_t dlen,\n\t\t   struct
      haproxy_pp2_tlv *kv)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_tlv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:226,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:227,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:240,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - hpconn
    - ssl_kv
    - error_r
    argTypes:
    - struct master_service_haproxy_conn*
    - struct haproxy_pp2_tlv_ssl*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 245
    functionName: master_service_haproxy_parse_ssl_tlv
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - get_tlv
    - t_strdup_printf
    - p_strndup
    linkageType: ''
    returnType: int
    signature: "int master_service_haproxy_parse_ssl_tlv(struct master_service_haproxy_conn
      *hpconn,\n\t\t\t\t     const struct haproxy_pp2_tlv_ssl *ssl_kv,\n\t\t\t\t     const
      char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_tlv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:256,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:257,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:267,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:272,1
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:273,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:274,1
    - Dst: get_ssl_tlv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:281,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:282,1
    - Dst: master_service_haproxy_parse_ssl_tlv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:286,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - hpconn
    - buf
    - blen
    - error_r
    argTypes:
    - struct master_service_haproxy_conn*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 293
    functionName: master_service_haproxy_parse_tlv
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - get_tlv
    - p_strndup
    - t_strdup_printf
    - master_service_haproxy_parse_ssl_tlv
    - get_ssl_tlv
    - p_memdup
    - connection_is_valid_dns_name
    linkageType: ''
    returnType: int
    signature: "int master_service_haproxy_parse_tlv(struct master_service_haproxy_conn
      *hpconn,\n\t\t\t\t const unsigned char *buf, size_t blen,\n\t\t\t\t const char
      **error_r)"
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:324,1
    - Dst: master_service_haproxy_recv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:328,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:330,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:331,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:334,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:338,1
    - Dst: ntohs
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:339,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:341,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:343,1
    - Dst: master_service_haproxy_recv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:347,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:349,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:351,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:356,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:358,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:364,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:366,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:382,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:385,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:388,1
    - Dst: ntohs
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:392,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:398,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:401,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:404,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:420,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:422,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:429,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:431,1
    - Dst: ntohs
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:436,1
    - Dst: ntohs
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:439,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:445,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:447,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:451,1
    - Dst: ntohs
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:452,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:454,1
    - Dst: ntohs
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:455,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:461,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:463,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:467,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:470,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:475,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:478,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:483,1
    - Dst: master_service_haproxy_parse_tlv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:488,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:488,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:489,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:493,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:502,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:505,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:512,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:513,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:513,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:516,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:517,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:521,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:523,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:526,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:528,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:530,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:533,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:535,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:536,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:544,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:546,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:549,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:551,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:553,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:554,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:561,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:563,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:566,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:568,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:570,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:571,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:578,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:580,1
    - Dst: net_str2port
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:583,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:584,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:586,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:587,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:594,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:596,1
    - Dst: net_str2port
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:599,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:600,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:602,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:603,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:609,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:611,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:612,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:616,1
    - Dst: master_service_haproxy_recv
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:618,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:620,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:622,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:625,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:627,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:632,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 198
    argCount: 1
    argNames:
    - hpconn
    argTypes:
    - struct master_service_haproxy_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 643
    functionName: master_service_haproxy_read
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - str_sanitize
    - ntohs
    - memcpy
    - PTR_OFFSET
    - net_addr2ip
    - i_unreached
    - event_set_append_log_prefix
    - net_ip2addr
    - net_str2port
    - i_zero
    - e_error
    - i_assert
    - master_service_haproxy_parse_tlv
    - master_service_haproxy_recv
    - strcmp
    - e_info
    - memchr
    - t_strsplit
    - memcmp
    - event_drop_parent_log_prefixes
    linkageType: ''
    returnType: int
    signature: int master_service_haproxy_read(struct master_service_haproxy_conn
      *hpconn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_haproxy_read
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:650,1
    - Dst: master_service_haproxy_conn_failure
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:652,1
    - Dst: master_service_haproxy_conn_success
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:654,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - hpconn
    argTypes:
    - struct master_service_haproxy_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 645
    functionDepth: 4
    functionLinenumber: 645
    functionLinenumberEnd: 656
    functionName: master_service_haproxy_input
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - master_service_haproxy_read
    - master_service_haproxy_conn_success
    - master_service_haproxy_conn_failure
    linkageType: ''
    returnType: void
    signature: void master_service_haproxy_input(struct master_service_haproxy_conn
      *hpconn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:669,1
    - Dst: net_parse_range
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:671,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:672,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:678,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - service
    - conn
    argTypes:
    - struct master_service*
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 682
    functionName: master_service_haproxy_conn_is_trusted
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - t_strsplit_spaces
    - net_is_in_network
    - net_parse_range
    - e_error
    linkageType: ''
    returnType: bool
    signature: "bool master_service_haproxy_conn_is_trusted(struct master_service
      *service,\n\t\t\t\t       struct master_service_connection *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:687,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:688,1
    - Dst: master_service_haproxy_conn_is_trusted
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:690,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:691,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:692,1
    - Dst: master_service_client_connection_handled
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:693,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:694,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:698,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:700,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:705,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:707,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:709,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - service
    - conn
    argTypes:
    - struct master_service*
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 684
    functionDepth: 2
    functionLinenumber: 684
    functionLinenumberEnd: 711
    functionName: master_service_haproxy_new
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - event_unref
    - p_new
    - io_add
    - event_set_append_log_prefix
    - master_service_haproxy_conn_is_trusted
    - master_service_client_connection_handled
    - timeout_add
    - e_warning
    - DLLIST_PREPEND
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: "void master_service_haproxy_new(struct master_service *service,\n\t\t\t\tstruct
      master_service_connection *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_haproxy_conn_free
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:718,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-master/master-service-haproxy.c:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 713
    functionDepth: 2
    functionLinenumber: 713
    functionLinenumberEnd: 721
    functionName: master_service_haproxy_abort
    functionSourceFile: /src/dovecot/src/lib-master/master-service-haproxy.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - master_service_haproxy_conn_free
    linkageType: ''
    returnType: void
    signature: void master_service_haproxy_abort(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 12
    functionName: master_service_ssl_is_enabled
    functionSourceFile: /src/dovecot/src/lib-master/master-service-ssl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool master_service_ssl_is_enabled(struct master_service *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:23,1
    - Dst: ssl_server_settings_get
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:25,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:27,1
    - Dst: master_service_ssl_io_listeners_remove
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:28,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:31,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:33,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:34,1
    - Dst: ssl_server_settings_to_iostream_set
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:38,1
    - Dst: ssl_iostream_server_context_cache_get
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:39,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:41,1
    - Dst: master_service_ssl_io_listeners_remove
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:44,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:46,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:47,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:48,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 49
    functionName: master_service_ssl_ctx_init
    functionSourceFile: /src/dovecot/src/lib-master/master-service-ssl.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ssl_server_settings_to_iostream_set
    - ssl_server_settings_get
    - ssl_iostream_server_context_cache_get
    - settings_free
    - e_error
    - master_service_ssl_io_listeners_remove
    - i_assert
    linkageType: ''
    returnType: void
    signature: void master_service_ssl_ctx_init(struct master_service *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-master/master-service-ssl.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: master_service_ssl_ctx_deinit
    functionSourceFile: /src/dovecot/src/lib-master/master-service-ssl.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_context_unref
    linkageType: ''
    returnType: void
    signature: void master_service_ssl_ctx_deinit(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: master_service_getopt_string
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *master_service_getopt_string(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/dovecot/src/lib-master/master-service.c:77,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-service.c:78,1
    - Dst: sigaddset
      Src: /src/dovecot/src/lib-master/master-service.c:79,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-service.c:80,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib-master/master-service.c:81,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-service.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - oldmask_r
    argTypes:
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: block_sigterm
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - sigprocmask
    - sigaddset
    - i_error
    - sigemptyset
    linkageType: ''
    returnType: int
    signature: int block_sigterm(sigset_t *oldmask_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_user_kicked
      Src: /src/dovecot/src/lib-master/master-service.c:92,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-master/master-service.c:95,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-master/master-service.c:97,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-master/master-service.c:97,1
    - Dst: lib_signal_code_to_str
      Src: /src/dovecot/src/lib-master/master-service.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - service
    - si
    argTypes:
    - struct master_service*
    - siginfo_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 100
    functionName: log_killed_signal
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - dec2str
    - e_warning
    - master_service_is_user_kicked
    - lib_signal_code_to_str
    linkageType: ''
    returnType: void
    signature: void log_killed_signal(struct master_service *service, const siginfo_t
      *si)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct master_service*::idle_die_callback
      Src: /src/dovecot/src/lib-master/master-service.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 112
    functionName: master_service_can_idle_die
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - struct master_service*::idle_die_callback
    linkageType: ''
    returnType: bool
    signature: bool master_service_can_idle_die(struct master_service *service)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_killed_signal
      Src: /src/dovecot/src/lib-master/master-service.c:121,1
    - Dst: master_service_can_idle_die
      Src: /src/dovecot/src/lib-master/master-service.c:128,1
    - Dst: master_status_send
      Src: /src/dovecot/src/lib-master/master-service.c:131,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/master-service.c:142,1
    - Dst: struct master_service*::killed_callback
      Src: /src/dovecot/src/lib-master/master-service.c:144,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - si
    - context
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 145
    functionName: sig_delayed_die
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_status_send
    - struct master_service*::killed_callback
    - log_killed_signal
    - io_loop_stop
    - master_service_can_idle_die
    linkageType: ''
    returnType: void
    signature: void sig_delayed_die(const siginfo_t *si, void *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/lib-master/master-service.c:151,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-master/master-service.c:160,1
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-master/master-service.c:166,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - buf
    - user_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 173
    functionName: sig_term_buf_get_kick_user
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strpbrk
    linkageType: ''
    returnType: bool
    signature: bool sig_term_buf_get_kick_user(char *buf, const char **user_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - service
    - user
    argTypes:
    - struct master_service*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: sig_service_kick_user_match
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool sig_service_kick_user_match(struct master_service *service, const
      char *user)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sig_service_kick_user_match
      Src: /src/dovecot/src/lib-master/master-service.c:203,1
    - Dst: accept
      Src: /src/dovecot/src/lib-master/master-service.c:207,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:211,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-master/master-service.c:214,1
    - Dst: read
      Src: /src/dovecot/src/lib-master/master-service.c:215,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-master/master-service.c:216,1
    - Dst: sig_term_buf_get_kick_user
      Src: /src/dovecot/src/lib-master/master-service.c:220,1
    - Dst: sig_service_kick_user_match
      Src: /src/dovecot/src/lib-master/master-service.c:226,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:229,1
    - Dst: close
      Src: /src/dovecot/src/lib-master/master-service.c:231,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:232,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - service
    - fd_listen
    argTypes:
    - struct master_service*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 234
    functionName: sig_term_try_kick_user
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - sig_term_buf_get_kick_user
    - alarm
    - read
    - lib_signals_syscall_error
    - sig_service_kick_user_match
    - close
    - accept
    linkageType: ''
    returnType: int
    signature: int sig_term_try_kick_user(struct master_service *service, int fd_listen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_admin_client_can_accept
      Src: /src/dovecot/src/lib-master/master-service.c:246,1
    - Dst: sig_term_try_kick_user
      Src: /src/dovecot/src/lib-master/master-service.c:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 262
    functionName: sig_term_try_kick
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_admin_client_can_accept
    - sig_term_try_kick_user
    linkageType: ''
    returnType: bool
    signature: bool sig_term_try_kick(struct master_service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/dovecot/src/lib-master/master-service.c:270,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:271,1
    - Dst: time
      Src: /src/dovecot/src/lib-master/master-service.c:272,1
    - Dst: lib_signal_delayed
      Src: /src/dovecot/src/lib-master/master-service.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - service
    - si
    argTypes:
    - struct master_service*
    - siginfo_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 283
    functionName: sig_die_delayed
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - lib_signal_delayed
    - clock_gettime
    - time
    - lib_signals_syscall_error
    linkageType: ''
    returnType: void
    signature: void sig_die_delayed(struct master_service *service, const siginfo_t
      *si)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sig_die_delayed
      Src: /src/dovecot/src/lib-master/master-service.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - si
    - context
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 292
    functionName: sig_standalone_die
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - sig_die_delayed
    linkageType: ''
    returnType: void
    signature: void sig_standalone_die(const siginfo_t *si, void *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/dovecot/src/lib-master/master-service.c:304,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:305,1
    - Dst: sigaddset
      Src: /src/dovecot/src/lib-master/master-service.c:306,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:307,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib-master/master-service.c:308,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:309,1
    - Dst: sig_term_try_kick
      Src: /src/dovecot/src/lib-master/master-service.c:311,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib-master/master-service.c:312,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:313,1
    - Dst: sig_die_delayed
      Src: /src/dovecot/src/lib-master/master-service.c:317,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - si
    - context
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 294
    functionDepth: 3
    functionLinenumber: 294
    functionLinenumberEnd: 319
    functionName: sig_term
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - sigaddset
    - sig_term_try_kick
    - sigemptyset
    - sigprocmask
    - sig_die_delayed
    - lib_signals_syscall_error
    linkageType: ''
    returnType: void
    signature: void sig_term(const siginfo_t *si, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup2
      Src: /src/dovecot/src/lib-master/master-service.c:338,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib-master/master-service.c:339,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 343
    functionName: sig_close_listeners
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - dup2
    - lib_signals_syscall_error
    linkageType: ''
    returnType: void
    signature: void sig_close_listeners(const siginfo_t *si ATTR_UNUSED, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_refresh_login_state
      Src: /src/dovecot/src/lib-master/master-service.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 351
    functionName: sig_delayed_state_changed
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_service_refresh_login_state
    linkageType: ''
    returnType: void
    signature: void sig_delayed_state_changed(const siginfo_t *si ATTR_UNUSED, void
      *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/master-service.c:364,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-master/master-service.c:367,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib-master/master-service.c:374,1
    - Dst: master_service_stop_new_connections
      Src: /src/dovecot/src/lib-master/master-service.c:376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 5
    argNames:
    - event
    - type
    - ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event*
    - enum event_callback_type
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 378
    functionName: master_service_event_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - event_set_ptr
    - event_add_category
    - master_service_stop_new_connections
    - event_filter_match
    linkageType: ''
    returnType: bool
    signature: "bool master_service_event_callback(struct event *event,\n\t\t\t      enum
      event_callback_type type,\n\t\t\t      struct failure_context *ctx,\n\t\t\t
      \     const char *fmt ATTR_UNUSED,\n\t\t\t      va_list args ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:383,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/master-service.c:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 389
    functionName: master_service_verify_version_string
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void master_service_verify_version_string(struct master_service *service)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/master-service.c:401,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:409,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service.c:409,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-master/master-service.c:412,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-master/master-service.c:415,1
    - Dst: master_admin_client_can_accept
      Src: /src/dovecot/src/lib-master/master-service.c:416,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-master/master-service.c:423,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-master/master-service.c:425,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:431,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:434,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:436,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:437,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-master/master-service.c:438,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 446
    functionName: master_service_init_socket_listeners
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - t_strsplit_tabescaped
    - master_admin_client_can_accept
    - t_strdup_printf
    - getenv
    - i_strdup_empty
    - i_new
    - t_strdup_until
    - i_free
    linkageType: ''
    returnType: void
    signature: void master_service_init_socket_listeners(struct master_service *service)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:458,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:461,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:463,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-master/master-service.c:464,1
    - Dst: fd_debug_verify_leaks
      Src: /src/dovecot/src/lib-master/master-service.c:466,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/lib-master/master-service.c:475,1
    - Dst: lib_is_initialized
      Src: /src/dovecot/src/lib-master/master-service.c:480,1
    - Dst: lib_init
      Src: /src/dovecot/src/lib-master/master-service.c:483,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:494,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-master/master-service.c:499,1
    - Dst: t_push
      Src: /src/dovecot/src/lib-master/master-service.c:505,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib-master/master-service.c:509,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/lib-master/master-service.c:510,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/lib-master/master-service.c:511,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:513,1
    - Dst: process_title_init
      Src: /src/dovecot/src/lib-master/master-service.c:516,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:518,1
    - Dst: process_title_set
      Src: /src/dovecot/src/lib-master/master-service.c:519,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:523,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/master-service.c:527,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:530,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:531,1
    - Dst: settings_root_init
      Src: /src/dovecot/src/lib-master/master-service.c:532,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service.c:536,1
    - Dst: event_register_callback
      Src: /src/dovecot/src/lib-master/master-service.c:538,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/master-service.c:540,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-master/master-service.c:541,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:546,1
    - Dst: master_service_getopt_string
      Src: /src/dovecot/src/lib-master/master-service.c:546,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-master/master-service.c:547,1
    - Dst: master_service_getopt_string
      Src: /src/dovecot/src/lib-master/master-service.c:547,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-master/master-service.c:549,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:553,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:553,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:555,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:555,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:557,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:562,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:564,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-master/master-service.c:565,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/master-service.c:566,1
    - Dst: master_service_init_socket_listeners
      Src: /src/dovecot/src/lib-master/master-service.c:568,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 63
    argCount: 5
    argNames:
    - name
    - flags
    - argc
    - argv
    - getopt_str
    argTypes:
    - char*
    - enum master_service_flags
    - int*
    - char**[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 570
    functionName: master_service_init
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 11
    functionsReached:
    - process_title_init
    - lib_init
    - i_strdup
    - restrict_access_allow_coredumps
    - settings_root_init
    - lib_signals_ignore
    - str_to_uint
    - process_title_set
    - t_push
    - i_fatal
    - lib_signals_init
    - i_strconcat
    - fd_debug_verify_leaks
    - event_set_ptr
    - master_service_getopt_string
    - i_strdup_printf
    - event_create
    - i_assert
    - lib_is_initialized
    - event_register_callback
    - getenv
    - io_loop_create
    - i_set_failure_prefix
    - i_new
    - master_service_init_socket_listeners
    linkageType: ''
    returnType: struct master_service
    signature: "struct master_service *\nmaster_service_init(const char *name, enum
      master_service_flags flags,\n\t\t    int *argc, char **argv[], const char *getopt_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - service
    - longopts
    argTypes:
    - struct master_service*
    - struct option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 682
    functionName: master_service_register_long_options
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void master_service_register_long_options(struct master_service *service,\n\t\t\t\t
      \    const struct option *longopts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:688,1
    - Dst: master_getopt_str_is_valid
      Src: /src/dovecot/src/lib-master/master-service.c:688,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-master/master-service.c:691,1
    - Dst: master_service_parse_option
      Src: /src/dovecot/src/lib-master/master-service.c:693,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:696,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 698
    functionName: master_getopt
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 10
    functionsReached:
    - getopt
    - i_assert
    - master_getopt_str_is_valid
    - master_service_parse_option
    linkageType: ''
    returnType: int
    signature: int master_getopt(struct master_service *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_getopt
      Src: /src/dovecot/src/lib-master/master-service.c:704,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:706,1
    - Dst: master_getopt_str_is_valid
      Src: /src/dovecot/src/lib-master/master-service.c:706,1
    - Dst: getopt_long
      Src: /src/dovecot/src/lib-master/master-service.c:711,1
    - Dst: master_service_parse_option
      Src: /src/dovecot/src/lib-master/master-service.c:714,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:720,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - service
    - longopt_r
    argTypes:
    - struct master_service*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 722
    functionName: master_getopt_long
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_getopt_str_is_valid
    - master_service_parse_option
    - master_getopt
    - i_assert
    - getopt_long
    linkageType: ''
    returnType: int
    signature: int master_getopt_long(struct master_service *service, const char **longopt_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 739
    functionName: master_getopt_str_is_valid
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool master_getopt_str_is_valid(const char *str)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:747,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:751,1
    - Dst: i_set_failure_timestamp_format
      Src: /src/dovecot/src/lib-master/master-service.c:753,1
    - Dst: i_set_failure_file
      Src: /src/dovecot/src/lib-master/master-service.c:754,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:758,1
    - Dst: i_set_failure_internal
      Src: /src/dovecot/src/lib-master/master-service.c:760,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-master/master-service.c:761,1
    - Dst: i_set_failure_file
      Src: /src/dovecot/src/lib-master/master-service.c:766,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:771,1
    - Dst: i_set_failure_file
      Src: /src/dovecot/src/lib-master/master-service.c:773,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:776,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:777,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:778,1
    - Dst: syslog_facility_find
      Src: /src/dovecot/src/lib-master/master-service.c:782,1
    - Dst: i_set_failure_syslog
      Src: /src/dovecot/src/lib-master/master-service.c:785,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-master/master-service.c:787,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:789,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib-master/master-service.c:791,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib-master/master-service.c:792,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:797,1
    - Dst: i_set_info_file
      Src: /src/dovecot/src/lib-master/master-service.c:798,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-service.c:801,1
    - Dst: i_set_debug_file
      Src: /src/dovecot/src/lib-master/master-service.c:802,1
    - Dst: i_set_failure_timestamp_format
      Src: /src/dovecot/src/lib-master/master-service.c:803,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 2
    argNames:
    - service
    - prefix
    argTypes:
    - struct master_service*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 805
    functionName: master_service_try_init_log
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_set_debug_file
    - i_set_failure_internal
    - getenv
    - i_set_failure_prefix
    - i_set_error_handler
    - i_set_failure_syslog
    - i_set_info_file
    - i_set_fatal_handler
    - syslog_facility_find
    - i_assert
    - i_set_failure_file
    - i_set_failure_timestamp_format
    linkageType: ''
    returnType: bool
    signature: "bool master_service_try_init_log(struct master_service *service,\n\t\t\t
      \   const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init_log_with_prefix
      Src: /src/dovecot/src/lib-master/master-service.c:809,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service.c:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 811
    functionName: master_service_init_log
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 5
    functionsReached:
    - master_service_init_log_with_prefix
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void master_service_init_log(struct master_service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-master/master-service.c:818,1
    - Dst: master_service_try_init_log
      Src: /src/dovecot/src/lib-master/master-service.c:821,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - service
    - prefix
    argTypes:
    - struct master_service*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 813
    functionDepth: 2
    functionLinenumber: 813
    functionLinenumberEnd: 823
    functionName: master_service_init_log_with_prefix
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 3
    functionsReached:
    - master_service_try_init_log
    - i_set_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void master_service_init_log_with_prefix(struct master_service *service,\n\t\t\t\t\t
      const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init_log_with_prefix
      Src: /src/dovecot/src/lib-master/master-service.c:827,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service.c:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 825
    functionDepth: 3
    functionLinenumber: 825
    functionLinenumberEnd: 829
    functionName: master_service_init_log_with_pid
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached:
    - master_service_init_log_with_prefix
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void master_service_init_log_with_pid(struct master_service *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service.c:836,1
    - Dst: stats_client_init
      Src: /src/dovecot/src/lib-master/master-service.c:839,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - service
    - silent_errors
    argTypes:
    - struct master_service*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 840
    functionName: master_service_init_stats_client
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - stats_client_init
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void master_service_init_stats_client(struct master_service *service,\n\t\t\t\t
      \     bool silent_errors)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - service
    - set
    argTypes:
    - struct master_service*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 847
    functionName: master_service_set_die_with_master
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void master_service_set_die_with_master(struct master_service *service,\n\t\t\t\t\tbool
      set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 849
    functionDepth: 0
    functionLinenumber: 849
    functionLinenumberEnd: 853
    functionName: master_service_set_die_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void master_service_set_die_callback(struct master_service *service,\n\t\t\t\t
      \    void (*callback)(void))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 859
    functionName: master_service_set_idle_die_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void master_service_set_idle_die_callback(struct master_service *service,\n\t\t\t\t\t
      \ bool (*callback)(void))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-master/master-service.c:870,1
    - Dst: master_instance_list_init
      Src: /src/dovecot/src/lib-master/master-service.c:871,1
    - Dst: master_instance_list_find_by_name
      Src: /src/dovecot/src/lib-master/master-service.c:872,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service.c:874,1
    - Dst: t_readlink
      Src: /src/dovecot/src/lib-master/master-service.c:876,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/master-service.c:877,1
    - Dst: master_instance_list_deinit
      Src: /src/dovecot/src/lib-master/master-service.c:879,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - name
    - config_path_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 881
    functionName: get_instance_config
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_instance_list_deinit
    - i_fatal
    - t_strdup_printf
    - master_instance_list_init
    - master_instance_list_find_by_name
    - t_strconcat
    - t_readlink
    linkageType: ''
    returnType: bool
    signature: bool get_instance_config(const char *name, const char **config_path_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:890,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:891,1
    - Dst: get_instance_config
      Src: /src/dovecot/src/lib-master/master-service.c:896,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/master-service.c:897,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:898,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-master/master-service.c:905,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-master/master-service.c:906,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-master/master-service.c:907,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - service
    - opt
    - arg
    argTypes:
    - struct master_service*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 883
    functionDepth: 2
    functionLinenumber: 883
    functionLinenumberEnd: 919
    functionName: master_service_parse_option
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - array_push_back
    - i_fatal
    - get_instance_config
    - i_strdup
    - array_is_created
    - i_free
    linkageType: ''
    returnType: bool
    signature: "bool master_service_parse_option(struct master_service *service,\n\t\t\t\t
      int opt, const char *arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_admin_clients_deinit
      Src: /src/dovecot/src/lib-master/master-service.c:925,1
    - Dst: master_service_stop_new_connections
      Src: /src/dovecot/src/lib-master/master-service.c:927,1
    - Dst: master_service_stop
      Src: /src/dovecot/src/lib-master/master-service.c:931,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/master-service.c:934,1
    - Dst: struct master_service*::die_callback
      Src: /src/dovecot/src/lib-master/master-service.c:937,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 940
    functionName: master_service_error
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_admin_clients_deinit
    - master_service_stop_new_connections
    - master_service_stop
    - timeout_add
    - struct master_service*::die_callback
    linkageType: ''
    returnType: void
    signature: void master_service_error(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:947,1
    - Dst: i_set_failure_ignore_errors
      Src: /src/dovecot/src/lib-master/master-service.c:951,1
    - Dst: master_service_error
      Src: /src/dovecot/src/lib-master/master-service.c:953,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 954
    functionName: master_status_error
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - io_remove
    - master_service_error
    - i_set_failure_ignore_errors
    linkageType: ''
    returnType: void
    signature: void master_status_error(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-master/master-service.c:958,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-master/master-service.c:960,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-master/master-service.c:962,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-master/master-service.c:964,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 965
    functionName: master_status_update_wait
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io
    - io_loop_destroy
    - io_loop_run
    - io_loop_create
    linkageType: ''
    returnType: void
    signature: void master_status_update_wait(struct master_service *service)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:971,1
    - Dst: lib_set_clean_exit
      Src: /src/dovecot/src/lib-master/master-service.c:975,1
    - Dst: lib_signals_set_handler2
      Src: /src/dovecot/src/lib-master/master-service.c:980,1
    - Dst: lib_signals_set_handler2
      Src: /src/dovecot/src/lib-master/master-service.c:982,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-master/master-service.c:986,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-master/master-service.c:989,1
    - Dst: lib_signals_set_handler2
      Src: /src/dovecot/src/lib-master/master-service.c:992,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-master/master-service.c:997,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-master/master-service.c:1002,1
    - Dst: S_ISFIFO
      Src: /src/dovecot/src/lib-master/master-service.c:1002,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/master-service.c:1003,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-master/master-service.c:1006,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-master/master-service.c:1008,1
    - Dst: master_service_io_listeners_add
      Src: /src/dovecot/src/lib-master/master-service.c:1010,1
    - Dst: master_service_ssl_ctx_init
      Src: /src/dovecot/src/lib-master/master-service.c:1013,1
    - Dst: master_status_update
      Src: /src/dovecot/src/lib-master/master-service.c:1019,1
    - Dst: master_status_update_wait
      Src: /src/dovecot/src/lib-master/master-service.c:1021,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib-master/master-service.c:1025,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-master/master-service.c:1026,1
    - Dst: process_title_get_counter
      Src: /src/dovecot/src/lib-master/master-service.c:1031,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:1032,1
    - Dst: process_title_set
      Src: /src/dovecot/src/lib-master/master-service.c:1033,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 967
    functionDepth: 2
    functionLinenumber: 967
    functionLinenumberEnd: 1034
    functionName: master_service_init_finish
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 10
    functionsReached:
    - i_panic
    - master_status_update
    - io_add
    - i_fatal
    - master_status_update_wait
    - lib_signals_set_handler
    - t_pop
    - getenv
    - lib_signals_set_handler2
    - fstat
    - master_service_io_listeners_add
    - lib_set_clean_exit
    - S_ISFIFO
    - master_service_ssl_ctx_init
    - process_title_set
    - i_assert
    - process_title_get_counter
    linkageType: ''
    returnType: void
    signature: void master_service_init_finish(struct master_service *service)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-master/master-service.c:1039,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-master/master-service.c:1046,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:1048,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-master/master-service.c:1050,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-master/master-service.c:1056,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-master/master-service.c:1059,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/master-service.c:1060,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-master/master-service.c:1062,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-master/master-service.c:1066,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-master/master-service.c:1067,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/master-service.c:1068,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-master/master-service.c:1069,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-master/master-service.c:1070,1
    - Dst: env_put
      Src: /src/dovecot/src/lib-master/master-service.c:1071,1
    - Dst: str_clear
      Src: /src/dovecot/src/lib-master/master-service.c:1072,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-master/master-service.c:1075,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-master/master-service.c:1077,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-master/master-service.c:1079,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-master/master-service.c:1079,1
    - Dst: env_put
      Src: /src/dovecot/src/lib-master/master-service.c:1080,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - import_environment
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1036
    functionDepth: 1
    functionLinenumber: 1036
    functionLinenumberEnd: 1081
    functionName: master_service_import_environment_real
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - env_put
    - strchr
    - t_str_new
    - str_c
    - array_push_back
    - t_strsplit_tabescaped
    - str_len
    - t_strarray_join
    - i_fatal
    - getenv
    - str_clear
    - t_array_init
    - t_strdup_until
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - var_expand
    linkageType: ''
    returnType: void
    signature: void master_service_import_environment_real(const char *import_environment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_import_environment_real
      Src: /src/dovecot/src/lib-master/master-service.c:1086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - import_environment
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1083
    functionDepth: 2
    functionLinenumber: 1083
    functionLinenumberEnd: 1087
    functionName: master_service_import_environment
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_service_import_environment_real
    linkageType: ''
    returnType: void
    signature: void master_service_import_environment(const char *import_environment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service.c:1092,1
    - Dst: env_clean
      Src: /src/dovecot/src/lib-master/master-service.c:1095,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-master/master-service.c:1097,1
    - Dst: env_clean_except
      Src: /src/dovecot/src/lib-master/master-service.c:1098,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-master/master-service.c:1098,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1090
    functionDepth: 1
    functionLinenumber: 1090
    functionLinenumberEnd: 1099
    functionName: master_service_env_clean
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - env_clean
    - getenv
    - env_clean_except
    - t_strsplit_spaces
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void master_service_env_clean(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1107,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - service
    - client_limit
    argTypes:
    - struct master_service*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1102
    functionDepth: 1
    functionLinenumber: 1102
    functionLinenumberEnd: 1116
    functionName: master_service_set_client_limit
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void master_service_set_client_limit(struct master_service *service,\n\t\t\t\t
      \    unsigned int client_limit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1118
    functionDepth: 0
    functionLinenumber: 1118
    functionLinenumberEnd: 1121
    functionName: master_service_get_client_limit
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_service_get_client_limit(struct master_service
      *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1123
    functionDepth: 0
    functionLinenumber: 1123
    functionLinenumberEnd: 1126
    functionName: master_service_get_process_limit
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_service_get_process_limit(struct master_service
      *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1128
    functionDepth: 0
    functionLinenumber: 1128
    functionLinenumberEnd: 1131
    functionName: master_service_get_process_min_avail
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_service_get_process_min_avail(struct master_service
      *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1137
    functionName: master_service_get_idle_kill_interval_secs
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_service_get_idle_kill_interval_secs(struct master_service
      *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - service
    - count
    argTypes:
    - struct master_service*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1139
    functionDepth: 1
    functionLinenumber: 1139
    functionLinenumberEnd: 1153
    functionName: master_service_set_restart_request_count
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void master_service_set_restart_request_count(struct master_service
      *service,\n\t\t\t\t\t      unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1155
    functionDepth: 0
    functionLinenumber: 1155
    functionLinenumberEnd: 1158
    functionName: master_service_get_restart_request_count
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_service_get_restart_request_count(struct master_service
      *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1160
    functionDepth: 0
    functionLinenumber: 1160
    functionLinenumberEnd: 1163
    functionName: master_service_get_socket_count
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_service_get_socket_count(struct master_service
      *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_getsockname
      Src: /src/dovecot/src/lib-master/master-service.c:1173,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-master/master-service.c:1179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - l
    argTypes:
    - struct master_service_connection*
    - struct master_service_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1165
    functionDepth: 1
    functionLinenumber: 1165
    functionLinenumberEnd: 1180
    functionName: master_service_connection_init_finish
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - net_set_nonblock
    - net_getsockname
    linkageType: ''
    returnType: void
    signature: "void master_service_connection_init_finish(struct master_service_connection
      *conn,\n\t\t\t\t      const struct master_service_listener *l)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - service
    - callback
    argTypes:
    - struct master_service*
    - master_service_avail_overflow_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1182
    functionDepth: 0
    functionLinenumber: 1182
    functionLinenumberEnd: 1186
    functionName: master_service_set_avail_overflow_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void master_service_set_avail_overflow_callback(struct master_service
      *service,\n\tmaster_service_avail_overflow_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1188
    functionDepth: 0
    functionLinenumber: 1188
    functionLinenumberEnd: 1191
    functionName: master_service_get_config_path
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *master_service_get_config_path(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1193
    functionDepth: 0
    functionLinenumber: 1193
    functionLinenumberEnd: 1196
    functionName: master_service_get_version_string
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *master_service_get_version_string(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1198
    functionDepth: 0
    functionLinenumber: 1198
    functionLinenumberEnd: 1201
    functionName: master_service_get_name
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *master_service_get_name(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1203
    functionDepth: 0
    functionLinenumber: 1203
    functionLinenumberEnd: 1206
    functionName: master_service_get_event
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *master_service_get_event(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1208
    functionDepth: 0
    functionLinenumber: 1208
    functionLinenumberEnd: 1211
    functionName: master_service_get_configured_name
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *master_service_get_configured_name(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1213
    functionDepth: 0
    functionLinenumber: 1213
    functionLinenumberEnd: 1217
    functionName: master_service_get_settings_root
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct settings_root
    signature: 'struct settings_root *

      master_service_get_settings_root(struct master_service *service)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_getpeername
      Src: /src/dovecot/src/lib-master/master-service.c:1230,1
    - Dst: master_service_connection_init_finish
      Src: /src/dovecot/src/lib-master/master-service.c:1231,1
    - Dst: master_service_client_connection_created
      Src: /src/dovecot/src/lib-master/master-service.c:1234,1
    - Dst: master_service_haproxy_new
      Src: /src/dovecot/src/lib-master/master-service.c:1236,1
    - Dst: master_service_client_connection_callback
      Src: /src/dovecot/src/lib-master/master-service.c:1238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1219
    functionDepth: 3
    functionLinenumber: 1219
    functionLinenumberEnd: 1239
    functionName: master_service_start_accepted_fd
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - net_getpeername
    - master_service_client_connection_callback
    - master_service_client_connection_created
    - master_service_haproxy_new
    - master_service_connection_init_finish
    linkageType: ''
    returnType: void
    signature: void master_service_start_accepted_fd(struct master_service *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-master/master-service.c:1252,1
    - Dst: master_service_start_accepted_fd
      Src: /src/dovecot/src/lib-master/master-service.c:1253,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/lib-master/master-service.c:1254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - service
    - callback
    argTypes:
    - struct master_service*
    - master_service_connection_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1241
    functionDepth: 4
    functionLinenumber: 1241
    functionLinenumberEnd: 1255
    functionName: master_service_run
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 8
    functionsReached:
    - master_service_start_accepted_fd
    - io_loop_is_running
    - io_loop_set_running
    linkageType: ''
    returnType: void
    signature: "void master_service_run(struct master_service *service,\n\t\t\tmaster_service_connection_callback_t
      *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/master-service.c:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1261
    functionDepth: 1
    functionLinenumber: 1261
    functionLinenumberEnd: 1264
    functionName: master_service_stop
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void master_service_stop(struct master_service *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_service_io_listeners_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1274,1
    - Dst: master_service_io_listeners_close
      Src: /src/dovecot/src/lib-master/master-service.c:1275,1
    - Dst: master_service_stop
      Src: /src/dovecot/src/lib-master/master-service.c:1284,1
    - Dst: master_status_update
      Src: /src/dovecot/src/lib-master/master-service.c:1289,1
    - Dst: struct master_service*::stop_new_connections_callback
      Src: /src/dovecot/src/lib-master/master-service.c:1292,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1266
    functionDepth: 2
    functionLinenumber: 1266
    functionLinenumberEnd: 1295
    functionName: master_service_stop_new_connections
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached:
    - master_status_update
    - master_service_io_listeners_remove
    - master_service_stop
    - master_service_io_listeners_close
    - struct master_service*::stop_new_connections_callback
    linkageType: ''
    returnType: void
    signature: void master_service_stop_new_connections(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - service
    - context
    argTypes:
    - struct master_service*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1297
    functionDepth: 1
    functionLinenumber: 1297
    functionLinenumberEnd: 1305
    functionName: master_service_add_stop_new_connections_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void master_service_add_stop_new_connections_callback(\n\tstruct master_service
      *service,\n\tvoid (*callback)(void *context), void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1311,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - service
    - context
    argTypes:
    - struct master_service*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1307
    functionDepth: 1
    functionLinenumber: 1307
    functionLinenumberEnd: 1316
    functionName: master_service_remove_stop_new_connections_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void master_service_remove_stop_new_connections_callback(\n\tstruct
      master_service *service,\n\tvoid (*callback)(void *context), void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1318
    functionDepth: 0
    functionLinenumber: 1318
    functionLinenumberEnd: 1321
    functionName: master_service_is_killed
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool master_service_is_killed(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1323
    functionDepth: 0
    functionLinenumber: 1323
    functionLinenumberEnd: 1326
    functionName: master_service_get_kill_signal
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int master_service_get_kill_signal(struct master_service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: block_sigterm
      Src: /src/dovecot/src/lib-master/master-service.c:1333,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib-master/master-service.c:1338,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - service
    - tv_r
    argTypes:
    - struct master_service*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1328
    functionDepth: 2
    functionLinenumber: 1328
    functionLinenumberEnd: 1342
    functionName: master_service_get_kill_time
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - e_error
    - sigprocmask
    - block_sigterm
    linkageType: ''
    returnType: void
    signature: "void master_service_get_kill_time(struct master_service *service,\n\t\t\t\t
      \ struct timeval *tv_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1344
    functionDepth: 0
    functionLinenumber: 1344
    functionLinenumberEnd: 1347
    functionName: master_service_is_user_kicked
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool master_service_is_user_kicked(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1349
    functionDepth: 0
    functionLinenumber: 1349
    functionLinenumberEnd: 1353
    functionName: master_service_is_master_stopped
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool master_service_is_master_stopped(struct master_service *service)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/dovecot/src/lib-master/master-service.c:1363,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/master-service.c:1363,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1370,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1373,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1376,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/master-service.c:1376,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - service
    - cmd
    argTypes:
    - struct master_service*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1355
    functionDepth: 1
    functionLinenumber: 1355
    functionLinenumberEnd: 1379
    functionName: master_service_anvil_send
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - e_error
    - strlen
    - i_assert
    - write
    linkageType: ''
    returnType: bool
    signature: bool master_service_anvil_send(struct master_service *service, const
      char *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-master/master-service.c:1385,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-service.c:1386,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1387,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-service.c:1388,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1389,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service.c:1391,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service.c:1391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - cmd
    - session
    argTypes:
    - string_t*
    - struct master_service_anvil_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1392
    functionName: master_service_anvil_session_to_cmd
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - str_append_tabescaped
    - net_ip2addr
    - str_append
    linkageType: ''
    returnType: void
    signature: "void master_service_anvil_session_to_cmd(string_t *cmd,\n\tconst struct
      master_service_anvil_session *session)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-master/master-service.c:1398,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/master-service.c:1400,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service.c:1401,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service.c:1402,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-master/master-service.c:1402,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1403,1
    - Dst: master_service_anvil_session_to_cmd
      Src: /src/dovecot/src/lib-master/master-service.c:1404,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1405,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1407,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/lib-master/master-service.c:1408,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1409,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1411,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1413,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1414,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service.c:1416,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-master/master-service.c:1416,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/master-service.c:1418,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1421,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-service.c:1422,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1425,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-service.c:1426,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-master/master-service.c:1426,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1428,1
    - Dst: master_service_anvil_send
      Src: /src/dovecot/src/lib-master/master-service.c:1429,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-master/master-service.c:1429,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - service
    - session
    - kick_supported
    - conn_guid_r
    argTypes:
    - struct master_service*
    - struct master_service_anvil_session*
    - bool
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1394
    functionDepth: 2
    functionLinenumber: 1394
    functionLinenumberEnd: 1430
    functionName: master_service_anvil_connect
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 4
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - guid_128_to_string
    - master_service_get_client_limit
    - guid_128_generate
    - master_service_anvil_send
    - master_service_anvil_session_to_cmd
    - str_append_tabescaped
    - net_ip2addr
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool master_service_anvil_connect(struct master_service *service,\n\tconst
      struct master_service_anvil_session *session,\n\tbool kick_supported, guid_128_t
      conn_guid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/master-service.c:1436,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service.c:1437,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service.c:1438,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-master/master-service.c:1438,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1439,1
    - Dst: master_service_anvil_session_to_cmd
      Src: /src/dovecot/src/lib-master/master-service.c:1440,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service.c:1441,1
    - Dst: master_service_anvil_send
      Src: /src/dovecot/src/lib-master/master-service.c:1442,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-master/master-service.c:1442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - service
    - session
    - conn_guid
    argTypes:
    - struct master_service*
    - struct master_service_anvil_session*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1432
    functionDepth: 2
    functionLinenumber: 1432
    functionLinenumberEnd: 1443
    functionName: master_service_anvil_disconnect
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 4
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - guid_128_to_string
    - master_service_anvil_send
    - master_service_anvil_session_to_cmd
    - str_append
    linkageType: ''
    returnType: void
    signature: "void master_service_anvil_disconnect(struct master_service *service,\n\tconst
      struct master_service_anvil_session *session,\n\tconst guid_128_t conn_guid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1447,1
    - Dst: master_status_update
      Src: /src/dovecot/src/lib-master/master-service.c:1449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1445
    functionDepth: 1
    functionLinenumber: 1445
    functionLinenumberEnd: 1450
    functionName: master_service_client_connection_created
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached:
    - master_status_update
    - i_assert
    linkageType: ''
    returnType: void
    signature: void master_service_client_connection_created(struct master_service
      *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1452
    functionDepth: 0
    functionLinenumber: 1452
    functionLinenumberEnd: 1470
    functionName: master_service_want_listener
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool master_service_want_listener(struct master_service *service)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/lib-master/master-service.c:1476,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1477,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/lib-master/master-service.c:1478,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/lib-master/master-service.c:1482,1
    - Dst: master_service_want_listener
      Src: /src/dovecot/src/lib-master/master-service.c:1484,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1485,1
    - Dst: master_service_io_listeners_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1486,1
    - Dst: master_service_io_listeners_close
      Src: /src/dovecot/src/lib-master/master-service.c:1502,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - service
    - conn
    argTypes:
    - struct master_service*
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1472
    functionDepth: 1
    functionLinenumber: 1472
    functionLinenumberEnd: 1505
    functionName: master_service_client_connection_handled
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached:
    - master_service_want_listener
    - master_service_io_listeners_remove
    - e_error
    - master_service_io_listeners_close
    - i_assert
    - close
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: "void master_service_client_connection_handled(struct master_service
      *service,\n\t\t\t\t\t      struct master_service_connection *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct master_service*::callback
      Src: /src/dovecot/src/lib-master/master-service.c:1510,1
    - Dst: master_service_client_connection_handled
      Src: /src/dovecot/src/lib-master/master-service.c:1512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - service
    - conn
    argTypes:
    - struct master_service*
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1507
    functionDepth: 2
    functionLinenumber: 1507
    functionLinenumberEnd: 1513
    functionName: master_service_client_connection_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached:
    - master_service_client_connection_handled
    - struct master_service*::callback
    linkageType: ''
    returnType: void
    signature: "void master_service_client_connection_callback(struct master_service
      *service,\n\t\t\t\t\t       struct master_service_connection *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1515
    functionDepth: 0
    functionLinenumber: 1515
    functionLinenumberEnd: 1518
    functionName: master_service_client_connection_accept
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void master_service_client_connection_accept(struct master_service_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: master_service_io_listeners_add
      Src: /src/dovecot/src/lib-master/master-service.c:1523,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1525,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1526,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1535,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1541,1
    - Dst: master_service_stop
      Src: /src/dovecot/src/lib-master/master-service.c:1543,1
    - Dst: master_service_stop
      Src: /src/dovecot/src/lib-master/master-service.c:1551,1
    - Dst: master_status_update
      Src: /src/dovecot/src/lib-master/master-service.c:1553,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1520
    functionDepth: 2
    functionLinenumber: 1520
    functionLinenumberEnd: 1555
    functionName: master_service_client_connection_destroyed
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 17
    functionsReached:
    - master_service_stop
    - master_status_update
    - i_assert
    - master_service_io_listeners_add
    linkageType: ''
    returnType: void
    signature: void master_service_client_connection_destroyed(struct master_service
      *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1560,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-master/master-service.c:1566,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-master/master-service.c:1572,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1557
    functionDepth: 1
    functionLinenumber: 1557
    functionLinenumberEnd: 1579
    functionName: master_service_connection_get_type
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 3
    functionsReached:
    - i_assert
    - strrchr
    linkageType: ''
    returnType: char
    signature: 'char *

      master_service_connection_get_type(const struct master_service_connection *conn)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1584,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/master-service.c:1597,1
    - Dst: master_service_io_listeners_add
      Src: /src/dovecot/src/lib-master/master-service.c:1604,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - service
    - state
    argTypes:
    - struct master_service*
    - enum master_login_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1581
    functionDepth: 1
    functionLinenumber: 1581
    functionLinenumberEnd: 1608
    functionName: master_service_set_login_state
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - e_error
    - timeout_add
    - master_service_io_listeners_add
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void master_service_set_login_state(struct master_service *service,\n\t\t\t\t\t
      \  enum master_login_state state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/dovecot/src/lib-master/master-service.c:1615,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - service
    - state_r
    argTypes:
    - struct master_service*
    - enum master_login_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1610
    functionDepth: 0
    functionLinenumber: 1610
    functionLinenumberEnd: 1623
    functionName: master_service_get_login_state
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - e_error
    - lseek
    linkageType: ''
    returnType: int
    signature: "int master_service_get_login_state(struct master_service *service,\n\t\t\t\t\t
      \ enum master_login_state *state_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_login_state
      Src: /src/dovecot/src/lib-master/master-service.c:1629,1
    - Dst: master_service_set_login_state
      Src: /src/dovecot/src/lib-master/master-service.c:1630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1625
    functionDepth: 2
    functionLinenumber: 1625
    functionLinenumberEnd: 1631
    functionName: master_service_refresh_login_state
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached:
    - master_service_get_login_state
    - master_service_set_login_state
    linkageType: ''
    returnType: void
    signature: void master_service_refresh_login_state(struct master_service *service)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_killed
      Src: /src/dovecot/src/lib-master/master-service.c:1635,1
    - Dst: log_killed_signal
      Src: /src/dovecot/src/lib-master/master-service.c:1638,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib-master/master-service.c:1642,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-master/master-service.c:1643,1
    - Dst: master_admin_clients_deinit
      Src: /src/dovecot/src/lib-master/master-service.c:1645,1
    - Dst: master_service_haproxy_abort
      Src: /src/dovecot/src/lib-master/master-service.c:1646,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1649,1
    - Dst: master_service_ssl_ctx_deinit
      Src: /src/dovecot/src/lib-master/master-service.c:1650,1
    - Dst: stats_client_deinit
      Src: /src/dovecot/src/lib-master/master-service.c:1653,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1654,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1655,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1656,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1657,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1658,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1659,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-master/master-service.c:1660,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-master/master-service.c:1661,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-master/master-service.c:1663,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1664,1
    - Dst: event_unregister_callback
      Src: /src/dovecot/src/lib-master/master-service.c:1666,1
    - Dst: master_service_unset_process_shutdown_filter
      Src: /src/dovecot/src/lib-master/master-service.c:1667,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-master/master-service.c:1668,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1669
      start: 1633
    functionDepth: 3
    functionLinenumber: 1633
    functionLinenumberEnd: 1669
    functionName: master_service_deinit_real
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_panic
    - master_admin_clients_deinit
    - master_service_ssl_ctx_deinit
    - master_service_unset_process_shutdown_filter
    - log_killed_signal
    - master_service_is_killed
    - io_remove
    - i_close_fd
    - t_pop
    - settings_free
    - event_unregister_callback
    - stats_client_deinit
    - master_service_haproxy_abort
    - array_is_created
    - i_free
    - array_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void master_service_deinit_real(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_root_deinit
      Src: /src/dovecot/src/lib-master/master-service.c:1683,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1686,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1687,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1689,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1690,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1691,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1692,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1693,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1694,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1695,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/master-service.c:1696,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:1697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - _service
    argTypes:
    - struct master_service**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1671
    functionDepth: 1
    functionLinenumber: 1671
    functionLinenumberEnd: 1698
    functionName: master_service_free
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_free
    - settings_root_deinit
    linkageType: ''
    returnType: void
    signature: void master_service_free(struct master_service **_service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_deinit_real
      Src: /src/dovecot/src/lib-master/master-service.c:1705,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib-master/master-service.c:1708,1
    - Dst: lib_atexit_run
      Src: /src/dovecot/src/lib-master/master-service.c:1710,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-master/master-service.c:1712,1
    - Dst: master_service_free
      Src: /src/dovecot/src/lib-master/master-service.c:1714,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-master/master-service.c:1716,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _service
    argTypes:
    - struct master_service**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1700
    functionDepth: 4
    functionLinenumber: 1700
    functionLinenumberEnd: 1717
    functionName: master_service_deinit
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 9
    functionsReached:
    - master_service_free
    - master_service_deinit_real
    - lib_deinit
    - lib_atexit_run
    - io_loop_destroy
    - lib_signals_deinit
    linkageType: ''
    returnType: void
    signature: void master_service_deinit(struct master_service **_service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_deinit_real
      Src: /src/dovecot/src/lib-master/master-service.c:1723,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-master/master-service.c:1724,1
    - Dst: master_service_free
      Src: /src/dovecot/src/lib-master/master-service.c:1726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _service
    argTypes:
    - struct master_service**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1719
    functionDepth: 4
    functionLinenumber: 1719
    functionLinenumberEnd: 1727
    functionName: master_service_deinit_forked
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached:
    - master_service_free
    - master_service_deinit_real
    - io_loop_destroy
    linkageType: ''
    returnType: void
    signature: void master_service_deinit_forked(struct master_service **_service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1734,1
    - Dst: master_service_get_login_state
      Src: /src/dovecot/src/lib-master/master-service.c:1736,1
    - Dst: struct master_service*::avail_overflow_callback
      Src: /src/dovecot/src/lib-master/master-service.c:1742,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1751,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1752,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/lib-master/master-service.c:1752,1
    - Dst: master_service_io_listeners_add
      Src: /src/dovecot/src/lib-master/master-service.c:1755,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1729
    functionDepth: 1
    functionLinenumber: 1729
    functionLinenumberEnd: 1763
    functionName: master_service_overflow
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - struct master_service*::avail_overflow_callback
    - master_service_get_login_state
    - io_loop_is_running
    - master_service_io_listeners_add
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void master_service_overflow(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-master/master-service.c:1773,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-master/master-service.c:1776,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-master/master-service.c:1777,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1780,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-master/master-service.c:1785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - created
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1765
    functionDepth: 1
    functionLinenumber: 1765
    functionLinenumberEnd: 1786
    functionName: master_service_overflow_timeout_msecs
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - I_MIN
    - I_MAX
    - i_rand_limit
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_service_overflow_timeout_msecs(const struct timeval
      *created)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct master_service*::avail_overflow_callback
      Src: /src/dovecot/src/lib-master/master-service.c:1803,1
    - Dst: struct master_service*::avail_overflow_callback
      Src: /src/dovecot/src/lib-master/master-service.c:1813,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1817,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/master-service.c:1819,1
    - Dst: master_service_overflow_timeout_msecs
      Src: /src/dovecot/src/lib-master/master-service.c:1819,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1788
    functionDepth: 2
    functionLinenumber: 1788
    functionLinenumberEnd: 1822
    functionName: master_service_full
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_service_overflow_timeout_msecs
    - struct master_service*::avail_overflow_callback
    - i_assert
    - timeout_add
    linkageType: ''
    returnType: bool
    signature: bool master_service_full(struct master_service *service)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-master/master-service.c:1830,1
    - Dst: net_accept
      Src: /src/dovecot/src/lib-master/master-service.c:1832,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-master/master-service.c:1837,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-master/master-service.c:1843,1
    - Dst: S_ISFIFO
      Src: /src/dovecot/src/lib-master/master-service.c:1843,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1847,1
    - Dst: master_service_io_listeners_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1850,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1859,1
    - Dst: master_service_connection_init_finish
      Src: /src/dovecot/src/lib-master/master-service.c:1862,1
    - Dst: master_admin_client_create
      Src: /src/dovecot/src/lib-master/master-service.c:1865,1
    - Dst: master_service_client_connection_created
      Src: /src/dovecot/src/lib-master/master-service.c:1868,1
    - Dst: master_service_haproxy_new
      Src: /src/dovecot/src/lib-master/master-service.c:1870,1
    - Dst: master_service_client_connection_callback
      Src: /src/dovecot/src/lib-master/master-service.c:1872,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - l
    - master_admin_conn
    argTypes:
    - struct master_service_listener*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1873
      start: 1824
    functionDepth: 3
    functionLinenumber: 1824
    functionLinenumberEnd: 1873
    functionName: master_service_accept
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_zero
    - master_service_io_listeners_remove
    - io_remove
    - NET_ACCEPT_ENOCONN
    - e_error
    - master_admin_client_create
    - master_service_client_connection_callback
    - fstat
    - S_ISFIFO
    - net_accept
    - master_service_client_connection_created
    - master_service_haproxy_new
    - master_service_connection_init_finish
    linkageType: ''
    returnType: void
    signature: void master_service_accept(struct master_service_listener *l, bool
      master_admin_conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: master_admin_client_can_accept
      Src: /src/dovecot/src/lib-master/master-service.c:1880,1
    - Dst: master_service_full
      Src: /src/dovecot/src/lib-master/master-service.c:1883,1
    - Dst: master_service_io_listeners_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1886,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1890,1
    - Dst: block_sigterm
      Src: /src/dovecot/src/lib-master/master-service.c:1900,1
    - Dst: master_service_accept
      Src: /src/dovecot/src/lib-master/master-service.c:1902,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib-master/master-service.c:1904,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1905,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct master_service_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1875
    functionDepth: 4
    functionLinenumber: 1875
    functionLinenumberEnd: 1908
    functionName: master_service_listen
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - master_service_accept
    - master_service_io_listeners_remove
    - master_admin_client_can_accept
    - e_error
    - master_service_full
    - sigprocmask
    - i_assert
    - block_sigterm
    linkageType: ''
    returnType: void
    signature: void master_service_listen(struct master_service_listener *l)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1916,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-master/master-service.c:1925,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1929
      start: 1910
    functionDepth: 1
    functionLinenumber: 1910
    functionLinenumberEnd: 1929
    functionName: master_service_io_listeners_add
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 4
    functionsReached:
    - io_add
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void master_service_io_listeners_add(struct master_service *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_admin_client_can_accept
      Src: /src/dovecot/src/lib-master/master-service.c:1936,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1937,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1931
    functionDepth: 1
    functionLinenumber: 1931
    functionLinenumberEnd: 1939
    functionName: master_service_io_listeners_remove
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 4
    functionsReached:
    - master_admin_client_can_accept
    - io_remove
    linkageType: ''
    returnType: void
    signature: void master_service_io_listeners_remove(struct master_service *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1948,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1941
    functionDepth: 1
    functionLinenumber: 1941
    functionLinenumberEnd: 1950
    functionName: master_service_ssl_io_listeners_remove
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached:
    - io_remove
    linkageType: ''
    returnType: void
    signature: void master_service_ssl_io_listeners_remove(struct master_service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_admin_client_can_accept
      Src: /src/dovecot/src/lib-master/master-service.c:1960,1
    - Dst: close
      Src: /src/dovecot/src/lib-master/master-service.c:1961,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:1962,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1952
    functionDepth: 1
    functionLinenumber: 1952
    functionLinenumberEnd: 1969
    functionName: master_service_io_listeners_close
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached:
    - master_admin_client_can_accept
    - close
    - e_error
    linkageType: ''
    returnType: void
    signature: void master_service_io_listeners_close(struct master_service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service.c:1986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1988
      start: 1971
    functionDepth: 1
    functionLinenumber: 1971
    functionLinenumberEnd: 1988
    functionName: master_status_update_is_important
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool master_status_update_is_important(struct master_service *service)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-service.c:1995,1
    - Dst: write
      Src: /src/dovecot/src/lib-master/master-service.c:1997,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:2001,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:2008,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:2011,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:2015,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/master-service.c:2019,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-master/master-service.c:2025,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/master-service.c:2034,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - service
    - important_update
    argTypes:
    - struct master_service*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 1990
    functionDepth: 1
    functionLinenumber: 1990
    functionLinenumberEnd: 2036
    functionName: master_status_send
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 1
    functionsReached:
    - io_add
    - io_remove
    - write
    - e_error
    - io_loop_stop
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void master_status_send(struct master_service *service, bool important_update)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: process_title_set
      Src: /src/dovecot/src/lib-master/master-service.c:2047,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service.c:2047,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2038
    functionDepth: 1
    functionLinenumber: 2038
    functionLinenumberEnd: 2049
    functionName: master_status_update
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 4
    functionsReached:
    - process_title_set
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void master_status_update(struct master_service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_unset_process_shutdown_filter
      Src: /src/dovecot/src/lib-master/master-service.c:2080,1
    - Dst: event_filter_ref
      Src: /src/dovecot/src/lib-master/master-service.c:2082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - service
    - filter
    argTypes:
    - struct master_service*
    - struct event_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2083
      start: 2077
    functionDepth: 1
    functionLinenumber: 2077
    functionLinenumberEnd: 2083
    functionName: master_service_set_process_shutdown_filter
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - event_filter_ref
    - master_service_unset_process_shutdown_filter
    linkageType: ''
    returnType: void
    signature: "void master_service_set_process_shutdown_filter(struct master_service
      *service,\n\t\t\t\t\t\tstruct event_filter *filter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-master/master-service.c:2087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2085
    functionDepth: 1
    functionLinenumber: 2085
    functionLinenumberEnd: 2088
    functionName: master_service_unset_process_shutdown_filter
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 2
    functionsReached:
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: void master_service_unset_process_shutdown_filter(struct master_service
      *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: block_sigterm
      Src: /src/dovecot/src/lib-master/master-service.c:2095,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:2098,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:2099,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib-master/master-service.c:2101,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:2102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - service
    - user
    argTypes:
    - struct master_service*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2105
      start: 2090
    functionDepth: 2
    functionLinenumber: 2090
    functionLinenumberEnd: 2105
    functionName: master_service_set_current_user
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - e_error
    - sigprocmask
    - i_free
    - block_sigterm
    linkageType: ''
    returnType: void
    signature: "void master_service_set_current_user(struct master_service *service,\n\t\t\t\t
      \    const char *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: block_sigterm
      Src: /src/dovecot/src/lib-master/master-service.c:2112,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-service.c:2114,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-master/master-service.c:2115,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib-master/master-service.c:2118,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/master-service.c:2119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - service
    - user
    argTypes:
    - struct master_service*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2122
      start: 2107
    functionDepth: 2
    functionLinenumber: 2107
    functionLinenumberEnd: 2122
    functionName: master_service_set_last_kick_signal_user
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - e_error
    - sigprocmask
    - i_free
    - block_sigterm
    linkageType: ''
    returnType: void
    signature: "void master_service_set_last_kick_signal_user(struct master_service
      *service,\n\t\t\t\t\t      const char *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - service
    - callback
    - context
    argTypes:
    - struct master_service*
    - master_service_killed_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2131
      start: 2125
    functionDepth: 0
    functionLinenumber: 2125
    functionLinenumberEnd: 2131
    functionName: master_service_set_killed_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void master_service_set_killed_callback(struct master_service *service,\n\t\t\t\t\tmaster_service_killed_callback_t
      *callback,\n\t\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-master/master-instance.c:42,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-master/master-instance.c:43,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-master/master-instance.c:45,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-master/master-instance.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 48
    functionName: master_instance_list_init
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct master_instance_list
    signature: struct master_instance_list *master_instance_list_init(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-master/master-instance.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct master_instance_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: master_instance_list_deinit
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 1
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void master_instance_list_deinit(struct master_instance_list **_list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-master/master-instance.c:65,1
    - Dst: t_readlink
      Src: /src/dovecot/src/lib-master/master-instance.c:66,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-instance.c:69,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-master/master-instance.c:72,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-master/master-instance.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - list
    - inst
    argTypes:
    - struct master_instance_list*
    - struct master_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: master_instance_update_config_path
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_error
    - null_strcmp
    - t_strconcat
    - t_readlink
    linkageType: ''
    returnType: void
    signature: "void master_instance_update_config_path(struct master_instance_list
      *list,\n\t\t\t\t   struct master_instance *inst)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-master/master-instance.c:87,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-master/master-instance.c:88,1
    - Dst: str_to_time
      Src: /src/dovecot/src/lib-master/master-instance.c:90,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-master/master-instance.c:93,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-master/master-instance.c:95,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-master/master-instance.c:96,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-master/master-instance.c:97,1
    - Dst: master_instance_update_config_path
      Src: /src/dovecot/src/lib-master/master-instance.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - list
    - line
    argTypes:
    - struct master_instance_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 100
    functionName: master_instance_list_add_line
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_strdup_empty
    - array_append_space
    - t_strsplit_tabescaped
    - str_to_time
    - str_array_length
    - master_instance_update_config_path
    linkageType: ''
    returnType: int
    signature: "int master_instance_list_add_line(struct master_instance_list *list,\n\t\t\t
      \     const char *line)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-master/master-instance.c:108,1
    - Dst: open
      Src: /src/dovecot/src/lib-master/master-instance.c:110,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-instance.c:115,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-master/master-instance.c:118,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-master/master-instance.c:119,1
    - Dst: if
      Src: /src/dovecot/src/lib-master/master-instance.c:120,1
    - Dst: master_instance_list_add_line
      Src: /src/dovecot/src/lib-master/master-instance.c:120,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-instance.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct master_instance_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 122
    functionName: master_instance_list_refresh
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - i_error
    - open
    - if
    - i_stream_read_next_line
    - array_clear
    - i_stream_create_fd_autoclose
    - master_instance_list_add_line
    linkageType: ''
    returnType: int
    signature: int master_instance_list_refresh(struct master_instance_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/master-instance.c:138,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-master/master-instance.c:141,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-master/master-instance.c:142,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-master/master-instance.c:143,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-master/master-instance.c:144,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-master/master-instance.c:145,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-instance.c:146,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-instance.c:147,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-instance.c:148,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-instance.c:149,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-instance.c:151,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-instance.c:152,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-master/master-instance.c:153,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-master/master-instance.c:153,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-master/master-instance.c:153,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-master/master-instance.c:155,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-instance.c:156,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-master/master-instance.c:156,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-master/master-instance.c:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - list
    - fd
    - path
    argTypes:
    - struct master_instance_list*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 161
    functionName: master_instance_list_write
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - t_str_new
    - str_printfa
    - str_append_c
    - i_error
    - str_data
    - str_len
    - o_stream_get_error
    - o_stream_cork
    - array_foreach
    - o_stream_finish
    - str_append_tabescaped
    - o_stream_nsend
    - str_truncate
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int master_instance_list_write(struct master_instance_list *list,\n\t\t\t
      \  int fd, const char *path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-instance.c:168,1
    - Dst: file_dotlock_open_mode
      Src: /src/dovecot/src/lib-master/master-instance.c:172,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-instance.c:175,1
    - Dst: master_instance_list_refresh
      Src: /src/dovecot/src/lib-master/master-instance.c:178,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-master/master-instance.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - list
    - dotlock_r
    argTypes:
    - struct master_instance_list*
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 163
    functionDepth: 4
    functionLinenumber: 163
    functionLinenumberEnd: 184
    functionName: master_instance_write_init
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - master_instance_list_refresh
    - i_error
    - file_dotlock_open_mode
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int master_instance_write_init(struct master_instance_list *list,\n\t\t\t\t
      \     struct dotlock **dotlock_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib-master/master-instance.c:189,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-instance.c:192,1
    - Dst: master_instance_list_write
      Src: /src/dovecot/src/lib-master/master-instance.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - list
    - fd
    - dotlock
    argTypes:
    - struct master_instance_list*
    - int
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 196
    functionName: master_instance_write_finish
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - master_instance_list_write
    - file_dotlock_get_lock_path
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int master_instance_write_finish(struct master_instance_list *list,\n\t\t\t\t\tint
      fd, struct dotlock **dotlock)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-master/master-instance.c:218,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-instance.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - list
    - base_dir
    argTypes:
    - struct master_instance_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 223
    functionName: master_instance_find
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - strcmp
    linkageType: ''
    returnType: struct master_instance
    signature: "struct master_instance *\nmaster_instance_find(struct master_instance_list
      *list,\n\t\t     const char *base_dir)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_instance_write_init
      Src: /src/dovecot/src/lib-master/master-instance.c:232,1
    - Dst: master_instance_find
      Src: /src/dovecot/src/lib-master/master-instance.c:235,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-master/master-instance.c:237,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-master/master-instance.c:239,1
    - Dst: time
      Src: /src/dovecot/src/lib-master/master-instance.c:241,1
    - Dst: master_instance_update_config_path
      Src: /src/dovecot/src/lib-master/master-instance.c:242,1
    - Dst: master_instance_write_finish
      Src: /src/dovecot/src/lib-master/master-instance.c:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - list
    - base_dir
    argTypes:
    - struct master_instance_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 225
    functionDepth: 5
    functionLinenumber: 225
    functionLinenumberEnd: 245
    functionName: master_instance_list_update
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - master_instance_write_finish
    - master_instance_update_config_path
    - master_instance_write_init
    - time
    - master_instance_find
    linkageType: ''
    returnType: int
    signature: "int master_instance_list_update(struct master_instance_list *list,\n\t\t\t\tconst
      char *base_dir)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-instance.c:255,1
    - Dst: master_instance_write_init
      Src: /src/dovecot/src/lib-master/master-instance.c:257,1
    - Dst: master_instance_list_find_by_name
      Src: /src/dovecot/src/lib-master/master-instance.c:260,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-instance.c:262,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-master/master-instance.c:264,1
    - Dst: master_instance_find
      Src: /src/dovecot/src/lib-master/master-instance.c:269,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-master/master-instance.c:271,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-master/master-instance.c:272,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-master/master-instance.c:274,1
    - Dst: time
      Src: /src/dovecot/src/lib-master/master-instance.c:275,1
    - Dst: master_instance_write_finish
      Src: /src/dovecot/src/lib-master/master-instance.c:277,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - list
    - base_dir
    - name
    argTypes:
    - struct master_instance_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 247
    functionDepth: 5
    functionLinenumber: 247
    functionLinenumberEnd: 278
    functionName: master_instance_list_set_name
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - strcmp
    - file_dotlock_delete
    - p_strdup
    - array_append_space
    - time
    - master_instance_write_finish
    - master_instance_list_find_by_name
    - master_instance_write_init
    - i_assert
    - master_instance_find
    linkageType: ''
    returnType: int
    signature: "int master_instance_list_set_name(struct master_instance_list *list,\n\t\t\t\t
      \ const char *base_dir, const char *name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_instance_write_init
      Src: /src/dovecot/src/lib-master/master-instance.c:288,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-master/master-instance.c:291,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-instance.c:293,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-master/master-instance.c:294,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-master/master-instance.c:300,1
    - Dst: master_instance_write_finish
      Src: /src/dovecot/src/lib-master/master-instance.c:304,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - list
    - base_dir
    argTypes:
    - struct master_instance_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 280
    functionDepth: 5
    functionLinenumber: 280
    functionLinenumberEnd: 305
    functionName: master_instance_list_remove
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_delete
    - file_dotlock_delete
    - master_instance_write_finish
    - array_get
    - master_instance_write_init
    linkageType: ''
    returnType: int
    signature: "int master_instance_list_remove(struct master_instance_list *list,\n\t\t\t\tconst
      char *base_dir)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: master_instance_list_refresh
      Src: /src/dovecot/src/lib-master/master-instance.c:313,1
    - Dst: master_instance_write_init
      Src: /src/dovecot/src/lib-master/master-instance.c:317,1
    - Dst: master_instance_write_finish
      Src: /src/dovecot/src/lib-master/master-instance.c:319,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct master_instance_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 307
    functionDepth: 5
    functionLinenumber: 307
    functionLinenumberEnd: 323
    functionName: master_instance_list_refresh_and_update
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - master_instance_write_init
    - master_instance_list_refresh
    - master_instance_write_finish
    linkageType: ''
    returnType: int
    signature: int master_instance_list_refresh_and_update(struct master_instance_list
      *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-instance.c:331,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-master/master-instance.c:333,1
    - Dst: master_instance_list_refresh_and_update
      Src: /src/dovecot/src/lib-master/master-instance.c:334,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-master/master-instance.c:336,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-instance.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct master_instance_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 325
    functionDepth: 6
    functionLinenumber: 325
    functionLinenumberEnd: 341
    functionName: master_instance_list_find_by_name
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 2
    functionsReached:
    - strcmp
    - master_instance_list_refresh_and_update
    - array_foreach
    - array_count
    - i_assert
    linkageType: ''
    returnType: struct master_instance
    signature: "struct master_instance *\nmaster_instance_list_find_by_name(struct
      master_instance_list *list,\n\t\t\t\t  const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/master-instance.c:348,1
    - Dst: master_instance_list_refresh_and_update
      Src: /src/dovecot/src/lib-master/master-instance.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct master_instance_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 343
    functionDepth: 6
    functionLinenumber: 343
    functionLinenumberEnd: 352
    functionName: master_instance_list_iterate_init
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - master_instance_list_refresh_and_update
    - i_new
    linkageType: ''
    returnType: struct master_instance_list_iter
    signature: 'struct master_instance_list_iter *

      master_instance_list_iterate_init(struct master_instance_list *list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-master/master-instance.c:357,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-master/master-instance.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct master_instance_list_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 360
    functionName: master_instance_iterate_list_next
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_idx
    linkageType: ''
    returnType: struct master_instance
    signature: 'struct master_instance *

      master_instance_iterate_list_next(struct master_instance_list_iter *iter)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-instance.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct master_instance_list_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 369
    functionName: master_instance_iterate_list_deinit
    functionSourceFile: /src/dovecot/src/lib-master/master-instance.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void master_instance_iterate_list_deinit(struct master_instance_list_iter
      **_iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/syslog-util.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - name
    - facility_r
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 65
    functionName: syslog_facility_find
    functionSourceFile: /src/dovecot/src/lib-master/syslog-util.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool syslog_facility_find(const char *name, int *facility_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/stats-client.c:41,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib-master/stats-client.c:50,1
    - Dst: event_filter_import
      Src: /src/dovecot/src/lib-master/stats-client.c:51,1
    - Dst: t_str_tabunescape
      Src: /src/dovecot/src/lib-master/stats-client.c:51,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-master/stats-client.c:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - args
    - filter_r
    - error_r
    argTypes:
    - char**
    - struct event_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 56
    functionName: client_handshake_filter
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_tabunescape
    - event_filter_create
    - event_filter_import
    - event_filter_unref
    linkageType: ''
    returnType: int
    signature: "int client_handshake_filter(const char *const *args, struct event_filter
      **filter_r,\n\t\t\tconst char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: client_handshake_filter
      Src: /src/dovecot/src/lib-master/stats-client.c:64,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/stats-client.c:65,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-master/stats-client.c:67,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/stats-client.c:73,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib-master/stats-client.c:76,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-master/stats-client.c:78,1
    - Dst: event_set_global_debug_send_filter
      Src: /src/dovecot/src/lib-master/stats-client.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct stats_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 82
    functionName: stats_client_handshake
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - client_handshake_filter
    - t_strarray_join
    - e_error
    - event_filter_create
    - io_loop_stop
    - event_filter_unref
    - event_set_global_debug_send_filter
    linkageType: ''
    returnType: int
    signature: int stats_client_handshake(struct stats_client *client, const char
      *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_client_handshake
      Src: /src/dovecot/src/lib-master/stats-client.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 91
    functionName: stats_client_input_args
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - stats_client_handshake
    linkageType: ''
    returnType: int
    signature: int stats_client_input_args(struct connection *conn, const char *const
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/stats-client.c:95,1
    - Dst: stats_client_connect
      Src: /src/dovecot/src/lib-master/stats-client.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct stats_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: stats_client_reconnect
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - stats_client_connect
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void stats_client_reconnect(struct stats_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: events_get_head
      Src: /src/dovecot/src/lib-master/stats-client.c:106,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-master/stats-client.c:110,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/stats-client.c:113,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-master/stats-client.c:116,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/stats-client.c:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 133
    functionName: stats_client_destroy
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - timeout_add
    - events_get_head
    - io_loop_stop
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void stats_client_destroy(struct connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_ref
      Src: /src/dovecot/src/lib-master/stats-client.c:160,1
    - Dst: event_minimize
      Src: /src/dovecot/src/lib-master/stats-client.c:160,1
    - Dst: stats_event_write
      Src: /src/dovecot/src/lib-master/stats-client.c:166,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/stats-client.c:169,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/stats-client.c:172,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-master/stats-client.c:175,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-master/stats-client.c:182,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-master/stats-client.c:185,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-master/stats-client.c:188,1
    - Dst: event_export
      Src: /src/dovecot/src/lib-master/stats-client.c:189,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/stats-client.c:190,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/stats-client.c:191,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-master/stats-client.c:192,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-master/stats-client.c:193,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-master/stats-client.c:193,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-master/stats-client.c:193,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-master/stats-client.c:194,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 6
    argNames:
    - client
    - event
    - global_event
    - ctx
    - str
    - begin
    argTypes:
    - struct stats_client*
    - struct event*
    - struct event*
    - struct failure_context*
    - string_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 196
    functionName: stats_event_write
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - stats_event_write
    - event_export
    - str_append_c
    - event_unref
    - str_len
    - event_ref
    - str_data
    - o_stream_nsend
    - event_minimize
    - str_truncate
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void stats_event_write(struct stats_client *client,\n\t\t  struct
      event *event, struct event *global_event,\n\t\t  const struct failure_context
      *ctx, string_t *str, bool begin)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib-master/stats-client.c:215,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/stats-client.c:219,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-master/stats-client.c:222,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib-master/stats-client.c:223,1
    - Dst: stats_event_write
      Src: /src/dovecot/src/lib-master/stats-client.c:228,1
    - Dst: stats_event_write
      Src: /src/dovecot/src/lib-master/stats-client.c:231,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-master/stats-client.c:232,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-master/stats-client.c:232,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-master/stats-client.c:232,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/stats-client.c:234,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-master/stats-client.c:236,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/stats-client.c:237,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-master/stats-client.c:238,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - client
    - event
    - ctx
    argTypes:
    - struct stats_client*
    - struct event*
    - struct failure_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 241
    functionName: stats_client_send_event
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - stats_event_write
    - event_get_global
    - str_data
    - str_len
    - o_stream_get_error
    - o_stream_cork
    - event_filter_match
    - e_error
    - o_stream_nsend
    - i_assert
    - o_stream_uncork_flush
    linkageType: ''
    returnType: void
    signature: "void stats_client_send_event(struct stats_client *client, struct event
      *event,\n\t\t\tconst struct failure_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-master/stats-client.c:248,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/stats-client.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - client
    - event
    argTypes:
    - struct stats_client*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 250
    functionName: stats_client_free_event
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void stats_client_free_event(struct stats_client *client, struct event
      *event)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stats_client_send_event
      Src: /src/dovecot/src/lib-master/stats-client.c:268,1
    - Dst: stats_client_free_event
      Src: /src/dovecot/src/lib-master/stats-client.c:271,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 5
    argNames:
    - event
    - type
    - ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event*
    - enum event_callback_type
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 275
    functionName: stats_event_callback
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - stats_client_send_event
    - stats_client_free_event
    linkageType: ''
    returnType: bool
    signature: "bool stats_event_callback(struct event *event, enum event_callback_type
      type,\n\t\t     struct failure_context *ctx,\n\t\t     const char *fmt ATTR_UNUSED,
      va_list args ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/stats-client.c:280,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/stats-client.c:281,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/stats-client.c:283,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/stats-client.c:284,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/stats-client.c:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - str
    - category
    argTypes:
    - string_t*
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 287
    functionName: stats_category_append
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void stats_category_append(string_t *str, const struct event_category
      *category)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/stats-client.c:298,1
    - Dst: stats_category_append
      Src: /src/dovecot/src/lib-master/stats-client.c:299,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-master/stats-client.c:300,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-master/stats-client.c:300,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-master/stats-client.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - category
    argTypes:
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 301
    functionName: stats_category_registered
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - stats_category_append
    - t_str_new
    - str_data
    - str_len
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void stats_category_registered(struct event_category *category)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-master/stats-client.c:305,1
    - Dst: event_register_callback
      Src: /src/dovecot/src/lib-master/stats-client.c:307,1
    - Dst: event_category_register_callback
      Src: /src/dovecot/src/lib-master/stats-client.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 309
    functionName: stats_global_init
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - connection_list_init
    - event_register_callback
    - event_category_register_callback
    linkageType: ''
    returnType: void
    signature: void stats_global_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unregister_callback
      Src: /src/dovecot/src/lib-master/stats-client.c:313,1
    - Dst: event_category_unregister_callback
      Src: /src/dovecot/src/lib-master/stats-client.c:314,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-master/stats-client.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 316
    functionName: stats_global_deinit
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - event_unregister_callback
    - connection_list_deinit
    - event_category_unregister_callback
    linkageType: ''
    returnType: void
    signature: void stats_global_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-master/stats-client.c:320,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/stats-client.c:322,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/stats-client.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct stats_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 327
    functionName: stats_client_handshake_timeout
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - io_loop_stop
    - timeval_diff_msecs
    linkageType: ''
    returnType: void
    signature: void stats_client_handshake_timeout(struct stats_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-master/stats-client.c:331,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/stats-client.c:333,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/stats-client.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct stats_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 337
    functionName: stats_client_deinit_timeout
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - io_loop_stop
    - timeval_diff_msecs
    linkageType: ''
    returnType: void
    signature: void stats_client_deinit_timeout(struct stats_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/stats-client.c:345,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-master/stats-client.c:347,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/stats-client.c:350,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/stats-client.c:353,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-master/stats-client.c:356,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-master/stats-client.c:357,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-master/stats-client.c:358,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-master/stats-client.c:359,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-master/stats-client.c:361,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-master/stats-client.c:362,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/stats-client.c:363,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-master/stats-client.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - client
    - type
    argTypes:
    - struct stats_client*
    - enum stats_timeout_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 365
    functionName: stats_client_wait
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - timeout_add
    - connection_switch_ioloop
    - io_loop_destroy
    - io_loop_create
    - io_loop_move_timeout
    - i_assert
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void stats_client_wait(struct stats_client *client,\n\t\t\t      enum
      stats_timeout_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/stats-client.c:372,1
    - Dst: event_get_registered_categories
      Src: /src/dovecot/src/lib-master/stats-client.c:373,1
    - Dst: stats_category_append
      Src: /src/dovecot/src/lib-master/stats-client.c:375,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-master/stats-client.c:376,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-master/stats-client.c:376,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-master/stats-client.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct stats_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 377
    functionName: stats_client_send_registered_categories
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - stats_category_append
    - t_str_new
    - str_data
    - str_len
    - event_get_registered_categories
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void stats_client_send_registered_categories(struct stats_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-master/stats-client.c:381,1
    - Dst: stats_client_send_registered_categories
      Src: /src/dovecot/src/lib-master/stats-client.c:383,1
    - Dst: stats_client_wait
      Src: /src/dovecot/src/lib-master/stats-client.c:385,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-master/stats-client.c:388,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/stats-client.c:389,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-master/stats-client.c:392,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct stats_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 395
    functionName: stats_client_connect
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 1
    functionsReached:
    - stats_client_wait
    - connection_client_connect
    - e_debug
    - e_error
    - ENOACCESS
    - stats_client_send_registered_categories
    linkageType: ''
    returnType: void
    signature: void stats_client_connect(struct stats_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_global_init
      Src: /src/dovecot/src/lib-master/stats-client.c:402,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/stats-client.c:404,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-master/stats-client.c:406,1
    - Dst: stats_client_connect
      Src: /src/dovecot/src/lib-master/stats-client.c:407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - path
    - silent_errors
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 397
    functionDepth: 4
    functionLinenumber: 397
    functionLinenumberEnd: 409
    functionName: stats_client_init
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 1
    functionsReached:
    - stats_global_init
    - connection_init_client_unix
    - stats_client_connect
    - i_new
    linkageType: ''
    returnType: struct stats_client
    signature: struct stats_client *stats_client_init(const char *path, bool silent_errors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stats_global_init
      Src: /src/dovecot/src/lib-master/stats-client.c:418,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/stats-client.c:420,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-master/stats-client.c:421,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-master/stats-client.c:422,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-master/stats-client.c:423,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib-master/stats-client.c:426,1
    - Dst: event_filter_import
      Src: /src/dovecot/src/lib-master/stats-client.c:427,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-master/stats-client.c:428,1
    - Dst: event_set_global_debug_send_filter
      Src: /src/dovecot/src/lib-master/stats-client.c:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - buf
    - filter
    argTypes:
    - buffer_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 431
    functionName: stats_client_init_unittest
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - i_panic
    - connection_init_client_unix
    - stats_global_init
    - o_stream_set_no_error_handling
    - event_filter_create
    - i_new
    - event_filter_import
    - o_stream_create_buffer
    - event_set_global_debug_send_filter
    linkageType: ''
    returnType: struct stats_client
    signature: 'struct stats_client *

      stats_client_init_unittest(buffer_t *buf, const char *filter)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-master/stats-client.c:436,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/stats-client.c:438,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-master/stats-client.c:439,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/stats-client.c:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 444
    functionName: stats_client_deinit_callback
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - io_loop_stop
    - o_stream_get_error
    - e_error
    linkageType: ''
    returnType: int
    signature: int stats_client_deinit_callback(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-master/stats-client.c:453,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-master/stats-client.c:454,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-master/stats-client.c:457,1
    - Dst: stats_client_wait
      Src: /src/dovecot/src/lib-master/stats-client.c:458,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-master/stats-client.c:461,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-master/stats-client.c:462,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/stats-client.c:463,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-master/stats-client.c:464,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/stats-client.c:465,1
    - Dst: stats_global_deinit
      Src: /src/dovecot/src/lib-master/stats-client.c:468,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct stats_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 469
    functionName: stats_client_deinit
    functionSourceFile: /src/dovecot/src/lib-master/stats-client.c
    functionUses: 1
    functionsReached:
    - stats_client_wait
    - o_stream_uncork
    - stats_global_deinit
    - o_stream_unref
    - o_stream_get_buffer_used_size
    - o_stream_set_flush_callback
    - i_free
    - connection_deinit
    - event_filter_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void stats_client_deinit(struct stats_client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 12
    functionName: DATA
    functionSourceFile: /src/dovecot/src/lib-master/test-master-service-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DATA(data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: NUM64
    functionSourceFile: /src/dovecot/src/lib-master/test-master-service-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM64(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: NUM32
    functionSourceFile: /src/dovecot/src/lib-master/test-master-service-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM32(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: NUM64
    functionSourceFile: /src/dovecot/src/lib-master/test-master-service-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM64(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: NUM32
    functionSourceFile: /src/dovecot/src/lib-master/test-master-service-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NUM32(n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_create_temp_fd
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:450,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:451,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:452,1
    - Dst: lseek
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:453,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 456
    functionName: test_input_to_fd
    functionSourceFile: /src/dovecot/src/lib-master/test-master-service-settings.c
    functionUses: 0
    functionsReached:
    - write_full
    - i_fatal
    - test_create_temp_fd
    - lseek
    linkageType: ''
    returnType: int
    signature: int test_input_to_fd(const unsigned char *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:462,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:463,1
    - Dst: test_input_to_fd
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:465,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:470,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:470,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:472,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:472,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:473,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:474,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:476,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 458
    functionDepth: 2
    functionLinenumber: 458
    functionLinenumberEnd: 477
    functionName: test_master_service_settings_read_binary_corruption
    functionSourceFile: /src/dovecot/src/lib-master/test-master-service-settings.c
    functionUses: 0
    functionsReached:
    - master_service_settings_read
    - i_error
    - test_assert_idx
    - strstr
    - test_end
    - N_ELEMENTS
    - test_begin
    - test_input_to_fd
    linkageType: ''
    returnType: void
    signature: void test_master_service_settings_read_binary_corruption(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:489,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:491,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/lib-master/test-master-service-settings.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 479
    functionDepth: 5
    functionLinenumber: 479
    functionLinenumberEnd: 494
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-master/test-master-service-settings.c
    functionUses: 0
    functionsReached:
    - master_service_deinit
    - master_service_init
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - client
    - ','
    - query
    - ','
    - timeout_msecs
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: anvil_client_query
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: anvil_client_query(client, query, timeout_msecs, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-admin-client.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct master_admin_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: master_admin_client_ref
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void master_admin_client_ref(struct master_admin_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-admin-client.c:31,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/master-admin-client.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct master_admin_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 36
    functionName: master_admin_client_unref
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void master_admin_client_unref(struct master_admin_client **_client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: master_admin_client_send_reply
      Src: /src/dovecot/src/lib-master/master-admin-client.c:43,1
    - Dst: guid_128_empty
      Src: /src/dovecot/src/lib-master/master-admin-client.c:48,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib-master/master-admin-client.c:49,1
    - Dst: master_admin_client_send_reply
      Src: /src/dovecot/src/lib-master/master-admin-client.c:50,1
    - Dst: master_admin_client_send_reply
      Src: /src/dovecot/src/lib-master/master-admin-client.c:54,1
    - Dst: master_admin_client_send_reply
      Src: /src/dovecot/src/lib-master/master-admin-client.c:58,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-admin-client.c:58,1
    - Dst: cmd_kick_user
      Src: /src/dovecot/src/lib-master/master-admin-client.c:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct master_admin_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 60
    functionName: cmd_kick_user
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 1
    functionsReached:
    - master_admin_client_send_reply
    - t_strdup_printf
    - guid_128_empty
    - guid_128_from_string
    - cmd_kick_user
    linkageType: ''
    returnType: void
    signature: void cmd_kick_user(struct master_admin_client *client, const char *const
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_admin_client_send_reply
      Src: /src/dovecot/src/lib-master/master-admin-client.c:68,1
    - Dst: master_service_set_last_kick_signal_user
      Src: /src/dovecot/src/lib-master/master-admin-client.c:75,1
    - Dst: master_admin_client_unref
      Src: /src/dovecot/src/lib-master/master-admin-client.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct master_admin_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 79
    functionName: cmd_kick_user_signal
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 0
    functionsReached:
    - master_service_set_last_kick_signal_user
    - master_admin_client_unref
    - master_admin_client_send_reply
    linkageType: ''
    returnType: void
    signature: "void cmd_kick_user_signal(struct master_admin_client *client,\n\t\t
      \    const char *const *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-master/master-admin-client.c:85,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-master/master-admin-client.c:90,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-master/master-admin-client.c:100,1
    - Dst: master_admin_client_ref
      Src: /src/dovecot/src/lib-master/master-admin-client.c:104,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-admin-client.c:107,1
    - Dst: cmd_kick_user
      Src: /src/dovecot/src/lib-master/master-admin-client.c:109,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-admin-client.c:110,1
    - Dst: cmd_kick_user_signal
      Src: /src/dovecot/src/lib-master/master-admin-client.c:111,1
    - Dst: cmd
      Src: /src/dovecot/src/lib-master/master-admin-client.c:114,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-master/master-admin-client.c:116,1
    - Dst: master_admin_client_unref
      Src: /src/dovecot/src/lib-master/master-admin-client.c:117,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 120
    functionName: master_admin_client_input_args
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - cmd_kick_user_signal
    - container_of
    - connection_input_halt
    - master_admin_client_unref
    - io_loop_stop
    - master_admin_client_ref
    - cmd
    - o_stream_nsend_str
    - cmd_kick_user
    linkageType: ''
    returnType: int
    signature: int master_admin_client_input_args(struct connection *conn, const char
      *const *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-admin-client.c:125,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/master-admin-client.c:129,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib-master/master-admin-client.c:133,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-master/master-admin-client.c:133,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-master/master-admin-client.c:134,1
    - Dst: master_admin_client_unref
      Src: /src/dovecot/src/lib-master/master-admin-client.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - client
    - reply
    argTypes:
    - struct master_admin_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 139
    functionName: master_admin_client_send_reply
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 2
    functionsReached:
    - connection_input_resume
    - master_admin_client_unref
    - strlen
    - o_stream_nsendv
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void master_admin_client_send_reply(struct master_admin_client *client,\n\t\t\t\t
      \   const char *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-master/master-admin-client.c:144,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-master/master-admin-client.c:146,1
    - Dst: master_admin_client_unref
      Src: /src/dovecot/src/lib-master/master-admin-client.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 148
    functionName: master_admin_client_destroy
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 0
    functionsReached:
    - master_admin_client_unref
    - container_of
    - connection_deinit
    linkageType: ''
    returnType: void
    signature: void master_admin_client_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-master/master-admin-client.c:169,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-master/master-admin-client.c:170,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-master/master-admin-client.c:172,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-master/master-admin-client.c:174,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/master-admin-client.c:176,1
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-master/master-admin-client.c:177,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-master/master-admin-client.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct master_admin_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 179
    functionName: master_admin_client_initial_read
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - connection_switch_ioloop
    - io_loop_destroy
    - io_loop_create
    - connection_switch_ioloop_to
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void master_admin_client_initial_read(struct master_admin_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-master/master-admin-client.c:187,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/master-admin-client.c:191,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-master/master-admin-client.c:193,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/lib-master/master-admin-client.c:195,1
    - Dst: master_admin_client_ref
      Src: /src/dovecot/src/lib-master/master-admin-client.c:201,1
    - Dst: master_admin_client_initial_read
      Src: /src/dovecot/src/lib-master/master-admin-client.c:202,1
    - Dst: master_admin_client_unref
      Src: /src/dovecot/src/lib-master/master-admin-client.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - master_conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 205
    functionName: master_admin_client_create
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    - master_admin_client_unref
    - master_service_get_client_limit
    - connection_init_server
    - master_admin_client_ref
    - i_new
    - master_admin_client_initial_read
    linkageType: ''
    returnType: void
    signature: void master_admin_client_create(struct master_service_connection *master_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/master-admin-client.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 210
    functionName: master_admin_client_can_accept
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 5
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool master_admin_client_can_accept(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callbacks
    argTypes:
    - struct master_admin_client_callback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: master_admin_clients_init
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void master_admin_clients_init(const struct master_admin_client_callback
      *callbacks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-master/master-admin-client.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 221
    functionName: master_admin_clients_deinit
    functionSourceFile: /src/dovecot/src/lib-master/master-admin-client.c
    functionUses: 2
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void master_admin_clients_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-master/anvil-client.c:83,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/anvil-client.c:87,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-master/anvil-client.c:88,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-master/anvil-client.c:92,1
    - Dst: aqueue_init
      Src: /src/dovecot/src/lib-master/anvil-client.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - path
    - callbacks
    - flags
    argTypes:
    - char*
    - struct anvil_client_callbacks*
    - enum anvil_client_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 95
    functionName: anvil_client_init
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - connection_list_init
    - connection_init_client_unix
    - aqueue_init
    - i_new
    linkageType: ''
    returnType: struct anvil_client
    signature: "struct anvil_client *\nanvil_client_init(const char *path,\n\t\t  const
      struct anvil_client_callbacks *callbacks,\n\t\t  enum anvil_client_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_destroy
      Src: /src/dovecot/src/lib-master/anvil-client.c:104,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-master/anvil-client.c:106,1
    - Dst: aqueue_deinit
      Src: /src/dovecot/src/lib-master/anvil-client.c:107,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/anvil-client.c:108,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-master/anvil-client.c:109,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/anvil-client.c:110,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/anvil-client.c:111,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-master/anvil-client.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct anvil_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 115
    functionName: anvil_client_deinit
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 1
    functionsReached:
    - aqueue_deinit
    - i_free
    - array_free
    - anvil_client_destroy
    - i_assert
    - connection_deinit
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void anvil_client_deinit(struct anvil_client **_client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-master/anvil-client.c:122,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-master/anvil-client.c:123,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-master/anvil-client.c:126,1
    - Dst: struct anvil_client*::callbacks::command
      Src: /src/dovecot/src/lib-master/anvil-client.c:132,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-master/anvil-client.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct anvil_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 138
    functionName: anvil_client_cmd_pending_input
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - t_strsplit_tabescaped
    - o_stream_nsend_str
    - i_stream_next_line
    - struct anvil_client*::callbacks::command
    linkageType: ''
    returnType: void
    signature: void anvil_client_cmd_pending_input(struct anvil_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_cmd_pending_input
      Src: /src/dovecot/src/lib-master/anvil-client.c:145,1
    - Dst: connection_input_read_stream
      Src: /src/dovecot/src/lib-master/anvil-client.c:146,1
    - Dst: anvil_client_cmd_pending_input
      Src: /src/dovecot/src/lib-master/anvil-client.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct anvil_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 149
    functionName: anvil_client_cmd_input
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - connection_input_read_stream
    - anvil_client_cmd_pending_input
    linkageType: ''
    returnType: void
    signature: void anvil_client_cmd_input(struct anvil_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib-master/anvil-client.c:154,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-master/anvil-client.c:155,1
    - Dst: connection_streams_changed
      Src: /src/dovecot/src/lib-master/anvil-client.c:157,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib-master/anvil-client.c:159,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-master/anvil-client.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct anvil_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 163
    functionName: anvil_client_start_multiplex_input
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - i_stream_create_multiplex
    - i_stream_unref
    - connection_streams_changed
    - i_stream_multiplex_add_channel
    linkageType: ''
    returnType: void
    signature: void anvil_client_start_multiplex_input(struct anvil_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/lib-master/anvil-client.c:169,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-master/anvil-client.c:171,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-master/anvil-client.c:172,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib-master/anvil-client.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct anvil_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 176
    functionName: anvil_client_start_multiplex_output
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - o_stream_set_no_error_handling
    - o_stream_unref
    - o_stream_create_multiplex
    - o_stream_multiplex_add_channel
    linkageType: ''
    returnType: void
    signature: void anvil_client_start_multiplex_output(struct anvil_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct anvil_client*::callbacks::reconnect
      Src: /src/dovecot/src/lib-master/anvil-client.c:181,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/anvil-client.c:190,1
    - Dst: anvil_client_connect
      Src: /src/dovecot/src/lib-master/anvil-client.c:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct anvil_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 197
    functionName: anvil_client_reconnect
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - anvil_client_connect
    - timeout_add
    - struct anvil_client*::callbacks::reconnect
    linkageType: ''
    returnType: void
    signature: void anvil_client_reconnect(struct anvil_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/anvil-client.c:204,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/anvil-client.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _query
    argTypes:
    - struct anvil_query**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 206
    functionName: anvil_query_free
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void anvil_query_free(struct anvil_query **_query)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-master/anvil-client.c:211,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-master/anvil-client.c:217,1
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/lib-master/anvil-client.c:218,1
    - Dst: anvil_client_start_multiplex_input
      Src: /src/dovecot/src/lib-master/anvil-client.c:224,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-master/anvil-client.c:228,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/anvil-client.c:229,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-master/anvil-client.c:233,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-master/anvil-client.c:234,1
    - Dst: struct anvil_query*::callback
      Src: /src/dovecot/src/lib-master/anvil-client.c:237,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 238
    functionName: anvil_client_input_line
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - container_of
    - t_strsplit_tabescaped
    - aqueue_count
    - array_get
    - anvil_client_start_multiplex_input
    - e_error
    - aqueue_idx
    - connection_handshake_args_default
    - struct anvil_query*::callback
    linkageType: ''
    returnType: int
    signature: int anvil_client_input_line(struct connection *conn, const char *line)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/anvil-client.c:248,1
    - Dst: connection_client_connect_with_retries
      Src: /src/dovecot/src/lib-master/anvil-client.c:250,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-master/anvil-client.c:251,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/anvil-client.c:253,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-master/anvil-client.c:254,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-master/anvil-client.c:259,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/anvil-client.c:264,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/anvil-client.c:267,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lib-master/anvil-client.c:268,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-master/anvil-client.c:270,1
    - Dst: anvil_client_start_multiplex_output
      Src: /src/dovecot/src/lib-master/anvil-client.c:272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - client
    - retry
    argTypes:
    - struct anvil_client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 274
    functionName: anvil_client_connect
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 1
    functionsReached:
    - connection_client_connect
    - master_service_get_name
    - anvil_client_start_multiplex_output
    - t_strdup_printf
    - connection_client_connect_with_retries
    - e_error
    - o_stream_nsend_str
    - i_strdup_printf
    - i_assert
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int anvil_client_connect(struct anvil_client *client, bool retry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-master/anvil-client.c:282,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-master/anvil-client.c:283,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-master/anvil-client.c:284,1
    - Dst: callback
      Src: /src/dovecot/src/lib-master/anvil-client.c:287,1
    - Dst: anvil_query_free
      Src: /src/dovecot/src/lib-master/anvil-client.c:289,1
    - Dst: aqueue_delete_tail
      Src: /src/dovecot/src/lib-master/anvil-client.c:290,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/anvil-client.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct anvil_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 293
    functionName: anvil_client_cancel_queries
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - anvil_query_free
    - aqueue_count
    - array_get
    - callback
    - aqueue_idx
    - aqueue_delete_tail
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void anvil_client_cancel_queries(struct anvil_client *client, const
      char *reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-master/anvil-client.c:298,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-master/anvil-client.c:300,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-master/anvil-client.c:301,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-master/anvil-client.c:302,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-master/anvil-client.c:303,1
    - Dst: anvil_client_cancel_queries
      Src: /src/dovecot/src/lib-master/anvil-client.c:304,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/lib-master/anvil-client.c:304,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-master/anvil-client.c:305,1
    - Dst: anvil_client_reconnect
      Src: /src/dovecot/src/lib-master/anvil-client.c:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 309
    functionName: anvil_client_destroy
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 1
    functionsReached:
    - container_of
    - io_remove
    - i_stream_destroy
    - connection_disconnect_reason
    - anvil_client_cancel_queries
    - timeout_remove
    - anvil_client_reconnect
    - o_stream_destroy
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void anvil_client_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/anvil-client.c:313,1
    - Dst: anvil_client_cancel_queries
      Src: /src/dovecot/src/lib-master/anvil-client.c:315,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/anvil-client.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct anvil_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 317
    functionName: anvil_client_connect_failed
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - anvil_client_cancel_queries
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void anvil_client_connect_failed(struct anvil_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/anvil-client.c:323,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-master/anvil-client.c:323,1
    - Dst: anvil_client_cancel_queries
      Src: /src/dovecot/src/lib-master/anvil-client.c:325,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/anvil-client.c:325,1
    - Dst: anvil_client_destroy
      Src: /src/dovecot/src/lib-master/anvil-client.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - anvil_query
    argTypes:
    - struct anvil_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 319
    functionDepth: 4
    functionLinenumber: 319
    functionLinenumberEnd: 331
    functionName: anvil_client_timeout
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - aqueue_count
    - t_strdup_printf
    - anvil_client_cancel_queries
    - anvil_client_destroy
    - i_assert
    linkageType: ''
    returnType: void
    signature: void anvil_client_timeout(struct anvil_query *anvil_query)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_connect
      Src: /src/dovecot/src/lib-master/anvil-client.c:338,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/anvil-client.c:343,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib-master/anvil-client.c:346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - client
    - cmd
    argTypes:
    - struct anvil_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 348
    functionName: anvil_client_send
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - anvil_client_connect
    - strlen
    - o_stream_nsendv
    linkageType: ''
    returnType: int
    signature: int anvil_client_send(struct anvil_client *client, const char *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/anvil-client.c:358,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/anvil-client.c:360,1
    - Dst: aqueue_append
      Src: /src/dovecot/src/lib-master/anvil-client.c:365,1
    - Dst: anvil_client_send
      Src: /src/dovecot/src/lib-master/anvil-client.c:366,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-master/anvil-client.c:372,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-master/anvil-client.c:376,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - client
    - query
    - timeout_msecs
    - callback
    - context
    argTypes:
    - struct anvil_client*
    - char*
    - unsigned int
    - anvil_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 351
    functionDepth: 4
    functionLinenumber: 351
    functionLinenumberEnd: 380
    functionName: anvil_client_query
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 1
    functionsReached:
    - anvil_client_send
    - aqueue_append
    - timeout_add_short
    - timeout_add
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct anvil_query
    signature: "struct anvil_query *\nanvil_client_query(struct anvil_client *client,
      const char *query,\n\t\t   unsigned int timeout_msecs,\n\t\t   anvil_callback_t
      *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-master/anvil-client.c:391,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-master/anvil-client.c:392,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-master/anvil-client.c:394,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-master/anvil-client.c:399,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - client
    - _query
    argTypes:
    - struct anvil_client*
    - struct anvil_query**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 400
    functionName: anvil_client_query_abort
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 1
    functionsReached:
    - i_panic
    - aqueue_count
    - aqueue_idx
    - array_front
    linkageType: ''
    returnType: void
    signature: "void anvil_client_query_abort(struct anvil_client *client,\n\t\t\t
      \     struct anvil_query **_query)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/anvil-client.c:404,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/anvil-client.c:407,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib-master/anvil-client.c:410,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-master/anvil-client.c:410,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-master/anvil-client.c:414,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-master/anvil-client.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - client
    - reply
    argTypes:
    - struct anvil_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 419
    functionName: anvil_client_send_reply
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - strlen
    - i_stream_set_input_pending
    - o_stream_nsendv
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void anvil_client_send_reply(struct anvil_client *client, const char
      *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_send
      Src: /src/dovecot/src/lib-master/anvil-client.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - cmd
    argTypes:
    - struct anvil_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 4
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: anvil_client_cmd
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached:
    - anvil_client_send
    linkageType: ''
    returnType: void
    signature: void anvil_client_cmd(struct anvil_client *client, const char *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct anvil_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 429
    functionName: anvil_client_is_connected
    functionSourceFile: /src/dovecot/src/lib-master/anvil-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool anvil_client_is_connected(struct anvil_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: log_error_buffer_init
    functionSourceFile: /src/dovecot/src/lib-master/log-error-buffer.c
    functionUses: 1
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct log_error_buffer
    signature: struct log_error_buffer *log_error_buffer_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:39,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct log_error_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 49
    functionName: log_error_buffer_delete_head
    functionSourceFile: /src/dovecot/src/lib-master/log-error-buffer.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void log_error_buffer_delete_head(struct log_error_buffer *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:54,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:55,1
    - Dst: log_error_buffer_delete_head
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:59,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:62,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:62,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:63,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:66,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - buf
    - error
    argTypes:
    - struct log_error_buffer*
    - struct log_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 75
    functionName: log_error_buffer_add
    functionSourceFile: /src/dovecot/src/lib-master/log-error-buffer.c
    functionUses: 1
    functionsReached:
    - memcpy
    - i_malloc
    - strlen
    - MALLOC_ADD
    - log_error_buffer_delete_head
    linkageType: ''
    returnType: void
    signature: "void log_error_buffer_add(struct log_error_buffer *buf,\n\t\t\t  const
      struct log_error *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_error_buffer_delete_head
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:83,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - struct log_error_buffer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: log_error_buffer_deinit
    functionSourceFile: /src/dovecot/src/lib-master/log-error-buffer.c
    functionUses: 1
    functionsReached:
    - i_free
    - log_error_buffer_delete_head
    linkageType: ''
    returnType: void
    signature: void log_error_buffer_deinit(struct log_error_buffer **_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct log_error_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: log_error_buffer_iter_init
    functionSourceFile: /src/dovecot/src/lib-master/log-error-buffer.c
    functionUses: 1
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct log_error_buffer_iter
    signature: 'struct log_error_buffer_iter *

      log_error_buffer_iter_init(struct log_error_buffer *buf)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct log_error_buffer_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 113
    functionName: log_error_buffer_iter_next
    functionSourceFile: /src/dovecot/src/lib-master/log-error-buffer.c
    functionUses: 1
    functionsReached:
    - strlen
    linkageType: ''
    returnType: struct log_error
    signature: 'struct log_error *

      log_error_buffer_iter_next(struct log_error_buffer_iter *iter)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-master/log-error-buffer.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct log_error_buffer_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 122
    functionName: log_error_buffer_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-master/log-error-buffer.c
    functionUses: 1
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void log_error_buffer_iter_deinit(struct log_error_buffer_iter **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - service
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 201
    functionName: master_service_set_killed_callback
    functionSourceFile: /src/dovecot/src/lib-master/master-service.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: master_service_set_killed_callback(service, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - test_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 14
    functionName: TST_BEGIN
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TST_BEGIN(test_name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-master/test-event-stats.c:47,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-master/test-event-stats.c:48,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-master/test-event-stats.c:49,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-master/test-event-stats.c:52,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-master/test-event-stats.c:52,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-master/test-event-stats.c:61,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - reference
    - actual
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 66
    functionName: compare_test_stats_data_line
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - str_array_length
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool compare_test_stats_data_line(const char *reference, const char
      *actual)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-master/test-event-stats.c:70,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-master/test-event-stats.c:71,1
    - Dst: compare_test_stats_data_line
      Src: /src/dovecot/src/lib-master/test-event-stats.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - actual
    - reference
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 77
    functionName: compare_test_stats_data_lines
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - compare_test_stats_data_line
    linkageType: ''
    returnType: bool
    signature: bool compare_test_stats_data_lines(const char *actual, const char *reference)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/test-event-stats.c:83,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-master/test-event-stats.c:85,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib-master/test-event-stats.c:86,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:87,1
    - Dst: compare_test_stats_data_lines
      Src: /src/dovecot/src/lib-master/test-event-stats.c:89,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-master/test-event-stats.c:89,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-master/test-event-stats.c:89,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-master/test-event-stats.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 92
    functionName: compare_test_stats_to
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - compare_test_stats_data_lines
    - va_start
    - str_vprintfa
    - str_truncate
    - va_end
    linkageType: ''
    returnType: void
    signature: void compare_test_stats_to(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: test_fail_callback
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void test_fail_callback(const struct failure_context *ctx ATTR_UNUSED,\n\t\t\t
      \      const char *format ATTR_UNUSED,\n\t\t\t       va_list args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:109,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:110,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:111,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 114
    functionName: register_all_categories
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_add_category
    - event_unref
    - e_info
    linkageType: ''
    returnType: void
    signature: void register_all_categories(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:120,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:121,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:122,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-master/test-event-stats.c:123,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:124,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:125,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:128,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:129,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 116
    functionDepth: 4
    functionLinenumber: 116
    functionLinenumberEnd: 134
    functionName: test_no_merging1
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_str
    - event_add_category
    linkageType: ''
    returnType: void
    signature: void test_no_merging1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:141,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:142,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:143,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:146,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:147,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:148,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:149,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:151,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:153,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:154,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 136
    functionDepth: 4
    functionLinenumber: 136
    functionLinenumberEnd: 160
    functionName: test_no_merging2
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_category
    linkageType: ''
    returnType: void
    signature: void test_no_merging2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:167,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:168,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:171,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:174,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:175,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:176,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:177,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:179,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:180,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:181,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:182,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 162
    functionDepth: 4
    functionLinenumber: 162
    functionLinenumberEnd: 190
    functionName: test_no_merging3
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_category
    linkageType: ''
    returnType: void
    signature: void test_no_merging3(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:195,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:196,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:197,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:198,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-master/test-event-stats.c:199,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:200,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:201,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:202,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:203,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib-master/test-event-stats.c:204,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:206,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:207,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:208,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:210,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:211,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:212,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:213,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 220
    functionName: test_merge_events1
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_str
    - event_add_category
    - event_add_int
    - event_add_timeval
    linkageType: ''
    returnType: void
    signature: void test_merge_events1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:226,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:227,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:228,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:230,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:231,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:232,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-master/test-event-stats.c:233,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:234,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:235,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:236,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:237,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib-master/test-event-stats.c:238,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:240,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:241,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:242,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:245,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:246,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:247,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:248,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:249,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 222
    functionDepth: 4
    functionLinenumber: 222
    functionLinenumberEnd: 257
    functionName: test_merge_events2
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_str
    - event_add_category
    - event_add_int
    - event_add_timeval
    linkageType: ''
    returnType: void
    signature: void test_merge_events2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:263,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:264,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:267,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:269,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:271,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:273,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:274,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:275,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:276,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:278,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:279,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:280,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:282,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:283,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 290
    functionName: test_skip_parents
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_category
    linkageType: ''
    returnType: void
    signature: void test_skip_parents(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:296,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:297,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:300,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:302,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:304,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:306,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:307,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:308,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:309,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-master/test-event-stats.c:310,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:311,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:312,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:313,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib-master/test-event-stats.c:314,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-master/test-event-stats.c:316,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:317,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:318,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:320,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:321,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:322,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:323,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:324,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:325,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:326,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 292
    functionDepth: 4
    functionLinenumber: 292
    functionLinenumberEnd: 334
    functionName: test_merge_events_skip_parents
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_str
    - event_add_category
    - event_add_int
    - event_add_timeval
    linkageType: ''
    returnType: void
    signature: void test_merge_events_skip_parents(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:343,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:353,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - parent
    - cat
    - line_r
    - id_r
    argTypes:
    - struct event*
    - struct event_category*
    - int*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 359
    functionName: make_event
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_add_category
    linkageType: ''
    returnType: struct event
    signature: "struct event *make_event(struct event *parent,\n\t\t\t\tstruct event_category
      *cat,\n\t\t\t\tint *line_r, uint64_t *id_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:367,1
    - Dst: make_event
      Src: /src/dovecot/src/lib-master/test-event-stats.c:369,1
    - Dst: make_event
      Src: /src/dovecot/src/lib-master/test-event-stats.c:370,1
    - Dst: make_event
      Src: /src/dovecot/src/lib-master/test-event-stats.c:371,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:374,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:375,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:376,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:379,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:380,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:383,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:386,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:387,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:390,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:391,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:392,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:397,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:398,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 361
    functionDepth: 4
    functionLinenumber: 361
    functionLinenumberEnd: 428
    functionName: test_parent_update_post_send
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - e_info
    - event_unref
    - make_event
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void test_parent_update_post_send(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:432,1
    - Dst: make_event
      Src: /src/dovecot/src/lib-master/test-event-stats.c:437,1
    - Dst: make_event
      Src: /src/dovecot/src/lib-master/test-event-stats.c:441,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:444,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:445,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:448,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:449,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:451,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:452,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:453,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:456,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:457,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:459,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:460,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 430
    functionDepth: 4
    functionLinenumber: 430
    functionLinenumberEnd: 488
    functionName: test_large_event_id
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - e_info
    - event_unref
    - make_event
    - event_set_name
    - test_end
    - TST_BEGIN
    - test_assert
    - compare_test_stats_to
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void test_large_event_id(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TST_BEGIN
      Src: /src/dovecot/src/lib-master/test-event-stats.c:492,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:493,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-master/test-event-stats.c:494,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-master/test-event-stats.c:495,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:496,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-master/test-event-stats.c:497,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-master/test-event-stats.c:499,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-master/test-event-stats.c:502,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib-master/test-event-stats.c:503,1
    - Dst: event_get_create_time
      Src: /src/dovecot/src/lib-master/test-event-stats.c:506,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-master/test-event-stats.c:508,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-master/test-event-stats.c:509,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib-master/test-event-stats.c:512,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:513,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:514,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-master/test-event-stats.c:515,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-master/test-event-stats.c:517,1
    - Dst: compare_test_stats_to
      Src: /src/dovecot/src/lib-master/test-event-stats.c:518,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-master/test-event-stats.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 490
    functionDepth: 4
    functionLinenumber: 490
    functionLinenumberEnd: 530
    functionName: test_global_event
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_get_create_time
    - event_set_name
    - test_end
    - TST_BEGIN
    - event_push_global
    - event_pop_global
    - test_assert
    - compare_test_stats_to
    - event_add_str
    - event_add_category
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void test_global_event(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-master/test-event-stats.c:548,1
    - Dst: stats_client_init_unittest
      Src: /src/dovecot/src/lib-master/test-event-stats.c:550,1
    - Dst: register_all_categories
      Src: /src/dovecot/src/lib-master/test-event-stats.c:553,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-master/test-event-stats.c:554,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-master/test-event-stats.c:556,1
    - Dst: stats_client_deinit
      Src: /src/dovecot/src/lib-master/test-event-stats.c:557,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-master/test-event-stats.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 532
    functionDepth: 3
    functionLinenumber: 532
    functionLinenumberEnd: 560
    functionName: run_tests
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - register_all_categories
    - test_run
    - stats_client_deinit
    - str_truncate
    - stats_client_init_unittest
    - str_new
    - str_free
    linkageType: ''
    returnType: int
    signature: int run_tests(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_info_handler
      Src: /src/dovecot/src/lib-master/test-event-stats.c:565,1
    - Dst: lib_init
      Src: /src/dovecot/src/lib-master/test-event-stats.c:566,1
    - Dst: test_init_no_event
      Src: /src/dovecot/src/lib-master/test-event-stats.c:567,1
    - Dst: run_tests
      Src: /src/dovecot/src/lib-master/test-event-stats.c:568,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-master/test-event-stats.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 571
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-master/test-event-stats.c
    functionUses: 0
    functionsReached:
    - run_tests
    - lib_deinit
    - lib_init
    - test_init_no_event
    - i_set_info_handler
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib-master/master-service-settings.c:140,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib-master/master-service-settings.c:141,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:142,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-master/master-service-settings.c:143,1
    - Dst: handle_filter
      Src: /src/dovecot/src/lib-master/master-service-settings.c:147,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-master/master-service-settings.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - set_name
    - set_value
    - error_r
    argTypes:
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 151
    functionName: setting_filter_parse
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - event_filter_create
    - event_filter_parse
    - handle_filter
    - event_filter_unref
    linkageType: ''
    returnType: bool
    signature: "bool setting_filter_parse(const char *set_name, const char *set_value,\n\t\t
      \    void (*handle_filter)(struct event_filter *) ATTR_UNUSED,\n\t\t     const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_set_process_shutdown_filter
      Src: /src/dovecot/src/lib-master/master-service-settings.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct event_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: master_service_set_process_shutdown_filter_wrapper
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - master_service_set_process_shutdown_filter
    linkageType: ''
    returnType: void
    signature: void master_service_set_process_shutdown_filter_wrapper(struct event_filter
      *filter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib-master/master-service-settings.c:167,1
    - Dst: version_cmp
      Src: /src/dovecot/src/lib-master/master-service-settings.c:171,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:172,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib-master/master-service-settings.c:178,1
    - Dst: version_cmp
      Src: /src/dovecot/src/lib-master/master-service-settings.c:179,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - version
    - error_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 186
    functionName: storage_version_check
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - version_is_valid
    - version_cmp
    linkageType: ''
    returnType: bool
    signature: bool storage_version_check(const char *version, const char **error_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: syslog_facility_find
      Src: /src/dovecot/src/lib-master/master-service-settings.c:199,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:200,1
    - Dst: setting_filter_parse
      Src: /src/dovecot/src/lib-master/master-service-settings.c:205,1
    - Dst: setting_filter_parse
      Src: /src/dovecot/src/lib-master/master-service-settings.c:208,1
    - Dst: setting_filter_parse
      Src: /src/dovecot/src/lib-master/master-service-settings.c:211,1
    - Dst: settings_get_config_binary
      Src: /src/dovecot/src/lib-master/master-service-settings.c:218,1
    - Dst: storage_version_check
      Src: /src/dovecot/src/lib-master/master-service-settings.c:219,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 222
    functionName: master_service_settings_check
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - settings_get_config_binary
    - setting_filter_parse
    - syslog_facility_find
    - storage_version_check
    linkageType: ''
    returnType: bool
    signature: "bool master_service_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-master/master-service-settings.c:234,1
    - Dst: t_binary_abspath
      Src: /src/dovecot/src/lib-master/master-service-settings.c:238,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/master-service-settings.c:239,1
    - Dst: master_service_import_environment
      Src: /src/dovecot/src/lib-master/master-service-settings.c:244,1
    - Dst: master_service_import_environment
      Src: /src/dovecot/src/lib-master/master-service-settings.c:246,1
    - Dst: master_service_import_environment
      Src: /src/dovecot/src/lib-master/master-service-settings.c:248,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service-settings.c:252,1
    - Dst: env_put
      Src: /src/dovecot/src/lib-master/master-service-settings.c:253,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib-master/master-service-settings.c:256,1
    - Dst: env_put
      Src: /src/dovecot/src/lib-master/master-service-settings.c:259,1
    - Dst: env_put
      Src: /src/dovecot/src/lib-master/master-service-settings.c:262,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-master/master-service-settings.c:264,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service-settings.c:265,1
    - Dst: strarr_push
      Src: /src/dovecot/src/lib-master/master-service-settings.c:268,1
    - Dst: strarr_push
      Src: /src/dovecot/src/lib-master/master-service-settings.c:270,1
    - Dst: strarr_push
      Src: /src/dovecot/src/lib-master/master-service-settings.c:272,1
    - Dst: strarr_push
      Src: /src/dovecot/src/lib-master/master-service-settings.c:273,1
    - Dst: strarr_push
      Src: /src/dovecot/src/lib-master/master-service-settings.c:277,1
    - Dst: strarr_push
      Src: /src/dovecot/src/lib-master/master-service-settings.c:279,1
    - Dst: strarr_push
      Src: /src/dovecot/src/lib-master/master-service-settings.c:280,1
    - Dst: strarr_push
      Src: /src/dovecot/src/lib-master/master-service-settings.c:281,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-master/master-service-settings.c:282,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-master/master-service-settings.c:284,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-master/master-service-settings.c:286,1
    - Dst: execv_const
      Src: /src/dovecot/src/lib-master/master-service-settings.c:287,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - service
    - input
    argTypes:
    - struct master_service*
    - struct master_service_settings_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 288
    functionName: ATTR_NORETURN::master_service_exec_config
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - t_binary_abspath
    - env_put
    - master_service_import_environment
    - env_remove
    - i_fatal
    - strarr_push
    - getenv
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - array_append
    - execv_const
    linkageType: ''
    returnType: void
    signature: "void ATTR_NORETURN\nmaster_service_exec_config(struct master_service
      *service,\n\t\t\t   const struct master_service_settings_input *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - service
    - input
    - error
    argTypes:
    - struct master_service*
    - struct master_service_settings_input*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 299
    functionName: config_error_update_path_source
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void config_error_update_path_source(struct master_service *service,\n\t\t\t\tconst
      struct master_service_settings_input *input,\n\t\t\t\tconst char **error)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:311,1
    - Dst: master_service_get_config_path
      Src: /src/dovecot/src/lib-master/master-service-settings.c:317,1
    - Dst: stat
      Src: /src/dovecot/src/lib-master/master-service-settings.c:318,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:319,1
    - Dst: S_ISSOCK
      Src: /src/dovecot/src/lib-master/master-service-settings.c:320,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:321,1
    - Dst: S_ISFIFO
      Src: /src/dovecot/src/lib-master/master-service-settings.c:322,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:323,1
    - Dst: master_service_exec_config
      Src: /src/dovecot/src/lib-master/master-service-settings.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:328,1
    - Dst: config_error_update_path_source
      Src: /src/dovecot/src/lib-master/master-service-settings.c:331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - service
    - input
    - error
    argTypes:
    - struct master_service*
    - struct master_service_settings_input*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 333
    functionName: config_exec_fallback
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - S_ISSOCK
    - master_service_exec_config
    - t_strdup_printf
    - master_service_get_config_path
    - stat
    - S_ISFIFO
    - config_error_update_path_source
    linkageType: ''
    returnType: void
    signature: "void config_exec_fallback(struct master_service *service,\n\t\t     const
      struct master_service_settings_input *input,\n\t\t     const char **error)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_binary_config_cache_path
      Src: /src/dovecot/src/lib-master/master-service-settings.c:342,1
    - Dst: open
      Src: /src/dovecot/src/lib-master/master-service-settings.c:343,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-master/master-service-settings.c:345,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib-master/master-service-settings.c:347,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - cache_dir
    - input_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 349
    functionName: master_service_binary_config_cache_get
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - open
    - fd_close_on_exec
    - i_error
    - master_service_get_binary_config_cache_path
    linkageType: ''
    returnType: int
    signature: "int master_service_binary_config_cache_get(const char *cache_dir,\n\t\t\t\t\t\t
      \ const char *input_path)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_config_path
      Src: /src/dovecot/src/lib-master/master-service-settings.c:367,1
    - Dst: master_service_binary_config_cache_get
      Src: /src/dovecot/src/lib-master/master-service-settings.c:371,1
    - Dst: master_service_exec_config
      Src: /src/dovecot/src/lib-master/master-service-settings.c:377,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/lib-master/master-service-settings.c:387,1
    - Dst: stat
      Src: /src/dovecot/src/lib-master/master-service-settings.c:396,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-master/master-service-settings.c:398,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:399,1
    - Dst: config_error_update_path_source
      Src: /src/dovecot/src/lib-master/master-service-settings.c:400,1
    - Dst: S_ISSOCK
      Src: /src/dovecot/src/lib-master/master-service-settings.c:404,1
    - Dst: S_ISFIFO
      Src: /src/dovecot/src/lib-master/master-service-settings.c:404,1
    - Dst: net_connect_unix_with_retries
      Src: /src/dovecot/src/lib-master/master-service-settings.c:409,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:412,1
    - Dst: config_exec_fallback
      Src: /src/dovecot/src/lib-master/master-service-settings.c:414,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-master/master-service-settings.c:418,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/master-service-settings.c:419,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service-settings.c:420,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service-settings.c:422,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service-settings.c:423,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-master/master-service-settings.c:424,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-master/master-service-settings.c:425,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-master/master-service-settings.c:425,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-master/master-service-settings.c:425,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:427,1
    - Dst: fd_read
      Src: /src/dovecot/src/lib-master/master-service-settings.c:435,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:437,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:444,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-master/master-service-settings.c:445,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-master/master-service-settings.c:446,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:449,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-master/master-service-settings.c:451,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-master/master-service-settings.c:452,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-master/master-service-settings.c:455,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-master/master-service-settings.c:456,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-master/master-service-settings.c:459,1
    - Dst: config_exec_fallback
      Src: /src/dovecot/src/lib-master/master-service-settings.c:460,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 73
    argCount: 6
    argNames:
    - service
    - input
    - cache_dir
    - path_r
    - cached_config_r
    - error_r
    argTypes:
    - struct master_service*
    - struct master_service_settings_input*
    - char*
    - char**
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 464
    functionName: master_service_open_config
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - S_ISSOCK
    - str_len
    - t_strdup_printf
    - fd_read
    - stat
    - t_strcut
    - net_connect_unix
    - t_str_new
    - str_append_c
    - i_close_fd
    - alarm
    - S_ISFIFO
    - eacces_error_get
    - str_data
    - net_connect_unix_with_retries
    - write_full
    - master_service_exec_config
    - master_service_binary_config_cache_get
    - net_set_nonblock
    - i_assert
    - config_error_update_path_source
    - config_exec_fallback
    - master_service_get_config_path
    - str_append
    linkageType: ''
    returnType: int
    signature: "int master_service_open_config(struct master_service *service,\n\t\t\t
      \  const struct master_service_settings_input *input,\n\t\t\t   const char *cache_dir,\n\t\t\t
      \  const char **path_r, bool *cached_config_r,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-master/master-service-settings.c:472,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-master/master-service-settings.c:475,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-master/master-service-settings.c:478,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-master/master-service-settings.c:480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 483
    functionName: master_service_append_config_overrides
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - t_split_key_value_eq
    - settings_root_override
    linkageType: ''
    returnType: void
    signature: void master_service_append_config_overrides(struct master_service *service)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-master/master-service-settings.c:497,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:503,1
    - Dst: settings_has_mmap
      Src: /src/dovecot/src/lib-master/master-service-settings.c:504,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service-settings.c:507,1
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-master/master-service-settings.c:510,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-master/master-service-settings.c:511,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:512,1
    - Dst: master_service_open_config
      Src: /src/dovecot/src/lib-master/master-service-settings.c:517,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-master/master-service-settings.c:520,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-master/master-service-settings.c:524,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service-settings.c:528,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 5
    argNames:
    - service
    - input
    - cache_dir
    - output_r
    - error_r
    argTypes:
    - struct master_service*
    - struct master_service_settings_input*
    - char*
    - struct master_service_settings_output*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 485
    functionDepth: 4
    functionLinenumber: 485
    functionLinenumberEnd: 535
    functionName: master_service_settings_read_int
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - i_zero
    - T_END_PASS_STR_IF
    - settings_has_mmap
    - i_fatal
    - t_strdup_printf
    - getenv
    - master_service_open_config
    - str_to_int
    linkageType: ''
    returnType: int
    signature: "int master_service_settings_read_int(struct master_service *service,\n\t\t\t\t
      const struct master_service_settings_input *input,\n\t\t\t\t const char *cache_dir,\n\t\t\t\t
      struct master_service_settings_output *output_r,\n\t\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_settings_read_int
      Src: /src/dovecot/src/lib-master/master-service-settings.c:635,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-master/master-service-settings.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - service
    - input
    - output_r
    - error_r
    argTypes:
    - struct master_service*
    - struct master_service_settings_input*
    - struct master_service_settings_output*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 630
    functionDepth: 5
    functionLinenumber: 630
    functionLinenumberEnd: 638
    functionName: master_service_settings_read
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 2
    functionsReached:
    - getenv
    - master_service_settings_read_int
    linkageType: ''
    returnType: int
    signature: "int master_service_settings_read(struct master_service *service,\n\t\t\t\t
      const struct master_service_settings_input *input,\n\t\t\t\t struct master_service_settings_output
      *output_r,\n\t\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-master/master-service-settings.c:646,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/lib-master/master-service-settings.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - service
    - error_r
    argTypes:
    - struct master_service*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 640
    functionDepth: 6
    functionLinenumber: 640
    functionLinenumberEnd: 648
    functionName: master_service_settings_read_simple
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 7
    functionsReached:
    - i_zero
    - master_service_settings_read
    linkageType: ''
    returnType: int
    signature: "int master_service_settings_read_simple(struct master_service *service,\n\t\t\t\t\tconst
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 654
    functionName: master_service_get_service_settings
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: struct master_service_settings
    signature: 'struct master_service_settings *

      master_service_get_service_settings(struct master_service *service)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-master/master-service-settings.c:659,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-master/master-service-settings.c:660,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/master-service-settings.c:661,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-master/master-service-settings.c:663,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-master/master-service-settings.c:664,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-service-settings.c:665,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service-settings.c:666,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-master/master-service-settings.c:667,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-master/master-service-settings.c:670,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-master/master-service-settings.c:672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct master_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 673
    functionName: master_service_get_import_environment_keyvals
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - array_idx
    - array_count
    - str_append_tabescaped
    - ARRAY_TYPE
    linkageType: ''
    returnType: char
    signature: 'char *

      master_service_get_import_environment_keyvals(struct master_service *service)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha256_init
      Src: /src/dovecot/src/lib-master/master-service-settings.c:680,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib-master/master-service-settings.c:681,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-master/master-service-settings.c:681,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib-master/master-service-settings.c:682,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib-master/master-service-settings.c:683,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-master/master-service-settings.c:684,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib-master/master-service-settings.c:685,1
    - Dst: restrict_get_groups_list
      Src: /src/dovecot/src/lib-master/master-service-settings.c:687,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib-master/master-service-settings.c:688,1
    - Dst: sha256_result
      Src: /src/dovecot/src/lib-master/master-service-settings.c:690,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-master/master-service-settings.c:692,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service-settings.c:693,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-master/master-service-settings.c:694,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-master/master-service-settings.c:695,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-master/master-service-settings.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - cache_dir
    - main_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 697
    functionName: master_service_get_binary_config_cache_path
    functionSourceFile: /src/dovecot/src/lib-master/master-service-settings.c
    functionUses: 1
    functionsReached:
    - sha256_loop
    - restrict_get_groups_list
    - t_str_new
    - geteuid
    - str_c
    - sha256_result
    - strlen
    - getegid
    - sha256_init
    - str_append
    - binary_to_hex_append
    linkageType: ''
    returnType: char
    signature: "char *\nmaster_service_get_binary_config_cache_path(const char *cache_dir,\n\t\t\t\t\t
      \   const char *main_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SETTING_DEFINE_STRUCT_BOOL
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:78,1
    - Dst: SETTING_DEFINE_STRUCT_BOOL
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:79,1
    - Dst: SETTING_DEFINE_STRUCT_UINTMAX
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:80,1
    - Dst: SETTING_DEFINE_STRUCT_UINT
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:81,1
    - Dst: SETTING_DEFINE_STRUCT_TIME
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:84,1
    - Dst: SETTING_DEFINE_STRUCT_TIME_MSECS
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:85,1
    - Dst: SETTING_DEFINE_STRUCT_SIZE
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:86,1
    - Dst: SETTING_DEFINE_STRUCT_IN_PORT
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:87,1
    - Dst: SETTING_DEFINE_STRUCT_STR_NOVARS
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:88,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:103,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:105,1
    - Dst: settings_parser_init
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:107,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:109,1
    - Dst: settings_parse_keyvalue
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:110,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:112,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:115,1
    - Dst: settings_parser_get_error
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:117,1
    - Dst: settings_parser_check
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:117,1
    - Dst: settings_parser_get_set
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:131,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:132,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:133,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:135,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:135,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:136,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:136,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:140,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:141,1
    - Dst: settings_parse_keyvalue
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:141,1
    - Dst: settings_parser_unref
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:146,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:147,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 149
    functionName: test_settings_parser
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings-parser.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - SETTING_DEFINE_STRUCT_UINTMAX
    - pool_unref
    - settings_parser_check
    - array_count
    - test_assert
    - SETTING_DEFINE_STRUCT_BOOL
    - SETTING_DEFINE_STRUCT_UINT
    - test_end
    - settings_parser_init
    - settings_parser_get_error
    - SETTING_DEFINE_STRUCT_TIME
    - settings_parse_keyvalue
    - settings_parser_get_set
    - test_assert_strcmp
    - SETTING_DEFINE_STRUCT_IN_PORT
    - settings_parser_unref
    - N_ELEMENTS
    - pool_alloconly_create
    - i_error
    - SETTING_DEFINE_STRUCT_STR_NOVARS
    - SETTING_DEFINE_STRUCT_TIME_MSECS
    - t_array_const_string_join
    - SETTING_DEFINE_STRUCT_SIZE
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_settings_parser(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:181,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:184,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:185,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:186,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:187,1
    - Dst: settings_parse_boollist_string
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:187,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:188,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:189,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:189,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:189,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:191,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 198
    functionName: test_settings_parse_boollist_string
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings-parser.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - array_foreach_elem
    - str_array_length
    - pool_datastack_create
    - array_count
    - t_array_init
    - test_assert_strcmp_idx
    - ARRAY_TYPE
    - settings_parse_boollist_string
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_settings_parse_boollist_string(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:221,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:222,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:223,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:224,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:225,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:226,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:229,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:229,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:230,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:230,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:231,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:231,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 233
    functionName: test_settings_section_escape
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings-parser.c
    functionUses: 0
    functionsReached:
    - settings_section_unescape
    - test_assert_strcmp
    - test_end
    - settings_section_escape
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_settings_section_escape(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEF
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:251,1
    - Dst: DEF
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:252,1
    - Dst: DEF
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:253,1
    - Dst: DEF
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:254,1
    - Dst: DEF
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:255,1
    - Dst: DEF
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:256,1
    - Dst: DEF
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:257,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:270,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:272,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:276,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:276,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:278,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:278,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:280,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:280,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:282,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:287,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:287,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:288,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:289,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:291,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:291,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:293,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:293,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:298,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:298,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:299,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:300,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:300,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:302,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:302,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:303,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:304,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:304,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:309,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:309,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:310,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:311,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:311,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:313,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:313,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:314,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:315,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:315,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:320,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:320,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:321,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:322,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:322,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:324,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:324,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:326,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:326,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:331,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:331,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:332,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:333,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:333,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:335,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:335,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:336,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:337,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:337,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:339,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:339,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:340,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:341,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:341,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:346,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:346,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:347,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:348,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:350,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:350,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:351,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:352,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:352,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:356,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:357,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:358,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:359,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:360,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:361,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:362,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:363,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:364,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:364,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:365,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:366,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:366,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:367,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:368,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:369,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:369,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:370,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:371,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:371,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:376,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:376,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:377,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:378,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:379,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:379,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:380,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:381,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:381,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:385,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:385,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:386,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:387,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:387,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:388,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:388,1
    - Dst: settings_hash
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:389,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:390,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:390,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 87
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 393
    functionName: test_settings_hash_equals
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings-parser.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - settings_equal
    - DEF
    - test_end
    - t_array_init
    - test_assert
    - settings_hash
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_settings_hash_equals(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 250
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings-parser.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-settings/test-settings-parser.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 405
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings-parser.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - event
    - ','
    - info
    - ','
    - flags
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 149
    functionName: settings_get
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: settings_get(event, info, flags, set_r, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - event
    - ','
    - info
    - ','
    - flags
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: settings_get
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: settings_get(event, info, flags, set_r, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - event
    - ','
    - info
    - ','
    - params
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 168
    functionName: settings_get_params
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: settings_get_params(event, info, params, set_r, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - event
    - ','
    - info
    - ','
    - params
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: settings_get_params
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: settings_get_params(event, info, params, set_r, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - event
    - ','
    - filter_key
    - ','
    - filter_value
    - ','
    - info
    - ','
    - flags
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 198
    functionName: settings_get_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "settings_get_filter(event, filter_key, filter_value, info, flags,
      \\\n\t\tset_r, error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - event
    - ','
    - filter_key
    - ','
    - filter_value
    - ','
    - info
    - ','
    - flags
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: settings_get_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "settings_get_filter(event, filter_key, filter_value, info, flags,
      \\\n\t\tset_r, error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - event
    - ','
    - filter_key
    - ','
    - filter_value
    - ','
    - info
    - ','
    - flags
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 221
    functionName: settings_try_get_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "settings_try_get_filter(event, filter_key, filter_value, info, \\\n\t\tflags,
      set_r, error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - event
    - ','
    - filter_key
    - ','
    - filter_value
    - ','
    - info
    - ','
    - flags
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 226
    functionName: settings_try_get_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "settings_try_get_filter(event, filter_key, filter_value, info, flags,
      \\\n\t\tset_r, error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - event
    - ','
    - filter_key
    - ','
    - filter_value
    - ','
    - info
    - ','
    - flags
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: settings_get_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "settings_get_filter(event, filter_key, filter_value, info, \\\n\t\tflags,
      set_r, error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - event
    - ','
    - filter_key
    - ','
    - filter_value
    - ','
    - info
    - ','
    - flags
    - ','
    - set_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 240
    functionName: settings_get_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "settings_get_filter(event, filter_key, filter_value, info, flags,
      \\\n\t\tset_r, error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - event
    - ','
    - info
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 251
    functionName: settings_get_or_fatal
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: settings_get_or_fatal(event, info)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - set
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 259
    functionName: settings_free
    functionSourceFile: /src/dovecot/src/lib-settings/settings.h
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: settings_free(set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - _enum_type
    - ','
    - _flags
    - ','
    - _c_type
    - ','
    - _key
    - ','
    - _name
    - ','
    - _struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: SETTING_DEFINE_STRUCT_TYPE
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_TYPE(_enum_type, _flags, _c_type, _key, _name,
      _struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: SETTING_DEFINE_STRUCT_BOOL
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_BOOL(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: SETTING_DEFINE_STRUCT_UINTMAX
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_UINTMAX(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: SETTING_DEFINE_STRUCT_UINT
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_UINT(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: SETTING_DEFINE_STRUCT_UINT_OCT
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_UINT_OCT(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: SETTING_DEFINE_STRUCT_TIME
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_TIME(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 102
    functionName: SETTING_DEFINE_STRUCT_TIME_MSECS
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_TIME_MSECS(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: SETTING_DEFINE_STRUCT_SIZE
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_SIZE(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: SETTING_DEFINE_STRUCT_IN_PORT
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_IN_PORT(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: SETTING_DEFINE_STRUCT_STR
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_STR(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: SETTING_DEFINE_STRUCT_STR_NOVARS
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_STR_NOVARS(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 112
    functionName: SETTING_DEFINE_STRUCT_ENUM
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_ENUM(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: SETTING_DEFINE_STRUCT_FILE
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_FILE(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: SETTING_DEFINE_STRUCT_BOOLLIST
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_BOOLLIST(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: SETTING_DEFINE_STRUCT_STRLIST
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_STRLIST(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: SETTING_DEFINE_STRUCT_BOOL_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_BOOL_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: SETTING_DEFINE_STRUCT_UINTMAX_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_UINTMAX_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: SETTING_DEFINE_STRUCT_UINT_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_UINT_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: SETTING_DEFINE_STRUCT_UINT_OCT_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_UINT_OCT_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: SETTING_DEFINE_STRUCT_TIME_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_TIME_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: SETTING_DEFINE_STRUCT_TIME_MSECS_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_TIME_MSECS_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: SETTING_DEFINE_STRUCT_SIZE_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_SIZE_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 135
    functionName: SETTING_DEFINE_STRUCT_IN_PORT_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_IN_PORT_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 137
    functionName: SETTING_DEFINE_STRUCT_STR_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_STR_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: SETTING_DEFINE_STRUCT_STR_NOVARS_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_STR_NOVARS_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: SETTING_DEFINE_STRUCT_ENUM_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_ENUM_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: SETTING_DEFINE_STRUCT_FILE_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_FILE_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 145
    functionName: SETTING_DEFINE_STRUCT_BOOLLIST_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_BOOLLIST_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: SETTING_DEFINE_STRUCT_STRLIST_HIDDEN
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_STRLIST_HIDDEN(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: SETTING_DEFINE_STRUCT_STR_NFC
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_STR_NFC(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - key
    - ','
    - name
    - ','
    - struct_name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 152
    functionName: SETTING_DEFINE_STRUCT_STR_NFC_NOVARS
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETTING_DEFINE_STRUCT_STR_NFC_NOVARS(key, name, struct_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings-parser.h:338,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings-parser.h:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 340
    functionName: settings_value_is_unlimited
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.h
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool settings_value_is_unlimited(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-settings/test-settings.c:121,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/test-settings.c:121,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-settings/test-settings.c:123,1
    - Dst: settings_root_init
      Src: /src/dovecot/src/lib-settings/test-settings.c:125,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-settings/test-settings.c:128,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-settings/test-settings.c:129,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-settings/test-settings.c:132,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/test-settings.c:133,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-settings/test-settings.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings.c:140,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-settings/test-settings.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings.c:144,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/test-settings.c:144,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings.c:145,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/test-settings.c:147,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-settings/test-settings.c:149,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-settings/test-settings.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings.c:156,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings.c:157,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings.c:159,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-settings/test-settings.c:161,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-settings/test-settings.c:165,1
    - Dst: settings_root_deinit
      Src: /src/dovecot/src/lib-settings/test-settings.c:166,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/test-settings.c:167,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-settings/test-settings.c:168,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-settings/test-settings.c:170,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 3
    argNames:
    - scenario_name
    - order
    - result
    argTypes:
    - char*
    - struct setting_filter_array_order*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 171
    functionName: test_settings_get_scenario
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings.c
    functionUses: 0
    functionsReached:
    - event_unref
    - t_strdup_printf
    - pool_unref
    - settings_root_init
    - t_split_key_value_eq
    - settings_root_override
    - test_assert
    - test_end
    - event_set_ptr
    - event_create
    - settings_root_deinit
    - array_get
    - test_assert_strcmp
    - pool_alloconly_create
    - i_error
    - settings_free
    - settings_get_filter
    - array_is_created
    - settings_get
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_settings_get_scenario(\n\tconst char *scenario_name,\n\tconst
      struct setting_filter_array_order *order, const char *result[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_settings_get_scenario
      Src: /src/dovecot/src/lib-settings/test-settings.c:240,1
    - Dst: test_settings_get_scenario
      Src: /src/dovecot/src/lib-settings/test-settings.c:241,1
    - Dst: test_settings_get_scenario
      Src: /src/dovecot/src/lib-settings/test-settings.c:243,1
    - Dst: test_settings_get_scenario
      Src: /src/dovecot/src/lib-settings/test-settings.c:245,1
    - Dst: test_settings_get_scenario
      Src: /src/dovecot/src/lib-settings/test-settings.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 251
    functionName: test_settings_get
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings.c
    functionUses: 0
    functionsReached:
    - test_settings_get_scenario
    linkageType: ''
    returnType: void
    signature: void test_settings_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - field_name ATTR_UNUSED
    - value_r
    - context
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 261
    functionName: test_var_expand_hierarchy_key1
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    linkageType: ''
    returnType: int
    signature: "int test_var_expand_hierarchy_key1(const char *field_name ATTR_UNUSED,\n\t\t\t
      \      const char **value_r, void *context,\n\t\t\t       const char **error_r
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - value_r
    - context
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 271
    functionName: test_var_expand_hierarchy_key2
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    linkageType: ''
    returnType: int
    signature: "int test_var_expand_hierarchy_key2(const char *key ATTR_UNUSED,\n\t\t\t
      \      const char **value_r, void *context,\n\t\t\t       const char **error_r
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-settings/test-settings.c:275,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-settings/test-settings.c:297,1
    - Dst: settings_root_init
      Src: /src/dovecot/src/lib-settings/test-settings.c:309,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-settings/test-settings.c:310,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-settings/test-settings.c:313,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/test-settings.c:314,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/test-settings.c:315,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-settings/test-settings.c:317,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/test-settings.c:318,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings.c:322,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-settings/test-settings.c:322,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings.c:324,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-settings/test-settings.c:325,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-settings/test-settings.c:327,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/test-settings.c:328,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-settings/test-settings.c:330,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-settings/test-settings.c:330,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-settings/test-settings.c:332,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-settings/test-settings.c:333,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-settings/test-settings.c:336,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-settings/test-settings.c:337,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-settings/test-settings.c:338,1
    - Dst: settings_root_deinit
      Src: /src/dovecot/src/lib-settings/test-settings.c:339,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-settings/test-settings.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 341
    functionName: test_var_expand_hierarchy
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings.c
    functionUses: 0
    functionsReached:
    - i_zero
    - event_create
    - event_unref
    - settings_root_deinit
    - test_assert_strcmp
    - settings_free
    - test_end
    - settings_root_init
    - event_set_ptr
    - settings_root_override
    - test_assert
    - settings_get
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_var_expand_hierarchy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-settings/test-settings.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 351
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-settings/test-settings.c
    functionUses: 0
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: version_cmp
      Src: /src/dovecot/src/lib-settings/settings-history.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - struct setting_history_default*
    - struct setting_history_default*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 17
    functionName: settings_history_default_cmp
    functionSourceFile: /src/dovecot/src/lib-settings/settings-history.c
    functionUses: 0
    functionsReached:
    - version_cmp
    linkageType: ''
    returnType: int
    signature: "int settings_history_default_cmp(const struct setting_history_default
      *d1,\n\t\t\t     const struct setting_history_default *d2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: version_cmp
      Src: /src/dovecot/src/lib-settings/settings-history.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct setting_history_rename*
    - struct setting_history_rename*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: settings_history_rename_cmp
    functionSourceFile: /src/dovecot/src/lib-settings/settings-history.c
    functionUses: 0
    functionsReached:
    - version_cmp
    linkageType: ''
    returnType: int
    signature: "int settings_history_rename_cmp(const struct setting_history_rename
      *r1,\n\t\t\t    const struct setting_history_rename *r2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-settings/settings-history.c:28,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-settings/settings-history.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: settings_history_free
    functionSourceFile: /src/dovecot/src/lib-settings/settings-history.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void settings_history_free(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings-history.c:34,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-settings/settings-history.c:37,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-settings/settings-history.c:38,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-settings/settings-history.c:39,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-settings/settings-history.c:41,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-settings/settings-history.c:42,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-settings/settings-history.c:43,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-settings/settings-history.c:44,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-settings/settings-history.c:46,1
    - Dst: lib_atexit
      Src: /src/dovecot/src/lib-settings/settings-history.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 50
    functionName: settings_history_get_unsorted
    functionSourceFile: /src/dovecot/src/lib-settings/settings-history.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - lib_atexit
    - array_is_created
    - N_ELEMENTS
    - array_append
    linkageType: ''
    returnType: struct settings_history
    signature: struct settings_history *settings_history_get_unsorted(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_history_get_unsorted
      Src: /src/dovecot/src/lib-settings/settings-history.c:54,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-settings/settings-history.c:56,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-settings/settings-history.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 63
    functionName: settings_history_get
    functionSourceFile: /src/dovecot/src/lib-settings/settings-history.c
    functionUses: 0
    functionsReached:
    - settings_history_get_unsorted
    - array_sort
    linkageType: ''
    returnType: struct settings_history
    signature: struct settings_history *settings_history_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_history_get_unsorted
      Src: /src/dovecot/src/lib-settings/settings-history.c:68,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-settings/settings-history.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - defaults
    - count
    argTypes:
    - struct setting_history_default*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: settings_history_register_defaults
    functionSourceFile: /src/dovecot/src/lib-settings/settings-history.c
    functionUses: 0
    functionsReached:
    - settings_history_get_unsorted
    - array_append
    linkageType: ''
    returnType: void
    signature: "void settings_history_register_defaults(\n\tconst struct setting_history_default
      *defaults, unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_history_get_unsorted
      Src: /src/dovecot/src/lib-settings/settings-history.c:77,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-settings/settings-history.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - renames
    - count
    argTypes:
    - struct setting_history_rename*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 81
    functionName: settings_history_register_renames
    functionSourceFile: /src/dovecot/src/lib-settings/settings-history.c
    functionUses: 0
    functionsReached:
    - settings_history_get_unsorted
    - array_append
    linkageType: ''
    returnType: void
    signature: "void settings_history_register_renames(\n\tconst struct setting_history_rename
      *renames, unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_match_wildcard
      Src: /src/dovecot/src/lib-settings/settings.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - wanted_value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 199
    functionName: settings_local_name_cmp
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - dns_match_wildcard
    linkageType: ''
    returnType: void
    signature: void settings_local_name_cmp(const char *value, const char *wanted_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-settings/settings.c:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - override
    argTypes:
    - struct settings_override*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: settings_override_free
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: void settings_override_free(struct settings_override *override)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:215,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:221,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - mmap
    - offset
    - end_offset
    - name
    - num_r
    - error_r
    argTypes:
    - struct settings_mmap*
    - size_t*
    - size_t
    - char*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 225
    functionName: settings_block_read_uint64
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_strdup_printf
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int settings_block_read_uint64(struct settings_mmap *mmap,\n\t\t\t
      \  size_t *offset, size_t end_offset,\n\t\t\t   const char *name, uint64_t *num_r,\n\t\t\t
      \  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:234,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:240,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - mmap
    - offset
    - end_offset
    - name
    - num_r
    - error_r
    argTypes:
    - struct settings_mmap*
    - size_t*
    - size_t
    - char*
    - uint32_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 244
    functionName: settings_block_read_uint32
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_strdup_printf
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int settings_block_read_uint32(struct settings_mmap *mmap,\n\t\t\t
      \  size_t *offset, size_t end_offset,\n\t\t\t   const char *name, uint32_t *num_r,\n\t\t\t
      \  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:253,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:259,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:259,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - mmap
    - offset
    - end_offset
    - name
    - size_r
    - error_r
    argTypes:
    - struct settings_mmap*
    - size_t*
    - size_t
    - char*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 271
    functionName: settings_block_read_size
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_strdup_printf
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int settings_block_read_size(struct settings_mmap *mmap,\n\t\t\t size_t
      *offset, size_t end_offset,\n\t\t\t const char *name, uint64_t *size_r,\n\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:279,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - mmap
    - offset
    - end_offset
    - name
    - str_r
    - error_r
    argTypes:
    - struct settings_mmap*
    - size_t*
    - size_t
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 287
    functionName: settings_block_read_str
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int settings_block_read_str(struct settings_mmap *mmap,\n\t\t\tsize_t
      *offset, size_t end_offset, const char *name,\n\t\t\tconst char **str_r, const
      char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:299,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-settings/settings.c:301,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:302,1
    - Dst: settings_filter_node_match_service
      Src: /src/dovecot/src/lib-settings/settings.c:307,1
    - Dst: settings_filter_node_match_service
      Src: /src/dovecot/src/lib-settings/settings.c:309,1
    - Dst: settings_filter_node_match_service
      Src: /src/dovecot/src/lib-settings/settings.c:314,1
    - Dst: settings_filter_node_match_service
      Src: /src/dovecot/src/lib-settings/settings.c:316,1
    - Dst: settings_filter_node_match_service
      Src: /src/dovecot/src/lib-settings/settings.c:321,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 21
    argCount: 3
    argNames:
    - node
    - service_name
    - op_not
    argTypes:
    - struct event_filter_node*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 327
    functionName: settings_filter_node_match_service
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 1
    functionsReached:
    - strcmp
    - str_begins
    - settings_filter_node_match_service
    linkageType: ''
    returnType: bool
    signature: "bool settings_filter_node_match_service(struct event_filter_node *node,\n\t\t\t\t
      \  const char *service_name, bool op_not)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_get_root_node
      Src: /src/dovecot/src/lib-settings/settings.c:333,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:334,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:335,1
    - Dst: event_filter_get_root_node
      Src: /src/dovecot/src/lib-settings/settings.c:335,1
    - Dst: settings_filter_node_match_service
      Src: /src/dovecot/src/lib-settings/settings.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - filter
    - service_name
    argTypes:
    - struct event_filter*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 337
    functionName: settings_filter_match_service
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_assert
    - event_filter_get_root_node
    - settings_filter_node_match_service
    linkageType: ''
    returnType: bool
    signature: "bool settings_filter_match_service(struct event_filter *filter,\n\t\t\t
      \     const char *service_name)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:348,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:350,1
    - Dst: settings_event_filter_node_name_find
      Src: /src/dovecot/src/lib-settings/settings.c:355,1
    - Dst: settings_event_filter_node_name_find
      Src: /src/dovecot/src/lib-settings/settings.c:358,1
    - Dst: settings_event_filter_node_name_find
      Src: /src/dovecot/src/lib-settings/settings.c:363,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 3
    argNames:
    - node
    - filter_name
    - op_not
    argTypes:
    - struct event_filter_node*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 369
    functionName: settings_event_filter_node_name_find
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 1
    functionsReached:
    - strcmp
    - settings_event_filter_node_name_find
    linkageType: ''
    returnType: bool
    signature: "bool settings_event_filter_node_name_find(struct event_filter_node
      *node,\n\t\t\t\t     const char *filter_name, bool op_not)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_get_root_node
      Src: /src/dovecot/src/lib-settings/settings.c:377,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:378,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:379,1
    - Dst: event_filter_get_root_node
      Src: /src/dovecot/src/lib-settings/settings.c:379,1
    - Dst: settings_event_filter_node_name_find
      Src: /src/dovecot/src/lib-settings/settings.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - filter
    - filter_name
    argTypes:
    - struct event_filter*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 381
    functionName: settings_event_filter_name_find
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - settings_event_filter_node_name_find
    - i_assert
    - event_filter_get_root_node
    linkageType: ''
    returnType: bool
    signature: "bool settings_event_filter_name_find(struct event_filter *filter,\n\t\t\t\tconst
      char *filter_name)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:389,1
    - Dst: settings_block_read_str
      Src: /src/dovecot/src/lib-settings/settings.c:396,1
    - Dst: settings_block_read_uint64
      Src: /src/dovecot/src/lib-settings/settings.c:401,1
    - Dst: settings_block_read_uint64
      Src: /src/dovecot/src/lib-settings/settings.c:405,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:410,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:414,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:419,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:423,1
    - Dst: stat
      Src: /src/dovecot/src/lib-settings/settings.c:432,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-settings/settings.c:433,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:435,1
    - Dst: ST_MTIME_NSEC
      Src: /src/dovecot/src/lib-settings/settings.c:440,1
    - Dst: ST_CTIME_NSEC
      Src: /src/dovecot/src/lib-settings/settings.c:441,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 30
    argCount: 4
    argNames:
    - mmap
    - flags
    - offset
    - error_r
    argTypes:
    - struct settings_mmap*
    - enum settings_read_flags
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 445
    functionName: settings_read_config_paths
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - settings_block_read_str
    - ST_MTIME_NSEC
    - settings_block_read_uint32
    - stat
    - ENOACCESS
    - settings_block_read_uint64
    - ST_CTIME_NSEC
    linkageType: ''
    returnType: int
    signature: "int settings_read_config_paths(struct settings_mmap *mmap,\n\t\t\t
      \  enum settings_read_flags flags,\n\t\t\t   size_t *offset, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:452,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:456,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:462,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:467,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:472,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:476,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:482,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - mmap
    - offset
    - error_r
    argTypes:
    - struct settings_mmap*
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 447
    functionDepth: 2
    functionLinenumber: 447
    functionLinenumberEnd: 486
    functionName: settings_read_all_keys
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - settings_block_read_uint32
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int settings_read_all_keys(struct settings_mmap *mmap,\n\t\t       size_t
      *offset, const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:495,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings.c:502,1
    - Dst: settings_block_read_str
      Src: /src/dovecot/src/lib-settings/settings.c:508,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:512,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib-settings/settings.c:523,1
    - Dst: event_filter_parse_case_sensitive
      Src: /src/dovecot/src/lib-settings/settings.c:524,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:526,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-settings/settings.c:529,1
    - Dst: event_filter_find_field_exact
      Src: /src/dovecot/src/lib-settings/settings.c:534,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-settings/settings.c:537,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-settings/settings.c:538,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:539,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:540,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:544,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-settings/settings.c:548,1
    - Dst: settings_filter_match_service
      Src: /src/dovecot/src/lib-settings/settings.c:553,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-settings/settings.c:556,1
    - Dst: event_filter_has_field_prefix
      Src: /src/dovecot/src/lib-settings/settings.c:560,1
    - Dst: event_filter_create_with_pool
      Src: /src/dovecot/src/lib-settings/settings.c:564,1
    - Dst: event_filter_register_cmp
      Src: /src/dovecot/src/lib-settings/settings.c:565,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-settings/settings.c:567,1
    - Dst: event_filter_merge
      Src: /src/dovecot/src/lib-settings/settings.c:568,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-settings/settings.c:570,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 44
    argCount: 6
    argNames:
    - mmap
    - service_name
    - flags
    - offset
    - protocols
    - error_r
    argTypes:
    - struct settings_mmap*
    - char*
    - enum settings_read_flags
    - size_t*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 488
    functionDepth: 3
    functionLinenumber: 488
    functionLinenumberEnd: 573
    functionName: settings_read_filters
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - event_filter_has_field_prefix
    - array_lsearch
    - settings_filter_match_service
    - t_strdup_printf
    - t_strdup
    - p_new
    - settings_block_read_str
    - event_filter_parse_case_sensitive
    - event_filter_create_with_pool
    - event_filter_unref
    - pool_ref
    - event_filter_find_field_exact
    - settings_block_read_uint32
    - event_filter_merge
    - strcmp
    - array_push_back
    - event_filter_register_cmp
    - event_filter_create
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int settings_read_filters(struct settings_mmap *mmap, const char *service_name,\n\t\t
      \     enum settings_read_flags flags, size_t *offset,\n\t\t      ARRAY_TYPE(const_string)
      *protocols, const char **error_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: settings_block_read_size
      Src: /src/dovecot/src/lib-settings/settings.c:585,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:595,1
    - Dst: settings_block_read_str
      Src: /src/dovecot/src/lib-settings/settings.c:603,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-settings/settings.c:608,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:610,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings.c:615,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-settings/settings.c:618,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:621,1
    - Dst: settings_block_read_str
      Src: /src/dovecot/src/lib-settings/settings.c:628,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:634,1
    - Dst: settings_block_read_size
      Src: /src/dovecot/src/lib-settings/settings.c:644,1
    - Dst: settings_block_read_str
      Src: /src/dovecot/src/lib-settings/settings.c:652,1
    - Dst: settings_block_read_uint32
      Src: /src/dovecot/src/lib-settings/settings.c:659,1
    - Dst: settings_block_read_str
      Src: /src/dovecot/src/lib-settings/settings.c:668,1
    - Dst: settings_block_read_str
      Src: /src/dovecot/src/lib-settings/settings.c:676,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:689,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:691,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:696,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 3
    argNames:
    - mmap
    - _offset
    - error_r
    argTypes:
    - struct settings_mmap*
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 575
    functionDepth: 2
    functionLinenumber: 575
    functionLinenumberEnd: 703
    functionName: settings_block_read
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - p_new
    - t_strdup_printf
    - settings_block_read_str
    - settings_block_read_uint32
    - hash_table_insert
    - settings_block_read_size
    - hash_table_lookup
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int settings_block_read(struct settings_mmap *mmap, size_t *_offset,\n\t\t
      \   const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-settings/settings.c:719,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:721,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:724,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-settings/settings.c:725,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-settings/settings.c:727,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:734,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-settings/settings.c:736,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:743,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:747,1
    - Dst: settings_read_config_paths
      Src: /src/dovecot/src/lib-settings/settings.c:756,1
    - Dst: settings_read_all_keys
      Src: /src/dovecot/src/lib-settings/settings.c:758,1
    - Dst: settings_read_filters
      Src: /src/dovecot/src/lib-settings/settings.c:760,1
    - Dst: settings_block_read
      Src: /src/dovecot/src/lib-settings/settings.c:765,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/settings.c:769,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-settings/settings.c:770,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-settings/settings.c:771,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 5
    argNames:
    - mmap
    - service_name
    - flags
    - specific_protocols_r
    - error_r
    argTypes:
    - struct settings_mmap*
    - char*
    - enum settings_read_flags
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 705
    functionDepth: 4
    functionLinenumber: 705
    functionLinenumberEnd: 778
    functionName: settings_mmap_parse
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - memcpy
    - settings_block_read
    - strlen
    - memchr
    - t_strdup_printf
    - array_front
    - array_count
    - settings_read_filters
    - t_array_init
    - t_strdup_until
    - ARRAY_TYPE
    - memcmp
    - settings_read_config_paths
    - array_append_zero
    - settings_read_all_keys
    linkageType: ''
    returnType: int
    signature: "int settings_mmap_parse(struct settings_mmap *mmap, const char *service_name,\n\t\t
      \   enum settings_read_flags flags,\n\t\t    const char *const **specific_protocols_r,\n\t\t
      \   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings.c:789,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:790,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-settings/settings.c:793,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-settings/settings.c:794,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:795,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-settings/settings.c:796,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-settings/settings.c:797,1
    - Dst: settings_parser_get_error
      Src: /src/dovecot/src/lib-settings/settings.c:797,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:798,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - ctx
    - prefix
    - key
    - value
    - orig_value
    argTypes:
    - struct settings_apply_ctx*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 799
    functionName: get_invalid_setting_error
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - t_str_new
    - str_printfa
    - str_c
    - settings_parser_get_error
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *\nget_invalid_setting_error(struct settings_apply_ctx *ctx,
      const char *prefix,\n\t\t\t  const char *key,\n\t\t\t  const char *value, const
      char *orig_value)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings.c:812,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-settings/settings.c:830,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings.c:842,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:851,1
    - Dst: var_expand_program_import_sized
      Src: /src/dovecot/src/lib-settings/settings.c:853,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/lib-settings/settings.c:857,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-settings/settings.c:862,1
    - Dst: var_expand_program_execute
      Src: /src/dovecot/src/lib-settings/settings.c:863,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/lib-settings/settings.c:865,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:868,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:868,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:874,1
    - Dst: settings_parse_read_file
      Src: /src/dovecot/src/lib-settings/settings.c:875,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:880,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:880,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 4
    argNames:
    - ctx
    - key_idx
    - value
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 883
    functionName: settings_var_expand
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - str_c
    - settings_parse_read_file
    - p_strdup
    - var_expand_program_create
    - var_expand_program_execute
    - var_expand_program_free
    - settings_file_get
    - var_expand_program_import_sized
    - str_truncate
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int settings_var_expand(struct settings_apply_ctx *ctx, unsigned int
      key_idx,\n\t\t    const char **value, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:893,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings.c:903,1
    - Dst: struct settings_apply_ctx*::info::setting_apply
      Src: /src/dovecot/src/lib-settings/settings.c:914,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:916,1
    - Dst: settings_var_expand
      Src: /src/dovecot/src/lib-settings/settings.c:927,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:928,1
    - Dst: settings_parse_keyidx_value_nodup
      Src: /src/dovecot/src/lib-settings/settings.c:936,1
    - Dst: get_invalid_setting_error
      Src: /src/dovecot/src/lib-settings/settings.c:938,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 5
    argNames:
    - ctx
    - key_idx
    - list_key
    - value
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - unsigned int
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 943
    functionName: settings_mmap_apply_key
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strchr
    - get_invalid_setting_error
    - settings_parse_keyidx_value_nodup
    - t_strdup_printf
    - settings_var_expand
    - struct settings_apply_ctx*::info::setting_apply
    linkageType: ''
    returnType: int
    signature: "int settings_mmap_apply_key(struct settings_apply_ctx *ctx, unsigned
      int key_idx,\n\t\t\tconst char *list_key, const char *value,\n\t\t\tconst char
      **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-settings/settings.c:957,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:961,1
    - Dst: struct settings_apply_ctx*::info::setting_apply
      Src: /src/dovecot/src/lib-settings/settings.c:972,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:974,1
    - Dst: settings_var_expand
      Src: /src/dovecot/src/lib-settings/settings.c:977,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:979,1
    - Dst: settings_parse_keyidx_value
      Src: /src/dovecot/src/lib-settings/settings.c:985,1
    - Dst: get_invalid_setting_error
      Src: /src/dovecot/src/lib-settings/settings.c:987,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 945
    functionDepth: 2
    functionLinenumber: 945
    functionLinenumberEnd: 994
    functionName: settings_mmap_apply_defaults
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - PTR_OFFSET
    - get_invalid_setting_error
    - t_strdup_printf
    - settings_var_expand
    - struct settings_apply_ctx*::info::setting_apply
    - settings_parse_keyidx_value
    - array_idx_get_space
    linkageType: ''
    returnType: int
    signature: "int settings_mmap_apply_defaults(struct settings_apply_ctx *ctx,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:1010,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1010,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1013,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-settings/settings.c:1024,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1042,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:1053,1
    - Dst: settings_parse_list_has_key
      Src: /src/dovecot/src/lib-settings/settings.c:1055,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/settings.c:1056,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1064,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:1071,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1073,1
    - Dst: if
      Src: /src/dovecot/src/lib-settings/settings.c:1081,1
    - Dst: settings_mmap_apply_key
      Src: /src/dovecot/src/lib-settings/settings.c:1082,1
    - Dst: settings_parse_array_stop
      Src: /src/dovecot/src/lib-settings/settings.c:1089,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-settings/settings.c:1091,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 5
    argNames:
    - ctx
    - block
    - start_offset
    - end_offset
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_mmap_block*
    - size_t
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 996
    functionDepth: 3
    functionLinenumber: 996
    functionLinenumberEnd: 1096
    functionName: settings_mmap_apply_blob
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - memcpy
    - T_END_PASS_STR_IF
    - strlen
    - t_strdup_printf
    - settings_section_unescape
    - if
    - array_idx_get_space
    - settings_mmap_apply_key
    - settings_parse_list_has_key
    - CONST_PTR_OFFSET
    - settings_parse_array_stop
    linkageType: ''
    returnType: int
    signature: "int settings_mmap_apply_blob(struct settings_apply_ctx *ctx,\n\t\t\t
      struct settings_mmap_block *block,\n\t\t\t size_t start_offset, size_t end_offset,\n\t\t\t
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_block_read_str
      Src: /src/dovecot/src/lib-settings/settings.c:1110,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:1116,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1117,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1124,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - mmap
    - block
    - info
    - error_r
    argTypes:
    - struct settings_mmap*
    - struct settings_mmap_block*
    - struct setting_parser_info*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1098
    functionDepth: 2
    functionLinenumber: 1098
    functionLinenumberEnd: 1130
    functionName: settings_mmap_validate
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    - settings_block_read_str
    linkageType: ''
    returnType: int
    signature: "int settings_mmap_validate(struct settings_mmap *mmap,\n\t\t\t\t  struct
      settings_mmap_block *block,\n\t\t\t\t  const struct setting_parser_info *info,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - mmap
    - block
    - filter_idx
    - event_filter_idx_r
    - error_r
    argTypes:
    - struct settings_mmap*
    - struct settings_mmap_block*
    - uint32_t
    - uint32_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1132
    functionDepth: 1
    functionLinenumber: 1132
    functionLinenumberEnd: 1145
    functionName: settings_mmap_get_filter_idx
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int settings_mmap_get_filter_idx(struct settings_mmap *mmap,\n\t\t\t
      \    struct settings_mmap_block *block,\n\t\t\t     uint32_t filter_idx, uint32_t
      *event_filter_idx_r,\n\t\t\t     const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:1158,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1159,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1165,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:1170,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:1173,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1173,1
    - Dst: settings_event_filter_name_find
      Src: /src/dovecot/src/lib-settings/settings.c:1179,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-settings/settings.c:1182,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-settings/settings.c:1185,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1187,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:1188,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1191,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:1192,1
    - Dst: settings_instance_override
      Src: /src/dovecot/src/lib-settings/settings.c:1203,1
    - Dst: settings_mmap_apply_blob
      Src: /src/dovecot/src/lib-settings/settings.c:1211,1
    - Dst: settings_instance_override
      Src: /src/dovecot/src/lib-settings/settings.c:1216,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 5
    argNames:
    - ctx
    - block
    - filter_idx
    - set_filter
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_mmap_block*
    - uint32_t
    - struct settings_mmap_event_filter*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1147
    functionDepth: 4
    functionLinenumber: 1147
    functionLinenumberEnd: 1224
    functionName: settings_mmap_apply_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - memcpy
    - array_append_space
    - strlen
    - settings_instance_override
    - settings_mmap_apply_blob
    - array_clear
    - CONST_PTR_OFFSET
    - settings_event_filter_name_find
    linkageType: ''
    returnType: int
    signature: "int settings_mmap_apply_filter(struct settings_apply_ctx *ctx,\n\t\t\t
      \  struct settings_mmap_block *block,\n\t\t\t   uint32_t filter_idx,\n\t\t\t
      \  struct settings_mmap_event_filter *set_filter,\n\t\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-settings/settings.c:1228,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-settings/settings.c:1230,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1233,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib-settings/settings.c:1236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct settings_apply_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1226
    functionDepth: 1
    functionLinenumber: 1226
    functionLinenumberEnd: 1240
    functionName: settings_group_event_create
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_strlist_append
    - t_strdup_printf
    - array_foreach
    linkageType: ''
    returnType: struct event
    signature: struct event *settings_group_event_create(struct settings_apply_ctx
      *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-settings/settings.c:1253,1
    - Dst: settings_mmap_get_filter_idx
      Src: /src/dovecot/src/lib-settings/settings.c:1262,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1271,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1274,1
    - Dst: settings_group_event_create
      Src: /src/dovecot/src/lib-settings/settings.c:1279,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib-settings/settings.c:1281,1
    - Dst: settings_mmap_apply_filter
      Src: /src/dovecot/src/lib-settings/settings.c:1282,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 5
    argNames:
    - ctx
    - mmap
    - block
    - include_filter_idx
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_mmap*
    - struct settings_mmap_block*
    - uint32_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1242
    functionDepth: 5
    functionLinenumber: 1242
    functionLinenumberEnd: 1289
    functionName: settings_apply_groups
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - event_filter_match
    - settings_mmap_get_filter_idx
    - settings_mmap_apply_filter
    - array_is_empty
    - i_assert
    - settings_group_event_create
    linkageType: ''
    returnType: int
    signature: "int settings_apply_groups(struct settings_apply_ctx *ctx,\n\t\t      struct
      settings_mmap *mmap,\n\t\t      struct settings_mmap_block *block,\n\t\t      uint32_t
      include_filter_idx, const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-settings/settings.c:1300,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1302,1
    - Dst: settings_mmap_validate
      Src: /src/dovecot/src/lib-settings/settings.c:1310,1
    - Dst: settings_mmap_get_filter_idx
      Src: /src/dovecot/src/lib-settings/settings.c:1326,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib-settings/settings.c:1334,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1335,1
    - Dst: settings_mmap_apply_filter
      Src: /src/dovecot/src/lib-settings/settings.c:1336,1
    - Dst: settings_apply_groups
      Src: /src/dovecot/src/lib-settings/settings.c:1341,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1295
    functionDepth: 6
    functionLinenumber: 1295
    functionLinenumberEnd: 1348
    functionName: settings_mmap_apply
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_assert
    - t_strdup_printf
    - event_filter_match
    - settings_mmap_get_filter_idx
    - settings_mmap_apply_filter
    - settings_apply_groups
    - hash_table_lookup
    - settings_mmap_validate
    linkageType: ''
    returnType: int
    signature: int settings_mmap_apply(struct settings_apply_ctx *ctx, const char
      **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mmap
    argTypes:
    - struct settings_mmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1355
    functionName: settings_mmap_ref
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void settings_mmap_ref(struct settings_mmap *mmap)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1362,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib-settings/settings.c:1371,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-settings/settings.c:1373,1
    - Dst: munmap
      Src: /src/dovecot/src/lib-settings/settings.c:1375,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-settings/settings.c:1376,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:1377,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - _mmap
    argTypes:
    - struct settings_mmap**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1378
    functionName: settings_mmap_unref
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_error
    - pool_unref
    - munmap
    - i_assert
    - event_filter_unref
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void settings_mmap_unref(struct settings_mmap **_mmap)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-settings/settings.c:1386,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings.c:1387,1
    - Dst: mmap_ro_file
      Src: /src/dovecot/src/lib-settings/settings.c:1390,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-settings/settings.c:1392,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-settings/settings.c:1394,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:1396,1
    - Dst: settings_mmap_unref
      Src: /src/dovecot/src/lib-settings/settings.c:1398,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-settings/settings.c:1401,1
    - Dst: settings_mmap_parse
      Src: /src/dovecot/src/lib-settings/settings.c:1403,1
    - Dst: settings_mmap_unref
      Src: /src/dovecot/src/lib-settings/settings.c:1407,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 8
    argNames:
    - root
    - fd
    - path
    - service_name
    - protocol_name
    - flags
    - specific_protocols_r
    - error_r
    argTypes:
    - struct settings_root*
    - int
    - char*
    - char*
    - char*
    - enum settings_read_flags
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1380
    functionDepth: 5
    functionLinenumber: 1380
    functionLinenumberEnd: 1409
    functionName: settings_read
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 3
    functionsReached:
    - mmap_ro_file
    - pool_alloconly_create
    - p_strdup
    - settings_mmap_parse
    - p_new
    - hash_table_create
    - i_fatal
    - settings_mmap_unref
    linkageType: ''
    returnType: int
    signature: "int settings_read(struct settings_root *root, int fd, const char *path,\n\t\t
      \ const char *service_name, const char *protocol_name,\n\t\t  enum settings_read_flags
      flags,\n\t\t  const char *const **specific_protocols_r,\n\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct settings_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1411
    functionDepth: 0
    functionLinenumber: 1411
    functionLinenumberEnd: 1414
    functionName: settings_has_mmap
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool settings_has_mmap(struct settings_root *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-settings/settings.c:1419,1
    - Dst: pool_get_name
      Src: /src/dovecot/src/lib-settings/settings.c:1421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1416
    functionDepth: 1
    functionLinenumber: 1416
    functionLinenumberEnd: 1422
    functionName: settings_mmap_pool_get_name
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - pool_get_name
    - container_of
    linkageType: ''
    returnType: char
    signature: char *settings_mmap_pool_get_name(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-settings/settings.c:1427,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1424
    functionDepth: 1
    functionLinenumber: 1424
    functionLinenumberEnd: 1431
    functionName: settings_mmap_pool_ref
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void settings_mmap_pool_ref(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-settings/settings.c:1436,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1438,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-settings/settings.c:1443,1
    - Dst: settings_mmap_unref
      Src: /src/dovecot/src/lib-settings/settings.c:1445,1
    - Dst: pool_external_refs_unref
      Src: /src/dovecot/src/lib-settings/settings.c:1446,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:1447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1433
    functionDepth: 2
    functionLinenumber: 1433
    functionLinenumberEnd: 1448
    functionName: settings_mmap_pool_unref
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - container_of
    - pool_external_refs_unref
    - pool_unref
    - i_assert
    - DLLIST_REMOVE
    - settings_mmap_unref
    linkageType: ''
    returnType: void
    signature: void settings_mmap_pool_unref(pool_t *pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-settings/settings.c:1453,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-settings/settings.c:1455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pool
    - size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1450
    functionDepth: 1
    functionLinenumber: 1450
    functionLinenumberEnd: 1456
    functionName: settings_mmap_pool_malloc
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - container_of
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void *settings_mmap_pool_malloc(pool_t pool, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-settings/settings.c:1461,1
    - Dst: p_free
      Src: /src/dovecot/src/lib-settings/settings.c:1463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pool
    - mem
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1458
    functionDepth: 1
    functionLinenumber: 1458
    functionLinenumberEnd: 1464
    functionName: settings_mmap_pool_free
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - container_of
    - p_free
    linkageType: ''
    returnType: void
    signature: void settings_mmap_pool_free(pool_t pool, void *mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-settings/settings.c:1470,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib-settings/settings.c:1472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - pool
    - mem
    - old_size
    - new_size
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1466
    functionDepth: 1
    functionLinenumber: 1466
    functionLinenumberEnd: 1473
    functionName: settings_mmap_pool_realloc
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - container_of
    - p_realloc
    linkageType: ''
    returnType: void
    signature: "void *settings_mmap_pool_realloc(pool_t pool, void *mem,\n\t\t\t\t\tsize_t
      old_size, size_t new_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:1477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1475
    functionDepth: 1
    functionLinenumber: 1475
    functionLinenumberEnd: 1478
    functionName: settings_mmap_pool_clear
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: void
    signature: void settings_mmap_pool_clear(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-settings/settings.c:1483,1
    - Dst: p_get_max_easy_alloc_size
      Src: /src/dovecot/src/lib-settings/settings.c:1485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1486
    functionName: settings_mmap_pool_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - p_get_max_easy_alloc_size
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t settings_mmap_pool_get_max_easy_alloc_size(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-settings/settings.c:1511,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings.c:1513,1
    - Dst: settings_mmap_ref
      Src: /src/dovecot/src/lib-settings/settings.c:1523,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-settings/settings.c:1525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - root
    - mmap
    - source_filename
    - source_linenum
    argTypes:
    - struct settings_root*
    - struct settings_mmap*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1503
    functionDepth: 2
    functionLinenumber: 1503
    functionLinenumberEnd: 1527
    functionName: settings_mmap_pool_create
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - pool_alloconly_create
    - settings_mmap_ref
    - p_new
    linkageType: ''
    returnType: struct settings_mmap_pool
    signature: "struct settings_mmap_pool *\nsettings_mmap_pool_create(struct settings_root
      *root,\n\t\t\t  struct settings_mmap *mmap,\n\t\t\t  const char *source_filename,\n\t\t\t
      \ unsigned int source_linenum)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1553,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1554,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1556,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1559,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1560,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1562,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1565,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1585,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1588,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1591,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1594,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-settings/settings.c:1600,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-settings/settings.c:1601,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1614,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1616,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1621,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/settings.c:1625,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/settings.c:1626,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/settings.c:1627,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1628,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-settings/settings.c:1628,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 56
    argCount: 2
    argNames:
    - init_ctx
    - params
    argTypes:
    - struct settings_var_expand_init_ctx*
    - struct var_expand_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1538
    functionDepth: 1
    functionLinenumber: 1538
    functionLinenumberEnd: 1629
    functionName: settings_var_expand_init_add
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - array_count
    - i_assert
    - I_MAX
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void settings_var_expand_init_add(struct settings_var_expand_init_ctx
      *init_ctx,\n\t\t\t     const struct var_expand_params *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-settings/settings.c:1638,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:1639,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:1640,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:1641,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:1645,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:1647,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-settings/settings.c:1649,1
    - Dst: callback
      Src: /src/dovecot/src/lib-settings/settings.c:1650,1
    - Dst: settings_var_expand_init_add
      Src: /src/dovecot/src/lib-settings/settings.c:1651,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:1654,1
    - Dst: settings_var_expand_init_add
      Src: /src/dovecot/src/lib-settings/settings.c:1656,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-settings/settings.c:1659,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/settings.c:1663,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/settings.c:1664,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/settings.c:1665,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1666,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-settings/settings.c:1666,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-settings/settings.c:1668,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-settings/settings.c:1669,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:1671,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-settings/settings.c:1673,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-settings/settings.c:1674,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-settings/settings.c:1675,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct settings_apply_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1631
    functionDepth: 2
    functionLinenumber: 1631
    functionLinenumberEnd: 1679
    functionName: settings_var_expand_init
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_push_back
    - settings_var_expand_init_add
    - event_get_ptr
    - I_MAX
    - array_count
    - t_array_init
    - event_get_parent
    - callback
    - array_front
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: void
    signature: void settings_var_expand_init(struct settings_apply_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - set1
    - set2
    argTypes:
    - struct settings_apply_override*
    - struct settings_apply_override*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1681
    functionDepth: 0
    functionLinenumber: 1681
    functionLinenumberEnd: 1712
    functionName: settings_apply_override_cmp
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int settings_apply_override_cmp(const struct settings_apply_override
      *set1,\n\t\t\t    const struct settings_apply_override *set2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - set
    - set_filter
    argTypes:
    - struct settings_override*
    - struct settings_mmap_event_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1714
    functionDepth: 0
    functionLinenumber: 1714
    functionLinenumberEnd: 1720
    functionName: settings_override_cmp_filter_order
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int settings_override_cmp_filter_order(const struct settings_override
      *set,\n\t\t\t\t   struct settings_mmap_event_filter *set_filter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:1725,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-settings/settings.c:1729,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/lib-settings/settings.c:1731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - key
    - type_r
    argTypes:
    - char*
    - enum setting_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1737
      start: 1722
    functionDepth: 1
    functionLinenumber: 1722
    functionLinenumberEnd: 1737
    functionName: settings_mmap_registered_lookup_key
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - setting_parser_info_find_key
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool settings_mmap_registered_lookup_key(const char *key, enum setting_type
      *type_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_mmap_registered_lookup_key
      Src: /src/dovecot/src/lib-settings/settings.c:1744,1
    - Dst: str_hash
      Src: /src/dovecot/src/lib-settings/settings.c:1747,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1754,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:1755,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:1759,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:1761,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1763,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - mmap
    - key
    - type_r
    - blocks_r
    argTypes:
    - struct settings_mmap*
    - char*
    - enum setting_type*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1739
    functionDepth: 2
    functionLinenumber: 1739
    functionLinenumberEnd: 1765
    functionName: settings_mmap_lookup_key
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - memcpy
    - strlen
    - str_hash
    - CONST_PTR_OFFSET
    - settings_mmap_registered_lookup_key
    linkageType: ''
    returnType: bool
    signature: "bool settings_mmap_lookup_key(struct settings_mmap *mmap, const char
      *key,\n\t\t\t enum setting_type *type_r, const void **blocks_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1775,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1782,1
    - Dst: settings_mmap_lookup_key
      Src: /src/dovecot/src/lib-settings/settings.c:1784,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1789,1
    - Dst: settings_mmap_lookup_key
      Src: /src/dovecot/src/lib-settings/settings.c:1790,1
    - Dst: settings_mmap_lookup_key
      Src: /src/dovecot/src/lib-settings/settings.c:1795,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - mmap
    - key
    - last_filter_key
    - last_filter_value
    - type_r
    - blocks_r
    argTypes:
    - struct settings_mmap*
    - char**
    - char*
    - char*
    - enum setting_type*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1767
    functionDepth: 3
    functionLinenumber: 1767
    functionLinenumberEnd: 1796
    functionName: settings_override_key_part_find
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_assert
    - t_strdup_printf
    - settings_mmap_lookup_key
    linkageType: ''
    returnType: bool
    signature: "bool settings_override_key_part_find(struct settings_mmap *mmap, const
      char **key,\n\t\t\t\tconst char *last_filter_key,\n\t\t\t\tconst char *last_filter_value,\n\t\t\t\tenum
      setting_type *type_r,\n\t\t\t\tconst void **blocks_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:1805,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1812,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/lib-settings/settings.c:1814,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1820,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/lib-settings/settings.c:1821,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/lib-settings/settings.c:1827,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - ctx
    - key
    - last_filter_key
    - last_filter_value
    - key_idx_r
    argTypes:
    - struct settings_apply_ctx*
    - char**
    - char*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1798
    functionDepth: 1
    functionLinenumber: 1798
    functionLinenumberEnd: 1828
    functionName: settings_key_part_find
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - setting_parser_info_find_key
    - i_assert
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool settings_key_part_find(struct settings_apply_ctx *ctx, const
      char **key,\n\t\t       const char *last_filter_key,\n\t\t       const char
      *last_filter_value,\n\t\t       unsigned int *key_idx_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-settings/settings.c:1836,1
    - Dst: settings_override_key_part_find
      Src: /src/dovecot/src/lib-settings/settings.c:1848,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1851,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:1857,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1858,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1861,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings.c:1865,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings.c:1867,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1868,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1871,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:1878,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - mmap
    - set
    - error_r
    argTypes:
    - struct settings_mmap*
    - struct settings_override*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1883
      start: 1830
    functionDepth: 4
    functionLinenumber: 1830
    functionLinenumberEnd: 1883
    functionName: settings_override_set_blocks
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_new
    - settings_override_key_part_find
    - t_strdup_printf
    - t_strcut
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int settings_override_set_blocks(struct settings_mmap *mmap,\n\t\t\t
      \    struct settings_override *set,\n\t\t\t     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:1893,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - set
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_override*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1885
    functionDepth: 0
    functionLinenumber: 1885
    functionLinenumberEnd: 1897
    functionName: setting_override_match_info
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool setting_override_match_info(struct settings_apply_ctx *ctx,\n\t\t\t\t\tstruct
      settings_override *set)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: setting_override_match_info
      Src: /src/dovecot/src/lib-settings/settings.c:1913,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib-settings/settings.c:1917,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-settings/settings.c:1921,1
    - Dst: settings_override_set_blocks
      Src: /src/dovecot/src/lib-settings/settings.c:1923,1
    - Dst: setting_override_match_info
      Src: /src/dovecot/src/lib-settings/settings.c:1930,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings.c:1936,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-settings/settings.c:1937,1
    - Dst: settings_override_key_part_find
      Src: /src/dovecot/src/lib-settings/settings.c:1941,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1945,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-settings/settings.c:1954,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-settings/settings.c:1956,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-settings/settings.c:1961,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib-settings/settings.c:1962,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings.c:1967,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1969,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-settings/settings.c:1975,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-settings/settings.c:1976,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib-settings/settings.c:1977,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/lib-settings/settings.c:1977,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:1982,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:1991,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:1993,1
    - Dst: settings_override_set_blocks
      Src: /src/dovecot/src/lib-settings/settings.c:1995,1
    - Dst: event_filter_create_with_pool
      Src: /src/dovecot/src/lib-settings/settings.c:2002,1
    - Dst: event_filter_parse_case_sensitive
      Src: /src/dovecot/src/lib-settings/settings.c:2003,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:2003,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:2005,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:2006,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-settings/settings.c:2008,1
    - Dst: setting_override_match_info
      Src: /src/dovecot/src/lib-settings/settings.c:2011,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib-settings/settings.c:2014,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 69
    argCount: 3
    argNames:
    - ctx
    - set
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_override*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 1899
    functionDepth: 5
    functionLinenumber: 1899
    functionLinenumberEnd: 2015
    functionName: settings_override_filter_match
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - p_strdup
    - str_c
    - t_strdup_printf
    - event_filter_match
    - settings_section_escape
    - i_panic
    - t_str_new
    - settings_override_key_part_find
    - event_filter_parse_case_sensitive
    - event_filter_create_with_pool
    - settings_override_set_blocks
    - pool_ref
    - wildcard_str_escape
    - str_begins
    - setting_override_match_info
    - t_strdup_until
    - str_append
    linkageType: ''
    returnType: int
    signature: "int settings_override_filter_match(struct settings_apply_ctx *ctx,\n\t\t\t
      \      struct settings_override *set,\n\t\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:2024,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:2025,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib-settings/settings.c:2029,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - set
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_override*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 2017
    functionDepth: 1
    functionLinenumber: 2017
    functionLinenumberEnd: 2030
    functionName: settings_override_find_filter_check
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - null_strcmp
    - event_filter_match
    linkageType: ''
    returnType: bool
    signature: "bool settings_override_find_filter_check(struct settings_apply_ctx
      *ctx,\n\t\t\t\t\t\tstruct settings_override *set)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:2039,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:2040,1
    - Dst: settings_override_find_filter_check
      Src: /src/dovecot/src/lib-settings/settings.c:2041,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:2045,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:2046,1
    - Dst: settings_override_find_filter_check
      Src: /src/dovecot/src/lib-settings/settings.c:2047,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct settings_apply_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2032
    functionDepth: 2
    functionLinenumber: 2032
    functionLinenumberEnd: 2052
    functionName: settings_overrides_find_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - settings_override_find_filter_check
    linkageType: ''
    returnType: bool
    signature: bool settings_overrides_find_filter(struct settings_apply_ctx *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: settings_key_part_find
      Src: /src/dovecot/src/lib-settings/settings.c:2063,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings.c:2071,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-settings/settings.c:2075,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-settings/settings.c:2080,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-settings/settings.c:2086,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-settings/settings.c:2090,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:2095,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-settings/settings.c:2098,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 5
    argNames:
    - ctx
    - set
    - _key
    - key_idx_r
    - value_r
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_override*
    - char**
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2100
      start: 2054
    functionDepth: 2
    functionLinenumber: 2054
    functionLinenumberEnd: 2100
    functionName: settings_override_get_value
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strchr
    - PTR_OFFSET
    - str_begins
    - settings_key_part_find
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int settings_override_get_value(struct settings_apply_ctx *ctx,\n\t\t\t
      \   const struct settings_override *set,\n\t\t\t    const char **_key, unsigned
      int *key_idx_r,\n\t\t\t    const char **value_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:2111,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-settings/settings.c:2130,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-settings/settings.c:2133,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2137,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:2147,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-settings/settings.c:2152,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2159,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib-settings/settings.c:2161,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/lib-settings/settings.c:2161,1
    - Dst: settings_override_set_blocks
      Src: /src/dovecot/src/lib-settings/settings.c:2164,1
    - Dst: event_filter_create_with_pool
      Src: /src/dovecot/src/lib-settings/settings.c:2168,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-settings/settings.c:2169,1
    - Dst: event_filter_parse_case_sensitive
      Src: /src/dovecot/src/lib-settings/settings.c:2170,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:2172,1
    - Dst: event_filter_merge
      Src: /src/dovecot/src/lib-settings/settings.c:2178,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - array_set
    - key_idx
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_override*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2102
    functionDepth: 5
    functionLinenumber: 2102
    functionLinenumberEnd: 2183
    functionName: settings_instance_override_add_default
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - p_strdup
    - array_append_space
    - strrchr
    - wildcard_str_escape
    - pool_ref
    - t_strdup_printf
    - event_filter_parse_case_sensitive
    - event_filter_merge
    - t_strsplit
    - event_filter_create_with_pool
    - settings_override_set_blocks
    - settings_section_escape
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int settings_instance_override_add_default(struct settings_apply_ctx
      *ctx,\n\t\t\t\t       struct settings_override *array_set,\n\t\t\t\t       unsigned
      int key_idx,\n\t\t\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_override_filter_match
      Src: /src/dovecot/src/lib-settings/settings.c:2191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - set
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_override*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2192
      start: 2185
    functionDepth: 6
    functionLinenumber: 2185
    functionLinenumberEnd: 2192
    functionName: settings_apply_add_override
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - settings_override_filter_match
    linkageType: ''
    returnType: int
    signature: "int settings_apply_add_override(struct settings_apply_ctx *ctx,\n\t\t\t\t
      \      struct settings_override *set,\n\t\t\t\t       const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings.c:2215,1
    - Dst: settings_apply_add_override
      Src: /src/dovecot/src/lib-settings/settings.c:2220,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:2221,1
    - Dst: settings_override_free
      Src: /src/dovecot/src/lib-settings/settings.c:2223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct settings_apply_ctx*
    - struct setting_parser_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2203
    functionDepth: 7
    functionLinenumber: 2203
    functionLinenumberEnd: 2225
    functionName: settings_instance_overrides_add_filters
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - settings_override_free
    - p_new
    - settings_apply_add_override
    linkageType: ''
    returnType: void
    signature: "void settings_instance_overrides_add_filters(struct settings_apply_ctx
      *ctx,\n\t\t\t\t\tconst struct setting_parser_info *info)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: settings_info_register
      Src: /src/dovecot/src/lib-settings/settings.c:2236,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:2239,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:2240,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:2241,1
    - Dst: settings_apply_add_override
      Src: /src/dovecot/src/lib-settings/settings.c:2244,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:2248,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:2249,1
    - Dst: settings_apply_add_override
      Src: /src/dovecot/src/lib-settings/settings.c:2252,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:2257,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-settings/settings.c:2277,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-settings/settings.c:2278,1
    - Dst: settings_instance_overrides_add_filters
      Src: /src/dovecot/src/lib-settings/settings.c:2279,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-settings/settings.c:2282,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 2227
    functionDepth: 8
    functionLinenumber: 2227
    functionLinenumberEnd: 2284
    functionName: settings_instance_override_init
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - array_sort
    - pool_alloconly_create
    - settings_instance_overrides_add_filters
    - settings_apply_add_override
    - array_foreach_elem
    - t_array_init
    - array_foreach_modifiable
    - array_is_created
    - settings_info_register
    linkageType: ''
    returnType: int
    signature: "int settings_instance_override_init(struct settings_apply_ctx *ctx,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:2291,1
    - Dst: settings_override_free
      Src: /src/dovecot/src/lib-settings/settings.c:2293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct settings_apply_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2295
      start: 2286
    functionDepth: 2
    functionLinenumber: 2286
    functionLinenumberEnd: 2295
    functionName: settings_apply_ctx_overrides_deinit
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - settings_override_free
    linkageType: ''
    returnType: void
    signature: void settings_apply_ctx_overrides_deinit(struct settings_apply_ctx
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:2306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2310
      start: 2305
    functionDepth: 0
    functionLinenumber: 2305
    functionLinenumberEnd: 2310
    functionName: array_foreach_modifiable
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 35
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void array_foreach_modifiable(include_groups, include_group)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:2329,1
    - Dst: settings_override_cmp_filter_order
      Src: /src/dovecot/src/lib-settings/settings.c:2341,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:2351,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:2352,1
    - Dst: settings_include_group_add_or_update
      Src: /src/dovecot/src/lib-settings/settings.c:2359,1
    - Dst: settings_override_get_value
      Src: /src/dovecot/src/lib-settings/settings.c:2363,1
    - Dst: settings_instance_override_add_default
      Src: /src/dovecot/src/lib-settings/settings.c:2380,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-settings/settings.c:2387,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-settings/settings.c:2388,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:2392,1
    - Dst: settings_parse_list_has_key
      Src: /src/dovecot/src/lib-settings/settings.c:2393,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/settings.c:2395,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-settings/settings.c:2402,1
    - Dst: settings_override_free
      Src: /src/dovecot/src/lib-settings/settings.c:2423,1
    - Dst: settings_var_expand
      Src: /src/dovecot/src/lib-settings/settings.c:2431,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2433,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-settings/settings.c:2445,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2446,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:2453,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:2463,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:2464,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-settings/settings.c:2464,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-settings/settings.c:2466,1
    - Dst: struct settings_apply_ctx*::info::setting_apply
      Src: /src/dovecot/src/lib-settings/settings.c:2469,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2471,1
    - Dst: settings_parse_keyidx_value_nodup
      Src: /src/dovecot/src/lib-settings/settings.c:2478,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2480,1
    - Dst: settings_parser_get_error
      Src: /src/dovecot/src/lib-settings/settings.c:2484,1
    - Dst: settings_parse_array_stop
      Src: /src/dovecot/src/lib-settings/settings.c:2493,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 95
    argCount: 4
    argNames:
    - ctx
    - set_filter
    - defaults
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - struct settings_mmap_event_filter*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2316
    functionDepth: 6
    functionLinenumber: 2316
    functionLinenumberEnd: 2498
    functionName: settings_instance_override
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 1
    functionsReached:
    - settings_override_get_value
    - p_strdup
    - pool_add_external_ref
    - settings_override_cmp_filter_order
    - settings_override_free
    - t_strdup_printf
    - struct settings_apply_ctx*::info::setting_apply
    - array_foreach_modifiable
    - settings_include_group_add_or_update
    - i_unreached
    - array_idx_elem
    - array_idx_get_space
    - settings_parser_get_error
    - settings_instance_override_add_default
    - settings_parse_array_stop
    - settings_parse_keyidx_value_nodup
    - settings_var_expand
    - null_strcmp
    - i_assert
    - strcmp
    - str_begins_with
    - str_begins
    - settings_section_unescape
    - settings_parse_list_has_key
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int settings_instance_override(struct settings_apply_ctx *ctx,\n\t\t\t
      \  struct settings_mmap_event_filter *set_filter,\n\t\t\t   bool *defaults,
      const char **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:2510,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib-settings/settings.c:2514,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-settings/settings.c:2515,1
    - Dst: settings_mmap_pool_create
      Src: /src/dovecot/src/lib-settings/settings.c:2517,1
    - Dst: settings_parser_init
      Src: /src/dovecot/src/lib-settings/settings.c:2520,1
    - Dst: settings_parser_get_set
      Src: /src/dovecot/src/lib-settings/settings.c:2525,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:2526,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:2530,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-settings/settings.c:2531,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:2532,1
    - Dst: settings_var_expand_init
      Src: /src/dovecot/src/lib-settings/settings.c:2535,1
    - Dst: settings_instance_override_init
      Src: /src/dovecot/src/lib-settings/settings.c:2537,1
    - Dst: settings_mmap_apply
      Src: /src/dovecot/src/lib-settings/settings.c:2540,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2542,1
    - Dst: settings_instance_override
      Src: /src/dovecot/src/lib-settings/settings.c:2550,1
    - Dst: settings_apply_ctx_overrides_deinit
      Src: /src/dovecot/src/lib-settings/settings.c:2555,1
    - Dst: settings_mmap_apply_defaults
      Src: /src/dovecot/src/lib-settings/settings.c:2558,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:2560,1
    - Dst: settings_overrides_find_filter
      Src: /src/dovecot/src/lib-settings/settings.c:2566,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:2567,1
    - Dst: settings_check
      Src: /src/dovecot/src/lib-settings/settings.c:2572,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2574,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:2576,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 5
    argNames:
    - ctx
    - source_filename
    - source_linenum
    - set_r
    - error_r
    argTypes:
    - struct settings_apply_ctx*
    - char*
    - unsigned int
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2583
      start: 2500
    functionDepth: 9
    functionLinenumber: 2500
    functionLinenumberEnd: 2583
    functionName: settings_instance_get
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - t_strdup_printf
    - pool_unref
    - settings_mmap_apply
    - settings_mmap_pool_create
    - settings_mmap_apply_defaults
    - PTR_OFFSET
    - settings_check
    - settings_var_expand_init
    - settings_parser_init
    - event_find_field_recursive
    - event_add_str
    - str_new
    - settings_parser_get_set
    - settings_instance_override
    - settings_instance_override_init
    - i_assert
    - settings_apply_ctx_overrides_deinit
    - settings_overrides_find_filter
    - t_array_init
    linkageType: ''
    returnType: int
    signature: "int settings_instance_get(struct settings_apply_ctx *ctx,\n\t\t      const
      char *source_filename,\n\t\t      unsigned int source_linenum,\n\t\t      const
      void **set_r, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:2589,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib-settings/settings.c:2592,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:2597,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib-settings/settings.c:2600,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-settings/settings.c:2604,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:2604,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-settings/settings.c:2605,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-settings/settings.c:2607,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:2607,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-settings/settings.c:2608,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:2609,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:2609,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib-settings/settings.c:2612,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - src_event
    - dest_event
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2615
      start: 2585
    functionDepth: 1
    functionLinenumber: 2585
    functionLinenumberEnd: 2615
    functionName: settings_event_convert_filter_names
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - event_get_ptr
    - event_strlist_append
    - strlen
    - str_truncate
    - str_append
    linkageType: ''
    returnType: void
    signature: void settings_event_convert_filter_names(struct event *src_event, struct
      event *dest_event)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-settings/settings.c:2633,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2635,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/lib-settings/settings.c:2636,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-settings/settings.c:2639,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib-settings/settings.c:2640,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib-settings/settings.c:2645,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:2651,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:2652,1
    - Dst: settings_event_convert_filter_names
      Src: /src/dovecot/src/lib-settings/settings.c:2668,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-settings/settings.c:2669,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:2673,1
    - Dst: settings_instance_get
      Src: /src/dovecot/src/lib-settings/settings.c:2700,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2703,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2705,1
    - Dst: settings_parser_unref
      Src: /src/dovecot/src/lib-settings/settings.c:2708,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-settings/settings.c:2709,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-settings/settings.c:2710,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-settings/settings.c:2711,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:2712,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 9
    argNames:
    - event
    - filter_key
    - filter_value
    - info
    - params
    - source_filename
    - source_linenum
    - set_r
    - error_r
    argTypes:
    - struct event*
    - char*
    - char*
    - struct setting_parser_info*
    - struct settings_get_params*
    - char*
    - unsigned int
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2714
      start: 2617
    functionDepth: 10
    functionLinenumber: 2617
    functionLinenumberEnd: 2714
    functionName: settings_get_real
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - event_create
    - event_unref
    - event_get_ptr
    - event_strlist_append
    - t_strdup_printf
    - settings_event_convert_filter_names
    - pool_unref
    - settings_parser_unref
    - event_get_parent
    - settings_instance_get
    - settings_section_escape
    - event_add_str
    - array_free
    - str_free
    linkageType: ''
    returnType: int
    signature: "int settings_get_real(struct event *event,\n\t\t  const char *filter_key,
      const char *filter_value,\n\t\t  const struct setting_parser_info *info,\n\t\t
      \ const struct settings_get_params *params,\n\t\t  const char *source_filename,\n\t\t
      \ unsigned int source_linenum,\n\t\t  const void **set_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:2720,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-settings/settings.c:2721,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:2724,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:2728,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-settings/settings.c:2730,1
    - Dst: settings_mmap_lookup_key
      Src: /src/dovecot/src/lib-settings/settings.c:2734,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - event
    - key
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2736
      start: 2716
    functionDepth: 3
    functionLinenumber: 2716
    functionLinenumberEnd: 2736
    functionName: settings_key_exists
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - settings_mmap_lookup_key
    - event_get_ptr
    - strlen
    - t_strndup
    - event_get_parent
    linkageType: ''
    returnType: bool
    signature: bool settings_key_exists(struct event *event, const char *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - item1
    - item2
    argTypes:
    - struct settings_filter_array_item*
    - struct settings_filter_array_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2757
      start: 2748
    functionDepth: 0
    functionLinenumber: 2748
    functionLinenumberEnd: 2757
    functionName: settings_filter_array_uint_cmp
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int settings_filter_array_uint_cmp(const struct settings_filter_array_item
      *item1,\n\t\t\t       const struct settings_filter_array_item *item2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:2763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - item1
    - item2
    argTypes:
    - struct settings_filter_array_item*
    - struct settings_filter_array_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2764
      start: 2759
    functionDepth: 0
    functionLinenumber: 2759
    functionLinenumberEnd: 2764
    functionName: settings_filter_array_str_cmp
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int settings_filter_array_str_cmp(const struct settings_filter_array_item
      *item1,\n\t\t\t      const struct settings_filter_array_item *item2)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:2777,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/lib-settings/settings.c:2781,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:2783,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:2810,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings.c:2814,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:2822,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:2823,1
    - Dst: settings_get_real
      Src: /src/dovecot/src/lib-settings/settings.c:2829,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-settings/settings.c:2833,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:2837,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:2844,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-settings/settings.c:2848,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:2854,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings.c:2858,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:2859,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-settings/settings.c:2862,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:2865,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 8
    argNames:
    - event
    - field_name
    - order
    - fvals_arr
    - params
    - source_filename
    - source_linenum
    - error_r
    argTypes:
    - struct event*
    - char*
    - struct setting_filter_array_order*
    - ARRAY_TYPE*
    - struct settings_get_params*
    - char*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2866
      start: 2766
    functionDepth: 11
    functionLinenumber: 2766
    functionLinenumberEnd: 2866
    functionName: settings_sort_filter_array
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - T_END_PASS_STR_IF
    - PTR_OFFSET
    - array_append_space
    - i_unreached
    - array_get_modifiable
    - setting_parser_info_find_key
    - t_strdup
    - t_strdup_printf
    - pool_unref
    - settings_get_real
    - t_array_init
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int settings_sort_filter_array(struct event *event, const char *field_name,\n\t\t\t
      \  const struct setting_filter_array_order *order,\n\t\t\t   ARRAY_TYPE(const_string)
      *fvals_arr,\n\t\t\t   const struct settings_get_params *params,\n\t\t\t   const
      char *source_filename,\n\t\t\t   unsigned int source_linenum, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_real
      Src: /src/dovecot/src/lib-settings/settings.c:2909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 9
    argNames:
    - event
    - filter_key
    - filter_value
    - info
    - params
    - source_filename
    - source_linenum
    - set_r
    - error_r
    argTypes:
    - struct event*
    - char*
    - char*
    - struct setting_parser_info*
    - struct settings_get_params*
    - char*
    - unsigned int
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2912
      start: 2895
    functionDepth: 11
    functionLinenumber: 2895
    functionLinenumberEnd: 2912
    functionName: settings_get_full
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - settings_get_real
    linkageType: ''
    returnType: int
    signature: "int settings_get_full(struct event *event,\n\t\t  const char *filter_key,
      const char *filter_value,\n\t\t  const struct setting_parser_info *info,\n\t\t
      \ const struct settings_get_params *params,\n\t\t  const char *source_filename,\n\t\t
      \ unsigned int source_linenum,\n\t\t  const void **set_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_full
      Src: /src/dovecot/src/lib-settings/settings.c:2970,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:2973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 7
    argNames:
    - event
    - info
    - flags
    - source_filename
    - source_linenum
    - set_r
    - error_r
    argTypes:
    - struct event*
    - struct setting_parser_info*
    - enum settings_get_flags
    - char*
    - unsigned int
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2975
      start: 2960
    functionDepth: 12
    functionLinenumber: 2960
    functionLinenumberEnd: 2975
    functionName: settings_get
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 28
    functionsReached:
    - i_assert
    - settings_get_full
    linkageType: ''
    returnType: int
    signature: "int settings_get(struct event *event,\n\t\t const struct setting_parser_info
      *info,\n\t\t enum settings_get_flags flags,\n\t\t const char *source_filename,\n\t\t
      unsigned int source_linenum,\n\t\t const void **set_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_full
      Src: /src/dovecot/src/lib-settings/settings.c:2985,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:2988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 7
    argNames:
    - event
    - info
    - params
    - source_filename
    - source_linenum
    - set_r
    - error_r
    argTypes:
    - struct event*
    - struct setting_parser_info*
    - struct settings_get_params*
    - char*
    - unsigned int
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2990
      start: 2978
    functionDepth: 12
    functionLinenumber: 2978
    functionLinenumberEnd: 2990
    functionName: settings_get_params
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - i_assert
    - settings_get_full
    linkageType: ''
    returnType: int
    signature: "int settings_get_params(struct event *event,\n\t\t\tconst struct setting_parser_info
      *info,\n\t\t\tconst struct settings_get_params *params,\n\t\t\tconst char *source_filename,\n\t\t\tunsigned
      int source_linenum,\n\t\t\tconst void **set_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:3001,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:3002,1
    - Dst: settings_get_full
      Src: /src/dovecot/src/lib-settings/settings.c:3007,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings.c:3014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 9
    argNames:
    - event
    - filter_key
    - filter_value
    - info
    - flags
    - source_filename
    - source_linenum
    - set_r
    - error_r
    argTypes:
    - struct event*
    - char*
    - char*
    - struct setting_parser_info*
    - enum settings_get_flags
    - char*
    - unsigned int
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3021
      start: 2993
    functionDepth: 12
    functionLinenumber: 2993
    functionLinenumberEnd: 3021
    functionName: settings_get_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 10
    functionsReached:
    - i_assert
    - t_strdup_printf
    - settings_get_full
    linkageType: ''
    returnType: int
    signature: "int settings_get_filter(struct event *event,\n\t\t\tconst char *filter_key,
      const char *filter_value,\n\t\t\tconst struct setting_parser_info *info,\n\t\t\tenum
      settings_get_flags flags,\n\t\t\tconst char *source_filename,\n\t\t\tunsigned
      int source_linenum,\n\t\t\tconst void **set_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:3032,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings.c:3033,1
    - Dst: settings_get_full
      Src: /src/dovecot/src/lib-settings/settings.c:3038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 9
    argNames:
    - event
    - filter_key
    - filter_value
    - info
    - flags
    - source_filename
    - source_linenum
    - set_r
    - error_r
    argTypes:
    - struct event*
    - char*
    - char*
    - struct setting_parser_info*
    - enum settings_get_flags
    - char*
    - unsigned int
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3041
      start: 3024
    functionDepth: 12
    functionLinenumber: 3024
    functionLinenumberEnd: 3041
    functionName: settings_try_get_filter
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 1
    functionsReached:
    - i_assert
    - settings_get_full
    linkageType: ''
    returnType: int
    signature: "int settings_try_get_filter(struct event *event,\n\t\t\t    const
      char *filter_key, const char *filter_value,\n\t\t\t    const struct setting_parser_info
      *info,\n\t\t\t    enum settings_get_flags flags,\n\t\t\t    const char *source_filename,\n\t\t\t
      \   unsigned int source_linenum,\n\t\t\t    const void **set_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-settings/settings.c:3053,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-settings/settings.c:3055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - event
    - info
    - source_filename
    - source_linenum
    argTypes:
    - struct event*
    - struct setting_parser_info*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3057
      start: 3044
    functionDepth: 1
    functionLinenumber: 3044
    functionLinenumberEnd: 3057
    functionName: settings_get_or_fatal
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 2
    functionsReached:
    - i_fatal
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void *\nsettings_get_or_fatal(struct event *event,\n\t\t      const
      struct setting_parser_info *info,\n\t\t      const char *source_filename,\n\t\t
      \     unsigned int source_linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:3066,1
    - Dst: if
      Src: /src/dovecot/src/lib-settings/settings.c:3068,1
    - Dst: i_isspace
      Src: /src/dovecot/src/lib-settings/settings.c:3072,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-settings/settings.c:3074,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:3076,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:3077,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 5
    argNames:
    - set
    - pool
    - key
    - value
    - type
    argTypes:
    - struct settings_override*
    - pool_t
    - char*
    - char*
    - enum settings_override_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3078
      start: 3059
    functionDepth: 1
    functionLinenumber: 3059
    functionLinenumberEnd: 3078
    functionName: settings_override_fill
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - strlen
    - t_strndup
    - i_isspace
    - if
    linkageType: ''
    returnType: void
    signature: "void settings_override_fill(struct settings_override *set, pool_t
      pool,\n\t\t       const char *key, const char *value,\n\t\t       enum settings_override_type
      type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:3085,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:3086,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-settings/settings.c:3088,1
    - Dst: settings_override_fill
      Src: /src/dovecot/src/lib-settings/settings.c:3090,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - instance
    - key
    - value
    - type
    argTypes:
    - struct settings_instance*
    - char*
    - char*
    - enum settings_override_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3091
      start: 3081
    functionDepth: 2
    functionLinenumber: 3081
    functionLinenumberEnd: 3091
    functionName: settings_override
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 3
    functionsReached:
    - array_is_created
    - settings_override_fill
    - array_append_space
    - p_array_init
    linkageType: ''
    returnType: void
    signature: "void settings_override(struct settings_instance *instance,\n\t\t       const
      char *key, const char *value,\n\t\t       enum settings_override_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:3097,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:3098,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-settings/settings.c:3100,1
    - Dst: settings_override_fill
      Src: /src/dovecot/src/lib-settings/settings.c:3102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - root
    - key
    - value
    - type
    argTypes:
    - struct settings_root*
    - char*
    - char*
    - enum settings_override_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3103
      start: 3093
    functionDepth: 2
    functionLinenumber: 3093
    functionLinenumberEnd: 3103
    functionName: settings_root_override
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 4
    functionsReached:
    - array_is_created
    - settings_override_fill
    - array_append_space
    - p_array_init
    linkageType: ''
    returnType: void
    signature: "void settings_root_override(struct settings_root *root,\n\t\t\t    const
      char *key, const char *value,\n\t\t\t    enum settings_override_type type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:3109,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:3119,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-settings/settings.c:3123,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings.c:3125,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - set
    - key
    - type
    argTypes:
    - struct settings_override*
    - char*
    - enum settings_override_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3126
      start: 3105
    functionDepth: 0
    functionLinenumber: 3105
    functionLinenumberEnd: 3126
    functionName: settings_override_equals
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strncmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: "bool settings_override_equals(struct settings_override *set, const
      char *key,\n\t\t\t enum settings_override_type type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:3132,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:3137,1
    - Dst: settings_override_equals
      Src: /src/dovecot/src/lib-settings/settings.c:3138,1
    - Dst: settings_override_free
      Src: /src/dovecot/src/lib-settings/settings.c:3141,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-settings/settings.c:3142,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-settings/settings.c:3143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - root
    - key
    - type
    argTypes:
    - struct settings_root*
    - char*
    - enum settings_override_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3148
      start: 3128
    functionDepth: 2
    functionLinenumber: 3128
    functionLinenumberEnd: 3148
    functionName: settings_root_override_remove
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - array_delete
    - settings_override_free
    - array_foreach_idx
    - array_foreach_modifiable
    - array_is_created
    - settings_override_equals
    linkageType: ''
    returnType: bool
    signature: "bool settings_root_override_remove(struct settings_root *root,\n\t\t\t\t
      \  const char *key,\n\t\t\t\t   enum settings_override_type type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:3152,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-settings/settings.c:3155,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:3155,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-settings/settings.c:3156,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-settings/settings.c:3158,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings.c:3158,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-settings/settings.c:3159,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:3160,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:3160,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings.c:3163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3164
      start: 3150
    functionDepth: 1
    functionLinenumber: 3150
    functionLinenumberEnd: 3164
    functionName: settings_event_get_free_filter_name_key
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - event_get_ptr
    - strlen
    - str_truncate
    - str_append
    linkageType: ''
    returnType: char
    signature: char *settings_event_get_free_filter_name_key(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:3168,1
    - Dst: settings_event_get_free_filter_name_key
      Src: /src/dovecot/src/lib-settings/settings.c:3168,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:3169,1
    - Dst: event_get_pool
      Src: /src/dovecot/src/lib-settings/settings.c:3169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event
    - name
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3170
      start: 3166
    functionDepth: 2
    functionLinenumber: 3166
    functionLinenumberEnd: 3170
    functionName: settings_event_add_filter_name
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 1
    functionsReached:
    - settings_event_get_free_filter_name_key
    - p_strdup
    - event_set_ptr
    - event_get_pool
    linkageType: ''
    returnType: void
    signature: void settings_event_add_filter_name(struct event *event, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-settings/settings.c:3176,1
    - Dst: event_get_pool
      Src: /src/dovecot/src/lib-settings/settings.c:3176,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/lib-settings/settings.c:3177,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:3178,1
    - Dst: settings_event_get_free_filter_name_key
      Src: /src/dovecot/src/lib-settings/settings.c:3178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - event
    - key
    - value
    argTypes:
    - struct event*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3180
      start: 3172
    functionDepth: 2
    functionLinenumber: 3172
    functionLinenumberEnd: 3180
    functionName: settings_event_add_list_filter_name
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 5
    functionsReached:
    - settings_event_get_free_filter_name_key
    - event_get_pool
    - event_set_ptr
    - p_strconcat
    - settings_section_escape
    linkageType: ''
    returnType: void
    signature: "void settings_event_add_list_filter_name(struct event *event,\n\t\t\t\t\t
      const char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-settings/settings.c:3185,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings.c:3187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3190
      start: 3182
    functionDepth: 1
    functionLinenumber: 3182
    functionLinenumberEnd: 3190
    functionName: settings_instance_alloc
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct settings_instance
    signature: 'struct settings_instance *

      settings_instance_alloc(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_instance_alloc
      Src: /src/dovecot/src/lib-settings/settings.c:3195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct settings_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3199
      start: 3192
    functionDepth: 2
    functionLinenumber: 3192
    functionLinenumberEnd: 3199
    functionName: settings_instance_new
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 2
    functionsReached:
    - settings_instance_alloc
    linkageType: ''
    returnType: struct settings_instance
    signature: 'struct settings_instance *

      settings_instance_new(struct settings_root *root)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_instance_alloc
      Src: /src/dovecot/src/lib-settings/settings.c:3204,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:3208,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:3211,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-settings/settings.c:3212,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-settings/settings.c:3214,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-settings/settings.c:3216,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:3221,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings.c:3223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct settings_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3227
      start: 3201
    functionDepth: 2
    functionLinenumber: 3201
    functionLinenumberEnd: 3227
    functionName: settings_instance_dup
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - p_array_init
    - array_foreach
    - array_count
    - array_is_created
    - settings_instance_alloc
    linkageType: ''
    returnType: struct settings_instance
    signature: 'struct settings_instance *

      settings_instance_dup(const struct settings_instance *src)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:3239,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:3240,1
    - Dst: settings_override_free
      Src: /src/dovecot/src/lib-settings/settings.c:3241,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:3243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _instance
    argTypes:
    - struct settings_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3244
      start: 3229
    functionDepth: 2
    functionLinenumber: 3229
    functionLinenumberEnd: 3244
    functionName: settings_instance_free
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 2
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - settings_override_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void settings_instance_free(struct settings_instance **_instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-settings/settings.c:3248,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings.c:3249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3252
      start: 3246
    functionDepth: 1
    functionLinenumber: 3246
    functionLinenumberEnd: 3252
    functionName: settings_root_init
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 4
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct settings_root
    signature: struct settings_root *settings_root_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:3264,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-settings/settings.c:3265,1
    - Dst: settings_override_free
      Src: /src/dovecot/src/lib-settings/settings.c:3266,1
    - Dst: settings_mmap_unref
      Src: /src/dovecot/src/lib-settings/settings.c:3268,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-settings/settings.c:3271,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings.c:3274,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _root
    argTypes:
    - struct settings_root**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3275
      start: 3254
    functionDepth: 2
    functionLinenumber: 3254
    functionLinenumberEnd: 3275
    functionName: settings_root_deinit
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 4
    functionsReached:
    - settings_override_free
    - i_warning
    - pool_unref
    - array_foreach_modifiable
    - array_is_created
    - settings_mmap_unref
    linkageType: ''
    returnType: void
    signature: void settings_root_deinit(struct settings_root **_root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:3282,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-settings/settings.c:3285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3288
      start: 3277
    functionDepth: 1
    functionLinenumber: 3277
    functionLinenumberEnd: 3288
    functionName: settings_root_find
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - event_get_ptr
    - event_get_parent
    linkageType: ''
    returnType: struct settings_root
    signature: struct settings_root *settings_root_find(const struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-settings/settings.c:3292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3293
      start: 3290
    functionDepth: 1
    functionLinenumber: 3290
    functionLinenumberEnd: 3293
    functionName: set_registered_infos_free
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void set_registered_infos_free(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - info
    - info2
    argTypes:
    - struct setting_parser_info*
    - struct setting_parser_info**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3300
      start: 3295
    functionDepth: 0
    functionLinenumber: 3295
    functionLinenumberEnd: 3300
    functionName: setting_parser_info_cmp
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int setting_parser_info_cmp(const struct setting_parser_info *info,\n\t\t\tconst
      struct setting_parser_info *const *info2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings.c:3304,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-settings/settings.c:3305,1
    - Dst: lib_atexit
      Src: /src/dovecot/src/lib-settings/settings.c:3306,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-settings/settings.c:3308,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings.c:3310,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct setting_parser_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3311
      start: 3302
    functionDepth: 1
    functionLinenumber: 3302
    functionLinenumberEnd: 3311
    functionName: settings_info_register
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 4
    functionsReached:
    - i_array_init
    - lib_atexit
    - array_lsearch
    - array_push_back
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void settings_info_register(const struct setting_parser_info *info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:3318,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-settings/settings.c:3321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3324
      start: 3313
    functionDepth: 1
    functionLinenumber: 3313
    functionLinenumberEnd: 3324
    functionName: settings_instance_find
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 1
    functionsReached:
    - event_get_ptr
    - event_get_parent
    linkageType: ''
    returnType: struct settings_instance
    signature: struct settings_instance *settings_instance_find(const struct event
      *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-settings/settings.c:3329,1
    - Dst: settings_root_init
      Src: /src/dovecot/src/lib-settings/settings.c:3330,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-settings/settings.c:3331,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:3332,1
    - Dst: settings_simple_update
      Src: /src/dovecot/src/lib-settings/settings.c:3334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - set_r
    - settings
    argTypes:
    - struct settings_simple*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3335
      start: 3326
    functionDepth: 2
    functionLinenumber: 3326
    functionLinenumberEnd: 3335
    functionName: settings_simple_init
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 5
    functionsReached:
    - i_zero
    - event_create
    - settings_simple_update
    - event_set_ptr
    - settings_root_init
    linkageType: ''
    returnType: void
    signature: "void settings_simple_init(struct settings_simple *set_r,\n\t\t\t  const
      char *const settings[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-settings/settings.c:3339,1
    - Dst: settings_root_deinit
      Src: /src/dovecot/src/lib-settings/settings.c:3340,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-settings/settings.c:3341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct settings_simple*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3342
      start: 3337
    functionDepth: 3
    functionLinenumber: 3337
    functionLinenumberEnd: 3342
    functionName: settings_simple_deinit
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 6
    functionsReached:
    - settings_instance_free
    - event_unref
    - settings_root_deinit
    linkageType: ''
    returnType: void
    signature: void settings_simple_deinit(struct settings_simple *set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-settings/settings.c:3347,1
    - Dst: settings_instance_new
      Src: /src/dovecot/src/lib-settings/settings.c:3348,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-settings/settings.c:3350,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-settings/settings.c:3353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - set
    - settings
    argTypes:
    - struct settings_simple*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3354
      start: 3344
    functionDepth: 3
    functionLinenumber: 3344
    functionLinenumberEnd: 3354
    functionName: settings_simple_update
    functionSourceFile: /src/dovecot/src/lib-settings/settings.c
    functionUses: 1
    functionsReached:
    - settings_instance_free
    - settings_override
    - event_set_ptr
    - settings_instance_new
    linkageType: ''
    returnType: void
    signature: "void settings_simple_update(struct settings_simple *set,\n\t\t\t    const
      char *const settings[])"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings-parser.c:53,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings-parser.c:59,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:60,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-settings/settings-parser.c:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct setting_parser_context*
    - struct setting_parser_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 69
    functionName: setting_parser_copy_defaults
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strchr
    - PTR_OFFSET
    - p_strdup_until
    linkageType: ''
    returnType: void
    signature: "void setting_parser_copy_defaults(struct setting_parser_context *ctx,\n\t\t\t
      \    const struct setting_parser_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-settings/settings-parser.c:78,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-settings/settings-parser.c:80,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-settings/settings-parser.c:89,1
    - Dst: setting_parser_copy_defaults
      Src: /src/dovecot/src/lib-settings/settings-parser.c:90,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-settings/settings-parser.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - set_pool
    - root
    - flags
    argTypes:
    - pool_t
    - struct setting_parser_info*
    - enum settings_parser_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 95
    functionName: settings_parser_init
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - p_new
    - pool_ref
    - setting_parser_copy_defaults
    - p_malloc
    linkageType: ''
    returnType: struct setting_parser_context
    signature: "struct setting_parser_context *\nsettings_parser_init(pool_t set_pool,
      const struct setting_parser_info *root,\n\t\t     enum settings_parser_flags
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings-parser.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct setting_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: settings_parser_ref
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void settings_parser_ref(struct setting_parser_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings-parser.c:111,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-settings/settings-parser.c:114,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings-parser.c:115,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-settings/settings-parser.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct setting_parser_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 117
    functionName: settings_parser_unref
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 2
    functionsReached:
    - i_assert
    - i_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void settings_parser_unref(struct setting_parser_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct setting_parser_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: setting_parser_info_get_define_count
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int setting_parser_info_get_define_count(const struct setting_parser_info
      *info)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-settings/settings-parser.c:134,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 3
    argNames:
    - info
    - key
    - idx_r
    argTypes:
    - struct setting_parser_info*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 151
    functionName: setting_parser_info_find_key
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 3
    functionsReached:
    - str_begins
    linkageType: ''
    returnType: bool
    signature: "bool setting_parser_info_find_key(const struct setting_parser_info
      *info,\n\t\t\t\t  const char *key, unsigned int *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct setting_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 156
    functionName: settings_parser_get_set
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *settings_parser_get_set(const struct setting_parser_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-settings/settings-parser.c:161,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - error
    argTypes:
    - struct setting_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 163
    functionName: settings_parser_set_error
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void settings_parser_set_error(struct setting_parser_context *ctx,\n\t\t\t\t
      \     const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct setting_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: settings_parser_get_error
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *settings_parser_get_error(struct setting_parser_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings-parser.c:176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - info
    - key
    argTypes:
    - struct setting_parser_info*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 180
    functionName: setting_define_find
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct setting_define
    signature: 'struct setting_define *

      setting_define_find(const struct setting_parser_info *info, const char *key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_get_bool
      Src: /src/dovecot/src/lib-settings/settings-parser.c:187,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - value
    - result_r
    argTypes:
    - struct setting_parser_context*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 190
    functionName: get_bool
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 1
    functionsReached:
    - settings_parser_set_error
    - str_parse_get_bool
    linkageType: ''
    returnType: int
    signature: int get_bool(struct setting_parser_context *ctx, const char *value,
      bool *result_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib-settings/settings-parser.c:196,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:197,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:197,1
    - Dst: str_num_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - value
    - result_r
    argTypes:
    - struct setting_parser_context*
    - char*
    - uintmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 203
    functionName: get_uintmax
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 2
    functionsReached:
    - str_to_uintmax
    - settings_parser_set_error
    - t_strdup_printf
    - str_num_error
    linkageType: ''
    returnType: int
    signature: "int get_uintmax(struct setting_parser_context *ctx, const char *value,\n\t
      \   uintmax_t *result_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_value_is_unlimited
      Src: /src/dovecot/src/lib-settings/settings-parser.c:209,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-settings/settings-parser.c:213,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:214,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:214,1
    - Dst: str_num_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - value
    - result_r
    argTypes:
    - struct setting_parser_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 220
    functionName: get_uint
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 2
    functionsReached:
    - settings_parser_set_error
    - str_num_error
    - t_strdup_printf
    - settings_value_is_unlimited
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int get_uint(struct setting_parser_context *ctx, const char *value,\n\t
      unsigned int *result_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_uint
      Src: /src/dovecot/src/lib-settings/settings-parser.c:229,1
    - Dst: str_to_ullong_oct
      Src: /src/dovecot/src/lib-settings/settings-parser.c:231,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:232,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-settings/settings-parser.c:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - value
    - result_r
    argTypes:
    - struct setting_parser_context*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 238
    functionName: get_octal
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - settings_parser_set_error
    - t_strconcat
    - get_uint
    - str_to_ullong_oct
    linkageType: ''
    returnType: int
    signature: "int get_octal(struct setting_parser_context *ctx, const char *value,\n\t
      \ unsigned int *result_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:246,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings-parser.c:248,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:251,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-settings/settings-parser.c:252,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-settings/settings-parser.c:256,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:263,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 4
    argNames:
    - ctx
    - value
    - result_r
    - allowed_values
    argTypes:
    - struct setting_parser_context*
    - char*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 265
    functionName: get_enum
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - p_strdup
    - settings_parser_set_error
    - strncmp
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int get_enum(struct setting_parser_context *ctx, const char *value,\n\t\t
      \   char **result_r, const char *allowed_values)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:272,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:275,1
    - Dst: settings_parse_read_file
      Src: /src/dovecot/src/lib-settings/settings-parser.c:280,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:282,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - dup_value
    - value
    argTypes:
    - struct setting_parser_context*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 286
    functionName: get_file
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - settings_parse_read_file
    - strchr
    - p_strdup
    - settings_parser_set_error
    linkageType: ''
    returnType: int
    signature: int get_file(struct setting_parser_context *ctx, bool dup_value, const
      char **value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_str2port_zero
      Src: /src/dovecot/src/lib-settings/settings-parser.c:292,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:293,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - value
    - result_r
    argTypes:
    - struct setting_parser_context*
    - char*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 298
    functionName: get_in_port_zero
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - net_str2port_zero
    - settings_parser_set_error
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int get_in_port_zero(struct setting_parser_context *ctx, const char
      *value,\n\t in_port_t *result_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib-settings/settings-parser.c:308,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:309,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-settings/settings-parser.c:312,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:313,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-settings/settings-parser.c:314,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings-parser.c:317,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings-parser.c:318,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-settings/settings-parser.c:319,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings-parser.c:321,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings-parser.c:322,1
    - Dst: read_full
      Src: /src/dovecot/src/lib-settings/settings-parser.c:325,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-settings/settings-parser.c:327,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:329,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:333,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:337,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:338,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 7
    argNames:
    - path
    - value_path
    - pool
    - st_r
    - prefix
    - output_r
    - error_r
    argTypes:
    - char*
    - char*
    - pool_t
    - struct stat*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 348
    functionName: settings_parse_read_file
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 2
    functionsReached:
    - memcpy
    - read_full
    - i_close_fd
    - strlen
    - open
    - t_strdup_printf
    - memchr
    - fstat
    - p_malloc
    linkageType: ''
    returnType: int
    signature: "int settings_parse_read_file(const char *path, const char *value_path,\n\t\t\t
      \    pool_t pool, struct stat *st_r,\n\t\t\t     const char *prefix, const char
      **output_r,\n\t\t\t     const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings-parser.c:361,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-settings/settings-parser.c:362,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:367,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings-parser.c:371,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-settings/settings-parser.c:372,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-settings/settings-parser.c:376,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/settings-parser.c:380,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:381,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings-parser.c:383,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-settings/settings-parser.c:384,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-settings/settings-parser.c:387,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-settings/settings-parser.c:389,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-settings/settings-parser.c:390,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:395,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings-parser.c:396,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings-parser.c:397,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 5
    argNames:
    - ctx
    - array
    - key
    - value
    - error_r
    argTypes:
    - struct setting_parser_context*
    - ARRAY_TYPE*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 399
    functionName: settings_parse_strlist
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - p_strdup
    - array_idx_set
    - p_array_init
    - array_push_back
    - array_get
    - t_strdup_printf
    - settings_section_unescape
    - array_clear
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int settings_parse_strlist(struct setting_parser_context *ctx,\n\t\t
      \      ARRAY_TYPE(const_string) *array,\n\t\t       const char *key, const char
      *value, const char **error_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-settings/settings-parser.c:405,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-settings/settings-parser.c:413,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:430,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-settings/settings-parser.c:434,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:435,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/settings-parser.c:436,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:436,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings-parser.c:437,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-settings/settings-parser.c:438,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:457,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-settings/settings-parser.c:465,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:466,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/settings-parser.c:466,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:466,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings-parser.c:467,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 58
    argCount: 4
    argNames:
    - value
    - pool
    - dest
    - error_r
    argTypes:
    - char*
    - pool_t
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 470
    functionName: settings_parse_boollist_string
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 2
    functionsReached:
    - str_c
    - p_strdup
    - t_str_new
    - str_append_c
    - str_len
    - array_push_back
    - settings_section_unescape
    - str_truncate
    linkageType: ''
    returnType: int
    signature: "int settings_parse_boollist_string(const char *value, pool_t pool,\n\t\t\t\t
      \  ARRAY_TYPE(const_string) *dest,\n\t\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-settings/settings-parser.c:477,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-settings/settings-parser.c:478,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings-parser.c:479,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings-parser.c:481,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 488
    functionName: settings_boollist_get
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 8
    functionsReached:
    - array_get
    - i_assert
    - array_not_empty
    linkageType: ''
    returnType: char
    signature: char *const *settings_boollist_get(const ARRAY_TYPE(const_string) *array)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:501,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings-parser.c:503,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-settings/settings-parser.c:504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - value
    - path_pool
    - file_r
    argTypes:
    - char*
    - pool_t
    - struct settings_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 506
    functionName: settings_file_get
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 3
    functionsReached:
    - i_panic
    - strchr
    - p_strdup_until
    linkageType: ''
    returnType: void
    signature: "void settings_file_get(const char *value, pool_t path_pool,\n\t\t
      \      struct settings_file *file_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:511,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-settings/settings-parser.c:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 515
    functionName: settings_file_has_path
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 1
    functionsReached:
    - i_panic
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool settings_file_has_path(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings-parser.c:521,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings-parser.c:522,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-settings/settings-parser.c:524,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings-parser.c:525,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-settings/settings-parser.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pool
    - file
    argTypes:
    - pool_t
    - struct settings_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 529
    functionName: settings_file_get_value
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlen
    - p_malloc
    linkageType: ''
    returnType: char
    signature: "char *settings_file_get_value(pool_t pool,\n\t\t\t\t    const struct
      settings_file *file)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-settings/settings-parser.c:550,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings-parser.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - array
    argTypes:
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 553
    functionName: settings_boollist_is_stopped
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 1
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool settings_boollist_is_stopped(const ARRAY_TYPE(const_string) *array)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings-parser.c:562,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-settings/settings-parser.c:563,1
    - Dst: settings_boollist_is_stopped
      Src: /src/dovecot/src/lib-settings/settings-parser.c:567,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:571,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-settings/settings-parser.c:574,1
    - Dst: settings_parse_boollist_string
      Src: /src/dovecot/src/lib-settings/settings-parser.c:575,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:577,1
    - Dst: settings_boollist_finish
      Src: /src/dovecot/src/lib-settings/settings-parser.c:581,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/lib-settings/settings-parser.c:584,1
    - Dst: get_bool
      Src: /src/dovecot/src/lib-settings/settings-parser.c:587,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-settings/settings-parser.c:590,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:593,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-settings/settings-parser.c:594,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-settings/settings-parser.c:599,1
    - Dst: array_ptr_to_idx
      Src: /src/dovecot/src/lib-settings/settings-parser.c:599,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:601,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-settings/settings-parser.c:604,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-settings/settings-parser.c:605,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-settings/settings-parser.c:607,1
    - Dst: settings_boollist_finish
      Src: /src/dovecot/src/lib-settings/settings-parser.c:612,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 4
    argNames:
    - ctx
    - array
    - key
    - value
    argTypes:
    - struct setting_parser_context*
    - ARRAY_TYPE*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 555
    functionDepth: 3
    functionLinenumber: 555
    functionLinenumberEnd: 614
    functionName: settings_parse_boollist
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached:
    - array_delete
    - settings_parse_boollist_string
    - settings_parser_set_error
    - p_strdup
    - strrchr
    - p_array_init
    - settings_boollist_is_stopped
    - array_lsearch
    - array_push_back
    - settings_boollist_finish
    - array_append_space
    - settings_section_unescape
    - array_ptr_to_idx
    - get_bool
    - array_clear
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int settings_parse_boollist(struct setting_parser_context *ctx,\n\t\t\tARRAY_TYPE(const_string)
      *array,\n\t\t\tconst char *key, const char *value)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-settings/settings-parser.c:631,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings-parser.c:634,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings-parser.c:638,1
    - Dst: get_bool
      Src: /src/dovecot/src/lib-settings/settings-parser.c:641,1
    - Dst: get_uintmax
      Src: /src/dovecot/src/lib-settings/settings-parser.c:645,1
    - Dst: get_uint
      Src: /src/dovecot/src/lib-settings/settings-parser.c:649,1
    - Dst: get_octal
      Src: /src/dovecot/src/lib-settings/settings-parser.c:653,1
    - Dst: settings_value_is_unlimited
      Src: /src/dovecot/src/lib-settings/settings-parser.c:657,1
    - Dst: str_parse_get_interval
      Src: /src/dovecot/src/lib-settings/settings-parser.c:661,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:662,1
    - Dst: settings_value_is_unlimited
      Src: /src/dovecot/src/lib-settings/settings-parser.c:667,1
    - Dst: str_parse_get_interval_msecs
      Src: /src/dovecot/src/lib-settings/settings-parser.c:671,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:672,1
    - Dst: settings_value_is_unlimited
      Src: /src/dovecot/src/lib-settings/settings-parser.c:677,1
    - Dst: str_parse_get_size
      Src: /src/dovecot/src/lib-settings/settings-parser.c:681,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:682,1
    - Dst: get_in_port_zero
      Src: /src/dovecot/src/lib-settings/settings-parser.c:687,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib-settings/settings-parser.c:692,1
    - Dst: uni_utf8_to_nfc
      Src: /src/dovecot/src/lib-settings/settings-parser.c:694,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings-parser.c:694,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:695,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-settings/settings-parser.c:702,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-settings/settings-parser.c:707,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:708,1
    - Dst: t_var_expand
      Src: /src/dovecot/src/lib-settings/settings-parser.c:709,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:710,1
    - Dst: get_file
      Src: /src/dovecot/src/lib-settings/settings-parser.c:715,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-settings/settings-parser.c:727,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-settings/settings-parser.c:728,1
    - Dst: get_enum
      Src: /src/dovecot/src/lib-settings/settings-parser.c:729,1
    - Dst: settings_parse_strlist
      Src: /src/dovecot/src/lib-settings/settings-parser.c:735,1
    - Dst: settings_parser_set_error
      Src: /src/dovecot/src/lib-settings/settings-parser.c:738,1
    - Dst: settings_parse_boollist
      Src: /src/dovecot/src/lib-settings/settings-parser.c:745,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 105
    argCount: 5
    argNames:
    - ctx
    - def
    - key
    - value
    - dup_value
    argTypes:
    - struct setting_parser_context*
    - struct setting_define*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 616
    functionDepth: 4
    functionLinenumber: 616
    functionLinenumberEnd: 746
    functionName: settings_parse
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 1
    functionsReached:
    - str_parse_get_size
    - p_strdup
    - settings_parser_set_error
    - t_var_expand
    - strlen
    - get_enum
    - settings_value_is_unlimited
    - t_strcut
    - CONST_PTR_OFFSET
    - get_uint
    - PTR_OFFSET
    - settings_parse_boollist
    - get_octal
    - get_uintmax
    - str_parse_get_interval
    - HAS_ANY_BITS
    - get_in_port_zero
    - str_parse_get_interval_msecs
    - settings_parse_strlist
    - i_assert
    - i_free
    - get_file
    - get_bool
    - uni_utf8_to_nfc
    - strstr
    linkageType: ''
    returnType: int
    signature: "int settings_parse(struct setting_parser_context *ctx,\n\t       const
      struct setting_define *def,\n\t       const char *key, const char *value, bool
      dup_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1170
    functionDepth: 0
    functionLinenumber: 1170
    functionLinenumberEnd: 1172
    functionName: CHAR_NEED_ESCAPE
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHAR_NEED_ESCAPE(c)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1214,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1218,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1218,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1219,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1223,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1226,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1229,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1232,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1235,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1242,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1243,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1247,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1249,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1250,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1252,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1255,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-settings/settings-parser.c:1256,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1212
    functionDepth: 1
    functionLinenumber: 1212
    functionLinenumberEnd: 1257
    functionName: settings_section_unescape
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 6
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - str_append_c
    - strlen
    - str_append
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char *settings_section_unescape(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - binary
    argTypes:
    - enum settings_binary
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1261
    functionDepth: 0
    functionLinenumber: 1261
    functionLinenumberEnd: 1264
    functionName: settings_set_config_binary
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void settings_set_config_binary(enum settings_binary binary)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1266
    functionDepth: 0
    functionLinenumber: 1266
    functionLinenumberEnd: 1269
    functionName: settings_get_config_binary
    functionSourceFile: /src/dovecot/src/lib-settings/settings-parser.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum settings_binary
    signature: enum settings_binary settings_get_config_binary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-dict.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: fs_dict_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_dict_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-dict.c:81,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-dict.c:83,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-dict.c:85,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-dict.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - str
    - encoding_r
    - error_r
    argTypes:
    - char*
    - enum fs_dict_value_encoding*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 92
    functionName: fs_dict_value_encoding_parse
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int fs_dict_value_encoding_parse(const char *str,\n\t\t\t     enum
      fs_dict_value_encoding *encoding_r,\n\t\t\t     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-dict.c:98,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-fs/fs-dict.c:102,1
    - Dst: fs_dict_value_encoding_parse
      Src: /src/dovecot/src/lib-fs/fs-dict.c:105,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-dict.c:107,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-fs/fs-dict.c:111,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-fs/fs-dict.c:112,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/lib-fs/fs-dict.c:113,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-fs/fs-dict.c:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - _fs
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 118
    functionName: fs_dict_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - event_create
    - container_of
    - fs_dict_value_encoding_parse
    - event_unref
    - settings_event_add_filter_name
    - settings_free
    - settings_get
    - dict_init_auto
    linkageType: ''
    returnType: int
    signature: "int fs_dict_init(struct fs *_fs, const struct fs_parameters *params
      ATTR_UNUSED,\n\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_deinit
      Src: /src/dovecot/src/lib-fs/fs-dict.c:124,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-dict.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: fs_dict_free
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - i_free
    - dict_deinit
    linkageType: ''
    returnType: void
    signature: void fs_dict_free(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: fs_dict_get_properties
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum fs_properties
    signature: enum fs_properties fs_dict_get_properties(struct fs *fs ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-fs/fs-dict.c:138,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-fs/fs-dict.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 142
    functionName: fs_dict_file_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_dict_file_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-dict.c:152,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-dict.c:153,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-fs/fs-dict.c:156,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-fs/fs-dict.c:158,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-dict.c:159,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-fs/fs-dict.c:160,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-fs/fs-dict.c:163,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-fs/fs-dict.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - ATTR_UNUSED
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 165
    functionName: fs_dict_file_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - guid_128_to_string
    - guid_128_generate
    - p_strconcat
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void fs_dict_file_init(struct fs_file *_file, const char *path,\n\t\t
      \ enum fs_open_mode mode, enum fs_open_flags flags ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-dict.c:171,1
    - Dst: fs_file_free
      Src: /src/dovecot/src/lib-fs/fs-dict.c:173,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-fs/fs-dict.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 175
    functionName: fs_dict_file_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - fs_file_free
    - i_assert
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void fs_dict_file_deinit(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct fs_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 182
    functionName: fs_dict_prefetch
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool fs_dict_prefetch(struct fs_file *_file ATTR_UNUSED,\n\t\t\t     uoff_t
      length ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dict_lookup
      Src: /src/dovecot/src/lib-fs/fs-dict.c:196,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-dict.c:200,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-dict.c:204,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dict_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 208
    functionName: fs_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - fs_set_error
    - dict_lookup
    linkageType: ''
    returnType: int
    signature: int fs_dict_lookup(struct dict_fs_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_dict_lookup
      Src: /src/dovecot/src/lib-fs/fs-dict.c:216,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib-fs/fs-dict.c:217,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-dict.c:217,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-fs/fs-dict.c:219,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-fs/fs-dict.c:219,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-fs/fs-dict.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _file
    - max_buffer_size ATTR_UNUSED
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 222
    functionName: fs_dict_read_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - fs_dict_lookup
    - strlen
    - i_stream_set_name
    - i_stream_create_error_str
    - i_stream_create_from_data
    - fs_file_last_error
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_dict_read_stream(struct fs_file *_file, size_t max_buffer_size ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-dict.c:228,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-fs/fs-dict.c:230,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-fs/fs-dict.c:231,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-fs/fs-dict.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 233
    functionName: fs_dict_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - o_stream_set_name
    - buffer_create_dynamic
    - i_assert
    - o_stream_create_buffer
    linkageType: ''
    returnType: void
    signature: void fs_dict_write_stream(struct fs_file *_file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_metadata_find
      Src: /src/dovecot/src/lib-fs/fs-dict.c:240,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-fs/fs-dict.c:244,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-fs/fs-dict.c:245,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-fs/fs-dict.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dict_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 247
    functionName: fs_dict_write_rename_if_needed
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - fs_metadata_find
    - p_strconcat
    - p_strdup
    linkageType: ''
    returnType: void
    signature: void fs_dict_write_rename_if_needed(struct dict_fs_file *file)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-fs/fs-dict.c:256,1
    - Dst: fs_dict_write_rename_if_needed
      Src: /src/dovecot/src/lib-fs/fs-dict.c:263,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-fs/fs-dict.c:264,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-fs/fs-dict.c:267,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-fs/fs-dict.c:267,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-fs/fs-dict.c:270,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-fs/fs-dict.c:271,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-fs/fs-dict.c:273,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-fs/fs-dict.c:273,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-fs/fs-dict.c:278,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-fs/fs-dict.c:279,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-fs/fs-dict.c:280,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-fs/fs-dict.c:282,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-fs/fs-dict.c:282,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-fs/fs-dict.c:285,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-dict.c:286,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 291
    functionName: fs_dict_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - MAX_BASE64_ENCODED_SIZE
    - fs_set_error
    - dict_transaction_commit
    - base64_encode
    - fs_dict_write_rename_if_needed
    - dict_set
    - dict_transaction_begin
    - binary_to_hex_append
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: int fs_dict_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-fs/fs-dict.c:297,1
    - Dst: fs_dict_lookup
      Src: /src/dovecot/src/lib-fs/fs-dict.c:299,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-fs/fs-dict.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _file
    - st_r
    argTypes:
    - struct fs_file*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 303
    functionName: fs_dict_stat
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - i_zero
    - fs_dict_lookup
    - strlen
    linkageType: ''
    returnType: int
    signature: int fs_dict_stat(struct fs_file *_file, struct stat *st_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-fs/fs-dict.c:315,1
    - Dst: dict_unset
      Src: /src/dovecot/src/lib-fs/fs-dict.c:316,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-fs/fs-dict.c:317,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-dict.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 323
    functionName: fs_dict_delete
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - dict_transaction_commit
    - dict_transaction_begin
    - dict_unset
    - fs_set_error
    linkageType: ''
    returnType: int
    signature: int fs_dict_delete(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-dict.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 329
    functionName: fs_dict_iter_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_iter
    signature: struct fs_iter *fs_dict_iter_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-fs/fs-dict.c:339,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/lib-fs/fs-dict.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _iter
    - path
    - ATTR_UNUSED
    argTypes:
    - struct fs_iter*
    - char*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 345
    functionName: fs_dict_iter_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - dict_iterate_init
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void fs_dict_iter_init(struct fs_iter *_iter, const char *path,\n\t\t
      \ enum fs_iter_flags flags ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_iterate
      Src: /src/dovecot/src/lib-fs/fs-dict.c:352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 355
    functionName: fs_dict_iter_next
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - dict_iterate
    linkageType: ''
    returnType: char
    signature: char *fs_dict_iter_next(struct fs_iter *_iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/lib-fs/fs-dict.c:363,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-dict.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 368
    functionName: fs_dict_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-dict.c
    functionUses: 0
    functionsReached:
    - dict_iterate_deinit
    - fs_set_error
    linkageType: ''
    returnType: int
    signature: int fs_dict_iter_deinit(struct fs_iter *_iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:13,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:18,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:23,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:25,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:29,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - file
    - path
    - dir_r
    - hash_r
    argTypes:
    - struct fs_file*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 31
    functionName: fs_sis_path_parse
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-common.c
    functionUses: 0
    functionsReached:
    - t_strdup_until
    - strchr
    - strrchr
    - fs_set_error
    linkageType: ''
    returnType: int
    signature: "int fs_sis_path_parse(struct fs_file *file, const char *path,\n\t\t
      \     const char **dir_r, const char **hash_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_sis_path_parse
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:40,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:41,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:44,1
    - Dst: fs_file_init_with_event
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:45,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:48,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:50,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:51,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:52,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:53,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/fs-sis-common.c:56,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - sis_file
    - super_file
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 58
    functionName: fs_sis_try_unlink_hash_file
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-common.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_delete
    - t_strdup_printf
    - fs_file_init_with_event
    - e_error
    - fs_stat
    - CMP_DEV_T
    - fs_sis_path_parse
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: "void fs_sis_try_unlink_hash_file(struct fs_file *sis_file,\n\t\t\t\t
      struct fs_file *super_file)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:23,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:25,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 26
    functionName: o_stream_cmp_close
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-cmp.c
    functionUses: 0
    functionsReached:
    - o_stream_close
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void o_stream_cmp_close(struct iostream_private *stream,\n\t\t\t       bool
      close_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:35,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:36,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:37,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - input
    - data
    - size
    argTypes:
    - struct istream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 44
    functionName: stream_cmp_block
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-cmp.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - i_stream_read_bytes
    - memcmp
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: "bool stream_cmp_block(struct istream *input,\n\t\t      const unsigned
      char *data, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_cmp_block
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:56,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:64,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:65,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 71
    functionName: o_stream_cmp_sendv
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-cmp.c
    functionUses: 0
    functionsReached:
    - o_stream_sendv
    - o_stream_copy_error_from_parent
    - stream_cmp_block
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_cmp_sendv(struct ostream_private *stream,\n\t\t   const
      struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:78,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:83,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:85,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-fs/ostream-cmp.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - output
    - input
    argTypes:
    - struct ostream*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 87
    functionName: o_stream_create_cmp
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-cmp.c
    functionUses: 0
    functionsReached:
    - o_stream_create
    - i_stream_ref
    - i_new
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_cmp(struct ostream *output, struct istream *input)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _output
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 95
    functionName: o_stream_cmp_equals
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-cmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool o_stream_cmp_equals(struct ostream *_output)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:23,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:24,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:29,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:29,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:33,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:34,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:35,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:37,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:38,1
    - Dst: fs_ref
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:43,1
    - Dst: fs_unref
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:48,1
    - Dst: fs_get_parent
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:48,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:49,1
    - Dst: fs_get_driver
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:49,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:50,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:55,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:56,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:57,1
    - Dst: fs_exists
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:57,1
    - Dst: fs_read
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:58,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:59,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:60,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:60,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:61,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:62,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:64,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:67,1
    - Dst: fs_exists
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:68,1
    - Dst: fs_write
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:69,1
    - Dst: fs_exists
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:69,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:70,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:71,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:73,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:75,1
    - Dst: fs_exists
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:75,1
    - Dst: fs_read
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:78,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:79,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:80,1
    - Dst: fs_iter_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:82,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:84,1
    - Dst: fs_iter_next
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:85,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:87,1
    - Dst: fs_iter_next
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:87,1
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:88,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:89,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:92,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:94,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:96,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:96,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:97,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:98,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:100,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:101,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:102,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:103,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:105,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:106,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:106,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:106,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:107,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:109,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:110,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:111,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:112,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:114,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:115,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:116,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:118,1
    - Dst: fs_copy
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:119,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:119,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:119,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:120,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:121,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:123,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:124,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:125,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:126,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:128,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 16
    functionDepth: 4
    functionLinenumber: 16
    functionLinenumberEnd: 133
    functionName: test_fs_posix
    functionSourceFile: /src/dovecot/src/lib-fs/test-fs-posix.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_write_stream_finish
    - fs_read
    - fs_iter_next
    - fs_set_metadata
    - fs_stat
    - test_assert
    - fs_exists
    - fs_file_last_error
    - fs_write_stream
    - fs_unref
    - fs_deinit
    - test_end
    - fs_get_driver
    - test_dir_get
    - fs_write
    - i_zero
    - settings_simple_deinit
    - fs_iter_deinit
    - fs_iter_init
    - test_assert_strcmp
    - test_out_quiet
    - settings_simple_init
    - fs_ref
    - o_stream_nsend_str
    - strcmp
    - fs_file_init
    - fs_init_auto
    - fs_delete
    - fs_get_parent
    - fs_file_path
    - fs_copy
    - t_strconcat
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_fs_posix(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:142,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-fs/test-fs-posix.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 145
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-fs/test-fs-posix.c
    functionUses: 0
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:18,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 20
    functionName: i_stream_fs_file_close
    functionSourceFile: /src/dovecot/src/lib-fs/istream-fs-file.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void i_stream_fs_file_close(struct iostream_private *stream,\n\t\t\t\t
      \  bool close_parent ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:28,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:29,1
    - Dst: i_stream_init_parent
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:30,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:31,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:34,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 37
    functionName: i_stream_fs_file_read
    functionSourceFile: /src/dovecot/src/lib-fs/istream-fs-file.c
    functionUses: 0
    functionsReached:
    - i_stream_read_copy_from_parent
    - i_stream_get_max_buffer_size
    - i_stream_seek
    - i_stream_unref
    - fs_read_stream
    - i_stream_init_parent
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_fs_file_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:45,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:57,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:58,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/istream-fs-file.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - file
    - max_buffer_size
    argTypes:
    - struct fs_file**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 61
    functionName: i_stream_create_fs_file
    functionSourceFile: /src/dovecot/src/lib-fs/istream-fs-file.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_set_name
    - i_new
    - fs_file_path
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_fs_file(struct fs_file **file, size_t max_buffer_size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-posix.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: fs_posix_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_posix_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-posix.c:125,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-posix.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: fs_posix_settings_check
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool fs_posix_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:140,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:140,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-fs/fs-posix.c:141,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fs
    - params
    argTypes:
    - struct posix_fs*
    - struct fs_parameters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: fs_posix_init_common
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - strlen
    linkageType: ''
    returnType: void
    signature: "void fs_posix_init_common(struct posix_fs *fs,\n\t\t\t\t const struct
      fs_parameters *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:149,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-fs/fs-posix.c:151,1
    - Dst: fs_posix_init_common
      Src: /src/dovecot/src/lib-fs/fs-posix.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _fs
    - params
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 157
    functionName: fs_posix_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - fs_posix_init_common
    - settings_get
    - container_of
    linkageType: ''
    returnType: int
    signature: "int fs_posix_init(struct fs *_fs, const struct fs_parameters *params,\n\t
      \     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:161,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:163,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:164,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:165,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 167
    functionName: fs_posix_free
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_free
    - settings_free
    linkageType: ''
    returnType: void
    signature: void fs_posix_free(struct fs *_fs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 184
    functionName: fs_posix_get_properties
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: enum fs_properties
    signature: enum fs_properties fs_posix_get_properties(struct fs *_fs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:198,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:200,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-fs/fs-posix.c:204,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-fs/fs-posix.c:206,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-posix.c:207,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - file
    - path
    - mode_r
    argTypes:
    - struct posix_fs_file*
    - char*
    - mode_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 217
    functionName: fs_posix_get_mode
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - strcmp
    - fs_set_error_errno
    - strrchr
    - stat
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: int fs_posix_get_mode(struct posix_fs_file *file, const char *path,
      mode_t *mode_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-fs/fs-posix.c:224,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-fs/fs-posix.c:227,1
    - Dst: fs_posix_get_mode
      Src: /src/dovecot/src/lib-fs/fs-posix.c:229,1
    - Dst: mkdir_parents
      Src: /src/dovecot/src/lib-fs/fs-posix.c:236,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:241,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - file
    - path
    argTypes:
    - struct posix_fs_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 245
    functionName: fs_posix_mkdir_parents
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - fs_posix_get_mode
    - fs_set_error_errno
    - strrchr
    - mkdir_parents
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: int fs_posix_mkdir_parents(struct posix_fs_file *file, const char *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-fs/fs-posix.c:257,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-fs/fs-posix.c:258,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-posix.c:259,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-fs/fs-posix.c:260,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib-fs/fs-posix.c:262,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:271,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 22
    argCount: 2
    argNames:
    - file
    - path
    argTypes:
    - struct posix_fs_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 277
    functionName: fs_posix_rmdir_parents
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - strrchr
    - fs_set_error_errno
    - rmdir
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: int fs_posix_rmdir_parents(struct posix_fs_file *file, const char *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:281,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-fs/fs-posix.c:282,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-posix.c:288,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-fs/fs-posix.c:290,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-fs/fs-posix.c:291,1
    - Dst: fs_posix_get_mode
      Src: /src/dovecot/src/lib-fs/fs-posix.c:292,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-fs/fs-posix.c:292,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-fs/fs-posix.c:294,1
    - Dst: fs_posix_get_mode
      Src: /src/dovecot/src/lib-fs/fs-posix.c:296,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-fs/fs-posix.c:299,1
    - Dst: safe_mkstemp_hostpid
      Src: /src/dovecot/src/lib-fs/fs-posix.c:301,1
    - Dst: fs_posix_mkdir_parents
      Src: /src/dovecot/src/lib-fs/fs-posix.c:304,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-fs/fs-posix.c:304,1
    - Dst: safe_mkstemp_hostpid
      Src: /src/dovecot/src/lib-fs/fs-posix.c:306,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:310,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-fs/fs-posix.c:311,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:314,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-fs/fs-posix.c:314,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct posix_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 316
    functionName: fs_posix_create
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_assert
    - t_str_new
    - container_of
    - strrchr
    - fs_posix_get_mode
    - str_append_c
    - fs_posix_mkdir_parents
    - fs_set_error_errno
    - safe_mkstemp_hostpid
    - i_strdup
    - str_append
    - str_append_data
    linkageType: ''
    returnType: int
    signature: int fs_posix_create(struct posix_fs_file *file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-posix.c:322,1
    - Dst: open
      Src: /src/dovecot/src/lib-fs/fs-posix.c:326,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:328,1
    - Dst: open
      Src: /src/dovecot/src/lib-fs/fs-posix.c:332,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:334,1
    - Dst: fs_posix_create
      Src: /src/dovecot/src/lib-fs/fs-posix.c:341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct posix_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 318
    functionDepth: 4
    functionLinenumber: 318
    functionLinenumberEnd: 344
    functionName: fs_posix_open
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - open
    - i_assert
    - fs_set_error_errno
    - fs_posix_create
    linkageType: ''
    returnType: int
    signature: int fs_posix_open(struct posix_fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-posix.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 354
    functionName: fs_posix_file_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_posix_file_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:361,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:362,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-fs/fs-posix.c:364,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:369,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:373,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-fs/fs-posix.c:375,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-posix.c:376,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-fs/fs-posix.c:377,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:379,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 384
    functionName: fs_posix_file_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - strlen
    - guid_128_to_string
    - t_strndup
    - guid_128_generate
    - i_strdup
    - i_strconcat
    - i_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void fs_posix_file_init(struct fs_file *_file, const char *path,\n\t\t
      \  enum fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:389,1
    - Dst: close
      Src: /src/dovecot/src/lib-fs/fs-posix.c:392,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-posix.c:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 398
    functionName: fs_posix_file_close
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - e_error
    - container_of
    - close
    linkageType: ''
    returnType: void
    signature: void fs_posix_file_close(struct fs_file *_file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:403,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-posix.c:405,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-fs/fs-posix.c:417,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-posix.c:418,1
    - Dst: fs_file_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:424,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:425,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:426,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:427,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:428,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 429
    functionName: fs_posix_file_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - fs_file_free
    - unlink
    - e_error
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_posix_file_deinit(struct fs_file *_file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-posix.c:433,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-posix.c:434,1
    - Dst: fs_posix_open
      Src: /src/dovecot/src/lib-fs/fs-posix.c:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct posix_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 431
    functionDepth: 5
    functionLinenumber: 431
    functionLinenumberEnd: 441
    functionName: fs_posix_open_for_read
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - fs_posix_open
    - i_assert
    linkageType: ''
    returnType: int
    signature: int fs_posix_open_for_read(struct posix_fs_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:446,1
    - Dst: fs_posix_open_for_read
      Src: /src/dovecot/src/lib-fs/fs-posix.c:448,1
    - Dst: posix_fadvise
      Src: /src/dovecot/src/lib-fs/fs-posix.c:453,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-posix.c:454,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - _file
    - ATTR_UNUSED
    argTypes:
    - struct fs_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 443
    functionDepth: 6
    functionLinenumber: 443
    functionLinenumberEnd: 459
    functionName: fs_posix_prefetch
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - posix_fadvise
    - container_of
    - e_error
    - fs_posix_open_for_read
    linkageType: ''
    returnType: bool
    signature: bool fs_posix_prefetch(struct fs_file *_file, uoff_t length ATTR_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:464,1
    - Dst: fs_posix_open_for_read
      Src: /src/dovecot/src/lib-fs/fs-posix.c:467,1
    - Dst: lseek
      Src: /src/dovecot/src/lib-fs/fs-posix.c:472,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:473,1
    - Dst: read
      Src: /src/dovecot/src/lib-fs/fs-posix.c:480,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:482,1
    - Dst: fs_posix_file_close
      Src: /src/dovecot/src/lib-fs/fs-posix.c:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - _file
    - buf
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 461
    functionDepth: 6
    functionLinenumber: 461
    functionLinenumberEnd: 486
    functionName: fs_posix_read
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - lseek
    - container_of
    - fs_set_error_errno
    - fs_posix_file_close
    - read
    - fs_posix_open_for_read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fs_posix_read(struct fs_file *_file, void *buf, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:492,1
    - Dst: fs_posix_open_for_read
      Src: /src/dovecot/src/lib-fs/fs-posix.c:496,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib-fs/fs-posix.c:497,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-posix.c:497,1
    - Dst: dup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:498,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib-fs/fs-posix.c:499,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-fs/fs-posix.c:505,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-fs/fs-posix.c:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - _file
    - max_buffer_size
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 488
    functionDepth: 6
    functionLinenumber: 488
    functionLinenumberEnd: 509
    functionName: fs_posix_read_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - dup
    - i_stream_set_name
    - i_stream_create_error_str
    - fs_posix_open_for_read
    - i_stream_create_fd_autoclose
    - fs_file_last_error
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_posix_read_stream(struct fs_file *_file, size_t max_buffer_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:513,1
    - Dst: fs_metadata_find
      Src: /src/dovecot/src/lib-fs/fs-posix.c:516,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:520,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:521,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:523,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct posix_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 526
    functionName: fs_posix_write_rename_if_needed
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - fs_metadata_find
    - container_of
    - i_strdup
    - i_strconcat
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_posix_write_rename_if_needed(struct posix_fs_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: link
      Src: /src/dovecot/src/lib-fs/fs-posix.c:533,1
    - Dst: fs_posix_mkdir_parents
      Src: /src/dovecot/src/lib-fs/fs-posix.c:536,1
    - Dst: link
      Src: /src/dovecot/src/lib-fs/fs-posix.c:538,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:542,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct posix_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 546
    functionName: fs_posix_write_finish_link
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - fs_set_error_errno
    - link
    - fs_posix_mkdir_parents
    linkageType: ''
    returnType: int
    signature: int fs_posix_write_finish_link(struct posix_fs_file *file)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:550,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-fs/fs-posix.c:556,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:557,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-fs/fs-posix.c:569,1
    - Dst: utimes
      Src: /src/dovecot/src/lib-fs/fs-posix.c:571,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:572,1
    - Dst: fs_posix_write_rename_if_needed
      Src: /src/dovecot/src/lib-fs/fs-posix.c:579,1
    - Dst: fs_posix_write_finish_link
      Src: /src/dovecot/src/lib-fs/fs-posix.c:583,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-fs/fs-posix.c:585,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:586,1
    - Dst: fs_posix_file_close
      Src: /src/dovecot/src/lib-fs/fs-posix.c:592,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-fs/fs-posix.c:593,1
    - Dst: rename
      Src: /src/dovecot/src/lib-fs/fs-posix.c:598,1
    - Dst: fs_posix_mkdir_parents
      Src: /src/dovecot/src/lib-fs/fs-posix.c:601,1
    - Dst: rename
      Src: /src/dovecot/src/lib-fs/fs-posix.c:603,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:607,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-fs/fs-posix.c:614,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-fs/fs-posix.c:616,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct posix_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 548
    functionDepth: 4
    functionLinenumber: 548
    functionLinenumberEnd: 621
    functionName: fs_posix_write_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - rename
    - container_of
    - utimes
    - fs_set_error_errno
    - fdatasync
    - fs_posix_mkdir_parents
    - i_unreached
    - unlink
    - i_free_and_null
    - fs_posix_file_close
    - fs_posix_write_finish_link
    - fs_posix_write_rename_if_needed
    linkageType: ''
    returnType: int
    signature: int fs_posix_write_finish(struct posix_fs_file *file)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:626,1
    - Dst: fs_posix_open
      Src: /src/dovecot/src/lib-fs/fs-posix.c:630,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-posix.c:632,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-fs/fs-posix.c:636,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:637,1
    - Dst: fs_posix_write_finish
      Src: /src/dovecot/src/lib-fs/fs-posix.c:641,1
    - Dst: write
      Src: /src/dovecot/src/lib-fs/fs-posix.c:645,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:647,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-posix.c:652,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - _file
    - data
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 623
    functionDepth: 5
    functionLinenumber: 623
    functionLinenumberEnd: 658
    functionName: fs_posix_write
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - fs_set_error_errno
    - fs_set_error
    - write_full
    - write
    - fs_posix_open
    - fs_posix_write_finish
    - i_assert
    linkageType: ''
    returnType: int
    signature: int fs_posix_write(struct fs_file *_file, const void *data, size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:663,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-posix.c:665,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-fs/fs-posix.c:668,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-fs/fs-posix.c:669,1
    - Dst: fs_posix_open
      Src: /src/dovecot/src/lib-fs/fs-posix.c:670,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/lib-fs/fs-posix.c:671,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-posix.c:672,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-posix.c:674,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-fs/fs-posix.c:675,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-fs/fs-posix.c:678,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 660
    functionDepth: 5
    functionLinenumber: 660
    functionLinenumberEnd: 679
    functionName: fs_posix_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_create_error_str
    - o_stream_set_name
    - buffer_create_dynamic
    - fs_posix_open
    - o_stream_create_fd_file
    - i_assert
    - o_stream_create_buffer
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void fs_posix_write_stream(struct fs_file *_file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:684,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-fs/fs-posix.c:687,1
    - Dst: fs_posix_write
      Src: /src/dovecot/src/lib-fs/fs-posix.c:692,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:695,1
    - Dst: fs_posix_write_finish
      Src: /src/dovecot/src/lib-fs/fs-posix.c:701,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-fs/fs-posix.c:704,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 681
    functionDepth: 6
    functionLinenumber: 681
    functionLinenumberEnd: 707
    functionName: fs_posix_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_unreached
    - fs_posix_write_finish
    - buffer_free
    - fs_posix_write
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: int fs_posix_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:713,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:714,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-fs/fs-posix.c:719,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-posix.c:725,1
    - Dst: file_try_lock
      Src: /src/dovecot/src/lib-fs/fs-posix.c:734,1
    - Dst: file_wait_lock
      Src: /src/dovecot/src/lib-fs/fs-posix.c:738,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:743,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-fs/fs-posix.c:750,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-fs/fs-posix.c:755,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:760,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-posix.c:769,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 3
    argNames:
    - _file
    - secs
    - lock_r
    argTypes:
    - struct fs_file*
    - unsigned int
    - struct fs_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 773
    functionName: fs_posix_lock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - fs_set_error_errno
    - fs_set_error
    - file_dotlock_create
    - file_wait_lock
    - file_try_lock
    - i_new
    linkageType: ''
    returnType: int
    signature: int fs_posix_lock(struct fs_file *_file, unsigned int secs, struct
      fs_lock **lock_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:778,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-fs/fs-posix.c:781,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-fs/fs-posix.c:783,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:784,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - _lock
    argTypes:
    - struct fs_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 785
    functionName: fs_posix_unlock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - file_unlock
    - container_of
    - file_dotlock_delete
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_posix_unlock(struct fs_lock *_lock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:790,1
    - Dst: stat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:793,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:795,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 802
    functionName: fs_posix_exists
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - stat
    - fs_set_error_errno
    linkageType: ''
    returnType: int
    signature: int fs_posix_exists(struct fs_file *_file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:807,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:813,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:814,1
    - Dst: stat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:819,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:820,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - _file
    - st_r
    argTypes:
    - struct fs_file*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 826
    functionName: fs_posix_stat
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - stat
    - container_of
    - fstat
    - fs_set_error_errno
    linkageType: ''
    returnType: int
    signature: int fs_posix_stat(struct fs_file *_file, struct stat *st_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:831,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:833,1
    - Dst: fs_posix_write_rename_if_needed
      Src: /src/dovecot/src/lib-fs/fs-posix.c:837,1
    - Dst: link
      Src: /src/dovecot/src/lib-fs/fs-posix.c:838,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-fs/fs-posix.c:842,1
    - Dst: link
      Src: /src/dovecot/src/lib-fs/fs-posix.c:843,1
    - Dst: fs_posix_mkdir_parents
      Src: /src/dovecot/src/lib-fs/fs-posix.c:847,1
    - Dst: link
      Src: /src/dovecot/src/lib-fs/fs-posix.c:849,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:853,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - _src
    - _dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 828
    functionDepth: 3
    functionLinenumber: 828
    functionLinenumberEnd: 858
    functionName: fs_posix_copy
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - fs_set_error_errno
    - fs_posix_mkdir_parents
    - i_unlink_if_exists
    - link
    - fs_posix_write_rename_if_needed
    linkageType: ''
    returnType: int
    signature: int fs_posix_copy(struct fs_file *_src, struct fs_file *_dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:863,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:865,1
    - Dst: rename
      Src: /src/dovecot/src/lib-fs/fs-posix.c:869,1
    - Dst: fs_posix_mkdir_parents
      Src: /src/dovecot/src/lib-fs/fs-posix.c:872,1
    - Dst: rename
      Src: /src/dovecot/src/lib-fs/fs-posix.c:874,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:878,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - _src
    - _dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 860
    functionDepth: 3
    functionLinenumber: 860
    functionLinenumberEnd: 883
    functionName: fs_posix_rename
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - rename
    - container_of
    - fs_set_error_errno
    - fs_posix_mkdir_parents
    linkageType: ''
    returnType: int
    signature: int fs_posix_rename(struct fs_file *_src, struct fs_file *_dest)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:888,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-fs/fs-posix.c:890,1
    - Dst: UNLINK_EISDIR
      Src: /src/dovecot/src/lib-fs/fs-posix.c:891,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:892,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib-fs/fs-posix.c:898,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:899,1
    - Dst: fs_posix_rmdir_parents
      Src: /src/dovecot/src/lib-fs/fs-posix.c:904,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 906
    functionName: fs_posix_delete
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - fs_set_error_errno
    - fs_posix_rmdir_parents
    - rmdir
    - unlink
    - UNLINK_EISDIR
    linkageType: ''
    returnType: int
    signature: int fs_posix_delete(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-posix.c:910,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 908
    functionDepth: 0
    functionLinenumber: 908
    functionLinenumberEnd: 912
    functionName: fs_posix_iter_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_iter
    signature: struct fs_iter *fs_posix_iter_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:919,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:920,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:922,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:924,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-posix.c:925,1
    - Dst: opendir
      Src: /src/dovecot/src/lib-fs/fs-posix.c:927,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:930,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - _iter
    - path
    - ATTR_UNUSED
    argTypes:
    - struct fs_iter*
    - char*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 933
    functionName: fs_posix_iter_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - container_of
    - opendir
    - fs_set_error_errno
    - i_strconcat
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void fs_posix_iter_init(struct fs_iter *_iter, const char *path,\n\t\t
      \  enum fs_iter_flags flags ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-posix.c:940,1
    - Dst: stat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:943,1
    - Dst: lstat
      Src: /src/dovecot/src/lib-fs/fs-posix.c:944,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-fs/fs-posix.c:946,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - iter
    - fname
    argTypes:
    - struct posix_fs_iter*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 950
    functionName: fs_posix_iter_want
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - stat
    - t_strdup_printf
    - S_ISDIR
    - lstat
    linkageType: ''
    returnType: bool
    signature: bool fs_posix_iter_want(struct posix_fs_iter *iter, const char *fname)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:957,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:958,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-fs/fs-posix.c:965,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-posix.c:966,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-posix.c:967,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-fs/fs-posix.c:969,1
    - Dst: fs_posix_iter_want
      Src: /src/dovecot/src/lib-fs/fs-posix.c:975,1
    - Dst: fs_posix_iter_want
      Src: /src/dovecot/src/lib-fs/fs-posix.c:988,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:994,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 31
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 954
    functionDepth: 2
    functionLinenumber: 954
    functionLinenumberEnd: 998
    functionName: fs_posix_iter_next
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - strcmp
    - readdir
    - container_of
    - fs_set_error_errno
    - fs_posix_iter_want
    - strncmp
    linkageType: ''
    returnType: char
    signature: char *fs_posix_iter_next(struct fs_iter *_iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-fs/fs-posix.c:1003,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-fs/fs-posix.c:1006,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-posix.c:1008,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-posix.c:1015,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1000
    functionDepth: 1
    functionLinenumber: 1000
    functionLinenumberEnd: 1017
    functionName: fs_posix_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-posix.c
    functionUses: 0
    functionsReached:
    - closedir
    - container_of
    - i_free
    - fs_set_error_errno
    linkageType: ''
    returnType: int
    signature: int fs_posix_iter_deinit(struct fs_iter *_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_get_properties
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: fs_wrapper_get_properties
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_get_properties
    linkageType: ''
    returnType: enum fs_properties
    signature: enum fs_properties fs_wrapper_get_properties(struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_close
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 20
    functionName: fs_wrapper_file_close
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_file_close
    linkageType: ''
    returnType: void
    signature: void fs_wrapper_file_close(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: fs_wrapper_file_get_path
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_file_path
    linkageType: ''
    returnType: char
    signature: char *fs_wrapper_file_get_path(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_set_async_callback
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - callback
    - context
    argTypes:
    - struct fs_file*
    - fs_file_async_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 32
    functionName: fs_wrapper_set_async_callback
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_file_set_async_callback
    linkageType: ''
    returnType: void
    signature: "void fs_wrapper_set_async_callback(struct fs_file *file,\n\t\t\t\t
      \  fs_file_async_callback_t *callback,\n\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_wait_async
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: fs_wrapper_wait_async
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_wait_async
    linkageType: ''
    returnType: void
    signature: void fs_wrapper_wait_async(struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - key
    - value
    argTypes:
    - struct fs_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: fs_wrapper_set_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_set_metadata
    linkageType: ''
    returnType: void
    signature: "void fs_wrapper_set_metadata(struct fs_file *file, const char *key,\n\t\t\t
      \    const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_get_metadata_full
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - flags
    - metadata_r
    argTypes:
    - struct fs_file*
    - enum fs_get_metadata_flags
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: fs_wrapper_get_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_get_metadata_full
    linkageType: ''
    returnType: int
    signature: "int fs_wrapper_get_metadata(struct fs_file *file,\n\t\t\t    enum
      fs_get_metadata_flags flags,\n\t\t\t    const ARRAY_TYPE(fs_metadata) **metadata_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_prefetch
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - length
    argTypes:
    - struct fs_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: fs_wrapper_prefetch
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_prefetch
    linkageType: ''
    returnType: bool
    signature: bool fs_wrapper_prefetch(struct fs_file *file, uoff_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_read
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - buf
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: fs_wrapper_read
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fs_wrapper_read(struct fs_file *file, void *buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - max_buffer_size
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: fs_wrapper_read_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_read_stream
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_wrapper_read_stream(struct fs_file *file, size_t max_buffer_size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_write
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - data
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: fs_wrapper_write
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_write
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_write(struct fs_file *file, const void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:75,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: fs_wrapper_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_write_stream
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_wrapper_write_stream(struct fs_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:83,1
    - Dst: fs_write_stream_abort_parent
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:86,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: fs_wrapper_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_write_stream_finish_async
    - fs_write_stream_abort_parent
    - fs_write_stream_finish
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_write_stream_finish(struct fs_file *file, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_lock
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - secs
    - lock_r
    argTypes:
    - struct fs_file*
    - unsigned int
    - struct fs_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: fs_wrapper_lock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_lock
    linkageType: ''
    returnType: int
    signature: "int fs_wrapper_lock(struct fs_file *file, unsigned int secs,\n\t\t
      \   struct fs_lock **lock_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct fs_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: fs_wrapper_unlock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void fs_wrapper_unlock(struct fs_lock *_lock ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_exists
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: fs_wrapper_exists
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_exists
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_exists(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - st_r
    argTypes:
    - struct fs_file*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: fs_wrapper_stat
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_stat
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_stat(struct fs_file *file, struct stat *st_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_get_nlinks
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - nlinks_r
    argTypes:
    - struct fs_file*
    - nlink_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: fs_wrapper_get_nlinks
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_get_nlinks
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_get_nlinks(struct fs_file *file, nlink_t *nlinks_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_copy
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:121,1
    - Dst: fs_copy_finish_async
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 124
    functionName: fs_wrapper_copy
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_copy_finish_async
    - fs_copy
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_copy(struct fs_file *src, struct fs_file *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_rename
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: fs_wrapper_rename
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_rename
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_rename(struct fs_file *src, struct fs_file *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: fs_wrapper_delete
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_delete
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_delete(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: fs_wrapper_iter_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_iter
    signature: struct fs_iter *fs_wrapper_iter_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_iter_init_parent
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _iter
    - path
    - flags
    argTypes:
    - struct fs_iter*
    - char*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 148
    functionName: fs_wrapper_iter_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_iter_init_parent
    linkageType: ''
    returnType: void
    signature: "void fs_wrapper_iter_init(struct fs_iter *_iter, const char *path,\n\t\t\t
      \ enum fs_iter_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_iter_next
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 161
    functionName: fs_wrapper_iter_next
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_iter_next
    linkageType: ''
    returnType: char
    signature: char *fs_wrapper_iter_next(struct fs_iter *_iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:169,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-wrapper.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 172
    functionName: fs_wrapper_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-wrapper.c
    functionUses: 0
    functionsReached:
    - fs_iter_deinit
    - fs_set_error_errno
    linkageType: ''
    returnType: int
    signature: int fs_wrapper_iter_deinit(struct fs_iter *_iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_callback
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct metawrap_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 24
    functionName: o_stream_metawrap_call_callback
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-metawrap.c
    functionUses: 0
    functionsReached:
    - write_callback
    linkageType: ''
    returnType: void
    signature: void o_stream_metawrap_call_callback(struct metawrap_ostream *mstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_metawrap_call_callback
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:33,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:34,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 39
    functionName: o_stream_metawrap_sendv
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-metawrap.c
    functionUses: 0
    functionsReached:
    - o_stream_metawrap_call_callback
    - o_stream_sendv
    - o_stream_copy_error_from_parent
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_metawrap_sendv(struct ostream_private *stream,\n\t\t\tconst
      struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_metawrap_call_callback
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:50,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:51,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _outstream
    - instream
    argTypes:
    - struct ostream_private*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: o_stream_metawrap_send_istream
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-metawrap.c
    functionUses: 0
    functionsReached:
    - o_stream_metawrap_call_callback
    - o_stream_send_istream
    - o_stream_copy_error_from_parent
    linkageType: ''
    returnType: enum ostream_send_istream_result
    signature: "enum ostream_send_istream_result o_stream_metawrap_send_istream(struct
      ostream_private *_outstream,\n\t\t\t       struct istream *instream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:63,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:69,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-fs/ostream-metawrap.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - output
    - context
    argTypes:
    - struct ostream*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: o_stream_create_metawrap
    functionSourceFile: /src/dovecot/src/lib-fs/ostream-metawrap.c
    functionUses: 0
    functionsReached:
    - o_stream_create
    - i_new
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_metawrap(struct ostream *output,\n\t\t\t
      void (*write_callback)(void *), void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - file
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: fs_file_set_async_callback
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fs_file_set_async_callback(file, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - iter
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 389
    functionName: fs_iter_set_async_callback
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fs_iter_set_async_callback(iter, callback, context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:17,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:17,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:19,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:21,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:25,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:27,1
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:27,1
    - Dst: test_fs_file_get
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:30,1
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:35,1
    - Dst: fs_wait_async
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:38,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:42,1
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:43,1
    - Dst: fs_write_stream_abort_error
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:47,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:50,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:52,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 2
    argNames:
    - test_name
    - fs
    argTypes:
    - char*
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 53
    functionName: test_fs_async_write
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test-async.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - fs_write_stream
    - fs_write_stream_finish
    - t_strdup_printf
    - test_end
    - test_fs_file_get
    - test_assert
    - fs_write_stream_abort_error
    - fs_write_stream_finish_async
    - o_stream_nsend_str
    - fs_wait_async
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_fs_async_write(const char *test_name, struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:61,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:61,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:64,1
    - Dst: fs_write
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:64,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:69,1
    - Dst: fs_copy
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:69,1
    - Dst: test_fs_file_get
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:71,1
    - Dst: fs_copy_finish_async
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:74,1
    - Dst: fs_wait_async
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:77,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:78,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:80,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - test_name
    - fs
    argTypes:
    - char*
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 82
    functionName: test_fs_async_copy
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test-async.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - fs_copy_finish_async
    - t_strdup_printf
    - test_end
    - test_fs_file_get
    - test_assert
    - fs_copy
    - fs_write
    - fs_wait_async
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_fs_async_copy(const char *test_name, struct fs *fs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:92,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:93,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:94,1
    - Dst: test_fs_get
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:96,1
    - Dst: test_fs_async_write
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:99,1
    - Dst: test_fs_async_copy
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:100,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/lib-fs/fs-test-async.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - test_name
    - properties
    - event
    argTypes:
    - char*
    - enum fs_properties
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 103
    functionName: test_fs_async
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test-async.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_fs_async_write
    - fs_init_auto
    - fs_deinit
    - i_fatal
    - test_fs_async_copy
    - test_fs_get
    linkageType: ''
    returnType: void
    signature: "void test_fs_async(const char *test_name, enum fs_properties properties,\n\t\t
      \  struct event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: SISQUEUE_FS
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SISQUEUE_FS(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: SISQUEUE_FILE
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SISQUEUE_FILE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 57
    functionName: fs_sis_queue_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_sis_queue_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SISQUEUE_FS
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:63,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:66,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:69,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:70,1
    - Dst: fs_init_parent
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _fs
    - params
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 73
    functionName: fs_sis_queue_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - fs_init_parent
    - settings_free
    - SISQUEUE_FS
    - i_strdup
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int fs_sis_queue_init(struct fs *_fs, const struct fs_parameters *params,\n\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SISQUEUE_FS
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:77,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:79,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: fs_sis_queue_free
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - SISQUEUE_FS
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_sis_queue_free(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: fs_sis_queue_file_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_sis_queue_file_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SISQUEUE_FILE
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:93,1
    - Dst: SISQUEUE_FS
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:94,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:96,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:100,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 103
    functionName: fs_sis_queue_file_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - SISQUEUE_FILE
    - fs_set_error
    - i_strdup
    - fs_file_init_parent
    - SISQUEUE_FS
    linkageType: ''
    returnType: void
    signature: "void fs_sis_queue_file_init(struct fs_file *_file, const char *path,\n\t\t
      \      enum fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SISQUEUE_FILE
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:107,1
    - Dst: fs_file_free
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:109,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:110,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 112
    functionName: fs_sis_queue_file_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - SISQUEUE_FILE
    - fs_file_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_sis_queue_file_deinit(struct fs_file *_file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SISQUEUE_FS
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:116,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:120,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:121,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:127,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:128,1
    - Dst: fs_write
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:129,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:130,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:130,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct sis_queue_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 132
    functionName: fs_sis_queue_add
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - strrchr
    - t_strdup_printf
    - SISQUEUE_FS
    - fs_file_init_parent
    - e_error
    - fs_file_path
    - fs_write
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void fs_sis_queue_add(struct sis_queue_fs_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SISQUEUE_FILE
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:136,1
    - Dst: fs_write
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:140,1
    - Dst: fs_sis_queue_add
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _file
    - data
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 144
    functionName: fs_sis_queue_write
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - SISQUEUE_FILE
    - fs_sis_queue_add
    - fs_write
    linkageType: ''
    returnType: int
    signature: int fs_sis_queue_write(struct fs_file *_file, const void *data, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:150,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:153,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:154,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:156,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 159
    functionName: fs_sis_queue_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - fs_write_stream
    - o_stream_create_error_str
    - o_stream_set_name
    - i_assert
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void fs_sis_queue_write_stream(struct fs_file *_file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SISQUEUE_FILE
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:163,1
    - Dst: fs_write_stream_abort_parent
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:167,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:171,1
    - Dst: fs_sis_queue_add
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 175
    functionName: fs_sis_queue_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - SISQUEUE_FILE
    - fs_sis_queue_add
    - fs_write_stream_abort_parent
    - fs_write_stream_finish
    linkageType: ''
    returnType: int
    signature: int fs_sis_queue_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_sis_try_unlink_hash_file
      Src: /src/dovecot/src/lib-fs/fs-sis-queue.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: fs_sis_queue_delete
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis-queue.c
    functionUses: 0
    functionsReached:
    - fs_sis_try_unlink_hash_file
    linkageType: ''
    returnType: int
    signature: int fs_sis_queue_delete(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: METAWRAP_FS
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: METAWRAP_FS(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: METAWRAP_FILE
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: METAWRAP_FILE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: fs_metawrap_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_metawrap_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FS
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:52,1
    - Dst: fs_init_parent
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:53,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _fs
    - params
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 58
    functionName: fs_metawrap_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_get_properties
    - fs_init_parent
    - METAWRAP_FS
    linkageType: ''
    returnType: int
    signature: "int fs_metawrap_init(struct fs *_fs, const struct fs_parameters *params,\n\t\t
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FS
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:62,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: fs_metawrap_free
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - i_free
    - METAWRAP_FS
    linkageType: ''
    returnType: void
    signature: void fs_metawrap_free(struct fs *_fs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FS
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:69,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:72,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 82
    functionName: fs_metawrap_get_properties
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_get_properties
    - ENUM_NEGATE
    - METAWRAP_FS
    linkageType: ''
    returnType: enum fs_properties
    signature: enum fs_properties fs_metawrap_get_properties(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: fs_metawrap_file_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_metawrap_file_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:94,1
    - Dst: METAWRAP_FS
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:95,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:97,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:102,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:104,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:109,1
    - Dst: fs_metadata_init
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 116
    functionName: fs_metawrap_file_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - METAWRAP_FS
    - i_strdup
    - fs_file_init_parent
    - METAWRAP_FILE
    - fs_metadata_init
    linkageType: ''
    returnType: void
    signature: "void fs_metawrap_file_init(struct fs_file *_file, const char *path,\n\t\t
      \     enum fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:120,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:123,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:124,1
    - Dst: fs_file_free
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:125,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:126,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 128
    functionName: fs_metawrap_file_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_free
    - METAWRAP_FILE
    - i_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void fs_metawrap_file_deinit(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:132,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:134,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:135,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: fs_metawrap_file_close
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_file_close
    - METAWRAP_FILE
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void fs_metawrap_file_close(struct fs_file *_file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:143,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:146,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:147,1
    - Dst: fs_default_set_metadata
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:149,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - _file
    - key
    - value
    argTypes:
    - struct fs_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: fs_metawrap_set_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - fs_set_metadata
    - METAWRAP_FILE
    - fs_default_set_metadata
    linkageType: ''
    returnType: void
    signature: "void fs_metawrap_set_metadata(struct fs_file *_file, const char *key,\n\t\t\t
      const char *value)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:161,1
    - Dst: fs_get_metadata_full
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:166,1
    - Dst: fs_read
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:173,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:177,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:181,1
    - Dst: fs_wait_async
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:182,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:185,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:187,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:191,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 3
    argNames:
    - _file
    - flags
    - metadata_r
    argTypes:
    - struct fs_file*
    - enum fs_get_metadata_flags
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 195
    functionName: fs_metawrap_get_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_read
    - fs_set_error
    - i_stream_get_error
    - fs_get_metadata_full
    - i_stream_read
    - METAWRAP_FILE
    - i_stream_get_name
    - i_assert
    - fs_wait_async
    linkageType: ''
    returnType: int
    signature: "int fs_metawrap_get_metadata(struct fs_file *_file,\n\t\t\t enum fs_get_metadata_flags
      flags,\n\t\t\t const ARRAY_TYPE(fs_metadata) **metadata_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:199,1
    - Dst: fs_prefetch
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:202,1
    - Dst: fs_prefetch
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _file
    - length
    argTypes:
    - struct fs_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: fs_metawrap_prefetch
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_prefetch
    - METAWRAP_FILE
    linkageType: ''
    returnType: bool
    signature: bool fs_metawrap_prefetch(struct fs_file *_file, uoff_t length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:209,1
    - Dst: fs_read
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:212,1
    - Dst: fs_read_via_stream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _file
    - buf
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 214
    functionName: fs_metawrap_read
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_read_via_stream
    - fs_read
    - METAWRAP_FILE
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fs_metawrap_read(struct fs_file *_file, void *buf, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:227,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:227,1
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:228,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:228,1
    - Dst: fs_default_set_metadata
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - key
    - value
    - context
    argTypes:
    - char*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 230
    functionName: fs_metawrap_callback
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - str_tabunescape
    - fs_default_set_metadata
    - t_strdup_noconst
    linkageType: ''
    returnType: void
    signature: void fs_metawrap_callback(const char *key, const char *value, void
      *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:240,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:243,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:244,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:248,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:251,1
    - Dst: i_stream_create_metawrap
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:254,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:255,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - _file
    - max_buffer_size
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 258
    functionName: fs_metawrap_read_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - i_stream_create_metawrap
    - i_stream_ref
    - i_stream_seek
    - i_stream_unref
    - fs_read_stream
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_metawrap_read_stream(struct fs_file *_file, size_t max_buffer_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:262,1
    - Dst: fs_write
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:265,1
    - Dst: fs_write_via_stream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _file
    - data
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: fs_metawrap_write
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_write
    - METAWRAP_FILE
    - fs_write_via_stream
    linkageType: ''
    returnType: int
    signature: int fs_metawrap_write(struct fs_file *_file, const void *data, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:274,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:275,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:278,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:279,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:280,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:281,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - file
    - str
    argTypes:
    - struct metawrap_fs_file*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 284
    functionName: fs_metawrap_append_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - str_append_tabescaped
    - str_begins_with
    - array_foreach
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void fs_metawrap_append_metadata(struct metawrap_fs_file *file, string_t
      *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:290,1
    - Dst: fs_metawrap_append_metadata
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:293,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:294,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:296,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:296,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:296,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:300,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - file
    - output
    argTypes:
    - struct metawrap_fs_file*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 302
    functionName: fs_metawrap_write_metadata_to
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - o_stream_close
    - fs_metawrap_append_metadata
    - o_stream_send
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void fs_metawrap_write_metadata_to(struct metawrap_fs_file *file,\n\t\t\t
      \     struct ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_metawrap_write_metadata_to
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 304
    functionDepth: 3
    functionLinenumber: 304
    functionLinenumberEnd: 309
    functionName: fs_metawrap_write_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_metawrap_write_metadata_to
    linkageType: ''
    returnType: void
    signature: void fs_metawrap_write_metadata(void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:315,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:318,1
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:322,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:324,1
    - Dst: o_stream_create_metawrap
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 328
    functionName: fs_metawrap_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_write_stream
    - o_stream_create_metawrap
    - fs_file_path
    - iostream_temp_create_named
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_metawrap_write_stream(struct fs_file *_file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:337,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:339,1
    - Dst: fs_metawrap_append_metadata
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:340,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:341,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:341,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:342,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:344,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:345,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:347,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:348,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:349,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - file
    - input
    argTypes:
    - struct metawrap_fs_file*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 353
    functionName: fs_metawrap_create_updated_istream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - i_stream_create_concat
    - fs_metawrap_append_metadata
    - i_stream_create_limit
    - i_stream_seek
    - str_truncate
    - i_stream_unref
    - i_stream_create_from_data
    - str_new
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\nfs_metawrap_create_updated_istream(struct metawrap_fs_file
      *file,\n\t\t\t\t   struct istream *input)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:357,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:365,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:370,1
    - Dst: fs_write_stream_abort_parent
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:371,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:373,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:374,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:381,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:382,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:386,1
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:387,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:396,1
    - Dst: fs_metawrap_create_updated_istream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:403,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:404,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:406,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:407,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:410,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:412,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:413,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 355
    functionDepth: 3
    functionLinenumber: 355
    functionLinenumberEnd: 415
    functionName: fs_metawrap_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_write_stream
    - iostream_temp_finish
    - o_stream_unref
    - o_stream_nsend_istream
    - fs_metawrap_create_updated_istream
    - fs_write_stream_abort_parent
    - METAWRAP_FILE
    - i_stream_unref
    - fs_write_stream_finish_async
    - i_assert
    - o_stream_destroy
    - fs_write_stream_finish
    linkageType: ''
    returnType: int
    signature: int fs_metawrap_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:419,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:425,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:429,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:432,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:435,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:444,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:447,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:449,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:450,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:452,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:452,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:453,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:456,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:459,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:460,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:464,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:465,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - _file
    - st_r
    argTypes:
    - struct fs_file*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 470
    functionName: fs_metawrap_stat
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_set_error
    - i_stream_ref
    - i_stream_get_error
    - i_stream_get_size
    - fs_stat
    - fs_file_path
    - METAWRAP_FILE
    - i_stream_unref
    - fs_read_stream
    - i_assert
    linkageType: ''
    returnType: int
    signature: int fs_metawrap_stat(struct fs_file *_file, struct stat *st_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: METAWRAP_FILE
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:474,1
    - Dst: fs_wrapper_copy
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:477,1
    - Dst: fs_default_copy
      Src: /src/dovecot/src/lib-fs/fs-metawrap.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - _src
    - _dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 472
    functionDepth: 2
    functionLinenumber: 472
    functionLinenumberEnd: 480
    functionName: fs_metawrap_copy
    functionSourceFile: /src/dovecot/src/lib-fs/fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_wrapper_copy
    - METAWRAP_FILE
    - fs_default_copy
    linkageType: ''
    returnType: int
    signature: int fs_metawrap_copy(struct fs_file *_src, struct fs_file *_dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: SIS_FS
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIS_FS(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: SIS_FILE
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIS_FILE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-sis.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: fs_sis_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_sis_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_init_parent
      Src: /src/dovecot/src/lib-fs/fs-sis.c:49,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/lib-fs/fs-sis.c:52,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-sis.c:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - _fs
    - params
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 59
    functionName: fs_sis_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - fs_get_properties
    - fs_init_parent
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int fs_sis_init(struct fs *_fs, const struct fs_parameters *params,\n\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SIS_FS
      Src: /src/dovecot/src/lib-fs/fs-sis.c:63,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: fs_sis_free
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - SIS_FS
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_sis_free(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-sis.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: fs_sis_file_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_sis_file_alloc(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SIS_FILE
      Src: /src/dovecot/src/lib-fs/fs-sis.c:78,1
    - Dst: SIS_FS
      Src: /src/dovecot/src/lib-fs/fs-sis.c:79,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-sis.c:82,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:86,1
    - Dst: fs_sis_path_parse
      Src: /src/dovecot/src/lib-fs/fs-sis.c:90,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-sis.c:94,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/lib-fs/fs-sis.c:95,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-sis.c:98,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-fs/fs-sis.c:99,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:102,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-fs/fs-sis.c:105,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/lib-fs/fs-sis.c:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 109
    functionName: fs_sis_file_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - SIS_FS
    - fs_set_error
    - SIS_FILE
    - i_strdup
    - fs_file_init_parent
    - e_error
    - fs_read_stream
    - i_strdup_printf
    - i_stream_read
    - fs_sis_path_parse
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void fs_sis_file_init(struct fs_file *_file, const char *path,\n\t\t
      enum fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SIS_FILE
      Src: /src/dovecot/src/lib-fs/fs-sis.c:113,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/fs-sis.c:115,1
    - Dst: fs_file_free
      Src: /src/dovecot/src/lib-fs/fs-sis.c:116,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis.c:117,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis.c:118,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis.c:119,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-sis.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 121
    functionName: fs_sis_file_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_free
    - i_free
    - SIS_FILE
    linkageType: ''
    returnType: void
    signature: void fs_sis_file_deinit(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SIS_FILE
      Src: /src/dovecot/src/lib-fs/fs-sis.c:125,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-sis.c:127,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/lib-fs/fs-sis.c:128,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/lib-fs/fs-sis.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 130
    functionName: fs_sis_file_close
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - fs_file_close
    - SIS_FILE
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void fs_sis_file_close(struct fs_file *_file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-fs/fs-sis.c:137,1
    - Dst: fs_copy
      Src: /src/dovecot/src/lib-fs/fs-sis.c:141,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:143,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:144,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-sis.c:149,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:150,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:151,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-fs/fs-sis.c:152,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:153,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:154,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-fs/fs-sis.c:160,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:161,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:162,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct sis_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 167
    functionName: fs_sis_try_link
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - fs_delete
    - i_stream_stat
    - e_error
    - fs_stat
    - fs_copy
    - fs_file_last_error
    linkageType: ''
    returnType: bool
    signature: bool fs_sis_try_link(struct sis_fs_file *file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-sis.c:172,1
    - Dst: fs_lookup_metadata
      Src: /src/dovecot/src/lib-fs/fs-sis.c:176,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-fs/fs-sis.c:178,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-sis.c:180,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-fs/fs-sis.c:181,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-fs/fs-sis.c:182,1
    - Dst: i_stream_create_nonuls
      Src: /src/dovecot/src/lib-fs/fs-sis.c:183,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-fs/fs-sis.c:184,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-sis.c:185,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-sis.c:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - _file
    - max_buffer_size
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 189
    functionName: fs_sis_read_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - i_stream_create_limit
    - i_stream_create_file
    - e_warning
    - str_to_uoff
    - i_stream_unref
    - fs_read_stream
    - i_stream_create_nonuls
    - fs_lookup_metadata
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_sis_read_stream(struct fs_file *_file, size_t max_buffer_size)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SIS_FILE
      Src: /src/dovecot/src/lib-fs/fs-sis.c:193,1
    - Dst: stream_cmp_block
      Src: /src/dovecot/src/lib-fs/fs-sis.c:199,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-fs/fs-sis.c:200,1
    - Dst: fs_sis_try_link
      Src: /src/dovecot/src/lib-fs/fs-sis.c:202,1
    - Dst: fs_write
      Src: /src/dovecot/src/lib-fs/fs-sis.c:206,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 3
    argNames:
    - _file
    - data
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 209
    functionName: fs_sis_write
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - fs_sis_try_link
    - SIS_FILE
    - i_stream_read_eof
    - fs_write
    - stream_cmp_block
    linkageType: ''
    returnType: int
    signature: int fs_sis_write(struct fs_file *_file, const void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/lib-fs/fs-sis.c:214,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-sis.c:215,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-sis.c:217,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-fs/fs-sis.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 220
    functionName: fs_sis_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - o_stream_set_name
    - fs_write_stream
    - o_stream_create_error_str
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void fs_sis_write_stream(struct fs_file *_file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_write_stream_abort_parent
      Src: /src/dovecot/src/lib-fs/fs-sis.c:227,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-sis.c:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 233
    functionName: fs_sis_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - fs_write_stream_abort_parent
    - fs_write_stream_finish
    linkageType: ''
    returnType: int
    signature: int fs_sis_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-fs/fs-sis.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 238
    functionName: fs_sis_delete
    functionSourceFile: /src/dovecot/src/lib-fs/fs-sis.c
    functionUses: 0
    functionsReached:
    - fs_delete
    linkageType: ''
    returnType: int
    signature: int fs_sis_delete(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-fs/fs-api.c:73,1
    - Dst: fs_classes_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:74,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-fs/fs-api.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fs_class
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 76
    functionName: fs_class_register
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_push_back
    - fs_classes_init
    linkageType: ''
    returnType: void
    signature: void fs_class_register(const struct fs *fs_class)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-fs/fs-api.c:82,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-fs/fs-api.c:84,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-fs/fs-api.c:85,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-fs/fs-api.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fs_class
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 90
    functionName: fs_class_unregister
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - i_panic
    - array_delete
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: void
    signature: void fs_class_unregister(const struct fs *fs_class)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: fs_classes_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void fs_classes_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:99,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/lib-fs/fs-api.c:100,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/lib-fs/fs-api.c:101,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/lib-fs/fs-api.c:102,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/lib-fs/fs-api.c:103,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/lib-fs/fs-api.c:104,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/lib-fs/fs-api.c:105,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/lib-fs/fs-api.c:106,1
    - Dst: lib_atexit_priority
      Src: /src/dovecot/src/lib-fs/fs-api.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 108
    functionName: fs_classes_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - fs_class_register
    - lib_atexit_priority
    linkageType: ''
    returnType: void
    signature: void fs_classes_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-fs/fs-api.c:114,1
    - Dst: fs_classes_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:115,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-fs/fs-api.c:117,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-api.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - driver
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 122
    functionName: fs_class_find
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    - array_is_created
    - fs_classes_init
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_class_find(const char *driver)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_unload
      Src: /src/dovecot/src/lib-fs/fs-api.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: fs_class_deinit_modules
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - module_dir_unload
    linkageType: ''
    returnType: void
    signature: void fs_class_deinit_modules(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib-fs/fs-api.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - driver
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: fs_driver_module_name
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - t_str_replace
    linkageType: ''
    returnType: char
    signature: char *fs_driver_module_name(const char *driver)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-api.c:137,1
    - Dst: fs_driver_module_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:137,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-fs/fs-api.c:144,1
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/lib-fs/fs-api.c:148,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:150,1
    - Dst: module_dir_find
      Src: /src/dovecot/src/lib-fs/fs-api.c:152,1
    - Dst: module_get_symbol
      Src: /src/dovecot/src/lib-fs/fs-api.c:154,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-api.c:154,1
    - Dst: fs_driver_module_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:155,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/lib-fs/fs-api.c:157,1
    - Dst: lib_atexit
      Src: /src/dovecot/src/lib-fs/fs-api.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - driver
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 160
    functionName: fs_class_try_load_plugin
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_driver_module_name
    - i_zero
    - lib_atexit
    - module_dir_load_missing
    - t_strdup_printf
    - module_dir_find
    - module_get_symbol
    - fs_class_register
    - module_dir_init
    linkageType: ''
    returnType: void
    signature: void fs_class_try_load_plugin(const char *driver)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_class_find
      Src: /src/dovecot/src/lib-fs/fs-api.c:171,1
    - Dst: fs_class_try_load_plugin
      Src: /src/dovecot/src/lib-fs/fs-api.c:174,1
    - Dst: fs_class_find
      Src: /src/dovecot/src/lib-fs/fs-api.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - driver
    - event_parent
    - params
    - fs_r
    - error_r
    argTypes:
    - char*
    - struct event*
    - struct fs_parameters*
    - struct fs**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 162
    functionDepth: 4
    functionLinenumber: 162
    functionLinenumberEnd: 177
    functionName: fs_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_class_find
    - fs_class_try_load_plugin
    linkageType: ''
    returnType: int
    signature: "int fs_alloc(const char *driver, struct event *event_parent,\n\t const
      struct fs_parameters *params,\n\t struct fs **fs_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: fs_settings_check
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool fs_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      \     const char **error_r ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-fs/fs-api.c:227,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-fs/fs-api.c:228,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:234,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-fs/fs-api.c:238,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:239,1
    - Dst: fs_alloc
      Src: /src/dovecot/src/lib-fs/fs-api.c:241,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:242,1
    - Dst: struct fs*::v::init
      Src: /src/dovecot/src/lib-fs/fs-api.c:251,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 7
    argNames:
    - event
    - params
    - fs_list
    - fs_list_idx
    - init_fs_last_list_idx
    - fs_r
    - error_r
    argTypes:
    - struct event*
    - struct fs_parameters*
    - ARRAY_TYPE*
    - unsigned int
    - unsigned int*
    - struct fs**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 215
    functionDepth: 5
    functionLinenumber: 215
    functionLinenumberEnd: 252
    functionName: fs_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_alloc
    - settings_free
    - array_idx_elem
    - settings_event_add_list_filter_name
    - settings_get_filter
    - struct fs*::v::init
    - event_add_str
    linkageType: ''
    returnType: int
    signature: "int fs_init(struct event *event,\n\t\t   const struct fs_parameters
      *params,\n\t\t   const ARRAY_TYPE(const_string) *fs_list,\n\t\t   unsigned int
      fs_list_idx,\n\t\t   unsigned int *init_fs_last_list_idx,\n\t\t   struct fs
      **fs_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-fs/fs-api.c:278,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-fs/fs-api.c:281,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:282,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-fs/fs-api.c:287,1
    - Dst: fs_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:288,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:290,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-fs/fs-api.c:292,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-fs/fs-api.c:294,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-fs/fs-api.c:296,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-api.c:297,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:301,1
    - Dst: fs_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:302,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:305,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - event
    - params
    - fs_r
    - error_r
    argTypes:
    - struct event*
    - struct fs_parameters*
    - struct fs**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 270
    functionDepth: 6
    functionLinenumber: 270
    functionLinenumberEnd: 310
    functionName: fs_init_auto
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - event_create
    - fs_unref
    - event_unref
    - t_strdup_printf
    - settings_free
    - array_is_empty
    - array_count
    - array_idx_elem
    - fs_init
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int fs_init_auto(struct event *event, const struct fs_parameters *params,\n\t\t
      struct fs **fs_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-fs/fs-api.c:315,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:322,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-fs/fs-api.c:322,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:324,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-fs/fs-api.c:324,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-fs/fs-api.c:327,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-fs/fs-api.c:329,1
    - Dst: fs_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:330,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:334,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:337,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-fs/fs-api.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - fs
    - params
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 312
    functionDepth: 6
    functionLinenumber: 312
    functionLinenumberEnd: 340
    functionName: fs_init_parent
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 3
    functionsReached:
    - event_create
    - event_unref
    - event_get_ptr
    - array_count
    - event_set_ptr
    - event_get_parent
    - fs_init
    - event_drop_parent_log_prefixes
    linkageType: ''
    returnType: int
    signature: "int fs_init_parent(struct fs *fs, const struct fs_parameters *params,\n\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 345
    functionName: fs_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - fs_unref
    linkageType: ''
    returnType: void
    signature: void fs_deinit(struct fs **fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 352
    functionName: fs_ref
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_ref(struct fs *fs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:365,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-fs/fs-api.c:373,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-api.c:374,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:376,1
    - Dst: struct fs*::v::deinit
      Src: /src/dovecot/src/lib-fs/fs-api.c:379,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/lib-fs/fs-api.c:381,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:382,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:383,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:384,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:385,1
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/lib-fs/fs-api.c:388,1
    - Dst: struct fs*::v::free
      Src: /src/dovecot/src/lib-fs/fs-api.c:391,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 392
    functionName: fs_unref
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - i_panic
    - event_unref
    - fs_deinit
    - struct fs*::v::free
    - fs_file_path
    - stats_dist_deinit
    - i_assert
    - i_free
    - struct fs*::v::deinit
    linkageType: ''
    returnType: void
    signature: void fs_unref(struct fs **_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 399
    functionName: fs_get_parent
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_get_parent(struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 404
    functionName: fs_get_driver
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *fs_get_driver(struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 411
    functionName: fs_get_root_fs
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_get_root_fs(struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_get_root_fs
      Src: /src/dovecot/src/lib-fs/fs-api.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 416
    functionName: fs_get_root_driver
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_get_root_fs
    linkageType: ''
    returnType: char
    signature: char *fs_get_root_driver(struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_init_with_event
      Src: /src/dovecot/src/lib-fs/fs-api.c:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fs
    - path
    - mode_flags
    argTypes:
    - struct fs*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 421
    functionName: fs_file_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 3
    functionsReached:
    - fs_file_init_with_event
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_file_init(struct fs *fs, const char *path, int mode_flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:428,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:429,1
    - Dst: struct fs*::v::file_alloc
      Src: /src/dovecot/src/lib-fs/fs-api.c:433,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-fs/fs-api.c:435,1
    - Dst: fs_create_event
      Src: /src/dovecot/src/lib-fs/fs-api.c:436,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:437,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:438,1
    - Dst: struct fs*::v::file_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:439,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-fs/fs-api.c:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - fs
    - event
    - path
    - mode_flags
    argTypes:
    - struct fs*
    - struct event*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 441
    functionName: fs_file_init_with_event
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - struct fs*::v::file_init
    - ENUM_NEGATE
    - event_set_ptr
    - struct fs*::v::file_alloc
    - i_assert
    - fs_create_event
    linkageType: ''
    returnType: struct fs_file
    signature: "struct fs_file *fs_file_init_with_event(struct fs *fs, struct event
      *event,\n\t\t\t\t\tconst char *path, int mode_flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:457,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/lib-fs/fs-api.c:461,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-fs/fs-api.c:463,1
    - Dst: struct fs_file*::fs::v::file_deinit
      Src: /src/dovecot/src/lib-fs/fs-api.c:466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 467
    functionName: fs_file_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 8
    functionsReached:
    - struct fs_file*::fs::v::file_deinit
    - i_assert
    - DLLIST_REMOVE
    - fs_file_close
    linkageType: ''
    returnType: void
    signature: void fs_file_deinit(struct fs_file **_file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:477,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-api.c:478,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/fs-api.c:481,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:482,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:483,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 485
    functionName: fs_file_free
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 5
    functionsReached:
    - fs_file_deinit
    - event_unref
    - pool_unref
    - e_error
    - fs_file_path
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_file_free(struct fs_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-fs/fs-api.c:492,1
    - Dst: fs_file_set_flags
      Src: /src/dovecot/src/lib-fs/fs-api.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - file
    - add_flags
    - remove_flags
    argTypes:
    - struct fs_file*
    - enum fs_open_flags
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 496
    functionName: fs_file_set_flags
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - fs_file_set_flags
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void fs_file_set_flags(struct fs_file *file,\n\t\t       enum fs_open_flags
      add_flags,\n\t\t       enum fs_open_flags remove_flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:503,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:504,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:507,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:509,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:512,1
    - Dst: fs_write_stream_abort_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:513,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:514,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-fs/fs-api.c:516,1
    - Dst: struct fs_file*::fs::v::file_close
      Src: /src/dovecot/src/lib-fs/fs-api.c:518,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 519
    functionName: fs_file_close
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - o_stream_get_name
    - struct fs_file*::fs::v::file_close
    - i_free_and_null
    - fs_write_stream_abort_error
    - i_assert
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void fs_file_close(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct fs*::v::get_properties
      Src: /src/dovecot/src/lib-fs/fs-api.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 530
    functionName: fs_get_properties
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - struct fs*::v::get_properties
    linkageType: ''
    returnType: enum fs_properties
    signature: enum fs_properties fs_get_properties(struct fs *fs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:535,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-fs/fs-api.c:535,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-fs/fs-api.c:536,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 539
    functionName: fs_metadata_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - array_is_created
    - i_assert
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void fs_metadata_init(struct fs_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_metadata_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:544,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-fs/fs-api.c:547,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:549,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-fs/fs-api.c:550,1
    - Dst: if
      Src: /src/dovecot/src/lib-fs/fs-api.c:551,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-fs/fs-api.c:551,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-fs/fs-api.c:552,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-fs/fs-api.c:553,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-fs/fs-api.c:555,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-fs/fs-api.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 557
    functionName: fs_metadata_init_or_clear
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - strlen
    - array_foreach
    - if
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - strncmp
    - fs_metadata_init
    - array_append_array
    linkageType: ''
    returnType: void
    signature: void fs_metadata_init_or_clear(struct fs_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-api.c:567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - metadata
    - key
    argTypes:
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 571
    functionName: fs_metadata_find_md
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct fs_metadata
    signature: "struct fs_metadata *\nfs_metadata_find_md(const ARRAY_TYPE(fs_metadata)
      *metadata,\n\t\t    const char *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-api.c:567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 569
    functionName: array_foreach_modifiable
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 39
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void array_foreach_modifiable(metadata, md)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_metadata_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:578,1
    - Dst: fs_metadata_find_md
      Src: /src/dovecot/src/lib-fs/fs-api.c:579,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-fs/fs-api.c:581,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-fs/fs-api.c:582,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-fs/fs-api.c:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - file
    - key
    - value
    argTypes:
    - struct fs_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 585
    functionName: fs_default_set_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - p_strdup
    - fs_metadata_init
    - array_append_space
    - fs_metadata_find_md
    linkageType: ''
    returnType: void
    signature: "void fs_default_set_metadata(struct fs_file *file,\n\t\t\t     const
      char *key, const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-fs/fs-api.c:592,1
    - Dst: fs_metadata_find_md
      Src: /src/dovecot/src/lib-fs/fs-api.c:595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - metadata
    - key
    argTypes:
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 597
    functionName: fs_metadata_find
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - fs_metadata_find_md
    linkageType: ''
    returnType: char
    signature: "char *fs_metadata_find(const ARRAY_TYPE(fs_metadata) *metadata,\n\t\t\t
      \    const char *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:601,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:602,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:603,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-fs/fs-api.c:603,1
    - Dst: struct fs_file*::fs::v::set_metadata
      Src: /src/dovecot/src/lib-fs/fs-api.c:606,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-fs/fs-api.c:607,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-fs/fs-api.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - file
    - key
    - value
    argTypes:
    - struct fs_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 613
    functionName: fs_set_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 3
    functionsReached:
    - strchr
    - strlen
    - struct fs_file*::fs::v::set_metadata
    - strncmp
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_set_metadata(struct fs_file *file, const char *key, const char
      *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-fs/fs-api.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - file
    - op
    argTypes:
    - struct fs_file*
    - enum fs_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 622
    functionName: fs_file_timing_start
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    linkageType: ''
    returnType: void
    signature: void fs_file_timing_start(struct fs_file *file, enum fs_op op)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-fs/fs-api.c:630,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib-fs/fs-api.c:632,1
    - Dst: stats_dist_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:635,1
    - Dst: stats_dist_add
      Src: /src/dovecot/src/lib-fs/fs-api.c:636,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - timing
    - start_tv
    argTypes:
    - struct stats_dist**
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 638
    functionName: fs_timing_end
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - stats_dist_add
    - timeval_diff_usecs
    - stats_dist_init
    linkageType: ''
    returnType: void
    signature: void fs_timing_end(struct stats_dist **timing, const struct timeval
      *start_tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_timing_end
      Src: /src/dovecot/src/lib-fs/fs-api.c:645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - file
    - op
    argTypes:
    - struct fs_file*
    - enum fs_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 648
    functionName: fs_file_timing_end
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_timing_end
    linkageType: ''
    returnType: void
    signature: void fs_file_timing_end(struct fs_file *file, enum fs_op op)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-fs/fs-api.c:657,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:662,1
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:671,1
    - Dst: struct fs_file*::fs::v::get_metadata
      Src: /src/dovecot/src/lib-fs/fs-api.c:674,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - file
    - flags
    - metadata_r
    argTypes:
    - struct fs_file*
    - enum fs_get_metadata_flags
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 650
    functionDepth: 2
    functionLinenumber: 650
    functionLinenumberEnd: 675
    functionName: fs_get_metadata_full
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - struct fs_file*::fs::v::get_metadata
    - fs_set_error
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: "int fs_get_metadata_full(struct fs_file *file,\n\t\t\t enum fs_get_metadata_flags
      flags,\n\t\t\t const ARRAY_TYPE(fs_metadata) **metadata_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_get_metadata_full
      Src: /src/dovecot/src/lib-fs/fs-api.c:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - metadata_r
    argTypes:
    - struct fs_file*
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 681
    functionDepth: 3
    functionLinenumber: 681
    functionLinenumberEnd: 685
    functionName: fs_get_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_get_metadata_full
    linkageType: ''
    returnType: int
    signature: "int fs_get_metadata(struct fs_file *file,\n\t\t    const ARRAY_TYPE(fs_metadata)
      **metadata_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_get_metadata
      Src: /src/dovecot/src/lib-fs/fs-api.c:692,1
    - Dst: fs_metadata_find
      Src: /src/dovecot/src/lib-fs/fs-api.c:694,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - file
    - key
    - value_r
    argTypes:
    - struct fs_file*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 687
    functionDepth: 4
    functionLinenumber: 687
    functionLinenumberEnd: 696
    functionName: fs_lookup_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - fs_metadata_find
    - fs_get_metadata
    linkageType: ''
    returnType: int
    signature: "int fs_lookup_metadata(struct fs_file *file, const char *key,\n\t\t
      \      const char **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_get_metadata_full
      Src: /src/dovecot/src/lib-fs/fs-api.c:702,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-fs/fs-api.c:703,1
    - Dst: fs_metadata_find
      Src: /src/dovecot/src/lib-fs/fs-api.c:704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - file
    - key
    argTypes:
    - struct fs_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 698
    functionDepth: 3
    functionLinenumber: 698
    functionLinenumberEnd: 705
    functionName: fs_lookup_loaded_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - i_panic
    - fs_get_metadata_full
    - fs_metadata_find
    linkageType: ''
    returnType: char
    signature: char *fs_lookup_loaded_metadata(struct fs_file *file, const char *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct fs_file*::fs::v::get_path
      Src: /src/dovecot/src/lib-fs/fs-api.c:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 711
    functionName: fs_file_path
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 8
    functionsReached:
    - struct fs_file*::fs::v::get_path
    linkageType: ''
    returnType: char
    signature: char *fs_file_path(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 716
    functionName: fs_file_fs
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_file_fs(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 721
    functionName: fs_file_event
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *fs_file_event(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 723
    functionDepth: 0
    functionLinenumber: 723
    functionLinenumberEnd: 729
    functionName: fs_file_get_error_file
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_file_get_error_file(struct fs_file *file)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:742,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:743,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-fs/fs-api.c:744,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:745,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-fs/fs-api.c:748,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-fs/fs-api.c:752,1
    - Dst: event_send_abort
      Src: /src/dovecot/src/lib-fs/fs-api.c:754,1
    - Dst: fs_file_get_error_file
      Src: /src/dovecot/src/lib-fs/fs-api.c:758,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:762,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-api.c:763,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:768,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-api.c:769,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:781,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:784,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-api.c:786,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:791,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:794,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 3
    argNames:
    - event
    - fmt
    - args
    argTypes:
    - struct event*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 797
    functionName: fs_set_verror
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - strcmp
    - e_debug
    - event_get_ptr
    - i_strdup_vprintf
    - event_send_abort
    - fs_file_get_error_file
    - e_error
    - event_get_parent
    - fs_file_path
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_set_verror(struct event *event, const char *fmt, va_list args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_get_error_file
      Src: /src/dovecot/src/lib-fs/fs-api.c:801,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 807
    functionName: fs_file_last_error
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 9
    functionsReached:
    - fs_file_get_error_file
    linkageType: ''
    returnType: char
    signature: char *fs_file_last_error(struct fs_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:816,1
    - Dst: struct fs_file*::fs::v::prefetch
      Src: /src/dovecot/src/lib-fs/fs-api.c:819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - file
    - length
    argTypes:
    - struct fs_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 809
    functionDepth: 2
    functionLinenumber: 809
    functionLinenumberEnd: 820
    functionName: fs_prefetch
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - struct fs_file*::fs::v::prefetch
    - fs_file_timing_start
    linkageType: ''
    returnType: bool
    signature: bool fs_prefetch(struct fs_file *file, uoff_t length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:831,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-api.c:834,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-fs/fs-api.c:835,1
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-api.c:838,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:842,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:845,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:846,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-fs/fs-api.c:848,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-fs/fs-api.c:850,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:852,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - file
    - buf
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 854
    functionName: fs_read_via_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - memcpy
    - fs_set_error
    - I_MIN
    - i_stream_get_error
    - fs_file_set_error_async
    - i_stream_unref
    - fs_read_stream
    - i_assert
    - i_stream_read_bytes
    - i_stream_get_name
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fs_read_via_stream(struct fs_file *file, void *buf, size_t
      size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:863,1
    - Dst: struct fs_file*::fs::v::read
      Src: /src/dovecot/src/lib-fs/fs-api.c:868,1
    - Dst: fs_file_timing_end
      Src: /src/dovecot/src/lib-fs/fs-api.c:871,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - file
    - buf
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 856
    functionDepth: 3
    functionLinenumber: 856
    functionLinenumberEnd: 873
    functionName: fs_read
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - struct fs_file*::fs::v::read
    - fs_file_timing_end
    - fs_file_timing_start
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fs_read(struct fs_file *file, void *buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 885
    functionName: fs_file_istream_destroyed
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_file_istream_destroyed(struct fs_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:898,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-fs/fs-api.c:903,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-fs/fs-api.c:904,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:907,1
    - Dst: struct fs_file*::fs::v::read_stream
      Src: /src/dovecot/src/lib-fs/fs-api.c:909,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - file
    - max_buffer_size
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 887
    functionDepth: 2
    functionLinenumber: 887
    functionLinenumberEnd: 910
    functionName: fs_read_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 7
    functionsReached:
    - i_stream_create_limit
    - fs_file_timing_start
    - i_stream_seek
    - i_assert
    - struct fs_file*::fs::v::read_stream
    linkageType: ''
    returnType: struct istream
    signature: struct istream *fs_read_stream(struct fs_file *file, size_t max_buffer_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-api.c:961,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-fs/fs-api.c:962,1
    - Dst: fs_write_stream_abort_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:964,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:965,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:966,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:970,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-api.c:971,1
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/lib-fs/fs-api.c:973,1
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-api.c:976,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - file
    - data
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 982
    functionName: fs_write_via_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - fs_write_stream
    - o_stream_get_name
    - o_stream_get_error
    - o_stream_send
    - fs_file_set_error_async
    - fs_write_stream_abort_error
    - fs_write_stream_finish_async
    - i_assert
    - fs_write_stream_finish
    linkageType: ''
    returnType: int
    signature: int fs_write_via_stream(struct fs_file *file, const void *data, size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:989,1
    - Dst: struct fs_file*::fs::v::write
      Src: /src/dovecot/src/lib-fs/fs-api.c:991,1
    - Dst: fs_file_timing_end
      Src: /src/dovecot/src/lib-fs/fs-api.c:996,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - file
    - data
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 999
    functionName: fs_write
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 7
    functionsReached:
    - fs_file_timing_end
    - struct fs_file*::fs::v::write
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: int fs_write(struct fs_file *file, const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1008,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1009,1
    - Dst: struct fs_file*::fs::v::write_stream
      Src: /src/dovecot/src/lib-fs/fs-api.c:1014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1015
    functionName: fs_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 8
    functionsReached:
    - i_assert
    - struct fs_file*::fs::v::write_stream
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *fs_write_stream(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1025,1
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1027,1
    - Dst: struct fs_file*::fs::v::write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-api.c:1029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1021
    functionDepth: 2
    functionLinenumber: 1021
    functionLinenumberEnd: 1030
    functionName: fs_write_stream_finish_int
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - i_assert
    - struct fs_file*::fs::v::write_stream_finish
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: int fs_write_stream_finish_int(struct fs_file *file, bool success)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1051,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1052,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-fs/fs-api.c:1056,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-api.c:1057,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1058,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1059,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:1061,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1062,1
    - Dst: fs_write_stream_finish_int
      Src: /src/dovecot/src/lib-fs/fs-api.c:1067,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - file
    - output
    argTypes:
    - struct fs_file*
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1046
    functionDepth: 3
    functionLinenumber: 1046
    functionLinenumberEnd: 1068
    functionName: fs_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 7
    functionsReached:
    - o_stream_get_name
    - fs_set_error
    - o_stream_uncork
    - o_stream_get_error
    - o_stream_finish
    - fs_write_stream_finish_int
    - i_assert
    linkageType: ''
    returnType: int
    signature: int fs_write_stream_finish(struct fs_file *file, struct ostream **output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_write_stream_finish_int
      Src: /src/dovecot/src/lib-fs/fs-api.c:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1070
    functionDepth: 3
    functionLinenumber: 1070
    functionLinenumberEnd: 1073
    functionName: fs_write_stream_finish_async
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - fs_write_stream_finish_int
    linkageType: ''
    returnType: int
    signature: int fs_write_stream_finish_async(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1079,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1080,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1081,1
    - Dst: o_stream_abort
      Src: /src/dovecot/src/lib-fs/fs-api.c:1084,1
    - Dst: fs_write_stream_finish_int
      Src: /src/dovecot/src/lib-fs/fs-api.c:1086,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - file
    - output
    argTypes:
    - struct fs_file*
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1075
    functionDepth: 3
    functionLinenumber: 1075
    functionLinenumberEnd: 1088
    functionName: fs_write_stream_abort
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_write_stream_finish_int
    - i_assert
    - o_stream_abort
    linkageType: ''
    returnType: void
    signature: void fs_write_stream_abort(struct fs_file *file, struct ostream **output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1093,1
    - Dst: fs_set_verror
      Src: /src/dovecot/src/lib-fs/fs-api.c:1094,1
    - Dst: fs_file_get_error_file
      Src: /src/dovecot/src/lib-fs/fs-api.c:1097,1
    - Dst: fs_write_stream_abort
      Src: /src/dovecot/src/lib-fs/fs-api.c:1098,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-fs/fs-api.c:1099,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - file
    - output
    - error_fmt
    argTypes:
    - struct fs_file*
    - struct ostream**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1090
    functionDepth: 4
    functionLinenumber: 1090
    functionLinenumberEnd: 1100
    functionName: fs_write_stream_abort_error
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 3
    functionsReached:
    - va_start
    - fs_set_verror
    - fs_file_get_error_file
    - fs_write_stream_abort
    - va_end
    linkageType: ''
    returnType: void
    signature: void fs_write_stream_abort_error(struct fs_file *file, struct ostream
      **output, const char *error_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1104,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1105,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1105,1
    - Dst: fs_write_stream_abort
      Src: /src/dovecot/src/lib-fs/fs-api.c:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - file
    - output
    argTypes:
    - struct fs_file*
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1102
    functionDepth: 4
    functionLinenumber: 1102
    functionLinenumberEnd: 1107
    functionName: fs_write_stream_abort_parent
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - i_assert
    - fs_write_stream_abort
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void fs_write_stream_abort_parent(struct fs_file *file, struct ostream
      **output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-api.c:1114,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-fs/fs-api.c:1115,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-fs/fs-api.c:1116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - file
    - method
    - digest
    argTypes:
    - struct fs_file*
    - struct hash_method*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1109
    functionDepth: 1
    functionLinenumber: 1109
    functionLinenumberEnd: 1117
    functionName: fs_write_set_hash
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_malloc
    - i_free
    linkageType: ''
    returnType: void
    signature: "void fs_write_set_hash(struct fs_file *file, const struct hash_method
      *method,\n\t\t       const void *digest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct fs_file*::fs::v::set_async_callback
      Src: /src/dovecot/src/lib-fs/fs-api.c:1125,1
    - Dst: callback
      Src: /src/dovecot/src/lib-fs/fs-api.c:1127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - file
    - callback
    - context
    argTypes:
    - struct fs_file*
    - fs_file_async_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1120
    functionDepth: 0
    functionLinenumber: 1120
    functionLinenumberEnd: 1128
    functionName: fs_file_set_async_callback
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - struct fs_file*::fs::v::set_async_callback
    - callback
    linkageType: ''
    returnType: void
    signature: "void fs_file_set_async_callback(struct fs_file *file,\n\t\t\t\tfs_file_async_callback_t
      *callback,\n\t\t\t\tvoid *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1133,1
    - Dst: struct fs*::v::wait_async
      Src: /src/dovecot/src/lib-fs/fs-api.c:1137,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1140
    functionName: fs_wait_async
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - i_assert
    - struct fs*::v::wait_async
    linkageType: ''
    returnType: void
    signature: void fs_wait_async(struct fs *fs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct fs*::v::switch_ioloop
      Src: /src/dovecot/src/lib-fs/fs-api.c:1149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1143
    functionDepth: 0
    functionLinenumber: 1143
    functionLinenumberEnd: 1151
    functionName: fs_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - struct fs*::v::switch_ioloop
    linkageType: ''
    returnType: bool
    signature: bool fs_switch_ioloop(struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct fs_file*::fs::v::lock
      Src: /src/dovecot/src/lib-fs/fs-api.c:1162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - secs
    - lock_r
    argTypes:
    - struct fs_file*
    - unsigned int
    - struct fs_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1157
    functionDepth: 0
    functionLinenumber: 1157
    functionLinenumberEnd: 1163
    functionName: fs_lock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - struct fs_file*::fs::v::lock
    linkageType: ''
    returnType: int
    signature: int fs_lock(struct fs_file *file, unsigned int secs, struct fs_lock
      **lock_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct fs_lock*::file::fs::v::unlock
      Src: /src/dovecot/src/lib-fs/fs-api.c:1176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _lock
    argTypes:
    - struct fs_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1167
    functionDepth: 0
    functionLinenumber: 1167
    functionLinenumberEnd: 1177
    functionName: fs_unlock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - struct fs_lock*::file::fs::v::unlock
    linkageType: ''
    returnType: void
    signature: void fs_unlock(struct fs_lock **_lock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-api.c:1187,1
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1192,1
    - Dst: struct fs_file*::fs::v::exists
      Src: /src/dovecot/src/lib-fs/fs-api.c:1194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1180
    functionDepth: 2
    functionLinenumber: 1180
    functionLinenumberEnd: 1195
    functionName: fs_exists
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - struct fs_file*::fs::v::exists
    - fs_stat
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: int fs_exists(struct fs_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1208,1
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1216,1
    - Dst: struct fs_file*::fs::v::stat
      Src: /src/dovecot/src/lib-fs/fs-api.c:1219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - file
    - st_r
    argTypes:
    - struct fs_file*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1203
    functionDepth: 2
    functionLinenumber: 1203
    functionLinenumberEnd: 1220
    functionName: fs_stat
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 6
    functionsReached:
    - struct fs_file*::fs::v::stat
    - fs_set_error
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: int fs_stat(struct fs_file *file, struct stat *st_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-api.c:1233,1
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1243,1
    - Dst: struct fs_file*::fs::v::get_nlinks
      Src: /src/dovecot/src/lib-fs/fs-api.c:1246,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - file
    - nlinks_r
    argTypes:
    - struct fs_file*
    - nlink_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1226
    functionDepth: 3
    functionLinenumber: 1226
    functionLinenumberEnd: 1247
    functionName: fs_get_nlinks
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - struct fs_file*::fs::v::get_nlinks
    - fs_stat
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: int fs_get_nlinks(struct fs_file *file, nlink_t *nlinks_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1261,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1263,1
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/lib-fs/fs-api.c:1264,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-api.c:1271,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-api.c:1272,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-fs/fs-api.c:1274,1
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-api.c:1279,1
    - Dst: fs_write_stream_abort_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1282,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:1284,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1285,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:1287,1
    - Dst: fs_write_stream_abort_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1292,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-fs/fs-api.c:1294,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1295,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:1297,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-api.c:1300,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-api.c:1301,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1253
    functionDepth: 5
    functionLinenumber: 1253
    functionLinenumberEnd: 1305
    functionName: fs_default_copy
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - fs_write_stream
    - o_stream_get_name
    - o_stream_get_error
    - o_stream_send_istream
    - i_stream_get_error
    - i_stream_unref
    - fs_file_set_error_async
    - fs_write_stream_abort_error
    - fs_write_stream_finish_async
    - fs_read_stream
    - i_assert
    - fs_write_stream_finish
    - i_stream_get_name
    linkageType: ''
    returnType: int
    signature: int fs_default_copy(struct fs_file *src, struct fs_file *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1311,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1314,1
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1318,1
    - Dst: struct fs_file*::fs::v::copy
      Src: /src/dovecot/src/lib-fs/fs-api.c:1320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1307
    functionDepth: 2
    functionLinenumber: 1307
    functionLinenumberEnd: 1321
    functionName: fs_copy
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - i_assert
    - struct fs_file*::fs::v::copy
    - fs_set_error
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: int fs_copy(struct fs_file *src, struct fs_file *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct fs_file*::fs::v::copy
      Src: /src/dovecot/src/lib-fs/fs-api.c:1338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1333
    functionDepth: 0
    functionLinenumber: 1333
    functionLinenumberEnd: 1339
    functionName: fs_copy_finish_async
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - struct fs_file*::fs::v::copy
    linkageType: ''
    returnType: int
    signature: int fs_copy_finish_async(struct fs_file *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1355,1
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1357,1
    - Dst: struct fs_file*::fs::v::rename
      Src: /src/dovecot/src/lib-fs/fs-api.c:1359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1351
    functionDepth: 2
    functionLinenumber: 1351
    functionLinenumberEnd: 1360
    functionName: fs_rename
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - struct fs_file*::fs::v::rename
    - i_assert
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: int fs_rename(struct fs_file *src, struct fs_file *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_timing_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1372,1
    - Dst: struct fs_file*::fs::v::delete_file
      Src: /src/dovecot/src/lib-fs/fs-api.c:1374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1368
    functionDepth: 2
    functionLinenumber: 1368
    functionLinenumberEnd: 1375
    functionName: fs_delete
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 5
    functionsReached:
    - struct fs_file*::fs::v::delete_file
    - fs_file_timing_start
    linkageType: ''
    returnType: int
    signature: int fs_delete(struct fs_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_iter_init_with_event
      Src: /src/dovecot/src/lib-fs/fs-api.c:1386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fs
    - path
    - flags
    argTypes:
    - struct fs*
    - char*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1387
      start: 1383
    functionDepth: 1
    functionLinenumber: 1383
    functionLinenumberEnd: 1387
    functionName: fs_iter_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - fs_iter_init_with_event
    linkageType: ''
    returnType: struct fs_iter
    signature: 'struct fs_iter *

      fs_iter_init(struct fs *fs, const char *path, enum fs_iter_flags flags)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1396,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/lib-fs/fs-api.c:1397,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-fs/fs-api.c:1401,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-api.c:1403,1
    - Dst: struct fs*::v::iter_alloc
      Src: /src/dovecot/src/lib-fs/fs-api.c:1405,1
    - Dst: fs_create_event
      Src: /src/dovecot/src/lib-fs/fs-api.c:1407,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:1408,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-fs/fs-api.c:1409,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-api.c:1412,1
    - Dst: struct fs*::v::iter_init
      Src: /src/dovecot/src/lib-fs/fs-api.c:1413,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - fs
    - event
    - path
    - flags
    argTypes:
    - struct fs*
    - struct event*
    - char*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1389
    functionDepth: 1
    functionLinenumber: 1389
    functionLinenumberEnd: 1414
    functionName: fs_iter_init_with_event
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - i_gettimeofday
    - fs_get_properties
    - struct fs*::v::iter_alloc
    - i_strdup
    - struct fs*::v::iter_init
    - event_set_ptr
    - i_new
    - i_assert
    - fs_create_event
    linkageType: ''
    returnType: struct fs_iter
    signature: "struct fs_iter *\nfs_iter_init_with_event(struct fs *fs, struct event
      *event,\n\t\t\tconst char *path, enum fs_iter_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-fs/fs-api.c:1434,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1437,1
    - Dst: struct fs_iter*::fs::v::iter_deinit
      Src: /src/dovecot/src/lib-fs/fs-api.c:1440,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - _iter
    - error_r
    argTypes:
    - struct fs_iter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1420
    functionDepth: 1
    functionLinenumber: 1420
    functionLinenumberEnd: 1441
    functionName: fs_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - struct fs_iter*::fs::v::iter_deinit
    - DLLIST_REMOVE
    - fs_set_error
    linkageType: ''
    returnType: int
    signature: int fs_iter_deinit(struct fs_iter **_iter, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct fs_iter*::fs::v::iter_next
      Src: /src/dovecot/src/lib-fs/fs-api.c:1458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1459
      start: 1451
    functionDepth: 0
    functionLinenumber: 1451
    functionLinenumberEnd: 1459
    functionName: fs_iter_next
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 2
    functionsReached:
    - struct fs_iter*::fs::v::iter_next
    linkageType: ''
    returnType: char
    signature: char *fs_iter_next(struct fs_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - iter
    - callback
    - context
    argTypes:
    - struct fs_iter*
    - fs_file_async_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1473
    functionDepth: 0
    functionLinenumber: 1473
    functionLinenumberEnd: 1479
    functionName: fs_iter_set_async_callback
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fs_iter_set_async_callback(struct fs_iter *iter,\n\t\t\t\tfs_file_async_callback_t
      *callback,\n\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1481
    functionDepth: 0
    functionLinenumber: 1481
    functionLinenumberEnd: 1484
    functionName: fs_iter_have_more
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool fs_iter_have_more(struct fs_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1486
    functionDepth: 0
    functionLinenumber: 1486
    functionLinenumberEnd: 1489
    functionName: fs_get_stats
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct fs_stats
    signature: struct fs_stats *fs_get_stats(struct fs *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1495,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1498,1
    - Dst: fs_set_verror
      Src: /src/dovecot/src/lib-fs/fs-api.c:1499,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-fs/fs-api.c:1500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - event
    - err
    - fmt
    argTypes:
    - struct event*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1491
    functionDepth: 2
    functionLinenumber: 1491
    functionLinenumberEnd: 1501
    functionName: fs_set_error
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 17
    functionsReached:
    - fs_set_verror
    - i_assert
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void fs_set_error(struct event *event, int err, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-api.c:1507,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-fs/fs-api.c:1509,1
    - Dst: fs_set_verror
      Src: /src/dovecot/src/lib-fs/fs-api.c:1510,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-fs/fs-api.c:1511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - event
    - fmt
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1503
    functionDepth: 2
    functionLinenumber: 1503
    functionLinenumberEnd: 1512
    functionName: fs_set_error_errno
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 19
    functionsReached:
    - fs_set_verror
    - i_assert
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void fs_set_error_errno(struct event *event, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-api.c:1516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1514
    functionDepth: 3
    functionLinenumber: 1514
    functionLinenumberEnd: 1517
    functionName: fs_file_set_error_async
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 3
    functionsReached:
    - fs_set_error
    linkageType: ''
    returnType: void
    signature: void fs_file_set_error_async(struct fs_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_get_sum
      Src: /src/dovecot/src/lib-fs/fs-api.c:1527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stats
    - ops
    - ops_count
    argTypes:
    - struct fs_stats*
    - enum fs_op[]
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1519
    functionDepth: 1
    functionLinenumber: 1519
    functionLinenumberEnd: 1530
    functionName: fs_stats_count_ops
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - stats_dist_get_sum
    linkageType: ''
    returnType: uint64_t
    signature: "uint64_t fs_stats_count_ops(const struct fs_stats *stats, const enum
      fs_op ops[],\n\t\t   unsigned int ops_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_stats_count_ops
      Src: /src/dovecot/src/lib-fs/fs-api.c:1538,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-fs/fs-api.c:1538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct fs_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1532
    functionDepth: 2
    functionLinenumber: 1532
    functionLinenumberEnd: 1539
    functionName: fs_stats_get_read_usecs
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_stats_count_ops
    - N_ELEMENTS
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t fs_stats_get_read_usecs(const struct fs_stats *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_stats_count_ops
      Src: /src/dovecot/src/lib-fs/fs-api.c:1546,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-fs/fs-api.c:1546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct fs_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1541
    functionDepth: 2
    functionLinenumber: 1541
    functionLinenumberEnd: 1547
    functionName: fs_stats_get_write_usecs
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached:
    - fs_stats_count_ops
    - N_ELEMENTS
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t fs_stats_get_write_usecs(const struct fs_stats *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_init_with_event
      Src: /src/dovecot/src/lib-fs/fs-api.c:1553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - parent
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1549
    functionDepth: 2
    functionLinenumber: 1549
    functionLinenumberEnd: 1555
    functionName: fs_file_init_parent
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 4
    functionsReached:
    - fs_file_init_with_event
    linkageType: ''
    returnType: struct fs_file
    signature: "struct fs_file *\nfs_file_init_parent(struct fs_file *parent, const
      char *path,\n\t\t    enum fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_iter_init_with_event
      Src: /src/dovecot/src/lib-fs/fs-api.c:1561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - parent
    - path
    - flags
    argTypes:
    - struct fs_iter*
    - char*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1557
    functionDepth: 2
    functionLinenumber: 1557
    functionLinenumberEnd: 1563
    functionName: fs_iter_init_parent
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 1
    functionsReached:
    - fs_iter_init_with_event
    linkageType: ''
    returnType: struct fs_iter
    signature: "struct fs_iter *\nfs_iter_init_parent(struct fs_iter *parent,\n\t\t
      \   const char *path, enum fs_iter_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1565
    functionDepth: 0
    functionLinenumber: 1565
    functionLinenumberEnd: 1568
    functionName: fs_get_event
    functionSourceFile: /src/dovecot/src/lib-fs/fs-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *fs_get_event(struct fs *fs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:22,1
    - Dst: struct metawrap_istream*::callback
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:24,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:27,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:29,1
    - Dst: struct metawrap_istream*::callback
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:36,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:43,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:52,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct metawrap_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 54
    functionName: metadata_header_read
    functionSourceFile: /src/dovecot/src/lib-fs/istream-metawrap.c
    functionUses: 0
    functionsReached:
    - strchr
    - struct metawrap_istream*::callback
    - io_stream_set_error
    - i_stream_read_next_line
    - i_assert
    linkageType: ''
    returnType: int
    signature: int metadata_header_read(struct metawrap_istream *mstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:61,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:65,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:67,1
    - Dst: metadata_header_read
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:68,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:71,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:79,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:80,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:84,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 85
    functionName: i_stream_metawrap_read
    functionSourceFile: /src/dovecot/src/lib-fs/istream-metawrap.c
    functionUses: 0
    functionsReached:
    - i_stream_read_copy_from_parent
    - i_stream_get_max_buffer_size
    - i_stream_seek
    - i_stream_set_max_buffer_size
    - i_assert
    - i_stream_read_memarea
    - metadata_header_read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_metawrap_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 103
    functionName: i_stream_metawrap_seek
    functionSourceFile: /src/dovecot/src/lib-fs/istream-metawrap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void i_stream_metawrap_seek(struct istream_private *stream,\n\t\t
      \      uoff_t v_offset, bool mark ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:111,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:118,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 129
    functionName: i_stream_metawrap_stat
    functionSourceFile: /src/dovecot/src/lib-fs/istream-metawrap.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_stat
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int i_stream_metawrap_stat(struct istream_private *stream, bool exact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:137,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:150,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-fs/istream-metawrap.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - input
    - callback
    - context
    argTypes:
    - struct istream*
    - metawrap_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 152
    functionName: i_stream_create_metawrap
    functionSourceFile: /src/dovecot/src/lib-fs/istream-metawrap.c
    functionUses: 1
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_metawrap(struct istream *input,\n\t\t\t
      metawrap_callback_t *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-fs/istream-fs-stats.c:19,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib-fs/istream-fs-stats.c:22,1
    - Dst: fs_file_timing_end
      Src: /src/dovecot/src/lib-fs/istream-fs-stats.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 31
    functionName: i_stream_fs_stats_read
    functionSourceFile: /src/dovecot/src/lib-fs/istream-fs-stats.c
    functionUses: 0
    functionsReached:
    - i_stream_read_copy_from_parent
    - fs_file_timing_end
    - i_stream_seek
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_fs_stats_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/istream-fs-stats.c:38,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-fs/istream-fs-stats.c:45,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-fs/istream-fs-stats.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - input
    - file
    argTypes:
    - struct istream*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 47
    functionName: i_stream_create_fs_stats
    functionSourceFile: /src/dovecot/src/lib-fs/istream-fs-stats.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_fs_stats(struct istream *input, struct fs_file *file)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: RANDOMFAIL_FS
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RANDOMFAIL_FS(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: RANDOMFAIL_FILE
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RANDOMFAIL_FILE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: RANDOMFAIL_ITER
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RANDOMFAIL_ITER(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 79
    functionName: fs_randomfail_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_randomfail_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - op_r
    argTypes:
    - char*
    - enum fs_op*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 92
    functionName: fs_op_find
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool fs_op_find(const char *str, enum fs_op *op_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:103,1
    - Dst: fs_op_find
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:105,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:113,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - fs
    - key
    - value
    - error_r
    argTypes:
    - struct randomfail_fs*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 123
    functionName: fs_randomfail_add_probability
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_to_uint
    - fs_op_find
    linkageType: ''
    returnType: int
    signature: "int fs_randomfail_add_probability(struct randomfail_fs *fs,\n\t\t\t
      \     const char *key, const char *value,\n\t\t\t      const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:136,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:138,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:143,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:145,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:150,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:150,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:151,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 4
    argNames:
    - fs
    - key
    - value
    - error_r
    argTypes:
    - struct randomfail_fs*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 158
    functionName: fs_randomfail_add_probability_range
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - str_to_uoff
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: "int fs_randomfail_add_probability_range(struct randomfail_fs *fs,\n\t\t\t\t
      \   const char *key, const char *value,\n\t\t\t\t    const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fs_randomfail_add_probability
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:166,1
    - Dst: fs_randomfail_add_probability_range
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:171,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:176,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - fs
    - key
    - value
    - error_r
    argTypes:
    - struct randomfail_fs*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 178
    functionName: fs_randomfail_op_add
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_randomfail_add_probability_range
    - t_strdup_printf
    - fs_randomfail_add_probability
    linkageType: ''
    returnType: int
    signature: "int fs_randomfail_op_add(struct randomfail_fs *fs, const char *key,\n\t\t
      \    const char *value, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FS
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:184,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:189,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:192,1
    - Dst: fs_randomfail_op_add
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:194,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:195,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:199,1
    - Dst: fs_init_parent
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - _fs
    - params
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 180
    functionDepth: 7
    functionLinenumber: 180
    functionLinenumberEnd: 202
    functionName: fs_randomfail_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_init_parent
    - array_get
    - settings_free
    - fs_randomfail_op_add
    - settings_get
    - RANDOMFAIL_FS
    linkageType: ''
    returnType: int
    signature: "int fs_randomfail_init(struct fs *_fs, const struct fs_parameters
      *params,\n\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FS
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:206,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 209
    functionName: fs_randomfail_free
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - i_free
    - RANDOMFAIL_FS
    linkageType: ''
    returnType: void
    signature: void fs_randomfail_free(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_get_properties
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: fs_randomfail_get_properties
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_get_properties
    linkageType: ''
    returnType: enum fs_properties
    signature: enum fs_properties fs_randomfail_get_properties(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: fs_randomfail_file_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_randomfail_file_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:226,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:228,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 230
    functionName: fs_randomfail_file_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - RANDOMFAIL_FILE
    - fs_file_init_parent
    linkageType: ''
    returnType: void
    signature: "void fs_randomfail_file_init(struct fs_file *_file, const char *path,\n\t\t\tenum
      fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:234,1
    - Dst: fs_file_free
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:236,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:237,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 232
    functionDepth: 3
    functionLinenumber: 232
    functionLinenumberEnd: 239
    functionName: fs_randomfail_file_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - fs_file_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_randomfail_file_deinit(struct fs_file *_file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FS
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:244,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:249,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:250,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 5
    argNames:
    - _fs
    - event
    - divider
    - op
    - post_op
    argTypes:
    - struct fs*
    - struct event*
    - int
    - enum fs_op
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 254
    functionName: fs_random_fail
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - i_rand_limit
    - fs_set_error
    - RANDOMFAIL_FS
    linkageType: ''
    returnType: bool
    signature: "bool fs_random_fail(struct fs *_fs, struct event *event,\n\t\t\t   int
      divider, enum fs_op op, bool post_op)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_random_fail
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - file
    - op
    argTypes:
    - struct randomfail_fs_file*
    - enum fs_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 256
    functionDepth: 4
    functionLinenumber: 256
    functionLinenumberEnd: 265
    functionName: fs_file_random_fail_begin
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_random_fail
    linkageType: ''
    returnType: bool
    signature: bool fs_file_random_fail_begin(struct randomfail_fs_file *file, enum
      fs_op op)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_random_fail
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - file
    - ret
    - op
    argTypes:
    - struct randomfail_fs_file*
    - int
    - enum fs_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 267
    functionDepth: 4
    functionLinenumber: 267
    functionLinenumberEnd: 277
    functionName: fs_file_random_fail_end
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_random_fail
    linkageType: ''
    returnType: int
    signature: "int fs_file_random_fail_end(struct randomfail_fs_file *file,\n\t\t\tint
      ret, enum fs_op op)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FS
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:283,1
    - Dst: fs_random_fail
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:285,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - _fs
    - event
    - op
    - post_op
    - offset_r
    argTypes:
    - struct fs*
    - struct event*
    - enum fs_op
    - bool
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: fs_random_fail_range
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - i_rand_minmax
    - fs_random_fail
    - RANDOMFAIL_FS
    linkageType: ''
    returnType: bool
    signature: "bool fs_random_fail_range(struct fs *_fs, struct event *event,\n\t\t
      \    enum fs_op op, bool post_op, uoff_t *offset_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:296,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:299,1
    - Dst: fs_get_metadata_full
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:301,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _file
    - flags
    - metadata_r
    argTypes:
    - struct fs_file*
    - enum fs_get_metadata_flags
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 291
    functionDepth: 5
    functionLinenumber: 291
    functionLinenumberEnd: 303
    functionName: fs_randomfail_get_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - fs_get_metadata_full
    - fs_file_random_fail_begin
    - fs_file_random_fail_end
    linkageType: ''
    returnType: int
    signature: "int fs_randomfail_get_metadata(struct fs_file *_file,\n\t\t\t   enum
      fs_get_metadata_flags flags,\n\t\t\t   const ARRAY_TYPE(fs_metadata) **metadata_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_random_fail
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:307,1
    - Dst: fs_prefetch
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _file
    - length
    argTypes:
    - struct fs_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 305
    functionDepth: 4
    functionLinenumber: 305
    functionLinenumberEnd: 310
    functionName: fs_randomfail_prefetch
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_random_fail
    - fs_prefetch
    linkageType: ''
    returnType: bool
    signature: bool fs_randomfail_prefetch(struct fs_file *_file, uoff_t length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:314,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:317,1
    - Dst: fs_read
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:319,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:320,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - _file
    - buf
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 312
    functionDepth: 5
    functionLinenumber: 312
    functionLinenumberEnd: 323
    functionName: fs_randomfail_read
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - fs_file_random_fail_begin
    - fs_read
    - fs_file_random_fail_end
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fs_randomfail_read(struct fs_file *_file, void *buf, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:331,1
    - Dst: fs_random_fail_range
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:332,1
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:334,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - _file
    - max_buffer_size
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 325
    functionDepth: 5
    functionLinenumber: 325
    functionLinenumberEnd: 337
    functionName: fs_randomfail_read_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_read_stream
    - fs_random_fail_range
    - i_stream_create_failure_at
    - i_stream_unref
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_randomfail_read_stream(struct fs_file *_file, size_t max_buffer_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:341,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:344,1
    - Dst: fs_write
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:346,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _file
    - data
    - size
    argTypes:
    - struct fs_file*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 339
    functionDepth: 5
    functionLinenumber: 339
    functionLinenumberEnd: 348
    functionName: fs_randomfail_write
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_write
    - RANDOMFAIL_FILE
    - fs_file_random_fail_begin
    - fs_file_random_fail_end
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_write(struct fs_file *_file, const void *data, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:352,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:355,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:357,1
    - Dst: fs_random_fail_range
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:358,1
    - Dst: o_stream_create_failure_at
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 350
    functionDepth: 5
    functionLinenumber: 350
    functionLinenumberEnd: 364
    functionName: fs_randomfail_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_write_stream
    - RANDOMFAIL_FILE
    - o_stream_create_failure_at
    - fs_random_fail_range
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_randomfail_write_stream(struct fs_file *_file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:368,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:374,1
    - Dst: fs_write_stream_abort_parent
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:376,1
    - Dst: fs_random_fail
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:379,1
    - Dst: fs_write_stream_abort_error
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:380,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:384,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 366
    functionDepth: 5
    functionLinenumber: 366
    functionLinenumberEnd: 385
    functionName: fs_randomfail_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - o_stream_unref
    - fs_random_fail
    - fs_write_stream_abort_parent
    - fs_write_stream_abort_error
    - fs_write_stream_finish
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_random_fail
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:390,1
    - Dst: fs_lock
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _file
    - secs
    - lock_r
    argTypes:
    - struct fs_file*
    - unsigned int
    - struct fs_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 387
    functionDepth: 4
    functionLinenumber: 387
    functionLinenumberEnd: 393
    functionName: fs_randomfail_lock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_random_fail
    - fs_lock
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_lock(struct fs_file *_file, unsigned int secs, struct
      fs_lock **lock_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct fs_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: fs_randomfail_unlock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void fs_randomfail_unlock(struct fs_lock *_lock ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:402,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:405,1
    - Dst: fs_exists
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:407,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 400
    functionDepth: 5
    functionLinenumber: 400
    functionLinenumberEnd: 409
    functionName: fs_randomfail_exists
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - fs_file_random_fail_begin
    - fs_file_random_fail_end
    - fs_exists
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_exists(struct fs_file *_file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:413,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:416,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:418,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _file
    - st_r
    argTypes:
    - struct fs_file*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 411
    functionDepth: 5
    functionLinenumber: 411
    functionLinenumberEnd: 420
    functionName: fs_randomfail_stat
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - fs_file_random_fail_begin
    - fs_stat
    - fs_file_random_fail_end
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_stat(struct fs_file *_file, struct stat *st_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:424,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:427,1
    - Dst: fs_get_nlinks
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:429,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _file
    - nlinks_r
    argTypes:
    - struct fs_file*
    - nlink_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 422
    functionDepth: 5
    functionLinenumber: 422
    functionLinenumberEnd: 431
    functionName: fs_randomfail_get_nlinks
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - fs_file_random_fail_begin
    - fs_file_random_fail_end
    - fs_get_nlinks
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_get_nlinks(struct fs_file *_file, nlink_t *nlinks_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:435,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:438,1
    - Dst: fs_copy
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:442,1
    - Dst: fs_copy_finish_async
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:444,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _src
    - _dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 433
    functionDepth: 5
    functionLinenumber: 433
    functionLinenumberEnd: 446
    functionName: fs_randomfail_copy
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - fs_copy_finish_async
    - RANDOMFAIL_FILE
    - fs_file_random_fail_begin
    - fs_file_random_fail_end
    - fs_copy
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_copy(struct fs_file *_src, struct fs_file *_dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:450,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:453,1
    - Dst: fs_rename
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:455,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _src
    - _dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 448
    functionDepth: 5
    functionLinenumber: 448
    functionLinenumberEnd: 457
    functionName: fs_randomfail_rename
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - fs_file_random_fail_begin
    - fs_rename
    - fs_file_random_fail_end
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_rename(struct fs_file *_src, struct fs_file *_dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_FILE
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:461,1
    - Dst: fs_file_random_fail_begin
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:464,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:466,1
    - Dst: fs_file_random_fail_end
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:467,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 459
    functionDepth: 5
    functionLinenumber: 459
    functionLinenumberEnd: 468
    functionName: fs_randomfail_delete
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_FILE
    - fs_delete
    - fs_file_random_fail_begin
    - fs_file_random_fail_end
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_delete(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 474
    functionName: fs_randomfail_iter_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_iter
    signature: struct fs_iter *fs_randomfail_iter_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_ITER
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:480,1
    - Dst: fs_iter_init_parent
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:483,1
    - Dst: fs_random_fail_range
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _iter
    - path
    - flags
    argTypes:
    - struct fs_iter*
    - char*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 476
    functionDepth: 5
    functionLinenumber: 476
    functionLinenumberEnd: 486
    functionName: fs_randomfail_iter_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_ITER
    - fs_iter_init_parent
    - fs_random_fail_range
    linkageType: ''
    returnType: void
    signature: "void fs_randomfail_iter_init(struct fs_iter *_iter, const char *path,\n\t\t\tenum
      fs_iter_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_ITER
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:490,1
    - Dst: fs_iter_next
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 505
    functionName: fs_randomfail_iter_next
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_ITER
    - fs_iter_next
    linkageType: ''
    returnType: char
    signature: char *fs_randomfail_iter_next(struct fs_iter *_iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RANDOMFAIL_ITER
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:509,1
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:513,1
    - Dst: fs_set_error_errno
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:514,1
    - Dst: fs_set_error
      Src: /src/dovecot/src/lib-fs/fs-randomfail.c:516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 507
    functionDepth: 3
    functionLinenumber: 507
    functionLinenumberEnd: 520
    functionName: fs_randomfail_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-randomfail.c
    functionUses: 0
    functionsReached:
    - RANDOMFAIL_ITER
    - fs_set_error_errno
    - fs_set_error
    - fs_iter_deinit
    linkageType: ''
    returnType: int
    signature: int fs_randomfail_iter_deinit(struct fs_iter *_iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:31,1
    - Dst: settings_simple_update
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:32,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:33,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:34,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:37,1
    - Dst: test_fs_file_get
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:39,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:40,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:43,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:44,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:49,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:49,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:51,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:52,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:54,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:55,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 21
    functionDepth: 7
    functionLinenumber: 21
    functionLinenumberEnd: 56
    functionName: test_fs_metawrap_stat
    functionSourceFile: /src/dovecot/src/lib-fs/test-fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - fs_init_auto
    - settings_simple_update
    - test_assert_idx
    - fs_deinit
    - i_fatal
    - test_istream_set_max_buffer_size
    - test_end
    - test_fs_file_get
    - fs_stat
    - i_stream_unref
    - str_append
    - fs_read_stream
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_fs_metawrap_stat(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_simple_update
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:68,1
    - Dst: test_fs_async
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:69,1
    - Dst: test_fs_async
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:70,1
    - Dst: settings_simple_update
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:71,1
    - Dst: test_fs_async
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 73
    functionName: test_fs_metawrap_async
    functionSourceFile: /src/dovecot/src/lib-fs/test-fs-metawrap.c
    functionUses: 0
    functionsReached:
    - test_fs_async
    - settings_simple_update
    linkageType: ''
    returnType: void
    signature: void test_fs_metawrap_async(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:81,1
    - Dst: settings_simple_update
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:82,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:83,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:84,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:85,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:87,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:88,1
    - Dst: fs_stat
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:88,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:89,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:90,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 75
    functionDepth: 7
    functionLinenumber: 75
    functionLinenumberEnd: 92
    functionName: test_fs_metawrap_write_empty
    functionSourceFile: /src/dovecot/src/lib-fs/test-fs-metawrap.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - fs_write_stream
    - fs_write_stream_finish
    - fs_init_auto
    - settings_simple_update
    - fs_deinit
    - i_fatal
    - test_end
    - fs_stat
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_fs_metawrap_write_empty(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:99,1
    - Dst: settings_simple_update
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:100,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:101,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:102,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:103,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:104,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:105,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:107,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:108,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:108,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:108,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:109,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:110,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 7
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: test_fs_metawrap_write_fname_rename
    functionSourceFile: /src/dovecot/src/lib-fs/test-fs-metawrap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - fs_file_init
    - fs_write_stream
    - fs_write_stream_finish
    - fs_file_deinit
    - fs_init_auto
    - settings_simple_update
    - fs_deinit
    - fs_set_metadata
    - i_fatal
    - test_end
    - fs_file_path
    - test_assert
    - o_stream_nsend_str
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_fs_metawrap_write_fname_rename(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:124,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:125,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:126,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:127,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-fs/test-fs-metawrap.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 114
    functionDepth: 4
    functionLinenumber: 114
    functionLinenumberEnd: 130
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-fs/test-fs-metawrap.c
    functionUses: 0
    functionsReached:
    - settings_simple_deinit
    - lib_deinit
    - lib_init
    - test_run
    - settings_simple_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-test.c:13,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-fs/fs-test.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 17
    functionName: fs_test_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_test_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: fs_test_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fs_test_init(struct fs *_fs ATTR_UNUSED,\n\t     const struct
      fs_parameters *params ATTR_UNUSED,\n\t     const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:31,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: fs_test_free
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void fs_test_free(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: fs_test_get_properties
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum fs_properties
    signature: enum fs_properties fs_test_get_properties(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-test.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: fs_test_file_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_test_file_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-test.c:54,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-fs/fs-test.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: fs_test_file_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - buffer_create_dynamic
    linkageType: ''
    returnType: void
    signature: "void fs_test_file_init(struct fs_file *_file, const char *path,\n\t\t
      \ enum fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:67,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:68,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:69,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: fs_test_file_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - fs_file_free
    - i_free
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void fs_test_file_deinit(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: fs_test_file_close
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fs_test_file_close(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: fs_test_file_get_path
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *fs_test_file_get_path(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _file
    - callback
    - context
    argTypes:
    - struct fs_file*
    - fs_file_async_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 94
    functionName: fs_test_set_async_callback
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fs_test_set_async_callback(struct fs_file *_file,\n\t\t\t   fs_file_async_callback_t
      *callback,\n\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: fs_test_wait_async
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fs_test_wait_async(struct fs *_fs ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-test.c:104,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:105,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-test.c:106,1
    - Dst: fs_default_set_metadata
      Src: /src/dovecot/src/lib-fs/fs-test.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _file
    - key
    - value
    argTypes:
    - struct fs_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 110
    functionName: fs_test_set_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_strdup
    - i_free
    - fs_default_set_metadata
    linkageType: ''
    returnType: void
    signature: "void fs_test_set_metadata(struct fs_file *_file, const char *key,\n\t\t
      \    const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-test.c:125,1
    - Dst: fs_metadata_init
      Src: /src/dovecot/src/lib-fs/fs-test.c:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - _file
    - flags
    - metadata_r
    argTypes:
    - struct fs_file*
    - enum fs_get_metadata_flags
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 135
    functionName: fs_test_get_metadata
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - fs_metadata_init
    - fs_file_set_error_async
    linkageType: ''
    returnType: int
    signature: "int fs_test_get_metadata(struct fs_file *_file,\n\t\t     enum fs_get_metadata_flags
      flags,\n\t\t     const ARRAY_TYPE(fs_metadata) **metadata_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct fs_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: fs_test_prefetch
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool fs_test_prefetch(struct fs_file *_file ATTR_UNUSED,\n\t\t\t     uoff_t
      length ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-test.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct test_fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: fs_test_stream_destroyed
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_test_stream_destroyed(struct test_fs_file *file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-test.c:158,1
    - Dst: i_stream_create_error
      Src: /src/dovecot/src/lib-fs/fs-test.c:161,1
    - Dst: i_stream_create_error
      Src: /src/dovecot/src/lib-fs/fs-test.c:163,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-fs/fs-test.c:164,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib-fs/fs-test.c:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - _file
    - max_buffer_size ATTR_UNUSED
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 171
    functionName: fs_test_read_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_stream_create_error
    - i_assert
    - i_stream_add_destroy_callback
    - test_istream_create_data
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_test_read_stream(struct fs_file *_file, size_t max_buffer_size ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-test.c:177,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-fs/fs-test.c:179,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-fs/fs-test.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 181
    functionName: fs_test_write_stream
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_assert
    - o_stream_create_buffer
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void fs_test_write_stream(struct fs_file *_file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-fs/fs-test.c:187,1
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-test.c:189,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-fs/fs-test.c:195,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 197
    functionName: fs_test_write_stream_finish
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - o_stream_destroy
    - fs_file_set_error_async
    - buffer_set_used_size
    linkageType: ''
    returnType: int
    signature: int fs_test_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-test.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _file
    - ATTR_UNUSED
    - lock_r
    argTypes:
    - struct fs_file*
    - unsigned int
    - struct fs_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 211
    functionName: fs_test_lock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: int
    signature: "int fs_test_lock(struct fs_file *_file, unsigned int secs ATTR_UNUSED,\n\t
      \    struct fs_lock **lock_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct fs_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 219
    functionName: fs_test_unlock
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_test_unlock(struct fs_lock *lock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-test.c:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 221
    functionDepth: 4
    functionLinenumber: 221
    functionLinenumberEnd: 234
    functionName: fs_test_exists
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - fs_file_set_error_async
    linkageType: ''
    returnType: int
    signature: int fs_test_exists(struct fs_file *_file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-test.c:241,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-fs/fs-test.c:252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - _file
    - st_r
    argTypes:
    - struct fs_file*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 236
    functionDepth: 4
    functionLinenumber: 236
    functionLinenumberEnd: 255
    functionName: fs_test_stat
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_zero
    - fs_file_set_error_async
    linkageType: ''
    returnType: int
    signature: int fs_test_stat(struct fs_file *_file, struct stat *st_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_fs_file_get
      Src: /src/dovecot/src/lib-fs/fs-test.c:263,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-test.c:263,1
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-test.c:266,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-fs/fs-test.c:279,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-fs/fs-test.c:280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - _src
    - _dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 257
    functionDepth: 4
    functionLinenumber: 257
    functionLinenumberEnd: 283
    functionName: fs_test_copy
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - buffer_append_buf
    - buffer_set_used_size
    - test_fs_file_get
    - fs_file_path
    - fs_file_set_error_async
    linkageType: ''
    returnType: int
    signature: int fs_test_copy(struct fs_file *_src, struct fs_file *_dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-test.c:291,1
    - Dst: fs_test_copy
      Src: /src/dovecot/src/lib-fs/fs-test.c:295,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - _src
    - _dest
    argTypes:
    - struct fs_file*
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 285
    functionDepth: 5
    functionLinenumber: 285
    functionLinenumberEnd: 299
    functionName: fs_test_rename
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - fs_test_copy
    - fs_file_set_error_async
    linkageType: ''
    returnType: int
    signature: int fs_test_rename(struct fs_file *_src, struct fs_file *_dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_set_error_async
      Src: /src/dovecot/src/lib-fs/fs-test.c:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 301
    functionDepth: 4
    functionLinenumber: 301
    functionLinenumberEnd: 315
    functionName: fs_test_delete
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - fs_file_set_error_async
    linkageType: ''
    returnType: int
    signature: int fs_test_delete(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-fs/fs-test.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 321
    functionName: fs_test_iter_alloc
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_iter
    signature: struct fs_iter *fs_test_iter_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-test.c:330,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-fs/fs-test.c:331,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-fs/fs-test.c:332,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-fs/fs-test.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _iter
    - path
    - ATTR_UNUSED
    argTypes:
    - struct fs_iter*
    - char*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 334
    functionName: fs_test_iter_init
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - strlen
    - array_sort
    linkageType: ''
    returnType: void
    signature: "void fs_test_iter_init(struct fs_iter *_iter, const char *path,\n\t\t
      \ enum fs_iter_flags flags ATTR_UNUSED)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-fs/fs-test.c:342,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-fs/fs-test.c:344,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-fs/fs-test.c:348,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-fs/fs-test.c:350,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-fs/fs-test.c:365,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:367,1
    - Dst: i_strndup
      Src: /src/dovecot/src/lib-fs/fs-test.c:368,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 372
    functionName: fs_test_iter_next
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - strrchr
    - array_get
    - strlen
    - i_strndup
    - strncmp
    - i_free
    linkageType: ''
    returnType: char
    signature: char *fs_test_iter_next(struct fs_iter *_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-fs/fs-test.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct fs_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 381
    functionName: fs_test_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: int
    signature: int fs_test_iter_deinit(struct fs_iter *_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-test.c:385,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-test.c:386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 390
    functionName: test_fs_get
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 1
    functionsReached:
    - strcmp
    - i_assert
    linkageType: ''
    returnType: struct test_fs
    signature: struct test_fs *test_fs_get(struct fs *fs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_fs_get
      Src: /src/dovecot/src/lib-fs/fs-test.c:396,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-fs/fs-test.c:399,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-fs/fs-test.c:400,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-fs/fs-test.c:400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - fs
    - path
    argTypes:
    - struct fs*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 404
    functionName: test_fs_file_get
    functionSourceFile: /src/dovecot/src/lib-fs/fs-test.c
    functionUses: 4
    functionsReached:
    - strcmp
    - i_assert
    - fs_file_path
    - test_fs_get
    linkageType: ''
    returnType: struct test_fs_file
    signature: struct test_fs_file *test_fs_file_get(struct fs *fs, const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: IS_STANDALONE
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STANDALONE()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:91,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:92,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:95,1
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:98,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:100,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:102,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:103,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:104,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:108,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:112,1
    - Dst: process_title_set
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:113,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:113,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 114
    functionName: imap_urlauth_worker_refresh_proctitle
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - container_of
    - str_append_c
    - str_printfa
    - str_append
    - process_title_set
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_worker_refresh_proctitle(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:119,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 124
    functionName: client_idle_timeout
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_abort
    linkageType: ''
    returnType: void
    signature: void client_idle_timeout(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:131,1
    - Dst: i_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:133,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:134,1
    - Dst: event_create
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:137,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:141,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:142,1
    - Dst: connection_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:145,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:147,1
    - Dst: imap_urlauth_worker_refresh_proctitle
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 152
    functionName: client_create
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 9
    functionsReached:
    - i_array_init
    - event_create
    - timeout_add
    - connection_init_server
    - i_new
    - i_stream_unix_set_read_fd
    - connection_init
    - net_set_nonblock
    - imap_urlauth_worker_refresh_proctitle
    linkageType: ''
    returnType: struct client
    signature: struct client *client_create(int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:162,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:163,1
    - Dst: i_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:165,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:166,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:169,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:171,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:177,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:178,1
    - Dst: event_create
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:181,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:182,1
    - Dst: connection_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:185,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:188,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:190,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 5
    argNames:
    - access_user
    - access_applications
    - fd_in
    - fd_out
    - debug
    argTypes:
    - char*
    - char**
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 196
    functionName: client_create_standalone
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - event_set_forced_debug
    - event_create
    - array_push_back
    - timeout_add
    - connection_init_server
    - i_strdup
    - i_set_failure_prefix
    - i_new
    - connection_init
    - net_set_nonblock
    linkageType: ''
    returnType: struct client
    signature: "struct client *\nclient_create_standalone(const char *access_user,\n\t\t\t
      const char *const *access_applications,\n\t\t\t int fd_in, int fd_out, bool
      debug)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:200,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: client_abort
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 1
    functionsReached:
    - e_error
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void client_abort(struct client *client, const char *reason)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:208,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:211,1
    - Dst: client_run_url
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:215,1
    - Dst: imap_urlauth_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:219,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:222,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:224,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:226,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:228,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:229,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:230,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:231,1
    - Dst: array_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:232,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:233,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:234,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:235,1
    - Dst: settings_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:236,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:237,1
    - Dst: imap_urlauth_worker_refresh_proctitle
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:239,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 204
    functionDepth: 3
    functionLinenumber: 204
    functionLinenumberEnd: 241
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 31
    functionsReached:
    - connection_deinit
    - mail_user_deinit
    - event_unref
    - array_foreach_elem
    - settings_free
    - i_set_failure_prefix
    - timeout_remove
    - imap_urlauth_worker_refresh_proctitle
    - imap_urlauth_deinit
    - array_free
    - client_run_url
    - i_assert
    - i_free
    - master_service_client_connection_destroyed
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void client_destroy(struct client *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:249,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:251,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:253,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:255,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:256,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:265,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:270,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:271,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 275
    functionName: client_run_url
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 1
    functionsReached:
    - imap_msgpart_url_free
    - i_stream_skip
    - o_stream_send
    - o_stream_get_buffer_used_size
    - o_stream_nsend
    - o_stream_flush
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int client_run_url(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:285,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:290,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:291,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:292,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:294,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:295,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - client
    - fmt
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 296
    functionName: client_send_line
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 40
    functionsReached:
    - t_str_new
    - str_data
    - va_start
    - str_len
    - str_vprintfa
    - o_stream_nsend
    - str_append
    linkageType: ''
    returnType: void
    signature: void client_send_line(struct client *client, const char *fmt, ...)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_fetch
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:316,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:321,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:323,1
    - Dst: imap_msgpart_url_set_decode_to_binary
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:332,1
    - Dst: imap_msgpart_url_get_bodypartstructure
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:336,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:339,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:341,1
    - Dst: imap_msgpart_url_read_part
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:349,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:351,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:353,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 6
    argNames:
    - client
    - url
    - url_flags
    - bpstruct_r
    - binary_with_nuls_r
    - errormsg_r
    argTypes:
    - struct client*
    - char*
    - enum imap_urlauth_fetch_flags
    - char**
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 301
    functionDepth: 5
    functionLinenumber: 301
    functionLinenumberEnd: 361
    functionName: client_fetch_urlpart
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_fetch
    - e_debug
    - t_strdup_printf
    - imap_msgpart_url_read_part
    - imap_msgpart_url_get_bodypartstructure
    - imap_msgpart_url_set_decode_to_binary
    linkageType: ''
    returnType: int
    signature: "int client_fetch_urlpart(struct client *client, const char *url,\n\t\t
      \    enum imap_urlauth_fetch_flags url_flags,\n\t\t     const char **bpstruct_r,
      bool *binary_with_nuls_r,\n\t\t     const char **errormsg_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:371,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:376,1
    - Dst: client_fetch_urlpart
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:379,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:384,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:389,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:391,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:392,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:396,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:401,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:402,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:404,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:406,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:407,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:407,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:408,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:413,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:416,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:417,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:417,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:419,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:421,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:425,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:426,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:426,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:428,1
    - Dst: client_run_url
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:432,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:433,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:441,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:444,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 3
    argNames:
    - client
    - url
    - url_flags
    argTypes:
    - struct client*
    - char*
    - enum imap_urlauth_fetch_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 363
    functionDepth: 6
    functionLinenumber: 363
    functionLinenumberEnd: 446
    functionName: client_fetch_url
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - client_run_url
    - o_stream_uncork
    - e_debug
    - imap_msgpart_url_free
    - client_abort
    - o_stream_cork
    - str_tabescape
    - client_send_line
    - o_stream_set_flush_pending
    - client_fetch_urlpart
    - str_append
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int client_fetch_url(struct client *client, const char *url,\n\t\t\t
      \   enum imap_urlauth_fetch_flags url_flags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:458,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:471,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:473,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:475,1
    - Dst: client_fetch_url
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:485,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - client
    - cmd
    - args
    - error_r
    argTypes:
    - struct client*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 448
    functionDepth: 7
    functionLinenumber: 448
    functionLinenumberEnd: 488
    functionName: client_handle_command
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strcasecmp
    - client_fetch_url
    linkageType: ''
    returnType: int
    signature: "int client_handle_command(struct client *client, const char *cmd,\n\t\t
      \     const char *const *args, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:526,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:527,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:538,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:544,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:546,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:549,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:551,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:554,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:555,1
    - Dst: settings_get
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:559,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:562,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:563,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:567,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:567,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:570,1
    - Dst: imap_urlauth_worker_refresh_proctitle
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:574,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:580,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:585,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:588,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:589,1
    - Dst: i_zero
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:593,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:600,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:601,1
    - Dst: array_get
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:603,1
    - Dst: imap_urlauth_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:605,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:606,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:610,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:613,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 61
    argCount: 4
    argNames:
    - client
    - cmd
    - args
    - error_r
    argTypes:
    - struct client*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 615
    functionName: client_handle_user_command
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_zero
    - event_set_forced_debug
    - mail_storage_service_lookup_next
    - e_debug
    - client_abort
    - array_get
    - i_set_failure_prefix
    - e_error
    - client_send_line
    - restrict_access_allow_coredumps
    - event_want_debug
    - array_pop_back
    - array_append_zero
    - settings_get
    - t_strconcat
    - imap_urlauth_init
    - imap_urlauth_worker_refresh_proctitle
    linkageType: ''
    returnType: int
    signature: "int client_handle_user_command(struct client *client, const char *cmd,\n\t\t\t
      \  const char *const *args, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:625,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:630,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:632,1
    - Dst: connection_input_read
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:634,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:637,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:638,1
    - Dst: client_handle_user_command
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:645,1
    - Dst: client_handle_command
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:647,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:652,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:654,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 617
    functionDepth: 3
    functionLinenumber: 617
    functionLinenumberEnd: 659
    functionName: client_handle_input
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 7
    functionsReached:
    - connection_input_resume
    - connection_input_halt
    - t_strsplit_tabescaped
    - i_stream_next_line
    - timeout_reset
    - client_abort
    - e_error
    - client_handle_command
    - connection_input_read
    - client_handle_user_command
    linkageType: ''
    returnType: bool
    signature: bool client_handle_input(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:663,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 666
    functionName: client_input
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 1
    functionsReached:
    - container_of
    - client_handle_input
    linkageType: ''
    returnType: void
    signature: void client_input(struct connection *_conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:670,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:672,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:675,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:678,1
    - Dst: client_run_url
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:681,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:682,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:687,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 703
    functionName: client_output
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 3
    functionsReached:
    - client_run_url
    - client_destroy
    - timeout_reset
    - o_stream_flush
    - o_stream_nsend_str
    - client_handle_input
    linkageType: ''
    returnType: int
    signature: int client_output(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:712,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:715,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:718,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - client
    - data_r
    - fd_r
    argTypes:
    - struct client*
    - unsigned char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 720
    functionName: client_ctrl_read_fd
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - i_stream_unix_get_read_fd
    - i_stream_read_more
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: int client_ctrl_read_fd(struct client *client, unsigned char *data_r,
      int *fd_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: client_ctrl_read_fd
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:728,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:732,1
    - Dst: client_ctrl_read_fd
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:735,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:743,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:747,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:753,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:758,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:760,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 722
    functionDepth: 2
    functionLinenumber: 722
    functionLinenumberEnd: 763
    functionName: client_ctrl_read_fds
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - connection_input_halt
    - connection_init_server
    - e_error
    - client_ctrl_read_fd
    - i_stream_unix_set_read_fd
    linkageType: ''
    returnType: int
    signature: int client_ctrl_read_fds(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:772,1
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:776,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:777,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:778,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 783
    functionName: client_ctrl_handshake
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - t_strsplit_tabescaped
    - connection_handshake_args_default
    - i_stream_next_line
    - client_abort
    linkageType: ''
    returnType: int
    signature: int client_ctrl_handshake(struct client *client)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:787,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:792,1
    - Dst: connection_input_read
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:794,1
    - Dst: client_ctrl_handshake
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:796,1
    - Dst: client_ctrl_read_fds
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:800,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:802,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:805,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:806,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:812,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:816,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:819,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:820,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:821,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:822,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:823,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:828,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:829,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:830,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:834,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:835,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:837,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:840,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:844,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:846,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:852,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:853,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:856,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:858,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:861,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:863,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:864,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:870,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:871,1
    - Dst: client_abort
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:872,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:880,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:881,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:885,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:886,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:888,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 73
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 785
    functionDepth: 3
    functionLinenumber: 785
    functionLinenumberEnd: 891
    functionName: client_ctrl_input
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - o_stream_send_str
    - client_abort
    - i_strdup
    - client_ctrl_read_fds
    - str_sanitize
    - str_begins_icase
    - o_stream_set_flush_callback
    - connection_input_read
    - client_destroy
    - t_strsplit_tabescaped
    - i_stream_next_line
    - timeout_reset
    - client_ctrl_handshake
    - event_set_forced_debug
    - connection_input_resume
    - strcasecmp
    - e_error
    - i_assert
    - strcmp
    - container_of
    - array_push_back
    - e_debug
    - i_set_failure_prefix
    - t_strsplit
    linkageType: ''
    returnType: void
    signature: void client_ctrl_input(struct connection *_conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:895,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:901,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:906,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 893
    functionDepth: 1
    functionLinenumber: 893
    functionLinenumberEnd: 907
    functionName: client_ctrl_connection_destroy
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - container_of
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void client_ctrl_connection_destroy(struct connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:911,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:917,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:922,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 923
    functionName: client_connection_destroy
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - container_of
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void client_connection_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 951
    functionDepth: 0
    functionLinenumber: 951
    functionLinenumberEnd: 954
    functionName: imap_urlauth_worker_die
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_worker_die(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:961,1
    - Dst: getenv
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:962,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:963,1
    - Dst: getlogin
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:964,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:966,1
    - Dst: client_create_standalone
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:968,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - access_user
    - access_applications
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 956
    functionDepth: 2
    functionLinenumber: 956
    functionLinenumberEnd: 970
    functionName: main_stdio_run
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 1
    functionsReached:
    - client_create_standalone
    - i_fatal
    - IS_STANDALONE
    - getenv
    - getlogin
    linkageType: ''
    returnType: void
    signature: "void main_stdio_run(const char *access_user,\n\t\t\t   const char
      *const *access_applications)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:974,1
    - Dst: client_create
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 976
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - client_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:984,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:988,1
    - Dst: master_service_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:993,1
    - Dst: t_array_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:996,1
    - Dst: master_getopt
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:997,1
    - Dst: t_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1000,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1002,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1015,1
    - Dst: master_service_init_log_with_pid
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1018,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1019,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1025,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1027,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1030,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1032,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1036,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1038,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1040,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1043,1
    - Dst: if
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1045,1
    - Dst: array_count
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1045,1
    - Dst: array_append_space
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1046,1
    - Dst: main_stdio_run
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1047,1
    - Dst: array_front
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1048,1
    - Dst: main_stdio_run
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1050,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1054,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1057,1
    - Dst: master_service_run
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1058,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1060,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1061,1
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1063,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c:1064,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 978
    functionDepth: 6
    functionLinenumber: 978
    functionLinenumberEnd: 1066
    functionName: main
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    functionUses: 0
    functionsReached:
    - master_service_run
    - connection_list_init
    - master_service_settings_read
    - master_service_init_log_with_pid
    - mail_storage_service_deinit
    - IS_STANDALONE
    - if
    - array_count
    - array_front
    - t_strdup
    - master_service_init
    - array_append_space
    - i_fatal_status
    - i_fatal
    - main_stdio_run
    - master_service_init_finish
    - mail_storage_service_init
    - master_getopt
    - io_loop_is_running
    - master_service_set_die_callback
    - array_push_back
    - t_array_init
    - io_loop_set_running
    - ARRAY_TYPE
    - master_service_deinit
    - connection_list_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:72,1
    - Dst: i_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:77,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:80,1
    - Dst: event_create
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:83,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:84,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 91
    functionName: imap_urlauth_worker_client_init
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    functionUses: 0
    functionsReached:
    - connection_list_init
    - event_create
    - connection_init_client_unix
    - event_set_append_log_prefix
    - i_strconcat
    - i_new
    linkageType: ''
    returnType: struct imap_urlauth_worker_client
    signature: 'struct imap_urlauth_worker_client *

      imap_urlauth_worker_client_init(struct client *client)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_worker_client_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:102,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:103,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:104,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:105,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:106,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _wclient
    argTypes:
    - struct imap_urlauth_worker_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 110
    functionName: imap_urlauth_worker_client_deinit
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    functionUses: 0
    functionsReached:
    - connection_deinit
    - event_unref
    - imap_urlauth_worker_client_disconnect
    - i_free
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_worker_client_deinit(\n\tstruct imap_urlauth_worker_client
      **_wclient)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:116,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:122,1
    - Dst: o_stream_unix_write_fd
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:125,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:129,1
    - Dst: o_stream_unix_write_fd
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:133,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:139,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:145,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:147,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:149,1
    - Dst: imap_urlauth_worker_client_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:153,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 156
    functionName: imap_urlauth_worker_client_connected
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_error
    - e_error
    - imap_urlauth_worker_client_disconnect
    - o_stream_send
    - i_assert
    - o_stream_unix_write_fd
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_worker_client_connected(struct connection *_conn,
      bool success)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:164,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:166,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:168,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:169,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - wclient
    argTypes:
    - struct imap_urlauth_worker_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: imap_urlauth_worker_client_connect
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    functionUses: 0
    functionsReached:
    - e_debug
    - eacces_error_get
    - connection_client_connect
    - e_error
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_worker_client_connect(\n\tstruct imap_urlauth_worker_client
      *wclient)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - wclient
    argTypes:
    - struct imap_urlauth_worker_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: imap_urlauth_worker_client_disconnect
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    functionUses: 2
    functionsReached:
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_worker_client_disconnect(\n\tstruct imap_urlauth_worker_client
      *wclient)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:194,1
    - Dst: imap_urlauth_worker_client_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - wclient
    - error
    argTypes:
    - struct imap_urlauth_worker_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: imap_urlauth_worker_client_error
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_worker_client_disconnect
    - client_disconnect
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_worker_client_error(struct imap_urlauth_worker_client
      *wclient,\n\t\t\t\t const char *error)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:201,1
    - Dst: imap_urlauth_worker_client_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:205,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:209,1
    - Dst: imap_urlauth_worker_client_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 214
    functionName: imap_urlauth_worker_connection_destroy
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_worker_client_error
    - imap_urlauth_worker_client_disconnect
    - container_of
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_worker_connection_destroy(struct connection *_conn)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:221,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:232,1
    - Dst: imap_urlauth_worker_client_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:233,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:239,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:240,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:242,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:243,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:244,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:246,1
    - Dst: array_count
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:247,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:248,1
    - Dst: array_get
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:249,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:250,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:252,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:253,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:256,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:258,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:259,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:259,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:260,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:260,1
    - Dst: imap_urlauth_worker_client_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:262,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:269,1
    - Dst: imap_urlauth_worker_client_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:270,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:279,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:282,1
    - Dst: imap_urlauth_worker_client_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:284,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:289,1
    - Dst: imap_urlauth_worker_client_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:293,1
    - Dst: imap_urlauth_worker_client_connect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:294,1
    - Dst: imap_urlauth_worker_client_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:295,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:301,1
    - Dst: imap_urlauth_worker_client_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:303,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c:308,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 65
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 216
    functionDepth: 3
    functionLinenumber: 216
    functionLinenumberEnd: 311
    functionName: imap_urlauth_worker_connection_input_args
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - container_of
    - str_append_c
    - str_data
    - str_len
    - str_append
    - e_debug
    - array_get
    - i_unreached
    - strcasecmp
    - imap_urlauth_worker_client_disconnect
    - str_append_tabescaped
    - array_count
    - o_stream_send
    - client_send_line
    - imap_urlauth_worker_client_error
    - i_assert
    - imap_urlauth_worker_client_connect
    linkageType: ''
    returnType: int
    signature: "int imap_urlauth_worker_connection_input_args(struct connection *conn,\n\t\t\t\t\t
      \ const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: DEF
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: DEF
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: IS_STANDALONE
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STANDALONE()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:46,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:47,1
    - Dst: i_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:49,1
    - Dst: pool_ref
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:51,1
    - Dst: event_create
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:53,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:54,1
    - Dst: event_add_category
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:55,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:56,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:56,1
    - Dst: i_array_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:60,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:63,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:64,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:67,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:70,1
    - Dst: e_debug
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:71,1
    - Dst: array_push_back
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:74,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:78,1
    - Dst: i_strdup
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:79,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:82,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:84,1
    - Dst: imap_urlauth_worker_client_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:86,1
    - Dst: imap_urlauth_worker_client_connect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:87,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:88,1
    - Dst: imap_urlauth_refresh_proctitle
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:92,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 6
    argNames:
    - service
    - username
    - fd_in
    - fd_out
    - set
    - client_r
    argTypes:
    - char*
    - char*
    - int
    - int
    - struct imap_urlauth_settings*
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 95
    functionName: client_create
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 10
    functionsReached:
    - i_array_init
    - t_strdup_printf
    - i_strdup
    - imap_urlauth_worker_client_init
    - connection_input_halt
    - client_destroy
    - event_set_append_log_prefix
    - event_set_forced_debug
    - event_create
    - pool_ref
    - net_set_nonblock
    - imap_urlauth_worker_client_connect
    - strcmp
    - array_push_back
    - e_debug
    - connection_init_server
    - imap_urlauth_refresh_proctitle
    - i_new
    - event_add_category
    linkageType: ''
    returnType: int
    signature: "int client_create(const char *service, const char *username,\n\t\t
      \ int fd_in, int fd_out,\n\t\t  const struct imap_urlauth_settings *set,\n\t\t
      \ struct client **client_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:105,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:110,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:111,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:112,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:114,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:115,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:116,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - client
    - fmt
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 117
    functionName: client_send_line
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 43
    functionsReached:
    - t_str_new
    - str_data
    - va_start
    - str_len
    - str_vprintfa
    - o_stream_send
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void client_send_line(struct client *client, const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:124,1
    - Dst: e_info
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:127,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:129,1
    - Dst: imap_urlauth_worker_client_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:131,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:133,1
    - Dst: event_unref
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:134,1
    - Dst: settings_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:135,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:137,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:138,1
    - Dst: array_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:139,1
    - Dst: i_free
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:140,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:142,1
    - Dst: imap_urlauth_refresh_proctitle
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 144
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 36
    functionsReached:
    - e_info
    - event_unref
    - i_free
    - imap_urlauth_worker_client_deinit
    - settings_free
    - imap_urlauth_refresh_proctitle
    - array_free
    - i_assert
    - connection_deinit
    - master_service_client_connection_destroyed
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_destroy(struct client *client, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: client_destroy_timeout
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void client_destroy_timeout(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:157,1
    - Dst: timeout_add
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 160
    functionName: client_disconnect
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 19
    functionsReached:
    - e_info
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void client_disconnect(struct client *client, const char *reason)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:164,1
    - Dst: i_unreached
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:169,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 174
    functionName: client_connection_destroy
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 0
    functionsReached:
    - client_disconnect
    - container_of
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void client_connection_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 190
    functionName: clients_init
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 3
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void clients_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:199,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:201,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 204
    functionName: clients_deinit
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
    functionUses: 4
    functionsReached:
    - client_destroy
    - container_of
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void clients_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: IS_STANDALONE
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STANDALONE()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:78,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:83,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:86,1
    - Dst: container_of
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:89,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:91,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:94,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:98,1
    - Dst: process_title_set
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:99,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 100
    functionName: imap_urlauth_refresh_proctitle
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - container_of
    - str_append_c
    - str_printfa
    - str_append
    - process_title_set
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: imap_urlauth_die
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_die(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_create
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:113,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:117,1
    - Dst: client_send_line
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - service
    - username
    - fd_in
    - fd_out
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 120
    functionName: client_create_from_input
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 3
    functionsReached:
    - client_send_line
    - client_create
    - IS_STANDALONE
    linkageType: ''
    returnType: int
    signature: "int client_create_from_input(const char *service, const char *username,\n\t\tint
      fd_in, int fd_out)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:124,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:125,1
    - Dst: getlogin
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:126,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:128,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - username
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 131
    functionName: main_stdio_run
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 2
    functionsReached:
    - i_fatal
    - IS_STANDALONE
    - getenv
    - client_create_from_input
    - getlogin
    linkageType: ''
    returnType: void
    signature: void main_stdio_run(const char *username)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: auth_user_fields_parse
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:145,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:145,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:147,1
    - Dst: write
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:149,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:149,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:152,1
    - Dst: net_getunixcred
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:157,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:159,1
    - Dst: write
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:163,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:163,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:166,1
    - Dst: array_get
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:170,1
    - Dst: str_begins
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:172,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:177,1
    - Dst: write
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:179,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:179,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:182,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:189,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:191,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 3
    argNames:
    - request
    - username
    - extra_fields
    argTypes:
    - struct login_server_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 192
    functionName: login_request_finished
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - net_disconnect
    - str_begins
    - strlen
    - array_get
    - write
    - e_error
    - client_create_from_input
    - pool_datastack_create
    - net_getunixcred
    - auth_user_fields_parse
    linkageType: ''
    returnType: void
    signature: "void login_request_finished(const struct login_server_request *request,\n\t\t
      \      const char *username, const char *const *extra_fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:198,1
    - Dst: strlen
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - request
    - ATTR_UNUSED
    argTypes:
    - struct login_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 201
    functionName: login_request_failed
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - strlen
    - write
    linkageType: ''
    returnType: void
    signature: "void login_request_failed(const struct login_server_request *request,\n\t\t\t\t
      const char *errormsg ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:206,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:208,1
    - Dst: login_server_add
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - login_server_add
    - i_assert
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:218,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:222,1
    - Dst: getuid
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:222,1
    - Dst: net_getpeername
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:223,1
    - Dst: printf
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:224,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:229,1
    - Dst: master_service_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:234,1
    - Dst: master_getopt
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:236,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:238,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:244,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:246,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:249,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:249,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:256,1
    - Dst: t_abspath
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:257,1
    - Dst: i_fatal
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:259,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:266,1
    - Dst: clients_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:268,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:269,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:271,1
    - Dst: login_server_init
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:272,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:273,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:277,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:279,1
    - Dst: main_stdio_run
      Src: /src/dovecot/src/imap-urlauth/imap-urlauth.c:281,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 212
    functionDepth: 6
    functionLinenumber: 212
    functionLinenumberEnd: 283
    functionName: main
    functionSourceFile: /src/dovecot/src/imap-urlauth/imap-urlauth.c
    functionUses: 0
    functionsReached:
    - master_service_settings_read
    - IS_STANDALONE
    - t_abspath
    - master_service_init
    - net_getpeername
    - printf
    - i_fatal
    - main_stdio_run
    - master_service_init_finish
    - master_service_get_event
    - master_getopt
    - i_zero
    - master_service_init_log
    - settings_get_or_fatal
    - master_service_set_die_callback
    - login_server_init
    - clients_init
    - getuid
    - master_service_get_client_limit
    - io_loop_set_running
    - master_service_get_service_settings
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 406
    functionName: client_does_custom_io
    functionSourceFile: /src/dovecot/src/login-common/client-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool client_does_custom_io(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::sasl_filter_mech
      Src: /src/dovecot/src/login-common/sasl-server.c:40,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 12
    argCount: 3
    argNames:
    - client
    - mech
    - advertize
    argTypes:
    - struct client*
    - struct auth_mech_desc*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 70
    functionName: sasl_server_filter_mech
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - struct client*::v::sasl_filter_mech
    linkageType: ''
    returnType: bool
    signature: "bool sasl_server_filter_mech(struct client *client, struct auth_mech_desc
      *mech,\n\t\t\tbool advertize)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_get_available_mechs
      Src: /src/dovecot/src/login-common/sasl-server.c:79,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:81,1
    - Dst: t_new
      Src: /src/dovecot/src/login-common/sasl-server.c:86,1
    - Dst: sasl_server_filter_mech
      Src: /src/dovecot/src/login-common/sasl-server.c:90,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - client
    - count_r
    argTypes:
    - struct client*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 97
    functionName: sasl_server_get_advertised_mechs
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 1
    functionsReached:
    - strcmp
    - t_new
    - auth_client_get_available_mechs
    - sasl_server_filter_mech
    linkageType: ''
    returnType: struct auth_mech_desc
    signature: 'struct auth_mech_desc *

      sasl_server_get_advertised_mechs(struct client *client, unsigned int *count_r)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_find_mech
      Src: /src/dovecot/src/login-common/sasl-server.c:105,1
    - Dst: sasl_server_filter_mech
      Src: /src/dovecot/src/login-common/sasl-server.c:110,1
    - Dst: memcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:112,1
    - Dst: t_new
      Src: /src/dovecot/src/login-common/sasl-server.c:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - client
    - name
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 119
    functionName: sasl_server_find_available_mech
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 1
    functionsReached:
    - auth_client_find_mech
    - t_new
    - sasl_server_filter_mech
    - memcmp
    linkageType: ''
    returnType: struct auth_mech_desc
    signature: 'struct auth_mech_desc *

      sasl_server_find_available_mech(struct client *client, const char *name)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_has_valid_cert
      Src: /src/dovecot/src/login-common/sasl-server.c:127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 136
    functionName: client_get_auth_flags
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_has_valid_cert
    linkageType: ''
    returnType: enum auth_request_flags
    signature: enum auth_request_flags client_get_auth_flags(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/sasl-server.c:144,1
    - Dst: sasl_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - client
    - reply
    - data
    - args
    argTypes:
    - struct client*
    - enum sasl_server_reply
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 151
    functionName: call_client_callback
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - sasl_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void call_client_callback(struct client *client, enum sasl_server_reply
      reply,\n\t\t     const char *data, const char *const *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_send_cancel
      Src: /src/dovecot/src/login-common/sasl-server.c:174,1
    - Dst: call_client_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:176,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct login_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 177
    functionName: login_callback
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 12
    functionsReached:
    - call_client_callback
    - auth_client_send_cancel
    linkageType: ''
    returnType: void
    signature: void login_callback(const struct login_reply *reply, void *context)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_get_session_id
      Src: /src/dovecot/src/login-common/sasl-server.c:187,1
    - Dst: client_get_plaintext_fd
      Src: /src/dovecot/src/login-common/sasl-server.c:191,1
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/sasl-server.c:194,1
    - Dst: getpid
      Src: /src/dovecot/src/login-common/sasl-server.c:201,1
    - Dst: ssl_iostream_get_compression
      Src: /src/dovecot/src/login-common/sasl-server.c:205,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/login-common/sasl-server.c:209,1
    - Dst: memcpy
      Src: /src/dovecot/src/login-common/sasl-server.c:211,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/login-common/sasl-server.c:213,1
    - Dst: buffer_append
      Src: /src/dovecot/src/login-common/sasl-server.c:215,1
    - Dst: strlen
      Src: /src/dovecot/src/login-common/sasl-server.c:215,1
    - Dst: buffer_append
      Src: /src/dovecot/src/login-common/sasl-server.c:217,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/login-common/sasl-server.c:220,1
    - Dst: buffer_append
      Src: /src/dovecot/src/login-common/sasl-server.c:221,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/login-common/sasl-server.c:223,1
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/sasl-server.c:227,1
    - Dst: login_client_request
      Src: /src/dovecot/src/login-common/sasl-server.c:232,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/login-common/sasl-server.c:235,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - anvil_request
    argTypes:
    - struct anvil_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 237
    functionName: master_send_request
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - buffer_append
    - getpid
    - i_close_fd
    - strlen
    - i_stream_get_data
    - t_buffer_create
    - login_client_request
    - client_get_session_id
    - i_stream_skip
    - ssl_iostream_get_compression
    - client_get_plaintext_fd
    - HAS_ALL_BITS
    linkageType: ''
    returnType: int
    signature: int master_send_request(struct anvil_request *anvil_request)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/login-common/sasl-server.c:256,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/login-common/sasl-server.c:258,1
    - Dst: i_fatal
      Src: /src/dovecot/src/login-common/sasl-server.c:259,1
    - Dst: master_send_request
      Src: /src/dovecot/src/login-common/sasl-server.c:266,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/sasl-server.c:271,1
    - Dst: auth_client_send_cancel
      Src: /src/dovecot/src/login-common/sasl-server.c:276,1
    - Dst: call_client_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:277,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/sasl-server.c:279,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - reply
    - req
    argTypes:
    - struct anvil_reply*
    - struct anvil_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 280
    functionName: anvil_lookup_callback
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - master_send_request
    - i_fatal
    - t_strdup_printf
    - e_error
    - call_client_callback
    - str_to_uint
    - auth_client_send_cancel
    - i_free
    linkageType: ''
    returnType: void
    signature: "void anvil_lookup_callback(const struct anvil_reply *reply,\n\t\t
      \     struct anvil_request *req)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/login-common/sasl-server.c:289,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/login-common/sasl-server.c:293,1
    - Dst: strlen
      Src: /src/dovecot/src/login-common/sasl-server.c:294,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/login-common/sasl-server.c:295,1
    - Dst: anvil_lookup_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:299,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/login-common/sasl-server.c:303,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/login-common/sasl-server.c:304,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/sasl-server.c:306,1
    - Dst: anvil_client_query
      Src: /src/dovecot/src/login-common/sasl-server.c:309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 282
    functionDepth: 3
    functionLinenumber: 282
    functionLinenumberEnd: 312
    functionName: anvil_check_too_many_connections
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - hex_to_binary
    - strlen
    - anvil_lookup_callback
    - str_tabescape
    - net_ip2addr
    - i_new
    - buffer_create_from_data
    - t_strconcat
    - anvil_client_query
    linkageType: ''
    returnType: void
    signature: void anvil_check_too_many_connections(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::sasl_check_login
      Src: /src/dovecot/src/login-common/sasl-server.c:318,1
    - Dst: sasl_server_auth_failed
      Src: /src/dovecot/src/login-common/sasl-server.c:322,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 328
    functionName: sasl_server_check_login
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - sasl_server_auth_failed
    - struct client*::v::sasl_check_login
    linkageType: ''
    returnType: bool
    signature: bool sasl_server_check_login(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:333,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/sasl-server.c:334,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/login-common/sasl-server.c:335,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/login-common/sasl-server.c:336,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/sasl-server.c:337,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/sasl-server.c:338,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:339,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/sasl-server.c:340,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/sasl-server.c:341,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:342,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/sasl-server.c:343,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/sasl-server.c:344,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - client
    - key
    - value
    argTypes:
    - struct client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 349
    functionName: args_parse_user
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_free_and_null
    - i_strdup
    - event_add_str
    - i_free
    linkageType: ''
    returnType: bool
    signature: bool args_parse_user(struct client *client, const char *key, const
      char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_channel_binding
      Src: /src/dovecot/src/login-common/sasl-server.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - type
    - context
    - data_r
    - error_r
    argTypes:
    - char*
    - void*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 359
    functionName: sasl_server_channel_binding
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_get_channel_binding
    linkageType: ''
    returnType: int
    signature: "int sasl_server_channel_binding(const char *type, void *context,\n\t\t\t
      \   const buffer_t **data_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: call_client_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:367,1
    - Dst: sasl_server_check_login
      Src: /src/dovecot/src/login-common/sasl-server.c:369,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/sasl-server.c:370,1
    - Dst: p_strdup
      Src: /src/dovecot/src/login-common/sasl-server.c:373,1
    - Dst: anvil_check_too_many_connections
      Src: /src/dovecot/src/login-common/sasl-server.c:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - client
    - nologin
    - data
    - args
    argTypes:
    - struct client*
    - bool
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 361
    functionDepth: 4
    functionLinenumber: 361
    functionLinenumberEnd: 376
    functionName: sasl_server_auth_success_finish
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - sasl_server_check_login
    - anvil_check_too_many_connections
    - call_client_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sasl_server_auth_success_finish(struct client *client, bool nologin,\n\t\t\t\tconst
      char *data, const char *const *args)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/sasl-server.c:389,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/sasl-server.c:394,1
    - Dst: struct client*::sasl_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:398,1
    - Dst: auth_client_request_get_id
      Src: /src/dovecot/src/login-common/sasl-server.c:403,1
    - Dst: auth_client_request_get_server_pid
      Src: /src/dovecot/src/login-common/sasl-server.c:405,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/sasl-server.c:406,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/sasl-server.c:408,1
    - Dst: auth_client_request_get_cookie
      Src: /src/dovecot/src/login-common/sasl-server.c:408,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/login-common/sasl-server.c:411,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/login-common/sasl-server.c:417,1
    - Dst: args_parse_user
      Src: /src/dovecot/src/login-common/sasl-server.c:419,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:422,1
    - Dst: p_strdup
      Src: /src/dovecot/src/login-common/sasl-server.c:424,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:425,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:426,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/sasl-server.c:429,1
    - Dst: str_begins
      Src: /src/dovecot/src/login-common/sasl-server.c:431,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/sasl-server.c:432,1
    - Dst: sasl_server_auth_success_finish
      Src: /src/dovecot/src/login-common/sasl-server.c:436,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/login-common/sasl-server.c:450,1
    - Dst: args_parse_user
      Src: /src/dovecot/src/login-common/sasl-server.c:451,1
    - Dst: call_client_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:457,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 5
    argNames:
    - request
    - status
    - data_base64
    - args
    - context
    argTypes:
    - struct auth_client_request*
    - enum auth_request_status
    - char*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 378
    functionDepth: 5
    functionLinenumber: 378
    functionLinenumberEnd: 461
    functionName: authenticate_callback
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - auth_client_request_get_server_pid
    - strcmp
    - p_strdup
    - auth_client_request_get_cookie
    - p_strarray_dup
    - str_begins
    - struct client*::sasl_callback
    - sasl_server_auth_success_finish
    - i_strdup
    - call_client_callback
    - t_split_key_value_eq
    - auth_client_request_get_id
    - args_parse_user
    - event_add_str
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void authenticate_callback(struct auth_client_request *request,\n\t\t
      \     enum auth_request_status status, const char *data_base64,\n\t\t      const
      char *const *args, void *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_has_valid_cert
      Src: /src/dovecot/src/login-common/sasl-server.c:480,1
    - Dst: ssl_iostream_get_peer_username
      Src: /src/dovecot/src/login-common/sasl-server.c:486,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - client
    - username_r
    - error_r
    argTypes:
    - struct client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 499
    functionName: get_cert_username
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_has_valid_cert
    - ssl_iostream_get_peer_username
    linkageType: ''
    returnType: bool
    signature: "bool get_cert_username(struct client *client, const char **username_r,\n\t\t
      \ const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/sasl-server.c:507,1
    - Dst: client_get_session_id
      Src: /src/dovecot/src/login-common/sasl-server.c:509,1
    - Dst: get_cert_username
      Src: /src/dovecot/src/login-common/sasl-server.c:511,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/sasl-server.c:512,1
    - Dst: ssl_iostream_get_cipher
      Src: /src/dovecot/src/login-common/sasl-server.c:520,1
    - Dst: ssl_iostream_get_pfs
      Src: /src/dovecot/src/login-common/sasl-server.c:522,1
    - Dst: ssl_iostream_get_protocol_name
      Src: /src/dovecot/src/login-common/sasl-server.c:524,1
    - Dst: ssl_iostream_get_ja3
      Src: /src/dovecot/src/login-common/sasl-server.c:525,1
    - Dst: md5_get_digest
      Src: /src/dovecot/src/login-common/sasl-server.c:529,1
    - Dst: strlen
      Src: /src/dovecot/src/login-common/sasl-server.c:529,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/login-common/sasl-server.c:530,1
    - Dst: ssl_iostream_get_peer_cert_fingerprint
      Src: /src/dovecot/src/login-common/sasl-server.c:534,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/sasl-server.c:539,1
    - Dst: client_get_auth_flags
      Src: /src/dovecot/src/login-common/sasl-server.c:547,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/sasl-server.c:558,1
    - Dst: array_is_created
      Src: /src/dovecot/src/login-common/sasl-server.c:559,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/login-common/sasl-server.c:560,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/login-common/sasl-server.c:561,1
    - Dst: array_front
      Src: /src/dovecot/src/login-common/sasl-server.c:562,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 3
    argNames:
    - client
    - info_r
    - client_error_r
    argTypes:
    - struct client*
    - struct auth_request_info*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 565
    functionName: sasl_server_auth_request_info_fill
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - i_zero
    - get_cert_username
    - str_c
    - strlen
    - ssl_iostream_get_pfs
    - client_get_auth_flags
    - array_front
    - client_get_session_id
    - ssl_iostream_get_ja3
    - e_error
    - md5_get_digest
    - ssl_iostream_get_peer_cert_fingerprint
    - array_is_created
    - array_pop_back
    - ssl_iostream_get_cipher
    - array_append_zero
    - binary_to_hex
    - ssl_iostream_get_protocol_name
    linkageType: ''
    returnType: int
    signature: "int sasl_server_auth_request_info_fill(struct client *client,\n\t\t\t\t
      \      struct auth_request_info *info_r,\n\t\t\t\t       const char **client_error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/login-common/sasl-server.c:574,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/sasl-server.c:577,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/login-common/sasl-server.c:577,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/sasl-server.c:585,1
    - Dst: str_ucase
      Src: /src/dovecot/src/login-common/sasl-server.c:586,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/sasl-server.c:586,1
    - Dst: sasl_server_find_available_mech
      Src: /src/dovecot/src/login-common/sasl-server.c:592,1
    - Dst: sasl_server_auth_failed
      Src: /src/dovecot/src/login-common/sasl-server.c:595,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/sasl-server.c:601,1
    - Dst: client_notify_status
      Src: /src/dovecot/src/login-common/sasl-server.c:605,1
    - Dst: sasl_server_auth_failed
      Src: /src/dovecot/src/login-common/sasl-server.c:609,1
    - Dst: sasl_server_auth_request_info_fill
      Src: /src/dovecot/src/login-common/sasl-server.c:615,1
    - Dst: sasl_server_auth_failed
      Src: /src/dovecot/src/login-common/sasl-server.c:616,1
    - Dst: auth_client_request_new
      Src: /src/dovecot/src/login-common/sasl-server.c:623,1
    - Dst: auth_client_request_enable_channel_binding
      Src: /src/dovecot/src/login-common/sasl-server.c:625,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 5
    argNames:
    - client
    - mech_name
    - flags
    - initial_resp_base64
    - callback
    argTypes:
    - struct client*
    - char*
    - enum sasl_server_auth_flags
    - char*
    - sasl_server_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 567
    functionDepth: 3
    functionLinenumber: 567
    functionLinenumberEnd: 628
    functionName: sasl_server_auth_begin
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - auth_client_request_enable_channel_binding
    - auth_client_request_new
    - sasl_server_auth_failed
    - sasl_server_auth_request_info_fill
    - sasl_server_find_available_mech
    - i_strdup
    - str_ucase
    - client_notify_status
    - auth_client_is_connected
    - HAS_ALL_BITS
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void sasl_server_auth_begin(struct client *client, const char *mech_name,\n\t\t\t
      \   enum sasl_server_auth_flags flags,\n\t\t\t    const char *initial_resp_base64,\n\t\t\t
      \   sasl_server_callback_t *callback)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/sasl-server.c:634,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/login-common/sasl-server.c:638,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/sasl-server.c:639,1
    - Dst: auth_client_request_abort
      Src: /src/dovecot/src/login-common/sasl-server.c:645,1
    - Dst: auth_client_send_cancel
      Src: /src/dovecot/src/login-common/sasl-server.c:647,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/login-common/sasl-server.c:652,1
    - Dst: call_client_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:654,1
    - Dst: call_client_callback
      Src: /src/dovecot/src/login-common/sasl-server.c:658,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - client
    - reason
    - code
    - reply
    argTypes:
    - struct client*
    - char*
    - char*
    - enum sasl_server_reply
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 631
    functionDepth: 2
    functionLinenumber: 631
    functionLinenumberEnd: 659
    functionName: sasl_server_auth_cancel
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - e_info
    - auth_client_request_abort
    - str_sanitize
    - call_client_callback
    - i_assert
    - t_strconcat
    - auth_client_send_cancel
    linkageType: ''
    returnType: void
    signature: "void sasl_server_auth_cancel(struct client *client, const char *reason,\n\t\t\tconst
      char *code, enum sasl_server_reply reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_request_continue
      Src: /src/dovecot/src/login-common/sasl-server.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - response
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 664
    functionName: sasl_server_auth_continue
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - auth_client_request_continue
    linkageType: ''
    returnType: void
    signature: void sasl_server_auth_continue(struct client *client, const char *response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_auth_cancel
      Src: /src/dovecot/src/login-common/sasl-server.c:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - reason
    - code
    argTypes:
    - struct client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 666
    functionDepth: 3
    functionLinenumber: 666
    functionLinenumberEnd: 671
    functionName: sasl_server_auth_failed
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 2
    functionsReached:
    - sasl_server_auth_cancel
    linkageType: ''
    returnType: void
    signature: "void sasl_server_auth_failed(struct client *client, const char *reason,\n\t\t\t
      \    const char *code)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_query_abort
      Src: /src/dovecot/src/login-common/sasl-server.c:677,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/sasl-server.c:678,1
    - Dst: sasl_server_auth_cancel
      Src: /src/dovecot/src/login-common/sasl-server.c:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 673
    functionDepth: 3
    functionLinenumber: 673
    functionLinenumberEnd: 682
    functionName: sasl_server_auth_abort
    functionSourceFile: /src/dovecot/src/login-common/sasl-server.c
    functionUses: 0
    functionsReached:
    - sasl_server_auth_cancel
    - anvil_client_query_abort
    - i_free
    linkageType: ''
    returnType: void
    signature: void sasl_server_auth_abort(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: login_proxies_get_first_detached_client
      Src: /src/dovecot/src/login-common/main.c:70,1
    - Dst: clients_get_first_fd_proxy
      Src: /src/dovecot/src/login-common/main.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - client_r
    argTypes:
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: get_first_client
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - login_proxies_get_first_detached_client
    - clients_get_first_fd_proxy
    linkageType: ''
    returnType: bool
    signature: bool get_first_client(struct client **client_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/main.c:92,1
    - Dst: clients_get_count
      Src: /src/dovecot/src/login-common/main.c:93,1
    - Dst: clients_get_count
      Src: /src/dovecot/src/login-common/main.c:95,1
    - Dst: get_first_client
      Src: /src/dovecot/src/login-common/main.c:95,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/main.c:96,1
    - Dst: clients_get_count
      Src: /src/dovecot/src/login-common/main.c:96,1
    - Dst: login_proxies_get_detached_count
      Src: /src/dovecot/src/login-common/main.c:97,1
    - Dst: clients_get_fd_proxies_count
      Src: /src/dovecot/src/login-common/main.c:98,1
    - Dst: login_proxies_get_detached_count
      Src: /src/dovecot/src/login-common/main.c:99,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/main.c:102,1
    - Dst: login_proxies_get_detached_count
      Src: /src/dovecot/src/login-common/main.c:103,1
    - Dst: clients_get_fd_proxies_count
      Src: /src/dovecot/src/login-common/main.c:105,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/main.c:108,1
    - Dst: clients_get_fd_proxies_count
      Src: /src/dovecot/src/login-common/main.c:109,1
    - Dst: str_append_c
      Src: /src/dovecot/src/login-common/main.c:111,1
    - Dst: str_append_c
      Src: /src/dovecot/src/login-common/main.c:113,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/main.c:114,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/main.c:116,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/main.c:118,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/main.c:120,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/main.c:122,1
    - Dst: str_append_c
      Src: /src/dovecot/src/login-common/main.c:123,1
    - Dst: process_title_set
      Src: /src/dovecot/src/login-common/main.c:125,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/main.c:125,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 126
    functionName: login_refresh_proctitle
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - clients_get_count
    - get_first_client
    - net_ip2addr
    - clients_get_fd_proxies_count
    - str_append
    - process_title_set
    - login_proxies_get_detached_count
    linkageType: ''
    returnType: void
    signature: void login_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/main.c:130,1
    - Dst: auth_client_disconnect
      Src: /src/dovecot/src/login-common/main.c:132,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/main.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - auth_client
    argTypes:
    - struct auth_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 134
    functionName: auth_client_idle_timeout
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - i_assert
    - auth_client_disconnect
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_client_idle_timeout(struct auth_client *auth_client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/main.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: login_client_destroyed
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void login_client_destroyed(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_kill_idle
      Src: /src/dovecot/src/login-common/main.c:148,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/login-common/main.c:150,1
    - Dst: clients_destroy_all
      Src: /src/dovecot/src/login-common/main.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 154
    functionName: login_die
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - auth_client_is_connected
    - login_proxy_kill_idle
    - clients_destroy_all
    linkageType: ''
    returnType: void
    signature: void login_die(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/login-common/main.c:161,1
    - Dst: i_set_failure_send_ip
      Src: /src/dovecot/src/login-common/main.c:167,1
    - Dst: auth_client_connect
      Src: /src/dovecot/src/login-common/main.c:171,1
    - Dst: client_alloc
      Src: /src/dovecot/src/login-common/main.c:173,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/login-common/main.c:174,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/login-common/main.c:175,1
    - Dst: client_init_ssl
      Src: /src/dovecot/src/login-common/main.c:179,1
    - Dst: client_unref
      Src: /src/dovecot/src/login-common/main.c:180,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/login-common/main.c:181,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/login-common/main.c:182,1
    - Dst: client_init
      Src: /src/dovecot/src/login-common/main.c:186,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/main.c:187,1
    - Dst: event_create
      Src: /src/dovecot/src/login-common/main.c:190,1
    - Dst: event_add_category
      Src: /src/dovecot/src/login-common/main.c:191,1
    - Dst: event_set_min_log_level
      Src: /src/dovecot/src/login-common/main.c:192,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/main.c:195,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 196
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - client_alloc
    - net_disconnect
    - event_create
    - client_init_ssl
    - event_set_min_log_level
    - client_destroy
    - master_service_client_connection_accept
    - i_set_failure_send_ip
    - client_unref
    - event_add_category
    - client_init
    - auth_client_connect
    - master_service_client_connection_destroyed
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_kick_user_connection
      Src: /src/dovecot/src/login-common/main.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - user
    - conn_guid
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: master_admin_cmd_kick_user
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - login_proxy_kick_user_connection
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_admin_cmd_kick_user(const char *user, const guid_128_t
      conn_guid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: clients_notify_auth_connected
      Src: /src/dovecot/src/login-common/main.c:213,1
    - Dst: clients_destroy_all
      Src: /src/dovecot/src/login-common/main.c:215,1
    - Dst: clients_destroy_all_reason
      Src: /src/dovecot/src/login-common/main.c:220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - connected
    - ATTR_UNUSED
    argTypes:
    - struct auth_client*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 222
    functionName: auth_connect_notify
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - clients_notify_auth_connected
    - clients_destroy_all_reason
    - clients_destroy_all
    linkageType: ''
    returnType: void
    signature: "void auth_connect_notify(struct auth_client *client ATTR_UNUSED,\n\t\t\t\tbool
      connected, void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_stop_new_connections
      Src: /src/dovecot/src/login-common/main.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 231
    functionName: anvil_reconnect_callback
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - master_service_stop_new_connections
    linkageType: ''
    returnType: bool
    signature: bool anvil_reconnect_callback(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_send_reply
      Src: /src/dovecot/src/login-common/main.c:238,1
    - Dst: guid_128_empty
      Src: /src/dovecot/src/login-common/main.c:243,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/login-common/main.c:244,1
    - Dst: anvil_client_send_reply
      Src: /src/dovecot/src/login-common/main.c:245,1
    - Dst: anvil_client_send_reply
      Src: /src/dovecot/src/login-common/main.c:248,1
    - Dst: login_proxy_kick_user_connection
      Src: /src/dovecot/src/login-common/main.c:251,1
    - Dst: anvil_client_send_reply
      Src: /src/dovecot/src/login-common/main.c:252,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/main.c:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 253
    functionName: anvil_cmd_input_kick_user
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - guid_128_empty
    - login_proxy_kick_user_connection
    - guid_128_from_string
    - anvil_client_send_reply
    linkageType: ''
    returnType: void
    signature: void anvil_cmd_input_kick_user(const char *const *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/main.c:257,1
    - Dst: anvil_cmd_input_kick_user
      Src: /src/dovecot/src/login-common/main.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 255
    functionDepth: 3
    functionLinenumber: 255
    functionLinenumberEnd: 262
    functionName: anvil_cmd_input
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - anvil_cmd_input_kick_user
    linkageType: ''
    returnType: bool
    signature: bool anvil_cmd_input(const char *cmd, const char *const *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_init
      Src: /src/dovecot/src/login-common/main.c:273,1
    - Dst: anvil_client_connect
      Src: /src/dovecot/src/login-common/main.c:274,1
    - Dst: i_fatal
      Src: /src/dovecot/src/login-common/main.c:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 264
    functionDepth: 3
    functionLinenumber: 264
    functionLinenumberEnd: 276
    functionName: login_anvil_init
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - anvil_client_connect
    - i_fatal
    - anvil_client_init
    linkageType: ''
    returnType: void
    signature: void login_anvil_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/login-common/main.c:286,1
    - Dst: i_array_init
      Src: /src/dovecot/src/login-common/main.c:287,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/login-common/main.c:289,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/login-common/main.c:290,1
    - Dst: i_error
      Src: /src/dovecot/src/login-common/main.c:292,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/login-common/main.c:293,1
    - Dst: array_push_back
      Src: /src/dovecot/src/login-common/main.c:298,1
    - Dst: array_push_back
      Src: /src/dovecot/src/login-common/main.c:300,1
    - Dst: i_unreached
      Src: /src/dovecot/src/login-common/main.c:302,1
    - Dst: array_get
      Src: /src/dovecot/src/login-common/main.c:307,1
    - Dst: array_get
      Src: /src/dovecot/src/login-common/main.c:309,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ips_str
    argTypes:
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 311
    functionName: parse_login_source_ips
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_error
    - array_push_back
    - i_unreached
    - array_get
    - settings_boollist_get
    - net_gethostbyname
    - net_gethosterror
    linkageType: ''
    returnType: void
    signature: void parse_login_source_ips(const ARRAY_TYPE(const_string) *ips_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/login-common/main.c:317,1
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/main.c:320,1
    - Dst: module_dir_load
      Src: /src/dovecot/src/login-common/main.c:327,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/login-common/main.c:328,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/login-common/main.c:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 331
    functionName: login_load_modules
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_is_empty
    - module_dir_load
    - settings_boollist_get
    - module_dir_init
    linkageType: ''
    returnType: void
    signature: void login_load_modules(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/main.c:338,1
    - Dst: ssl_server_settings_to_iostream_set
      Src: /src/dovecot/src/login-common/main.c:341,1
    - Dst: io_stream_ssl_global_init
      Src: /src/dovecot/src/login-common/main.c:343,1
    - Dst: i_fatal
      Src: /src/dovecot/src/login-common/main.c:344,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/main.c:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 347
    functionName: login_ssl_init
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ssl_server_settings_to_iostream_set
    - io_stream_ssl_global_init
    - i_fatal
    - settings_free
    linkageType: ''
    returnType: void
    signature: void login_ssl_init(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: login_ssl_init
      Src: /src/dovecot/src/login-common/main.c:355,1
    - Dst: dsasl_clients_init
      Src: /src/dovecot/src/login-common/main.c:356,1
    - Dst: client_common_init
      Src: /src/dovecot/src/login-common/main.c:357,1
    - Dst: master_admin_clients_init
      Src: /src/dovecot/src/login-common/main.c:358,1
    - Dst: master_service_get_socket_count
      Src: /src/dovecot/src/login-common/main.c:375,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/login-common/main.c:376,1
    - Dst: io_loop_set_max_fd_count
      Src: /src/dovecot/src/login-common/main.c:377,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/main.c:379,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/main.c:379,1
    - Dst: login_anvil_init
      Src: /src/dovecot/src/login-common/main.c:383,1
    - Dst: parse_login_source_ips
      Src: /src/dovecot/src/login-common/main.c:387,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/login-common/main.c:392,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/login-common/main.c:395,1
    - Dst: login_load_modules
      Src: /src/dovecot/src/login-common/main.c:397,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/login-common/main.c:399,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/login-common/main.c:401,1
    - Dst: master_service_get_restart_request_count
      Src: /src/dovecot/src/login-common/main.c:402,1
    - Dst: restrict_access_get_current_chroot
      Src: /src/dovecot/src/login-common/main.c:404,1
    - Dst: chdir
      Src: /src/dovecot/src/login-common/main.c:405,1
    - Dst: i_fatal
      Src: /src/dovecot/src/login-common/main.c:406,1
    - Dst: access
      Src: /src/dovecot/src/login-common/main.c:410,1
    - Dst: i_error
      Src: /src/dovecot/src/login-common/main.c:411,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 349
    functionDepth: 4
    functionLinenumber: 349
    functionLinenumberEnd: 415
    functionName: main_preinit
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 1
    functionsReached:
    - dsasl_clients_init
    - restrict_access_allow_coredumps
    - i_rand_limit
    - master_service_get_restart_request_count
    - i_fatal
    - chdir
    - restrict_access_get_current_chroot
    - access
    - master_admin_clients_init
    - client_common_init
    - login_ssl_init
    - login_load_modules
    - login_anvil_init
    - i_assert
    - strcmp
    - restrict_access_by_env
    - parse_login_source_ips
    - i_error
    - master_service_get_socket_count
    - master_service_get_client_limit
    - io_loop_set_max_fd_count
    linkageType: ''
    returnType: void
    signature: void main_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: restrict_process_count
      Src: /src/dovecot/src/login-common/main.c:420,1
    - Dst: i_array_init
      Src: /src/dovecot/src/login-common/main.c:422,1
    - Dst: master_service_set_avail_overflow_callback
      Src: /src/dovecot/src/login-common/main.c:423,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/login-common/main.c:425,1
    - Dst: auth_client_init
      Src: /src/dovecot/src/login-common/main.c:427,1
    - Dst: getpid
      Src: /src/dovecot/src/login-common/main.c:427,1
    - Dst: auth_client_connect
      Src: /src/dovecot/src/login-common/main.c:429,1
    - Dst: auth_client_set_connect_notify
      Src: /src/dovecot/src/login-common/main.c:430,1
    - Dst: login_client_list_init
      Src: /src/dovecot/src/login-common/main.c:431,1
    - Dst: init
      Src: /src/dovecot/src/login-common/main.c:434,1
    - Dst: login_proxy_init
      Src: /src/dovecot/src/login-common/main.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - login_socket
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 437
    functionName: main_init
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 5
    functionsReached:
    - i_array_init
    - master_service_set_die_callback
    - auth_client_init
    - getpid
    - init
    - login_proxy_init
    - auth_client_set_connect_notify
    - master_service_set_avail_overflow_callback
    - login_client_list_init
    - auth_client_connect
    - restrict_process_count
    linkageType: ''
    returnType: void
    signature: void main_init(const char *login_socket)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy_fd_proxies
      Src: /src/dovecot/src/login-common/main.c:441,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/login-common/main.c:442,1
    - Dst: login_proxy_deinit
      Src: /src/dovecot/src/login-common/main.c:443,1
    - Dst: deinit
      Src: /src/dovecot/src/login-common/main.c:445,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/login-common/main.c:446,1
    - Dst: auth_client_deinit
      Src: /src/dovecot/src/login-common/main.c:447,1
    - Dst: login_client_list_deinit
      Src: /src/dovecot/src/login-common/main.c:448,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/login-common/main.c:451,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/main.c:452,1
    - Dst: array_free
      Src: /src/dovecot/src/login-common/main.c:453,1
    - Dst: anvil_client_deinit
      Src: /src/dovecot/src/login-common/main.c:456,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/main.c:457,1
    - Dst: client_common_deinit
      Src: /src/dovecot/src/login-common/main.c:458,1
    - Dst: dsasl_clients_deinit
      Src: /src/dovecot/src/login-common/main.c:459,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/main.c:461,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/main.c:462,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/main.c:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 464
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 6
    functionsReached:
    - array_foreach_elem
    - settings_free
    - client_common_deinit
    - auth_client_deinit
    - login_proxy_deinit
    - client_destroy_fd_proxies
    - timeout_remove
    - module_dir_unload
    - array_free
    - deinit
    - i_free
    - login_client_list_deinit
    - dsasl_clients_deinit
    - ssl_iostream_context_cache_free
    - anvil_client_deinit
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/login-common/main.c:481,1
    - Dst: master_getopt
      Src: /src/dovecot/src/login-common/main.c:485,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/login-common/main.c:503,1
    - Dst: preinit
      Src: /src/dovecot/src/login-common/main.c:505,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/login-common/main.c:511,1
    - Dst: settings_get
      Src: /src/dovecot/src/login-common/main.c:513,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/login-common/main.c:513,1
    - Dst: i_fatal
      Src: /src/dovecot/src/login-common/main.c:517,1
    - Dst: ssl_server_settings_get
      Src: /src/dovecot/src/login-common/main.c:518,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/login-common/main.c:518,1
    - Dst: i_fatal
      Src: /src/dovecot/src/login-common/main.c:521,1
    - Dst: main_preinit
      Src: /src/dovecot/src/login-common/main.c:528,1
    - Dst: main_init
      Src: /src/dovecot/src/login-common/main.c:529,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/login-common/main.c:531,1
    - Dst: master_service_run
      Src: /src/dovecot/src/login-common/main.c:532,1
    - Dst: main_deinit
      Src: /src/dovecot/src/login-common/main.c:533,1
    - Dst: array_free
      Src: /src/dovecot/src/login-common/main.c:534,1
    - Dst: array_free
      Src: /src/dovecot/src/login-common/main.c:535,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/login-common/main.c:536,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - binary
    - argc
    - argv
    argTypes:
    - struct login_binary*
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 466
    functionDepth: 6
    functionLinenumber: 466
    functionLinenumberEnd: 538
    functionName: login_binary_run
    functionSourceFile: /src/dovecot/src/login-common/main.c
    functionUses: 1
    functionsReached:
    - main_init
    - master_service_run
    - master_service_settings_read
    - ssl_server_settings_get
    - i_fatal
    - main_deinit
    - master_service_deinit
    - master_service_init_finish
    - master_service_get_event
    - main_preinit
    - preinit
    - settings_get
    - master_getopt
    - master_service_init
    - array_free
    - master_service_init_log
    linkageType: ''
    returnType: int
    signature: "int login_binary_run(struct login_binary *binary,\n\t\t     int argc,
      char *argv[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_last_read_time
      Src: /src/dovecot/src/login-common/login-proxy.c:131,1
    - Dst: i_stream_get_last_read_time
      Src: /src/dovecot/src/login-common/login-proxy.c:132,1
    - Dst: o_stream_get_last_write_time
      Src: /src/dovecot/src/login-common/login-proxy.c:133,1
    - Dst: o_stream_get_last_write_time
      Src: /src/dovecot/src/login-common/login-proxy.c:134,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/login-common/login-proxy.c:136,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/login-common/login-proxy.c:137,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/login-common/login-proxy.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 141
    functionName: proxy_last_io_timeval
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - timeval_cmp
    - o_stream_get_last_write_time
    - i_stream_get_last_read_time
    linkageType: ''
    returnType: void
    signature: void proxy_last_io_timeval(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: proxy_last_io_timeval
      Src: /src/dovecot/src/login-common/login-proxy.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: proxy_last_io
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - proxy_last_io_timeval
    linkageType: ''
    returnType: time_t
    signature: time_t proxy_last_io(struct login_proxy *proxy)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/login-proxy.c:152,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:155,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:157,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:159,1
    - Dst: proxy_last_io
      Src: /src/dovecot/src/login-common/login-proxy.c:160,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/login-common/login-proxy.c:162,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:163,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/login-common/login-proxy.c:164,1
    - Dst: iostream_proxy_is_waiting_output
      Src: /src/dovecot/src/login-common/login-proxy.c:166,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/login-proxy.c:168,1
    - Dst: iostream_proxy_is_waiting_output
      Src: /src/dovecot/src/login-common/login-proxy.c:169,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/login-proxy.c:171,1
    - Dst: str_append_c
      Src: /src/dovecot/src/login-common/login-proxy.c:173,1
    - Dst: login_proxy_free_full
      Src: /src/dovecot/src/login-common/login-proxy.c:174,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/login-proxy.c:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - _proxy
    - errstr
    - server
    argTypes:
    - struct login_proxy**
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 176
    functionName: login_proxy_free_errstr
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - str_c
    - proxy_last_io
    - t_str_new
    - str_printfa
    - str_append_c
    - login_proxy_free_full
    - iostream_proxy_is_waiting_output
    - o_stream_get_buffer_used_size
    - str_append
    linkageType: ''
    returnType: void
    signature: "void login_proxy_free_errstr(struct login_proxy **_proxy,\n\t\t\t\t
      \   const char *errstr, bool server)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/login-common/login-proxy.c:182,1
    - Dst: login_proxy_free_final
      Src: /src/dovecot/src/login-common/login-proxy.c:183,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/login-common/login-proxy.c:185,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/login-common/login-proxy.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 188
    functionName: proxy_client_disconnected_input
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_free_final
    - i_stream_read
    - i_stream_get_data_size
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void proxy_client_disconnected_input(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct login_proxy*::input_callback
      Src: /src/dovecot/src/login-common/login-proxy.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: proxy_prelogin_input
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - struct login_proxy*::input_callback
    linkageType: ''
    returnType: void
    signature: void proxy_prelogin_input(struct login_proxy *proxy)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/login-common/login-proxy.c:199,1
    - Dst: i_unreached
      Src: /src/dovecot/src/login-common/login-proxy.c:203,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:213,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/login-common/login-proxy.c:216,1
    - Dst: t_strsplit_tabescaped_inplace
      Src: /src/dovecot/src/login-common/login-proxy.c:218,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/login-proxy.c:220,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/login-proxy.c:222,1
    - Dst: struct login_proxy*::side_callback
      Src: /src/dovecot/src/login-common/login-proxy.c:223,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/login-proxy.c:224,1
    - Dst: login_proxy_disconnect
      Src: /src/dovecot/src/login-common/login-proxy.c:225,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 231
    functionName: proxy_side_channel_input
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_disconnect
    - i_unreached
    - io_remove
    - i_stream_next_line
    - e_error
    - struct login_proxy*::side_callback
    - i_stream_read
    - i_assert
    - t_strsplit_tabescaped_inplace
    linkageType: ''
    returnType: void
    signature: void proxy_side_channel_input(struct login_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/login-common/login-proxy.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 245
    functionName: proxy_rawlog_init
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - iostream_rawlog_create
    linkageType: ''
    returnType: void
    signature: void proxy_rawlog_init(struct login_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:252,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:253,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/login-common/login-proxy.c:254,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/login-common/login-proxy.c:255,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:256,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 260
    functionName: proxy_rawlog_deinit
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - o_stream_ref
    - i_assert
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void proxy_rawlog_deinit(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/login-common/login-proxy.c:265,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/login-common/login-proxy.c:267,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/login-common/login-proxy.c:268,1
    - Dst: io_add
      Src: /src/dovecot/src/login-common/login-proxy.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 272
    functionName: proxy_plain_connected
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - o_stream_set_no_error_handling
    - o_stream_create_fd
    - i_stream_create_fd
    - io_add
    linkageType: ''
    returnType: void
    signature: void proxy_plain_connected(struct login_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:276,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/login-common/login-proxy.c:278,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 288
    functionName: proxy_fail_connect
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - i_assert
    - timeval_cmp
    linkageType: ''
    returnType: void
    signature: void proxy_fail_connect(struct login_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/login-common/login-proxy.c:293,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:294,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:296,1
    - Dst: str_append_c
      Src: /src/dovecot/src/login-common/login-proxy.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - proxy
    - str
    argTypes:
    - struct login_proxy*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: login_proxy_append_success_log_info
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - timeval_diff_msecs
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void login_proxy_append_success_log_info(struct login_proxy *proxy,\n\t\t\t\t\t
      string_t *str)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:307,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/login-proxy.c:308,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:310,1
    - Dst: client_proxy_get_state
      Src: /src/dovecot/src/login-common/login-proxy.c:311,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:313,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:316,1
    - Dst: net_getsockname
      Src: /src/dovecot/src/login-common/login-proxy.c:319,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:320,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/login-common/login-proxy.c:321,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:323,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/login-proxy.c:324,1
    - Dst: str_append_c
      Src: /src/dovecot/src/login-common/login-proxy.c:327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - proxy
    - str
    argTypes:
    - struct login_proxy*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 328
    functionName: proxy_connect_error_append
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - net_getsockname
    - str_append_c
    - net_ip2addr
    - client_proxy_get_state
    - net_ipport2str
    linkageType: ''
    returnType: void
    signature: void proxy_connect_error_append(struct login_proxy *proxy, string_t
      *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/login-common/login-proxy.c:335,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/login-proxy.c:336,1
    - Dst: login_proxy_state_get
      Src: /src/dovecot/src/login-common/login-proxy.c:338,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/login-common/login-proxy.c:342,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/login-proxy.c:344,1
    - Dst: login_proxy_get_hostport
      Src: /src/dovecot/src/login-common/login-proxy.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - proxy
    - host
    - ip
    - port
    argTypes:
    - struct login_proxy*
    - char*
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 347
    functionName: login_proxy_set_destination
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_state_get
    - event_set_append_log_prefix
    - t_strdup_printf
    - i_strdup
    - login_proxy_get_hostport
    - i_free
    linkageType: ''
    returnType: void
    signature: "void login_proxy_set_destination(struct login_proxy *proxy, const
      char *host,\n\t\t\t    const struct ip_addr *ip, in_port_t port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:351,1
    - Dst: login_proxy_connect
      Src: /src/dovecot/src/login-common/login-proxy.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 353
    functionName: proxy_reconnect_timeout
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_connect
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void proxy_reconnect_timeout(struct login_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/login-common/login-proxy.c:359,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/login-common/login-proxy.c:360,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/login-common/login-proxy.c:361,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/login-proxy.c:363,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/login-proxy.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 365
    functionName: login_proxy_get_hostport
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - net_addr2ip
    - t_strdup_printf
    - net_ip2addr
    - net_ipport2str
    - net_ip_compare
    linkageType: ''
    returnType: char
    signature: char *login_proxy_get_hostport(const struct login_proxy *proxy)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/login-common/login-proxy.c:377,1
    - Dst: login_proxy_disconnect
      Src: /src/dovecot/src/login-common/login-proxy.c:384,1
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/login-proxy.c:385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 389
    functionName: proxy_try_reconnect
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_disconnect
    - timeout_add
    - timeval_diff_msecs
    linkageType: ''
    returnType: bool
    signature: bool proxy_try_reconnect(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_ip_compare
      Src: /src/dovecot/src/login-common/login-proxy.c:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - proxy
    - ip
    - port
    argTypes:
    - struct login_proxy*
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 395
    functionName: proxy_is_self
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool proxy_is_self(struct login_proxy *proxy,\n\t\t\t  const struct
      ip_addr *ip, in_port_t port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/login-common/login-proxy.c:403,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/login-common/login-proxy.c:406,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/login-common/login-proxy.c:407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - proxy
    - ip
    - port
    argTypes:
    - struct login_proxy*
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 411
    functionName: login_proxy_redirect_find
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - net_ip_compare
    linkageType: ''
    returnType: struct login_proxy_redirect
    signature: "struct login_proxy_redirect *\nlogin_proxy_redirect_find(struct login_proxy
      *proxy,\n\t\t\t  const struct ip_addr *ip, in_port_t port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/login-proxy.c:415,1
    - Dst: proxy_fail_connect
      Src: /src/dovecot/src/login-common/login-proxy.c:418,1
    - Dst: proxy_connect_error_append
      Src: /src/dovecot/src/login-common/login-proxy.c:419,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:420,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/login-proxy.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 413
    functionDepth: 2
    functionLinenumber: 413
    functionLinenumberEnd: 423
    functionName: proxy_connect_failed
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - login_proxy_failed
    - proxy_fail_connect
    - proxy_connect_error_append
    linkageType: ''
    returnType: bool
    signature: bool proxy_connect_failed(struct login_proxy *proxy)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_geterror
      Src: /src/dovecot/src/login-common/login-proxy.c:427,1
    - Dst: proxy_connect_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:429,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:435,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:440,1
    - Dst: proxy_plain_connected
      Src: /src/dovecot/src/login-common/login-proxy.c:441,1
    - Dst: login_proxy_starttls
      Src: /src/dovecot/src/login-common/login-proxy.c:445,1
    - Dst: proxy_rawlog_init
      Src: /src/dovecot/src/login-common/login-proxy.c:449,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 425
    functionDepth: 3
    functionLinenumber: 425
    functionLinenumberEnd: 451
    functionName: proxy_wait_connect
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - net_geterror
    - io_remove
    - proxy_plain_connected
    - proxy_connect_failed
    - login_proxy_starttls
    - i_assert
    - proxy_rawlog_init
    linkageType: ''
    returnType: void
    signature: void proxy_wait_connect(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: proxy_connect_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 453
    functionDepth: 3
    functionLinenumber: 453
    functionLinenumberEnd: 457
    functionName: proxy_connect_timeout
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - proxy_connect_failed
    linkageType: ''
    returnType: void
    signature: void proxy_connect_timeout(struct login_proxy *proxy)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/login-common/login-proxy.c:463,1
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/login-common/login-proxy.c:471,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:472,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:479,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/login-common/login-proxy.c:491,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/login-common/login-proxy.c:492,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:499,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/login-proxy.c:501,1
    - Dst: net_connect_ip
      Src: /src/dovecot/src/login-common/login-proxy.c:506,1
    - Dst: proxy_connect_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:510,1
    - Dst: net_getsockname
      Src: /src/dovecot/src/login-common/login-proxy.c:517,1
    - Dst: event_add_int
      Src: /src/dovecot/src/login-common/login-proxy.c:518,1
    - Dst: io_add
      Src: /src/dovecot/src/login-common/login-proxy.c:520,1
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/login-proxy.c:523,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 459
    functionDepth: 3
    functionLinenumber: 459
    functionLinenumberEnd: 527
    functionName: login_proxy_connect
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - login_proxy_failed
    - timeval_diff_msecs
    - net_getsockname
    - timeval_cmp
    - io_add
    - e_debug
    - timeout_add
    - t_strdup_printf
    - proxy_connect_failed
    - net_connect_ip
    - event_add_int
    - connection_is_valid_dns_name
    linkageType: ''
    returnType: int
    signature: int login_proxy_connect(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:538,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:539,1
    - Dst: i_new
      Src: /src/dovecot/src/login-common/login-proxy.c:541,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/login-common/login-proxy.c:552,1
    - Dst: login_proxy_set_destination
      Src: /src/dovecot/src/login-common/login-proxy.c:553,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/login-common/login-proxy.c:556,1
    - Dst: login_proxy_get_source_host
      Src: /src/dovecot/src/login-common/login-proxy.c:557,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/login-common/login-proxy.c:558,1
    - Dst: event_add_int
      Src: /src/dovecot/src/login-common/login-proxy.c:559,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/login-proxy.c:560,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/login-proxy.c:561,1
    - Dst: client_ref
      Src: /src/dovecot/src/login-common/login-proxy.c:563,1
    - Dst: event_ref
      Src: /src/dovecot/src/login-common/login-proxy.c:564,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/login-common/login-proxy.c:566,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/login-common/login-proxy.c:574,1
    - Dst: e_debug
      Src: /src/dovecot/src/login-common/login-proxy.c:576,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/login-common/login-proxy.c:576,1
    - Dst: login_proxy_connect
      Src: /src/dovecot/src/login-common/login-proxy.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 7
    argNames:
    - client
    - event
    - set
    - input_callback
    - side_callback
    - failure_callback
    - redirect_callback
    argTypes:
    - struct client*
    - struct event*
    - struct login_proxy_settings*
    - login_proxy_input_callback_t*
    - login_proxy_side_channel_input_callback_t*
    - login_proxy_failure_callback_t*
    - login_proxy_redirect_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 529
    functionDepth: 4
    functionLinenumber: 529
    functionLinenumberEnd: 579
    functionName: login_proxy_new
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - event_ref
    - e_debug
    - event_add_ip
    - i_strdup_empty
    - login_proxy_get_source_host
    - DLLIST_PREPEND
    - event_add_str
    - i_new
    - client_ref
    - event_create_passthrough
    - struct event_passthrough*::event
    - login_proxy_connect
    - login_proxy_set_destination
    - i_assert
    - event_add_int
    linkageType: ''
    returnType: int
    signature: "int login_proxy_new(struct client *client, struct event *event,\n\t\t
      \   const struct login_proxy_settings *set,\n\t\t    login_proxy_input_callback_t
      *input_callback,\n\t\t    login_proxy_side_channel_input_callback_t *side_callback,\n\t\t
      \   login_proxy_failure_callback_t *failure_callback,\n\t\t    login_proxy_redirect_callback_t
      *redirect_callback)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:583,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:584,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:587,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:592,1
    - Dst: iostream_proxy_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:596,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:597,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:599,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:600,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:601,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:603,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:604,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:605,1
    - Dst: shutdown
      Src: /src/dovecot/src/login-common/login-proxy.c:607,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/login-common/login-proxy.c:608,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 612
    functionName: login_proxy_disconnect
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 2
    functionsReached:
    - shutdown
    - net_disconnect
    - iostream_proxy_unref
    - io_remove
    - i_stream_destroy
    - ssl_iostream_destroy
    - i_assert
    - o_stream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void login_proxy_disconnect(struct login_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/login-common/login-proxy.c:619,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/login-proxy.c:622,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/login-common/login-proxy.c:623,1
    - Dst: DLLIST_PREPEND_FULL
      Src: /src/dovecot/src/login-common/login-proxy.c:625,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/login-common/login-proxy.c:626,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/login-common/login-proxy.c:629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 631
    functionName: login_proxy_detached_link
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - hash_table_update
    - DLLIST_PREPEND_FULL
    - i_strdup
    - DLLIST_PREPEND
    - hash_table_lookup_full
    - hash_table_insert
    linkageType: ''
    returnType: void
    signature: void login_proxy_detached_link(struct login_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:638,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/login-common/login-proxy.c:641,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/login-common/login-proxy.c:643,1
    - Dst: i_unreached
      Src: /src/dovecot/src/login-common/login-proxy.c:646,1
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/login-common/login-proxy.c:647,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/login-common/login-proxy.c:649,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:651,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/login-proxy.c:652,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 654
    functionName: login_proxy_detached_unlink
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - hash_table_update
    - i_free
    - i_unreached
    - hash_table_remove
    - DLLIST_REMOVE_FULL
    - hash_table_lookup_full
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void login_proxy_detached_unlink(struct login_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:658,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/login-common/login-proxy.c:661,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:663,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:666,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:669,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:670,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:671,1
    - Dst: client_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:672,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:673,1
    - Dst: array_free
      Src: /src/dovecot/src/login-common/login-proxy.c:674,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/login-proxy.c:675,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/login-proxy.c:676,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/login-proxy.c:677,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 678
    functionName: login_proxy_free_final
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - event_unref
    - i_free
    - io_remove
    - timeout_remove
    - array_free
    - client_unref
    - i_assert
    - DLLIST_REMOVE
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void login_proxy_free_final(struct login_proxy *proxy)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/login-common/login-proxy.c:694,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/login-common/login-proxy.c:695,1
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/login-common/login-proxy.c:721,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/login-common/login-proxy.c:722,1
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/login-proxy.c:730,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/login-common/login-proxy.c:731,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 680
    functionDepth: 1
    functionLinenumber: 680
    functionLinenumberEnd: 733
    functionName: login_proxy_delay_disconnect
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - timeout_add
    - DLLIST_PREPEND
    - timeval_add_msecs
    - i_rand_limit
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int login_proxy_delay_disconnect(struct login_proxy *proxy)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/login-common/login-proxy.c:753,1
    - Dst: proxy_last_io_timeval
      Src: /src/dovecot/src/login-common/login-proxy.c:759,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/login-common/login-proxy.c:760,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:761,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/login-common/login-proxy.c:762,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/login-common/login-proxy.c:763,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/login-common/login-proxy.c:764,1
    - Dst: client_get_extra_disconnect_reason
      Src: /src/dovecot/src/login-common/login-proxy.c:766,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/login-common/login-proxy.c:768,1
    - Dst: login_proxy_disconnect
      Src: /src/dovecot/src/login-common/login-proxy.c:772,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:776,1
    - Dst: login_proxy_detached_unlink
      Src: /src/dovecot/src/login-common/login-proxy.c:777,1
    - Dst: login_proxy_delay_disconnect
      Src: /src/dovecot/src/login-common/login-proxy.c:780,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/login-proxy.c:783,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/login-common/login-proxy.c:783,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/login-proxy.c:785,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/login-common/login-proxy.c:785,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/login-common/login-proxy.c:792,1
    - Dst: master_service_anvil_disconnect
      Src: /src/dovecot/src/login-common/login-proxy.c:796,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:801,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:802,1
    - Dst: e_debug
      Src: /src/dovecot/src/login-common/login-proxy.c:804,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/login-common/login-proxy.c:804,1
    - Dst: e_debug
      Src: /src/dovecot/src/login-common/login-proxy.c:806,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/login-common/login-proxy.c:806,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/login-common/login-proxy.c:808,1
    - Dst: login_proxy_free_final
      Src: /src/dovecot/src/login-common/login-proxy.c:813,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:815,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/login-proxy.c:816,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 5
    argNames:
    - _proxy
    - log_msg
    - disconnect_reason
    - disconnect_side
    - flags
    argTypes:
    - struct login_proxy**
    - char*
    - char*
    - char*
    - enum login_proxy_free_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 736
    functionDepth: 3
    functionLinenumber: 736
    functionLinenumberEnd: 819
    functionName: login_proxy_free_full
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - login_proxy_disconnect
    - e_info
    - master_service_get_name
    - timeval_diff_usecs
    - login_proxy_detached_unlink
    - e_debug
    - io_add_istream
    - login_proxy_free_final
    - client_get_extra_disconnect_reason
    - login_proxy_delay_disconnect
    - proxy_last_io_timeval
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - event_create_passthrough
    - master_service_anvil_disconnect
    - i_assert
    - DLLIST_REMOVE
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void login_proxy_free_full(struct login_proxy **_proxy, const char
      *log_msg,\n\t\t      const char *disconnect_reason,\n\t\t      const char *disconnect_side,\n\t\t
      \     enum login_proxy_free_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:827,1
    - Dst: login_proxy_free_full
      Src: /src/dovecot/src/login-common/login-proxy.c:829,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - _proxy
    argTypes:
    - struct login_proxy**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 821
    functionDepth: 4
    functionLinenumber: 821
    functionLinenumberEnd: 830
    functionName: login_proxy_free
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - i_assert
    - login_proxy_free_full
    linkageType: ''
    returnType: void
    signature: void login_proxy_free(struct login_proxy **_proxy)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/login-proxy.c:837,1
    - Dst: struct login_proxy*::redirect_callback
      Src: /src/dovecot/src/login-common/login-proxy.c:870,1
    - Dst: i_unreached
      Src: /src/dovecot/src/login-common/login-proxy.c:875,1
    - Dst: proxy_try_reconnect
      Src: /src/dovecot/src/login-common/login-proxy.c:878,1
    - Dst: event_add_int
      Src: /src/dovecot/src/login-common/login-proxy.c:879,1
    - Dst: event_set_name
      Src: /src/dovecot/src/login-common/login-proxy.c:880,1
    - Dst: e_warning
      Src: /src/dovecot/src/login-common/login-proxy.c:881,1
    - Dst: struct login_proxy*::failure_callback
      Src: /src/dovecot/src/login-common/login-proxy.c:883,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/login-proxy.c:887,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/login-common/login-proxy.c:889,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/login-proxy.c:895,1
    - Dst: client_proxy_log_failure
      Src: /src/dovecot/src/login-common/login-proxy.c:897,1
    - Dst: struct login_proxy*::failure_callback
      Src: /src/dovecot/src/login-common/login-proxy.c:898,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 4
    argNames:
    - proxy
    - event
    - type
    - reason
    argTypes:
    - struct login_proxy*
    - struct event*
    - enum login_proxy_failure_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 832
    functionDepth: 2
    functionLinenumber: 832
    functionLinenumberEnd: 900
    functionName: login_proxy_failed
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 6
    functionsReached:
    - proxy_try_reconnect
    - struct login_proxy*::redirect_callback
    - i_unreached
    - event_set_name
    - client_proxy_log_failure
    - e_error
    - e_warning
    - i_strdup_printf
    - struct login_proxy*::failure_callback
    - event_add_str
    - i_free
    - event_add_int
    linkageType: ''
    returnType: bool
    signature: "bool login_proxy_failed(struct login_proxy *proxy, struct event *event,\n\t\t\tenum
      login_proxy_failure_type type, const char *reason)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/login-common/login-proxy.c:909,1
    - Dst: str_data
      Src: /src/dovecot/src/login-common/login-proxy.c:910,1
    - Dst: str_len
      Src: /src/dovecot/src/login-common/login-proxy.c:910,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/login-common/login-proxy.c:912,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:919,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/login-proxy.c:920,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/login-proxy.c:925,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:927,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/login-proxy.c:928,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:933,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/login-proxy.c:934,1
    - Dst: str_truncate
      Src: /src/dovecot/src/login-common/login-proxy.c:938,1
    - Dst: base64_encode
      Src: /src/dovecot/src/login-common/login-proxy.c:939,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - client
    - str
    argTypes:
    - struct client*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 902
    functionDepth: 3
    functionLinenumber: 902
    functionLinenumberEnd: 941
    functionName: login_proxy_sasl_step
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - login_proxy_failed
    - str_data
    - str_len
    - t_strdup_printf
    - base64_encode
    - login_proxy_get_event
    - str_truncate
    - dsasl_client_input
    - dsasl_client_output
    linkageType: ''
    returnType: int
    signature: int login_proxy_sasl_step(struct client *client, string_t *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/login-common/login-proxy.c:954,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/login-common/login-proxy.c:956,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/login-proxy.c:959,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - client
    - host
    - hostip
    - port
    - destuser
    argTypes:
    - struct client*
    - char*
    - struct ip_addr*
    - in_port_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 960
    functionName: login_proxy_is_ourself
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - strcmp
    - net_addr2ip
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool login_proxy_is_ourself(const struct client *client, const char
      *host,\n\t\t\t    const struct ip_addr *hostip,\n\t\t\t    in_port_t port, const
      char *destuser)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:968,1
    - Dst: proxy_is_self
      Src: /src/dovecot/src/login-common/login-proxy.c:972,1
    - Dst: login_proxy_redirect_find
      Src: /src/dovecot/src/login-common/login-proxy.c:976,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/login-proxy.c:981,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/login-proxy.c:983,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:984,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:988,1
    - Dst: array_is_created
      Src: /src/dovecot/src/login-common/login-proxy.c:993,1
    - Dst: i_array_init
      Src: /src/dovecot/src/login-common/login-proxy.c:994,1
    - Dst: array_append_space
      Src: /src/dovecot/src/login-common/login-proxy.c:995,1
    - Dst: login_proxy_disconnect
      Src: /src/dovecot/src/login-common/login-proxy.c:1002,1
    - Dst: e_debug
      Src: /src/dovecot/src/login-common/login-proxy.c:1004,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/login-common/login-proxy.c:1004,1
    - Dst: login_proxy_set_destination
      Src: /src/dovecot/src/login-common/login-proxy.c:1005,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/login-proxy.c:1005,1
    - Dst: login_proxy_connect
      Src: /src/dovecot/src/login-common/login-proxy.c:1006,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - proxy
    - ip
    - port
    argTypes:
    - struct login_proxy*
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 962
    functionDepth: 4
    functionLinenumber: 962
    functionLinenumberEnd: 1007
    functionName: login_proxy_redirect_finish
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - login_proxy_disconnect
    - proxy_is_self
    - login_proxy_failed
    - array_append_space
    - login_proxy_set_destination
    - e_debug
    - t_strdup_printf
    - login_proxy_redirect_find
    - login_proxy_connect
    - net_ip2addr
    - array_is_created
    - i_assert
    - net_ipport2str
    linkageType: ''
    returnType: void
    signature: "void login_proxy_redirect_finish(struct login_proxy *proxy,\n\t\t\t\t
      const struct ip_addr *ip, in_port_t port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:1013,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/login-common/login-proxy.c:1013,1
    - Dst: array_is_created
      Src: /src/dovecot/src/login-common/login-proxy.c:1014,1
    - Dst: array_foreach
      Src: /src/dovecot/src/login-common/login-proxy.c:1016,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/login-proxy.c:1017,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/login-common/login-proxy.c:1018,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - proxy
    - str
    argTypes:
    - struct login_proxy*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1009
    functionDepth: 1
    functionLinenumber: 1009
    functionLinenumberEnd: 1020
    functionName: login_proxy_get_redirect_path
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - array_foreach
    - str_printfa
    - net_ipport2str
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void login_proxy_get_redirect_path(struct login_proxy *proxy, string_t
      *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1026,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1027,1
    - Dst: iostream_proxy_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1029,1
    - Dst: struct client*::v::iostream_change_pre
      Src: /src/dovecot/src/login-common/login-proxy.c:1039,1
    - Dst: client_rawlog_deinit
      Src: /src/dovecot/src/login-common/login-proxy.c:1040,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1022
    functionDepth: 1
    functionLinenumber: 1022
    functionLinenumberEnd: 1044
    functionName: login_proxy_replace_client_iostream_pre
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - iostream_proxy_unref
    - struct client*::v::iostream_change_pre
    - i_assert
    - client_rawlog_deinit
    linkageType: ''
    returnType: void
    signature: void login_proxy_replace_client_iostream_pre(struct login_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1052,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1053,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1054,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1055,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1060,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1061,1
    - Dst: struct client*::v::iostream_change_post
      Src: /src/dovecot/src/login-common/login-proxy.c:1064,1
    - Dst: client_rawlog_init
      Src: /src/dovecot/src/login-common/login-proxy.c:1065,1
    - Dst: login_proxy_iostream_start
      Src: /src/dovecot/src/login-common/login-proxy.c:1077,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - proxy
    - new_input
    - new_output
    argTypes:
    - struct login_proxy*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1046
    functionDepth: 1
    functionLinenumber: 1046
    functionLinenumberEnd: 1078
    functionName: login_proxy_replace_client_iostream_post
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - client_rawlog_init
    - login_proxy_iostream_start
    - struct client*::v::iostream_change_post
    - o_stream_unref
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void login_proxy_replace_client_iostream_post(struct login_proxy *proxy,\n\t\t\t\t\t
      \     struct istream *new_input,\n\t\t\t\t\t      struct ostream *new_output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1080
    functionDepth: 0
    functionLinenumber: 1080
    functionLinenumberEnd: 1083
    functionName: login_proxy_get_client_istream
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct istream
    signature: struct istream *login_proxy_get_client_istream(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1085
    functionDepth: 0
    functionLinenumber: 1085
    functionLinenumberEnd: 1088
    functionName: login_proxy_get_client_ostream
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *login_proxy_get_client_ostream(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1093
    functionName: login_proxy_get_server_istream
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct istream
    signature: struct istream *login_proxy_get_server_istream(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1095
    functionDepth: 0
    functionLinenumber: 1095
    functionLinenumberEnd: 1098
    functionName: login_proxy_get_server_ostream
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *login_proxy_get_server_ostream(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1100
    functionDepth: 0
    functionLinenumber: 1100
    functionLinenumberEnd: 1103
    functionName: login_proxy_get_event
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *login_proxy_get_event(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1105
    functionDepth: 0
    functionLinenumber: 1105
    functionLinenumberEnd: 1109
    functionName: login_proxy_get_source_host
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct ip_addr
    signature: 'struct ip_addr *

      login_proxy_get_source_host(const struct login_proxy *proxy)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1111
    functionDepth: 0
    functionLinenumber: 1111
    functionLinenumberEnd: 1114
    functionName: login_proxy_get_host
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *login_proxy_get_host(const struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/login-proxy.c:1118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1116
    functionDepth: 1
    functionLinenumber: 1116
    functionLinenumberEnd: 1119
    functionName: login_proxy_get_ip_str
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - net_ip2addr
    linkageType: ''
    returnType: char
    signature: char *login_proxy_get_ip_str(const struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1121
    functionDepth: 0
    functionLinenumber: 1121
    functionLinenumberEnd: 1124
    functionName: login_proxy_get_port
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: in_port_t
    signature: in_port_t login_proxy_get_port(const struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1126
    functionDepth: 0
    functionLinenumber: 1126
    functionLinenumberEnd: 1130
    functionName: login_proxy_get_ssl_flags
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: enum auth_proxy_ssl_flags
    signature: enum auth_proxy_ssl_flags login_proxy_get_ssl_flags(const struct login_proxy
      *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1132
    functionDepth: 0
    functionLinenumber: 1132
    functionLinenumberEnd: 1136
    functionName: login_proxy_get_connect_timeout_msecs
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int login_proxy_get_connect_timeout_msecs(const struct login_proxy
      *proxy)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/login-common/login-proxy.c:1154,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/login-common/login-proxy.c:1155,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/login-common/login-proxy.c:1160,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/login-common/login-proxy.c:1161,1
    - Dst: i_unreached
      Src: /src/dovecot/src/login-common/login-proxy.c:1164,1
    - Dst: login_proxy_free_errstr
      Src: /src/dovecot/src/login-common/login-proxy.c:1166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - side
    - status
    - proxy
    argTypes:
    - enum iostream_proxy_side
    - enum iostream_proxy_status
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1138
    functionDepth: 4
    functionLinenumber: 1138
    functionLinenumberEnd: 1167
    functionName: login_proxy_finished
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - o_stream_get_error
    - login_proxy_free_errstr
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void login_proxy_finished(enum iostream_proxy_side side,\n\t\t     enum
      iostream_proxy_status status,\n\t\t     struct login_proxy *proxy)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_state_notify
      Src: /src/dovecot/src/login-common/login-proxy.c:1171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1172
    functionName: login_proxy_notify
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_state_notify
    linkageType: ''
    returnType: void
    signature: void login_proxy_notify(struct login_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/login-common/login-proxy.c:1179,1
    - Dst: t_array_init
      Src: /src/dovecot/src/login-common/login-proxy.c:1183,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/login-common/login-proxy.c:1189,1
    - Dst: array_push_back
      Src: /src/dovecot/src/login-common/login-proxy.c:1190,1
    - Dst: array_push_back
      Src: /src/dovecot/src/login-common/login-proxy.c:1191,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - client
    - strings
    argTypes:
    - struct client*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1174
    functionDepth: 1
    functionLinenumber: 1174
    functionLinenumberEnd: 1194
    functionName: client_get_alt_usernames
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - array_idx_elem
    - str_array_length
    - t_array_init
    - array_push_back
    linkageType: ''
    returnType: bool
    signature: "bool client_get_alt_usernames(struct client *client,\n\t\t\t ARRAY_TYPE(const_string)
      *strings)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_proxy_create
      Src: /src/dovecot/src/login-common/login-proxy.c:1199,1
    - Dst: iostream_proxy_set_completion_callback
      Src: /src/dovecot/src/login-common/login-proxy.c:1201,1
    - Dst: iostream_proxy_start
      Src: /src/dovecot/src/login-common/login-proxy.c:1203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1196
    functionDepth: 1
    functionLinenumber: 1196
    functionLinenumberEnd: 1204
    functionName: login_proxy_iostream_start
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - iostream_proxy_create
    - iostream_proxy_start
    - iostream_proxy_set_completion_callback
    linkageType: ''
    returnType: void
    signature: void login_proxy_iostream_start(struct login_proxy *proxy)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1210,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1212,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1213,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1214,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:1216,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:1217,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1230,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1231,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1236,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/login-common/login-proxy.c:1241,1
    - Dst: login_proxy_iostream_start
      Src: /src/dovecot/src/login-common/login-proxy.c:1245,1
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/login-proxy.c:1249,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1256,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/login-common/login-proxy.c:1259,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/login-common/login-proxy.c:1263,1
    - Dst: client_get_alt_usernames
      Src: /src/dovecot/src/login-common/login-proxy.c:1264,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/login-common/login-proxy.c:1265,1
    - Dst: array_idx
      Src: /src/dovecot/src/login-common/login-proxy.c:1266,1
    - Dst: master_service_anvil_connect
      Src: /src/dovecot/src/login-common/login-proxy.c:1268,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/login-common/login-proxy.c:1272,1
    - Dst: login_proxy_detached_link
      Src: /src/dovecot/src/login-common/login-proxy.c:1273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1206
    functionDepth: 3
    functionLinenumber: 1206
    functionLinenumberEnd: 1276
    functionName: login_proxy_detach
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - master_service_get_name
    - master_service_anvil_connect
    - array_idx
    - login_proxy_iostream_start
    - io_remove
    - o_stream_unref
    - timeout_add
    - client_get_alt_usernames
    - pool_unref
    - login_proxy_detached_link
    - ARRAY_TYPE
    - i_stream_unref
    - array_append_zero
    - i_assert
    - DLLIST_REMOVE
    - o_stream_set_max_buffer_size
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void login_proxy_detach(struct login_proxy *proxy)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: proxy_rawlog_deinit
      Src: /src/dovecot/src/login-common/login-proxy.c:1292,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:1293,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:1294,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1298,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1299,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/login-proxy.c:1301,1
    - Dst: io_stream_autocreate_ssl_client
      Src: /src/dovecot/src/login-common/login-proxy.c:1312,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/login-proxy.c:1317,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:1319,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/login-common/login-proxy.c:1324,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/login-common/login-proxy.c:1325,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/login-proxy.c:1326,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/login-common/login-proxy.c:1328,1
    - Dst: login_proxy_failed_because_invalid_cert
      Src: /src/dovecot/src/login-common/login-proxy.c:1331,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/login-proxy.c:1334,1
    - Dst: proxy_rawlog_init
      Src: /src/dovecot/src/login-common/login-proxy.c:1337,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/login-proxy.c:1339,1
    - Dst: login_proxy_multiplex_input_start
      Src: /src/dovecot/src/login-common/login-proxy.c:1342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1278
    functionDepth: 3
    functionLinenumber: 1278
    functionLinenumberEnd: 1344
    functionName: login_proxy_starttls
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 2
    functionsReached:
    - login_proxy_failed
    - login_proxy_failed_because_invalid_cert
    - io_add_istream
    - io_remove
    - t_strdup_printf
    - ssl_iostream_handshake
    - ssl_iostream_get_last_error
    - login_proxy_multiplex_input_start
    - io_stream_autocreate_ssl_client
    - i_assert
    - proxy_rawlog_init
    - proxy_rawlog_deinit
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int login_proxy_starttls(struct login_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_state
      Src: /src/dovecot/src/login-common/login-proxy.c:1352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1346
    functionDepth: 1
    functionLinenumber: 1346
    functionLinenumberEnd: 1355
    functionName: login_proxy_failed_because_invalid_cert
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - ssl_iostream_get_state
    linkageType: ''
    returnType: bool
    signature: bool login_proxy_failed_because_invalid_cert(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:1359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1360
    functionName: login_proxy_input_halt
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 0
    functionsReached:
    - io_remove
    linkageType: ''
    returnType: void
    signature: void login_proxy_input_halt(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/login-common/login-proxy.c:1364,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1366,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/login-common/login-proxy.c:1372,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1373,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/login-proxy.c:1375,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/login-proxy.c:1378,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/login-proxy.c:1379,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/login-common/login-proxy.c:1383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1362
    functionDepth: 1
    functionLinenumber: 1362
    functionLinenumberEnd: 1384
    functionName: login_proxy_multiplex_input_start
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 2
    functionsReached:
    - io_add_istream
    - io_remove
    - i_stream_set_input_pending
    - i_stream_create_multiplex
    - i_assert
    - i_stream_multiplex_add_channel
    linkageType: ''
    returnType: void
    signature: void login_proxy_multiplex_input_start(struct login_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_free_full
      Src: /src/dovecot/src/login-common/login-proxy.c:1388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct login_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1386
    functionDepth: 4
    functionLinenumber: 1386
    functionLinenumberEnd: 1392
    functionName: proxy_kill_idle
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - login_proxy_free_full
    linkageType: ''
    returnType: void
    signature: void proxy_kill_idle(struct login_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/login-common/login-proxy.c:1397,1
    - Dst: proxy_last_io
      Src: /src/dovecot/src/login-common/login-proxy.c:1403,1
    - Dst: proxy_kill_idle
      Src: /src/dovecot/src/login-common/login-proxy.c:1406,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1408,1
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/login-proxy.c:1410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1394
    functionDepth: 5
    functionLinenumber: 1394
    functionLinenumberEnd: 1414
    functionName: login_proxy_kill_idle
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - proxy_last_io
    - time
    - timeout_add
    - proxy_kill_idle
    - i_assert
    linkageType: ''
    returnType: void
    signature: void login_proxy_kill_idle(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/login-common/login-proxy.c:1422,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/login-common/login-proxy.c:1424,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/login-common/login-proxy.c:1429,1
    - Dst: login_proxy_free_full
      Src: /src/dovecot/src/login-common/login-proxy.c:1430,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - user
    - conn_guid
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1416
    functionDepth: 4
    functionLinenumber: 1416
    functionLinenumberEnd: 1437
    functionName: login_proxy_kick_user_connection
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 2
    functionsReached:
    - hash_table_lookup
    - guid_128_is_empty
    - guid_128_cmp
    - login_proxy_free_full
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int login_proxy_kick_user_connection(const char *user, const
      guid_128_t conn_guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1453
    functionDepth: 0
    functionLinenumber: 1453
    functionLinenumberEnd: 1456
    functionName: login_proxies_get_detached_count
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int login_proxies_get_detached_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1458
    functionDepth: 0
    functionLinenumber: 1458
    functionLinenumberEnd: 1461
    functionName: login_proxies_get_first_detached_client
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct client
    signature: struct client *login_proxies_get_first_detached_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_state_init
      Src: /src/dovecot/src/login-common/login-proxy.c:1465,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/login-common/login-proxy.c:1466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - proxy_notify_pipe_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1468
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1468
    functionName: login_proxy_init
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - login_proxy_state_init
    - hash_table_create
    linkageType: ''
    returnType: void
    signature: void login_proxy_init(const char *proxy_notify_pipe_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_free_full
      Src: /src/dovecot/src/login-common/login-proxy.c:1476,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1481,1
    - Dst: login_proxy_free_final
      Src: /src/dovecot/src/login-common/login-proxy.c:1484,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy.c:1486,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/login-common/login-proxy.c:1486,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/login-common/login-proxy.c:1487,1
    - Dst: login_proxy_state_deinit
      Src: /src/dovecot/src/login-common/login-proxy.c:1488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1470
    functionDepth: 4
    functionLinenumber: 1470
    functionLinenumberEnd: 1489
    functionName: login_proxy_deinit
    functionSourceFile: /src/dovecot/src/login-common/login-proxy.c
    functionUses: 1
    functionsReached:
    - login_proxy_free_full
    - login_proxy_free_final
    - hash_table_count
    - login_proxy_state_deinit
    - i_assert
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void login_proxy_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: DEF
    functionSourceFile: /src/dovecot/src/login-common/login-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strsplit
      Src: /src/dovecot/src/login-common/login-settings.c:97,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/login-settings.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - _set
    - pool
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 105
    functionName: login_settings_check
    functionSourceFile: /src/dovecot/src/login-common/login-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strsplit
    linkageType: ''
    returnType: bool
    signature: "bool login_settings_check(void *_set, pool_t pool,\n\t\t\t\t const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/login-common/client-common.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - module
    - hooks
    argTypes:
    - struct module*
    - struct login_client_hooks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: login_client_hooks_add
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void login_client_hooks_add(struct module *module,\n\t\t\t    const
      struct login_client_hooks *hooks)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/login-common/client-common.c:99,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/login-common/client-common.c:101,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:105,1
    - Dst: array_delete
      Src: /src/dovecot/src/login-common/client-common.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - hooks
    argTypes:
    - struct login_client_hooks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 108
    functionName: login_client_hooks_remove
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - array_delete
    - i_assert
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: void
    signature: void login_client_hooks_remove(const struct login_client_hooks *hooks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hook_build_init
      Src: /src/dovecot/src/login-common/client-common.c:115,1
    - Dst: array_foreach
      Src: /src/dovecot/src/login-common/client-common.c:117,1
    - Dst: struct login_client_module_hooks*::hooks::client_allocated
      Src: /src/dovecot/src/login-common/client-common.c:119,1
    - Dst: hook_build_update
      Src: /src/dovecot/src/login-common/client-common.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 122
    functionName: hook_login_client_allocated
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - hook_build_update
    - hook_build_init
    - struct login_client_module_hooks*::hooks::client_allocated
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void hook_login_client_allocated(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:135,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common.c:137,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:145,1
    - Dst: client_proxy_get_state
      Src: /src/dovecot/src/login-common/client-common.c:148,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common.c:149,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common.c:149,1
    - Dst: client_notify_disconnect
      Src: /src/dovecot/src/login-common/client-common.c:155,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common.c:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 157
    functionName: client_idle_disconnect_timeout
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - t_strdup_printf
    - e_error
    - login_proxy_get_event
    - client_proxy_get_state
    - client_notify_disconnect
    linkageType: ''
    returnType: void
    signature: void client_idle_disconnect_timeout(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/login-common/client-common.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 173
    functionName: client_rawlog_init
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - iostream_rawlog_create
    linkageType: ''
    returnType: void
    signature: void client_rawlog_init(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:181,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/login-common/client-common.c:182,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/login-common/client-common.c:183,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/login-common/client-common.c:184,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/login-common/client-common.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: client_rawlog_deinit
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - i_stream_ref
    - o_stream_ref
    - i_assert
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void client_rawlog_deinit(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/login-common/client-common.c:192,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/login-common/client-common.c:193,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/login-common/client-common.c:194,1
    - Dst: client_rawlog_init
      Src: /src/dovecot/src/login-common/client-common.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 197
    functionName: client_open_streams
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - o_stream_set_no_error_handling
    - o_stream_create_fd
    - i_stream_create_fd
    - client_rawlog_init
    linkageType: ''
    returnType: void
    signature: void client_open_streams(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_get_log_str
      Src: /src/dovecot/src/login-common/client-common.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - ATTR_UNUSED
    - message
    argTypes:
    - struct client*
    - enum log_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 205
    functionName: client_log_msg_callback
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - client_get_log_str
    linkageType: ''
    returnType: char
    signature: "char *\nclient_log_msg_callback(struct client *client,\n\t\t\tenum
      log_type log_type ATTR_UNUSED,\n\t\t\tconst char *message)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/login-common/client-common.c:213,1
    - Dst: net_parse_range
      Src: /src/dovecot/src/login-common/client-common.c:215,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common.c:216,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/login-common/client-common.c:221,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 225
    functionName: client_is_trusted
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - e_error
    - settings_boollist_get
    - net_is_in_network
    - net_parse_range
    linkageType: ''
    returnType: bool
    signature: bool client_is_trusted(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/client-common.c:229,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/client-common.c:230,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/client-common.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 232
    functionName: client_settings_free
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - settings_free
    linkageType: ''
    returnType: void
    signature: void client_settings_free(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:236,1
    - Dst: settings_get
      Src: /src/dovecot/src/login-common/client-common.c:238,1
    - Dst: ssl_server_settings_get
      Src: /src/dovecot/src/login-common/client-common.c:240,1
    - Dst: client_settings_free
      Src: /src/dovecot/src/login-common/client-common.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 246
    functionName: client_settings_get
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 2
    functionsReached:
    - settings_get
    - i_assert
    - client_settings_free
    - ssl_server_settings_get
    linkageType: ''
    returnType: int
    signature: int client_settings_get(struct client *client, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_array_find
      Src: /src/dovecot/src/login-common/client-common.c:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - proto
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 255
    functionName: application_protocol_equals
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - str_array_find
    linkageType: ''
    returnType: bool
    signature: bool application_protocol_equals(const char *proto)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:263,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/login-common/client-common.c:265,1
    - Dst: client_vfuncs::alloc
      Src: /src/dovecot/src/login-common/client-common.c:266,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/login-common/client-common.c:277,1
    - Dst: p_array_init
      Src: /src/dovecot/src/login-common/client-common.c:278,1
    - Dst: p_strdup
      Src: /src/dovecot/src/login-common/client-common.c:289,1
    - Dst: event_create
      Src: /src/dovecot/src/login-common/client-common.c:291,1
    - Dst: event_add_category
      Src: /src/dovecot/src/login-common/client-common.c:292,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/login-common/client-common.c:293,1
    - Dst: event_add_int
      Src: /src/dovecot/src/login-common/client-common.c:294,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/login-common/client-common.c:295,1
    - Dst: event_add_int
      Src: /src/dovecot/src/login-common/client-common.c:296,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/client-common.c:297,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/client-common.c:298,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/login-common/client-common.c:298,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/login-common/client-common.c:299,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/login-common/client-common.c:300,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/login-common/client-common.c:303,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/login-common/client-common.c:305,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/client-common.c:309,1
    - Dst: client_settings_get
      Src: /src/dovecot/src/login-common/client-common.c:310,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common.c:311,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common.c:312,1
    - Dst: pool_unref
      Src: /src/dovecot/src/login-common/client-common.c:313,1
    - Dst: event_set_log_message_callback
      Src: /src/dovecot/src/login-common/client-common.c:317,1
    - Dst: client_is_trusted
      Src: /src/dovecot/src/login-common/client-common.c:319,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/login-common/client-common.c:328,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common.c:329,1
    - Dst: p_strdup
      Src: /src/dovecot/src/login-common/client-common.c:341,1
    - Dst: p_strdup
      Src: /src/dovecot/src/login-common/client-common.c:342,1
    - Dst: t_strndup
      Src: /src/dovecot/src/login-common/client-common.c:346,1
    - Dst: application_protocol_equals
      Src: /src/dovecot/src/login-common/client-common.c:347,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common.c:348,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common.c:350,1
    - Dst: pool_unref
      Src: /src/dovecot/src/login-common/client-common.c:351,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/login-common/client-common.c:355,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common.c:359,1
    - Dst: client_open_streams
      Src: /src/dovecot/src/login-common/client-common.c:367,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 70
    argCount: 3
    argNames:
    - fd
    - conn
    - client_r
    argTypes:
    - int
    - struct master_service_connection*
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 370
    functionName: client_alloc
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - event_unref
    - p_array_init
    - client_vfuncs::alloc
    - client_is_trusted
    - event_add_ip
    - pool_unref
    - application_protocol_equals
    - event_add_int
    - master_service_get_name
    - event_set_ptr
    - event_add_str
    - event_create
    - t_strndup
    - e_error
    - client_settings_get
    - i_assert
    - net_ip_compare
    - strcmp
    - pool_alloconly_create
    - event_set_log_message_callback
    - client_open_streams
    - settings_event_add_list_filter_name
    - event_add_category
    linkageType: ''
    returnType: int
    signature: "int client_alloc(int fd, const struct master_service_connection *conn,\n\t\t
      struct client **client_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_read
      Src: /src/dovecot/src/login-common/client-common.c:375,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 377
    functionName: initial_client_read
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - io_remove
    - client_read
    linkageType: ''
    returnType: void
    signature: void initial_client_read(struct client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/login-common/client-common.c:384,1
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/client-common.c:388,1
    - Dst: hook_login_client_allocated
      Src: /src/dovecot/src/login-common/client-common.c:391,1
    - Dst: struct client*::v::create
      Src: /src/dovecot/src/login-common/client-common.c:392,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:397,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/client-common.c:403,1
    - Dst: client_does_custom_io
      Src: /src/dovecot/src/login-common/client-common.c:404,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/client-common.c:405,1
    - Dst: client_notify_auth_ready
      Src: /src/dovecot/src/login-common/client-common.c:407,1
    - Dst: login_refresh_proctitle
      Src: /src/dovecot/src/login-common/client-common.c:409,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 411
    functionName: client_init
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 10
    functionsReached:
    - io_add_istream
    - timeout_add
    - client_does_custom_io
    - login_refresh_proctitle
    - DLLIST_PREPEND
    - hook_login_client_allocated
    - client_notify_auth_ready
    - i_assert
    - struct client*::v::create
    linkageType: ''
    returnType: int
    signature: int client_init(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common.c:417,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/login-common/client-common.c:418,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:422,1
    - Dst: client_get_extra_disconnect_reason
      Src: /src/dovecot/src/login-common/client-common.c:423,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:424,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/login-common/client-common.c:426,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/login-common/client-common.c:427,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/login-common/client-common.c:428,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/login-common/client-common.c:429,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/login-common/client-common.c:429,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/login-common/client-common.c:431,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/login-common/client-common.c:431,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/client-common.c:435,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/login-common/client-common.c:435,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/client-common.c:437,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/login-common/client-common.c:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 440
    functionName: login_aborted_event
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - e_info
    - timeval_diff_usecs
    - client_get_extra_disconnect_reason
    - t_strdup_printf
    - struct event_passthrough*::add_int
    - login_proxy_get_event
    - event_create_passthrough
    - struct event_passthrough*::event
    - i_assert
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: void login_aborted_event(struct client *client, const char *reason)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: login_aborted_event
      Src: /src/dovecot/src/login-common/client-common.c:451,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/client-common.c:453,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common.c:454,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/login-common/client-common.c:459,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common.c:463,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/login-common/client-common.c:464,1
    - Dst: iostream_proxy_unref
      Src: /src/dovecot/src/login-common/client-common.c:466,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/login-common/client-common.c:469,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/login-common/client-common.c:470,1
    - Dst: shutdown
      Src: /src/dovecot/src/login-common/client-common.c:471,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/login-common/client-common.c:473,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:475,1
    - Dst: client_unref
      Src: /src/dovecot/src/login-common/client-common.c:476,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:482,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:484,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/login-common/client-common.c:485,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/login-common/client-common.c:487,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 491
    functionName: client_disconnect
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 21
    functionsReached:
    - shutdown
    - e_info
    - o_stream_close
    - o_stream_uncork
    - io_remove
    - iostream_proxy_unref
    - i_close_fd
    - DLLIST_REMOVE
    - ssl_iostream_destroy
    - login_proxy_get_event
    - DLLIST_PREPEND
    - login_aborted_event
    - client_unref
    - i_assert
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: void client_disconnect(struct client *client, const char *reason)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:495,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:505,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:506,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/login-common/client-common.c:507,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/login-common/client-common.c:509,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/login-common/client-common.c:511,1
    - Dst: pool_unref
      Src: /src/dovecot/src/login-common/client-common.c:513,1
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/client-common.c:514,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:518,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:519,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:520,1
    - Dst: login_client_request_abort
      Src: /src/dovecot/src/login-common/client-common.c:522,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:527,1
    - Dst: sasl_server_auth_abort
      Src: /src/dovecot/src/login-common/client-common.c:528,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:530,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:531,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:532,1
    - Dst: auth_client_request_abort
      Src: /src/dovecot/src/login-common/client-common.c:537,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:539,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/client-common.c:542,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/client-common.c:543,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/client-common.c:544,1
    - Dst: str_free
      Src: /src/dovecot/src/login-common/client-common.c:545,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:546,1
    - Dst: safe_memset
      Src: /src/dovecot/src/login-common/client-common.c:549,1
    - Dst: strlen
      Src: /src/dovecot/src/login-common/client-common.c:550,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/login-common/client-common.c:551,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/login-common/client-common.c:554,1
    - Dst: login_proxy_free
      Src: /src/dovecot/src/login-common/client-common.c:556,1
    - Dst: struct client*::v::destroy
      Src: /src/dovecot/src/login-common/client-common.c:558,1
    - Dst: client_unref
      Src: /src/dovecot/src/login-common/client-common.c:559,1
    - Dst: auth_client_disconnect
      Src: /src/dovecot/src/login-common/client-common.c:565,1
    - Dst: login_client_destroyed
      Src: /src/dovecot/src/login-common/client-common.c:567,1
    - Dst: login_refresh_proctitle
      Src: /src/dovecot/src/login-common/client-common.c:568,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 493
    functionDepth: 5
    functionLinenumber: 493
    functionLinenumberEnd: 569
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 40
    functionsReached:
    - strlen
    - auth_client_request_abort
    - pool_unref
    - login_refresh_proctitle
    - DLLIST_PREPEND
    - DLLIST_REMOVE
    - auth_client_disconnect
    - i_free_and_null
    - login_client_destroyed
    - client_unref
    - str_free
    - safe_memset
    - i_zero
    - login_proxy_free
    - client_disconnect
    - i_assert
    - i_free
    - sasl_server_auth_abort
    - login_client_request_abort
    - dsasl_client_free
    - struct client*::v::destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_destroy(struct client *client, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/login-common/client-common.c:574,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 576
    functionName: client_destroy_iostream_error
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - io_stream_get_disconnect_reason
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void client_destroy_iostream_error(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 582
    functionName: client_destroy_success
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void client_destroy_success(struct client *client, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 587
    functionName: client_ref
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void client_ref(struct client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:595,1
    - Dst: client_settings_free
      Src: /src/dovecot/src/login-common/client-common.c:600,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/client-common.c:601,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/login-common/client-common.c:602,1
    - Dst: pool_unref
      Src: /src/dovecot/src/login-common/client-common.c:603,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common.c:604,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common.c:605,1
    - Dst: pool_unref
      Src: /src/dovecot/src/login-common/client-common.c:606,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:610,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:611,1
    - Dst: struct client*::v::free
      Src: /src/dovecot/src/login-common/client-common.c:614,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/login-common/client-common.c:616,1
    - Dst: iostream_proxy_unref
      Src: /src/dovecot/src/login-common/client-common.c:617,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:619,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/login-common/client-common.c:620,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:621,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:624,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/login-common/client-common.c:625,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/client-common.c:628,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/login-common/client-common.c:629,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/login-common/client-common.c:630,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/login-common/client-common.c:631,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common.c:632,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common.c:633,1
    - Dst: client_settings_free
      Src: /src/dovecot/src/login-common/client-common.c:634,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:636,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:637,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:638,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:639,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:640,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:641,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:642,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/client-common.c:643,1
    - Dst: pool_unref
      Src: /src/dovecot/src/login-common/client-common.c:644,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:646,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/login-common/client-common.c:649,1
    - Dst: login_refresh_proctitle
      Src: /src/dovecot/src/login-common/client-common.c:650,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 52
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 589
    functionDepth: 3
    functionLinenumber: 589
    functionLinenumberEnd: 652
    functionName: client_unref
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 19
    functionsReached:
    - event_unref
    - i_free
    - struct client*::v::free
    - o_stream_unref
    - iostream_proxy_unref
    - i_close_fd
    - pool_unref
    - ssl_iostream_destroy
    - login_refresh_proctitle
    - client_settings_free
    - i_stream_unref
    - i_assert
    - DLLIST_REMOVE
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: bool
    signature: bool client_unref(struct client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 654
    functionDepth: 0
    functionLinenumber: 654
    functionLinenumberEnd: 656
    functionName: client_common_default_free
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void client_common_default_free(struct client *client ATTR_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_notify_disconnect
      Src: /src/dovecot/src/login-common/client-common.c:682,1
    - Dst: client_ref
      Src: /src/dovecot/src/login-common/client-common.c:684,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common.c:685,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:687,1
    - Dst: client_unref
      Src: /src/dovecot/src/login-common/client-common.c:688,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - kill
    - created_r
    argTypes:
    - bool
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 689
    functionName: client_destroy_oldest
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_ref
    - client_unref
    - i_assert
    - client_notify_disconnect
    linkageType: ''
    returnType: bool
    signature: bool client_destroy_oldest(bool kill, struct timeval *created_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_notify_disconnect
      Src: /src/dovecot/src/login-common/client-common.c:697,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common.c:699,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - reason
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 700
    functionName: clients_destroy_all_reason
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - client_destroy
    - client_notify_disconnect
    linkageType: ''
    returnType: void
    signature: void clients_destroy_all_reason(const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clients_destroy_all_reason
      Src: /src/dovecot/src/login-common/client-common.c:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 703
    functionDepth: 2
    functionLinenumber: 703
    functionLinenumberEnd: 706
    functionName: clients_destroy_all
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 4
    functionsReached:
    - clients_destroy_all_reason
    linkageType: ''
    returnType: void
    signature: void clients_destroy_all(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_ip
      Src: /src/dovecot/src/login-common/client-common.c:712,1
    - Dst: event_add_int
      Src: /src/dovecot/src/login-common/client-common.c:713,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/login-common/client-common.c:714,1
    - Dst: event_add_int
      Src: /src/dovecot/src/login-common/client-common.c:715,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/client-common.c:716,1
    - Dst: client_settings_reload
      Src: /src/dovecot/src/login-common/client-common.c:718,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common.c:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 724
    functionName: client_addresses_changed
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - event_add_ip
    - e_error
    - event_add_int
    - event_add_str
    - client_settings_reload
    linkageType: ''
    returnType: int
    signature: int client_addresses_changed(struct client *client, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_settings_get
      Src: /src/dovecot/src/login-common/client-common.c:736,1
    - Dst: struct client*::v::reload_config
      Src: /src/dovecot/src/login-common/client-common.c:738,1
    - Dst: client_settings_free
      Src: /src/dovecot/src/login-common/client-common.c:741,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/client-common.c:747,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/client-common.c:748,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/client-common.c:749,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 726
    functionDepth: 3
    functionLinenumber: 726
    functionLinenumberEnd: 751
    functionName: client_settings_reload
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - settings_free
    - client_settings_get
    - client_settings_free
    - struct client*::v::reload_config
    linkageType: ''
    returnType: int
    signature: int client_settings_reload(struct client *client, const char **error_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/client-common.c:768,1
    - Dst: p_strdup
      Src: /src/dovecot/src/login-common/client-common.c:769,1
    - Dst: client_settings_reload
      Src: /src/dovecot/src/login-common/client-common.c:770,1
    - Dst: ssl_server_settings_to_iostream_set
      Src: /src/dovecot/src/login-common/client-common.c:773,1
    - Dst: ssl_iostream_server_context_cache_get
      Src: /src/dovecot/src/login-common/client-common.c:775,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/client-common.c:776,1
    - Dst: settings_free
      Src: /src/dovecot/src/login-common/client-common.c:779,1
    - Dst: ssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/login-common/client-common.c:781,1
    - Dst: ssl_iostream_change_context
      Src: /src/dovecot/src/login-common/client-common.c:784,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/login-common/client-common.c:785,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/login-common/client-common.c:789,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - name
    - error_r
    - context
    argTypes:
    - char*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 753
    functionDepth: 4
    functionLinenumber: 753
    functionLinenumberEnd: 792
    functionName: client_sni_callback
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - ssl_server_settings_to_iostream_set
    - ssl_iostream_context_unref
    - timeout_add_short
    - ssl_iostream_server_context_cache_get
    - settings_free
    - ssl_iostream_change_context
    - event_add_str
    - client_settings_reload
    - ssl_iostream_context_set_application_protocols
    linkageType: ''
    returnType: int
    signature: "int client_sni_callback(const char *name, const char **error_r,\n\t\t\tvoid
      *context)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:798,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common.c:802,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/client-common.c:803,1
    - Dst: struct client*::v::iostream_change_pre
      Src: /src/dovecot/src/login-common/client-common.c:808,1
    - Dst: client_rawlog_deinit
      Src: /src/dovecot/src/login-common/client-common.c:809,1
    - Dst: io_stream_autocreate_ssl_server
      Src: /src/dovecot/src/login-common/client-common.c:814,1
    - Dst: struct client*::v::iostream_change_post
      Src: /src/dovecot/src/login-common/client-common.c:818,1
    - Dst: client_rawlog_init
      Src: /src/dovecot/src/login-common/client-common.c:819,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common.c:821,1
    - Dst: ssl_iostream_set_sni_callback
      Src: /src/dovecot/src/login-common/client-common.c:825,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common.c:834,1
    - Dst: client_does_custom_io
      Src: /src/dovecot/src/login-common/client-common.c:835,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/client-common.c:836,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 794
    functionDepth: 2
    functionLinenumber: 794
    functionLinenumberEnd: 841
    functionName: client_init_ssl
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - strcmp
    - e_info
    - io_stream_autocreate_ssl_server
    - client_rawlog_init
    - io_add_istream
    - struct client*::v::iostream_change_post
    - io_remove
    - struct client*::v::iostream_change_pre
    - client_does_custom_io
    - e_error
    - ssl_iostream_set_sni_callback
    - i_assert
    - client_rawlog_deinit
    linkageType: ''
    returnType: int
    signature: int client_init_ssl(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: client_multiplex_output_stop
      Src: /src/dovecot/src/login-common/client-common.c:849,1
    - Dst: client_init_ssl
      Src: /src/dovecot/src/login-common/client-common.c:853,1
    - Dst: client_notify_disconnect
      Src: /src/dovecot/src/login-common/client-common.c:854,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common.c:857,1
    - Dst: login_refresh_proctitle
      Src: /src/dovecot/src/login-common/client-common.c:860,1
    - Dst: client_multiplex_output_start
      Src: /src/dovecot/src/login-common/client-common.c:863,1
    - Dst: struct client*::v::starttls
      Src: /src/dovecot/src/login-common/client-common.c:864,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 843
    functionDepth: 3
    functionLinenumber: 843
    functionLinenumberEnd: 865
    functionName: client_start_tls
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - client_multiplex_output_stop
    - client_destroy
    - struct client*::v::starttls
    - login_refresh_proctitle
    - client_multiplex_output_start
    - client_notify_disconnect
    - client_init_ssl
    linkageType: ''
    returnType: void
    signature: void client_start_tls(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/login-common/client-common.c:871,1
    - Dst: client_destroy_iostream_error
      Src: /src/dovecot/src/login-common/client-common.c:872,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/login-common/client-common.c:877,1
    - Dst: client_start_tls
      Src: /src/dovecot/src/login-common/client-common.c:878,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 867
    functionDepth: 4
    functionLinenumber: 867
    functionLinenumberEnd: 881
    functionName: client_output_starttls
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - client_start_tls
    - client_destroy_iostream_error
    - o_stream_unset_flush_callback
    linkageType: ''
    returnType: int
    signature: int client_output_starttls(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::notify_starttls
      Src: /src/dovecot/src/login-common/client-common.c:886,1
    - Dst: client_is_tls_enabled
      Src: /src/dovecot/src/login-common/client-common.c:890,1
    - Dst: struct client*::v::notify_starttls
      Src: /src/dovecot/src/login-common/client-common.c:891,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common.c:897,1
    - Dst: struct client*::v::notify_starttls
      Src: /src/dovecot/src/login-common/client-common.c:899,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/login-common/client-common.c:902,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/login-common/client-common.c:904,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/login-common/client-common.c:906,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/login-common/client-common.c:907,1
    - Dst: client_start_tls
      Src: /src/dovecot/src/login-common/client-common.c:910,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 883
    functionDepth: 4
    functionLinenumber: 883
    functionLinenumberEnd: 912
    functionName: client_cmd_starttls
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - o_stream_uncork
    - io_remove
    - o_stream_set_flush_pending
    - client_is_tls_enabled
    - struct client*::v::notify_starttls
    - o_stream_flush
    - o_stream_set_flush_callback
    - client_start_tls
    linkageType: ''
    returnType: void
    signature: void client_cmd_starttls(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::iostream_change_pre
      Src: /src/dovecot/src/login-common/client-common.c:917,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/login-common/client-common.c:920,1
    - Dst: struct client*::v::iostream_change_post
      Src: /src/dovecot/src/login-common/client-common.c:926,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 927
    functionName: client_multiplex_output_start
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 2
    functionsReached:
    - struct client*::v::iostream_change_post
    - o_stream_create_multiplex
    - struct client*::v::iostream_change_pre
    linkageType: ''
    returnType: void
    signature: void client_multiplex_output_start(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:931,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:932,1
    - Dst: struct client*::v::iostream_change_pre
      Src: /src/dovecot/src/login-common/client-common.c:935,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:937,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/login-common/client-common.c:938,1
    - Dst: struct client*::v::iostream_change_post
      Src: /src/dovecot/src/login-common/client-common.c:944,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 945
    functionName: client_multiplex_output_stop
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - struct client*::v::iostream_change_post
    - struct client*::v::iostream_change_pre
    - i_assert
    - o_stream_unref
    linkageType: ''
    returnType: void
    signature: void client_multiplex_output_stop(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_proxy_unref
      Src: /src/dovecot/src/login-common/client-common.c:955,1
    - Dst: client_unref
      Src: /src/dovecot/src/login-common/client-common.c:956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - client
    argTypes:
    - enum iostream_proxy_side
    - enum iostream_proxy_status
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 957
    functionName: iostream_fd_proxy_finished
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - iostream_proxy_unref
    - client_unref
    linkageType: ''
    returnType: void
    signature: "void iostream_fd_proxy_finished(enum iostream_proxy_side side ATTR_UNUSED,\n\t\t\t
      \  enum iostream_proxy_status status ATTR_UNUSED,\n\t\t\t   struct client *client)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socketpair
      Src: /src/dovecot/src/login-common/client-common.c:974,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common.c:975,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/login-common/client-common.c:978,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/login-common/client-common.c:979,1
    - Dst: io_stream_create_fd_autoclose
      Src: /src/dovecot/src/login-common/client-common.c:983,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/login-common/client-common.c:985,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:987,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:992,1
    - Dst: client_ref
      Src: /src/dovecot/src/login-common/client-common.c:996,1
    - Dst: iostream_proxy_create
      Src: /src/dovecot/src/login-common/client-common.c:998,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/client-common.c:1000,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/login-common/client-common.c:1001,1
    - Dst: iostream_proxy_set_completion_callback
      Src: /src/dovecot/src/login-common/client-common.c:1003,1
    - Dst: iostream_proxy_start
      Src: /src/dovecot/src/login-common/client-common.c:1006,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - client
    - fd_r
    - close_fd_r
    argTypes:
    - struct client*
    - int*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 959
    functionDepth: 1
    functionLinenumber: 959
    functionLinenumberEnd: 1011
    functionName: client_get_plaintext_fd
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - iostream_proxy_create
    - iostream_proxy_start
    - fd_set_nonblock
    - io_stream_create_fd_autoclose
    - o_stream_unref
    - iostream_proxy_set_completion_callback
    - e_error
    - o_stream_set_no_error_handling
    - client_ref
    - i_stream_unref
    - socketpair
    - i_assert
    linkageType: ''
    returnType: int
    signature: int client_get_plaintext_fd(struct client *client, int *fd_r, bool
      *close_fd_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 1013
    functionDepth: 0
    functionLinenumber: 1013
    functionLinenumberEnd: 1016
    functionName: clients_get_count
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int clients_get_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1018
    functionDepth: 0
    functionLinenumber: 1018
    functionLinenumberEnd: 1021
    functionName: clients_get_fd_proxies_count
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int clients_get_fd_proxies_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1023
    functionDepth: 0
    functionLinenumber: 1023
    functionLinenumberEnd: 1026
    functionName: clients_get_first_fd_proxy
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct client
    signature: struct client *clients_get_first_fd_proxy(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/login-common/client-common.c:1031,1
    - Dst: p_array_init
      Src: /src/dovecot/src/login-common/client-common.c:1032,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:1035,1
    - Dst: array_push_back
      Src: /src/dovecot/src/login-common/client-common.c:1036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - client
    - key
    - value
    argTypes:
    - struct client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1028
    functionDepth: 1
    functionLinenumber: 1028
    functionLinenumberEnd: 1037
    functionName: client_add_forward_field
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - p_array_init
    - p_strdup_printf
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void client_add_forward_field(struct client *client, const char *key,\n\t\t\t
      \     const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/login-common/client-common.c:1041,1
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/client-common.c:1042,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/login-common/client-common.c:1042,1
    - Dst: base64_decode
      Src: /src/dovecot/src/login-common/client-common.c:1043,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/login-common/client-common.c:1046,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common.c:1047,1
    - Dst: str_array_length
      Src: /src/dovecot/src/login-common/client-common.c:1049,1
    - Dst: p_array_init
      Src: /src/dovecot/src/login-common/client-common.c:1050,1
    - Dst: array_append
      Src: /src/dovecot/src/login-common/client-common.c:1052,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - value
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1039
    functionDepth: 1
    functionLinenumber: 1039
    functionLinenumberEnd: 1054
    functionName: client_forward_decode_base64
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - MAX_BASE64_DECODED_SIZE
    - base64_decode
    - p_array_init
    - strlen
    - p_strsplit_tabescaped
    - str_array_length
    - array_append
    linkageType: ''
    returnType: bool
    signature: bool client_forward_decode_base64(struct client *client, const char
      *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/login-common/client-common.c:1066,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/login-common/client-common.c:1067,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/login-common/client-common.c:1069,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/login-common/client-common.c:1075,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/login-common/client-common.c:1077,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/login-common/client-common.c:1078,1
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/login-common/client-common.c:1079,1
    - Dst: buffer_append
      Src: /src/dovecot/src/login-common/client-common.c:1080,1
    - Dst: buffer_append
      Src: /src/dovecot/src/login-common/client-common.c:1082,1
    - Dst: base64_encode
      Src: /src/dovecot/src/login-common/client-common.c:1083,1
    - Dst: p_strdup
      Src: /src/dovecot/src/login-common/client-common.c:1084,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common.c:1084,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1056
    functionDepth: 1
    functionLinenumber: 1056
    functionLinenumberEnd: 1086
    functionName: client_get_session_id
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 3
    functionsReached:
    - i_gettimeofday
    - buffer_append
    - p_strdup
    - str_c
    - t_buffer_create
    - base64_encode
    - IPADDR_IS_V6
    - buffer_append_c
    linkageType: ''
    returnType: char
    signature: char *client_get_session_id(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_peer_cert_fingerprint
      Src: /src/dovecot/src/login-common/client-common.c:1099,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common.c:1109,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common.c:1111,1
    - Dst: i_unreached
      Src: /src/dovecot/src/login-common/client-common.c:1114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - key
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1116
    functionName: client_get_ssl_client_cert_fp
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_get_peer_cert_fingerprint
    - strcmp
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int client_get_ssl_client_cert_fp(const char *key, const char **value_r,\n\t\t\t\t\t
      void *context, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_ja3
      Src: /src/dovecot/src/login-common/client-common.c:1155,1
    - Dst: md5_get_digest
      Src: /src/dovecot/src/login-common/client-common.c:1158,1
    - Dst: strlen
      Src: /src/dovecot/src/login-common/client-common.c:1158,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/login-common/client-common.c:1159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1148
    functionDepth: 1
    functionLinenumber: 1148
    functionLinenumberEnd: 1160
    functionName: client_ssl_ja3_hash
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - binary_to_hex
    - strlen
    - ssl_iostream_get_ja3
    - md5_get_digest
    linkageType: ''
    returnType: char
    signature: 'char *

      client_ssl_ja3_hash(struct client *client)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/login-common/client-common.c:1176,1
    - Dst: strncmp
      Src: /src/dovecot/src/login-common/client-common.c:1178,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - field_name
    - value_r
    - context
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1162
    functionDepth: 0
    functionLinenumber: 1162
    functionLinenumberEnd: 1186
    functionName: client_var_expand_func_passdb
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    linkageType: ''
    returnType: int
    signature: "int client_var_expand_func_passdb(const char *field_name, const char
      **value_r,\n\t\t\t      void *context,\n\t\t\t      const char **error_r ATTR_UNUSED)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/login-common/client-common.c:1198,1
    - Dst: memcpy
      Src: /src/dovecot/src/login-common/client-common.c:1199,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1203,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/login-common/client-common.c:1204,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1206,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1207,1
    - Dst: getenv
      Src: /src/dovecot/src/login-common/client-common.c:1207,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1208,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/client-common.c:1208,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1209,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/client-common.c:1209,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1211,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/login-common/client-common.c:1212,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1213,1
    - Dst: dec2str
      Src: /src/dovecot/src/login-common/client-common.c:1213,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1214,1
    - Dst: dec2str
      Src: /src/dovecot/src/login-common/client-common.c:1214,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1216,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1217,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1220,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/login-common/client-common.c:1223,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/login-common/client-common.c:1226,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:1228,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1229,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1230,1
    - Dst: ssl_iostream_get_security_string
      Src: /src/dovecot/src/login-common/client-common.c:1231,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1232,1
    - Dst: ssl_iostream_get_ja3
      Src: /src/dovecot/src/login-common/client-common.c:1233,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1234,1
    - Dst: client_ssl_ja3_hash
      Src: /src/dovecot/src/login-common/client-common.c:1235,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1237,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1238,1
    - Dst: dec2str
      Src: /src/dovecot/src/login-common/client-common.c:1242,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1243,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1244,1
    - Dst: client_get_session_id
      Src: /src/dovecot/src/login-common/client-common.c:1244,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1245,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/client-common.c:1246,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1247,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/client-common.c:1248,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1249,1
    - Dst: dec2str
      Src: /src/dovecot/src/login-common/client-common.c:1250,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1251,1
    - Dst: dec2str
      Src: /src/dovecot/src/login-common/client-common.c:1252,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1254,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/login-common/client-common.c:1255,1
    - Dst: var_expand_table_copy
      Src: /src/dovecot/src/login-common/client-common.c:1257,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1260,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/login-common/client-common.c:1261,1
    - Dst: var_expand_table_copy
      Src: /src/dovecot/src/login-common/client-common.c:1263,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1265,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/login-common/client-common.c:1266,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/login-common/client-common.c:1267,1
    - Dst: t_new
      Src: /src/dovecot/src/login-common/client-common.c:1269,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 53
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1193
    functionDepth: 2
    functionLinenumber: 1193
    functionLinenumberEnd: 1275
    functionName: get_var_expand_params
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - memcpy
    - dec2str
    - t_new
    - ssl_iostream_get_security_string
    - var_expand_table_copy
    - t_strdup_printf
    - getenv
    - ssl_iostream_get_ja3
    - client_get_session_id
    - str_sanitize
    - ssl_iostream_is_handshaked
    - ssl_iostream_get_last_error
    - net_ip2addr
    - t_malloc_no0
    - var_expand_table_set_value
    - client_ssl_ja3_hash
    linkageType: ''
    returnType: struct var_expand_params
    signature: 'struct var_expand_params *

      get_var_expand_params(struct client *client)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_var_expand_params
      Src: /src/dovecot/src/login-common/client-common.c:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - params_r
    argTypes:
    - void*
    - struct var_expand_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1277
    functionDepth: 3
    functionLinenumber: 1277
    functionLinenumberEnd: 1283
    functionName: client_var_expand_callback
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - get_var_expand_params
    linkageType: ''
    returnType: void
    signature: void client_var_expand_callback(void *context, struct var_expand_params
      *params_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/client-common.c:1289,1
    - Dst: get_var_expand_params
      Src: /src/dovecot/src/login-common/client-common.c:1290,1
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/client-common.c:1302,1
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/client-common.c:1303,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/login-common/client-common.c:1308,1
    - Dst: var_expand_program_execute
      Src: /src/dovecot/src/login-common/client-common.c:1309,1
    - Dst: i_error
      Src: /src/dovecot/src/login-common/client-common.c:1313,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/login-common/client-common.c:1318,1
    - Dst: str_array_find
      Src: /src/dovecot/src/login-common/client-common.c:1319,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/login-common/client-common.c:1321,1
    - Dst: str_truncate
      Src: /src/dovecot/src/login-common/client-common.c:1323,1
    - Dst: var_expand_program_execute
      Src: /src/dovecot/src/login-common/client-common.c:1324,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/login-common/client-common.c:1326,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common.c:1327,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common.c:1327,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common.c:1327,1
    - Dst: str_truncate
      Src: /src/dovecot/src/login-common/client-common.c:1330,1
    - Dst: str_len
      Src: /src/dovecot/src/login-common/client-common.c:1335,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/client-common.c:1336,1
    - Dst: str_truncate
      Src: /src/dovecot/src/login-common/client-common.c:1339,1
    - Dst: t_strdup
      Src: /src/dovecot/src/login-common/client-common.c:1343,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common.c:1343,1
    - Dst: str_truncate
      Src: /src/dovecot/src/login-common/client-common.c:1350,1
    - Dst: var_expand
      Src: /src/dovecot/src/login-common/client-common.c:1351,1
    - Dst: i_error
      Src: /src/dovecot/src/login-common/client-common.c:1355,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common.c:1359,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - client
    - msg
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1285
    functionDepth: 3
    functionLinenumber: 1285
    functionLinenumberEnd: 1360
    functionName: client_get_log_str
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - i_zero
    - str_array_find
    - t_str_new
    - strcmp
    - str_c
    - i_error
    - var_expand_program_create
    - str_len
    - var_expand_program_execute
    - var_expand_program_free
    - get_var_expand_params
    - str_truncate
    - str_append
    - t_strdup
    - var_expand_program_variables
    - var_expand
    linkageType: ''
    returnType: char
    signature: 'char *

      client_get_log_str(struct client *client, const char *msg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common.c:1365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1362
    functionDepth: 0
    functionLinenumber: 1362
    functionLinenumberEnd: 1366
    functionName: client_is_tls_enabled
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool client_is_tls_enabled(struct client *client)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/login-common/client-common.c:1378,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:1386,1
    - Dst: ssl_iostream_has_cert
      Src: /src/dovecot/src/login-common/client-common.c:1414,1
    - Dst: ssl_iostream_has_valid_cert
      Src: /src/dovecot/src/login-common/client-common.c:1420,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:1433,1
    - Dst: i_unreached
      Src: /src/dovecot/src/login-common/client-common.c:1493,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:1496,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common.c:1497,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:1507,1
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/client-common.c:1517,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/client-common.c:1518,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common.c:1520,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common.c:1523,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common.c:1526,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common.c:1528,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/login-common/client-common.c:1529,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common.c:1531,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:1532,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 135
    argCount: 3
    argNames:
    - client
    - human_reason_r
    - event_reason_r
    argTypes:
    - struct client*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1368
    functionDepth: 1
    functionLinenumber: 1368
    functionLinenumberEnd: 1534
    functionName: client_get_extra_disconnect_reason
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - i_unreached
    - str_append
    - t_strdup_printf
    - str_sanitize
    - ssl_iostream_is_handshaked
    - ssl_iostream_has_cert
    - ssl_iostream_has_valid_cert
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool client_get_extra_disconnect_reason(struct client *client,\n\t\t\t\t\tconst
      char **human_reason_r,\n\t\t\t\t\tconst char **event_reason_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::notify_disconnect
      Src: /src/dovecot/src/login-common/client-common.c:1542,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - client
    - reason
    - text
    argTypes:
    - struct client*
    - enum client_disconnect_reason
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1536
    functionDepth: 0
    functionLinenumber: 1536
    functionLinenumberEnd: 1556
    functionName: client_notify_disconnect
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 4
    functionsReached:
    - struct client*::v::notify_disconnect
    linkageType: ''
    returnType: void
    signature: "void client_notify_disconnect(struct client *client,\n\t\t\t      enum
      client_disconnect_reason reason,\n\t\t\t      const char *text)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/client-common.c:1560,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/login-common/client-common.c:1566,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common.c:1569,1
    - Dst: struct client*::v::notify_auth_ready
      Src: /src/dovecot/src/login-common/client-common.c:1571,1
    - Dst: client_set_auth_waiting
      Src: /src/dovecot/src/login-common/client-common.c:1574,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1558
    functionDepth: 1
    functionLinenumber: 1558
    functionLinenumberEnd: 1576
    functionName: client_notify_auth_ready
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - io_remove
    - client_set_auth_waiting
    - auth_client_is_connected
    - struct client*::v::notify_auth_ready
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_notify_auth_ready(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::notify_auth_connected
      Src: /src/dovecot/src/login-common/client-common.c:1581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1578
    functionDepth: 0
    functionLinenumber: 1578
    functionLinenumberEnd: 1582
    functionName: client_notify_auth_connected
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - struct client*::v::notify_auth_connected
    linkageType: ''
    returnType: void
    signature: void client_notify_auth_connected(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::notify_status
      Src: /src/dovecot/src/login-common/client-common.c:1587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - client
    - bad
    - text
    argTypes:
    - struct client*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1584
    functionDepth: 2
    functionLinenumber: 1584
    functionLinenumberEnd: 1588
    functionName: client_notify_status
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 2
    functionsReached:
    - struct client*::v::notify_status
    linkageType: ''
    returnType: void
    signature: void client_notify_status(struct client *client, bool bad, const char
      *text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/login-common/client-common.c:1595,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/login-common/client-common.c:1601,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - client
    - data
    - size
    argTypes:
    - struct client*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1590
    functionDepth: 1
    functionLinenumber: 1590
    functionLinenumberEnd: 1603
    functionName: client_common_send_raw_data
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 0
    functionsReached:
    - o_stream_send
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void client_common_send_raw_data(struct client *client,\n\t\t\t\t
      const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::send_raw_data
      Src: /src/dovecot/src/login-common/client-common.c:1607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - data
    - size
    argTypes:
    - struct client*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1605
    functionDepth: 0
    functionLinenumber: 1605
    functionLinenumberEnd: 1608
    functionName: client_send_raw_data
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - struct client*::v::send_raw_data
    linkageType: ''
    returnType: void
    signature: void client_send_raw_data(struct client *client, const void *data,
      size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_raw_data
      Src: /src/dovecot/src/login-common/client-common.c:1612,1
    - Dst: strlen
      Src: /src/dovecot/src/login-common/client-common.c:1612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - data
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1610
    functionDepth: 1
    functionLinenumber: 1610
    functionLinenumberEnd: 1613
    functionName: client_send_raw
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 6
    functionsReached:
    - client_send_raw_data
    - strlen
    linkageType: ''
    returnType: void
    signature: void client_send_raw(struct client *client, const char *data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/login-common/client-common.c:1617,1
    - Dst: client_notify_disconnect
      Src: /src/dovecot/src/login-common/client-common.c:1620,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common.c:1623,1
    - Dst: client_destroy_iostream_error
      Src: /src/dovecot/src/login-common/client-common.c:1627,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/login-common/client-common.c:1631,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1615
    functionDepth: 2
    functionLinenumber: 1615
    functionLinenumberEnd: 1636
    functionName: client_read
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 2
    functionsReached:
    - i_stream_get_data_size
    - client_destroy
    - client_destroy_iostream_error
    - i_stream_read
    - client_notify_disconnect
    linkageType: ''
    returnType: bool
    signature: bool client_read(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:1640,1
    - Dst: struct client*::v::input
      Src: /src/dovecot/src/login-common/client-common.c:1641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1642
      start: 1638
    functionDepth: 1
    functionLinenumber: 1638
    functionLinenumberEnd: 1642
    functionName: client_input
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 2
    functionsReached:
    - i_assert
    - struct client*::v::input
    linkageType: ''
    returnType: void
    signature: void client_input(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/login-common/client-common.c:1646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1644
    functionDepth: 1
    functionLinenumber: 1644
    functionLinenumberEnd: 1647
    functionName: client_common_init
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - i_array_init
    linkageType: ''
    returnType: void
    signature: void client_common_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_unref
      Src: /src/dovecot/src/login-common/client-common.c:1653,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:1655,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1649
    functionDepth: 1
    functionLinenumber: 1649
    functionLinenumberEnd: 1656
    functionName: client_destroy_fd_proxies
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - client_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: void client_destroy_fd_proxies(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common.c:1660,1
    - Dst: array_free
      Src: /src/dovecot/src/login-common/client-common.c:1661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1662
    functionName: client_common_deinit
    functionSourceFile: /src/dovecot/src/login-common/client-common.c
    functionUses: 1
    functionsReached:
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void client_common_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_ip_hash
      Src: /src/dovecot/src/login-common/login-proxy-state.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rec
    argTypes:
    - struct login_proxy_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: login_proxy_record_hash
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 0
    functionsReached:
    - net_ip_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int login_proxy_record_hash(const struct login_proxy_record
      *rec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_ip_compare
      Src: /src/dovecot/src/login-common/login-proxy-state.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rec1
    - rec2
    argTypes:
    - struct login_proxy_record*
    - struct login_proxy_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 42
    functionName: login_proxy_record_cmp
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 0
    functionsReached:
    - net_ip_compare
    linkageType: ''
    returnType: int
    signature: "int login_proxy_record_cmp(struct login_proxy_record *rec1,\n\t\t\t\t
      \ struct login_proxy_record *rec2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/login-common/login-proxy-state.c:48,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/login-common/login-proxy-state.c:49,1
    - Dst: event_create
      Src: /src/dovecot/src/login-common/login-proxy-state.c:50,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/login-common/login-proxy-state.c:51,1
    - Dst: p_strdup
      Src: /src/dovecot/src/login-common/login-proxy-state.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - notify_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 56
    functionName: login_proxy_state_init
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_strdup
    - hash_table_create
    - i_new
    linkageType: ''
    returnType: struct login_proxy_state
    signature: struct login_proxy_state *login_proxy_state_init(const char *notify_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/login-common/login-proxy-state.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct login_proxy_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: login_proxy_state_close
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 0
    functionsReached:
    - i_close_fd_path
    linkageType: ''
    returnType: void
    signature: void login_proxy_state_close(struct login_proxy_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/login-common/login-proxy-state.c:72,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/login-common/login-proxy-state.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy-state.c:74,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/login-common/login-proxy-state.c:75,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/login-proxy-state.c:77,1
    - Dst: login_proxy_state_close
      Src: /src/dovecot/src/login-common/login-proxy-state.c:78,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/login-common/login-proxy-state.c:79,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/login-proxy-state.c:80,1
    - Dst: pool_unref
      Src: /src/dovecot/src/login-common/login-proxy-state.c:81,1
    - Dst: i_free
      Src: /src/dovecot/src/login-common/login-proxy-state.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - _state
    argTypes:
    - struct login_proxy_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 83
    functionName: login_proxy_state_deinit
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - event_unref
    - hash_table_iterate_init
    - pool_unref
    - login_proxy_state_close
    - i_assert
    - i_free
    - hash_table_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void login_proxy_state_deinit(struct login_proxy_state **_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/login-proxy-state.c:91,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/login-common/login-proxy-state.c:95,1
    - Dst: p_new
      Src: /src/dovecot/src/login-common/login-proxy-state.c:97,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/login-common/login-proxy-state.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - state
    - ip
    - port
    argTypes:
    - struct login_proxy_state*
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 103
    functionName: login_proxy_state_get
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 1
    functionsReached:
    - i_zero
    - hash_table_insert
    - hash_table_lookup
    - p_new
    linkageType: ''
    returnType: struct login_proxy_record
    signature: "struct login_proxy_record *\nlogin_proxy_state_get(struct login_proxy_state
      *state,\n\t\t      const struct ip_addr *ip, in_port_t port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/login-proxy-state.c:107,1
    - Dst: login_proxy_state_notify_open
      Src: /src/dovecot/src/login-common/login-proxy-state.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct login_proxy_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: login_proxy_state_reopen
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 0
    functionsReached:
    - login_proxy_state_notify_open
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void login_proxy_state_reopen(struct login_proxy_state *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/login-common/login-proxy-state.c:118,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/login-proxy-state.c:120,1
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/login-proxy-state.c:121,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/login-common/login-proxy-state.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct login_proxy_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 127
    functionName: login_proxy_state_notify_open
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 1
    functionsReached:
    - e_error
    - timeout_add
    - open
    - fd_set_nonblock
    linkageType: ''
    returnType: int
    signature: int login_proxy_state_notify_open(struct login_proxy_state *state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_state_notify_open
      Src: /src/dovecot/src/login-common/login-proxy-state.c:136,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/login-proxy-state.c:138,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/login-common/login-proxy-state.c:144,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/login-common/login-proxy-state.c:144,1
    - Dst: strlen
      Src: /src/dovecot/src/login-common/login-proxy-state.c:145,1
    - Dst: write
      Src: /src/dovecot/src/login-common/login-proxy-state.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - state
    - user
    argTypes:
    - struct login_proxy_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 147
    functionName: login_proxy_state_try_notify
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 0
    functionsReached:
    - strlen
    - str_tabescape
    - write
    - login_proxy_state_notify_open
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool login_proxy_state_try_notify(struct login_proxy_state *state,\n\t\t\t\t\t
      const char *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_state_try_notify
      Src: /src/dovecot/src/login-common/login-proxy-state.c:167,1
    - Dst: login_proxy_state_try_notify
      Src: /src/dovecot/src/login-common/login-proxy-state.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - state
    - user
    argTypes:
    - struct login_proxy_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: login_proxy_state_notify
    functionSourceFile: /src/dovecot/src/login-common/login-proxy-state.c
    functionUses: 1
    functionsReached:
    - login_proxy_state_try_notify
    linkageType: ''
    returnType: void
    signature: "void login_proxy_state_notify(struct login_proxy_state *state,\n\t\t\t
      \     const char *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fail_code
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 64
    functionName: client_auth_fail_code_lookup
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum client_auth_fail_code
    signature: enum client_auth_fail_code client_auth_fail_code_lookup(const char
      *fail_code)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/login-common/client-common-auth.c:68,1
    - Dst: str_truncate
      Src: /src/dovecot/src/login-common/client-common-auth.c:70,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common-auth.c:75,1
    - Dst: client_does_custom_io
      Src: /src/dovecot/src/login-common/client-common-auth.c:77,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/client-common-auth.c:78,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/login-common/client-common-auth.c:79,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 81
    functionName: client_auth_failed
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - io_remove
    - client_does_custom_io
    - i_free_and_null
    - io_set_pending
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void client_auth_failed(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_warning
      Src: /src/dovecot/src/login-common/client-common-auth.c:86,1
    - Dst: client_notify_status
      Src: /src/dovecot/src/login-common/client-common-auth.c:89,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/client-common-auth.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: client_auth_waiting_timeout
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - e_warning
    - client_notify_status
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_auth_waiting_timeout(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:96,1
    - Dst: timeout_add
      Src: /src/dovecot/src/login-common/client-common-auth.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: client_set_auth_waiting
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: void
    signature: void client_set_auth_waiting(struct client *client)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/client-common-auth.c:143,1
    - Dst: t_array_init
      Src: /src/dovecot/src/login-common/client-common-auth.c:145,1
    - Dst: strchr
      Src: /src/dovecot/src/login-common/client-common-auth.c:150,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/login-common/client-common-auth.c:155,1
    - Dst: auth_proxy_settings_parse
      Src: /src/dovecot/src/login-common/client-common-auth.c:158,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:161,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:168,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:171,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:173,1
    - Dst: str_parse_get_interval
      Src: /src/dovecot/src/login-common/client-common-auth.c:174,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:177,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:185,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/login-common/client-common-auth.c:186,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:187,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:192,1
    - Dst: client_auth_fail_code_lookup
      Src: /src/dovecot/src/login-common/client-common-auth.c:196,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:198,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:202,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/login-common/client-common-auth.c:204,1
    - Dst: alt_username_set
      Src: /src/dovecot/src/login-common/client-common-auth.c:206,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/login-common/client-common-auth.c:209,1
    - Dst: str_begins
      Src: /src/dovecot/src/login-common/client-common-auth.c:211,1
    - Dst: event_add_str
      Src: /src/dovecot/src/login-common/client-common-auth.c:213,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:214,1
    - Dst: e_debug
      Src: /src/dovecot/src/login-common/client-common-auth.c:218,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:234,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:239,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/login-common/client-common-auth.c:244,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:246,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 90
    argCount: 6
    argNames:
    - client
    - success
    - reauth
    - args
    - reply_r
    - username_r
    argTypes:
    - struct client*
    - bool
    - bool
    - char**
    - struct client_auth_reply*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 253
    functionName: client_auth_parse_args
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strchr
    - strcmp
    - net_addr2ip
    - client_auth_fail_code_lookup
    - str_begins_with
    - alt_username_set
    - str_parse_get_interval
    - str_begins
    - e_debug
    - e_error
    - auth_proxy_settings_parse
    - t_array_init
    - t_strdup_until
    - str_to_uint
    - event_add_str
    linkageType: ''
    returnType: bool
    signature: "bool client_auth_parse_args(const struct client *client, bool success,\n\t\t\t\t
      \  bool reauth, const char *const *args,\n\t\t\t\t   struct client_auth_reply
      *reply_r,\n\t\t\t\t   const char **username_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_memset
      Src: /src/dovecot/src/login-common/client-common-auth.c:260,1
    - Dst: strlen
      Src: /src/dovecot/src/login-common/client-common-auth.c:260,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/login-common/client-common-auth.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 262
    functionName: proxy_free_password
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_free_and_null
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void proxy_free_password(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/client-common-auth.c:268,1
    - Dst: login_proxy_get_source_host
      Src: /src/dovecot/src/login-common/client-common-auth.c:268,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common-auth.c:270,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:271,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common-auth.c:273,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common-auth.c:276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - str
    - client
    argTypes:
    - string_t*
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 277
    functionName: client_proxy_append_conn_info
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_printfa
    - net_ip2addr
    - login_proxy_get_source_host
    linkageType: ''
    returnType: void
    signature: void client_proxy_append_conn_info(string_t *str, struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/client-common-auth.c:281,1
    - Dst: client_destroy_iostream_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:288,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common-auth.c:292,1
    - Dst: client_proxy_append_conn_info
      Src: /src/dovecot/src/login-common/client-common-auth.c:294,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common-auth.c:296,1
    - Dst: login_proxy_append_success_log_info
      Src: /src/dovecot/src/login-common/client-common-auth.c:297,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/login-common/client-common-auth.c:298,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/client-common-auth.c:300,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/login-common/client-common-auth.c:300,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common-auth.c:300,1
    - Dst: login_proxy_detach
      Src: /src/dovecot/src/login-common/client-common-auth.c:301,1
    - Dst: client_destroy_success
      Src: /src/dovecot/src/login-common/client-common-auth.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 303
    functionName: client_proxy_finish_destroy_client
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - e_info
    - login_proxy_append_success_log_info
    - client_destroy_iostream_error
    - client_destroy_success
    - login_proxy_get_event
    - event_create_passthrough
    - struct event_passthrough*::event
    - login_proxy_detach
    - client_proxy_append_conn_info
    linkageType: ''
    returnType: void
    signature: void client_proxy_finish_destroy_client(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::proxy_get_state
      Src: /src/dovecot/src/login-common/client-common-auth.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 308
    functionName: client_proxy_get_state
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 2
    functionsReached:
    - struct client*::v::proxy_get_state
    linkageType: ''
    returnType: char
    signature: char *client_proxy_get_state(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/client-common-auth.c:312,1
    - Dst: str_printfa
      Src: /src/dovecot/src/login-common/client-common-auth.c:314,1
    - Dst: client_proxy_append_conn_info
      Src: /src/dovecot/src/login-common/client-common-auth.c:315,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/client-common-auth.c:316,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/client-common-auth.c:317,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/client-common-auth.c:318,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common-auth.c:318,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common-auth.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: client_proxy_log_failure
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - e_info
    - login_proxy_get_event
    - str_append
    - client_proxy_append_conn_info
    linkageType: ''
    returnType: void
    signature: void client_proxy_log_failure(struct client *client, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_free
      Src: /src/dovecot/src/login-common/client-common-auth.c:323,1
    - Dst: proxy_free_password
      Src: /src/dovecot/src/login-common/client-common-auth.c:324,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/login-common/client-common-auth.c:325,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/login-common/client-common-auth.c:326,1
    - Dst: client_auth_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 321
    functionDepth: 5
    functionLinenumber: 321
    functionLinenumberEnd: 329
    functionName: client_proxy_failed
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - client_auth_failed
    - i_free_and_null
    - proxy_free_password
    - login_proxy_free
    linkageType: ''
    returnType: void
    signature: void client_proxy_failed(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_get_server_istream
      Src: /src/dovecot/src/login-common/client-common-auth.c:338,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/login-common/client-common-auth.c:339,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:341,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common-auth.c:342,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/login-common/client-common-auth.c:347,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:349,1
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/login-common/client-common-auth.c:352,1
    - Dst: client_proxy_get_state
      Src: /src/dovecot/src/login-common/client-common-auth.c:353,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:354,1
    - Dst: login_proxy_failed_because_invalid_cert
      Src: /src/dovecot/src/login-common/client-common-auth.c:358,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:361,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common-auth.c:362,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/login-common/client-common-auth.c:371,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/login-common/client-common-auth.c:372,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/login-common/client-common-auth.c:373,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/login-common/client-common-auth.c:374,1
    - Dst: struct client*::v::proxy_parse_line
      Src: /src/dovecot/src/login-common/client-common-auth.c:375,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/login-common/client-common-auth.c:378,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/login-common/client-common-auth.c:379,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/login-common/client-common-auth.c:380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 381
    functionName: proxy_input
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - login_proxy_failed
    - login_proxy_failed_because_invalid_cert
    - o_stream_uncork
    - io_stream_get_disconnect_reason
    - i_stream_next_line
    - i_stream_ref
    - t_strdup_printf
    - o_stream_cork
    - o_stream_unref
    - o_stream_ref
    - login_proxy_get_event
    - client_proxy_get_state
    - i_stream_unref
    - struct client*::v::proxy_parse_line
    - i_stream_read
    - login_proxy_get_server_istream
    linkageType: ''
    returnType: void
    signature: void proxy_input(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/login-common/client-common-auth.c:385,1
    - Dst: struct client*::v::proxy_reset
      Src: /src/dovecot/src/login-common/client-common-auth.c:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: proxy_reset
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - struct client*::v::proxy_reset
    - dsasl_client_free
    linkageType: ''
    returnType: void
    signature: void proxy_reset(struct client *client)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:399,1
    - Dst: client_auth_parse_args
      Src: /src/dovecot/src/login-common/client-common-auth.c:408,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/login-common/client-common-auth.c:416,1
    - Dst: login_proxy_redirect_finish
      Src: /src/dovecot/src/login-common/client-common-auth.c:418,1
    - Dst: struct client*::v::auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:427,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:431,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common-auth.c:432,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:434,1
    - Dst: client_auth_parse_args
      Src: /src/dovecot/src/login-common/client-common-auth.c:443,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:449,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:459,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:460,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common-auth.c:461,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 5
    argNames:
    - request
    - status
    - data_base64 ATTR_UNUSED
    - args
    - context
    argTypes:
    - struct auth_client_request*
    - enum auth_request_status
    - char*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 389
    functionDepth: 5
    functionLinenumber: 389
    functionLinenumberEnd: 463
    functionName: proxy_redirect_reauth_callback
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - login_proxy_failed
    - p_strarray_dup
    - login_proxy_redirect_finish
    - t_strdup_printf
    - login_proxy_get_event
    - client_auth_parse_args
    - i_assert
    - struct client*::v::auth_result
    linkageType: ''
    returnType: void
    signature: "void proxy_redirect_reauth_callback(struct auth_client_request *request,\n\t\t\t
      \      enum auth_request_status status,\n\t\t\t       const char *data_base64
      ATTR_UNUSED,\n\t\t\t       const char *const *args, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/login-common/client-common-auth.c:472,1
    - Dst: sasl_server_auth_request_info_fill
      Src: /src/dovecot/src/login-common/client-common-auth.c:474,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:475,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:477,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/login-common/client-common-auth.c:478,1
    - Dst: t_str_new
      Src: /src/dovecot/src/login-common/client-common-auth.c:482,1
    - Dst: str_append
      Src: /src/dovecot/src/login-common/client-common-auth.c:483,1
    - Dst: login_proxy_get_redirect_path
      Src: /src/dovecot/src/login-common/client-common-auth.c:484,1
    - Dst: login_proxy_get_connect_timeout_msecs
      Src: /src/dovecot/src/login-common/client-common-auth.c:486,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:488,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common-auth.c:489,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:490,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/login-common/client-common-auth.c:490,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:491,1
    - Dst: t_array_init
      Src: /src/dovecot/src/login-common/client-common-auth.c:494,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/login-common/client-common-auth.c:494,1
    - Dst: array_append
      Src: /src/dovecot/src/login-common/client-common-auth.c:495,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/login-common/client-common-auth.c:496,1
    - Dst: array_is_created
      Src: /src/dovecot/src/login-common/client-common-auth.c:497,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/login-common/client-common-auth.c:498,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/login-common/client-common-auth.c:499,1
    - Dst: array_front
      Src: /src/dovecot/src/login-common/client-common-auth.c:500,1
    - Dst: auth_client_request_new
      Src: /src/dovecot/src/login-common/client-common-auth.c:503,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - client
    - destuser
    - host
    - port
    argTypes:
    - struct client*
    - char*
    - char*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 465
    functionDepth: 3
    functionLinenumber: 465
    functionLinenumberEnd: 505
    functionName: proxy_redirect_reauth
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_strdup_printf
    - login_proxy_get_event
    - array_front
    - array_append_zero
    - sasl_server_auth_request_info_fill
    - t_str_new
    - str_tabescape
    - login_proxy_get_connect_timeout_msecs
    - N_ELEMENTS
    - login_proxy_failed
    - e_debug
    - login_proxy_get_redirect_path
    - t_array_init
    - array_pop_back
    - str_append
    - array_is_created
    - auth_client_request_new
    - array_append
    linkageType: ''
    returnType: void
    signature: "void proxy_redirect_reauth(struct client *client, const char *destuser,\n\t\t
      \     const char *host, in_port_t port)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/login-common/client-common-auth.c:515,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/login-common/client-common-auth.c:517,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/login-common/client-common-auth.c:520,1
    - Dst: login_proxy_get_port
      Src: /src/dovecot/src/login-common/client-common-auth.c:521,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:523,1
    - Dst: proxy_redirect_reauth
      Src: /src/dovecot/src/login-common/client-common-auth.c:530,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/login-common/client-common-auth.c:534,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:535,1
    - Dst: login_proxy_redirect_finish
      Src: /src/dovecot/src/login-common/client-common-auth.c:540,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - client
    - destination
    - error_r
    argTypes:
    - struct client*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 507
    functionDepth: 5
    functionLinenumber: 507
    functionLinenumberEnd: 542
    functionName: proxy_try_redirect
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - strrchr
    - proxy_redirect_reauth
    - t_strdup_printf
    - login_proxy_redirect_finish
    - net_str2hostport
    - t_strdup_until
    - login_proxy_get_port
    linkageType: ''
    returnType: bool
    signature: "bool proxy_try_redirect(struct client *client, const char *destination,\n\t\t
      \  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: proxy_reset
      Src: /src/dovecot/src/login-common/client-common-auth.c:550,1
    - Dst: proxy_try_redirect
      Src: /src/dovecot/src/login-common/client-common-auth.c:551,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:552,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - client
    - event
    - destination
    argTypes:
    - struct client*
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 544
    functionDepth: 6
    functionLinenumber: 544
    functionLinenumberEnd: 556
    functionName: proxy_redirect
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    - proxy_try_redirect
    - login_proxy_failed
    - proxy_reset
    linkageType: ''
    returnType: void
    signature: "void proxy_redirect(struct client *client, struct event *event,\n\t
      \      const char *destination)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: proxy_reset
      Src: /src/dovecot/src/login-common/client-common-auth.c:563,1
    - Dst: client_proxy_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - client
    - type
    - ATTR_UNUSED
    - reconnecting
    argTypes:
    - struct client*
    - enum login_proxy_failure_type
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 558
    functionDepth: 6
    functionLinenumber: 558
    functionLinenumberEnd: 570
    functionName: client_common_proxy_failed
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - client_proxy_failed
    - proxy_reset
    linkageType: ''
    returnType: void
    signature: "void client_common_proxy_failed(struct client *client,\n\t\t\t\tenum
      login_proxy_failure_type type,\n\t\t\t\tconst char *reason ATTR_UNUSED,\n\t\t\t\tbool
      reconnecting)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:578,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:587,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:596,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/login-common/client-common-auth.c:598,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 2
    argNames:
    - reply
    - error_r
    argTypes:
    - struct client_auth_reply*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 603
    functionName: proxy_check_ip_family
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - net_ip2addr
    linkageType: ''
    returnType: bool
    signature: "bool proxy_check_ip_family(const struct client_auth_reply *reply,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:610,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:611,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:612,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/login-common/client-common-auth.c:617,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:619,1
    - Dst: proxy_check_ip_family
      Src: /src/dovecot/src/login-common/client-common-auth.c:626,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:627,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/login-common/client-common-auth.c:630,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/login-common/client-common-auth.c:631,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:632,1
    - Dst: login_proxy_is_ourself
      Src: /src/dovecot/src/login-common/client-common-auth.c:636,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:638,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 4
    argNames:
    - client
    - event
    - reply
    - sasl_mech_r
    argTypes:
    - struct client*
    - struct event*
    - struct client_auth_reply*
    - struct dsasl_client_mech**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 605
    functionDepth: 2
    functionLinenumber: 605
    functionLinenumberEnd: 642
    functionName: proxy_check_start
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - login_proxy_is_ourself
    - dsasl_client_mech_find
    - net_addr2ip
    - e_error
    - proxy_check_ip_family
    - i_assert
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool proxy_check_start(struct client *client, struct event *event,\n\t\t
      \ const struct client_auth_reply *reply,\n\t\t  const struct dsasl_client_mech
      **sasl_mech_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/login-common/client-common-auth.c:661,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - family
    - ip_r
    argTypes:
    - sa_family_t
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 671
    functionName: login_source_ip_get
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void login_source_ip_get(sa_family_t family, struct ip_addr *ip_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:680,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:681,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:682,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:683,1
    - Dst: struct client*::v::proxy_reset
      Src: /src/dovecot/src/login-common/client-common-auth.c:686,1
    - Dst: event_create
      Src: /src/dovecot/src/login-common/client-common-auth.c:687,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/login-common/client-common-auth.c:688,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:688,1
    - Dst: proxy_check_start
      Src: /src/dovecot/src/login-common/client-common-auth.c:691,1
    - Dst: struct client*::v::proxy_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:692,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common-auth.c:695,1
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/client-common-auth.c:699,1
    - Dst: login_source_ip_get
      Src: /src/dovecot/src/login-common/client-common-auth.c:705,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/client-common-auth.c:718,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/client-common-auth.c:719,1
    - Dst: i_strdup
      Src: /src/dovecot/src/login-common/client-common-auth.c:720,1
    - Dst: login_proxy_new
      Src: /src/dovecot/src/login-common/client-common-auth.c:727,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common-auth.c:730,1
    - Dst: event_unref
      Src: /src/dovecot/src/login-common/client-common-auth.c:733,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common-auth.c:736,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 44
    argCount: 2
    argNames:
    - client
    - reply
    argTypes:
    - struct client*
    - struct client_auth_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 673
    functionDepth: 5
    functionLinenumber: 673
    functionLinenumberEnd: 738
    functionName: proxy_start
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 2
    functionsReached:
    - i_zero
    - event_create
    - struct client*::v::proxy_reset
    - event_unref
    - login_proxy_new
    - event_set_append_log_prefix
    - login_source_ip_get
    - io_remove
    - t_strdup_printf
    - struct client*::v::proxy_failed
    - i_strdup
    - proxy_check_start
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int proxy_start(struct client *client,\n\t\t       const struct client_auth_reply
      *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/login-common/client-common-auth.c:744,1
    - Dst: struct client*::v::auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:745,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/login-common/client-common-auth.c:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - client
    - result
    - reply
    - text
    argTypes:
    - struct client*
    - enum client_auth_result
    - struct client_auth_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 747
    functionName: client_auth_result
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - o_stream_cork
    - struct client*::v::auth_result
    - o_stream_uncork
    linkageType: ''
    returnType: void
    signature: "void client_auth_result(struct client *client, enum client_auth_result
      result,\n\t\t   const struct client_auth_reply *reply, const char *text)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/login-common/client-common-auth.c:755,1
    - Dst: p_new
      Src: /src/dovecot/src/login-common/client-common-auth.c:758,1
    - Dst: array_count
      Src: /src/dovecot/src/login-common/client-common-auth.c:759,1
    - Dst: memcpy
      Src: /src/dovecot/src/login-common/client-common-auth.c:760,1
    - Dst: array_front
      Src: /src/dovecot/src/login-common/client-common-auth.c:760,1
    - Dst: array_count
      Src: /src/dovecot/src/login-common/client-common-auth.c:761,1
    - Dst: client_settings_reload
      Src: /src/dovecot/src/login-common/client-common-auth.c:766,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:767,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:768,1
    - Dst: client_auth_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:770,1
    - Dst: proxy_start
      Src: /src/dovecot/src/login-common/client-common-auth.c:782,1
    - Dst: client_auth_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:783,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:787,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:805,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:809,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/login-common/client-common-auth.c:827,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:828,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:861,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:867,1
    - Dst: client_auth_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:870,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 83
    argCount: 3
    argNames:
    - client
    - reply
    - success
    argTypes:
    - struct client*
    - struct client_auth_reply*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 749
    functionDepth: 6
    functionLinenumber: 749
    functionLinenumberEnd: 872
    functionName: client_auth_handle_reply
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_new
    - proxy_start
    - t_strdup_printf
    - client_auth_failed
    - e_error
    - array_count
    - client_auth_result
    - array_front
    - i_assert
    - t_strflocaltime
    - client_settings_reload
    linkageType: ''
    returnType: bool
    signature: "bool client_auth_handle_reply(struct client *client,\n\t\t\t const
      struct client_auth_reply *reply, bool success)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_does_custom_io
      Src: /src/dovecot/src/login-common/client-common-auth.c:876,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common-auth.c:877,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:879,1
    - Dst: sasl_server_auth_abort
      Src: /src/dovecot/src/login-common/client-common-auth.c:880,1
    - Dst: client_set_auth_waiting
      Src: /src/dovecot/src/login-common/client-common-auth.c:885,1
    - Dst: sasl_server_auth_continue
      Src: /src/dovecot/src/login-common/client-common-auth.c:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - client
    - response
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 874
    functionDepth: 4
    functionLinenumber: 874
    functionLinenumberEnd: 887
    functionName: client_auth_respond
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - io_remove
    - client_does_custom_io
    - client_set_auth_waiting
    - sasl_server_auth_continue
    - sasl_server_auth_abort
    linkageType: ''
    returnType: void
    signature: void client_auth_respond(struct client *client, const char *response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_auth_abort
      Src: /src/dovecot/src/login-common/client-common-auth.c:891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 889
    functionDepth: 4
    functionLinenumber: 889
    functionLinenumberEnd: 892
    functionName: client_auth_abort
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - sasl_server_auth_abort
    linkageType: ''
    returnType: void
    signature: void client_auth_abort(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_auth_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - text
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 894
    functionDepth: 4
    functionLinenumber: 894
    functionLinenumberEnd: 897
    functionName: client_auth_fail
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - sasl_server_auth_failed
    linkageType: ''
    returnType: void
    signature: void client_auth_fail(struct client *client, const char *text)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/login-common/client-common-auth.c:904,1
    - Dst: client_destroy_iostream_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:905,1
    - Dst: str_new
      Src: /src/dovecot/src/login-common/client-common-auth.c:915,1
    - Dst: I_MAX
      Src: /src/dovecot/src/login-common/client-common-auth.c:915,1
    - Dst: str_len
      Src: /src/dovecot/src/login-common/client-common-auth.c:916,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common-auth.c:917,1
    - Dst: str_append_data
      Src: /src/dovecot/src/login-common/client-common-auth.c:920,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/login-common/client-common-auth.c:921,1
    - Dst: str_len
      Src: /src/dovecot/src/login-common/client-common-auth.c:924,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common-auth.c:925,1
    - Dst: str_truncate
      Src: /src/dovecot/src/login-common/client-common-auth.c:926,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 929
    functionName: client_auth_read_line
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - str_c
    - str_len
    - client_destroy
    - I_MAX
    - client_destroy_iostream_error
    - i_stream_skip
    - str_truncate
    - str_append_data
    - i_stream_read_more
    - str_new
    linkageType: ''
    returnType: int
    signature: int client_auth_read_line(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_auth_read_line
      Src: /src/dovecot/src/login-common/client-common-auth.c:933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 931
    functionDepth: 3
    functionLinenumber: 931
    functionLinenumberEnd: 936
    functionName: client_auth_parse_response
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - client_auth_read_line
    linkageType: ''
    returnType: bool
    signature: bool client_auth_parse_response(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:940,1
    - Dst: struct client*::v::auth_parse_response
      Src: /src/dovecot/src/login-common/client-common-auth.c:941,1
    - Dst: client_auth_respond
      Src: /src/dovecot/src/login-common/client-common-auth.c:944,1
    - Dst: str_c
      Src: /src/dovecot/src/login-common/client-common-auth.c:944,1
    - Dst: safe_memset
      Src: /src/dovecot/src/login-common/client-common-auth.c:945,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/login-common/client-common-auth.c:945,1
    - Dst: str_len
      Src: /src/dovecot/src/login-common/client-common-auth.c:946,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 938
    functionDepth: 5
    functionLinenumber: 938
    functionLinenumberEnd: 947
    functionName: client_auth_input
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - str_c_modifiable
    - struct client*::v::auth_parse_response
    - client_auth_respond
    - i_assert
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void client_auth_input(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/login-common/client-common-auth.c:956,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/login-common/client-common-auth.c:960,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - client
    - data
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 949
    functionDepth: 1
    functionLinenumber: 949
    functionLinenumberEnd: 961
    functionName: client_auth_send_challenge
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - strlen
    - o_stream_nsendv
    linkageType: ''
    returnType: void
    signature: void client_auth_send_challenge(struct client *client, const char *data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/client-common-auth.c:971,1
    - Dst: client_auth_parse_args
      Src: /src/dovecot/src/login-common/client-common-auth.c:973,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:975,1
    - Dst: client_auth_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:978,1
    - Dst: client_auth_handle_reply
      Src: /src/dovecot/src/login-common/client-common-auth.c:988,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - client
    - sasl_reply
    - data
    - args
    - reply_r
    argTypes:
    - struct client*
    - enum sasl_server_reply
    - char*
    - char**
    - struct client_auth_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 963
    functionDepth: 7
    functionLinenumber: 963
    functionLinenumberEnd: 992
    functionName: client_auth_reply_args
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - client_auth_failed
    - client_auth_handle_reply
    - client_auth_parse_args
    - client_auth_result
    - timeout_remove
    linkageType: ''
    returnType: bool
    signature: "bool client_auth_reply_args(struct client *client, enum sasl_server_reply
      sasl_reply,\n\t\t       const char *data, const char *const *args,\n\t\t       struct
      client_auth_reply *reply_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:1000,1
    - Dst: i_zero
      Src: /src/dovecot/src/login-common/client-common-auth.c:1006,1
    - Dst: client_auth_reply_args
      Src: /src/dovecot/src/login-common/client-common-auth.c:1009,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1014,1
    - Dst: client_destroy_success
      Src: /src/dovecot/src/login-common/client-common-auth.c:1016,1
    - Dst: client_auth_reply_args
      Src: /src/dovecot/src/login-common/client-common-auth.c:1020,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1025,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1028,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1032,1
    - Dst: client_auth_failed
      Src: /src/dovecot/src/login-common/client-common-auth.c:1038,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1047,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1050,1
    - Dst: shutdown
      Src: /src/dovecot/src/login-common/client-common-auth.c:1057,1
    - Dst: e_error
      Src: /src/dovecot/src/login-common/client-common-auth.c:1058,1
    - Dst: client_notify_disconnect
      Src: /src/dovecot/src/login-common/client-common-auth.c:1065,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/login-common/client-common-auth.c:1068,1
    - Dst: client_destroy
      Src: /src/dovecot/src/login-common/client-common-auth.c:1071,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:1074,1
    - Dst: struct client*::v::auth_send_challenge
      Src: /src/dovecot/src/login-common/client-common-auth.c:1075,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/client-common-auth.c:1077,1
    - Dst: str_truncate
      Src: /src/dovecot/src/login-common/client-common-auth.c:1080,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:1082,1
    - Dst: client_does_custom_io
      Src: /src/dovecot/src/login-common/client-common-auth.c:1084,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/login-common/client-common-auth.c:1085,1
    - Dst: client_auth_input
      Src: /src/dovecot/src/login-common/client-common-auth.c:1087,1
    - Dst: client_unref
      Src: /src/dovecot/src/login-common/client-common-auth.c:1092,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 61
    argCount: 4
    argNames:
    - client
    - sasl_reply
    - data
    - args
    argTypes:
    - struct client*
    - enum sasl_server_reply
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 994
    functionDepth: 8
    functionLinenumber: 994
    functionLinenumberEnd: 1093
    functionName: sasl_callback
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 2
    functionsReached:
    - i_zero
    - shutdown
    - struct client*::v::auth_send_challenge
    - io_add_istream
    - client_destroy
    - client_does_custom_io
    - client_destroy_success
    - t_strdup_printf
    - client_auth_failed
    - e_error
    - client_auth_result
    - str_truncate
    - client_auth_input
    - client_auth_reply_args
    - client_unref
    - i_assert
    - client_notify_disconnect
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void sasl_callback(struct client *client, enum sasl_server_reply sasl_reply,\n\t
      \     const char *data, const char *const *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:1100,1
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:1103,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/client-common-auth.c:1104,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1107,1
    - Dst: client_ref
      Src: /src/dovecot/src/login-common/client-common-auth.c:1113,1
    - Dst: sasl_server_auth_begin
      Src: /src/dovecot/src/login-common/client-common-auth.c:1115,1
    - Dst: io_remove
      Src: /src/dovecot/src/login-common/client-common-auth.c:1122,1
    - Dst: client_set_auth_waiting
      Src: /src/dovecot/src/login-common/client-common-auth.c:1123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - client
    - mech_name
    - auth_flags
    - init_resp
    argTypes:
    - struct client*
    - char*
    - enum sasl_server_auth_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1095
    functionDepth: 4
    functionLinenumber: 1095
    functionLinenumberEnd: 1125
    functionName: client_auth_begin_common
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - e_info
    - io_remove
    - client_set_auth_waiting
    - client_auth_result
    - client_ref
    - i_assert
    - sasl_server_auth_begin
    linkageType: ''
    returnType: int
    signature: "int client_auth_begin_common(struct client *client, const char *mech_name,\n\t\t\t
      enum sasl_server_auth_flags auth_flags,\n\t\t\t const char *init_resp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_auth_begin_common
      Src: /src/dovecot/src/login-common/client-common-auth.c:1130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - mech_name
    - init_resp
    argTypes:
    - struct client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1127
    functionDepth: 5
    functionLinenumber: 1127
    functionLinenumberEnd: 1131
    functionName: client_auth_begin
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 3
    functionsReached:
    - client_auth_begin_common
    linkageType: ''
    returnType: int
    signature: "int client_auth_begin(struct client *client, const char *mech_name,\n\t\t
      \     const char *init_resp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_auth_begin_common
      Src: /src/dovecot/src/login-common/client-common-auth.c:1136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - mech_name
    - init_resp
    argTypes:
    - struct client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1133
    functionDepth: 5
    functionLinenumber: 1133
    functionLinenumberEnd: 1139
    functionName: client_auth_begin_private
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - client_auth_begin_common
    linkageType: ''
    returnType: int
    signature: "int client_auth_begin_private(struct client *client, const char *mech_name,\n\t\t\t
      \     const char *init_resp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_auth_begin_common
      Src: /src/dovecot/src/login-common/client-common-auth.c:1144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - mech_name
    - init_resp
    argTypes:
    - struct client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1141
    functionDepth: 5
    functionLinenumber: 1141
    functionLinenumberEnd: 1147
    functionName: client_auth_begin_implicit
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 0
    functionsReached:
    - client_auth_begin_common
    linkageType: ''
    returnType: int
    signature: "int client_auth_begin_implicit(struct client *client, const char *mech_name,\n\t\t\t
      \      const char *init_resp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/login-common/client-common-auth.c:1151,1
    - Dst: i_assert
      Src: /src/dovecot/src/login-common/client-common-auth.c:1153,1
    - Dst: e_info
      Src: /src/dovecot/src/login-common/client-common-auth.c:1159,1
    - Dst: client_notify_status
      Src: /src/dovecot/src/login-common/client-common-auth.c:1162,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1169,1
    - Dst: client_auth_result
      Src: /src/dovecot/src/login-common/client-common-auth.c:1172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - client
    - pass_sent
    argTypes:
    - struct client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1149
    functionDepth: 3
    functionLinenumber: 1149
    functionLinenumberEnd: 1177
    functionName: client_check_plaintext_auth
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - strcmp
    - e_info
    - client_notify_status
    - client_auth_result
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool client_check_plaintext_auth(struct client *client, bool pass_sent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/login-common/client-common-auth.c:1186,1
    - Dst: if
      Src: /src/dovecot/src/login-common/client-common-auth.c:1189,1
    - Dst: client_notify_auth_ready
      Src: /src/dovecot/src/login-common/client-common-auth.c:1190,1
    - Dst: client_does_custom_io
      Src: /src/dovecot/src/login-common/client-common-auth.c:1193,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/login-common/client-common-auth.c:1195,1
    - Dst: client_notify_auth_connected
      Src: /src/dovecot/src/login-common/client-common-auth.c:1197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1179
    functionDepth: 2
    functionLinenumber: 1179
    functionLinenumberEnd: 1198
    functionName: clients_notify_auth_connected
    functionSourceFile: /src/dovecot/src/login-common/client-common-auth.c
    functionUses: 1
    functionsReached:
    - client_does_custom_io
    - io_set_pending
    - if
    - client_notify_auth_connected
    - client_notify_auth_ready
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void clients_notify_auth_connected(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: IS_STANDALONE
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STANDALONE()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - new_hook
    argTypes:
    - pop3_client_created_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: pop3_client_created_hook_set
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pop3_client_created_func_t
    signature: 'pop3_client_created_func_t *

      pop3_client_created_hook_set(pop3_client_created_func_t *new_hook)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3/main.c:52,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3/main.c:57,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3/main.c:60,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3/main.c:64,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3/main.c:66,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3/main.c:67,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/pop3/main.c:68,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3/main.c:71,1
    - Dst: str_printfa
      Src: /src/dovecot/src/pop3/main.c:74,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3/main.c:77,1
    - Dst: process_title_set
      Src: /src/dovecot/src/pop3/main.c:78,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3/main.c:78,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 79
    functionName: pop3_refresh_proctitle
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - net_ip2addr
    - str_append
    - process_title_set
    linkageType: ''
    returnType: void
    signature: void pop3_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: pop3_die
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pop3_die(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_copy_from_data
      Src: /src/dovecot/src/pop3/main.c:92,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/pop3/main.c:96,1
    - Dst: i_stream_copy_fd
      Src: /src/dovecot/src/pop3/main.c:97,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/pop3/main.c:98,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/pop3/main.c:99,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/pop3/main.c:100,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/pop3/main.c:104,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/pop3/main.c:105,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/pop3/main.c:106,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/pop3/main.c:107,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/pop3/main.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - client
    - buf
    argTypes:
    - struct client*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 109
    functionName: client_add_input
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached:
    - i_stream_copy_fd
    - o_stream_uncork
    - i_stream_set_input_pending
    - o_stream_cork
    - o_stream_unref
    - o_stream_ref
    - i_stream_create_copy_from_data
    - i_stream_unref
    - i_stream_create_concat
    - client_handle_input
    linkageType: ''
    returnType: void
    signature: void client_add_input(struct client *client, const buffer_t *buf)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/pop3/main.c:121,1
    - Dst: event_add_category
      Src: /src/dovecot/src/pop3/main.c:122,1
    - Dst: event_add_fields
      Src: /src/dovecot/src/pop3/main.c:123,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/pop3/main.c:128,1
    - Dst: event_add_int
      Src: /src/dovecot/src/pop3/main.c:130,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/pop3/main.c:132,1
    - Dst: event_add_int
      Src: /src/dovecot/src/pop3/main.c:134,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/pop3/main.c:139,1
    - Dst: write
      Src: /src/dovecot/src/pop3/main.c:141,1
    - Dst: strlen
      Src: /src/dovecot/src/pop3/main.c:141,1
    - Dst: event_unref
      Src: /src/dovecot/src/pop3/main.c:144,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/pop3/main.c:147,1
    - Dst: settings_get
      Src: /src/dovecot/src/pop3/main.c:149,1
    - Dst: write
      Src: /src/dovecot/src/pop3/main.c:151,1
    - Dst: strlen
      Src: /src/dovecot/src/pop3/main.c:151,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/pop3/main.c:154,1
    - Dst: event_unref
      Src: /src/dovecot/src/pop3/main.c:155,1
    - Dst: client_create
      Src: /src/dovecot/src/pop3/main.c:161,1
    - Dst: event_unref
      Src: /src/dovecot/src/pop3/main.c:162,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 5
    argNames:
    - input
    - fd_in
    - fd_out
    - client_r
    - error_r
    argTypes:
    - struct mail_storage_service_input*
    - int
    - int
    - struct client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 164
    functionName: client_create_from_input
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 5
    functionsReached:
    - event_create
    - mail_user_deinit
    - event_unref
    - mail_storage_service_lookup_next
    - event_add_fields
    - event_add_ip
    - strlen
    - write
    - restrict_access_allow_coredumps
    - settings_get
    - client_create
    - event_add_category
    - event_add_int
    linkageType: ''
    returnType: int
    signature: "int client_create_from_input(const struct mail_storage_service_input
      *input,\n\t\t\t int fd_in, int fd_out, struct client **client_r,\n\t\t\t const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/main.c:170,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/main.c:171,1
    - Dst: pop3_lock_session
      Src: /src/dovecot/src/pop3/main.c:173,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/main.c:174,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/main.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 182
    functionName: lock_session
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 1
    functionsReached:
    - client_destroy
    - pop3_lock_session
    - i_assert
    - client_send_line
    linkageType: ''
    returnType: int
    signature: int lock_session(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespaces_init
      Src: /src/dovecot/src/pop3/main.c:191,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/main.c:193,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/pop3/main.c:194,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/main.c:195,1
    - Dst: mailbox_list_get_mail_set
      Src: /src/dovecot/src/pop3/main.c:197,1
    - Dst: pool_ref
      Src: /src/dovecot/src/pop3/main.c:198,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/main.c:203,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/main.c:205,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/main.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - client
    - already_logged_in
    argTypes:
    - struct client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 210
    functionName: init_namespaces
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 3
    functionsReached:
    - mailbox_list_get_mail_set
    - pool_ref
    - mail_namespaces_init
    - client_destroy
    - e_error
    - client_send_line
    - mail_namespace_find_inbox
    - i_assert
    linkageType: ''
    returnType: int
    signature: int init_namespaces(struct client *client, bool already_logged_in)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: init_namespaces
      Src: /src/dovecot/src/pop3/main.c:232,1
    - Dst: lock_session
      Src: /src/dovecot/src/pop3/main.c:235,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/pop3/main.c:238,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/main.c:239,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/pop3/main.c:241,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/main.c:242,1
    - Dst: init_namespaces
      Src: /src/dovecot/src/pop3/main.c:244,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/pop3/main.c:248,1
    - Dst: client_init_mailbox
      Src: /src/dovecot/src/pop3/main.c:249,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/pop3/main.c:250,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/main.c:253,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/main.c:254,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 256
    functionName: client_init_session
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - IS_STANDALONE
    - event_reason_begin
    - event_reason_end
    - client_send_line
    - e_error
    - init_namespaces
    - client_init_mailbox
    - lock_session
    linkageType: ''
    returnType: void
    signature: void client_init_session(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/pop3/main.c:264,1
    - Dst: getenv
      Src: /src/dovecot/src/pop3/main.c:266,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/pop3/main.c:267,1
    - Dst: getlogin
      Src: /src/dovecot/src/pop3/main.c:268,1
    - Dst: i_fatal
      Src: /src/dovecot/src/pop3/main.c:270,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/pop3/main.c:272,1
    - Dst: i_fatal
      Src: /src/dovecot/src/pop3/main.c:274,1
    - Dst: client_create_finish
      Src: /src/dovecot/src/pop3/main.c:275,1
    - Dst: client_init_session
      Src: /src/dovecot/src/pop3/main.c:277,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - username
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 258
    functionDepth: 3
    functionLinenumber: 258
    functionLinenumberEnd: 279
    functionName: main_stdio_run
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 3
    functionsReached:
    - i_zero
    - client_create_finish
    - i_fatal
    - IS_STANDALONE
    - getenv
    - client_init_session
    - client_create_from_input
    - getlogin
    linkageType: ''
    returnType: void
    signature: void main_stdio_run(const char *username)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/pop3/main.c:291,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/pop3/main.c:303,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/pop3/main.c:305,1
    - Dst: i_error
      Src: /src/dovecot/src/pop3/main.c:309,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/pop3/main.c:310,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/pop3/main.c:311,1
    - Dst: client_add_input
      Src: /src/dovecot/src/pop3/main.c:314,1
    - Dst: client_create_finish
      Src: /src/dovecot/src/pop3/main.c:315,1
    - Dst: client_init_session
      Src: /src/dovecot/src/pop3/main.c:317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 3
    argNames:
    - login_client
    - username
    - extra_fields
    argTypes:
    - struct login_server_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 319
    functionName: login_request_finished
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_error
    - i_close_fd
    - client_create_finish
    - client_add_input
    - client_init_session
    - client_create_from_input
    - buffer_create_from_const_data
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: "void login_request_finished(const struct login_server_request *login_client,\n\t\t
      \      const char *username, const char *const *extra_fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/main.c:326,1
    - Dst: write
      Src: /src/dovecot/src/pop3/main.c:327,1
    - Dst: strlen
      Src: /src/dovecot/src/pop3/main.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - request
    - errormsg
    argTypes:
    - struct login_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 330
    functionName: login_request_failed
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strdup_printf
    - write
    linkageType: ''
    returnType: void
    signature: "void login_request_failed(const struct login_server_request *request,\n\t\t\t\tconst
      char *errormsg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/main.c:340,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/pop3/main.c:341,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/pop3/main.c:342,1
    - Dst: client_kick
      Src: /src/dovecot/src/pop3/main.c:343,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - user
    - conn_guid
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 346
    functionName: master_admin_cmd_kick_user
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - guid_128_is_empty
    - guid_128_cmp
    - client_kick
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_admin_cmd_kick_user(const char *user, const guid_128_t
      conn_guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/main.c:355,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/pop3/main.c:357,1
    - Dst: login_server_add
      Src: /src/dovecot/src/pop3/main.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 359
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached:
    - login_server_add
    - i_assert
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/pop3/main.c:370,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/pop3/main.c:374,1
    - Dst: getuid
      Src: /src/dovecot/src/pop3/main.c:374,1
    - Dst: net_getpeername
      Src: /src/dovecot/src/pop3/main.c:375,1
    - Dst: printf
      Src: /src/dovecot/src/pop3/main.c:376,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/pop3/main.c:381,1
    - Dst: master_service_init
      Src: /src/dovecot/src/pop3/main.c:394,1
    - Dst: master_getopt
      Src: /src/dovecot/src/pop3/main.c:396,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/pop3/main.c:399,1
    - Dst: i_fatal
      Src: /src/dovecot/src/pop3/main.c:401,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/pop3/main.c:417,1
    - Dst: i_fatal
      Src: /src/dovecot/src/pop3/main.c:419,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/pop3/main.c:422,1
    - Dst: t_abspath
      Src: /src/dovecot/src/pop3/main.c:423,1
    - Dst: i_fatal
      Src: /src/dovecot/src/pop3/main.c:425,1
    - Dst: t_abspath
      Src: /src/dovecot/src/pop3/main.c:430,1
    - Dst: i_fatal
      Src: /src/dovecot/src/pop3/main.c:431,1
    - Dst: getenv
      Src: /src/dovecot/src/pop3/main.c:437,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/pop3/main.c:438,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/pop3/main.c:439,1
    - Dst: login_server_init
      Src: /src/dovecot/src/pop3/main.c:440,1
    - Dst: master_admin_clients_init
      Src: /src/dovecot/src/pop3/main.c:442,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/pop3/main.c:443,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/pop3/main.c:446,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/pop3/main.c:448,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/pop3/main.c:454,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/pop3/main.c:456,1
    - Dst: main_stdio_run
      Src: /src/dovecot/src/pop3/main.c:458,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 361
    functionDepth: 6
    functionLinenumber: 361
    functionLinenumberEnd: 460
    functionName: main
    functionSourceFile: /src/dovecot/src/pop3/main.c
    functionUses: 0
    functionsReached:
    - master_service_settings_read
    - IS_STANDALONE
    - str_to_uint
    - t_abspath
    - master_service_init
    - net_getpeername
    - printf
    - i_fatal
    - main_stdio_run
    - master_service_init_finish
    - mail_storage_service_init
    - master_getopt
    - i_zero
    - master_admin_clients_init
    - login_server_init
    - master_service_set_die_callback
    - getuid
    - master_service_get_client_limit
    - getenv
    - io_loop_set_running
    - master_service_get_service_settings
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - client
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: MSGS_BITMASK_SIZE
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MSGS_BITMASK_SIZE(client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - client
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: POP3_CLIENT_OUTPUT_FULL
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP3_CLIENT_OUTPUT_FULL(client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - msgnum
    argTypes:
    - struct client*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: msgnum_to_seq
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t msgnum_to_seq(struct client *client, uint32_t msgnum)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:35,1
    - Dst: str_parse_uint
      Src: /src/dovecot/src/pop3/pop3-commands.c:39,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:40,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:45,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:50,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:59,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - cctx
    - msgnum
    - thenspace
    argTypes:
    - struct pop3_command_context*
    - unsigned int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 68
    functionName: get_msgnum
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - str_parse_uint
    linkageType: ''
    returnType: char
    signature: "char *get_msgnum(struct pop3_command_context *cctx,\n\t\t\t      unsigned
      int *msgnum, bool thenspace)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:76,1
    - Dst: str_parse_uoff
      Src: /src/dovecot/src/pop3/pop3-commands.c:80,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:81,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:86,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - cctx
    - size
    - thenspace
    argTypes:
    - struct pop3_command_context*
    - uoff_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 94
    functionName: get_size
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 10
    functionsReached:
    - client_send_line
    - str_parse_uoff
    linkageType: ''
    returnType: char
    signature: "char *get_size(struct pop3_command_context *cctx,\n\t\t\t    uoff_t
      *size, bool thenspace)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: cmd_capa
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_send_line
    linkageType: ''
    returnType: int
    signature: int cmd_capa(struct pop3_command_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_msgnum
      Src: /src/dovecot/src/pop3/pop3-commands.c:106,1
    - Dst: i_malloc
      Src: /src/dovecot/src/pop3/pop3-commands.c:110,1
    - Dst: MSGS_BITMASK_SIZE
      Src: /src/dovecot/src/pop3/pop3-commands.c:110,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 119
    functionName: cmd_dele
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - MSGS_BITMASK_SIZE
    - i_malloc
    - client_send_line
    - get_msgnum
    linkageType: ''
    returnType: int
    signature: int cmd_dele(struct pop3_command_context *cctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POP3_CLIENT_OUTPUT_FULL
      Src: /src/dovecot/src/pop3/pop3-commands.c:132,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:143,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:147,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-commands.c:149,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 151
    functionName: cmd_list_callback
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - POP3_CLIENT_OUTPUT_FULL
    - client_send_line
    - i_free
    linkageType: ''
    returnType: void
    signature: void cmd_list_callback(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/pop3/pop3-commands.c:158,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:159,1
    - Dst: cmd_list_callback
      Src: /src/dovecot/src/pop3/pop3-commands.c:164,1
    - Dst: get_msgnum
      Src: /src/dovecot/src/pop3/pop3-commands.c:168,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 176
    functionName: cmd_list
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - get_msgnum
    - i_new
    - cmd_list_callback
    linkageType: ''
    returnType: int
    signature: int cmd_list(struct pop3_command_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:181,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 185
    functionName: cmd_last
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_send_line
    linkageType: ''
    returnType: int
    signature: int cmd_last(struct pop3_command_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 191
    functionName: cmd_noop
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_send_line
    linkageType: ''
    returnType: int
    signature: int cmd_noop(struct pop3_command_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:199,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/pop3/pop3-commands.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - seqset
    argTypes:
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: pop3_search_build_seqset
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - mail_search_build_add
    - mail_search_build_init
    linkageType: ''
    returnType: struct mail_search_args
    signature: 'struct mail_search_args *

      pop3_search_build_seqset(ARRAY_TYPE(seq_range) *seqset)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pop3_search_build_seqset
      Src: /src/dovecot/src/pop3/pop3-commands.c:211,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:213,1
    - Dst: mail_search_build_add_seqset
      Src: /src/dovecot/src/pop3/pop3-commands.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - seq
    argTypes:
    - struct client*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 216
    functionName: pop3_search_build
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - mail_search_build_add_seqset
    - pop3_search_build_seqset
    - mail_search_build_init
    linkageType: ''
    returnType: struct mail_search_args
    signature: 'struct mail_search_args *

      pop3_search_build(struct client *client, uint32_t seq)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: msgnum_to_seq
      Src: /src/dovecot/src/pop3/pop3-commands.c:223,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - client
    - mail
    - msgnum
    argTypes:
    - struct client*
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 232
    functionName: client_verify_ordering
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - e_error
    - msgnum_to_seq
    linkageType: ''
    returnType: int
    signature: "int client_verify_ordering(struct client *client,\n\t\t\t\t  struct
      mail *mail, uint32_t msgnum)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_expunge
      Src: /src/dovecot/src/pop3/pop3-commands.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/pop3-commands.c:241,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/pop3/pop3-commands.c:242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - client
    - mail
    argTypes:
    - struct client*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 245
    functionName: client_expunge
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_update_keywords
    - mail_expunge
    linkageType: ''
    returnType: void
    signature: void client_expunge(struct client *client, struct mail *mail)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/pop3/pop3-commands.c:252,1
    - Dst: mailbox_is_readonly
      Src: /src/dovecot/src/pop3/pop3-commands.c:256,1
    - Dst: t_array_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:263,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/pop3/pop3-commands.c:268,1
    - Dst: msgnum_to_seq
      Src: /src/dovecot/src/pop3/pop3-commands.c:268,1
    - Dst: t_array_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:271,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/pop3/pop3-commands.c:276,1
    - Dst: msgnum_to_seq
      Src: /src/dovecot/src/pop3/pop3-commands.c:276,1
    - Dst: array_count
      Src: /src/dovecot/src/pop3/pop3-commands.c:280,1
    - Dst: pop3_search_build_seqset
      Src: /src/dovecot/src/pop3/pop3-commands.c:282,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:283,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/pop3/pop3-commands.c:284,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/pop3/pop3-commands.c:286,1
    - Dst: client_expunge
      Src: /src/dovecot/src/pop3/pop3-commands.c:287,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/pop3/pop3-commands.c:288,1
    - Dst: seq_range_array_invert
      Src: /src/dovecot/src/pop3/pop3-commands.c:291,1
    - Dst: seq_range_array_intersect
      Src: /src/dovecot/src/pop3/pop3-commands.c:292,1
    - Dst: array_count
      Src: /src/dovecot/src/pop3/pop3-commands.c:295,1
    - Dst: pop3_search_build_seqset
      Src: /src/dovecot/src/pop3/pop3-commands.c:297,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:298,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/pop3/pop3-commands.c:299,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/pop3/pop3-commands.c:301,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/pop3/pop3-commands.c:302,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/pop3/pop3-commands.c:303,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 309
    functionName: client_update_mails
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - client_expunge
    - seq_range_array_invert
    - pop3_search_build_seqset
    - mailbox_search_init
    - seq_range_array_intersect
    - mail_update_flags
    - array_count
    - t_array_init
    - mailbox_search_deinit
    - ARRAY_TYPE
    - mailbox_is_readonly
    - mailbox_search_next
    - msgnum_to_seq
    - mail_search_args_unref
    linkageType: ''
    returnType: bool
    signature: bool client_update_mails(struct client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_update_mails
      Src: /src/dovecot/src/pop3/pop3-commands.c:315,1
    - Dst: client_send_storage_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:316,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/pop3/pop3-commands.c:317,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/pop3/pop3-commands.c:323,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/pop3/pop3-commands.c:324,1
    - Dst: client_send_storage_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:325,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/pop3/pop3-commands.c:326,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:333,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:335,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/pop3/pop3-commands.c:337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 339
    functionName: cmd_quit
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_update_mails
    - client_send_storage_error
    - mailbox_sync
    - client_disconnect
    - client_send_line
    - mailbox_transaction_commit
    linkageType: ''
    returnType: int
    signature: int cmd_quit(struct pop3_command_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_free
      Src: /src/dovecot/src/pop3/pop3-commands.c:355,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-commands.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 357
    functionName: fetch_deinit
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 2
    functionsReached:
    - mail_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void fetch_deinit(struct fetch_context *ctx)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/pop3/pop3-commands.c:368,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/pop3/pop3-commands.c:412,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/pop3/pop3-commands.c:415,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/pop3/pop3-commands.c:418,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/pop3/pop3-commands.c:419,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/pop3/pop3-commands.c:428,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/pop3/pop3-commands.c:433,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/pop3/pop3-commands.c:439,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/pop3/pop3-commands.c:445,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:451,1
    - Dst: fetch_deinit
      Src: /src/dovecot/src/pop3/pop3-commands.c:452,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 64
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 359
    functionDepth: 2
    functionLinenumber: 359
    functionLinenumberEnd: 454
    functionName: fetch_callback
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - i_stream_skip
    - fetch_deinit
    - client_send_line
    - o_stream_send
    - o_stream_get_buffer_used_size
    - o_stream_nsend
    - o_stream_flush
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void fetch_callback(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - client
    - msgnum
    argTypes:
    - struct client*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 467
    functionName: client_reply_msg_expunged
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_send_line
    linkageType: ''
    returnType: int
    signature: int client_reply_msg_expunged(struct client *client, unsigned int msgnum)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/pop3/pop3-commands.c:475,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/pop3/pop3-commands.c:478,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/pop3/pop3-commands.c:481,1
    - Dst: msgnum_to_seq
      Src: /src/dovecot/src/pop3/pop3-commands.c:481,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/pop3/pop3-commands.c:483,1
    - Dst: client_reply_msg_expunged
      Src: /src/dovecot/src/pop3/pop3-commands.c:484,1
    - Dst: fetch_deinit
      Src: /src/dovecot/src/pop3/pop3-commands.c:485,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/pop3/pop3-commands.c:490,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:500,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:503,1
    - Dst: fetch_callback
      Src: /src/dovecot/src/pop3/pop3-commands.c:509,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 5
    argNames:
    - client
    - msgnum
    - body_lines
    - reason
    - byte_counter
    argTypes:
    - struct client*
    - unsigned int
    - uoff_t
    - char*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 469
    functionDepth: 3
    functionLinenumber: 469
    functionLinenumberEnd: 511
    functionName: fetch
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 9
    functionsReached:
    - mail_alloc
    - mail_get_stream_because
    - mail_set_seq
    - fetch_deinit
    - client_send_line
    - mail_get_flags
    - fetch_callback
    - i_new
    - msgnum_to_seq
    - client_reply_msg_expunged
    linkageType: ''
    returnType: int
    signature: "int fetch(struct client *client, unsigned int msgnum, uoff_t body_lines,\n\t\t
      const char *reason, uoff_t *byte_counter)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_msgnum
      Src: /src/dovecot/src/pop3/pop3-commands.c:517,1
    - Dst: fetch
      Src: /src/dovecot/src/pop3/pop3-commands.c:527,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 513
    functionDepth: 4
    functionLinenumber: 513
    functionLinenumberEnd: 529
    functionName: cmd_retr
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - fetch
    - get_msgnum
    linkageType: ''
    returnType: int
    signature: int cmd_retr(struct pop3_command_context *cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/pop3/pop3-commands.c:541,1
    - Dst: MSGS_BITMASK_SIZE
      Src: /src/dovecot/src/pop3/pop3-commands.c:541,1
    - Dst: memset
      Src: /src/dovecot/src/pop3/pop3-commands.c:546,1
    - Dst: MSGS_BITMASK_SIZE
      Src: /src/dovecot/src/pop3/pop3-commands.c:546,1
    - Dst: pop3_search_build
      Src: /src/dovecot/src/pop3/pop3-commands.c:552,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:553,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/pop3/pop3-commands.c:555,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/pop3/pop3-commands.c:557,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/pop3/pop3-commands.c:558,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/pop3/pop3-commands.c:559,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/pop3/pop3-commands.c:561,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/pop3/pop3-commands.c:562,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 531
    functionDepth: 3
    functionLinenumber: 531
    functionLinenumberEnd: 568
    functionName: cmd_rset
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - MSGS_BITMASK_SIZE
    - mailbox_transaction_begin
    - mail_update_flags
    - client_send_line
    - mailbox_search_deinit
    - mailbox_transaction_commit
    - mailbox_search_init
    - memset
    - mail_search_args_unref
    - pop3_search_build
    - mailbox_search_next
    linkageType: ''
    returnType: int
    signature: int cmd_rset(struct pop3_command_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 576
    functionName: cmd_stat
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_send_line
    linkageType: ''
    returnType: int
    signature: int cmd_stat(struct pop3_command_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_msgnum
      Src: /src/dovecot/src/pop3/pop3-commands.c:583,1
    - Dst: get_size
      Src: /src/dovecot/src/pop3/pop3-commands.c:586,1
    - Dst: fetch
      Src: /src/dovecot/src/pop3/pop3-commands.c:590,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 578
    functionDepth: 4
    functionLinenumber: 578
    functionLinenumberEnd: 591
    functionName: cmd_top
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - fetch
    - get_size
    - get_msgnum
    linkageType: ''
    returnType: int
    signature: int cmd_top(struct pop3_command_context *cctx)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/pop3/pop3-commands.c:608,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3/pop3-commands.c:610,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/pop3/pop3-commands.c:619,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3/pop3-commands.c:620,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/pop3/pop3-commands.c:625,1
    - Dst: i_unreached
      Src: /src/dovecot/src/pop3/pop3-commands.c:626,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/pop3/pop3-commands.c:629,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:631,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:633,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:636,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/pop3/pop3-commands.c:643,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:645,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:647,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:650,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/pop3/pop3-commands.c:657,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:659,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:661,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:664,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-commands.c:673,1
    - Dst: var_expand
      Src: /src/dovecot/src/pop3/pop3-commands.c:684,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-commands.c:686,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 4
    argNames:
    - client
    - mail
    - str
    - permanent_uidl_r
    argTypes:
    - struct client*
    - struct mail*
    - string_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 692
    functionName: pop3_get_uid
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - dec2str
    - mailbox_get_last_internal_error
    - i_unreached
    - e_error
    - mail_get_first_header
    - i_snprintf
    - str_append
    - mail_get_special
    - var_expand
    linkageType: ''
    returnType: int
    signature: "int pop3_get_uid(struct client *client, struct mail *mail, string_t
      *str,\n\t     bool *permanent_uidl_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:709,1
    - Dst: POP3_CLIENT_OUTPUT_FULL
      Src: /src/dovecot/src/pop3/pop3-commands.c:714,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:724,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-commands.c:725,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - client
    - ctx
    argTypes:
    - struct client*
    - struct cmd_uidl_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 727
    functionName: list_uidls_saved_iter
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - i_free
    - POP3_CLIENT_OUTPUT_FULL
    linkageType: ''
    returnType: bool
    signature: bool list_uidls_saved_iter(struct client *client, struct cmd_uidl_context
      *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: list_uidls_saved_iter
      Src: /src/dovecot/src/pop3/pop3-commands.c:736,1
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3/pop3-commands.c:738,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/pop3/pop3-commands.c:739,1
    - Dst: client_verify_ordering
      Src: /src/dovecot/src/pop3/pop3-commands.c:742,1
    - Dst: str_truncate
      Src: /src/dovecot/src/pop3/pop3-commands.c:753,1
    - Dst: pop3_get_uid
      Src: /src/dovecot/src/pop3/pop3-commands.c:754,1
    - Dst: mail_update_pop3_uidl
      Src: /src/dovecot/src/pop3/pop3-commands.c:759,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3/pop3-commands.c:759,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:761,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3/pop3-commands.c:762,1
    - Dst: POP3_CLIENT_OUTPUT_FULL
      Src: /src/dovecot/src/pop3/pop3-commands.c:765,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/pop3/pop3-commands.c:773,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:778,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-commands.c:779,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/pop3/pop3-commands.c:781,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 2
    argNames:
    - client
    - ctx
    argTypes:
    - struct client*
    - struct cmd_uidl_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 783
    functionName: list_uids_iter
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - POP3_CLIENT_OUTPUT_FULL
    - pop3_get_uid
    - client_disconnect
    - list_uidls_saved_iter
    - client_verify_ordering
    - client_send_line
    - mailbox_search_deinit
    - str_truncate
    - mailbox_search_next
    - i_free
    - mail_update_pop3_uidl
    linkageType: ''
    returnType: bool
    signature: bool list_uids_iter(struct client *client, struct cmd_uidl_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_uids_iter
      Src: /src/dovecot/src/pop3/pop3-commands.c:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 785
    functionDepth: 3
    functionLinenumber: 785
    functionLinenumberEnd: 790
    functionName: cmd_uidl_callback
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - list_uids_iter
    linkageType: ''
    returnType: void
    signature: void cmd_uidl_callback(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/pop3/pop3-commands.c:801,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3/pop3-commands.c:801,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/pop3/pop3-commands.c:803,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/pop3/pop3-commands.c:804,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/pop3/pop3-commands.c:804,1
    - Dst: str_printfa
      Src: /src/dovecot/src/pop3/pop3-commands.c:805,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - uidl
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 809
    functionName: uidl_rename_duplicate
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - hash_table_update
    - POINTER_CAST
    - str_printfa
    - hash_table_lookup_full
    - POINTER_CAST_TO
    linkageType: ''
    returnType: void
    signature: void uidl_rename_duplicate(string_t *uidl, HASH_TABLE_TYPE(uidl_counter)
      prev_uidls)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: HASH_TABLE_TYPE
      Src: /src/dovecot/src/pop3/pop3-commands.c:816,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/pop3-commands.c:824,1
    - Dst: pop3_search_build
      Src: /src/dovecot/src/pop3/pop3-commands.c:826,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:831,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/pop3/pop3-commands.c:833,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-commands.c:836,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/pop3/pop3-commands.c:838,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/pop3/pop3-commands.c:840,1
    - Dst: i_new
      Src: /src/dovecot/src/pop3/pop3-commands.c:843,1
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3/pop3-commands.c:844,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/pop3/pop3-commands.c:845,1
    - Dst: str_truncate
      Src: /src/dovecot/src/pop3/pop3-commands.c:846,1
    - Dst: pop3_get_uid
      Src: /src/dovecot/src/pop3/pop3-commands.c:847,1
    - Dst: uidl_rename_duplicate
      Src: /src/dovecot/src/pop3/pop3-commands.c:852,1
    - Dst: p_strdup
      Src: /src/dovecot/src/pop3/pop3-commands.c:854,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3/pop3-commands.c:854,1
    - Dst: mail_update_pop3_uidl
      Src: /src/dovecot/src/pop3/pop3-commands.c:856,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/pop3-commands.c:858,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/pop3/pop3-commands.c:861,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/pop3/pop3-commands.c:861,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/pop3/pop3-commands.c:863,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/pop3/pop3-commands.c:865,1
    - Dst: pool_unref
      Src: /src/dovecot/src/pop3/pop3-commands.c:868,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-commands.c:869,1
    - Dst: p_new
      Src: /src/dovecot/src/pop3/pop3-commands.c:873,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/pop3/pop3-commands.c:874,1
    - Dst: msgnum_to_seq
      Src: /src/dovecot/src/pop3/pop3-commands.c:877,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-commands.c:879,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 811
    functionDepth: 3
    functionLinenumber: 811
    functionLinenumberEnd: 880
    functionName: client_uidls_save
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - pool_unref
    - pop3_search_build
    - t_str_new
    - hash_table_update
    - hash_table_create
    - uidl_rename_duplicate
    - POINTER_CAST
    - p_new
    - HASH_TABLE_TYPE
    - mailbox_search_deinit
    - mail_update_pop3_uidl
    - hash_table_destroy
    - pop3_get_uid
    - mailbox_search_init
    - MALLOC_ADD
    - i_assert
    - i_free
    - msgnum_to_seq
    - strcmp
    - pool_alloconly_create
    - i_new
    - str_truncate
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: void
    signature: void client_uidls_save(struct client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_uidls_save
      Src: /src/dovecot/src/pop3/pop3-commands.c:891,1
    - Dst: i_new
      Src: /src/dovecot/src/pop3/pop3-commands.c:893,1
    - Dst: pop3_search_build
      Src: /src/dovecot/src/pop3/pop3-commands.c:901,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:902,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/pop3/pop3-commands.c:905,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - client
    - seq
    argTypes:
    - struct client*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 882
    functionDepth: 4
    functionLinenumber: 882
    functionLinenumberEnd: 913
    functionName: cmd_uidl_init
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - client_uidls_save
    - i_new
    - mailbox_search_init
    - mail_search_args_unref
    - pop3_search_build
    linkageType: ''
    returnType: struct cmd_uidl_context
    signature: 'struct cmd_uidl_context *

      cmd_uidl_init(struct client *client, uint32_t seq)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-commands.c:921,1
    - Dst: cmd_uidl_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:922,1
    - Dst: list_uids_iter
      Src: /src/dovecot/src/pop3/pop3-commands.c:923,1
    - Dst: get_msgnum
      Src: /src/dovecot/src/pop3/pop3-commands.c:927,1
    - Dst: msgnum_to_seq
      Src: /src/dovecot/src/pop3/pop3-commands.c:930,1
    - Dst: cmd_uidl_init
      Src: /src/dovecot/src/pop3/pop3-commands.c:931,1
    - Dst: list_uids_iter
      Src: /src/dovecot/src/pop3/pop3-commands.c:933,1
    - Dst: client_reply_msg_expunged
      Src: /src/dovecot/src/pop3/pop3-commands.c:934,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 915
    functionDepth: 5
    functionLinenumber: 915
    functionLinenumberEnd: 938
    functionName: cmd_uidl
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - cmd_uidl_init
    - client_send_line
    - get_msgnum
    - list_uids_iter
    - msgnum_to_seq
    - client_reply_msg_expunged
    linkageType: ''
    returnType: int
    signature: int cmd_uidl(struct pop3_command_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/pop3/pop3-commands.c:956,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/pop3/pop3-commands.c:957,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 961
    functionName: pop3_command_find
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - N_ELEMENTS
    linkageType: ''
    returnType: struct pop3_command
    signature: struct pop3_command *pop3_command_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct pop3_command_context*::command::func
      Src: /src/dovecot/src/pop3/pop3-commands.c:968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct pop3_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 969
    functionName: client_command_execute
    functionSourceFile: /src/dovecot/src/pop3/pop3-commands.c
    functionUses: 1
    functionsReached:
    - struct pop3_command_context*::command::func
    linkageType: ''
    returnType: int
    signature: int client_command_execute(struct pop3_command_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: DEF
    functionSourceFile: /src/dovecot/src/pop3/pop3-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/pop3/pop3-settings.c:142,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/pop3/pop3-settings.c:146,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-settings.c:152,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct pop3_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 159
    functionName: pop3_settings_parse_workarounds
    functionSourceFile: /src/dovecot/src/pop3/pop3-settings.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int pop3_settings_parse_workarounds(struct pop3_settings *set,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pop3_settings_parse_workarounds
      Src: /src/dovecot/src/pop3/pop3-settings.c:166,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-settings.c:168,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-settings.c:173,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-settings.c:175,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-settings.c:182,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/pop3/pop3-settings.c:189,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-settings.c:190,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/pop3/pop3-settings.c:193,1
    - Dst: str_array_find
      Src: /src/dovecot/src/pop3/pop3-settings.c:194,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/pop3/pop3-settings.c:195,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 198
    functionName: pop3_settings_verify
    functionSourceFile: /src/dovecot/src/pop3/pop3-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_array_find
    - pop3_settings_parse_workarounds
    - var_expand_program_create
    - t_strdup_printf
    - var_expand_program_free
    - var_expand_program_variables
    linkageType: ''
    returnType: bool
    signature: bool pop3_settings_verify(void *_set, pool_t pool ATTR_UNUSED, const
      char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/pop3/pop3-client.c:73,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/pop3/pop3-client.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: client_commit_timeout
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - mailbox_transaction_begin
    - mailbox_transaction_commit
    linkageType: ''
    returnType: void
    signature: void client_commit_timeout(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:80,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:80,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:84,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:85,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: client_idle_timeout
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_send_line
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void client_idle_timeout(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/pop3/pop3-client.c:97,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/pop3/pop3-client.c:101,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/pop3/pop3-client.c:106,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/pop3/pop3-client.c:112,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/pop3/pop3-client.c:117,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/pop3/pop3-client.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - client
    - mail
    - size_r
    argTypes:
    - struct client*
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 123
    functionName: pop3_mail_get_size
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mail_get_virtual_size
    - mail_get_physical_size
    linkageType: ''
    returnType: int
    signature: int pop3_mail_get_size(struct client *client, struct mail *mail, uoff_t
      *size_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/pop3/pop3-client.c:135,1
    - Dst: i_array_init
      Src: /src/dovecot/src/pop3/pop3-client.c:136,1
    - Dst: array_count
      Src: /src/dovecot/src/pop3/pop3-client.c:140,1
    - Dst: array_push_back
      Src: /src/dovecot/src/pop3/pop3-client.c:142,1
    - Dst: array_push_back
      Src: /src/dovecot/src/pop3/pop3-client.c:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - msgnum_to_seq_map
    - client
    - mail
    - msgnum
    argTypes:
    - ARRAY_TYPE*
    - struct client*
    - struct mail*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 144
    functionName: msgnum_to_seq_map_add
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - array_count
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void msgnum_to_seq_map_add(ARRAY_TYPE(uint32_t) *msgnum_to_seq_map,\n\t\t
      \     struct client *client, struct mail *mail,\n\t\t      unsigned int msgnum)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY
      Src: /src/dovecot/src/pop3/pop3-client.c:155,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/pop3/pop3-client.c:162,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/pop3/pop3-client.c:166,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/pop3/pop3-client.c:168,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/pop3/pop3-client.c:170,1
    - Dst: p_strdup
      Src: /src/dovecot/src/pop3/pop3-client.c:172,1
    - Dst: i_array_init
      Src: /src/dovecot/src/pop3/pop3-client.c:174,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/pop3/pop3-client.c:176,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/pop3/pop3-client.c:178,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/pop3/pop3-client.c:180,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/pop3/pop3-client.c:183,1
    - Dst: i_array_init
      Src: /src/dovecot/src/pop3/pop3-client.c:187,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/pop3/pop3-client.c:190,1
    - Dst: pop3_mail_get_size
      Src: /src/dovecot/src/pop3/pop3-client.c:191,1
    - Dst: array_is_created
      Src: /src/dovecot/src/pop3/pop3-client.c:196,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/pop3/pop3-client.c:197,1
    - Dst: msgnum_to_seq_map_add
      Src: /src/dovecot/src/pop3/pop3-client.c:198,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/pop3/pop3-client.c:200,1
    - Dst: array_push_back
      Src: /src/dovecot/src/pop3/pop3-client.c:206,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/pop3/pop3-client.c:210,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/pop3/pop3-client.c:216,1
    - Dst: array_free
      Src: /src/dovecot/src/pop3/pop3-client.c:217,1
    - Dst: array_is_created
      Src: /src/dovecot/src/pop3/pop3-client.c:218,1
    - Dst: array_free
      Src: /src/dovecot/src/pop3/pop3-client.c:219,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/pop3-client.c:222,1
    - Dst: array_is_created
      Src: /src/dovecot/src/pop3/pop3-client.c:225,1
    - Dst: i_array_init
      Src: /src/dovecot/src/pop3/pop3-client.c:226,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/pop3/pop3-client.c:227,1
    - Dst: array_free_without_data
      Src: /src/dovecot/src/pop3/pop3-client.c:232,1
    - Dst: array_is_created
      Src: /src/dovecot/src/pop3/pop3-client.c:233,1
    - Dst: array_count
      Src: /src/dovecot/src/pop3/pop3-client.c:235,1
    - Dst: array_free_without_data
      Src: /src/dovecot/src/pop3/pop3-client.c:237,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 64
    argCount: 2
    argNames:
    - client
    - failed_uid_r
    argTypes:
    - struct client*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 240
    functionName: read_mailbox
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_search_build_add_all
    - p_strdup
    - seq_range_array_add_range
    - ARRAY
    - array_count
    - mailbox_search_next
    - mailbox_transaction_begin
    - mail_search_args_init
    - mail_get_flags
    - mailbox_search_deinit
    - array_free
    - mail_search_build_add
    - array_free_without_data
    - mail_search_build_init
    - mailbox_transaction_commit
    - mailbox_search_init
    - i_assert
    - pop3_mail_get_size
    - seq_range_array_add
    - msgnum_to_seq_map_add
    - array_push_back
    - mailbox_get_open_status
    - array_is_created
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: int read_mailbox(struct client *client, uint32_t *failed_uid_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_keywords_create
      Src: /src/dovecot/src/pop3/pop3-client.c:251,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:253,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/pop3/pop3-client.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 260
    functionName: init_pop3_deleted_flag
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - mailbox_keywords_create
    - t_strdup_printf
    - mailbox_get_last_internal_error
    linkageType: ''
    returnType: int
    signature: int init_pop3_deleted_flag(struct client *client, const char **error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_sync
      Src: /src/dovecot/src/pop3/pop3-client.c:268,1
    - Dst: read_mailbox
      Src: /src/dovecot/src/pop3/pop3-client.c:274,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/pop3/pop3-client.c:286,1
    - Dst: client_send_storage_error
      Src: /src/dovecot/src/pop3/pop3-client.c:287,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:291,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:298,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 262
    functionDepth: 3
    functionLinenumber: 262
    functionLinenumberEnd: 301
    functionName: init_mailbox
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 1
    functionsReached:
    - mailbox_get_last_internal_error
    - read_mailbox
    - t_strdup_printf
    - client_send_storage_error
    - mailbox_sync
    - client_send_line
    linkageType: ''
    returnType: int
    signature: int init_mailbox(struct client *client, const char **error_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/pop3/pop3-client.c:308,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/pop3/pop3-client.c:310,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-client.c:314,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-client.c:316,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-client.c:318,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-client.c:320,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-client.c:322,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:325,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/pop3/pop3-client.c:332,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - format
    - keys
    - error_r
    argTypes:
    - char*
    - enum uidl_keys*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 334
    functionName: parse_uidl_keymask
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - var_expand_program_create
    - t_strdup_printf
    - var_expand_program_free
    - var_expand_program_variables
    linkageType: ''
    returnType: int
    signature: "int parse_uidl_keymask(const char *format, enum uidl_keys *keys,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_touch
      Src: /src/dovecot/src/pop3/pop3-client.c:338,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:339,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 343
    functionName: pop3_lock_session_refresh
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_send_line
    - file_dotlock_touch
    linkageType: ''
    returnType: void
    signature: void pop3_lock_session_refresh(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/pop3/pop3-client.c:352,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/pop3/pop3-client.c:355,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-client.c:359,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/pop3/pop3-client.c:364,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-client.c:365,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/pop3/pop3-client.c:367,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:370,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/pop3/pop3-client.c:376,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-client.c:379,1
    - Dst: timeout_add
      Src: /src/dovecot/src/pop3/pop3-client.c:383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 387
    functionName: pop3_lock_session
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 1
    functionsReached:
    - mailbox_list_get_last_internal_error
    - mailbox_list_mkdir_root
    - mailbox_list_get_root_path
    - file_dotlock_create
    - timeout_add
    - t_strdup_printf
    - e_error
    linkageType: ''
    returnType: int
    signature: int pop3_lock_session(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/pop3/pop3-client.c:397,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/pop3/pop3-client.c:398,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/pop3/pop3-client.c:400,1
    - Dst: p_new
      Src: /src/dovecot/src/pop3/pop3-client.c:401,1
    - Dst: event_ref
      Src: /src/dovecot/src/pop3/pop3-client.c:404,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/pop3/pop3-client.c:409,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/pop3/pop3-client.c:410,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/pop3/pop3-client.c:411,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/pop3/pop3-client.c:412,1
    - Dst: p_array_init
      Src: /src/dovecot/src/pop3/pop3-client.c:414,1
    - Dst: timeout_add
      Src: /src/dovecot/src/pop3/pop3-client.c:416,1
    - Dst: timeout_add
      Src: /src/dovecot/src/pop3/pop3-client.c:418,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3/pop3-client.c:426,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/pop3/pop3-client.c:433,1
    - Dst: hook_client_created
      Src: /src/dovecot/src/pop3/pop3-client.c:436,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 5
    argNames:
    - fd_in
    - fd_out
    - event
    - user
    - set
    argTypes:
    - int
    - int
    - struct event*
    - struct mail_user*
    - struct pop3_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 439
    functionName: client_create
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 12
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - i_stream_create_fd
    - o_stream_create_fd
    - p_new
    - p_array_init
    - event_ref
    - timeout_add
    - hook_client_created
    - o_stream_set_no_error_handling
    - DLLIST_PREPEND
    - net_set_nonblock
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: struct client
    signature: "struct client *client_create(int fd_in, int fd_out,\n\t\t\t     struct
      event *event, struct mail_user *user,\n\t\t\t     const struct pop3_settings
      *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/pop3/pop3-client.c:444,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/pop3/pop3-client.c:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 448
    functionName: client_create_finish
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 6
    functionsReached:
    - iostream_rawlog_create
    - io_add_istream
    linkageType: ''
    returnType: void
    signature: void client_create_finish(struct client *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pop3_refresh_proctitle
      Src: /src/dovecot/src/pop3/pop3-client.c:456,1
    - Dst: parse_uidl_keymask
      Src: /src/dovecot/src/pop3/pop3-client.c:458,1
    - Dst: i_fatal
      Src: /src/dovecot/src/pop3/pop3-client.c:460,1
    - Dst: i_fatal
      Src: /src/dovecot/src/pop3/pop3-client.c:462,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/pop3/pop3-client.c:467,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/pop3/pop3-client.c:468,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:469,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/pop3/pop3-client.c:470,1
    - Dst: client_send_storage_error
      Src: /src/dovecot/src/pop3/pop3-client.c:471,1
    - Dst: init_pop3_deleted_flag
      Src: /src/dovecot/src/pop3/pop3-client.c:475,1
    - Dst: init_mailbox
      Src: /src/dovecot/src/pop3/pop3-client.c:476,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:477,1
    - Dst: i_malloc
      Src: /src/dovecot/src/pop3/pop3-client.c:482,1
    - Dst: MSGS_BITMASK_SIZE
      Src: /src/dovecot/src/pop3/pop3-client.c:482,1
    - Dst: mail_user_get_anvil_session
      Src: /src/dovecot/src/pop3/pop3-client.c:485,1
    - Dst: master_service_anvil_connect
      Src: /src/dovecot/src/pop3/pop3-client.c:486,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 450
    functionDepth: 4
    functionLinenumber: 450
    functionLinenumberEnd: 490
    functionName: client_init_mailbox
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 1
    functionsReached:
    - parse_uidl_keymask
    - MSGS_BITMASK_SIZE
    - i_malloc
    - mailbox_open
    - mailbox_get_last_internal_error
    - mail_user_get_anvil_session
    - master_service_anvil_connect
    - i_fatal
    - t_strdup_printf
    - client_send_storage_error
    - init_pop3_deleted_flag
    - mailbox_alloc
    - init_mailbox
    - pop3_refresh_proctitle
    linkageType: ''
    returnType: int
    signature: int client_init_mailbox(struct client *client, const char **error_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crc32_str
      Src: /src/dovecot/src/pop3/pop3-client.c:506,1
    - Dst: crc32_str
      Src: /src/dovecot/src/pop3/pop3-client.c:511,1
    - Dst: crc32_str
      Src: /src/dovecot/src/pop3/pop3-client.c:517,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:523,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3/pop3-client.c:525,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 529
    functionName: client_build_uidl_change_string
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - crc32_str
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *client_build_uidl_change_string(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_build_uidl_change_string
      Src: /src/dovecot/src/pop3/pop3-client.c:536,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:539,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:540,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:541,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:542,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:545,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:546,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:547,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:549,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/pop3/pop3-client.c:549,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:550,1
    - Dst: dec2str
      Src: /src/dovecot/src/pop3/pop3-client.c:553,1
    - Dst: mail_user_var_expand_params
      Src: /src/dovecot/src/pop3/pop3-client.c:558,1
    - Dst: event_add_int
      Src: /src/dovecot/src/pop3/pop3-client.c:571,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/pop3/pop3-client.c:571,1
    - Dst: event_add_int
      Src: /src/dovecot/src/pop3/pop3-client.c:572,1
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3/pop3-client.c:574,1
    - Dst: var_expand
      Src: /src/dovecot/src/pop3/pop3-client.c:575,1
    - Dst: e_error
      Src: /src/dovecot/src/pop3/pop3-client.c:577,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3/pop3-client.c:582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 531
    functionDepth: 2
    functionLinenumber: 531
    functionLinenumberEnd: 583
    functionName: client_stats
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 2
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - i_stream_get_absolute_offset
    - client_build_uidl_change_string
    - mail_user_var_expand_params
    - e_error
    - var_expand
    - event_add_int
    linkageType: ''
    returnType: char
    signature: char *client_stats(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:588,1
    - Dst: event_unref
      Src: /src/dovecot/src/pop3/pop3-client.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 590
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 53
    functionsReached:
    - struct client*::v::destroy
    - event_unref
    linkageType: ''
    returnType: void
    signature: void client_destroy(struct client *client, const char *reason)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/pop3-client.c:594,1
    - Dst: client_update_mails
      Src: /src/dovecot/src/pop3/pop3-client.c:599,1
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/pop3/pop3-client.c:603,1
    - Dst: e_info
      Src: /src/dovecot/src/pop3/pop3-client.c:606,1
    - Dst: client_stats
      Src: /src/dovecot/src/pop3/pop3-client.c:607,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/pop3/pop3-client.c:612,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/pop3/pop3-client.c:613,1
    - Dst: struct client*::cmd
      Src: /src/dovecot/src/pop3/pop3-client.c:614,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/pop3-client.c:615,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/pop3/pop3-client.c:622,1
    - Dst: array_is_created
      Src: /src/dovecot/src/pop3/pop3-client.c:624,1
    - Dst: array_free
      Src: /src/dovecot/src/pop3/pop3-client.c:625,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/pop3/pop3-client.c:627,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/pop3/pop3-client.c:629,1
    - Dst: mail_user_get_anvil_session
      Src: /src/dovecot/src/pop3/pop3-client.c:632,1
    - Dst: master_service_anvil_disconnect
      Src: /src/dovecot/src/pop3/pop3-client.c:633,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/pop3/pop3-client.c:638,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/pop3/pop3-client.c:639,1
    - Dst: pool_unref
      Src: /src/dovecot/src/pop3/pop3-client.c:641,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-client.c:642,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-client.c:643,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-client.c:644,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3/pop3-client.c:645,1
    - Dst: io_remove
      Src: /src/dovecot/src/pop3/pop3-client.c:647,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/pop3/pop3-client.c:648,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/pop3/pop3-client.c:649,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:651,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:652,1
    - Dst: shutdown
      Src: /src/dovecot/src/pop3/pop3-client.c:655,1
    - Dst: fd_close_maybe_stdio
      Src: /src/dovecot/src/pop3/pop3-client.c:656,1
    - Dst: pop3_refresh_proctitle
      Src: /src/dovecot/src/pop3/pop3-client.c:663,1
    - Dst: mail_user_autoexpunge
      Src: /src/dovecot/src/pop3/pop3-client.c:664,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/pop3/pop3-client.c:665,1
    - Dst: settings_free
      Src: /src/dovecot/src/pop3/pop3-client.c:666,1
    - Dst: settings_free
      Src: /src/dovecot/src/pop3/pop3-client.c:667,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/pop3/pop3-client.c:670,1
    - Dst: pool_unref
      Src: /src/dovecot/src/pop3/pop3-client.c:671,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/pop3/pop3-client.c:673,1
    - Dst: pop3_refresh_proctitle
      Src: /src/dovecot/src/pop3/pop3-client.c:674,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 56
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 675
    functionName: client_default_destroy
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - mail_user_deinit
    - io_stream_get_disconnect_reason
    - io_remove
    - client_update_mails
    - pool_unref
    - DLLIST_REMOVE
    - master_service_anvil_disconnect
    - master_service_client_connection_destroyed
    - mailbox_free
    - pop3_refresh_proctitle
    - array_free
    - i_stream_destroy
    - shutdown
    - mail_user_autoexpunge
    - o_stream_close
    - struct client*::cmd
    - mailbox_transaction_commit
    - i_assert
    - i_free
    - o_stream_destroy
    - file_dotlock_delete
    - e_info
    - client_stats
    - mail_user_get_anvil_session
    - mailbox_keywords_unref
    - settings_free
    - fd_close_maybe_stdio
    - array_is_created
    - i_stream_close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_default_destroy(struct client *client, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 680
    functionName: client_destroy_timeout
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void client_destroy_timeout(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/pop3/pop3-client.c:688,1
    - Dst: client_stats
      Src: /src/dovecot/src/pop3/pop3-client.c:688,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/pop3/pop3-client.c:690,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/pop3/pop3-client.c:692,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/pop3/pop3-client.c:693,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/pop3/pop3-client.c:695,1
    - Dst: timeout_add
      Src: /src/dovecot/src/pop3/pop3-client.c:696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 697
    functionName: client_disconnect
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 24
    functionsReached:
    - e_info
    - client_stats
    - o_stream_close
    - timeout_add
    - o_stream_flush
    - i_stream_close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_disconnect(struct client *client, const char *reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/pop3/pop3-client.c:707,1
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3/pop3-client.c:712,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/pop3/pop3-client.c:713,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3/pop3-client.c:714,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/pop3/pop3-client.c:716,1
    - Dst: str_data
      Src: /src/dovecot/src/pop3/pop3-client.c:717,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3/pop3-client.c:717,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3/pop3-client.c:718,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3/pop3-client.c:718,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - client
    - fmt
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 699
    functionDepth: 1
    functionLinenumber: 699
    functionLinenumberEnd: 719
    functionName: client_send_line
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 67
    functionsReached:
    - t_str_new
    - str_data
    - va_start
    - str_len
    - str_vprintfa
    - o_stream_send
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void client_send_line(struct client *client, const char *fmt, ...)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_inconsistent
      Src: /src/dovecot/src/pop3/pop3-client.c:741,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:742,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/pop3/pop3-client.c:744,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/pop3/pop3-client.c:748,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:753,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:756,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 759
    functionName: client_send_storage_error
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 4
    functionsReached:
    - mailbox_is_inconsistent
    - client_send_line
    - mailbox_get_last_error
    - client_disconnect
    linkageType: ''
    returnType: void
    signature: void client_send_storage_error(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_sanitize
      Src: /src/dovecot/src/pop3/pop3-client.c:764,1
    - Dst: event_set_name
      Src: /src/dovecot/src/pop3/pop3-client.c:767,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/pop3/pop3-client.c:769,1
    - Dst: event_add_str
      Src: /src/dovecot/src/pop3/pop3-client.c:772,1
    - Dst: event_add_str
      Src: /src/dovecot/src/pop3/pop3-client.c:773,1
    - Dst: event_add_str
      Src: /src/dovecot/src/pop3/pop3-client.c:774,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/pop3/pop3-client.c:775,1
    - Dst: event_add_str
      Src: /src/dovecot/src/pop3/pop3-client.c:777,1
    - Dst: event_add_str
      Src: /src/dovecot/src/pop3/pop3-client.c:779,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/pop3/pop3-client.c:781,1
    - Dst: event_add_int
      Src: /src/dovecot/src/pop3/pop3-client.c:785,1
    - Dst: event_add_int
      Src: /src/dovecot/src/pop3/pop3-client.c:786,1
    - Dst: e_debug
      Src: /src/dovecot/src/pop3/pop3-client.c:788,1
    - Dst: event_unref
      Src: /src/dovecot/src/pop3/pop3-client.c:789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - cctx
    - result
    argTypes:
    - struct pop3_command_context*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 790
    functionName: pop3_cmd_event_finished
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - i_stream_get_absolute_offset
    - event_unref
    - event_set_name
    - e_debug
    - str_sanitize
    - event_add_str
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void pop3_cmd_event_finished(struct pop3_command_context *cctx, int
      result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/pop3/pop3-client.c:795,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/pop3/pop3-client.c:797,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/pop3/pop3-client.c:799,1
    - Dst: event_create
      Src: /src/dovecot/src/pop3/pop3-client.c:802,1
    - Dst: strchr
      Src: /src/dovecot/src/pop3/pop3-client.c:809,1
    - Dst: pop3_command_find
      Src: /src/dovecot/src/pop3/pop3-client.c:813,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:818,1
    - Dst: event_reason_code_prefix
      Src: /src/dovecot/src/pop3/pop3-client.c:822,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/pop3/pop3-client.c:825,1
    - Dst: client_command_execute
      Src: /src/dovecot/src/pop3/pop3-client.c:826,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/pop3/pop3-client.c:827,1
    - Dst: pop3_cmd_event_finished
      Src: /src/dovecot/src/pop3/pop3-client.c:830,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/pop3/pop3-client.c:834,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:840,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/pop3/pop3-client.c:841,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/pop3/pop3-client.c:843,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 792
    functionDepth: 2
    functionLinenumber: 792
    functionLinenumberEnd: 844
    functionName: client_handle_input
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 10
    functionsReached:
    - strchr
    - event_create
    - i_stream_get_absolute_offset
    - pop3_command_find
    - i_stream_next_line
    - o_stream_cork
    - event_reason_code_prefix
    - event_reason_begin
    - client_disconnect
    - event_reason_end
    - client_send_line
    - o_stream_set_flush_pending
    - client_command_execute
    - pop3_cmd_event_finished
    linkageType: ''
    returnType: bool
    signature: bool client_handle_input(struct client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/pop3/pop3-client.c:859,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/pop3/pop3-client.c:866,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/pop3/pop3-client.c:868,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/pop3/pop3-client.c:870,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:873,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:877,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:878,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/pop3/pop3-client.c:882,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 883
    functionName: client_input
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 2
    functionsReached:
    - client_destroy
    - io_remove
    - timeout_reset
    - client_send_line
    - i_stream_read
    - client_handle_input
    linkageType: ''
    returnType: void
    signature: void client_input(struct client *client)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/pop3/pop3-client.c:887,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:888,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/pop3/pop3-client.c:893,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/pop3/pop3-client.c:895,1
    - Dst: struct client*::cmd
      Src: /src/dovecot/src/pop3/pop3-client.c:898,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/pop3/pop3-client.c:901,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/pop3/pop3-client.c:905,1
    - Dst: client_handle_input
      Src: /src/dovecot/src/pop3/pop3-client.c:909,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 925
    functionName: client_output
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 4
    functionsReached:
    - io_add_istream
    - client_destroy
    - struct client*::cmd
    - timeout_reset
    - o_stream_get_buffer_used_size
    - o_stream_flush
    - client_handle_input
    linkageType: ''
    returnType: int
    signature: int client_output(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/pop3/pop3-client.c:929,1
    - Dst: client_send_line
      Src: /src/dovecot/src/pop3/pop3-client.c:931,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3/pop3-client.c:934,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - shutdown
    argTypes:
    - struct client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 927
    functionDepth: 1
    functionLinenumber: 927
    functionLinenumberEnd: 936
    functionName: client_kick
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 5
    functionsReached:
    - client_destroy
    - client_send_line
    - mail_storage_service_io_activate_user
    linkageType: ''
    returnType: void
    signature: void client_kick(struct client *client, bool shutdown)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_user_kicked
      Src: /src/dovecot/src/pop3/pop3-client.c:940,1
    - Dst: client_kick
      Src: /src/dovecot/src/pop3/pop3-client.c:942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 943
    functionName: clients_destroy_all
    functionSourceFile: /src/dovecot/src/pop3/pop3-client.c
    functionUses: 4
    functionsReached:
    - master_service_is_user_kicked
    - client_kick
    linkageType: ''
    returnType: void
    signature: void clients_destroy_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:97,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: test_server_connection_refused
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - i_sleep_intr_secs
    linkageType: ''
    returnType: void
    signature: void test_server_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:108,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 112
    functionName: test_client_connection_refused
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - test_client_auth_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:118,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:119,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:120,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 123
    functionName: test_connection_refused
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    - test_expect_error_string
    linkageType: ''
    returnType: void
    signature: void test_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:133,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: test_connection_timed_out_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 141
    functionName: test_server_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:151,1
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:154,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:155,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:157,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 160
    functionName: test_client_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - io_loop_time_refresh
    - test_client_auth_simple
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:166,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:167,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:168,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 171
    functionName: test_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    - test_expect_error_string
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: test_bad_version_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_bad_version_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 195
    functionName: test_bad_version_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_bad_version_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 202
    functionName: test_server_bad_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:211,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: test_client_bad_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - test_client_auth_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_bad_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:220,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:221,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:222,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 225
    functionName: test_bad_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    - test_expect_error_string
    linkageType: ''
    returnType: void
    signature: void test_bad_version(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:237,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:240,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 244
    functionName: test_disconnect_version_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 257
    functionName: test_disconnect_version_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 264
    functionName: test_server_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_disconnect_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:273,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 276
    functionName: test_client_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - test_client_auth_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_disconnect_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:282,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:283,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:284,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 287
    functionName: test_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_expect_errors
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:336,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:343,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:347,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:348,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:350,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:352,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:355,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:355,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:356,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:358,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:361,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:363,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:365,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 4
    argNames:
    - conn
    - id
    - data
    - data_size
    argTypes:
    - struct server_connection*
    - unsigned int
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 368
    functionName: test_auth_handshake_auth_plain
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_error
    - t_strdup_printf
    - t_strndup
    - o_stream_nsend_str
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool test_auth_handshake_auth_plain(struct server_connection *conn,
      unsigned int id,\n\t\t\t       const unsigned char *data, size_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:382,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:387,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:389,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:391,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:392,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:392,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:393,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:395,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - conn
    - id
    - ATTR_UNUSED
    - data_size
    argTypes:
    - struct server_connection*
    - unsigned int
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 397
    functionName: test_auth_handshake_auth_login
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - p_new
    - i_error
    - strlen
    - t_strdup_printf
    - base64_encode
    - DLLIST_PREPEND
    - o_stream_nsend_str
    linkageType: ''
    returnType: bool
    signature: "bool test_auth_handshake_auth_login(struct server_connection *conn,
      unsigned int id,\n\t\t\t       const unsigned char *data ATTR_UNUSED,\n\t\t\t
      \      size_t data_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:407,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:411,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:412,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:413,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:415,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:420,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:421,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:422,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:423,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:425,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:429,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:431,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:435,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:436,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:436,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:437,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:438,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - conn
    - req
    - data
    - data_size
    argTypes:
    - struct server_connection*
    - struct _auth_handshake_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 441
    functionName: test_auth_handshake_cont_login
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - p_strdup
    - t_str_new
    - strlen
    - t_strdup_printf
    - t_strndup
    - base64_encode
    - o_stream_nsend_str
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: bool
    signature: "bool test_auth_handshake_cont_login(struct server_connection *conn,\n\t\t\t
      \      struct _auth_handshake_request *req,\n\t\t\t       const unsigned char
      *data, size_t data_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:453,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:459,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:462,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:464,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:464,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:465,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:470,1
    - Dst: test_auth_handshake_auth_plain
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:471,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:473,1
    - Dst: test_auth_handshake_auth_login
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:474,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:477,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - conn
    - id
    - args
    argTypes:
    - struct server_connection*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 444
    functionDepth: 2
    functionLinenumber: 444
    functionLinenumberEnd: 479
    functionName: test_auth_handshake_auth
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - i_error
    - base64_decode
    - str_begins
    - strlen
    - t_buffer_create
    - strcasecmp
    - test_auth_handshake_auth_plain
    - test_auth_handshake_auth_login
    linkageType: ''
    returnType: bool
    signature: "bool test_auth_handshake_auth(struct server_connection *conn, unsigned
      int id,\n\t\t\t const char *const *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:492,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:496,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:498,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:498,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:499,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:512,1
    - Dst: test_auth_handshake_cont_login
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:516,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - conn
    - id
    - args
    argTypes:
    - struct server_connection*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 518
    functionName: test_auth_handshake_cont
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_auth_handshake_cont_login
    - i_error
    - base64_decode
    - strlen
    - t_buffer_create
    linkageType: ''
    returnType: bool
    signature: "bool test_auth_handshake_cont(struct server_connection *conn, unsigned
      int id,\n\t\t\t const char *const *args)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:529,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:532,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:538,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:539,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:540,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:546,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:548,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:549,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:552,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:553,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:554,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:558,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:560,1
    - Dst: test_auth_handshake_auth
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:561,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:564,1
    - Dst: test_auth_handshake_cont
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:565,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:569,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:570,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:573,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:576,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 49
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 520
    functionDepth: 3
    functionLinenumber: 520
    functionLinenumberEnd: 578
    functionName: test_auth_handshake_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_auth_handshake_cont
    - str_begins_with
    - i_error
    - i_unreached
    - t_strsplit_tabescaped
    - i_stream_read_next_line
    - test_auth_handshake_auth
    - server_connection_deinit
    - str_to_uint
    linkageType: ''
    returnType: void
    signature: void test_auth_handshake_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:584,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 596
    functionName: test_auth_handshake_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_auth_handshake_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 603
    functionName: test_server_auth_handshake
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_auth_handshake(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:612,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:614,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:615,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 618
    functionName: test_client_auth_plain_disconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - strstr
    - test_client_auth_simple
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_plain_disconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:625,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:627,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:628,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:628,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 631
    functionName: test_client_auth_plain_reconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - strstr
    - test_client_auth_simple
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_plain_reconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:638,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:639,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:640,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 643
    functionName: test_client_auth_plain_failure
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - strstr
    - test_client_auth_simple
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_plain_failure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:650,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:651,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 655
    functionName: test_client_auth_plain_success
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_auth_simple
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_plain_success(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:662,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:663,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:664,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 667
    functionName: test_client_auth_login_failure1
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - strstr
    - test_client_auth_simple
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_login_failure1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:674,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:676,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:677,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:677,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 680
    functionName: test_client_auth_login_failure2
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - strstr
    - test_client_auth_simple
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_login_failure2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:687,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:688,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 692
    functionName: test_client_auth_login_success
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_auth_simple
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_login_success(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_parallel
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:699,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:701,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:702,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 705
    functionName: test_client_auth_plain_parallel_failure
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - strstr
    - test_client_auth_parallel
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_plain_parallel_failure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_parallel
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:712,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:714,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 718
    functionName: test_client_auth_plain_parallel_success
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_auth_parallel
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_plain_parallel_success(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_parallel
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:725,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:727,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:728,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 731
    functionName: test_client_auth_login_parallel_failure1
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - strstr
    - test_client_auth_parallel
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_login_parallel_failure1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_parallel
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:738,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:740,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:741,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 744
    functionName: test_client_auth_login_parallel_failure2
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - strstr
    - test_client_auth_parallel
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_login_parallel_failure2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_parallel
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:751,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:753,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 757
    functionName: test_client_auth_login_parallel_success
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_auth_parallel
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_auth_login_parallel_success(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:763,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:764,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:765,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:767,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:769,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:770,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:771,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:773,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:775,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:776,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:778,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:780,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:781,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:783,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:785,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:786,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:788,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:790,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:791,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:793,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:795,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:796,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:798,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:800,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:801,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:803,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:805,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:806,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:808,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:810,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:811,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:813,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:815,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:816,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:818,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:820,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:821,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 824
    functionName: test_auth_handshake
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_expect_errors
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_handshake(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 845
    functionDepth: 0
    functionLinenumber: 845
    functionLinenumberEnd: 847
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:879,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:892,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:894,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:895,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:897,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:898,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:899,1
    - Dst: auth_client_request_continue
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:901,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:901,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:908,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:909,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:914,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 5
    argNames:
    - request
    - status
    - data_base64 ATTR_UNUSED
    - ATTR_UNUSED
    - context
    argTypes:
    - struct auth_client_request*
    - enum auth_request_status
    - char*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 867
    functionDepth: 1
    functionLinenumber: 867
    functionLinenumberEnd: 915
    functionName: test_client_auth_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - strlen
    - timeout_reset
    - auth_client_request_continue
    - base64_encode
    - i_strdup
    - io_loop_stop
    - test_assert
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_auth_callback(struct auth_client_request *request,\n\t\t\t
      \ enum auth_request_status status,\n\t\t\t  const char *data_base64 ATTR_UNUSED,\n\t\t\t
      \ const char *const *args ATTR_UNUSED, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:924,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:927,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:928,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:931,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - connected
    - context
    argTypes:
    - struct auth_client*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 932
    functionName: test_client_auth_connected
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - io_loop_stop
    - i_assert
    - timeout_reset
    linkageType: ''
    returnType: void
    signature: "void test_client_auth_connected(struct auth_client *client ATTR_UNUSED,\n\t\t\t
      \  bool connected, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:937,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:938,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 934
    functionDepth: 1
    functionLinenumber: 934
    functionLinenumberEnd: 940
    functionName: test_client_progress_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_progress_timeout(void *context ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:953,1
    - Dst: auth_client_set_connect_timeout
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:958,1
    - Dst: auth_client_connect
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:959,1
    - Dst: auth_client_is_disconnected
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:960,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:961,1
    - Dst: auth_client_set_connect_notify
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:964,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:966,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:970,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:972,1
    - Dst: auth_client_request_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:975,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:979,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:980,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:984,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:986,1
    - Dst: auth_client_set_connect_notify
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:987,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 7
    argNames:
    - auth_client
    - ioloop
    - info
    - username
    - password
    - concurrency
    - error_r
    argTypes:
    - struct auth_client*
    - struct ioloop*
    - struct auth_request_info*
    - char*
    - char*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 942
    functionDepth: 1
    functionLinenumber: 942
    functionLinenumberEnd: 990
    functionName: test_client_auth_run
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - io_loop_run
    - t_new
    - auth_client_set_connect_timeout
    - auth_client_is_disconnected
    - i_strdup
    - io_loop_is_running
    - io_loop_set_running
    - auth_client_set_connect_notify
    - t_strdup
    - auth_client_request_new
    - i_free
    - auth_client_connect
    linkageType: ''
    returnType: int
    signature: "int test_client_auth_run(struct auth_client *auth_client, struct ioloop
      *ioloop,\n\t\t     struct auth_request_info *info,\n\t\t     const char *username,
      const char *password,\n\t\t     unsigned int concurrency, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1002,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1008,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1010,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1012,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1014,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1017,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1020,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1021,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1022,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1023,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1024,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1025,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1027,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1028,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1028,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1028,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1029,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1030,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1033,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1036,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1037,1
    - Dst: auth_client_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1040,1
    - Dst: test_client_auth_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1041,1
    - Dst: test_client_auth_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1045,1
    - Dst: auth_client_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1049,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1051,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1052,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 6
    argNames:
    - mech
    - username
    - password
    - concurrency
    - retry
    - error_r
    argTypes:
    - char*
    - char*
    - char*
    - unsigned int
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 992
    functionDepth: 2
    functionLinenumber: 992
    functionLinenumberEnd: 1055
    functionName: test_client_auth_parallel
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 5
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - net_addr2ip
    - str_append_c
    - auth_client_init
    - str_data
    - str_len
    - i_unreached
    - test_client_auth_run
    - timeout_add
    - strcasecmp
    - io_loop_create
    - io_loop_destroy
    - base64_encode
    - auth_client_deinit
    - str_append
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: "int test_client_auth_parallel(const char *mech, const char *username,\n\t\t\t
      \ const char *password, unsigned int concurrency,\n\t\t\t  bool retry, const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_auth_parallel
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - mech
    - username
    - password
    - retry
    - error_r
    argTypes:
    - char*
    - char*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1057
    functionDepth: 3
    functionLinenumber: 1057
    functionLinenumberEnd: 1063
    functionName: test_client_auth_simple
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 11
    functionsReached:
    - test_client_auth_parallel
    linkageType: ''
    returnType: int
    signature: "int test_client_auth_simple(const char *mech, const char *username,\n\t\t\tconst
      char *password, bool retry, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_input
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1071
    functionDepth: 0
    functionLinenumber: 1071
    functionLinenumberEnd: 1076
    functionName: server_connection_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_server_input
    linkageType: ''
    returnType: void
    signature: void server_connection_input(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1083,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1085,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1086,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1089,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1093,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1078
    functionDepth: 1
    functionLinenumber: 1078
    functionLinenumberEnd: 1094
    functionName: server_connection_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - test_server_init
    - pool_alloconly_create
    - p_new
    - connection_init_server
    - net_set_nonblock
    linkageType: ''
    returnType: void
    signature: void server_connection_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1103,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1105,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1096
    functionDepth: 1
    functionLinenumber: 1096
    functionLinenumberEnd: 1107
    functionName: server_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 4
    functionsReached:
    - connection_deinit
    - test_server_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void server_connection_deinit(struct server_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1114
    functionName: server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void server_connection_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1121,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1123,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1124,1
    - Dst: server_connection_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1116
    functionDepth: 1
    functionLinenumber: 1116
    functionLinenumberEnd: 1129
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - server_connection_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1147,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1149,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1152,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1155,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1144
    functionDepth: 1
    functionLinenumber: 1144
    functionLinenumberEnd: 1158
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 4
    functionsReached:
    - connection_list_init
    - io_add
    - io_remove
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_run(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1167,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1168,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1170,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1174
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 1
    functionsReached:
    - i_debug
    - i_fatal
    - net_listen_unix
    - i_unlink_if_exists
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1178,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1180,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1183,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1185,1
    - Dst: server_test
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1186,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1187,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1190,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - server_test
    argTypes:
    - test_server_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1176
    functionDepth: 1
    functionLinenumber: 1176
    functionLinenumberEnd: 1194
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - server_test
    - i_close_fd
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - main_deinit
    - i_debug
    linkageType: ''
    returnType: int
    signature: int test_run_server(test_server_init_t *server_test)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1198,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1201,1
    - Dst: i_sleep_intr_msecs
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1203,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1205,1
    - Dst: client_test
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1206,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1207,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1208,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1209,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - client_test
    argTypes:
    - test_client_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1196
    functionDepth: 1
    functionLinenumber: 1196
    functionLinenumberEnd: 1213
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 1
    functionsReached:
    - test_client_deinit
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - client_test
    - i_debug
    - io_loop_run
    - i_sleep_intr_msecs
    linkageType: ''
    returnType: void
    signature: void test_run_client(test_client_init_t *client_test)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1221,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1222,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1223,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1227,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1229,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - client_test
    - server_test
    argTypes:
    - test_client_init_t*
    - test_server_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1231
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 17
    functionsReached:
    - test_subprocess_fork
    - i_close_fd
    - test_subprocess_kill_all
    - test_open_server_fd
    - test_run_client
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(test_client_init_t *client_test,\n\t\t
      \      test_server_init_t *server_test)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1237
    functionDepth: 0
    functionLinenumber: 1237
    functionLinenumberEnd: 1240
    functionName: main_cleanup
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - i_unlink_if_exists
    linkageType: ''
    returnType: void
    signature: void main_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1242
    functionDepth: 0
    functionLinenumber: 1242
    functionLinenumberEnd: 1245
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1247
    functionDepth: 0
    functionLinenumber: 1247
    functionLinenumberEnd: 1250
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1257,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1258,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1260,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1266,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1270,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1271,1
    - Dst: test_set_cleanup_callback
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1272,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1273,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1275,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1277,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-client.c:1278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1280
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-client.c
    functionUses: 0
    functionsReached:
    - main_init
    - event_set_forced_debug
    - getopt
    - lib_init
    - lib_deinit
    - test_set_cleanup_callback
    - i_fatal
    - test_run
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pool
    - str
    argTypes:
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 10
    functionName: maybe_strdup
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-proxy.c
    functionUses: 0
    functionsReached:
    - p_strdup
    linkageType: ''
    returnType: char
    signature: char *maybe_strdup(pool_t pool, const char *str)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:16,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:18,1
    - Dst: maybe_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:23,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:24,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:25,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:29,1
    - Dst: net_str2port
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:30,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:34,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:36,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:38,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:41,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:43,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:45,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:49,1
    - Dst: maybe_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:50,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:51,1
    - Dst: maybe_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:54,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:55,1
    - Dst: maybe_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:56,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:57,1
    - Dst: maybe_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:58,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:59,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:61,1
    - Dst: str_parse_get_interval_msecs
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:63,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:67,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:69,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:71,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:73,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 65
    argCount: 5
    argNames:
    - set
    - pool
    - key
    - value
    - error_r
    argTypes:
    - struct auth_proxy_settings*
    - pool_t
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 78
    functionName: auth_proxy_settings_parse
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-proxy.c
    functionUses: 2
    functionsReached:
    - strcmp
    - maybe_strdup
    - net_addr2ip
    - str_parse_get_interval_msecs
    - str_to_uint
    - net_str2port
    linkageType: ''
    returnType: int
    signature: "int auth_proxy_settings_parse(struct auth_proxy_settings *set, pool_t
      pool,\n\t\t\t      const char *key, const char *value,\n\t\t\t      const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:85,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:89,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib-auth-client/auth-proxy.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - target
    - destuser_r
    - host_r
    - port_r
    argTypes:
    - char*
    - char**
    - char**
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 97
    functionName: auth_proxy_parse_redirect
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-proxy.c
    functionUses: 0
    functionsReached:
    - t_strdup_until
    - net_str2hostport
    - strrchr
    linkageType: ''
    returnType: bool
    signature: "bool auth_proxy_parse_redirect(const char *target, const char **destuser_r,\n\t\t\t
      \      const char **host_r, in_port_t *port_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - conn
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: auth_master_request_invalid
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auth_master_request_invalid(conn, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:17,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:18,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct auth_master_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 20
    functionName: auth_master_request_update_event
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - t_strdup_printf
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void auth_master_request_update_event(struct auth_master_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:28,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct auth_master_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 32
    functionName: auth_master_request_get_timeout_msecs
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - timeval_add_msecs
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int auth_master_request_get_timeout_msecs(struct auth_master_request
      *req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:42,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:45,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:45,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:48,1
    - Dst: auth_master_connection_update_timeout
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:51,1
    - Dst: auth_master_check_idle
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:52,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:55,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct auth_master_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 58
    functionName: auth_master_request_remove
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - e_debug
    - hash_table_remove
    - auth_master_check_idle
    - auth_master_connection_update_timeout
    - DLLIST2_REMOVE
    - io_loop_stop
    - i_assert
    linkageType: ''
    returnType: void
    signature: void auth_master_request_remove(struct auth_master_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct auth_master_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: auth_master_request_ref
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_master_request_ref(struct auth_master_request *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:75,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:79,1
    - Dst: auth_master_request_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:81,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:83,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:84,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:86,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:89,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct auth_master_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 92
    functionName: auth_master_request_unref
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - auth_master_request_remove
    - event_unref
    - e_debug
    - array_foreach
    - pool_unref
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: bool
    signature: bool auth_master_request_unref(struct auth_master_request **_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:97,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:98,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:99,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:100,1
    - Dst: auth_master_request_update_event
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - req
    - event
    argTypes:
    - struct auth_master_request*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 103
    functionName: auth_master_request_set_event
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_create
    - event_unref
    - auth_master_request_update_event
    - HAS_ALL_BITS
    linkageType: ''
    returnType: void
    signature: "void auth_master_request_set_event(struct auth_master_request *req,\n\t\t\t\t
      \  struct event *event)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:121,1
    - Dst: auth_master_request_ref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:133,1
    - Dst: callback
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:135,1
    - Dst: auth_master_request_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - req
    - mreply
    argTypes:
    - struct auth_master_request*
    - struct auth_master_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 147
    functionName: auth_master_request_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - auth_master_request_unref
    - i_assert
    - auth_master_request_ref
    - callback
    linkageType: ''
    returnType: int
    signature: "int auth_master_request_callback(struct auth_master_request *req,\n\t\t\t
      \    const struct auth_master_reply *mreply)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:158,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:163,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:164,1
    - Dst: auth_master_request_callback
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:175,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:176,1
    - Dst: auth_master_request_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:181,1
    - Dst: auth_master_request_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - _req
    - reply
    - args
    argTypes:
    - struct auth_master_request**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 185
    functionName: auth_master_request_got_reply
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - auth_master_request_remove
    - auth_master_request_unref
    - e_debug
    - t_strarray_join
    - auth_master_request_callback
    - io_loop_stop
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int auth_master_request_got_reply(struct auth_master_request **_req,\n\t\t\t\t
      \ const char *reply, const char *const *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:202,1
    - Dst: auth_master_request_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:204,1
    - Dst: auth_master_request_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct auth_master_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 206
    functionName: auth_master_request_abort
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - auth_master_request_remove
    - auth_master_request_unref
    linkageType: ''
    returnType: void
    signature: void auth_master_request_abort(struct auth_master_request **_req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:223,1
    - Dst: auth_master_request_callback
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:224,1
    - Dst: auth_master_request_abort
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - _req
    - reason
    argTypes:
    - struct auth_master_request**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 208
    functionDepth: 4
    functionLinenumber: 208
    functionLinenumberEnd: 227
    functionName: auth_master_request_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - auth_master_request_abort
    - auth_master_request_callback
    linkageType: ''
    returnType: void
    signature: "void auth_master_request_fail(struct auth_master_request **_req,\n\t\t\t
      \     const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:236,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:242,1
    - Dst: auth_master_request_callback
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:243,1
    - Dst: auth_master_request_abort
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct auth_master_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 229
    functionDepth: 4
    functionLinenumber: 229
    functionLinenumberEnd: 246
    functionName: auth_master_request_abort_invalid
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - auth_master_request_abort
    - auth_master_request_callback
    linkageType: ''
    returnType: void
    signature: void auth_master_request_abort_invalid(struct auth_master_request **_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dec2str
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:251,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:254,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:257,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:259,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:264,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:266,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:270,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:270,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct auth_master_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 274
    functionName: auth_master_request_send
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - dec2str
    - POINTER_CAST
    - e_debug
    - strlen
    - o_stream_nsendv
    - hash_table_insert
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void auth_master_request_send(struct auth_master_request *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:283,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:284,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:296,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:297,1
    - Dst: auth_master_request_update_event
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:298,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:303,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 3
    argNames:
    - conn
    - callback
    - context
    argTypes:
    - struct auth_master_connection*
    - auth_master_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 311
    functionName: auth_master_request_new
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - DLLIST2_APPEND
    - auth_master_request_update_event
    - e_debug
    - event_drop_parent_log_prefixes
    linkageType: ''
    returnType: struct auth_master_request
    signature: "struct auth_master_request *\nauth_master_request_new(struct auth_master_connection
      *conn,\n\t\t\tauth_master_request_callback_t *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_request_new
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:321,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:322,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:324,1
    - Dst: auth_master_handle_requests
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:327,1
    - Dst: auth_master_connection_start_timeout
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:328,1
    - Dst: auth_master_stop_idle
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - conn
    - cmd
    - args
    - args_size
    - callback
    - context
    argTypes:
    - struct auth_master_connection*
    - char*
    - unsigned char*
    - size_t
    - auth_master_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 331
    functionName: auth_master_request
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - auth_master_connection_start_timeout
    - auth_master_request_new
    - auth_master_handle_requests
    - auth_master_stop_idle
    - p_memdup
    linkageType: ''
    returnType: struct auth_master_request
    signature: "struct auth_master_request *\nauth_master_request(struct auth_master_connection
      *conn, const char *cmd,\n\t\t    const unsigned char *args, size_t args_size,\n\t\t
      \   auth_master_request_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_request_new
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:341,1
    - Dst: auth_master_handle_invalid_requests
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - conn
    - callback
    - context
    argTypes:
    - struct auth_master_connection*
    - auth_master_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 346
    functionName: auth_master_request_invalid
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - auth_master_request_new
    - auth_master_handle_invalid_requests
    linkageType: ''
    returnType: struct auth_master_request
    signature: "struct auth_master_request *\nauth_master_request_invalid(struct auth_master_connection
      *conn,\n\t\t\t    auth_master_request_callback_t *callback,\n\t\t\t    void
      *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_killed
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:352,1
    - Dst: auth_master_request_abort
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:353,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct auth_master_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 348
    functionDepth: 4
    functionLinenumber: 348
    functionLinenumberEnd: 356
    functionName: auth_master_request_stop
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - auth_master_request_abort
    - master_service_is_killed
    linkageType: ''
    returnType: void
    signature: void auth_master_request_stop(struct auth_master_request *req)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:369,1
    - Dst: auth_master_request_count
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:369,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:371,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:376,1
    - Dst: auth_master_switch_ioloop_to
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:377,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:380,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:381,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:383,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:384,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:389,1
    - Dst: io_loop_have_ios
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:389,1
    - Dst: io_loop_have_immediate_timeouts
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:390,1
    - Dst: auth_master_request_ref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:392,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:395,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:402,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:407,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:409,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:412,1
    - Dst: auth_master_request_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:415,1
    - Dst: auth_master_switch_ioloop_to
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:417,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:418,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct auth_master_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 358
    functionDepth: 3
    functionLinenumber: 358
    functionLinenumberEnd: 423
    functionName: auth_master_request_wait
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - auth_master_request_unref
    - io_loop_have_immediate_timeouts
    - o_stream_uncork
    - e_debug
    - timeout_add_short
    - i_stream_set_input_pending
    - o_stream_cork
    - io_loop_destroy
    - io_loop_create
    - o_stream_is_corked
    - io_loop_have_ios
    - auth_master_request_ref
    - auth_master_switch_ioloop_to
    - auth_master_request_count
    - i_assert
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: bool
    signature: bool auth_master_request_wait(struct auth_master_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: auth_master_request_count
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int auth_master_request_count(struct auth_master_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:437,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:438,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - req
    - callback
    - context
    argTypes:
    - struct auth_master_request*
    - auth_master_request_destroy_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 442
    functionName: auth_master_request_add_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void auth_master_request_add_destroy_callback(\n\tstruct auth_master_request
      *req,\n\tauth_master_request_destroy_callback_t *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:451,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:454,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/auth-master-request.c:458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - req
    - callback
    argTypes:
    - struct auth_master_request*
    - auth_master_request_destroy_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 459
    functionName: auth_master_request_remove_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master-request.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void auth_master_request_remove_destroy_callback(\n\tstruct auth_master_request
      *req,\n\tauth_master_request_destroy_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - conn
    - ','
    - cmd
    - ','
    - args
    - ','
    - args_size
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: auth_master_request
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auth_master_request(conn, cmd, args, args_size, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - stream
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: auth_master_request_add_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auth_master_request_add_destroy_callback(stream, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - conn
    - ','
    - user
    - ','
    - info
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 132
    functionName: auth_master_pass_lookup_async
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auth_master_pass_lookup_async(conn, user, info, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - conn
    - ','
    - user
    - ','
    - info
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 171
    functionName: auth_master_user_lookup_async
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auth_master_user_lookup_async(conn, user, info, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:105,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:112,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:113,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:114,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:115,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:115,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:121,1
    - Dst: auth_user_info_export
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:124,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:124,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:125,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:125,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:126,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:126,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:127,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:127,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:128,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:128,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:129,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:129,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:130,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:130,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:131,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:131,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:136,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:137,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:137,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:141,1
    - Dst: auth_user_info_export
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:144,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:144,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:145,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:145,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:146,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:146,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:147,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:147,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:150,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:150,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:150,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:151,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:151,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:152,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:152,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:153,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:153,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:153,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 156
    functionName: test_auth_user_info_export
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - net_addr2ip
    - test_end
    - str_truncate
    - test_assert
    - auth_user_info_export
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_user_info_export(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:166,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: test_server_connection_refused
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - i_sleep_intr_secs
    linkageType: ''
    returnType: void
    signature: void test_server_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:177,1
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:178,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:179,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:181,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:182,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 186
    functionName: test_client_connection_refused
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_client_passdb_lookup_simple
    - test_out_reason
    - test_client_passdb_lookup_simple_async
    - test_expect_error_string
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:192,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:193,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: test_connection_refused
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:206,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 208
    functionName: test_connection_timed_out_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 214
    functionName: test_server_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:224,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:227,1
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:228,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:229,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:231,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:232,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:235,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:236,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:237,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:239,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 242
    functionName: test_client_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - test_expect_error_string
    - test_out
    - io_loop_time_refresh
    - test_client_passdb_lookup_simple
    - test_client_passdb_lookup_simple_async
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:248,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:249,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 252
    functionName: test_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: test_bad_version_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_bad_version_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:267,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 269
    functionName: test_bad_version_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_bad_version_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 276
    functionName: test_server_bad_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:285,1
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:286,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:287,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:289,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:290,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 294
    functionName: test_client_bad_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_client_passdb_lookup_simple
    - test_out_reason
    - test_client_passdb_lookup_simple_async
    - test_expect_error_string
    linkageType: ''
    returnType: bool
    signature: bool test_client_bad_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:300,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:301,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 304
    functionName: test_bad_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_version(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:316,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:319,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 323
    functionName: test_disconnect_version_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:327,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 329
    functionName: test_disconnect_version_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 336
    functionName: test_server_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_disconnect_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:345,1
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:346,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:347,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:349,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:350,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 354
    functionName: test_client_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_client_passdb_lookup_simple
    - test_out_reason
    - test_client_passdb_lookup_simple_async
    - test_expect_error_string
    linkageType: ''
    returnType: bool
    signature: bool test_client_disconnect_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:360,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:361,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: test_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:392,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:395,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:401,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:402,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:403,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:409,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:410,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:411,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:412,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:413,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:416,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:417,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:418,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:421,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:422,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:425,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:429,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:430,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:433,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 435
    functionName: test_passdb_fail_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_error
    - i_unreached
    - t_strsplit_tabescaped
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_passdb_fail_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:441,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:444,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 446
    functionName: test_passdb_fail_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_passdb_fail_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 453
    functionName: test_server_passdb_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_passdb_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:462,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:463,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:464,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:465,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:467,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:468,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:469,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:470,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 473
    functionName: test_client_passdb_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out
    - test_assert
    - test_client_passdb_lookup_simple
    - test_client_passdb_lookup_simple_async
    linkageType: ''
    returnType: bool
    signature: bool test_client_passdb_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:480,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:481,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:482,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:484,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:485,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 489
    functionName: test_client_passdb_notfound
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_passdb_lookup_simple
    - test_client_passdb_lookup_simple_async
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_passdb_notfound(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:496,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:497,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:498,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:499,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:502,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:503,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:504,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 509
    functionName: test_client_passdb_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - test_out
    - test_assert
    - test_client_passdb_lookup_simple
    - test_client_passdb_lookup_simple_async
    linkageType: ''
    returnType: bool
    signature: bool test_client_passdb_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:516,1
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:517,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:518,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:519,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:520,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:523,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:524,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:525,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:526,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 531
    functionName: test_client_passdb_disconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - test_expect_error_string
    - test_out
    - test_assert
    - test_client_passdb_lookup_simple
    - test_client_passdb_lookup_simple_async
    linkageType: ''
    returnType: bool
    signature: bool test_client_passdb_disconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:538,1
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:539,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:540,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:541,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:542,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:545,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:546,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:547,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:548,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 553
    functionName: test_client_passdb_reconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - test_expect_errors
    - test_out
    - test_assert
    - test_client_passdb_lookup_simple
    - test_client_passdb_lookup_simple_async
    linkageType: ''
    returnType: bool
    signature: bool test_client_passdb_reconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:559,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:560,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:562,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:564,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:565,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:567,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:569,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:570,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:572,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:574,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:575,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:577,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:579,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:580,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 583
    functionName: test_passdb_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_passdb_fail(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:611,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:614,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:620,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:621,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:622,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:628,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:629,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:630,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:631,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:632,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:635,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:636,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:637,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:640,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:641,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:644,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:647,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:648,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:651,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 653
    functionName: test_userdb_fail_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_error
    - i_unreached
    - t_strsplit_tabescaped
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_userdb_fail_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:659,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:662,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 664
    functionName: test_userdb_fail_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_userdb_fail_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 666
    functionDepth: 0
    functionLinenumber: 666
    functionLinenumberEnd: 671
    functionName: test_server_userdb_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_userdb_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_userdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:680,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:681,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:682,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:683,1
    - Dst: test_client_userdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:685,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:686,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:687,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:688,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 691
    functionName: test_client_userdb_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_client_userdb_lookup_simple_async
    - test_out
    - test_assert
    - test_client_userdb_lookup_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_userdb_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_userdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:698,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:699,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:700,1
    - Dst: test_client_userdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:702,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:703,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 707
    functionName: test_client_userdb_notfound
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_userdb_lookup_simple
    - test_assert
    - test_client_userdb_lookup_simple_async
    linkageType: ''
    returnType: bool
    signature: bool test_client_userdb_notfound(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_userdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:714,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:715,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:716,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:717,1
    - Dst: test_client_userdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:720,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:721,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:722,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 727
    functionName: test_client_userdb_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - test_client_userdb_lookup_simple_async
    - test_out
    - test_assert
    - test_client_userdb_lookup_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_userdb_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:734,1
    - Dst: test_client_userdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:735,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:736,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:737,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:738,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:741,1
    - Dst: test_client_userdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:742,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:743,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:744,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:745,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 749
    functionName: test_client_userdb_disconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - test_client_userdb_lookup_simple_async
    - test_expect_error_string
    - test_out
    - test_assert
    - test_client_userdb_lookup_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_userdb_disconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:756,1
    - Dst: test_client_userdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:757,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:758,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:759,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:760,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:763,1
    - Dst: test_client_userdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:764,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:765,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:766,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:767,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 771
    functionName: test_client_userdb_reconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - test_expect_errors
    - test_client_userdb_lookup_simple_async
    - test_out
    - test_assert
    - test_client_userdb_lookup_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_userdb_reconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:777,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:778,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:780,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:782,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:783,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:785,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:787,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:788,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:790,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:792,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:793,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:795,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:797,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:798,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 801
    functionName: test_userdb_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_userdb_fail(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:827,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:830,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:836,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:837,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:838,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:844,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:845,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:846,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:847,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:848,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:851,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:852,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:853,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:856,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 858
    functionName: test_user_list_fail_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_error
    - i_unreached
    - t_strsplit_tabescaped
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_user_list_fail_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:864,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:867,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 869
    functionName: test_user_list_fail_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_user_list_fail_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 871
    functionDepth: 0
    functionLinenumber: 871
    functionLinenumberEnd: 876
    functionName: test_server_user_list_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_user_list_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_user_list_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:884,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 888
    functionName: test_client_user_list_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_user_list_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_user_list_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:894,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:895,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:896,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 899
    functionName: test_user_list_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_expect_errors
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_user_list_fail(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:925,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:928,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:934,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:935,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:936,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:942,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:943,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:944,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:945,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:946,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:949,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:950,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:953,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 955
    functionName: test_passdb_lookup_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_error
    - i_unreached
    - t_strsplit_tabescaped
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_passdb_lookup_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:961,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:964,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:965,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 966
    functionName: test_passdb_lookup_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_passdb_lookup_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 968
    functionDepth: 0
    functionLinenumber: 968
    functionLinenumberEnd: 973
    functionName: test_server_passdb_lookup
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_passdb_lookup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_passdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:982,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:983,1
    - Dst: test_client_passdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:985,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:986,1
    - Dst: test_client_passdb_lookup_parallel
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:989,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 977
    functionDepth: 1
    functionLinenumber: 977
    functionLinenumberEnd: 993
    functionName: test_client_passdb_lookup
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_passdb_lookup_simple
    - test_client_passdb_lookup_simple_async
    - test_client_passdb_lookup_parallel
    linkageType: ''
    returnType: bool
    signature: bool test_client_passdb_lookup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:999,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1000,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 997
    functionDepth: 1
    functionLinenumber: 997
    functionLinenumberEnd: 1003
    functionName: test_passdb_lookup
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_passdb_lookup(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1029,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1032,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1038,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1039,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1040,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1046,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1047,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1048,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1049,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1050,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1053,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1056,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1059,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1061
    functionName: test_userdb_lookup_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_error
    - i_unreached
    - t_strsplit_tabescaped
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_userdb_lookup_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1067,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1070,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1072
    functionName: test_userdb_lookup_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_userdb_lookup_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1079
    functionName: test_server_userdb_lookup
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_userdb_lookup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_userdb_lookup_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1088,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1089,1
    - Dst: test_client_userdb_lookup_simple_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1091,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1092,1
    - Dst: test_client_userdb_lookup_parallel
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1095,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1083
    functionDepth: 1
    functionLinenumber: 1083
    functionLinenumberEnd: 1099
    functionName: test_client_userdb_lookup
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_client_userdb_lookup_parallel
    - test_out
    - test_client_userdb_lookup_simple
    - test_client_userdb_lookup_simple_async
    linkageType: ''
    returnType: bool
    signature: bool test_client_userdb_lookup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1105,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1106,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1109
    functionName: test_userdb_lookup
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_userdb_lookup(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1136,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1139,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1145,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1146,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1147,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1153,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1154,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1155,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1156,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1157,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1160,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1161,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1162,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1163,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1164,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1165,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1166,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1166,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1167,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1170,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1172
    functionName: test_user_list_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_printfa
    - str_begins_with
    - i_error
    - i_unreached
    - t_strsplit_tabescaped
    - i_stream_read_next_line
    - server_connection_deinit
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_user_list_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1178,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1181,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1174
    functionDepth: 1
    functionLinenumber: 1174
    functionLinenumberEnd: 1183
    functionName: test_user_list_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_user_list_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1190
    functionName: test_server_user_list
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_user_list(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_user_list_simple
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1198,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1194
    functionDepth: 1
    functionLinenumber: 1194
    functionLinenumberEnd: 1202
    functionName: test_client_user_list
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_user_list_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_user_list(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1208,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1209,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1210,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1206
    functionDepth: 1
    functionLinenumber: 1206
    functionLinenumberEnd: 1213
    functionName: test_user_list
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_expect_errors
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_user_list(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1238
    functionDepth: 0
    functionLinenumber: 1238
    functionLinenumberEnd: 1240
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1253,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1260,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1262,1
    - Dst: auth_master_set_timeout
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1263,1
    - Dst: auth_master_pass_lookup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1264,1
    - Dst: auth_master_pass_lookup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1267,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1270,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1272,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - username
    - retry
    - error_r
    argTypes:
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1242
    functionDepth: 1
    functionLinenumber: 1242
    functionLinenumberEnd: 1276
    functionName: test_client_passdb_lookup_simple
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 10
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - auth_master_init
    - auth_master_set_timeout
    - auth_master_deinit
    - auth_master_pass_lookup
    - pool_unref
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int test_client_passdb_lookup_simple(const char *username, bool retry,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_pass_lookup_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1298,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1304,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - result
    - fields
    argTypes:
    - struct _passdb_lookup_context*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1293
    functionDepth: 1
    functionLinenumber: 1293
    functionLinenumberEnd: 1306
    functionName: test_client_passdb_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_pass_lookup_async
    - io_loop_stop
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void test_client_passdb_lookup_callback(struct _passdb_lookup_context
      *ctx,\n\t\t\t\t   int result, const char *const *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1317,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1324,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1326,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1328,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1333,1
    - Dst: auth_master_set_timeout
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1334,1
    - Dst: auth_master_pass_lookup_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1336,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1339,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1341,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1343,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1344,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 3
    argNames:
    - username
    - retry
    - error_r
    argTypes:
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1308
    functionDepth: 1
    functionLinenumber: 1308
    functionLinenumberEnd: 1348
    functionName: test_client_passdb_lookup_simple_async
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 10
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - auth_master_pass_lookup_async
    - auth_master_init
    - auth_master_set_timeout
    - auth_master_deinit
    - io_loop_destroy
    - io_loop_create
    - pool_unref
    - t_strdup
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: "int test_client_passdb_lookup_simple_async(const char *username, bool
      retry,\n\t\t\t\t       const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_pass_lookup_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1381,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1387,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1389,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - uctx
    - result
    - fields
    argTypes:
    - struct _passdb_parallel_user_context*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1374
    functionDepth: 1
    functionLinenumber: 1374
    functionLinenumberEnd: 1392
    functionName: test_client_passdb_parallel_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_pass_lookup_async
    - io_loop_stop
    - i_assert
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void test_client_passdb_parallel_callback(struct _passdb_parallel_user_context
      *uctx,\n\t\t\t\t     int result, const char *const *fields)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1402,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1405,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1412,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1414,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1416,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1421,1
    - Dst: auth_master_set_timeout
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1422,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1424,1
    - Dst: auth_master_pass_lookup_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1433,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1438,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1440,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1451,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1456,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1457,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 3
    argNames:
    - usernames
    - retry
    - error_r
    argTypes:
    - char**
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1394
    functionDepth: 1
    functionLinenumber: 1394
    functionLinenumberEnd: 1460
    functionName: test_client_passdb_lookup_parallel
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 1
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - auth_master_pass_lookup_async
    - p_new
    - auth_master_init
    - auth_master_set_timeout
    - auth_master_deinit
    - str_array_length
    - io_loop_destroy
    - io_loop_create
    - pool_unref
    - t_strdup
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: "int test_client_passdb_lookup_parallel(const char *const *usernames,\n\t\t\t\t
      \  bool retry, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1474,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1481,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1483,1
    - Dst: auth_master_set_timeout
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1484,1
    - Dst: auth_master_user_lookup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1485,1
    - Dst: auth_master_user_lookup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1488,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1491,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1493,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - username
    - retry
    - error_r
    argTypes:
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1462
    functionDepth: 1
    functionLinenumber: 1462
    functionLinenumberEnd: 1497
    functionName: test_client_userdb_lookup_simple
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 6
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - auth_master_user_lookup
    - auth_master_init
    - auth_master_set_timeout
    - auth_master_deinit
    - pool_unref
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int test_client_userdb_lookup_simple(const char *username, bool retry,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_user_lookup_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1521,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1527,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1528,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1529,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - result
    - username
    - fields
    argTypes:
    - struct _userdb_lookup_context*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1515
    functionDepth: 1
    functionLinenumber: 1515
    functionLinenumberEnd: 1530
    functionName: test_client_userdb_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_user_lookup_async
    - io_loop_stop
    - p_strdup
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void test_client_userdb_lookup_callback(struct _userdb_lookup_context
      *ctx,\n\t\t\t\t   int result, const char *username,\n\t\t\t\t   const char *const
      *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1541,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1548,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1550,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1552,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1557,1
    - Dst: auth_master_set_timeout
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1558,1
    - Dst: auth_master_user_lookup_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1560,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1563,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1565,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1567,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1568,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 3
    argNames:
    - username
    - retry
    - error_r
    argTypes:
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1532
    functionDepth: 1
    functionLinenumber: 1532
    functionLinenumberEnd: 1572
    functionName: test_client_userdb_lookup_simple_async
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 6
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - auth_master_init
    - auth_master_set_timeout
    - auth_master_deinit
    - io_loop_destroy
    - io_loop_create
    - pool_unref
    - auth_master_user_lookup_async
    - t_strdup
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: "int test_client_userdb_lookup_simple_async(const char *username, bool
      retry,\n\t\t\t\t       const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_user_lookup_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1607,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1613,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1614,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1616,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1618,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - uctx
    - result
    - username
    - fields
    argTypes:
    - struct _userdb_parallel_user_context*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1619
    functionName: test_client_userdb_parallel_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_strarray_dup
    - auth_master_user_lookup_async
    - io_loop_stop
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_userdb_parallel_callback(struct _userdb_parallel_user_context
      *uctx,\n\t\t\t\t     int result, const char *username,\n\t\t\t\t     const char
      *const *fields)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1629,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1632,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1639,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1641,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1643,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1648,1
    - Dst: auth_master_set_timeout
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1649,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1651,1
    - Dst: auth_master_user_lookup_async
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1660,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1665,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1667,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1678,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1683,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1684,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 3
    argNames:
    - usernames
    - retry
    - error_r
    argTypes:
    - char**
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1621
    functionDepth: 1
    functionLinenumber: 1621
    functionLinenumberEnd: 1687
    functionName: test_client_userdb_lookup_parallel
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 1
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - p_new
    - auth_master_init
    - auth_master_set_timeout
    - auth_master_deinit
    - str_array_length
    - io_loop_destroy
    - io_loop_create
    - pool_unref
    - auth_master_user_lookup_async
    - t_strdup
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: "int test_client_userdb_lookup_parallel(const char *const *usernames,\n\t\t\t\t
      \  bool retry, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1697,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1704,1
    - Dst: auth_master_set_timeout
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1705,1
    - Dst: auth_master_user_list_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1706,1
    - Dst: auth_master_user_list_next
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1707,1
    - Dst: auth_master_user_list_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1708,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1689
    functionDepth: 1
    functionLinenumber: 1689
    functionLinenumberEnd: 1712
    functionName: test_client_user_list_simple
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 2
    functionsReached:
    - i_zero
    - auth_master_init
    - auth_master_set_timeout
    - auth_master_deinit
    - auth_master_user_list_init
    - auth_master_user_list_deinit
    - auth_master_user_list_next
    linkageType: ''
    returnType: int
    signature: int test_client_user_list_simple(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_input
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1720
    functionDepth: 0
    functionLinenumber: 1720
    functionLinenumberEnd: 1725
    functionName: server_connection_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - test_server_input
    linkageType: ''
    returnType: void
    signature: void server_connection_input(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1732,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1734,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1735,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1738,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1727
    functionDepth: 1
    functionLinenumber: 1727
    functionLinenumberEnd: 1743
    functionName: server_connection_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 1
    functionsReached:
    - test_server_init
    - pool_alloconly_create
    - p_new
    - connection_init_server
    - net_set_nonblock
    linkageType: ''
    returnType: void
    signature: void server_connection_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1752,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1754,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1755,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1745
    functionDepth: 1
    functionLinenumber: 1745
    functionLinenumberEnd: 1756
    functionName: server_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 14
    functionsReached:
    - connection_deinit
    - test_server_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void server_connection_deinit(struct server_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1758
    functionDepth: 0
    functionLinenumber: 1758
    functionLinenumberEnd: 1764
    functionName: server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void server_connection_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1771,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1773,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1774,1
    - Dst: server_connection_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1778,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1779
      start: 1766
    functionDepth: 1
    functionLinenumber: 1766
    functionLinenumberEnd: 1779
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - server_connection_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1797,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1800,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1803,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1806,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1794
    functionDepth: 1
    functionLinenumber: 1794
    functionLinenumberEnd: 1809
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 13
    functionsReached:
    - connection_list_init
    - io_add
    - io_remove
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_run(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1818,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1819,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1821,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1823,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1825
      start: 1815
    functionDepth: 1
    functionLinenumber: 1815
    functionLinenumberEnd: 1825
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 2
    functionsReached:
    - i_debug
    - i_fatal
    - net_listen_unix
    - i_unlink_if_exists
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1829,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1831,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1834,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1836,1
    - Dst: server_test
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1837,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1838,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1841,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - server_test
    argTypes:
    - test_server_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1827
    functionDepth: 1
    functionLinenumber: 1827
    functionLinenumberEnd: 1845
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - server_test
    - i_close_fd
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - main_deinit
    - i_debug
    linkageType: ''
    returnType: int
    signature: int test_run_server(test_server_init_t *server_test)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1849,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1852,1
    - Dst: i_sleep_intr_msecs
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1854,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1856,1
    - Dst: client_test
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1857,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1858,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1859,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1860,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1863,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - client_test
    argTypes:
    - test_client_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1847
    functionDepth: 1
    functionLinenumber: 1847
    functionLinenumberEnd: 1864
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 2
    functionsReached:
    - test_client_deinit
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - client_test
    - i_debug
    - io_loop_run
    - i_sleep_intr_msecs
    linkageType: ''
    returnType: void
    signature: void test_run_client(test_client_init_t *client_test)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1870,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1873,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1875,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1878,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1880,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1881,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - client_test
    - server_test
    argTypes:
    - test_client_init_t*
    - test_server_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1866
    functionDepth: 1
    functionLinenumber: 1866
    functionLinenumberEnd: 1882
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 27
    functionsReached:
    - test_subprocess_fork
    - i_close_fd
    - test_subprocess_kill_all
    - test_open_server_fd
    - test_run_client
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(test_client_init_t *client_test,\n\t\t
      \      test_server_init_t *server_test)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1890,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1891
      start: 1888
    functionDepth: 0
    functionLinenumber: 1888
    functionLinenumberEnd: 1891
    functionName: main_cleanup
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - i_unlink_if_exists
    linkageType: ''
    returnType: void
    signature: void main_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1896
      start: 1893
    functionDepth: 0
    functionLinenumber: 1893
    functionLinenumberEnd: 1896
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1901
      start: 1898
    functionDepth: 0
    functionLinenumber: 1898
    functionLinenumberEnd: 1901
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1908,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1909,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1912,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1914,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1920,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1924,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1925,1
    - Dst: test_set_cleanup_callback
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1926,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1927,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1929,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1931,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-auth-client/test-auth-master.c:1932,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1903
    functionDepth: 1
    functionLinenumber: 1903
    functionLinenumberEnd: 1934
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-auth-client/test-auth-master.c
    functionUses: 0
    functionsReached:
    - main_init
    - t_new
    - getopt
    - event_set_forced_debug
    - lib_init
    - lib_deinit
    - test_set_cleanup_callback
    - i_fatal
    - test_run
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:17,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:19,1
    - Dst: auth_client_connection_list_init
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:22,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:24,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:25,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:26,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:27,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:28,1
    - Dst: auth_client_connection_init
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - auth_socket_path
    - client_pid
    - debug
    argTypes:
    - char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 32
    functionName: auth_client_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - event_set_forced_debug
    - event_create
    - event_set_append_log_prefix
    - auth_client_connection_init
    - i_strdup
    - i_new
    - auth_client_connection_list_init
    - event_add_category
    linkageType: ''
    returnType: struct auth_client
    signature: "struct auth_client *\nauth_client_init(const char *auth_socket_path,
      unsigned int client_pid,\n\t\t bool debug)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_deinit
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:43,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:44,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:45,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:46,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:47,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:48,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:49,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct auth_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 51
    functionName: auth_client_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 2
    functionsReached:
    - event_unref
    - auth_client_connection_deinit
    - array_free
    - array_foreach_modifiable
    - i_free
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void auth_client_deinit(struct auth_client **_client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_connect
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: auth_client_connect
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 3
    functionsReached:
    - auth_client_connection_connect
    linkageType: ''
    returnType: void
    signature: void auth_client_connect(struct auth_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - reason
    argTypes:
    - struct auth_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: auth_client_disconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 2
    functionsReached:
    - auth_client_connection_disconnect
    linkageType: ''
    returnType: void
    signature: void auth_client_disconnect(struct auth_client *client, const char
      *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: auth_client_is_connected
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 4
    functionsReached:
    - connection_handshake_received
    linkageType: ''
    returnType: bool
    signature: bool auth_client_is_connected(struct auth_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: auth_client_is_disconnected
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_client_is_disconnected(struct auth_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - msecs
    argTypes:
    - struct auth_client*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: auth_client_set_connect_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void auth_client_set_connect_timeout(struct auth_client *client,\n\t\t\t\t
      \    unsigned int msecs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - client
    - callback
    - context
    argTypes:
    - struct auth_client*
    - auth_connect_notify_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: auth_client_set_connect_notify
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void auth_client_set_connect_notify(struct auth_client *client,\n\t\t\t\t
      \   auth_connect_notify_callback_t *callback,\n\t\t\t\t    void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - mech_count
    argTypes:
    - struct auth_client*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: auth_client_get_available_mechs
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 1
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct auth_mech_desc
    signature: "struct auth_mech_desc *\nauth_client_get_available_mechs(struct auth_client
      *client,\n\t\t\t\tunsigned int *mech_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:102,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - name
    argTypes:
    - struct auth_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 107
    functionName: auth_client_find_mech
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    - array_foreach
    linkageType: ''
    returnType: struct auth_mech_desc
    signature: 'struct auth_mech_desc *

      auth_client_find_mech(struct auth_client *client, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:113,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/lib-auth-client/auth-client.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - client
    - server_pid_r
    - connect_uid_r
    argTypes:
    - struct auth_client*
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 117
    functionName: auth_client_get_connect_id
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client.c
    functionUses: 0
    functionsReached:
    - auth_client_is_connected
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_client_get_connect_id(struct auth_client *client,\n\t\t\t\tunsigned
      int *server_pid_r,\n\t\t\t\tunsigned int *connect_uid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: auth_client_connection_list_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: struct connection_list
    signature: 'struct connection_list *

      auth_client_connection_list_init(void)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:68,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:73,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:74,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:76,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:80,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:82,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:84,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:86,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:88,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:90,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:92,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:94,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:97,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 99
    functionName: auth_server_input_mech
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_zero
    - p_strdup
    - array_push_back
    - e_error
    linkageType: ''
    returnType: int
    signature: "int auth_server_input_mech(struct auth_client_connection *conn,\n\t\t
      \      const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:105,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 111
    functionName: auth_server_input_spid
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int auth_server_input_spid(struct auth_client_connection *conn,\n\t\t
      \      const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:118,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 124
    functionName: auth_server_input_cuid
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int auth_server_input_cuid(struct auth_client_connection *conn,\n\t\t
      \      const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:131,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: auth_server_input_cookie
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - p_strdup
    linkageType: ''
    returnType: int
    signature: "int auth_server_input_cookie(struct auth_client_connection *conn,\n\t\t\t
      const char *const *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:141,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:142,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 152
    functionName: auth_server_input_done
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - array_count
    linkageType: ''
    returnType: int
    signature: int auth_server_input_done(struct auth_client_connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:159,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:163,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:164,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:166,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:167,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:168,1
    - Dst: connection_verify_version
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:174,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:181,1
    - Dst: auth_server_input_mech
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:182,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:183,1
    - Dst: auth_server_input_spid
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:184,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:185,1
    - Dst: auth_server_input_cuid
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:186,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:187,1
    - Dst: auth_server_input_cookie
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:188,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:189,1
    - Dst: auth_server_input_done
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:190,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:193,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 196
    functionName: auth_client_connection_handshake_line
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - t_strsplit_tabescaped
    - auth_server_input_cuid
    - auth_server_input_cookie
    - auth_server_input_mech
    - e_error
    - auth_server_input_done
    - auth_server_input_spid
    - str_to_uint
    - connection_verify_version
    linkageType: ''
    returnType: int
    signature: "int auth_client_connection_handshake_line(struct connection *_conn,\n\t\t\t\t
      \     const char *line)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:201,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:204,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:206,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:208,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:209,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:211,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:213,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:216,1
    - Dst: struct auth_client_connection*::client::connect_notify_callback
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: auth_client_connection_handshake_ready
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - array_append_space
    - i_strdup
    - array_clear
    - struct auth_client_connection*::client::connect_notify_callback
    - array_foreach_modifiable
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_client_connection_handshake_ready(struct connection *_conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:231,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:232,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:237,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:237,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:239,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - conn
    - id_arg
    - server_finished
    - request_r
    argTypes:
    - struct auth_client_connection*
    - char*
    - bool
    - struct auth_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 253
    functionName: auth_server_lookup_request
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_to_uint
    - hash_table_lookup
    - POINTER_CAST
    linkageType: ''
    returnType: int
    signature: "int auth_server_lookup_request(struct auth_client_connection *conn,\n\t\t\t
      \  const char *id_arg, bool server_finished,\n\t\t\t   struct auth_client_request
      **request_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_server_lookup_request
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:262,1
    - Dst: auth_client_request_server_input
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 268
    functionName: auth_server_input_ok
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - auth_client_request_server_input
    - auth_server_lookup_request
    linkageType: ''
    returnType: int
    signature: "int auth_server_input_ok(struct auth_client_connection *conn,\n\t\t
      \    const char *const *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:277,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:278,1
    - Dst: auth_server_lookup_request
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:283,1
    - Dst: auth_client_request_server_input
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: auth_server_input_cont
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - auth_client_request_server_input
    - str_array_length
    - auth_server_lookup_request
    linkageType: ''
    returnType: int
    signature: "int auth_server_input_cont(struct auth_client_connection *conn,\n\t\t
      \      const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_server_lookup_request
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:298,1
    - Dst: auth_client_request_server_input
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 304
    functionName: auth_server_input_fail
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - auth_client_request_server_input
    - auth_server_lookup_request
    linkageType: ''
    returnType: int
    signature: "int auth_server_input_fail(struct auth_client_connection *conn,\n\t\t
      \      const char *const *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:312,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:314,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:316,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:319,1
    - Dst: auth_server_input_ok
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:320,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:321,1
    - Dst: auth_server_input_cont
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:322,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:323,1
    - Dst: auth_server_input_fail
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:324,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:326,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct auth_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 306
    functionDepth: 3
    functionLinenumber: 306
    functionLinenumberEnd: 330
    functionName: auth_client_connection_handle_line
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - e_debug
    - t_strsplit_tabescaped
    - e_error
    - auth_server_input_cont
    - auth_server_input_fail
    - auth_server_input_ok
    linkageType: ''
    returnType: int
    signature: "int auth_client_connection_handle_line(struct auth_client_connection
      *conn,\n\t\t\t\t   const char *line)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:337,1
    - Dst: auth_client_connection_handle_line
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:340,1
    - Dst: auth_client_connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:342,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 332
    functionDepth: 4
    functionLinenumber: 332
    functionLinenumberEnd: 347
    functionName: auth_client_connection_input_line
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - auth_client_connection_disconnect
    - container_of
    - t_strdup_printf
    - auth_client_connection_handle_line
    linkageType: ''
    returnType: int
    signature: "int auth_client_connection_input_line(struct connection *_conn,\n\t\t\t\t
      \ const char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:355,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:356,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:362,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:365,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 368
    functionName: auth_client_connection_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - p_new
    - connection_init_client_unix
    - hash_table_create_direct
    linkageType: ''
    returnType: struct auth_client_connection
    signature: 'struct auth_client_connection *

      auth_client_connection_init(struct auth_client *client)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:384,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:387,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:388,1
    - Dst: auth_client_request_is_aborted
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:389,1
    - Dst: auth_client_request_get_create_time
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:391,1
    - Dst: auth_client_request_server_input
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:396,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:400,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:401,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:404,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - disconnect_reason
    argTypes:
    - struct auth_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 410
    functionName: auth_client_connection_remove_requests
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - auth_client_request_server_input
    - hash_table_iterate
    - auth_client_request_is_aborted
    - hash_table_iterate_init
    - hash_table_clear
    - e_warning
    - auth_client_request_get_create_time
    - hash_table_count
    linkageType: ''
    returnType: void
    signature: "void auth_client_connection_remove_requests(struct auth_client_connection
      *conn,\n\t\t\t\t       const char *disconnect_reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:419,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:426,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:428,1
    - Dst: auth_client_connection_remove_requests
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:430,1
    - Dst: struct auth_client_connection*::client::connect_notify_callback
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct auth_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 412
    functionDepth: 2
    functionLinenumber: 412
    functionLinenumberEnd: 436
    functionName: auth_client_connection_disconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 2
    functionsReached:
    - auth_client_connection_remove_requests
    - connection_disconnect
    - array_clear
    - struct auth_client_connection*::client::connect_notify_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void auth_client_connection_disconnect(struct auth_client_connection
      *conn,\n\t\t\t\t       const char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:441,1
    - Dst: auth_client_connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:445,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:450,1
    - Dst: auth_client_connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:453,1
    - Dst: auth_client_connection_reconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:457,1
    - Dst: strerror
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 438
    functionDepth: 3
    functionLinenumber: 438
    functionLinenumberEnd: 462
    functionName: auth_client_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - auth_client_connection_disconnect
    - container_of
    - strerror
    - e_error
    - auth_client_connection_reconnect
    linkageType: ''
    returnType: void
    signature: void auth_client_connection_destroy(struct connection *_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_connect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 467
    functionName: auth_server_reconnect_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - auth_client_connection_connect
    linkageType: ''
    returnType: void
    signature: void auth_server_reconnect_timeout(struct auth_client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:475,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - disconnect_reason
    argTypes:
    - struct auth_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 469
    functionDepth: 3
    functionLinenumber: 469
    functionLinenumberEnd: 481
    functionName: auth_client_connection_reconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 1
    functionsReached:
    - auth_client_connection_disconnect
    - timeout_add
    linkageType: ''
    returnType: void
    signature: "void auth_client_connection_reconnect(struct auth_client_connection
      *conn,\n\t\t\t\t const char *disconnect_reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:491,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:492,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:492,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:493,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:494,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:495,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:496,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:497,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct auth_client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 483
    functionDepth: 3
    functionLinenumber: 483
    functionLinenumberEnd: 498
    functionName: auth_client_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 1
    functionsReached:
    - connection_deinit
    - auth_client_connection_disconnect
    - pool_unref
    - hash_table_count
    - i_assert
    - array_free
    - hash_table_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_client_connection_deinit(struct auth_client_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:502,1
    - Dst: auth_client_connection_reconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 500
    functionDepth: 4
    functionLinenumber: 500
    functionLinenumberEnd: 507
    functionName: auth_client_handshake_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - auth_client_connection_reconnect
    linkageType: ''
    returnType: void
    signature: void auth_client_handshake_timeout(struct auth_client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:513,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 519
    functionName: auth_client_connection_connected
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void auth_client_connection_connected(struct connection *_conn, bool
      success)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:525,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:528,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:531,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:533,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:534,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:537,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:543,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:547,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:548,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:550,1
    - Dst: auth_client_connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:551,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:552,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:556,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 521
    functionDepth: 3
    functionLinenumber: 521
    functionLinenumberEnd: 559
    functionName: auth_client_connection_connect
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 2
    functionsReached:
    - auth_client_connection_disconnect
    - connection_client_connect
    - o_stream_get_error
    - o_stream_send_str
    - timeout_add
    - t_strdup_printf
    - e_error
    - e_warning
    - eacces_error_get
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int auth_client_connection_connect(struct auth_client_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:567,1
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:567,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:574,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:574,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:574,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:575,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - request
    argTypes:
    - struct auth_client_connection*
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 577
    functionName: auth_client_connection_add_request
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - POINTER_CAST
    - connection_handshake_received
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int auth_client_connection_add_request(struct auth_client_connection
      *conn,\n\t\t\t\t   struct auth_client_request *request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:584,1
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:584,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:585,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-auth-client/auth-client-connection.c:585,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - request
    argTypes:
    - struct auth_client_connection*
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 579
    functionDepth: 1
    functionLinenumber: 579
    functionLinenumberEnd: 587
    functionName: auth_client_connection_remove_request
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - hash_table_remove
    - POINTER_CAST
    - connection_handshake_received
    linkageType: ''
    returnType: void
    signature: "void auth_client_connection_remove_request(struct auth_client_connection
      *conn,\n\t\t\t\t\t   struct auth_client_request *request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:62,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:63,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:67,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:70,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:73,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:74,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:75,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:76,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:77,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:80,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:82,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:84,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - auth_socket_path
    - flags
    argTypes:
    - char*
    - enum auth_master_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 91
    functionName: auth_master_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 7
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - event_create
    - p_new
    - connection_list_init
    - event_set_forced_debug
    - connection_init_client_unix
    - event_unref
    - event_set_append_log_prefix
    - hash_table_create_direct
    - i_rand_limit
    - HAS_ALL_BITS
    - event_add_category
    linkageType: ''
    returnType: struct auth_master_connection
    signature: 'struct auth_master_connection *

      auth_master_init(const char *auth_socket_path, enum auth_master_flags flags)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:103,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:104,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:109,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:110,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:111,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:112,1
    - Dst: auth_master_request_fail
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:119,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:119,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct auth_master_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 93
    functionDepth: 5
    functionLinenumber: 93
    functionLinenumberEnd: 123
    functionName: auth_master_connection_failure
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - hash_table_count
    - e_debug
    - io_loop_stop
    - connection_disconnect
    - auth_master_request_fail
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void auth_master_connection_failure(struct auth_master_connection
      *conn,\n\t\t\t       const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_request_abort
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:133,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:135,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 136
    functionName: auth_master_connection_abort_requests
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - hash_table_count
    - i_assert
    - auth_master_request_abort
    linkageType: ''
    returnType: void
    signature: void auth_master_connection_abort_requests(struct auth_master_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_connection_failure
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 6
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: auth_master_disconnect
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_connection_failure
    linkageType: ''
    returnType: void
    signature: void auth_master_disconnect(struct auth_master_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 147
    functionName: auth_master_ref
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_master_ref(struct auth_master_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:157,1
    - Dst: auth_master_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:161,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:162,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:163,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:164,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct auth_master_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 149
    functionDepth: 7
    functionLinenumber: 149
    functionLinenumberEnd: 166
    functionName: auth_master_unref
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - hash_table_destroy
    - auth_master_disconnect
    - pool_unref
    - i_assert
    - connection_deinit
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void auth_master_unref(struct auth_master_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:174,1
    - Dst: auth_master_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct auth_master_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 168
    functionDepth: 8
    functionLinenumber: 168
    functionLinenumberEnd: 176
    functionName: auth_master_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 7
    functionsReached:
    - auth_master_unref
    - auth_master_disconnect
    linkageType: ''
    returnType: void
    signature: void auth_master_deinit(struct auth_master_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - msecs
    argTypes:
    - struct auth_master_connection*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: auth_master_set_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void auth_master_set_timeout(struct auth_master_connection *conn,\n\t\t\t
      \    unsigned int msecs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: auth_master_get_socket_path
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *auth_master_get_socket_path(struct auth_master_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:192,1
    - Dst: auth_master_connection_failure
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:196,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:200,1
    - Dst: auth_master_connection_failure
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:202,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:206,1
    - Dst: auth_master_connection_failure
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:207,1
    - Dst: auth_master_connection_failure
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:211,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 189
    functionDepth: 6
    functionLinenumber: 189
    functionLinenumberEnd: 213
    functionName: auth_master_destroy
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - e_error
    - container_of
    - auth_master_connection_failure
    linkageType: ''
    returnType: void
    signature: void auth_master_destroy(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:221,1
    - Dst: auth_master_request_get_timeout_msecs
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:225,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:234,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:235,1
    - Dst: auth_master_request_fail
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:238,1
    - Dst: auth_master_connection_update_timeout
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:244,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 215
    functionDepth: 5
    functionLinenumber: 215
    functionLinenumberEnd: 245
    functionName: auth_master_connection_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - auth_master_request_get_timeout_msecs
    - t_strdup_printf
    - auth_master_connection_update_timeout
    - auth_master_request_fail
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_master_connection_timeout(struct auth_master_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:254,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:262,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:266,1
    - Dst: auth_master_request_get_timeout_msecs
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 269
    functionName: auth_master_connection_update_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 2
    functionsReached:
    - timeout_add_to
    - i_assert
    - auth_master_request_get_timeout_msecs
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_master_connection_update_timeout(struct auth_master_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_connection_update_timeout
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 277
    functionName: auth_master_connection_start_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - auth_master_connection_update_timeout
    linkageType: ''
    returnType: void
    signature: void auth_master_connection_start_timeout(struct auth_master_connection
      *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:283,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:287,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:288,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:290,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:291,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:292,1
    - Dst: connection_verify_version
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:298,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:303,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:307,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:308,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:314,1
    - Dst: auth_master_connection_update_timeout
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:315,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 317
    functionName: auth_master_handshake_line
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - str_to_pid
    - t_strsplit_tabescaped
    - auth_master_connection_update_timeout
    - e_error
    - str_to_uint
    - connection_verify_version
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int auth_master_handshake_line(struct connection *_conn, const char
      *line)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:326,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:327,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:333,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:334,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:335,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:339,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:339,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:341,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:347,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:348,1
    - Dst: auth_master_request_got_reply
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:350,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_master_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 319
    functionDepth: 4
    functionLinenumber: 319
    functionLinenumberEnd: 351
    functionName: auth_master_handle_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - POINTER_CAST
    - t_strarray_join
    - e_debug
    - e_error
    - auth_master_request_got_reply
    - str_to_uint
    - hash_table_lookup
    linkageType: ''
    returnType: int
    signature: "int auth_master_handle_input(struct auth_master_connection *conn,\n\t\t\t
      const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:357,1
    - Dst: auth_master_handle_input
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:360,1
    - Dst: auth_master_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - _conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 353
    functionDepth: 7
    functionLinenumber: 353
    functionLinenumberEnd: 366
    functionName: auth_master_input_args
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - container_of
    - auth_master_disconnect
    - auth_master_handle_input
    linkageType: ''
    returnType: int
    signature: int auth_master_input_args(struct connection *_conn, const char *const
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:375,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:376,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:376,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:378,1
    - Dst: auth_master_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 368
    functionDepth: 7
    functionLinenumber: 368
    functionLinenumberEnd: 381
    functionName: auth_master_handle_output_error
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - e_error
    - o_stream_get_name
    - o_stream_get_error
    - auth_master_disconnect
    linkageType: ''
    returnType: void
    signature: void auth_master_handle_output_error(struct auth_master_connection
      *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:388,1
    - Dst: auth_master_handle_output_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:390,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:394,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:397,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:401,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:402,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:408,1
    - Dst: auth_master_request_send
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:411,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:413,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:418,1
    - Dst: auth_master_handle_output_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:419,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 383
    functionDepth: 8
    functionLinenumber: 383
    functionLinenumberEnd: 423
    functionName: auth_master_connection_output
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_request_send
    - e_debug
    - o_stream_cork
    - t_strdup_printf
    - auth_master_handle_output_error
    - o_stream_get_buffer_used_size
    - o_stream_flush
    - o_stream_nsend_str
    - o_stream_uncork_flush
    linkageType: ''
    returnType: int
    signature: int auth_master_connection_output(struct auth_master_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:428,1
    - Dst: auth_master_ref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:432,1
    - Dst: connection_input_line_default
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:434,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:435,1
    - Dst: auth_master_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:438,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 425
    functionDepth: 8
    functionLinenumber: 425
    functionLinenumberEnd: 441
    functionName: auth_master_input_line
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_unref
    - container_of
    - connection_input_line_default
    - auth_master_ref
    - io_loop_is_running
    linkageType: ''
    returnType: int
    signature: int auth_master_input_line(struct connection *_conn, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:446,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:449,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:453,1
    - Dst: auth_master_handle_requests
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 456
    functionName: auth_master_connected
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - o_stream_set_flush_callback
    - auth_master_handle_requests
    linkageType: ''
    returnType: void
    signature: void auth_master_connected(struct connection *_conn, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:460,1
    - Dst: auth_master_connection_failure
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 458
    functionDepth: 6
    functionLinenumber: 458
    functionLinenumberEnd: 462
    functionName: auth_master_connect_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - e_error
    - auth_master_connection_failure
    linkageType: ''
    returnType: void
    signature: void auth_master_connect_timeout(struct auth_master_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:467,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:469,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:470,1
    - Dst: auth_master_connection_failure
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 464
    functionDepth: 6
    functionLinenumber: 464
    functionLinenumberEnd: 473
    functionName: auth_master_delayed_connect_failure
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - auth_master_connection_failure
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_master_delayed_connect_failure(struct auth_master_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:480,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:481,1
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:484,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:485,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:487,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:488,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:491,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:494,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:500,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 503
    functionName: auth_master_connect
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - connection_client_connect
    - e_error
    - connection_switch_ioloop_to
    - eacces_error_get
    - timeout_add_to
    - i_assert
    linkageType: ''
    returnType: int
    signature: int auth_master_connect(struct auth_master_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:511,1
    - Dst: auth_master_connect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:513,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:517,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 505
    functionDepth: 2
    functionLinenumber: 505
    functionLinenumberEnd: 519
    functionName: auth_master_handle_requests
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 2
    functionsReached:
    - e_debug
    - o_stream_set_flush_pending
    - i_assert
    - auth_master_connect
    linkageType: ''
    returnType: void
    signature: void auth_master_handle_requests(struct auth_master_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:526,1
    - Dst: auth_master_request_abort_invalid
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:532,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 521
    functionDepth: 5
    functionLinenumber: 521
    functionLinenumberEnd: 535
    functionName: auth_master_abort_invalid_requests
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_request_abort_invalid
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_master_abort_invalid_requests(struct auth_master_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 545
    functionName: auth_master_handle_invalid_requests
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - timeout_add_to
    linkageType: ''
    returnType: void
    signature: void auth_master_handle_invalid_requests(struct auth_master_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:554,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:558,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:561,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:564,1
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - ioloop
    argTypes:
    - struct auth_master_connection*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 567
    functionName: auth_master_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - connection_switch_ioloop_to
    - io_loop_move_timeout_to
    linkageType: ''
    returnType: void
    signature: "void auth_master_switch_ioloop_to(struct auth_master_connection *conn,\n\t\t\t\t
      \ struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_switch_ioloop_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 569
    functionDepth: 2
    functionLinenumber: 569
    functionLinenumberEnd: 572
    functionName: auth_master_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: void auth_master_switch_ioloop(struct auth_master_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:576,1
    - Dst: auth_master_disconnect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 574
    functionDepth: 7
    functionLinenumber: 574
    functionLinenumberEnd: 578
    functionName: auth_master_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - e_debug
    - auth_master_disconnect
    linkageType: ''
    returnType: void
    signature: void auth_master_idle_timeout(struct auth_master_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:586,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 592
    functionName: auth_master_check_idle
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - timeout_add_to
    - i_assert
    linkageType: ''
    returnType: void
    signature: void auth_master_check_idle(struct auth_master_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 597
    functionName: auth_master_stop_idle
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_master_stop_idle(struct auth_master_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_killed
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:601,1
    - Dst: auth_master_connection_abort_requests
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:602,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 599
    functionDepth: 5
    functionLinenumber: 599
    functionLinenumberEnd: 605
    functionName: auth_master_stop
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - auth_master_connection_abort_requests
    - master_service_is_killed
    linkageType: ''
    returnType: void
    signature: void auth_master_stop(struct auth_master_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:613,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:614,1
    - Dst: auth_master_request_count
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:614,1
    - Dst: auth_master_ref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:616,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:618,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:623,1
    - Dst: auth_master_switch_ioloop_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:624,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:627,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:628,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:630,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:631,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:632,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:637,1
    - Dst: io_loop_have_ios
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:637,1
    - Dst: io_loop_have_immediate_timeouts
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:638,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:641,1
    - Dst: auth_master_request_count
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:644,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:645,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:648,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:651,1
    - Dst: auth_master_switch_ioloop_to
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:653,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:654,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:658,1
    - Dst: auth_master_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:660,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 607
    functionDepth: 8
    functionLinenumber: 607
    functionLinenumberEnd: 661
    functionName: auth_master_wait
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_unref
    - i_stream_get_data_size
    - o_stream_uncork
    - timeout_add_short
    - o_stream_cork
    - io_loop_destroy
    - o_stream_set_flush_pending
    - auth_master_switch_ioloop_to
    - o_stream_is_corked
    - io_loop_run
    - auth_master_request_count
    - io_loop_have_immediate_timeouts
    - auth_master_ref
    - i_assert
    - e_debug
    - i_stream_set_input_pending
    - io_loop_create
    - io_loop_have_ios
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_master_wait(struct auth_master_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 689
    functionName: is_valid_string
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_valid_string(const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:693,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:699,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:700,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:707,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:708,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:710,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:711,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:713,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:713,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:715,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:717,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:720,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:721,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 722
    functionName: args_hide_passwords
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - strchr
    - array_push_back
    - strstr
    - t_array_init
    - t_strdup_until
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - t_strconcat
    - array_append
    linkageType: ''
    returnType: char
    signature: char *const *args_hide_passwords(const char *const *args)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:729,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:730,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:733,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:734,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:737,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:738,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:741,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:741,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:743,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:745,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:745,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:747,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:749,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:750,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:750,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:752,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:753,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:753,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:756,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:759,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:761,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:763,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:764,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:766,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:767,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:769,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:770,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:770,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:772,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:773,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:774,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:775,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 46
    argCount: 2
    argNames:
    - str
    - info
    argTypes:
    - string_t*
    - struct auth_user_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 724
    functionDepth: 1
    functionLinenumber: 724
    functionLinenumberEnd: 778
    functionName: auth_user_info_export
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - str_c
    - str_printfa
    - t_str_new
    - str_append_c
    - array_foreach
    - str_append_tabescaped
    - net_ip2addr
    - str_append
    - array_is_created
    - net_ip_compare
    linkageType: ''
    returnType: void
    signature: void auth_user_info_export(string_t *str, const struct auth_user_info
      *info)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:787,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:788,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:789,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:793,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:795,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:797,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:799,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:801,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:803,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:805,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:807,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:810,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:813,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:816,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 3
    argNames:
    - conn
    - prefix
    - info
    argTypes:
    - struct auth_master_connection*
    - char*
    - struct auth_user_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 821
    functionName: auth_master_user_event_create
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_set_append_log_prefix
    - event_add_ip
    - event_add_str
    - event_drop_parent_log_prefixes
    - event_add_int
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nauth_master_user_event_create(struct auth_master_connection
      *conn,\n\t\t\t      const char *prefix,\n\t\t\t      const struct auth_user_info
      *info)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:827,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:829,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:831,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:833,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:836,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:842,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - lookup
    - reply
    - args
    argTypes:
    - struct auth_master_lookup*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 844
    functionName: parse_reply
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - e_debug
    - e_error
    linkageType: ''
    returnType: int
    signature: "int parse_reply(struct auth_master_lookup *lookup, const char *reply,\n\t
      \   const char *const *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:857,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:859,1
    - Dst: struct auth_master_lookup*::finished
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:861,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:864,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:865,1
    - Dst: parse_reply
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:867,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:870,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:871,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:874,1
    - Dst: args_hide_passwords
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:877,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:878,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:880,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:884,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:886,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:892,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:895,1
    - Dst: struct auth_master_lookup*::finished
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:901,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - reply
    - lookup
    argTypes:
    - struct auth_master_reply*
    - struct auth_master_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 903
    functionName: auth_lookup_reply_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - i_zero
    - parse_reply
    - args_hide_passwords
    - e_debug
    - t_strarray_join
    - str_begins
    - str_array_length
    - struct auth_master_lookup*::finished
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int auth_lookup_reply_callback(const struct auth_master_reply *reply,\n\t\t\t
      \  struct auth_master_lookup *lookup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - result
    - fields
    argTypes:
    - struct auth_master_pass_lookup_ctx*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 931
    functionName: auth_master_pass_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void auth_master_pass_lookup_callback(struct auth_master_pass_lookup_ctx
      *ctx,\n\t\t\t\t int result, const char *const *fields)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_string
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:939,1
    - Dst: is_valid_string
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:939,1
    - Dst: auth_master_connect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:944,1
    - Dst: auth_master_pass_lookup_async
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:954,1
    - Dst: auth_master_request_wait
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:957,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:960,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - conn
    - user
    - info
    - pool
    - fields_r
    argTypes:
    - struct auth_master_connection*
    - char*
    - struct auth_user_info*
    - pool_t
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 933
    functionDepth: 4
    functionLinenumber: 933
    functionLinenumberEnd: 962
    functionName: auth_master_pass_lookup
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 3
    functionsReached:
    - auth_master_pass_lookup_async
    - p_new
    - auth_master_request_wait
    - auth_master_connect
    - is_valid_string
    linkageType: ''
    returnType: int
    signature: "int auth_master_pass_lookup(struct auth_master_connection *conn,\n\t\t\t
      \   const char *user, const struct auth_user_info *info,\n\t\t\t    pool_t pool,
      const char *const **fields_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:967,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:968,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - struct auth_master_pass_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 970
    functionName: auth_master_pass_lookup_destroyed
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - i_free
    - event_unref
    linkageType: ''
    returnType: void
    signature: void auth_master_pass_lookup_destroyed(struct auth_master_pass_lookup
      *lookup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:977,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:981,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:984,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:985,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:985,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:987,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:988,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:988,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:993,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:995,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:995,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:996,1
    - Dst: struct auth_master_pass_lookup*::callback
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:999,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - _lookup
    - result
    - fields
    argTypes:
    - struct auth_master_lookup*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 1000
    functionName: auth_master_pass_lookup_finished
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - container_of
    - e_debug
    - t_strarray_join
    - struct auth_master_pass_lookup*::callback
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void auth_master_pass_lookup_finished(struct auth_master_lookup *_lookup,\n\t\t\t\t
      int result, const char *const *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1014,1
    - Dst: is_valid_string
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1019,1
    - Dst: is_valid_string
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1019,1
    - Dst: auth_master_request_invalid
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1021,1
    - Dst: auth_master_request_add_destroy_callback
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1023,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1030,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1032,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1033,1
    - Dst: auth_user_info_export
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1034,1
    - Dst: auth_master_user_event_create
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1036,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1037,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1038,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1041,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1043,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1043,1
    - Dst: auth_master_request
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1045,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1045,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1045,1
    - Dst: auth_master_request_set_event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1048,1
    - Dst: auth_master_request_add_destroy_callback
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1049,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 5
    argNames:
    - conn
    - user
    - info
    - callback
    - context
    argTypes:
    - struct auth_master_connection*
    - char*
    - struct auth_user_info*
    - auth_master_pass_lookup_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1003
    functionDepth: 3
    functionLinenumber: 1003
    functionLinenumberEnd: 1054
    functionName: auth_master_pass_lookup_async
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 5
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - e_debug
    - auth_master_request_add_destroy_callback
    - t_strdup_printf
    - auth_master_request_set_event
    - i_strdup
    - auth_master_request_invalid
    - struct event_passthrough*::event
    - event_add_str
    - i_new
    - event_create_passthrough
    - auth_master_request
    - str_append
    - auth_master_user_event_create
    - auth_user_info_export
    - is_valid_string
    linkageType: ''
    returnType: struct auth_master_request
    signature: "struct auth_master_request *\nauth_master_pass_lookup_async(struct
      auth_master_connection *conn,\n\t\t\t      const char *user,\n\t\t\t      const
      struct auth_user_info *info,\n\t\t\t      auth_master_pass_lookup_callback_t
      *callback,\n\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1083,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - result
    - username
    - fields
    argTypes:
    - struct auth_master_user_lookup_ctx*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1077
    functionDepth: 1
    functionLinenumber: 1077
    functionLinenumberEnd: 1085
    functionName: auth_master_user_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void auth_master_user_lookup_callback(struct auth_master_user_lookup_ctx
      *ctx,\n\t\t\t\t int result, const char *username,\n\t\t\t\t const char *const
      *fields)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_string
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1094,1
    - Dst: is_valid_string
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1094,1
    - Dst: auth_master_connect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1100,1
    - Dst: auth_master_user_lookup_async
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1110,1
    - Dst: auth_master_request_wait
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1113,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - conn
    - user
    - info
    - pool
    - username_r
    - fields_r
    argTypes:
    - struct auth_master_connection*
    - char*
    - struct auth_user_info*
    - pool_t
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1087
    functionDepth: 4
    functionLinenumber: 1087
    functionLinenumberEnd: 1119
    functionName: auth_master_user_lookup
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 2
    functionsReached:
    - p_new
    - auth_master_request_wait
    - auth_master_user_lookup_async
    - auth_master_connect
    - is_valid_string
    linkageType: ''
    returnType: int
    signature: "int auth_master_user_lookup(struct auth_master_connection *conn,\n\t\t\t
      \   const char *user, const struct auth_user_info *info,\n\t\t\t    pool_t pool,
      const char **username_r,\n\t\t\t    const char *const **fields_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1124,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1125,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - struct auth_master_user_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1127
    functionName: auth_master_user_lookup_destroyed
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - i_free
    - event_unref
    linkageType: ''
    returnType: void
    signature: void auth_master_user_lookup_destroyed(struct auth_master_user_lookup
      *lookup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1134,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1139,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1143,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1144,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1144,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1148,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1149,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1149,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1151,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1152,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1152,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1160,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1162,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1162,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1163,1
    - Dst: struct auth_master_user_lookup*::callback
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - _lookup
    - result
    - fields
    argTypes:
    - struct auth_master_lookup*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1129
    functionDepth: 1
    functionLinenumber: 1129
    functionLinenumberEnd: 1167
    functionName: auth_master_user_lookup_finished
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - container_of
    - e_debug
    - t_strarray_join
    - e_error
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct auth_master_user_lookup*::callback
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void auth_master_user_lookup_finished(struct auth_master_lookup *_lookup,\n\t\t\t\t
      int result, const char *const *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1181,1
    - Dst: is_valid_string
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1186,1
    - Dst: is_valid_string
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1186,1
    - Dst: auth_master_request_invalid
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1188,1
    - Dst: auth_master_request_add_destroy_callback
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1190,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1197,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1199,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1200,1
    - Dst: auth_user_info_export
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1201,1
    - Dst: auth_master_user_event_create
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1203,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1204,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1205,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1208,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1210,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1210,1
    - Dst: auth_master_request
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1212,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1212,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1212,1
    - Dst: auth_master_request_set_event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1215,1
    - Dst: auth_master_request_add_destroy_callback
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 5
    argNames:
    - conn
    - user
    - info
    - callback
    - context
    argTypes:
    - struct auth_master_connection*
    - char*
    - struct auth_user_info*
    - auth_master_user_lookup_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1170
    functionDepth: 3
    functionLinenumber: 1170
    functionLinenumberEnd: 1221
    functionName: auth_master_user_lookup_async
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 5
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - e_debug
    - auth_master_request_add_destroy_callback
    - t_strdup_printf
    - auth_master_request_set_event
    - i_strdup
    - auth_master_request_invalid
    - struct event_passthrough*::event
    - event_add_str
    - i_new
    - event_create_passthrough
    - auth_master_request
    - str_append
    - auth_master_user_event_create
    - auth_user_info_export
    - is_valid_string
    linkageType: ''
    returnType: struct auth_master_request
    signature: "struct auth_master_request *\nauth_master_user_lookup_async(struct
      auth_master_connection *conn,\n\t\t\t      const char *user,\n\t\t\t      const
      struct auth_user_info *info,\n\t\t\t      auth_master_user_lookup_callback_t
      *callback,\n\t\t\t      void *context)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1226,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1229,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1233,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1235,1
    - Dst: str_to_uid
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1236,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1240,1
    - Dst: str_to_gid
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1241,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1245,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1246,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1247,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1248,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1249,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1252,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1253,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - fields
    - pool
    - reply_r
    - error_r
    argTypes:
    - char**
    - pool_t
    - struct auth_user_reply*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1223
    functionDepth: 1
    functionLinenumber: 1223
    functionLinenumberEnd: 1257
    functionName: auth_user_fields_parse
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - i_zero
    - strcmp
    - str_to_gid
    - p_strdup
    - p_array_init
    - array_push_back
    - str_to_uid
    - t_split_key_value_eq
    linkageType: ''
    returnType: int
    signature: "int auth_user_fields_parse(const char *const *fields, pool_t pool,\n\t\t\t
      \  struct auth_user_reply *reply_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1277,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1283,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1284,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1286,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1288,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1289,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1295,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1296,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct auth_master_reply*
    - struct auth_master_user_list_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1304
    functionName: auth_user_list_reply_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_assert
    - strcmp
    - str_append
    linkageType: ''
    returnType: int
    signature: "int auth_user_list_reply_callback(const struct auth_master_reply *reply,\n\t\t\t
      \     struct auth_master_user_list_ctx *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1314,1
    - Dst: auth_master_request_count
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1314,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1316,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1318,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1320,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1322,1
    - Dst: auth_user_info_export
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1324,1
    - Dst: auth_master_user_event_create
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1326,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1327,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1330,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1332,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1332,1
    - Dst: auth_master_request
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1334,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1335,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1335,1
    - Dst: auth_master_request_set_event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1337,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - conn
    - user_mask
    - info
    argTypes:
    - struct auth_master_connection*
    - char*
    - struct auth_user_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1306
    functionDepth: 3
    functionLinenumber: 1306
    functionLinenumberEnd: 1342
    functionName: auth_master_user_list_init
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - t_str_new
    - str_printfa
    - connection_input_halt
    - str_data
    - str_len
    - e_debug
    - auth_master_request_set_event
    - struct event_passthrough*::event
    - event_add_str
    - i_new
    - auth_user_info_export
    - auth_master_request_count
    - event_create_passthrough
    - auth_master_request
    - auth_master_user_event_create
    - i_assert
    - str_new
    linkageType: ''
    returnType: struct auth_master_user_list_ctx
    signature: "struct auth_master_user_list_ctx *\nauth_master_user_list_init(struct
      auth_master_connection *conn,\n\t\t\t   const char *user_mask,\n\t\t\t   const
      struct auth_user_info *info)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1353,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1354,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1358,1
    - Dst: struct auth_master_connection*::conn::v::input_line
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1361,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1366,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1367,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct auth_master_user_list_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1344
    functionDepth: 1
    functionLinenumber: 1344
    functionLinenumberEnd: 1368
    functionName: auth_master_user_do_list_next
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - i_stream_next_line
    - str_truncate
    - i_assert
    - struct auth_master_connection*::conn::v::input_line
    linkageType: ''
    returnType: char
    signature: 'char *

      auth_master_user_do_list_next(struct auth_master_user_list_ctx *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_user_do_list_next
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1387,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct auth_master_user_list_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1383
    functionDepth: 2
    functionLinenumber: 1383
    functionLinenumberEnd: 1393
    functionName: auth_master_user_list_next
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - e_debug
    - auth_master_user_do_list_next
    linkageType: ''
    returnType: char
    signature: char *auth_master_user_list_next(struct auth_master_user_list_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1405,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1407,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1408,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1408,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1411,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1413,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1413,1
    - Dst: auth_master_request_abort
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1416,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1418,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1420,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1421,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct auth_master_user_list_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1395
    functionDepth: 4
    functionLinenumber: 1395
    functionLinenumberEnd: 1424
    functionName: auth_master_user_list_deinit
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 1
    functionsReached:
    - connection_input_resume
    - event_unref
    - e_debug
    - auth_master_request_abort
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_free
    - struct event_passthrough*::add_str
    - str_free
    linkageType: ''
    returnType: int
    signature: int auth_master_user_list_deinit(struct auth_master_user_list_ctx **_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1449,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1450,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1452,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1454,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct auth_master_reply*
    - struct auth_master_cache_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1439
    functionDepth: 1
    functionLinenumber: 1439
    functionLinenumberEnd: 1458
    functionName: auth_cache_flush_reply_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_to_uint
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int auth_cache_flush_reply_callback(const struct auth_master_reply
      *reply,\n\t\t\t\tstruct auth_master_cache_ctx *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_connect
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1467,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1470,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1473,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1476,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1477,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1478,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1482,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1483,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1484,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1486,1
    - Dst: auth_master_request
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1488,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1489,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1489,1
    - Dst: auth_master_request_set_event
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1491,1
    - Dst: auth_master_request_wait
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1492,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1495,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1497,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-master.c:1498,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - conn
    - user_masks
    - count_r
    argTypes:
    - struct auth_master_connection*
    - char**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1460
    functionDepth: 4
    functionLinenumber: 1460
    functionLinenumberEnd: 1502
    functionName: auth_master_cache_flush
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-master.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_str_new
    - event_create
    - str_append_c
    - event_unref
    - str_data
    - str_len
    - e_debug
    - event_set_append_log_prefix
    - auth_master_request_wait
    - str_append_tabescaped
    - auth_master_request
    - auth_master_connect
    - event_drop_parent_log_prefixes
    - auth_master_request_set_event
    linkageType: ''
    returnType: int
    signature: "int auth_master_cache_flush(struct auth_master_connection *conn,\n\t\t\t
      \   const char *const *user_masks, unsigned int *count_r)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:27,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:28,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:29,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:30,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:31,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:33,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:34,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:36,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:38,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:40,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:41,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:43,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:46,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:47,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:50,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:52,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:54,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:57,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:58,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:59,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:62,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:63,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:64,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:68,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:69,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:70,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:74,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:75,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:76,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:80,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:80,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:81,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:84,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:84,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:85,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:88,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:89,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:92,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:93,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:96,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:97,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:98,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:101,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:105,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:109,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:113,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:119,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:120,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:121,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:124,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:125,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:126,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:130,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:133,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:136,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:137,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:138,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:141,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:142,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:145,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:149,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:154,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:155,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:156,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:159,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:160,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:162,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:163,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:165,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:166,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:166,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:168,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:170,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:171,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:172,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:176,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:177,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:179,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:182,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:184,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:184,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:187,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:190,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:192,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:193,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:193,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:194,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 138
    argCount: 3
    argNames:
    - conn
    - request
    - info
    argTypes:
    - struct auth_client_connection*
    - struct auth_client_request*
    - struct auth_request_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 197
    functionName: auth_server_send_new_request
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - str_len
    - timeout_add_short
    - event_add_ip
    - str_append_tabescaped
    - event_create_passthrough
    - event_add_int
    - t_str_new
    - str_append_c
    - net_ip2addr
    - event_add_str
    - str_data
    - e_error
    - struct event_passthrough*::event
    - i_assert
    - net_ip_compare
    - e_debug
    - array_foreach
    - o_stream_send
    - str_append
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void auth_server_send_new_request(struct auth_client_connection *conn,\n\t\t\t
      \    struct auth_client_request *request,\n\t\t\t     const struct auth_request_info
      *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:207,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:208,1
    - Dst: auth_client_connection_add_request
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:218,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:221,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:222,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:223,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:224,1
    - Dst: auth_server_send_new_request
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - client
    - request_info
    - callback
    - context
    argTypes:
    - struct auth_client*
    - struct auth_request_info*
    - auth_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 230
    functionName: auth_client_request_new
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 3
    functionsReached:
    - auth_client_connection_add_request
    - pool_alloconly_create
    - event_create
    - p_new
    - event_set_append_log_prefix
    - t_strdup_printf
    - auth_server_send_new_request
    - event_add_int
    linkageType: ''
    returnType: struct auth_client_request
    signature: "struct auth_client_request *\nauth_client_request_new(struct auth_client
      *client,\n\t\t\tconst struct auth_request_info *request_info,\n\t\t\tauth_request_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - request
    - callback
    - context
    argTypes:
    - struct auth_client_request*
    - auth_channel_binding_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: auth_client_request_enable_channel_binding
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void auth_client_request_enable_channel_binding(\n\tstruct auth_client_request
      *request,\n\tauth_channel_binding_callback_t *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - request
    - status
    - data_base64
    - args
    argTypes:
    - struct auth_client_request*
    - enum auth_request_status
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 253
    functionName: call_callback
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 4
    functionsReached:
    - callback
    linkageType: ''
    returnType: void
    signature: "void call_callback(struct auth_client_request *request,\n\t      enum
      auth_request_status status,\n\t      const char *data_base64,\n\t      const
      char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:260,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:263,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:265,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:266,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:266,1
    - Dst: call_callback
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:268,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 270
    functionName: auth_client_request_fail_conn_lost
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - timeout_add_short
    - call_callback
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct event_passthrough*::add_str
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_client_request_fail_conn_lost(struct auth_client_request
      *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_remove_request
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:278,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:280,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:281,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:282,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _request
    argTypes:
    - struct auth_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 284
    functionName: auth_client_request_free
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 0
    functionsReached:
    - auth_client_connection_remove_request
    - event_unref
    - pool_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_client_request_free(struct auth_client_request **_request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:294,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:296,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:297,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:297,1
    - Dst: auth_client_send_cancel
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:299,1
    - Dst: call_callback
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:300,1
    - Dst: auth_client_request_free
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - _request
    - reason
    argTypes:
    - struct auth_client_request**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 302
    functionName: auth_client_request_abort
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 2
    functionsReached:
    - e_debug
    - call_callback
    - struct event_passthrough*::event
    - event_create_passthrough
    - auth_client_request_free
    - auth_client_send_cancel
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void auth_client_request_abort(struct auth_client_request **_request,\n\t\t\t
      \      const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 334
    functionName: auth_client_request_get_id
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int auth_client_request_get_id(struct auth_client_request
      *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 340
    functionName: auth_client_request_get_server_pid
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int auth_client_request_get_server_pid(struct auth_client_request
      *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 345
    functionName: auth_client_request_get_cookie
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *auth_client_request_get_cookie(struct auth_client_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: auth_client_request_is_aborted
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_client_request_is_aborted(struct auth_client_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 355
    functionName: auth_client_request_get_create_time
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t auth_client_request_get_create_time(struct auth_client_request
      *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:361,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:362,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:363,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:364,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:365,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:366,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - request
    - key
    - value
    argTypes:
    - struct auth_client_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 367
    functionName: args_parse_user
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 1
    functionsReached:
    - strcmp
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void args_parse_user(struct auth_client_request *request, const char
      *key,\n\t\tconst char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:371,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:372,1
    - Dst: auth_client_request_handle_input
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: auth_client_request_final
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    - auth_client_request_handle_input
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_client_request_final(struct auth_client_request *request)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:384,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:390,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:396,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:400,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:402,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:403,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:407,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:415,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:418,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:423,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:425,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:425,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:427,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:428,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - request
    - data_base64
    argTypes:
    - struct auth_client_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 433
    functionName: auth_client_request_continue
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 2
    functionsReached:
    - str_c
    - e_debug
    - timeout_add_short
    - strlen
    - o_stream_sendv
    - t_strdup_printf
    - e_error
    - struct event_passthrough*::event
    - event_create_passthrough
    - t_base64_encode
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void auth_client_request_continue(struct auth_client_request *request,\n
      \                                 const char *data_base64)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_request_is_aborted
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:446,1
    - Dst: auth_client_request_free
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:448,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:454,1
    - Dst: auth_client_request_fail
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:466,1
    - Dst: struct auth_client_request*::cbinding_callback
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:471,1
    - Dst: auth_client_request_fail
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:474,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:476,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:481,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:483,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:488,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:492,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:498,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:499,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:500,1
    - Dst: args_parse_user
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:502,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:509,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:509,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:524,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:524,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:525,1
    - Dst: auth_client_request_continue
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:526,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:530,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:530,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:532,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:532,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:535,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:536,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:536,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:539,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:540,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:540,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:543,1
    - Dst: call_callback
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:546,1
    - Dst: auth_client_request_free
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:548,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 67
    argCount: 5
    argNames:
    - _request
    - status
    - base64_data
    - args
    - final
    argTypes:
    - struct auth_client_request**
    - enum auth_request_status
    - char*
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 435
    functionDepth: 3
    functionLinenumber: 435
    functionLinenumberEnd: 549
    functionName: auth_client_request_handle_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 1
    functionsReached:
    - buffer_create_dynamic
    - t_strdup_printf
    - event_create_passthrough
    - t_split_key_value_eq
    - i_unreached
    - auth_client_request_continue
    - struct auth_client_request*::cbinding_callback
    - event_add_str
    - buffer_append_buf
    - call_callback
    - struct event_passthrough*::event
    - i_assert
    - struct event_passthrough*::add_str
    - auth_client_request_is_aborted
    - str_begins
    - e_debug
    - args_parse_user
    - auth_client_request_free
    - auth_client_request_fail
    linkageType: ''
    returnType: void
    signature: "void auth_client_request_handle_input(struct auth_client_request **_request,\n\t\t\t\t
      enum auth_request_status status,\n\t\t\t\t const char *base64_data,\n\t\t\t\t
      const char *const *args, bool final)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_request_is_aborted
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:559,1
    - Dst: auth_client_request_free
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:561,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:572,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:573,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:578,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:582,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:589,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:596,1
    - Dst: auth_client_request_handle_input
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:599,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 3
    argNames:
    - _request
    - status
    - args
    argTypes:
    - struct auth_client_request**
    - enum auth_request_status
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 551
    functionDepth: 4
    functionLinenumber: 551
    functionLinenumberEnd: 601
    functionName: auth_client_request_server_input
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 4
    functionsReached:
    - strcmp
    - auth_client_request_handle_input
    - auth_client_request_is_aborted
    - p_strarray_dup
    - i_unreached
    - t_split_key_value_eq
    - auth_client_request_free
    - HAS_ALL_BITS
    linkageType: ''
    returnType: void
    signature: "void auth_client_request_server_input(struct auth_client_request **_request,\n\t\t\t\t
      \     enum auth_request_status status,\n\t\t\t\t      const char *const *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:606,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:611,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:613,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-auth-client/auth-client-request.c:614,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - client
    - id
    argTypes:
    - struct auth_client*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 617
    functionName: auth_client_send_cancel
    functionSourceFile: /src/dovecot/src/lib-auth-client/auth-client-request.c
    functionUses: 4
    functionsReached:
    - e_error
    - o_stream_send_str
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void auth_client_send_cancel(struct auth_client *client, unsigned int
      id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-test/test-subprocess.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: test_subprocess_signal
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_subprocess_signal(const siginfo_t *si ATTR_UNUSED,\n\t\t
      \      void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-test/test-subprocess.c:39,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-test/test-subprocess.c:41,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-subprocess.c:42,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-test/test-subprocess.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 44
    functionName: test_subprocess_free_all
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - i_free
    - array_free
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void test_subprocess_free_all(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_forked_end
      Src: /src/dovecot/src/lib-test/test-subprocess.c:53,1
    - Dst: hostpid_init
      Src: /src/dovecot/src/lib-test/test-subprocess.c:55,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib-test/test-subprocess.c:57,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib-test/test-subprocess.c:58,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-subprocess.c:60,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-subprocess.c:63,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-subprocess.c:66,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-subprocess.c:69,1
    - Dst: func
      Src: /src/dovecot/src/lib-test/test-subprocess.c:72,1
    - Dst: lib_signals_clear_handlers_and_ignore
      Src: /src/dovecot/src/lib-test/test-subprocess.c:75,1
    - Dst: test_forked_deinit
      Src: /src/dovecot/src/lib-test/test-subprocess.c:77,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib-test/test-subprocess.c:78,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-test/test-subprocess.c:81,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib-test/test-subprocess.c:82,1
    - Dst: ATTR_NORETURN::test_exit
      Src: /src/dovecot/src/lib-test/test-subprocess.c:84,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-test/test-subprocess.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - context
    - continue_test
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 85
    functionName: ATTR_NORETURN::test_subprocess_child
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - lib_signals_clear_handlers_and_ignore
    - test_forked_end
    - lib_deinit
    - test_forked_deinit
    - lib_exit
    - lib_signals_set_handler
    - lib_signals_init
    - test_has_failed
    - func
    - ATTR_NORETURN::test_exit
    - hostpid_init
    - lib_signals_deinit
    linkageType: ''
    returnType: void
    signature: "void ATTR_NORETURN\ntest_subprocess_child(int (*func)(void *context),
      void *context,\n\t\t      bool continue_test)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-test/test-subprocess.c:93,1
    - Dst: lib_signals_ioloop_detach
      Src: /src/dovecot/src/lib-test/test-subprocess.c:95,1
    - Dst: fork
      Src: /src/dovecot/src/lib-test/test-subprocess.c:100,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-test/test-subprocess.c:101,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-subprocess.c:105,1
    - Dst: io_loop_recreate
      Src: /src/dovecot/src/lib-test/test-subprocess.c:106,1
    - Dst: test_subprocess_free_all
      Src: /src/dovecot/src/lib-test/test-subprocess.c:109,1
    - Dst: test_subprocess_child
      Src: /src/dovecot/src/lib-test/test-subprocess.c:111,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-test/test-subprocess.c:112,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-test/test-subprocess.c:116,1
    - Dst: lib_signals_ioloop_attach
      Src: /src/dovecot/src/lib-test/test-subprocess.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - context
    - continue_test
    argTypes:
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 119
    functionName: test_subprocess_fork
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 4
    functionsReached:
    - fork
    - i_unreached
    - array_push_back
    - i_fatal
    - lib_signals_ioloop_detach
    - test_subprocess_child
    - lib_signals_ioloop_attach
    - test_subprocess_free_all
    - i_new
    - io_loop_recreate
    - i_free
    linkageType: ''
    returnType: pid_t
    signature: "pid_t test_subprocess_fork(int (*func)(void *context), void *context,\n\t\t\t
      \  bool continue_test)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-test/test-subprocess.c:123,1
    - Dst: WIFEXITED
      Src: /src/dovecot/src/lib-test/test-subprocess.c:124,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/lib-test/test-subprocess.c:124,1
    - Dst: WIFEXITED
      Src: /src/dovecot/src/lib-test/test-subprocess.c:125,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/lib-test/test-subprocess.c:126,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-test/test-subprocess.c:127,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/lib-test/test-subprocess.c:129,1
    - Dst: WIFSIGNALED
      Src: /src/dovecot/src/lib-test/test-subprocess.c:131,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-test/test-subprocess.c:132,1
    - Dst: WTERMSIG
      Src: /src/dovecot/src/lib-test/test-subprocess.c:134,1
    - Dst: WIFSTOPPED
      Src: /src/dovecot/src/lib-test/test-subprocess.c:135,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-test/test-subprocess.c:136,1
    - Dst: WSTOPSIG
      Src: /src/dovecot/src/lib-test/test-subprocess.c:138,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-test/test-subprocess.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 144
    functionName: test_subprocess_verify_exit_status
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - WIFEXITED
    - WEXITSTATUS
    - WIFSTOPPED
    - WSTOPSIG
    - WIFSIGNALED
    - WTERMSIG
    - test_out_quiet
    - e_warning
    linkageType: ''
    returnType: void
    signature: void test_subprocess_verify_exit_status(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:148,1
    - Dst: kill
      Src: /src/dovecot/src/lib-test/test-subprocess.c:149,1
    - Dst: waitpid
      Src: /src/dovecot/src/lib-test/test-subprocess.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - subp
    argTypes:
    - struct test_subprocess*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: test_subprocess_kill_forced
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - waitpid
    - i_assert
    - kill
    linkageType: ''
    returnType: void
    signature: void test_subprocess_kill_forced(struct test_subprocess *subp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-test/test-subprocess.c:162,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-test/test-subprocess.c:175,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-test/test-subprocess.c:179,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-test/test-subprocess.c:187,1
    - Dst: waitpid
      Src: /src/dovecot/src/lib-test/test-subprocess.c:188,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-test/test-subprocess.c:189,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:191,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:192,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-test/test-subprocess.c:195,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:205,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-subprocess.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:209,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-test/test-subprocess.c:212,1
    - Dst: test_subprocess_verify_exit_status
      Src: /src/dovecot/src/lib-test/test-subprocess.c:217,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-test/test-subprocess.c:221,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-subprocess.c:223,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 53
    argCount: 2
    argNames:
    - timeout_secs
    - subps_left_r
    argTypes:
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 229
    functionName: test_subprocess_wait_for_children
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - array_get_modifiable
    - e_debug
    - alarm
    - e_warning
    - test_assert
    - i_assert
    - i_free
    - waitpid
    - test_subprocess_verify_exit_status
    linkageType: ''
    returnType: void
    signature: "void test_subprocess_wait_for_children(unsigned int timeout_secs,\n\t\t\t\t
      \ unsigned int *subps_left_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_subprocess_wait_for_children
      Src: /src/dovecot/src/lib-test/test-subprocess.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timeout_secs
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: test_subprocess_wait_all
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - test_subprocess_wait_for_children
    linkageType: ''
    returnType: void
    signature: void test_subprocess_wait_all(unsigned int timeout_secs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-test/test-subprocess.c:243,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-test/test-subprocess.c:250,1
    - Dst: kill
      Src: /src/dovecot/src/lib-test/test-subprocess.c:252,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-test/test-subprocess.c:253,1
    - Dst: test_subprocess_wait_for_children
      Src: /src/dovecot/src/lib-test/test-subprocess.c:260,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-test/test-subprocess.c:266,1
    - Dst: test_subprocess_kill_forced
      Src: /src/dovecot/src/lib-test/test-subprocess.c:267,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:268,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-subprocess.c:269,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:272,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-test/test-subprocess.c:274,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - timeout_secs
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 238
    functionDepth: 3
    functionLinenumber: 238
    functionLinenumberEnd: 275
    functionName: test_subprocess_kill_all
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 4
    functionsReached:
    - test_subprocess_wait_for_children
    - array_get_modifiable
    - e_debug
    - e_error
    - e_warning
    - kill
    - array_clear
    - test_subprocess_kill_forced
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void test_subprocess_kill_all(unsigned int timeout_secs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-test/test-subprocess.c:282,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-test/test-subprocess.c:289,1
    - Dst: test_subprocess_kill_forced
      Src: /src/dovecot/src/lib-test/test-subprocess.c:297,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 300
    functionName: test_subprocess_kill_all_forced
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_is_created
    - test_subprocess_kill_forced
    linkageType: ''
    returnType: void
    signature: void test_subprocess_kill_all_forced(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: test_subprocess_is_child
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool test_subprocess_is_child(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_subprocess_kill_all_forced
      Src: /src/dovecot/src/lib-test/test-subprocess.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 321
    functionName: test_subprocess_cleanup
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - test_subprocess_kill_all_forced
    linkageType: ''
    returnType: void
    signature: void test_subprocess_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 332
    functionName: test_subprocess_alarm
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void test_subprocess_alarm(const siginfo_t *si ATTR_UNUSED,\n\t\t
      \     void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/dovecot/src/lib-test/test-subprocess.c:336,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-test/test-subprocess.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - signo
    - pid
    argTypes:
    - int
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 338
    functionName: test_subprocess_notify_signal_send
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - kill
    linkageType: ''
    returnType: void
    signature: void test_subprocess_notify_signal_send(int signo, pid_t pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_subprocess_notify_signal_send
      Src: /src/dovecot/src/lib-test/test-subprocess.c:342,1
    - Dst: getppid
      Src: /src/dovecot/src/lib-test/test-subprocess.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: test_subprocess_notify_signal_send_parent
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - test_subprocess_notify_signal_send
    - getppid
    linkageType: ''
    returnType: void
    signature: void test_subprocess_notify_signal_send_parent(int signo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-test/test-subprocess.c:348,1
    - Dst: test_subprocess_notify_signal_send
      Src: /src/dovecot/src/lib-test/test-subprocess.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 350
    functionName: test_subprocess_notify_signal_all
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - test_subprocess_notify_signal_send
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void test_subprocess_notify_signal_all(int signo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:354,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-test/test-subprocess.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 357
    functionName: test_subprocess_notify_signal_reset
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_subprocess_notify_signal_reset(int signo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-test/test-subprocess.c:366,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-test/test-subprocess.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - signo
    - timeout_msecs
    argTypes:
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 369
    functionName: test_subprocess_notify_signal_wait
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - i_sleep_msecs
    linkageType: ''
    returnType: void
    signature: void test_subprocess_notify_signal_wait(int signo, unsigned int timeout_msecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-subprocess.c:377,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-test/test-subprocess.c:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - si
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 380
    functionName: test_subprocess_notification_signal
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void test_subprocess_notification_signal(const siginfo_t *si,\n\t\t\t\t
      \   void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_init
      Src: /src/dovecot/src/lib-test/test-subprocess.c:384,1
    - Dst: test_init_signals
      Src: /src/dovecot/src/lib-test/test-subprocess.c:385,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-subprocess.c:386,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-subprocess.c:388,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-subprocess.c:390,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-test/test-subprocess.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 393
    functionName: test_subprocesses_init
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 4
    functionsReached:
    - i_array_init
    - test_init_signals
    - test_init
    - lib_signals_set_handler
    linkageType: ''
    returnType: void
    signature: void test_subprocesses_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_subprocess_cleanup
      Src: /src/dovecot/src/lib-test/test-subprocess.c:397,1
    - Dst: test_subprocess_free_all
      Src: /src/dovecot/src/lib-test/test-subprocess.c:398,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-test/test-subprocess.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 4
    functionLinenumber: 395
    functionLinenumberEnd: 400
    functionName: test_subprocesses_deinit
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.c
    functionUses: 0
    functionsReached:
    - array_free
    - test_subprocess_free_all
    - test_subprocess_cleanup
    linkageType: ''
    returnType: void
    signature: void test_subprocesses_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-dir.c:20,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-test/test-dir.c:22,1
    - Dst: test_init_signals
      Src: /src/dovecot/src/lib-test/test-dir.c:23,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib-test/test-dir.c:25,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-test/test-dir.c:27,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-test/test-dir.c:29,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-test/test-dir.c:30,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-test/test-dir.c:31,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-test/test-dir.c:32,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-test/test-dir.c:33,1
    - Dst: safe_mkstemp_dir_pid
      Src: /src/dovecot/src/lib-test/test-dir.c:35,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-test/test-dir.c:36,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-test/test-dir.c:36,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-test/test-dir.c:38,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-test/test-dir.c:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - top_test_dir
    - name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 39
    functionName: test_dir_init
    functionSourceFile: /src/dovecot/src/lib-test/test-dir.c
    functionUses: 10
    functionsReached:
    - safe_mkstemp_dir_pid
    - str_c
    - t_str_new
    - str_append_c
    - i_fatal
    - i_strdup
    - mkdir
    - str_append
    - test_init_signals
    - i_assert
    - test_init
    linkageType: ''
    returnType: void
    signature: void test_dir_init(const char *top_test_dir, const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lib_is_initialized
      Src: /src/dovecot/src/lib-test/test-dir.c:47,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-test/test-dir.c:48,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-test/test-dir.c:50,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-dir.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 60
    functionName: test_dir_cleanup
    functionSourceFile: /src/dovecot/src/lib-test/test-dir.c
    functionUses: 0
    functionsReached:
    - lib_is_initialized
    - unlink_directory
    - i_error
    - i_free
    linkageType: ''
    returnType: void
    signature: void test_dir_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_cleanup
      Src: /src/dovecot/src/lib-test/test-dir.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: test_dir_deinit
    functionSourceFile: /src/dovecot/src/lib-test/test-dir.c
    functionUses: 0
    functionsReached:
    - test_dir_cleanup
    linkageType: ''
    returnType: void
    signature: void test_dir_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-dir.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: test_dir_deinit_forked
    functionSourceFile: /src/dovecot/src/lib-test/test-dir.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void test_dir_deinit_forked(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-test/test-dir.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: test_dir_get
    functionSourceFile: /src/dovecot/src/lib-test/test-dir.c
    functionUses: 4
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: char
    signature: char *test_dir_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-test/test-dir.c:81,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-test/test-dir.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: test_dir_get_prefix
    functionSourceFile: /src/dovecot/src/lib-test/test-dir.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - test_dir_get
    linkageType: ''
    returnType: char
    signature: char *test_dir_get_prefix(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-test/test-dir.c:86,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-test/test-dir.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: test_dir_prepend
    functionSourceFile: /src/dovecot/src/lib-test/test-dir.c
    functionUses: 3
    functionsReached:
    - t_strconcat
    - test_dir_get
    linkageType: ''
    returnType: char
    signature: char *test_dir_prepend(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - reason
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: test_failed
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_failed(reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - code
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: test_assert
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 203
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert(code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - code
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: test_assert_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_idx(code, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s1
    - ','
    - s2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: test_assert_strcmp
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 42
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_strcmp(s1, s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - m1
    - ','
    - len1
    - ','
    - m2
    - ','
    - len2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: test_assert_memcmp
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_memcmp(m1, len1, m2, len2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _s1
    - ','
    - _s2
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 63
    functionName: test_assert_strcmp_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_strcmp_idx(_s1, _s2, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _m1
    - ','
    - _len1
    - ','
    - _m2
    - ','
    - _len2
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: test_assert_memcmp_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_memcmp_idx(_m1, _len1, _m2, _len2, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _bool_value1
    - ','
    - _op
    - ','
    - _value2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: test_assert_cmp_bool
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_cmp_bool(_bool_value1, _op, _value2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _value1
    - ','
    - _op
    - ','
    - _value2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: test_assert_cmp
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_cmp(_value1, _op, _value2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _value1
    - ','
    - _op
    - ','
    - _value2
    - ','
    - _idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: test_assert_cmp_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_cmp_idx(_value1, _op, _value2, _idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _value1
    - ','
    - _op
    - ','
    - _value2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: test_assert_ucmp
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_ucmp(_value1, _op, _value2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _value1
    - ','
    - _op
    - ','
    - _value2
    - ','
    - _idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: test_assert_ucmp_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_ucmp_idx(_value1, _op, _value2, _idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 165
    functionName: TEST_DECL
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DECL(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 166
    functionName: TEST_NAMELESS
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_NAMELESS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: TEST_NAMED
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_NAMED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 200
    functionName: test_fatal_set_callback
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_fatal_set_callback(callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 202
    functionName: FATAL_DECL
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FATAL_DECL(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: FATAL_NAMELESS
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FATAL_NAMELESS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 204
    functionName: FATAL_NAMED
    functionSourceFile: /src/dovecot/src/lib-test/test-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FATAL_NAMED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-test/test-ostream.c:21,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-test/test-ostream.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 23
    functionName: o_stream_test_destroy
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void o_stream_test_destroy(struct iostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-test/test-ostream.c:35,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-test/test-ostream.c:36,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-test/test-ostream.c:37,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 39
    functionName: o_stream_test_flush
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - buffer_delete
    - buffer_append
    linkageType: ''
    returnType: int
    signature: int o_stream_test_flush(struct ostream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_test_flush
      Src: /src/dovecot/src/lib-test/test-ostream.c:52,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-test/test-ostream.c:60,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-test/test-ostream.c:61,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-test/test-ostream.c:65,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-test/test-ostream.c:77,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-test/test-ostream.c:78,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 89
    functionName: o_stream_test_sendv
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_test_flush
    - I_MIN
    - CONST_PTR_OFFSET
    - buffer_append
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_test_sendv(struct ostream_private *stream,\n\t\t
      \   const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-test/test-ostream.c:96,1
    - Dst: struct test_ostream*::ostream::callback
      Src: /src/dovecot/src/lib-test/test-ostream.c:99,1
    - Dst: o_stream_test_flush
      Src: /src/dovecot/src/lib-test/test-ostream.c:101,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-test/test-ostream.c:107,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-test/test-ostream.c:108,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - tstream
    argTypes:
    - struct test_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 109
    functionName: test_ostream_send_more
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - struct test_ostream*::ostream::callback
    - o_stream_unref
    - o_stream_ref
    - o_stream_test_flush
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_ostream_send_more(struct test_ostream *tstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-test/test-ostream.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - tstream
    argTypes:
    - struct test_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: test_ostream_set_send_more_timeout
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    linkageType: ''
    returnType: void
    signature: void test_ostream_set_send_more_timeout(struct test_ostream *tstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-ostream.c:125,1
    - Dst: test_ostream_set_send_more_timeout
      Src: /src/dovecot/src/lib-test/test-ostream.c:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 131
    functionName: o_stream_test_flush_pending
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - test_ostream_set_send_more_timeout
    linkageType: ''
    returnType: void
    signature: void o_stream_test_flush_pending(struct ostream_private *stream, bool
      set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 141
    functionName: o_stream_test_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_test_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-test/test-ostream.c:148,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-test/test-ostream.c:160,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-test/test-ostream.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - output
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 163
    functionName: test_ostream_create
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_set_name
    - o_stream_create
    - i_new
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *test_ostream_create(buffer_t *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-test/test-ostream.c:170,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-test/test-ostream.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - output
    - max_internal_buffer_size
    argTypes:
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 175
    functionName: test_ostream_create_nonblocking
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - test_ostream_create
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *test_ostream_create_nonblocking(buffer_t *output,\n\t\t\t\t\t\tsize_t
      max_internal_buffer_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-test/test-ostream.c:185,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-test/test-ostream.c:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - output
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 186
    functionName: test_ostream_find
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - i_panic
    - o_stream_get_name
    linkageType: ''
    returnType: struct test_ostream
    signature: struct test_ostream *test_ostream_find(struct ostream *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ostream_find
      Src: /src/dovecot/src/lib-test/test-ostream.c:190,1
    - Dst: test_ostream_set_send_more_timeout
      Src: /src/dovecot/src/lib-test/test-ostream.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - output
    - max_size
    argTypes:
    - struct ostream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 194
    functionName: test_ostream_set_max_output_size
    functionSourceFile: /src/dovecot/src/lib-test/test-ostream.c
    functionUses: 0
    functionsReached:
    - test_ostream_find
    - test_ostream_set_send_more_timeout
    linkageType: ''
    returnType: void
    signature: void test_ostream_set_max_output_size(struct ostream *output, size_t
      max_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-istream.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 19
    functionName: test_buffer_free
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void test_buffer_free(unsigned char *buf)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-istream.c:28,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-istream.c:31,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-test/test-istream.c:41,1
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib-test/test-istream.c:63,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-test/test-istream.c:65,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-test/test-istream.c:67,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-test/test-istream.c:68,1
    - Dst: memarea_unref
      Src: /src/dovecot/src/lib-test/test-istream.c:74,1
    - Dst: memarea_init
      Src: /src/dovecot/src/lib-test/test-istream.c:75,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-test/test-istream.c:82,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 98
    functionName: test_read
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_malloc
    - memarea_init
    - memarea_unref
    - I_MIN
    - i_rand_limit
    - i_assert
    - memarea_get_refcount
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t test_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: test_seek
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void test_seek(struct istream_private *stream, uoff_t v_offset,\n\t\t
      \     bool mark ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-test/test-istream.c:114,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-test/test-istream.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 127
    functionName: test_istream_create_data
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 19
    functionsReached:
    - i_stream_create
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *test_istream_create_data(const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-test/test-istream.c:131,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-test/test-istream.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: test_istream_create
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_istream_create_data
    linkageType: ''
    returnType: struct istream
    signature: struct istream *test_istream_create(const char *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-istream.c:138,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-test/test-istream.c:144,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-test/test-istream.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 145
    functionName: test_istream_find
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 0
    functionsReached:
    - i_panic
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: struct test_istream
    signature: struct test_istream *test_istream_find(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_find
      Src: /src/dovecot/src/lib-test/test-istream.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - allow
    argTypes:
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 152
    functionName: test_istream_set_allow_eof
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 1
    functionsReached:
    - test_istream_find
    linkageType: ''
    returnType: void
    signature: void test_istream_set_allow_eof(struct istream *input, bool allow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_find
      Src: /src/dovecot/src/lib-test/test-istream.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - struct istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 159
    functionName: test_istream_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 1
    functionsReached:
    - test_istream_find
    linkageType: ''
    returnType: void
    signature: void test_istream_set_max_buffer_size(struct istream *input, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_find
      Src: /src/dovecot/src/lib-test/test-istream.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: test_istream_set_size
    functionSourceFile: /src/dovecot/src/lib-test/test-istream.c
    functionUses: 16
    functionsReached:
    - test_istream_find
    linkageType: ''
    returnType: void
    signature: void test_istream_set_size(struct istream *input, uoff_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-test/fuzzer.c:16,1
    - Dst: lib_is_initialized
      Src: /src/dovecot/src/lib-test/fuzzer.c:17,1
    - Dst: lib_init
      Src: /src/dovecot/src/lib-test/fuzzer.c:18,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib-test/fuzzer.c:19,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/lib-test/fuzzer.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - fuzz_ctx
    argTypes:
    - struct fuzzer_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 25
    functionName: fuzzer_init
    functionSourceFile: /src/dovecot/src/lib-test/fuzzer.c
    functionUses: 0
    functionsReached:
    - i_zero
    - lib_is_initialized
    - lib_init
    - lib_signals_init
    - lib_signals_ignore
    linkageType: ''
    returnType: void
    signature: void fuzzer_init(struct fuzzer_context *fuzz_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-test/fuzzer.c:29,1
    - Dst: close
      Src: /src/dovecot/src/lib-test/fuzzer.c:33,1
    - Dst: close
      Src: /src/dovecot/src/lib-test/fuzzer.c:35,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-test/fuzzer.c:37,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib-test/fuzzer.c:39,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-test/fuzzer.c:40,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - fuzz_ctx
    argTypes:
    - struct fuzzer_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 42
    functionName: fuzzer_deinit
    functionSourceFile: /src/dovecot/src/lib-test/fuzzer.c
    functionUses: 0
    functionsReached:
    - lib_deinit
    - iostream_pump_destroy
    - io_loop_destroy
    - lib_signals_deinit
    - close
    linkageType: ''
    returnType: void
    signature: void fuzzer_deinit(struct fuzzer_context *fuzz_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: iostream_pump_get_input
      Src: /src/dovecot/src/lib-test/fuzzer.c:47,1
    - Dst: iostream_pump_get_output
      Src: /src/dovecot/src/lib-test/fuzzer.c:48,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-test/fuzzer.c:54,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-test/fuzzer.c:54,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-test/fuzzer.c:55,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-test/fuzzer.c:58,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-test/fuzzer.c:58,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-test/fuzzer.c:59,1
    - Dst: shutdown
      Src: /src/dovecot/src/lib-test/fuzzer.c:63,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-test/fuzzer.c:63,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-test/fuzzer.c:64,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-test/fuzzer.c:65,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - fuzz_ctx
    argTypes:
    - enum iostream_pump_status
    - struct fuzzer_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 66
    functionName: pump_finished
    functionSourceFile: /src/dovecot/src/lib-test/fuzzer.c
    functionUses: 0
    functionsReached:
    - shutdown
    - o_stream_get_name
    - iostream_pump_get_output
    - i_error
    - o_stream_get_error
    - o_stream_get_fd
    - iostream_pump_destroy
    - i_fatal
    - i_stream_get_error
    - iostream_pump_get_input
    - i_stream_get_name
    linkageType: ''
    returnType: void
    signature: "void pump_finished(enum iostream_pump_status status ATTR_UNUSED,\n\t\t\t
      \ struct fuzzer_context *fuzz_ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socketpair
      Src: /src/dovecot/src/lib-test/fuzzer.c:73,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-test/fuzzer.c:74,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-test/fuzzer.c:75,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-test/fuzzer.c:76,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-test/fuzzer.c:78,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-test/fuzzer.c:79,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-test/fuzzer.c:80,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-test/fuzzer.c:81,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-test/fuzzer.c:82,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib-test/fuzzer.c:84,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib-test/fuzzer.c:87,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-test/fuzzer.c:89,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-test/fuzzer.c:90,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib-test/fuzzer.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - fuzz_ctx
    - data
    - size
    argTypes:
    - struct fuzzer_context*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 93
    functionName: fuzzer_io_as_fd
    functionSourceFile: /src/dovecot/src/lib-test/fuzzer.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - iostream_pump_set_completion_callback
    - iostream_pump_create
    - o_stream_set_name
    - i_stream_set_name
    - o_stream_unref
    - i_fatal
    - o_stream_set_no_error_handling
    - iostream_pump_start
    - i_stream_unref
    - socketpair
    - net_set_nonblock
    - i_stream_create_from_data
    linkageType: ''
    returnType: int
    signature: "int fuzzer_io_as_fd(struct fuzzer_context *fuzz_ctx,\n\t\t   const
      uint8_t *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-test/fuzzer.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - data
    - size
    - subst
    argTypes:
    - uint8_t*
    - size_t
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 105
    functionName: fuzzer_t_strndup_replace_zero
    functionSourceFile: /src/dovecot/src/lib-test/fuzzer.c
    functionUses: 0
    functionsReached:
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: "char *fuzzer_t_strndup_replace_zero(\n\tconst uint8_t *data, size_t
      size, char subst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 6
    functionName: test_dir_init
    functionSourceFile: /src/dovecot/src/lib-test/test-dir.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_dir_init(name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-common.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-test/test-common.c:46,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-test/test-common.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: test_begin
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 193
    functionsReached:
    - i_strdup
    - i_assert
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_begin(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: test_has_failed
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool test_has_failed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:57,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-test/test-common.c:58,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-test/test-common.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - code
    - file
    - line
    argTypes:
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: test_assert_failed
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - fflush
    - i_unreached
    - printf
    linkageType: ''
    returnType: void
    signature: void test_assert_failed(const char *code, const char *file, unsigned
      int line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:67,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-test/test-common.c:68,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-test/test-common.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - code
    - file
    - line
    - i
    argTypes:
    - char*
    - char*
    - unsigned int
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 73
    functionName: test_assert_failed_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - fflush
    - i_unreached
    - printf
    linkageType: ''
    returnType: void
    signature: void test_assert_failed_idx(const char *code, const char *file, unsigned
      int line, long long i)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:78,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:80,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:82,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:84,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:86,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:88,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:90,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-test/test-common.c:91,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-test/test-common.c:94,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - code
    - file
    - line
    - src
    - dst
    - i
    argTypes:
    - char*
    - char*
    - unsigned int
    - char*
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 96
    functionName: test_assert_failed_strcmp_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - fflush
    - i_unreached
    - printf
    linkageType: ''
    returnType: void
    signature: "void test_assert_failed_strcmp_idx(const char *code, const char *file,
      unsigned int line,\n\t\t\t\t   const char *src, const char *dst, long long i)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:105,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - _data
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 109
    functionName: print_memcmp_data
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_memcmp_data(const void *_data, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:114,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:116,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:118,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:119,1
    - Dst: print_memcmp_data
      Src: /src/dovecot/src/lib-test/test-common.c:120,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:121,1
    - Dst: print_memcmp_data
      Src: /src/dovecot/src/lib-test/test-common.c:122,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:123,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-test/test-common.c:124,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-test/test-common.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 7
    argNames:
    - code
    - file
    - line
    - src
    - dst
    - len
    - i
    argTypes:
    - char*
    - char*
    - unsigned int
    - void*
    - void*
    - size_t
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 129
    functionName: test_assert_failed_memcmp_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - print_memcmp_data
    - fflush
    - i_unreached
    - printf
    linkageType: ''
    returnType: void
    signature: "void test_assert_failed_memcmp_idx(const char *code, const char *file,
      unsigned int line,\n\t\t\t\t   const void *src, const void *dst, size_t len,
      long long i)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:136,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:138,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:140,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:141,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-test/test-common.c:142,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-test/test-common.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - code
    - file
    - line
    - src
    - dst
    - op
    - i
    argTypes:
    - char*
    - char*
    - unsigned int
    - intmax_t
    - intmax_t
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 147
    functionName: test_assert_failed_cmp_intmax_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - fflush
    - i_unreached
    - printf
    linkageType: ''
    returnType: void
    signature: "void test_assert_failed_cmp_intmax_idx(const char *code, const char
      *file,\n\t\t\t\t       unsigned int line,\n\t\t\t\t       intmax_t src, intmax_t
      dst,\n\t\t\t\t       const char *op, long long i)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:154,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:156,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:158,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:159,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-test/test-common.c:160,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-test/test-common.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - code
    - file
    - line
    - src
    - dst
    - op
    - i
    argTypes:
    - char*
    - char*
    - unsigned int
    - uintmax_t
    - uintmax_t
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 165
    functionName: test_assert_failed_ucmp_intmax_idx
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - fflush
    - i_unreached
    - printf
    linkageType: ''
    returnType: void
    signature: "void test_assert_failed_ucmp_intmax_idx(const char *code, const char
      *file,\n\t\t\t\t\tunsigned int line,\n\t\t\t\t\tuintmax_t src, uintmax_t dst,\n\t\t\t\t\tconst
      char *op, long long i)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rand_get_last_seed
      Src: /src/dovecot/src/lib-test/test-common.c:174,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:176,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 185
    functionName: test_dump_rand_state
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - printf
    - rand_get_last_seed
    linkageType: ''
    returnType: void
    signature: void test_dump_rand_state(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: test_dump_rand_state
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_dump_rand_state(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-common.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-test/test-common.c:195,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-test/test-common.c:197,1
    - Dst: test_dump_rand_state
      Src: /src/dovecot/src/lib-test/test-common.c:199,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 202
    functionName: test_end
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 200
    functionsReached:
    - i_free_and_null
    - test_out
    - test_assert
    - i_assert
    - test_dump_rand_state
    linkageType: ''
    returnType: void
    signature: void test_end(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-test/test-common.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - success
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: test_out
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 34
    functionsReached:
    - test_out_reason
    linkageType: ''
    returnType: void
    signature: void test_out(const char *name, bool success)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fputs
      Src: /src/dovecot/src/lib-test/test-common.c:214,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-test/test-common.c:215,1
    - Dst: putchar
      Src: /src/dovecot/src/lib-test/test-common.c:217,1
    - Dst: putchar
      Src: /src/dovecot/src/lib-test/test-common.c:220,1
    - Dst: fputs
      Src: /src/dovecot/src/lib-test/test-common.c:224,1
    - Dst: putchar
      Src: /src/dovecot/src/lib-test/test-common.c:225,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-test/test-common.c:226,1
    - Dst: putchar
      Src: /src/dovecot/src/lib-test/test-common.c:229,1
    - Dst: fputs
      Src: /src/dovecot/src/lib-test/test-common.c:230,1
    - Dst: fputs
      Src: /src/dovecot/src/lib-test/test-common.c:232,1
    - Dst: fputs
      Src: /src/dovecot/src/lib-test/test-common.c:234,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:239,1
    - Dst: putchar
      Src: /src/dovecot/src/lib-test/test-common.c:240,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-test/test-common.c:241,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - name
    - success
    - reason
    argTypes:
    - char*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 243
    functionName: test_out_reason
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 11
    functionsReached:
    - fflush
    - printf
    - strlen
    - putchar
    - fputs
    linkageType: ''
    returnType: void
    signature: void test_out_reason(const char *name, bool success, const char *reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-test/test-common.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - name
    - success
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 252
    functionName: test_out_quiet
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 14
    functionsReached:
    - test_out
    linkageType: ''
    returnType: void
    signature: void test_out_quiet(const char *name, bool success)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-test/test-common.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - name
    - success
    - reason
    argTypes:
    - char*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 261
    functionName: test_out_reason_quiet
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 15
    functionsReached:
    - test_out_reason
    linkageType: ''
    returnType: void
    signature: void test_out_reason_quiet(const char *name, bool success, const char
      *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-common.c:266,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-test/test-common.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - substr
    - times
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: test_expect_error_string_n_times
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_expect_error_string_n_times(const char *substr, unsigned
      int times)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_error_string_n_times
      Src: /src/dovecot/src/lib-test/test-common.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - substr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 274
    functionName: test_expect_error_string
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 25
    functionsReached:
    - test_expect_error_string_n_times
    linkageType: ''
    returnType: void
    signature: void test_expect_error_string(const char *substr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-common.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - expected
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 280
    functionName: test_expect_errors
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 9
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_expect_errors(unsigned int expected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-test/test-common.c:284,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: test_expect_no_more_errors
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 19
    functionsReached:
    - i_free_and_null
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_expect_no_more_errors(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-test/test-common.c:298,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-test/test-common.c:299,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-test/test-common.c:300,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - error_strp
    - format
    - args
    argTypes:
    - char**
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 302
    functionName: expect_error_check
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - t_strdup_vprintf
    - i_free_and_null
    - strstr
    - test_assert
    linkageType: ''
    returnType: void
    signature: void expect_error_check(char **error_strp, const char *format, va_list
      args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VA_COPY
      Src: /src/dovecot/src/lib-test/test-common.c:314,1
    - Dst: expect_error_check
      Src: /src/dovecot/src/lib-test/test-common.c:315,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-test/test-common.c:317,1
    - Dst: test_dump_rand_state
      Src: /src/dovecot/src/lib-test/test-common.c:323,1
    - Dst: default_error_handler
      Src: /src/dovecot/src/lib-test/test-common.c:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 326
    functionName: test_error_handler
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - expect_error_check
    - VA_COPY
    - default_error_handler
    - test_dump_rand_state
    - va_end
    linkageType: ''
    returnType: void
    signature: "void test_error_handler(const struct failure_context *ctx,\n\t\t   const
      char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-test/test-common.c:330,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-test/test-common.c:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - substr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 332
    functionName: test_expect_fatal_string
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void test_expect_fatal_string(const char *substr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-common.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - callback
    - context
    argTypes:
    - test_fatal_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 340
    functionName: test_fatal_set_callback
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_fatal_set_callback(test_fatal_callback_t *callback, void
      *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib-test/test-common.c:347,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-common.c:348,1
    - Dst: VA_COPY
      Src: /src/dovecot/src/lib-test/test-common.c:351,1
    - Dst: expect_error_check
      Src: /src/dovecot/src/lib-test/test-common.c:352,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-test/test-common.c:353,1
    - Dst: test_fatal_callback
      Src: /src/dovecot/src/lib-test/test-common.c:357,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib-test/test-common.c:362,1
    - Dst: longjmp
      Src: /src/dovecot/src/lib-test/test-common.c:363,1
    - Dst: default_fatal_handler
      Src: /src/dovecot/src/lib-test/test-common.c:365,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-test/test-common.c:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 368
    functionName: test_fatal_handler
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - longjmp
    - expect_error_check
    - i_unreached
    - VA_COPY
    - default_fatal_handler
    - i_set_fatal_handler
    - test_fatal_callback
    - i_assert
    - va_end
    linkageType: ''
    returnType: ATTR_NORETURN
    signature: "ATTR_NORETURN test_fatal_handler(const struct failure_context *ctx,\n\t\t
      \  const char *format, va_list args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_subprocess_is_child
      Src: /src/dovecot/src/lib-test/test-common.c:372,1
    - Dst: test_subprocess_cleanup
      Src: /src/dovecot/src/lib-test/test-common.c:377,1
    - Dst: test_cleanup_callback
      Src: /src/dovecot/src/lib-test/test-common.c:381,1
    - Dst: test_dir_cleanup
      Src: /src/dovecot/src/lib-test/test-common.c:383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 370
    functionDepth: 4
    functionLinenumber: 370
    functionLinenumberEnd: 384
    functionName: test_cleanup
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - test_subprocess_is_child
    - test_dir_cleanup
    - test_subprocess_cleanup
    - test_cleanup_callback
    linkageType: ''
    returnType: void
    signature: void test_cleanup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: raise
      Src: /src/dovecot/src/lib-test/test-common.c:391,1
    - Dst: test_cleanup
      Src: /src/dovecot/src/lib-test/test-common.c:395,1
    - Dst: signal
      Src: /src/dovecot/src/lib-test/test-common.c:397,1
    - Dst: _exit
      Src: /src/dovecot/src/lib-test/test-common.c:399,1
    - Dst: raise
      Src: /src/dovecot/src/lib-test/test-common.c:401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - si
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 402
    functionName: test_terminate
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - raise
    - test_cleanup
    - _exit
    - signal
    linkageType: ''
    returnType: void
    signature: void test_terminate(const siginfo_t *si, void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_cleanup
      Src: /src/dovecot/src/lib-test/test-common.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 410
    functionName: test_atexit
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - test_cleanup
    linkageType: ''
    returnType: void
    signature: void test_atexit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_is_initialized
      Src: /src/dovecot/src/lib-test/test-common.c:422,1
    - Dst: lib_init
      Src: /src/dovecot/src/lib-test/test-common.c:423,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib-test/test-common.c:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 430
    functionName: test_init_no_event
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 1
    functionsReached:
    - lib_is_initialized
    - lib_init
    - i_set_error_handler
    linkageType: ''
    returnType: void
    signature: void test_init_no_event(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_init_no_event
      Src: /src/dovecot/src/lib-test/test-common.c:437,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-test/test-common.c:438,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-test/test-common.c:439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 432
    functionDepth: 2
    functionLinenumber: 432
    functionLinenumberEnd: 440
    functionName: test_init
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 8
    functionsReached:
    - event_set_append_log_prefix
    - event_create
    - test_init_no_event
    linkageType: ''
    returnType: void
    signature: void test_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib-test/test-common.c:444,1
    - Dst: atexit
      Src: /src/dovecot/src/lib-test/test-common.c:447,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/lib-test/test-common.c:448,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-common.c:449,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-common.c:450,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-common.c:451,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-common.c:452,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-test/test-common.c:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 454
    functionName: test_init_signals
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 2
    functionsReached:
    - lib_signals_ignore
    - atexit
    - lib_signals_set_handler
    - lib_signals_init
    linkageType: ''
    returnType: void
    signature: void test_init_signals(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/test-common.c:458,1
    - Dst: printf
      Src: /src/dovecot/src/lib-test/test-common.c:459,1
    - Dst: test_dir_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:461,1
    - Dst: test_subprocesses_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:462,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-test/test-common.c:464,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:467,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:469,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 456
    functionDepth: 5
    functionLinenumber: 456
    functionLinenumberEnd: 471
    functionName: test_deinit
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - event_unref
    - lib_deinit
    - printf
    - test_dir_deinit
    - test_subprocesses_deinit
    - lib_signals_deinit
    - i_assert
    linkageType: ''
    returnType: int
    signature: int test_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_deinit_forked
      Src: /src/dovecot/src/lib-test/test-common.c:475,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-test/test-common.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 478
    functionName: test_forked_deinit
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 1
    functionsReached:
    - event_unref
    - test_dir_deinit_forked
    linkageType: ''
    returnType: void
    signature: void test_forked_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 489
    functionName: test_run_funcs
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_run_funcs(void (*const test_functions[])(void))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib-test/test-common.c:499,1
    - Dst: func
      Src: /src/dovecot/src/lib-test/test-common.c:500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - tests
    - match
    argTypes:
    - struct named_test[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 502
    functionName: test_run_named_funcs
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - func
    - strstr
    linkageType: ''
    returnType: void
    signature: "void test_run_named_funcs(const struct named_test tests[],\n\t\t\t\t
      const char *match)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setjmp
      Src: /src/dovecot/src/lib-test/test-common.c:510,1
    - Dst: fatal_function
      Src: /src/dovecot/src/lib-test/test-common.c:514,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-test/test-common.c:523,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-test/test-common.c:527,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - fatal_function
    argTypes:
    - test_fatal_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 536
    functionName: run_one_fatal
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - test_end
    - fatal_function
    - i_error
    - setjmp
    linkageType: ''
    returnType: void
    signature: void run_one_fatal(test_fatal_func_t *fatal_function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_one_fatal
      Src: /src/dovecot/src/lib-test/test-common.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fatal_functions
    argTypes:
    - test_fatal_func_t*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 537
    functionDepth: 4
    functionLinenumber: 537
    functionLinenumberEnd: 546
    functionName: test_run_fatals
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - run_one_fatal
    linkageType: ''
    returnType: void
    signature: void test_run_fatals(test_fatal_func_t *const fatal_functions[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib-test/test-common.c:555,1
    - Dst: run_one_fatal
      Src: /src/dovecot/src/lib-test/test-common.c:556,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fatals
    - match
    argTypes:
    - struct named_fatal[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 549
    functionDepth: 4
    functionLinenumber: 549
    functionLinenumberEnd: 558
    functionName: test_run_named_fatals
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - run_one_fatal
    - strstr
    linkageType: ''
    returnType: void
    signature: void test_run_named_fatals(const struct named_fatal fatals[], const
      char *match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_init
      Src: /src/dovecot/src/lib-test/test-common.c:564,1
    - Dst: test_run_funcs
      Src: /src/dovecot/src/lib-test/test-common.c:565,1
    - Dst: test_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 562
    functionDepth: 6
    functionLinenumber: 562
    functionLinenumberEnd: 567
    functionName: test_run
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 44
    functionsReached:
    - test_init
    - test_deinit
    - test_run_funcs
    linkageType: ''
    returnType: int
    signature: int test_run(void (*const test_functions[])(void))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_init
      Src: /src/dovecot/src/lib-test/test-common.c:570,1
    - Dst: test_run_named_funcs
      Src: /src/dovecot/src/lib-test/test-common.c:571,1
    - Dst: test_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tests
    - match
    argTypes:
    - struct named_test[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 568
    functionDepth: 6
    functionLinenumber: 568
    functionLinenumberEnd: 573
    functionName: test_run_named
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - test_run_named_funcs
    - test_init
    - test_deinit
    linkageType: ''
    returnType: int
    signature: int test_run_named(const struct named_test tests[], const char *match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_init
      Src: /src/dovecot/src/lib-test/test-common.c:577,1
    - Dst: test_run_funcs
      Src: /src/dovecot/src/lib-test/test-common.c:578,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib-test/test-common.c:579,1
    - Dst: test_run_fatals
      Src: /src/dovecot/src/lib-test/test-common.c:580,1
    - Dst: test_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fatal_functions
    argTypes:
    - test_fatal_func_t*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 574
    functionDepth: 6
    functionLinenumber: 574
    functionLinenumberEnd: 582
    functionName: test_run_with_fatals
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - test_deinit
    - test_run_fatals
    - i_set_fatal_handler
    - test_init
    - test_run_funcs
    linkageType: ''
    returnType: int
    signature: "int test_run_with_fatals(void (*const test_functions[])(void),\n\t\t\t
      test_fatal_func_t *const fatal_functions[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_init
      Src: /src/dovecot/src/lib-test/test-common.c:586,1
    - Dst: test_run_named_funcs
      Src: /src/dovecot/src/lib-test/test-common.c:587,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib-test/test-common.c:588,1
    - Dst: test_run_named_fatals
      Src: /src/dovecot/src/lib-test/test-common.c:589,1
    - Dst: test_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - match
    - tests
    - fatals
    argTypes:
    - char*
    - struct named_test[]
    - struct named_fatal[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 583
    functionDepth: 6
    functionLinenumber: 583
    functionLinenumberEnd: 591
    functionName: test_run_named_with_fatals
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 0
    functionsReached:
    - test_run_named_funcs
    - test_deinit
    - test_init
    - i_set_fatal_handler
    - test_run_named_fatals
    linkageType: ''
    returnType: int
    signature: "int test_run_named_with_fatals(const char *match, const struct named_test
      tests[],\n\t\t\t       const struct named_fatal fatals[])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_forked_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:595,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib-test/test-common.c:597,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib-test/test-common.c:598,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:600,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:601,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:602,1
    - Dst: t_pop_last_unsafe
      Src: /src/dovecot/src/lib-test/test-common.c:604,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 605
    functionName: test_forked_end
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 1
    functionsReached:
    - test_forked_deinit
    - t_pop_last_unsafe
    - i_free_and_null
    - i_set_error_handler
    - i_set_fatal_handler
    linkageType: ''
    returnType: void
    signature: void test_forked_end(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_forked_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:610,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:612,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:613,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-test/test-common.c:614,1
    - Dst: t_pop_last_unsafe
      Src: /src/dovecot/src/lib-test/test-common.c:616,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-test/test-common.c:617,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib-test/test-common.c:618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 607
    functionDepth: 3
    functionLinenumber: 607
    functionLinenumberEnd: 619
    functionName: ATTR_NORETURN::test_exit
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 1
    functionsReached:
    - lib_deinit
    - test_forked_deinit
    - t_pop_last_unsafe
    - i_free_and_null
    - lib_exit
    linkageType: ''
    returnType: void
    signature: 'void ATTR_NORETURN

      test_exit(int status)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-test/test-common.c:623,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-test/test-common.c:626,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lib-test/test-common.c:627,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-test/test-common.c:629,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-test/test-common.c:629,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-test/test-common.c:630,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-test/test-common.c:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 632
    functionName: test_create_temp_fd
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - i_fatal
    - i_unlink
    - str_append
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: int test_create_temp_fd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 634
    functionDepth: 0
    functionLinenumber: 634
    functionLinenumberEnd: 637
    functionName: test_set_cleanup_callback
    functionSourceFile: /src/dovecot/src/lib-test/test-common.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_set_cleanup_callback(void (*callback)(void))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:19,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:22,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 25
    functionName: o_stream_final_trickle_close
    functionSourceFile: /src/dovecot/src/lib-test/ostream-final-trickle.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void o_stream_final_trickle_close(struct iostream_private *stream,
      bool close_parent)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:33,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:35,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:39,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - dstream
    argTypes:
    - struct final_trickle_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 42
    functionName: o_stream_final_trickle_flush_buffer
    functionSourceFile: /src/dovecot/src/lib-test/ostream-final-trickle.c
    functionUses: 0
    functionsReached:
    - o_stream_send
    - o_stream_copy_error_from_parent
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int o_stream_final_trickle_flush_buffer(struct final_trickle_ostream
      *dstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:49,1
    - Dst: o_stream_final_trickle_flush_buffer
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:51,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - dstream
    argTypes:
    - struct final_trickle_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 53
    functionName: o_stream_final_trickle_timeout
    functionSourceFile: /src/dovecot/src/lib-test/ostream-final-trickle.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    - i_assert
    - o_stream_final_trickle_flush_buffer
    linkageType: ''
    returnType: void
    signature: void o_stream_final_trickle_timeout(struct final_trickle_ostream *dstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:58,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: o_stream_final_trickle_flush
    functionSourceFile: /src/dovecot/src/lib-test/ostream-final-trickle.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_final_trickle_flush(struct ostream_private *stream)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:71,1
    - Dst: o_stream_final_trickle_flush_buffer
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:74,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:76,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:80,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:83,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:89,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:100,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:101,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:106,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 114
    functionName: o_stream_final_trickle_sendv
    functionSourceFile: /src/dovecot/src/lib-test/ostream-final-trickle.c
    functionUses: 0
    functionsReached:
    - memcpy
    - container_of
    - timeout_add_short
    - o_stream_sendv
    - timeout_remove
    - o_stream_copy_error_from_parent
    - i_assert
    - o_stream_final_trickle_flush_buffer
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_final_trickle_sendv(struct ostream_private *stream,\n\t\t\t
      \    const struct const_iovec *iov,\n\t\t\t     unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:120,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 124
    functionName: o_stream_final_trickle_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib-test/ostream-final-trickle.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_final_trickle_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:131,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:134,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct ostream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: o_stream_final_trickle_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib-test/ostream-final-trickle.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_switch_ioloop_to
    - io_loop_move_timeout_to
    linkageType: ''
    returnType: void
    signature: "void o_stream_final_trickle_switch_ioloop_to(struct ostream_private
      *stream,\n\t\t\t\t\tstruct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:143,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:150,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-test/ostream-final-trickle.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - output
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 152
    functionName: o_stream_create_final_trickle
    functionSourceFile: /src/dovecot/src/lib-test/ostream-final-trickle.c
    functionUses: 0
    functionsReached:
    - o_stream_create
    - i_new
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_final_trickle(struct ostream *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - func
    - ','
    - context
    - ','
    - continue_test
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 20
    functionName: test_subprocess_fork
    functionSourceFile: /src/dovecot/src/lib-test/test-subprocess.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_subprocess_fork(func, context, continue_test)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - data_arg
    - ','
    - size_arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 20
    functionName: FUZZ_BEGIN_DATA
    functionSourceFile: /src/dovecot/src/lib-test/fuzzer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FUZZ_BEGIN_DATA(data_arg, size_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str_arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: FUZZ_BEGIN_STR
    functionSourceFile: /src/dovecot/src/lib-test/fuzzer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FUZZ_BEGIN_STR(str_arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/config/sysinfo-get.c:20,1
    - Dst: read
      Src: /src/dovecot/src/config/sysinfo-get.c:23,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/config/sysinfo-get.c:24,1
    - Dst: t_strndup
      Src: /src/dovecot/src/config/sysinfo-get.c:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - path
    - data_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 30
    functionName: readfile
    functionSourceFile: /src/dovecot/src/config/sysinfo-get.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - open
    - t_strndup
    - read
    linkageType: ''
    returnType: bool
    signature: bool readfile(const char *path, const char **data_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: readfile
      Src: /src/dovecot/src/config/sysinfo-get.c:36,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/config/sysinfo-get.c:39,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/sysinfo-get.c:40,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/sysinfo-get.c:46,1
    - Dst: strrchr
      Src: /src/dovecot/src/config/sysinfo-get.c:50,1
    - Dst: str_unescape
      Src: /src/dovecot/src/config/sysinfo-get.c:51,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/config/sysinfo-get.c:51,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - path
    - name_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 55
    functionName: lsb_distro_get
    functionSourceFile: /src/dovecot/src/config/sysinfo-get.c
    functionUses: 0
    functionsReached:
    - p_strdup_until
    - strrchr
    - str_begins
    - str_unescape
    - t_strsplit
    - t_strcut
    - readfile
    linkageType: ''
    returnType: bool
    signature: bool lsb_distro_get(const char *path, const char **name_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lsb_distro_get
      Src: /src/dovecot/src/config/sysinfo-get.c:73,1
    - Dst: readfile
      Src: /src/dovecot/src/config/sysinfo-get.c:76,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/sysinfo-get.c:77,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/sysinfo-get.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 57
    functionDepth: 3
    functionLinenumber: 57
    functionLinenumberEnd: 82
    functionName: distro_get
    functionSourceFile: /src/dovecot/src/config/sysinfo-get.c
    functionUses: 1
    functionsReached:
    - lsb_distro_get
    - t_strcut
    - t_strconcat
    - readfile
    linkageType: ''
    returnType: char
    signature: char *distro_get(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strcut
      Src: /src/dovecot/src/config/sysinfo-get.c:92,1
    - Dst: strlen
      Src: /src/dovecot/src/config/sysinfo-get.c:93,1
    - Dst: mountpoint_get
      Src: /src/dovecot/src/config/sysinfo-get.c:97,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/config/sysinfo-get.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 100
    functionName: filesystem_get
    functionSourceFile: /src/dovecot/src/config/sysinfo-get.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strcut
    - mountpoint_get
    - pool_datastack_create
    linkageType: ''
    returnType: char
    signature: char *filesystem_get(const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: uname
      Src: /src/dovecot/src/config/sysinfo-get.c:108,1
    - Dst: i_error
      Src: /src/dovecot/src/config/sysinfo-get.c:109,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/sysinfo-get.c:111,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/sysinfo-get.c:114,1
    - Dst: distro_get
      Src: /src/dovecot/src/config/sysinfo-get.c:115,1
    - Dst: filesystem_get
      Src: /src/dovecot/src/config/sysinfo-get.c:117,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/sysinfo-get.c:120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - mail_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 102
    functionDepth: 4
    functionLinenumber: 102
    functionLinenumberEnd: 121
    functionName: sysinfo_get
    functionSourceFile: /src/dovecot/src/config/sysinfo-get.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_error
    - uname
    - t_strdup_printf
    - distro_get
    - filesystem_get
    linkageType: ''
    returnType: char
    signature: char *sysinfo_get(const char *mail_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/config/old-set-parser.c:14,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - dovecot_config_version
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 15
    functionName: has_config_version
    functionSourceFile: /src/dovecot/src/config/old-set-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool has_config_version(const char *dovecot_config_version)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_warning
      Src: /src/dovecot/src/config/old-set-parser.c:27,1
    - Dst: va_start
      Src: /src/dovecot/src/config/old-set-parser.c:32,1
    - Dst: i_warning
      Src: /src/dovecot/src/config/old-set-parser.c:33,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/config/old-set-parser.c:35,1
    - Dst: va_end
      Src: /src/dovecot/src/config/old-set-parser.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct config_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 37
    functionName: obsolete
    functionSourceFile: /src/dovecot/src/config/old-set-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_vprintf
    - i_warning
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void obsolete(struct config_parser_context *ctx, const char *str, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_history_get
      Src: /src/dovecot/src/config/old-set-parser.c:42,1
    - Dst: has_config_version
      Src: /src/dovecot/src/config/old-set-parser.c:45,1
    - Dst: array_foreach
      Src: /src/dovecot/src/config/old-set-parser.c:48,1
    - Dst: version_cmp
      Src: /src/dovecot/src/config/old-set-parser.c:49,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/old-set-parser.c:52,1
    - Dst: obsolete
      Src: /src/dovecot/src/config/old-set-parser.c:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - line
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 39
    functionDepth: 3
    functionLinenumber: 39
    functionLinenumberEnd: 59
    functionName: old_settings_handle_rename
    functionSourceFile: /src/dovecot/src/config/old-set-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - settings_history_get
    - array_foreach
    - has_config_version
    - obsolete
    - version_cmp
    linkageType: ''
    returnType: void
    signature: "void old_settings_handle_rename(struct config_parser_context *ctx,\n\t\t\t\t
      \      struct config_line *line)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: old_settings_handle_rename
      Src: /src/dovecot/src/config/old-set-parser.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - line
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 61
    functionDepth: 4
    functionLinenumber: 61
    functionLinenumberEnd: 80
    functionName: old_settings_handle
    functionSourceFile: /src/dovecot/src/config/old-set-parser.c
    functionUses: 0
    functionsReached:
    - old_settings_handle_rename
    linkageType: ''
    returnType: void
    signature: "void old_settings_handle(struct config_parser_context *ctx,\n\t\t\t
      struct config_line *line)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_history_get
      Src: /src/dovecot/src/config/old-set-parser.c:86,1
    - Dst: has_config_version
      Src: /src/dovecot/src/config/old-set-parser.c:89,1
    - Dst: array_foreach
      Src: /src/dovecot/src/config/old-set-parser.c:92,1
    - Dst: version_cmp
      Src: /src/dovecot/src/config/old-set-parser.c:93,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/old-set-parser.c:95,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/old-set-parser.c:96,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - dovecot_config_version
    - key
    - key_with_path
    - old_default_r
    argTypes:
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 102
    functionName: old_settings_default
    functionSourceFile: /src/dovecot/src/config/old-set-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - settings_history_get
    - array_foreach
    - has_config_version
    - version_cmp
    linkageType: ''
    returnType: bool
    signature: "bool old_settings_default(const char *dovecot_config_version,\n\t\t\t
      \ const char *key, const char *key_with_path,\n\t\t\t  const char **old_default_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_history_get
      Src: /src/dovecot/src/config/old-set-parser.c:107,1
    - Dst: has_config_version
      Src: /src/dovecot/src/config/old-set-parser.c:111,1
    - Dst: array_foreach
      Src: /src/dovecot/src/config/old-set-parser.c:114,1
    - Dst: version_cmp
      Src: /src/dovecot/src/config/old-set-parser.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - dovecot_config_version
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 120
    functionName: old_settings_default_changes_count
    functionSourceFile: /src/dovecot/src/config/old-set-parser.c
    functionUses: 0
    functionsReached:
    - settings_history_get
    - version_cmp
    - has_config_version
    - array_foreach
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int old_settings_default_changes_count(const char *dovecot_config_version)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_strcut
      Src: /src/dovecot/src/config/doveconf.c:80,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/doveconf.c:82,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:84,1
    - Dst: strchr
      Src: /src/dovecot/src/config/doveconf.c:89,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/doveconf.c:90,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:91,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:101,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:107,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/doveconf.c:108,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:110,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/doveconf.c:116,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 2
    argNames:
    - set
    - ctx
    argTypes:
    - struct config_export_setting*
    - struct config_dump_human_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 117
    functionName: config_request_get_strings
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strconcat
    - array_push_back
    - i_assert
    - t_strcut
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void config_request_get_strings(const struct config_export_setting
      *set,\n\t\t\t   struct config_dump_human_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 136
    functionName: config_string_cmp
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int config_string_cmp(const char *const *p1, const char *const *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/config/doveconf.c:164,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:168,1
    - Dst: str_data
      Src: /src/dovecot/src/config/doveconf.c:168,1
    - Dst: str_len
      Src: /src/dovecot/src/config/doveconf.c:169,1
    - Dst: array_foreach
      Src: /src/dovecot/src/config/doveconf.c:171,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:172,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/doveconf.c:173,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - filter_parser
    - output
    - list_prefix
    - indent
    argTypes:
    - struct config_filter_parser*
    - struct ostream*
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 177
    functionName: config_dump_human_include_group
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - t_strdup_printf
    - array_foreach
    - array_is_empty
    - o_stream_nsend
    - o_stream_nsend_str
    linkageType: ''
    returnType: bool
    signature: "bool config_dump_human_include_group(struct config_filter_parser *filter_parser,\n\t\t\t\tstruct
      ostream *output,\n\t\t\t\tconst string_t *list_prefix,\n\t\t\t\tunsigned int
      indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_version
      Src: /src/dovecot/src/config/doveconf.c:188,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/config/doveconf.c:191,1
    - Dst: p_new
      Src: /src/dovecot/src/config/doveconf.c:192,1
    - Dst: str_new
      Src: /src/dovecot/src/config/doveconf.c:194,1
    - Dst: i_array_init
      Src: /src/dovecot/src/config/doveconf.c:195,1
    - Dst: config_export_init
      Src: /src/dovecot/src/config/doveconf.c:198,1
    - Dst: config_filter_get_path_prefix
      Src: /src/dovecot/src/config/doveconf.c:200,1
    - Dst: config_export_set_module_parsers
      Src: /src/dovecot/src/config/doveconf.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - scope
    - filter_parser
    argTypes:
    - enum config_dump_scope
    - struct config_filter_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 205
    functionName: config_dump_human_init
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - config_parsed_get_version
    - p_new
    - config_export_set_module_parsers
    - config_filter_get_path_prefix
    - str_new
    - config_export_init
    linkageType: ''
    returnType: struct config_dump_human_context
    signature: "struct config_dump_human_context *\nconfig_dump_human_init(enum config_dump_scope
      scope,\n\t\t       struct config_filter_parser *filter_parser)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/config/doveconf.c:209,1
    - Dst: pool_unref
      Src: /src/dovecot/src/config/doveconf.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct config_dump_human_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: config_dump_human_deinit
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - array_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void config_dump_human_deinit(struct config_dump_human_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/config/doveconf.c:215,1
    - Dst: strchr
      Src: /src/dovecot/src/config/doveconf.c:220,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/doveconf.c:222,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/doveconf.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: value_need_quote
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - strchr
    - strlen
    - i_isspace
    linkageType: ''
    returnType: bool
    signature: bool value_need_quote(const char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/config/doveconf.c:234,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/doveconf.c:241,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - input
    - secret_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 243
    functionName: find_next_secret
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - i_assert
    - strstr
    linkageType: ''
    returnType: char
    signature: char *find_next_secret(const char *input, const char **secret_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/config/doveconf.c:255,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/doveconf.c:258,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/doveconf.c:267,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/config/doveconf.c:268,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:269,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:271,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/doveconf.c:275,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/doveconf.c:277,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/config/doveconf.c:278,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:279,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:281,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 4
    argNames:
    - output
    - _ptr
    - optr
    - quote
    argTypes:
    - struct ostream*
    - char**
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 287
    functionName: hide_url_userpart_from_value
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_escaped
    - i_isspace
    - o_stream_nsend
    - str_truncate
    - o_stream_nsend_str
    linkageType: ''
    returnType: bool
    signature: "bool hide_url_userpart_from_value(struct ostream *output, const char
      **_ptr,\n\t\t\t     const char **optr, bool quote)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/config/doveconf.c:293,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/config/doveconf.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - key
    - eptr
    - suffix
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 295
    functionName: key_ends_with
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - strlen
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: "bool key_ends_with(const char *key, const char *eptr,\n\t\t\t\t const
      char *suffix)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: value_need_quote
      Src: /src/dovecot/src/config/doveconf.c:301,1
    - Dst: key_ends_with
      Src: /src/dovecot/src/config/doveconf.c:305,1
    - Dst: key_ends_with
      Src: /src/dovecot/src/config/doveconf.c:306,1
    - Dst: key_ends_with
      Src: /src/dovecot/src/config/doveconf.c:307,1
    - Dst: key_ends_with
      Src: /src/dovecot/src/config/doveconf.c:308,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/config/doveconf.c:309,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/doveconf.c:310,1
    - Dst: find_next_secret
      Src: /src/dovecot/src/config/doveconf.c:318,1
    - Dst: strstr
      Src: /src/dovecot/src/config/doveconf.c:319,1
    - Dst: strlen
      Src: /src/dovecot/src/config/doveconf.c:320,1
    - Dst: hide_url_userpart_from_value
      Src: /src/dovecot/src/config/doveconf.c:321,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/config/doveconf.c:328,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/doveconf.c:331,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/doveconf.c:335,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/doveconf.c:339,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/config/doveconf.c:340,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:341,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:344,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:347,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/doveconf.c:348,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/doveconf.c:349,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/doveconf.c:364,1
    - Dst: str_escape
      Src: /src/dovecot/src/config/doveconf.c:364,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/doveconf.c:366,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 46
    argCount: 3
    argNames:
    - output
    - key
    - value
    argTypes:
    - struct ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 297
    functionDepth: 2
    functionLinenumber: 297
    functionLinenumberEnd: 369
    functionName: hide_secrets_from_value
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_begins_with
    - str_append_escaped
    - i_isalnum
    - strlen
    - i_isspace
    - hide_url_userpart_from_value
    - str_escape
    - find_next_secret
    - o_stream_nsend
    - value_need_quote
    - o_stream_nsend_str
    - strstr
    - key_ends_with
    linkageType: ''
    returnType: bool
    signature: "bool hide_secrets_from_value(struct ostream *output, const char *key,\n\t\t\tconst
      char *value)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/config/doveconf.c:377,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/doveconf.c:383,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/doveconf.c:397,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/doveconf.c:397,1
    - Dst: config_parsed_key_lookup
      Src: /src/dovecot/src/config/doveconf.c:398,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - key_prefix
    - strip_prefix
    - strip_prefix2
    argTypes:
    - char**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 404
    functionName: try_strip_prefix
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - str_begins
    - config_parsed_key_lookup
    - t_strcut
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void try_strip_prefix(const char **key_prefix, const char *strip_prefix,\n\t\t
      const char *strip_prefix2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/doveconf.c:416,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/doveconf.c:417,1
    - Dst: strlen
      Src: /src/dovecot/src/config/doveconf.c:430,1
    - Dst: strlen
      Src: /src/dovecot/src/config/doveconf.c:432,1
    - Dst: strlen
      Src: /src/dovecot/src/config/doveconf.c:434,1
    - Dst: config_export_all_parsers
      Src: /src/dovecot/src/config/doveconf.c:435,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/doveconf.c:436,1
    - Dst: array_sort
      Src: /src/dovecot/src/config/doveconf.c:438,1
    - Dst: array_get
      Src: /src/dovecot/src/config/doveconf.c:439,1
    - Dst: strchr
      Src: /src/dovecot/src/config/doveconf.c:441,1
    - Dst: config_parsed_key_lookup
      Src: /src/dovecot/src/config/doveconf.c:444,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/doveconf.c:445,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/doveconf.c:453,1
    - Dst: strchr
      Src: /src/dovecot/src/config/doveconf.c:455,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/doveconf.c:456,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:458,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/doveconf.c:459,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/doveconf.c:460,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 11
    argNames:
    - ctx
    - output
    - indent
    - filter_name
    - setting_name_filter
    - alt_setting_name_filter
    - alt_setting_name_filter2
    - hide_key
    - default_hide_passwords
    - strip_prefix
    - strip_prefix2
    argTypes:
    - struct config_dump_human_context*
    - struct ostream*
    - unsigned int
    - char*
    - char*
    - char*
    - char*
    - bool
    - bool
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 461
    functionName: config_dump_human_output
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_array_init
    - i_unreached
    - array_push_back
    - config_parsed_key_lookup
    - strlen
    - array_get
    - config_export_all_parsers
    - t_strdup_until
    - ARRAY_TYPE
    - array_sort
    - i_assert
    - t_strcut
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void config_dump_human_output(struct config_dump_human_context *ctx,\n\t\t\t
      struct ostream *output, unsigned int indent,\n\t\t\t const char *filter_name,\n\t\t\t
      const char *setting_name_filter,\n\t\t\t const char *alt_setting_name_filter,\n\t\t\t
      const char *alt_setting_name_filter2,\n\t\t\t bool hide_key, bool default_hide_passwords,\n\t\t\t
      const char *strip_prefix, const char *strip_prefix2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/config/doveconf.c:680,1
    - Dst: strpbrk
      Src: /src/dovecot/src/config/doveconf.c:683,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/doveconf.c:686,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/doveconf.c:687,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/config/doveconf.c:688,1
    - Dst: strlen
      Src: /src/dovecot/src/config/doveconf.c:688,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/doveconf.c:689,1
    - Dst: str_c
      Src: /src/dovecot/src/config/doveconf.c:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 691
    functionName: filter_name_escaped
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_append_escaped
    - strlen
    - strpbrk
    - settings_section_unescape
    linkageType: ''
    returnType: char
    signature: char *filter_name_escaped(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/config/doveconf.c:700,1
    - Dst: str_append_max
      Src: /src/dovecot/src/config/doveconf.c:701,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:703,1
    - Dst: str_append
      Src: /src/dovecot/src/config/doveconf.c:707,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:708,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/doveconf.c:709,1
    - Dst: filter_name_escaped
      Src: /src/dovecot/src/config/doveconf.c:710,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - str
    - indent
    - filter
    argTypes:
    - string_t*
    - unsigned int*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 693
    functionDepth: 3
    functionLinenumber: 693
    functionLinenumberEnd: 713
    functionName: config_dump_named_filters
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - t_strdup_until
    - str_append_max
    - str_append
    - filter_name_escaped
    linkageType: ''
    returnType: void
    signature: "void config_dump_named_filters(string_t *str, unsigned int *indent,\n\t\t\t
      \ const struct config_filter *filter)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: str_append_max
      Src: /src/dovecot/src/config/doveconf.c:720,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:721,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/config/doveconf.c:721,1
    - Dst: IPADDR_IS_V4
      Src: /src/dovecot/src/config/doveconf.c:723,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:725,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:728,1
    - Dst: str_append
      Src: /src/dovecot/src/config/doveconf.c:730,1
    - Dst: str_append_max
      Src: /src/dovecot/src/config/doveconf.c:735,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:736,1
    - Dst: str_append_max
      Src: /src/dovecot/src/config/doveconf.c:741,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:742,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/config/doveconf.c:742,1
    - Dst: IPADDR_IS_V4
      Src: /src/dovecot/src/config/doveconf.c:744,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:746,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:749,1
    - Dst: str_append
      Src: /src/dovecot/src/config/doveconf.c:751,1
    - Dst: str_append_max
      Src: /src/dovecot/src/config/doveconf.c:755,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:756,1
    - Dst: config_dump_named_filters
      Src: /src/dovecot/src/config/doveconf.c:759,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - str
    - indent
    - filter
    argTypes:
    - string_t*
    - unsigned int
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 715
    functionDepth: 4
    functionLinenumber: 715
    functionLinenumberEnd: 761
    functionName: config_dump_filter_begin
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - IPADDR_IS_V4
    - net_ip2addr
    - str_append_max
    - str_append
    - config_dump_named_filters
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int config_dump_filter_begin(string_t *str, unsigned int
      indent,\n\t\t\t const struct config_filter *filter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:769,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:770,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - output
    - indent
    - parent_indent
    argTypes:
    - struct ostream*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 772
    functionName: config_dump_filter_end
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: "void config_dump_filter_end(struct ostream *output, unsigned int indent,\n\t\t
      \      unsigned int parent_indent)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/config/doveconf.c:794,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/doveconf.c:808,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/config/doveconf.c:823,1
    - Dst: str_len
      Src: /src/dovecot/src/config/doveconf.c:831,1
    - Dst: config_dump_human_init
      Src: /src/dovecot/src/config/doveconf.c:837,1
    - Dst: config_dump_filter_begin
      Src: /src/dovecot/src/config/doveconf.c:839,1
    - Dst: str_append_str
      Src: /src/dovecot/src/config/doveconf.c:841,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/doveconf.c:845,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/doveconf.c:845,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:848,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/doveconf.c:853,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/doveconf.c:855,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/config/doveconf.c:856,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:859,1
    - Dst: config_dump_human_output
      Src: /src/dovecot/src/config/doveconf.c:861,1
    - Dst: config_dump_human_include_group
      Src: /src/dovecot/src/config/doveconf.c:870,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/doveconf.c:877,1
    - Dst: config_dump_human_deinit
      Src: /src/dovecot/src/config/doveconf.c:879,1
    - Dst: config_dump_human_filter_path
      Src: /src/dovecot/src/config/doveconf.c:881,1
    - Dst: config_dump_filter_end
      Src: /src/dovecot/src/config/doveconf.c:887,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:890,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/doveconf.c:891,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 63
    argCount: 9
    argNames:
    - scope
    - set_filter_path
    - filter_parser
    - output
    - indent
    - list_prefix
    - list_prefix_sent
    - hide_key
    - hide_passwords
    argTypes:
    - enum config_dump_scope
    - char**
    - struct config_filter_parser*
    - struct ostream*
    - unsigned int
    - string_t*
    - bool*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 774
    functionDepth: 5
    functionLinenumber: 774
    functionLinenumberEnd: 893
    functionName: config_dump_human_filter_path
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 1
    functionsReached:
    - str_len
    - t_strdup_printf
    - t_str_replace
    - t_strcut
    - config_dump_human_include_group
    - t_strarray_join
    - config_dump_human_output
    - o_stream_nsend
    - config_dump_human_init
    - config_dump_filter_end
    - config_dump_human_deinit
    - config_dump_filter_begin
    - i_assert
    - strcmp
    - str_begins
    - str_append_str
    - config_dump_human_filter_path
    - str_truncate
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void config_dump_human_filter_path(enum config_dump_scope scope,\n\t\t\t
      \     const char *const *set_filter_path,\n\t\t\t      struct config_filter_parser
      *filter_parser,\n\t\t\t      struct ostream *output, unsigned int indent,\n\t\t\t
      \     string_t *list_prefix, bool *list_prefix_sent,\n\t\t\t      bool hide_key,
      bool hide_passwords)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/config/doveconf.c:906,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/config/doveconf.c:907,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/config/doveconf.c:908,1
    - Dst: config_parsed_get_global_filter_parser
      Src: /src/dovecot/src/config/doveconf.c:910,1
    - Dst: config_dump_human_init
      Src: /src/dovecot/src/config/doveconf.c:914,1
    - Dst: config_dump_human_output
      Src: /src/dovecot/src/config/doveconf.c:915,1
    - Dst: config_dump_human_deinit
      Src: /src/dovecot/src/config/doveconf.c:917,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/doveconf.c:919,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/config/doveconf.c:923,1
    - Dst: config_dump_human_filter_path
      Src: /src/dovecot/src/config/doveconf.c:932,1
    - Dst: config_dump_human_include_group
      Src: /src/dovecot/src/config/doveconf.c:938,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/doveconf.c:940,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/config/doveconf.c:942,1
    - Dst: i_error
      Src: /src/dovecot/src/config/doveconf.c:944,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/config/doveconf.c:947,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 4
    argNames:
    - scope
    - setting_name_filter
    - hide_key
    - hide_passwords
    argTypes:
    - enum config_dump_scope
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 895
    functionDepth: 6
    functionLinenumber: 895
    functionLinenumberEnd: 949
    functionName: config_dump_human
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - config_dump_human_include_group
    - o_stream_create_fd
    - t_str_new
    - i_error
    - o_stream_uncork
    - o_stream_cork
    - config_dump_human_deinit
    - config_dump_human_output
    - o_stream_set_no_error_handling
    - t_strsplit
    - config_parsed_get_global_filter_parser
    - config_dump_human_filter_path
    - o_stream_nsend
    - config_dump_human_init
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int config_dump_human(enum config_dump_scope scope,\n\t\t  const char
      *setting_name_filter,\n\t\t  bool hide_key, bool hide_passwords)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/config/doveconf.c:944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 946
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 57
    functionsReached:
    - i_error
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(config_parsed_get_errors(config), str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/config/doveconf.c:961,1
    - Dst: str_append
      Src: /src/dovecot/src/config/doveconf.c:962,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:964,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/doveconf.c:966,1
    - Dst: str_append
      Src: /src/dovecot/src/config/doveconf.c:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - str
    - fmt
    - num
    argTypes:
    - string_t*
    - struct hostname_format*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 968
    functionName: hostname_format_write
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - str_truncate
    linkageType: ''
    returnType: void
    signature: "void hostname_format_write(string_t *str, const struct hostname_format
      *fmt,\n\t\t      unsigned int num)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/config/doveconf.c:982,1
    - Dst: strchr
      Src: /src/dovecot/src/config/doveconf.c:985,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/doveconf.c:987,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/doveconf.c:988,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/config/doveconf.c:993,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/doveconf.c:998,1
    - Dst: strlen
      Src: /src/dovecot/src/config/doveconf.c:1002,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/config/doveconf.c:1003,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/config/doveconf.c:1007,1
    - Dst: t_strndup
      Src: /src/dovecot/src/config/doveconf.c:1013,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/doveconf.c:1015,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/doveconf.c:1021,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/config/doveconf.c:1022,1
    - Dst: hostname_format_write
      Src: /src/dovecot/src/config/doveconf.c:1024,1
    - Dst: guid_128_host_hash_get
      Src: /src/dovecot/src/config/doveconf.c:1026,1
    - Dst: str_c
      Src: /src/dovecot/src/config/doveconf.c:1026,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/doveconf.c:1027,1
    - Dst: memcpy
      Src: /src/dovecot/src/config/doveconf.c:1028,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/doveconf.c:1030,1
    - Dst: t_strdup
      Src: /src/dovecot/src/config/doveconf.c:1032,1
    - Dst: str_c
      Src: /src/dovecot/src/config/doveconf.c:1032,1
    - Dst: hostname_format_write
      Src: /src/dovecot/src/config/doveconf.c:1033,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/config/doveconf.c:1034,1
    - Dst: i_error
      Src: /src/dovecot/src/config/doveconf.c:1035,1
    - Dst: str_c
      Src: /src/dovecot/src/config/doveconf.c:1036,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/config/doveconf.c:1039,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/config/doveconf.c:1039,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/config/doveconf.c:1042,1
    - Dst: lib_exit
      Src: /src/dovecot/src/config/doveconf.c:1045,1
    - Dst: t_strdup
      Src: /src/dovecot/src/config/doveconf.c:1047,1
    - Dst: str_c
      Src: /src/dovecot/src/config/doveconf.c:1047,1
    - Dst: hostname_format_write
      Src: /src/dovecot/src/config/doveconf.c:1048,1
    - Dst: printf
      Src: /src/dovecot/src/config/doveconf.c:1049,1
    - Dst: str_c
      Src: /src/dovecot/src/config/doveconf.c:1050,1
    - Dst: lib_exit
      Src: /src/dovecot/src/config/doveconf.c:1051,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 62
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 970
    functionDepth: 2
    functionLinenumber: 970
    functionLinenumberEnd: 1053
    functionName: hostname_verify_format
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_c
    - i_isdigit
    - strlen
    - hash_table_create_direct
    - t_strdup
    - hostname_format_write
    - memcpy
    - t_str_new
    - POINTER_CAST
    - printf
    - i_fatal
    - lib_exit
    - guid_128_host_hash_get
    - hash_table_insert
    - hash_table_destroy
    - i_zero
    - t_strndup
    - hash_table_lookup
    - i_assert
    - i_error
    - t_strdup_until
    - POINTER_CAST_TO
    linkageType: ''
    returnType: void
    signature: void hostname_verify_format(const char *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_setting
      Src: /src/dovecot/src/config/doveconf.c:1059,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/doveconf.c:1061,1
    - Dst: t_readlink
      Src: /src/dovecot/src/config/doveconf.c:1062,1
    - Dst: i_error
      Src: /src/dovecot/src/config/doveconf.c:1064,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/doveconf.c:1068,1
    - Dst: i_warning
      Src: /src/dovecot/src/config/doveconf.c:1069,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - config_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1055
    functionDepth: 1
    functionLinenumber: 1055
    functionLinenumberEnd: 1072
    functionName: check_wrong_config
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - config_parsed_get_setting
    - strcmp
    - i_error
    - i_warning
    - t_strconcat
    - t_readlink
    linkageType: ''
    returnType: void
    signature: void check_wrong_config(const char *config_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - status
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1079
    functionName: failure_exit_callback
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void failure_exit_callback(int *status)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/config/doveconf.c:1102,1
    - Dst: i_set_failure_exit_callback
      Src: /src/dovecot/src/config/doveconf.c:1104,1
    - Dst: master_service_init
      Src: /src/dovecot/src/config/doveconf.c:1107,1
    - Dst: t_strdup
      Src: /src/dovecot/src/config/doveconf.c:1109,1
    - Dst: master_service_get_config_path
      Src: /src/dovecot/src/config/doveconf.c:1109,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/config/doveconf.c:1111,1
    - Dst: master_getopt
      Src: /src/dovecot/src/config/doveconf.c:1112,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/config/doveconf.c:1127,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/doveconf.c:1128,1
    - Dst: config_filter_parse
      Src: /src/dovecot/src/config/doveconf.c:1129,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/config/doveconf.c:1130,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/doveconf.c:1133,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/doveconf.c:1135,1
    - Dst: master_service_get_config_path
      Src: /src/dovecot/src/config/doveconf.c:1179,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/doveconf.c:1182,1
    - Dst: hostname_verify_format
      Src: /src/dovecot/src/config/doveconf.c:1185,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/doveconf.c:1199,1
    - Dst: strchr
      Src: /src/dovecot/src/config/doveconf.c:1230,1
    - Dst: printf
      Src: /src/dovecot/src/config/doveconf.c:1235,1
    - Dst: fflush
      Src: /src/dovecot/src/config/doveconf.c:1238,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/config/doveconf.c:1240,1
    - Dst: settings_set_config_binary
      Src: /src/dovecot/src/config/doveconf.c:1241,1
    - Dst: config_parse_load_modules
      Src: /src/dovecot/src/config/doveconf.c:1242,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/config/doveconf.c:1244,1
    - Dst: config_parser_deinit
      Src: /src/dovecot/src/config/doveconf.c:1245,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/config/doveconf.c:1246,1
    - Dst: module_get_symbol_quiet
      Src: /src/dovecot/src/config/doveconf.c:1254,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/doveconf.c:1255,1
    - Dst: printf
      Src: /src/dovecot/src/config/doveconf.c:1257,1
    - Dst: config_parse_file
      Src: /src/dovecot/src/config/doveconf.c:1268,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 122
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1081
    functionDepth: 5
    functionLinenumber: 1081
    functionLinenumberEnd: 1271
    functionName: main
    functionSourceFile: /src/dovecot/src/config/doveconf.c
    functionUses: 0
    functionsReached:
    - config_filter_parse
    - strchr
    - t_strdup_printf
    - t_split_key_value_eq
    - t_strdup
    - master_service_init
    - printf
    - module_get_symbol_quiet
    - i_fatal
    - master_service_init_finish
    - master_getopt
    - config_parser_deinit
    - settings_set_config_binary
    - config_parse_load_modules
    - pool_datastack_create
    - module_dir_unload
    - strcmp
    - fflush
    - config_parse_file
    - master_service_get_config_path
    - getenv
    - i_set_failure_prefix
    - i_set_failure_exit_callback
    - hostname_verify_format
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-filter.c:26,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-filter.c:29,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - mask
    - filter
    argTypes:
    - struct config_filter*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 34
    functionName: config_filter_match_service
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int config_filter_match_service(const struct config_filter *mask,\n\t\t\t\t
      \      const struct config_filter *filter)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dns_match_wildcard
      Src: /src/dovecot/src/config/config-filter.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - mask
    - filter
    argTypes:
    - struct config_filter*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 53
    functionName: config_filter_match_rest
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - dns_match_wildcard
    linkageType: ''
    returnType: int
    signature: "int config_filter_match_rest(const struct config_filter *mask,\n\t\t\t\t
      \   const struct config_filter *filter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_match_service
      Src: /src/dovecot/src/config/config-filter.c:78,1
    - Dst: config_filter_match_rest
      Src: /src/dovecot/src/config/config-filter.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - mask
    - filter
    argTypes:
    - struct config_filter*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 73
    functionDepth: 3
    functionLinenumber: 73
    functionLinenumberEnd: 83
    functionName: config_filter_match_no_recurse
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - config_filter_match_rest
    - config_filter_match_service
    linkageType: ''
    returnType: int
    signature: "int config_filter_match_no_recurse(const struct config_filter *mask,\n\t\t\t\t
      \  const struct config_filter *filter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_match_no_recurse
      Src: /src/dovecot/src/config/config-filter.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - mask
    - filter
    argTypes:
    - struct config_filter*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 85
    functionDepth: 4
    functionLinenumber: 85
    functionLinenumberEnd: 95
    functionName: config_filter_match
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - config_filter_match_no_recurse
    linkageType: ''
    returnType: bool
    signature: "bool config_filter_match(const struct config_filter *mask,\n\t\t\t
      const struct config_filter *filter)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/config/config-filter.c:100,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/config/config-filter.c:105,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/config/config-filter.c:110,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/config/config-filter.c:113,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/config/config-filter.c:116,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - struct config_filter*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 121
    functionName: config_filters_equal_no_recursion
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool config_filters_equal_no_recursion(const struct config_filter
      *f1,\n\t\t\t\t       const struct config_filter *f2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: config_filters_equal_no_recursion
      Src: /src/dovecot/src/config/config-filter.c:127,1
    - Dst: config_filters_equal_without_defaults
      Src: /src/dovecot/src/config/config-filter.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - struct config_filter*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 138
    functionName: config_filters_equal_without_defaults
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 1
    functionsReached:
    - config_filters_equal_no_recursion
    - config_filters_equal_without_defaults
    linkageType: ''
    returnType: bool
    signature: "bool config_filters_equal_without_defaults(const struct config_filter
      *f1,\n\t\t\t\t      const struct config_filter *f2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_filters_equal_without_defaults
      Src: /src/dovecot/src/config/config-filter.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - struct config_filter*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 150
    functionName: config_filters_equal
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - config_filters_equal_without_defaults
    linkageType: ''
    returnType: bool
    signature: "bool config_filters_equal(const struct config_filter *f1,\n\t\t\t
      \ const struct config_filter *f2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: crc32_str_more
      Src: /src/dovecot/src/config/config-filter.c:156,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/config/config-filter.c:158,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/config/config-filter.c:160,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/config/config-filter.c:164,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/config/config-filter.c:166,1
    - Dst: crc32_str_more
      Src: /src/dovecot/src/config/config-filter.c:170,1
    - Dst: crc32_str_more
      Src: /src/dovecot/src/config/config-filter.c:172,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/config/config-filter.c:174,1
    - Dst: config_filter_hash_crc
      Src: /src/dovecot/src/config/config-filter.c:177,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - filter
    - crc
    argTypes:
    - struct config_filter*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 178
    functionName: config_filter_hash_crc
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 1
    functionsReached:
    - config_filter_hash_crc
    - crc32_data_more
    - crc32_str_more
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int config_filter_hash_crc(const struct config_filter *filter,
      uint32_t crc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_hash_crc
      Src: /src/dovecot/src/config/config-filter.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: config_filter_hash
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - config_filter_hash_crc
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int config_filter_hash(const struct config_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_filters_equal
      Src: /src/dovecot/src/config/config-filter.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 4
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: config_filter_is_empty
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - config_filters_equal
    linkageType: ''
    returnType: bool
    signature: bool config_filter_is_empty(const struct config_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_filters_equal
      Src: /src/dovecot/src/config/config-filter.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 4
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: config_filter_is_empty_defaults
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 0
    functionsReached:
    - config_filters_equal
    linkageType: ''
    returnType: bool
    signature: bool config_filter_is_empty_defaults(const struct config_filter *filter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_get_path_str
      Src: /src/dovecot/src/config/config-filter.c:200,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-filter.c:203,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-filter.c:204,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-filter.c:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - path
    - filter
    argTypes:
    - string_t**
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 207
    functionName: config_filter_get_path_str
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 1
    functionsReached:
    - str_append
    - t_str_new
    - str_append_c
    - config_filter_get_path_str
    linkageType: ''
    returnType: void
    signature: void config_filter_get_path_str(string_t **path, const struct config_filter
      *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_get_path_str
      Src: /src/dovecot/src/config/config-filter.c:212,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-filter.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 214
    functionName: config_filter_get_path_prefix
    functionSourceFile: /src/dovecot/src/config/config-filter.c
    functionUses: 1
    functionsReached:
    - str_c
    - config_filter_get_path_str
    linkageType: ''
    returnType: char
    signature: char *config_filter_get_path_prefix(const struct config_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/config/main.c:14,1
    - Dst: config_connection_create
      Src: /src/dovecot/src/config/main.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 16
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/config/main.c
    functionUses: 0
    functionsReached:
    - config_connection_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/config/main.c:23,1
    - Dst: master_getopt
      Src: /src/dovecot/src/config/main.c:25,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/config/main.c:27,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/config/main.c:29,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/config/main.c:30,1
    - Dst: settings_set_config_binary
      Src: /src/dovecot/src/config/main.c:32,1
    - Dst: config_parse_load_modules
      Src: /src/dovecot/src/config/main.c:33,1
    - Dst: config_connections_init
      Src: /src/dovecot/src/config/main.c:35,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/config/main.c:40,1
    - Dst: master_service_run
      Src: /src/dovecot/src/config/main.c:42,1
    - Dst: config_connections_destroy_all
      Src: /src/dovecot/src/config/main.c:43,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/config/main.c:45,1
    - Dst: config_parser_deinit
      Src: /src/dovecot/src/config/main.c:46,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/config/main.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 18
    functionDepth: 5
    functionLinenumber: 18
    functionLinenumberEnd: 49
    functionName: main
    functionSourceFile: /src/dovecot/src/config/main.c
    functionUses: 0
    functionsReached:
    - restrict_access_by_env
    - master_service_run
    - config_connections_destroy_all
    - settings_set_config_binary
    - config_parse_load_modules
    - master_service_init_finish
    - restrict_access_allow_coredumps
    - module_dir_unload
    - master_getopt
    - config_parser_deinit
    - config_connections_init
    - master_service_init
    - master_service_deinit
    - master_service_init_log
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - scope
    - ','
    - flags
    - ','
    - version
    - ','
    - path_prefix
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: config_export_init
    functionSourceFile: /src/dovecot/src/config/config-request.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: config_export_init(scope, flags, version, path_prefix, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - section
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: config_section_is_in_list
    functionSourceFile: /src/dovecot/src/config/config-parser-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: config_section_is_in_list(section)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser-private.h:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - union config_module_parser_setting*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: set_str_expanded
    functionSourceFile: /src/dovecot/src/config/config-parser-private.h
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      set_str_expanded(const union config_module_parser_setting *value)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-request.c:38,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:42,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/config/config-request.c:45,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-request.c:49,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - str
    - size
    argTypes:
    - string_t*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 50
    functionName: config_export_size
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - str_append_c
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void config_export_size(string_t *str, uoff_t size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-request.c:57,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:61,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-request.c:82,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - str
    - stamp
    argTypes:
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 83
    functionName: config_export_time
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void config_export_time(string_t *str, unsigned int stamp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:88,1
    - Dst: config_export_time
      Src: /src/dovecot/src/config/config-request.c:90,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-request.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - str
    - stamp_msecs
    argTypes:
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 93
    functionName: config_export_time_msecs
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - config_export_time
    linkageType: ''
    returnType: void
    signature: void config_export_time_msecs(string_t *str, unsigned int stamp_msecs)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:102,1
    - Dst: config_export_size
      Src: /src/dovecot/src/config/config-request.c:108,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-request.c:113,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:120,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-request.c:124,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-request.c:126,1
    - Dst: config_export_time
      Src: /src/dovecot/src/config/config-request.c:134,1
    - Dst: config_export_time_msecs
      Src: /src/dovecot/src/config/config-request.c:136,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-request.c:142,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:152,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 3
    argNames:
    - str
    - value
    - type
    argTypes:
    - string_t*
    - void*
    - enum setting_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 159
    functionName: config_export_type
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - config_export_time_msecs
    - config_export_size
    - config_export_time
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool config_export_type(string_t *str, const void *value,\n\t\t\tenum
      setting_type type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/config/config-request.c:170,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-request.c:171,1
    - Dst: config_export_type
      Src: /src/dovecot/src/config/config-request.c:172,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-request.c:173,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-request.c:176,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-request.c:176,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-request.c:178,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-request.c:178,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-request.c:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - old_default_value
    - info
    - def
    argTypes:
    - char*
    - struct setting_parser_info*
    - struct setting_define*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 161
    functionDepth: 4
    functionLinenumber: 161
    functionLinenumberEnd: 181
    functionName: get_default_value
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - i_unreached
    - config_export_type
    - str_truncate
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: char
    signature: "char *\nget_default_value(const char *old_default_value,\n\t\t  const
      struct setting_parser_info *info,\n\t\t  const struct setting_define *def)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/config-request.c:195,1
    - Dst: old_settings_default
      Src: /src/dovecot/src/config/config-request.c:198,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/config/config-request.c:204,1
    - Dst: str_array_length
      Src: /src/dovecot/src/config/config-request.c:205,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-request.c:206,1
    - Dst: t_new
      Src: /src/dovecot/src/config/config-request.c:206,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-request.c:206,1
    - Dst: t_array_init
      Src: /src/dovecot/src/config/config-request.c:207,1
    - Dst: array_append
      Src: /src/dovecot/src/config/config-request.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - def
    - val
    argTypes:
    - struct config_export_context*
    - struct setting_define*
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 210
    functionName: settings_check_old_export_array
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached:
    - t_new
    - str_array_length
    - old_settings_default
    - t_strsplit
    - t_array_init
    - ARRAY_TYPE
    - t_strconcat
    - array_append
    linkageType: ''
    returnType: void
    signature: "void settings_check_old_export_array(struct config_export_context
      *ctx,\n\t\t\t\tconst struct setting_define *def,\n\t\t\t\tconst ARRAY_TYPE(const_string)
      **val)"
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-request.c:227,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-request.c:272,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-request.c:288,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/config-request.c:294,1
    - Dst: old_settings_default
      Src: /src/dovecot/src/config/config-request.c:297,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-request.c:304,1
    - Dst: get_default_value
      Src: /src/dovecot/src/config/config-request.c:304,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-request.c:305,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:313,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-request.c:314,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:318,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-request.c:319,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:322,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-request.c:323,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:325,1
    - Dst: get_default_value
      Src: /src/dovecot/src/config/config-request.c:326,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/config/config-request.c:338,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-request.c:339,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/config/config-request.c:344,1
    - Dst: array_get
      Src: /src/dovecot/src/config/config-request.c:347,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-request.c:348,1
    - Dst: struct config_export_context*::callback
      Src: /src/dovecot/src/config/config-request.c:364,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-request.c:369,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-request.c:370,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-request.c:371,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-request.c:381,1
    - Dst: struct config_export_context*::callback
      Src: /src/dovecot/src/config/config-request.c:385,1
    - Dst: settings_check_old_export_array
      Src: /src/dovecot/src/config/config-request.c:398,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-request.c:401,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-request.c:402,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:403,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/config/config-request.c:404,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-request.c:412,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/config/config-request.c:413,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-request.c:414,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-request.c:426,1
    - Dst: struct config_export_context*::callback
      Src: /src/dovecot/src/config/config-request.c:428,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/config/config-request.c:430,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 137
    argCount: 2
    argNames:
    - ctx
    - module_parser
    argTypes:
    - struct config_export_context*
    - struct config_module_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 212
    functionDepth: 5
    functionLinenumber: 212
    functionLinenumberEnd: 433
    functionName: settings_export
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - t_strdup_printf
    - settings_section_escape
    - str_append_c
    - i_unreached
    - struct config_export_context*::callback
    - hash_table_insert
    - hash_table_is_created
    - array_get
    - set_str_expanded
    - settings_check_old_export_array
    - hash_table_lookup
    - i_assert
    - strcmp
    - old_settings_default
    - str_truncate
    - str_append
    - t_strconcat
    - get_default_value
    linkageType: ''
    returnType: void
    signature: "void settings_export(struct config_export_context *ctx,\n\t\tconst
      struct config_module_parser *module_parser)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/config/config-request.c:401,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-request.c:402,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-request.c:403,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/config/config-request.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 405
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 57
    functionsReached:
    - str_append
    - str_append_c
    - settings_section_escape
    - str_len
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(val, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/config/config-request.c:446,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-request.c:447,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-request.c:454,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-request.c:455,1
    - Dst: str_new
      Src: /src/dovecot/src/config/config-request.c:456,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/config/config-request.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 6
    argNames:
    - scope
    - flags
    - dovecot_config_version
    - path_prefix
    - callback
    - context
    argTypes:
    - enum config_dump_scope
    - enum config_dump_flags
    - char*
    - char*
    - config_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 460
    functionName: config_export_init
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - hash_table_create
    - str_new
    linkageType: ''
    returnType: struct config_export_context
    signature: "struct config_export_context *\nconfig_export_init(enum config_dump_scope
      scope,\n\t\t   enum config_dump_flags flags,\n\t\t   const char *dovecot_config_version,
      const char *path_prefix,\n\t\t   config_request_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - module_parsers
    argTypes:
    - struct config_export_context*
    - struct config_module_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 466
    functionName: config_export_set_module_parsers
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void config_export_set_module_parsers(struct config_export_context
      *ctx,\n\t\t\t\t      const struct config_module_parser *module_parsers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct config_export_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 473
    functionName: config_export_get_parser_count
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int config_export_get_parser_count(struct config_export_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/config/config-request.c:481,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/config/config-request.c:482,1
    - Dst: pool_unref
      Src: /src/dovecot/src/config/config-request.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct config_export_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 484
    functionName: config_export_free
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - hash_table_is_created
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void config_export_free(struct config_export_context **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_export_parser
      Src: /src/dovecot/src/config/config-request.c:496,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-request.c:497,1
    - Dst: config_export_free
      Src: /src/dovecot/src/config/config-request.c:502,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct config_export_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 504
    functionName: config_export_all_parsers
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 1
    functionsReached:
    - config_export_free
    - i_error
    - config_export_parser
    linkageType: ''
    returnType: int
    signature: int config_export_all_parsers(struct config_export_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - parser_idx
    argTypes:
    - struct config_export_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 511
    functionName: config_export_parser_get_info
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct setting_parser_info
    signature: "struct setting_parser_info *\nconfig_export_parser_get_info(struct
      config_export_context *ctx,\n\t\t\t      unsigned int parser_idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_export
      Src: /src/dovecot/src/config/config-request.c:524,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - parser_idx
    - error_r
    argTypes:
    - struct config_export_context*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 513
    functionDepth: 6
    functionLinenumber: 513
    functionLinenumberEnd: 525
    functionName: config_export_parser
    functionSourceFile: /src/dovecot/src/config/config-request.c
    functionUses: 1
    functionsReached:
    - settings_export
    linkageType: ''
    returnType: int
    signature: "int config_export_parser(struct config_export_context *ctx,\n\t\t\t
      unsigned int parser_idx, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:168,1
    - Dst: o_stream_pwrite
      Src: /src/dovecot/src/config/config-dump-full.c:171,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-dump-full.c:173,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/config/config-dump-full.c:174,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/config/config-dump-full.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - output
    - blob_size_offset
    argTypes:
    - struct ostream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 179
    functionName: output_blob_size
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - i_error
    - o_stream_get_error
    - o_stream_pwrite
    - i_assert
    linkageType: ''
    returnType: int
    signature: int output_blob_size(struct ostream *output, uoff_t blob_size_offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/config/config-dump-full.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum config_dump_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 186
    functionName: config_get_cache_dir
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - getenv
    linkageType: ''
    returnType: char
    signature: char *config_get_cache_dir(enum config_dump_flags flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_get_cache_dir
      Src: /src/dovecot/src/config/config-dump-full.c:195,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:200,1
    - Dst: array_count
      Src: /src/dovecot/src/config/config-dump-full.c:205,1
    - Dst: config_parsed_get_paths
      Src: /src/dovecot/src/config/config-dump-full.c:205,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:206,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:208,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:208,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:210,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:212,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:214,1
    - Dst: ST_MTIME_NSEC
      Src: /src/dovecot/src/config/config-dump-full.c:215,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:216,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:218,1
    - Dst: ST_CTIME_NSEC
      Src: /src/dovecot/src/config/config-dump-full.c:219,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:220,1
    - Dst: array_front
      Src: /src/dovecot/src/config/config-dump-full.c:224,1
    - Dst: config_parsed_get_paths
      Src: /src/dovecot/src/config/config-dump-full.c:224,1
    - Dst: master_service_get_binary_config_cache_path
      Src: /src/dovecot/src/config/config-dump-full.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 4
    argNames:
    - output
    - config
    - flags
    - cache_path_r
    argTypes:
    - struct ostream*
    - struct config_parsed*
    - enum config_dump_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 227
    functionName: config_dump_full_write_cache_paths
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - config_parsed_get_paths
    - strlen
    - ST_MTIME_NSEC
    - config_get_cache_dir
    - array_count
    - o_stream_nsend
    - array_front
    - ST_CTIME_NSEC
    - master_service_get_binary_config_cache_path
    linkageType: ''
    returnType: void
    signature: "void config_dump_full_write_cache_paths(struct ostream *output,\n\t\t\t\t
      \  struct config_parsed *config,\n\t\t\t\t   enum config_dump_flags flags,\n\t\t\t\t
      \  const char **cache_path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:208,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:208,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:210,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:212,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:214,1
    - Dst: ST_MTIME_NSEC
      Src: /src/dovecot/src/config/config-dump-full.c:215,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:216,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:218,1
    - Dst: ST_CTIME_NSEC
      Src: /src/dovecot/src/config/config-dump-full.c:219,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 221
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 54
    functionsReached:
    - strlen
    - o_stream_nsend
    - ST_MTIME_NSEC
    - ST_CTIME_NSEC
    linkageType: ''
    returnType: void
    signature: void array_foreach(config_parsed_get_paths(config), path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_all_keys
      Src: /src/dovecot/src/config/config-dump-full.c:234,1
    - Dst: i_new
      Src: /src/dovecot/src/config/config-dump-full.c:239,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/config/config-dump-full.c:240,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/config/config-dump-full.c:241,1
    - Dst: str_hash
      Src: /src/dovecot/src/config/config-dump-full.c:242,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/config/config-dump-full.c:250,1
    - Dst: i_free
      Src: /src/dovecot/src/config/config-dump-full.c:251,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - config
    - key_prefix
    - hash_table_size
    argTypes:
    - struct config_parsed*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 253
    functionName: config_dump_keys_hash_try
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - str_hash
    - i_new
    - i_free
    - config_parsed_get_all_keys
    linkageType: ''
    returnType: bool
    signature: "bool config_dump_keys_hash_try(struct config_parsed *config,\n\t\t\t
      \ uint32_t key_prefix, unsigned int hash_table_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - config_key
    argTypes:
    - struct config_parser_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 262
    functionName: config_parser_key_list_count
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int config_parser_key_list_count(struct config_parser_key
      *config_key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_all_keys
      Src: /src/dovecot/src/config/config-dump-full.c:269,1
    - Dst: buffer_append
      Src: /src/dovecot/src/config/config-dump-full.c:274,1
    - Dst: buffer_append
      Src: /src/dovecot/src/config/config-dump-full.c:276,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/config/config-dump-full.c:279,1
    - Dst: buffer_append
      Src: /src/dovecot/src/config/config-dump-full.c:284,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/config/config-dump-full.c:286,1
    - Dst: buffer_write
      Src: /src/dovecot/src/config/config-dump-full.c:289,1
    - Dst: buffer_append
      Src: /src/dovecot/src/config/config-dump-full.c:291,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:292,1
    - Dst: i_new
      Src: /src/dovecot/src/config/config-dump-full.c:296,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/config/config-dump-full.c:297,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/config/config-dump-full.c:298,1
    - Dst: str_hash
      Src: /src/dovecot/src/config/config-dump-full.c:299,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:301,1
    - Dst: buffer_append
      Src: /src/dovecot/src/config/config-dump-full.c:304,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:304,1
    - Dst: buffer_append
      Src: /src/dovecot/src/config/config-dump-full.c:309,1
    - Dst: config_parser_key_list_count
      Src: /src/dovecot/src/config/config-dump-full.c:311,1
    - Dst: buffer_append
      Src: /src/dovecot/src/config/config-dump-full.c:312,1
    - Dst: buffer_append
      Src: /src/dovecot/src/config/config-dump-full.c:316,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/config/config-dump-full.c:320,1
    - Dst: buffer_write
      Src: /src/dovecot/src/config/config-dump-full.c:322,1
    - Dst: i_free
      Src: /src/dovecot/src/config/config-dump-full.c:324,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 4
    argNames:
    - config
    - buf
    - key_prefix
    - hash_table_size
    argTypes:
    - struct config_parsed*
    - buffer_t*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 325
    functionName: config_dump_keys_hash
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - buffer_append
    - hash_table_iterate
    - buffer_append_zero
    - config_parser_key_list_count
    - buffer_write
    - strlen
    - hash_table_iterate_init
    - str_hash
    - i_new
    - i_assert
    - i_free
    - config_parsed_get_all_keys
    linkageType: ''
    returnType: void
    signature: "void config_dump_keys_hash(struct config_parsed *config, buffer_t
      *buf,\n\t\t      uint32_t key_prefix, uint32_t hash_table_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_all_keys
      Src: /src/dovecot/src/config/config-dump-full.c:331,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/config/config-dump-full.c:332,1
    - Dst: config_dump_keys_hash_try
      Src: /src/dovecot/src/config/config-dump-full.c:344,1
    - Dst: config_dump_keys_hash
      Src: /src/dovecot/src/config/config-dump-full.c:346,1
    - Dst: primes_closest
      Src: /src/dovecot/src/config/config-dump-full.c:354,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - config
    - buf
    argTypes:
    - struct config_parsed*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 356
    functionName: config_dump_keys_hash_table
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - primes_closest
    - config_dump_keys_hash
    - hash_table_count
    - config_dump_keys_hash_try
    - config_parsed_get_all_keys
    linkageType: ''
    returnType: void
    signature: void config_dump_keys_hash_table(struct config_parsed *config, buffer_t
      *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/config/config-dump-full.c:362,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/config/config-dump-full.c:366,1
    - Dst: config_dump_keys_hash_table
      Src: /src/dovecot/src/config/config-dump-full.c:369,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:372,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:375,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:376,1
    - Dst: buffer_free
      Src: /src/dovecot/src/config/config-dump-full.c:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - output
    - config
    argTypes:
    - struct ostream*
    - struct config_parsed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 358
    functionDepth: 3
    functionLinenumber: 358
    functionLinenumberEnd: 378
    functionName: config_dump_full_write_all_keys
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - buffer_append_zero
    - buffer_create_dynamic
    - o_stream_nsend
    - config_dump_keys_hash_table
    - buffer_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void config_dump_full_write_all_keys(struct ostream *output,\n\t\t\t\tstruct
      config_parsed *config)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-dump-full.c:386,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/config/config-dump-full.c:387,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-dump-full.c:389,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/config/config-dump-full.c:390,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-dump-full.c:394,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/config/config-dump-full.c:395,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-dump-full.c:398,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/config/config-dump-full.c:399,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-dump-full.c:403,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/config/config-dump-full.c:404,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-dump-full.c:409,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:410,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-dump-full.c:411,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-dump-full.c:415,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/config/config-dump-full.c:417,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/config/config-dump-full.c:417,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-dump-full.c:418,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-dump-full.c:422,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/config/config-dump-full.c:423,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - str
    - filter
    argTypes:
    - string_t*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 425
    functionName: config_dump_full_append_filter_query
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - wildcard_str_escape
    - str_append
    - net_ip2addr
    - t_strdup_until
    - settings_section_escape
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void config_dump_full_append_filter_query(string_t *str,\n\t\t\t\t
      \    const struct config_filter *filter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_dump_full_append_filter_query
      Src: /src/dovecot/src/config/config-dump-full.c:432,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-dump-full.c:436,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-dump-full.c:437,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-dump-full.c:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - filter
    argTypes:
    - string_t*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 427
    functionDepth: 2
    functionLinenumber: 427
    functionLinenumberEnd: 438
    functionName: config_dump_full_append_filter
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - config_dump_full_append_filter_query
    - str_truncate
    - str_len
    linkageType: ''
    returnType: void
    signature: "void config_dump_full_append_filter(string_t *str,\n\t\t\t       const
      struct config_filter *filter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 449
    functionName: config_filter_get_name_list_counts
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t config_filter_get_name_list_counts(const struct config_filter
      *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_filter_parsers
      Src: /src/dovecot/src/config/config-dump-full.c:456,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:462,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:466,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:467,1
    - Dst: str_new
      Src: /src/dovecot/src/config/config-dump-full.c:470,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-dump-full.c:472,1
    - Dst: config_dump_full_append_filter
      Src: /src/dovecot/src/config/config-dump-full.c:473,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-dump-full.c:474,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:475,1
    - Dst: str_data
      Src: /src/dovecot/src/config/config-dump-full.c:475,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-dump-full.c:475,1
    - Dst: config_filter_get_name_list_counts
      Src: /src/dovecot/src/config/config-dump-full.c:478,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - output
    - config
    argTypes:
    - struct ostream*
    - struct config_parsed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 451
    functionDepth: 3
    functionLinenumber: 451
    functionLinenumberEnd: 481
    functionName: config_dump_full_write_filters
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - config_filter_get_name_list_counts
    - str_data
    - str_len
    - config_dump_full_append_filter
    - o_stream_nsend
    - str_truncate
    - config_parsed_get_filter_parsers
    - str_new
    linkageType: ''
    returnType: void
    signature: "void config_dump_full_write_filters(struct ostream *output,\n\t\t\t
      \      struct config_parsed *config)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setting_parser_info_get_define_count
      Src: /src/dovecot/src/config/config-dump-full.c:489,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:492,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:496,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:496,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - output
    - info
    argTypes:
    - struct ostream*
    - struct setting_parser_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 498
    functionName: config_dump_full_write_keys
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - setting_parser_info_get_define_count
    - strlen
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: "void config_dump_full_write_keys(struct ostream *output,\n\t\t\t    const
      struct setting_parser_info *info)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-dump-full.c:506,1
    - Dst: config_dump_full_append_filter
      Src: /src/dovecot/src/config/config-dump-full.c:508,1
    - Dst: str_insert
      Src: /src/dovecot/src/config/config-dump-full.c:509,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-dump-full.c:510,1
    - Dst: array_foreach
      Src: /src/dovecot/src/config/config-dump-full.c:514,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-dump-full.c:515,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:519,1
    - Dst: str_data
      Src: /src/dovecot/src/config/config-dump-full.c:519,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-dump-full.c:519,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 500
    functionDepth: 3
    functionLinenumber: 500
    functionLinenumberEnd: 520
    functionName: config_dump_full_stdout_write_filter
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - config_dump_full_append_filter
    - array_foreach
    - str_insert
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void config_dump_full_stdout_write_filter(struct dump_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: config_dump_full_stdout_write_filter
      Src: /src/dovecot/src/config/config-dump-full.c:537,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-dump-full.c:543,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-dump-full.c:544,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:547,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-dump-full.c:548,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:549,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/config/config-dump-full.c:550,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:553,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:554,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:555,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:558,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:560,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:561,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/config/config-dump-full.c:561,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:563,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:564,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - set
    - ctx
    argTypes:
    - struct config_export_setting*
    - struct dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 522
    functionDepth: 4
    functionLinenumber: 522
    functionLinenumberEnd: 565
    functionName: config_dump_full_stdout_callback
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - str_begins
    - str_tabescape
    - t_strdup_until
    - config_dump_full_stdout_write_filter
    - settings_section_escape
    - o_stream_nsend_str
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void config_dump_full_stdout_callback(const struct config_export_setting
      *set,\n\t\t\t\t struct dump_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:572,1
    - Dst: array_count
      Src: /src/dovecot/src/config/config-dump-full.c:575,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:576,1
    - Dst: array_foreach
      Src: /src/dovecot/src/config/config-dump-full.c:580,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:581,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:582,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:583,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 587
    functionName: config_include_groups_dump
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - array_count
    - o_stream_nsend
    - strlen
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void config_include_groups_dump(struct dump_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:596,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:599,1
    - Dst: config_include_groups_dump
      Src: /src/dovecot/src/config/config-dump-full.c:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 602
    functionName: config_dump_full_write_filter
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    - config_include_groups_dump
    linkageType: ''
    returnType: void
    signature: void config_dump_full_write_filter(struct dump_context *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: config_dump_full_write_filter
      Src: /src/dovecot/src/config/config-dump-full.c:620,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-dump-full.c:624,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-dump-full.c:626,1
    - Dst: str_append_data
      Src: /src/dovecot/src/config/config-dump-full.c:630,1
    - Dst: str_append_data
      Src: /src/dovecot/src/config/config-dump-full.c:632,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:633,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:635,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-dump-full.c:640,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-dump-full.c:641,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/config/config-dump-full.c:643,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:644,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:648,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:649,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:652,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:653,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:654,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-dump-full.c:660,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-dump-full.c:662,1
    - Dst: strstr
      Src: /src/dovecot/src/config/config-dump-full.c:665,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/config/config-dump-full.c:668,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-dump-full.c:671,1
    - Dst: var_expand_program_export
      Src: /src/dovecot/src/config/config-dump-full.c:672,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/config/config-dump-full.c:673,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:674,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:675,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:675,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:676,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:678,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:678,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 2
    argNames:
    - set
    - ctx
    argTypes:
    - struct config_export_setting*
    - struct dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 604
    functionDepth: 3
    functionLinenumber: 604
    functionLinenumberEnd: 680
    functionName: config_dump_full_callback
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - i_panic
    - strchr
    - i_assert
    - var_expand_program_export
    - i_unreached
    - str_begins
    - var_expand_program_create
    - strlen
    - o_stream_nsend
    - var_expand_program_free
    - t_strdup_until
    - settings_section_escape
    - o_stream_nsend_str
    - str_append_data
    - strstr
    - config_dump_full_write_filter
    linkageType: ''
    returnType: void
    signature: "void config_dump_full_callback(const struct config_export_setting
      *set,\n\t\t\t\t      struct dump_context *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/config/config-dump-full.c:690,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/config/config-dump-full.c:694,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-dump-full.c:695,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/config/config-dump-full.c:696,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/config/config-dump-full.c:696,1
    - Dst: ftruncate
      Src: /src/dovecot/src/config/config-dump-full.c:699,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/config/config-dump-full.c:699,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-dump-full.c:700,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/config/config-dump-full.c:700,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/config/config-dump-full.c:703,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-dump-full.c:704,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/config/config-dump-full.c:705,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/config/config-dump-full.c:705,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:709,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:711,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:712,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:714,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - dump_ctx
    - dest
    - start_offset
    - error
    argTypes:
    - struct dump_context*
    - enum config_dump_full_dest
    - uoff_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 718
    functionName: config_dump_full_handle_error
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - ftruncate
    - o_stream_seek
    - i_error
    - o_stream_get_error
    - o_stream_get_fd
    - strlen
    - o_stream_nsend
    - o_stream_flush
    linkageType: ''
    returnType: int
    signature: "int config_dump_full_handle_error(struct dump_context *dump_ctx,\n\t\t\t
      \     enum config_dump_full_dest dest,\n\t\t\t      uoff_t start_offset, const
      char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 728
    functionName: filter_is_group
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool filter_is_group(const struct config_filter *filter)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-dump-full.c:746,1
    - Dst: t_array_init
      Src: /src/dovecot/src/config/config-dump-full.c:747,1
    - Dst: filter_is_group
      Src: /src/dovecot/src/config/config-dump-full.c:753,1
    - Dst: config_parsed_get_includes
      Src: /src/dovecot/src/config/config-dump-full.c:775,1
    - Dst: config_export_init
      Src: /src/dovecot/src/config/config-dump-full.c:789,1
    - Dst: config_filter_get_path_prefix
      Src: /src/dovecot/src/config/config-dump-full.c:792,1
    - Dst: config_export_init
      Src: /src/dovecot/src/config/config-dump-full.c:795,1
    - Dst: config_filter_get_path_prefix
      Src: /src/dovecot/src/config/config-dump-full.c:798,1
    - Dst: config_export_set_module_parsers
      Src: /src/dovecot/src/config/config-dump-full.c:801,1
    - Dst: config_export_parser_get_info
      Src: /src/dovecot/src/config/config-dump-full.c:805,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:806,1
    - Dst: config_export_parser
      Src: /src/dovecot/src/config/config-dump-full.c:809,1
    - Dst: config_dump_full_stdout_write_filter
      Src: /src/dovecot/src/config/config-dump-full.c:812,1
    - Dst: config_dump_full_write_filter
      Src: /src/dovecot/src/config/config-dump-full.c:814,1
    - Dst: config_dump_full_handle_error
      Src: /src/dovecot/src/config/config-dump-full.c:820,1
    - Dst: output_blob_size
      Src: /src/dovecot/src/config/config-dump-full.c:824,1
    - Dst: config_export_free
      Src: /src/dovecot/src/config/config-dump-full.c:827,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-dump-full.c:836,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-dump-full.c:842,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:843,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:844,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:846,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:848,1
    - Dst: str_data
      Src: /src/dovecot/src/config/config-dump-full.c:848,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-dump-full.c:849,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 68
    argCount: 5
    argNames:
    - ctx
    - parser_idx
    - info
    - delayed_filter
    - dump_type
    argTypes:
    - struct config_dump_full_context*
    - unsigned int
    - struct setting_parser_info*
    - string_t*
    - enum config_dump_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 730
    functionDepth: 7
    functionLinenumber: 730
    functionLinenumberEnd: 854
    functionName: config_dump_full_sections
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - config_dump_full_write_filter
    - str_len
    - str_data
    - config_export_parser_get_info
    - config_export_set_module_parsers
    - output_blob_size
    - config_export_parser
    - config_export_free
    - config_parsed_get_includes
    - config_dump_full_handle_error
    - o_stream_nsend
    - t_array_init
    - ARRAY_TYPE
    - config_dump_full_stdout_write_filter
    - filter_is_group
    - config_filter_get_path_prefix
    - i_assert
    - config_export_init
    linkageType: ''
    returnType: int
    signature: "int config_dump_full_sections(struct config_dump_full_context *ctx,\n\t\t\t
      \ unsigned int parser_idx,\n\t\t\t  const struct setting_parser_info *info,\n\t\t\t
      \ const string_t *delayed_filter,\n\t\t\t  enum config_dump_type dump_type)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/config/config-dump-full.c:866,1
    - Dst: config_parsed_get_version
      Src: /src/dovecot/src/config/config-dump-full.c:869,1
    - Dst: config_export_init
      Src: /src/dovecot/src/config/config-dump-full.c:873,1
    - Dst: config_export_init
      Src: /src/dovecot/src/config/config-dump-full.c:878,1
    - Dst: config_parsed_get_global_filter_parser
      Src: /src/dovecot/src/config/config-dump-full.c:884,1
    - Dst: config_export_set_module_parsers
      Src: /src/dovecot/src/config/config-dump-full.c:885,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-dump-full.c:887,1
    - Dst: config_parsed_get_setting
      Src: /src/dovecot/src/config/config-dump-full.c:892,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-dump-full.c:894,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-dump-full.c:895,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-dump-full.c:896,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-dump-full.c:901,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/config/config-dump-full.c:904,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/config/config-dump-full.c:905,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/config/config-dump-full.c:910,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-dump-full.c:912,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-dump-full.c:912,1
    - Dst: config_export_free
      Src: /src/dovecot/src/config/config-dump-full.c:913,1
    - Dst: str_free
      Src: /src/dovecot/src/config/config-dump-full.c:914,1
    - Dst: open
      Src: /src/dovecot/src/config/config-dump-full.c:917,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-dump-full.c:917,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-dump-full.c:919,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-dump-full.c:919,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/config/config-dump-full.c:920,1
    - Dst: i_unlink
      Src: /src/dovecot/src/config/config-dump-full.c:921,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-dump-full.c:921,1
    - Dst: config_export_free
      Src: /src/dovecot/src/config/config-dump-full.c:922,1
    - Dst: str_free
      Src: /src/dovecot/src/config/config-dump-full.c:923,1
    - Dst: config_get_cache_dir
      Src: /src/dovecot/src/config/config-dump-full.c:927,1
    - Dst: i_unlink
      Src: /src/dovecot/src/config/config-dump-full.c:928,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-dump-full.c:928,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/config/config-dump-full.c:929,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/config/config-dump-full.c:930,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-dump-full.c:930,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/config/config-dump-full.c:934,1
    - Dst: config_parsed_get_setting
      Src: /src/dovecot/src/config/config-dump-full.c:938,1
    - Dst: t_strdup
      Src: /src/dovecot/src/config/config-dump-full.c:940,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:946,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:948,1
    - Dst: config_dump_full_write_cache_paths
      Src: /src/dovecot/src/config/config-dump-full.c:951,1
    - Dst: config_dump_full_write_all_keys
      Src: /src/dovecot/src/config/config-dump-full.c:955,1
    - Dst: config_dump_full_write_filters
      Src: /src/dovecot/src/config/config-dump-full.c:956,1
    - Dst: config_parsed_get_filter_parsers
      Src: /src/dovecot/src/config/config-dump-full.c:964,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-dump-full.c:968,1
    - Dst: t_new
      Src: /src/dovecot/src/config/config-dump-full.c:974,1
    - Dst: t_new
      Src: /src/dovecot/src/config/config-dump-full.c:975,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-dump-full.c:977,1
    - Dst: t_array_init
      Src: /src/dovecot/src/config/config-dump-full.c:978,1
    - Dst: config_export_get_parser_count
      Src: /src/dovecot/src/config/config-dump-full.c:981,1
    - Dst: config_export_parser_get_info
      Src: /src/dovecot/src/config/config-dump-full.c:984,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-dump-full.c:986,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:990,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:991,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-dump-full.c:991,1
    - Dst: config_dump_full_write_keys
      Src: /src/dovecot/src/config/config-dump-full.c:993,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-dump-full.c:995,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-dump-full.c:996,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:1003,1
    - Dst: config_dump_full_sections
      Src: /src/dovecot/src/config/config-dump-full.c:1010,1
    - Dst: config_parsed_get_includes
      Src: /src/dovecot/src/config/config-dump-full.c:1023,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:1034,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/config/config-dump-full.c:1038,1
    - Dst: config_include_groups_dump
      Src: /src/dovecot/src/config/config-dump-full.c:1039,1
    - Dst: config_export_parser
      Src: /src/dovecot/src/config/config-dump-full.c:1046,1
    - Dst: config_dump_full_handle_error
      Src: /src/dovecot/src/config/config-dump-full.c:1047,1
    - Dst: config_dump_full_stdout_write_filter
      Src: /src/dovecot/src/config/config-dump-full.c:1053,1
    - Dst: config_dump_full_write_filter
      Src: /src/dovecot/src/config/config-dump-full.c:1055,1
    - Dst: output_blob_size
      Src: /src/dovecot/src/config/config-dump-full.c:1058,1
    - Dst: config_dump_full_sections
      Src: /src/dovecot/src/config/config-dump-full.c:1064,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 114
    argCount: 4
    argNames:
    - config
    - dest
    - flags
    - import_environment_r
    argTypes:
    - struct config_parsed*
    - enum config_dump_full_dest
    - enum config_dump_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 856
    functionDepth: 8
    functionLinenumber: 856
    functionLinenumberEnd: 1067
    functionName: config_dump_full
    functionSourceFile: /src/dovecot/src/config/config-dump-full.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_new
    - o_stream_set_name
    - strlen
    - o_stream_cork
    - t_strdup_printf
    - i_unlink
    - config_get_cache_dir
    - config_export_parser
    - t_strdup
    - i_panic
    - o_stream_create_fd
    - t_str_new
    - config_dump_full_sections
    - str_append_c
    - i_close_fd
    - config_parsed_get_includes
    - config_dump_full_handle_error
    - o_stream_nsend
    - config_dump_full_write_cache_paths
    - config_parsed_get_filter_parsers
    - config_export_free
    - config_dump_full_write_filter
    - str_new
    - str_free
    - config_parsed_get_setting
    - config_export_set_module_parsers
    - open
    - output_blob_size
    - config_parsed_get_global_filter_parser
    - o_stream_create_fd_autoclose
    - config_dump_full_write_keys
    - config_dump_full_stdout_write_filter
    - safe_mkstemp
    - o_stream_nsend_str
    - i_assert
    - config_export_get_parser_count
    - config_dump_full_write_filters
    - config_parsed_get_version
    - i_error
    - config_export_parser_get_info
    - t_array_init
    - config_include_groups_dump
    - ARRAY_TYPE
    - str_append
    - config_dump_full_write_all_keys
    - config_export_init
    linkageType: ''
    returnType: int
    signature: "int config_dump_full(struct config_parsed *config,\n\t\t     enum
      config_dump_full_dest dest,\n\t\t     enum config_dump_flags flags,\n\t\t     const
      char **import_environment_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setting_parser_info_get_define_count
      Src: /src/dovecot/src/config/config-parser.c:102,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:104,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - module_parser
    argTypes:
    - struct config_parser_context*
    - struct config_module_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 108
    functionName: config_module_parser_init
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - setting_parser_info_get_define_count
    - p_new
    linkageType: ''
    returnType: void
    signature: "void config_module_parser_init(struct config_parser_context *ctx,\n\t\t\t
      \ struct config_module_parser *module_parser)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - change_counter
    argTypes:
    - struct config_parser_context*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: config_parser_set_change_counter
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void config_parser_set_change_counter(struct config_parser_context
      *ctx,\n\t\t\t\t      uint8_t change_counter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/config/config-parser.c:120,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - st
    - path
    argTypes:
    - struct config_parser_context*
    - struct stat*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 123
    functionName: config_parser_add_seen_file
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void config_parser_add_seen_file(struct config_parser_context *ctx,\n\t\t\t
      \   const struct stat *st, const char *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/config/config-parser.c:131,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:132,1
    - Dst: config_parser_add_seen_file
      Src: /src/dovecot/src/config/config-parser.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - fd
    - path
    - error_r
    argTypes:
    - struct config_parser_context*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: config_parser_add_seen_file_fd
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_parser_add_seen_file
    - fstat
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int config_parser_add_seen_file_fd(struct config_parser_context *ctx,\n\t\t\t
      \      int fd, const char *path, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:144,1
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:145,1
    - Dst: config_apply_exact_line
      Src: /src/dovecot/src/config/config-parser.c:146,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:147,1
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:150,1
    - Dst: config_add_new_section
      Src: /src/dovecot/src/config/config-parser.c:153,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:155,1
    - Dst: config_add_new_parser
      Src: /src/dovecot/src/config/config-parser.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - filter_key
    - name
    argTypes:
    - struct config_parser_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 165
    functionName: config_parser_add_filter_array
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - i_panic
    - config_apply_exact_line
    - t_strdup_printf
    - config_parser_set_change_counter
    - config_add_new_parser
    - config_add_new_section
    - p_strdup_printf
    linkageType: ''
    returnType: struct config_section_stack
    signature: "struct config_section_stack *\nconfig_parser_add_filter_array(struct
      config_parser_context *ctx,\n\t\t\t       const char *filter_key, const char
      *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/config/config-parser.c:173,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:175,1
    - Dst: config_apply_line_full
      Src: /src/dovecot/src/config/config-parser.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - key_with_path
    - value
    argTypes:
    - struct config_parser_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 183
    functionName: config_apply_default
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_apply_line_full
    - t_strdup_printf
    - strstr
    linkageType: ''
    returnType: int
    signature: "int config_apply_default(struct config_parser_context *ctx,\n\t\t
      \    const char *key_with_path, const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:194,1
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:196,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/config/config-parser.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:200,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-parser.c:202,1
    - Dst: config_export_type
      Src: /src/dovecot/src/config/config-parser.c:203,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:205,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:205,1
    - Dst: SERVICE_SETTING_TYPE_HAS_DEFAULT
      Src: /src/dovecot/src/config/config-parser.c:206,1
    - Dst: config_apply_default
      Src: /src/dovecot/src/config/config-parser.c:211,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:212,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:213,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:214,1
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:218,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - service_info_idx
    - default_set
    argTypes:
    - struct config_parser_context*
    - unsigned int
    - struct service_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 219
    functionName: config_parser_add_service_default_struct
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - i_panic
    - config_apply_default
    - config_export_type
    - SERVICE_SETTING_TYPE_HAS_DEFAULT
    - config_parser_set_change_counter
    - str_truncate
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void config_parser_add_service_default_struct(struct config_parser_context
      *ctx,\n\t\t\t\t\t unsigned int service_info_idx,\n\t\t\t\t\t const struct service_settings
      *default_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: SERVICE_SETTING_TYPE_HAS_DEFAULT
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SERVICE_SETTING_TYPE_HAS_DEFAULT(type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/config/config-parser.c:228,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-parser.c:231,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-parser.c:232,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:237,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:238,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-parser.c:240,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/config/config-parser.c:242,1
    - Dst: config_filter_parser_find
      Src: /src/dovecot/src/config/config-parser.c:248,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:251,1
    - Dst: config_add_new_parser
      Src: /src/dovecot/src/config/config-parser.c:253,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-parser.c:263,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:264,1
    - Dst: old_settings_default
      Src: /src/dovecot/src/config/config-parser.c:266,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:267,1
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:270,1
    - Dst: config_apply_default
      Src: /src/dovecot/src/config/config-parser.c:271,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:272,1
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:276,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - service_name
    - defaults
    argTypes:
    - struct config_parser_context*
    - char*
    - struct setting_keyvalue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 221
    functionDepth: 4
    functionLinenumber: 221
    functionLinenumberEnd: 279
    functionName: config_parser_add_service_default_keyvalues
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - i_panic
    - strchr
    - str_printfa
    - p_strdup
    - str_c
    - config_apply_default
    - str_len
    - settings_section_unescape
    - old_settings_default
    - config_filter_parser_find
    - config_parser_set_change_counter
    - t_strdup_until
    - str_truncate
    - str_append
    - config_add_new_parser
    - str_new
    linkageType: ''
    returnType: void
    signature: "void config_parser_add_service_default_keyvalues(struct config_parser_context
      *ctx,\n\t\t\t\t\t    const char *service_name,\n\t\t\t\t\t    const struct setting_keyvalue
      *defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_parser_add_filter_array
      Src: /src/dovecot/src/config/config-parser.c:291,1
    - Dst: config_parser_add_service_default_struct
      Src: /src/dovecot/src/config/config-parser.c:294,1
    - Dst: config_parser_add_service_default_keyvalues
      Src: /src/dovecot/src/config/config-parser.c:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - service_info_idx
    argTypes:
    - struct config_parser_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 283
    functionDepth: 5
    functionLinenumber: 283
    functionLinenumberEnd: 303
    functionName: config_parser_add_services
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_parser_add_service_default_keyvalues
    - config_parser_add_service_default_struct
    - config_parser_add_filter_array
    linkageType: ''
    returnType: void
    signature: "void config_parser_add_services(struct config_parser_context *ctx,\n\t\t\t\t
      \      unsigned int service_info_idx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: old_settings_default
      Src: /src/dovecot/src/config/config-parser.c:317,1
    - Dst: config_apply_default
      Src: /src/dovecot/src/config/config-parser.c:320,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:321,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - info
    - defaults
    argTypes:
    - struct config_parser_context*
    - struct setting_parser_info*
    - struct setting_keyvalue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 306
    functionDepth: 4
    functionLinenumber: 306
    functionLinenumberEnd: 326
    functionName: config_parser_add_info_defaults_arr
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - old_settings_default
    - i_panic
    - config_apply_default
    linkageType: ''
    returnType: void
    signature: "void config_parser_add_info_defaults_arr(struct config_parser_context
      *ctx,\n\t\t\t\t    const struct setting_parser_info *info,\n\t\t\t\t    const
      struct setting_keyvalue *defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:331,1
    - Dst: config_parser_add_info_defaults_arr
      Src: /src/dovecot/src/config/config-parser.c:332,1
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct config_parser_context*
    - struct setting_parser_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 328
    functionDepth: 5
    functionLinenumber: 328
    functionLinenumberEnd: 334
    functionName: config_parser_add_info_defaults
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_parser_set_change_counter
    - config_parser_add_info_defaults_arr
    linkageType: ''
    returnType: void
    signature: "void config_parser_add_info_defaults(struct config_parser_context
      *ctx,\n\t\t\t\t\t    const struct setting_parser_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - section
    argTypes:
    - struct config_section_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 348
    functionName: config_parser_is_in_localremote
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool config_parser_is_in_localremote(struct config_section_stack *section)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/config/config-parser.c:358,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/config-parser.c:362,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-parser.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - path
    - input
    argTypes:
    - char*
    - struct input_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 363
    functionName: fix_relative_path
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_until
    - t_strconcat
    - strrchr
    linkageType: ''
    returnType: char
    signature: 'char *

      fix_relative_path(const char *path, struct input_stack *input)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:376,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:376,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct config_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 388
    functionName: config_apply_error
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - t_strcut
    linkageType: ''
    returnType: int
    signature: int config_apply_error(struct config_parser_context *ctx, const char
      *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_filters_equal_no_recursion
      Src: /src/dovecot/src/config/config-parser.c:397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - parent
    - wanted_filter
    argTypes:
    - struct config_filter_parser*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 390
    functionDepth: 2
    functionLinenumber: 390
    functionLinenumberEnd: 401
    functionName: config_filters_find_child
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filters_equal_no_recursion
    linkageType: ''
    returnType: struct config_filter_parser
    signature: "struct config_filter_parser *\nconfig_filters_find_child(struct config_filter_parser
      *parent,\n\t\t\t  const struct config_filter *wanted_filter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_filters_find_child
      Src: /src/dovecot/src/config/config-parser.c:413,1
    - Dst: config_filter_fill_reverse_default_siblings
      Src: /src/dovecot/src/config/config-parser.c:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - p1_parent
    - p2_parent
    argTypes:
    - struct config_filter_parser*
    - struct config_filter_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 403
    functionDepth: 3
    functionLinenumber: 403
    functionLinenumberEnd: 417
    functionName: config_filter_fill_reverse_default_siblings
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - config_filter_fill_reverse_default_siblings
    - config_filters_find_child
    linkageType: ''
    returnType: void
    signature: "void config_filter_fill_reverse_default_siblings(struct config_filter_parser
      *p1_parent,\n\t\t\t\t\t    struct config_filter_parser *p2_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_elem
      Src: /src/dovecot/src/config/config-parser.c:428,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/config/config-parser.c:429,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:430,1
    - Dst: config_filter_is_empty_defaults
      Src: /src/dovecot/src/config/config-parser.c:430,1
    - Dst: config_filter_fill_reverse_default_siblings
      Src: /src/dovecot/src/config/config-parser.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct config_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 419
    functionDepth: 5
    functionLinenumber: 419
    functionLinenumberEnd: 433
    functionName: config_parse_fill_reverse_default_siblings
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filter_fill_reverse_default_siblings
    - i_assert
    - array_idx_elem
    - config_filter_is_empty_defaults
    linkageType: ''
    returnType: void
    signature: void config_parse_fill_reverse_default_siblings(struct config_parser_context
      *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:454,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:470,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-parser.c:470,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:473,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:475,1
    - Dst: config_write_keyvariable
      Src: /src/dovecot/src/config/config-parser.c:476,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:480,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:480,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:481,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:481,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/config/config-parser.c:487,1
    - Dst: config_export_type
      Src: /src/dovecot/src/config/config-parser.c:489,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-parser.c:490,1
    - Dst: config_filter_get_value
      Src: /src/dovecot/src/config/config-parser.c:495,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 6
    argNames:
    - ctx
    - filter_parser
    - def
    - config_key
    - key
    - str
    argTypes:
    - struct config_parser_context*
    - struct config_filter_parser*
    - struct setting_define*
    - struct config_parser_key*
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 435
    functionDepth: 4
    functionLinenumber: 435
    functionLinenumberEnd: 497
    functionName: config_filter_get_value
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - i_unreached
    - config_export_type
    - config_filter_get_value
    - set_str_expanded
    - str_append
    - config_write_keyvariable
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int config_filter_get_value(struct config_parser_context *ctx,\n\t\t\tstruct
      config_filter_parser *filter_parser,\n\t\t\tconst struct setting_define *def,\n\t\t\tstruct
      config_parser_key *config_key,\n\t\t\tconst char *key, string_t *str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_parse_fill_reverse_default_siblings
      Src: /src/dovecot/src/config/config-parser.c:511,1
    - Dst: config_filter_get_value
      Src: /src/dovecot/src/config/config-parser.c:512,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 5
    argNames:
    - ctx
    - filter_parser
    - config_key
    - key
    - str
    argTypes:
    - struct config_parser_context*
    - struct config_filter_parser*
    - struct config_parser_key*
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 499
    functionDepth: 6
    functionLinenumber: 499
    functionLinenumberEnd: 513
    functionName: config_get_value
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filter_get_value
    - config_parse_fill_reverse_default_siblings
    linkageType: ''
    returnType: int
    signature: "int config_get_value(struct config_parser_context *ctx,\n\t\t struct
      config_filter_parser *filter_parser,\n\t\t struct config_parser_key *config_key,\n\t\t
      const char *key, string_t *str)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-parser.c:525,1
    - Dst: config_filter_parser_find_path_sub
      Src: /src/dovecot/src/config/config-parser.c:528,1
    - Dst: config_filter_parser_find_path_sub
      Src: /src/dovecot/src/config/config-parser.c:533,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - parent
    - path
    - done_reverse
    argTypes:
    - struct config_filter_parser*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 537
    functionName: config_filter_parser_find_path_sub
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - str_begins
    - config_filter_parser_find_path_sub
    linkageType: ''
    returnType: struct config_filter_parser
    signature: "struct config_filter_parser *\nconfig_filter_parser_find_path_sub(struct
      config_filter_parser *parent,\n\t\t\t\t   const char *path, bool done_reverse)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_parse_fill_reverse_default_siblings
      Src: /src/dovecot/src/config/config-parser.c:543,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/config/config-parser.c:546,1
    - Dst: config_filter_parser_find_path_sub
      Src: /src/dovecot/src/config/config-parser.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - struct config_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 539
    functionDepth: 6
    functionLinenumber: 539
    functionLinenumberEnd: 548
    functionName: config_filter_parser_find_path
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - array_idx_elem
    - config_parse_fill_reverse_default_siblings
    - config_filter_parser_find_path_sub
    linkageType: ''
    returnType: struct config_filter_parser
    signature: "struct config_filter_parser *\nconfig_filter_parser_find_path(struct
      config_parser_context *ctx,\n\t\t\t       const char *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 558
    functionName: config_filter_has_include_group
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool config_filter_has_include_group(const struct config_filter *filter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/config/config-parser.c:563,1
    - Dst: strstr
      Src: /src/dovecot/src/config/config-parser.c:567,1
    - Dst: strstr
      Src: /src/dovecot/src/config/config-parser.c:568,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - value
    - expand_values
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 572
    functionName: setting_value_can_check
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: bool
    signature: bool setting_value_can_check(const char *value, bool expand_values)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/config/config-parser.c:577,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/config/config-parser.c:582,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:584,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/config/config-parser.c:588,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct config_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 591
    functionName: settings_value_check_vars
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - var_expand_program_free
    - strstr
    - p_strdup_printf
    - var_expand_program_create
    linkageType: ''
    returnType: int
    signature: "int settings_value_check_vars(struct config_parser_context *ctx,\n\t\t\t\t
      \    const char *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_value_check_vars
      Src: /src/dovecot/src/config/config-parser.c:596,1
    - Dst: setting_value_can_check
      Src: /src/dovecot/src/config/config-parser.c:598,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct config_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 601
    functionName: settings_value_check_common
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - setting_value_can_check
    - settings_value_check_vars
    linkageType: ''
    returnType: int
    signature: "int settings_value_check_common(struct config_parser_context *ctx,\n\t\t\t\t
      \      const char *value)"
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:619,1
    - Dst: str_parse_get_bool
      Src: /src/dovecot/src/config/config-parser.c:621,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:622,1
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:630,1
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/config/config-parser.c:632,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:633,1
    - Dst: str_num_error
      Src: /src/dovecot/src/config/config-parser.c:635,1
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:643,1
    - Dst: str_to_ullong_oct
      Src: /src/dovecot/src/config/config-parser.c:645,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/config/config-parser.c:646,1
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:656,1
    - Dst: settings_value_is_unlimited
      Src: /src/dovecot/src/config/config-parser.c:658,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/config/config-parser.c:660,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:661,1
    - Dst: str_num_error
      Src: /src/dovecot/src/config/config-parser.c:663,1
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:670,1
    - Dst: settings_value_is_unlimited
      Src: /src/dovecot/src/config/config-parser.c:672,1
    - Dst: str_parse_get_interval
      Src: /src/dovecot/src/config/config-parser.c:674,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:675,1
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:682,1
    - Dst: settings_value_is_unlimited
      Src: /src/dovecot/src/config/config-parser.c:684,1
    - Dst: str_parse_get_interval_msecs
      Src: /src/dovecot/src/config/config-parser.c:686,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:687,1
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:694,1
    - Dst: settings_value_is_unlimited
      Src: /src/dovecot/src/config/config-parser.c:696,1
    - Dst: str_parse_get_size
      Src: /src/dovecot/src/config/config-parser.c:698,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:699,1
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:706,1
    - Dst: net_str2port_zero
      Src: /src/dovecot/src/config/config-parser.c:708,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:709,1
    - Dst: settings_value_check_vars
      Src: /src/dovecot/src/config/config-parser.c:716,1
    - Dst: settings_value_check_common
      Src: /src/dovecot/src/config/config-parser.c:723,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:725,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/config/config-parser.c:727,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/config/config-parser.c:728,1
    - Dst: str_array_find
      Src: /src/dovecot/src/config/config-parser.c:729,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/config/config-parser.c:730,1
    - Dst: settings_value_check_vars
      Src: /src/dovecot/src/config/config-parser.c:739,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:743,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-parser.c:747,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 114
    argCount: 4
    argNames:
    - ctx
    - info
    - def
    - prefixed_value
    argTypes:
    - struct config_parser_context*
    - struct setting_parser_info*
    - struct setting_define*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 603
    functionDepth: 3
    functionLinenumber: 603
    functionLinenumberEnd: 750
    functionName: settings_value_check
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - str_parse_get_size
    - p_strdup
    - settings_value_is_unlimited
    - str_to_uint
    - settings_value_check_common
    - CONST_PTR_OFFSET
    - settings_value_check_vars
    - str_num_error
    - i_unreached
    - str_to_ullong_oct
    - str_array_find
    - str_parse_get_interval
    - str_parse_get_bool
    - str_parse_get_interval_msecs
    - p_strconcat
    - i_assert
    - t_strsplit
    - net_str2port_zero
    - str_to_uintmax
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int settings_value_check(struct config_parser_context *ctx,\n\t\t
      \    const struct setting_parser_info *info,\n\t\t     const struct setting_define
      *def,\n\t\t     const char *prefixed_value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:760,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - ctx
    - key
    - info_r
    - def_r
    argTypes:
    - struct config_parser_context*
    - char*
    - struct setting_parser_info**
    - struct setting_define**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 772
    functionName: config_is_filter_name
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: bool
    signature: "bool config_is_filter_name(struct config_parser_context *ctx, const
      char *key,\n\t\t      const struct setting_parser_info **info_r,\n\t\t      const
      struct setting_define **def_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_parser_find
      Src: /src/dovecot/src/config/config-parser.c:785,1
    - Dst: array_is_created
      Src: /src/dovecot/src/config/config-parser.c:796,1
    - Dst: array_append_array
      Src: /src/dovecot/src/config/config-parser.c:797,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - config_key
    - dest
    argTypes:
    - struct config_parser_context*
    - struct config_parser_key*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 798
    functionName: config_list_add_defaults
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filter_parser_find
    - array_is_created
    - array_append_array
    linkageType: ''
    returnType: void
    signature: "void config_list_add_defaults(struct config_parser_context *ctx,\n\t\t\t
      struct config_parser_key *config_key,\n\t\t\t ARRAY_TYPE(const_string) *dest)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:809,1
    - Dst: array_clear
      Src: /src/dovecot/src/config/config-parser.c:815,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:817,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-parser.c:818,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:819,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:825,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:832,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-parser.c:832,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:833,1
    - Dst: config_list_add_defaults
      Src: /src/dovecot/src/config/config-parser.c:834,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:837,1
    - Dst: array_get
      Src: /src/dovecot/src/config/config-parser.c:841,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:843,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/config/config-parser.c:844,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:849,1
    - Dst: config_write_keyvariable
      Src: /src/dovecot/src/config/config-parser.c:850,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:854,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:854,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:855,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:856,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 6
    argNames:
    - ctx
    - key
    - prefixed_value
    - config_key
    - strlistp
    - stop_list
    argTypes:
    - struct config_parser_context*
    - char*
    - char*
    - struct config_parser_key*
    - ARRAY_TYPE**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 800
    functionDepth: 2
    functionLinenumber: 800
    functionLinenumberEnd: 858
    functionName: config_apply_strlist
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - p_strdup
    - array_idx_set
    - p_new
    - p_array_init
    - t_str_new
    - str_c
    - array_push_back
    - array_get
    - array_clear
    - ARRAY_TYPE
    - config_list_add_defaults
    - config_write_keyvariable
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int config_apply_strlist(struct config_parser_context *ctx,\n\t\t\t\tconst
      char *key,\n\t\t\t\tconst char *prefixed_value,\n\t\t\t\tstruct config_parser_key
      *config_key,\n\t\t\t\tARRAY_TYPE(const_string) **strlistp,\n\t\t\t\tbool *stop_list)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-parser.c:866,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:870,1
    - Dst: setting_value_can_check
      Src: /src/dovecot/src/config/config-parser.c:872,1
    - Dst: str_parse_get_bool
      Src: /src/dovecot/src/config/config-parser.c:874,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:875,1
    - Dst: config_apply_strlist
      Src: /src/dovecot/src/config/config-parser.c:881,1
    - Dst: t_array_init
      Src: /src/dovecot/src/config/config-parser.c:886,1
    - Dst: settings_parse_boollist_string
      Src: /src/dovecot/src/config/config-parser.c:887,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:889,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:893,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-parser.c:893,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:894,1
    - Dst: array_count
      Src: /src/dovecot/src/config/config-parser.c:894,1
    - Dst: array_clear
      Src: /src/dovecot/src/config/config-parser.c:896,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:899,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/config/config-parser.c:901,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-parser.c:902,1
    - Dst: config_write_keyvariable
      Src: /src/dovecot/src/config/config-parser.c:903,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:906,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:906,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:907,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:908,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - ctx
    - key
    - prefixed_value
    - config_key
    - strlistp
    - stop_list
    argTypes:
    - struct config_parser_context*
    - char*
    - char*
    - struct config_parser_key*
    - ARRAY_TYPE**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 860
    functionDepth: 3
    functionLinenumber: 860
    functionLinenumberEnd: 912
    functionName: config_apply_boollist
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_strdup
    - t_str_new
    - p_new
    - p_array_init
    - str_c
    - array_foreach_elem
    - array_push_back
    - config_apply_strlist
    - str_parse_get_bool
    - setting_value_can_check
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - str_truncate
    - config_write_keyvariable
    - settings_parse_boollist_string
    linkageType: ''
    returnType: int
    signature: "int config_apply_boollist(struct config_parser_context *ctx,\n\t\t\t\t
      const char *key, const char *prefixed_value,\n\t\t\t\t struct config_parser_key
      *config_key,\n\t\t\t\t ARRAY_TYPE(const_string) **strlistp,\n\t\t\t\t bool *stop_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/config/config-parser.c:920,1
    - Dst: str_array_length
      Src: /src/dovecot/src/config/config-parser.c:921,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:924,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:931,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-parser.c:931,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:932,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:937,1
    - Dst: settings_section_unescape
      Src: /src/dovecot/src/config/config-parser.c:937,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:938,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - line
    - value
    - namesp
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    - char*
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 914
    functionDepth: 2
    functionLinenumber: 914
    functionLinenumberEnd: 941
    functionName: config_apply_filter_array
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - p_array_init
    - array_push_back
    - str_array_length
    - settings_section_unescape
    - t_strsplit
    - ARRAY_TYPE
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int config_apply_filter_array(struct config_parser_context *ctx,\n\t\t\t\t
      \    const struct config_line *line,\n\t\t\t\t     const char *value,\n\t\t\t\t
      \    ARRAY_TYPE(const_string) **namesp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/config/config-parser.c:957,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:958,1
    - Dst: fix_relative_path
      Src: /src/dovecot/src/config/config-parser.c:962,1
    - Dst: settings_parse_read_file
      Src: /src/dovecot/src/config/config-parser.c:966,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:969,1
    - Dst: config_apply_error
      Src: /src/dovecot/src/config/config-parser.c:970,1
    - Dst: config_parser_add_seen_file
      Src: /src/dovecot/src/config/config-parser.c:975,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - ctx
    - line
    - path
    - prefixed_output_r
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 943
    functionDepth: 2
    functionLinenumber: 943
    functionLinenumberEnd: 978
    functionName: config_apply_file
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - settings_parse_read_file
    - p_strdup
    - config_parser_add_seen_file
    - fix_relative_path
    - config_apply_error
    - strstr
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int config_apply_file(struct config_parser_context *ctx,\n\t\t\t     const
      struct config_line *line,\n\t\t\t     const char *path, const char **prefixed_output_r)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:990,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:994,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:995,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1001,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1002,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1003,1
    - Dst: config_filter_has_include_group
      Src: /src/dovecot/src/config/config-parser.c:1004,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1005,1
    - Dst: config_module_parser_init
      Src: /src/dovecot/src/config/config-parser.c:1014,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1015,1
    - Dst: config_apply_strlist
      Src: /src/dovecot/src/config/config-parser.c:1019,1
    - Dst: config_apply_boollist
      Src: /src/dovecot/src/config/config-parser.c:1025,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1032,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1033,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/config/config-parser.c:1039,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1041,1
    - Dst: config_apply_filter_array
      Src: /src/dovecot/src/config/config-parser.c:1046,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1054,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1055,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-parser.c:1061,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1065,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1070,1
    - Dst: config_apply_file
      Src: /src/dovecot/src/config/config-parser.c:1071,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1078,1
    - Dst: settings_value_check
      Src: /src/dovecot/src/config/config-parser.c:1085,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1090,1
    - Dst: config_parser_is_in_localremote
      Src: /src/dovecot/src/config/config-parser.c:1091,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/config/config-parser.c:1092,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 67
    argCount: 4
    argNames:
    - ctx
    - line
    - key
    - prefixed_value
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 980
    functionDepth: 4
    functionLinenumber: 980
    functionLinenumberEnd: 1099
    functionName: config_apply_exact_line
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - strcmp
    - i_assert
    - p_strdup
    - config_filter_has_include_group
    - str_begins_with
    - config_apply_file
    - str_begins
    - config_parser_is_in_localremote
    - config_apply_strlist
    - settings_value_check
    - p_strconcat
    - config_module_parser_init
    - hash_table_lookup
    - t_strcut
    - config_apply_filter_array
    - p_strdup_printf
    - config_apply_boollist
    linkageType: ''
    returnType: int
    signature: "int config_apply_exact_line(struct config_parser_context *ctx,\n\t\t\tconst
      struct config_line *line,\n\t\t\tconst char *key, const char *prefixed_value)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bsearch_insert_pos
      Src: /src/dovecot/src/config/config-parser.c:1107,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1120,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-parser.c:1124,1
    - Dst: strncmp
      Src: /src/dovecot/src/config/config-parser.c:1125,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1126,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/config/config-parser.c:1135,1
    - Dst: strncmp
      Src: /src/dovecot/src/config/config-parser.c:1137,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1146,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct config_parser_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1101
    functionDepth: 1
    functionLinenumber: 1101
    functionLinenumberEnd: 1151
    functionName: replace_filter_prefix
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    - t_strdup_printf
    - bsearch_insert_pos
    - t_str_replace
    - strncmp
    - t_strcut
    linkageType: ''
    returnType: bool
    signature: "bool replace_filter_prefix(struct config_parser_context *ctx,\n\t\t\t\t
      \ const char **key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1153
    functionDepth: 0
    functionLinenumber: 1153
    functionLinenumberEnd: 1156
    functionName: filter_key_skip_group_prefix
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *filter_key_skip_group_prefix(const char *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1161,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:1163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct config_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1158
    functionDepth: 1
    functionLinenumber: 1158
    functionLinenumberEnd: 1173
    functionName: config_key_can_autoprefix
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - t_strcut
    linkageType: ''
    returnType: bool
    signature: bool config_key_can_autoprefix(struct config_parser_context *ctx, const
      char *key)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:1178,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-parser.c:1179,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1184,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:1184,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1187,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-parser.c:1188,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-parser.c:1190,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/config/config-parser.c:1191,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:1193,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:1195,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1196,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:1196,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:1203,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/config-parser.c:1204,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/config/config-parser.c:1206,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/config/config-parser.c:1210,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-parser.c:1211,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1218,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-parser.c:1219,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:1220,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:1221,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/config/config-parser.c:1226,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:1228,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-parser.c:1230,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:1230,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-parser.c:1232,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:1233,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1235,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:1235,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct config_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1175
    functionDepth: 1
    functionLinenumber: 1175
    functionLinenumberEnd: 1236
    functionName: config_set_unknown_key_error
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_printfa
    - p_strdup
    - str_append_c
    - hash_table_iterate
    - str_len
    - str_begins
    - hash_table_iterate_deinit
    - hash_table_iterate_init
    - t_str_replace
    - str_append
    - t_strcut
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void config_set_unknown_key_error(struct config_parser_context *ctx,
      const char *key)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:1251,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-parser.c:1261,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:1263,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:1271,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-parser.c:1273,1
    - Dst: config_filter_parser_find
      Src: /src/dovecot/src/config/config-parser.c:1277,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1286,1
    - Dst: config_add_new_parser
      Src: /src/dovecot/src/config/config-parser.c:1288,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1296,1
    - Dst: replace_filter_prefix
      Src: /src/dovecot/src/config/config-parser.c:1302,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1311,1
    - Dst: filter_key_skip_group_prefix
      Src: /src/dovecot/src/config/config-parser.c:1312,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/config/config-parser.c:1313,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1314,1
    - Dst: config_key_can_autoprefix
      Src: /src/dovecot/src/config/config-parser.c:1318,1
    - Dst: config_apply_exact_line
      Src: /src/dovecot/src/config/config-parser.c:1319,1
    - Dst: config_filter_is_empty
      Src: /src/dovecot/src/config/config-parser.c:1322,1
    - Dst: filter_key_skip_group_prefix
      Src: /src/dovecot/src/config/config-parser.c:1332,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1333,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1334,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-parser.c:1350,1
    - Dst: config_key_can_autoprefix
      Src: /src/dovecot/src/config/config-parser.c:1357,1
    - Dst: config_apply_exact_line
      Src: /src/dovecot/src/config/config-parser.c:1358,1
    - Dst: config_filter_is_empty
      Src: /src/dovecot/src/config/config-parser.c:1361,1
    - Dst: config_apply_exact_line
      Src: /src/dovecot/src/config/config-parser.c:1367,1
    - Dst: config_filter_is_empty
      Src: /src/dovecot/src/config/config-parser.c:1369,1
    - Dst: config_set_unknown_key_error
      Src: /src/dovecot/src/config/config-parser.c:1378,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 69
    argCount: 7
    argNames:
    - ctx
    - line
    - key_with_path
    - prefixed_value
    - full_key_r
    - autoprefix
    - root_setting_r
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    - char*
    - char*
    - char**
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1238
    functionDepth: 5
    functionLinenumber: 1238
    functionLinenumberEnd: 1382
    functionName: config_apply_line_full
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - strchr
    - p_strdup
    - i_assert
    - config_key_can_autoprefix
    - config_apply_exact_line
    - str_begins
    - t_strdup_printf
    - config_set_unknown_key_error
    - config_filter_parser_find
    - config_filter_is_empty
    - replace_filter_prefix
    - t_strdup_until
    - t_str_replace
    - config_add_new_parser
    - hash_table_lookup
    - t_strcut
    - filter_key_skip_group_prefix
    linkageType: ''
    returnType: int
    signature: "int config_apply_line_full(struct config_parser_context *ctx,\n\t\t
      \      const struct config_line *line,\n\t\t       const char *key_with_path,\n\t\t
      \      const char *prefixed_value, const char **full_key_r,\n\t\t       bool
      autoprefix, bool *root_setting_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1390,1
    - Dst: config_apply_line_full
      Src: /src/dovecot/src/config/config-parser.c:1391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ctx
    - key_with_path
    - value
    - full_key_r
    argTypes:
    - struct config_parser_context*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1384
    functionDepth: 6
    functionLinenumber: 1384
    functionLinenumberEnd: 1394
    functionName: config_apply_key_value
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_apply_line_full
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int config_apply_key_value(struct config_parser_context *ctx,\n\t\t\t
      \  const char *key_with_path,\n\t\t\t   const char *value, const char **full_key_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:1404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1396
    functionDepth: 0
    functionLinenumber: 1396
    functionLinenumberEnd: 1410
    functionName: config_module_parsers_init
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct config_module_parser
    signature: 'struct config_module_parser *

      config_module_parsers_init(pool_t pool)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:1419,1
    - Dst: config_module_parsers_init
      Src: /src/dovecot/src/config/config-parser.c:1425,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:1426,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/config/config-parser.c:1430,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/config/config-parser.c:1444,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - filter
    - parent_filter_parser
    argTypes:
    - struct config_parser_context*
    - struct config_filter*
    - struct config_filter_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1412
    functionDepth: 1
    functionLinenumber: 1412
    functionLinenumberEnd: 1450
    functionName: config_add_new_parser
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 3
    functionsReached:
    - config_module_parsers_init
    - p_new
    - DLLIST2_APPEND
    - array_push_back
    - hash_table_insert
    linkageType: ''
    returnType: struct config_filter_parser
    signature: "struct config_filter_parser *\nconfig_add_new_parser(struct config_parser_context
      *ctx,\n\t\t      const struct config_filter *filter,\n\t\t      struct config_filter_parser
      *parent_filter_parser)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:1457,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct config_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1452
    functionDepth: 1
    functionLinenumber: 1452
    functionLinenumberEnd: 1464
    functionName: config_add_new_section
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_new
    linkageType: ''
    returnType: struct config_section_stack
    signature: 'struct config_section_stack *

      config_add_new_section(struct config_parser_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:1470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - filter
    argTypes:
    - struct config_parser_context*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1466
    functionDepth: 0
    functionLinenumber: 1466
    functionLinenumberEnd: 1471
    functionName: config_filter_parser_find
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 3
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: struct config_filter_parser
    signature: "struct config_filter_parser *\nconfig_filter_parser_find(struct config_parser_context
      *ctx,\n\t\t\t  const struct config_filter *filter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/config/config-parser.c:1479,1
    - Dst: config_filters_equal
      Src: /src/dovecot/src/config/config-parser.c:1480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - filter
    argTypes:
    - struct config_parser_context*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1473
    functionDepth: 4
    functionLinenumber: 1473
    functionLinenumberEnd: 1484
    functionName: config_filter_parser_find_slow
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filters_equal
    - array_foreach_elem
    linkageType: ''
    returnType: struct config_filter_parser
    signature: "struct config_filter_parser *\nconfig_filter_parser_find_slow(struct
      config_parser_context *ctx,\n\t\t\t       const struct config_filter *filter)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: net_parse_range
      Src: /src/dovecot/src/config/config-parser.c:1495,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:1498,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-parser.c:1500,1
    - Dst: time
      Src: /src/dovecot/src/config/config-parser.c:1504,1
    - Dst: alarm
      Src: /src/dovecot/src/config/config-parser.c:1505,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/config/config-parser.c:1506,1
    - Dst: alarm
      Src: /src/dovecot/src/config/config-parser.c:1507,1
    - Dst: time
      Src: /src/dovecot/src/config/config-parser.c:1508,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1510,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/config/config-parser.c:1511,1
    - Dst: i_warning
      Src: /src/dovecot/src/config/config-parser.c:1517,1
    - Dst: IPADDR_IS_V4
      Src: /src/dovecot/src/config/config-parser.c:1521,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/config/config-parser.c:1524,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1527,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 4
    argNames:
    - value
    - ip_r
    - bits_r
    - error_r
    argTypes:
    - char*
    - struct ip_addr*
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1486
    functionDepth: 1
    functionLinenumber: 1486
    functionLinenumberEnd: 1531
    functionName: config_parse_net
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strchr
    - alarm
    - IPADDR_IS_V4
    - t_strdup_printf
    - i_warning
    - net_gethostbyname
    - net_gethosterror
    - t_strdup_until
    - net_parse_range
    - str_to_uint
    - time
    linkageType: ''
    returnType: int
    signature: "int config_parse_net(const char *value, struct ip_addr *ip_r,\n\t\t
      \    unsigned int *bits_r, const char **error_r)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_is_empty
      Src: /src/dovecot/src/config/config-parser.c:1543,1
    - Dst: config_filter_is_empty_defaults
      Src: /src/dovecot/src/config/config-parser.c:1544,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1549,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1551,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1555,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1557,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1558,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1560,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1561,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1569,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1571,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1572,1
    - Dst: config_parse_net
      Src: /src/dovecot/src/config/config-parser.c:1573,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1575,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/config/config-parser.c:1578,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1583,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1584,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:1585,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1592,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1594,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1595,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1597,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/config/config-parser.c:1597,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1598,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1602,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1604,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1605,1
    - Dst: config_parse_net
      Src: /src/dovecot/src/config/config-parser.c:1606,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1608,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/config/config-parser.c:1611,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1616,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 57
    argCount: 5
    argNames:
    - filter
    - pool
    - key
    - value
    - error_r
    argTypes:
    - struct config_filter*
    - pool_t
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1533
    functionDepth: 5
    functionLinenumber: 1533
    functionLinenumberEnd: 1621
    functionName: config_filter_parse
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strchr
    - p_strdup
    - config_parse_net
    - t_strdup_printf
    - config_filter_is_empty_defaults
    - config_filter_is_empty
    - t_str_lcase
    - t_strcut
    - net_is_in_network
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int config_filter_parse(struct config_filter *filter, pool_t pool,\n\t\t\tconst
      char *key, const char *value,\n\t\t\tconst char **error_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:1635,1
    - Dst: config_filter_parse
      Src: /src/dovecot/src/config/config-parser.c:1638,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1640,1
    - Dst: config_is_filter_name
      Src: /src/dovecot/src/config/config-parser.c:1645,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1648,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1653,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1655,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/config/config-parser.c:1657,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/config/config-parser.c:1658,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1659,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1661,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1664,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/config/config-parser.c:1666,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1667,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1669,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1672,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1675,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:1677,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1681,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1686,1
    - Dst: config_filter_parser_find
      Src: /src/dovecot/src/config/config-parser.c:1693,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/config/config-parser.c:1700,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1701,1
    - Dst: config_apply_key_value
      Src: /src/dovecot/src/config/config-parser.c:1702,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1704,1
    - Dst: config_add_new_parser
      Src: /src/dovecot/src/config/config-parser.c:1712,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:1719,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:1722,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1724,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:1725,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/config/config-parser.c:1726,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:1729,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1735,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1739,1
    - Dst: config_apply_line_full
      Src: /src/dovecot/src/config/config-parser.c:1742,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:1746,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:1755,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 73
    argCount: 4
    argNames:
    - ctx
    - key
    - value
    - value_quoted
    argTypes:
    - struct config_parser_context*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1623
    functionDepth: 7
    functionLinenumber: 1623
    functionLinenumberEnd: 1760
    functionName: config_filter_add_new_filter
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filter_parse
    - p_strdup
    - p_array_init
    - t_strdup_printf
    - settings_section_escape
    - t_strcut
    - config_is_filter_name
    - i_panic
    - p_new
    - config_filter_parser_find
    - hash_table_insert
    - config_add_new_parser
    - i_zero
    - config_apply_line_full
    - i_assert
    - hash_table_lookup
    - strcmp
    - config_apply_key_value
    - str_begins_with
    - array_push_back
    - p_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool config_filter_add_new_filter(struct config_parser_context *ctx,\n\t\t\t
      \    const char *key, const char *value,\n\t\t\t     bool value_quoted)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/config/config-parser.c:1780,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1782,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1783,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1784,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/config/config-parser.c:1786,1
    - Dst: settings_parse_keyidx_value_nodup
      Src: /src/dovecot/src/config/config-parser.c:1787,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/config/config-parser.c:1794,1
    - Dst: settings_parse_keyidx_value
      Src: /src/dovecot/src/config/config-parser.c:1795,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/config/config-parser.c:1797,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-parser.c:1802,1
    - Dst: setting_value_can_check
      Src: /src/dovecot/src/config/config-parser.c:1805,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-parser.c:1805,1
    - Dst: settings_parse_keyidx_value_nodup
      Src: /src/dovecot/src/config/config-parser.c:1811,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 3
    argNames:
    - parser
    - p
    - expand_values
    argTypes:
    - struct setting_parser_context*
    - struct config_module_parser*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1762
    functionDepth: 2
    functionLinenumber: 1762
    functionLinenumberEnd: 1815
    functionName: config_fill_set_parser
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - settings_parse_keyidx_value_nodup
    - array_foreach_elem
    - array_get
    - t_strdup_printf
    - settings_parse_keyidx_value
    - setting_value_can_check
    - set_str_expanded
    - settings_section_escape
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void config_fill_set_parser(struct setting_parser_context *parser,\n\t\t\t
      \   const struct config_module_parser *p,\n\t\t\t    bool expand_values)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/config/config-parser.c:1831,1
    - Dst: event_add_str
      Src: /src/dovecot/src/config/config-parser.c:1833,1
    - Dst: event_add_str
      Src: /src/dovecot/src/config/config-parser.c:1836,1
    - Dst: event_add_str
      Src: /src/dovecot/src/config/config-parser.c:1838,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/config/config-parser.c:1840,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/config/config-parser.c:1842,1
    - Dst: config_filter_parser_find_slow
      Src: /src/dovecot/src/config/config-parser.c:1850,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/config/config-parser.c:1854,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1861,1
    - Dst: p_clear
      Src: /src/dovecot/src/config/config-parser.c:1863,1
    - Dst: settings_parser_init
      Src: /src/dovecot/src/config/config-parser.c:1865,1
    - Dst: config_fill_set_parser
      Src: /src/dovecot/src/config/config-parser.c:1868,1
    - Dst: config_fill_set_parser
      Src: /src/dovecot/src/config/config-parser.c:1871,1
    - Dst: settings_parser_check
      Src: /src/dovecot/src/config/config-parser.c:1873,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/config/config-parser.c:1875,1
    - Dst: settings_parser_unref
      Src: /src/dovecot/src/config/config-parser.c:1876,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1880,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1884,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:1885,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:1890,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 4
    argNames:
    - ctx
    - new_config
    - event
    - filter_parser
    argTypes:
    - struct config_parser_context*
    - struct config_parsed*
    - struct event*
    - struct config_filter_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1893
      start: 1819
    functionDepth: 5
    functionLinenumber: 1819
    functionLinenumberEnd: 1893
    functionName: config_filter_parser_check
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - T_END_PASS_STR_IF
    - p_strdup
    - array_push_back
    - event_add_ip
    - settings_parser_init
    - settings_parser_check
    - settings_parser_unref
    - config_fill_set_parser
    - event_add_str
    - i_assert
    - p_clear
    - config_filter_parser_find_slow
    linkageType: ''
    returnType: void
    signature: "void config_filter_parser_check(struct config_parser_context *ctx,\n\t\t\t
      \  struct config_parsed *new_config,\n\t\t\t   struct event *event,\n\t\t\t
      \  struct config_filter_parser *filter_parser)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/config/config-parser.c:1908,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:1911,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-parser.c:1914,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 3
    argNames:
    - parser
    - key
    - default_value
    argTypes:
    - struct config_filter_parser*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1898
    functionDepth: 2
    functionLinenumber: 1898
    functionLinenumberEnd: 1918
    functionName: get_str_setting
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - setting_parser_info_find_key
    - set_str_expanded
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *\nget_str_setting(struct config_filter_parser *parser, const
      char *key,\n\t\tconst char *default_value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:1931,1
    - Dst: config_dump_full
      Src: /src/dovecot/src/config/config-parser.c:1940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - new_config
    - flags
    - error_r
    argTypes:
    - struct config_parser_context*
    - struct config_parsed*
    - enum config_parse_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1920
    functionDepth: 9
    functionLinenumber: 1920
    functionLinenumberEnd: 1942
    functionName: config_all_parsers_check
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - config_dump_full
    linkageType: ''
    returnType: int
    signature: "int config_all_parsers_check(struct config_parser_context *ctx,\n\t\t\t
      struct config_parsed *new_config,\n\t\t\t enum config_parse_flags flags, const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/config/config-parser.c:2029,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2031,1
    - Dst: config_parser_add_seen_file_fd
      Src: /src/dovecot/src/config/config-parser.c:2035,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/config/config-parser.c:2036,1
    - Dst: read
      Src: /src/dovecot/src/config/config-parser.c:2039,1
    - Dst: str_append_data
      Src: /src/dovecot/src/config/config-parser.c:2040,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2042,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/config/config-parser.c:2045,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - ctx
    - str
    - key
    - path
    - error_r
    argTypes:
    - struct config_parser_context*
    - string_t*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 2019
    functionDepth: 3
    functionLinenumber: 2019
    functionLinenumberEnd: 2047
    functionName: str_append_file
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - open
    - t_strdup_printf
    - read
    - config_parser_add_seen_file_fd
    - str_append_data
    linkageType: ''
    returnType: int
    signature: "int str_append_file(struct config_parser_context *ctx, string_t *str,\n\t\tconst
      char *key, const char *path, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:2056,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2060,1
    - Dst: open
      Src: /src/dovecot/src/config/config-parser.c:2064,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2068,1
    - Dst: config_parser_add_seen_file_fd
      Src: /src/dovecot/src/config/config-parser.c:2072,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/config/config-parser.c:2076,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:2080,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:2082,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/config/config-parser.c:2083,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/config/config-parser.c:2084,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - path
    - ignore_errors
    - error_r
    argTypes:
    - struct config_parser_context*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2049
    functionDepth: 3
    functionLinenumber: 2049
    functionLinenumberEnd: 2087
    functionName: settings_add_include
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - p_new
    - i_close_fd
    - open
    - t_strdup_printf
    - i_stream_set_return_partial_line
    - config_parser_add_seen_file_fd
    - i_stream_create_fd_autoclose
    linkageType: ''
    returnType: int
    signature: "int settings_add_include(struct config_parser_context *ctx, const
      char *path,\n\t\t\t\tbool ignore_errors, const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: glob
      Src: /src/dovecot/src/config/config-parser.c:2098,1
    - Dst: settings_add_include
      Src: /src/dovecot/src/config/config-parser.c:2119,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:2121,1
    - Dst: globfree
      Src: /src/dovecot/src/config/config-parser.c:2125,1
    - Dst: settings_add_include
      Src: /src/dovecot/src/config/config-parser.c:2128,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:2129,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - pattern
    - ignore_errors
    argTypes:
    - struct config_parser_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2089
    functionDepth: 4
    functionLinenumber: 2089
    functionLinenumberEnd: 2134
    functionName: settings_include
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - globfree
    - settings_add_include
    - glob
    linkageType: ''
    returnType: int
    signature: "int settings_include(struct config_parser_context *ctx, const char
      *pattern,\n\t\t bool ignore_errors)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - str
    - error_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2136
    functionDepth: 1
    functionLinenumber: 2136
    functionLinenumberEnd: 2159
    functionName: config_str_unescape
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: int config_str_unescape(char *str, const char **error_r)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:2170,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2175,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2195,1
    - Dst: i_warning
      Src: /src/dovecot/src/config/config-parser.c:2196,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-parser.c:2208,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2210,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2220,1
    - Dst: str_append_data
      Src: /src/dovecot/src/config/config-parser.c:2225,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:2226,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-parser.c:2231,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:2232,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/config/config-parser.c:2233,1
    - Dst: config_str_unescape
      Src: /src/dovecot/src/config/config-parser.c:2252,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2257,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2260,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2262,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:2267,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:2271,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2279,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2282,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:2287,1
    - Dst: strlen
      Src: /src/dovecot/src/config/config-parser.c:2293,1
    - Dst: config_str_unescape
      Src: /src/dovecot/src/config/config-parser.c:2299,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:2310,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:2321,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2324,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2332,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2336,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2344,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2357,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2361,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2370,1
    - Dst: config_str_unescape
      Src: /src/dovecot/src/config/config-parser.c:2372,1
    CyclomaticComplexity: 77
    EdgeCount: 77
    ICount: 191
    argCount: 4
    argNames:
    - ctx
    - line
    - full_line
    - config_line_r
    argTypes:
    - struct config_parser_context*
    - char*
    - string_t*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2161
    functionDepth: 2
    functionLinenumber: 2161
    functionLinenumberEnd: 2391
    functionName: config_parse_line
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - strchr
    - str_append_c
    - str_len
    - strlen
    - i_warning
    - i_isspace
    - str_append
    - str_append_data
    - config_str_unescape
    - str_c_modifiable
    linkageType: ''
    returnType: void
    signature: "void config_parse_line(struct config_parser_context *ctx,\n\t\t  char
      *line, string_t *full_line,\n\t\t  struct config_line *config_line_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/config/config-parser.c:2398,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/config/config-parser.c:2400,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:2401,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:2402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - group
    - name
    argTypes:
    - struct config_include_group_filters*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2406
      start: 2393
    functionDepth: 1
    functionLinenumber: 2393
    functionLinenumberEnd: 2406
    functionName: group_find_name
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - i_strchr_to_next
    - array_foreach_elem
    linkageType: ''
    returnType: struct config_filter_parser
    signature: 'struct config_filter_parser *

      group_find_name(struct config_include_group_filters *group, const char *name)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:2414,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:2420,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:2423,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:2439,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:2463,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 36
    argCount: 5
    argNames:
    - pool
    - dest
    - src
    - overwrite
    - new_change_counter
    argTypes:
    - pool_t
    - struct config_module_parser*
    - struct config_module_parser*
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2464
      start: 2408
    functionDepth: 1
    functionLinenumber: 2408
    functionLinenumberEnd: 2464
    functionName: config_module_parsers_merge
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - p_new
    linkageType: ''
    returnType: void
    signature: "void config_module_parsers_merge(pool_t pool, struct config_module_parser
      *dest,\n\t\t\t    const struct config_module_parser *src,\n\t\t\t    bool overwrite,
      unsigned int new_change_counter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:2476,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/config/config-parser.c:2476,1
    - Dst: config_filters_find_child
      Src: /src/dovecot/src/config/config-parser.c:2478,1
    - Dst: config_add_new_parser
      Src: /src/dovecot/src/config/config-parser.c:2480,1
    - Dst: config_module_parsers_merge
      Src: /src/dovecot/src/config/config-parser.c:2487,1
    - Dst: config_filters_merge_tree
      Src: /src/dovecot/src/config/config-parser.c:2490,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - ctx
    - dest_parent
    - src_parent
    - drop_merged
    - overwrite
    - new_change_counter
    argTypes:
    - struct config_parser_context*
    - struct config_filter_parser*
    - struct config_filter_parser*
    - bool
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2466
    functionDepth: 3
    functionLinenumber: 2466
    functionLinenumberEnd: 2494
    functionName: config_filters_merge_tree
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - config_module_parsers_merge
    - config_filters_find_child
    - array_is_empty
    - config_filters_merge_tree
    - config_add_new_parser
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void config_filters_merge_tree(struct config_parser_context *ctx,\n\t\t\t
      \ struct config_filter_parser *dest_parent,\n\t\t\t  struct config_filter_parser
      *src_parent,\n\t\t\t  bool drop_merged, bool overwrite,\n\t\t\t  unsigned int
      new_change_counter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:2503,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/config/config-parser.c:2503,1
    - Dst: config_module_parsers_merge
      Src: /src/dovecot/src/config/config-parser.c:2507,1
    - Dst: config_filters_merge_tree
      Src: /src/dovecot/src/config/config-parser.c:2510,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/config/config-parser.c:2513,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/config/config-parser.c:2514,1
    - Dst: array_front
      Src: /src/dovecot/src/config/config-parser.c:2516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 7
    argNames:
    - ctx
    - config
    - dest_filter
    - src_filter
    - drop_merged
    - overwrite
    - new_change_counter
    argTypes:
    - struct config_parser_context*
    - struct config_parsed*
    - struct config_filter_parser*
    - struct config_filter_parser*
    - bool
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2517
      start: 2496
    functionDepth: 4
    functionLinenumber: 2496
    functionLinenumberEnd: 2517
    functionName: config_filters_merge
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_module_parsers_merge
    - array_is_empty
    - config_filters_merge_tree
    - array_pop_back
    - array_front
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void config_filters_merge(struct config_parser_context *ctx,\n\t\t\t\t
      struct config_parsed *config,\n\t\t\t\t struct config_filter_parser *dest_filter,\n\t\t\t\t
      struct config_filter_parser *src_filter,\n\t\t\t\t bool drop_merged, bool overwrite,\n\t\t\t\t
      unsigned int new_change_counter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_match_no_recurse
      Src: /src/dovecot/src/config/config-parser.c:2527,1
    - Dst: config_filters_merge
      Src: /src/dovecot/src/config/config-parser.c:2539,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - config
    - dump_filter
    argTypes:
    - struct config_parser_context*
    - struct config_parsed*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2542
      start: 2519
    functionDepth: 5
    functionLinenumber: 2519
    functionLinenumberEnd: 2542
    functionName: config_parse_merge_filters
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filters_merge
    - config_filter_match_no_recurse
    linkageType: ''
    returnType: void
    signature: "void config_parse_merge_filters(struct config_parser_context *ctx,\n\t\t\t
      \  struct config_parsed *config,\n\t\t\t   const struct config_filter *dump_filter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_elem
      Src: /src/dovecot/src/config/config-parser.c:2550,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/config/config-parser.c:2551,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:2552,1
    - Dst: config_filter_is_empty_defaults
      Src: /src/dovecot/src/config/config-parser.c:2552,1
    - Dst: config_filters_merge
      Src: /src/dovecot/src/config/config-parser.c:2554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - config
    argTypes:
    - struct config_parser_context*
    - struct config_parsed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2556
      start: 2544
    functionDepth: 5
    functionLinenumber: 2544
    functionLinenumberEnd: 2556
    functionName: config_parse_merge_default_filters
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_idx_elem
    - config_filters_merge
    - config_filter_is_empty_defaults
    linkageType: ''
    returnType: void
    signature: "void config_parse_merge_default_filters(struct config_parser_context
      *ctx,\n\t\t\t\t   struct config_parsed *config)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - struct config_filter_parser**
    - struct config_filter_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2591
      start: 2558
    functionDepth: 0
    functionLinenumber: 2558
    functionLinenumberEnd: 2591
    functionName: config_parser_filter_cmp
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int config_parser_filter_cmp(struct config_filter_parser *const *f1,\n\t\t\t\t
      \   struct config_filter_parser *const *f2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:2599,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:2601,1
    - Dst: config_write_keyvariable
      Src: /src/dovecot/src/config/config-parser.c:2602,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:2609,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:2609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - filter_parser
    - key
    - value
    argTypes:
    - struct config_parser_context*
    - struct config_filter_parser*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2611
      start: 2593
    functionDepth: 1
    functionLinenumber: 2593
    functionLinenumberEnd: 2611
    functionName: config_expand_value
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - p_strdup
    - config_write_keyvariable
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int config_expand_value(struct config_parser_context *ctx,\n\t\t\t
      \      struct config_filter_parser *filter_parser,\n\t\t\t       const char
      *key, const char **value)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/config/config-parser.c:2633,1
    - Dst: config_expand_value
      Src: /src/dovecot/src/config/config-parser.c:2635,1
    - Dst: config_expand_value
      Src: /src/dovecot/src/config/config-parser.c:2638,1
    - Dst: config_expand_value
      Src: /src/dovecot/src/config/config-parser.c:2649,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - filter_parser
    - p
    argTypes:
    - struct config_parser_context*
    - struct config_filter_parser*
    - struct config_module_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2657
      start: 2613
    functionDepth: 2
    functionLinenumber: 2613
    functionLinenumberEnd: 2657
    functionName: config_module_parser_expand_values
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - config_expand_value
    linkageType: ''
    returnType: int
    signature: "int config_module_parser_expand_values(struct config_parser_context
      *ctx,\n\t\t\t\t   struct config_filter_parser *filter_parser,\n\t\t\t\t   const
      struct config_module_parser *p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_module_parser_expand_values
      Src: /src/dovecot/src/config/config-parser.c:2665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - filter_parser
    argTypes:
    - struct config_parser_context*
    - struct config_filter_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2670
      start: 2659
    functionDepth: 3
    functionLinenumber: 2659
    functionLinenumberEnd: 2670
    functionName: config_filter_parser_expand_values
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_module_parser_expand_values
    linkageType: ''
    returnType: int
    signature: "int config_filter_parser_expand_values(struct config_parser_context
      *ctx,\n\t\t\t\t   struct config_filter_parser *filter_parser)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/config/config-parser.c:2676,1
    - Dst: config_filter_parser_expand_values
      Src: /src/dovecot/src/config/config-parser.c:2677,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct config_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2681
      start: 2672
    functionDepth: 4
    functionLinenumber: 2672
    functionLinenumberEnd: 2681
    functionName: config_parse_expand_values
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filter_parser_expand_values
    - array_foreach_elem
    linkageType: ''
    returnType: int
    signature: int config_parse_expand_values(struct config_parser_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: config_parse_expand_values
      Src: /src/dovecot/src/config/config-parser.c:2693,1
    - Dst: t_strdup
      Src: /src/dovecot/src/config/config-parser.c:2694,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:2698,1
    - Dst: pool_ref
      Src: /src/dovecot/src/config/config-parser.c:2700,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:2702,1
    - Dst: array_sort
      Src: /src/dovecot/src/config/config-parser.c:2705,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/config/config-parser.c:2706,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/config/config-parser.c:2707,1
    - Dst: array_front
      Src: /src/dovecot/src/config/config-parser.c:2708,1
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:2712,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/config/config-parser.c:2720,1
    - Dst: config_parse_merge_filters
      Src: /src/dovecot/src/config/config-parser.c:2723,1
    - Dst: config_all_parsers_check
      Src: /src/dovecot/src/config/config-parser.c:2727,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2728,1
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:2732,1
    - Dst: config_parse_merge_default_filters
      Src: /src/dovecot/src/config/config-parser.c:2736,1
    - Dst: config_parsed_free
      Src: /src/dovecot/src/config/config-parser.c:2739,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - ctx
    - flags
    - dump_filter
    - config_r
    - error_r
    argTypes:
    - struct config_parser_context*
    - enum config_parse_flags
    - struct config_filter*
    - struct config_parsed**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2683
    functionDepth: 10
    functionLinenumber: 2683
    functionLinenumberEnd: 2744
    functionName: config_parse_finish
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - config_parse_expand_values
    - p_new
    - pool_ref
    - p_array_init
    - config_all_parsers_check
    - t_strdup_printf
    - config_parse_merge_filters
    - array_pop_back
    - config_parse_merge_default_filters
    - array_front
    - array_sort
    - array_append_zero
    - t_strdup
    - hash_table_destroy
    - config_parsed_free
    linkageType: ''
    returnType: int
    signature: "int config_parse_finish(struct config_parser_context *ctx,\n\t\t    enum
      config_parse_flags flags,\n\t\t    const struct config_filter *dump_filter,\n\t\t
      \   struct config_parsed **config_r, const char **error_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/config/config-parser.c:2757,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:2758,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/config/config-parser.c:2759,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2760,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:2764,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:2766,1
    - Dst: strchr
      Src: /src/dovecot/src/config/config-parser.c:2770,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-parser.c:2775,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-parser.c:2776,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:2788,1
    - Dst: str_begins
      Src: /src/dovecot/src/config/config-parser.c:2795,1
    - Dst: getenv
      Src: /src/dovecot/src/config/config-parser.c:2797,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:2799,1
    - Dst: strrchr
      Src: /src/dovecot/src/config/config-parser.c:2805,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-parser.c:2817,1
    - Dst: config_filter_parser_find_path
      Src: /src/dovecot/src/config/config-parser.c:2819,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2824,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:2832,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2834,1
    - Dst: config_get_value
      Src: /src/dovecot/src/config/config-parser.c:2841,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2845,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:2855,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:2861,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2864,1
    - Dst: i_isspace
      Src: /src/dovecot/src/config/config-parser.c:2866,1
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-parser.c:2873,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:2874,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:2876,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/config/config-parser.c:2878,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 73
    argCount: 6
    argNames:
    - ctx
    - filter_parser
    - key
    - value
    - prefixed_str
    - delay_set_expand
    argTypes:
    - struct config_parser_context*
    - struct config_filter_parser*
    - char*
    - char*
    - string_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2880
      start: 2746
    functionDepth: 7
    functionLinenumber: 2746
    functionLinenumberEnd: 2880
    functionName: config_write_keyvariable
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 4
    functionsReached:
    - strchr
    - p_array_init
    - array_lsearch
    - str_append_c
    - config_get_value
    - i_isspace
    - hash_table_lookup
    - strcmp
    - strrchr
    - array_push_back
    - str_begins
    - getenv
    - config_filter_parser_find_path
    - array_pop_back
    - t_strdup_until
    - str_truncate
    - str_append
    - array_is_created
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int config_write_keyvariable(struct config_parser_context *ctx,\n\t\t\t\t
      \   struct config_filter_parser *filter_parser,\n\t\t\t\t    const char *key,
      const char *value,\n\t\t\t\t    string_t *prefixed_str,\n\t\t\t\t    bool delay_set_expand)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/config/config-parser.c:2887,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:2891,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:2892,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:2895,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:2897,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:2898,1
    - Dst: config_section_is_in_list
      Src: /src/dovecot/src/config/config-parser.c:2901,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2902,1
    - Dst: fix_relative_path
      Src: /src/dovecot/src/config/config-parser.c:2906,1
    - Dst: str_append_file
      Src: /src/dovecot/src/config/config-parser.c:2907,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:2910,1
    - Dst: config_write_keyvariable
      Src: /src/dovecot/src/config/config-parser.c:2916,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-parser.c:2922,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - line
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2925
      start: 2882
    functionDepth: 8
    functionLinenumber: 2882
    functionLinenumberEnd: 2925
    functionName: config_write_value
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - str_append_c
    - fix_relative_path
    - i_unreached
    - t_strdup_printf
    - str_append_file
    - str_truncate
    - str_append
    - config_write_keyvariable
    - config_section_is_in_list
    linkageType: ''
    returnType: int
    signature: "int config_write_value(struct config_parser_context *ctx,\n\t\t\t
      \     const struct config_line *line)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 7
    argCount: 1
    argNames:
    - section
    argTypes:
    - struct config_section_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2945
      start: 2927
    functionDepth: 0
    functionLinenumber: 2927
    functionLinenumberEnd: 2945
    functionName: config_section_has_non_named_list_filters
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool config_section_has_non_named_list_filters(struct config_section_stack
      *section)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:2964,1
    - Dst: i_warning
      Src: /src/dovecot/src/config/config-parser.c:2970,1
    - Dst: config_section_has_non_named_list_filters
      Src: /src/dovecot/src/config/config-parser.c:2978,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:2985,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:2987,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/config/config-parser.c:2988,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - key
    - root_setting
    argTypes:
    - struct config_parser_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2989
      start: 2947
    functionDepth: 1
    functionLinenumber: 2947
    functionLinenumberEnd: 2989
    functionName: config_parser_check_warnings
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - config_section_has_non_named_list_filters
    - i_warning
    - hash_table_insert
    - hash_table_lookup
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void config_parser_check_warnings(struct config_parser_context *ctx,
      const char *key,\n\t\t\t     bool root_setting)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_array_find
      Src: /src/dovecot/src/config/config-parser.c:3007,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3008,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3009,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/config/config-parser.c:3011,1
    - Dst: str_array_find
      Src: /src/dovecot/src/config/config-parser.c:3012,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - version
    - error_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3018
      start: 2991
    functionDepth: 1
    functionLinenumber: 2991
    functionLinenumberEnd: 3018
    functionName: config_version_find
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_array_find
    - t_strdup_printf
    - t_strarray_join
    linkageType: ''
    returnType: bool
    signature: bool config_version_find(const char *version, const char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3023,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3025,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3026,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct config_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3029
      start: 3020
    functionDepth: 0
    functionLinenumber: 3020
    functionLinenumberEnd: 3029
    functionName: dovecot_config_version_equals
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool dovecot_config_version_equals(struct config_parser_context *ctx,
      const char *value)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3041,1
    - Dst: dovecot_config_version_equals
      Src: /src/dovecot/src/config/config-parser.c:3044,1
    - Dst: config_version_find
      Src: /src/dovecot/src/config/config-parser.c:3061,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3062,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3064,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:3068,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - line
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3031
    functionDepth: 2
    functionLinenumber: 3031
    functionLinenumberEnd: 3071
    functionName: config_parser_get_version
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - config_version_find
    - dovecot_config_version_equals
    - p_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool config_parser_get_version(struct config_parser_context *ctx,\n\t\t\t\t
      \     const struct config_line *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:3079,1
    - Dst: config_filter_parser_replace_parent
      Src: /src/dovecot/src/config/config-parser.c:3086,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - pool
    - src
    - parent
    argTypes:
    - pool_t
    - struct config_filter_parser*
    - struct config_filter_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3090
      start: 3073
    functionDepth: 1
    functionLinenumber: 3073
    functionLinenumberEnd: 3090
    functionName: config_filter_parser_replace_parent
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - p_new
    - config_filter_parser_replace_parent
    linkageType: ''
    returnType: struct config_filter_parser
    signature: "struct config_filter_parser *\nconfig_filter_parser_replace_parent(pool_t
      pool,\n\t\t\t\t    const struct config_filter_parser *src,\n\t\t\t\t    struct
      config_filter_parser *parent)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:3098,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3101,1
    - Dst: group_find_name
      Src: /src/dovecot/src/config/config-parser.c:3107,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3109,1
    - Dst: config_module_parsers_merge
      Src: /src/dovecot/src/config/config-parser.c:3114,1
    - Dst: config_filter_parser_replace_parent
      Src: /src/dovecot/src/config/config-parser.c:3123,1
    - Dst: config_parse_fill_reverse_default_siblings
      Src: /src/dovecot/src/config/config-parser.c:3130,1
    - Dst: config_filters_find_child
      Src: /src/dovecot/src/config/config-parser.c:3134,1
    - Dst: config_add_new_parser
      Src: /src/dovecot/src/config/config-parser.c:3137,1
    - Dst: config_filters_merge
      Src: /src/dovecot/src/config/config-parser.c:3142,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - include_group
    - error_r
    argTypes:
    - struct config_parser_context*
    - struct config_include_group*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3146
      start: 3092
    functionDepth: 6
    functionLinenumber: 3092
    functionLinenumberEnd: 3146
    functionName: config_parser_include_merge
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_module_parsers_merge
    - group_find_name
    - t_strdup_printf
    - config_parse_fill_reverse_default_siblings
    - config_filters_find_child
    - config_filters_merge
    - config_add_new_parser
    - hash_table_lookup
    - config_filter_parser_replace_parent
    linkageType: ''
    returnType: int
    signature: "int config_parser_include_merge(struct config_parser_context *ctx,\n\t\t\t
      \   const struct config_include_group *include_group,\n\t\t\t    const char
      **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/config/config-parser.c:3158,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:3159,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/config/config-parser.c:3160,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3161,1
    - Dst: array_append_space
      Src: /src/dovecot/src/config/config-parser.c:3168,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:3169,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:3171,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:3173,1
    - Dst: config_parser_include_merge
      Src: /src/dovecot/src/config/config-parser.c:3176,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:3177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - group
    - name
    argTypes:
    - struct config_parser_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3178
      start: 3148
    functionDepth: 7
    functionLinenumber: 3148
    functionLinenumberEnd: 3178
    functionName: config_parser_include_add_or_update
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - array_append_space
    - p_array_init
    - config_parser_include_merge
    - array_foreach_modifiable
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void config_parser_include_add_or_update(struct config_parser_context
      *ctx,\n\t\t\t\t    const char *group, const char *name)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-parser.c:3190,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:3192,1
    - Dst: config_write_value
      Src: /src/dovecot/src/config/config-parser.c:3197,1
    - Dst: config_apply_error
      Src: /src/dovecot/src/config/config-parser.c:3198,1
    - Dst: config_filter_has_include_group
      Src: /src/dovecot/src/config/config-parser.c:3202,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3206,1
    - Dst: config_parser_include_add_or_update
      Src: /src/dovecot/src/config/config-parser.c:3210,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3211,1
    - Dst: config_section_is_in_list
      Src: /src/dovecot/src/config/config-parser.c:3215,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3216,1
    - Dst: config_apply_line_full
      Src: /src/dovecot/src/config/config-parser.c:3220,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3221,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3224,1
    - Dst: config_parser_check_warnings
      Src: /src/dovecot/src/config/config-parser.c:3227,1
    - Dst: config_add_new_section
      Src: /src/dovecot/src/config/config-parser.c:3233,1
    - Dst: config_filter_add_new_filter
      Src: /src/dovecot/src/config/config-parser.c:3236,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/config/config-parser.c:3247,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3248,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:3250,1
    - Dst: config_key_can_autoprefix
      Src: /src/dovecot/src/config/config-parser.c:3251,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-parser.c:3254,1
    - Dst: t_strcut
      Src: /src/dovecot/src/config/config-parser.c:3255,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3256,1
    - Dst: config_key_can_autoprefix
      Src: /src/dovecot/src/config/config-parser.c:3257,1
    - Dst: str_printfa
      Src: /src/dovecot/src/config/config-parser.c:3260,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:3263,1
    - Dst: config_add_new_section
      Src: /src/dovecot/src/config/config-parser.c:3266,1
    - Dst: p_strdup
      Src: /src/dovecot/src/config/config-parser.c:3267,1
    - Dst: config_filter_add_new_filter
      Src: /src/dovecot/src/config/config-parser.c:3269,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:3276,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:3281,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3282,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3284,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3292,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3295,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3306,1
    - Dst: settings_include
      Src: /src/dovecot/src/config/config-parser.c:3317,1
    - Dst: fix_relative_path
      Src: /src/dovecot/src/config/config-parser.c:3317,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 89
    argCount: 2
    argNames:
    - ctx
    - line
    argTypes:
    - struct config_parser_context*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3321
      start: 3180
    functionDepth: 9
    functionLinenumber: 3180
    functionLinenumberEnd: 3321
    functionName: config_parser_apply_line
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - str_printfa
    - config_filter_has_include_group
    - config_key_can_autoprefix
    - t_strdup_printf
    - config_apply_error
    - t_str_replace
    - config_parser_include_add_or_update
    - t_strcut
    - config_add_new_section
    - t_str_new
    - fix_relative_path
    - i_unreached
    - settings_include
    - config_write_value
    - config_filter_add_new_filter
    - config_apply_line_full
    - config_section_is_in_list
    - i_assert
    - hash_table_lookup
    - config_parser_check_warnings
    - str_append
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void config_parser_apply_line(struct config_parser_context *ctx,\n\t\t\t
      \     const struct config_line *line)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:3329,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/config/config-parser.c:3331,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/config/config-parser.c:3332,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:3334,1
    - Dst: config_export_type
      Src: /src/dovecot/src/config/config-parser.c:3335,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:3339,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-parser.c:3339,1
    - Dst: config_export_type
      Src: /src/dovecot/src/config/config-parser.c:3340,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-parser.c:3341,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3342,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3342,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3342,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:3343,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3345,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - info1
    - def1
    - info2
    - def2
    argTypes:
    - struct setting_parser_info*
    - struct setting_define*
    - struct setting_parser_info*
    - struct setting_define*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3347
      start: 3323
    functionDepth: 4
    functionLinenumber: 3323
    functionLinenumberEnd: 3347
    functionName: check_defaults_equal
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - i_panic
    - str_len
    - config_export_type
    - i_unreached
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void check_defaults_equal(const struct setting_parser_info *info1,\n\t\t
      \    const struct setting_define *def1,\n\t\t     const struct setting_parser_info
      *info2,\n\t\t     const struct setting_define *def2)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:3362,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:3366,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/config/config-parser.c:3371,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:3373,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/config/config-parser.c:3377,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:3385,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3385,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:3387,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:3391,1
    - Dst: check_defaults_equal
      Src: /src/dovecot/src/config/config-parser.c:3395,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:3398,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/config/config-parser.c:3402,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/config/config-parser.c:3403,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - info_idx
    argTypes:
    - struct config_parser_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3404
      start: 3349
    functionDepth: 5
    functionLinenumber: 3349
    functionLinenumberEnd: 3404
    functionName: config_parser_add_info
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - i_panic
    - strcmp
    - hash_table_update
    - p_new
    - check_defaults_equal
    - DLLIST_PREPEND
    - hash_table_lookup_full
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void config_parser_add_info(struct config_parser_context *ctx,\n\t\t
      \      unsigned int info_idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-parser.c:3417,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:3418,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/config/config-parser.c:3424,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:3426,1
    - Dst: array_sort
      Src: /src/dovecot/src/config/config-parser.c:3430,1
    - Dst: array_count
      Src: /src/dovecot/src/config/config-parser.c:3431,1
    - Dst: array_front
      Src: /src/dovecot/src/config/config-parser.c:3433,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct config_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3434
      start: 3411
    functionDepth: 1
    functionLinenumber: 3411
    functionLinenumberEnd: 3434
    functionName: config_parser_get_filter_name_prefixes
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - array_push_back
    - array_count
    - p_strconcat
    - ARRAY_TYPE
    - array_front
    - array_sort
    linkageType: ''
    returnType: void
    signature: void config_parser_get_filter_name_prefixes(struct config_parser_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_filters_equal
      Src: /src/dovecot/src/config/config-parser.c:3440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - struct config_filter*
    - struct config_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3441
      start: 3436
    functionDepth: 4
    functionLinenumber: 3436
    functionLinenumberEnd: 3441
    functionName: config_filters_cmp
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filters_equal
    linkageType: ''
    returnType: int
    signature: "int config_filters_cmp(const struct config_filter *f1,\n\t\t   const
      struct config_filter *f2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct config_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3449
      start: 3443
    functionDepth: 1
    functionLinenumber: 3443
    functionLinenumberEnd: 3449
    functionName: config_file_get_input_error
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      config_file_get_input_error(const struct config_parser_context *ctx)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/config/config-parser.c:3470,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3472,1
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:3477,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/config/config-parser.c:3478,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/config/config-parser.c:3482,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:3483,1
    - Dst: config_parser_add_seen_file_fd
      Src: /src/dovecot/src/config/config-parser.c:3485,1
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:3491,1
    - Dst: config_parser_add_seen_file
      Src: /src/dovecot/src/config/config-parser.c:3492,1
    - Dst: config_parser_set_change_counter
      Src: /src/dovecot/src/config/config-parser.c:3497,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:3499,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3502,1
    - Dst: config_module_parser_init
      Src: /src/dovecot/src/config/config-parser.c:3505,1
    - Dst: config_parser_add_info
      Src: /src/dovecot/src/config/config-parser.c:3506,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3508,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:3512,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:3517,1
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:3520,1
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:3521,1
    - Dst: config_parser_get_filter_name_prefixes
      Src: /src/dovecot/src/config/config-parser.c:3527,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/config/config-parser.c:3528,1
    - Dst: p_array_init
      Src: /src/dovecot/src/config/config-parser.c:3530,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/config/config-parser.c:3531,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/config/config-parser.c:3533,1
    - Dst: p_new
      Src: /src/dovecot/src/config/config-parser.c:3535,1
    - Dst: config_add_new_parser
      Src: /src/dovecot/src/config/config-parser.c:3539,1
    - Dst: config_add_new_parser
      Src: /src/dovecot/src/config/config-parser.c:3547,1
    - Dst: str_new
      Src: /src/dovecot/src/config/config-parser.c:3550,1
    - Dst: str_new
      Src: /src/dovecot/src/config/config-parser.c:3551,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/config/config-parser.c:3556,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/config/config-parser.c:3557,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/config/config-parser.c:3558,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/config/config-parser.c:3562,1
    - Dst: config_parse_line
      Src: /src/dovecot/src/config/config-parser.c:3565,1
    - Dst: config_parser_get_version
      Src: /src/dovecot/src/config/config-parser.c:3566,1
    - Dst: config_file_get_input_error
      Src: /src/dovecot/src/config/config-parser.c:3568,1
    - Dst: config_parser_add_services
      Src: /src/dovecot/src/config/config-parser.c:3576,1
    - Dst: config_parser_add_info_defaults
      Src: /src/dovecot/src/config/config-parser.c:3578,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 78
    argCount: 5
    argNames:
    - path
    - flags
    - dump_filter
    - config_r
    - error_r
    argTypes:
    - char*
    - enum config_parse_flags
    - struct config_filter*
    - struct config_parsed**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3580
      start: 3451
    functionDepth: 6
    functionLinenumber: 3451
    functionLinenumberEnd: 3580
    functionName: config_parse_file
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - p_array_init
    - t_strdup_printf
    - config_parser_add_services
    - config_parse_line
    - config_parser_add_info_defaults
    - i_stream_create_from_data
    - i_panic
    - hash_table_create
    - p_new
    - config_parser_get_filter_name_prefixes
    - i_stream_read_next_line
    - i_stream_set_return_partial_line
    - config_parser_add_seen_file_fd
    - config_module_parser_init
    - config_add_new_parser
    - str_new
    - i_zero
    - open
    - config_file_get_input_error
    - i_stream_create_fd_autoclose
    - i_assert
    - config_parser_get_version
    - strcmp
    - pool_alloconly_create
    - config_parser_add_seen_file
    - config_parser_add_info
    - config_parser_set_change_counter
    linkageType: ''
    returnType: int
    signature: "int config_parse_file(const char *path, enum config_parse_flags flags,\n\t\t
      \     const struct config_filter *dump_filter,\n\t\t      struct config_parsed
      **config_r,\n\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - config
    - version_r
    argTypes:
    - struct config_parsed*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3701
      start: 3696
    functionDepth: 0
    functionLinenumber: 3696
    functionLinenumberEnd: 3701
    functionName: config_parsed_get_version
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool config_parsed_get_version(const struct config_parsed *config,\n\t\t\t
      \      const char **version_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config_parsed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3707
      start: 3703
    functionDepth: 0
    functionLinenumber: 3703
    functionLinenumberEnd: 3707
    functionName: config_parsed_get_errors
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      config_parsed_get_errors(const struct config_parsed *config)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config_parsed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3713
      start: 3709
    functionDepth: 0
    functionLinenumber: 3709
    functionLinenumberEnd: 3713
    functionName: config_parsed_get_global_filter_parser
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct config_filter_parser
    signature: 'struct config_filter_parser *

      config_parsed_get_global_filter_parser(const struct config_parsed *config)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config_parsed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3719
      start: 3715
    functionDepth: 0
    functionLinenumber: 3715
    functionLinenumberEnd: 3719
    functionName: config_parsed_get_global_default_filter_parser
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct config_filter_parser
    signature: 'struct config_filter_parser *

      config_parsed_get_global_default_filter_parser(const struct config_parsed *config)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3725
      start: 3721
    functionDepth: 0
    functionLinenumber: 3721
    functionLinenumberEnd: 3725
    functionName: config_parsed_get_filter_parsers
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct config_filter_parser
    signature: 'struct config_filter_parser *const *

      config_parsed_get_filter_parsers(const struct config_parsed *config)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config_parsed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3731
      start: 3728
    functionDepth: 0
    functionLinenumber: 3728
    functionLinenumberEnd: 3731
    functionName: config_parsed_get_all_keys
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void config_parsed_get_all_keys(const struct config_parsed *config)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/config/config-parser.c:3738,1
    - Dst: array_is_created
      Src: /src/dovecot/src/config/config-parser.c:3743,1
    - Dst: array_get
      Src: /src/dovecot/src/config/config-parser.c:3744,1
    - Dst: array_get
      Src: /src/dovecot/src/config/config-parser.c:3750,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:3752,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:3753,1
    - Dst: str_len
      Src: /src/dovecot/src/config/config-parser.c:3755,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:3756,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3758,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/config/config-parser.c:3762,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:3763,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/config/config-parser.c:3764,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 3
    argNames:
    - keyvals
    - values
    - drop_values
    argTypes:
    - string_t*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3767
      start: 3733
    functionDepth: 1
    functionLinenumber: 3733
    functionLinenumberEnd: 3767
    functionName: config_parsed_strlist_append
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_append_c
    - str_len
    - array_get
    - str_append_tabescaped
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void config_parsed_strlist_append(string_t *keyvals,\n\t\t\t     const
      ARRAY_TYPE(const_string) *values,\n\t\t\t     const ARRAY_TYPE(const_string)
      *drop_values)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_global_filter_parser
      Src: /src/dovecot/src/config/config-parser.c:3775,1
    - Dst: config_parsed_get_global_default_filter_parser
      Src: /src/dovecot/src/config/config-parser.c:3777,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3784,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/config/config-parser.c:3788,1
    - Dst: i_panic
      Src: /src/dovecot/src/config/config-parser.c:3789,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3803,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:3804,1
    - Dst: config_parsed_strlist_append
      Src: /src/dovecot/src/config/config-parser.c:3809,1
    - Dst: config_parsed_strlist_append
      Src: /src/dovecot/src/config/config-parser.c:3810,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3811,1
    - Dst: i_assert
      Src: /src/dovecot/src/config/config-parser.c:3814,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-parser.c:3817,1
    - Dst: set_str_expanded
      Src: /src/dovecot/src/config/config-parser.c:3819,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/config/config-parser.c:3821,1
    - Dst: t_str_new
      Src: /src/dovecot/src/config/config-parser.c:3822,1
    - Dst: config_export_type
      Src: /src/dovecot/src/config/config-parser.c:3823,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-parser.c:3824,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:3825,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - config
    - info_name
    - key
    - change_counter_r
    argTypes:
    - struct config_parsed*
    - char*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3826
      start: 3769
    functionDepth: 4
    functionLinenumber: 3769
    functionLinenumberEnd: 3826
    functionName: config_parsed_get_setting_full
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_panic
    - t_str_new
    - config_parsed_get_global_default_filter_parser
    - str_c
    - i_unreached
    - config_export_type
    - setting_parser_info_find_key
    - config_parsed_get_global_filter_parser
    - config_parsed_strlist_append
    - set_str_expanded
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: char
    signature: "char *\nconfig_parsed_get_setting_full(const struct config_parsed
      *config,\n\t\t\t       const char *info_name, const char *key,\n\t\t\t       unsigned
      int *change_counter_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_setting_full
      Src: /src/dovecot/src/config/config-parser.c:3832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - config
    - info_name
    - key
    argTypes:
    - struct config_parsed*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3833
      start: 3828
    functionDepth: 5
    functionLinenumber: 3828
    functionLinenumberEnd: 3833
    functionName: config_parsed_get_setting
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 2
    functionsReached:
    - config_parsed_get_setting_full
    linkageType: ''
    returnType: char
    signature: "char *\nconfig_parsed_get_setting(const struct config_parsed *config,\n\t\t\t
      \ const char *info_name, const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_parsed_get_setting_full
      Src: /src/dovecot/src/config/config-parser.c:3841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - config
    - info_name
    - key
    argTypes:
    - struct config_parsed*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3844
      start: 3835
    functionDepth: 5
    functionLinenumber: 3835
    functionLinenumberEnd: 3844
    functionName: config_parsed_get_setting_change_counter
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_parsed_get_setting_full
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int config_parsed_get_setting_change_counter(const struct
      config_parsed *config,\n\t\t\t\t\t const char *info_name, const char *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:3850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - config
    - key
    argTypes:
    - struct config_parsed*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3854
      start: 3846
    functionDepth: 0
    functionLinenumber: 3846
    functionLinenumberEnd: 3854
    functionName: config_parsed_key_lookup
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 2
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: struct setting_define
    signature: 'struct setting_define *

      config_parsed_key_lookup(const struct config_parsed *config, const char *key)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: config_filter_tree_has_settings
      Src: /src/dovecot/src/config/config-parser.c:3862,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - filter
    - parser_idx
    argTypes:
    - struct config_filter_parser*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3866
      start: 3856
    functionDepth: 1
    functionLinenumber: 3856
    functionLinenumberEnd: 3866
    functionName: config_filter_tree_has_settings
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - config_filter_tree_has_settings
    linkageType: ''
    returnType: bool
    signature: "bool config_filter_tree_has_settings(struct config_filter_parser *filter,\n\t\t\t\t\t
      \   unsigned int parser_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/config/config-parser.c:3880,1
    - Dst: config_filter_tree_has_settings
      Src: /src/dovecot/src/config/config-parser.c:3881,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - group_filters
    - parser_idx
    argTypes:
    - struct config_include_group_filters*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3885
      start: 3868
    functionDepth: 2
    functionLinenumber: 3868
    functionLinenumberEnd: 3885
    functionName: config_include_group_filters_have_settings
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - config_filter_tree_has_settings
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool config_include_group_filters_have_settings(\n\tstruct config_include_group_filters
      *group_filters,\n\tunsigned int parser_idx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/config/config-parser.c:3892,1
    - Dst: array_is_created
      Src: /src/dovecot/src/config/config-parser.c:3894,1
    - Dst: array_foreach
      Src: /src/dovecot/src/config/config-parser.c:3898,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/config/config-parser.c:3900,1
    - Dst: config_include_group_filters_have_settings
      Src: /src/dovecot/src/config/config-parser.c:3904,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:3905,1
    - Dst: array_count
      Src: /src/dovecot/src/config/config-parser.c:3907,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - config
    - filter
    - parser_idx
    - groups
    argTypes:
    - struct config_parsed*
    - struct config_filter_parser*
    - unsigned int
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3908
      start: 3887
    functionDepth: 3
    functionLinenumber: 3887
    functionLinenumberEnd: 3908
    functionName: config_parsed_get_includes
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 2
    functionsReached:
    - config_include_group_filters_have_settings
    - array_push_back
    - array_foreach
    - array_count
    - array_clear
    - array_is_created
    - hash_table_lookup
    linkageType: ''
    returnType: bool
    signature: "bool config_parsed_get_includes(const struct config_parsed *config,\n\t\t\t\tconst
      struct config_filter_parser *filter,\n\t\t\t\tunsigned int parser_idx,\n\t\t\t\tARRAY_TYPE(config_include_group)
      *groups)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config_parsed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3914
      start: 3910
    functionDepth: 0
    functionLinenumber: 3910
    functionLinenumberEnd: 3914
    functionName: config_parsed_get_paths
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      config_parsed_get_paths(const struct config_parsed *config)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/config/config-parser.c:3924,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/config/config-parser.c:3925,1
    - Dst: pool_unref
      Src: /src/dovecot/src/config/config-parser.c:3926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _config
    argTypes:
    - struct config_parsed**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3927
      start: 3916
    functionDepth: 1
    functionLinenumber: 3916
    functionLinenumberEnd: 3927
    functionName: config_parsed_free
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 1
    functionsReached:
    - pool_unref
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void config_parsed_free(struct config_parsed **_config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-parser.c:3932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct config_service*
    - struct config_service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3933
      start: 3929
    functionDepth: 0
    functionLinenumber: 3929
    functionLinenumberEnd: 3933
    functionName: config_service_cmp
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int config_service_cmp(const struct config_service *s1,\n\t\t\t      const
      struct config_service *s2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/config-parser.c:3939,1
    - Dst: stat
      Src: /src/dovecot/src/config/config-parser.c:3942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct setting_parser_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3943
      start: 3935
    functionDepth: 1
    functionLinenumber: 3935
    functionLinenumberEnd: 3943
    functionName: config_have_info_dependency
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - stat
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: bool config_have_info_dependency(const struct setting_parser_info *info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/config/config-parser.c:3951,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/config-parser.c:3953,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/config/config-parser.c:3954,1
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/config/config-parser.c:3957,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - paths
    - mod_set
    argTypes:
    - char**
    - struct module_dir_load_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3960
      start: 3945
    functionDepth: 1
    functionLinenumber: 3945
    functionLinenumberEnd: 3960
    functionName: config_parse_load_module_paths
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_until
    - i_fatal
    - strrchr
    - module_dir_load_missing
    linkageType: ''
    returnType: void
    signature: "void config_parse_load_module_paths(const char *const *paths,\n\t\t\t
      \      const struct module_dir_load_settings *mod_set)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-parser.c:3967,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/config/config-parser.c:3968,1
    - Dst: i_zero
      Src: /src/dovecot/src/config/config-parser.c:3972,1
    - Dst: getenv
      Src: /src/dovecot/src/config/config-parser.c:3974,1
    - Dst: module_dir_load
      Src: /src/dovecot/src/config/config-parser.c:3976,1
    - Dst: config_parse_load_module_paths
      Src: /src/dovecot/src/config/config-parser.c:3980,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/config/config-parser.c:3980,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/config/config-parser.c:3984,1
    - Dst: str_new
      Src: /src/dovecot/src/config/config-parser.c:3986,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:3987,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:3988,1
    - Dst: i_array_init
      Src: /src/dovecot/src/config/config-parser.c:3989,1
    - Dst: config_have_info_dependency
      Src: /src/dovecot/src/config/config-parser.c:3992,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:3993,1
    - Dst: i_array_init
      Src: /src/dovecot/src/config/config-parser.c:3996,1
    - Dst: module_get_symbol_quiet
      Src: /src/dovecot/src/config/config-parser.c:3998,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:3999,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:4002,1
    - Dst: module_get_symbol_quiet
      Src: /src/dovecot/src/config/config-parser.c:4005,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:4006,1
    - Dst: str_append
      Src: /src/dovecot/src/config/config-parser.c:4008,1
    - Dst: str_append_c
      Src: /src/dovecot/src/config/config-parser.c:4009,1
    - Dst: module_get_symbol_quiet
      Src: /src/dovecot/src/config/config-parser.c:4011,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:4012,1
    - Dst: array_append
      Src: /src/dovecot/src/config/config-parser.c:4015,1
    - Dst: module_get_symbol_quiet
      Src: /src/dovecot/src/config/config-parser.c:4018,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:4019,1
    - Dst: module_get_symbol_quiet
      Src: /src/dovecot/src/config/config-parser.c:4021,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/config/config-parser.c:4022,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:4023,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/config/config-parser.c:4027,1
    - Dst: array_front
      Src: /src/dovecot/src/config/config-parser.c:4028,1
    - Dst: array_count
      Src: /src/dovecot/src/config/config-parser.c:4031,1
    - Dst: array_push_back
      Src: /src/dovecot/src/config/config-parser.c:4034,1
    - Dst: array_sort
      Src: /src/dovecot/src/config/config-parser.c:4035,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/config/config-parser.c:4036,1
    - Dst: array_front
      Src: /src/dovecot/src/config/config-parser.c:4037,1
    - Dst: array_free
      Src: /src/dovecot/src/config/config-parser.c:4040,1
    - Dst: puts
      Src: /src/dovecot/src/config/config-parser.c:4043,1
    - Dst: str_c
      Src: /src/dovecot/src/config/config-parser.c:4043,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 1
    argNames:
    - dump_config_import
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4044
      start: 3962
    functionDepth: 2
    functionLinenumber: 3962
    functionLinenumberEnd: 4044
    functionName: config_parse_load_modules
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - str_c
    - t_strdup_printf
    - module_dir_load
    - array_count
    - array_front
    - config_have_info_dependency
    - array_append_zero
    - array_sort
    - str_append_c
    - module_get_symbol_quiet
    - puts
    - str_new
    - array_free
    - i_zero
    - config_parse_load_module_paths
    - array_push_back
    - getenv
    - t_strsplit
    - ARRAY_TYPE
    - str_append
    - module_dir_init
    - array_append
    linkageType: ''
    returnType: void
    signature: void config_parse_load_modules(bool dump_config_import)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/config/config-parser.c:4048,1
    - Dst: array_free
      Src: /src/dovecot/src/config/config-parser.c:4049,1
    - Dst: array_is_created
      Src: /src/dovecot/src/config/config-parser.c:4050,1
    - Dst: array_free
      Src: /src/dovecot/src/config/config-parser.c:4051,1
    - Dst: str_free
      Src: /src/dovecot/src/config/config-parser.c:4052,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4053
      start: 4046
    functionDepth: 1
    functionLinenumber: 4046
    functionLinenumberEnd: 4053
    functionName: config_parser_deinit
    functionSourceFile: /src/dovecot/src/config/config-parser.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - array_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void config_parser_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/config/config-connection.c:47,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/config/config-connection.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 52
    functionName: config_connection_next_line
    functionSourceFile: /src/dovecot/src/config/config-connection.c
    functionUses: 0
    functionsReached:
    - t_strsplit_tabescaped
    - i_stream_next_line
    linkageType: ''
    returnType: char
    signature: 'char *const *

      config_connection_next_line(struct config_connection *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_config_path
      Src: /src/dovecot/src/config/config-connection.c:59,1
    - Dst: config_parse_file
      Src: /src/dovecot/src/config/config-connection.c:60,1
    - Dst: config_parsed_free
      Src: /src/dovecot/src/config/config-connection.c:65,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/config/config-connection.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - error_r
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 54
    functionDepth: 7
    functionLinenumber: 54
    functionLinenumberEnd: 70
    functionName: config_global_reload
    functionSourceFile: /src/dovecot/src/config/config-connection.c
    functionUses: 0
    functionsReached:
    - config_parsed_free
    - i_close_fd
    - master_service_get_config_path
    - config_parse_file
    linkageType: ''
    returnType: int
    signature: int config_global_reload(const char **error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-connection.c:76,1
    - Dst: config_global_reload
      Src: /src/dovecot/src/config/config-connection.c:78,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-connection.c:79,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/config/config-connection.c:80,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-connection.c:84,1
    - Dst: config_dump_full
      Src: /src/dovecot/src/config/config-connection.c:91,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-connection.c:95,1
    - Dst: o_stream_unix_write_fd
      Src: /src/dovecot/src/config/config-connection.c:100,1
    - Dst: i_unreached
      Src: /src/dovecot/src/config/config-connection.c:101,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/config-connection.c:103,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct config_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 72
    functionDepth: 9
    functionLinenumber: 72
    functionLinenumberEnd: 105
    functionName: config_connection_request
    functionSourceFile: /src/dovecot/src/config/config-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - o_stream_unix_write_fd
    - i_unreached
    - config_dump_full
    - config_global_reload
    - o_stream_nsend_str
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int config_connection_request(struct config_connection *conn,\n\t\t\t\t
      \    const char *const *args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/config/config-connection.c:111,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-connection.c:113,1
    - Dst: config_connection_destroy
      Src: /src/dovecot/src/config/config-connection.c:114,1
    - Dst: config_connection_destroy
      Src: /src/dovecot/src/config/config-connection.c:117,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/config/config-connection.c:122,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/config/config-connection.c:126,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-connection.c:128,1
    - Dst: config_connection_destroy
      Src: /src/dovecot/src/config/config-connection.c:130,1
    - Dst: config_connection_next_line
      Src: /src/dovecot/src/config/config-connection.c:136,1
    - Dst: strcmp
      Src: /src/dovecot/src/config/config-connection.c:139,1
    - Dst: config_connection_request
      Src: /src/dovecot/src/config/config-connection.c:140,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct config_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 107
    functionDepth: 10
    functionLinenumber: 107
    functionLinenumberEnd: 144
    functionName: config_connection_input
    functionSourceFile: /src/dovecot/src/config/config-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_error
    - config_connection_request
    - i_stream_next_line
    - config_connection_destroy
    - version_string_verify
    - i_stream_read
    - config_connection_next_line
    linkageType: ''
    returnType: void
    signature: void config_connection_input(struct config_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/config/config-connection.c:150,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/config/config-connection.c:152,1
    - Dst: o_stream_create_unix
      Src: /src/dovecot/src/config/config-connection.c:153,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/config/config-connection.c:154,1
    - Dst: io_add
      Src: /src/dovecot/src/config/config-connection.c:155,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/config/config-connection.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 158
    functionName: config_connection_create
    functionSourceFile: /src/dovecot/src/config/config-connection.c
    functionUses: 1
    functionsReached:
    - i_stream_create_fd
    - io_add
    - o_stream_create_unix
    - o_stream_set_no_error_handling
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct config_connection
    signature: struct config_connection *config_connection_create(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/config/config-connection.c:162,1
    - Dst: io_remove
      Src: /src/dovecot/src/config/config-connection.c:164,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/config/config-connection.c:165,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/config/config-connection.c:166,1
    - Dst: close
      Src: /src/dovecot/src/config/config-connection.c:167,1
    - Dst: i_error
      Src: /src/dovecot/src/config/config-connection.c:168,1
    - Dst: i_free
      Src: /src/dovecot/src/config/config-connection.c:169,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/config/config-connection.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct config_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 172
    functionName: config_connection_destroy
    functionSourceFile: /src/dovecot/src/config/config-connection.c
    functionUses: 1
    functionsReached:
    - i_error
    - io_remove
    - i_stream_destroy
    - i_free
    - DLLIST_REMOVE
    - o_stream_destroy
    - master_service_client_connection_destroyed
    - close
    linkageType: ''
    returnType: void
    signature: void config_connection_destroy(struct config_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_global_reload
      Src: /src/dovecot/src/config/config-connection.c:177,1
    - Dst: i_fatal
      Src: /src/dovecot/src/config/config-connection.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 174
    functionDepth: 8
    functionLinenumber: 174
    functionLinenumberEnd: 179
    functionName: config_connections_init
    functionSourceFile: /src/dovecot/src/config/config-connection.c
    functionUses: 1
    functionsReached:
    - config_global_reload
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void config_connections_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_connection_destroy
      Src: /src/dovecot/src/config/config-connection.c:184,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/config/config-connection.c:185,1
    - Dst: config_parsed_free
      Src: /src/dovecot/src/config/config-connection.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 181
    functionDepth: 4
    functionLinenumber: 181
    functionLinenumberEnd: 187
    functionName: config_connections_destroy_all
    functionSourceFile: /src/dovecot/src/config/config-connection.c
    functionUses: 1
    functionsReached:
    - config_parsed_free
    - i_close_fd
    - config_connection_destroy
    linkageType: ''
    returnType: void
    signature: void config_connections_destroy_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/config/test-config-parser.c:86,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/config/test-config-parser.c:87,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/config/test-config-parser.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/config/test-config-parser.c:89,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/config/test-config-parser.c:89,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/config/test-config-parser.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - contents
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 91
    functionName: write_config_file
    functionSourceFile: /src/dovecot/src/config/test-config-parser.c
    functionUses: 0
    functionsReached:
    - o_stream_create_file
    - o_stream_unref
    - o_stream_finish
    - test_dir_prepend
    - test_assert
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void write_config_file(const char *contents)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/config/test-config-parser.c:97,1
    - Dst: test_begin
      Src: /src/dovecot/src/config/test-config-parser.c:99,1
    - Dst: write_config_file
      Src: /src/dovecot/src/config/test-config-parser.c:101,1
    - Dst: putenv
      Src: /src/dovecot/src/config/test-config-parser.c:123,1
    - Dst: putenv
      Src: /src/dovecot/src/config/test-config-parser.c:124,1
    - Dst: putenv
      Src: /src/dovecot/src/config/test-config-parser.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/config/test-config-parser.c:127,1
    - Dst: config_parse_file
      Src: /src/dovecot/src/config/test-config-parser.c:127,1
    - Dst: i_error
      Src: /src/dovecot/src/config/test-config-parser.c:132,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/config/test-config-parser.c:135,1
    - Dst: config_parsed_get_global_filter_parser
      Src: /src/dovecot/src/config/test-config-parser.c:137,1
    - Dst: settings_parser_init
      Src: /src/dovecot/src/config/test-config-parser.c:140,1
    - Dst: config_fill_set_parser
      Src: /src/dovecot/src/config/test-config-parser.c:141,1
    - Dst: settings_parser_get_set
      Src: /src/dovecot/src/config/test-config-parser.c:142,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:143,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:144,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:145,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:146,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:147,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:148,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:149,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:150,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:151,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:152,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:153,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:154,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:155,1
    - Dst: settings_parser_unref
      Src: /src/dovecot/src/config/test-config-parser.c:156,1
    - Dst: config_parsed_free
      Src: /src/dovecot/src/config/test-config-parser.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/config/test-config-parser.c:160,1
    - Dst: config_parse_file
      Src: /src/dovecot/src/config/test-config-parser.c:160,1
    - Dst: p_clear
      Src: /src/dovecot/src/config/test-config-parser.c:164,1
    - Dst: config_parsed_get_global_filter_parser
      Src: /src/dovecot/src/config/test-config-parser.c:165,1
    - Dst: settings_parser_init
      Src: /src/dovecot/src/config/test-config-parser.c:167,1
    - Dst: config_fill_set_parser
      Src: /src/dovecot/src/config/test-config-parser.c:168,1
    - Dst: settings_parser_get_set
      Src: /src/dovecot/src/config/test-config-parser.c:169,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:171,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:172,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:173,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:174,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:175,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:176,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:177,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:178,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:179,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:180,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:181,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:182,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/config/test-config-parser.c:183,1
    - Dst: settings_parser_unref
      Src: /src/dovecot/src/config/test-config-parser.c:185,1
    - Dst: config_parsed_free
      Src: /src/dovecot/src/config/test-config-parser.c:186,1
    - Dst: config_parser_deinit
      Src: /src/dovecot/src/config/test-config-parser.c:187,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/config/test-config-parser.c:188,1
    - Dst: pool_unref
      Src: /src/dovecot/src/config/test-config-parser.c:189,1
    - Dst: test_end
      Src: /src/dovecot/src/config/test-config-parser.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 93
    functionDepth: 7
    functionLinenumber: 93
    functionLinenumberEnd: 191
    functionName: test_config_parser
    functionSourceFile: /src/dovecot/src/config/test-config-parser.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - test_assert
    - write_config_file
    - test_dir_prepend
    - test_end
    - settings_parser_init
    - config_fill_set_parser
    - config_parser_deinit
    - p_clear
    - settings_parser_get_set
    - test_assert_strcmp
    - config_parsed_get_global_filter_parser
    - i_unlink_if_exists
    - config_parsed_free
    - settings_parser_unref
    - pool_alloconly_create
    - i_error
    - config_parse_file
    - putenv
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_config_parser(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/config/test-config-parser.c:200,1
    - Dst: test_run
      Src: /src/dovecot/src/config/test-config-parser.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 193
    functionDepth: 7
    functionLinenumber: 193
    functionLinenumberEnd: 202
    functionName: main
    functionSourceFile: /src/dovecot/src/config/test-config-parser.c
    functionUses: 0
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-language/lang-filter.c:17,1
    - Dst: lang_filter_register
      Src: /src/dovecot/src/lib-language/lang-filter.c:19,1
    - Dst: lang_filter_register
      Src: /src/dovecot/src/lib-language/lang-filter.c:20,1
    - Dst: lang_filter_register
      Src: /src/dovecot/src/lib-language/lang-filter.c:21,1
    - Dst: lang_filter_register
      Src: /src/dovecot/src/lib-language/lang-filter.c:22,1
    - Dst: lang_filter_register
      Src: /src/dovecot/src/lib-language/lang-filter.c:23,1
    - Dst: lang_filter_register
      Src: /src/dovecot/src/lib-language/lang-filter.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 25
    functionName: lang_filters_init
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - lang_filter_register
    linkageType: ''
    returnType: void
    signature: void lang_filters_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lang_icu_deinit
      Src: /src/dovecot/src/lib-language/lang-filter.c:30,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-language/lang-filter.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: lang_filters_deinit
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter.c
    functionUses: 0
    functionsReached:
    - array_free
    - lang_icu_deinit
    linkageType: ''
    returnType: void
    signature: void lang_filters_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-filter.c:37,1
    - Dst: lang_filter_find
      Src: /src/dovecot/src/lib-language/lang-filter.c:37,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-language/lang-filter.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - filter_class
    argTypes:
    - struct lang_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: lang_filter_register
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter.c
    functionUses: 1
    functionsReached:
    - i_assert
    - lang_filter_find
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void lang_filter_register(const struct lang_filter *filter_class)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-language/lang-filter.c:46,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/lang-filter.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 51
    functionName: lang_filter_find
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct lang_filter
    signature: struct lang_filter *lang_filter_find(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct lang_filter*::v::create
      Src: /src/dovecot/src/lib-language/lang-filter.c:62,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-language/lang-filter.c:67,1
    - Dst: lang_filter_ref
      Src: /src/dovecot/src/lib-language/lang-filter.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - filter_class
    - parent
    - set
    - event
    - filter_r
    - error_r
    argTypes:
    - struct lang_filter*
    - struct lang_filter*
    - struct lang_settings*
    - struct event*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 77
    functionName: lang_filter_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter_ref
    - i_new
    - struct lang_filter*::v::create
    linkageType: ''
    returnType: int
    signature: "int lang_filter_create(const struct lang_filter *filter_class,\n                       struct
      lang_filter *parent,\n                       const struct lang_settings *set,\n\t\t
      \      struct event *event,\n                       struct lang_filter **filter_r,\n
      \                      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-filter.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fp
    argTypes:
    - struct lang_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: lang_filter_ref
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void lang_filter_ref(struct lang_filter *fp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-filter.c:89,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/lang-filter.c:96,1
    - Dst: struct lang_filter*::v::destroy
      Src: /src/dovecot/src/lib-language/lang-filter.c:98,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-language/lang-filter.c:101,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-language/lang-filter.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - _fpp
    argTypes:
    - struct lang_filter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 104
    functionName: lang_filter_unref
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter.c
    functionUses: 1
    functionsReached:
    - i_free
    - i_assert
    - lang_filter_unref
    - str_free
    - struct lang_filter*::v::destroy
    linkageType: ''
    returnType: void
    signature: void lang_filter_unref(struct lang_filter **_fpp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-filter.c:111,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/lang-filter.c:115,1
    - Dst: struct lang_filter*::v::filter
      Src: /src/dovecot/src/lib-language/lang-filter.c:119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-filter.c:124,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-filter.c:125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - filter
    - token
    - error_r
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 128
    functionName: lang_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter.c
    functionUses: 1
    functionsReached:
    - struct lang_filter*::v::filter
    - i_assert
    - lang_filter
    linkageType: ''
    returnType: int
    signature: "int lang_filter(struct lang_filter *filter, const char **token,\n\t\tconst
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: languages_init
      Src: /src/dovecot/src/lib-language/lang-library.c:11,1
    - Dst: lang_tokenizers_init
      Src: /src/dovecot/src/lib-language/lang-library.c:12,1
    - Dst: lang_filters_init
      Src: /src/dovecot/src/lib-language/lang-library.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 9
    functionDepth: 2
    functionLinenumber: 9
    functionLinenumberEnd: 14
    functionName: lang_library_init
    functionSourceFile: /src/dovecot/src/lib-language/lang-library.c
    functionUses: 0
    functionsReached:
    - lang_filters_init
    - languages_init
    - lang_tokenizers_init
    linkageType: ''
    returnType: void
    signature: void lang_library_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: languages_deinit
      Src: /src/dovecot/src/lib-language/lang-library.c:18,1
    - Dst: lang_tokenizers_deinit
      Src: /src/dovecot/src/lib-language/lang-library.c:19,1
    - Dst: lang_filters_deinit
      Src: /src/dovecot/src/lib-language/lang-library.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: lang_library_deinit
    functionSourceFile: /src/dovecot/src/lib-language/lang-library.c
    functionUses: 0
    functionsReached:
    - lang_filters_deinit
    - lang_tokenizers_deinit
    - languages_deinit
    linkageType: ''
    returnType: void
    signature: void lang_library_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sb_stemmer_delete
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:25,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct lang_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 27
    functionName: lang_filter_stemmer_snowball_destroy
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
    functionUses: 0
    functionsReached:
    - sb_stemmer_delete
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void lang_filter_stemmer_snowball_destroy(struct lang_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:38,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:40,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:43,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - set
    - ATTR_UNUSED
    - filter_r
    - ATTR_UNUSED
    argTypes:
    - struct lang_settings*
    - struct event*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 47
    functionName: lang_filter_stemmer_snowball_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - p_malloc
    linkageType: ''
    returnType: int
    signature: "int lang_filter_stemmer_snowball_create(const struct lang_settings
      *set,\n\t\t\t\t    struct event *event ATTR_UNUSED,\n                                    struct
      lang_filter **filter_r,\n                                    const char **error_r
      ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sb_stemmer_new
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:53,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:55,1
    - Dst: lang_filter_stemmer_snowball_destroy
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - sp
    - error_r
    argTypes:
    - struct lang_filter_stemmer_snowball*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 62
    functionName: lang_filter_stemmer_snowball_create_stemmer
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
    functionUses: 0
    functionsReached:
    - sb_stemmer_new
    - lang_filter_stemmer_snowball_destroy
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int lang_filter_stemmer_snowball_create_stemmer(struct lang_filter_stemmer_snowball
      *sp,\n\t\t\t\t\t    const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lang_filter_stemmer_snowball_create_stemmer
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:73,1
    - Dst: sb_stemmer_stem
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:77,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:77,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:81,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:83,1
    - Dst: sb_stemmer_length
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:85,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c:87,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - filter
    - token
    - error_r
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 99
    functionName: lang_filter_stemmer_snowball_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
    functionUses: 0
    functionsReached:
    - sb_stemmer_stem
    - i_fatal_status
    - strlen
    - t_strndup
    - lang_filter_stemmer_snowball_create_stemmer
    - sb_stemmer_length
    linkageType: ''
    returnType: int
    signature: "int lang_filter_stemmer_snowball_filter(struct lang_filter *filter,\n
      \                                   const char **token, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct lang_settings*
    - struct event*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 111
    functionName: lang_filter_stemmer_snowball_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lang_filter_stemmer_snowball_create(const struct lang_settings
      *set ATTR_UNUSED,\n\t\t\t\t    struct event *event ATTR_UNUSED,\n                                    struct
      lang_filter **filter_r ATTR_UNUSED,\n                                    const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct lang_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: lang_filter_stemmer_snowball_destroy
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lang_filter_stemmer_snowball_destroy(struct lang_filter *stemmer
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: lang_filter_stemmer_snowball_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lang_filter_stemmer_snowball_filter(struct lang_filter *filter
      ATTR_UNUSED,\n\t\t\t\t    const char **token ATTR_UNUSED,\n\t\t\t\t    const
      char **error_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-language/lang-icu.c:58,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/lang-icu.c:59,1
    - Dst: u_strToUTF8WithSub
      Src: /src/dovecot/src/lib-language/lang-icu.c:60,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/lang-icu.c:60,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-language/lang-icu.c:65,1
    - Dst: u_strToUTF8WithSub
      Src: /src/dovecot/src/lib-language/lang-icu.c:67,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/lang-icu.c:67,1
    - Dst: U_FAILURE
      Src: /src/dovecot/src/lib-language/lang-icu.c:72,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-language/lang-icu.c:73,1
    - Dst: u_errorName
      Src: /src/dovecot/src/lib-language/lang-icu.c:74,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-language/lang-icu.c:76,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-icu.c:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - dest_utf8
    - src_utf16
    - src_len
    argTypes:
    - string_t*
    - UChar*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 78
    functionName: lang_icu_utf16_to_utf8
    functionSourceFile: /src/dovecot/src/lib-language/lang-icu.c
    functionUses: 0
    functionsReached:
    - i_panic
    - buffer_get_space_unsafe
    - u_strToUTF8WithSub
    - buffer_set_used_size
    - buffer_get_writable_size
    - u_errorName
    - i_assert
    - U_FAILURE
    linkageType: ''
    returnType: void
    signature: "void lang_icu_utf16_to_utf8(string_t *dest_utf8, const UChar *src_utf16,\n\t\t\t
      \   unsigned int src_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ucasemap_close
      Src: /src/dovecot/src/lib-language/lang-icu.c:126,1
    - Dst: u_cleanup
      Src: /src/dovecot/src/lib-language/lang-icu.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 130
    functionName: lang_icu_deinit
    functionSourceFile: /src/dovecot/src/lib-language/lang-icu.c
    functionUses: 1
    functionsReached:
    - ucasemap_close
    - u_cleanup
    linkageType: ''
    returnType: void
    signature: void lang_icu_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-language/lang-icu.c:138,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-language/lang-icu.c:139,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-language/lang-icu.c:141,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/lang-icu.c:141,1
    - Dst: lang_icu_utf8_to_utf16
      Src: /src/dovecot/src/lib-language/lang-icu.c:142,1
    - Dst: utrans_openU
      Src: /src/dovecot/src/lib-language/lang-icu.c:143,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-language/lang-icu.c:143,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/lang-icu.c:144,1
    - Dst: U_FAILURE
      Src: /src/dovecot/src/lib-language/lang-icu.c:146,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-language/lang-icu.c:147,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-language/lang-icu.c:149,1
    - Dst: u_errorName
      Src: /src/dovecot/src/lib-language/lang-icu.c:150,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-language/lang-icu.c:153,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-language/lang-icu.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - id
    - transliterator_r
    - error_r
    argTypes:
    - char*
    - UTransliterator**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 160
    functionName: lang_icu_transliterator_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-icu.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - str_printfa
    - strlen
    - utrans_openU
    - array_count
    - t_array_init
    - lang_icu_utf8_to_utf16
    - ARRAY_TYPE
    - array_front
    - u_errorName
    - U_FAILURE
    linkageType: ''
    returnType: int
    signature: "int lang_icu_transliterator_create(const char *id,\n                                   UTransliterator
      **transliterator_r,\n                                   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:14,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:16,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:18,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:18,1
    - Dst: lang_icu_utf8_to_utf16
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:20,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:20,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:21,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:21,1
    - Dst: lang_icu_utf8_to_utf16
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:24,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:25,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:25,1
    - Dst: lang_icu_utf8_to_utf16
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:28,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:28,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 12
    functionDepth: 3
    functionLinenumber: 12
    functionLinenumberEnd: 31
    functionName: test_lang_icu_utf8_to_utf16_ascii_resize
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-icu.c
    functionUses: 0
    functionsReached:
    - test_end
    - array_count
    - buffer_get_writable_size
    - t_array_init
    - ARRAY_TYPE
    - test_assert
    - lang_icu_utf8_to_utf16
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_icu_utf8_to_utf16_ascii_resize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:35,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:38,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:41,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:41,1
    - Dst: lang_icu_utf8_to_utf16
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:43,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:43,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 47
    functionName: test_lang_icu_utf8_to_utf16_32bit_resize
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-icu.c
    functionUses: 0
    functionsReached:
    - test_end
    - array_count
    - buffer_get_writable_size
    - t_array_init
    - ARRAY_TYPE
    - test_assert
    - lang_icu_utf8_to_utf16
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_icu_utf8_to_utf16_32bit_resize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:51,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:55,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:56,1
    - Dst: lang_icu_utf16_to_utf8
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:58,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: test_lang_icu_utf16_to_utf8
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-icu.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - test_end
    - lang_icu_utf16_to_utf8
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_icu_utf16_to_utf8(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:69,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:72,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:72,1
    - Dst: lang_icu_utf16_to_utf8
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:75,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:75,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:75,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 79
    functionName: test_lang_icu_utf16_to_utf8_resize
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-icu.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_end
    - buffer_get_writable_size
    - lang_icu_utf16_to_utf8
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_icu_utf16_to_utf8_resize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:84,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:88,1
    - Dst: lang_icu_utf8_to_utf16
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:89,1
    - Dst: utrans_openU
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:90,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:90,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:93,1
    - Dst: U_FAILURE
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - id
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 95
    functionName: get_translit
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-icu.c
    functionUses: 0
    functionsReached:
    - utrans_openU
    - array_count
    - t_array_init
    - lang_icu_utf8_to_utf16
    - ARRAY_TYPE
    - array_front
    - test_assert
    - U_FAILURE
    linkageType: ''
    returnType: UTransliterator
    signature: UTransliterator *get_translit(const char *id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:101,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:106,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:107,1
    - Dst: get_translit
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:108,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:109,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:111,1
    - Dst: lang_icu_translate
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:113,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:113,1
    - Dst: utrans_close
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:115,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 117
    functionName: test_lang_icu_translate
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-icu.c
    functionUses: 0
    functionsReached:
    - lang_icu_translate
    - test_end
    - utrans_close
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - test_assert
    - get_translit
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_icu_translate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:123,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:128,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:130,1
    - Dst: get_translit
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:131,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:133,1
    - Dst: lang_icu_utf8_to_utf16
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:134,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:136,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:137,1
    - Dst: lang_icu_translate
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:137,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:137,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:138,1
    - Dst: utrans_close
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:142,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 144
    functionName: test_lang_icu_translate_resize
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-icu.c
    functionUses: 0
    functionsReached:
    - lang_icu_translate
    - array_front
    - test_end
    - utrans_close
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - lang_icu_utf8_to_utf16
    - test_assert
    - buffer_get_writable_size
    - get_translit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_icu_translate_resize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:157,1
    - Dst: lang_icu_deinit
      Src: /src/dovecot/src/lib-language/test-lang-icu.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 146
    functionDepth: 7
    functionLinenumber: 146
    functionLinenumberEnd: 160
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-icu.c
    functionUses: 0
    functionsReached:
    - test_run
    - lang_icu_deinit
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: utrans_close
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:30,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct lang_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 32
    functionName: lang_filter_normalizer_icu_destroy
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c
    functionUses: 0
    functionsReached:
    - utrans_close
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void lang_filter_normalizer_icu_destroy(struct lang_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:43,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:45,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:49,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:50,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - set
    - ATTR_UNUSED
    - filter_r
    - ATTR_UNUSED
    argTypes:
    - struct lang_settings*
    - struct event*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 54
    functionName: lang_filter_normalizer_icu_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - buffer_create_dynamic
    - p_new
    - p_array_init
    linkageType: ''
    returnType: int
    signature: "int lang_filter_normalizer_icu_create(const struct lang_settings *set,\n\t\t\t\t
      \ struct event *event ATTR_UNUSED,\n\t\t\t\t  struct lang_filter **filter_r,\n\t\t\t\t
      \ const char **error_r ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lang_icu_transliterator_create
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:64,1
    - Dst: lang_icu_utf8_to_utf16
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:69,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:70,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:71,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:72,1
    - Dst: lang_icu_translate
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:73,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:73,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:74,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:78,1
    - Dst: lang_icu_utf16_to_utf8
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:81,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:81,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:82,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - filter
    - token
    - error_r
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 85
    functionName: lang_filter_normalizer_icu_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c
    functionUses: 0
    functionsReached:
    - lang_icu_translate
    - str_c
    - lang_icu_transliterator_create
    - array_count
    - array_pop_back
    - array_clear
    - lang_icu_utf8_to_utf16
    - array_front
    - lang_icu_utf16_to_utf8
    - array_append_zero
    linkageType: ''
    returnType: int
    signature: "int lang_filter_normalizer_icu_filter(struct lang_filter *filter,
      const char **token,\n\t\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct lang_settings*
    - struct event*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: lang_filter_normalizer_icu_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lang_filter_normalizer_icu_create(const struct lang_settings *set
      ATTR_UNUSED,\n\t\t\t\t  struct event *event ATTR_UNUSED,\n\t\t\t\t  struct lang_filter
      **filter_r ATTR_UNUSED,\n\t\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 105
    functionName: lang_filter_normalizer_icu_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lang_filter_normalizer_icu_filter(struct lang_filter *filter ATTR_UNUSED,\n\t\t\t\t
      \ const char **token ATTR_UNUSED,\n\t\t\t\t  const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - normalizer ATTR_UNUSED
    argTypes:
    - struct lang_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: lang_filter_normalizer_icu_destroy
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lang_filter_normalizer_icu_destroy(struct lang_filter *normalizer
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: init_lang_settings
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_lang_settings(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lang
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: make_settings
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - t_new
    linkageType: ''
    returnType: struct lang_settings
    signature: "struct lang_settings *make_settings(const char *lang,\n\t\t\t\t\t
      \  const struct lang_settings *template)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:45,1
    - Dst: lang_filter_find
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:46,1
    - Dst: lang_filter_find
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:47,1
    - Dst: lang_filter_find
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:48,1
    - Dst: lang_filter_find
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:49,1
    - Dst: lang_filter_find
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:49,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 51
    functionName: test_lang_filter_find
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter_find
    - test_end
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_find(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:60,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:60,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:61,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: test_lang_filter_contractions_fail
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_contractions_fail(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:98,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:98,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:98,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:100,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:103,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:105,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:105,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:107,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:109,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 111
    functionName: test_lang_filter_contractions_fr
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_filter
    - make_settings
    - test_assert_idx
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_contractions_fr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:129,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:129,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:129,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:131,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:133,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:133,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:134,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:136,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 113
    functionDepth: 3
    functionLinenumber: 113
    functionLinenumberEnd: 138
    functionName: test_lang_filter_lowercase
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_filter
    - make_settings
    - test_assert_idx
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_lowercase(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:155,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:156,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:156,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:156,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:158,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:160,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:161,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:163,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 165
    functionName: test_lang_filter_lowercase_utf8
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_filter
    - make_settings
    - test_assert_idx
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_lowercase_utf8(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:181,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:182,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:182,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:182,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:188,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:190,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:191,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:194,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:200,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:201,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 167
    functionDepth: 3
    functionLinenumber: 167
    functionLinenumberEnd: 203
    functionName: test_lang_filter_stopwords_eng
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_eng(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:222,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:222,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:222,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:230,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:233,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:234,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:234,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:240,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:241,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:243,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:243,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:243,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:248,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:250,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:254,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:254,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:261,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:262,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 205
    functionDepth: 3
    functionLinenumber: 205
    functionLinenumberEnd: 263
    functionName: test_lang_filter_stopwords_fin
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_fin(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:282,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:282,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:282,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:288,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:293,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:294,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:294,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:300,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:301,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 303
    functionName: test_lang_filter_stopwords_fra
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_fra(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:329,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:330,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:330,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:330,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:336,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:338,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:339,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:341,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:342,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:342,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:349,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 305
    functionDepth: 3
    functionLinenumber: 305
    functionLinenumberEnd: 351
    functionName: test_lang_filter_stopwords_no
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_no(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:358,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:359,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:359,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:359,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:360,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:361,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:361,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:362,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 353
    functionDepth: 3
    functionLinenumber: 353
    functionLinenumberEnd: 365
    functionName: test_lang_filter_stopwords_fail_lazy_init
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_fail_lazy_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:372,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:373,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:373,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:373,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:374,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:374,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:375,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:375,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:376,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:377,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 380
    functionName: test_lang_filter_stopwords_malformed
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_malformed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:403,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:404,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:404,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:404,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:408,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:409,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:410,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:410,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:413,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:414,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 416
    functionName: test_lang_filter_stemmer_snowball_stem_english
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - null_strcmp
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stemmer_snowball_stem_english(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:433,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:434,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:434,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:434,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:438,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:438,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:440,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:440,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:443,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:444,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 446
    functionName: test_lang_filter_stemmer_snowball_stem_french
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - null_strcmp
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stemmer_snowball_stem_french(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:470,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:472,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:472,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:473,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:473,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:473,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:478,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:481,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:483,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:484,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:484,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:488,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:489,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:490,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:491,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:492,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 448
    functionDepth: 3
    functionLinenumber: 448
    functionLinenumberEnd: 493
    functionName: test_lang_filter_stopwords_stemmer_eng
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - null_strcmp
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_stemmer_eng(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:519,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:521,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:521,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:521,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:522,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:524,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:524,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:525,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:525,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:527,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:528,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 497
    functionDepth: 3
    functionLinenumber: 497
    functionLinenumberEnd: 530
    functionName: test_lang_filter_normalizer_swedish_short
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - test_assert_idx
    - lang_filter_create
    - test_end
    - null_strcmp
    - test_assert
    - lang_filter_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_normalizer_swedish_short(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:552,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:554,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:554,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:554,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:555,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:557,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:557,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:558,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:558,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:560,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:561,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 532
    functionDepth: 3
    functionLinenumber: 532
    functionLinenumberEnd: 563
    functionName: test_lang_filter_normalizer_swedish_short_default_id
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - test_assert_idx
    - lang_filter_create
    - test_end
    - null_strcmp
    - test_assert
    - lang_filter_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_normalizer_swedish_short_default_id(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:589,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:591,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:592,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:592,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:592,1
    - Dst: fopen
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:593,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:594,1
    - Dst: sha512_init
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:595,1
    - Dst: fgets
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:596,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:598,1
    - Dst: sha512_loop
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:601,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:601,1
    - Dst: fclose
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:603,1
    - Dst: sha512_result
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:604,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:605,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:605,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:607,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:608,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 567
    functionDepth: 3
    functionLinenumber: 567
    functionLinenumberEnd: 610
    functionName: test_lang_filter_normalizer_french
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - lang_filter_create
    - strlen
    - fopen
    - test_end
    - lang_filter_unref
    - fclose
    - sha512_loop
    - test_assert
    - memcmp
    - fgets
    - sha512_result
    - sha512_init
    - t_strconcat
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_normalizer_french(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:627,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:628,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:628,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:628,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:629,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:631,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:631,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:633,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 612
    functionDepth: 3
    functionLinenumber: 612
    functionLinenumberEnd: 635
    functionName: test_lang_filter_normalizer_empty
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - test_assert_idx
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_normalizer_empty(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:646,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:648,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:648,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:648,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:649,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:651,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:652,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:653,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:654,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:656,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:656,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 637
    functionDepth: 2
    functionLinenumber: 637
    functionLinenumberEnd: 658
    functionName: test_lang_filter_normalizer_baddata
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - uni_is_valid_ucs4
    - make_settings
    - test_assert_idx
    - lang_filter
    - lang_filter_create
    - uni_ucs4_to_utf8_c
    - str_truncate
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_normalizer_baddata(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:676,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:677,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:677,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:677,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:678,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:679,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:679,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:680,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:681,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 669
    functionDepth: 3
    functionLinenumber: 669
    functionLinenumberEnd: 682
    functionName: test_lang_filter_normalizer_invalid_id
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_normalizer_invalid_id(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:712,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:714,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:714,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:714,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:715,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:715,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:715,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:716,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:716,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:716,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:721,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:723,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:724,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:726,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:727,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:727,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:731,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:732,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:733,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:734,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:735,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:736,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:737,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 685
    functionDepth: 3
    functionLinenumber: 685
    functionLinenumberEnd: 738
    functionName: test_lang_filter_normalizer_stopwords_stemmer_eng
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_normalizer_stopwords_stemmer_eng(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:774,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:776,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:776,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:776,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:777,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:777,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:777,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:778,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:778,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:778,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:783,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:785,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:786,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:788,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:789,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:789,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:793,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:794,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:795,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:796,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:797,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:798,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 740
    functionDepth: 3
    functionLinenumber: 740
    functionLinenumberEnd: 800
    functionName: test_lang_filter_stopwords_normalizer_stemmer_no
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - null_strcmp
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_normalizer_stemmer_no(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:824,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:827,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:827,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:827,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:828,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:828,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:828,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:829,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:829,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:829,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:834,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:836,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:837,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:839,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:840,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:840,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:844,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:845,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:846,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:847,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:848,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:849,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:850,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 802
    functionDepth: 3
    functionLinenumber: 802
    functionLinenumberEnd: 851
    functionName: test_lang_filter_stopwords_normalizer_stemmer_sv
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - lang_filter_create
    - test_end
    - null_strcmp
    - test_assert
    - lang_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_stopwords_normalizer_stemmer_sv(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:896,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:898,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:898,1
    - Dst: make_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:898,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:899,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:901,1
    - Dst: lang_filter
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:901,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:902,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:902,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:904,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:905,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:906,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 855
    functionDepth: 3
    functionLinenumber: 855
    functionLinenumberEnd: 907
    functionName: test_lang_filter_english_possessive
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - make_settings
    - test_assert_idx
    - lang_filter_create
    - test_end
    - null_strcmp
    - test_assert
    - lang_filter_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_filter_english_possessive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_lang_settings
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:914,1
    - Dst: lang_filters_init
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:952,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:953,1
    - Dst: lang_filters_deinit
      Src: /src/dovecot/src/lib-language/test-lang-filter.c:954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 912
    functionDepth: 7
    functionLinenumber: 912
    functionLinenumberEnd: 956
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-filter.c
    functionUses: 0
    functionsReached:
    - lang_filters_deinit
    - lang_filters_init
    - init_lang_settings
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-language/lang-filter-lowercase.c:17,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-language/lang-filter-lowercase.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - filter_r
    - ATTR_UNUSED
    argTypes:
    - struct lang_settings*
    - struct event*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 23
    functionName: lang_filter_lowercase_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-lowercase.c
    functionUses: 0
    functionsReached:
    - str_new
    - i_new
    linkageType: ''
    returnType: int
    signature: "int lang_filter_lowercase_create(const struct lang_settings *set ATTR_UNUSED,\n\t\t\t
      \    struct event *event ATTR_UNUSED,\n\t\t\t     struct lang_filter **filter_r,\n\t\t\t
      \    const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_to_lowercase
      Src: /src/dovecot/src/lib-language/lang-filter-lowercase.c:30,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/lang-filter-lowercase.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - token
    - ATTR_UNUSED
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: lang_filter_lowercase_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-lowercase.c
    functionUses: 0
    functionsReached:
    - uni_utf8_to_lowercase
    - strlen
    linkageType: ''
    returnType: int
    signature: "int lang_filter_lowercase_filter(struct lang_filter *filter ATTR_UNUSED,\n\t\t\t
      \    const char **token,\n\t\t\t     const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UTF8_IS_START_SEQ
      Src: /src/dovecot/src/lib-language/lang-filter-english-possessive.c:12,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-filter-english-possessive.c:13,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib-language/lang-filter-english-possessive.c:16,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-language/lang-filter-english-possessive.c:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - end_pos
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 19
    functionName: get_ending_utf8_char
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-english-possessive.c
    functionUses: 0
    functionsReached:
    - UTF8_IS_START_SEQ
    - i_assert
    - i_unreached
    - uni_utf8_get_char
    linkageType: ''
    returnType: unichar_t
    signature: unichar_t get_ending_utf8_char(const char *str, size_t *end_pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/lang-filter-english-possessive.c:26,1
    - Dst: get_ending_utf8_char
      Src: /src/dovecot/src/lib-language/lang-filter-english-possessive.c:31,1
    - Dst: IS_APOSTROPHE
      Src: /src/dovecot/src/lib-language/lang-filter-english-possessive.c:32,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-language/lang-filter-english-possessive.c:33,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - token
    - ATTR_UNUSED
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 36
    functionName: lang_filter_english_possessive_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-english-possessive.c
    functionUses: 0
    functionsReached:
    - IS_APOSTROPHE
    - strlen
    - t_strndup
    - get_ending_utf8_char
    linkageType: ''
    returnType: int
    signature: "int lang_filter_english_possessive_filter(struct lang_filter *filter
      ATTR_UNUSED,\n\t\t\t\t     const char **token,\n\t\t\t\t     const char **error_r
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-language/lang-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(_type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-language/lang-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(_type, name)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-language/lang-settings.c:90,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-language/lang-settings.c:102,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/lang-settings.c:102,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-language/lang-settings.c:103,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-language/lang-settings.c:107,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/lang-settings.c:110,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/lang-settings.c:116,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-language/lang-settings.c:121,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/lang-settings.c:126,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-language/lang-settings.c:130,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-language/lang-settings.c:133,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-language/lang-settings.c:140,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-language/lang-settings.c:141,1
    - Dst: array_push_front
      Src: /src/dovecot/src/lib-language/lang-settings.c:143,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-language/lang-settings.c:145,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-language/lang-settings.c:146,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 4
    argNames:
    - event
    - _set
    - pool
    - error_r
    argTypes:
    - struct event*
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 160
    functionName: langs_settings_ext_check
    functionSourceFile: /src/dovecot/src/lib-language/lang-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_add_external_ref
    - p_array_init
    - array_foreach_elem
    - array_push_back
    - array_push_front
    - t_strdup_printf
    - settings_free
    - array_is_empty
    - array_count
    - settings_get_filter
    - t_strdup
    - p_memdup
    linkageType: ''
    returnType: bool
    signature: "bool langs_settings_ext_check(struct event *event, void *_set,\n\t\t\t\t
      \    pool_t pool, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/lang-filter-contractions.c:19,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/lang-filter-contractions.c:20,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-language/lang-filter-contractions.c:24,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-language/lang-filter-contractions.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - set
    - ATTR_UNUSED
    - filter_r
    - error_r
    argTypes:
    - struct lang_settings*
    - struct event*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 29
    functionName: lang_filter_contractions_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-contractions.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    - i_new
    - str_new
    linkageType: ''
    returnType: int
    signature: "int lang_filter_contractions_create(const struct lang_settings *set,\n\t\t\t\tstruct
      event *event ATTR_UNUSED,\n\t\t\t        struct lang_filter **filter_r,\n\t\t\t
      \       const char **error_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib-language/lang-filter-contractions.c:57,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-filter-contractions.c:58,1
    - Dst: IS_APOSTROPHE
      Src: /src/dovecot/src/lib-language/lang-filter-contractions.c:59,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - _token
    - ATTR_UNUSED
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 72
    functionName: lang_filter_contractions_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-contractions.c
    functionUses: 0
    functionsReached:
    - IS_APOSTROPHE
    - i_assert
    - uni_utf8_get_char
    linkageType: ''
    returnType: int
    signature: "int lang_filter_contractions_filter(struct lang_filter *filter ATTR_UNUSED,\n\t\t\t
      \   const char **_token,\n\t\t\t    const char **error_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UTF8_IS_START_SEQ
      Src: /src/dovecot/src/lib-language/lang-tokenizer-common.c:16,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib-language/lang-tokenizer-common.c:19,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-common.c:21,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - unsigned char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 24
    functionName: lang_tokenizer_delete_trailing_partial_char
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-common.c
    functionUses: 0
    functionsReached:
    - UTF8_IS_START_SEQ
    - i_assert
    - uni_utf8_char_bytes
    linkageType: ''
    returnType: void
    signature: "void lang_tokenizer_delete_trailing_partial_char(const unsigned char
      *data,\n\t\t\t\t\t    size_t *len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - unsigned char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 35
    functionName: lang_tokenizer_delete_trailing_invalid_char
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void lang_tokenizer_delete_trailing_invalid_char(const unsigned char
      *data,\n\t\t\t\t\t\t size_t *len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/language.c:67,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-language/language.c:74,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-language/language.c:75,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-language/language.c:76,1
    - Dst: textcat_Done
      Src: /src/dovecot/src/lib-language/language.c:78,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-language/language.c:79,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - textcat
    argTypes:
    - struct textcat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 80
    functionName: textcat_unref
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - textcat_Done
    linkageType: ''
    returnType: void
    signature: void textcat_unref(struct textcat *textcat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-language/language.c:88,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-language/language.c:90,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/language.c:90,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/language.c:91,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-language/language.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 95
    functionName: languages_init
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - N_ELEMENTS
    - p_array_init
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void languages_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: textcat_unref
      Src: /src/dovecot/src/lib-language/language.c:101,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-language/language.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 104
    functionName: languages_deinit
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 1
    functionsReached:
    - textcat_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void languages_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: language_find
      Src: /src/dovecot/src/lib-language/language.c:110,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-language/language.c:113,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-language/language.c:114,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-language/language.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 116
    functionName: language_register
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - language_find
    - p_new
    - array_push_back
    - p_strdup
    linkageType: ''
    returnType: void
    signature: void language_register(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-language/language.c:122,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/language.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 127
    functionName: language_find
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct language
    signature: struct language *language_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-language/language.c:134,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-language/language.c:135,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-language/language.c:137,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-language/language.c:138,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-language/language.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - settings
    argTypes:
    - struct language_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 141
    functionName: language_list_init
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup_empty
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct language_list
    signature: struct language_list *language_list_init(const struct language_settings
      *settings)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: textcat_unref
      Src: /src/dovecot/src/lib-language/language.c:150,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-language/language.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct language_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 153
    functionName: language_list_deinit
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - textcat_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void language_list_deinit(struct language_list **list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-language/language.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/language.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct language_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 165
    functionName: language_list_find
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct language
    signature: 'struct language *

      language_list_find(struct language_list *list, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/language.c:170,1
    - Dst: language_list_find
      Src: /src/dovecot/src/lib-language/language.c:170,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-language/language.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - lang
    argTypes:
    - struct language_list*
    - struct language*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: language_list_add
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - i_assert
    - language_list_find
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void language_list_add(struct language_list *list,\n\t\t       const
      struct language *lang)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/language.c:182,1
    - Dst: language_find
      Src: /src/dovecot/src/lib-language/language.c:185,1
    - Dst: language_list_find
      Src: /src/dovecot/src/lib-language/language.c:191,1
    - Dst: language_list_add
      Src: /src/dovecot/src/lib-language/language.c:192,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - list
    - languages
    - unknown_name_r
    argTypes:
    - struct language_list*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 195
    functionName: language_list_add_names
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_find
    - language_list_add
    - language_list_find
    linkageType: ''
    returnType: bool
    signature: "bool language_list_add_names(struct language_list *list,\n\t\t\t     const
      ARRAY_TYPE(lang_settings) *languages,\n\t\t\t     const char **unknown_name_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/language.c:182,1
    - Dst: language_find
      Src: /src/dovecot/src/lib-language/language.c:185,1
    - Dst: language_list_find
      Src: /src/dovecot/src/lib-language/language.c:191,1
    - Dst: language_list_add
      Src: /src/dovecot/src/lib-language/language.c:192,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 193
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 67
    functionsReached:
    - strcmp
    - language_find
    - language_list_add
    - language_list_find
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(languages, entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct language_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 201
    functionName: language_list_get_all
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      language_list_get_all(struct language_list *list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_front
      Src: /src/dovecot/src/lib-language/language.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct language_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: language_list_get_first
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - array_front
    linkageType: ''
    returnType: struct language
    signature: 'struct language *

      language_list_get_first(struct language_list *list)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-language/language.c:222,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/language.c:225,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/language.c:225,1
    - Dst: language_list_find
      Src: /src/dovecot/src/lib-language/language.c:227,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - list
    - candp
    - candp_len
    - lang_r
    argTypes:
    - struct language_list*
    - candidate_t*
    - int
    - struct language**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 231
    functionName: language_match_lists
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strcut
    - language_list_find
    linkageType: ''
    returnType: bool
    signature: "bool language_match_lists(struct language_list *list,\n                                 candidate_t
      *candp, int candp_len,\n                                 const struct language
      **lang_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/language.c:246,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/language.c:255,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/language.c:256,1
    - Dst: textcat_unref
      Src: /src/dovecot/src/lib-language/language.c:261,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-language/language.c:264,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-language/language.c:266,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-language/language.c:267,1
    - Dst: special_textcat_Init
      Src: /src/dovecot/src/lib-language/language.c:268,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-language/language.c:270,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - list
    - error_r
    argTypes:
    - struct language_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 279
    functionName: language_textcat_init
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_strdup
    - textcat_unref
    - special_textcat_Init
    - i_new
    - i_strdup_printf
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int language_textcat_init(struct language_list *list,\n\t\t\t\t const
      char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: language_textcat_init
      Src: /src/dovecot/src/lib-language/language.c:294,1
    - Dst: textcat_GetClassifyFullOutput
      Src: /src/dovecot/src/lib-language/language.c:297,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-language/language.c:299,1
    - Dst: textcat_ClassifyFull
      Src: /src/dovecot/src/lib-language/language.c:300,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-language/language.c:301,1
    - Dst: language_match_lists
      Src: /src/dovecot/src/lib-language/language.c:304,1
    - Dst: textcat_ReleaseClassifyFullOutput
      Src: /src/dovecot/src/lib-language/language.c:306,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct language_list*
    - unsigned char*
    - size_t
    - struct language**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 282
    functionDepth: 3
    functionLinenumber: 282
    functionLinenumberEnd: 311
    functionName: language_detect_textcat
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - language_textcat_init
    - language_match_lists
    - I_MIN
    - i_fatal_status
    - textcat_ReleaseClassifyFullOutput
    - textcat_ClassifyFull
    - textcat_GetClassifyFullOutput
    linkageType: ''
    returnType: enum language_detect_result
    signature: "enum language_detect_result language_detect_textcat(struct language_list
      *list ATTR_UNUSED,\n\t\t\tconst unsigned char *text ATTR_UNUSED,\n\t\t\tsize_t
      size ATTR_UNUSED,\n\t\t\tconst struct language **lang_r ATTR_UNUSED,\n\t\t\tconst
      char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/language.c:335,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/language.c:335,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/language.c:338,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-language/language.c:340,1
    - Dst: language_detect_textcat
      Src: /src/dovecot/src/lib-language/language.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - list
    - ATTR_UNUSED
    - ATTR_UNUSED
    - lang_r
    - error_r
    argTypes:
    - struct language_list*
    - unsigned char*
    - size_t
    - struct language**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 328
    functionDepth: 4
    functionLinenumber: 328
    functionLinenumberEnd: 345
    functionName: language_detect
    functionSourceFile: /src/dovecot/src/lib-language/language.c
    functionUses: 0
    functionsReached:
    - array_count
    - i_assert
    - language_detect_textcat
    - array_front
    linkageType: ''
    returnType: enum language_detect_result
    signature: "enum language_detect_result language_detect(struct language_list *list,\n\t\tconst
      unsigned char *text ATTR_UNUSED,\n\t\tsize_t size ATTR_UNUSED,\n\t\tconst struct
      language **lang_r,\n\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 7
    functionName: IS_NONASCII_APOSTROPHE
    functionSourceFile: /src/dovecot/src/lib-language/lang-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NONASCII_APOSTROPHE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 9
    functionName: IS_APOSTROPHE
    functionSourceFile: /src/dovecot/src/lib-language/lang-common.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_APOSTROPHE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: IS_WB5A_APOSTROPHE
    functionSourceFile: /src/dovecot/src/lib-language/lang-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_WB5A_APOSTROPHE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: IS_PREFIX_SPLAT
    functionSourceFile: /src/dovecot/src/lib-language/lang-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PREFIX_SPLAT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: IS_ASCII_VOWEL
    functionSourceFile: /src/dovecot/src/lib-language/lang-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ASCII_VOWEL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: IS_NONASCII_VOWEL
    functionSourceFile: /src/dovecot/src/lib-language/lang-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NONASCII_VOWEL(c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: parse_algorithm
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct algorithm
    signature: struct algorithm *parse_algorithm(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_algorithm
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:60,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:62,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:75,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:78,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - set
    - ATTR_UNUSED
    - flags
    - tokenizer_r
    - error_r
    argTypes:
    - struct lang_settings*
    - struct event*
    - enum lang_tokenizer_flags
    - struct lang_tokenizer**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 88
    functionName: lang_tokenizer_generic_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - parse_algorithm
    - buffer_create_dynamic
    - t_strdup_printf
    - i_new
    - HAS_ALL_BITS
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_generic_create(const struct lang_settings *set,\n\t\t\t
      \     struct event *event ATTR_UNUSED,\n\t\t\t      enum lang_tokenizer_flags
      flags,\n\t\t\t      struct lang_tokenizer **tokenizer_r,\n\t\t\t      const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:94,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:96,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _tok
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 98
    functionName: lang_tokenizer_generic_destroy
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_generic_destroy(struct lang_tokenizer *_tok)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tok
    - lt
    argTypes:
    - struct generic_lang_tokenizer*
    - enum letter_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: shift_prev_type
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void shift_prev_type(struct generic_lang_tokenizer *tok, enum letter_type
      lt)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - tok
    - lt
    argTypes:
    - struct generic_lang_tokenizer*
    - enum letter_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 113
    functionName: add_prev_type
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_prev_type(struct generic_lang_tokenizer *tok, enum letter_type
      lt)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - tok
    - c
    argTypes:
    - struct generic_lang_tokenizer*
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: add_letter
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_letter(struct generic_lang_tokenizer *tok, unichar_t c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:139,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:143,1
    - Dst: lang_tokenizer_delete_trailing_partial_char
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:146,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:148,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:151,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:152,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - tok
    - token_r
    argTypes:
    - struct generic_lang_tokenizer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 155
    functionName: lang_tokenizer_generic_simple_current_token
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - i_assert
    - lang_tokenizer_delete_trailing_partial_char
    - t_strndup
    - buffer_set_used_size
    linkageType: ''
    returnType: bool
    signature: "bool lang_tokenizer_generic_simple_current_token(struct generic_lang_tokenizer
      *tok,\n                                            const char **token_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:164,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: lang_uni_word_break
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - unicode_code_point_get_data
    linkageType: ''
    returnType: bool
    signature: bool lang_uni_word_break(unichar_t c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lang_uni_word_break
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - tok
    - c
    - apostrophe
    argTypes:
    - struct generic_lang_tokenizer*
    - unichar_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 197
    functionName: lang_simple_is_word_break
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - lang_uni_word_break
    linkageType: ''
    returnType: enum lang_break_type
    signature: "enum lang_break_type lang_simple_is_word_break(const struct generic_lang_tokenizer
      *tok,\n\t\t\t unichar_t c, bool apostrophe)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:202,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _tok
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 208
    functionName: lang_tokenizer_generic_reset
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - container_of
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_generic_reset(struct lang_tokenizer *_tok)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:213,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tok
    - data
    - size
    argTypes:
    - struct generic_lang_tokenizer*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 216
    functionName: tok_append_truncated
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - I_MIN
    linkageType: ''
    returnType: void
    signature: "void tok_append_truncated(struct generic_lang_tokenizer *tok,\n\t\t\t\t
      const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 222
    functionName: is_base64
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_base64(const unsigned char ch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:282,1
    - Dst: is_base64
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:290,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:291,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:292,1
    - Dst: is_base64
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:296,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:299,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:300,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 20
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 306
    functionName: skip_base64
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - i_assert
    - memchr
    - N_ELEMENTS
    - is_base64
    linkageType: ''
    returnType: size_t
    signature: size_t skip_base64(const unsigned char *data, size_t size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:315,1
    - Dst: skip_base64
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:322,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:324,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:325,1
    - Dst: IS_APOSTROPHE
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:327,1
    - Dst: IS_PREFIX_SPLAT
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:328,1
    - Dst: shift_prev_type
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:331,1
    - Dst: lang_simple_is_word_break
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:332,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:334,1
    - Dst: shift_prev_type
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:335,1
    - Dst: lang_tokenizer_generic_simple_current_token
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:337,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:349,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:351,1
    - Dst: shift_prev_type
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:353,1
    - Dst: shift_prev_type
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:358,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:363,1
    - Dst: shift_prev_type
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:368,1
    - Dst: lang_tokenizer_generic_simple_current_token
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:369,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 6
    argNames:
    - _tok
    - data
    - size
    - skip_r
    - token_r
    - ATTR_UNUSED
    argTypes:
    - struct lang_tokenizer*
    - unsigned char*
    - size_t
    - size_t*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 308
    functionDepth: 3
    functionLinenumber: 308
    functionLinenumberEnd: 374
    functionName: lang_tokenizer_generic_simple_next
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - container_of
    - shift_prev_type
    - uni_utf8_get_char_n
    - lang_tokenizer_generic_simple_current_token
    - skip_base64
    - IS_PREFIX_SPLAT
    - lang_simple_is_word_break
    - IS_APOSTROPHE
    - tok_append_truncated
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_generic_simple_next(struct lang_tokenizer *_tok,\n
      \                                  const unsigned char *data, size_t size,\n\t\t\t\t
      \  size_t *skip_r, const char **token_r,\n\t\t\t\t   const char **error_r ATTR_UNUSED)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IS_APOSTROPHE
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:386,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:390,1
    - Dst: IS_PREFIX_SPLAT
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:424,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 1
    argNames:
    - c
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 427
    functionName: letter_type
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - IS_APOSTROPHE
    - IS_PREFIX_SPLAT
    - unicode_code_point_get_data
    linkageType: ''
    returnType: enum letter_type
    signature: enum letter_type letter_type(unichar_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 432
    functionName: letter_panic
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: bool
    signature: bool letter_panic(struct generic_lang_tokenizer *tok ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 439
    functionName: letter_cr_lf_newline
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_cr_lf_newline(struct generic_lang_tokenizer *tok ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 445
    functionName: letter_extend_format
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_extend_format(struct generic_lang_tokenizer *tok ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 454
    functionName: letter_regional_indicator
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_regional_indicator(struct generic_lang_tokenizer *tok)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 467
    functionName: letter_katakana
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_katakana(struct generic_lang_tokenizer *tok)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 492
    functionName: letter_hebrew
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_hebrew(struct generic_lang_tokenizer *tok)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_WB5A_APOSTROPHE
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:499,1
    - Dst: IS_VOWEL
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:499,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 15
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 525
    functionName: letter_aletter
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - IS_VOWEL
    - IS_WB5A_APOSTROPHE
    linkageType: ''
    returnType: bool
    signature: bool letter_aletter(struct generic_lang_tokenizer *tok)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 539
    functionName: letter_single_quote
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_single_quote(struct generic_lang_tokenizer *tok)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 548
    functionName: letter_double_quote
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_double_quote(struct generic_lang_tokenizer *tok)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 555
    functionName: letter_midnumlet
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_midnumlet(struct generic_lang_tokenizer *tok ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 565
    functionName: letter_midletter
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_midletter(struct generic_lang_tokenizer *tok)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 574
    functionName: letter_midnum
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_midnum(struct generic_lang_tokenizer *tok)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 576
    functionDepth: 0
    functionLinenumber: 576
    functionLinenumberEnd: 599
    functionName: letter_numeric
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_numeric(struct generic_lang_tokenizer *tok)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 613
    functionName: letter_extendnumlet
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_extendnumlet(struct generic_lang_tokenizer *tok)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 615
    functionDepth: 0
    functionLinenumber: 615
    functionLinenumberEnd: 623
    functionName: letter_apostrophe
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_apostrophe(struct generic_lang_tokenizer *tok)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 628
    functionName: letter_prefixsplat
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_prefixsplat(struct generic_lang_tokenizer *tok ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 632
    functionName: letter_other
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool letter_other(struct generic_lang_tokenizer *tok ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - lt
    argTypes:
    - enum letter_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 648
    functionName: is_nontoken
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_nontoken(enum letter_type lt)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 6
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 672
    functionName: is_one_past_end
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_one_past_end(struct generic_lang_tokenizer *tok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_one_past_end
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:681,1
    - Dst: UTF8_IS_START_SEQ
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:684,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:686,1
    - Dst: lang_tokenizer_delete_trailing_partial_char
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:689,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:694,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:695,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:699,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:700,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - tok
    - token_r
    argTypes:
    - struct generic_lang_tokenizer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 674
    functionDepth: 2
    functionLinenumber: 674
    functionLinenumberEnd: 702
    functionName: lang_tokenizer_generic_tr29_current_token
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_delete_trailing_partial_char
    - t_strndup
    - buffer_set_used_size
    - UTF8_IS_START_SEQ
    - i_assert
    - is_one_past_end
    linkageType: ''
    returnType: void
    signature: "void lang_tokenizer_generic_tr29_current_token(struct generic_lang_tokenizer
      *tok,\n                                          const char **token_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:706,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:708,1
    - Dst: buffer_insert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:709,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:709,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:709,1
    - Dst: letter_type
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct generic_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 704
    functionDepth: 2
    functionLinenumber: 704
    functionLinenumberEnd: 714
    functionName: wb5a_reinsert
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - uni_ucs4_to_utf8_c
    - buffer_insert
    - letter_type
    linkageType: ''
    returnType: void
    signature: void wb5a_reinsert(struct generic_lang_tokenizer *tok)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fn
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:755,1
    - Dst: add_prev_type
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:762,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - tok
    - lt
    argTypes:
    - struct generic_lang_tokenizer*
    - enum letter_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 765
    functionName: uni_found_word_boundary
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - fn
    - add_prev_type
    linkageType: ''
    returnType: bool
    signature: bool uni_found_word_boundary(struct generic_lang_tokenizer *tok, enum
      letter_type lt)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:774,1
    - Dst: skip_base64
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:780,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:783,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:784,1
    - Dst: letter_type
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:786,1
    - Dst: wb5a_reinsert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:792,1
    - Dst: is_nontoken
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:794,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:796,1
    - Dst: add_letter
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:802,1
    - Dst: uni_found_word_boundary
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:804,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:805,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:806,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:810,1
    - Dst: lang_tokenizer_generic_tr29_current_token
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:813,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:819,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:821,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:825,1
    - Dst: tok_append_truncated
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:827,1
    - Dst: lang_tokenizer_generic_tr29_current_token
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:833,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 43
    argCount: 6
    argNames:
    - _tok
    - data
    - size
    - skip_r
    - token_r
    - ATTR_UNUSED
    argTypes:
    - struct lang_tokenizer*
    - unsigned char*
    - size_t
    - size_t*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 767
    functionDepth: 3
    functionLinenumber: 767
    functionLinenumberEnd: 837
    functionName: lang_tokenizer_generic_tr29_next
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - container_of
    - uni_found_word_boundary
    - lang_tokenizer_generic_tr29_current_token
    - uni_utf8_get_char_n
    - skip_base64
    - wb5a_reinsert
    - letter_type
    - is_nontoken
    - tok_append_truncated
    - i_assert
    - add_letter
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_generic_tr29_next(struct lang_tokenizer *_tok,\n\t\t\t\t
      const unsigned char *data, size_t size,\n\t\t\t\t size_t *skip_r, const char
      **token_r,\n\t\t\t\t const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-language/lang-tokenizer-generic.c:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct lang_tokenizer*
    - unsigned char*
    - size_t
    - size_t*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 848
    functionName: lang_tokenizer_generic_next
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_generic_next(struct lang_tokenizer *_tok ATTR_UNUSED,\n\t\t\t
      \   const unsigned char *data ATTR_UNUSED,\n                            size_t
      size ATTR_UNUSED,\n                            size_t *skip_r ATTR_UNUSED,\n\t\t\t
      \   const char **token_r ATTR_UNUSED,\n\t\t\t    const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: IS_DTEXT
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DTEXT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:39,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:41,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:42,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - set
    - ATTR_UNUSED
    - flags
    - tokenizer_r
    - ATTR_UNUSED
    argTypes:
    - struct lang_settings*
    - struct event*
    - enum lang_tokenizer_flags
    - struct lang_tokenizer**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 47
    functionName: lang_tokenizer_email_address_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - HAS_ALL_BITS
    - str_new
    - i_new
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_email_address_create(const struct lang_settings
      *set,\n\t\t\t\t    struct event *event ATTR_UNUSED,\n\t\t\t\t    enum lang_tokenizer_flags
      flags,\n\t\t\t\t    struct lang_tokenizer **tokenizer_r,\n\t\t\t\t    const
      char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_free
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:54,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:55,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _tok
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 57
    functionName: lang_tokenizer_email_address_destroy
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - i_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_email_address_destroy(struct lang_tokenizer *_tok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:68,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:69,1
    - Dst: lang_tokenizer_delete_trailing_partial_char
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:74,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:75,1
    - Dst: lang_tokenizer_delete_trailing_invalid_char
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:79,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - tok
    - token_r
    argTypes:
    - struct email_address_lang_tokenizer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 83
    functionName: lang_tokenizer_address_current_token
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - str_len
    - lang_tokenizer_delete_trailing_partial_char
    - t_strndup
    - str_truncate
    - i_assert
    - lang_tokenizer_delete_trailing_invalid_char
    linkageType: ''
    returnType: bool
    signature: "bool lang_tokenizer_address_current_token(struct email_address_lang_tokenizer
      *tok,\n                                     const char **token_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:89,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:97,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:97,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:98,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:98,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:98,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:99,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:99,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:100,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:101,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:102,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:106,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:106,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:107,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - tok
    - token_r
    argTypes:
    - struct email_address_lang_tokenizer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 109
    functionName: lang_tokenizer_address_parent_data
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - str_len
    - str_truncate
    - t_strdup
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool lang_tokenizer_address_parent_data(struct email_address_lang_tokenizer
      *tok,\n                                   const char **token_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: skip_nonlocal_part
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - IS_ATEXT
    linkageType: ''
    returnType: size_t
    signature: size_t skip_nonlocal_part(const unsigned char *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:127,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - tok
    - pos
    argTypes:
    - struct email_address_lang_tokenizer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 137
    functionName: lang_tokenizer_email_address_too_large
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - str_truncate
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool lang_tokenizer_email_address_too_large(struct email_address_lang_tokenizer
      *tok,\n\t\t\t\t       size_t pos)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:147,1
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:149,1
    - Dst: lang_tokenizer_email_address_too_large
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:158,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:164,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:165,1
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:171,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:172,1
    - Dst: skip_nonlocal_part
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:177,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 26
    argCount: 4
    argNames:
    - tok
    - data
    - size
    - skip_r
    argTypes:
    - struct email_address_lang_tokenizer*
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 180
    functionName: lang_tokenizer_email_address_parse_local
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - i_assert
    - str_len
    - lang_tokenizer_email_address_too_large
    - str_append_data
    - IS_ATEXT
    - skip_nonlocal_part
    linkageType: ''
    returnType: enum email_address_parser_state
    signature: "enum email_address_parser_state lang_tokenizer_email_address_parse_local(struct
      email_address_lang_tokenizer *tok,\n                                         const
      unsigned char *data, size_t size,\n                                         size_t
      *skip_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:184,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct email_address_lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: domain_is_empty
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - str_c
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool domain_is_empty(struct email_address_lang_tokenizer *tok)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_DTEXT
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:198,1
    - Dst: lang_tokenizer_email_address_too_large
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:201,1
    - Dst: domain_is_empty
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:208,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:209,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:214,1
    - Dst: skip_nonlocal_part
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:219,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 4
    argNames:
    - tok
    - data
    - size
    - skip_r
    argTypes:
    - struct email_address_lang_tokenizer*
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 222
    functionName: lang_tokenizer_email_address_parse_domain
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_email_address_too_large
    - IS_DTEXT
    - domain_is_empty
    - str_append_data
    - skip_nonlocal_part
    linkageType: ''
    returnType: enum email_address_parser_state
    signature: "enum email_address_parser_state lang_tokenizer_email_address_parse_domain(struct
      email_address_lang_tokenizer *tok,\n                                          const
      unsigned char *data, size_t size,\n                                          size_t
      *skip_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:229,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - data
    - size
    - skip_r
    argTypes:
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 237
    functionName: lang_tokenizer_address_skip
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - IS_ATEXT
    linkageType: ''
    returnType: bool
    signature: "bool lang_tokenizer_address_skip(const unsigned char *data, size_t
      size,\n\t\t\t    size_t *skip_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - tok
    - data
    - size
    argTypes:
    - struct email_address_lang_tokenizer*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 246
    functionName: lang_tokenizer_address_update_parent
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - str_append_data
    linkageType: ''
    returnType: void
    signature: "void lang_tokenizer_address_update_parent(struct email_address_lang_tokenizer
      *tok,\n                                     const unsigned char *data, size_t
      size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:254,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _tok
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 256
    functionName: lang_tokenizer_email_address_reset
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_email_address_reset(struct lang_tokenizer *_tok)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: lang_tokenizer_address_current_token
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:274,1
    - Dst: domain_is_empty
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:282,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:284,1
    - Dst: lang_tokenizer_address_parent_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:288,1
    - Dst: lang_tokenizer_address_current_token
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:292,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:306,1
    - Dst: lang_tokenizer_address_parent_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:307,1
    - Dst: lang_tokenizer_email_address_parse_local
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:319,1
    - Dst: lang_tokenizer_address_update_parent
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:323,1
    - Dst: lang_tokenizer_email_address_parse_domain
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:334,1
    - Dst: lang_tokenizer_address_update_parent
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:338,1
    - Dst: lang_tokenizer_address_parent_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:345,1
    - Dst: lang_tokenizer_address_current_token
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:347,1
    - Dst: lang_tokenizer_address_parent_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:356,1
    - Dst: lang_tokenizer_address_skip
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:359,1
    - Dst: lang_tokenizer_address_update_parent
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:362,1
    - Dst: lang_tokenizer_address_parent_data
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:367,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-language/lang-tokenizer-address.c:375,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 68
    argCount: 6
    argNames:
    - _tok
    - data
    - size
    - skip_r
    - token_r
    - ATTR_UNUSED
    argTypes:
    - struct lang_tokenizer*
    - unsigned char*
    - size_t
    - size_t*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 258
    functionDepth: 3
    functionLinenumber: 258
    functionLinenumberEnd: 381
    functionName: lang_tokenizer_email_address_next
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_email_address_parse_domain
    - lang_tokenizer_address_skip
    - i_unreached
    - lang_tokenizer_email_address_parse_local
    - lang_tokenizer_address_current_token
    - lang_tokenizer_address_update_parent
    - str_truncate
    - lang_tokenizer_address_parent_data
    - domain_is_empty
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_email_address_next(struct lang_tokenizer *_tok,\n
      \                                 const unsigned char *data, size_t size,\n\t\t\t\t
      \ size_t *skip_r, const char **token_r,\n\t\t\t\t  const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:15,1
    - Dst: lang_tokenizer_register
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:16,1
    - Dst: lang_tokenizer_register
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:17,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 19
    functionName: lang_tokenizers_init
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 1
    functionsReached:
    - lang_tokenizer_register
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void lang_tokenizers_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:23,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: lang_tokenizers_deinit
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void lang_tokenizers_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:30,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:31,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tok_class
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: lang_tokenizer_register
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - array_is_created
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_register(const struct lang_tokenizer *tok_class)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:41,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:42,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:43,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:44,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:45,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:46,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - tok_class
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 51
    functionName: lang_tokenizer_unregister
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_delete
    - i_unreached
    - array_foreach
    - array_count
    - array_foreach_idx
    - array_free
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_unregister(const struct lang_tokenizer *tok_class)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:57,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 62
    functionName: lang_tokenizer_find
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct lang_tokenizer
    signature: struct lang_tokenizer *lang_tokenizer_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: lang_tokenizer_name
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *lang_tokenizer_name(const struct lang_tokenizer *tok)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: lang_tokenizer_self_reset
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_self_reset(struct lang_tokenizer *tok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct lang_tokenizer*::v::create
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:86,1
    - Dst: lang_tokenizer_self_reset
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:91,1
    - Dst: lang_tokenizer_ref
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:93,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 7
    argNames:
    - tok_class
    - parent
    - set
    - event
    - flags
    - tokenizer_r
    - error_r
    argTypes:
    - struct lang_tokenizer*
    - struct lang_tokenizer*
    - struct lang_settings*
    - struct event*
    - enum lang_tokenizer_flags
    - struct lang_tokenizer**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 100
    functionName: lang_tokenizer_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_self_reset
    - buffer_create_dynamic
    - struct lang_tokenizer*::v::create
    - lang_tokenizer_ref
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_create(const struct lang_tokenizer *tok_class,\n\t\t\t
      \ struct lang_tokenizer *parent,\n\t\t\t  const struct lang_settings *set,\n\t\t\t
      \ struct event *event,\n\t\t\t  enum lang_tokenizer_flags flags,\n\t\t\t  struct
      lang_tokenizer **tokenizer_r,\n\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: lang_tokenizer_ref
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_ref(struct lang_tokenizer *tok)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:113,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:119,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:121,1
    - Dst: struct lang_tokenizer*::v::destroy
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _tok
    argTypes:
    - struct lang_tokenizer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 123
    functionName: lang_tokenizer_unref
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 1
    functionsReached:
    - struct lang_tokenizer*::v::destroy
    - buffer_free
    - i_assert
    - lang_tokenizer_unref
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_unref(struct lang_tokenizer **_tok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:133,1
    - Dst: struct lang_tokenizer*::v::next
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:138,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:142,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:148,1
    - Dst: struct lang_tokenizer*::v::next
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:151,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:160,1
    - Dst: lang_tokenizer_self_reset
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:168,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - tok
    - data
    - size
    - token_r
    - error_r
    argTypes:
    - struct lang_tokenizer*
    - unsigned char*
    - size_t
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 171
    functionName: lang_tokenizer_next_self
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - struct lang_tokenizer*::v::next
    - i_assert
    - lang_tokenizer_self_reset
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_next_self(struct lang_tokenizer *tok,\n                         const
      unsigned char *data, size_t size,\n                         const char **token_r,
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct lang_tokenizer*::v::reset
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:175,1
    - Dst: lang_tokenizer_self_reset
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct lang_tokenizer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: lang_tokenizer_reset
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_self_reset
    - struct lang_tokenizer*::v::reset
    linkageType: ''
    returnType: void
    signature: void lang_tokenizer_reset(struct lang_tokenizer *tok)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lang_tokenizer_next_self
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:188,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:199,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:215,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:216,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:216,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:221,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:231,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:242,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:244,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:247,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 40
    argCount: 5
    argNames:
    - tok
    - data
    - size
    - token_r
    - error_r
    argTypes:
    - struct lang_tokenizer*
    - unsigned char*
    - size_t
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 249
    functionName: lang_tokenizer_next
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - i_unreached
    - strlen
    - buffer_set_used_size
    - lang_tokenizer_next
    - lang_tokenizer_next_self
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_next(struct lang_tokenizer *tok,\n\t\t        const
      unsigned char *data, size_t size,\n\t\t        const char **token_r, const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/lang-tokenizer.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tok
    - token_r
    - error_r
    argTypes:
    - struct lang_tokenizer*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: lang_tokenizer_final
    functionSourceFile: /src/dovecot/src/lib-language/lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_next
    linkageType: ''
    returnType: int
    signature: "int lang_tokenizer_final(struct lang_tokenizer *tok, const char **token_r,\n\t\t\t
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-language/test-language.c:17,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-language/test-language.c:17,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-language/test-language.c:17,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-language/test-language.c:18,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-language/test-language.c:19,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-language/test-language.c:21,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-language/test-language.c:23,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - values
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 26
    functionName: to_array
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - t_new
    - array_push_back
    - t_array_init
    - ARRAY_TYPE
    - t_strsplit_spaces
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: ARRAY_TYPE *to_array(const char *values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:43,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:45,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:45,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:46,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:48,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:48,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:49,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 29
    functionDepth: 5
    functionLinenumber: 29
    functionLinenumberEnd: 51
    functionName: test_language_detect_finnish
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_finnish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:70,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:72,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:72,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:73,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:75,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:75,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:76,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 78
    functionName: test_language_detect_english
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_english(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:105,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:107,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:107,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:108,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:110,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:110,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:111,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 81
    functionDepth: 5
    functionLinenumber: 81
    functionLinenumberEnd: 113
    functionName: test_language_detect_french
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_french(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:142,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:144,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:144,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:145,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:147,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:147,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:148,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 115
    functionDepth: 5
    functionLinenumber: 115
    functionLinenumberEnd: 150
    functionName: test_language_detect_german
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_german(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:168,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:169,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:170,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:170,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:170,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:171,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:173,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:173,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:174,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 153
    functionDepth: 5
    functionLinenumber: 153
    functionLinenumberEnd: 176
    functionName: test_language_detect_swedish
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_swedish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:192,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:194,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:194,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:195,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:197,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:197,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:198,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 179
    functionDepth: 5
    functionLinenumber: 179
    functionLinenumberEnd: 200
    functionName: test_language_detect_bokmal
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_bokmal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:216,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:217,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:218,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:218,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:218,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:219,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:219,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:221,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:221,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:222,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 203
    functionDepth: 5
    functionLinenumber: 203
    functionLinenumberEnd: 224
    functionName: test_language_detect_nynorsk
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_nynorsk(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:241,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:242,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:243,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:243,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:243,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:244,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:244,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:246,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:246,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:247,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 227
    functionDepth: 5
    functionLinenumber: 227
    functionLinenumberEnd: 249
    functionName: test_language_detect_finnish_as_english
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_finnish_as_english(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:268,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:269,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:270,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:270,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:270,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:271,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:271,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:273,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 252
    functionDepth: 5
    functionLinenumber: 252
    functionLinenumberEnd: 275
    functionName: test_language_detect_na
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_na(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:288,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-language/test-language.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:290,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-language/test-language.c:290,1
    - Dst: to_array
      Src: /src/dovecot/src/lib-language/test-language.c:290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:291,1
    - Dst: language_detect
      Src: /src/dovecot/src/lib-language/test-language.c:291,1
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:293,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 278
    functionDepth: 5
    functionLinenumber: 278
    functionLinenumberEnd: 295
    functionName: test_language_detect_unknown
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - language_detect
    - language_list_init
    - test_end
    - test_assert
    - to_array
    - language_list_deinit
    - test_begin
    - language_list_add_names
    linkageType: ''
    returnType: void
    signature: void test_language_detect_unknown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:299,1
    - Dst: language_find
      Src: /src/dovecot/src/lib-language/test-language.c:300,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/test-language.c:301,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:302,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:302,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 296
    functionDepth: 3
    functionLinenumber: 296
    functionLinenumberEnd: 304
    functionName: test_language_find_builtin
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - test_assert
    - language_find
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_language_find_builtin(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-language.c:308,1
    - Dst: language_register
      Src: /src/dovecot/src/lib-language/test-language.c:309,1
    - Dst: language_find
      Src: /src/dovecot/src/lib-language/test-language.c:310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-language/test-language.c:311,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-language.c:312,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-language.c:312,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-language.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 305
    functionDepth: 3
    functionLinenumber: 305
    functionLinenumberEnd: 314
    functionName: test_language_register
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - language_register
    - test_assert
    - language_find
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_language_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: languages_init
      Src: /src/dovecot/src/lib-language/test-language.c:334,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-language/test-language.c:335,1
    - Dst: languages_deinit
      Src: /src/dovecot/src/lib-language/test-language.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 316
    functionDepth: 7
    functionLinenumber: 316
    functionLinenumberEnd: 338
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-language/test-language.c
    functionUses: 1
    functionsReached:
    - languages_init
    - test_run
    - languages_deinit
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: init_lang_settings
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_lang_settings(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:93,1
    - Dst: lang_tokenizer_find
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:94,1
    - Dst: lang_tokenizer_find
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:94,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: test_lang_tokenizer_find
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_find
    - test_end
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_find(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:106,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:110,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:111,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:114,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:115,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:118,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:123,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:124,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:125,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:129,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:130,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:133,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:138,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:140,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:141,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:142,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:146,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:147,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:150,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 4
    argNames:
    - tok
    - _input
    - expected_output
    - first_outi
    argTypes:
    - struct lang_tokenizer*
    - char*
    - char**
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 153
    functionName: test_tokenizer_inputoutput
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - strlen
    - test_assert_strcmp
    - lang_tokenizer_next
    - lang_tokenizer_final
    - i_rand_minmax
    - uni_utf8_char_bytes
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int test_tokenizer_inputoutput(struct lang_tokenizer *tok,
      const char *_input,\n\t\t\t   const char *const *expected_output,\n\t\t\t   unsigned
      int first_outi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_tokenizer_inputoutput
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:163,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - tok
    - inputs
    - count
    - expected_output
    argTypes:
    - struct lang_tokenizer*
    - char**
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 155
    functionDepth: 5
    functionLinenumber: 155
    functionLinenumberEnd: 167
    functionName: test_tokenizer_inputs
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_tokenizer_inputoutput
    - test_assert_idx
    linkageType: ''
    returnType: void
    signature: "void test_tokenizer_inputs(struct lang_tokenizer *tok,\n\t\t      const
      char *const *inputs, unsigned int count,\n\t\t      const char *const *expected_output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:215,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:216,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:216,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:217,1
    - Dst: test_tokenizer_inputs
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:219,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:219,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:220,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 169
    functionDepth: 6
    functionLinenumber: 169
    functionLinenumberEnd: 222
    functionName: test_lang_tokenizer_generic_only
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_tokenizer_inputs
    - lang_tokenizer_create
    - test_assert
    - lang_tokenizer_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_generic_only(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:271,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:272,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:272,1
    - Dst: test_tokenizer_inputs
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:273,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:273,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:274,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 226
    functionDepth: 6
    functionLinenumber: 226
    functionLinenumberEnd: 276
    functionName: test_lang_tokenizer_generic_tr29_only
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_tokenizer_inputs
    - lang_tokenizer_create
    - test_assert
    - lang_tokenizer_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_generic_tr29_only(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:326,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:327,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:327,1
    - Dst: test_tokenizer_inputs
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:328,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:328,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:329,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 280
    functionDepth: 6
    functionLinenumber: 280
    functionLinenumberEnd: 331
    functionName: test_lang_tokenizer_generic_tr29_wb5a
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_tokenizer_inputs
    - lang_tokenizer_create
    - test_assert
    - lang_tokenizer_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_generic_tr29_wb5a(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:349,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:350,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:350,1
    - Dst: test_tokenizer_inputoutput
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:351,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:352,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 333
    functionDepth: 5
    functionLinenumber: 333
    functionLinenumberEnd: 354
    functionName: test_lang_tokenizer_address_only
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_tokenizer_inputoutput
    - test_end
    - lang_tokenizer_create
    - test_assert
    - lang_tokenizer_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_address_only(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:385,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:386,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:386,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:387,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:387,1
    - Dst: test_tokenizer_inputoutput
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:388,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:389,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:390,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - name
    - set
    - flags
    argTypes:
    - char*
    - struct lang_settings*
    - enum lang_tokenizer_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 356
    functionDepth: 5
    functionLinenumber: 356
    functionLinenumberEnd: 392
    functionName: test_lang_tokenizer_address_parent
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_tokenizer_inputoutput
    - t_strdup_printf
    - test_end
    - lang_tokenizer_create
    - test_assert
    - lang_tokenizer_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_address_parent(const char *name, struct lang_settings
      *set, enum lang_tokenizer_flags flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_lang_tokenizer_address_parent
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 394
    functionDepth: 6
    functionLinenumber: 394
    functionLinenumberEnd: 397
    functionName: test_lang_tokenizer_address_parent_simple
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_lang_tokenizer_address_parent
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_address_parent_simple(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_lang_tokenizer_address_parent
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 399
    functionDepth: 6
    functionLinenumber: 399
    functionLinenumberEnd: 402
    functionName: test_lang_tokenizer_address_parent_tr29
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - test_lang_tokenizer_address_parent
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_address_parent_tr29(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:433,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:434,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:434,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:435,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:435,1
    - Dst: test_tokenizer_inputoutput
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:436,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:439,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:440,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:440,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:441,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:442,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:442,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:444,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:444,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:445,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:445,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:446,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:447,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:447,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:449,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:449,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:450,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:450,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:451,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:452,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:452,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:455,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:455,1
    - Dst: lang_tokenizer_reset
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:456,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:457,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:457,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:458,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:458,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:459,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:460,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:460,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:462,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:463,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:464,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 404
    functionDepth: 5
    functionLinenumber: 404
    functionLinenumberEnd: 465
    functionName: test_lang_tokenizer_address_search
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lang_tokenizer_reset
    - test_tokenizer_inputoutput
    - lang_tokenizer_next
    - test_end
    - lang_tokenizer_final
    - lang_tokenizer_create
    - test_assert
    - lang_tokenizer_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_address_search(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:486,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:487,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:488,1
    - Dst: lang_tokenizer_delete_trailing_partial_char
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:489,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:490,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 467
    functionDepth: 3
    functionLinenumber: 467
    functionLinenumberEnd: 493
    functionName: test_lang_tokenizer_delete_trailing_partial_char
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - strlen
    - lang_tokenizer_delete_trailing_partial_char
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_delete_trailing_partial_char(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:504,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:505,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:505,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:507,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:508,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:509,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:510,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-language/test-lang-tokenizer.c:511,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 495
    functionDepth: 4
    functionLinenumber: 495
    functionLinenumberEnd: 512
    functionName: test_lang_tokenizer_address_maxlen
    functionSourceFile: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    functionUses: 0
    functionsReached:
    - strlen
    - lang_tokenizer_next
    - test_end
    - lang_tokenizer_final
    - lang_tokenizer_create
    - test_assert
    - lang_tokenizer_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lang_tokenizer_address_maxlen(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:34,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:37,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:38,1
    - Dst: strcspn
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:39,1
    - Dst: strcspn
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:42,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:44,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:45,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:49,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:50,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:54,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:55,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:61,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - filter
    - error_r
    argTypes:
    - struct lang_filter_stopwords*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 63
    functionName: lang_filter_stopwords_read_list
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stopwords.c
    functionUses: 0
    functionsReached:
    - hash_table_update
    - p_strndup
    - strcspn
    - i_stream_create_file
    - t_strdup_printf
    - i_stream_read_next_line
    - i_stream_get_error
    - hash_table_count
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int lang_filter_stopwords_read_list(struct lang_filter_stopwords *filter,\n\t\t\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:69,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct lang_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: lang_filter_stopwords_destroy
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stopwords.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void lang_filter_stopwords_destroy(struct lang_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:82,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:84,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - set
    - ATTR_UNUSED
    - filter_r
    - ATTR_UNUSED
    argTypes:
    - struct lang_settings*
    - struct event*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 92
    functionName: lang_filter_stopwords_create
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stopwords.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_malloc
    linkageType: ''
    returnType: int
    signature: "int lang_filter_stopwords_create(const struct lang_settings *set,\n\t\t\t
      \    struct event *event ATTR_UNUSED,\n                             struct lang_filter
      **filter_r,\n                             const char **error_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:101,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:102,1
    - Dst: lang_filter_stopwords_read_list
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:103,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-language/lang-filter-stopwords.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - filter
    - token
    - error_r
    argTypes:
    - struct lang_filter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 107
    functionName: lang_filter_stopwords_filter
    functionSourceFile: /src/dovecot/src/lib-language/lang-filter-stopwords.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - lang_filter_stopwords_read_list
    - hash_table_is_created
    - hash_table_create
    linkageType: ''
    returnType: int
    signature: "int lang_filter_stopwords_filter(struct lang_filter *filter, const
      char **token,\n\t\t\t     const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:31,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:36,1
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:37,1
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:38,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:40,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:41,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:42,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:43,1
    - Dst: str_printfa
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:47,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:50,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:52,1
    - Dst: client_get_session_id
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:54,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:59,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:60,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:62,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:63,1
    - Dst: base64_encode
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:64,1
    - Dst: str_data
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:64,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:64,1
    - Dst: e_info
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:66,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:66,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:67,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:69,1
    - Dst: str_data
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:69,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:69,1
    - Dst: str_truncate
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:75,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:79,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:80,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:81,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:82,1
    - Dst: str_data
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:82,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:82,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:86,1
    - Dst: i_zero
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:87,1
    - Dst: login_proxy_get_host
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:94,1
    - Dst: login_proxy_get_port
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:95,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:97,1
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:98,1
    - Dst: str_printfa
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:100,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:101,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:103,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:106,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:107,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:112,1
    - Dst: base64_encode
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:114,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:115,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:116,1
    - Dst: str_data
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:116,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:116,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 59
    argCount: 2
    argNames:
    - client
    - output
    argTypes:
    - struct pop3_client*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 121
    functionName: proxy_send_login
    functionSourceFile: /src/dovecot/src/pop3-login/pop3-proxy.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - str_len
    - t_strdup_printf
    - str_begins_icase
    - str_append_tabescaped
    - login_proxy_get_event
    - connection_is_valid_dns_name
    - t_str_new
    - login_proxy_get_host
    - str_append_c
    - o_stream_nsend
    - net_ip2addr
    - i_zero
    - str_data
    - client_get_session_id
    - base64_encode
    - login_proxy_get_port
    - i_assert
    - e_info
    - login_proxy_failed
    - dsasl_client_mech_get_name
    - dsasl_client_new
    - str_truncate
    - str_append
    - dsasl_client_output
    linkageType: ''
    returnType: int
    signature: int proxy_send_login(struct pop3_client *client, struct ostream *output)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:129,1
    - Dst: base64_decode
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:130,1
    - Dst: strlen
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:130,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:131,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:133,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:134,1
    - Dst: login_proxy_sasl_step
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:138,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:140,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:141,1
    - Dst: str_data
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:141,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - client
    - output
    - line
    argTypes:
    - struct client*
    - struct ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 123
    functionDepth: 4
    functionLinenumber: 123
    functionLinenumberEnd: 143
    functionName: pop3_proxy_continue_sasl_auth
    functionSourceFile: /src/dovecot/src/pop3-login/pop3-proxy.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - login_proxy_failed
    - base64_decode
    - str_data
    - str_len
    - login_proxy_sasl_step
    - strlen
    - t_strdup_printf
    - login_proxy_get_event
    - o_stream_nsend
    - str_append
    linkageType: ''
    returnType: int
    signature: "int pop3_proxy_continue_sasl_auth(struct client *client, struct ostream
      *output,\n\t\t\t      const char *line)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:153,1
    - Dst: i_zero
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:156,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:157,1
    - Dst: strlen
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:159,1
    - Dst: uri_parse_host_authority
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:162,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:163,1
    - Dst: e_debug
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:164,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:164,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:166,1
    - Dst: e_debug
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:171,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:171,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:174,1
    - Dst: e_debug
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:178,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:178,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:181,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:182,1
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:186,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:188,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:189,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:191,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:191,1
    - Dst: str_printfa
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:193,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:193,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:195,1
    - Dst: str_printfa
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:197,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:199,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - client
    - resp
    - line_r
    argTypes:
    - struct client*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 201
    functionName: pop3_proxy_parse_referral
    functionSourceFile: /src/dovecot/src/pop3-login/pop3-proxy.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - str_printfa
    - str_begins_with
    - uri_parse_host_authority
    - uri_data_decode
    - str_append_c
    - e_debug
    - strlen
    - str_sanitize
    - pool_datastack_create
    - login_proxy_get_event
    - net_ip2addr
    - str_append
    - uri_char_sanitize
    linkageType: ''
    returnType: bool
    signature: "bool pop3_proxy_parse_referral(struct client *client, const char *resp,\n\t\t\t
      \ const char **line_r)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:210,1
    - Dst: login_proxy_get_server_ostream
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:212,1
    - Dst: str_begins
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:216,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:217,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:218,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:219,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:220,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:225,1
    - Dst: login_proxy_get_ssl_flags
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:227,1
    - Dst: proxy_send_login
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:229,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:232,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:237,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:238,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:239,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:240,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:241,1
    - Dst: login_proxy_starttls
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:245,1
    - Dst: login_proxy_get_server_ostream
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:248,1
    - Dst: proxy_send_login
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:249,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:253,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:254,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:255,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:258,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:259,1
    - Dst: i_assert
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:267,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:268,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:272,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:272,1
    - Dst: str_begins
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:277,1
    - Dst: pop3_proxy_continue_sasl_auth
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:280,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:285,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:289,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:290,1
    - Dst: client_proxy_finish_destroy_client
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:292,1
    - Dst: i_unreached
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:295,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:315,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:316,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:318,1
    - Dst: pop3_proxy_parse_referral
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:322,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:325,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:327,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:327,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:331,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:332,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 76
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 203
    functionDepth: 5
    functionLinenumber: 203
    functionLinenumberEnd: 335
    functionName: pop3_proxy_parse_line
    functionSourceFile: /src/dovecot/src/pop3-login/pop3-proxy.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - str_sanitize
    - login_proxy_get_event
    - pop3_proxy_continue_sasl_auth
    - i_unreached
    - login_proxy_starttls
    - proxy_send_login
    - login_proxy_get_ssl_flags
    - pop3_proxy_parse_referral
    - client_send_raw
    - client_send_reply
    - o_stream_nsend_str
    - i_assert
    - client_proxy_finish_destroy_client
    - login_proxy_failed
    - str_begins_with
    - str_begins
    - login_proxy_get_server_ostream
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int pop3_proxy_parse_line(struct client *client, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 342
    functionName: pop3_proxy_reset
    functionSourceFile: /src/dovecot/src/pop3-login/pop3-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pop3_proxy_reset(struct client *client)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:355,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:361,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:366,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - client
    - type
    - reason
    argTypes:
    - struct client*
    - enum login_proxy_failure_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 373
    functionName: pop3_proxy_send_failure_reply
    functionSourceFile: /src/dovecot/src/pop3-login/pop3-proxy.c
    functionUses: 0
    functionsReached:
    - client_send_reply
    linkageType: ''
    returnType: void
    signature: "void pop3_proxy_send_failure_reply(struct client *client,\n\t\t\t
      \     enum login_proxy_failure_type type,\n\t\t\t      const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pop3_proxy_send_failure_reply
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:380,1
    - Dst: client_common_proxy_failed
      Src: /src/dovecot/src/pop3-login/pop3-proxy.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - client
    - type
    - reason
    - reconnecting
    argTypes:
    - struct client*
    - enum login_proxy_failure_type
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 375
    functionDepth: 7
    functionLinenumber: 375
    functionLinenumberEnd: 382
    functionName: pop3_proxy_failed
    functionSourceFile: /src/dovecot/src/pop3-login/pop3-proxy.c
    functionUses: 0
    functionsReached:
    - client_common_proxy_failed
    - pop3_proxy_send_failure_reply
    linkageType: ''
    returnType: void
    signature: "void pop3_proxy_failed(struct client *client,\n\t\t       enum login_proxy_failure_type
      type,\n\t\t       const char *reason, bool reconnecting)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 389
    functionName: pop3_proxy_get_state
    functionSourceFile: /src/dovecot/src/pop3-login/pop3-proxy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pop3_proxy_get_state(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_cmd_starttls
      Src: /src/dovecot/src/pop3-login/client.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 5
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: cmd_stls
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - client_cmd_starttls
    linkageType: ''
    returnType: bool
    signature: bool cmd_stls(struct pop3_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:34,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3-login/client.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: cmd_quit
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_send_reply
    linkageType: ''
    returnType: bool
    signature: bool cmd_quit(struct pop3_client *client)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:46,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/pop3-login/client.c:50,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:51,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/pop3-login/client.c:52,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:54,1
    - Dst: net_str2port
      Src: /src/dovecot/src/pop3-login/client.c:55,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:59,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/pop3-login/client.c:60,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:62,1
    - Dst: net_str2port
      Src: /src/dovecot/src/pop3-login/client.c:63,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:67,1
    - Dst: strlen
      Src: /src/dovecot/src/pop3-login/client.c:68,1
    - Dst: p_strdup
      Src: /src/dovecot/src/pop3-login/client.c:70,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:72,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/pop3-login/client.c:73,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:75,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/pop3-login/client.c:78,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:79,1
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/pop3-login/client.c:80,1
    - Dst: p_strdup
      Src: /src/dovecot/src/pop3-login/client.c:84,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/pop3-login/client.c:86,1
    - Dst: client_forward_decode_base64
      Src: /src/dovecot/src/pop3-login/client.c:87,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:92,1
    - Dst: client_addresses_changed
      Src: /src/dovecot/src/pop3-login/client.c:99,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:100,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3-login/client.c:103,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:107,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 59
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct pop3_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 109
    functionName: cmd_xclient
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - net_addr2ip
    - str_begins_with
    - client_addresses_changed
    - client_destroy
    - strlen
    - t_strsplit
    - str_begins_icase
    - client_forward_decode_base64
    - client_send_reply
    - str_to_uint
    - connection_is_valid_dns_name
    - net_str2port
    linkageType: ''
    returnType: bool
    signature: bool cmd_xclient(struct pop3_client *client, const char *args)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:114,1
    - Dst: cmd_capa
      Src: /src/dovecot/src/pop3-login/client.c:115,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:116,1
    - Dst: cmd_user
      Src: /src/dovecot/src/pop3-login/client.c:117,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:118,1
    - Dst: cmd_pass
      Src: /src/dovecot/src/pop3-login/client.c:119,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:120,1
    - Dst: cmd_apop
      Src: /src/dovecot/src/pop3-login/client.c:121,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:122,1
    - Dst: cmd_stls
      Src: /src/dovecot/src/pop3-login/client.c:123,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:124,1
    - Dst: cmd_quit
      Src: /src/dovecot/src/pop3-login/client.c:125,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:126,1
    - Dst: cmd_xclient
      Src: /src/dovecot/src/pop3-login/client.c:127,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:128,1
    - Dst: cmd_xclient
      Src: /src/dovecot/src/pop3-login/client.c:130,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/pop3-login/client.c:130,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:133,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - client
    - cmd
    - args
    argTypes:
    - struct pop3_client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 111
    functionDepth: 6
    functionLinenumber: 111
    functionLinenumberEnd: 136
    functionName: client_command_execute
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 2
    functionsReached:
    - strcmp
    - cmd_quit
    - cmd_xclient
    - cmd_user
    - cmd_stls
    - client_send_reply
    - cmd_apop
    - t_strconcat
    - cmd_capa
    - cmd_pass
    linkageType: ''
    returnType: bool
    signature: "bool client_command_execute(struct pop3_client *client, const char
      *cmd,\n\t\t\t\t   const char *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/pop3-login/client.c:140,1
    - Dst: client_read
      Src: /src/dovecot/src/pop3-login/client.c:142,1
    - Dst: client_ref
      Src: /src/dovecot/src/pop3-login/client.c:145,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/pop3-login/client.c:147,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/pop3-login/client.c:151,1
    - Dst: struct client*::v::input_next_cmd
      Src: /src/dovecot/src/pop3-login/client.c:152,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/pop3-login/client.c:156,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/pop3-login/client.c:159,1
    - Dst: client_unref
      Src: /src/dovecot/src/pop3-login/client.c:160,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 138
    functionDepth: 3
    functionLinenumber: 138
    functionLinenumberEnd: 161
    functionName: pop3_client_input
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - client_read
    - o_stream_uncork
    - struct client*::v::input_next_cmd
    - o_stream_cork
    - client_ref
    - auth_client_is_connected
    - client_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: void pop3_client_input(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/client.c:167,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/pop3-login/client.c:168,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3-login/client.c:176,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/pop3-login/client.c:178,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3-login/client.c:181,1
    - Dst: i_toupper
      Src: /src/dovecot/src/pop3-login/client.c:181,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - client
    - cmd_r
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 184
    functionName: client_read_cmd_name
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - i_toupper
    - i_stream_skip
    - i_stream_read_more
    linkageType: ''
    returnType: bool
    signature: bool client_read_cmd_name(struct client *client, const char **cmd_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: client_read_cmd_name
      Src: /src/dovecot/src/pop3-login/client.c:192,1
    - Dst: i_strdup
      Src: /src/dovecot/src/pop3-login/client.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/pop3-login/client.c:197,1
    - Dst: cmd_auth
      Src: /src/dovecot/src/pop3-login/client.c:198,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3-login/client.c:204,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/pop3-login/client.c:208,1
    - Dst: client_command_execute
      Src: /src/dovecot/src/pop3-login/client.c:211,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:214,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3-login/client.c:216,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3-login/client.c:220,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 222
    functionName: pop3_client_input_next_cmd
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - client_read_cmd_name
    - strcmp
    - cmd_auth
    - client_destroy
    - i_stream_next_line
    - i_strdup
    - client_command_execute
    - client_send_reply
    - i_free
    linkageType: ''
    returnType: bool
    signature: bool pop3_client_input_next_cmd(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/pop3-login/client.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 230
    functionName: pop3_client_alloc
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct client
    signature: struct client *pop3_client_alloc(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: pop3_client_create
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pop3_client_create(struct client *client ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/pop3-login/client.c:241,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/pop3-login/client.c:242,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/pop3-login/client.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 244
    functionName: pop3_client_destroy
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - i_free_and_null
    linkageType: ''
    returnType: void
    signature: void pop3_client_destroy(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/pop3-login/client.c:249,1
    - Dst: sasl_server_find_available_mech
      Src: /src/dovecot/src/pop3-login/client.c:252,1
    - Dst: auth_client_get_connect_id
      Src: /src/dovecot/src/pop3-login/client.c:258,1
    - Dst: random_fill
      Src: /src/dovecot/src/pop3-login/client.c:261,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/pop3-login/client.c:262,1
    - Dst: base64_encode
      Src: /src/dovecot/src/pop3-login/client.c:263,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/pop3-login/client.c:264,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/pop3-login/client.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 246
    functionDepth: 3
    functionLinenumber: 246
    functionLinenumberEnd: 271
    functionName: get_apop_challenge
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - random_fill
    - auth_client_get_connect_id
    - sasl_server_find_available_mech
    - base64_encode
    - i_strdup_printf
    - buffer_create_from_data
    - buffer_append_c
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: char
    signature: char *get_apop_challenge(struct pop3_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/pop3-login/client.c:278,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/pop3-login/client.c:279,1
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/client.c:281,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client.c:284,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client.c:286,1
    - Dst: get_apop_challenge
      Src: /src/dovecot/src/pop3-login/client.c:288,1
    - Dst: str_printfa
      Src: /src/dovecot/src/pop3-login/client.c:290,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:291,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3-login/client.c:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 273
    functionDepth: 4
    functionLinenumber: 273
    functionLinenumberEnd: 294
    functionName: pop3_client_notify_auth_ready
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - get_apop_challenge
    - io_add_istream
    - client_send_reply
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void pop3_client_notify_auth_ready(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:301,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - client
    - success
    - text
    argTypes:
    - struct client*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 304
    functionName: pop3_client_notify_starttls
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - client_send_reply
    linkageType: ''
    returnType: void
    signature: "void pop3_client_notify_starttls(struct client *client,\n\t\t\t    bool
      success, const char *text)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 308
    functionName: pop3_client_starttls
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pop3_client_starttls(struct client *client ATTR_UNUSED)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/client.c:336,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client.c:338,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3-login/client.c:339,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client.c:340,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client.c:341,1
    - Dst: client_send_raw_data
      Src: /src/dovecot/src/pop3-login/client.c:343,1
    - Dst: str_data
      Src: /src/dovecot/src/pop3-login/client.c:343,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/client.c:343,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - client
    - reply
    - text
    argTypes:
    - struct client*
    - enum pop3_cmd_reply
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 344
    functionName: client_send_reply
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 22
    functionsReached:
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - client_send_raw_data
    - str_append
    linkageType: ''
    returnType: void
    signature: "void client_send_reply(struct client *client, enum pop3_cmd_reply
      reply,\n\t\t       const char *text)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:353,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - client
    - reason
    - text
    argTypes:
    - struct client*
    - enum client_disconnect_reason
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 356
    functionName: pop3_client_notify_disconnect
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - client_send_reply
    linkageType: ''
    returnType: void
    signature: "void pop3_client_notify_disconnect(struct client *client,\n\t\t\t
      \     enum client_disconnect_reason reason,\n\t\t\t      const char *text)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 361
    functionName: pop3_login_die
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pop3_login_die(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 365
    functionName: pop3_login_preinit
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pop3_login_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/pop3-login/client.c:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 371
    functionName: pop3_login_init
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - master_service_set_die_callback
    linkageType: ''
    returnType: void
    signature: void pop3_login_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clients_destroy_all
      Src: /src/dovecot/src/pop3-login/client.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: pop3_login_deinit
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 0
    functionsReached:
    - clients_destroy_all
    linkageType: ''
    returnType: void
    signature: void pop3_login_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_binary_run
      Src: /src/dovecot/src/pop3-login/client.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 7
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: main
    functionSourceFile: /src/dovecot/src/pop3-login/client.c
    functionUses: 1
    functionsReached:
    - login_binary_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:30,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:31,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:32,1
    - Dst: client_is_tls_enabled
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:34,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:37,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:40,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:42,1
    - Dst: sasl_server_get_advertised_mechs
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:43,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:45,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:46,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:48,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:50,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:50,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - client
    - ATTR_UNUSED
    argTypes:
    - struct pop3_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 52
    functionName: cmd_capa
    functionSourceFile: /src/dovecot/src/pop3-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - sasl_server_get_advertised_mechs
    - str_c
    - t_str_new
    - str_append_c
    - client_send_raw
    - client_is_tls_enabled
    - str_append
    linkageType: ''
    returnType: bool
    signature: bool cmd_capa(struct pop3_client *client, const char *args ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:58,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:60,1
    - Dst: uri_append_userinfo
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:67,1
    - Dst: uri_append_host
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:68,1
    - Dst: uri_append_port
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:70,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:72,1
    - Dst: client_send_raw_data
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:74,1
    - Dst: str_data
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:74,1
    - Dst: str_len
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - client
    - reply
    argTypes:
    - struct client*
    - struct client_auth_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 75
    functionName: pop3_client_send_referral
    functionSourceFile: /src/dovecot/src/pop3-login/client-authenticate.c
    functionUses: 0
    functionsReached:
    - uri_append_userinfo
    - t_str_new
    - str_data
    - str_len
    - client_send_raw_data
    - uri_append_host
    - str_append
    - uri_append_port
    linkageType: ''
    returnType: void
    signature: "void pop3_client_send_referral(struct client *client,\n\t\t\t  const
      struct client_auth_reply *reply)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: pop3_client_send_referral
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:87,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:90,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:93,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:104,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:107,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - client
    - result
    - reply
    - text
    argTypes:
    - struct client*
    - enum client_auth_result
    - struct client_auth_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 110
    functionName: pop3_client_auth_result
    functionSourceFile: /src/dovecot/src/pop3-login/client-authenticate.c
    functionUses: 0
    functionsReached:
    - client_send_reply
    - pop3_client_send_referral
    linkageType: ''
    returnType: void
    signature: "void pop3_client_auth_result(struct client *client,\n\t\t\t     enum
      client_auth_result result,\n\t\t\t     const struct client_auth_reply *reply,\n\t\t\t
      \    const char *text)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:123,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:136,1
    - Dst: sasl_server_get_advertised_mechs
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:137,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:139,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:140,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:142,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:143,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:146,1
    - Dst: i_strndup
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:147,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:151,1
    - Dst: client_auth_read_line
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:155,1
    - Dst: t_strdup
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:160,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:160,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:171,1
    - Dst: client_auth_begin
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:172,1
    - Dst: t_strdup
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:172,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 1
    argNames:
    - pop3_client
    argTypes:
    - struct pop3_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 112
    functionDepth: 6
    functionLinenumber: 112
    functionLinenumberEnd: 173
    functionName: cmd_auth
    functionSourceFile: /src/dovecot/src/pop3-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - sasl_server_get_advertised_mechs
    - str_c
    - client_auth_begin
    - i_stream_get_data
    - i_strndup
    - i_stream_read_next_line
    - client_send_raw
    - i_stream_skip
    - client_auth_read_line
    - t_strdup
    - i_free
    linkageType: ''
    returnType: int
    signature: int cmd_auth(struct pop3_client *pop3_client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_check_plaintext_auth
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:177,1
    - Dst: i_strdup
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:179,1
    - Dst: i_free
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:183,1
    - Dst: i_strdup
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:184,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pop3_client
    - args
    argTypes:
    - struct pop3_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 4
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: cmd_user
    functionSourceFile: /src/dovecot/src/pop3-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - i_free
    - client_check_plaintext_auth
    - client_send_raw
    linkageType: ''
    returnType: bool
    signature: bool cmd_user(struct pop3_client *pop3_client, const char *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_check_plaintext_auth
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:198,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:201,1
    - Dst: t_str_new
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:207,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:208,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:209,1
    - Dst: str_append_c
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:210,1
    - Dst: str_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:211,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:213,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:215,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:215,1
    - Dst: base64_encode
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:216,1
    - Dst: client_auth_begin
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:218,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - pop3_client
    - args
    argTypes:
    - struct pop3_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 190
    functionDepth: 6
    functionLinenumber: 190
    functionLinenumberEnd: 220
    functionName: cmd_pass
    functionSourceFile: /src/dovecot/src/pop3-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - client_check_plaintext_auth
    - client_auth_begin
    - i_free_and_null
    - t_buffer_create
    - base64_encode
    - client_send_reply
    - str_append
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: bool
    signature: bool cmd_pass(struct pop3_client *pop3_client, const char *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:231,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:232,1
    - Dst: strchr
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:238,1
    - Dst: strlen
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:239,1
    - Dst: e_info
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:241,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:242,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:248,1
    - Dst: buffer_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:249,1
    - Dst: strlen
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:250,1
    - Dst: buffer_append
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:251,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:252,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:254,1
    - Dst: e_info
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:256,1
    - Dst: client_send_reply
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:259,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:264,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:264,1
    - Dst: base64_encode
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:265,1
    - Dst: auth_client_get_connect_id
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:267,1
    - Dst: client_destroy
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:273,1
    - Dst: client_auth_begin_private
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:278,1
    - Dst: str_c
      Src: /src/dovecot/src/pop3-login/client-authenticate.c:279,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - pop3_client
    - args
    argTypes:
    - struct pop3_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 222
    functionDepth: 6
    functionLinenumber: 222
    functionLinenumberEnd: 281
    functionName: cmd_apop
    functionSourceFile: /src/dovecot/src/pop3-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - strchr
    - e_info
    - buffer_append
    - str_c
    - auth_client_get_connect_id
    - hex_to_binary
    - strlen
    - client_destroy
    - t_buffer_create
    - base64_encode
    - client_send_reply
    - client_auth_begin_private
    - buffer_append_c
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: bool
    signature: bool cmd_apop(struct pop3_client *pop3_client, const char *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:49,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:50,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:52,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:52,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:54,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:55,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:56,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 59
    functionName: dlua_check_http_request
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_istable
    - lua_pop
    - lua_pushliteral
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct http_client_request
    signature: 'struct http_client_request *

      dlua_check_http_request(lua_State *L, int arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:63,1
    - Dst: http_client_request_unref
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: dlua_http_request_gc
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - http_client_request_unref
    - lua_touserdata
    linkageType: ''
    returnType: int
    signature: int dlua_http_request_gc(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:70,1
    - Dst: dlua_check_http_request
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:72,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:74,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:75,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: dlua_http_request_add_header
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - dlua_check_http_request
    - http_client_request_add_header
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_http_request_add_header(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:82,1
    - Dst: dlua_check_http_request
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:84,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:86,1
    - Dst: http_client_request_remove_header
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 89
    functionName: dlua_http_request_remove_header
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - http_client_request_remove_header
    - dlua_check_http_request
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_http_request_remove_header(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:93,1
    - Dst: dlua_check_http_request
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:95,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:98,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:100,1
    - Dst: lua_toboolean
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:101,1
    - Dst: i_stream_create_copy_from_data
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:102,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:103,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:104,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 107
    functionName: dlua_http_request_set_payload
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - strlen
    - http_client_request_set_payload
    - lua_toboolean
    - luaL_checkstring
    - i_stream_create_copy_from_data
    - dlua_check_http_request
    - DLUA_REQUIRE_ARGS_IN
    - i_stream_unref
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: int dlua_http_request_set_payload(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:111,1
    - Dst: dlua_check_http_request
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:113,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:117,1
    - Dst: lua_getmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:118,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:119,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:120,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:121,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:122,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:124,1
    - Dst: http_client_wait
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 127
    functionName: dlua_http_request_submit
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_pop
    - http_client_wait
    - DLUA_REQUIRE_ARGS
    - lua_pushnil
    - lua_getfield
    - dlua_check_http_request
    - luaL_error
    - lua_getmetatable
    - http_client_request_submit
    - lua_setfield
    linkageType: ''
    returnType: int
    signature: int dlua_http_request_submit(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:131,1
    - Dst: dlua_check_http_request
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:133,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:134,1
    - Dst: http_client_request_set_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 139
    functionName: dlua_http_request_set_event
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_event
    - dlua_check_http_request
    - DLUA_REQUIRE_ARGS
    - dlua_check_event
    linkageType: ''
    returnType: int
    signature: int dlua_http_request_set_event(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:143,1
    - Dst: dlua_check_http_request
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:145,1
    - Dst: dlua_push_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 149
    functionName: dlua_http_request_get_event
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - dlua_check_http_request
    - dlua_push_event
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int dlua_http_request_get_event(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:163,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:164,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:165,1
    - Dst: lua_newuserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:168,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:170,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:171,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:172,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:173,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:174,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - L
    - req
    argTypes:
    - lua_State*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 177
    functionName: dlua_push_http_request
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_createtable
    - lua_setfield
    - lua_newuserdata
    - luaL_setfuncs
    - lua_setmetatable
    - lua_pushcfunction
    - luaL_setmetatable
    - luaL_checkstack
    linkageType: ''
    returnType: void
    signature: void dlua_push_http_request(lua_State *L, struct http_client_request
      *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:182,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:183,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:185,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:185,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:187,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:188,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:189,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 192
    functionName: dlua_check_http_client
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_istable
    - lua_pop
    - lua_pushliteral
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct http_client
    signature: struct http_client *dlua_check_http_client(lua_State *L, int arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:196,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:197,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:199,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:200,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:201,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 204
    functionName: dlua_http_client_gc
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - settings_instance_free
    - http_client_deinit
    - event_get_ptr
    - event_get_parent
    - lua_touserdata
    - i_assert
    linkageType: ''
    returnType: int
    signature: int dlua_http_client_gc(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:207,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:208,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: dlua_http_resp_gc
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - array_free
    - lua_touserdata
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int dlua_http_resp_gc(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:215,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:216,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:218,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:218,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:220,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:221,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:222,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: dlua_check_http_response
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_istable
    - lua_pop
    - lua_pushliteral
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct dlua_http_response
    signature: struct dlua_http_response *dlua_check_http_response(lua_State *L, int
      arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:229,1
    - Dst: dlua_check_http_response
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:231,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 234
    functionName: dlua_http_response_get_status
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_pushinteger
    - DLUA_REQUIRE_ARGS
    - dlua_check_http_response
    linkageType: ''
    returnType: int
    signature: int dlua_http_response_get_status(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:238,1
    - Dst: dlua_check_http_response
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:240,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: dlua_http_response_get_payload
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_pushlstring
    - DLUA_REQUIRE_ARGS
    - dlua_check_http_response
    linkageType: ''
    returnType: int
    signature: int dlua_http_response_get_payload(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:247,1
    - Dst: dlua_check_http_response
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:249,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:250,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:254,1
    - Dst: http_header_field_is
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:255,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 263
    functionName: dlua_http_response_get_header
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - http_header_field_is
    - lua_pushstring
    - array_foreach
    - luaL_checkstring
    - DLUA_REQUIRE_ARGS
    - dlua_check_http_response
    linkageType: ''
    returnType: int
    signature: int dlua_http_response_get_header(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:267,1
    - Dst: dlua_check_http_response
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:269,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 272
    functionName: dlua_http_response_get_reason
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - DLUA_REQUIRE_ARGS
    - dlua_check_http_response
    linkageType: ''
    returnType: int
    signature: int dlua_http_response_get_reason(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:285,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:286,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:287,1
    - Dst: lua_newuserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:290,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:292,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:293,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:294,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:295,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:296,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - L
    - resp
    argTypes:
    - lua_State*
    - struct dlua_http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 299
    functionName: dlua_push_http_response
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_createtable
    - lua_setfield
    - lua_newuserdata
    - luaL_setfuncs
    - lua_setmetatable
    - lua_pushcfunction
    - luaL_setmetatable
    - luaL_checkstack
    linkageType: ''
    returnType: void
    signature: void dlua_push_http_response(lua_State *L, const struct dlua_http_response
      *resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:308,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:309,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:310,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:314,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:316,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:319,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:323,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:324,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:326,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:327,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:328,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dlua_http_response_payload_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 330
    functionName: dlua_http_response_input_payload
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - i_free
    - e_debug
    - io_remove
    - i_stream_skip
    - i_stream_get_error
    - e_error
    - str_append_data
    - i_stream_read_more
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void dlua_http_response_input_payload(struct dlua_http_response_payload_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:336,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:338,1
    - Dst: dlua_http_response_input_payload
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - response
    - dlua_resp
    argTypes:
    - struct http_response*
    - struct dlua_http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 344
    functionName: dlua_http_response_read_payload
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - dlua_http_response_input_payload
    - i_new
    - io_add_istream
    linkageType: ''
    returnType: void
    signature: "void dlua_http_response_read_payload(const struct http_response *response,\n\t\t\t\t\t
      \  struct dlua_http_response *dlua_resp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:349,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:353,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:354,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:360,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:361,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:364,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:366,1
    - Dst: http_response_header_get_fields
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:372,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:375,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:376,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:378,1
    - Dst: dlua_http_response_read_payload
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:384,1
    - Dst: dlua_push_http_response
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 2
    argNames:
    - response
    - L
    argTypes:
    - struct http_response*
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 346
    functionDepth: 3
    functionLinenumber: 346
    functionLinenumberEnd: 388
    functionName: dlua_http_request_callback
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - dlua_http_response_read_payload
    - p_new
    - p_array_init
    - array_append_space
    - http_response_header_get_fields
    - dlua_push_http_response
    - dlua_script_from_state
    - str_new
    linkageType: ''
    returnType: void
    signature: void dlua_http_request_callback(const struct http_response *response,
      lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:375,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:376,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 379
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 59
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void array_foreach(hdrs, hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:392,1
    - Dst: dlua_check_http_client
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:398,1
    - Dst: luaL_checktype
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:400,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:402,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:403,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:404,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:406,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:407,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:408,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:409,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:410,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:411,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:413,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:413,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:415,1
    - Dst: http_client_request_url
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:419,1
    - Dst: dlua_push_http_request
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:422,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 390
    functionDepth: 2
    functionLinenumber: 390
    functionLinenumberEnd: 424
    functionName: dlua_http_request_new
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - lua_isnil
    - lua_pop
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - lua_getfield
    - pool_datastack_create
    - luaL_checktype
    - luaL_error
    - http_client_request_url
    - dlua_push_http_request
    - dlua_check_http_client
    linkageType: ''
    returnType: int
    signature: int dlua_http_request_new(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:433,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:434,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:435,1
    - Dst: lua_newuserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:438,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:440,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:441,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:442,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:443,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:444,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - L
    - client
    argTypes:
    - lua_State*
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 447
    functionName: dlua_push_http_client
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_createtable
    - lua_setfield
    - lua_newuserdata
    - luaL_setfuncs
    - lua_setmetatable
    - lua_pushcfunction
    - luaL_setmetatable
    - luaL_checkstack
    linkageType: ''
    returnType: void
    signature: void dlua_push_http_client(lua_State *L, struct http_client *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:452,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:453,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:457,1
    - Dst: lua_next
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:460,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:461,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:462,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:466,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:467,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:470,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:471,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:472,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:473,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:474,1
    - Dst: setting_parser_info_find_key
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:475,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:476,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:478,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:480,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 3
    argNames:
    - L
    - instance
    - error_r
    argTypes:
    - lua_State*
    - struct settings_instance*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 449
    functionDepth: 3
    functionLinenumber: 449
    functionLinenumberEnd: 487
    functionName: parse_client_settings
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - strcmp
    - setting_parser_info_find_key
    - lua_istable
    - lua_next
    - t_strdup_printf
    - lua_pop
    - lua_pushnil
    - lua_tostring
    - settings_override
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int parse_client_settings(lua_State *L, struct settings_instance *instance,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:491,1
    - Dst: luaL_checktype
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:492,1
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:494,1
    - Dst: dlua_table_get_by_str
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:497,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:498,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:499,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:503,1
    - Dst: settings_root_find
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:505,1
    - Dst: settings_instance_new
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:506,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:509,1
    - Dst: parse_client_settings
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:510,1
    - Dst: http_client_init_auto
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:511,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:514,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:517,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:523,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:526,1
    - Dst: dlua_push_http_client
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:529,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 489
    functionDepth: 4
    functionLinenumber: 489
    functionLinenumberEnd: 531
    functionName: dlua_http_client_new
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - settings_instance_free
    - event_create
    - event_unref
    - dlua_push_http_client
    - dlua_check_event
    - settings_instance_new
    - dlua_table_get_by_str
    - str_begins
    - lua_pop
    - DLUA_REQUIRE_ARGS
    - settings_root_find
    - event_set_ptr
    - luaL_checktype
    - dlua_script_from_state
    - http_client_init_auto
    - luaL_error
    - parse_client_settings
    linkageType: ''
    returnType: int
    signature: int dlua_http_client_new(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:540,1
    - Dst: dlua_get_dovecot
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:545,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:548,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:549,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:550,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot-http.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 552
    functionName: dlua_dovecot_http_register
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    functionUses: 0
    functionsReached:
    - lua_pop
    - luaL_setfuncs
    - dlua_get_dovecot
    - i_assert
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_dovecot_http_register(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:14,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:17,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:19,1
    - Dst: lua_pushcclosure
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:20,1
    - Dst: lua_settable
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:21,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:23,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - L
    - l
    - nup
    argTypes:
    - lua_State*
    - luaL_Reg*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 24
    functionName: luaL_setfuncs
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.c
    functionUses: 4
    functionsReached:
    - lua_pushcclosure
    - lua_pushstring
    - lua_pushvalue
    - lua_pop
    - lua_settable
    - luaL_checkstack
    linkageType: ''
    returnType: void
    signature: void luaL_setfuncs(lua_State *L, const luaL_Reg *l, int nup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:30,1
    - Dst: luaL_getmetatable
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:31,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - L
    - tname
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: luaL_setmetatable
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.c
    functionUses: 3
    functionsReached:
    - lua_setmetatable
    - luaL_getmetatable
    - luaL_checkstack
    linkageType: ''
    returnType: void
    signature: void luaL_setmetatable(lua_State *L, const char *tname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:49,1
    - Dst: lua_tointegerx
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 55
    functionName: lua_isinteger
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_tointegerx
    linkageType: ''
    returnType: int
    signature: int lua_isinteger(lua_State *L, int idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:62,1
    - Dst: lua_insert
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:64,1
    - Dst: lua_settable
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - L
    - index
    - n
    argTypes:
    - lua_State*
    - int
    - lua_Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 72
    functionName: lua_seti
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.c
    functionUses: 0
    functionsReached:
    - lua_settable
    - lua_insert
    - lua_pushinteger
    linkageType: ''
    returnType: void
    signature: void lua_seti(lua_State *L, int index, lua_Integer n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: COMPILE_ERROR_IF_TRUE
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:99,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:101,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:104,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:106,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:110,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:119,1
    - Dst: lua_tonumber
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:129,1
    - Dst: lua_number2integer
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:132,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - L
    - idx
    - isnum_r
    argTypes:
    - lua_State*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 144
    functionName: lua_tointegerx
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.c
    functionUses: 1
    functionsReached:
    - lua_type
    - lua_tonumber
    - lua_number2integer
    - str_to_intmax
    - COMPILE_ERROR_IF_TRUE
    - str_begins_icase
    - str_to_uintmax_hex
    - lua_tostring
    linkageType: ''
    returnType: lua_Integer
    signature: lua_Integer lua_tointegerx(lua_State *L, int idx, int *isnum_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_resume
      Src: /src/dovecot/src/lib-lua/dlua-compat.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - L
    - from
    - nargs
    - nresults
    argTypes:
    - lua_State*
    - lua_State*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 153
    functionName: lua_resume_compat
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.c
    functionUses: 0
    functionsReached:
    - lua_resume
    linkageType: ''
    returnType: int
    signature: int lua_resume_compat(lua_State *L, lua_State *from, int nargs, int
      *nresults)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:23,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:23,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:24,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - L
    - ioloop
    - res
    argTypes:
    - lua_State*
    - struct ioloop*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 27
    functionName: test_dns_finished
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - lua_tostring
    - io_loop_stop
    - lua_pop
    - i_error
    linkageType: ''
    returnType: void
    signature: void test_dns_finished(lua_State *L, struct ioloop *ioloop, int res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: test_dns_lua_init
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - io_loop_create
    linkageType: ''
    returnType: void
    signature: void test_dns_lua_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: test_dns_lua_deinit
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - io_loop_destroy
    linkageType: ''
    returnType: void
    signature: void test_dns_lua_deinit(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:50,1
    - Dst: dns_client_init
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:53,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:54,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:57,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:58,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:59,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:60,1
    - Dst: dlua_script_new_thread
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:62,1
    - Dst: dlua_push_dns_client
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:63,1
    - Dst: dlua_pcall_yieldable
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:64,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:66,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:67,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:68,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:68,1
    - Dst: dlua_script_close_thread
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:69,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:71,1
    - Dst: dns_client_deinit
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:72,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - luascript
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 39
    functionDepth: 4
    functionLinenumber: 39
    functionLinenumberEnd: 74
    functionName: test_dns_lua_common
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - settings_simple_deinit
    - dlua_script_close_thread
    - i_fatal
    - dlua_script_init
    - dlua_script_create_string
    - dns_client_deinit
    - dlua_pcall_yieldable
    - settings_simple_init
    - dlua_script_unref
    - dlua_script_new_thread
    - lua_gettop
    - i_assert
    - dlua_push_dns_client
    - io_loop_run
    - dns_client_init
    linkageType: ''
    returnType: void
    signature: void test_dns_lua_common(const char *luascript)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:78,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:81,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: test_dns_server_close
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - io_remove
    - i_assert
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_dns_server_close(struct istream *input)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:87,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:94,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:97,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:98,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:102,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:102,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:102,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:103,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:108,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 111
    functionName: test_dns_server_input_line
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_stream_get_fd
    - i_error
    - str_begins
    - write_full
    - strlen
    - i_stream_read_next_line
    linkageType: ''
    returnType: int
    signature: int test_dns_server_input_line(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_dns_server_input_line
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:117,1
    - Dst: test_dns_server_close
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: test_dns_server_input
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - test_dns_server_input_line
    - test_dns_server_close
    linkageType: ''
    returnType: void
    signature: void test_dns_server_input(struct istream *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:124,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:126,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:129,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:132,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:132,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:133,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:134,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:138,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:139,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:140,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - fd_listenp
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 143
    functionName: test_dns_server_listen
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - i_error
    - io_add_istream
    - write_full
    - strlen
    - i_close_fd
    - i_stream_create_fd_autoclose
    - net_accept
    - net_set_nonblock
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_dns_server_listen(int *fd_listenp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:158,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:160,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:161,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:163,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:166,1
    - Dst: test_dns_lua_common
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:169,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:171,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:172,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:173,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:174,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:175,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 145
    functionDepth: 5
    functionLinenumber: 145
    functionLinenumberEnd: 177
    functionName: test_dns_lua
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - net_listen_unix
    - io_add
    - io_remove
    - i_close_fd
    - i_fatal
    - i_unlink
    - test_end
    - i_unlink_if_exists
    - test_dns_lua_common
    - test_begin
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_dns_lua(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:188,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:189,1
    - Dst: test_dns_lua_common
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:190,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 179
    functionDepth: 5
    functionLinenumber: 179
    functionLinenumberEnd: 192
    functionName: test_dns_lua_error
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 0
    functionsReached:
    - test_dns_lua_common
    - test_end
    - i_unlink_if_exists
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_lua_error(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-lua/test-dns-lua.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 194
    functionDepth: 7
    functionLinenumber: 194
    functionLinenumberEnd: 204
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-lua/test-dns-lua.c
    functionUses: 1
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_getstack
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:29,1
    - Dst: lua_getinfo
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:30,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - L
    - arg
    - file_r
    - line_r
    argTypes:
    - lua_State*
    - int
    - char**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 42
    functionName: dlua_get_file_line
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_getstack
    - lua_getinfo
    - strrchr
    linkageType: ''
    returnType: void
    signature: "void dlua_get_file_line(lua_State *L, int arg, const char **file_r,\n\t\t\t
      \      unsigned int *line_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:47,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:48,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:50,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:50,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:52,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:53,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:54,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 57
    functionName: dlua_check_event_passthrough
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_istable
    - lua_pop
    - lua_pushliteral
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      dlua_check_event_passthrough(lua_State *L, int arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:62,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:63,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:64,1
    - Dst: lua_pushlightuserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:66,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - L
    - event
    argTypes:
    - lua_State*
    - struct event_passthrough*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 68
    functionName: dlua_push_event_passthrough
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushlightuserdata
    - lua_createtable
    - luaL_checkstack
    - luaL_setmetatable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void dlua_push_event_passthrough(lua_State *L,\n\t\t\t\t\tstruct event_passthrough
      *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:72,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:73,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:74,1
    - Dst: struct event_passthrough*::append_log_prefix
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:76,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 81
    functionName: dlua_event_pt_append_log_prefix
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - struct event_passthrough*::append_log_prefix
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_append_log_prefix(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:85,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:86,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:87,1
    - Dst: struct event_passthrough*::replace_log_prefix
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:89,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 94
    functionName: dlua_event_pt_replace_log_prefix
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::replace_log_prefix
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_replace_log_prefix(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:98,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:99,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:100,1
    - Dst: struct event_passthrough*::set_name
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:102,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 107
    functionName: dlua_event_pt_set_name
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::set_name
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_set_name(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:112,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:113,1
    - Dst: struct event_passthrough*::set_always_log_source
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:115,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: dlua_event_pt_set_always_log_source
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - struct event_passthrough*::set_always_log_source
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_set_always_log_source(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:124,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:125,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:126,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:127,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:129,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 134
    functionName: dlua_event_pt_add_str
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_add_str(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:138,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:139,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:140,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:141,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:143,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 148
    functionName: dlua_event_pt_add_int
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - luaL_checkinteger
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::add_int
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_add_int(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:152,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:153,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:154,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:156,1
    - Dst: struct event_passthrough*::add_timeval
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:161,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 166
    functionName: dlua_event_pt_add_timeval
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - luaL_checkinteger
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::add_timeval
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_add_timeval(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:170,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:171,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:172,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:173,1
    - Dst: struct event_passthrough*::inc_int
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:175,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 180
    functionName: dlua_event_pt_inc_int
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - struct event_passthrough*::inc_int
    - dlua_check_event_passthrough
    - lua_pushvalue
    - luaL_checkinteger
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_inc_int(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:184,1
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:185,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:186,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:187,1
    - Dst: dlua_event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:190,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:190,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 195
    functionName: dlua_event_pt_log_debug
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::event
    - dlua_script_from_state
    - dlua_event_log
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_log_debug(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:199,1
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:200,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:201,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:202,1
    - Dst: dlua_event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:205,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:205,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 210
    functionName: dlua_event_pt_log_info
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::event
    - dlua_script_from_state
    - dlua_event_log
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_log_info(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:214,1
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:215,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:216,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:217,1
    - Dst: dlua_event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:220,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:220,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 225
    functionName: dlua_event_pt_log_warning
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::event
    - dlua_script_from_state
    - dlua_event_log
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_log_warning(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:229,1
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:230,1
    - Dst: dlua_check_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:231,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:232,1
    - Dst: dlua_event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:235,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:235,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 240
    functionName: dlua_event_pt_log_error
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event_passthrough
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - struct event_passthrough*::event
    - dlua_script_from_state
    - dlua_event_log
    linkageType: ''
    returnType: int
    signature: int dlua_event_pt_log_error(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:260,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 263
    functionName: dlua_event_gc
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - event_unref
    - lua_touserdata
    linkageType: ''
    returnType: int
    signature: int dlua_event_gc(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:267,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:268,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:270,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:270,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:272,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:275,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:276,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 279
    functionName: dlua_check_event
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 2
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_istable
    - lua_pop
    - lua_pushliteral
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct event
    signature: struct event *dlua_check_event(lua_State *L, int arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:283,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:284,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:285,1
    - Dst: lua_newuserdata
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:288,1
    - Dst: event_ref
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:290,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:291,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:292,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:293,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:294,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - L
    - event
    argTypes:
    - lua_State*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 296
    functionName: dlua_push_event
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 1
    functionsReached:
    - lua_createtable
    - lua_setfield
    - event_ref
    - lua_newuserdata
    - lua_setmetatable
    - lua_pushcfunction
    - luaL_setmetatable
    - luaL_checkstack
    linkageType: ''
    returnType: void
    signature: void dlua_push_event(lua_State *L, struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - tv
    argTypes:
    - lua_State*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: dlua_push_timeval
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushinteger
    linkageType: ''
    returnType: void
    signature: void dlua_push_timeval(lua_State *L, const struct timeval *tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:306,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:307,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:308,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:310,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 315
    functionName: dlua_event_append_log_prefix
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - event_set_append_log_prefix
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_event_append_log_prefix(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:319,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:320,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:321,1
    - Dst: event_replace_log_prefix
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:323,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 328
    functionName: dlua_event_replace_log_prefix
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - event_replace_log_prefix
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_event_replace_log_prefix(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:332,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:333,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:334,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:336,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 341
    functionName: dlua_event_set_name
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - event_set_name
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_event_set_name(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:346,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:347,1
    - Dst: event_set_always_log_source
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:349,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 354
    functionName: dlua_event_set_always_log_source
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - event_set_always_log_source
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - dlua_check_event
    linkageType: ''
    returnType: int
    signature: int dlua_event_set_always_log_source(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:358,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:359,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:361,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: dlua_event_set_forced_debug
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - dlua_check_event
    linkageType: ''
    returnType: int
    signature: int dlua_event_set_forced_debug(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:368,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:369,1
    - Dst: event_unset_forced_debug
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:371,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 374
    functionName: dlua_event_unset_forced_debug
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushvalue
    - event_unset_forced_debug
    - DLUA_REQUIRE_ARGS
    - dlua_check_event
    linkageType: ''
    returnType: int
    signature: int dlua_event_unset_forced_debug(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:378,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:379,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:380,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:381,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:383,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 388
    functionName: dlua_event_add_str
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - event_add_str
    linkageType: ''
    returnType: int
    signature: int dlua_event_add_str(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:392,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:393,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:394,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:395,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:397,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 390
    functionDepth: 2
    functionLinenumber: 390
    functionLinenumberEnd: 402
    functionName: dlua_event_add_int
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - lua_pushvalue
    - luaL_checkinteger
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - event_add_int
    linkageType: ''
    returnType: int
    signature: int dlua_event_add_int(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:406,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:407,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:408,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:410,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:415,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 420
    functionName: dlua_event_add_timeval
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - lua_pushvalue
    - luaL_checkinteger
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - event_add_timeval
    linkageType: ''
    returnType: int
    signature: int dlua_event_add_timeval(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:424,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:425,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:426,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:427,1
    - Dst: event_inc_int
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:429,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 434
    functionName: dlua_event_inc_int
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - lua_pushvalue
    - luaL_checkinteger
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - event_inc_int
    linkageType: ''
    returnType: int
    signature: int dlua_event_inc_int(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:438,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:439,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:440,1
    - Dst: dlua_event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:442,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 436
    functionDepth: 2
    functionLinenumber: 436
    functionLinenumberEnd: 447
    functionName: dlua_event_log_debug
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - dlua_event_log
    linkageType: ''
    returnType: int
    signature: int dlua_event_log_debug(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:451,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:452,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:453,1
    - Dst: dlua_event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:455,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 449
    functionDepth: 2
    functionLinenumber: 449
    functionLinenumberEnd: 460
    functionName: dlua_event_log_info
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - dlua_event_log
    linkageType: ''
    returnType: int
    signature: int dlua_event_log_info(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:464,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:465,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:466,1
    - Dst: dlua_event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:468,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 473
    functionName: dlua_event_log_warning
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - dlua_event_log
    linkageType: ''
    returnType: int
    signature: int dlua_event_log_warning(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:477,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:478,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:479,1
    - Dst: dlua_event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:481,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 486
    functionName: dlua_event_log_error
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_check_event
    - lua_pushvalue
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - dlua_event_log
    linkageType: ''
    returnType: int
    signature: int dlua_event_log_error(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct dlua_script*::pending_event_passthrough::event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:492,1
    - Dst: event_send_abort
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:495,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:498,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 502
    functionName: dlua_event_passthrough_abort
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - e_error
    - struct dlua_script*::pending_event_passthrough::event
    - event_send_abort
    linkageType: ''
    returnType: void
    signature: void dlua_event_passthrough_abort(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:508,1
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:509,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:510,1
    - Dst: dlua_event_passthrough_abort
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:514,1
    - Dst: dlua_get_file_line
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:516,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:518,1
    - Dst: dlua_push_event_passthrough
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 506
    functionDepth: 2
    functionLinenumber: 506
    functionLinenumberEnd: 523
    functionName: dlua_event_passthrough_event
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_push_event_passthrough
    - dlua_check_event
    - DLUA_REQUIRE_ARGS
    - dlua_get_file_line
    - event_create_passthrough
    - dlua_script_from_state
    - dlua_event_passthrough_abort
    linkageType: ''
    returnType: int
    signature: int dlua_event_passthrough_event(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:527,1
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:528,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:533,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:534,1
    - Dst: dlua_get_file_line
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:535,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:536,1
    - Dst: dlua_push_event
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:537,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 540
    functionName: dlua_event_new
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - event_create
    - dlua_push_event
    - event_unref
    - dlua_check_event
    - dlua_get_file_line
    - DLUA_REQUIRE_ARGS_IN
    - dlua_script_from_state
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: int dlua_event_new(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:562,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:564,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:565,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:566,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:567,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:568,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:570,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:571,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:572,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:573,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 575
    functionName: dlua_event_register
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - luaL_newmetatable
    - lua_pushvalue
    - lua_pop
    - luaL_setfuncs
    - i_assert
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_event_register(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:579,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:580,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 583
    functionName: dlua_i_debug
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - i_debug
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_i_debug(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:587,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:588,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 591
    functionName: dlua_i_info
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - i_info
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_i_info(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:595,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:596,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 599
    functionName: dlua_i_warning
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - i_warning
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_i_warning(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:603,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:604,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 607
    functionName: dlua_i_error
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - i_error
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_i_error(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:611,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:613,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:614,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 618
    functionName: dlua_has_flag
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - luaL_checkinteger
    - lua_pushboolean
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int dlua_has_flag(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:622,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:623,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:624,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 628
    functionName: dlua_set_flag
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushinteger
    - luaL_checkinteger
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int dlua_set_flag(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:632,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:633,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:634,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 638
    functionName: dlua_clear_flag
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushinteger
    - luaL_checkinteger
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int dlua_clear_flag(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:642,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:643,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 646
    functionName: dlua_script_strict_index
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - luaL_error
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_script_strict_index(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:650,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:651,1
    - Dst: lua_rawset
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:653,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:655,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 648
    functionDepth: 1
    functionLinenumber: 648
    functionLinenumberEnd: 660
    functionName: dlua_script_strict_newindex
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_type
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - luaL_error
    - lua_rawset
    linkageType: ''
    returnType: int
    signature: int dlua_script_strict_newindex(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:670,1
    - Dst: lua_toboolean
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:672,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:674,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:675,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:676,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:679,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:680,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:682,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 685
    functionName: dlua_restrict_global_variables
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pop
    - lua_getglobal
    - lua_toboolean
    - DLUA_REQUIRE_ARGS
    - luaL_setfuncs
    - lua_newtable
    - lua_setmetatable
    linkageType: ''
    returnType: int
    signature: int dlua_restrict_global_variables(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:691,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:692,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:693,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:694,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:695,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 698
    functionName: dlua_gettimeofday
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - lua_pushinteger
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: int
    signature: int dlua_gettimeofday(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:702,1
    - Dst: i_nanoseconds
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 704
    functionName: dlua_nanoseconds
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - i_nanoseconds
    - lua_pushinteger
    linkageType: ''
    returnType: int
    signature: int dlua_nanoseconds(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:708,1
    - Dst: i_microseconds
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 710
    functionName: dlua_microseconds
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushinteger
    - i_microseconds
    linkageType: ''
    returnType: int
    signature: int dlua_microseconds(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:714,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:717,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:717,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:718,1
    - Dst: IPADDR_IS_V4
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:719,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:720,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:722,1
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:722,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 726
    functionName: net_ip_family
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - i_assert
    - net_addr2ip
    - IPADDR_IS_V4
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - IPADDR_IS_V6
    - lua_pushinteger
    linkageType: ''
    returnType: int
    signature: int net_ip_family(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:730,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:731,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:735,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 737
    functionName: dlua_tabescape
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - str_tabescape
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_tabescape(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:743,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:744,1
    - Dst: t_str_tabunescape
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:748,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 750
    functionName: dlua_tabunescape
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - t_str_tabunescape
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_tabunescape(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:756,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:757,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:761,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:762,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:765,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:767,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 770
    functionName: dlua_split_tabescaped
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_createtable
    - lua_rawseti
    - t_strsplit_tabescaped
    - lua_pushstring
    - str_array_length
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int dlua_split_tabescaped(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:777,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:778,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:780,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:782,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:783,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:785,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:785,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:785,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 787
    functionName: dlua_var_expand
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_len
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - luaL_error
    - lua_pushlstring
    - var_expand
    linkageType: ''
    returnType: int
    signature: int dlua_var_expand(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:791,1
    - Dst: luaL_checklstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:793,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:795,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 798
    functionName: dlua_base64_encode
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - t_base64_encode
    - lua_pushlstring
    - luaL_checklstring
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int dlua_base64_encode(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:802,1
    - Dst: luaL_checklstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:804,1
    - Dst: t_base64_decode
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:806,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 809
    functionName: dlua_base64_decode
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - lua_pushlstring
    - luaL_checklstring
    - DLUA_REQUIRE_ARGS
    - t_base64_decode
    linkageType: ''
    returnType: int
    signature: int dlua_base64_decode(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 838
    functionDepth: 0
    functionLinenumber: 838
    functionLinenumberEnd: 841
    functionName: dlua_get_dovecot
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 1
    functionsReached:
    - lua_getglobal
    linkageType: ''
    returnType: void
    signature: void dlua_get_dovecot(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:845,1
    - Dst: dlua_event_register
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:847,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:850,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:853,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:855,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:857,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:858,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:860,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:863,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:864,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:867,1
    - Dst: lua_setglobal
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:870,1
    - Dst: dlua_dovecot_http_register
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:873,1
    - Dst: dlua_dovecot_dict_register
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:875,1
    - Dst: dlua_dovecot_doveadm_client_register
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 878
    functionName: dlua_dovecot_register
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 0
    functionsReached:
    - dlua_dovecot_doveadm_client_register
    - lua_setfield
    - lua_pushvalue
    - luaL_setfuncs
    - dlua_dovecot_dict_register
    - lua_setmetatable
    - dlua_dovecot_http_register
    - lua_setglobal
    - dlua_event_register
    - i_assert
    - lua_newtable
    - luaL_newmetatable
    linkageType: ''
    returnType: void
    signature: void dlua_dovecot_register(struct dlua_script *script)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:885,1
    - Dst: dlua_get_file_line
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:887,1
    - Dst: event_want_level
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:889,1
    - Dst: event_log
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:891,1
    - Dst: event_send_abort
      Src: /src/dovecot/src/lib-lua/dlua-dovecot.c:893,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - L
    - event
    - log_type
    - str
    argTypes:
    - lua_State*
    - struct event*
    - enum log_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 895
    functionName: dlua_event_log
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-dovecot.c
    functionUses: 8
    functionsReached:
    - i_zero
    - event_log
    - event_send_abort
    - dlua_get_file_line
    - event_want_level
    linkageType: ''
    returnType: void
    signature: "void dlua_event_log(lua_State *L, struct event *event,\n\t\t\t   enum
      log_type log_type, const char *str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/test-lua.c:11,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/test-lua.c:12,1
    - Dst: lua_toboolean
      Src: /src/dovecot/src/lib-lua/test-lua.c:13,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:17,1
    - Dst: lua_getinfo
      Src: /src/dovecot/src/lib-lua/test-lua.c:17,1
    - Dst: test_assert_failed
      Src: /src/dovecot/src/lib-lua/test-lua.c:18,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 22
    functionName: dlua_test_assert
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - test_assert_failed
    - lua_getinfo
    - lua_toboolean
    - luaL_checkstring
    - dlua_script_from_state
    - i_assert
    linkageType: ''
    returnType: int
    signature: int dlua_test_assert(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - ctype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 33
    functionName: GENERATE_GETTERS
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_GETTERS(name, ctype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_table_get_string_by_str
      Src: /src/dovecot/src/lib-lua/test-lua.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:82,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:83,1
    - Dst: dlua_table_get_string_by_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:88,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - script
    - idx
    - expected_value
    - str_key
    - int_key
    argTypes:
    - struct dlua_script*
    - int
    - char*
    - char*
    - lua_Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 92
    functionName: check_table_get_string_ok
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - dlua_table_get_string_by_int
    - dlua_table_get_string_by_str
    - test_assert_strcmp
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void check_table_get_string_ok(struct dlua_script *script,\n\t\t\t\t
      \     int idx, const char *expected_value,\n\t\t\t\t      const char *str_key,\n\t\t\t\t
      \     lua_Integer int_key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_table_get_string_by_str
      Src: /src/dovecot/src/lib-lua/test-lua.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:106,1
    - Dst: dlua_table_get_string_by_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - script
    - idx
    - expected_ret
    - str_key
    - int_key
    argTypes:
    - struct dlua_script*
    - int
    - int
    - char*
    - lua_Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 114
    functionName: check_table_get_string_err
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - dlua_table_get_string_by_int
    - dlua_table_get_string_by_str
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void check_table_get_string_err(struct dlua_script *script,\n\t\t\t\t
      \      int idx, int expected_ret,\n\t\t\t\t       const char *str_key,\n\t\t\t\t
      \      lua_Integer int_key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_table_get_luainteger_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:120,1
    - Dst: check_table_get_int_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:121,1
    - Dst: check_table_get_intmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:122,1
    - Dst: check_table_get_uint_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:123,1
    - Dst: check_table_get_uintmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:124,1
    - Dst: check_table_get_number_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:125,1
    - Dst: check_table_get_bool_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:126,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - script
    - idx
    - str_key
    - int_key
    argTypes:
    - struct dlua_script*
    - int
    - char*
    - lua_Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 128
    functionName: check_table_missing
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - check_table_get_bool_err
    - check_table_get_intmax_err
    - check_table_get_uintmax_err
    - check_table_get_int_err
    - check_table_get_number_err
    - check_table_get_uint_err
    - check_table_get_string_err
    - check_table_get_luainteger_err
    linkageType: ''
    returnType: void
    signature: "void check_table_missing(struct dlua_script *script, int idx,\n\t\t\t\tconst
      char *str_key,\n\t\t\t\tlua_Integer int_key)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua.c:201,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-lua/test-lua.c:202,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:204,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/lib-lua/test-lua.c:204,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua.c:207,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-lua.c:209,1
    - Dst: dlua_register
      Src: /src/dovecot/src/lib-lua/test-lua.c:211,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:213,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-lua.c:213,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:214,1
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/lib-lua/test-lua.c:214,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:216,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua.c:216,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/test-lua.c:218,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:219,1
    - Dst: lua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua.c:219,1
    - Dst: check_table_get_luainteger_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:226,1
    - Dst: check_table_get_luainteger_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:227,1
    - Dst: check_table_get_luainteger_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:228,1
    - Dst: check_table_get_luainteger_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:229,1
    - Dst: check_table_get_luainteger_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:230,1
    - Dst: check_table_get_luainteger_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:231,1
    - Dst: check_table_get_luainteger_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:232,1
    - Dst: check_table_get_luainteger_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:233,1
    - Dst: check_table_get_luainteger_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:234,1
    - Dst: check_table_get_int_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:237,1
    - Dst: check_table_get_int_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:238,1
    - Dst: check_table_get_int_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:239,1
    - Dst: check_table_get_int_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:240,1
    - Dst: check_table_get_int_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:241,1
    - Dst: check_table_get_int_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:242,1
    - Dst: check_table_get_int_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:243,1
    - Dst: check_table_get_int_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:244,1
    - Dst: check_table_get_int_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:245,1
    - Dst: check_table_get_intmax_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:248,1
    - Dst: check_table_get_intmax_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:249,1
    - Dst: check_table_get_intmax_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:250,1
    - Dst: check_table_get_intmax_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:251,1
    - Dst: check_table_get_intmax_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:252,1
    - Dst: check_table_get_intmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:253,1
    - Dst: check_table_get_intmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:254,1
    - Dst: check_table_get_intmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:255,1
    - Dst: check_table_get_intmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:256,1
    - Dst: check_table_get_uint_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:259,1
    - Dst: check_table_get_uint_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:260,1
    - Dst: check_table_get_uint_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:261,1
    - Dst: check_table_get_uint_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:262,1
    - Dst: check_table_get_uint_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:263,1
    - Dst: check_table_get_uint_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:264,1
    - Dst: check_table_get_uint_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:265,1
    - Dst: check_table_get_uint_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:266,1
    - Dst: check_table_get_uint_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:267,1
    - Dst: check_table_get_uintmax_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:270,1
    - Dst: check_table_get_uintmax_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:271,1
    - Dst: check_table_get_uintmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:272,1
    - Dst: check_table_get_uintmax_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:273,1
    - Dst: check_table_get_uintmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:274,1
    - Dst: check_table_get_uintmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:275,1
    - Dst: check_table_get_uintmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:276,1
    - Dst: check_table_get_uintmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:277,1
    - Dst: check_table_get_uintmax_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:278,1
    - Dst: check_table_get_number_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:281,1
    - Dst: check_table_get_number_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:282,1
    - Dst: check_table_get_number_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:283,1
    - Dst: check_table_get_number_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:284,1
    - Dst: check_table_get_number_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:285,1
    - Dst: check_table_get_number_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:286,1
    - Dst: check_table_get_number_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:287,1
    - Dst: check_table_get_number_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:288,1
    - Dst: check_table_get_number_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:289,1
    - Dst: check_table_get_bool_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:292,1
    - Dst: check_table_get_bool_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:293,1
    - Dst: check_table_get_bool_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:294,1
    - Dst: check_table_get_bool_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:295,1
    - Dst: check_table_get_bool_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:296,1
    - Dst: check_table_get_bool_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:297,1
    - Dst: check_table_get_bool_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:298,1
    - Dst: check_table_get_bool_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:299,1
    - Dst: check_table_get_bool_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:300,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:303,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:304,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:305,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:306,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:307,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:308,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:309,1
    - Dst: check_table_get_string_err
      Src: /src/dovecot/src/lib-lua/test-lua.c:310,1
    - Dst: check_table_get_string_ok
      Src: /src/dovecot/src/lib-lua/test-lua.c:311,1
    - Dst: check_table_missing
      Src: /src/dovecot/src/lib-lua/test-lua.c:313,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/test-lua.c:315,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/test-lua.c:318,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:319,1
    - Dst: lua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua.c:319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:321,1
    - Dst: dlua_strtable_to_kvarray
      Src: /src/dovecot/src/lib-lua/test-lua.c:321,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-lua/test-lua.c:322,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:325,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:326,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:327,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:328,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:330,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:331,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:332,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:333,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:335,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:336,1
    - Dst: dlua_table_to_array
      Src: /src/dovecot/src/lib-lua/test-lua.c:336,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-lua/test-lua.c:336,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:338,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:339,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:341,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua.c:342,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/test-lua.c:344,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/test-lua.c:347,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:348,1
    - Dst: lua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua.c:348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:349,1
    - Dst: dlua_strtable_to_kvarray
      Src: /src/dovecot/src/lib-lua/test-lua.c:349,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-lua/test-lua.c:350,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:352,1
    - Dst: dlua_table_to_array
      Src: /src/dovecot/src/lib-lua/test-lua.c:352,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-lua/test-lua.c:352,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/test-lua.c:354,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua.c:356,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-lua/test-lua.c:357,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua.c:359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 116
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 130
    functionDepth: 4
    functionLinenumber: 130
    functionLinenumberEnd: 360
    functionName: test_lua
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - check_table_get_number_ok
    - dlua_script_init
    - check_table_get_intmax_ok
    - check_table_get_intmax_err
    - check_table_get_uint_ok
    - check_table_get_int_err
    - test_assert
    - check_table_get_uint_err
    - check_table_get_string_err
    - dlua_script_unref
    - dlua_script_has_function
    - check_table_missing
    - i_fatal
    - check_table_get_bool_ok
    - lua_pcall
    - test_end
    - check_table_get_luainteger_ok
    - settings_simple_deinit
    - check_table_get_string_ok
    - check_table_get_bool_err
    - dlua_register
    - dlua_script_create_string
    - lua_pop
    - test_assert_strcmp
    - pool_datastack_create
    - settings_simple_init
    - check_table_get_uintmax_err
    - check_table_get_number_err
    - check_table_get_int_ok
    - dlua_table_to_array
    - dlua_strtable_to_kvarray
    - strcmp
    - dlua_dovecot_register
    - dlua_pcall
    - lua_getglobal
    - check_table_get_uintmax_ok
    - check_table_get_luainteger_err
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lua(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua.c:368,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:370,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/lib-lua/test-lua.c:370,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua.c:372,1
    - Dst: dlua_script_new_thread
      Src: /src/dovecot/src/lib-lua/test-lua.c:374,1
    - Dst: dlua_script_new_thread
      Src: /src/dovecot/src/lib-lua/test-lua.c:375,1
    - Dst: dlua_tls_set_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:377,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:378,1
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:379,1
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:379,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:380,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:380,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:381,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:381,1
    - Dst: dlua_tls_set_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:384,1
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:384,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:385,1
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:386,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:386,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:387,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:387,1
    - Dst: dlua_tls_set_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:389,1
    - Dst: dlua_tls_set_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:390,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:391,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:391,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:392,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:392,1
    - Dst: dlua_tls_clear
      Src: /src/dovecot/src/lib-lua/test-lua.c:394,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:395,1
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:395,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:396,1
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:396,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:397,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:397,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:398,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:398,1
    - Dst: dlua_script_close_thread
      Src: /src/dovecot/src/lib-lua/test-lua.c:400,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:402,1
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/test-lua.c:402,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:403,1
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/test-lua.c:403,1
    - Dst: dlua_tls_clear
      Src: /src/dovecot/src/lib-lua/test-lua.c:405,1
    - Dst: dlua_script_close_thread
      Src: /src/dovecot/src/lib-lua/test-lua.c:406,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua.c:408,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 411
    functionName: test_tls
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - dlua_tls_get_int
    - dlua_tls_get_ptr
    - dlua_script_close_thread
    - dlua_tls_set_ptr
    - i_fatal
    - dlua_script_create_string
    - dlua_tls_set_int
    - test_end
    - test_assert
    - dlua_script_new_thread
    - dlua_script_unref
    - test_begin
    - dlua_tls_clear
    linkageType: ''
    returnType: void
    signature: void test_tls(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_tointegerx
      Src: /src/dovecot/src/lib-lua/test-lua.c:421,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:422,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:425,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:427,1
    - Dst: lua_isinteger
      Src: /src/dovecot/src/lib-lua/test-lua.c:427,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/test-lua.c:429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - L
    - expected_isnum
    - expected_isint
    - expected_value
    argTypes:
    - lua_State*
    - bool
    - bool
    - lua_Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 430
    functionName: check_tointegerx_compat
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - lua_tointegerx
    - lua_isinteger
    - lua_pop
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void check_tointegerx_compat(lua_State *L, bool expected_isnum,\n\t\t\t\t
      \   bool expected_isint,\n\t\t\t\t    lua_Integer expected_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua.c:482,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:484,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/lib-lua/test-lua.c:484,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-lua/test-lua.c:486,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/test-lua.c:487,1
    - Dst: check_tointegerx_compat
      Src: /src/dovecot/src/lib-lua/test-lua.c:488,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-lua/test-lua.c:492,1
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/lib-lua/test-lua.c:502,1
    - Dst: check_tointegerx_compat
      Src: /src/dovecot/src/lib-lua/test-lua.c:503,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-lua/test-lua.c:508,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/test-lua.c:509,1
    - Dst: check_tointegerx_compat
      Src: /src/dovecot/src/lib-lua/test-lua.c:510,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua.c:514,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua.c:516,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 432
    functionDepth: 3
    functionLinenumber: 432
    functionLinenumberEnd: 517
    functionName: test_compat_tointegerx_and_isinteger
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - dlua_script_create_string
    - check_tointegerx_compat
    - lua_pushnumber
    - test_end
    - test_assert
    - dlua_script_unref
    - lua_pushinteger
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_compat_tointegerx_and_isinteger(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua.c:521,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/lib-lua/test-lua.c:526,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua.c:528,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-lua.c:530,1
    - Dst: dlua_register
      Src: /src/dovecot/src/lib-lua/test-lua.c:531,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:533,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-lua.c:533,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua.c:534,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua.c:534,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua.c:536,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 538
    functionName: test_lua_base64
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 0
    functionsReached:
    - dlua_dovecot_register
    - dlua_pcall
    - i_fatal
    - dlua_register
    - dlua_script_init
    - test_end
    - dlua_script_create_file
    - test_assert
    - dlua_script_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lua_base64(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-lua/test-lua.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 540
    functionDepth: 7
    functionLinenumber: 540
    functionLinenumberEnd: 550
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua.c
    functionUses: 1
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-lua/dlua-error.c:9,1
    - Dst: dlua_push_vfstring
      Src: /src/dovecot/src/lib-lua/dlua-error.c:10,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-lua/dlua-error.c:11,1
    - Dst: lua_error
      Src: /src/dovecot/src/lib-lua/dlua-error.c:12,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-lua/dlua-error.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - L
    - fmt
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 14
    functionName: dluaL_error
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-error.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - va_start
    - dlua_push_vfstring
    - lua_error
    - va_end
    linkageType: ''
    returnType: int
    signature: int dluaL_error(lua_State *L, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 11
    functionName: lua_isstring
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lua_isstring(L, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 12
    functionName: lua_isnumber
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lua_isnumber(L, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: lua_toboolean
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lua_toboolean(L, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 14
    functionName: lua_pushboolean
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lua_pushboolean(L, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: lua_isinteger
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lua_isinteger(L, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: DLUA_TABLE_STRING
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_TABLE_STRING(n, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: DLUA_TABLE_STRING_SELF
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_TABLE_STRING_SELF(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: DLUA_TABLE_INTEGER
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_TABLE_INTEGER(n, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: DLUA_TABLE_ENUM
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_TABLE_ENUM(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prefix
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: DLUA_TABLE_ENUM_NOPREFIX
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_TABLE_ENUM_NOPREFIX(prefix, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: DLUA_TABLE_DOUBLE
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_TABLE_DOUBLE(n, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: DLUA_TABLE_BOOLEAN
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_TABLE_BOOLEAN(n, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: DLUA_TABLE_NULL
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_TABLE_NULL(n, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - L
    - ','
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: DLUA_REQUIRE_ARGS_IN
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_REQUIRE_ARGS_IN(L, x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: DLUA_REQUIRE_ARGS
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_REQUIRE_ARGS(L, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: luaL_error
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: luaL_error(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - L
    - ','
    - func_name
    - ','
    - nargs
    - ','
    - callback
    - ','
    - context
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: dlua_pcall_yieldable
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dlua_pcall_yieldable(L, func_name, nargs, callback, context, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 17
    functionName: test_dict_register
    functionSourceFile: /src/dovecot/src/lib-lua/test-dict-lua.c
    functionUses: 0
    functionsReached:
    - dict_driver_register
    linkageType: ''
    returnType: void
    signature: void test_dict_register(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:22,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:22,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:23,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - L
    - ioloop
    - res
    argTypes:
    - lua_State*
    - struct ioloop*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 26
    functionName: test_dict_finished
    functionSourceFile: /src/dovecot/src/lib-lua/test-dict-lua.c
    functionUses: 0
    functionsReached:
    - lua_tostring
    - io_loop_stop
    - lua_pop
    - i_error
    linkageType: ''
    returnType: void
    signature: void test_dict_finished(lua_State *L, struct ioloop *ioloop, int res)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:61,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:62,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:63,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:66,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:71,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:72,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:75,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:76,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:77,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:78,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:79,1
    - Dst: dlua_script_new_thread
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:81,1
    - Dst: dlua_push_dict
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:82,1
    - Dst: dlua_pcall_yieldable
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:83,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:85,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:86,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:87,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:87,1
    - Dst: dlua_script_close_thread
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:88,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:90,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:91,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:92,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:93,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:95,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:96,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 28
    functionDepth: 4
    functionLinenumber: 28
    functionLinenumberEnd: 97
    functionName: test_dict_lua
    functionSourceFile: /src/dovecot/src/lib-lua/test-dict-lua.c
    functionUses: 0
    functionsReached:
    - dlua_script_close_thread
    - dlua_script_init
    - io_loop_destroy
    - i_unlink
    - dlua_script_unref
    - io_loop_run
    - dict_init_auto
    - i_fatal
    - dlua_pcall_yieldable
    - test_end
    - dlua_push_dict
    - settings_simple_deinit
    - dlua_script_create_string
    - settings_simple_init
    - i_unlink_if_exists
    - dict_deinit
    - lua_gettop
    - i_assert
    - dlua_dovecot_register
    - io_loop_create
    - dlua_script_new_thread
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dict_lua(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-lua/test-dict-lua.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 99
    functionDepth: 7
    functionLinenumber: 99
    functionLinenumberEnd: 107
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-lua/test-dict-lua.c
    functionUses: 1
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:111,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:114,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:115,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:117,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:119,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:120,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:123,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:124,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 129
    functionName: test_dns_simple_post_input
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - e_debug
    - i_sleep_msecs
    - t_strdup_printf
    - i_stream_read_next_line
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_dns_simple_post_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: test_dns_simple_post
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_simple_post(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 154
    functionName: test_server_simple_post_init
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: int
    signature: int test_server_simple_post_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:161,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 163
    functionName: test_server_simple_post_disconnect
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_simple_post_disconnect(struct server_connection *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:172,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:174,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:178,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:182,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:186,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:186,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:189,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:190,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:193,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:198,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:199,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:208,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:209,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:221,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:222,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:227,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:227,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:227,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:228,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:229,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:230,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:234,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 236
    functionName: test_server_simple_post_input
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_len
    - test_assert
    - t_str_new
    - o_stream_get_error
    - timeout_add
    - i_fatal
    - i_stream_read_next_line
    - i_stream_get_error
    - o_stream_nsend
    - server_connection_deinit
    - o_stream_flush
    - str_data
    - test_assert_strcmp
    - o_stream_nsend_str
    - i_assert
    - i_stream_read
    - strcmp
    - str_begins_with
    - str_begins
    linkageType: ''
    returnType: void
    signature: void test_server_simple_post_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: test_server_simple_post_deinit
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_simple_post_deinit(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 251
    functionName: test_server_simple_post
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_simple_post(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:261,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:262,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:265,1
    - Dst: lua_isinteger
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:265,1
    - Dst: lua_isinteger
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:266,1
    - Dst: lua_tointeger
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:267,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:269,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:270,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:273,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:274,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - script
    - url
    argTypes:
    - struct dlua_script*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 275
    functionName: test_client_simple_post_run_post
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - lua_isinteger
    - dlua_pcall
    - e_debug
    - lua_pushstring
    - i_fatal
    - lua_pop
    - lua_tointeger
    - test_assert
    - lua_gettop
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_client_simple_post_run_post(struct dlua_script *script, const
      char *url)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:282,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:283,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:285,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:288,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:290,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:291,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:292,1
    - Dst: test_client_simple_post_run_post
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:295,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:296,1
    - Dst: test_client_simple_post_run_post
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:301,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:302,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 277
    functionDepth: 3
    functionLinenumber: 277
    functionLinenumberEnd: 309
    functionName: test_client_simple_post
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - dlua_dovecot_register
    - test_client_simple_post_run_post
    - i_fatal
    - test_expect_errors
    - dlua_script_init
    - t_strdup_printf
    - dlua_script_create_file
    - event_want_debug
    - dlua_script_unref
    linkageType: ''
    returnType: bool
    signature: bool test_client_simple_post(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:316,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:317,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:319,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:322,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:324,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:325,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:326,1
    - Dst: test_client_simple_post_run_post
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:329,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:330,1
    - Dst: test_client_simple_post_run_post
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:335,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:336,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 343
    functionName: test_client_second_post
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - dlua_dovecot_register
    - test_client_simple_post_run_post
    - i_fatal
    - test_expect_errors
    - dlua_script_init
    - t_strdup_printf
    - dlua_script_create_file
    - event_want_debug
    - dlua_script_unref
    linkageType: ''
    returnType: bool
    signature: bool test_client_second_post(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:349,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:351,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:354,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:356,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:358,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 347
    functionDepth: 3
    functionLinenumber: 347
    functionLinenumberEnd: 362
    functionName: test_simple_post
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_simple_post(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:366,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:368,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:371,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:373,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:375,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 364
    functionDepth: 3
    functionLinenumber: 364
    functionLinenumberEnd: 380
    functionName: test_second_post
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_second_post(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:387,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:389,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:390,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:392,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:395,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:397,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:398,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:399,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:401,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:402,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:403,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:405,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:409,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:410,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:411,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:415,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:416,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:417,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:422,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:422,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:423,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:424,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:424,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:425,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:426,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:428,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 382
    functionDepth: 3
    functionLinenumber: 382
    functionLinenumberEnd: 431
    functionName: test_bad_settings
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - dlua_dovecot_register
    - dlua_pcall
    - lua_pushstring
    - dlua_script_unref
    - i_fatal
    - test_expect_errors
    - dlua_script_init
    - test_assert_strcmp
    - test_end
    - dlua_script_create_file
    - event_want_debug
    - test_assert
    - lua_tostring
    - t_strcut
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_settings(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:438,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:440,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:443,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:446,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:447,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:448,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:450,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:451,1
    - Dst: dlua_push_event
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:452,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:454,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:454,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:455,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:456,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:456,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:457,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:457,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:458,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:459,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 433
    functionDepth: 3
    functionLinenumber: 433
    functionLinenumberEnd: 462
    functionName: test_set_event
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_create
    - dlua_push_event
    - event_unref
    - dlua_dovecot_register
    - dlua_pcall
    - lua_pushstring
    - dlua_check_event
    - i_fatal
    - dlua_script_init
    - test_end
    - dlua_script_create_file
    - event_get_parent
    - test_assert
    - dlua_script_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_set_event(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:469,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:471,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:474,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:477,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:478,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:479,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:481,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:482,1
    - Dst: dlua_push_event
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:483,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:484,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:485,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:485,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:486,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:489,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:489,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:490,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:491,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 464
    functionDepth: 3
    functionLinenumber: 464
    functionLinenumberEnd: 494
    functionName: test_set_no_event
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_create
    - dlua_push_event
    - event_unref
    - dlua_dovecot_register
    - dlua_pcall
    - lua_pushstring
    - dlua_check_event
    - i_fatal
    - dlua_script_init
    - test_end
    - dlua_script_create_file
    - event_get_parent
    - test_assert
    - dlua_script_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_set_no_event(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:516,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:517,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 519
    functionName: test_client_progress_timeout
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_progress_timeout(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:524,1
    - Dst: client_test
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:525,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client_test
    argTypes:
    - test_client_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 531
    functionName: test_client_init
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - client_test
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_init(test_client_init_t client_test)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:535,1
    - Dst: http_client_global_context_free
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 537
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 2
    functionsReached:
    - http_client_global_context_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:541,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client_test
    argTypes:
    - test_client_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 539
    functionDepth: 0
    functionLinenumber: 539
    functionLinenumberEnd: 543
    functionName: test_client_run
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - test_client_init
    - test_client_deinit
    linkageType: ''
    returnType: void
    signature: void test_client_run(test_client_init_t client_test)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:560,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:562,1
    - Dst: ssl_iostream_context_init_server
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:565,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:567,1
    - Dst: io_stream_create_ssl_server
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:571,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:574,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:577,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:578,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:579,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:583,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 585
    functionName: server_connection_init_ssl
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - io_stream_create_ssl_server
    - connection_input_resume
    - connection_input_halt
    - i_error
    - ssl_iostream_handshake
    - ssl_iostream_test_settings_server
    - ssl_iostream_get_last_error
    - ssl_iostream_context_init_server
    linkageType: ''
    returnType: int
    signature: int server_connection_init_ssl(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:590,1
    - Dst: test_server_input
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 593
    functionName: server_connection_input
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - container_of
    - test_server_input
    linkageType: ''
    returnType: void
    signature: void server_connection_input(struct connection *_conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:600,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:602,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:603,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:606,1
    - Dst: server_connection_init_ssl
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:611,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:612,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:617,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 620
    functionName: server_connection_init
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 2
    functionsReached:
    - test_server_init
    - pool_alloconly_create
    - p_new
    - connection_init_server
    - server_connection_init_ssl
    - server_connection_deinit
    - net_set_nonblock
    linkageType: ''
    returnType: void
    signature: void server_connection_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:629,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:631,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:632,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 634
    functionName: server_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 18
    functionsReached:
    - connection_deinit
    - pool_unref
    - test_server_deinit
    - ssl_iostream_destroy
    linkageType: ''
    returnType: void
    signature: void server_connection_deinit(struct server_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 641
    functionName: server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void server_connection_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:648,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:650,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:651,1
    - Dst: server_connection_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:655,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 656
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - server_connection_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:676,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:678,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:681,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:684,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:686,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 689
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 15
    functionsReached:
    - connection_list_init
    - io_add
    - ssl_iostream_context_unref
    - io_remove
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_run(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_listen
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:702,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:704,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:706,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:707,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bind_port
    argTypes:
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 710
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 3
    functionsReached:
    - e_debug
    - i_fatal
    - net_ip2addr
    - net_listen
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(in_port_t *bind_port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:714,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:716,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:720,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:721,1
    - Dst: struct test_server_data*::server_test
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:722,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:723,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:725,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:727,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:728,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:729,1
    - Dst: master_service_deinit_forked
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_server_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 712
    functionDepth: 5
    functionLinenumber: 712
    functionLinenumberEnd: 732
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_close_fd
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - struct test_server_data*::server_test
    - main_deinit
    - i_free
    - master_service_deinit_forked
    linkageType: ''
    returnType: int
    signature: int test_run_server(struct test_server_data *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:738,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:740,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:742,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:743,1
    - Dst: dns_test
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:744,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:745,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:747,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:749,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:750,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:751,1
    - Dst: master_service_deinit_forked
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - dns_test
    argTypes:
    - test_dns_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 734
    functionDepth: 5
    functionLinenumber: 734
    functionLinenumberEnd: 754
    functionName: test_run_dns
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 0
    functionsReached:
    - dns_test
    - e_debug
    - i_close_fd
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - main_deinit
    - i_free
    - master_service_deinit_forked
    linkageType: ''
    returnType: int
    signature: int test_run_dns(test_dns_init_t dns_test)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:758,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:760,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:762,1
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:763,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:764,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_test
    argTypes:
    - test_client_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 767
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 3
    functionsReached:
    - test_client_run
    - e_debug
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    linkageType: ''
    returnType: void
    signature: void test_run_client(test_client_init_t client_test)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:784,1
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:786,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:791,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:797,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:798,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:799,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:801,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:808,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:809,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:811,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:816,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:817,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:818,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:820,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:824,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:826,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:827,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:828,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:830,1
    - Dst: http_client_global_context_free
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:831,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 4
    argNames:
    - client_test
    - server_test
    - server_tests_count
    - dns_test
    argTypes:
    - test_client_init_t
    - test_server_init_t
    - unsigned int
    - test_dns_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 769
    functionDepth: 4
    functionLinenumber: 769
    functionLinenumberEnd: 832
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 29
    functionsReached:
    - i_zero
    - test_subprocess_fork
    - net_listen_unix
    - i_close_fd
    - i_fatal
    - test_subprocess_kill_all
    - test_subprocess_notify_signal_reset
    - i_unlink_if_exists
    - i_new
    - test_open_server_fd
    - http_client_global_context_free
    - test_run_client
    - i_free
    - test_subprocess_notify_signal_wait
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(test_client_init_t client_test,\n\t\t
      \      test_server_init_t server_test,\n\t\t       unsigned int server_tests_count,\n\t\t
      \      test_dns_init_t dns_test)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_openssl_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:840,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:843,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:844,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:845,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:846,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:847,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 849
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 8
    functionsReached:
    - event_set_append_log_prefix
    - event_create
    - ssl_iostream_openssl_init
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:853,1
    - Dst: ssl_iostream_openssl_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:854,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:856,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:857,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 851
    functionDepth: 1
    functionLinenumber: 851
    functionLinenumberEnd: 860
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 13
    functionsReached:
    - ssl_iostream_openssl_deinit
    - event_unref
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:873,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:879,1
    - Dst: master_service_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:883,1
    - Dst: master_service_parse_option
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:885,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:887,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:888,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:890,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:892,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:893,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:894,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:895,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:898,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:900,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:902,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:904,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/lib-lua/test-lua-http-client.c:905,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 862
    functionDepth: 7
    functionLinenumber: 862
    functionLinenumberEnd: 908
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-lua/test-lua-http-client.c
    functionUses: 1
    functionsReached:
    - i_zero
    - event_set_forced_debug
    - main_init
    - getopt
    - i_fatal
    - test_run
    - master_service_parse_option
    - main_deinit
    - master_service_init_finish
    - htonl
    - master_service_deinit
    - test_subprocesses_init
    - master_service_init
    - test_init
    - master_service_settings_read_simple
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - typename
    - ','
    - type
    - ','
    - putref
    - ','
    - extra_fxns_arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 132
    functionName: DLUA_WRAP_C_DATA
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-wrapper.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_WRAP_C_DATA(typename, type, putref, extra_fxns_arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:15,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:16,1
    - Dst: lua_toboolean
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:17,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:21,1
    - Dst: lua_getinfo
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:22,1
    - Dst: test_assert_failed
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:23,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 29
    functionName: dlua_test_assert
    functionSourceFile: /src/dovecot/src/lib-lua/test-io-lua.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_assert_failed
    - lua_getinfo
    - lua_toboolean
    - luaL_checkstring
    - dlua_script_from_state
    linkageType: ''
    returnType: int
    signature: int dlua_test_assert(lua_State *L)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:33,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:34,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:35,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:39,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:41,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:43,1
    - Dst: dlua_dovecot_io_register
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:44,1
    - Dst: dlua_register
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:45,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:47,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:48,1
    - Dst: dlua_push_ostream
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:50,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:51,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:52,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:53,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:54,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:54,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:56,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:56,1
    - Dst: dlua_push_istream
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:57,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:58,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:59,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:60,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:61,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:62,1
    - Dst: dlua_push_istream
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:63,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:64,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:65,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:66,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:67,1
    - Dst: dlua_push_istream
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:68,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:69,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:70,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:71,1
    - Dst: i_stream_create_error
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:74,1
    - Dst: dlua_push_istream
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:75,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:76,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:77,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:78,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:80,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:83,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:85,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 31
    functionDepth: 3
    functionLinenumber: 31
    functionLinenumberEnd: 86
    functionName: test_io_lua
    functionSourceFile: /src/dovecot/src/lib-lua/test-io-lua.c
    functionUses: 0
    functionsReached:
    - str_c
    - o_stream_unref
    - dlua_script_init
    - dlua_push_ostream
    - dlua_script_unref
    - test_ostream_create
    - test_assert_ucmp
    - i_fatal
    - test_end
    - test_istream_create
    - i_stream_set_max_buffer_size
    - dlua_register
    - test_assert_strcmp
    - i_stream_create_error
    - dlua_dovecot_io_register
    - dlua_push_istream
    - dlua_dovecot_register
    - dlua_pcall
    - t_buffer_create
    - dlua_script_create_file
    - test_istream_create_data
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_io_lua(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-lua/test-io-lua.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 7
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-lua/test-io-lua.c
    functionUses: 1
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - tn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 18
    functionName: luaL_newmetatable
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: luaL_newmetatable(L, tn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - L
    - ','
    - r
    - ','
    - s
    - ','
    - fn
    - ','
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: lua_load
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lua_load(L, r, s, fn, m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: luaL_newlibtable
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: luaL_newlibtable(L, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: luaL_newlib
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: luaL_newlib(L, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - L
    - ','
    - from
    - ','
    - nargs
    - ','
    - nresults
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: lua_resume
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lua_resume(L, from, nargs, nresults)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-lua/dlua-script.c:66,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib-lua/dlua-script.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - ptr
    - osize
    - nsize
    argTypes:
    - void*
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: dlua_alloc
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - p_free
    - p_realloc
    linkageType: ''
    returnType: void
    signature: void *dlua_alloc(void *ctx, void *ptr, size_t osize, size_t nsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-lua/dlua-script.c:78,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-lua/dlua-script.c:79,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-script.c:81,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-lua/dlua-script.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - L
    - ctx
    - size_r
    argTypes:
    - lua_State*
    - void*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 89
    functionName: dlua_reader
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - i_stream_read_more
    - luaL_error
    - i_stream_skip
    linkageType: ''
    returnType: char
    signature: char *dlua_reader(lua_State *L, void *ctx, size_t *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:96,1
    - Dst: lua_gettable
      Src: /src/dovecot/src/lib-lua/dlua-script.c:97,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-script.c:98,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 103
    functionName: dlua_script_from_state
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 10
    functionsReached:
    - lua_pushstring
    - lua_pop
    - lua_touserdata
    - i_assert
    - lua_gettable
    linkageType: ''
    returnType: struct dlua_script
    signature: struct dlua_script *dlua_script_from_state(lua_State *L)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:109,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-script.c:111,1
    - Dst: lua_isfunction
      Src: /src/dovecot/src/lib-lua/dlua-script.c:113,1
    - Dst: lua_insert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:119,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-script.c:124,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-script.c:125,1
    - Dst: lua_replace
      Src: /src/dovecot/src/lib-lua/dlua-script.c:126,1
    - Dst: lua_insert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:133,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:141,1
    - Dst: lua_pcall
      Src: /src/dovecot/src/lib-lua/dlua-script.c:142,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:144,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:146,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:148,1
    - Dst: lua_remove
      Src: /src/dovecot/src/lib-lua/dlua-script.c:152,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:154,1
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-script.c:157,1
    - Dst: dlua_event_passthrough_abort
      Src: /src/dovecot/src/lib-lua/dlua-script.c:158,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:161,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:162,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:167,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:169,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-lua/dlua-script.c:170,1
    - Dst: dlua_dump_stack
      Src: /src/dovecot/src/lib-lua/dlua-script.c:171,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-lua/dlua-script.c:172,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:177,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:177,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:179,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:179,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 5
    argNames:
    - L
    - func_name
    - nargs
    - nresults
    - error_r
    argTypes:
    - lua_State*
    - char*
    - int
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 181
    functionName: dlua_pcall
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 7
    functionsReached:
    - i_assert
    - dlua_event_passthrough_abort
    - dlua_dump_stack
    - t_strdup_printf
    - lua_getglobal
    - lua_pop
    - lua_pcall
    - lua_getfield
    - lua_insert
    - lua_replace
    - dlua_script_from_state
    - lua_tostring
    - lua_gettop
    - lua_remove
    - i_debug
    - lua_isfunction
    linkageType: ''
    returnType: int
    signature: "int dlua_pcall(lua_State *L, const char *func_name, int nargs, int
      nresults,\n\t       const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/lib-lua/dlua-script.c:186,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/dlua-script.c:188,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lua/dlua-script.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 191
    functionName: dlua_call_deinit_function
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - e_error
    - dlua_script_has_function
    - dlua_pcall
    linkageType: ''
    returnType: void
    signature: void dlua_call_deinit_function(struct dlua_script *script)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_create_finish
      Src: /src/dovecot/src/lib-lua/dlua-script.c:201,1
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/lib-lua/dlua-script.c:205,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-lua/dlua-script.c:208,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-lua/dlua-script.c:212,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:213,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-lua/dlua-script.c:213,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-lua/dlua-script.c:216,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-lua/dlua-script.c:217,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-lua/dlua-script.c:219,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:222,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-script.c:223,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-script.c:226,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/lib-lua/dlua-script.c:229,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-lua/dlua-script.c:230,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-lua/dlua-script.c:234,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:235,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:235,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - script
    - error_r
    argTypes:
    - struct dlua_script*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 237
    functionName: dlua_script_init
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 10
    functionsReached:
    - lua_createtable
    - dlua_pcall
    - lua_pushstring
    - array_get
    - dlua_script_create_finish
    - settings_free
    - array_is_empty
    - array_count
    - settings_get
    - lua_gettop
    - i_assert
    - dlua_script_has_function
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: int
    signature: int dlua_script_init(struct dlua_script *script, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-script.c:241,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:242,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-lua/dlua-script.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: dlua_atpanic
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - lua_tostring
    - i_panic
    - dlua_script_from_state
    linkageType: ''
    returnType: int
    signature: int dlua_atpanic(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib-lua/dlua-script.c:249,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:249,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-lua/dlua-script.c:250,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-script.c:252,1
    - Dst: lua_newstate
      Src: /src/dovecot/src/lib-lua/dlua-script.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:257,1
    - Dst: lua_atpanic
      Src: /src/dovecot/src/lib-lua/dlua-script.c:259,1
    - Dst: luaL_openlibs
      Src: /src/dovecot/src/lib-lua/dlua-script.c:260,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lua/dlua-script.c:261,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-lua/dlua-script.c:262,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-lua/dlua-script.c:263,1
    - Dst: dlua_init_thread_table
      Src: /src/dovecot/src/lib-lua/dlua-script.c:265,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-lua/dlua-script.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - name
    - event_parent
    argTypes:
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 269
    functionName: dlua_create_script
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - event_create
    - p_new
    - luaL_openlibs
    - lua_newstate
    - lua_atpanic
    - t_strdup_printf
    - pool_allocfree_create
    - event_add_category
    - DLLIST_PREPEND
    - dlua_init_thread_table
    - event_add_str
    - i_assert
    linkageType: ''
    returnType: struct dlua_script
    signature: "struct dlua_script *dlua_create_script(const char *name,\n\t\t\t\t\t
      \     struct event *event_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-script.c:274,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-script.c:275,1
    - Dst: lua_replace
      Src: /src/dovecot/src/lib-lua/dlua-script.c:276,1
    - Dst: lua_insert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:277,1
    - Dst: lua_pcall
      Src: /src/dovecot/src/lib-lua/dlua-script.c:284,1
    - Dst: dlua_event_passthrough_abort
      Src: /src/dovecot/src/lib-lua/dlua-script.c:285,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:287,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:289,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:291,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - script
    - error_r
    argTypes:
    - struct dlua_script*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 298
    functionName: dlua_run_script
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - lua_getglobal
    - lua_pop
    - lua_pcall
    - lua_getfield
    - lua_replace
    - dlua_event_passthrough_abort
    - lua_insert
    - lua_tostring
    linkageType: ''
    returnType: int
    signature: int dlua_run_script(struct dlua_script *script, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:304,1
    - Dst: lua_pushlightuserdata
      Src: /src/dovecot/src/lib-lua/dlua-script.c:305,1
    - Dst: lua_settable
      Src: /src/dovecot/src/lib-lua/dlua-script.c:306,1
    - Dst: dlua_run_script
      Src: /src/dovecot/src/lib-lua/dlua-script.c:308,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:310,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - script
    - error_r
    argTypes:
    - struct dlua_script*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 300
    functionDepth: 3
    functionLinenumber: 300
    functionLinenumberEnd: 312
    functionName: dlua_script_create_finish
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 1
    functionsReached:
    - lua_pushlightuserdata
    - lua_pushstring
    - dlua_run_script
    - lua_settable
    - lua_gettop
    - i_assert
    linkageType: ''
    returnType: int
    signature: int dlua_script_create_finish(struct dlua_script *script, const char
      **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/lib-lua/dlua-script.c:322,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-lua/dlua-script.c:322,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-lua/dlua-script.c:323,1
    - Dst: dlua_create_script
      Src: /src/dovecot/src/lib-lua/dlua-script.c:325,1
    - Dst: luaL_loadstring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:330,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:331,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:332,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/dlua-script.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - str
    - script_r
    - event_parent
    - error_r
    argTypes:
    - char*
    - struct dlua_script**
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 335
    functionName: dlua_script_create_string
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 5
    functionsReached:
    - strlen
    - dlua_script_unref
    - t_strdup_printf
    - lua_pop
    - dlua_create_script
    - lua_tostring
    - binary_to_hex
    - luaL_loadstring
    - sha1_get_digest
    linkageType: ''
    returnType: int
    signature: "int dlua_script_create_string(const char *str, struct dlua_script
      **script_r,\n\t\t\t      struct event *event_parent, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: access
      Src: /src/dovecot/src/lib-lua/dlua-script.c:343,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-lua/dlua-script.c:345,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:347,1
    - Dst: dlua_create_script
      Src: /src/dovecot/src/lib-lua/dlua-script.c:352,1
    - Dst: luaL_loadfile
      Src: /src/dovecot/src/lib-lua/dlua-script.c:353,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:354,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:355,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/dlua-script.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - file
    - script_r
    - event_parent
    - error_r
    argTypes:
    - char*
    - struct dlua_script**
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 362
    functionName: dlua_script_create_file
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 7
    functionsReached:
    - access
    - luaL_loadfile
    - t_strdup_printf
    - dlua_create_script
    - eacces_error_get
    - lua_tostring
    - dlua_script_unref
    linkageType: ''
    returnType: int
    signature: "int dlua_script_create_file(const char *file, struct dlua_script **script_r,\n\t\t\t
      \   struct event *event_parent, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-lua/dlua-script.c:368,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:370,1
    - Dst: dlua_create_script
      Src: /src/dovecot/src/lib-lua/dlua-script.c:372,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-script.c:374,1
    - Dst: lua_load
      Src: /src/dovecot/src/lib-lua/dlua-script.c:375,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:376,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:377,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/lib-lua/dlua-script.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - is
    - script_r
    - event_parent
    - error_r
    argTypes:
    - struct istream*
    - struct dlua_script**
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 384
    functionName: dlua_script_create_stream
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - lua_load
    - p_strdup
    - dlua_script_unref
    - t_strdup_printf
    - dlua_create_script
    - lua_tostring
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dlua_script_create_stream(struct istream *is, struct dlua_script
      **script_r,\n\t\t\t      struct event *event_parent, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-lua/dlua-script.c:394,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-lua/dlua-script.c:398,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-lua/dlua-script.c:407,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/lib-lua/dlua-script.c:411,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:414,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-script.c:415,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-lua/dlua-script.c:419,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - event_parent
    - script_r
    - error_r
    argTypes:
    - struct event*
    - struct dlua_script**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 386
    functionDepth: 3
    functionLinenumber: 386
    functionLinenumberEnd: 421
    functionName: dlua_script_create_auto
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - settings_free
    - settings_get
    - settings_file_get
    - dlua_script_create_file
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dlua_script_create_auto(struct event *event_parent,\n\t\t\t    struct
      dlua_script **script_r,\n\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_call_deinit_function
      Src: /src/dovecot/src/lib-lua/dlua-script.c:425,1
    - Dst: dlua_free_thread_table
      Src: /src/dovecot/src/lib-lua/dlua-script.c:428,1
    - Dst: lua_close
      Src: /src/dovecot/src/lib-lua/dlua-script.c:431,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-lua/dlua-script.c:434,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lua/dlua-script.c:436,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-lua/dlua-script.c:438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 423
    functionDepth: 4
    functionLinenumber: 423
    functionLinenumberEnd: 439
    functionName: dlua_script_destroy
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - dlua_call_deinit_function
    - event_unref
    - pool_unref
    - lua_close
    - dlua_free_thread_table
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void dlua_script_destroy(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 445
    functionName: dlua_script_ref
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dlua_script_ref(struct dlua_script *script)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:454,1
    - Dst: dlua_script_destroy
      Src: /src/dovecot/src/lib-lua/dlua-script.c:458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _script
    argTypes:
    - struct dlua_script**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 447
    functionDepth: 5
    functionLinenumber: 447
    functionLinenumberEnd: 459
    functionName: dlua_script_unref
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 15
    functionsReached:
    - dlua_script_destroy
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dlua_script_unref(struct dlua_script **_script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:463,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-script.c:464,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:465,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-lua/dlua-script.c:466,1
    - Dst: lua_isfunction
      Src: /src/dovecot/src/lib-lua/dlua-script.c:467,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - script
    - fn
    argTypes:
    - struct dlua_script*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 470
    functionName: dlua_script_has_function
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 3
    functionsReached:
    - lua_rawget
    - lua_pushstring
    - lua_pop
    - lua_getglobal
    - i_assert
    - lua_isfunction
    linkageType: ''
    returnType: bool
    signature: bool dlua_script_has_function(struct dlua_script *script, const char
      *fn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:475,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-script.c:476,1
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-lua/dlua-script.c:476,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:480,1
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/lib-lua/dlua-script.c:483,1
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/lib-lua/dlua-script.c:486,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-lua/dlua-script.c:489,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-script.c:492,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-lua/dlua-script.c:495,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-script.c:497,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 3
    argNames:
    - L
    - values
    - idx
    argTypes:
    - lua_State*
    - struct dlua_table_values*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 500
    functionName: dlua_set_members
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 0
    functionsReached:
    - lua_pushboolean
    - i_unreached
    - lua_pushstring
    - lua_istable
    - lua_pushnil
    - i_assert
    - lua_pushnumber
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void dlua_set_members(lua_State *L, const struct dlua_table_values
      *values,\n\t\t     int idx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-script.c:505,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-script.c:507,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-lua/dlua-script.c:508,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lua/dlua-script.c:509,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lua/dlua-script.c:512,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-script.c:512,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lua/dlua-script.c:515,1
    - Dst: lua_toboolean
      Src: /src/dovecot/src/lib-lua/dlua-script.c:515,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lua/dlua-script.c:518,1
    - Dst: lua_tonumber
      Src: /src/dovecot/src/lib-lua/dlua-script.c:518,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lua/dlua-script.c:521,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-script.c:521,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-lua/dlua-script.c:524,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-lua/dlua-script.c:524,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 525
    functionName: dlua_dump_stack
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 1
    functionsReached:
    - lua_type
    - str_c
    - str_printfa
    - t_str_new
    - lua_typename
    - lua_tonumber
    - lua_toboolean
    - lua_tostring
    - lua_gettop
    - i_debug
    linkageType: ''
    returnType: void
    signature: void dlua_dump_stack(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_register
      Src: /src/dovecot/src/lib-lua/dlua-script.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - script
    - name
    - f
    argTypes:
    - struct dlua_script*
    - char*
    - lua_CFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 529
    functionDepth: 0
    functionLinenumber: 529
    functionLinenumberEnd: 533
    functionName: dlua_register
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-script.c
    functionUses: 3
    functionsReached:
    - lua_register
    linkageType: ''
    returnType: void
    signature: "void dlua_register(struct dlua_script *script, const char *name,\n\t\t
      \  lua_CFunction f)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:25,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:28,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 33
    functionName: dlua_io_close
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - luaL_checkudata
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int dlua_io_close(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:38,1
    - Dst: dlua_io_close
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:40,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 43
    functionName: dlua_io_gc
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - dlua_io_close
    - luaL_checkudata
    linkageType: ''
    returnType: int
    signature: int dlua_io_gc(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:48,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:50,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:52,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:52,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:54,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 56
    functionName: dlua_io_tostring
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - lua_pushstring
    - lua_pushliteral
    - i_stream_get_name
    - luaL_checkudata
    linkageType: ''
    returnType: int
    signature: int dlua_io_tostring(lua_State *L)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:61,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:63,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:65,1
    - Dst: luaL_tolstring
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:68,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:69,1
    - Dst: luaL_fileresult
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:73,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: dlua_o_write
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - luaL_fileresult
    - o_stream_sendv
    - luaL_tolstring
    - luaL_error
    - luaL_checkudata
    linkageType: ''
    returnType: int
    signature: int dlua_o_write(lua_State *L)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:81,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:83,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:85,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:87,1
    - Dst: luaL_fileresult
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:91,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 94
    functionName: dlua_o_flush
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - luaL_fileresult
    - luaL_error
    - o_stream_flush
    - luaL_checkudata
    linkageType: ''
    returnType: int
    signature: int dlua_o_flush(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:99,1
    - Dst: lua_tonumber
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:100,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:103,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:106,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 110
    functionName: dlua_io_setvbuf
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - lua_tonumber
    - luaL_error
    - i_stream_set_max_buffer_size
    - o_stream_set_max_buffer_size
    - luaL_checkudata
    linkageType: ''
    returnType: int
    signature: int dlua_io_setvbuf(lua_State *L)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:115,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:119,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:121,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:122,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:127,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:133,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:140,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:142,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:148,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:156,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:156,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:158,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:160,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:160,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:163,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:163,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 3
    argNames:
    - L
    - stream
    - nl
    argTypes:
    - lua_State*
    - struct dlua_iostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 165
    functionName: dlua_read_line
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - str_append_c
    - str_len
    - lua_pushstring
    - i_stream_have_bytes_left
    - i_stream_get_data
    - memchr
    - i_stream_skip
    - i_stream_read
    - str_truncate
    - str_append_data
    linkageType: ''
    returnType: bool
    signature: bool dlua_read_line(lua_State *L, struct dlua_iostream *stream, bool
      nl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:171,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:173,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:177,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:178,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:181,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - L
    - stream
    - bytes
    argTypes:
    - lua_State*
    - struct dlua_iostream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 184
    functionName: dlua_read_bytes
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - i_stream_skip
    - lua_pushlstring
    - str_append_data
    - i_stream_read_more
    linkageType: ''
    returnType: bool
    signature: bool dlua_read_bytes(lua_State *L, struct dlua_iostream *stream, size_t
      bytes)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:189,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:193,1
    - Dst: dlua_read_line
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:198,1
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:201,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:204,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:205,1
    - Dst: dlua_read_bytes
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:206,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:208,1
    - Dst: luaL_argerror
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:214,1
    - Dst: dlua_read_line
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:216,1
    - Dst: dlua_read_line
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:219,1
    - Dst: dlua_read_bytes
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:222,1
    - Dst: luaL_argerror
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:225,1
    - Dst: luaL_fileresult
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:233,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:233,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:237,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:238,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 3
    argNames:
    - L
    - stream
    - first
    argTypes:
    - lua_State*
    - struct dlua_iostream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 242
    functionName: dlua_i_read_common
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - lua_type
    - luaL_fileresult
    - luaL_argerror
    - luaL_checkinteger
    - lua_pop
    - dlua_read_bytes
    - luaL_checkstring
    - dlua_read_line
    - lua_pushnil
    - i_stream_get_name
    - lua_gettop
    - i_stream_read
    - luaL_checkstack
    linkageType: ''
    returnType: int
    signature: int dlua_i_read_common(lua_State *L, struct dlua_iostream *stream,
      int first)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:247,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:249,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:251,1
    - Dst: dlua_i_read_common
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 244
    functionDepth: 3
    functionLinenumber: 244
    functionLinenumberEnd: 253
    functionName: dlua_i_read
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - luaL_error
    - dlua_i_read_common
    - luaL_checkudata
    linkageType: ''
    returnType: int
    signature: int dlua_i_read(lua_State *L)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:261,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:263,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:265,1
    - Dst: luaL_checkoption
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:267,1
    - Dst: luaL_optinteger
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:268,1
    - Dst: luaL_argerror
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:271,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:274,1
    - Dst: luaL_argerror
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:276,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:279,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 281
    functionName: dlua_i_seek
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - i_stream_get_absolute_offset
    - luaL_argerror
    - luaL_optinteger
    - luaL_checkoption
    - i_stream_seek
    - luaL_error
    - luaL_checkudata
    linkageType: ''
    returnType: int
    signature: int dlua_i_seek(lua_State *L)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:286,1
    - Dst: lua_upvalueindex
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:286,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:288,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:290,1
    - Dst: lua_tointeger
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:293,1
    - Dst: lua_upvalueindex
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:293,1
    - Dst: lua_settop
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:294,1
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:295,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:297,1
    - Dst: lua_upvalueindex
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:297,1
    - Dst: dlua_i_read_common
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:299,1
    - Dst: lua_toboolean
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:300,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:303,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:303,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 306
    functionName: dlua_i_readline
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - lua_upvalueindex
    - lua_settop
    - lua_pushvalue
    - lua_toboolean
    - lua_tointeger
    - luaL_error
    - lua_tostring
    - i_assert
    - dlua_i_read_common
    - luaL_checkudata
    - luaL_checkstack
    linkageType: ''
    returnType: int
    signature: int dlua_i_readline(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:310,1
    - Dst: luaL_argerror
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:312,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:313,1
    - Dst: lua_pushcclosure
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 316
    functionName: dlua_i_lines
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 0
    functionsReached:
    - lua_gettop
    - lua_pushinteger
    - lua_pushcclosure
    - luaL_argerror
    linkageType: ''
    returnType: int
    signature: int dlua_i_lines(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_get_dovecot
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:336,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:337,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:338,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:339,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:340,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:342,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:343,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:344,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:345,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 347
    functionName: dlua_dovecot_io_register
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 1
    functionsReached:
    - luaL_newmetatable
    - lua_pushvalue
    - lua_pop
    - luaL_setfuncs
    - dlua_get_dovecot
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_dovecot_io_register(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newuserdata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:351,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:352,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - script
    - is
    argTypes:
    - struct dlua_script*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 360
    functionName: dlua_push_istream
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 1
    functionsReached:
    - luaL_setmetatable
    - i_stream_ref
    - lua_newuserdata
    linkageType: ''
    returnType: int
    signature: int dlua_push_istream(struct dlua_script *script, struct istream *is)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newuserdata
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:364,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:365,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-lua/dlua-iostream.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - script
    - os
    argTypes:
    - struct dlua_script*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 372
    functionName: dlua_push_ostream
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-iostream.c
    functionUses: 1
    functionsReached:
    - o_stream_ref
    - luaL_setmetatable
    - lua_newuserdata
    linkageType: ''
    returnType: int
    signature: int dlua_push_ostream(struct dlua_script *script, struct ostream *os)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - idx
    - delta
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: adj
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int adj(int idx, int delta)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-lua/dlua-table.c:41,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:42,1
    - Dst: lua_gettable
      Src: /src/dovecot/src/lib-lua/dlua-table.c:46,1
    - Dst: lua_isnoneornil
      Src: /src/dovecot/src/lib-lua/dlua-table.c:49,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:50,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-table.c:55,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - L
    - idx
    - type
    argTypes:
    - lua_State*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 61
    functionName: dlua_table_get
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_istable
    - lua_pop
    - lua_isnoneornil
    - lua_gettable
    linkageType: ''
    returnType: int
    signature: int dlua_table_get(lua_State *L, int idx, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-table.c:67,1
    - Dst: dlua_table_get
      Src: /src/dovecot/src/lib-lua/dlua-table.c:69,1
    - Dst: adj
      Src: /src/dovecot/src/lib-lua/dlua-table.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - L
    - idx
    - type
    - field
    argTypes:
    - lua_State*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 70
    functionName: dlua_table_get_by_str
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 1
    functionsReached:
    - lua_pushstring
    - adj
    - dlua_table_get
    linkageType: ''
    returnType: int
    signature: int dlua_table_get_by_str(lua_State *L, int idx, int type, const char
      *field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-table.c:76,1
    - Dst: dlua_table_get
      Src: /src/dovecot/src/lib-lua/dlua-table.c:78,1
    - Dst: adj
      Src: /src/dovecot/src/lib-lua/dlua-table.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - L
    - idx
    - type
    - field
    argTypes:
    - lua_State*
    - int
    - int
    - lua_Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 79
    functionName: dlua_table_get_by_int
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached:
    - dlua_table_get
    - lua_pushinteger
    - adj
    linkageType: ''
    returnType: int
    signature: int dlua_table_get_by_int(lua_State *L, int idx, int type, lua_Integer
      field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushthread
      Src: /src/dovecot/src/lib-lua/dlua-table.c:85,1
    - Dst: dlua_table_get
      Src: /src/dovecot/src/lib-lua/dlua-table.c:87,1
    - Dst: adj
      Src: /src/dovecot/src/lib-lua/dlua-table.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - L
    - idx
    - type
    argTypes:
    - lua_State*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: dlua_table_get_by_thread
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached:
    - lua_pushthread
    - adj
    - dlua_table_get
    linkageType: ''
    returnType: int
    signature: int dlua_table_get_by_thread(lua_State *L, int idx, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - fxn
    - ','
    - ctype
    - ','
    - minval
    - ','
    - maxval
    - ','
    - unsigned_check
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 157
    functionName: GET_INTTYPE
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_INTTYPE(fxn, ctype, minval, maxval, unsigned_check)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fxn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 202
    functionName: GET_DATAPTR
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_DATAPTR(fxn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - fxn
    - ','
    - ctype
    - ','
    - ltype
    - ','
    - cvt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 244
    functionName: GET_GENERIC
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_GENERIC(fxn, ctype, ltype, cvt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_table_get_by_str
      Src: /src/dovecot/src/lib-lua/dlua-table.c:257,1
    - Dst: lua_tointegerx
      Src: /src/dovecot/src/lib-lua/dlua-table.c:261,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - L
    - idx
    - field
    - value_r
    argTypes:
    - lua_State*
    - int
    - char*
    - lua_Integer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 265
    functionName: dlua_table_get_luainteger_by_str
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached:
    - lua_tointegerx
    - dlua_table_get_by_str
    - lua_pop
    linkageType: ''
    returnType: int
    signature: "int dlua_table_get_luainteger_by_str(lua_State *L, int idx, const
      char *field,\n\t\t\t\t     lua_Integer *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_table_get_by_int
      Src: /src/dovecot/src/lib-lua/dlua-table.c:274,1
    - Dst: lua_tointegerx
      Src: /src/dovecot/src/lib-lua/dlua-table.c:278,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - L
    - idx
    - field
    - value_r
    argTypes:
    - lua_State*
    - int
    - lua_Integer
    - lua_Integer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 282
    functionName: dlua_table_get_luainteger_by_int
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached:
    - lua_tointegerx
    - lua_pop
    - dlua_table_get_by_int
    linkageType: ''
    returnType: int
    signature: "int dlua_table_get_luainteger_by_int(lua_State *L, int idx, lua_Integer
      field,\n\t\t\t\t     lua_Integer *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_table_get_by_thread
      Src: /src/dovecot/src/lib-lua/dlua-table.c:291,1
    - Dst: lua_tointegerx
      Src: /src/dovecot/src/lib-lua/dlua-table.c:295,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - L
    - idx
    - value_r
    argTypes:
    - lua_State*
    - int
    - lua_Integer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 299
    functionName: dlua_table_get_luainteger_by_thread
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 0
    functionsReached:
    - dlua_table_get_by_thread
    - lua_tointegerx
    - lua_pop
    linkageType: ''
    returnType: int
    signature: "int dlua_table_get_luainteger_by_thread(lua_State *L, int idx,\n\t\t\t\t\tlua_Integer
      *value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-lua/dlua-table.c:309,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-lua/dlua-table.c:310,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-table.c:312,1
    - Dst: lua_next
      Src: /src/dovecot/src/lib-lua/dlua-table.c:315,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-table.c:319,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-table.c:320,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-table.c:320,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-table.c:321,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-table.c:323,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-table.c:323,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-table.c:325,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-table.c:327,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-table.c:327,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:328,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-lua/dlua-table.c:332,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-lua/dlua-table.c:333,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:334,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-lua/dlua-table.c:337,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-lua/dlua-table.c:338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 5
    argNames:
    - L
    - idx
    - pool
    - arr_r
    - error_r
    argTypes:
    - lua_State*
    - int
    - pool_t
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 340
    functionName: dlua_strtable_to_kvarray
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 1
    functionsReached:
    - lua_type
    - p_strdup
    - p_array_init
    - lua_typename
    - array_push_back
    - lua_pushvalue
    - lua_next
    - t_strdup_printf
    - lua_pop
    - lua_pushnil
    - ARRAY_TYPE
    - array_front
    - lua_tostring
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dlua_strtable_to_kvarray(lua_State *L, int idx, pool_t pool,\n\t\t\t
      \    const char *const **arr_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-lua/dlua-table.c:345,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-lua/dlua-table.c:346,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-table.c:348,1
    - Dst: lua_next
      Src: /src/dovecot/src/lib-lua/dlua-table.c:351,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lua/dlua-table.c:352,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-table.c:352,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-table.c:354,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-table.c:356,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-table.c:356,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:357,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-lua/dlua-table.c:361,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-table.c:362,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-lua/dlua-table.c:365,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-lua/dlua-table.c:366,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 5
    argNames:
    - L
    - idx
    - pool
    - arr_r
    - error_r
    argTypes:
    - lua_State*
    - int
    - pool_t
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 368
    functionName: dlua_table_to_array
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-table.c
    functionUses: 1
    functionsReached:
    - lua_type
    - p_strdup
    - p_array_init
    - lua_typename
    - array_push_back
    - lua_next
    - t_strdup_printf
    - lua_pop
    - lua_pushnil
    - ARRAY_TYPE
    - array_front
    - lua_tostring
    - array_append_zero
    linkageType: ''
    returnType: int
    signature: "int dlua_table_to_array(lua_State *L, int idx, pool_t pool,\n\t\t\tconst
      char *const **arr_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-lua/dlua-pushstring.c:11,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-lua/dlua-pushstring.c:12,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-pushstring.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - L
    - fmt
    - argp
    argTypes:
    - lua_State*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 14
    functionName: dlua_push_vfstring
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-pushstring.c
    functionUses: 1
    functionsReached:
    - lua_tostring
    - lua_pushstring
    - t_strdup_vprintf
    linkageType: ''
    returnType: char
    signature: char *dlua_push_vfstring(lua_State *L, const char *fmt, va_list argp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-lua/dlua-pushstring.c:22,1
    - Dst: dlua_push_vfstring
      Src: /src/dovecot/src/lib-lua/dlua-pushstring.c:23,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-lua/dlua-pushstring.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - L
    - fmt
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 26
    functionName: dlua_push_fstring
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-pushstring.c
    functionUses: 0
    functionsReached:
    - va_end
    - dlua_push_vfstring
    - va_start
    linkageType: ''
    returnType: char
    signature: char *dlua_push_fstring(lua_State *L, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:22,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:24,1
    - Dst: dlua_tls_clear
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:26,1
    - Dst: struct dlua_pcall_resume_state*::callback
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:28,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: call_resume_callback
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-resume.c
    functionUses: 0
    functionsReached:
    - dlua_tls_get_ptr
    - struct dlua_pcall_resume_state*::callback
    - dlua_tls_clear
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void call_resume_callback(lua_State *L)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:35,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:37,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:45,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:48,1
    - Dst: lua_remove
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:51,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:54,1
    - Dst: lua_pcall
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:79,1
    - Dst: lua_remove
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:85,1
    - Dst: lua_remove
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:88,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:92,1
    - Dst: lua_remove
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:93,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:94,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:94,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:107,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - L
    - status
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 109
    functionName: queue_resume_callback
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-resume.c
    functionUses: 0
    functionsReached:
    - i_assert
    - dlua_tls_get_ptr
    - timeout_add_short
    - lua_pushvalue
    - lua_getglobal
    - lua_pcall
    - lua_getfield
    - lua_gettop
    - lua_remove
    linkageType: ''
    returnType: void
    signature: void queue_resume_callback(lua_State *L, int status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlua_tls_get_int
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:117,1
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:118,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:120,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:121,1
    - Dst: dlua_tls_clear
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:123,1
    - Dst: dlua_tls_clear
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:124,1
    - Dst: lua_resume
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:126,1
    - Dst: dlua_event_passthrough_abort
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:127,1
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:127,1
    - Dst: queue_resume_callback
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:137,1
    - Dst: queue_resume_callback
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 142
    functionName: dlua_pcall_yieldable_continue
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-resume.c
    functionUses: 0
    functionsReached:
    - dlua_tls_get_int
    - dlua_tls_get_ptr
    - queue_resume_callback
    - lua_resume
    - dlua_script_from_state
    - dlua_event_passthrough_abort
    - dlua_tls_clear
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dlua_pcall_yieldable_continue(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_tls_get_ptr
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:148,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:149,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:151,1
    - Dst: dlua_tls_set_ptr
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:153,1
    - Dst: dlua_tls_set_int
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - L
    - nargs
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 155
    functionName: dlua_pcall_yieldable_resume
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-resume.c
    functionUses: 0
    functionsReached:
    - dlua_tls_get_ptr
    - timeout_add_short
    - dlua_tls_set_ptr
    - dlua_tls_set_int
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dlua_pcall_yieldable_resume(lua_State *L, int nargs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:172,1
    - Dst: lua_status
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:172,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:173,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:173,1
    - Dst: lua_getglobal
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:175,1
    - Dst: lua_isfunction
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:177,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:179,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:180,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:185,1
    - Dst: dlua_tls_set_ptr
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:189,1
    - Dst: lua_insert
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:192,1
    - Dst: lua_resume
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:195,1
    - Dst: dlua_event_passthrough_abort
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:196,1
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:196,1
    - Dst: queue_resume_callback
      Src: /src/dovecot/src/lib-lua/dlua-resume.c:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 6
    argNames:
    - L
    - func_name
    - nargs
    - callback
    - context
    - error_r
    argTypes:
    - lua_State*
    - char*
    - int
    - dlua_pcall_yieldable_callback_t*
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 219
    functionName: dlua_pcall_yieldable
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-resume.c
    functionUses: 2
    functionsReached:
    - lua_status
    - queue_resume_callback
    - lua_resume
    - dlua_tls_set_ptr
    - lua_pop
    - lua_getglobal
    - t_strdup_printf
    - lua_insert
    - i_new
    - dlua_script_from_state
    - dlua_event_passthrough_abort
    - lua_gettop
    - i_assert
    - lua_isfunction
    linkageType: ''
    returnType: int
    signature: "int dlua_pcall_yieldable(lua_State *L, const char *func_name, int
      nargs,\n\t\t\t dlua_pcall_yieldable_callback_t *callback,\n\t\t\t void *context,
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:35,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: dlua_init_thread_table
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 1
    functionsReached:
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_init_thread_table(struct dlua_script *script)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:48,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:50,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:50,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:52,1
    - Dst: lua_next
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:53,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:57,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:58,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:59,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:59,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:61,1
    - Dst: lua_tothread
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:61,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:65,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:66,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:67,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:67,1
    - Dst: warn_about_tls_leaks
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:69,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:73,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 77
    functionName: warn_about_leaked_threads
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_typename
    - lua_next
    - lua_pop
    - lua_pushnil
    - e_error
    - lua_getfield
    - lua_tothread
    - warn_about_tls_leaks
    - i_assert
    linkageType: ''
    returnType: void
    signature: void warn_about_leaked_threads(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: warn_about_leaked_threads
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:82,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:85,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 87
    functionName: dlua_free_thread_table
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 1
    functionsReached:
    - lua_pushnil
    - warn_about_leaked_threads
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_free_thread_table(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:94,1
    - Dst: lua_newthread
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:97,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:98,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:101,1
    - Dst: lua_settable
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:106,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 112
    functionName: dlua_script_new_thread
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 3
    functionsReached:
    - lua_newthread
    - lua_pop
    - lua_settable
    - lua_getfield
    - i_assert
    - lua_newtable
    linkageType: ''
    returnType: lua_State
    signature: lua_State *dlua_script_new_thread(struct dlua_script *script)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_getmetatable
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:121,1
    - Dst: dlua_table_get_string_by_str
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:123,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:126,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:129,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:130,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - script
    - L
    - full
    argTypes:
    - struct dlua_script*
    - lua_State*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 133
    functionName: log_tls_leak
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 0
    functionsReached:
    - dlua_table_get_string_by_str
    - lua_pop
    - e_error
    - lua_touserdata
    - lua_getmetatable
    - lua_tostring
    linkageType: ''
    returnType: void
    signature: void log_tls_leak(struct dlua_script *script, lua_State *L, bool full)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:137,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:137,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:139,1
    - Dst: lua_next
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:140,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:143,1
    - Dst: warn_about_tls_leaks
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:154,1
    - Dst: log_tls_leak
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:157,1
    - Dst: log_tls_leak
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:160,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:165,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - script
    - L
    argTypes:
    - struct dlua_script*
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 167
    functionName: warn_about_tls_leaks
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 2
    functionsReached:
    - lua_type
    - lua_next
    - lua_pop
    - lua_pushnil
    - warn_about_tls_leaks
    - i_assert
    - log_tls_leak
    linkageType: ''
    returnType: void
    signature: void warn_about_tls_leaks(struct dlua_script *script, lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_tls_table
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:175,1
    - Dst: warn_about_tls_leaks
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:176,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:177,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:183,1
    - Dst: lua_pushthread
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:183,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:185,1
    - Dst: lua_settable
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:195,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - script
    - _L
    argTypes:
    - struct dlua_script*
    - lua_State**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 201
    functionName: dlua_script_close_thread
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 3
    functionsReached:
    - get_tls_table
    - lua_pop
    - lua_pushnil
    - lua_settable
    - lua_getfield
    - lua_pushthread
    - warn_about_tls_leaks
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dlua_script_close_thread(struct dlua_script *script, lua_State
      **_L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlua_table_get_by_str
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:209,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:212,1
    - Dst: dlua_table_get_by_thread
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:216,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:218,1
    - Dst: lua_remove
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 224
    functionName: get_tls_table
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 1
    functionsReached:
    - dlua_table_get_by_thread
    - dlua_table_get_by_str
    - lua_remove
    - luaL_error
    linkageType: ''
    returnType: void
    signature: void get_tls_table(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_tls_table
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:228,1
    - Dst: lua_pushlightuserdata
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:229,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:230,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - L
    - name
    - ptr
    argTypes:
    - lua_State*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 232
    functionName: dlua_tls_set_ptr
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 3
    functionsReached:
    - lua_pushlightuserdata
    - lua_pop
    - get_tls_table
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_tls_set_ptr(lua_State *L, const char *name, void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_tls_table
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:238,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:239,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:241,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - L
    - name
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 246
    functionName: dlua_tls_get_ptr
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 5
    functionsReached:
    - lua_getfield
    - lua_pop
    - lua_touserdata
    - get_tls_table
    linkageType: ''
    returnType: void
    signature: void *dlua_tls_get_ptr(lua_State *L, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_tls_table
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:250,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:251,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:252,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - L
    - name
    - i
    argTypes:
    - lua_State*
    - char*
    - lua_Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 248
    functionDepth: 3
    functionLinenumber: 248
    functionLinenumberEnd: 254
    functionName: dlua_tls_set_int
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 2
    functionsReached:
    - lua_pushinteger
    - lua_pop
    - get_tls_table
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_tls_set_int(lua_State *L, const char *name, lua_Integer i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_tls_table
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:260,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:261,1
    - Dst: lua_tointeger
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:263,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - L
    - name
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 256
    functionDepth: 3
    functionLinenumber: 256
    functionLinenumberEnd: 268
    functionName: dlua_tls_get_int
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 2
    functionsReached:
    - lua_getfield
    - lua_pop
    - lua_tointeger
    - get_tls_table
    linkageType: ''
    returnType: lua_Integer
    signature: lua_Integer dlua_tls_get_int(lua_State *L, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_tls_table
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:272,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:273,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:274,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-lua/dlua-thread.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - L
    - name
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 276
    functionName: dlua_tls_clear
    functionSourceFile: /src/dovecot/src/lib-lua/dlua-thread.c
    functionUses: 3
    functionsReached:
    - lua_pushnil
    - lua_pop
    - get_tls_table
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_tls_clear(lua_State *L, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-regex/regex.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - amt
    - _ctx
    argTypes:
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: dregex_code_int_malloc
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void *dregex_code_int_malloc(size_t amt, void *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-regex/regex.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - _ctx
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: dregex_code_int_free
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - p_free
    linkageType: ''
    returnType: void
    signature: void dregex_code_int_free(void *ptr, void *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - depth
    - ctx
    argTypes:
    - uint
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: dregex_code_guard
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dregex_code_guard(uint depth, void *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcre2_general_context_create
      Src: /src/dovecot/src/lib-regex/regex.c:76,1
    - Dst: pcre2_compile_context_create
      Src: /src/dovecot/src/lib-regex/regex.c:78,1
    - Dst: pcre2_match_context_create
      Src: /src/dovecot/src/lib-regex/regex.c:79,1
    - Dst: pcre2_set_compile_recursion_guard
      Src: /src/dovecot/src/lib-regex/regex.c:81,1
    - Dst: pcre2_set_callout
      Src: /src/dovecot/src/lib-regex/regex.c:83,1
    - Dst: pcre2_set_substitute_callout
      Src: /src/dovecot/src/lib-regex/regex.c:85,1
    - Dst: pcre2_set_match_limit
      Src: /src/dovecot/src/lib-regex/regex.c:89,1
    - Dst: pcre2_set_depth_limit
      Src: /src/dovecot/src/lib-regex/regex.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - code
    argTypes:
    - struct dregex_code*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 91
    functionName: dregex_code_init
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - pcre2_set_compile_recursion_guard
    - pcre2_set_substitute_callout
    - pcre2_set_match_limit
    - pcre2_set_callout
    - pcre2_general_context_create
    - pcre2_set_depth_limit
    - pcre2_compile_context_create
    - pcre2_match_context_create
    linkageType: ''
    returnType: void
    signature: void dregex_code_init(struct dregex_code *code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib-regex/regex.c:95,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-regex/regex.c:96,1
    - Dst: dregex_code_init
      Src: /src/dovecot/src/lib-regex/regex.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - params
    argTypes:
    - struct dregex_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 103
    functionName: dregex_code_create_params
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - p_new
    - pool_allocfree_create
    - dregex_code_init
    linkageType: ''
    returnType: struct dregex_code
    signature: struct dregex_code *dregex_code_create_params(const struct dregex_params
      *params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dregex_code_create_params
      Src: /src/dovecot/src/lib-regex/regex.c:113,1
    - Dst: dregex_code_init
      Src: /src/dovecot/src/lib-regex/regex.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: dregex_code_create
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - dregex_code_create_params
    - dregex_code_init
    linkageType: ''
    returnType: struct dregex_code
    signature: struct dregex_code *dregex_code_create(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-regex/regex.c:128,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-regex/regex.c:129,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-regex/regex.c:134,1
    - Dst: uni_utf8_to_ucs4
      Src: /src/dovecot/src/lib-regex/regex.c:136,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-regex/regex.c:138,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-regex/regex.c:142,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - input
    - out_r
    - len_r
    - refuse_non_ascii
    argTypes:
    - char*
    - PCRE2_SPTR*
    - PCRE2_SIZE*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 144
    functionName: convert_to_sptr
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_idx
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - uni_utf8_to_ucs4
    linkageType: ''
    returnType: int
    signature: "int convert_to_sptr(const char *input, PCRE2_SPTR *out_r, PCRE2_SIZE
      *len_r,\n\t\t\t   bool refuse_non_ascii)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-regex/regex.c:151,1
    - Dst: pcre2_get_error_message
      Src: /src/dovecot/src/lib-regex/regex.c:152,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-regex/regex.c:155,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-regex/regex.c:157,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-regex/regex.c:162,1
    - Dst: uni_ucs4_to_utf8
      Src: /src/dovecot/src/lib-regex/regex.c:163,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-regex/regex.c:164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ret
    - func
    - error_r
    argTypes:
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 167
    functionName: handle_error
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 4
    functionsReached:
    - str_c
    - i_fatal_status
    - t_strdup_printf
    - t_buffer_create
    - pcre2_get_error_message
    - uni_ucs4_to_utf8
    linkageType: ''
    returnType: int
    signature: int handle_error(int ret, const char *func, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ret
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: handle_error
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: handle_error(ret, error_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:173,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:174,1
    - Dst: pcre2_code_free
      Src: /src/dovecot/src/lib-regex/regex.c:179,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:187,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:189,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:191,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:193,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:195,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:198,1
    - Dst: PCRE2_SPTR32
      Src: /src/dovecot/src/lib-regex/regex.c:209,1
    - Dst: convert_to_sptr
      Src: /src/dovecot/src/lib-regex/regex.c:210,1
    - Dst: pcre2_compile
      Src: /src/dovecot/src/lib-regex/regex.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:219,1
    - Dst: handle_error
      Src: /src/dovecot/src/lib-regex/regex.c:222,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 4
    argNames:
    - code
    - pattern
    - flags
    - error_r
    argTypes:
    - struct dregex_code*
    - char*
    - enum dregex_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 225
    functionName: dregex_code_compile
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - handle_error
    - pcre2_compile
    - PCRE2_SPTR32
    - convert_to_sptr
    - pcre2_code_free
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dregex_code_compile(struct dregex_code *code, const char *pattern,\n\t\t\tenum
      dregex_flags flags, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcre2_serialize_encode
      Src: /src/dovecot/src/lib-regex/regex.c:236,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-regex/regex.c:236,1
    - Dst: handle_error
      Src: /src/dovecot/src/lib-regex/regex.c:240,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-regex/regex.c:241,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:245,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-regex/regex.c:247,1
    - Dst: pcre2_serialize_free
      Src: /src/dovecot/src/lib-regex/regex.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - code
    - buffer
    argTypes:
    - struct dregex_code*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 249
    functionName: dregex_code_export
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - i_panic
    - buffer_append
    - handle_error
    - pcre2_serialize_encode
    - pcre2_serialize_free
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void dregex_code_export(const struct dregex_code *code, buffer_t *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcre2_serialize_decode
      Src: /src/dovecot/src/lib-regex/regex.c:254,1
    - Dst: handle_error
      Src: /src/dovecot/src/lib-regex/regex.c:257,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - code
    - buffer
    - error_r
    argTypes:
    - struct dregex_code*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 261
    functionName: dregex_code_import
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - i_assert
    - handle_error
    - pcre2_serialize_decode
    linkageType: ''
    returnType: int
    signature: "int dregex_code_import(struct dregex_code *code, const buffer_t *buffer,\n\t\t
      \      const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcre2_substring_length_bynumber
      Src: /src/dovecot/src/lib-regex/regex.c:274,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-regex/regex.c:279,1
    - Dst: pcre2_substring_get_bynumber
      Src: /src/dovecot/src/lib-regex/regex.c:283,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-regex/regex.c:284,1
    - Dst: uni_ucs4_to_utf8
      Src: /src/dovecot/src/lib-regex/regex.c:285,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-regex/regex.c:286,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-regex/regex.c:287,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 4
    argNames:
    - count
    - mdata
    - skip_empty
    - groups_r
    argTypes:
    - uint
    - pcre2_match_data*
    - bool
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 289
    functionName: extract_matches
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - pcre2_substring_get_bynumber
    - str_c
    - array_push_back
    - t_buffer_create
    - pcre2_substring_length_bynumber
    - uni_ucs4_to_utf8
    linkageType: ''
    returnType: void
    signature: "void extract_matches(uint count, pcre2_match_data *mdata,\n\t\t\t
      \   bool skip_empty, ARRAY_TYPE(const_string) *groups_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:294,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:295,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:296,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:301,1
    - Dst: convert_to_sptr
      Src: /src/dovecot/src/lib-regex/regex.c:302,1
    - Dst: handle_error
      Src: /src/dovecot/src/lib-regex/regex.c:303,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:308,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:310,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:312,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib-regex/regex.c:315,1
    - Dst: pcre2_match
      Src: /src/dovecot/src/lib-regex/regex.c:316,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib-regex/regex.c:318,1
    - Dst: handle_error
      Src: /src/dovecot/src/lib-regex/regex.c:324,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - code
    - subject
    - mdata
    - error_r
    argTypes:
    - struct dregex_code*
    - char*
    - pcre2_match_data*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 328
    functionName: dregex_code_match_int
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - handle_error
    - cpu_limit_deinit
    - cpu_limit_init
    - convert_to_sptr
    - pcre2_match
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dregex_code_match_int(struct dregex_code *code, const char *subject,\n\t\t\t\t
      pcre2_match_data *mdata, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:333,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:334,1
    - Dst: pcre2_match_data_create
      Src: /src/dovecot/src/lib-regex/regex.c:339,1
    - Dst: dregex_code_match_int
      Src: /src/dovecot/src/lib-regex/regex.c:340,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:342,1
    - Dst: extract_matches
      Src: /src/dovecot/src/lib-regex/regex.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - code
    - subject
    - groups_r
    - error_r
    argTypes:
    - struct dregex_code*
    - char*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 330
    functionDepth: 3
    functionLinenumber: 330
    functionLinenumberEnd: 347
    functionName: dregex_code_match_groups
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - pcre2_match_data_create
    - extract_matches
    - dregex_code_match_int
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dregex_code_match_groups(struct dregex_code *code, const char
      *subject,\n\t\t\t     ARRAY_TYPE(const_string) *groups_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dregex_code_match_groups
      Src: /src/dovecot/src/lib-regex/regex.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - code
    - subject
    - error_r
    argTypes:
    - struct dregex_code*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 355
    functionName: dregex_code_match
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - dregex_code_match_groups
    linkageType: ''
    returnType: int
    signature: "int dregex_code_match(struct dregex_code *code, const char *subject,\n\t\t
      \     const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:362,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:363,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:364,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:365,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:366,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:369,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:371,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:373,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:386,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-regex/regex.c:387,1
    - Dst: convert_to_sptr
      Src: /src/dovecot/src/lib-regex/regex.c:395,1
    - Dst: convert_to_sptr
      Src: /src/dovecot/src/lib-regex/regex.c:396,1
    - Dst: pcre2_match_data_create_from_pattern
      Src: /src/dovecot/src/lib-regex/regex.c:402,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib-regex/regex.c:404,1
    - Dst: pcre2_substitute
      Src: /src/dovecot/src/lib-regex/regex.c:406,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib-regex/regex.c:410,1
    - Dst: pcre2_match_data_free
      Src: /src/dovecot/src/lib-regex/regex.c:414,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-regex/regex.c:419,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib-regex/regex.c:422,1
    - Dst: pcre2_substitute
      Src: /src/dovecot/src/lib-regex/regex.c:424,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib-regex/regex.c:427,1
    - Dst: pcre2_match_data_free
      Src: /src/dovecot/src/lib-regex/regex.c:428,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-regex/regex.c:432,1
    - Dst: handle_error
      Src: /src/dovecot/src/lib-regex/regex.c:433,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-regex/regex.c:435,1
    - Dst: uni_ucs4_to_utf8
      Src: /src/dovecot/src/lib-regex/regex.c:436,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-regex/regex.c:437,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 7
    argNames:
    - code
    - subject
    - startoffset
    - replacement
    - result_r
    - flags
    - error_r
    argTypes:
    - struct dregex_code*
    - char*
    - size_t
    - char*
    - string_t*
    - enum dregex_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 441
    functionName: dregex_code_replace_full
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - pcre2_match_data_free
    - handle_error
    - cpu_limit_deinit
    - cpu_limit_init
    - convert_to_sptr
    - pcre2_match_data_create_from_pattern
    - i_new
    - HAS_ALL_BITS
    - i_assert
    - i_free
    - uni_ucs4_to_utf8
    - pcre2_substitute
    linkageType: ''
    returnType: int
    signature: "int dregex_code_replace_full(struct dregex_code *code,\n\t\t\t     const
      char *subject, size_t startoffset,\n\t\t\t     const char *replacement, string_t
      *result_r,\n\t\t\t     enum dregex_flags flags, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: convert_to_sptr
      Src: /src/dovecot/src/lib-regex/regex.c:395,1
    - Dst: convert_to_sptr
      Src: /src/dovecot/src/lib-regex/regex.c:396,1
    - Dst: pcre2_match_data_create_from_pattern
      Src: /src/dovecot/src/lib-regex/regex.c:402,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib-regex/regex.c:404,1
    - Dst: pcre2_substitute
      Src: /src/dovecot/src/lib-regex/regex.c:406,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib-regex/regex.c:410,1
    - Dst: pcre2_match_data_free
      Src: /src/dovecot/src/lib-regex/regex.c:414,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-regex/regex.c:419,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib-regex/regex.c:422,1
    - Dst: pcre2_substitute
      Src: /src/dovecot/src/lib-regex/regex.c:424,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib-regex/regex.c:427,1
    - Dst: pcre2_match_data_free
      Src: /src/dovecot/src/lib-regex/regex.c:428,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 389
    functionDepth: 2
    functionLinenumber: 389
    functionLinenumberEnd: 429
    functionName: do
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - pcre2_match_data_free
    - cpu_limit_deinit
    - cpu_limit_init
    - convert_to_sptr
    - pcre2_match_data_create_from_pattern
    - i_new
    - pcre2_substitute
    linkageType: ''
    returnType: T_BEGIN
    signature: T_BEGIN do
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dregex_code_replace_full
      Src: /src/dovecot/src/lib-regex/regex.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - code
    - subject
    - replacement
    - result_r
    - flags
    - error_r
    argTypes:
    - struct dregex_code*
    - char*
    - char*
    - string_t*
    - enum dregex_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 449
    functionName: dregex_code_replace
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - dregex_code_replace_full
    linkageType: ''
    returnType: int
    signature: "int dregex_code_replace(struct dregex_code *code, const char *subject,\n\t\t\tconst
      char *replacement, string_t *result_r,\n\t\t\tenum dregex_flags flags, const
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcre2_code_free
      Src: /src/dovecot/src/lib-regex/regex.c:459,1
    - Dst: pcre2_match_context_free
      Src: /src/dovecot/src/lib-regex/regex.c:460,1
    - Dst: pcre2_compile_context_free
      Src: /src/dovecot/src/lib-regex/regex.c:461,1
    - Dst: pcre2_general_context_free
      Src: /src/dovecot/src/lib-regex/regex.c:462,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-regex/regex.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _code
    argTypes:
    - struct dregex_code**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 464
    functionName: dregex_code_free
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - pcre2_compile_context_free
    - pcre2_general_context_free
    - pool_unref
    - pcre2_code_free
    - pcre2_match_context_free
    linkageType: ''
    returnType: void
    signature: void dregex_code_free(struct dregex_code **_code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dregex_code_create
      Src: /src/dovecot/src/lib-regex/regex.c:469,1
    - Dst: if
      Src: /src/dovecot/src/lib-regex/regex.c:473,1
    - Dst: dregex_code_compile
      Src: /src/dovecot/src/lib-regex/regex.c:473,1
    - Dst: dregex_code_match_groups
      Src: /src/dovecot/src/lib-regex/regex.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - pattern
    - subject
    - flags
    - groups_r
    - error_r
    argTypes:
    - char*
    - char*
    - enum dregex_flags
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 479
    functionName: dregex_match_groups
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - dregex_code_compile
    - dregex_code_match_groups
    - dregex_code_create
    - if
    linkageType: ''
    returnType: int
    signature: "int dregex_match_groups(const char *pattern, const char *subject,
      enum dregex_flags flags,\n\t\t\tARRAY_TYPE(const_string) *groups_r, const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dregex_match_groups
      Src: /src/dovecot/src/lib-regex/regex.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - pattern
    - subject
    - flags
    - error_r
    argTypes:
    - char*
    - char*
    - enum dregex_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 489
    functionName: dregex_match
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - dregex_match_groups
    linkageType: ''
    returnType: int
    signature: "int dregex_match(const char *pattern, const char *subject, enum dregex_flags
      flags,\n\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dregex_code_create
      Src: /src/dovecot/src/lib-regex/regex.c:495,1
    - Dst: dregex_code_compile
      Src: /src/dovecot/src/lib-regex/regex.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - pattern
    - subject
    - replace
    - result_r
    - flags
    - error_r
    argTypes:
    - char*
    - char*
    - char*
    - string_t*
    - enum dregex_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 500
    functionName: dregex_replace
    functionSourceFile: /src/dovecot/src/lib-regex/regex.c
    functionUses: 0
    functionsReached:
    - dregex_code_compile
    - dregex_code_create
    linkageType: ''
    returnType: int
    signature: "int dregex_replace(const char *pattern, const char *subject, const
      char *replace,\n\t\t   string_t *result_r, enum dregex_flags flags,\n\t\t   const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 138
    functionName: NO_DREGEX_SUPPORT_CODE
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NO_DREGEX_SUPPORT_CODE(error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - pattern
    - ','
    - subject
    - ','
    - flags
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: dregex_match
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dregex_match(pattern, subject, flags, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - pattern
    - ','
    - subject
    - ','
    - flags
    - ','
    - groups_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: dregex_match_groups
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dregex_match_groups(pattern, subject, flags, groups_r, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - pattern
    - ','
    - subject
    - ','
    - replace
    - ','
    - result_r
    - ','
    - flags
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: dregex_replace
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "dregex_replace(pattern, subject, replace, result_r, \\\n\t\t\tflags,
      error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: dregex_code_create
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dregex_code_create()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - code
    - ','
    - pattern
    - ','
    - flags
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: dregex_code_compile
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dregex_code_compile(code, pattern, flags, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - code
    - ','
    - buffer
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: dregex_code_import
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dregex_code_import(code, buffer, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - code
    - ','
    - subject
    - ','
    - groups_r
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: dregex_code_match_groups
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dregex_code_match_groups(code, subject, groups_r, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - code
    - ','
    - subject
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: dregex_code_match
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dregex_code_match(code, subject, error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - code
    - ','
    - subject
    - ','
    - startoffset
    - ','
    - replacement
    - ','
    - result_r
    - ','
    - flags
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: dregex_code_replace_full
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "dregex_code_replace_full(code, subject, startoffset, replacement,
      result_r, \\\n\t\t\t\t  flags, error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - code
    - ','
    - subject
    - ','
    - replacement
    - ','
    - result_r
    - ','
    - flags
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: dregex_code_replace
    functionSourceFile: /src/dovecot/src/lib-regex/dregex.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dregex_code_replace(code, subject, replacement, result_r, flags, error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dregex_code_create
      Src: /src/dovecot/src/lib-regex/test-regex.c:27,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-regex/test-regex.c:34,1
    - Dst: dregex_code_compile
      Src: /src/dovecot/src/lib-regex/test-regex.c:39,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:41,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:43,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-regex/test-regex.c:46,1
    - Dst: test_assert_failed_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:47,1
    - Dst: dregex_code_match
      Src: /src/dovecot/src/lib-regex/test-regex.c:51,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:53,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:55,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-regex/test-regex.c:57,1
    - Dst: test_assert_failed_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:58,1
    - Dst: dregex_code_free
      Src: /src/dovecot/src/lib-regex/test-regex.c:62,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - cases
    argTypes:
    - struct test_case*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 63
    functionName: run_match_tests
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached:
    - test_assert_cmp_idx
    - dregex_code_create
    - dregex_code_free
    - t_strdup_printf
    - test_assert_failed_idx
    - dregex_code_match
    - dregex_code_compile
    - i_debug
    - test_assert_strcmp_idx
    linkageType: ''
    returnType: void
    signature: void run_match_tests(const struct test_case *cases)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - pat
    - ','
    - sub
    - ','
    - err
    - ','
    - cret
    - ','
    - mret
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: MATCH_CASE_FULL
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MATCH_CASE_FULL(pat, sub, err, cret, mret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pattern
    - ','
    - subject
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: MATCH_CASE
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MATCH_CASE(pattern, subject)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: STR
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: REP
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: REP10
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REP10(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:86,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:88,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:90,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:92,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:93,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:97,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:98,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:100,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:101,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:103,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:104,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:106,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:107,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:109,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:110,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:111,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:112,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:113,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:114,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:116,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:120,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:121,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:123,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:124,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:125,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:128,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:135,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:154,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:156,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:161,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:161,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:161,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:161,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:161,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:167,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:169,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:169,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:169,1
    - Dst: REP10
      Src: /src/dovecot/src/lib-regex/test-regex.c:169,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:175,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:177,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:179,1
    - Dst: MATCH_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:180,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:195,1
    - Dst: MATCH_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:196,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-regex/test-regex.c:200,1
    - Dst: run_match_tests
      Src: /src/dovecot/src/lib-regex/test-regex.c:202,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-regex/test-regex.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 205
    functionName: test_dregex_match
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached:
    - MATCH_CASE
    - test_end
    - MATCH_CASE_FULL
    - REP10
    - run_match_tests
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dregex_match(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dregex_code_create
      Src: /src/dovecot/src/lib-regex/test-regex.c:210,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-regex/test-regex.c:211,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-regex/test-regex.c:216,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-regex/test-regex.c:219,1
    - Dst: dregex_code_compile
      Src: /src/dovecot/src/lib-regex/test-regex.c:226,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:228,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:230,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-regex/test-regex.c:233,1
    - Dst: test_assert_failed_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:234,1
    - Dst: dregex_code_replace
      Src: /src/dovecot/src/lib-regex/test-regex.c:238,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:241,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:243,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-regex/test-regex.c:246,1
    - Dst: test_assert_failed_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:247,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-regex/test-regex.c:250,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-regex/test-regex.c:250,1
    - Dst: dregex_code_free
      Src: /src/dovecot/src/lib-regex/test-regex.c:252,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - cases
    argTypes:
    - struct test_case*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 253
    functionName: run_replace_tests
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached:
    - test_assert_cmp_idx
    - t_str_new
    - str_c
    - dregex_code_create
    - dregex_code_free
    - t_strdup_printf
    - dregex_code_replace
    - test_assert_failed_idx
    - str_truncate
    - dregex_code_compile
    - i_debug
    - test_assert_strcmp_idx
    linkageType: ''
    returnType: void
    signature: void run_replace_tests(const struct test_case *cases)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - pat
    - ','
    - sub
    - ','
    - rep
    - ','
    - res
    - ','
    - err
    - ','
    - cret
    - ','
    - mret
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 265
    functionName: REP_CASE_FULL
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REP_CASE_FULL(pat, sub, rep, res, err, cret, mret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - pattern
    - ','
    - subject
    - ','
    - replacement
    - ','
    - result
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 267
    functionName: REP_CASE
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REP_CASE(pattern, subject, replacement, result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REP_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:273,1
    - Dst: REP_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:275,1
    - Dst: REP_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:277,1
    - Dst: REP_CASE
      Src: /src/dovecot/src/lib-regex/test-regex.c:280,1
    - Dst: REP_CASE_FULL
      Src: /src/dovecot/src/lib-regex/test-regex.c:287,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-regex/test-regex.c:299,1
    - Dst: run_replace_tests
      Src: /src/dovecot/src/lib-regex/test-regex.c:301,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-regex/test-regex.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 269
    functionDepth: 3
    functionLinenumber: 269
    functionLinenumberEnd: 304
    functionName: test_dregex_replace
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 0
    functionsReached:
    - REP_CASE_FULL
    - run_replace_tests
    - REP_CASE
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dregex_replace(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-regex/test-regex.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 306
    functionDepth: 7
    functionLinenumber: 306
    functionLinenumberEnd: 315
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 1
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 321
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-regex/test-regex.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BZ2_bzDecompressEnd
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:31,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:35,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 36
    functionName: i_stream_bzlib_close
    functionSourceFile: /src/dovecot/src/lib-compression/istream-bzlib.c
    functionUses: 0
    functionsReached:
    - BZ2_bzDecompressEnd
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_bzlib_close(struct iostream_private *stream,\n\t\t\t\t
      bool close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:40,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:42,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zstream
    - error
    argTypes:
    - struct bzlib_istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: bzlib_read_error
    functionSourceFile: /src/dovecot/src/lib-compression/istream-bzlib.c
    functionUses: 0
    functionsReached:
    - i_stream_get_name
    - i_stream_get_absolute_offset
    - io_stream_set_error
    linkageType: ''
    returnType: void
    signature: void bzlib_read_error(struct bzlib_istream *zstream, const char *error)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:61,1
    - Dst: i_stream_try_alloc_avoid_compress
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:65,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:74,1
    - Dst: bzlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:75,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:85,1
    - Dst: BZ2_bzDecompress
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:94,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:100,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:106,1
    - Dst: bzlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:108,1
    - Dst: bzlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:112,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:117,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:118,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:129,1
    - Dst: i_stream_bzlib_read
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:133,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 68
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 136
    functionName: i_stream_bzlib_read
    functionSourceFile: /src/dovecot/src/lib-compression/istream-bzlib.c
    functionUses: 1
    functionsReached:
    - bzlib_read_error
    - BZ2_bzDecompress
    - i_unreached
    - i_stream_bzlib_read
    - i_stream_try_alloc
    - i_fatal_status
    - i_fatal
    - i_stream_skip
    - i_stream_try_alloc_avoid_compress
    - i_assert
    - i_stream_read_more
    - i_stream_get_name
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_bzlib_read(struct istream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BZ2_bzDecompressInit
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:142,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:147,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:149,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:151,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct bzlib_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 155
    functionName: i_stream_bzlib_init
    functionSourceFile: /src/dovecot/src/lib-compression/istream-bzlib.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - i_fatal
    - BZ2_bzDecompressInit
    linkageType: ''
    returnType: void
    signature: void i_stream_bzlib_init(struct bzlib_istream *zstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:161,1
    - Dst: BZ2_bzDecompressEnd
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:171,1
    - Dst: i_stream_bzlib_init
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct bzlib_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 173
    functionName: i_stream_bzlib_reset
    functionSourceFile: /src/dovecot/src/lib-compression/istream-bzlib.c
    functionUses: 0
    functionsReached:
    - i_stream_bzlib_init
    - BZ2_bzDecompressEnd
    - i_stream_seek
    linkageType: ''
    returnType: void
    signature: void i_stream_bzlib_reset(struct bzlib_istream *zstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:180,1
    - Dst: i_stream_bzlib_reset
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:184,1
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:185,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 190
    functionName: i_stream_bzlib_seek
    functionSourceFile: /src/dovecot/src/lib-compression/istream-bzlib.c
    functionUses: 0
    functionsReached:
    - i_stream_nonseekable_try_seek
    - i_stream_bzlib_reset
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void i_stream_bzlib_seek(struct istream_private *stream, uoff_t v_offset,
      bool mark)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:197,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:198,1
    - Dst: i_stream_bzlib_reset
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 192
    functionDepth: 3
    functionLinenumber: 192
    functionLinenumberEnd: 207
    functionName: i_stream_bzlib_sync
    functionSourceFile: /src/dovecot/src/lib-compression/istream-bzlib.c
    functionUses: 0
    functionsReached:
    - i_stream_bzlib_reset
    - i_stream_stat
    - memcmp
    linkageType: ''
    returnType: void
    signature: void i_stream_bzlib_sync(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:213,1
    - Dst: i_stream_bzlib_init
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:216,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:228,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-compression/istream-bzlib.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 230
    functionName: i_stream_create_bz2
    functionSourceFile: /src/dovecot/src/lib-compression/istream-bzlib.c
    functionUses: 0
    functionsReached:
    - i_stream_bzlib_init
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_bz2(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:21,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct decompress_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 24
    functionName: copy_compressed_input_error
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - io_stream_set_error
    linkageType: ''
    returnType: void
    signature: void copy_compressed_input_error(struct decompress_istream *zstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:33,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct decompress_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: copy_decompressed_input_error
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - io_stream_set_error
    linkageType: ''
    returnType: void
    signature: void copy_decompressed_input_error(struct decompress_istream *zstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:42,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:44,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:47,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - _stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: i_stream_decompress_close
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: void i_stream_decompress_close(struct iostream_private *_stream, bool
      close_parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:56,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:58,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:60,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 62
    functionName: i_stream_decompress_destroy
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_decompress_destroy(struct iostream_private *_stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:69,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct decompress_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 77
    functionName: i_stream_decompress_not_compressed
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - io_stream_set_error
    linkageType: ''
    returnType: int
    signature: int i_stream_decompress_not_compressed(struct decompress_istream *zstream)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:84,1
    - Dst: compression_detect_handler
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:85,1
    - Dst: copy_compressed_input_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:90,1
    - Dst: i_stream_decompress_not_compressed
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:97,1
    - Dst: i_stream_decompress_detect
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:103,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:108,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct decompress_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 116
    functionName: i_stream_decompress_detect
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 1
    functionsReached:
    - i_stream_decompress_not_compressed
    - io_stream_set_error
    - struct compression_handler*::create_istream
    - compression_detect_handler
    - copy_compressed_input_error
    - i_stream_decompress_detect
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int i_stream_decompress_detect(struct decompress_istream *zstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:121,1
    - Dst: i_stream_decompress_detect
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:126,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:130,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:134,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:138,1
    - Dst: copy_decompressed_input_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:139,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:140,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:151,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 154
    functionName: i_stream_decompress_read
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_get_data
    - i_stream_decompress_detect
    - i_stream_seek
    - copy_decompressed_input_error
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_decompress_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 161
    functionName: i_stream_decompress_reset
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_stream_decompress_reset(struct istream_private *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:168,1
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:171,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:172,1
    - Dst: i_stream_decompress_reset
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:174,1
    - Dst: i_stream_seek_mark
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:177,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:179,1
    - Dst: copy_decompressed_input_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 182
    functionName: i_stream_decompress_seek
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - i_panic
    - container_of
    - i_stream_decompress_reset
    - i_stream_nonseekable_try_seek
    - i_stream_seek
    - copy_decompressed_input_error
    - i_stream_seek_mark
    linkageType: ''
    returnType: void
    signature: "void i_stream_decompress_seek(struct istream_private *stream,\n\t\t\t
      uoff_t v_offset, bool mark)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:187,1
    - Dst: i_stream_decompress_reset
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:189,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 192
    functionName: i_stream_decompress_sync
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - i_stream_decompress_reset
    - i_stream_sync
    - container_of
    linkageType: ''
    returnType: void
    signature: void i_stream_decompress_sync(struct istream_private *stream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:197,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:201,1
    - Dst: copy_compressed_input_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:202,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:209,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:213,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:220,1
    - Dst: copy_decompressed_input_error
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:221,1
    - Dst: i_stream_decompress_reset
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 227
    functionName: i_stream_decompress_stat
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_stream_set_error
    - i_stream_decompress_reset
    - i_stream_stat
    - copy_compressed_input_error
    - copy_decompressed_input_error
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int i_stream_decompress_stat(struct istream_private *stream, bool exact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:235,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:238,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:252,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:253,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:256,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/istream-decompress.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 2
    argNames:
    - input
    - flags
    argTypes:
    - struct istream*
    - enum istream_decompress_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 258
    functionName: i_stream_create_decompress
    functionSourceFile: /src/dovecot/src/lib-compression/istream-decompress.c
    functionUses: 0
    functionsReached:
    - i_stream_get_fd
    - i_stream_set_name
    - i_stream_ref
    - i_new
    - i_stream_create
    - i_stream_get_name
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_decompress(struct istream *input,\n\t\t\t
      \  enum istream_decompress_flags flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-compression/bench-compression.c:28,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib-compression/bench-compression.c:29,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/bench-compression.c:30,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/bench-compression.c:31,1
    - Dst: i_nanoseconds
      Src: /src/dovecot/src/lib-compression/bench-compression.c:38,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/bench-compression.c:40,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-compression/bench-compression.c:41,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/bench-compression.c:42,1
    - Dst: printf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:46,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-compression/bench-compression.c:46,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/bench-compression.c:48,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/bench-compression.c:49,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/bench-compression.c:51,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-compression/bench-compression.c:51,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/bench-compression.c:52,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/bench-compression.c:53,1
    - Dst: i_nanoseconds
      Src: /src/dovecot/src/lib-compression/bench-compression.c:55,1
    - Dst: stat
      Src: /src/dovecot/src/lib-compression/bench-compression.c:59,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/bench-compression.c:60,1
    - Dst: stat
      Src: /src/dovecot/src/lib-compression/bench-compression.c:61,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/bench-compression.c:62,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-compression/bench-compression.c:69,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib-compression/bench-compression.c:70,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/bench-compression.c:71,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/bench-compression.c:72,1
    - Dst: i_nanoseconds
      Src: /src/dovecot/src/lib-compression/bench-compression.c:74,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/bench-compression.c:76,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-compression/bench-compression.c:77,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/bench-compression.c:78,1
    - Dst: printf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:82,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-compression/bench-compression.c:82,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/bench-compression.c:84,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/bench-compression.c:84,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/bench-compression.c:85,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/bench-compression.c:86,1
    - Dst: i_nanoseconds
      Src: /src/dovecot/src/lib-compression/bench-compression.c:88,1
    - Dst: printf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:93,1
    - Dst: printf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:94,1
    - Dst: printf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:96,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 3
    argNames:
    - handler
    - event
    - block_count
    argTypes:
    - struct compression_handler*
    - struct event*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 98
    functionName: bench_compression_speed
    functionSourceFile: /src/dovecot/src/lib-compression/bench-compression.c
    functionUses: 0
    functionsReached:
    - printf
    - struct compression_handler*::create_ostream_auto
    - o_stream_get_error
    - o_stream_create_file
    - i_stream_create_file
    - o_stream_unref
    - i_fatal
    - o_stream_finish
    - i_stream_skip
    - i_stream_get_error
    - struct compression_handler*::create_istream
    - i_nanoseconds
    - o_stream_nsend
    - stat
    - i_stream_unref
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: "void bench_compression_speed(const struct compression_handler *handler,\n\t\t\tstruct
      event *event, unsigned long block_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:102,1
    - Dst: fprintf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:103,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib-compression/bench-compression.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - prog
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: print_usage
    functionSourceFile: /src/dovecot/src/lib-compression/bench-compression.c
    functionUses: 0
    functionsReached:
    - lib_exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_usage(const char *prog)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-compression/bench-compression.c:109,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-compression/bench-compression.c:114,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-compression/bench-compression.c:115,1
    - Dst: str_to_ulong
      Src: /src/dovecot/src/lib-compression/bench-compression.c:118,1
    - Dst: str_to_ulong
      Src: /src/dovecot/src/lib-compression/bench-compression.c:119,1
    - Dst: fprintf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:120,1
    - Dst: print_usage
      Src: /src/dovecot/src/lib-compression/bench-compression.c:121,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-compression/bench-compression.c:125,1
    - Dst: fprintf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:126,1
    - Dst: print_usage
      Src: /src/dovecot/src/lib-compression/bench-compression.c:127,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-compression/bench-compression.c:129,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-compression/bench-compression.c:130,1
    - Dst: print_usage
      Src: /src/dovecot/src/lib-compression/bench-compression.c:134,1
    - Dst: print_usage
      Src: /src/dovecot/src/lib-compression/bench-compression.c:137,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-compression/bench-compression.c:141,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-compression/bench-compression.c:142,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-compression/bench-compression.c:142,1
    - Dst: printf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:145,1
    - Dst: time
      Src: /src/dovecot/src/lib-compression/bench-compression.c:147,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib-compression/bench-compression.c:150,1
    - Dst: time
      Src: /src/dovecot/src/lib-compression/bench-compression.c:152,1
    - Dst: printf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:154,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-compression/bench-compression.c:155,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/bench-compression.c:159,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/bench-compression.c:160,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-compression/bench-compression.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/bench-compression.c:167,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/bench-compression.c:167,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/bench-compression.c:168,1
    - Dst: printf
      Src: /src/dovecot/src/lib-compression/bench-compression.c:170,1
    - Dst: if
      Src: /src/dovecot/src/lib-compression/bench-compression.c:173,1
    - Dst: bench_compression_speed
      Src: /src/dovecot/src/lib-compression/bench-compression.c:175,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-compression/bench-compression.c:180,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-compression/bench-compression.c:181,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-compression/bench-compression.c:182,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-compression/bench-compression.c:184,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 107
    functionDepth: 4
    functionLinenumber: 107
    functionLinenumberEnd: 185
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-compression/bench-compression.c
    functionUses: 1
    functionsReached:
    - lib_init
    - bench_compression_speed
    - o_stream_create_file
    - o_stream_unref
    - str_to_ulong
    - if
    - i_unlink
    - t_split_key_value_eq
    - i_rand_limit
    - array_front
    - array_append_zero
    - time
    - printf
    - o_stream_nsend
    - settings_simple_deinit
    - settings_simple_init
    - print_usage
    - fprintf
    - i_assert
    - lib_deinit
    - array_push_back
    - fflush
    - o_stream_finish
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: int main(int argc, const char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 33
    functionName: o_stream_lz4_close
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached:
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: "void o_stream_lz4_close(struct iostream_private *stream,\n\t\t\t       bool
      close_parent)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:44,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:45,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:48,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:57,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct lz4_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 63
    functionName: o_stream_lz4_send_outbuf
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    - i_assert
    - o_stream_copy_error_from_parent
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int o_stream_lz4_send_outbuf(struct lz4_ostream *zstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_lz4_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:75,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:76,1
    - Dst: LZ4_compressBound
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:80,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:82,1
    - Dst: LZ4_compress_default
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:88,1
    - Dst: LZ4_compress
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct lz4_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 109
    functionName: o_stream_lz4_compress
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached:
    - o_stream_lz4_send_outbuf
    - io_stream_set_error
    - LZ4_compress
    - LZ4_compressBound
    - LZ4_compress_default
    - i_assert
    linkageType: ''
    returnType: int
    signature: int o_stream_lz4_compress(struct lz4_ostream *zstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:119,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:122,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:124,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:128,1
    - Dst: o_stream_lz4_compress
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - zstream
    - data
    - size
    argTypes:
    - struct lz4_ostream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 140
    functionName: o_stream_lz4_send_chunk
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached:
    - memcpy
    - o_stream_lz4_compress
    - I_MIN
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_lz4_send_chunk(struct lz4_ostream *zstream,\n\t\t\tconst
      void *data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_lz4_compress
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:146,1
    - Dst: o_stream_lz4_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:148,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 152
    functionName: o_stream_lz4_flush
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached:
    - o_stream_lz4_send_outbuf
    - o_stream_lz4_compress
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_lz4_flush(struct ostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: o_stream_lz4_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_lz4_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 177
    functionName: o_stream_lz4_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_lz4_get_buffer_avail_size(const struct ostream_private
      *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_lz4_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:187,1
    - Dst: o_stream_lz4_send_chunk
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 179
    functionDepth: 4
    functionLinenumber: 179
    functionLinenumberEnd: 204
    functionName: o_stream_lz4_sendv
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached:
    - o_stream_lz4_send_outbuf
    - o_stream_lz4_send_chunk
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_lz4_sendv(struct ostream_private *stream,\n\t\t    const
      struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:213,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:222,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:224,1
    - Dst: o_stream_init_buffering_flush
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:234,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:235,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-compression/ostream-lz4.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 2
    argNames:
    - output
    - ATTR_UNUSED
    argTypes:
    - struct ostream*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 237
    functionName: o_stream_create_lz4_auto
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-lz4.c
    functionUses: 0
    functionsReached:
    - memcpy
    - o_stream_get_fd
    - o_stream_init_buffering_flush
    - o_stream_create
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_lz4_auto(struct ostream *output,\n\t\t\t
      struct event *event ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:30,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 33
    functionName: i_stream_lz4_close
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_lz4_close(struct iostream_private *stream,\n\t\t\t       bool
      close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:37,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:39,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zstream
    - error
    argTypes:
    - struct lz4_istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 41
    functionName: lz4_read_error
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - i_stream_get_name
    - i_stream_get_absolute_offset
    - io_stream_set_error
    linkageType: ''
    returnType: void
    signature: void lz4_read_error(struct lz4_istream *zstream, const char *error)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:50,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:52,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:53,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:54,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:56,1
    - Dst: lz4_read_error
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:58,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:66,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:71,1
    - Dst: lz4_read_error
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:73,1
    - Dst: be32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:78,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:79,1
    - Dst: lz4_read_error
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:81,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:81,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct lz4_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 89
    functionName: i_stream_lz4_read_header
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - I_MIN
    - t_strdup_printf
    - i_stream_skip
    - buffer_set_used_size
    - lz4_read_error
    - memcmp
    - be32_to_cpu_unaligned
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: int i_stream_lz4_read_header(struct lz4_istream *zstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:98,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:99,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:100,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:101,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:102,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:104,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:114,1
    - Dst: be32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:120,1
    - Dst: lz4_read_error
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:123,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:123,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:128,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct lz4_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 130
    functionName: i_stream_lz4_read_chunk_header
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - I_MIN
    - t_strdup_printf
    - i_stream_skip
    - buffer_set_used_size
    - lz4_read_error
    - be32_to_cpu_unaligned
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int i_stream_lz4_read_chunk_header(struct lz4_istream *zstream)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:140,1
    - Dst: i_stream_lz4_read_header
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:144,1
    - Dst: i_stream_lz4_read_chunk_header
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:152,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:162,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:165,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:166,1
    - Dst: lz4_read_error
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:177,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:181,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:183,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:186,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:191,1
    - Dst: LZ4_decompress_safe
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:192,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:195,1
    - Dst: lz4_read_error
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:197,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:203,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:208,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 53
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 132
    functionDepth: 3
    functionLinenumber: 132
    functionLinenumberEnd: 211
    functionName: i_stream_lz4_read
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_assert
    - i_stream_get_data_size
    - i_stream_set_input_pending
    - i_stream_lz4_read_header
    - i_stream_get_max_buffer_size
    - i_stream_skip
    - buffer_set_used_size
    - LZ4_decompress_safe
    - i_stream_alloc
    - lz4_read_error
    - i_stream_read_more
    - i_stream_lz4_read_chunk_header
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_lz4_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:217,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct lz4_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: i_stream_lz4_reset
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - i_stream_seek
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void i_stream_lz4_reset(struct lz4_istream *zstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:232,1
    - Dst: i_stream_lz4_reset
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:236,1
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:237,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 242
    functionName: i_stream_lz4_seek
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - i_stream_lz4_reset
    - i_stream_nonseekable_try_seek
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void i_stream_lz4_seek(struct istream_private *stream, uoff_t v_offset,
      bool mark)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:249,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:250,1
    - Dst: i_stream_lz4_reset
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 259
    functionName: i_stream_lz4_sync
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - i_stream_lz4_reset
    - i_stream_stat
    - memcmp
    linkageType: ''
    returnType: void
    signature: void i_stream_lz4_sync(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:265,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:276,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:278,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-compression/istream-lz4.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 280
    functionName: i_stream_create_lz4
    functionSourceFile: /src/dovecot/src/lib-compression/istream-lz4.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - buffer_create_dynamic
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_lz4(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 67
    functionName: bzlib_settings_check
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool bzlib_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BZ2_bzCompressEnd
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:74,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 77
    functionName: o_stream_bzlib_close
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - o_stream_close
    - BZ2_bzCompressEnd
    linkageType: ''
    returnType: void
    signature: "void o_stream_bzlib_close(struct iostream_private *stream,\n\t\t\t\t
      bool close_parent)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:88,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:89,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:92,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct bzlib_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 107
    functionName: o_stream_zlib_send_outbuf
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    - i_assert
    - o_stream_copy_error_from_parent
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int o_stream_zlib_send_outbuf(struct bzlib_ostream *zstream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:116,1
    - Dst: o_stream_zlib_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:128,1
    - Dst: BZ2_bzCompress
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:136,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:140,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:141,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:143,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - zstream
    - data
    - size
    argTypes:
    - struct bzlib_ostream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 150
    functionName: o_stream_bzlib_send_chunk
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - BZ2_bzCompress
    - i_fatal_status
    - i_fatal
    - i_assert
    - o_stream_zlib_send_outbuf
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_bzlib_send_chunk(struct bzlib_ostream *zstream,\n\t\t\t
      \ const void *data, size_t size)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:159,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:162,1
    - Dst: o_stream_flush_parent_if_needed
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:166,1
    - Dst: o_stream_zlib_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:175,1
    - Dst: o_stream_zlib_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:183,1
    - Dst: BZ2_bzCompress
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:189,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:199,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:200,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:202,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:208,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 2
    argNames:
    - zstream
    - final
    argTypes:
    - struct bzlib_ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 210
    functionName: o_stream_bzlib_send_flush
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - o_stream_flush_parent_if_needed
    - BZ2_bzCompress
    - i_fatal_status
    - i_fatal
    - i_assert
    - o_stream_zlib_send_outbuf
    linkageType: ''
    returnType: int
    signature: int o_stream_bzlib_send_flush(struct bzlib_ostream *zstream, bool final)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_bzlib_send_flush
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:216,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 221
    functionName: o_stream_bzlib_flush
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - o_stream_bzlib_send_flush
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_bzlib_flush(struct ostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 234
    functionName: o_stream_bzlib_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_bzlib_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: o_stream_bzlib_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_avail_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_bzlib_get_buffer_avail_size(const struct ostream_private
      *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_zlib_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:253,1
    - Dst: o_stream_bzlib_send_chunk
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:260,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 274
    functionName: o_stream_bzlib_sendv
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - o_stream_zlib_send_outbuf
    - o_stream_bzlib_send_chunk
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_bzlib_sendv(struct ostream_private *stream,\n\t\t
      \   const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:281,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:283,1
    - Dst: BZ2_bzCompressInit
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:292,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:297,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:300,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:302,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:304,1
    - Dst: o_stream_init_buffering_flush
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:309,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:310,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - output
    - level
    argTypes:
    - struct ostream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 312
    functionName: o_stream_create_bz2
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - o_stream_get_fd
    - i_fatal
    - o_stream_init_buffering_flush
    - o_stream_create
    - BZ2_bzCompressInit
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_bz2(struct ostream *output, int level)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:320,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:322,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:324,1
    - Dst: o_stream_create_bz2
      Src: /src/dovecot/src/lib-compression/ostream-bzlib.c:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - output
    - event
    argTypes:
    - struct ostream*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 326
    functionName: o_stream_create_bz2_auto
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-bzlib.c
    functionUses: 0
    functionsReached:
    - settings_free
    - settings_get
    - o_stream_create_error_str
    - o_stream_create_bz2
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_bz2_auto(struct ostream *output, struct event *event)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-compression/compression.c:32,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/compression.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 37
    functionName: is_compressed_zlib
    functionSourceFile: /src/dovecot/src/lib-compression/compression.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: bool
    signature: bool is_compressed_zlib(struct istream *input)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-compression/compression.c:44,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/compression.c:46,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 54
    functionName: is_compressed_bzlib
    functionSourceFile: /src/dovecot/src/lib-compression/compression.c
    functionUses: 0
    functionsReached:
    - i_stream_read_bytes
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool is_compressed_bzlib(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-compression/compression.c:61,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/compression.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 65
    functionName: is_compressed_lz4
    functionSourceFile: /src/dovecot/src/lib-compression/compression.c
    functionUses: 0
    functionsReached:
    - i_stream_read_bytes
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool is_compressed_lz4(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-compression/compression.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/compression.c:75,1
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-compression/compression.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: is_compressed_zstd
    functionSourceFile: /src/dovecot/src/lib-compression/compression.c
    functionUses: 0
    functionsReached:
    - i_assert
    - le32_to_cpu_unaligned
    - i_stream_read_bytes
    linkageType: ''
    returnType: bool
    signature: bool is_compressed_zstd(struct istream *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-compression/compression.c:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - name
    - handler_r
    argTypes:
    - char*
    - struct compression_handler**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 97
    functionName: compression_lookup_handler
    functionSourceFile: /src/dovecot/src/lib-compression/compression.c
    functionUses: 3
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int compression_lookup_handler(const char *name,\n\t\t\t       const
      struct compression_handler **handler_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_compressed
      Src: /src/dovecot/src/lib-compression/compression.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 110
    functionName: compression_detect_handler
    functionSourceFile: /src/dovecot/src/lib-compression/compression.c
    functionUses: 1
    functionsReached:
    - is_compressed
    linkageType: ''
    returnType: struct compression_handler
    signature: 'struct compression_handler *

      compression_detect_handler(struct istream *input)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/compression.c:116,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/compression.c:122,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-compression/compression.c:124,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - path
    - handler_r
    argTypes:
    - char*
    - struct compression_handler**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 135
    functionName: compression_lookup_handler_from_ext
    functionSourceFile: /src/dovecot/src/lib-compression/compression.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    linkageType: ''
    returnType: int
    signature: "int compression_lookup_handler_from_ext(const char *path,\n\t\t\t\t\tconst
      struct compression_handler **handler_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: ZSTD_minCLevel
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZSTD_minCLevel()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_minCLevel
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:70,1
    - Dst: ZSTD_maxCLevel
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:71,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:72,1
    - Dst: ZSTD_minCLevel
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:74,1
    - Dst: ZSTD_maxCLevel
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 78
    functionName: zstd_settings_check
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - ZSTD_minCLevel
    - ZSTD_maxCLevel
    linkageType: ''
    returnType: bool
    signature: "bool zstd_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zstd_version_errcode
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:82,1
    - Dst: ZSTD_getErrorCode
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:82,1
    - Dst: ZSTD_getErrorName
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:83,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:85,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:86,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:97,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - zstream
    - err
    argTypes:
    - struct zstd_ostream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 101
    functionName: o_stream_zstd_write_error
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - io_stream_set_error
    - ZSTD_getErrorCode
    - i_fatal_status
    - zstd_version_errcode
    - ZSTD_getErrorName
    linkageType: ''
    returnType: void
    signature: void o_stream_zstd_write_error(struct zstd_ostream *zstream, size_t
      err)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:109,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:112,1
    - Dst: memmove
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:115,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zstd_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 127
    functionName: o_stream_zstd_send_outbuf
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    - o_stream_send
    - o_stream_copy_error_from_parent
    - memmove
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t o_stream_zstd_send_outbuf(struct zstd_ostream *zstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:134,1
    - Dst: ZSTD_compressStream
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:148,1
    - Dst: ZSTD_isError
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:150,1
    - Dst: o_stream_zstd_write_error
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:151,1
    - Dst: o_stream_zstd_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:164,1
    - Dst: o_stream_zstd_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:169,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 172
    functionName: o_stream_zstd_sendv
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_compressStream
    - container_of
    - o_stream_zstd_send_outbuf
    - ZSTD_isError
    - o_stream_zstd_write_error
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_zstd_sendv(struct ostream_private *stream,\n\t\t
      \   const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:179,1
    - Dst: o_stream_flush_parent_if_needed
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:183,1
    - Dst: ZSTD_flushStream
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:187,1
    - Dst: o_stream_zstd_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:189,1
    - Dst: ZSTD_endStream
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:196,1
    - Dst: ZSTD_isError
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:197,1
    - Dst: o_stream_zstd_write_error
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:198,1
    - Dst: o_stream_zstd_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:204,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:209,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - zstream
    - final
    argTypes:
    - struct zstd_ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 211
    functionName: o_stream_zstd_send_flush
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_endStream
    - o_stream_flush_parent_if_needed
    - o_stream_zstd_send_outbuf
    - ZSTD_flushStream
    - ZSTD_isError
    - o_stream_zstd_write_error
    - i_assert
    linkageType: ''
    returnType: int
    signature: int o_stream_zstd_send_flush(struct zstd_ostream *zstream, bool final)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:216,1
    - Dst: o_stream_zstd_send_flush
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:219,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 213
    functionDepth: 3
    functionLinenumber: 213
    functionLinenumberEnd: 224
    functionName: o_stream_zstd_flush
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - o_stream_zstd_send_flush
    - container_of
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_zstd_flush(struct ostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:230,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:232,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:234,1
    - Dst: ZSTD_freeCStream
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:238,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:241,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:242,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:244,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 245
    functionName: o_stream_zstd_close
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - o_stream_close
    - ZSTD_freeCStream
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void o_stream_zstd_close(struct iostream_private *stream,\n\t\t\t\tbool
      close_parent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:253,1
    - Dst: ZSTD_minCLevel
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:253,1
    - Dst: ZSTD_maxCLevel
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:253,1
    - Dst: zstd_version_check
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:255,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:257,1
    - Dst: ZSTD_createCStream
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:261,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:263,1
    - Dst: ZSTD_initCStream
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:264,1
    - Dst: ZSTD_isError
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:265,1
    - Dst: o_stream_zstd_write_error
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:266,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:268,1
    - Dst: ZSTD_CStreamOutSize
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:268,1
    - Dst: ZSTD_CStreamOutSize
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:270,1
    - Dst: o_stream_init_buffering_flush
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:272,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:273,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:274,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - output
    - level
    argTypes:
    - struct ostream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 275
    functionName: o_stream_create_zstd
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - i_malloc
    - ZSTD_maxCLevel
    - i_fatal_status
    - o_stream_get_fd
    - o_stream_init_buffering_flush
    - ZSTD_createCStream
    - zstd_version_check
    - o_stream_create
    - ZSTD_minCLevel
    - ZSTD_isError
    - i_new
    - o_stream_zstd_write_error
    - ZSTD_CStreamOutSize
    - i_assert
    - ZSTD_initCStream
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_zstd(struct ostream *output, int level)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:283,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:285,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:287,1
    - Dst: o_stream_create_zstd
      Src: /src/dovecot/src/lib-compression/ostream-zstd.c:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - output
    - event
    argTypes:
    - struct ostream*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 277
    functionDepth: 3
    functionLinenumber: 277
    functionLinenumberEnd: 289
    functionName: o_stream_create_zstd_auto
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zstd.c
    functionUses: 0
    functionsReached:
    - settings_free
    - o_stream_create_zstd
    - settings_get
    - o_stream_create_error_str
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_zstd_auto(struct ostream *output, struct event *event)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - functionResult
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 22
    functionName: ZSTD_getErrorCode
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ZSTD_ErrorCode
    signature: ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_createDStream
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:52,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:54,1
    - Dst: ZSTD_initDStream
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:55,1
    - Dst: ZSTD_DStreamInSize
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:56,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:58,1
    - Dst: ZSTD_DStreamInSize
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:58,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:60,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:62,1
    - Dst: ZSTD_DStreamOutSize
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:62,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zstd_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 66
    functionName: i_stream_zstd_init
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - ZSTD_DStreamOutSize
    - ZSTD_DStreamInSize
    - ZSTD_initDStream
    - ZSTD_createDStream
    - i_fatal_status
    - buffer_create_dynamic
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void i_stream_zstd_init(struct zstd_istream *zstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_freeDStream
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:70,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:73,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:74,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - zstream
    - reuse_buffers
    argTypes:
    - struct zstd_istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: i_stream_zstd_deinit
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_free
    - ZSTD_freeDStream
    linkageType: ''
    returnType: void
    signature: void i_stream_zstd_deinit(struct zstd_istream *zstream, bool reuse_buffers)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:84,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:86,1
    - Dst: i_stream_zstd_deinit
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:88,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:89,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 92
    functionName: i_stream_zstd_close
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - i_stream_zstd_deinit
    - buffer_free
    - container_of
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_zstd_close(struct iostream_private *stream,\n\t\t\t\tbool
      close_parent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zstd_version_errcode
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:96,1
    - Dst: ZSTD_getErrorCode
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:96,1
    - Dst: ZSTD_getErrorName
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:97,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:99,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:100,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:112,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:114,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:115,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - zstream
    - err
    argTypes:
    - struct zstd_istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 116
    functionName: i_stream_zstd_read_error
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - i_stream_get_absolute_offset
    - io_stream_set_error
    - ZSTD_getErrorCode
    - i_fatal_status
    - i_stream_get_name
    - zstd_version_errcode
    - ZSTD_getErrorName
    linkageType: ''
    returnType: void
    signature: void i_stream_zstd_read_error(struct zstd_istream *zstream, size_t
      err)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:121,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:130,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:132,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:133,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:133,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:136,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:143,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:145,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:160,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:165,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:172,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:173,1
    - Dst: ZSTD_DStreamOutSize
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:174,1
    - Dst: ZSTD_DStreamOutSize
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:176,1
    - Dst: ZSTD_decompressStream
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:178,1
    - Dst: ZSTD_isError
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:180,1
    - Dst: i_stream_zstd_read_error
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:181,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:188,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:190,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 49
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 191
    functionName: i_stream_zstd_read
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - memcpy
    - buffer_append
    - PTR_OFFSET
    - container_of
    - ZSTD_DStreamOutSize
    - i_stream_zstd_read_error
    - i_unreached
    - i_stream_try_alloc
    - I_MIN
    - buffer_set_used_size
    - i_stream_skip
    - buffer_append_space_unsafe
    - ZSTD_decompressStream
    - buffer_delete
    - ZSTD_isError
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_zstd_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:197,1
    - Dst: i_stream_zstd_deinit
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:203,1
    - Dst: i_stream_zstd_init
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zstd_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 205
    functionName: i_stream_zstd_reset
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - i_stream_zstd_deinit
    - i_stream_seek
    - i_stream_zstd_init
    linkageType: ''
    returnType: void
    signature: void i_stream_zstd_reset(struct zstd_istream *zstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:211,1
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:213,1
    - Dst: i_stream_zstd_reset
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:217,1
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:218,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 207
    functionDepth: 3
    functionLinenumber: 207
    functionLinenumberEnd: 223
    functionName: i_stream_zstd_seek
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - i_stream_zstd_reset
    - i_stream_nonseekable_try_seek
    - container_of
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void i_stream_zstd_seek(struct istream_private *stream, uoff_t v_offset,
      bool mark)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:228,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:231,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:232,1
    - Dst: i_stream_zstd_reset
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 241
    functionName: i_stream_zstd_sync
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - i_stream_zstd_reset
    - container_of
    - i_stream_stat
    - memcmp
    linkageType: ''
    returnType: void
    signature: void i_stream_zstd_sync(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zstd_version_check
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:248,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:250,1
    - Dst: i_stream_zstd_init
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:252,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:264,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-compression/istream-zstd.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 266
    functionName: i_stream_create_zstd
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zstd.c
    functionUses: 0
    functionsReached:
    - i_stream_zstd_init
    - i_stream_get_fd
    - zstd_version_check
    - i_new
    - i_stream_create
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_zstd(struct istream *input)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:37,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:37,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:39,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:41,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:42,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:46,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:47,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:47,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:48,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:50,1
    - Dst: compression_detect_handler
      Src: /src/dovecot/src/lib-compression/test-compression.c:51,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/test-compression.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:53,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:55,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:56,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:58,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:58,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:59,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:60,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:62,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:64,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:67,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - handler
    argTypes:
    - struct compression_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 69
    functionName: test_compression_handler_detect
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - struct compression_handler*::create_ostream_auto
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - compression_detect_handler
    - o_stream_finish
    - struct compression_handler*::create_istream
    - test_end
    - o_stream_send
    - test_istream_create_data
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - memcmp
    - buffer_free
    - test_ostream_create
    - i_stream_read_more
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_compression_handler_detect(const struct compression_handler
      *handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:86,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:86,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-compression/test-compression.c:88,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:89,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-compression/test-compression.c:90,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-compression/test-compression.c:90,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:91,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:92,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:94,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:95,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:96,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:100,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:101,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:101,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:102,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:105,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:106,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:107,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:110,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:111,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:112,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:114,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:116,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:117,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 120
    functionName: test_compression_handler_short
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - buffer_set_used_size
    - test_assert
    - i_rand_minmax
    - test_ostream_create
    - buffer_append
    - random_fill
    - struct compression_handler*::create_istream
    - test_end
    - buffer_free
    - i_stream_read_more
    - struct compression_handler*::create_ostream_auto
    - buffer_append_space_unsafe
    - o_stream_finish
    - i_stream_create_decompress
    - o_stream_send
    - test_istream_create_data
    - memcmp
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler_short(const struct compression_handler
      *handler,\n\t\t\t       bool autodetect)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:134,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:134,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:136,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:137,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:138,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:140,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:140,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:141,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:144,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:145,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:146,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:149,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:150,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:150,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:151,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:153,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 156
    functionName: test_compression_handler_empty
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - struct compression_handler*::create_ostream_auto
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - struct compression_handler*::create_istream
    - o_stream_finish
    - i_stream_create_decompress
    - test_end
    - test_istream_create_data
    - test_assert
    - i_stream_unref
    - buffer_free
    - i_stream_read
    - test_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler_empty(const struct compression_handler
      *handler,\n\t\t\t       bool autodetect)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:173,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:173,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-compression/test-compression.c:175,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:176,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-compression/test-compression.c:177,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-compression/test-compression.c:177,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:178,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:179,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:181,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:182,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:183,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:187,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:188,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:188,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:189,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:191,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:192,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:193,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:194,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/test-compression.c:197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:199,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:199,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:200,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:200,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:201,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:207,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/test-compression.c:208,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:210,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:210,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:211,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:211,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:214,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:216,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:217,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 220
    functionName: test_compression_handler_seek
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - buffer_set_used_size
    - i_stream_seek
    - i_rand_limit
    - test_assert
    - i_rand_minmax
    - test_ostream_create
    - buffer_append
    - random_fill
    - struct compression_handler*::create_istream
    - i_stream_skip
    - test_end
    - buffer_free
    - i_stream_read_more
    - struct compression_handler*::create_ostream_auto
    - buffer_append_space_unsafe
    - o_stream_finish
    - i_stream_create_decompress
    - o_stream_send
    - test_istream_create_data
    - memcmp
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler_seek(const struct compression_handler
      *handler,\n\t\t\t      bool autodetect)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:237,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:237,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-compression/test-compression.c:239,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:240,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-compression/test-compression.c:241,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-compression/test-compression.c:241,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:242,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:243,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:245,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:246,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:247,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:248,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:251,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:252,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:252,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:253,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:255,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:256,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:257,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:258,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/test-compression.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:263,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:264,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:264,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:265,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-compression/test-compression.c:268,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:272,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:273,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:273,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:275,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:277,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:278,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 281
    functionName: test_compression_handler_reset
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - buffer_set_used_size
    - i_stream_seek
    - test_assert
    - i_rand_minmax
    - test_ostream_create
    - buffer_append
    - random_fill
    - struct compression_handler*::create_istream
    - i_stream_sync
    - i_stream_skip
    - test_end
    - buffer_free
    - i_stream_read_more
    - struct compression_handler*::create_ostream_auto
    - buffer_append_space_unsafe
    - o_stream_finish
    - i_stream_create_decompress
    - o_stream_send
    - test_istream_create_data
    - memcmp
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler_reset(const struct compression_handler
      *handler,\n\t\t\t       bool autodetect)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:301,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-compression/test-compression.c:301,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:303,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:303,1
    - Dst: open
      Src: /src/dovecot/src/lib-compression/test-compression.c:307,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:309,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-compression/test-compression.c:310,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:311,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:312,1
    - Dst: memset
      Src: /src/dovecot/src/lib-compression/test-compression.c:315,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-compression/test-compression.c:317,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:318,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:318,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-compression/test-compression.c:323,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-compression/test-compression.c:324,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:325,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:325,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-compression/test-compression.c:328,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-compression/test-compression.c:329,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:330,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:330,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:334,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:335,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-compression/test-compression.c:340,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:341,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:341,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:344,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:344,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:346,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:348,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-compression/test-compression.c:349,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-compression/test-compression.c:352,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:353,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:354,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:356,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:356,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:357,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:359,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:359,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:360,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:362,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:364,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:365,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-compression/test-compression.c:366,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:367,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:369,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:370,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-compression/test-compression.c:371,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:372,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:372,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/test-compression.c:376,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:377,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/test-compression.c:378,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:380,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:381,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-compression/test-compression.c:383,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-compression/test-compression.c:384,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:386,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 64
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 387
    functionName: test_compression_handler
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - i_unlink
    - i_stream_get_size
    - i_stream_seek
    - i_rand_limit
    - test_assert
    - random_fill
    - i_close_fd
    - struct compression_handler*::create_istream
    - i_fatal
    - i_stream_skip
    - test_end
    - test_dir_get
    - i_stream_read_more
    - i_stream_destroy
    - struct compression_handler*::create_ostream_auto
    - test_begin
    - open
    - o_stream_create_fd_file
    - memset
    - sha1_init
    - i_stream_read
    - o_stream_destroy
    - i_stream_create_fd
    - sha1_result
    - o_stream_finish
    - i_stream_create_decompress
    - o_stream_send
    - memcmp
    - sha1_loop
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler(const struct compression_handler *handler,\n\t\t\t
      bool autodetect)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:393,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:393,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:397,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:398,1
    - Dst: test_ostream_create_nonblocking
      Src: /src/dovecot/src/lib-compression/test-compression.c:399,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:401,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:402,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-compression/test-compression.c:406,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:410,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:410,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-compression/test-compression.c:412,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:415,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:416,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:419,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:420,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:421,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:423,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:423,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:424,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:426,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:428,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:430,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:431,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:432,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:436,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:438,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:439,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:440,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:442,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:444,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:445,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-compression/test-compression.c:445,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:449,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:451,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 389
    functionDepth: 3
    functionLinenumber: 389
    functionLinenumberEnd: 452
    functionName: test_compression_handler_partial_parent_write
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - o_stream_unref
    - t_strdup_printf
    - buffer_set_used_size
    - test_assert
    - CONST_PTR_OFFSET
    - buffer_append
    - random_fill
    - struct compression_handler*::create_istream
    - i_stream_skip
    - test_end
    - o_stream_flush
    - i_stream_read_more
    - struct compression_handler*::create_ostream_auto
    - test_ostream_create_nonblocking
    - t_buffer_create
    - o_stream_finish
    - i_stream_create_decompress
    - o_stream_send
    - test_istream_create_data
    - memcmp
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler_partial_parent_write(const struct compression_handler
      *handler,\n\t\t\t\t\t      bool autodetect)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:464,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:465,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:467,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:467,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-compression/test-compression.c:470,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:478,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:480,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:481,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:487,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:490,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-compression/test-compression.c:491,1
    - Dst: test_ostream_create_nonblocking
      Src: /src/dovecot/src/lib-compression/test-compression.c:494,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-compression/test-compression.c:495,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:498,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:503,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:507,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:514,1
    - Dst: test_ostream_set_max_output_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:515,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:519,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:522,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:526,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:532,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:533,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:534,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:537,1
    - Dst: i_stream_create_from_buffer
      Src: /src/dovecot/src/lib-compression/test-compression.c:540,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-compression/test-compression.c:541,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:544,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:545,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-compression/test-compression.c:546,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:549,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-compression/test-compression.c:549,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:553,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-compression/test-compression.c:555,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-compression/test-compression.c:557,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:558,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:559,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:562,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-compression/test-compression.c:564,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:565,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:570,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:572,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:573,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-compression/test-compression.c:577,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/test-compression.c:577,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-compression/test-compression.c:578,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-compression/test-compression.c:579,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/test-compression.c:579,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-compression/test-compression.c:580,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-compression/test-compression.c:583,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-compression/test-compression.c:584,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:589,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:590,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:592,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:594,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:595,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 78
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 454
    functionDepth: 3
    functionLinenumber: 454
    functionLinenumberEnd: 596
    functionName: test_compression_handler_random_io
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - i_stream_get_data
    - buffer_set_used_size
    - i_rand_limit
    - i_rand_minmax
    - buffer_append
    - test_ostream_set_max_output_size
    - i_stream_set_name
    - o_stream_send_istream
    - struct compression_handler*::create_istream
    - I_MIN
    - i_stream_create_from_buffer
    - i_stream_skip
    - i_stream_get_error
    - test_end
    - i_stream_get_name
    - i_stream_set_max_buffer_size
    - test_istream_set_size
    - i_stream_read_more
    - buffer_free
    - struct compression_handler*::create_ostream_auto
    - test_ostream_create_nonblocking
    - i_info
    - i_error
    - o_stream_finish
    - test_has_failed
    - i_stream_create_decompress
    - test_istream_create_data
    - memcmp
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler_random_io(const struct compression_handler
      *handler,\n\t\t\t\t   bool autodetect)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:610,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:610,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-compression/test-compression.c:612,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-compression/test-compression.c:613,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:616,1
    - Dst: iostream_temp_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:618,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:619,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:621,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:624,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-compression/test-compression.c:628,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:630,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:630,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:633,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:634,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:635,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:637,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:638,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:642,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:643,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:645,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:646,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:646,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:647,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:649,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:650,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:651,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:653,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:654,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-compression/test-compression.c:655,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:656,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 598
    functionDepth: 3
    functionLinenumber: 598
    functionLinenumberEnd: 657
    functionName: test_compression_handler_large_random_io
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - t_strdup_printf
    - iostream_temp_create
    - test_assert
    - i_stream_create_from_data
    - random_fill
    - i_unreached
    - iostream_temp_finish
    - o_stream_send_istream
    - struct compression_handler*::create_istream
    - i_stream_skip
    - test_end
    - i_stream_read_more
    - struct compression_handler*::create_ostream_auto
    - i_free
    - i_malloc
    - o_stream_finish
    - i_stream_create_decompress
    - memcmp
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler_large_random_io(const struct compression_handler
      *handler,\n\t\t\t\t\t bool autodetect)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:663,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:663,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:667,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:669,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:670,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:671,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:672,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:672,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:673,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:676,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:680,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:681,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:682,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:683,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:683,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:684,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-compression/test-compression.c:687,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:687,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:689,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:690,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:691,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-compression/test-compression.c:694,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:695,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/test-compression.c:695,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:698,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:698,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:699,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:702,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:703,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:704,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:705,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:709,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:710,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:712,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:713,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:720,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:721,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:722,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:723,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:724,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:725,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:726,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:728,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:729,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:733,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 2
    argNames:
    - handler
    - autodetect
    argTypes:
    - struct compression_handler*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 659
    functionDepth: 3
    functionLinenumber: 659
    functionLinenumberEnd: 734
    functionName: test_compression_handler_errors
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - test_assert
    - test_ostream_create
    - random_fill
    - struct compression_handler*::create_istream
    - i_stream_skip
    - test_end
    - test_istream_create
    - i_stream_read_more
    - struct compression_handler*::create_ostream_auto
    - pool_datastack_create
    - i_stream_read
    - o_stream_finish
    - i_stream_create_decompress
    - o_stream_send
    - test_istream_create_data
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_compression_handler_errors(const struct compression_handler
      *handler,\n\t\t\t\tbool autodetect)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if
      Src: /src/dovecot/src/lib-compression/test-compression.c:745,1
    - Dst: test_compression_handler_detect
      Src: /src/dovecot/src/lib-compression/test-compression.c:747,1
    - Dst: test_compression_handler_short
      Src: /src/dovecot/src/lib-compression/test-compression.c:748,1
    - Dst: test_compression_handler_empty
      Src: /src/dovecot/src/lib-compression/test-compression.c:749,1
    - Dst: test_compression_handler
      Src: /src/dovecot/src/lib-compression/test-compression.c:750,1
    - Dst: test_compression_handler_seek
      Src: /src/dovecot/src/lib-compression/test-compression.c:751,1
    - Dst: test_compression_handler_reset
      Src: /src/dovecot/src/lib-compression/test-compression.c:752,1
    - Dst: test_compression_handler_partial_parent_write
      Src: /src/dovecot/src/lib-compression/test-compression.c:753,1
    - Dst: test_compression_handler_random_io
      Src: /src/dovecot/src/lib-compression/test-compression.c:754,1
    - Dst: test_compression_handler_large_random_io
      Src: /src/dovecot/src/lib-compression/test-compression.c:755,1
    - Dst: test_compression_handler_errors
      Src: /src/dovecot/src/lib-compression/test-compression.c:756,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 1
    argNames:
    - autodetect
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 736
    functionDepth: 4
    functionLinenumber: 736
    functionLinenumberEnd: 758
    functionName: test_compression_int
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_compression_handler_empty
    - test_compression_handler_partial_parent_write
    - test_compression_handler_reset
    - test_compression_handler_large_random_io
    - test_compression_handler_detect
    - if
    - test_compression_handler
    - test_compression_handler_seek
    - test_compression_handler_random_io
    - test_compression_handler_errors
    - test_compression_handler_short
    linkageType: ''
    returnType: void
    signature: void test_compression_int(bool autodetect)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_compression_int
      Src: /src/dovecot/src/lib-compression/test-compression.c:763,1
    - Dst: test_compression_int
      Src: /src/dovecot/src/lib-compression/test-compression.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 761
    functionDepth: 5
    functionLinenumber: 761
    functionLinenumberEnd: 765
    functionName: test_compression
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_compression_int
    linkageType: ''
    returnType: void
    signature: void test_compression(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:779,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-compression/test-compression.c:781,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/test-compression.c:782,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:783,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:784,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:785,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:787,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:788,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:790,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:791,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:792,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:794,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:795,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:795,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:796,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:797,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:799,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 767
    functionDepth: 3
    functionLinenumber: 767
    functionLinenumberEnd: 800
    functionName: test_istream_decompression_try
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - strlen
    - i_stream_get_data
    - i_stream_skip
    - i_stream_create_decompress
    - test_end
    - i_stream_read
    - memcmp
    - i_stream_unref
    - i_stream_create_from_data
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_decompression_try(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-compression/test-compression.c:807,1
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/lib-compression/test-compression.c:809,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-compression/test-compression.c:813,1
    - Dst: o_stream_set_finish_via_child
      Src: /src/dovecot/src/lib-compression/test-compression.c:814,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:816,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-compression/test-compression.c:817,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:818,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:818,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:819,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:822,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-compression/test-compression.c:823,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:824,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:824,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:825,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:828,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:833,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-compression/test-compression.c:834,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:835,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:836,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:838,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:839,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:839,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-compression/test-compression.c:841,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:842,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:842,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:843,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:845,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:846,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/test-compression.c:846,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/test-compression.c:846,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:847,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/test-compression.c:847,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:848,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/test-compression.c:848,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/test-compression.c:848,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:849,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:850,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - str1
    - str2
    - autodetect
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 802
    functionDepth: 3
    functionLinenumber: 802
    functionLinenumberEnd: 851
    functionName: test_gz
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - compression_lookup_handler
    - strlen
    - i_stream_get_data
    - test_assert
    - o_stream_create_buffer
    - struct compression_handler*::create_istream
    - test_istream_set_allow_eof
    - test_istream_set_size
    - struct compression_handler*::create_ostream_auto
    - o_stream_nsend_str
    - i_stream_read
    - o_stream_destroy
    - t_buffer_create
    - o_stream_finish
    - i_stream_create_decompress
    - test_istream_create_data
    - memcmp
    - i_stream_unref
    - o_stream_set_finish_via_child
    linkageType: ''
    returnType: void
    signature: void test_gz(const char *str1, const char *str2, bool autodetect)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:855,1
    - Dst: test_gz
      Src: /src/dovecot/src/lib-compression/test-compression.c:856,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:857,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:859,1
    - Dst: test_gz
      Src: /src/dovecot/src/lib-compression/test-compression.c:860,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 853
    functionDepth: 4
    functionLinenumber: 853
    functionLinenumberEnd: 862
    functionName: test_gz_concat
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_gz
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_gz_concat(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:866,1
    - Dst: test_gz
      Src: /src/dovecot/src/lib-compression/test-compression.c:867,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:868,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:870,1
    - Dst: test_gz
      Src: /src/dovecot/src/lib-compression/test-compression.c:871,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 864
    functionDepth: 4
    functionLinenumber: 864
    functionLinenumberEnd: 873
    functionName: test_gz_no_concat
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_gz
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_gz_no_concat(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/lib-compression/test-compression.c:887,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:890,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:890,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-compression/test-compression.c:892,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:893,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-compression/test-compression.c:894,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:896,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:897,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:898,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:898,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:899,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:900,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:901,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:903,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - autodetect
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 875
    functionDepth: 3
    functionLinenumber: 875
    functionLinenumberEnd: 904
    functionName: test_gz_header_int
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - compression_lookup_handler
    - strlen
    - struct compression_handler*::create_istream
    - t_strdup_printf
    - i_stream_create_decompress
    - test_end
    - test_istream_create_data
    - i_stream_unref
    - i_stream_read
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_gz_header_int(bool autodetect)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_gz_header_int
      Src: /src/dovecot/src/lib-compression/test-compression.c:908,1
    - Dst: test_gz_header_int
      Src: /src/dovecot/src/lib-compression/test-compression.c:909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 906
    functionDepth: 4
    functionLinenumber: 906
    functionLinenumberEnd: 910
    functionName: test_gz_header
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_gz_header_int
    linkageType: ''
    returnType: void
    signature: void test_gz_header(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/lib-compression/test-compression.c:923,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:926,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/test-compression.c:926,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:931,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:932,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:933,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:935,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:936,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:937,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:937,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-compression/test-compression.c:938,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:938,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:940,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:941,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:945,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:946,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/lib-compression/test-compression.c:947,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:948,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-compression/test-compression.c:949,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:950,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:951,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:951,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:952,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:953,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:955,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - autodetect
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 912
    functionDepth: 3
    functionLinenumber: 912
    functionLinenumberEnd: 956
    functionName: test_gz_large_header_int
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - compression_lookup_handler
    - struct compression_handler*::create_istream
    - test_istream_set_allow_eof
    - t_strdup_printf
    - test_istream_set_max_buffer_size
    - i_stream_create_decompress
    - test_end
    - i_stream_read
    - test_istream_create_data
    - test_assert
    - i_stream_unref
    - test_istream_set_size
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_gz_large_header_int(bool autodetect)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_gz_large_header_int
      Src: /src/dovecot/src/lib-compression/test-compression.c:960,1
    - Dst: test_gz_large_header_int
      Src: /src/dovecot/src/lib-compression/test-compression.c:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 958
    functionDepth: 4
    functionLinenumber: 958
    functionLinenumberEnd: 962
    functionName: test_gz_large_header
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_gz_large_header_int
    linkageType: ''
    returnType: void
    signature: void test_gz_large_header(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/lib-compression/test-compression.c:970,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:973,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-compression/test-compression.c:975,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:982,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:983,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:984,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:984,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:986,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:987,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-compression/test-compression.c:990,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:993,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:994,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-compression/test-compression.c:995,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:997,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:998,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-compression/test-compression.c:998,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:1000,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-compression/test-compression.c:1001,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:1003,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 964
    functionDepth: 3
    functionLinenumber: 964
    functionLinenumberEnd: 1004
    functionName: test_lz4_small_header
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - memcpy
    - compression_lookup_handler
    - struct compression_handler*::create_istream
    - test_istream_set_max_buffer_size
    - test_end
    - i_stream_read
    - test_istream_create_data
    - test_assert
    - i_stream_unref
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lz4_small_header(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: compression_lookup_handler_from_ext
      Src: /src/dovecot/src/lib-compression/test-compression.c:1014,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:1016,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:1018,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-compression/test-compression.c:1020,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:1021,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:1022,1
    - Dst: write
      Src: /src/dovecot/src/lib-compression/test-compression.c:1023,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:1025,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:1027,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1028
    functionName: test_uncompress_file
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - struct compression_handler*::create_istream
    - i_stream_create_file
    - i_fatal
    - write
    - i_stream_skip
    - compression_lookup_handler_from_ext
    - i_stream_read_more
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_uncompress_file(const char *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: compression_lookup_handler_from_ext
      Src: /src/dovecot/src/lib-compression/test-compression.c:1042,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:1044,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:1046,1
    - Dst: open
      Src: /src/dovecot/src/lib-compression/test-compression.c:1049,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:1051,1
    - Dst: open
      Src: /src/dovecot/src/lib-compression/test-compression.c:1052,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:1054,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:1056,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-compression/test-compression.c:1057,1
    - Dst: struct compression_handler*::create_ostream_auto
      Src: /src/dovecot/src/lib-compression/test-compression.c:1058,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-compression/test-compression.c:1059,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:1060,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-compression/test-compression.c:1061,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-compression/test-compression.c:1062,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:1063,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-compression/test-compression.c:1065,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:1066,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-compression/test-compression.c:1067,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:1069,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:1070,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:1071,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-compression/test-compression.c:1072,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:1075,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-compression/test-compression.c:1076,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/lib-compression/test-compression.c:1077,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/test-compression.c:1078,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-compression/test-compression.c:1079,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/test-compression.c:1080,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:1082,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-compression/test-compression.c:1083,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-compression/test-compression.c:1084,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/test-compression.c:1086,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/test-compression.c:1087,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-compression/test-compression.c:1088,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 2
    argNames:
    - in_path
    - out_path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1089
    functionName: test_compress_file
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - i_close_fd
    - struct compression_handler*::create_istream
    - i_fatal
    - i_stream_skip
    - o_stream_nsend
    - i_stream_read_more
    - i_stream_destroy
    - struct compression_handler*::create_ostream_auto
    - open
    - o_stream_create_fd_file
    - i_stream_create_fd_autoclose
    - sha1_init
    - o_stream_destroy
    - i_stream_create_fd
    - sha1_result
    - o_stream_finish
    - memcmp
    - compression_lookup_handler_from_ext
    - sha1_loop
    linkageType: ''
    returnType: void
    signature: void test_compress_file(const char *in_path, const char *out_path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-compression/test-compression.c:1094,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-compression/test-compression.c:1099,1
    - Dst: compression_lookup_handler_from_ext
      Src: /src/dovecot/src/lib-compression/test-compression.c:1100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-compression/test-compression.c:1101,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-compression/test-compression.c:1105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1106
    functionName: test_compression_ext
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_assert
    - compression_lookup_handler_from_ext
    - t_strconcat
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_compression_ext(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:1110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1108
    functionDepth: 3
    functionLinenumber: 1108
    functionLinenumberEnd: 1111
    functionName: test_compression_init
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - settings_simple_init
    linkageType: ''
    returnType: void
    signature: void test_compression_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-compression/test-compression.c:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1113
    functionDepth: 4
    functionLinenumber: 1113
    functionLinenumberEnd: 1116
    functionName: test_compression_deinit
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 0
    functionsReached:
    - settings_simple_deinit
    linkageType: ''
    returnType: void
    signature: void test_compression_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_uncompress_file
      Src: /src/dovecot/src/lib-compression/test-compression.c:1134,1
    - Dst: lib_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:1138,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:1139,1
    - Dst: test_compress_file
      Src: /src/dovecot/src/lib-compression/test-compression.c:1140,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-compression/test-compression.c:1141,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-compression/test-compression.c:1142,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-compression/test-compression.c:1145,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-compression/test-compression.c:1146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1118
    functionDepth: 7
    functionLinenumber: 1118
    functionLinenumberEnd: 1147
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-compression/test-compression.c
    functionUses: 1
    functionsReached:
    - settings_simple_deinit
    - test_compress_file
    - lib_init
    - lib_deinit
    - test_uncompress_file
    - test_dir_init
    - test_run
    - settings_simple_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inflateEnd
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:46,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 51
    functionName: i_stream_zlib_close
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_close
    - inflateEnd
    linkageType: ''
    returnType: void
    signature: "void i_stream_zlib_close(struct iostream_private *stream,\n\t\t\t\tbool
      close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:55,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:57,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zstream
    - error
    argTypes:
    - struct zlib_istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: zlib_read_error
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 1
    functionsReached:
    - i_stream_get_name
    - i_stream_get_absolute_offset
    - io_stream_set_error
    linkageType: ''
    returnType: void
    signature: void zlib_read_error(struct zlib_istream *zstream, const char *error)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:69,1
    - Dst: zlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:74,1
    - Dst: zlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:78,1
    - Dst: zlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:92,1
    - Dst: le16_to_cpu_unaligned
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:100,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:123,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 53
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 126
    functionName: i_stream_zlib_read_header
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_skip
    - le16_to_cpu_unaligned
    - i_stream_read_bytes
    - zlib_read_error
    linkageType: ''
    returnType: int
    signature: int i_stream_zlib_read_header(struct istream_private *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:135,1
    - Dst: zlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:140,1
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:150,1
    - Dst: zlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:151,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:155,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zlib_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 159
    functionName: i_stream_zlib_read_trailer
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_skip
    - le32_to_cpu_unaligned
    - i_stream_read_bytes
    - zlib_read_error
    linkageType: ''
    returnType: int
    signature: int i_stream_zlib_read_trailer(struct zlib_istream *zstream)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_zlib_read_trailer
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:180,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:186,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:200,1
    - Dst: inflateEnd
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:220,1
    - Dst: i_stream_zlib_init
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:221,1
    - Dst: i_stream_zlib_read_header
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:226,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:234,1
    - Dst: i_stream_try_alloc_avoid_compress
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:238,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:242,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:247,1
    - Dst: zlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:248,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:255,1
    - Dst: inflate
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:264,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:269,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:275,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:276,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:280,1
    - Dst: zlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:287,1
    - Dst: zlib_read_error
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:291,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:295,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:296,1
    - Dst: i_stream_zlib_read_trailer
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:306,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:311,1
    - Dst: i_stream_zlib_read
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:315,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 112
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 318
    functionName: i_stream_zlib_read
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 1
    functionsReached:
    - i_stream_zlib_read_trailer
    - i_stream_get_data_size
    - inflate
    - inflateEnd
    - i_stream_zlib_read_header
    - i_fatal_status
    - i_stream_read_eof
    - i_fatal
    - i_stream_zlib_read
    - i_stream_skip
    - i_stream_get_name
    - crc32_data_more
    - i_stream_read_more
    - i_stream_zlib_init
    - i_stream_try_alloc_avoid_compress
    - i_assert
    - i_stream_try_alloc
    - i_stream_set_input_pending
    - zlib_read_error
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_zlib_read(struct istream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: inflateInit2
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:324,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:329,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:331,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:333,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zlib_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 339
    functionName: i_stream_zlib_init
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 1
    functionsReached:
    - inflateInit2
    - i_fatal
    - i_fatal_status
    linkageType: ''
    returnType: void
    signature: void i_stream_zlib_init(struct zlib_istream *zstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:345,1
    - Dst: inflateEnd
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:358,1
    - Dst: i_stream_zlib_init
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zlib_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 360
    functionName: i_stream_zlib_reset
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_zlib_init
    - i_stream_seek
    - inflateEnd
    linkageType: ''
    returnType: void
    signature: void i_stream_zlib_reset(struct zlib_istream *zstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:367,1
    - Dst: i_stream_zlib_reset
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:371,1
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:372,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 377
    functionName: i_stream_zlib_seek
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_nonseekable_try_seek
    - i_stream_zlib_reset
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void i_stream_zlib_seek(struct istream_private *stream, uoff_t v_offset,
      bool mark)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:384,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:385,1
    - Dst: i_stream_zlib_reset
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 394
    functionName: i_stream_zlib_sync
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_zlib_reset
    - i_stream_stat
    - memcmp
    linkageType: ''
    returnType: void
    signature: void i_stream_zlib_sync(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:401,1
    - Dst: i_stream_zlib_init
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:405,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:417,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - input
    - gz
    argTypes:
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 419
    functionName: i_stream_create_zlib
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_zlib_init
    - i_new
    - i_stream_get_fd
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_zlib(struct istream *input, bool gz)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_zlib
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 3
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: i_stream_create_gz
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_create_zlib
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_gz(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_zlib
      Src: /src/dovecot/src/lib-compression/istream-zlib.c:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 426
    functionDepth: 3
    functionLinenumber: 426
    functionLinenumberEnd: 429
    functionName: i_stream_create_deflate
    functionSourceFile: /src/dovecot/src/lib-compression/istream-zlib.c
    functionUses: 0
    functionsReached:
    - i_stream_create_zlib
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_deflate(struct istream *input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_versionNumber
      Src: /src/dovecot/src/lib-compression/iostream-zstd-private.h:9,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - err
    argTypes:
    - ZSTD_ErrorCode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 23
    functionName: zstd_version_errcode
    functionSourceFile: /src/dovecot/src/lib-compression/iostream-zstd-private.h
    functionUses: 2
    functionsReached:
    - ZSTD_versionNumber
    linkageType: ''
    returnType: ZSTD_ErrorCode
    signature: ZSTD_ErrorCode zstd_version_errcode(ZSTD_ErrorCode err)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_versionNumber
      Src: /src/dovecot/src/lib-compression/iostream-zstd-private.h:29,1
    - Dst: ZSTD_versionNumber
      Src: /src/dovecot/src/lib-compression/iostream-zstd-private.h:30,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-compression/iostream-zstd-private.h:31,1
    - Dst: ZSTD_versionNumber
      Src: /src/dovecot/src/lib-compression/iostream-zstd-private.h:32,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 33
    functionName: zstd_version_check
    functionSourceFile: /src/dovecot/src/lib-compression/iostream-zstd-private.h
    functionUses: 2
    functionsReached:
    - ZSTD_versionNumber
    - i_warning
    linkageType: ''
    returnType: void
    signature: void zstd_version_check(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:69,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 81
    functionName: zlib_settings_check
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool zlib_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:88,1
    - Dst: deflateEnd
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:91,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 94
    functionName: o_stream_zlib_close
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - i_assert
    - deflateEnd
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: "void o_stream_zlib_close(struct iostream_private *stream,\n\t\t\t\tbool
      close_parent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:102,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:103,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:107,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:110,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zlib_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 117
    functionName: o_stream_zlib_send_gz_header
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    - i_assert
    - o_stream_copy_error_from_parent
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int o_stream_zlib_send_gz_header(struct zlib_ostream *zstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - output
    - num
    argTypes:
    - struct ostream*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 131
    functionName: o_stream_zlib_lsb_uint32
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int o_stream_zlib_lsb_uint32(struct ostream *output, uint32_t num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_zlib_lsb_uint32
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:140,1
    - Dst: o_stream_zlib_lsb_uint32
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:141,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zlib_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: o_stream_zlib_send_gz_trailer
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_zlib_lsb_uint32
    - o_stream_copy_error_from_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_zlib_send_gz_trailer(struct zlib_ostream *zstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:157,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:158,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:161,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:170,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - zstream
    argTypes:
    - struct zlib_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 176
    functionName: o_stream_zlib_send_outbuf
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 3
    functionsReached:
    - o_stream_set_flush_pending
    - i_assert
    - o_stream_copy_error_from_parent
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int o_stream_zlib_send_outbuf(struct zlib_ostream *zstream)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:185,1
    - Dst: o_stream_zlib_send_gz_header
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:191,1
    - Dst: o_stream_zlib_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:205,1
    - Dst: deflate
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:213,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:219,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:221,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:222,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:223,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:225,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:226,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:233,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 3
    argNames:
    - zstream
    - data
    - size
    argTypes:
    - struct zlib_ostream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 237
    functionName: o_stream_zlib_send_chunk
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - i_panic
    - o_stream_get_name
    - o_stream_zlib_send_gz_header
    - i_fatal_status
    - deflate
    - i_assert
    - crc32_data_more
    - o_stream_zlib_send_outbuf
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_zlib_send_chunk(struct zlib_ostream *zstream,\n\t\t\t
      const void *data, size_t size)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:247,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:250,1
    - Dst: o_stream_flush_parent_if_needed
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:254,1
    - Dst: o_stream_zlib_send_gz_header
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:257,1
    - Dst: o_stream_zlib_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:261,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:267,1
    - Dst: o_stream_zlib_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:275,1
    - Dst: deflate
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:281,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:289,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:291,1
    - Dst: o_stream_zlib_send_gz_trailer
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:296,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:301,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 2
    argNames:
    - zstream
    - final
    argTypes:
    - struct zlib_ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 303
    functionName: o_stream_zlib_send_flush
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_flush_parent_if_needed
    - i_unreached
    - o_stream_zlib_send_gz_header
    - i_fatal_status
    - o_stream_zlib_send_gz_trailer
    - deflate
    - i_assert
    - o_stream_zlib_send_outbuf
    linkageType: ''
    returnType: int
    signature: int o_stream_zlib_send_flush(struct zlib_ostream *zstream, bool final)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_zlib_send_flush
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:309,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 305
    functionDepth: 4
    functionLinenumber: 305
    functionLinenumberEnd: 314
    functionName: o_stream_zlib_flush
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_flush_parent
    - o_stream_zlib_send_flush
    linkageType: ''
    returnType: int
    signature: int o_stream_zlib_flush(struct ostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 327
    functionName: o_stream_zlib_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_zlib_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 336
    functionName: o_stream_zlib_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_avail_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_zlib_get_buffer_avail_size(const struct ostream_private
      *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_zlib_send_outbuf
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:346,1
    - Dst: o_stream_zlib_send_chunk
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:353,1
    - Dst: o_stream_zlib_send_flush
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:364,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 338
    functionDepth: 4
    functionLinenumber: 338
    functionLinenumberEnd: 371
    functionName: o_stream_zlib_sendv
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_zlib_send_chunk
    - o_stream_zlib_send_outbuf
    - o_stream_zlib_send_flush
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_zlib_sendv(struct ostream_private *stream,\n\t\t
      \   const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:385,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - zstream
    - level
    - strategy
    argTypes:
    - struct zlib_ostream*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 386
    functionName: o_stream_zlib_init_gz_header
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void o_stream_zlib_init_gz_header(struct zlib_ostream *zstream,\n\t\t\t\t\t
      int level, int strategy)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:396,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:398,1
    - Dst: o_stream_zlib_init_gz_header
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:411,1
    - Dst: deflateInit2
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:412,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:417,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:419,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:421,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:423,1
    - Dst: o_stream_init_buffering_flush
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:428,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:429,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:430,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - output
    - level
    - gz
    argTypes:
    - struct ostream*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 388
    functionDepth: 2
    functionLinenumber: 388
    functionLinenumberEnd: 431
    functionName: o_stream_create_zlib
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_zlib_init_gz_header
    - i_fatal_status
    - o_stream_get_fd
    - i_fatal
    - o_stream_init_buffering_flush
    - o_stream_create
    - i_new
    - deflateInit2
    - i_assert
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_zlib(struct ostream *output, int level, bool gz)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:439,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:441,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:443,1
    - Dst: o_stream_create_zlib
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - output
    - event
    - gz
    argTypes:
    - struct ostream*
    - struct event*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 433
    functionDepth: 3
    functionLinenumber: 433
    functionLinenumberEnd: 445
    functionName: o_stream_create_zlib_auto
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - settings_free
    - o_stream_create_zlib
    - settings_get
    - o_stream_create_error_str
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_zlib_auto(struct ostream *output, struct event *event, bool
      gz)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_zlib_auto
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - output
    - event
    argTypes:
    - struct ostream*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 447
    functionDepth: 4
    functionLinenumber: 447
    functionLinenumberEnd: 450
    functionName: o_stream_create_gz_auto
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_create_zlib_auto
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_gz_auto(struct ostream *output, struct
      event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_zlib_auto
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - output
    - event
    argTypes:
    - struct ostream*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 4
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: o_stream_create_deflate_auto
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_create_zlib_auto
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_deflate_auto(struct ostream *output,
      struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_zlib
      Src: /src/dovecot/src/lib-compression/ostream-zlib.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - output
    - level
    argTypes:
    - struct ostream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 457
    functionDepth: 3
    functionLinenumber: 457
    functionLinenumberEnd: 460
    functionName: o_stream_create_deflate
    functionSourceFile: /src/dovecot/src/lib-compression/ostream-zlib.c
    functionUses: 0
    functionsReached:
    - o_stream_create_zlib
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_deflate(struct ostream *output, int
      level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: HTML_WHITESPACE
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HTML_WHITESPACE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:59,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum mail_html2text_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 63
    functionName: mail_html2text_init
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - i_new
    linkageType: ''
    returnType: struct mail_html2text
    signature: 'struct mail_html2text *

      mail_html2text_init(enum mail_html2text_flags flags)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:71,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:75,1
    - Dst: HTML_WHITESPACE
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:76,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:80,1
    - Dst: HTML_WHITESPACE
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:81,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:85,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:90,1
    - Dst: HTML_WHITESPACE
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:91,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:96,1
    - Dst: HTML_WHITESPACE
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:106,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 40
    argCount: 3
    argNames:
    - ht
    - data
    - size
    argTypes:
    - struct mail_html2text*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 116
    functionName: parse_tag_name
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached:
    - i_memcasecmp
    - memcmp
    - HTML_WHITESPACE
    linkageType: ''
    returnType: size_t
    signature: "size_t parse_tag_name(struct mail_html2text *ht,\n\t       const unsigned
      char *data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:122,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:123,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:134,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:135,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:136,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - name
    - chr_r
    argTypes:
    - char*
    - unichar_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 142
    functionName: html_entity_get_unichar
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached:
    - strcmp
    - uni_is_valid_ucs4
    - str_to_uint32
    - N_ELEMENTS
    - str_to_uint32_hex
    linkageType: ''
    returnType: bool
    signature: bool html_entity_get_unichar(const char *name, unichar_t *chr_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HTML_WHITESPACE
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:152,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:162,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:163,1
    - Dst: html_entity_get_unichar
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:165,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:166,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - data
    - size
    - output
    argTypes:
    - unsigned char*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 168
    functionName: parse_entity
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached:
    - memcpy
    - HTML_WHITESPACE
    - uni_ucs4_to_utf8_c
    - html_entity_get_unichar
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: "size_t parse_entity(const unsigned char *data, size_t size,\n\t\t\t
      \  buffer_t *output)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - output
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: mail_html2text_add_space
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached:
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: void mail_html2text_add_space(buffer_t *output)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: parse_tag_name
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:191,1
    - Dst: parse_entity
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:199,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:204,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:216,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:218,1
    - Dst: mail_html2text_add_space
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:221,1
    - Dst: HTML_WHITESPACE
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:255,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:260,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:262,1
    - Dst: mail_html2text_add_space
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:265,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:273,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:275,1
    - Dst: mail_html2text_add_space
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:278,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:286,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:288,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:298,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 111
    argCount: 4
    argNames:
    - ht
    - data
    - size
    - output
    argTypes:
    - struct mail_html2text*
    - unsigned char*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 303
    functionName: parse_data
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_memcasecmp
    - HTML_WHITESPACE
    - I_MIN
    - mail_html2text_add_space
    - parse_entity
    - parse_tag_name
    - buffer_append_c
    linkageType: ''
    returnType: size_t
    signature: "size_t parse_data(struct mail_html2text *ht,\n\t   const unsigned
      char *data, size_t size, buffer_t *output)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:311,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:318,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:319,1
    - Dst: parse_data
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:320,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:332,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:336,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:337,1
    - Dst: parse_data
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:340,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:341,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - ht
    - data
    - size
    - output
    argTypes:
    - struct mail_html2text*
    - unsigned char*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 305
    functionDepth: 4
    functionLinenumber: 305
    functionLinenumberEnd: 342
    functionName: mail_html2text_more
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - I_MIN
    - parse_data
    - buffer_set_used_size
    - buffer_delete
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_html2text_more(struct mail_html2text *ht,\n\t\t\t const
      unsigned char *data, size_t size,\n\t\t\t buffer_t *output)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:352,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/mail-html2text.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ht
    argTypes:
    - struct mail_html2text**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 354
    functionName: mail_html2text_deinit
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_html2text_deinit(struct mail_html2text **_ht)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-address.c:27,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/message-address.c:29,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-address.c:30,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-mail/message-address.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 33
    functionName: add_address
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_new
    - DLLIST2_APPEND
    - i_zero
    linkageType: ''
    returnType: void
    signature: void add_address(struct message_address_parser_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-mail/message-address.c:42,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/message-address.c:47,1
    - Dst: IS_ESCAPED_CHAR
      Src: /src/dovecot/src/lib-mail/message-address.c:53,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:59,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/message-address.c:60,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:61,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:66,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/message-address.c:67,1
    - Dst: IS_ESCAPED_CHAR
      Src: /src/dovecot/src/lib-mail/message-address.c:70,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:71,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:72,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:75,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 3
    argNames:
    - dest
    - cstr
    - escape_dot
    argTypes:
    - string_t*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 76
    functionName: str_append_maybe_escape
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_append_data
    - IS_ESCAPED_CHAR
    - IS_ATEXT
    linkageType: ''
    returnType: void
    signature: void str_append_maybe_escape(string_t *dest, const char *cstr, bool
      escape_dot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:85,1
    - Dst: rfc822_parse_atom
      Src: /src/dovecot/src/lib-mail/message-address.c:96,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 99
    functionName: parse_nonstrict_dot_atom
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - rfc822_parse_atom
    linkageType: ''
    returnType: int
    signature: int parse_nonstrict_dot_atom(struct rfc822_parser_context *ctx, string_t
      *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-address.c:109,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-address.c:111,1
    - Dst: rfc822_parse_quoted_string
      Src: /src/dovecot/src/lib-mail/message-address.c:113,1
    - Dst: rfc822_parse_dot_atom
      Src: /src/dovecot/src/lib-mail/message-address.c:115,1
    - Dst: parse_nonstrict_dot_atom
      Src: /src/dovecot/src/lib-mail/message-address.c:117,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-address.c:121,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 123
    functionName: parse_local_part
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - str_c
    - parse_nonstrict_dot_atom
    - p_strdup
    - rfc822_parse_quoted_string
    - str_truncate
    - rfc822_parse_dot_atom
    - i_assert
    linkageType: ''
    returnType: int
    signature: int parse_local_part(struct message_address_parser_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-address.c:129,1
    - Dst: rfc822_parse_domain
      Src: /src/dovecot/src/lib-mail/message-address.c:130,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-address.c:133,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: parse_domain
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 2
    functionsReached:
    - str_c
    - rfc822_parse_domain
    - str_truncate
    - p_strdup
    linkageType: ''
    returnType: int
    signature: int parse_domain(struct message_address_parser_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-address.c:142,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-address.c:150,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:151,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:153,1
    - Dst: rfc822_parse_domain
      Src: /src/dovecot/src/lib-mail/message-address.c:154,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:157,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-address.c:161,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:161,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 163
    functionName: parse_domain_list
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - rfc822_parse_domain
    - p_strdup
    - str_append_c
    - str_len
    - str_truncate
    linkageType: ''
    returnType: int
    signature: int parse_domain_list(struct message_address_parser_context *ctx)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-address.c:169,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:172,1
    - Dst: parse_domain_list
      Src: /src/dovecot/src/lib-mail/message-address.c:176,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:187,1
    - Dst: parse_local_part
      Src: /src/dovecot/src/lib-mail/message-address.c:194,1
    - Dst: parse_domain
      Src: /src/dovecot/src/lib-mail/message-address.c:197,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:206,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 2
    argNames:
    - ctx
    - parsing_path
    argTypes:
    - struct message_address_parser_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 207
    functionName: parse_angle_addr
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - i_assert
    - parse_local_part
    - parse_domain_list
    - parse_domain
    linkageType: ''
    returnType: int
    signature: "int parse_angle_addr(struct message_address_parser_context *ctx,\n\t\t\t
      \   bool parsing_path)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-address.c:215,1
    - Dst: rfc822_parse_phrase
      Src: /src/dovecot/src/lib-mail/message-address.c:216,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-address.c:220,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:220,1
    - Dst: parse_angle_addr
      Src: /src/dovecot/src/lib-mail/message-address.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 209
    functionDepth: 4
    functionLinenumber: 209
    functionLinenumberEnd: 232
    functionName: parse_name_addr
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - rfc822_parse_phrase
    - parse_angle_addr
    - str_truncate
    linkageType: ''
    returnType: int
    signature: int parse_name_addr(struct message_address_parser_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-address.c:239,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-address.c:241,1
    - Dst: parse_local_part
      Src: /src/dovecot/src/lib-mail/message-address.c:244,1
    - Dst: parse_domain
      Src: /src/dovecot/src/lib-mail/message-address.c:251,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-address.c:256,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-address.c:257,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:257,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:263,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-address.c:264,1
    - Dst: rfc822_parse_phrase
      Src: /src/dovecot/src/lib-mail/message-address.c:265,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-address.c:266,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-address.c:268,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:268,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 277
    functionName: parse_addr_spec
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_assert
    - p_strdup
    - str_append_c
    - parse_local_part
    - str_len
    - rfc822_parse_phrase
    - str_truncate
    - parse_domain
    linkageType: ''
    returnType: int
    signature: int parse_addr_spec(struct message_address_parser_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: add_address
      Src: /src/dovecot/src/lib-mail/message-address.c:289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 290
    functionName: add_fixed_address
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - add_address
    linkageType: ''
    returnType: void
    signature: void add_fixed_address(struct message_address_parser_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parse_name_addr
      Src: /src/dovecot/src/lib-mail/message-address.c:299,1
    - Dst: parse_addr_spec
      Src: /src/dovecot/src/lib-mail/message-address.c:302,1
    - Dst: add_fixed_address
      Src: /src/dovecot/src/lib-mail/message-address.c:312,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 292
    functionDepth: 5
    functionLinenumber: 292
    functionLinenumberEnd: 314
    functionName: parse_mailbox
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 1
    functionsReached:
    - parse_name_addr
    - parse_addr_spec
    - add_fixed_address
    linkageType: ''
    returnType: int
    signature: int parse_mailbox(struct message_address_parser_context *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-address.c:324,1
    - Dst: rfc822_parse_phrase
      Src: /src/dovecot/src/lib-mail/message-address.c:325,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:332,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-address.c:335,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:335,1
    - Dst: add_address
      Src: /src/dovecot/src/lib-mail/message-address.c:336,1
    - Dst: parse_mailbox
      Src: /src/dovecot/src/lib-mail/message-address.c:342,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:349,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:361,1
    - Dst: add_address
      Src: /src/dovecot/src/lib-mail/message-address.c:367,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 316
    functionDepth: 6
    functionLinenumber: 316
    functionLinenumberEnd: 369
    functionName: parse_group
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - p_strdup
    - rfc822_parse_phrase
    - add_address
    - str_truncate
    - parse_mailbox
    linkageType: ''
    returnType: int
    signature: int parse_group(struct message_address_parser_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_group
      Src: /src/dovecot/src/lib-mail/message-address.c:378,1
    - Dst: parse_mailbox
      Src: /src/dovecot/src/lib-mail/message-address.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 371
    functionDepth: 7
    functionLinenumber: 371
    functionLinenumberEnd: 384
    functionName: parse_address
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - parse_mailbox
    - parse_group
    linkageType: ''
    returnType: int
    signature: int parse_address(struct message_address_parser_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: parse_address
      Src: /src/dovecot/src/lib-mail/message-address.c:394,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:402,1
    - Dst: add_fixed_address
      Src: /src/dovecot/src/lib-mail/message-address.c:405,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - max_addresses
    argTypes:
    - struct message_address_parser_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 386
    functionDepth: 8
    functionLinenumber: 386
    functionLinenumberEnd: 411
    functionName: parse_address_list
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - add_fixed_address
    - parse_address
    linkageType: ''
    returnType: int
    signature: "int parse_address_list(struct message_address_parser_context *ctx,\n\t\t\t
      \     unsigned int max_addresses)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:417,1
    - Dst: parse_local_part
      Src: /src/dovecot/src/lib-mail/message-address.c:424,1
    - Dst: parse_domain
      Src: /src/dovecot/src/lib-mail/message-address.c:426,1
    - Dst: parse_angle_addr
      Src: /src/dovecot/src/lib-mail/message-address.c:429,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:431,1
    - Dst: add_address
      Src: /src/dovecot/src/lib-mail/message-address.c:439,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_address_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 413
    functionDepth: 4
    functionLinenumber: 413
    functionLinenumberEnd: 441
    functionName: parse_path
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 1
    functionsReached:
    - rfc822_skip_lwsp
    - parse_local_part
    - add_address
    - parse_angle_addr
    - parse_domain
    linkageType: ''
    returnType: int
    signature: int parse_path(struct message_address_parser_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-address.c:451,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-address.c:453,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-address.c:453,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/message-address.c:456,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-address.c:460,1
    - Dst: parse_address_list
      Src: /src/dovecot/src/lib-mail/message-address.c:463,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-address.c:465,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/message-address.c:466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 6
    argNames:
    - pool
    - data
    - size
    - max_addresses
    - flags
    - list_r
    argTypes:
    - pool_t
    - unsigned char*
    - size_t
    - unsigned int
    - enum message_address_parse_flags
    - struct message_address_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 443
    functionDepth: 9
    functionLinenumber: 443
    functionLinenumberEnd: 468
    functionName: message_address_parse_real
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - i_zero
    - rfc822_skip_lwsp
    - t_str_new
    - parse_address_list
    - rfc822_parser_deinit
    - str_new
    - str_free
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void message_address_parse_real(pool_t pool, const unsigned char *data,
      size_t size,\n\t\t\t   unsigned int max_addresses,\n\t\t\t   enum message_address_parse_flags
      flags,\n\t\t\t   struct message_address_list *list_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-address.c:477,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-address.c:480,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/message-address.c:482,1
    - Dst: parse_path
      Src: /src/dovecot/src/lib-mail/message-address.c:484,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-address.c:486,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/message-address.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - pool
    - data
    - size
    - addr_r
    argTypes:
    - pool_t
    - unsigned char*
    - size_t
    - struct message_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 470
    functionDepth: 5
    functionLinenumber: 470
    functionLinenumberEnd: 490
    functionName: message_address_parse_path_real
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - i_zero
    - parse_path
    - rfc822_parser_deinit
    - str_new
    - str_free
    - rfc822_parser_init
    linkageType: ''
    returnType: int
    signature: "int message_address_parse_path_real(pool_t pool, const unsigned char
      *data,\n\t\t\t\tsize_t size, struct message_address **addr_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_address_parse_full
      Src: /src/dovecot/src/lib-mail/message-address.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - pool
    - data
    - size
    - max_addresses
    - flags
    argTypes:
    - pool_t
    - unsigned char*
    - size_t
    - unsigned int
    - enum message_address_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 501
    functionName: message_address_parse
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - message_address_parse_full
    linkageType: ''
    returnType: struct message_address
    signature: "struct message_address *\nmessage_address_parse(pool_t pool, const
      unsigned char *data, size_t size,\n\t\t      unsigned int max_addresses,\n\t\t
      \     enum message_address_parse_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_address_parse_real
      Src: /src/dovecot/src/lib-mail/message-address.c:509,1
    - Dst: message_address_parse_real
      Src: /src/dovecot/src/lib-mail/message-address.c:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - pool
    - data
    - size
    - max_addresses
    - flags
    - list_r
    argTypes:
    - pool_t
    - unsigned char*
    - size_t
    - unsigned int
    - enum message_address_parse_flags
    - struct message_address_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 503
    functionDepth: 10
    functionLinenumber: 503
    functionLinenumberEnd: 514
    functionName: message_address_parse_full
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 1
    functionsReached:
    - message_address_parse_real
    linkageType: ''
    returnType: void
    signature: "void message_address_parse_full(pool_t pool, const unsigned char *data,\n\t\t\t\tsize_t
      size, unsigned int max_addresses,\n\t\t\t\tenum message_address_parse_flags
      flags,\n\t\t\t\tstruct message_address_list *list_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_address_parse_path_real
      Src: /src/dovecot/src/lib-mail/message-address.c:523,1
    - Dst: message_address_parse_path_real
      Src: /src/dovecot/src/lib-mail/message-address.c:526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - pool
    - data
    - size
    - addr_r
    argTypes:
    - pool_t
    - unsigned char*
    - size_t
    - struct message_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 517
    functionDepth: 6
    functionLinenumber: 517
    functionLinenumberEnd: 527
    functionName: message_address_parse_path
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - message_address_parse_path_real
    linkageType: ''
    returnType: int
    signature: "int message_address_parse_path(pool_t pool, const unsigned char *data,\n\t\t\t
      \      size_t size, struct message_address **addr_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-address.c:541,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:542,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:554,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-mail/message-address.c:562,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:566,1
    - Dst: str_append_maybe_escape
      Src: /src/dovecot/src/lib-mail/message-address.c:568,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:571,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:573,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-address.c:577,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:580,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-address.c:580,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-address.c:581,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-address.c:583,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-address.c:583,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-address.c:585,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-address.c:585,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:586,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-address.c:592,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-mail/message-address.c:596,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:600,1
    - Dst: str_append_maybe_escape
      Src: /src/dovecot/src/lib-mail/message-address.c:602,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:608,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:609,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:611,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:612,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:615,1
    - Dst: str_append_maybe_escape
      Src: /src/dovecot/src/lib-mail/message-address.c:617,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:619,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-address.c:620,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-address.c:622,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 61
    argCount: 2
    argNames:
    - str
    - addr
    argTypes:
    - string_t*
    - struct message_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 531
    functionDepth: 2
    functionLinenumber: 531
    functionLinenumberEnd: 628
    functionName: message_address_write
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_append_c
    - str_len
    - str_append_maybe_escape
    - str_truncate
    - str_append
    - i_assert
    - strstr
    linkageType: ''
    returnType: void
    signature: void message_address_write(string_t *str, const struct message_address
      *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-address.c:632,1
    - Dst: message_address_write
      Src: /src/dovecot/src/lib-mail/message-address.c:633,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-address.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct message_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 630
    functionDepth: 3
    functionLinenumber: 630
    functionLinenumberEnd: 635
    functionName: message_address_to_string
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - message_address_write
    linkageType: ''
    returnType: char
    signature: char *message_address_to_string(const struct message_address *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_address_to_string
      Src: /src/dovecot/src/lib-mail/message-address.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct message_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 637
    functionDepth: 4
    functionLinenumber: 637
    functionLinenumberEnd: 646
    functionName: message_address_first_to_string
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - message_address_to_string
    linkageType: ''
    returnType: char
    signature: char *message_address_first_to_string(const struct message_address
      *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-address.c:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - addr
    - name
    - mailbox
    - domain
    argTypes:
    - struct message_address*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 648
    functionDepth: 1
    functionLinenumber: 648
    functionLinenumberEnd: 655
    functionName: message_address_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void message_address_init(struct message_address *addr,\n\tconst char
      *name, const char *mailbox, const char *domain)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-address.c:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - addr
    - name
    - smtp_addr
    argTypes:
    - struct message_address*
    - char*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 664
    functionName: message_address_init_from_smtp
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void message_address_init_from_smtp(struct message_address *addr,\n\tconst
      char *name, const struct smtp_address *smtp_addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/message-address.c:676,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-address.c:677,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hdr_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 681
    functionName: message_header_is_address
    functionSourceFile: /src/dovecot/src/lib-mail/message-address.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool message_header_is_address(const char *hdr_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: is_hex
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_hex(char c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_hex
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:81,1
    - Dst: is_hex
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:81,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - qp_input
    - limit
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 88
    functionName: get_encoding_size_diff
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c
    functionUses: 0
    functionsReached:
    - is_hex
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int get_encoding_size_diff(const char *qp_input, const unsigned
      int limit)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:94,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:98,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:101,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:102,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:103,1
    - Dst: i_stream_create_qp_decoder
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:104,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:107,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:108,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:109,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:114,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:117,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:118,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:119,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:124,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:132,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:136,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:139,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:139,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:143,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:144,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:145,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:146,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:147,1
    - Dst: i_stream_create_qp_decoder
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:148,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:149,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:150,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:153,1
    - Dst: get_encoding_size_diff
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:158,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:162,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:164,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:166,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:167,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:170,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:171,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 5
    argNames:
    - qp_input
    - output
    - stream_errno
    - buffer_size
    - eof
    argTypes:
    - char*
    - char*
    - int
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 172
    functionName: decode_test
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c
    functionUses: 0
    functionsReached:
    - str_c
    - strlen
    - t_strdup_printf
    - i_stream_create_qp_decoder
    - i_stream_seek
    - test_assert
    - t_str_new
    - test_istream_set_allow_eof
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - test_istream_set_size
    - i_stream_read_more
    - test_assert_strcmp
    - str_append_data
    - i_stream_create_limit
    - test_istream_create_data
    - str_truncate
    - i_stream_unref
    - get_encoding_size_diff
    linkageType: ''
    returnType: void
    signature: "void decode_test(const char *qp_input, const char *output, int stream_errno,\n\t
      \   unsigned int buffer_size, unsigned int eof)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:178,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:179,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:179,1
    - Dst: decode_test
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:181,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 174
    functionDepth: 3
    functionLinenumber: 174
    functionLinenumberEnd: 185
    functionName: test_istream_qp_decoder
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - test_end
    - decode_test
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_qp_decoder(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 188
    functionDepth: 7
    functionLinenumber: 188
    functionLinenumberEnd: 195
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c
    functionUses: 6
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:33,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:35,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:36,1
    - Dst: quoted_printable_q_decode
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:42,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:50,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 4
    argNames:
    - data
    - size
    - decodebuf
    - charsetlen_r
    argTypes:
    - unsigned char*
    - size_t
    - buffer_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 62
    functionName: message_header_decode_encoded
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-decode.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - quoted_printable_q_decode
    - base64_decode
    - buffer_append_c
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: "size_t message_header_decode_encoded(const unsigned char *data, size_t
      size,\n\t\t\t      buffer_t *decodebuf, size_t *charsetlen_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 74
    functionName: is_only_lwsp
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-decode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_only_lwsp(const unsigned char *data, size_t size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: is_only_lwsp
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:94,1
    - Dst: callback
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:96,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:104,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:107,1
    - Dst: message_header_decode_encoded
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:111,1
    - Dst: callback
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:121,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:121,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:134,1
    - Dst: callback
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:135,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:138,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 4
    argNames:
    - data
    - size
    - callback
    - context
    argTypes:
    - unsigned char*
    - size_t
    - message_header_decode_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 139
    functionName: message_header_decode
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-decode.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - buffer_set_used_size
    - message_header_decode_encoded
    - is_only_lwsp
    - callback
    - buffer_free
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void message_header_decode(const unsigned char *data, size_t size,\n\t\t\t
      \  message_header_decode_callback_t *callback,\n\t\t\t   void *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: charset_is_utf8
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:154,1
    - Dst: struct decode_utf8_context*::normalizer
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:157,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:159,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:160,1
    - Dst: charset_to_utf8_begin
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:165,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:168,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:169,1
    - Dst: charset_to_utf8
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:174,1
    - Dst: charset_to_utf8_end
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:175,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - data
    - size
    - charset
    - context
    argTypes:
    - unsigned char*
    - size_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 177
    functionName: decode_utf8_callback
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-decode.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - struct decode_utf8_context*::normalizer
    - charset_to_utf8_begin
    - uni_utf8_get_valid_data
    - charset_to_utf8
    - charset_is_utf8
    - charset_to_utf8_end
    linkageType: ''
    returnType: bool
    signature: "bool decode_utf8_callback(const unsigned char *data, size_t size,\n\t\t
      \    const char *charset, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:184,1
    - Dst: message_header_decode
      Src: /src/dovecot/src/lib-mail/message-header-decode.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - data
    - size
    - dest
    - normalizer
    argTypes:
    - unsigned char*
    - size_t
    - buffer_t*
    - normalizer_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 188
    functionName: message_header_decode_utf8
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-decode.c
    functionUses: 0
    functionsReached:
    - i_zero
    - message_header_decode
    linkageType: ''
    returnType: void
    signature: "void message_header_decode_utf8(const unsigned char *data, size_t
      size,\n\t\t\t\tbuffer_t *dest, normalizer_func_t *normalizer)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-mail/istream-dot.c:39,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-mail/istream-dot.c:41,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-dot.c:43,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-mail/istream-dot.c:49,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-mail/istream-dot.c:55,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-dot.c:56,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib-mail/istream-dot.c:59,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - dstream
    argTypes:
    - struct dot_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 62
    functionName: i_stream_dot_read_some
    functionSourceFile: /src/dovecot/src/lib-mail/istream-dot.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - io_stream_set_error
    - i_stream_try_alloc
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int i_stream_dot_read_some(struct dot_istream *dstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/dovecot/src/lib-mail/istream-dot.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dstream
    - destp
    argTypes:
    - struct dot_istream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 76
    functionName: flush_pending
    functionSourceFile: /src/dovecot/src/lib-mail/istream-dot.c
    functionUses: 19
    functionsReached:
    - memmove
    linkageType: ''
    returnType: bool
    signature: bool flush_pending(struct dot_istream *dstream, size_t *destp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: flush_pending
      Src: /src/dovecot/src/lib-mail/istream-dot.c:96,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - dstream
    - destp
    argTypes:
    - struct dot_istream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 97
    functionName: flush_dot_state
    functionSourceFile: /src/dovecot/src/lib-mail/istream-dot.c
    functionUses: 0
    functionsReached:
    - flush_pending
    linkageType: ''
    returnType: bool
    signature: bool flush_dot_state(struct dot_istream *dstream, size_t *destp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flush_dot_state
      Src: /src/dovecot/src/lib-mail/istream-dot.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dstream
    - destp
    argTypes:
    - struct dot_istream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: i_stream_dot_eof
    functionSourceFile: /src/dovecot/src/lib-mail/istream-dot.c
    functionUses: 0
    functionsReached:
    - flush_dot_state
    linkageType: ''
    returnType: void
    signature: void i_stream_dot_eof(struct dot_istream *dstream, size_t *destp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-dot.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - dest
    - ret
    argTypes:
    - struct istream_private*
    - size_t
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 117
    functionName: i_stream_dot_return
    functionSourceFile: /src/dovecot/src/lib-mail/istream-dot.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_dot_return(struct istream_private *stream, size_t
      dest, ssize_t ret)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-mail/istream-dot.c:123,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib-mail/istream-dot.c:129,1
    - Dst: flush_pending
      Src: /src/dovecot/src/lib-mail/istream-dot.c:132,1
    - Dst: i_stream_dot_return
      Src: /src/dovecot/src/lib-mail/istream-dot.c:139,1
    - Dst: i_stream_dot_return
      Src: /src/dovecot/src/lib-mail/istream-dot.c:143,1
    - Dst: i_stream_dot_read_some
      Src: /src/dovecot/src/lib-mail/istream-dot.c:144,1
    - Dst: flush_dot_state
      Src: /src/dovecot/src/lib-mail/istream-dot.c:151,1
    - Dst: i_stream_dot_return
      Src: /src/dovecot/src/lib-mail/istream-dot.c:152,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/istream-dot.c:156,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/istream-dot.c:163,1
    - Dst: i_memcspn
      Src: /src/dovecot/src/lib-mail/istream-dot.c:166,1
    - Dst: i_memcspn
      Src: /src/dovecot/src/lib-mail/istream-dot.c:168,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/istream-dot.c:172,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-mail/istream-dot.c:172,1
    - Dst: flush_dot_state
      Src: /src/dovecot/src/lib-mail/istream-dot.c:186,1
    - Dst: flush_dot_state
      Src: /src/dovecot/src/lib-mail/istream-dot.c:195,1
    - Dst: i_stream_dot_eof
      Src: /src/dovecot/src/lib-mail/istream-dot.c:205,1
    - Dst: flush_dot_state
      Src: /src/dovecot/src/lib-mail/istream-dot.c:210,1
    - Dst: i_stream_dot_eof
      Src: /src/dovecot/src/lib-mail/istream-dot.c:218,1
    - Dst: flush_dot_state
      Src: /src/dovecot/src/lib-mail/istream-dot.c:223,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/istream-dot.c:240,1
    - Dst: i_stream_dot_return
      Src: /src/dovecot/src/lib-mail/istream-dot.c:242,1
    - Dst: i_stream_dot_read
      Src: /src/dovecot/src/lib-mail/istream-dot.c:244,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-dot.c:245,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 105
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 247
    functionName: i_stream_dot_read
    functionSourceFile: /src/dovecot/src/lib-mail/istream-dot.c
    functionUses: 1
    functionsReached:
    - memcpy
    - PTR_OFFSET
    - container_of
    - i_stream_dot_eof
    - i_stream_dot_read
    - i_stream_try_alloc
    - I_MIN
    - i_stream_get_data
    - i_memcspn
    - i_stream_skip
    - i_stream_dot_return
    - flush_dot_state
    - flush_pending
    - i_assert
    - i_stream_dot_read_some
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_dot_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-dot.c:254,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-mail/istream-dot.c:261,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib-mail/istream-dot.c:262,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-mail/istream-dot.c:266,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-mail/istream-dot.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - input
    - flags
    argTypes:
    - struct istream*
    - enum istream_dot_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 268
    functionName: i_stream_create_dot
    functionSourceFile: /src/dovecot/src/lib-mail/istream-dot.c
    functionUses: 0
    functionsReached:
    - i_stream_get_fd
    - HAS_ANY_BITS
    - HAS_NO_BITS
    - i_new
    - i_stream_create
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_dot(struct istream *input, enum istream_dot_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:34,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:37,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:38,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:39,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:40,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:41,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:42,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:43,1
    - Dst: rfc822_skip_comment
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:43,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:44,1
    - Dst: rfc822_skip_comment
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:44,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:45,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:46,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:46,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:47,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:48,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:49,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 52
    functionName: test_rfc822_parse_comment
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - rfc822_skip_comment
    - test_assert_idx
    - strlen
    - test_begin
    - test_end
    - rfc822_parser_deinit
    - str_truncate
    - N_ELEMENTS
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: void test_rfc822_parse_comment(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:59,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:61,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:64,1
    - Dst: rfc822_skip_comment
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:66,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:66,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:67,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:67,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:67,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:68,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:70,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:73,1
    - Dst: rfc822_skip_comment
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:74,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:74,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:74,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:75,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 54
    functionDepth: 3
    functionLinenumber: 54
    functionLinenumberEnd: 78
    functionName: test_rfc822_parse_comment_nuls
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - rfc822_skip_comment
    - str_len
    - str_data
    - test_begin
    - test_end
    - rfc822_parser_deinit
    - test_assert
    - memcmp
    - str_truncate
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: void test_rfc822_parse_comment_nuls(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:100,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:103,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:104,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:105,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:106,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:107,1
    - Dst: rfc822_parse_quoted_string
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:107,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:108,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:109,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:109,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:110,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:111,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 114
    functionName: test_rfc822_parse_quoted_string
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - strlen
    - test_begin
    - test_end
    - rfc822_parse_quoted_string
    - rfc822_parser_deinit
    - str_truncate
    - N_ELEMENTS
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: void test_rfc822_parse_quoted_string(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:139,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:140,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:143,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:144,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:145,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:146,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:147,1
    - Dst: rfc822_parse_dot_atom
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:147,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:148,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:148,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:148,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:149,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:150,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:155,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:156,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:157,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:157,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:158,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:159,1
    - Dst: rfc822_parse_dot_atom
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:159,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:160,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:160,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:161,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:163,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:164,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 167
    functionName: test_rfc822_parse_dot_atom
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - str_data
    - test_assert_idx
    - str_len
    - strlen
    - test_begin
    - test_end
    - rfc822_parser_deinit
    - rfc822_parse_dot_atom
    - str_truncate
    - str_append
    - N_ELEMENTS
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: void test_rfc822_parse_dot_atom(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:186,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:189,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:190,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:191,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:192,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:193,1
    - Dst: rfc822_parse_domain
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:193,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:195,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:195,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:196,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:197,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 200
    functionName: test_rfc822_parse_domain_literal
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - rfc822_parse_domain
    - test_assert_idx
    - strlen
    - test_begin
    - test_end
    - rfc822_parser_deinit
    - str_truncate
    - N_ELEMENTS
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: void test_rfc822_parse_domain_literal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:214,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:216,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:217,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:218,1
    - Dst: rfc822_decode_punycode
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:219,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:219,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:220,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:220,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 224
    functionName: test_rfc822_decode_punycode
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - strlen
    - rfc822_decode_punycode
    - test_end
    - str_truncate
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_rfc822_decode_punycode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 228
    functionName: TEST_STRING
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_STRING(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:237,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:238,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:239,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:240,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:241,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:242,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:243,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:244,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:245,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:246,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:247,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:248,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:249,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:250,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:251,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:252,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:253,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:254,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:255,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:257,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:259,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:261,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:262,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:264,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:266,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:268,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:270,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:272,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:273,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:275,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:277,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:279,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:281,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:283,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:285,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:287,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:289,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:291,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:293,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:295,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:296,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:298,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:300,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:302,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:305,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:306,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:309,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:311,1
    - Dst: rfc822_parse_content_type
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:311,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:313,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:313,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 315
    functionName: test_rfc822_parse_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - rfc822_parse_content_type
    - test_assert_idx
    - TEST_STRING
    - rfc822_parser_deinit
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: void test_rfc822_parse_content_type(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:331,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:335,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:336,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:336,1
    - Dst: rfc822_parse_content_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:337,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:338,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:339,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:339,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:340,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:340,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:340,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:344,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:345,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:345,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 318
    functionDepth: 3
    functionLinenumber: 318
    functionLinenumberEnd: 347
    functionName: test_rfc822_parse_content_param
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - rfc822_parse_content_param
    - strlen
    - test_begin
    - test_end
    - rfc822_parser_deinit
    - test_assert
    - N_ELEMENTS
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: void test_rfc822_parse_content_param(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:361,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:365,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:367,1
    - Dst: rfc822_parse_content_type
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:368,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:369,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:371,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:371,1
    - Dst: rfc822_parse_content_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:374,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:376,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:377,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:377,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:382,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:383,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:384,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 8
    argNames:
    - input
    - input_len
    - content_type
    - params
    - param_count
    - expect_content_type
    - expect_ret
    - idx
    argTypes:
    - void*
    - size_t
    - char*
    - struct param*
    - size_t
    - bool
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 385
    functionName: parse_content_type_param
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - rfc822_parse_content_type
    - test_assert_idx
    - rfc822_parse_content_param
    - rfc822_parser_deinit
    - test_assert_strcmp_idx
    - i_assert
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_type_param(const void *input, size_t input_len,\n\t\t\t\t
      \    const char *content_type,\n\t\t\t\t     const struct param *params, size_t
      param_count,\n\t\t\t\t     bool expect_content_type, int expect_ret,\n\t\t\t\t
      \    int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 389
    functionName: TEST_STRING
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_STRING(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 391
    functionName: X10
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: X10(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:401,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:401,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:401,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:401,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:402,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:402,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:402,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:402,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:402,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:402,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:412,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:412,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:412,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:412,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:412,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:412,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:413,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:420,1
    - Dst: parse_content_type_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:423,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:423,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:424,1
    - Dst: parse_content_type_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:425,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:425,1
    - Dst: parse_content_type_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:426,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:427,1
    - Dst: parse_content_type_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:428,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:429,1
    - Dst: parse_content_type_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:430,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:431,1
    - Dst: parse_content_type_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:432,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:433,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:434,1
    - Dst: parse_content_type_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:435,1
    - Dst: TEST_STRING
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:436,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:439,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:440,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:441,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:443,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:444,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:445,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:446,1
    - Dst: parse_content_type_param
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:448,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:450,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:450,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 453
    functionName: test_rfc822_parse_content_type_param
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 0
    functionsReached:
    - parse_content_type_param
    - t_str_new
    - str_printfa
    - array_append_space
    - array_idx
    - strlen
    - t_strdup_printf
    - test_end
    - array_count
    - X10
    - TEST_STRING
    - t_array_init
    - str_append
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_rfc822_parse_content_type_param(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-rfc822-parser.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 455
    functionDepth: 7
    functionLinenumber: 455
    functionLinenumberEnd: 470
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:38,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:41,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:43,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:45,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - input
    - hdr_size
    - flags
    argTypes:
    - struct istream*
    - struct message_size*
    - enum message_header_parser_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 50
    functionName: message_parse_header_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_create_dynamic
    - i_stream_ref
    - i_new
    - str_new
    linkageType: ''
    returnType: struct message_header_parser_ctx
    signature: "struct message_header_parser_ctx *\nmessage_parse_header_init(struct
      istream *input, struct message_size *hdr_size,\n\t\t\t  enum message_header_parser_flags
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - header_block_max_size
    argTypes:
    - struct message_header_parser_ctx*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: message_parse_header_set_limit
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void message_parse_header_set_limit(struct message_header_parser_ctx
      *parser,\n\t\t\t       size_t header_block_max_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_parse_header_set_limit
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - parser
    - header_block_max_size
    argTypes:
    - struct message_header_parser_ctx*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: message_parse_header_lower_limit
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached:
    - message_parse_header_set_limit
    linkageType: ''
    returnType: void
    signature: "void message_parse_header_lower_limit(struct message_header_parser_ctx
      *parser,\n\t\t\t\t size_t header_block_max_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:71,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:72,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:73,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct message_header_parser_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: message_parse_header_deinit
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_free
    - str_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void message_parse_header_deinit(struct message_header_parser_ctx **_ctx)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:100,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:127,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:152,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:155,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:163,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:181,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:242,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:247,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:312,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:319,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:324,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:332,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:347,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:350,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:351,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:357,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:359,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:361,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:365,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:370,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:375,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:386,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:387,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:391,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:393,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:394,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:396,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:413,1
    CyclomaticComplexity: 92
    EdgeCount: 92
    ICount: 233
    argCount: 2
    argNames:
    - ctx
    - hdr_r
    argTypes:
    - struct message_header_parser_ctx*
    - struct message_header_line**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 417
    functionName: message_parse_header_next
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - str_c
    - str_append_c
    - str_data
    - IS_LWSP
    - str_append_data
    - I_MIN
    - i_stream_skip
    - buffer_set_used_size
    - str_truncate
    - buffer_append_c
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: "int message_parse_header_next(struct message_header_parser_ctx *ctx,\n\t\t\t
      \     struct message_header_line **hdr_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_header_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 422
    functionName: message_parse_header_has_nuls
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool message_parse_header_has_nuls(const struct message_header_parser_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:433,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:434,1
    - Dst: callback
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - input
    - hdr_size
    - flags
    - callback
    - context
    argTypes:
    - struct istream*
    - struct message_size*
    - enum message_header_parser_flags
    - message_header_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 425
    functionDepth: 2
    functionLinenumber: 425
    functionLinenumberEnd: 436
    functionName: message_parse_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached:
    - message_parse_header_init
    - message_parse_header_next
    - callback
    linkageType: ''
    returnType: void
    signature: "void message_parse_header(struct istream *input, struct message_size
      *hdr_size,\n\t\t\t  enum message_header_parser_flags flags,\n\t\t\t  message_header_callback_t
      *callback, void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:450,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:450,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:451,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:453,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:456,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - output
    - hdr
    argTypes:
    - buffer_t*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 459
    functionName: message_header_line_write
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - strlen
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: "void message_header_line_write(buffer_t *output,\n\t\t\t       const
      struct message_header_line *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:464,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:466,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:468,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:469,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:475,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:478,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:480,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-header-parser.c:482,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - pool
    - data
    - size
    argTypes:
    - pool_t
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 483
    functionName: message_header_strdup
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached:
    - memcpy
    - str_c
    - str_append_c
    - memchr
    - str_append
    - i_assert
    - str_new
    - p_malloc
    linkageType: ''
    returnType: char
    signature: 'char *

      message_header_strdup(pool_t pool, const unsigned char *data, size_t size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 505
    functionName: message_header_name_is_valid
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool message_header_name_is_valid(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numpack_encode
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:13,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:14,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:15,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - parts
    - dest
    argTypes:
    - struct message_binary_part*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 18
    functionName: message_binary_part_serialize
    functionSourceFile: /src/dovecot/src/lib-mail/message-binary-part.c
    functionUses: 0
    functionsReached:
    - numpack_encode
    linkageType: ''
    returnType: void
    signature: "void message_binary_part_serialize(const struct message_binary_part
      *parts,\n\t\t\t\t   buffer_t *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:28,1
    - Dst: numpack_decode
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:31,1
    - Dst: numpack_decode
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:32,1
    - Dst: numpack_decode
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:33,1
    - Dst: numpack_decode
      Src: /src/dovecot/src/lib-mail/message-binary-part.c:34,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - pool
    - data
    - size
    - parts_r
    argTypes:
    - pool_t
    - void*
    - size_t
    - struct message_binary_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 44
    functionName: message_binary_part_deserialize
    functionSourceFile: /src/dovecot/src/lib-mail/message-binary-part.c
    functionUses: 0
    functionsReached:
    - p_new
    - numpack_decode
    linkageType: ''
    returnType: int
    signature: "int message_binary_part_deserialize(pool_t pool, const void *data,
      size_t size,\n\t\t\t\t    struct message_binary_part **parts_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:16,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:18,1
    - Dst: rfc2231_parse
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:18,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:20,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:21,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:22,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:23,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - title
    - input
    - size
    - output
    argTypes:
    - char*
    - unsigned char*
    - size_t
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 24
    functionName: run_test
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - test_begin
    - rfc2231_parse
    - test_end
    - rfc822_parser_deinit
    - test_assert
    - test_assert_strcmp_idx
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void run_test(const char *title,\n\t\t     const unsigned char *input,
      size_t size,\n\t\t     const char *output[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: test_rfc2231_parser_rfc_tests_1
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_rfc_tests_1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: test_rfc2231_parser_rfc_tests_2
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_rfc_tests_2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 62
    functionName: test_rfc2231_spaces
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_spaces(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 87
    functionName: test_rfc2231_parser
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 100
    functionName: test_rfc2231_parser_redundant_keys
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_redundant_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 116
    functionName: test_rfc2231_parser_redundant_single_and_multisegment_keys
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_redundant_single_and_multisegment_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 132
    functionName: test_rfc2231_parser_redundant_extended_and_multisegment_keys
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_redundant_extended_and_multisegment_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 153
    functionName: test_rfc2231_parser_redundant_multisegment_keys
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_redundant_multisegment_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 168
    functionName: test_rfc2231_parser_invalid_sequence
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_invalid_sequence(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 198
    functionName: test_rfc2231_parser_encodings
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_encodings(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 222
    functionName: test_rfc2231_parser_utf8_encoding
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_utf8_encoding(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_test
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 239
    functionName: test_rfc2231_parser_multi_encodings
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - run_test
    linkageType: ''
    returnType: void
    signature: void test_rfc2231_parser_multi_encodings(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-rfc2231-parser.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 241
    functionDepth: 7
    functionLinenumber: 241
    functionLinenumberEnd: 259
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: IS_TIME_SEP
    functionSourceFile: /src/dovecot/src/lib-mail/message-date.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_TIME_SEP(c)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:38,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:38,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:39,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:39,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-mail/message-date.c:51,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-mail/message-date.c:63,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-mail/message-date.c:63,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-mail/message-date.c:73,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-mail/message-date.c:91,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-mail/message-date.c:93,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 47
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 98
    functionName: parse_timezone
    functionSourceFile: /src/dovecot/src/lib-mail/message-date.c
    functionUses: 0
    functionsReached:
    - i_toupper
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: int parse_timezone(const unsigned char *str, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-date.c:105,1
    - Dst: rfc822_parse_atom
      Src: /src/dovecot/src/lib-mail/message-date.c:107,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/message-date.c:109,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-date.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - value
    - value_len
    argTypes:
    - struct message_date_parser_context*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 112
    functionName: next_token
    functionSourceFile: /src/dovecot/src/lib-mail/message-date.c
    functionUses: 0
    functionsReached:
    - rfc822_parse_atom
    - str_truncate
    - str_data
    - str_len
    linkageType: ''
    returnType: int
    signature: "int next_token(struct message_date_parser_context *ctx,\n\t\t      const
      unsigned char **value, size_t *value_len)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-date.c:124,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-date.c:126,1
    - Dst: next_token
      Src: /src/dovecot/src/lib-mail/message-date.c:129,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-date.c:136,1
    - Dst: next_token
      Src: /src/dovecot/src/lib-mail/message-date.c:138,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:143,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:148,1
    - Dst: next_token
      Src: /src/dovecot/src/lib-mail/message-date.c:154,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/message-date.c:158,1
    - Dst: next_token
      Src: /src/dovecot/src/lib-mail/message-date.c:167,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:171,1
    - Dst: next_token
      Src: /src/dovecot/src/lib-mail/message-date.c:187,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:188,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:192,1
    - Dst: IS_TIME_SEP
      Src: /src/dovecot/src/lib-mail/message-date.c:199,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-date.c:202,1
    - Dst: next_token
      Src: /src/dovecot/src/lib-mail/message-date.c:204,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:205,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:205,1
    - Dst: IS_TIME_SEP
      Src: /src/dovecot/src/lib-mail/message-date.c:211,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-date.c:213,1
    - Dst: next_token
      Src: /src/dovecot/src/lib-mail/message-date.c:215,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:216,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/message-date.c:216,1
    - Dst: next_token
      Src: /src/dovecot/src/lib-mail/message-date.c:221,1
    - Dst: parse_timezone
      Src: /src/dovecot/src/lib-mail/message-date.c:232,1
    - Dst: utc_mktime
      Src: /src/dovecot/src/lib-mail/message-date.c:236,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 81
    argCount: 3
    argNames:
    - ctx
    - timestamp_r
    - timezone_offset_r
    argTypes:
    - struct message_date_parser_context*
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 243
    functionName: message_date_parser_tokens
    functionSourceFile: /src/dovecot/src/lib-mail/message-date.c
    functionUses: 0
    functionsReached:
    - i_zero
    - rfc822_skip_lwsp
    - i_memcasecmp
    - IS_TIME_SEP
    - utc_mktime
    - i_isdigit
    - next_token
    - parse_timezone
    linkageType: ''
    returnType: bool
    signature: "bool message_date_parser_tokens(struct message_date_parser_context
      *ctx,\n\t\t\t   time_t *timestamp_r, int *timezone_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-date.c:253,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-date.c:254,1
    - Dst: message_date_parser_tokens
      Src: /src/dovecot/src/lib-mail/message-date.c:255,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-date.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - data
    - size
    - timestamp_r
    - timezone_offset_r
    argTypes:
    - unsigned char*
    - size_t
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 245
    functionDepth: 3
    functionLinenumber: 245
    functionLinenumberEnd: 258
    functionName: message_date_parse
    functionSourceFile: /src/dovecot/src/lib-mail/message-date.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - message_date_parser_tokens
    - rfc822_parser_deinit
    - rfc822_parser_init
    linkageType: ''
    returnType: bool
    signature: "bool message_date_parse(const unsigned char *data, size_t size,\n\t\t\ttime_t
      *timestamp_r, int *timezone_offset_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: localtime
      Src: /src/dovecot/src/lib-mail/message-date.c:269,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-mail/message-date.c:270,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/message-date.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 285
    functionName: message_date_create
    functionSourceFile: /src/dovecot/src/lib-mail/message-date.c
    functionUses: 0
    functionsReached:
    - localtime
    - t_strdup_printf
    - utc_offset
    linkageType: ''
    returnType: char
    signature: char *message_date_create(time_t timestamp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:29,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:33,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - dest
    - max_len
    - flags
    argTypes:
    - string_t*
    - unsigned int
    - enum qp_encoder_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 47
    functionName: qp_encoder_init
    functionSourceFile: /src/dovecot/src/lib-mail/qp-encoder.c
    functionUses: 0
    functionsReached:
    - i_panic
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct qp_encoder
    signature: 'struct qp_encoder *

      qp_encoder_init(string_t *dest, unsigned int max_len, enum qp_encoder_flag flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qp
    argTypes:
    - struct qp_encoder**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: qp_encoder_deinit
    functionSourceFile: /src/dovecot/src/lib-mail/qp-encoder.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void qp_encoder_deinit(struct qp_encoder **qp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:72,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:73,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:75,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:83,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:88,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:91,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 28
    argCount: 2
    argNames:
    - qp
    - c
    argTypes:
    - struct qp_encoder*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 94
    functionName: qp_encode_or_break
    functionSourceFile: /src/dovecot/src/lib-mail/qp-encoder.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - str_append_c
    - strlen
    - str_append
    linkageType: ''
    returnType: void
    signature: void qp_encode_or_break(struct qp_encoder *qp, unsigned char c)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:99,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:105,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:116,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:117,1
    - Dst: qp_encode_or_break
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:123,1
    - Dst: qp_encode_or_break
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:135,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 3
    argNames:
    - qp
    - _src
    - src_size
    argTypes:
    - struct qp_encoder*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 137
    functionName: qp_encoder_more
    functionSourceFile: /src/dovecot/src/lib-mail/qp-encoder.c
    functionUses: 0
    functionsReached:
    - str_append
    - qp_encode_or_break
    - i_assert
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void qp_encoder_more(struct qp_encoder *qp, const void *_src, size_t
      src_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: qp_encode_or_break
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:144,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:149,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/qp-encoder.c:157,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - qp
    argTypes:
    - struct qp_encoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 162
    functionName: qp_encoder_finish
    functionSourceFile: /src/dovecot/src/lib-mail/qp-encoder.c
    functionUses: 0
    functionsReached:
    - str_append
    - qp_encode_or_break
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void qp_encoder_finish(struct qp_encoder *qp)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:36,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:37,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:39,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:40,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:41,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:43,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:44,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:54,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:57,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:58,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:59,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:62,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:66,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:68,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:69,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:71,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:77,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:79,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:80,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:81,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:84,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:85,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:87,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:91,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:92,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:92,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:93,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:94,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:98,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:99,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:99,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:101,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:106,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:106,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:107,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:107,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:107,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:110,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:111,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:113,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:113,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:115,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:115,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:117,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:118,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 69
    argCount: 3
    argNames:
    - test
    - flags
    - test_bufsize
    argTypes:
    - struct dot_test*
    - enum istream_dot_flags
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 119
    functionName: test_istream_dot_one
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-dot.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - strlen
    - HAS_ANY_BITS
    - i_stream_get_data
    - str_append_data
    - i_stream_skip
    - i_stream_read
    - test_istream_create
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - i_stream_create_dot
    - i_stream_set_max_buffer_size
    - test_istream_set_size
    - test_assert_memcmp
    - strstr
    linkageType: ''
    returnType: void
    signature: "void test_istream_dot_one(const struct dot_test *test,\n\t\t\t\t enum
      istream_dot_flags flags,\n\t\t\t\t bool test_bufsize)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:131,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:132,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:134,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:138,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:139,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:140,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:143,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:147,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:149,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:150,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:152,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:155,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:158,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:161,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:162,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:164,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:166,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:167,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:168,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:170,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:173,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:175,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:176,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 3
    argNames:
    - input_str
    - flags
    - test_bufsize
    argTypes:
    - char*
    - enum istream_dot_flags
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 177
    functionName: test_istream_dot_error
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-dot.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_stream_skip
    - i_stream_read
    - test_istream_create
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - i_stream_create_dot
    - i_stream_set_max_buffer_size
    - test_istream_set_size
    linkageType: ''
    returnType: void
    signature: "void test_istream_dot_error(const char *input_str,\n\t\t\t\t   enum
      istream_dot_flags flags,\n\t\t\t\t   bool test_bufsize)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:227,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:238,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:241,1
    - Dst: test_istream_dot_error
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:245,1
    - Dst: test_istream_dot_error
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:246,1
    - Dst: test_istream_dot_one
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:248,1
    - Dst: test_istream_dot_one
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:249,1
    - Dst: test_istream_dot_one
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:250,1
    - Dst: test_istream_dot_one
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:251,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:254,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - test_name
    - flags
    argTypes:
    - char*
    - enum istream_dot_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 224
    functionDepth: 4
    functionLinenumber: 224
    functionLinenumberEnd: 255
    functionName: test_istream_dot
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-dot.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - test_istream_dot_one
    - HAS_ANY_BITS
    - test_istream_dot_error
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_dot(const char *test_name, enum istream_dot_flags
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_dot
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 257
    functionDepth: 5
    functionLinenumber: 257
    functionLinenumberEnd: 260
    functionName: test_istream_dot_accept_bare_lf
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-dot.c
    functionUses: 0
    functionsReached:
    - test_istream_dot
    linkageType: ''
    returnType: void
    signature: void test_istream_dot_accept_bare_lf(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_dot
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 5
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: test_istream_dot_strict
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-dot.c
    functionUses: 0
    functionsReached:
    - test_istream_dot
    linkageType: ''
    returnType: void
    signature: void test_istream_dot_strict(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-istream-dot.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 267
    functionDepth: 7
    functionLinenumber: 267
    functionLinenumberEnd: 275
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-dot.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qp_encoder_deinit
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:23,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:24,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:26,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 27
    functionName: i_stream_qp_encoder_close
    functionSourceFile: /src/dovecot/src/lib-mail/istream-qp-encoder.c
    functionUses: 0
    functionsReached:
    - qp_encoder_deinit
    - buffer_free
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_qp_encoder_close(struct iostream_private *stream,\n\t\t\t\t
      \     bool close_parent)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:39,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:40,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:46,1
    - Dst: i_stream_read_more_memarea
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:74,1
    - Dst: qp_encoder_more
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:83,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:84,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 29
    functionDepth: 3
    functionLinenumber: 29
    functionLinenumberEnd: 86
    functionName: i_stream_qp_encoder_read
    functionSourceFile: /src/dovecot/src/lib-mail/istream-qp-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_skip
    - buffer_delete
    - i_assert
    - qp_encoder_more
    - i_stream_read_more_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_qp_encoder_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:101,1
    - Dst: qp_encoder_finish
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:102,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:103,1
    - Dst: i_stream_default_seek_nonseekable
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 106
    functionName: i_stream_qp_encoder_seek
    functionSourceFile: /src/dovecot/src/lib-mail/istream-qp-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_default_seek_nonseekable
    - i_stream_seek
    - qp_encoder_finish
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: "void i_stream_qp_encoder_seek(struct istream_private *stream,\n\t\t\t
      \    uoff_t v_offset, bool mark)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:113,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:115,1
    - Dst: qp_encoder_init
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:116,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:125,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-mail/istream-qp-encoder.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - input
    - flags
    argTypes:
    - struct istream*
    - enum qp_encoder_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 127
    functionName: i_stream_create_qp_encoder
    functionSourceFile: /src/dovecot/src/lib-mail/istream-qp-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_get_fd
    - buffer_create_dynamic
    - i_new
    - i_stream_create
    - qp_encoder_init
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *i_stream_create_qp_encoder(struct istream *input,\n\t\t\t\t\t
      \  enum qp_encoder_flag flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - part
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 12
    functionName: message_part_root
    functionSourceFile: /src/dovecot/src/lib-mail/message-part.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct message_part
    signature: 'struct message_part *

      message_part_root(const struct message_part *part)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: message_part_find
      Src: /src/dovecot/src/lib-mail/message-part.c:24,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - siblings
    - part
    - n
    argTypes:
    - struct message_part*
    - struct message_part*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 28
    functionName: message_part_find
    functionSourceFile: /src/dovecot/src/lib-mail/message-part.c
    functionUses: 1
    functionsReached:
    - message_part_find
    linkageType: ''
    returnType: bool
    signature: "bool message_part_find(const struct message_part *siblings,\n\t\t\t
      \     const struct message_part *part,\n\t\t\t      unsigned int *n)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_part_root
      Src: /src/dovecot/src/lib-mail/message-part.c:35,1
    - Dst: message_part_find
      Src: /src/dovecot/src/lib-mail/message-part.c:36,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/message-part.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - part
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 39
    functionName: message_part_to_idx
    functionSourceFile: /src/dovecot/src/lib-mail/message-part.c
    functionUses: 0
    functionsReached:
    - message_part_root
    - message_part_find
    - i_unreached
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int message_part_to_idx(const struct message_part *part)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_sub_part_by_idx
      Src: /src/dovecot/src/lib-mail/message-part.c:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - parts
    - idx
    argTypes:
    - struct message_part*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 53
    functionName: message_sub_part_by_idx
    functionSourceFile: /src/dovecot/src/lib-mail/message-part.c
    functionUses: 1
    functionsReached:
    - message_sub_part_by_idx
    linkageType: ''
    returnType: struct message_part
    signature: "struct message_part *\nmessage_sub_part_by_idx(struct message_part
      *parts,\n\t\t\tunsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-part.c:58,1
    - Dst: message_sub_part_by_idx
      Src: /src/dovecot/src/lib-mail/message-part.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parts
    - idx
    argTypes:
    - struct message_part*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: message_part_by_idx
    functionSourceFile: /src/dovecot/src/lib-mail/message-part.c
    functionUses: 0
    functionsReached:
    - message_sub_part_by_idx
    - i_assert
    linkageType: ''
    returnType: struct message_part
    signature: 'struct message_part *

      message_part_by_idx(struct message_part *parts, unsigned int idx)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: message_part_is_equal
      Src: /src/dovecot/src/lib-mail/message-part.c:81,1
    - Dst: equals_ex
      Src: /src/dovecot/src/lib-mail/message-part.c:97,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 18
    argCount: 3
    argNames:
    - p1
    - p2
    - equals_ex
    argTypes:
    - struct message_part*
    - struct message_part*
    - message_part_comparator_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 107
    functionName: message_part_is_equal_ex
    functionSourceFile: /src/dovecot/src/lib-mail/message-part.c
    functionUses: 0
    functionsReached:
    - equals_ex
    - message_part_is_equal
    linkageType: ''
    returnType: bool
    signature: "bool message_part_is_equal_ex(const struct message_part *p1,\n\t\t\t
      \     const struct message_part *p2,\n\t\t\t      message_part_comparator_t
      *equals_ex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_part_has_nuls
      Src: /src/dovecot/src/lib-mail/message-part.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - parts
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: message_parts_have_nuls
    functionSourceFile: /src/dovecot/src/lib-mail/message-part.c
    functionUses: 0
    functionsReached:
    - message_part_has_nuls
    linkageType: ''
    returnType: bool
    signature: bool message_parts_have_nuls(const struct message_part *parts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-mail/message-part.c:128,1
    - Dst: message_parts_have_nuls
      Src: /src/dovecot/src/lib-mail/message-part.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - part
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 132
    functionName: message_part_has_nuls
    functionSourceFile: /src/dovecot/src/lib-mail/message-part.c
    functionUses: 1
    functionsReached:
    - HAS_ALL_BITS
    - message_parts_have_nuls
    linkageType: ''
    returnType: bool
    signature: bool message_part_has_nuls(const struct message_part *part)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: QP_IS_TRAILING_WHITESPACE
    functionSourceFile: /src/dovecot/src/lib-mail/qp-decoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QP_IS_TRAILING_WHITESPACE(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:37,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - dest
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 41
    functionName: qp_decoder_init
    functionSourceFile: /src/dovecot/src/lib-mail/qp-decoder.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - i_new
    linkageType: ''
    returnType: struct qp_decoder
    signature: struct qp_decoder *qp_decoder_init(buffer_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:47,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _qp
    argTypes:
    - struct qp_decoder**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: qp_decoder_deinit
    functionSourceFile: /src/dovecot/src/lib-mail/qp-decoder.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void qp_decoder_deinit(struct qp_decoder **_qp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:71,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:77,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:79,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:87,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - qp
    - src
    - src_size
    argTypes:
    - struct qp_decoder*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 89
    functionName: qp_decoder_more_text
    functionSourceFile: /src/dovecot/src/lib-mail/qp-decoder.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_append_c
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: "size_t qp_decoder_more_text(struct qp_decoder *qp, const unsigned
      char *src,\n\t\t     size_t src_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:95,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:99,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:100,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:104,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:105,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:106,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:110,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:111,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:112,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:116,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:117,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:118,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:119,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:124,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:127,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 2
    argNames:
    - qp
    - error_r
    argTypes:
    - struct qp_decoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 128
    functionName: qp_decoder_invalid
    functionSourceFile: /src/dovecot/src/lib-mail/qp-decoder.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - buffer_append_buf
    - buffer_set_used_size
    - buffer_append_c
    - i_assert
    linkageType: ''
    returnType: void
    signature: void qp_decoder_invalid(struct qp_decoder *qp, const char **error_r)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: qp_decoder_more_text
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:143,1
    - Dst: QP_IS_TRAILING_WHITESPACE
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:148,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:151,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:156,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:157,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:161,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:172,1
    - Dst: QP_IS_TRAILING_WHITESPACE
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:184,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:185,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:186,1
    - Dst: qp_decoder_invalid
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:194,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:211,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:212,1
    - Dst: qp_decoder_invalid
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:216,1
    - Dst: QP_IS_TRAILING_WHITESPACE
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:225,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:227,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:235,1
    - Dst: qp_decoder_invalid
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:240,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:251,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:253,1
    - Dst: qp_decoder_invalid
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:267,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 113
    argCount: 5
    argNames:
    - qp
    - src
    - src_size
    - invalid_src_pos_r
    - error_r
    argTypes:
    - struct qp_decoder*
    - unsigned char*
    - size_t
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 269
    functionName: qp_decoder_more
    functionSourceFile: /src/dovecot/src/lib-mail/qp-decoder.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_unreached
    - buffer_append_buf
    - hex_to_binary
    - buffer_set_used_size
    - qp_decoder_invalid
    - QP_IS_TRAILING_WHITESPACE
    - qp_decoder_more_text
    - buffer_append_c
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int qp_decoder_more(struct qp_decoder *qp, const unsigned char *src,\n\t\t
      \   size_t src_size, size_t *invalid_src_pos_r,\n\t\t    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qp_decoder_invalid
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:279,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/qp-decoder.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - qp
    - error_r
    argTypes:
    - struct qp_decoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 285
    functionName: qp_decoder_finish
    functionSourceFile: /src/dovecot/src/lib-mail/qp-decoder.c
    functionUses: 0
    functionsReached:
    - qp_decoder_invalid
    - buffer_set_used_size
    linkageType: ''
    returnType: int
    signature: int qp_decoder_finish(struct qp_decoder *qp, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-part.c:77,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-part.c:78,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-message-part.c:79,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-part.c:81,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-part.c:82,1
    - Dst: message_part_to_idx
      Src: /src/dovecot/src/lib-mail/test-message-part.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:84,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:87,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-part.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:89,1
    - Dst: message_part_by_idx
      Src: /src/dovecot/src/lib-mail/test-message-part.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:93,1
    - Dst: message_part_by_idx
      Src: /src/dovecot/src/lib-mail/test-message-part.c:93,1
    - Dst: message_part_by_idx
      Src: /src/dovecot/src/lib-mail/test-message-part.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:99,1
    - Dst: message_part_to_idx
      Src: /src/dovecot/src/lib-mail/test-message-part.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part.c:103,1
    - Dst: message_part_by_idx
      Src: /src/dovecot/src/lib-mail/test-message-part.c:103,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-part.c:105,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-part.c:106,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-part.c:107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 108
    functionName: test_message_part_idx
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_part_by_idx
    - message_part_to_idx
    - message_parser_parse_next_block
    - pool_unref
    - test_end
    - test_assert
    - message_parser_init
    - i_stream_create_from_data
    - message_parser_deinit
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_part_idx(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-part.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 7
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-id.c:24,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-id.c:25,1
    - Dst: message_id_get_next
      Src: /src/dovecot/src/lib-mail/test-message-id.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-id.c:30,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-id.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-id.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-id.c:35,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-id.c:35,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-id.c:36,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 7
    functionDepth: 3
    functionLinenumber: 7
    functionLinenumberEnd: 37
    functionName: test_message_id_get_next
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-id.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - message_id_get_next
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_id_get_next(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-id.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 7
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-id.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:26,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:27,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:32,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - base_input
    - msg_size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 35
    functionName: istream_attachment_connector_begin
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-connector.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_stream_ref
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct istream_attachment_connector
    signature: 'struct istream_attachment_connector *

      istream_attachment_connector_begin(struct istream *base_input, uoff_t msg_size)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:48,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:51,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:57,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:60,1
    - Dst: i_stream_create_min_sized_range
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:68,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:70,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:70,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:71,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:72,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:80,1
    - Dst: i_stream_create_base64_encoder
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:82,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:85,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:85,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:86,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:90,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:91,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 7
    argNames:
    - conn
    - decoded_input
    - start_offset
    - encoded_size
    - base64_blocks_per_line
    - base64_have_crlf
    - error_r
    argTypes:
    - struct istream_attachment_connector*
    - struct istream*
    - uoff_t
    - uoff_t
    - unsigned int
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 94
    functionName: istream_attachment_connector_add
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-connector.c
    functionUses: 0
    functionsReached:
    - i_stream_create_min_sized_range
    - array_push_back
    - i_stream_set_name
    - i_stream_ref
    - t_strdup_printf
    - i_stream_create_base64_encoder
    - i_stream_create_sized
    - i_stream_unref
    - i_stream_get_name
    linkageType: ''
    returnType: int
    signature: "int istream_attachment_connector_add(struct istream_attachment_connector
      *conn,\n\t\t\t\t     struct istream *decoded_input,\n\t\t\t\t     uoff_t start_offset,
      uoff_t encoded_size,\n\t\t\t\t     unsigned int base64_blocks_per_line,\n\t\t\t\t
      \    bool base64_have_crlf,\n\t\t\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:101,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:102,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:103,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct istream_attachment_connector*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: istream_attachment_connector_free
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-connector.c
    functionUses: 0
    functionsReached:
    - i_stream_unref
    - pool_unref
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void istream_attachment_connector_free(struct istream_attachment_connector
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:117,1
    - Dst: i_stream_create_sized_range
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:121,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:124,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:124,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:125,1
    - Dst: i_stream_create_range
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:127,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:131,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:133,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:135,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:136,1
    - Dst: istream_attachment_connector_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct istream_attachment_connector**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 140
    functionName: istream_attachment_connector_finish
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-connector.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - istream_attachment_connector_free
    - array_push_back
    - i_stream_create_concat
    - i_stream_set_name
    - t_strdup_printf
    - i_stream_create_range
    - array_append_zero
    - i_stream_get_name
    - i_stream_create_sized_range
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      istream_attachment_connector_finish(struct istream_attachment_connector **_conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: istream_attachment_connector_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-connector.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct istream_attachment_connector**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 149
    functionName: istream_attachment_connector_abort
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-connector.c
    functionUses: 0
    functionsReached:
    - istream_attachment_connector_free
    linkageType: ''
    returnType: void
    signature: void istream_attachment_connector_abort(struct istream_attachment_connector
      **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.h:18,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/mail-html2text.h:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - content_type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 20
    functionName: mail_html2text_content_type_match
    functionSourceFile: /src/dovecot/src/lib-mail/mail-html2text.h
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool mail_html2text_content_type_match(const char *content_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:22,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:28,1
    - Dst: struct run_ctx*::callback
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:33,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - input
    - hdr
    - matched
    - ctx
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - struct run_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 35
    functionName: run_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_assert
    - struct run_ctx*::callback
    linkageType: ''
    returnType: void
    signature: "void run_callback(struct header_filter_istream *input,\n\t\t\t struct
      message_header_line *hdr,\n\t\t\t bool *matched, struct run_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - run_ctx
    - callback
    argTypes:
    - struct run_ctx*
    - header_filter_callback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 46
    functionName: test_istream_run_prep
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void test_istream_run_prep(struct run_ctx *run_ctx,\n\t\t      header_filter_callback
      *callback)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:65,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:68,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:68,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:71,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:71,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:76,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:77,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:77,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 6
    argNames:
    - run_ctx
    - filter
    - output
    - flags
    - first
    - size_r
    argTypes:
    - struct run_ctx*
    - struct istream*
    - char*
    - enum header_filter_flags
    - bool
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 78
    functionName: test_istream_run_check
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_stream_get_data
    - i_stream_stat
    - i_stream_skip
    - test_assert
    - memcmp
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: "void test_istream_run_check(struct run_ctx *run_ctx,\n\t\t       struct
      istream *filter,\n\t\t       const char *output,\n\t\t       enum header_filter_flags
      flags,\n\t\t       bool first,\n\t\t       size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_run_prep
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:91,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:93,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:98,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:98,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:101,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:102,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:102,1
    - Dst: test_istream_run_check
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:104,1
    - Dst: test_istream_run_prep
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:108,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:110,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:111,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:112,1
    - Dst: test_istream_run_check
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:114,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 5
    argNames:
    - test_istream
    - input_len
    - output
    - flags
    - callback
    argTypes:
    - struct istream*
    - unsigned int
    - char*
    - enum header_filter_flags
    - header_filter_callback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 118
    functionName: test_istream_run
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - test_istream_set_size
    - test_istream_run_check
    - i_stream_create_header_filter
    - test_istream_run_prep
    - i_stream_skip
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: "void test_istream_run(struct istream *test_istream,\n\t\t unsigned
      int input_len, const char *output,\n\t\t enum header_filter_flags flags,\n\t\t
      header_filter_callback *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - hdr
    - matched
    - ATTR_UNUSED
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 130
    functionName: filter_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void filter_callback(struct header_filter_istream *input ATTR_UNUSED,\n\t\tstruct
      message_header_line *hdr,\n\t\tbool *matched, void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:139,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:140,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:145,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:146,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:147,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:151,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:153,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:157,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:160,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:165,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:165,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:167,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:168,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:169,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:169,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:172,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:174,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:174,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:177,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:178,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:179,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:180,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:181,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:181,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:182,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:182,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:185,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:186,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:188,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 132
    functionDepth: 3
    functionLinenumber: 132
    functionLinenumberEnd: 189
    functionName: test_istream_filter
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_stream_get_data
    - i_stream_stat
    - i_stream_create_header_filter
    - i_stream_skip
    - test_end
    - i_stream_read
    - test_istream_create
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - memcmp
    - test_istream_set_size
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_filter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:196,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - dest
    - count
    argTypes:
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 197
    functionName: add_random_text
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_rand_minmax
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void add_random_text(string_t *dest, unsigned int count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - hdr
    - matched
    - null_hdr_seen
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 208
    functionName: filter2_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void filter2_callback(struct header_filter_istream *input ATTR_UNUSED,\n\t\t
      struct message_header_line *hdr,\n\t\t bool *matched, bool *null_hdr_seen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:221,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:223,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:224,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:225,1
    - Dst: add_random_text
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:226,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:227,1
    - Dst: add_random_text
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:228,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:229,1
    - Dst: add_random_text
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:230,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:231,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:233,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:233,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:233,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:234,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:236,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:245,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:246,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:253,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:254,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:255,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:258,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:259,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:260,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:263,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:264,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:268,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:270,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:270,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:271,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:273,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:278,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:281,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:282,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:284,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:284,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:285,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:286,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:287,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:287,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:287,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:287,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:289,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:291,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:291,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:293,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:293,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:298,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:299,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:300,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:304,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:305,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:306,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:307,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:309,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 210
    functionDepth: 3
    functionLinenumber: 210
    functionLinenumberEnd: 310
    functionName: test_istream_filter_large_buffer
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - str_c
    - strchr
    - str_len
    - i_stream_get_data
    - i_stream_seek
    - test_assert
    - memcpy
    - I_MIN
    - i_stream_stat
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - test_end
    - add_random_text
    - str_new
    - str_free
    - str_data
    - i_stream_create_header_filter
    - strncmp
    - i_assert
    - str_append_data
    - i_stream_read
    - strcmp
    - test_istream_create_data
    - str_truncate
    - memcmp
    - i_stream_unref
    - str_append
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_filter_large_buffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:323,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:325,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:326,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:327,1
    - Dst: add_random_text
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:328,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:329,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:331,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:331,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:331,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:332,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:334,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:336,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:340,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:341,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:342,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:344,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:345,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:347,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:347,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:347,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:347,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:348,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:348,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:353,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:354,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:355,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:358,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:359,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:360,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:361,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:363,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 364
    functionName: test_istream_filter_large_buffer2
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - i_stream_seek
    - test_assert
    - i_stream_stat
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - test_end
    - add_random_text
    - str_new
    - i_stream_read_more
    - str_free
    - str_data
    - i_stream_create_header_filter
    - str_append_data
    - N_ELEMENTS
    - strcmp
    - test_istream_create_data
    - str_truncate
    - i_stream_unref
    - str_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_filter_large_buffer2(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_header_line_write
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:372,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - hdr
    - ATTR_UNUSED
    - dest
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 373
    functionName: filter3_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - message_header_line_write
    linkageType: ''
    returnType: void
    signature: "void filter3_callback(struct header_filter_istream *input ATTR_UNUSED,\n\t\t
      struct message_header_line *hdr,\n\t\t bool *matched ATTR_UNUSED, string_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:382,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:384,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:385,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:386,1
    - Dst: add_random_text
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:387,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:388,1
    - Dst: add_random_text
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:389,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:390,1
    - Dst: add_random_text
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:391,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:392,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:394,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:394,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:394,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:395,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:397,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:406,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:407,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:407,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:410,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:410,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:411,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:412,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:412,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:412,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:412,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:413,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:414,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:415,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:416,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:418,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 375
    functionDepth: 3
    functionLinenumber: 375
    functionLinenumberEnd: 419
    functionName: test_istream_callbacks
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_stream_get_data_size
    - str_len
    - test_assert
    - i_stream_stat
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - test_end
    - add_random_text
    - str_new
    - str_free
    - str_data
    - i_stream_create_header_filter
    - i_stream_read
    - strcmp
    - test_istream_create_data
    - i_stream_unref
    - str_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_callbacks(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_header_filter_add
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:431,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:431,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:433,1
    - Dst: i_stream_header_filter_add
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:437,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:437,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - input
    - hdr
    - matched
    - ATTR_UNUSED
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 439
    functionName: edit_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_stream_header_filter_add
    - strlen
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: "void edit_callback(struct header_filter_istream *input,\n\t      struct
      message_header_line *hdr,\n\t      bool *matched, void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:447,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:448,1
    - Dst: test_istream_run
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:449,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:449,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:453,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 441
    functionDepth: 4
    functionLinenumber: 441
    functionLinenumberEnd: 456
    functionName: test_istream_edit
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - test_istream_run
    - strlen
    - test_end
    - test_istream_create
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_edit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:465,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:466,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:468,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:471,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:472,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:473,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:482,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:483,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:483,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:485,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:486,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:486,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:487,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:487,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:488,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:488,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:490,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:491,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:491,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:492,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:492,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:495,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:496,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:498,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:499,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:499,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:501,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:503,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:504,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:506,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:507,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:507,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:508,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:508,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:509,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:509,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:511,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:512,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:513,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:513,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:513,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:515,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:516,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:518,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 458
    functionDepth: 3
    functionLinenumber: 458
    functionLinenumberEnd: 519
    functionName: test_istream_end_body_with_lf
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - strlen
    - i_stream_get_data
    - str_append_data
    - i_stream_stat
    - i_stream_create_header_filter
    - i_stream_skip
    - test_end
    - i_stream_read
    - test_istream_create
    - i_stream_seek
    - test_assert
    - memcmp
    - test_istream_set_size
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_end_body_with_lf(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:540,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:541,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:542,1
    - Dst: test_istream_run
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:543,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:544,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:550,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 521
    functionDepth: 4
    functionLinenumber: 521
    functionLinenumberEnd: 553
    functionName: test_istream_add_missing_eoh
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_end
    - test_istream_create
    - test_istream_run
    - N_ELEMENTS
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_add_missing_eoh(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:571,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:572,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:573,1
    - Dst: test_istream_run
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:574,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:574,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:579,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 555
    functionDepth: 4
    functionLinenumber: 555
    functionLinenumberEnd: 582
    functionName: test_istream_add_missing_eoh_and_edit
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_end
    - test_istream_create
    - test_istream_run
    - N_ELEMENTS
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_add_missing_eoh_and_edit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:602,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:603,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:604,1
    - Dst: test_istream_run
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:605,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:606,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:612,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:614,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 584
    functionDepth: 4
    functionLinenumber: 584
    functionLinenumberEnd: 615
    functionName: test_istream_hide_body
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_end
    - test_istream_create
    - test_istream_run
    - N_ELEMENTS
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_hide_body(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - hdr
    - matched
    - ATTR_UNUSED
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 624
    functionName: strip_eoh_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void strip_eoh_callback(struct header_filter_istream *input ATTR_UNUSED,\n\t\t
      \  struct message_header_line *hdr,\n\t\t   bool *matched, void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:632,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:633,1
    - Dst: test_istream_run
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:634,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:634,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:637,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 626
    functionDepth: 4
    functionLinenumber: 626
    functionLinenumberEnd: 640
    functionName: test_istream_strip_eoh
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - test_istream_run
    - strlen
    - test_end
    - test_istream_create
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_strip_eoh(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_header_filter_add
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:649,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - hdr
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 651
    functionName: missing_eoh_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_stream_header_filter_add
    - strlen
    linkageType: ''
    returnType: void
    signature: "void missing_eoh_callback(struct header_filter_istream *input ATTR_UNUSED,\n\t\t
      \    struct message_header_line *hdr,\n\t\t     bool *matched ATTR_UNUSED, void
      *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:659,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:660,1
    - Dst: test_istream_run
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:661,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:661,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:664,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 653
    functionDepth: 4
    functionLinenumber: 653
    functionLinenumberEnd: 666
    functionName: test_istream_missing_eoh_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - test_istream_run
    - strlen
    - test_end
    - test_istream_create
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_missing_eoh_callback(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:674,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:675,1
    - Dst: test_istream_run
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:676,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:676,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:679,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 668
    functionDepth: 4
    functionLinenumber: 668
    functionLinenumberEnd: 681
    functionName: test_istream_empty_missing_eoh_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 0
    functionsReached:
    - test_istream_run
    - strlen
    - test_end
    - test_istream_create
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_empty_missing_eoh_callback(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-istream-header-filter.c:700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 683
    functionDepth: 7
    functionLinenumber: 683
    functionLinenumberEnd: 701
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:80,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:84,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:87,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:88,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:89,1
    - Dst: i_stream_create_qp_encoder
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:90,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:93,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:94,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:95,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:100,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:103,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:104,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:105,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:111,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:112,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:112,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:120,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:124,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:127,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:129,1
    - Dst: i_stream_create_qp_encoder
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:130,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:133,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:133,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:135,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:136,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 4
    argNames:
    - qp_input
    - output
    - stream_errno
    - buffer_size
    argTypes:
    - char*
    - char*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 76
    functionDepth: 3
    functionLinenumber: 76
    functionLinenumberEnd: 137
    functionName: encode_test
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - strlen
    - test_istream_set_allow_eof
    - str_append_data
    - test_assert_strcmp
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - i_stream_close
    - test_istream_create_data
    - i_stream_seek
    - i_stream_create_qp_encoder
    - test_assert
    - test_istream_set_size
    - i_stream_read_more
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void encode_test(const char *qp_input, const char *output, int stream_errno,\n\t
      \   unsigned int buffer_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:143,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:144,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:144,1
    - Dst: encode_test
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:146,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 150
    functionName: test_istream_qp_encoder
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - test_end
    - encode_test
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_qp_encoder(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 7
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:25,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:26,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:27,1
    - Dst: o_stream_create_dot
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:29,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:31,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:32,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:34,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:42,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:43,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:44,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:44,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:45,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:46,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:48,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:48,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:48,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:49,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:49,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:49,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:50,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - test
    argTypes:
    - struct dot_test*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 16
    functionDepth: 3
    functionLinenumber: 16
    functionLinenumberEnd: 53
    functionName: test_ostream_dot_one
    functionSourceFile: /src/dovecot/src/lib-mail/test-ostream-dot.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - strlen
    - i_stream_get_data
    - t_buffer_create
    - o_stream_create_dot
    - o_stream_finish
    - i_stream_skip
    - o_stream_unref
    - o_stream_send
    - test_istream_create
    - test_assert
    - test_assert_ucmp
    - i_stream_read
    - test_assert_memcmp
    - o_stream_create_buffer
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_ostream_dot_one(const struct dot_test *test)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:72,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:73,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:73,1
    - Dst: test_ostream_dot_one
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:74,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 77
    functionName: test_ostream_dot
    functionSourceFile: /src/dovecot/src/lib-mail/test-ostream-dot.c
    functionUses: 0
    functionsReached:
    - test_ostream_dot_one
    - t_strdup_printf
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_dot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:85,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:86,1
    - Dst: test_ostream_create_nonblocking
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:87,1
    - Dst: test_ostream_set_max_output_size
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:88,1
    - Dst: o_stream_create_dot
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:90,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:92,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:94,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:95,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:97,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 99
    functionName: test_ostream_dot_parent_almost_full
    functionSourceFile: /src/dovecot/src/lib-mail/test-ostream-dot.c
    functionUses: 0
    functionsReached:
    - test_ostream_set_max_output_size
    - o_stream_unref
    - t_buffer_create
    - o_stream_create_dot
    - test_ostream_create_nonblocking
    - test_end
    - o_stream_send
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_dot_parent_almost_full(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-ostream-dot.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 101
    functionDepth: 7
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-ostream-dot.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - input
    - ','
    - flags
    - ','
    - headers
    - ','
    - headers_count
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: i_stream_create_header_filter
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "i_stream_create_header_filter(input, flags, headers, headers_count,
      \\\n\t\t\t\t        callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: IS_ATEXT
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ATEXT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: IS_ATEXT_NON_TSPECIAL
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ATEXT_NON_TSPECIAL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.h:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct rfc822_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 34
    functionName: rfc822_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.h
    functionUses: 12
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void rfc822_parser_deinit(struct rfc822_parser_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - digit
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: decode_hex_digit
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int decode_hex_digit(char digit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: decode_hex_digit
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:63,1
    - Dst: decode_hex_digit
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - digits
    - result_r
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: decode_hex_byte
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - decode_hex_digit
    linkageType: ''
    returnType: bool
    signature: bool decode_hex_byte(const char *digits, char *result_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:77,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:80,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:82,1
    - Dst: decode_hex_byte
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:84,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:87,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 92
    functionName: rfc2231_decode_value
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - decode_hex_byte
    - str_append
    - str_append_data
    linkageType: ''
    returnType: string_t
    signature: string_t *rfc2231_decode_value(const char *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct rfc2231_parameter*
    - struct rfc2231_parameter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 111
    functionName: rfc2231_parameter_cmp
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int rfc2231_parameter_cmp(const struct rfc2231_parameter *r1,\n\t\t\t\t
      const struct rfc2231_parameter *r2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:118,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - result
    - key
    argTypes:
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 124
    functionName: result_contains
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool result_contains(const ARRAY_TYPE(const_string) *result,\n\t\t\t
      \   const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - param
    - with_extended
    argTypes:
    - struct rfc2231_parameter*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: reconstruct_rfc2231_key
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *reconstruct_rfc2231_key(const struct rfc2231_parameter *param,\n\t\t\t\t\t
      \  const bool with_extended)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:151,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:154,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - value
    - end_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 165
    functionName: find_charset
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strdup_until
    linkageType: ''
    returnType: char
    signature: char *find_charset(const char *value, const char **end_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:170,1
    - Dst: charset_to_utf8_str
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:172,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - charset
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: value_to_utf8
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - charset_to_utf8_str
    linkageType: ''
    returnType: char
    signature: "char *value_to_utf8(const char *charset,\n\t\t\t\t const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_charset
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:182,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:184,1
    - Dst: rfc2231_decode_value
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:185,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:186,1
    - Dst: value_to_utf8
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - value
    - charset_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 178
    functionDepth: 3
    functionLinenumber: 178
    functionLinenumberEnd: 194
    functionName: rfc2231_decode_charset_value
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - rfc2231_decode_value
    - value_to_utf8
    - find_charset
    linkageType: ''
    returnType: char
    signature: "char *rfc2231_decode_charset_value(const char *value,\n\t\t\t\t\t\tconst
      char **charset_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:199,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:217,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:218,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:219,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:220,1
    - Dst: rfc822_parse_content_param
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:221,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:230,1
    - Dst: str_parse_uint
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:233,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:243,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:244,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:244,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:249,1
    - Dst: rfc2231_decode_charset_value
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:254,1
    - Dst: result_append
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:257,1
    - Dst: result_append
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:264,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:264,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:264,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:268,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:270,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:271,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:276,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:278,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:286,1
    - Dst: rfc2231_decode_charset_value
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:312,1
    - Dst: result_append
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:315,1
    - Dst: reconstruct_rfc2231_key
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:317,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:326,1
    - Dst: rfc2231_decode_charset_value
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:343,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:344,1
    - Dst: result_append
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:347,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:347,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:347,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:349,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-mail/rfc2231-parser.c:350,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 85
    argCount: 2
    argNames:
    - ctx
    - result_r
    argTypes:
    - struct rfc822_parser_context*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 196
    functionDepth: 4
    functionLinenumber: 196
    functionLinenumberEnd: 352
    functionName: rfc2231_parse
    functionSourceFile: /src/dovecot/src/lib-mail/rfc2231-parser.c
    functionUses: 1
    functionsReached:
    - strchr
    - str_c
    - rfc822_parse_content_param
    - array_count
    - array_front
    - array_append_zero
    - t_strdup
    - t_str_new
    - str_parse_uint
    - reconstruct_rfc2231_key
    - i_zero
    - array_get
    - result_append
    - strcasecmp
    - rfc2231_decode_charset_value
    - array_push_back
    - str_append
    - t_array_init
    - t_strdup_until
    - ARRAY_TYPE
    - str_truncate
    - array_sort
    linkageType: ''
    returnType: int
    signature: "int rfc2231_parse(struct rfc822_parser_context *ctx,\n\t\t  const
      char *const **result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-address.c:15,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-address.c:16,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-address.c:17,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-address.c:18,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 2
    argNames:
    - a1
    - a2
    argTypes:
    - struct message_address*
    - struct message_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: cmp_addr
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    linkageType: ''
    returnType: bool
    signature: "bool cmp_addr(const struct message_address *a1,\n\t\t     const struct
      message_address *a2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-address.c:30,1
    - Dst: i_memdup
      Src: /src/dovecot/src/lib-mail/test-message-address.c:31,1
    - Dst: message_address_parse_full
      Src: /src/dovecot/src/lib-mail/test-message-address.c:32,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-address.c:32,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/test-message-address.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - input
    - fill_missing
    - list_r
    argTypes:
    - char*
    - bool
    - struct message_address_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 22
    functionDepth: 11
    functionLinenumber: 22
    functionLinenumberEnd: 36
    functionName: test_parse_address_full
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - strlen
    - message_address_parse_full
    - pool_datastack_create
    - i_memdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_parse_address_full(const char *input, bool fill_missing,\n\t\t\tstruct
      message_address_list *list_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_parse_address_full
      Src: /src/dovecot/src/lib-mail/test-message-address.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - input
    - fill_missing
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 12
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: test_parse_address
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - test_parse_address_full
    linkageType: ''
    returnType: struct message_address
    signature: 'struct message_address *

      test_parse_address(const char *input, bool fill_missing)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:232,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-address.c:233,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-address.c:234,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-address.c:236,1
    - Dst: test_parse_address
      Src: /src/dovecot/src/lib-mail/test-message-address.c:243,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:244,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:245,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-address.c:248,1
    - Dst: message_address_write
      Src: /src/dovecot/src/lib-mail/test-message-address.c:249,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:256,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-address.c:256,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-address.c:256,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-address.c:263,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-address.c:264,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-address.c:267,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-address.c:269,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-address.c:270,1
    - Dst: test_parse_address
      Src: /src/dovecot/src/lib-mail/test-message-address.c:273,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-address.c:273,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:275,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:276,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:280,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-address.c:285,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-mail/test-message-address.c:286,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-address.c:289,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-address.c:291,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-address.c:292,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-address.c:294,1
    - Dst: test_parse_address
      Src: /src/dovecot/src/lib-mail/test-message-address.c:296,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-address.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:297,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:297,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:300,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:301,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:305,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:306,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:309,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:311,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-address.c:312,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-address.c:313,1
    - Dst: test_parse_address
      Src: /src/dovecot/src/lib-mail/test-message-address.c:314,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-address.c:314,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-address.c:315,1
    - Dst: message_address_write
      Src: /src/dovecot/src/lib-mail/test-message-address.c:316,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:317,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:317,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:319,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:320,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:321,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-address.c:321,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-address.c:321,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:322,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:324,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:325,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/lib-mail/test-message-address.c:325,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-address.c:327,1
    - Dst: message_address_write
      Src: /src/dovecot/src/lib-mail/test-message-address.c:328,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:329,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-message-address.c:329,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:330,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 46
    functionDepth: 13
    functionLinenumber: 46
    functionLinenumberEnd: 331
    functionName: test_message_address
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - strcmp
    - cmp_addr
    - t_str_new
    - str_c
    - str_printfa
    - str_append_c
    - test_assert_idx
    - test_parse_address
    - message_address_write
    - str_len
    - message_address_parse
    - test_end
    - str_truncate
    - test_assert
    - str_append
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_address(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:335,1
    - Dst: test_parse_address_full
      Src: /src/dovecot/src/lib-mail/test-message-address.c:347,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-address.c:349,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:350,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:350,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:354,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:355,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 333
    functionDepth: 12
    functionLinenumber: 333
    functionLinenumberEnd: 358
    functionName: test_message_address_list
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - test_assert
    - test_parse_address_full
    - N_ELEMENTS
    - cmp_addr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_address_list(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:371,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/lib-mail/test-message-address.c:372,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-address.c:372,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:374,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:374,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 360
    functionDepth: 3
    functionLinenumber: 360
    functionLinenumberEnd: 376
    functionName: test_message_address_nuls
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - message_address_parse
    - test_end
    - pool_datastack_create
    - test_assert
    - cmp_addr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_address_nuls(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:389,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/lib-mail/test-message-address.c:390,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-address.c:390,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-address.c:392,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:392,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:393,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 394
    functionName: test_message_address_nuls_display_name
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - message_address_parse
    - test_end
    - pool_datastack_create
    - test_assert
    - cmp_addr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_address_nuls_display_name(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:411,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-address.c:412,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/lib-mail/test-message-address.c:416,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-address.c:416,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-address.c:417,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:419,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/lib-mail/test-message-address.c:422,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-address.c:422,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-address.c:423,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-mail/test-message-address.c:424,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:425,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:425,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:427,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 396
    functionDepth: 3
    functionLinenumber: 396
    functionLinenumberEnd: 428
    functionName: test_message_address_non_strict_dots
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - cmp_addr
    - test_assert_idx
    - strlen
    - message_address_parse
    - test_end
    - pool_datastack_create
    - t_strcut
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_address_non_strict_dots(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-address.c:439,1
    - Dst: i_memdup
      Src: /src/dovecot/src/lib-mail/test-message-address.c:441,1
    - Dst: message_address_parse_path
      Src: /src/dovecot/src/lib-mail/test-message-address.c:442,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-address.c:442,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/test-message-address.c:446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - input
    - addr_r
    argTypes:
    - char*
    - struct message_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 430
    functionDepth: 7
    functionLinenumber: 430
    functionLinenumberEnd: 449
    functionName: test_parse_path
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - strlen
    - pool_datastack_create
    - message_address_parse_path
    - i_memdup
    - i_free
    linkageType: ''
    returnType: int
    signature: int test_parse_path(const char *input, const struct message_address
      **addr_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:488,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-address.c:489,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-address.c:491,1
    - Dst: test_parse_path
      Src: /src/dovecot/src/lib-mail/test-message-address.c:497,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:499,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:501,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:502,1
    - Dst: cmp_addr
      Src: /src/dovecot/src/lib-mail/test-message-address.c:503,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-address.c:506,1
    - Dst: message_address_write
      Src: /src/dovecot/src/lib-mail/test-message-address.c:507,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:512,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-address.c:512,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-address.c:512,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:514,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 451
    functionDepth: 8
    functionLinenumber: 451
    functionLinenumberEnd: 515
    functionName: test_message_address_path
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - strcmp
    - cmp_addr
    - t_str_new
    - str_c
    - test_assert_idx
    - test_parse_path
    - message_address_write
    - test_end
    - str_truncate
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_address_path(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-address.c:543,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-address.c:545,1
    - Dst: test_parse_path
      Src: /src/dovecot/src/lib-mail/test-message-address.c:549,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-address.c:550,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-address.c:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 517
    functionDepth: 8
    functionLinenumber: 517
    functionLinenumberEnd: 553
    functionName: test_message_address_path_invalid
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_parse_path
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_address_path_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-address.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 555
    functionDepth: 7
    functionLinenumber: 555
    functionLinenumberEnd: 568
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-address.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:54,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:55,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:56,1
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:58,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - pool
    - input
    - set
    - parse_data
    - parts_r
    argTypes:
    - pool_t
    - struct istream*
    - struct message_parser_settings*
    - bool
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 63
    functionName: message_parse_stream
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - message_part_data_parse_from_header
    - message_parser_parse_next_block
    - test_assert
    - message_parser_deinit
    - message_parser_init
    linkageType: ''
    returnType: int
    signature: "int message_parse_stream(pool_t pool, struct istream *input,\n\t\t\t\tconst
      struct message_parser_settings *set,\n\t\t\t\tbool parse_data, struct message_part
      **parts_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:76,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:77,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:78,1
    - Dst: message_parser_init_from_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:80,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:82,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:84,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:87,1
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:88,1
    - Dst: message_part_is_equal
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - input
    - parts
    argTypes:
    - struct istream*
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 89
    functionName: test_parsed_parts
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - message_parser_deinit_from_parts
    - i_unreached
    - message_parser_init_from_parts
    - test_istream_set_allow_eof
    - message_parser_parse_next_block
    - message_part_is_equal
    - i_stream_get_size
    - i_stream_seek
    - test_assert
    - test_istream_set_size
    linkageType: ''
    returnType: void
    signature: void test_parsed_parts(struct istream *input, struct message_part *parts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:103,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:104,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:105,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:106,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:113,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:114,1
    - Dst: message_header_line_write
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:116,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:121,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:124,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:124,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:124,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:127,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:128,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:130,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:132,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:134,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:137,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:142,1
    - Dst: message_part_is_equal
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:142,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:145,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:146,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:148,1
    - Dst: message_parser_init_from_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:152,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:155,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:157,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:160,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:163,1
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:164,1
    - Dst: message_part_is_equal
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:164,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:166,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:167,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:168,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 169
    functionName: test_message_parser_small_blocks
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - message_parser_init_from_parts
    - pool_unref
    - i_stream_seek
    - test_assert
    - message_header_line_write
    - message_parser_init
    - t_str_new
    - message_parser_parse_next_block
    - test_istream_set_allow_eof
    - message_part_is_equal
    - test_end
    - test_istream_create
    - test_istream_set_size
    - message_parser_deinit_from_parts
    - message_parser_deinit
    - str_append_data
    - strcmp
    - pool_alloconly_create
    - i_stream_unref
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_small_blocks(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:178,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:179,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:180,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:182,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:184,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:185,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:187,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:187,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:191,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:192,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:192,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:196,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:196,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:198,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:201,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:202,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 204
    functionName: test_message_parser_stop_early
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_istream_set_allow_eof
    - i_stream_create_from_data
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - test_istream_set_size
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_stop_early(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:212,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:213,1
    - Dst: message_get_header_size
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:215,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:216,1
    - Dst: message_get_body_size
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:217,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - input
    - body_size_r
    - header_size_r
    - expect_has_nuls
    argTypes:
    - struct istream*
    - struct message_size*
    - struct message_size*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 219
    functionName: test_message_parser_get_sizes
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - message_get_header_size
    - message_get_body_size
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_message_parser_get_sizes(struct istream *input,\n\t\t\t\t\t
      \ struct message_size *body_size_r,\n\t\t\t\t\t  struct message_size *header_size_r,\n\t\t\t\t\t
      \ bool expect_has_nuls)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:225,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:227,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - part
    - body_size
    - header_size
    argTypes:
    - struct message_part*
    - struct message_size*
    - struct message_size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 231
    functionName: test_message_parser_assert_sizes
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_message_parser_assert_sizes(const struct message_part *part,\n\t\t\t\t\t
      \    const struct message_size *body_size,\n\t\t\t\t\t     const struct message_size
      *header_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:251,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:252,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:255,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:255,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:257,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:258,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:264,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:265,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:266,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:267,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:268,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:270,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:271,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:273,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:276,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:278,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:279,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:283,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:284,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:287,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:288,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:291,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:293,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:294,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:295,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 297
    functionName: test_message_parser_truncated_mime_headers
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_truncated_mime_headers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:316,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:317,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:318,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:320,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:320,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:322,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:323,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:326,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:327,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:328,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:329,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:330,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:331,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:332,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:333,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:335,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:336,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:337,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:338,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:339,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:340,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:341,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:342,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:345,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:346,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:347,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:349,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:350,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:351,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:352,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:353,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:354,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:356,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:357,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:358,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 360
    functionName: test_message_parser_truncated_mime_headers2
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_truncated_mime_headers2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:370,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:371,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:372,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:374,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:374,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:376,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:377,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:379,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:380,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:381,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:382,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:384,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:386,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:387,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:388,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 390
    functionName: test_message_parser_truncated_mime_headers3
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - pool_unref
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - test_parsed_parts
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_truncated_mime_headers3(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:402,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:403,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:404,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:406,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:409,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:410,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:411,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:412,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:413,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:415,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:417,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:419,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:420,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:421,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 423
    functionName: test_message_parser_empty_multipart
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - pool_unref
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - test_parsed_parts
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_empty_multipart(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:442,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:443,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:444,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:446,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:446,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:448,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:449,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:451,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:452,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:454,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:455,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:456,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:457,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:458,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:459,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:461,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:462,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:463,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:464,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:465,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:467,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:468,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:469,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:470,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:471,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:473,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:474,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:475,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:476,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:477,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:478,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:480,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:481,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:482,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 425
    functionDepth: 3
    functionLinenumber: 425
    functionLinenumberEnd: 484
    functionName: test_message_parser_duplicate_mime_boundary
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_duplicate_mime_boundary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:503,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:504,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:505,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:507,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:507,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:509,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:510,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:512,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:513,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:514,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:515,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:516,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:517,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:518,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:519,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:520,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:522,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:523,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:524,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:525,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:526,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:527,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:528,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:529,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:530,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:531,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:532,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:533,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:534,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:535,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:536,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:537,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:538,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:539,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:541,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:542,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:543,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 486
    functionDepth: 3
    functionLinenumber: 486
    functionLinenumberEnd: 545
    functionName: test_message_parser_garbage_suffix_mime_boundary
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_garbage_suffix_mime_boundary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:568,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:569,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:570,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:572,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:572,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:574,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:575,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:576,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:577,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:578,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:580,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:581,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:582,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 547
    functionDepth: 3
    functionLinenumber: 547
    functionLinenumberEnd: 584
    functionName: test_message_parser_trailing_dashes
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - pool_unref
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - test_parsed_parts
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_trailing_dashes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:602,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:603,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:604,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:606,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:606,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:608,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:610,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:611,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:612,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:613,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:614,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:615,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:616,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:617,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:618,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:619,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:620,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:621,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:622,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:623,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:624,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:625,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:626,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:627,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:628,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:629,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:630,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:631,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:632,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:633,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:634,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:635,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:637,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:638,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:639,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 586
    functionDepth: 3
    functionLinenumber: 586
    functionLinenumberEnd: 641
    functionName: test_message_parser_continuing_mime_boundary
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - test_parsed_parts
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_continuing_mime_boundary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:661,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:662,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:663,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:665,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:665,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:667,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:668,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:671,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:672,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:673,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:674,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:675,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:676,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:677,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:678,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:679,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:682,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:683,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:684,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:685,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:686,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:687,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:688,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:689,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:690,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:696,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:697,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:698,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:699,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:700,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:701,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:702,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:703,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:704,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:707,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:708,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:709,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:710,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:711,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:712,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:713,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:714,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:716,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:717,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:718,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 643
    functionDepth: 3
    functionLinenumber: 643
    functionLinenumberEnd: 720
    functionName: test_message_parser_continuing_truncated_mime_boundary
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_continuing_truncated_mime_boundary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:743,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:744,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:745,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:747,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:747,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:749,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:750,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:752,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:753,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:754,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:755,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:756,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:757,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:758,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:759,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:760,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:762,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:763,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:764,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:765,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:766,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:767,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:768,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:769,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:770,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:771,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:772,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:773,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:774,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:775,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:776,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:777,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:778,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:779,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:780,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:781,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:782,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:783,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:784,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:785,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:786,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:787,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:788,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:790,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:791,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:792,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 722
    functionDepth: 3
    functionLinenumber: 722
    functionLinenumberEnd: 794
    functionName: test_message_parser_continuing_mime_boundary_reverse
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_continuing_mime_boundary_reverse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:805,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:806,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:807,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:809,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:810,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:810,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:811,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:813,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:813,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:815,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:815,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:816,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:817,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:819,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:820,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:821,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:822,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 796
    functionDepth: 3
    functionLinenumber: 796
    functionLinenumberEnd: 823
    functionName: test_message_parser_no_eoh
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - test_parsed_parts
    - message_parser_parse_next_block
    - pool_unref
    - test_end
    - test_istream_create
    - test_assert
    - message_parser_init
    - message_parser_deinit
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_no_eoh(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:860,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:861,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:862,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:864,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:864,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:866,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:867,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:870,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:871,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:872,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:873,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:874,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:875,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:876,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:877,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:878,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:881,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:882,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:883,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:884,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:885,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:886,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:887,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:888,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:891,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:892,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:893,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:894,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:895,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:896,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:897,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:898,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:902,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:903,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:904,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:905,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:906,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:907,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:908,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:909,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:912,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:913,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:914,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:915,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 825
    functionDepth: 3
    functionLinenumber: 825
    functionLinenumberEnd: 916
    functionName: test_message_parser_long_mime_boundary
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_long_mime_boundary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:946,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:947,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:948,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:950,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:950,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:952,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:953,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:956,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:957,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:958,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:959,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:960,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:961,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:962,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:963,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:964,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:967,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:968,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:970,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:971,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:972,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:973,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:974,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:975,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:978,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:979,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:980,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:981,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:982,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:983,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:984,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:985,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:987,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:988,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:989,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 918
    functionDepth: 3
    functionLinenumber: 918
    functionLinenumberEnd: 991
    functionName: test_message_parser_mime_part_nested_limit
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_mime_part_nested_limit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1011,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1012,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1013,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1015,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1015,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1017,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1018,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1021,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1022,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1023,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1024,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1025,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1026,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1027,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1028,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1029,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1032,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1033,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1035,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1036,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1037,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1038,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1039,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1040,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1042,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1043,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1044,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 993
    functionDepth: 3
    functionLinenumber: 993
    functionLinenumberEnd: 1046
    functionName: test_message_parser_mime_part_nested_limit_rfc822
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_mime_part_nested_limit_rfc822(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1076,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1077,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1078,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1080,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1080,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1082,1
    - Dst: test_message_parser_get_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1083,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1086,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1087,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1088,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1089,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1090,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1091,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1092,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1093,1
    - Dst: test_message_parser_assert_sizes
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1094,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1097,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1098,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1099,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1126,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1128,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1129,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1130,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1048
    functionDepth: 3
    functionLinenumber: 1048
    functionLinenumberEnd: 1132
    functionName: test_message_parser_mime_part_limit
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_message_parser_assert_sizes
    - pool_unref
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - test_message_parser_get_sizes
    - test_parsed_parts
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_mime_part_limit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1170,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1171,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1172,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1174,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1176,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1180,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1181,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1182,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1185,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1186,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1190,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1191,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1196,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1200,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1204,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1205,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1206,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1208,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1210,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1211,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1212,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1134
    functionDepth: 3
    functionLinenumber: 1134
    functionLinenumberEnd: 1214
    functionName: test_message_parser_mime_part_limit_rfc822
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - test_parsed_parts
    - message_parser_parse_next_block
    - pool_unref
    - test_end
    - test_istream_create
    - test_assert
    - message_parser_init
    - message_parser_deinit
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_parser_mime_part_limit_rfc822(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1218,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1264,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1265,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1265,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1266,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1267,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1269,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1269,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1272,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1273,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1274,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1275,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1276,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1277,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1278,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1279,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1280,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1281,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1284,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1285,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1288,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1289,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1290,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1291,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1292,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1293,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1294,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1296,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1297,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1298,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1305,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1306,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1308,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1311,1
    - Dst: memset
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1312,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1314,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1315,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1317,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1318,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1318,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1320,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1321,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1216
    functionDepth: 3
    functionLinenumber: 1216
    functionLinenumberEnd: 1323
    functionName: test_message_parser_mime_version
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - message_parse_stream
    - test_assert_idx
    - strlen
    - pool_unref
    - test_assert
    - str_append_c
    - test_end
    - test_istream_create
    - str_new
    - buffer_append_space_unsafe
    - memset
    - test_parsed_parts
    - N_ELEMENTS
    - pool_alloconly_create
    - test_istream_create_data
    - i_stream_unref
    - str_append
    - test_assert_strcmp_idx
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_mime_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1327,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1345,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1346,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1348,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1353,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1354,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1355,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1356,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1357,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1358,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1359,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1360,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1361,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1362,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1363,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1365,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1366,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1367,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1325
    functionDepth: 3
    functionLinenumber: 1325
    functionLinenumberEnd: 1370
    functionName: test_message_parser_mime_version_missing
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - pool_unref
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - test_parsed_parts
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_mime_version_missing(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - part
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1372
    functionDepth: 0
    functionLinenumber: 1372
    functionLinenumberEnd: 1374
    functionName: test_assert_virtual_size
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_virtual_size(part)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - part
    - ','
    - flags_
    - ','
    - children
    - ','
    - h_lines
    - ','
    - h_size
    - ','
    - b_lines
    - ','
    - b_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1375
    functionDepth: 0
    functionLinenumber: 1375
    functionLinenumberEnd: 1386
    functionName: test_assert_part
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_assert_part(part, flags_, children, h_lines, h_size, b_lines,
      b_size )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1413,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1414,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1415,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1419,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1420,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - parser_set
    - pool_r
    - input_r
    - parts_r
    argTypes:
    - struct message_parser_settings*
    - pool_t*
    - struct istream**
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1408
    functionDepth: 3
    functionLinenumber: 1408
    functionLinenumberEnd: 1423
    functionName: test_message_parser_too_many_header_bytes_run
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parser_parse_next_block
    - test_istream_create
    - test_assert
    - message_parser_deinit
    - message_parser_init
    linkageType: ''
    returnType: void
    signature: "void test_message_parser_too_many_header_bytes_run(\n\tconst struct
      message_parser_settings *parser_set,\n\tpool_t *pool_r, struct istream **input_r,\n\tstruct
      message_part **parts_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1427,1
    - Dst: test_message_parser_too_many_header_bytes_run
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1434,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1438,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1439,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1442,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1445,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1448,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1450,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1453,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1456,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1458,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1460,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1463,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1467,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1469,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1471,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1473,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1474,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1475,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1425
    functionDepth: 4
    functionLinenumber: 1425
    functionLinenumberEnd: 1477
    functionName: test_message_parser_too_many_header_bytes_default
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - test_end
    - test_assert
    - i_stream_unref
    - test_message_parser_too_many_header_bytes_run
    - test_assert_part
    - test_parsed_parts
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_too_many_header_bytes_default(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1481,1
    - Dst: test_message_parser_too_many_header_bytes_run
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1488,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1492,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1493,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1496,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1499,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1502,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1504,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1507,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1509,1
    - Dst: test_assert_part
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1512,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1514,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1516,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1518,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1519,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1520,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1479
    functionDepth: 4
    functionLinenumber: 1479
    functionLinenumberEnd: 1522
    functionName: test_message_parser_too_many_header_bytes_100
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - test_end
    - test_assert
    - i_stream_unref
    - test_message_parser_too_many_header_bytes_run
    - test_assert_part
    - test_parsed_parts
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_parser_too_many_header_bytes_100(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-parser.c:1551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1524
    functionDepth: 7
    functionLinenumber: 1524
    functionLinenumberEnd: 1552
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-parser.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:12,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:20,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:20,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:23,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:25,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:26,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:29,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:30,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/fuzz-message-decoder.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 10
    functionDepth: 2
    functionLinenumber: 10
    functionLinenumberEnd: 32
    functionName: FUZZ_BEGIN_DATA
    functionSourceFile: /src/dovecot/src/lib-mail/fuzz-message-decoder.c
    functionUses: 0
    functionsReached:
    - message_parser_parse_next_block
    - message_decoder_init
    - pool_datastack_create
    - test_istream_create_data
    - message_decoder_deinit
    - message_decoder_decode_next_block
    - i_stream_unref
    - message_parser_deinit
    - message_parser_init
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_DATA(const unsigned char *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ctx
    - ','
    - hdr_size
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 104
    functionName: message_parser_parse_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: message_parser_parse_header(ctx, hdr_size, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 117
    functionName: message_parser_parse_body
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: message_parser_parse_body(ctx, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: defined
      Src: /src/dovecot/src/lib-mail/test-message-date.c:21,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-date.c:46,1
    - Dst: message_date_parse
      Src: /src/dovecot/src/lib-mail/test-message-date.c:48,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-date.c:49,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-mail/test-message-date.c:53,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/test-message-date.c:53,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 14
    functionDepth: 4
    functionLinenumber: 14
    functionLinenumberEnd: 55
    functionName: test_message_date_parse
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-date.c
    functionUses: 0
    functionsReached:
    - defined
    - strlen
    - t_strdup_printf
    - test_out
    - message_date_parse
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_message_date_parse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-date.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 7
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-date.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/quoted-printable.c:22,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/quoted-printable.c:26,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-mail/quoted-printable.c:38,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/quoted-printable.c:47,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - src
    - src_size
    - dest
    argTypes:
    - unsigned char*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 49
    functionName: quoted_printable_q_decode
    functionSourceFile: /src/dovecot/src/lib-mail/quoted-printable.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - buffer_append_c
    - hex_to_binary
    linkageType: ''
    returnType: int
    signature: "int quoted_printable_q_decode(const unsigned char *src, size_t src_size,\n\t\t\t
      \     buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:56,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:57,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:61,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:62,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:63,1
    - Dst: message_header_hash_more
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:64,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:67,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:69,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:70,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:70,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:71,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:73,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:73,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:76,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:77,1
    - Dst: message_header_hash_more
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:79,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:83,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:84,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:84,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:87,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:88,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:92,1
    - Dst: message_header_hash_more
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:93,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:98,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:99,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:99,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 102
    functionName: test_message_header_hash_more
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-hash.c
    functionUses: 0
    functionsReached:
    - i_zero
    - message_header_hash_more
    - md5_final
    - md5_update
    - test_assert_idx
    - strlen
    - md5_init
    - test_end
    - memcmp
    - i_rand_minmax
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_hash_more(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-header-hash.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 7
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-hash.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:82,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:83,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:84,1
    - Dst: qp_encoder_init
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:86,1
    - Dst: qp_encoder_more
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:89,1
    - Dst: qp_encoder_finish
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:90,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:92,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:92,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:95,1
    - Dst: qp_encoder_more
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:98,1
    - Dst: qp_encoder_finish
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:100,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:101,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:101,1
    - Dst: qp_encoder_deinit
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:103,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:104,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 107
    functionName: test_qp_encoder
    functionSourceFile: /src/dovecot/src/lib-mail/test-qp-encoder.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - qp_encoder_finish
    - qp_encoder_deinit
    - test_end
    - str_truncate
    - test_assert_strcmp_idx
    - qp_encoder_init
    - N_ELEMENTS
    - qp_encoder_more
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_qp_encoder(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:124,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:125,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:126,1
    - Dst: qp_encoder_init
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:128,1
    - Dst: qp_encoder_more
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:131,1
    - Dst: qp_encoder_finish
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:132,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:134,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:134,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:137,1
    - Dst: qp_encoder_more
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:140,1
    - Dst: qp_encoder_finish
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:142,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:143,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:143,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:143,1
    - Dst: qp_encoder_deinit
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:145,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:146,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 149
    functionName: test_qp_encoder_binary
    functionSourceFile: /src/dovecot/src/lib-mail/test-qp-encoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - qp_encoder_finish
    - test_assert_idx
    - qp_encoder_deinit
    - test_end
    - str_truncate
    - qp_encoder_init
    - N_ELEMENTS
    - qp_encoder_more
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_qp_encoder_binary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:169,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:170,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:171,1
    - Dst: qp_encoder_init
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:173,1
    - Dst: qp_encoder_more
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:176,1
    - Dst: qp_encoder_finish
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:177,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:179,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:179,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:179,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:182,1
    - Dst: qp_encoder_more
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:185,1
    - Dst: qp_encoder_finish
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:187,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:188,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:188,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:188,1
    - Dst: qp_encoder_deinit
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:190,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:191,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 194
    functionName: test_qp_encoder_header
    functionSourceFile: /src/dovecot/src/lib-mail/test-qp-encoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - qp_encoder_finish
    - test_assert_idx
    - qp_encoder_deinit
    - test_end
    - str_truncate
    - qp_encoder_init
    - N_ELEMENTS
    - qp_encoder_more
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_qp_encoder_header(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-qp-encoder.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 7
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-qp-encoder.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - part
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 38
    functionName: part_can_convert
    functionSourceFile: /src/dovecot/src/lib-mail/istream-binary-converter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool part_can_convert(const struct message_part *part)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:46,1
    - Dst: part_can_convert
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:49,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:51,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:53,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:56,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:57,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - bstream
    argTypes:
    - struct binary_converter_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 61
    functionName: stream_finish_convert_decision
    functionSourceFile: /src/dovecot/src/lib-mail/istream-binary-converter.c
    functionUses: 0
    functionsReached:
    - part_can_convert
    - buffer_free
    - i_assert
    - CONST_PTR_OFFSET
    - stream_add_data
    linkageType: ''
    returnType: void
    signature: void stream_finish_convert_decision(struct binary_converter_istream
      *bstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:71,1
    - Dst: stream_finish_convert_decision
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:75,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:78,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - bstream
    - data
    - size
    argTypes:
    - struct binary_converter_istream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 80
    functionName: stream_add_data
    functionSourceFile: /src/dovecot/src/lib-mail/istream-binary-converter.c
    functionUses: 1
    functionsReached:
    - memcpy
    - buffer_append
    - stream_finish_convert_decision
    - i_stream_alloc
    linkageType: ''
    returnType: void
    signature: "void stream_add_data(struct binary_converter_istream *bstream,\n\t\t\t
      \   const void *data, size_t size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:106,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:107,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:115,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:115,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:120,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:121,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:122,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:130,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:130,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:136,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:146,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:147,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:148,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:158,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:159,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 58
    argCount: 3
    argNames:
    - bstream
    - _data
    - size
    argTypes:
    - struct binary_converter_istream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 162
    functionName: stream_encode_base64
    functionSourceFile: /src/dovecot/src/lib-mail/istream-binary-converter.c
    functionUses: 0
    functionsReached:
    - memcpy
    - I_MIN
    - base64_encode
    - i_stream_alloc
    - buffer_create_from_data
    - i_assert
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: void
    signature: "void stream_encode_base64(struct binary_converter_istream *bstream,\n\t\t\t\t
      const void *_data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:168,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:169,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:172,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bstream
    - hdr
    argTypes:
    - struct binary_converter_istream*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 175
    functionName: stream_add_hdr
    functionSourceFile: /src/dovecot/src/lib-mail/istream-binary-converter.c
    functionUses: 0
    functionsReached:
    - stream_add_data
    linkageType: ''
    returnType: void
    signature: "void stream_add_hdr(struct binary_converter_istream *bstream,\n\t\t\t
      \  const struct message_header_line *hdr)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:185,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:189,1
    - Dst: stream_encode_base64
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:195,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:197,1
    - Dst: stream_encode_base64
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:213,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:218,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:221,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:224,1
    - Dst: part_can_convert
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:225,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:231,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:235,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:236,1
    - Dst: stream_add_hdr
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:237,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:240,1
    - Dst: stream_finish_convert_decision
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:245,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:246,1
    - Dst: stream_add_hdr
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:248,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:255,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:257,1
    - Dst: stream_encode_base64
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:262,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:264,1
    - Dst: i_stream_binary_converter_read
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:268,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 63
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 270
    functionName: i_stream_binary_converter_read
    functionSourceFile: /src/dovecot/src/lib-mail/istream-binary-converter.c
    functionUses: 1
    functionsReached:
    - stream_add_hdr
    - i_memcasecmp
    - buffer_create_dynamic
    - message_parser_parse_next_block
    - i_stream_get_max_buffer_size
    - strcasecmp
    - part_can_convert
    - stream_encode_base64
    - stream_finish_convert_decision
    - i_stream_binary_converter_read
    - buffer_free
    - i_assert
    - stream_add_data
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_binary_converter_read(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:280,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:282,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 285
    functionName: i_stream_binary_converter_close
    functionSourceFile: /src/dovecot/src/lib-mail/istream-binary-converter.c
    functionUses: 0
    functionsReached:
    - i_stream_close
    - message_parser_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: "void i_stream_binary_converter_close(struct iostream_private *stream,\n\t\t\t\t\t
      \   bool close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:295,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:305,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:306,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:307,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-mail/istream-binary-converter.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 309
    functionName: i_stream_create_binary_converter
    functionSourceFile: /src/dovecot/src/lib-mail/istream-binary-converter.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - i_stream_get_fd
    - i_new
    - i_stream_create
    - message_parser_init
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_binary_converter(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/message-decoder.c:48,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/message-decoder.c:51,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/message-decoder.c:52,1
    - Dst: base64_decode_init
      Src: /src/dovecot/src/lib-mail/message-decoder.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - normalizer
    - flags
    argTypes:
    - normalizer_func_t*
    - enum message_decoder_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 55
    functionName: message_decoder_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 1
    functionsReached:
    - base64_decode_init
    - buffer_create_dynamic
    - i_new
    linkageType: ''
    returnType: struct message_decoder_context
    signature: "struct message_decoder_context *\nmessage_decoder_init(normalizer_func_t
      *normalizer,\n\t\t     enum message_decoder_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: charset_to_utf8_end
      Src: /src/dovecot/src/lib-mail/message-decoder.c:64,1
    - Dst: qp_decoder_deinit
      Src: /src/dovecot/src/lib-mail/message-decoder.c:66,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/message-decoder.c:68,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/message-decoder.c:69,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-decoder.c:70,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-decoder.c:71,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-decoder.c:72,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-decoder.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct message_decoder_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 74
    functionName: message_decoder_deinit
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 1
    functionsReached:
    - qp_decoder_deinit
    - buffer_free
    - i_free
    - charset_to_utf8_end
    linkageType: ''
    returnType: void
    signature: void message_decoder_deinit(struct message_decoder_context **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-mail/message-decoder.c:82,1
    - Dst: message_decode_body_init_charset
      Src: /src/dovecot/src/lib-mail/message-decoder.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - set
    argTypes:
    - struct message_decoder_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: message_decoder_set_return_binary
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 0
    functionsReached:
    - message_decode_body_init_charset
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void message_decoder_set_return_binary(struct message_decoder_context
      *ctx,\n\t\t\t\t       bool set)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-decoder.c:92,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-decoder.c:93,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:95,1
    - Dst: rfc822_parse_mime_token
      Src: /src/dovecot/src/lib-mail/message-decoder.c:99,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:100,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-decoder.c:109,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:111,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/message-decoder.c:111,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:112,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/message-decoder.c:112,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:116,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/message-decoder.c:116,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:118,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/message-decoder.c:118,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:122,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/message-decoder.c:122,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-decoder.c:126,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 128
    functionName: message_decoder_parse_cte
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - t_str_new
    - i_memcasecmp
    - str_data
    - str_len
    - rfc822_parse_mime_token
    - rfc822_parser_deinit
    - rfc822_parser_init
    linkageType: ''
    returnType: enum message_cte
    signature: enum message_cte message_decoder_parse_cte(const struct message_header_line
      *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-decoder.c:142,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:143,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-decoder.c:144,1
    - Dst: rfc822_parse_content_type
      Src: /src/dovecot/src/lib-mail/message-decoder.c:145,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-mail/message-decoder.c:146,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-decoder.c:146,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-decoder.c:148,1
    - Dst: rfc2231_parse
      Src: /src/dovecot/src/lib-mail/message-decoder.c:152,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:154,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-mail/message-decoder.c:155,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-decoder.c:159,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct message_decoder_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 130
    functionDepth: 5
    functionLinenumber: 130
    functionLinenumberEnd: 160
    functionName: parse_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 3
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - rfc822_parse_content_type
    - strcasecmp
    - rfc2231_parse
    - i_strdup
    - rfc822_parser_deinit
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_type(struct message_decoder_context *ctx,\n\t\t
      \  struct message_header_line *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if
      Src: /src/dovecot/src/lib-mail/message-decoder.c:174,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:175,1
    - Dst: parse_content_type
      Src: /src/dovecot/src/lib-mail/message-decoder.c:176,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:178,1
    - Dst: message_decoder_parse_cte
      Src: /src/dovecot/src/lib-mail/message-decoder.c:179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - hdr
    - output
    argTypes:
    - struct message_decoder_context*
    - struct message_header_line*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 180
    functionName: message_decode_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 0
    functionsReached:
    - message_decoder_parse_cte
    - parse_content_type
    - strcasecmp
    - if
    linkageType: ''
    returnType: bool
    signature: "bool message_decode_header(struct message_decoder_context *ctx,\n\t\t\t\t
      \ struct message_header_line *hdr,\n\t\t\t\t  struct message_block *output)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/message-decoder.c:220,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/message-decoder.c:224,1
    - Dst: charset_to_utf8
      Src: /src/dovecot/src/lib-mail/message-decoder.c:227,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-decoder.c:232,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/message-decoder.c:233,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-decoder.c:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct message_decoder_context*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 246
    functionName: translation_buf_decode
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_assert
    - charset_to_utf8
    linkageType: ''
    returnType: void
    signature: "void translation_buf_decode(struct message_decoder_context *ctx,\n\t\t\t\t
      \  const unsigned char **data, size_t *size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-decoder.c:261,1
    - Dst: charset_to_utf8_reset
      Src: /src/dovecot/src/lib-mail/message-decoder.c:263,1
    - Dst: charset_to_utf8_end
      Src: /src/dovecot/src/lib-mail/message-decoder.c:268,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-mail/message-decoder.c:269,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-mail/message-decoder.c:271,1
    - Dst: charset_to_utf8_begin
      Src: /src/dovecot/src/lib-mail/message-decoder.c:273,1
    - Dst: charset_utf8_to_utf8_begin
      Src: /src/dovecot/src/lib-mail/message-decoder.c:275,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - part
    argTypes:
    - struct message_decoder_context*
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 276
    functionName: message_decode_body_init_charset
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 1
    functionsReached:
    - charset_utf8_to_utf8_begin
    - i_free_and_null
    - strcasecmp
    - charset_to_utf8_begin
    - i_strdup
    - charset_to_utf8_reset
    - charset_to_utf8_end
    linkageType: ''
    returnType: void
    signature: "void message_decode_body_init_charset(struct message_decoder_context
      *ctx,\n\t\t\t\t struct message_part *part)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/message-decoder.c:297,1
    - Dst: qp_decoder_init
      Src: /src/dovecot/src/lib-mail/message-decoder.c:299,1
    - Dst: qp_decoder_more
      Src: /src/dovecot/src/lib-mail/message-decoder.c:300,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/message-decoder.c:307,1
    - Dst: base64_decode_is_finished
      Src: /src/dovecot/src/lib-mail/message-decoder.c:308,1
    - Dst: base64_decode_more
      Src: /src/dovecot/src/lib-mail/message-decoder.c:309,1
    - Dst: base64_decode_finish
      Src: /src/dovecot/src/lib-mail/message-decoder.c:314,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/message-decoder.c:326,1
    - Dst: translation_buf_decode
      Src: /src/dovecot/src/lib-mail/message-decoder.c:328,1
    - Dst: charset_to_utf8
      Src: /src/dovecot/src/lib-mail/message-decoder.c:331,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-decoder.c:335,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/message-decoder.c:337,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 3
    argNames:
    - ctx
    - input
    - output
    argTypes:
    - struct message_decoder_context*
    - struct message_block*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 278
    functionDepth: 3
    functionLinenumber: 278
    functionLinenumberEnd: 346
    functionName: message_decode_body
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 0
    functionsReached:
    - memcpy
    - qp_decoder_more
    - base64_decode_more
    - translation_buf_decode
    - buffer_set_used_size
    - qp_decoder_init
    - charset_to_utf8
    - i_assert
    - base64_decode_is_finished
    - base64_decode_finish
    linkageType: ''
    returnType: bool
    signature: "bool message_decode_body(struct message_decoder_context *ctx,\n\t\t\t\tstruct
      message_block *input,\n\t\t\t\tstruct message_block *output)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: message_decoder_decode_reset
      Src: /src/dovecot/src/lib-mail/message-decoder.c:354,1
    - Dst: message_decode_header
      Src: /src/dovecot/src/lib-mail/message-decoder.c:362,1
    - Dst: message_decode_body
      Src: /src/dovecot/src/lib-mail/message-decoder.c:364,1
    - Dst: message_decode_body_init_charset
      Src: /src/dovecot/src/lib-mail/message-decoder.c:368,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - input
    - output
    argTypes:
    - struct message_decoder_context*
    - struct message_block*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 348
    functionDepth: 4
    functionLinenumber: 348
    functionLinenumberEnd: 371
    functionName: message_decoder_decode_next_block
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 1
    functionsReached:
    - message_decoder_decode_reset
    - message_decode_body
    - message_decode_header
    - message_decode_body_init_charset
    linkageType: ''
    returnType: bool
    signature: "bool message_decoder_decode_next_block(struct message_decoder_context
      *ctx,\n\t\t\t\t       struct message_block *input,\n\t\t\t\t       struct message_block
      *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_decoder_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 377
    functionName: message_decoder_current_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      message_decoder_current_content_type(struct message_decoder_context *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: base64_decode_reset
      Src: /src/dovecot/src/lib-mail/message-decoder.c:383,1
    - Dst: qp_decoder_finish
      Src: /src/dovecot/src/lib-mail/message-decoder.c:386,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-mail/message-decoder.c:387,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-mail/message-decoder.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_decoder_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 390
    functionName: message_decoder_decode_reset
    functionSourceFile: /src/dovecot/src/lib-mail/message-decoder.c
    functionUses: 1
    functionsReached:
    - i_free_and_null
    - qp_decoder_finish
    - base64_decode_reset
    linkageType: ''
    returnType: void
    signature: void message_decoder_decode_reset(struct message_decoder_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: IS_LWSP
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-encode.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LWSP(c)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:29,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:44,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:45,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 29
    argCount: 3
    argNames:
    - input
    - i
    - len
    argTypes:
    - unsigned char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 58
    functionName: input_idx_need_encoding
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-encode.c
    functionUses: 0
    functionsReached:
    - IS_LWSP
    - i_assert
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool input_idx_need_encoding(const unsigned char *input, size_t i,
      size_t len)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:76,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:82,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:104,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:124,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:139,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:147,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:152,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:158,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:161,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:165,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:173,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 72
    argCount: 4
    argNames:
    - input
    - len
    - output
    - first_line_len
    argTypes:
    - unsigned char*
    - size_t
    - string_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 174
    functionName: message_header_encode_q
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-encode.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - uni_utf8_get_char_n
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void message_header_encode_q(const unsigned char *input, size_t len,\n\t\t\t
      \    string_t *output, size_t first_line_len)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:192,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:198,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:199,1
    - Dst: base64_encode_get_full_space
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:207,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:208,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:214,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:227,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:229,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:233,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:234,1
    - Dst: base64_encode_get_full_space
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:245,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:253,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:254,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:256,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:258,1
    - Dst: base64_encode_reset
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:261,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:269,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:271,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:278,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:286,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:294,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:295,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:296,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 72
    argCount: 4
    argNames:
    - input
    - len
    - output
    - first_line_len
    argTypes:
    - unsigned char*
    - size_t
    - string_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 297
    functionName: message_header_encode_b
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-encode.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - I_MIN
    - uni_utf8_get_char_n
    - base64_encode_reset
    - base64_encode_get_full_space
    - str_append
    - base64_encode_finish
    - i_assert
    - base64_encode_init
    - base64_encode_more
    linkageType: ''
    returnType: void
    signature: "void message_header_encode_b(const unsigned char *input, size_t len,\n\t\t\t
      \    string_t *output, size_t first_line_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_header_encode_data
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:301,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: message_header_encode
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-encode.c
    functionUses: 0
    functionsReached:
    - strlen
    - message_header_encode_data
    linkageType: ''
    returnType: void
    signature: void message_header_encode(const char *input, string_t *output)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: input_idx_need_encoding
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:315,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:320,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:325,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:330,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:341,1
    - Dst: input_idx_need_encoding
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:355,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:360,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:366,1
    - Dst: message_header_encode_q
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:374,1
    - Dst: message_header_encode_b
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:376,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:377,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:388,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:393,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:394,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:397,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:401,1
    - Dst: message_header_encode_data
      Src: /src/dovecot/src/lib-mail/message-header-encode.c:403,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 73
    argCount: 3
    argNames:
    - input
    - len
    - output
    argTypes:
    - unsigned char*
    - size_t
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 406
    functionName: message_header_encode_data
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-encode.c
    functionUses: 2
    functionsReached:
    - i_assert
    - str_append_c
    - input_idx_need_encoding
    - IS_LWSP
    - str_append_data
    - message_header_encode_q
    - memchr
    - message_header_encode_data
    - MAX_BASE64_ENCODED_SIZE
    - message_header_encode_b
    linkageType: ''
    returnType: void
    signature: "void message_header_encode_data(const unsigned char *input, size_t
      len,\n\t\t\t\tstring_t *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/fuzz-qp-decoder.c:13,1
    - Dst: qp_decoder_init
      Src: /src/dovecot/src/lib-mail/fuzz-qp-decoder.c:14,1
    - Dst: qp_decoder_more
      Src: /src/dovecot/src/lib-mail/fuzz-qp-decoder.c:16,1
    - Dst: qp_decoder_finish
      Src: /src/dovecot/src/lib-mail/fuzz-qp-decoder.c:18,1
    - Dst: qp_decoder_deinit
      Src: /src/dovecot/src/lib-mail/fuzz-qp-decoder.c:19,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/fuzz-qp-decoder.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 21
    functionName: FUZZ_BEGIN_DATA
    functionSourceFile: /src/dovecot/src/lib-mail/fuzz-qp-decoder.c
    functionUses: 0
    functionsReached:
    - qp_decoder_more
    - qp_decoder_finish
    - buffer_create_dynamic
    - qp_decoder_init
    - qp_decoder_deinit
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_DATA(const unsigned char *data, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-id.c:14,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/message-id.c:15,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-id.c:25,1
    - Dst: rfc822_parse_quoted_string
      Src: /src/dovecot/src/lib-mail/message-id.c:28,1
    - Dst: rfc822_parse_dot_atom
      Src: /src/dovecot/src/lib-mail/message-id.c:30,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-id.c:32,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-id.c:34,1
    - Dst: rfc822_parse_dot_atom
      Src: /src/dovecot/src/lib-mail/message-id.c:36,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-id.c:42,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - msgid_p
    - msgid
    argTypes:
    - char**
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 44
    functionName: get_untokenized_msgid
    functionSourceFile: /src/dovecot/src/lib-mail/message-id.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - str_append_c
    - strlen
    - rfc822_parse_quoted_string
    - rfc822_parser_deinit
    - rfc822_parse_dot_atom
    - rfc822_parser_init
    linkageType: ''
    returnType: bool
    signature: bool get_untokenized_msgid(const char **msgid_p, string_t *msgid)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 11
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 63
    functionName: strip_lwsp
    functionSourceFile: /src/dovecot/src/lib-mail/message-id.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void strip_lwsp(char *str)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-mail/message-id.c:108,1
    - Dst: strip_lwsp
      Src: /src/dovecot/src/lib-mail/message-id.c:110,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-id.c:120,1
    - Dst: get_untokenized_msgid
      Src: /src/dovecot/src/lib-mail/message-id.c:122,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-id.c:123,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 1
    argNames:
    - msgid_p
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 129
    functionName: message_id_get_next
    functionSourceFile: /src/dovecot/src/lib-mail/message-id.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - p_strdup_until
    - get_untokenized_msgid
    - strip_lwsp
    linkageType: ''
    returnType: char
    signature: char *message_id_get_next(const char **msgid_p)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:22,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:23,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:25,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:27,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:35,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:37,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:50,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:53,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:54,1
    - Dst: test_ostream_create_nonblocking
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:57,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:58,1
    - Dst: o_stream_create_dot
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:60,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:61,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:66,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:70,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:77,1
    - Dst: test_ostream_set_max_output_size
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:78,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:83,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:86,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:91,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:97,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:98,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:99,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:102,1
    - Dst: i_stream_create_from_buffer
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:105,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:106,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:109,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:111,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:114,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:114,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:118,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:120,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:122,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:123,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:124,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:127,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:129,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:130,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:135,1
    - Dst: test_assert_memcmp_idx
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:142,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:143,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:144,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:144,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:145,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:145,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:149,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:149,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:150,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:151,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:151,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:152,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:155,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:156,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:161,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:162,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:164,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:165,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:166,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 14
    functionDepth: 3
    functionLinenumber: 14
    functionLinenumberEnd: 167
    functionName: test_iostream_dot_random_io
    functionSourceFile: /src/dovecot/src/lib-mail/test-iostream-dot.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - o_stream_set_name
    - buffer_create_dynamic
    - o_stream_unref
    - i_stream_get_data
    - buffer_set_used_size
    - i_rand_limit
    - i_rand_minmax
    - buffer_append
    - test_ostream_set_max_output_size
    - i_stream_set_name
    - o_stream_send_istream
    - I_MIN
    - i_stream_create_from_buffer
    - i_stream_skip
    - i_stream_get_error
    - test_end
    - test_assert_memcmp_idx
    - i_stream_get_name
    - i_stream_set_max_buffer_size
    - test_istream_set_size
    - i_stream_read_more
    - binary_to_hex
    - buffer_free
    - test_ostream_create_nonblocking
    - o_stream_create_dot
    - i_stream_create_dot
    - i_info
    - i_error
    - o_stream_finish
    - test_has_failed
    - test_istream_create_data
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_dot_random_io(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:179,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:180,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-mail/test-iostream-dot.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 169
    functionDepth: 7
    functionLinenumber: 169
    functionLinenumberEnd: 184
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-iostream-dot.c
    functionUses: 7
    functionsReached:
    - test_run
    - io_loop_destroy
    - io_loop_create
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/message-parser.c:33,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 4
    argNames:
    - boundaries
    - data
    - len
    - trailing_dashes
    argTypes:
    - struct message_boundary*
    - unsigned char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 51
    functionName: boundary_find
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: struct message_boundary
    signature: "struct message_boundary *\nboundary_find(struct message_boundary *boundaries,\n\t
      \     const unsigned char *data, size_t len, bool trailing_dashes)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:59,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-parser.c:64,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-parser.c:75,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - block
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 87
    functionName: parse_body_add_block
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - memchr
    linkageType: ''
    returnType: void
    signature: "void parse_body_add_block(struct message_parser_ctx *ctx,\n\t\t\t\t
      struct message_block *block)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-parser.c:95,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-mail/message-parser.c:100,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:111,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/message-parser.c:124,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - ctx
    - block_r
    - full_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 133
    functionName: message_parser_read_more
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - i_assert
    - i_stream_read_bytes
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int message_parser_read_more(struct message_parser_ctx *ctx,\n\t\t\t
      \    struct message_block *block_r, bool *full_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:141,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:142,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:143,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-parser.c:146,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/message-parser.c:159,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 169
    functionName: message_part_append
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - p_new
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void message_part_append(struct message_parser_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:176,1
    - Dst: array_back
      Src: /src/dovecot/src/lib-mail/message-parser.c:179,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-mail/message-parser.c:180,1
    - Dst: message_size_add
      Src: /src/dovecot/src/lib-mail/message-parser.c:184,1
    - Dst: message_size_add
      Src: /src/dovecot/src/lib-mail/message-parser.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 188
    functionName: message_part_finish
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - array_pop_back
    - message_size_add
    - i_assert
    - array_back
    linkageType: ''
    returnType: void
    signature: void message_part_finish(struct message_parser_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-parser.c:192,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-parser.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct message_boundary*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 194
    functionName: message_boundary_free
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void message_boundary_free(struct message_boundary *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:203,1
    - Dst: message_boundary_free
      Src: /src/dovecot/src/lib-mail/message-parser.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - boundary
    argTypes:
    - struct message_parser_ctx*
    - struct message_boundary*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 209
    functionName: boundary_remove_until
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - message_boundary_free
    linkageType: ''
    returnType: void
    signature: "void boundary_remove_until(struct message_parser_ctx *ctx,\n\t\t      struct
      message_boundary *boundary)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/message-parser.c:215,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/message-parser.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 223
    functionName: parse_next_body_multipart_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_new
    linkageType: ''
    returnType: void
    signature: void parse_next_body_multipart_init(struct message_parser_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_part_append
      Src: /src/dovecot/src/lib-mail/message-parser.c:228,1
    - Dst: parse_next_header_init
      Src: /src/dovecot/src/lib-mail/message-parser.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 230
    functionName: parse_next_body_message_rfc822_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - message_part_append
    - parse_next_header_init
    linkageType: ''
    returnType: int
    signature: "int parse_next_body_message_rfc822_init(struct message_parser_ctx
      *ctx,\n\t\t\t\t\t       struct message_block *block_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:240,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-parser.c:263,1
    - Dst: boundary_find
      Src: /src/dovecot/src/lib-mail/message-parser.c:284,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/message-parser.c:291,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 36
    argCount: 5
    argNames:
    - ctx
    - data
    - size
    - full
    - boundary_r
    argTypes:
    - struct message_parser_ctx*
    - unsigned char*
    - size_t
    - bool
    - struct message_boundary**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 293
    functionName: boundary_line_find
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - memchr
    - memcmp
    - boundary_find
    linkageType: ''
    returnType: int
    signature: "int boundary_line_find(struct message_parser_ctx *ctx,\n\t\t   const
      unsigned char *data, size_t size, bool full,\n\t\t   struct message_boundary
      **boundary_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_part_append
      Src: /src/dovecot/src/lib-mail/message-parser.c:298,1
    - Dst: parse_next_header_init
      Src: /src/dovecot/src/lib-mail/message-parser.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 302
    functionName: parse_next_mime_header_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - message_part_append
    - parse_next_header_init
    linkageType: ''
    returnType: int
    signature: "int parse_next_mime_header_init(struct message_parser_ctx *ctx,\n\t\t\t\t
      \      struct message_block *block_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser.c:311,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-parser.c:314,1
    - Dst: parse_body_add_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:316,1
    - Dst: parse_body_add_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:325,1
    - Dst: struct message_parser_ctx*::parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:340,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 341
    functionName: parse_next_body_skip_boundary_line
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - parse_body_add_block
    - struct message_parser_ctx*::parse_next_block
    - memchr
    - message_parser_read_more
    linkageType: ''
    returnType: int
    signature: "int parse_next_body_skip_boundary_line(struct message_parser_ctx *ctx,\n\t\t\t\t\t
      \     struct message_block *block_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:351,1
    - Dst: message_part_finish
      Src: /src/dovecot/src/lib-mail/message-parser.c:356,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:357,1
    - Dst: boundary_remove_until
      Src: /src/dovecot/src/lib-mail/message-parser.c:362,1
    - Dst: boundary_remove_until
      Src: /src/dovecot/src/lib-mail/message-parser.c:365,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/message-parser.c:369,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:370,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:376,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:379,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:383,1
    - Dst: parse_body_add_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:385,1
    - Dst: struct message_parser_ctx*::parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:391,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 4
    argNames:
    - ctx
    - boundary
    - block_r
    - first_line
    argTypes:
    - struct message_parser_ctx*
    - struct message_boundary*
    - struct message_block*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 343
    functionDepth: 3
    functionLinenumber: 343
    functionLinenumberEnd: 392
    functionName: parse_part_finish
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - struct message_parser_ctx*::parse_next_block
    - i_stream_get_data
    - parse_body_add_block
    - boundary_remove_until
    - message_part_finish
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int parse_part_finish(struct message_parser_ctx *ctx,\n\t\t\t     struct
      message_boundary *boundary,\n\t\t\t     struct message_block *block_r, bool
      first_line)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser.c:403,1
    - Dst: boundary_line_find
      Src: /src/dovecot/src/lib-mail/message-parser.c:410,1
    - Dst: parse_part_finish
      Src: /src/dovecot/src/lib-mail/message-parser.c:414,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:418,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-parser.c:424,1
    - Dst: boundary_line_find
      Src: /src/dovecot/src/lib-mail/message-parser.c:437,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:448,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:449,1
    - Dst: parse_body_add_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:472,1
    - Dst: parse_part_finish
      Src: /src/dovecot/src/lib-mail/message-parser.c:481,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 53
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 394
    functionDepth: 4
    functionLinenumber: 394
    functionLinenumberEnd: 482
    functionName: parse_next_body_to_boundary
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - parse_part_finish
    - memchr
    - boundary_line_find
    - parse_body_add_block
    - i_assert
    - message_parser_read_more
    linkageType: ''
    returnType: int
    signature: "int parse_next_body_to_boundary(struct message_parser_ctx *ctx,\n\t\t\t\t
      \      struct message_block *block_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser.c:490,1
    - Dst: parse_body_add_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:493,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 484
    functionDepth: 2
    functionLinenumber: 484
    functionLinenumberEnd: 500
    functionName: parse_next_body_to_eof
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - parse_body_add_block
    - message_parser_read_more
    linkageType: ''
    returnType: int
    signature: "int parse_next_body_to_eof(struct message_parser_ctx *ctx,\n\t\t\t\t
      \ struct message_block *block_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-parser.c:514,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-parser.c:515,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-parser.c:517,1
    - Dst: rfc822_parse_content_type
      Src: /src/dovecot/src/lib-mail/message-parser.c:518,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-parser.c:520,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-parser.c:520,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-mail/message-parser.c:522,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-parser.c:522,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-mail/message-parser.c:525,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-parser.c:525,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-parser.c:528,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-parser.c:535,1
    - Dst: rfc2231_parse
      Src: /src/dovecot/src/lib-mail/message-parser.c:539,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-parser.c:541,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-parser.c:543,1
    - Dst: i_strndup
      Src: /src/dovecot/src/lib-mail/message-parser.c:545,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-parser.c:549,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct message_parser_ctx*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 502
    functionDepth: 5
    functionLinenumber: 502
    functionLinenumberEnd: 550
    functionName: parse_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 5
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - rfc822_parse_content_type
    - strcasecmp
    - i_strndup
    - rfc2231_parse
    - str_begins_icase
    - rfc822_parser_deinit
    - i_free
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_type(struct message_parser_ctx *ctx,\n\t\t\t       struct
      message_header_line *hdr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - block
    argTypes:
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 565
    functionName: block_is_at_eoh
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool block_is_at_eoh(const struct message_block *block)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 570
    functionName: parse_too_many_nested_mime_parts
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool parse_too_many_nested_mime_parts(struct message_parser_ctx *ctx)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser.c:584,1
    - Dst: block_is_at_eoh
      Src: /src/dovecot/src/lib-mail/message-parser.c:587,1
    - Dst: parse_too_many_nested_mime_parts
      Src: /src/dovecot/src/lib-mail/message-parser.c:596,1
    - Dst: parse_next_body_multipart_init
      Src: /src/dovecot/src/lib-mail/message-parser.c:597,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-mail/message-parser.c:601,1
    - Dst: boundary_line_find
      Src: /src/dovecot/src/lib-mail/message-parser.c:609,1
    - Dst: message_parse_header_lower_limit
      Src: /src/dovecot/src/lib-mail/message-parser.c:622,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/message-parser.c:623,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-mail/message-parser.c:632,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:642,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-parser.c:660,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-parser.c:663,1
    - Dst: parse_content_type
      Src: /src/dovecot/src/lib-mail/message-parser.c:671,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 66
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 575
    functionDepth: 2
    functionLinenumber: 575
    functionLinenumberEnd: 680
    functionName: parse_next_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_get_data_size
    - ENUM_NEGATE
    - parse_next_body_multipart_init
    - boundary_line_find
    - parse_too_many_nested_mime_parts
    - strcasecmp
    - message_parse_header_lower_limit
    - message_parse_header_next
    - parse_content_type
    - message_parser_read_more
    - block_is_at_eoh
    linkageType: ''
    returnType: int
    signature: "int parse_next_header(struct message_parser_ctx *ctx,\n\t\t\t     struct
      message_block *block_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:748,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/message-parser.c:751,1
    - Dst: parse_next_header
      Src: /src/dovecot/src/lib-mail/message-parser.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 745
    functionDepth: 3
    functionLinenumber: 745
    functionLinenumberEnd: 758
    functionName: parse_next_header_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 2
    functionsReached:
    - parse_next_header
    - i_assert
    - message_parse_header_init
    linkageType: ''
    returnType: int
    signature: "int parse_next_header_init(struct message_parser_ctx *ctx,\n\t\t\t\t
      \ struct message_block *block_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/message-parser.c:766,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-mail/message-parser.c:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - input
    - set
    argTypes:
    - struct istream*
    - struct message_parser_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 781
    functionName: message_parser_init_int
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - i_new
    linkageType: ''
    returnType: struct message_parser_ctx
    signature: "struct message_parser_ctx *\nmessage_parser_init_int(struct istream
      *input,\n\t\t\tconst struct message_parser_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_init_int
      Src: /src/dovecot/src/lib-mail/message-parser.c:789,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-parser.c:791,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-mail/message-parser.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - part_pool
    - input
    - set
    argTypes:
    - pool_t
    - struct istream*
    - struct message_parser_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 783
    functionDepth: 2
    functionLinenumber: 783
    functionLinenumberEnd: 798
    functionName: message_parser_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 8
    functionsReached:
    - i_array_init
    - p_new
    - message_parser_init_int
    linkageType: ''
    returnType: struct message_parser_ctx
    signature: "struct message_parser_ctx *\nmessage_parser_init(pool_t part_pool,
      struct istream *input,\n\t\t    const struct message_parser_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:805,1
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-mail/message-parser.c:806,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-mail/message-parser.c:807,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - parts_r
    argTypes:
    - struct message_parser_ctx**
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 808
    functionName: message_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 8
    functionsReached:
    - i_panic
    - i_assert
    - message_parser_deinit_from_parts
    linkageType: ''
    returnType: void
    signature: "void message_parser_deinit(struct message_parser_ctx **_ctx,\n\t\t\t
      \ struct message_part **parts_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/message-parser.c:822,1
    - Dst: message_part_finish
      Src: /src/dovecot/src/lib-mail/message-parser.c:831,1
    - Dst: boundary_remove_until
      Src: /src/dovecot/src/lib-mail/message-parser.c:833,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:834,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/message-parser.c:836,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-mail/message-parser.c:837,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-parser.c:838,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-parser.c:839,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:840,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - _ctx
    - parts_r
    - error_r
    argTypes:
    - struct message_parser_ctx**
    - struct message_part**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 810
    functionDepth: 3
    functionLinenumber: 810
    functionLinenumberEnd: 842
    functionName: message_parser_deinit_from_parts
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 3
    functionsReached:
    - i_free
    - boundary_remove_until
    - message_parse_header_deinit
    - message_part_finish
    - i_stream_unref
    - i_assert
    - array_free
    linkageType: ''
    returnType: int
    signature: "int message_parser_deinit_from_parts(struct message_parser_ctx **_ctx,\n\t\t\t\t
      \    struct message_part **parts_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-parser.c:850,1
    - Dst: struct message_parser_ctx*::parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:852,1
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser.c:853,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:855,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:859,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser.c:868,1
    - Dst: message_part_finish
      Src: /src/dovecot/src/lib-mail/message-parser.c:872,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 844
    functionDepth: 2
    functionLinenumber: 844
    functionLinenumberEnd: 880
    functionName: message_parser_parse_next_block
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 9
    functionsReached:
    - i_zero
    - struct message_parser_ctx*::parse_next_block
    - message_part_finish
    - i_assert
    - message_parser_read_more
    linkageType: ''
    returnType: int
    signature: "int message_parser_parse_next_block(struct message_parser_ctx *ctx,\n\t\t\t\t
      \   struct message_block *block_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:891,1
    - Dst: callback
      Src: /src/dovecot/src/lib-mail/message-parser.c:893,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - hdr_size
    - callback
    - context
    argTypes:
    - struct message_parser_ctx*
    - struct message_size*
    - message_part_header_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 883
    functionDepth: 3
    functionLinenumber: 883
    functionLinenumberEnd: 898
    functionName: message_parser_parse_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - message_parser_parse_next_block
    - callback
    linkageType: ''
    returnType: void
    signature: "void message_parser_parse_header(struct message_parser_ctx *ctx,\n\t\t\t\t
      struct message_size *hdr_size,\n\t\t\t\t message_part_header_callback_t *callback,\n\t\t\t\t
      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser.c:918,1
    - Dst: hdr_callback
      Src: /src/dovecot/src/lib-mail/message-parser.c:920,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - hdr_callback
    - context
    argTypes:
    - struct message_parser_ctx*
    - message_part_header_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 911
    functionDepth: 3
    functionLinenumber: 911
    functionLinenumberEnd: 922
    functionName: message_parser_parse_body
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser.c
    functionUses: 0
    functionsReached:
    - hdr_callback
    - message_parser_parse_next_block
    linkageType: ''
    returnType: void
    signature: "void message_parser_parse_body(struct message_parser_ctx *ctx,\n\t\t\t
      \      message_part_header_callback_t *hdr_callback,\n\t\t\t       void *context)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-part-data.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-part-data.c:30,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:41,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:48,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:49,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:58,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 20
    argCount: 1
    argNames:
    - part
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 69
    functionName: message_part_data_is_plain_7bit
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool message_part_data_is_plain_7bit(const struct message_part *part)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - parameter_name
    - params_list
    - params_list_count
    - value_r
    argTypes:
    - char*
    - struct message_part_param*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 94
    functionName: get_param_value
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool get_param_value(const char *parameter_name,\n\t\t\t    const
      struct message_part_param *params_list,\n\t\t\t    unsigned int params_list_count,\n\t\t\t
      \   const char **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_param_value
      Src: /src/dovecot/src/lib-mail/message-part-data.c:103,1
    - Dst: get_param_value
      Src: /src/dovecot/src/lib-mail/message-part-data.c:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - data
    - default_return
    - filename_r
    argTypes:
    - struct message_part_data*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 115
    functionName: message_part_data_find_attachment_filename
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - get_param_value
    linkageType: ''
    returnType: bool
    signature: "bool message_part_data_find_attachment_filename(\n\tconst struct message_part_data
      *data,\n\tbool default_return,\n\tconst char **filename_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-part-data.c:127,1
    - Dst: message_part_has_content_types
      Src: /src/dovecot/src/lib-mail/message-part-data.c:131,1
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:136,1
    - Dst: message_part_data_find_attachment_filename
      Src: /src/dovecot/src/lib-mail/message-part-data.c:137,1
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:143,1
    - Dst: message_part_data_find_attachment_filename
      Src: /src/dovecot/src/lib-mail/message-part-data.c:144,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 3
    argNames:
    - part
    - settings
    - filename_r
    argTypes:
    - struct message_part*
    - struct message_part_attachment_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 147
    functionName: message_part_get_attachment_filename
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - message_part_data_find_attachment_filename
    - message_part_has_content_types
    - i_assert
    - null_strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool message_part_get_attachment_filename(\n\tconst struct message_part
      *part,\n\tconst struct message_part_attachment_settings *settings,\n\tconst
      char **filename_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-part-data.c:154,1
    - Dst: message_part_get_attachment_filename
      Src: /src/dovecot/src/lib-mail/message-part-data.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - part
    - filename_r
    argTypes:
    - struct message_part*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 157
    functionName: message_part_data_get_filename
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - message_part_get_attachment_filename
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool message_part_data_get_filename(const struct message_part *part,\n\tconst
      char **filename_r)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:186,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:191,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:196,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:201,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:206,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:211,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:216,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:221,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:223,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:228,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 53
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 236
    functionName: envelope_get_field
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: enum envelope_field
    signature: enum envelope_field envelope_get_field(const char *name)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-part-data.c:248,1
    - Dst: envelope_get_field
      Src: /src/dovecot/src/lib-mail/message-part-data.c:253,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/message-part-data.c:298,1
    - Dst: message_address_parse_full
      Src: /src/dovecot/src/lib-mail/message-part-data.c:302,1
    - Dst: DLLIST2_JOIN
      Src: /src/dovecot/src/lib-mail/message-part-data.c:312,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:315,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 3
    argNames:
    - pool
    - data
    - hdr
    argTypes:
    - pool_t
    - struct message_part_envelope**
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 238
    functionDepth: 11
    functionLinenumber: 238
    functionLinenumberEnd: 318
    functionName: message_part_envelope_parse_from_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - message_header_strdup
    - p_new
    - DLLIST2_JOIN
    - i_unreached
    - envelope_get_field
    - message_address_parse_full
    linkageType: ''
    returnType: void
    signature: "void message_part_envelope_parse_from_header(pool_t pool,\n\tstruct
      message_part_envelope **data,\n\tstruct message_header_line *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfc2231_parse
      Src: /src/dovecot/src/lib-mail/message-part-data.c:331,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-mail/message-part-data.c:333,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-part-data.c:334,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-part-data.c:338,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:340,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - parser
    - pool
    - params_r
    - params_count_r
    argTypes:
    - struct rfc822_parser_context*
    - pool_t
    - struct message_part_param**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 322
    functionDepth: 5
    functionLinenumber: 322
    functionLinenumberEnd: 347
    functionName: parse_mime_parameters
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - str_array_length
    - rfc2231_parse
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void parse_mime_parameters(struct rfc822_parser_context *parser,\n\tpool_t
      pool, const struct message_part_param **params_r,\n\tunsigned int *params_count_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-part-data.c:359,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:360,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-part-data.c:362,1
    - Dst: rfc822_parse_content_type
      Src: /src/dovecot/src/lib-mail/message-part-data.c:363,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-part-data.c:366,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:369,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-part-data.c:373,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:374,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-part-data.c:374,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:379,1
    - Dst: parse_mime_parameters
      Src: /src/dovecot/src/lib-mail/message-part-data.c:392,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-part-data.c:395,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - data
    - pool
    - hdr
    argTypes:
    - struct message_part_data*
    - pool_t
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 349
    functionDepth: 6
    functionLinenumber: 349
    functionLinenumberEnd: 396
    functionName: parse_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 7
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - p_strdup
    - rfc822_parse_content_type
    - parse_mime_parameters
    - str_truncate
    - rfc822_parser_deinit
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_type(struct message_part_data *data,\n\tpool_t
      pool, struct message_header_line *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-part-data.c:405,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:406,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-part-data.c:408,1
    - Dst: rfc822_parse_mime_token
      Src: /src/dovecot/src/lib-mail/message-part-data.c:409,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:410,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-part-data.c:410,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:412,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-part-data.c:412,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-part-data.c:414,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - data
    - pool
    - hdr
    argTypes:
    - struct message_part_data*
    - pool_t
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 415
    functionName: parse_content_transfer_encoding
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - p_strdup
    - str_len
    - rfc822_parse_mime_token
    - rfc822_parser_deinit
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_transfer_encoding(struct message_part_data *data,\n\tpool_t
      pool, struct message_header_line *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-part-data.c:424,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:425,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-part-data.c:427,1
    - Dst: rfc822_parse_mime_token
      Src: /src/dovecot/src/lib-mail/message-part-data.c:428,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-part-data.c:429,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:432,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-part-data.c:432,1
    - Dst: parse_mime_parameters
      Src: /src/dovecot/src/lib-mail/message-part-data.c:434,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-part-data.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - data
    - pool
    - hdr
    argTypes:
    - struct message_part_data*
    - pool_t
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 417
    functionDepth: 6
    functionLinenumber: 417
    functionLinenumberEnd: 438
    functionName: parse_content_disposition
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - p_strdup
    - rfc822_parse_mime_token
    - parse_mime_parameters
    - rfc822_parser_deinit
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_disposition(struct message_part_data *data,\n\tpool_t
      pool, struct message_header_line *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-mail/message-part-data.c:445,1
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-part-data.c:453,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-mail/message-part-data.c:455,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-part-data.c:456,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:458,1
    - Dst: rfc822_parse_atom
      Src: /src/dovecot/src/lib-mail/message-part-data.c:459,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:460,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-part-data.c:460,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/message-part-data.c:462,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/message-part-data.c:463,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:468,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-part-data.c:470,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-mail/message-part-data.c:472,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-mail/message-part-data.c:473,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:475,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-mail/message-part-data.c:475,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - data
    - pool
    - value
    - value_len
    argTypes:
    - struct message_part_data*
    - pool_t
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 440
    functionDepth: 2
    functionLinenumber: 440
    functionLinenumberEnd: 477
    functionName: parse_content_language
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - p_strdup
    - rfc822_parse_atom
    - array_push_back
    - p_strarray_dup
    - array_front
    - array_count
    - t_array_init
    - str_truncate
    - ARRAY_TYPE
    - rfc822_parser_deinit
    - array_append_zero
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_language(struct message_part_data *data,\n\tpool_t
      pool, const unsigned char *value, size_t value_len)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/message-part-data.c:483,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:493,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:495,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:501,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:503,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:509,1
    - Dst: parse_content_type
      Src: /src/dovecot/src/lib-mail/message-part-data.c:510,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:511,1
    - Dst: parse_content_transfer_encoding
      Src: /src/dovecot/src/lib-mail/message-part-data.c:513,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:518,1
    - Dst: parse_content_language
      Src: /src/dovecot/src/lib-mail/message-part-data.c:520,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:522,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:525,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:532,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-mail/message-part-data.c:535,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-part-data.c:537,1
    - Dst: parse_content_disposition
      Src: /src/dovecot/src/lib-mail/message-part-data.c:539,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 42
    argCount: 3
    argNames:
    - data
    - pool
    - hdr
    argTypes:
    - struct message_part_data*
    - pool_t
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 479
    functionDepth: 3
    functionLinenumber: 479
    functionLinenumberEnd: 544
    functionName: parse_content_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - message_header_strdup
    - parse_content_transfer_encoding
    - strlen
    - strcasecmp
    - parse_content_language
    - parse_content_type
    - parse_content_disposition
    linkageType: ''
    returnType: void
    signature: "void parse_content_header(struct message_part_data *data,\n\tpool_t
      pool, struct message_header_line *hdr)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-part-data.c:558,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-part-data.c:565,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-mail/message-part-data.c:576,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-part-data.c:581,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-mail/message-part-data.c:585,1
    - Dst: parse_content_header
      Src: /src/dovecot/src/lib-mail/message-part-data.c:587,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - pool
    - part
    - hdr
    argTypes:
    - pool_t
    - struct message_part*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 546
    functionDepth: 4
    functionLinenumber: 546
    functionLinenumberEnd: 589
    functionName: message_part_data_parse_from_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 1
    functionsReached:
    - i_zero
    - parse_content_header
    - p_new
    - str_begins_icase_with
    linkageType: ''
    returnType: void
    signature: "void message_part_data_parse_from_header(pool_t pool,\n\tstruct message_part
      *part,\n\tstruct message_header_line *hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-part-data.c:605,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/message-part-data.c:610,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/message-part-data.c:612,1
    - Dst: wildcard_match_icase
      Src: /src/dovecot/src/lib-mail/message-part-data.c:616,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - part
    - types
    argTypes:
    - struct message_part*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 621
    functionName: message_part_has_content_types
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 1
    functionsReached:
    - i_assert
    - t_strdup_printf
    - wildcard_match_icase
    linkageType: ''
    returnType: bool
    signature: "bool message_part_has_content_types(const struct message_part *part,\n\t\t\t\t
      \   const char *const *types)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_part_get_attachment_filename
      Src: /src/dovecot/src/lib-mail/message-part-data.c:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - part
    - settings
    argTypes:
    - struct message_part*
    - struct message_part_attachment_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 623
    functionDepth: 3
    functionLinenumber: 623
    functionLinenumberEnd: 628
    functionName: message_part_is_attachment
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-data.c
    functionUses: 0
    functionsReached:
    - message_part_get_attachment_filename
    linkageType: ''
    returnType: bool
    signature: "bool message_part_is_attachment(\n\tconst struct message_part *part,\n\tconst
      struct message_part_attachment_settings *settings)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:33,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:38,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:39,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:41,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:42,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:44,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:45,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:50,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:50,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:52,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:53,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:53,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:55,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:59,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:61,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:61,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:62,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:63,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:67,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:70,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:74,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:76,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:77,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:79,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:83,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:84,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:85,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:86,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:87,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:92,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:95,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:98,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:102,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:104,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:105,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:106,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:110,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:113,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:116,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:120,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:122,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:123,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:124,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:129,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:135,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:135,1
    CyclomaticComplexity: 84
    EdgeCount: 84
    ICount: 88
    argCount: 2
    argNames:
    - parser
    - hdr_flags
    argTypes:
    - struct message_header_parser_ctx*
    - enum message_header_parser_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 136
    functionName: test_message_header_parser_one
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - memcmp
    - message_parse_header_next
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_message_header_parser_one(struct message_header_parser_ctx
      *parser,\n\t\t\t       enum message_header_parser_flags hdr_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:150,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:151,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:154,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:155,1
    - Dst: test_message_header_parser_one
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:156,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:157,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:158,1
    - Dst: message_get_header_size
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:159,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:162,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:165,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:166,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:167,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:167,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:169,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 138
    functionDepth: 3
    functionLinenumber: 138
    functionLinenumberEnd: 171
    functionName: test_message_header_parser
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_message_header_parser_one
    - message_parse_header_deinit
    - test_end
    - test_istream_create
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - message_get_header_size
    - message_parse_header_init
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_parser(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:176,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:178,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:180,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:183,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:184,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - str
    - hdr
    argTypes:
    - string_t*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 186
    functionName: hdr_write
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void hdr_write(string_t *str, struct message_header_line *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:193,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:197,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:198,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:199,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:201,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:202,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:204,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:205,1
    - Dst: hdr_write
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:207,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:210,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:212,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:213,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:213,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:213,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:214,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:215,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 216
    functionName: test_message_header_parser_partial
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_istream_set_size
    - t_str_new
    - str_c
    - strlen
    - test_istream_set_allow_eof
    - message_parse_header_deinit
    - test_end
    - hdr_write
    - test_istream_create
    - message_parse_header_next
    - test_assert
    - i_stream_unref
    - str_append
    - message_parse_header_init
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_parser_partial(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:228,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:231,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:232,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:234,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:236,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:237,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:239,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:240,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:244,1
    - Dst: message_get_header_size
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:245,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - str
    - buffer_size
    - size_r
    - size_2_r
    argTypes:
    - char*
    - unsigned int
    - struct message_size*
    - struct message_size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 247
    functionName: test_message_header_parser_long_lines_str
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - strlen
    - message_parse_header_init
    - test_istream_set_max_buffer_size
    - message_parse_header_deinit
    - test_istream_create
    - message_parse_header_next
    - i_stream_seek
    - i_stream_unref
    - message_get_header_size
    - test_istream_set_size
    linkageType: ''
    returnType: void
    signature: "void test_message_header_parser_long_lines_str(const char *str,\n\t\t\t\t\t
      \ unsigned int buffer_size,\n\t\t\t\t\t  struct message_size *size_r,\n\t\t\t\t\t
      \ struct message_size *size_2_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:269,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:270,1
    - Dst: test_message_header_parser_long_lines_str
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:273,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:276,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:278,1
    - Dst: test_message_header_parser_long_lines_str
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:283,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:284,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:288,1
    - Dst: test_message_header_parser_long_lines_str
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:293,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:294,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:296,1
    - Dst: test_message_header_parser_long_lines_str
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:298,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:299,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:300,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:301,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:302,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:312,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:313,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:315,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:315,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:319,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:319,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:321,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:322,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:324,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:326,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:326,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:330,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:330,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:332,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:333,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:342,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:344,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:344,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:348,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:352,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:352,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:356,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:356,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:359,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:360,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:362,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 255
    functionDepth: 4
    functionLinenumber: 255
    functionLinenumberEnd: 363
    functionName: test_message_header_parser_long_lines
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - strlen
    - message_parse_header_deinit
    - test_message_header_parser_long_lines_str
    - test_end
    - test_istream_create
    - message_parse_header_next
    - test_assert
    - i_stream_unref
    - message_parse_header_init
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_parser_long_lines(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:372,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:374,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:375,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:376,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:376,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:377,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:378,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:383,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:383,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:384,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:385,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:386,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:387,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 365
    functionDepth: 3
    functionLinenumber: 365
    functionLinenumberEnd: 388
    functionName: test_message_header_parser_extra_cr_in_eoh
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - message_parse_header_deinit
    - test_end
    - test_istream_create
    - message_parse_header_next
    - test_assert
    - i_stream_unref
    - message_parse_header_init
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_parser_extra_cr_in_eoh(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:397,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:399,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:400,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:401,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:401,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:402,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:403,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:403,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:403,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:406,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:406,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:407,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:408,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:409,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 411
    functionName: test_message_header_parser_no_eoh
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - message_header_strdup
    - test_assert_strcmp
    - message_parse_header_deinit
    - test_end
    - pool_datastack_create
    - test_istream_create
    - message_parse_header_next
    - test_assert
    - i_stream_unref
    - message_parse_header_init
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_parser_no_eoh(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:420,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:422,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:423,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:424,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:424,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:425,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:426,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:426,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:427,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:427,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:427,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:430,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:430,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:431,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:432,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:433,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 413
    functionDepth: 3
    functionLinenumber: 413
    functionLinenumberEnd: 435
    functionName: test_message_header_parser_nul
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - message_header_strdup
    - test_assert_strcmp
    - message_parse_header_init
    - message_parse_header_deinit
    - test_end
    - pool_datastack_create
    - test_istream_create_data
    - test_assert
    - memcmp
    - message_parse_header_next
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_header_parser_nul(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:443,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:445,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:446,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:448,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:448,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:452,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:452,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:457,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:457,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:460,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:461,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:463,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 464
    functionName: test_message_header_parser_extra_crlf_in_name
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - message_parse_header_init
    - message_parse_header_deinit
    - test_end
    - test_istream_create_data
    - test_assert
    - i_stream_unref
    - message_parse_header_next
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_parser_extra_crlf_in_name(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - line
    - ','
    - expected
    - ','
    - actual
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 470
    functionName: assert_parsed_field
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert_parsed_field(line, expected, actual, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - line
    - ','
    - exp_name
    - ','
    - exp_value
    - ','
    - exp_full
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 479
    functionName: assert_parse_line
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert_parse_line(line, exp_name, exp_value, exp_full)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:491,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:493,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:494,1
    - Dst: message_parse_header_set_limit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:495,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:497,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:498,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:499,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:500,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:501,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:502,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:503,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:503,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:505,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:506,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 508
    functionName: test_message_header_truncation_clean_oneline
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - test_begin
    - message_parse_header_deinit
    - test_end
    - test_istream_create_data
    - message_parse_header_next
    - test_assert
    - i_stream_unref
    - message_parse_header_init
    - assert_parse_line
    - message_parse_header_set_limit
    linkageType: ''
    returnType: void
    signature: void test_message_header_truncation_clean_oneline(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:512,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:514,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:515,1
    - Dst: message_parse_header_set_limit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:516,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:518,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:519,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:520,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:521,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:522,1
    - Dst: assert_parse_line
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:523,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:524,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:524,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:526,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:527,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 510
    functionDepth: 3
    functionLinenumber: 510
    functionLinenumberEnd: 529
    functionName: test_message_header_truncation_flag0
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 0
    functionsReached:
    - test_begin
    - message_parse_header_deinit
    - test_end
    - test_istream_create_data
    - message_parse_header_next
    - test_assert
    - i_stream_unref
    - message_parse_header_init
    - assert_parse_line
    - message_parse_header_set_limit
    linkageType: ''
    returnType: void
    signature: void test_message_header_truncation_flag0(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-header-parser.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 531
    functionDepth: 7
    functionLinenumber: 531
    functionLinenumberEnd: 546
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-parser.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:61,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:65,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:66,1
    - Dst: mail_html2text_init
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:67,1
    - Dst: mail_html2text_more
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:70,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:72,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:72,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:72,1
    - Dst: mail_html2text_deinit
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:73,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:74,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:79,1
    - Dst: mail_html2text_init
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:80,1
    - Dst: mail_html2text_more
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:81,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:82,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:83,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:83,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:83,1
    - Dst: mail_html2text_deinit
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:84,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 59
    functionDepth: 5
    functionLinenumber: 59
    functionLinenumberEnd: 88
    functionName: test_mail_html2text
    functionSourceFile: /src/dovecot/src/lib-mail/test-mail-html2text.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - strlen
    - mail_html2text_deinit
    - test_end
    - mail_html2text_more
    - mail_html2text_init
    - str_truncate
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_html2text(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:92,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:95,1
    - Dst: mail_html2text_init
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:100,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:102,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:102,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:103,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:103,1
    - Dst: mail_html2text_more
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:104,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:104,1
    - Dst: mail_html2text_deinit
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:106,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:107,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 90
    functionDepth: 5
    functionLinenumber: 90
    functionLinenumberEnd: 110
    functionName: test_mail_html2text_random
    functionSourceFile: /src/dovecot/src/lib-mail/test-mail-html2text.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - mail_html2text_deinit
    - test_end
    - mail_html2text_init
    - i_rand_limit
    - mail_html2text_more
    - str_truncate
    - i_rand_minmax
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_html2text_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-mail-html2text.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 112
    functionDepth: 7
    functionLinenumber: 112
    functionLinenumberEnd: 120
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-mail-html2text.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_create_temp_fd
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: test_open_temp_fd_callback
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - test_create_temp_fd
    linkageType: ''
    returnType: void
    signature: void test_open_temp_fd_callback(void *context ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:138,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:139,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:140,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:146,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:146,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:148,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:149,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - info
    - output_r
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct istream_attachment_info*
    - struct ostream**
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 152
    functionName: test_open_attachment_ostream
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - o_stream_seek
    - i_unreached
    - buffer_create_dynamic
    - strlen
    - test_assert
    - array_is_created
    - o_stream_create_buffer
    linkageType: ''
    returnType: int
    signature: "int test_open_attachment_ostream(struct istream_attachment_info *info,\n\t\t\t\t\tstruct
      ostream **output_r,\n\t\t\t\t\tconst char **error_r ATTR_UNUSED,\n\t\t\t\t\tvoid
      *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    - ATTR_UNUSED
    argTypes:
    - struct istream_attachment_info*
    - struct ostream**
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 162
    functionName: test_open_attachment_ostream_error
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_open_attachment_ostream_error(struct istream_attachment_info
      *info ATTR_UNUSED,\n\t\t\t\t   struct ostream **output_r ATTR_UNUSED,\n\t\t\t\t
      \  const char **error_r,\n\t\t\t\t   void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:170,1
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:172,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:175,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:176,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - output
    - success
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct ostream*
    - bool
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 179
    functionName: test_close_attachment_ostream
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - o_stream_finish
    - array_back_modifiable
    - i_assert
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int test_close_attachment_ostream(struct ostream *output, bool success,\n\t\t\t\t\t
      const char **error_r ATTR_UNUSED,\n\t\t\t\t\t void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_abort
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:188,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - output
    - success
    - error
    - ATTR_UNUSED
    argTypes:
    - struct ostream*
    - bool
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 191
    functionName: test_close_attachment_ostream_error
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - o_stream_destroy
    - o_stream_abort
    linkageType: ''
    returnType: int
    signature: "int test_close_attachment_ostream_error(struct ostream *output,\n\t\t\t\t
      \   bool success, const char **error,\n\t\t\t\t    void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: istream_attachment_connector_begin
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:203,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:204,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:205,1
    - Dst: istream_attachment_connector_add
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:206,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:209,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:210,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:212,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:216,1
    - Dst: istream_attachment_connector_finish
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - base_input
    - msg_size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 218
    functionName: test_build_original_istream
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - i_assert
    - istream_attachment_connector_finish
    - i_unreached
    - istream_attachment_connector_begin
    - array_foreach
    - i_stream_unref
    - istream_attachment_connector_add
    - i_stream_create_from_data
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      test_build_original_istream(struct istream *base_input, uoff_t msg_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:225,1
    - Dst: hash_format_init
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:231,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - set_r
    argTypes:
    - struct istream_attachment_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 233
    functionName: get_istream_attachment_settings
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - i_zero
    - hash_format_init
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void get_istream_attachment_settings(struct istream_attachment_settings
      *set_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:248,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:249,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:250,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:251,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:252,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:254,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:256,1
    - Dst: get_istream_attachment_settings
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:259,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:261,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:262,1
    - Dst: i_stream_create_attachment_extractor
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:263,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:264,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:265,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:266,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:267,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:268,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:270,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:274,1
    - Dst: test_build_original_istream
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:275,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:276,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:278,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:279,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:280,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:281,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:283,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:284,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:285,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:287,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:296,1
    - Dst: test_build_original_istream
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:297,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:299,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:300,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:301,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:302,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:303,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:306,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:307,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:308,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:309,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 51
    argCount: 1
    argNames:
    - file_input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 311
    functionName: test_input_stream
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - i_stream_create_crlf
    - test_assert_idx
    - buffer_create_dynamic
    - get_istream_attachment_settings
    - i_stream_seek
    - test_assert
    - i_stream_create_from_data
    - i_stream_create_attachment_extractor
    - buffer_append
    - i_stream_skip
    - buffer_free
    - i_stream_read_more
    - array_free
    - sha1_init
    - sha1_result
    - memcmp
    - i_stream_unref
    - array_is_created
    - sha1_loop
    - test_build_original_istream
    linkageType: ''
    returnType: int
    signature: int test_input_stream(struct istream *file_input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:321,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:322,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:323,1
    - Dst: get_istream_attachment_settings
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:325,1
    - Dst: i_stream_create_attachment_extractor
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:326,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:329,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:330,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:331,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:333,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:334,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:335,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:337,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:338,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:339,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:342,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:344,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:344,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:345,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:345,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:346,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:347,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:348,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:350,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:351,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:352,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:353,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 313
    functionDepth: 3
    functionLinenumber: 313
    functionLinenumberEnd: 354
    functionName: test_istream_attachment
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_istream_set_allow_eof
    - i_stream_get_data
    - array_is_created
    - get_istream_attachment_settings
    - test_end
    - i_stream_read
    - test_istream_create_data
    - test_assert
    - memcmp
    - array_free
    - buffer_free
    - test_istream_set_size
    - i_stream_create_attachment_extractor
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_attachment(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:358,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:367,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:368,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:368,1
    - Dst: get_istream_attachment_settings
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:370,1
    - Dst: i_stream_create_attachment_extractor
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:375,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:377,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:379,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:383,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:385,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:386,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:387,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:391,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:392,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:393,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:394,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:395,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:398,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:399,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:400,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:402,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:403,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:404,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - body
    - err_type
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 406
    functionName: test_istream_attachment_extractor_one
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - strlen
    - i_stream_get_data
    - array_is_created
    - get_istream_attachment_settings
    - i_strconcat
    - test_istream_create_data
    - test_assert
    - memcmp
    - array_free
    - buffer_free
    - i_stream_read
    - i_stream_create_attachment_extractor
    - i_stream_unref
    linkageType: ''
    returnType: bool
    signature: bool test_istream_attachment_extractor_one(const char *body, int err_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:412,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:413,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:414,1
    - Dst: test_istream_attachment_extractor_one
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:414,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:415,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:416,1
    - Dst: test_istream_attachment_extractor_one
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:416,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 408
    functionDepth: 3
    functionLinenumber: 408
    functionLinenumberEnd: 418
    functionName: test_istream_attachment_extractor
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_assert
    - test_istream_attachment_extractor_one
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_attachment_extractor(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:424,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:426,1
    - Dst: test_istream_attachment_extractor_one
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:427,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:428,1
    - Dst: test_istream_attachment_extractor_one
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:429,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:431,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 432
    functionName: test_istream_attachment_extractor_error
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_istream_attachment_extractor_one
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_attachment_extractor_error(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:438,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:440,1
    - Dst: test_input_stream
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:440,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:441,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 434
    functionDepth: 5
    functionLinenumber: 434
    functionLinenumberEnd: 443
    functionName: test_istream_attachment_connector
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_input_stream
    - test_assert
    - i_stream_unref
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_attachment_connector(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:450,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:452,1
    - Dst: test_input_stream
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:453,1
    - Dst: fprintf
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:454,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:458,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 445
    functionDepth: 5
    functionLinenumber: 445
    functionLinenumberEnd: 462
    functionName: test_input_file
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 0
    functionsReached:
    - lib_init
    - fprintf
    - lib_deinit
    - i_stream_create_file
    - test_input_stream
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int test_input_file(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_input_file
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:474,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-istream-attachment.c:476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 464
    functionDepth: 7
    functionLinenumber: 464
    functionLinenumberEnd: 477
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-attachment.c
    functionUses: 7
    functionsReached:
    - test_input_file
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - data
    - size
    - last_comment
    argTypes:
    - struct rfc822_parser_context*
    - unsigned char*
    - size_t
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: rfc822_parser_init
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 20
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void rfc822_parser_init(struct rfc822_parser_context *ctx,\n\t\t\tconst
      unsigned char *data, size_t size,\n\t\t\tstring_t *last_comment)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:71,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:74,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:82,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:84,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:95,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:109,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:126,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 51
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct rfc822_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 136
    functionName: rfc822_skip_comment
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 2
    functionsReached:
    - str_append
    - str_append_data
    - i_assert
    - str_truncate
    linkageType: ''
    returnType: int
    signature: int rfc822_skip_comment(struct rfc822_parser_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_skip_comment
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:150,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct rfc822_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 154
    functionName: rfc822_skip_lwsp
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 15
    functionsReached:
    - rfc822_skip_comment
    linkageType: ''
    returnType: int
    signature: int rfc822_skip_lwsp(struct rfc822_parser_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:165,1
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:169,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:172,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:173,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:176,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 178
    functionName: rfc822_parse_atom
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 3
    functionsReached:
    - rfc822_skip_lwsp
    - str_append_data
    - IS_ATEXT
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_atom(struct rfc822_parser_context *ctx, string_t *str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:194,1
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:198,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:205,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:207,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:214,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:221,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:222,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 224
    functionName: rfc822_parse_dot_atom
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 3
    functionsReached:
    - rfc822_skip_lwsp
    - str_append_c
    - str_append_data
    - i_assert
    - IS_ATEXT
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_dot_atom(struct rfc822_parser_context *ctx, string_t
      *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_ATEXT_NON_TSPECIAL
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:231,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:234,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:235,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:238,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 240
    functionName: rfc822_parse_mime_token
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 3
    functionsReached:
    - rfc822_skip_lwsp
    - IS_ATEXT_NON_TSPECIAL
    - str_append_data
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_mime_token(struct rfc822_parser_context *ctx, string_t
      *str)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:247,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:248,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:255,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:256,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:261,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:263,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:269,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:285,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 242
    functionDepth: 3
    functionLinenumber: 242
    functionLinenumberEnd: 293
    functionName: rfc822_parse_quoted_string
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 3
    functionsReached:
    - str_append
    - str_append_data
    - i_assert
    - rfc822_skip_lwsp
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_quoted_string(struct rfc822_parser_context *ctx, string_t
      *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:309,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:312,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:313,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:316,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 318
    functionName: rfc822_parse_atom_or_dot
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - str_append_data
    - IS_ATEXT
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_atom_or_dot(struct rfc822_parser_context *ctx, string_t
      *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parse_quoted_string
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:337,1
    - Dst: rfc822_parse_atom_or_dot
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:339,1
    - Dst: IS_ATEXT
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:344,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:347,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:349,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 320
    functionDepth: 4
    functionLinenumber: 320
    functionLinenumberEnd: 350
    functionName: rfc822_parse_phrase
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 3
    functionsReached:
    - rfc822_skip_lwsp
    - rfc822_parse_atom_or_dot
    - str_append_c
    - rfc822_parse_quoted_string
    - IS_ATEXT
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_phrase(struct rfc822_parser_context *ctx, string_t
      *str)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:366,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:367,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:373,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:374,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:382,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:384,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:390,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:404,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 352
    functionDepth: 3
    functionLinenumber: 352
    functionLinenumberEnd: 414
    functionName: rfc822_parse_domain_literal
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_data
    - i_assert
    - rfc822_skip_lwsp
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_domain_literal(struct rfc822_parser_context *ctx,
      string_t *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:418,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:420,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:424,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:427,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:428,1
    - Dst: punycode_decode
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:429,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:431,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:433,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:436,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:441,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - input
    - len
    - result
    argTypes:
    - char*
    - size_t
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 442
    functionName: rfc822_decode_punycode
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 1
    functionsReached:
    - strchr
    - t_str_new
    - str_append_c
    - str_begins
    - str_truncate
    - punycode_decode
    - str_append_data
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: void rfc822_decode_punycode(const char *input, size_t len, string_t
      *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:451,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:452,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:455,1
    - Dst: rfc822_parse_domain_literal
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:459,1
    - Dst: rfc822_parse_dot_atom
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:461,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:464,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:465,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:466,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:466,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:467,1
    - Dst: rfc822_decode_punycode
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:468,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:468,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:469,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:470,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 444
    functionDepth: 4
    functionLinenumber: 444
    functionLinenumberEnd: 475
    functionName: rfc822_parse_domain
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 3
    functionsReached:
    - rfc822_skip_lwsp
    - t_str_new
    - str_data
    - str_len
    - str_append_str
    - strlen
    - rfc822_decode_punycode
    - t_strndup
    - rfc822_parse_domain_literal
    - str_truncate
    - rfc822_parse_dot_atom
    - i_assert
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_domain(struct rfc822_parser_context *ctx, string_t
      *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:480,1
    - Dst: rfc822_parse_mime_token
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:484,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:490,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:494,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:495,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:498,1
    - Dst: rfc822_parse_mime_token
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:505,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:508,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct rfc822_parser_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 477
    functionDepth: 4
    functionLinenumber: 477
    functionLinenumberEnd: 512
    functionName: rfc822_parse_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 5
    functionsReached:
    - rfc822_skip_lwsp
    - str_append_c
    - str_truncate
    - rfc822_parse_mime_token
    linkageType: ''
    returnType: int
    signature: int rfc822_parse_content_type(struct rfc822_parser_context *ctx, string_t
      *str)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:526,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:534,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:537,1
    - Dst: rfc822_parse_mime_token
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:538,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:545,1
    - Dst: rfc822_parse_quoted_string
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:548,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:555,1
    - Dst: rfc822_parse_mime_token
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:559,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/rfc822-parser.c:562,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - key_r
    - value
    argTypes:
    - struct rfc822_parser_context*
    - char**
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 514
    functionDepth: 4
    functionLinenumber: 514
    functionLinenumberEnd: 564
    functionName: rfc822_parse_content_param
    functionSourceFile: /src/dovecot/src/lib-mail/rfc822-parser.c
    functionUses: 3
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - str_append_c
    - rfc822_parse_mime_token
    - rfc822_parse_quoted_string
    - str_truncate
    linkageType: ''
    returnType: int
    signature: "int rfc822_parse_content_param(struct rfc822_parser_context *ctx,\n\t\t\t
      \      const char **key_r, string_t *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qp_decoder_deinit
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:23,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:24,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:26,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 27
    functionName: i_stream_qp_decoder_close
    functionSourceFile: /src/dovecot/src/lib-mail/istream-qp-decoder.c
    functionUses: 0
    functionsReached:
    - qp_decoder_deinit
    - buffer_free
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_qp_decoder_close(struct iostream_private *stream,\n\t\t\t\t
      \     bool close_parent)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:38,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:42,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:43,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:50,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:63,1
    - Dst: i_stream_read_more_memarea
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:71,1
    - Dst: qp_decoder_finish
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:80,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:83,1
    - Dst: qp_decoder_more
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:88,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:90,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:91,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:93,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:93,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:97,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 29
    functionDepth: 3
    functionLinenumber: 29
    functionLinenumberEnd: 99
    functionName: i_stream_qp_decoder_read
    functionSourceFile: /src/dovecot/src/lib-mail/istream-qp-decoder.c
    functionUses: 0
    functionsReached:
    - qp_decoder_finish
    - io_stream_set_error
    - qp_decoder_more
    - I_MIN
    - i_stream_get_max_buffer_size
    - i_stream_skip
    - buffer_delete
    - binary_to_hex
    - i_assert
    - i_stream_read_more_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_qp_decoder_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:115,1
    - Dst: qp_decoder_finish
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:116,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:117,1
    - Dst: i_stream_default_seek_nonseekable
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 120
    functionName: i_stream_qp_decoder_seek
    functionSourceFile: /src/dovecot/src/lib-mail/istream-qp-decoder.c
    functionUses: 0
    functionsReached:
    - i_stream_default_seek_nonseekable
    - i_stream_seek
    - qp_decoder_finish
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: "void i_stream_qp_decoder_seek(struct istream_private *stream,\n\t\t\t
      \    uoff_t v_offset, bool mark)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:126,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:128,1
    - Dst: qp_decoder_init
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:129,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:138,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-mail/istream-qp-decoder.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 140
    functionName: i_stream_create_qp_decoder
    functionSourceFile: /src/dovecot/src/lib-mail/istream-qp-decoder.c
    functionUses: 1
    functionsReached:
    - i_stream_get_fd
    - buffer_create_dynamic
    - qp_decoder_init
    - i_new
    - i_stream_create
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_qp_decoder(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:17,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:18,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:19,1
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:21,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - pool
    - input
    - set
    - parse_data
    - parts_r
    argTypes:
    - pool_t
    - struct istream*
    - struct message_parser_settings*
    - bool
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 9
    functionDepth: 5
    functionLinenumber: 9
    functionLinenumberEnd: 26
    functionName: message_parse_stream
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 17
    functionsReached:
    - i_zero
    - message_part_data_parse_from_header
    - message_parser_parse_next_block
    - test_assert
    - message_parser_deinit
    - message_parser_init
    linkageType: ''
    returnType: int
    signature: "int message_parse_stream(pool_t pool, struct istream *input,\n\t\t\t\tconst
      struct message_parser_settings *set,\n\t\t\t\tbool parse_data, struct message_part
      **parts_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:44,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:46,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:47,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:49,1
    - Dst: message_part_is_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:53,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:56,1
    - Dst: message_part_data_get_filename
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:64,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:65,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:68,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:69,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - test_name
    - input_msg_part
    - expected_is_attach
    - expected_filename
    argTypes:
    - char[]
    - char[]
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 28
    functionDepth: 4
    functionLinenumber: 28
    functionLinenumberEnd: 72
    functionName: test_message_part_attachment
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - test_assert_strcmp
    - pool_unref
    - test_end
    - test_istream_create
    - message_part_data_get_filename
    - test_assert
    - i_stream_unref
    - message_part_is_attachment
    - i_debug
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_message_part_attachment(const char test_name[],\n\t\t\t\t\t
      const char input_msg_part[],\n\t\t\t\t\t bool expected_is_attach,\n\t\t\t\t\t
      const char *expected_filename)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: test_message_inline_with_cd_filename_star
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_inline_with_cd_filename_star(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 5
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: test_message_inline_with_cd_filename
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_inline_with_cd_filename(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 100
    functionDepth: 5
    functionLinenumber: 100
    functionLinenumberEnd: 111
    functionName: test_message_inline_with_ct_name_star
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_inline_with_ct_name_star(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 113
    functionDepth: 5
    functionLinenumber: 113
    functionLinenumberEnd: 124
    functionName: test_message_inline_with_ct_name
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_inline_with_ct_name(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 5
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: test_message_inline_without_filename
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_inline_without_filename(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 139
    functionDepth: 5
    functionLinenumber: 139
    functionLinenumberEnd: 150
    functionName: test_message_attachment_without_filename
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_attachment_without_filename(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 152
    functionDepth: 5
    functionLinenumber: 152
    functionLinenumberEnd: 163
    functionName: test_message_attachment_with_cd_filename_star
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_attachment_with_cd_filename_star(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 166
    functionDepth: 5
    functionLinenumber: 166
    functionLinenumberEnd: 177
    functionName: test_message_attachment_with_cd_filename
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_attachment_with_cd_filename(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 179
    functionDepth: 5
    functionLinenumber: 179
    functionLinenumberEnd: 188
    functionName: test_message_without_attachment
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_without_attachment(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_message_part_attachment
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 5
    functionLinenumber: 190
    functionLinenumberEnd: 202
    functionName: test_message_attachment_with_ct_name
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 0
    functionsReached:
    - test_message_part_attachment
    linkageType: ''
    returnType: void
    signature: void test_message_attachment_with_ct_name(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-part-data.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 204
    functionDepth: 7
    functionLinenumber: 204
    functionLinenumberEnd: 220
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-data.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:286,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:290,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:291,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:292,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:293,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:297,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:298,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:298,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:299,1
    - Dst: message_snippet_generate
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:299,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:300,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:300,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:301,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 304
    functionName: test_message_snippet
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-snippet.c
    functionUses: 0
    functionsReached:
    - message_snippet_generate
    - t_str_new
    - str_c
    - test_assert_idx
    - I_MIN
    - strlen
    - test_istream_set_max_buffer_size
    - test_end
    - test_istream_create
    - str_truncate
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_message_snippet(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:309,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:312,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:314,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:315,1
    - Dst: message_snippet_generate
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:315,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:316,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:316,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:317,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 306
    functionDepth: 3
    functionLinenumber: 306
    functionLinenumberEnd: 319
    functionName: test_message_snippet_nuls
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-snippet.c
    functionUses: 0
    functionsReached:
    - message_snippet_generate
    - t_str_new
    - str_c
    - test_assert_strcmp
    - test_end
    - test_assert
    - i_stream_create_from_data
    - test_begin
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_message_snippet_nuls(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-snippet.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 321
    functionDepth: 7
    functionLinenumber: 321
    functionLinenumberEnd: 329
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-snippet.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:34,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:35,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:36,1
    - Dst: quoted_printable_q_decode
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:37,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:37,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:39,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:39,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:40,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 43
    functionName: test_quoted_printable_q_decode
    functionSourceFile: /src/dovecot/src/lib-mail/test-quoted-printable.c
    functionUses: 0
    functionsReached:
    - str_c
    - strlen
    - t_buffer_create
    - buffer_set_used_size
    - test_end
    - test_assert_strcmp_idx
    - quoted_printable_q_decode
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_quoted_printable_q_decode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-quoted-printable.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 7
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-quoted-printable.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:142,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:143,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:144,1
    - Dst: qp_decoder_init
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:146,1
    - Dst: qp_decoder_more
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:152,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:152,1
    - Dst: qp_decoder_finish
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:154,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:155,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:158,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:159,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:160,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:160,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:163,1
    - Dst: qp_decoder_more
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:167,1
    - Dst: qp_decoder_finish
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:170,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:172,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:173,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:173,1
    - Dst: qp_decoder_deinit
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:175,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:176,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:178,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 179
    functionName: test_qp_decoder
    functionSourceFile: /src/dovecot/src/lib-mail/test-qp-decoder.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - qp_decoder_more
    - qp_decoder_finish
    - test_assert_idx
    - strlen
    - test_end
    - qp_decoder_init
    - str_truncate
    - qp_decoder_deinit
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_qp_decoder(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-qp-decoder.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 181
    functionDepth: 7
    functionLinenumber: 181
    functionLinenumberEnd: 188
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-qp-decoder.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 16
    functionName: preparsed_parse_eof
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_eof(struct message_parser_ctx *ctx ATTR_UNUSED,\n\t\t\t
      \      struct message_block *block_r ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 48
    functionName: preparsed_skip_to_next
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void preparsed_skip_to_next(struct message_parser_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:53,1
    - Dst: preparsed_skip_to_next
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:56,1
    - Dst: struct message_parser_ctx*::parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 58
    functionName: preparsed_parse_body_finish
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - struct message_parser_ctx*::parse_next_block
    - preparsed_skip_to_next
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_body_finish(struct message_parser_ctx *ctx,\n\t\t\t\t
      \      struct message_block *block_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:63,1
    - Dst: struct message_parser_ctx*::parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 69
    functionName: preparsed_parse_prologue_finish
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - struct message_parser_ctx*::parse_next_block
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_prologue_finish(struct message_parser_ctx *ctx,\n\t\t\t\t\t
      \  struct message_block *block_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 89
    functionName: preparsed_parse_body_more
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - message_parser_read_more
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_body_more(struct message_parser_ctx *ctx,\n\t\t\t\t
      \    struct message_block *block_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:99,1
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:102,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 152
    functionName: preparsed_parse_prologue_more
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - i_assert
    - message_parser_read_more
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_prologue_more(struct message_parser_ctx *ctx,\n\t\t\t\t\t
      struct message_block *block_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 172
    functionName: preparsed_parse_epilogue_more
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - message_parser_read_more
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_epilogue_more(struct message_parser_ctx *ctx,\n\t\t\t\t\t
      struct message_block *block_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_read_more
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:190,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:212,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 228
    functionName: preparsed_parse_epilogue_boundary
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - memchr
    - message_parser_read_more
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_epilogue_boundary(struct message_parser_ctx *ctx,\n\t\t\t\t\t
      \    struct message_block *block_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:241,1
    - Dst: struct message_parser_ctx*::parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 251
    functionName: preparsed_parse_body_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - struct message_parser_ctx*::parse_next_block
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_body_init(struct message_parser_ctx *ctx,\n\t\t\t\t
      \    struct message_block *block_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:268,1
    - Dst: struct message_parser_ctx*::parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 272
    functionName: preparsed_parse_epilogue_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - struct message_parser_ctx*::parse_next_block
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_epilogue_init(struct message_parser_ctx *ctx,\n\t\t\t\t\t
      struct message_block *block_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: preparsed_skip_to_next
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:288,1
    - Dst: struct message_parser_ctx*::parse_next_block
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:290,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 291
    functionName: preparsed_parse_finish_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - struct message_parser_ctx*::parse_next_block
    - preparsed_skip_to_next
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_finish_header(struct message_parser_ctx *ctx,\n\t\t\t\t\t
      struct message_block *block_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:299,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:301,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:318,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 325
    functionName: preparsed_parse_next_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - i_assert
    - message_parse_header_next
    - i_stream_get_data_size
    - message_parse_header_deinit
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_next_header(struct message_parser_ctx *ctx,\n\t\t\t\t
      \      struct message_block *block_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:332,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:334,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:335,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:342,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:344,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:345,1
    - Dst: preparsed_parse_next_header
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - block_r
    argTypes:
    - struct message_parser_ctx*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 327
    functionDepth: 3
    functionLinenumber: 327
    functionLinenumberEnd: 349
    functionName: preparsed_parse_next_header_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 0
    functionsReached:
    - i_stream_create_limit
    - message_parse_header_init
    - i_stream_skip
    - preparsed_parse_next_header
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int preparsed_parse_next_header_init(struct message_parser_ctx *ctx,\n\t\t\t\t\t
      \   struct message_block *block_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:358,1
    - Dst: message_parser_init_int
      Src: /src/dovecot/src/lib-mail/message-parser-from-parts.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - parts
    - input
    - set
    argTypes:
    - struct message_part*
    - struct istream*
    - struct message_parser_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 365
    functionName: message_parser_init_from_parts
    functionSourceFile: /src/dovecot/src/lib-mail/message-parser-from-parts.c
    functionUses: 2
    functionsReached:
    - i_assert
    - message_parser_init_int
    linkageType: ''
    returnType: struct message_parser_ctx
    signature: "struct message_parser_ctx *\nmessage_parser_init_from_parts(struct
      message_part *parts,\n\t\t\t       struct istream *input,\n\t\t\t       const
      struct message_parser_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:20,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:22,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:23,1
    - Dst: memset
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:24,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:27,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:29,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:31,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:35,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:39,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:42,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:42,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:46,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:48,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:48,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:52,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:53,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:54,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:59,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:62,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:65,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:68,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:71,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:73,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:73,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:75,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 13
    functionDepth: 5
    functionLinenumber: 13
    functionLinenumberEnd: 78
    functionName: test_message_decoder
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strlen
    - test_end
    - message_decoder_init
    - message_decoder_deinit
    - test_assert
    - message_decoder_decode_next_block
    - memcmp
    - memset
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_decoder(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:108,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:111,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:113,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:114,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:114,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:115,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:117,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:120,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:121,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:122,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:123,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:130,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:133,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:133,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:135,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:137,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:138,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:139,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 80
    functionDepth: 5
    functionLinenumber: 80
    functionLinenumberEnd: 140
    functionName: test_message_decoder_multipart
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_data
    - test_istream_set_allow_eof
    - message_parser_parse_next_block
    - test_assert_strcmp
    - test_end
    - message_decoder_init
    - pool_datastack_create
    - test_istream_create
    - message_decoder_deinit
    - message_decoder_decode_next_block
    - message_parser_init
    - test_assert
    - test_istream_set_size
    - message_parser_deinit
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_decoder_multipart(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:149,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:151,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:154,1
    - Dst: memset
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:155,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:159,1
    - Dst: message_decoder_current_content_type
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:159,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:162,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:164,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:168,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:171,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:172,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:172,1
    - Dst: message_decoder_current_content_type
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:172,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:179,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:179,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:182,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:182,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:183,1
    - Dst: message_decoder_current_content_type
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:183,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:188,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:190,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:190,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:193,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:194,1
    - Dst: message_decoder_current_content_type
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:194,1
    - Dst: message_decoder_decode_reset
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:198,1
    - Dst: message_decoder_current_content_type
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:198,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:200,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 142
    functionDepth: 5
    functionLinenumber: 142
    functionLinenumberEnd: 203
    functionName: test_message_decoder_current_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - strlen
    - message_decoder_current_content_type
    - message_decoder_decode_reset
    - message_decoder_init
    - test_end
    - message_decoder_deinit
    - test_assert
    - message_decoder_decode_next_block
    - memset
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_decoder_current_content_type(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:239,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:247,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:250,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:251,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:253,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:254,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:256,1
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:257,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:258,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:263,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:264,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:264,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:265,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:266,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:267,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:272,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:274,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:275,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:276,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:277,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:280,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:281,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:282,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:284,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:286,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:288,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:289,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:290,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:291,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 205
    functionDepth: 5
    functionLinenumber: 205
    functionLinenumberEnd: 292
    functionName: test_message_decoder_content_transfer_encoding
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_str_new
    - str_c
    - message_part_data_parse_from_header
    - message_parser_parse_next_block
    - test_assert_strcmp
    - pool_unref
    - test_end
    - message_decoder_init
    - test_istream_create_data
    - message_decoder_deinit
    - message_decoder_decode_next_block
    - message_parser_init
    - test_assert
    - str_append_data
    - message_parser_deinit
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_decoder_content_transfer_encoding(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:328,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:336,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:339,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:340,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:342,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:343,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:345,1
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:346,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:348,1
    - Dst: message_decoder_parse_cte
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:349,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:350,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:352,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:354,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:357,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:358,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:358,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:359,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:360,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:361,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:364,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:366,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:367,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:368,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:369,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:372,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:373,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:374,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:376,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:378,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:380,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:382,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:383,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:384,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:404,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:405,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:406,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:407,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:408,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:409,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:409,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:409,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:409,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:409,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:410,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:411,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:412,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:413,1
    - Dst: X10
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:413,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:414,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:417,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:418,1
    - Dst: message_decoder_parse_cte
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:418,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:421,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 294
    functionDepth: 5
    functionLinenumber: 294
    functionLinenumberEnd: 422
    functionName: test_message_decoder_invalid_content_transfer_encoding
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 0
    functionsReached:
    - str_c
    - test_assert_idx
    - pool_unref
    - X10
    - test_assert
    - message_parser_init
    - t_str_new
    - message_parser_parse_next_block
    - test_end
    - message_decoder_deinit
    - TEST_CASE
    - strcasecmp
    - test_assert_strcmp
    - message_decoder_decode_next_block
    - str_append_data
    - N_ELEMENTS
    - pool_alloconly_create
    - message_decoder_parse_cte
    - message_part_data_parse_from_header
    - message_decoder_init
    - test_istream_create_data
    - i_stream_unref
    - message_parser_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_decoder_invalid_content_transfer_encoding(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 387
    functionName: X10
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: X10(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - value
    - ','
    - result
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 399
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(value, result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:459,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:467,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:470,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:471,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:473,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:474,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:476,1
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:477,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:478,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:480,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:483,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:484,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:484,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:485,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:486,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:487,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:489,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:490,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:491,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 424
    functionDepth: 5
    functionLinenumber: 424
    functionLinenumberEnd: 492
    functionName: test_message_decoder_charset
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_str_new
    - str_c
    - message_part_data_parse_from_header
    - message_parser_parse_next_block
    - test_assert_strcmp
    - pool_unref
    - test_end
    - message_decoder_init
    - test_istream_create_data
    - message_decoder_deinit
    - message_decoder_decode_next_block
    - message_parser_init
    - test_assert
    - str_append_data
    - message_parser_deinit
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_decoder_charset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-decoder.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 494
    functionDepth: 7
    functionLinenumber: 494
    functionLinenumberEnd: 506
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-decoder.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:30,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:32,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:33,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:34,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:35,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:36,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:37,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:37,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 12
    functionDepth: 4
    functionLinenumber: 12
    functionLinenumberEnd: 40
    functionName: test_message_header_decode
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-decode.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - message_header_decode_utf8
    - strlen
    - test_end
    - str_truncate
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_decode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:45,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:47,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:48,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: test_message_header_decode_read_overflow
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-decode.c
    functionUses: 0
    functionsReached:
    - test_end
    - message_header_decode_utf8
    - t_str_new
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_decode_read_overflow(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:54,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:55,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:65,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:71,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:76,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - encoded
    - test_idx
    argTypes:
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 77
    functionName: check_encoded
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-decode.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - str_data
    - str_len
    linkageType: ''
    returnType: void
    signature: void check_encoded(string_t *encoded, unsigned int test_idx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:87,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:88,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:92,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:104,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:112,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:114,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:122,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:124,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:129,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:134,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - inbuf
    - inbuf_len
    - out
    - test_idx
    argTypes:
    - unsigned char*
    - size_t
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 135
    functionName: check_encode_decode_result
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-decode.c
    functionUses: 0
    functionsReached:
    - str_data
    - test_assert_idx
    - str_len
    - uni_utf8_get_char_n
    - test_has_failed
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void check_encode_decode_result(const unsigned char *inbuf, size_t
      inbuf_len,\n\t\t\t   string_t *out, unsigned int test_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:143,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:145,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:146,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:150,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:152,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:154,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:155,1
    - Dst: message_header_encode_q
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:158,1
    - Dst: check_encoded
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:159,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:160,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:162,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:163,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:166,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:167,1
    - Dst: message_header_encode_b
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:169,1
    - Dst: check_encoded
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:170,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:171,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:173,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:174,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:176,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:178,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:181,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:182,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:184,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:185,1
    - Dst: message_header_encode_q
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:188,1
    - Dst: check_encoded
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:189,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:190,1
    - Dst: check_encode_decode_result
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:192,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:195,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:196,1
    - Dst: message_header_encode_b
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:198,1
    - Dst: check_encoded
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:199,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:200,1
    - Dst: check_encode_decode_result
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:202,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 205
    functionName: test_message_header_decode_encode_random
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-decode.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - random_fill
    - test_assert_idx
    - message_header_encode_q
    - message_header_decode_utf8
    - test_end
    - check_encode_decode_result
    - str_truncate
    - i_rand_limit
    - check_encoded
    - memcmp
    - message_header_encode_b
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_decode_encode_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-header-decode.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 207
    functionDepth: 7
    functionLinenumber: 207
    functionLinenumberEnd: 216
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-decode.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/fuzz-message-parser.c:12,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/fuzz-message-parser.c:20,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/fuzz-message-parser.c:20,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/fuzz-message-parser.c:22,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/fuzz-message-parser.c:23,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/fuzz-message-parser.c:25,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/fuzz-message-parser.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 10
    functionDepth: 3
    functionLinenumber: 10
    functionLinenumberEnd: 27
    functionName: FUZZ_BEGIN_DATA
    functionSourceFile: /src/dovecot/src/lib-mail/fuzz-message-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - message_parser_parse_next_block
    - pool_datastack_create
    - test_istream_create_data
    - i_stream_unref
    - message_parser_deinit
    - message_parser_init
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_DATA(const unsigned char *data, size_t size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:26,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:32,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:34,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:36,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:43,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:44,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:46,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:47,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 51
    functionName: o_stream_dot_finish
    functionSourceFile: /src/dovecot/src/lib-mail/ostream-dot.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_buffer_avail_size
    - o_stream_send
    - o_stream_copy_error_from_parent
    - o_stream_flush
    - i_assert
    linkageType: ''
    returnType: int
    signature: int o_stream_dot_finish(struct ostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_dot_finish
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:59,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 64
    functionName: o_stream_dot_flush
    functionSourceFile: /src/dovecot/src/lib-mail/ostream-dot.c
    functionUses: 0
    functionsReached:
    - o_stream_flush_parent
    - o_stream_dot_finish
    linkageType: ''
    returnType: int
    signature: int o_stream_dot_flush(struct ostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:70,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:72,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: o_stream_dot_close
    functionSourceFile: /src/dovecot/src/lib-mail/ostream-dot.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: void o_stream_dot_close(struct iostream_private *stream, bool close_parent)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:83,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:90,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:92,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:97,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:102,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:104,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:113,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:121,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:122,1
    - Dst: i_memcspn
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:123,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:144,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:159,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:179,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:190,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:199,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:208,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:215,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:222,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:225,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:226,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:227,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:232,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 119
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 236
    functionName: o_stream_dot_sendv
    functionSourceFile: /src/dovecot/src/lib-mail/ostream-dot.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_buffer_avail_size
    - i_unreached
    - array_push_back
    - I_MIN
    - array_get
    - o_stream_sendv
    - i_memcspn
    - t_array_init
    - o_stream_copy_error_from_parent
    - o_stream_flush
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_dot_sendv(struct ostream_private *stream,\n\t\t    const
      struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:243,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:249,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:249,1
    - Dst: o_stream_set_finish_also_parent
      Src: /src/dovecot/src/lib-mail/ostream-dot.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - output
    - force_extra_crlf
    argTypes:
    - struct ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 255
    functionName: o_stream_create_dot
    functionSourceFile: /src/dovecot/src/lib-mail/ostream-dot.c
    functionUses: 3
    functionsReached:
    - o_stream_create
    - i_new
    - o_stream_set_finish_also_parent
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_dot(struct ostream *output, bool force_extra_crlf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:96,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:97,1
    - Dst: i_stream_create_binary_converter
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:98,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:101,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:102,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:103,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:105,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:106,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:107,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:109,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:110,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:111,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:112,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - mail_input
    - mail_input_len
    - mail_output
    - mail_output_len
    - idx
    argTypes:
    - char*
    - unsigned int
    - char*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 86
    functionDepth: 3
    functionLinenumber: 86
    functionLinenumberEnd: 114
    functionName: test_istream_binary_converter_test
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
    functionUses: 0
    functionsReached:
    - i_stream_create_binary_converter
    - test_assert_idx
    - test_istream_set_allow_eof
    - i_stream_get_data
    - i_stream_read
    - test_istream_create_data
    - memcmp
    - i_stream_unref
    - test_istream_set_size
    linkageType: ''
    returnType: void
    signature: "void test_istream_binary_converter_test(const char *mail_input, unsigned
      int mail_input_len,\n\t\t\t\t   const char *mail_output, unsigned int mail_output_len,\n\t\t\t\t
      \  unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:118,1
    - Dst: test_istream_binary_converter_test
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:119,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 4
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: test_istream_binary_converter_mime
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_begin
    - test_istream_binary_converter_test
    linkageType: ''
    returnType: void
    signature: void test_istream_binary_converter_mime(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:126,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:127,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:132,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:133,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:134,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:135,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:136,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:137,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:138,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:139,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:139,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:140,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:140,1
    - Dst: test_istream_binary_converter_test
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:142,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 124
    functionDepth: 4
    functionLinenumber: 124
    functionLinenumberEnd: 146
    functionName: test_istream_binary_converter_root
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - test_istream_binary_converter_test
    - strlen
    - t_buffer_create
    - buffer_set_used_size
    - base64_encode
    - test_end
    - CONST_PTR_OFFSET
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_binary_converter_root(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:150,1
    - Dst: test_istream_binary_converter_test
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:151,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 4
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: test_istream_binary_converter_root_nonbinary
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_begin
    - test_istream_binary_converter_test
    linkageType: ''
    returnType: void
    signature: void test_istream_binary_converter_root_nonbinary(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:165,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:167,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:170,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:171,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:172,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:173,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:174,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:176,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:177,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:180,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:181,1
    - Dst: i_stream_create_binary_converter
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:182,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:183,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:184,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:185,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:186,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:188,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:189,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:190,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:192,1
    - Dst: fprintf
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:193,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:198,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:199,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 201
    functionName: test_input_file
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
    functionUses: 1
    functionsReached:
    - sha1_result
    - i_stream_create_crlf
    - lib_init
    - i_stream_create_binary_converter
    - fprintf
    - lib_deinit
    - i_stream_create_file
    - i_stream_skip
    - i_stream_seek
    - memcmp
    - i_stream_unref
    - sha1_init
    - i_stream_read_more
    - sha1_loop
    linkageType: ''
    returnType: int
    signature: int test_input_file(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_input_file
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:212,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-istream-binary-converter.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 203
    functionDepth: 7
    functionLinenumber: 203
    functionLinenumberEnd: 215
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
    functionUses: 7
    functionsReached:
    - test_input_file
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:21,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:22,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:23,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - pool
    - input
    - set
    - parts_r
    argTypes:
    - pool_t
    - struct istream*
    - struct message_parser_settings*
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 27
    functionName: message_parse_stream
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    functionUses: 18
    functionsReached:
    - i_zero
    - message_parser_parse_next_block
    - test_assert
    - message_parser_deinit
    - message_parser_init
    linkageType: ''
    returnType: int
    signature: "int message_parse_stream(pool_t pool, struct istream *input,\n\t\t\t\tconst
      struct message_parser_settings *set,\n\t\t\t\tstruct message_part **parts_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:39,1
    - Dst: message_parser_init_from_parts
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:41,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:43,1
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:44,1
    - Dst: message_part_is_equal
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - input
    - parts
    argTypes:
    - struct istream*
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 29
    functionDepth: 4
    functionLinenumber: 29
    functionLinenumberEnd: 45
    functionName: test_parsed_parts
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    functionUses: 20
    functionsReached:
    - message_parser_deinit_from_parts
    - message_parser_init_from_parts
    - message_parser_parse_next_block
    - message_part_is_equal
    - i_stream_seek
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_parsed_parts(struct istream *input, struct message_part *parts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: TEST_CASE_DATA
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE_DATA(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:60,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:64,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:91,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:123,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:124,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:128,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:131,1
    - Dst: message_parse_stream
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:131,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:133,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:134,1
    - Dst: message_part_deserialize
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:137,1
    - Dst: test_parsed_parts
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:139,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:141,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:142,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:143,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 146
    functionName: test_message_serialize_deserialize
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - message_parse_stream
    - i_error
    - test_parsed_parts
    - buffer_create_dynamic
    - message_part_serialize
    - pool_unref
    - test_end
    - test_istream_create_data
    - TEST_CASE_DATA
    - test_assert
    - message_part_deserialize
    - N_ELEMENTS
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_serialize_deserialize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - data
    - ','
    - size
    - ','
    - expect_error
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(data, size, expect_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:154,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:157,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:158,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:161,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:164,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:167,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:171,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:172,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:173,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:175,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:179,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:180,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:181,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:183,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:185,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:186,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:187,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:189,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:190,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:191,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:200,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:201,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:202,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:204,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:205,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:211,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:213,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:214,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:215,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 152
    functionDepth: 3
    functionLinenumber: 152
    functionLinenumberEnd: 218
    functionName: test_message_deserialize_errors
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    functionUses: 0
    functionsReached:
    - i_zero
    - TEST_CASE
    - buffer_create_dynamic
    - message_part_serialize
    - buffer_set_used_size
    - test_end
    - pool_datastack_create
    - buffer_append_c
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_deserialize_errors(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:225,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:226,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:230,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:231,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:232,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:233,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:234,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:244,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:245,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:246,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 220
    functionDepth: 3
    functionLinenumber: 220
    functionLinenumberEnd: 252
    functionName: test_message_deserialize_fatals
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    functionUses: 0
    functionsReached:
    - i_zero
    - TEST_CASE
    - buffer_create_dynamic
    - message_part_serialize
    - buffer_set_used_size
    - test_end
    - pool_datastack_create
    - test_expect_fatal_string
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state test_message_deserialize_fatals(unsigned int
      stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run_with_fatals
      Src: /src/dovecot/src/lib-mail/test-message-part-serialize.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 254
    functionDepth: 7
    functionLinenumber: 254
    functionLinenumberEnd: 266
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    functionUses: 7
    functionsReached:
    - test_run_with_fatals
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-mail/mbox-from.c:27,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/mbox-from.c:33,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - msg
    - tm
    argTypes:
    - unsigned char*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 41
    functionName: mbox_parse_month
    functionSourceFile: /src/dovecot/src/lib-mail/mbox-from.c
    functionUses: 0
    functionsReached:
    - i_memcasecmp
    - memcmp
    linkageType: ''
    returnType: int
    signature: int mbox_parse_month(const unsigned char *msg, struct tm *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:45,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:45,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:46,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:46,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - tm
    argTypes:
    - unsigned char*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 52
    functionName: mbox_parse_year
    functionSourceFile: /src/dovecot/src/lib-mail/mbox-from.c
    functionUses: 0
    functionsReached:
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: int mbox_parse_year(const unsigned char *msg, struct tm *tm)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/mbox-from.c:103,1
    - Dst: mbox_parse_month
      Src: /src/dovecot/src/lib-mail/mbox-from.c:109,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:114,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:119,1
    - Dst: mbox_parse_month
      Src: /src/dovecot/src/lib-mail/mbox-from.c:127,1
    - Dst: mbox_parse_year
      Src: /src/dovecot/src/lib-mail/mbox-from.c:131,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:142,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:147,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:147,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:157,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:157,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:163,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:163,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:171,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:171,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:191,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:191,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:192,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:192,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:203,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:203,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:204,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:204,1
    - Dst: mbox_parse_year
      Src: /src/dovecot/src/lib-mail/mbox-from.c:215,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:223,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:223,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:224,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-mail/mbox-from.c:224,1
    - Dst: utc_mktime
      Src: /src/dovecot/src/lib-mail/mbox-from.c:232,1
    - Dst: mktime
      Src: /src/dovecot/src/lib-mail/mbox-from.c:241,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-mail/mbox-from.c:242,1
    - Dst: localtime
      Src: /src/dovecot/src/lib-mail/mbox-from.c:242,1
    - Dst: i_strdup_until
      Src: /src/dovecot/src/lib-mail/mbox-from.c:245,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 136
    argCount: 5
    argNames:
    - msg
    - size
    - time_r
    - tz_offset_r
    - sender_r
    argTypes:
    - unsigned char*
    - size_t
    - time_t*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 247
    functionName: mbox_from_parse
    functionSourceFile: /src/dovecot/src/lib-mail/mbox-from.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mbox_parse_year
    - utc_mktime
    - mbox_parse_month
    - i_isdigit
    - i_strdup_until
    - localtime
    - utc_offset
    - mktime
    linkageType: ''
    returnType: int
    signature: "int mbox_from_parse(const unsigned char *msg, size_t size,\n\t\t    time_t
      *time_r, int *tz_offset_r, char **sender_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/mbox-from.c:255,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/mbox-from.c:256,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/mbox-from.c:257,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/mbox-from.c:258,1
    - Dst: localtime
      Src: /src/dovecot/src/lib-mail/mbox-from.c:262,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/mbox-from.c:265,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:266,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/mbox-from.c:269,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:270,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:273,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:274,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:275,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:278,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:279,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:280,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:283,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:284,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:285,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:288,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:289,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:290,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:294,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:295,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:296,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:297,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:299,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/mbox-from.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 2
    argNames:
    - sender
    - timestamp
    argTypes:
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 301
    functionName: mbox_from_create
    functionSourceFile: /src/dovecot/src/lib-mail/mbox-from.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - localtime
    - str_append
    linkageType: ''
    returnType: char
    signature: char *mbox_from_create(const char *sender, time_t timestamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: TEST_CASE_DATA
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-search.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE_DATA(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:40,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:41,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:42,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-search.c:45,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:49,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:50,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-mail/test-message-search.c:53,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:56,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:57,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 3
    argNames:
    - tc
    - block
    - i
    argTypes:
    - struct test_case*
    - struct message_block*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 59
    functionName: compare_search_result
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-search.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp_idx
    - memcmp
    - test_assert_idx
    linkageType: ''
    returnType: void
    signature: "void compare_search_result(const struct test_case *tc,\n\t\t\t\t  const
      struct message_block *block,\n\t\t\t\t  size_t i)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:158,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:164,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:169,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:179,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:186,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:193,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:200,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:207,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:226,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:231,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:246,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:251,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:253,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:258,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:264,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:266,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:273,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:275,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:282,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:284,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:289,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:291,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:296,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:298,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:303,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:305,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:312,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:314,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:325,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:333,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:339,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:345,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:353,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:359,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:365,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:369,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:377,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:382,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:389,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:391,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:396,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:398,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:405,1
    - Dst: TEST_CASE_DATA
      Src: /src/dovecot/src/lib-mail/test-message-search.c:407,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-search.c:415,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-search.c:417,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/test-message-search.c:427,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-mail/test-message-search.c:429,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/test-message-search.c:431,1
    - Dst: message_search_init
      Src: /src/dovecot/src/lib-mail/test-message-search.c:433,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/test-message-search.c:435,1
    - Dst: message_search_more_get_decoded
      Src: /src/dovecot/src/lib-mail/test-message-search.c:436,1
    - Dst: compare_search_result
      Src: /src/dovecot/src/lib-mail/test-message-search.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:442,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:443,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/test-message-search.c:444,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:445,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-search.c:446,1
    - Dst: message_search_msg
      Src: /src/dovecot/src/lib-mail/test-message-search.c:447,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-mail/test-message-search.c:448,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:450,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-search.c:453,1
    - Dst: message_search_msg
      Src: /src/dovecot/src/lib-mail/test-message-search.c:454,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-mail/test-message-search.c:455,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-search.c:457,1
    - Dst: message_search_deinit
      Src: /src/dovecot/src/lib-mail/test-message-search.c:459,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:460,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-search.c:461,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/test-message-search.c:462,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 463
    functionName: test_message_search
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-search.c
    functionUses: 0
    functionsReached:
    - compare_search_result
    - message_search_msg
    - test_assert_idx
    - pool_unref
    - i_stream_seek
    - message_search_deinit
    - test_assert
    - message_parser_init
    - message_parser_parse_next_block
    - message_search_init
    - TEST_CASE_DATA
    - N_ELEMENTS
    - message_search_more_get_decoded
    - pool_alloconly_create
    - i_error
    - test_istream_create_data
    - i_stream_unref
    - message_parser_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_search(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-search.c:479,1
    - Dst: message_search_init
      Src: /src/dovecot/src/lib-mail/test-message-search.c:481,1
    - Dst: message_search_init
      Src: /src/dovecot/src/lib-mail/test-message-search.c:482,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-search.c:484,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/test-message-search.c:488,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-search.c:489,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:493,1
    - Dst: message_search_more_get_decoded
      Src: /src/dovecot/src/lib-mail/test-message-search.c:493,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:494,1
    - Dst: message_search_more_decoded
      Src: /src/dovecot/src/lib-mail/test-message-search.c:494,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:498,1
    - Dst: message_search_more_get_decoded
      Src: /src/dovecot/src/lib-mail/test-message-search.c:498,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:499,1
    - Dst: message_search_more_decoded
      Src: /src/dovecot/src/lib-mail/test-message-search.c:499,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:505,1
    - Dst: message_search_more_get_decoded
      Src: /src/dovecot/src/lib-mail/test-message-search.c:505,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-search.c:506,1
    - Dst: message_search_more_decoded
      Src: /src/dovecot/src/lib-mail/test-message-search.c:506,1
    - Dst: message_search_deinit
      Src: /src/dovecot/src/lib-mail/test-message-search.c:508,1
    - Dst: message_search_deinit
      Src: /src/dovecot/src/lib-mail/test-message-search.c:509,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-search.c:510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 469
    functionDepth: 3
    functionLinenumber: 469
    functionLinenumberEnd: 511
    functionName: test_message_search_more_get_decoded
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-search.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strlen
    - test_end
    - message_search_init
    - message_search_deinit
    - message_search_more_get_decoded
    - test_assert
    - message_search_more_decoded
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_search_more_get_decoded(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-search.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 513
    functionDepth: 7
    functionLinenumber: 513
    functionLinenumberEnd: 521
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-search.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-snippet.c:42,1
    - Dst: i_isspace
      Src: /src/dovecot/src/lib-mail/message-snippet.c:55,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/message-snippet.c:57,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-snippet.c:71,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib-mail/message-snippet.c:75,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-snippet.c:76,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-mail/message-snippet.c:77,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 32
    argCount: 5
    argNames:
    - ctx
    - target
    - data
    - size
    - count_r
    argTypes:
    - struct snippet_context*
    - struct snippet_data*
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 78
    functionName: snippet_add_content
    functionSourceFile: /src/dovecot/src/lib-mail/message-snippet.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_len
    - str_append_data
    - i_isspace
    - i_assert
    - uni_utf8_char_bytes
    linkageType: ''
    returnType: void
    signature: "void snippet_add_content(struct snippet_context *ctx,\n\t\t\t\tstruct
      snippet_data *target,\n\t\t\t\tconst unsigned char *data, size_t size,\n\t\t\t\tsize_t
      *count_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/message-snippet.c:87,1
    - Dst: mail_html2text_more
      Src: /src/dovecot/src/lib-mail/message-snippet.c:88,1
    - Dst: snippet_add_content
      Src: /src/dovecot/src/lib-mail/message-snippet.c:117,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-mail/message-snippet.c:117,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct snippet_context*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 80
    functionDepth: 5
    functionLinenumber: 80
    functionLinenumberEnd: 128
    functionName: snippet_generate
    functionSourceFile: /src/dovecot/src/lib-mail/message-snippet.c
    functionUses: 2
    functionsReached:
    - snippet_add_content
    - mail_html2text_more
    - CONST_PTR_OFFSET
    - buffer_set_used_size
    linkageType: ''
    returnType: bool
    signature: "bool snippet_generate(struct snippet_context *ctx,\n\t\t\t     const
      unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_isspace
      Src: /src/dovecot/src/lib-mail/message-snippet.c:132,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/message-snippet.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: snippet_copy
    functionSourceFile: /src/dovecot/src/lib-mail/message-snippet.c
    functionUses: 0
    functionsReached:
    - str_append
    - i_isspace
    linkageType: ''
    returnType: void
    signature: void snippet_copy(const char *src, string_t *dst)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-snippet.c:150,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/message-snippet.c:151,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/message-snippet.c:152,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-mail/message-snippet.c:154,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/message-snippet.c:156,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-mail/message-snippet.c:156,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/message-snippet.c:157,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/message-snippet.c:158,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/message-snippet.c:161,1
    - Dst: message_decoder_current_content_type
      Src: /src/dovecot/src/lib-mail/message-snippet.c:180,1
    - Dst: mail_html2text_content_type_match
      Src: /src/dovecot/src/lib-mail/message-snippet.c:183,1
    - Dst: mail_html2text_deinit
      Src: /src/dovecot/src/lib-mail/message-snippet.c:184,1
    - Dst: mail_html2text_init
      Src: /src/dovecot/src/lib-mail/message-snippet.c:185,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/message-snippet.c:188,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-mail/message-snippet.c:190,1
    - Dst: snippet_generate
      Src: /src/dovecot/src/lib-mail/message-snippet.c:192,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-snippet.c:195,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/message-snippet.c:196,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-snippet.c:197,1
    - Dst: mail_html2text_deinit
      Src: /src/dovecot/src/lib-mail/message-snippet.c:198,1
    - Dst: snippet_copy
      Src: /src/dovecot/src/lib-mail/message-snippet.c:200,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-snippet.c:200,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/message-snippet.c:202,1
    - Dst: snippet_copy
      Src: /src/dovecot/src/lib-mail/message-snippet.c:203,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-snippet.c:203,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/message-snippet.c:205,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 3
    argNames:
    - input
    - max_snippet_chars
    - snippet
    argTypes:
    - struct istream*
    - unsigned int
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 136
    functionDepth: 6
    functionLinenumber: 136
    functionLinenumberEnd: 207
    functionName: message_snippet_generate
    functionSourceFile: /src/dovecot/src/lib-mail/message-snippet.c
    functionUses: 2
    functionsReached:
    - str_c
    - buffer_create_dynamic
    - mail_html2text_deinit
    - pool_unref
    - message_parser_init
    - snippet_copy
    - str_append_c
    - message_parser_parse_next_block
    - message_decoder_current_content_type
    - str_begins_icase_with
    - message_decoder_deinit
    - str_new
    - i_zero
    - mail_html2text_content_type_match
    - pool_datastack_create
    - mail_html2text_init
    - message_decoder_decode_next_block
    - i_assert
    - pool_alloconly_create
    - snippet_generate
    - message_decoder_init
    - message_parser_deinit
    linkageType: ''
    returnType: int
    signature: "int message_snippet_generate(struct istream *input,\n\t\t\t     unsigned
      int max_snippet_chars,\n\t\t\t     string_t *snippet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:73,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:75,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _ref_buffer
    argTypes:
    - struct ref_buffer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 78
    functionName: ref_buffer_unref
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void ref_buffer_unref(struct ref_buffer **_ref_buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:86,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:87,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:88,1
    - Dst: ref_buffer_unref
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:89,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 91
    functionName: i_stream_header_filter_destroy
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - message_parse_header_deinit
    - ref_buffer_unref
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void i_stream_header_filter_destroy(struct iostream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:105,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:107,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:111,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:119,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:125,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:126,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:134,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:136,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:139,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:141,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - mstream
    - body_highwater_size
    argTypes:
    - struct header_filter_istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 144
    functionName: read_mixed
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_stream_get_data
    - buffer_get_data
    - buffer_append_c
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t read_mixed(struct header_filter_istream *mstream, size_t body_highwater_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: cmp_uint
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int cmp_uint(const unsigned int *i1, const unsigned int *i2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:154,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct header_filter_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: match_line_changed
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_bsearch
    linkageType: ''
    returnType: bool
    signature: bool match_line_changed(struct header_filter_istream *mstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:164,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - mstream
    - orig_crlf
    argTypes:
    - struct header_filter_istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 169
    functionName: add_eol
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: void add_eol(struct header_filter_istream *mstream, bool orig_crlf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:176,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct header_filter_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 181
    functionName: hdr_stream_update_pos
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_assert
    - buffer_get_data
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t hdr_stream_update_pos(struct header_filter_istream *mstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:191,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:193,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:194,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:195,1
    - Dst: ref_buffer_unref
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct header_filter_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 201
    functionName: hdr_buf_realloc_if_needed
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_create_dynamic
    - I_MAX
    - ref_buffer_unref
    - i_new
    linkageType: ''
    returnType: void
    signature: void hdr_buf_realloc_if_needed(struct header_filter_istream *mstream)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:213,1
    - Dst: hdr_buf_realloc_if_needed
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:218,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:219,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:224,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:227,1
    - Dst: read_mixed
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:234,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:240,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:244,1
    - Dst: struct header_filter_istream*::callback
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:257,1
    - Dst: add_eol
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:267,1
    - Dst: i_bsearch
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:282,1
    - Dst: struct header_filter_istream*::callback
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:296,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:302,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:303,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:304,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 64
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct header_filter_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 203
    functionDepth: 3
    functionLinenumber: 203
    functionLinenumberEnd: 307
    functionName: read_header
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 4
    functionsReached:
    - i_array_init
    - read_mixed
    - array_push_back
    - add_eol
    - buffer_copy
    - i_stream_get_max_buffer_size
    - message_parse_header_init
    - buffer_set_used_size
    - array_is_created
    - message_parse_header_next
    - struct header_filter_istream*::callback
    - i_bsearch
    - i_assert
    - hdr_buf_realloc_if_needed
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t read_header(struct header_filter_istream *mstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:451,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:466,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:467,1
    - Dst: hdr_buf_realloc_if_needed
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:469,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:470,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:471,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:473,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:474,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - mstream
    - ret
    argTypes:
    - struct header_filter_istream*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 442
    functionDepth: 3
    functionLinenumber: 442
    functionLinenumberEnd: 486
    functionName: handle_end_body_with_lf
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_stream_get_data
    - buffer_set_used_size
    - buffer_append_c
    - i_assert
    - hdr_buf_realloc_if_needed
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t handle_end_body_with_lf(struct header_filter_istream *mstream,
      ssize_t ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read_header
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:502,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:512,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:513,1
    - Dst: handle_end_body_with_lf
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:515,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 488
    functionDepth: 4
    functionLinenumber: 488
    functionLinenumberEnd: 517
    functionName: i_stream_header_filter_read
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_stream_read_copy_from_parent
    - handle_end_body_with_lf
    - read_header
    - i_stream_seek
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_header_filter_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:523,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:531,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - mstream
    - v_offset
    argTypes:
    - struct header_filter_istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 519
    functionDepth: 2
    functionLinenumber: 519
    functionLinenumberEnd: 538
    functionName: i_stream_header_filter_seek_to_header
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_stream_seek
    - message_parse_header_deinit
    linkageType: ''
    returnType: void
    signature: "void i_stream_header_filter_seek_to_header(struct header_filter_istream
      *mstream,\n\t\t\t\t      uoff_t v_offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_header_filter_seek_to_header
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:550,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:554,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:555,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:556,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct header_filter_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 540
    functionDepth: 3
    functionLinenumber: 540
    functionLinenumberEnd: 559
    functionName: skip_header
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_stream_header_filter_seek_to_header
    - i_stream_read_memarea
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: int skip_header(struct header_filter_istream *mstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hdr_buf_realloc_if_needed
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:564,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - mstream
    - v_offset
    argTypes:
    - struct header_filter_istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 569
    functionName: stream_reset_to
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - hdr_buf_realloc_if_needed
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void stream_reset_to(struct header_filter_istream *mstream, uoff_t
      v_offset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset_to
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:579,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:580,1
    - Dst: stream_reset_to
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:590,1
    - Dst: i_stream_header_filter_seek_to_header
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:591,1
    - Dst: skip_header
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:598,1
    - Dst: stream_reset_to
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:600,1
    - Dst: i_stream_header_filter_seek_to_header
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:605,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:610,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 571
    functionDepth: 4
    functionLinenumber: 571
    functionLinenumberEnd: 613
    functionName: i_stream_header_filter_seek
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - stream_reset_to
    - i_stream_seek
    - i_stream_header_filter_seek_to_header
    - skip_header
    linkageType: ''
    returnType: void
    signature: "void i_stream_header_filter_seek(struct istream_private *stream,\n\t\t\t\t\tuoff_t
      v_offset, bool mark ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 619
    functionName: ATTR_NORETURN::i_stream_header_filter_sync
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: void
    signature: 'void ATTR_NORETURN

      i_stream_header_filter_sync(struct istream_private *stream ATTR_UNUSED)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:629,1
    - Dst: skip_header
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:639,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:654,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:655,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:661,1
    - Dst: handle_end_body_with_lf
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:662,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:670,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 621
    functionDepth: 4
    functionLinenumber: 621
    functionLinenumberEnd: 672
    functionName: i_stream_header_filter_stat
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - handle_end_body_with_lf
    - i_stream_stat
    - i_stream_seek
    - skip_header
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int i_stream_header_filter_stat(struct istream_private *stream, bool
      exact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:678,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:681,1
    - Dst: ref_buffer_unref
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:684,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:685,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _snapshot
    argTypes:
    - struct istream_snapshot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 674
    functionDepth: 2
    functionLinenumber: 674
    functionLinenumberEnd: 686
    functionName: i_stream_header_filter_snapshot_free
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - i_free
    - ref_buffer_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_header_filter_snapshot_free(struct istream_snapshot *_snapshot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_default_snapshot
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:698,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - stream
    - prev_snapshot
    argTypes:
    - struct istream_private*
    - struct istream_snapshot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 710
    functionName: i_stream_header_filter_snapshot
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 0
    functionsReached:
    - i_stream_default_snapshot
    - i_new
    linkageType: ''
    returnType: struct istream_snapshot
    signature: "struct istream_snapshot *\ni_stream_header_filter_snapshot(struct
      istream_private *stream,\n\t\t\t\tstruct istream_snapshot *prev_snapshot)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:724,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:726,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:727,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:732,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:735,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:740,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:741,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:744,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:746,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:775,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 6
    argNames:
    - input
    - flags
    - headers
    - headers_count
    - callback
    - context
    argTypes:
    - struct istream*
    - enum header_filter_flags
    - char**
    - unsigned int
    - header_filter_callback*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 776
    functionName: i_stream_create_header_filter
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 7
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - buffer_create_dynamic
    - strcasecmp
    - i_new
    - i_stream_create
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_header_filter(struct istream *input,\n
      \                             enum header_filter_flags flags,\n\t\t\t      const
      char *const *headers,\n\t\t\t      unsigned int headers_count,\n\t\t\t      header_filter_callback
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hdr_buf_realloc_if_needed
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:781,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/istream-header-filter.c:782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - input
    - data
    - size
    argTypes:
    - struct header_filter_istream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 778
    functionDepth: 3
    functionLinenumber: 778
    functionLinenumberEnd: 784
    functionName: i_stream_header_filter_add
    functionSourceFile: /src/dovecot/src/lib-mail/istream-header-filter.c
    functionUses: 2
    functionsReached:
    - buffer_append
    - hdr_buf_realloc_if_needed
    linkageType: ''
    returnType: void
    signature: "void i_stream_header_filter_add(struct header_filter_istream *input,\n\t\t\t\tconst
      void *data, size_t size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:14,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:20,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:30,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:31,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:42,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - str
    - i
    - starts_with_a
    argTypes:
    - char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 48
    functionName: verify_q
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-encode.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: bool verify_q(const char *str, unsigned int i, bool starts_with_a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:52,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:53,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:56,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:58,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:60,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:63,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:65,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:67,1
    - Dst: message_header_encode_q
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:69,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:69,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:72,1
    - Dst: verify_q
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:72,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:72,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:75,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 76
    functionName: test_message_header_encode_q
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-encode.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - message_header_encode_q
    - test_end
    - str_truncate
    - test_assert
    - str_append
    - verify_q
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_encode_q(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:84,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:85,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:91,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:100,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:101,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:129,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 45
    argCount: 3
    argNames:
    - str
    - i
    - starts_with_a
    argTypes:
    - char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 135
    functionName: verify_b
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-encode.c
    functionUses: 0
    functionsReached:
    - buffer_create_from_data
    - str_begins_with
    - base64_decode
    - buffer_set_used_size
    linkageType: ''
    returnType: bool
    signature: bool verify_b(const char *str, unsigned int i, bool starts_with_a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:139,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:140,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:143,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:145,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:147,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:150,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:152,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:154,1
    - Dst: message_header_encode_b
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:156,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:156,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:159,1
    - Dst: verify_b
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:159,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:159,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 137
    functionDepth: 3
    functionLinenumber: 137
    functionLinenumberEnd: 163
    functionName: test_message_header_encode_b
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-encode.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - verify_b
    - test_end
    - str_truncate
    - test_assert
    - str_append
    - message_header_encode_b
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_encode_b(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:258,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:261,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:262,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:263,1
    - Dst: message_header_encode
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:264,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:265,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:265,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 268
    functionName: test_message_header_encode
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-encode.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - test_assert_strcmp
    - test_end
    - str_truncate
    - message_header_encode
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_encode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:272,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:275,1
    - Dst: message_header_encode_data
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:276,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:277,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:277,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:279,1
    - Dst: message_header_encode_data
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:280,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:281,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:281,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 283
    functionName: test_message_header_encode_data
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-encode.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - test_assert_strcmp
    - message_header_encode_data
    - test_end
    - str_truncate
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_header_encode_data(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-header-encode.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 285
    functionDepth: 7
    functionLinenumber: 285
    functionLinenumberEnd: 295
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-header-encode.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:68,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - astream
    - data
    - size
    argTypes:
    - struct attachment_istream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: stream_add_data
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 3
    functionsReached:
    - memcpy
    - i_stream_alloc
    linkageType: ''
    returnType: void
    signature: "void stream_add_data(struct attachment_istream *astream,\n\t\t\t    const
      void *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:82,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:83,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:86,1
    - Dst: rfc822_parse_content_type
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:87,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:88,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - astream
    - hdr
    argTypes:
    - struct attachment_istream*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 73
    functionDepth: 5
    functionLinenumber: 73
    functionLinenumberEnd: 89
    functionName: parse_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 9
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - rfc822_parse_content_type
    - i_strdup
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_type(struct attachment_istream *astream,\n\t\t\t
      \      const struct message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:98,1
    - Dst: i_strndup
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - astream
    - hdr
    argTypes:
    - struct attachment_istream*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: parse_content_disposition
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 1
    functionsReached:
    - i_free
    - i_strndup
    linkageType: ''
    returnType: void
    signature: "void parse_content_disposition(struct attachment_istream *astream,\n\t\t\t
      \ const struct message_header_line *hdr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:107,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:108,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:110,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:113,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:115,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:123,1
    - Dst: parse_content_type
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:124,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:125,1
    - Dst: parse_content_disposition
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:126,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - astream
    - hdr
    argTypes:
    - struct attachment_istream*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 127
    functionName: astream_parse_header
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - parse_content_disposition
    - parse_content_type
    - strcasecmp
    - stream_add_data
    linkageType: ''
    returnType: void
    signature: "void astream_parse_header(struct attachment_istream *astream,\n\t\t\t\t
      struct message_header_line *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:142,1
    - Dst: struct attachment_istream*::set::want_attachment
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - astream
    - part
    argTypes:
    - struct attachment_istream*
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 147
    functionName: astream_want_attachment
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - i_zero
    - struct attachment_istream*::set::want_attachment
    linkageType: ''
    returnType: bool
    signature: "bool astream_want_attachment(struct attachment_istream *astream,\n\t\t\t\t
      \   struct message_part *part)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - part
    argTypes:
    - struct attachment_istream_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 172
    functionName: astream_base64_decode_lf
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int astream_base64_decode_lf(struct attachment_istream_part *part)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: base64_is_valid_char
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:180,1
    - Dst: astream_base64_decode_lf
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:185,1
    - Dst: base64_is_valid_char
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:191,1
    - Dst: base64_is_valid_char
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:196,1
    - Dst: base64_is_valid_char
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:205,1
    - Dst: astream_base64_decode_lf
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:232,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:248,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 66
    argCount: 3
    argNames:
    - part
    - pos
    - chr
    argTypes:
    - struct attachment_istream_part*
    - size_t
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 251
    functionName: astream_try_base64_decode_char
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - base64_is_valid_char
    - astream_base64_decode_lf
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int astream_try_base64_decode_char(struct attachment_istream_part
      *part,\n\t\t\t       size_t pos, char chr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: astream_try_base64_decode_char
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:264,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - part
    - data
    - size
    argTypes:
    - struct attachment_istream_part*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 271
    functionName: astream_try_base64_decode
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - astream_try_base64_decode_char
    linkageType: ''
    returnType: void
    signature: "void astream_try_base64_decode(struct attachment_istream_part *part,\n\t\t\t
      \ const unsigned char *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:277,1
    - Dst: struct attachment_istream*::set::open_temp_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:279,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:284,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - astream
    argTypes:
    - struct attachment_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 287
    functionName: astream_open_output
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - i_assert
    - o_stream_cork
    - struct attachment_istream*::set::open_temp_fd
    linkageType: ''
    returnType: int
    signature: int astream_open_output(struct attachment_istream *astream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:298,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:305,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:311,1
    - Dst: astream_open_output
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:316,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:319,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:320,1
    - Dst: astream_try_base64_decode
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:324,1
    - Dst: hash_format_loop
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:325,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:327,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:329,1
    - Dst: astream_try_base64_decode
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:332,1
    - Dst: hash_format_loop
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:333,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:335,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - astream
    - block
    argTypes:
    - struct attachment_istream*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 338
    functionName: astream_add_body
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - astream_open_output
    - buffer_create_dynamic
    - astream_try_base64_decode
    - buffer_set_used_size
    - hash_format_loop
    - o_stream_nsend
    - stream_add_data
    linkageType: ''
    returnType: void
    signature: "void astream_add_body(struct attachment_istream *astream,\n\t\t\t
      \    const struct message_block *block)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:366,1
    - Dst: struct attachment_istream*::set::open_temp_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:370,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:377,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:378,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:379,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:380,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:381,1
    - Dst: base64_decode_init
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:383,1
    - Dst: hash_format_reset
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:384,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:386,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:388,1
    - Dst: base64_decode_more
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:389,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:397,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:398,1
    - Dst: hash_format_loop
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:399,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:401,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:404,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:407,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:409,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:410,1
    - Dst: base64_decode_finish
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:414,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:422,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:424,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:426,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:427,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:432,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:433,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:434,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:438,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:439,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:440,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:441,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:443,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:446,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:448,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:449,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:454,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:457,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:462,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:463,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 82
    argCount: 3
    argNames:
    - astream
    - extra_buf_r
    - error_r
    argTypes:
    - struct attachment_istream*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 466
    functionName: astream_decode_base64
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - base64_decode_more
    - buffer_create_dynamic
    - o_stream_cork
    - t_strdup_printf
    - o_stream_unref
    - buffer_set_used_size
    - o_stream_get_name
    - buffer_append
    - o_stream_get_error
    - i_close_fd
    - i_stream_skip
    - i_stream_get_error
    - hash_format_loop
    - o_stream_nsend
    - hash_format_reset
    - i_stream_get_name
    - buffer_free
    - i_stream_read_more
    - struct attachment_istream*::set::open_temp_fd
    - o_stream_create_fd_file
    - i_assert
    - i_stream_read_bytes
    - o_stream_destroy
    - i_stream_create_fd
    - base64_decode_init
    - i_stream_create_limit
    - o_stream_finish
    - i_stream_unref
    - base64_decode_finish
    linkageType: ''
    returnType: int
    signature: "int astream_decode_base64(struct attachment_istream *astream,\n\t\t\t\t
      buffer_t **extra_buf_r, const char **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:481,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:482,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:483,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:484,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:488,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:496,1
    - Dst: hash_format_write
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:497,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:498,1
    - Dst: astream_decode_base64
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:511,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:515,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:529,1
    - Dst: hash_format_write
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:530,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:531,1
    - Dst: struct attachment_istream*::set::open_attachment_ostream
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:537,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:539,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:544,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:545,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:546,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:547,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:551,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:552,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:552,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:555,1
    - Dst: struct attachment_istream*::set::close_attachment_ostream
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:557,1
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:561,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:562,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 56
    argCount: 2
    argNames:
    - astream
    - error_r
    argTypes:
    - struct attachment_istream*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 564
    functionName: astream_part_finish
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - str_c
    - hash_format_write
    - t_strdup_printf
    - o_stream_get_name
    - t_str_new
    - struct attachment_istream*::set::close_attachment_ostream
    - o_stream_get_error
    - struct attachment_istream*::set::open_attachment_ostream
    - i_stream_skip
    - i_stream_get_error
    - o_stream_nsend
    - i_stream_get_name
    - buffer_free
    - i_stream_read_more
    - stream_add_data
    - i_stream_destroy
    - i_zero
    - astream_decode_base64
    - i_stream_create_fd
    - o_stream_finish
    - str_truncate
    linkageType: ''
    returnType: int
    signature: int astream_part_finish(struct attachment_istream *astream, const char
      **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:570,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:571,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:573,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:574,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:575,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:577,1
    - Dst: hash_format_reset
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - astream
    argTypes:
    - struct attachment_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 580
    functionName: astream_part_reset
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_close_fd
    - i_free_and_null
    - hash_format_reset
    - buffer_free
    - o_stream_destroy
    linkageType: ''
    returnType: void
    signature: void astream_part_reset(struct attachment_istream *astream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stream_add_data
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:597,1
    - Dst: astream_part_finish
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:604,1
    - Dst: astream_part_reset
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:615,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - astream
    - error_r
    argTypes:
    - struct attachment_istream*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 617
    functionName: astream_end_of_part
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - astream_part_reset
    - stream_add_data
    - astream_part_finish
    linkageType: ''
    returnType: int
    signature: int astream_end_of_part(struct attachment_istream *astream, const char
      **error_r)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:629,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:633,1
    - Dst: astream_end_of_part
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:636,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:646,1
    - Dst: astream_end_of_part
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:660,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:661,1
    - Dst: astream_parse_header
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:670,1
    - Dst: astream_want_attachment
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:673,1
    - Dst: astream_add_body
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:678,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 2
    argNames:
    - astream
    - retry_r
    argTypes:
    - struct attachment_istream*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 619
    functionDepth: 4
    functionLinenumber: 619
    functionLinenumberEnd: 683
    functionName: astream_read_next
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - astream_end_of_part
    - io_stream_set_error
    - message_parser_parse_next_block
    - i_stream_get_max_buffer_size
    - astream_add_body
    - astream_want_attachment
    - astream_parse_header
    linkageType: ''
    returnType: int
    signature: int astream_read_next(struct attachment_istream *astream, bool *retry_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: astream_read_next
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 685
    functionDepth: 5
    functionLinenumber: 685
    functionLinenumberEnd: 699
    functionName: i_stream_attachment_extractor_read
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - astream_read_next
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_attachment_extractor_read(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:709,1
    - Dst: hash_format_deinit_free
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:711,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:712,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 701
    functionDepth: 2
    functionLinenumber: 701
    functionLinenumberEnd: 715
    functionName: i_stream_attachment_extractor_close
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached:
    - hash_format_deinit_free
    - i_stream_close
    - message_parser_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: "void i_stream_attachment_extractor_close(struct iostream_private *stream,\n\t\t\t\t\t\tbool
      close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:728,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:729,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:730,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:731,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:733,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:751,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:752,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:753,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-mail/istream-attachment-extractor.c:754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 3
    argNames:
    - input
    - set
    - context
    argTypes:
    - struct istream*
    - struct istream_attachment_settings*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 717
    functionDepth: 3
    functionLinenumber: 717
    functionLinenumberEnd: 755
    functionName: i_stream_create_attachment_extractor
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 3
    functionsReached:
    - pool_alloconly_create
    - i_stream_get_fd
    - i_new
    - i_stream_create
    - i_assert
    - message_parser_init
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_attachment_extractor(struct istream
      *input,\n\t\t\t\t     struct istream_attachment_settings *set,\n\t\t\t\t     void
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 763
    functionName: i_stream_attachment_extractor_can_retry
    functionSourceFile: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool i_stream_attachment_extractor_can_retry(struct istream *input)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-header-hash.c:14,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-mail/message-header-hash.c:17,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-mail/message-header-hash.c:44,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-mail/message-header-hash.c:51,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-mail/message-header-hash.c:61,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-mail/message-header-hash.c:62,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-mail/message-header-hash.c:71,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 6
    argNames:
    - ctx
    - method
    - context
    - version
    - data
    - size
    argTypes:
    - struct message_header_hash_context*
    - struct hash_method*
    - void*
    - unsigned int
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 72
    functionName: message_header_hash_more
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-hash.c
    functionUses: 1
    functionsReached:
    - struct hash_method*::loop
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void message_header_hash_more(struct message_header_hash_context *ctx,\n\t\t\t
      \     const struct hash_method *method, void *context,\n\t\t\t      unsigned
      int version,\n\t\t\t      const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_date_parse
      Src: /src/dovecot/src/lib-mail/fuzz-message-date.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 7
    functionDepth: 4
    functionLinenumber: 7
    functionLinenumberEnd: 12
    functionName: FUZZ_BEGIN_DATA
    functionSourceFile: /src/dovecot/src/lib-mail/fuzz-message-date.c
    functionUses: 0
    functionsReached:
    - message_date_parse
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_DATA(const unsigned char *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:62,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:63,1
    - Dst: mbox_from_parse
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:64,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:69,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:70,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:71,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:71,1
    - Dst: localtime
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:76,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:77,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 17
    functionDepth: 3
    functionLinenumber: 17
    functionLinenumberEnd: 82
    functionName: test_mbox_from_parse
    functionSourceFile: /src/dovecot/src/lib-mail/test-mbox-from.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    - t_strdup_printf
    - mbox_from_parse
    - test_out
    - localtime
    - i_free
    - N_ELEMENTS
    - utc_offset
    linkageType: ''
    returnType: void
    signature: void test_mbox_from_parse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:89,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:90,1
    - Dst: localtime
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:91,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:91,1
    - Dst: mbox_from_create
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:91,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 94
    functionName: test_mbox_from_create
    functionSourceFile: /src/dovecot/src/lib-mail/test-mbox-from.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - localtime
    - mbox_from_create
    - test_assert
    - test_begin
    - utc_offset
    linkageType: ''
    returnType: void
    signature: void test_mbox_from_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-mbox-from.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 96
    functionDepth: 7
    functionLinenumber: 96
    functionLinenumberEnd: 104
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-mbox-from.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 9
    functionName: IS_LWSP
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LWSP(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - input
    - ','
    - hdr_size
    - ','
    - flags
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: message_parse_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-header-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: message_parse_header(input, hdr_size, flags, callback, context)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-mail/message-size.c:15,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-mail/message-size.c:19,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-size.c:53,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-size.c:57,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-size.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-size.c:64,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 38
    argCount: 3
    argNames:
    - input
    - hdr
    - has_nuls_r
    argTypes:
    - struct istream*
    - struct message_size*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 66
    functionName: message_get_header_size
    functionSourceFile: /src/dovecot/src/lib-mail/message-size.c
    functionUses: 4
    functionsReached:
    - memset
    - i_assert
    - i_stream_read_bytes
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int message_get_header_size(struct istream *input, struct message_size
      *hdr,\n\t\t\t    bool *has_nuls_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-mail/message-size.c:75,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-mail/message-size.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-size.c:80,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-size.c:107,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-mail/message-size.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-size.c:110,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-size.c:114,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-size.c:118,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - input
    - body
    - has_nuls_r
    argTypes:
    - struct istream*
    - struct message_size*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 120
    functionName: message_get_body_size
    functionSourceFile: /src/dovecot/src/lib-mail/message-size.c
    functionUses: 1
    functionsReached:
    - i_stream_skip
    - memset
    - i_assert
    - i_stream_read_more
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: "int message_get_body_size(struct istream *input, struct message_size
      *body,\n\t\t\t  bool *has_nuls_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct message_size*
    - struct message_size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: message_size_add
    functionSourceFile: /src/dovecot/src/lib-mail/message-size.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void message_size_add(struct message_size *dest,\n\t\t      const
      struct message_size *src)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-mail/message-size.c:142,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-mail/message-size.c:143,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-mail/message-size.c:144,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-size.c:146,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-mail/message-size.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-size.c:172,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-size.c:175,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 3
    argNames:
    - input
    - virtual_skip
    - last_virtual_cr_r
    argTypes:
    - struct istream*
    - uoff_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 177
    functionName: message_skip_virtual
    functionSourceFile: /src/dovecot/src/lib-mail/message-size.c
    functionUses: 1
    functionsReached:
    - I_MIN
    - memchr
    - i_stream_skip
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: "int message_skip_virtual(struct istream *input, uoff_t virtual_skip,\n\t\t\t
      bool *last_virtual_cr_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-search.c:31,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-mail/message-search.c:33,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/lib-mail/message-search.c:35,1
    - Dst: str_find_init
      Src: /src/dovecot/src/lib-mail/message-search.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - normalized_key_utf8
    - normalizer
    - flags
    argTypes:
    - char*
    - normalizer_func_t*
    - enum message_search_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 38
    functionName: message_search_init
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 2
    functionsReached:
    - str_find_init
    - message_decoder_init
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct message_search_context
    signature: "struct message_search_context *\nmessage_search_init(const char *normalized_key_utf8,\n\t\t
      \   normalizer_func_t *normalizer,\n\t\t    enum message_search_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_find_deinit
      Src: /src/dovecot/src/lib-mail/message-search.c:45,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/lib-mail/message-search.c:46,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-mail/message-search.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct message_search_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: message_search_deinit
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 2
    functionsReached:
    - i_free
    - message_decoder_deinit
    - str_find_deinit
    linkageType: ''
    returnType: void
    signature: void message_search_deinit(struct message_search_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/lib-mail/message-search.c:56,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/lib-mail/message-search.c:57,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-mail/message-search.c:59,1
    - Dst: rfc822_parse_content_type
      Src: /src/dovecot/src/lib-mail/message-search.c:60,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-mail/message-search.c:62,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-search.c:62,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-mail/message-search.c:63,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-mail/message-search.c:63,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/lib-mail/message-search.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct message_search_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 5
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: parse_content_type
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 11
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - rfc822_parse_content_type
    - str_begins_icase_with
    - rfc822_parser_deinit
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void parse_content_type(struct message_search_context *ctx,\n\t\t\t
      \      struct message_header_line *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-search.c:71,1
    - Dst: parse_content_type
      Src: /src/dovecot/src/lib-mail/message-search.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct message_search_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 79
    functionName: handle_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 0
    functionsReached:
    - parse_content_type
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: "void handle_header(struct message_search_context *ctx,\n\t\t\t  struct
      message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_find_more
      Src: /src/dovecot/src/lib-mail/message-search.c:87,1
    - Dst: str_find_more
      Src: /src/dovecot/src/lib-mail/message-search.c:89,1
    - Dst: str_find_more
      Src: /src/dovecot/src/lib-mail/message-search.c:91,1
    - Dst: str_find_more
      Src: /src/dovecot/src/lib-mail/message-search.c:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct message_search_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 95
    functionName: search_header
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 0
    functionsReached:
    - str_find_more
    linkageType: ''
    returnType: bool
    signature: "bool search_header(struct message_search_context *ctx,\n\t\t\t  const
      struct message_header_line *hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: search_header
      Src: /src/dovecot/src/lib-mail/message-search.c:101,1
    - Dst: str_find_more
      Src: /src/dovecot/src/lib-mail/message-search.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - block
    argTypes:
    - struct message_search_context*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 108
    functionName: message_search_more_decoded2
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 0
    functionsReached:
    - search_header
    - str_find_more
    linkageType: ''
    returnType: bool
    signature: "bool message_search_more_decoded2(struct message_search_context *ctx,\n\t\t\t\t\t
      struct message_block *block)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_search_more_get_decoded
      Src: /src/dovecot/src/lib-mail/message-search.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - raw_block
    argTypes:
    - struct message_search_context*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 116
    functionName: message_search_more
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 0
    functionsReached:
    - message_search_more_get_decoded
    linkageType: ''
    returnType: bool
    signature: "bool message_search_more(struct message_search_context *ctx,\n\t\t\t
      struct message_block *raw_block)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-search.c:125,1
    - Dst: message_search_reset
      Src: /src/dovecot/src/lib-mail/message-search.c:131,1
    - Dst: handle_header
      Src: /src/dovecot/src/lib-mail/message-search.c:141,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-search.c:148,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-mail/message-search.c:149,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/lib-mail/message-search.c:158,1
    - Dst: message_search_more_decoded2
      Src: /src/dovecot/src/lib-mail/message-search.c:169,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - raw_block
    - decoded_block_r
    argTypes:
    - struct message_search_context*
    - struct message_block*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 170
    functionName: message_search_more_get_decoded
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 3
    functionsReached:
    - i_zero
    - message_search_reset
    - strcasecmp
    - message_search_more_decoded2
    - message_decoder_decode_next_block
    - handle_header
    linkageType: ''
    returnType: bool
    signature: "bool message_search_more_get_decoded(struct message_search_context
      *ctx,\n\t\t\t\t     struct message_block *raw_block,\n\t\t\t\t     struct message_block
      *decoded_block_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_search_reset
      Src: /src/dovecot/src/lib-mail/message-search.c:177,1
    - Dst: message_search_more_decoded2
      Src: /src/dovecot/src/lib-mail/message-search.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - block
    argTypes:
    - struct message_search_context*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 182
    functionName: message_search_more_decoded
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 1
    functionsReached:
    - message_search_more_decoded2
    - message_search_reset
    linkageType: ''
    returnType: bool
    signature: "bool message_search_more_decoded(struct message_search_context *ctx,\n\t\t\t\t
      struct message_block *block)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_find_reset
      Src: /src/dovecot/src/lib-mail/message-search.c:190,1
    - Dst: message_decoder_decode_reset
      Src: /src/dovecot/src/lib-mail/message-search.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct message_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 184
    functionDepth: 4
    functionLinenumber: 184
    functionLinenumberEnd: 192
    functionName: message_search_reset
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 2
    functionsReached:
    - message_decoder_decode_reset
    - str_find_reset
    linkageType: ''
    returnType: void
    signature: void message_search_reset(struct message_search_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: message_search_reset
      Src: /src/dovecot/src/lib-mail/message-search.c:207,1
    - Dst: message_parser_init_from_parts
      Src: /src/dovecot/src/lib-mail/message-search.c:210,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-mail/message-search.c:213,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-mail/message-search.c:214,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-mail/message-search.c:217,1
    - Dst: message_search_more
      Src: /src/dovecot/src/lib-mail/message-search.c:219,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-search.c:224,1
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-mail/message-search.c:229,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-mail/message-search.c:233,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - ctx
    - input
    - parts
    - error_r
    argTypes:
    - struct message_search_context*
    - struct istream*
    - struct message_part*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 194
    functionDepth: 5
    functionLinenumber: 194
    functionLinenumberEnd: 235
    functionName: message_search_msg
    functionSourceFile: /src/dovecot/src/lib-mail/message-search.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - message_search_more
    - message_parser_deinit_from_parts
    - message_parser_init_from_parts
    - message_search_reset
    - message_parser_parse_next_block
    - pool_unref
    - i_assert
    - message_parser_init
    linkageType: ''
    returnType: int
    signature: "int message_search_msg(struct message_search_context *ctx,\n\t\t       struct
      istream *input, struct message_part *parts,\n\t\t       const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:49,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:53,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:56,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:58,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:60,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:62,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:67,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:75,1
    - Dst: part_serialize
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:79,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:82,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - part
    - dest
    - children_count_r
    argTypes:
    - struct message_part*
    - buffer_t*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 95
    functionName: part_serialize
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-serialize.c
    functionUses: 4
    functionsReached:
    - part_serialize
    - buffer_append
    - i_assert
    - buffer_write
    linkageType: ''
    returnType: void
    signature: "void part_serialize(struct message_part *part, buffer_t *dest,\n\t\t\t
      \  unsigned int *children_count_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: part_serialize
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - part
    - dest
    argTypes:
    - struct message_part*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: message_part_serialize
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-serialize.c
    functionUses: 3
    functionsReached:
    - part_serialize
    linkageType: ''
    returnType: void
    signature: void message_part_serialize(struct message_part *part, buffer_t *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - buffer
    - buffer_size
    argTypes:
    - struct deserialize_context*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 115
    functionName: read_next
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-serialize.c
    functionUses: 5
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool read_next(struct deserialize_context *ctx,\n\t\t      void *buffer,
      size_t buffer_size)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:133,1
    - Dst: read_next
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:138,1
    - Dst: read_next
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:144,1
    - Dst: read_next
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:154,1
    - Dst: read_next
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:158,1
    - Dst: read_next
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:168,1
    - Dst: read_next
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:172,1
    - Dst: read_next
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:178,1
    - Dst: read_next
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:191,1
    - Dst: message_part_deserialize_part
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:219,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 75
    argCount: 4
    argNames:
    - ctx
    - parent
    - siblings
    - part_r
    argTypes:
    - struct deserialize_context*
    - struct message_part*
    - unsigned int
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 241
    functionName: message_part_deserialize_part
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-serialize.c
    functionUses: 1
    functionsReached:
    - message_part_deserialize_part
    - p_new
    - read_next
    linkageType: ''
    returnType: void
    signature: "void message_part_deserialize_part(struct deserialize_context *ctx,\n\t\t\t
      \     struct message_part *parent,\n\t\t\t      unsigned int siblings,\n\t\t\t
      \     struct message_part **part_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:250,1
    - Dst: message_part_deserialize_part
      Src: /src/dovecot/src/lib-mail/message-part-serialize.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - pool
    - data
    - size
    - error_r
    argTypes:
    - pool_t
    - void*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 243
    functionDepth: 3
    functionLinenumber: 243
    functionLinenumberEnd: 266
    functionName: message_part_deserialize
    functionSourceFile: /src/dovecot/src/lib-mail/message-part-serialize.c
    functionUses: 1
    functionsReached:
    - i_zero
    - message_part_deserialize_part
    linkageType: ''
    returnType: struct message_part
    signature: "struct message_part *\nmessage_part_deserialize(pool_t pool, const
      void *data, size_t size,\n\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-size.c:111,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-size.c:112,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-message-size.c:113,1
    - Dst: message_get_header_size
      Src: /src/dovecot/src/lib-mail/test-message-size.c:117,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:118,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:119,1
    - Dst: message_get_body_size
      Src: /src/dovecot/src/lib-mail/test-message-size.c:120,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:121,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:122,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:124,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-mail/test-message-size.c:128,1
    - Dst: message_skip_virtual
      Src: /src/dovecot/src/lib-mail/test-message-size.c:129,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:130,1
    - Dst: message_skip_virtual
      Src: /src/dovecot/src/lib-mail/test-message-size.c:131,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:132,1
    - Dst: message_skip_virtual
      Src: /src/dovecot/src/lib-mail/test-message-size.c:133,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:134,1
    - Dst: message_get_body_size
      Src: /src/dovecot/src/lib-mail/test-message-size.c:137,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:138,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:139,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:141,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:143,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-size.c:147,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-size.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 150
    functionName: test_message_size
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-size.c
    functionUses: 0
    functionsReached:
    - message_skip_virtual
    - test_assert_idx
    - test_end
    - i_stream_seek
    - message_get_body_size
    - i_stream_unref
    - message_get_header_size
    - i_stream_create_from_data
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-mail/test-message-size.c:181,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-mail/test-message-size.c:182,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-mail/test-message-size.c:184,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-mail/test-message-size.c:185,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:187,1
    - Dst: message_skip_virtual
      Src: /src/dovecot/src/lib-mail/test-message-size.c:187,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-mail/test-message-size.c:191,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:192,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-mail/test-message-size.c:192,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-mail/test-message-size.c:193,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-mail/test-message-size.c:194,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-mail/test-message-size.c:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 152
    functionDepth: 3
    functionLinenumber: 152
    functionLinenumberEnd: 197
    functionName: test_message_skip_virtual
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-size.c
    functionUses: 0
    functionsReached:
    - message_skip_virtual
    - test_assert_idx
    - strlen
    - i_stream_get_data
    - t_strndup
    - test_end
    - i_stream_unref
    - test_assert_strcmp_idx
    - i_stream_create_from_data
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_message_skip_virtual(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-mail/test-message-size.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 199
    functionDepth: 7
    functionLinenumber: 199
    functionLinenumberEnd: 207
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-mail/test-message-size.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:29,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct ssl_iostream_context_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 42
    functionName: ssl_iostream_context_cache_hash
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_context_cache_hash(const struct ssl_iostream_context_cache
      *cache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_settings_equals
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - struct ssl_iostream_context_cache*
    - struct ssl_iostream_context_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: ssl_iostream_context_cache_cmp
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_settings_equals
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_context_cache_cmp(const struct ssl_iostream_context_cache
      *c1,\n\t\t\t       const struct ssl_iostream_context_cache *c2)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:68,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:69,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:75,1
    - Dst: ssl_iostream_context_ref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:77,1
    - Dst: ssl_iostream_context_init_server
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:84,1
    - Dst: ssl_iostream_context_init_client
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:87,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:91,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:95,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:96,1
    - Dst: ssl_iostream_context_ref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 4
    argNames:
    - set
    - server
    - ctx_r
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - bool
    - struct ssl_iostream_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 101
    functionName: ssl_iostream_context_cache_get
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - ssl_iostream_context_ref
    - hash_table_create
    - p_new
    - pool_ref
    - ssl_iostream_context_init_server
    - hash_table_insert
    - ssl_iostream_context_init_client
    - hash_table_lookup
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_context_cache_get(const struct ssl_iostream_settings
      *set,\n\t\t\t       bool server,\n\t\t\t       struct ssl_iostream_context **ctx_r,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_cache_get
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:109,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - set
    - ctx_r
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - struct ssl_iostream_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: ssl_iostream_client_context_cache_get
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_context_cache_get
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_client_context_cache_get(const struct ssl_iostream_settings
      *set,\n\t\t\t\t\t  struct ssl_iostream_context **ctx_r,\n\t\t\t\t\t  const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_cache_get
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:123,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - set
    - ctx_r
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - struct ssl_iostream_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 129
    functionName: ssl_iostream_server_context_cache_get
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c
    functionUses: 2
    functionsReached:
    - ssl_iostream_context_cache_get
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_server_context_cache_get(const struct ssl_iostream_settings
      *set,\n\t\t\t\t\t  struct ssl_iostream_context **ctx_r,\n\t\t\t\t\t  const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:140,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:141,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:142,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:143,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:145,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:146,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 148
    functionName: ssl_iostream_context_cache_free
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c
    functionUses: 2
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - ssl_iostream_context_unref
    - hash_table_iterate_init
    - settings_free
    - pool_unref
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_context_cache_free(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 20
    functionName: i_stream_ssl_close
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c
    functionUses: 0
    functionsReached:
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_ssl_close(struct iostream_private *stream,\n\t\t\t       bool
      close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_shutdown
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:26,1
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:27,1
    - Dst: ssl_iostream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 30
    functionName: i_stream_ssl_destroy
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_unref
    - i_stream_free_buffer
    - openssl_iostream_shutdown
    linkageType: ''
    returnType: void
    signature: void i_stream_ssl_destroy(struct iostream_private *stream)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:45,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:48,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:49,1
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:58,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:60,1
    - Dst: SSL_pending
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:68,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:71,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:74,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:74,1
    - Dst: SSL_read
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:80,1
    - Dst: openssl_iostream_handle_error
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:83,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:91,1
    - Dst: SSL_pending
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:108,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:109,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 55
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 111
    functionName: i_stream_ssl_read
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_read
    - openssl_iostream_handle_error
    - io_stream_set_error
    - i_stream_try_alloc
    - openssl_iostream_bio_sync
    - i_stream_set_input_pending
    - ssl_iostream_handshake
    - I_MAX
    - SSL_pending
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_ssl_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:119,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:128,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 130
    functionName: openssl_i_stream_create_ssl
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *openssl_i_stream_create_ssl(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_ex_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:37,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ssl
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - SSL*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: ssl_tmp_dh_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - e_error
    - SSL_get_ex_data
    linkageType: ''
    returnType: DH
    signature: "DH *ssl_tmp_dh_callback(SSL *ssl,\n\t\t\t       int is_export ATTR_UNUSED,
      int keylength ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_strocpy
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:57,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - buf
    - size
    - ATTR_UNUSED
    - userdata
    argTypes:
    - char*
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 62
    functionName: pem_password_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_strocpy
    linkageType: ''
    returnType: int
    signature: "int pem_password_callback(char *buf, int size, int rwflag ATTR_UNUSED,\n\t\t
      \     void *userdata)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new_mem_buf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:74,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:74,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:76,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:77,1
    - Dst: PEM_read_bio_PrivateKey
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:84,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:86,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:87,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:90,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:95,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:95,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:96,1
    - Dst: BIO_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - ssl_ctx
    - set
    - set_name
    - pkey_r
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - struct ssl_iostream_cert*
    - char*
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 103
    functionName: openssl_iostream_load_key
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - str_c
    - BIO_new_mem_buf
    - t_str_new
    - str_printfa
    - BIO_free
    - strlen
    - t_strdup_printf
    - PEM_read_bio_PrivateKey
    - openssl_iostream_error
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_load_key(struct ssl_iostream_context *ssl_ctx,\n\t\t\t
      \ const struct ssl_iostream_cert *set,\n\t\t\t  const char *set_name,\n\t\t\t
      \ EVP_PKEY **pkey_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new_mem_buf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:112,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:112,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:115,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:116,1
    - Dst: PEM_read_bio_Parameters
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:120,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:121,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:122,1
    - Dst: BIO_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - set
    - pkey_r
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 128
    functionName: openssl_iostream_load_dh
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - BIO_new_mem_buf
    - PEM_read_bio_Parameters
    - BIO_free
    - strlen
    - t_strdup_printf
    - openssl_iostream_error
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_load_dh(const struct ssl_iostream_settings *set,\n\t\t\t
      \    EVP_PKEY **pkey_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_load_key
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:138,1
    - Dst: SSL_CTX_use_PrivateKey
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:140,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:141,1
    - Dst: openssl_iostream_key_load_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:143,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - set_name
    - set
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - char*
    - struct ssl_iostream_cert*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 148
    functionName: ssl_iostream_ctx_use_key
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - openssl_iostream_load_key
    - EVP_PKEY_free
    - t_strdup_printf
    - SSL_CTX_use_PrivateKey
    - openssl_iostream_key_load_error
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_ctx_use_key(struct ssl_iostream_context *ctx, const
      char *set_name,\n\t\t\t const struct ssl_iostream_cert *set,\n\t\t\t const char
      **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_load_dh
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:160,1
    - Dst: SSL_CTX_set0_tmp_dh_pkey
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:163,1
    - Dst: EVP_PKEY_get0_DH
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:165,1
    - Dst: SSL_CTX_set_tmp_dh
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:166,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:169,1
    - Dst: openssl_iostream_key_load_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:171,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - set
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - struct ssl_iostream_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 178
    functionName: ssl_iostream_ctx_use_dh
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_get0_DH
    - SSL_CTX_set0_tmp_dh_pkey
    - EVP_PKEY_free
    - t_strdup_printf
    - openssl_iostream_load_dh
    - SSL_CTX_set_tmp_dh
    - openssl_iostream_key_load_error
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_ctx_use_dh(struct ssl_iostream_context *ctx,\n\t\t\tconst
      struct ssl_iostream_settings *set,\n\t\t\tconst char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new_mem_buf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:187,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:187,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:189,1
    - Dst: PEM_read_bio_X509
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:191,1
    - Dst: SSL_CTX_use_certificate
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:195,1
    - Dst: ERR_peek_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:196,1
    - Dst: SSL_CTX_select_current_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:201,1
    - Dst: PEM_read_bio_X509
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:210,1
    - Dst: SSL_CTX_add0_chain_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:211,1
    - Dst: X509_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:213,1
    - Dst: ERR_peek_last_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:219,1
    - Dst: ERR_GET_LIB
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:220,1
    - Dst: ERR_GET_REASON
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:220,1
    - Dst: ERR_clear_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:221,1
    - Dst: X509_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:227,1
    - Dst: BIO_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:228,1
    - Dst: SSL_CTX_set_current_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:230,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - cert
    argTypes:
    - SSL_CTX*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 233
    functionName: ssl_ctx_use_certificate_chain
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - BIO_new_mem_buf
    - PEM_read_bio_X509
    - ERR_clear_error
    - ERR_peek_error
    - strlen
    - i_fatal
    - BIO_free
    - X509_free
    - SSL_CTX_add0_chain_cert
    - ERR_GET_LIB
    - SSL_CTX_set_current_cert
    - SSL_CTX_use_certificate
    - SSL_CTX_select_current_cert
    - ERR_GET_REASON
    - ERR_peek_last_error
    linkageType: ''
    returnType: int
    signature: int ssl_ctx_use_certificate_chain(SSL_CTX *ctx, const char *cert)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:239,1
    - Dst: STACK_OF
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:240,1
    - Dst: BIO_new_mem_buf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:246,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:246,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:248,1
    - Dst: PEM_X509_INFO_read_bio
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:249,1
    - Dst: BIO_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:250,1
    - Dst: sk_X509_NAME_new_null
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:255,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:257,1
    - Dst: sk_X509_INFO_num
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:258,1
    - Dst: sk_X509_INFO_value
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:259,1
    - Dst: X509_STORE_add_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:261,1
    - Dst: X509_get_subject_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:262,1
    - Dst: X509_NAME_dup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:264,1
    - Dst: sk_X509_NAME_push
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:266,1
    - Dst: X509_STORE_add_crl
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:269,1
    - Dst: sk_X509_INFO_pop_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:271,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - store
    - ca
    - xnames_r
    argTypes:
    - X509_STORE*
    - char*
    - STACK_OF**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 274
    functionName: load_ca
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - X509_STORE_add_crl
    - BIO_new_mem_buf
    - X509_NAME_dup
    - sk_X509_INFO_num
    - STACK_OF
    - BIO_free
    - strlen
    - i_fatal
    - sk_X509_INFO_pop_free
    - sk_X509_NAME_new_null
    - sk_X509_NAME_push
    - X509_STORE_add_cert
    - PEM_X509_INFO_read_bio
    - X509_get_subject_name
    - sk_X509_INFO_value
    linkageType: ''
    returnType: int
    signature: "int load_ca(X509_STORE *store, const char *ca,\n\t\t   STACK_OF(X509_NAME)
      **xnames_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:280,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:283,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - ca_dir
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 287
    functionName: load_ca_locations
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - openssl_iostream_error
    - t_strdup_printf
    - SSL_CTX_load_verify_locations
    linkageType: ''
    returnType: int
    signature: "int load_ca_locations(struct ssl_iostream_context *ctx,\n\t\t  const
      char *ca_dir, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_get_cert_store
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:298,1
    - Dst: X509_STORE_set_flags
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:299,1
    - Dst: SSL_CTX_set_client_CA_list
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - set
    - ca_names
    argTypes:
    - struct ssl_iostream_context*
    - struct ssl_iostream_settings*
    - STACK_OF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 305
    functionName: ssl_iostream_ctx_verify_remote_cert
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_client_CA_list
    - SSL_CTX_get_cert_store
    - X509_STORE_set_flags
    linkageType: ''
    returnType: void
    signature: "void ssl_iostream_ctx_verify_remote_cert(struct ssl_iostream_context
      *ctx,\n\t\t\t\t    const struct ssl_iostream_settings *set,\n\t\t\t\t    STACK_OF(X509_NAME)
      *ca_names)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:312,1
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:313,1
    - Dst: openssl_iostream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:314,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:319,1
    - Dst: struct ssl_iostream*::sni_callback
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:322,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:324,1
    - Dst: openssl_iostream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:325,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ssl_io
    - host
    - al
    argTypes:
    - struct ssl_iostream*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 332
    functionName: ssl_servername_process
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - struct ssl_iostream*::sni_callback
    - i_strdup
    - e_error
    - openssl_iostream_set_error
    - i_free
    - connection_is_valid_dns_name
    linkageType: ''
    returnType: int
    signature: "int ssl_servername_process(struct ssl_iostream *ssl_io, const char
      *host,\n\t\t\t\t  int *al)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_ex_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:342,1
    - Dst: SSL_get_servername
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:343,1
    - Dst: ssl_servername_process
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ssl
    - al
    - ATTR_UNUSED
    argTypes:
    - SSL*
    - int*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 349
    functionName: ssl_servername_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - SSL_get_servername
    - ssl_servername_process
    - SSL_get_ex_data
    linkageType: ''
    returnType: int
    signature: "int ssl_servername_callback(SSL *ssl, int *al,\n\t\t\t\t   void *context
      ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 379
    functionName: ssl_ja3_is_ext_greased
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool ssl_ja3_is_ext_greased(int id)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:416,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - nid
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 431
    functionName: ssl_ja3_nid_to_cid
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int ssl_ja3_nid_to_cid(int nid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: be16_to_cpu_unaligned
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:441,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:457,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ext
    - extlen
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 458
    functionName: extract_server_name
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - be16_to_cpu_unaligned
    - t_strdup_until
    linkageType: ''
    returnType: char
    signature: char *extract_server_name(const unsigned char *ext, size_t extlen)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_ex_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:464,1
    - Dst: SSL_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:466,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:469,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:471,1
    - Dst: SSL_client_hello_get0_ciphers
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:472,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:476,1
    - Dst: be16_to_cpu_unaligned
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:477,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:478,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:480,1
    - Dst: SSL_client_hello_get1_extensions_present
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:484,1
    - Dst: ssl_ja3_is_ext_greased
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:487,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:492,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:493,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:495,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:497,1
    - Dst: SSL_client_hello_get0_ext
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:503,1
    - Dst: be16_to_cpu_unaligned
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:507,1
    - Dst: be16_to_cpu_unaligned
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:510,1
    - Dst: ssl_ja3_is_ext_greased
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:511,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:516,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:517,1
    - Dst: ssl_ja3_nid_to_cid
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:517,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:521,1
    - Dst: SSL_client_hello_get0_ext
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:525,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:530,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:531,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:536,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:537,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:537,1
    - Dst: SSL_client_hello_get0_ext
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:541,1
    - Dst: extract_server_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:544,1
    - Dst: ssl_servername_process
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:547,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 49
    argCount: 3
    argNames:
    - ssl
    - al
    - ATTR_UNUSED
    argTypes:
    - SSL*
    - int*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 551
    functionName: ssl_clienthello_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - extract_server_name
    - ssl_ja3_nid_to_cid
    - ssl_ja3_is_ext_greased
    - SSL_client_hello_get0_ciphers
    - i_strdup
    - SSL_client_hello_get1_extensions_present
    - ssl_servername_process
    - be16_to_cpu_unaligned
    - SSL_version
    - OPENSSL_free
    - SSL_client_hello_get0_ext
    - i_free
    - SSL_get_ex_data
    linkageType: ''
    returnType: int
    signature: "int ssl_clienthello_callback(SSL *ssl, int *al,\n\t\t\t\t    void
      *context ATTR_UNUSED)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:613,1
    - Dst: SSL_CTX_get_cert_store
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:617,1
    - Dst: load_ca
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:618,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:619,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:622,1
    - Dst: ssl_iostream_ctx_verify_remote_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:625,1
    - Dst: load_ca_locations
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:629,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:634,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:635,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:637,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - set
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - struct ssl_iostream_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 645
    functionName: ssl_iostream_context_load_ca
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - load_ca_locations
    - STACK_OF
    - t_strdup_printf
    - SSL_CTX_get_cert_store
    - SSL_CTX_set_default_verify_paths
    - openssl_iostream_error
    - load_ca
    - ssl_iostream_ctx_verify_remote_cert
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_context_load_ca(struct ssl_iostream_context *ctx,\n\t\t\t
      \    const struct ssl_iostream_settings *set,\n\t\t\t     const char **error_r)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:656,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:657,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:659,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:662,1
    - Dst: SSL_CTX_set1_curves_list
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:663,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:664,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:666,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:670,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:671,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:673,1
    - Dst: SSL_CTX_set_options
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:677,1
    - Dst: openssl_min_protocol_to_options
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:683,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:685,1
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:691,1
    - Dst: ssl_ctx_use_certificate_chain
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:698,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:699,1
    - Dst: openssl_iostream_use_certificate_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:703,1
    - Dst: ssl_iostream_ctx_use_key
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:707,1
    - Dst: ssl_ctx_use_certificate_chain
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:715,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:716,1
    - Dst: openssl_iostream_use_certificate_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:719,1
    - Dst: ssl_iostream_ctx_use_key
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:724,1
    - Dst: ssl_iostream_ctx_use_dh
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:730,1
    - Dst: ssl_iostream_context_load_ca
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:736,1
    - Dst: OBJ_txt2nid
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:741,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:743,1
    - Dst: SSL_CTX_set_client_hello_cb
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:751,1
    - Dst: SSL_CTX_set_tlsext_servername_callback
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:753,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:755,1
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:758,1
    - Dst: openssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:762,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 66
    argCount: 3
    argNames:
    - ctx
    - set
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - struct ssl_iostream_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 647
    functionDepth: 3
    functionLinenumber: 647
    functionLinenumberEnd: 766
    functionName: ssl_iostream_context_set
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_context_load_ca
    - openssl_iostream_context_set_application_protocols
    - strlen
    - t_strdup_printf
    - SSL_CTX_set1_curves_list
    - SSL_CTX_set_options
    - i_unreached
    - ssl_ctx_use_certificate_chain
    - SSL_CTX_set_tlsext_servername_callback
    - SSL_CTX_set_cipher_list
    - OBJ_txt2nid
    - openssl_min_protocol_to_options
    - openssl_iostream_use_certificate_error
    - ssl_iostream_ctx_use_dh
    - SSL_CTX_set_ciphersuites
    - SSL_CTX_set_alpn_select_cb
    - ssl_iostream_ctx_use_key
    - SSL_CTX_set_min_proto_version
    - openssl_iostream_error
    - SSL_CTX_set_client_hello_cb
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_context_set(struct ssl_iostream_context *ctx,\n\t\t\t
      const struct ssl_iostream_settings *set,\n\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_tmp_dh_callback
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:775,1
    - Dst: SSL_CTX_set_options
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:780,1
    - Dst: SSL_CTX_set_options
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ssl_ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - SSL_CTX*
    - struct ssl_iostream_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 785
    functionName: ssl_proxy_ctx_set_crypto_params
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_tmp_dh_callback
    - SSL_CTX_set_options
    linkageType: ''
    returnType: int
    signature: "int ssl_proxy_ctx_set_crypto_params(SSL_CTX *ssl_ctx,\n\t\t\t\tconst
      struct ssl_iostream_settings *set ATTR_UNUSED,\n\t\t\t\tconst char **error_r
      ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:790,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:791,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:793,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:793,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:795,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:796,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:797,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:798,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:800,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:801,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:804,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:807,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:808,1
    - Dst: SSL_CTX_set_alpn_protos
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:810,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - names
    argTypes:
    - struct ssl_iostream_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 813
    functionName: openssl_iostream_context_set_application_protocols
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - array_append_space
    - p_array_init
    - SSL_CTX_set_alpn_protos
    - strlen
    - str_array_length
    - buffer_create_dynamic
    - array_front
    - array_append_zero
    - buffer_append_c
    - i_assert
    - p_memdup
    linkageType: ''
    returnType: void
    signature: "void openssl_iostream_context_set_application_protocols(struct ssl_iostream_context
      *ctx,\n\t\t\t\t\t\t\tconst char *const *names)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:823,1
    - Dst: SSL_CTX_clear_options
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:831,1
    - Dst: SSL_CTX_set_options
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:837,1
    - Dst: SSL_CTX_set_mode
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:839,1
    - Dst: SSL_CTX_set_mode
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:842,1
    - Dst: SSL_CTX_set_mode
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:845,1
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:848,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:850,1
    - Dst: ssl_proxy_ctx_set_crypto_params
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:857,1
    - Dst: ssl_iostream_context_set
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:860,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - set
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - struct ssl_iostream_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 815
    functionDepth: 4
    functionLinenumber: 815
    functionLinenumberEnd: 861
    functionName: ssl_iostream_context_init_common
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - SSL_CTX_set_mode
    - ssl_iostream_context_set
    - t_strdup_printf
    - EVP_get_digestbyname
    - SSL_CTX_set_options
    - SSL_CTX_clear_options
    - ssl_proxy_ctx_set_crypto_params
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_context_init_common(struct ssl_iostream_context *ctx,\n\t\t\t\t
      const struct ssl_iostream_settings *set,\n\t\t\t\t const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:870,1
    - Dst: SSLv23_client_method
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:870,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:871,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:872,1
    - Dst: SSL_CTX_set_mode
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:875,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:877,1
    - Dst: ssl_iostream_context_init_common
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:881,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:882,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - set
    - ctx_r
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - struct ssl_iostream_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 863
    functionDepth: 5
    functionLinenumber: 863
    functionLinenumberEnd: 887
    functionName: openssl_iostream_context_init_client
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_new
    - SSL_CTX_set_mode
    - ssl_iostream_context_unref
    - t_strdup_printf
    - ssl_iostream_context_init_common
    - SSLv23_client_method
    - i_new
    - openssl_iostream_error
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_context_init_client(const struct ssl_iostream_settings
      *set,\n\t\t\t\t\t struct ssl_iostream_context **ctx_r,\n\t\t\t\t\t const char
      **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:896,1
    - Dst: SSLv23_server_method
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:896,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:897,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:898,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:902,1
    - Dst: ssl_iostream_context_init_common
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:905,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:906,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - set
    - ctx_r
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - struct ssl_iostream_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 889
    functionDepth: 5
    functionLinenumber: 889
    functionLinenumberEnd: 911
    functionName: openssl_iostream_context_init_server
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_new
    - ssl_iostream_context_unref
    - t_strdup_printf
    - ssl_iostream_context_init_common
    - SSLv23_server_method
    - i_new
    - openssl_iostream_error
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_context_init_server(const struct ssl_iostream_settings
      *set,\n\t\t\t\t\t struct ssl_iostream_context **ctx_r,\n\t\t\t\t\t const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ssl_iostream_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 917
    functionName: openssl_iostream_context_ref
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_context_ref(struct ssl_iostream_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:921,1
    - Dst: SSL_CTX_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:925,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:926,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ssl_iostream_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 928
    functionName: openssl_iostream_context_unref
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_free
    - i_assert
    - i_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_context_unref(struct ssl_iostream_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dovecot_openssl_common_global_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:934,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 935
    functionName: openssl_iostream_global_deinit
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - dovecot_openssl_common_global_unref
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_global_deinit(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dovecot_openssl_common_global_ref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:947,1
    - Dst: SSL_get_ex_new_index
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:950,1
    - Dst: dovecot_openssl_common_global_set_engine
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:953,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c:955,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 966
    functionName: openssl_iostream_global_init
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    functionUses: 0
    functionsReached:
    - SSL_get_ex_new_index
    - t_strdup_printf
    - dovecot_openssl_common_global_ref
    - dovecot_openssl_common_global_set_engine
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_global_init(const struct ssl_iostream_settings
      *set,\n\t\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:38,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:40,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:42,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct test_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: send_output
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - random_fill
    - o_stream_send
    - i_rand_limit
    - test_assert
    linkageType: ''
    returnType: void
    signature: void send_output(struct test_endpoint *ep)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:49,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:50,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ep
    - finish
    argTypes:
    - struct test_endpoint*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 59
    functionName: flush_output
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - io_loop_stop
    - o_stream_finish
    - test_assert
    linkageType: ''
    returnType: int
    signature: int flush_output(struct test_endpoint *ep, bool finish)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:65,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:66,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:67,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:70,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct test_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 74
    functionName: handshake_input_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - ssl_iostream_is_handshaked
    - ssl_iostream_handshake
    linkageType: ''
    returnType: void
    signature: void handshake_input_callback(struct test_endpoint *ep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:78,1
    - Dst: flush_output
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct test_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: bufsize_flush_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - flush_output
    linkageType: ''
    returnType: int
    signature: int bufsize_flush_callback(struct test_endpoint *ep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flush_output
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct test_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: bufsize_finish_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - flush_output
    linkageType: ''
    returnType: int
    signature: int bufsize_finish_callback(struct test_endpoint *ep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:90,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:96,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:96,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:97,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct test_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: bufsize_input_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - i_stream_skip
    - io_loop_stop
    - i_rand_limit
    - test_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: void
    signature: void bufsize_input_callback(struct test_endpoint *ep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:105,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:105,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct test_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: bufsize_discard_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - i_stream_read_bytes
    - test_assert
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void bufsize_discard_callback(struct test_endpoint *ep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flush_output
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct test_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: small_packets_flush_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - flush_output
    linkageType: ''
    returnType: int
    signature: int small_packets_flush_callback(struct test_endpoint *ep)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:118,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:127,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:127,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:131,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:133,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:139,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:139,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:141,1
    - Dst: flush_output
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:146,1
    - Dst: send_output
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct test_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 149
    functionName: small_packets_input_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - send_output
    - I_MIN
    - i_stream_set_input_pending
    - flush_output
    - i_stream_skip
    - i_rand_limit
    - test_assert
    - memcmp
    - buffer_delete
    - i_stream_read_bytes
    linkageType: ''
    returnType: void
    signature: void small_packets_input_callback(struct test_endpoint *ep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:154,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:155,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:158,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:159,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:160,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:162,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - fd
    - set
    argTypes:
    - int
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 165
    functionName: create_test_endpoint
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_stream_create_fd
    - o_stream_create_fd
    - p_new
    - o_stream_uncork
    - buffer_create_dynamic
    - p_memdup
    linkageType: ''
    returnType: struct test_endpoint
    signature: 'struct test_endpoint *

      create_test_endpoint(int fd, const struct ssl_iostream_settings *set)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:172,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:174,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:175,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:176,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:177,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:179,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _ep
    argTypes:
    - struct test_endpoint**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 181
    functionName: destroy_test_endpoint
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_context_unref
    - io_remove
    - o_stream_unref
    - i_close_fd
    - ssl_iostream_destroy
    - pool_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void destroy_test_endpoint(struct test_endpoint **_ep)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: socketpair
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:191,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:192,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:193,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:194,1
    - Dst: create_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:196,1
    - Dst: create_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:197,1
    - Dst: ssl_iostream_context_init_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:204,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:206,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:207,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:208,1
    - Dst: ssl_iostream_context_init_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:211,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:213,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:214,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:215,1
    - Dst: io_stream_create_ssl_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:219,1
    - Dst: io_stream_create_ssl_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:225,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:231,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:232,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:234,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:237,1
    - Dst: ssl_iostream_get_state
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:242,1
    - Dst: ssl_iostream_get_state
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:243,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:244,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:244,1
    - Dst: ssl_iostream_get_state
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:246,1
    - Dst: ssl_iostream_get_state
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:247,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:248,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:248,1
    - Dst: ssl_iostream_check_cert_validity
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:253,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:255,1
    - Dst: ssl_iostream_check_cert_validity
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:259,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:261,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:265,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:266,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:267,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:268,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:270,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:271,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 59
    argCount: 3
    argNames:
    - server_set
    - client_set
    - hostname
    argTypes:
    - struct ssl_iostream_settings*
    - struct ssl_iostream_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 274
    functionName: test_iostream_ssl_handshake_real
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - io_stream_create_ssl_server
    - i_error
    - fd_set_nonblock
    - io_add_istream
    - create_test_endpoint
    - ssl_iostream_get_state
    - i_fatal
    - ssl_iostream_handshake
    - o_stream_unref
    - ssl_iostream_get_last_error
    - io_stream_create_ssl_client
    - i_stream_unref
    - ssl_iostream_context_init_server
    - socketpair
    - ssl_iostream_context_init_client
    - destroy_test_endpoint
    - ssl_iostream_check_cert_validity
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: "int test_iostream_ssl_handshake_real(struct ssl_iostream_settings
      *server_set,\n\t\t\t\t\t    struct ssl_iostream_settings *client_set,\n\t\t\t\t\t
      \   const char *hostname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:282,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:284,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:287,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:288,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:290,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:290,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:295,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:296,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:298,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:298,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:303,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:304,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:306,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:306,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:311,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:312,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:314,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:316,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:316,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:321,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:322,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:324,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:325,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:326,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:326,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:331,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:332,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:335,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:336,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:336,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:341,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:342,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:343,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:345,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:346,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:346,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:349,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:350,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:351,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:353,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:354,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:354,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:359,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:360,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:364,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:365,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:365,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:370,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:371,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:376,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:377,1
    - Dst: test_iostream_ssl_handshake_real
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:377,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:381,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:382,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 276
    functionDepth: 3
    functionLinenumber: 276
    functionLinenumberEnd: 385
    functionName: test_iostream_ssl_handshake
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - i_zero
    - ssl_iostream_context_cache_free
    - test_assert_idx
    - ssl_iostream_test_settings_server
    - io_loop_create
    - test_iostream_ssl_handshake_real
    - test_expect_error_string
    - io_loop_destroy
    - test_end
    - ssl_iostream_test_settings_client
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_ssl_handshake(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:395,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:397,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:398,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:399,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:400,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:402,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:404,1
    - Dst: create_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:405,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:406,1
    - Dst: create_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:414,1
    - Dst: ssl_iostream_context_init_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:416,1
    - Dst: ssl_iostream_context_init_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:416,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:419,1
    - Dst: io_stream_create_ssl_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:419,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:422,1
    - Dst: io_stream_create_ssl_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:422,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:426,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:427,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:429,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:430,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:432,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:432,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:433,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:433,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:435,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:436,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:438,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:440,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:440,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:442,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:444,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:446,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:447,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:448,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:448,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:450,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:452,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:455,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:456,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:457,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:458,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:459,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:460,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:461,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:462,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:463,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:465,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:466,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:467,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:468,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:470,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:471,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:473,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:474,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:476,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 477
    functionName: test_iostream_ssl_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_avail_size
    - io_remove
    - o_stream_unref
    - ssl_iostream_test_settings_server
    - io_loop_destroy
    - o_stream_set_flush_pending
    - io_stream_create_ssl_client
    - test_assert
    - o_stream_set_flush_callback
    - io_loop_run
    - ssl_iostream_context_cache_free
    - random_fill
    - create_test_endpoint
    - i_fatal
    - test_end
    - ssl_iostream_context_init_client
    - io_stream_create_ssl_server
    - io_add_istream
    - ssl_iostream_handshake
    - ssl_iostream_context_init_server
    - socketpair
    - i_free
    - i_malloc
    - fd_set_nonblock
    - io_loop_create
    - test_has_failed
    - o_stream_send
    - ssl_iostream_test_settings_client
    - i_stream_unref
    - destroy_test_endpoint
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_ssl_get_buffer_avail_size(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:487,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:489,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:490,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:491,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:492,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:494,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:496,1
    - Dst: create_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:497,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:498,1
    - Dst: create_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:500,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:503,1
    - Dst: ssl_iostream_context_init_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:503,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:505,1
    - Dst: ssl_iostream_context_init_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:505,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:511,1
    - Dst: io_stream_create_ssl_server
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:511,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:514,1
    - Dst: io_stream_create_ssl_client
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:514,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:518,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:520,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:523,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:525,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:528,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:528,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:529,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:529,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:531,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:533,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:535,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:537,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:540,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:541,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:542,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:543,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:545,1
    - Dst: destroy_test_endpoint
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:546,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:548,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:549,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:551,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 479
    functionDepth: 3
    functionLinenumber: 479
    functionLinenumberEnd: 552
    functionName: test_iostream_ssl_small_packets
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - ssl_iostream_test_settings_server
    - io_loop_destroy
    - io_stream_create_ssl_client
    - test_assert
    - o_stream_set_flush_callback
    - io_loop_run
    - ssl_iostream_context_cache_free
    - create_test_endpoint
    - timeout_add
    - i_fatal
    - test_end
    - ssl_iostream_context_init_client
    - io_stream_create_ssl_server
    - io_add_istream
    - ssl_iostream_handshake
    - ssl_iostream_context_init_server
    - socketpair
    - fd_set_nonblock
    - io_loop_create
    - ssl_iostream_test_settings_client
    - i_stream_unref
    - destroy_test_endpoint
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_iostream_ssl_small_packets(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_openssl_init
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:562,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:563,1
    - Dst: ssl_iostream_openssl_deinit
      Src: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 554
    functionDepth: 7
    functionLinenumber: 554
    functionLinenumberEnd: 566
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    functionUses: 7
    functionsReached:
    - ssl_iostream_openssl_deinit
    - test_run
    - ssl_iostream_openssl_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-test.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - test_set
    argTypes:
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 163
    functionName: ssl_iostream_test_settings_server
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-test.c
    functionUses: 4
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_test_settings_server(struct ssl_iostream_settings
      *test_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-test.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - test_set
    argTypes:
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 171
    functionName: ssl_iostream_test_settings_client
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-test.c
    functionUses: 3
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_test_settings_client(struct ssl_iostream_settings
      *test_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - data
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: openssl_get_error_data
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: openssl_get_error_data(data, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - data
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: openssl_get_error_data
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: openssl_get_error_data(data, flags)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:58,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:59,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - min_protocol
    - opt_r
    - version_r
    argTypes:
    - char*
    - long*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 70
    functionName: openssl_min_protocol_to_options
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int openssl_min_protocol_to_options(const char *min_protocol, long
      *opt_r,\n\t\t\t\t    int *version_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get1_peer_certificate
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:81,1
    - Dst: SSL_get_peer_certificate
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:83,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:85,1
    - Dst: X509_check_host
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:92,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:92,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:95,1
    - Dst: free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:96,1
    - Dst: X509_check_ip_asc
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:99,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:100,1
    - Dst: X509_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - ssl
    - verify_name
    - reason_r
    argTypes:
    - SSL*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 111
    functionName: openssl_cert_match_name
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 0
    functionsReached:
    - SSL_get1_peer_certificate
    - strlen
    - t_strdup_printf
    - X509_free
    - free
    - SSL_get_peer_certificate
    - X509_check_host
    - X509_check_ip_asc
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool openssl_cert_match_name(SSL *ssl, const char *verify_name,\n\t\t\t
      \    const char **reason_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:119,1
    - Dst: ERR_error_string_n
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:120,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - err
    - data
    - flags
    argTypes:
    - unsigned long
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 126
    functionName: ssl_err2str
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 0
    functionsReached:
    - t_malloc0
    - t_strdup_printf
    - ERR_error_string_n
    linkageType: ''
    returnType: char
    signature: char *ssl_err2str(unsigned long err, const char *data, int flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: openssl_get_error_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:135,1
    - Dst: ERR_GET_REASON
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:136,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:137,1
    - Dst: ERR_peek_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:138,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:141,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:143,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:144,1
    - Dst: ssl_err2str
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:144,1
    - Dst: ssl_err2str
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:149,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:153,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:154,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 156
    functionName: openssl_iostream_error
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 7
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - ERR_peek_error
    - i_fatal_status
    - openssl_get_error_data
    - ssl_err2str
    - str_append
    - ERR_GET_REASON
    linkageType: ''
    returnType: char
    signature: char *openssl_iostream_error(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERR_peek_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:160,1
    - Dst: ERR_GET_LIB
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:162,1
    - Dst: ERR_GET_REASON
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:163,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: openssl_iostream_key_load_error
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 2
    functionsReached:
    - ERR_GET_LIB
    - ERR_peek_error
    - openssl_iostream_error
    - ERR_GET_REASON
    linkageType: ''
    returnType: char
    signature: char *openssl_iostream_key_load_error(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cert
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: is_pem_key
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: bool
    signature: bool is_pem_key(const char *cert)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ERR_peek_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:181,1
    - Dst: ERR_GET_LIB
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:182,1
    - Dst: ERR_GET_REASON
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:183,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:184,1
    - Dst: is_pem_key
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:185,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - cert
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 191
    functionName: openssl_iostream_use_certificate_error
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 1
    functionsReached:
    - ERR_peek_error
    - ERR_GET_LIB
    - ERR_GET_REASON
    - is_pem_key
    - openssl_iostream_error
    linkageType: ''
    returnType: char
    signature: char *openssl_iostream_use_certificate_error(const char *cert)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERR_get_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: openssl_iostream_clear_errors
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    functionUses: 0
    functionsReached:
    - ERR_get_error
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_clear_errors(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_config_binary
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:131,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:132,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:137,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:138,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:148,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:151,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:153,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:156,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:170,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 178
    functionName: ssl_settings_check
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - i_warning
    - settings_get_config_binary
    - strcasecmp
    - t_strdup_printf
    - str_array_icase_find
    - t_strsplit_spaces
    - strstr
    linkageType: ''
    returnType: bool
    signature: "bool ssl_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t
      \  const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:186,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:191,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:197,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 209
    functionName: ssl_server_settings_check
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool ssl_server_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:216,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:217,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:218,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - event
    - set_r
    - error_r
    argTypes:
    - struct event*
    - struct ssl_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 212
    functionDepth: 3
    functionLinenumber: 212
    functionLinenumberEnd: 222
    functionName: ssl_client_settings_get
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 2
    functionsReached:
    - event_unref
    - event_create
    - settings_event_add_filter_name
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int ssl_client_settings_get(struct event *event,\n\t\t\t    const
      struct ssl_settings **set_r,\n\t\t\t    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:229,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:230,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:231,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:234,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:237,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - event
    - set_r
    - server_set_r
    - error_r
    argTypes:
    - struct event*
    - struct ssl_settings**
    - struct ssl_server_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 241
    functionName: ssl_server_settings_get
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 3
    functionsReached:
    - event_create
    - event_unref
    - settings_event_add_filter_name
    - settings_free
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int ssl_server_settings_get(struct event *event,\n\t\t\t    const
      struct ssl_settings **set_r,\n\t\t\t    const struct ssl_server_settings **server_set_r,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:247,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:248,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ssl_set
    argTypes:
    - struct ssl_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 262
    functionName: ssl_common_settings_to_iostream_set
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - pool_add_external_ref
    - p_new
    linkageType: ''
    returnType: struct ssl_iostream_settings
    signature: 'struct ssl_iostream_settings *

      ssl_common_settings_to_iostream_set(const struct ssl_settings *ssl_set)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_common_settings_to_iostream_set
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:269,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:271,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:274,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ssl_set
    - set_r
    argTypes:
    - struct ssl_settings*
    - struct ssl_iostream_settings**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 284
    functionName: ssl_client_settings_to_iostream_set
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 0
    functionsReached:
    - settings_file_get
    - ssl_common_settings_to_iostream_set
    linkageType: ''
    returnType: void
    signature: "void ssl_client_settings_to_iostream_set(\n\tconst struct ssl_settings
      *ssl_set,\n\tconst struct ssl_iostream_settings **set_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_common_settings_to_iostream_set
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:292,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:293,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:295,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:296,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:298,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:303,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:305,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:310,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - ssl_set
    - ssl_server_set
    - set_r
    argTypes:
    - struct ssl_settings*
    - struct ssl_server_settings*
    - struct ssl_iostream_settings**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 324
    functionName: ssl_server_settings_to_iostream_set
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
    functionUses: 3
    functionsReached:
    - strcmp
    - pool_add_external_ref
    - settings_file_get
    - ssl_common_settings_to_iostream_set
    linkageType: ''
    returnType: void
    signature: "void ssl_server_settings_to_iostream_set(\n\tconst struct ssl_settings
      *ssl_set,\n\tconst struct ssl_server_settings *ssl_server_set,\n\tconst struct
      ssl_iostream_settings **set_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:34,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:35,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 40
    functionName: dovecot_openssl_malloc
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - malloc
    - unlikely
    linkageType: ''
    returnType: void
    signature: void *dovecot_openssl_malloc(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:49,1
    - Dst: realloc
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:52,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:53,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 58
    functionName: dovecot_openssl_realloc
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - unlikely
    - realloc
    - free
    linkageType: ''
    returnType: void
    signature: void *dovecot_openssl_realloc(void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: dovecot_openssl_free
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dovecot_openssl_free(void *ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_set_mem_functions
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:77,1
    - Dst: OPENSSL_init_ssl
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 83
    functionName: dovecot_openssl_common_global_ref
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c
    functionUses: 1
    functionsReached:
    - CRYPTO_set_mem_functions
    - OPENSSL_init_ssl
    linkageType: ''
    returnType: void
    signature: void dovecot_openssl_common_global_ref(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:87,1
    - Dst: OSSL_PROVIDER_unload
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:94,1
    - Dst: ENGINE_finish
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:96,1
    - Dst: OPENSSL_cleanup
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 102
    functionName: dovecot_openssl_common_global_unref
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c
    functionUses: 1
    functionsReached:
    - OSSL_PROVIDER_unload
    - i_assert
    - ENGINE_finish
    - OPENSSL_cleanup
    linkageType: ''
    returnType: bool
    signature: bool dovecot_openssl_common_global_unref(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: OSSL_PROVIDER_try_load
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:111,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:112,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:113,1
    - Dst: ENGINE_load_builtin_engines
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:118,1
    - Dst: ENGINE_by_id
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:119,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:121,1
    - Dst: ENGINE_init
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:124,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:125,1
    - Dst: ENGINE_free
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:126,1
    - Dst: ENGINE_set_default
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:130,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:131,1
    - Dst: ENGINE_free
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:132,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - engine
    - error_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 140
    functionName: dovecot_openssl_common_global_set_engine
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c
    functionUses: 1
    functionsReached:
    - OSSL_PROVIDER_try_load
    - ENGINE_by_id
    - t_strdup_printf
    - ENGINE_init
    - ENGINE_free
    - ENGINE_load_builtin_engines
    - ENGINE_set_default
    - openssl_iostream_error
    linkageType: ''
    returnType: int
    signature: "int dovecot_openssl_common_global_set_engine(const char *engine,\n\t\t\t\t\t
      \    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: ASN1_STRING_get0_data
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASN1_STRING_get0_data(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:38,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:43,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ssl_io
    - str
    - fallback_error
    argTypes:
    - struct ssl_iostream*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 47
    functionName: openssl_iostream_set_error_full
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void openssl_iostream_set_error_full(struct ssl_iostream *ssl_io,\n\t\t\t\tconst
      char *str, bool fallback_error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_set_error_full
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ssl_io
    - str
    argTypes:
    - struct ssl_iostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: openssl_iostream_set_error
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 1
    functionsReached:
    - openssl_iostream_set_error_full
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_set_error(struct ssl_iostream *ssl_io, const
      char *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_ex_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:58,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:62,1
    - Dst: SSL_alert_desc_string_long
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:63,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:66,1
    - Dst: SSL_alert_type_string_long
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:68,1
    - Dst: SSL_alert_desc_string_long
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:69,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:73,1
    - Dst: SSL_state_string_long
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:74,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:76,1
    - Dst: SSL_state_string_long
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:78,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ssl
    - where
    - ret
    argTypes:
    - SSL*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 80
    functionName: openssl_info_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - e_debug
    - SSL_state_string_long
    - SSL_alert_desc_string_long
    - SSL_get_ex_data
    - SSL_alert_type_string_long
    linkageType: ''
    returnType: void
    signature: void openssl_info_callback(const SSL *ssl, int where, int ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_ex_data_X509_STORE_CTX_idx
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:85,1
    - Dst: X509_STORE_CTX_get_ex_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:91,1
    - Dst: SSL_get_ex_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:92,1
    - Dst: X509_get_subject_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:95,1
    - Dst: X509_STORE_CTX_get_current_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:95,1
    - Dst: X509_NAME_oneline
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:97,1
    - Dst: openssl_iostream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:102,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:102,1
    - Dst: X509_verify_cert_error_string
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:104,1
    - Dst: X509_STORE_CTX_get_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:104,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:109,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - preverify_ok
    - ctx
    argTypes:
    - int
    - X509_STORE_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 120
    functionName: openssl_iostream_verify_client_cert
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - X509_STORE_CTX_get_error
    - X509_NAME_oneline
    - X509_get_subject_name
    - e_debug
    - SSL_get_ex_data_X509_STORE_CTX_idx
    - X509_STORE_CTX_get_current_cert
    - t_strdup_printf
    - openssl_iostream_set_error
    - X509_STORE_CTX_get_ex_data
    - SSL_get_ex_data
    - X509_verify_cert_error_string
    linkageType: ''
    returnType: int
    signature: int openssl_iostream_verify_client_cert(int preverify_ok, X509_STORE_CTX
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_set_info_callback
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:127,1
    - Dst: SSL_set_verify
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 137
    functionName: openssl_iostream_set
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_set_info_callback
    - SSL_set_verify
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_set(struct ssl_iostream *ssl_io)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:154,1
    - Dst: i_stream_get_root_io
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:154,1
    - Dst: SSL_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:156,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:158,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:159,1
    - Dst: BIO_new_bio_pair
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:169,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:170,1
    - Dst: SSL_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:171,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:175,1
    - Dst: ssl_iostream_context_ref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:178,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:183,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:184,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:189,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:191,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:193,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:194,1
    - Dst: SSL_set_bio
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:197,1
    - Dst: SSL_set_ex_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:198,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:199,1
    - Dst: openssl_iostream_set
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:201,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:203,1
    - Dst: openssl_i_stream_create_ssl
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:205,1
    - Dst: openssl_o_stream_create_ssl
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:208,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:209,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:209,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:210,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:211,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:211,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:212,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:215,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 9
    argNames:
    - ctx
    - event_parent
    - host
    - client
    - flags
    - input
    - output
    - iostream_r
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - struct event*
    - char*
    - bool
    - enum ssl_iostream_flags
    - struct istream**
    - struct ostream**
    - struct ssl_iostream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 220
    functionName: openssl_iostream_create
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_context_ref
    - o_stream_uncork
    - o_stream_set_name
    - SSL_set_ex_data
    - t_strdup_printf
    - i_strdup
    - o_stream_get_name
    - SSL_set_bio
    - event_set_append_log_prefix
    - i_stream_set_name
    - i_stream_get_root_io
    - i_stream_get_name
    - openssl_i_stream_create_ssl
    - openssl_iostream_error
    - event_create
    - BIO_new_bio_pair
    - SSL_free
    - openssl_iostream_set
    - SSL_set_tlsext_host_name
    - i_assert
    - SSL_new
    - openssl_o_stream_create_ssl
    - o_stream_set_no_error_handling
    - i_new
    - event_add_category
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_create(struct ssl_iostream_context *ctx,\n\t\t\tstruct
      event *event_parent, const char *host,\n\t\t\tbool client,\n\t\t\tenum ssl_iostream_flags
      flags,\n\t\t\tstruct istream **input, struct ostream **output,\n\t\t\tstruct
      ssl_iostream **iostream_r,\n\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:224,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:225,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:226,1
    - Dst: BIO_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:227,1
    - Dst: SSL_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:228,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:229,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:230,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:231,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:232,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:233,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:234,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:235,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:236,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 238
    functionName: openssl_iostream_free
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - event_unref
    - ssl_iostream_context_unref
    - BIO_free
    - o_stream_unref
    - SSL_free
    - i_stream_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_free(struct ssl_iostream *ssl_io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:242,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:246,1
    - Dst: openssl_iostream_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 248
    functionName: openssl_iostream_unref
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - openssl_iostream_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_unref(struct ssl_iostream *ssl_io)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:255,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:256,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:259,1
    - Dst: openssl_iostream_clear_errors
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:266,1
    - Dst: SSL_shutdown
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:267,1
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:271,1
    - Dst: SSL_get_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:275,1
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:278,1
    - Dst: openssl_iostream_handle_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:284,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:286,1
    - Dst: openssl_iostream_clear_errors
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:295,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:299,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:300,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 27
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 301
    functionName: openssl_iostream_shutdown
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 1
    functionsReached:
    - SSL_get_error
    - openssl_iostream_handle_error
    - o_stream_close
    - e_debug
    - openssl_iostream_bio_sync
    - openssl_iostream_clear_errors
    - SSL_shutdown
    - o_stream_flush
    - i_assert
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_shutdown(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_shutdown
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:305,1
    - Dst: ssl_iostream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 307
    functionName: openssl_iostream_destroy
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_unref
    - openssl_iostream_shutdown
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_destroy(struct ssl_iostream *ssl_io)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:317,1
    - Dst: BIO_ctrl_pending
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:318,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:321,1
    - Dst: BIO_read
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:334,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:335,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:340,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:342,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:345,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:349,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:353,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 356
    functionName: openssl_iostream_bio_output_real
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_avail_size
    - o_stream_uncork
    - o_stream_cork
    - BIO_read
    - o_stream_set_flush_pending
    - o_stream_send
    - BIO_ctrl_pending
    - i_assert
    - o_stream_uncork_flush
    linkageType: ''
    returnType: int
    signature: int openssl_iostream_bio_output_real(struct ssl_iostream *ssl_io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_bio_output_real
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:362,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:364,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:365,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:367,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 373
    functionName: openssl_iostream_bio_output
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - openssl_iostream_bio_output_real
    - i_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: int
    signature: int openssl_iostream_bio_output(struct ssl_iostream *ssl_io)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:380,1
    - Dst: i_stream_read_limited
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - ssl_io
    - type
    - wanted
    - data_r
    - size_r
    argTypes:
    - struct ssl_iostream*
    - enum openssl_iostream_sync_type
    - size_t
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 395
    functionName: openssl_iostream_read_more
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - i_stream_read_limited
    - i_stream_get_data
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t openssl_iostream_read_more(struct ssl_iostream *ssl_io,\n\t\t\t
      \  enum openssl_iostream_sync_type type, size_t wanted,\n\t\t\t   const unsigned
      char **data_r, size_t *size_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BIO_ctrl_get_write_guarantee
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:406,1
    - Dst: openssl_iostream_read_more
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:408,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:412,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:414,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:414,1
    - Dst: BIO_write
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:428,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:429,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:431,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:436,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:437,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:439,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:447,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:450,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:451,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:453,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 42
    argCount: 2
    argNames:
    - ssl_io
    - type
    argTypes:
    - struct ssl_iostream*
    - enum openssl_iostream_sync_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 457
    functionName: openssl_iostream_bio_input
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_stream_set_input_pending
    - BIO_ctrl_get_write_guarantee
    - i_stream_skip
    - i_strdup
    - i_stream_get_error
    - e_error
    - o_stream_set_flush_pending
    - BIO_write
    - openssl_iostream_read_more
    - i_assert
    - i_free
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_bio_input(struct ssl_iostream *ssl_io,\n\t\t\t
      \  enum openssl_iostream_sync_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:464,1
    - Dst: openssl_iostream_bio_output
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:466,1
    - Dst: openssl_iostream_bio_input
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ssl_io
    - type
    argTypes:
    - struct ssl_iostream*
    - enum openssl_iostream_sync_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 459
    functionDepth: 3
    functionLinenumber: 459
    functionLinenumberEnd: 470
    functionName: openssl_iostream_bio_sync
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 2
    functionsReached:
    - openssl_iostream_bio_input
    - i_assert
    - openssl_iostream_bio_output
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_bio_sync(struct ssl_iostream *ssl_io,\n\t\t\t
      \     enum openssl_iostream_sync_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:475,1
    - Dst: openssl_iostream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:476,1
    - Dst: openssl_iostream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 472
    functionDepth: 3
    functionLinenumber: 472
    functionLinenumberEnd: 482
    functionName: openssl_iostream_closed
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - i_assert
    - openssl_iostream_set_error
    linkageType: ''
    returnType: void
    signature: void openssl_iostream_closed(struct ssl_iostream *ssl_io)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:492,1
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:496,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:498,1
    - Dst: openssl_iostream_closed
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:502,1
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:511,1
    - Dst: openssl_iostream_closed
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:513,1
    - Dst: ERR_peek_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:521,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:522,1
    - Dst: strerror
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:530,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:538,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:545,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:552,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:553,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:557,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:559,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:570,1
    - Dst: openssl_iostream_set_error_full
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:572,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 73
    argCount: 4
    argNames:
    - ssl_io
    - ret
    - type
    - func_name
    argTypes:
    - struct ssl_iostream*
    - int
    - enum openssl_iostream_sync_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 484
    functionDepth: 4
    functionLinenumber: 484
    functionLinenumberEnd: 574
    functionName: openssl_iostream_handle_error
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 2
    functionsReached:
    - i_panic
    - SSL_get_error
    - openssl_iostream_set_error_full
    - ERR_peek_error
    - openssl_iostream_bio_sync
    - strerror
    - t_strdup_printf
    - i_free_and_null
    - openssl_iostream_closed
    - openssl_iostream_error
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_handle_error(struct ssl_iostream *ssl_io, int
      ret,\n\t\t\t\t  enum openssl_iostream_sync_type type,\n\t\t\t\t  const char
      *func_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_has_valid_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:580,1
    - Dst: openssl_cert_match_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:585,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ssl_io
    - verify_name
    - reason_r
    argTypes:
    - struct ssl_iostream*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 576
    functionDepth: 2
    functionLinenumber: 576
    functionLinenumberEnd: 586
    functionName: openssl_iostream_cert_match_name
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - openssl_cert_match_name
    - ssl_iostream_has_valid_cert
    linkageType: ''
    returnType: bool
    signature: "bool openssl_iostream_cert_match_name(struct ssl_iostream *ssl_io,\n\t\t\t\t
      const char *verify_name, const char **reason_r)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:594,1
    - Dst: SSL_connect
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:608,1
    - Dst: openssl_iostream_handle_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:609,1
    - Dst: SSL_accept
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:617,1
    - Dst: openssl_iostream_handle_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:618,1
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:627,1
    - Dst: struct ssl_iostream*::handshake_callback
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:630,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:632,1
    - Dst: openssl_iostream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:633,1
    - Dst: ssl_iostream_check_cert_validity
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:639,1
    - Dst: openssl_iostream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:654,1
    - Dst: openssl_iostream_shutdown
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:659,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:663,1
    - Dst: ssl_iostream_get_application_protocol
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:667,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:669,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:671,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 68
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 588
    functionDepth: 5
    functionLinenumber: 588
    functionLinenumberEnd: 673
    functionName: openssl_iostream_handshake
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - struct ssl_iostream*::handshake_callback
    - SSL_connect
    - openssl_iostream_handle_error
    - e_debug
    - openssl_iostream_bio_sync
    - i_free_and_null
    - SSL_accept
    - ssl_iostream_get_application_protocol
    - openssl_iostream_set_error
    - openssl_iostream_shutdown
    - o_stream_flush
    - ssl_iostream_check_cert_validity
    - i_assert
    linkageType: ''
    returnType: int
    signature: int openssl_iostream_handshake(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ssl_io
    - callback
    - context
    argTypes:
    - struct ssl_iostream*
    - ssl_iostream_handshake_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 682
    functionName: openssl_iostream_set_handshake_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void openssl_iostream_set_handshake_callback(struct ssl_iostream *ssl_io,\n\t\t\t\t\tssl_iostream_handshake_callback_t
      *callback,\n\t\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ssl_io
    - callback
    - context
    argTypes:
    - struct ssl_iostream*
    - ssl_iostream_sni_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 691
    functionName: openssl_iostream_set_sni_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void openssl_iostream_set_sni_callback(struct ssl_iostream *ssl_io,\n\t\t\t\t
      \ ssl_iostream_sni_callback_t *callback,\n\t\t\t\t  void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_set_SSL_CTX
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:698,1
    - Dst: ssl_iostream_context_ref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:699,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ssl_io
    - ctx
    argTypes:
    - struct ssl_iostream*
    - struct ssl_iostream_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 703
    functionName: openssl_iostream_change_context
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_set_SSL_CTX
    - ssl_iostream_context_unref
    - ssl_iostream_context_ref
    linkageType: ''
    returnType: void
    signature: "void openssl_iostream_change_context(struct ssl_iostream *ssl_io,\n\t\t\t\tstruct
      ssl_iostream_context *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ssl_io
    - prefix
    argTypes:
    - struct ssl_iostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 709
    functionName: openssl_iostream_set_log_prefix
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    linkageType: ''
    returnType: void
    signature: "void openssl_iostream_set_log_prefix(struct ssl_iostream *ssl_io,\n\t\t\t\t\t
      \   const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 715
    functionName: openssl_iostream_get_state
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum ssl_iostream_state
    signature: enum ssl_iostream_state openssl_iostream_get_state(const struct ssl_iostream
      *ssl_io)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 725
    functionName: openssl_iostream_get_cert_validity
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum ssl_iostream_cert_validity
    signature: enum ssl_iostream_cert_validity openssl_iostream_get_cert_validity(const
      struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 727
    functionDepth: 0
    functionLinenumber: 727
    functionLinenumberEnd: 731
    functionName: openssl_iostream_get_allow_invalid_cert
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool openssl_iostream_get_allow_invalid_cert(struct ssl_iostream *ssl_io)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_has_valid_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:740,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:744,1
    - Dst: SSL_get_peer_certificate
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:746,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:748,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:750,1
    - Dst: X509_get_subject_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:750,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:755,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:756,1
    - Dst: X509_get_subject_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:756,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:760,1
    - Dst: X509_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:766,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 769
    functionName: openssl_iostream_get_peer_username
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get1_peer_certificate
    - X509_NAME_get_text_by_NID
    - t_malloc0
    - strlen
    - X509_free
    - SSL_get_peer_certificate
    - ssl_iostream_has_valid_cert
    - i_assert
    - X509_get_subject_name
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_peer_username(struct ssl_iostream *ssl_io)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 774
    functionName: openssl_iostream_get_server_name
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *openssl_iostream_get_server_name(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_current_compression
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:782,1
    - Dst: SSL_COMP_get_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 787
    functionName: openssl_iostream_get_compression
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_COMP_get_name
    - SSL_get_current_compression
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_compression(struct ssl_iostream *ssl_io)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_current_cipher
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:802,1
    - Dst: SSL_CIPHER_get_bits
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:803,1
    - Dst: SSL_get_current_compression
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:805,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:807,1
    - Dst: SSL_COMP_get_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:807,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:811,1
    - Dst: SSL_get_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:812,1
    - Dst: SSL_CIPHER_get_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:813,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 815
    functionName: openssl_iostream_get_security_string
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_current_cipher
    - SSL_CIPHER_get_bits
    - SSL_get_current_compression
    - t_strdup_printf
    - SSL_CIPHER_get_name
    - SSL_get_version
    - SSL_COMP_get_name
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_security_string(struct ssl_iostream *ssl_io)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 821
    functionName: openssl_iostream_get_last_error
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_last_error(struct ssl_iostream *ssl_io)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_current_cipher
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:829,1
    - Dst: SSL_CIPHER_get_bits
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:830,1
    - Dst: SSL_CIPHER_get_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ssl_io
    - bits_r
    argTypes:
    - struct ssl_iostream*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 832
    functionName: openssl_iostream_get_cipher
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_current_cipher
    - SSL_CIPHER_get_bits
    - SSL_CIPHER_get_name
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_cipher(struct ssl_iostream *ssl_io, unsigned int *bits_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_current_cipher
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:840,1
    - Dst: SSL_CIPHER_get_kx_nid
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:841,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 834
    functionDepth: 0
    functionLinenumber: 834
    functionLinenumberEnd: 843
    functionName: openssl_iostream_get_pfs
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_current_cipher
    - SSL_CIPHER_get_kx_nid
    - OBJ_nid2sn
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_pfs(struct ssl_iostream *ssl_io)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 845
    functionDepth: 0
    functionLinenumber: 845
    functionLinenumberEnd: 851
    functionName: openssl_iostream_get_protocol_name
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_version
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_protocol_name(struct ssl_iostream *ssl_io)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SSL_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:859,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:875,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 853
    functionDepth: 1
    functionLinenumber: 853
    functionLinenumberEnd: 877
    functionName: openssl_iostream_get_protocol_version
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - i_assert
    - SSL_version
    linkageType: ''
    returnType: enum ssl_iostream_protocol_version
    signature: enum ssl_iostream_protocol_version openssl_iostream_get_protocol_version(struct
      ssl_iostream *ssl_io)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 885
    functionName: openssl_iostream_get_ja3
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_ja3(struct ssl_iostream *ssl_io)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get0_alpn_selected
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:895,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 887
    functionDepth: 1
    functionLinenumber: 887
    functionLinenumberEnd: 899
    functionName: openssl_iostream_get_application_protocol
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - t_strndup
    - SSL_get0_alpn_selected
    linkageType: ''
    returnType: char
    signature: 'char *

      openssl_iostream_get_application_protocol(struct ssl_iostream *ssl_io)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:912,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:914,1
    - Dst: SSL_get_options
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:914,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:918,1
    - Dst: SSL_get_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:921,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:927,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:928,1
    - Dst: SSL_export_keying_material
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:930,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:933,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:935,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ssl_io
    - data_r
    - error_r
    argTypes:
    - struct ssl_iostream*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 901
    functionDepth: 2
    functionLinenumber: 901
    functionLinenumberEnd: 941
    functionName: openssl_iostream_get_cb_tls_exporter
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_options
    - buffer_get_space_unsafe
    - t_strdup_printf
    - t_buffer_create
    - SSL_get_version
    - HAS_NO_BITS
    - SSL_version
    - openssl_iostream_error
    - SSL_export_keying_material
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_get_cb_tls_exporter(struct ssl_iostream *ssl_io,\n\t\t\t\t
      \    const buffer_t **data_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:959,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:960,1
    - Dst: SSL_get_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:962,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:967,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:968,1
    - Dst: SSL_session_reused
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:974,1
    - Dst: SSL_get_peer_finished
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:977,1
    - Dst: SSL_get_finished
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:979,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:981,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ssl_io
    - data_r
    - error_r
    argTypes:
    - struct ssl_iostream*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 985
    functionName: openssl_iostream_get_cb_tls_unique
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_finished
    - buffer_get_space_unsafe
    - t_strdup_printf
    - t_buffer_create
    - SSL_session_reused
    - SSL_get_peer_finished
    - buffer_set_used_size
    - SSL_get_version
    - SSL_version
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_get_cb_tls_unique(struct ssl_iostream *ssl_io,\n\t\t\t\t
      \  const buffer_t **data_r,\n\t\t\t\t   const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1000,1
    - Dst: openssl_iostream_get_cb_tls_unique
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1001,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1003,1
    - Dst: openssl_iostream_get_cb_tls_exporter
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1004,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1008,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - ssl_io
    - type
    - data_r
    - error_r
    argTypes:
    - struct ssl_iostream*
    - char*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 987
    functionDepth: 3
    functionLinenumber: 987
    functionLinenumberEnd: 1011
    functionName: openssl_iostream_get_channel_binding
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - strcmp
    - openssl_iostream_get_cb_tls_exporter
    - openssl_iostream_get_cb_tls_unique
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_get_channel_binding(struct ssl_iostream *ssl_io,\n\t\t\t\t
      \    const char *type, const buffer_t **data_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get0_peer_certificate
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1034,1
    - Dst: SSL_get_peer_certificate
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1036,1
    - Dst: X509_digest
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1049,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1050,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1054,1
    - Dst: memset
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1057,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1061,1
    - Dst: BIO_s_null
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1061,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1062,1
    - Dst: BIO_f_md
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1062,1
    - Dst: BIO_set_md
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1063,1
    - Dst: BIO_push
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1064,1
    - Dst: X509_get0_pubkey
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1066,1
    - Dst: i2d_PUBKEY_bio
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1067,1
    - Dst: BIO_gets
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1070,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1072,1
    - Dst: BIO_free_all
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1074,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1079,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1080,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1080,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 4
    argNames:
    - ssl_io
    - cert_fp_r
    - pubkey_fp_r
    - error_r
    argTypes:
    - struct ssl_iostream*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1013
    functionDepth: 2
    functionLinenumber: 1013
    functionLinenumberEnd: 1085
    functionName: openssl_iostream_get_peer_cert_fingerprint
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 0
    functionsReached:
    - BIO_free_all
    - BIO_gets
    - X509_digest
    - BIO_s_null
    - BIO_f_md
    - BIO_set_md
    - memset
    - SSL_get_peer_certificate
    - binary_to_hex
    - X509_get0_pubkey
    - i_strdup
    - BIO_push
    - i2d_PUBKEY_bio
    - SSL_get0_peer_certificate
    - openssl_iostream_error
    - BIO_new
    linkageType: ''
    returnType: int
    signature: "int openssl_iostream_get_peer_cert_fingerprint(struct ssl_iostream
      *ssl_io,\n\t\t\t\t\t   const char **cert_fp_r,\n\t\t\t\t\t   const char **pubkey_fp_r,\n\t\t\t\t\t
      \  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1130,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1131,1
    - Dst: iostream_ssl_module_init
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1133
    functionName: ssl_iostream_openssl_init
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 2
    functionsReached:
    - iostream_ssl_module_init
    - i_fatal
    - RAND_bytes
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_openssl_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_global_deinit
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c:1137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1135
    functionDepth: 2
    functionLinenumber: 1135
    functionLinenumberEnd: 1138
    functionName: ssl_iostream_openssl_deinit
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
    functionUses: 2
    functionsReached:
    - openssl_iostream_global_deinit
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_openssl_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:23,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: o_stream_ssl_close
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: void o_stream_ssl_close(struct iostream_private *stream, bool close_parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openssl_iostream_shutdown
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:31,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:33,1
    - Dst: ssl_iostream_unref
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:34,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: o_stream_ssl_destroy
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - ssl_iostream_unref
    - openssl_iostream_shutdown
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void o_stream_ssl_destroy(struct iostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - sstream
    argTypes:
    - struct ssl_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 52
    functionName: get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 8
    functionsReached:
    - buffer_get_writable_size
    linkageType: ''
    returnType: size_t
    signature: size_t get_buffer_avail_size(const struct ssl_ostream *sstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:61,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:62,1
    - Dst: get_buffer_avail_size
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:64,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:66,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:69,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:70,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - sstream
    - iov
    - iov_count
    argTypes:
    - struct ssl_ostream*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 80
    functionName: o_stream_ssl_buffer
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - I_MIN
    - buffer_create_dynamic
    - o_stream_set_flush_pending
    - get_buffer_avail_size
    linkageType: ''
    returnType: size_t
    signature: "size_t o_stream_ssl_buffer(struct ssl_ostream *sstream, const struct
      const_iovec *iov,\n\t\t    unsigned int iov_count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:88,1
    - Dst: SSL_write
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:94,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:95,1
    - Dst: openssl_iostream_handle_error
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:98,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:102,1
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:112,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:115,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:117,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:126,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - sstream
    argTypes:
    - struct ssl_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 82
    functionDepth: 5
    functionLinenumber: 82
    functionLinenumberEnd: 128
    functionName: o_stream_ssl_flush_buffer
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - openssl_iostream_handle_error
    - io_stream_set_error
    - openssl_iostream_bio_sync
    - SSL_write
    - buffer_delete
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: int o_stream_ssl_flush_buffer(struct ssl_ostream *sstream)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:138,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:140,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:141,1
    - Dst: openssl_iostream_bio_sync
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:148,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:150,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:152,1
    - Dst: o_stream_ssl_flush_buffer
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:160,1
    - Dst: SSL_shutdown
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:168,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:169,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:171,1
    - Dst: openssl_iostream_error
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:172,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:180,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:190,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 130
    functionDepth: 6
    functionLinenumber: 130
    functionLinenumberEnd: 191
    functionName: o_stream_ssl_flush
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - openssl_iostream_bio_sync
    - ssl_iostream_handshake
    - t_strdup_printf
    - o_stream_set_flush_pending
    - SSL_shutdown
    - o_stream_get_buffer_used_size
    - o_stream_ssl_flush_buffer
    - i_assert
    - openssl_iostream_error
    linkageType: ''
    returnType: int
    signature: int o_stream_ssl_flush(struct ostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:199,1
    - Dst: o_stream_ssl_buffer
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:201,1
    - Dst: o_stream_ssl_flush_buffer
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 193
    functionDepth: 6
    functionLinenumber: 193
    functionLinenumberEnd: 210
    functionName: o_stream_ssl_sendv
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - o_stream_ssl_flush_buffer
    - i_assert
    - o_stream_ssl_buffer
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_ssl_sendv(struct ostream_private *stream,\n\t\t   const
      struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct ostream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 218
    functionName: o_stream_ssl_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - o_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: "void o_stream_ssl_switch_ioloop_to(struct ostream_private *stream,\n\t\t\t\t\t
      \ struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_wbio
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:224,1
    - Dst: BIO_ctrl_get_write_guarantee
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:225,1
    - Dst: BIO_get_write_buf_size
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:226,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:229,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 232
    functionName: o_stream_ssl_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_wbio
    - BIO_ctrl_get_write_guarantee
    - o_stream_get_buffer_used_size
    - i_assert
    - BIO_get_write_buf_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_ssl_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_buffer_avail_size
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: o_stream_ssl_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - get_buffer_avail_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_ssl_get_buffer_avail_size(const struct ostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 248
    functionName: o_stream_ssl_flush_pending
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    linkageType: ''
    returnType: void
    signature: void o_stream_ssl_flush_pending(struct ostream_private *_stream, bool
      set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 257
    functionName: o_stream_ssl_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 0
    functionsReached:
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: "void o_stream_ssl_set_max_buffer_size(struct iostream_private *_stream,\n\t\t\t\t\t
      \    size_t max_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:269,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:270,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:272,1
    - Dst: o_stream_init_buffering_flush
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:290,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:292,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 294
    functionName: openssl_o_stream_create_ssl
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    functionUses: 1
    functionsReached:
    - o_stream_get_fd
    - o_stream_init_buffering_flush
    - i_stream_ref
    - o_stream_create
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *openssl_o_stream_create_ssl(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:14,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 16
    functionName: ssl_module_unload
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 0
    functionsReached:
    - module_dir_unload
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: void ssl_module_unload(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vfuncs
    argTypes:
    - struct iostream_ssl_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 22
    functionName: iostream_ssl_module_init
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void iostream_ssl_module_init(const struct iostream_ssl_vfuncs *vfuncs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:29,1
    - Dst: module_dir_try_load_missing
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:33,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:36,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:38,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:41,1
    - Dst: lib_atexit_priority
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - error_r
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 50
    functionName: ssl_module_load
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 0
    functionsReached:
    - i_zero
    - lib_atexit_priority
    - t_strdup_printf
    - module_dir_try_load_missing
    - module_dir_unload
    - module_dir_init
    linkageType: ''
    returnType: int
    signature: int ssl_module_load(const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: global_init
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: io_stream_ssl_global_init
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - global_init
    linkageType: ''
    returnType: int
    signature: "int io_stream_ssl_global_init(const struct ssl_iostream_settings *set,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ssl_module_load
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:68,1
    - Dst: io_stream_ssl_global_init
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:71,1
    - Dst: context_init_client
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - set
    - ctx_r
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - struct ssl_iostream_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 74
    functionName: ssl_iostream_context_init_client
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 4
    functionsReached:
    - io_stream_ssl_global_init
    - context_init_client
    - ssl_module_load
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_context_init_client(const struct ssl_iostream_settings
      *set,\n\t\t\t\t     struct ssl_iostream_context **ctx_r,\n\t\t\t\t     const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ssl_module_load
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:87,1
    - Dst: io_stream_ssl_global_init
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:90,1
    - Dst: context_init_server
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - set
    - ctx_r
    - error_r
    argTypes:
    - struct ssl_iostream_settings*
    - struct ssl_iostream_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 93
    functionName: ssl_iostream_context_init_server
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 5
    functionsReached:
    - context_init_server
    - io_stream_ssl_global_init
    - ssl_module_load
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_context_init_server(const struct ssl_iostream_settings
      *set,\n\t\t\t\t     struct ssl_iostream_context **ctx_r,\n\t\t\t\t     const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: context_ref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ssl_iostream_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: ssl_iostream_context_ref
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 3
    functionsReached:
    - context_ref
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_context_ref(struct ssl_iostream_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct ssl_iostream_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: ssl_iostream_context_unref
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 9
    functionsReached:
    - context_unref
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_context_unref(struct ssl_iostream_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - ctx
    - host
    - event_parent
    - flags
    - input
    - output
    - iostream_r
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - char*
    - struct event*
    - enum ssl_iostream_flags
    - struct istream**
    - struct ostream**
    - struct ssl_iostream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 119
    functionName: io_stream_create_ssl_client
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 3
    functionsReached:
    - create
    linkageType: ''
    returnType: int
    signature: "int io_stream_create_ssl_client(struct ssl_iostream_context *ctx,
      const char *host,\n\t\t\t\tstruct event *event_parent,\n\t\t\t\tenum ssl_iostream_flags
      flags,\n\t\t\t\tstruct istream **input, struct ostream **output,\n\t\t\t\tstruct
      ssl_iostream **iostream_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - event_parent
    - input
    - output
    - iostream_r
    - error_r
    argTypes:
    - struct ssl_iostream_context*
    - struct event*
    - struct istream**
    - struct ostream**
    - struct ssl_iostream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 129
    functionName: io_stream_create_ssl_server
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 4
    functionsReached:
    - create
    linkageType: ''
    returnType: int
    signature: "int io_stream_create_ssl_server(struct ssl_iostream_context *ctx,\n\t\t\t\tstruct
      event *event_parent,\n\t\t\t\tstruct istream **input, struct ostream **output,\n\t\t\t\tstruct
      ssl_iostream **iostream_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:142,1
    - Dst: ssl_client_settings_get
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:143,1
    - Dst: ssl_client_settings_to_iostream_set
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:146,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:148,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:151,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:153,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:155,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:158,1
    - Dst: ssl_iostream_client_context_cache_get
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:160,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:161,1
    - Dst: ssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:165,1
    - Dst: io_stream_create_ssl_client
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:168,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 5
    argNames:
    - parameters
    - input
    - output
    - iostream_r
    - error_r
    argTypes:
    - struct ssl_iostream_client_autocreate_parameters*
    - struct istream**
    - struct ostream**
    - struct ssl_iostream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 131
    functionDepth: 4
    functionLinenumber: 131
    functionLinenumberEnd: 174
    functionName: io_stream_autocreate_ssl_client
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - ssl_client_settings_to_iostream_set
    - ssl_iostream_context_unref
    - settings_free
    - ssl_client_settings_get
    - io_stream_create_ssl_client
    - ssl_iostream_client_context_cache_get
    - pool_add_external_ref
    - i_assert
    - p_memdup
    - ssl_iostream_context_set_application_protocols
    linkageType: ''
    returnType: int
    signature: "int io_stream_autocreate_ssl_client(\n\tconst struct ssl_iostream_client_autocreate_parameters
      *parameters,\n\tstruct istream **input, struct ostream **output,\n\tstruct ssl_iostream
      **iostream_r,\n\tconst char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:188,1
    - Dst: ssl_server_settings_get
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:189,1
    - Dst: ssl_server_settings_to_iostream_set
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:192,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:193,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:194,1
    - Dst: ssl_iostream_server_context_cache_get
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:196,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:197,1
    - Dst: ssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:201,1
    - Dst: io_stream_create_ssl_server
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:204,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:206,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - parameters
    - input
    - output
    - iostream_r
    - error_r
    argTypes:
    - struct ssl_iostream_server_autocreate_parameters*
    - struct istream**
    - struct ostream**
    - struct ssl_iostream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 176
    functionDepth: 4
    functionLinenumber: 176
    functionLinenumberEnd: 208
    functionName: io_stream_autocreate_ssl_server
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - io_stream_create_ssl_server
    - ssl_server_settings_to_iostream_set
    - ssl_server_settings_get
    - ssl_iostream_context_unref
    - ssl_iostream_server_context_cache_get
    - settings_free
    - i_assert
    - ssl_iostream_context_set_application_protocols
    linkageType: ''
    returnType: int
    signature: "int io_stream_autocreate_ssl_server(\n\tconst struct ssl_iostream_server_autocreate_parameters
      *parameters,\n\tstruct istream **input, struct ostream **output,\n\tstruct ssl_iostream
      **iostream_r,\n\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unref
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ssl_io
    argTypes:
    - struct ssl_iostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 216
    functionName: ssl_iostream_unref
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 3
    functionsReached:
    - unref
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_unref(struct ssl_iostream **_ssl_io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: destroy
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - _ssl_io
    argTypes:
    - struct ssl_iostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 228
    functionName: ssl_iostream_destroy
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 6
    functionsReached:
    - destroy
    linkageType: ''
    returnType: void
    signature: void ssl_iostream_destroy(struct ssl_iostream **_ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_log_prefix
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ssl_io
    - prefix
    argTypes:
    - struct ssl_iostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: ssl_iostream_set_log_prefix
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 0
    functionsReached:
    - set_log_prefix
    linkageType: ''
    returnType: void
    signature: "void ssl_iostream_set_log_prefix(struct ssl_iostream *ssl_io,\n\t\t\t\t
      const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handshake
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: ssl_iostream_handshake
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 9
    functionsReached:
    - handshake
    linkageType: ''
    returnType: int
    signature: int ssl_iostream_handshake(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_handshake_callback
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ssl_io
    - callback
    - context
    argTypes:
    - struct ssl_iostream*
    - ssl_iostream_handshake_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 246
    functionName: ssl_iostream_set_handshake_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - set_handshake_callback
    linkageType: ''
    returnType: void
    signature: "void ssl_iostream_set_handshake_callback(struct ssl_iostream *ssl_io,\n\t\t\t\t\t
      ssl_iostream_handshake_callback_t *callback,\n\t\t\t\t\t void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_sni_callback
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ssl_io
    - callback
    - context
    argTypes:
    - struct ssl_iostream*
    - ssl_iostream_sni_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 253
    functionName: ssl_iostream_set_sni_callback
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - set_sni_callback
    linkageType: ''
    returnType: void
    signature: "void ssl_iostream_set_sni_callback(struct ssl_iostream *ssl_io,\n\t\t\t\t
      \  ssl_iostream_sni_callback_t *callback,\n\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: change_context
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ssl_io
    - ctx
    argTypes:
    - struct ssl_iostream*
    - struct ssl_iostream_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: ssl_iostream_change_context
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - change_context
    linkageType: ''
    returnType: void
    signature: "void ssl_iostream_change_context(struct ssl_iostream *ssl_io,\n\t\t\t\t
      struct ssl_iostream_context *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_state
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 265
    functionName: ssl_iostream_get_state
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 2
    functionsReached:
    - get_state
    linkageType: ''
    returnType: enum ssl_iostream_state
    signature: enum ssl_iostream_state ssl_iostream_get_state(const struct ssl_iostream
      *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_state
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: ssl_iostream_is_handshaked
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 3
    functionsReached:
    - ssl_iostream_get_state
    linkageType: ''
    returnType: bool
    signature: bool ssl_iostream_is_handshaked(const struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_cert_validity
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 275
    functionName: ssl_iostream_has_valid_cert
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 5
    functionsReached:
    - get_cert_validity
    linkageType: ''
    returnType: bool
    signature: bool ssl_iostream_has_valid_cert(const struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_cert_validity
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 280
    functionName: ssl_iostream_has_cert
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_cert_validity
    linkageType: ''
    returnType: bool
    signature: bool ssl_iostream_has_cert(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cert_match_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ssl_io
    - name
    - reason_r
    argTypes:
    - struct ssl_iostream*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 286
    functionName: ssl_iostream_cert_match_name
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 0
    functionsReached:
    - cert_match_name
    linkageType: ''
    returnType: bool
    signature: "bool ssl_iostream_cert_match_name(struct ssl_iostream *ssl_io, const
      char *name,\n\t\t\t\t  const char **reason_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_has_valid_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:294,1
    - Dst: ssl_iostream_has_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:295,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:299,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:299,1
    - Dst: ssl_iostream_cert_match_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:304,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ssl_io
    - host
    - error_r
    argTypes:
    - struct ssl_iostream*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 311
    functionName: ssl_iostream_check_cert_validity
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 3
    functionsReached:
    - t_strdup_printf
    - ssl_iostream_get_last_error
    - ssl_iostream_has_cert
    - ssl_iostream_has_valid_cert
    - t_strdup
    - ssl_iostream_cert_match_name
    linkageType: ''
    returnType: enum ssl_iostream_cert_validity
    signature: "enum ssl_iostream_cert_validity ssl_iostream_check_cert_validity(struct
      ssl_iostream *ssl_io,\n\t\t\t\t const char *host, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_allow_invalid_cert
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 316
    functionName: ssl_iostream_get_allow_invalid_cert
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_allow_invalid_cert
    linkageType: ''
    returnType: bool
    signature: bool ssl_iostream_get_allow_invalid_cert(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_peer_username
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: ssl_iostream_get_peer_username
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_peer_username
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_peer_username(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_server_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 326
    functionName: ssl_iostream_get_server_name
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 0
    functionsReached:
    - get_server_name
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_server_name(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_compression
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: ssl_iostream_get_compression
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_compression
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_compression(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_security_string
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: ssl_iostream_get_security_string
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_security_string
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_security_string(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_last_error
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: ssl_iostream_get_last_error
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 7
    functionsReached:
    - get_last_error
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_last_error(struct ssl_iostream *ssl_io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - str1
    - str2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 349
    functionName: quick_strcmp
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    linkageType: ''
    returnType: bool
    signature: bool quick_strcmp(const char *str1, const char *str2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:357,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:358,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:359,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:362,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:364,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:366,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:370,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:371,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:374,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:375,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:376,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:377,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:378,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:379,1
    - Dst: quick_strcmp
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:381,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 14
    argCount: 2
    argNames:
    - set1
    - set2
    argTypes:
    - struct ssl_iostream_settings*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 392
    functionName: ssl_iostream_settings_equals
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - quick_strcmp
    linkageType: ''
    returnType: bool
    signature: "bool ssl_iostream_settings_equals(const struct ssl_iostream_settings
      *set1,\n\t\t\t\t  const struct ssl_iostream_settings *set2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_cipher
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ssl_io
    - bits_r
    argTypes:
    - struct ssl_iostream*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 398
    functionName: ssl_iostream_get_cipher
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_cipher
    linkageType: ''
    returnType: char
    signature: "char *ssl_iostream_get_cipher(struct ssl_iostream *ssl_io,\n\t\t\t\t
      \   unsigned int *bits_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_pfs
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 403
    functionName: ssl_iostream_get_pfs
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_pfs
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_pfs(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_protocol_name
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: ssl_iostream_get_protocol_name
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_protocol_name
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_protocol_name(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_protocol_version
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 414
    functionName: ssl_iostream_get_protocol_version
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_protocol_version
    linkageType: ''
    returnType: enum ssl_iostream_protocol_version
    signature: enum ssl_iostream_protocol_version ssl_iostream_get_protocol_version(struct
      ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ja3
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 419
    functionName: ssl_iostream_get_ja3
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 3
    functionsReached:
    - get_ja3
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_ja3(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_application_protocol
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl_io
    argTypes:
    - struct ssl_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: ssl_iostream_get_application_protocol
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 1
    functionsReached:
    - get_application_protocol
    linkageType: ''
    returnType: char
    signature: char *ssl_iostream_get_application_protocol(struct ssl_iostream *ssl_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_application_protocols
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ssl_ctx
    - names
    argTypes:
    - struct ssl_iostream_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 430
    functionName: ssl_iostream_context_set_application_protocols
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 4
    functionsReached:
    - set_application_protocols
    linkageType: ''
    returnType: void
    signature: "void ssl_iostream_context_set_application_protocols(struct ssl_iostream_context
      *ssl_ctx,\n\t\t\t\t\t\t    const char *const *names)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_channel_binding
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - ssl_io
    - type
    - data_r
    - error_r
    argTypes:
    - struct ssl_iostream*
    - char*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 449
    functionName: ssl_iostream_get_channel_binding
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 2
    functionsReached:
    - get_channel_binding
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_get_channel_binding(struct ssl_iostream *ssl_io,\n\t\t\t\t
      \    const char *type, const buffer_t **data_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_peer_cert_fingerprint
      Src: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ssl_io
    - cert_fp_r
    - pubkey_fp_r
    - error_r
    argTypes:
    - struct ssl_iostream*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 451
    functionDepth: 0
    functionLinenumber: 451
    functionLinenumberEnd: 458
    functionName: ssl_iostream_get_peer_cert_fingerprint
    functionSourceFile: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
    functionUses: 2
    functionsReached:
    - get_peer_cert_fingerprint
    linkageType: ''
    returnType: int
    signature: "int ssl_iostream_get_peer_cert_fingerprint(struct ssl_iostream *ssl_io,\n\t\t\t\t
      \     const char **cert_fp_r,\n\t\t\t\t      const char **pubkey_fp_r,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_get_min
      Src: /src/dovecot/src/dict/main.c:37,1
    - Dst: stats_dist_get_avg
      Src: /src/dovecot/src/dict/main.c:38,1
    - Dst: stats_dist_get_95th
      Src: /src/dovecot/src/dict/main.c:39,1
    - Dst: stats_dist_get_max
      Src: /src/dovecot/src/dict/main.c:40,1
    - Dst: str_printfa
      Src: /src/dovecot/src/dict/main.c:42,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/dict/main.c:43,1
    - Dst: llrint
      Src: /src/dovecot/src/dict/main.c:44,1
    - Dst: stats_dist_reset
      Src: /src/dovecot/src/dict/main.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - str
    - stats
    - name
    argTypes:
    - string_t*
    - struct stats_dist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 48
    functionName: add_stats_string
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - stats_dist_get_avg
    - stats_dist_get_min
    - stats_dist_get_95th
    - llrint
    - stats_dist_reset
    - stats_dist_get_count
    - stats_dist_get_max
    linkageType: ''
    returnType: void
    signature: void add_stats_string(string_t *str, struct stats_dist *stats, const
      char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/dict/main.c:52,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/dict/main.c:55,1
    - Dst: str_printfa
      Src: /src/dovecot/src/dict/main.c:57,1
    - Dst: dict_connections_current_count
      Src: /src/dovecot/src/dict/main.c:57,1
    - Dst: add_stats_string
      Src: /src/dovecot/src/dict/main.c:59,1
    - Dst: add_stats_string
      Src: /src/dovecot/src/dict/main.c:60,1
    - Dst: add_stats_string
      Src: /src/dovecot/src/dict/main.c:61,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/main.c:62,1
    - Dst: process_title_set
      Src: /src/dovecot/src/dict/main.c:64,1
    - Dst: str_c
      Src: /src/dovecot/src/dict/main.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 66
    functionName: dict_proctitle_update
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - add_stats_string
    - dict_connections_current_count
    - process_title_set
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dict_proctitle_update(void *context ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_to
      Src: /src/dovecot/src/dict/main.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: dict_proctitle_update_later
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 0
    functionsReached:
    - timeout_add_to
    linkageType: ''
    returnType: void
    signature: void dict_proctitle_update_later(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: dict_die
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dict_die(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/dict/main.c:85,1
    - Dst: dict_connection_create
      Src: /src/dovecot/src/dict/main.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 0
    functionsReached:
    - dict_connection_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_drivers_init
      Src: /src/dovecot/src/dict/main.c:92,1
    - Dst: dict_driver_register
      Src: /src/dovecot/src/dict/main.c:94,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/dict/main.c:97,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/dict/main.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 89
    functionDepth: 3
    functionLinenumber: 89
    functionLinenumberEnd: 99
    functionName: main_preinit
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 2
    functionsReached:
    - sql_drivers_init
    - restrict_access_allow_coredumps
    - dict_driver_register
    - restrict_access_by_env
    linkageType: ''
    returnType: void
    signature: void main_preinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_event
      Src: /src/dovecot/src/dict/main.c:103,1
    - Dst: event_add_category
      Src: /src/dovecot/src/dict/main.c:106,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/dict/main.c:107,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/dict/main.c:109,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/dict/main.c:111,1
    - Dst: i_zero
      Src: /src/dovecot/src/dict/main.c:113,1
    - Dst: module_dir_load
      Src: /src/dovecot/src/dict/main.c:117,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/dict/main.c:118,1
    - Dst: dict_drivers_register_all
      Src: /src/dovecot/src/dict/main.c:122,1
    - Dst: dict_commands_init
      Src: /src/dovecot/src/dict/main.c:123,1
    - Dst: dict_connections_init
      Src: /src/dovecot/src/dict/main.c:124,1
    - Dst: dict_proctitle_update
      Src: /src/dovecot/src/dict/main.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 128
    functionName: main_init
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 9
    functionsReached:
    - i_zero
    - dict_commands_init
    - dict_proctitle_update
    - dict_drivers_register_all
    - settings_event_add_filter_name
    - master_service_get_event
    - module_dir_load
    - event_add_category
    - module_dir_init
    - dict_connections_init
    - settings_get_or_fatal
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_init_cache_wait_all
      Src: /src/dovecot/src/dict/main.c:133,1
    - Dst: dict_connections_destroy_all
      Src: /src/dovecot/src/dict/main.c:135,1
    - Dst: dict_init_cache_destroy_all
      Src: /src/dovecot/src/dict/main.c:136,1
    - Dst: dict_drivers_unregister_all
      Src: /src/dovecot/src/dict/main.c:138,1
    - Dst: dict_commands_deinit
      Src: /src/dovecot/src/dict/main.c:139,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/dict/main.c:141,1
    - Dst: sql_drivers_deinit
      Src: /src/dovecot/src/dict/main.c:143,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/dict/main.c:144,1
    - Dst: settings_free
      Src: /src/dovecot/src/dict/main.c:145,1
    - Dst: settings_free
      Src: /src/dovecot/src/dict/main.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 147
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 14
    functionsReached:
    - sql_drivers_deinit
    - dict_connections_destroy_all
    - settings_free
    - dict_init_cache_wait_all
    - dict_commands_deinit
    - module_dir_unload
    - timeout_remove
    - dict_init_cache_destroy_all
    - dict_drivers_unregister_all
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/dict/main.c:154,1
    - Dst: master_getopt
      Src: /src/dovecot/src/dict/main.c:156,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/dict/main.c:159,1
    - Dst: i_fatal
      Src: /src/dovecot/src/dict/main.c:160,1
    - Dst: master_service_init_log_with_pid
      Src: /src/dovecot/src/dict/main.c:162,1
    - Dst: main_preinit
      Src: /src/dovecot/src/dict/main.c:163,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/dict/main.c:164,1
    - Dst: main_init
      Src: /src/dovecot/src/dict/main.c:167,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/dict/main.c:168,1
    - Dst: master_service_run
      Src: /src/dovecot/src/dict/main.c:169,1
    - Dst: main_deinit
      Src: /src/dovecot/src/dict/main.c:172,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/dict/main.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 149
    functionDepth: 7
    functionLinenumber: 149
    functionLinenumberEnd: 175
    functionName: main
    functionSourceFile: /src/dovecot/src/dict/main.c
    functionUses: 7
    functionsReached:
    - master_service_set_die_callback
    - main_init
    - master_service_run
    - master_service_init_log_with_pid
    - i_fatal
    - main_deinit
    - master_service_init_finish
    - main_preinit
    - master_getopt
    - master_service_init
    - master_service_deinit
    - master_service_settings_read_simple
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/dict/dict-expire.c:35,1
    - Dst: process_title_set
      Src: /src/dovecot/src/dict/dict-expire.c:40,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-expire.c:40,1
    - Dst: dict_expire_scan
      Src: /src/dovecot/src/dict/dict-expire.c:41,1
    - Dst: i_error
      Src: /src/dovecot/src/dict/dict-expire.c:43,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/dict/dict-expire.c:45,1
    - Dst: array_delete
      Src: /src/dovecot/src/dict/dict-expire.c:46,1
    - Dst: process_title_set
      Src: /src/dovecot/src/dict/dict-expire.c:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 51
    functionName: dict_expire_run
    functionSourceFile: /src/dovecot/src/dict/dict-expire.c
    functionUses: 0
    functionsReached:
    - array_delete
    - i_error
    - array_get_modifiable
    - t_strdup_printf
    - dict_deinit
    - dict_expire_scan
    - process_title_set
    linkageType: ''
    returnType: void
    signature: void dict_expire_run(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_expire_run
      Src: /src/dovecot/src/dict/dict-expire.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: dict_expire_timeout
    functionSourceFile: /src/dovecot/src/dict/dict-expire.c
    functionUses: 0
    functionsReached:
    - dict_expire_run
    linkageType: ''
    returnType: void
    signature: void dict_expire_timeout(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_expire_run
      Src: /src/dovecot/src/dict/dict-expire.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/dict/dict-expire.c
    functionUses: 0
    functionsReached:
    - dict_expire_run
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/dict/dict-expire.c:68,1
    - Dst: array_is_created
      Src: /src/dovecot/src/dict/dict-expire.c:70,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/dict/dict-expire.c:75,1
    - Dst: dict_init_filter_auto
      Src: /src/dovecot/src/dict/dict-expire.c:76,1
    - Dst: i_error
      Src: /src/dovecot/src/dict/dict-expire.c:77,1
    - Dst: array_append_space
      Src: /src/dovecot/src/dict/dict-expire.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 87
    functionName: dict_expire_init
    functionSourceFile: /src/dovecot/src/dict/dict-expire.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - i_error
    - array_foreach_elem
    - array_is_created
    - dict_init_filter_auto
    linkageType: ''
    returnType: void
    signature: void dict_expire_init(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_drivers_init
      Src: /src/dovecot/src/dict/dict-expire.c:92,1
    - Dst: dict_driver_register
      Src: /src/dovecot/src/dict/dict-expire.c:94,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/dict/dict-expire.c:97,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/dict/dict-expire.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 89
    functionDepth: 3
    functionLinenumber: 89
    functionLinenumberEnd: 99
    functionName: main_preinit
    functionSourceFile: /src/dovecot/src/dict/dict-expire.c
    functionUses: 3
    functionsReached:
    - sql_drivers_init
    - restrict_access_allow_coredumps
    - dict_driver_register
    - restrict_access_by_env
    linkageType: ''
    returnType: void
    signature: void main_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_event
      Src: /src/dovecot/src/dict/dict-expire.c:104,1
    - Dst: event_add_category
      Src: /src/dovecot/src/dict/dict-expire.c:106,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/dict/dict-expire.c:107,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/dict/dict-expire.c:109,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/dict/dict-expire.c:111,1
    - Dst: i_zero
      Src: /src/dovecot/src/dict/dict-expire.c:113,1
    - Dst: module_dir_load
      Src: /src/dovecot/src/dict/dict-expire.c:117,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/dict/dict-expire.c:118,1
    - Dst: dict_drivers_register_all
      Src: /src/dovecot/src/dict/dict-expire.c:122,1
    - Dst: dict_expire_init
      Src: /src/dovecot/src/dict/dict-expire.c:124,1
    - Dst: timeout_add
      Src: /src/dovecot/src/dict/dict-expire.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 127
    functionName: main_init
    functionSourceFile: /src/dovecot/src/dict/dict-expire.c
    functionUses: 10
    functionsReached:
    - i_zero
    - dict_drivers_register_all
    - dict_expire_init
    - settings_event_add_filter_name
    - timeout_add
    - master_service_get_event
    - module_dir_load
    - event_add_category
    - module_dir_init
    - settings_get_or_fatal
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/dict/dict-expire.c:133,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/dict/dict-expire.c:134,1
    - Dst: array_free
      Src: /src/dovecot/src/dict/dict-expire.c:135,1
    - Dst: dict_drivers_unregister_all
      Src: /src/dovecot/src/dict/dict-expire.c:137,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/dict/dict-expire.c:138,1
    - Dst: sql_drivers_deinit
      Src: /src/dovecot/src/dict/dict-expire.c:140,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/dict/dict-expire.c:141,1
    - Dst: settings_free
      Src: /src/dovecot/src/dict/dict-expire.c:142,1
    - Dst: settings_free
      Src: /src/dovecot/src/dict/dict-expire.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 144
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/dict/dict-expire.c
    functionUses: 15
    functionsReached:
    - sql_drivers_deinit
    - settings_free
    - module_dir_unload
    - dict_deinit
    - array_foreach_modifiable
    - timeout_remove
    - array_free
    - dict_drivers_unregister_all
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/dict/dict-expire.c:151,1
    - Dst: master_getopt
      Src: /src/dovecot/src/dict/dict-expire.c:153,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/dict/dict-expire.c:156,1
    - Dst: i_fatal
      Src: /src/dovecot/src/dict/dict-expire.c:157,1
    - Dst: master_service_init_log_with_pid
      Src: /src/dovecot/src/dict/dict-expire.c:159,1
    - Dst: main_preinit
      Src: /src/dovecot/src/dict/dict-expire.c:160,1
    - Dst: main_init
      Src: /src/dovecot/src/dict/dict-expire.c:162,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/dict/dict-expire.c:163,1
    - Dst: master_service_run
      Src: /src/dovecot/src/dict/dict-expire.c:164,1
    - Dst: main_deinit
      Src: /src/dovecot/src/dict/dict-expire.c:166,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/dict/dict-expire.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 146
    functionDepth: 7
    functionLinenumber: 146
    functionLinenumberEnd: 169
    functionName: main
    functionSourceFile: /src/dovecot/src/dict/dict-expire.c
    functionUses: 7
    functionsReached:
    - main_init
    - master_service_run
    - master_service_init_log_with_pid
    - i_fatal
    - main_deinit
    - master_service_init_finish
    - main_preinit
    - master_getopt
    - master_service_init
    - master_service_deinit
    - master_service_settings_read_simple
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/dict/dict-init-cache.c:33,1
    - Dst: i_strdup
      Src: /src/dovecot/src/dict/dict-init-cache.c:36,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/dict/dict-init-cache.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - dict_name
    - dict
    argTypes:
    - char*
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 41
    functionName: dict_init_cache_add
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct dict_init_cache_list
    signature: 'struct dict_init_cache_list *

      dict_init_cache_add(const char *dict_name, struct dict *dict)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-init-cache.c:45,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/dict/dict-init-cache.c:47,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/dict/dict-init-cache.c:48,1
    - Dst: i_free
      Src: /src/dovecot/src/dict/dict-init-cache.c:49,1
    - Dst: i_free
      Src: /src/dovecot/src/dict/dict-init-cache.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct dict_init_cache_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 51
    functionName: dict_init_cache_list_free
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 0
    functionsReached:
    - i_assert
    - DLLIST_REMOVE
    - i_free
    - dict_deinit
    linkageType: ''
    returnType: void
    signature: void dict_init_cache_list_free(struct dict_init_cache_list *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/dict/dict-init-cache.c:63,1
    - Dst: dict_init_cache_list_free
      Src: /src/dovecot/src/dict/dict-init-cache.c:69,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - dict_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 76
    functionName: dict_init_cache_find
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dict_init_cache_list_free
    linkageType: ''
    returnType: struct dict_init_cache_list
    signature: struct dict_init_cache_list *dict_init_cache_find(const char *dict_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_init_cache_find
      Src: /src/dovecot/src/dict/dict-init-cache.c:84,1
    - Dst: dict_init_filter_auto
      Src: /src/dovecot/src/dict/dict-init-cache.c:86,1
    - Dst: dict_init_cache_add
      Src: /src/dovecot/src/dict/dict-init-cache.c:88,1
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-init-cache.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - event
    - dict_name
    - dict_r
    - error_r
    argTypes:
    - struct event*
    - char*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 95
    functionName: dict_init_cache_get
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 0
    functionsReached:
    - dict_init_cache_find
    - i_assert
    - dict_init_cache_add
    - dict_init_filter_auto
    linkageType: ''
    returnType: int
    signature: "int dict_init_cache_get(struct event *event, const char *dict_name,\n\t\t\tstruct
      dict **dict_r, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-init-cache.c:105,1
    - Dst: dict_init_cache_list_free
      Src: /src/dovecot/src/dict/dict-init-cache.c:109,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/dict/dict-init-cache.c:115,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 116
    functionName: destroy_unrefed
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 3
    functionsReached:
    - i_assert
    - dict_init_cache_list_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void destroy_unrefed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_unrefed
      Src: /src/dovecot/src/dict/dict-init-cache.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: dict_removal_timeout
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 0
    functionsReached:
    - destroy_unrefed
    linkageType: ''
    returnType: void
    signature: void dict_removal_timeout(void *context ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-init-cache.c:137,1
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-init-cache.c:138,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/dict/dict-init-cache.c:144,1
    - Dst: io_loop_get_root
      Src: /src/dovecot/src/dict/dict-init-cache.c:144,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 148
    functionName: dict_init_cache_unref
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 0
    functionsReached:
    - timeout_add_to
    - i_assert
    - io_loop_get_root
    linkageType: ''
    returnType: void
    signature: void dict_init_cache_unref(struct dict **_dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_wait
      Src: /src/dovecot/src/dict/dict-init-cache.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: dict_init_cache_wait_all
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 1
    functionsReached:
    - dict_wait
    linkageType: ''
    returnType: void
    signature: void dict_init_cache_wait_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/dict/dict-init-cache.c:160,1
    - Dst: dict_init_cache_list_free
      Src: /src/dovecot/src/dict/dict-init-cache.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 163
    functionName: dict_init_cache_destroy_all
    functionSourceFile: /src/dovecot/src/dict/dict-init-cache.c
    functionUses: 1
    functionsReached:
    - dict_init_cache_list_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dict_init_cache_destroy_all(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/dict/dict-commands.c:52,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:53,1
    - Dst: i_free
      Src: /src/dovecot/src/dict/dict-commands.c:54,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/dict/dict-commands.c:56,1
    - Dst: dict_connection_unref
      Src: /src/dovecot/src/dict/dict-commands.c:58,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/dict/dict-commands.c:59,1
    - Dst: event_unref
      Src: /src/dovecot/src/dict/dict-commands.c:60,1
    - Dst: i_free
      Src: /src/dovecot/src/dict/dict-commands.c:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct dict_connection_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 62
    functionName: dict_connection_cmd_free
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - dict_connection_unref
    - event_unref
    - o_stream_uncork
    - e_error
    - i_free
    - dict_iterate_deinit
    linkageType: ''
    returnType: void
    signature: void dict_connection_cmd_free(struct dict_connection_cmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/dict/dict-commands.c:69,1
    - Dst: array_delete
      Src: /src/dovecot/src/dict/dict-commands.c:72,1
    - Dst: dict_connection_cmd_free
      Src: /src/dovecot/src/dict/dict-commands.c:73,1
    - Dst: i_unreached
      Src: /src/dovecot/src/dict/dict-commands.c:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct dict_connection_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 78
    functionName: dict_connection_cmd_remove
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - dict_connection_cmd_free
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void dict_connection_cmd_remove(struct dict_connection_cmd *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-commands.c:86,1
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-commands.c:87,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dict/dict-commands.c:89,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-commands.c:89,1
    - Dst: dict_connection_cmd_remove
      Src: /src/dovecot/src/dict/dict-commands.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct dict_connection_cmd**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: dict_connection_cmd_try_flush
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_assert
    - t_strdup_printf
    - dict_connection_cmd_remove
    linkageType: ''
    returnType: void
    signature: void dict_connection_cmd_try_flush(struct dict_connection_cmd **_cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-commands.c:97,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/dict/dict-commands.c:101,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-commands.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct dict_connection_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 103
    functionName: dict_connection_cmd_async
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_assert
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void dict_connection_cmd_async(struct dict_connection_cmd *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/dict/dict-commands.c:113,1
    - Dst: stats_dist_add
      Src: /src/dovecot/src/dict/dict-commands.c:116,1
    - Dst: dict_proctitle_update_later
      Src: /src/dovecot/src/dict/dict-commands.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cmd
    - stats
    argTypes:
    - struct dict_connection_cmd*
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 118
    functionName: cmd_stats_update
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - stats_dist_add
    - dict_proctitle_update_later
    - timeval_diff_usecs
    linkageType: ''
    returnType: void
    signature: void cmd_stats_update(struct dict_connection_cmd *cmd, struct stats_dist
      *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/dict/dict-commands.c:124,1
    - Dst: cmd_stats_update
      Src: /src/dovecot/src/dict/dict-commands.c:125,1
    - Dst: str_printfa
      Src: /src/dovecot/src/dict/dict-commands.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - cmd
    - str
    - stats
    argTypes:
    - struct dict_connection_cmd*
    - string_t*
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 132
    functionName: dict_cmd_reply_handle_stats
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - io_loop_time_refresh
    - cmd_stats_update
    linkageType: ''
    returnType: void
    signature: "void dict_cmd_reply_handle_stats(struct dict_connection_cmd *cmd,\n\t\t\t
      \   string_t *str, struct stats_dist *stats)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-commands.c:139,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:142,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:143,1
    - Dst: t_str_new
      Src: /src/dovecot/src/dict/dict-commands.c:148,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:150,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:151,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:153,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:154,1
    - Dst: str_c
      Src: /src/dovecot/src/dict/dict-commands.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - values
    - str
    argTypes:
    - char**
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 155
    functionName: cmd_lookup_write_reply
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_append_tabescaped
    - i_assert
    linkageType: ''
    returnType: void
    signature: void cmd_lookup_write_reply(const char *const *values, string_t *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/dict/dict-commands.c:161,1
    - Dst: event_set_name
      Src: /src/dovecot/src/dict/dict-commands.c:163,1
    - Dst: cmd_lookup_write_reply
      Src: /src/dovecot/src/dict/dict-commands.c:165,1
    - Dst: e_debug
      Src: /src/dovecot/src/dict/dict-commands.c:166,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:168,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:169,1
    - Dst: e_debug
      Src: /src/dovecot/src/dict/dict-commands.c:170,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:172,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:173,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:174,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:175,1
    - Dst: dict_cmd_reply_handle_stats
      Src: /src/dovecot/src/dict/dict-commands.c:177,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:178,1
    - Dst: i_strdup
      Src: /src/dovecot/src/dict/dict-commands.c:180,1
    - Dst: str_c
      Src: /src/dovecot/src/dict/dict-commands.c:180,1
    - Dst: dict_connection_cmd_try_flush
      Src: /src/dovecot/src/dict/dict-commands.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - result
    - cmd
    argTypes:
    - struct dict_lookup_result*
    - struct dict_connection_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 157
    functionDepth: 4
    functionLinenumber: 157
    functionLinenumberEnd: 182
    functionName: cmd_lookup_callback
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - dict_connection_cmd_try_flush
    - str_append_c
    - event_set_name
    - e_debug
    - e_error
    - i_strdup
    - str_append_tabescaped
    - dict_cmd_reply_handle_stats
    - cmd_lookup_write_reply
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void cmd_lookup_callback(const struct dict_lookup_result *result,\n\t\t
      \   struct dict_connection_cmd *cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-commands.c:188,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:189,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/dict/dict-commands.c:194,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:196,1
    - Dst: dict_connection_cmd_async
      Src: /src/dovecot/src/dict/dict-commands.c:201,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:202,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:203,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-commands.c:205,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-commands.c:205,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-commands.c:208,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-commands.c:208,1
    - Dst: dict_lookup_async
      Src: /src/dovecot/src/dict/dict-commands.c:214,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 216
    functionName: cmd_lookup
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - dict_connection_cmd_async
    - event_set_append_log_prefix
    - str_array_length
    - t_strdup_printf
    - e_error
    - dict_lookup_async
    - event_add_str
    linkageType: ''
    returnType: int
    signature: int cmd_lookup(struct dict_connection_cmd *cmd, const char *const *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/dict/dict-commands.c:220,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/dict/dict-commands.c:222,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/dict/dict-commands.c:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 232
    functionName: dict_connection_flush_if_full
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - o_stream_set_flush_pending
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: bool
    signature: bool dict_connection_flush_if_full(struct dict_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_set_name
      Src: /src/dovecot/src/dict/dict-commands.c:239,1
    - Dst: str_truncate
      Src: /src/dovecot/src/dict/dict-commands.c:240,1
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/dict/dict-commands.c:241,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:242,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:243,1
    - Dst: str_printfa
      Src: /src/dovecot/src/dict/dict-commands.c:244,1
    - Dst: event_add_int
      Src: /src/dovecot/src/dict/dict-commands.c:246,1
    - Dst: e_debug
      Src: /src/dovecot/src/dict/dict-commands.c:247,1
    - Dst: dict_cmd_reply_handle_stats
      Src: /src/dovecot/src/dict/dict-commands.c:249,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:250,1
    - Dst: i_strdup
      Src: /src/dovecot/src/dict/dict-commands.c:252,1
    - Dst: str_c
      Src: /src/dovecot/src/dict/dict-commands.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - cmd
    - str
    argTypes:
    - struct dict_connection_cmd*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 253
    functionName: cmd_iterate_flush_finish
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - str_append_c
    - event_set_name
    - e_debug
    - e_error
    - i_strdup
    - event_add_int
    - str_truncate
    - dict_cmd_reply_handle_stats
    - event_add_str
    - dict_iterate_deinit
    linkageType: ''
    returnType: void
    signature: void cmd_iterate_flush_finish(struct dict_connection_cmd *cmd, string_t
      *str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/dict/dict-commands.c:257,1
    - Dst: cmd_iterate_flush_finish
      Src: /src/dovecot/src/dict/dict-commands.c:261,1
    - Dst: dict_connection_flush_if_full
      Src: /src/dovecot/src/dict/dict-commands.c:265,1
    - Dst: dict_iterate_values
      Src: /src/dovecot/src/dict/dict-commands.c:268,1
    - Dst: str_truncate
      Src: /src/dovecot/src/dict/dict-commands.c:270,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:272,1
    - Dst: str_printfa
      Src: /src/dovecot/src/dict/dict-commands.c:273,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:275,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:276,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:277,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:279,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:281,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:282,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:285,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/dict/dict-commands.c:286,1
    - Dst: str_data
      Src: /src/dovecot/src/dict/dict-commands.c:286,1
    - Dst: str_len
      Src: /src/dovecot/src/dict/dict-commands.c:286,1
    - Dst: dict_connection_flush_if_full
      Src: /src/dovecot/src/dict/dict-commands.c:288,1
    - Dst: dict_iterate_has_more
      Src: /src/dovecot/src/dict/dict-commands.c:291,1
    - Dst: cmd_iterate_flush_finish
      Src: /src/dovecot/src/dict/dict-commands.c:296,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct dict_connection_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 255
    functionDepth: 4
    functionLinenumber: 255
    functionLinenumberEnd: 298
    functionName: cmd_iterate_flush
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - dict_iterate_has_more
    - str_append_tabescaped
    - o_stream_nsend
    - str_truncate
    - dict_iterate_values
    - dict_connection_flush_if_full
    - cmd_iterate_flush_finish
    linkageType: ''
    returnType: int
    signature: int cmd_iterate_flush(struct dict_connection_cmd *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_connection_ref
      Src: /src/dovecot/src/dict/dict-commands.c:304,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/dict/dict-commands.c:305,1
    - Dst: dict_connection_cmds_try_output_more
      Src: /src/dovecot/src/dict/dict-commands.c:315,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/dict/dict-commands.c:317,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/dict/dict-commands.c:320,1
    - Dst: dict_connection_unref_safe
      Src: /src/dovecot/src/dict/dict-commands.c:327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct dict_connection_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 328
    functionName: cmd_iterate_callback
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - dict_connection_cmds_try_output_more
    - o_stream_cork
    - dict_connection_unref_safe
    - dict_connection_ref
    linkageType: ''
    returnType: void
    signature: void cmd_iterate_callback(struct dict_connection_cmd *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-commands.c:336,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/dict/dict-commands.c:337,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/dict/dict-commands.c:338,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:339,1
    - Dst: dict_connection_cmd_async
      Src: /src/dovecot/src/dict/dict-commands.c:342,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/dict/dict-commands.c:345,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:347,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:357,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:358,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-commands.c:360,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-commands.c:360,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-commands.c:363,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-commands.c:363,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/dict/dict-commands.c:366,1
    - Dst: dict_iterate_set_limit
      Src: /src/dovecot/src/dict/dict-commands.c:369,1
    - Dst: dict_iterate_set_async_callback
      Src: /src/dovecot/src/dict/dict-commands.c:370,1
    - Dst: dict_connection_cmds_try_output_more
      Src: /src/dovecot/src/dict/dict-commands.c:371,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 373
    functionName: cmd_iterate
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - dict_connection_cmd_async
    - str_begins_with
    - dict_iterate_set_async_callback
    - dict_connection_cmds_try_output_more
    - event_set_append_log_prefix
    - dict_iterate_set_limit
    - str_array_length
    - t_strdup_printf
    - e_error
    - dict_iterate_init
    - str_to_uint64
    - str_to_uint
    - event_add_str
    linkageType: ''
    returnType: int
    signature: int cmd_iterate(struct dict_connection_cmd *cmd, const char *const
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/dict/dict-commands.c:381,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/dict/dict-commands.c:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - id
    argTypes:
    - struct dict_connection*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 389
    functionName: dict_connection_transaction_lookup
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    linkageType: ''
    returnType: struct dict_connection_transaction
    signature: "struct dict_connection_transaction *\ndict_connection_transaction_lookup(struct
      dict_connection *conn,\n\t\t\t\t   unsigned int id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/dict/dict-commands.c:398,1
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-commands.c:401,1
    - Dst: array_delete
      Src: /src/dovecot/src/dict/dict-commands.c:402,1
    - Dst: i_unreached
      Src: /src/dovecot/src/dict/dict-commands.c:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - id
    argTypes:
    - struct dict_connection*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 407
    functionName: dict_connection_transaction_array_remove
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void dict_connection_transaction_array_remove(struct dict_connection
      *conn,\n\t\t\t\t\t unsigned int id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-commands.c:412,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:415,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-commands.c:418,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/dict/dict-commands.c:425,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:426,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/dict/dict-commands.c:429,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:430,1
    - Dst: dict_connection_transaction_lookup
      Src: /src/dovecot/src/dict/dict-commands.c:433,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:434,1
    - Dst: array_is_created
      Src: /src/dovecot/src/dict/dict-commands.c:438,1
    - Dst: i_array_init
      Src: /src/dovecot/src/dict/dict-commands.c:439,1
    - Dst: array_append_space
      Src: /src/dovecot/src/dict/dict-commands.c:441,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/dict/dict-commands.c:444,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 446
    functionName: cmd_begin
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - event_set_append_log_prefix
    - str_array_length
    - e_error
    - dict_connection_transaction_lookup
    - str_to_uint
    - array_is_created
    - dict_transaction_begin
    linkageType: ''
    returnType: int
    signature: int cmd_begin(struct dict_connection_cmd *cmd, const char *const *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/dict/dict-commands.c:455,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:456,1
    - Dst: dict_connection_transaction_lookup
      Src: /src/dovecot/src/dict/dict-commands.c:459,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - conn
    - id_str
    - trans_r
    argTypes:
    - struct dict_connection*
    - char*
    - struct dict_connection_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 465
    functionName: dict_connection_transaction_lookup_parse
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_to_uint
    - dict_connection_transaction_lookup
    linkageType: ''
    returnType: int
    signature: "int dict_connection_transaction_lookup_parse(struct dict_connection
      *conn,\n\t\t\t\t\t const char *id_str,\n\t\t\t\t\t struct dict_connection_transaction
      **trans_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/dict/dict-commands.c:471,1
    - Dst: event_set_name
      Src: /src/dovecot/src/dict/dict-commands.c:474,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:480,1
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-commands.c:484,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:485,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:486,1
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-commands.c:491,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:492,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:497,1
    - Dst: str_printfa
      Src: /src/dovecot/src/dict/dict-commands.c:498,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:501,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:502,1
    - Dst: dict_cmd_reply_handle_stats
      Src: /src/dovecot/src/dict/dict-commands.c:504,1
    - Dst: str_append_c
      Src: /src/dovecot/src/dict/dict-commands.c:505,1
    - Dst: i_strdup
      Src: /src/dovecot/src/dict/dict-commands.c:506,1
    - Dst: str_c
      Src: /src/dovecot/src/dict/dict-commands.c:506,1
    - Dst: e_debug
      Src: /src/dovecot/src/dict/dict-commands.c:509,1
    - Dst: e_debug
      Src: /src/dovecot/src/dict/dict-commands.c:511,1
    - Dst: dict_connection_transaction_array_remove
      Src: /src/dovecot/src/dict/dict-commands.c:512,1
    - Dst: dict_connection_cmd_try_flush
      Src: /src/dovecot/src/dict/dict-commands.c:513,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - cmd
    - result
    - async
    argTypes:
    - struct dict_connection_cmd*
    - struct dict_commit_result*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 467
    functionDepth: 4
    functionLinenumber: 467
    functionLinenumberEnd: 514
    functionName: cmd_commit_finish
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - dict_connection_cmd_try_flush
    - event_set_name
    - e_debug
    - dict_connection_transaction_array_remove
    - i_strdup
    - str_append_tabescaped
    - dict_cmd_reply_handle_stats
    - event_add_str
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void cmd_commit_finish(struct dict_connection_cmd *cmd,\n\t\t  const
      struct dict_commit_result *result, bool async)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_commit_finish
      Src: /src/dovecot/src/dict/dict-commands.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - cmd
    argTypes:
    - struct dict_commit_result*
    - struct dict_connection_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 516
    functionDepth: 5
    functionLinenumber: 516
    functionLinenumberEnd: 520
    functionName: cmd_commit_callback
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - cmd_commit_finish
    linkageType: ''
    returnType: void
    signature: "void cmd_commit_callback(const struct dict_commit_result *result,\n\t\t\t\tstruct
      dict_connection_cmd *cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_connection_transaction_lookup_parse
      Src: /src/dovecot/src/dict/dict-commands.c:527,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:530,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-commands.c:534,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-commands.c:536,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-commands.c:536,1
    - Dst: dict_connection_cmd_async
      Src: /src/dovecot/src/dict/dict-commands.c:540,1
    - Dst: dict_transaction_commit_async
      Src: /src/dovecot/src/dict/dict-commands.c:541,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 522
    functionDepth: 3
    functionLinenumber: 522
    functionLinenumberEnd: 543
    functionName: cmd_commit
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - dict_connection_cmd_async
    - dict_transaction_commit_async
    - event_set_append_log_prefix
    - t_strdup_printf
    - dict_connection_transaction_lookup_parse
    - event_add_str
    linkageType: ''
    returnType: int
    signature: int cmd_commit(struct dict_connection_cmd *cmd, const char *const *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_connection_transaction_lookup_parse
      Src: /src/dovecot/src/dict/dict-commands.c:550,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:553,1
    - Dst: dict_transaction_rollback
      Src: /src/dovecot/src/dict/dict-commands.c:554,1
    - Dst: dict_connection_transaction_array_remove
      Src: /src/dovecot/src/dict/dict-commands.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 545
    functionDepth: 3
    functionLinenumber: 545
    functionLinenumberEnd: 557
    functionName: cmd_rollback
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - dict_connection_transaction_lookup_parse
    - event_add_str
    - dict_transaction_rollback
    - dict_connection_transaction_array_remove
    linkageType: ''
    returnType: int
    signature: int cmd_rollback(struct dict_connection_cmd *cmd, const char *const
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-commands.c:564,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:565,1
    - Dst: dict_connection_transaction_lookup_parse
      Src: /src/dovecot/src/dict/dict-commands.c:569,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/dict/dict-commands.c:571,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:574,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:578,1
    - Dst: dict_set
      Src: /src/dovecot/src/dict/dict-commands.c:579,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 559
    functionDepth: 3
    functionLinenumber: 559
    functionLinenumberEnd: 581
    functionName: cmd_set
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - str_array_length
    - e_error
    - dict_connection_transaction_lookup_parse
    - dict_set
    - event_add_str
    linkageType: ''
    returnType: int
    signature: int cmd_set(struct dict_connection_cmd *cmd, const char *const *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-commands.c:588,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:589,1
    - Dst: dict_connection_transaction_lookup_parse
      Src: /src/dovecot/src/dict/dict-commands.c:593,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/dict/dict-commands.c:595,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:598,1
    - Dst: dict_unset
      Src: /src/dovecot/src/dict/dict-commands.c:602,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 583
    functionDepth: 3
    functionLinenumber: 583
    functionLinenumberEnd: 604
    functionName: cmd_unset
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - str_array_length
    - e_error
    - dict_connection_transaction_lookup_parse
    - dict_unset
    linkageType: ''
    returnType: int
    signature: int cmd_unset(struct dict_connection_cmd *cmd, const char *const *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-commands.c:613,1
    - Dst: str_to_llong
      Src: /src/dovecot/src/dict/dict-commands.c:614,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:615,1
    - Dst: dict_connection_transaction_lookup_parse
      Src: /src/dovecot/src/dict/dict-commands.c:619,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/dict/dict-commands.c:621,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:624,1
    - Dst: dict_atomic_inc
      Src: /src/dovecot/src/dict/dict-commands.c:628,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 606
    functionDepth: 3
    functionLinenumber: 606
    functionLinenumberEnd: 630
    functionName: cmd_atomic_inc
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - str_array_length
    - e_error
    - str_to_llong
    - dict_connection_transaction_lookup_parse
    - dict_atomic_inc
    linkageType: ''
    returnType: int
    signature: int cmd_atomic_inc(struct dict_connection_cmd *cmd, const char *const
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-commands.c:639,1
    - Dst: str_to_llong
      Src: /src/dovecot/src/dict/dict-commands.c:640,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/dict/dict-commands.c:641,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:642,1
    - Dst: dict_connection_transaction_lookup_parse
      Src: /src/dovecot/src/dict/dict-commands.c:646,1
    - Dst: dict_transaction_set_timestamp
      Src: /src/dovecot/src/dict/dict-commands.c:653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 632
    functionDepth: 3
    functionLinenumber: 632
    functionLinenumberEnd: 655
    functionName: cmd_timestamp
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - dict_transaction_set_timestamp
    - str_array_length
    - e_error
    - str_to_llong
    - dict_connection_transaction_lookup_parse
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: int cmd_timestamp(struct dict_connection_cmd *cmd, const char *const
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-commands.c:665,1
    - Dst: str_parse_get_bool
      Src: /src/dovecot/src/dict/dict-commands.c:666,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:667,1
    - Dst: dict_connection_transaction_lookup_parse
      Src: /src/dovecot/src/dict/dict-commands.c:671,1
    - Dst: dict_transaction_set_hide_log_values
      Src: /src/dovecot/src/dict/dict-commands.c:674,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct dict_connection_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 657
    functionDepth: 3
    functionLinenumber: 657
    functionLinenumberEnd: 676
    functionName: cmd_hide_log_values
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - dict_transaction_set_hide_log_values
    - str_array_length
    - str_parse_get_bool
    - e_error
    - dict_connection_transaction_lookup_parse
    linkageType: ''
    returnType: int
    signature: int cmd_hide_log_values(struct dict_connection_cmd *cmd, const char
      *const *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - enum dict_protocol_cmd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 702
    functionName: dict_command_find
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct dict_cmd_func
    signature: struct dict_cmd_func *dict_command_find(enum dict_protocol_cmd cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_command_find
      Src: /src/dovecot/src/dict/dict-commands.c:711,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-commands.c:713,1
    - Dst: i_new
      Src: /src/dovecot/src/dict/dict-commands.c:717,1
    - Dst: event_create
      Src: /src/dovecot/src/dict/dict-commands.c:719,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-commands.c:720,1
    - Dst: array_push_back
      Src: /src/dovecot/src/dict/dict-commands.c:723,1
    - Dst: dict_connection_ref
      Src: /src/dovecot/src/dict/dict-commands.c:724,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/dict/dict-commands.c:726,1
    - Dst: struct dict_cmd_func*::func
      Src: /src/dovecot/src/dict/dict-commands.c:727,1
    - Dst: dict_connection_cmd_remove
      Src: /src/dovecot/src/dict/dict-commands.c:728,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct dict_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 704
    functionDepth: 3
    functionLinenumber: 704
    functionLinenumberEnd: 732
    functionName: dict_command_input
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - event_create
    - dict_connection_cmd_remove
    - array_push_back
    - t_strsplit_tabescaped
    - dict_command_find
    - e_error
    - i_new
    - dict_connection_ref
    - event_add_str
    - struct dict_cmd_func*::func
    linkageType: ''
    returnType: int
    signature: int dict_command_input(struct dict_connection *conn, const char *line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/dict/dict-commands.c:739,1
    - Dst: cmd_iterate_flush
      Src: /src/dovecot/src/dict/dict-commands.c:747,1
    - Dst: dict_connection_cmd_try_flush
      Src: /src/dovecot/src/dict/dict-commands.c:752,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 734
    functionDepth: 5
    functionLinenumber: 734
    functionLinenumberEnd: 757
    functionName: dict_connection_cmds_try_output_more
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 2
    functionsReached:
    - cmd_iterate_flush
    - dict_connection_cmd_try_flush
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool dict_connection_cmds_try_output_more(struct dict_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/dict/dict-commands.c:763,1
    - Dst: dict_connection_cmds_try_output_more
      Src: /src/dovecot/src/dict/dict-commands.c:764,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 761
    functionDepth: 6
    functionLinenumber: 761
    functionLinenumberEnd: 767
    functionName: dict_connection_cmds_output_more
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 0
    functionsReached:
    - array_count
    - dict_connection_cmds_try_output_more
    linkageType: ''
    returnType: void
    signature: void dict_connection_cmds_output_more(struct dict_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_init
      Src: /src/dovecot/src/dict/dict-commands.c:771,1
    - Dst: stats_dist_init
      Src: /src/dovecot/src/dict/dict-commands.c:772,1
    - Dst: stats_dist_init
      Src: /src/dovecot/src/dict/dict-commands.c:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 769
    functionDepth: 1
    functionLinenumber: 769
    functionLinenumberEnd: 774
    functionName: dict_commands_init
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 1
    functionsReached:
    - stats_dist_init
    linkageType: ''
    returnType: void
    signature: void dict_commands_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/dict/dict-commands.c:778,1
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/dict/dict-commands.c:779,1
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/dict/dict-commands.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 776
    functionDepth: 1
    functionLinenumber: 776
    functionLinenumberEnd: 781
    functionName: dict_commands_deinit
    functionSourceFile: /src/dovecot/src/dict/dict-commands.c
    functionUses: 1
    functionsReached:
    - stats_dist_deinit
    linkageType: ''
    returnType: void
    signature: void dict_commands_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: DEF
    functionSourceFile: /src/dovecot/src/dict/dict-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/dict/dict-connection.c:31,1
    - Dst: str_array_length
      Src: /src/dovecot/src/dict/dict-connection.c:35,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/dict/dict-connection.c:40,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/dict/dict-connection.c:41,1
    - Dst: i_strdup
      Src: /src/dovecot/src/dict/dict-connection.c:45,1
    - Dst: dict_connection_dict_init
      Src: /src/dovecot/src/dict/dict-connection.c:48,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - _conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 52
    functionName: dict_connection_handshake_args
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - dict_connection_dict_init
    - str_array_length
    - i_strdup
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int dict_connection_handshake_args(struct connection *_conn,\n\t\t\t\t\t
      \ const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/dict/dict-connection.c:57,1
    - Dst: dict_connection_handshake_args
      Src: /src/dovecot/src/dict/dict-connection.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: dict_connection_handshake_line
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 0
    functionsReached:
    - t_strsplit_tabescaped
    - dict_connection_handshake_args
    linkageType: ''
    returnType: int
    signature: "int dict_connection_handshake_line(struct connection *conn,\n\t\t\t\t\t
      \ const char *line)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-connection.c:66,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-connection.c:67,1
    - Dst: event_create
      Src: /src/dovecot/src/dict/dict-connection.c:70,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/dict/dict-connection.c:70,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/dict/dict-connection.c:71,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/dict/dict-connection.c:71,1
    - Dst: event_add_str
      Src: /src/dovecot/src/dict/dict-connection.c:72,1
    - Dst: dict_init_cache_get
      Src: /src/dovecot/src/dict/dict-connection.c:74,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-connection.c:75,1
    - Dst: event_unref
      Src: /src/dovecot/src/dict/dict-connection.c:77,1
    - Dst: event_unref
      Src: /src/dovecot/src/dict/dict-connection.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 61
    functionDepth: 4
    functionLinenumber: 61
    functionLinenumberEnd: 82
    functionName: dict_connection_dict_init_name
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_set_append_log_prefix
    - t_strdup_printf
    - e_error
    - master_service_get_event
    - dict_init_cache_get
    - event_add_str
    linkageType: ''
    returnType: int
    signature: int dict_connection_dict_init_name(struct dict_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/dict/dict-connection.c:88,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/dict/dict-connection.c:90,1
    - Dst: strcmp
      Src: /src/dovecot/src/dict/dict-connection.c:91,1
    - Dst: dict_connection_dict_init_name
      Src: /src/dovecot/src/dict/dict-connection.c:92,1
    - Dst: e_error
      Src: /src/dovecot/src/dict/dict-connection.c:101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 84
    functionDepth: 5
    functionLinenumber: 84
    functionLinenumberEnd: 106
    functionName: dict_connection_dict_init
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_foreach_elem
    - dict_connection_dict_init_name
    - e_error
    - array_is_created
    linkageType: ''
    returnType: int
    signature: int dict_connection_dict_init(struct dict_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/dict/dict-connection.c:110,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/dict/dict-connection.c:113,1
    - Dst: dict_connection_destroy
      Src: /src/dovecot/src/dict/dict-connection.c:114,1
    - Dst: dict_connection_cmds_output_more
      Src: /src/dovecot/src/dict/dict-connection.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 108
    functionDepth: 7
    functionLinenumber: 108
    functionLinenumberEnd: 120
    functionName: dict_connection_output
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - dict_connection_destroy
    - container_of
    - dict_connection_cmds_output_more
    linkageType: ''
    returnType: int
    signature: int dict_connection_output(struct connection *_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/dict/dict-connection.c:127,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/dict/dict-connection.c:130,1
    - Dst: event_add_category
      Src: /src/dovecot/src/dict/dict-connection.c:132,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/dict/dict-connection.c:134,1
    - Dst: i_array_init
      Src: /src/dovecot/src/dict/dict-connection.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - master_conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 140
    functionName: dict_connection_create
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - connection_init_server
    - i_new
    - o_stream_set_flush_callback
    - event_add_category
    linkageType: ''
    returnType: struct dict_connection
    signature: 'struct dict_connection *

      dict_connection_create(struct master_service_connection *master_conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-connection.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: dict_connection_ref
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dict_connection_ref(struct dict_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-connection.c:152,1
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-connection.c:156,1
    - Dst: array_count
      Src: /src/dovecot/src/dict/dict-connection.c:156,1
    - Dst: array_is_created
      Src: /src/dovecot/src/dict/dict-connection.c:160,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/dict/dict-connection.c:161,1
    - Dst: dict_transaction_rollback
      Src: /src/dovecot/src/dict/dict-connection.c:162,1
    - Dst: dict_init_cache_unref
      Src: /src/dovecot/src/dict/dict-connection.c:166,1
    - Dst: array_is_created
      Src: /src/dovecot/src/dict/dict-connection.c:168,1
    - Dst: array_free
      Src: /src/dovecot/src/dict/dict-connection.c:169,1
    - Dst: array_free
      Src: /src/dovecot/src/dict/dict-connection.c:171,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/dict/dict-connection.c:173,1
    - Dst: i_free
      Src: /src/dovecot/src/dict/dict-connection.c:175,1
    - Dst: i_free
      Src: /src/dovecot/src/dict/dict-connection.c:176,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/dict/dict-connection.c:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 180
    functionName: dict_connection_unref
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 1
    functionsReached:
    - connection_deinit
    - dict_transaction_rollback
    - i_free
    - dict_init_cache_unref
    - array_count
    - array_foreach_modifiable
    - array_is_created
    - i_assert
    - array_free
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: bool
    signature: bool dict_connection_unref(struct dict_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/dict/dict-connection.c:185,1
    - Dst: i_assert
      Src: /src/dovecot/src/dict/dict-connection.c:187,1
    - Dst: dict_command_input
      Src: /src/dovecot/src/dict/dict-connection.c:189,1
    - Dst: array_count
      Src: /src/dovecot/src/dict/dict-connection.c:192,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/dict/dict-connection.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 182
    functionDepth: 4
    functionLinenumber: 182
    functionLinenumberEnd: 198
    functionName: dict_connection_input_line
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - connection_input_halt
    - dict_command_input
    - array_count
    - i_assert
    linkageType: ''
    returnType: int
    signature: int dict_connection_input_line(struct connection *_conn, const char
      *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/dict/dict-connection.c:202,1
    - Dst: dict_connection_unref
      Src: /src/dovecot/src/dict/dict-connection.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 4
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: dict_connection_unref_safe_callback
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 0
    functionsReached:
    - dict_connection_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dict_connection_unref_safe_callback(struct dict_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_short
      Src: /src/dovecot/src/dict/dict-connection.c:213,1
    - Dst: dict_connection_unref
      Src: /src/dovecot/src/dict/dict-connection.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct dict_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 206
    functionDepth: 4
    functionLinenumber: 206
    functionLinenumberEnd: 219
    functionName: dict_connection_unref_safe
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 1
    functionsReached:
    - timeout_add_short
    - dict_connection_unref
    linkageType: ''
    returnType: void
    signature: void dict_connection_unref_safe(struct dict_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/dict/dict-connection.c:223,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/dict/dict-connection.c:238,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/dict/dict-connection.c:239,1
    - Dst: dict_connection_cmds_output_more
      Src: /src/dovecot/src/dict/dict-connection.c:240,1
    - Dst: io_remove
      Src: /src/dovecot/src/dict/dict-connection.c:242,1
    - Dst: dict_connection_unref
      Src: /src/dovecot/src/dict/dict-connection.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 221
    functionDepth: 7
    functionLinenumber: 221
    functionLinenumberEnd: 244
    functionName: dict_connection_destroy
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 1
    functionsReached:
    - container_of
    - dict_connection_unref
    - dict_connection_cmds_output_more
    - o_stream_close
    - io_remove
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: void dict_connection_destroy(struct connection *_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: dict_connections_current_count
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dict_connections_current_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/dict/dict-connection.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: dict_connections_destroy_all
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void dict_connections_destroy_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/dict/dict-connection.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 272
    functionName: dict_connections_init
    functionSourceFile: /src/dovecot/src/dict/dict-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void dict_connections_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: NOTIFY_STATUS_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOTIFY_STATUS_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:83,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:83,1
    - Dst: NOTIFY_STATUS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:84,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:94,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:96,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 103
    functionName: notify_status_mailbox_enabled
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - mail_storage_get_user
    - settings_free
    - NOTIFY_STATUS_USER_CONTEXT
    - e_error
    - settings_get
    linkageType: ''
    returnType: bool
    signature: bool notify_status_mailbox_enabled(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:110,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:114,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - result
    - event
    argTypes:
    - struct dict_commit_result*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 118
    functionName: notify_update_callback
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - e_error
    - event_unref
    linkageType: ''
    returnType: void
    signature: "void notify_update_callback(const struct dict_commit_result *result,\n\t\t\t\t
      \  struct event *event)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:127,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:127,1
    - Dst: NOTIFY_STATUS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:128,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:129,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:133,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:135,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:135,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:136,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:138,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:139,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:140,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:141,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:142,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:143,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:144,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:145,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:146,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:148,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:148,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:149,1
    - Dst: json_append_escaped
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:151,1
    - Dst: json_append_escaped
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:152,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:152,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:155,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:156,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:157,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:158,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:159,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:160,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:161,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:162,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:163,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:164,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:173,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:173,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:174,1
    - Dst: var_expand
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:175,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:177,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:180,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:181,1
    - Dst: dict_set
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:182,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:182,1
    - Dst: dict_transaction_commit_async
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:183,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:184,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 189
    functionName: notify_update_mailbox_status
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_get_namespace
    - str_c
    - strlen
    - mail_user_get_dict_op_settings
    - t_strdup_printf
    - mailbox_alloc
    - json_append_escaped
    - dict_set
    - t_str_new
    - mail_storage_get_user
    - mailbox_free
    - mailbox_sync
    - dict_transaction_begin
    - mailbox_get_storage
    - event_create
    - mailbox_get_last_error
    - dict_transaction_commit_async
    - mailbox_get_status
    - e_error
    - mailbox_get_vname
    - i_assert
    - dec2str
    - mailbox_open
    - e_debug
    - NOTIFY_STATUS_USER_CONTEXT
    - var_expand
    linkageType: ''
    returnType: void
    signature: void notify_update_mailbox_status(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:193,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:193,1
    - Dst: NOTIFY_STATUS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:194,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:195,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:198,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:201,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:201,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:203,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:204,1
    - Dst: dict_unset
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:205,1
    - Dst: dict_transaction_commit_async
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:206,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 208
    functionName: notify_remove_mailbox_status
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - event_create
    - mail_storage_get_user
    - dict_transaction_commit_async
    - e_debug
    - mail_user_get_dict_op_settings
    - t_strdup_printf
    - dict_transaction_begin
    - NOTIFY_STATUS_USER_CONTEXT
    - dict_unset
    - mailbox_get_vname
    - i_assert
    linkageType: ''
    returnType: void
    signature: void notify_remove_mailbox_status(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:212,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 215
    functionName: notify_status_mail_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_transaction_get_mailbox
    - i_new
    linkageType: ''
    returnType: void
    signature: void *notify_status_mail_transaction_begin(struct mailbox_transaction_context
      *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notify_status_mailbox_enabled
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:222,1
    - Dst: notify_update_mailbox_status
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:223,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - t
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 217
    functionDepth: 3
    functionLinenumber: 217
    functionLinenumberEnd: 225
    functionName: notify_status_mail_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - notify_status_mailbox_enabled
    - notify_update_mailbox_status
    - i_free
    linkageType: ''
    returnType: void
    signature: "void notify_status_mail_transaction_commit(void *t,\n\t\t\t\t      struct
      mail_transaction_commit_changes *changes ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 230
    functionName: notify_status_mail_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void notify_status_mail_transaction_rollback(void *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notify_status_mailbox_enabled
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:234,1
    - Dst: notify_update_mailbox_status
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 3
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: notify_status_mailbox_create
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - notify_status_mailbox_enabled
    - notify_update_mailbox_status
    linkageType: ''
    returnType: void
    signature: void notify_status_mailbox_create(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notify_status_mailbox_enabled
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:241,1
    - Dst: notify_remove_mailbox_status
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - box
    argTypes:
    - void*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: notify_status_mailbox_delete_commit
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - notify_status_mailbox_enabled
    - notify_remove_mailbox_status
    linkageType: ''
    returnType: void
    signature: "void notify_status_mailbox_delete_commit(void *txn ATTR_UNUSED,\n\t\t\t\t\t\tstruct
      mailbox *box)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: notify_status_mailbox_enabled
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:247,1
    - Dst: notify_remove_mailbox_status
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:248,1
    - Dst: notify_status_mailbox_enabled
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:249,1
    - Dst: notify_update_mailbox_status
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 245
    functionDepth: 3
    functionLinenumber: 245
    functionLinenumberEnd: 251
    functionName: notify_status_mailbox_rename
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - notify_status_mailbox_enabled
    - notify_remove_mailbox_status
    - notify_update_mailbox_status
    linkageType: ''
    returnType: void
    signature: void notify_status_mailbox_rename(struct mailbox *src, struct mailbox
      *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 257
    functionName: notify_status_mail_save
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void notify_status_mail_save(void *t, struct mail *mail ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct mail*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 264
    functionName: notify_status_mail_copy
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void notify_status_mail_copy(void *t, struct mail *src ATTR_UNUSED,\n\t\t\t\t
      \   struct mail *dst ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: notify_status_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void notify_status_mail_expunge(void *t, struct mail *mail ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - t
    - mail
    - old_flags
    argTypes:
    - void*
    - struct mail*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 277
    functionName: notify_status_mail_update_flags
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - mail_get_flags
    linkageType: ''
    returnType: void
    signature: "void notify_status_mail_update_flags(void *t, struct mail *mail,\n\t\t\t\t\t
      \   enum mail_flags old_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_STATUS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:295,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:296,1
    - Dst: dict_wait
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:298,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:299,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:300,1
    - Dst: notify_unregister
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:301,1
    - Dst: struct notify_status_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 303
    functionName: notify_status_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - struct notify_status_user*::module_ctx::super::deinit
    - settings_free
    - NOTIFY_STATUS_USER_CONTEXT
    - dict_deinit
    - dict_wait
    - i_assert
    - notify_unregister
    linkageType: ''
    returnType: void
    signature: void notify_status_mail_user_deinit(struct mail_user *user)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:316,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:318,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:322,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:323,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:325,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:326,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:328,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:330,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:334,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:341,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 305
    functionDepth: 3
    functionLinenumber: 305
    functionLinenumberEnd: 342
    functionName: notify_status_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - p_new
    - settings_event_add_filter_name
    - settings_free
    - e_error
    - MODULE_CONTEXT_SET
    - settings_get
    - dict_init_auto
    linkageType: ''
    returnType: void
    signature: void notify_status_mail_user_created(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_STATUS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:348,1
    - Dst: notify_register
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - namespaces
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 352
    functionName: notify_status_mail_namespaces_created
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - NOTIFY_STATUS_USER_CONTEXT
    - notify_register
    linkageType: ''
    returnType: void
    signature: void notify_status_mail_namespaces_created(struct mail_namespace *namespaces)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 363
    functionName: notify_status_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void notify_status_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 368
    functionName: notify_status_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void notify_status_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/quota/quota-plugin.c:23,1
    - Dst: quota_backends_register
      Src: /src/dovecot/src/plugins/quota/quota-plugin.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: quota_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-plugin.c
    functionUses: 0
    functionsReached:
    - quota_backends_register
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void quota_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/quota/quota-plugin.c:29,1
    - Dst: quota_backends_unregister
      Src: /src/dovecot/src/plugins/quota/quota-plugin.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: quota_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - quota_backends_unregister
    linkageType: ''
    returnType: void
    signature: void quota_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mount
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: mount_type_is_nfs
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mount_type_is_nfs(mount)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:142,1
    - Dst: geteuid
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:143,1
    - Dst: getegid
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: fs_quota_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - getegid
    - geteuid
    - i_new
    linkageType: ''
    returnType: struct quota_root
    signature: struct quota_root *fs_quota_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:153,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - _root
    - error_r
    argTypes:
    - struct quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 163
    functionName: fs_quota_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - settings_get
    linkageType: ''
    returnType: int
    signature: int fs_quota_init(struct quota_root *_root, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:170,1
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:172,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:173,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:176,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:177,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:178,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - mount
    argTypes:
    - struct fs_quota_mountpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 180
    functionName: fs_quota_mountpoint_free
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - i_close_fd_path
    - DLLIST_REMOVE
    - i_free
    linkageType: ''
    returnType: void
    signature: void fs_quota_mountpoint_free(struct fs_quota_mountpoint *mount)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_quota_mountpoint_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:187,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:188,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 190
    functionName: fs_quota_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - fs_quota_mountpoint_free
    - i_free
    - settings_free
    linkageType: ''
    returnType: void
    signature: void fs_quota_deinit(struct quota_root *_root)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mountpoint_get
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:198,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:203,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:204,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:210,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:219,1
    - Dst: mount_type_is_nfs
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:221,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:222,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:223,1
    - Dst: fs_quota_mountpoint_free
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - dir
    - event
    argTypes:
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 230
    functionName: fs_quota_mountpoint_get
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - mountpoint_get
    - mount_type_is_nfs
    - e_error
    - fs_quota_mountpoint_free
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct fs_quota_mountpoint
    signature: struct fs_quota_mountpoint *fs_quota_mountpoint_get(const char *dir,
      struct event *event)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fs_quota_mountpoint_get
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:236,1
    - Dst: mount_type_is_nfs
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:248,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:253,1
    - Dst: open
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:254,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:256,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:262,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:263,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:264,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:265,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - root
    - dir
    argTypes:
    - struct fs_quota_root*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 232
    functionDepth: 3
    functionLinenumber: 232
    functionLinenumberEnd: 266
    functionName: fs_quota_mount_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - e_debug
    - open
    - mount_type_is_nfs
    - fs_quota_mountpoint_get
    - i_strconcat
    - e_error
    linkageType: ''
    returnType: void
    signature: void fs_quota_mount_init(struct fs_quota_root *root, const char *dir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_quota_mount_init
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:278,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:279,1
    - Dst: fs_quota_mount_init
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:282,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - _root
    - ns
    argTypes:
    - struct quota_root*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 268
    functionDepth: 4
    functionLinenumber: 268
    functionLinenumberEnd: 283
    functionName: fs_quota_namespace_added
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - fs_quota_mount_init
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: void
    signature: "void fs_quota_namespace_added(struct quota_root *_root,\n\t\t\t\t
      \    struct mail_namespace *ns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 301
    functionName: fs_quota_root_get_resources
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *const *

      fs_quota_root_get_resources(struct quota_root *_root)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - root
    - group
    argTypes:
    - struct fs_quota_root*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 311
    functionName: fs_quota_root_disable
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fs_quota_root_disable(struct fs_quota_root *root, bool group)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - rq
    - bytes_value_r
    - bytes_limit_r
    - count_value_r
    - count_limit_r
    argTypes:
    - rquota*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 338
    functionName: rquota_get_result
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void rquota_get_result(const rquota *rq,\n\t\t  uint64_t *bytes_value_r,
      uint64_t *bytes_limit_r,\n\t\t  uint64_t *count_value_r, uint64_t *count_limit_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:355,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:356,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:358,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:364,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:369,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:370,1
    - Dst: clnt_create
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:373,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:375,1
    - Dst: auth_destroy
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:381,1
    - Dst: authunix_create_default
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:382,1
    - Dst: clnt_call
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:390,1
    - Dst: auth_destroy
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:396,1
    - Dst: clnt_destroy
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:397,1
    - Dst: clnt_sperrno
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:400,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:402,1
    - Dst: rquota_get_result
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:410,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:413,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:415,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:421,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:422,1
    - Dst: fs_quota_root_disable
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:423,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:429,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 6
    argNames:
    - root
    - bytes_value_r
    - bytes_limit_r
    - count_value_r
    - count_limit_r
    - error_r
    argTypes:
    - struct fs_quota_root*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 434
    functionName: do_rquota_user
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - dec2str
    - clnt_destroy
    - authunix_create_default
    - e_debug
    - t_strdup_printf
    - clnt_sperrno
    - rquota_get_result
    - fs_quota_root_disable
    - t_strdup_until
    - auth_destroy
    - i_assert
    - clnt_create
    - clnt_call
    linkageType: ''
    returnType: int
    signature: "int do_rquota_user(struct fs_quota_root *root,\n\t       uint64_t
      *bytes_value_r, uint64_t *bytes_limit_r,\n\t       uint64_t *count_value_r,
      uint64_t *count_limit_r,\n\t       const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:454,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:455,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:457,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:460,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:461,1
    - Dst: clnt_create
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:464,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:466,1
    - Dst: auth_destroy
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:472,1
    - Dst: authunix_create_default
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:473,1
    - Dst: clnt_call
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:482,1
    - Dst: auth_destroy
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:488,1
    - Dst: clnt_destroy
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:489,1
    - Dst: clnt_sperrno
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:492,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:494,1
    - Dst: rquota_get_result
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:501,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:504,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:506,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:512,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:513,1
    - Dst: fs_quota_root_disable
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:514,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 44
    argCount: 6
    argNames:
    - ATTR_UNUSED
    - bytes_value_r ATTR_UNUSED
    - bytes_limit_r ATTR_UNUSED
    - count_value_r ATTR_UNUSED
    - count_limit_r ATTR_UNUSED
    - error_r
    argTypes:
    - struct fs_quota_root*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 529
    functionName: do_rquota_group
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - dec2str
    - strchr
    - clnt_destroy
    - authunix_create_default
    - e_debug
    - t_strdup_printf
    - clnt_sperrno
    - rquota_get_result
    - fs_quota_root_disable
    - t_strdup_until
    - auth_destroy
    - i_assert
    - clnt_create
    - clnt_call
    linkageType: ''
    returnType: int
    signature: "int do_rquota_group(struct fs_quota_root *root ATTR_UNUSED,\n\t\tuint64_t
      *bytes_value_r ATTR_UNUSED,\n\t\tuint64_t *bytes_limit_r ATTR_UNUSED,\n\t\tuint64_t
      *count_value_r ATTR_UNUSED,\n\t\tuint64_t *count_limit_r ATTR_UNUSED,\n\t\tconst
      char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:546,1
    - Dst: quotactl
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:549,1
    - Dst: QCMD
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:549,1
    - Dst: fs_quota_root_disable
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:553,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:556,1
    - Dst: quotactl
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:577,1
    - Dst: QCMD
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:577,1
    - Dst: fs_quota_root_disable
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:581,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:584,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:588,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 7
    argNames:
    - root
    - group
    - bytes_value_r
    - bytes_limit_r
    - count_value_r
    - count_limit_r
    - error_r
    argTypes:
    - struct fs_quota_root*
    - bool
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 615
    functionName: fs_quota_get_linux
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - QCMD
    - t_strdup_printf
    - fs_quota_root_disable
    - quotactl
    linkageType: ''
    returnType: int
    signature: "int fs_quota_get_linux(struct fs_quota_root *root, bool group,\n\t\t
      \  uint64_t *bytes_value_r, uint64_t *bytes_limit_r,\n\t\t   uint64_t *count_value_r,
      uint64_t *count_limit_r,\n\t\t   const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: quotactl
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:631,1
    - Dst: QCMD
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:631,1
    - Dst: fs_quota_root_disable
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:634,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:637,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 7
    argNames:
    - root
    - group
    - bytes_value_r
    - bytes_limit_r
    - count_value_r
    - count_limit_r
    - error_r
    argTypes:
    - struct fs_quota_root*
    - bool
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 653
    functionName: fs_quota_get_bsdaix
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - fs_quota_root_disable
    - quotactl
    - QCMD
    linkageType: ''
    returnType: int
    signature: "int fs_quota_get_bsdaix(struct fs_quota_root *root, bool group,\n\t\t
      \   uint64_t *bytes_value_r, uint64_t *bytes_limit_r,\n\t\t    uint64_t *count_value_r,
      uint64_t *count_limit_r,\n\t\t    const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: quota_open
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:668,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:669,1
    - Dst: fs_quota_root_disable
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:671,1
    - Dst: quota_get
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:681,1
    - Dst: fs_quota_root_disable
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:683,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:686,1
    - Dst: quota_close
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:701,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 7
    argNames:
    - root
    - group
    - bytes_value_r
    - bytes_limit_r
    - count_value_r
    - count_limit_r
    - error_r
    argTypes:
    - struct fs_quota_root*
    - bool
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 703
    functionName: fs_quota_get_netbsd
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - quota_open
    - t_strdup_printf
    - quota_close
    - quota_get
    - fs_quota_root_disable
    linkageType: ''
    returnType: int
    signature: "int fs_quota_get_netbsd(struct fs_quota_root *root, bool group,\n\t\t
      \   uint64_t *bytes_value_r, uint64_t *bytes_limit_r,\n\t\t    uint64_t *count_value_r,
      uint64_t *count_limit_r,\n\t\t    const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: quotactl
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:715,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:721,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 6
    argNames:
    - root
    - bytes_value_r
    - bytes_limit_r
    - count_value_r
    - count_limit_r
    - error_r
    argTypes:
    - struct fs_quota_root*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 741
    functionName: fs_quota_get_hpux
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - quotactl
    linkageType: ''
    returnType: int
    signature: "int fs_quota_get_hpux(struct fs_quota_root *root,\n\t\t  uint64_t
      *bytes_value_r, uint64_t *bytes_limit_r,\n\t\t  uint64_t *count_value_r, uint64_t
      *count_limit_r,\n\t\t  const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ioctl
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:760,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:761,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 6
    argNames:
    - root
    - bytes_value_r
    - bytes_limit_r
    - count_value_r
    - count_limit_r
    - error_r
    argTypes:
    - struct fs_quota_root*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 777
    functionName: fs_quota_get_solaris
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - ioctl
    linkageType: ''
    returnType: int
    signature: "int fs_quota_get_solaris(struct fs_quota_root *root,\n\t\t     uint64_t
      *bytes_value_r, uint64_t *bytes_limit_r,\n\t\t     uint64_t *count_value_r,
      uint64_t *count_limit_r,\n\t\t     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fs_quota_get_linux
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:794,1
    - Dst: fs_quota_get_netbsd
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:797,1
    - Dst: fs_quota_get_bsdaix
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:800,1
    - Dst: fs_quota_get_hpux
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:808,1
    - Dst: fs_quota_get_solaris
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:811,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 7
    argNames:
    - root
    - group
    - bytes_value_r
    - bytes_limit_r
    - count_value_r
    - count_limit_r
    - error_r
    argTypes:
    - struct fs_quota_root*
    - bool
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 815
    functionName: fs_quota_get_resources
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - fs_quota_get_hpux
    - fs_quota_get_linux
    - fs_quota_get_bsdaix
    - fs_quota_get_solaris
    - fs_quota_get_netbsd
    linkageType: ''
    returnType: int
    signature: "int fs_quota_get_resources(struct fs_quota_root *root, bool group,\n\t\t
      \      uint64_t *bytes_value_r, uint64_t *bytes_limit_r,\n\t\t       uint64_t
      *count_value_r, uint64_t *count_limit_r,\n\t\t       const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:827,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:830,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:832,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:836,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:837,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:841,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:842,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - _root
    - box
    argTypes:
    - struct quota_root*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 845
    functionName: fs_quota_match_box
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - e_debug
    - e_error
    - stat
    - CMP_DEV_T
    - mailbox_get_path_to
    linkageType: ''
    returnType: bool
    signature: bool fs_quota_match_box(struct quota_root *_root, struct mailbox *box)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:860,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:867,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:868,1
    - Dst: mount_type_is_nfs
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:874,1
    - Dst: do_rquota_user
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:876,1
    - Dst: do_rquota_group
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:879,1
    - Dst: fs_quota_get_resources
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:885,1
    - Dst: fs_quota_get_resources
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:890,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/quota/quota-fs.c:900,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 4
    argNames:
    - _root
    - name
    - value_r
    - error_r
    argTypes:
    - struct quota_root*
    - char*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 847
    functionDepth: 3
    functionLinenumber: 847
    functionLinenumberEnd: 911
    functionName: fs_quota_get_resource
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached:
    - do_rquota_group
    - mount_type_is_nfs
    - t_strdup_printf
    - strcasecmp
    - fs_quota_get_resources
    - do_rquota_user
    linkageType: ''
    returnType: enum quota_get_result
    signature: "enum quota_get_result fs_quota_get_resource(struct quota_root *_root,
      const char *name,\n\t\t      uint64_t *value_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct quota_root*
    - struct quota_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 919
    functionName: fs_quota_update
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-fs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fs_quota_update(struct quota_root *root ATTR_UNUSED,\n\t\tstruct
      quota_transaction_context *ctx ATTR_UNUSED,\n\t\tconst char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: imapc_quota_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct quota_root
    signature: struct quota_root *imapc_quota_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _root
    - error_r
    argTypes:
    - struct quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 100
    functionName: imapc_quota_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - settings_get
    linkageType: ''
    returnType: int
    signature: int imapc_quota_init(struct quota_root *_root, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:106,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: imapc_quota_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - i_free
    - settings_free
    linkageType: ''
    returnType: void
    signature: void imapc_quota_deinit(struct quota_root *_root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:117,1
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:118,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:119,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: imapc_quota_root_refresh_find
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - quota_get_mail_user_quota
    - i_assert
    - array_foreach
    linkageType: ''
    returnType: struct imapc_quota_refresh
    signature: 'struct imapc_quota_refresh *

      imapc_quota_root_refresh_find(struct imapc_storage_client *client)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:140,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:141,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:145,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - refresh
    - root_name
    argTypes:
    - struct imapc_quota_refresh*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 151
    functionName: imapc_quota_refresh_root_get
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - p_strdup
    - strcmp
    - array_append_space
    linkageType: ''
    returnType: struct imapc_quota_refresh_root
    signature: "struct imapc_quota_refresh_root *\nimapc_quota_refresh_root_get(struct
      imapc_quota_refresh *refresh,\n\t\t\t     const char *root_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:161,1
    - Dst: imapc_quota_root_refresh_find
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:164,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:166,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:170,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:176,1
    - Dst: imapc_quota_refresh_root_get
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:177,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 181
    functionName: imapc_untagged_quotaroot
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imapc_quota_root_refresh_find
    - array_count
    - imapc_quota_refresh_root_get
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_quotaroot(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \    struct imapc_storage_client *client)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:193,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:194,1
    - Dst: imapc_quota_root_refresh_find
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:197,1
    - Dst: imapc_quota_refresh_root_get
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:201,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:204,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:205,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:206,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:208,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:209,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:212,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:215,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 220
    functionName: imapc_untagged_quota
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - str_to_uint64
    - imapc_quota_root_refresh_find
    - strcasecmp
    - imapc_quota_refresh_root_get
    - imap_arg_get_atom
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_quota(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      struct imapc_storage_client *client)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_storage
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:233,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:234,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:238,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:247,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct imapc_quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 252
    functionName: imapc_quota_client_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_storage
    - e_warning
    - strcmp
    - imapc_storage_client_register_untagged
    linkageType: ''
    returnType: bool
    signature: bool imapc_quota_client_init(struct imapc_quota_root *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:256,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:258,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - refresh
    argTypes:
    - struct imapc_quota_refresh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 260
    functionName: imapc_quota_refresh_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_assert
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void imapc_quota_refresh_init(struct imapc_quota_refresh *refresh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:269,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:270,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:275,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:277,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - quota
    - refresh
    argTypes:
    - struct quota*
    - struct imapc_quota_refresh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 297
    functionName: imapc_quota_refresh_update
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - e_error
    - array_count
    - array_foreach
    - array_front
    linkageType: ''
    returnType: void
    signature: "void imapc_quota_refresh_update(struct quota *quota,\n\t\t\t   struct
      imapc_quota_refresh *refresh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_quota_refresh_update
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:304,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:305,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - quota
    - refresh
    - success
    argTypes:
    - struct quota*
    - struct imapc_quota_refresh*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 299
    functionDepth: 2
    functionLinenumber: 299
    functionLinenumberEnd: 307
    functionName: imapc_quota_refresh_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imapc_quota_refresh_update
    - pool_unref
    linkageType: ''
    returnType: void
    signature: "void imapc_quota_refresh_deinit(struct quota *quota,\n\t\t\t   struct
      imapc_quota_refresh *refresh, bool success)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - root1
    - root2
    argTypes:
    - struct imapc_quota_refresh_root*
    - struct imapc_quota_refresh_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 319
    functionName: imapc_quota_refresh_root_order_cmp
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int imapc_quota_refresh_root_order_cmp(const struct imapc_quota_refresh_root
      *root1,\n\t\t\t\t   const struct imapc_quota_refresh_root *root2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_quota_refresh_init
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:328,1
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:331,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:332,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:334,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:336,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:340,1
    - Dst: imapc_quota_refresh_deinit
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:341,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:344,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - root
    - error_r
    argTypes:
    - struct imapc_quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 321
    functionDepth: 5
    functionLinenumber: 321
    functionLinenumberEnd: 351
    functionName: imapc_quota_refresh_mailbox
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - imapc_simple_run
    - mail_storage_get_last_internal_error
    - imapc_quota_refresh_init
    - imapc_quota_refresh_deinit
    - t_strdup_printf
    - imapc_simple_context_init
    - array_sort
    - imapc_command_sendf
    - imapc_client_cmd
    linkageType: ''
    returnType: int
    signature: "int imapc_quota_refresh_mailbox(struct imapc_quota_root *root,\n\t\t\t\t
      \      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_quota_refresh_init
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:360,1
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:362,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:363,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:365,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:367,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:371,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:373,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:374,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:377,1
    - Dst: imapc_quota_refresh_deinit
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:379,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:382,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - root
    - error_r
    argTypes:
    - struct imapc_quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 353
    functionDepth: 5
    functionLinenumber: 353
    functionLinenumberEnd: 388
    functionName: imapc_quota_refresh_root
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_pop_front
    - imapc_simple_run
    - mail_storage_get_last_internal_error
    - imapc_quota_refresh_init
    - imapc_quota_refresh_deinit
    - t_strdup_printf
    - imapc_simple_context_init
    - array_count
    - array_front
    - imapc_command_sendf
    - imapc_client_cmd
    linkageType: ''
    returnType: int
    signature: "int imapc_quota_refresh_root(struct imapc_quota_root *root,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imapc_quota_client_init
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:403,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:406,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:412,1
    - Dst: imapc_quota_refresh_root
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:422,1
    - Dst: imapc_quota_refresh_mailbox
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:424,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - root
    - error_r
    argTypes:
    - struct imapc_quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 390
    functionDepth: 10
    functionLinenumber: 390
    functionLinenumberEnd: 430
    functionName: imapc_quota_refresh
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - imapc_quota_client_init
    - e_warning
    - imapc_client_get_capabilities
    - imapc_quota_refresh_mailbox
    - imapc_quota_refresh_root
    linkageType: ''
    returnType: int
    signature: "int imapc_quota_refresh(struct imapc_quota_root *root,\n\t\t\t       const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - _root
    - ns
    argTypes:
    - struct quota_root*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 440
    functionName: imapc_quota_namespace_added
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imapc_quota_namespace_added(struct quota_root *_root, struct mail_namespace
      *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 451
    functionName: imapc_quota_root_get_resources
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *const *

      imapc_quota_root_get_resources(struct quota_root *root ATTR_UNUSED)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_quota_refresh
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:459,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:462,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-imapc.c:464,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - _root
    - name
    - value_r
    - error_r
    argTypes:
    - struct quota_root*
    - char*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 453
    functionDepth: 11
    functionLinenumber: 453
    functionLinenumberEnd: 471
    functionName: imapc_quota_get_resource
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imapc_quota_refresh
    linkageType: ''
    returnType: enum quota_get_result
    signature: "enum quota_get_result imapc_quota_get_resource(struct quota_root *_root,
      const char *name,\n\t\t\t uint64_t *value_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct quota_root*
    - struct quota_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 479
    functionName: imapc_quota_update
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-imapc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int imapc_quota_update(struct quota_root *root ATTR_UNUSED,\n\t\t
      \  struct quota_transaction_context *ctx ATTR_UNUSED,\n\t\t   const char **error_r
      ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:53,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:54,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:58,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:64,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:67,1
    - Dst: quota_transaction_is_over
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:67,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:69,1
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:71,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:72,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:80,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:83,1
    - Dst: quota_transaction_is_over
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:83,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:85,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 14
    functionDepth: 3
    functionLinenumber: 14
    functionLinenumberEnd: 86
    functionName: test_quota_transaction_is_over
    functionSourceFile: /src/dovecot/src/plugins/quota/test-quota-util.c
    functionUses: 0
    functionsReached:
    - i_zero
    - quota_transaction_is_over
    - test_assert_idx
    - test_end
    - i_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_quota_transaction_is_over(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/plugins/quota/test-quota-util.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 7
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/quota/test-quota-util.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: QUOTA_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: QUOTA_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: QUOTA_MAIL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_MAIL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: QUOTA_LIST_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_LIST_CONTEXT(obj)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: quota_alloc_result_errstr
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:57,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:61,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:66,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:70,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - qt
    - box
    - res
    - internal_err
    argTypes:
    - struct quota_transaction_context*
    - struct mailbox*
    - enum quota_alloc_result
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 75
    functionName: quota_set_storage_error
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - quota_alloc_result_errstr
    - i_unreached
    - mail_storage_set_error
    - mailbox_set_critical
    linkageType: ''
    returnType: void
    signature: "void quota_set_storage_error(struct quota_transaction_context *qt,\n\t\t\t\t
      \   struct mailbox *box,\n\t\t\t\t    enum quota_alloc_result res,\n\t\t\t\t
      \   const char *internal_err)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:80,1
    - Dst: QUOTA_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:81,1
    - Dst: QUOTA_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:82,1
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:83,1
    - Dst: union mail_module_context*::super::expunge
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:88,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:97,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:99,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:101,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:102,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:103,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:105,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:106,1
    - Dst: union mail_module_context*::super::expunge
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:117,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 118
    functionName: quota_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - QUOTA_USER_CONTEXT_REQUIRE
    - mail_get_physical_size
    - array_push_back
    - QUOTA_CONTEXT_REQUIRE
    - union mail_module_context*::super::expunge
    - array_is_created
    - mail_get_virtual_size
    - QUOTA_MAIL_CONTEXT
    linkageType: ''
    returnType: void
    signature: void quota_mail_expunge(struct mail *_mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:124,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:129,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:131,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:135,1
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:139,1
    - Dst: mailbox_list_get_count
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:142,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:143,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:146,1
    - Dst: struct quota_mailbox*::module_ctx::super::create_box
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 151
    functionName: quota_create_box
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_count
    - QUOTA_CONTEXT_REQUIRE
    - settings_free
    - mail_storage_copy_list_error
    - struct quota_mailbox*::module_ctx::super::create_box
    - mailbox_set_critical
    - mailbox_is_autocreated
    - settings_get
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int quota_create_box(struct mailbox *box, const struct mailbox_update
      *update,\n\t\t bool directory)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:157,1
    - Dst: quota_transaction_begin
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:162,1
    - Dst: quota_test_alloc
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:165,1
    - Dst: quota_set_storage_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:167,1
    - Dst: quota_transaction_rollback
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:170,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:172,1
    - Dst: struct quota_mailbox*::module_ctx::super::get_status
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 182
    functionName: quota_get_status
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - QUOTA_CONTEXT_REQUIRE
    - quota_transaction_rollback
    - struct quota_mailbox*::module_ctx::super::get_status
    - quota_transaction_begin
    - quota_test_alloc
    - quota_set_storage_error
    linkageType: ''
    returnType: int
    signature: "int quota_get_status(struct mailbox *box, enum mailbox_status_items
      items,\n\t\t struct mailbox_status *status_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:189,1
    - Dst: struct quota_mailbox*::module_ctx::super::transaction_begin
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:193,1
    - Dst: quota_transaction_begin
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:194,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 199
    functionName: quota_mailbox_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - quota_transaction_begin
    - QUOTA_CONTEXT_REQUIRE
    - MODULE_CONTEXT_SET
    - struct quota_mailbox*::module_ctx::super::transaction_begin
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nquota_mailbox_transaction_begin(struct
      mailbox *box,\n\t\t\t\tenum mailbox_transaction_flags flags,\n\t\t\t\tconst
      char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:205,1
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:208,1
    - Dst: struct quota_mailbox*::module_ctx::super::transaction_commit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:210,1
    - Dst: quota_transaction_rollback
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:211,1
    - Dst: quota_transaction_commit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 217
    functionName: quota_mailbox_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - QUOTA_CONTEXT_REQUIRE
    - quota_transaction_rollback
    - struct quota_mailbox*::module_ctx::super::transaction_commit
    - quota_transaction_commit
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int quota_mailbox_transaction_commit(struct mailbox_transaction_context
      *ctx,\n\t\t\t\t struct mail_transaction_commit_changes *changes_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:222,1
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:223,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:225,1
    - Dst: struct quota_mailbox*::module_ctx::super::transaction_rollback
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:227,1
    - Dst: quota_transaction_rollback
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 229
    functionName: quota_mailbox_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - QUOTA_CONTEXT_REQUIRE
    - i_assert
    - quota_transaction_rollback
    - struct quota_mailbox*::module_ctx::super::transaction_rollback
    linkageType: ''
    returnType: void
    signature: void quota_mailbox_transaction_rollback(struct mailbox_transaction_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:233,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:241,1
    - Dst: MODULE_CONTEXT_SET_SELF
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 247
    functionName: quota_mail_allocated
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET_SELF
    - p_new
    - QUOTA_CONTEXT
    linkageType: ''
    returnType: void
    signature: void quota_mail_allocated(struct mail *_mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:252,1
    - Dst: quota_try_alloc
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:259,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:266,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:273,1
    - Dst: quota_set_storage_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 281
    functionName: quota_check
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - quota_try_alloc
    - QUOTA_CONTEXT_REQUIRE
    - e_error
    - e_warning
    - quota_set_storage_error
    linkageType: ''
    returnType: int
    signature: int quota_check(struct mail_save_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:287,1
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:288,1
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:291,1
    - Dst: quota_transaction_set_limits
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:297,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:299,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:302,1
    - Dst: struct quota_mailbox*::module_ctx::super::copy
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:307,1
    - Dst: quota_check
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:315,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 316
    functionName: quota_copy
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - quota_check
    - quota_transaction_set_limits
    - struct quota_mailbox*::module_ctx::super::copy
    - QUOTA_CONTEXT_REQUIRE
    - mail_add_temp_wanted_fields
    - e_error
    - e_warning
    linkageType: ''
    returnType: int
    signature: int quota_copy(struct mail_save_context *ctx, struct mail *mail)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:322,1
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:323,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:327,1
    - Dst: quota_get_mail_size
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:344,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:347,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:351,1
    - Dst: quota_test_alloc
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:363,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:371,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:379,1
    - Dst: quota_set_storage_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:384,1
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:390,1
    - Dst: quota_transaction_set_limits
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:395,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:397,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:400,1
    - Dst: struct quota_mailbox*::module_ctx::super::save_begin
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:404,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 318
    functionDepth: 2
    functionLinenumber: 318
    functionLinenumberEnd: 405
    functionName: quota_save_begin
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - quota_transaction_set_limits
    - QUOTA_CONTEXT_REQUIRE
    - quota_get_mail_size
    - mail_add_temp_wanted_fields
    - e_error
    - i_stream_get_size
    - e_warning
    - quota_test_alloc
    - struct quota_mailbox*::module_ctx::super::save_begin
    - quota_set_storage_error
    linkageType: ''
    returnType: int
    signature: int quota_save_begin(struct mail_save_context *ctx, struct istream
      *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:409,1
    - Dst: struct quota_mailbox*::module_ctx::super::save_finish
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:411,1
    - Dst: quota_check
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 415
    functionName: quota_save_finish
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - QUOTA_CONTEXT_REQUIRE
    - quota_check
    - struct quota_mailbox*::module_ctx::super::save_finish
    linkageType: ''
    returnType: int
    signature: int quota_save_finish(struct mail_save_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:419,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:420,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:421,1
    - Dst: mail_free
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:425,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - qbox
    argTypes:
    - struct quota_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 429
    functionName: quota_mailbox_sync_cleanup
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - mail_free
    - array_is_created
    - array_clear
    - mailbox_transaction_commit
    linkageType: ''
    returnType: void
    signature: void quota_mailbox_sync_cleanup(struct quota_mailbox *qbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quota_mailbox_sync_cleanup
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:433,1
    - Dst: quota_transaction_commit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - qbox
    argTypes:
    - struct quota_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 431
    functionDepth: 2
    functionLinenumber: 431
    functionLinenumberEnd: 437
    functionName: quota_mailbox_sync_commit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - quota_transaction_commit
    - quota_mailbox_sync_cleanup
    linkageType: ''
    returnType: void
    signature: void quota_mailbox_sync_commit(struct quota_mailbox *qbox)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:442,1
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:443,1
    - Dst: QUOTA_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:444,1
    - Dst: struct quota_mailbox*::module_ctx::super::sync_notify
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:451,1
    - Dst: quota_mailbox_sync_cleanup
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:458,1
    - Dst: quota_transaction_begin
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:464,1
    - Dst: quota_free_bytes
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:472,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:480,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:481,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:484,1
    - Dst: array_idx
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:502,1
    - Dst: quota_free_bytes
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:503,1
    - Dst: index_mailbox_vsize_hdr_expunge
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:508,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:521,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:524,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:527,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:530,1
    - Dst: quota_free_bytes
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:531,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:534,1
    - Dst: quota_free_bytes
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:535,1
    - Dst: index_mailbox_vsize_hdr_expunge
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:537,1
    - Dst: quota_recalculate
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:540,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 65
    argCount: 3
    argNames:
    - box
    - uid
    - sync_type
    argTypes:
    - struct mailbox*
    - uint32_t
    - enum mailbox_sync_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 543
    functionName: quota_mailbox_sync_notify
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - QUOTA_USER_CONTEXT_REQUIRE
    - mail_get_virtual_size
    - mail_alloc
    - mailbox_transaction_begin
    - array_idx
    - quota_recalculate
    - QUOTA_CONTEXT_REQUIRE
    - array_get
    - mail_set_uid
    - array_is_empty
    - quota_free_bytes
    - struct quota_mailbox*::module_ctx::super::sync_notify
    - quota_mailbox_sync_cleanup
    - index_mailbox_vsize_hdr_expunge
    - quota_transaction_begin
    - array_is_created
    - mail_get_physical_size
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: "void quota_mailbox_sync_notify(struct mailbox *box, uint32_t uid,\n\t\t\t\t
      \     enum mailbox_sync_type sync_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:548,1
    - Dst: struct quota_mailbox*::module_ctx::super::sync_deinit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:551,1
    - Dst: quota_mailbox_sync_commit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - status_r
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 545
    functionDepth: 3
    functionLinenumber: 545
    functionLinenumberEnd: 557
    functionName: quota_mailbox_sync_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - QUOTA_CONTEXT_REQUIRE
    - quota_mailbox_sync_commit
    - struct quota_mailbox*::module_ctx::super::sync_deinit
    linkageType: ''
    returnType: int
    signature: "int quota_mailbox_sync_deinit(struct mailbox_sync_context *ctx,\n\t\t\t\t
      \    struct mailbox_sync_status *status_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:564,1
    - Dst: backend::v::flush
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:567,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - quota
    argTypes:
    - struct quota*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 569
    functionName: quota_roots_flush
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - array_get
    - backend::v::flush
    linkageType: ''
    returnType: void
    signature: void quota_roots_flush(struct quota *quota)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:573,1
    - Dst: QUOTA_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:574,1
    - Dst: quota_mailbox_sync_commit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:578,1
    - Dst: quota_roots_flush
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:585,1
    - Dst: struct quota_mailbox*::module_ctx::super::close
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 571
    functionDepth: 3
    functionLinenumber: 571
    functionLinenumberEnd: 588
    functionName: quota_mailbox_close
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - QUOTA_USER_CONTEXT_REQUIRE
    - quota_roots_flush
    - QUOTA_CONTEXT_REQUIRE
    - struct quota_mailbox*::module_ctx::super::close
    - quota_mailbox_sync_commit
    linkageType: ''
    returnType: void
    signature: void quota_mailbox_close(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:592,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:594,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:595,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:596,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:598,1
    - Dst: struct quota_mailbox*::module_ctx::super::free
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:601,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 602
    functionName: quota_mailbox_free
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - struct quota_mailbox*::module_ctx::super::free
    - QUOTA_CONTEXT_REQUIRE
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void quota_mailbox_free(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:609,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:615,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 632
    functionName: quota_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    - QUOTA_LIST_CONTEXT
    linkageType: ''
    returnType: void
    signature: void quota_mailbox_allocated(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:636,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:638,1
    - Dst: quota_remove_user_namespace
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:639,1
    - Dst: struct quota_mailbox_list*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 641
    functionName: quota_mailbox_list_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - struct quota_mailbox_list*::module_ctx::super::deinit
    - i_assert
    - QUOTA_LIST_CONTEXT
    - quota_remove_user_namespace
    linkageType: ''
    returnType: void
    signature: void quota_mailbox_list_deinit(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 648
    functionName: quota_get_mail_user_quota
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 1
    functionsReached:
    - QUOTA_USER_CONTEXT
    linkageType: ''
    returnType: struct quota
    signature: struct quota *quota_get_mail_user_quota(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:652,1
    - Dst: quota_deinit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:654,1
    - Dst: struct quota_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 656
    functionName: quota_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - QUOTA_USER_CONTEXT_REQUIRE
    - quota_deinit
    - struct quota_user*::module_ctx::super::deinit
    linkageType: ''
    returnType: void
    signature: void quota_user_deinit(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 662
    functionName: quota_user_mail_max_size
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - QUOTA_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t quota_user_mail_max_size(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quota_init
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:671,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:672,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:676,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 684
    functionName: quota_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - quota_init
    - p_new
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void quota_mail_user_created(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:690,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - quota
    - root_name
    argTypes:
    - struct quota*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 695
    functionName: quota_has_global_private_root
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool quota_has_global_private_root(struct quota *quota, const char
      *root_name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:707,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:714,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:716,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:722,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:726,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:728,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:732,1
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:736,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:737,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:738,1
    - Dst: quota_has_global_private_root
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:744,1
    - Dst: quota_add_user_namespace
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:745,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:747,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 748
    functionName: quota_mailbox_list_created
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - i_assert
    - p_new
    - array_foreach_elem
    - quota_has_global_private_root
    - quota_add_user_namespace
    - settings_free
    - e_error
    - quota_get_mail_user_quota
    - settings_get
    - array_is_created
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: void
    signature: void quota_mailbox_list_created(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:754,1
    - Dst: quota_over_status_check_startup
      Src: /src/dovecot/src/plugins/quota/quota-storage.c:758,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - namespaces
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 750
    functionDepth: 2
    functionLinenumber: 750
    functionLinenumberEnd: 759
    functionName: quota_mail_namespaces_created
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-storage.c
    functionUses: 0
    functionsReached:
    - quota_over_status_check_startup
    - quota_get_mail_user_quota
    linkageType: ''
    returnType: void
    signature: void quota_mail_namespaces_created(struct mail_namespace *namespaces)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/quota/quota.c:65,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 71
    functionName: quota_backend_find
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void quota_backend_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota.c:75,1
    - Dst: quota_backend_find
      Src: /src/dovecot/src/plugins/quota/quota.c:75,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/quota/quota.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct quota_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: quota_backend_register
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - quota_backend_find
    - i_assert
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void quota_backend_register(const struct quota_backend *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota.c:81,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/plugins/quota/quota.c:83,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:84,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/quota/quota.c:85,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/quota/quota.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct quota_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: quota_backend_unregister
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_delete
    - i_unreached
    - array_count
    - array_idx_elem
    linkageType: ''
    returnType: void
    signature: void quota_backend_unregister(const struct quota_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/quota/quota.c:98,1
    - Dst: array_append
      Src: /src/dovecot/src/plugins/quota/quota.c:99,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/quota/quota.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 101
    functionName: quota_backends_register
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - N_ELEMENTS
    - array_append
    linkageType: ''
    returnType: void
    signature: void quota_backends_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/quota/quota.c:105,1
    - Dst: quota_backend_unregister
      Src: /src/dovecot/src/plugins/quota/quota.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota.c:109,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota.c:109,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/quota/quota.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 112
    functionName: quota_backends_unregister
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - quota_backend_unregister
    - array_count
    - i_assert
    - array_free
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void quota_backends_unregister(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/quota/quota.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - res
    - qt
    argTypes:
    - enum quota_alloc_result
    - struct quota_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 134
    functionName: quota_alloc_result_errstr
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: "char *quota_alloc_result_errstr(enum quota_alloc_result res,\n\t\tstruct
      quota_transaction_context *qt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:140,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:141,1
    - Dst: struct quota_root*::backend::v::deinit
      Src: /src/dovecot/src/plugins/quota/quota.c:142,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 144
    functionName: quota_root_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - struct quota_root*::backend::v::deinit
    - event_unref
    - settings_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void quota_root_deinit(struct quota_root *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/quota/quota.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - root
    - set_event
    - set_r
    - error_r
    argTypes:
    - struct quota_root*
    - struct event*
    - struct quota_root_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: quota_root_settings_get
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - settings_get_filter
    linkageType: ''
    returnType: int
    signature: "int quota_root_settings_get(struct quota_root *root, struct event
      *set_event,\n\t\t\tconst struct quota_root_settings **set_r,\n\t\t\tconst char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/quota/quota.c:163,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/quota/quota.c:165,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/quota/quota.c:166,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:170,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:173,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: quota_root_has_under_warnings
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    - settings_free
    - e_error
    - settings_get_filter
    - array_is_created
    linkageType: ''
    returnType: int
    signature: int quota_root_has_under_warnings(struct quota_root *root)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/quota/quota.c:189,1
    - Dst: quota_root_find
      Src: /src/dovecot/src/plugins/quota/quota.c:196,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:198,1
    - Dst: struct quota_root_settings*::backend::v::alloc
      Src: /src/dovecot/src/plugins/quota/quota.c:203,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/quota/quota.c:204,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/quota/quota.c:207,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/quota/quota.c:208,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:209,1
    - Dst: array_create
      Src: /src/dovecot/src/plugins/quota/quota.c:211,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:215,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/quota/quota.c:216,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/quota/quota.c:217,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:218,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/quota/quota.c:219,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/quota/quota.c:220,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/plugins/quota/quota.c:221,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/plugins/quota/quota.c:223,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/quota/quota.c:226,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/quota/quota.c:227,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/quota/quota.c:228,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:231,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:234,1
    - Dst: struct quota_root*::backend::v::init
      Src: /src/dovecot/src/plugins/quota/quota.c:240,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:241,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:244,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:245,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:246,1
    - Dst: quota_root_deinit
      Src: /src/dovecot/src/plugins/quota/quota.c:252,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/quota/quota.c:261,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 5
    argNames:
    - quota
    - set_event
    - root_name
    - root_r
    - error_r
    argTypes:
    - struct quota*
    - struct event*
    - char*
    - struct quota_root**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 264
    functionName: quota_root_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - event_unref
    - p_array_init
    - t_strdup_printf
    - pool_unref
    - event_set_append_log_prefix
    - event_add_str
    - event_create
    - struct quota_root_settings*::backend::v::alloc
    - quota_root_find
    - quota_root_deinit
    - pool_alloconly_create
    - array_push_back
    - settings_event_add_filter_name
    - settings_free
    - struct quota_root*::backend::v::init
    - settings_event_add_list_filter_name
    - settings_get_filter
    - event_drop_parent_log_prefixes
    - array_create
    linkageType: ''
    returnType: int
    signature: "int quota_root_init(struct quota *quota, struct event *set_event,
      const char *root_name,\n\t\tstruct quota_root **root_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota/quota.c:276,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota.c:280,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/quota/quota.c:281,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/quota/quota.c:282,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/quota/quota.c:287,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/quota/quota.c:288,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/quota/quota.c:290,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/quota/quota.c:291,1
    - Dst: quota_root_init
      Src: /src/dovecot/src/plugins/quota/quota.c:292,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:295,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:297,1
    - Dst: quota_deinit
      Src: /src/dovecot/src/plugins/quota/quota.c:298,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/quota/quota.c:302,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - user
    - quota_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct quota**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 266
    functionDepth: 4
    functionLinenumber: 266
    functionLinenumberEnd: 307
    functionName: quota_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - quota_root_init
    - event_create
    - quota_deinit
    - array_foreach_elem
    - array_push_back
    - event_set_append_log_prefix
    - t_strdup_printf
    - settings_free
    - i_new
    - array_is_created
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int quota_init(struct mail_user *user, struct quota **quota_r,\n\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:315,1
    - Dst: quota_root_deinit
      Src: /src/dovecot/src/plugins/quota/quota.c:317,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/quota/quota.c:322,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/quota/quota.c:323,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:324,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:325,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _quota
    argTypes:
    - struct quota**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 327
    functionName: quota_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 2
    functionsReached:
    - event_unref
    - array_get
    - settings_free
    - quota_root_deinit
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void quota_deinit(struct quota **_quota)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: quota_root_settings_get
      Src: /src/dovecot/src/plugins/quota/quota.c:336,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:383,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 6
    argNames:
    - root
    - set_event
    - bytes_limit_r
    - count_limit_r
    - ignored_r
    - error_r
    argTypes:
    - struct quota_root*
    - struct event*
    - uint64_t*
    - uint64_t*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 385
    functionName: quota_root_get_rule_limits
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - settings_free
    - quota_root_settings_get
    linkageType: ''
    returnType: int
    signature: "int quota_root_get_rule_limits(struct quota_root *root, struct event
      *set_event,\n\t\t\t   uint64_t *bytes_limit_r, uint64_t *count_limit_r,\n\t\t\t
      \  bool *ignored_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/plugins/quota/quota.c:394,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:398,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:405,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:406,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/plugins/quota/quota.c:410,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:412,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/quota/quota.c:427,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - root
    - ns
    argTypes:
    - struct quota_root*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 432
    functionName: quota_is_duplicate_namespace
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_delete
    - array_get
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: bool
    signature: bool quota_is_duplicate_namespace(struct quota_root *root, struct mail_namespace
      *ns)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: quota_root_init
      Src: /src/dovecot/src/plugins/quota/quota.c:440,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:445,1
    - Dst: quota_is_duplicate_namespace
      Src: /src/dovecot/src/plugins/quota/quota.c:450,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/quota/quota.c:453,1
    - Dst: struct quota_root*::backend::v::namespace_added
      Src: /src/dovecot/src/plugins/quota/quota.c:456,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - quota
    - root_name
    - ns
    argTypes:
    - struct quota*
    - char*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 434
    functionDepth: 4
    functionLinenumber: 434
    functionLinenumberEnd: 457
    functionName: quota_add_user_namespace
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - quota_root_init
    - quota_is_duplicate_namespace
    - array_push_back
    - e_error
    - struct quota_root*::backend::v::namespace_added
    linkageType: ''
    returnType: void
    signature: "void quota_add_user_namespace(struct quota *quota, const char *root_name,\n\t\t\t
      \     struct mail_namespace *ns)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota.c:466,1
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota.c:467,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/quota/quota.c:473,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/plugins/quota/quota.c:474,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/quota/quota.c:475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 459
    functionDepth: 2
    functionLinenumber: 459
    functionLinenumberEnd: 477
    functionName: quota_remove_user_namespace
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - quota_get_mail_user_quota
    - array_delete
    - array_lsearch_ptr_idx
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void quota_remove_user_namespace(struct mail_namespace *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota.c:484,1
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota.c:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 487
    functionName: quota_root_iter_init_user
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - quota_get_mail_user_quota
    - i_new
    linkageType: ''
    returnType: struct quota_root_iter
    signature: 'struct quota_root_iter *

      quota_root_iter_init_user(struct mail_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: quota_root_iter_init_user
      Src: /src/dovecot/src/plugins/quota/quota.c:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 500
    functionName: quota_root_iter_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - quota_root_iter_init_user
    linkageType: ''
    returnType: struct quota_root_iter
    signature: 'struct quota_root_iter *

      quota_root_iter_init(struct mailbox *box)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr
      Src: /src/dovecot/src/plugins/quota/quota.c:505,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota.c:514,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota.c:516,1
    - Dst: struct quota_root*::backend::v::match_box
      Src: /src/dovecot/src/plugins/quota/quota.c:521,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - root
    - box
    argTypes:
    - struct quota_root*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 522
    functionName: quota_root_is_visible
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - array_count
    - i_assert
    - array_lsearch_ptr
    - struct quota_root*::backend::v::match_box
    linkageType: ''
    returnType: bool
    signature: bool quota_root_is_visible(struct quota_root *root, struct mailbox
      *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:532,1
    - Dst: quota_root_is_visible
      Src: /src/dovecot/src/plugins/quota/quota.c:538,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct quota_root_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 524
    functionDepth: 2
    functionLinenumber: 524
    functionLinenumberEnd: 547
    functionName: quota_root_iter_next
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - array_get
    - quota_root_is_visible
    linkageType: ''
    returnType: struct quota_root
    signature: struct quota_root *quota_root_iter_next(struct quota_root_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct quota_root_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 555
    functionName: quota_root_iter_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void quota_root_iter_deinit(struct quota_root_iter **_iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:563,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - quota
    - name
    argTypes:
    - struct quota*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 569
    functionName: quota_root_find
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_get
    linkageType: ''
    returnType: struct quota_root
    signature: 'struct quota_root *

      quota_root_find(struct quota *quota, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota.c:575,1
    - Dst: quota_root_find
      Src: /src/dovecot/src/plugins/quota/quota.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - user
    - name
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 571
    functionDepth: 2
    functionLinenumber: 571
    functionLinenumberEnd: 579
    functionName: quota_root_lookup
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - quota_get_mail_user_quota
    - quota_root_find
    linkageType: ''
    returnType: struct quota_root
    signature: struct quota_root *quota_root_lookup(struct mail_user *user, const
      char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 581
    functionDepth: 0
    functionLinenumber: 581
    functionLinenumberEnd: 584
    functionName: quota_root_get_name
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *quota_root_get_name(struct quota_root *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: quota_over_status_check_root
      Src: /src/dovecot/src/plugins/quota/quota.c:589,1
    - Dst: backend::v::get_resources
      Src: /src/dovecot/src/plugins/quota/quota.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 592
    functionName: quota_root_get_resources
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - quota_over_status_check_root
    - backend::v::get_resources
    linkageType: ''
    returnType: char
    signature: char *const *quota_root_get_resources(struct quota_root *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 597
    functionName: quota_root_is_hidden
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool quota_root_is_hidden(struct quota_root *root)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:612,1
    - Dst: struct quota_root*::backend::v::get_resource
      Src: /src/dovecot/src/plugins/quota/quota.c:619,1
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/quota/quota.c:621,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/quota/quota.c:624,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:626,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/quota/quota.c:633,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/plugins/quota/quota.c:637,1
    - Dst: quota_root_get_rule_limits
      Src: /src/dovecot/src/plugins/quota/quota.c:641,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:646,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota.c:648,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 6
    argNames:
    - root
    - box
    - name
    - value_r
    - limit_r
    - error_r
    argTypes:
    - struct quota_root*
    - struct mailbox*
    - char*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 599
    functionDepth: 2
    functionLinenumber: 599
    functionLinenumberEnd: 658
    functionName: quota_get_resource
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_panic
    - t_strdup_printf
    - struct quota_root*::backend::v::get_resource
    - array_is_empty
    - array_idx_elem
    - mailbox_get_vname
    - quota_root_get_rule_limits
    linkageType: ''
    returnType: enum quota_get_result
    signature: "enum quota_get_result quota_get_resource(struct quota_root *root,
      struct mailbox *box,\n\t\t   const char *name, uint64_t *value_r, uint64_t *limit_r,\n\t\t
      \  const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota.c:666,1
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota.c:668,1
    - Dst: quota_get_mail_user_quota
      Src: /src/dovecot/src/plugins/quota/quota.c:669,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota.c:670,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:672,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota.c:674,1
    - Dst: quota_root_is_visible
      Src: /src/dovecot/src/plugins/quota/quota.c:689,1
    - Dst: quota_root_settings_get
      Src: /src/dovecot/src/plugins/quota/quota.c:694,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:696,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:702,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:705,1
    - Dst: quota_root_has_under_warnings
      Src: /src/dovecot/src/plugins/quota/quota.c:714,1
    - Dst: quota_get_unlimited_set
      Src: /src/dovecot/src/plugins/quota/quota.c:721,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 660
    functionDepth: 2
    functionLinenumber: 660
    functionLinenumberEnd: 724
    functionName: quota_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 3
    functionsReached:
    - quota_root_settings_get
    - array_get
    - settings_free
    - e_error
    - quota_get_mail_user_quota
    - quota_get_unlimited_set
    - i_new
    - quota_root_has_under_warnings
    - i_assert
    - quota_root_is_visible
    linkageType: ''
    returnType: struct quota_transaction_context
    signature: struct quota_transaction_context *quota_transaction_begin(struct mailbox
      *box)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota.c:744,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota/quota.c:745,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:753,1
    - Dst: quota_root_is_visible
      Src: /src/dovecot/src/plugins/quota/quota.c:757,1
    - Dst: quota_root_get_rule_limits
      Src: /src/dovecot/src/plugins/quota/quota.c:761,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/quota/quota.c:772,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:800,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/quota/quota.c:803,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/quota/quota.c:809,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:830,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/quota/quota.c:833,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/plugins/quota/quota.c:841,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 96
    argCount: 3
    argNames:
    - ctx
    - error_result_r
    - error_r
    argTypes:
    - struct quota_transaction_context*
    - enum quota_get_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 726
    functionDepth: 3
    functionLinenumber: 726
    functionLinenumberEnd: 855
    functionName: quota_transaction_set_limits
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 2
    functionsReached:
    - i_assert
    - array_get
    - t_strdup_printf
    - quota_get_resource
    - mailbox_get_open_status
    - mailbox_get_vname
    - quota_root_get_rule_limits
    - settings_get
    - quota_root_is_visible
    linkageType: ''
    returnType: int
    signature: "int quota_transaction_set_limits(struct quota_transaction_context
      *ctx,\n\t\t\t\t enum quota_get_result *error_result_r,\n\t\t\t\t const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota.c:870,1
    - Dst: program_client_create_auto
      Src: /src/dovecot/src/plugins/quota/quota.c:872,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:873,1
    - Dst: program_client_run
      Src: /src/dovecot/src/plugins/quota/quota.c:876,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/plugins/quota/quota.c:877,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - event
    - last_arg
    - reason
    argTypes:
    - struct event*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 878
    functionName: quota_warning_execute
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - e_debug
    - program_client_run
    - e_error
    - program_client_create_auto
    - program_client_destroy
    linkageType: ''
    returnType: void
    signature: "void quota_warning_execute(struct event *event, const char *last_arg,\n\t\t
      \     const char *reason)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/quota/quota.c:888,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/quota/quota.c:891,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:893,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/quota/quota.c:898,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:900,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/quota/quota.c:916,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/quota/quota.c:917,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:921,1
    - Dst: quota_warning_match
      Src: /src/dovecot/src/plugins/quota/quota.c:924,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/quota/quota.c:927,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/plugins/quota/quota.c:928,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:929,1
    - Dst: event_get_pool
      Src: /src/dovecot/src/plugins/quota/quota.c:929,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/quota/quota.c:932,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:932,1
    - Dst: quota_warning_execute
      Src: /src/dovecot/src/plugins/quota/quota.c:934,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:935,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:936,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:939,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - root
    argTypes:
    - struct quota_transaction_context*
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 880
    functionDepth: 3
    functionLinenumber: 880
    functionLinenumberEnd: 941
    functionName: quota_warnings_execute
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - array_foreach_elem
    - event_set_append_log_prefix
    - quota_warning_execute
    - t_strdup_printf
    - settings_free
    - event_get_pool
    - array_is_empty
    - e_error
    - quota_get_resource
    - event_set_ptr
    - settings_get_filter
    - quota_warning_match
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void quota_warnings_execute(struct quota_transaction_context *ctx,\n\t\t\t\t
      \  struct quota_root *root)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY
      Src: /src/dovecot/src/plugins/quota/quota.c:956,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:958,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/quota/quota.c:959,1
    - Dst: if
      Src: /src/dovecot/src/plugins/quota/quota.c:961,1
    - Dst: quota_root_is_visible
      Src: /src/dovecot/src/plugins/quota/quota.c:961,1
    - Dst: quota_root_settings_get
      Src: /src/dovecot/src/plugins/quota/quota.c:966,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:968,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:972,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:975,1
    - Dst: backend::v::update
      Src: /src/dovecot/src/plugins/quota/quota.c:977,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:978,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/quota/quota.c:983,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct quota_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 943
    functionDepth: 2
    functionLinenumber: 943
    functionLinenumberEnd: 993
    functionName: quota_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 2
    functionsReached:
    - quota_root_settings_get
    - backend::v::update
    - array_push_back
    - ARRAY
    - array_get
    - settings_free
    - if
    - e_error
    - t_array_init
    - quota_root_is_visible
    linkageType: ''
    returnType: int
    signature: int quota_transaction_commit(struct quota_transaction_context **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota.c:1008,1
    - Dst: wildcard_match_icase
      Src: /src/dovecot/src/plugins/quota/quota.c:1016,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - root
    - status_r
    argTypes:
    - struct quota_root*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1001
    functionDepth: 1
    functionLinenumber: 1001
    functionLinenumberEnd: 1019
    functionName: quota_over_status_init_root
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - e_debug
    - wildcard_match_icase
    linkageType: ''
    returnType: bool
    signature: bool quota_over_status_init_root(struct quota_root *root, bool *status_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota.c:1035,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota.c:1043,1
    - Dst: quota_over_status_init_root
      Src: /src/dovecot/src/plugins/quota/quota.c:1048,1
    - Dst: quota_root_get_resources
      Src: /src/dovecot/src/plugins/quota/quota.c:1051,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/quota/quota.c:1053,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota.c:1057,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota.c:1062,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota.c:1068,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/quota/quota.c:1073,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/quota/quota.c:1074,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/quota/quota.c:1075,1
    - Dst: quota_warning_execute
      Src: /src/dovecot/src/plugins/quota/quota.c:1076,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota.c:1079,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1021
    functionDepth: 3
    functionLinenumber: 1021
    functionLinenumberEnd: 1081
    functionName: quota_over_status_check_root
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - event_create
    - event_unref
    - e_debug
    - event_set_append_log_prefix
    - quota_warning_execute
    - settings_event_add_filter_name
    - e_error
    - quota_get_resource
    - quota_over_status_init_root
    - quota_root_get_resources
    linkageType: ''
    returnType: void
    signature: void quota_over_status_check_root(struct quota_root *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:1088,1
    - Dst: quota_over_status_check_root
      Src: /src/dovecot/src/plugins/quota/quota.c:1091,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - quota
    argTypes:
    - struct quota*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1083
    functionDepth: 4
    functionLinenumber: 1083
    functionLinenumberEnd: 1093
    functionName: quota_over_status_check_startup
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - quota_over_status_check_root
    - array_get
    linkageType: ''
    returnType: void
    signature: void quota_over_status_check_startup(struct quota *quota)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota.c:1100,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota.c:1101,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota.c:1102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct quota_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1103
    functionName: quota_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 3
    functionsReached:
    - i_free
    - settings_free
    linkageType: ''
    returnType: void
    signature: void quota_transaction_rollback(struct quota_transaction_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota.c:1112,1
    - Dst: quota_used_apply_expunged
      Src: /src/dovecot/src/plugins/quota/quota.c:1116,1
    - Dst: quota_used_apply_expunged
      Src: /src/dovecot/src/plugins/quota/quota.c:1117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - size
    - expunged_size
    argTypes:
    - struct quota_transaction_context*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1119
    functionName: quota_alloc_with_size
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - quota_used_apply_expunged
    - array_count
    linkageType: ''
    returnType: void
    signature: "void quota_alloc_with_size(struct quota_transaction_context *ctx,\n\t\t\t\t
      \ uoff_t size, uoff_t expunged_size)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: quota_transaction_set_limits
      Src: /src/dovecot/src/plugins/quota/quota.c:1135,1
    - Dst: quota_get_mail_size
      Src: /src/dovecot/src/plugins/quota/quota.c:1144,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota.c:1146,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:1153,1
    - Dst: quota_get_mail_size
      Src: /src/dovecot/src/plugins/quota/quota.c:1159,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota.c:1161,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:1165,1
    - Dst: quota_test_alloc
      Src: /src/dovecot/src/plugins/quota/quota.c:1174,1
    - Dst: quota_alloc_with_size
      Src: /src/dovecot/src/plugins/quota/quota.c:1184,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 5
    argNames:
    - ctx
    - mail
    - expunged_mail
    - overruns_r
    - error_r
    argTypes:
    - struct quota_transaction_context*
    - struct mail*
    - struct mail*
    - struct quota_overrun**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1121
    functionDepth: 4
    functionLinenumber: 1121
    functionLinenumberEnd: 1186
    functionName: quota_try_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - quota_alloc_with_size
    - mailbox_get_last_internal_error
    - quota_transaction_set_limits
    - quota_get_mail_size
    - t_strdup_printf
    - mail_get_last_internal_error
    - quota_test_alloc
    linkageType: ''
    returnType: enum quota_alloc_result
    signature: "enum quota_alloc_result quota_try_alloc(struct quota_transaction_context
      *ctx,\n\t\tstruct mail *mail, struct mail *expunged_mail,\n\t\tconst struct
      quota_overrun **overruns_r, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: quota_transaction_set_limits
      Src: /src/dovecot/src/plugins/quota/quota.c:1202,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:1210,1
    - Dst: struct quota_transaction_context*::quota::test_alloc
      Src: /src/dovecot/src/plugins/quota/quota.c:1220,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 6
    argNames:
    - ctx
    - size
    - expunged_box
    - expunged_size
    - overruns_r
    - error_r
    argTypes:
    - struct quota_transaction_context*
    - uoff_t
    - struct mailbox*
    - uoff_t
    - struct quota_overrun**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1188
    functionDepth: 4
    functionLinenumber: 1188
    functionLinenumberEnd: 1222
    functionName: quota_test_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 3
    functionsReached:
    - struct quota_transaction_context*::quota::test_alloc
    - t_strdup_printf
    - quota_transaction_set_limits
    linkageType: ''
    returnType: enum quota_alloc_result
    signature: "enum quota_alloc_result quota_test_alloc(struct quota_transaction_context
      *ctx, uoff_t size,\n\t\t struct mailbox *expunged_box, uoff_t expunged_size,\n\t\t
      const struct quota_overrun **overruns_r, const char **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: quota_transaction_is_over
      Src: /src/dovecot/src/plugins/quota/quota.c:1238,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/plugins/quota/quota.c:1246,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/quota/quota.c:1255,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota.c:1257,1
    - Dst: quota_root_is_visible
      Src: /src/dovecot/src/plugins/quota/quota.c:1263,1
    - Dst: quota_root_is_visible
      Src: /src/dovecot/src/plugins/quota/quota.c:1267,1
    - Dst: quota_root_get_rule_limits
      Src: /src/dovecot/src/plugins/quota/quota.c:1270,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:1279,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/quota/quota.c:1285,1
    - Dst: quota_root_is_over
      Src: /src/dovecot/src/plugins/quota/quota.c:1286,1
    - Dst: array_append
      Src: /src/dovecot/src/plugins/quota/quota.c:1292,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota.c:1296,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/quota/quota.c:1300,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/quota/quota.c:1301,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota.c:1304,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 6
    argNames:
    - ctx
    - size
    - expunged_box
    - expunged_size
    - overruns_r
    - error_r
    argTypes:
    - struct quota_transaction_context*
    - uoff_t
    - struct mailbox*
    - uoff_t
    - struct quota_overrun**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1224
    functionDepth: 2
    functionLinenumber: 1224
    functionLinenumberEnd: 1307
    functionName: quota_default_test_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - i_zero
    - quota_root_is_over
    - quota_transaction_is_over
    - array_get
    - t_strdup_printf
    - array_append
    - array_count
    - t_array_init
    - mailbox_get_open_status
    - array_front
    - array_append_zero
    - quota_root_get_rule_limits
    - quota_root_is_visible
    linkageType: ''
    returnType: enum quota_alloc_result
    signature: "enum quota_alloc_result quota_default_test_alloc(struct quota_transaction_context
      *ctx, uoff_t size,\n\t\t\t struct mailbox *expunged_box, uoff_t expunged_size,\n\t\t\t
      const struct quota_overrun **overruns_r,\n\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quota_get_mail_size
      Src: /src/dovecot/src/plugins/quota/quota.c:1314,1
    - Dst: quota_alloc_with_size
      Src: /src/dovecot/src/plugins/quota/quota.c:1317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct quota_transaction_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1309
    functionDepth: 2
    functionLinenumber: 1309
    functionLinenumberEnd: 1318
    functionName: quota_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 0
    functionsReached:
    - quota_alloc_with_size
    - quota_get_mail_size
    linkageType: ''
    returnType: void
    signature: void quota_alloc(struct quota_transaction_context *ctx, struct mail
      *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota.c:1323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - physical_size
    argTypes:
    - struct quota_transaction_context*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1320
    functionDepth: 1
    functionLinenumber: 1320
    functionLinenumberEnd: 1326
    functionName: quota_free_bytes
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void quota_free_bytes(struct quota_transaction_context *ctx,\n\t\t
      \     uoff_t physical_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - recalculate
    argTypes:
    - struct quota_transaction_context*
    - enum quota_recalculate
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1328
    functionDepth: 0
    functionLinenumber: 1328
    functionLinenumberEnd: 1332
    functionName: quota_recalculate
    functionSourceFile: /src/dovecot/src/plugins/quota/quota.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void quota_recalculate(struct quota_transaction_context *ctx,\n\t\t
      \      enum quota_recalculate recalculate)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-util.c:17,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-util.c:19,1
    - Dst: QUOTA_EXCEEDED
      Src: /src/dovecot/src/plugins/quota/quota-util.c:20,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-util.c:21,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-util.c:25,1
    - Dst: QUOTA_EXCEEDED
      Src: /src/dovecot/src/plugins/quota/quota-util.c:26,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-util.c:27,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-util.c:32,1
    - Dst: QUOTA_EXCEEDED
      Src: /src/dovecot/src/plugins/quota/quota-util.c:33,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-util.c:34,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-util.c:38,1
    - Dst: QUOTA_EXCEEDED
      Src: /src/dovecot/src/plugins/quota/quota-util.c:39,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-util.c:40,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 6
    argNames:
    - w
    - bytes_before
    - bytes_current
    - count_before
    - count_current
    - reason_r
    argTypes:
    - struct quota_root_settings*
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 46
    functionName: quota_warning_match
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 1
    functionsReached:
    - strcmp
    - t_strdup_printf
    - QUOTA_EXCEEDED
    linkageType: ''
    returnType: bool
    signature: "bool quota_warning_match(const struct quota_root_settings *w,\n\t\t\t
      uint64_t bytes_before, uint64_t bytes_current,\n\t\t\t uint64_t count_before,
      uint64_t count_current,\n\t\t\t const char **reason_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - before
    - ','
    - current
    - ','
    - limit
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: QUOTA_EXCEEDED
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_EXCEEDED(before, current, limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/plugins/quota/quota-util.c:52,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/plugins/quota/quota-util.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - mail
    - size_r
    argTypes:
    - struct quota_transaction_context*
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: quota_get_mail_size
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 3
    functionsReached:
    - mail_get_virtual_size
    - mail_get_physical_size
    linkageType: ''
    returnType: int
    signature: "int quota_get_mail_size(struct quota_transaction_context *ctx,\n\t\t\tstruct
      mail *mail, uoff_t *size_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-util.c:66,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 5
    argNames:
    - alloc
    - used
    - ceil
    - over
    - overrun_r
    argTypes:
    - uoff_t
    - int64_t
    - uint64_t
    - uint64_t
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 120
    functionName: quota_is_over
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool quota_is_over(uoff_t alloc, int64_t used, uint64_t ceil, uint64_t
      over,\n\t      uoff_t *overrun_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - used
    - expunged
    argTypes:
    - int64_t*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 143
    functionName: quota_used_apply_expunged
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void quota_used_apply_expunged(int64_t *used, uint64_t expunged)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: quota_used_apply_expunged
      Src: /src/dovecot/src/plugins/quota/quota-util.c:151,1
    - Dst: quota_used_apply_expunged
      Src: /src/dovecot/src/plugins/quota/quota-util.c:152,1
    - Dst: quota_is_over
      Src: /src/dovecot/src/plugins/quota/quota-util.c:154,1
    - Dst: quota_is_over
      Src: /src/dovecot/src/plugins/quota/quota-util.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - size
    argTypes:
    - struct quota_transaction_context*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 161
    functionName: quota_transaction_is_over
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 2
    functionsReached:
    - quota_used_apply_expunged
    - quota_is_over
    linkageType: ''
    returnType: bool
    signature: "bool quota_transaction_is_over(struct quota_transaction_context *ctx,\n\t\t\t
      \      uoff_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: quota_used_apply_expunged
      Src: /src/dovecot/src/plugins/quota/quota-util.c:175,1
    - Dst: quota_used_apply_expunged
      Src: /src/dovecot/src/plugins/quota/quota-util.c:176,1
    - Dst: quota_used_apply_expunged
      Src: /src/dovecot/src/plugins/quota/quota-util.c:177,1
    - Dst: quota_used_apply_expunged
      Src: /src/dovecot/src/plugins/quota/quota-util.c:178,1
    - Dst: quota_is_over
      Src: /src/dovecot/src/plugins/quota/quota-util.c:180,1
    - Dst: quota_is_over
      Src: /src/dovecot/src/plugins/quota/quota-util.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 8
    argNames:
    - ctx
    - root
    - count_alloc
    - bytes_alloc
    - count_expunged
    - bytes_expunged
    - count_overrun_r
    - bytes_overrun_r
    argTypes:
    - struct quota_transaction_context*
    - struct quota_transaction_root_context*
    - uoff_t
    - uoff_t
    - uoff_t
    - uoff_t
    - uoff_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 186
    functionName: quota_root_is_over
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 1
    functionsReached:
    - quota_used_apply_expunged
    - quota_is_over
    linkageType: ''
    returnType: bool
    signature: "bool quota_root_is_over(struct quota_transaction_context *ctx,\n\t\t\tstruct
      quota_transaction_root_context *root,\n\t\t\tuoff_t count_alloc, uoff_t bytes_alloc,\n\t\t\tuoff_t
      count_expunged, uoff_t bytes_expunged,\n\t\t\tuoff_t *count_overrun_r, uoff_t
      *bytes_overrun_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - rctx
    - count_expunged
    - bytes_expunged
    argTypes:
    - struct quota_transaction_root_context*
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 200
    functionName: quota_transaction_root_expunged
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void quota_transaction_root_expunged(\n\tstruct quota_transaction_root_context
      *rctx,\n\tuint64_t count_expunged, uint64_t bytes_expunged)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/plugins/quota/quota-util.c:210,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-util.c:241,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-util.c:243,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct quota_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 245
    functionName: quota_transaction_update_expunged
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-util.c
    functionUses: 0
    functionsReached:
    - array_count
    - i_assert
    linkageType: ''
    returnType: void
    signature: void quota_transaction_update_expunged(struct quota_transaction_context
      *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/quota/quota-count.c:41,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/quota/quota-count.c:42,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/plugins/quota/quota-count.c:52,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/plugins/quota/quota-count.c:54,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-count.c:55,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:57,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:64,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-count.c:78,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/quota/quota-count.c:79,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 7
    argNames:
    - root
    - ns
    - vname
    - bytes
    - count
    - error_result_r
    - error_r
    argTypes:
    - struct quota_root*
    - struct mail_namespace*
    - char*
    - uint64_t*
    - uint64_t*
    - enum quota_get_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 81
    functionName: quota_count_mailbox
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_get_last_internal_error
    - mailbox_get_status
    - t_strdup_printf
    - settings_free
    - mailbox_alloc
    - settings_get_filter
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int quota_count_mailbox(struct quota_root *root, struct mail_namespace
      *ns,\n\t\t    const char *vname, uint64_t *bytes, uint64_t *count,\n\t\t    enum
      quota_get_result *error_result_r,\n\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota-count.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: quota_mailbox_iter_begin
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct quota_mailbox_iter
    signature: 'struct quota_mailbox_iter *

      quota_mailbox_iter_begin(struct quota_root *root)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/quota/quota-count.c:105,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:106,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-count.c:109,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:116,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-count.c:119,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - _iter
    - error_r
    argTypes:
    - struct quota_mailbox_iter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 121
    functionName: quota_mailbox_iter_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_last_internal_error
    - t_strdup_printf
    - i_free
    - mailbox_list_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int quota_mailbox_iter_deinit(struct quota_mailbox_iter **_iter,\n\t\t\t
      \ const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota-count.c:131,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/quota/quota-count.c:136,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/quota/quota-count.c:141,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/quota/quota-count.c:146,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:147,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-count.c:149,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/plugins/quota/quota-count.c:153,1
    - Dst: t_strndup
      Src: /src/dovecot/src/plugins/quota/quota-count.c:156,1
    - Dst: quota_mailbox_iter_next
      Src: /src/dovecot/src/plugins/quota/quota-count.c:161,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct quota_mailbox_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 162
    functionName: quota_mailbox_iter_next
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 1
    functionsReached:
    - mailbox_list_get_last_internal_error
    - mailbox_list_iter_deinit
    - quota_mailbox_iter_next
    - array_get
    - mailbox_list_iter_next
    - t_strdup_printf
    - t_strndup
    - str_begins_icase_with
    - mailbox_list_iter_init
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      quota_mailbox_iter_next(struct quota_mailbox_iter *iter)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/quota/quota-count.c:177,1
    - Dst: quota_mailbox_iter_begin
      Src: /src/dovecot/src/plugins/quota/quota-count.c:179,1
    - Dst: quota_mailbox_iter_next
      Src: /src/dovecot/src/plugins/quota/quota-count.c:180,1
    - Dst: quota_count_mailbox
      Src: /src/dovecot/src/plugins/quota/quota-count.c:181,1
    - Dst: quota_mailbox_iter_deinit
      Src: /src/dovecot/src/plugins/quota/quota-count.c:188,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/quota/quota-count.c:195,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/quota/quota-count.c:197,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 5
    argNames:
    - root
    - bytes_r
    - count_r
    - error_result_r
    - error_r
    argTypes:
    - struct quota_root*
    - uint64_t*
    - uint64_t*
    - enum quota_get_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 200
    functionName: quota_count
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - quota_mailbox_iter_next
    - quota_count_mailbox
    - quota_mailbox_iter_begin
    - event_reason_begin
    - event_reason_end
    - t_strconcat
    - quota_mailbox_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int quota_count(struct quota_root *root, uint64_t *bytes_r, uint64_t
      *count_r,\n\t\tenum quota_get_result *error_result_r, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: quota_count
      Src: /src/dovecot/src/plugins/quota/quota-count.c:218,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - root
    - bytes_r
    - count_r
    - error_r
    argTypes:
    - struct count_quota_root*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 227
    functionName: quota_count_cached
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - quota_count
    linkageType: ''
    returnType: enum quota_get_result
    signature: "enum quota_get_result quota_count_cached(struct count_quota_root *root,\n\t\t
      \  uint64_t *bytes_r, uint64_t *count_r,\n\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota-count.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: count_quota_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct quota_root
    signature: struct quota_root *count_quota_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - root
    - ATTR_UNUSED
    argTypes:
    - struct quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: count_quota_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int count_quota_init(struct quota_root *root,\n\t\t\t    const char
      **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-count.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: count_quota_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void count_quota_deinit(struct quota_root *_root)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 256
    functionName: count_quota_root_get_resources
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *const *

      count_quota_root_get_resources(struct quota_root *root ATTR_UNUSED)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: quota_count_cached
      Src: /src/dovecot/src/plugins/quota/quota-count.c:267,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-count.c:271,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-count.c:273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - _root
    - name
    - value_r
    - error_r
    argTypes:
    - struct quota_root*
    - char*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 258
    functionDepth: 4
    functionLinenumber: 258
    functionLinenumberEnd: 280
    functionName: count_quota_get_resource
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - strcmp
    - quota_count_cached
    linkageType: ''
    returnType: enum quota_get_result
    signature: "enum quota_get_result count_quota_get_resource(struct quota_root *_root,\n\t\t\t
      const char *name, uint64_t *value_r,\n\t\t\t const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/quota/quota-count.c:291,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-count.c:292,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:297,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/plugins/quota/quota-count.c:303,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/quota/quota-count.c:305,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/quota/quota-count.c:306,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/plugins/quota/quota-count.c:308,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:309,1
    - Dst: mail_index_get_last_error
      Src: /src/dovecot/src/plugins/quota/quota-count.c:312,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/plugins/quota/quota-count.c:316,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:318,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-count.c:320,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/quota/quota-count.c:324,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:325,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-count.c:327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - box
    - error_r
    argTypes:
    - struct mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 331
    functionName: quota_count_recalculate_box
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_transaction_begin
    - mailbox_open
    - mailbox_get_last_internal_error
    - mail_index_transaction_commit
    - mail_index_get_last_error
    - t_strdup_printf
    - mailbox_sync
    - mail_index_update_header_ext
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int quota_count_recalculate_box(struct mailbox *box,\n\t\t\t\t       const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/quota/quota-count.c:343,1
    - Dst: quota_mailbox_iter_begin
      Src: /src/dovecot/src/plugins/quota/quota-count.c:345,1
    - Dst: quota_mailbox_iter_next
      Src: /src/dovecot/src/plugins/quota/quota-count.c:346,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/quota/quota-count.c:347,1
    - Dst: quota_count_recalculate_box
      Src: /src/dovecot/src/plugins/quota/quota-count.c:348,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/quota/quota-count.c:350,1
    - Dst: quota_mailbox_iter_deinit
      Src: /src/dovecot/src/plugins/quota/quota-count.c:352,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-count.c:357,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/quota/quota-count.c:361,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - root
    - error_r
    argTypes:
    - struct quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 363
    functionName: quota_count_recalculate
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - quota_mailbox_iter_next
    - quota_count_recalculate_box
    - t_strdup_printf
    - quota_mailbox_iter_begin
    - event_reason_begin
    - event_reason_end
    - mailbox_alloc
    - quota_mailbox_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int quota_count_recalculate(struct quota_root *root,\n\t\t\t\t   const
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: quota_count_recalculate
      Src: /src/dovecot/src/plugins/quota/quota-count.c:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - root
    - ctx
    - error_r
    argTypes:
    - struct quota_root*
    - struct quota_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 365
    functionDepth: 4
    functionLinenumber: 365
    functionLinenumberEnd: 378
    functionName: count_quota_update
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-count.c
    functionUses: 0
    functionsReached:
    - quota_count_recalculate
    linkageType: ''
    returnType: int
    signature: "int count_quota_update(struct quota_root *root,\n\t\t   struct quota_transaction_context
      *ctx,\n\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: QUOTA_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-plugin.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: QUOTA_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-plugin.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 49
    functionName: quota_settings_check
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool quota_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: quota_backend_find
      Src: /src/dovecot/src/plugins/quota/quota-settings.c:142,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-settings.c:144,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 163
    functionName: quota_root_settings_check
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-settings.c
    functionUses: 0
    functionsReached:
    - quota_backend_find
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool quota_root_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 174
    functionName: quota_get_unlimited_set
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct quota_settings
    signature: struct quota_settings *quota_get_unlimited_set(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota-status.c:85,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/quota/quota-status.c:87,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/quota/quota-status.c:89,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/plugins/quota/quota-status.c:90,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/plugins/quota/quota-status.c:92,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 95
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_debug
    - connection_init_server
    - i_new
    - event_add_category
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-status.c:99,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-status.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct quota_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: client_reset
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void client_reset(struct quota_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/quota/quota-status.c:106,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:114,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/quota/quota-status.c:118,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/quota/quota-status.c:119,1
    - Dst: quota_transaction_begin
      Src: /src/dovecot/src/plugins/quota/quota-status.c:121,1
    - Dst: quota_test_alloc
      Src: /src/dovecot/src/plugins/quota/quota-status.c:123,1
    - Dst: I_MAX
      Src: /src/dovecot/src/plugins/quota/quota-status.c:123,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-status.c:126,1
    - Dst: quota_alloc_result_errstr
      Src: /src/dovecot/src/plugins/quota/quota-status.c:127,1
    - Dst: quota_transaction_rollback
      Src: /src/dovecot/src/plugins/quota/quota-status.c:128,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/quota/quota-status.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - user
    - mail_size
    - error_r
    argTypes:
    - struct mail_user*
    - uoff_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 103
    functionDepth: 5
    functionLinenumber: 103
    functionLinenumberEnd: 132
    functionName: quota_check
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 2
    functionsReached:
    - mailbox_free
    - e_debug
    - QUOTA_USER_CONTEXT
    - I_MAX
    - quota_transaction_rollback
    - e_error
    - quota_alloc_result_errstr
    - mailbox_alloc
    - mail_namespace_find_inbox
    - quota_transaction_begin
    - quota_test_alloc
    linkageType: ''
    returnType: enum quota_alloc_result
    signature: enum quota_alloc_result quota_check(struct mail_user *user, uoff_t
      mail_size, const char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/quota/quota-status.c:137,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/quota/quota-status.c:138,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/quota/quota-status.c:142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct quota_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 149
    functionName: client_check_mta_state
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 0
    functionsReached:
    - e_warning
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int client_check_mta_state(struct quota_client *client)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/quota/quota-status.c:166,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:167,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/plugins/quota/quota-status.c:168,1
    - Dst: client_check_mta_state
      Src: /src/dovecot/src/plugins/quota/quota-status.c:172,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:173,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/plugins/quota/quota-status.c:174,1
    - Dst: smtp_address_parse_path
      Src: /src/dovecot/src/plugins/quota/quota-status.c:178,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/quota/quota-status.c:178,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-status.c:183,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/plugins/quota/quota-status.c:185,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:186,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/plugins/quota/quota-status.c:187,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/quota/quota-status.c:191,1
    - Dst: smtp_address_detail_parse_temp
      Src: /src/dovecot/src/plugins/quota/quota-status.c:193,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/plugins/quota/quota-status.c:196,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/plugins/quota/quota-status.c:198,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:200,1
    - Dst: quota_check
      Src: /src/dovecot/src/plugins/quota/quota-status.c:203,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:206,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:209,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/quota/quota-status.c:213,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/plugins/quota/quota-status.c:223,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota/quota-status.c:225,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-status.c:227,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/quota/quota-status.c:251,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-status.c:252,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota-status.c:254,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/plugins/quota/quota-status.c:255,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-status.c:257,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/quota/quota-status.c:262,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-status.c:265,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-status.c:266,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-status.c:268,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-status.c:269,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:272,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-status.c:272,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-status.c:273,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/plugins/quota/quota-status.c:274,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-status.c:274,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 76
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct quota_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 275
    functionName: client_handle_request
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 0
    functionsReached:
    - str_c
    - mail_user_deinit
    - event_unref
    - mail_storage_service_lookup_next
    - str_sanitize
    - restrict_access_allow_coredumps
    - t_strdup
    - t_str_new
    - smtp_address_detail_parse_temp
    - event_set_ptr
    - smtp_address_parse_path
    - i_zero
    - event_create
    - quota_check
    - strcasecmp
    - e_error
    - pool_datastack_create
    - client_check_mta_state
    - o_stream_nsend_str
    - e_debug
    - settings_free
    - str_append
    - settings_get
    linkageType: ''
    returnType: void
    signature: void client_handle_request(struct quota_client *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:282,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/plugins/quota/quota-status.c:282,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/plugins/quota/quota-status.c:285,1
    - Dst: client_handle_request
      Src: /src/dovecot/src/plugins/quota/quota-status.c:286,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/plugins/quota/quota-status.c:287,1
    - Dst: client_reset
      Src: /src/dovecot/src/plugins/quota/quota-status.c:288,1
    - Dst: str_begins
      Src: /src/dovecot/src/plugins/quota/quota-status.c:291,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/plugins/quota/quota-status.c:293,1
    - Dst: str_begins
      Src: /src/dovecot/src/plugins/quota/quota-status.c:294,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/plugins/quota/quota-status.c:295,1
    - Dst: str_begins
      Src: /src/dovecot/src/plugins/quota/quota-status.c:297,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/quota/quota-status.c:299,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 302
    functionName: client_input_line
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - e_debug
    - str_begins
    - o_stream_cork
    - i_strdup_empty
    - i_strdup
    - str_sanitize
    - str_to_uoff
    - client_reset
    - client_handle_request
    linkageType: ''
    returnType: int
    signature: int client_input_line(struct connection *conn, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/quota/quota-status.c:308,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/plugins/quota/quota-status.c:310,1
    - Dst: client_reset
      Src: /src/dovecot/src/plugins/quota/quota-status.c:311,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota-status.c:312,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-status.c:313,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/plugins/quota/quota-status.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 304
    functionDepth: 3
    functionLinenumber: 304
    functionLinenumberEnd: 316
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 62
    functionsReached:
    - connection_deinit
    - event_unref
    - e_debug
    - client_reset
    - i_free
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void client_destroy(struct connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/plugins/quota/quota-status.c:333,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/quota/quota-status.c:334,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/plugins/quota/quota-status.c:336,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/plugins/quota/quota-status.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 329
    functionDepth: 7
    functionLinenumber: 329
    functionLinenumberEnd: 338
    functionName: main_preinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 4
    functionsReached:
    - restrict_access_by_env
    - restrict_access_allow_coredumps
    - i_fatal
    - master_service_settings_read_simple
    linkageType: ''
    returnType: void
    signature: void main_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/plugins/quota/quota-status.c:344,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/plugins/quota/quota-status.c:345,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/quota/quota-status.c:352,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/plugins/quota/quota-status.c:356,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/plugins/quota/quota-status.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 359
    functionName: main_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 11
    functionsReached:
    - i_zero
    - connection_list_init
    - mail_storage_service_init
    - master_service_get_event
    - settings_get_or_fatal
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-status.c:363,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/plugins/quota/quota-status.c:364,1
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/plugins/quota/quota-status.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 366
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 16
    functionsReached:
    - mail_storage_service_deinit
    - settings_free
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/plugins/quota/quota-status.c:374,1
    - Dst: master_getopt
      Src: /src/dovecot/src/plugins/quota/quota-status.c:376,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-status.c:379,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/quota/quota-status.c:382,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/quota/quota-status.c:389,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/plugins/quota/quota-status.c:391,1
    - Dst: main_preinit
      Src: /src/dovecot/src/plugins/quota/quota-status.c:392,1
    - Dst: main_init
      Src: /src/dovecot/src/plugins/quota/quota-status.c:394,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/plugins/quota/quota-status.c:395,1
    - Dst: master_service_run
      Src: /src/dovecot/src/plugins/quota/quota-status.c:396,1
    - Dst: main_deinit
      Src: /src/dovecot/src/plugins/quota/quota-status.c:397,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/plugins/quota/quota-status.c:398,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 368
    functionDepth: 5
    functionLinenumber: 368
    functionLinenumberEnd: 400
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-status.c
    functionUses: 7
    functionsReached:
    - strcmp
    - main_init
    - master_service_run
    - i_fatal
    - main_deinit
    - master_service_init_finish
    - main_preinit
    - master_getopt
    - master_service_init
    - master_service_deinit
    - master_service_init_log
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: quota_root_get_resources
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:27,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:29,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:30,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:31,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:33,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:34,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:36,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:38,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:40,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:41,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:42,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:44,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:47,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:48,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:49,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - root
    - user
    argTypes:
    - struct quota_root*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 54
    functionName: cmd_quota_get_root
    functionSourceFile: /src/dovecot/src/plugins/quota/doveadm-quota.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    - doveadm_print_num
    - e_error
    - quota_get_resource
    - quota_root_get_resources
    linkageType: ''
    returnType: int
    signature: int cmd_quota_get_root(struct quota_root *root, struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:60,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:64,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:65,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:70,1
    - Dst: cmd_quota_get_root
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:71,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 76
    functionName: cmd_quota_get_run
    functionSourceFile: /src/dovecot/src/plugins/quota/doveadm-quota.c
    functionUses: 0
    functionsReached:
    - QUOTA_USER_CONTEXT
    - array_foreach
    - e_error
    - doveadm_mail_failed_error
    - cmd_quota_get_root
    linkageType: ''
    returnType: int
    signature: "int cmd_quota_get_run(struct doveadm_mail_cmd_context *ctx,\n\t\t
      \ struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:80,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:81,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:82,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:84,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 88
    functionName: cmd_quota_get_init
    functionSourceFile: /src/dovecot/src/plugins/quota/doveadm-quota.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header
    linkageType: ''
    returnType: void
    signature: void cmd_quota_get_init(struct doveadm_mail_cmd_context *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:95,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 100
    functionName: cmd_quota_get_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/doveadm-quota.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_quota_get_alloc(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:106,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:111,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:112,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:116,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:120,1
    - Dst: backend::v::update
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:122,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:123,1
    - Dst: backend::v::flush
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 129
    functionName: cmd_quota_recalc_run
    functionSourceFile: /src/dovecot/src/plugins/quota/doveadm-quota.c
    functionUses: 0
    functionsReached:
    - i_zero
    - backend::v::update
    - QUOTA_USER_CONTEXT
    - backend::v::flush
    - array_foreach
    - e_error
    - doveadm_mail_failed_error
    linkageType: ''
    returnType: int
    signature: "int cmd_quota_recalc_run(struct doveadm_mail_cmd_context *ctx ATTR_UNUSED,\n\t\t
      \    struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 139
    functionName: cmd_quota_recalc_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/doveadm-quota.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_quota_recalc_alloc(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:164,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/plugins/quota/doveadm-quota.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 166
    functionName: doveadm_quota_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/quota/doveadm-quota.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_quota_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 170
    functionName: doveadm_quota_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/doveadm-quota.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_quota_plugin_deinit(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:68,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:72,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:76,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:77,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:78,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:80,1
    - Dst: readdir
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:81,1
    - Dst: strstr
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:86,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:105,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:106,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:107,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:107,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:111,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:112,1
    - Dst: closedir
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:118,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:119,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 46
    argCount: 4
    argNames:
    - dir
    - total_bytes
    - total_count
    - error_r
    argTypes:
    - char*
    - uint64_t*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 123
    functionName: maildir_sum_dir
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - readdir
    - t_str_new
    - str_c
    - opendir
    - str_append_c
    - str_len
    - t_strdup_printf
    - closedir
    - stat
    - str_truncate
    - str_append
    - strstr
    linkageType: ''
    returnType: int
    signature: "int maildir_sum_dir(const char *dir, uint64_t *total_bytes,\n\t\t\t
      \  uint64_t *total_count, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:130,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:132,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - root
    - list
    argTypes:
    - struct maildir_quota_root*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 138
    functionName: maildir_list_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - mailbox_list_iter_init
    - str_new
    - i_new
    linkageType: ''
    returnType: struct maildir_list_context
    signature: 'struct maildir_list_context *

      maildir_list_init(struct maildir_quota_root *root, struct mailbox_list *list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:144,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:146,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:148,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:151,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:152,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_list_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 157
    functionName: maildir_set_next_path
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - str_len
    - mailbox_list_get_storage_name
    - str_truncate
    - str_append
    linkageType: ''
    returnType: bool
    signature: bool maildir_set_next_path(struct maildir_list_context *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:166,1
    - Dst: mail_storage_mailbox_create_event
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:174,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:177,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:179,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:182,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:184,1
    - Dst: maildir_set_next_path
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:192,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:200,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:200,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:205,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:206,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:212,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - mtime_r
    argTypes:
    - struct maildir_list_context*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 213
    functionName: maildir_list_next
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - str_c
    - event_unref
    - mailbox_list_iter_next
    - settings_free
    - mail_storage_mailbox_create_event
    - e_error
    - stat
    - settings_get
    - maildir_set_next_path
    linkageType: ''
    returnType: char
    signature: 'char *

      maildir_list_next(struct maildir_list_context *ctx, time_t *mtime_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:218,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:220,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:222,1
    - Dst: str_free
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:224,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct maildir_list_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 227
    functionName: maildir_list_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_last_internal_error
    - mailbox_list_iter_deinit
    - t_strdup_printf
    - i_free
    - str_free
    linkageType: ''
    returnType: int
    signature: "int maildir_list_deinit(struct maildir_list_context *ctx,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: maildir_list_init
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:238,1
    - Dst: maildir_list_next
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:239,1
    - Dst: maildir_list_deinit
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - root
    - ns
    - latest_mtime
    - error_r
    argTypes:
    - struct maildir_quota_root*
    - struct mail_namespace*
    - time_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 248
    functionName: maildirs_check_have_changed
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - maildir_list_init
    - maildir_list_deinit
    - maildir_list_next
    linkageType: ''
    returnType: int
    signature: "int maildirs_check_have_changed(struct maildir_quota_root *root,\n\t\t\t
      \   struct mail_namespace *ns, time_t latest_mtime,\n\t\t\t    const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:259,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:263,1
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:264,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:271,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:272,1
    - Dst: safe_mkstemp_hostpid_group
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:273,1
    - Dst: strrchr
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:278,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:279,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:280,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:284,1
    - Dst: safe_mkstemp_hostpid_group
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:288,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:294,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:299,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:302,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:305,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:306,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:307,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:309,1
    - Dst: write_full
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:311,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:311,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:311,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:312,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:313,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:314,1
    - Dst: i_unlink
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:315,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:315,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:318,1
    - Dst: rename
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:320,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:320,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:321,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:322,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:323,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:323,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 2
    argNames:
    - root
    - path
    argTypes:
    - struct maildir_quota_root*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 327
    functionName: maildirsize_write
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - str_len
    - i_unlink
    - mailbox_list_get_root_permissions
    - mail_namespace_find_inbox
    - safe_mkstemp_hostpid_group
    - rename
    - t_str_new
    - str_append_c
    - mkdir_parents_chgrp
    - i_close_fd
    - str_data
    - write_full
    - e_error
    - i_unlink_if_exists
    - i_assert
    - strrchr
    - t_strdup_until
    - str_append
    linkageType: ''
    returnType: int
    signature: int maildirsize_write(struct maildir_quota_root *root, const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct maildir_quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 333
    functionName: maildirsize_recalculate_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void maildirsize_recalculate_init(struct maildir_quota_root *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: maildir_list_init
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:344,1
    - Dst: maildir_list_next
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:345,1
    - Dst: maildir_sum_dir
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:349,1
    - Dst: maildir_list_deinit
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:353,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - root
    - ns
    - error_r
    argTypes:
    - struct maildir_quota_root*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 335
    functionDepth: 3
    functionLinenumber: 335
    functionLinenumberEnd: 357
    functionName: maildirsize_recalculate_namespace
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - maildir_list_init
    - maildir_sum_dir
    - maildir_list_deinit
    - maildir_list_next
    linkageType: ''
    returnType: int
    signature: "int maildirsize_recalculate_namespace(struct maildir_quota_root *root,\n\t\t\t\t\t
      \    struct mail_namespace *ns,\n\t\t\t\t\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:361,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:363,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct maildir_quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 365
    functionName: maildirsize_rebuild_later
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - e_error
    - unlink
    linkageType: ''
    returnType: void
    signature: void maildirsize_rebuild_later(struct maildir_quota_root *root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: maildirsize_write
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:372,1
    - Dst: maildirsize_rebuild_later
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:376,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - root
    - ret
    - error_r
    argTypes:
    - struct maildir_quota_root*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 379
    functionName: maildirsize_recalculate_finish
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - maildirsize_write
    - maildirsize_rebuild_later
    linkageType: ''
    returnType: int
    signature: "int maildirsize_recalculate_finish(struct maildir_quota_root *root,\n\t\t\t\t\t
      \ int ret, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:389,1
    - Dst: maildirsize_recalculate_init
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:390,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:393,1
    - Dst: maildirsize_recalculate_namespace
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:395,1
    - Dst: maildirs_check_have_changed
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:404,1
    - Dst: maildirsize_recalculate_finish
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:412,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:413,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - root
    - error_r
    argTypes:
    - struct maildir_quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 381
    functionDepth: 4
    functionLinenumber: 381
    functionLinenumberEnd: 415
    functionName: maildirsize_recalculate
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - array_get
    - maildirsize_recalculate_namespace
    - event_reason_begin
    - event_reason_end
    - maildirsize_recalculate_finish
    - maildirs_check_have_changed
    - maildirsize_recalculate_init
    linkageType: ''
    returnType: int
    signature: "int maildirsize_recalculate(struct maildir_quota_root *root,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:429,1
    - Dst: str_parse_ullong
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:430,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - str
    - bytes_r
    - count_r
    argTypes:
    - char*
    - uint64_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 453
    functionName: maildir_parse_limit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - str_parse_ullong
    linkageType: ''
    returnType: bool
    signature: bool maildir_parse_limit(const char *str, uint64_t *bytes_r, uint64_t
      *count_r)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: maildir_parse_limit
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:468,1
    - Dst: sscanf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:491,1
    - Dst: fstat
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:513,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 3
    argNames:
    - root
    - fd
    - lines
    argTypes:
    - struct maildir_quota_root*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 520
    functionName: maildirsize_parse
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - maildir_parse_limit
    - fstat
    - sscanf
    linkageType: ''
    returnType: int
    signature: "int maildirsize_parse(struct maildir_quota_root *root,\n\t\t\t     int
      fd, const char *const *lines)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:525,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:527,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:531,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - root
    - error_r
    argTypes:
    - struct maildir_quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 536
    functionName: maildirsize_open
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - i_close_fd_path
    - nfs_safe_open
    linkageType: ''
    returnType: int
    signature: "int maildirsize_open(struct maildir_quota_root *root,\n\t\t\t    const
      char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:543,1
    - Dst: nfs_flush_attr_cache_unlocked
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:544,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:550,1
    - Dst: fstat
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:552,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:556,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct maildir_quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 557
    functionName: maildirsize_has_changed
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - nfs_flush_attr_cache_unlocked
    - fstat
    - stat
    - nfs_flush_file_handle_cache
    - CMP_DEV_T
    linkageType: ''
    returnType: bool
    signature: bool maildirsize_has_changed(struct maildir_quota_root *root)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: maildirsize_has_changed
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:569,1
    - Dst: maildirsize_open
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:572,1
    - Dst: read
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:577,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:583,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:607,1
    - Dst: maildirsize_parse
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:618,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:618,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:623,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 42
    argCount: 3
    argNames:
    - root
    - retry
    - error_r
    argTypes:
    - struct maildir_quota_root*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 559
    functionDepth: 3
    functionLinenumber: 559
    functionLinenumberEnd: 627
    functionName: maildirsize_read
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - t_strdup_printf
    - read
    - maildirsize_has_changed
    - t_strsplit
    - maildirsize_parse
    - maildirsize_open
    linkageType: ''
    returnType: int
    signature: "int maildirsize_read(struct maildir_quota_root *root, bool *retry,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:640,1
    - Dst: mailbox_list_get_storage
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:646,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:647,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:651,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:660,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:662,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:664,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct maildir_quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 668
    functionName: maildirquota_limits_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_root_path
    - i_unreached
    - mailbox_list_get_storage
    - e_warning
    - p_strconcat
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool maildirquota_limits_init(struct maildir_quota_root *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: maildirquota_limits_init
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:676,1
    - Dst: maildirsize_read
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:682,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - root
    - error_r
    argTypes:
    - struct maildir_quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 670
    functionDepth: 4
    functionLinenumber: 670
    functionLinenumberEnd: 686
    functionName: maildirquota_read_limits
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - maildirquota_limits_init
    - maildirsize_read
    linkageType: ''
    returnType: int
    signature: "int maildirquota_read_limits(struct maildir_quota_root *root,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: maildirquota_read_limits
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:696,1
    - Dst: maildirsize_recalculate
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:698,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - root
    - recalculated_r
    - error_r
    argTypes:
    - struct maildir_quota_root*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 688
    functionDepth: 5
    functionLinenumber: 688
    functionLinenumberEnd: 703
    functionName: maildirquota_refresh
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - maildirquota_read_limits
    - maildirsize_recalculate
    linkageType: ''
    returnType: int
    signature: "int maildirquota_refresh(struct maildir_quota_root *root, bool *recalculated_r,\n\t\t
      \    const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_snprintf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:719,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:721,1
    - Dst: write_full
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:722,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:722,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:727,1
    - Dst: close
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:733,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:736,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - root
    - count_diff
    - bytes_diff
    argTypes:
    - struct maildir_quota_root*
    - int
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 742
    functionName: maildirsize_update
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - write_full
    - strlen
    - e_error
    - i_snprintf
    - close
    linkageType: ''
    returnType: int
    signature: "int maildirsize_update(struct maildir_quota_root *root,\n\t\t\t      int
      count_diff, int64_t bytes_diff)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 744
    functionDepth: 0
    functionLinenumber: 744
    functionLinenumberEnd: 751
    functionName: maildir_quota_alloc
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct quota_root
    signature: struct quota_root *maildir_quota_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct quota_root*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 753
    functionDepth: 0
    functionLinenumber: 753
    functionLinenumberEnd: 757
    functionName: maildir_quota_init
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int maildir_quota_init(struct quota_root *_root ATTR_UNUSED,\n\t\t\t
      \     const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:763,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _root
    argTypes:
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 759
    functionDepth: 1
    functionLinenumber: 759
    functionLinenumberEnd: 765
    functionName: maildir_quota_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - i_free
    linkageType: ''
    returnType: void
    signature: void maildir_quota_deinit(struct quota_root *_root)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - _root
    - ns
    argTypes:
    - struct quota_root*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 776
    functionName: maildir_quota_namespace_added
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void maildir_quota_namespace_added(struct quota_root *_root,\n\t\t\t
      \     struct mail_namespace *ns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 778
    functionDepth: 0
    functionLinenumber: 778
    functionLinenumberEnd: 788
    functionName: maildir_quota_root_get_resources
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *const *

      maildir_quota_root_get_resources(struct quota_root *root ATTR_UNUSED)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: maildirquota_refresh
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:798,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:799,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:803,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:805,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - _root
    - name
    - value_r
    - error_r
    argTypes:
    - struct quota_root*
    - char*
    - uint64_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 790
    functionDepth: 6
    functionLinenumber: 790
    functionLinenumberEnd: 812
    functionName: maildir_quota_get_resource
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    - maildirquota_refresh
    linkageType: ''
    returnType: enum quota_get_result
    signature: "enum quota_get_result maildir_quota_get_resource(struct quota_root
      *_root, const char *name,\n\t\t\t   uint64_t *value_r, const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: maildirquota_limits_init
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:823,1
    - Dst: maildirquota_refresh
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:832,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:833,1
    - Dst: maildirsize_recalculate
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:843,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:844,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:846,1
    - Dst: maildirsize_recalculate
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:847,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:848,1
    - Dst: maildirsize_update
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:849,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:850,1
    - Dst: maildirsize_rebuild_later
      Src: /src/dovecot/src/plugins/quota/quota-maildir.c:851,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - _root
    - ctx
    - error_r
    argTypes:
    - struct quota_root*
    - struct quota_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 814
    functionDepth: 6
    functionLinenumber: 814
    functionLinenumberEnd: 855
    functionName: maildir_quota_update
    functionSourceFile: /src/dovecot/src/plugins/quota/quota-maildir.c
    functionUses: 0
    functionsReached:
    - maildirquota_limits_init
    - i_close_fd
    - t_strdup_printf
    - maildirsize_recalculate
    - e_error
    - maildirsize_rebuild_later
    - maildirquota_refresh
    - maildirsize_update
    linkageType: ''
    returnType: int
    signature: "int maildir_quota_update(struct quota_root *_root,\n\t\t     struct
      quota_transaction_context *ctx,\n\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 10
    functionName: VIRTUAL_LIST_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIRTUAL_LIST_CONTEXT_REQUIRE(obj)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: VIRTUAL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:24,1
    - Dst: struct virtual_mailbox_list*::module_ctx::super::get_storage
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:26,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:36,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:36,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:37,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:37,1
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:38,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:40,1
    - Dst: virtual_config_read
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:42,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:45,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:48,1
    - Dst: mailbox_list_get_storage
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:49,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:52,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 4
    argNames:
    - list
    - vname
    - flags
    - storage_r
    argTypes:
    - struct mailbox_list**
    - char**
    - enum mailbox_list_get_storage_flags
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 54
    functionName: virtual_get_storage
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - mail_namespace_find
    - mailbox_free
    - ENUM_NEGATE
    - struct virtual_mailbox_list*::module_ctx::super::get_storage
    - mailbox_list_get_storage
    - mailbox_alloc
    - virtual_config_read
    - t_strdup
    - i_assert
    - mailbox_get_path_to
    - VIRTUAL_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: "int virtual_get_storage(struct mailbox_list **list, const char **vname,\n\t\t
      \   enum mailbox_list_get_storage_flags flags,\n\t\t    struct mail_storage
      **storage_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:61,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/virtual/virtual-list.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 67
    functionName: virtual_mailbox_list_created
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-list.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void virtual_mailbox_list_created(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mail
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 15
    functionName: virtual_mail_container_of
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: virtual_mail_container_of(mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:44,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:48,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:49,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:50,1
    - Dst: mailbox_header_lookup_ref
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:54,1
    - Dst: index_mail_init
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:58,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:60,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - t
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 62
    functionName: virtual_mail_alloc
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_init
    - pool_alloconly_create
    - mailbox_header_lookup_ref
    - container_of
    - p_new
    - i_array_init
    - array_count
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\nvirtual_mail_alloc(struct mailbox_transaction_context
      *t,\n\t\t   enum mail_fetch_field wanted_fields,\n\t\t   struct mailbox_header_lookup_ctx
      *wanted_headers)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:66,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:71,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:75,1
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:78,1
    - Dst: mail_free
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:81,1
    - Dst: struct mail_private*::v::close
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:83,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:86,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:87,1
    - Dst: index_mail_close
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 90
    functionName: virtual_mail_close
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - container_of
    - virtual_mail_container_of
    - mailbox_header_lookup_unref
    - array_get_modifiable
    - struct mail_private*::v::close
    - index_mail_close
    - mail_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void virtual_mail_close(struct mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - vmail
    - box
    argTypes:
    - struct virtual_mail*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: backend_mail_find
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct mail
    signature: 'struct mail *

      backend_mail_find(struct virtual_mail *vmail, struct mailbox *box)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:111,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:118,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:125,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:126,1
    - Dst: backend_mail_find
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:128,1
    - Dst: virtual_backend_box_open
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:131,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:132,1
    - Dst: virtual_mail_set_backend_mail
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:135,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:136,1
    - Dst: virtual_backend_box_accessed
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:138,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:139,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:143,1
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:148,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - vmail
    - backend_mail_r
    argTypes:
    - struct virtual_mail*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 152
    functionName: backend_mail_get
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - container_of
    - virtual_box_copy_error
    - virtual_backend_box_open
    - i_unreached
    - mail_add_temp_wanted_fields
    - mail_set_uid
    - virtual_backend_box_lookup
    - backend_mail_find
    - i_assert
    - virtual_backend_box_accessed
    - virtual_mail_set_backend_mail
    linkageType: ''
    returnType: int
    signature: "int backend_mail_get(struct virtual_mail *vmail,\n\t\t\t    struct
      mail **backend_mail_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:158,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:163,1
    - Dst: virtual_transaction_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:165,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:168,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:171,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:172,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - mail
    - bbox
    argTypes:
    - struct mail*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 178
    functionName: virtual_mail_set_backend_mail
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 1
    functionsReached:
    - virtual_mail_container_of
    - mail_alloc
    - virtual_transaction_get
    - mailbox_header_lookup_unref
    - array_push_back
    - mailbox_header_lookup_init
    - i_assert
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\nvirtual_mail_set_backend_mail(struct mail *mail,\n\t\t\t
      \     struct virtual_backend_box *bbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - mail
    - backend_mail
    argTypes:
    - struct mail*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 190
    functionName: virtual_mail_set_unattached_backend_mail
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - virtual_mail_container_of
    linkageType: ''
    returnType: void
    signature: "void virtual_mail_set_unattached_backend_mail(struct mail *mail,\n\t\t\t\t\t
      \     struct mail *backend_mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:194,1
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:196,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:199,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:201,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:203,1
    - Dst: index_mail_set_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - mail
    - seq
    - saving
    argTypes:
    - struct mail*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 208
    functionName: virtual_mail_set_seq
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - memcpy
    - container_of
    - virtual_mail_container_of
    - mail_index_lookup_ext
    - index_mail_set_seq
    - i_assert
    linkageType: ''
    returnType: void
    signature: void virtual_mail_set_seq(struct mail *mail, uint32_t seq, bool saving)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:214,1
    - Dst: virtual_mail_set_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mail
    - uid
    argTypes:
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 210
    functionDepth: 3
    functionLinenumber: 210
    functionLinenumberEnd: 219
    functionName: virtual_mail_set_uid
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - virtual_mail_set_seq
    - mail_index_lookup_seq
    linkageType: ''
    returnType: bool
    signature: bool virtual_mail_set_uid(struct mail *mail, uint32_t uid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:223,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:227,1
    - Dst: struct mail_private*::v::set_uid_cache_updates
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mail
    - set
    argTypes:
    - struct mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 231
    functionName: virtual_mail_set_uid_cache_updates
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::set_uid_cache_updates
    - backend_mail_get
    - virtual_mail_container_of
    linkageType: ''
    returnType: void
    signature: void virtual_mail_set_uid_cache_updates(struct mail *mail, bool set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:235,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:239,1
    - Dst: struct mail_private*::v::prefetch
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 243
    functionName: virtual_mail_prefetch
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_mail_container_of
    - struct mail_private*::v::prefetch
    linkageType: ''
    returnType: bool
    signature: bool virtual_mail_prefetch(struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:247,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:251,1
    - Dst: struct mail_private*::v::precache
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:254,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 245
    functionDepth: 3
    functionLinenumber: 245
    functionLinenumberEnd: 259
    functionName: virtual_mail_precache
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_box_copy_error
    - virtual_mail_container_of
    - struct mail_private*::v::precache
    linkageType: ''
    returnType: int
    signature: int virtual_mail_precache(struct mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:266,1
    - Dst: mailbox_header_lookup_merge
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:276,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:278,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:284,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:288,1
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:289,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - mail
    - fields
    - headers
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 291
    functionName: virtual_mail_add_temp_wanted_fields
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - virtual_mail_container_of
    - mailbox_header_lookup_unref
    - backend_mail_get
    - mail_add_temp_wanted_fields
    - mailbox_header_lookup_init
    - mailbox_header_lookup_merge
    linkageType: ''
    returnType: void
    signature: "void virtual_mail_add_temp_wanted_fields(struct mail *mail,\n\t\t\t\t
      \   enum mail_fetch_field fields,\n\t\t\t\t    struct mailbox_header_lookup_ctx
      *headers)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:296,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:299,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:301,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mail
    - parts_r
    argTypes:
    - struct mail*
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 293
    functionDepth: 3
    functionLinenumber: 293
    functionLinenumberEnd: 306
    functionName: virtual_mail_get_parts
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - mail_get_parts
    - virtual_mail_container_of
    - virtual_box_copy_error
    linkageType: ''
    returnType: int
    signature: int virtual_mail_get_parts(struct mail *mail, struct message_part **parts_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:311,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:318,1
    - Dst: mail_get_date
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:320,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:321,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - mail
    - date_r
    - timezone_r
    argTypes:
    - struct mail*
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 308
    functionDepth: 3
    functionLinenumber: 308
    functionLinenumberEnd: 325
    functionName: virtual_mail_get_date
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_box_copy_error
    - virtual_mail_container_of
    - mail_get_date
    linkageType: ''
    returnType: int
    signature: int virtual_mail_get_date(struct mail *mail, time_t *date_r, int *timezone_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:329,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:332,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:334,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 327
    functionDepth: 3
    functionLinenumber: 327
    functionLinenumberEnd: 339
    functionName: virtual_mail_get_received_date
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - mail_get_received_date
    - backend_mail_get
    - virtual_box_copy_error
    - virtual_mail_container_of
    linkageType: ''
    returnType: int
    signature: int virtual_mail_get_received_date(struct mail *mail, time_t *date_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:343,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:347,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:349,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 341
    functionDepth: 3
    functionLinenumber: 341
    functionLinenumberEnd: 353
    functionName: virtual_mail_get_save_date
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - mail_get_save_date
    - backend_mail_get
    - virtual_box_copy_error
    - virtual_mail_container_of
    linkageType: ''
    returnType: int
    signature: int virtual_mail_get_save_date(struct mail *mail, time_t *date_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:357,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:360,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:362,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 355
    functionDepth: 3
    functionLinenumber: 355
    functionLinenumberEnd: 367
    functionName: virtual_mail_get_virtual_mail_size
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - mail_get_virtual_size
    - virtual_mail_container_of
    - virtual_box_copy_error
    linkageType: ''
    returnType: int
    signature: int virtual_mail_get_virtual_mail_size(struct mail *mail, uoff_t *size_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:371,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:374,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:376,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 381
    functionName: virtual_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - mail_get_physical_size
    - virtual_mail_container_of
    - virtual_box_copy_error
    linkageType: ''
    returnType: int
    signature: int virtual_mail_get_physical_size(struct mail *mail, uoff_t *size_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:387,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:392,1
    - Dst: struct mail_private*::v::get_first_header
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:395,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - mail
    - field
    - decode_to_utf8
    - value_r
    argTypes:
    - struct mail*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 402
    functionName: virtual_mail_get_first_header
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_box_copy_error
    - virtual_mail_container_of
    - struct mail_private*::v::get_first_header
    linkageType: ''
    returnType: int
    signature: "int virtual_mail_get_first_header(struct mail *mail, const char *field,\n\t\t\t
      \     bool decode_to_utf8, const char **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:408,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:412,1
    - Dst: struct mail_private*::v::get_headers
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:415,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - mail
    - field
    - decode_to_utf8
    - value_r
    argTypes:
    - struct mail*
    - char*
    - bool
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 404
    functionDepth: 3
    functionLinenumber: 404
    functionLinenumberEnd: 420
    functionName: virtual_mail_get_headers
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_box_copy_error
    - virtual_mail_container_of
    - struct mail_private*::v::get_headers
    linkageType: ''
    returnType: int
    signature: "int virtual_mail_get_headers(struct mail *mail, const char *field,\n\t\t\t
      bool decode_to_utf8, const char *const **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:427,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:432,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:435,1
    - Dst: mail_get_header_stream
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:437,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:438,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:440,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - mail
    - headers
    - stream_r
    argTypes:
    - struct mail*
    - struct mailbox_header_lookup_ctx*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 444
    functionName: virtual_mail_get_header_stream
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - virtual_mail_container_of
    - virtual_box_copy_error
    - mailbox_header_lookup_unref
    - mail_get_header_stream
    - backend_mail_get
    - mailbox_header_lookup_init
    linkageType: ''
    returnType: int
    signature: "int virtual_mail_get_header_stream(struct mail *mail,\n\t\t\t       struct
      mailbox_header_lookup_ctx *headers,\n\t\t\t       struct istream **stream_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:452,1
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:454,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:456,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:457,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:460,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:464,1
    - Dst: mail_get_hdr_stream_because
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:467,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - mail
    - get_body
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct mail*
    - bool
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 446
    functionDepth: 3
    functionLinenumber: 446
    functionLinenumberEnd: 476
    functionName: virtual_mail_get_stream
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - container_of
    - virtual_mail_container_of
    - virtual_box_copy_error
    - backend_mail_get
    - mail_get_hdr_stream_because
    - t_strdup_printf
    - mail_get_stream_because
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: "int virtual_mail_get_stream(struct mail *mail, bool get_body,\n\t\t\tstruct
      message_size *hdr_size,\n\t\t\tstruct message_size *body_size,\n\t\t\tstruct
      istream **stream_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:485,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:488,1
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:492,1
    - Dst: struct mail_private*::v::get_binary_stream
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:493,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:495,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - mail
    - part
    - include_hdr
    - bprops_r
    - stream_r
    argTypes:
    - struct mail*
    - struct message_part*
    - bool
    - struct mail_binary_properties*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 499
    functionName: virtual_mail_get_binary_stream
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - container_of
    - virtual_mail_container_of
    - virtual_box_copy_error
    - backend_mail_get
    - struct mail_private*::v::get_binary_stream
    linkageType: ''
    returnType: int
    signature: "int virtual_mail_get_binary_stream(struct mail *mail,\n\t\t\t       const
      struct message_part *part,\n\t\t\t       bool include_hdr,\n\t\t\t       struct
      mail_binary_properties *bprops_r,\n\t\t\t       struct istream **stream_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:505,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:508,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:510,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:511,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 501
    functionDepth: 3
    functionLinenumber: 501
    functionLinenumberEnd: 515
    functionName: virtual_mail_get_special
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - mail_get_special
    - virtual_mail_container_of
    - virtual_box_copy_error
    linkageType: ''
    returnType: int
    signature: "int virtual_mail_get_special(struct mail *mail, enum mail_fetch_field
      field,\n\t\t\t const char **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:520,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:523,1
    - Dst: mail_get_backend_mail
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:526,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - mail
    - real_mail_r
    argTypes:
    - struct mail*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 517
    functionDepth: 3
    functionLinenumber: 517
    functionLinenumberEnd: 529
    functionName: virtual_mail_get_backend_mail
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_mail_container_of
    - mail_get_backend_mail
    linkageType: ''
    returnType: int
    signature: "int virtual_mail_get_backend_mail(struct mail *mail,\n\t\t\t\t\t struct
      mail **real_mail_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:533,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:536,1
    - Dst: mail_update_pop3_uidl
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - mail
    - uidl
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 531
    functionDepth: 3
    functionLinenumber: 531
    functionLinenumberEnd: 539
    functionName: virtual_mail_update_pop3_uidl
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_mail_container_of
    - mail_update_pop3_uidl
    linkageType: ''
    returnType: void
    signature: void virtual_mail_update_pop3_uidl(struct mail *mail, const char *uidl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:543,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:546,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 541
    functionDepth: 3
    functionLinenumber: 541
    functionLinenumberEnd: 549
    functionName: virtual_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_mail_container_of
    - mail_expunge
    linkageType: ''
    returnType: void
    signature: void virtual_mail_expunge(struct mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: virtual_mail_container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:556,1
    - Dst: backend_mail_get
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:559,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/plugins/virtual/virtual-mail.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - mail
    - field
    - reason
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 551
    functionDepth: 3
    functionLinenumber: 551
    functionLinenumberEnd: 562
    functionName: virtual_mail_set_cache_corrupted
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-mail.c
    functionUses: 0
    functionsReached:
    - backend_mail_get
    - virtual_mail_container_of
    - mail_set_cache_corrupted
    linkageType: ''
    returnType: void
    signature: "void virtual_mail_set_cache_corrupted(struct mail *mail,\n\t\t\t\t
      enum mail_fetch_field field,\n\t\t\t\t const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_info_register
      Src: /src/dovecot/src/plugins/virtual/virtual-plugin.c:20,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/plugins/virtual/virtual-plugin.c:22,1
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/virtual/virtual-plugin.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 24
    functionName: virtual_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    - settings_info_register
    - mail_storage_class_register
    linkageType: ''
    returnType: void
    signature: void virtual_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_class_unregister
      Src: /src/dovecot/src/plugins/virtual/virtual-plugin.c:28,1
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/virtual/virtual-plugin.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: virtual_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - mail_storage_class_unregister
    linkageType: ''
    returnType: void
    signature: void virtual_plugin_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:13,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:17,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:23,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - trans
    - backend_box
    argTypes:
    - struct mailbox_transaction_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 26
    functionName: virtual_transaction_get
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-transaction.c
    functionUses: 1
    functionsReached:
    - array_get
    - container_of
    - mailbox_transaction_begin
    - array_push_back
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nvirtual_transaction_get(struct
      mailbox_transaction_context *trans,\n\t\t\tstruct mailbox *backend_box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:34,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:37,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:38,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:39,1
    - Dst: index_transaction_init
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 42
    functionName: virtual_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-transaction.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - container_of
    - array_count
    - i_new
    - index_transaction_init
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nvirtual_transaction_begin(struct
      mailbox *box,\n\t\t\t  enum mailbox_transaction_flags flags,\n\t\t\t  const
      char *reason)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:48,1
    - Dst: virtual_save_free
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:51,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:57,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:60,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:61,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:65,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:68,1
    - Dst: index_transaction_commit
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 73
    functionName: virtual_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-transaction.c
    functionUses: 0
    functionsReached:
    - container_of
    - virtual_box_copy_error
    - array_foreach_elem
    - index_transaction_commit
    - array_count
    - mailbox_transaction_commit
    - array_free
    - virtual_save_free
    linkageType: ''
    returnType: int
    signature: "int virtual_transaction_commit(struct mailbox_transaction_context
      *t,\n\t\t\t       struct mail_transaction_commit_changes *changes_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:78,1
    - Dst: virtual_save_free
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:83,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:87,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:89,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:90,1
    - Dst: index_transaction_rollback
      Src: /src/dovecot/src/plugins/virtual/virtual-transaction.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 93
    functionName: virtual_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-transaction.c
    functionUses: 0
    functionsReached:
    - container_of
    - mailbox_transaction_rollback
    - array_get_modifiable
    - index_transaction_rollback
    - array_free
    - virtual_save_free
    linkageType: ''
    returnType: void
    signature: void virtual_transaction_rollback(struct mailbox_transaction_context
      *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: VIRTUAL_BACKEND_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIRTUAL_BACKEND_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: ns_is_visible
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ns_is_visible(struct mail_namespace *ns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ns_is_visible
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:51,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:54,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 58
    functionName: get_user_visible_mailbox_name
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - mail_namespace_get_sep
    - ns_is_visible
    linkageType: ''
    returnType: char
    signature: char *get_user_visible_mailbox_name(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_user_visible_mailbox_name
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:65,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:66,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:68,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 73
    functionName: virtual_box_copy_error
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 15
    functionsReached:
    - get_user_visible_mailbox_name
    - mailbox_get_last_error
    - t_strdup_printf
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: void virtual_box_copy_error(struct mailbox *dest, struct mailbox *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:80,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:81,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 86
    functionName: virtual_storage_alloc
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *virtual_storage_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:94,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:97,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _storage
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 104
    functionName: virtual_storage_create
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - settings_get
    - container_of
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int virtual_storage_create(struct mail_storage *_storage,\n\t\t       struct
      mail_namespace *ns ATTR_UNUSED,\n\t\t       const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:112,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mbox
    - name
    argTypes:
    - struct virtual_mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 118
    functionName: virtual_backend_box_lookup_name
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_get
    linkageType: ''
    returnType: struct virtual_backend_box
    signature: 'struct virtual_backend_box *

      virtual_backend_box_lookup_name(struct virtual_mailbox *mbox, const char *name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - mbox
    - mailbox_id
    - bbox_r
    argTypes:
    - struct virtual_mailbox*
    - uint32_t
    - struct virtual_backend_box**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 138
    functionName: virtual_backend_box_lookup
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 1
    functionsReached:
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool virtual_backend_box_lookup(struct virtual_mailbox *mbox, uint32_t
      mailbox_id,\n\t\t\t\tstruct virtual_backend_box **bbox_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:146,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - storage
    - name
    argTypes:
    - struct virtual_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 152
    functionName: virtual_mailbox_is_in_open_stack
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool virtual_mailbox_is_in_open_stack(struct virtual_storage *storage,\n\t\t\t\t\t
      \    const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:160,1
    - Dst: get_user_visible_mailbox_name
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:162,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:163,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:164,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mbox
    - bbox
    argTypes:
    - struct virtual_mailbox*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 172
    functionName: virtual_backend_box_open_failed
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_error
    - mailbox_free
    - t_strdup_printf
    - get_user_visible_mailbox_name
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int virtual_backend_box_open_failed(struct virtual_mailbox *mbox,\n\t\t\t\t\t
      \  struct virtual_backend_box *bbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:183,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:186,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:189,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:190,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:191,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:199,1
    - Dst: virtual_backend_box_open_failed
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:200,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:204,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:207,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:211,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:212,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - mbox
    - bbox
    - flags
    argTypes:
    - struct virtual_mailbox*
    - struct virtual_backend_box*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 174
    functionDepth: 3
    functionLinenumber: 174
    functionLinenumberEnd: 217
    functionName: virtual_backend_box_alloc
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_assert
    - mailbox_free
    - mail_namespace_find
    - mailbox_enable
    - ENUM_NEGATE
    - e_debug
    - virtual_backend_box_open_failed
    - mailbox_alloc
    - MODULE_CONTEXT_SET
    - mailbox_exists
    linkageType: ''
    returnType: int
    signature: "int virtual_backend_box_alloc(struct virtual_mailbox *mbox,\n\t\t\t\t
      \    struct virtual_backend_box *bbox,\n\t\t\t\t     enum mailbox_flags flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:226,1
    - Dst: virtual_backend_box_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:228,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:232,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:233,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:243,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:244,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - mbox
    - flags
    argTypes:
    - struct virtual_mailbox*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 219
    functionDepth: 4
    functionLinenumber: 219
    functionLinenumberEnd: 248
    functionName: virtual_mailboxes_open
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - array_delete
    - mailbox_free
    - array_get
    - virtual_backend_box_alloc
    - array_free
    linkageType: ''
    returnType: int
    signature: "int virtual_mailboxes_open(struct virtual_mailbox *mbox,\n\t\t\t\t
      \ enum mailbox_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:255,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:259,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:260,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - _storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 275
    functionName: virtual_mailbox_alloc
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_alloc
    - pool_alloconly_create
    - container_of
    - p_new
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nvirtual_mailbox_alloc(struct mail_storage *_storage,
      struct mailbox_list *list,\n\t\t      const char *vname, enum mailbox_flags
      flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:283,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bbox
    argTypes:
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 286
    functionName: virtual_backend_box_sync_mail_unset
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - mail_free
    - mailbox_transaction_commit
    linkageType: ''
    returnType: void
    signature: void virtual_backend_box_sync_mail_unset(struct virtual_backend_box
      *bbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bbox
    argTypes:
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 302
    functionName: virtual_backend_box_can_close
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool virtual_backend_box_can_close(struct virtual_backend_box *bbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:314,1
    - Dst: virtual_backend_box_can_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:318,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:319,1
    - Dst: virtual_backend_box_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:320,1
    - Dst: virtual_backend_box_can_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:331,1
    - Dst: virtual_backend_box_sync_mail_unset
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:332,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:333,1
    - Dst: virtual_backend_box_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:334,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - mbox
    - except_bbox
    argTypes:
    - struct virtual_mailbox*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 339
    functionName: virtual_backend_box_close_any_except
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - virtual_backend_box_can_close
    - i_assert
    - virtual_backend_box_sync_mail_unset
    - virtual_backend_box_close
    linkageType: ''
    returnType: bool
    signature: "bool virtual_backend_box_close_any_except(struct virtual_mailbox *mbox,\n\t\t\t\t
      \    struct virtual_backend_box *except_bbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VIRTUAL_CONTEXT
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:343,1
    - Dst: VIRTUAL_BACKEND_CONTEXT
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:344,1
    - Dst: virtual_backend_box_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:349,1
    - Dst: struct virtual_backend_mailbox*::module_ctx::super::close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 352
    functionName: virtual_backend_mailbox_close
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - virtual_backend_box_close
    - struct virtual_backend_mailbox*::module_ctx::super::close
    - VIRTUAL_CONTEXT
    - VIRTUAL_BACKEND_CONTEXT
    linkageType: ''
    returnType: void
    signature: void virtual_backend_mailbox_close(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:359,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 364
    functionName: virtual_backend_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void virtual_backend_mailbox_allocated(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VIRTUAL_CONTEXT
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:368,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:375,1
    - Dst: virtual_backend_box_close_any_except
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:381,1
    - Dst: DLLIST2_APPEND_FULL
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:386,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 366
    functionDepth: 3
    functionLinenumber: 366
    functionLinenumberEnd: 389
    functionName: virtual_backend_mailbox_opened
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - DLLIST2_APPEND_FULL
    - virtual_backend_box_close_any_except
    - i_assert
    - VIRTUAL_CONTEXT
    linkageType: ''
    returnType: void
    signature: void virtual_backend_mailbox_opened(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:394,1
    - Dst: virtual_backend_box_close_any_except
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:399,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - mbox
    - bbox
    argTypes:
    - struct virtual_mailbox*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 391
    functionDepth: 3
    functionLinenumber: 391
    functionLinenumberEnd: 403
    functionName: virtual_backend_box_open
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 1
    functionsReached:
    - virtual_backend_box_close_any_except
    - i_assert
    - mailbox_open
    linkageType: ''
    returnType: int
    signature: "int virtual_backend_box_open(struct virtual_mailbox *mbox,\n\t\t\t
      \    struct virtual_backend_box *bbox)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:408,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:409,1
    - Dst: mailbox_search_result_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:412,1
    - Dst: mail_search_args_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:416,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:419,1
    - Dst: DLLIST2_REMOVE_FULL
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:423,1
    - Dst: mailbox_notify_changes_stop
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:429,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:432,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - mbox
    - bbox
    argTypes:
    - struct virtual_mailbox*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 433
    functionName: virtual_backend_box_close
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 2
    functionsReached:
    - mail_search_args_deinit
    - DLLIST2_REMOVE_FULL
    - mailbox_search_result_free
    - mailbox_close
    - i_assert
    - mailbox_notify_changes_stop
    linkageType: ''
    returnType: void
    signature: "void virtual_backend_box_close(struct virtual_mailbox *mbox,\n\t\t\t
      \      struct virtual_backend_box *bbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE_FULL
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:438,1
    - Dst: DLLIST2_APPEND_FULL
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mbox
    - bbox
    argTypes:
    - struct virtual_mailbox*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 444
    functionName: virtual_backend_box_accessed
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 1
    functionsReached:
    - DLLIST2_APPEND_FULL
    - DLLIST2_REMOVE_FULL
    linkageType: ''
    returnType: void
    signature: "void virtual_backend_box_accessed(struct virtual_mailbox *mbox,\n\t\t\t\t
      \ struct virtual_backend_box *bbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:451,1
    - Dst: mailbox_list_notify_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:456,1
    - Dst: virtual_backend_box_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:458,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:459,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:460,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:461,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:462,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:463,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:465,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct virtual_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 466
    functionName: virtual_mailbox_close_internal
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - array_get_modifiable
    - virtual_backend_box_close
    - array_free
    - array_is_created
    - i_assert
    - mailbox_list_notify_deinit
    linkageType: ''
    returnType: void
    signature: void virtual_mailbox_close_internal(struct virtual_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_exists_full
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - box
    - auto_boxes ATTR_UNUSED
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 474
    functionName: virtual_mailbox_exists
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_exists_full
    linkageType: ''
    returnType: int
    signature: "int virtual_mailbox_exists(struct mailbox *box, bool auto_boxes ATTR_UNUSED,\n\t\t
      \      enum mailbox_existence *existence_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:479,1
    - Dst: virtual_mailbox_is_in_open_stack
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:483,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:484,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:489,1
    - Dst: virtual_config_read
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:490,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:492,1
    - Dst: virtual_mailboxes_open
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:493,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:494,1
    - Dst: index_storage_mailbox_open
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:497,1
    - Dst: virtual_mailbox_close_internal
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:499,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:504,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:508,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:511,1
    - Dst: virtual_mailbox_ext_header_read
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:514,1
    - Dst: virtual_mailbox_close_internal
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:515,1
    - Dst: index_storage_mailbox_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:516,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:521,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:522,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:524,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:525,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:527,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:528,1
    - Dst: virtual_mailbox_close_internal
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:530,1
    - Dst: index_storage_mailbox_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:531,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 476
    functionDepth: 5
    functionLinenumber: 476
    functionLinenumberEnd: 537
    functionName: virtual_mailbox_open
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - container_of
    - virtual_mailbox_ext_header_read
    - mail_index_transaction_begin
    - index_storage_mailbox_open
    - array_push_back
    - mail_index_transaction_commit
    - virtual_config_read
    - virtual_mailbox_close_internal
    - guid_128_generate
    - mail_index_update_header_ext
    - array_pop_back
    - mail_index_ext_register
    - index_storage_mailbox_close
    - mailbox_set_critical
    - virtual_mailbox_is_in_open_stack
    - array_is_created
    - guid_128_is_empty
    - virtual_mailboxes_open
    linkageType: ''
    returnType: int
    signature: int virtual_mailbox_open(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:542,1
    - Dst: virtual_mailbox_close_internal
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:544,1
    - Dst: index_storage_mailbox_close
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 539
    functionDepth: 3
    functionLinenumber: 539
    functionLinenumberEnd: 546
    functionName: virtual_mailbox_close
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - container_of
    - virtual_mailbox_close_internal
    - index_storage_mailbox_close
    linkageType: ''
    returnType: void
    signature: void virtual_mailbox_close(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:551,1
    - Dst: virtual_config_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:553,1
    - Dst: index_storage_mailbox_free
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 555
    functionName: virtual_mailbox_free
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_free
    - container_of
    - virtual_config_free
    linkageType: ''
    returnType: void
    signature: void virtual_mailbox_free(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 565
    functionName: virtual_mailbox_create
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int virtual_mailbox_create(struct mailbox *box,\n\t\t       const
      struct mailbox_update *update ATTR_UNUSED,\n\t\t       bool directory ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - box
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 574
    functionName: virtual_mailbox_update
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int virtual_mailbox_update(struct mailbox *box,\n\t\t       const
      struct mailbox_update *update ATTR_UNUSED)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:583,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:590,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:592,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:596,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:605,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:607,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct virtual_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 616
    functionName: virtual_storage_set_have_guid_flags
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_error
    - mailbox_open
    - mailbox_get_status
    - array_get
    - mailbox_get_vname
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: int virtual_storage_set_have_guid_flags(struct virtual_mailbox *mbox)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:624,1
    - Dst: index_storage_get_status
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:626,1
    - Dst: virtual_storage_set_have_guid_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:630,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 640
    functionName: virtual_storage_get_status
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_get_status
    - container_of
    - virtual_storage_set_have_guid_flags
    linkageType: ''
    returnType: int
    signature: "int virtual_storage_get_status(struct mailbox *box,\n\t\t\t   enum
      mailbox_status_items items,\n\t\t\t   struct mailbox_status *status_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:648,1
    - Dst: index_mailbox_get_metadata
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:649,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:651,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:653,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:654,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:657,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 660
    functionName: virtual_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - container_of
    - guid_128_copy
    - index_mailbox_get_metadata
    - mailbox_set_critical
    - i_assert
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int virtual_mailbox_get_metadata(struct mailbox *box,\n\t\t\t     enum
      mailbox_metadata_items items,\n\t\t\t     struct mailbox_metadata *metadata_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox*::notify_callback
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - box
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 666
    functionName: virtual_notify_callback
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - struct mailbox*::notify_callback
    linkageType: ''
    returnType: void
    signature: void virtual_notify_callback(struct mailbox *bbox ATTR_UNUSED, struct
      mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: virtual_notify_callback
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bbox
    argTypes:
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 671
    functionName: virtual_backend_box_changed
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - virtual_notify_callback
    linkageType: ''
    returnType: void
    signature: void virtual_backend_box_changed(struct virtual_backend_box *bbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:675,1
    - Dst: mailbox_list_notify_init
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:676,1
    - Dst: mailbox_list_notify_wait
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bbox
    argTypes:
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 673
    functionDepth: 1
    functionLinenumber: 673
    functionLinenumberEnd: 682
    functionName: virtual_notify_start
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_list_notify_wait
    - i_assert
    - mailbox_list_notify_init
    linkageType: ''
    returnType: int
    signature: int virtual_notify_start(struct virtual_backend_box *bbox)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:687,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:691,1
    - Dst: mailbox_notify_changes_stop
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:693,1
    - Dst: mailbox_list_notify_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:697,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:702,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:703,1
    - Dst: virtual_notify_start
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:713,1
    - Dst: virtual_backend_box_open
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:720,1
    - Dst: mailbox_notify_changes
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:725,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 684
    functionDepth: 4
    functionLinenumber: 684
    functionLinenumberEnd: 729
    functionName: virtual_notify_changes
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - virtual_notify_start
    - container_of
    - virtual_backend_box_open
    - array_count
    - mailbox_list_notify_deinit
    - mailbox_notify_changes
    - array_foreach_modifiable
    - mailbox_notify_changes_stop
    linkageType: ''
    returnType: void
    signature: void virtual_notify_changes(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:736,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bbox
    - uids_r
    argTypes:
    - struct virtual_backend_box*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 731
    functionDepth: 0
    functionLinenumber: 731
    functionLinenumberEnd: 739
    functionName: virtual_uidmap_to_uid_array
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - array_foreach
    linkageType: ''
    returnType: void
    signature: "void virtual_uidmap_to_uid_array(struct virtual_backend_box *bbox,\n\t\t\t
      \   ARRAY_TYPE(seq_range) *uids_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:748,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:751,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:757,1
    - Dst: virtual_backend_box_lookup_name
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:760,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:766,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:768,1
    - Dst: virtual_uidmap_to_uid_array
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:769,1
    - Dst: seq_range_array_intersect
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:770,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:772,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:773,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:776,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:777,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - box
    - backend_mailbox
    - backend_uids
    - virtual_uids_r
    argTypes:
    - struct mailbox*
    - struct mailbox*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 741
    functionDepth: 2
    functionLinenumber: 741
    functionLinenumberEnd: 782
    functionName: virtual_get_virtual_uids
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - seq_range_array_iter_nth
    - seq_range_array_add
    - container_of
    - seq_range_array_iter_init
    - array_get
    - seq_range_array_intersect
    - virtual_uidmap_to_uid_array
    - t_array_init
    - ARRAY_TYPE
    - virtual_backend_box_lookup_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void virtual_get_virtual_uids(struct mailbox *box,\n\t\t\t struct
      mailbox *backend_mailbox,\n\t\t\t const ARRAY_TYPE(seq_range) *backend_uids,\n\t\t\t
      ARRAY_TYPE(seq_range) *virtual_uids_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:791,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:799,1
    - Dst: virtual_backend_box_lookup_name
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:802,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:808,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:809,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:810,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:815,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:817,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:818,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 4
    argNames:
    - box
    - backend_mailbox
    - backend_uids
    - virtual_uids_r
    argTypes:
    - struct mailbox*
    - struct mailbox*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 784
    functionDepth: 2
    functionLinenumber: 784
    functionLinenumberEnd: 822
    functionName: virtual_get_virtual_uid_map
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - seq_range_array_iter_nth
    - container_of
    - seq_range_array_iter_init
    - array_push_back
    - array_get
    - virtual_backend_box_lookup_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void virtual_get_virtual_uid_map(struct mailbox *box,\n\t\t\t    struct
      mailbox *backend_mailbox,\n\t\t\t    const ARRAY_TYPE(seq_range) *backend_uids,\n\t\t\t
      \   ARRAY_TYPE(uint32_t) *virtual_uids_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:830,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:834,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:836,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:837,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - box
    - mailboxes
    - only_with_msgs
    argTypes:
    - struct mailbox*
    - ARRAY_TYPE*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 839
    functionName: virtual_get_virtual_backend_boxes
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - array_get
    - container_of
    - array_count
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void virtual_get_virtual_backend_boxes(struct mailbox *box,\n\t\t\t\t
      \ ARRAY_TYPE(mailboxes) *mailboxes,\n\t\t\t\t  bool only_with_msgs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:848,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:851,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:853,1
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:858,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - box
    - bbox
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 860
    functionName: virtual_get_virtual_backend_last_uid
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - i_panic
    - i_assert
    - container_of
    - array_foreach_elem
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t virtual_get_virtual_backend_last_uid(struct mailbox *box,
      struct mailbox *bbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:868,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:871,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:872,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:876,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - box
    - seq
    - backend_box_r
    - backend_uid_r
    argTypes:
    - struct mailbox*
    - uint32_t
    - struct mailbox**
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 862
    functionDepth: 2
    functionLinenumber: 862
    functionLinenumberEnd: 881
    functionName: virtual_get_virtual_backend_mail_uid
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - virtual_backend_box_lookup
    - i_assert
    - container_of
    - mail_index_lookup_ext
    linkageType: ''
    returnType: void
    signature: "void virtual_get_virtual_backend_mail_uid(struct mailbox *box, uint32_t
      seq,\n\t\t\t\t     struct mailbox **backend_box_r,\n\t\t\t\t     uint32_t *backend_uid_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:886,1
    - Dst: index_storage_is_inconsistent
      Src: /src/dovecot/src/plugins/virtual/virtual-storage.c:891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 892
    functionName: virtual_is_inconsistent
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_is_inconsistent
    - container_of
    linkageType: ''
    returnType: bool
    signature: bool virtual_is_inconsistent(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - reason_r
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - uint32_t
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 905
    functionName: virtual_list_index_has_changed
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int virtual_list_index_has_changed(struct mailbox *box ATTR_UNUSED,\n\t\t\t
      \      struct mail_index_view *list_view ATTR_UNUSED,\n\t\t\t       uint32_t
      seq ATTR_UNUSED, bool quick ATTR_UNUSED,\n\t\t\t       const char **reason_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 907
    functionDepth: 0
    functionLinenumber: 907
    functionLinenumberEnd: 912
    functionName: virtual_list_index_update_sync
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void virtual_list_index_update_sync(struct mailbox *box ATTR_UNUSED,\n\t\t\t
      \      struct mail_index_transaction *trans ATTR_UNUSED,\n\t\t\t       uint32_t
      seq ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:20,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:35,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:36,1
    - Dst: virtual_backend_box_open
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:39,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:40,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:42,1
    - Dst: virtual_transaction_get
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:45,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:46,1
    - Dst: virtual_backend_box_accessed
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:48,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - _t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 16
    functionDepth: 4
    functionLinenumber: 16
    functionLinenumberEnd: 51
    functionName: virtual_save_alloc
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-save.c
    functionUses: 0
    functionsReached:
    - container_of
    - mailbox_get_last_error
    - virtual_backend_box_open
    - virtual_transaction_get
    - mailbox_save_alloc
    - i_strdup
    - i_new
    - i_assert
    - virtual_backend_box_accessed
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      virtual_save_alloc(struct mailbox_transaction_context *_t)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:59,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:66,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:67,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:70,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:71,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:73,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:74,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - src_box
    - src_keywords
    - dest_box
    argTypes:
    - struct mailbox*
    - struct mail_keywords*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 76
    functionName: virtual_copy_keywords
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-save.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - mailbox_keywords_create_valid
    - array_idx_elem
    - t_array_init
    - mailbox_get_open_status
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: struct mail_keywords
    signature: "struct mail_keywords *\nvirtual_copy_keywords(struct mailbox *src_box,\n\t\t
      \     const struct mail_keywords *src_keywords,\n\t\t      struct mailbox *dest_box)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:87,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:90,1
    - Dst: virtual_copy_keywords
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:98,1
    - Dst: mailbox_save_set_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:100,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:104,1
    - Dst: mailbox_save_set_received_date
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:106,1
    - Dst: mailbox_save_set_from_envelope
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:109,1
    - Dst: mailbox_save_set_guid
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:111,1
    - Dst: mailbox_save_set_min_modseq
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:112,1
    - Dst: virtual_mail_set_unattached_backend_mail
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:114,1
    - Dst: mailbox_save_begin
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - _ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 117
    functionName: virtual_save_begin
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-save.c
    functionUses: 0
    functionsReached:
    - mailbox_save_set_min_modseq
    - virtual_mail_set_unattached_backend_mail
    - mailbox_save_set_flags
    - mailbox_save_set_guid
    - virtual_copy_keywords
    - mailbox_save_set_from_envelope
    - mailbox_save_begin
    - mail_index_keywords_unref
    - mail_storage_set_error
    - mailbox_save_set_received_date
    linkageType: ''
    returnType: int
    signature: int virtual_save_begin(struct mail_save_context *_ctx, struct istream
      *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_continue
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: virtual_save_continue
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-save.c
    functionUses: 0
    functionsReached:
    - mailbox_save_continue
    linkageType: ''
    returnType: int
    signature: int virtual_save_continue(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_finish
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:130,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 134
    functionName: virtual_save_finish
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-save.c
    functionUses: 0
    functionsReached:
    - index_save_context_free
    - mailbox_save_finish
    linkageType: ''
    returnType: int
    signature: int virtual_save_finish(struct mail_save_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:141,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 144
    functionName: virtual_save_cancel
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-save.c
    functionUses: 0
    functionsReached:
    - i_free_and_null
    - mailbox_save_cancel
    linkageType: ''
    returnType: void
    signature: void virtual_save_cancel(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: virtual_save_cancel
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:150,1
    - Dst: mailbox_save_context_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:151,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/virtual/virtual-save.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 153
    functionName: virtual_save_free
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-save.c
    functionUses: 2
    functionsReached:
    - mailbox_save_context_deinit
    - virtual_save_cancel
    - i_free
    linkageType: ''
    returnType: void
    signature: void virtual_save_free(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:48,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:49,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:50,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:54,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:54,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:54,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:55,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:57,1
    - Dst: imap_parser_finish_line
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:58,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:61,1
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:61,1
    - Dst: mail_search_parser_init_imap
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:63,1
    - Dst: mail_search_build
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:64,1
    - Dst: mail_search_register_get_imap4rev1
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:64,1
    - Dst: mail_search_parser_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:67,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:70,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - rule
    - error_r
    argTypes:
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 73
    functionName: virtual_search_args_parse
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - imap_parser_get_error
    - mail_search_build_add_all
    - mail_search_parser_deinit
    - imap_parser_finish_line
    - str_data
    - str_len
    - imap_parser_unref
    - imap_parser_create
    - i_stream_read
    - mail_search_parser_init_imap
    - mail_search_build_init
    - mail_search_build
    - t_strdup
    - i_stream_create_from_data
    - mail_search_register_get_imap4rev1
    - i_stream_destroy
    linkageType: ''
    returnType: struct mail_search_args
    signature: 'struct mail_search_args *

      virtual_search_args_parse(const string_t *rule, const char **error_r)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:84,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:85,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:85,1
    - Dst: crc32_str_more
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:90,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:90,1
    - Dst: virtual_search_args_parse
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:91,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:92,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:94,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:95,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:102,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:105,1
    - Dst: mail_search_args_ref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:106,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:109,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct virtual_parse_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 113
    functionName: virtual_config_add_rule
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - array_get
    - virtual_search_args_parse
    - array_count
    - mail_search_args_ref
    - str_truncate
    - mail_search_args_unref
    - i_assert
    - t_strconcat
    - crc32_str_more
    linkageType: ''
    returnType: int
    signature: int virtual_config_add_rule(struct virtual_parse_context *ctx, const
      char **error_r)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:126,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:131,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:132,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:137,1
    - Dst: virtual_config_add_rule
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:138,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:141,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:142,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:148,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:150,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:152,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:175,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:179,1
    - Dst: imap_metadata_verify_entry_name
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:181,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:187,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:188,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:189,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:195,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:196,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:197,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:199,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:203,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:210,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 73
    argCount: 3
    argNames:
    - ctx
    - line
    - error_r
    argTypes:
    - struct virtual_parse_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 212
    functionName: virtual_config_parse_line
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - p_strdup
    - p_strdup_until
    - virtual_config_add_rule
    - str_append_c
    - p_new
    - str_len
    - uni_utf8_str_is_valid
    - imap_metadata_verify_entry_name
    - imap_match_init
    - mail_namespace_find
    - t_strdup_printf
    - strcasecmp
    - array_push_back
    - array_count
    - str_append
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: int
    signature: "int virtual_config_parse_line(struct virtual_parse_context *ctx, const
      char *line,\n\t\t\t  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:218,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:223,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:224,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:225,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:226,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:238,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_parse_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 240
    functionName: virtual_mailbox_get_list_patterns
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_array_init
    - array_push_back
    - array_get_modifiable
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: void virtual_mailbox_get_list_patterns(struct virtual_parse_context
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:249,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:252,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:253,1
    - Dst: I_MIN
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:253,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:254,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:255,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:269,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:270,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - mbox
    - wildcard_boxes
    - neg_boxes
    - metadata_boxes
    argTypes:
    - struct virtual_mailbox*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 275
    functionName: separate_wildcard_mailboxes
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_push_back
    - array_get_modifiable
    - I_MIN
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: "void separate_wildcard_mailboxes(struct virtual_mailbox *mbox,\n\t\t\t
      \   ARRAY_TYPE(virtual_backend_box) *wildcard_boxes,\n\t\t\t    ARRAY_TYPE(virtual_backend_box)
      *neg_boxes,\n\t\t\t    ARRAY_TYPE(virtual_backend_box) *metadata_boxes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:283,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:285,1
    - Dst: mail_search_args_ref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:288,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - wbox
    - name
    argTypes:
    - struct virtual_parse_context*
    - struct virtual_backend_box*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 290
    functionName: virtual_config_copy_expanded
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - mail_search_args_ref
    - p_new
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void virtual_config_copy_expanded(struct virtual_parse_context *ctx,\n\t\t\t\t\t
      struct virtual_backend_box *wbox,\n\t\t\t\t\t const char *name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - config_ns
    - iter_ns
    argTypes:
    - struct mail_namespace*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 312
    functionName: virtual_ns_match
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool virtual_ns_match(struct mail_namespace *config_ns,\n\t\t\t     struct
      mail_namespace *iter_ns)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:321,1
    - Dst: virtual_ns_match
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:324,1
    - Dst: imap_match
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:325,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - info
    - boxes_arr
    - idx_r
    argTypes:
    - struct mailbox_info*
    - ARRAY_TYPE*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 338
    functionName: virtual_config_match
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - virtual_ns_match
    - imap_match
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool virtual_config_match(const struct mailbox_info *info,\n\t\t\t\t
      ARRAY_TYPE(virtual_backend_box) *boxes_arr,\n\t\t\t\t unsigned int *idx_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_metadata_transaction_begin
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:349,1
    - Dst: imap_metadata_get
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:350,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:352,1
    - Dst: imap_metadata_transaction_get_last_error
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:352,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:354,1
    - Dst: imap_metadata_transaction_commit
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:357,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - box
    - bbox
    - error_r
    argTypes:
    - struct mailbox*
    - struct virtual_backend_box*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 340
    functionDepth: 3
    functionLinenumber: 340
    functionLinenumberEnd: 363
    functionName: virtual_config_box_metadata_match
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - wildcard_match
    - t_strdup
    - imap_metadata_transaction_begin
    - imap_metadata_get
    - imap_metadata_transaction_get_last_error
    - imap_metadata_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int virtual_config_box_metadata_match(struct mailbox *box,\n\t\t\t\t\t
      \    struct virtual_backend_box *bbox,\n\t\t\t\t\t     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:375,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:379,1
    - Dst: virtual_config_box_metadata_match
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:382,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:385,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - info
    - boxes_arr
    - error_r
    argTypes:
    - struct mailbox_info*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 365
    functionDepth: 4
    functionLinenumber: 365
    functionLinenumberEnd: 387
    functionName: virtual_config_metadata_match
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - virtual_config_box_metadata_match
    - mailbox_free
    - mailbox_alloc
    linkageType: ''
    returnType: int
    signature: "int virtual_config_metadata_match(const struct mailbox_info *info,\n\t\t\t
      \     ARRAY_TYPE(virtual_backend_box) *boxes_arr,\n\t\t\t      const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:397,1
    - Dst: separate_wildcard_mailboxes
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:405,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:409,1
    - Dst: t_new
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:415,1
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:420,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:422,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:428,1
    - Dst: virtual_config_match
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:433,1
    - Dst: virtual_config_match
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:434,1
    - Dst: virtual_backend_box_lookup_name
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:435,1
    - Dst: virtual_config_metadata_match
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:437,1
    - Dst: virtual_config_copy_expanded
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:441,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:447,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:448,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:449,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:450,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:451,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:452,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:453,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct virtual_parse_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 389
    functionDepth: 5
    functionLinenumber: 389
    functionLinenumberEnd: 457
    functionName: virtual_config_expand_wildcards
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_last_internal_error
    - t_new
    - virtual_config_match
    - separate_wildcard_mailboxes
    - mailbox_list_iter_deinit
    - array_get_modifiable
    - mailbox_list_iter_next
    - virtual_config_copy_expanded
    - array_foreach
    - mailbox_list_iter_init_namespaces
    - ARRAY_TYPE
    - virtual_backend_box_lookup_name
    - mail_search_args_unref
    - virtual_config_metadata_match
    linkageType: ''
    returnType: int
    signature: "int virtual_config_expand_wildcards(struct virtual_parse_context *ctx,\n\t\t\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:465,1
    - Dst: mail_search_args_dup
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:468,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct virtual_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 471
    functionName: virtual_config_search_args_dup
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - mail_search_args_unref
    - mail_search_args_dup
    linkageType: ''
    returnType: void
    signature: void virtual_config_search_args_dup(struct virtual_mailbox *mbox)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:481,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:484,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:485,1
    - Dst: open
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:486,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:488,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:489,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:490,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:492,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:495,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:496,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:501,1
    - Dst: mail_namespaces_get_root_sep
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:502,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:505,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:506,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:507,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:508,1
    - Dst: virtual_config_add_rule
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:513,1
    - Dst: virtual_config_parse_line
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:515,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:517,1
    - Dst: virtual_config_add_rule
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:524,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:526,1
    - Dst: virtual_mailbox_get_list_patterns
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:532,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:535,1
    - Dst: virtual_config_expand_wildcards
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:536,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:538,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:539,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:543,1
    - Dst: virtual_config_search_args_dup
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:548,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:549,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:550,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct virtual_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 473
    functionDepth: 6
    functionLinenumber: 473
    functionLinenumberEnd: 552
    functionName: virtual_config_read
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - event_reason_end
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mail_storage_set_error
    - t_str_new
    - i_close_fd
    - i_stream_read_next_line
    - i_stream_set_return_partial_line
    - ENOACCESS
    - mail_namespaces_get_root_sep
    - virtual_config_search_args_dup
    - i_zero
    - mail_error_eacces_msg
    - virtual_config_add_rule
    - open
    - event_reason_begin
    - virtual_config_expand_wildcards
    - mailbox_get_path
    - i_stream_create_fd
    - virtual_mailbox_get_list_patterns
    - i_stream_unref
    - mailbox_set_critical
    - virtual_config_parse_line
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int virtual_config_read(struct virtual_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:559,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:564,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:567,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-config.c:569,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct virtual_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 570
    functionName: virtual_config_free
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-config.c
    functionUses: 1
    functionsReached:
    - array_get_modifiable
    - array_is_created
    - mail_search_args_unref
    - array_free
    linkageType: ''
    returnType: void
    signature: void virtual_config_free(struct virtual_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 64
    functionName: virtual_sync_set_uidvalidity
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_update_header
    linkageType: ''
    returnType: void
    signature: void virtual_sync_set_uidvalidity(struct virtual_sync_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:74,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:81,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:84,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:85,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:88,1
    - Dst: mail_index_keywords_create
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:89,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:90,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - ctx
    - bbox
    - vseq
    - real_uid
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 92
    functionName: virtual_sync_external_flags
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - mail_index_update_keywords
    - ENUM_NEGATE
    - mail_index_update_flags
    - mail_set_uid
    - mail_get_flags
    - mail_index_keywords_unref
    - mail_index_keywords_create
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_external_flags(struct virtual_sync_context *ctx,\n\t\t\t\t\tstruct
      virtual_backend_box *bbox,\n\t\t\t\t\tuint32_t vseq, uint32_t real_uid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 109
    functionName: virtual_sync_mail_uid_cmp
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int virtual_sync_mail_uid_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:117,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bbox
    argTypes:
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 120
    functionName: virtual_backend_box_sync_mail_set
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mail_alloc
    - mailbox_transaction_begin
    linkageType: ''
    returnType: void
    signature: void virtual_backend_box_sync_mail_set(struct virtual_backend_box *bbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - b1
    - b2
    argTypes:
    - struct virtual_backend_box**
    - struct virtual_backend_box**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: bbox_mailbox_id_cmp
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bbox_mailbox_id_cmp(struct virtual_backend_box *const *b1,\n\t\t\t
      \      struct virtual_backend_box *const *b2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: virtual_backend_box_lookup_name
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:136,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:143,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - mbox
    - name
    - bbox_r
    argTypes:
    - struct virtual_mailbox*
    - char*
    - struct virtual_backend_box**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 147
    functionName: virtual_sync_get_backend_box
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - virtual_backend_box_lookup_name
    - t_strdup_printf
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int virtual_sync_get_backend_box(struct virtual_mailbox *mbox, const
      char *name,\n\t\t\t     struct virtual_backend_box **bbox_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:155,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:162,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:170,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:176,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:182,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:189,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:200,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:208,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:209,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:213,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - mbox
    - view
    - ext_hdr
    argTypes:
    - struct virtual_mailbox*
    - struct mail_index_view*
    - struct virtual_mail_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 217
    functionName: virtual_mailbox_ext2_header_read
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - array_foreach_elem
    - guid_128_copy
    - e_error
    - mail_index_get_header_ext
    - e_warning
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: bool
    signature: "bool virtual_mailbox_ext2_header_read(struct virtual_mailbox *mbox,\n\t\t\t\t
      struct mail_index_view *view,\n\t\t\t\t const struct virtual_mail_index_header
      *ext_hdr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:224,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:237,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:238,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:259,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:262,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:271,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:287,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:294,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:300,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:309,1
    - Dst: t_strndup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:310,1
    - Dst: virtual_sync_get_backend_box
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:311,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 64
    argCount: 3
    argNames:
    - mbox
    - view
    - broken_r
    argTypes:
    - struct virtual_mailbox*
    - struct mail_index_view*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 331
    functionName: virtual_mailbox_ext_header_read
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 1
    functionsReached:
    - mailbox_get_path
    - virtual_sync_get_backend_box
    - mail_index_get_header
    - t_strndup
    - guid_128_copy
    - e_error
    - mail_index_get_header_ext
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: "int virtual_mailbox_ext_header_read(struct virtual_mailbox *mbox,\n\t\t\t\t
      \   struct mail_index_view *view,\n\t\t\t\t    bool *broken_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:373,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:377,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:378,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:379,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:386,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:387,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:395,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:397,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:400,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:405,1
    - Dst: buffer_write
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:409,1
    - Dst: buffer_write
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:410,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:412,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:413,1
    - Dst: buffer_write
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:424,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:426,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:429,1
    - Dst: mail_index_ext_resize
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:432,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:437,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:441,1
    - Dst: mail_index_ext_resize
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:444,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:447,1
    - Dst: buffer_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:449,1
    - Dst: buffer_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:450,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 451
    functionName: virtual_sync_ext_header_rewrite
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_append
    - array_get_modifiable
    - buffer_write
    - buffer_create_dynamic
    - strlen
    - guid_128_copy
    - mail_index_update_header_ext
    - mail_index_get_header_ext
    - mail_index_ext_resize
    - buffer_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void virtual_sync_ext_header_rewrite(struct virtual_sync_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:462,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 468
    functionName: virtual_sync_ext_header_update
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_update_header_ext
    linkageType: ''
    returnType: void
    signature: void virtual_sync_ext_header_update(struct virtual_sync_context *ctx)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:490,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:498,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:502,1
    - Dst: virtual_backend_box_open
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:506,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:507,1
    - Dst: virtual_backend_box_accessed
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:512,1
    - Dst: virtual_backend_box_sync_mail_set
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:515,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:516,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:523,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:528,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:533,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:541,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:547,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:549,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 2
    argNames:
    - ctx
    - sync_rec
    argTypes:
    - struct virtual_sync_context*
    - struct mail_index_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 470
    functionDepth: 4
    functionLinenumber: 470
    functionLinenumberEnd: 554
    functionName: virtual_sync_index_rec
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - virtual_box_copy_error
    - virtual_backend_box_open
    - mail_expunge
    - mail_update_keywords
    - mailbox_keywords_unref
    - mail_index_lookup_seq_range
    - mail_index_lookup_ext
    - mail_set_uid
    - mail_update_flags
    - virtual_backend_box_lookup
    - mailbox_keywords_create_valid
    - virtual_backend_box_sync_mail_set
    - virtual_backend_box_accessed
    linkageType: ''
    returnType: int
    signature: "int virtual_sync_index_rec(struct virtual_sync_context *ctx,\n\t\t\t\t
      \ const struct mail_index_sync_rec *sync_rec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:561,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:562,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:563,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:564,1
    - Dst: virtual_sync_index_rec
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 556
    functionDepth: 5
    functionLinenumber: 556
    functionLinenumberEnd: 569
    functionName: virtual_sync_index_changes
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_next
    - virtual_sync_index_rec
    - mail_index_get_keywords
    - array_count
    - array_front
    linkageType: ''
    returnType: int
    signature: int virtual_sync_index_changes(struct virtual_sync_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:578,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:580,1
    - Dst: virtual_sync_set_uidvalidity
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:584,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:587,1
    - Dst: mailbox_recent_flags_set_seqs
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:589,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:593,1
    - Dst: virtual_sync_ext_header_rewrite
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:597,1
    - Dst: virtual_sync_ext_header_update
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:600,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:603,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 571
    functionDepth: 4
    functionLinenumber: 571
    functionLinenumberEnd: 604
    functionName: virtual_sync_index_finish
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_recent_flags_set_seqs
    - virtual_sync_set_uidvalidity
    - mail_index_lookup_seq_range
    - mail_index_get_header
    - mail_index_transaction_open_updated_view
    - virtual_sync_ext_header_rewrite
    - mailbox_sync_notify
    - virtual_sync_ext_header_update
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void virtual_sync_index_finish(struct virtual_sync_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:615,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:618,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:621,1
    - Dst: mailbox_search_result_save
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:628,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:631,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:632,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:633,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:635,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:637,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:639,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - bbox
    argTypes:
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 641
    functionName: virtual_sync_backend_box_init
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_search_result_save
    - mailbox_transaction_begin
    - array_push_back
    - mail_search_args_init
    - mailbox_search_deinit
    - array_clear
    - mailbox_transaction_commit
    - mailbox_search_init
    - mailbox_search_next
    linkageType: ''
    returnType: int
    signature: int virtual_sync_backend_box_init(struct virtual_backend_box *bbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - uidp
    - uidmap
    argTypes:
    - uint32_t*
    - struct virtual_backend_uidmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 649
    functionName: virtual_backend_uidmap_bsearch_cmp
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int virtual_backend_uidmap_bsearch_cmp(const uint32_t *uidp,\n\t\t\t\t
      \  const struct virtual_backend_uidmap *uidmap)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:661,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:666,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:667,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:670,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:672,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:680,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:684,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:685,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:690,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:693,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:696,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - bbox
    - removed_uids
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 697
    functionName: virtual_sync_mailbox_box_remove
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - array_delete
    - i_unreached
    - array_get_modifiable
    - mail_index_lookup_seq
    - array_get
    - i_assert
    - array_bsearch_insert_pos
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_mailbox_box_remove(struct virtual_sync_context *ctx,\n\t\t\t\tstruct
      virtual_backend_box *bbox,\n\t\t\t\tconst ARRAY_TYPE(seq_range) *removed_uids)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:710,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:713,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:717,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:722,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:725,1
    - Dst: array_idx_clear
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:729,1
    - Dst: array_copy
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:731,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:734,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:738,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:746,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:753,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - ctx
    - bbox
    - added_uids_arr
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 699
    functionDepth: 1
    functionLinenumber: 699
    functionLinenumberEnd: 757
    functionName: virtual_sync_mailbox_box_add
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_unreached
    - array_get_modifiable
    - array_push_back
    - array_get
    - array_copy
    - array_idx_clear
    - i_assert
    - seq_range_count
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_mailbox_box_add(struct virtual_sync_context *ctx,\n\t\t\t
      \    struct virtual_backend_box *bbox,\n\t\t\t     const ARRAY_TYPE(seq_range)
      *added_uids_arr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:769,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:770,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:771,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:775,1
    - Dst: virtual_sync_external_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:786,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - bbox
    - uids_arr
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 759
    functionDepth: 5
    functionLinenumber: 759
    functionLinenumberEnd: 789
    functionName: virtual_sync_mailbox_box_update_flags
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - mail_index_lookup_seq
    - virtual_sync_external_flags
    - seq_range_array_iter_init
    - array_bsearch
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_mailbox_box_update_flags(struct virtual_sync_context
      *ctx,\n\t\t\t\t      struct virtual_backend_box *bbox,\n\t\t\t\t      const
      ARRAY_TYPE(seq_range) *uids_arr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - u1
    - u2
    argTypes:
    - struct virtual_backend_uidmap*
    - struct virtual_backend_uidmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 791
    functionDepth: 0
    functionLinenumber: 791
    functionLinenumberEnd: 799
    functionName: virtual_backend_uidmap_cmp
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int virtual_backend_uidmap_cmp(const struct virtual_backend_uidmap
      *u1,\n\t\t\t\t      const struct virtual_backend_uidmap *u2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bbox
    argTypes:
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 806
    functionName: virtual_sync_bbox_uids_sort
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - array_sort
    linkageType: ''
    returnType: void
    signature: void virtual_sync_bbox_uids_sort(struct virtual_backend_box *bbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:813,1
    - Dst: virtual_sync_bbox_uids_sort
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:816,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct virtual_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 808
    functionDepth: 2
    functionLinenumber: 808
    functionLinenumberEnd: 818
    functionName: virtual_sync_backend_boxes_sort_uids
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - array_get
    - virtual_sync_bbox_uids_sort
    linkageType: ''
    returnType: void
    signature: void virtual_sync_backend_boxes_sort_uids(struct virtual_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:830,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:832,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:835,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:839,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:840,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:842,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - ctx
    - bbox
    - real_uid
    - result
    - vseq
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - uint32_t
    - struct mail_search_result*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 843
    functionName: virtual_sync_backend_add_vmsgs_results
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - seq_range_array_add
    - mail_index_lookup_uid
    - mail_index_lookup_seq
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_backend_add_vmsgs_results(struct virtual_sync_context
      *ctx,\n\t\t\t\t       struct virtual_backend_box *bbox,\n                                       uint32_t
      real_uid,\n                                       struct mail_search_result
      *result,\n                                       const uint32_t vseq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:857,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:859,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:860,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:861,1
    - Dst: virtual_sync_backend_add_vmsgs_results
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:874,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:883,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:885,1
    - Dst: virtual_sync_backend_add_vmsgs_results
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:889,1
    - Dst: virtual_sync_bbox_uids_sort
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:894,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - bbox
    - result
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - struct mail_search_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 845
    functionDepth: 2
    functionLinenumber: 845
    functionLinenumberEnd: 895
    functionName: virtual_sync_backend_handle_old_vmsgs
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - virtual_sync_bbox_uids_sort
    - array_get
    - mail_index_lookup_ext
    - array_clear
    - virtual_sync_backend_add_vmsgs_results
    - array_is_created
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_backend_handle_old_vmsgs(struct virtual_sync_context
      *ctx,\n\t\t\t\t      struct virtual_backend_box *bbox,\n\t\t\t\t      struct
      mail_search_result *result)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:905,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:906,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:913,1
    - Dst: mailbox_search_result_alloc
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:916,1
    - Dst: mailbox_search_result_initial_done
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:918,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:919,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:919,1
    - Dst: virtual_sync_backend_handle_old_vmsgs
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:920,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:921,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:924,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:924,1
    - Dst: array_append_array
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:925,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:926,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:933,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:936,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:938,1
    - Dst: I_MIN
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:938,1
    - Dst: mail_index_modseq_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:941,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:943,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:944,1
    - Dst: index_search_result_update_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:951,1
    - Dst: index_search_result_update_appends
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:952,1
    - Dst: mailbox_search_result_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:953,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:957,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:958,1
    - Dst: mailbox_search_result_sync
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:959,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:960,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:961,1
    - Dst: virtual_sync_mailbox_box_remove
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:962,1
    - Dst: virtual_sync_mailbox_box_remove
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:965,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:968,1
    - Dst: virtual_sync_mailbox_box_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:971,1
    - Dst: virtual_sync_mailbox_box_update_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:972,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 2
    argNames:
    - ctx
    - bbox
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 897
    functionDepth: 6
    functionLinenumber: 897
    functionLinenumberEnd: 976
    functionName: virtual_sync_backend_box_continue
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_uid
    - mail_index_lookup_seq_range
    - virtual_sync_mailbox_box_add
    - array_count
    - index_search_result_update_flags
    - virtual_sync_mailbox_box_update_flags
    - mailbox_search_result_initial_done
    - seq_range_array_merge
    - I_MIN
    - mail_search_args_init
    - mail_index_modseq_lookup
    - virtual_sync_backend_handle_old_vmsgs
    - mailbox_search_result_alloc
    - array_append_array
    - index_search_result_update_appends
    - array_clear
    - i_assert
    - seq_range_array_add
    - mail_index_modseq_get_highest
    - virtual_sync_mailbox_box_remove
    - mailbox_search_result_free
    - seq_range_array_remove_seq_range
    - t_array_init
    - ARRAY_TYPE
    - array_is_created
    - mailbox_search_result_sync
    linkageType: ''
    returnType: int
    signature: "int virtual_sync_backend_box_continue(struct virtual_sync_context
      *ctx,\n\t\t\t\t\t     struct virtual_backend_box *bbox)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:981,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:987,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:988,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:991,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:994,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:998,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:998,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1005,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1008,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1011,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - bbox
    - added_uids
    argTypes:
    - struct virtual_backend_box*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 1012
    functionName: virtual_sync_drop_existing
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - seq_range_array_add
    - seq_range_array_iter_init
    - array_get_modifiable
    - seq_range_array_remove_seq_range
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_drop_existing(struct virtual_backend_box *bbox,\n\t\t\t\t
      \      ARRAY_TYPE(seq_range) *added_uids)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1017,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1024,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1025,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1028,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1031,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1031,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1032,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1039,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1042,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1049,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1050,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1052,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - bbox
    - removed_uids
    argTypes:
    - struct virtual_backend_box*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1053
    functionName: virtual_sync_drop_nonexistent
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - seq_range_array_add
    - seq_range_array_iter_init
    - array_get_modifiable
    - seq_range_array_remove_seq_range
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_drop_nonexistent(struct virtual_backend_box *bbox,\n\t\t\t\t\t
      \ ARRAY_TYPE(seq_range) *removed_uids)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1058,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1061,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1062,1
    - Dst: mailbox_search_result_sync
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1064,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1066,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1067,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1069,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1071,1
    - Dst: virtual_sync_drop_existing
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1074,1
    - Dst: virtual_sync_drop_nonexistent
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1075,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1080,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1081,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1083,1
    - Dst: array_append_array
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1084,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1085,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1087,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1095,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1096,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1098,1
    - Dst: virtual_sync_mailbox_box_remove
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1100,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1103,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1105,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1107,1
    - Dst: virtual_sync_mailbox_box_remove
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1109,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1111,1
    - Dst: virtual_sync_mailbox_box_remove
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1113,1
    - Dst: virtual_sync_mailbox_box_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1115,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - bbox
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1055
    functionDepth: 3
    functionLinenumber: 1055
    functionLinenumberEnd: 1116
    functionName: virtual_sync_mailbox_box_update
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - array_append_array
    - seq_range_array_merge
    - virtual_sync_mailbox_box_remove
    - virtual_sync_mailbox_box_add
    - seq_range_array_remove_seq_range
    - array_count
    - virtual_sync_drop_nonexistent
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - array_is_created
    - mailbox_search_result_sync
    - virtual_sync_drop_existing
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_mailbox_box_update(struct virtual_sync_context *ctx,\n\t\t\t\t\t
      \   struct virtual_backend_box *bbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1127,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1128,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1129,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - bbox
    - sync_rec
    - idx1_r
    - idx2_r
    argTypes:
    - struct virtual_backend_box*
    - struct mailbox_sync_rec*
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1118
    functionDepth: 1
    functionLinenumber: 1118
    functionLinenumberEnd: 1141
    functionName: virtual_sync_find_seqs
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_bsearch_insert_pos
    - mail_index_lookup_uid
    linkageType: ''
    returnType: bool
    signature: "bool virtual_sync_find_seqs(struct virtual_backend_box *bbox,\n\t\t\t\t
      \  const struct mailbox_sync_rec *sync_rec,\n\t\t\t\t   unsigned int *idx1_r,\n\t\t\t\t
      \  unsigned int *idx2_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1151,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1152,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1156,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1159,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - bbox
    - sync_rec
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - struct mailbox_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1165
    functionName: virtual_sync_expunge_add
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_bsearch_insert_pos
    - seq_range_array_add
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_expunge_add(struct virtual_sync_context *ctx,\n\t\t\t\t
      \    struct virtual_backend_box *bbox,\n\t\t\t\t     const struct mailbox_sync_rec
      *sync_rec)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_sync_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1178,1
    - Dst: virtual_backend_box_sync_mail_set
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1179,1
    - Dst: mailbox_sync_next
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1180,1
    - Dst: virtual_sync_expunge_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1187,1
    - Dst: virtual_sync_find_seqs
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1190,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1193,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1200,1
    - Dst: virtual_sync_external_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1207,1
    - Dst: mailbox_sync_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1215,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1216,1
    - Dst: virtual_sync_backend_box_deleted
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1219,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - bbox
    - sync_flags
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1167
    functionDepth: 5
    functionLinenumber: 1167
    functionLinenumberEnd: 1223
    functionName: virtual_sync_backend_box_sync
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - virtual_sync_find_seqs
    - virtual_sync_expunge_add
    - mail_index_lookup_seq
    - virtual_sync_external_flags
    - mailbox_sync_deinit
    - virtual_sync_backend_box_deleted
    - mailbox_sync_next
    - mailbox_sync_init
    - array_front
    - virtual_backend_box_sync_mail_set
    linkageType: ''
    returnType: int
    signature: "int virtual_sync_backend_box_sync(struct virtual_sync_context *ctx,\n\t\t\t\t\t
      struct virtual_backend_box *bbox,\n\t\t\t\t\t enum mailbox_sync_flags sync_flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_equals
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1231,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1232,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1233,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1234,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1238,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1243,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - bbox
    - status
    - metadata
    - reason_r
    argTypes:
    - struct virtual_backend_box*
    - struct mailbox_status*
    - struct mailbox_metadata*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1225
    functionDepth: 1
    functionLinenumber: 1225
    functionLinenumberEnd: 1254
    functionName: virtual_bbox_mailbox_equals
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - guid_128_to_string
    - t_strdup_printf
    - guid_128_equals
    linkageType: ''
    returnType: bool
    signature: "bool virtual_bbox_mailbox_equals(struct virtual_backend_box *bbox,\n\t\t\t
      \   const struct mailbox_status *status,\n\t\t\t    struct mailbox_metadata
      *metadata,\n\t\t\t    const char **reason_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1270,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1273,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1276,1
    - Dst: virtual_bbox_mailbox_equals
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1284,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1293,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1300,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1305,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1306,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1308,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1313,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1315,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1317,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - bbox
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1256
    functionDepth: 2
    functionLinenumber: 1256
    functionLinenumberEnd: 1320
    functionName: virtual_sync_backend_ext_header
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - CONST_PTR_OFFSET
    - virtual_bbox_mailbox_equals
    - guid_128_copy
    - mail_index_update_header_ext
    - array_count
    - mailbox_get_open_status
    - i_assert
    - mailbox_get_metadata
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_backend_ext_header(struct virtual_sync_context *ctx,\n\t\t\t\t\t
      \   struct virtual_backend_box *bbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1325,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1331,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1332,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1333,1
    - Dst: virtual_sync_mailbox_box_remove
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - bbox
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1322
    functionDepth: 3
    functionLinenumber: 1322
    functionLinenumberEnd: 1337
    functionName: virtual_sync_backend_box_deleted
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 1
    functionsReached:
    - seq_range_array_add
    - virtual_sync_mailbox_box_remove
    - array_foreach
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_backend_box_deleted(struct virtual_sync_context
      *ctx,\n\t\t\t\t\t     struct virtual_backend_box *bbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: virtual_backend_box_open
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1347,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1349,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1351,1
    - Dst: virtual_sync_backend_box_deleted
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1354,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - bbox
    - sync_flags
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1339
    functionDepth: 4
    functionLinenumber: 1339
    functionLinenumberEnd: 1358
    functionName: virtual_try_open_and_sync_backend_box
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - virtual_sync_backend_box_deleted
    - virtual_backend_box_open
    - mailbox_sync
    linkageType: ''
    returnType: int
    signature: "int virtual_try_open_and_sync_backend_box(struct virtual_sync_context
      *ctx,\n\t\t\t\t      struct virtual_backend_box *bbox,\n\t\t\t\t      enum mailbox_sync_flags
      sync_flags)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: virtual_backend_box_sync_mail_unset
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1373,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1387,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1387,1
    - Dst: virtual_try_open_and_sync_backend_box
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1392,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1397,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1400,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1402,1
    - Dst: virtual_sync_backend_box_deleted
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1405,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1408,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1410,1
    - Dst: virtual_bbox_mailbox_equals
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1413,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1419,1
    - Dst: virtual_sync_backend_handle_old_vmsgs
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1420,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1423,1
    - Dst: virtual_try_open_and_sync_backend_box
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1427,1
    - Dst: virtual_backend_box_sync_mail_set
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1431,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1433,1
    - Dst: virtual_sync_backend_box_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1437,1
    - Dst: virtual_sync_backend_box_continue
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1440,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1442,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1445,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1446,1
    - Dst: virtual_sync_backend_box_sync
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1447,1
    - Dst: virtual_sync_mailbox_box_update
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1449,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1451,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 49
    argCount: 2
    argNames:
    - ctx
    - bbox
    argTypes:
    - struct virtual_sync_context*
    - struct virtual_backend_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1360
    functionDepth: 7
    functionLinenumber: 1360
    functionLinenumberEnd: 1452
    functionName: virtual_sync_backend_box
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_count
    - virtual_sync_backend_box_deleted
    - virtual_sync_backend_handle_old_vmsgs
    - virtual_try_open_and_sync_backend_box
    - virtual_backend_box_sync_mail_set
    - array_free
    - virtual_sync_backend_box_init
    - virtual_sync_backend_box_continue
    - mailbox_get_status
    - virtual_bbox_mailbox_equals
    - virtual_backend_box_sync_mail_unset
    - virtual_sync_backend_box_sync
    - i_assert
    - mailbox_get_metadata
    - mailbox_get_last_mail_error
    - e_debug
    - guid_128_copy
    - guid_128_equals
    - virtual_sync_mailbox_box_update
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int virtual_sync_backend_box(struct virtual_sync_context *ctx,\n\t\t\t\t
      \   struct virtual_backend_box *bbox)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1470,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1476,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1478,1
    - Dst: qsort
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1484,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1488,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1498,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1500,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1505,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1508,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1514,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1523,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1526,1
    - Dst: virtual_sync_external_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1534,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1539,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1544,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1458
    functionDepth: 5
    functionLinenumber: 1458
    functionLinenumberEnd: 1546
    functionName: virtual_sync_backend_map_uids
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_lookup_uid
    - array_push_back
    - array_get_modifiable
    - virtual_sync_external_flags
    - mail_index_lookup_ext
    - virtual_backend_box_lookup
    - i_new
    - qsort
    - i_free
    - mail_index_view_get_messages_count
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void virtual_sync_backend_map_uids(struct virtual_sync_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1557,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1558,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1566,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1569,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1548
    functionDepth: 1
    functionLinenumber: 1548
    functionLinenumberEnd: 1572
    functionName: virtual_sync_new_backend_boxes
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_get
    - array_push_back
    - array_get_modifiable
    linkageType: ''
    returnType: void
    signature: void virtual_sync_new_backend_boxes(struct virtual_sync_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - add1
    - add2
    argTypes:
    - struct virtual_add_record*
    - struct virtual_add_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1574
    functionDepth: 0
    functionLinenumber: 1574
    functionLinenumberEnd: 1593
    functionName: virtual_add_record_cmp
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int virtual_add_record_cmp(const struct virtual_add_record *add1,\n\t\t\t\t
      \ const struct virtual_add_record *add2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1603,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1616,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1618,1
    - Dst: virtual_backend_box_open
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1620,1
    - Dst: virtual_backend_box_sync_mail_set
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1622,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1624,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1628,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1637,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1595
    functionDepth: 4
    functionLinenumber: 1595
    functionLinenumberEnd: 1639
    functionName: virtual_sync_backend_sort_new
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - array_sort
    - virtual_backend_box_open
    - i_unreached
    - array_get_modifiable
    - mail_set_uid
    - virtual_backend_box_lookup
    - mail_get_received_date
    - virtual_backend_box_sync_mail_set
    linkageType: ''
    returnType: int
    signature: int virtual_sync_backend_sort_new(struct virtual_sync_context *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1650,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1653,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1654,1
    - Dst: virtual_sync_backend_sort_new
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1665,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1672,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1675,1
    - Dst: virtual_backend_box_open
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1678,1
    - Dst: virtual_backend_box_sync_mail_set
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1680,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1683,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1684,1
    - Dst: virtual_sync_external_flags
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1686,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1691,1
    - Dst: mail_index_append_finish_uids
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1692,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1693,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1693,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1699,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1702,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1707,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1710,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1711,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1712,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1641
    functionDepth: 5
    functionLinenumber: 1641
    functionLinenumberEnd: 1717
    functionName: virtual_sync_backend_add_new
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - i_assert
    - virtual_backend_box_open
    - array_idx_modifiable
    - i_unreached
    - array_get_modifiable
    - virtual_sync_external_flags
    - mail_index_get_header
    - virtual_sync_backend_sort_new
    - mail_index_update_ext
    - mail_index_append_finish_uids
    - virtual_backend_box_lookup
    - t_array_init
    - ARRAY_TYPE
    - virtual_backend_box_sync_mail_set
    - seq_range_count
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: int
    signature: int virtual_sync_backend_add_new(struct virtual_sync_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1733,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1739,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1744,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1746,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1750,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1753,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1755,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1759,1
    - Dst: virtual_sync_backend_boxes_sort_uids
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1763,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1719
    functionDepth: 3
    functionLinenumber: 1719
    functionLinenumberEnd: 1765
    functionName: virtual_sync_apply_existing_appends
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - virtual_sync_backend_boxes_sort_uids
    - mail_index_lookup_uid
    - array_push_back
    - mail_index_get_header
    - mail_index_lookup_ext
    - mail_index_lookup_seq_range
    - virtual_backend_box_lookup
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: int virtual_sync_apply_existing_appends(struct virtual_sync_context
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1772,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1783,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1784,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1785,1
    - Dst: virtual_backend_box_lookup
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1790,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1793,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1794,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1796,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - mbox
    - sync_ctx
    argTypes:
    - struct virtual_mailbox*
    - struct mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1767
    functionDepth: 2
    functionLinenumber: 1767
    functionLinenumberEnd: 1799
    functionName: virtual_sync_apply_existing_expunges
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - i_array_init
    - seq_range_array_add
    - container_of
    - seq_range_array_iter_init
    - mail_index_lookup_ext
    - virtual_backend_box_lookup
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void virtual_sync_apply_existing_expunges(struct virtual_mailbox *mbox,\n\t\t\t\t
      \    struct mailbox_sync_context *sync_ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1808,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1809,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1810,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1811,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct virtual_sync_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1801
    functionDepth: 1
    functionLinenumber: 1801
    functionLinenumberEnd: 1812
    functionName: virtual_sync_deinit
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void virtual_sync_deinit(struct virtual_sync_context **_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct virtual_sync_mail*
    - struct virtual_sync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1814
    functionDepth: 0
    functionLinenumber: 1814
    functionLinenumberEnd: 1822
    functionName: virtual_sync_mail_mailbox_cmp
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int virtual_sync_mail_mailbox_cmp(const struct virtual_sync_mail *m1,\n\t\t\t\t\t
      const struct virtual_sync_mail *m2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1831,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1832,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1834,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1836,1
    - Dst: mail_index_mark_corrupted
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1839,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1844,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1847,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1824
    functionDepth: 2
    functionLinenumber: 1824
    functionLinenumberEnd: 1853
    functionName: virtual_sync_bboxes_get_mails
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - mail_index_lookup_uid
    - mail_index_mark_corrupted
    - mail_index_lookup_ext
    - array_sort
    - mail_storage_set_critical
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: int virtual_sync_bboxes_get_mails(struct virtual_sync_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: virtual_sync_apply_existing_appends
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1861,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1864,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1865,1
    - Dst: virtual_sync_bboxes_get_mails
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1870,1
    - Dst: virtual_sync_backend_box
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1880,1
    - Dst: virtual_box_copy_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1884,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1855
    functionDepth: 8
    functionLinenumber: 1855
    functionLinenumberEnd: 1887
    functionName: virtual_sync_backend_boxes
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - virtual_box_copy_error
    - virtual_sync_bboxes_get_mails
    - virtual_sync_backend_box
    - array_get
    - virtual_sync_apply_existing_appends
    linkageType: ''
    returnType: int
    signature: int virtual_sync_backend_boxes(struct virtual_sync_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1913,1
    - Dst: virtual_backend_box_sync_mail_unset
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1915,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct virtual_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1908
    functionDepth: 2
    functionLinenumber: 1908
    functionLinenumberEnd: 1916
    functionName: virtual_sync_backend_boxes_finish
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - array_get
    - virtual_backend_box_sync_mail_unset
    linkageType: ''
    returnType: void
    signature: void virtual_sync_backend_boxes_finish(struct virtual_sync_context
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: virtual_sync_backend_boxes_finish
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1923,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1925,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1926,1
    - Dst: mail_index_unlink
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1934,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1935,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1938,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1941,1
    - Dst: virtual_sync_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1943,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - success
    argTypes:
    - struct virtual_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1918
    functionDepth: 5
    functionLinenumber: 1918
    functionLinenumberEnd: 1945
    functionName: virtual_sync_finish
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - mail_index_sync_commit
    - mail_index_sync_rollback
    - mailbox_set_index_error
    - e_error
    - virtual_sync_deinit
    - mail_index_unlink
    - virtual_sync_backend_boxes_finish
    linkageType: ''
    returnType: int
    signature: int virtual_sync_finish(struct virtual_sync_context *ctx, bool success)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1955,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1971,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1976,1
    - Dst: virtual_sync_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1977,1
    - Dst: virtual_mailbox_ext_header_read
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1981,1
    - Dst: virtual_sync_finish
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1983,1
    - Dst: virtual_sync_index_changes
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1987,1
    - Dst: virtual_sync_finish
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1988,1
    - Dst: virtual_sync_backend_boxes
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1990,1
    - Dst: virtual_sync_finish
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1991,1
    - Dst: virtual_sync_index_finish
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1993,1
    - Dst: virtual_sync_finish
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:1994,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - mbox
    - flags
    argTypes:
    - struct virtual_mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1947
    functionDepth: 9
    functionLinenumber: 1947
    functionLinenumberEnd: 1995
    functionName: virtual_sync
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - virtual_sync_finish
    - virtual_sync_index_finish
    - virtual_sync_index_changes
    - virtual_sync_backend_boxes
    - mailbox_set_index_error
    - mail_index_sync_begin
    - virtual_sync_deinit
    - i_new
    - virtual_mailbox_ext_header_read
    linkageType: ''
    returnType: int
    signature: "int virtual_sync(struct virtual_mailbox *mbox,\n\t\t\tenum mailbox_sync_flags
      flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:2001,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:2006,1
    - Dst: index_mailbox_want_full_sync
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:2010,1
    - Dst: virtual_sync
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:2011,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:2013,1
    - Dst: virtual_sync_apply_existing_expunges
      Src: /src/dovecot/src/plugins/virtual/virtual-sync.c:2014,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 1997
    functionDepth: 10
    functionLinenumber: 1997
    functionLinenumberEnd: 2016
    functionName: virtual_storage_sync_init
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-sync.c
    functionUses: 0
    functionsReached:
    - container_of
    - mailbox_open
    - virtual_sync
    - virtual_sync_apply_existing_expunges
    - index_mailbox_sync_init
    - index_mailbox_want_full_sync
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      virtual_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: VIRTUAL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIRTUAL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: VIRTUAL_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-storage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIRTUAL_CONTEXT_REQUIRE(obj)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct virtual_search_record*
    - struct virtual_search_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 48
    functionName: virtual_search_record_cmp
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-search.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int virtual_search_record_cmp(const struct virtual_search_record *r1,\n\t\t\t\t
      \    const struct virtual_search_record *r2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 62
    functionName: mail_search_get_result
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-search.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mail_search_get_result(struct mail_search_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:68,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:74,1
    - Dst: index_storage_search_next_update_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:75,1
    - Dst: mail_search_get_result
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:76,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:77,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:80,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:83,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:91,1
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:93,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:95,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - vctx
    argTypes:
    - struct mail_search_context*
    - struct virtual_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 98
    functionName: virtual_search_get_records
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-search.c
    functionUses: 0
    functionsReached:
    - i_zero
    - index_storage_search_next_update_seq
    - seq_range_array_add
    - container_of
    - mail_search_args_reset
    - mail_search_get_result
    - array_push_back
    - mail_index_lookup_ext
    - array_count
    - array_sort
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void virtual_search_get_records(struct mail_search_context *ctx,\n\t\t\t\t
      \      struct virtual_search_context *vctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_search_init
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:110,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:113,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:115,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:116,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:117,1
    - Dst: virtual_search_get_records
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:119,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - t
    - args
    - sort_program
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - enum mail_sort_type*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 122
    functionName: virtual_search_init
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-search.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - seq_range_array_iter_init
    - virtual_search_get_records
    - index_storage_search_init
    - i_new
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: struct mail_search_context
    signature: "struct mail_search_context *\nvirtual_search_init(struct mailbox_transaction_context
      *t,\n\t\t    struct mail_search_args *args,\n\t\t    const enum mail_sort_type
      *sort_program,\n\t\t    enum mail_fetch_field wanted_fields,\n\t\t    struct
      mailbox_header_lookup_ctx *wanted_headers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VIRTUAL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:126,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:128,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:129,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:130,1
    - Dst: index_storage_search_deinit
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 132
    functionName: virtual_search_deinit
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-search.c
    functionUses: 0
    functionsReached:
    - index_storage_search_deinit
    - i_free
    - array_free
    - VIRTUAL_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int virtual_search_deinit(struct mail_search_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: VIRTUAL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:137,1
    - Dst: container_of
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:139,1
    - Dst: virtual_search_next_nonblock
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:148,1
    - Dst: index_storage_search_next_nonblock
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:150,1
    - Dst: index_storage_search_next_nonblock
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:154,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:155,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:164,1
    - Dst: index_search_get_mail
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:169,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:170,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - mail_r
    - tryagain_r
    argTypes:
    - struct mail_search_context*
    - struct mail**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 174
    functionName: virtual_search_next_nonblock
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-search.c
    functionUses: 1
    functionsReached:
    - index_storage_search_next_nonblock
    - seq_range_array_add
    - seq_range_array_iter_nth
    - container_of
    - virtual_search_next_nonblock
    - VIRTUAL_CONTEXT_REQUIRE
    - i_unreached
    - mail_set_seq
    - index_search_get_mail
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool virtual_search_next_nonblock(struct mail_search_context *ctx,\n\t\t\t\t
      \ struct mail **mail_r, bool *tryagain_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 180
    functionName: search_args_set_full_match
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-search.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void search_args_set_full_match(struct mail_search_arg *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VIRTUAL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:184,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:188,1
    - Dst: index_storage_search_next_update_seq
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:192,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:193,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:199,1
    - Dst: search_args_set_full_match
      Src: /src/dovecot/src/plugins/virtual/virtual-search.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 207
    functionName: virtual_search_next_update_seq
    functionSourceFile: /src/dovecot/src/plugins/virtual/virtual-search.c
    functionUses: 0
    functionsReached:
    - index_storage_search_next_update_seq
    - seq_range_array_iter_nth
    - search_args_set_full_match
    - i_unreached
    - VIRTUAL_CONTEXT_REQUIRE
    - array_get
    linkageType: ''
    returnType: bool
    signature: bool virtual_search_next_update_seq(struct mail_search_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: CHARSET_ALIAS_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHARSET_ALIAS_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:89,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:92,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:93,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - charset
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 99
    functionName: charset_alias_get_alias
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: char
    signature: char *charset_alias_get_alias(const char *charset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:105,1
    - Dst: charset_alias_get_alias
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:106,1
    - Dst: to_utf8_begin
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - charset
    - normalizer
    - t_r
    argTypes:
    - char*
    - normalizer_func_t*
    - struct charset_translation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: charset_alias_to_utf8_begin
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - to_utf8_begin
    - i_assert
    - charset_alias_get_alias
    linkageType: ''
    returnType: int
    signature: "int charset_alias_to_utf8_begin(const char *charset,\n\t\t\t\t       normalizer_func_t
      *normalizer,\n\t\t\t\t       struct charset_translation **t_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:111,1
    - Dst: to_utf8_end
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct charset_translation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: charset_alias_to_utf8_end
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - to_utf8_end
    - i_assert
    linkageType: ''
    returnType: void
    signature: void charset_alias_to_utf8_end(struct charset_translation *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:117,1
    - Dst: to_utf8_reset
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct charset_translation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 119
    functionName: charset_alias_to_utf8_reset
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - i_assert
    - to_utf8_reset
    linkageType: ''
    returnType: void
    signature: void charset_alias_to_utf8_reset(struct charset_translation *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:125,1
    - Dst: to_utf8
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - t
    - src
    - src_size
    - dest
    argTypes:
    - struct charset_translation*
    - unsigned char*
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: charset_alias_to_utf8
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - i_assert
    - to_utf8
    linkageType: ''
    returnType: enum charset_result
    signature: "enum charset_result charset_alias_to_utf8(struct charset_translation
      *t,\n\t\t\t\t\t\t const unsigned char *src,\n\t\t\t\t\t\t size_t *src_size,
      buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: charset_alias_utf8_vfuncs_set
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void charset_alias_utf8_vfuncs_set(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 141
    functionName: charset_alias_utf8_vfuncs_reset
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void charset_alias_utf8_vfuncs_reset(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHARSET_ALIAS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:145,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:147,1
    - Dst: charset_alias_utf8_vfuncs_reset
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:149,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:150,1
    - Dst: struct charset_alias_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 154
    functionName: charset_alias_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - struct charset_alias_user*::module_ctx::super::deinit
    - settings_free
    - CHARSET_ALIAS_USER_CONTEXT
    - i_assert
    - charset_alias_utf8_vfuncs_reset
    linkageType: ''
    returnType: void
    signature: void charset_alias_mail_user_deinit(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:162,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:168,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:171,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:175,1
    - Dst: charset_alias_utf8_vfuncs_set
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:176,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 180
    functionName: charset_alias_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - charset_alias_utf8_vfuncs_set
    - p_strdup
    - p_new
    - array_is_empty
    - MODULE_CONTEXT_SET
    - settings_get
    linkageType: ''
    returnType: void
    signature: void charset_alias_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: charset_alias_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void charset_alias_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: charset_alias_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void charset_alias_plugin_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_strconcat
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:57,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:58,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:63,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - http_url
    argTypes:
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 65
    functionName: solr_connection_create_http_base_url
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - i_strconcat
    - strlen
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *solr_connection_create_http_base_url(struct http_url *http_url)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_url_parse
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:75,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:76,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:77,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:82,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:83,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:84,1
    - Dst: solr_connection_create_http_base_url
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:86,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:89,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:91,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:103,1
    - Dst: http_client_init_private_auto
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:104,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - solr_set
    - event_parent
    - conn_r
    - error_r
    argTypes:
    - struct fts_solr_settings*
    - struct event*
    - struct solr_connection**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 113
    functionName: solr_connection_init
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - solr_connection_create_http_base_url
    - event_create
    - settings_event_add_filter_name
    - t_strdup_printf
    - i_strdup
    - pool_datastack_create
    - http_client_init_private_auto
    - i_new
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int solr_connection_init(const struct fts_solr_settings *solr_set,\n\t\t\t
      struct event *event_parent,\n\t\t\t struct solr_connection **conn_r, const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:120,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:121,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:122,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:123,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:124,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct solr_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 126
    functionName: solr_connection_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - i_free
    - event_unref
    linkageType: ''
    returnType: void
    signature: void solr_connection_deinit(struct solr_connection **_conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: solr_response_parse
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:133,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:139,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:140,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:142,1
    - Dst: solr_response_parser_deinit
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:146,1
    - Dst: io_remove
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:147,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - lctx
    argTypes:
    - struct solr_lookup_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 149
    functionName: solr_connection_payload_input
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - solr_response_parser_deinit
    - io_remove
    - solr_response_parse
    - e_error
    - i_stream_get_error
    - i_assert
    linkageType: ''
    returnType: void
    signature: void solr_connection_payload_input(struct solr_lookup_context *lctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:156,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:157,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:163,1
    - Dst: solr_response_parser_init
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:168,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:171,1
    - Dst: solr_connection_payload_input
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - response
    - lctx
    argTypes:
    - struct http_response*
    - struct solr_lookup_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 174
    functionName: solr_connection_select_response
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - solr_connection_payload_input
    - e_error
    - http_response_get_message
    - solr_response_parser_init
    linkageType: ''
    returnType: void
    signature: "void solr_connection_select_response(const struct http_response *response,\n\t\t\t\tstruct
      solr_lookup_context *lctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:183,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:187,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:188,1
    - Dst: http_client_request
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:190,1
    - Dst: http_client_request_set_auth_simple
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:195,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:198,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:199,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:200,1
    - Dst: http_client_wait
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 4
    argNames:
    - conn
    - query
    - pool
    - box_results_r
    argTypes:
    - struct solr_connection*
    - char*
    - pool_t
    - struct solr_result***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 210
    functionName: solr_connection_select
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - http_client_request_set_ssl
    - http_client_request_set_port
    - i_free_and_null
    - http_client_request_set_auth_simple
    - http_client_request_submit
    - http_client_wait
    - http_client_request
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int solr_connection_select(struct solr_connection *conn, const char
      *query,\n\t\t\t   pool_t pool, struct solr_result ***box_results_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:217,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - response
    - post
    argTypes:
    - struct http_response*
    - struct solr_connection_post*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 222
    functionName: solr_connection_update_response
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - http_response_get_message
    linkageType: ''
    returnType: void
    signature: "void solr_connection_update_response(const struct http_response *response,\n\t\t\t\tstruct
      solr_connection_post *post)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:231,1
    - Dst: http_client_request
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:233,1
    - Dst: http_client_request_set_auth_simple
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:237,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:240,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:241,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - post
    argTypes:
    - struct solr_connection_post*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 244
    functionName: solr_connection_post_request
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_ssl
    - http_client_request_set_port
    - http_client_request_set_auth_simple
    - http_client_request_add_header
    - http_client_request
    - t_strconcat
    linkageType: ''
    returnType: struct http_client_request
    signature: 'struct http_client_request *

      solr_connection_post_request(struct solr_connection_post *post)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:251,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:254,1
    - Dst: solr_connection_post_request
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct solr_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 258
    functionName: solr_connection_post_begin
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - solr_connection_post_request
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct solr_connection_post
    signature: 'struct solr_connection_post *

      solr_connection_post_begin(struct solr_connection *conn)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:263,1
    - Dst: http_client_request_send_payload
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - post
    - data
    - size
    argTypes:
    - struct solr_connection_post*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 274
    functionName: solr_connection_post_more
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_client_request_send_payload
    linkageType: ''
    returnType: void
    signature: "void solr_connection_post_more(struct solr_connection_post *post,\n\t\t\t
      \      const unsigned char *data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:282,1
    - Dst: http_client_request_finish_payload
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:287,1
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:292,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:294,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _post
    argTypes:
    - struct solr_connection_post**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 298
    functionName: solr_connection_post_end
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - http_client_request_finish_payload
    - i_assert
    - i_free
    - http_client_request_abort
    linkageType: ''
    returnType: int
    signature: int solr_connection_post_end(struct solr_connection_post **_post)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:305,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:307,1
    - Dst: solr_connection_post_request
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:310,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:311,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:311,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:312,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:313,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:314,1
    - Dst: http_client_wait
      Src: /src/dovecot/src/plugins/fts-solr/solr-connection.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - cmd
    argTypes:
    - struct solr_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 320
    functionName: solr_connection_post
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strlen
    - i_stream_create_from_data
    - http_client_request_set_payload
    - http_client_wait
    - solr_connection_post_request
    - i_stream_unref
    - i_assert
    - http_client_request_submit
    linkageType: ''
    returnType: int
    signature: int solr_connection_post(struct solr_connection *conn, const char *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XML_Parse
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:64,1
    - Dst: XML_GetErrorCode
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:67,1
    - Dst: XML_GetCurrentLineNumber
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:69,1
    - Dst: XML_GetCurrentColumnNumber
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:70,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:71,1
    - Dst: XML_ErrorString
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:73,1
    - Dst: I_MIN
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - parser
    - data
    - size
    - done
    argTypes:
    - struct solr_response_parser*
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 79
    functionName: solr_xml_parse
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 0
    functionsReached:
    - XML_GetErrorCode
    - I_MIN
    - XML_ErrorString
    - e_error
    - XML_Parse
    - XML_GetCurrentLineNumber
    - XML_GetCurrentColumnNumber
    linkageType: ''
    returnType: int
    signature: "int solr_xml_parse(struct solr_response_parser *parser,\n\t       const
      void *data, size_t size, bool done)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - attrs
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: attrs_get_name
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: char
    signature: char *attrs_get_name(const char **attrs)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:96,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:104,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:109,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:113,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:117,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:121,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:122,1
    - Dst: attrs_get_name
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:127,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:128,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:130,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:132,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:136,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 3
    argNames:
    - context
    - name
    - attrs
    argTypes:
    - void*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 145
    functionName: solr_lookup_xml_start
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_free_and_null
    - attrs_get_name
    - str_truncate
    - i_assert
    linkageType: ''
    returnType: void
    signature: void solr_lookup_xml_start(void *context, const char *name, const char
      **attrs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:153,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:157,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:158,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:160,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:161,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:162,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - parser
    - box_id
    argTypes:
    - struct solr_response_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 165
    functionName: solr_result_get
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - p_array_init
    - array_push_back
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: struct solr_result
    signature: 'struct solr_result *

      solr_result_get(struct solr_response_parser *parser, const char *box_id)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:174,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:183,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:184,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:185,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:187,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:188,1
    - Dst: solr_result_get
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:193,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:195,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:198,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct solr_response_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 203
    functionName: solr_lookup_add_doc
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - str_c
    - t_str_new
    - str_printfa
    - array_append_space
    - e_error
    - str_append
    - solr_result_get
    linkageType: ''
    returnType: int
    signature: int solr_lookup_add_doc(struct solr_response_parser *parser)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint32
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:215,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:215,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:217,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:219,1
    - Dst: strtod
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:224,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:224,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:227,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:227,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:230,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:230,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:233,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:233,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:234,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:241,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:247,1
    - Dst: solr_lookup_add_doc
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:254,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 2
    argNames:
    - context
    - ATTR_UNUSED
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 205
    functionDepth: 3
    functionLinenumber: 205
    functionLinenumberEnd: 262
    functionName: solr_lookup_xml_end
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 0
    functionsReached:
    - str_c
    - solr_lookup_add_doc
    - strtod
    - str_to_uint32
    - e_error
    - i_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: void solr_lookup_xml_end(void *context, const char *name ATTR_UNUSED)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:283,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:284,1
    - Dst: str_append_data
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - context
    - str
    - len
    argTypes:
    - void*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 291
    functionName: solr_lookup_xml_data
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_append_data
    - str_len
    linkageType: ''
    returnType: void
    signature: void solr_lookup_xml_data(void *context, const char *str, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:299,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:300,1
    - Dst: XML_ParserCreate
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:302,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:304,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:308,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:309,1
    - Dst: pool_ref
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:313,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:314,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:317,1
    - Dst: XML_SetElementHandler
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:320,1
    - Dst: XML_SetCharacterDataHandler
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:322,1
    - Dst: XML_SetUserData
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - result_pool
    - event
    - input
    argTypes:
    - pool_t
    - struct event*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 326
    functionName: solr_response_parser_init
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 1
    functionsReached:
    - event_create
    - hash_table_create
    - pool_ref
    - XML_ParserCreate
    - p_array_init
    - XML_SetElementHandler
    - i_fatal_status
    - XML_SetCharacterDataHandler
    - i_stream_ref
    - XML_SetUserData
    - i_new
    - str_new
    linkageType: ''
    returnType: struct solr_response_parser
    signature: "struct solr_response_parser *\nsolr_response_parser_init(pool_t result_pool,
      struct event *event,\n\t\t\t  struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:337,1
    - Dst: str_free
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:338,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:339,1
    - Dst: XML_ParserFree
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:340,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:341,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:342,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct solr_response_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 344
    functionName: solr_response_parser_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 1
    functionsReached:
    - event_unref
    - XML_ParserFree
    - pool_unref
    - i_stream_unref
    - i_free
    - str_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void solr_response_parser_deinit(struct solr_response_parser **_parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:353,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:354,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:357,1
    - Dst: solr_xml_parse
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:358,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:359,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:368,1
    - Dst: solr_xml_parse
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:375,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:377,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/plugins/fts-solr/solr-response.c:378,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - parser
    - box_results_r
    argTypes:
    - struct solr_response_parser*
    - struct solr_result***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 380
    functionName: solr_response_parse
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/solr-response.c
    functionUses: 1
    functionsReached:
    - i_zero
    - array_front_modifiable
    - i_stream_skip
    - i_stream_unref
    - solr_xml_parse
    - array_append_zero
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int solr_response_parse(struct solr_response_parser *parser,\n\t\t\tstruct
      solr_result ***box_results_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_out_quiet
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:155,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:156,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:163,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:165,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:165,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:166,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:170,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:170,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:176,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:177,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:179,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:180,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - test_results
    - parse_results
    argTypes:
    - struct solr_response_test_result*
    - struct solr_result**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 144
    functionDepth: 3
    functionLinenumber: 144
    functionLinenumberEnd: 184
    functionName: test_solr_result
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/test-solr-response.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_get
    - t_strdup_printf
    - test_has_failed
    - test_out_quiet
    linkageType: ''
    returnType: void
    signature: "void test_solr_result(const struct solr_response_test_result *test_results,\n\t\t
      struct solr_result **parse_results)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:188,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:204,1
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:206,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:206,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:208,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:209,1
    - Dst: solr_response_parser_init
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:210,1
    - Dst: solr_response_parse
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:212,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:214,1
    - Dst: test_solr_result
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:216,1
    - Dst: solr_response_parser_deinit
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:218,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:219,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:220,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:222,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:223,1
    - Dst: solr_response_parser_init
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:224,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:228,1
    - Dst: solr_response_parse
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:229,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:232,1
    - Dst: test_solr_result
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:234,1
    - Dst: solr_response_parser_deinit
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:236,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:237,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:238,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:240,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 186
    functionDepth: 4
    functionLinenumber: 186
    functionLinenumberEnd: 242
    functionName: test_solr_response_parser
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/test-solr-response.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - test_out_reason
    - solr_response_parser_deinit
    - strlen
    - t_strdup_printf
    - solr_response_parse
    - pool_unref
    - test_end
    - test_solr_result
    - test_istream_create_data
    - i_stream_unref
    - test_istream_set_size
    - solr_response_parser_init
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_solr_response_parser(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:248,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:255,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:256,1
    - Dst: solr_response_parser_init
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:257,1
    - Dst: solr_response_parse
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:259,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:262,1
    - Dst: solr_response_parser_deinit
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:264,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:265,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:266,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 246
    functionDepth: 3
    functionLinenumber: 246
    functionLinenumberEnd: 268
    functionName: test_solr_response_file
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/test-solr-response.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - event_unref
    - solr_response_parser_deinit
    - i_stream_create_file
    - solr_response_parse
    - i_fatal
    - pool_unref
    - i_stream_unref
    - solr_response_parser_init
    linkageType: ''
    returnType: void
    signature: void test_solr_response_file(const char *file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:279,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:285,1
    - Dst: test_solr_response_file
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:292,1
    - Dst: test_run
      Src: /src/dovecot/src/plugins/fts-solr/test-solr-response.c:296,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 270
    functionDepth: 7
    functionLinenumber: 270
    functionLinenumberEnd: 297
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/test-solr-response.c
    functionUses: 7
    functionsReached:
    - test_solr_response_file
    - i_fatal
    - getopt
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-settings.c:54,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-settings.c:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - event
    - info
    - set_r
    - error_r
    argTypes:
    - struct event*
    - struct setting_parser_info*
    - struct fts_solr_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 65
    functionName: fts_solr_settings_get
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-settings.c
    functionUses: 0
    functionsReached:
    - settings_get
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int fts_solr_settings_get(struct event *event,\n\t\t\t  const struct
      setting_parser_info *info,\n\t\t\t  const struct fts_solr_settings **set_r,\n\t\t\t
      \ const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 85
    functionName: is_valid_xml_char
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_valid_xml_char(unichar_t chr)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:94,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:101,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:104,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:107,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:113,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:119,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:124,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:125,1
    - Dst: is_valid_xml_char
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:126,1
    - Dst: str_append_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:127,1
    - Dst: str_append_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:129,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:134,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 4
    argNames:
    - dest
    - data
    - len
    - max_len
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 140
    functionName: xml_encode_data_max
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - uni_utf8_get_char_n
    - str_append_data
    - is_valid_xml_char
    - str_append
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: "size_t xml_encode_data_max(string_t *dest, const unsigned char *data,
      size_t len,\n\t\t    unsigned int max_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xml_encode_data_max
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dest
    - data
    - len
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: xml_encode_data
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - xml_encode_data_max
    linkageType: ''
    returnType: void
    signature: void xml_encode_data(string_t *dest, const unsigned char *data, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xml_encode_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:150,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - str
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: xml_encode
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - strlen
    - xml_encode_data
    linkageType: ''
    returnType: void
    signature: void xml_encode(string_t *dest, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:158,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:158,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:160,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:161,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:162,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 165
    functionName: solr_escape
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - str_append_c
    - strlen
    linkageType: ''
    returnType: char
    signature: char *solr_escape(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:170,1
    - Dst: solr_escape
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:170,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dest
    - str
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 173
    functionName: solr_quote_http
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append
    - solr_escape
    - http_url_escape_param
    linkageType: ''
    returnType: void
    signature: void solr_quote_http(string_t *dest, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 182
    functionName: fts_backend_solr_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fts_backend
    signature: struct fts_backend *fts_backend_solr_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:190,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:191,1
    - Dst: fts_solr_mail_user_get
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:193,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:195,1
    - Dst: solr_connection_init
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _backend
    - error_r
    argTypes:
    - struct fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 184
    functionDepth: 4
    functionLinenumber: 184
    functionLinenumberEnd: 201
    functionName: fts_backend_solr_init
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - solr_connection_init
    - event_add_category
    - fts_solr_mail_user_get
    linkageType: ''
    returnType: int
    signature: int fts_backend_solr_init(struct fts_backend *_backend, const char
      **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: solr_connection_deinit
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:208,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:209,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: fts_backend_solr_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - i_free
    - event_unref
    - solr_connection_deinit
    linkageType: ''
    returnType: void
    signature: void fts_backend_solr_deinit(struct fts_backend *_backend)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:226,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:227,1
    - Dst: fts_mailbox_get_guid
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:229,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:232,1
    - Dst: solr_quote_http
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:234,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:236,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:238,1
    - Dst: solr_connection_select
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:239,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:239,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:246,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:247,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:251,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:256,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - _backend
    - box
    - last_uid_r
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 213
    functionDepth: 3
    functionLinenumber: 213
    functionLinenumberEnd: 258
    functionName: get_last_uid_fallback
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_str_new
    - str_printfa
    - str_c
    - array_get
    - solr_quote_http
    - pool_unref
    - solr_connection_select
    - e_error
    - fts_mailbox_get_guid
    - str_append
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int get_last_uid_fallback(struct fts_backend *_backend, struct mailbox
      *box,\n\t\t      uint32_t *last_uid_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_index_get_header
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:266,1
    - Dst: get_last_uid_fallback
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:273,1
    - Dst: fts_index_set_last_uid
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - _backend
    - box
    - last_uid_r
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 260
    functionDepth: 4
    functionLinenumber: 260
    functionLinenumberEnd: 278
    functionName: fts_backend_solr_get_last_uid
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - fts_index_set_last_uid
    - fts_index_get_header
    - get_last_uid_fallback
    linkageType: ''
    returnType: int
    signature: "int fts_backend_solr_get_last_uid(struct fts_backend *_backend,\n\t\t\t
      \     struct mailbox *box, uint32_t *last_uid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:285,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 291
    functionName: fts_backend_solr_update_init
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct fts_backend_update_context
    signature: 'struct fts_backend_update_context *

      fts_backend_solr_update_init(struct fts_backend *_backend)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:296,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:298,1
    - Dst: xml_encode
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - str
    - uid
    argTypes:
    - struct solr_fts_backend_update_context*
    - string_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 293
    functionDepth: 4
    functionLinenumber: 293
    functionLinenumberEnd: 301
    functionName: xml_encode_id
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - xml_encode
    linkageType: ''
    returnType: void
    signature: "void xml_encode_id(struct solr_fts_backend_update_context *ctx,\n\t\t\t
      \ string_t *str, uint32_t uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:309,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:313,1
    - Dst: xml_encode
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:315,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:316,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:318,1
    - Dst: xml_encode_id
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:319,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct solr_fts_backend_update_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 303
    functionDepth: 5
    functionLinenumber: 303
    functionLinenumberEnd: 321
    functionName: fts_backend_solr_doc_open
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append
    - xml_encode_id
    - str_printfa
    - xml_encode
    linkageType: ''
    returnType: void
    signature: "void fts_backend_solr_doc_open(struct solr_fts_backend_update_context
      *ctx,\n\t\t\t  uint32_t uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:330,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:331,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:335,1
    - Dst: str_lcase
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:336,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:336,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:337,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct solr_fts_backend_update_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 340
    functionName: fts_solr_field_get
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_push_back
    - strcasecmp
    - array_foreach
    - i_strdup
    - str_lcase
    - str_new
    linkageType: ''
    returnType: string_t
    signature: 'string_t *

      fts_solr_field_get(struct solr_fts_backend_update_context *ctx, const char *key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:349,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:351,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:352,1
    - Dst: str_append_str
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:354,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:355,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:356,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct solr_fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 359
    functionName: fts_backend_solr_doc_close
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_str
    - str_truncate
    - str_append
    - array_foreach_modifiable
    linkageType: ''
    returnType: void
    signature: void fts_backend_solr_doc_close(struct solr_fts_backend_update_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_solr_doc_close
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:367,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:368,1
    - Dst: solr_connection_post_more
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:371,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:371,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:372,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:373,1
    - Dst: solr_connection_post_end
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct solr_fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 375
    functionName: fts_backed_solr_build_flush
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - solr_connection_post_more
    - fts_backend_solr_doc_close
    - str_truncate
    - str_append
    - solr_connection_post_end
    linkageType: ''
    returnType: int
    signature: int fts_backed_solr_build_flush(struct solr_fts_backend_update_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:383,1
    - Dst: solr_connection_post
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:384,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:384,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:385,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct solr_fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 387
    functionName: fts_backend_solr_expunge_flush
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_c
    - str_truncate
    - solr_connection_post
    linkageType: ''
    returnType: void
    signature: void fts_backend_solr_expunge_flush(struct solr_fts_backend_update_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FTS_SOLR_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:394,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:399,1
    - Dst: solr_connection_post
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct solr_fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 389
    functionDepth: 3
    functionLinenumber: 389
    functionLinenumberEnd: 403
    functionName: fts_backend_solr_commit
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - FTS_SOLR_USER_CONTEXT_REQUIRE
    - t_strdup_printf
    - solr_connection_post
    linkageType: ''
    returnType: int
    signature: int fts_backend_solr_commit(struct solr_fts_backend_update_context
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_backed_solr_build_flush
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:413,1
    - Dst: fts_backend_solr_expunge_flush
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:417,1
    - Dst: fts_backend_solr_commit
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:418,1
    - Dst: str_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:422,1
    - Dst: str_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:423,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:424,1
    - Dst: str_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:425,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:426,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:428,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:429,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 405
    functionDepth: 4
    functionLinenumber: 405
    functionLinenumberEnd: 431
    functionName: fts_backend_solr_update_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - fts_backend_solr_commit
    - array_free
    - fts_backed_solr_build_flush
    - i_free
    - array_foreach_modifiable
    - fts_backend_solr_expunge_flush
    - str_free
    linkageType: ''
    returnType: int
    signature: int fts_backend_solr_update_deinit(struct fts_backend_update_context
      *_ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:442,1
    - Dst: fts_backed_solr_build_flush
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:446,1
    - Dst: fts_backend_solr_commit
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:449,1
    - Dst: fts_index_set_last_uid
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:452,1
    - Dst: fts_mailbox_get_guid
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:458,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:461,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:461,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:462,1
    - Dst: memset
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:464,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - _ctx
    - box
    argTypes:
    - struct fts_backend_update_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 433
    functionDepth: 4
    functionLinenumber: 433
    functionLinenumberEnd: 467
    functionName: fts_backend_solr_update_set_mailbox
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - memcpy
    - fts_index_set_last_uid
    - strlen
    - fts_mailbox_get_guid
    - fts_backend_solr_commit
    - fts_backed_solr_build_flush
    - memset
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void fts_backend_solr_update_set_mailbox(struct fts_backend_update_context
      *_ctx,\n\t\t\t\t    struct mailbox *box)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fts_index_get_header
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:478,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:492,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:493,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:496,1
    - Dst: fts_backend_solr_expunge_flush
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:497,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:499,1
    - Dst: xml_encode_id
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:500,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:501,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - _ctx
    - uid
    argTypes:
    - struct fts_backend_update_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 469
    functionDepth: 5
    functionLinenumber: 469
    functionLinenumberEnd: 502
    functionName: fts_backend_solr_update_expunge
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - fts_index_get_header
    - str_len
    - str_append
    - xml_encode_id
    - str_new
    - fts_backend_solr_expunge_flush
    linkageType: ''
    returnType: void
    signature: "void fts_backend_solr_update_expunge(struct fts_backend_update_context
      *_ctx,\n\t\t\t\tuint32_t uid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FTS_SOLR_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:511,1
    - Dst: fts_backed_solr_build_flush
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:514,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:520,1
    - Dst: solr_connection_post_begin
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:521,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:522,1
    - Dst: fts_backend_solr_doc_close
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:524,1
    - Dst: fts_backend_solr_doc_open
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:528,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct solr_fts_backend_update_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 504
    functionDepth: 6
    functionLinenumber: 504
    functionLinenumberEnd: 529
    functionName: fts_backend_solr_uid_changed
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - FTS_SOLR_USER_CONTEXT_REQUIRE
    - str_append
    - solr_connection_post_begin
    - fts_backend_solr_doc_close
    - fts_backed_solr_build_flush
    - fts_backend_solr_doc_open
    - str_new
    linkageType: ''
    returnType: void
    signature: "void fts_backend_solr_uid_changed(struct solr_fts_backend_update_context
      *ctx,\n\t\t\t     uint32_t uid)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_solr_uid_changed
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:539,1
    - Dst: fts_header_want_indexed
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:543,1
    - Dst: fts_solr_field_get
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:545,1
    - Dst: fts_solr_field_get
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:549,1
    - Dst: xml_encode
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:550,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:551,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:556,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:561,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - _ctx
    - key
    argTypes:
    - struct fts_backend_update_context*
    - struct fts_backend_build_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 531
    functionDepth: 7
    functionLinenumber: 531
    functionLinenumberEnd: 564
    functionName: fts_backend_solr_update_set_build_key
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - fts_header_want_indexed
    - i_unreached
    - fts_solr_field_get
    - xml_encode
    - fts_backend_solr_uid_changed
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool fts_backend_solr_update_set_build_key(struct fts_backend_update_context
      *_ctx,\n\t\t\t\t      const struct fts_backend_build_key *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:575,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 581
    functionName: fts_backend_solr_update_unset_build_key
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void fts_backend_solr_update_unset_build_key(struct fts_backend_update_context
      *_ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:598,1
    - Dst: solr_connection_post_more
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:599,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:600,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:601,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:602,1
    - Dst: xml_encode_data_max
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:604,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:606,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:607,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:608,1
    - Dst: xml_encode_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:612,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:614,1
    - Dst: xml_encode_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:617,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:619,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:623,1
    - Dst: xml_encode_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:624,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:626,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:630,1
    - Dst: solr_connection_post_more
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:631,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:631,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:632,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:633,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:636,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:638,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:639,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:641,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 3
    argNames:
    - _ctx
    - data
    - size
    argTypes:
    - struct fts_backend_update_context*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 583
    functionDepth: 3
    functionLinenumber: 583
    functionLinenumberEnd: 645
    functionName: fts_backend_solr_update_build_more
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_data
    - str_len
    - solr_connection_post_more
    - xml_encode_data_max
    - xml_encode_data
    - e_warning
    - str_truncate
    - mailbox_get_vname
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fts_backend_solr_update_build_more(struct fts_backend_update_context
      *_ctx,\n\t\t\t\t   const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 650
    functionName: fts_backend_solr_refresh
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fts_backend_solr_refresh(struct fts_backend *backend ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_reset_last_uids
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 657
    functionName: fts_backend_solr_rescan
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - fts_backend_reset_last_uids
    linkageType: ''
    returnType: int
    signature: int fts_backend_solr_rescan(struct fts_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 662
    functionName: fts_backend_solr_optimize
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fts_backend_solr_optimize(struct fts_backend *backend ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:667,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 671
    functionName: solr_need_escaping
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool solr_need_escaping(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: solr_need_escaping
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:679,1
    - Dst: solr_quote_http
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:680,1
    - Dst: http_url_escape_param
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:682,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:683,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - str
    - arg
    argTypes:
    - string_t*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 673
    functionDepth: 3
    functionLinenumber: 673
    functionLinenumberEnd: 685
    functionName: solr_add_str_arg
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - solr_need_escaping
    - solr_quote_http
    - http_url_escape_param
    linkageType: ''
    returnType: void
    signature: void solr_add_str_arg(string_t *str, struct mail_search_arg *arg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:695,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:696,1
    - Dst: solr_add_str_arg
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:697,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:698,1
    - Dst: solr_add_str_arg
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:699,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:700,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:705,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:706,1
    - Dst: solr_add_str_arg
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:707,1
    - Dst: fts_header_want_indexed
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:712,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:716,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:717,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:717,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:718,1
    - Dst: solr_add_str_arg
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:719,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - str
    - arg
    argTypes:
    - string_t*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 687
    functionDepth: 4
    functionLinenumber: 687
    functionLinenumberEnd: 725
    functionName: solr_add_definite_query
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - t_str_lcase
    - str_append_c
    - fts_header_want_indexed
    - solr_add_str_arg
    - str_append
    linkageType: ''
    returnType: bool
    signature: bool solr_add_definite_query(string_t *str, struct mail_search_arg
      *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:733,1
    - Dst: solr_add_definite_query
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:735,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:737,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:739,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:741,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:744,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:747,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - str
    - arg
    - and_args
    argTypes:
    - string_t*
    - struct mail_search_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 727
    functionDepth: 5
    functionLinenumber: 727
    functionLinenumberEnd: 749
    functionName: solr_add_definite_query_args
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - solr_add_definite_query
    - str_truncate
    - str_append
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool solr_add_definite_query_args(string_t *str, struct mail_search_arg
      *arg,\n\t\t\t     bool and_args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fts_header_want_indexed
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:760,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:770,1
    - Dst: solr_quote_http
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:772,1
    - Dst: solr_quote_http
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:775,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:775,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - str
    - arg
    argTypes:
    - string_t*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 751
    functionDepth: 3
    functionLinenumber: 751
    functionLinenumberEnd: 782
    functionName: solr_add_maybe_query
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append
    - fts_header_want_indexed
    - solr_quote_http
    - t_str_lcase
    linkageType: ''
    returnType: bool
    signature: bool solr_add_maybe_query(string_t *str, struct mail_search_arg *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:790,1
    - Dst: solr_add_maybe_query
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:792,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:794,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:796,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:798,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:801,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:804,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - str
    - arg
    - and_args
    argTypes:
    - string_t*
    - struct mail_search_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 784
    functionDepth: 4
    functionLinenumber: 784
    functionLinenumberEnd: 806
    functionName: solr_add_maybe_query_args
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - str_append
    - solr_add_maybe_query
    - str_truncate
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool solr_add_maybe_query_args(string_t *str, struct mail_search_arg
      *arg,\n\t\t\t  bool and_args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:813,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:819,1
    - Dst: solr_quote_http
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:821,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:823,1
    - Dst: solr_connection_select
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:825,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:825,1
    - Dst: array_append_array
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:828,1
    - Dst: array_append_array
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:829,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:831,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - _backend
    - str
    - box_guid
    - uids_r
    - scores_r
    argTypes:
    - struct fts_backend*
    - string_t*
    - char*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 808
    functionDepth: 3
    functionLinenumber: 808
    functionLinenumberEnd: 833
    functionName: solr_search
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - str_printfa
    - str_c
    - solr_quote_http
    - pool_unref
    - solr_connection_select
    - str_append
    - array_append_array
    linkageType: ''
    returnType: int
    signature: "int solr_search(struct fts_backend *_backend, string_t *str,\n\t\t
      \      const char *box_guid, ARRAY_TYPE(seq_range) *uids_r,\n\t\t       ARRAY_TYPE(fts_score_map)
      *scores_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fts_mailbox_get_guid
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:847,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:849,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:851,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:852,1
    - Dst: I_MIN
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:853,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:854,1
    - Dst: solr_add_definite_query_args
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:856,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:857,1
    - Dst: solr_search
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:858,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:862,1
    - Dst: solr_add_maybe_query_args
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:863,1
    - Dst: solr_search
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:864,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - _backend
    - box
    - args
    - flags
    - result
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - struct mail_search_arg*
    - enum fts_lookup_flags
    - struct fts_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 835
    functionDepth: 6
    functionLinenumber: 835
    functionLinenumberEnd: 870
    functionName: fts_backend_solr_lookup
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_len
    - I_MIN
    - solr_add_maybe_query_args
    - fts_mailbox_get_guid
    - mailbox_get_open_status
    - ARRAY_TYPE
    - solr_search
    - str_truncate
    - solr_add_definite_query_args
    linkageType: ''
    returnType: int
    signature: "int fts_backend_solr_lookup(struct fts_backend *_backend, struct mailbox
      *box,\n\t\t\tstruct mail_search_arg *args,\n\t\t\tenum fts_lookup_flags flags,\n\t\t\tstruct
      fts_result *result)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:890,1
    - Dst: solr_quote_http
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:892,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:894,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:896,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:900,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:901,1
    - Dst: fts_mailbox_get_guid
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:904,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:908,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:909,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:910,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:912,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:912,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:916,1
    - Dst: solr_connection_select
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:918,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:918,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:920,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:924,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:926,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:929,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:935,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:941,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:942,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:943,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 4
    argNames:
    - _backend
    - str
    - boxes
    - result
    argTypes:
    - struct fts_backend*
    - string_t*
    - struct mailbox*[]
    - struct fts_multi_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 872
    functionDepth: 3
    functionLinenumber: 872
    functionLinenumberEnd: 945
    functionName: solr_search_multi
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - str_c
    - str_printfa
    - hash_table_create
    - str_append_c
    - hash_table_destroy
    - str_len
    - p_array_init
    - array_append_space
    - solr_quote_http
    - solr_connection_select
    - e_warning
    - array_append_zero
    - fts_mailbox_get_guid
    - str_append
    - hash_table_insert
    - hash_table_lookup
    - t_strdup_noconst
    linkageType: ''
    returnType: int
    signature: "int solr_search_multi(struct fts_backend *_backend, string_t *str,\n\t\t
      \ struct mailbox *const boxes[], struct fts_multi_result *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:957,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:958,1
    - Dst: solr_add_definite_query_args
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:961,1
    - Dst: solr_search_multi
      Src: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c:962,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - backend
    - boxes
    - args
    - flags
    - result
    argTypes:
    - struct fts_backend*
    - struct mailbox*[]
    - struct mail_search_arg*
    - enum fts_lookup_flags
    - struct fts_multi_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 947
    functionDepth: 6
    functionLinenumber: 947
    functionLinenumberEnd: 967
    functionName: fts_backend_solr_lookup_multi
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    functionUses: 0
    functionsReached:
    - solr_search_multi
    - t_str_new
    - str_printfa
    - solr_add_definite_query_args
    linkageType: ''
    returnType: int
    signature: "int fts_backend_solr_lookup_multi(struct fts_backend *backend,\n\t\t\t
      \     struct mailbox *const boxes[],\n\t\t\t      struct mail_search_arg *args,\n\t\t\t
      \     enum fts_lookup_flags flags,\n\t\t\t      struct fts_multi_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_SOLR_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:22,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:24,1
    - Dst: struct fts_solr_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 26
    functionName: fts_solr_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c
    functionUses: 0
    functionsReached:
    - FTS_SOLR_USER_CONTEXT_REQUIRE
    - struct fts_solr_user*::module_ctx::super::deinit
    - settings_free
    linkageType: ''
    returnType: void
    signature: void fts_solr_mail_user_deinit(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FTS_SOLR_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:32,1
    - Dst: fts_solr_settings_get
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:35,1
    - Dst: fts_mail_user_init
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:40,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:41,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - user
    - event
    - fuser_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct event*
    - struct fts_solr_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 51
    functionName: fts_solr_mail_user_get
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c
    functionUses: 1
    functionsReached:
    - fts_solr_settings_get
    - FTS_SOLR_USER_CONTEXT_REQUIRE
    - fts_mail_user_init
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int fts_solr_mail_user_get(struct mail_user *user, struct event *event,\n\t\t\t
      \  struct fts_solr_user **fuser_r,\n\t\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:58,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: fts_solr_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void fts_solr_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_register
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:71,1
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: fts_solr_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    - fts_backend_register
    linkageType: ''
    returnType: void
    signature: void fts_solr_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_unregister
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:77,1
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:78,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 82
    functionName: fts_solr_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - fts_backend_unregister
    - http_client_deinit
    linkageType: ''
    returnType: void
    signature: void fts_solr_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: FTS_SOLR_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_SOLR_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: FTS_SOLR_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_SOLR_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_mailbox_check
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:49,1
    - Dst: fts_backend_flatcurve_delete_dir
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:55,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:55,1
    - Dst: fts_flatcurve_xapian_mailbox_rotate
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:60,1
    - Dst: fts_flatcurve_xapian_mailbox_stats
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:65,1
    - Dst: fts_flatcurve_xapian_get_last_uid
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:68,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:74,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:81,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:83,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:84,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:84,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:85,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:89,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:90,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:93,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:94,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:95,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:96,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 4
    argNames:
    - backend
    - ctx
    - box
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct fts_flatcurve_mailbox_cmd_context*
    - struct mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 102
    functionName: cmd_fts_flatcurve_mailbox_run_box
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - str_c
    - doveadm_print
    - i_unreached
    - mailbox_get_metadata
    - doveadm_print_num
    - guid_128_to_string
    - fts_flatcurve_xapian_mailbox_rotate
    - fts_flatcurve_xapian_get_last_uid
    - fts_backend_flatcurve_delete_dir
    - fts_flatcurve_xapian_mailbox_stats
    - fts_flatcurve_xapian_mailbox_check
    linkageType: ''
    returnType: int
    signature: "int cmd_fts_flatcurve_mailbox_run_box(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t  struct fts_flatcurve_mailbox_cmd_context *ctx,\n\t\t\t\t
      \ struct mailbox *box, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:115,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:122,1
    - Dst: doveadm_mailbox_find
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:123,1
    - Dst: fts_backend_flatcurve_set_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:126,1
    - Dst: cmd_fts_flatcurve_mailbox_run_box
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:127,1
    - Dst: fts_backend_flatcurve_close_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:128,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:129,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:133,1
    - Dst: doveadm_mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:136,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - backend
    - user
    - ctx
    argTypes:
    - struct flatcurve_fts_backend*
    - struct mail_user*
    - struct fts_flatcurve_mailbox_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 142
    functionName: cmd_fts_flatcurve_mailbox_run_do
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - cmd_fts_flatcurve_mailbox_run_box
    - mailbox_free
    - doveadm_mailbox_list_iter_deinit
    - doveadm_mailbox_list_iter_next
    - e_error
    - doveadm_mailbox_list_iter_init
    - fts_backend_flatcurve_set_mailbox
    - fts_backend_flatcurve_close_mailbox
    - doveadm_mailbox_find
    linkageType: ''
    returnType: int
    signature: "int cmd_fts_flatcurve_mailbox_run_do(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t struct mail_user *user,\n\t\t\t\t struct fts_flatcurve_mailbox_cmd_context
      *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:149,1
    - Dst: FTS_FLATCURVE_USER_CONTEXT
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:151,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:154,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:155,1
    - Dst: cmd_fts_flatcurve_mailbox_run_do
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 144
    functionDepth: 3
    functionLinenumber: 144
    functionLinenumberEnd: 165
    functionName: cmd_fts_flatcurve_mailbox_run
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - container_of
    - FTS_FLATCURVE_USER_CONTEXT
    - e_error
    - cmd_fts_flatcurve_mailbox_run_do
    - doveadm_mail_failed_error
    linkageType: ''
    returnType: int
    signature: "int cmd_fts_flatcurve_mailbox_run(struct doveadm_mail_cmd_context
      *_ctx,\n\t\t\t      struct mail_user *user)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:172,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:175,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:178,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:181,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:184,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:187,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:190,1
    - Dst: doveadm_mail_mailbox_search_args_build
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:194,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:196,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:198,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:202,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:203,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:206,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:207,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:208,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:209,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 214
    functionName: cmd_fts_flatcurve_mailbox_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print_header
    - i_unreached
    - doveadm_cmd_param_array
    - doveadm_mail_help_name
    - doveadm_print_header_simple
    - doveadm_mail_mailbox_search_args_build
    linkageType: ''
    returnType: void
    signature: void cmd_fts_flatcurve_mailbox_init(struct doveadm_mail_cmd_context
      *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 221
    functionName: cmd_fts_flatcurve_mailbox_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - mail_search_args_unref
    linkageType: ''
    returnType: void
    signature: void cmd_fts_flatcurve_mailbox_deinit(struct doveadm_mail_cmd_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:228,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum fts_flatcurve_cmd_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 237
    functionName: cmd_fts_flatcurve_mailbox_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_fts_flatcurve_mailbox_alloc(enum fts_flatcurve_cmd_type type)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_fts_flatcurve_mailbox_alloc
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: cmd_fts_flatcurve_check_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - cmd_fts_flatcurve_mailbox_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_fts_flatcurve_check_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_fts_flatcurve_mailbox_alloc
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: cmd_fts_flatcurve_remove_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - cmd_fts_flatcurve_mailbox_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_fts_flatcurve_remove_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_fts_flatcurve_mailbox_alloc
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 252
    functionName: cmd_fts_flatcurve_rotate_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - cmd_fts_flatcurve_mailbox_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_fts_flatcurve_rotate_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_fts_flatcurve_mailbox_alloc
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 257
    functionName: cmd_fts_flatcurve_stats_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - cmd_fts_flatcurve_mailbox_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_fts_flatcurve_stats_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_dump_flatcurve_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:300,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:302,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 304
    functionName: doveadm_fts_flatcurve_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - doveadm_dump_flatcurve_init
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_fts_flatcurve_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 308
    functionName: doveadm_fts_flatcurve_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_fts_flatcurve_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 10
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: FTS_FLATCURVE_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_FLATCURVE_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: FTS_FLATCURVE_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_FLATCURVE_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:33,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 40
    functionName: fts_backend_flatcurve_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_new
    linkageType: ''
    returnType: struct fts_backend
    signature: struct fts_backend *fts_backend_flatcurve_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:46,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:49,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:50,1
    - Dst: fts_flatcurve_mail_user_get
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:52,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:54,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:58,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:59,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:61,1
    - Dst: fts_flatcurve_xapian_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:65,1
    - Dst: fts_backend_flatcurve_close_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - _backend
    - error_r
    argTypes:
    - struct fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 68
    functionName: fts_backend_flatcurve_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - event_create
    - container_of
    - event_unref
    - fts_flatcurve_xapian_init
    - fts_flatcurve_mail_user_get
    - fts_backend_flatcurve_close_mailbox
    - event_add_category
    - str_new
    linkageType: ''
    returnType: int
    signature: int fts_backend_flatcurve_init(struct fts_backend *_backend, const
      char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:73,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:74,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct flatcurve_fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 76
    functionName: fts_backend_flatcurve_clear_mailbox_params
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void fts_backend_flatcurve_clear_mailbox_params(struct flatcurve_fts_backend
      *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:82,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:84,1
    - Dst: fts_flatcurve_xapian_close
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:85,1
    - Dst: fts_backend_flatcurve_clear_mailbox_params
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:86,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - backend
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: fts_backend_flatcurve_close_mailbox
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 2
    functionsReached:
    - str_len
    - fts_flatcurve_xapian_close
    - event_set_append_log_prefix
    - fts_backend_flatcurve_clear_mailbox_params
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fts_backend_flatcurve_close_mailbox(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_refresh
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:99,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 103
    functionName: fts_backend_flatcurve_refresh
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - e_error
    - fts_flatcurve_xapian_refresh
    linkageType: ''
    returnType: int
    signature: int fts_backend_flatcurve_refresh(struct fts_backend * _backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_flatcurve_close_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:112,1
    - Dst: fts_flatcurve_xapian_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:113,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:115,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:118,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:119,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 121
    functionName: fts_backend_flatcurve_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - event_unref
    - fts_flatcurve_xapian_deinit
    - pool_unref
    - e_error
    - fts_backend_flatcurve_close_mailbox
    - i_free
    linkageType: ''
    returnType: void
    signature: void fts_backend_flatcurve_deinit(struct fts_backend *_backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:131,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:132,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:132,1
    - Dst: fts_backend_flatcurve_close_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:135,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:136,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:141,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:142,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:143,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:145,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:149,1
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:152,1
    - Dst: mail_user_get_volatile_dir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:153,1
    - Dst: fts_backend_flatcurve_set_mailbox_params
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:155,1
    - Dst: fts_flatcurve_xapian_set_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - backend
    - box
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: fts_backend_flatcurve_set_mailbox
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 1
    functionsReached:
    - str_c
    - mailbox_get_storage
    - mail_storage_get_user
    - mailbox_open
    - mailbox_get_last_internal_error
    - str_len
    - mail_user_get_volatile_dir
    - t_strdup_printf
    - strcasecmp
    - fts_backend_flatcurve_set_mailbox_params
    - fts_flatcurve_xapian_set_mailbox
    - fts_backend_flatcurve_close_mailbox
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int fts_backend_flatcurve_set_mailbox(struct flatcurve_fts_backend
      *backend,\n                                  struct mailbox *box, const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:168,1
    - Dst: fts_backend_flatcurve_clear_mailbox_params
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:169,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:171,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:172,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:174,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - backend
    - box
    - path
    - append_path_label
    - volatile_dir
    argTypes:
    - struct flatcurve_fts_backend*
    - char*
    - char*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 177
    functionName: fts_backend_flatcurve_set_mailbox_params
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 1
    functionsReached:
    - str_append
    - fts_backend_flatcurve_clear_mailbox_params
    - str_printfa
    - str_len
    linkageType: ''
    returnType: void
    signature: "void fts_backend_flatcurve_set_mailbox_params(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t\t const char *box, const char *path,\n\t\t\t\t\t bool append_path_label,\n\t\t\t\t\t
      const char *volatile_dir)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_flatcurve_set_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:187,1
    - Dst: fts_flatcurve_xapian_get_last_uid
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:188,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _backend
    - box
    - last_uid_r
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 179
    functionDepth: 4
    functionLinenumber: 179
    functionLinenumberEnd: 193
    functionName: fts_backend_flatcurve_get_last_uid
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - fts_backend_flatcurve_set_mailbox
    - fts_flatcurve_xapian_get_last_uid
    - e_error
    linkageType: ''
    returnType: int
    signature: "int fts_backend_flatcurve_get_last_uid(struct fts_backend *_backend,\n\t\t\t\t
      \  struct mailbox *box, uint32_t *last_uid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:202,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:206,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 210
    functionName: fts_backend_flatcurve_update_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - p_new
    - str_new
    linkageType: ''
    returnType: struct fts_backend_update_context
    signature: struct fts_backend_update_context *fts_backend_flatcurve_update_init(struct
      fts_backend *_backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:222,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:223,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:225,1
    - Dst: str_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:229,1
    - Dst: p_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 233
    functionName: fts_backend_flatcurve_update_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - timeval_diff_msecs
    - p_free
    - e_debug
    - str_free
    linkageType: ''
    returnType: int
    signature: int fts_backend_flatcurve_update_deinit(struct fts_backend_update_context
      *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_flatcurve_close_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:244,1
    - Dst: fts_backend_flatcurve_set_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:245,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - _ctx
    - box
    argTypes:
    - struct fts_backend_update_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 248
    functionName: fts_backend_flatcurve_update_set_mailbox
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - fts_backend_flatcurve_set_mailbox
    - fts_backend_flatcurve_close_mailbox
    - e_error
    linkageType: ''
    returnType: void
    signature: "void fts_backend_flatcurve_update_set_mailbox(struct fts_backend_update_context
      *_ctx,\n\t\t\t\t\t struct mailbox *box)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:258,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:258,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:260,1
    - Dst: fts_flatcurve_xapian_expunge
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:264,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - uid
    argTypes:
    - struct fts_backend_update_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 266
    functionName: fts_backend_flatcurve_update_expunge
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - str_c
    - e_debug
    - e_error
    - event_create_passthrough
    - fts_flatcurve_xapian_expunge
    linkageType: ''
    returnType: void
    signature: "void fts_backend_flatcurve_update_expunge(struct fts_backend_update_context
      *_ctx,\n\t\t\t\t     uint32_t uid)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:275,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:275,1
    - Dst: fts_flatcurve_xapian_init_msg
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:293,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:295,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:305,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:305,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:307,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:314,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:315,1
    - Dst: fts_header_want_indexed
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:316,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:323,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - _ctx
    - key
    argTypes:
    - struct fts_backend_update_context*
    - struct fts_backend_build_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 326
    functionName: fts_backend_flatcurve_update_set_build_key
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - str_c
    - fts_header_want_indexed
    - str_len
    - fts_flatcurve_xapian_init_msg
    - e_debug
    - i_unreached
    - e_error
    - event_create_passthrough
    - str_append
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool fts_backend_flatcurve_update_set_build_key(struct fts_backend_update_context
      *_ctx,\n\t\t\t\t\t   const struct fts_backend_build_key *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 335
    functionName: fts_backend_flatcurve_update_unset_build_key
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void fts_backend_flatcurve_update_unset_build_key(struct fts_backend_update_context
      *_ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:344,1
    - Dst: I_MIN
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:355,1
    - Dst: uni_utf8_data_truncate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:356,1
    - Dst: fts_flatcurve_xapian_index_header
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:363,1
    - Dst: fts_flatcurve_xapian_index_body
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:366,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:369,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:373,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - _ctx
    - data
    - size
    argTypes:
    - struct fts_backend_update_context*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 375
    functionName: fts_backend_flatcurve_update_build_more
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - I_MIN
    - fts_flatcurve_xapian_index_body
    - e_error
    - fts_flatcurve_xapian_index_header
    - i_assert
    - uni_utf8_data_truncate
    linkageType: ''
    returnType: int
    signature: "int fts_backend_flatcurve_update_build_more(struct fts_backend_update_context
      *_ctx,\n\t\t\t\t\tconst unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:380,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:381,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - uids
    argTypes:
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 383
    functionName: fts_backend_flatcurve_seq_range_string
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - imap_write_seq_range
    - str_c
    - t_str_new
    linkageType: ''
    returnType: char
    signature: 'char *

      fts_backend_flatcurve_seq_range_string(ARRAY_TYPE(seq_range) *uids)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:390,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - backend
    - pool
    argTypes:
    - struct flatcurve_fts_backend*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 396
    functionName: fts_backend_flatcurve_create_query
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - p_new
    - str_new
    linkageType: ''
    returnType: struct flatcurve_fts_query
    signature: "struct flatcurve_fts_query *\nfts_backend_flatcurve_create_query(struct
      flatcurve_fts_backend *backend,\n\t\t\t\t   pool_t pool)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:409,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:417,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:418,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:422,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:423,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:424,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:426,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:427,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:430,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:431,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:432,1
    - Dst: fts_flatcurve_xapian_uid_exists
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:433,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:437,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:441,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:442,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:443,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:445,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:446,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:447,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:448,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:453,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:457,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:463,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:464,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:465,1
    - Dst: fts_backend_flatcurve_create_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:468,1
    - Dst: fts_flatcurve_xapian_build_query_match_all
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:469,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:471,1
    - Dst: fts_flatcurve_xapian_query_iter_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:473,1
    - Dst: fts_flatcurve_xapian_query_iter_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:474,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:476,1
    - Dst: fts_flatcurve_xapian_expunge
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:477,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:479,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:481,1
    - Dst: fts_flatcurve_xapian_query_iter_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:485,1
    - Dst: fts_flatcurve_xapian_destroy_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:486,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:490,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:491,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:491,1
    - Dst: fts_backend_flatcurve_seq_range_string
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:494,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:495,1
    - Dst: fts_backend_flatcurve_seq_range_string
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:498,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:499,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:499,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:504,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:504,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 4
    argNames:
    - backend
    - box
    - pool
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct mailbox*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 508
    functionName: fts_backend_flatcurve_rescan_box
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - mail_search_build_add_all
    - seq_range_exists
    - mailbox_get_last_internal_error
    - p_array_init
    - seq_range_array_iter_init
    - fts_flatcurve_xapian_query_iter_init
    - array_is_empty
    - event_create_passthrough
    - fts_flatcurve_xapian_query_iter_deinit
    - fts_flatcurve_xapian_expunge
    - mailbox_transaction_begin
    - mailbox_sync
    - mailbox_search_deinit
    - fts_backend_flatcurve_create_query
    - fts_flatcurve_xapian_uid_exists
    - e_error
    - mail_search_build_init
    - mailbox_transaction_commit
    - mailbox_search_init
    - fts_flatcurve_xapian_query_iter_next
    - i_assert
    - struct event_passthrough*::add_str
    - seq_range_array_add
    - e_debug
    - fts_backend_flatcurve_seq_range_string
    - fts_flatcurve_xapian_destroy_query
    - ARRAY_TYPE
    - mailbox_search_next
    - mail_search_args_unref
    - fts_flatcurve_xapian_build_query_match_all
    linkageType: ''
    returnType: int
    signature: "int fts_backend_flatcurve_rescan_box(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t struct mailbox *box, pool_t pool,\n\t\t\t\t const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:531,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:532,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:536,1
    - Dst: fts_backend_flatcurve_set_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:539,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:541,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:543,1
    - Dst: fts_flatcurve_xapian_optimize_box
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:549,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:551,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:557,1
    - Dst: fts_backend_flatcurve_rescan_box
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:560,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:562,1
    - Dst: p_clear
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:565,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:569,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:571,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:572,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:573,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:576,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 2
    argNames:
    - _backend
    - act
    argTypes:
    - struct fts_backend*
    - enum fts_backend_flatcurve_action
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 512
    functionDepth: 4
    functionLinenumber: 512
    functionLinenumberEnd: 579
    functionName: fts_backend_flatcurve_iterate_ns
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - mailbox_list_get_last_internal_error
    - mailbox_free
    - mailbox_list_iter_deinit
    - fts_backend_flatcurve_rescan_box
    - mailbox_list_iter_next
    - pool_unref
    - e_error
    - mailbox_alloc
    - mailbox_list_iter_init
    - fts_backend_flatcurve_set_mailbox
    - fts_flatcurve_xapian_optimize_box
    - p_clear
    linkageType: ''
    returnType: int
    signature: "int fts_backend_flatcurve_iterate_ns(struct fts_backend *_backend,\n\t\t\t\t
      enum fts_backend_flatcurve_action act)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_flatcurve_iterate_ns
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 581
    functionDepth: 5
    functionLinenumber: 581
    functionLinenumberEnd: 585
    functionName: fts_backend_flatcurve_optimize
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - fts_backend_flatcurve_iterate_ns
    linkageType: ''
    returnType: int
    signature: int fts_backend_flatcurve_optimize(struct fts_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_flatcurve_iterate_ns
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 587
    functionDepth: 5
    functionLinenumber: 587
    functionLinenumberEnd: 591
    functionName: fts_backend_flatcurve_rescan
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - fts_backend_flatcurve_iterate_ns
    linkageType: ''
    returnType: int
    signature: int fts_backend_flatcurve_rescan(struct fts_backend *backend)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_flatcurve_create_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:611,1
    - Dst: fts_flatcurve_xapian_build_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:614,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:616,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:618,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:621,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:622,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:623,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:624,1
    - Dst: fts_backend_flatcurve_set_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:626,1
    - Dst: fts_flatcurve_xapian_run_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:631,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:640,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:648,1
    - Dst: fts_backend_flatcurve_seq_range_string
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:649,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:651,1
    - Dst: fts_backend_flatcurve_seq_range_string
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:652,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:655,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:655,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:657,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:660,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:663,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:663,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:664,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - _backend
    - boxes
    - args
    - flags
    - result
    argTypes:
    - struct fts_backend*
    - struct mailbox*[]
    - struct mail_search_arg*
    - enum fts_lookup_flags
    - struct fts_multi_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 593
    functionDepth: 4
    functionLinenumber: 593
    functionLinenumberEnd: 666
    functionName: fts_backend_flatcurve_lookup_multi
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - str_c
    - array_append_space
    - p_array_init
    - p_new
    - str_len
    - fts_flatcurve_xapian_run_query
    - e_debug
    - fts_backend_flatcurve_seq_range_string
    - fts_flatcurve_xapian_build_query
    - seq_range_count
    - array_not_empty
    - event_create_passthrough
    - fts_backend_flatcurve_set_mailbox
    - fts_backend_flatcurve_create_query
    linkageType: ''
    returnType: int
    signature: "int fts_backend_flatcurve_lookup_multi(struct fts_backend *_backend,\n\t\t\t\t
      \  struct mailbox *const boxes[],\n\t\t\t\t   struct mail_search_arg *args,\n\t\t\t\t
      \  enum fts_lookup_flags flags,\n\t\t\t\t   struct fts_multi_result *result)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:693,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:694,1
    - Dst: fts_backend_flatcurve_lookup_multi
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:696,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:704,1
    - Dst: array_append_array
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:705,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:707,1
    - Dst: array_append_array
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:708,1
    - Dst: array_append_array
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:710,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:713,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 5
    argNames:
    - _backend
    - box
    - args
    - flags
    - result
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - struct mail_search_arg*
    - enum fts_lookup_flags
    - struct fts_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 679
    functionDepth: 5
    functionLinenumber: 679
    functionLinenumberEnd: 716
    functionName: fts_backend_flatcurve_lookup
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - pool_unref
    - fts_backend_flatcurve_lookup_multi
    - array_is_created
    - array_append_array
    linkageType: ''
    returnType: int
    signature: "int fts_backend_flatcurve_lookup(struct fts_backend *_backend, struct
      mailbox *box,\n\t\t\t     struct mail_search_arg *args,\n\t\t\t     enum fts_lookup_flags
      flags,\n\t\t\t     struct fts_result *result)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:724,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:728,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:734,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:735,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:736,1
    - Dst: unlink
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:740,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c:741,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - path
    - error_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 747
    functionName: fts_backend_flatcurve_delete_dir
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    functionUses: 1
    functionsReached:
    - unlink
    - t_strdup_printf
    - stat
    - S_ISDIR
    - unlink_directory
    linkageType: ''
    returnType: int
    signature: int fts_backend_flatcurve_delete_dir(const char *path, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: std_move
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: std_move(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: std_move
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: std_move(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: ENUM_EMPTY
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENUM_EMPTY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:240,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:242,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct flatcurve_fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 245
    functionName: fts_flatcurve_xapian_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_new
    - hash_table_create
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_xapian_init(struct flatcurve_fts_backend *backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:252,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:254,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:256,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:259,1
    - Dst: fts_backend_flatcurve_set_mailbox_params
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:260,1
    - Dst: fts_flatcurve_xapian_optimize_box
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:264,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:266,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:269,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:270,1
    - Dst: fts_flatcurve_xapian_close
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:272,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:273,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:274,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct flatcurve_fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 277
    functionName: fts_flatcurve_xapian_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - fts_flatcurve_xapian_close
    - hash_table_iterate_init
    - pool_unref
    - e_error
    - fts_backend_flatcurve_set_mailbox_params
    - i_assert
    - hash_table_is_created
    - fts_flatcurve_xapian_optimize_box
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_xapian_deinit(struct flatcurve_fts_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:285,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:287,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:288,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - backend
    - fname
    argTypes:
    - struct flatcurve_fts_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 292
    functionName: fts_flatcurve_xapian_create_db_path
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - p_new
    - p_strdup_printf
    linkageType: ''
    returnType: struct flatcurve_xapian_db_path
    signature: "struct flatcurve_xapian_db_path *\nfts_flatcurve_xapian_create_db_path(struct
      flatcurve_fts_backend *backend,\n\t\t\t\t    const char *fname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:303,1
    - Dst: fts_backend_flatcurve_delete_dir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - backend
    - dbpath
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db_path*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 297
    functionDepth: 2
    functionLinenumber: 297
    functionLinenumberEnd: 305
    functionName: fts_flatcurve_xapian_delete
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - str_c
    - fts_backend_flatcurve_delete_dir
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_delete(struct flatcurve_fts_backend *backend,\n\t\t\t
      \   struct flatcurve_xapian_db_path *dbpath,\n\t\t\t    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:312,1
    - Dst: opendir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:314,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:314,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:317,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:318,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:320,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - backend
    - opts
    argTypes:
    - struct flatcurve_fts_backend*
    - enum flatcurve_xapian_db_opts
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 323
    functionName: fts_flatcurve_xapian_db_iter_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - str_c
    - p_new
    - opendir
    - HAS_NO_BITS
    - i_strdup_printf
    linkageType: ''
    returnType: flatcurve_xapian_db_iter
    signature: "flatcurve_xapian_db_iter *\nfts_flatcurve_xapian_db_iter_init(struct
      flatcurve_fts_backend *backend,\n\t\t\t\t  enum flatcurve_xapian_db_opts opts)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: readdir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:332,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:334,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:336,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:343,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:344,1
    - Dst: fts_flatcurve_xapian_db_iter_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:345,1
    - Dst: fts_flatcurve_xapian_create_db_path
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:348,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:352,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:353,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:355,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:359,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:364,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:367,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:369,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:371,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct flatcurve_xapian_db_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 375
    functionName: fts_flatcurve_xapian_db_iter_next
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - strcmp
    - readdir
    - str_c
    - fts_flatcurve_xapian_create_db_path
    - str_begins_with
    - fts_flatcurve_xapian_db_iter_next
    - stat
    - S_ISDIR
    - i_strdup_printf
    linkageType: ''
    returnType: bool
    signature: bool fts_flatcurve_xapian_db_iter_next(struct flatcurve_xapian_db_iter
      *iter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:385,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:387,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:389,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:394,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:395,1
    - Dst: p_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - _iter
    - error_r
    argTypes:
    - struct flatcurve_xapian_db_iter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 401
    functionName: fts_flatcurve_xapian_db_iter_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - str_c
    - p_free
    - t_strdup
    - closedir
    - i_strdup_printf
    - i_free
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_db_iter_deinit(struct flatcurve_xapian_db_iter
      **_iter,\n\t\t\t\t    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Xapian::WritableDatabase::WritableDatabase
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:416,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:420,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:423,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:424,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:432,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:435,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:439,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - backend
    - xdb
    - db_flags
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 443
    functionName: fts_flatcurve_xapian_write_db_get_do
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - e_debug
    - t_strdup_printf
    - get_description
    - Xapian::WritableDatabase::WritableDatabase
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_write_db_get_do(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t     struct flatcurve_xapian_db *xdb,\n\t\t\t\t     int db_flags,
      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:455,1
    - Dst: fts_flatcurve_xapian_write_db_get_do
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:459,1
    - Dst: fts_flatcurve_xapian_check_db_version
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:464,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:467,1
    - Dst: struct flatcurve_xapian_db*::dbw::get_doccount
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:468,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - backend
    - xdb
    - wopts
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db*
    - enum flatcurve_xapian_wdb
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 472
    functionName: fts_flatcurve_xapian_write_db_get
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - struct flatcurve_xapian_db*::dbw::get_doccount
    - fts_flatcurve_xapian_write_db_get_do
    - e_debug
    - HAS_ALL_BITS
    - fts_flatcurve_xapian_check_db_version
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_write_db_get(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t  struct flatcurve_xapian_db *xdb,\n\t\t\t\t  enum flatcurve_xapian_wdb
      wopts,\n\t\t\t\t  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:485,1
    - Dst: std::ostringstream::str
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:486,1
    - Dst: fts_flatcurve_xapian_create_db_path
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:488,1
    - Dst: std::string::c_str
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:489,1
    - Dst: rename
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:491,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:505,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - backend
    - path
    - newpath_r
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db_path*
    - struct flatcurve_xapian_db_path**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 508
    functionName: fts_flatcurve_xapian_rename_db
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - fts_flatcurve_xapian_create_db_path
    - rename
    - t_strdup_printf
    - i_rand_limit
    - std::ostringstream::str
    - std::string::c_str
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_rename_db(struct flatcurve_fts_backend *backend,\n\t\t\t
      \      struct flatcurve_xapian_db_path *path,\n\t\t\t       struct flatcurve_xapian_db_path
      **newpath_r,\n\t\t\t       const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct flatcurve_fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 516
    functionName: fts_flatcurve_xapian_need_optimize
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool fts_flatcurve_xapian_need_optimize(struct flatcurve_fts_backend
      *backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_need_optimize
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:523,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:526,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:527,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:529,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:529,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:530,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:531,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:531,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:532,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:532,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct flatcurve_fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 533
    functionName: fts_flatcurve_xapian_optimize_mailbox
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - hash_table_create
    - fts_flatcurve_xapian_need_optimize
    - hash_table_insert
    - hash_table_lookup
    - hash_table_is_created
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_xapian_optimize_mailbox(struct flatcurve_fts_backend
      *backend)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:553,1
    - Dst: fts_flatcurve_xapian_write_db_get
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:557,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:561,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:568,1
    - Dst: fts_flatcurve_xapian_rename_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:573,1
    - Dst: fts_flatcurve_xapian_close_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:576,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:579,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:580,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 6
    argNames:
    - backend
    - dbpath
    - type
    - open_wdb
    - xdb_r
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db_path*
    - enum flatcurve_xapian_db_type
    - bool
    - struct flatcurve_xapian_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 536
    functionDepth: 3
    functionLinenumber: 536
    functionLinenumberEnd: 591
    functionName: fts_flatcurve_xapian_db_add
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - fts_flatcurve_xapian_write_db_get
    - fts_flatcurve_xapian_close_db
    - hash_table_remove
    - fts_flatcurve_xapian_rename_db
    - hash_table_insert
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_db_add(struct flatcurve_fts_backend *backend,\n\t\t\t
      \   struct flatcurve_xapian_db_path *dbpath,\n\t\t\t    enum flatcurve_xapian_db_type
      type,\n\t\t\t    bool open_wdb,\n\t\t\t    struct flatcurve_xapian_db **xdb_r,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:600,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:607,1
    - Dst: md5_get_digest
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:609,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:609,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:609,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:611,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:613,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:614,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:617,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:619,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:624,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - backend
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 625
    functionName: fts_flatcurve_xapian_lock
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - str_len
    - file_create_locked
    - md5_get_digest
    - binary_to_hex
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_lock(struct flatcurve_fts_backend *backend,\n\t\t\t\t
      \    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_lock_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct flatcurve_fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 630
    functionName: fts_flatcurve_xapian_unlock
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - file_lock_free
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_xapian_unlock(struct flatcurve_fts_backend *backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Xapian::Database::Database
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:644,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:646,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:647,1
    - Dst: fts_flatcurve_xapian_check_db_version
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:651,1
    - Dst: struct flatcurve_xapian*::db_read::add_database
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:655,1
    - Dst: fts_flatcurve_xapian_optimize_mailbox
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:657,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - backend
    - xdb
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 633
    functionDepth: 2
    functionLinenumber: 633
    functionLinenumberEnd: 660
    functionName: fts_flatcurve_xapian_db_read_add
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - Xapian::Database::Database
    - t_strdup_printf
    - get_description
    - struct flatcurve_xapian*::db_read::add_database
    - fts_flatcurve_xapian_optimize_mailbox
    - fts_flatcurve_xapian_check_db_version
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_db_read_add(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t struct flatcurve_xapian_db *xdb,\n\t\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:676,1
    - Dst: i_microseconds
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:678,1
    - Dst: fts_flatcurve_xapian_db_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:679,1
    - Dst: fts_flatcurve_xapian_create_db_path
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - copts
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - enum flatcurve_xapian_db_close
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 663
    functionDepth: 4
    functionLinenumber: 663
    functionLinenumberEnd: 682
    functionName: fts_flatcurve_xapian_create_current
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - fts_flatcurve_xapian_create_db_path
    - fts_flatcurve_xapian_db_add
    - t_strdup_printf
    - i_microseconds
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_create_current(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t    enum flatcurve_xapian_db_close copts,\n\t\t\t\t    const
      char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_count
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:710,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:711,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:719,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:719,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:720,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:724,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:726,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:730,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:732,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:734,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:736,1
    - Dst: fts_flatcurve_xapian_lock
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:742,1
    - Dst: fts_flatcurve_xapian_db_iter_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:747,1
    - Dst: fts_flatcurve_xapian_db_iter_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:748,1
    - Dst: fts_flatcurve_xapian_db_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:749,1
    - Dst: fts_flatcurve_xapian_db_iter_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:754,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:756,1
    - Dst: fts_flatcurve_xapian_unlock
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:761,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:770,1
    - Dst: fts_flatcurve_xapian_create_current
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:774,1
    - Dst: fts_flatcurve_xapian_unlock
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:778,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 42
    argCount: 3
    argNames:
    - backend
    - opts
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - enum flatcurve_xapian_db_opts
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 702
    functionDepth: 5
    functionLinenumber: 702
    functionLinenumberEnd: 780
    functionName: fts_flatcurve_xapian_db_populate
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - str_c
    - fts_flatcurve_xapian_db_iter_init
    - mailbox_list_mkdir_root
    - fts_flatcurve_xapian_lock
    - fts_flatcurve_xapian_db_iter_deinit
    - fts_flatcurve_xapian_db_iter_next
    - fts_flatcurve_xapian_unlock
    - t_strdup_printf
    - e_error
    - fts_flatcurve_xapian_create_current
    - fts_flatcurve_xapian_db_add
    - stat
    - S_ISDIR
    - hash_table_count
    - HAS_ALL_BITS
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_db_populate(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t enum flatcurve_xapian_db_opts opts,\n\t\t\t\t const char
      **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:790,1
    - Dst: fts_flatcurve_xapian_db_populate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:803,1
    - Dst: fts_flatcurve_xapian_write_db_get
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:809,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 4
    argNames:
    - backend
    - opts
    - dbw_current_r
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - enum flatcurve_xapian_db_opts
    - struct flatcurve_xapian_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 783
    functionDepth: 6
    functionLinenumber: 783
    functionLinenumberEnd: 815
    functionName: fts_flatcurve_xapian_write_db_current
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - ENUM_EMPTY
    - fts_flatcurve_xapian_write_db_get
    - fts_flatcurve_xapian_db_populate
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_write_db_current(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t      enum flatcurve_xapian_db_opts opts,\n\t\t\t\t      struct
      flatcurve_xapian_db **dbw_current_r,\n\t\t\t\t      const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: struct flatcurve_xapian*::db_read::reopen
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:832,1
    - Dst: fts_flatcurve_xapian_close
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:839,1
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:841,1
    - Dst: fts_flatcurve_xapian_db_populate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:846,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:849,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:850,1
    - Dst: Xapian::Database::Database
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:853,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:855,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:856,1
    - Dst: fts_flatcurve_xapian_db_read_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:858,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:860,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:862,1
    - Dst: fts_flatcurve_xapian_mailbox_stats
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:864,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:867,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 4
    argNames:
    - backend
    - opts
    - db_read_r
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - enum flatcurve_xapian_db_opts
    - Xapian::Database**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 818
    functionDepth: 6
    functionLinenumber: 818
    functionLinenumberEnd: 872
    functionName: fts_flatcurve_xapian_read_db
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - fts_flatcurve_xapian_close
    - e_debug
    - Xapian::Database::Database
    - hash_table_iterate_init
    - fts_flatcurve_xapian_db_populate
    - e_error
    - fts_flatcurve_xapian_read_db
    - fts_flatcurve_xapian_db_read_add
    - hash_table_count
    - HAS_ALL_BITS
    - struct flatcurve_xapian*::db_read::reopen
    - fts_flatcurve_xapian_mailbox_stats
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_read_db(struct flatcurve_fts_backend *backend,\n\t\t\t
      \    enum flatcurve_xapian_db_opts opts,\n\t\t\t     Xapian::Database **db_read_r,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:886,1
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:888,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:894,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:895,1
    - Dst: imap_search_args_check
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:899,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:902,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:904,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:908,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:913,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - backend
    - check
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct fts_flatcurve_xapian_db_check*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 875
    functionDepth: 7
    functionLinenumber: 875
    functionLinenumberEnd: 915
    functionName: fts_flatcurve_xapian_mailbox_check
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - i_zero
    - hash_table_iterate_deinit
    - imap_search_args_check
    - hash_table_iterate
    - hash_table_iterate_init
    - t_strdup_printf
    - e_error
    - get_description
    - fts_flatcurve_xapian_read_db
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_mailbox_check(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t   struct fts_flatcurve_xapian_db_check *check,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_write_db_current
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:927,1
    - Dst: fts_flatcurve_xapian_close_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:932,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - backend
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 918
    functionDepth: 7
    functionLinenumber: 918
    functionLinenumberEnd: 934
    functionName: fts_flatcurve_xapian_mailbox_rotate
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - fts_flatcurve_xapian_close_db
    - fts_flatcurve_xapian_write_db_current
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_mailbox_rotate(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:949,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:951,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:955,1
    - Dst: struct flatcurve_xapian*::db_read::get_doccount
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:956,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - backend
    - stats
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct fts_flatcurve_xapian_db_stats*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 937
    functionDepth: 7
    functionLinenumber: 937
    functionLinenumberEnd: 960
    functionName: fts_flatcurve_xapian_mailbox_stats
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 2
    functionsReached:
    - i_zero
    - struct flatcurve_xapian*::db_read::get_doccount
    - i_assert
    - fts_flatcurve_xapian_read_db
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_mailbox_stats(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t   struct fts_flatcurve_xapian_db_stats *stats,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:973,1
    - Dst: t_realpath
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:979,1
    - Dst: strstr
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:992,1
    - Dst: t_strndup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1014,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1017,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 3
    argNames:
    - path
    - dir_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 1019
    functionName: fts_flatcurve_database_find_dir
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - t_realpath
    - strlen
    - t_strdup_printf
    - t_strndup
    - strstr
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_database_find_dir(const char *path, const char **dir_r,\n\t\t\t\t\t
      \  const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_database_find_dir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1037,1
    - Dst: opendir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1040,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1042,1
    - Dst: readdir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1049,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1051,1
    - Dst: closedir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1052,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1053,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1061,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1062,1
    - Dst: closedir
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1066,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1067,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1072,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 3
    argNames:
    - arg_path
    - index_path_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1078
    functionName: fts_flatcurve_database_locate_dir
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - readdir
    - opendir
    - i_error
    - str_begins_with
    - t_strdup_printf
    - fts_flatcurve_database_find_dir
    - closedir
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_database_locate_dir(const char *arg_path,\n\t\t\t\t
      \     const char **index_path_r,\n\t\t\t\t      const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1097,1
    - Dst: Xapian::Database*::allterms_begin
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1101,1
    - Dst: Xapian::Database*::allterms_end
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1101,1
    - Dst: std::string::data
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1105,1
    - Dst: Xapian::TermIterator::get_termfreq
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1122,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1123,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1124,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1127,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1129,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1129,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 4
    argNames:
    - headers
    - backend
    - terms
    - error_r
    argTypes:
    - bool
    - struct flatcurve_fts_backend*
    - HASH_TABLE_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1081
    functionDepth: 7
    functionLinenumber: 1081
    functionLinenumberEnd: 1132
    functionName: fts_flatcurve_database_terms_fetch
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - Xapian::Database*::allterms_end
    - hash_table_update
    - POINTER_CAST
    - Xapian::Database*::allterms_begin
    - Xapian::TermIterator::get_termfreq
    - fts_flatcurve_xapian_read_db
    - std::string::data
    - hash_table_lookup_full
    - POINTER_CAST_TO
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_database_terms_fetch(bool headers,\n\t\t\t\t   struct
      flatcurve_fts_backend *backend,\n\t\t\t\t   HASH_TABLE_TYPE(term_counter) *terms,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1141,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1142,1
    - Dst: str_new_const
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1143,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1143,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1144,1
    - Dst: fts_flatcurve_xapian_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1145,1
    - Dst: fts_flatcurve_database_terms_fetch
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1147,1
    - Dst: fts_flatcurve_xapian_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1150,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1151,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - headers
    - path
    - terms
    - error_r
    argTypes:
    - bool
    - char*
    - HASH_TABLE_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1135
    functionDepth: 8
    functionLinenumber: 1135
    functionLinenumberEnd: 1155
    functionName: fts_flatcurve_database_terms
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - event_create
    - event_unref
    - fts_flatcurve_database_terms_fetch
    - strlen
    - fts_flatcurve_xapian_deinit
    - pool_unref
    - str_new_const
    - fts_flatcurve_xapian_init
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_database_terms(bool headers, const char *path,\n\t\t\t\t
      HASH_TABLE_TYPE(term_counter) *terms,\n\t\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1159,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1159,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct flatcurve_fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1157
    functionDepth: 1
    functionLinenumber: 1157
    functionLinenumberEnd: 1162
    functionName: fts_flatcurve_xapian_set_mailbox
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - event_set_append_log_prefix
    - p_strdup_printf
    - str_c
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_xapian_set_mailbox(struct flatcurve_fts_backend
      *backend)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1171,1
    - Dst: Xapian::Database*::get_metadata
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1175,1
    - Dst: std::string::c_str
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1176,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1178,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1179,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1181,1
    - Dst: fts_flatcurve_xapian_write_db_get
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1189,1
    - Dst: fts_flatcurve_xapian_close_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1192,1
    - Dst: struct flatcurve_xapian_db*::db::reopen
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1195,1
    - Dst: struct flatcurve_xapian_db*::dbw::set_metadata
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1203,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1204,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - backend
    - xdb
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1165
    functionDepth: 3
    functionLinenumber: 1165
    functionLinenumberEnd: 1205
    functionName: fts_flatcurve_xapian_check_db_version
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 2
    functionsReached:
    - dec2str
    - str_c
    - struct flatcurve_xapian_db*::dbw::set_metadata
    - fts_flatcurve_xapian_write_db_get
    - Xapian::Database*::get_metadata
    - fts_flatcurve_xapian_close_db
    - struct flatcurve_xapian_db*::db::reopen
    - e_error
    - ENUM_EMPTY
    - str_to_uint
    - std::string::c_str
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_check_db_version(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t      struct flatcurve_xapian_db *xdb,\n\t\t\t\t      const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1232,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1234,1
    - Dst: struct flatcurve_xapian_db*::db::get_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1238,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1247,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1247,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1252,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - backend
    - uid
    - xdb_r
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - uint32_t
    - struct flatcurve_xapian_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1223
    functionDepth: 1
    functionLinenumber: 1223
    functionLinenumberEnd: 1254
    functionName: fts_flatcurve_xapian_uid_exists_db
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - struct flatcurve_xapian_db*::db::get_document
    - get_description
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_uid_exists_db(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t   uint32_t uid,\n\t\t\t\t   struct flatcurve_xapian_db **xdb_r,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1264,1
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1266,1
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1268,1
    - Dst: fts_flatcurve_xapian_uid_exists_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1272,1
    - Dst: fts_flatcurve_xapian_write_db_get
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - backend
    - uid
    - xdb_r
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - uint32_t
    - struct flatcurve_xapian_db**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1257
    functionDepth: 7
    functionLinenumber: 1257
    functionLinenumberEnd: 1282
    functionName: fts_flatcurve_xapian_write_db_by_uid
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - fts_flatcurve_xapian_uid_exists_db
    - fts_flatcurve_xapian_read_db
    - ENUM_EMPTY
    - fts_flatcurve_xapian_write_db_get
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_write_db_by_uid(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t     uint32_t uid,\n\t\t\t\t     struct flatcurve_xapian_db
      **xdb_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct flatcurve_xapian_db*::dbw::get_doccount
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1298,1
    - Dst: fts_flatcurve_xapian_close_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1299,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1305,1
    - Dst: fts_flatcurve_xapian_close_dbs
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1308,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - backend
    - xdb
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1285
    functionDepth: 1
    functionLinenumber: 1285
    functionLinenumberEnd: 1313
    functionName: fts_flatcurve_xapian_check_commit_limit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - e_debug
    - struct flatcurve_xapian_db*::dbw::get_doccount
    - fts_flatcurve_xapian_close_db
    - fts_flatcurve_xapian_close_dbs
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_check_commit_limit(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t\tstruct flatcurve_xapian_db *xdb,\n\t\t\t\t\tconst char
      **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1321,1
    - Dst: fts_flatcurve_xapian_write_db_current
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1329,1
    - Dst: struct flatcurve_xapian_db*::dbw::replace_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1336,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1338,1
    - Dst: what
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1343,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1345,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1348,1
    - Dst: fts_flatcurve_xapian_check_commit_limit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1361,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - backend
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1316
    functionDepth: 7
    functionLinenumber: 1316
    functionLinenumberEnd: 1362
    functionName: fts_flatcurve_xapian_clear_document
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - t_strdup_printf
    - get_description
    - ENUM_EMPTY
    - fts_flatcurve_xapian_write_db_current
    - fts_flatcurve_xapian_check_commit_limit
    - what
    - struct flatcurve_xapian_db*::dbw::replace_document
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_clear_document(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t    const char **error_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_clear_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1373,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1377,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1381,1
    - Dst: struct flatcurve_xapian_db*::dbw::commit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1390,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1393,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1393,1
    - Dst: struct flatcurve_xapian_db*::dbw::close
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1396,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1402,1
    - Dst: struct flatcurve_xapian_db*::dbw::commit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1405,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1409,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1409,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1418,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1419,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1421,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1429,1
    - Dst: fts_flatcurve_xapian_lock
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1439,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1440,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1442,1
    - Dst: fts_flatcurve_xapian_create_current
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1452,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1454,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1457,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1457,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1459,1
    - Dst: fts_flatcurve_xapian_unlock
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1464,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1469,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 4
    argNames:
    - backend
    - xdb
    - opts
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - struct flatcurve_xapian_db*
    - enum flatcurve_xapian_db_close
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1365
    functionDepth: 8
    functionLinenumber: 1365
    functionLinenumberEnd: 1476
    functionName: fts_flatcurve_xapian_close_db
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 4
    functionsReached:
    - i_gettimeofday
    - str_c
    - p_strdup
    - timeval_diff_msecs
    - fts_flatcurve_xapian_lock
    - e_debug
    - fts_flatcurve_xapian_unlock
    - HAS_ANY_BITS
    - struct flatcurve_xapian_db*::dbw::commit
    - get_description
    - fts_flatcurve_xapian_clear_document
    - HAS_ALL_BITS
    - e_error
    - struct flatcurve_xapian_db*::dbw::close
    - fts_flatcurve_xapian_create_current
    - event_create_passthrough
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_close_db(struct flatcurve_fts_backend *backend,\n\t\t\t
      \     struct flatcurve_xapian_db *xdb,\n\t\t\t      enum flatcurve_xapian_db_close
      opts,\n\t\t\t      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1489,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1490,1
    - Dst: fts_flatcurve_xapian_close_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1493,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1495,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1499,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - backend
    - opts
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - enum flatcurve_xapian_db_close
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1479
    functionDepth: 9
    functionLinenumber: 1479
    functionLinenumberEnd: 1505
    functionName: fts_flatcurve_xapian_close_dbs
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - fts_flatcurve_xapian_close_db
    - hash_table_iterate_init
    - e_error
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_close_dbs(struct flatcurve_fts_backend *backend,\n\t\t\t
      \      enum flatcurve_xapian_db_close opts,\n\t\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_close_dbs
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - backend
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1508
    functionDepth: 10
    functionLinenumber: 1508
    functionLinenumberEnd: 1513
    functionName: fts_flatcurve_xapian_refresh
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - fts_flatcurve_xapian_close_dbs
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_refresh(struct flatcurve_fts_backend *backend,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_close_dbs
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1520,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1523,1
    - Dst: struct flatcurve_xapian*::db_read::close
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1530,1
    - Dst: p_clear
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - backend
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1516
    functionDepth: 10
    functionLinenumber: 1516
    functionLinenumberEnd: 1537
    functionName: fts_flatcurve_xapian_close
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 3
    functionsReached:
    - struct flatcurve_xapian*::db_read::close
    - hash_table_clear
    - p_clear
    - fts_flatcurve_xapian_close_dbs
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_close(struct flatcurve_fts_backend *backend,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Xapian::Enquire::set_docid_order
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1546,1
    - Dst: Xapian::Enquire::set_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1547,1
    - Dst: Xapian::Enquire::get_mset
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1549,1
    - Dst: Xapian::MSet::empty
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1550,1
    - Dst: Xapian::MSet::begin
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - db
    argTypes:
    - struct flatcurve_fts_backend*
    - Xapian::Database*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1539
    functionDepth: 0
    functionLinenumber: 1539
    functionLinenumberEnd: 1552
    functionName: fts_flatcurve_xapian_get_last_uid_query
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - Xapian::Enquire::set_docid_order
    - Xapian::Enquire::get_mset
    - Xapian::Enquire::set_query
    - Xapian::MSet::begin
    - Xapian::MSet::empty
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t fts_flatcurve_xapian_get_last_uid_query(struct flatcurve_fts_backend
      *backend ATTR_UNUSED,\n\t\t\t\t\tXapian::Database *db)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1564,1
    - Dst: Xapian::Database*::get_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1576,1
    - Dst: Xapian::Database*::get_lastdocid
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1576,1
    - Dst: fts_flatcurve_xapian_get_last_uid_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1581,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - backend
    - last_uid_r
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - uint32_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1555
    functionDepth: 7
    functionLinenumber: 1555
    functionLinenumberEnd: 1587
    functionName: fts_flatcurve_xapian_get_last_uid
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 2
    functionsReached:
    - Xapian::Database*::get_lastdocid
    - fts_flatcurve_xapian_read_db
    - fts_flatcurve_xapian_get_last_uid_query
    - Xapian::Database*::get_document
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_get_last_uid(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t      uint32_t *last_uid_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1598,1
    - Dst: fts_flatcurve_xapian_uid_exists_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - backend
    - uid
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - uint32_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1590
    functionDepth: 7
    functionLinenumber: 1590
    functionLinenumberEnd: 1603
    functionName: fts_flatcurve_xapian_uid_exists
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - fts_flatcurve_xapian_uid_exists_db
    - fts_flatcurve_xapian_read_db
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_uid_exists(struct flatcurve_fts_backend *backend,\n\t\t\t\t
      \   uint32_t uid, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_write_db_by_uid
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1611,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1613,1
    - Dst: struct flatcurve_xapian_db*::dbw::delete_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1619,1
    - Dst: fts_flatcurve_xapian_check_commit_limit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1620,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1625,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1627,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - backend
    - uid
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - uint32_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1630
      start: 1606
    functionDepth: 8
    functionLinenumber: 1606
    functionLinenumberEnd: 1630
    functionName: fts_flatcurve_xapian_expunge
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 2
    functionsReached:
    - e_debug
    - struct flatcurve_xapian_db*::dbw::delete_document
    - t_strdup_printf
    - get_description
    - fts_flatcurve_xapian_check_commit_limit
    - fts_flatcurve_xapian_write_db_by_uid
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_expunge(struct flatcurve_fts_backend *backend,\n\t\t\t\t
      uint32_t uid, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1638,1
    - Dst: fts_flatcurve_xapian_clear_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1647,1
    - Dst: fts_flatcurve_xapian_write_db_current
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1650,1
    - Dst: struct flatcurve_xapian_db*::dbw::get_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1656,1
    - Dst: Xapian::Document::Document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1660,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1667,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1667,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct flatcurve_fts_backend_update_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1633
    functionDepth: 8
    functionLinenumber: 1633
    functionLinenumberEnd: 1670
    functionName: fts_flatcurve_xapian_init_msg
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - struct flatcurve_xapian_db*::dbw::get_document
    - get_description
    - fts_flatcurve_xapian_clear_document
    - ENUM_EMPTY
    - fts_flatcurve_xapian_write_db_current
    - Xapian::Document::Document
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_init_msg(struct flatcurve_fts_backend_update_context
      *ctx,\n\t\t\t      const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_init_msg
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1680,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1684,1
    - Dst: uni_utf8_data_is_valid
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1684,1
    - Dst: str_lcase
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1688,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1688,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1688,1
    - Dst: struct flatcurve_xapian*::doc::add_boolean_term
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1691,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1691,1
    - Dst: str_ucase
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1696,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1698,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1699,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1699,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1700,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1701,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1702,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1705,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1716,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1717,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1718,1
    - Dst: i_tolower
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1718,1
    - Dst: str_append_data
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1719,1
    - Dst: struct flatcurve_xapian*::doc::add_term
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1720,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1720,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1723,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1724,1
    - Dst: i_tolower
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1724,1
    - Dst: str_append_data
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1725,1
    - Dst: struct flatcurve_xapian*::doc::add_term
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1726,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1726,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 4
    argNames:
    - ctx
    - data
    - size
    - error_r
    argTypes:
    - struct flatcurve_fts_backend_update_context*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1672
    functionDepth: 9
    functionLinenumber: 1672
    functionLinenumberEnd: 1732
    functionName: fts_flatcurve_xapian_index_header
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - str_c
    - str_len
    - uni_utf8_data_is_valid
    - strlen
    - t_strdup_printf
    - t_str_new
    - str_append_c
    - fts_flatcurve_xapian_init_msg
    - t_strdup_noconst
    - str_append_data
    - i_assert
    - uni_utf8_char_bytes
    - str_append
    - struct flatcurve_xapian*::doc::add_boolean_term
    - str_ucase
    - str_lcase
    - str_truncate
    - struct flatcurve_xapian*::doc::add_term
    - i_tolower
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_index_header(struct flatcurve_fts_backend_update_context
      *ctx,\n\t\t\t\t  const unsigned char *data, size_t size,\n\t\t\t\t  const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_init_msg
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1744,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1748,1
    - Dst: uni_utf8_data_is_valid
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1748,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1751,1
    - Dst: str_append_data
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1752,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1754,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1755,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1756,1
    - Dst: i_tolower
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1765,1
    - Dst: struct flatcurve_xapian*::doc::add_term
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1766,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - data_ro
    - size
    - error_r
    argTypes:
    - struct flatcurve_fts_backend_update_context*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1736
    functionDepth: 9
    functionLinenumber: 1736
    functionLinenumberEnd: 1771
    functionName: fts_flatcurve_xapian_index_body
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - t_str_new
    - uni_utf8_char_bytes
    - str_len
    - fts_flatcurve_xapian_init_msg
    - uni_utf8_data_is_valid
    - str_append_data
    - struct flatcurve_xapian*::doc::add_term
    - i_assert
    - i_tolower
    - str_c_modifiable
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_index_body(struct flatcurve_fts_backend_update_context
      *ctx,\n\t\t\t\tconst unsigned char *data_ro, size_t size,\n\t\t\t\tconst char
      **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_close
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1781,1
    - Dst: fts_flatcurve_xapian_delete
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1782,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1784,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - backend
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1777
    functionDepth: 11
    functionLinenumber: 1777
    functionLinenumberEnd: 1790
    functionName: fts_flatcurve_xapian_delete_index
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - fts_flatcurve_xapian_close
    - e_error
    - fts_flatcurve_xapian_delete
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_delete_index(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1803,1
    - Dst: fts_flatcurve_xapian_write_db_get
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1807,1
    - Dst: Xapian::Enquire::set_docid_order
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1812,1
    - Dst: Xapian::Enquire::set_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1813,1
    - Dst: Xapian::Enquire::get_mset
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1815,1
    - Dst: Xapian::Database*::get_doccount
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1815,1
    - Dst: Xapian::MSet::begin
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1816,1
    - Dst: Xapian::MSet::begin
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1819,1
    - Dst: Xapian::MSet::end
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1819,1
    - Dst: Xapian::MSetIterator::get_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1820,1
    - Dst: struct flatcurve_xapian_db*::dbw::replace_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1822,1
    - Dst: Xapian::Document::get_docid
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1822,1
    - Dst: struct flatcurve_xapian_db*::dbw::commit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1824,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1828,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1828,1
    - Dst: fts_flatcurve_xapian_close_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1833,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - backend
    - db
    - path
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - Xapian::Database*
    - struct flatcurve_xapian_db_path*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1793
    functionDepth: 9
    functionLinenumber: 1793
    functionLinenumberEnd: 1835
    functionName: fts_flatcurve_xapian_optimize_rebuild
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - Xapian::MSetIterator::get_document
    - p_new
    - fts_flatcurve_xapian_write_db_get
    - Xapian::Enquire::set_docid_order
    - fts_flatcurve_xapian_close_db
    - Xapian::Enquire::get_mset
    - Xapian::Enquire::set_query
    - struct flatcurve_xapian_db*::dbw::commit
    - Xapian::MSet::end
    - get_description
    - Xapian::Database*::get_doccount
    - Xapian::MSet::begin
    - t_strdup
    - Xapian::Document::get_docid
    - struct flatcurve_xapian_db*::dbw::replace_document
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_optimize_rebuild(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t      Xapian::Database *db,\n\t\t\t\t      struct flatcurve_xapian_db_path
      *path,\n\t\t\t\t      const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1843,1
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1845,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1853,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1854,1
    - Dst: fts_flatcurve_xapian_write_db_get
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1856,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1860,1
    - Dst: fts_flatcurve_xapian_create_db_path
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1864,1
    - Dst: fts_flatcurve_xapian_delete
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1866,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1870,1
    - Dst: struct flatcurve_xapian_db*::reopen
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1874,1
    - Dst: struct flatcurve_xapian_db*::compact
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1875,1
    - Dst: fts_flatcurve_xapian_optimize_rebuild
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1892,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1895,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1897,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1899,1
    - Dst: get_description
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1899,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1903,1
    - Dst: fts_flatcurve_xapian_db_iter_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1909,1
    - Dst: fts_flatcurve_xapian_db_iter_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1912,1
    - Dst: fts_flatcurve_xapian_delete
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1915,1
    - Dst: fts_flatcurve_xapian_db_iter_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1923,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1925,1
    - Dst: fts_flatcurve_xapian_rename_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1934,1
    - Dst: fts_flatcurve_xapian_delete
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1935,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1939,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1940,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1941,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 3
    argNames:
    - backend
    - db
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - Xapian::Database*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1838
    functionDepth: 10
    functionLinenumber: 1838
    functionLinenumberEnd: 1945
    functionName: fts_flatcurve_xapian_optimize_box_do
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - fts_flatcurve_xapian_create_db_path
    - i_gettimeofday
    - fts_flatcurve_xapian_db_iter_init
    - hash_table_iterate
    - hash_table_iterate_init
    - struct flatcurve_xapian_db*::compact
    - t_strdup
    - hash_table_iterate_deinit
    - timeval_diff_msecs
    - fts_flatcurve_xapian_db_iter_next
    - fts_flatcurve_xapian_optimize_rebuild
    - get_description
    - fts_flatcurve_xapian_delete
    - fts_flatcurve_xapian_write_db_get
    - e_error
    - e_debug
    - fts_flatcurve_xapian_db_iter_deinit
    - ENUM_EMPTY
    - fts_flatcurve_xapian_rename_db
    - struct flatcurve_xapian_db*::reopen
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_optimize_box_do(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t     Xapian::Database *db, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1958,1
    - Dst: fts_flatcurve_xapian_need_optimize
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1963,1
    - Dst: fts_flatcurve_xapian_close
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1964,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1967,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1967,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1969,1
    - Dst: fts_flatcurve_xapian_lock
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1973,1
    - Dst: fts_flatcurve_xapian_optimize_box_do
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1974,1
    - Dst: fts_flatcurve_xapian_close
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1978,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1980,1
    - Dst: fts_flatcurve_xapian_unlock
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:1985,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - backend
    - error_r
    argTypes:
    - struct flatcurve_fts_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1987
      start: 1948
    functionDepth: 11
    functionLinenumber: 1948
    functionLinenumberEnd: 1987
    functionName: fts_flatcurve_xapian_optimize_box
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 2
    functionsReached:
    - str_c
    - fts_flatcurve_xapian_lock
    - e_debug
    - fts_flatcurve_xapian_close
    - fts_flatcurve_xapian_unlock
    - fts_flatcurve_xapian_need_optimize
    - e_error
    - fts_flatcurve_xapian_read_db
    - event_create_passthrough
    - fts_flatcurve_xapian_optimize_box_do
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_optimize_box(struct flatcurve_fts_backend
      *backend,\n\t\t\t\t      const char **error_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2004,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2007,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2013,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2017,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2018,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2019,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2022,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2023,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2029,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2030,1
    - Dst: fts_header_want_indexed
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2038,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2039,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2041,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2043,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2045,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2047,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2050,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2052,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2055,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2068,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2069,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2069,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2071,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2076,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2080,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2087,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2088,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2089,1
    - Dst: std_move
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2090,1
    - Dst: Xapian::Query::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2090,1
    - Dst: std_move
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2092,1
    - Dst: Xapian::Query::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2092,1
    - Dst: Xapian::Query::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2095,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 60
    argCount: 3
    argNames:
    - query
    - arg
    - term
    argTypes:
    - struct flatcurve_fts_query*
    - struct mail_search_arg*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2098
      start: 1989
    functionDepth: 1
    functionLinenumber: 1989
    functionLinenumberEnd: 2098
    functionName: fts_flatcurve_build_query_arg_term
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - t_str_lcase
    - str_printfa
    - t_str_ucase
    - fts_header_want_indexed
    - p_array_init
    - array_append_space
    - i_unreached
    - t_strdup_printf
    - Xapian::Query
    - Xapian::Query::Query
    - str_append
    - array_is_created
    - std_move
    linkageType: ''
    returnType: void
    signature: "void fts_flatcurve_build_query_arg_term(struct flatcurve_fts_query
      *query,\n\t\t\t\t   struct mail_search_arg *arg,\n\t\t\t\t   const char *term)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2141,1
    - Dst: fts_flatcurve_build_query_arg_term
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2144,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - query
    - arg
    argTypes:
    - struct flatcurve_fts_query*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2100
    functionDepth: 2
    functionLinenumber: 2100
    functionLinenumberEnd: 2154
    functionName: fts_flatcurve_build_query_arg
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - strchr
    - fts_flatcurve_build_query_arg_term
    linkageType: ''
    returnType: void
    signature: "void fts_flatcurve_build_query_arg(struct flatcurve_fts_query *query,\n\t\t\t
      \     struct mail_search_arg *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2159,1
    - Dst: str_new_const
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2160,1
    - Dst: Xapian::Query::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - query
    argTypes:
    - struct flatcurve_fts_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2156
    functionDepth: 1
    functionLinenumber: 2156
    functionLinenumberEnd: 2162
    functionName: fts_flatcurve_xapian_build_query_match_all
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - Xapian::Query::Query
    - str_new_const
    - p_new
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_xapian_build_query_match_all(struct flatcurve_fts_query
      *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2169,1
    - Dst: fts_flatcurve_build_query_arg
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - query
    argTypes:
    - struct flatcurve_fts_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2173
      start: 2165
    functionDepth: 3
    functionLinenumber: 2165
    functionLinenumberEnd: 2173
    functionName: fts_flatcurve_xapian_build_query
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - fts_flatcurve_build_query_arg
    - p_new
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_xapian_build_query(struct flatcurve_fts_query *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_query_iter::fts_flatcurve_xapian_query_iter
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2179,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - query
    argTypes:
    - struct flatcurve_fts_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2186
      start: 2175
    functionDepth: 0
    functionLinenumber: 2175
    functionLinenumberEnd: 2186
    functionName: fts_flatcurve_xapian_query_iter_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - fts_flatcurve_xapian_query_iter::fts_flatcurve_xapian_query_iter
    - p_new
    linkageType: ''
    returnType: struct fts_flatcurve_xapian_query_iter
    signature: 'struct fts_flatcurve_xapian_query_iter *

      fts_flatcurve_xapian_query_iter_init(struct flatcurve_fts_query *query)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_EMPTY
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2193,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2211,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2213,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2214,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2215,1
    - Dst: Xapian::Query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2219,1
    - Dst: fts_flatcurve_xapian_read_db
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2229,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2232,1
    - Dst: Xapian::Enquire::Enquire
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2238,1
    - Dst: struct fts_flatcurve_xapian_query_iter*::enquire::set_docid_order
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2239,1
    - Dst: struct fts_flatcurve_xapian_query_iter*::enquire::set_query
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2241,1
    - Dst: struct fts_flatcurve_xapian_query_iter*::enquire::get_mset
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2244,1
    - Dst: struct fts_flatcurve_xapian_query_iter*::db::get_doccount
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2244,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2255,1
    - Dst: struct fts_flatcurve_xapian_query_iter*::m::begin
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2258,1
    - Dst: struct fts_flatcurve_xapian_query_iter*::m::end
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2261,1
    - Dst: fts_flatcurve_xapian_query_iter_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2265,1
    - Dst: struct fts_flatcurve_xapian_query_iter*::mset_iter::get_weight
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2269,1
    - Dst: struct fts_flatcurve_xapian_query_iter*::mset_iter::get_document
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2274,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 2
    argNames:
    - iter
    - result_r
    argTypes:
    - struct fts_flatcurve_xapian_query_iter*
    - struct fts_flatcurve_xapian_query_result**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2279
      start: 2188
    functionDepth: 7
    functionLinenumber: 2188
    functionLinenumberEnd: 2279
    functionName: fts_flatcurve_xapian_query_iter_next
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 2
    functionsReached:
    - struct fts_flatcurve_xapian_query_iter*::mset_iter::get_document
    - struct fts_flatcurve_xapian_query_iter*::m::end
    - struct fts_flatcurve_xapian_query_iter*::enquire::set_docid_order
    - i_unreached
    - struct fts_flatcurve_xapian_query_iter*::enquire::get_mset
    - struct fts_flatcurve_xapian_query_iter*::mset_iter::get_weight
    - array_not_empty
    - array_foreach
    - struct fts_flatcurve_xapian_query_iter*::m::begin
    - i_strdup
    - struct fts_flatcurve_xapian_query_iter*::enquire::set_query
    - fts_flatcurve_xapian_read_db
    - ENUM_EMPTY
    - Xapian::Enquire::Enquire
    - struct fts_flatcurve_xapian_query_iter*::db::get_doccount
    - Xapian::Query
    - fts_flatcurve_xapian_query_iter_next
    linkageType: ''
    returnType: bool
    signature: "bool fts_flatcurve_xapian_query_iter_next(struct fts_flatcurve_xapian_query_iter
      *iter,\n\t\t\t\t     struct fts_flatcurve_xapian_query_result **result_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2289,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2295,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - _iter
    - error_r
    argTypes:
    - struct fts_flatcurve_xapian_query_iter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2301
      start: 2282
    functionDepth: 1
    functionLinenumber: 2282
    functionLinenumberEnd: 2301
    functionName: fts_flatcurve_xapian_query_iter_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - t_strdup
    - i_free
    - p_free
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_query_iter_deinit(struct fts_flatcurve_xapian_query_iter
      **_iter,\n\t\t\t\t       const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_xapian_query_iter_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2312,1
    - Dst: fts_flatcurve_xapian_query_iter_next
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2313,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2316,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2317,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2318,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2320,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2322,1
    - Dst: fts_flatcurve_xapian_query_iter_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - query
    - r
    - error_r
    argTypes:
    - struct flatcurve_fts_query*
    - struct flatcurve_fts_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2328
      start: 2304
    functionDepth: 8
    functionLinenumber: 2304
    functionLinenumberEnd: 2328
    functionName: fts_flatcurve_xapian_run_query
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - seq_range_array_add
    - seq_range_exists
    - array_append_space
    - fts_flatcurve_xapian_query_iter_init
    - fts_flatcurve_xapian_query_iter_deinit
    - fts_flatcurve_xapian_query_iter_next
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_xapian_run_query(struct flatcurve_fts_query *query,\n\t\t\t\t
      \  struct flatcurve_fts_result *r,\n\t\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2334,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2336,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - query
    argTypes:
    - struct flatcurve_fts_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2341
      start: 2330
    functionDepth: 1
    functionLinenumber: 2330
    functionLinenumberEnd: 2341
    functionName: fts_flatcurve_xapian_destroy_query
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_xapian_destroy_query(struct flatcurve_fts_query
      *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_verify_version_string
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc:2345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2346
      start: 2343
    functionDepth: 2
    functionLinenumber: 2343
    functionLinenumberEnd: 2346
    functionName: fts_flatcurve_xapian_library_version
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    functionUses: 0
    functionsReached:
    - master_service_verify_version_string
    linkageType: ''
    returnType: char
    signature: char *fts_flatcurve_xapian_library_version()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_FLATCURVE_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:21,1
    - Dst: struct fts_flatcurve_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:23,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 25
    functionName: fts_flatcurve_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c
    functionUses: 0
    functionsReached:
    - FTS_FLATCURVE_USER_CONTEXT_REQUIRE
    - settings_free
    - struct fts_flatcurve_user*::module_ctx::super::deinit
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_mail_user_deinit(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FTS_FLATCURVE_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:32,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:35,1
    - Dst: fts_mail_user_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:40,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:41,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - user
    - event
    - fuser_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct event*
    - struct fts_flatcurve_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 51
    functionName: fts_flatcurve_mail_user_get
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c
    functionUses: 1
    functionsReached:
    - fts_mail_user_init
    - FTS_FLATCURVE_USER_CONTEXT_REQUIRE
    - settings_get
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int fts_flatcurve_mail_user_get(struct mail_user *user, struct event
      *event,\n\t\t\t\tstruct fts_flatcurve_user **fuser_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:58,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: fts_flatcurve_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_register
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:71,1
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: fts_flatcurve_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    - fts_backend_register
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_unregister
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:77,1
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: fts_flatcurve_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - fts_backend_unregister
    linkageType: ''
    returnType: void
    signature: void fts_flatcurve_plugin_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - p_lhs
    - p_rhs
    argTypes:
    - struct fts_flatcurve_dump_term**
    - struct fts_flatcurve_dump_term**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 40
    functionName: cmd_fts_flatcurve_dump_sort
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int cmd_fts_flatcurve_dump_sort(struct fts_flatcurve_dump_term *const
      *p_lhs,\n\t\t\t    struct fts_flatcurve_dump_term *const *p_rhs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:50,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:51,1
    - Dst: t_new
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:52,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:55,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:56,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - header
    - hterms
    - aterms
    argTypes:
    - bool
    - HASH_TABLE_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 59
    functionName: cmd_fts_flatcurve_dump_array_push
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - t_new
    - hash_table_iterate
    - array_push_back
    - hash_table_iterate_init
    - POINTER_CAST_TO
    linkageType: ''
    returnType: void
    signature: "void cmd_fts_flatcurve_dump_array_push(bool header,\n\t\t\t\t  HASH_TABLE_TYPE(term_counter)
      *hterms,\n\t\t\t\t  ARRAY_TYPE(fts_flatcurve_dump_term) *aterms)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HASH_TABLE_TYPE
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:66,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:67,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:67,1
    - Dst: fts_flatcurve_database_terms
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:68,1
    - Dst: cmd_fts_flatcurve_dump_array_push
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:69,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - headers
    - path
    - aterms
    - error_r
    argTypes:
    - bool
    - char*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 61
    functionDepth: 9
    functionLinenumber: 61
    functionLinenumberEnd: 72
    functionName: cmd_dump_fts_flatcurve_dump_terms
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
    functionUses: 0
    functionsReached:
    - hash_table_create
    - cmd_fts_flatcurve_dump_array_push
    - HASH_TABLE_TYPE
    - pool_datastack_create
    - fts_flatcurve_database_terms
    - hash_table_destroy
    linkageType: ''
    returnType: int
    signature: "int cmd_dump_fts_flatcurve_dump_terms(bool headers, const char *path,\n\t\t\t\t
      \ ARRAY_TYPE(fts_flatcurve_dump_term) *aterms,\n\t\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:83,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 87
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
    functionUses: 81
    functionsReached:
    - doveadm_print
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(terms, term)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_database_locate_dir
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:99,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:101,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:104,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:105,1
    - Dst: cmd_dump_fts_flatcurve_dump_terms
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:107,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:109,1
    - Dst: cmd_dump_fts_flatcurve_dump_terms
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:111,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:113,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:115,1
    - Dst: cmd_dump_fts_flatcurve_print_terms
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - arg_path
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 92
    functionDepth: 10
    functionLinenumber: 92
    functionLinenumberEnd: 117
    functionName: cmd_dump_fts_flatcurve_bundle
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
    functionUses: 0
    functionsReached:
    - cmd_dump_fts_flatcurve_print_terms
    - i_fatal
    - cmd_dump_fts_flatcurve_dump_terms
    - t_array_init
    - ARRAY_TYPE
    - array_sort
    - fts_flatcurve_database_locate_dir
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_fts_flatcurve_bundle(struct doveadm_cmd_context *cctx
      ATTR_UNUSED,\n\t\t\t      const char *arg_path,\n\t\t\t      const char *const
      *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_flatcurve_database_locate_dir
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - arg_path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 120
    functionDepth: 3
    functionLinenumber: 120
    functionLinenumberEnd: 129
    functionName: test_dump_fts_flatcurve_bundle
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
    functionUses: 0
    functionsReached:
    - fts_flatcurve_database_locate_dir
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_fts_flatcurve_bundle(struct doveadm_cmd_context *cctx
      ATTR_UNUSED,\n\t\t\t       const char *arg_path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_dump_register
      Src: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: doveadm_dump_flatcurve_init
    functionSourceFile: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
    functionUses: 1
    functionsReached:
    - doveadm_dump_register
    linkageType: ''
    returnType: void
    signature: void doveadm_dump_flatcurve_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quota_root_get_name
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:28,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:31,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - user
    - owner
    - root
    argTypes:
    - struct mail_user*
    - struct mail_user*
    - struct quota_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 33
    functionName: imap_quota_root_get_name
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - quota_root_get_name
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\nimap_quota_root_get_name(struct mail_user *user, struct mail_user
      *owner,\n\t\t\t struct quota_root *root)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:43,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:46,1
    - Dst: imap_quota_root_get_name
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:47,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:48,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:50,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:51,1
    - Dst: quota_root_get_resources
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:52,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:54,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:56,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:63,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:64,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:69,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:71,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - str
    - user
    - owner
    - root
    - utf8
    argTypes:
    - string_t*
    - struct mail_user*
    - struct mail_user*
    - struct quota_root*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 35
    functionDepth: 3
    functionLinenumber: 35
    functionLinenumberEnd: 76
    functionName: quota_reply_write
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - str_len
    - imap_append_astring
    - e_error
    - quota_get_resource
    - str_truncate
    - str_append
    - imap_quota_root_get_name
    - quota_root_get_resources
    linkageType: ''
    returnType: int
    signature: "int quota_reply_write(string_t *str, struct mail_user *user,\n\t\t
      \ struct mail_user *owner, struct quota_root *root, bool utf8)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:82,1
    - Dst: client_read_string_args
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:92,1
    - Dst: client_find_namespace
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:96,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:101,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:105,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:109,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:112,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:113,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:114,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:115,1
    - Dst: quota_root_iter_init
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:118,1
    - Dst: quota_root_iter_next
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:119,1
    - Dst: quota_root_is_hidden
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:120,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:122,1
    - Dst: imap_quota_root_get_name
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:123,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:124,1
    - Dst: quota_reply_write
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:126,1
    - Dst: quota_root_iter_deinit
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:130,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:131,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:135,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:136,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:137,1
    - Dst: client_send_line
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:139,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:139,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:140,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:140,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:141,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:142,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 78
    functionDepth: 5
    functionLinenumber: 78
    functionLinenumberEnd: 145
    functionName: cmd_getquotaroot
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - QUOTA_USER_CONTEXT
    - quota_reply_write
    - mailbox_alloc
    - t_str_new
    - mailbox_free
    - client_find_namespace
    - str_append_c
    - imap_append_astring
    - client_send_line
    - o_stream_nsend
    - str_data
    - client_read_string_args
    - client_send_tagline
    - quota_root_iter_deinit
    - quota_root_iter_init
    - quota_root_iter_next
    - quota_root_is_hidden
    - str_append
    - imap_quota_root_get_name
    linkageType: ''
    returnType: bool
    signature: bool cmd_getquotaroot(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: quota_root_lookup
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:154,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:159,1
    - Dst: mail_user_find
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:161,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:161,1
    - Dst: quota_root_lookup
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - user
    - root_name
    - owner_r
    - root_r
    argTypes:
    - struct mail_user*
    - char*
    - struct mail_user**
    - struct quota_root**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 166
    functionName: parse_quota_root
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - strchr
    - quota_root_lookup
    - mail_user_find
    - t_strdup_until
    linkageType: ''
    returnType: bool
    signature: "bool parse_quota_root(struct mail_user *user, const char *root_name,\n\t\t
      struct mail_user **owner_r, struct quota_root **root_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:176,1
    - Dst: parse_quota_root
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:179,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:180,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:184,1
    - Dst: quota_reply_write
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:185,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:187,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:189,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:189,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:190,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 168
    functionDepth: 5
    functionLinenumber: 168
    functionLinenumberEnd: 194
    functionName: cmd_getquota
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - parse_quota_root
    - client_read_string_args
    - quota_reply_write
    - client_send_tagline
    - o_stream_nsend
    linkageType: ''
    returnType: bool
    signature: bool cmd_getquota(struct client_command_context *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_read_args
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:201,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 196
    functionDepth: 4
    functionLinenumber: 196
    functionLinenumberEnd: 207
    functionName: cmd_setquota
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - client_read_args
    - client_send_tagline
    linkageType: ''
    returnType: bool
    signature: bool cmd_setquota(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_is_plugin_loaded
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:211,1
    - Dst: client_add_capability
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:212,1
    - Dst: next_hook_client_created
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 216
    functionName: imap_quota_client_created
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - next_hook_client_created
    - client_add_capability
    - mail_user_is_plugin_loaded
    linkageType: ''
    returnType: void
    signature: void imap_quota_client_created(struct client **client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: command_register
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:220,1
    - Dst: command_register
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:221,1
    - Dst: command_register
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:222,1
    - Dst: imap_client_created_hook_set
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 227
    functionName: imap_quota_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - command_register
    - imap_client_created_hook_set
    linkageType: ''
    returnType: void
    signature: void imap_quota_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: command_unregister
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:231,1
    - Dst: command_unregister
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:232,1
    - Dst: command_unregister
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:233,1
    - Dst: imap_client_created_hook_set
      Src: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 236
    functionName: imap_quota_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
    functionUses: 0
    functionsReached:
    - imap_client_created_hook_set
    - command_unregister
    linkageType: ''
    returnType: void
    signature: void imap_quota_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: ACL_LIST_ITERATE_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_LIST_ITERATE_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: acl_mailbox_list_get_backend
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - ACL_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct acl_backend
    signature: struct acl_backend *acl_mailbox_list_get_backend(struct mailbox_list
      *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:58,1
    - Dst: acl_object_init_from_name
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:68,1
    - Dst: acl_object_init_from_parent
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:69,1
    - Dst: acl_object_have_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:70,1
    - Dst: acl_object_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:72,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - list
    - name
    - parent
    - acl_storage_right_idx
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 77
    functionName: acl_mailbox_list_have_right
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_object_init_from_parent
    - acl_object_have_right
    - mailbox_list_set_internal_error
    - ACL_LIST_CONTEXT_REQUIRE
    - acl_object_deinit
    - acl_object_init_from_name
    linkageType: ''
    returnType: int
    signature: "int acl_mailbox_list_have_right(struct mailbox_list *list, const char
      *name,\n\t\t\t\tbool parent, unsigned int acl_storage_right_idx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_ITERATE_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:83,1
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:84,1
    - Dst: acl_backend_get_default_rights
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:110,1
    - Dst: acl_cache_mask_isset
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:111,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:115,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:118,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:118,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:122,1
    - Dst: acl_backend_nonowner_lookups_iter_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:124,1
    - Dst: acl_backend_nonowner_lookups_iter_next
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:125,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:129,1
    - Dst: mailbox_list_iter_update
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:130,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 132
    functionName: acl_mailbox_try_list_fast
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_backend_get_default_rights
    - acl_cache_mask_isset
    - i_zero
    - mailbox_tree_init
    - mailbox_list_iter_update
    - imap_match_init
    - acl_backend_nonowner_lookups_iter_next
    - pool_datastack_create
    - ACL_LIST_CONTEXT_REQUIRE
    - mailbox_list_get_vname
    - acl_backend_nonowner_lookups_iter_init
    - ACL_LIST_ITERATE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_try_list_fast(struct mailbox_list_iterate_context
      *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:145,1
    - Dst: acl_shared_namespaces_add
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:151,1
    - Dst: struct acl_mailbox_list*::module_ctx::super::iter_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 157
    functionName: acl_mailbox_list_iter_init_shared
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - struct acl_mailbox_list*::module_ctx::super::iter_init
    - acl_shared_namespaces_add
    - ACL_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nacl_mailbox_list_iter_init_shared(struct
      mailbox_list *list,\n\t\t\t\t  const char *const *patterns,\n\t\t\t\t  enum
      mailbox_list_iter_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:164,1
    - Dst: struct acl_mailbox_list*::module_ctx::super::iter_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:170,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:172,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:174,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:179,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:186,1
    - Dst: acl_mailbox_try_list_fast
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:192,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 193
    functionName: acl_mailbox_list_iter_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - strchr
    - p_new
    - acl_mailbox_try_list_fast
    - ACL_LIST_CONTEXT_REQUIRE
    - struct acl_mailbox_list*::module_ctx::super::iter_init
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nacl_mailbox_list_iter_init(struct
      mailbox_list *list,\n\t\t\t   const char *const *patterns,\n\t\t\t   enum mailbox_list_iter_flags
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_ITERATE_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:202,1
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:203,1
    - Dst: struct acl_mailbox_list*::module_ctx::super::iter_next
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:211,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:220,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 224
    functionName: acl_mailbox_list_iter_next_info
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mailbox_tree_lookup
    - ACL_LIST_CONTEXT_REQUIRE
    - ACL_LIST_ITERATE_CONTEXT
    - struct acl_mailbox_list*::module_ctx::super::iter_next
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      acl_mailbox_list_iter_next_info(struct mailbox_list_iterate_context *_ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:237,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:238,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:239,1
    - Dst: t_strndup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - vname
    argTypes:
    - struct mailbox_list_iterate_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 245
    functionName: acl_mailbox_list_iter_get_name
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - strlen
    - mailbox_list_get_hierarchy_sep
    - t_strndup
    - mailbox_list_get_storage_name
    linkageType: ''
    returnType: char
    signature: "char *\nacl_mailbox_list_iter_get_name(struct mailbox_list_iterate_context
      *ctx,\n\t\t\t       const char *vname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_ITERATE_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:251,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:257,1
    - Dst: imap_match
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 260
    functionName: iter_is_listing_all_children
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - imap_match
    - t_strdup_printf
    - ACL_LIST_ITERATE_CONTEXT
    linkageType: ''
    returnType: bool
    signature: bool iter_is_listing_all_children(struct mailbox_list_iterate_context
      *_ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_ITERATE_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:267,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:282,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:283,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:291,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:294,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:297,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:301,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:302,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:303,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:309,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:309,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:311,1
    - Dst: imap_match
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:313,1
    - Dst: strncmp
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:320,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:324,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 2
    argNames:
    - _ctx
    - only_nonpatterns
    argTypes:
    - struct mailbox_list_iterate_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 326
    functionName: iter_mailbox_has_visible_children
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - mailbox_list_iter_deinit
    - str_len
    - mailbox_list_iter_next
    - imap_match
    - mailbox_tree_lookup
    - mailbox_list_iter_init
    - strncmp
    - i_assert
    - ACL_LIST_ITERATE_CONTEXT
    linkageType: ''
    returnType: bool
    signature: "bool iter_mailbox_has_visible_children(struct mailbox_list_iterate_context
      *_ctx,\n\t\t\t\t  bool only_nonpatterns)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_ITERATE_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:332,1
    - Dst: acl_mailbox_list_iter_get_name
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:343,1
    - Dst: acl_mailbox_list_have_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:344,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:350,1
    - Dst: iter_mailbox_has_visible_children
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:352,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:353,1
    - Dst: iter_is_listing_all_children
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:359,1
    - Dst: iter_mailbox_has_visible_children
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:360,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 369
    functionName: acl_mailbox_list_info_is_visible
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_list_iter_get_name
    - acl_mailbox_list_have_right
    - ENUM_NEGATE
    - iter_is_listing_all_children
    - iter_mailbox_has_visible_children
    - ACL_LIST_ITERATE_CONTEXT
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_list_info_is_visible(struct mailbox_list_iterate_context
      *_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_ITERATE_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:375,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:388,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:389,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:389,1
    - Dst: acl_mailbox_list_iter_get_name
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:393,1
    - Dst: acl_mailbox_list_have_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:394,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:400,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:401,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:402,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 404
    functionName: acl_mailbox_list_iter_check_autocreate_acls
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - array_delete
    - acl_mailbox_list_iter_get_name
    - acl_mailbox_list_have_right
    - array_get
    - array_count
    - i_assert
    - ACL_LIST_ITERATE_CONTEXT
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_list_iter_check_autocreate_acls(struct mailbox_list_iterate_context
      *_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_ITERATE_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:412,1
    - Dst: acl_mailbox_list_iter_check_autocreate_acls
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:417,1
    - Dst: acl_mailbox_list_iter_next_info
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:423,1
    - Dst: acl_mailbox_list_info_is_visible
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:426,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:435,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 408
    functionDepth: 3
    functionLinenumber: 408
    functionLinenumberEnd: 437
    functionName: acl_mailbox_list_iter_next
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_list_info_is_visible
    - e_debug
    - acl_mailbox_list_iter_check_autocreate_acls
    - acl_mailbox_list_iter_next_info
    - ACL_LIST_ITERATE_CONTEXT
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      acl_mailbox_list_iter_next(struct mailbox_list_iterate_context *_ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_ITERATE_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:445,1
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:446,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:450,1
    - Dst: struct acl_mailbox_list*::module_ctx::super::iter_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 454
    functionName: acl_mailbox_list_iter_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_tree_deinit
    - struct acl_mailbox_list*::module_ctx::super::iter_deinit
    - ACL_LIST_CONTEXT_REQUIRE
    - ACL_LIST_ITERATE_CONTEXT
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_list_iter_deinit(struct mailbox_list_iterate_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:458,1
    - Dst: acl_backend_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:460,1
    - Dst: struct acl_mailbox_list*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 462
    functionName: acl_mailbox_list_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_backend_deinit
    - struct acl_mailbox_list*::module_ctx::super::deinit
    - ACL_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_list_deinit(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_lookup_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - backend
    argTypes:
    - struct acl_storage_rights_context*
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 475
    functionName: acl_storage_rights_ctx_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_backend_lookup_right
    linkageType: ''
    returnType: void
    signature: "void acl_storage_rights_ctx_init(struct acl_storage_rights_context
      *ctx,\n\t\t\t\t\tstruct acl_backend *backend)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_init_auto
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:483,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - backend_r
    argTypes:
    - struct mailbox_list*
    - struct acl_backend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 486
    functionName: acl_list_init_backend
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_backend_init_auto
    - i_fatal
    linkageType: ''
    returnType: bool
    signature: "bool acl_list_init_backend(struct mailbox_list *list,\n\t\t\t\t  struct
      acl_backend **backend_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: acl_list_init_backend
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:494,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:497,1
    - Dst: acl_storage_rights_ctx_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:503,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 506
    functionName: acl_mailbox_list_init_shared
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_list_init_backend
    - MODULE_CONTEXT_SET
    - acl_storage_rights_ctx_init
    - p_new
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_list_init_shared(struct mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_list_init_backend
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:514,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:519,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:523,1
    - Dst: acl_storage_rights_ctx_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:531,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 508
    functionDepth: 2
    functionLinenumber: 508
    functionLinenumberEnd: 534
    functionName: acl_mailbox_list_init_default
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_fatal
    - acl_list_init_backend
    - acl_storage_rights_ctx_init
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_list_init_default(struct mailbox_list *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_USER_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:538,1
    - Dst: acl_mailbox_list_init_shared
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:545,1
    - Dst: acl_mailbox_list_init_default
      Src: /src/dovecot/src/plugins/acl/acl-mailbox-list.c:551,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 536
    functionDepth: 3
    functionLinenumber: 536
    functionLinenumberEnd: 553
    functionName: acl_mailbox_list_created
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_list_init_default
    - acl_mailbox_list_init_shared
    - ACL_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_list_created(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:25,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 29
    functionName: acl_backend_vfile_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct acl_backend
    signature: struct acl_backend *acl_backend_vfile_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_init
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _backend
    - ATTR_UNUSED
    argTypes:
    - struct acl_backend*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 38
    functionName: acl_backend_vfile_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - acl_cache_init
    linkageType: ''
    returnType: int
    signature: int acl_backend_vfile_init(struct acl_backend *_backend, const char
      **error_r ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:43,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:46,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:47,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 50
    functionName: acl_backend_vfile_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - container_of
    - array_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void acl_backend_vfile_deinit(struct acl_backend *_backend)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:57,1
    - Dst: mailbox_list_get_storage
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:74,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:79,1
    - Dst: mail_storage_get_acl_list_path_type
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:81,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:83,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:88,1
    - Dst: mailbox_list_get_last_mail_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:91,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:101,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:103,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 4
    argNames:
    - backend
    - name
    - vname
    - dir_r
    argTypes:
    - struct acl_backend*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 109
    functionName: acl_backend_vfile_get_local_dir
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - mailbox_list_get_root_path
    - mailbox_list_get_namespace
    - mail_storage_get_acl_list_path_type
    - mailbox_list_get_storage
    - mailbox_list_get_last_mail_error
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_get_local_dir(struct acl_backend *backend,\n\t\t\t\tconst
      char *name, const char *vname,\n\t\t\t\tconst char **dir_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:118,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:120,1
    - Dst: if
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:123,1
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:124,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:126,1
    - Dst: acl_backend_vfile_get_local_dir
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:128,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _backend
    - name
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 140
    functionName: acl_backend_vfile_object_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - mailbox_list_is_valid_name
    - if
    - i_strdup
    - i_strconcat
    - i_new
    - mailbox_list_get_vname
    - acl_backend_vfile_get_local_dir
    linkageType: ''
    returnType: struct acl_object
    signature: "struct acl_object *\nacl_backend_vfile_object_init(struct acl_backend
      *_backend,\n\t\t\t      const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:147,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:147,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - backend
    - name
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 149
    functionName: get_parent_mailbox
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - t_strdup_until
    - mailbox_list_get_hierarchy_sep
    - strrchr
    linkageType: ''
    returnType: char
    signature: 'char *

      get_parent_mailbox(struct acl_backend *backend, const char *name)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_get_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:158,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:162,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:169,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:171,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:173,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:179,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:183,1
    - Dst: acl_cache_set_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:189,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - _backend
    - name
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 192
    functionName: acl_backend_vfile_has_acl
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_free
    - mailbox_open
    - mailbox_get_last_internal_error
    - acl_cache_get_validity
    - e_error
    - mailbox_alloc
    - mailbox_list_get_vname
    - acl_cache_set_validity
    linkageType: ''
    returnType: bool
    signature: bool acl_backend_vfile_has_acl(struct acl_backend *_backend, const
      char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_parent_mailbox
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:204,1
    - Dst: acl_backend_vfile_has_acl
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:205,1
    - Dst: acl_backend_get_default_object
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:211,1
    - Dst: acl_backend_vfile_object_init
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - backend
    - child_name
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 214
    functionName: acl_backend_vfile_object_init_parent
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - acl_backend_vfile_object_init
    - acl_backend_get_default_object
    - get_parent_mailbox
    - acl_backend_vfile_has_acl
    linkageType: ''
    returnType: struct acl_object
    signature: "struct acl_object *\nacl_backend_vfile_object_init_parent(struct acl_backend
      *backend,\n\t\t\t\t     const char *child_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:220,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:222,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:223,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:224,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:225,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _aclobj
    argTypes:
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 227
    functionName: acl_backend_vfile_object_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - pool_unref
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void acl_backend_vfile_object_deinit(struct acl_object *_aclobj)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:241,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:244,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:246,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:247,1
    - Dst: acl_object_remove_all_access
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:249,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:252,1
    - Dst: fstat
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:261,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:263,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:267,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:268,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:272,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:274,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:275,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:277,1
    - Dst: acl_rights_parse_line
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:282,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:285,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:288,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 4
    argNames:
    - aclobj
    - path
    - validity
    - try_retry
    argTypes:
    - struct acl_object*
    - char*
    - struct acl_vfile_validity*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 293
    functionName: acl_backend_vfile_read
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - acl_rights_parse_line
    - i_stream_create_fd
    - array_push_back
    - e_debug
    - i_close_fd
    - acl_object_remove_all_access
    - nfs_safe_open
    - i_stream_read_next_line
    - e_error
    - fstat
    - i_stream_set_return_partial_line
    - ENOACCESS
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_read(struct acl_object *aclobj, const char *path,\n\t\t
      \      struct acl_vfile_validity *validity, bool try_retry)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_vfile_read
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:344,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - aclobj
    - path
    - validity
    argTypes:
    - struct acl_object*
    - char*
    - struct acl_vfile_validity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 353
    functionName: acl_backend_vfile_read_with_retry
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - acl_backend_vfile_read
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_read_with_retry(struct acl_object *aclobj,\n\t\t\t\t
      \ const char *path,\n\t\t\t\t  struct acl_vfile_validity *validity)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 3
    argNames:
    - backend
    - validity
    - st
    argTypes:
    - struct acl_backend_vfile*
    - struct acl_vfile_validity*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 375
    functionName: acl_vfile_validity_has_changed
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool acl_vfile_validity_has_changed(struct acl_backend_vfile *backend,\n\t\t\t
      \      const struct acl_vfile_validity *validity,\n\t\t\t       const struct
      stat *st)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:382,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:394,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:400,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:402,1
    - Dst: acl_vfile_validity_has_changed
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:405,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - aclobj
    - path
    - validity
    argTypes:
    - struct acl_object*
    - char*
    - struct acl_vfile_validity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 406
    functionName: acl_backend_vfile_refresh
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - acl_vfile_validity_has_changed
    - container_of
    - e_error
    - stat
    - ENOACCESS
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_refresh(struct acl_object *aclobj, const char
      *path,\n\t\t\t  struct acl_vfile_validity *validity)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_get_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - aclobj
    - mtime_r
    argTypes:
    - struct acl_object*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 422
    functionName: acl_backend_vfile_object_get_mtime
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - acl_cache_get_validity
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_object_get_mtime(struct acl_object *aclobj,\n\t\t\t\t
      \      time_t *mtime_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:427,1
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:429,1
    - Dst: acl_cache_get_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:438,1
    - Dst: acl_backend_vfile_refresh
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:440,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:447,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:449,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:450,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:452,1
    - Dst: p_clear
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:453,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:456,1
    - Dst: acl_backend_get_mailbox_acl
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:457,1
    - Dst: acl_backend_vfile_read_with_retry
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:460,1
    - Dst: acl_rights_sort
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:464,1
    - Dst: acl_object_rebuild_cache
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:466,1
    - Dst: acl_cache_set_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:467,1
    - Dst: acl_backend_vfile_object_get_mtime
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:470,1
    - Dst: acl_backend_vfile_acllist_verify
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:471,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - _aclobj
    argTypes:
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 424
    functionDepth: 3
    functionLinenumber: 424
    functionLinenumberEnd: 473
    functionName: acl_backend_vfile_object_refresh_cache
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - acl_backend_vfile_refresh
    - container_of
    - i_zero
    - acl_backend_get_mailbox_acl
    - acl_cache_set_validity
    - acl_cache_get_validity
    - acl_backend_vfile_acllist_verify
    - acl_backend_vfile_read_with_retry
    - acl_object_rebuild_cache
    - acl_backend_vfile_object_get_mtime
    - array_clear
    - array_is_created
    - acl_rights_sort
    - p_clear
    linkageType: ''
    returnType: int
    signature: int acl_backend_vfile_object_refresh_cache(struct acl_object *_aclobj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_get_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:482,1
    - Dst: acl_backend_vfile_object_refresh_cache
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:485,1
    - Dst: acl_cache_get_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.c:487,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - _aclobj
    - last_changed_r
    argTypes:
    - struct acl_object*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 494
    functionName: acl_backend_vfile_object_last_changed
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
    functionUses: 0
    functionsReached:
    - acl_backend_vfile_object_refresh_cache
    - acl_cache_get_validity
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_object_last_changed(struct acl_object *_aclobj,\n\t\t\t\t\t\t
      time_t *last_changed_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_backend*::v::object_init
      Src: /src/dovecot/src/plugins/acl/acl-api.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - backend
    - name
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 17
    functionName: acl_object_init_from_name
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - struct acl_backend*::v::object_init
    linkageType: ''
    returnType: struct acl_object
    signature: "struct acl_object *acl_object_init_from_name(struct acl_backend *backend,\n\t\t\t\t\t
      \    const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_backend*::v::object_init_parent
      Src: /src/dovecot/src/plugins/acl/acl-api.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - backend
    - child_name
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 23
    functionName: acl_object_init_from_parent
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - struct acl_backend*::v::object_init_parent
    linkageType: ''
    returnType: struct acl_object
    signature: "struct acl_object *acl_object_init_from_parent(struct acl_backend
      *backend,\n\t\t\t\t\t       const char *child_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_object*::backend::v::object_deinit
      Src: /src/dovecot/src/plugins/acl/acl-api.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _aclobj
    argTypes:
    - struct acl_object**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 33
    functionName: acl_object_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - struct acl_object*::backend::v::object_deinit
    linkageType: ''
    returnType: void
    signature: void acl_object_deinit(struct acl_object **_aclobj)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_backend*::v::object_refresh_cache
      Src: /src/dovecot/src/plugins/acl/acl-api.c:41,1
    - Dst: acl_cache_get_my_rights
      Src: /src/dovecot/src/plugins/acl/acl-api.c:44,1
    - Dst: acl_backend_get_default_rights
      Src: /src/dovecot/src/plugins/acl/acl-api.c:46,1
    - Dst: acl_cache_mask_isset
      Src: /src/dovecot/src/plugins/acl/acl-api.c:50,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/plugins/acl/acl-api.c:53,1
    - Dst: acl_backend_lookup_right
      Src: /src/dovecot/src/plugins/acl/acl-api.c:58,1
    - Dst: acl_cache_mask_isset
      Src: /src/dovecot/src/plugins/acl/acl-api.c:60,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - aclobj
    - right_idx
    argTypes:
    - struct acl_object*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 64
    functionName: acl_object_have_right
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - acl_backend_get_default_rights
    - acl_cache_mask_isset
    - struct acl_backend*::v::object_refresh_cache
    - mailbox_list_get_user
    - acl_backend_lookup_right
    - acl_cache_get_my_rights
    linkageType: ''
    returnType: int
    signature: int acl_object_have_right(struct acl_object *aclobj, unsigned int right_idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_get_names
      Src: /src/dovecot/src/plugins/acl/acl-api.c:74,1
    - Dst: t_new
      Src: /src/dovecot/src/plugins/acl/acl-api.c:75,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-api.c:86,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-api.c:87,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-api.c:93,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/acl/acl-api.c:94,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 96
    functionName: acl_backend_mask_get_names
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_strdup
    - t_new
    - p_new
    - acl_cache_get_names
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *const *\nacl_backend_mask_get_names(struct acl_backend *backend,\n\t\t\t
      \  const struct acl_mask *mask, pool_t pool)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_backend*::v::object_refresh_cache
      Src: /src/dovecot/src/plugins/acl/acl-api.c:104,1
    - Dst: acl_cache_get_my_rights
      Src: /src/dovecot/src/plugins/acl/acl-api.c:107,1
    - Dst: acl_backend_get_default_rights
      Src: /src/dovecot/src/plugins/acl/acl-api.c:109,1
    - Dst: acl_backend_mask_get_names
      Src: /src/dovecot/src/plugins/acl/acl-api.c:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - aclobj
    - pool
    - rights_r
    argTypes:
    - struct acl_object*
    - pool_t
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 115
    functionName: acl_object_get_my_rights_real
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - acl_backend_get_default_rights
    - acl_backend_mask_get_names
    - struct acl_backend*::v::object_refresh_cache
    - acl_cache_get_my_rights
    linkageType: ''
    returnType: int
    signature: "int acl_object_get_my_rights_real(struct acl_object *aclobj, pool_t
      pool,\n\t\t\t\t\t const char *const **rights_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: acl_object_get_my_rights_real
      Src: /src/dovecot/src/plugins/acl/acl-api.c:123,1
    - Dst: acl_object_get_my_rights_real
      Src: /src/dovecot/src/plugins/acl/acl-api.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - aclobj
    - pool
    - rights_r
    argTypes:
    - struct acl_object*
    - pool_t
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 126
    functionName: acl_object_get_my_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - acl_object_get_my_rights_real
    linkageType: ''
    returnType: int
    signature: "int acl_object_get_my_rights(struct acl_object *aclobj, pool_t pool,\n\t\t\t
      \    const char *const **rights_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_mask_get_names
      Src: /src/dovecot/src/plugins/acl/acl-api.c:132,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/acl/acl-api.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: acl_object_get_default_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - acl_backend_mask_get_names
    - pool_datastack_create
    linkageType: ''
    returnType: char
    signature: char *const *acl_object_get_default_rights(struct acl_object *aclobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_object*::backend::v::last_changed
      Src: /src/dovecot/src/plugins/acl/acl-api.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aclobj
    - last_changed_r
    argTypes:
    - struct acl_object*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: acl_object_last_changed
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - struct acl_object*::backend::v::last_changed
    linkageType: ''
    returnType: int
    signature: int acl_object_last_changed(struct acl_object *aclobj, time_t *last_changed_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_object*::backend::v::object_update
      Src: /src/dovecot/src/plugins/acl/acl-api.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aclobj
    - update
    argTypes:
    - struct acl_object*
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: acl_object_update
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - struct acl_object*::backend::v::object_update
    linkageType: ''
    returnType: int
    signature: "int acl_object_update(struct acl_object *aclobj,\n\t\t      const
      struct acl_rights_update *update)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_object*::backend::v::object_list_init
      Src: /src/dovecot/src/plugins/acl/acl-api.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - aclobj
    argTypes:
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: acl_object_list_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - struct acl_object*::backend::v::object_list_init
    linkageType: ''
    returnType: struct acl_object_list_iter
    signature: struct acl_object_list_iter *acl_object_list_init(struct acl_object
      *aclobj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_object_list_iter*::aclobj::backend::v::object_list_next
      Src: /src/dovecot/src/plugins/acl/acl-api.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - iter
    - rights_r
    argTypes:
    - struct acl_object_list_iter*
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: acl_object_list_next
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - struct acl_object_list_iter*::aclobj::backend::v::object_list_next
    linkageType: ''
    returnType: bool
    signature: "bool acl_object_list_next(struct acl_object_list_iter *iter,\n\t\t\t
      struct acl_rights *rights_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_object_list_iter*::aclobj::backend::v::object_list_deinit
      Src: /src/dovecot/src/plugins/acl/acl-api.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct acl_object_list_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 168
    functionName: acl_object_list_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - struct acl_object_list_iter*::aclobj::backend::v::object_list_deinit
    linkageType: ''
    returnType: int
    signature: int acl_object_list_deinit(struct acl_object_list_iter **_iter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/acl-api.c:178,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-api.c:179,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-api.c:183,1
    - Dst: acl_cache_flush
      Src: /src/dovecot/src/plugins/acl/acl-api.c:186,1
    - Dst: struct acl_object*::backend::v::object_refresh_cache
      Src: /src/dovecot/src/plugins/acl/acl-api.c:189,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/plugins/acl/acl-api.c:193,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-api.c:194,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-api.c:197,1
    - Dst: acl_rights_dup
      Src: /src/dovecot/src/plugins/acl/acl-api.c:199,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - aclobj
    argTypes:
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 203
    functionName: acl_default_object_list_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - acl_cache_flush
    - p_new
    - array_get
    - array_not_empty
    - acl_rights_dup
    - array_is_created
    - struct acl_object*::backend::v::object_refresh_cache
    linkageType: ''
    returnType: struct acl_object_list_iter
    signature: 'struct acl_object_list_iter *

      acl_default_object_list_init(struct acl_object *aclobj)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - iter
    - rights_r
    argTypes:
    - struct acl_object_list_iter*
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 215
    functionName: acl_default_object_list_next
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool acl_default_object_list_next(struct acl_object_list_iter *iter,\n\t\t\t\t
      struct acl_rights *rights_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/acl/acl-api.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct acl_object_list_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 229
    functionName: acl_default_object_list_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int acl_default_object_list_deinit(struct acl_object_list_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_backend*::v::nonowner_lookups_iter_init
      Src: /src/dovecot/src/plugins/acl/acl-api.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: acl_backend_nonowner_lookups_iter_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - struct acl_backend*::v::nonowner_lookups_iter_init
    linkageType: ''
    returnType: struct acl_mailbox_list_context
    signature: 'struct acl_mailbox_list_context *

      acl_backend_nonowner_lookups_iter_init(struct acl_backend *backend)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_mailbox_list_context*::backend::v::nonowner_lookups_iter_next
      Src: /src/dovecot/src/plugins/acl/acl-api.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - name_r
    argTypes:
    - struct acl_mailbox_list_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: acl_backend_nonowner_lookups_iter_next
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - struct acl_mailbox_list_context*::backend::v::nonowner_lookups_iter_next
    linkageType: ''
    returnType: bool
    signature: "bool acl_backend_nonowner_lookups_iter_next(struct acl_mailbox_list_context
      *ctx,\n\t\t\t\t\t   const char **name_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_mailbox_list_context*::backend::v::nonowner_lookups_iter_deinit
      Src: /src/dovecot/src/plugins/acl/acl-api.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct acl_mailbox_list_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 249
    functionName: acl_backend_nonowner_lookups_iter_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - struct acl_mailbox_list_context*::backend::v::nonowner_lookups_iter_deinit
    linkageType: ''
    returnType: int
    signature: int acl_backend_nonowner_lookups_iter_deinit(struct acl_mailbox_list_context
      **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct acl_backend*::v::nonowner_lookups_rebuild
      Src: /src/dovecot/src/plugins/acl/acl-api.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: acl_backend_nonowner_lookups_rebuild
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - struct acl_backend*::v::nonowner_lookups_rebuild
    linkageType: ''
    returnType: int
    signature: int acl_backend_nonowner_lookups_rebuild(struct acl_backend *backend)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-api.c:261,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/acl/acl-api.c:264,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/acl/acl-api.c:267,1
    - Dst: acl_rights_cmp
      Src: /src/dovecot/src/plugins/acl/acl-api.c:269,1
    - Dst: acl_right_names_merge
      Src: /src/dovecot/src/plugins/acl/acl-api.c:271,1
    - Dst: acl_right_names_merge
      Src: /src/dovecot/src/plugins/acl/acl-api.c:274,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/acl/acl-api.c:283,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - aclobj
    argTypes:
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 284
    functionName: acl_rights_sort
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - array_delete
    - acl_rights_cmp
    - array_get_modifiable
    - acl_right_names_merge
    - array_sort
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void acl_rights_sort(struct acl_object *aclobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-api.c:290,1
    - Dst: acl_cache_update
      Src: /src/dovecot/src/plugins/acl/acl-api.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - aclobj
    argTypes:
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 297
    functionName: apply_owner_default_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 0
    functionsReached:
    - i_zero
    - acl_cache_update
    linkageType: ''
    returnType: void
    signature: void apply_owner_default_rights(struct acl_object *aclobj)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_flush
      Src: /src/dovecot/src/plugins/acl/acl-api.c:307,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-api.c:309,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-api.c:321,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-api.c:322,1
    - Dst: acl_backend_user_is_owner
      Src: /src/dovecot/src/plugins/acl/acl-api.c:323,1
    - Dst: apply_owner_default_rights
      Src: /src/dovecot/src/plugins/acl/acl-api.c:335,1
    - Dst: acl_backend_rights_match_me
      Src: /src/dovecot/src/plugins/acl/acl-api.c:340,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-api.c:350,1
    - Dst: acl_cache_update
      Src: /src/dovecot/src/plugins/acl/acl-api.c:370,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 1
    argNames:
    - aclobj
    argTypes:
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 299
    functionDepth: 2
    functionLinenumber: 299
    functionLinenumberEnd: 372
    functionName: acl_object_rebuild_cache
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - i_zero
    - acl_cache_flush
    - array_get
    - acl_backend_user_is_owner
    - apply_owner_default_rights
    - acl_backend_rights_match_me
    - acl_cache_update
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void acl_object_rebuild_cache(struct acl_object *aclobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-api.c:378,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-api.c:381,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-api.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - aclobj
    argTypes:
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 386
    functionName: acl_object_remove_all_access
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-api.c
    functionUses: 1
    functionsReached:
    - i_zero
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void acl_object_remove_all_access(struct acl_object *aclobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bitmask_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: SIZEOF_ACL_MASK
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIZEOF_ACL_MASK(bitmask_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:37,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:43,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 45
    functionName: acl_backend_find
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_fatal
    linkageType: ''
    returnType: struct acl_backend_entry
    signature: struct acl_backend_entry *acl_backend_find(const char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:52,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:53,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:54,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:57,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:58,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:63,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:64,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:65,1
    - Dst: acl_backend_find
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:69,1
    - Dst: struct acl_backend_entry*::v::alloc
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:70,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:78,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:87,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:88,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:89,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:90,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:91,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:91,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:93,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:94,1
    - Dst: struct acl_backend*::v::init
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:97,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:98,1
    - Dst: acl_backend_deinit
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:99,1
    - Dst: acl_cache_mask_init
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:106,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 3
    argNames:
    - list
    - backend_r
    - error_r
    argTypes:
    - struct mailbox_list*
    - struct acl_backend**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 112
    functionName: acl_backend_init_auto
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 1
    functionsReached:
    - acl_backend_find
    - strcmp
    - event_create
    - event_unref
    - array_foreach_elem
    - e_debug
    - event_set_append_log_prefix
    - acl_cache_mask_init
    - t_strdup_printf
    - settings_free
    - struct acl_backend*::v::init
    - acl_backend_deinit
    - settings_get
    - event_want_debug
    - struct acl_backend_entry*::v::alloc
    - array_is_created
    - event_add_category
    linkageType: ''
    returnType: int
    signature: "int acl_backend_init_auto(struct mailbox_list *list, struct acl_backend
      **backend_r,\n\t\t\t  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: acl_object_deinit
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:122,1
    - Dst: acl_cache_deinit
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:123,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:124,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:125,1
    - Dst: struct acl_backend*::v::deinit
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct acl_backend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 127
    functionName: acl_backend_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 2
    functionsReached:
    - event_unref
    - struct acl_backend*::v::deinit
    - settings_free
    - acl_cache_deinit
    - acl_object_deinit
    linkageType: ''
    returnType: void
    signature: void acl_backend_deinit(struct acl_backend **_backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: acl_backend_get_acl_username
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *acl_backend_get_acl_username(struct acl_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 137
    functionName: acl_backend_user_is_authenticated
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool acl_backend_user_is_authenticated(struct acl_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: acl_backend_user_is_owner
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool acl_backend_user_is_owner(struct acl_backend *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - backend
    - username
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 153
    functionName: acl_backend_user_name_equals
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool acl_backend_user_name_equals(struct acl_backend *backend,\n\t\t\t\t
      \ const char *username)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_not_empty
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:158,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - backend
    - group_name
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 161
    functionName: acl_backend_user_is_in_group
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 0
    functionsReached:
    - array_bsearch
    - array_not_empty
    linkageType: ''
    returnType: bool
    signature: "bool acl_backend_user_is_in_group(struct acl_backend *backend,\n\t\t\t\t
      \ const char *group_name)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_user_is_authenticated
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:170,1
    - Dst: acl_backend_user_is_in_group
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:173,1
    - Dst: acl_backend_user_name_equals
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:175,1
    - Dst: acl_backend_user_is_owner
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:177,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - backend
    - rights
    argTypes:
    - struct acl_backend*
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 182
    functionName: acl_backend_rights_match_me
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 1
    functionsReached:
    - i_unreached
    - acl_backend_user_is_in_group
    - acl_backend_user_is_authenticated
    - acl_backend_user_is_owner
    - acl_backend_user_name_equals
    linkageType: ''
    returnType: bool
    signature: "bool acl_backend_rights_match_me(struct acl_backend *backend,\n\t\t\t\t
      const struct acl_rights *rights)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - backend
    - right
    argTypes:
    - struct acl_backend*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: acl_backend_lookup_right
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 2
    functionsReached:
    - acl_cache_right_lookup
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int acl_backend_lookup_right(struct acl_backend *backend,\n\t\t\t\t
      \     const char *right)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:192,1
    - Dst: acl_object_init_from_name
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 206
    functionName: acl_backend_get_default_object
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 1
    functionsReached:
    - mailbox_list_get_namespace
    - acl_object_init_from_name
    linkageType: ''
    returnType: struct acl_object
    signature: struct acl_object *acl_backend_get_default_object(struct acl_backend
      *backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_get_default_object
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:211,1
    - Dst: struct acl_backend*::v::object_refresh_cache
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:213,1
    - Dst: acl_cache_get_my_rights
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - backend
    - mask_r
    argTypes:
    - struct acl_backend*
    - struct acl_mask**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 220
    functionName: acl_backend_get_default_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 3
    functionsReached:
    - acl_backend_get_default_object
    - struct acl_backend*::v::object_refresh_cache
    - acl_cache_get_my_rights
    linkageType: ''
    returnType: int
    signature: "int acl_backend_get_default_rights(struct acl_backend *backend,\n\t\t\t\t
      \  const struct acl_mask **mask_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:225,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:226,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:231,1
    - Dst: mail_storage_mailbox_create_event
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:233,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:239,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:241,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:242,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:243,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:245,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:248,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:252,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:253,1
    - Dst: acl_rights_dup
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:254,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:255,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:259,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:260,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - backend
    - aclobj
    argTypes:
    - struct acl_backend*
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 262
    functionName: acl_backend_get_mailbox_acl
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 1
    functionsReached:
    - mailbox_list_is_valid_name
    - array_append_space
    - event_unref
    - array_foreach_elem
    - e_debug
    - settings_free
    - mail_storage_mailbox_create_event
    - e_error
    - mailbox_list_get_vname
    - settings_get_filter
    - acl_rights_dup
    - array_is_created
    - settings_get
    linkageType: ''
    returnType: int
    signature: int acl_backend_get_mailbox_acl(struct acl_backend *backend, struct
      acl_object *aclobj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:266,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct acl_backend_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 269
    functionName: acl_backend_register
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: void
    signature: void acl_backend_register(const struct acl_backend_vfuncs *v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_find
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:273,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:274,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:275,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-backend.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 277
    functionName: acl_backend_unregister
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend.c
    functionUses: 0
    functionsReached:
    - acl_backend_find
    - i_assert
    - DLLIST_REMOVE
    - i_free
    linkageType: ''
    returnType: void
    signature: void acl_backend_unregister(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_is_mailbox_file
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile.h:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 84
    functionName: mail_storage_get_acl_list_path_type
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
    functionUses: 1
    functionsReached:
    - mail_storage_is_mailbox_file
    linkageType: ''
    returnType: enum mailbox_list_path_type
    signature: enum mailbox_list_path_type mail_storage_get_acl_list_path_type(struct
      mail_storage *storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:44,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:48,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:49,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:50,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - backend
    - validity_rec_size
    argTypes:
    - struct acl_backend*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 54
    functionName: acl_cache_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - hash_table_create
    - i_new
    linkageType: ''
    returnType: struct acl_cache
    signature: "struct acl_cache *acl_cache_init(struct acl_backend *backend,\n\t\t\t\t
      size_t validity_rec_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_flush_all
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:64,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:65,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:66,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:67,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:68,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _cache
    argTypes:
    - struct acl_cache**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 70
    functionName: acl_cache_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 1
    functionsReached:
    - acl_cache_flush_all
    - pool_unref
    - i_free
    - array_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void acl_cache_deinit(struct acl_cache **_cache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_mask_deinit
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:76,1
    - Dst: acl_cache_mask_deinit
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:78,1
    - Dst: acl_cache_mask_deinit
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:80,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:81,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - obj_cache
    argTypes:
    - struct acl_object_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 83
    functionName: acl_cache_free_object_cache
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 0
    functionsReached:
    - acl_cache_mask_deinit
    - i_free
    linkageType: ''
    returnType: void
    signature: void acl_cache_free_object_cache(struct acl_object_cache *obj_cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:94,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:95,1
    - Dst: acl_cache_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:97,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:98,1
    - Dst: p_malloc
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:103,1
    - Dst: SIZEOF_ACL_MASK
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:103,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - cache
    - pool
    - rights
    argTypes:
    - struct acl_cache*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 108
    functionName: acl_cache_mask_init_real
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 0
    functionsReached:
    - memcpy
    - buffer_get_space_unsafe
    - str_array_length
    - t_buffer_create
    - SIZEOF_ACL_MASK
    - acl_cache_right_lookup
    - p_malloc
    linkageType: ''
    returnType: struct acl_mask
    signature: "struct acl_mask *\nacl_cache_mask_init_real(struct acl_cache *cache,
      pool_t pool,\n\t\t\t const char *const *rights)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_mask_init_real
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cache
    - pool
    - rights
    argTypes:
    - struct acl_cache*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: acl_cache_mask_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 1
    functionsReached:
    - acl_cache_mask_init_real
    linkageType: ''
    returnType: struct acl_mask
    signature: "struct acl_mask *acl_cache_mask_init(struct acl_cache *cache, pool_t
      pool,\n\t\t\t\t     const char *const *rights)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:126,1
    - Dst: SIZEOF_ACL_MASK
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:126,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - pool
    - src
    argTypes:
    - pool_t
    - struct acl_mask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 131
    functionName: acl_cache_mask_dup
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 0
    functionsReached:
    - memcpy
    - SIZEOF_ACL_MASK
    - p_malloc
    linkageType: ''
    returnType: struct acl_mask
    signature: 'struct acl_mask *

      acl_cache_mask_dup(pool_t pool, const struct acl_mask *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _mask
    argTypes:
    - struct acl_mask**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: acl_cache_mask_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 1
    functionsReached:
    - p_free
    linkageType: ''
    returnType: void
    signature: void acl_cache_mask_deinit(struct acl_mask **_mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:150,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:153,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:155,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:156,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:157,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:158,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - cache
    - right
    argTypes:
    - struct acl_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 163
    functionName: acl_cache_right_lookup
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 2
    functionsReached:
    - p_strdup
    - POINTER_CAST
    - array_push_back
    - POINTER_CAST_TO
    - array_count
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int acl_cache_right_lookup(struct acl_cache *cache, const
      char *right)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:169,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:171,1
    - Dst: acl_cache_free_object_cache
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cache
    - objname
    argTypes:
    - struct acl_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 174
    functionName: acl_cache_flush
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 2
    functionsReached:
    - hash_table_lookup
    - hash_table_remove
    - acl_cache_free_object_cache
    linkageType: ''
    returnType: void
    signature: void acl_cache_flush(struct acl_cache *cache, const char *objname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:182,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:183,1
    - Dst: acl_cache_free_object_cache
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:184,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:185,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct acl_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 188
    functionName: acl_cache_flush_all
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - acl_cache_free_object_cache
    - hash_table_iterate_init
    - hash_table_clear
    linkageType: ''
    returnType: void
    signature: void acl_cache_flush_all(struct acl_cache *cache)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_mask_init
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:202,1
    - Dst: I_MIN
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:238,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:248,1
    - Dst: acl_cache_mask_deinit
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:254,1
    - Dst: acl_cache_mask_deinit
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:257,1
    - Dst: acl_cache_mask_deinit
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:264,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 52
    argCount: 5
    argNames:
    - cache
    - obj_cache
    - modify_mode
    - rights
    - mask_p
    argTypes:
    - struct acl_cache*
    - struct acl_object_cache*
    - enum acl_modify_mode
    - char**
    - struct acl_mask**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 190
    functionDepth: 3
    functionLinenumber: 190
    functionLinenumberEnd: 266
    functionName: acl_cache_update_rights_mask
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 0
    functionsReached:
    - acl_cache_mask_deinit
    - I_MIN
    - i_unreached
    - acl_cache_mask_init
    linkageType: ''
    returnType: void
    signature: "void acl_cache_update_rights_mask(struct acl_cache *cache,\n\t\t\t
      \    struct acl_object_cache *obj_cache,\n\t\t\t     enum acl_modify_mode modify_mode,\n\t\t\t
      \    const char *const *rights,\n\t\t\t     struct acl_mask **mask_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:274,1
    - Dst: i_malloc
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:276,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:276,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:278,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - cache
    - objname
    - created_r
    argTypes:
    - struct acl_cache*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 285
    functionName: acl_cache_object_get
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 0
    functionsReached:
    - i_malloc
    - i_strdup
    - hash_table_insert
    - MALLOC_ADD
    - hash_table_lookup
    linkageType: ''
    returnType: struct acl_object_cache
    signature: "struct acl_object_cache *\nacl_cache_object_get(struct acl_cache *cache,
      const char *objname,\n\t\t     bool *created_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_object_get
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:293,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:294,1
    - Dst: acl_cache_mask_dup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:300,1
    - Dst: acl_cache_update_rights_mask
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:304,1
    - Dst: acl_cache_update_rights_mask
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - cache
    - objname
    - update
    argTypes:
    - struct acl_cache*
    - char*
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 310
    functionName: acl_cache_update
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 2
    functionsReached:
    - acl_cache_mask_dup
    - i_assert
    - acl_cache_object_get
    - acl_cache_update_rights_mask
    linkageType: ''
    returnType: void
    signature: "void acl_cache_update(struct acl_cache *cache, const char *objname,\n\t\t
      \     const struct acl_rights_update *update)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: acl_cache_object_get
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:318,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cache
    - objname
    - validity
    argTypes:
    - struct acl_cache*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 327
    functionName: acl_cache_set_validity
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 2
    functionsReached:
    - memcpy
    - acl_cache_object_get
    linkageType: ''
    returnType: void
    signature: "void acl_cache_set_validity(struct acl_cache *cache, const char *objname,\n\t\t\t
      \   const void *validity)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cache
    - objname
    argTypes:
    - struct acl_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 335
    functionName: acl_cache_get_validity
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 4
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: void *acl_cache_get_validity(struct acl_cache *cache, const char *objname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:340,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 342
    functionName: acl_cache_get_names
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 1
    functionsReached:
    - array_count
    - array_front
    linkageType: ''
    returnType: char
    signature: "char *const *acl_cache_get_names(struct acl_cache *cache,\n\t\t\t\t
      \      unsigned int *count_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_malloc
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:353,1
    - Dst: SIZEOF_ACL_MASK
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:353,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:359,1
    - Dst: I_MIN
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - obj_cache
    argTypes:
    - struct acl_object_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 368
    functionName: acl_cache_my_current_rights_recalculate
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 0
    functionsReached:
    - memcpy
    - I_MIN
    - i_malloc
    - SIZEOF_ACL_MASK
    linkageType: ''
    returnType: void
    signature: void acl_cache_my_current_rights_recalculate(struct acl_object_cache
      *obj_cache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:375,1
    - Dst: acl_cache_my_current_rights_recalculate
      Src: /src/dovecot/src/plugins/acl/acl-cache.c:382,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - cache
    - objname
    argTypes:
    - struct acl_cache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 384
    functionName: acl_cache_get_my_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 3
    functionsReached:
    - hash_table_lookup
    - acl_cache_my_current_rights_recalculate
    linkageType: ''
    returnType: struct acl_mask
    signature: 'struct acl_mask *

      acl_cache_get_my_rights(struct acl_cache *cache, const char *objname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - mask
    - right_idx
    argTypes:
    - struct acl_mask*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 395
    functionName: acl_cache_mask_isset
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-cache.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool acl_cache_mask_isset(const struct acl_mask *mask, unsigned int
      right_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:32,1
    - Dst: I_MAX
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:33,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:34,1
    - Dst: I_MAX
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:34,1
    - Dst: p_clear
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:36,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - backend
    - file_size
    argTypes:
    - struct acl_backend_vfile*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: acllist_clear
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - I_MAX
    - array_clear
    - p_clear
    linkageType: ''
    returnType: void
    signature: void acllist_clear(struct acl_backend_vfile *backend, uoff_t file_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:52,1
    - Dst: mail_storage_get_acl_list_path_type
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:53,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:54,1
    - Dst: mail_storage_is_mailbox_file
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:59,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:60,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:62,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:67,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - backend
    - root_dir_r
    - type_r
    argTypes:
    - struct acl_backend_vfile*
    - char**
    - enum mailbox_list_path_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 74
    functionName: acl_list_get_root_dir
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_root_path
    - mail_storage_is_mailbox_file
    - mailbox_list_get_namespace
    - mail_storage_get_acl_list_path_type
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: bool
    signature: "bool acl_list_get_root_dir(struct acl_backend_vfile *backend,\n\t\t\t\t
      \ const char **root_dir_r,\n\t\t\t\t  enum mailbox_list_path_type *type_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: acl_list_get_root_dir
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:82,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - backend
    - path_r
    argTypes:
    - struct acl_backend_vfile*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 76
    functionDepth: 3
    functionLinenumber: 76
    functionLinenumberEnd: 86
    functionName: acl_list_get_path
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - acl_list_get_root_dir
    linkageType: ''
    returnType: bool
    signature: "bool acl_list_get_path(struct acl_backend_vfile *backend,\n\t\t\t
      \     const char **path_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: acl_list_get_path
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:99,1
    - Dst: acllist_clear
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:101,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:107,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:111,1
    - Dst: open
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:118,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:124,1
    - Dst: fstat
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:127,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:128,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:129,1
    - Dst: acllist_clear
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:133,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:135,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:136,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:142,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:143,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:144,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:147,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:148,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:152,1
    - Dst: close
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:154,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:155,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend_vfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 88
    functionDepth: 4
    functionLinenumber: 88
    functionLinenumberEnd: 157
    functionName: acl_backend_vfile_acllist_read
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - acl_list_get_path
    - i_stream_create_fd
    - p_strdup
    - array_push_back
    - i_close_fd
    - open
    - i_stream_read_next_line
    - acllist_clear
    - e_error
    - fstat
    - stat
    - i_unlink_if_exists
    - close
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int acl_backend_vfile_acllist_read(struct acl_backend_vfile *backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:161,1
    - Dst: acl_backend_vfile_acllist_read
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:167,1
    - Dst: acllist_clear
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:168,1
    - Dst: acl_backend_vfile_acllist_rebuild
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:170,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend_vfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 159
    functionDepth: 5
    functionLinenumber: 159
    functionLinenumberEnd: 172
    functionName: acl_backend_vfile_acllist_refresh
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - acllist_clear
    - acl_backend_vfile_acllist_rebuild
    - acl_backend_vfile_acllist_read
    - i_assert
    linkageType: ''
    returnType: void
    signature: void acl_backend_vfile_acllist_refresh(struct acl_backend_vfile *backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:185,1
    - Dst: acl_cache_flush
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:186,1
    - Dst: acl_object_init_from_name
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:187,1
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:189,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:190,1
    - Dst: acl_rights_has_nonowner_lookup_changes
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:191,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:194,1
    - Dst: acl_backend_vfile_object_get_mtime
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:196,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:200,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:201,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:203,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:203,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:204,1
    - Dst: acl_object_deinit
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - backend
    - output
    - vname
    argTypes:
    - struct acl_backend_vfile*
    - struct ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 174
    functionDepth: 3
    functionLinenumber: 174
    functionLinenumberEnd: 208
    functionName: acllist_append
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - dec2str
    - p_strdup
    - acl_cache_flush
    - acl_object_list_deinit
    - acl_object_list_next
    - acl_object_list_init
    - array_push_back
    - acl_rights_has_nonowner_lookup_changes
    - t_strdup_printf
    - mailbox_list_get_storage_name
    - acl_backend_vfile_object_get_mtime
    - o_stream_nsend_str
    - acl_object_deinit
    - acl_object_init_from_name
    linkageType: ''
    returnType: int
    signature: "int acllist_append(struct acl_backend_vfile *backend, struct ostream
      *output,\n\t       const char *vname)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:226,1
    - Dst: acl_list_get_root_dir
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:228,1
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:231,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:237,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:238,1
    - Dst: mailbox_list_get_temp_prefix
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:238,1
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:243,1
    - Dst: safe_mkstemp_group
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:244,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:248,1
    - Dst: safe_mkstemp_group
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:251,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:256,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:260,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:261,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:264,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:265,1
    - Dst: acllist_clear
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:268,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:271,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:274,1
    - Dst: acllist_append
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:275,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend_vfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 210
    functionDepth: 4
    functionLinenumber: 210
    functionLinenumberEnd: 276
    functionName: acl_backend_vfile_acllist_try_rebuild
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - mailbox_list_get_temp_prefix
    - mailbox_list_mkdir_root
    - acl_list_get_root_dir
    - mailbox_list_iter_next
    - o_stream_cork
    - mailbox_list_get_namespace
    - safe_mkstemp_group
    - e_error
    - acllist_clear
    - acllist_append
    - o_stream_create_fd_file
    - mailbox_list_iter_init
    - mailbox_list_get_root_permissions
    - ENOACCESS
    - i_assert
    linkageType: ''
    returnType: int
    signature: int acl_backend_vfile_acllist_try_rebuild(struct acl_backend_vfile
      *backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_vfile_acllist_try_rebuild
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:326,1
    - Dst: acl_list_get_path
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:330,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:331,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct acl_backend_vfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 322
    functionDepth: 5
    functionLinenumber: 322
    functionLinenumberEnd: 335
    functionName: acl_backend_vfile_acllist_rebuild
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 1
    functionsReached:
    - acl_list_get_path
    - i_unlink_if_exists
    - acl_backend_vfile_acllist_try_rebuild
    - i_unreached
    linkageType: ''
    returnType: int
    signature: int acl_backend_vfile_acllist_rebuild(struct acl_backend_vfile *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:343,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - backend
    - name
    argTypes:
    - struct acl_backend_vfile*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 348
    functionName: acl_backend_vfile_acllist_find
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach
    linkageType: ''
    returnType: struct acl_backend_vfile_acllist
    signature: "struct acl_backend_vfile_acllist *\nacl_backend_vfile_acllist_find(struct
      acl_backend_vfile *backend,\n\t\t\t       const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_vfile_acllist_refresh
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:358,1
    - Dst: acl_backend_vfile_acllist_find
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:359,1
    - Dst: acl_backend_vfile_acllist_rebuild
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:361,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - backend
    - name
    - mtime
    argTypes:
    - struct acl_backend_vfile*
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 350
    functionDepth: 6
    functionLinenumber: 350
    functionLinenumberEnd: 362
    functionName: acl_backend_vfile_acllist_verify
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 1
    functionsReached:
    - acl_backend_vfile_acllist_find
    - acl_backend_vfile_acllist_refresh
    - acl_backend_vfile_acllist_rebuild
    linkageType: ''
    returnType: void
    signature: "void acl_backend_vfile_acllist_verify(struct acl_backend_vfile *backend,\n\t\t\t\t
      \     const char *name, time_t mtime)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_vfile_acllist_refresh
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:371,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 364
    functionDepth: 6
    functionLinenumber: 364
    functionLinenumberEnd: 377
    functionName: acl_backend_vfile_nonowner_iter_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - acl_backend_vfile_acllist_refresh
    - i_new
    linkageType: ''
    returnType: struct acl_mailbox_list_context
    signature: 'struct acl_mailbox_list_context *

      acl_backend_vfile_nonowner_iter_init(struct acl_backend *_backend)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:392,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - _ctx
    - name_r
    argTypes:
    - struct acl_mailbox_list_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 400
    functionName: acl_backend_vfile_nonowner_iter_next
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool acl_backend_vfile_nonowner_iter_next(struct acl_mailbox_list_context
      *_ctx,\n\t\t\t\t\t const char **name_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct acl_mailbox_list_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 418
    functionName: acl_backend_vfile_nonowner_iter_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: int
    signature: int acl_backend_vfile_nonowner_iter_deinit(struct acl_mailbox_list_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_vfile_acllist_rebuild
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct acl_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 420
    functionDepth: 6
    functionLinenumber: 420
    functionLinenumberEnd: 426
    functionName: acl_backend_vfile_nonowner_lookups_rebuild
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    functionUses: 0
    functionsReached:
    - acl_backend_vfile_acllist_rebuild
    linkageType: ''
    returnType: int
    signature: int acl_backend_vfile_nonowner_lookups_rebuild(struct acl_backend *_backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: ACL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-plugin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: ACL_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-plugin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: ACL_LIST_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-plugin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_LIST_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: ACL_LIST_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-plugin.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_LIST_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: ACL_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-plugin.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: ACL_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-plugin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:25,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:26,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:27,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:29,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 31
    functionName: acl_ns_prefix_exists
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-shared-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_alloc
    - t_strndup
    - mailbox_exists
    linkageType: ''
    returnType: bool
    signature: bool acl_ns_prefix_exists(struct mail_namespace *ns)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:38,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:45,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:50,1
    - Dst: shared_storage_ns_prefix_expand
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:51,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:53,1
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:54,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:58,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:60,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:61,1
    - Dst: acl_ns_prefix_exists
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:63,1
    - Dst: mail_namespace_destroy
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ns
    - storage
    - userdomain
    argTypes:
    - struct mail_namespace*
    - struct mail_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 67
    functionName: acl_shared_namespace_add
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-shared-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - container_of
    - mailbox_list_iter_deinit
    - acl_ns_prefix_exists
    - shared_storage_ns_prefix_expand
    - mailbox_list_iter_next
    - mailbox_list_iter_init
    - mail_namespace_destroy
    - shared_storage_get_namespace
    linkageType: ''
    returnType: void
    signature: "void acl_shared_namespace_add(struct mail_namespace *ns,\n\t\t\t struct
      mail_storage *storage, const char *userdomain)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_USER_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:71,1
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:72,1
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:73,1
    - Dst: acl_mailbox_list_get_backend
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:74,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:78,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:80,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:80,1
    - Dst: acl_lookup_dict_iterate_visible_init
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:88,1
    - Dst: acl_lookup_dict_iterate_visible_next
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:90,1
    - Dst: acl_shared_namespace_add
      Src: /src/dovecot/src/plugins/acl/acl-shared-storage.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 94
    functionName: acl_shared_namespaces_add
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-shared-storage.c
    functionUses: 1
    functionsReached:
    - strcmp
    - acl_shared_namespace_add
    - ACL_LIST_CONTEXT
    - acl_mailbox_list_get_backend
    - ACL_USER_CONTEXT
    - mail_namespace_get_default_storage
    - acl_lookup_dict_iterate_visible_next
    - acl_lookup_dict_iterate_visible_init
    - i_assert
    linkageType: ''
    returnType: int
    signature: int acl_shared_namespaces_add(struct mail_namespace *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_USER_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:20,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:22,1
    - Dst: acl_lookup_dict_deinit
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:23,1
    - Dst: struct acl_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 25
    functionName: acl_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-storage.c
    functionUses: 0
    functionsReached:
    - acl_lookup_dict_deinit
    - i_assert
    - struct acl_user*::module_ctx::super::deinit
    - ACL_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void acl_user_deinit(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:34,1
    - Dst: acl_lookup_dict_init
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:38,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:39,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:40,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:42,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:44,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/acl/acl-storage.c:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 48
    functionName: acl_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-storage.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - e_debug
    - e_error
    - MODULE_CONTEXT_SET
    - acl_lookup_dict_init
    linkageType: ''
    returnType: void
    signature: void acl_mail_user_created(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:32,1
    - Dst: mailbox_list_get_permissions
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:39,1
    - Dst: file_dotlock_open_group
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:41,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:46,1
    - Dst: acl_cache_flush
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:53,1
    - Dst: struct acl_object*::backend::v::object_refresh_cache
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:54,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - aclobj
    - dotlock_r
    argTypes:
    - struct acl_object_vfile*
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 59
    functionName: acl_backend_vfile_update_begin
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - acl_cache_flush
    - file_dotlock_open_group
    - e_error
    - mailbox_list_get_permissions
    - struct acl_object*::backend::v::object_refresh_cache
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_update_begin(struct acl_object_vfile *aclobj,\n\t\t\t\t\t
      \ struct dotlock **dotlock_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:68,1
    - Dst: acl_right_names_modify
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:69,1
    - Dst: acl_right_names_modify
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:71,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:78,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - aclobj
    - idx
    - update
    argTypes:
    - struct acl_object*
    - unsigned int
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 82
    functionName: vfile_object_modify_right
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c
    functionUses: 0
    functionsReached:
    - array_delete
    - acl_right_names_modify
    - array_idx_modifiable
    linkageType: ''
    returnType: bool
    signature: "bool vfile_object_modify_right(struct acl_object *aclobj, unsigned
      int idx,\n\t\t\t  const struct acl_rights_update *update)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:97,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:99,1
    - Dst: acl_right_names_modify
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:102,1
    - Dst: acl_right_names_modify
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:104,1
    - Dst: array_insert
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - aclobj
    - idx
    - update
    argTypes:
    - struct acl_object*
    - unsigned int
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 112
    functionName: vfile_object_add_right
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_insert
    - p_strdup
    - acl_right_names_modify
    linkageType: ''
    returnType: bool
    signature: "bool vfile_object_add_right(struct acl_object *aclobj, unsigned int
      idx,\n\t\t       const struct acl_rights_update *update)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:120,1
    - Dst: acl_rights_write_id
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:121,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:123,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:123,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:125,1
    - Dst: str_escape
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:125,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:125,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:126,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - dest
    - right
    - neg
    argTypes:
    - string_t*
    - struct acl_rights*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 128
    functionName: vfile_write_right
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_c
    - str_printfa
    - str_append_c
    - acl_rights_write_id
    - str_escape
    - str_truncate
    - t_strdup
    linkageType: ''
    returnType: void
    signature: "void vfile_write_right(string_t *dest, const struct acl_rights *right,\n\t\t
      \ bool neg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:146,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:147,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:149,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:152,1
    - Dst: vfile_write_right
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:155,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:156,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:156,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:156,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:157,1
    - Dst: vfile_write_right
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:160,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:161,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:161,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:161,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:162,1
    - Dst: str_free
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:165,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:166,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:167,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:168,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:171,1
    - Dst: fsync
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:174,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:175,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - aclobj
    - fd
    - path
    argTypes:
    - struct acl_object*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 179
    functionName: acl_backend_vfile_update_write
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - o_stream_get_error
    - array_get
    - o_stream_cork
    - o_stream_finish
    - e_error
    - vfile_write_right
    - o_stream_nsend
    - o_stream_destroy
    - o_stream_create_fd_file
    - str_truncate
    - fsync
    - str_new
    - str_free
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_update_write(struct acl_object *aclobj,\n\t\t\t
      \      int fd, const char *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:186,1
    - Dst: acl_cache_flush
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:188,1
    - Dst: acl_cache_get_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - _aclobj
    - fd
    argTypes:
    - struct acl_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 181
    functionDepth: 3
    functionLinenumber: 181
    functionLinenumberEnd: 197
    functionName: acl_backend_vfile_update_cache
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c
    functionUses: 0
    functionsReached:
    - acl_cache_flush
    - fstat
    - acl_cache_get_validity
    linkageType: ''
    returnType: void
    signature: void acl_backend_vfile_update_cache(struct acl_object *_aclobj, int
      fd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:217,1
    - Dst: acl_backend_vfile_update_begin
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:219,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:223,1
    - Dst: vfile_object_add_right
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:225,1
    - Dst: vfile_object_modify_right
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:227,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:229,1
    - Dst: acl_cache_get_validity
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:233,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:238,1
    - Dst: acl_backend_vfile_update_write
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:239,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:240,1
    - Dst: acl_cache_flush
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:241,1
    - Dst: utime
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:251,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:252,1
    - Dst: acl_backend_vfile_update_cache
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:254,1
    - Dst: file_dotlock_replace
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:255,1
    - Dst: acl_cache_flush
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:256,1
    - Dst: acl_rights_has_nonowner_lookup_changes
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:261,1
    - Dst: acl_backend_vfile_acllist_rebuild
      Src: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c:264,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - _aclobj
    - update
    argTypes:
    - struct acl_object*
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 199
    functionDepth: 6
    functionLinenumber: 199
    functionLinenumberEnd: 266
    functionName: acl_backend_vfile_object_update
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - utime
    - acl_backend_vfile_update_begin
    - vfile_object_modify_right
    - acl_cache_flush
    - acl_cache_get_validity
    - acl_rights_has_nonowner_lookup_changes
    - e_error
    - acl_backend_vfile_update_write
    - file_dotlock_replace
    - acl_backend_vfile_acllist_rebuild
    - vfile_object_add_right
    - file_dotlock_get_lock_path
    - i_assert
    - array_bsearch_insert_pos
    - acl_backend_vfile_update_cache
    linkageType: ''
    returnType: int
    signature: "int acl_backend_vfile_object_update(struct acl_object *_aclobj,\n\t\t\t\t
      \   const struct acl_rights_update *update)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:33,1
    - Dst: mailbox_attribute_value_to_string
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:38,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:42,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:46,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:47,1
    - Dst: acl_rights_update_import
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:48,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:49,1
    - Dst: acl_mailbox_update_acl
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - t
    - key
    - value
    argTypes:
    - struct mailbox_transaction_context*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 54
    functionName: acl_attribute_update_acl
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - i_zero
    - acl_mailbox_update_acl
    - strlen
    - mailbox_attribute_value_to_string
    - t_strsplit
    - acl_rights_update_import
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int acl_attribute_update_acl(struct mailbox_transaction_context *t,
      const char *key,\n\t\t\t const struct mail_attribute_value *value)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: acl_mailbox_get_aclobj
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:59,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:65,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:68,1
    - Dst: acl_object_last_changed
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:75,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:77,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:78,1
    - Dst: acl_identifier_parse
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:79,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:80,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:81,1
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:85,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:86,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:89,1
    - Dst: acl_rights_export
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:90,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:98,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:99,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - box
    - key
    - value_r
    argTypes:
    - struct mailbox*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 103
    functionName: acl_attribute_get_acl
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - i_zero
    - acl_object_list_deinit
    - acl_object_last_changed
    - acl_object_list_init
    - acl_object_list_next
    - strlen
    - t_strdup_printf
    - acl_identifier_parse
    - null_strcmp
    - acl_mailbox_get_aclobj
    - mail_storage_set_internal_error
    - mail_storage_set_error
    - acl_rights_export
    linkageType: ''
    returnType: int
    signature: "int acl_attribute_get_acl(struct mailbox *box, const char *key,\n\t\t\t\t
      struct mail_attribute_value *value_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:114,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:118,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:119,1
    - Dst: acl_mailbox_have_extra_attribute_rights
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 124
    functionName: acl_have_attribute_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_have_extra_attribute_rights
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - acl_mailbox_right_lookup
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int acl_have_attribute_rights(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:130,1
    - Dst: acl_have_attribute_rights
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:132,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:134,1
    - Dst: acl_attribute_update_acl
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:135,1
    - Dst: struct acl_mailbox*::module_ctx::super::attribute_set
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - t
    - type
    - key
    - value
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: acl_attribute_set
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - struct acl_mailbox*::module_ctx::super::attribute_set
    - acl_have_attribute_rights
    - ACL_CONTEXT_REQUIRE
    - acl_attribute_update_acl
    linkageType: ''
    returnType: int
    signature: "int acl_attribute_set(struct mailbox_transaction_context *t,\n\t\t
      \     enum mail_attribute_type type, const char *key,\n\t\t      const struct
      mail_attribute_value *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:143,1
    - Dst: acl_have_attribute_rights
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:145,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:147,1
    - Dst: acl_attribute_get_acl
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:148,1
    - Dst: struct acl_mailbox*::module_ctx::super::attribute_get
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - box
    - type
    - key
    - value_r
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 150
    functionName: acl_attribute_get
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - struct acl_mailbox*::module_ctx::super::attribute_get
    - str_begins_with
    - acl_have_attribute_rights
    - ACL_CONTEXT_REQUIRE
    - acl_attribute_get_acl
    linkageType: ''
    returnType: int
    signature: "int acl_attribute_get(struct mailbox *box,\n\t\t      enum mail_attribute_type
      type, const char *key,\n\t\t      struct mail_attribute_value *value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:156,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:159,1
    - Dst: acl_have_attribute_rights
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:161,1
    - Dst: struct acl_mailbox*::module_ctx::super::attribute_iter_init
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:164,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:168,1
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:169,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:170,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - box
    - type
    - prefix
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 175
    functionName: acl_attribute_iter_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - acl_object_list_init
    - struct acl_mailbox*::module_ctx::super::attribute_iter_init
    - acl_have_attribute_rights
    - ACL_CONTEXT_REQUIRE
    - i_new
    - str_append
    - str_new
    linkageType: ''
    returnType: struct mailbox_attribute_iter
    signature: "struct mailbox_attribute_iter *\nacl_attribute_iter_init(struct mailbox
      *box, enum mail_attribute_type type,\n\t\t\tconst char *prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:185,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:188,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:188,1
    - Dst: acl_rights_write_id
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:189,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:190,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:192,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - aiter
    argTypes:
    - struct acl_mailbox_attribute_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 197
    functionName: acl_attribute_iter_next_acl
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - str_c
    - acl_object_list_deinit
    - acl_object_list_next
    - strlen
    - acl_rights_write_id
    - str_truncate
    - mail_storage_set_internal_error
    linkageType: ''
    returnType: char
    signature: 'char *

      acl_attribute_iter_next_acl(struct acl_mailbox_attribute_iter *aiter)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:202,1
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:203,1
    - Dst: acl_attribute_iter_next_acl
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:209,1
    - Dst: struct acl_mailbox*::module_ctx::super::attribute_iter_next
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mailbox_attribute_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 213
    functionName: acl_attribute_iter_next
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - struct acl_mailbox*::module_ctx::super::attribute_iter_next
    - acl_attribute_iter_next_acl
    - container_of
    linkageType: ''
    returnType: char
    signature: char *acl_attribute_iter_next(struct mailbox_attribute_iter *iter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:218,1
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:219,1
    - Dst: struct acl_mailbox*::module_ctx::super::attribute_iter_deinit
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:223,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:226,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:227,1
    - Dst: str_free
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:230,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-attributes.c:231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mailbox_attribute_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 233
    functionName: acl_attribute_iter_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-attributes.c
    functionUses: 0
    functionsReached:
    - container_of
    - acl_object_list_deinit
    - struct acl_mailbox*::module_ctx::super::attribute_iter_deinit
    - ACL_CONTEXT_REQUIRE
    - i_free
    - mail_storage_set_internal_error
    - str_free
    linkageType: ''
    returnType: int
    signature: int acl_attribute_iter_deinit(struct mailbox_attribute_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:44,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:46,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:49,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:50,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:51,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - user
    - dict_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct acl_lookup_dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 39
    functionDepth: 3
    functionLinenumber: 39
    functionLinenumberEnd: 53
    functionName: acl_lookup_dict_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 1
    functionsReached:
    - event_create
    - event_set_append_log_prefix
    - settings_event_add_filter_name
    - i_new
    - event_add_category
    - dict_init_auto
    linkageType: ''
    returnType: int
    signature: "int acl_lookup_dict_init(struct mail_user *user, struct acl_lookup_dict
      **dict_r,\n\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_deinit
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:61,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:62,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct acl_lookup_dict**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: acl_lookup_dict_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 1
    functionsReached:
    - i_free
    - event_unref
    - dict_deinit
    linkageType: ''
    returnType: void
    signature: void acl_lookup_dict_deinit(struct acl_lookup_dict **_dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct acl_lookup_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: acl_lookup_dict_is_enabled
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool acl_lookup_dict_is_enabled(struct acl_lookup_dict *dict)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:78,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:81,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:82,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:86,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:87,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - dest
    - right
    argTypes:
    - string_t*
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 93
    functionName: acl_lookup_dict_write_rights_id
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 0
    functionsReached:
    - str_append
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void acl_lookup_dict_write_rights_id(string_t *dest, const struct acl_rights
      *right)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - right
    - user
    argTypes:
    - struct acl_rights*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: acl_rights_is_same_user
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool acl_rights_is_same_user(const struct acl_rights *right, struct
      mail_user *user)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:116,1
    - Dst: acl_mailbox_list_get_backend
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:119,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:123,1
    - Dst: acl_backend_nonowner_lookups_iter_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:124,1
    - Dst: acl_backend_nonowner_lookups_iter_next
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:125,1
    - Dst: acl_object_init_from_name
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:126,1
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:128,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:129,1
    - Dst: acl_rights_has_nonowner_lookup_changes
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:132,1
    - Dst: acl_rights_is_same_user
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:133,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:134,1
    - Dst: acl_lookup_dict_write_rights_id
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:135,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:136,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:137,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:138,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:138,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:139,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:142,1
    - Dst: acl_object_deinit
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:143,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - ns
    - pool
    - ids
    argTypes:
    - struct mail_namespace*
    - pool_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 144
    functionName: acl_lookup_dict_rebuild_add_backend
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - acl_object_list_init
    - acl_object_list_next
    - t_str_new
    - acl_mailbox_list_get_backend
    - str_append_c
    - acl_rights_has_nonowner_lookup_changes
    - acl_lookup_dict_write_rights_id
    - acl_backend_nonowner_lookups_iter_init
    - acl_object_deinit
    - acl_rights_is_same_user
    - ACL_LIST_CONTEXT
    - acl_backend_nonowner_lookups_iter_next
    - acl_object_init_from_name
    - acl_object_list_deinit
    - array_push_back
    - str_truncate
    - str_append
    linkageType: ''
    returnType: int
    signature: "int acl_lookup_dict_rebuild_add_backend(struct mail_namespace *ns,
      pool_t pool,\n\t\t\t\t    ARRAY_TYPE(const_string) *ids)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:160,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:165,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:172,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:175,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:176,1
    - Dst: dict_iterate
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:177,1
    - Dst: strrchr
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:180,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:181,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:182,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:183,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:187,1
    - Dst: dict_lookup
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:190,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:190,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:193,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:198,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:199,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:201,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:204,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:205,1
    - Dst: dict_iterate
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:206,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:208,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:209,1
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:212,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:213,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:218,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:221,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:223,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:225,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:226,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:230,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:235,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:236,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:237,1
    - Dst: dict_set
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:238,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:238,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:242,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:243,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:244,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:245,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:246,1
    - Dst: dict_unset
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:247,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:247,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:250,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:251,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:254,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 74
    argCount: 4
    argNames:
    - dict
    - new_ids_arr
    - no_removes
    - acl_dict_index
    argTypes:
    - struct acl_lookup_dict*
    - ARRAY_TYPE*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 257
    functionName: acl_lookup_dict_rebuild_update
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - strlen
    - mail_user_get_dict_op_settings
    - t_strdup_printf
    - dict_iterate_init
    - dict_unset
    - dict_set
    - t_str_new
    - str_append_c
    - dict_lookup
    - dict_transaction_begin
    - dict_transaction_commit
    - array_get
    - e_error
    - pool_datastack_create
    - i_assert
    - strcmp
    - strrchr
    - array_push_back
    - str_append
    - t_array_init
    - dict_iterate
    - ARRAY_TYPE
    - t_strdup_until
    - array_sort
    - str_truncate
    - dict_iterate_deinit
    linkageType: ''
    returnType: int
    signature: "int acl_lookup_dict_rebuild_update(struct acl_lookup_dict *dict,\n\t\t\t
      \      const ARRAY_TYPE(const_string) *new_ids_arr,\n\t\t\t       bool no_removes,
      bool acl_dict_index)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:262,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:271,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:272,1
    - Dst: if
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:274,1
    - Dst: acl_lookup_dict_rebuild_add_backend
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - dict
    - acl_dict_index
    argTypes:
    - struct acl_lookup_dict*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 259
    functionDepth: 3
    functionLinenumber: 259
    functionLinenumberEnd: 276
    functionName: acl_lookup_dict_rebuild
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_array_init
    - if
    - acl_lookup_dict_rebuild_add_backend
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: int acl_lookup_dict_rebuild(struct acl_lookup_dict *dict, bool acl_dict_index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_elem
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:307,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:311,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:313,1
    - Dst: p_clear
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:318,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:319,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:320,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:321,1
    - Dst: dict_iterate
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:323,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:324,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:324,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:326,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:327,1
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:329,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct acl_lookup_dict_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 333
    functionName: acl_lookup_dict_iterate_read
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_push_back
    - strlen
    - mail_user_get_dict_op_settings
    - e_error
    - dict_iterate_init
    - array_idx_elem
    - dict_iterate
    - array_clear
    - i_assert
    - t_strconcat
    - dict_iterate_deinit
    - p_clear
    linkageType: ''
    returnType: void
    signature: void acl_lookup_dict_iterate_read(struct acl_lookup_dict_iter *iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_USER_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:339,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:344,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:346,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:347,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:351,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:353,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:354,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:355,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:357,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:359,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:362,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:365,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:367,1
    - Dst: acl_lookup_dict_iterate_read
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:374,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:376,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - dict
    - groups
    argTypes:
    - struct acl_lookup_dict*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 378
    functionName: acl_lookup_dict_iterate_visible_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - p_new
    - p_array_init
    - ACL_USER_CONTEXT
    - array_push_back
    - acl_lookup_dict_iterate_read
    - p_strconcat
    - array_clear
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: struct acl_lookup_dict_iter
    signature: "struct acl_lookup_dict_iter *\nacl_lookup_dict_iterate_visible_init(struct
      acl_lookup_dict *dict,\n\t\t\t\t     const ARRAY_TYPE(const_string) *groups)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strconcat
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:365,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 368
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 83
    functionsReached:
    - p_strconcat
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(groups, group)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:386,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:390,1
    - Dst: acl_lookup_dict_iterate_read
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:392,1
    - Dst: acl_lookup_dict_iterate_visible_next
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct acl_lookup_dict_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 380
    functionDepth: 2
    functionLinenumber: 380
    functionLinenumberEnd: 396
    functionName: acl_lookup_dict_iterate_visible_next
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 2
    functionsReached:
    - acl_lookup_dict_iterate_visible_next
    - array_get
    - array_count
    - acl_lookup_dict_iterate_read
    linkageType: ''
    returnType: char
    signature: 'char *

      acl_lookup_dict_iterate_visible_next(struct acl_lookup_dict_iter *iter)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:404,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:405,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/acl/acl-lookup-dict.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct acl_lookup_dict_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 408
    functionName: acl_lookup_dict_iterate_visible_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    functionUses: 0
    functionsReached:
    - array_free
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int acl_lookup_dict_iterate_visible_deinit(struct acl_lookup_dict_iter
      **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-settings.c:115,1
    - Dst: acl_identifier_parse
      Src: /src/dovecot/src/plugins/acl/acl-settings.c:117,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-settings.c:118,1
    - Dst: acl_right_names_parse
      Src: /src/dovecot/src/plugins/acl/acl-settings.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - _set
    - pool
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 132
    functionName: acl_rights_settings_check
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-settings.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - p_new
    - acl_right_names_parse
    - acl_identifier_parse
    linkageType: ''
    returnType: bool
    signature: bool acl_rights_settings_check(void *_set, pool_t pool, const char
      **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/acl/acl-settings.c:138,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/acl/acl-settings.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 141
    functionName: acl_settings_check
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-settings.c
    functionUses: 0
    functionsReached:
    - array_sort
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool acl_settings_check(void *_set ATTR_UNUSED, pool_t pool ATTR_UNUSED,\n\t\t\t
      \      const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/plugins/acl/test-acl.c:11,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/plugins/acl/test-acl.c:12,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/plugins/acl/test-acl.c:15,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/plugins/acl/test-acl.c:16,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/acl/test-acl.c:19,1
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/acl/test-acl.c:23,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/acl/test-acl.c:24,1
    - Dst: acl_rights_sort
      Src: /src/dovecot/src/plugins/acl/test-acl.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/acl/test-acl.c:28,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/test-acl.c:28,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/test-acl.c:31,1
    - Dst: acl_rights_sort
      Src: /src/dovecot/src/plugins/acl/test-acl.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/acl/test-acl.c:33,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/test-acl.c:33,1
    - Dst: array_idx
      Src: /src/dovecot/src/plugins/acl/test-acl.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/acl/test-acl.c:35,1
    - Dst: acl_rights_cmp
      Src: /src/dovecot/src/plugins/acl/test-acl.c:35,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/test-acl.c:40,1
    - Dst: acl_rights_sort
      Src: /src/dovecot/src/plugins/acl/test-acl.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/acl/test-acl.c:42,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/test-acl.c:42,1
    - Dst: array_idx
      Src: /src/dovecot/src/plugins/acl/test-acl.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/acl/test-acl.c:44,1
    - Dst: acl_rights_cmp
      Src: /src/dovecot/src/plugins/acl/test-acl.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/acl/test-acl.c:45,1
    - Dst: acl_rights_cmp
      Src: /src/dovecot/src/plugins/acl/test-acl.c:45,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/test-acl.c:48,1
    - Dst: acl_rights_sort
      Src: /src/dovecot/src/plugins/acl/test-acl.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/acl/test-acl.c:50,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/test-acl.c:50,1
    - Dst: array_idx
      Src: /src/dovecot/src/plugins/acl/test-acl.c:51,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/plugins/acl/test-acl.c:52,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/acl/test-acl.c:52,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/plugins/acl/test-acl.c:53,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/acl/test-acl.c:53,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/acl/test-acl.c:55,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/acl/test-acl.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 57
    functionName: test_acl_rights_sort
    functionSourceFile: /src/dovecot/src/plugins/acl/test-acl.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - acl_rights_cmp
    - array_push_back
    - array_idx
    - t_strarray_join
    - test_assert_strcmp
    - pool_unref
    - t_strsplit
    - test_end
    - array_count
    - t_array_init
    - test_assert
    - acl_rights_sort
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_acl_rights_sort(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/plugins/acl/test-acl.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 7
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/acl/test-acl.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_register
      Src: /src/dovecot/src/plugins/acl/acl-plugin.c:21,1
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/acl/acl-plugin.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 23
    functionName: acl_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    - acl_backend_register
    linkageType: ''
    returnType: void
    signature: void acl_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/acl/acl-plugin.c:27,1
    - Dst: acl_backend_unregister
      Src: /src/dovecot/src/plugins/acl/acl-plugin.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 25
    functionDepth: 3
    functionLinenumber: 25
    functionLinenumberEnd: 29
    functionName: acl_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - acl_backend_unregister
    linkageType: ''
    returnType: void
    signature: void acl_plugin_deinit(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:51,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:54,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:57,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:60,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:61,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:64,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:65,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:68,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:69,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:72,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - dest
    - right
    argTypes:
    - string_t*
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 74
    functionName: acl_rights_write_id
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 2
    functionsReached:
    - str_append
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void acl_rights_write_id(string_t *dest, const struct acl_rights *right)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:78,1
    - Dst: acl_rights_write_id
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:80,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - right
    argTypes:
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: acl_rights_get_id
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 0
    functionsReached:
    - acl_rights_write_id
    - t_str_new
    - str_c
    linkageType: ''
    returnType: char
    signature: char *acl_rights_get_id(const struct acl_rights *right)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: is_standard_right
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool is_standard_right(const char *name)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:99,1
    - Dst: acl_identifier_parse
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:102,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:103,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:112,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:113,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:123,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:127,1
    - Dst: is_standard_right
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:128,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:129,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:131,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:137,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:140,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:141,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:142,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:146,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:147,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:148,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 4
    argNames:
    - update
    - id
    - rights
    - error_r
    argTypes:
    - struct acl_rights_update*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 153
    functionName: acl_rights_update_import
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 1
    functionsReached:
    - strcmp
    - is_standard_right
    - array_push_back
    - t_strdup_printf
    - acl_identifier_parse
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: int
    signature: "int acl_rights_update_import(struct acl_rights_update *update,\n\t\t\t
      \    const char *id, const char *const *rights,\n\t\t\t     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:157,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:160,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:160,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:162,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:163,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:164,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:165,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:165,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:167,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - rights
    argTypes:
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 168
    functionName: acl_rights_export
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - t_strarray_join
    - str_append
    linkageType: ''
    returnType: char
    signature: char *acl_rights_export(const struct acl_rights *rights)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_unescape_next
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:179,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:188,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:192,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:195,1
    - Dst: acl_right_names_parse
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:197,1
    - Dst: acl_identifier_parse
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:205,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:206,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:213,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 4
    argNames:
    - line
    - pool
    - rights_r
    - error_r
    argTypes:
    - char*
    - pool_t
    - struct acl_rights*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 215
    functionName: acl_rights_parse_line
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 1
    functionsReached:
    - i_zero
    - strchr
    - p_strdup
    - str_unescape_next
    - t_strdup_printf
    - acl_identifier_parse
    - acl_right_names_parse
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: "int acl_rights_parse_line(const char *line, pool_t pool,\n\t\t\t  struct
      acl_rights *rights_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:221,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:223,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:225,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - src
    - pool
    - dest_r
    argTypes:
    - struct acl_rights*
    - pool_t
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 229
    functionName: acl_rights_dup
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 2
    functionsReached:
    - i_zero
    - p_strdup
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void acl_rights_dup(const struct acl_rights *src,\n\t\t    pool_t
      pool, struct acl_rights *dest_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct acl_rights*
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 245
    functionName: acl_rights_cmp
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 2
    functionsReached:
    - null_strcmp
    linkageType: ''
    returnType: int
    signature: int acl_rights_cmp(const struct acl_rights *r1, const struct acl_rights
      *r2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:260,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - rights
    argTypes:
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 264
    functionName: acl_rights_has_nonowner_lookup_changes
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 3
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool acl_rights_has_nonowner_lookup_changes(const struct acl_rights
      *rights)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:269,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:271,1
    - Dst: str_begins
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:273,1
    - Dst: str_begins
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:276,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:279,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:281,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:282,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - line
    - rights
    argTypes:
    - char*
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 288
    functionName: acl_identifier_parse
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 4
    functionsReached:
    - str_begins
    - strcmp
    linkageType: ''
    returnType: int
    signature: int acl_identifier_parse(const char *line, struct acl_rights *rights)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:298,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:301,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:302,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:306,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:312,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 316
    functionName: acl_right_names_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - p_new
    - array_get
    - array_sort
    linkageType: ''
    returnType: char
    signature: "char *const *\nacl_right_names_alloc(pool_t pool, ARRAY_TYPE(const_string)
      *rights_arr,\n\t\t      bool dup_strings)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:321,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:329,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:337,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:341,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:353,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:355,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:356,1
    - Dst: acl_right_names_alloc
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:360,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 318
    functionDepth: 2
    functionLinenumber: 318
    functionLinenumberEnd: 361
    functionName: acl_right_names_parse
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 2
    functionsReached:
    - p_strdup
    - array_push_back
    - t_strdup_printf
    - t_array_init
    - ARRAY_TYPE
    - t_strsplit_spaces
    - acl_right_names_alloc
    linkageType: ''
    returnType: char
    signature: 'char *const *

      acl_right_names_parse(pool_t pool, const char *acl, const char **error_r)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:370,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:374,1
    - Dst: str_insert
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:376,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:383,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:384,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:387,1
    - Dst: str_insert
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - dest
    - rights
    argTypes:
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 391
    functionName: acl_right_names_write
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_append_c
    - str_len
    - str_insert
    - str_append
    linkageType: ''
    returnType: void
    signature: void acl_right_names_write(string_t *dest, const char *const *rights)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:397,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:400,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:403,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:407,1
    - Dst: acl_right_names_alloc
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:410,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - pool
    - destp
    - src
    - dup_strings
    argTypes:
    - pool_t
    - char***
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 393
    functionDepth: 2
    functionLinenumber: 393
    functionLinenumberEnd: 411
    functionName: acl_right_names_merge
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 1
    functionsReached:
    - acl_right_names_alloc
    - t_array_init
    - ARRAY_TYPE
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void acl_right_names_merge(pool_t pool, const char *const **destp,\n\t\t\t
      \  const char *const *src, bool dup_strings)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:420,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:434,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:437,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:441,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:444,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:445,1
    - Dst: acl_right_names_merge
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:446,1
    - Dst: acl_right_names_merge
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:450,1
    - Dst: acl_right_names_merge
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:454,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:464,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-rights.c:472,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 4
    argNames:
    - pool
    - rightsp
    - modify_rights
    - modify_mode
    argTypes:
    - pool_t
    - char***
    - char**
    - enum acl_modify_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 413
    functionDepth: 3
    functionLinenumber: 413
    functionLinenumberEnd: 476
    functionName: acl_right_names_modify
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-rights.c
    functionUses: 2
    functionsReached:
    - strcmp
    - array_push_back
    - t_array_init
    - acl_right_names_merge
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool acl_right_names_modify(pool_t pool,\n\t\t\t    const char *const
      **rightsp,\n\t\t\t    const char *const *modify_rights,\n\t\t\t    enum acl_modify_mode
      modify_mode)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ACL_USER_CONTEXT
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:32,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:37,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:38,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:42,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:43,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:45,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:46,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:47,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:48,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:49,1
    - Dst: ACL_CONTEXT
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:54,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:56,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:57,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - user
    - mailbox
    - box_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    - char*
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 64
    functionName: cmd_acl_mailbox_open
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mail_namespace_find
    - mailbox_open
    - ACL_USER_CONTEXT
    - mailbox_get_last_internal_error
    - e_error
    - mailbox_alloc
    - ACL_CONTEXT
    - doveadm_mail_failed_error
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_acl_mailbox_open(struct doveadm_mail_cmd_context *ctx,\n\t\t
      \    struct mail_user *user, const char *mailbox,\n\t\t     struct mailbox **box_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:70,1
    - Dst: acl_rights_get_id
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:70,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:73,1
    - Dst: doveadm_print_empty
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:75,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:77,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:79,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:79,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:81,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:82,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:83,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:84,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:84,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:86,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - rights
    argTypes:
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 87
    functionName: cmd_acl_get_right
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - doveadm_print
    - str_append_c
    - doveadm_print_empty
    - t_strarray_join
    - str_len
    - acl_rights_get_id
    - str_append
    linkageType: ''
    returnType: void
    signature: void cmd_acl_get_right(const struct acl_rights *rights)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_mailbox_get_aclobj
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:92,1
    - Dst: acl_mailbox_list_get_backend
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:98,1
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:100,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:101,1
    - Dst: if
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:102,1
    - Dst: acl_backend_rights_match_me
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:103,1
    - Dst: cmd_acl_get_right
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - box
    argTypes:
    - struct doveadm_acl_cmd_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 105
    functionName: cmd_acl_get_mailbox
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_list_get_backend
    - acl_object_list_next
    - acl_object_list_init
    - cmd_acl_get_right
    - if
    - acl_mailbox_get_aclobj
    - acl_backend_rights_match_me
    linkageType: ''
    returnType: int
    signature: "int cmd_acl_get_mailbox(struct doveadm_acl_cmd_context *ctx,\n\t\t\t
      \      struct mailbox *box)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:119,1
    - Dst: cmd_acl_mailbox_open
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:123,1
    - Dst: cmd_acl_get_mailbox
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:126,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 114
    functionDepth: 5
    functionLinenumber: 114
    functionLinenumberEnd: 129
    functionName: cmd_acl_get_run
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - cmd_acl_get_mailbox
    - container_of
    - mailbox_free
    - cmd_acl_mailbox_open
    linkageType: ''
    returnType: int
    signature: "int cmd_acl_get_run(struct doveadm_mail_cmd_context *_ctx,\n\t\tstruct
      mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:134,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:137,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:138,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:139,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:140,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:141,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 143
    functionName: cmd_acl_get_init
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print_header
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    linkageType: ''
    returnType: void
    signature: void cmd_acl_get_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:150,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 155
    functionName: cmd_acl_get_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_acl_get_alloc(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:161,1
    - Dst: cmd_acl_mailbox_open
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:168,1
    - Dst: acl_mailbox_get_aclobj
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:171,1
    - Dst: acl_object_get_my_rights
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:172,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:172,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:174,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:175,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:178,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:178,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 157
    functionDepth: 4
    functionLinenumber: 157
    functionLinenumberEnd: 182
    functionName: cmd_acl_rights_run
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print
    - mailbox_free
    - t_strarray_join
    - cmd_acl_mailbox_open
    - e_error
    - pool_datastack_create
    - acl_mailbox_get_aclobj
    - acl_object_get_my_rights
    - doveadm_mail_failed_error
    linkageType: ''
    returnType: int
    signature: int cmd_acl_rights_run(struct doveadm_mail_cmd_context *_ctx, struct
      mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:188,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:190,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:191,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 194
    functionName: cmd_acl_rights_init
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_print_header
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_acl_rights_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:201,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 206
    functionName: cmd_acl_rights_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_acl_rights_alloc(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:215,1
    - Dst: acl_mailbox_update_acl
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:217,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - box
    - update
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox*
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 221
    functionName: cmd_acl_mailbox_update
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - mailbox_transaction_commit
    - acl_mailbox_update_acl
    - mailbox_transaction_begin
    linkageType: ''
    returnType: int
    signature: "int cmd_acl_mailbox_update(struct doveadm_mail_cmd_context *ctx, struct
      mailbox *box,\n\t\t       const struct acl_rights_update *update)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:227,1
    - Dst: cmd_acl_mailbox_open
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:234,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:237,1
    - Dst: acl_rights_update_import
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:240,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:241,1
    - Dst: cmd_acl_mailbox_update
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:242,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:243,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:244,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:245,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 249
    functionName: cmd_acl_set_run
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - mailbox_free
    - mailbox_get_last_internal_error
    - i_fatal_status
    - cmd_acl_mailbox_update
    - cmd_acl_mailbox_open
    - e_error
    - doveadm_mail_failed_error
    - acl_rights_update_import
    linkageType: ''
    returnType: int
    signature: int cmd_acl_set_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:255,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:257,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:258,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:259,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 261
    functionName: cmd_acl_set_init
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - container_of
    - doveadm_cmd_param_str
    - doveadm_cmd_param_array
    linkageType: ''
    returnType: void
    signature: void cmd_acl_set_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - modify_mode
    argTypes:
    - enum acl_modify_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 273
    functionName: cmd_acl_change_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_acl_change_alloc(enum acl_modify_mode modify_mode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_acl_change_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: cmd_acl_set_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - cmd_acl_change_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_acl_set_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_acl_change_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 2
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: cmd_acl_add_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - cmd_acl_change_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_acl_add_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_acl_change_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 288
    functionName: cmd_acl_remove_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - cmd_acl_change_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_acl_remove_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:294,1
    - Dst: cmd_acl_mailbox_open
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:301,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:304,1
    - Dst: acl_rights_update_import
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:305,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:306,1
    - Dst: cmd_acl_mailbox_update
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:307,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:308,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:309,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:310,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:312,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 314
    functionName: cmd_acl_delete_run
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - mailbox_free
    - mailbox_get_last_internal_error
    - i_fatal_status
    - cmd_acl_mailbox_update
    - cmd_acl_mailbox_open
    - e_error
    - doveadm_mail_failed_error
    - acl_rights_update_import
    linkageType: ''
    returnType: int
    signature: int cmd_acl_delete_run(struct doveadm_mail_cmd_context *_ctx, struct
      mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:320,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:322,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:323,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 325
    functionName: cmd_acl_delete_init
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_acl_delete_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 336
    functionName: cmd_acl_delete_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_acl_delete_alloc(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_USER_CONTEXT
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:341,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:344,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:345,1
    - Dst: acl_lookup_dict_rebuild
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:348,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:349,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 338
    functionDepth: 4
    functionLinenumber: 338
    functionLinenumberEnd: 354
    functionName: cmd_acl_recalc_run
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - e_error
    - doveadm_mail_failed_error
    - ACL_USER_CONTEXT
    - acl_lookup_dict_rebuild
    linkageType: ''
    returnType: int
    signature: int cmd_acl_recalc_run(struct doveadm_mail_cmd_context *ctx, struct
      mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: cmd_acl_recalc_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_acl_recalc_alloc(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ACL_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:371,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:377,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:378,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:380,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:381,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:382,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:383,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:386,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:388,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:391,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:395,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:400,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:403,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:404,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - user
    - mailbox
    - box_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    - char*
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 410
    functionName: cmd_acl_debug_mailbox_open
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - ACL_USER_CONTEXT_REQUIRE
    - e_info
    - mailbox_free
    - mailbox_open
    - mail_namespace_find
    - mail_storage_get_last_internal_error
    - e_error
    - mailbox_alloc
    - t_strdup
    - doveadm_mail_failed_error
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int cmd_acl_debug_mailbox_open(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \  struct mail_user *user, const char *mailbox,\n\t\t\t   struct mailbox **box_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:414,1
    - Dst: ACL_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:415,1
    - Dst: acl_mailbox_get_aclobj
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:416,1
    - Dst: acl_mailbox_list_get_backend
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:417,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:428,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:430,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:431,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:433,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:435,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:437,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:438,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:439,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:439,1
    - Dst: acl_object_get_my_rights
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:443,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:443,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:445,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:448,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:450,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:451,1
    - Dst: str_array_find
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:453,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:454,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:461,1
    - Dst: acl_backend_nonowner_lookups_iter_init
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:465,1
    - Dst: acl_backend_nonowner_lookups_iter_next
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:466,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:467,1
    - Dst: acl_backend_nonowner_lookups_iter_deinit
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:470,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:471,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:473,1
    - Dst: acl_backend_nonowner_lookups_rebuild
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:474,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:475,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:479,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:483,1
    - Dst: acl_lookup_dict_is_enabled
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:487,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:488,1
    - Dst: acl_lookup_dict_iterate_visible_init
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:493,1
    - Dst: acl_lookup_dict_iterate_visible_next
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:495,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:496,1
    - Dst: acl_lookup_dict_iterate_visible_deinit
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:499,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:500,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:502,1
    - Dst: acl_lookup_dict_rebuild
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:504,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:505,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:509,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 67
    argCount: 2
    argNames:
    - box
    - retry_r
    argTypes:
    - struct mailbox*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 412
    functionDepth: 4
    functionLinenumber: 412
    functionLinenumberEnd: 513
    functionName: cmd_acl_debug_mailbox
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - mailbox_get_namespace
    - ACL_USER_CONTEXT_REQUIRE
    - str_c
    - acl_lookup_dict_iterate_visible_next
    - acl_lookup_dict_iterate_visible_deinit
    - mailbox_get_path_to
    - t_str_new
    - acl_mailbox_list_get_backend
    - t_strarray_join
    - i_fatal
    - acl_backend_nonowner_lookups_rebuild
    - acl_backend_nonowner_lookups_iter_deinit
    - acl_backend_nonowner_lookups_iter_init
    - str_array_find
    - acl_lookup_dict_iterate_visible_init
    - acl_backend_nonowner_lookups_iter_next
    - e_error
    - imap_write_flags
    - pool_datastack_create
    - mailbox_get_private_flags_mask
    - acl_lookup_dict_rebuild
    - acl_object_get_my_rights
    - acl_lookup_dict_is_enabled
    - strcmp
    - e_info
    - acl_mailbox_get_aclobj
    linkageType: ''
    returnType: bool
    signature: bool cmd_acl_debug_mailbox(struct mailbox *box, bool *retry_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:519,1
    - Dst: cmd_acl_debug_mailbox_open
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:524,1
    - Dst: cmd_acl_debug_mailbox
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:527,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:529,1
    - Dst: cmd_acl_debug_mailbox
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:530,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:533,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:535,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:536,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 515
    functionDepth: 5
    functionLinenumber: 515
    functionLinenumberEnd: 538
    functionName: cmd_acl_debug_run
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - e_info
    - container_of
    - mailbox_free
    - cmd_acl_debug_mailbox_open
    - cmd_acl_debug_mailbox
    linkageType: ''
    returnType: int
    signature: int cmd_acl_debug_run(struct doveadm_mail_cmd_context *_ctx, struct
      mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:544,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:546,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 548
    functionName: cmd_acl_debug_init
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_acl_debug_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 559
    functionName: cmd_acl_debug_alloc
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_acl_debug_alloc(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:647,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/plugins/acl/doveadm-acl.c:648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 649
    functionName: doveadm_acl_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_acl_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 651
    functionDepth: 0
    functionLinenumber: 651
    functionLinenumberEnd: 653
    functionName: doveadm_acl_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/acl/doveadm-acl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_acl_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: ACL_MAIL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ACL_MAIL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: acl_mailbox_get_aclobj
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 4
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct acl_object
    signature: struct acl_object *acl_mailbox_get_aclobj(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:37,1
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:43,1
    - Dst: acl_object_have_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:50,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:55,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - box
    - right_idx
    argTypes:
    - struct mailbox*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 62
    functionName: acl_mailbox_right_lookup
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 1
    functionsReached:
    - acl_object_have_right
    - ACL_CONTEXT_REQUIRE
    - ACL_LIST_CONTEXT_REQUIRE
    - mail_storage_set_internal_error
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_right_lookup(struct mailbox *box, unsigned int right_idx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:66,1
    - Dst: struct acl_mailbox*::module_ctx::super::is_readonly
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:69,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:74,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:76,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:79,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:81,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:83,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 87
    functionName: acl_is_readonly
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - acl_mailbox_right_lookup
    - struct acl_mailbox*::module_ctx::super::is_readonly
    linkageType: ''
    returnType: bool
    signature: bool acl_is_readonly(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:91,1
    - Dst: acl_object_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:93,1
    - Dst: struct acl_mailbox*::module_ctx::super::free
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 95
    functionName: acl_mailbox_free
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - struct acl_mailbox*::module_ctx::super::free
    - acl_object_deinit
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_free(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:99,1
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:100,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:105,1
    - Dst: acl_object_init_from_parent
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:109,1
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:111,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:112,1
    - Dst: acl_object_update
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:115,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:118,1
    - Dst: acl_object_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 120
    functionName: acl_mailbox_copy_acls_from_parent
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - i_zero
    - acl_object_init_from_parent
    - acl_object_list_init
    - acl_object_list_next
    - acl_object_list_deinit
    - acl_object_update
    - ACL_CONTEXT_REQUIRE
    - ACL_LIST_CONTEXT_REQUIRE
    - acl_object_deinit
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_copy_acls_from_parent(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:126,1
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:129,1
    - Dst: acl_mailbox_list_have_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:131,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:140,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:146,1
    - Dst: struct acl_mailbox*::module_ctx::super::create_box
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:155,1
    - Dst: acl_object_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:160,1
    - Dst: acl_object_init_from_name
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:161,1
    - Dst: acl_mailbox_copy_acls_from_parent
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 166
    functionName: acl_mailbox_create
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_list_have_right
    - ACL_CONTEXT_REQUIRE
    - acl_mailbox_copy_acls_from_parent
    - mailbox_is_autocreated
    - struct acl_mailbox*::module_ctx::super::create_box
    - mail_storage_set_internal_error
    - mail_storage_set_error
    - acl_object_init_from_name
    - acl_object_deinit
    linkageType: ''
    returnType: int
    signature: "int acl_mailbox_create(struct mailbox *box, const struct mailbox_update
      *update,\n\t\t   bool directory)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:171,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:174,1
    - Dst: struct acl_mailbox*::module_ctx::super::update_box
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 168
    functionDepth: 3
    functionLinenumber: 168
    functionLinenumberEnd: 178
    functionName: acl_mailbox_update
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 2
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - acl_mailbox_right_lookup
    - struct acl_mailbox*::module_ctx::super::update_box
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_update(struct mailbox *box, const struct mailbox_update
      *update)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:184,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:186,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:190,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 193
    functionName: acl_mailbox_fail_not_found
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - acl_mailbox_right_lookup
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_fail_not_found(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:198,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:201,1
    - Dst: acl_mailbox_fail_not_found
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:204,1
    - Dst: struct acl_mailbox*::module_ctx::super::delete_box
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 195
    functionDepth: 4
    functionLinenumber: 195
    functionLinenumberEnd: 209
    functionName: acl_mailbox_delete
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - acl_mailbox_right_lookup
    - acl_mailbox_fail_not_found
    - struct acl_mailbox*::module_ctx::super::delete_box
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_delete(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:214,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:218,1
    - Dst: acl_mailbox_fail_not_found
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:221,1
    - Dst: acl_mailbox_list_have_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 211
    functionDepth: 4
    functionLinenumber: 211
    functionLinenumberEnd: 229
    functionName: acl_mailbox_rename
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - acl_mailbox_right_lookup
    - acl_mailbox_fail_not_found
    - acl_mailbox_list_have_right
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_rename(struct mailbox *src, struct mailbox *dest)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:253,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:258,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - box
    - flags_r
    - flag_seen_r
    - flag_del_r
    argTypes:
    - struct mailbox*
    - bool*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 268
    functionName: acl_get_write_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_right_lookup
    linkageType: ''
    returnType: int
    signature: "int acl_get_write_rights(struct mailbox *box,\n\t\t     bool *flags_r,
      bool *flag_seen_r, bool *flag_del_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 274
    functionName: acl_transaction_set_failure
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: void
    signature: void acl_transaction_set_failure(struct mailbox_transaction_context
      *t)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:281,1
    - Dst: ACL_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:282,1
    - Dst: acl_get_write_rights
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:285,1
    - Dst: acl_transaction_set_failure
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:287,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:297,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:299,1
    - Dst: acl_mail_update_flags
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:309,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:310,1
    - Dst: acl_mail_update_flags
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:312,1
    - Dst: union mail_module_context*::super::update_flags
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:316,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 3
    argNames:
    - _mail
    - modify_type
    - flags
    argTypes:
    - struct mail*
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 317
    functionName: acl_mail_update_flags
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 1
    functionsReached:
    - acl_mail_update_flags
    - union mail_module_context*::super::update_flags
    - container_of
    - ENUM_NEGATE
    - acl_get_write_rights
    - ACL_MAIL_CONTEXT
    - acl_transaction_set_failure
    linkageType: ''
    returnType: void
    signature: "void acl_mail_update_flags(struct mail *_mail, enum modify_type modify_type,\n\t\t
      \     enum mail_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:324,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:327,1
    - Dst: acl_transaction_set_failure
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:331,1
    - Dst: union mail_module_context*::super::update_keywords
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - _mail
    - modify_type
    - keywords
    argTypes:
    - struct mail*
    - enum modify_type
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 336
    functionName: acl_mail_update_keywords
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - acl_transaction_set_failure
    - acl_mailbox_right_lookup
    - union mail_module_context*::super::update_keywords
    - ACL_MAIL_CONTEXT
    linkageType: ''
    returnType: void
    signature: "void acl_mail_update_keywords(struct mail *_mail, enum modify_type
      modify_type,\n\t\t\t struct mail_keywords *keywords)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:341,1
    - Dst: ACL_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:342,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:345,1
    - Dst: acl_transaction_set_failure
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:350,1
    - Dst: union mail_module_context*::super::expunge
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 338
    functionDepth: 3
    functionLinenumber: 338
    functionLinenumberEnd: 355
    functionName: acl_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - container_of
    - union mail_module_context*::super::expunge
    - ACL_MAIL_CONTEXT
    - acl_mailbox_right_lookup
    - acl_transaction_set_failure
    linkageType: ''
    returnType: void
    signature: void acl_mail_expunge(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:359,1
    - Dst: container_of
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:361,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:368,1
    - Dst: MODULE_CONTEXT_SET_SELF
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 376
    functionName: acl_mail_allocated
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET_SELF
    - container_of
    - ACL_CONTEXT
    - p_new
    linkageType: ''
    returnType: void
    signature: void acl_mail_allocated(struct mail *_mail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: acl_get_write_rights
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:384,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:389,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:390,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:393,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:394,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - box
    - flags
    - pvt_flags
    - keywords
    argTypes:
    - struct mailbox*
    - enum mail_flags*
    - enum mail_flags*
    - struct mail_keywords**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 378
    functionDepth: 4
    functionLinenumber: 378
    functionLinenumberEnd: 402
    functionName: acl_save_get_flags
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - acl_get_write_rights
    - ENUM_NEGATE
    linkageType: ''
    returnType: int
    signature: "int acl_save_get_flags(struct mailbox *box, enum mail_flags *flags,\n\t\t
      \  enum mail_flags *pvt_flags, struct mail_keywords **keywords)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:408,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:413,1
    - Dst: acl_save_get_flags
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:415,1
    - Dst: struct acl_mailbox*::module_ctx::super::save_begin
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 404
    functionDepth: 5
    functionLinenumber: 404
    functionLinenumberEnd: 420
    functionName: acl_save_begin
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - acl_save_get_flags
    - acl_mailbox_right_lookup
    - struct acl_mailbox*::module_ctx::super::save_begin
    linkageType: ''
    returnType: int
    signature: int acl_save_begin(struct mail_save_context *ctx, struct istream *input)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:429,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:436,1
    - Dst: acl_save_get_flags
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:438,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 422
    functionDepth: 5
    functionLinenumber: 422
    functionLinenumberEnd: 442
    functionName: acl_copy_has_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - acl_save_get_flags
    - acl_mailbox_right_lookup
    linkageType: ''
    returnType: bool
    signature: bool acl_copy_has_rights(struct mail_save_context *ctx, struct mail
      *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:448,1
    - Dst: acl_copy_has_rights
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:450,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:451,1
    - Dst: struct acl_mailbox*::module_ctx::super::copy
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 444
    functionDepth: 6
    functionLinenumber: 444
    functionLinenumberEnd: 456
    functionName: acl_copy
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - acl_copy_has_rights
    - mailbox_save_cancel
    - struct acl_mailbox*::module_ctx::super::copy
    linkageType: ''
    returnType: int
    signature: int acl_copy(struct mail_save_context *ctx, struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:462,1
    - Dst: ACL_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:463,1
    - Dst: struct acl_mailbox*::module_ctx::super::transaction_rollback
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:467,1
    - Dst: struct acl_mailbox*::module_ctx::super::transaction_commit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 477
    functionName: acl_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - struct acl_mailbox*::module_ctx::super::transaction_rollback
    - ACL_CONTEXT
    - struct acl_mailbox*::module_ctx::super::transaction_commit
    linkageType: ''
    returnType: int
    signature: "int acl_transaction_commit(struct mailbox_transaction_context *ctx,\n\t\t
      \      struct mail_transaction_commit_changes *changes_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:482,1
    - Dst: acl_object_get_my_rights
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:486,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:486,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:487,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:497,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:498,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:499,1
    - Dst: struct acl_mailbox*::module_ctx::super::exists
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:500,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - box
    - auto_boxes
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 479
    functionDepth: 4
    functionLinenumber: 479
    functionLinenumberEnd: 505
    functionName: acl_mailbox_exists
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ACL_CONTEXT_REQUIRE
    - pool_datastack_create
    - struct acl_mailbox*::module_ctx::super::exists
    - acl_object_get_my_rights
    - mail_storage_set_internal_error
    linkageType: ''
    returnType: int
    signature: "int acl_mailbox_exists(struct mailbox *box, bool auto_boxes,\n\t\t\t
      \     enum mailbox_existence *existence_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:523,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:524,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 507
    functionDepth: 3
    functionLinenumber: 507
    functionLinenumberEnd: 533
    functionName: acl_mailbox_have_extra_attribute_rights
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 1
    functionsReached:
    - acl_mailbox_right_lookup
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool acl_mailbox_have_extra_attribute_rights(struct mailbox *box)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:537,1
    - Dst: ACL_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:538,1
    - Dst: acl_object_have_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:562,1
    - Dst: acl_mailbox_fail_not_found
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:566,1
    - Dst: acl_object_have_right
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:571,1
    - Dst: acl_mailbox_have_extra_attribute_rights
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:579,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 535
    functionDepth: 4
    functionLinenumber: 535
    functionLinenumberEnd: 583
    functionName: acl_mailbox_open_check_acl
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_have_extra_attribute_rights
    - acl_mailbox_fail_not_found
    - acl_object_have_right
    - ACL_CONTEXT_REQUIRE
    - ACL_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_open_check_acl(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:587,1
    - Dst: acl_mailbox_open_check_acl
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:589,1
    - Dst: struct acl_mailbox*::module_ctx::super::open
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 585
    functionDepth: 5
    functionLinenumber: 585
    functionLinenumberEnd: 593
    functionName: acl_mailbox_open
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 4
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - struct acl_mailbox*::module_ctx::super::open
    - acl_mailbox_open_check_acl
    linkageType: ''
    returnType: int
    signature: int acl_mailbox_open(struct mailbox *box)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:599,1
    - Dst: struct acl_mailbox*::module_ctx::super::get_status
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:601,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:605,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:610,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:611,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:612,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:613,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 595
    functionDepth: 3
    functionLinenumber: 595
    functionLinenumberEnd: 616
    functionName: acl_mailbox_get_status
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - ACL_CONTEXT_REQUIRE
    - acl_mailbox_right_lookup
    - struct acl_mailbox*::module_ctx::super::get_status
    - ENUM_NEGATE
    linkageType: ''
    returnType: int
    signature: "int acl_mailbox_get_status(struct mailbox *box,\n\t\t\t\t  enum mailbox_status_items
      items,\n\t\t\t\t  struct mailbox_status *status_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:620,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:633,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:635,1
    - Dst: mail_namespace_is_shared_user_root
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:644,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:649,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:651,1
    - Dst: acl_object_init_from_name
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:657,1
    - Dst: mailbox_get_name
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:658,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:660,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:682,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 683
    functionName: acl_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - mailbox_get_name
    - i_assert
    - ACL_LIST_CONTEXT
    - p_new
    - settings_free
    - MODULE_CONTEXT_SET
    - mailbox_set_critical
    - mail_namespace_is_shared_user_root
    - settings_get
    - acl_object_init_from_name
    linkageType: ''
    returnType: void
    signature: void acl_mailbox_allocated(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:700,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:701,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:703,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:706,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - aclobj
    - update
    argTypes:
    - struct acl_object*
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 707
    functionName: acl_mailbox_update_removed_id
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 0
    functionsReached:
    - acl_object_list_deinit
    - null_strcmp
    - acl_object_list_init
    - acl_object_list_next
    linkageType: ''
    returnType: bool
    signature: "bool acl_mailbox_update_removed_id(struct acl_object *aclobj,\n\t\t\t
      \     const struct acl_rights_update *update)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:717,1
    - Dst: acl_rights_get_id
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:718,1
    - Dst: acl_mailbox_get_aclobj
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:719,1
    - Dst: acl_object_update
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:720,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:721,1
    - Dst: acl_mailbox_update_removed_id
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:727,1
    - Dst: mail_index_attribute_unset
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:728,1
    - Dst: mail_index_attribute_set
      Src: /src/dovecot/src/plugins/acl/acl-mailbox.c:730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - t
    - update
    argTypes:
    - struct mailbox_transaction_context*
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 709
    functionDepth: 3
    functionLinenumber: 709
    functionLinenumberEnd: 732
    functionName: acl_mailbox_update_acl
    functionSourceFile: /src/dovecot/src/plugins/acl/acl-mailbox.c
    functionUses: 2
    functionsReached:
    - mail_index_attribute_set
    - acl_mailbox_update_removed_id
    - mail_index_attribute_unset
    - t_strdup_printf
    - acl_object_update
    - acl_rights_get_id
    - acl_mailbox_get_aclobj
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: "int acl_mailbox_update_acl(struct mailbox_transaction_context *t,\n\t\t\t
      \  const struct acl_rights_update *update)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: MAIL_COMPRESS_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_COMPRESS_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: MAIL_COMPRESS_MAIL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_COMPRESS_MAIL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: MAIL_COMPRESS_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_COMPRESS_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 88
    functionName: mail_compress_mailbox_is_permail
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_compress_mailbox_is_permail(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:94,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:95,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zuser
    argTypes:
    - struct mail_compress_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 97
    functionName: mail_compress_mail_cache_close
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_stream_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mail_compress_mail_cache_close(struct mail_compress_user *zuser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:106,1
    - Dst: mail_compress_mail_cache_close
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:109,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:121,1
    - Dst: i_stream_create_seekable_path
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:122,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:123,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:124,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:125,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:125,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:126,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:127,1
    - Dst: timeout_add
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:130,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 4
    argNames:
    - zuser
    - mail
    - input
    - do_cache
    argTypes:
    - struct mail_compress_user*
    - struct mail*
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 141
    functionName: mail_compress_mail_cache_open
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_stream_create_seekable_path
    - mail_compress_mail_cache_close
    - mail_user_set_get_temp_prefix
    - i_stream_set_name
    - timeout_add
    - i_stream_create_limit
    - i_stream_get_max_buffer_size
    - t_strdup_printf
    - i_stream_unref
    - i_stream_get_name
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\nmail_compress_mail_cache_open(struct mail_compress_user
      *zuser,\n\t\t\t      struct mail *mail, struct istream *input,\n\t\t\t      bool
      do_cache)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_COMPRESS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:145,1
    - Dst: MAIL_COMPRESS_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:148,1
    - Dst: struct mail_compress_mail*::module_ctx::super::istream_opened
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:155,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:161,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:162,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:163,1
    - Dst: struct mail_compress_mail*::module_ctx::super::istream_opened
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:164,1
    - Dst: compression_detect_handler
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:167,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:170,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:177,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:178,1
    - Dst: mail_compress_mail_cache_open
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:180,1
    - Dst: struct mail_compress_mail*::module_ctx::super::istream_opened
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:183,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - _mail
    - stream
    argTypes:
    - struct mail*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 184
    functionName: mail_compress_istream_opened
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - mail_set_critical
    - struct mail_compress_mail*::module_ctx::super::istream_opened
    - i_stream_create_limit
    - struct compression_handler*::create_istream
    - compression_detect_handler
    - MAIL_COMPRESS_MAIL_CONTEXT
    - mail_compress_mail_cache_open
    - i_stream_seek
    - i_stream_unref
    - MAIL_COMPRESS_USER_CONTEXT
    linkageType: ''
    returnType: int
    signature: int mail_compress_istream_opened(struct mail *_mail, struct istream
      **stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_COMPRESS_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:189,1
    - Dst: MAIL_COMPRESS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:190,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:199,1
    - Dst: mail_compress_mail_cache_close
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:200,1
    - Dst: struct mail_compress_mail*::module_ctx::super::close
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 203
    functionName: mail_compress_mail_close
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - mail_compress_mail_cache_close
    - struct mail_compress_mail*::module_ctx::super::close
    - i_stream_get_size
    - MAIL_COMPRESS_MAIL_CONTEXT
    - MAIL_COMPRESS_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_compress_mail_close(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_compress_mailbox_is_permail
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:211,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:214,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 221
    functionName: mail_compress_mail_allocated
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - mail_compress_mailbox_is_permail
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void mail_compress_mail_allocated(struct mail *_mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_COMPRESS_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:226,1
    - Dst: MAIL_COMPRESS_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:228,1
    - Dst: union mailbox_module_context*::super::save_finish
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:232,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:236,1
    - Dst: compression_detect_handler
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:241,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 247
    functionName: mail_compress_mail_save_finish
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - compression_detect_handler
    - union mailbox_module_context*::super::save_finish
    - mail_get_stream
    - MAIL_COMPRESS_MAIL_CONTEXT
    - MAIL_COMPRESS_CONTEXT
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int mail_compress_mail_save_finish(struct mail_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_COMPRESS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:254,1
    - Dst: MAIL_COMPRESS_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:255,1
    - Dst: union mailbox_module_context*::super::save_begin
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:258,1
    - Dst: struct mail_compress_user*::save_handler::create_ostream_auto
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:261,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:263,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 267
    functionName: mail_compress_mail_save_compress_begin
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - union mailbox_module_context*::super::save_begin
    - o_stream_unref
    - o_stream_cork
    - struct mail_compress_user*::save_handler::create_ostream_auto
    - MAIL_COMPRESS_USER_CONTEXT
    - MAIL_COMPRESS_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int mail_compress_mail_save_compress_begin(struct mail_save_context
      *ctx,\n\t\t\t\t       struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_COMPRESS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - box
    - v
    argTypes:
    - struct mailbox*
    - struct mailbox_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 279
    functionName: mail_compress_permail_alloc_init
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - MAIL_COMPRESS_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_compress_permail_alloc_init(struct mailbox *box, struct mailbox_vfuncs
      *v)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: compression_lookup_handler_from_ext
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:288,1
    - Dst: mail_storage_is_mailbox_file
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:291,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:294,1
    - Dst: open
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:296,1
    - Dst: fstat
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:302,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:302,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:303,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:306,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:307,1
    - Dst: struct compression_handler*::create_istream
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:308,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:309,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 312
    functionName: mail_compress_mailbox_open_input
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - i_close_fd
    - i_stream_set_name
    - open
    - mail_storage_is_mailbox_file
    - struct compression_handler*::create_istream
    - fstat
    - S_ISDIR
    - i_stream_create_fd_autoclose
    - compression_lookup_handler_from_ext
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void mail_compress_mailbox_open_input(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_COMPRESS_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:316,1
    - Dst: mail_compress_mailbox_open_input
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:321,1
    - Dst: union mailbox_module_context*::super::open
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 324
    functionName: mail_compress_mailbox_open
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - union mailbox_module_context*::super::open
    - MAIL_COMPRESS_CONTEXT
    - mail_compress_mailbox_open_input
    linkageType: ''
    returnType: int
    signature: int mail_compress_mailbox_open(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_COMPRESS_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:328,1
    - Dst: MAIL_COMPRESS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:329,1
    - Dst: mail_compress_mail_cache_close
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:332,1
    - Dst: union mailbox_module_context*::super::close
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 334
    functionName: mail_compress_mailbox_close
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - MAIL_COMPRESS_USER_CONTEXT
    - MAIL_COMPRESS_CONTEXT
    - mail_compress_mail_cache_close
    - union mailbox_module_context*::super::close
    linkageType: ''
    returnType: void
    signature: void mail_compress_mailbox_close(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:341,1
    - Dst: MODULE_CONTEXT_SET_SELF
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:347,1
    - Dst: mail_compress_mailbox_is_permail
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:349,1
    - Dst: mail_compress_permail_alloc_init
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 351
    functionName: mail_compress_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET_SELF
    - mail_compress_mailbox_is_permail
    - p_new
    - mail_compress_permail_alloc_init
    linkageType: ''
    returnType: void
    signature: void mail_compress_mailbox_allocated(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_COMPRESS_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:355,1
    - Dst: mail_compress_mail_cache_close
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:357,1
    - Dst: struct mail_compress_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 359
    functionName: mail_compress_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - MAIL_COMPRESS_USER_CONTEXT
    - mail_compress_mail_cache_close
    - struct mail_compress_user*::module_ctx::super::deinit
    linkageType: ''
    returnType: void
    signature: void mail_compress_mail_user_deinit(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:369,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:374,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:376,1
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:380,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:383,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:388,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:392,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:394,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 395
    functionName: mail_compress_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - compression_lookup_handler
    - settings_free
    - MODULE_CONTEXT_SET
    - settings_get
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void mail_compress_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: mail_compress_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void mail_compress_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 411
    functionName: mail_compress_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void mail_compress_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: APPARMOR_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: APPARMOR_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aa_getcon
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:66,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:67,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:69,1
    - Dst: free
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 73
    functionName: apparmor_log_current_context
    functionSourceFile: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    functionUses: 0
    functionsReached:
    - e_debug
    - aa_getcon
    - free
    linkageType: ''
    returnType: void
    signature: void apparmor_log_current_context(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: APPARMOR_USER_CONTEXT
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:77,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:79,1
    - Dst: struct apparmor_mail_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:80,1
    - Dst: aa_change_hat
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:82,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:83,1
    - Dst: apparmor_log_current_context
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 86
    functionName: apparmor_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    functionUses: 0
    functionsReached:
    - apparmor_log_current_context
    - APPARMOR_USER_CONTEXT
    - struct apparmor_mail_user*::module_ctx::super::deinit
    - i_fatal
    - aa_change_hat
    - i_assert
    linkageType: ''
    returnType: void
    signature: void apparmor_mail_user_deinit(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:95,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:97,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:100,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:101,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:106,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:110,1
    - Dst: random_fill
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:113,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:116,1
    - Dst: aa_change_hatv
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:117,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:118,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:119,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:121,1
    - Dst: apparmor_log_current_context
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 124
    functionName: apparmor_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - random_fill
    - p_new
    - apparmor_log_current_context
    - i_fatal
    - settings_free
    - array_is_empty
    - settings_boollist_get
    - MODULE_CONTEXT_SET
    - t_array_const_string_join
    - aa_change_hatv
    - settings_get
    linkageType: ''
    returnType: void
    signature: void apparmor_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: apparmor_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void apparmor_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: apparmor_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void apparmor_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: MAIL_LUA_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_LUA_USER_CONTEXT(obj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:35,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:38,1
    - Dst: dlua_push_mail_user
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:40,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:42,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:43,1
    - Dst: lua_tonumber
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:47,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:48,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:51,1
    - Dst: lua_pop
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:55,1
    - Dst: lua_gc
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - script
    - user
    - hook
    - error_r
    argTypes:
    - struct dlua_script*
    - struct mail_user*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 28
    functionDepth: 3
    functionLinenumber: 28
    functionLinenumberEnd: 59
    functionName: mail_lua_call_hook
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - lua_gc
    - dlua_pcall
    - e_debug
    - lua_tonumber
    - dlua_push_mail_user
    - t_strdup_printf
    - lua_pop
    - lua_tostring
    - dlua_script_has_function
    linkageType: ''
    returnType: int
    signature: "int mail_lua_call_hook(struct dlua_script *script,\n\t\t\t      struct
      mail_user *user,\n\t\t\t      const char *hook,\n\t\t\t      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LUA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:63,1
    - Dst: mail_lua_call_hook
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:69,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:71,1
    - Dst: struct mail_lua_user_context*::module_ctx::super::deinit_pre
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 61
    functionDepth: 4
    functionLinenumber: 61
    functionLinenumberEnd: 75
    functionName: mail_lua_user_deinit_pre
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - e_error
    - MAIL_LUA_USER_CONTEXT
    - struct mail_lua_user_context*::module_ctx::super::deinit_pre
    - mail_lua_call_hook
    linkageType: ''
    returnType: void
    signature: void mail_lua_user_deinit_pre(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LUA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:79,1
    - Dst: struct mail_lua_user_context*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:85,1
    - Dst: mail_lua_call_hook
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:87,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:89,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 77
    functionDepth: 6
    functionLinenumber: 77
    functionLinenumberEnd: 93
    functionName: mail_lua_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - MAIL_LUA_USER_CONTEXT
    - struct mail_lua_user_context*::module_ctx::super::deinit
    - mail_lua_call_hook
    - e_error
    - dlua_script_unref
    linkageType: ''
    returnType: void
    signature: void mail_lua_user_deinit(struct mail_user *user)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:104,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:105,1
    - Dst: dlua_script_create_auto
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:106,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:107,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:110,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:113,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:116,1
    - Dst: dlua_register_mail_storage
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:117,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:120,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:121,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:124,1
    - Dst: mail_lua_call_hook
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:129,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:132,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:133,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:137,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:144,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 95
    functionDepth: 6
    functionLinenumber: 95
    functionLinenumberEnd: 145
    functionName: mail_lua_user_created
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_strdup
    - event_unref
    - p_new
    - dlua_register_mail_storage
    - dlua_dovecot_register
    - settings_event_add_filter_name
    - dlua_script_init
    - mail_lua_call_hook
    - MODULE_CONTEXT_SET
    - dlua_script_create_auto
    - dlua_script_unref
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void mail_lua_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - script
    argTypes:
    - char*
    - struct mail_lua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 158
    functionName: mail_lua_script_cmp
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int mail_lua_script_cmp(const char *key, const struct mail_lua_script
      *script)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:163,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:165,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:166,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:167,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 160
    functionDepth: 6
    functionLinenumber: 160
    functionLinenumberEnd: 170
    functionName: mail_lua_scripts_free
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - array_is_empty
    - array_free
    - array_foreach_modifiable
    - dlua_script_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_lua_scripts_free(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:176,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:178,1
    - Dst: dlua_script_create_file
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:185,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:187,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:188,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:189,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:193,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:194,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:195,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:196,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - file
    - script_r
    - error_r
    argTypes:
    - char*
    - struct dlua_script**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 172
    functionDepth: 6
    functionLinenumber: 172
    functionLinenumberEnd: 200
    functionName: mail_lua_script_load
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_append_space
    - array_lsearch
    - dlua_dovecot_register
    - dlua_script_init
    - array_is_empty
    - i_strdup
    - dlua_script_create_file
    - array_is_created
    - dlua_script_unref
    linkageType: ''
    returnType: int
    signature: "int mail_lua_script_load(const char *file, struct dlua_script **script_r,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LUA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - user
    - script_r
    argTypes:
    - struct mail_user*
    - struct dlua_script**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: mail_lua_plugin_get_script
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - MAIL_LUA_USER_CONTEXT
    linkageType: ''
    returnType: bool
    signature: "bool mail_lua_plugin_get_script(struct mail_user *user,\n\t\t\t\tstruct
      dlua_script **script_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dlua_push_mail_user
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:226,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:231,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:237,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:243,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:244,1
    - Dst: lua_tonumber
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:248,1
    - Dst: var_expand_state_unset_transfer
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:251,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:252,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:253,1
    - Dst: lua_tolstring
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:257,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:260,1
    - Dst: lua_pop
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:263,1
    - Dst: lua_gc
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:264,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 6
    argNames:
    - fn
    - user
    - params
    - state
    - script
    - error_r
    argTypes:
    - char*
    - struct mail_user*
    - ARRAY_TYPE*
    - struct var_expand_state*
    - struct dlua_script*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 213
    functionDepth: 3
    functionLinenumber: 213
    functionLinenumberEnd: 267
    functionName: mail_lua_script_call
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - lua_gc
    - dlua_pcall
    - lua_pushstring
    - dlua_push_mail_user
    - lua_tonumber
    - t_strdup_printf
    - lua_tolstring
    - lua_pop
    - var_expand_state_unset_transfer
    - lua_pushlstring
    - lua_tostring
    - var_expand_state_set_transfer_data
    linkageType: ''
    returnType: int
    signature: "int mail_lua_script_call(const char *fn, struct mail_user *user,\n\t\t\t\tARRAY_TYPE(const_string)
      *params,\n\t\t\t\tstruct var_expand_state *state,\n\t\t\t\tstruct dlua_script
      *script,\n\t\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 83
    functionsReached:
    - lua_pushstring
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(params, value)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:277,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:278,1
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:280,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:281,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:283,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:284,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:286,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:289,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:291,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:295,1
    - Dst: var_expand_parameter_any_or_var
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:299,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:301,1
    - Dst: mail_lua_script_load
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:311,1
    - Dst: mail_lua_script_call
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:314,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 269
    functionDepth: 7
    functionLinenumber: 269
    functionLinenumberEnd: 318
    functionName: mail_lua_var_expand_lua_file
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - mail_lua_script_load
    - array_push_back
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - t_strdup_printf
    - var_expand_parameter_iter_more
    - var_expand_parameter_any_or_var
    - t_array_init
    - ARRAY_TYPE
    - var_expand_parameter_idx
    - mail_lua_script_call
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int mail_lua_var_expand_lua_file(const struct var_expand_statement
      *stmt,\n\t\t\t\t        struct var_expand_state *state,\n\t\t\t\t\tconst char
      **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:327,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:328,1
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:330,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:331,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:333,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:334,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:336,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:339,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:340,1
    - Dst: var_expand_parameter_any_or_var
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:343,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:345,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:360,1
    - Dst: mail_lua_plugin_get_script
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:367,1
    - Dst: mail_lua_script_call
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:372,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 320
    functionDepth: 4
    functionLinenumber: 320
    functionLinenumberEnd: 376
    functionName: mail_lua_var_expand_lua_call
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - event_get_ptr
    - mail_lua_plugin_get_script
    - t_strdup_printf
    - var_expand_parameter_iter_more
    - var_expand_parameter_any_or_var
    - t_array_init
    - ARRAY_TYPE
    - var_expand_parameter_idx
    - mail_lua_script_call
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int mail_lua_var_expand_lua_call(const struct var_expand_statement
      *stmt,\n\t\t\t\t        struct var_expand_state *state,\n\t\t\t\t\tconst char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:384,1
    - Dst: var_expand_register_filter
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:385,1
    - Dst: var_expand_register_filter
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 387
    functionName: mail_lua_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - var_expand_register_filter
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void mail_lua_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:391,1
    - Dst: mail_lua_scripts_free
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:392,1
    - Dst: var_expand_unregister_filter
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:393,1
    - Dst: var_expand_unregister_filter
      Src: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 389
    functionDepth: 7
    functionLinenumber: 389
    functionLinenumberEnd: 395
    functionName: mail_lua_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - var_expand_unregister_filter
    - mail_lua_scripts_free
    linkageType: ''
    returnType: void
    signature: void mail_lua_plugin_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:28,1
    - Dst: str_array_find
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:30,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:36,1
    - Dst: try_init
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - parser_context
    - parser_r
    argTypes:
    - struct fts_parser_context*
    - struct fts_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 42
    functionName: fts_parser_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser.c
    functionUses: 0
    functionsReached:
    - str_array_find
    - i_assert
    - N_ELEMENTS
    - try_init
    linkageType: ''
    returnType: bool
    signature: "bool fts_parser_init(struct fts_parser_context *parser_context,\n\t\t
      \    struct fts_parser **parser_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: fts_parser_text_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fts_parser
    signature: struct fts_parser *fts_parser_text_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: data_has_nuls
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool data_has_nuls(const unsigned char *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 72
    functionName: replace_nul_bytes
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser.c
    functionUses: 0
    functionsReached:
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: void
    signature: void replace_nul_bytes(buffer_t *buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct fts_parser*::v::more
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:77,1
    - Dst: uni_utf8_data_is_valid
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:79,1
    - Dst: data_has_nuls
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:80,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:84,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:86,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:88,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:91,1
    - Dst: replace_nul_bytes
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:94,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - parser
    - block
    argTypes:
    - struct fts_parser*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 98
    functionName: fts_parser_more
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser.c
    functionUses: 0
    functionsReached:
    - struct fts_parser*::v::more
    - buffer_append
    - replace_nul_bytes
    - uni_utf8_data_is_valid
    - buffer_create_dynamic
    - data_has_nuls
    - buffer_set_used_size
    - uni_utf8_get_valid_data
    linkageType: ''
    returnType: void
    signature: void fts_parser_more(struct fts_parser *parser, struct message_block
      *block)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:107,1
    - Dst: struct fts_parser*::v::deinit
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:110,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:112,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - _parser
    - retriable_err_msg_r
    argTypes:
    - struct fts_parser**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 119
    functionName: fts_parser_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_assert
    - struct fts_parser*::v::deinit
    - i_free
    linkageType: ''
    returnType: int
    signature: int fts_parser_deinit(struct fts_parser **_parser, const char **retriable_err_msg_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:125,1
    - Dst: unload
      Src: /src/dovecot/src/plugins/fts/fts-parser.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 129
    functionName: fts_parsers_unload
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser.c
    functionUses: 0
    functionsReached:
    - unload
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void fts_parsers_unload(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_storage*::callbacks::notify_progress
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:67,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fts_indexer_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 70
    functionName: fts_indexer_notify
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - struct mail_storage*::callbacks::notify_progress
    linkageType: ''
    returnType: void
    signature: void fts_indexer_notify(struct fts_indexer_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:84,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:85,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:86,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:87,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fts_indexer_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 95
    functionName: fts_indexer_more_int
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - timeout_add_short
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int fts_indexer_more_int(struct fts_indexer_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_indexer_more_int
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:102,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:106,1
    - Dst: fts_indexer_notify
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fts_indexer_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 97
    functionDepth: 5
    functionLinenumber: 97
    functionLinenumberEnd: 115
    functionName: fts_indexer_more
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_internal_error
    - fts_indexer_notify
    - fts_indexer_more_int
    linkageType: ''
    returnType: int
    signature: int fts_indexer_more(struct fts_indexer_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:120,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: fts_indexer_destroy
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - container_of
    - connection_deinit
    linkageType: ''
    returnType: void
    signature: void fts_indexer_destroy(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:130,1
    - Dst: struct fts_indexer_context*::box::storage::callbacks::notify_ok
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:137,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:141,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:142,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:143,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct fts_indexer_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 146
    functionName: fts_indexer_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - io_loop_destroy
    - struct fts_indexer_context*::box::storage::callbacks::notify_ok
    - i_assert
    - i_free
    - connection_list_deinit
    linkageType: ''
    returnType: int
    signature: int fts_indexer_deinit(struct fts_indexer_context **_ctx)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:152,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:154,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:157,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:158,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:161,1
    - Dst: str_to_int
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:163,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:164,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:170,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:175,1
    - Dst: str_array_length
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:179,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:180,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:183,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:184,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:188,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:189,1
    - Dst: fts_indexer_idle_timeout
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:198,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 202
    functionName: fts_indexer_input_args
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - fts_indexer_idle_timeout
    - str_array_length
    - str_to_uint32
    - e_error
    - str_to_int
    linkageType: ''
    returnType: int
    signature: int fts_indexer_input_args(struct connection *conn, const char *const
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:207,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:214,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:215,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:216,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:217,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 219
    functionName: fts_indexer_client_connected
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - container_of
    - t_strdup_printf
    - str_tabescape
    linkageType: ''
    returnType: void
    signature: void fts_indexer_client_connected(struct connection *conn, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:224,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:225,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: fts_indexer_idle_timeout
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 1
    functionsReached:
    - container_of
    - mail_storage_set_error
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void fts_indexer_idle_timeout(struct connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_mailbox_get_settings
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:254,1
    - Dst: fts_search_get_first_missing_uid
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:260,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:268,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:274,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:277,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:281,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:282,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:287,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:289,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:290,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - backend
    - box
    - ctx_r
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - struct fts_indexer_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 293
    functionName: fts_indexer_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - mailbox_get_seq_range
    - connection_list_init
    - fts_mailbox_get_settings
    - connection_client_connect
    - connection_init_client_unix
    - io_loop_set_current
    - io_loop_create
    - fts_search_get_first_missing_uid
    - i_new
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int fts_indexer_init(struct fts_backend *backend, struct mailbox *box,\n\t\t
      \    struct fts_indexer_context **ctx_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:303,1
    - Dst: net_connect_unix_with_retries
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:305,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:307,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:311,1
    - Dst: write_full
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:312,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:312,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:313,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/fts/fts-indexer.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - user
    - cmd
    - event
    - path_r
    argTypes:
    - struct mail_user*
    - char*
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 319
    functionName: fts_indexer_cmd
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-indexer.c
    functionUses: 0
    functionsReached:
    - net_connect_unix_with_retries
    - write_full
    - strlen
    - i_close_fd
    - e_error
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int fts_indexer_cmd(struct mail_user *user, const char *cmd,\n\t\t
      \   struct event *event, const char **path_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/plugins/fts/xml2text.c:20,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts/xml2text.c:23,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/fts/xml2text.c:25,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/fts/xml2text.c:26,1
    - Dst: try_init
      Src: /src/dovecot/src/plugins/fts/xml2text.c:28,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/xml2text.c:29,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/xml2text.c:31,1
    - Dst: read
      Src: /src/dovecot/src/plugins/fts/xml2text.c:32,1
    - Dst: struct fts_parser*::v::more
      Src: /src/dovecot/src/plugins/fts/xml2text.c:35,1
    - Dst: write
      Src: /src/dovecot/src/plugins/fts/xml2text.c:36,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts/xml2text.c:37,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts/xml2text.c:40,1
    - Dst: struct fts_parser*::v::more
      Src: /src/dovecot/src/plugins/fts/xml2text.c:44,1
    - Dst: write
      Src: /src/dovecot/src/plugins/fts/xml2text.c:47,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts/xml2text.c:48,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts/xml2text.c:51,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/plugins/fts/xml2text.c:52,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 54
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/fts/xml2text.c
    functionUses: 7
    functionsReached:
    - i_zero
    - struct fts_parser*::v::more
    - event_create
    - i_assert
    - event_unref
    - lib_init
    - lib_deinit
    - event_set_append_log_prefix
    - i_fatal
    - read
    - write
    - try_init
    - event_add_category
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_event
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:38,1
    - Dst: fts_list_backend
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:44,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:46,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:51,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:52,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:53,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:54,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:55,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:57,1
    - Dst: fts_backend_lookup
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:58,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:60,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:61,1
    - Dst: printf
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:64,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:65,1
    - Dst: printf
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:66,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:68,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:69,1
    - Dst: printf
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:70,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:70,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:72,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:73,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:74,1
    - Dst: printf
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:75,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 76
    functionName: cmd_search_box
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - i_array_init
    - t_str_new
    - str_c
    - printf
    - e_error
    - mailbox_list_get_event
    - array_count
    - fts_list_backend
    - mailbox_alloc
    - imap_write_seq_range
    - fts_backend_lookup
    - doveadm_mail_failed_error
    linkageType: ''
    returnType: int
    signature: "int cmd_search_box(struct doveadm_mail_cmd_context *ctx,\n\t       const
      struct mailbox_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:98,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:100,1
    - Dst: if
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:101,1
    - Dst: cmd_search_box
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 103
    functionName: cmd_fts_lookup_run
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_mailbox_list_iter_next
    - doveadm_mailbox_list_iter_init
    - if
    - cmd_search_box
    linkageType: ''
    returnType: int
    signature: "int cmd_fts_lookup_run(struct doveadm_mail_cmd_context *ctx,\n\t\t
      \  struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:115,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:116,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: cmd_fts_lookup_init
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_mail_build_search_args
    - doveadm_cmd_param_array
    linkageType: ''
    returnType: void
    signature: void cmd_fts_lookup_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 129
    functionName: cmd_fts_lookup_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_fts_lookup_alloc(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:135,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:138,1
    - Dst: fts_list_backend
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:140,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:142,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:147,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:148,1
    - Dst: fts_search_args_expand
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:150,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:151,1
    - Dst: mail_search_args_to_cmdline
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:152,1
    - Dst: printf
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:153,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:153,1
    - Dst: mail_search_args_deinit
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:154,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 157
    functionName: cmd_fts_expand_run
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mailbox_free
    - printf
    - mail_search_args_deinit
    - mail_search_args_init
    - i_fatal
    - mail_search_args_to_cmdline
    - e_error
    - fts_search_args_expand
    - fts_list_backend
    - mailbox_alloc
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: int
    signature: "int cmd_fts_expand_run(struct doveadm_mail_cmd_context *ctx,\n\t\t
      \  struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:165,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:166,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 168
    functionName: cmd_fts_expand_init
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_mail_build_search_args
    - doveadm_cmd_param_array
    linkageType: ''
    returnType: void
    signature: void cmd_fts_expand_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 179
    functionName: cmd_fts_expand_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_fts_expand_alloc(void)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:186,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:188,1
    - Dst: fts_list_backend
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:195,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:197,1
    - Dst: lang_user_get_language_list
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:204,1
    - Dst: language_detect
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:208,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:209,1
    - Dst: language_list_get_first
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:212,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:215,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:220,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:227,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:233,1
    - Dst: language_find
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:236,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:238,1
    - Dst: lang_user_language_find
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:244,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:246,1
    - Dst: lang_tokenizer_reset
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:252,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:257,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:258,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:261,1
    - Dst: lang_filter
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:267,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:269,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:271,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 181
    functionDepth: 5
    functionLinenumber: 181
    functionLinenumberEnd: 282
    functionName: cmd_fts_tokenize_run
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - language_list_get_first
    - container_of
    - language_detect
    - lang_user_language_find
    - lang_tokenizer_reset
    - i_unreached
    - lang_filter
    - doveadm_print
    - strlen
    - lang_tokenizer_next
    - e_error
    - e_warning
    - lang_tokenizer_final
    - fts_list_backend
    - mail_namespace_find_inbox
    - language_find
    - lang_user_get_language_list
    linkageType: ''
    returnType: int
    signature: "int cmd_fts_tokenize_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \    struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:289,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:291,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:294,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:295,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:297,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:297,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 300
    functionName: cmd_fts_tokenize_init
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - doveadm_print_header
    - t_strarray_join
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    linkageType: ''
    returnType: void
    signature: void cmd_fts_tokenize_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:307,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 312
    functionName: cmd_fts_tokenize_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_fts_tokenize_alloc(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:321,1
    - Dst: mail_namespace_find_prefix
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:323,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:325,1
    - Dst: fts_list_backend
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:331,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - user
    - ns_prefix
    - ns_r
    argTypes:
    - struct mail_user*
    - char*
    - struct mail_namespace**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 338
    functionName: fts_namespace_find
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find_inbox
    - fts_list_backend
    - mail_namespace_find_prefix
    - e_error
    linkageType: ''
    returnType: int
    signature: "int fts_namespace_find(struct mail_user *user, const char *ns_prefix,\n\t\t
      \  struct mail_namespace **ns_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:345,1
    - Dst: fts_namespace_find
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:351,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:352,1
    - Dst: fts_list_backend
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:355,1
    - Dst: fts_backend_optimize
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:356,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:357,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 362
    functionName: cmd_fts_optimize_run
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - container_of
    - fts_namespace_find
    - fts_backend_optimize
    - e_error
    - fts_list_backend
    - doveadm_mail_failed_error
    linkageType: ''
    returnType: int
    signature: "int cmd_fts_optimize_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \    struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:369,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 372
    functionName: cmd_fts_optimize_init
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_fts_optimize_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 382
    functionName: cmd_fts_optimize_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_fts_optimize_alloc(void)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:388,1
    - Dst: fts_namespace_find
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:395,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:396,1
    - Dst: fts_list_backend
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:399,1
    - Dst: fts_backend_rescan
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:400,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:401,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 406
    functionName: cmd_fts_rescan_run
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - container_of
    - fts_namespace_find
    - e_error
    - fts_list_backend
    - doveadm_mail_failed_error
    - fts_backend_rescan
    linkageType: ''
    returnType: int
    signature: int cmd_fts_rescan_run(struct doveadm_mail_cmd_context *_ctx, struct
      mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:413,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 416
    functionName: cmd_fts_rescan_init
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_fts_rescan_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 426
    functionName: cmd_fts_rescan_alloc
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_fts_rescan_alloc(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:481,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/plugins/fts/doveadm-fts.c:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 483
    functionName: doveadm_fts_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_fts_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 487
    functionName: doveadm_fts_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/doveadm-fts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_fts_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: IS_WORD_WHITESPACE
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_WORD_WHITESPACE(c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:52,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:53,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:56,1
    - Dst: rfc822_parse_content_type
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:57,1
    - Dst: str_lcase
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:59,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:59,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:59,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct fts_mail_build_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 64
    functionName: fts_build_parse_content_type
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - str_c
    - t_str_new
    - rfc822_parse_content_type
    - i_strdup
    - str_lcase
    - rfc822_parser_init
    linkageType: ''
    returnType: void
    signature: "void fts_build_parse_content_type(struct fts_mail_build_context *ctx,\n\t\t\t\t\t
      const struct message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:73,1
    - Dst: i_strndup
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct fts_mail_build_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: fts_build_parse_content_disposition
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_strndup
    linkageType: ''
    returnType: void
    signature: "void fts_build_parse_content_disposition(struct fts_mail_build_context
      *ctx,\n\t\t\t\t    const struct message_header_line *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:83,1
    - Dst: fts_build_parse_content_type
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:84,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:85,1
    - Dst: fts_build_parse_content_disposition
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - raw_block
    argTypes:
    - struct fts_mail_build_context*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 78
    functionDepth: 6
    functionLinenumber: 78
    functionLinenumberEnd: 87
    functionName: fts_parse_mail_header
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - fts_build_parse_content_type
    - strcasecmp
    - fts_build_parse_content_disposition
    linkageType: ''
    returnType: void
    signature: "void fts_parse_mail_header(struct fts_mail_build_context *ctx,\n\t\t\t\t
      \ const struct message_block *raw_block)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_memdup
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:102,1
    - Dst: fts_build_data
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:109,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct fts_mail_build_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 112
    functionName: fts_build_unstructured_header
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - i_memdup
    - i_free
    - fts_build_data
    linkageType: ''
    returnType: int
    signature: "int fts_build_unstructured_header(struct fts_mail_build_context *ctx,\n\t\t\t
      \     const struct message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:117,1
    - Dst: lang_tokenizer_reset
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - user_lang
    argTypes:
    - struct fts_mail_build_context*
    - struct language_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 124
    functionName: fts_mail_build_ctx_set_lang
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - i_assert
    - lang_tokenizer_reset
    linkageType: ''
    returnType: void
    signature: "void fts_mail_build_ctx_set_lang(struct fts_mail_build_context *ctx,\n\t\t\t\t\tstruct
      language_user *user_lang)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_header_has_language
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:135,1
    - Dst: fts_mail_build_ctx_set_lang
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:138,1
    - Dst: lang_user_get_data_lang
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct fts_mail_build_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 141
    functionName: fts_build_tokenized_hdr_update_lang
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - lang_user_get_data_lang
    - fts_header_has_language
    - fts_mail_build_ctx_set_lang
    linkageType: ''
    returnType: void
    signature: "void fts_build_tokenized_hdr_update_lang(struct fts_mail_build_context
      *ctx,\n\t\t\t\t    const struct message_header_line *hdr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:155,1
    - Dst: fts_build_tokenized_hdr_update_lang
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:164,1
    - Dst: fts_backend_update_set_build_key
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:166,1
    - Dst: message_header_is_address
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:169,1
    - Dst: fts_build_unstructured_header
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:171,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:178,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:178,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:182,1
    - Dst: message_address_write
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:183,1
    - Dst: fts_build_data
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:185,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:185,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:185,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - block
    argTypes:
    - struct fts_mail_build_context*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 186
    functionName: fts_build_mail_header
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_str_new
    - message_header_is_address
    - message_address_write
    - fts_build_data
    - str_data
    - fts_build_tokenized_hdr_update_lang
    - str_len
    - message_address_parse
    - pool_datastack_create
    - fts_build_unstructured_header
    - fts_backend_update_set_build_key
    linkageType: ''
    returnType: int
    signature: "int fts_build_mail_header(struct fts_mail_build_context *ctx,\n\t\t\t\t
      const struct message_block *block)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:214,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:217,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:221,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:230,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:234,1
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:235,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:237,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:238,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:241,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - part
    - binary_body_r
    argTypes:
    - struct fts_mail_build_context*
    - struct message_part*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 243
    functionName: fts_build_body_begin
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_get_storage
    - event_create
    - mail_storage_get_user
    - str_begins_with
    - event_set_append_log_prefix
    - event_add_category
    - t_strdup_printf
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool fts_build_body_begin(struct fts_mail_build_context *ctx,\n\t\t
      \    struct message_part *part, bool *binary_body_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:288,1
    - Dst: lang_filter
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:290,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:292,1
    - Dst: fts_backend_update_build_more
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:297,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:299,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:300,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct fts_mail_build_context*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 278
    functionDepth: 3
    functionLinenumber: 278
    functionLinenumberEnd: 304
    functionName: fts_build_add_tokens_with_filter
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - mail_set_critical
    - strlen
    - lang_tokenizer_next
    - mail_storage_set_internal_error
    - fts_backend_update_build_more
    linkageType: ''
    returnType: int
    signature: "int fts_build_add_tokens_with_filter(struct fts_mail_build_context
      *ctx,\n\t\t\t\t const unsigned char *data, size_t size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lang_user_get_language_list
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:314,1
    - Dst: language_detect
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:318,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:321,1
    - Dst: language_list_get_first
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:324,1
    - Dst: language_list_get_first
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:330,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:338,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 5
    argNames:
    - ctx
    - data
    - size
    - last
    - lang_r
    argTypes:
    - struct fts_mail_build_context*
    - unsigned char*
    - size_t
    - bool
    - struct language**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 308
    functionDepth: 5
    functionLinenumber: 308
    functionLinenumberEnd: 345
    functionName: fts_detect_language
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - language_list_get_first
    - buffer_append
    - language_detect
    - mail_set_critical
    - i_unreached
    - lang_user_get_language_list
    linkageType: ''
    returnType: int
    signature: "int fts_detect_language(struct fts_mail_build_context *ctx,\n\t\t
      \   const unsigned char *data, size_t size, bool last,\n\t\t    const struct
      language **lang_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:355,1
    - Dst: fts_detect_language
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:359,1
    - Dst: fts_mail_build_ctx_set_lang
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:365,1
    - Dst: lang_user_language_find
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:365,1
    - Dst: fts_build_add_tokens_with_filter
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:368,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:372,1
    - Dst: fts_build_add_tokens_with_filter
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:375,1
    - Dst: fts_build_add_tokens_with_filter
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:378,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - ctx
    - data
    - size
    - last
    argTypes:
    - struct fts_mail_build_context*
    - unsigned char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 347
    functionDepth: 6
    functionLinenumber: 347
    functionLinenumberEnd: 382
    functionName: fts_build_tokenized
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - lang_user_language_find
    - fts_mail_build_ctx_set_lang
    - buffer_set_used_size
    - i_assert
    - fts_build_add_tokens_with_filter
    - fts_detect_language
    linkageType: ''
    returnType: int
    signature: "int fts_build_tokenized(struct fts_mail_build_context *ctx,\n\t\t
      \   const unsigned char *data, size_t size, bool last)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IS_WORD_WHITESPACE
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:395,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:398,1
    - Dst: fts_backend_update_build_more
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:406,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:409,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:412,1
    - Dst: IS_WORD_WHITESPACE
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:420,1
    - Dst: fts_backend_update_build_more
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:425,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:426,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:433,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:435,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 4
    argNames:
    - ctx
    - data
    - size
    - last
    argTypes:
    - struct fts_mail_build_context*
    - unsigned char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 438
    functionName: fts_build_full_words
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - IS_WORD_WHITESPACE
    - buffer_create_dynamic
    - buffer_set_used_size
    - mail_storage_set_internal_error
    - fts_backend_update_build_more
    linkageType: ''
    returnType: int
    signature: "int fts_build_full_words(struct fts_mail_build_context *ctx,\n\t\t
      \    const unsigned char *data, size_t size, bool last)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_build_tokenized
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:445,1
    - Dst: fts_build_full_words
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:448,1
    - Dst: fts_backend_update_build_more
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:450,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:451,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - data
    - size
    - last
    argTypes:
    - struct fts_mail_build_context*
    - unsigned char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 440
    functionDepth: 7
    functionLinenumber: 440
    functionLinenumberEnd: 456
    functionName: fts_build_data
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 2
    functionsReached:
    - fts_backend_update_build_more
    - fts_build_full_words
    - mail_storage_set_internal_error
    - fts_build_tokenized
    linkageType: ''
    returnType: int
    signature: "int fts_build_data(struct fts_mail_build_context *ctx,\n\t\t\t  const
      unsigned char *data, size_t size, bool last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:461,1
    - Dst: fts_build_data
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - block
    - last
    argTypes:
    - struct fts_mail_build_context*
    - struct message_block*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 458
    functionDepth: 8
    functionLinenumber: 458
    functionLinenumberEnd: 464
    functionName: fts_build_body_block
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - i_assert
    - fts_build_data
    linkageType: ''
    returnType: int
    signature: "int fts_build_body_block(struct fts_mail_build_context *ctx,\n\t\t\t\tconst
      struct message_block *block, bool last)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:477,1
    - Dst: fts_parser_more
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:478,1
    - Dst: fts_build_body_block
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:479,1
    - Dst: fts_parser_deinit
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:485,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:499,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - retriable_err_msg_r
    - may_need_retry_r
    argTypes:
    - struct fts_mail_build_context*
    - char**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 466
    functionDepth: 9
    functionLinenumber: 466
    functionLinenumberEnd: 503
    functionName: fts_body_parser_finish
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - i_zero
    - fts_parser_more
    - fts_build_body_block
    - fts_parser_deinit
    - mail_storage_set_internal_error
    linkageType: ''
    returnType: int
    signature: "int fts_body_parser_finish(struct fts_mail_build_context *ctx,\n\t\t\t\t
      \ const char **retriable_err_msg_r,\n\t\t\t\t  bool *may_need_retry_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:510,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:515,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:515,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:516,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:522,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - values
    - pool
    - list_r
    - matches_all_r
    argTypes:
    - ARRAY_TYPE*
    - pool_t
    - ARRAY_TYPE*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 523
    functionName: parse_header_filter
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - array_sort
    - p_strdup
    - array_push_back
    - array_is_empty
    - t_str_lcase
    linkageType: ''
    returnType: void
    signature: "void parse_header_filter(const ARRAY_TYPE(const_string) *values, pool_t
      pool,\n\t\t    ARRAY_TYPE(const_string) *list_r, bool *matches_all_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:515,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:515,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 521
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 83
    functionsReached:
    - t_str_lcase
    - p_strdup
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(values, entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_user_get_settings
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:528,1
    - Dst: parse_header_filter
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:533,1
    - Dst: parse_header_filter
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 544
    functionName: load_header_filters
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - fts_user_get_settings
    - parse_header_filter
    linkageType: ''
    returnType: struct fts_header_filters
    signature: 'struct fts_header_filters *

      load_header_filters(struct fts_backend *backend)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - pkey
    - pitem
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 562
    functionName: header_prefix_cmp
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int header_prefix_cmp(const char *const *pkey, const char *const *pitem)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: load_header_filters
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:569,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:570,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:572,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:575,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - header_name
    - backend
    argTypes:
    - char*
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 564
    functionDepth: 3
    functionLinenumber: 564
    functionLinenumberEnd: 579
    functionName: is_header_indexable
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - load_header_filters
    - array_bsearch
    - t_str_lcase
    linkageType: ''
    returnType: bool
    signature: bool is_header_indexable(const char *header_name, struct fts_backend
      *backend)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: fts_mail_user_message_max_size
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:605,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:608,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:611,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:612,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:616,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:620,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:623,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:624,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:626,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:628,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:629,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:634,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:635,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:636,1
    - Dst: fts_body_parser_finish
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:645,1
    - Dst: message_decoder_set_return_binary
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:651,1
    - Dst: fts_backend_update_unset_build_key
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:652,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:654,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:655,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:656,1
    - Dst: fts_build_body_begin
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:669,1
    - Dst: message_decoder_set_return_binary
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:672,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:679,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:692,1
    - Dst: fts_parse_mail_header
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:701,1
    - Dst: is_header_indexable
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:702,1
    - Dst: fts_build_mail_header
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:703,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:710,1
    - Dst: fts_parser_more
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:712,1
    - Dst: fts_build_body_block
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:713,1
    - Dst: fts_body_parser_finish
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:722,1
    - Dst: fts_parser_deinit
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:725,1
    - Dst: fts_build_body_block
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:730,1
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:732,1
    - Dst: index_mail_set_message_parts_corrupted
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:733,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:734,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:735,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:736,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:737,1
    - Dst: buffer_free
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:738,1
    - Dst: buffer_free
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:739,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:740,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 108
    argCount: 4
    argNames:
    - update_ctx
    - mail
    - retriable_err_msg_r
    - may_need_retry_r
    argTypes:
    - struct fts_backend_update_context*
    - struct mail*
    - char**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 583
    functionDepth: 10
    functionLinenumber: 583
    functionLinenumberEnd: 742
    functionName: fts_build_mail_real
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_set_message_parts_corrupted
    - fts_build_body_begin
    - buffer_create_dynamic
    - message_decoder_set_return_binary
    - pool_unref
    - fts_parse_mail_header
    - message_parser_init
    - fts_parser_more
    - is_header_indexable
    - mail_set_critical
    - message_parser_parse_next_block
    - i_free_and_null
    - mail_get_stream_because
    - i_stream_get_error
    - message_decoder_deinit
    - fts_body_parser_finish
    - i_stream_get_name
    - fts_parser_deinit
    - buffer_free
    - i_zero
    - message_parser_deinit_from_parts
    - message_decoder_decode_next_block
    - mail_get_last_internal_error
    - fts_backend_update_unset_build_key
    - i_assert
    - i_free
    - fts_mail_user_message_max_size
    - pool_alloconly_create
    - fts_build_mail_header
    - e_debug
    - message_decoder_init
    - fts_build_body_block
    linkageType: ''
    returnType: int
    signature: "int fts_build_mail_real(struct fts_backend_update_context *update_ctx,\n\t\t
      \   struct mail *mail,\n\t\t    const char **retriable_err_msg_r,\n\t\t    bool
      *may_need_retry_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: while
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:755,1
    - Dst: fts_build_mail_real
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:755,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:764,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/fts/fts-build-mail.c:766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - update_ctx
    - mail
    argTypes:
    - struct fts_backend_update_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 744
    functionDepth: 11
    functionLinenumber: 744
    functionLinenumberEnd: 772
    functionName: fts_build_mail
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-build-mail.c
    functionUses: 0
    functionsReached:
    - while
    - e_info
    - fts_build_mail_real
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: "int fts_build_mail(struct fts_backend_update_context *update_ctx,\n\t\t
      \  struct mail *mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lang_library_init
      Src: /src/dovecot/src/plugins/fts/fts-plugin.c:25,1
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/fts/fts-plugin.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: fts_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-plugin.c
    functionUses: 0
    functionsReached:
    - lang_library_init
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void fts_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lang_library_deinit
      Src: /src/dovecot/src/plugins/fts/fts-plugin.c:31,1
    - Dst: fts_parsers_unload
      Src: /src/dovecot/src/plugins/fts/fts-plugin.c:32,1
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/fts/fts-plugin.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 3
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: fts_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - lang_library_deinit
    - fts_parsers_unload
    linkageType: ''
    returnType: void
    signature: void fts_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 10
    functionName: HAVE_SUBARGS
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-serialize.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HAVE_SUBARGS(arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:18,1
    - Dst: HAVE_SUBARGS
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:20,1
    - Dst: fts_search_serialize
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:21,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - args
    argTypes:
    - buffer_t*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 23
    functionName: fts_search_serialize
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-serialize.c
    functionUses: 1
    functionsReached:
    - buffer_append_c
    - fts_search_serialize
    - HAVE_SUBARGS
    linkageType: ''
    returnType: void
    signature: void fts_search_serialize(buffer_t *buf, const struct mail_search_arg
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:31,1
    - Dst: HAVE_SUBARGS
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:39,1
    - Dst: fts_search_deserialize_idx
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - args
    - buf
    - idx
    argTypes:
    - struct mail_search_arg*
    - buffer_t*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 44
    functionName: fts_search_deserialize_idx
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-serialize.c
    functionUses: 1
    functionsReached:
    - i_assert
    - fts_search_deserialize_idx
    - HAVE_SUBARGS
    linkageType: ''
    returnType: void
    signature: "void fts_search_deserialize_idx(struct mail_search_arg *args,\n\t\t\t\t
      \      const buffer_t *buf, unsigned int *idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_search_deserialize_idx
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:51,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - args
    - buf
    argTypes:
    - struct mail_search_arg*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: fts_search_deserialize
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-serialize.c
    functionUses: 0
    functionsReached:
    - i_assert
    - fts_search_deserialize_idx
    linkageType: ''
    returnType: void
    signature: "void fts_search_deserialize(struct mail_search_arg *args,\n\t\t\t
      \   const buffer_t *buf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:63,1
    - Dst: HAVE_SUBARGS
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:76,1
    - Dst: fts_search_deserialize_add_idx
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - args
    - buf
    - idx
    - matches
    argTypes:
    - struct mail_search_arg*
    - buffer_t*
    - unsigned int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 81
    functionName: fts_search_deserialize_add_idx
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-serialize.c
    functionUses: 1
    functionsReached:
    - fts_search_deserialize_add_idx
    - i_assert
    - HAVE_SUBARGS
    linkageType: ''
    returnType: void
    signature: "void fts_search_deserialize_add_idx(struct mail_search_arg *args,\n\t\t\t
      \      const buffer_t *buf, unsigned int *idx,\n\t\t\t       bool matches)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_search_deserialize_add_idx
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:88,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - args
    - buf
    argTypes:
    - struct mail_search_arg*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 90
    functionName: fts_search_deserialize_add_matches
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-serialize.c
    functionUses: 0
    functionsReached:
    - fts_search_deserialize_add_idx
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void fts_search_deserialize_add_matches(struct mail_search_arg *args,\n\t\t\t\t\tconst
      buffer_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_search_deserialize_add_idx
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:97,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search-serialize.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - args
    - buf
    argTypes:
    - struct mail_search_arg*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 99
    functionName: fts_search_deserialize_add_nonmatches
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-serialize.c
    functionUses: 0
    functionsReached:
    - fts_search_deserialize_add_idx
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void fts_search_deserialize_add_nonmatches(struct mail_search_arg
      *args,\n\t\t\t\t\t   const buffer_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(_type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts/fts-settings.c:103,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts/fts-settings.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - table
    - key
    argTypes:
    - struct fts_settings_enum_table*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: fts_settings_parse_enum
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-settings.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int fts_settings_parse_enum(struct fts_settings_enum_table *table,\n\t\t\t\t
      \  const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_settings_parse_enum
      Src: /src/dovecot/src/plugins/fts/fts-settings.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 117
    functionName: fts_settings_parse_decoder
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-settings.c
    functionUses: 0
    functionsReached:
    - fts_settings_parse_enum
    linkageType: ''
    returnType: enum fts_decoder
    signature: enum fts_decoder fts_settings_parse_decoder(const char *key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts/fts-settings.c:133,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct fts_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 148
    functionName: fts_settings_check_decoder
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-settings.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool fts_settings_check_decoder(struct fts_settings *set,\n\t\t\t\t
      \      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts/fts-settings.c:160,1
    - Dst: fts_settings_parse_decoder
      Src: /src/dovecot/src/plugins/fts/fts-settings.c:162,1
    - Dst: fts_settings_check_decoder
      Src: /src/dovecot/src/plugins/fts/fts-settings.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 164
    functionName: fts_settings_check
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - fts_settings_parse_decoder
    - fts_settings_check_decoder
    linkageType: ''
    returnType: bool
    signature: "bool fts_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: TIKA_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIKA_USER_CONTEXT(obj)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fts_user_get_settings
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:45,1
    - Dst: TIKA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:46,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:59,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:60,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:62,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:64,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:76,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:77,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:78,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:79,1
    - Dst: http_client_init_private_auto
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:80,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:81,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:82,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:84,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - parser_context
    - http_url_r
    argTypes:
    - struct fts_parser_context*
    - struct http_url**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 90
    functionName: tika_get_http_client_url
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - event_create
    - fts_user_get_settings
    - p_new
    - event_unref
    - settings_event_add_filter_name
    - TIKA_USER_CONTEXT
    - e_error
    - http_client_init_private_auto
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: int
    signature: int tika_get_http_client_url(struct fts_parser_context *parser_context,
      struct http_url **http_url_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:96,1
    - Dst: fts_user_get_settings
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:98,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:104,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:106,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:113,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:115,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:116,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:125,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:127,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:129,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:130,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:132,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:134,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:140,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - response
    - parser
    argTypes:
    - struct http_response*
    - struct tika_fts_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 141
    functionName: fts_tika_parser_response
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    functionUses: 0
    functionsReached:
    - fts_user_get_settings
    - e_debug
    - i_stream_ref
    - i_stream_create_from_data
    - e_error
    - io_loop_stop
    - http_response_get_message
    - i_strdup_printf
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void fts_tika_parser_response(const struct http_response *response,\n\t\t\t
      struct tika_fts_parser *parser)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: tika_get_http_client_url
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:150,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:155,1
    - Dst: http_client_request
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:159,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:161,1
    - Dst: http_client_request_set_auth_simple
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:164,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:168,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:169,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:171,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:174,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:176,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - parser_context
    argTypes:
    - struct fts_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 180
    functionName: fts_parser_tika_try_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_ssl
    - http_client_request_set_port
    - tika_get_http_client_url
    - http_client_request_set_auth_simple
    - i_new
    - http_client_request_add_header
    - http_client_request
    - t_strconcat
    linkageType: ''
    returnType: struct fts_parser
    signature: 'struct fts_parser *

      fts_parser_tika_try_init(struct fts_parser_context *parser_context)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_send_payload
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:195,1
    - Dst: http_client_request_finish_payload
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:206,1
    - Dst: http_client_wait
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:209,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:212,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:216,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:221,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:222,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:225,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:227,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:230,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:235,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:241,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:243,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:244,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:245,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 2
    argNames:
    - _parser
    - block
    argTypes:
    - struct fts_parser*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 249
    functionName: fts_parser_tika_more
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    functionUses: 0
    functionsReached:
    - http_client_request_send_payload
    - io_add_istream
    - io_loop_set_current
    - http_client_wait
    - io_loop_create
    - i_stream_skip
    - e_error
    - i_stream_get_error
    - i_stream_get_name
    - http_client_request_finish_payload
    - i_assert
    - i_stream_read_more
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: "void fts_parser_tika_more(struct fts_parser *_parser,\n\t\t\t\t struct
      message_block *block)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:256,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:258,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:259,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:263,1
    - Dst: io_remove
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:264,1
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:265,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:267,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:268,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:270,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - _parser
    - retriable_err_msg_r
    argTypes:
    - struct fts_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 272
    functionName: fts_parser_tika_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    functionUses: 0
    functionsReached:
    - io_remove
    - io_loop_set_current
    - io_loop_destroy
    - i_stream_unref
    - t_strdup
    - i_assert
    - i_free
    - http_client_request_abort
    linkageType: ''
    returnType: int
    signature: int fts_parser_tika_deinit(struct fts_parser *_parser, const char **retriable_err_msg_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_deinit
      Src: /src/dovecot/src/plugins/fts/fts-parser-tika.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 278
    functionName: fts_parser_tika_unload
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    functionUses: 0
    functionsReached:
    - http_client_deinit
    linkageType: ''
    returnType: void
    signature: void fts_parser_tika_unload(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: FTS_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-user.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: FTS_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-user.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-user.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: fts_user_get_settings
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-user.c
    functionUses: 3
    functionsReached:
    - FTS_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct fts_settings
    signature: struct fts_settings *fts_user_get_settings(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-user.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: fts_mail_user_message_max_size
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-user.c
    functionUses: 1
    functionsReached:
    - FTS_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: size_t
    signature: size_t fts_mail_user_message_max_size(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FTS_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-user.c:44,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/fts/fts-user.c:50,1
    - Dst: lang_user_init
      Src: /src/dovecot/src/plugins/fts/fts-user.c:53,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts/fts-user.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - user
    - event
    - initialize_libfts
    - error_r
    argTypes:
    - struct mail_user*
    - struct event*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 60
    functionName: fts_mail_user_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-user.c
    functionUses: 2
    functionsReached:
    - lang_user_init
    - settings_free
    - settings_get
    - FTS_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: "int fts_mail_user_init(struct mail_user *user, struct event *event,\n\t\t
      \      bool initialize_libfts, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-user.c:64,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts/fts-user.c:66,1
    - Dst: lang_user_deinit
      Src: /src/dovecot/src/plugins/fts/fts-user.c:67,1
    - Dst: struct fts_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/fts/fts-user.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: fts_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-user.c
    functionUses: 0
    functionsReached:
    - lang_user_deinit
    - settings_free
    - FTS_USER_CONTEXT_REQUIRE
    - struct fts_user*::module_ctx::super::deinit
    linkageType: ''
    returnType: void
    signature: void fts_mail_user_deinit(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-user.c:76,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts/fts-user.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: fts_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-user.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void fts_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: SCRIPT_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SCRIPT_USER_CONTEXT(obj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_user_get_settings
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:51,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:58,1
    - Dst: net_connect_unix_with_retries
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:59,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:61,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - user
    - path_r
    - event
    argTypes:
    - struct mail_user*
    - char**
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 66
    functionName: script_connect
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - fts_user_get_settings
    - net_connect_unix_with_retries
    - e_error
    - net_set_nonblock
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int script_connect(struct mail_user *user, const char **path_r, struct
      event *event)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SCRIPT_USER_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:71,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:78,1
    - Dst: script_connect
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:80,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:84,1
    - Dst: write_full
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:85,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:85,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:86,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:87,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:90,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:91,1
    - Dst: p_strsplit_spaces
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:93,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:99,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:103,1
    - Dst: str_lcase
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:104,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:108,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:109,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:113,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:115,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:117,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 2
    argNames:
    - user
    - event
    argTypes:
    - struct mail_user*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 68
    functionDepth: 3
    functionLinenumber: 68
    functionLinenumberEnd: 119
    functionName: script_contents_read
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - p_strsplit_spaces
    - array_append_space
    - script_connect
    - write_full
    - strlen
    - i_close_fd
    - t_strdup_printf
    - i_stream_read_next_line
    - e_error
    - i_stream_get_error
    - str_lcase
    - i_stream_create_fd_autoclose
    - SCRIPT_USER_CONTEXT
    - i_assert
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int script_contents_read(struct mail_user *user, struct event *event)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SCRIPT_USER_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:126,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:131,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:132,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:133,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:135,1
    - Dst: script_contents_read
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:136,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:140,1
    - Dst: strrchr
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:143,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:148,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:150,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:157,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - parser_context
    - filename
    argTypes:
    - struct fts_parser_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 162
    functionName: script_support_content
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - p_array_init
    - strrchr
    - array_foreach
    - array_count
    - str_array_icase_find
    - script_contents_read
    - SCRIPT_USER_CONTEXT
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: bool
    signature: "bool script_support_content(struct fts_parser_context *parser_context,\n\t\t\t\t
      \  const char *filename)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfc2231_parse
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:169,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:171,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - parser
    - key
    - value_r
    argTypes:
    - struct rfc822_parser_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 5
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: get_param_and_free_parser
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - rfc822_parser_deinit
    - strcasecmp
    - rfc2231_parse
    linkageType: ''
    returnType: bool
    signature: "bool get_param_and_free_parser(struct rfc822_parser_context *parser,\n\t\t\t\t
      \     const char *key, const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc822_parser_init
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:183,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:183,1
    - Dst: rfc822_skip_lwsp
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - content
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 186
    functionName: init_content_parser
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - rfc822_skip_lwsp
    - strlen
    - rfc822_parser_init
    linkageType: ''
    returnType: struct rfc822_parser_context
    signature: struct rfc822_parser_context init_content_parser(const char *content)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: init_content_parser
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:194,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:197,1
    - Dst: rfc822_parse_mime_token
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:198,1
    - Dst: rfc822_parser_deinit
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:199,1
    - Dst: get_param_and_free_parser
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - content
    - filename_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 189
    functionDepth: 6
    functionLinenumber: 189
    functionLinenumberEnd: 204
    functionName: get_cd_filename
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - get_param_and_free_parser
    - init_content_parser
    - rfc822_parse_mime_token
    - rfc822_parser_deinit
    linkageType: ''
    returnType: bool
    signature: bool get_cd_filename(const char *content, const char **filename_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: init_content_parser
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:211,1
    - Dst: get_param_and_free_parser
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - content
    - filename_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 207
    functionDepth: 6
    functionLinenumber: 207
    functionLinenumberEnd: 213
    functionName: get_ct_filename
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - get_param_and_free_parser
    - init_content_parser
    linkageType: ''
    returnType: bool
    signature: bool get_ct_filename(const char *content, const char **filename_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_cd_filename
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:223,1
    - Dst: get_ct_filename
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:224,1
    - Dst: script_support_content
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:227,1
    - Dst: script_connect
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:230,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:233,1
    - Dst: write_full
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:234,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:234,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:235,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:236,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:240,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:242,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:243,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - parser_context
    argTypes:
    - struct fts_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 215
    functionDepth: 7
    functionLinenumber: 215
    functionLinenumberEnd: 247
    functionName: fts_parser_script_try_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - get_cd_filename
    - script_support_content
    - event_create
    - script_connect
    - get_ct_filename
    - write_full
    - strlen
    - i_close_fd
    - t_strdup_printf
    - e_error
    - i_strdup
    - i_new
    - event_add_category
    linkageType: ''
    returnType: struct fts_parser
    signature: 'struct fts_parser *

      fts_parser_script_try_init(struct fts_parser_context *parser_context)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write_full
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:258,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:259,1
    - Dst: shutdown
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:265,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:266,1
    - Dst: read
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:270,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - _parser
    - block
    argTypes:
    - struct fts_parser*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 278
    functionName: fts_parser_script_more
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - e_error
    - write_full
    - shutdown
    - read
    linkageType: ''
    returnType: void
    signature: "void fts_parser_script_more(struct fts_parser *_parser,\n\t\t\t\t
      \  struct message_block *block)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:286,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:287,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:289,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:290,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-parser-script.c:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - _parser
    - retriable_err_msg_r ATTR_UNUSED
    argTypes:
    - struct fts_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 293
    functionName: fts_parser_script_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-script.c
    functionUses: 0
    functionsReached:
    - e_error
    - event_unref
    - i_free
    - close
    linkageType: ''
    returnType: int
    signature: "int fts_parser_script_deinit(struct fts_parser *_parser,\n\t\t\t\t
      \   const char **retriable_err_msg_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:38,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:44,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - orig_arg
    - pool
    - tokens
    argTypes:
    - struct mail_search_arg*
    - pool_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 54
    functionName: fts_search_arg_create_or
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-args.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\nfts_search_arg_create_or(const struct mail_search_arg
      *orig_arg, pool_t pool,\n\t\t\t const ARRAY_TYPE(const_string) *tokens)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:44,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 52
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-args.c
    functionUses: 83
    functionsReached:
    - p_strdup
    - p_new
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(tokens, token)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:65,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:69,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:71,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:73,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:77,1
    - Dst: lang_filter
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:78,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:80,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:81,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:83,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:92,1
    - Dst: strings_deduplicate
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:93,1
    - Dst: fts_search_arg_create_or
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 7
    argNames:
    - filter
    - pool
    - parent_arg
    - orig_arg
    - orig_token
    - token
    - error_r
    argTypes:
    - struct lang_filter*
    - pool_t
    - struct mail_search_arg*
    - struct mail_search_arg*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 99
    functionName: fts_backend_dovecot_expand_tokens
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-args.c
    functionUses: 0
    functionsReached:
    - lang_filter
    - array_push_back
    - fts_search_arg_create_or
    - t_strdup_printf
    - t_array_init
    - strings_deduplicate
    - ARRAY_TYPE
    - array_sort
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int fts_backend_dovecot_expand_tokens(struct lang_filter *filter,\n\t\t\t\t
      \ pool_t pool,\n\t\t\t\t  struct mail_search_arg *parent_arg,\n\t\t\t\t  const
      struct mail_search_arg *orig_arg,\n\t\t\t\t  const char *orig_token, const char
      *token,\n\t\t\t\t  const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:107,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:115,1
    - Dst: lang_tokenizer_reset
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:122,1
    - Dst: lang_tokenizer_next
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:123,1
    - Dst: fts_backend_dovecot_expand_tokens
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:126,1
    - Dst: lang_tokenizer_final
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:132,1
    - Dst: fts_backend_dovecot_expand_tokens
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:133,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:139,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 6
    argNames:
    - user_lang
    - pool
    - or_arg
    - orig_arg
    - orig_token
    - error_r
    argTypes:
    - struct language_user*
    - pool_t
    - struct mail_search_arg*
    - struct mail_search_arg*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 147
    functionName: fts_backend_dovecot_tokenize_lang
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-args.c
    functionUses: 0
    functionsReached:
    - p_new
    - lang_tokenizer_reset
    - strlen
    - t_strdup_printf
    - lang_tokenizer_next
    - fts_backend_dovecot_expand_tokens
    - lang_tokenizer_final
    linkageType: ''
    returnType: int
    signature: "int fts_backend_dovecot_tokenize_lang(struct language_user *user_lang,\n\t\t\t\t
      \ pool_t pool, struct mail_search_arg *or_arg,\n\t\t\t\t  struct mail_search_arg
      *orig_arg,\n\t\t\t\t  const char *orig_token, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fts_header_has_language
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:161,1
    - Dst: lang_user_get_data_languages
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:163,1
    - Dst: lang_user_get_all_languages
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:165,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:170,1
    - Dst: fts_backend_dovecot_tokenize_lang
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:176,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:178,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - backend
    - pool
    - argp
    argTypes:
    - struct fts_backend*
    - pool_t
    - struct mail_search_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 149
    functionDepth: 5
    functionLinenumber: 149
    functionLinenumberEnd: 190
    functionName: fts_search_arg_expand
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-args.c
    functionUses: 0
    functionsReached:
    - p_new
    - fts_header_has_language
    - lang_user_get_all_languages
    - fts_backend_dovecot_tokenize_lang
    - e_error
    - lang_user_get_data_languages
    linkageType: ''
    returnType: int
    signature: "int fts_search_arg_expand(struct fts_backend *backend, pool_t pool,\n\t\t\t\t
      struct mail_search_arg **argp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_dovecot_tokenize_lang
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:176,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 5
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-args.c
    functionUses: 83
    functionsReached:
    - e_error
    - fts_backend_dovecot_tokenize_lang
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(languages, lang)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: fts_search_args_expand_tree
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:203,1
    - Dst: fts_search_arg_expand
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:219,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - backend
    - pool
    - argp
    argTypes:
    - struct fts_backend*
    - pool_t
    - struct mail_search_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 192
    functionDepth: 6
    functionLinenumber: 192
    functionLinenumberEnd: 227
    functionName: fts_search_args_expand_tree
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-args.c
    functionUses: 1
    functionsReached:
    - fts_search_arg_expand
    - fts_search_args_expand_tree
    linkageType: ''
    returnType: int
    signature: "int fts_search_args_expand_tree(struct fts_backend *backend, pool_t
      pool,\n\t\t\t    struct mail_search_arg **argp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_dup
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:245,1
    - Dst: fts_search_args_expand_tree
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:247,1
    - Dst: mail_search_args_simplify
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:256,1
    - Dst: mail_search_arg_init
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:257,1
    - Dst: mail_search_arg_deinit
      Src: /src/dovecot/src/plugins/fts/fts-search-args.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - backend
    - args
    argTypes:
    - struct fts_backend*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 231
    functionDepth: 7
    functionLinenumber: 231
    functionLinenumberEnd: 260
    functionName: fts_search_args_expand
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search-args.c
    functionUses: 1
    functionsReached:
    - mail_search_arg_init
    - mail_search_arg_deinit
    - fts_search_args_expand_tree
    - mail_search_args_simplify
    - mail_search_arg_dup
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fts_search_args_expand(struct fts_backend *backend,\n\t\t\t   struct
      mail_search_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-api.c:22,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:23,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-api.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 25
    functionName: fts_backend_register
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - array_is_created
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void fts_backend_register(const struct fts_backend *backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/fts/fts-api.c:32,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts/fts-api.c:34,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/fts/fts-api.c:35,1
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/fts/fts-api.c:40,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/fts/fts-api.c:43,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 44
    functionName: fts_backend_unregister
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 2
    functionsReached:
    - strcmp
    - array_delete
    - i_panic
    - array_get
    - array_free
    linkageType: ''
    returnType: void
    signature: void fts_backend_unregister(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-api.c:52,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/fts/fts-api.c:53,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/fts/fts-api.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - backend_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 60
    functionName: fts_backend_class_lookup
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_get
    - array_is_created
    linkageType: ''
    returnType: struct fts_backend
    signature: 'struct fts_backend *

      fts_backend_class_lookup(const char *backend_name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts/fts-api.c:66,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:69,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: fts_header_filters_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void fts_header_filters_init(struct fts_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts/fts-api.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: fts_header_filters_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void fts_header_filters_deinit(struct fts_backend *backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_class_lookup
      Src: /src/dovecot/src/plugins/fts/fts-api.c:86,1
    - Dst: struct fts_backend*::v::alloc
      Src: /src/dovecot/src/plugins/fts/fts-api.c:92,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts/fts-api.c:94,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/fts/fts-api.c:95,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/fts/fts-api.c:96,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-api.c:96,1
    - Dst: struct fts_backend*::v::init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:99,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts/fts-api.c:100,1
    - Dst: struct fts_backend*::v::deinit
      Src: /src/dovecot/src/plugins/fts/fts-api.c:101,1
    - Dst: fts_header_filters_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 5
    argNames:
    - backend_name
    - ns
    - event
    - error_r
    - backend_r
    argTypes:
    - char*
    - struct mail_namespace*
    - struct event*
    - char**
    - struct fts_backend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 108
    functionName: fts_backend_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - event_create
    - struct fts_backend*::v::init
    - event_unref
    - event_set_append_log_prefix
    - t_strdup_printf
    - fts_header_filters_init
    - struct fts_backend*::v::deinit
    - fts_backend_class_lookup
    - event_add_category
    - struct fts_backend*::v::alloc
    linkageType: ''
    returnType: int
    signature: "int fts_backend_init(const char *backend_name, struct mail_namespace
      *ns,\n\t\t     struct event *event, const char **error_r,\n\t\t     struct fts_backend
      **backend_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_header_filters_deinit
      Src: /src/dovecot/src/plugins/fts/fts-api.c:115,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts/fts-api.c:116,1
    - Dst: struct fts_backend*::v::deinit
      Src: /src/dovecot/src/plugins/fts/fts-api.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _backend
    argTypes:
    - struct fts_backend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 118
    functionName: fts_backend_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - struct fts_backend*::v::deinit
    - fts_header_filters_deinit
    - event_unref
    linkageType: ''
    returnType: void
    signature: void fts_backend_deinit(struct fts_backend **_backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_index_get_header
      Src: /src/dovecot/src/plugins/fts/fts-api.c:128,1
    - Dst: struct fts_backend*::v::get_last_uid
      Src: /src/dovecot/src/plugins/fts/fts-api.c:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - backend
    - box
    - last_uid_r
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 136
    functionName: fts_backend_get_last_uid
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - struct fts_backend*::v::get_last_uid
    - fts_index_get_header
    linkageType: ''
    returnType: int
    signature: "int fts_backend_get_last_uid(struct fts_backend *backend, struct mailbox
      *box,\n\t\t\t     uint32_t *last_uid_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-api.c:144,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:145,1
    - Dst: struct virtual_mailbox_vfuncs*::get_virtual_backend_boxes
      Src: /src/dovecot/src/plugins/fts/fts-api.c:146,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/fts/fts-api.c:149,1
    - Dst: struct virtual_mailbox_vfuncs*::get_virtual_backend_last_uid
      Src: /src/dovecot/src/plugins/fts/fts-api.c:152,1
    - Dst: fts_list_backend
      Src: /src/dovecot/src/plugins/fts/fts-api.c:153,1
    - Dst: fts_backend_is_uid_indexed
      Src: /src/dovecot/src/plugins/fts/fts-api.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - box
    - last_indexed_uid_r
    argTypes:
    - struct mailbox*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 168
    functionName: fts_backend_is_uid_indexed_virtual
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - fts_backend_is_uid_indexed
    - array_foreach_elem
    - struct virtual_mailbox_vfuncs*::get_virtual_backend_last_uid
    - fts_list_backend
    - t_array_init
    - struct virtual_mailbox_vfuncs*::get_virtual_backend_boxes
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: "int fts_backend_is_uid_indexed_virtual(struct mailbox *box,\n\t\t\t\t
      \  uint32_t *last_indexed_uid_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_is_uid_indexed_virtual
      Src: /src/dovecot/src/plugins/fts/fts-api.c:175,1
    - Dst: struct fts_backend*::v::is_uid_indexed
      Src: /src/dovecot/src/plugins/fts/fts-api.c:177,1
    - Dst: fts_backend_get_last_uid
      Src: /src/dovecot/src/plugins/fts/fts-api.c:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - backend
    - box
    - uid
    - last_indexed_uid_r
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 189
    functionName: fts_backend_is_uid_indexed
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 1
    functionsReached:
    - struct fts_backend*::v::is_uid_indexed
    - fts_backend_is_uid_indexed_virtual
    - fts_backend_get_last_uid
    linkageType: ''
    returnType: int
    signature: "int fts_backend_is_uid_indexed(struct fts_backend *backend, struct
      mailbox *box,\n\t\t\t       uint32_t uid, uint32_t *last_indexed_uid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: fts_backend_is_updating
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool fts_backend_is_updating(struct fts_backend *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-api.c:201,1
    - Dst: struct fts_backend*::v::update_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 208
    functionName: fts_backend_update_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - i_assert
    - struct fts_backend*::v::update_init
    linkageType: ''
    returnType: struct fts_backend_update_context
    signature: 'struct fts_backend_update_context *

      fts_backend_update_init(struct fts_backend *backend)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_update_unset_build_key
      Src: /src/dovecot/src/plugins/fts/fts-api.c:212,1
    - Dst: struct fts_backend_update_context*::backend::v::update_set_mailbox
      Src: /src/dovecot/src/plugins/fts/fts-api.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 216
    functionName: fts_backend_set_cur_mailbox
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - fts_backend_update_unset_build_key
    - struct fts_backend_update_context*::backend::v::update_set_mailbox
    linkageType: ''
    returnType: void
    signature: void fts_backend_set_cur_mailbox(struct fts_backend_update_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_set_cur_mailbox
      Src: /src/dovecot/src/plugins/fts/fts-api.c:228,1
    - Dst: struct fts_backend*::v::update_deinit
      Src: /src/dovecot/src/plugins/fts/fts-api.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct fts_backend_update_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 233
    functionName: fts_backend_update_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - fts_backend_set_cur_mailbox
    - struct fts_backend*::v::update_deinit
    linkageType: ''
    returnType: int
    signature: int fts_backend_update_deinit(struct fts_backend_update_context **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct fts_backend_update_context*::backend::v::update_set_mailbox
      Src: /src/dovecot/src/plugins/fts/fts-api.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - box
    argTypes:
    - struct fts_backend_update_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: fts_backend_update_set_mailbox
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - struct fts_backend_update_context*::backend::v::update_set_mailbox
    linkageType: ''
    returnType: void
    signature: "void fts_backend_update_set_mailbox(struct fts_backend_update_context
      *ctx,\n\t\t\t\t    struct mailbox *box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_set_cur_mailbox
      Src: /src/dovecot/src/plugins/fts/fts-api.c:249,1
    - Dst: struct fts_backend_update_context*::backend::v::update_expunge
      Src: /src/dovecot/src/plugins/fts/fts-api.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct fts_backend_update_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 252
    functionName: fts_backend_update_expunge
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - fts_backend_set_cur_mailbox
    - struct fts_backend_update_context*::backend::v::update_expunge
    linkageType: ''
    returnType: void
    signature: "void fts_backend_update_expunge(struct fts_backend_update_context
      *ctx,\n\t\t\t\tuint32_t uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_set_cur_mailbox
      Src: /src/dovecot/src/plugins/fts/fts-api.c:260,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-api.c:262,1
    - Dst: struct fts_backend_update_context*::backend::v::update_set_build_key
      Src: /src/dovecot/src/plugins/fts/fts-api.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct fts_backend_update_context*
    - struct fts_backend_build_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 266
    functionName: fts_backend_update_set_build_key
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 1
    functionsReached:
    - struct fts_backend_update_context*::backend::v::update_set_build_key
    - fts_backend_set_cur_mailbox
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool fts_backend_update_set_build_key(struct fts_backend_update_context
      *ctx,\n\t\t\t\t      const struct fts_backend_build_key *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct fts_backend_update_context*::backend::v::update_unset_build_key
      Src: /src/dovecot/src/plugins/fts/fts-api.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fts_backend_update_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 278
    functionName: fts_backend_update_unset_build_key
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 2
    functionsReached:
    - struct fts_backend_update_context*::backend::v::update_unset_build_key
    linkageType: ''
    returnType: void
    signature: void fts_backend_update_unset_build_key(struct fts_backend_update_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-api.c:286,1
    - Dst: struct fts_backend_update_context*::backend::v::update_build_more
      Src: /src/dovecot/src/plugins/fts/fts-api.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct fts_backend_update_context*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 290
    functionName: fts_backend_update_build_more
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 3
    functionsReached:
    - struct fts_backend_update_context*::backend::v::update_build_more
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fts_backend_update_build_more(struct fts_backend_update_context
      *ctx,\n\t\t\t\t  const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs_i
    - rhs_i
    argTypes:
    - struct fts_backend**
    - struct fts_backend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 300
    functionName: fts_backend_cmp
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fts_backend_cmp(struct fts_backend *const *lhs_i,\n\t\t\t   struct
      fts_backend *const *rhs_i)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-api.c:304,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:305,1
    - Dst: struct mailbox*::virtual_vfuncs::get_virtual_backend_boxes
      Src: /src/dovecot/src/plugins/fts/fts-api.c:306,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:309,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/fts/fts-api.c:311,1
    - Dst: fts_list_backend
      Src: /src/dovecot/src/plugins/fts/fts-api.c:312,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/plugins/fts/fts-api.c:313,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-api.c:316,1
    - Dst: fts_backend_refresh
      Src: /src/dovecot/src/plugins/fts/fts-api.c:317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 321
    functionName: fts_backend_virtual_refresh
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - fts_backend_refresh
    - array_lsearch
    - array_foreach_elem
    - struct mailbox*::virtual_vfuncs::get_virtual_backend_boxes
    - array_push_back
    - fts_list_backend
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: int fts_backend_virtual_refresh(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct fts_backend*::v::refresh
      Src: /src/dovecot/src/plugins/fts/fts-api.c:327,1
    - Dst: fts_backend_virtual_refresh
      Src: /src/dovecot/src/plugins/fts/fts-api.c:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - backend
    - box
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 330
    functionName: fts_backend_refresh
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 1
    functionsReached:
    - struct fts_backend*::v::refresh
    - fts_backend_virtual_refresh
    linkageType: ''
    returnType: int
    signature: int fts_backend_refresh(struct fts_backend *backend, struct mailbox
      *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:341,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/fts/fts-api.c:344,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/fts/fts-api.c:349,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/fts/fts-api.c:350,1
    - Dst: fts_index_set_last_uid
      Src: /src/dovecot/src/plugins/fts/fts-api.c:351,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/fts/fts-api.c:354,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/fts/fts-api.c:356,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 359
    functionName: fts_backend_reset_last_uids
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 1
    functionsReached:
    - fts_index_set_last_uid
    - mailbox_free
    - mailbox_open
    - mailbox_list_iter_deinit
    - mailbox_list_iter_next
    - mailbox_alloc
    - mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: int fts_backend_reset_last_uids(struct fts_backend *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/fts/fts-api.c:366,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/fts/fts-api.c:368,1
    - Dst: fts_backend_reset_last_uids
      Src: /src/dovecot/src/plugins/fts/fts-api.c:372,1
    - Dst: struct fts_backend*::v::rescan
      Src: /src/dovecot/src/plugins/fts/fts-api.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 377
    functionName: fts_backend_rescan
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 1
    functionsReached:
    - fts_backend_reset_last_uids
    - struct fts_backend*::v::rescan
    - mailbox_free
    - mailbox_alloc
    linkageType: ''
    returnType: int
    signature: int fts_backend_rescan(struct fts_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct fts_backend*::v::optimize
      Src: /src/dovecot/src/plugins/fts/fts-api.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 383
    functionName: fts_backend_optimize
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 1
    functionsReached:
    - struct fts_backend*::v::optimize
    linkageType: ''
    returnType: int
    signature: int fts_backend_optimize(struct fts_backend *backend)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fts_backend_default_can_lookup
      Src: /src/dovecot/src/plugins/fts/fts-api.c:442,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - backend
    - args
    argTypes:
    - struct fts_backend*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 459
    functionName: fts_backend_default_can_lookup
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 1
    functionsReached:
    - fts_backend_default_can_lookup
    linkageType: ''
    returnType: bool
    signature: "bool fts_backend_default_can_lookup(struct fts_backend *backend,\n\t\t\t\t
      \   const struct mail_search_arg *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct fts_backend*::v::can_lookup
      Src: /src/dovecot/src/plugins/fts/fts-api.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - backend
    - args
    argTypes:
    - struct fts_backend*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 465
    functionName: fts_backend_can_lookup
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - struct fts_backend*::v::can_lookup
    linkageType: ''
    returnType: bool
    signature: "bool fts_backend_can_lookup(struct fts_backend *backend,\n\t\t\t    const
      struct mail_search_arg *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct fts_score_map*
    - struct fts_score_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 475
    functionName: fts_score_map_sort
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fts_score_map_sort(const struct fts_score_map *m1,\n\t\t\t      const
      struct fts_score_map *m2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/fts/fts-api.c:482,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/fts/fts-api.c:483,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/fts/fts-api.c:484,1
    - Dst: struct fts_backend*::v::lookup
      Src: /src/dovecot/src/plugins/fts/fts-api.c:486,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-api.c:489,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/fts/fts-api.c:490,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - backend
    - box
    - args
    - flags
    - result
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - struct mail_search_arg*
    - enum fts_lookup_flags
    - struct fts_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 494
    functionName: fts_backend_lookup
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 1
    functionsReached:
    - array_sort
    - struct fts_backend*::v::lookup
    - array_clear
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int fts_backend_lookup(struct fts_backend *backend, struct mailbox
      *box,\n\t\t       struct mail_search_arg *args,\n\t\t       enum fts_lookup_flags
      flags,\n\t\t       struct fts_result *result)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-api.c:504,1
    - Dst: struct fts_backend*::v::lookup_multi
      Src: /src/dovecot/src/plugins/fts/fts-api.c:507,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-api.c:511,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-api.c:518,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:523,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:524,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-api.c:525,1
    - Dst: struct fts_backend*::v::lookup
      Src: /src/dovecot/src/plugins/fts/fts-api.c:526,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - backend
    - boxes
    - args
    - flags
    - result
    argTypes:
    - struct fts_backend*
    - struct mailbox*[]
    - struct mail_search_arg*
    - enum fts_lookup_flags
    - struct fts_multi_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 531
    functionName: fts_backend_lookup_multi
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - struct fts_backend*::v::lookup_multi
    - p_new
    - p_array_init
    - struct fts_backend*::v::lookup
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fts_backend_lookup_multi(struct fts_backend *backend,\n\t\t\t
      \    struct mailbox *const boxes[],\n\t\t\t     struct mail_search_arg *args,\n\t\t\t
      \    enum fts_lookup_flags flags,\n\t\t\t     struct fts_multi_result *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct fts_backend*::v::lookup_done
      Src: /src/dovecot/src/plugins/fts/fts-api.c:536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct fts_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 537
    functionName: fts_backend_lookup_done
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - struct fts_backend*::v::lookup_done
    linkageType: ''
    returnType: void
    signature: void fts_backend_lookup_done(struct fts_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/plugins/fts/fts-api.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 539
    functionDepth: 3
    functionLinenumber: 539
    functionLinenumberEnd: 544
    functionName: fts_index_get_ext_id
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_register
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t fts_index_get_ext_id(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/fts/fts-api.c:553,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-api.c:554,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/plugins/fts/fts-api.c:558,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/plugins/fts/fts-api.c:559,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/plugins/fts/fts-api.c:560,1
    - Dst: fts_index_get_ext_id
      Src: /src/dovecot/src/plugins/fts/fts-api.c:560,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-api.c:563,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/fts/fts-api.c:566,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/plugins/fts/fts-api.c:569,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - box
    - hdr_r
    argTypes:
    - struct mailbox*
    - struct fts_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 546
    functionDepth: 4
    functionLinenumber: 546
    functionLinenumberEnd: 571
    functionName: fts_index_get_header
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 3
    functionsReached:
    - i_zero
    - memcpy
    - mailbox_open
    - mail_index_view_open
    - fts_index_get_ext_id
    - mail_index_get_header_ext
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: bool
    signature: bool fts_index_get_header(struct mailbox *box, struct fts_index_header
      *hdr_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_index_get_ext_id
      Src: /src/dovecot/src/plugins/fts/fts-api.c:577,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/plugins/fts/fts-api.c:579,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/plugins/fts/fts-api.c:580,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/plugins/fts/fts-api.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - box
    - hdr
    argTypes:
    - struct mailbox*
    - struct fts_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 573
    functionDepth: 4
    functionLinenumber: 573
    functionLinenumberEnd: 582
    functionName: fts_index_set_header
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - mail_index_update_header_ext
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - fts_index_get_ext_id
    linkageType: ''
    returnType: int
    signature: "int fts_index_set_header(struct mailbox *box,\n\t\t\t const struct
      fts_index_header *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_index_get_header
      Src: /src/dovecot/src/plugins/fts/fts-api.c:588,1
    - Dst: fts_index_set_header
      Src: /src/dovecot/src/plugins/fts/fts-api.c:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - box
    - last_uid
    argTypes:
    - struct mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 584
    functionDepth: 5
    functionLinenumber: 584
    functionLinenumberEnd: 591
    functionName: fts_index_set_last_uid
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 3
    functionsReached:
    - fts_index_get_header
    - fts_index_set_header
    linkageType: ''
    returnType: int
    signature: int fts_index_set_last_uid(struct mailbox *box, uint32_t last_uid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/plugins/fts/fts-api.c:596,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/fts/fts-api.c:606,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/plugins/fts/fts-api.c:607,1
    - Dst: t_strndup
      Src: /src/dovecot/src/plugins/fts/fts-api.c:609,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/fts/fts-api.c:612,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/fts/fts-api.c:613,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-api.c:614,1
    - Dst: mailbox_list_get_event
      Src: /src/dovecot/src/plugins/fts/fts-api.c:614,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-api.c:616,1
    - Dst: fts_index_get_header
      Src: /src/dovecot/src/plugins/fts/fts-api.c:619,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/fts/fts-api.c:622,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - list
    - checksum
    argTypes:
    - struct mailbox_list*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 593
    functionDepth: 5
    functionLinenumber: 593
    functionLinenumberEnd: 624
    functionName: fts_index_have_compatible_settings
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - fts_index_get_header
    - mailbox_free
    - mailbox_get_last_internal_error
    - strlen
    - mailbox_list_get_namespace
    - t_strndup
    - mailbox_sync
    - e_error
    - mailbox_list_get_event
    - mailbox_alloc
    linkageType: ''
    returnType: int
    signature: "int fts_index_have_compatible_settings(struct mailbox_list *list,\n\t\t\t\t
      \      uint32_t checksum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/fts/fts-api.c:634,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts/fts-api.c:635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hdr_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 639
    functionName: fts_header_want_indexed
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 5
    functionsReached:
    - strcasecmp
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool fts_header_want_indexed(const char *hdr_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts/fts-api.c:655,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts/fts-api.c:656,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/fts/fts-api.c:657,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - hdr_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 658
    functionName: fts_header_has_language
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 2
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool fts_header_has_language(const char *hdr_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/plugins/fts/fts-api.c:664,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/plugins/fts/fts-api.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - box
    - guid_r
    argTypes:
    - struct mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 669
    functionName: fts_mailbox_get_guid
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-api.c
    functionUses: 4
    functionsReached:
    - guid_128_to_string
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: int fts_mailbox_get_guid(struct mailbox *box, const char **guid_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: FTS_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: FTS_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: FTS_MAIL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_MAIL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: FTS_LIST_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_LIST_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: FTS_LIST_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FTS_LIST_CONTEXT_REQUIRE(obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FTS_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:81,1
    - Dst: fts_search_get_first_missing_uid
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:82,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - box
    - uid_r
    argTypes:
    - struct mailbox*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 88
    functionName: fts_mailbox_get_last_indexed_uid
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_search_get_first_missing_uid
    - FTS_LIST_CONTEXT_REQUIRE
    - mail_storage_set_internal_error
    linkageType: ''
    returnType: void
    signature: void fts_mailbox_get_last_indexed_uid(struct mailbox *box, uint32_t
      *uid_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:93,1
    - Dst: struct fts_mailbox*::module_ctx::super::get_status
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:94,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:95,1
    - Dst: fts_mailbox_get_last_indexed_uid
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 105
    functionName: fts_mailbox_get_status
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT_REQUIRE
    - struct fts_mailbox*::module_ctx::super::get_status
    - ENUM_NEGATE
    - fts_mailbox_get_last_indexed_uid
    linkageType: ''
    returnType: int
    signature: "int fts_mailbox_get_status(struct mailbox *box, enum mailbox_status_items
      items,\n\t\t\t   struct mailbox_status *status_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:113,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _scores
    argTypes:
    - struct fts_scores**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 116
    functionName: fts_scores_unref
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void fts_scores_unref(struct fts_scores **_scores)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:123,1
    - Dst: fts_backend_is_updating
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:123,1
    - Dst: fts_indexer_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:125,1
    - Dst: fts_search_lookup
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:132,1
    - Dst: mailbox_search_set_progress_hidden
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - fctx
    argTypes:
    - struct mail_search_context*
    - struct fts_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 137
    functionName: fts_try_build_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_search_lookup
    - fts_indexer_init
    - i_assert
    - mailbox_search_set_progress_hidden
    - fts_backend_is_updating
    linkageType: ''
    returnType: void
    signature: "void fts_try_build_init(struct mail_search_context *ctx,\n\t\t\t       struct
      fts_search_context *fctx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fts_want_build_args
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:149,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 162
    functionName: fts_want_build_args
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 1
    functionsReached:
    - fts_want_build_args
    linkageType: ''
    returnType: bool
    signature: bool fts_want_build_args(const struct mail_search_arg *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:171,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:172,1
    - Dst: FTS_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:173,1
    - Dst: struct fts_mailbox*::module_ctx::super::search_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:177,1
    - Dst: fts_backend_can_lookup
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:181,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:184,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:189,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:190,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:193,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:196,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:197,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:199,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:200,1
    - Dst: fts_scores_unref
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:205,1
    - Dst: fts_want_build_args
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:210,1
    - Dst: fts_try_build_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:211,1
    - Dst: fts_search_lookup
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 5
    argNames:
    - t
    - args
    - sort_program
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - enum mail_sort_type*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 215
    functionName: fts_mailbox_search_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - fts_want_build_args
    - fts_search_lookup
    - hash_table_create
    - FTS_CONTEXT_REQUIRE
    - FTS_LIST_CONTEXT_REQUIRE
    - buffer_create_dynamic
    - fts_backend_can_lookup
    - fts_scores_unref
    - i_new
    - MODULE_CONTEXT_SET
    - fts_try_build_init
    - struct fts_mailbox*::module_ctx::super::search_init
    linkageType: ''
    returnType: struct mail_search_context
    signature: "struct mail_search_context *\nfts_mailbox_search_init(struct mailbox_transaction_context
      *t,\n\t\t\tstruct mail_search_args *args,\n\t\t\tconst enum mail_sort_type *sort_program,\n\t\t\tenum
      mail_fetch_field wanted_fields,\n\t\t\tstruct mailbox_header_lookup_ctx *wanted_headers)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:219,1
    - Dst: fts_indexer_more
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:222,1
    - Dst: mailbox_search_set_progress_hidden
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:227,1
    - Dst: mailbox_search_reset_progress_start
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:228,1
    - Dst: fts_indexer_deinit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:229,1
    - Dst: fts_search_lookup
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:232,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 217
    functionDepth: 6
    functionLinenumber: 217
    functionLinenumberEnd: 245
    functionName: fts_mailbox_build_continue
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - fts_search_lookup
    - mailbox_search_reset_progress_start
    - FTS_CONTEXT_REQUIRE
    - fts_indexer_deinit
    - fts_indexer_more
    - mailbox_search_set_progress_hidden
    linkageType: ''
    returnType: bool
    signature: bool fts_mailbox_build_continue(struct mail_search_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:252,1
    - Dst: FTS_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:253,1
    - Dst: fts_mailbox_build_continue
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:257,1
    - Dst: struct fts_mailbox*::module_ctx::super::search_next_nonblock
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:270,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - mail_r
    - tryagain_r
    argTypes:
    - struct mail_search_context*
    - struct mail**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 247
    functionDepth: 7
    functionLinenumber: 247
    functionLinenumberEnd: 272
    functionName: fts_mailbox_search_next_nonblock
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_mailbox_build_continue
    - FTS_CONTEXT_REQUIRE
    - struct fts_mailbox*::module_ctx::super::search_next_nonblock
    - FTS_CONTEXT
    linkageType: ''
    returnType: bool
    signature: "bool fts_mailbox_search_next_nonblock(struct mail_search_context *ctx,\n\t\t\t\t
      struct mail **mail_r, bool *tryagain_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:278,1
    - Dst: array_idx
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:281,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:283,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:284,1
    - Dst: fts_search_deserialize_add_matches
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:285,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:286,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:287,1
    - Dst: fts_search_deserialize_add_nonmatches
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:288,1
    - Dst: fts_search_apply_results_level
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:295,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - args
    - idx
    argTypes:
    - struct mail_search_context*
    - struct mail_search_arg*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 274
    functionDepth: 3
    functionLinenumber: 274
    functionLinenumberEnd: 297
    functionName: fts_search_apply_results_level
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 1
    functionsReached:
    - seq_range_exists
    - array_idx
    - FTS_CONTEXT_REQUIRE
    - fts_search_apply_results_level
    - fts_search_deserialize_add_matches
    - array_is_created
    - fts_search_deserialize_add_nonmatches
    linkageType: ''
    returnType: void
    signature: "void fts_search_apply_results_level(struct mail_search_context *ctx,\n\t\t\t
      \      struct mail_search_arg *args, unsigned int *idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HASH_TABLE_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:306,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:311,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - fctx
    - backend_vname
    - backend_uid
    argTypes:
    - struct fts_search_context*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 316
    functionName: fts_search_virtual_uid_is_indexed
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST_TO
    - HASH_TABLE_TYPE
    - hash_table_lookup_full
    linkageType: ''
    returnType: int
    signature: "int fts_search_virtual_uid_is_indexed(struct fts_search_context *fctx,\n\t\t\t\t
      \ const char *backend_vname, uint32_t backend_uid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HASH_TABLE_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:322,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:327,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:328,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:332,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:334,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - fctx
    - backend_vname
    - backend_uid
    argTypes:
    - struct fts_search_context*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 335
    functionName: fts_search_virtual_uid_set_indexed
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - hash_table_update
    - p_strdup
    - POINTER_CAST
    - HASH_TABLE_TYPE
    - hash_table_lookup_full
    - POINTER_CAST_TO
    linkageType: ''
    returnType: void
    signature: "void fts_search_virtual_uid_set_indexed(struct fts_search_context
      *fctx,\n\t\t\t\t   const char *backend_vname, uint32_t backend_uid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct virtual_mailbox_vfuncs*::get_virtual_backend_mail_uid
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:344,1
    - Dst: fts_search_virtual_uid_is_indexed
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:347,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:352,1
    - Dst: fts_search_virtual_uid_set_indexed
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - fctx
    - seq
    argTypes:
    - struct fts_search_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 360
    functionName: fts_mailbox_search_is_virtual_seq_indexed
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - struct virtual_mailbox_vfuncs*::get_virtual_backend_mail_uid
    - mailbox_get_status
    - fts_search_virtual_uid_set_indexed
    - fts_search_virtual_uid_is_indexed
    linkageType: ''
    returnType: int
    signature: "int fts_mailbox_search_is_virtual_seq_indexed(struct fts_search_context
      *fctx,\n\t\t\t\t\t  uint32_t seq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fts_mailbox_search_is_virtual_seq_indexed
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - fctx
    - seq
    argTypes:
    - struct fts_search_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 369
    functionName: fts_mailbox_search_is_seq_indexed
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_mailbox_search_is_virtual_seq_indexed
    linkageType: ''
    returnType: int
    signature: int fts_mailbox_search_is_seq_indexed(struct fts_search_context *fctx,
      uint32_t seq)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:373,1
    - Dst: FTS_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:374,1
    - Dst: struct fts_mailbox*::module_ctx::super::search_next_update_seq
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:382,1
    - Dst: fts_search_deserialize
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:386,1
    - Dst: struct fts_mailbox*::module_ctx::super::search_next_update_seq
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:388,1
    - Dst: fts_mailbox_search_is_seq_indexed
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:391,1
    - Dst: fts_search_apply_results_level
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:401,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 371
    functionDepth: 4
    functionLinenumber: 371
    functionLinenumberEnd: 403
    functionName: fts_mailbox_search_next_update_seq
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT
    - struct fts_mailbox*::module_ctx::super::search_next_update_seq
    - FTS_CONTEXT_REQUIRE
    - fts_search_apply_results_level
    - fts_search_deserialize
    - fts_mailbox_search_is_seq_indexed
    linkageType: ''
    returnType: bool
    signature: bool fts_mailbox_search_next_update_seq(struct mail_search_context
      *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:408,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:409,1
    - Dst: FTS_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:410,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:415,1
    - Dst: fts_indexer_deinit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:417,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:423,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:430,1
    - Dst: buffer_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:434,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:435,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:436,1
    - Dst: fts_scores_unref
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:437,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:438,1
    - Dst: struct fts_mailbox*::module_ctx::super::search_deinit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:440,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 405
    functionDepth: 4
    functionLinenumber: 405
    functionLinenumberEnd: 443
    functionName: fts_mailbox_search_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT
    - FTS_CONTEXT_REQUIRE
    - struct fts_mailbox*::module_ctx::super::search_deinit
    - pool_unref
    - fts_indexer_deinit
    - fts_scores_unref
    - array_free
    - buffer_free
    - i_free
    - mail_storage_set_internal_error
    - hash_table_destroy
    linkageType: ''
    returnType: int
    signature: int fts_mailbox_search_deinit(struct mail_search_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - uid
    - score
    argTypes:
    - uint32_t*
    - struct fts_score_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 449
    functionName: fts_score_cmp
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fts_score_cmp(const uint32_t *uid, const struct fts_score_map *score)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FTS_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:455,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:456,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:462,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:466,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:467,1
    - Dst: struct fts_mail*::module_ctx::super::get_special
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 475
    functionName: fts_mail_get_special
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - struct fts_mail*::module_ctx::super::get_special
    - FTS_CONTEXT_REQUIRE
    - FTS_MAIL_CONTEXT
    - array_bsearch
    - i_snprintf
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fts_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t\t\tconst char **value_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:479,1
    - Dst: FTS_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:480,1
    - Dst: fts_mailbox_get_last_indexed_uid
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:483,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:490,1
    - Dst: fts_backend_update_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 477
    functionDepth: 2
    functionLinenumber: 477
    functionLinenumberEnd: 497
    functionName: fts_mail_precache_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_seq_range
    - FTS_CONTEXT_REQUIRE
    - FTS_LIST_CONTEXT_REQUIRE
    - fts_mailbox_get_last_indexed_uid
    - fts_backend_update_init
    linkageType: ''
    returnType: int
    signature: int fts_mail_precache_init(struct mail *_mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:501,1
    - Dst: FTS_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:502,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:505,1
    - Dst: fts_mail_precache_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:510,1
    - Dst: fts_backend_update_set_mailbox
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:514,1
    - Dst: fts_build_mail
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:515,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 499
    functionDepth: 12
    functionLinenumber: 499
    functionLinenumberEnd: 516
    functionName: fts_mail_index
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_mail_precache_init
    - FTS_CONTEXT_REQUIRE
    - FTS_LIST_CONTEXT_REQUIRE
    - fts_backend_update_set_mailbox
    - i_assert
    - fts_build_mail
    linkageType: ''
    returnType: int
    signature: int fts_mail_index(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FTS_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:521,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:522,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:525,1
    - Dst: struct fts_mail*::module_ctx::super::precache
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:526,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:529,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:532,1
    - Dst: fts_mail_index
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:534,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:535,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 518
    functionDepth: 13
    functionLinenumber: 518
    functionLinenumberEnd: 538
    functionName: fts_mail_precache
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT_REQUIRE
    - FTS_MAIL_CONTEXT
    - event_reason_begin
    - event_reason_end
    - fts_mail_index
    - i_assert
    - struct fts_mail*::module_ctx::super::precache
    linkageType: ''
    returnType: int
    signature: int fts_mail_precache(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:546,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:552,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 560
    functionName: fts_mail_allocated
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - FTS_CONTEXT
    - p_new
    linkageType: ''
    returnType: void
    signature: void fts_mail_allocated(struct mail *_mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:567,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:571,1
    - Dst: struct fts_mailbox*::module_ctx::super::transaction_begin
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:573,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 576
    functionName: fts_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT_REQUIRE
    - MODULE_CONTEXT_SET
    - i_new
    - struct fts_mailbox*::module_ctx::super::transaction_begin
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nfts_transaction_begin(struct
      mailbox *box,\n\t\t      enum mailbox_transaction_flags flags,\n\t\t      const
      char *reason)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:580,1
    - Dst: FTS_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:581,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:586,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:590,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:592,1
    - Dst: fts_backend_update_deinit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:594,1
    - Dst: fts_index_set_last_uid
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:600,1
    - Dst: fts_scores_unref
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:606,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:609,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:613,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:618,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:619,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - t
    - error_r
    argTypes:
    - struct mailbox_transaction_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 578
    functionDepth: 6
    functionLinenumber: 578
    functionLinenumberEnd: 621
    functionName: fts_transaction_end
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_index_set_last_uid
    - e_debug
    - FTS_CONTEXT_REQUIRE
    - FTS_LIST_CONTEXT_REQUIRE
    - fts_backend_update_deinit
    - event_reason_begin
    - e_error
    - event_reason_end
    - fts_scores_unref
    - t_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: int
    signature: int fts_transaction_end(struct mailbox_transaction_context *t, const
      char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:625,1
    - Dst: fts_transaction_end
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:628,1
    - Dst: struct fts_mailbox*::module_ctx::super::transaction_rollback
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 623
    functionDepth: 7
    functionLinenumber: 623
    functionLinenumberEnd: 630
    functionName: fts_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_transaction_end
    - FTS_CONTEXT_REQUIRE
    - struct fts_mailbox*::module_ctx::super::transaction_rollback
    linkageType: ''
    returnType: void
    signature: void fts_transaction_rollback(struct mailbox_transaction_context *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:635,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:636,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:640,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:641,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:643,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:647,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:648,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:649,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:650,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:651,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:652,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:653,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:654,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:655,1
    - Dst: write_full
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:656,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:656,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:656,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:657,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:658,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 632
    functionDepth: 1
    functionLinenumber: 632
    functionLinenumberEnd: 659
    functionName: fts_queue_index
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - net_connect_unix
    - str_append_c
    - str_printfa
    - str_data
    - str_len
    - write_full
    - FTS_CONTEXT_REQUIRE
    - i_close_fd
    - e_error
    - str_append_tabescaped
    - str_append
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void fts_queue_index(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:666,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:667,1
    - Dst: fts_transaction_end
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:675,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:676,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:677,1
    - Dst: struct fts_mailbox*::module_ctx::super::transaction_commit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:681,1
    - Dst: fts_queue_index
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:687,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 661
    functionDepth: 7
    functionLinenumber: 661
    functionLinenumberEnd: 689
    functionName: fts_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_transaction_end
    - FTS_CONTEXT_REQUIRE
    - t_strdup_printf
    - fts_queue_index
    - mail_storage_set_error
    - struct fts_mailbox*::module_ctx::super::transaction_commit
    linkageType: ''
    returnType: int
    signature: "int fts_transaction_commit(struct mailbox_transaction_context *t,\n\t\t
      \      struct mail_transaction_commit_changes *changes_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: FTS_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:694,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:695,1
    - Dst: struct fts_mailbox*::module_ctx::super::sync_notify
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:698,1
    - Dst: fts_backend_update_deinit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:703,1
    - Dst: fts_backend_is_updating
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:709,1
    - Dst: fts_backend_update_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:715,1
    - Dst: fts_backend_update_set_mailbox
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:716,1
    - Dst: fts_backend_update_expunge
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:718,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - box
    - uid
    - sync_type
    argTypes:
    - struct mailbox*
    - uint32_t
    - enum mailbox_sync_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 691
    functionDepth: 3
    functionLinenumber: 691
    functionLinenumberEnd: 719
    functionName: fts_mailbox_sync_notify
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - struct fts_mailbox*::module_ctx::super::sync_notify
    - FTS_CONTEXT_REQUIRE
    - FTS_LIST_CONTEXT_REQUIRE
    - fts_backend_update_deinit
    - fts_backend_update_set_mailbox
    - fts_backend_update_expunge
    - fts_backend_update_init
    - fts_backend_is_updating
    linkageType: ''
    returnType: void
    signature: "void fts_mailbox_sync_notify(struct mailbox *box, uint32_t uid,\n\t\t\t\t
      \   enum mailbox_sync_type sync_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:725,1
    - Dst: FTS_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:726,1
    - Dst: struct fts_mailbox*::module_ctx::super::sync_deinit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:732,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:737,1
    - Dst: fts_backend_optimize
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:738,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:739,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - status_r
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 744
    functionName: fts_sync_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_LIST_CONTEXT
    - FTS_CONTEXT_REQUIRE
    - fts_backend_optimize
    - struct fts_mailbox*::module_ctx::super::sync_deinit
    - mailbox_set_critical
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fts_sync_deinit(struct mailbox_sync_context *ctx,\n\t\t\t   struct
      mailbox_sync_status *status_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:748,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:749,1
    - Dst: struct fts_mailbox*::module_ctx::super::save_finish
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 755
    functionName: fts_save_finish
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT_REQUIRE
    - struct fts_mailbox*::module_ctx::super::save_finish
    linkageType: ''
    returnType: int
    signature: int fts_save_finish(struct mail_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:759,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:760,1
    - Dst: struct fts_mailbox*::module_ctx::super::copy
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 766
    functionName: fts_copy
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT_REQUIRE
    - struct fts_mailbox*::module_ctx::super::copy
    linkageType: ''
    returnType: int
    signature: int fts_copy(struct mail_save_context *ctx, struct mail *mail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:771,1
    - Dst: struct mail*::box::mail_vfuncs::get_backend_mail
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:777,1
    - Dst: fts_search_virtual_uid_is_indexed
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:780,1
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:784,1
    - Dst: fts_search_apply_results_level
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:792,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_search_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 768
    functionDepth: 4
    functionLinenumber: 768
    functionLinenumberEnd: 796
    functionName: fts_mailbox_virtual_match_mail
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT
    - fts_search_virtual_uid_is_indexed
    - FTS_CONTEXT_REQUIRE
    - fts_search_apply_results_level
    - struct mail*::box::mail_vfuncs::get_backend_mail
    linkageType: ''
    returnType: void
    signature: "void fts_mailbox_virtual_match_mail(struct mail_search_context *ctx,\n\t\t\t\t\t
      \  struct mail *mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:801,1
    - Dst: fts_mailbox_virtual_match_mail
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:803,1
    - Dst: struct fts_mailbox*::module_ctx::super::search_next_match_mail
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_search_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 798
    functionDepth: 5
    functionLinenumber: 798
    functionLinenumberEnd: 805
    functionName: fts_mailbox_search_next_match_mail
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT_REQUIRE
    - fts_mailbox_virtual_match_mail
    - struct fts_mailbox*::module_ctx::super::search_next_match_mail
    linkageType: ''
    returnType: int
    signature: "int fts_mailbox_search_next_match_mail(struct mail_search_context
      *ctx,\n\t\t\t\t\t      struct mail *mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:809,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:810,1
    - Dst: struct fts_mailbox*::module_ctx::super::free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 812
    functionName: fts_mailbox_free
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_CONTEXT_REQUIRE
    - struct fts_mailbox*::module_ctx::super::free
    - settings_free
    linkageType: ''
    returnType: void
    signature: void fts_mailbox_free(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FTS_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:816,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:825,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:826,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:830,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:849,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 814
    functionDepth: 1
    functionLinenumber: 814
    functionLinenumberEnd: 850
    functionName: fts_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - p_new
    - FTS_LIST_CONTEXT
    - e_error
    - settings_get
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: void
    signature: void fts_mailbox_allocated(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FTS_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:854,1
    - Dst: fts_backend_deinit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:857,1
    - Dst: struct fts_mailbox_list*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:858,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 852
    functionDepth: 3
    functionLinenumber: 852
    functionLinenumberEnd: 859
    functionName: fts_mailbox_list_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - struct fts_mailbox_list*::module_ctx::super::deinit
    - fts_backend_deinit
    - FTS_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void fts_mailbox_list_deinit(struct mailbox_list *list)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:868,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:871,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:874,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:875,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:877,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:882,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:882,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:883,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:885,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:886,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:892,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:897,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:898,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:899,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:900,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:901,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:904,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:905,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:910,1
    - Dst: fts_backend_init
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:913,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:915,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:923,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:924,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 2
    argNames:
    - flist
    - ns
    argTypes:
    - struct fts_mailbox_list*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 861
    functionDepth: 3
    functionLinenumber: 861
    functionLinenumberEnd: 925
    functionName: fts_init_namespace
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - e_debug
    - settings_free
    - e_error
    - array_is_empty
    - array_count
    - array_idx_elem
    - event_add_str
    - settings_event_add_list_filter_name
    - fts_backend_init
    - t_strdup
    - settings_get
    linkageType: ''
    returnType: void
    signature: void fts_init_namespace(struct fts_mailbox_list *flist, struct mail_namespace
      *ns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FTS_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:930,1
    - Dst: fts_init_namespace
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:932,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 927
    functionDepth: 4
    functionLinenumber: 927
    functionLinenumberEnd: 934
    functionName: fts_mail_namespaces_added
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - fts_init_namespace
    - FTS_LIST_CONTEXT
    linkageType: ''
    returnType: void
    signature: void fts_mail_namespaces_added(struct mail_namespace *ns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:940,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:941,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:950,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 955
    functionName: fts_mailbox_list_created
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - e_debug
    - MODULE_CONTEXT_SET
    - p_new
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: void
    signature: void fts_mailbox_list_created(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 962
    functionName: fts_mailbox_backend
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 0
    functionsReached:
    - FTS_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct fts_backend
    signature: struct fts_backend *fts_mailbox_backend(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 969
    functionName: fts_list_backend
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 8
    functionsReached:
    - FTS_LIST_CONTEXT
    linkageType: ''
    returnType: struct fts_backend
    signature: struct fts_backend *fts_list_backend(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FTS_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/fts/fts-storage.c:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 975
    functionName: fts_mailbox_get_settings
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-storage.c
    functionUses: 1
    functionsReached:
    - FTS_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct fts_settings
    signature: struct fts_settings *fts_mailbox_get_settings(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_html2text_content_type_match
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:20,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:23,1
    - Dst: mail_html2text_init
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:25,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - parser_context
    argTypes:
    - struct fts_parser_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 2
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: fts_parser_html_try_init
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-html.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - mail_html2text_init
    - mail_html2text_content_type_match
    - i_new
    linkageType: ''
    returnType: struct fts_parser
    signature: 'struct fts_parser *

      fts_parser_html_try_init(struct fts_parser_context *parser_context)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:40,1
    - Dst: mail_html2text_more
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _parser
    - block
    argTypes:
    - struct fts_parser*
    - struct message_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 30
    functionDepth: 5
    functionLinenumber: 30
    functionLinenumberEnd: 46
    functionName: fts_parser_html_more
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-html.c
    functionUses: 0
    functionsReached:
    - mail_html2text_more
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: "void fts_parser_html_more(struct fts_parser *_parser,\n\t\t\t\t struct
      message_block *block)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_html2text_deinit
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:53,1
    - Dst: buffer_free
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:54,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fts/fts-parser-html.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _parser
    - retriable_err_msg_r ATTR_UNUSED
    argTypes:
    - struct fts_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: fts_parser_html_deinit
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-parser-html.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_free
    - mail_html2text_deinit
    linkageType: ''
    returnType: int
    signature: "int fts_parser_html_deinit(struct fts_parser *_parser,\n\t\t\t\t  const
      char **retriable_err_msg_r ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/fts/fts-search.c:23,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-search.c:24,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:25,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/plugins/fts/fts-search.c:29,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/plugins/fts/fts-search.c:32,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - fctx
    - uid_range
    - seq_range
    argTypes:
    - struct fts_search_context*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 34
    functionName: uid_range_to_seqs
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - mailbox_get_seq_range
    - seq_range_array_add_range
    - p_array_init
    - array_get
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void uid_range_to_seqs(struct fts_search_context *fctx,\n\t\t  const
      ARRAY_TYPE(seq_range) *uid_range,\n\t\t  ARRAY_TYPE(seq_range) *seq_range)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-search.c:45,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:48,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:49,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:50,1
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/plugins/fts/fts-search.c:52,1
    - Dst: fts_backend_lookup
      Src: /src/dovecot/src/plugins/fts/fts-search.c:53,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts/fts-search.c:58,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/fts/fts-search.c:59,1
    - Dst: fts_search_serialize
      Src: /src/dovecot/src/plugins/fts/fts-search.c:60,1
    - Dst: uid_range_to_seqs
      Src: /src/dovecot/src/plugins/fts/fts-search.c:62,1
    - Dst: uid_range_to_seqs
      Src: /src/dovecot/src/plugins/fts/fts-search.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - fctx
    - args
    - and_args
    argTypes:
    - struct fts_search_context*
    - struct mail_search_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 66
    functionName: fts_search_lookup_level_single
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_search_args_reset
    - array_append_space
    - p_array_init
    - buffer_create_dynamic
    - uid_range_to_seqs
    - fts_search_serialize
    - fts_backend_lookup
    linkageType: ''
    returnType: int
    signature: "int fts_search_lookup_level_single(struct fts_search_context *fctx,\n\t\t\t\t\t
      \ struct mail_search_arg *args,\n\t\t\t\t\t  bool and_args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-search.c:74,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/fts/fts-search.c:79,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:80,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:81,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/plugins/fts/fts-search.c:83,1
    - Dst: struct mailbox*::virtual_vfuncs::get_virtual_uid_map
      Src: /src/dovecot/src/plugins/fts/fts-search.c:84,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search.c:87,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/fts/fts-search.c:87,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/fts/fts-search.c:87,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/fts/fts-search.c:88,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts/fts-search.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - box
    - level
    - br
    argTypes:
    - struct mailbox*
    - struct fts_search_level*
    - struct fts_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 94
    functionName: level_scores_add_vuids
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - array_append_space
    - struct mailbox*::virtual_vfuncs::get_virtual_uid_map
    - array_get
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void level_scores_add_vuids(struct mailbox *box,\n\t\t       struct
      fts_search_level *level, struct fts_result *br)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fts_mailbox_backend
      Src: /src/dovecot/src/plugins/fts/fts-search.c:101,1
    - Dst: fts_mailbox_backend
      Src: /src/dovecot/src/plugins/fts/fts-search.c:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct mailbox**
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 108
    functionName: mailbox_cmp_fts_backend
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - fts_mailbox_backend
    linkageType: ''
    returnType: int
    signature: int mailbox_cmp_fts_backend(struct mailbox *const *m1, struct mailbox
      *const *m2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fts_search_serialize
      Src: /src/dovecot/src/plugins/fts/fts-search.c:117,1
    - Dst: memcmp
      Src: /src/dovecot/src/plugins/fts/fts-search.c:120,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/plugins/fts/fts-search.c:121,1
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/fts/fts-search.c:123,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/fts/fts-search.c:124,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-search.c:129,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:131,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-search.c:132,1
    - Dst: struct fts_search_context*::box::virtual_vfuncs::get_virtual_uids
      Src: /src/dovecot/src/plugins/fts/fts-search.c:133,1
    - Dst: uid_range_to_seqs
      Src: /src/dovecot/src/plugins/fts/fts-search.c:136,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/fts/fts-search.c:138,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-search.c:139,1
    - Dst: struct fts_search_context*::box::virtual_vfuncs::get_virtual_uids
      Src: /src/dovecot/src/plugins/fts/fts-search.c:140,1
    - Dst: uid_range_to_seqs
      Src: /src/dovecot/src/plugins/fts/fts-search.c:143,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/fts/fts-search.c:145,1
    - Dst: level_scores_add_vuids
      Src: /src/dovecot/src/plugins/fts/fts-search.c:146,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 4
    argNames:
    - fctx
    - level
    - args
    - result
    argTypes:
    - struct fts_search_context*
    - struct fts_search_level*
    - struct mail_search_arg*
    - struct fts_multi_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 147
    functionName: multi_add_lookup_result
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - i_panic
    - struct fts_search_context*::box::virtual_vfuncs::get_virtual_uids
    - buffer_set_used_size
    - uid_range_to_seqs
    - t_array_init
    - fts_search_serialize
    - memcmp
    - ARRAY_TYPE
    - array_clear
    - array_is_created
    - CONST_PTR_OFFSET
    - level_scores_add_vuids
    linkageType: ''
    returnType: int
    signature: "int multi_add_lookup_result(struct fts_search_context *fctx,\n\t\t\tstruct
      fts_search_level *level,\n\t\t\tstruct mail_search_arg *args,\n\t\t\tstruct
      fts_multi_result *result)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-search.c:157,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:164,1
    - Dst: struct fts_search_context*::box::virtual_vfuncs::get_virtual_backend_boxes
      Src: /src/dovecot/src/plugins/fts/fts-search.c:165,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/fts/fts-search.c:167,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/fts/fts-search.c:169,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/fts/fts-search.c:173,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/plugins/fts/fts-search.c:174,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:175,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/fts/fts-search.c:177,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:178,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/fts/fts-search.c:180,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-search.c:181,1
    - Dst: fts_mailbox_backend
      Src: /src/dovecot/src/plugins/fts/fts-search.c:183,1
    - Dst: fts_mailbox_backend
      Src: /src/dovecot/src/plugins/fts/fts-search.c:185,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/fts/fts-search.c:187,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/fts/fts-search.c:189,1
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/plugins/fts/fts-search.c:191,1
    - Dst: fts_backend_lookup_multi
      Src: /src/dovecot/src/plugins/fts/fts-search.c:192,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/fts/fts-search.c:193,1
    - Dst: multi_add_lookup_result
      Src: /src/dovecot/src/plugins/fts/fts-search.c:197,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - fctx
    - args
    - and_args
    argTypes:
    - struct fts_search_context*
    - struct mail_search_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 202
    functionName: fts_search_lookup_level_multi
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_search_args_reset
    - array_append_space
    - p_array_init
    - array_push_back
    - buffer_create_dynamic
    - array_get
    - multi_add_lookup_result
    - fts_backend_lookup_multi
    - fts_mailbox_backend
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - array_front
    - array_sort
    - array_append_zero
    - struct fts_search_context*::box::virtual_vfuncs::get_virtual_backend_boxes
    linkageType: ''
    returnType: int
    signature: "int fts_search_lookup_level_multi(struct fts_search_context *fctx,\n\t\t\t\t\t
      struct mail_search_arg *args,\n\t\t\t\t\t bool and_args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_search_lookup_level_single
      Src: /src/dovecot/src/plugins/fts/fts-search.c:212,1
    - Dst: fts_search_lookup_level_multi
      Src: /src/dovecot/src/plugins/fts/fts-search.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fctx
    - args
    - and_args
    argTypes:
    - struct fts_search_context*
    - struct mail_search_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 204
    functionDepth: 4
    functionLinenumber: 204
    functionLinenumberEnd: 214
    functionName: fts_search_lookup_level
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - fts_search_lookup_level_single
    - fts_search_lookup_level_multi
    linkageType: ''
    returnType: int
    signature: "int fts_search_lookup_level(struct fts_search_context *fctx,\n\t\t\t\t
      \  struct mail_search_arg *args,\n\t\t\t\t   bool and_args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/fts/fts-search.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search.c:300,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/fts/fts-search.c:300,1
    - Dst: array_idx
      Src: /src/dovecot/src/plugins/fts/fts-search.c:312,1
    - Dst: array_append_array
      Src: /src/dovecot/src/plugins/fts/fts-search.c:313,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/fts/fts-search.c:315,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/fts/fts-search.c:321,1
    - Dst: fts_search_merge_scores_level
      Src: /src/dovecot/src/plugins/fts/fts-search.c:322,1
    - Dst: fts_search_merge_scores_and
      Src: /src/dovecot/src/plugins/fts/fts-search.c:327,1
    - Dst: fts_search_merge_scores_or
      Src: /src/dovecot/src/plugins/fts/fts-search.c:329,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 5
    argNames:
    - fctx
    - args
    - idx
    - and_args
    - scores
    argTypes:
    - struct fts_search_context*
    - struct mail_search_arg*
    - unsigned int*
    - bool
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 331
    functionName: fts_search_merge_scores_level
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 1
    functionsReached:
    - array_idx
    - fts_search_merge_scores_and
    - fts_search_merge_scores_or
    - fts_search_merge_scores_level
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - i_assert
    - array_append_array
    linkageType: ''
    returnType: void
    signature: "void fts_search_merge_scores_level(struct fts_search_context *fctx,\n\t\t\t
      \     struct mail_search_arg *args, unsigned int *idx,\n\t\t\t      bool and_args,
      ARRAY_TYPE(fts_score_map) *scores)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fts_search_merge_scores_level
      Src: /src/dovecot/src/plugins/fts/fts-search.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fctx
    argTypes:
    - struct fts_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 339
    functionName: fts_search_merge_scores
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - fts_search_merge_scores_level
    linkageType: ''
    returnType: void
    signature: void fts_search_merge_scores(struct fts_search_context *fctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fts_mailbox_get_status
      Src: /src/dovecot/src/plugins/fts/fts-search.c:346,1
    - Dst: fts_backend_is_uid_indexed
      Src: /src/dovecot/src/plugins/fts/fts-search.c:352,1
    - Dst: fts_backend_refresh
      Src: /src/dovecot/src/plugins/fts/fts-search.c:363,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/fts/fts-search.c:366,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - backend
    - box
    - last_indexed_uid_r
    argTypes:
    - struct fts_backend*
    - struct mailbox*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 341
    functionDepth: 3
    functionLinenumber: 341
    functionLinenumberEnd: 367
    functionName: fts_search_get_first_missing_uid
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 2
    functionsReached:
    - fts_backend_refresh
    - fts_backend_is_uid_indexed
    - i_unreached
    - fts_mailbox_get_status
    linkageType: ''
    returnType: int
    signature: "int fts_search_get_first_missing_uid(struct fts_backend *backend,\n\t\t\t\t
      \    struct mailbox *box,\n\t\t\t\t     uint32_t *last_indexed_uid_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search.c:374,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/fts/fts-search.c:374,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fts/fts-search.c:375,1
    - Dst: fts_search_get_first_missing_uid
      Src: /src/dovecot/src/plugins/fts/fts-search.c:377,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/plugins/fts/fts-search.c:386,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/plugins/fts/fts-search.c:392,1
    - Dst: fts_search_args_expand
      Src: /src/dovecot/src/plugins/fts/fts-search.c:397,1
    - Dst: fts_search_serialize
      Src: /src/dovecot/src/plugins/fts/fts-search.c:400,1
    - Dst: fts_search_lookup_level
      Src: /src/dovecot/src/plugins/fts/fts-search.c:402,1
    - Dst: fts_search_merge_scores
      Src: /src/dovecot/src/plugins/fts/fts-search.c:404,1
    - Dst: fts_search_deserialize
      Src: /src/dovecot/src/plugins/fts/fts-search.c:407,1
    - Dst: fts_backend_lookup_done
      Src: /src/dovecot/src/plugins/fts/fts-search.c:408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - fctx
    argTypes:
    - struct fts_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 369
    functionDepth: 8
    functionLinenumber: 369
    functionLinenumberEnd: 409
    functionName: fts_search_try_lookup
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 0
    functionsReached:
    - mailbox_get_seq_range
    - fts_backend_lookup_done
    - fts_search_lookup_level
    - hash_table_clear
    - fts_search_args_expand
    - array_count
    - fts_search_get_first_missing_uid
    - fts_search_serialize
    - fts_search_deserialize
    - i_assert
    - fts_search_merge_scores
    linkageType: ''
    returnType: void
    signature: void fts_search_try_lookup(struct fts_search_context *fctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/fts/fts-search.c:413,1
    - Dst: fts_search_try_lookup
      Src: /src/dovecot/src/plugins/fts/fts-search.c:414,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/fts/fts-search.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fctx
    argTypes:
    - struct fts_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 411
    functionDepth: 9
    functionLinenumber: 411
    functionLinenumberEnd: 416
    functionName: fts_search_lookup
    functionSourceFile: /src/dovecot/src/plugins/fts/fts-search.c
    functionUses: 3
    functionsReached:
    - event_reason_end
    - event_reason_begin
    - fts_search_try_lookup
    linkageType: ''
    returnType: void
    signature: void fts_search_lookup(struct fts_search_context *fctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: COMPRESS_FS
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPRESS_FS(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: COMPRESS_FILE
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPRESS_FILE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: fs_compress_alloc
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_compress_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FS
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:82,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:86,1
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:92,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:95,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:98,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:101,1
    - Dst: fs_init_parent
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - _fs
    - params
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 78
    functionDepth: 7
    functionLinenumber: 78
    functionLinenumberEnd: 104
    functionName: fs_compress_init_
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - fs_init_parent
    - compression_lookup_handler
    - t_strdup_printf
    - settings_free
    - COMPRESS_FS
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int fs_compress_init_(struct fs *_fs, const struct fs_parameters *params,\n\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FS
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:108,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: fs_compress_free
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - i_free
    - COMPRESS_FS
    linkageType: ''
    returnType: void
    signature: void fs_compress_free(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: fs_compress_file_alloc
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_compress_file_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FS
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:123,1
    - Dst: COMPRESS_FILE
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:124,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:126,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:131,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:133,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 144
    functionName: fs_compress_file_init
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - COMPRESS_FS
    - COMPRESS_FILE
    - i_strdup
    - fs_file_init_parent
    linkageType: ''
    returnType: void
    signature: "void fs_compress_file_init(struct fs_file *_file, const char *path,\n\t\t
      \     enum fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FILE
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:148,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:151,1
    - Dst: fs_file_free
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:152,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:153,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 155
    functionName: fs_compress_file_deinit
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - COMPRESS_FILE
    - fs_file_free
    - i_free
    - fs_file_deinit
    linkageType: ''
    returnType: void
    signature: void fs_compress_file_deinit(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FILE
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:159,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:161,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:162,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: fs_compress_file_close
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - COMPRESS_FILE
    - fs_file_close
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void fs_compress_file_close(struct fs_file *_file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FILE
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:169,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:171,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _file
    - key
    - value
    argTypes:
    - struct fs_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 174
    functionName: fs_compress_set_metadata
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - COMPRESS_FILE
    - fs_set_metadata
    linkageType: ''
    returnType: void
    signature: "void fs_compress_set_metadata(struct fs_file *_file,\n\t\t\t\t     const
      char *key, const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FILE
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:179,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:184,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:185,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:189,1
    - Dst: I_MAX
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:190,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:193,1
    - Dst: i_stream_create_decompress
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:198,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:199,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - _file
    - max_buffer_size
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 176
    functionDepth: 3
    functionLinenumber: 176
    functionLinenumberEnd: 202
    functionName: fs_compress_read_stream
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - I_MAX
    - COMPRESS_FILE
    - i_stream_create_decompress
    - i_stream_seek
    - i_stream_unref
    - fs_read_stream
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_compress_read_stream(struct fs_file *_file, size_t max_buffer_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FILE
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:206,1
    - Dst: fs_wrapper_write_stream
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:209,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:213,1
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:216,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:218,1
    - Dst: struct compress_fs_file*::fs::compress_handler::create_ostream_auto
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 221
    functionName: fs_compress_write_stream
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - struct compress_fs_file*::fs::compress_handler::create_ostream_auto
    - fs_wrapper_write_stream
    - COMPRESS_FILE
    - fs_file_path
    - iostream_temp_create_named
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_compress_write_stream(struct fs_file *_file)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: COMPRESS_FILE
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:225,1
    - Dst: fs_wrapper_write_stream_finish
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:230,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:238,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:241,1
    - Dst: fs_write_stream_abort_parent
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:243,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:248,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:249,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:253,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:254,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:257,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:258,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:259,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:260,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:261,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 223
    functionDepth: 5
    functionLinenumber: 223
    functionLinenumberEnd: 263
    functionName: fs_compress_write_stream_finish
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - fs_write_stream
    - fs_wrapper_write_stream_finish
    - iostream_temp_finish
    - o_stream_unref
    - o_stream_nsend_istream
    - COMPRESS_FILE
    - fs_write_stream_abort_parent
    - i_stream_unref
    - i_assert
    - o_stream_destroy
    - fs_write_stream_finish
    linkageType: ''
    returnType: int
    signature: int fs_compress_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_class_register
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: fs_compress_init
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - fs_class_register
    linkageType: ''
    returnType: void
    signature: void fs_compress_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_class_unregister
      Src: /src/dovecot/src/plugins/fs-compress/fs-compress.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: fs_compress_deinit
    functionSourceFile: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    functionUses: 0
    functionsReached:
    - fs_class_unregister
    linkageType: ''
    returnType: void
    signature: void fs_compress_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: LAST_LOGIN_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LAST_LOGIN_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LAST_LOGIN_USER_CONTEXT
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:63,1
    - Dst: dict_wait
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:66,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:67,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 72
    functionName: last_login_dict_deinit
    functionSourceFile: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    functionUses: 0
    functionsReached:
    - LAST_LOGIN_USER_CONTEXT
    - timeout_remove
    - dict_deinit
    - dict_wait
    linkageType: ''
    returnType: void
    signature: void last_login_dict_deinit(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LAST_LOGIN_USER_CONTEXT
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:76,1
    - Dst: last_login_dict_deinit
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:78,1
    - Dst: struct last_login_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 80
    functionName: last_login_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    functionUses: 0
    functionsReached:
    - LAST_LOGIN_USER_CONTEXT
    - last_login_dict_deinit
    - struct last_login_user*::module_ctx::super::deinit
    linkageType: ''
    returnType: void
    signature: void last_login_user_deinit(struct mail_user *user)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LAST_LOGIN_USER_CONTEXT
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:86,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:93,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:98,1
    - Dst: timeout_add
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - result
    - user
    argTypes:
    - struct dict_commit_result*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 106
    functionName: last_login_dict_commit
    functionSourceFile: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    functionUses: 0
    functionsReached:
    - LAST_LOGIN_USER_CONTEXT
    - timeout_add
    - e_error
    linkageType: ''
    returnType: void
    signature: "void last_login_dict_commit(const struct dict_commit_result *result,\n\t\t
      \      struct mail_user *user)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:128,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:129,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:130,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:131,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:133,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:134,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:138,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:140,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:141,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:142,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:146,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:152,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:154,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:156,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:158,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:159,1
    - Dst: dict_set
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:160,1
    - Dst: dec2str
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:161,1
    - Dst: dict_set
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:162,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:162,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:165,1
    - Dst: dict_set
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:166,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:166,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:169,1
    - Dst: dict_set
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:170,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:170,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:174,1
    - Dst: dict_transaction_commit_async
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:176,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:177,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:178,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 179
    functionName: last_login_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    functionUses: 0
    functionsReached:
    - event_unref
    - mail_user_get_dict_op_settings
    - t_strdup_printf
    - dict_set
    - MODULE_CONTEXT_SET
    - dict_init_auto
    - p_new
    - i_unreached
    - event_set_append_log_prefix
    - dict_transaction_begin
    - event_create
    - dict_transaction_commit_async
    - e_error
    - strcmp
    - dec2str
    - settings_event_add_filter_name
    - settings_free
    - settings_get
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void last_login_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: last_login_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void last_login_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/last-login/last-login-plugin.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: last_login_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void last_login_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: POP3_MIGRATION_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP3_MIGRATION_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: POP3_MIGRATION_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP3_MIGRATION_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: POP3_MIGRATION_MAIL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP3_MIGRATION_MAIL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - map1
    - map2
    argTypes:
    - struct imap_msg_map*
    - struct imap_msg_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 151
    functionName: imap_msg_map_uid_cmp
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imap_msg_map_uid_cmp(const struct imap_msg_map *map1,\n\t\t\t\tconst
      struct imap_msg_map *map2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - map1
    - map2
    argTypes:
    - struct pop3_uidl_map*
    - struct pop3_uidl_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: pop3_uidl_map_pop3_seq_cmp
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int pop3_uidl_map_pop3_seq_cmp(const struct pop3_uidl_map *map1,\n\t\t\t\t
      \     const struct pop3_uidl_map *map2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - map1
    - map2
    argTypes:
    - struct pop3_uidl_map*
    - struct pop3_uidl_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 167
    functionName: pop3_uidl_map_uidl_cmp
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int pop3_uidl_map_uidl_cmp(const struct pop3_uidl_map *map1,\n\t\t\t\t
      \ const struct pop3_uidl_map *map2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - map1
    - map2
    argTypes:
    - struct imap_msg_map*
    - struct imap_msg_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 173
    functionName: imap_msg_map_uidl_cmp
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    linkageType: ''
    returnType: int
    signature: "int imap_msg_map_uidl_cmp(const struct imap_msg_map *map1,\n\t\t\t\t
      const struct imap_msg_map *map2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - map1
    - map2
    argTypes:
    - struct pop3_uidl_map*
    - struct pop3_uidl_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: pop3_uidl_map_hdr_cmp
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int pop3_uidl_map_hdr_cmp(const struct pop3_uidl_map *map1,\n\t\t\t\t
      const struct pop3_uidl_map *map2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - map1
    - map2
    argTypes:
    - struct imap_msg_map*
    - struct imap_msg_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 187
    functionName: imap_msg_map_hdr_cmp
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int imap_msg_map_hdr_cmp(const struct imap_msg_map *map1,\n\t\t\t\tconst
      struct imap_msg_map *map2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 203
    functionName: header_name_is_valid
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool header_name_is_valid(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 213
    functionName: header_value_want_skip
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool header_value_want_skip(const struct message_header_line *hdr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_memspn
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:228,1
    - Dst: header_value_want_skip
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:237,1
    - Dst: header_name_is_valid
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:242,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - hdr
    - matched
    - ctx
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - struct pop3_hdr_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 248
    functionName: pop3_header_filter_callback
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - header_value_want_skip
    - header_name_is_valid
    - i_memspn
    linkageType: ''
    returnType: void
    signature: "void pop3_header_filter_callback(struct header_filter_istream *input
      ATTR_UNUSED,\n\t\t\t    struct message_header_line *hdr,\n\t\t\t    bool *matched,
      struct pop3_hdr_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:260,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:262,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:265,1
    - Dst: sha1_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:268,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:269,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:270,1
    - Dst: message_header_hash_more
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:271,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:274,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:277,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:279,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:280,1
    - Dst: sha1_result
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:283,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 5
    argNames:
    - mail_seq
    - input
    - sha1_r
    - have_eoh_r
    - error_r
    argTypes:
    - uint32_t
    - struct istream*
    - unsigned char[]
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 288
    functionName: pop3_migration_get_hdr_sha1
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - i_zero
    - sha1_result
    - message_header_hash_more
    - t_strdup_printf
    - i_stream_create_header_filter
    - i_stream_skip
    - i_stream_get_error
    - i_stream_unref
    - sha1_init
    - i_stream_read_more
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int pop3_migration_get_hdr_sha1(uint32_t mail_seq, struct istream
      *input,\n\t\t\t\tunsigned char sha1_r[STATIC_ARRAY SHA1_RESULTLEN],\n\t\t\t\tbool
      *have_eoh_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:292,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 290
    functionDepth: 6
    functionLinenumber: 290
    functionLinenumberEnd: 304
    functionName: get_cache_idx
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - mail_cache_register_fields
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int get_cache_idx(struct mail *mail)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_hdr_stream
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:316,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:317,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:318,1
    - Dst: pop3_migration_get_hdr_sha1
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:323,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:325,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:332,1
    - Dst: get_cache_idx
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:332,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:356,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:357,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:358,1
    - Dst: pop3_migration_get_hdr_sha1
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:363,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:367,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:372,1
    - Dst: get_cache_idx
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:372,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - mail
    - sha1_r
    argTypes:
    - struct mail*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 306
    functionDepth: 7
    functionLinenumber: 306
    functionLinenumberEnd: 379
    functionName: get_hdr_sha1
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 1
    functionsReached:
    - get_cache_idx
    - mail_get_hdr_stream
    - pop3_migration_get_hdr_sha1
    - index_mail_cache_add_idx
    - e_error
    - mail_get_stream_because
    - e_warning
    - mail_get_last_internal_error
    linkageType: ''
    returnType: int
    signature: int get_hdr_sha1(struct mail *mail, unsigned char sha1_r[STATIC_ARRAY
      SHA1_RESULTLEN])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:387,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:388,1
    - Dst: get_cache_idx
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:389,1
    - Dst: memcpy
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - mail
    - cache_buf
    - sha1_r
    argTypes:
    - struct mail*
    - buffer_t*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 381
    functionDepth: 7
    functionLinenumber: 381
    functionLinenumberEnd: 395
    functionName: get_cached_hdr_sha1
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - get_cache_idx
    - index_mail_cache_lookup_field
    - memcpy
    - buffer_set_used_size
    linkageType: ''
    returnType: bool
    signature: "bool get_cached_hdr_sha1(struct mail *mail, buffer_t *cache_buf,\n\t\t
      \   unsigned char sha1_r[STATIC_ARRAY SHA1_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:400,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:404,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:406,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 410
    functionName: pop3_mailbox_alloc
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_alloc
    - i_assert
    - mail_namespace_find
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct mailbox
    signature: struct mailbox *pop3_mailbox_alloc(struct mail_storage *storage)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:416,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:426,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:428,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:432,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:434,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:435,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:437,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:441,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:442,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:443,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:444,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:447,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:449,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:455,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:456,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:459,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:465,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:466,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:469,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:474,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:480,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:482,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:486,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:487,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:489,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:492,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 2
    argNames:
    - storage
    - pop3_box
    argTypes:
    - struct mail_storage*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 494
    functionName: pop3_map_read
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_search_build_add_all
    - p_strdup
    - mailbox_get_last_internal_error
    - array_foreach_modifiable
    - mail_get_special
    - mail_get_physical_size
    - mailbox_search_next
    - POP3_MIGRATION_CONTEXT_REQUIRE
    - array_append_space
    - mailbox_transaction_begin
    - mailbox_sync
    - e_warning
    - mailbox_search_deinit
    - e_error
    - mail_search_build_init
    - mailbox_transaction_commit
    - mailbox_search_init
    - array_is_created
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: int pop3_map_read(struct mail_storage *storage, struct mailbox *pop3_box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:506,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:507,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:509,1
    - Dst: array_idx_modifiable_i
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:510,1
    - Dst: get_cached_hdr_sha1
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:512,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:516,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:517,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:519,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - t
    - search_args
    - msg_map
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 496
    functionDepth: 8
    functionLinenumber: 496
    functionLinenumberEnd: 521
    functionName: pop3_map_read_cached_hdr_hashes
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - get_cached_hdr_sha1
    - t_buffer_create
    - array_idx_modifiable_i
    - e_warning
    - mailbox_search_deinit
    - mailbox_search_init
    - mailbox_search_next
    linkageType: ''
    returnType: void
    signature: "void pop3_map_read_cached_hdr_hashes(struct mailbox_transaction_context
      *t,\n\t\t\t\tstruct mail_search_args *search_args,\n\t\t\t\tstruct array *msg_map)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count_i
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:527,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:529,1
    - Dst: array_idx_i
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:532,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - search_arg
    - msg_map
    - seq1
    argTypes:
    - struct mail_search_arg*
    - struct array*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 536
    functionName: map_remove_found_seqs
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - array_count_i
    - array_idx_i
    - i_assert
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: "void map_remove_found_seqs(struct mail_search_arg *search_arg,\n\t\t\t\t
      \ struct array *msg_map, uint32_t seq1)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:548,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:550,1
    - Dst: mail_search_build_add_seqset
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:551,1
    - Dst: array_count_i
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:551,1
    - Dst: pop3_map_read_cached_hdr_hashes
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:552,1
    - Dst: map_remove_found_seqs
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:557,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:558,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:560,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:562,1
    - Dst: array_idx_modifiable_i
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:563,1
    - Dst: get_hdr_sha1
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:565,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:573,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:574,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:576,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:579,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - box
    - msg_map
    - seq1
    argTypes:
    - struct mailbox*
    - struct array*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 538
    functionDepth: 9
    functionLinenumber: 538
    functionLinenumberEnd: 581
    functionName: map_read_hdr_hashes
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - pop3_map_read_cached_hdr_hashes
    - mailbox_transaction_begin
    - mailbox_get_last_internal_error
    - array_idx_modifiable_i
    - mail_search_build_add_seqset
    - array_count_i
    - get_hdr_sha1
    - e_error
    - map_remove_found_seqs
    - mail_search_build_init
    - mailbox_search_deinit
    - mailbox_search_init
    - mailbox_transaction_commit
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: int map_read_hdr_hashes(struct mailbox *box, struct array *msg_map,
      uint32_t seq1)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:588,1
    - Dst: map_read_hdr_hashes
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - storage
    - pop3_box
    - first_seq
    argTypes:
    - struct mail_storage*
    - struct mailbox*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 583
    functionDepth: 10
    functionLinenumber: 583
    functionLinenumberEnd: 605
    functionName: pop3_map_read_hdr_hashes
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - map_read_hdr_hashes
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: "int pop3_map_read_hdr_hashes(struct mail_storage *storage, struct
      mailbox *pop3_box,\n\t\t\t unsigned int first_seq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:609,1
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:610,1
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:612,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:625,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:627,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:627,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:628,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:630,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:631,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:632,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:633,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:636,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:638,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:639,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:642,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:643,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:645,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:651,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:652,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:656,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:659,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:659,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:662,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:663,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:664,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:667,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 607
    functionDepth: 8
    functionLinenumber: 607
    functionLinenumberEnd: 669
    functionName: imap_map_read
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - mail_search_build_add_all
    - str_c
    - p_array_init
    - mailbox_get_last_internal_error
    - mail_cache_lookup_field
    - mail_get_physical_size
    - POP3_MIGRATION_CONTEXT_REQUIRE
    - t_str_new
    - array_append_space
    - mailbox_transaction_begin
    - array_is_created
    - mailbox_search_deinit
    - INDEX_STORAGE_CONTEXT
    - p_strdup_empty
    - e_error
    - mail_search_build_init
    - mailbox_transaction_commit
    - mailbox_search_init
    - i_assert
    - mailbox_get_open_status
    - str_truncate
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: int imap_map_read(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:673,1
    - Dst: map_read_hdr_hashes
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 671
    functionDepth: 10
    functionLinenumber: 671
    functionLinenumberEnd: 677
    functionName: imap_map_read_hdr_hashes
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - map_read_hdr_hashes
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int imap_map_read_hdr_hashes(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:681,1
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:683,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:692,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:693,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:695,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:696,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:705,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 716
    functionName: pop3_uidl_assign_cached
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - array_sort
    - strcmp
    - POP3_MIGRATION_CONTEXT_REQUIRE
    - array_get_modifiable
    linkageType: ''
    returnType: void
    signature: void pop3_uidl_assign_cached(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:720,1
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:722,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:728,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:729,1
    - Dst: I_MIN
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:730,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:736,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:758,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 761
    functionName: pop3_uidl_assign_by_size
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_get_modifiable
    - I_MIN
    - e_debug
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: bool
    signature: bool pop3_uidl_assign_by_size(struct mailbox *box)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:767,1
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:768,1
    - Dst: pop3_map_read_hdr_hashes
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:777,1
    - Dst: imap_map_read_hdr_hashes
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:778,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:781,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:782,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:784,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:785,1
    - Dst: memcmp
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:799,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:830,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:833,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:838,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:846,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:848,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:849,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:849,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:852,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:852,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:854,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:855,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:856,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 62
    argCount: 2
    argNames:
    - box
    - pop3_box
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 763
    functionDepth: 11
    functionLinenumber: 763
    functionLinenumberEnd: 858
    functionName: pop3_uidl_assign_by_hdr_hash
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - array_get_modifiable
    - str_append
    - e_debug
    - e_error
    - e_warning
    - imap_map_read_hdr_hashes
    - memcmp
    - pop3_map_read_hdr_hashes
    - array_sort
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int pop3_uidl_assign_by_hdr_hash(struct mailbox *box, struct mailbox
      *pop3_box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:862,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:870,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:871,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:872,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:875,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:880,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:881,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:882,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:883,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:884,1
    - Dst: mail_free
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:887,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:888,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 860
    functionDepth: 12
    functionLinenumber: 860
    functionLinenumberEnd: 889
    functionName: imap_uidls_add_to_cache
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - mail_alloc
    - mailbox_transaction_begin
    - i_unreached
    - array_get_modifiable
    - strlen
    - mail_set_uid
    - index_mail_cache_add_idx
    - INDEX_MAIL
    - mail_cache_field_can_add
    - mailbox_transaction_commit
    - mail_free
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void imap_uidls_add_to_cache(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:893,1
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:895,1
    - Dst: pop3_mailbox_alloc
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:898,1
    - Dst: imap_map_read
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:902,1
    - Dst: pop3_map_read
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:903,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:904,1
    - Dst: pop3_uidl_assign_cached
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:908,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:910,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:911,1
    - Dst: pop3_uidl_assign_by_size
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:913,1
    - Dst: pop3_uidl_assign_by_hdr_hash
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:916,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:917,1
    - Dst: imap_uidls_add_to_cache
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:923,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:926,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 891
    functionDepth: 13
    functionLinenumber: 891
    functionLinenumberEnd: 928
    functionName: pop3_migration_uidl_sync
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - pop3_map_read
    - mailbox_free
    - imap_uidls_add_to_cache
    - pop3_uidl_assign_cached
    - pop3_uidl_assign_by_size
    - pop3_mailbox_alloc
    - imap_map_read
    - array_sort
    - pop3_uidl_assign_by_hdr_hash
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int pop3_migration_uidl_sync(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:932,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:942,1
    - Dst: pop3_migration_uidl_sync
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:943,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:944,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:948,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 930
    functionDepth: 14
    functionLinenumber: 930
    functionLinenumberEnd: 953
    functionName: pop3_migration_uidl_sync_if_needed
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - event_reason_begin
    - pop3_migration_uidl_sync
    - event_reason_end
    - mail_storage_set_error
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int pop3_migration_uidl_sync_if_needed(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:960,1
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:961,1
    - Dst: pop3_migration_uidl_sync_if_needed
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:967,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:970,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:972,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:978,1
    - Dst: union mail_module_context*::super::get_special
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:983,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 955
    functionDepth: 15
    functionLinenumber: 955
    functionLinenumberEnd: 984
    functionName: pop3_migration_get_special
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - i_zero
    - union mail_module_context*::super::get_special
    - pop3_migration_uidl_sync_if_needed
    - t_strdup_printf
    - array_bsearch
    - POP3_MIGRATION_MAIL_CONTEXT
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: "int pop3_migration_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t\t   const char **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:989,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1001,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1003,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1008,1
    - Dst: MODULE_CONTEXT_SET_SELF
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1013,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1014
    functionName: pop3_migration_mail_allocated
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_get_namespace
    - mail_namespace_find
    - p_new
    - POP3_MIGRATION_CONTEXT
    - MODULE_CONTEXT_SET_SELF
    linkageType: ''
    returnType: void
    signature: void pop3_migration_mail_allocated(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1023,1
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1025,1
    - Dst: pop3_migration_uidl_sync_if_needed
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1035,1
    - Dst: struct pop3_migration_mailbox*::module_ctx::super::search_init
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1038,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 5
    argNames:
    - t
    - args
    - sort_program
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - enum mail_sort_type*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1016
    functionDepth: 15
    functionLinenumber: 1016
    functionLinenumberEnd: 1040
    functionName: pop3_migration_mailbox_search_init
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - struct pop3_migration_mailbox*::module_ctx::super::search_init
    - pop3_migration_uidl_sync_if_needed
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct mail_search_context
    signature: "struct mail_search_context *\npop3_migration_mailbox_search_init(struct
      mailbox_transaction_context *t,\n\t\t\t\t   struct mail_search_args *args,\n\t\t\t\t
      \  const enum mail_sort_type *sort_program,\n\t\t\t\t   enum mail_fetch_field
      wanted_fields,\n\t\t\t\t   struct mailbox_header_lookup_ctx *wanted_headers)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1045,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1052,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1058,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1042
    functionDepth: 1
    functionLinenumber: 1042
    functionLinenumberEnd: 1059
    functionName: pop3_migration_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - POP3_MIGRATION_CONTEXT
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void pop3_migration_mailbox_allocated(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: POP3_MIGRATION_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1064,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1066,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1067,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1069,1
    - Dst: struct pop3_migration_mail_storage*::module_ctx::super::destroy
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1070,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1071
    functionName: pop3_migration_mail_storage_destroy
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - settings_free
    - struct pop3_migration_mail_storage*::module_ctx::super::destroy
    - array_is_created
    - array_free
    - POP3_MIGRATION_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void pop3_migration_mail_storage_destroy(struct mail_storage *storage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1080,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1082,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1086,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1087,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1091,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1097,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1073
    functionDepth: 1
    functionLinenumber: 1073
    functionLinenumberEnd: 1098
    functionName: pop3_migration_mail_storage_created
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - p_new
    - e_debug
    - settings_free
    - e_error
    - MODULE_CONTEXT_SET
    - settings_get
    linkageType: ''
    returnType: void
    signature: void pop3_migration_mail_storage_created(struct mail_storage *storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1106
    functionDepth: 1
    functionLinenumber: 1106
    functionLinenumberEnd: 1109
    functionName: pop3_migration_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void pop3_migration_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c:1113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1114
    functionName: pop3_migration_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void pop3_migration_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:42,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:44,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:46,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:47,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:48,1
    - Dst: pop3_migration_get_hdr_sha1
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:48,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:49,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:49,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:49,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:50,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:51,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 10
    functionDepth: 3
    functionLinenumber: 10
    functionLinenumberEnd: 55
    functionName: test_pop3_migration_get_hdr_sha1
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - strlen
    - strcasecmp
    - pop3_migration_get_hdr_sha1
    - test_end
    - i_stream_unref
    - binary_to_hex
    - i_stream_create_from_data
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_pop3_migration_get_hdr_sha1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 7
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: NOTIFY_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOTIFY_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: NOTIFY_MAIL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOTIFY_MAIL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:23,1
    - Dst: notify_contexts_mail_expunge
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:25,1
    - Dst: union mail_module_context*::super::expunge
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 27
    functionName: notify_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - union mail_module_context*::super::expunge
    - notify_contexts_mail_expunge
    - NOTIFY_MAIL_CONTEXT
    linkageType: ''
    returnType: void
    signature: void notify_mail_expunge(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:34,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:37,1
    - Dst: union mail_module_context*::super::update_flags
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:38,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:39,1
    - Dst: notify_contexts_mail_update_flags
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _mail
    - modify_type
    - flags
    argTypes:
    - struct mail*
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 45
    functionName: notify_mail_update_flags
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - mail_get_flags
    - union mail_module_context*::super::update_flags
    - NOTIFY_MAIL_CONTEXT
    - notify_contexts_mail_update_flags
    linkageType: ''
    returnType: void
    signature: "void notify_mail_update_flags(struct mail *_mail, enum modify_type
      modify_type,\n\t\t\t enum mail_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:52,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:56,1
    - Dst: union mail_module_context*::super::update_keywords
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:57,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:58,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:61,1
    - Dst: notify_contexts_mail_update_keywords
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:68,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - _mail
    - modify_type
    - keywords
    argTypes:
    - struct mail*
    - enum modify_type
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 69
    functionName: notify_mail_update_keywords
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - strcmp
    - NOTIFY_MAIL_CONTEXT
    - notify_contexts_mail_update_keywords
    - union mail_module_context*::super::update_keywords
    linkageType: ''
    returnType: void
    signature: "void notify_mail_update_keywords(struct mail *_mail, enum modify_type
      modify_type,\n\t\t\t    struct mail_keywords *keywords)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:80,1
    - Dst: MODULE_CONTEXT_SET_SELF
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 88
    functionName: notify_mail_allocated
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET_SELF
    - p_new
    linkageType: ''
    returnType: void
    signature: void notify_mail_allocated(struct mail *_mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:94,1
    - Dst: union mailbox_module_context*::super::copy
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:97,1
    - Dst: notify_contexts_mail_save
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:104,1
    - Dst: notify_contexts_mail_copy
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 109
    functionName: notify_copy
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - NOTIFY_CONTEXT
    - notify_contexts_mail_save
    - notify_contexts_mail_copy
    - union mailbox_module_context*::super::copy
    linkageType: ''
    returnType: int
    signature: int notify_copy(struct mail_save_context *ctx, struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:115,1
    - Dst: union mailbox_module_context*::super::save_finish
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:118,1
    - Dst: notify_contexts_mail_save
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 124
    functionName: notify_save_finish
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - NOTIFY_CONTEXT
    - notify_contexts_mail_save
    - union mailbox_module_context*::super::save_finish
    linkageType: ''
    returnType: int
    signature: int notify_save_finish(struct mail_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:131,1
    - Dst: union mailbox_module_context*::super::transaction_begin
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:134,1
    - Dst: notify_contexts_mail_transaction_begin
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: notify_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - NOTIFY_CONTEXT
    - notify_contexts_mail_transaction_begin
    - union mailbox_module_context*::super::transaction_begin
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nnotify_transaction_begin(struct
      mailbox *box,\n\t\t\t enum mailbox_transaction_flags flags,\n\t\t\t const char
      *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:145,1
    - Dst: union mailbox_module_context*::super::transaction_commit
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:148,1
    - Dst: notify_contexts_mail_transaction_rollback
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:150,1
    - Dst: notify_contexts_mail_transaction_commit
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 159
    functionName: notify_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - union mailbox_module_context*::super::transaction_commit
    - NOTIFY_CONTEXT
    - notify_contexts_mail_transaction_rollback
    - notify_contexts_mail_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int notify_transaction_commit(struct mailbox_transaction_context *t,\n\t\t\t
      \ struct mail_transaction_commit_changes *changes_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:164,1
    - Dst: notify_contexts_mail_transaction_rollback
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:167,1
    - Dst: union mailbox_module_context*::super::transaction_rollback
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 169
    functionName: notify_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - notify_contexts_mail_transaction_rollback
    - NOTIFY_CONTEXT
    - union mailbox_module_context*::super::transaction_rollback
    linkageType: ''
    returnType: void
    signature: void notify_transaction_rollback(struct mailbox_transaction_context
      *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:175,1
    - Dst: union mailbox_module_context*::super::create_box
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:177,1
    - Dst: notify_contexts_mailbox_create
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 182
    functionName: notify_mailbox_create
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - NOTIFY_CONTEXT
    - union mailbox_module_context*::super::create_box
    - notify_contexts_mailbox_create
    linkageType: ''
    returnType: int
    signature: "int notify_mailbox_create(struct mailbox *box, const struct mailbox_update
      *update,\n\t\t      bool directory)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:187,1
    - Dst: union mailbox_module_context*::super::update_box
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:189,1
    - Dst: notify_contexts_mailbox_update
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 194
    functionName: notify_mailbox_update
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - NOTIFY_CONTEXT
    - union mailbox_module_context*::super::update_box
    - notify_contexts_mailbox_update
    linkageType: ''
    returnType: int
    signature: int notify_mailbox_update(struct mailbox *box, const struct mailbox_update
      *update)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:199,1
    - Dst: notify_contexts_mailbox_delete_begin
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:201,1
    - Dst: union mailbox_module_context*::super::delete_box
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:202,1
    - Dst: notify_contexts_mailbox_delete_rollback
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:203,1
    - Dst: notify_contexts_mailbox_delete_commit
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 208
    functionName: notify_mailbox_delete
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - notify_contexts_mailbox_delete_begin
    - notify_contexts_mailbox_delete_commit
    - NOTIFY_CONTEXT
    - union mailbox_module_context*::super::delete_box
    - notify_contexts_mailbox_delete_rollback
    linkageType: ''
    returnType: int
    signature: int notify_mailbox_delete(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:213,1
    - Dst: union mailbox_module_context*::super::rename_box
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:215,1
    - Dst: notify_contexts_mailbox_rename
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 220
    functionName: notify_mailbox_rename
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - union mailbox_module_context*::super::rename_box
    - NOTIFY_CONTEXT
    - notify_contexts_mailbox_rename
    linkageType: ''
    returnType: int
    signature: int notify_mailbox_rename(struct mailbox *src, struct mailbox *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NOTIFY_CONTEXT
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:225,1
    - Dst: union mailbox_module_context*::super::set_subscribed
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:227,1
    - Dst: notify_contexts_mailbox_set_subscribed
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - box
    - set
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: notify_mailbox_set_subscribed
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - notify_contexts_mailbox_set_subscribed
    - NOTIFY_CONTEXT
    - union mailbox_module_context*::super::set_subscribed
    linkageType: ''
    returnType: int
    signature: int notify_mailbox_set_subscribed(struct mailbox *box, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:239,1
    - Dst: MODULE_CONTEXT_SET_SELF
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 254
    functionName: notify_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET_SELF
    - p_new
    linkageType: ''
    returnType: void
    signature: void notify_mailbox_allocated(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: notify_plugin_init_storage
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void notify_plugin_init_storage(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/notify/notify-storage.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: notify_plugin_deinit_storage
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void notify_plugin_deinit_storage(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - t
    argTypes:
    - struct notify_context*
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 37
    functionName: notify_context_find_mail_txn
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: struct notify_mail_txn
    signature: "struct notify_mail_txn *\nnotify_context_find_mail_txn(struct notify_context
      *ctx,\n\t\t\t     struct mailbox_transaction_context *t)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:45,1
    - Dst: struct notify_context*::v::mail_transaction_begin
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:48,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 51
    functionName: notify_contexts_mail_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mail_transaction_begin
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mail_transaction_begin(struct mailbox_transaction_context
      *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notify_context_find_mail_txn
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:61,1
    - Dst: struct notify_context*::v::mail_save
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 64
    functionName: notify_contexts_mail_save
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 2
    functionsReached:
    - notify_context_find_mail_txn
    - struct notify_context*::v::mail_save
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mail_save(struct mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notify_context_find_mail_txn
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:74,1
    - Dst: struct notify_context*::v::mail_copy
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - struct mail*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 77
    functionName: notify_contexts_mail_copy
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mail_copy
    - notify_context_find_mail_txn
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mail_copy(struct mail *src, struct mail *dst)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notify_context_find_mail_txn
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:87,1
    - Dst: struct notify_context*::v::mail_expunge
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 90
    functionName: notify_contexts_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - notify_context_find_mail_txn
    - struct notify_context*::v::mail_expunge
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mail_expunge(struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: notify_context_find_mail_txn
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:104,1
    - Dst: struct notify_context*::v::mail_update_flags
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - mail
    - old_flags
    argTypes:
    - struct mail*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 107
    functionName: notify_contexts_mail_update_flags
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - notify_context_find_mail_txn
    - struct notify_context*::v::mail_update_flags
    linkageType: ''
    returnType: void
    signature: "void notify_contexts_mail_update_flags(struct mail *mail,\n\t\t\t\t
      \      enum mail_flags old_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: notify_context_find_mail_txn
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:121,1
    - Dst: struct notify_context*::v::mail_update_keywords
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - mail
    - old_keywords
    argTypes:
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 124
    functionName: notify_contexts_mail_update_keywords
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mail_update_keywords
    - notify_context_find_mail_txn
    linkageType: ''
    returnType: void
    signature: "void notify_contexts_mail_update_keywords(struct mail *mail,\n\t\t\t\t\t
      \ const char *const *old_keywords)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notify_context_find_mail_txn
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:133,1
    - Dst: struct notify_context*::v::mail_transaction_commit
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:135,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:136,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - t
    - changes
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: notify_contexts_mail_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - notify_context_find_mail_txn
    - DLLIST_REMOVE
    - i_free
    - struct notify_context*::v::mail_transaction_commit
    linkageType: ''
    returnType: void
    signature: "void notify_contexts_mail_transaction_commit(struct mailbox_transaction_context
      *t,\n\t\t\t\t\t     struct mail_transaction_commit_changes *changes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notify_context_find_mail_txn
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:147,1
    - Dst: struct notify_context*::v::mail_transaction_rollback
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:149,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:150,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 153
    functionName: notify_contexts_mail_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 2
    functionsReached:
    - notify_context_find_mail_txn
    - DLLIST_REMOVE
    - struct notify_context*::v::mail_transaction_rollback
    - i_free
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mail_transaction_rollback(struct mailbox_transaction_context
      *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct notify_context*::v::mailbox_create
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 163
    functionName: notify_contexts_mailbox_create
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mailbox_create
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mailbox_create(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct notify_context*::v::mailbox_update
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 173
    functionName: notify_contexts_mailbox_update
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mailbox_update
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mailbox_update(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct notify_context*::v::mailbox_delete_begin
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 184
    functionName: notify_contexts_mailbox_delete_begin
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mailbox_delete_begin
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mailbox_delete_begin(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct notify_context*::v::mailbox_delete_commit
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 197
    functionName: notify_contexts_mailbox_delete_commit
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mailbox_delete_commit
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mailbox_delete_commit(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct notify_context*::v::mailbox_delete_rollback
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 208
    functionName: notify_contexts_mailbox_delete_rollback
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mailbox_delete_rollback
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mailbox_delete_rollback(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct notify_context*::v::mailbox_rename
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 218
    functionName: notify_contexts_mailbox_rename
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mailbox_rename
    linkageType: ''
    returnType: void
    signature: void notify_contexts_mailbox_rename(struct mailbox *src, struct mailbox
      *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct notify_context*::v::mailbox_set_subscribed
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - box
    - subscribed
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 229
    functionName: notify_contexts_mailbox_set_subscribed
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - struct notify_context*::v::mailbox_set_subscribed
    linkageType: ''
    returnType: void
    signature: "void notify_contexts_mailbox_set_subscribed(struct mailbox *box,\n\t\t\t\t\t
      \   bool subscribed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:236,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct notify_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: notify_register
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct notify_context
    signature: 'struct notify_context *

      notify_register(const struct notify_vfuncs *v)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct notify_context*::v::mail_transaction_rollback
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:254,1
    - Dst: struct notify_context*::v::mailbox_delete_rollback
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:258,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:259,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:260,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct notify_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 261
    functionName: notify_unregister
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 1
    functionsReached:
    - i_free
    - DLLIST_REMOVE
    - struct notify_context*::v::mail_transaction_rollback
    - struct notify_context*::v::mailbox_delete_rollback
    linkageType: ''
    returnType: void
    signature: void notify_unregister(struct notify_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_plugin_init_storage
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 266
    functionName: notify_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 0
    functionsReached:
    - notify_plugin_init_storage
    linkageType: ''
    returnType: void
    signature: void notify_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_plugin_deinit_storage
      Src: /src/dovecot/src/plugins/notify/notify-plugin.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 271
    functionName: notify_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/notify/notify-plugin.c
    functionUses: 0
    functionsReached:
    - notify_plugin_deinit_storage
    linkageType: ''
    returnType: void
    signature: void notify_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: IMAP_ACL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAP_ACL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: IMAP_ACL_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAP_ACL_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:113,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:114,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:118,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:120,1
    - Dst: acl_mailbox_right_lookup
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:127,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:128,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:128,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:132,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - cmd
    - box
    - name
    argTypes:
    - struct client_command_context*
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 135
    functionName: acl_mailbox_open_as_admin
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - ACL_LIST_CONTEXT
    - client_send_tagline
    - t_strdup_printf
    - client_send_command_error
    - acl_mailbox_right_lookup
    - mailbox_exists
    linkageType: ''
    returnType: int
    signature: "int acl_mailbox_open_as_admin(struct client_command_context *cmd,\n\t\t\t
      \ struct mailbox *box, const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: acl_letter_map_find
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct acl_letter_map
    signature: 'struct acl_letter_map *

      acl_letter_map_find(const char *name)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:154,1
    - Dst: acl_letter_map_find
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:159,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:161,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:169,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:171,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:172,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:173,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - dest
    - rights
    argTypes:
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 174
    functionName: imap_acl_write_rights_list
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - str_append
    - acl_letter_map_find
    - str_append_c
    - str_len
    linkageType: ''
    returnType: void
    signature: void imap_acl_write_rights_list(string_t *dest, const char *const *rights)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:183,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:184,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:186,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:189,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:192,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:195,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:198,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:201,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:202,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:205,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:206,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:209,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:212,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:212,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:213,1
    - Dst: imap_acl_write_rights_list
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:214,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 5
    argNames:
    - dest
    - tmp
    - right
    - neg
    - utf8
    argTypes:
    - string_t*
    - string_t*
    - struct acl_rights*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 215
    functionName: imap_acl_write_right
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_append_c
    - i_unreached
    - imap_append_astring
    - str_truncate
    - str_append
    - imap_acl_write_rights_list
    linkageType: ''
    returnType: void
    signature: "void imap_acl_write_right(string_t *dest, string_t *tmp,\n\t\t     const
      struct acl_rights *right, bool neg, bool utf8)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_backend_user_name_equals
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - backend
    - rights
    argTypes:
    - struct acl_backend*
    - struct acl_rights*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 230
    functionName: acl_rights_is_owner
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - acl_backend_user_name_equals
    linkageType: ''
    returnType: bool
    signature: "bool acl_rights_is_owner(struct acl_backend *backend,\n\t\t    const
      struct acl_rights *rights)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:240,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:241,1
    - Dst: acl_rights_is_owner
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:242,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - backend
    - aclobj
    argTypes:
    - struct acl_backend*
    - struct acl_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 251
    functionName: have_positive_owner_rights
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - acl_rights_is_owner
    - acl_object_list_deinit
    - acl_object_list_init
    - acl_object_list_next
    linkageType: ''
    returnType: bool
    signature: "bool have_positive_owner_rights(struct acl_backend *backend,\n\t\t\t
      \  struct acl_object *aclobj)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:262,1
    - Dst: acl_backend_get_acl_username
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:266,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:270,1
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:271,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:272,1
    - Dst: acl_rights_is_owner
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:273,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:281,1
    - Dst: imap_acl_write_aclobj
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:282,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:292,1
    - Dst: imap_acl_write_right
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:293,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:296,1
    - Dst: imap_acl_write_right
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:297,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:300,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:304,1
    - Dst: acl_object_get_default_rights
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:311,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:313,1
    - Dst: imap_acl_write_right
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:314,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 6
    argNames:
    - dest
    - backend
    - aclobj
    - convert_owner
    - add_default
    - utf8
    argTypes:
    - string_t*
    - struct acl_backend*
    - struct acl_object*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 318
    functionName: imap_acl_write_aclobj
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 1
    functionsReached:
    - i_zero
    - t_str_new
    - str_append_c
    - acl_object_list_next
    - acl_object_list_init
    - str_len
    - imap_acl_write_right
    - acl_object_list_deinit
    - imap_acl_write_aclobj
    - acl_object_get_default_rights
    - acl_rights_is_owner
    - str_truncate
    - acl_backend_get_acl_username
    linkageType: ''
    returnType: int
    signature: "int imap_acl_write_aclobj(string_t *dest, struct acl_backend *backend,\n\t\t
      \     struct acl_object *aclobj, bool convert_owner,\n\t\t      bool add_default,
      bool utf8)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:323,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:325,1
    - Dst: imapc_mail_error_to_resp_text_code
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:327,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:328,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:329,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 332
    functionName: imapc_acl_get_mailbox_error
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mailbox_get_last_error
    - str_printfa
    - str_append
    - imapc_mail_error_to_resp_text_code
    linkageType: ''
    returnType: char
    signature: char *imapc_acl_get_mailbox_error(struct imapc_mailbox *mbox)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:339,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:343,1
    - Dst: imapc_mailbox_name_equals
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:348,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:353,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:354,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:358,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 362
    functionName: imapc_acl_myrights_untagged_cb
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_name_equals
    - str_truncate
    - str_append
    - IMAP_ACL_CONTEXT_REQUIRE
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_acl_myrights_untagged_cb(const struct imapc_untagged_reply
      *reply,\n\t\t\t\tstruct imapc_storage_client *client)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ACL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:369,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:374,1
    - Dst: imapc_mailbox_name_equals
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:379,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:385,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:386,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:387,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:388,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:389,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:390,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:393,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 399
    functionName: imapc_acl_getacl_untagged_cb
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - imapc_mailbox_name_equals
    - str_truncate
    - str_append
    - IMAP_ACL_CONTEXT_REQUIRE
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_acl_getacl_untagged_cb(const struct imapc_untagged_reply
      *reply,\n\t\t\t     struct imapc_storage_client *client)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:405,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 408
    functionName: imap_acl_cmd_context_alloc
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - p_new
    - str_new
    linkageType: ''
    returnType: struct imapc_acl_context
    signature: 'struct imapc_acl_context *

      imap_acl_cmd_context_alloc(struct imapc_mailbox *mbox)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - iacl_ctx
    - mbox
    - proxy_cmd
    argTypes:
    - struct imapc_acl_context*
    - struct imapc_mailbox*
    - enum imap_acl_cmd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 419
    functionName: imap_acl_cmd_context_init
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - str_truncate
    linkageType: ''
    returnType: void
    signature: "void imap_acl_cmd_context_init(struct imapc_acl_context *iacl_ctx,\n\t\t\t
      \ struct imapc_mailbox *mbox,\n\t\t\t  enum imap_acl_cmd proxy_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ACL_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:426,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:429,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:431,1
    - Dst: imap_acl_cmd_context_alloc
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:433,1
    - Dst: imap_acl_cmd_context_init
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - mbox
    - proxy_cmd
    argTypes:
    - struct imapc_mailbox*
    - enum imap_acl_cmd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 421
    functionDepth: 2
    functionLinenumber: 421
    functionLinenumberEnd: 439
    functionName: imap_acl_cmd_context_register
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - imap_acl_cmd_context_init
    - p_new
    - imap_acl_cmd_context_alloc
    - IMAP_ACL_CONTEXT
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: struct imapc_acl_context
    signature: "struct imapc_acl_context *\nimap_acl_cmd_context_register(struct imapc_mailbox
      *mbox,\n\t\t\t      enum imap_acl_cmd proxy_cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:450,1
    - Dst: strncmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:454,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:462,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:468,1
    - Dst: strncmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:468,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - ns
    - mailbox
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 470
    functionName: imap_acl_get_mailbox_name
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - strncmp
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: char
    signature: 'char *

      imap_acl_get_mailbox_name(const struct mail_namespace *ns, const char *mailbox)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:477,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:482,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:483,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:484,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:486,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:488,1
    - Dst: imap_acl_get_mailbox_name
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:489,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:494,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:495,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:496,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:498,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:499,1
    - Dst: imap_acl_get_mailbox_name
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:500,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:505,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:506,1
    - Dst: imap_acl_get_mailbox_name
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:507,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:510,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:511,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:515,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:516,1
    - Dst: imap_acl_get_mailbox_name
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:517,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:520,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:521,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:524,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:526,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - reply_r
    - mailbox
    - ns
    - cmd_args
    - proxy_cmd
    argTypes:
    - string_t*
    - char*
    - struct mail_namespace*
    - char*
    - enum imap_acl_cmd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 472
    functionDepth: 2
    functionLinenumber: 472
    functionLinenumberEnd: 527
    functionName: imapc_acl_prepare_cmd
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - i_unreached
    - imap_append_astring
    - str_append
    - imap_acl_get_mailbox_name
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_acl_prepare_cmd(string_t *reply_r, const char *mailbox,\n\t\t
      \     const struct mail_namespace *ns, const char *cmd_args,\n\t\t      const
      enum imap_acl_cmd proxy_cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:533,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - mbox
    argTypes:
    - struct imapc_simple_context*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 529
    functionDepth: 5
    functionLinenumber: 529
    functionLinenumberEnd: 536
    functionName: imapc_acl_simple_context_init
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - imapc_simple_context_init
    - imapc_client_cmd
    linkageType: ''
    returnType: struct imapc_command
    signature: "struct imapc_command *\nimapc_acl_simple_context_init(struct imapc_simple_context
      *ctx,\n\t\t\t      struct imapc_mailbox *mbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:543,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:544,1
    - Dst: client_send_line
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:546,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:546,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - iacl_ctx
    - orig_cmd
    - success_tagged_reply
    argTypes:
    - struct imapc_acl_context*
    - struct client_command_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 549
    functionName: imapc_acl_send_client_reply
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - client_send_line
    - client_send_tagline
    - str_c
    - str_len
    linkageType: ''
    returnType: void
    signature: "void imapc_acl_send_client_reply(struct imapc_acl_context *iacl_ctx,\n\t\t\t
      \   struct client_command_context *orig_cmd,\n\t\t\t    const char *success_tagged_reply)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:562,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:567,1
    - Dst: IMAPC_HAS_FEATURE
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:568,1
    - Dst: imap_acl_cmd_context_register
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:574,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:577,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:579,1
    - Dst: imapc_acl_simple_context_init
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:583,1
    - Dst: imapc_acl_prepare_cmd
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:586,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:589,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:590,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:594,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:595,1
    - Dst: imapc_acl_get_mailbox_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:596,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:602,1
    - Dst: imapc_acl_send_client_reply
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:605,1
    - Dst: imapc_acl_send_client_reply
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:610,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:615,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:618,1
    - Dst: imapc_storage_client_unregister_untagged
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:623,1
    - Dst: imapc_storage_client_unregister_untagged
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:625,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 6
    argNames:
    - box
    - mailbox
    - cmd_args
    - ns
    - orig_cmd
    - proxy_cmd
    argTypes:
    - struct mailbox*
    - char*
    - char*
    - struct mail_namespace*
    - struct client_command_context*
    - enum imap_acl_cmd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 551
    functionDepth: 6
    functionLinenumber: 551
    functionLinenumberEnd: 628
    functionName: imap_acl_proxy_cmd
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - IMAPC_HAS_FEATURE
    - imapc_simple_run
    - i_unreached
    - imapc_command_send
    - imapc_storage_client_unregister_untagged
    - client_send_tagline
    - t_strdup_printf
    - imapc_acl_prepare_cmd
    - imapc_acl_simple_context_init
    - imapc_acl_send_client_reply
    - imap_acl_cmd_context_register
    - imapc_acl_get_mailbox_error
    - IMAPC_MAILBOX
    - imapc_storage_client_register_untagged
    linkageType: ''
    returnType: bool
    signature: "bool imap_acl_proxy_cmd(struct mailbox *box, const char *mailbox,\n\t\t
      \  const char *cmd_args, const struct mail_namespace *ns,\n\t\t   struct client_command_context
      *orig_cmd,\n\t\t   const enum imap_acl_cmd proxy_cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_object_get_my_rights
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:638,1
    - Dst: acl_mailbox_get_aclobj
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:638,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:639,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:644,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:647,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:648,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:649,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:650,1
    - Dst: imap_acl_write_rights_list
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:651,1
    - Dst: client_send_line
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:653,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - cmd
    - box
    - mutf7_mailbox
    argTypes:
    - struct client_command_context*
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 630
    functionDepth: 4
    functionLinenumber: 630
    functionLinenumberEnd: 655
    functionName: imap_acl_send_myrights
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - imap_append_astring
    - client_send_line
    - pool_datastack_create
    - acl_mailbox_get_aclobj
    - str_append
    - acl_object_get_my_rights
    - imap_acl_write_rights_list
    linkageType: ''
    returnType: int
    signature: "int imap_acl_send_myrights(struct client_command_context *cmd,\n\t\t
      \      struct mailbox *box, const char *mutf7_mailbox)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_mailbox_open_as_admin
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:666,1
    - Dst: acl_mailbox_list_get_backend
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:669,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:671,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:672,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:673,1
    - Dst: imap_acl_write_aclobj
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:675,1
    - Dst: acl_mailbox_get_aclobj
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:676,1
    - Dst: client_send_line
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:680,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:680,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:681,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:683,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - box
    - ns
    - mailbox
    - cmd
    argTypes:
    - struct mailbox*
    - struct mail_namespace*
    - char*
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 657
    functionDepth: 4
    functionLinenumber: 657
    functionLinenumberEnd: 685
    functionName: imap_acl_cmd_getacl
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - acl_mailbox_open_as_admin
    - t_str_new
    - str_c
    - acl_mailbox_list_get_backend
    - client_send_tagline
    - imap_acl_write_aclobj
    - imap_append_astring
    - client_send_line
    - acl_mailbox_get_aclobj
    - str_append
    linkageType: ''
    returnType: void
    signature: "void imap_acl_cmd_getacl(struct mailbox *box, struct mail_namespace
      *ns,\n\t\t\t\tconst char *mailbox,\n\t\t\t\tstruct client_command_context *cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_find_namespace
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:693,1
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:697,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:698,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:698,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cmd
    - mailbox
    argTypes:
    - struct client_command_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 687
    functionDepth: 3
    functionLinenumber: 687
    functionLinenumberEnd: 705
    functionName: imap_acl_find_namespace
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - ACL_LIST_CONTEXT
    - client_find_namespace
    - client_send_tagline
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nimap_acl_find_namespace(struct client_command_context
      *cmd,\n\t\t\tconst char **mailbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:713,1
    - Dst: imap_acl_find_namespace
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:717,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:721,1
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:724,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:725,1
    - Dst: imap_acl_proxy_cmd
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:728,1
    - Dst: imap_acl_cmd_getacl
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:730,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:731,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 707
    functionDepth: 7
    functionLinenumber: 707
    functionLinenumberEnd: 733
    functionName: cmd_getacl
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 1
    functionsReached:
    - ACL_LIST_CONTEXT
    - mailbox_free
    - imap_acl_find_namespace
    - client_read_string_args
    - imap_acl_proxy_cmd
    - client_send_command_error
    - mailbox_alloc
    - imap_acl_cmd_getacl
    linkageType: ''
    returnType: bool
    signature: bool cmd_getacl(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_acl_send_myrights
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:741,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:743,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:747,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:747,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - box
    - mailbox
    - cmd
    argTypes:
    - struct mailbox*
    - char*
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 735
    functionDepth: 5
    functionLinenumber: 735
    functionLinenumberEnd: 754
    functionName: imap_acl_cmd_myrights
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - imap_acl_send_myrights
    - client_send_tagline
    linkageType: ''
    returnType: void
    signature: "void imap_acl_cmd_myrights(struct mailbox *box, const char *mailbox,\n\t\t
      \     struct client_command_context *cmd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:762,1
    - Dst: ACL_USER_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:766,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:767,1
    - Dst: imap_acl_find_namespace
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:771,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:775,1
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:778,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:779,1
    - Dst: imap_acl_proxy_cmd
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:782,1
    - Dst: imap_acl_cmd_myrights
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:784,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:785,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 756
    functionDepth: 7
    functionLinenumber: 756
    functionLinenumberEnd: 787
    functionName: cmd_myrights
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 1
    functionsReached:
    - ACL_LIST_CONTEXT
    - mailbox_free
    - ACL_USER_CONTEXT
    - imap_acl_find_namespace
    - client_read_string_args
    - imap_acl_cmd_myrights
    - imap_acl_proxy_cmd
    - client_send_command_error
    - mailbox_alloc
    linkageType: ''
    returnType: bool
    signature: bool cmd_myrights(struct client_command_context *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_read_string_args
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:797,1
    - Dst: imap_acl_find_namespace
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:801,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:805,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:808,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:809,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:810,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:811,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:812,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:813,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:814,1
    - Dst: client_send_line
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:816,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:816,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:817,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:818,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 789
    functionDepth: 5
    functionLinenumber: 789
    functionLinenumberEnd: 820
    functionName: cmd_listrights
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mailbox_free
    - str_append_c
    - imap_acl_find_namespace
    - client_read_string_args
    - client_send_tagline
    - imap_append_astring
    - client_send_line
    - mailbox_alloc
    - str_append
    linkageType: ''
    returnType: bool
    signature: bool cmd_listrights(struct client_command_context *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:830,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:833,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:837,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:847,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:848,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:851,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:852,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:855,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:861,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:862,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - letters
    - rights_r
    - client_error_r
    argTypes:
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 864
    functionName: imap_acl_letters_parse
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - t_strdup_printf
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: int
    signature: "int imap_acl_letters_parse(const char *letters, const char *const
      **rights_r,\n\t\t\tconst char **client_error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:875,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:877,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:882,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:884,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:885,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:890,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:896,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:903,1
    - Dst: str_begins
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:905,1
    - Dst: str_begins
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:907,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 5
    argNames:
    - cmd
    - id
    - rights
    - check_anyone
    - client_error_r
    argTypes:
    - struct client_command_context*
    - char*
    - struct acl_rights*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 915
    functionName: imap_acl_identifier_parse
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - str_begins
    - t_strdup_printf
    - settings_free
    - e_error
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int imap_acl_identifier_parse(struct client_command_context *cmd,\n\t\t\t
      \ const char *id, struct acl_rights *rights,\n\t\t\t  bool check_anyone, const
      char **client_error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:925,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:928,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:930,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:932,1
    - Dst: have_positive_owner_rights
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:937,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:943,1
    - Dst: acl_object_get_default_rights
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:944,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:946,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:954,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:961,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:966,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:967,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 3
    argNames:
    - backend
    - aclobj
    - update
    argTypes:
    - struct acl_backend*
    - struct acl_object*
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 917
    functionDepth: 3
    functionLinenumber: 917
    functionLinenumberEnd: 968
    functionName: imap_acl_update_ensure_keep_admins
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - have_positive_owner_rights
    - array_push_back
    - acl_object_get_default_rights
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: void
    signature: "void imap_acl_update_ensure_keep_admins(struct acl_backend *backend,\n\t\t\t\t
      \  struct acl_object *aclobj,\n\t\t\t\t   struct acl_rights_update *update)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:978,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:979,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:983,1
    - Dst: acl_mailbox_update_acl
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:985,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - box
    - update
    - client_error_r
    argTypes:
    - struct mailbox*
    - struct acl_rights_update*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 970
    functionDepth: 4
    functionLinenumber: 970
    functionLinenumberEnd: 990
    functionName: cmd_acl_mailbox_update
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 2
    functionsReached:
    - acl_mailbox_update_acl
    - mailbox_get_last_error
    - mailbox_open
    - mailbox_transaction_begin
    - mailbox_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int cmd_acl_mailbox_update(struct mailbox *box,\n\t\t\tconst struct
      acl_rights_update *update,\n\t\t\tconst char **client_error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1004,1
    - Dst: imap_acl_identifier_parse
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1024,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1026,1
    - Dst: imap_acl_letters_parse
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1029,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1031,1
    - Dst: acl_mailbox_open_as_admin
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1036,1
    - Dst: acl_mailbox_list_get_backend
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1039,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1042,1
    - Dst: acl_mailbox_get_aclobj
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1046,1
    - Dst: acl_backend_user_name_equals
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1055,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1057,1
    - Dst: acl_backend_get_acl_username
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1057,1
    - Dst: imap_acl_update_ensure_keep_admins
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1061,1
    - Dst: cmd_acl_mailbox_update
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1064,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1065,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1066,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1068,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 6
    argNames:
    - box
    - ns
    - mailbox
    - identifier
    - rights
    - cmd
    argTypes:
    - struct mailbox*
    - struct mail_namespace*
    - char*
    - char*
    - char*
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 992
    functionDepth: 4
    functionLinenumber: 992
    functionLinenumberEnd: 1069
    functionName: imap_acl_cmd_setacl
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - i_zero
    - acl_mailbox_open_as_admin
    - strcmp
    - acl_mailbox_list_get_backend
    - client_send_tagline
    - imap_acl_letters_parse
    - cmd_acl_mailbox_update
    - t_strdup_printf
    - client_send_command_error
    - imap_acl_identifier_parse
    - acl_mailbox_get_aclobj
    - imap_acl_update_ensure_keep_admins
    - acl_backend_get_acl_username
    - acl_backend_user_name_equals
    linkageType: ''
    returnType: void
    signature: "void imap_acl_cmd_setacl(struct mailbox *box, struct mail_namespace
      *ns,\n\t\t    const char *mailbox, const char *identifier,\n\t\t    const char
      *rights, struct client_command_context *cmd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1077,1
    - Dst: client_read_string_args
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1079,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1084,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1089,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1090,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1092,1
    - Dst: imap_acl_find_namespace
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1094,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1098,1
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1100,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1101,1
    - Dst: imap_acl_proxy_cmd
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1104,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1104,1
    - Dst: imap_acl_cmd_setacl
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1106,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1109,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1071
    functionDepth: 7
    functionLinenumber: 1071
    functionLinenumberEnd: 1111
    functionName: cmd_setacl
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - ACL_LIST_CONTEXT
    - str_append_c
    - mailbox_free
    - imap_acl_find_namespace
    - client_read_string_args
    - imap_acl_proxy_cmd
    - imap_append_astring
    - imap_acl_cmd_setacl
    - client_send_command_error
    - mailbox_alloc
    linkageType: ''
    returnType: bool
    signature: bool cmd_setacl(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1121,1
    - Dst: imap_acl_identifier_parse
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1129,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1131,1
    - Dst: acl_mailbox_open_as_admin
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1135,1
    - Dst: cmd_acl_mailbox_update
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1138,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1139,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1140,1
    - Dst: client_send_tagline
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - box
    - mailbox
    - identifier
    - cmd
    argTypes:
    - struct mailbox*
    - char*
    - char*
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1113
    functionDepth: 4
    functionLinenumber: 1113
    functionLinenumberEnd: 1144
    functionName: imap_acl_cmd_deleteacl
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - i_zero
    - acl_mailbox_open_as_admin
    - cmd_acl_mailbox_update
    - client_send_tagline
    - t_strdup_printf
    - client_send_command_error
    - imap_acl_identifier_parse
    linkageType: ''
    returnType: void
    signature: "void imap_acl_cmd_deleteacl(struct mailbox *box, const char *mailbox,\n\t\t
      \      const char *identifier,\n\t\t       struct client_command_context *cmd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1152,1
    - Dst: client_read_string_args
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1154,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1159,1
    - Dst: imap_acl_find_namespace
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1163,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1168,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1170,1
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1173,1
    - Dst: client_send_command_error
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1174,1
    - Dst: imap_acl_proxy_cmd
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1177,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1177,1
    - Dst: imap_acl_cmd_deleteacl
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1179,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_command_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1146
    functionDepth: 7
    functionLinenumber: 1146
    functionLinenumberEnd: 1182
    functionName: cmd_deleteacl
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - ACL_LIST_CONTEXT
    - mailbox_free
    - imap_acl_find_namespace
    - client_read_string_args
    - imap_acl_proxy_cmd
    - imap_append_astring
    - imap_acl_cmd_deleteacl
    - client_send_command_error
    - mailbox_alloc
    linkageType: ''
    returnType: bool
    signature: bool cmd_deleteacl(struct client_command_context *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1202,1
    - Dst: ACL_USER_CONTEXT
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1206,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1211,1
    - Dst: imap_acl_send_myrights
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1213,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1214,1
    - Dst: client_send_line
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1217,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1217,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - cmd
    - ATTR_UNUSED
    - params
    argTypes:
    - struct client_command_context*
    - void*
    - struct imap_list_return_flag_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1184
    functionDepth: 5
    functionLinenumber: 1184
    functionLinenumberEnd: 1220
    functionName: list_return_flag_myrights_send
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - ACL_USER_CONTEXT
    - client_send_line
    - imap_acl_send_myrights
    - mailbox_alloc
    - i_assert
    - t_strflocaltime
    linkageType: ''
    returnType: void
    signature: "void list_return_flag_myrights_send(\n\tstruct client_command_context
      *cmd, void *context ATTR_UNUSED,\n\tconst struct imap_list_return_flag_params
      *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_is_plugin_loaded
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1229,1
    - Dst: client_add_capability
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1230,1
    - Dst: client_add_capability
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1231,1
    - Dst: client_add_capability
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1232,1
    - Dst: next_hook_client_created
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1227
    functionDepth: 2
    functionLinenumber: 1227
    functionLinenumberEnd: 1237
    functionName: imap_acl_client_created
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - next_hook_client_created
    - client_add_capability
    - mail_user_is_plugin_loaded
    linkageType: ''
    returnType: void
    signature: void imap_acl_client_created(struct client **client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: command_register
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1241,1
    - Dst: command_register
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1242,1
    - Dst: command_register
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1243,1
    - Dst: command_register
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1244,1
    - Dst: command_register
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1245,1
    - Dst: imap_list_return_flag_register
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1246,1
    - Dst: imap_client_created_hook_set
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1239
    functionDepth: 2
    functionLinenumber: 1239
    functionLinenumberEnd: 1251
    functionName: imap_acl_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - imap_list_return_flag_register
    - command_register
    - imap_client_created_hook_set
    linkageType: ''
    returnType: void
    signature: void imap_acl_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: command_unregister
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1255,1
    - Dst: command_unregister
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1256,1
    - Dst: command_unregister
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1257,1
    - Dst: command_unregister
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1258,1
    - Dst: command_unregister
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1259,1
    - Dst: imap_list_return_flag_unregister
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1260,1
    - Dst: imap_client_created_hook_set
      Src: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c:1262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1253
    functionDepth: 2
    functionLinenumber: 1253
    functionLinenumberEnd: 1263
    functionName: imap_acl_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    functionUses: 0
    functionsReached:
    - imap_client_created_hook_set
    - imap_list_return_flag_unregister
    - command_unregister
    linkageType: ''
    returnType: void
    signature: void imap_acl_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: TRASH_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRASH_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: TRASH_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRASH_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:114,1
    - Dst: TRASH_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:116,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:118,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tclean
    - ctx
    argTypes:
    - struct trash_clean*
    - struct quota_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: trash_clean_init
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - i_zero
    - event_set_append_log_prefix
    - event_create
    - TRASH_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: "void trash_clean_init(struct trash_clean *tclean,\n\t\t struct quota_transaction_context
      *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:127,1
    - Dst: quota_root_get_name
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:129,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:134,1
    - Dst: quota_root_get_name
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:136,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - tclean
    - tcroot
    argTypes:
    - struct trash_clean*
    - struct trash_clean_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 141
    functionName: trash_clean_root_no_trash
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - e_debug
    - quota_root_get_name
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void trash_clean_root_no_trash(struct trash_clean *tclean,\n\t\t\t
      \ struct trash_clean_root *tcroot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:148,1
    - Dst: quota_root_get_name
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:152,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:157,1
    - Dst: quota_root_get_name
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:161,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - tclean
    - tcroot
    argTypes:
    - struct trash_clean*
    - struct trash_clean_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 166
    functionName: trash_clean_root_insufficient
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - e_debug
    - quota_root_get_name
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void trash_clean_root_insufficient(struct trash_clean *tclean,\n\t\t\t
      \     struct trash_clean_root *tcroot)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:175,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:178,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:180,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:181,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:182,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:186,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - tcbox
    argTypes:
    - struct trash_clean_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 189
    functionName: trash_clean_mailbox_open
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - mail_search_build_add_all
    - mailbox_transaction_begin
    - mailbox_sync
    - mail_search_build_init
    - mailbox_search_init
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: int trash_clean_mailbox_open(struct trash_clean_mailbox *tcbox)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:194,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:196,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - tcbox
    argTypes:
    - struct trash_clean_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: trash_clean_mailbox_close
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_search_deinit
    - mailbox_transaction_rollback
    linkageType: ''
    returnType: void
    signature: void trash_clean_mailbox_close(struct trash_clean_mailbox *tcbox)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: trash_clean_mailbox_open
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:212,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:214,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:223,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - tcbox
    - received_time_r
    argTypes:
    - struct trash_clean_mailbox*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 226
    functionName: trash_clean_mailbox_get_next
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - mail_get_received_date
    - mailbox_search_next
    - trash_clean_mailbox_open
    linkageType: ''
    returnType: int
    signature: "int trash_clean_mailbox_get_next(struct trash_clean_mailbox *tcbox,\n\t\t\t
      \    time_t *received_time_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - tcroot
    argTypes:
    - struct trash_clean_root*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: trash_clean_root_achieved
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool trash_clean_root_achieved(const struct trash_clean_root *tcroot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:240,1
    - Dst: trash_clean_root_achieved
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tclean
    argTypes:
    - struct trash_clean*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 245
    functionName: trash_clean_achieved
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - array_foreach
    - trash_clean_root_achieved
    linkageType: ''
    returnType: bool
    signature: bool trash_clean_achieved(struct trash_clean *tclean)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:254,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:260,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:263,1
    - Dst: trash_clean_root_achieved
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - tcbox
    argTypes:
    - struct trash_clean_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 284
    functionName: trash_clean_mailbox_expunge
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - array_foreach
    - mail_get_physical_size
    - mail_expunge
    - trash_clean_root_achieved
    linkageType: ''
    returnType: int
    signature: int trash_clean_mailbox_expunge(struct trash_clean_mailbox *tcbox)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:299,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:300,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:303,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:307,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:326,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:331,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:337,1
    - Dst: array_lsearch_ptr
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:341,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:352,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:353,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:356,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:357,1
    - Dst: quota_root_is_visible
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:361,1
    - Dst: array_append
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:364,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:367,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:370,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:377,1
    - Dst: trash_clean_root_no_trash
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:382,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:389,1
    - Dst: trash_clean_mailbox_get_next
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:403,1
    - Dst: trash_clean_mailbox_expunge
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:416,1
    - Dst: trash_clean_achieved
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:419,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:428,1
    - Dst: trash_clean_root_achieved
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:429,1
    - Dst: trash_clean_root_insufficient
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:430,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 89
    argCount: 2
    argNames:
    - tclean
    - overruns
    argTypes:
    - struct trash_clean*
    - struct quota_overrun*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 436
    functionName: trash_clean_do_execute
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - array_append_space
    - mailbox_open
    - trash_clean_mailbox_get_next
    - trash_clean_achieved
    - array_get_modifiable
    - array_get
    - array_lsearch_ptr
    - trash_clean_root_insufficient
    - array_append
    - array_count
    - t_array_init
    - mailbox_alloc
    - array_foreach_modifiable
    - trash_clean_mailbox_expunge
    - trash_clean_root_no_trash
    - quota_root_is_visible
    - trash_clean_root_achieved
    linkageType: ''
    returnType: int
    signature: "int trash_clean_do_execute(struct trash_clean *tclean,\n\t\t       const
      struct quota_overrun *overruns)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:449,1
    - Dst: trash_clean_do_execute
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:451,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:454,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:460,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:463,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:464,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:467,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:469,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:472,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:478,1
    - Dst: quota_transaction_root_expunged
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:479,1
    - Dst: quota_transaction_update_expunged
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:483,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - tclean
    - overruns
    argTypes:
    - struct trash_clean*
    - struct quota_overrun*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 438
    functionDepth: 4
    functionLinenumber: 438
    functionLinenumberEnd: 485
    functionName: trash_clean_execute
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - trash_clean_do_execute
    - quota_transaction_update_expunged
    - mailbox_transaction_rollback
    - array_get_modifiable
    - event_reason_begin
    - mailbox_sync
    - event_reason_end
    - mailbox_search_deinit
    - mailbox_transaction_commit
    - array_foreach_modifiable
    - quota_transaction_root_expunged
    linkageType: ''
    returnType: int
    signature: "int trash_clean_execute(struct trash_clean *tclean,\n\t\t    const
      struct quota_overrun *overruns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:491,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:492,1
    - Dst: trash_clean_mailbox_close
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:493,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tclean
    argTypes:
    - struct trash_clean*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 496
    functionName: trash_clean_deinit
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - event_unref
    - trash_clean_mailbox_close
    linkageType: ''
    returnType: void
    signature: void trash_clean_deinit(struct trash_clean *tclean)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:504,1
    - Dst: trash_clean_init
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:509,1
    - Dst: trash_clean_execute
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:510,1
    - Dst: trash_clean_deinit
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - overruns
    argTypes:
    - struct quota_transaction_context*
    - struct quota_overrun*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 498
    functionDepth: 5
    functionLinenumber: 498
    functionLinenumberEnd: 512
    functionName: trash_try_clean_mails
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - trash_clean_init
    - trash_clean_deinit
    - i_assert
    - trash_clean_execute
    linkageType: ''
    returnType: int
    signature: "int trash_try_clean_mails(struct quota_transaction_context *ctx,\n\t\t
      \     const struct quota_overrun *overruns)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: trash_next_quota_test_alloc
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:529,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:536,1
    - Dst: trash_try_clean_mails
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:552,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:553,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:558,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 6
    argNames:
    - ctx
    - size
    - expunged_box
    - expunged_size
    - overruns_r
    - error_r
    argTypes:
    - struct quota_transaction_context*
    - uoff_t
    - struct mailbox*
    - uoff_t
    - struct quota_overrun**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 517
    functionDepth: 6
    functionLinenumber: 517
    functionLinenumberEnd: 561
    functionName: trash_quota_test_alloc
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - trash_next_quota_test_alloc
    - t_strdup_printf
    - e_debug
    - trash_try_clean_mails
    linkageType: ''
    returnType: enum quota_alloc_result
    signature: "enum quota_alloc_result trash_quota_test_alloc(struct quota_transaction_context
      *ctx, uoff_t size,\n\t\t       struct mailbox *expunged_box, uoff_t expunged_size,\n\t\t
      \      const struct quota_overrun **overruns_r,\n\t\t       const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:570,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - struct trash_mailbox*
    - struct trash_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 571
    functionName: trash_mailbox_priority_cmp
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int trash_mailbox_priority_cmp(const struct trash_mailbox *t1,\n\t\t\t\t
      \     const struct trash_mailbox *t2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TRASH_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:576,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:578,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:582,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:588,1
    - Dst: mailbox_settings_get_vname
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:593,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:596,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:598,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:601,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ns
    - mbox_event
    - error_r
    argTypes:
    - struct mail_namespace*
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 603
    functionName: trash_try_mailbox
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_settings_get_vname
    - p_strdup
    - array_append_space
    - settings_free
    - TRASH_USER_CONTEXT_REQUIRE
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int trash_try_mailbox(struct mail_namespace *ns, struct event *mbox_event,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TRASH_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:607,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:613,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:615,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:618,1
    - Dst: mail_storage_mailbox_create_event
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:620,1
    - Dst: trash_try_mailbox
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:621,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:622,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:623,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:626,1
    - Dst: array_sort
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:630,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 605
    functionDepth: 2
    functionLinenumber: 605
    functionLinenumberEnd: 632
    functionName: trash_find_mailboxes
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - trash_try_mailbox
    - event_unref
    - p_array_init
    - array_foreach_elem
    - mail_storage_mailbox_create_event
    - array_is_empty
    - TRASH_USER_CONTEXT_REQUIRE
    - array_sort
    linkageType: ''
    returnType: int
    signature: int trash_find_mailboxes(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_USER_CONTEXT
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:637,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:641,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:644,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 647
    functionName: trash_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - e_error
    - QUOTA_USER_CONTEXT
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void trash_mail_user_created(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TRASH_USER_CONTEXT
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:653,1
    - Dst: trash_find_mailboxes
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:657,1
    - Dst: QUOTA_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:658,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - namespaces
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 649
    functionDepth: 3
    functionLinenumber: 649
    functionLinenumberEnd: 663
    functionName: trash_mail_namespaces_created
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - trash_find_mailboxes
    - QUOTA_USER_CONTEXT_REQUIRE
    - TRASH_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void trash_mail_namespaces_created(struct mail_namespace *namespaces)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 670
    functionDepth: 1
    functionLinenumber: 670
    functionLinenumberEnd: 673
    functionName: trash_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void trash_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/trash/trash-plugin.c:677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 678
    functionName: trash_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/trash/trash-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void trash_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: MAIL_CRYPT_ACL_LIST_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CRYPT_ACL_LIST_CONTEXT(obj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:44,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:45,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:47,1
    - Dst: str_array_find
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:48,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:52,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - aclobj
    - username
    - error_r
    argTypes:
    - struct acl_object*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 58
    functionName: mail_crypt_acl_has_user_read_right
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - acl_object_list_deinit
    - acl_object_list_init
    - acl_object_list_next
    - str_array_find
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_acl_has_user_read_right(struct acl_object *aclobj,\n\t\t\t\t
      \  const char *username,\n\t\t\t\t   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_object_list_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:67,1
    - Dst: acl_object_list_next
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:68,1
    - Dst: str_array_find
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:72,1
    - Dst: acl_object_list_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:77,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - aclobj
    - error_r
    argTypes:
    - struct acl_object*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 82
    functionName: mail_crypt_acl_has_nonuser_read_right
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - str_array_find
    - acl_object_list_deinit
    - acl_object_list_init
    - acl_object_list_next
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_acl_has_nonuser_read_right(struct acl_object *aclobj,\n\t\t\t\t\t\t
      const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:90,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:94,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:95,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:97,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:98,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:102,1
    - Dst: mail_crypt_box_get_pvt_digests
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:103,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:103,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:105,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:108,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:113,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:116,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:119,1
    - Dst: mail_crypt_box_unset_shared_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:123,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:131,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:132,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:133,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:135,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:136,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 4
    argNames:
    - src_box
    - dest_user
    - type
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - enum mail_attribute_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 140
    functionName: mail_crypt_acl_unset_private_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - mail_crypt_box_unset_shared_key
    - strchr
    - mailbox_free
    - mailbox_open
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - array_foreach_elem
    - mailbox_transaction_rollback
    - t_strdup_printf
    - pool_datastack_create
    - t_array_init
    - mail_crypt_box_get_pvt_digests
    - ARRAY_TYPE
    - mailbox_get_vname
    - mailbox_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_acl_unset_private_keys(struct mailbox *src_box,\n\t\t\t\t
      \ const char *dest_user,\n\t\t\t\t  enum mail_attribute_type type,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_user_get_service_ctx
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:153,1
    - Dst: mail_storage_service_user_get_input
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:154,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:156,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - user
    - dest_username
    - dest_user_r
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - struct mail_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 169
    functionName: mail_crypt_acl_user_create
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_storage_service_user_get_input
    - mail_storage_service_user_get_service_ctx
    - mail_storage_service_lookup_next
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_acl_user_create(struct mail_user *user, const char
      *dest_username,\n\t\t\t   struct mail_user **dest_user_r,\n\t\t\t   const char
      **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_acl_unset_private_keys
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:182,1
    - Dst: mail_crypt_user_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:190,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:193,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:206,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:207,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:210,1
    - Dst: mail_crypt_box_get_private_keys
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:213,1
    - Dst: mail_crypt_box_share_private_keys
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:214,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:220,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:223,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:224,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:227,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:228,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 5
    argNames:
    - src_box
    - dest_user
    - set
    - disallow_insecure
    - error_r
    argTypes:
    - struct mailbox*
    - struct mail_user*
    - bool
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 233
    functionName: mail_crypt_acl_update_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - array_foreach_elem
    - t_strdup_printf
    - mail_crypt_box_get_private_keys
    - mail_crypt_user_get_public_key
    - dcrypt_key_unref_private
    - t_array_init
    - mail_crypt_box_share_private_keys
    - ARRAY_TYPE
    - mailbox_transaction_commit
    - dcrypt_key_unref_public
    - mail_crypt_acl_unset_private_keys
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_acl_update_private_key(struct mailbox *src_box,\n\t\t\t\t
      \ struct mail_user *dest_user, bool set,\n\t\t\t\t  bool disallow_insecure,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:240,1
    - Dst: struct mail_crypt_acl_mailbox_list*::acl_vprev::object_update
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:249,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:252,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:254,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:258,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:260,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:262,1
    - Dst: mail_crypt_acl_has_user_read_right
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:269,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:272,1
    - Dst: mail_crypt_acl_user_create
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:280,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:284,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:289,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:290,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:291,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:293,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:294,1
    - Dst: mail_crypt_acl_update_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:295,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:299,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:301,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:307,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:309,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:310,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:311,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:323,1
    - Dst: mail_crypt_acl_has_nonuser_read_right
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:333,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:334,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:335,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:336,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:338,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:339,1
    - Dst: mail_crypt_acl_update_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:340,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:345,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:347,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:351,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:354,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 2
    argNames:
    - aclobj
    - update
    argTypes:
    - struct acl_object*
    - struct acl_rights_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 356
    functionName: mail_crypt_acl_object_update
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - mail_user_deinit
    - mailbox_get_last_internal_error
    - mailbox_alloc
    - mailbox_free
    - i_unreached
    - MAIL_CRYPT_ACL_LIST_CONTEXT
    - mail_crypt_acl_has_nonuser_read_right
    - mail_crypt_acl_has_user_read_right
    - struct mail_crypt_acl_mailbox_list*::acl_vprev::object_update
    - mail_storage_service_io_activate_user
    - e_error
    - mail_crypt_acl_user_create
    - mailbox_list_get_vname
    - mailbox_get_vname
    - i_assert
    - io_loop_context_deactivate
    - mailbox_open
    - settings_free
    - io_loop_get_current_context
    - settings_get
    - mail_crypt_acl_update_private_key
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_acl_object_update(struct acl_object *aclobj,\n\t\t\t\t\tconst
      struct acl_rights_update *update)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:361,1
    - Dst: MAIL_CRYPT_ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 377
    functionName: mail_crypt_acl_mail_namespace_storage_added
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - ACL_LIST_CONTEXT
    - MAIL_CRYPT_ACL_LIST_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_crypt_acl_mail_namespace_storage_added(struct mail_namespace
      *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_ACL_LIST_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:382,1
    - Dst: struct mail_crypt_acl_mailbox_list*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 385
    functionName: mail_crypt_acl_mailbox_list_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - struct mail_crypt_acl_mailbox_list*::module_ctx::super::deinit
    - MAIL_CRYPT_ACL_LIST_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_crypt_acl_mailbox_list_deinit(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:392,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 398
    functionName: mail_crypt_acl_mailbox_list_created
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void mail_crypt_acl_mailbox_list_created(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: mail_crypt_acl_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void mail_crypt_acl_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 413
    functionName: mail_crypt_acl_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void mail_crypt_acl_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 10
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/crypt-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/crypt-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/crypt-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:22,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:24,1
    - Dst: t_base64_decode_str
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:24,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:25,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:27,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:33,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:37,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:38,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - set_key
    - file
    - global_keys
    - error_r
    argTypes:
    - char*
    - struct settings_file*
    - struct mail_crypt_global_keys*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 43
    functionName: mail_crypt_load_global_public_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c
    functionUses: 0
    functionsReached:
    - str_c
    - dcrypt_key_load_public
    - t_strdup_printf
    - t_base64_decode_str
    - dcrypt_key_string_get_info
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_load_global_public_key(const char *set_key,\n\t\t\t\t
      \     const struct settings_file *file,\n\t\t\t\t      struct mail_crypt_global_keys
      *global_keys,\n\t\t\t\t      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:57,1
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:58,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:59,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:62,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:64,1
    - Dst: dcrypt_key_type_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:67,1
    - Dst: dcrypt_key_id_private_old
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:70,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:71,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - key
    - key_id_r
    - key_id_old_r
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 77
    functionName: mail_crypt_key_get_ids
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c
    functionUses: 0
    functionsReached:
    - dcrypt_key_id_private
    - t_strdup_printf
    - t_buffer_create
    - buffer_set_used_size
    - dcrypt_key_type_private
    - binary_to_hex
    - dcrypt_key_id_private_old
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_key_get_ids(struct dcrypt_private_key *key,\n\t\t\tconst
      char **key_id_r, const char **key_id_old_r,\n\t\t\tconst char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:91,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:93,1
    - Dst: t_base64_decode_str
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:93,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:94,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:96,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:103,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:113,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:121,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:122,1
    - Dst: mail_crypt_key_get_ids
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:129,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:130,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:135,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:137,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:138,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 5
    argNames:
    - set_key
    - file
    - key_password
    - global_keys
    - error_r
    argTypes:
    - char*
    - struct settings_file*
    - char*
    - struct mail_crypt_global_keys*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 140
    functionName: mail_crypt_load_global_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c
    functionUses: 0
    functionsReached:
    - str_c
    - array_append_space
    - t_strdup_printf
    - dcrypt_key_unref_private
    - i_strdup
    - t_base64_decode_str
    - mail_crypt_key_get_ids
    - dcrypt_key_load_private
    - dcrypt_key_string_get_info
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_load_global_private_key(const char *set_key,\n\t\t\t\t
      \      const struct settings_file *file,\n\t\t\t\t       const char *key_password,\n\t\t\t\t
      \      struct mail_crypt_global_keys *global_keys,\n\t\t\t\t       const char
      **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_global_keys_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:151,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:153,1
    - Dst: mail_crypt_load_global_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:155,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:161,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:163,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:164,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:168,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:173,1
    - Dst: mail_crypt_load_global_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:175,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:179,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:182,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - event
    - set
    - global_keys_r
    - error_r
    argTypes:
    - struct event*
    - struct crypt_settings*
    - struct mail_crypt_global_keys*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 185
    functionName: mail_crypt_global_keys_load
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c
    functionUses: 0
    functionsReached:
    - mail_crypt_load_global_public_key
    - array_foreach_elem
    - mail_crypt_global_keys_init
    - t_strdup_printf
    - settings_free
    - settings_get_filter
    - array_is_created
    - settings_file_get
    - mail_crypt_load_global_private_key
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_global_keys_load(struct event *event,\n\t\t\t\tconst
      struct crypt_settings *set,\n\t\t\t\tstruct mail_crypt_global_keys *global_keys_r,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:189,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - global_keys_r
    argTypes:
    - struct mail_crypt_global_keys*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 191
    functionName: mail_crypt_global_keys_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_array_init
    linkageType: ''
    returnType: void
    signature: void mail_crypt_global_keys_init(struct mail_crypt_global_keys *global_keys_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:198,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:200,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:202,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:203,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:204,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:205,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - global_keys
    argTypes:
    - struct mail_crypt_global_keys*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 208
    functionName: mail_crypt_global_keys_free
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c
    functionUses: 0
    functionsReached:
    - dcrypt_key_unref_private
    - array_free
    - dcrypt_key_unref_public
    - array_is_created
    - i_free
    - array_foreach_modifiable
    linkageType: ''
    returnType: void
    signature: void mail_crypt_global_keys_free(struct mail_crypt_global_keys *global_keys)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:216,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:219,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:220,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c:223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - global_keys
    - pubkey_digest
    argTypes:
    - struct mail_crypt_global_keys*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 227
    functionName: mail_crypt_global_key_find
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_is_created
    - array_foreach
    linkageType: ''
    returnType: struct dcrypt_private_key
    signature: "struct dcrypt_private_key *\nmail_crypt_global_key_find(struct mail_crypt_global_keys
      *global_keys,\n\t\t\t   const char *pubkey_digest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: p_as_null_terminated_array
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: char
    signature: 'char *const *

      p_as_null_terminated_array(pool_t pool, const char *value)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_user_get_service_ctx
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:85,1
    - Dst: mail_storage_service_user_get_input
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:86,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:88,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:89,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:91,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - user
    - dest_username
    - dest_user_r
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - struct mail_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 106
    functionName: mcp_user_create
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_storage_service_user_get_service_ctx
    - io_loop_get_current_context
    - mail_storage_service_lookup_next
    - mail_storage_service_user_get_input
    - io_loop_context_deactivate
    linkageType: ''
    returnType: int
    signature: "int mcp_user_create(struct mail_user *user, const char *dest_username,\n\t\tstruct
      mail_user **dest_user_r,\n\t\tconst char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:121,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:123,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:127,1
    - Dst: mcp_user_create
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:129,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:133,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:134,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:137,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:141,1
    - Dst: mail_crypt_user_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:145,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:148,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:160,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:161,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:162,1
    - Dst: mail_crypt_box_share_private_keys
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:163,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:171,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:172,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:174,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:176,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:177,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:179,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 5
    argNames:
    - t
    - user
    - target_uid
    - key
    - error_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_user*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 182
    functionName: mcp_update_shared_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_io_deactivate_user
    - i_assert
    - mail_user_deinit
    - array_push_back
    - mcp_user_create
    - t_strdup_printf
    - settings_free
    - mail_storage_service_io_activate_user
    - mail_crypt_user_get_public_key
    - e_error
    - t_array_init
    - mail_crypt_box_share_private_keys
    - ARRAY_TYPE
    - io_loop_get_current_context
    - settings_get
    - io_loop_context_deactivate
    linkageType: ''
    returnType: int
    signature: "int mcp_update_shared_key(struct mailbox_transaction_context *t,\n\t\t
      \     struct mail_user *user, const char *target_uid,\n\t\t      struct dcrypt_private_key
      *key, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:191,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:192,1
    - Dst: mail_crypt_box_get_pvt_digests
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:195,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:195,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:198,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:205,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:208,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:213,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:214,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:215,1
    - Dst: t_strcut
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:216,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:217,1
    - Dst: mcp_update_shared_key
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:218,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:218,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:220,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:222,1
    - Dst: mail_crypt_box_set_shared_key
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:228,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:230,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:240,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:241,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:242,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - ctx
    - box
    - user
    - pubid
    - key
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox*
    - struct mail_user*
    - char*
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 247
    functionName: mcp_update_shared_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - mcp_update_shared_key
    - mailbox_transaction_begin
    - array_foreach_elem
    - mailbox_transaction_rollback
    - hex_to_binary
    - mail_crypt_box_set_shared_key
    - e_error
    - pool_datastack_create
    - mail_crypt_box_get_pvt_digests
    - t_array_init
    - ARRAY_TYPE
    - str_truncate
    - mailbox_transaction_commit
    - t_strcut
    linkageType: ''
    returnType: int
    signature: "int mcp_update_shared_keys(struct doveadm_mail_cmd_context *ctx,\n\t\t\t\t
      \ struct mailbox *box, struct mail_user *user,\n\t\t\t\t  const char *pubid,
      struct dcrypt_private_key *key)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_box_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:258,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:261,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:262,1
    - Dst: dcrypt_key_id_public
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:264,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:267,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:271,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:271,1
    - Dst: mail_crypt_box_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:283,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:287,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:294,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:296,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 6
    argNames:
    - ctx
    - user_key
    - box
    - pair_r
    - pubid_r
    - error_r
    argTypes:
    - struct mcp_cmd_context*
    - struct dcrypt_public_key*
    - struct mailbox*
    - struct dcrypt_keypair*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 299
    functionName: mcp_keypair_generate
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - mail_crypt_box_generate_keypair
    - e_info
    - t_str_new
    - p_strdup
    - dcrypt_key_unref_public
    - dcrypt_key_id_public
    - dcrypt_key_unref_private
    - e_error
    - mail_crypt_box_get_public_key
    - binary_to_hex
    linkageType: ''
    returnType: int
    signature: "int mcp_keypair_generate(struct mcp_cmd_context *ctx,\n\t\t\t\tstruct
      dcrypt_public_key *user_key,\n\t\t\t\tstruct mailbox *box, struct dcrypt_keypair
      *pair_r,\n\t\t\t\tconst char **pubid_r, const char **error_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:306,1
    - Dst: mail_crypt_user_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:315,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:319,1
    - Dst: mail_crypt_user_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:323,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:326,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:330,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:332,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:335,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:337,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:343,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:350,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:352,1
    - Dst: dcrypt_key_id_public
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:353,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:356,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:359,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:362,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:364,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:366,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:369,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:373,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:375,1
    - Dst: mail_crypt_user_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:377,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:380,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:384,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:386,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:391,1
    - Dst: p_as_null_terminated_array
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:399,1
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:403,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:409,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:415,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:417,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:418,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:419,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:421,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:422,1
    - Dst: mcp_keypair_generate
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:423,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:426,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:427,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:429,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:434,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:435,1
    - Dst: mcp_update_shared_keys
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:439,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:443,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:445,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:448,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 94
    argCount: 3
    argNames:
    - _ctx
    - user
    - result
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 301
    functionDepth: 4
    functionLinenumber: 301
    functionLinenumberEnd: 449
    functionName: mcp_keypair_generate_run
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - mailbox_get_last_internal_error
    - mail_crypt_user_generate_keypair
    - dcrypt_key_id_public
    - mailbox_alloc
    - mcp_update_shared_keys
    - t_str_new
    - mailbox_free
    - array_append_space
    - binary_to_hex
    - mcp_keypair_generate
    - e_error
    - mailbox_list_iter_init_namespaces
    - dcrypt_key_unref_public
    - e_info
    - container_of
    - mailbox_open
    - mailbox_list_iter_next
    - mail_crypt_user_get_public_key
    - dcrypt_key_unref_private
    - p_as_null_terminated_array
    linkageType: ''
    returnType: int
    signature: "int mcp_keypair_generate_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\t
      \   struct mail_user *user,\n\t\t\t\t    ARRAY_TYPE(generated_keys) *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:460,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:461,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 463
    functionName: cmd_mcp_keypair_generate_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header
    linkageType: ''
    returnType: void
    signature: void cmd_mcp_keypair_generate_init(struct doveadm_mail_cmd_context
      *ctx ATTR_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:470,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:472,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:473,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:474,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:475,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:479,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:480,1
    - Dst: mcp_keypair_generate_run
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:482,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:487,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:489,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:493,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:495,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:497,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:497,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:499,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:503,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 465
    functionDepth: 5
    functionLinenumber: 465
    functionLinenumberEnd: 507
    functionName: cmd_mcp_keypair_generate_run
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - mcp_keypair_generate_run
    - container_of
    - doveadm_print
    - p_array_init
    - t_strdup_printf
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - array_foreach
    - e_warning
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: "int cmd_mcp_keypair_generate_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\t\tstruct
      mail_user *user)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:520,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:521,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:526,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:528,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:530,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:532,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:535,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:538,1
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:541,1
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:548,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:551,1
    - Dst: callback
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:554,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:557,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:558,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:560,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:561,1
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:567,1
    - Dst: p_as_null_terminated_array
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:569,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:576,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:581,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:584,1
    - Dst: array_clear
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:585,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:588,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:591,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:594,1
    - Dst: mail_crypt_box_get_pvt_digests
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:595,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:595,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:598,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:603,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:606,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:611,1
    - Dst: callback
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:615,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:619,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:622,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 3
    argNames:
    - ctx
    - user
    - context
    argTypes:
    - struct mcp_cmd_context*
    - struct mail_user*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 623
    functionName: mcp_key_list
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_alloc
    - callback
    - mail_namespace_find_inbox
    - mailbox_free
    - array_foreach_elem
    - mailbox_attribute_iter_next
    - mailbox_attribute_iter_deinit
    - i_zero
    - mailbox_attribute_iter_init
    - e_error
    - mailbox_attribute_get
    - pool_datastack_create
    - mailbox_list_iter_init_namespaces
    - array_clear
    - mailbox_get_vname
    - strcmp
    - mailbox_list_iter_deinit
    - mailbox_list_iter_next
    - t_array_init
    - p_as_null_terminated_array
    - ARRAY_TYPE
    - mail_crypt_box_get_pvt_digests
    linkageType: ''
    returnType: void
    signature: "void mcp_key_list(struct mcp_cmd_context *ctx,\n\t\t\tstruct mail_user
      *user,\n\t\t\tvoid(*callback)(const struct generated_key *, void *),\n\t\t\tvoid
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:628,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:629,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _key
    - context
    argTypes:
    - struct generated_key*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 632
    functionName: cmd_mcp_key_list_cb
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void cmd_mcp_key_list_cb(const struct generated_key *_key, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:637,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:638,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 640
    functionName: cmd_mcp_key_list_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header
    linkageType: ''
    returnType: void
    signature: void cmd_mcp_key_list_init(struct doveadm_mail_cmd_context *_ctx ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:647,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:649,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:650,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:653,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:655,1
    - Dst: mcp_key_list
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:657,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:660,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:661,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:662,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:663,1
    - Dst: e_warning
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 642
    functionDepth: 2
    functionLinenumber: 642
    functionLinenumberEnd: 672
    functionName: cmd_mcp_key_list_run
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - doveadm_print
    - p_array_init
    - mcp_key_list
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - array_foreach
    - e_warning
    linkageType: ''
    returnType: int
    signature: "int cmd_mcp_key_list_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\tstruct
      mail_user *user)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:685,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:686,1
    - Dst: mail_crypt_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:688,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:692,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:692,1
    - Dst: doveadm_print_empty
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:693,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:695,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:696,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:698,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:698,1
    - Dst: doveadm_print_empty
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:699,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:703,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:703,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:703,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:705,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - key
    - ATTR_UNUSED
    argTypes:
    - struct generated_key*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 707
    functionName: cmd_mcp_key_export_cb
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - doveadm_print
    - doveadm_print_empty
    - mail_crypt_get_private_key
    - t_strdup_printf
    - dcrypt_key_store_private
    - dcrypt_key_unref_private
    linkageType: ''
    returnType: void
    signature: "void cmd_mcp_key_export_cb(const struct generated_key *key,\n\t\t\t\t
      \ void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:711,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:712,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:713,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 715
    functionName: cmd_mcp_key_export_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header
    linkageType: ''
    returnType: void
    signature: void cmd_mcp_key_export_init(struct doveadm_mail_cmd_context *_ctx
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:722,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:724,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:725,1
    - Dst: mcp_key_list
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 717
    functionDepth: 2
    functionLinenumber: 717
    functionLinenumberEnd: 730
    functionName: cmd_mcp_key_export_run
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - mcp_key_list
    - doveadm_cmd_param_str
    - container_of
    - doveadm_cmd_param_flag
    linkageType: ''
    returnType: int
    signature: "int cmd_mcp_key_export_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\t
      \ struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 736
    functionName: cmd_mcp_key_password_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_mcp_key_password_init(struct doveadm_mail_cmd_context *_ctx
      ATTR_UNUSED)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:743,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:747,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:748,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:749,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:750,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:751,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:763,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:768,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:773,1
    - Dst: t_askpass
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:773,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:778,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:783,1
    - Dst: t_askpass
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:788,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:789,1
    - Dst: t_askpass
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:789,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:790,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:794,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:799,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:801,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:808,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:810,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:813,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:815,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:816,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:817,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:818,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:818,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:819,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:820,1
    - Dst: t_array_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:825,1
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:829,1
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:837,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:839,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:843,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:845,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:845,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:846,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:847,1
    - Dst: array_append_space
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:851,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:852,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:853,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:854,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:860,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:867,1
    - Dst: array_foreach
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:869,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:872,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:875,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:875,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:884,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:886,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:890,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:890,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:897,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:900,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:901,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:904,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:906,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:906,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:907,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:909,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:918,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:920,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:921,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:921,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:922,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:923,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:925,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:925,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:931,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:932,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 108
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 935
    functionName: cmd_mcp_key_password_run
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - dcrypt_key_store_private
    - mailbox_alloc
    - mail_namespace_find_inbox
    - t_str_new
    - mailbox_free
    - array_append_space
    - mailbox_transaction_begin
    - doveadm_cmd_param_flag
    - mailbox_attribute_iter_next
    - mailbox_attribute_iter_deinit
    - i_zero
    - mailbox_transaction_rollback
    - mailbox_attribute_iter_init
    - e_error
    - mailbox_attribute_get
    - mailbox_get_vname
    - mailbox_transaction_commit
    - dcrypt_key_load_private
    - strcmp
    - container_of
    - doveadm_print
    - mailbox_open
    - t_askpass
    - mailbox_attribute_set
    - settings_free
    - doveadm_cmd_param_str
    - array_foreach
    - dcrypt_key_unref_private
    - t_array_init
    - str_truncate
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int cmd_mcp_key_password_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\t
      \   struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:941,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 946
    functionName: cmd_mcp_keypair_generate_alloc
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mcp_keypair_generate_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:952,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 957
    functionName: cmd_mcp_key_list_alloc
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mcp_key_list_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:963,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 959
    functionDepth: 1
    functionLinenumber: 959
    functionLinenumberEnd: 968
    functionName: cmd_mcp_key_export_alloc
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mcp_key_export_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:974,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 979
    functionName: cmd_mcp_key_password_alloc
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mcp_key_password_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:1032,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:1033,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:1034,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c:1035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1036
    functionName: doveadm_mail_crypt_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_crypt_plugin_init(struct module *mod ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1038
    functionDepth: 0
    functionLinenumber: 1038
    functionLinenumberEnd: 1040
    functionName: doveadm_mail_crypt_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_crypt_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: CRYPT_FS
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRYPT_FS(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: CRYPT_FILE
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CRYPT_FILE(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: fs_crypt_alloc
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs
    signature: struct fs *fs_crypt_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FS
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:61,1
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:64,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:65,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:67,1
    - Dst: fs_init_parent
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _fs
    - params
    - error_r
    argTypes:
    - struct fs*
    - struct fs_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 57
    functionDepth: 7
    functionLinenumber: 57
    functionLinenumberEnd: 72
    functionName: fs_crypt_init_
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_init_parent
    - i_fatal
    - CRYPT_FS
    - settings_get
    - dcrypt_initialize
    linkageType: ''
    returnType: int
    signature: "int fs_crypt_init_(struct fs *_fs, const struct fs_parameters *params,\n\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FS
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:76,1
    - Dst: mail_crypt_global_keys_free
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:78,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:79,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 81
    functionName: fs_crypt_free
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - CRYPT_FS
    - i_free
    - mail_crypt_global_keys_free
    - settings_free
    linkageType: ''
    returnType: void
    signature: void fs_crypt_free(struct fs *_fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: fs_crypt_file_alloc
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct fs_file
    signature: struct fs_file *fs_crypt_file_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FS
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:93,1
    - Dst: CRYPT_FILE
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:94,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:96,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:101,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:103,1
    - Dst: fs_file_init_parent
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - _file
    - path
    - mode
    - flags
    argTypes:
    - struct fs_file*
    - char*
    - enum fs_open_mode
    - enum fs_open_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 3
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: fs_crypt_file_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - CRYPT_FILE
    - i_strdup
    - fs_file_init_parent
    - CRYPT_FS
    linkageType: ''
    returnType: void
    signature: "void fs_crypt_file_init(struct fs_file *_file, const char *path,\n\t\t
      \  enum fs_open_mode mode, enum fs_open_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FILE
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:118,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:121,1
    - Dst: fs_file_free
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:122,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:123,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 125
    functionName: fs_crypt_file_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_free
    - i_free
    - CRYPT_FILE
    linkageType: ''
    returnType: void
    signature: void fs_crypt_file_deinit(struct fs_file *_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FILE
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:129,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:131,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:132,1
    - Dst: fs_file_close
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 134
    functionName: fs_crypt_file_close
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_file_close
    - CRYPT_FILE
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void fs_crypt_file_close(struct fs_file *_file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FILE
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:139,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:141,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _file
    - key
    - value
    argTypes:
    - struct fs_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 144
    functionName: fs_crypt_set_metadata
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_set_metadata
    - CRYPT_FILE
    linkageType: ''
    returnType: void
    signature: "void fs_crypt_set_metadata(struct fs_file *_file,\n\t\t\t\t  const
      char *key, const char *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_global_keys_load
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fs
    - error_r
    argTypes:
    - struct crypt_fs*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 4
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: fs_crypt_load_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - mail_crypt_global_keys_load
    linkageType: ''
    returnType: int
    signature: int fs_crypt_load_keys(struct crypt_fs *fs, const char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_crypt_load_keys
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:165,1
    - Dst: mail_crypt_global_key_find
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:168,1
    - Dst: dcrypt_key_ref_private
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - pubkey_digest
    - priv_key_r
    - error_r
    - context
    argTypes:
    - char*
    - struct dcrypt_private_key**
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 158
    functionDepth: 5
    functionLinenumber: 158
    functionLinenumberEnd: 173
    functionName: fs_crypt_istream_get_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_crypt_load_keys
    - dcrypt_key_ref_private
    - mail_crypt_global_key_find
    linkageType: ''
    returnType: int
    signature: "int fs_crypt_istream_get_key(const char *pubkey_digest,\n\t\t\t struct
      dcrypt_private_key **priv_key_r,\n\t\t\t const char **error_r, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FILE
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:178,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:182,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:183,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:187,1
    - Dst: I_MAX
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:188,1
    - Dst: i_stream_create_decrypt_callback
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:192,1
    - Dst: i_stream_create_noop
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:195,1
    - Dst: istream_try_create
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:203,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:204,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:204,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:205,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:206,1
    - Dst: i_stream_create_decrypt_callback
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:208,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:211,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - _file
    - max_buffer_size
    argTypes:
    - struct fs_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 214
    functionName: fs_crypt_read_stream
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - i_stream_create_noop
    - istream_try_create
    - i_stream_set_name
    - i_stream_ref
    - I_MAX
    - CRYPT_FILE
    - i_stream_seek
    - i_stream_unref
    - fs_read_stream
    - i_stream_create_decrypt_callback
    - i_stream_get_name
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      fs_crypt_read_stream(struct fs_file *_file, size_t max_buffer_size)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FILE
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:218,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:222,1
    - Dst: fs_crypt_load_keys
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:224,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:225,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:231,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:232,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:233,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:237,1
    - Dst: strstr
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:243,1
    - Dst: strstr
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:244,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:245,1
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:253,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:255,1
    - Dst: o_stream_create_encrypt
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:256,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct fs_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 259
    functionName: fs_crypt_write_stream
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_write_stream
    - str_begins_with
    - o_stream_create_error_str
    - e_debug
    - fs_crypt_load_keys
    - CRYPT_FILE
    - o_stream_create_encrypt
    - fs_file_path
    - iostream_temp_create_named
    - i_assert
    - strstr
    linkageType: ''
    returnType: void
    signature: void fs_crypt_write_stream(struct fs_file *_file)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CRYPT_FILE
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:263,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:271,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:276,1
    - Dst: fs_write_stream_abort_error
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:277,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:279,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:280,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:282,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:289,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:290,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:294,1
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:295,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:299,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:300,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:301,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:302,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:303,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - _file
    - success
    argTypes:
    - struct fs_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 261
    functionDepth: 5
    functionLinenumber: 261
    functionLinenumberEnd: 305
    functionName: fs_crypt_write_stream_finish
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - fs_write_stream
    - o_stream_get_error
    - iostream_temp_finish
    - o_stream_unref
    - o_stream_nsend_istream
    - CRYPT_FILE
    - fs_write_stream_abort_error
    - fs_write_stream_finish_async
    - i_assert
    - o_stream_destroy
    - fs_write_stream_finish
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int fs_crypt_write_stream_finish(struct fs_file *_file, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_class_register
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 352
    functionName: fs_crypt_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_class_register
    linkageType: ''
    returnType: void
    signature: void fs_crypt_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_class_unregister
      Src: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 357
    functionName: fs_crypt_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_class_unregister
    linkageType: ''
    returnType: void
    signature: void fs_crypt_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: MAIL_CRYPT_MAIL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CRYPT_MAIL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: MAIL_CRYPT_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CRYPT_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: MAIL_CRYPT_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CRYPT_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: MAIL_CRYPT_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_CRYPT_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:64,1
    - Dst: memcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 74
    functionName: mail_crypt_is_stream_encrypted
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - i_stream_read_data
    - memcmp
    linkageType: ''
    returnType: void
    signature: void mail_crypt_is_stream_encrypted(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:80,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:81,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - muser
    argTypes:
    - struct mail_crypt_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: mail_crypt_cache_close
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_stream_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mail_crypt_cache_close(struct mail_crypt_user *muser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:91,1
    - Dst: mail_crypt_cache_close
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:93,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:98,1
    - Dst: i_stream_create_seekable_path
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:99,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:100,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:101,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:102,1
    - Dst: timeout_add
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:105,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - muser
    - mail
    - input
    argTypes:
    - struct mail_crypt_user*
    - struct mail*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 116
    functionName: mail_crypt_cache_open
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_stream_create_seekable_path
    - mail_user_set_get_temp_prefix
    - timeout_add
    - i_stream_create_limit
    - i_stream_get_max_buffer_size
    - mail_crypt_cache_close
    - i_stream_unref
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\nmail_crypt_cache_open(struct mail_crypt_user *muser,
      struct mail *mail,\n\t\t      struct istream *input)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:124,1
    - Dst: MAIL_CRYPT_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:128,1
    - Dst: mail_crypt_global_key_find
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:130,1
    - Dst: dcrypt_key_ref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:133,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:137,1
    - Dst: mail_crypt_box_get_shared_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:140,1
    - Dst: mail_crypt_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:144,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - pubkey_digest
    - priv_key_r
    - error_r
    - context
    argTypes:
    - char*
    - struct dcrypt_private_key**
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 156
    functionName: mail_crypt_istream_get_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_get_namespace
    - mail_crypt_get_private_key
    - MAIL_CRYPT_USER_CONTEXT_REQUIRE
    - mail_crypt_box_get_shared_key
    - i_assert
    - dcrypt_key_ref_private
    - mail_crypt_global_key_find
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_istream_get_private_key(const char *pubkey_digest,\n\t\t\t
      \  struct dcrypt_private_key **priv_key_r,\n\t\t\t   const char **error_r,\n\t\t\t
      \  void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:163,1
    - Dst: MAIL_CRYPT_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:165,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:171,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:172,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:173,1
    - Dst: union mail_module_context*::super::istream_opened
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:174,1
    - Dst: mail_crypt_is_stream_encrypted
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:179,1
    - Dst: union mail_module_context*::super::istream_opened
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:180,1
    - Dst: i_stream_create_decrypt_callback
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:183,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:185,1
    - Dst: mail_crypt_cache_open
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:187,1
    - Dst: union mail_module_context*::super::istream_opened
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - _mail
    - stream
    argTypes:
    - struct mail*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 189
    functionName: mail_crypt_istream_opened
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - mail_crypt_cache_open
    - i_stream_create_limit
    - MAIL_CRYPT_USER_CONTEXT_REQUIRE
    - i_stream_create_decrypt_callback
    - i_stream_seek
    - i_stream_unref
    - MAIL_CRYPT_MAIL_CONTEXT
    - mail_crypt_is_stream_encrypted
    - union mail_module_context*::super::istream_opened
    linkageType: ''
    returnType: int
    signature: int mail_crypt_istream_opened(struct mail *_mail, struct istream **stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:194,1
    - Dst: MAIL_CRYPT_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:196,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:205,1
    - Dst: mail_crypt_cache_close
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:206,1
    - Dst: union mail_module_context*::super::close
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:208,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 209
    functionName: mail_crypt_close
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - union mail_module_context*::super::close
    - MAIL_CRYPT_USER_CONTEXT_REQUIRE
    - mail_crypt_cache_close
    - i_stream_get_size
    - MAIL_CRYPT_MAIL_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_crypt_close(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:214,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:221,1
    - Dst: MODULE_CONTEXT_SET_SELF
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 228
    functionName: mail_crypt_mail_allocated
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET_SELF
    - MAIL_CRYPT_USER_CONTEXT
    - p_new
    linkageType: ''
    returnType: void
    signature: void mail_crypt_mail_allocated(struct mail *_mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:233,1
    - Dst: union mailbox_module_context*::super::save_finish
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:236,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:242,1
    - Dst: mail_crypt_is_stream_encrypted
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:245,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 251
    functionName: mail_crypt_mail_save_finish
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - union mailbox_module_context*::super::save_finish
    - MAIL_CRYPT_CONTEXT
    - mail_get_stream
    - mail_crypt_is_stream_encrypted
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int mail_crypt_mail_save_finish(struct mail_save_context *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:259,1
    - Dst: MAIL_CRYPT_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:260,1
    - Dst: strstr
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:264,1
    - Dst: strstr
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:265,1
    - Dst: strstr
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:266,1
    - Dst: struct mail_crypt_mailbox*::module_ctx::super::save_begin
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:273,1
    - Dst: mail_crypt_box_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:288,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:294,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:296,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:297,1
    - Dst: mail_crypt_box_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:302,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:304,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:306,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:307,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:312,1
    - Dst: o_stream_create_encrypt
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:319,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:322,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:324,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 326
    functionName: mail_crypt_mail_save_begin
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - mail_crypt_box_generate_keypair
    - mail_storage_set_error
    - o_stream_unref
    - MAIL_CRYPT_USER_CONTEXT
    - t_strdup_printf
    - o_stream_cork
    - dcrypt_key_unref_private
    - o_stream_create_encrypt
    - struct mail_crypt_mailbox*::module_ctx::super::save_begin
    - MAIL_CRYPT_CONTEXT
    - mailbox_get_vname
    - mail_crypt_box_get_public_key
    - strstr
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_mail_save_begin(struct mail_save_context *ctx,\n\t\t\t
      \  struct istream *input)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:332,1
    - Dst: MAIL_CRYPT_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:334,1
    - Dst: mailbox_backends_equal
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:337,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:340,1
    - Dst: struct mail_crypt_mailbox*::module_ctx::super::copy
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:355,1
    - Dst: mail_storage_copy
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:356,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 357
    functionName: mail_crypt_mailbox_copy
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_storage_copy
    - MAIL_CRYPT_USER_CONTEXT
    - MAIL_CRYPT_CONTEXT
    - struct mail_crypt_mailbox*::module_ctx::super::copy
    - mailbox_backends_equal
    linkageType: ''
    returnType: int
    signature: int mail_crypt_mailbox_copy(struct mail_save_context *ctx, struct mail
      *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:361,1
    - Dst: MAIL_CRYPT_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:363,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:366,1
    - Dst: mail_crypt_cache_close
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:368,1
    - Dst: struct mail_crypt_mailbox*::module_ctx::super::close
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 359
    functionDepth: 2
    functionLinenumber: 359
    functionLinenumberEnd: 370
    functionName: mail_crypt_mailbox_close
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - MAIL_CRYPT_USER_CONTEXT
    - mail_crypt_cache_close
    - struct mail_crypt_mailbox*::module_ctx::super::close
    - MAIL_CRYPT_CONTEXT
    - dcrypt_key_unref_public
    linkageType: ''
    returnType: void
    signature: void mail_crypt_mailbox_close(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:376,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:380,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 395
    functionName: mail_crypt_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - MAIL_CRYPT_USER_CONTEXT
    - p_new
    linkageType: ''
    returnType: void
    signature: void mail_crypt_mailbox_allocated(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_CRYPT_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:399,1
    - Dst: mail_crypt_key_cache_destroy
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:401,1
    - Dst: mail_crypt_global_keys_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:402,1
    - Dst: mail_crypt_cache_close
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:403,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:404,1
    - Dst: struct mail_crypt_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 406
    functionName: mail_crypt_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - mail_crypt_global_keys_free
    - settings_free
    - MAIL_CRYPT_USER_CONTEXT_REQUIRE
    - mail_crypt_key_cache_destroy
    - mail_crypt_cache_close
    - struct mail_crypt_user*::module_ctx::super::deinit
    linkageType: ''
    returnType: void
    signature: void mail_crypt_mail_user_deinit(struct mail_user *user)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:414,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:418,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:420,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:424,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:426,1
    - Dst: dcrypt_name2oid
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:428,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:429,1
    - Dst: mail_crypt_global_keys_load
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:435,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:437,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:442,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 408
    functionDepth: 4
    functionLinenumber: 408
    functionLinenumberEnd: 443
    functionName: mail_crypt_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - p_strdup
    - p_new
    - e_debug
    - MODULE_CONTEXT_SET
    - settings_get
    - mail_crypt_global_keys_load
    - p_strdup_printf
    - dcrypt_name2oid
    linkageType: ''
    returnType: void
    signature: void mail_crypt_mail_user_created(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:461,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:462,1
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:463,1
    - Dst: mail_storage_hooks_add_forced
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:469,1
    - Dst: mail_crypt_key_register_mailbox_internal_attributes
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 472
    functionName: mail_crypt_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - mail_crypt_key_register_mailbox_internal_attributes
    - i_fatal
    - mail_storage_hooks_add_forced
    - mail_storage_hooks_add
    - dcrypt_initialize
    linkageType: ''
    returnType: void
    signature: void mail_crypt_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:476,1
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 478
    functionName: mail_crypt_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void mail_crypt_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_class_register
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:42,1
    - Dst: fs_class_register
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:43,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 46
    functionName: test_setup
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
    functionUses: 5
    functionsReached:
    - fs_class_register
    - settings_info_register
    linkageType: ''
    returnType: void
    signature: void test_setup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:50,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:64,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:65,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:66,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:68,1
    - Dst: random_fill
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:71,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:73,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:75,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:76,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:76,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:77,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:78,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:80,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:82,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:83,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:86,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:88,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:89,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:96,1
    - Dst: memcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:97,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:98,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:100,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:101,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:102,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 48
    functionDepth: 7
    functionLinenumber: 48
    functionLinenumberEnd: 105
    functionName: test_fs_crypt_read_write
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - i_stream_get_data
    - test_assert
    - fs_write_stream
    - random_fill
    - buffer_append
    - fs_deinit
    - i_fatal
    - i_stream_skip
    - test_end
    - settings_simple_deinit
    - test_begin
    - settings_simple_init
    - i_unlink_if_exists
    - fs_read_stream
    - i_stream_read
    - fs_file_init
    - fs_init_auto
    - t_buffer_create
    - o_stream_finish
    - o_stream_send
    - memcmp
    - i_stream_unref
    - fs_write_stream_finish
    linkageType: ''
    returnType: void
    signature: void test_fs_crypt_read_write(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:109,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:123,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:124,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:125,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:127,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:130,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:132,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:132,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:133,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:134,1
    - Dst: stat
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:138,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:139,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:140,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:142,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:145,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:148,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:149,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:151,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:152,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:153,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 107
    functionDepth: 7
    functionLinenumber: 107
    functionLinenumberEnd: 156
    functionName: test_fs_crypt_read_write_0
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - stat
    - test_assert
    - fs_write_stream
    - fs_deinit
    - i_fatal
    - test_end
    - settings_simple_deinit
    - test_begin
    - settings_simple_init
    - i_unlink_if_exists
    - fs_read_stream
    - i_stream_read
    - i_stream_unref
    - fs_file_init
    - fs_init_auto
    - o_stream_finish
    - test_assert_ucmp
    - fs_write_stream_finish
    linkageType: ''
    returnType: void
    signature: void test_fs_crypt_read_write_0(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:160,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:175,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:176,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:177,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:179,1
    - Dst: memset
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:183,1
    - Dst: random_fill
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:184,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:186,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:187,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:188,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:188,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:189,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:189,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:190,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:191,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:193,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:195,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:196,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:199,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:201,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:202,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:208,1
    - Dst: memcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:209,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:210,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:212,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:213,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:214,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:227,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:228,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:229,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:231,1
    - Dst: random_fill
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:233,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:235,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:236,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:237,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:238,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:238,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:239,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:240,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:242,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:244,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:245,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:247,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:249,1
    - Dst: buffer_append
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:250,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:255,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:256,1
    - Dst: memcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:257,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:258,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:260,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:261,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:262,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:264,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 158
    functionDepth: 7
    functionLinenumber: 158
    functionLinenumberEnd: 265
    functionName: test_fs_crypt_read_write_unencrypted
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - i_stream_get_data
    - test_assert
    - fs_write_stream
    - random_fill
    - buffer_append
    - fs_deinit
    - i_fatal
    - i_stream_skip
    - test_end
    - settings_simple_deinit
    - test_begin
    - settings_simple_init
    - i_unlink_if_exists
    - fs_read_stream
    - memset
    - i_stream_read
    - fs_file_init
    - fs_init_auto
    - t_buffer_create
    - o_stream_finish
    - o_stream_send
    - memcmp
    - i_stream_unref
    - fs_write_stream_finish
    linkageType: ''
    returnType: void
    signature: void test_fs_crypt_read_write_unencrypted(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: test_teardown
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
    functionUses: 5
    functionsReached:
    - i_unlink_if_exists
    linkageType: ''
    returnType: void
    signature: void test_teardown(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:278,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 284
    functionName: test_init_dcrypt
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
    functionUses: 0
    functionsReached:
    - i_error
    - dcrypt_initialize
    linkageType: ''
    returnType: bool
    signature: bool test_init_dcrypt(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_init_dcrypt
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:288,1
    - Dst: test_run
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:298,1
    - Dst: dcrypt_deinitialize
      Src: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 286
    functionDepth: 7
    functionLinenumber: 286
    functionLinenumberEnd: 301
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
    functionUses: 7
    functionsReached:
    - test_run
    - test_init_dcrypt
    - dcrypt_deinitialize
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:36,1
    - Dst: i_info
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:37,1
    - Dst: test_exit
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:38,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 30
    functionDepth: 3
    functionLinenumber: 30
    functionLinenumberEnd: 41
    functionName: test_setup
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c
    functionUses: 5
    functionsReached:
    - i_info
    - test_exit
    - settings_simple_init
    - dcrypt_initialize
    linkageType: ''
    returnType: void
    signature: void test_setup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:47,1
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:50,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:53,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:55,1
    - Dst: mail_crypt_global_keys_load
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:58,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:62,1
    - Dst: array_count
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:62,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:66,1
    - Dst: dcrypt_key_id_public
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:67,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:67,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:67,1
    - Dst: array_front
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:70,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:73,1
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:74,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:74,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:74,1
    - Dst: array_idx
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:76,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:78,1
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:79,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:79,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:79,1
    - Dst: mail_crypt_global_keys_free
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:81,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:82,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 43
    functionDepth: 4
    functionLinenumber: 43
    functionLinenumberEnd: 85
    functionName: test_try_load_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_crypt_global_keys_free
    - dcrypt_key_id_private
    - array_idx
    - i_fatal
    - t_buffer_create
    - dcrypt_key_id_public
    - settings_free
    - buffer_set_used_size
    - test_end
    - array_count
    - test_assert
    - array_front
    - binary_to_hex
    - settings_get
    - mail_crypt_global_keys_load
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_try_load_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:89,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:94,1
    - Dst: mail_crypt_global_key_find
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:94,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 97
    functionName: test_empty_keyset
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_end
    - test_assert
    - test_begin
    - mail_crypt_global_key_find
    linkageType: ''
    returnType: void
    signature: void test_empty_keyset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:101,1
    - Dst: dcrypt_deinitialize
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 4
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: test_teardown
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c
    functionUses: 5
    functionsReached:
    - settings_simple_deinit
    - dcrypt_deinitialize
    linkageType: ''
    returnType: void
    signature: void test_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 105
    functionDepth: 7
    functionLinenumber: 105
    functionLinenumberEnd: 117
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:36,1
    - Dst: dcrypt_key_ref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:38,1
    - Dst: dcrypt_key_ref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:42,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:48,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 4
    argNames:
    - cache
    - pubid
    - privkey_r
    - pubkey_r
    argTypes:
    - struct mail_crypt_key_cache_entry*
    - char*
    - struct dcrypt_private_key**
    - struct dcrypt_public_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 53
    functionName: mail_crypt_get_key_cache
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dcrypt_key_ref_public
    - dcrypt_key_ref_private
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_get_key_cache(struct mail_crypt_key_cache_entry *cache,\n\t\t\t
      \    const char *pubid,\n\t\t\t     struct dcrypt_private_key **privkey_r,\n\t\t\t
      \    struct dcrypt_public_key **pubkey_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:64,1
    - Dst: dcrypt_key_ref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:68,1
    - Dst: dcrypt_key_ref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:73,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:76,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:83,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:84,1
    - Dst: dcrypt_key_ref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:88,1
    - Dst: dcrypt_key_ref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:90,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - cache
    - pubid
    - privkey
    - pubkey
    argTypes:
    - struct mail_crypt_key_cache_entry**
    - char*
    - struct dcrypt_private_key*
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 98
    functionName: mail_crypt_put_key_cache
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_unreached
    - i_strdup
    - i_new
    - dcrypt_key_ref_public
    - dcrypt_key_ref_private
    linkageType: ''
    returnType: void
    signature: "void mail_crypt_put_key_cache(struct mail_crypt_key_cache_entry **cache,\n\t\t\t
      \     const char *pubid,\n\t\t\t      struct dcrypt_private_key *privkey,\n\t\t\t
      \     struct dcrypt_public_key *pubkey)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:108,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:110,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:112,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_crypt_key_cache_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 116
    functionName: mail_crypt_key_cache_destroy
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 1
    functionsReached:
    - dcrypt_key_unref_public
    - i_free
    - dcrypt_key_unref_private
    linkageType: ''
    returnType: void
    signature: void mail_crypt_key_cache_destroy(struct mail_crypt_key_cache_entry
      **cache)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:121,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:122,1
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:123,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:126,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:127,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:129,1
    - Dst: dcrypt_key_id_private_old
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:130,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:133,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:135,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - key
    - pubid
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 141
    functionName: mail_crypt_private_key_id_match
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_new
    - dcrypt_key_id_private
    - t_strdup_printf
    - buffer_set_used_size
    - binary_to_hex
    - i_assert
    - dcrypt_key_id_private_old
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_private_key_id_match(struct dcrypt_private_key *key,\n\t\t\t\t
      \    const char *pubid, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:146,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:147,1
    - Dst: dcrypt_key_id_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:148,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:151,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:152,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:154,1
    - Dst: dcrypt_key_id_public_old
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:155,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:158,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - key
    - pubid
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 166
    functionName: mail_crypt_public_key_id_match
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_new
    - dcrypt_key_id_public
    - dcrypt_key_id_public_old
    - t_strdup_printf
    - buffer_set_used_size
    - binary_to_hex
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_public_key_id_match(struct dcrypt_public_key *key,\n\t\t\t\t
      \  const char *pubid, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_global_keys_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:178,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:179,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:182,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:183,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:187,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:192,1
    - Dst: mail_crypt_load_global_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:194,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:199,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - event
    - set
    - global_keys_r
    - error_r
    argTypes:
    - struct event*
    - struct crypt_settings*
    - struct mail_crypt_global_keys*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 168
    functionDepth: 3
    functionLinenumber: 168
    functionLinenumberEnd: 204
    functionName: mail_crypt_user_encryption_keys_load
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - e_debug
    - mail_crypt_global_keys_init
    - t_strdup_printf
    - settings_free
    - settings_get_filter
    - array_is_created
    - settings_file_get
    - mail_crypt_load_global_private_key
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_user_encryption_keys_load(struct event *event,\n\t\t\t\t
      \    const struct crypt_settings *set,\n\t\t\t\t     struct mail_crypt_global_keys
      *global_keys_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:211,1
    - Dst: mail_crypt_user_encryption_keys_load
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:215,1
    - Dst: mail_crypt_global_keys_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:217,1
    - Dst: mail_crypt_global_key_find
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:223,1
    - Dst: dcrypt_key_ref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:226,1
    - Dst: mail_crypt_global_keys_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - user
    - pubid
    - key_r
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - struct dcrypt_private_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 206
    functionDepth: 4
    functionLinenumber: 206
    functionLinenumberEnd: 234
    functionName: mail_crypt_env_get_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mail_crypt_get_mail_crypt_user
    - mail_crypt_global_keys_free
    - mail_crypt_user_encryption_keys_load
    - dcrypt_key_ref_private
    - mail_crypt_global_key_find
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_env_get_private_key(struct mail_user *user, const char
      *pubid,\n\t\t\t\t   struct dcrypt_private_key **key_r,\n\t\t\t\t   const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - user_key
    - public
    - pubid
    argTypes:
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 246
    functionName: mail_crypt_get_key_path
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *mail_crypt_get_key_path(bool user_key, bool public, const char
      *pubid)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:258,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:258,1
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:259,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:262,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:263,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:266,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:272,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:278,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:279,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:292,1
    - Dst: mail_crypt_user_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:298,1
    - Dst: mail_crypt_env_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:301,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:303,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:308,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:315,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:318,1
    - Dst: mail_crypt_private_key_id_match
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:323,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:325,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:329,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 5
    argNames:
    - box
    - pubid
    - data
    - key_r
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - char*
    - struct dcrypt_private_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 248
    functionDepth: 5
    functionLinenumber: 248
    functionLinenumberEnd: 334
    functionName: mail_crypt_decrypt_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_storage
    - mail_storage_get_user
    - mail_crypt_get_mail_crypt_user
    - mail_crypt_user_get_private_key
    - t_strdup_printf
    - dcrypt_key_unref_private
    - mail_crypt_private_key_id_match
    - dcrypt_key_load_private
    - i_assert
    - dcrypt_key_string_get_info
    - mail_crypt_env_get_private_key
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_decrypt_private_key(struct mailbox *box, const char
      *pubid,\n\t\t\t\t   const char *data,\n\t\t\t\t   struct dcrypt_private_key
      **key_r,\n\t\t\t\t   const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:341,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:341,1
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:342,1
    - Dst: mail_crypt_get_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:345,1
    - Dst: mail_crypt_get_key_path
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:352,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:354,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:359,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:360,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:364,1
    - Dst: mail_crypt_decrypt_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:369,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:373,1
    - Dst: mail_crypt_put_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:375,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 6
    argNames:
    - box
    - pubid
    - user_key
    - shared
    - key_r
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - bool
    - bool
    - struct dcrypt_private_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 336
    functionDepth: 6
    functionLinenumber: 336
    functionLinenumberEnd: 380
    functionName: mail_crypt_get_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 2
    functionsReached:
    - mailbox_get_storage
    - mail_crypt_get_key_cache
    - mail_storage_get_user
    - mail_crypt_get_mail_crypt_user
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - mail_crypt_put_key_cache
    - mailbox_attribute_get
    - mailbox_get_vname
    - mail_crypt_decrypt_private_key
    - mail_crypt_get_key_path
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_get_private_key(struct mailbox *box, const char *pubid,\n\t\t\t\tbool
      user_key, bool shared,\n\t\t\t\tstruct dcrypt_private_key **key_r,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:386,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:387,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:393,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:394,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:396,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:401,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:405,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:406,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:408,1
    - Dst: mail_crypt_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:419,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:421,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - user
    - pubid
    - key_r
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - struct dcrypt_private_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 382
    functionDepth: 7
    functionLinenumber: 382
    functionLinenumberEnd: 423
    functionName: mail_crypt_user_get_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 1
    functionsReached:
    - mailbox_free
    - mailbox_open
    - mailbox_get_last_internal_error
    - mail_crypt_get_private_key
    - t_strdup_printf
    - mailbox_attribute_get
    - mailbox_alloc
    - mailbox_get_vname
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_user_get_private_key(struct mail_user *user, const
      char *pubid,\n\t\t\t\t    struct dcrypt_private_key **key_r,\n\t\t\t\t    const
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:432,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:435,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:436,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:438,1
    - Dst: mail_crypt_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - box
    - key_r
    - error_r
    argTypes:
    - struct mailbox*
    - struct dcrypt_private_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 425
    functionDepth: 7
    functionLinenumber: 425
    functionLinenumberEnd: 446
    functionName: mail_crypt_box_get_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mail_crypt_get_private_key
    - t_strdup_printf
    - mailbox_attribute_get
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_get_private_key(struct mailbox *box,\n\t\t\t\t
      \  struct dcrypt_private_key **key_r,\n\t\t\t\t   const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:457,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:459,1
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:462,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:463,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:464,1
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:465,1
    - Dst: mail_crypt_get_key_path
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:466,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:478,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:485,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:488,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:493,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:494,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:494,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:497,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:498,1
    - Dst: safe_memset
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:501,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:501,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 7
    argNames:
    - t
    - user_key
    - shared
    - pubid
    - enc_key
    - key
    - error_r
    argTypes:
    - struct mailbox_transaction_context*
    - bool
    - bool
    - char*
    - struct dcrypt_public_key*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 504
    functionName: mail_crypt_set_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - t_str_new
    - mailbox_transaction_get_mailbox
    - mail_storage_get_user
    - mail_crypt_get_mail_crypt_user
    - str_c
    - mailbox_attribute_set
    - mailbox_get_last_internal_error
    - dcrypt_key_store_private
    - t_strdup_printf
    - buffer_get_modifiable_data
    - mailbox_get_vname
    - mail_crypt_get_key_path
    - i_assert
    - safe_memset
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_set_private_key(struct mailbox_transaction_context
      *t,\n\t\t\t\tbool user_key, bool shared, const char *pubid,\n\t\t\t\tstruct
      dcrypt_public_key *enc_key,\n\t\t\t\tstruct dcrypt_private_key *key,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:510,1
    - Dst: mail_crypt_env_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:516,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:520,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:521,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:526,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:527,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:533,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:534,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:536,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:537,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:539,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:543,1
    - Dst: mail_crypt_set_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:545,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:547,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:548,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:549,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:550,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:551,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:554,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 4
    argNames:
    - user
    - pubid
    - key
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 506
    functionDepth: 5
    functionLinenumber: 506
    functionLinenumberEnd: 557
    functionName: mail_crypt_user_set_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mail_crypt_get_mail_crypt_user
    - mailbox_open
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - mailbox_free
    - t_strdup_printf
    - dcrypt_key_unref_private
    - dcrypt_key_convert_private_to_public
    - array_is_empty
    - mail_crypt_set_private_key
    - mailbox_alloc
    - mailbox_transaction_commit
    - mailbox_get_vname
    - mail_namespace_find_inbox
    - array_is_created
    - mail_crypt_env_get_private_key
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_user_set_private_key(struct mail_user *user, const
      char *pubid,\n\t\t\t\t    struct dcrypt_private_key *key,\n\t\t\t\t    const
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:567,1
    - Dst: mail_crypt_set_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:568,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:570,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:571,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:572,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:573,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - box
    - pubid
    - key
    - user_key
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - struct dcrypt_private_key*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 559
    functionDepth: 3
    functionLinenumber: 559
    functionLinenumberEnd: 578
    functionName: mail_crypt_box_set_private_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - t_strdup_printf
    - mail_crypt_set_private_key
    - mailbox_transaction_commit
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_set_private_key(struct mailbox *box, const char
      *pubid,\n\t\t\t\t   struct dcrypt_private_key *key,\n\t\t\t\t   struct dcrypt_public_key
      *user_key,\n\t\t\t\t   const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:585,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:585,1
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:586,1
    - Dst: mail_crypt_get_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:589,1
    - Dst: mail_crypt_get_key_path
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:598,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:600,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:604,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:605,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:607,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:612,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:618,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:624,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:625,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:632,1
    - Dst: mail_crypt_public_key_id_match
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:637,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:638,1
    - Dst: mail_crypt_put_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:642,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 5
    argNames:
    - box
    - pubid
    - user_key
    - key_r
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - bool
    - struct dcrypt_public_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 580
    functionDepth: 2
    functionLinenumber: 580
    functionLinenumberEnd: 647
    functionName: mail_crypt_get_public_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_storage
    - mail_crypt_get_key_cache
    - mail_storage_get_user
    - mail_crypt_get_mail_crypt_user
    - mailbox_get_last_internal_error
    - dcrypt_key_load_public
    - mail_crypt_public_key_id_match
    - t_strdup_printf
    - mail_crypt_put_key_cache
    - mailbox_attribute_get
    - mailbox_get_vname
    - dcrypt_key_unref_public
    - mail_crypt_get_key_path
    - dcrypt_key_string_get_info
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_get_public_key(struct mailbox *box, const char *pubid,\n\t\t\t
      \     bool user_key, struct dcrypt_public_key **key_r,\n\t\t\t      const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:653,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:654,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:660,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:661,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:663,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:667,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:671,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:672,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:674,1
    - Dst: mail_crypt_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:677,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:680,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - user
    - key_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct dcrypt_public_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 649
    functionDepth: 3
    functionLinenumber: 649
    functionLinenumberEnd: 682
    functionName: mail_crypt_user_get_public_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 3
    functionsReached:
    - mailbox_free
    - mailbox_open
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - mail_crypt_get_public_key
    - mailbox_attribute_get
    - mailbox_alloc
    - mailbox_get_vname
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_user_get_public_key(struct mail_user *user,\n\t\t\t\t
      \  struct dcrypt_public_key **key_r,\n\t\t\t\t   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:691,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:695,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:696,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:698,1
    - Dst: mail_crypt_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:702,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - box
    - key_r
    - error_r
    argTypes:
    - struct mailbox*
    - struct dcrypt_public_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 684
    functionDepth: 3
    functionLinenumber: 684
    functionLinenumberEnd: 703
    functionName: mail_crypt_box_get_public_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 2
    functionsReached:
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - mail_crypt_get_public_key
    - mailbox_attribute_get
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_get_public_key(struct mailbox *box,\n\t\t\t\t  struct
      dcrypt_public_key **key_r,\n\t\t\t\t  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:711,1
    - Dst: mail_crypt_get_key_path
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:712,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:716,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:723,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:726,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:730,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:731,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:731,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:734,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - t
    - user_key
    - pubid
    - key
    - error_r
    argTypes:
    - struct mailbox_transaction_context*
    - bool
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 705
    functionDepth: 2
    functionLinenumber: 705
    functionLinenumberEnd: 740
    functionName: mail_crypt_set_public_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mailbox_attribute_set
    - mailbox_transaction_get_mailbox
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - dcrypt_key_store_public
    - mailbox_get_vname
    - mail_crypt_get_key_path
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_set_public_key(struct mailbox_transaction_context *t,\n\t\t\t
      \     bool user_key, const char *pubid,\n\t\t\t      struct dcrypt_public_key
      *key,\n\t\t\t      const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:746,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:747,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:754,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:755,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:757,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:761,1
    - Dst: mail_crypt_set_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:763,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:769,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:772,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:773,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:775,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:780,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:781,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:782,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:783,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:784,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:788,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - user
    - pubid
    - key
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 742
    functionDepth: 3
    functionLinenumber: 742
    functionLinenumberEnd: 791
    functionName: mail_crypt_user_set_public_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mailbox_attribute_set
    - mailbox_open
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - mailbox_free
    - mail_crypt_set_public_key
    - t_strdup_printf
    - mailbox_alloc
    - mailbox_get_vname
    - mailbox_transaction_commit
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_user_set_public_key(struct mail_user *user, const char
      *pubid,\n\t\t\t\t  struct dcrypt_public_key *key,\n\t\t\t\t  const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:801,1
    - Dst: mail_crypt_set_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:802,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:808,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:811,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:812,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:814,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:819,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:820,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:821,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:822,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:823,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - box
    - pubid
    - key
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 793
    functionDepth: 3
    functionLinenumber: 793
    functionLinenumberEnd: 829
    functionName: mail_crypt_box_set_public_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mailbox_attribute_set
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - mail_crypt_set_public_key
    - t_strdup_printf
    - mailbox_get_vname
    - mailbox_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_set_public_key(struct mailbox *box, const char
      *pubid,\n\t\t\t\t  struct dcrypt_public_key *key,\n\t\t\t\t  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_user_set_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:838,1
    - Dst: mail_crypt_user_set_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:840,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - user
    - pubid
    - privkey
    - pubkey
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - struct dcrypt_private_key*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 831
    functionDepth: 6
    functionLinenumber: 831
    functionLinenumberEnd: 843
    functionName: mail_crypt_user_set_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mail_crypt_user_set_private_key
    - mail_crypt_user_set_public_key
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_user_set_keys(struct mail_user *user,\n\t\t\t     const
      char *pubid,\n\t\t\t     struct dcrypt_private_key *privkey,\n\t\t\t     struct
      dcrypt_public_key *pubkey,\n\t\t\t     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_box_set_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:853,1
    - Dst: mail_crypt_box_set_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:856,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - box
    - pubid
    - privkey
    - user_key
    - pubkey
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - struct dcrypt_private_key*
    - struct dcrypt_public_key*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 845
    functionDepth: 4
    functionLinenumber: 845
    functionLinenumberEnd: 859
    functionName: mail_crypt_box_set_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mail_crypt_box_set_private_key
    - mail_crypt_box_set_public_key
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_set_keys(struct mailbox *box,\n\t\t\t    const
      char *pubid,\n\t\t\t    struct dcrypt_private_key *privkey,\n\t\t\t    struct
      dcrypt_public_key *user_key,\n\t\t\t    struct dcrypt_public_key *pubkey,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:866,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:866,1
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:867,1
    - Dst: mail_crypt_get_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:874,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:879,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:880,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:882,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:887,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:891,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:892,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:894,1
    - Dst: mail_crypt_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:897,1
    - Dst: mail_crypt_decrypt_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:900,1
    - Dst: mail_crypt_put_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:905,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - box
    - pubid
    - key_r
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - struct dcrypt_private_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 861
    functionDepth: 7
    functionLinenumber: 861
    functionLinenumberEnd: 910
    functionName: mail_crypt_box_get_shared_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 1
    functionsReached:
    - mailbox_get_storage
    - mail_crypt_get_key_cache
    - mail_storage_get_user
    - mail_crypt_get_mail_crypt_user
    - mailbox_get_last_internal_error
    - mail_crypt_get_private_key
    - strlen
    - t_strdup_printf
    - mail_crypt_put_key_cache
    - mailbox_attribute_get
    - mailbox_get_vname
    - mail_crypt_decrypt_private_key
    - binary_to_hex
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_get_shared_key(struct mailbox *box,\n\t\t\t\t  const
      char *pubid,\n\t\t\t\t  struct dcrypt_private_key **key_r,\n\t\t\t\t  const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:920,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:925,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:931,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:932,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:933,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:938,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:943,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:950,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:953,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:955,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:956,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:957,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:959,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:960,1
    - Dst: safe_memset
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:964,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:964,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 6
    argNames:
    - t
    - pubid
    - privkey
    - target_uid
    - user_key
    - error_r
    argTypes:
    - struct mailbox_transaction_context*
    - char*
    - struct dcrypt_private_key*
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 967
    functionName: mail_crypt_box_set_shared_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - mailbox_attribute_set
    - mailbox_transaction_get_mailbox
    - mailbox_get_last_internal_error
    - strlen
    - t_strdup_printf
    - dcrypt_key_store_private
    - buffer_get_modifiable_data
    - mailbox_get_vname
    - binary_to_hex
    - i_assert
    - safe_memset
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_set_shared_key(struct mailbox_transaction_context
      *t,\n\t\t\t\t  const char *pubid,\n\t\t\t\t  struct dcrypt_private_key *privkey,\n\t\t\t\t
      \ const char *target_uid,\n\t\t\t\t  struct dcrypt_public_key *user_key,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:977,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:978,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:980,1
    - Dst: mailbox_attribute_unset
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:985,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:988,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:990,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:991,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:993,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:994,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - t
    - pubid
    - target_uid
    - error_r
    argTypes:
    - struct mailbox_transaction_context*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 1000
    functionName: mail_crypt_box_unset_shared_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 1
    functionsReached:
    - mailbox_transaction_get_mailbox
    - mailbox_attribute_unset
    - mailbox_get_last_internal_error
    - strlen
    - t_strdup_printf
    - mailbox_get_vname
    - binary_to_hex
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_unset_shared_key(struct mailbox_transaction_context
      *t,\n\t\t\t\t    const char *pubid,\n\t\t\t\t    const char *target_uid,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1013,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1017,1
    - Dst: dcrypt_key_id_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1018,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1020,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1024,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - curve
    - pair_r
    - pubid_r
    - error_r
    argTypes:
    - char*
    - struct dcrypt_keypair*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1027
    functionName: mail_crypt_generate_keypair
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - dcrypt_key_id_public
    - dcrypt_keypair_generate
    - binary_to_hex
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_generate_keypair(const char *curve,\n\t\t\t\tstruct
      dcrypt_keypair *pair_r,\n\t\t\t\tconst char **pubid_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1034,1
    - Dst: mail_crypt_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1036,1
    - Dst: mail_crypt_user_set_keys
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1041,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1043,1
    - Dst: mail_crypt_put_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1047,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - user
    - pair
    - pubid_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct dcrypt_keypair*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1029
    functionDepth: 7
    functionLinenumber: 1029
    functionLinenumberEnd: 1050
    functionName: mail_crypt_user_generate_keypair
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 1
    functionsReached:
    - mail_crypt_get_mail_crypt_user
    - mail_crypt_generate_keypair
    - mail_crypt_put_key_cache
    - mail_crypt_user_set_keys
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_user_generate_keypair(struct mail_user *user,\n\t\t\t\t
      \    struct dcrypt_keypair *pair,\n\t\t\t\t     const char **pubid_r,\n\t\t\t\t
      \    const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1059,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1059,1
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1060,1
    - Dst: mail_crypt_user_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1063,1
    - Dst: mail_crypt_user_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1071,1
    - Dst: mail_crypt_put_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1077,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1081,1
    - Dst: dcrypt_key_ref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1084,1
    - Dst: mail_crypt_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1087,1
    - Dst: mail_crypt_box_set_keys
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1091,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1094,1
    - Dst: mail_crypt_put_key_cache
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1096,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1100,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - box
    - pair
    - user_key
    - pubid_r
    - error_r
    argTypes:
    - struct mailbox*
    - struct dcrypt_keypair*
    - struct dcrypt_public_key*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1052
    functionDepth: 8
    functionLinenumber: 1052
    functionLinenumberEnd: 1103
    functionName: mail_crypt_box_generate_keypair
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 2
    functionsReached:
    - mailbox_get_storage
    - mail_storage_get_user
    - mail_crypt_get_mail_crypt_user
    - mail_crypt_generate_keypair
    - mail_crypt_user_generate_keypair
    - mail_crypt_put_key_cache
    - mail_crypt_user_get_public_key
    - dcrypt_key_unref_private
    - mail_crypt_box_set_keys
    - dcrypt_key_unref_public
    - dcrypt_key_ref_public
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_generate_keypair(struct mailbox *box,\n\t\t\t\t
      \   struct dcrypt_keypair *pair,\n\t\t\t\t    struct dcrypt_public_key *user_key,\n\t\t\t\t
      \   const char **pubid_r,\n\t\t\t\t    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1114,1
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1116,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1117,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1118,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1120,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - box
    - pool
    - type
    - digests
    - error_r
    argTypes:
    - struct mailbox*
    - pool_t
    - enum mail_attribute_type
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1124
    functionName: mail_crypt_box_get_pvt_digests
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 3
    functionsReached:
    - p_strdup
    - mailbox_get_last_internal_error
    - array_push_back
    - mailbox_attribute_iter_init
    - mailbox_attribute_iter_next
    - mailbox_attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_get_pvt_digests(struct mailbox *box, pool_t pool,\n\t\t\t\t
      \  enum mail_attribute_type type,\n\t\t\t\t   ARRAY_TYPE(const_string) *digests,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1131,1
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1136,1
    - Dst: mail_crypt_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1138,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1140,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1143,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1146,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - box
    - keys_r
    - error_r
    argTypes:
    - struct mailbox*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1126
    functionDepth: 7
    functionLinenumber: 1126
    functionLinenumberEnd: 1150
    functionName: mail_crypt_box_get_private_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 1
    functionsReached:
    - mailbox_get_last_internal_error
    - array_push_back
    - mail_crypt_get_private_key
    - mailbox_attribute_iter_init
    - mailbox_attribute_iter_next
    - mailbox_attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_get_private_keys(struct mailbox *box,\n\t\t\t\t
      \   ARRAY_TYPE(dcrypt_private_key) *keys_r,\n\t\t\t\t    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1158,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1161,1
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1166,1
    - Dst: mail_crypt_box_set_shared_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1168,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1169,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 5
    argNames:
    - t
    - dest_pub_key
    - dest_user
    - priv_keys
    - error_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct dcrypt_public_key*
    - char*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1152
    functionDepth: 2
    functionLinenumber: 1152
    functionLinenumberEnd: 1177
    functionName: mail_crypt_box_share_private_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 2
    functionsReached:
    - t_str_new
    - dcrypt_key_id_private
    - mail_crypt_box_set_shared_key
    - binary_to_hex
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_box_share_private_keys(struct mailbox_transaction_context
      *t,\n\t\t\t\t      struct dcrypt_public_key *dest_pub_key,\n\t\t\t\t      const
      char *dest_user,\n\t\t\t\t      const ARRAY_TYPE(dcrypt_private_key) *priv_keys,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1166,1
    - Dst: mail_crypt_box_set_shared_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1168,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1164
    functionDepth: 2
    functionLinenumber: 1164
    functionLinenumberEnd: 1174
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 92
    functionsReached:
    - binary_to_hex
    - mail_crypt_box_set_shared_key
    - dcrypt_key_id_private
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(priv_keys, priv_key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1184,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1185,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1186,1
    - Dst: mail_crypt_user_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1189,1
    - Dst: mail_crypt_user_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1192,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - user
    - pub_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct dcrypt_public_key**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1179
    functionDepth: 8
    functionLinenumber: 1179
    functionLinenumberEnd: 1201
    functionName: mail_crypt_user_get_or_gen_public_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 0
    functionsReached:
    - mail_crypt_user_generate_keypair
    - i_assert
    - mail_crypt_user_get_public_key
    - dcrypt_key_unref_private
    linkageType: ''
    returnType: int
    signature: "int mail_crypt_user_get_or_gen_public_key(struct mail_user *user,\n\t\t\t\t
      \     struct dcrypt_public_key **pub_r,\n\t\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_register_internals
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1224,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c:1225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1226
    functionName: mail_crypt_key_register_mailbox_internal_attributes
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    functionUses: 1
    functionsReached:
    - mailbox_attribute_register_internals
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void mail_crypt_key_register_mailbox_internal_attributes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: mail_crypt_get_mail_crypt_user
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: struct mail_crypt_user
    signature: struct mail_crypt_user *mail_crypt_get_mail_crypt_user(struct mail_user
      *user ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:44,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:49,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:61,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:64,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:65,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:67,1
    - Dst: t_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:70,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 6
    argNames:
    - box
    - user_key
    - shared
    - pubid
    - value_r
    - error_r
    argTypes:
    - struct mailbox*
    - bool
    - bool
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 73
    functionName: test_mail_attribute_get
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - mailbox_attribute_get
    - mailbox_get_vname
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int test_mail_attribute_get(struct mailbox *box, bool user_key, bool
      shared,\n\t\t\t    const char *pubid, const char **value_r, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:83,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:88,1
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:101,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:104,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:107,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:108,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:108,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:110,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 6
    argNames:
    - t
    - user_key
    - shared
    - pubid
    - value
    - error_r
    argTypes:
    - struct mailbox_transaction_context*
    - bool
    - bool
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 115
    functionName: test_mail_attribute_set
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_zero
    - mailbox_attribute_set
    - mailbox_transaction_get_mailbox
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: "int test_mail_attribute_set(struct mailbox_transaction_context *t,\n\t\t\tbool
      user_key, bool shared, const char *pubid,\n\t\t\tconst char *value, const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:124,1
    - Dst: mail_crypt_user_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:127,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:129,1
    - Dst: test_exit
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:133,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:135,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:137,1
    - Dst: mail_crypt_user_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:141,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:146,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:149,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 118
    functionDepth: 8
    functionLinenumber: 118
    functionLinenumberEnd: 152
    functionName: test_generate_user_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - test_exit
    - i_error
    - mail_crypt_user_get_private_key
    - mail_crypt_user_generate_keypair
    - dcrypt_key_unref_private
    - test_end
    - test_assert
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_generate_user_key(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:160,1
    - Dst: mail_crypt_user_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:162,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:164,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:167,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:168,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:170,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:171,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:172,1
    - Dst: mail_crypt_box_generate_keypair
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:173,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:175,1
    - Dst: test_exit
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:176,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:179,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:181,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:182,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:183,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:185,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 154
    functionDepth: 9
    functionLinenumber: 154
    functionLinenumberEnd: 188
    functionName: test_generate_inbox_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 0
    functionsReached:
    - mail_crypt_box_generate_keypair
    - p_strdup
    - test_exit
    - mailbox_open
    - i_error
    - mailbox_get_last_internal_error
    - mailbox_free
    - i_fatal
    - dcrypt_key_unref_public
    - mail_crypt_user_get_public_key
    - test_end
    - mailbox_alloc
    - mail_namespace_find_inbox
    - i_assert
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_generate_inbox_key(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:195,1
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:198,1
    - Dst: mail_crypt_key_cache_destroy
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:199,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:201,1
    - Dst: mail_crypt_user_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:201,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:204,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:206,1
    - Dst: mail_crypt_user_get_public_key
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:206,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:209,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:211,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 190
    functionDepth: 8
    functionLinenumber: 190
    functionLinenumberEnd: 214
    functionName: test_cache_reset
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 0
    functionsReached:
    - mail_crypt_get_mail_crypt_user
    - mail_crypt_user_get_private_key
    - i_error
    - mail_crypt_user_get_public_key
    - mail_crypt_key_cache_destroy
    - test_end
    - test_assert
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_cache_reset(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:223,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:229,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:230,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:232,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:233,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:234,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:238,1
    - Dst: test_mail_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:238,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:240,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:240,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:242,1
    - Dst: test_mail_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:242,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:246,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:246,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:249,1
    - Dst: mail_crypt_public_key_id_match
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:249,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:254,1
    - Dst: test_mail_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:256,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:258,1
    - Dst: test_mail_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:258,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:262,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:266,1
    - Dst: mail_crypt_private_key_id_match
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:266,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:273,1
    - Dst: test_mail_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:273,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:275,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:277,1
    - Dst: test_mail_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:281,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:284,1
    - Dst: mail_crypt_public_key_id_match
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:284,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:286,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:289,1
    - Dst: test_mail_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:291,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:293,1
    - Dst: test_mail_attribute_get
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:293,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:296,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:300,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:301,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:301,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:304,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:304,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:308,1
    - Dst: mail_crypt_private_key_id_match
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:308,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:310,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:311,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:313,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 216
    functionDepth: 3
    functionLinenumber: 216
    functionLinenumberEnd: 316
    functionName: test_verify_keys
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_mail_attribute_get
    - dcrypt_key_load_public
    - mailbox_open
    - mailbox_get_last_internal_error
    - dcrypt_key_string_get_info
    - mailbox_free
    - i_fatal
    - mail_crypt_public_key_id_match
    - dcrypt_key_unref_public
    - dcrypt_key_unref_private
    - test_end
    - mailbox_alloc
    - test_assert
    - mail_namespace_find_inbox
    - dcrypt_key_load_private
    - mail_crypt_private_key_id_match
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_verify_keys(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:320,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:326,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:327,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:329,1
    - Dst: i_fatal
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:330,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:331,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:334,1
    - Dst: test_mail_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:336,1
    - Dst: test_mail_attribute_set
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:338,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:341,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:346,1
    - Dst: mail_crypt_get_private_key
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:346,1
    - Dst: i_error
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:350,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:354,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:357,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:358,1
    - Dst: dcrypt_key_id_private_old
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:358,1
    - Dst: test_assert
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:359,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:359,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:359,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:360,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:363,1
    - Dst: test_end
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:365,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 318
    functionDepth: 7
    functionLinenumber: 318
    functionLinenumberEnd: 366
    functionName: test_old_key
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_alloc
    - test_assert
    - mail_namespace_find_inbox
    - dcrypt_key_id_private_old
    - mailbox_free
    - mailbox_transaction_begin
    - mail_crypt_get_private_key
    - i_fatal
    - test_end
    - test_mail_attribute_set
    - binary_to_hex
    - mailbox_transaction_commit
    - strcmp
    - mailbox_open
    - i_error
    - t_buffer_create
    - dcrypt_key_unref_private
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_old_key(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:374,1
    - Dst: i_info
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:375,1
    - Dst: test_exit
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:376,1
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:378,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:383,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:393,1
    - Dst: mail_crypt_key_register_mailbox_internal_attributes
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 397
    functionName: test_setup
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 5
    functionsReached:
    - test_exit
    - test_mail_storage_init_user
    - mail_crypt_key_register_mailbox_internal_attributes
    - t_strdup_printf
    - test_mail_storage_init
    - i_info
    - dcrypt_initialize
    linkageType: ''
    returnType: void
    signature: void test_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_crypt_get_mail_crypt_user
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:402,1
    - Dst: mail_crypt_key_cache_destroy
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:403,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:405,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:406,1
    - Dst: dcrypt_deinitialize
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 408
    functionName: test_teardown
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 5
    functionsReached:
    - mail_crypt_get_mail_crypt_user
    - test_mail_storage_deinit_user
    - mail_crypt_key_cache_destroy
    - dcrypt_deinitialize
    - test_mail_storage_deinit
    linkageType: ''
    returnType: void
    signature: void test_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:424,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:431,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:432,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:433,1
    - Dst: test_run
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:434,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 410
    functionDepth: 7
    functionLinenumber: 410
    functionLinenumberEnd: 437
    functionName: main
    functionSourceFile: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
    functionUses: 7
    functionsReached:
    - master_service_init
    - test_dir_init
    - test_run
    - settings_info_register
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: QUOTA_CLONE_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_CLONE_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: QUOTA_CLONE_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_CLONE_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: QUOTA_CLONE_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUOTA_CLONE_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 40
    functionName: MODULE_CONTEXT_DEFINE_INIT
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void MODULE_CONTEXT_DEFINE_INIT(quota_clone_storage_module,\n\t\t\t\t
      \ &mail_storage_module_register)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:47,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:53,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:57,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:62,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - result
    - user
    argTypes:
    - struct dict_commit_result*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 68
    functionName: quota_clone_dict_commit
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - e_error
    - QUOTA_CLONE_USER_CONTEXT_REQUIRE
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void quota_clone_dict_commit(const struct dict_commit_result *result,\n\t\t\tstruct
      mail_user *user)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:73,1
    - Dst: quota_root_iter_init_user
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:82,1
    - Dst: quota_root_iter_next
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:83,1
    - Dst: quota_root_iter_deinit
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:84,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:92,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:95,1
    - Dst: quota_get_resource
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:100,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:103,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:125,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:126,1
    - Dst: dict_unset
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:130,1
    - Dst: dict_set
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:131,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:132,1
    - Dst: dict_unset
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:137,1
    - Dst: dict_set
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:138,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:139,1
    - Dst: dict_transaction_commit_async
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:142,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 70
    functionDepth: 3
    functionLinenumber: 70
    functionLinenumberEnd: 144
    functionName: quota_clone_flush_real
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - quota_root_iter_init_user
    - dict_transaction_commit_async
    - quota_root_iter_next
    - mail_user_get_dict_op_settings
    - t_strdup_printf
    - e_error
    - QUOTA_CLONE_USER_CONTEXT_REQUIRE
    - quota_get_resource
    - dict_unset
    - dict_set
    - dict_transaction_begin
    - quota_root_iter_deinit
    linkageType: ''
    returnType: bool
    signature: bool quota_clone_flush_real(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:149,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:152,1
    - Dst: quota_clone_flush_real
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:159,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:161,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 146
    functionDepth: 4
    functionLinenumber: 146
    functionLinenumberEnd: 167
    functionName: quota_clone_flush
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - QUOTA_CLONE_USER_CONTEXT_REQUIRE
    - i_assert
    - quota_clone_flush_real
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void quota_clone_flush(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 173
    functionName: quota_mailbox_get_user
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_namespace
    linkageType: ''
    returnType: struct mail_user
    signature: struct mail_user *quota_mailbox_get_user(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quota_mailbox_get_user
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:177,1
    - Dst: QUOTA_CLONE_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:179,1
    - Dst: timeout_add
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 186
    functionName: quota_clone_changed
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - QUOTA_CLONE_USER_CONTEXT_REQUIRE
    - timeout_add
    - quota_mailbox_get_user
    linkageType: ''
    returnType: void
    signature: void quota_clone_changed(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_CONTEXT
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:191,1
    - Dst: quota_clone_changed
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:193,1
    - Dst: union mailbox_module_context*::super::save_finish
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 195
    functionName: quota_clone_save_finish
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - QUOTA_CLONE_CONTEXT
    - quota_clone_changed
    - union mailbox_module_context*::super::save_finish
    linkageType: ''
    returnType: int
    signature: int quota_clone_save_finish(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_CONTEXT
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:201,1
    - Dst: quota_clone_changed
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:203,1
    - Dst: union mailbox_module_context*::super::copy
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 3
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: quota_clone_copy
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - QUOTA_CLONE_CONTEXT
    - quota_clone_changed
    - union mailbox_module_context*::super::copy
    linkageType: ''
    returnType: int
    signature: int quota_clone_copy(struct mail_save_context *ctx, struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_CONTEXT
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:211,1
    - Dst: union mailbox_module_context*::super::sync_notify
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:214,1
    - Dst: quota_clone_changed
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - box
    - uid
    - sync_type
    argTypes:
    - struct mailbox*
    - uint32_t
    - enum mailbox_sync_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 207
    functionDepth: 3
    functionLinenumber: 207
    functionLinenumberEnd: 218
    functionName: quota_clone_mailbox_sync_notify
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - QUOTA_CLONE_CONTEXT
    - quota_clone_changed
    - union mailbox_module_context*::super::sync_notify
    linkageType: ''
    returnType: void
    signature: "void quota_clone_mailbox_sync_notify(struct mailbox *box, uint32_t
      uid,\n\t\t\t\tenum mailbox_sync_type sync_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_USER_CONTEXT
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:223,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:230,1
    - Dst: MODULE_CONTEXT_SET_SELF
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 238
    functionName: quota_clone_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET_SELF
    - QUOTA_CLONE_USER_CONTEXT
    - p_new
    linkageType: ''
    returnType: void
    signature: void quota_clone_mailbox_allocated(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:242,1
    - Dst: dict_wait
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:244,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:249,1
    - Dst: quota_clone_flush
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:250,1
    - Dst: dict_wait
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:251,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:254,1
    - Dst: struct quota_clone_user*::module_ctx::super::deinit_pre
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 240
    functionDepth: 5
    functionLinenumber: 240
    functionLinenumberEnd: 257
    functionName: quota_clone_mail_user_deinit_pre
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - QUOTA_CLONE_USER_CONTEXT_REQUIRE
    - quota_clone_flush
    - dict_wait
    - i_assert
    - struct quota_clone_user*::module_ctx::super::deinit_pre
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void quota_clone_mail_user_deinit_pre(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QUOTA_CLONE_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:261,1
    - Dst: dict_wait
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:265,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:266,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:267,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:268,1
    - Dst: struct quota_clone_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 270
    functionName: quota_clone_mail_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - settings_free
    - QUOTA_CLONE_USER_CONTEXT_REQUIRE
    - struct quota_clone_user*::module_ctx::super::deinit
    - dict_deinit
    - dict_wait
    - i_assert
    linkageType: ''
    returnType: void
    signature: void quota_clone_mail_user_deinit(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:280,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:281,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:282,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:284,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:285,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:289,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:290,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:292,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:293,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:296,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:298,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 306
    functionName: quota_clone_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_strdup
    - event_unref
    - p_new
    - settings_event_add_filter_name
    - p_strdup_printf
    - settings_free
    - MODULE_CONTEXT_SET
    - settings_get
    - dict_init_auto
    linkageType: ''
    returnType: void
    signature: void quota_clone_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 316
    functionName: quota_clone_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void quota_clone_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: quota_clone_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void quota_clone_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/quota-clone/quota-clone-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 19
    functionName: push_notification_event_mailboxunsubscribe_debug_mbox
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxunsubscribe_debug_mbox(\n\tstruct
      push_notification_txn_event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c:29,1
    - Dst: push_notification_txn_mbox_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ptxn
    - ec
    - mbox
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 34
    functionName: push_notification_event_mailboxunsubscribe_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_mbox_set_eventdata
    - p_new
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxunsubscribe_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_mbox
      *mbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 19
    functionName: push_notification_event_mailboxsubscribe_debug_mbox
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxsubscribe_debug_mbox(\n\tstruct
      push_notification_txn_event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.c:29,1
    - Dst: push_notification_txn_mbox_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ptxn
    - ec
    - mbox
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 34
    functionName: push_notification_event_mailboxsubscribe_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_mbox_set_eventdata
    - p_new
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxsubscribe_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_mbox
      *mbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 23
    functionName: push_notification_event_messageexpunge_debug_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messageexpunge_debug_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_msg_get_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.c:33,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.c:35,1
    - Dst: push_notification_txn_msg_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ptxn
    - ec
    - msg
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 40
    functionName: push_notification_event_messageexpunge_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_msg_set_eventdata
    - push_notification_txn_msg_get_eventdata
    - p_new
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messageexpunge_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_msg
      *msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: push_notification_event_flagsset_default_config
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void *push_notification_event_flagsset_default_config(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:35,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:37,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:39,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:41,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:43,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:45,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:46,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 47
    functionName: push_notification_event_flagsset_debug_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_flagsset_debug_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_msg_get_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:57,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:59,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:62,1
    - Dst: push_notification_txn_msg_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ptxn
    - msg
    - ec
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_txn_msg*
    - struct push_notification_event_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 68
    functionName: push_notification_event_flagsset_get_data
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_msg_set_eventdata
    - push_notification_txn_msg_get_eventdata
    - p_array_init
    - p_new
    linkageType: ''
    returnType: struct push_notification_event_flagsset_data
    signature: "struct push_notification_event_flagsset_data *\npush_notification_event_flagsset_get_data(\n\tstruct
      push_notification_txn *ptxn,\n\tstruct push_notification_txn_msg *msg,\n\tstruct
      push_notification_event_config *ec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:88,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:90,1
    - Dst: push_notification_event_flagsset_get_data
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:108,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 5
    argNames:
    - ptxn
    - ec
    - msg
    - mail
    - old_flags
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    - struct mail*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 111
    functionName: push_notification_event_flagsset_flags_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c
    functionUses: 0
    functionsReached:
    - push_notification_event_flagsset_get_data
    - mail_get_flags
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_flagsset_flags_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_msg
      *msg, struct mail *mail,\n\tenum mail_flags old_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_event_flagsset_get_data
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:123,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:124,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:128,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:133,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:134,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 5
    argNames:
    - ptxn
    - ec
    - msg
    - mail
    - old_keywords
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 137
    functionName: push_notification_event_flagsset_keywords_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - push_notification_event_flagsset_get_data
    - p_strdup
    - strcmp
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_flagsset_keywords_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_msg
      *msg, struct mail *mail,\n\tconst char *const *old_keywords)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:145,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 147
    functionName: push_notification_event_flagsset_free_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_flagsset_free_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:18,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:19,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:20,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:22,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:26,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:27,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:35,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - txn
    - mail
    argTypes:
    - struct push_notification_txn*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 40
    functionName: push_notification_txn_msg_create
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - p_new
    - hash_table_create_direct
    - mailbox_get_vname
    - hash_table_insert
    - hash_table_lookup
    - hash_table_is_created
    linkageType: ''
    returnType: struct push_notification_txn_msg
    signature: "struct push_notification_txn_msg *\npush_notification_txn_msg_create(struct
      push_notification_txn *txn,\n\t\t\t\t struct mail *mail)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:54,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:58,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:59,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:63,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:69,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:71,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:75,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:78,1
    - Dst: duser::driver::v::process_msg
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:80,1
    - Dst: push_notification_txn_msg_deinit_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:84,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:87,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:88,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - ptxn
    - changes
    argTypes:
    - struct push_notification_txn*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 89
    functionName: push_notification_txn_msg_end
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - duser::driver::v::process_msg
    - hash_table_iterate_deinit
    - hash_table_iterate
    - seq_range_array_iter_init
    - hash_table_iterate_init
    - push_notification_txn_msg_deinit_eventdata
    - mailbox_get_open_status
    - array_foreach_modifiable
    - i_assert
    - hash_table_is_created
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: "void push_notification_txn_msg_end(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct mail_transaction_commit_changes *changes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:97,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:98,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - msg
    - event_name
    argTypes:
    - struct push_notification_txn_msg*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 106
    functionName: push_notification_txn_msg_get_eventdata
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c
    functionUses: 2
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void *\npush_notification_txn_msg_get_eventdata(struct push_notification_txn_msg
      *msg,\n\t\t\t\t\tconst char *event_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:115,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:116,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:119,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - txn
    - msg
    - event
    - data
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_txn_msg*
    - struct push_notification_event_config*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 124
    functionName: push_notification_txn_msg_set_eventdata
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - p_new
    - p_array_init
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void push_notification_txn_msg_set_eventdata(\n\tstruct push_notification_txn
      *txn,\n\tstruct push_notification_txn_msg *msg,\n\tstruct push_notification_event_config
      *event, void *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:131,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:132,1
    - Dst: event::event::msg::free_msg
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: push_notification_txn_msg_deinit_eventdata
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - event::event::msg::free_msg
    linkageType: ''
    returnType: void
    signature: "void push_notification_txn_msg_deinit_eventdata(\n\tstruct push_notification_txn_msg
      *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_mbox_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:21,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:25,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - txn
    - box
    - mbox
    - trigger
    argTypes:
    - struct push_notification_txn*
    - struct mailbox*
    - struct push_notification_txn_mbox**
    - enum push_notification_event_trigger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 26
    functionName: push_notification_trigger_mbox_common
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - event_add_str
    - push_notification_txn_mbox_create
    - mailbox_get_vname
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_mbox_common(\n\tstruct push_notification_txn
      *txn, struct mailbox *box,\n\tstruct push_notification_txn_mbox **mbox,\n\tenum
      push_notification_event_trigger trigger)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_mbox_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:34,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:37,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:38,1
    - Dst: struct push_notification_event_config*::event::mbox_triggers::create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - txn
    - box
    - mbox
    argTypes:
    - struct push_notification_txn*
    - struct mailbox*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 43
    functionName: push_notification_trigger_mbox_create
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - struct push_notification_event_config*::event::mbox_triggers::create
    - push_notification_trigger_mbox_common
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_mbox_create(\n\tstruct push_notification_txn
      *txn, struct mailbox *box,\n\tstruct push_notification_txn_mbox *mbox)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_mbox_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:51,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:54,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:55,1
    - Dst: struct push_notification_event_config*::event::mbox_triggers::delete
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - txn
    - box
    - mbox
    argTypes:
    - struct push_notification_txn*
    - struct mailbox*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 60
    functionName: push_notification_trigger_mbox_delete
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - struct push_notification_event_config*::event::mbox_triggers::delete
    - array_is_created
    - push_notification_trigger_mbox_common
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_mbox_delete(\n\tstruct push_notification_txn
      *txn, struct mailbox *box,\n\tstruct push_notification_txn_mbox *mbox)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_mbox_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:69,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:72,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:73,1
    - Dst: struct push_notification_event_config*::event::mbox_triggers::rename
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - txn
    - src
    - dest
    - mbox
    argTypes:
    - struct push_notification_txn*
    - struct mailbox*
    - struct mailbox*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 80
    functionName: push_notification_trigger_mbox_rename
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - struct push_notification_event_config*::event::mbox_triggers::rename
    - push_notification_trigger_mbox_common
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_mbox_rename(\n\tstruct push_notification_txn
      *txn,\n\tstruct mailbox *src, struct mailbox *dest,\n\tstruct push_notification_txn_mbox
      *mbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_mbox_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:88,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:92,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:93,1
    - Dst: struct push_notification_event_config*::event::mbox_triggers::subscribe
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:96,1
    - Dst: struct push_notification_event_config*::event::mbox_triggers::unsubscribe
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - txn
    - box
    - subscribed
    - mbox
    argTypes:
    - struct push_notification_txn*
    - struct mailbox*
    - bool
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 107
    functionName: push_notification_trigger_mbox_subscribe
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - struct push_notification_event_config*::event::mbox_triggers::unsubscribe
    - array_foreach_elem
    - struct push_notification_event_config*::event::mbox_triggers::subscribe
    - push_notification_trigger_mbox_common
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_mbox_subscribe(\n\tstruct push_notification_txn
      *txn, struct mailbox *box, bool subscribed,\n\tstruct push_notification_txn_mbox
      *mbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_msg_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - txn
    - mail
    - msg
    - trigger
    argTypes:
    - struct push_notification_txn*
    - struct mail*
    - struct push_notification_txn_msg**
    - enum push_notification_event_trigger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 119
    functionName: push_notification_trigger_msg_common
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_msg_create
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_msg_common(\n\tstruct push_notification_txn
      *txn, struct mail *mail,\n\tstruct push_notification_txn_msg **msg,\n\tenum
      push_notification_event_trigger trigger)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_msg_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:127,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:130,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:131,1
    - Dst: struct push_notification_event_config*::event::msg_triggers::save
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - txn
    - mail
    - msg
    argTypes:
    - struct push_notification_txn*
    - struct mail*
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 138
    functionName: push_notification_trigger_msg_save_new
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - struct push_notification_event_config*::event::msg_triggers::save
    - array_is_created
    - push_notification_trigger_msg_common
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_msg_save_new(\n\tstruct push_notification_txn
      *txn, struct mail *mail,\n\tstruct push_notification_txn_msg *msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_msg_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:146,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:150,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:151,1
    - Dst: struct push_notification_event_config*::event::msg_triggers::append
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - txn
    - mail
    - msg
    argTypes:
    - struct push_notification_txn*
    - struct mail*
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 158
    functionName: push_notification_trigger_msg_save_append
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - struct push_notification_event_config*::event::msg_triggers::append
    - array_is_created
    - push_notification_trigger_msg_common
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_msg_save_append(\n\tstruct push_notification_txn
      *txn, struct mail *mail,\n\tstruct push_notification_txn_msg *msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_msg_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:166,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:169,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:170,1
    - Dst: struct push_notification_event_config*::event::msg_triggers::expunge
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - txn
    - mail
    - msg
    argTypes:
    - struct push_notification_txn*
    - struct mail*
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 175
    functionName: push_notification_trigger_msg_save_expunge
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - push_notification_trigger_msg_common
    - struct push_notification_event_config*::event::msg_triggers::expunge
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_msg_save_expunge(\n\tstruct push_notification_txn
      *txn, struct mail *mail,\n\tstruct push_notification_txn_msg *msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_msg_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:183,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:187,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:188,1
    - Dst: struct push_notification_event_config*::event::msg_triggers::flagchange
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - txn
    - mail
    - msg
    - old_flags
    argTypes:
    - struct push_notification_txn*
    - struct mail*
    - struct push_notification_txn_msg*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 195
    functionName: push_notification_trigger_msg_flag_change
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - push_notification_trigger_msg_common
    - struct push_notification_event_config*::event::msg_triggers::flagchange
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_msg_flag_change(\n\tstruct push_notification_txn
      *txn, struct mail *mail,\n\tstruct push_notification_txn_msg *msg, enum mail_flags
      old_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_trigger_msg_common
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:203,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:207,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:208,1
    - Dst: struct push_notification_event_config*::event::msg_triggers::keywordchange
      Src: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - txn
    - mail
    - msg
    - old_keywords
    argTypes:
    - struct push_notification_txn*
    - struct mail*
    - struct push_notification_txn_msg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 197
    functionDepth: 3
    functionLinenumber: 197
    functionLinenumberEnd: 215
    functionName: push_notification_trigger_msg_keyword_change
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - push_notification_trigger_msg_common
    - struct push_notification_event_config*::event::msg_triggers::keywordchange
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_trigger_msg_keyword_change(\n\tstruct push_notification_txn
      *txn, struct mail *mail,\n\tstruct push_notification_txn_msg *msg, const char
      *const *old_keywords)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:79,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:80,1
    - Dst: event_get_pool
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:81,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:83,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:84,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:85,1
    - Dst: push_notification_get_event_category
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:85,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:86,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:88,1
    - Dst: dlua_script_create_auto
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:91,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:93,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:94,1
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:99,1
    - Dst: dlua_register_mail_storage
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:100,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:102,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:105,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:106,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:107,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 5
    argNames:
    - user
    - pool
    - name
    - context
    - error_r
    argTypes:
    - struct mail_user*
    - pool_t
    - char*
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 72
    functionDepth: 6
    functionLinenumber: 72
    functionLinenumberEnd: 114
    functionName: push_notification_driver_lua_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_strdup
    - p_new
    - event_unref
    - push_notification_get_event_category
    - dlua_dovecot_register
    - dlua_register_mail_storage
    - event_set_append_log_prefix
    - e_debug
    - dlua_script_init
    - dlua_script_unref
    - event_get_pool
    - event_set_ptr
    - dlua_script_create_auto
    - settings_section_escape
    - event_add_category
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int push_notification_driver_lua_init(\n\t\tstruct mail_user *user,
      pool_t pool, const char *name,\n\t\tvoid **context, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_lua_to_fn
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:130,1
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:131,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:136,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:139,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:141,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:143,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:145,1
    - Dst: struct push_notification_event*::init::default_config
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:148,1
    - Dst: push_notification_event_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:149,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - dtxn
    argTypes:
    - struct push_notification_driver_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 153
    functionName: push_notification_driver_lua_init_events
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - strcmp
    - e_debug
    - push_notification_event_init
    - struct push_notification_event*::init::default_config
    - push_notification_driver_lua_to_fn
    - dlua_script_has_function
    linkageType: ''
    returnType: bool
    signature: "bool push_notification_driver_lua_init_events(\n\tstruct push_notification_driver_txn
      *dtxn)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_lua_to_fn
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:130,1
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:131,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:136,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:139,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:141,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:143,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:145,1
    - Dst: init::default_config
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:148,1
    - Dst: push_notification_event_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:149,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 150
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 102
    functionsReached:
    - strcmp
    - e_debug
    - push_notification_event_init
    - init::default_config
    - push_notification_driver_lua_to_fn
    - dlua_script_has_function
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(push_notification_get_events(), event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:161,1
    - Dst: event_set_name
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:164,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:165,1
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:167,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:168,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:170,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:171,1
    - Dst: push_notification_driver_lua_init_events
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:175,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:176,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:177,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:181,1
    - Dst: dlua_push_mail_user
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:185,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:186,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:187,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:188,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:192,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:193,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:197,1
    - Dst: luaL_ref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:200,1
    - Dst: mail_user_ref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - dtxn
    argTypes:
    - struct push_notification_driver_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 205
    functionName: push_notification_driver_lua_begin_txn
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - p_new
    - dlua_pcall
    - event_set_name
    - e_debug
    - dlua_push_mail_user
    - luaL_ref
    - push_notification_driver_lua_init_events
    - e_error
    - mail_user_ref
    - event_add_str
    - dlua_script_has_function
    linkageType: ''
    returnType: bool
    signature: "bool push_notification_driver_lua_begin_txn(\n\tstruct push_notification_driver_txn
      *dtxn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:212,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:212,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:213,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:214,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:218,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:219,1
    - Dst: str_append_c
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:221,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - evname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 226
    functionName: push_notification_driver_lua_to_fn
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - str_append
    linkageType: ''
    returnType: char
    signature: char *push_notification_driver_lua_to_fn(const char *evname)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:231,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:235,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:236,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:239,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:240,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:243,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:244,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:247,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:248,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:251,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:252,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:255,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:256,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - script
    - flags
    argTypes:
    - struct dlua_script*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 258
    functionName: dlua_push_flags
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushliteral
    - lua_newtable
    - lua_rawseti
    linkageType: ''
    returnType: void
    signature: void dlua_push_flags(struct dlua_script *script, enum mail_flags flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:264,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:268,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - script
    - keywords
    - count
    argTypes:
    - struct dlua_script*
    - char**
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 271
    functionName: dlua_push_keywords
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - lua_newtable
    - lua_rawseti
    linkageType: ''
    returnType: void
    signature: "void dlua_push_keywords(struct dlua_script *script, const char *const
      *keywords,\n\t\t  unsigned int count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlua_push_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:282,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:283,1
    - Dst: dlua_push_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:284,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:285,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:287,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:288,1
    - Dst: dlua_push_keywords
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:289,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:290,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:293,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:294,1
    - Dst: dlua_push_keywords
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:295,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - event
    - script
    argTypes:
    - struct push_notification_txn_event*
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 298
    functionName: push_notification_lua_push_flagsclear
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - dlua_push_flags
    - array_get
    - dlua_push_keywords
    - array_is_created
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void push_notification_lua_push_flagsclear(\n\tconst struct push_notification_txn_event
      *event,\n\tstruct dlua_script *script)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_push_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:309,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:310,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:312,1
    - Dst: array_get
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:313,1
    - Dst: dlua_push_keywords
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:314,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - event
    - script
    argTypes:
    - struct push_notification_txn_event*
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 317
    functionName: push_notification_lua_push_flagsset
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - dlua_push_flags
    - array_get
    - dlua_push_keywords
    - array_is_created
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void push_notification_lua_push_flagsset(\n\tconst struct push_notification_txn_event
      *event,\n\tstruct dlua_script *script)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:326,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - event
    - script
    argTypes:
    - struct push_notification_txn_event*
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 328
    functionName: push_notification_lua_push_mailboxrename
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void push_notification_lua_push_mailboxrename(\n\tconst struct push_notification_txn_event
      *event,\n\tstruct dlua_script *script)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 332
    functionName: push_notification_lua_push_string
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: push_notification_lua_push_string(L, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_lua_push_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:338,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:339,1
    - Dst: push_notification_lua_push_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:340,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:341,1
    - Dst: push_notification_lua_push_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:343,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:344,1
    - Dst: push_notification_lua_push_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:345,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:346,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:348,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ext
    - script
    argTypes:
    - struct push_notification_message_ext*
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 350
    functionName: push_notification_lua_push_message_ext
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - push_notification_lua_push_string
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void push_notification_lua_push_message_ext(\n\tconst struct push_notification_message_ext
      *ext,\n\tstruct dlua_script *script)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:359,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:360,1
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:362,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:363,1
    - Dst: push_notification_lua_push_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:365,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:366,1
    - Dst: push_notification_lua_push_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:368,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:369,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:371,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:372,1
    - Dst: dlua_push_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:374,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:375,1
    - Dst: dlua_push_keywords
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:377,1
    - Dst: str_array_length
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:378,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:379,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:381,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:382,1
    - Dst: push_notification_lua_push_message_ext
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - event
    - script
    argTypes:
    - struct push_notification_txn_event*
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 385
    functionName: push_notification_lua_push_messageappend
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - dlua_push_flags
    - lua_pushstring
    - str_array_length
    - dlua_push_keywords
    - push_notification_lua_push_message_ext
    - push_notification_lua_push_string
    - lua_pushnumber
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void push_notification_lua_push_messageappend(\n\tconst struct push_notification_txn_event
      *event,\n\tstruct dlua_script *script)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:394,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:395,1
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:397,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:398,1
    - Dst: push_notification_lua_push_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:400,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:401,1
    - Dst: push_notification_lua_push_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:403,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:404,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:406,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:407,1
    - Dst: dlua_push_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:409,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:410,1
    - Dst: dlua_push_keywords
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:412,1
    - Dst: str_array_length
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:413,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:414,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:416,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:417,1
    - Dst: push_notification_lua_push_message_ext
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - event
    - script
    argTypes:
    - struct push_notification_txn_event*
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 420
    functionName: push_notification_lua_push_messagenew
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - dlua_push_flags
    - lua_pushstring
    - str_array_length
    - dlua_push_keywords
    - push_notification_lua_push_message_ext
    - push_notification_lua_push_string
    - lua_pushnumber
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void push_notification_lua_push_messagenew(\n\tconst struct push_notification_txn_event
      *event,\n\tstruct dlua_script *script)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:459,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:462,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:463,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:465,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:466,1
    - Dst: push
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - event
    - ctx
    argTypes:
    - struct push_notification_txn_event*
    - struct dlua_push_notification_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 468
    functionName: push_notification_driver_lua_push_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - strcmp
    - push
    - lua_pushstring
    - lua_newtable
    - N_ELEMENTS
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_lua_push_event(\n\tconst struct push_notification_txn_event
      *event,\n\tstruct dlua_push_notification_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_lua_to_fn
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:480,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:481,1
    - Dst: event_set_name
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:482,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:483,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:484,1
    - Dst: lua_rawgeti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:487,1
    - Dst: push_notification_driver_lua_push_event
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:490,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:493,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:494,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:495,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:498,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:500,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:501,1
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:502,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:503,1
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:504,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:505,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:506,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:509,1
    - Dst: event_add_int
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:510,1
    - Dst: i_unreached
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:512,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:515,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:516,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:517,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:519,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:521,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 5
    argNames:
    - ctx
    - tctx
    - event
    - mbox
    - msg
    argTypes:
    - struct dlua_push_notification_context*
    - struct dlua_push_notification_txn_context*
    - struct push_notification_txn_event*
    - struct push_notification_txn_mbox*
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 522
    functionName: push_notification_driver_lua_call
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - event_create
    - push_notification_driver_lua_push_event
    - event_unref
    - i_unreached
    - event_set_name
    - lua_pushstring
    - e_debug
    - dlua_pcall
    - lua_pushnumber
    - e_error
    - event_add_int
    - event_add_str
    - push_notification_driver_lua_to_fn
    - lua_rawgeti
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_lua_call(\n\tstruct dlua_push_notification_context
      *ctx,\n\tstruct dlua_push_notification_txn_context *tctx,\n\tconst struct push_notification_txn_event
      *event,\n\tconst struct push_notification_txn_mbox *mbox,\n\tstruct push_notification_txn_msg
      *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:533,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:534,1
    - Dst: push_notification_driver_lua_call
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dtxn
    - mbox
    argTypes:
    - struct push_notification_driver_txn*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 524
    functionDepth: 4
    functionLinenumber: 524
    functionLinenumberEnd: 539
    functionName: push_notification_driver_lua_process_mbox
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - push_notification_driver_lua_call
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_lua_process_mbox(\n\tstruct push_notification_driver_txn
      *dtxn,\n\tstruct push_notification_txn_mbox *mbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:550,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:551,1
    - Dst: push_notification_driver_lua_call
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dtxn
    - msg
    argTypes:
    - struct push_notification_driver_txn*
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 541
    functionDepth: 4
    functionLinenumber: 541
    functionLinenumberEnd: 556
    functionName: push_notification_driver_lua_process_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - push_notification_driver_lua_call
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_lua_process_msg(\n\tstruct push_notification_driver_txn
      *dtxn,\n\tstruct push_notification_txn_msg *msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:567,1
    - Dst: event_set_name
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:568,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:569,1
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:571,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:572,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:574,1
    - Dst: lua_rawgeti
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:575,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:576,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:577,1
    - Dst: event_add_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:578,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:579,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:581,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:585,1
    - Dst: luaL_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:587,1
    - Dst: lua_gc
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:589,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:590,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - dtxn
    - success
    argTypes:
    - struct push_notification_driver_txn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 558
    functionDepth: 3
    functionLinenumber: 558
    functionLinenumberEnd: 591
    functionName: push_notification_driver_lua_end_txn
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - luaL_unref
    - mail_user_unref
    - event_create
    - lua_gc
    - event_unref
    - lua_pushboolean
    - dlua_pcall
    - event_set_name
    - e_debug
    - e_error
    - event_add_str
    - dlua_script_has_function
    - lua_rawgeti
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_lua_end_txn(struct push_notification_driver_txn
      *dtxn,\n\t\t\t\t     bool success)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:598,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - duser
    argTypes:
    - struct push_notification_driver_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 593
    functionDepth: 6
    functionLinenumber: 593
    functionLinenumberEnd: 600
    functionName: push_notification_driver_lua_deinit
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - dlua_script_unref
    - event_unref
    linkageType: ''
    returnType: void
    signature: void push_notification_driver_lua_deinit(struct push_notification_driver_user
      *duser)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 605
    functionName: push_notification_driver_lua_cleanup
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void push_notification_driver_lua_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_register
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 628
    functionName: push_notification_lua_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - push_notification_driver_register
    linkageType: ''
    returnType: void
    signature: void push_notification_lua_plugin_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_unregister
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 633
    functionName: push_notification_lua_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    functionUses: 0
    functionsReached:
    - push_notification_driver_unregister
    linkageType: ''
    returnType: void
    signature: void push_notification_lua_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 23
    functionName: push_notification_event_flagsclear_default_config
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void *push_notification_event_flagsclear_default_config(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:34,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:36,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:38,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:40,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:42,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:44,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:45,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 46
    functionName: push_notification_event_flagsclear_debug_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_flagsclear_debug_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_msg_get_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:58,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:60,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:64,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:66,1
    - Dst: push_notification_txn_msg_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ptxn
    - msg
    - ec
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_txn_msg*
    - struct push_notification_event_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 72
    functionName: push_notification_event_flagsclear_get_data
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_msg_set_eventdata
    - push_notification_txn_msg_get_eventdata
    - p_array_init
    - p_new
    linkageType: ''
    returnType: struct push_notification_event_flagsclear_data
    signature: "struct push_notification_event_flagsclear_data *\npush_notification_event_flagsclear_get_data(\n\tstruct
      push_notification_txn *ptxn,\n\tstruct push_notification_txn_msg *msg,\n        struct
      push_notification_event_config *ec)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_event_flagsclear_get_data
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:94,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:95,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:97,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 5
    argNames:
    - ptxn
    - ec
    - msg
    - mail
    - old_flags
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    - struct mail*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 105
    functionName: push_notification_event_flagsclear_flags_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c
    functionUses: 0
    functionsReached:
    - mail_get_flags
    - N_ELEMENTS
    - push_notification_event_flagsclear_get_data
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_flagsclear_flags_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_msg
      *msg, struct mail *mail,\n\tenum mail_flags old_flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_event_flagsclear_get_data
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:119,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:120,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:124,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:129,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:130,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:134,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:135,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 5
    argNames:
    - ptxn
    - ec
    - msg
    - mail
    - old_keywords
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 138
    functionName: push_notification_event_flagsclear_keywords_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - strcmp
    - p_strdup
    - push_notification_event_flagsclear_get_data
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_flagsclear_keywords_event(\n\tstruct
      push_notification_txn *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct
      push_notification_txn_msg *msg, struct mail *mail,\n\tconst char *const *old_keywords)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:146,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:147,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:148,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 150
    functionName: push_notification_event_flagsclear_free_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_flagsclear_free_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 20
    functionName: push_notification_event_messageread_debug_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messageread_debug_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_msg_get_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c:33,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c:35,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c:37,1
    - Dst: push_notification_txn_msg_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - ptxn
    - ec
    - msg
    - mail
    - old_flags
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    - struct mail*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 45
    functionName: push_notification_event_messageread_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c
    functionUses: 0
    functionsReached:
    - mail_get_flags
    - push_notification_txn_msg_get_eventdata
    - p_new
    - push_notification_txn_msg_set_eventdata
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messageread_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_msg
      *msg, struct mail *mail,\n\tenum mail_flags old_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: push_notification_settings_check
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool push_notification_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      const char **error_r ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_url_parse
      Src: /src/dovecot/src/plugins/push-notification/push-notification-settings.c:109,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/push-notification/push-notification-settings.c:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - _set
    - pool
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 125
    functionName: push_notification_ox_settings_check
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-settings.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool push_notification_ox_settings_check(void *_set, pool_t pool,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: message_address_parse
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:20,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:20,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:21,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:30,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:33,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:36,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:38,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:39,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:40,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:40,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 4
    argNames:
    - pool
    - hdr
    - address_r
    - name_r
    argTypes:
    - pool_t
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 42
    functionName: decode_address_header
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - t_str_new
    - message_header_decode_utf8
    - strlen
    - message_address_parse
    - pool_datastack_create
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void decode_address_header(pool_t pool, const char *hdr,\n\t\t      const
      char **address_r, const char **name_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:58,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:59,1
    - Dst: decode_address_header
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:60,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:66,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:67,1
    - Dst: decode_address_header
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:68,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:74,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:75,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:77,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:79,1
    - Dst: strlen
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:81,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:82,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:82,1
    - Dst: mail_get_date
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:88,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:95,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:96,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:101,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:107,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:107,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:112,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:114,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c:115,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 34
    argCount: 14
    argNames:
    - mail
    - pool
    - event_flags
    - from
    - to
    - subject
    - date
    - date_tz
    - message_id
    - flags
    - flags_set
    - keywords
    - snippet
    - ext
    argTypes:
    - struct mail*
    - pool_t
    - enum push_notification_event_message_flags
    - char**
    - char**
    - char**
    - time_t*
    - int*
    - char**
    - enum mail_flags*
    - bool*
    - char***
    - char**
    - struct push_notification_message_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 117
    functionName: push_notification_message_fill
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - str_c
    - p_strdup
    - t_str_new
    - mail_get_date
    - i_assert
    - p_strarray_dup
    - message_header_decode_utf8
    - strlen
    - decode_address_header
    - mail_get_first_header
    - mail_get_flags
    - mail_get_special
    linkageType: ''
    returnType: void
    signature: "void push_notification_message_fill(\n\tstruct mail *mail, pool_t
      pool,\n\tenum push_notification_event_message_flags event_flags,\n\tconst char
      **from, const char **to, const char **subject, time_t *date,\n\tint *date_tz,
      const char **message_id, enum mail_flags *flags,\n\tbool *flags_set, const char
      *const **keywords, const char **snippet,\n\tstruct push_notification_message_ext
      *ext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_event_find
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events.c:91,1
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events.c:92,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events.c:96,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events.c:97,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events.c:99,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events.c:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 102
    functionName: push_notification_event_unregister
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-events.c
    functionUses: 0
    functionsReached:
    - i_panic
    - array_delete
    - push_notification_event_find
    - array_is_empty
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_unregister(\n\tconst struct push_notification_event
      *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:64,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:65,1
    - Dst: event_get_pool
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:66,1
    - Dst: settings_section_escape
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:68,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:69,1
    - Dst: http_client_init_auto
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:71,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:73,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:76,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - user
    - name
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 83
    functionName: push_notification_driver_ox_init_global
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_get_pool
    - e_error
    - event_set_ptr
    - http_client_init_auto
    - settings_section_escape
    - p_strdup_printf
    linkageType: ''
    returnType: bool
    signature: bool push_notification_driver_ox_init_global(struct mail_user *user,
      const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:93,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:98,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:99,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:100,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:101,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:109,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:110,1
    - Dst: http_url_clone_with_userinfo
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:114,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:115,1
    - Dst: http_url_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:116,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:119,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:123,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:127,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:134,1
    - Dst: push_notification_driver_ox_init_global
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 5
    argNames:
    - user
    - pool
    - name
    - context
    - error_r
    argTypes:
    - struct mail_user*
    - pool_t
    - char*
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 140
    functionName: push_notification_driver_ox_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_new
    - event_unref
    - e_debug
    - event_set_append_log_prefix
    - http_url_clone_with_userinfo
    - settings_free
    - push_notification_driver_ox_init_global
    - settings_get_filter
    - http_url_create
    - i_new
    - event_add_category
    linkageType: ''
    returnType: int
    signature: "int push_notification_driver_ox_init(struct mail_user *user, pool_t
      pool,\n\t\t\t\t const char *name, void **context,\n\t\t\t\t const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:167,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:168,1
    - Dst: mailbox_attribute_get
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:171,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:174,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:176,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:178,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:186,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:190,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:191,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - dtxn
    argTypes:
    - struct push_notification_driver_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 195
    functionName: push_notification_driver_ox_get_metadata
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_get_last_internal_error
    - e_debug
    - e_error
    - mailbox_attribute_get
    - i_strdup
    - mailbox_alloc
    - mail_namespace_find_inbox
    - i_free
    linkageType: ''
    returnType: char
    signature: "char *\npush_notification_driver_ox_get_metadata(\n\tstruct push_notification_driver_txn
      *dtxn)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_ox_get_metadata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:208,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:219,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:224,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:226,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:233,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:239,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:243,1
    - Dst: strchr
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:247,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:249,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:250,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:252,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:258,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:262,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:265,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:266,1
    - Dst: push_notification_event_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:272,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:274,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 1
    argNames:
    - dtxn
    argTypes:
    - struct push_notification_driver_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 281
    functionName: push_notification_driver_ox_begin_txn
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - p_strdup
    - p_new
    - e_debug
    - t_strsplit_tabescaped
    - push_notification_event_init
    - e_error
    - push_notification_driver_ox_get_metadata
    - t_strdup_until
    - mailbox_get_vname
    linkageType: ''
    returnType: bool
    signature: bool push_notification_driver_ox_begin_txn(struct push_notification_driver_txn
      *dtxn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:291,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:292,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:297,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:298,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - response
    - dconfig
    argTypes:
    - struct http_response*
    - struct push_notification_driver_ox_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 301
    functionName: push_notification_driver_ox_http_callback
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_response_get_message
    - e_error
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_ox_http_callback(\n\tconst struct http_response
      *response,\n\tstruct push_notification_driver_ox_config *dconfig)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 308
    functionName: str_free_i
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - str_free
    linkageType: ''
    returnType: void
    signature: void str_free_i(string_t *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:325,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:325,1
    - Dst: mailbox_get_name
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:326,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:327,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:328,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:329,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:330,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:334,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:335,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:337,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - dtxn
    - r_box_status
    argTypes:
    - struct push_notification_driver_txn*
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 343
    functionName: push_notification_driver_ox_get_mailbox_status
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - mailbox_get_name
    - mailbox_get_namespace
    - mailbox_free
    - mailbox_get_last_internal_error
    - e_debug
    - mailbox_sync
    - e_error
    - mailbox_alloc
    - mailbox_get_open_status
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: "int push_notification_driver_ox_get_mailbox_status(\n\tstruct push_notification_driver_txn
      *dtxn,\n\tstruct mailbox_status *r_box_status)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_ox_get_mailbox_status
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:365,1
    - Dst: push_notification_txn_msg_get_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:370,1
    - Dst: http_client_request_url
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:374,1
    - Dst: http_client_request_set_event
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:377,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:378,1
    - Dst: str_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:381,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:382,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:383,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:384,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:387,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:388,1
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:389,1
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:391,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:393,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:397,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:401,1
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:405,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:408,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:409,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:411,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:411,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:413,1
    - Dst: str_data
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:413,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:413,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:414,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:415,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:417,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:418,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 2
    argNames:
    - dtxn
    - msg
    argTypes:
    - struct push_notification_driver_txn*
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 346
    functionDepth: 18
    functionLinenumber: 346
    functionLinenumberEnd: 419
    functionName: push_notification_driver_ox_process_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - json_ostream_nwrite_number
    - str_c
    - str_len
    - http_client_request_set_payload
    - json_ostream_nwrite_string
    - i_stream_create_from_data
    - http_client_request_submit
    - http_client_request_set_event
    - str_new
    - json_ostream_nascend_object
    - str_data
    - http_client_request_add_header
    - push_notification_driver_ox_get_mailbox_status
    - json_ostream_ndescend_object
    - e_debug
    - json_ostream_create_str
    - push_notification_txn_msg_get_eventdata
    - i_stream_add_destroy_callback
    - http_client_request_url
    - i_stream_unref
    - json_ostream_nfinish_destroy
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_ox_process_msg(\n\tstruct push_notification_driver_txn
      *dtxn,\n\tstruct push_notification_txn_msg *msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:427,1
    - Dst: http_client_wait
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:430,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:431,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - duser
    argTypes:
    - struct push_notification_driver_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 435
    functionName: push_notification_driver_ox_deinit
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_assert
    - i_free
    - http_client_wait
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_ox_deinit(\n\tstruct push_notification_driver_user
      *duser)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_client_deinit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:441,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 445
    functionName: push_notification_driver_ox_cleanup
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    functionUses: 0
    functionsReached:
    - http_client_deinit
    - i_free_and_null
    linkageType: ''
    returnType: void
    signature: void push_notification_driver_ox_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events-rfc5423.c:49,1
    - Dst: push_notification_event_register
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events-rfc5423.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: push_notification_event_register_rfc5423_events
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-events-rfc5423.c
    functionUses: 0
    functionsReached:
    - push_notification_event_register
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void push_notification_event_register_rfc5423_events(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events-rfc5423.c:57,1
    - Dst: push_notification_event_unregister
      Src: /src/dovecot/src/plugins/push-notification/push-notification-events-rfc5423.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: push_notification_event_unregister_rfc5423_events
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-events-rfc5423.c
    functionUses: 0
    functionsReached:
    - push_notification_event_unregister
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void push_notification_event_unregister_rfc5423_events(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 27
    functionName: push_notification_event_messagenew_default_config
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void *push_notification_event_messagenew_default_config(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gmtime
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:38,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:39,1
    - Dst: iso8601_date_create_tm
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:40,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:44,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:46,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:48,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 51
    functionName: push_notification_event_messagenew_debug_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c
    functionUses: 0
    functionsReached:
    - e_debug
    - iso8601_date_create_tm
    - gmtime
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messagenew_debug_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_msg_get_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:66,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:68,1
    - Dst: push_notification_txn_msg_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:72,1
    - Dst: push_notification_message_fill
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - ptxn
    - ec
    - msg
    - mail
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 53
    functionDepth: 6
    functionLinenumber: 53
    functionLinenumberEnd: 82
    functionName: push_notification_event_messagenew_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_msg_set_eventdata
    - push_notification_txn_msg_get_eventdata
    - push_notification_message_fill
    - p_new
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messagenew_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_msg
      *msg, struct mail *mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 22
    functionName: push_notification_event_mailboxrename_debug_mbox
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxrename_debug_mbox(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.c:32,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.c:34,1
    - Dst: push_notification_txn_mbox_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ptxn
    - ec
    - mbox
    - old
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_mbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 37
    functionName: push_notification_event_mailboxrename_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_mbox_set_eventdata
    - p_new
    - mailbox_get_vname
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxrename_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_mbox
      *mbox, struct mailbox *old)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: PUSH_NOTIFICATION_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUSH_NOTIFICATION_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: push_notification_get_event_category
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct event_category
    signature: struct event_category *push_notification_get_event_category(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: push_notification_get_event_messagenew
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct push_notification_event
    signature: struct push_notification_event *push_notification_get_event_messagenew(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:56,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:58,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:63,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:64,1
    - Dst: struct push_notification_driver_txn*::duser::driver::v::begin_txn
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:69,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:70,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ptxn
    argTypes:
    - struct push_notification_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 73
    functionName: push_notification_transaction_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_storage
    - p_new
    - struct push_notification_driver_txn*::duser::driver::v::begin_txn
    - array_foreach_elem
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void push_notification_transaction_init(struct push_notification_txn
      *ptxn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:83,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:85,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:87,1
    - Dst: mail_storage_get_user
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:88,1
    - Dst: PUSH_NOTIFICATION_USER_CONTEXT
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:90,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:93,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:94,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:95,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - box
    - t
    argTypes:
    - struct mailbox*
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 99
    functionName: push_notification_transaction_create
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - PUSH_NOTIFICATION_USER_CONTEXT
    - mailbox_get_storage
    - pool_alloconly_create
    - mail_storage_get_user
    - p_new
    - event_create
    - p_array_init
    - event_set_append_log_prefix
    - event_add_category
    linkageType: ''
    returnType: struct push_notification_txn
    signature: "struct push_notification_txn *\npush_notification_transaction_create(struct
      mailbox *box,\n\t\t\t\t     struct mailbox_transaction_context *t)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:108,1
    - Dst: struct push_notification_driver_txn*::duser::driver::v::end_txn
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:110,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:115,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:118,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:118,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:121,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ptxn
    - success
    argTypes:
    - struct push_notification_txn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 123
    functionName: push_notification_transaction_end
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - event_unref
    - array_foreach_elem
    - e_debug
    - struct push_notification_driver_txn*::duser::driver::v::end_txn
    - pool_unref
    - struct event_passthrough*::event
    - event_create_passthrough
    linkageType: ''
    returnType: void
    signature: "void push_notification_transaction_end(struct push_notification_txn
      *ptxn,\n\t\t\t\t  bool success)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:135,1
    - Dst: push_notification_txn_mbox_end
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:137,1
    - Dst: push_notification_txn_msg_end
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:139,1
    - Dst: push_notification_transaction_end
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:141,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - txn
    - changes
    argTypes:
    - void*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 143
    functionName: push_notification_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_msg_end
    - io_loop_set_current
    - push_notification_txn_mbox_end
    - push_notification_transaction_end
    linkageType: ''
    returnType: void
    signature: "void push_notification_transaction_commit(\n\tvoid *txn, struct mail_transaction_commit_changes
      *changes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:149,1
    - Dst: push_notification_transaction_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:150,1
    - Dst: push_notification_trigger_mbox_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:151,1
    - Dst: push_notification_transaction_commit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 145
    functionDepth: 3
    functionLinenumber: 145
    functionLinenumberEnd: 153
    functionName: push_notification_mailbox_create
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_transaction_commit
    - push_notification_transaction_init
    - push_notification_trigger_mbox_create
    - push_notification_transaction_create
    linkageType: ''
    returnType: void
    signature: void push_notification_mailbox_create(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:160,1
    - Dst: push_notification_transaction_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:161,1
    - Dst: push_notification_trigger_mbox_delete
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:162,1
    - Dst: push_notification_transaction_commit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - box
    argTypes:
    - void*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 164
    functionName: push_notification_mailbox_delete
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_transaction_commit
    - push_notification_transaction_init
    - push_notification_trigger_mbox_delete
    - push_notification_transaction_create
    linkageType: ''
    returnType: void
    signature: void push_notification_mailbox_delete(void *txn ATTR_UNUSED, struct
      mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:171,1
    - Dst: push_notification_transaction_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:172,1
    - Dst: push_notification_trigger_mbox_rename
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:173,1
    - Dst: push_notification_transaction_commit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 175
    functionName: push_notification_mailbox_rename
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_transaction_commit
    - push_notification_transaction_init
    - push_notification_transaction_create
    - push_notification_trigger_mbox_rename
    linkageType: ''
    returnType: void
    signature: void push_notification_mailbox_rename(struct mailbox *src, struct mailbox
      *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:182,1
    - Dst: push_notification_transaction_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:183,1
    - Dst: push_notification_trigger_mbox_subscribe
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:184,1
    - Dst: push_notification_transaction_commit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - box
    - subscribed
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 186
    functionName: push_notification_mailbox_subscribe
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_transaction_commit
    - push_notification_transaction_init
    - push_notification_transaction_create
    - push_notification_trigger_mbox_subscribe
    linkageType: ''
    returnType: void
    signature: void push_notification_mailbox_subscribe(struct mailbox *box, bool
      subscribed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:192,1
    - Dst: push_notification_trigger_msg_save_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:196,1
    - Dst: push_notification_trigger_msg_save_append
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - txn
    - mail
    argTypes:
    - void*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 4
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: push_notification_mail_save
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_trigger_msg_save_new
    - push_notification_transaction_init
    - push_notification_trigger_msg_save_append
    linkageType: ''
    returnType: void
    signature: void push_notification_mail_save(void *txn, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_mail_save
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - txn
    - ATTR_UNUSED
    - dest
    argTypes:
    - void*
    - struct mail*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 5
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: push_notification_mail_copy
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_mail_save
    linkageType: ''
    returnType: void
    signature: "void push_notification_mail_copy(void *txn, struct mail *src ATTR_UNUSED,\n\t\t\t
      \   struct mail *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:212,1
    - Dst: push_notification_trigger_msg_save_expunge
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - txn
    - mail
    argTypes:
    - void*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 208
    functionDepth: 4
    functionLinenumber: 208
    functionLinenumberEnd: 214
    functionName: push_notification_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_transaction_init
    - push_notification_trigger_msg_save_expunge
    linkageType: ''
    returnType: void
    signature: void push_notification_mail_expunge(void *txn, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:222,1
    - Dst: push_notification_trigger_msg_flag_change
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - txn
    - mail
    - old_flags
    argTypes:
    - void*
    - struct mail*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 216
    functionDepth: 4
    functionLinenumber: 216
    functionLinenumberEnd: 224
    functionName: push_notification_mail_update_flags
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_transaction_init
    - push_notification_trigger_msg_flag_change
    linkageType: ''
    returnType: void
    signature: "void push_notification_mail_update_flags(void *txn, struct mail *mail,\n\t\t\t\t
      \   enum mail_flags old_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:232,1
    - Dst: push_notification_trigger_msg_keyword_change
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - txn
    - mail
    - old_keywords
    argTypes:
    - void*
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 235
    functionName: push_notification_mail_update_keywords
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_trigger_msg_keyword_change
    - push_notification_transaction_init
    linkageType: ''
    returnType: void
    signature: "void push_notification_mail_update_keywords(void *txn, struct mail
      *mail,\n\t\t\t\t       const char *const *old_keywords)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:240,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: push_notification_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_transaction_get_mailbox
    - push_notification_transaction_create
    linkageType: ''
    returnType: void
    signature: 'void *

      push_notification_transaction_begin(struct mailbox_transaction_context *t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_transaction_end
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - txn
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 249
    functionName: push_notification_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_transaction_end
    linkageType: ''
    returnType: void
    signature: void push_notification_transaction_rollback(void *txn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:259,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:261,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:266,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:267,1
    - Dst: push_notification_driver_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:268,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:274,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:278,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - user
    - dlist
    argTypes:
    - struct mail_user*
    - struct push_notification_driver_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 279
    functionName: push_notification_config_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_driver_init
    - array_foreach_elem
    - array_push_back
    - settings_free
    - e_error
    - array_is_created
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void push_notification_config_init(struct mail_user *user,\n\t\t\t
      \     struct push_notification_driver_list *dlist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:286,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:287,1
    - Dst: push_notification_config_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 291
    functionName: push_notification_driver_list_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - p_new
    - p_array_init
    - push_notification_config_init
    linkageType: ''
    returnType: struct push_notification_driver_list
    signature: 'struct push_notification_driver_list *

      push_notification_driver_list_init(struct mail_user *user)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PUSH_NOTIFICATION_USER_CONTEXT
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:296,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:304,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:306,1
    - Dst: struct push_notification_driver_user*::driver::v::deinit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:308,1
    - Dst: struct push_notification_driver_user*::driver::v::cleanup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:310,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:312,1
    - Dst: struct push_notification_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 315
    functionName: push_notification_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - PUSH_NOTIFICATION_USER_CONTEXT
    - array_foreach_elem
    - io_loop_set_current
    - struct push_notification_driver_user*::driver::v::deinit
    - struct push_notification_user*::module_ctx::super::deinit
    - struct push_notification_driver_user*::driver::v::cleanup
    linkageType: ''
    returnType: void
    signature: void push_notification_user_deinit(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:322,1
    - Dst: push_notification_driver_list_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:326,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 317
    functionDepth: 3
    functionLinenumber: 317
    functionLinenumberEnd: 329
    functionName: push_notification_user_created
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    - push_notification_driver_list_init
    linkageType: ''
    returnType: void
    signature: void push_notification_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_register
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:365,1
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:366,1
    - Dst: push_notification_driver_register
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:368,1
    - Dst: push_notification_driver_register
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:369,1
    - Dst: push_notification_event_register_rfc5423_events
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:371,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 374
    functionName: push_notification_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - push_notification_event_register_rfc5423_events
    - mail_storage_hooks_add
    - push_notification_driver_register
    - notify_register
    - i_assert
    linkageType: ''
    returnType: void
    signature: void push_notification_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_unregister
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:378,1
    - Dst: push_notification_driver_unregister
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:379,1
    - Dst: push_notification_event_unregister_rfc5423_events
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:381,1
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:382,1
    - Dst: notify_unregister
      Src: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 384
    functionName: push_notification_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - notify_unregister
    - push_notification_event_unregister_rfc5423_events
    - push_notification_driver_unregister
    linkageType: ''
    returnType: void
    signature: void push_notification_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 27
    functionName: push_notification_event_messageappend_default_config
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void *push_notification_event_messageappend_default_config(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gmtime
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:38,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:39,1
    - Dst: iso8601_date_create_tm
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:40,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:44,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:46,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:48,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 51
    functionName: push_notification_event_messageappend_debug_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c
    functionUses: 0
    functionsReached:
    - e_debug
    - iso8601_date_create_tm
    - gmtime
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messageappend_debug_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_msg_get_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:67,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:69,1
    - Dst: push_notification_txn_msg_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:72,1
    - Dst: push_notification_message_fill
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - ptxn
    - ec
    - msg
    - mail
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 53
    functionDepth: 6
    functionLinenumber: 53
    functionLinenumberEnd: 82
    functionName: push_notification_event_messageappend_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_msg_set_eventdata
    - push_notification_txn_msg_get_eventdata
    - push_notification_message_fill
    - p_new
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messageappend_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_msg
      *msg, struct mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:21,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:23,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - name
    - idx_r
    argTypes:
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 30
    functionName: push_notification_driver_find
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c
    functionUses: 0
    functionsReached:
    - array_get
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: void push_notification_driver_find(const char *name, unsigned int *idx_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_filter
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:39,1
    - Dst: push_notification_driver_find
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:45,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:46,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - user
    - name
    - driver_r
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - struct push_notification_driver**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 55
    functionName: push_notification_driver_identify
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c
    functionUses: 0
    functionsReached:
    - settings_free
    - push_notification_driver_find
    - array_idx_elem
    - settings_get_filter
    linkageType: ''
    returnType: bool
    signature: "bool push_notification_driver_identify(struct mail_user *user, const
      char *name,\n\t\t\t\t  const struct push_notification_driver **driver_r,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_identify
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:67,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:70,1
    - Dst: struct push_notification_driver*::v::init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:78,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:80,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - user
    - config_in
    - pool
    - duser_r
    argTypes:
    - struct mail_user*
    - char*
    - pool_t
    - struct push_notification_driver_user**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 57
    functionDepth: 3
    functionLinenumber: 57
    functionLinenumberEnd: 87
    functionName: push_notification_driver_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c
    functionUses: 1
    functionsReached:
    - e_error
    - push_notification_driver_identify
    - T_END_PASS_STR_IF
    - struct push_notification_driver*::v::init
    linkageType: ''
    returnType: int
    signature: "int push_notification_driver_init(\n\tstruct mail_user *user, const
      char *config_in, pool_t pool,\n\tstruct push_notification_driver_user **duser_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:105,1
    - Dst: struct push_notification_driver*::v::cleanup
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 109
    functionName: push_notification_driver_cleanup_all
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c
    functionUses: 0
    functionsReached:
    - struct push_notification_driver*::v::cleanup
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void push_notification_driver_cleanup_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:118,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:119,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:120,1
    - Dst: va_end
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - label
    - user
    - fmt
    argTypes:
    - char*
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 122
    functionName: push_notification_driver_debug
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c
    functionUses: 0
    functionsReached:
    - e_debug
    - t_strdup_vprintf
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_debug(const char *label, struct mail_user
      *user,\n\t\t\t       const char *fmt, ...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:130,1
    - Dst: i_array_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:131,1
    - Dst: push_notification_driver_find
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:133,1
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:134,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - driver
    argTypes:
    - struct push_notification_driver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 139
    functionName: push_notification_driver_register
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - i_panic
    - array_push_back
    - push_notification_driver_find
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_register(\n\tconst struct push_notification_driver
      *driver)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_driver_find
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:146,1
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:147,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:151,1
    - Dst: array_delete
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:152,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:154,1
    - Dst: array_free
      Src: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - driver
    argTypes:
    - struct push_notification_driver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 157
    functionName: push_notification_driver_unregister
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c
    functionUses: 2
    functionsReached:
    - i_panic
    - array_delete
    - push_notification_driver_find
    - array_is_empty
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_unregister(\n\tconst struct push_notification_driver
      *driver)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:16,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:18,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - txn
    - box
    argTypes:
    - struct push_notification_txn*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 22
    functionName: push_notification_txn_mbox_create
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c
    functionUses: 1
    functionsReached:
    - p_new
    - mailbox_get_vname
    linkageType: ''
    returnType: struct push_notification_txn_mbox
    signature: "struct push_notification_txn_mbox *\npush_notification_txn_mbox_create(struct
      push_notification_txn *txn,\n\t\t\t\t  struct mailbox *box)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:29,1
    - Dst: duser::driver::v::process_mbox
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:31,1
    - Dst: push_notification_txn_mbox_deinit_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ptxn
    argTypes:
    - struct push_notification_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 38
    functionName: push_notification_txn_mbox_end
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - push_notification_txn_mbox_deinit_eventdata
    - duser::driver::v::process_mbox
    linkageType: ''
    returnType: void
    signature: void push_notification_txn_mbox_end(struct push_notification_txn *ptxn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:46,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:47,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - mbox
    - event_name
    argTypes:
    - struct push_notification_txn_mbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: push_notification_txn_mbox_get_eventdata
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void *\npush_notification_txn_mbox_get_eventdata(\n\tstruct push_notification_txn_mbox
      *mbox, const char *event_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:65,1
    - Dst: p_array_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:66,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:69,1
    - Dst: array_push_back
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - txn
    - mbox
    - event
    - data
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_txn_mbox*
    - struct push_notification_event_config*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 74
    functionName: push_notification_txn_mbox_set_eventdata
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c
    functionUses: 3
    functionsReached:
    - array_is_created
    - p_new
    - p_array_init
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void push_notification_txn_mbox_set_eventdata(\n\tstruct push_notification_txn
      *txn,\n\tstruct push_notification_txn_mbox *mbox,\n\tstruct push_notification_event_config
      *event, void *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:81,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:82,1
    - Dst: event::event::mbox::free_mbox
      Src: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c:85,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 90
    functionName: push_notification_txn_mbox_deinit_eventdata
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c
    functionUses: 1
    functionsReached:
    - array_foreach_modifiable
    - event::event::mbox::free_mbox
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void push_notification_txn_mbox_deinit_eventdata(\n\tstruct push_notification_txn_mbox
      *mbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 18
    functionName: push_notification_event_mailboxdelete_debug_mbox
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxdelete_debug_mbox(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.c:28,1
    - Dst: push_notification_txn_mbox_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ptxn
    - ec
    - mbox
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 33
    functionName: push_notification_event_mailboxdelete_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.c
    functionUses: 0
    functionsReached:
    - push_notification_txn_mbox_set_eventdata
    - p_new
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxdelete_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_mbox
      *mbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 20
    functionName: push_notification_event_messagetrash_debug_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messagetrash_debug_msg(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_notification_txn_msg_get_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c:33,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c:35,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c:37,1
    - Dst: push_notification_txn_msg_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - ptxn
    - ec
    - msg
    - mail
    - old_flags
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_msg*
    - struct mail*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 45
    functionName: push_notification_event_messagetrash_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c
    functionUses: 0
    functionsReached:
    - mail_get_flags
    - push_notification_txn_msg_get_eventdata
    - p_new
    - push_notification_txn_msg_set_eventdata
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_messagetrash_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_msg
      *msg, struct mail *mail,\n\tenum mail_flags old_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct push_notification_txn_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 19
    functionName: push_notification_event_mailboxcreate_debug_mbox
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxcreate_debug_mbox(\n\tstruct push_notification_txn_event
      *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c:30,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c:31,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c:34,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c:35,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c:39,1
    - Dst: push_notification_txn_mbox_set_eventdata
      Src: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ptxn
    - ec
    - mbox
    argTypes:
    - struct push_notification_txn*
    - struct push_notification_event_config*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 44
    functionName: push_notification_event_mailboxcreate_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c
    functionUses: 0
    functionsReached:
    - p_new
    - mailbox_get_last_internal_error
    - mailbox_get_status
    - e_error
    - mailbox_get_vname
    - push_notification_txn_mbox_set_eventdata
    linkageType: ''
    returnType: void
    signature: "void push_notification_event_mailboxcreate_event(\n\tstruct push_notification_txn
      *ptxn,\n\tstruct push_notification_event_config *ec,\n\tstruct push_notification_txn_mbox
      *mbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:27,1
    - Dst: event_add_category
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:28,1
    - Dst: push_notification_get_event_category
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:28,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:29,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - parent
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: create_dlog_event
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_create
    - push_notification_get_event_category
    - event_set_append_log_prefix
    - event_add_category
    linkageType: ''
    returnType: struct event
    signature: struct event *create_dlog_event(struct event *parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_dlog_event
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:39,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:40,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - user
    - pool
    - name
    - context_r
    - error_r
    argTypes:
    - struct mail_user*
    - pool_t
    - ATTR_UNUSED*
    - void**
    - ATTR_UNUSED**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 47
    functionName: push_notification_driver_dlog_init
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    functionUses: 0
    functionsReached:
    - e_debug
    - create_dlog_event
    - p_new
    linkageType: ''
    returnType: int
    signature: "int push_notification_driver_dlog_init(\n\tstruct mail_user *user,
      pool_t pool, ATTR_UNUSED const char *name,\n\tvoid **context_r, ATTR_UNUSED
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_dlog_event
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:53,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:54,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:59,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:62,1
    - Dst: push_notification_event_init
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - dtxn
    argTypes:
    - struct push_notification_driver_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 65
    functionName: push_notification_driver_dlog_begin_txn
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    functionUses: 0
    functionsReached:
    - create_dlog_event
    - p_new
    - array_foreach_elem
    - e_debug
    - push_notification_event_init
    linkageType: ''
    returnType: bool
    signature: "bool push_notification_driver_dlog_begin_txn(\n\tstruct push_notification_driver_txn
      *dtxn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:73,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:74,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:77,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:78,1
    - Dst: struct push_notification_txn_event*::event::event::mbox::debug_mbox
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - dtxn
    - mbox
    argTypes:
    - struct push_notification_driver_txn*
    - struct push_notification_txn_mbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: push_notification_driver_dlog_process_mbox
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_is_created
    - struct push_notification_txn_event*::event::event::mbox::debug_mbox
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_dlog_process_mbox(\n\tstruct push_notification_driver_txn
      *dtxn,\n\tstruct push_notification_txn_mbox *mbox)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:91,1
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:92,1
    - Dst: array_is_created
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:96,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:97,1
    - Dst: struct push_notification_txn_event*::event::event::msg::debug_msg
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - dtxn
    - msg
    argTypes:
    - struct push_notification_driver_txn*
    - struct push_notification_txn_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 102
    functionName: push_notification_driver_dlog_process_msg
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_is_created
    - struct push_notification_txn_event*::event::event::msg::debug_msg
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_dlog_process_msg(\n\tstruct push_notification_driver_txn
      *dtxn,\n\tstruct push_notification_txn_msg *msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:110,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dtxn
    - ATTR_UNUSED
    argTypes:
    - struct push_notification_driver_txn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 112
    functionName: push_notification_driver_dlog_end_txn
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    functionUses: 0
    functionsReached:
    - e_debug
    - event_unref
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_dlog_end_txn(\n\tstruct push_notification_driver_txn
      *dtxn,\n\tbool success ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:119,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - duser
    argTypes:
    - struct push_notification_driver_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 121
    functionName: push_notification_driver_dlog_deinit
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    functionUses: 0
    functionsReached:
    - e_debug
    - event_unref
    linkageType: ''
    returnType: void
    signature: "void push_notification_driver_dlog_deinit(\n\tstruct push_notification_driver_user
      *duser)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: push_notification_driver_dlog_cleanup
    functionSourceFile: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: void push_notification_driver_dlog_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: WELCOME_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WELCOME_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: program_client_destroy
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:66,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _wclient
    argTypes:
    - struct welcome_client_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: welcome_client_destroy
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 0
    functionsReached:
    - i_free
    - program_client_destroy
    linkageType: ''
    returnType: void
    signature: void welcome_client_destroy(struct welcome_client_list **_wclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ret
    - client
    argTypes:
    - enum program_client_exit_status
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: script_finish
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 0
    functionsReached:
    - e_error
    linkageType: ''
    returnType: void
    signature: "void script_finish(enum program_client_exit_status ret,\n\t\t\t  struct
      program_client *client)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:84,1
    - Dst: program_client_create_auto
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:85,1
    - Dst: program_client_run
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:95,1
    - Dst: script_finish
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:96,1
    - Dst: welcome_client_destroy
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:97,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:99,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - event
    - wait
    - error_r
    argTypes:
    - struct event*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 104
    functionName: script_execute
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 0
    functionsReached:
    - script_finish
    - welcome_client_destroy
    - program_client_run
    - program_client_run_async
    - program_client_create_auto
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: int
    signature: int script_execute(struct event *event, bool wait, const char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WELCOME_CONTEXT
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:110,1
    - Dst: struct welcome_mailbox*::module_ctx::super::create_box
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:112,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:117,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:118,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:119,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:120,1
    - Dst: script_execute
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:122,1
    - Dst: e_error
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:123,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:126,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 129
    functionName: welcome_create_box
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 0
    functionsReached:
    - event_create
    - WELCOME_CONTEXT
    - event_unref
    - event_set_append_log_prefix
    - settings_event_add_filter_name
    - settings_free
    - e_error
    - struct welcome_mailbox*::module_ctx::super::create_box
    - script_execute
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int welcome_create_box(struct mailbox *box,\n\t\t   const struct mailbox_update
      *update, bool directory)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:139,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 145
    functionName: welcome_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void welcome_mailbox_allocated(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: welcome_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void welcome_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: program_client_wait
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:164,1
    - Dst: welcome_client_destroy
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:165,1
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/welcome/welcome-plugin.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 170
    functionName: welcome_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - program_client_wait
    - welcome_client_destroy
    linkageType: ''
    returnType: void
    signature: void welcome_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: MAIL_LOG_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_LOG_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 160
    functionName: mail_log_field_find
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum mail_log_field
    signature: enum mail_log_field mail_log_field_find(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:166,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 175
    functionName: mail_log_event_find
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum mail_log_event
    signature: enum mail_log_event mail_log_event_find(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_log_field_find
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:186,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - arr
    - fields_r
    - error_r
    argTypes:
    - ARRAY_TYPE*
    - enum mail_log_field*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 195
    functionName: mail_log_parse_fields
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - mail_log_field_find
    linkageType: ''
    returnType: int
    signature: "int mail_log_parse_fields(const ARRAY_TYPE(const_string) *arr,\n\t\t
      \     enum mail_log_field *fields_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_log_field_find
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:186,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 193
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 113
    functionsReached:
    - t_strdup_printf
    - mail_log_field_find
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(arr, str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_log_event_find
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:206,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - arr
    - events_r
    - error_r
    argTypes:
    - ARRAY_TYPE*
    - enum mail_log_event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 215
    functionName: mail_log_parse_events
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - mail_log_event_find
    linkageType: ''
    returnType: int
    signature: "int mail_log_parse_events(const ARRAY_TYPE(const_string) *arr,\n\t\t
      \     enum mail_log_event *events_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_log_event_find
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:206,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 213
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 113
    functionsReached:
    - t_strdup_printf
    - mail_log_event_find
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(arr, str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_log_parse_fields
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:222,1
    - Dst: mail_log_parse_events
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 229
    functionName: mail_log_settings_check
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mail_log_parse_fields
    - mail_log_parse_events
    linkageType: ''
    returnType: bool
    signature: "bool mail_log_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LOG_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:234,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:236,1
    - Dst: struct mail_log_user*::module_ctx::super::deinit
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 238
    functionName: mail_log_user_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - struct mail_log_user*::module_ctx::super::deinit
    - MAIL_LOG_USER_CONTEXT
    - settings_free
    linkageType: ''
    returnType: void
    signature: void mail_log_user_deinit(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:246,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:250,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:252,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 257
    functionName: mail_log_mail_user_created
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - settings_get
    - MODULE_CONTEXT_SET
    - p_new
    - p_strdup
    linkageType: ''
    returnType: void
    signature: void mail_log_mail_user_created(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:263,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:264,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - str
    - mail
    argTypes:
    - string_t*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: mail_log_append_mailbox_name
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - str_sanitize
    - str_printfa
    - mailbox_get_vname
    linkageType: ''
    returnType: void
    signature: void mail_log_append_mailbox_name(string_t *str, struct mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_first_header_utf8
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:274,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:276,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - str
    - mail
    - name
    - header
    argTypes:
    - string_t*
    - struct mail*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 277
    functionName: mail_log_append_mail_header
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - str_sanitize
    - str_printfa
    - mail_get_first_header_utf8
    linkageType: ''
    returnType: void
    signature: "void mail_log_append_mail_header(string_t *str, struct mail *mail,\n\t\t\t
      \   const char *name, const char *header)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:284,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:287,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:288,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:288,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - msg
    - str
    - uid
    argTypes:
    - struct mail_log_mail_txn_context*
    - struct mail_log_message*
    - string_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 291
    functionName: mail_log_append_uid
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - str_truncate
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void mail_log_append_uid(struct mail_log_mail_txn_context *ctx,\n\t\t
      \   struct mail_log_message *msg, string_t *str, uint32_t uid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:308,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:308,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:310,1
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:318,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:319,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - mail
    - fields
    argTypes:
    - struct mail*
    - enum mail_log_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 320
    functionName: mail_log_update_wanted_fields
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_header_lookup_unref
    - mail_add_temp_wanted_fields
    - mailbox_header_lookup_init
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void mail_log_update_wanted_fields(struct mail *mail, enum mail_log_field
      fields)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LOG_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:328,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:333,1
    - Dst: mail_log_update_wanted_fields
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:336,1
    - Dst: t_str_new
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:338,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:339,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:340,1
    - Dst: mail_log_append_mailbox_name
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:342,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:343,1
    - Dst: mail_log_append_uid
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:348,1
    - Dst: mail_log_append_uid
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:352,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:356,1
    - Dst: mail_log_append_mail_header
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:359,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:360,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:363,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:364,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:366,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:367,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:370,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:371,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:373,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:374,1
    - Dst: mail_log_append_mail_header
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:377,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:378,1
    - Dst: mail_log_append_mail_header
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:381,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:382,1
    - Dst: str_printfa
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:385,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:386,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:386,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:387,1
    - Dst: str_append
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:388,1
    - Dst: str_truncate
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:390,1
    - Dst: str_len
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:390,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:393,1
    - Dst: str_c
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:393,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:394,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 4
    argNames:
    - ctx
    - mail
    - event
    - desc
    argTypes:
    - struct mail_log_mail_txn_context*
    - struct mail*
    - enum mail_log_event
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 395
    functionName: mail_log_append_mail_message_real
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - p_strdup
    - str_len
    - MAIL_LOG_USER_CONTEXT
    - mail_get_physical_size
    - t_str_new
    - p_new
    - mail_log_append_mail_header
    - mail_log_append_uid
    - mail_get_flags
    - mail_log_update_wanted_fields
    - DLLIST2_APPEND
    - imap_write_flags
    - mail_log_append_mailbox_name
    - mail_get_virtual_size
    - mail_get_keywords
    - str_truncate
    - str_append
    linkageType: ''
    returnType: void
    signature: "void mail_log_append_mail_message_real(struct mail_log_mail_txn_context
      *ctx,\n\t\t\t\t  struct mail *mail, enum mail_log_event event,\n\t\t\t\t  const
      char *desc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:402,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - event
    argTypes:
    - struct mail_log_mail_txn_context*
    - enum mail_log_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 406
    functionName: mail_log_add_dummy_msg
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - p_new
    - DLLIST2_APPEND
    linkageType: ''
    returnType: void
    signature: "void mail_log_add_dummy_msg(struct mail_log_mail_txn_context *ctx,\n\t\t\t\t
      \  enum mail_log_event event)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LOG_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:414,1
    - Dst: mail_log_add_dummy_msg
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:419,1
    - Dst: mail_log_append_mail_message_real
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:429,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - mail
    - event
    - desc
    argTypes:
    - struct mail_log_mail_txn_context*
    - struct mail*
    - enum mail_log_event
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 408
    functionDepth: 3
    functionLinenumber: 408
    functionLinenumberEnd: 431
    functionName: mail_log_append_mail_message
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mail_log_add_dummy_msg
    - MAIL_LOG_USER_CONTEXT
    - mail_log_append_mail_message_real
    linkageType: ''
    returnType: void
    signature: "void mail_log_append_mail_message(struct mail_log_mail_txn_context
      *ctx,\n\t\t\t     struct mail *mail, enum mail_log_event event,\n\t\t\t     const
      char *desc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:440,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:441,1
    - Dst: event_create
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 445
    functionName: mail_log_mail_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    linkageType: ''
    returnType: void
    signature: 'void *

      mail_log_mail_transaction_begin(struct mailbox_transaction_context *t ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_log_append_mail_message
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - txn
    - mail
    argTypes:
    - void*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 447
    functionDepth: 4
    functionLinenumber: 447
    functionLinenumberEnd: 453
    functionName: mail_log_mail_save
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mail_log_append_mail_message
    linkageType: ''
    returnType: void
    signature: void mail_log_mail_save(void *txn, struct mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:468,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:469,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:469,1
    - Dst: mail_log_append_mail_message
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - txn
    - src
    - dst
    argTypes:
    - void*
    - struct mail*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 455
    functionDepth: 4
    functionLinenumber: 455
    functionLinenumberEnd: 473
    functionName: mail_log_mail_copy
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - str_sanitize
    - mail_log_append_mail_message
    - t_strdup_printf
    - mailbox_get_vname
    linkageType: ''
    returnType: void
    signature: void mail_log_mail_copy(void *txn, struct mail *src, struct mail *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_log_append_mail_message
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - txn
    - mail
    argTypes:
    - void*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 483
    functionName: mail_log_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mail_log_append_mail_message
    linkageType: ''
    returnType: void
    signature: void mail_log_mail_expunge(void *txn, struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_flags
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:490,1
    - Dst: mail_log_append_mail_message
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:493,1
    - Dst: mail_log_append_mail_message
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:497,1
    - Dst: mail_log_append_mail_message
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - txn
    - mail
    - old_flags
    argTypes:
    - void*
    - struct mail*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 485
    functionDepth: 4
    functionLinenumber: 485
    functionLinenumberEnd: 503
    functionName: mail_log_mail_update_flags
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mail_log_append_mail_message
    - mail_get_flags
    linkageType: ''
    returnType: void
    signature: "void mail_log_mail_update_flags(void *txn, struct mail *mail,\n\t\t\t\t
      \      enum mail_flags old_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_log_append_mail_message
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - txn
    - mail
    - old_keywords ATTR_UNUSED
    argTypes:
    - void*
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 505
    functionDepth: 4
    functionLinenumber: 505
    functionLinenumberEnd: 514
    functionName: mail_log_mail_update_keywords
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mail_log_append_mail_message
    linkageType: ''
    returnType: void
    signature: "void mail_log_mail_update_keywords(void *txn, struct mail *mail,\n\t\t\t
      \     const char *const *old_keywords ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:522,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:524,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - msg
    - uid
    - event
    argTypes:
    - struct mail_log_message*
    - uint32_t
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 527
    functionName: mail_log_save
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - e_info
    linkageType: ''
    returnType: void
    signature: "void mail_log_save(const struct mail_log_message *msg, uint32_t uid,\n\t\t\t
      \ struct event *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:540,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:544,1
    - Dst: mail_log_save
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:546,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:548,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:549,1
    - Dst: i_assert
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:552,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:552,1
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:554,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:555,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - txn
    - changes
    argTypes:
    - void*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 556
    functionName: mail_log_mail_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - e_info
    - event_unref
    - seq_range_array_iter_init
    - pool_unref
    - mail_log_save
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_log_mail_transaction_commit(void *txn,\n\t\t\t\t struct
      mail_transaction_commit_changes *changes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:563,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - txn
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 565
    functionName: mail_log_mail_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - event_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void mail_log_mail_transaction_rollback(void *txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LOG_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:570,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 576
    functionName: mail_log_mailbox_create
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - e_info
    - MAIL_LOG_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_log_mailbox_create(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LOG_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:581,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:586,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - box
    argTypes:
    - void*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 587
    functionName: mail_log_mailbox_delete_commit
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - e_info
    - MAIL_LOG_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_log_mailbox_delete_commit(void *txn ATTR_UNUSED, struct mailbox
      *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_LOG_USER_CONTEXT
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:592,1
    - Dst: e_info
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:597,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:598,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:598,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:599,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 589
    functionDepth: 1
    functionLinenumber: 589
    functionLinenumberEnd: 600
    functionName: mail_log_mailbox_rename
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - str_sanitize
    - e_info
    - MAIL_LOG_USER_CONTEXT
    - mailbox_get_vname
    linkageType: ''
    returnType: void
    signature: void mail_log_mailbox_rename(struct mailbox *src, struct mailbox *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_register
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:624,1
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 622
    functionDepth: 2
    functionLinenumber: 622
    functionLinenumberEnd: 626
    functionName: mail_log_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    - notify_register
    linkageType: ''
    returnType: void
    signature: void mail_log_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:630,1
    - Dst: notify_unregister
      Src: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c:631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 632
    functionName: mail_log_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    - notify_unregister
    linkageType: ''
    returnType: void
    signature: void mail_log_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 10
    functionName: DEF
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: LAZY_EXPUNGE_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LAZY_EXPUNGE_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: LAZY_EXPUNGE_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LAZY_EXPUNGE_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: LAZY_EXPUNGE_MAIL_CONTEXT
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LAZY_EXPUNGE_MAIL_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: LAZY_EXPUNGE_MAIL_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LAZY_EXPUNGE_MAIL_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 66
    functionName: mailbox_alloc
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 67
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_alloc(ns->list, lazy_expunge_mailbox,\n\t\t\t    MAILBOX_FLAG_NO_INDEX_FILES
      |\n\t\t\t    MAILBOX_FLAG_SAVEONLY | MAILBOX_FLAG_IGNORE_ACLS);\n\tif (mailbox_open(box)
      == 0)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:103,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:105,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:108,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:109,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:110,1
    - Dst: p_strdup
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:112,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:113,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - lt
    - guid
    argTypes:
    - struct lazy_expunge_transaction*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 118
    functionName: lazy_expunge_count_in_transaction
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - POINTER_CAST
    - hash_table_create
    - hash_table_update
    - hash_table_insert
    - POINTER_CAST_TO
    - hash_table_lookup
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int lazy_expunge_count_in_transaction(struct lazy_expunge_transaction
      *lt,\n\t\t\t\t  const char *guid)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:124,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:133,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:134,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:141,1
    - Dst: str_to_ulong
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:151,1
    - Dst: i_panic
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:152,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:160,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:161,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:166,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:173,1
    - Dst: lazy_expunge_count_in_transaction
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:177,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 180
    functionName: lazy_expunge_mail_is_last_instance
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mailbox_get_last_internal_error
    - mail_set_critical
    - str_to_ulong
    - lazy_expunge_count_in_transaction
    - LAZY_EXPUNGE_CONTEXT_REQUIRE
    - mail_get_special
    linkageType: ''
    returnType: int
    signature: int lazy_expunge_mail_is_last_instance(struct mail *_mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:188,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:198,1
    - Dst: i_strdup
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:200,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - lt
    - storage
    argTypes:
    - struct lazy_expunge_transaction*
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 201
    functionName: lazy_expunge_set_error
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - mail_storage_get_last_error
    - mail_storage_get_last_internal_error
    linkageType: ''
    returnType: void
    signature: "void lazy_expunge_set_error(struct lazy_expunge_transaction *lt,\n\t\t\t\t
      \  struct mail_storage *storage)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_MAIL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:209,1
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:211,1
    - Dst: mailbox_open_or_create
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:216,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:219,1
    - Dst: lazy_expunge_set_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:222,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:225,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:226,1
    - Dst: lazy_expunge_set_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:228,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:229,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:233,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:238,1
    - Dst: mailbox_save_copy_flags
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:239,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:240,1
    - Dst: mailbox_move
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:243,1
    - Dst: lazy_expunge_set_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - _mail
    - lazy_expunge_mailbox
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 246
    functionName: lazy_expunge_mail_expunge_move
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_transaction_begin
    - mail_set_critical
    - mailbox_save_alloc
    - ENUM_NEGATE
    - mailbox_open_or_create
    - LAZY_EXPUNGE_MAIL_CONTEXT_REQUIRE
    - mailbox_sync
    - mailbox_move
    - lazy_expunge_set_error
    - mailbox_save_copy_flags
    - LAZY_EXPUNGE_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: "void lazy_expunge_mail_expunge_move(struct mail *_mail,\n\t\t\t\t\t
      \  const char *lazy_expunge_mailbox)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:251,1
    - Dst: LAZY_EXPUNGE_MAIL_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:254,1
    - Dst: struct lazy_expunge_mail*::module_ctx::super::expunge
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:262,1
    - Dst: mail_get_backend_mail
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:271,1
    - Dst: lazy_expunge_set_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:272,1
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:276,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:279,1
    - Dst: struct lazy_expunge_mail*::module_ctx::super::expunge
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:280,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:285,1
    - Dst: lazy_expunge_mail_is_last_instance
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:295,1
    - Dst: lazy_expunge_set_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:297,1
    - Dst: lazy_expunge_mail_expunge_move
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:301,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:302,1
    - Dst: struct lazy_expunge_mail*::module_ctx::super::expunge
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:308,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 248
    functionDepth: 3
    functionLinenumber: 248
    functionLinenumberEnd: 310
    functionName: lazy_expunge_mail_expunge
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lazy_expunge_mail_expunge_move
    - event_reason_begin
    - LAZY_EXPUNGE_MAIL_CONTEXT_REQUIRE
    - event_reason_end
    - lazy_expunge_set_error
    - LAZY_EXPUNGE_CONTEXT_REQUIRE
    - lazy_expunge_mail_is_last_instance
    - struct lazy_expunge_mail*::module_ctx::super::expunge
    - mail_get_backend_mail
    linkageType: ''
    returnType: void
    signature: void lazy_expunge_mail_expunge(struct mail *_mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:314,1
    - Dst: settings_free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:316,1
    - Dst: struct lazy_expunge_mailbox*::module_ctx::super::free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 318
    functionName: lazy_expunge_mailbox_free
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - struct lazy_expunge_mailbox*::module_ctx::super::free
    - settings_free
    - LAZY_EXPUNGE_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void lazy_expunge_mailbox_free(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:324,1
    - Dst: LAZY_EXPUNGE_MAIL_CONTEXT
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:325,1
    - Dst: struct lazy_expunge_mailbox*::module_ctx::super::copy
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - _mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 330
    functionName: lazy_expunge_copy
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - LAZY_EXPUNGE_MAIL_CONTEXT
    - struct lazy_expunge_mailbox*::module_ctx::super::copy
    - LAZY_EXPUNGE_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int lazy_expunge_copy(struct mail_save_context *ctx, struct mail *_mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:337,1
    - Dst: struct lazy_expunge_mailbox*::module_ctx::super::transaction_begin
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:341,1
    - Dst: i_new
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:342,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 346
    functionName: lazy_expunge_transaction_begin
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - struct lazy_expunge_mailbox*::module_ctx::super::transaction_begin
    - MODULE_CONTEXT_SET
    - i_new
    - LAZY_EXPUNGE_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nlazy_expunge_transaction_begin(struct
      mailbox *box,\n\t\t\t       enum mailbox_transaction_flags flags,\n\t\t\t       const
      char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:351,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:353,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:354,1
    - Dst: pool_unref
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:355,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:356,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:357,1
    - Dst: i_free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - lt
    argTypes:
    - struct lazy_expunge_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 359
    functionName: lazy_expunge_transaction_free
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_transaction_rollback
    - pool_unref
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void lazy_expunge_transaction_free(struct lazy_expunge_transaction
      *lt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:366,1
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:367,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:371,1
    - Dst: lazy_expunge_set_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:372,1
    - Dst: struct lazy_expunge_mailbox*::module_ctx::super::transaction_commit
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:377,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:379,1
    - Dst: struct lazy_expunge_mailbox*::module_ctx::super::transaction_rollback
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:381,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:384,1
    - Dst: struct lazy_expunge_mailbox*::module_ctx::super::transaction_rollback
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:387,1
    - Dst: lazy_expunge_transaction_free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:390,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 392
    functionName: lazy_expunge_transaction_commit
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - struct lazy_expunge_mailbox*::module_ctx::super::transaction_rollback
    - struct lazy_expunge_mailbox*::module_ctx::super::transaction_commit
    - lazy_expunge_set_error
    - mailbox_transaction_commit
    - LAZY_EXPUNGE_CONTEXT_REQUIRE
    - mailbox_set_critical
    - lazy_expunge_transaction_free
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int lazy_expunge_transaction_commit(struct mailbox_transaction_context
      *ctx,\n\t\t\t\tstruct mail_transaction_commit_changes *changes_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:398,1
    - Dst: LAZY_EXPUNGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:399,1
    - Dst: struct lazy_expunge_mailbox*::module_ctx::super::transaction_rollback
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:401,1
    - Dst: lazy_expunge_transaction_free
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 403
    functionName: lazy_expunge_transaction_rollback
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - lazy_expunge_transaction_free
    - struct lazy_expunge_mailbox*::module_ctx::super::transaction_rollback
    - LAZY_EXPUNGE_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void lazy_expunge_transaction_rollback(struct mailbox_transaction_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LAZY_EXPUNGE_CONTEXT
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:408,1
    - Dst: p_new
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:416,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 422
    functionName: lazy_expunge_mail_allocated
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - LAZY_EXPUNGE_CONTEXT
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void lazy_expunge_mail_allocated(struct mail *_mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:434,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:437,1
    - Dst: settings_get
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:439,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:441,1
    - Dst: strcmp
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:447,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 456
    functionName: lazy_expunge_mailbox_allocated
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - MODULE_CONTEXT_SET
    - mailbox_set_critical
    - settings_get
    linkageType: ''
    returnType: void
    signature: void lazy_expunge_mailbox_allocated(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 466
    functionName: lazy_expunge_plugin_init
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_add
    linkageType: ''
    returnType: void
    signature: void lazy_expunge_plugin_init(struct module *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_remove
      Src: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c:470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 471
    functionName: lazy_expunge_plugin_deinit
    functionSourceFile: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    functionUses: 0
    functionsReached:
    - mail_storage_hooks_remove
    linkageType: ''
    returnType: void
    signature: void lazy_expunge_plugin_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_unload
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 17
    functionName: var_expand_crypt_unload
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c
    functionUses: 0
    functionsReached:
    - module_dir_unload
    linkageType: ''
    returnType: void
    signature: void var_expand_crypt_unload(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_load
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:30,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:31,1
    - Dst: lib_atexit
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 33
    functionName: var_expand_crypt_load
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c
    functionUses: 0
    functionsReached:
    - module_dir_load
    - module_dir_init
    - lib_atexit
    linkageType: ''
    returnType: void
    signature: void var_expand_crypt_load(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - encrypt
    - decrypt
    argTypes:
    - var_expand_filter_func_t*
    - var_expand_filter_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 41
    functionName: expansion_filter_crypt_set_functions
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void expansion_filter_crypt_set_functions(var_expand_filter_func_t
      *encrypt,\n\t\t\t\t\t  var_expand_filter_func_t *decrypt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_crypt_load
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:48,1
    - Dst: fn_encrypt
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: expansion_filter_encrypt
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c
    functionUses: 0
    functionsReached:
    - fn_encrypt
    - var_expand_crypt_load
    linkageType: ''
    returnType: int
    signature: "int expansion_filter_encrypt(const struct var_expand_statement *stmt,\n\t\t\t
      struct var_expand_state *state, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_crypt_load
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:57,1
    - Dst: fn_decrypt
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 59
    functionName: expansion_filter_decrypt
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c
    functionUses: 0
    functionsReached:
    - var_expand_crypt_load
    - fn_decrypt
    linkageType: ''
    returnType: int
    signature: "int expansion_filter_decrypt(const struct var_expand_statement *stmt,\n\t\t\t
      struct var_expand_state *state, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:29,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:31,1
    - Dst: var_expand_state_unset_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:33,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:36,1
    - Dst: var_expand_state_lookup_variable
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:39,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:40,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 45
    functionName: fn_lookup
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - var_expand_state_lookup_variable
    - var_expand_parameter_key
    - var_expand_state_unset_transfer
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_string_or_var
    linkageType: ''
    returnType: int
    signature: "int fn_lookup(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:51,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:53,1
    - Dst: str_lcase
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: fn_lower
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - str_lcase
    - ERROR_IF_NO_TRANSFER_TO
    - str_c_modifiable
    linkageType: ''
    returnType: int
    signature: "int fn_lower(const struct var_expand_statement *stmt,\n\t\t    struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:62,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:64,1
    - Dst: str_ucase
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 67
    functionName: fn_upper
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - str_ucase
    - ERROR_IF_NO_TRANSFER_TO
    - str_c_modifiable
    linkageType: ''
    returnType: int
    signature: "int fn_upper(const struct var_expand_statement *stmt,\n\t\t    struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:80,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:81,1
    - Dst: var_expand_parameter_any_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:82,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:88,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 91
    functionName: fn_default
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - var_expand_parameter_key
    - var_expand_parameter_any_or_var
    - ERROR_UNSUPPORTED_KEY
    linkageType: ''
    returnType: int
    signature: "int fn_default(const struct var_expand_statement *stmt,\n\t\t      struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:100,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:102,1
    - Dst: var_expand_parameter_any_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:104,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 108
    functionName: fn_literal
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - var_expand_parameter_key
    - var_expand_parameter_any_or_var
    - ERROR_UNSUPPORTED_KEY
    linkageType: ''
    returnType: int
    signature: "int fn_literal(const struct var_expand_statement *stmt,\n\t\t      struct
      var_expand_state *state,\n\t\t      const char **error_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:116,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:122,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:124,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:125,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:127,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:129,1
    - Dst: var_expand_parameter_number
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:131,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:138,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:147,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:160,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:166,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:166,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:171,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:171,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:202,1
    - Dst: var_expand_state_unset_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:207,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:208,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 71
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 211
    functionName: fn_calculate
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - dec2str
    - str_c
    - str_printfa
    - ERROR_IF_NO_TRANSFER_TO
    - i_unreached
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - var_expand_parameter_number
    - I_MIN
    - str_to_intmax
    - var_expand_parameter_iter_more
    - var_expand_state_unset_transfer
    - var_expand_parameter_idx
    - var_expand_parameter_number_or_var
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_calculate(const struct var_expand_statement *stmt,\n\t\t\tstruct
      var_expand_state *state, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:218,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:222,1
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:225,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:227,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:229,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:231,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:233,1
    - Dst: var_expand_parameter_any_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:234,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:236,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:239,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 241
    functionName: fn_concat
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - var_expand_parameter_iter_more
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_any_or_var
    - var_expand_state_set_transfer_data
    - str_append
    - str_append_data
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_concat(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:249,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:251,1
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:260,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:261,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:263,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:264,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:267,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:269,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:272,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:273,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:274,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:277,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:278,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:282,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:285,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:287,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:288,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:294,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:296,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:296,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:297,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:298,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:299,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:300,1
    - Dst: var_expand_state_set_transfer_binary
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:303,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 5
    argNames:
    - stmt
    - algo
    - algo_from_param
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - char*
    - bool
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 306
    functionName: fn_hash_algo
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_parameter_iter_init
    - strlen
    - t_strdup_printf
    - buffer_set_used_size
    - var_expand_parameter_idx
    - buffer_append
    - var_expand_parameter_key
    - var_expand_state_set_transfer_binary
    - hash_method_lookup
    - ERROR_IF_NO_TRANSFER_TO
    - struct hash_method*::loop
    - struct hash_method*::result
    - var_expand_parameter_iter_more
    - var_expand_parameter_number_or_var
    - i_assert
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    - strcmp
    - struct hash_method*::init
    - t_buffer_create
    - ERROR_UNSUPPORTED_KEY
    linkageType: ''
    returnType: int
    signature: "int fn_hash_algo(const struct var_expand_statement *stmt, const char
      *algo,\n\t\t\tbool algo_from_param, struct var_expand_state *state,\n\t\t\tconst
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:316,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:319,1
    - Dst: fn_hash_algo
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 323
    functionName: fn_hash
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_hash_algo
    - var_expand_parameter_string_or_var
    - var_expand_parameter_idx
    linkageType: ''
    returnType: int
    signature: "int fn_hash(const struct var_expand_statement *stmt,\n\t\t   struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_hash_algo
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: fn_md5
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_hash_algo
    linkageType: ''
    returnType: int
    signature: "int fn_md5(const struct var_expand_statement *stmt,\n\t\t  struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_hash_algo
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 336
    functionName: fn_sha1
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_hash_algo
    linkageType: ''
    returnType: int
    signature: "int fn_sha1(const struct var_expand_statement *stmt,\n\t\t   struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_hash_algo
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 2
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: fn_sha256
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_hash_algo
    linkageType: ''
    returnType: int
    signature: "int fn_sha256(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_hash_algo
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 348
    functionName: fn_sha384
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_hash_algo
    linkageType: ''
    returnType: int
    signature: "int fn_sha384(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_hash_algo
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 354
    functionName: fn_sha512
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_hash_algo
    linkageType: ''
    returnType: int
    signature: "int fn_sha512(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:362,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:363,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:365,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:366,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:370,1
    - Dst: var_expand_parameter_bool_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:371,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:376,1
    - Dst: var_expand_parameter_bool_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:377,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:383,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:386,1
    - Dst: t_base64_scheme_encode
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:389,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:391,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:391,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 393
    functionName: fn_base64
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - var_expand_state_set_transfer
    - str_c
    - ERROR_IF_NO_TRANSFER_TO
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - t_base64_scheme_encode
    - var_expand_parameter_iter_more
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_bool_or_var
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_base64(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:401,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:402,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:404,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:405,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:409,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:410,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:421,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:422,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:434,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:437,1
    - Dst: t_base64_scheme_decode
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:440,1
    - Dst: var_expand_state_set_transfer_binary
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:442,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 444
    functionName: fn_unbase64
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ERROR_IF_NO_TRANSFER_TO
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - t_base64_scheme_decode
    - var_expand_state_set_transfer_binary
    - var_expand_parameter_iter_more
    - var_expand_parameter_number_or_var
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_unbase64(const struct var_expand_statement *stmt,\n\t\t       struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:453,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:454,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:456,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:457,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:459,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:460,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:462,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:466,1
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:468,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:468,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:473,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:474,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:478,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:479,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:480,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:482,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:483,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:484,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:484,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 488
    functionName: fn_hex
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - str_append_c
    - ERROR_IF_NO_TRANSFER_TO
    - str_len
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - str_insert
    - str_delete
    - var_expand_parameter_iter_more
    - str_to_uintmax
    - str_truncate
    - var_expand_parameter_idx
    - var_expand_parameter_number_or_var
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_hex(const struct var_expand_statement *stmt,\n\t\t  struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:494,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:498,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:498,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:503,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 506
    functionName: fn_unhex
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - dec2str
    - str_c
    - ERROR_IF_NO_TRANSFER_TO
    - str_to_uintmax_hex
    linkageType: ''
    returnType: int
    signature: "int fn_unhex(const struct var_expand_statement *stmt,\n\t\t    struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:515,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:517,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:518,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:527,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:530,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:531,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:535,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:536,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:538,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:539,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:540,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:542,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:543,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 546
    functionName: fn_hexlify
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - str_c
    - t_str_new
    - str_append_c
    - ERROR_IF_NO_TRANSFER_TO
    - var_expand_parameter_key
    - strlen
    - t_strndup
    - var_expand_parameter_number_or_var
    - str_append
    - binary_to_hex
    - ERROR_UNSUPPORTED_KEY
    linkageType: ''
    returnType: int
    signature: "int fn_hexlify(const struct var_expand_statement *stmt,\n\t\t      struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:552,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:559,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:560,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:560,1
    - Dst: var_expand_state_set_transfer_binary
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:561,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 567
    functionName: fn_unhexlify
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - str_c
    - ERROR_IF_NO_TRANSFER_TO
    - hex_to_binary
    - t_buffer_create
    - var_expand_state_set_transfer_binary
    linkageType: ''
    returnType: int
    signature: "int fn_unhexlify(const struct var_expand_statement *stmt,\n\t\t\tstruct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:573,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:575,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:578,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 582
    functionName: fn_reverse
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - buffer_append_c
    - t_buffer_create
    - ERROR_IF_NO_TRANSFER_TO
    - var_expand_state_set_transfer_data
    linkageType: ''
    returnType: int
    signature: "int fn_reverse(const struct var_expand_statement *stmt,\n\t\t      struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:593,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:594,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:596,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:597,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:598,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:600,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:609,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:611,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:620,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:630,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:632,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:633,1
    - Dst: buffer_truncate_rshift_bits
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:636,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:638,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:640,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 643
    functionName: fn_truncate
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_parameter_idx
    - ERROR_IF_NO_TRANSFER_TO
    - buffer_truncate_rshift_bits
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - buffer_append_buf
    - t_buffer_create
    - buffer_set_used_size
    - var_expand_parameter_iter_more
    - var_expand_state_set_transfer_data
    - null_strcmp
    - var_expand_parameter_number_or_var
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_truncate(const struct var_expand_statement *stmt,\n\t\t       struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:654,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:655,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:658,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:659,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:661,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:662,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:665,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:668,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:680,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:693,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:722,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:725,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:725,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:726,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:727,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 60
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 730
    functionName: fn_substr
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_parameter_idx
    - CONST_PTR_OFFSET
    - ERROR_IF_NO_TRANSFER_TO
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - var_expand_parameter_iter_more
    - var_expand_state_set_transfer_data
    - pool_datastack_create
    - var_expand_parameter_number_or_var
    - ERROR_UNSUPPORTED_KEY
    - p_memdup
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_substr(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:736,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:738,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:739,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:743,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:745,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:749,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 751
    functionName: fn_ldap_dn
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - ERROR_IF_NO_TRANSFER_TO
    - str_append
    - var_expand_state_set_transfer_data
    linkageType: ''
    returnType: int
    signature: "int fn_ldap_dn(const struct var_expand_statement *stmt,\n\t\t      struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:756,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:756,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:758,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:759,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:760,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:761,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:762,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:765,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:768,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:774,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:776,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 777
    functionName: fix_replacement_pattern
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - str_append_c
    - i_isdigit
    - strlen
    - str_append
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char *fix_replacement_pattern(const char *pattern)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:789,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:790,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:792,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:793,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:795,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:797,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:800,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:822,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:824,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:825,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:825,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:827,1
    - Dst: fix_replacement_pattern
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:829,1
    - Dst: dregex_replace
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:832,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:835,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 779
    functionDepth: 2
    functionLinenumber: 779
    functionLinenumberEnd: 838
    functionName: fn_regexp
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - strchr
    - ERROR_IF_NO_TRANSFER_TO
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - strlen
    - fix_replacement_pattern
    - var_expand_parameter_iter_more
    - var_expand_state_set_transfer_data
    - dregex_replace
    - var_expand_parameter_idx
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_regexp(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:844,1
    - Dst: be8_to_cpu_unaligned
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:852,1
    - Dst: le8_to_cpu_unaligned
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:854,1
    - Dst: be16_to_cpu_unaligned
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:857,1
    - Dst: le16_to_cpu_unaligned
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:859,1
    - Dst: be32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:862,1
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:864,1
    - Dst: be64_to_cpu_unaligned
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:867,1
    - Dst: le64_to_cpu_unaligned
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:869,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:871,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:876,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:876,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - stmt
    - be
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - bool
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 878
    functionName: fn_number
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - dec2str
    - le64_to_cpu_unaligned
    - ERROR_IF_NO_TRANSFER_TO
    - le8_to_cpu_unaligned
    - le16_to_cpu_unaligned
    - t_strdup_printf
    - le32_to_cpu_unaligned
    - be16_to_cpu_unaligned
    - be64_to_cpu_unaligned
    - be32_to_cpu_unaligned
    - be8_to_cpu_unaligned
    linkageType: ''
    returnType: int
    signature: "int fn_number(const struct var_expand_statement *stmt, bool be,\n\t\t
      \    struct var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_number
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 880
    functionDepth: 2
    functionLinenumber: 880
    functionLinenumberEnd: 884
    functionName: fn_be_number
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_number
    linkageType: ''
    returnType: int
    signature: "int fn_be_number(const struct var_expand_statement *stmt,\n\t\t\tstruct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_number
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 886
    functionDepth: 2
    functionLinenumber: 886
    functionLinenumberEnd: 890
    functionName: fn_le_number
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_number
    linkageType: ''
    returnType: int
    signature: "int fn_le_number(const struct var_expand_statement *stmt,\n\t\t\tstruct
      var_expand_state *state, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:897,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:898,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:898,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:899,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:900,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:902,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:903,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:904,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:905,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:906,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:908,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:909,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:912,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:914,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:919,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:921,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - state
    - index
    - separator
    - error_r
    argTypes:
    - struct var_expand_state*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 923
    functionName: fn_index_common
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - str_c
    - str_len
    - array_push_back
    - strlen
    - array_count
    - array_idx_elem
    - t_array_init
    - t_strdup_until
    - ARRAY_TYPE
    - t_strdup
    - i_assert
    - CONST_PTR_OFFSET
    - strstr
    linkageType: ''
    returnType: int
    signature: "int fn_index_common(struct var_expand_state *state, int index,\n\t\t\t
      \  const char *separator, const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:935,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:936,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:938,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:939,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:942,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:943,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:945,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:950,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:975,1
    - Dst: fn_index_common
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:977,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 925
    functionDepth: 2
    functionLinenumber: 925
    functionLinenumberEnd: 978
    functionName: fn_index
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - ERROR_IF_NO_TRANSFER_TO
    - fn_index_common
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - var_expand_parameter_iter_more
    - var_expand_parameter_idx
    - var_expand_parameter_number_or_var
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_index(const struct var_expand_statement *stmt,\n\t\t    struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:984,1
    - Dst: fn_index_common
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 980
    functionDepth: 2
    functionLinenumber: 980
    functionLinenumberEnd: 987
    functionName: fn_username
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_index_common
    - ERROR_IF_NO_TRANSFER_TO
    linkageType: ''
    returnType: int
    signature: "int fn_username(const struct var_expand_statement *stmt,\n\t\t       struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:993,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:997,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:998,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:998,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 989
    functionDepth: 1
    functionLinenumber: 989
    functionLinenumberEnd: 1000
    functionName: fn_domain
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - str_c
    - i_strchr_to_next
    - ERROR_IF_NO_TRANSFER_TO
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int fn_domain(const struct var_expand_statement *stmt,\n\t\t     struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1008,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1009,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1011,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1012,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1014,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1015,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1017,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1022,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1025,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1025,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1027,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1027,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1030
    functionName: fn_list
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - str_c
    - ERROR_IF_NO_TRANSFER_TO
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - t_strsplit_tabescaped
    - t_strarray_join
    - var_expand_parameter_iter_more
    - var_expand_parameter_idx
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_list(const struct var_expand_statement *stmt,\n\t\t   struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1041,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1042,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1044,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1045,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1049,1
    - Dst: var_expand_parameter_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1051,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1053,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1063,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1077,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1080,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1082,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1084,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 4
    argNames:
    - stmt
    - left
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - bool
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1032
    functionDepth: 1
    functionLinenumber: 1032
    functionLinenumberEnd: 1088
    functionName: fn_fill
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - ERROR_IF_NO_TRANSFER_TO
    - str_len
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - str_insert
    - var_expand_parameter_iter_more
    - var_expand_parameter_idx
    - str_append
    - var_expand_parameter_number_or_var
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int fn_fill(const struct var_expand_statement *stmt, bool left,\n\t\t
      \  struct var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_fill
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1090
    functionDepth: 2
    functionLinenumber: 1090
    functionLinenumberEnd: 1094
    functionName: fn_rfill
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_fill
    linkageType: ''
    returnType: int
    signature: "int fn_rfill(const struct var_expand_statement *stmt,\n\t\t    struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fn_fill
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1099,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1096
    functionDepth: 2
    functionLinenumber: 1096
    functionLinenumberEnd: 1100
    functionName: fn_lfill
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - fn_fill
    linkageType: ''
    returnType: int
    signature: "int fn_lfill(const struct var_expand_statement *stmt,\n\t\t    struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1106,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1107,1
    - Dst: str_sanitize_append_utf8
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1108,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1108,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1109,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1102
    functionDepth: 1
    functionLinenumber: 1102
    functionLinenumberEnd: 1111
    functionName: fn_text
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - str_c
    - t_str_new
    - ERROR_IF_NO_TRANSFER_TO
    - str_sanitize_append_utf8
    linkageType: ''
    returnType: int
    signature: "int fn_text(const struct var_expand_statement *stmt,\n\t\t   struct
      var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1154
    functionDepth: 1
    functionLinenumber: 1154
    functionLinenumberEnd: 1157
    functionName: var_expand_free_filters
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void var_expand_free_filters(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1161,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1162,1
    - Dst: lib_atexit
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1163,1
    - Dst: var_expand_is_filter
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1165,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1166,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - name
    - filter
    argTypes:
    - char*
    - var_expand_filter_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1159
    functionDepth: 1
    functionLinenumber: 1159
    functionLinenumberEnd: 1173
    functionName: var_expand_register_filter
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - var_expand_is_filter
    - lib_atexit
    - array_push_back
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void var_expand_register_filter(const char *name, var_expand_filter_func_t
      *const filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_find_filter
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1175
    functionDepth: 1
    functionLinenumber: 1175
    functionLinenumberEnd: 1179
    functionName: var_expand_is_filter
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 1
    functionsReached:
    - var_expand_find_filter
    linkageType: ''
    returnType: bool
    signature: bool var_expand_is_filter(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1183,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1183,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1186,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1187,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1188,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1189,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1181
    functionDepth: 1
    functionLinenumber: 1181
    functionLinenumberEnd: 1194
    functionName: var_expand_unregister_filter
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_delete
    - i_unreached
    - array_foreach
    - array_foreach_idx
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void var_expand_unregister_filter(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1199,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1205,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1208,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter.c:1209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - name
    - fn_r
    argTypes:
    - char*
    - var_expand_filter_func_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1196
    functionDepth: 1
    functionLinenumber: 1196
    functionLinenumberEnd: 1217
    functionName: var_expand_find_filter
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_is_created
    - array_foreach
    linkageType: ''
    returnType: int
    signature: int var_expand_find_filter(const char *name, var_expand_filter_func_t
      **fn_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - param
    argTypes:
    - struct var_expand_parameter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 16
    functionName: var_expand_parameter_key
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *var_expand_parameter_key(const struct var_expand_parameter *param)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - param
    argTypes:
    - struct var_expand_parameter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: var_expand_parameter_idx
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int var_expand_parameter_idx(const struct var_expand_parameter *param)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_state_lookup_variable
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:34,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:37,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:38,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:43,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - state
    - param
    - value_r
    - error_r
    argTypes:
    - struct var_expand_state*
    - struct var_expand_parameter*
    - intmax_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 49
    functionName: var_expand_parameter_number_or_var
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 9
    functionsReached:
    - var_expand_state_lookup_variable
    - t_strdup_printf
    - str_to_intmax
    linkageType: ''
    returnType: int
    signature: "int var_expand_parameter_number_or_var(const struct var_expand_state
      *state,\n\t\t\t\t       const struct var_expand_parameter *param,\n\t\t\t\t
      \      intmax_t *value_r, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:56,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - state
    - param
    - value_r
    - error_r
    argTypes:
    - struct var_expand_state*
    - struct var_expand_parameter*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 67
    functionName: var_expand_parameter_bool_or_var
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    - var_expand_parameter_number_or_var
    linkageType: ''
    returnType: int
    signature: "int var_expand_parameter_bool_or_var(const struct var_expand_state
      *state,\n\t\t\t\t     const struct var_expand_parameter *param,\n\t\t\t\t     bool
      *value_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_state_lookup_variable
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:78,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - state
    - param
    - value_r
    - error_r
    argTypes:
    - struct var_expand_state*
    - struct var_expand_parameter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 89
    functionName: var_expand_parameter_string_or_var
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 9
    functionsReached:
    - var_expand_state_lookup_variable
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int var_expand_parameter_string_or_var(const struct var_expand_state
      *state,\n\t\t\t\t       const struct var_expand_parameter *param,\n\t\t\t\t
      \      const char **value_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_state_lookup_variable
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:100,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - state
    - param
    - value_r
    - error_r
    argTypes:
    - struct var_expand_state*
    - struct var_expand_parameter*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 109
    functionName: var_expand_parameter_any_or_var
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 5
    functionsReached:
    - var_expand_state_lookup_variable
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int var_expand_parameter_any_or_var(const struct var_expand_state
      *state,\n\t\t\t\t    const struct var_expand_parameter *param,\n\t\t\t\t    const
      char **value_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct var_expand_statement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: var_expand_parameter_iter_init
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 14
    functionsReached:
    - t_new
    linkageType: ''
    returnType: struct var_expand_parameter_iter_context
    signature: 'struct var_expand_parameter_iter_context *

      var_expand_parameter_iter_init(const struct var_expand_statement *stmt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct var_expand_parameter_iter_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: var_expand_parameter_iter_more
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool var_expand_parameter_iter_more(struct var_expand_parameter_iter_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct var_expand_parameter_iter_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 132
    functionName: var_expand_parameter_iter_next
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 14
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct var_expand_parameter
    signature: 'struct var_expand_parameter *

      var_expand_parameter_iter_next(struct var_expand_parameter_iter_context *ctx)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:137,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:139,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:142,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:145,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:148,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:151,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:153,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - dest
    - par
    argTypes:
    - string_t*
    - struct var_expand_parameter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 154
    functionName: var_expand_parameter_dump
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - str_append_c
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void var_expand_parameter_dump(string_t *dest, const struct var_expand_parameter
      *par)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_intmax
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - param
    - convert
    - value_r
    argTypes:
    - struct var_expand_parameter*
    - bool
    - intmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 167
    functionName: var_expand_parameter_number
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 1
    functionsReached:
    - str_to_intmax
    linkageType: ''
    returnType: int
    signature: "int var_expand_parameter_number(const struct var_expand_parameter
      *param,\n\t\t\t\tbool convert, intmax_t *value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - param
    - convert
    - value_r
    argTypes:
    - struct var_expand_parameter*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 180
    functionName: var_expand_parameter_string
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int var_expand_parameter_string(const struct var_expand_parameter
      *param,\n\t\t\t\tbool convert, const char **value_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:188,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:192,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:192,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:196,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-parameter.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - state
    - number
    - param_r
    argTypes:
    - struct var_expand_state*
    - bool
    - struct var_expand_parameter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 200
    functionName: var_expand_parameter_from_state
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_new
    - t_strdup
    - str_to_intmax
    linkageType: ''
    returnType: int
    signature: "int var_expand_parameter_from_state(struct var_expand_state *state,
      bool number,\n\t\t\t\tconst struct var_expand_parameter **param_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_state_lookup_variable
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:22,1
    - Dst: var_expand_state_unset_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:26,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:27,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:28,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:30,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:31,1
    - Dst: var_expand_find_filter
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:36,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:40,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:41,1
    - Dst: var_expand_state_unset_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:44,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:46,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-statement.c:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - state
    - stmt
    - first
    - error_r
    argTypes:
    - struct var_expand_state*
    - struct var_expand_statement*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 7
    functionDepth: 2
    functionLinenumber: 7
    functionLinenumberEnd: 54
    functionName: var_expand_execute_stmt
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-statement.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - T_END_PASS_STR_IF
    - var_expand_state_lookup_variable
    - i_strdup
    - i_strdup_printf
    - var_expand_state_unset_transfer
    - var_expand_find_filter
    - t_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: bool
    signature: "bool var_expand_execute_stmt(struct var_expand_state *state,\n\t\t\t
      \    const struct var_expand_statement *stmt,\n\t\t\t     bool first, const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/lib-var-expand/fuzz-var-expand.c:11,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/lib-var-expand/fuzz-var-expand.c:12,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 13
    functionName: FUZZ_BEGIN_STR
    functionSourceFile: /src/dovecot/src/lib-var-expand/fuzz-var-expand.c
    functionUses: 0
    functionsReached:
    - var_expand_program_free
    - var_expand_program_create
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_STR(const char *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_assert_array_size
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:54,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:56,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 61
    functionName: var_expand_if_str_to_comp
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-if.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - static_assert_array_size
    linkageType: ''
    returnType: enum var_expand_if_op
    signature: enum var_expand_if_op var_expand_if_str_to_comp(const char *op)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:71,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:72,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:74,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:75,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:98,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:103,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:104,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:106,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:107,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:115,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:118,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:121,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:124,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:127,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:130,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:133,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:136,1
    - Dst: dregex_match
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:145,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:156,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 79
    argCount: 6
    argNames:
    - state
    - p_lhs
    - op
    - p_rhs
    - result_r
    - error_r
    argTypes:
    - struct var_expand_state*
    - struct var_expand_parameter*
    - enum var_expand_if_op
    - struct var_expand_parameter*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 158
    functionName: fn_if_cmp
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-if.c
    functionUses: 0
    functionsReached:
    - i_panic
    - strcmp
    - dregex_match
    - t_strdup_printf
    - wildcard_match
    - var_expand_parameter_number_or_var
    - var_expand_parameter_string_or_var
    linkageType: ''
    returnType: int
    signature: "int fn_if_cmp(struct var_expand_state *state, const struct var_expand_parameter
      *p_lhs,\n\t  enum var_expand_if_op op, const struct var_expand_parameter *p_rhs,\n\t
      \ bool *result_r, const char **error_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:187,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:188,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:190,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:191,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:193,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:198,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:199,1
    - Dst: var_expand_if_str_to_comp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:216,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:219,1
    - Dst: var_expand_parameter_from_state
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:224,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:235,1
    - Dst: fn_if_cmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:238,1
    - Dst: var_expand_parameter_any_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:243,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:244,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:250,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 59
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 253
    functionName: expansion_filter_if
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-if.c
    functionUses: 0
    functionsReached:
    - var_expand_state_set_transfer
    - i_assert
    - var_expand_if_str_to_comp
    - var_expand_parameter_iter_init
    - var_expand_parameter_key
    - t_strdup_printf
    - var_expand_parameter_iter_more
    - var_expand_parameter_any_or_var
    - var_expand_parameter_from_state
    - fn_if_cmp
    - ERROR_UNSUPPORTED_KEY
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: int
    signature: "int expansion_filter_if(const struct var_expand_statement *stmt,\n\t\t\tstruct
      var_expand_state *state,\n\t\t\tconst char **error_r)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:287,1
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:290,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:291,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:293,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:294,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:297,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:304,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:305,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:315,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:326,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:330,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:334,1
    - Dst: var_expand_if_str_to_comp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:340,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:343,1
    - Dst: var_expand_parameter_from_state
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:348,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:358,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:365,1
    - Dst: fn_if_cmp
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:371,1
    - Dst: var_expand_state_unset_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:386,1
    - Dst: var_expand_parameter_any_or_var
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:388,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:389,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-filter-if.c:393,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 88
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 263
    functionDepth: 3
    functionLinenumber: 263
    functionLinenumberEnd: 397
    functionName: expansion_filter_switch
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-filter-if.c
    functionUses: 0
    functionsReached:
    - var_expand_parameter_iter_init
    - t_strdup_printf
    - array_is_empty
    - var_expand_parameter_any_or_var
    - var_expand_parameter_from_state
    - array_foreach_modifiable
    - array_append_zero
    - array_append_space
    - var_expand_parameter_key
    - var_expand_state_set_transfer
    - var_expand_parameter_iter_more
    - fn_if_cmp
    - var_expand_state_unset_transfer
    - i_assert
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    - var_expand_if_str_to_comp
    - t_array_init
    - ERROR_UNSUPPORTED_KEY
    linkageType: ''
    returnType: int
    signature: "int expansion_filter_switch(const struct var_expand_statement *stmt,\n\t\t\t
      \   struct var_expand_state *state,\n\t\t\t    const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:35,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:37,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:38,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:38,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:39,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:40,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:40,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:42,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - field
    - result_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 47
    functionName: var_expand_process
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dec2str
    - geteuid
    - t_strdup_printf
    - getegid
    linkageType: ''
    returnType: int
    signature: "int var_expand_process(const char *field, const char **result_r,\n\t\t
      \  void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: uname
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:59,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:60,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:61,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - type
    - value_r
    - error_r
    argTypes:
    - enum os_default_type
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 78
    functionName: var_expand_system_os
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_strdup_printf
    - i_unreached
    - uname
    linkageType: ''
    returnType: int
    signature: "int var_expand_system_os(enum os_default_type type,\n\t\t     const
      char **value_r, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:84,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:86,1
    - Dst: cpu_count_get
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:91,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:93,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:95,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:98,1
    - Dst: var_expand_system_os
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:99,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:101,1
    - Dst: var_expand_system_os
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:102,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:104,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - field
    - result_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 106
    functionName: var_expand_system
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dec2str
    - var_expand_system_os
    - t_strdup_printf
    - getenv
    - cpu_count_get
    linkageType: ''
    returnType: int
    signature: "int var_expand_system(const char *field, const char **result_r,\n\t\t
      \ void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:112,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:115,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:118,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:121,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:124,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - field
    - result_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 131
    functionName: var_expand_dovecot
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int var_expand_dovecot(const char *field, const char **result_r,\n\t\t
      \  void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - key
    - value_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 149
    functionName: var_expand_env
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - getenv
    linkageType: ''
    returnType: int
    signature: "int var_expand_env(const char *key, const char **value_r,\n\t\t\t
      \ void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_get_global
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:158,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:164,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - key
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 174
    functionName: var_expand_event
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - event_get_global
    - t_strdup_printf
    - event_find_field_recursive_str
    linkageType: ''
    returnType: int
    signature: "int var_expand_event(const char *key, const char **value_r, void *context,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:181,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:182,1
    - Dst: localtime_r
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:182,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:185,1
    - Dst: t_strftime
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:186,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:187,1
    - Dst: t_strftime
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:188,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:189,1
    - Dst: t_strftime
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:190,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:192,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - key
    - value_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 194
    functionName: var_expand_date
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - i_panic
    - strcmp
    - t_strftime
    - unlikely
    - ERROR_UNSUPPORTED_KEY
    - localtime_r
    linkageType: ''
    returnType: int
    signature: "int var_expand_date(const char *key, const char **value_r,\n\t\t\t
      \  void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:201,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:202,1
    - Dst: localtime_r
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:202,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:203,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:205,1
    - Dst: t_strftime
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:206,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:207,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:208,1
    - Dst: t_strftime
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:209,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:210,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:211,1
    - Dst: t_strftime
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:212,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:213,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:214,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:215,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:217,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 4
    argNames:
    - key
    - value_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 219
    functionName: var_expand_time
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - i_panic
    - strcmp
    - dec2str
    - t_strftime
    - unlikely
    - ERROR_UNSUPPORTED_KEY
    - localtime_r
    linkageType: ''
    returnType: int
    signature: "int var_expand_time(const char *key, const char **value_r,\n\t\t\t
      \  void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:226,1
    - Dst: guid_generate
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:227,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:230,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:231,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:232,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:235,1
    - Dst: guid_128_uuid4_generate
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:236,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:237,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:238,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:239,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:240,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:241,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:242,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:244,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:247,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - key
    - value_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 248
    functionName: var_expand_generate
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - guid_128_to_uuid_string
    - str_begins
    - guid_128_to_string
    - guid_128_generate
    - guid_128_uuid4_generate
    - guid_generate
    - ERROR_UNSUPPORTED_KEY
    linkageType: ''
    returnType: int
    signature: "int var_expand_generate(const char *key, const char **value_r,\n\t\t\t
      \      void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 268
    functionName: var_expand_provider_is_builtin
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool var_expand_provider_is_builtin(const char *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - elem
    argTypes:
    - char*
    - struct var_expand_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 274
    functionName: var_expand_table_key_cmp
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int var_expand_table_key_cmp(const char *key,\n\t\t\t\t    const struct
      var_expand_table *elem)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_table_size
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:281,1
    - Dst: var_expand_table_size
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:282,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:283,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:286,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:287,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:288,1
    - Dst: array_lsearch_modifiable
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:293,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:300,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:301,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:302,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:304,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - pool
    - a
    - b
    argTypes:
    - pool_t
    - struct var_expand_table*
    - struct var_expand_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 306
    functionName: var_expand_merge_tables
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - p_strdup
    - array_append_space
    - p_array_init
    - var_expand_table_size
    - array_lsearch_modifiable
    - array_append_zero
    linkageType: ''
    returnType: struct var_expand_table
    signature: "struct var_expand_table *\nvar_expand_merge_tables(pool_t pool, const
      struct var_expand_table *a,\n\t\t\t    const struct var_expand_table *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:312,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:315,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - state
    - value
    - len
    argTypes:
    - struct var_expand_state*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 318
    functionName: var_expand_state_set_transfer_data
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 7
    functionsReached:
    - str_append_data
    - i_assert
    - str_truncate
    linkageType: ''
    returnType: void
    signature: "void var_expand_state_set_transfer_data(struct var_expand_state *state,\n\t\t\t\t\tconst
      void *value, size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - state
    - value
    - len
    argTypes:
    - struct var_expand_state*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 325
    functionName: var_expand_state_set_transfer_binary
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 3
    functionsReached:
    - var_expand_state_set_transfer_data
    linkageType: ''
    returnType: void
    signature: "void var_expand_state_set_transfer_binary(struct var_expand_state
      *state,\n\t\t\t\t\t  const void *value, size_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:333,1
    - Dst: var_expand_state_set_transfer_data
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - struct var_expand_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 336
    functionName: var_expand_state_set_transfer
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 15
    functionsReached:
    - strlen
    - var_expand_state_set_transfer_data
    linkageType: ''
    returnType: void
    signature: void var_expand_state_set_transfer(struct var_expand_state *state,
      const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct var_expand_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: var_expand_state_unset_transfer
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 5
    functionsReached:
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void var_expand_state_unset_transfer(struct var_expand_state *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:350,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:352,1
    - Dst: struct var_expand_provider*::func
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:354,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 7
    argNames:
    - prov
    - prov_context
    - prefix
    - key
    - value_r
    - found_r
    - error_r
    argTypes:
    - struct var_expand_provider*
    - void*
    - char*
    - char*
    - char**
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 359
    functionName: call_provider_table
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - struct var_expand_provider*::func
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int call_provider_table(const struct var_expand_provider *prov,\n\t\t\t
      \      void *prov_context,\n\t\t\t       const char *prefix, const char *key,\n\t\t\t
      \      const char **value_r, bool *found_r,\n\t\t\t       const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: call_provider_table
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:366,1
    - Dst: call_provider_table
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:379,1
    - Dst: call_provider_table
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:385,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:391,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:395,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:398,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 5
    argNames:
    - state
    - prefix
    - key
    - value_r
    - error_r
    argTypes:
    - struct var_expand_state*
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 401
    functionName: call_value_provider
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - i_assert
    - call_provider_table
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int call_value_provider(const struct var_expand_state *state,\n\t\t\t
      \      const char *prefix, const char *key,\n\t\t\t       const char **value_r,
      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:407,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:409,1
    - Dst: func
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:412,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:414,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:422,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 6
    argNames:
    - table
    - context
    - name
    - result_r
    - found_r
    - error_r
    argTypes:
    - struct var_expand_table*
    - void*
    - char*
    - char**
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 424
    functionName: lookup_table
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - func
    - i_assert
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int lookup_table(const struct var_expand_table *table,\n\t\t\tvoid
      *context, const char *name,\n\t\t\tconst char **result_r, bool *found_r, const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lookup_table
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:442,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:446,1
    - Dst: lookup_table
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:450,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - state
    - name
    - result_r
    - error_r
    argTypes:
    - struct var_expand_state*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 426
    functionDepth: 2
    functionLinenumber: 426
    functionLinenumberEnd: 452
    functionName: lookup_tables
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - lookup_table
    linkageType: ''
    returnType: int
    signature: "int lookup_tables(const struct var_expand_state *state, const char
      *name,\n\t\t\t const char **result_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:459,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:465,1
    - Dst: call_value_provider
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:470,1
    - Dst: lookup_tables
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:472,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - state
    - name
    - result_r
    - error_r
    argTypes:
    - struct var_expand_state*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 454
    functionDepth: 3
    functionLinenumber: 454
    functionLinenumberEnd: 474
    functionName: var_expand_state_lookup_variable
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 5
    functionsReached:
    - strchr
    - call_value_provider
    - lookup_tables
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: "int var_expand_state_lookup_variable(const struct var_expand_state
      *state,\n\t\t\t\t     const char *name, const char **result_r,\n\t\t\t\t     const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:483,1
    - Dst: var_expand_program_execute
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:484,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - dest
    - str
    - params
    - error_r
    argTypes:
    - string_t*
    - char*
    - struct var_expand_params*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 488
    functionName: var_expand
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 15
    functionsReached:
    - i_assert
    - var_expand_program_execute
    - var_expand_program_free
    - var_expand_program_create
    linkageType: ''
    returnType: int
    signature: "int var_expand(string_t *dest, const char *str,\n\t       const struct
      var_expand_params *params,\n\t       const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:494,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:495,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/var-expand.c:498,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - str
    - params
    - result_r
    - error_r
    argTypes:
    - char*
    - struct var_expand_params*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 500
    functionName: t_var_expand
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - var_expand
    linkageType: ''
    returnType: int
    signature: "int t_var_expand(const char *str, const struct var_expand_params *params,\n\t\t
      const char **result_r, const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:33,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:39,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:40,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:41,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:44,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:45,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:47,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:48,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:49,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:51,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:53,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:58,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:59,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:64,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:65,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:68,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:68,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:69,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:69,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:70,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:74,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - params
    - tests
    - test_count
    argTypes:
    - struct var_expand_params*
    - struct var_expand_test[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 76
    functionName: run_var_expand_tests
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_cmp_idx
    - str_c
    - i_error
    - test_assert_idx
    - i_debug
    - str_truncate
    - test_assert_strcmp_idx
    - i_assert
    - var_expand
    - strstr
    - str_new
    - str_free
    linkageType: ''
    returnType: void
    signature: "void run_var_expand_tests(const struct var_expand_params *params,\n\t\t\t\t
      const struct var_expand_test tests[],\n\t\t\t\t size_t test_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:79,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:270,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:270,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 273
    functionName: test_var_expand_builtin_filters
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_builtin_filters(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:276,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:305,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:305,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 275
    functionDepth: 3
    functionLinenumber: 275
    functionLinenumberEnd: 308
    functionName: test_var_expand_math
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_math(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:312,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:400,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:400,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 310
    functionDepth: 3
    functionLinenumber: 310
    functionLinenumberEnd: 403
    functionName: test_var_expand_if
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_if(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:409,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:502,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:502,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 407
    functionDepth: 3
    functionLinenumber: 407
    functionLinenumberEnd: 505
    functionName: test_var_expand_switch
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_switch(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:510,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:513,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - key
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 517
    functionName: test_custom_provider
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ERROR_UNSUPPORTED_KEY
    - test_assert_strcmp
    linkageType: ''
    returnType: int
    signature: "int test_custom_provider(const char *key, const char **value_r, void
      *context,\n\t\t\t        const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:520,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:523,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:526,1
    - Dst: localtime_r
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:527,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:528,1
    - Dst: cpu_count_get
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:530,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:535,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:553,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:554,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:555,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:566,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:566,1
    - Dst: time
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:572,1
    - Dst: t_var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:573,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:574,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:579,1
    - Dst: time
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:581,1
    - Dst: localtime_r
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:582,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:583,1
    - Dst: strptime
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:584,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:585,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:585,1
    - Dst: mktime
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:588,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:589,1
    - Dst: labs
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:589,1
    - Dst: uname
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:597,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:598,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:599,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:600,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:600,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:601,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:601,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:603,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:604,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:604,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:605,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:605,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:608,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:618,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:619,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:621,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:623,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:631,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:631,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:633,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 634
    functionName: test_var_expand_providers
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - str_c
    - event_unref
    - t_var_expand
    - t_strdup_printf
    - cpu_count_get
    - event_push_global
    - test_assert_cmp
    - test_assert
    - time
    - event_add_int
    - localtime_r
    - i_panic
    - t_str_new
    - strptime
    - test_end
    - event_add_str
    - i_zero
    - event_create
    - test_out_reason_quiet
    - labs
    - test_assert_strcmp
    - test_failed
    - N_ELEMENTS
    - run_var_expand_tests
    - dec2str
    - uname
    - getenv
    - str_truncate
    - event_pop_global
    - var_expand
    - test_begin
    - mktime
    linkageType: ''
    returnType: void
    signature: void test_var_expand_providers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:638,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:668,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:668,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 636
    functionDepth: 3
    functionLinenumber: 636
    functionLinenumberEnd: 670
    functionName: test_var_expand_provider_arr
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_provider_arr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:674,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:696,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:698,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:701,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:702,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:702,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 672
    functionDepth: 3
    functionLinenumber: 672
    functionLinenumberEnd: 705
    functionName: test_var_expand_tables_arr
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - test_assert_strcmp
    - test_end
    - test_assert
    - var_expand
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_var_expand_tables_arr(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:710,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:710,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:711,1
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:712,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:713,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:716,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:717,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:718,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:721,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:722,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - str
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 723
    functionName: test_escape
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - str_append_c
    - strlen
    - strpbrk
    - str_append
    linkageType: ''
    returnType: char
    signature: char *test_escape(const char *str, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:775,1
    - Dst: STR100
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR10
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:776,1
    - Dst: STR100
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:779,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:794,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:796,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:796,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 725
    functionDepth: 3
    functionLinenumber: 725
    functionLinenumberEnd: 799
    functionName: test_var_expand_escape
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - STR100
    - test_end
    - STR10
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_escape(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:805,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:807,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:811,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - key
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 818
    functionName: test_value
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_strcmp
    linkageType: ''
    returnType: int
    signature: "int test_value(const char *key, const char **value_r, void *context,\n\t\t
      \     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:824,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:826,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:830,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:834,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - key
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 837
    functionName: test_value2
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_strcmp
    linkageType: ''
    returnType: int
    signature: "int test_value2(const char *key, const char **value_r, void *context,\n\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:860,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:862,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:862,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 839
    functionDepth: 3
    functionLinenumber: 839
    functionLinenumberEnd: 865
    functionName: test_var_expand_value_func
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_value_func(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:902,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:904,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:904,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 867
    functionDepth: 3
    functionLinenumber: 867
    functionLinenumberEnd: 907
    functionName: test_var_expand_value_func_arr
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_value_func_arr(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:923,1
    - Dst: var_expand_merge_tables
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:925,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:925,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:927,1
    - Dst: var_expand_table_size
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:927,1
    - Dst: var_expand_table_size
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:928,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:930,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:930,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:931,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:931,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:933,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:933,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:934,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:934,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:939,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 909
    functionDepth: 3
    functionLinenumber: 909
    functionLinenumberEnd: 940
    functionName: test_var_expand_merge_tables
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_idx
    - var_expand_table_size
    - test_end
    - pool_datastack_create
    - var_expand_merge_tables
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_var_expand_merge_tables(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:944,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:949,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:952,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:954,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:956,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:957,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:958,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:959,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:960,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:961,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:962,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:963,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:965,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 942
    functionDepth: 3
    functionLinenumber: 942
    functionLinenumberEnd: 968
    functionName: test_var_expand_variables
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - i_error
    - var_expand_program_create
    - test_assert_idx
    - test_end
    - var_expand_program_free
    - test_assert
    - test_assert_strcmp_idx
    - var_expand_program_variables
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_var_expand_variables(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:981,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:982,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:983,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:991,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - stmt
    - state
    - ATTR_UNUSED
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 971
    functionDepth: 3
    functionLinenumber: 971
    functionLinenumberEnd: 994
    functionName: test_filter
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - var_expand_state_set_transfer
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_filter(const struct var_expand_statement *stmt,\n\t\t       struct
      var_expand_state *state,\n\t\t       const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1010,1
    - Dst: var_expand_register_filter
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1012,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1017,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1017,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1019,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 997
    functionDepth: 3
    functionLinenumber: 997
    functionLinenumberEnd: 1020
    functionName: test_var_expand_parameter_sorted
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - var_expand_register_filter
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_parameter_sorted(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1024,1
    - Dst: run_var_expand_tests
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1046,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1046,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1022
    functionDepth: 3
    functionLinenumber: 1022
    functionLinenumberEnd: 1049
    functionName: test_var_expand_perc
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - test_end
    - N_ELEMENTS
    - test_begin
    - run_var_expand_tests
    linkageType: ''
    returnType: void
    signature: void test_var_expand_perc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1053,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1062,1
    - Dst: var_expand_table_copy
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1063,1
    - Dst: var_expand_table_set_func
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1065,1
    - Dst: var_expand_table_copy
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1066,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1068,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1069,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1051
    functionDepth: 3
    functionLinenumber: 1051
    functionLinenumberEnd: 1072
    functionName: test_var_expand_set_copy
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - var_expand_table_copy
    - var_expand_table_set_func
    - test_end
    - test_assert
    - var_expand_table_set_value
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_var_expand_set_copy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1077,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1079,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1081,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1081,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1082,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1082,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1082,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1084,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1085,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1085,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1086,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1086,1
    - Dst: strspn
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1086,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1086,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1088,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1089,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1089,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1090,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1090,1
    - Dst: strspn
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1090,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1090,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1092,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1093,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1093,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1094,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1094,1
    - Dst: strspn
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1094,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1094,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1096,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1097,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1097,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1098,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1098,1
    - Dst: strspn
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1098,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1098,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1101,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1102,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1102,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1102,1
    - Dst: strspn
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1103,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1103,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1104,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand/test-var-expand.c:1106,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1074
    functionDepth: 3
    functionLinenumber: 1074
    functionLinenumberEnd: 1107
    functionName: test_var_expand_generate
    functionSourceFile: /src/dovecot/src/lib-var-expand/test-var-expand.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_len
    - strspn
    - test_end
    - str_truncate
    - test_assert
    - var_expand
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_var_expand_generate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:26,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:28,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:29,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:35,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:36,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:38,1
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:43,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:44,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:46,1
    - Dst: var_expand_parser_lex_init_extra
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:47,1
    - Dst: var_expand_parser_parse
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:49,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - str
    - program_r
    - error_r
    argTypes:
    - char*
    - struct var_expand_program**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 51
    functionName: var_expand_program_create
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 10
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - p_new
    - p_array_init
    - strlen
    - t_strdup_printf
    - pool_allocfree_create
    - var_expand_parser_parse
    - t_strdup
    - var_expand_parser_lex_init_extra
    linkageType: ''
    returnType: int
    signature: "int var_expand_program_create(const char *str,\n\t\t\t      struct
      var_expand_program **program_r,\n\t\t\t      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:77,1
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:79,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:80,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:82,1
    - Dst: var_expand_parameter_dump
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:83,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - prog
    - dest
    argTypes:
    - struct var_expand_program*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 89
    functionName: var_expand_program_dump
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - var_expand_parameter_dump
    - str_printfa
    - var_expand_parameter_iter_init
    - var_expand_parameter_iter_more
    - var_expand_parameter_iter_next
    linkageType: ''
    returnType: void
    signature: void var_expand_program_dump(const struct var_expand_program *prog,
      string_t *dest)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:96,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:101,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:105,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:120,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:124,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:125,1
    - Dst: while
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:137,1
    - Dst: var_expand_execute_stmt
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:139,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:146,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:150,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:150,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:153,1
    - Dst: struct var_expand_params*::escape_func
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:154,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:154,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:157,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:159,1
    - Dst: var_expand_state_unset_transfer
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:163,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:166,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:167,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:170,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:172,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 49
    argCount: 4
    argNames:
    - dest
    - program
    - params
    - error_r
    argTypes:
    - string_t*
    - struct var_expand_program*
    - struct var_expand_params*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 175
    functionName: var_expand_program_execute
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 3
    functionsReached:
    - i_zero
    - var_expand_state_set_transfer
    - T_END_PASS_STR_IF
    - str_c
    - i_free
    - str_append_str
    - t_strdup
    - I_MAX
    - var_expand_execute_stmt
    - var_expand_state_unset_transfer
    - str_append
    - while
    - binary_to_hex
    - i_assert
    - str_new
    - str_free
    - struct var_expand_params*::escape_func
    linkageType: ''
    returnType: int
    signature: "int var_expand_program_execute(string_t *dest, const struct var_expand_program
      *program,\n\t\t\t       const struct var_expand_params *params, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: var_expand_program_variables
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *const *

      var_expand_program_variables(const struct var_expand_program *program)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _program
    argTypes:
    - struct var_expand_program**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 191
    functionName: var_expand_program_free
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 10
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void var_expand_program_free(struct var_expand_program **_program)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:206,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:213,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:216,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:228,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - dest
    - number
    argTypes:
    - string_t*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 230
    functionName: export_number
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void export_number(string_t *dest, intmax_t number)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:237,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:238,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:242,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:243,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:246,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:247,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:248,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:251,1
    - Dst: export_number
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:252,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:255,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:256,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:257,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:260,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:264,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:266,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:269,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:271,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:277,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:277,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:278,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:279,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:281,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - program
    - dest
    argTypes:
    - struct var_expand_program*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 282
    functionName: var_expand_program_export_one
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - strchr
    - export_number
    - str_append_c
    - i_unreached
    - str_append_tabescaped
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void var_expand_program_export_one(const struct var_expand_program
      *program,\n\t\t\t\t\t  string_t *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:287,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:288,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:292,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:294,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:295,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:296,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:298,1
    - Dst: var_expand_program_export_one
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - dest
    - program
    argTypes:
    - string_t*
    - struct var_expand_program*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 304
    functionName: var_expand_program_export_append
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - str_append_tabescaped
    - i_assert
    - str_append_c
    - var_expand_program_export_one
    linkageType: ''
    returnType: void
    signature: "void var_expand_program_export_append(string_t *dest,\n\t\t\t\t      const
      struct var_expand_program *program)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:308,1
    - Dst: var_expand_program_export_append
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:309,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - program
    argTypes:
    - struct var_expand_program*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 306
    functionDepth: 4
    functionLinenumber: 306
    functionLinenumberEnd: 311
    functionName: var_expand_program_export
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - var_expand_program_export_append
    linkageType: ''
    returnType: char
    signature: char *var_expand_program_export(const struct var_expand_program *program)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - data
    - size
    - value_r
    - error_r
    argTypes:
    - char*
    - size_t
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 332
    functionName: extract_name
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: int
    signature: "int extract_name(char *data, size_t size,\n\t\t\tconst char **value_r,
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:337,1
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - data
    - size
    - value_r
    - error_r
    argTypes:
    - char*
    - size_t
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 347
    functionName: extract_value
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - str_tabunescape
    - memchr
    linkageType: ''
    returnType: int
    signature: "int extract_value(char *data, size_t size,\n\t\t\t const char **value_r,
      const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:378,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - data
    - size
    - value_r
    - error_r
    argTypes:
    - char*
    - size_t
    - intmax_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 399
    functionName: extract_number
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - I_MIN
    linkageType: ''
    returnType: int
    signature: "int extract_number(const char *data, size_t size, intmax_t *value_r,\n\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 408
    functionName: ADVANCE_INPUT
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADVANCE_INPUT(count)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: extract_name
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:418,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:425,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:428,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:444,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:448,1
    - Dst: extract_name
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:450,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:454,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:476,1
    - Dst: extract_value
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:480,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:484,1
    - Dst: extract_number
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:487,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:492,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:507,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:517,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 75
    argCount: 4
    argNames:
    - data
    - size
    - program
    - error_r
    argTypes:
    - char*
    - size_t
    - struct var_expand_program*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 520
    functionName: var_expand_program_import_stmt
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - p_new
    - ADVANCE_INPUT
    - extract_name
    - extract_number
    - extract_value
    linkageType: ''
    returnType: int
    signature: "int var_expand_program_import_stmt(char *data, size_t size,\n\t\t\t\t\t
      \ struct var_expand_program *program,\n\t\t\t\t\t  const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:533,1
    - Dst: extract_value
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:534,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:537,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:541,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:543,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:553,1
    - Dst: var_expand_program_import_stmt
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:555,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:558,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:560,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:566,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:570,1
    - Dst: p_strsplit
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:577,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:578,1
    - Dst: ADVANCE_INPUT
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:580,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 4
    argNames:
    - _data
    - _size
    - program
    - error_r
    argTypes:
    - char**
    - size_t*
    - struct var_expand_program*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 522
    functionDepth: 3
    functionLinenumber: 522
    functionLinenumberEnd: 590
    functionName: var_expand_program_import_one
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - p_new
    - ADVANCE_INPUT
    - memchr
    - var_expand_program_import_stmt
    - p_strsplit
    - extract_value
    linkageType: ''
    returnType: int
    signature: "int var_expand_program_import_one(char **_data, size_t *_size,\n\t\t\t\t\t
      struct var_expand_program *program,\n\t\t\t\t\t const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:596,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:604,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:608,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:612,1
    - Dst: var_expand_program_import_one
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:615,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - data
    - size
    - program_r
    - error_r
    argTypes:
    - char*
    - size_t
    - struct var_expand_program**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 592
    functionDepth: 4
    functionLinenumber: 592
    functionLinenumberEnd: 625
    functionName: var_expand_program_import_sized
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 1
    functionsReached:
    - var_expand_program_import_one
    - pool_alloconly_create
    - p_strndup
    - p_new
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int var_expand_program_import_sized(const char *data, size_t size,\n\t\t\t\t
      \   struct var_expand_program **program_r,\n\t\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:639,1
    - Dst: var_expand_program_import_sized
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:640,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand/expansion-program.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - data
    - program_r
    - error_r
    argTypes:
    - char*
    - struct var_expand_program**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 635
    functionDepth: 5
    functionLinenumber: 635
    functionLinenumberEnd: 642
    functionName: var_expand_program_import
    functionSourceFile: /src/dovecot/src/lib-var-expand/expansion-program.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_assert
    - var_expand_program_import_sized
    linkageType: ''
    returnType: int
    signature: "int var_expand_program_import(const char *data,\n\t\t\t      struct
      var_expand_program **program_r,\n\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct var_expand_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 112
    functionName: var_expand_table_size
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t var_expand_table_size(const struct var_expand_table *table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - table
    - key
    argTypes:
    - struct var_expand_table*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: var_expand_table_get
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.h
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct var_expand_table
    signature: 'struct var_expand_table *

      var_expand_table_get(struct var_expand_table *table, const char *key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_table_get
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:131,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:133,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - table
    - key
    - value
    - file
    - line
    argTypes:
    - struct var_expand_table*
    - char*
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: var_expand_table_set_value
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.h
    functionUses: 2
    functionsReached:
    - i_panic
    - var_expand_table_get
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void var_expand_table_set_value(struct var_expand_table *table,\n\t\t\t\t\t
      \     const char *key, const char *value,\n\t\t\t\t\t      const char *file,
      unsigned int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - table
    - ','
    - key
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: var_expand_table_set_value
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: var_expand_table_set_value(table, key, value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_table_get
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:147,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:149,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - table
    - key
    - func
    - file
    - line
    argTypes:
    - struct var_expand_table*
    - char*
    - value_provider_func_t*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 153
    functionName: var_expand_table_set_func
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.h
    functionUses: 1
    functionsReached:
    - i_panic
    - var_expand_table_get
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void var_expand_table_set_func(struct var_expand_table *table,\n\t\t\t\t\t
      \    const char *key,\n\t\t\t\t\t     value_provider_func_t *func,\n\t\t\t\t\t
      \    const char *file, unsigned int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - table
    - ','
    - key
    - ','
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 156
    functionName: var_expand_table_set_func
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: var_expand_table_set_func(table, key, func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_table_get
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:162,1
    - Dst: var_expand_table_get
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:163,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand/var-expand.h:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - table
    - key_b
    - key_a
    argTypes:
    - struct var_expand_table*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 168
    functionName: var_expand_table_copy
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand.h
    functionUses: 2
    functionsReached:
    - var_expand_table_get
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void var_expand_table_copy(struct var_expand_table *table,\n\t\t\t\t\t
      const char *key_b, const char *key_a)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 11
    functionName: ERROR_UNSUPPORTED_KEY
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand-private.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERROR_UNSUPPORTED_KEY(key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - action
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: ERROR_IF_NO_TRANSFER_TO
    functionSourceFile: /src/dovecot/src/lib-var-expand/var-expand-private.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERROR_IF_NO_TRANSFER_TO(action)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parser_init_cmdline
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:139,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:139,1
    - Dst: mail_search_build
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:140,1
    - Dst: mail_search_register_get_imap4rev1
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:140,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:142,1
    - Dst: mail_search_parser_deinit
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 145
    functionName: test_build_search_args
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mail_search_parser_deinit
    - mail_search_parser_init_cmdline
    - t_strsplit
    - mail_search_build
    - mail_search_register_get_imap4rev1
    linkageType: ''
    returnType: struct mail_search_args
    signature: 'struct mail_search_args *

      test_build_search_args(const char *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:150,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:156,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:157,1
    - Dst: test_build_search_args
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:158,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:161,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:162,1
    - Dst: mail_search_args_to_imap
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:162,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:164,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:164,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:164,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:165,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:167,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:168,1
    - Dst: mail_search_args_to_imap
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:169,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 173
    functionName: test_mail_search_args_imap
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_build_search_args
    - test_assert_idx
    - test_end
    - str_truncate
    - mail_search_args_to_imap
    - mail_search_args_unref
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_search_args_imap(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 175
    functionDepth: 7
    functionLinenumber: 175
    functionLinenumberEnd: 183
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:19,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:20,1
    - Dst: mailbox_attributes_internal_init
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 24
    functionName: mailbox_attributes_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - mailbox_attributes_internal_init
    linkageType: ''
    returnType: void
    signature: void mailbox_attributes_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:28,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: mailbox_attributes_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - array_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void mailbox_attributes_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reg1
    - reg2
    argTypes:
    - struct mailbox_attribute_internal*
    - struct mailbox_attribute_internal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: mailbox_attribute_internal_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_internal_cmp(\n\tconst struct mailbox_attribute_internal
      *reg1,\n\tconst struct mailbox_attribute_internal *reg2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:55,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:59,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:63,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - iattr
    argTypes:
    - struct mailbox_attribute_internal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 65
    functionName: mailbox_attribute_register_internal
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - array_insert
    - p_strdup
    - i_assert
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: void
    signature: "void mailbox_attribute_register_internal(\n\tconst struct mailbox_attribute_internal
      *iattr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_register_internal
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - iattrs
    - count
    argTypes:
    - struct mailbox_attribute_internal*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: mailbox_attribute_register_internals
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 1
    functionsReached:
    - mailbox_attribute_register_internal
    linkageType: ''
    returnType: void
    signature: "void mailbox_attribute_register_internals(\n\tconst struct mailbox_attribute_internal
      *iattrs, unsigned int count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:81,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:83,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - iattr
    argTypes:
    - struct mailbox_attribute_internal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 88
    functionName: mailbox_attribute_unregister_internal
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - i_panic
    - array_delete
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: void
    signature: "void mailbox_attribute_unregister_internal(\n\tconst struct mailbox_attribute_internal
      *iattr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_unregister_internal
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - iattrs
    - count
    argTypes:
    - struct mailbox_attribute_internal*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 97
    functionName: mailbox_attribute_unregister_internals
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - mailbox_attribute_unregister_internal
    linkageType: ''
    returnType: void
    signature: "void mailbox_attribute_unregister_internals(\n\tconst struct mailbox_attribute_internal
      *iattrs, unsigned int count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:107,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:111,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:115,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:121,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - type_flags
    - key
    argTypes:
    - enum mail_attribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 131
    functionName: mailbox_internal_attribute_get_int
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_begins_with
    - array_bsearch_insert_pos
    - array_idx
    linkageType: ''
    returnType: struct mailbox_attribute_internal
    signature: "struct mailbox_attribute_internal *\nmailbox_internal_attribute_get_int(enum
      mail_attribute_type type_flags,\n\t\t\t\t   const char *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_internal_attribute_get_int
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - type_flags
    - key
    argTypes:
    - enum mail_attribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 147
    functionName: mailbox_internal_attribute_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - mailbox_internal_attribute_get_int
    linkageType: ''
    returnType: struct mailbox_attribute_internal
    signature: "struct mailbox_attribute_internal *\nmailbox_internal_attribute_get(enum
      mail_attribute_type type_flags,\n\t\t\t       const char *key)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:183,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:184,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:190,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:194,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:199,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:205,1
    - Dst: struct mailbox_attribute_internal*::iter
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:213,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:228,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:248,1
    - Dst: iter
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:249,1
    - Dst: mailbox_internal_attributes_add_prefixes
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:251,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:254,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 6
    argNames:
    - box
    - type_flags
    - prefix
    - attr_pool
    - have_dict
    - attrs
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    - pool_t
    - bool
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 257
    functionName: mailbox_internal_attributes_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_push_back
    - t_strdup_noconst
    - str_begins
    - strlen
    - array_get
    - struct mailbox_attribute_internal*::iter
    - iter
    - mailbox_internal_attributes_add_prefixes
    - array_count
    - strncmp
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: int
    signature: "int mailbox_internal_attributes_get(struct mailbox *box,\n\tenum mail_attribute_type
      type_flags, const char *prefix,\n\tpool_t attr_pool, bool have_dict, ARRAY_TYPE(const_string)
      *attrs)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_internal_attribute_get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:274,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:278,1
    - Dst: struct mailbox_attribute_internal*::set
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:287,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:292,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:292,1
    - Dst: struct mailbox_attribute_internal*::set
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:298,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:300,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:303,1
    - Dst: struct mailbox_transaction_context*::box::v::attribute_set
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:306,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - t
    - type_flags
    - key
    - value
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 263
    functionDepth: 3
    functionLinenumber: 263
    functionLinenumberEnd: 308
    functionName: mailbox_attribute_set_common
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - struct mailbox_transaction_context*::box::v::attribute_set
    - str_begins_with
    - ENUM_NEGATE
    - i_unreached
    - t_strdup_printf
    - struct mailbox_attribute_internal*::set
    - mailbox_internal_attribute_get
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_set_common(struct mailbox_transaction_context
      *t,\n\t\t\t     enum mail_attribute_type type_flags,\n\t\t\t     const char
      *key,\n\t\t\t     const struct mail_attribute_value *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_set_common
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - t
    - type_flags
    - key
    - value
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 310
    functionDepth: 4
    functionLinenumber: 310
    functionLinenumberEnd: 315
    functionName: mailbox_attribute_set
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 9
    functionsReached:
    - mailbox_attribute_set_common
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_set(struct mailbox_transaction_context *t,\n\t\t\t
      \ enum mail_attribute_type type_flags, const char *key,\n\t\t\t  const struct
      mail_attribute_value *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:322,1
    - Dst: mailbox_attribute_set_common
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - t
    - type_flags
    - key
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_attribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 317
    functionDepth: 4
    functionLinenumber: 317
    functionLinenumberEnd: 324
    functionName: mailbox_attribute_unset
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 3
    functionsReached:
    - i_zero
    - mailbox_attribute_set_common
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_unset(struct mailbox_transaction_context *t,\n\t\t\t
      \   enum mail_attribute_type type_flags, const char *key)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:338,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:339,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:340,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:341,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:342,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:346,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:347,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:350,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:351,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:352,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:355,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:356,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - storage
    - value
    - str_r
    argTypes:
    - struct mail_storage*
    - struct mail_attribute_value*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 358
    functionName: mailbox_attribute_value_to_string
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - i_assert
    - memchr
    - mail_storage_set_critical
    - i_stream_skip
    - i_stream_get_error
    - i_stream_seek
    - i_stream_get_name
    - str_append_data
    - i_stream_read_more
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_value_to_string(struct mail_storage *storage,\n\t\t\t\t
      \     const struct mail_attribute_value *value,\n\t\t\t\t      const char **str_r)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_internal_attribute_get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:374,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:378,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:387,1
    - Dst: struct mailbox_attribute_internal*::get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:391,1
    - Dst: struct mailbox_attribute_internal*::get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:401,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:406,1
    - Dst: struct mailbox*::v::attribute_get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:410,1
    - Dst: struct mailbox_attribute_internal*::get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:421,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:432,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 54
    argCount: 4
    argNames:
    - box
    - type_flags
    - key
    - value_r
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 360
    functionDepth: 3
    functionLinenumber: 360
    functionLinenumberEnd: 436
    functionName: mailbox_attribute_get_common
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - struct mailbox_attribute_internal*::get
    - ENUM_NEGATE
    - i_unreached
    - mailbox_internal_attribute_get
    - struct mailbox*::v::attribute_get
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_get_common(struct mailbox *box,\n\t\t\t     enum
      mail_attribute_type type_flags,\n\t\t\t     const char *key,\n\t\t\t     struct
      mail_attribute_value *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:443,1
    - Dst: mailbox_attribute_get_common
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:444,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - box
    - type_flags
    - key
    - value_r
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 438
    functionDepth: 4
    functionLinenumber: 438
    functionLinenumberEnd: 449
    functionName: mailbox_attribute_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 13
    functionsReached:
    - i_zero
    - i_assert
    - mailbox_attribute_get_common
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_get(struct mailbox *box,\n\t\t\t  enum mail_attribute_type
      type_flags, const char *key,\n\t\t\t  struct mail_attribute_value *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:458,1
    - Dst: mailbox_attribute_get_common
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:460,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - box
    - type_flags
    - key
    - value_r
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 451
    functionDepth: 4
    functionLinenumber: 451
    functionLinenumberEnd: 465
    functionName: mailbox_attribute_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_assert
    - mailbox_attribute_get_common
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_get_stream(struct mailbox *box,\n\t\t\t\t enum
      mail_attribute_type type_flags,\n\t\t\t\t const char *key,\n\t\t\t\t struct
      mail_attribute_value *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:482,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:483,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:484,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:486,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:488,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - user
    - error_r
    argTypes:
    - struct mail_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 491
    functionName: mailbox_attribute_dict_is_enabled
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 1
    functionsReached:
    - event_create
    - event_unref
    - settings_event_add_filter_name
    - settings_free
    - array_not_empty
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_dict_is_enabled(struct mail_user *user,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:500,1
    - Dst: struct mailbox*::v::attribute_iter_init
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:505,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:506,1
    - Dst: mailbox_attribute_dict_is_enabled
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:509,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:512,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:517,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:518,1
    - Dst: mailbox_internal_attributes_get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:519,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:524,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:526,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:531,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:535,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:538,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:541,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:542,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:544,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - box
    - type_flags
    - prefix
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 493
    functionDepth: 4
    functionLinenumber: 493
    functionLinenumberEnd: 547
    functionName: mailbox_attribute_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 5
    functionsReached:
    - pool_alloconly_create
    - mailbox_attribute_dict_is_enabled
    - i_assert
    - p_new
    - p_array_init
    - array_push_back
    - strlen
    - mailbox_internal_attributes_get
    - struct mailbox*::v::attribute_iter_init
    - pool_unref
    - array_foreach
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - strncmp
    - mail_storage_set_critical
    linkageType: ''
    returnType: struct mailbox_attribute_iter
    signature: "struct mailbox_attribute_iter *\nmailbox_attribute_iter_init(struct
      mailbox *box,\n\t\t\t    enum mail_attribute_type type_flags,\n\t\t\t    const
      char *prefix)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_attribute_iter*::box::v::attribute_iter_next
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:558,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:563,1
    - Dst: struct mailbox_attribute_internal_iter*::real_iter::box::v::attribute_iter_next
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:564,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:567,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mailbox_attribute_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 582
    functionName: mailbox_attribute_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 5
    functionsReached:
    - struct mailbox_attribute_internal_iter*::real_iter::box::v::attribute_iter_next
    - array_get
    - struct mailbox_attribute_iter*::box::v::attribute_iter_next
    - strcasecmp
    linkageType: ''
    returnType: char
    signature: char *mailbox_attribute_iter_next(struct mailbox_attribute_iter *iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:594,1
    - Dst: struct mailbox_attribute_iter*::box::v::attribute_iter_deinit
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:596,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:602,1
    - Dst: struct mailbox_attribute_internal_iter*::real_iter::box::v::attribute_iter_deinit
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:605,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mailbox-attribute.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mailbox_attribute_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 610
    functionName: mailbox_attribute_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.c
    functionUses: 5
    functionsReached:
    - struct mailbox_attribute_internal_iter*::real_iter::box::v::attribute_iter_deinit
    - i_assert
    - pool_unref
    - struct mailbox_attribute_iter*::box::v::attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: int mailbox_attribute_iter_deinit(struct mailbox_attribute_iter **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - list
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: T_MAILBOX_LIST_ERR_NOT_FOUND
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: T_MAILBOX_LIST_ERR_NOT_FOUND(list, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: MAILBOX_INFO_FLAGS_FINISHED
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAILBOX_INFO_FLAGS_FINISHED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 6
    functionName: DLUA_MAILBOX_EQUALS
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-lua-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLUA_MAILBOX_EQUALS(a, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:28,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:29,1
    - Dst: imap_seq_set_parse
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:30,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:36,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct mail_search_build_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 38
    functionName: imap_search_fallback
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - p_strconcat
    - p_array_init
    - imap_seq_set_parse
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\nimap_search_fallback(struct mail_search_build_context
      *ctx,\n\t\t     const char *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 50
    functionName: imap_search_not
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_key
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_not(struct mail_search_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:58,1
    - Dst: mail_search_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:62,1
    - Dst: mail_search_parse_skip_next
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:68,1
    - Dst: mail_search_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:70,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 73
    functionName: imap_search_or
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - mail_search_build_key
    - mail_search_parse_skip_next
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_or(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _func
    - ','
    - _type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: CALLBACK_STR
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_STR(_func, _type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: imap_search_all
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_all(struct mail_search_build_context *ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_str
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:93,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:97,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:98,1
    - Dst: imap_seq_set_parse
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 108
    functionName: imap_search_uid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imap_seq_set_parse
    - p_array_init
    - mail_search_build_str
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_uid(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _func
    - ','
    - _flag
    - ','
    - _not
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: CALLBACK_FLAG
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_FLAG(_func, _flag, _not)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:139,1
    - Dst: imap_search_recent
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:140,1
    - Dst: imap_search_unseen
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 143
    functionName: imap_search_new
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - imap_search_recent
    - imap_search_unseen
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_new(struct mail_search_build_context *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_search_keyword
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 156
    functionName: imap_search_unkeyword
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - imap_search_keyword
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_unkeyword(struct mail_search_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:166,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:167,1
    - Dst: imap_parse_date
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - type
    - date_type
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    - enum mail_search_date_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 175
    functionName: arg_new_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - mail_search_parse_string
    - imap_parse_date
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\narg_new_date(struct mail_search_build_context
      *ctx,\n\t     enum mail_search_arg_type type,\n\t     enum mail_search_date_type
      date_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _func
    - ','
    - _type
    - ','
    - _date_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: CALLBACK_DATE
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_DATE(_func, _type, _date_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: imap_search_savedatesupported
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_savedatesupported(struct mail_search_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:212,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:213,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 221
    functionName: arg_new_size
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - str_to_uoff
    - mail_search_parse_string
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\narg_new_size(struct mail_search_build_context
      *ctx,\n\t     enum mail_search_arg_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg_new_size
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: imap_search_larger
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - arg_new_size
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_larger(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg_new_size
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: imap_search_smaller
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - arg_new_size
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_smaller(struct mail_search_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:242,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:243,1
    - Dst: mail_search_build_get_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:246,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - type
    - hdr_name
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 251
    functionName: arg_new_header
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - p_strdup
    - mail_search_build_get_utf8
    - mail_search_parse_string
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\narg_new_header(struct mail_search_build_context
      *ctx,\n\t       enum mail_search_arg_type type, const char *hdr_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 259
    functionName: CALLBACK_HDR
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_HDR(_name, _type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:271,1
    - Dst: mail_search_build_get_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:273,1
    - Dst: arg_new_header
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:276,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 277
    functionName: imap_search_header
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - mail_search_build_get_utf8
    - mail_search_parse_string
    - arg_new_header
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_header(struct mail_search_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_str
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:285,1
    - Dst: mail_search_build_get_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:289,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 293
    functionName: arg_new_body
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_get_utf8
    - mail_search_build_str
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\narg_new_body(struct mail_search_build_context
      *ctx,\n\t     enum mail_search_arg_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _func
    - ','
    - _type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 301
    functionName: CALLBACK_BODY
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_BODY(_func, _type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:312,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:313,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:316,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 324
    functionName: arg_new_interval
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - mail_search_parse_string
    - str_to_uint32
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\narg_new_interval(struct mail_search_build_context
      *ctx,\n\t\t enum mail_search_arg_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg_new_interval
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 338
    functionName: imap_search_older
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - arg_new_interval
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_older(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg_new_interval
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 344
    functionName: imap_search_younger
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - arg_new_interval
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_younger(struct mail_search_build_context *ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:350,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:352,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:354,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - modseq
    - name
    argTypes:
    - struct mail_search_build_context*
    - struct mail_search_modseq*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 361
    functionName: arg_modseq_set_type
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int arg_modseq_set_type(struct mail_search_build_context *ctx,\n\t\t
      \   struct mail_search_modseq *modseq, const char *name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:369,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:370,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:376,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:383,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:387,1
    - Dst: arg_modseq_set_type
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - sarg
    - name
    argTypes:
    - struct mail_search_build_context*
    - struct mail_search_arg*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 392
    functionName: arg_modseq_set_ext
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - arg_modseq_set_type
    - str_begins
    - imap_parse_system_flag
    - mail_search_parse_string
    - t_str_lcase
    linkageType: ''
    returnType: int
    signature: "int arg_modseq_set_ext(struct mail_search_build_context *ctx,\n\t\t
      \  struct mail_search_arg *sarg, const char *name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:402,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:403,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:405,1
    - Dst: arg_modseq_set_ext
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:408,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:412,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:416,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 421
    functionName: imap_search_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - p_new
    - mail_search_build_new
    - arg_modseq_set_ext
    - mail_search_parse_string
    - str_to_uint64
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_modseq(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:429,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 433
    functionName: imap_search_last_result
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - p_array_init
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_last_result(struct mail_search_build_context *ctx)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_set_fuzzy
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:443,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - sarg
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 449
    functionName: mail_search_arg_set_fuzzy
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 1
    functionsReached:
    - mail_search_arg_set_fuzzy
    linkageType: ''
    returnType: void
    signature: void mail_search_arg_set_fuzzy(struct mail_search_arg *sarg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:456,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:458,1
    - Dst: mail_search_arg_set_fuzzy
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 462
    functionName: imap_search_fuzzy
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_set_fuzzy
    - mail_search_build_key
    - i_assert
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_fuzzy(struct mail_search_build_context *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:469,1
    - Dst: mail_search_mime_build
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 473
    functionName: imap_search_mimepart
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - mail_search_mime_build
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_mimepart(struct mail_search_build_context *ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:484,1
    - Dst: mail_thread_type_parse
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:486,1
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:491,1
    - Dst: mail_search_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:493,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 496
    functionName: imap_search_inthread
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - mail_search_build_key
    - mail_search_parse_string
    - mail_thread_type_parse
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_inthread(struct mail_search_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_str
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:506,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:510,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:510,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:511,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:515,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 517
    functionName: imap_search_x_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - t_str_new
    - strlen
    - imap_utf7_to_utf8
    - mail_search_build_str
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_x_mailbox(struct mail_search_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_str
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:525,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:529,1
    - Dst: imap_seq_set_parse
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 536
    functionName: imap_search_x_real_uid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - imap_seq_set_parse
    - p_array_init
    - mail_search_build_str
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      imap_search_x_real_uid(struct mail_search_build_context *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_register_init
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:626,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:627,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:628,1
    - Dst: mail_search_register_add
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:629,1
    - Dst: mail_search_register_fallback
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum mail_search_register_arg_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 633
    functionName: mail_search_register_init_imap
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_register_add
    - mail_search_register_fallback
    - mail_search_register_init
    - HAS_ALL_BITS
    - N_ELEMENTS
    linkageType: ''
    returnType: struct mail_search_register
    signature: struct mail_search_register *mail_search_register_init_imap(enum mail_search_register_arg_flags
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_register_init_imap
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 635
    functionDepth: 2
    functionLinenumber: 635
    functionLinenumberEnd: 638
    functionName: mail_search_register_init_imap4rev2
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_register_init_imap
    linkageType: ''
    returnType: struct mail_search_register
    signature: struct mail_search_register *mail_search_register_init_imap4rev2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_register_init_imap
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 643
    functionName: mail_search_register_init_imap4rev1
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 0
    functionsReached:
    - mail_search_register_init_imap
    linkageType: ''
    returnType: struct mail_search_register
    signature: struct mail_search_register *mail_search_register_init_imap4rev1(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_register_init_imap4rev2
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 645
    functionDepth: 3
    functionLinenumber: 645
    functionLinenumberEnd: 651
    functionName: mail_search_register_get_imap4rev2
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 1
    functionsReached:
    - mail_search_register_init_imap4rev2
    linkageType: ''
    returnType: struct mail_search_register
    signature: 'struct mail_search_register *

      mail_search_register_get_imap4rev2(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_register_init_imap4rev1
      Src: /src/dovecot/src/lib-storage/mail-search-register-imap.c:657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 653
    functionDepth: 3
    functionLinenumber: 653
    functionLinenumberEnd: 659
    functionName: mail_search_register_get_imap4rev1
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-imap.c
    functionUses: 3
    functionsReached:
    - mail_search_register_init_imap4rev1
    linkageType: ''
    returnType: struct mail_search_register
    signature: 'struct mail_search_register *

      mail_search_register_get_imap4rev1(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:76,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-storage.c:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ns
    - vname
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 85
    functionName: mailbox_get_name_without_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strncmp
    - mail_namespace_get_sep
    linkageType: ''
    returnType: char
    signature: "char *\nmailbox_get_name_without_prefix(struct mail_namespace *ns,\n\t\t\t\tconst
      char *vname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_clients_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:91,1
    - Dst: mailbox_attributes_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:92,1
    - Dst: mailbox_lists_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:93,1
    - Dst: mail_storage_hooks_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:94,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:95,1
    - Dst: mail_storage_register_all
      Src: /src/dovecot/src/lib-storage/mail-storage.c:96,1
    - Dst: mailbox_list_register_all
      Src: /src/dovecot/src/lib-storage/mail-storage.c:97,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/lib-storage/mail-storage.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: mail_storage_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - mail_storage_hooks_init
    - mailbox_lists_init
    - mailbox_attributes_init
    - mailbox_list_register_all
    - dsasl_clients_init
    - mail_storage_register_all
    - settings_info_register
    linkageType: ''
    returnType: void
    signature: void mail_storage_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:103,1
    - Dst: mail_search_register_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:107,1
    - Dst: mail_search_register_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:109,1
    - Dst: mail_search_register_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:111,1
    - Dst: mail_search_mime_register_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:112,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage.c:113,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:114,1
    - Dst: mail_storage_hooks_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:115,1
    - Dst: mailbox_lists_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:116,1
    - Dst: mailbox_attributes_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:117,1
    - Dst: dsasl_clients_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 119
    functionName: mail_storage_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mailbox_lists_deinit
    - mailbox_attributes_deinit
    - mail_storage_hooks_deinit
    - mail_search_mime_register_deinit
    - mail_search_register_deinit
    - array_is_created
    - i_assert
    - array_free
    - dsasl_clients_deinit
    linkageType: ''
    returnType: void
    signature: void mail_storage_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:123,1
    - Dst: mail_storage_find_class
      Src: /src/dovecot/src/lib-storage/mail-storage.c:123,1
    - Dst: settings_info_register
      Src: /src/dovecot/src/lib-storage/mail-storage.c:126,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-storage.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - storage_class
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 130
    functionName: mail_storage_class_register
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - settings_info_register
    - i_assert
    - mail_storage_find_class
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void mail_storage_class_register(struct mail_storage *storage_class)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-storage/mail-storage.c:136,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-storage.c:137,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mail-storage.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - storage_class
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 139
    functionName: mail_storage_class_unregister
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void mail_storage_class_unregister(struct mail_storage *storage_class)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:146,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:148,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 154
    functionName: mail_storage_find_class
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - array_get
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *mail_storage_find_class(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:166,1
    - Dst: v::autodetect
      Src: /src/dovecot/src/lib-storage/mail-storage.c:169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - ns
    - mail_set
    - root_path_override
    - inbox_path_override
    argTypes:
    - struct mail_namespace*
    - struct mail_storage_settings*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 178
    functionName: mail_storage_autodetect
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - array_get
    - v::autodetect
    linkageType: ''
    returnType: struct mail_storage
    signature: "struct mail_storage *\nmail_storage_autodetect(const struct mail_namespace
      *ns,\n\t\t\tconst struct mail_storage_settings *mail_set,\n\t\t\tconst char
      **root_path_override,\n\t\t\tconst char **inbox_path_override)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:191,1
    - Dst: mail_user_get_storage_class
      Src: /src/dovecot/src/lib-storage/mail-storage.c:194,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:196,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:206,1
    - Dst: mail_storage_autodetect
      Src: /src/dovecot/src/lib-storage/mail-storage.c:210,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:213,1
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-storage.c:217,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:220,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:224,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 6
    argNames:
    - ns
    - driver
    - set_event
    - root_path_override
    - inbox_path_override
    - error_r
    argTypes:
    - struct mail_namespace*
    - char*
    - struct event*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 226
    functionName: mail_storage_get_class
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_user_get_home
    - t_strdup_printf
    - mail_user_get_storage_class
    - mail_storage_autodetect
    - settings_free
    - settings_get
    linkageType: ''
    returnType: struct mail_storage
    signature: "struct mail_storage *\nmail_storage_get_class(struct mail_namespace
      *ns, const char *driver,\n\t\t       struct event *set_event,\n\t\t       const
      char **root_path_override,\n\t\t       const char **inbox_path_override, const
      char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mail-storage.c:234,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/mail-storage.c:236,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:238,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/mail-storage.c:241,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/lib-storage/mail-storage.c:242,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:245,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - root_dir
    - dir_type
    - error_r
    argTypes:
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 252
    functionName: mail_storage_verify_root
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_error_eacces_msg
    - t_strdup_printf
    - stat
    - S_ISDIR
    - ENOACCESS
    linkageType: ''
    returnType: int
    signature: "int mail_storage_verify_root(const char *root_dir, const char *dir_type,\n\t\t\t
      const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mail-storage.c:268,1
    - Dst: event_want_debug_log
      Src: /src/dovecot/src/lib-storage/mail-storage.c:274,1
    - Dst: mail_storage_verify_root
      Src: /src/dovecot/src/lib-storage/mail-storage.c:279,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage.c:280,1
    - Dst: mail_storage_verify_root
      Src: /src/dovecot/src/lib-storage/mail-storage.c:292,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - list
    - flags
    - error_r
    argTypes:
    - struct mailbox_list*
    - enum mail_storage_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 293
    functionName: mail_storage_create_root
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_verify_root
    - e_debug
    - event_want_debug_log
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: int
    signature: "int mail_storage_create_root(struct mailbox_list *list,\n\t\t\t enum
      mail_storage_flags flags, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:300,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:304,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:307,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - storage
    - storage_class
    - mail_set
    argTypes:
    - struct mail_storage*
    - struct mail_storage*
    - struct mail_storage_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 312
    functionName: mail_storage_match_class
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool mail_storage_match_class(struct mail_storage *storage,\n\t\t\t
      const struct mail_storage *storage_class,\n\t\t\t const struct mail_storage_settings
      *mail_set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_match_class
      Src: /src/dovecot/src/lib-storage/mail-storage.c:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - user
    - storage_class
    - mail_set
    argTypes:
    - struct mail_user*
    - struct mail_storage*
    - struct mail_storage_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 326
    functionName: mail_storage_find
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_match_class
    linkageType: ''
    returnType: struct mail_storage
    signature: "struct mail_storage *\nmail_storage_find(struct mail_user *user,\n\t\t
      \ const struct mail_storage *storage_class,\n\t\t  const struct mail_storage_settings
      *mail_set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lib-storage/mail-storage.c:336,1
    - Dst: settings_instance_dup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:338,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage.c:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ns
    - set_event
    argTypes:
    - struct mail_namespace*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 340
    functionName: mail_storage_create_ns_instance
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - settings_instance_dup
    - event_set_ptr
    - mail_storage_service_user_get_settings_instance
    linkageType: ''
    returnType: void
    signature: "void mail_storage_create_ns_instance(struct mail_namespace *ns,\n\t\t\t\tstruct
      event *set_event)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_is_mailbox_file
      Src: /src/dovecot/src/lib-storage/mail-storage.c:352,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:360,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:363,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib-storage/mail-storage.c:367,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage.c:368,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:369,1
    - Dst: mail_storage_create_ns_instance
      Src: /src/dovecot/src/lib-storage/mail-storage.c:374,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage.c:375,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:381,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:383,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:388,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:389,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:391,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:391,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-storage/mail-storage.c:392,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:393,1
    - Dst: mail_storage_create_ns_instance
      Src: /src/dovecot/src/lib-storage/mail-storage.c:396,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage.c:397,1
    - Dst: mail_storage_create_ns_instance
      Src: /src/dovecot/src/lib-storage/mail-storage.c:402,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage.c:403,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:409,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:411,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:423,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:424,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:433,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage.c:434,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:435,1
    - Dst: mailbox_list_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:437,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:440,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:443,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:444,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:445,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 7
    argNames:
    - ns
    - storage_class
    - parent_set_event
    - flags
    - root_path_override
    - inbox_path_override
    - error_r
    argTypes:
    - struct mail_namespace*
    - struct mail_storage*
    - struct event*
    - enum mail_storage_flags
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 342
    functionDepth: 4
    functionLinenumber: 342
    functionLinenumberEnd: 447
    functionName: mail_storage_create_list
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - mailbox_list_create
    - settings_event_add_filter_name
    - mail_storage_is_mailbox_file
    - t_strdup_printf
    - settings_free
    - mail_storage_create_ns_instance
    - event_find_field_recursive
    - settings_event_add_list_filter_name
    - t_str_lcase
    - settings_override
    - event_add_str
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int mail_storage_create_list(struct mail_namespace *ns,\n\t\t\t struct
      mail_storage *storage_class,\n\t\t\t struct event *parent_set_event,\n\t\t\t
      enum mail_storage_flags flags,\n\t\t\t const char *root_path_override,\n\t\t\t
      const char *inbox_path_override,\n\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:453,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mail-storage.c:454,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/lib-storage/mail-storage.c:455,1
    - Dst: str_array_find
      Src: /src/dovecot/src/lib-storage/mail-storage.c:456,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 449
    functionDepth: 2
    functionLinenumber: 449
    functionLinenumberEnd: 459
    functionName: pop3_uidl_format_has_md5
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - var_expand_program_create
    - i_fatal
    - var_expand_program_variables
    - var_expand_program_free
    - str_array_find
    linkageType: ''
    returnType: bool
    signature: bool pop3_uidl_format_has_md5(const char *fmt)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:475,1
    - Dst: mail_storage_get_class
      Src: /src/dovecot/src/lib-storage/mail-storage.c:486,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:489,1
    - Dst: mail_storage_create_list
      Src: /src/dovecot/src/lib-storage/mail-storage.c:495,1
    - Dst: mail_storage_create_root
      Src: /src/dovecot/src/lib-storage/mail-storage.c:500,1
    - Dst: mail_storage_find
      Src: /src/dovecot/src/lib-storage/mail-storage.c:505,1
    - Dst: mail_namespace_add_storage
      Src: /src/dovecot/src/lib-storage/mail-storage.c:510,1
    - Dst: pop3_uidl_format_has_md5
      Src: /src/dovecot/src/lib-storage/mail-storage.c:520,1
    - Dst: struct mail_storage*::v::alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:524,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:529,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:535,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-storage/mail-storage.c:537,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage.c:538,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:539,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:540,1
    - Dst: v::create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:543,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:544,1
    - Dst: v::destroy
      Src: /src/dovecot/src/lib-storage/mail-storage.c:545,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:546,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:547,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:548,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:559,1
    - Dst: mail_user_init_fs_parameters
      Src: /src/dovecot/src/lib-storage/mail-storage.c:560,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lib-storage/mail-storage.c:563,1
    - Dst: settings_instance_dup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:566,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage.c:567,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage.c:570,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:574,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage.c:575,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/lib-storage/mail-storage.c:577,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:579,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:580,1
    - Dst: v::destroy
      Src: /src/dovecot/src/lib-storage/mail-storage.c:581,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:582,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:583,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:584,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:587,1
    - Dst: hook_mail_storage_created
      Src: /src/dovecot/src/lib-storage/mail-storage.c:591,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 71
    argCount: 5
    argNames:
    - ns
    - set_event
    - flags
    - storage_r
    - error_r
    argTypes:
    - struct mail_namespace*
    - struct event*
    - enum mail_storage_flags
    - struct mail_storage**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 461
    functionDepth: 7
    functionLinenumber: 461
    functionLinenumberEnd: 592
    functionName: mail_storage_create_real
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_create_list
    - event_unref
    - pop3_uidl_format_has_md5
    - p_array_init
    - v::create
    - mail_namespace_add_storage
    - t_strdup_printf
    - pool_unref
    - settings_override
    - mail_user_init_fs_parameters
    - event_set_append_log_prefix
    - mail_storage_create_root
    - settings_get
    - event_set_ptr
    - mail_storage_find
    - hook_mail_storage_created
    - i_zero
    - event_create
    - struct mail_storage*::v::alloc
    - pool_ref
    - mail_storage_service_user_get_settings_instance
    - mail_storage_get_class
    - v::destroy
    - fs_init_auto
    - settings_instance_dup
    - settings_free
    - event_add_category
    linkageType: ''
    returnType: int
    signature: "int mail_storage_create_real(struct mail_namespace *ns, struct event
      *set_event,\n\t\t\t enum mail_storage_flags flags,\n\t\t\t struct mail_storage
      **storage_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_create_real
      Src: /src/dovecot/src/lib-storage/mail-storage.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ns
    - set_event
    - flags
    - storage_r
    - error_r
    argTypes:
    - struct mail_namespace*
    - struct event*
    - enum mail_storage_flags
    - struct mail_storage**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 602
    functionDepth: 8
    functionLinenumber: 602
    functionLinenumberEnd: 610
    functionName: mail_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_create_real
    linkageType: ''
    returnType: int
    signature: "int mail_storage_create(struct mail_namespace *ns, struct event *set_event,\n\t\t\tenum
      mail_storage_flags flags,\n\t\t\tstruct mail_storage **storage_r, const char
      **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:618,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage.c:628,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage.c:632,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-storage/mail-storage.c:634,1
    - Dst: struct mail_storage*::v::destroy
      Src: /src/dovecot/src/lib-storage/mail-storage.c:636,1
    - Dst: mail_storage_clear_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:637,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage.c:638,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:639,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-storage.c:639,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:640,1
    - Dst: fs_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:642,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:643,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:644,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:645,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:648,1
    - Dst: mail_index_alloc_cache_destroy_unrefed
      Src: /src/dovecot/src/lib-storage/mail-storage.c:650,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - _storage
    argTypes:
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 614
    functionDepth: 3
    functionLinenumber: 614
    functionLinenumberEnd: 651
    functionName: mail_storage_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_panic
    - settings_instance_free
    - mail_index_alloc_cache_destroy_unrefed
    - fs_unref
    - event_unref
    - struct mail_storage*::v::destroy
    - settings_free
    - pool_unref
    - mail_storage_clear_error
    - array_count
    - array_free
    - array_is_created
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void mail_storage_unref(struct mail_storage **_storage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:655,1
    - Dst: mail_user_ref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 659
    functionName: mail_storage_obj_ref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_user_ref
    linkageType: ''
    returnType: void
    signature: void mail_storage_obj_ref(struct mail_storage *storage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:663,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:664,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:668,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 670
    functionName: mail_storage_obj_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_user_unref
    linkageType: ''
    returnType: void
    signature: void mail_storage_obj_unref(struct mail_storage *storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/mail-storage.c:674,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:676,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 681
    functionName: mail_storage_clear_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - i_free_and_null
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_storage_clear_error(struct mail_storage *storage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:687,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - storage
    - error
    - string
    argTypes:
    - struct mail_storage*
    - enum mail_error
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 693
    functionName: mail_storage_set_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 26
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mail_storage_set_error(struct mail_storage *storage,\n\t\t\t
      \   enum mail_error error, const char *string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/lib-storage/mail-storage.c:699,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:701,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:702,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:708,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 711
    functionName: mail_storage_set_internal_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 13
    functionsReached:
    - i_strdup
    - i_free
    - t_strflocaltime
    linkageType: ''
    returnType: void
    signature: void mail_storage_set_internal_error(struct mail_storage *storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:727,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:729,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:730,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:736,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:737,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - storage
    - str
    - mailbox_vname
    - mail_uid
    argTypes:
    - struct mail_storage*
    - char*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 713
    functionDepth: 2
    functionLinenumber: 713
    functionLinenumberEnd: 739
    functionName: mail_storage_set_critical_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_free
    - mail_storage_set_internal_error
    linkageType: ''
    returnType: void
    signature: "void mail_storage_set_critical_error(struct mail_storage *storage,
      const char *str,\n\t\t\t\tconst char *mailbox_vname, uint32_t mail_uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/mail-storage.c:746,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:748,1
    - Dst: mail_storage_set_critical_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:749,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - storage
    - fmt
    argTypes:
    - struct mail_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 751
    functionName: mail_storage_set_critical
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached:
    - e_error
    - t_strdup_vprintf
    - mail_storage_set_critical_error
    - va_start
    linkageType: ''
    returnType: void
    signature: "void mail_storage_set_critical(struct mail_storage *storage,\n\t\t\t
      \      const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/mail-storage.c:759,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:761,1
    - Dst: mail_storage_set_critical_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:762,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - box
    - fmt
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 755
    functionDepth: 3
    functionLinenumber: 755
    functionLinenumberEnd: 765
    functionName: mailbox_set_critical
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 12
    functionsReached:
    - e_error
    - t_strdup_vprintf
    - mail_storage_set_critical_error
    - va_start
    linkageType: ''
    returnType: void
    signature: void mailbox_set_critical(struct mailbox *box, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/mail-storage.c:773,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:775,1
    - Dst: mail_storage_set_critical_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:776,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:778,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/mail-storage.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - mail
    - fmt
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 769
    functionDepth: 3
    functionLinenumber: 769
    functionLinenumberEnd: 779
    functionName: mail_set_critical
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 8
    functionsReached:
    - va_start
    - mail_event
    - mail_storage_set_critical_error
    - e_error
    - t_strdup_vprintf
    linkageType: ''
    returnType: void
    signature: void mail_set_critical(struct mail *mail, const char *fmt, ...)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:792,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:799,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:800,1
    - Dst: mailbox_name_sanitize
      Src: /src/dovecot/src/lib-storage/mail-storage.c:802,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:807,1
    - Dst: mailbox_name_sanitize
      Src: /src/dovecot/src/lib-storage/mail-storage.c:809,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:814,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - storage
    - error_r
    argTypes:
    - struct mail_storage*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 786
    functionDepth: 1
    functionLinenumber: 786
    functionLinenumberEnd: 815
    functionName: mail_storage_get_last_internal_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 4
    functionsReached:
    - mail_storage_get_last_error
    - i_assert
    - t_strdup_printf
    - mailbox_name_sanitize
    linkageType: ''
    returnType: char
    signature: "char *mail_storage_get_last_internal_error(struct mail_storage *storage,\n\t\t\t\t\t\t
      enum mail_error *error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-storage/mail-storage.c:824,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:827,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:828,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:833,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:835,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:840,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - box
    - error_r
    argTypes:
    - struct mailbox*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 821
    functionDepth: 2
    functionLinenumber: 821
    functionLinenumberEnd: 841
    functionName: mailbox_get_last_internal_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 62
    functionsReached:
    - strcmp
    - mailbox_get_storage
    - mail_storage_get_last_error
    - mail_storage_get_last_internal_error
    - t_strdup_printf
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *mailbox_get_last_internal_error(struct mailbox *box,\n\t\t\t\t\t
      \   enum mail_error *error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-storage/mail-storage.c:849,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:852,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:853,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:857,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:862,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:865,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - mail
    - error_r
    argTypes:
    - struct mail*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 846
    functionDepth: 3
    functionLinenumber: 846
    functionLinenumberEnd: 866
    functionName: mail_get_last_internal_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 4
    functionsReached:
    - strcmp
    - mailbox_get_storage
    - mail_storage_get_last_error
    - mailbox_get_last_internal_error
    - mail_storage_get_last_internal_error
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      mail_get_last_internal_error(struct mail *mail, enum mail_error *error_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:877,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:878,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct mail_storage*
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 868
    functionDepth: 2
    functionLinenumber: 868
    functionLinenumberEnd: 879
    functionName: mail_storage_copy_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_get_last_error
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: "void mail_storage_copy_error(struct mail_storage *dest,\n\t\t\t     struct
      mail_storage *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:887,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - storage
    - list
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 881
    functionDepth: 2
    functionLinenumber: 881
    functionLinenumberEnd: 889
    functionName: mail_storage_copy_list_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mailbox_list_get_last_error
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: "void mail_storage_copy_list_error(struct mail_storage *storage,\n\t\t\t\t
      \ struct mailbox_list *list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_is_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:893,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:894,1
    - Dst: mail_index_reset_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:895,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:897,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:898,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 891
    functionDepth: 2
    functionLinenumber: 891
    functionLinenumberEnd: 901
    functionName: mailbox_set_index_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - mailbox_set_deleted
    - mail_index_reset_error
    - mail_index_is_deleted
    - mail_storage_set_index_error
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void mailbox_set_index_error(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:908,1
    - Dst: mail_index_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:910,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:913,1
    - Dst: mail_index_reset_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:915,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - storage
    - index
    argTypes:
    - struct mail_storage*
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 903
    functionDepth: 2
    functionLinenumber: 903
    functionLinenumberEnd: 916
    functionName: mail_storage_set_index_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - mail_index_get_last_error
    - mail_storage_set_internal_error
    - mail_index_reset_error
    linkageType: ''
    returnType: void
    signature: "void mail_storage_set_index_error(struct mail_storage *storage,\n\t\t\t\t
      \ struct mail_index *index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 922
    functionName: mail_storage_get_settings
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mail_storage_settings
    signature: 'struct mail_storage_settings *

      mail_storage_get_settings(struct mail_storage *storage)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 924
    functionDepth: 0
    functionLinenumber: 924
    functionLinenumberEnd: 927
    functionName: mail_storage_get_user
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: struct mail_user
    signature: struct mail_user *mail_storage_get_user(struct mail_storage *storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - storage
    - callbacks
    - context
    argTypes:
    - struct mail_storage*
    - struct mail_storage_callbacks*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 935
    functionName: mail_storage_set_callbacks
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_storage_set_callbacks(struct mail_storage *storage,\n\t\t\t\tstruct
      mail_storage_callbacks *callbacks,\n\t\t\t\tvoid *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_storage*::v::purge
      Src: /src/dovecot/src/lib-storage/mail-storage.c:944,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 945
    functionName: mail_storage_purge
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - struct mail_storage*::v::purge
    linkageType: ''
    returnType: int
    signature: int mail_storage_purge(struct mail_storage *storage)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:965,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - storage
    - error_r
    argTypes:
    - struct mail_storage*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 949
    functionDepth: 1
    functionLinenumber: 949
    functionLinenumberEnd: 972
    functionName: mail_storage_get_last_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 8
    functionsReached:
    - i_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *mail_storage_get_last_error(struct mail_storage *storage,\n\t\t\t\t\tenum
      mail_error *error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - box
    - error_r
    argTypes:
    - struct mailbox*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 974
    functionDepth: 2
    functionLinenumber: 974
    functionLinenumberEnd: 978
    functionName: mailbox_get_last_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 25
    functionsReached:
    - mail_storage_get_last_error
    linkageType: ''
    returnType: char
    signature: "char *mailbox_get_last_error(struct mailbox *box,\n\t\t\t\t   enum
      mail_error *error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 980
    functionDepth: 2
    functionLinenumber: 980
    functionLinenumberEnd: 986
    functionName: mailbox_get_last_mail_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 7
    functionsReached:
    - mail_storage_get_last_error
    linkageType: ''
    returnType: enum mail_error
    signature: enum mail_error mailbox_get_last_mail_error(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage.c:992,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:993,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/mail-storage.c:994,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:995,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1003,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 1009
    functionName: mail_storage_last_error_push
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_strdup
    - array_is_created
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void mail_storage_last_error_push(struct mail_storage *storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1013,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1015,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1017,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1018,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1019,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1027
    functionName: mail_storage_last_error_pop
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_count
    - i_free
    - array_idx
    linkageType: ''
    returnType: void
    signature: void mail_storage_last_error_pop(struct mail_storage *storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1029
    functionDepth: 0
    functionLinenumber: 1029
    functionLinenumberEnd: 1033
    functionName: mail_storage_is_mailbox_file
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_storage_is_mailbox_file(struct mail_storage *storage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_error_from_errno
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1040,1
    - Dst: event_want_debug_log
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1042,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1049,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1035
    functionDepth: 2
    functionLinenumber: 1035
    functionLinenumberEnd: 1051
    functionName: mail_storage_set_error_from_errno
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_error_from_errno
    - event_want_debug_log
    - mail_storage_set_error
    linkageType: ''
    returnType: bool
    signature: bool mail_storage_set_error_from_errno(struct mail_storage *storage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1059,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - list
    - set_r
    - error_r
    argTypes:
    - struct mailbox_list*
    - struct mailbox_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1053
    functionDepth: 1
    functionLinenumber: 1053
    functionLinenumberEnd: 1067
    functionName: mailbox_list_get_default_box_settings
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - settings_get
    - pool_ref
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_get_default_box_settings(struct mailbox_list *list,\n\t\t\t\t
      \     const struct mailbox_settings **set_r,\n\t\t\t\t      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1073,1
    - Dst: mailbox_list_get_default_box_settings
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1074,1
    - Dst: mailbox_get_name_without_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1077,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1080,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1083,1
    - Dst: mailbox_list_get_default_box_settings
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1095,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1097,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - list
    - vname
    - set_r
    - error_r
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1069
    functionDepth: 2
    functionLinenumber: 1069
    functionLinenumberEnd: 1100
    functionName: mailbox_name_try_get_settings
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - pool_ref
    - array_get
    - array_is_empty
    - mailbox_get_name_without_prefix
    - wildcard_match
    - mailbox_list_get_default_box_settings
    linkageType: ''
    returnType: int
    signature: "int mailbox_name_try_get_settings(struct mailbox_list *list, const
      char *vname,\n\t\t\t\t  const struct mailbox_settings **set_r,\n\t\t\t\t  const
      char **error_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1114,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1115,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1122,1
    - Dst: strncasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1124,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1125,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1126,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1132,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1140,1
    - Dst: uni_utf8_to_nfc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1141,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1141,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1142,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1144,1
    - Dst: mailbox_list_get_storage
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1154,1
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1157,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1158,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1159,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1160,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1164,1
    - Dst: uni_utf8_to_nfc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1165,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1165,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1166,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1168,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1174,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1175,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1176,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1185,1
    - Dst: struct mail_storage*::v::mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1188,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1191,1
    - Dst: mailbox_name_try_get_settings
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1192,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1194,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1197,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1200,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1204,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1207,1
    - Dst: hook_mailbox_allocated
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1210,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 59
    argCount: 3
    argNames:
    - list
    - vname
    - flags
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1102
    functionDepth: 4
    functionLinenumber: 1102
    functionLinenumberEnd: 1211
    functionName: mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 68
    functionsReached:
    - mail_namespace_get_sep
    - p_strdup
    - strlen
    - str_begins_icase
    - strncasecmp
    - HAS_NO_BITS
    - t_strdup
    - mail_storage_set_error
    - hook_mailbox_allocated
    - mailbox_name_try_get_settings
    - mailbox_list_get_storage
    - struct mail_storage*::v::mailbox_alloc
    - mail_namespace_get_default_storage
    - mailbox_list_set_critical
    - strcasecmp
    - i_assert
    - mailbox_list_get_last_error
    - strcmp
    - str_begins_with
    - str_begins
    - mailbox_set_critical
    - uni_utf8_to_nfc
    - settings_get
    - t_strconcat
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *mailbox_alloc(struct mailbox_list *list, const char
      *vname,\n\t\t\t      enum mailbox_flags flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_guid_cache_find
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1227,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1230,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1231,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1233,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1236,1
    - Dst: mailbox_guid_cache_refresh
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1237,1
    - Dst: mailbox_alloc_guid
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1238,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1243,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1245,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1246,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1248,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1250,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1251,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1256,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1257,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1259,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - list
    - guid
    - flags
    argTypes:
    - struct mailbox_list*
    - guid_128_t
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1218
    functionDepth: 3
    functionLinenumber: 1218
    functionLinenumberEnd: 1262
    functionName: mailbox_alloc_guid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mailbox_free
    - mailbox_get_last_internal_error
    - mailbox_alloc_guid
    - mailbox_guid_cache_find
    - guid_128_to_string
    - t_strdup_printf
    - e_error
    - mailbox_alloc
    - memcmp
    - mailbox_guid_cache_refresh
    - mailbox_get_metadata
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *mailbox_alloc_guid(struct mailbox_list *list,\n\t\t\t\t
      \  const guid_128_t guid,\n\t\t\t\t   enum mailbox_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1269,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1275,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - str
    - special_use
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1264
    functionDepth: 1
    functionLinenumber: 1264
    functionLinenumberEnd: 1277
    functionName: str_contains_special_use
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - t_strsplit_spaces
    - i_assert
    - str_array_icase_find
    linkageType: ''
    returnType: bool
    signature: bool str_contains_special_use(const char *str, const char *special_use)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1295,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1298,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1301,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1307,1
    - Dst: str_contains_special_use
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1310,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1311,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1316,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1319,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1320,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - ns
    - special_use
    - vname_r
    - error_code_r
    argTypes:
    - struct mail_namespace*
    - char*
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1281
    functionDepth: 2
    functionLinenumber: 1281
    functionLinenumberEnd: 1326
    functionName: namespace_find_special_use
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_list_iter_deinit
    - str_contains_special_use
    - mailbox_list_iter_next
    - t_strdup
    - e_error
    - mailbox_list_iter_init
    - HAS_ALL_BITS
    - i_assert
    - mailbox_list_get_last_error
    linkageType: ''
    returnType: int
    signature: "int namespace_find_special_use(struct mail_namespace *ns, const char
      *special_use,\n\t\t\t   const char **vname_r, enum mail_error *error_code_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1341,1
    - Dst: namespace_find_special_use
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1342,1
    - Dst: namespace_find_special_use
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1353,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - namespaces
    - special_use
    - ns_r
    - vname_r
    - error_code_r
    argTypes:
    - struct mail_namespace*
    - char*
    - struct mail_namespace**
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1328
    functionDepth: 3
    functionLinenumber: 1328
    functionLinenumberEnd: 1361
    functionName: namespaces_find_special_use
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find_inbox
    - namespace_find_special_use
    linkageType: ''
    returnType: int
    signature: "int namespaces_find_special_use(struct mail_namespace *namespaces,\n\t\t\t
      \   const char *special_use,\n\t\t\t    struct mail_namespace **ns_r,\n\t\t\t
      \   const char **vname_r, enum mail_error *error_code_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1373,1
    - Dst: namespaces_find_special_use
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1374,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1377,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1378,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1382,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1383,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1390,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1393,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1396,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1401,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1404,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1411,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1412,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - user
    - mname
    - flags
    argTypes:
    - struct mail_user*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1363
    functionDepth: 4
    functionLinenumber: 1363
    functionLinenumberEnd: 1416
    functionName: mailbox_alloc_for_user
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_find
    - t_strdup_printf
    - strcasecmp
    - mailbox_alloc
    - mail_namespace_find_inbox
    - HAS_ALL_BITS
    - i_assert
    - namespaces_find_special_use
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nmailbox_alloc_for_user(struct mail_user *user, const
      char *mname,\n\t\t       enum mailbox_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1418
    functionDepth: 0
    functionLinenumber: 1418
    functionLinenumberEnd: 1426
    functionName: mailbox_is_autocreated
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool mailbox_is_autocreated(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1433,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1428
    functionDepth: 0
    functionLinenumber: 1428
    functionLinenumberEnd: 1434
    functionName: mailbox_is_autosubscribed
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool mailbox_is_autosubscribed(struct mailbox *box)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1441,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1442,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1448,1
    - Dst: mailbox_is_autosubscribed
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1453,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1454,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1455,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1457,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1436
    functionDepth: 4
    functionLinenumber: 1436
    functionLinenumberEnd: 1462
    functionName: mailbox_autocreate
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_is_autosubscribed
    - mailbox_set_subscribed
    - mailbox_set_critical
    - mailbox_create
    linkageType: ''
    returnType: int
    signature: int mailbox_autocreate(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_autocreate
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1468,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1470,1
    - Dst: struct mailbox*::v::open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1472,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1476,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1478,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1464
    functionDepth: 5
    functionLinenumber: 1464
    functionLinenumberEnd: 1481
    functionName: mailbox_autocreate_and_reopen
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_autocreate
    - mailbox_close
    - mailbox_set_critical
    - struct mailbox*::v::open
    linkageType: ''
    returnType: int
    signature: int mailbox_autocreate_and_reopen(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1495,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1499,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1505,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1509,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1513,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1516,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1517,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1518,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - list
    - vname
    argTypes:
    - struct mailbox_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1483
    functionDepth: 1
    functionLinenumber: 1483
    functionLinenumberEnd: 1521
    functionName: mailbox_vname_normalize_ns_prefix_nfc
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - t_str_new
    - strchr
    - str_c
    - uni_utf8_write_nfc
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mailbox_vname_normalize_ns_prefix_nfc(struct mailbox_list *list,\n\t\t\t\t
      \     const char **vname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_vname_normalize_ns_prefix_nfc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1530,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1532,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1536,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1539,1
    - Dst: mailbox_rename
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1542,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1544,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1548,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1551,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1553,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1554,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1555,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1556,1
    - Dst: mailbox_rename
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1557,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1560,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1561,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1562,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - list
    - vname_raw
    - vname_nfc
    - vname_new_r
    - error_r
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1523
    functionDepth: 3
    functionLinenumber: 1523
    functionLinenumberEnd: 1565
    functionName: mailbox_rename_nfc_forced
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_last_mail_error
    - mailbox_free
    - mailbox_get_last_error
    - mailbox_rename
    - guid_128_to_string
    - t_strdup_printf
    - guid_128_generate
    - mailbox_alloc
    - mailbox_vname_normalize_ns_prefix_nfc
    linkageType: ''
    returnType: int
    signature: "int mailbox_rename_nfc_forced(struct mailbox_list *list, const char
      *vname_raw,\n\t\t\t      const char *vname_nfc, const char **vname_new_r,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_rename_nfc_forced
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1572,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1575,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1582,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1583,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1585,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1586,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1567
    functionDepth: 4
    functionLinenumber: 1567
    functionLinenumberEnd: 1592
    functionName: mailbox_nfc_normalize
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_rename_nfc_forced
    - strcmp
    - p_strdup
    - e_debug
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: int mailbox_nfc_normalize(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - vname
    - sep
    - error_r
    argTypes:
    - char*
    - char
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1594
    functionDepth: 0
    functionLinenumber: 1594
    functionLinenumberEnd: 1626
    functionName: mailbox_name_verify_extra_separators
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_name_verify_extra_separators(const char *vname, char
      sep,\n\t\t\t\t     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1638,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1645,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1651,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - ns
    - vnamep
    - error_r
    argTypes:
    - struct mail_namespace*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1628
    functionDepth: 1
    functionLinenumber: 1628
    functionLinenumberEnd: 1662
    functionName: mailbox_verify_name_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strncmp
    - i_assert
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_verify_name_prefix(struct mail_namespace *ns, const char
      **vnamep,\n\t\t\t   const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_name_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1677,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1678,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1679,1
    - Dst: mailbox_name_sanitize
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1680,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1684,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1685,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1696,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1697,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1697,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1707,1
    - Dst: mailbox_name_verify_extra_separators
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1712,1
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1713,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1714,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1715,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1664
    functionDepth: 2
    functionLinenumber: 1664
    functionLinenumberEnd: 1719
    functionName: mailbox_verify_name_int
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - strchr
    - mailbox_name_verify_extra_separators
    - mailbox_list_is_valid_name
    - mailbox_name_sanitize
    - t_strdup_printf
    - mailbox_verify_name_prefix
    - mailbox_list_get_hierarchy_sep
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int mailbox_verify_name_int(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_name_int
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1726
      start: 1721
    functionDepth: 3
    functionLinenumber: 1721
    functionLinenumberEnd: 1726
    functionName: mailbox_verify_name
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_verify_name_int
    linkageType: ''
    returnType: int
    signature: int mailbox_verify_name(struct mailbox *box)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1737,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1743,1
    - Dst: mailbox_nfc_normalize
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1746,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1748,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1751,1
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1758,1
    - Dst: mailbox_autocreate
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1761,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1763,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1764,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1730
    functionDepth: 5
    functionLinenumber: 1730
    functionLinenumberEnd: 1769
    functionName: mailbox_verify_existing_name_int
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_verify_name
    - mailbox_autocreate
    - mailbox_nfc_normalize
    - mailbox_close
    - mailbox_is_autocreated
    - i_assert
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: int mailbox_verify_existing_name_int(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_existing_name_int
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1776
      start: 1771
    functionDepth: 6
    functionLinenumber: 1771
    functionLinenumberEnd: 1776
    functionName: mailbox_verify_existing_name
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_verify_existing_name_int
    linkageType: ''
    returnType: int
    signature: int mailbox_verify_existing_name(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1784,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1811,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1812,1
    - Dst: unicode_code_point_is_assigned
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1819,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1820,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 2
    argNames:
    - name
    - error_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1827
    functionName: mailbox_name_check_forbidden_chars
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - uni_utf8_get_char_n
    - strlen
    - t_strdup_printf
    - i_assert
    - unicode_code_point_is_assigned
    linkageType: ''
    returnType: int
    signature: int mailbox_name_check_forbidden_chars(const char *name, const char
      **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - box
    - set
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1832
      start: 1829
    functionDepth: 0
    functionLinenumber: 1829
    functionLinenumberEnd: 1832
    functionName: mailbox_skip_create_name_restrictions
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mailbox_skip_create_name_restrictions(struct mailbox *box, bool
      set)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1843,1
    - Dst: mailbox_name_check_forbidden_chars
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1847,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1848,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1851,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1852,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1859,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1860,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1862,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1869,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1870,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1834
    functionDepth: 4
    functionLinenumber: 1834
    functionLinenumberEnd: 1875
    functionName: mailbox_verify_create_name
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strchr
    - mailbox_verify_name
    - strlen
    - mailbox_list_get_hierarchy_sep
    - mail_storage_set_error
    - mailbox_name_check_forbidden_chars
    linkageType: ''
    returnType: int
    signature: int mailbox_verify_create_name(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1880,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1892,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1893,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 2
    argNames:
    - ns
    - name
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1877
    functionDepth: 0
    functionLinenumber: 1877
    functionLinenumberEnd: 1897
    functionName: have_listable_namespace_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    - mail_namespace_get_sep
    linkageType: ''
    returnType: bool
    signature: "bool have_listable_namespace_prefix(struct mail_namespace *ns,\n\t\t\t\t\t
      \  const char *name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1912,1
    - Dst: struct mailbox*::v::exists
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1922,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - box
    - auto_boxes
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1923
      start: 1899
    functionDepth: 4
    functionLinenumber: 1899
    functionLinenumberEnd: 1923
    functionName: mailbox_exists
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 6
    functionsReached:
    - struct mailbox*::v::exists
    - mailbox_verify_name
    linkageType: ''
    returnType: int
    signature: "int mailbox_exists(struct mailbox *box, bool auto_boxes,\n\t\t   enum
      mailbox_existence *existence_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1963,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1966,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1967,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1970,1
    - Dst: mailbox_verify_existing_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1975,1
    - Dst: mailbox_nfc_normalize
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1978,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1980,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1990,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:1996,1
    - Dst: struct mailbox*::v::open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2000,1
    - Dst: mailbox_nfc_normalize
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2003,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2005,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2009,1
    - Dst: struct mailbox*::v::open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2010,1
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2015,1
    - Dst: mailbox_autocreate_and_reopen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2016,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 49
    argCount: 2
    argNames:
    - box
    - input
    argTypes:
    - struct mailbox*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 1952
    functionDepth: 7
    functionLinenumber: 1952
    functionLinenumberEnd: 2017
    functionName: mailbox_open_full
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mailbox_nfc_normalize
    - mailbox_autocreate_and_reopen
    - i_stream_ref
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mailbox_verify_existing_name
    - mailbox_close
    - mailbox_set_critical
    - mailbox_is_autocreated
    - struct mailbox*::v::open
    - i_assert
    - mail_storage_set_internal_error
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: void mailbox_open_full(struct mailbox *box, struct istream *input)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2043,1
    - Dst: mail_index_get_modification_time
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2052,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2054,1
    - Dst: mailbox_mark_index_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2058,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2039
    functionDepth: 2
    functionLinenumber: 2039
    functionLinenumberEnd: 2064
    functionName: mailbox_try_undelete
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_get_modification_time
    - i_assert
    - time
    - mailbox_mark_index_deleted
    linkageType: ''
    returnType: bool
    signature: bool mailbox_try_undelete(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open_full
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 2066
    functionDepth: 8
    functionLinenumber: 2066
    functionLinenumberEnd: 2072
    functionName: mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 44
    functionsReached:
    - mailbox_open_full
    linkageType: ''
    returnType: int
    signature: int mailbox_open(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2105,1
    - Dst: mailbox_create_missing_dir
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2110,1
    - Dst: mail_index_alloc_cache_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2114,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2115,1
    - Dst: mail_index_set_fsync_mode
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2116,1
    - Dst: mail_index_set_lock_method
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2118,1
    - Dst: mail_storage_get_lock_timeout
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2122
      start: 2097
    functionDepth: 5
    functionLinenumber: 2097
    functionLinenumberEnd: 2122
    functionName: mailbox_alloc_index_pvt
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_set_lock_method
    - mailbox_create_missing_dir
    - mail_storage_get_lock_timeout
    - mail_index_set_fsync_mode
    - t_strconcat
    - mail_index_alloc_cache_get
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: int mailbox_alloc_index_pvt(struct mailbox *box)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2131,1
    - Dst: mailbox_alloc_index_pvt
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2134,1
    - Dst: mail_storage_settings_to_index_flags
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2137,1
    - Dst: mail_index_open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2140,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2142,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2124
    functionDepth: 6
    functionLinenumber: 2124
    functionLinenumberEnd: 2144
    functionName: mailbox_open_index_pvt
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_settings_to_index_flags
    - mail_index_view_open
    - mailbox_alloc_index_pvt
    - mail_index_open
    - mailbox_get_private_flags_mask
    linkageType: ''
    returnType: int
    signature: int mailbox_open_index_pvt(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open_full
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - box
    - input
    argTypes:
    - struct mailbox*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2149
      start: 2146
    functionDepth: 8
    functionLinenumber: 2146
    functionLinenumberEnd: 2149
    functionName: mailbox_open_stream
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_open_full
    linkageType: ''
    returnType: int
    signature: int mailbox_open_stream(struct mailbox *box, struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2153,1
    - Dst: struct mailbox*::v::enable
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - box
    - features
    argTypes:
    - struct mailbox*
    - enum mailbox_feature
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2151
    functionDepth: 4
    functionLinenumber: 2151
    functionLinenumberEnd: 2159
    functionName: mailbox_enable
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 9
    functionsReached:
    - struct mailbox*::v::enable
    - mailbox_verify_name
    linkageType: ''
    returnType: int
    signature: int mailbox_enable(struct mailbox *box, enum mailbox_feature features)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2163
    functionDepth: 0
    functionLinenumber: 2163
    functionLinenumberEnd: 2166
    functionName: mailbox_get_enabled_features
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mailbox_feature
    signature: enum mailbox_feature mailbox_get_enabled_features(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2173,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2174,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2176
      start: 2168
    functionDepth: 1
    functionLinenumber: 2168
    functionLinenumberEnd: 2176
    functionName: mail_storage_free_binary_cache
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_stream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mail_storage_free_binary_cache(struct mail_storage *storage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2184,1
    - Dst: struct mailbox*::v::close
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2178
    functionDepth: 1
    functionLinenumber: 2178
    functionLinenumberEnd: 2189
    functionName: mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 8
    functionsReached:
    - i_panic
    - struct mailbox*::v::close
    linkageType: ''
    returnType: void
    signature: void mailbox_close(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2209,1
    - Dst: struct mailbox*::v::free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2210,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2213,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2217,1
    - Dst: mail_storage_obj_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2218,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2219,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _box
    argTypes:
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2221
      start: 2203
    functionDepth: 2
    functionLinenumber: 2203
    functionLinenumberEnd: 2221
    functionName: mailbox_free
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 86
    functionsReached:
    - i_panic
    - struct mailbox*::v::free
    - settings_free
    - pool_unref
    - mailbox_close
    - mail_storage_obj_unref
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void mailbox_free(struct mailbox **_box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2226,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2232,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2233,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2236,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - box1
    - ns2
    - vname2
    argTypes:
    - struct mailbox*
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2238
      start: 2223
    functionDepth: 1
    functionLinenumber: 2223
    functionLinenumberEnd: 2238
    functionName: mailbox_equals
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 9
    functionsReached:
    - strcmp
    - mailbox_get_namespace
    - strcasecmp
    - mailbox_get_vname
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_equals(const struct mailbox *box1,\n\t\t    const struct
      mail_namespace *ns2, const char *vname2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2240
    functionDepth: 0
    functionLinenumber: 2240
    functionLinenumberEnd: 2243
    functionName: mailbox_is_any_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mailbox_is_any_inbox(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_contains_special_use
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2249,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - box
    - special_use
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2251
      start: 2245
    functionDepth: 2
    functionLinenumber: 2245
    functionLinenumberEnd: 2251
    functionName: mailbox_has_special_use
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - str_contains_special_use
    - t_array_const_string_join
    linkageType: ''
    returnType: bool
    signature: bool mailbox_has_special_use(struct mailbox *box, const char *special_use)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2256,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2258,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2263,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2265,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2266,1
    - Dst: mail_cache_decisions_copy
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2268,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2271,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2272
      start: 2253
    functionDepth: 9
    functionLinenumber: 2253
    functionLinenumberEnd: 2272
    functionName: mailbox_copy_cache_decisions_from_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_open
    - mail_cache_decisions_copy
    - mailbox_alloc
    - mail_namespace_find_inbox
    - mailbox_exists
    linkageType: ''
    returnType: void
    signature: void mailbox_copy_cache_decisions_from_inbox(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_create_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2281,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2284,1
    - Dst: mailbox_list_lock
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2292,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2293,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2294,1
    - Dst: struct mailbox*::v::create_box
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2306
      start: 2274
    functionDepth: 5
    functionLinenumber: 2274
    functionLinenumberEnd: 2306
    functionName: mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 5
    functionsReached:
    - mailbox_list_lock
    - struct mailbox*::v::create_box
    - mail_storage_copy_list_error
    - event_reason_begin
    - event_reason_end
    - mailbox_verify_create_name
    linkageType: ''
    returnType: int
    signature: "int mailbox_create(struct mailbox *box, const struct mailbox_update
      *update,\n\t\t   bool directory)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2337,1
    - Dst: mailbox_verify_existing_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2341,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2344,1
    - Dst: struct mailbox*::v::update_box
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2346,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2347
      start: 2333
    functionDepth: 7
    functionLinenumber: 2333
    functionLinenumberEnd: 2347
    functionName: mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 6
    functionsReached:
    - struct mailbox*::v::update_box
    - i_assert
    - mailbox_verify_existing_name
    - event_reason_begin
    linkageType: ''
    returnType: int
    signature: int mailbox_update(struct mailbox *box, const struct mailbox_update
      *update)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2361,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2372,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2373,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2378,1
    - Dst: mail_index_set_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2380,1
    - Dst: mail_index_set_undeleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2382,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2383,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2384,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2394,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - box
    - del
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2354
    functionDepth: 9
    functionLinenumber: 2354
    functionLinenumberEnd: 2402
    functionName: mailbox_mark_index_deleted
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mail_index_transaction_begin
    - mailbox_open
    - ENUM_NEGATE
    - mail_index_transaction_commit
    - e_debug
    - mailbox_set_index_error
    - mailbox_sync
    - mail_index_set_deleted
    - mail_index_set_undeleted
    linkageType: ''
    returnType: int
    signature: int mailbox_mark_index_deleted(struct mailbox *box, bool del)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2404
    functionDepth: 1
    functionLinenumber: 2404
    functionLinenumberEnd: 2409
    functionName: mailbox_close_reset_path
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void mailbox_close_reset_path(struct mailbox *box)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2417,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2422,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2425,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2426,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2428,1
    - Dst: mailbox_list_lock
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2434,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2435,1
    - Dst: struct mailbox*::v::delete_box
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2440,1
    - Dst: mailbox_mark_index_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2445,1
    - Dst: mailbox_list_unlock
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2449,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2452,1
    - Dst: mailbox_close_reset_path
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2456,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2457,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2459
      start: 2411
    functionDepth: 10
    functionLinenumber: 2411
    functionLinenumberEnd: 2459
    functionName: mailbox_delete_real
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mailbox_list_unlock
    - mailbox_open
    - mailbox_list_lock
    - mailbox_close_reset_path
    - mailbox_mark_index_deleted
    - event_reason_begin
    - mail_storage_copy_list_error
    - event_reason_end
    - mailbox_close
    - mail_storage_set_error
    - struct mailbox*::v::delete_box
    linkageType: ''
    returnType: int
    signature: int mailbox_delete_real(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_delete_real
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2466
      start: 2461
    functionDepth: 11
    functionLinenumber: 2461
    functionLinenumberEnd: 2466
    functionName: mailbox_delete
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mailbox_delete_real
    linkageType: ''
    returnType: int
    signature: int mailbox_delete(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_delete
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2480
      start: 2470
    functionDepth: 12
    functionLinenumber: 2470
    functionLinenumberEnd: 2480
    functionName: mailbox_delete_empty
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_delete
    linkageType: ''
    returnType: int
    signature: int mailbox_delete_empty(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2490,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2491,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - storage1
    - storage2
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_storage*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2503
      start: 2482
    functionDepth: 1
    functionLinenumber: 2482
    functionLinenumberEnd: 2503
    functionName: mail_storages_rename_compatible
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool mail_storages_rename_compatible(struct mail_storage *storage1,\n\t\t\t\tstruct
      mail_storage *storage2,\n\t\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2508
      start: 2505
    functionDepth: 0
    functionLinenumber: 2505
    functionLinenumberEnd: 2508
    functionName: nullequals
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool nullequals(const void *p1, const void *p2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nullequals
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2515,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2517,1
    - Dst: nullequals
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2522,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2524,1
    - Dst: nullequals
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2529,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2531,1
    - Dst: nullequals
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2536,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - list1
    - list2
    - error_r
    argTypes:
    - struct mailbox_list*
    - struct mailbox_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2544
      start: 2510
    functionDepth: 1
    functionLinenumber: 2510
    functionLinenumberEnd: 2544
    functionName: mailbox_lists_rename_compatible
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - nullequals
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_lists_rename_compatible(struct mailbox_list *list1,\n\t\t\t\tstruct
      mailbox_list *list2,\n\t\t\t\tconst char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2550,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2551,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2554,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2555,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2557,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2561,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2562,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2566,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2567,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2575,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2576,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2546
    functionDepth: 3
    functionLinenumber: 2546
    functionLinenumberEnd: 2580
    functionName: mailbox_rename_check_children
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_list_iter_deinit
    - strlen
    - mailbox_list_iter_next
    - t_strdup_printf
    - mail_storage_copy_list_error
    - mailbox_list_iter_init
    - strncmp
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int mailbox_rename_check_children(struct mailbox *src, struct mailbox
      *dest)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2589,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2592,1
    - Dst: mailbox_verify_create_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2596,1
    - Dst: mail_storage_copy_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2597,1
    - Dst: mailbox_rename_check_children
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2600,1
    - Dst: mail_storages_rename_compatible
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2604,1
    - Dst: mailbox_lists_rename_compatible
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2606,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2608,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2611,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2618,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2622,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2623,1
    - Dst: mailbox_list_lock
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2631,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2632,1
    - Dst: struct mailbox*::v::rename_box
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2641,1
    - Dst: mailbox_nfc_normalize
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2644,1
    - Dst: struct mailbox*::v::rename_box
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2646,1
    - Dst: mailbox_list_unlock
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2648,1
    - Dst: struct mailbox*::storage::callbacks::notify_mailbox_implicit_rename
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2661,1
    - Dst: struct mailbox*::storage::callbacks::notify_mailbox_implicit_rename
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2667,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 55
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2582
    functionDepth: 5
    functionLinenumber: 2582
    functionLinenumberEnd: 2677
    functionName: mailbox_rename_real
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_unlock
    - mail_storage_copy_error
    - mailbox_list_lock
    - mailbox_verify_name
    - mailbox_lists_rename_compatible
    - e_debug
    - mailbox_nfc_normalize
    - mail_storage_copy_list_error
    - struct mailbox*::v::rename_box
    - mailbox_verify_create_name
    - mail_storages_rename_compatible
    - mailbox_rename_check_children
    - mail_storage_set_error
    - struct mailbox*::storage::callbacks::notify_mailbox_implicit_rename
    linkageType: ''
    returnType: int
    signature: int mailbox_rename_real(struct mailbox *src, struct mailbox *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2684,1
    - Dst: mailbox_rename_real
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2685,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2687
      start: 2679
    functionDepth: 6
    functionLinenumber: 2679
    functionLinenumberEnd: 2687
    functionName: mailbox_rename
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 4
    functionsReached:
    - event_reason_end
    - mailbox_rename_real
    - event_reason_begin
    linkageType: ''
    returnType: int
    signature: int mailbox_rename(struct mailbox *src, struct mailbox *dest)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2695,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2699,1
    - Dst: mailbox_list_iter_subscriptions_refresh
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2701,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2702,1
    - Dst: mailbox_is_subscribed
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2704,1
    - Dst: struct mailbox*::v::set_subscribed
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2707,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - box
    - set
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2708
      start: 2691
    functionDepth: 4
    functionLinenumber: 2691
    functionLinenumberEnd: 2708
    functionName: mailbox_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 4
    functionsReached:
    - mailbox_verify_name
    - event_reason_begin
    - mail_storage_copy_list_error
    - mailbox_list_iter_subscriptions_refresh
    - mailbox_is_subscribed
    - struct mailbox*::v::set_subscribed
    linkageType: ''
    returnType: int
    signature: int mailbox_set_subscribed(struct mailbox *box, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2717,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2721
      start: 2713
    functionDepth: 1
    functionLinenumber: 2713
    functionLinenumberEnd: 2721
    functionName: mailbox_is_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - i_assert
    - mailbox_tree_lookup
    linkageType: ''
    returnType: bool
    signature: bool mailbox_is_subscribed(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2726
      start: 2723
    functionDepth: 0
    functionLinenumber: 2723
    functionLinenumberEnd: 2726
    functionName: mailbox_get_storage
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *mailbox_get_storage(const struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2732
      start: 2728
    functionDepth: 0
    functionLinenumber: 2728
    functionLinenumberEnd: 2732
    functionName: mailbox_get_namespace
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: struct mail_namespace
    signature: 'struct mail_namespace *

      mailbox_get_namespace(const struct mailbox *box)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2737
      start: 2734
    functionDepth: 0
    functionLinenumber: 2734
    functionLinenumberEnd: 2737
    functionName: mailbox_get_settings
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox_settings
    signature: struct mailbox_settings *mailbox_get_settings(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2742
      start: 2739
    functionDepth: 0
    functionLinenumber: 2739
    functionLinenumberEnd: 2742
    functionName: mailbox_get_name
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *mailbox_get_name(const struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2747
      start: 2744
    functionDepth: 0
    functionLinenumber: 2744
    functionLinenumberEnd: 2747
    functionName: mailbox_get_vname
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 63
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *mailbox_get_vname(const struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2751,1
    - Dst: struct mailbox*::v::is_readonly
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2754
      start: 2749
    functionDepth: 1
    functionLinenumber: 2749
    functionLinenumberEnd: 2754
    functionName: mailbox_is_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 5
    functionsReached:
    - i_assert
    - struct mailbox*::v::is_readonly
    linkageType: ''
    returnType: bool
    signature: bool mailbox_is_readonly(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2761,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - box1
    - box2
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2769
      start: 2756
    functionDepth: 0
    functionLinenumber: 2756
    functionLinenumberEnd: 2769
    functionName: mailbox_backends_equal
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_backends_equal(const struct mailbox *box1,\n\t\t\t    const
      struct mailbox *box2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2775,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - box
    - status_r
    argTypes:
    - struct mailbox*
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2782
      start: 2771
    functionDepth: 1
    functionLinenumber: 2771
    functionLinenumberEnd: 2782
    functionName: mailbox_get_status_set_defaults
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void mailbox_get_status_set_defaults(struct mailbox *box,\n\t\t\t\tstruct
      mailbox_status *status_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_status_set_defaults
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2788,1
    - Dst: mailbox_verify_existing_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2789,1
    - Dst: struct mailbox*::v::get_status
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2795
      start: 2784
    functionDepth: 7
    functionLinenumber: 2784
    functionLinenumberEnd: 2795
    functionName: mailbox_get_status
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 11
    functionsReached:
    - struct mailbox*::v::get_status
    - mailbox_verify_existing_name
    - mailbox_get_status_set_defaults
    linkageType: ''
    returnType: int
    signature: "int mailbox_get_status(struct mailbox *box,\n\t\t       enum mailbox_status_items
      items,\n\t\t       struct mailbox_status *status_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2806,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2807,1
    - Dst: mailbox_get_status_set_defaults
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2809,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2811,1
    - Dst: struct mailbox*::v::get_status
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2811,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2813
      start: 2802
    functionDepth: 2
    functionLinenumber: 2802
    functionLinenumberEnd: 2813
    functionName: mailbox_get_open_status
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 21
    functionsReached:
    - i_assert
    - mailbox_get_status_set_defaults
    - i_unreached
    - if
    - struct mailbox*::v::get_status
    linkageType: ''
    returnType: void
    signature: "void mailbox_get_open_status(struct mailbox *box,\n\t\t\t     enum
      mailbox_status_items items,\n\t\t\t     struct mailbox_status *status_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2819,1
    - Dst: mailbox_verify_existing_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2820,1
    - Dst: struct mailbox*::v::get_metadata
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2825,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2828,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2829,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2831
      start: 2816
    functionDepth: 7
    functionLinenumber: 2816
    functionLinenumberEnd: 2831
    functionName: mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 12
    functionsReached:
    - i_zero
    - struct mailbox*::v::get_metadata
    - mailbox_verify_existing_name
    - i_assert
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int mailbox_get_metadata(struct mailbox *box, enum mailbox_metadata_items
      items,\n\t\t\t struct mailbox_metadata *metadata_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox*::v::get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2836,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2841
      start: 2833
    functionDepth: 0
    functionLinenumber: 2833
    functionLinenumberEnd: 2841
    functionName: mailbox_get_private_flags_mask
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - struct mailbox*::v::get_private_flags_mask
    linkageType: ''
    returnType: enum mail_flags
    signature: enum mail_flags mailbox_get_private_flags_mask(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2849,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2853,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2854,1
    - Dst: struct mailbox*::v::sync_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2862,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2863
      start: 2843
    functionDepth: 9
    functionLinenumber: 2843
    functionLinenumberEnd: 2863
    functionName: mailbox_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached:
    - i_panic
    - struct mailbox*::v::sync_init
    - mailbox_open
    - i_new
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      mailbox_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_sync_context*::box::v::sync_next
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - sync_rec_r
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2876
      start: 2867
    functionDepth: 0
    functionLinenumber: 2867
    functionLinenumberEnd: 2876
    functionName: mailbox_sync_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - struct mailbox_sync_context*::box::v::sync_next
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_sync_next(struct mailbox_sync_context *ctx,\n\t\t       struct
      mailbox_sync_rec *sync_rec_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2891,1
    - Dst: struct mailbox*::v::sync_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2895,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - _ctx
    - status_r
    argTypes:
    - struct mailbox_sync_context**
    - struct mailbox_sync_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2897
      start: 2880
    functionDepth: 1
    functionLinenumber: 2880
    functionLinenumberEnd: 2897
    functionName: mailbox_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - i_zero
    - struct mailbox*::v::sync_deinit
    linkageType: ''
    returnType: int
    signature: "int mailbox_sync_deinit(struct mailbox_sync_context **_ctx,\n\t\t\tstruct
      mailbox_sync_status *status_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2919,1
    - Dst: mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2925,1
    - Dst: mailbox_sync_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2927
      start: 2914
    functionDepth: 10
    functionLinenumber: 2914
    functionLinenumberEnd: 2927
    functionName: mailbox_sync
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 19
    functionsReached:
    - array_count
    - mailbox_sync_init
    - mailbox_sync_deinit
    linkageType: ''
    returnType: int
    signature: int mailbox_sync(struct mailbox *box, enum mailbox_sync_flags flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2933,1
    - Dst: struct mailbox*::v::notify_changes
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - box
    - callback
    - context
    argTypes:
    - struct mailbox*
    - mailbox_notify_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2940
      start: 2930
    functionDepth: 1
    functionLinenumber: 2930
    functionLinenumberEnd: 2940
    functionName: mailbox_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 4
    functionsReached:
    - struct mailbox*::v::notify_changes
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mailbox_notify_changes(struct mailbox *box,\n\t\t\t    mailbox_notify_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2945,1
    - Dst: struct mailbox*::v::notify_changes
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2952
      start: 2943
    functionDepth: 1
    functionLinenumber: 2943
    functionLinenumberEnd: 2952
    functionName: mailbox_notify_changes_stop
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 5
    functionsReached:
    - struct mailbox*::v::notify_changes
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mailbox_notify_changes_stop(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2962,1
    - Dst: mail_search_args_ref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2964,1
    - Dst: mail_search_args_simplify
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2966,1
    - Dst: struct mailbox_transaction_context*::box::v::search_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2970,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - t
    - args
    - sort_program
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - enum mail_sort_type*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2972
      start: 2955
    functionDepth: 1
    functionLinenumber: 2955
    functionLinenumberEnd: 2972
    functionName: mailbox_search_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 23
    functionsReached:
    - struct mailbox_transaction_context*::box::v::search_init
    - i_assert
    - mail_search_args_ref
    - mail_search_args_simplify
    linkageType: ''
    returnType: struct mail_search_context
    signature: "struct mail_search_context *\nmailbox_search_init(struct mailbox_transaction_context
      *t,\n\t\t    struct mail_search_args *args,\n\t\t    const enum mail_sort_type
      *sort_program,\n\t\t    enum mail_fetch_field wanted_fields,\n\t\t    struct
      mailbox_header_lookup_ctx *wanted_headers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_results_initial_done
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2983,1
    - Dst: struct mail_search_context*::transaction::box::v::search_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_search_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2986
      start: 2976
    functionDepth: 1
    functionLinenumber: 2976
    functionLinenumberEnd: 2986
    functionName: mailbox_search_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 22
    functionsReached:
    - mailbox_search_results_initial_done
    - struct mail_search_context*::transaction::box::v::search_deinit
    linkageType: ''
    returnType: int
    signature: int mailbox_search_deinit(struct mail_search_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2993,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:2994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2995
      start: 2991
    functionDepth: 1
    functionLinenumber: 2991
    functionLinenumberEnd: 2995
    functionName: mailbox_search_reset_progress_start
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void mailbox_search_reset_progress_start(struct mail_search_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - hidden
    argTypes:
    - struct mail_search_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3001
      start: 2997
    functionDepth: 0
    functionLinenumber: 2997
    functionLinenumberEnd: 3001
    functionName: mailbox_search_set_progress_hidden
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mailbox_search_set_progress_hidden(struct mail_search_context
      *ctx, bool hidden)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3018,1
    - Dst: struct mailbox*::storage::callbacks::notify_progress
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3030,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - box
    - ctx
    argTypes:
    - struct mailbox*
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3034
      start: 3003
    functionDepth: 4
    functionLinenumber: 3003
    functionLinenumberEnd: 3034
    functionName: mailbox_search_notify
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - io_loop_time_refresh
    - struct mailbox*::storage::callbacks::notify_progress
    linkageType: ''
    returnType: void
    signature: void mailbox_search_notify(struct mailbox *box, struct mail_search_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_next_nonblock
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3040,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - mail_r
    argTypes:
    - struct mail_search_context*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3045
      start: 3036
    functionDepth: 1
    functionLinenumber: 3036
    functionLinenumberEnd: 3045
    functionName: mailbox_search_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 23
    functionsReached:
    - mailbox_search_next_nonblock
    linkageType: ''
    returnType: bool
    signature: bool mailbox_search_next(struct mail_search_context *ctx, struct mail
      **mail_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_notify
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3057,1
    - Dst: struct mailbox*::v::search_next_nonblock
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - mail_r
    - tryagain_r
    argTypes:
    - struct mail_search_context*
    - struct mail**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3059
      start: 3047
    functionDepth: 5
    functionLinenumber: 3047
    functionLinenumberEnd: 3059
    functionName: mailbox_search_next_nonblock
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - struct mailbox*::v::search_next_nonblock
    - mailbox_search_notify
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_search_next_nonblock(struct mail_search_context *ctx,\n\t\t\t\t
      \ struct mail **mail_r, bool *tryagain_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3068
    functionDepth: 0
    functionLinenumber: 3068
    functionLinenumberEnd: 3071
    functionName: mailbox_search_seen_lost_data
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mailbox_search_seen_lost_data(struct mail_search_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3077,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3080,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3081,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3083,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_search_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3084
      start: 3073
    functionDepth: 1
    functionLinenumber: 3073
    functionLinenumberEnd: 3084
    functionName: mailbox_search_mail_detach
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - array_delete
    - container_of
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void mailbox_search_mail_detach(struct mail_search_context *ctx,\n\t\t\t\tstruct
      mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3095,1
    - Dst: mailbox_search_result_save
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3096,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3097,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3099,1
    - Dst: mailbox_search_result_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - t
    - args
    - flags
    - result_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - enum mailbox_search_result_flags
    - struct mail_search_result**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3103
      start: 3086
    functionDepth: 2
    functionLinenumber: 3086
    functionLinenumberEnd: 3103
    functionName: mailbox_search_result_build
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_search_result_save
    - mailbox_search_result_free
    - mailbox_search_deinit
    - mailbox_search_init
    - mailbox_search_next
    linkageType: ''
    returnType: int
    signature: "int mailbox_search_result_build(struct mailbox_transaction_context
      *t,\n\t\t\t\tstruct mail_search_args *args,\n\t\t\t\tenum mailbox_search_result_flags
      flags,\n\t\t\t\tstruct mail_search_result **result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3112,1
    - Dst: struct mailbox*::v::transaction_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3117
      start: 3105
    functionDepth: 1
    functionLinenumber: 3105
    functionLinenumberEnd: 3117
    functionName: mailbox_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 44
    functionsReached:
    - i_assert
    - struct mailbox*::v::transaction_begin
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nmailbox_transaction_begin(struct
      mailbox *box,\n\t\t\t  enum mailbox_transaction_flags flags,\n\t\t\t  const
      char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_commit_get_changes
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3129,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3132
      start: 3122
    functionDepth: 1
    functionLinenumber: 3122
    functionLinenumberEnd: 3132
    functionName: mailbox_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 41
    functionsReached:
    - mailbox_transaction_commit_get_changes
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int mailbox_transaction_commit(struct mailbox_transaction_context **t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3152,1
    - Dst: struct mailbox*::v::transaction_commit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context**
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3156
      start: 3134
    functionDepth: 0
    functionLinenumber: 3134
    functionLinenumberEnd: 3156
    functionName: mailbox_transaction_commit_get_changes
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached:
    - struct mailbox*::v::transaction_commit
    - event_reason_begin
    linkageType: ''
    returnType: int
    signature: "int mailbox_transaction_commit_get_changes(\n\tstruct mailbox_transaction_context
      **_t,\n\tstruct mail_transaction_commit_changes *changes_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox*::v::transaction_rollback
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _t
    argTypes:
    - struct mailbox_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3192
      start: 3184
    functionDepth: 0
    functionLinenumber: 3184
    functionLinenumberEnd: 3192
    functionName: mailbox_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 19
    functionsReached:
    - struct mailbox*::v::transaction_rollback
    linkageType: ''
    returnType: void
    signature: void mailbox_transaction_rollback(struct mailbox_transaction_context
      **_t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3199
      start: 3196
    functionDepth: 0
    functionLinenumber: 3196
    functionLinenumberEnd: 3199
    functionName: mailbox_transaction_get_count
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mailbox_transaction_get_count(const struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_set_max_modseq
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - max_modseq
    - seqs
    argTypes:
    - struct mailbox_transaction_context*
    - uint64_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3206
      start: 3201
    functionDepth: 0
    functionLinenumber: 3201
    functionLinenumberEnd: 3206
    functionName: mailbox_transaction_set_max_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mail_index_transaction_set_max_modseq
    linkageType: ''
    returnType: void
    signature: "void mailbox_transaction_set_max_modseq(struct mailbox_transaction_context
      *t,\n\t\t\t\t\tuint64_t max_modseq,\n\t\t\t\t\tARRAY_TYPE(seq_range) *seqs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3212
      start: 3208
    functionDepth: 0
    functionLinenumber: 3208
    functionLinenumberEnd: 3212
    functionName: mailbox_transaction_get_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox
    signature: 'struct mailbox *

      mailbox_transaction_get_mailbox(const struct mailbox_transaction_context *t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::close
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3220
      start: 3214
    functionDepth: 0
    functionLinenumber: 3214
    functionLinenumberEnd: 3220
    functionName: mailbox_save_dest_mail_close
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::close
    linkageType: ''
    returnType: void
    signature: void mailbox_save_dest_mail_close(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_transaction_context*::box::v::save_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3229
      start: 3223
    functionDepth: 0
    functionLinenumber: 3223
    functionLinenumberEnd: 3229
    functionName: mailbox_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 4
    functionsReached:
    - struct mailbox_transaction_context*::box::v::save_alloc
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      mailbox_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3249,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3252
      start: 3247
    functionDepth: 1
    functionLinenumber: 3247
    functionLinenumberEnd: 3252
    functionName: mailbox_save_context_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mail_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mailbox_save_context_deinit(struct mail_save_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3261,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3263,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3263,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3264,1
    - Dst: mailbox_keywords_ref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - flags
    - keywords
    argTypes:
    - struct mail_save_context*
    - enum mail_flags
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3268
      start: 3254
    functionDepth: 1
    functionLinenumber: 3254
    functionLinenumberEnd: 3268
    functionName: mailbox_save_set_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - mailbox_keywords_ref
    - mailbox_get_private_flags_mask
    - ENUM_NEGATE
    - mailbox_keywords_unref
    linkageType: ''
    returnType: void
    signature: "void mailbox_save_set_flags(struct mail_save_context *ctx,\n\t\t\t
      \   enum mail_flags flags,\n\t\t\t    struct mail_keywords *keywords)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3275,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3276,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3277,1
    - Dst: mailbox_save_set_flags
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3279,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3279,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3282
      start: 3270
    functionDepth: 2
    functionLinenumber: 3270
    functionLinenumberEnd: 3282
    functionName: mailbox_save_copy_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - mail_get_keywords
    - mailbox_keywords_unref
    - str_array_length
    - mailbox_save_set_flags
    - mailbox_keywords_create_valid
    - mail_get_flags
    linkageType: ''
    returnType: void
    signature: void mailbox_save_copy_flags(struct mail_save_context *ctx, struct
      mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - min_modseq
    argTypes:
    - struct mail_save_context*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3288
      start: 3284
    functionDepth: 0
    functionLinenumber: 3284
    functionLinenumberEnd: 3288
    functionName: mailbox_save_set_min_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_save_set_min_modseq(struct mail_save_context *ctx,\n\t\t\t\t
      uint64_t min_modseq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - received_date
    - timezone_offset
    argTypes:
    - struct mail_save_context*
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3295
      start: 3290
    functionDepth: 0
    functionLinenumber: 3290
    functionLinenumberEnd: 3295
    functionName: mailbox_save_set_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_save_set_received_date(struct mail_save_context *ctx,\n\t\t\t\t
      \   time_t received_date, int timezone_offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - save_date
    argTypes:
    - struct mail_save_context*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3301
      start: 3297
    functionDepth: 0
    functionLinenumber: 3297
    functionLinenumberEnd: 3301
    functionName: mailbox_save_set_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_save_set_save_date(struct mail_save_context *ctx,\n\t\t\t\ttime_t
      save_date)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3306,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - envelope
    argTypes:
    - struct mail_save_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3308
      start: 3303
    functionDepth: 1
    functionLinenumber: 3303
    functionLinenumberEnd: 3308
    functionName: mailbox_save_set_from_envelope
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mailbox_save_set_from_envelope(struct mail_save_context *ctx,\n\t\t\t\t
      \   const char *envelope)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct mail_save_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3313
      start: 3310
    functionDepth: 0
    functionLinenumber: 3310
    functionLinenumberEnd: 3313
    functionName: mailbox_save_set_uid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mailbox_save_set_uid(struct mail_save_context *ctx, uint32_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3317,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3319,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - guid
    argTypes:
    - struct mail_save_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3321
      start: 3315
    functionDepth: 1
    functionLinenumber: 3315
    functionLinenumberEnd: 3321
    functionName: mailbox_save_set_guid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void mailbox_save_set_guid(struct mail_save_context *ctx, const char
      *guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3325,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3326,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3326,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3328,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - uidl
    argTypes:
    - struct mail_save_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3330
      start: 3323
    functionDepth: 1
    functionLinenumber: 3323
    functionLinenumberEnd: 3330
    functionName: mailbox_save_set_pop3_uidl
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - strchr
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void mailbox_save_set_pop3_uidl(struct mail_save_context *ctx, const
      char *uidl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - order
    argTypes:
    - struct mail_save_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3338
      start: 3332
    functionDepth: 1
    functionLinenumber: 3332
    functionLinenumberEnd: 3338
    functionName: mailbox_save_set_pop3_order
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mailbox_save_set_pop3_order(struct mail_save_context *ctx,\n\t\t\t\t
      unsigned int order)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3343
      start: 3340
    functionDepth: 0
    functionLinenumber: 3340
    functionLinenumberEnd: 3343
    functionName: mailbox_save_get_dest_mail
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mail
    signature: struct mail *mailbox_save_get_dest_mail(struct mail_save_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_is_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3350,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3351,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3352,1
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3358,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3365,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3368,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3371,1
    - Dst: struct mailbox*::v::save_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3375,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_save_context**
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3376
      start: 3345
    functionDepth: 2
    functionLinenumber: 3345
    functionLinenumberEnd: 3376
    functionName: mailbox_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - mailbox_set_deleted
    - mail_index_is_deleted
    - mail_add_temp_wanted_fields
    - mailbox_save_cancel
    - i_assert
    - mail_storage_set_error
    - struct mailbox*::v::save_begin
    linkageType: ''
    returnType: int
    signature: int mailbox_save_begin(struct mail_save_context **ctx, struct istream
      *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_begin
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - input
    - replaced
    argTypes:
    - struct mail_save_context**
    - struct istream*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3391
      start: 3385
    functionDepth: 3
    functionLinenumber: 3385
    functionLinenumberEnd: 3391
    functionName: mailbox_save_begin_replace
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mailbox_save_begin
    linkageType: ''
    returnType: int
    signature: "int mailbox_save_begin_replace(struct mail_save_context **ctx,\n\t\t\t
      \      struct istream *input,\n\t\t\t       struct mail *replaced)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_save_context*::transaction::box::v::save_continue
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3399
      start: 3393
    functionDepth: 0
    functionLinenumber: 3393
    functionLinenumberEnd: 3399
    functionName: mailbox_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached:
    - struct mail_save_context*::transaction::box::v::save_continue
    linkageType: ''
    returnType: int
    signature: int mailbox_save_continue(struct mail_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3409,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3410,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - t
    - pvt_flags
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3414
      start: 3403
    functionDepth: 1
    functionLinenumber: 3403
    functionLinenumberEnd: 3414
    functionName: mailbox_save_add_pvt_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void mailbox_save_add_pvt_flags(struct mailbox_transaction_context
      *t,\n\t\t\t   enum mail_flags pvt_flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3419,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3424,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3425,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - success
    argTypes:
    - struct mail_save_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3434
      start: 3416
    functionDepth: 1
    functionLinenumber: 3416
    functionLinenumberEnd: 3434
    functionName: mailbox_save_context_reset
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mailbox_save_context_reset(struct mail_save_context *ctx, bool
      success)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_continue
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3451,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3452,1
    - Dst: struct mailbox_transaction_context*::box::v::save_finish
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3460
      start: 3436
    functionDepth: 1
    functionLinenumber: 3436
    functionLinenumberEnd: 3460
    functionName: mailbox_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached:
    - mailbox_save_cancel
    - struct mailbox_transaction_context*::box::v::save_finish
    - mailbox_save_continue
    linkageType: ''
    returnType: int
    signature: int mailbox_save_finish(struct mail_save_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_save_context*::transaction::box::v::save_cancel
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3482
      start: 3475
    functionDepth: 0
    functionLinenumber: 3475
    functionLinenumberEnd: 3482
    functionName: mailbox_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 7
    functionsReached:
    - struct mail_save_context*::transaction::box::v::save_cancel
    linkageType: ''
    returnType: void
    signature: void mailbox_save_cancel(struct mail_save_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3496
      start: 3492
    functionDepth: 0
    functionLinenumber: 3492
    functionLinenumberEnd: 3496
    functionName: mailbox_save_get_transaction
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: 'struct mailbox_transaction_context *

      mailbox_save_get_transaction(struct mail_save_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_is_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3508,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3509,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3510,1
    - Dst: mail_get_backend_mail
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3516,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3517,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3521,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3522,1
    - Dst: struct mailbox_transaction_context*::box::v::copy
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context**
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3528
      start: 3498
    functionDepth: 1
    functionLinenumber: 3498
    functionLinenumberEnd: 3528
    functionName: mailbox_copy_int
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_set_deleted
    - struct mailbox_transaction_context*::box::v::copy
    - mail_index_is_deleted
    - mailbox_save_cancel
    - i_assert
    - mail_get_backend_mail
    linkageType: ''
    returnType: int
    signature: int mailbox_copy_int(struct mail_save_context **_ctx, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3548,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3549,1
    - Dst: mailbox_copy_int
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context**
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3554
      start: 3544
    functionDepth: 2
    functionLinenumber: 3544
    functionLinenumberEnd: 3554
    functionName: mailbox_copy
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mailbox_copy_int
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mailbox_copy(struct mail_save_context **_ctx, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3564,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3565,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3570,1
    - Dst: mailbox_copy_int
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3570,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context**
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3572
      start: 3559
    functionDepth: 2
    functionLinenumber: 3559
    functionLinenumberEnd: 3572
    functionName: mailbox_move
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 2
    functionsReached:
    - mailbox_copy_int
    - i_assert
    - mail_expunge
    - if
    linkageType: ''
    returnType: int
    signature: int mailbox_move(struct mail_save_context **_ctx, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3581,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3582,1
    - Dst: mailbox_copy_int
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context**
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3586
      start: 3577
    functionDepth: 2
    functionLinenumber: 3577
    functionLinenumberEnd: 3586
    functionName: mailbox_save_using_mail
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_copy_int
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mailbox_save_using_mail(struct mail_save_context **_ctx, struct
      mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox*::v::is_inconsistent
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3591
      start: 3588
    functionDepth: 0
    functionLinenumber: 3588
    functionLinenumberEnd: 3591
    functionName: mailbox_is_inconsistent
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached:
    - struct mailbox*::v::is_inconsistent
    linkageType: ''
    returnType: bool
    signature: bool mailbox_is_inconsistent(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3598
      start: 3593
    functionDepth: 2
    functionLinenumber: 3593
    functionLinenumberEnd: 3598
    functionName: mailbox_set_deleted
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: void mailbox_set_deleted(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3613,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3615,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3619,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - box
    - type
    - internal_path
    - path_r
    argTypes:
    - struct mailbox*
    - enum mailbox_list_path_type
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3621
      start: 3600
    functionDepth: 3
    functionLinenumber: 3600
    functionLinenumberEnd: 3621
    functionName: get_path_to
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 8
    functionsReached:
    - mailbox_list_get_path
    - p_strdup
    - mail_storage_copy_list_error
    linkageType: ''
    returnType: int
    signature: "int get_path_to(struct mailbox *box, enum mailbox_list_path_type type,\n\t\t
      \      const char **internal_path, const char **path_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3627,1
    - Dst: get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3629,1
    - Dst: get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - box
    - type
    - path_r
    argTypes:
    - struct mailbox*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3631
      start: 3623
    functionDepth: 4
    functionLinenumber: 3623
    functionLinenumberEnd: 3631
    functionName: mailbox_get_path_to
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 8
    functionsReached:
    - get_path_to
    linkageType: ''
    returnType: int
    signature: "int mailbox_get_path_to(struct mailbox *box, enum mailbox_list_path_type
      type,\n\t\t\tconst char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3635,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3638
      start: 3633
    functionDepth: 1
    functionLinenumber: 3633
    functionLinenumberEnd: 3638
    functionName: mailbox_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 5
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *mailbox_get_path(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3642,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3645
      start: 3640
    functionDepth: 1
    functionLinenumber: 3640
    functionLinenumberEnd: 3645
    functionName: mailbox_get_index_path
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *mailbox_get_index_path(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3653,1
    - Dst: mailbox_list_get_permissions
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3662,1
    - Dst: mailbox_permissions_copy
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3664
      start: 3647
    functionDepth: 1
    functionLinenumber: 3647
    functionLinenumberEnd: 3664
    functionName: mailbox_get_permissions_if_not_set
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_permissions
    - mailbox_permissions_copy
    - geteuid
    linkageType: ''
    returnType: void
    signature: void mailbox_get_permissions_if_not_set(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions_if_not_set
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3668,1
    - Dst: mail_index_set_permissions
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3678
      start: 3666
    functionDepth: 2
    functionLinenumber: 3666
    functionLinenumberEnd: 3678
    functionName: mailbox_get_permissions
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_set_permissions
    - mailbox_get_permissions_if_not_set
    linkageType: ''
    returnType: struct mailbox_permissions
    signature: struct mailbox_permissions *mailbox_get_permissions(struct mailbox
      *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3682,1
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3684
      start: 3680
    functionDepth: 3
    functionLinenumber: 3680
    functionLinenumberEnd: 3684
    functionName: mailbox_refresh_permissions
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_get_permissions
    linkageType: ''
    returnType: void
    signature: void mailbox_refresh_permissions(struct mailbox *box)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3689,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3693,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3697,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3698,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3699,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3707,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3710,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3713,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3716,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3721,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3724,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3725,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3729,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 4
    argNames:
    - box
    - path
    - flags
    - fd_r
    argTypes:
    - struct mailbox*
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3735
      start: 3686
    functionDepth: 4
    functionLinenumber: 3686
    functionLinenumberEnd: 3735
    functionName: mailbox_create_fd
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_set_deleted
    - mailbox_get_permissions
    - umask
    - open
    - mailbox_set_critical
    - mail_storage_set_error_from_errno
    - i_assert
    - eperm_error_get_chgrp
    - mail_storage_set_error
    - fchown
    linkageType: ''
    returnType: int
    signature: "int mailbox_create_fd(struct mailbox *box, const char *path, int flags,\n\t\t
      \     int *fd_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3740,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3745,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3746,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3747,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3752,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3759,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3762,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3765,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - box
    - path
    - type
    argTypes:
    - struct mailbox*
    - char*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3768
      start: 3737
    functionDepth: 4
    functionLinenumber: 3737
    functionLinenumberEnd: 3768
    functionName: mailbox_mkdir
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_list_mkdir_root
    - mkdir_parents_chgrp
    - mailbox_get_permissions
    - mail_storage_copy_list_error
    - mailbox_list_get_root_forced
    - mailbox_set_critical
    - mail_storage_set_error_from_errno
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int mailbox_mkdir(struct mailbox *box, const char *path,\n\t\t  enum
      mailbox_list_path_type type)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3777,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3779,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3782,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3796,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3800,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3801,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3805,1
    - Dst: mailbox_mkdir
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3809,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 2
    argNames:
    - box
    - type
    argTypes:
    - struct mailbox*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3810
      start: 3770
    functionDepth: 5
    functionLinenumber: 3770
    functionLinenumberEnd: 3810
    functionName: mailbox_create_missing_dir
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - mailbox_set_deleted
    - mailbox_mkdir
    - stat
    - null_strcmp
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int mailbox_create_missing_dir(struct mailbox *box,\n\t\t\t       enum
      mailbox_list_path_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - storage
    - secs
    argTypes:
    - struct mail_storage*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3817
      start: 3812
    functionDepth: 1
    functionLinenumber: 3812
    functionLinenumberEnd: 3817
    functionName: mail_storage_get_lock_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - I_MIN
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int mail_storage_get_lock_timeout(struct mail_storage *storage,\n\t\t\t\t\t
      \  unsigned int secs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct mail_storage_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3833
      start: 3819
    functionDepth: 0
    functionLinenumber: 3819
    functionLinenumberEnd: 3833
    functionName: mail_storage_settings_to_index_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum mail_index_open_flags
    signature: enum mail_index_open_flags mail_storage_settings_to_index_flags(const
      struct mail_storage_settings *set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3839,1
    - Dst: mailbox_get_name_without_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3843,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3846,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3849,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3853,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3854,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - event
    - list
    - vname
    argTypes:
    - struct event*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3857
      start: 3835
    functionDepth: 3
    functionLinenumber: 3835
    functionLinenumberEnd: 3857
    functionName: mailbox_settings_filters_add
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_empty
    - mailbox_get_name_without_prefix
    - array_idx_elem
    - settings_event_add_list_filter_name
    - wildcard_match
    linkageType: ''
    returnType: void
    signature: "void mailbox_settings_filters_add(struct event *event,\n\t\t\t\t\t
      struct mailbox_list *list,\n\t\t\t\t\t const char *vname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3863,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3864,1
    - Dst: mailbox_settings_filters_add
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3866,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3867,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3868,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3869,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3872,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3873,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3873,1
    - Dst: mailbox_name_sanitize
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - parent
    - list
    - vname
    argTypes:
    - struct event*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3876
      start: 3859
    functionDepth: 4
    functionLinenumber: 3859
    functionLinenumberEnd: 3876
    functionName: mail_storage_mailbox_create_event
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 3
    functionsReached:
    - event_create
    - event_drop_parent_log_prefixes
    - mailbox_name_sanitize
    - mailbox_settings_filters_add
    - event_set_append_log_prefix
    - t_strdup_printf
    - settings_event_add_list_filter_name
    - event_add_str
    - event_add_category
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nmail_storage_mailbox_create_event(struct event *parent,\n\t\t\t\t
      \ struct mailbox_list *list, const char *vname)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3886,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3886,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3887,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3887,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3888,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3888,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3889,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3889,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3891,1
    - Dst: utc_mktime
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3896,1
    - Dst: imap_parse_date
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3899,1
    - Dst: imap_parse_datetime
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3903,1
    - Dst: str_to_time
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3907,1
    - Dst: str_parse_get_interval
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3911,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 29
    argCount: 3
    argNames:
    - str
    - timestamp_r
    - utc_r
    argTypes:
    - char*
    - time_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3918
      start: 3878
    functionDepth: 1
    functionLinenumber: 3878
    functionLinenumberEnd: 3918
    functionName: mail_parse_human_timestamp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - utc_mktime
    - imap_parse_date
    - i_isdigit
    - str_parse_get_interval
    - str_to_time
    - imap_parse_datetime
    linkageType: ''
    returnType: int
    signature: "int mail_parse_human_timestamp(const char *str, time_t *timestamp_r,\n\t\t\t
      \      bool *utc_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3925,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3928,1
    - Dst: mail_cache_set_seq_corrupted_reason
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3931,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - mail
    - fmt
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3933
      start: 3920
    functionDepth: 2
    functionLinenumber: 3920
    functionLinenumberEnd: 3933
    functionName: mail_set_mail_cache_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_cache_set_seq_corrupted_reason
    - t_strdup_vprintf
    - i_assert
    - va_start
    linkageType: ''
    returnType: void
    signature: void mail_set_mail_cache_corrupted(struct mail *mail, const char *fmt,
      ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3949,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3957,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3959,1
    - Dst: file_lock_from_dotlock
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - lock_path
    - lock_set
    - mail_set
    - lock_r
    - error_r
    argTypes:
    - char*
    - struct file_create_settings*
    - struct mail_storage_settings*
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3965
      start: 3941
    functionDepth: 1
    functionLinenumber: 3941
    functionLinenumberEnd: 3965
    functionName: mail_storage_dotlock_create
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - file_dotlock_create
    - I_MAX
    - file_lock_from_dotlock
    linkageType: ''
    returnType: int
    signature: "int mail_storage_dotlock_create(const char *lock_path,\n\t\t\t    const
      struct file_create_settings *lock_set,\n\t\t\t    const struct mail_storage_settings
      *mail_set,\n\t\t\t    struct file_lock **lock_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_dotlock_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3976,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3980,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3982,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - lock_path
    - lock_set
    - mail_set
    - lock_r
    - error_r
    argTypes:
    - char*
    - struct file_create_settings*
    - struct mail_storage_settings*
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3987
      start: 3967
    functionDepth: 2
    functionLinenumber: 3967
    functionLinenumberEnd: 3987
    functionName: mail_storage_lock_create
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - file_create_locked
    - t_strdup_printf
    - mail_storage_dotlock_create
    linkageType: ''
    returnType: int
    signature: "int mail_storage_lock_create(const char *lock_path,\n\t\t\t     const
      struct file_create_settings *lock_set,\n\t\t\t     const struct mail_storage_settings
      *mail_set,\n\t\t\t     struct file_lock **lock_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3997,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage.c:3998,1
    - Dst: mail_storage_get_lock_timeout
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4000,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4007,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4010,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4018,1
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4020,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4020,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4021,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4022,1
    - Dst: mail_storage_lock_create
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4026,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 5
    argNames:
    - box
    - lock_fname
    - lock_secs
    - lock_r
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - unsigned int
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4028
      start: 3989
    functionDepth: 3
    functionLinenumber: 3989
    functionLinenumberEnd: 4028
    functionName: mailbox_lock_file_create
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - str_printfa
    - mailbox_get_permissions
    - strlen
    - binary_to_hex_append
    - t_strdup_printf
    - mail_storage_lock_create
    - mail_storage_get_lock_timeout
    - sha1_get_digest
    linkageType: ''
    returnType: int
    signature: "int mailbox_lock_file_create(struct mailbox *box, const char *lock_fname,\n\t\t\t
      \    unsigned int lock_secs, struct file_lock **lock_r,\n\t\t\t     const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox*::v::sync_notify
      Src: /src/dovecot/src/lib-storage/mail-storage.c:4034,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - box
    - uid
    - sync_type
    argTypes:
    - struct mailbox*
    - uint32_t
    - enum mailbox_sync_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4035
      start: 4030
    functionDepth: 0
    functionLinenumber: 4030
    functionLinenumberEnd: 4035
    functionName: mailbox_sync_notify
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.c
    functionUses: 1
    functionsReached:
    - struct mailbox*::v::sync_notify
    linkageType: ''
    returnType: void
    signature: "void mailbox_sync_notify(struct mailbox *box, uint32_t uid,\n\t\t\t
      enum mailbox_sync_type sync_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:21,1
    - Dst: mailbox_guid_cache_refresh
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:23,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:24,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:26,1
    - Dst: mailbox_guid_cache_refresh
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:28,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:29,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - list
    - guid
    - vname_r
    argTypes:
    - struct mailbox_list*
    - guid_128_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 38
    functionName: mailbox_guid_cache_find
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-guid-cache.c
    functionUses: 1
    functionsReached:
    - mailbox_guid_cache_refresh
    - hash_table_lookup
    - hash_table_is_created
    linkageType: ''
    returnType: int
    signature: "int mailbox_guid_cache_find(struct mailbox_list *list,\n\t\t\t    const
      guid_128_t guid, const char **vname_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:48,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:49,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:51,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:52,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:54,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:56,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:59,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:61,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:63,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:64,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:66,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - list
    - info
    argTypes:
    - struct mailbox_list*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 40
    functionDepth: 8
    functionLinenumber: 40
    functionLinenumberEnd: 69
    functionName: mailbox_guid_cache_add_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-guid-cache.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_strdup
    - mailbox_free
    - p_new
    - mailbox_get_last_internal_error
    - guid_128_to_string
    - e_error
    - e_warning
    - mailbox_alloc
    - hash_table_insert
    - hash_table_lookup
    - mailbox_get_metadata
    linkageType: ''
    returnType: void
    signature: "void mailbox_guid_cache_add_mailbox(struct mailbox_list *list,\n\t\t\t\t\t
      \  const struct mailbox_info *info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:76,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:78,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:79,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:82,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:83,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:89,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:93,1
    - Dst: mailbox_guid_cache_add_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-guid-cache.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 71
    functionDepth: 9
    functionLinenumber: 71
    functionLinenumberEnd: 100
    functionName: mailbox_guid_cache_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-guid-cache.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - hash_table_create
    - mailbox_guid_cache_add_mailbox
    - mailbox_list_iter_next
    - hash_table_clear
    - mailbox_list_iter_init
    - hash_table_is_created
    - p_clear
    linkageType: ''
    returnType: void
    signature: void mailbox_guid_cache_refresh(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - notify
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: mailbox_list_notify_wait
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-notify.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mailbox_list_notify_wait(notify, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/fail-mail.c:16,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/fail-mail.c:17,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/fail-mail.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - t
    - wanted_fields ATTR_UNUSED
    - wanted_headers ATTR_UNUSED
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 24
    functionName: fail_mailbox_mail_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\nfail_mailbox_mail_alloc(struct mailbox_transaction_context
      *t,\n\t\t\tenum mail_fetch_field wanted_fields ATTR_UNUSED,\n\t\t\tstruct mailbox_header_lookup_ctx
      *wanted_headers ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/fail-mail.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 31
    functionName: fail_mail_free
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void fail_mail_free(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - mail
    - seq
    - saving
    argTypes:
    - struct mail*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: fail_mail_set_seq
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fail_mail_set_seq(struct mail *mail, uint32_t seq, bool saving)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fail_mail_set_seq
      Src: /src/dovecot/src/lib-storage/fail-mail.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mail
    - uid
    argTypes:
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: fail_mail_set_uid
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached:
    - fail_mail_set_seq
    linkageType: ''
    returnType: bool
    signature: bool fail_mail_set_uid(struct mail *mail, uint32_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: fail_mail_set_uid_cache_updates
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fail_mail_set_uid_cache_updates(struct mail *mail ATTR_UNUSED,\n\t\t\t\t\t
      \   bool set ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: fail_mail_prefetch
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool fail_mail_prefetch(struct mail *mail ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: fail_mail_precache
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fail_mail_precache(struct mail *mail ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: fail_mail_add_temp_wanted_fields
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fail_mail_add_temp_wanted_fields(struct mail *mail ATTR_UNUSED,\n\t\t\t\t
      enum mail_fetch_field fields ATTR_UNUSED,\n\t\t\t\t struct mailbox_header_lookup_ctx
      *headers ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: fail_mail_get_flags
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mail_flags
    signature: enum mail_flags fail_mail_get_flags(struct mail *mail ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/fail-mail.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: fail_mail_get_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached:
    - t_new
    linkageType: ''
    returnType: char
    signature: 'char *const *

      fail_mail_get_keywords(struct mail *mail ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: fail_mail_get_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t fail_mail_get_modseq(struct mail *mail ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: fail_mail_get_parts
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_parts(struct mail *mail ATTR_UNUSED,\n\t\t    struct
      message_part **parts_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - timezone_r ATTR_UNUSED
    argTypes:
    - struct mail*
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: fail_mail_get_date
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_date(struct mail *mail ATTR_UNUSED,\n\t\t   time_t
      *date_r ATTR_UNUSED, int *timezone_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 118
    functionName: fail_mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_received_date(struct mail *mail ATTR_UNUSED,\n\t\t\t
      \   time_t *date_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 125
    functionName: fail_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_save_date(struct mail *mail ATTR_UNUSED,\n\t\t\ttime_t
      *date_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 132
    functionName: fail_mail_get_fail_mail_size
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_fail_mail_size(struct mail *mail ATTR_UNUSED,\n\t\t\t
      \    uoff_t *size_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 139
    functionName: fail_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_physical_size(struct mail *mail ATTR_UNUSED,\n\t\t\t
      \   uoff_t *size_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - decode_to_utf8 ATTR_UNUSED
    - value_r
    argTypes:
    - struct mail*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 149
    functionName: fail_mail_get_first_header
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_first_header(struct mail *mail ATTR_UNUSED,\n\t\t\t
      \  const char *field ATTR_UNUSED,\n\t\t\t   bool decode_to_utf8 ATTR_UNUSED,\n\t\t\t
      \  const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - decode_to_utf8 ATTR_UNUSED
    - value_r
    argTypes:
    - struct mail*
    - char*
    - bool
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: fail_mail_get_headers
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_headers(struct mail *mail ATTR_UNUSED,\n\t\t      const
      char *field ATTR_UNUSED,\n\t\t      bool decode_to_utf8 ATTR_UNUSED,\n\t\t      const
      char *const **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - struct mailbox_header_lookup_ctx*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 167
    functionName: fail_mail_get_header_stream
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_header_stream(struct mail *mail ATTR_UNUSED,\n\t\t\t
      \   struct mailbox_header_lookup_ctx *headers ATTR_UNUSED,\n\t\t\t    struct
      istream **stream_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - bool
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 176
    functionName: fail_mail_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_stream(struct mail *mail ATTR_UNUSED, bool get_body
      ATTR_UNUSED,\n\t\t     struct message_size *hdr_size ATTR_UNUSED,\n\t\t     struct
      message_size *body_size ATTR_UNUSED,\n\t\t     struct istream **stream_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - include_hdr ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - struct message_part*
    - bool
    - struct mail_binary_properties*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 186
    functionName: fail_mail_get_binary_stream
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_binary_stream(struct mail *_mail ATTR_UNUSED,\n\t\t\t
      \   const struct message_part *part ATTR_UNUSED,\n\t\t\t    bool include_hdr
      ATTR_UNUSED,\n\t\t\t    struct mail_binary_properties *bprops_r ATTR_UNUSED,\n\t\t\t
      \   struct istream **stream_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 194
    functionName: fail_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_special(struct mail *mail ATTR_UNUSED,\n\t\t      enum
      mail_fetch_field field ATTR_UNUSED,\n\t\t      const char **value_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mail
    - real_mail_r
    argTypes:
    - struct mail*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 201
    functionName: fail_mail_get_backend_mail
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mail_get_backend_mail(struct mail *mail,\n\t\t\t\t      struct
      mail **real_mail_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - modify_type ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 208
    functionName: fail_mail_update_flags
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fail_mail_update_flags(struct mail *mail ATTR_UNUSED,\n\t\t       enum
      modify_type modify_type ATTR_UNUSED,\n\t\t       enum mail_flags flags ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - modify_type ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - enum modify_type
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 215
    functionName: fail_mail_update_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fail_mail_update_keywords(struct mail *mail ATTR_UNUSED,\n\t\t\t
      \ enum modify_type modify_type ATTR_UNUSED,\n\t\t\t  struct mail_keywords *keywords
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - min_modseq ATTR_UNUSED
    argTypes:
    - struct mail*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: fail_mail_update_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fail_mail_update_modseq(struct mail *mail ATTR_UNUSED,\n\t\t\t\t
      \   uint64_t min_modseq ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: fail_mail_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fail_mail_expunge(struct mail *mail ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 231
    functionName: fail_mail_set_cache_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fail_mail_set_cache_corrupted(struct mail *mail ATTR_UNUSED,\n\t\t\t
      \     enum mail_fetch_field field ATTR_UNUSED,\n\t\t\t      const char *reason
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-search-parser.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct mail_search_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 12
    functionName: mail_search_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser.c
    functionUses: 3
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void mail_search_parser_deinit(struct mail_search_parser **_parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_search_parser*::v::parse_key
      Src: /src/dovecot/src/lib-storage/mail-search-parser.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - parser
    - key_r
    argTypes:
    - struct mail_search_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 24
    functionName: mail_search_parse_key
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser.c
    functionUses: 0
    functionsReached:
    - struct mail_search_parser*::v::parse_key
    linkageType: ''
    returnType: int
    signature: "int mail_search_parse_key(struct mail_search_parser *parser,\n\t\t\t
      \ const char **key_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_search_parser*::v::parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-parser.c:31,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-search-parser.c:33,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-parser.c:35,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - value_r
    argTypes:
    - struct mail_search_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 38
    functionName: mail_search_parse_string
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser.c
    functionUses: 8
    functionsReached:
    - t_str_ucase
    - struct mail_search_parser*::v::parse_string
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int mail_search_parse_string(struct mail_search_parser *parser,\n\t\t\t
      \    const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_search_parser*::v::parse_skip_next
      Src: /src/dovecot/src/lib-storage/mail-search-parser.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - str
    argTypes:
    - struct mail_search_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: mail_search_parse_skip_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser.c
    functionUses: 1
    functionsReached:
    - struct mail_search_parser*::v::parse_skip_next
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_parse_skip_next(struct mail_search_parser *parser,\n\t\t\t\t
      const char *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct mail_search_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: mail_search_parser_get_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *mail_search_parser_get_error(struct mail_search_parser *parser)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:22,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:26,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:29,1
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:30,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:33,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:36,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 5
    argNames:
    - dest
    - args
    - prefix
    - qflags
    - error_r
    argTypes:
    - string_t*
    - struct mail_search_arg*
    - char*
    - enum imap_quote_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 38
    functionName: mail_search_subargs_to_imap
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-imap.c
    functionUses: 0
    functionsReached:
    - str_append
    - HAS_ALL_BITS
    - str_append_c
    - mail_search_arg_to_imap
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_subargs_to_imap(string_t *dest, const struct mail_search_arg
      *args,\n\t\t\t    const char *prefix, enum imap_quote_flags qflags,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: localtime
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:48,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:49,1
    - Dst: imap_to_date
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:52,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - dest
    - arg
    argTypes:
    - string_t*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: mail_search_arg_to_imap_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-imap.c
    functionUses: 0
    functionsReached:
    - localtime
    - str_printfa
    - imap_to_date
    - utc_offset
    linkageType: ''
    returnType: bool
    signature: bool mail_search_arg_to_imap_date(string_t *dest, const struct mail_search_arg
      *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:65,1
    - Dst: bits_is_power_of_two
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:67,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:68,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:69,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:71,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:72,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:76,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:76,1
    - Dst: bits_is_power_of_two
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:77,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:78,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - dest
    - flags
    argTypes:
    - string_t*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 79
    functionName: mail_search_arg_to_imap_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-imap.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - bits_is_power_of_two
    - str_len
    - str_truncate
    - str_append
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void mail_search_arg_to_imap_flags(string_t *dest, enum mail_flags
      flags)
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:88,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:89,1
    - Dst: mail_search_subargs_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:92,1
    - Dst: mail_search_subargs_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:97,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:102,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:105,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:108,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:109,1
    - Dst: mail_search_arg_to_imap_flags
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:112,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:122,1
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:126,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:129,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:131,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:133,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:134,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:137,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:144,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:147,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:150,1
    - Dst: mail_search_arg_to_imap_date
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:153,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:157,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:163,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:164,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:171,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:174,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:177,1
    - Dst: mail_search_arg_to_imap_date
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:180,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:181,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:191,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:194,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:197,1
    - Dst: mail_search_arg_to_imap_date
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:200,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:204,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:210,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:211,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:216,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:219,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:224,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:225,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:226,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:227,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:228,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:229,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:229,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:231,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:232,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:234,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:235,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:239,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:240,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:243,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:244,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:251,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:253,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:256,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:257,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:261,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:264,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:267,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:270,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:273,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:275,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:279,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:282,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:283,1
    - Dst: mail_thread_type_to_str
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:284,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:286,1
    - Dst: mail_search_subargs_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:287,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:292,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:293,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:302,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:303,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:306,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:307,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:310,1
    - Dst: mail_search_mime_part_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:311,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 194
    argCount: 4
    argNames:
    - dest
    - arg
    - utf8
    - error_r
    argTypes:
    - string_t*
    - struct mail_search_arg*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 317
    functionName: mail_search_arg_to_imap
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-imap.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - mail_search_arg_to_imap_flags
    - str_append_c
    - t_str_ucase
    - str_len
    - mail_index_get_keywords
    - imap_write_seq_range
    - mail_search_subargs_to_imap
    - t_strdup_printf
    - strcasecmp
    - mail_thread_type_to_str
    - imap_append_astring
    - mail_search_mime_part_to_imap
    - imap_write_flags
    - array_idx_elem
    - str_truncate
    - str_append
    - mail_search_arg_to_imap_date
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_arg_to_imap(string_t *dest, const struct mail_search_arg
      *arg,\n\t\t\t     bool utf8, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:325,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-imap.c:328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - dest
    - args
    - utf8
    - error_r
    argTypes:
    - string_t*
    - struct mail_search_arg*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 331
    functionName: mail_search_args_to_imap
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-imap.c
    functionUses: 1
    functionsReached:
    - str_append_c
    - mail_search_arg_to_imap
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_to_imap(string_t *dest, const struct mail_search_arg
      *args,\n\t\t\t      bool utf8, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: MAILBOX_LIST_FS_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAILBOX_LIST_FS_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: mailbox_lists_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - i_array_init
    linkageType: ''
    returnType: void
    signature: void mailbox_lists_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: mailbox_lists_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void mailbox_lists_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:62,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - name
    - idx_r
    argTypes:
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 70
    functionName: mailbox_list_driver_find
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - array_get
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool mailbox_list_driver_find(const char *name, unsigned int *idx_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_driver_find
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:76,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:77,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 82
    functionName: mailbox_list_register
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - mailbox_list_driver_find
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void mailbox_list_register(const struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_driver_find
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:88,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:89,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: mailbox_list_unregister
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - array_delete
    - i_fatal
    - mailbox_list_driver_find
    linkageType: ''
    returnType: void
    signature: void mailbox_list_unregister(const struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_driver_find
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:100,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - driver
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: mailbox_list_find_class
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - array_idx_elem
    - mailbox_list_driver_find
    linkageType: ''
    returnType: struct mailbox_list
    signature: 'struct mailbox_list *

      mailbox_list_find_class(const char *driver)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:114,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:133,1
    - Dst: struct mailbox_list*::v::alloc
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:136,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:137,1
    - Dst: struct mailbox_list*::v::init
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:151,1
    - Dst: struct mailbox_list*::v::deinit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:152,1
    - Dst: event_ref
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:159,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:160,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:162,1
    - Dst: mail_namespace_finish_list_init
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:172,1
    - Dst: hook_mailbox_list_created
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:176,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 6
    argNames:
    - event
    - ns
    - mail_set
    - flags
    - list_r
    - error_r
    argTypes:
    - struct event*
    - struct mail_namespace*
    - struct mail_storage_settings*
    - enum mailbox_list_flags
    - struct mailbox_list**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 178
    functionName: mailbox_list_create
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - struct mailbox_list*::v::init
    - pool_ref
    - hook_mailbox_list_created
    - event_ref
    - e_debug
    - mail_namespace_finish_list_init
    - struct mailbox_list*::v::alloc
    - struct mailbox_list*::v::deinit
    - i_assert
    - array_create
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_create(struct event *event, struct mail_namespace
      *ns,\n\t\t\tconst struct mail_storage_settings *mail_set,\n\t\t\tenum mailbox_list_flags
      flags,\n\t\t\tstruct mailbox_list **list_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - list
    - type
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 191
    functionName: mailbox_list_get_unexpanded_path
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *mailbox_list_get_unexpanded_path(struct mailbox_list *list,\n\t\t\t\t\t
      \    enum mailbox_list_path_type type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:204,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 2
    argNames:
    - vname
    - maildir_name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 209
    functionName: need_escape_dirstart
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - str_begins
    linkageType: ''
    returnType: bool
    signature: bool need_escape_dirstart(const char *vname, const char *maildir_name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:219,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:222,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:223,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:227,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:233,1
    - Dst: need_escape_dirstart
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:238,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:239,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:242,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:246,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 6
    argNames:
    - vname
    - ns_prefix
    - ns_sep
    - list_sep
    - escape_char
    - maildir_name
    argTypes:
    - char*
    - char*
    - char
    - char
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 247
    functionName: mailbox_list_escape_name_params
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - str_begins
    - need_escape_dirstart
    - str_append
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *\nmailbox_list_escape_name_params(const char *vname, const char
      *ns_prefix,\n\t\t\t\tchar ns_sep, char list_sep, char escape_char,\n\t\t\t\tconst
      char *maildir_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:254,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:257,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:257,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:258,1
    - Dst: imap_escaped_utf8_hex_to_char
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:261,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:262,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:265,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:268,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - _name
    - escape_char
    argTypes:
    - char**
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 269
    functionName: mailbox_list_name_unescape
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - str_append_c
    - strlen
    - imap_escaped_utf8_hex_to_char
    - str_append_data
    linkageType: ''
    returnType: void
    signature: void mailbox_list_name_unescape(const char **_name, char escape_char)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:277,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:283,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:285,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:292,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:296,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:297,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:298,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 2
    argNames:
    - list
    - _vname
    argTypes:
    - struct mailbox_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 314
    functionName: mailbox_list_vname_prepare
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_get_sep
    - strlen
    - t_strdup_printf
    - strcasecmp
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool mailbox_list_vname_prepare(struct mailbox_list *list, const char
      **_vname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:325,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:325,1
    - Dst: imap_escaped_utf8_to_utf7
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:326,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:329,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:330,1
    - Dst: mailbox_list_name_unescape
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:332,1
    - Dst: mailbox_list_escape_name_params
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:336,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:339,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - list
    - vname_part
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 344
    functionName: mailbox_list_default_get_storage_name_part
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - imap_escaped_utf8_to_utf7
    - str_c
    - t_str_new
    - i_panic
    - mailbox_list_escape_name_params
    - strlen
    - mailbox_list_get_hierarchy_sep
    - mailbox_list_name_unescape
    linkageType: ''
    returnType: char
    signature: "char *\nmailbox_list_default_get_storage_name_part(struct mailbox_list
      *list,\n\t\t\t\t\t   const char *vname_part)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:350,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:351,1
    - Dst: mailbox_list_vname_prepare
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:353,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:372,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:373,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:376,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:377,1
    - Dst: mailbox_list_default_get_storage_name_part
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:378,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:380,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - list
    - vname
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 346
    functionDepth: 3
    functionLinenumber: 346
    functionLinenumberEnd: 381
    functionName: mailbox_list_default_get_storage_name
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_list_vname_prepare
    - t_str_new
    - str_append_c
    - str_c
    - t_strsplit
    - mailbox_list_default_get_storage_name_part
    - str_append
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: "char *mailbox_list_default_get_storage_name(struct mailbox_list *list,\n\t\t\t\t\t\t
      \ const char *vname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::get_storage_name
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - vname
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: mailbox_list_get_storage_name
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 3
    functionsReached:
    - struct mailbox_list*::v::get_storage_name
    linkageType: ''
    returnType: char
    signature: "char *mailbox_list_get_storage_name(struct mailbox_list *list,\n\t\t\t\t\t
      \ const char *vname)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:393,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:393,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:396,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:397,1
    - Dst: i_isxdigit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:401,1
    - Dst: i_isxdigit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:401,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:405,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:410,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:412,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:415,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:417,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:419,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 5
    argNames:
    - src
    - ns_prefix
    - ns_sep
    - list_sep
    - escape_char
    argTypes:
    - char*
    - char*
    - char
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 420
    functionName: mailbox_list_unescape_name_params
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_isxdigit
    - str_append_c
    - str_begins
    - strlen
    - i_toupper
    - str_append
    linkageType: ''
    returnType: char
    signature: "char *\nmailbox_list_unescape_name_params(const char *src, const char
      *ns_prefix,\n\t\t\t\t  char ns_sep, char list_sep, char escape_char)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:429,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:436,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:450,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - list
    - _storage_name
    argTypes:
    - struct mailbox_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 456
    functionName: mailbox_list_storage_name_prepare
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strndup
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_storage_name_prepare(struct mailbox_list *list,\n\t\t\t\t
      \ const char **_storage_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:462,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:463,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - name
    - escape_chars
    - dest
    argTypes:
    - char*
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 467
    functionName: mailbox_list_name_escape
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_name_escape(const char *name, const char *escape_chars,\n\t\t\t
      \     string_t *dest)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:476,1
    - Dst: mailbox_list_unescape_name_params
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:481,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:489,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:489,1
    - Dst: imap_utf7_to_utf8_escaped
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:491,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:492,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:493,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:494,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:501,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:501,1
    - Dst: mailbox_list_name_escape
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:502,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:503,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - list
    - storage_name_part
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 469
    functionDepth: 2
    functionLinenumber: 469
    functionLinenumberEnd: 506
    functionName: mailbox_list_default_get_vname_part
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - t_str_new
    - str_c
    - imap_utf7_to_utf8_escaped
    - mailbox_list_name_escape
    - strlen
    - imap_utf7_to_utf8
    - mailbox_list_unescape_name_params
    linkageType: ''
    returnType: char
    signature: "char *\nmailbox_list_default_get_vname_part(struct mailbox_list *list,\n\t\t\t\t
      \   const char *storage_name_part)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_storage_name_prepare
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:511,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:514,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:515,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:516,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:517,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:518,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:521,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:522,1
    - Dst: mailbox_list_default_get_vname_part
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:523,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:525,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - list
    - storage_name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 526
    functionName: mailbox_list_default_get_vname
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - t_str_new
    - str_c
    - str_append_c
    - mailbox_list_default_get_vname_part
    - t_strsplit
    - mailbox_list_storage_name_prepare
    - str_append
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: "char *mailbox_list_default_get_vname(struct mailbox_list *list,\n\t\t\t\t\t
      \  const char *storage_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::get_vname
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: mailbox_list_get_vname
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 5
    functionsReached:
    - struct mailbox_list*::v::get_vname
    linkageType: ''
    returnType: char
    signature: char *mailbox_list_get_vname(struct mailbox_list *list, const char
      *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:538,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:539,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:541,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:542,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:543,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:547,1
    - Dst: mailbox_log_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:549,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:551,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:552,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:552,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:553,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:557,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:558,1
    - Dst: struct mailbox_list*::v::deinit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:559,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:560,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct mailbox_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 561
    functionName: mailbox_list_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - i_assert
    - event_unref
    - mailbox_log_free
    - i_free_and_null
    - settings_free
    - pool_unref
    - array_count
    - struct mailbox_list*::v::deinit
    - array_free
    - mailbox_tree_deinit
    - array_is_created
    - i_free
    - hash_table_is_created
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void mailbox_list_destroy(struct mailbox_list **_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 566
    functionName: mailbox_list_get_driver_name
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *mailbox_list_get_driver_name(const struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 571
    functionName: mailbox_list_get_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mailbox_list_flags
    signature: enum mailbox_list_flags mailbox_list_get_flags(const struct mailbox_list
      *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 577
    functionName: mailbox_list_get_namespace
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: struct mail_namespace
    signature: 'struct mail_namespace *

      mailbox_list_get_namespace(const struct mailbox_list *list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 583
    functionName: mailbox_list_get_event
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      mailbox_list_get_event(const struct mailbox_list *list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 589
    functionName: mailbox_list_get_user
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct mail_user
    signature: 'struct mail_user *

      mailbox_list_get_user(const struct mailbox_list *list)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:599,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:600,1
    - Dst: mail_storage_create
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:606,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - list
    - set_event
    - driver
    - storage_r
    argTypes:
    - struct mailbox_list*
    - struct event*
    - char*
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 591
    functionDepth: 9
    functionLinenumber: 591
    functionLinenumberEnd: 614
    functionName: mailbox_list_get_storage_driver
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_set_critical
    - mail_storage_create
    - array_foreach_elem
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_get_storage_driver(struct mailbox_list *list,\n\t\t\t\tstruct
      event *set_event, const char *driver,\n\t\t\t\tstruct mail_storage **storage_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_mailbox_create_event
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:624,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:625,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:627,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:628,1
    - Dst: mailbox_list_get_storage_driver
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:634,1
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:638,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:641,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - list
    - ATTR_UNUSED
    - ATTR_UNUSED
    - storage_r
    argTypes:
    - struct mailbox_list**
    - char**
    - enum mailbox_list_get_storage_flags
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 616
    functionDepth: 10
    functionLinenumber: 616
    functionLinenumberEnd: 644
    functionName: mailbox_list_default_get_storage
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - event_unref
    - mailbox_list_get_storage_driver
    - mail_namespace_get_default_storage
    - mailbox_list_set_critical
    - settings_free
    - mail_storage_mailbox_create_event
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_default_get_storage(struct mailbox_list **list,\n\t\t\t\t
      \    const char **vname ATTR_UNUSED,\n\t\t\t\t     enum mailbox_list_get_storage_flags
      flags ATTR_UNUSED,\n\t\t\t\t     struct mail_storage **storage_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: v::get_storage
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - list
    - vname
    - flags
    - storage_r
    argTypes:
    - struct mailbox_list**
    - char**
    - enum mailbox_list_get_storage_flags
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 651
    functionName: mailbox_list_get_storage
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 5
    functionsReached:
    - v::get_storage
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_get_storage(struct mailbox_list **list, const char
      **vname,\n\t\t\t     enum mailbox_list_get_storage_flags flags,\n\t\t\t     struct
      mail_storage **storage_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - storage
    argTypes:
    - struct mailbox_list*
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 657
    functionName: mailbox_list_get_default_storage
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_default_storage
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_get_default_storage(struct mailbox_list *list,\n\t\t\t\t
      \     struct mail_storage **storage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_clear_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:664,1
    - Dst: struct mailbox_list*::v::get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 666
    functionName: mailbox_list_get_hierarchy_sep
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 7
    functionsReached:
    - mailbox_list_clear_error
    - struct mailbox_list*::v::get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: char mailbox_list_get_hierarchy_sep(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 668
    functionDepth: 0
    functionLinenumber: 668
    functionLinenumberEnd: 672
    functionName: mailbox_list_get_mail_set
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct mail_storage_settings
    signature: 'struct mail_storage_settings *

      mailbox_list_get_mail_set(const struct mailbox_list *list)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:680,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:681,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:682,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:683,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:684,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:685,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:688,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:702,1
    - Dst: mkdir_get_executable_mode
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:705,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:709,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:716,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:722,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:726,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:728,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:730,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 3
    argNames:
    - list
    - path
    - permissions_r
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_permissions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 738
    functionName: mailbox_list_get_permissions_stat
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mkdir_get_executable_mode
    - ENOTFOUND
    - mail_error_eacces_msg
    - strrchr
    - e_debug
    - mailbox_list_set_critical
    - stat
    - S_ISDIR
    - getegid
    - ENOACCESS
    - t_strdup_until
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_get_permissions_stat(struct mailbox_list *list,
      const char *path,\n\t\t\t\t  struct mailbox_permissions *permissions_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:747,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:764,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:769,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:774,1
    - Dst: mailbox_list_get_permissions_stat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:780,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:785,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:785,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:790,1
    - Dst: mailbox_list_get_permissions
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:792,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:798,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:799,1
    - Dst: mailbox_permissions_copy
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:802,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:807,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:813,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - list
    - name
    - permissions_r
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_permissions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 741
    functionDepth: 2
    functionLinenumber: 741
    functionLinenumberEnd: 815
    functionName: mailbox_list_get_permissions_internal
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_list_get_path
    - mailbox_permissions_copy
    - geteuid
    - dec2str
    - mailbox_list_get_permissions_stat
    - strrchr
    - mailbox_list_get_root_path
    - e_debug
    - t_strdup_until
    - getegid
    - mailbox_list_get_permissions
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_get_permissions_internal(struct mailbox_list *list,\n\t\t\t\t
      \     const char *name,\n\t\t\t\t      struct mailbox_permissions *permissions_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_permissions_internal
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - list
    - name
    - permissions_r
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_permissions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 817
    functionDepth: 3
    functionLinenumber: 817
    functionLinenumberEnd: 821
    functionName: mailbox_list_get_permissions
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 3
    functionsReached:
    - mailbox_list_get_permissions_internal
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_get_permissions(struct mailbox_list *list, const
      char *name,\n\t\t\t\t  struct mailbox_permissions *permissions_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_permissions_internal
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:829,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - list
    - permissions_r
    argTypes:
    - struct mailbox_list*
    - struct mailbox_permissions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 823
    functionDepth: 3
    functionLinenumber: 823
    functionLinenumberEnd: 832
    functionName: mailbox_list_get_root_permissions
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 2
    functionsReached:
    - mailbox_list_get_permissions_internal
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_get_root_permissions(struct mailbox_list *list,\n\t\t\t\t
      \      struct mailbox_permissions *permissions_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dest
    - src
    - pool
    argTypes:
    - struct mailbox_permissions*
    - struct mailbox_permissions*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 841
    functionName: mailbox_permissions_copy
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 2
    functionsReached:
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void mailbox_permissions_copy(struct mailbox_permissions *dest,\n\t\t\t
      \     const struct mailbox_permissions *src,\n\t\t\t      pool_t pool)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:872,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 3
    argNames:
    - unexpanded_start
    - unexpanded_stop
    - expanded_full
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 883
    functionName: get_expanded_path
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - t_strndup
    linkageType: ''
    returnType: char
    signature: "char *\nget_expanded_path(const char *unexpanded_start, const char
      *unexpanded_stop,\n\t\t  const char *expanded_full)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_unexpanded_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:898,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:899,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:903,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:904,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:913,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:914,1
    - Dst: get_expanded_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:915,1
    - Dst: stat_first_parent
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:921,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:922,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:923,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:924,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:941,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:944,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:953,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 4
    argNames:
    - list
    - type
    - perm
    - error_r
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_path_type
    - struct mailbox_permissions*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 967
    functionName: mailbox_list_try_mkdir_root_parent
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mail_error_eacces_msg
    - strrchr
    - i_unreached
    - mailbox_list_get_root_path
    - mkdir_parents_chgrp
    - t_strdup_printf
    - getegid
    - ENOACCESS
    - get_expanded_path
    - stat_first_parent
    - mailbox_list_get_unexpanded_path
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_try_mkdir_root_parent(struct mailbox_list *list,\n\t\t\t\t
      \  enum mailbox_list_path_type type,\n\t\t\t\t   struct mailbox_permissions
      *perm,\n\t\t\t\t   const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:977,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:980,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:981,1
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:988,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:990,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:991,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:992,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:992,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:993,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:993,1
    - Dst: mailbox_list_try_mkdir_root_parent
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:997,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1004,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1008,1
    - Dst: mail_error_create_eacces_msg
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1009,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1011,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - list
    - path
    - type
    - error_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 969
    functionDepth: 4
    functionLinenumber: 969
    functionLinenumberEnd: 1015
    functionName: mailbox_list_try_mkdir_root
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - mailbox_list_get_root_path
    - i_unreached
    - mkdir_parents_chgrp
    - t_strdup_printf
    - mailbox_list_try_mkdir_root_parent
    - mail_error_create_eacces_msg
    - stat
    - S_ISDIR
    - mailbox_list_get_root_permissions
    - ENOACCESS
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_try_mkdir_root(struct mailbox_list *list, const char
      *path,\n\t\t\t\tenum mailbox_list_path_type type,\n\t\t\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_try_mkdir_root
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1022,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1023,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - list
    - path
    - type
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1017
    functionDepth: 5
    functionLinenumber: 1017
    functionLinenumberEnd: 1029
    functionName: mailbox_list_mkdir_root
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 4
    functionsReached:
    - mailbox_list_set_critical
    - mailbox_list_try_mkdir_root
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_mkdir_root(struct mailbox_list *list, const char
      *path,\n\t\t\t    enum mailbox_list_path_type type)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1046,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1047,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1075,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1094,1
    - Dst: struct mailbox_list*::v::is_internal_name
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1101,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 44
    argCount: 3
    argNames:
    - list
    - name
    - error_r
    argTypes:
    - struct mailbox_list*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1107
    functionName: mailbox_list_is_valid_fs_name
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - t_strsplit
    - struct mailbox_list*::v::is_internal_name
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_is_valid_fs_name(struct mailbox_list *list, const
      char *name,\n\t\t\t      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_is_valid_fs_name
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - list
    - name
    - error_r
    argTypes:
    - struct mailbox_list*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1113
    functionDepth: 3
    functionLinenumber: 1113
    functionLinenumberEnd: 1127
    functionName: mailbox_list_is_valid_name
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 3
    functionsReached:
    - mailbox_list_is_valid_fs_name
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_is_valid_name(struct mailbox_list *list,\n\t\t\t\tconst
      char *name, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::get_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1135,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - list
    - name
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1129
    functionDepth: 1
    functionLinenumber: 1129
    functionLinenumberEnd: 1140
    functionName: mailbox_list_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 4
    functionsReached:
    - struct mailbox_list*::v::get_path
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_get_path(struct mailbox_list *list, const char *name,\n\t\t\t
      \ enum mailbox_list_path_type type,\n\t\t\t  const char **path_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::get_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1148,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - list
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1142
    functionDepth: 1
    functionLinenumber: 1142
    functionLinenumberEnd: 1155
    functionName: mailbox_list_get_root_path
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 11
    functionsReached:
    - struct mailbox_list*::v::get_path
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_get_root_path(struct mailbox_list *list,\n\t\t\t\tenum
      mailbox_list_path_type type,\n\t\t\t\tconst char **path_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1162,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - type
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1157
    functionDepth: 2
    functionLinenumber: 1157
    functionLinenumberEnd: 1165
    functionName: mailbox_list_get_root_forced
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 2
    functionsReached:
    - i_unreached
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: char
    signature: "char *mailbox_list_get_root_forced(struct mailbox_list *list,\n\t\t\t\t\t
      enum mailbox_list_path_type type)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1182,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1193,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1203,1
    - Dst: mailbox_list_default_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1222,1
    - Dst: mailbox_list_default_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1231,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1233,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1234,1
    - Dst: mailbox_list_default_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1238,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1241,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 61
    argCount: 3
    argNames:
    - list
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1167
    functionDepth: 1
    functionLinenumber: 1167
    functionLinenumberEnd: 1247
    functionName: mailbox_list_default_get_root_path
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - strcmp
    - t_strconcat
    - mailbox_list_default_get_root_path
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_default_get_root_path(struct mailbox_list *list,\n\t\t\t\t\tenum
      mailbox_list_path_type type,\n\t\t\t\t\tconst char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::get_temp_prefix
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1249
    functionDepth: 0
    functionLinenumber: 1249
    functionLinenumberEnd: 1252
    functionName: mailbox_list_get_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - struct mailbox_list*::v::get_temp_prefix
    linkageType: ''
    returnType: char
    signature: char *mailbox_list_get_temp_prefix(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::get_temp_prefix
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1254
    functionDepth: 0
    functionLinenumber: 1254
    functionLinenumberEnd: 1257
    functionName: mailbox_list_get_global_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - struct mailbox_list*::v::get_temp_prefix
    linkageType: ''
    returnType: char
    signature: char *mailbox_list_get_global_temp_prefix(struct mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::join_refpattern
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1263,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - list
    - ref
    - pattern
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1271
    functionName: mailbox_list_join_refpattern
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - t_strconcat
    - struct mailbox_list*::v::join_refpattern
    linkageType: ''
    returnType: char
    signature: "char *mailbox_list_join_refpattern(struct mailbox_list *list,\n\t\t\t\t\t
      const char *ref, const char *pattern)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1279,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1280,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1281,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1283,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1273
    functionDepth: 1
    functionLinenumber: 1273
    functionLinenumberEnd: 1287
    functionName: mailbox_has_children
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_list_iter_deinit
    - mailbox_list_iter_next
    - t_strdup_printf
    - mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: int mailbox_has_children(struct mailbox_list *list, const char *name)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1297,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1307,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1308,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1315,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1316,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1318,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1338,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1339,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1340,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1345,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1349,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1350,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1351,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1353,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1354,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1355,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1358,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1363,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1367,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1370,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1381,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1384,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1385,1
    - Dst: struct mailbox_list*::v::get_mailbox_flags
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1390,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 64
    argCount: 3
    argNames:
    - list
    - name
    - flags_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1289
    functionDepth: 5
    functionLinenumber: 1289
    functionLinenumberEnd: 1393
    functionName: mailbox_list_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 2
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - mailbox_get_last_error
    - mailbox_free
    - mailbox_list_iter_deinit
    - strrchr
    - i_unreached
    - mailbox_list_set_error
    - str_begins
    - mailbox_list_iter_next
    - strcasecmp
    - mailbox_list_get_root_forced
    - mailbox_alloc
    - mailbox_list_get_vname
    - mailbox_list_iter_init
    - t_strdup_until
    - struct mailbox_list*::v::get_mailbox_flags
    - mailbox_exists
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_mailbox(struct mailbox_list *list, const char *name,\n\t\t\t
      enum mailbox_info_flags *flags_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1398,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1403,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - list
    - count_r
    argTypes:
    - struct mailbox_list*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1395
    functionDepth: 1
    functionLinenumber: 1395
    functionLinenumberEnd: 1410
    functionName: mailbox_list_get_count
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - mailbox_list_iter_next
    - mailbox_list_iter_deinit
    - mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: int mailbox_list_get_count(struct mailbox_list *list, unsigned int
      *count_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1422,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1425,1
    - Dst: mailbox_log_alloc
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1426,1
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1428,1
    - Dst: mailbox_log_set_permissions
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1412
    functionDepth: 4
    functionLinenumber: 1412
    functionLinenumberEnd: 1433
    functionName: mailbox_list_init_changelog
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_root_path
    - mailbox_log_alloc
    - mailbox_list_get_root_permissions
    - t_strconcat
    - mailbox_log_set_permissions
    linkageType: ''
    returnType: bool
    signature: bool mailbox_list_init_changelog(struct mailbox_list *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1447,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1451,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1435
    functionDepth: 6
    functionLinenumber: 1435
    functionLinenumberEnd: 1456
    functionName: mailbox_list_mkdir_missing_index_root
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_mkdir_root
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: int
    signature: int mailbox_list_mkdir_missing_index_root(struct mailbox_list *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_mkdir_missing_index_root
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1463,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1469,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1472,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1458
    functionDepth: 7
    functionLinenumber: 1458
    functionLinenumberEnd: 1477
    functionName: mailbox_list_mkdir_missing_list_index_root
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_mkdir_missing_index_root
    - mailbox_list_mkdir_root
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: int
    signature: int mailbox_list_mkdir_missing_list_index_root(struct mailbox_list
      *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_init_changelog
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1486,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1487,1
    - Dst: mailbox_list_mkdir_missing_index_root
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1490,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1496,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1498,1
    - Dst: mailbox_log_record_set_timestamp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1499,1
    - Dst: mailbox_log_append
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1500,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - list
    - type
    - mailbox_guid
    argTypes:
    - struct mailbox_list*
    - enum mailbox_log_record_type
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1479
    functionDepth: 7
    functionLinenumber: 1479
    functionLinenumberEnd: 1501
    functionName: mailbox_list_add_change
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - mailbox_list_mkdir_missing_index_root
    - mailbox_log_append
    - mailbox_log_record_set_timestamp
    - guid_128_is_empty
    - mailbox_list_init_changelog
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_add_change(struct mailbox_list *list,\n\t\t\t     enum
      mailbox_log_record_type type,\n\t\t\t     const guid_128_t mailbox_guid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::set_subscribed
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - list
    - name
    - set
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1503
    functionDepth: 0
    functionLinenumber: 1503
    functionLinenumberEnd: 1514
    functionName: mailbox_list_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - struct mailbox_list*::v::set_subscribed
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_set_subscribed(struct mailbox_list *list,\n\t\t\t\tconst
      char *name, bool set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1520,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1521,1
    - Dst: struct mailbox_list*::v::delete_dir
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1526
      start: 1516
    functionDepth: 4
    functionLinenumber: 1516
    functionLinenumberEnd: 1526
    functionName: mailbox_list_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - mailbox_list_is_valid_name
    - struct mailbox_list*::v::delete_dir
    linkageType: ''
    returnType: int
    signature: int mailbox_list_delete_dir(struct mailbox_list *list, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1532,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1533,1
    - Dst: struct mailbox_list*::v::delete_symlink
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1528
    functionDepth: 4
    functionLinenumber: 1528
    functionLinenumberEnd: 1538
    functionName: mailbox_list_delete_symlink
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - mailbox_list_is_valid_name
    - struct mailbox_list*::v::delete_symlink
    linkageType: ''
    returnType: int
    signature: int mailbox_list_delete_symlink(struct mailbox_list *list, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1544,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1544,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1545,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - guid_128_r
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1540
    functionDepth: 1
    functionLinenumber: 1540
    functionLinenumberEnd: 1546
    functionName: mailbox_name_get_sha128
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - memcpy
    - I_MIN
    - strlen
    - sha1_get_digest
    linkageType: ''
    returnType: void
    signature: void mailbox_name_get_sha128(const char *name, guid_128_t guid_128_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_init_changelog
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1548
    functionDepth: 5
    functionLinenumber: 1548
    functionLinenumberEnd: 1551
    functionName: mailbox_list_get_changelog
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_init_changelog
    linkageType: ''
    returnType: struct mailbox_log
    signature: struct mailbox_log *mailbox_list_get_changelog(struct mailbox_list
      *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - stamp
    argTypes:
    - struct mailbox_list*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1553
    functionDepth: 0
    functionLinenumber: 1553
    functionLinenumberEnd: 1557
    functionName: mailbox_list_set_changelog_timestamp
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_set_changelog_timestamp(struct mailbox_list *list,\n\t\t\t\t\t
      \ time_t stamp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dirent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1559
    functionDepth: 0
    functionLinenumber: 1559
    functionLinenumberEnd: 1586
    functionName: mailbox_list_get_file_type
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mailbox_list_file_type
    signature: enum mailbox_list_file_type mailbox_list_get_file_type(const struct
      dirent *d ATTR_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_file_type
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1595,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1601,1
    - Dst: lstat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1602,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1603,1
    - Dst: S_ISLNK
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1606,1
    - Dst: t_readlink
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1608,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1609,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1615,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - list
    - dir_path
    - d
    argTypes:
    - struct mailbox_list*
    - char*
    - struct dirent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1617
    functionName: mailbox_list_dirent_is_alias_symlink
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strchr
    - S_ISLNK
    - mailbox_list_set_critical
    - mailbox_list_get_file_type
    - e_error
    - t_strconcat
    - t_readlink
    - lstat
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_dirent_is_alias_symlink(struct mailbox_list *list,\n\t\t\t\t\t
      const char *dir_path,\n\t\t\t\t\t const struct dirent *d)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1630,1
    - Dst: mail_user_try_home_expand
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1632,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1643,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1644,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1647,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1651,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1659
      start: 1622
    functionDepth: 3
    functionLinenumber: 1622
    functionLinenumberEnd: 1659
    functionName: mailbox_list_try_get_absolute_path
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - str_begins_with
    - str_begins
    - mailbox_list_get_root_forced
    - mail_user_try_home_expand
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_try_get_absolute_path(struct mailbox_list *list,\n\t\t\t\t\tconst
      char **name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1674,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - list
    - error_r
    argTypes:
    - struct mailbox_list*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1661
    functionDepth: 1
    functionLinenumber: 1661
    functionLinenumberEnd: 1681
    functionName: mailbox_list_get_last_error
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 4
    functionsReached:
    - i_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *mailbox_list_get_last_error(struct mailbox_list *list,\n\t\t\t\t\tenum
      mail_error *error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1686
      start: 1683
    functionDepth: 0
    functionLinenumber: 1683
    functionLinenumberEnd: 1686
    functionName: mailbox_list_get_last_mail_error
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum mail_error
    signature: enum mail_error mailbox_list_get_last_mail_error(struct mailbox_list
      *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1694,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1697,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - list
    - error_r
    argTypes:
    - struct mailbox_list*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1688
    functionDepth: 2
    functionLinenumber: 1688
    functionLinenumberEnd: 1698
    functionName: mailbox_list_get_last_internal_error
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 7
    functionsReached:
    - i_assert
    - mailbox_list_get_last_error
    linkageType: ''
    returnType: char
    signature: "char *mailbox_list_get_last_internal_error(struct mailbox_list *list,\n\t\t\t\t\t\t
      enum mail_error *error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1702,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1707
      start: 1700
    functionDepth: 1
    functionLinenumber: 1700
    functionLinenumberEnd: 1707
    functionName: mailbox_list_clear_error
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - i_free_and_null
    - i_free
    linkageType: ''
    returnType: void
    signature: void mailbox_list_clear_error(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1713,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1714,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - list
    - error
    - string
    argTypes:
    - struct mailbox_list*
    - enum mail_error
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1709
    functionDepth: 1
    functionLinenumber: 1709
    functionLinenumberEnd: 1719
    functionName: mailbox_list_set_error
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 3
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_set_error(struct mailbox_list *list,\n\t\t\t    enum
      mail_error error, const char *string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1725,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1726,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1727,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1721
    functionDepth: 1
    functionLinenumber: 1721
    functionLinenumberEnd: 1734
    functionName: mailbox_list_set_internal_error
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - i_free
    - t_strflocaltime
    linkageType: ''
    returnType: void
    signature: void mailbox_list_set_internal_error(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1747,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1749,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1750,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1751,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1753,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1757,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - list
    - fmt
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1736
    functionDepth: 2
    functionLinenumber: 1736
    functionLinenumberEnd: 1759
    functionName: mailbox_list_set_critical
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 6
    functionsReached:
    - va_start
    - i_strdup_vprintf
    - e_error
    - mailbox_list_set_internal_error
    - i_free
    - va_end
    linkageType: ''
    returnType: void
    signature: void mailbox_list_set_critical(struct mailbox_list *list, const char
      *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_error_from_errno
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1766,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1761
    functionDepth: 2
    functionLinenumber: 1761
    functionLinenumberEnd: 1771
    functionName: mailbox_list_set_error_from_errno
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - mail_error_from_errno
    linkageType: ''
    returnType: bool
    signature: bool mailbox_list_set_error_from_errno(struct mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1777,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1778,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1779,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1780,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1784,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1785
      start: 1773
    functionDepth: 1
    functionLinenumber: 1773
    functionLinenumberEnd: 1785
    functionName: mailbox_list_last_error_push
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_strdup
    - array_is_created
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void mailbox_list_last_error_push(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1789,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1791,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1793,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1794,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1800
      start: 1787
    functionDepth: 1
    functionLinenumber: 1787
    functionLinenumberEnd: 1800
    functionName: mailbox_list_last_error_pop
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_count
    - i_free
    - array_idx
    linkageType: ''
    returnType: void
    signature: void mailbox_list_last_error_pop(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1811,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1813,1
    - Dst: mail_user_init_fs_parameters
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1814,1
    - Dst: mailbox_list_get_global_temp_prefix
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1816,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1818,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1827,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1829,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1833,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - list
    - event_parent
    - root_dir
    - fs_r
    - error_r
    argTypes:
    - struct mailbox_list*
    - struct event*
    - char*
    - struct fs**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1802
    functionDepth: 7
    functionLinenumber: 1802
    functionLinenumberEnd: 1835
    functionName: mailbox_list_init_fs
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_new
    - fs_init_auto
    - fs_get_properties
    - MODULE_CONTEXT_SET
    - mailbox_list_get_global_temp_prefix
    - i_assert
    - mail_user_init_fs_parameters
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_init_fs(struct mailbox_list *list, struct event *event_parent,\n\t\t\t
      const char *root_dir, struct fs **fs_r,\n\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAILBOX_LIST_FS_CONTEXT
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1844,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct fs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1837
    functionDepth: 1
    functionLinenumber: 1837
    functionLinenumberEnd: 1846
    functionName: mailbox_list_fs_get_list
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 0
    functionsReached:
    - MAILBOX_LIST_FS_CONTEXT
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *mailbox_list_fs_get_list(struct fs *fs)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1859,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1860,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1863,1
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1875,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1877,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1878,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1881,1
    - Dst: mailbox_list_mkdir_missing_index_root
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1884,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1886,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1889,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1898,1
    - Dst: mail_storage_lock_create
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1899,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1901,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1848
    functionDepth: 7
    functionLinenumber: 1848
    functionLinenumberEnd: 1909
    functionName: mailbox_list_lock
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 3
    functionsReached:
    - i_zero
    - mailbox_list_mkdir_missing_index_root
    - mailbox_list_mkdir_root
    - mailbox_list_get_root_path
    - mail_storage_lock_create
    - I_MIN
    - mailbox_list_set_critical
    - t_strdup_printf
    - mailbox_list_get_root_permissions
    - binary_to_hex
    - t_strconcat
    - sha1_get_digest
    linkageType: ''
    returnType: int
    signature: int mailbox_list_lock(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1913,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib-storage/mailbox-list.c:1917,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1911
    functionDepth: 1
    functionLinenumber: 1911
    functionLinenumberEnd: 1918
    functionName: mailbox_list_unlock
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list.c
    functionUses: 2
    functionsReached:
    - file_lock_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mailbox_list_unlock(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:27,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:28,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:29,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - storage_r
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: test_init_storage
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_new
    - event_create
    linkageType: ''
    returnType: void
    signature: void test_init_storage(struct mail_storage *storage_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_clear_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:35,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:36,1
    - Dst: mail_storage_clear_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:37,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:38,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:38,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:39,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:41,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: test_deinit_storage
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - event_unref
    - array_count
    - mail_storage_clear_error
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void test_deinit_storage(struct mail_storage *storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:52,1
    - Dst: test_init_storage
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:53,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:56,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:57,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:57,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:60,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:60,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:63,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:66,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:68,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:68,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:71,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:71,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:74,1
    - Dst: mail_storage_clear_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:78,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:78,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:81,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:81,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:84,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:87,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:88,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:90,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:90,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:93,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:93,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:96,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:101,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:101,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:104,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:104,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:107,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:110,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:111,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:113,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:113,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:116,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:116,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:119,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:122,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:123,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:124,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:126,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:126,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:129,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:129,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:132,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:135,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:136,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:137,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:139,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:139,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:141,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:143,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:144,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:146,1
    - Dst: mail_storage_clear_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:150,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:150,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:150,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:153,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:153,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:155,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:156,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:160,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:161,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:162,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:163,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:165,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:165,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:165,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:167,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:168,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:168,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:170,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:171,1
    - Dst: test_deinit_storage
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:173,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 45
    functionDepth: 4
    functionLinenumber: 45
    functionLinenumberEnd: 175
    functionName: test_mail_storage_errors
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_expect_no_more_errors
    - mail_storage_get_last_error
    - mail_storage_get_last_internal_error
    - str_begins
    - strstr
    - test_expect_error_string
    - test_end
    - test_init_storage
    - mail_storage_clear_error
    - test_assert
    - test_deinit_storage
    - mail_storage_set_critical
    - mail_storage_set_internal_error
    - mail_storage_set_error
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_storage_errors(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:183,1
    - Dst: test_init_storage
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:184,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:187,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:188,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:191,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:192,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:193,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:194,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:197,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:198,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:201,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:202,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:203,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:204,1
    - Dst: mail_storage_clear_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:207,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:210,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:211,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:211,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:211,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:213,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:214,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:214,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:214,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:216,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:217,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:220,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:221,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:221,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:223,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:224,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:224,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:227,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:230,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:231,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:231,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:233,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:234,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:234,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:234,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:236,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:237,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:240,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:241,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:241,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:241,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:243,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:244,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:244,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:244,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:246,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:247,1
    - Dst: test_deinit_storage
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:249,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 251
    functionName: test_mail_storage_last_error_push_pop
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_expect_no_more_errors
    - mail_storage_get_last_error
    - mail_storage_last_error_pop
    - mail_storage_get_last_internal_error
    - strstr
    - mail_storage_set_critical
    - test_expect_error_string
    - test_end
    - test_init_storage
    - mail_storage_clear_error
    - test_assert
    - test_deinit_storage
    - mail_storage_last_error_push
    - mail_storage_set_error
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_storage_last_error_push_pop(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:335,1
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:336,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:339,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:340,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:341,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:344,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:345,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:348,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:351,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:352,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:353,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:354,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:355,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:359,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:362,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:363,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:365,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:366,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:370,1
    - Dst: mailbox_rename
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:371,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:374,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:375,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:376,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:379,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:380,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:383,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:384,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:385,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:386,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - test_case
    - ns
    - i
    argTypes:
    - struct mailbox_verify_test_cases*
    - struct mail_namespace*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 327
    functionDepth: 12
    functionLinenumber: 327
    functionLinenumberEnd: 387
    functionName: test_mailbox_verify_name_one
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_get_sep
    - mailbox_get_last_error
    - mailbox_free
    - mailbox_verify_name
    - test_assert_idx
    - mailbox_rename
    - mailbox_delete
    - mailbox_alloc
    - mailbox_create
    - mailbox_list_get_hierarchy_sep
    - i_debug
    - mailbox_exists
    linkageType: ''
    returnType: void
    signature: "void test_mailbox_verify_name_one(struct mailbox_verify_test_cases
      *test_case,\n\t\t\t     struct mail_namespace *ns,\n\t\t\t     size_t i)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:394,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:398,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:400,1
    - Dst: test_mailbox_verify_name_one
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:402,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 3
    argNames:
    - test_cases
    - ncases
    - ctx
    argTypes:
    - struct mailbox_verify_test_cases*
    - size_t
    - struct test_mail_storage_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 389
    functionDepth: 13
    functionLinenumber: 389
    functionLinenumberEnd: 404
    functionName: test_mailbox_verify_name_continue
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find_inbox
    - mail_namespace_get_sep
    - mailbox_list_get_hierarchy_sep
    - test_mailbox_verify_name_one
    linkageType: ''
    returnType: void
    signature: "void test_mailbox_verify_name_continue(struct mailbox_verify_test_cases
      *test_cases,\n\t\t\t\t  size_t ncases, struct test_mail_storage_ctx *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:413,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:426,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:428,1
    - Dst: test_mailbox_verify_name_continue
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:429,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:429,1
    - Dst: test_mailbox_verify_name_continue
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:431,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:431,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - driver
    - mailbox_list_layout
    - ctx
    argTypes:
    - char*
    - char*
    - struct test_mail_storage_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 406
    functionDepth: 14
    functionLinenumber: 406
    functionLinenumberEnd: 434
    functionName: test_mailbox_verify_name_driver_slash
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_mailbox_verify_name_continue
    - test_mail_storage_init_user
    - t_strdup_printf
    - test_mail_storage_deinit_user
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void test_mailbox_verify_name_driver_slash(const char *driver,\n\t\t\t\t
      \     const char *mailbox_list_layout,\n\t\t\t\t      struct test_mail_storage_ctx
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:443,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:456,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:458,1
    - Dst: test_mailbox_verify_name_continue
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:459,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:459,1
    - Dst: test_mailbox_verify_name_continue
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:461,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:461,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - driver
    - mailbox_list_layout
    - ctx
    argTypes:
    - char*
    - char*
    - struct test_mail_storage_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 436
    functionDepth: 14
    functionLinenumber: 436
    functionLinenumberEnd: 464
    functionName: test_mailbox_verify_name_driver_dot
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_mailbox_verify_name_continue
    - test_mail_storage_init_user
    - t_strdup_printf
    - test_mail_storage_deinit_user
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void test_mailbox_verify_name_driver_dot(const char *driver,\n\t\t\t\t
      \   const char *mailbox_list_layout,\n\t\t\t\t    struct test_mail_storage_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:484,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:486,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:487,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:487,1
    - Dst: test_mailbox_verify_name_driver_dot
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:488,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:490,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:491,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:491,1
    - Dst: test_mailbox_verify_name_driver_slash
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:492,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 466
    functionDepth: 15
    functionLinenumber: 466
    functionLinenumberEnd: 495
    functionName: test_mailbox_verify_name
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - test_mailbox_verify_name_driver_slash
    - t_strdup_printf
    - test_end
    - test_mail_storage_init
    - N_ELEMENTS
    - test_mailbox_verify_name_driver_dot
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mailbox_verify_name(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mailbox_verify_name_continue
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:547,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_mail_storage_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 500
    functionDepth: 14
    functionLinenumber: 500
    functionLinenumberEnd: 548
    functionName: test_mailbox_list_maildir_continue
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - test_mailbox_verify_name_continue
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_mailbox_list_maildir_continue(struct test_mail_storage_ctx
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:557,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:560,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:561,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:571,1
    - Dst: test_mailbox_list_maildir_continue
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:572,1
    - Dst: mail_namespace_find_prefix
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:575,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:576,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:578,1
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:579,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:580,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:583,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:584,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:585,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:588,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:589,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:589,1
    - Dst: mailbox_verify_name
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:590,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:591,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:594,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:595,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:596,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:599,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:601,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - mailbox_list_layout
    - sep
    argTypes:
    - struct test_mail_storage_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 550
    functionDepth: 15
    functionLinenumber: 550
    functionLinenumberEnd: 602
    functionName: test_mailbox_list_maildir_init
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_error
    - test_mailbox_list_maildir_continue
    - test_mail_storage_init_user
    - mailbox_verify_name
    - mailbox_free
    - t_strdup_printf
    - mail_namespace_find_prefix
    - mailbox_alloc
    - test_assert
    - mailbox_get_vname
    - test_mail_storage_deinit_user
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_mailbox_list_maildir_init(struct test_mail_storage_ctx *ctx,\n\t\t\t\t\t
      \  const char *mailbox_list_layout,\n\t\t\t\t\t   const char *sep)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:606,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:608,1
    - Dst: test_mailbox_list_maildir_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:609,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:610,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:612,1
    - Dst: test_mailbox_list_maildir_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:613,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:614,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:616,1
    - Dst: test_mailbox_list_maildir_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:617,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:618,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:620,1
    - Dst: test_mailbox_list_maildir_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:621,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:622,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 604
    functionDepth: 16
    functionLinenumber: 604
    functionLinenumberEnd: 625
    functionName: test_mailbox_list_maildir
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_mail_storage_init
    - test_mailbox_list_maildir_init
    - test_mail_storage_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mailbox_list_maildir(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:633,1
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:635,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:642,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:649,1
    - Dst: test_mailbox_verify_name_one
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:650,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:652,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:653,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 627
    functionDepth: 13
    functionLinenumber: 627
    functionLinenumberEnd: 656
    functionName: test_mailbox_list_mbox
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - test_mail_storage_init_user
    - test_mail_storage_deinit
    - test_end
    - test_mail_storage_init
    - test_mail_storage_deinit_user
    - mail_namespace_find_inbox
    - test_mailbox_verify_name_one
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mailbox_list_mbox(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:664,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:666,1
    - Dst: mail_parse_human_timestamp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:667,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:670,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:671,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:672,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:675,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 658
    functionDepth: 3
    functionLinenumber: 658
    functionLinenumberEnd: 676
    functionName: test_mail_parse_human_timestamp
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_parse_human_timestamp
    - test_assert_idx
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_parse_human_timestamp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:684,1
    - Dst: mail_parse_human_timestamp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:688,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:690,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:691,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:692,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 678
    functionDepth: 3
    functionLinenumber: 678
    functionLinenumberEnd: 695
    functionName: test_mail_parse_human_timestamp_time_interval
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - test_end
    - mail_parse_human_timestamp
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_mail_parse_human_timestamp_time_interval(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:720,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:721,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:723,1
    - Dst: mail_parse_human_timestamp
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:724,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:726,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 717
    functionDepth: 3
    functionLinenumber: 717
    functionLinenumberEnd: 727
    functionName: test_mail_parse_human_timestamp_fail
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 0
    functionsReached:
    - mail_parse_human_timestamp
    - test_assert_idx
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_parse_human_timestamp_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:744,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:751,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:752,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/lib-storage/test-mail-storage.c:754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 729
    functionDepth: 7
    functionLinenumber: 729
    functionLinenumberEnd: 757
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage.c
    functionUses: 7
    functionsReached:
    - master_service_deinit
    - master_service_init
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:79,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:83,1
    - Dst: settings_key_exists
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:87,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:90,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:93,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:99,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:101,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - user
    - key
    - value
    argTypes:
    - struct mail_storage_service_user*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 102
    functionName: set_keyvalue
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_begins
    - e_debug
    - settings_key_exists
    - settings_override
    - strstr
    linkageType: ''
    returnType: void
    signature: "void set_keyvalue(struct mail_storage_service_user *user,\n\t\t\t
      const char *key, const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:112,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:115,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - user_set
    - dir
    argTypes:
    - struct mail_user_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 123
    functionName: validate_chroot
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - array_is_empty
    - settings_boollist_get
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: "bool validate_chroot(const struct mail_user_settings *user_set,\n\t\t\t
      \   const char *dir)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:141,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:142,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:147,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:148,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:153,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:154,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:157,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:162,1
    - Dst: validate_chroot
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:169,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:174,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:180,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:185,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:186,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:187,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:188,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:189,1
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:192,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:193,1
    - Dst: setpriority
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:197,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:198,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:202,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:203,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:204,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:205,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:206,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:207,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:208,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:209,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:210,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:211,1
    - Dst: set_keyvalue
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:213,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 66
    argCount: 3
    argNames:
    - user
    - reply
    - error_r
    argTypes:
    - struct mail_storage_service_user*
    - struct auth_user_reply*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 125
    functionDepth: 5
    functionLinenumber: 125
    functionLinenumberEnd: 217
    functionName: user_reply_handle
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - dec2str
    - strcmp
    - p_strdup
    - strchr
    - array_get
    - t_strdup_printf
    - array_not_empty
    - setpriority
    - set_keyvalue
    - e_error
    - t_split_key_value_eq
    - t_strdup_until
    - settings_override
    - str_to_int
    - strstr
    - validate_chroot
    linkageType: ''
    returnType: int
    signature: "int user_reply_handle(struct mail_storage_service_user *user,\n\t\t
      \ const struct auth_user_reply *reply,\n\t\t  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:225,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:227,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - user
    - code_override_fields
    argTypes:
    - struct mail_storage_service_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 232
    functionName: mail_storage_service_add_code_overrides
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - strcmp
    - settings_override
    - t_split_key_value_eq
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_add_code_overrides(struct mail_storage_service_user
      *user,\n\t\t\t\t\tconst char *const *code_override_fields)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:244,1
    - Dst: auth_master_user_lookup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:262,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:265,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:266,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:267,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:273,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 7
    argNames:
    - ctx
    - input
    - pool
    - event
    - user
    - fields_r
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_input*
    - pool_t
    - struct event*
    - char**
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 279
    functionName: service_auth_userdb_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - auth_master_user_lookup
    - e_debug
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int service_auth_userdb_lookup(struct mail_storage_service_ctx *ctx,\n\t\t\t
      \  const struct mail_storage_service_input *input,\n\t\t\t   pool_t pool, struct
      event *event, const char **user,\n\t\t\t   const char *const **fields_r, const
      char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:285,1
    - Dst: i_getpwnam
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:288,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:290,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - str
    - uid_r
    - error_r
    argTypes:
    - char*
    - uid_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 299
    functionName: parse_uid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_getpwnam
    - str_to_uid
    - t_strconcat
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: bool parse_uid(const char *str, uid_t *uid_r, const char **error_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_gid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:305,1
    - Dst: i_getgrnam
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:308,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:310,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - str
    - gid_r
    - error_r
    argTypes:
    - char*
    - gid_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 319
    functionName: parse_gid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - str_to_gid
    - i_getgrnam
    - t_strdup_printf
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: bool parse_gid(const char *str, gid_t *gid_r, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - fields
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 328
    functionName: get_master_user
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - str_begins
    linkageType: ''
    returnType: char
    signature: char *get_master_user(const char *const *fields)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_master_user
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:342,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:361,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:363,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:368,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:369,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:382,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - service
    - user
    - input
    argTypes:
    - struct master_service*
    - struct mail_storage_service_user*
    - struct mail_storage_service_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 385
    functionName: get_var_expand_table
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 1
    functionsReached:
    - dec2str
    - memcpy
    - get_master_user
    - net_ip2addr
    - t_malloc_no0
    linkageType: ''
    returnType: struct var_expand_table
    signature: "struct var_expand_table *\nget_var_expand_table(struct master_service
      *service,\n\t\t     struct mail_storage_service_user *user,\n\t\t     const
      struct mail_storage_service_input *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_fields_var_expand
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - key
    - value_r
    - context
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 396
    functionName: mail_storage_service_var_userdb
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_fields_var_expand
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_var_userdb(const char *key, const char **value_r,\n\t\t\t
      \      void *context, const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:407,1
    - Dst: get_var_expand_table
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 413
    functionName: mail_storage_service_get_var_expand_params
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 1
    functionsReached:
    - t_new
    - get_var_expand_table
    linkageType: ''
    returnType: struct var_expand_params
    signature: "struct var_expand_params *\nmail_storage_service_get_var_expand_params(struct
      mail_storage_service_ctx *ctx,\n\t\t\t\t\t   struct mail_storage_service_input
      *input)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:424,1
    - Dst: parse_uid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:426,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:427,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:434,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:437,1
    - Dst: parse_gid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:445,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:446,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:453,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:456,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - user
    - priv_r
    - error_r
    argTypes:
    - struct mail_storage_service_user*
    - struct mail_storage_service_privileges*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 463
    functionName: service_parse_privileges
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dec2str
    - parse_gid
    - t_strdup_printf
    - parse_uid
    linkageType: ''
    returnType: int
    signature: "int service_parse_privileges(struct mail_storage_service_user *user,\n\t\t\t
      struct mail_storage_service_privileges *priv_r,\n\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: seteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:467,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - uid
    argTypes:
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 472
    functionName: mail_storage_service_seteuid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - seteuid
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_seteuid(uid_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_seteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 474
    functionDepth: 2
    functionLinenumber: 474
    functionLinenumberEnd: 477
    functionName: mail_storage_service_seteuid_root
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_seteuid
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_seteuid_root(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:482,1
    - Dst: mail_storage_service_seteuid_root
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:483,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:484,1
    - Dst: mail_storage_service_seteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:486,1
    - Dst: chdir
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:490,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:491,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - old_uid
    - old_cwd
    - event
    argTypes:
    - uid_t
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 479
    functionDepth: 3
    functionLinenumber: 479
    functionLinenumberEnd: 492
    functionName: mail_storage_service_restore_privileges
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 1
    functionsReached:
    - geteuid
    - mail_storage_service_seteuid
    - mail_storage_service_seteuid_root
    - chdir
    - e_error
    - restrict_access_allow_coredumps
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_restore_privileges(uid_t old_uid, const
      char *old_cwd,\n\t\t\t\t\t     struct event *event)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:505,1
    - Dst: restrict_access_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:506,1
    - Dst: restrict_access_get_env
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:507,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:521,1
    - Dst: parse_gid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:526,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:528,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:533,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:534,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:534,1
    - Dst: restrict_access_get_current_chroot
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:543,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:551,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:552,1
    - Dst: mail_storage_service_seteuid_root
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:572,1
    - Dst: restrict_access
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:580,1
    - Dst: restrict_access_set_env
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:583,1
    - Dst: seteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:586,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:587,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:588,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 70
    argCount: 6
    argNames:
    - user
    - priv
    - allow_root
    - keep_setuid_root
    - setenv_only
    - error_r
    argTypes:
    - struct mail_storage_service_user*
    - struct mail_storage_service_privileges*
    - bool
    - bool
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 494
    functionDepth: 3
    functionLinenumber: 494
    functionLinenumberEnd: 591
    functionName: service_drop_privileges
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - strcmp
    - seteuid
    - restrict_access_get_current_chroot
    - geteuid
    - dec2str
    - restrict_access_init
    - parse_gid
    - t_strdup_printf
    - array_not_empty
    - mail_storage_service_seteuid_root
    - i_fatal
    - restrict_access_set_env
    - restrict_access
    - getegid
    - t_array_const_string_join
    - restrict_access_get_env
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int service_drop_privileges(struct mail_storage_service_user *user,\n\t\t\tstruct
      mail_storage_service_privileges *priv,\n\t\t\tbool allow_root, bool keep_setuid_root,\n\t\t\tbool
      setenv_only, const char **error_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:609,1
    - Dst: mail_user_alloc
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:619,1
    - Dst: mail_user_set_home
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:626,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:628,1
    - Dst: mail_user_set_vars
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:629,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:630,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:631,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:635,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:637,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:638,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:639,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:649,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:652,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:658,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:661,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:662,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:663,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:667,1
    - Dst: get_master_user
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:669,1
    - Dst: mail_user_add_event_fields
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:670,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:672,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:674,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:675,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:675,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:675,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:675,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:677,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:678,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:678,1
    - Dst: chdir
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:697,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:698,1
    - Dst: chdir
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:699,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:700,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:701,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:702,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:703,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:705,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:708,1
    - Dst: chdir
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:710,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:711,1
    - Dst: mail_user_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:716,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 66
    argCount: 6
    argNames:
    - ctx
    - user
    - priv
    - session_id_suffix
    - mail_user_r
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_user*
    - struct mail_storage_service_privileges*
    - char*
    - struct mail_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 717
    functionName: mail_storage_service_init_post
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - str_printfa
    - mail_user_alloc
    - mail_user_set_vars
    - get_master_user
    - t_str_new
    - p_strarray_dup
    - chdir
    - ENOACCESS
    - eacces_error_get
    - event_add_str
    - i_zero
    - geteuid
    - e_error
    - mail_user_add_event_fields
    - dec2str
    - e_debug
    - mail_user_set_home
    - settings_event_add_list_filter_name
    - getegid
    - mail_user_init
    - t_strconcat
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_init_post(struct mail_storage_service_ctx
      *ctx,\n\t\t\t       struct mail_storage_service_user *user,\n\t\t\t       struct
      mail_storage_service_privileges *priv,\n\t\t\t       const char *session_id_suffix,\n\t\t\t
      \      struct mail_user **mail_user_r,\n\t\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_context_activate
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 731
    functionName: mail_storage_service_io_activate_user
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 6
    functionsReached:
    - io_loop_context_activate
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_io_activate_user(struct mail_storage_service_user
      *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 736
    functionName: mail_storage_service_io_deactivate_user
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 4
    functionsReached:
    - io_loop_context_deactivate
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_io_deactivate_user(struct mail_storage_service_user
      *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:742,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 743
    functionName: mail_storage_service_io_activate_user_cb
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_set_failure_prefix
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_io_activate_user_cb(struct mail_storage_service_user
      *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:749,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 750
    functionName: mail_storage_service_io_deactivate_user_cb
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_set_failure_prefix
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_io_deactivate_user_cb(struct mail_storage_service_user
      *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:755,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:762,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:764,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - data
    - fields
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 770
    functionName: mail_storage_service_fields_var_expand
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 1
    functionsReached:
    - strncmp
    - strlen
    - t_strcut
    linkageType: ''
    returnType: char
    signature: "char *mail_storage_service_fields_var_expand(const char *data,\n\t\t\t\t\t\t
      \  const char *const *fields)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_var_expand_table
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - context
    - params_r
    argTypes:
    - void*
    - struct var_expand_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 783
    functionName: mail_storage_service_var_expand_callback
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - get_var_expand_table
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_var_expand_callback(void *context,\n\t\t\t\t\t
      struct var_expand_params *params_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 785
    functionDepth: 1
    functionLinenumber: 785
    functionLinenumberEnd: 790
    functionName: mail_storage_service_user_get_log_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      mail_storage_service_user_get_log_prefix(struct mail_storage_service_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 796
    functionName: mail_storage_service_user_get_event
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      mail_storage_service_user_get_event(const struct mail_storage_service_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 802
    functionName: mail_storage_service_user_get_username
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      mail_storage_service_user_get_username(const struct mail_storage_service_user
      *user)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init_log_with_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:813,1
    - Dst: event_replace_log_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:815,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:817,1
    - Dst: i_set_failure_send_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:818,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 804
    functionDepth: 3
    functionLinenumber: 804
    functionLinenumberEnd: 819
    functionName: mail_storage_service_init_log
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_set_failure_send_prefix
    - event_replace_log_prefix
    - master_service_init_log_with_prefix
    - master_service_get_client_limit
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_init_log(struct mail_storage_service_ctx
      *ctx,\n\t\t\t      struct mail_storage_service_user *user)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:825,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:829,1
    - Dst: DOC_LINK
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:835,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:837,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:842,1
    - Dst: i_sleep_usecs
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:846,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - old_time
    - new_time
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 848
    functionName: mail_storage_service_time_moved
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_error
    - timeval_diff_usecs
    - i_fatal
    - DOC_LINK
    - i_warning
    - i_sleep_usecs
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_time_moved(const struct timeval *old_time,\n\t\t\t\tconst
      struct timeval *new_time)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_version_string
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:858,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:859,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:860,1
    - Dst: getuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:866,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:869,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:872,1
    - Dst: io_loop_set_time_moved_callback
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:873,1
    - Dst: mail_storage_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:876,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:878,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:879,1
    - Dst: master_service_get_configured_name
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:887,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:889,1
    - Dst: master_service_init_log_with_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:894,1
    - Dst: dict_drivers_register_builtin
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:895,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - service
    - flags
    argTypes:
    - struct master_service*
    - enum mail_storage_service_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 850
    functionDepth: 3
    functionLinenumber: 850
    functionLinenumberEnd: 897
    functionName: mail_storage_service_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 7
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - io_loop_set_time_moved_callback
    - p_new
    - master_service_init_log_with_prefix
    - ENUM_NEGATE
    - getuid
    - umask
    - i_fatal
    - dict_drivers_register_builtin
    - master_service_get_configured_name
    - mail_storage_init
    - master_service_get_version_string
    - p_strdup_printf
    linkageType: ''
    returnType: struct mail_storage_service_ctx
    signature: "struct mail_storage_service_ctx *\nmail_storage_service_init(struct
      master_service *service,\n\t\t\t  enum mail_storage_service_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_service_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 904
    functionName: mail_storage_service_get_auth_conn
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct auth_master_connection
    signature: 'struct auth_master_connection *

      mail_storage_service_get_auth_conn(struct mail_storage_service_ctx *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:912,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 919
    functionName: mail_storage_service_input_get_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    linkageType: ''
    returnType: enum mail_storage_service_flags
    signature: "enum mail_storage_service_flags mail_storage_service_input_get_flags(struct
      mail_storage_service_ctx *ctx,\n\t\t\t\t     const struct mail_storage_service_input
      *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:924,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - conn
    argTypes:
    - struct mail_storage_service_ctx*
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 929
    functionName: mail_storage_service_set_auth_conn
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_set_auth_conn(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\t\tstruct auth_master_connection *conn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_set_auth_conn
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:944,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:945,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - user_set
    - service_flags
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_user_settings*
    - enum mail_storage_service_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 931
    functionDepth: 2
    functionLinenumber: 931
    functionLinenumberEnd: 946
    functionName: mail_storage_service_first_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_set_auth_conn
    - auth_master_init
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_first_init(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\tconst struct mail_user_settings *user_set,\n\t\t\t\tenum mail_storage_service_flags
      service_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:955,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:956,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:961,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:963,1
    - Dst: module_dir_try_load_missing
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:968,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:970,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - user_set
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_user_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 948
    functionDepth: 2
    functionLinenumber: 948
    functionLinenumberEnd: 972
    functionName: mail_storage_service_load_modules
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_zero
    - master_service_get_name
    - module_dir_try_load_missing
    - array_is_empty
    - settings_boollist_get
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_load_modules(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\t  const struct mail_user_settings *user_set,\n\t\t\t\t  const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 974
    functionDepth: 0
    functionLinenumber: 974
    functionLinenumberEnd: 987
    functionName: extra_field_key_cmp_p
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int extra_field_key_cmp_p(const char *const *s1, const char *const
      *s2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:993,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:994,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:994,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:997,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:999,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1000,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1002,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1002,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1002,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1003,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1003,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1004,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - pool
    - prefix
    argTypes:
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 989
    functionDepth: 1
    functionLinenumber: 989
    functionLinenumberEnd: 1006
    functionName: mail_storage_service_generate_session_id
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - i_assert
    - str_data
    - str_len
    - strlen
    - guid_128_generate
    - base64_encode
    - str_truncate
    - MAX_BASE64_ENCODED_SIZE
    - str_new
    linkageType: ''
    returnType: char
    signature: 'char *

      mail_storage_service_generate_session_id(pool_t pool, const char *prefix)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: restrict_access_get_current_chroot
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1018,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1022,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1023,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1024,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1031,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1033,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1036,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1043,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1046,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1047,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1049,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1008
    functionDepth: 3
    functionLinenumber: 1008
    functionLinenumberEnd: 1052
    functionName: mail_storage_service_update_chroot
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - strcmp
    - restrict_access_get_current_chroot
    - strlen
    - t_strndup
    - settings_override
    - strncmp
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_update_chroot(struct mail_storage_service_user
      *user)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_input_get_flags
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1070,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1073,1
    - Dst: mail_storage_service_seteuid_root
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1078,1
    - Dst: settings_instance_dup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1085,1
    - Dst: settings_instance_new
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1087,1
    - Dst: master_service_get_settings_root
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1088,1
    - Dst: master_service_init_log_with_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1096,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1104,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1105,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1115,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1117,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1119,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1121,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1122,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1127,1
    - Dst: mail_storage_service_first_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1130,1
    - Dst: mail_storage_service_load_modules
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1132,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1133,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1134,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1135,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1139,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1142,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1145,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1147,1
    - Dst: mail_storage_service_generate_session_id
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1148,1
    - Dst: event_add_fields
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1154,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1162,1
    - Dst: service_auth_userdb_lookup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1165,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1169,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1170,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1171,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1172,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1173,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1176,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1182,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1189,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1190,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1192,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1196,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1207,1
    - Dst: auth_user_fields_parse
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1212,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1215,1
    - Dst: user_reply_handle
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1216,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1218,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1224,1
    - Dst: mail_storage_service_add_code_overrides
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1230,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1234,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1235,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1245,1
    - Dst: mail_storage_service_update_chroot
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1249,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1251,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1253,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1257,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1261,1
    - Dst: mail_storage_service_load_modules
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1265,1
    - Dst: mail_storage_service_user_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1272,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1276,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1277,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 115
    argCount: 5
    argNames:
    - ctx
    - input
    - update_log_prefix
    - user_r
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_input*
    - bool
    - struct mail_storage_service_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1054
    functionDepth: 6
    functionLinenumber: 1054
    functionLinenumberEnd: 1281
    functionName: mail_storage_service_lookup_real
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - event_unref
    - p_array_init
    - mail_storage_service_seteuid_root
    - t_strdup_printf
    - array_not_empty
    - pool_unref
    - mail_storage_service_update_chroot
    - settings_override
    - service_auth_userdb_lookup
    - auth_user_fields_parse
    - mail_storage_service_user_unref
    - p_new
    - p_strarray_dup
    - mail_storage_service_add_code_overrides
    - event_set_ptr
    - event_add_str
    - event_set_forced_debug
    - event_create
    - geteuid
    - master_service_init_log_with_prefix
    - settings_instance_new
    - mail_storage_service_load_modules
    - mail_storage_service_first_init
    - settings_instance_free
    - pool_alloconly_create
    - master_service_get_settings_root
    - settings_instance_dup
    - event_add_fields
    - settings_free
    - i_set_failure_prefix
    - mail_storage_service_generate_session_id
    - user_reply_handle
    - array_sort
    - mail_storage_service_input_get_flags
    - array_is_created
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_lookup_real(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\t const struct mail_storage_service_input *input,\n\t\t\t\t bool
      update_log_prefix,\n\t\t\t\t struct mail_storage_service_user **user_r,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1288,1
    - Dst: i_get_failure_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1288,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1292,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1300,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1301,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1302,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1304,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1304,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1310,1
    - Dst: mail_storage_service_lookup_real
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - input
    - user_r
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_input*
    - struct mail_storage_service_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1283
    functionDepth: 7
    functionLinenumber: 1283
    functionLinenumberEnd: 1318
    functionName: mail_storage_service_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 1
    functionsReached:
    - master_service_get_name
    - i_get_failure_prefix
    - mail_storage_service_lookup_real
    - t_strdup_printf
    - i_set_failure_prefix
    - i_strdup
    - net_ip2addr
    - io_loop_get_current_context
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_lookup(struct mail_storage_service_ctx *ctx,\n\t\t\t\tconst
      struct mail_storage_service_input *input,\n\t\t\t\tstruct mail_storage_service_user
      **user_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: service_parse_privileges
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1340,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1345,1
    - Dst: mail_storage_service_init_log
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1351,1
    - Dst: io_loop_context_new
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1356,1
    - Dst: io_loop_context_add_callbacks
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1357,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1362,1
    - Dst: service_drop_privileges
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1365,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1368,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1370,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1375,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1380,1
    - Dst: mail_storage_service_init_post
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1382,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1385,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1387,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1390,1
    - Dst: master_service_set_current_user
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1391,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 5
    argNames:
    - ctx
    - user
    - session_id_suffix
    - mail_user_r
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_user*
    - char*
    - struct mail_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1324
    functionDepth: 4
    functionLinenumber: 1324
    functionLinenumberEnd: 1395
    functionName: mail_storage_service_next_real
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_io_deactivate_user
    - mail_storage_service_init_post
    - mail_storage_service_init_log
    - service_drop_privileges
    - io_loop_context_switch
    - master_service_get_client_limit
    - t_strdup_printf
    - io_loop_context_new
    - restrict_access_allow_coredumps
    - service_parse_privileges
    - io_loop_context_add_callbacks
    - module_dir_init
    - mail_user_unref
    - master_service_set_current_user
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_next_real(struct mail_storage_service_ctx
      *ctx,\n\t\t\t       struct mail_storage_service_user *user,\n\t\t\t       const
      char *session_id_suffix,\n\t\t\t       struct mail_user **mail_user_r,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_next_with_session_suffix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ctx
    - user
    - mail_user_r
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_user*
    - struct mail_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1397
    functionDepth: 1
    functionLinenumber: 1397
    functionLinenumberEnd: 1407
    functionName: mail_storage_service_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 1
    functionsReached:
    - mail_storage_service_next_with_session_suffix
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_next(struct mail_storage_service_ctx *ctx,\n\t\t\t
      \     struct mail_storage_service_user *user,\n\t\t\t      struct mail_user
      **mail_user_r,\n\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1415,1
    - Dst: i_get_failure_prefix
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1415,1
    - Dst: mail_storage_service_next_real
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ctx
    - user
    - session_id_suffix
    - mail_user_r
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_user*
    - char*
    - struct mail_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1409
    functionDepth: 5
    functionLinenumber: 1409
    functionLinenumberEnd: 1422
    functionName: mail_storage_service_next_with_session_suffix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 2
    functionsReached:
    - i_strdup
    - mail_storage_service_next_real
    - i_get_failure_prefix
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_next_with_session_suffix(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\t\t\t  struct mail_storage_service_user *user,\n\t\t\t\t\t\t  const
      char *session_id_suffix,\n\t\t\t\t\t\t  struct mail_user **mail_user_r,\n\t\t\t\t\t\t
      \ const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: service_parse_privileges
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1434,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1435,1
    - Dst: service_drop_privileges
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1436,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1438,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1429
    functionDepth: 4
    functionLinenumber: 1429
    functionLinenumberEnd: 1439
    functionName: mail_storage_service_restrict_setenv
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - service_parse_privileges
    - i_fatal
    - service_drop_privileges
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_restrict_setenv(struct mail_storage_service_user
      *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_lookup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1449,1
    - Dst: mail_storage_service_next
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1455,1
    - Dst: mail_storage_service_user_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - input
    - mail_user_r
    - error_r
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_input*
    - struct mail_user**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1441
    functionDepth: 8
    functionLinenumber: 1441
    functionLinenumberEnd: 1458
    functionName: mail_storage_service_lookup_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 8
    functionsReached:
    - mail_storage_service_lookup
    - mail_storage_service_next
    - mail_storage_service_user_unref
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_lookup_next(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\t     const struct mail_storage_service_input *input,\n\t\t\t\t
      \    struct mail_user **mail_user_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1460
    functionDepth: 1
    functionLinenumber: 1460
    functionLinenumberEnd: 1464
    functionName: mail_storage_service_user_ref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_user_ref(struct mail_storage_service_user
      *user)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1472,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1477,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1478,1
    - Dst: io_loop_context_remove_callbacks
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1479,1
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1482,1
    - Dst: master_service_set_current_user
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1486,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1488,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1489,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1490,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1491,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - _user
    argTypes:
    - struct mail_storage_service_user**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1466
    functionDepth: 3
    functionLinenumber: 1466
    functionLinenumberEnd: 1492
    functionName: mail_storage_service_user_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 3
    functionsReached:
    - settings_instance_free
    - io_loop_context_unref
    - mail_storage_service_io_deactivate_user
    - event_unref
    - settings_free
    - pool_unref
    - master_service_set_current_user
    - io_loop_get_current_context
    - i_assert
    - io_loop_context_remove_callbacks
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_user_unref(struct mail_storage_service_user
      **_user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1498,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1499,1
    - Dst: settings_instance_dup
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1502,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1503,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1503,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1504,1
    - Dst: io_loop_context_new
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1506,1
    - Dst: io_loop_context_add_callbacks
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1507,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1511,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1494
    functionDepth: 3
    functionLinenumber: 1494
    functionLinenumberEnd: 1514
    functionName: mail_storage_service_user_dup
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - event_create
    - pool_ref
    - settings_instance_dup
    - io_loop_context_switch
    - io_loop_context_new
    - event_set_ptr
    - event_get_parent
    - io_loop_context_add_callbacks
    - p_memdup
    linkageType: ''
    returnType: struct mail_storage_service_user
    signature: 'struct mail_storage_service_user *

      mail_storage_service_user_dup(const struct mail_storage_service_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1516
    functionDepth: 0
    functionLinenumber: 1516
    functionLinenumberEnd: 1520
    functionName: mail_storage_service_user_get_userdb_fields
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *const *

      mail_storage_service_user_get_userdb_fields(struct mail_storage_service_user
      *user)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_event
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1532,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1533,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1535,1
    - Dst: mail_storage_service_first_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1537,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1538,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_storage_service_ctx*
    - struct mail_storage_service_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1522
    functionDepth: 3
    functionLinenumber: 1522
    functionLinenumberEnd: 1539
    functionName: mail_storage_service_init_settings
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 1
    functionsReached:
    - i_fatal
    - settings_free
    - master_service_get_event
    - mail_storage_service_first_init
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_init_settings(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\t\tconst struct mail_storage_service_input *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_user_list_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1547,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_service_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1541
    functionDepth: 9
    functionLinenumber: 1541
    functionLinenumberEnd: 1551
    functionName: mail_storage_service_all_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - auth_master_user_list_deinit
    - auth_master_deinit
    linkageType: ''
    returnType: int
    signature: int mail_storage_service_all_iter_deinit(struct mail_storage_service_ctx
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_all_iter_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1558,1
    - Dst: mail_storage_service_init_settings
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1559,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1566,1
    - Dst: auth_master_get_socket_path
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1566,1
    - Dst: auth_master_user_list_init
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - user_mask_hint
    argTypes:
    - struct mail_storage_service_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1553
    functionDepth: 10
    functionLinenumber: 1553
    functionLinenumberEnd: 1570
    functionName: mail_storage_service_all_init_mask
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_init_settings
    - auth_master_init
    - mail_storage_service_all_iter_deinit
    - auth_master_user_list_init
    - auth_master_get_socket_path
    linkageType: ''
    returnType: void
    signature: "void mail_storage_service_all_init_mask(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\t\tconst char *user_mask_hint)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1575,1
    - Dst: auth_master_user_list_next
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1577,1
    - Dst: mail_storage_service_all_iter_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - username_r
    argTypes:
    - struct mail_storage_service_ctx*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1572
    functionDepth: 10
    functionLinenumber: 1572
    functionLinenumberEnd: 1581
    functionName: mail_storage_service_all_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_storage_service_all_iter_deinit
    - auth_master_user_list_next
    linkageType: ''
    returnType: int
    signature: "int mail_storage_service_all_next(struct mail_storage_service_ctx
      *ctx,\n\t\t\t\t  const char **username_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_all_iter_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1588,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1592,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1595,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1597,1
    - Dst: mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1598,1
    - Dst: dict_drivers_unregister_builtin
      Src: /src/dovecot/src/lib-storage/mail-storage-service.c:1599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_storage_service_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1583
    functionDepth: 10
    functionLinenumber: 1583
    functionLinenumberEnd: 1600
    functionName: mail_storage_service_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 6
    functionsReached:
    - auth_master_deinit
    - mail_storage_deinit
    - pool_unref
    - mail_storage_service_all_iter_deinit
    - module_dir_unload
    - dict_drivers_unregister_builtin
    linkageType: ''
    returnType: void
    signature: void mail_storage_service_deinit(struct mail_storage_service_ctx **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1602
    functionDepth: 0
    functionLinenumber: 1602
    functionLinenumberEnd: 1606
    functionName: mail_storage_service_user_get_set
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mail_user_settings
    signature: 'struct mail_user_settings *

      mail_storage_service_user_get_set(struct mail_storage_service_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1608
    functionDepth: 0
    functionLinenumber: 1608
    functionLinenumberEnd: 1612
    functionName: mail_storage_service_user_get_input
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: struct mail_storage_service_input
    signature: 'struct mail_storage_service_input *

      mail_storage_service_user_get_input(struct mail_storage_service_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1614
    functionDepth: 0
    functionLinenumber: 1614
    functionLinenumberEnd: 1618
    functionName: mail_storage_service_user_get_settings_instance
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: struct settings_instance
    signature: 'struct settings_instance *

      mail_storage_service_user_get_settings_instance(struct mail_storage_service_user
      *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1620
    functionDepth: 0
    functionLinenumber: 1620
    functionLinenumberEnd: 1624
    functionName: mail_storage_service_user_get_service_ctx
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct mail_storage_service_ctx
    signature: 'struct mail_storage_service_ctx *

      mail_storage_service_user_get_service_ctx(struct mail_storage_service_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1626
    functionDepth: 0
    functionLinenumber: 1626
    functionLinenumberEnd: 1629
    functionName: mail_storage_service_user_get_pool
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pool_t
    signature: pool_t mail_storage_service_user_get_pool(struct mail_storage_service_user
      *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_service_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1631
    functionDepth: 0
    functionLinenumber: 1631
    functionLinenumberEnd: 1635
    functionName: mail_storage_service_get_log_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      mail_storage_service_get_log_prefix(struct mail_storage_service_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_service_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1641
      start: 1637
    functionDepth: 0
    functionLinenumber: 1637
    functionLinenumberEnd: 1641
    functionName: mail_storage_service_get_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-service.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mail_storage_service_flags
    signature: enum mail_storage_service_flags mail_storage_service_get_flags(struct
      mail_storage_service_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_tree_init_size
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - separator
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: mailbox_tree_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 1
    functionsReached:
    - mailbox_tree_init_size
    linkageType: ''
    returnType: struct mailbox_tree_context
    signature: struct mailbox_tree_context *mailbox_tree_init(char separator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:41,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:43,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - separator
    - mailbox_node_size
    argTypes:
    - char
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: mailbox_tree_init_size
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct mailbox_tree_context
    signature: 'struct mailbox_tree_context *

      mailbox_tree_init_size(char separator, unsigned int mailbox_node_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:57,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _tree
    argTypes:
    - struct mailbox_tree_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: mailbox_tree_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 2
    functionsReached:
    - i_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void mailbox_tree_deinit(struct mailbox_tree_context **_tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tree
    - separator
    argTypes:
    - struct mailbox_tree_context*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: mailbox_tree_set_separator
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_tree_set_separator(struct mailbox_tree_context *tree,\n\t\t\t\tchar
      separator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct mailbox_tree_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: mailbox_tree_set_parents_nonexistent
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mailbox_tree_set_parents_nonexistent(struct mailbox_tree_context
      *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct mailbox_tree_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: mailbox_tree_clear
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - p_clear
    linkageType: ''
    returnType: void
    signature: void mailbox_tree_clear(struct mailbox_tree_context *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct mailbox_tree_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: mailbox_tree_get_pool
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pool_t
    signature: pool_t mailbox_tree_get_pool(struct mailbox_tree_context *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct mailbox_tree_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: mailbox_tree_get_root
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox_node
    signature: struct mailbox_node *mailbox_tree_get_root(struct mailbox_tree_context
      *tree)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:101,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:103,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:108,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:108,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:113,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:114,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:115,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:119,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:130,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:132,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 38
    argCount: 4
    argNames:
    - tree
    - path
    - create
    - created_r
    argTypes:
    - struct mailbox_tree_context*
    - char*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 149
    functionName: mailbox_tree_traverse
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - p_strdup
    - strlen
    - t_strdup_printf
    - str_begins_icase
    - str_truncate
    - str_append_data
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void mailbox_tree_traverse(struct mailbox_tree_context *tree, const
      char *path,\n\t\t      bool create, bool *created_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_tree_traverse
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tree
    - path
    - created_r
    argTypes:
    - struct mailbox_tree_context*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 160
    functionName: mailbox_tree_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - mailbox_tree_traverse
    linkageType: ''
    returnType: struct mailbox_node
    signature: "struct mailbox_node *\nmailbox_tree_get(struct mailbox_tree_context
      *tree, const char *path,\n\t\t bool *created_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:174,1
    - Dst: mailbox_tree_traverse
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tree
    - path
    argTypes:
    - struct mailbox_tree_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 178
    functionName: mailbox_tree_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 3
    functionsReached:
    - mailbox_tree_traverse
    - i_assert
    linkageType: ''
    returnType: struct mailbox_node
    signature: 'struct mailbox_node *

      mailbox_tree_lookup(struct mailbox_tree_context *tree, const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:188,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:192,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - tree
    - root
    - flags_mask
    argTypes:
    - struct mailbox_tree_context*
    - struct mailbox_node*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 197
    functionName: mailbox_tree_iterate_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - str_new
    - i_new
    linkageType: ''
    returnType: struct mailbox_tree_iterate_context
    signature: "struct mailbox_tree_iterate_context *\nmailbox_tree_iterate_init(struct
      mailbox_tree_context *tree,\n\t\t\t  struct mailbox_node *root, unsigned int
      flags_mask)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:207,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:208,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:214,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:217,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:219,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:231,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_tree_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 235
    functionName: mailbox_tree_iterate_set_next_node
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - array_delete
    - str_len
    - array_push_back
    - array_get
    - strlen
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mailbox_tree_iterate_set_next_node(struct mailbox_tree_iterate_context
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:248,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:252,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:256,1
    - Dst: mailbox_tree_iterate_set_next_node
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:258,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:261,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - path_r
    argTypes:
    - struct mailbox_tree_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 263
    functionName: mailbox_tree_iterate_next
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_append_c
    - mailbox_tree_iterate_set_next_node
    - str_truncate
    - str_append
    linkageType: ''
    returnType: struct mailbox_node
    signature: "struct mailbox_node *\nmailbox_tree_iterate_next(struct mailbox_tree_iterate_context
      *ctx,\n\t\t\t  const char **path_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:272,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:273,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_tree_iterate_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 275
    functionName: mailbox_tree_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void mailbox_tree_iterate_deinit(struct mailbox_tree_iterate_context
      **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:285,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:286,1
    - Dst: mailbox_tree_dup_branch
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - dest_tree
    - dest_parent
    - src
    argTypes:
    - struct mailbox_tree_context*
    - struct mailbox_node*
    - struct mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 295
    functionName: mailbox_tree_dup_branch
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - mailbox_tree_dup_branch
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void mailbox_tree_dup_branch(struct mailbox_tree_context *dest_tree,\n\t\t\tstruct
      mailbox_node *dest_parent,\n\t\t\tconst struct mailbox_node *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:302,1
    - Dst: mailbox_tree_init_size
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:304,1
    - Dst: mailbox_tree_dup_branch
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct mailbox_tree_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 297
    functionDepth: 2
    functionLinenumber: 297
    functionLinenumberEnd: 307
    functionName: mailbox_tree_dup
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mailbox_tree_dup_branch
    - mailbox_tree_init_size
    linkageType: ''
    returnType: struct mailbox_tree_context
    signature: struct mailbox_tree_context *mailbox_tree_dup(struct mailbox_tree_context
      *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct mailbox_node**
    - struct mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 313
    functionName: mailbox_node_name_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int mailbox_node_name_cmp(struct mailbox_node *const *node1,\n\t\t\t\t
      struct mailbox_node *const *node2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:324,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:326,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:327,1
    - Dst: mailbox_tree_sort_branch
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - nodes
    - tmparr
    argTypes:
    - struct mailbox_node**
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 340
    functionName: mailbox_tree_sort_branch
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 1
    functionsReached:
    - array_sort
    - mailbox_tree_sort_branch
    - array_clear
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void mailbox_tree_sort_branch(struct mailbox_node **nodes,\n\t\t\t\t
      \    ARRAY_TYPE(mailbox_node) *tmparr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 334
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 114
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(tmparr, node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:349,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:351,1
    - Dst: mailbox_tree_sort_branch
      Src: /src/dovecot/src/lib-storage/mailbox-tree.c:352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct mailbox_tree_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 353
    functionName: mailbox_tree_sort
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-tree.c
    functionUses: 0
    functionsReached:
    - mailbox_tree_sort_branch
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: void mailbox_tree_sort(struct mailbox_tree_context *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:34,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:35,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:36,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:37,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - list_r
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: test_init_list
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-list.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_new
    - event_create
    linkageType: ''
    returnType: void
    signature: void test_init_list(struct mailbox_list *list_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_clear_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:43,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:44,1
    - Dst: mailbox_list_clear_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:45,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:46,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:46,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:47,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:49,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: test_deinit_list
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_clear_error
    - event_unref
    - array_count
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void test_deinit_list(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:60,1
    - Dst: test_init_list
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:61,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:65,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:65,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:68,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:68,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:71,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:74,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:76,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:76,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:79,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:79,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:79,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:82,1
    - Dst: mailbox_list_clear_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:86,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:86,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:89,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:89,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:92,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:95,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:96,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:98,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:98,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:101,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:101,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:104,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:109,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:109,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:112,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:112,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:115,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:118,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:119,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:121,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:121,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:124,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:124,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:127,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:130,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:131,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:132,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:133,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:134,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:134,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:137,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:137,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:140,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:143,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:144,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:145,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:147,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:147,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:149,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:150,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:151,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:152,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:154,1
    - Dst: mailbox_list_clear_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:158,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:158,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:160,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:161,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:161,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:164,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:168,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:169,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:170,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:171,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:173,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:173,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:173,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:176,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:176,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:176,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:178,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:179,1
    - Dst: test_deinit_list
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:181,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 183
    functionName: test_mailbox_list_errors
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_last_internal_error
    - test_init_list
    - mailbox_list_clear_error
    - test_expect_no_more_errors
    - mailbox_list_set_error
    - strstr
    - str_begins
    - mailbox_list_set_critical
    - test_expect_error_string
    - test_end
    - mailbox_list_set_internal_error
    - test_assert
    - test_deinit_list
    - mailbox_list_get_last_error
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mailbox_list_errors(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:191,1
    - Dst: test_init_list
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:192,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:195,1
    - Dst: mailbox_list_last_error_push
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:196,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:199,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:200,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:201,1
    - Dst: mailbox_list_last_error_push
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:202,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:205,1
    - Dst: mailbox_list_last_error_push
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:206,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:209,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:210,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:211,1
    - Dst: mailbox_list_last_error_push
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:212,1
    - Dst: mailbox_list_clear_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:215,1
    - Dst: mailbox_list_last_error_pop
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:218,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:219,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:219,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:219,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:222,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:222,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:222,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:225,1
    - Dst: mailbox_list_last_error_pop
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:229,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:229,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:232,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:232,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:232,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:234,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:235,1
    - Dst: mailbox_list_last_error_pop
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:238,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:239,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:239,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:239,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:241,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:242,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:242,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:242,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:244,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:245,1
    - Dst: mailbox_list_last_error_pop
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:248,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:249,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:249,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:249,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:252,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:252,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:255,1
    - Dst: test_deinit_list
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:257,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 259
    functionName: test_mailbox_list_last_error_push_pop
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_clear_error
    - test_expect_no_more_errors
    - test_init_list
    - strcmp
    - mailbox_list_get_last_internal_error
    - mailbox_list_set_error
    - mailbox_list_set_critical
    - test_expect_error_string
    - test_end
    - mailbox_list_last_error_push
    - mailbox_list_last_error_pop
    - test_assert
    - mailbox_list_get_last_error
    - test_deinit_list
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mailbox_list_last_error_push_pop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 265
    functionName: test_mailbox_list_get_hierarchy_sep
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char test_mailbox_list_get_hierarchy_sep(struct mailbox_list *list
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - list
    - test
    - mutf7
    argTypes:
    - struct mailbox_list*
    - struct test_mailbox_list_name*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 290
    functionName: test_maibox_list_name_init
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-list.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: "void test_maibox_list_name_init(struct mailbox_list *list,\n\t\t\t
      \  const struct test_mailbox_list_name *test,\n\t\t\t   bool mutf7)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:483,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:484,1
    - Dst: test_maibox_list_name_init
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:486,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:488,1
    - Dst: mailbox_list_default_get_storage_name
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:488,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:492,1
    - Dst: mailbox_list_default_get_vname
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:492,1
    - Dst: test_maibox_list_name_init
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:497,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:499,1
    - Dst: mailbox_list_default_get_storage_name
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:499,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:503,1
    - Dst: mailbox_list_default_get_vname
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:503,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:508,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 292
    functionDepth: 4
    functionLinenumber: 292
    functionLinenumberEnd: 509
    functionName: test_mailbox_list_get_names
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_default_get_vname
    - test_begin
    - test_end
    - mailbox_list_default_get_storage_name
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_maibox_list_name_init
    linkageType: ''
    returnType: void
    signature: void test_mailbox_list_get_names(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-storage/test-mailbox-list.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 511
    functionDepth: 7
    functionLinenumber: 511
    functionLinenumberEnd: 520
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-list.c
    functionUses: 7
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: T_MAIL_ERR_MAILBOX_NOT_FOUND
    functionSourceFile: /src/dovecot/src/lib-storage/mail-error.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: T_MAIL_ERR_MAILBOX_NOT_FOUND(name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c:27,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c:32,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - _parser
    - key_r
    argTypes:
    - struct mail_search_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 46
    functionName: cmdline_search_parse_key
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int cmdline_search_parse_key(struct mail_search_parser *_parser,\n\t\t\t\t
      \   const char **key_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _parser
    - value_r
    argTypes:
    - struct mail_search_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 62
    functionName: cmdline_search_parse_string
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int cmdline_search_parse_string(struct mail_search_parser *_parser,\n\t\t\t\t
      \      const char **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _parser
    - str
    argTypes:
    - struct mail_search_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 78
    functionName: cmdline_search_parse_skip_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool cmdline_search_parse_skip_next(struct mail_search_parser *_parser,\n\t\t\t
      \      const char *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c:92,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 98
    functionName: mail_search_parser_init_cmdline
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_search_parser
    signature: 'struct mail_search_parser *

      mail_search_parser_init_cmdline(const char *const args[])'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:37,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:38,1
    - Dst: mail_search_register_add_default
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 45
    functionName: mail_search_mime_register_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_search_register_add_default
    - i_new
    linkageType: ''
    returnType: struct mail_search_mime_register
    signature: 'struct mail_search_mime_register *

      mail_search_mime_register_init(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:56,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 58
    functionName: mail_search_mime_register_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 1
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_search_mime_register_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_register_init
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:65,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - arg
    - count
    argTypes:
    - struct mail_search_mime_register_arg*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 69
    functionName: mail_search_mime_register_add
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - array_append
    - mail_search_mime_register_init
    linkageType: ''
    returnType: void
    signature: "void mail_search_mime_register_add(\n\t\t\t      const struct mail_search_mime_register_arg
      *arg,\n\t\t\t      unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - struct mail_search_mime_register_arg*
    - struct mail_search_mime_register_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: mail_search_mime_register_arg_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int mail_search_mime_register_arg_cmp(\n\tconst struct mail_search_mime_register_arg
      *arg1,\n\tconst struct mail_search_mime_register_arg *arg2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_register_init
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:83,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:86,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - count_r
    argTypes:
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: mail_search_mime_register_get
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - array_sort
    - array_get
    - mail_search_mime_register_init
    linkageType: ''
    returnType: struct mail_search_mime_register_arg
    signature: 'struct mail_search_mime_register_arg *

      mail_search_mime_register_get(unsigned int *count_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_register_init
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:98,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:101,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: mail_search_mime_register_find
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - array_sort
    - array_bsearch
    - mail_search_mime_register_init
    linkageType: ''
    returnType: struct mail_search_mime_register_arg
    signature: 'struct mail_search_mime_register_arg *

      mail_search_mime_register_find(const char *key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 123
    functionName: mail_search_mime_not
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_build_key
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_not(struct mail_search_mime_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:131,1
    - Dst: mail_search_mime_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:135,1
    - Dst: mail_search_parse_skip_next
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:141,1
    - Dst: mail_search_mime_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 146
    functionName: mail_search_mime_or
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_build_new
    - mail_search_parse_skip_next
    - mail_search_mime_build_key
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_or(struct mail_search_mime_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _func
    - ','
    - _type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: CALLBACK_STR
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_STR(_func, _type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:162,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:163,1
    - Dst: imap_parse_date
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_mime_build_context*
    - enum mail_search_mime_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 170
    functionName: arg_new_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_build_new
    - mail_search_parse_string
    - imap_parse_date
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: "struct mail_search_mime_arg *\narg_new_date(struct mail_search_mime_build_context
      *ctx,\n\t     enum mail_search_mime_arg_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _func
    - ','
    - _type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 178
    functionName: CALLBACK_DATE
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_DATE(_func, _type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:190,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:195,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:196,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:198,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:206,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:211,1
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 219
    functionName: mail_search_mime_size
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - str_to_uoff
    - mail_search_parse_string
    - mail_search_mime_build_new
    - mail_search_parse_key
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_size(struct mail_search_mime_build_context *ctx)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:249,1
    - Dst: mail_search_build_get_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:251,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:253,1
    - Dst: mail_search_build_get_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:255,1
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:258,1
    - Dst: str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:259,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_mime_build_context*
    - enum mail_search_mime_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 263
    functionName: arg_new_field
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - str_ucase
    - mail_search_build_get_utf8
    - mail_search_parse_string
    - mail_search_mime_build_new
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: "struct mail_search_mime_arg *\narg_new_field(struct mail_search_mime_build_context
      *ctx,\n\tenum mail_search_mime_arg_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg_new_field
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 270
    functionName: mail_search_mime_param
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - arg_new_field
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_param(struct mail_search_mime_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg_new_field
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 277
    functionName: mail_search_mime_header
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - arg_new_field
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_header(struct mail_search_mime_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_build_str
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:285,1
    - Dst: mail_search_build_get_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:289,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_mime_build_context*
    - enum mail_search_mime_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 293
    functionName: arg_new_body
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_build_str
    - mail_search_build_get_utf8
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: "struct mail_search_mime_arg *\narg_new_body(struct mail_search_mime_build_context
      *ctx,\n\t     enum mail_search_mime_arg_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _func
    - ','
    - _type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 301
    functionName: CALLBACK_BODY
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_BODY(_func, _type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:310,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:315,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:316,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:317,1
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:321,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:323,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:325,1
    - Dst: arg_new_field
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:326,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 304
    functionDepth: 3
    functionLinenumber: 304
    functionLinenumberEnd: 332
    functionName: mail_search_mime_disposition
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - t_str_ucase
    - mail_search_parse_string
    - mail_search_mime_build_new
    - mail_search_parse_key
    - arg_new_field
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_disposition(struct mail_search_mime_build_context *ctx)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:342,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:347,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:348,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:350,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:358,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:363,1
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:368,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 371
    functionName: mail_search_mime_depth
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - mail_search_parse_string
    - mail_search_mime_build_new
    - str_to_uint
    - mail_search_parse_key
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_depth(struct mail_search_mime_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:380,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:385,1
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:390,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 394
    functionName: mail_search_mime_index
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_build_new
    - str_to_uint
    - mail_search_parse_string
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_index(struct mail_search_mime_build_context *ctx)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:403,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:408,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:409,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:411,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:413,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:415,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:422,1
    - Dst: mail_search_build_get_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:427,1
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:432,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 435
    functionName: mail_search_mime_filename
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - mail_search_build_get_utf8
    - mail_search_parse_string
    - mail_search_mime_build_new
    - mail_search_parse_key
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_filename(struct mail_search_mime_build_context *ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:442,1
    - Dst: mail_search_mime_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 452
    functionName: mail_search_mime_parent
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_build_new
    - mail_search_mime_build_key
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_parent(struct mail_search_mime_build_context *ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:459,1
    - Dst: mail_search_mime_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 469
    functionName: mail_search_mime_child
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_build_new
    - mail_search_mime_build_key
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_child(struct mail_search_mime_build_context *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_mime_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 481
    functionName: mail_search_mime_exists
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_exists(struct mail_search_mime_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_register_add
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:545,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail-search-mime-register.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 542
    functionDepth: 3
    functionLinenumber: 542
    functionLinenumberEnd: 547
    functionName: mail_search_register_add_default
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    functionUses: 1
    functionsReached:
    - mail_search_mime_register_add
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void mail_search_register_add_default(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - box
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 714
    functionName: mailbox_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mailbox_notify_changes(box, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: mail_user_get_mail_max_size_base
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t mail_user_get_mail_max_size_base(struct mail_user *user ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_wait
      Src: /src/dovecot/src/lib-storage/mail-user.c:42,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/lib-storage/mail-user.c:43,1
    - Dst: mail_namespaces_deinit
      Src: /src/dovecot/src/lib-storage/mail-user.c:45,1
    - Dst: mail_storage_service_user_unref
      Src: /src/dovecot/src/lib-storage/mail-user.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 4
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: mail_user_deinit_base
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_user_unref
    - mail_namespaces_deinit
    - dict_deinit
    - dict_wait
    linkageType: ''
    returnType: void
    signature: void mail_user_deinit_base(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: mail_user_deinit_pre_base
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_user_deinit_pre_base(struct mail_user *user ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-storage/mail-user.c:60,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-user.c:61,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-user.c:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 64
    functionName: mail_user_add_event_fields
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - str_begins
    - event_add_str
    - t_split_key_value_eq
    linkageType: ''
    returnType: void
    signature: void mail_user_add_event_fields(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_var_expand_params
      Src: /src/dovecot/src/lib-storage/mail-user.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - params_r
    argTypes:
    - void*
    - struct var_expand_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: mail_user_var_expand_callback
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - mail_user_var_expand_params
    linkageType: ''
    returnType: void
    signature: void mail_user_var_expand_callback(void *context, struct var_expand_params
      *params_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_user_get_event
      Src: /src/dovecot/src/lib-storage/mail-user.c:79,1
    - Dst: mail_storage_service_user_get_username
      Src: /src/dovecot/src/lib-storage/mail-user.c:81,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user.c:82,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-user.c:84,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-user.c:85,1
    - Dst: mail_storage_service_user_ref
      Src: /src/dovecot/src/lib-storage/mail-user.c:89,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:90,1
    - Dst: mail_storage_service_user_get_set
      Src: /src/dovecot/src/lib-storage/mail-user.c:91,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lib-storage/mail-user.c:92,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-user.c:95,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-storage/mail-user.c:96,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-user.c:97,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-user.c:98,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-user.c:102,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-user.c:104,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-user.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - service_user
    argTypes:
    - struct mail_storage_service_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 112
    functionName: mail_user_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - master_service_get_name
    - p_new
    - event_create
    - p_array_init
    - event_add_category
    - event_set_ptr
    - mail_storage_service_user_get_event
    - mail_storage_service_user_get_set
    - event_add_str
    - i_assert
    - mail_storage_service_user_get_username
    - mail_storage_service_user_ref
    linkageType: ''
    returnType: struct mail_user
    signature: 'struct mail_user *

      mail_user_alloc(struct mail_storage_service_user *service_user)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user.c:116,1
    - Dst: hook_mail_user_created
      Src: /src/dovecot/src/lib-storage/mail-user.c:120,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:124,1
    - Dst: process_stat_read_start
      Src: /src/dovecot/src/lib-storage/mail-user.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - user
    - error_r
    argTypes:
    - struct mail_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 129
    functionName: mail_user_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 3
    functionsReached:
    - hook_mail_user_created
    - t_strdup
    - i_assert
    - process_stat_read_start
    linkageType: ''
    returnType: int
    signature: int mail_user_init(struct mail_user *user, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 136
    functionName: mail_user_ref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_user_ref(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: process_stat_read_finish
      Src: /src/dovecot/src/lib-storage/mail-user.c:143,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-storage/mail-user.c:145,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-user.c:159,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-storage/mail-user.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 160
    functionName: mail_user_session_finished
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - e_debug
    - process_stat_read_finish
    - struct event_passthrough*::event
    - event_create_passthrough
    linkageType: ''
    returnType: void
    signature: void mail_user_session_finished(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user.c:166,1
    - Dst: mail_user_session_finished
      Src: /src/dovecot/src/lib-storage/mail-user.c:176,1
    - Dst: struct mail_user*::v::deinit_pre
      Src: /src/dovecot/src/lib-storage/mail-user.c:181,1
    - Dst: struct mail_user*::v::deinit
      Src: /src/dovecot/src/lib-storage/mail-user.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _user
    argTypes:
    - struct mail_user**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 183
    functionName: mail_user_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 4
    functionsReached:
    - i_assert
    - mail_user_session_finished
    - struct mail_user*::v::deinit
    - struct mail_user*::v::deinit_pre
    linkageType: ''
    returnType: void
    signature: void mail_user_unref(struct mail_user **_user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user.c:191,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/lib-storage/mail-user.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 3
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: mail_user_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 13
    functionsReached:
    - i_assert
    - mail_user_unref
    linkageType: ''
    returnType: void
    signature: void mail_user_deinit(struct mail_user **user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_user*::v::get_mail_max_size
      Src: /src/dovecot/src/lib-storage/mail-user.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: mail_user_get_mail_max_size
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 2
    functionsReached:
    - struct mail_user*::v::get_mail_max_size
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t mail_user_get_mail_max_size(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-user.c:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - user
    - name
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 209
    functionName: mail_user_find
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct mail_user
    signature: struct mail_user *mail_user_find(struct mail_user *user, const char
      *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-user.c:218,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-user.c:222,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - conn
    - pool
    - src
    argTypes:
    - struct mail_user_connection_data*
    - pool_t
    - struct mail_user_connection_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 226
    functionName: mail_user_connection_init_from
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    linkageType: ''
    returnType: void
    signature: "void mail_user_connection_init_from(struct mail_user_connection_data
      *conn,\n\tpool_t pool, const struct mail_user_connection_data *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user.c:231,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:233,1
    - Dst: mail_user_connection_init_from
      Src: /src/dovecot/src/lib-storage/mail-user.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - user
    - service
    - conn
    argTypes:
    - struct mail_user*
    - char*
    - struct mail_user_connection_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 235
    functionName: mail_user_set_vars
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - i_assert
    - mail_user_connection_init_from
    linkageType: ''
    returnType: void
    signature: "void mail_user_set_vars(struct mail_user *user, const char *service,\n\t\t\tconst
      struct mail_user_connection_data *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-user.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 249
    functionName: mail_user_var_expand_func_home
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - mail_user_get_home
    linkageType: ''
    returnType: int
    signature: "int mail_user_var_expand_func_home(const char *data ATTR_UNUSED, const
      char **value_r,\n\t\t\t       void *context, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:259,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-storage/mail-user.c:259,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:261,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-storage/mail-user.c:261,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-user.c:266,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-user.c:270,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-user.c:302,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:303,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 310
    functionName: mail_user_var_expand_params
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 3
    functionsReached:
    - p_strdup
    - p_new
    - net_ip2addr
    - p_memdup
    - p_strdup_printf
    linkageType: ''
    returnType: struct var_expand_params
    signature: 'struct var_expand_params *

      mail_user_var_expand_params(struct mail_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_fields_var_expand
      Src: /src/dovecot/src/lib-storage/mail-user.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - data
    - value_r
    - context
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 320
    functionName: mail_user_var_expand_func_userdb
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_fields_var_expand
    linkageType: ''
    returnType: int
    signature: "int mail_user_var_expand_func_userdb(const char *data, const char
      **value_r,\n\t\t\t\t void *context, const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - user
    - home
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 326
    functionName: mail_user_set_home
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - p_strdup
    linkageType: ''
    returnType: void
    signature: void mail_user_set_home(struct mail_user *user, const char *home)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user.c:338,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-user.c:339,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-user.c:339,1
    - Dst: hook_mail_namespaces_added
      Src: /src/dovecot/src/lib-storage/mail-user.c:348,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - user
    - namespaces
    argTypes:
    - struct mail_user*
    - struct mail_namespace**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 349
    functionName: mail_user_add_namespace
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - hook_mail_namespaces_added
    - strlen
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_user_add_namespace(struct mail_user *user,\n\t\t\t     struct
      mail_namespace **namespaces)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_is_removable
      Src: /src/dovecot/src/lib-storage/mail-user.c:362,1
    - Dst: mail_namespace_destroy
      Src: /src/dovecot/src/lib-storage/mail-user.c:363,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 365
    functionName: mail_user_drop_useless_namespaces
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - mail_namespace_is_removable
    - mail_namespace_destroy
    linkageType: ''
    returnType: void
    signature: void mail_user_drop_useless_namespaces(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_try_home_expand
      Src: /src/dovecot/src/lib-storage/mail-user.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - user
    - path
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 371
    functionName: mail_user_home_expand
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - mail_user_try_home_expand
    linkageType: ''
    returnType: char
    signature: char *mail_user_home_expand(struct mail_user *user, const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user.c:381,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-user.c:383,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-user.c:391,1
    - Dst: auth_master_user_lookup
      Src: /src/dovecot/src/lib-storage/mail-user.c:392,1
    - Dst: auth_user_fields_parse
      Src: /src/dovecot/src/lib-storage/mail-user.c:397,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-user.c:399,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:403,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-user.c:405,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 407
    functionName: mail_user_userdb_lookup_home
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - auth_master_user_lookup
    - p_strdup
    - pool_unref
    - e_error
    - i_assert
    - auth_user_fields_parse
    linkageType: ''
    returnType: int
    signature: int mail_user_userdb_lookup_home(struct mail_user *user)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_userdb_lookup_home
      Src: /src/dovecot/src/lib-storage/mail-user.c:422,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - user
    - home_r
    argTypes:
    - struct mail_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 409
    functionDepth: 3
    functionLinenumber: 409
    functionLinenumberEnd: 438
    functionName: mail_user_get_home
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 2
    functionsReached:
    - mail_user_userdb_lookup_home
    linkageType: ''
    returnType: int
    signature: int mail_user_get_home(struct mail_user *user, const char **home_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-user.c:444,1
    - Dst: module_get_plugin_name
      Src: /src/dovecot/src/lib-storage/mail-user.c:447,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-storage/mail-user.c:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - user
    - module
    argTypes:
    - struct mail_user*
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 450
    functionName: mail_user_is_plugin_loaded
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - module_get_plugin_name
    - array_lsearch
    linkageType: ''
    returnType: bool
    signature: bool mail_user_is_plugin_loaded(struct mail_user *user, struct module
      *module)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mail-user.c:458,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-user.c:458,1
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-user.c:463,1
    - Dst: home_expand_tilde
      Src: /src/dovecot/src/lib-storage/mail-user.c:466,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - user
    - pathp
    argTypes:
    - struct mail_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 454
    functionDepth: 4
    functionLinenumber: 454
    functionLinenumberEnd: 472
    functionName: mail_user_try_home_expand
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 2
    functionsReached:
    - strcmp
    - str_begins_with
    - home_expand_tilde
    - mail_user_get_home
    linkageType: ''
    returnType: int
    signature: int mail_user_try_home_expand(struct mail_user *user, const char **pathp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-user.c:477,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-user.c:478,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-user.c:479,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lib-storage/mail-user.c:479,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-user.c:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dest
    - set
    argTypes:
    - string_t*
    - struct mail_user_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 481
    functionName: mail_user_set_get_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 6
    functionsReached:
    - str_append
    - master_service_get_name
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void mail_user_set_get_temp_prefix(string_t *dest,\n\t\t\t\t   const
      struct mail_user_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-user.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 490
    functionName: mail_user_get_volatile_dir
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: char
    signature: char *mail_user_get_volatile_dir(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-user.c:499,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-user.c:512,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-user.c:520,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-user.c:522,1
    - Dst: mail_storage_lock_create
      Src: /src/dovecot/src/lib-storage/mail-user.c:527,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - user
    - lock_fname
    - lock_secs
    - lock_r
    - error_r
    argTypes:
    - struct mail_user*
    - char*
    - unsigned int
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 492
    functionDepth: 4
    functionLinenumber: 492
    functionLinenumberEnd: 529
    functionName: mail_user_lock_file_create
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - mail_user_get_home
    - t_strdup_printf
    - mail_namespace_find_inbox
    - mail_storage_lock_create
    linkageType: ''
    returnType: int
    signature: "int mail_user_lock_file_create(struct mail_user *user, const char
      *lock_fname,\n\t\t\t       unsigned int lock_secs,\n\t\t\t       struct file_lock
      **lock_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-user.c:534,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lib-storage/mail-user.c:536,1
    - Dst: mail_user_get_alt_usernames
      Src: /src/dovecot/src/lib-storage/mail-user.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - user
    - session_r
    argTypes:
    - struct mail_user*
    - struct master_service_anvil_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 540
    functionName: mail_user_get_anvil_session
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 5
    functionsReached:
    - i_zero
    - master_service_get_name
    - mail_user_get_alt_usernames
    linkageType: ''
    returnType: void
    signature: "void mail_user_get_anvil_session(struct mail_user *user,\n\t\t\t\t
      struct master_service_anvil_session *session_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-user.c:547,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mail-user.c:551,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mail-user.c:552,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib-storage/mail-user.c:555,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mail-user.c:556,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:557,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/mail-user.c:558,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:559,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/mail-user.c:560,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/mail-user.c:563,1
    - Dst: array_get_copy
      Src: /src/dovecot/src/lib-storage/mail-user.c:566,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 568
    functionName: mail_user_get_alt_usernames
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - str_begins_with
    - p_new
    - array_get_copy
    - t_array_init
    - t_split_key_value_eq
    - ARRAY_TYPE
    - array_append_zero
    - array_append
    linkageType: ''
    returnType: char
    signature: char *const *mail_user_get_alt_usernames(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-user.c:575,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-user.c:577,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lib-storage/mail-user.c:579,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib-storage/mail-user.c:582,1
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/lib-storage/mail-user.c:586,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-user.c:592,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-user.c:593,1
    - Dst: struct module*::init
      Src: /src/dovecot/src/lib-storage/mail-user.c:596,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - user
    - name
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 601
    functionName: mail_user_try_load_class_plugin
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - master_service_get_name
    - module_dir_load_missing
    - strlen
    - event_want_debug
    - struct module*::init
    - strncmp
    linkageType: ''
    returnType: void
    signature: void mail_user_try_load_class_plugin(struct mail_user *user, const
      char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_find_class
      Src: /src/dovecot/src/lib-storage/mail-user.c:608,1
    - Dst: mail_user_try_load_class_plugin
      Src: /src/dovecot/src/lib-storage/mail-user.c:613,1
    - Dst: mail_storage_find_class
      Src: /src/dovecot/src/lib-storage/mail-user.c:615,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-user.c:617,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - user
    - name
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 622
    functionName: mail_user_get_storage_class
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 1
    functionsReached:
    - e_error
    - mail_user_try_load_class_plugin
    - mail_storage_find_class
    linkageType: ''
    returnType: struct mail_storage
    signature: 'struct mail_storage *

      mail_user_get_storage_class(struct mail_user *user, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_alloc
      Src: /src/dovecot/src/lib-storage/mail-user.c:628,1
    - Dst: mail_user_set_home
      Src: /src/dovecot/src/lib-storage/mail-user.c:630,1
    - Dst: mail_user_set_vars
      Src: /src/dovecot/src/lib-storage/mail-user.c:631,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:636,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:637,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:638,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:639,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:640,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-storage/mail-user.c:643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 624
    functionDepth: 3
    functionLinenumber: 624
    functionLinenumberEnd: 645
    functionName: mail_user_dup
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_strarray_dup
    - mail_user_alloc
    - mail_user_set_home
    - mail_user_set_vars
    linkageType: ''
    returnType: struct mail_user
    signature: struct mail_user *mail_user_dup(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - user
    - fs_params
    argTypes:
    - struct mail_user*
    - struct fs_parameters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 655
    functionName: mail_user_init_fs_parameters
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_user_init_fs_parameters(struct mail_user *user,\n\t\t\t\tstruct
      fs_parameters *fs_params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-user.c:669,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail-user.c:672,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mail-user.c:673,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-user.c:675,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/mail-user.c:677,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - ns
    - home
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 657
    functionDepth: 6
    functionLinenumber: 657
    functionLinenumberEnd: 682
    functionName: mail_user_home_mkdir_try_ns
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - mailbox_list_mkdir_root
    - mailbox_list_get_root_path
    - strlen
    - strncmp
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int mail_user_home_mkdir_try_ns(struct mail_namespace *ns, const char
      *home)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-user.c:690,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-user.c:699,1
    - Dst: mail_user_home_mkdir_try_ns
      Src: /src/dovecot/src/lib-storage/mail-user.c:700,1
    - Dst: mail_user_home_mkdir_try_ns
      Src: /src/dovecot/src/lib-storage/mail-user.c:708,1
    - Dst: mkdir_parents
      Src: /src/dovecot/src/lib-storage/mail-user.c:712,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-user.c:713,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 684
    functionDepth: 7
    functionLinenumber: 684
    functionLinenumberEnd: 717
    functionName: mail_user_home_mkdir
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 0
    functionsReached:
    - mail_user_home_mkdir_try_ns
    - mail_user_get_home
    - mkdir_parents
    - e_error
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: int
    signature: int mail_user_home_mkdir(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-user.c:723,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-user.c:724,1
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-user.c:725,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 719
    functionDepth: 4
    functionLinenumber: 719
    functionLinenumberEnd: 729
    functionName: mail_user_get_dict_op_settings
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.c
    functionUses: 6
    functionsReached:
    - mail_user_get_home
    - p_strdup
    - p_new
    linkageType: ''
    returnType: struct dict_op_settings
    signature: 'struct dict_op_settings *

      mail_user_get_dict_op_settings(struct mail_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: MAILBOX_ATTRIBUTE_KEY_IS_USER_ACCESSIBLE
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAILBOX_ATTRIBUTE_KEY_IS_USER_ACCESSIBLE(key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:103,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - struct mail_duplicate*
    - struct mail_duplicate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: mail_duplicate_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int mail_duplicate_cmp(const struct mail_duplicate *d1,\n\t\t   const
      struct mail_duplicate *d2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcase_hash
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct mail_duplicate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 123
    functionName: mail_duplicate_hash
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - strcase_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mail_duplicate_hash(const struct mail_duplicate *d)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:133,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:134,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:143,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:145,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:150,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:151,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - trans
    - dup
    - error
    argTypes:
    - struct mail_duplicate_transaction*
    - struct mail_duplicate*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 154
    functionName: duplicate_lock_failed
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - i_zero
    - timeval_diff_msecs
    - i_free_and_null
    - t_strdup_printf
    - e_error
    - i_assert
    linkageType: ''
    returnType: enum mail_duplicate_lock_result
    signature: "enum mail_duplicate_lock_result duplicate_lock_failed(struct mail_duplicate_transaction
      *trans,\n\t\t      struct mail_duplicate *dup, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dup
    argTypes:
    - struct mail_duplicate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 161
    functionName: mail_duplicate_is_locked
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_duplicate_is_locked(struct mail_duplicate *dup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_duplicate_is_locked
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:181,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:182,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:190,1
    - Dst: md5_get_digest
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:193,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:194,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:196,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:198,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:200,1
    - Dst: mkdir_parents
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:204,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:205,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:208,1
    - Dst: duplicate_lock_failed
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:214,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:216,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:222,1
    - Dst: mail_duplicate_is_locked
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:222,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - trans
    - dup
    argTypes:
    - struct mail_duplicate_transaction*
    - struct mail_duplicate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 225
    functionName: mail_duplicate_lock
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - mail_duplicate_is_locked
    - e_debug
    - mkdir_parents
    - t_strdup_printf
    - md5_get_digest
    - binary_to_hex
    - duplicate_lock_failed
    - e_warning
    - i_strdup_printf
    - i_assert
    - file_create_locked
    linkageType: ''
    returnType: enum mail_duplicate_lock_result
    signature: "enum mail_duplicate_lock_result mail_duplicate_lock(struct mail_duplicate_transaction
      *trans,\n\t\t    struct mail_duplicate *dup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:236,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:238,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:239,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:240,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:241,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:242,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - trans
    - dup
    argTypes:
    - struct mail_duplicate_transaction*
    - struct mail_duplicate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 249
    functionName: mail_duplicate_unlock
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - i_zero
    - e_debug
    - i_close_fd
    - i_free_and_null
    - i_unlink
    - file_lock_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_duplicate_unlock(struct mail_duplicate_transaction *trans,\n\t\t
      \     struct mail_duplicate *dup)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:262,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:264,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:269,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:271,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:272,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:273,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:275,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:279,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:284,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:289,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:291,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:300,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:302,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:311,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:312,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:314,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:318,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:319,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:326,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:329,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 3
    argNames:
    - trans
    - input
    - record_size
    argTypes:
    - struct mail_duplicate_transaction*
    - struct istream*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 333
    functionName: mail_duplicate_read_records
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_strdup
    - hash_table_update
    - p_new
    - t_strndup
    - i_stream_skip
    - time_to_uint32_trunc
    - e_error
    - hash_table_count
    - hash_table_lookup
    - i_assert
    - i_stream_read_bytes
    - p_malloc
    linkageType: ''
    returnType: int
    signature: "int mail_duplicate_read_records(struct mail_duplicate_transaction
      *trans,\n\t\t\t    struct istream *input,\n\t\t\t    unsigned int record_size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:345,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:346,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:353,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:354,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:355,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:361,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:366,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:368,1
    - Dst: mail_duplicate_read_records
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:368,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:369,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - trans
    - fd
    argTypes:
    - struct mail_duplicate_transaction*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 370
    functionName: mail_duplicate_read_db_from_fd
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_stream_create_fd
    - mail_duplicate_read_records
    - if
    - i_stream_skip
    - e_error
    - fstat
    - i_unlink_if_exists
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: int mail_duplicate_read_db_from_fd(struct mail_duplicate_transaction
      *trans, int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:380,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:382,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:386,1
    - Dst: mail_duplicate_read_db_from_fd
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:391,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:393,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:394,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct mail_duplicate_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 398
    functionName: mail_duplicate_read_db_file
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - mail_duplicate_read_db_from_fd
    - e_debug
    - open
    - e_error
    - close
    linkageType: ''
    returnType: int
    signature: int mail_duplicate_read_db_file(struct mail_duplicate_transaction *trans)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_open
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:406,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:410,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:413,1
    - Dst: mail_duplicate_read_db_file
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:418,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct mail_duplicate_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 400
    functionDepth: 4
    functionLinenumber: 400
    functionLinenumberEnd: 422
    functionName: mail_duplicate_read
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - e_error
    - mail_duplicate_read_db_file
    - file_dotlock_delete
    - file_dotlock_open
    linkageType: ''
    returnType: void
    signature: void mail_duplicate_read(struct mail_duplicate_transaction *trans)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:428,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:430,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:432,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:436,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:438,1
    - Dst: mail_duplicate_read
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct mail_duplicate_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 424
    functionDepth: 5
    functionLinenumber: 424
    functionLinenumberEnd: 443
    functionName: mail_duplicate_update
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mail_duplicate_read
    - stat
    - e_error
    linkageType: ''
    returnType: void
    signature: void mail_duplicate_update(struct mail_duplicate_transaction *trans)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:453,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:455,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:459,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:460,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:464,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:468,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:470,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:471,1
    - Dst: mail_duplicate_read
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct mail_duplicate_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 445
    functionDepth: 5
    functionLinenumber: 445
    functionLinenumberEnd: 477
    functionName: mail_duplicate_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_strdup
    - p_new
    - hash_table_create
    - mail_duplicate_read
    - e_debug
    - event_set_append_log_prefix
    linkageType: ''
    returnType: struct mail_duplicate_transaction
    signature: 'struct mail_duplicate_transaction *

      mail_duplicate_transaction_begin(struct mail_duplicate_db *db)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:490,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:492,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:495,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:496,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:497,1
    - Dst: mail_duplicate_unlock
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:498,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:499,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:500,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:502,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:504,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:505,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - _trans
    argTypes:
    - struct mail_duplicate_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 506
    functionName: mail_duplicate_transaction_free
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - event_unref
    - e_debug
    - hash_table_iterate_init
    - pool_unref
    - mail_duplicate_unlock
    - i_assert
    - hash_table_is_created
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void mail_duplicate_transaction_free(struct mail_duplicate_transaction
      **_trans)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:518,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:520,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:521,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:523,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - trans
    - id
    - id_size
    - user
    argTypes:
    - struct mail_duplicate_transaction*
    - void*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 530
    functionName: mail_duplicate_get
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - hash_table_insert
    - hash_table_lookup
    - p_memdup
    linkageType: ''
    returnType: struct mail_duplicate
    signature: "struct mail_duplicate *\nmail_duplicate_get(struct mail_duplicate_transaction
      *trans,\n\t\t   const void *id, size_t id_size, const char *user)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:540,1
    - Dst: mail_duplicate_get
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:544,1
    - Dst: mail_duplicate_lock
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:546,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:550,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:554,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:558,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:562,1
    - Dst: mail_duplicate_update
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:567,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:569,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:573,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 4
    argNames:
    - trans
    - id
    - id_size
    - user
    argTypes:
    - struct mail_duplicate_transaction*
    - void*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 532
    functionDepth: 6
    functionLinenumber: 532
    functionLinenumberEnd: 575
    functionName: mail_duplicate_check
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mail_duplicate_lock
    - mail_duplicate_get
    - mail_duplicate_update
    linkageType: ''
    returnType: enum mail_duplicate_check_result
    signature: "enum mail_duplicate_check_result mail_duplicate_check(struct mail_duplicate_transaction
      *trans,\n\t\t     const void *id, size_t id_size, const char *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:585,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:589,1
    - Dst: mail_duplicate_get
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:591,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:594,1
    - Dst: mail_duplicate_is_locked
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - trans
    - id
    - id_size
    - user
    - timestamp
    argTypes:
    - struct mail_duplicate_transaction*
    - void*
    - size_t
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 601
    functionName: mail_duplicate_mark
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - mail_duplicate_get
    - mail_duplicate_is_locked
    linkageType: ''
    returnType: void
    signature: "void mail_duplicate_mark(struct mail_duplicate_transaction *trans,\n\t\t\t
      const void *id, size_t id_size,\n\t\t\t const char *user, time_t timestamp)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:620,1
    - Dst: mail_duplicate_transaction_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:621,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:625,1
    - Dst: mail_duplicate_transaction_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:626,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:632,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:633,1
    - Dst: file_dotlock_open
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:635,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:639,1
    - Dst: mail_duplicate_transaction_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:642,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:645,1
    - Dst: mail_duplicate_transaction_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:648,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:652,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:655,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:656,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:657,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:659,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:660,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:661,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:663,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:665,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:667,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:668,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:669,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:672,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:674,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:675,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:676,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:677,1
    - Dst: mail_duplicate_transaction_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:678,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:681,1
    - Dst: file_dotlock_replace
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:683,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:684,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:688,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:689,1
    - Dst: mail_duplicate_unlock
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:690,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:691,1
    - Dst: mail_duplicate_transaction_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:693,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 1
    argNames:
    - _trans
    argTypes:
    - struct mail_duplicate_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 603
    functionDepth: 3
    functionLinenumber: 603
    functionLinenumberEnd: 694
    functionName: mail_duplicate_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate
    - strlen
    - o_stream_cork
    - hash_table_iterate_init
    - o_stream_unref
    - mail_duplicate_transaction_free
    - hash_table_iterate_deinit
    - o_stream_get_error
    - o_stream_nsend
    - mail_duplicate_unlock
    - i_zero
    - e_error
    - o_stream_create_fd_file
    - i_assert
    - e_debug
    - o_stream_finish
    - time_to_uint32_trunc
    - file_dotlock_replace
    - file_dotlock_open
    linkageType: ''
    returnType: void
    signature: "void mail_duplicate_transaction_commit(\n\tstruct mail_duplicate_transaction
      **_trans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:706,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:708,1
    - Dst: mail_duplicate_transaction_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:710,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _trans
    argTypes:
    - struct mail_duplicate_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 696
    functionDepth: 3
    functionLinenumber: 696
    functionLinenumberEnd: 711
    functionName: mail_duplicate_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mail_duplicate_transaction_free
    linkageType: ''
    returnType: void
    signature: "void mail_duplicate_transaction_rollback(\n\tstruct mail_duplicate_transaction
      **_trans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:720,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:722,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:723,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:725,1
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:729,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:730,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:735,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:737,1
    - Dst: mail_user_get_volatile_dir
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:740,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:743,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:747,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - user
    - name
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 713
    functionDepth: 4
    functionLinenumber: 713
    functionLinenumberEnd: 752
    functionName: mail_duplicate_db_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_debug
    - event_set_append_log_prefix
    - mail_user_get_home
    - e_error
    - i_strconcat
    - i_new
    - mail_namespace_find_inbox
    - mail_user_get_volatile_dir
    - i_assert
    linkageType: ''
    returnType: struct mail_duplicate_db
    signature: 'struct mail_duplicate_db *

      mail_duplicate_db_init(struct mail_user *user, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:760,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:762,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:764,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:765,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:766,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-duplicate.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct mail_duplicate_db**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 768
    functionName: mail_duplicate_db_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-duplicate.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - event_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_duplicate_db_deinit(struct mail_duplicate_db **_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_set_get_postmaster_address
      Src: /src/dovecot/src/lib-storage/mail-user.h:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - user
    - address_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct message_address**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 225
    functionName: mail_user_get_postmaster_address
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.h
    functionUses: 0
    functionsReached:
    - mail_user_set_get_postmaster_address
    linkageType: ''
    returnType: bool
    signature: "bool mail_user_get_postmaster_address(struct mail_user *user,\n\t\t\t\t
      const struct message_address **address_r,\n\t\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_set_get_postmaster_smtp
      Src: /src/dovecot/src/lib-storage/mail-user.h:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - user
    - address_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct smtp_address**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 237
    functionName: mail_user_get_postmaster_smtp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user.h
    functionUses: 0
    functionsReached:
    - mail_user_set_get_postmaster_smtp
    linkageType: ''
    returnType: bool
    signature: "bool mail_user_get_postmaster_smtp(struct mail_user *user,\n\t\t\t
      \     const struct smtp_address **address_r,\n\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - arg
    - ','
    - res
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 167
    functionName: ARG_SET_RESULT
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET_RESULT(arg, res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - args
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 238
    functionName: mail_search_args_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mail_search_args_foreach(args, callback, context)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:14,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:17,1
    - Dst: mailbox_keyword_is_valid
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:19,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:20,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:22,1
    - Dst: mail_index_keywords_create
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:23,1
    - Dst: mailbox_keywords_are_valid
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:29,1
    - Dst: mailbox_keyword_is_valid
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:35,1
    - Dst: mailbox_keywords_create
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:41,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:46,1
    - Dst: mailbox_keywords_are_valid
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:50,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:51,1
    - Dst: mail_index_keywords_create
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:55,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:66,1
    - Dst: mailbox_keywords_are_valid
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:70,1
    - Dst: mail_index_keywords_create
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:71,1
    - Dst: mailbox_keywords_create_skip
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:74,1
    - Dst: mailbox_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:79,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:80,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:82,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:84,1
    - Dst: mailbox_keywords_merge
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:87,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:90,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:92,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:94,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:96,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:97,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:98,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:117,1
    - Dst: mail_index_keyword_lookup
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:120,1
    - Dst: IS_ATOM_CHAR
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:135,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 67
    argCount: 2
    argNames:
    - box
    - keywords
    argTypes:
    - struct mailbox*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 7
    functionDepth: 4
    functionLinenumber: 7
    functionLinenumberEnd: 148
    functionName: mailbox_keywords_create_skip
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-keywords.c
    functionUses: 1
    functionsReached:
    - ARRAY
    - IS_ATOM_CHAR
    - mailbox_keywords_create_skip
    - array_append_zero
    - mail_storage_set_error
    - mailbox_keywords_merge
    - mail_index_keywords_unref
    - mailbox_keywords_create_from_indexes
    - mailbox_keyword_is_valid
    - mailbox_keywords_create
    - mailbox_keywords_create_valid
    - i_assert
    - mailbox_keywords_are_valid
    - array_push_back
    - mail_index_keywords_create_from_indexes
    - t_array_init
    - mail_index_keyword_lookup
    - ARRAY_TYPE
    - mail_index_keywords_create
    - array_append
    linkageType: ''
    returnType: struct mail_keywords
    signature: "struct mail_keywords *\nmailbox_keywords_create_skip(struct mailbox
      *box,\n\t\t\t     const char *const keywords[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - keywords
    argTypes:
    - struct mail_keywords**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: mailbox_keywords_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-keywords.c
    functionUses: 6
    functionsReached:
    - mail_index_keywords_unref
    linkageType: ''
    returnType: void
    signature: void mailbox_keywords_unref(struct mail_keywords **keywords)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:117,1
    - Dst: mail_index_keyword_lookup
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:120,1
    - Dst: IS_ATOM_CHAR
      Src: /src/dovecot/src/lib-storage/mailbox-keywords.c:135,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - box
    - keyword
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 148
    functionName: mailbox_keyword_is_valid
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-keywords.c
    functionUses: 1
    functionsReached:
    - IS_ATOM_CHAR
    - i_assert
    - mail_index_keyword_lookup
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_keyword_is_valid(struct mailbox *box, const char *keyword,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_get_dovecot
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:63,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:66,1
    - Dst: dlua_set_members
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:68,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:71,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:73,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:75,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:76,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:78,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:81,1
    - Dst: lua_storage_mail_user_register
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:83,1
    - Dst: lua_storage_mailbox_register
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:84,1
    - Dst: lua_storage_mail_register
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:85,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-storage/mail-storage-lua.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 89
    functionName: dlua_register_mail_storage
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-lua.c
    functionUses: 2
    functionsReached:
    - lua_setfield
    - lua_storage_mail_register
    - lua_pushvalue
    - lua_pop
    - luaL_setfuncs
    - lua_setmetatable
    - lua_storage_mailbox_register
    - lua_storage_mail_user_register
    - dlua_set_members
    - dlua_get_dovecot
    - lua_newtable
    - luaL_newmetatable
    linkageType: ''
    returnType: void
    signature: void dlua_register_mail_storage(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:22,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:24,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:25,1
    - Dst: mail_user_ref
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:27,1
    - Dst: lua_newuserdata
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:28,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:30,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:31,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:32,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:33,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:34,1
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:50,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:52,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:53,1
    - Dst: LUA_TABLE_SET_STRING
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:55,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:56,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:57,1
    - Dst: LUA_TABLE_SET_STRING
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:58,1
    - Dst: LUA_TABLE_SET_STRING
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:59,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:60,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:62,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:63,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:64,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:65,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:66,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:67,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 2
    argNames:
    - L
    - user
    argTypes:
    - lua_State*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 20
    functionDepth: 4
    functionLinenumber: 20
    functionLinenumberEnd: 69
    functionName: dlua_push_mail_user
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 3
    functionsReached:
    - lua_createtable
    - lua_setfield
    - mail_user_get_home
    - lua_pushstring
    - lua_newuserdata
    - LUA_TABLE_SET_STRING
    - lua_setmetatable
    - lua_pushcfunction
    - LUA_TABLE_SET_BOOL
    - luaL_setmetatable
    - mail_user_ref
    - LUA_TABLE_SET_NUMBER
    - luaL_checkstack
    linkageType: ''
    returnType: void
    signature: void dlua_push_mail_user(lua_State *L, struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: LUA_TABLE_SET_NUMBER
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA_TABLE_SET_NUMBER(field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: LUA_TABLE_SET_BOOL
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA_TABLE_SET_BOOL(field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: LUA_TABLE_SET_STRING
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA_TABLE_SET_STRING(field)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:74,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:75,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:77,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:77,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:79,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:80,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:81,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 84
    functionName: lua_check_storage_mail_user
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_istable
    - lua_pop
    - lua_pushliteral
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct mail_user
    signature: 'struct mail_user *

      lua_check_storage_mail_user(lua_State *L, int arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:88,1
    - Dst: lua_check_storage_mail_user
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:89,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: lua_storage_mail_user_tostring
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - lua_check_storage_mail_user
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_tostring(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:98,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:99,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 102
    functionName: lua_storage_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_tostring
    - strcmp
    linkageType: ''
    returnType: int
    signature: int lua_storage_cmp(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:106,1
    - Dst: lua_storage_cmp
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:107,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: lua_storage_mail_user_eq
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_cmp
    - lua_pushboolean
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_eq(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:114,1
    - Dst: lua_storage_cmp
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:115,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 118
    functionName: lua_storage_mail_user_lt
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_cmp
    - lua_pushboolean
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_lt(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:122,1
    - Dst: lua_storage_cmp
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:123,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: lua_storage_mail_user_le
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_cmp
    - lua_pushboolean
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_le(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:130,1
    - Dst: lua_check_storage_mail_user
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:131,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:133,1
    - Dst: mail_user_var_expand_params
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:134,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:135,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:136,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:137,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 142
    functionName: lua_storage_mail_user_var_expand
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - mail_user_var_expand_params
    - lua_check_storage_mail_user
    - luaL_error
    - lua_pushlstring
    - var_expand
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_var_expand(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:146,1
    - Dst: lua_check_storage_mail_user
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:147,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:148,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:150,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:151,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:152,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:154,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:157,1
    - Dst: dlua_push_mailbox
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 160
    functionName: lua_storage_mail_user_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find
    - dlua_push_mailbox
    - luaL_checkinteger
    - luaL_checkstring
    - mailbox_alloc
    - lua_check_storage_mail_user
    - DLUA_REQUIRE_ARGS_IN
    - luaL_error
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_mailbox_alloc(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:164,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 169
    functionName: lua_storage_mail_user_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - mail_user_unref
    - lua_touserdata
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_unref(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:173,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:174,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:177,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 183
    functionName: lua_storage_mail_user_metadata_key
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - str_begins
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *lua_storage_mail_user_metadata_key(const char *key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:187,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:188,1
    - Dst: lua_check_storage_mail_user
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:189,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:193,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:196,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:197,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:200,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:201,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:202,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:203,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:209,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:213,1
    - Dst: lua_storage_mail_user_metadata_key
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:217,1
    - Dst: lua_storage_mailbox_attribute_get
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:224,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:228,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:230,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:234,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:237,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:239,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 185
    functionDepth: 9
    functionLinenumber: 185
    functionLinenumberEnd: 241
    functionName: lua_storage_mail_user_metadata_get
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_mail_user_metadata_key
    - mailbox_get_last_error
    - mailbox_open
    - mailbox_free
    - t_strdup_printf
    - lua_storage_mailbox_attribute_get
    - lua_pushnil
    - lua_pushlstring
    - mailbox_alloc
    - lua_check_storage_mail_user
    - luaL_error
    - mail_namespace_find_inbox
    - lua_gettop
    - i_assert
    - lua_tostring
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_metadata_get(lua_State *L)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lua_storage_mail_user_metadata_key
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:251,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:252,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:257,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:258,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:260,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:261,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:262,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:263,1
    - Dst: lua_storage_mailbox_attribute_set
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:266,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:268,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:269,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - L
    - user
    - key
    - value
    - value_len
    argTypes:
    - lua_State*
    - struct mail_user*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 243
    functionDepth: 9
    functionLinenumber: 243
    functionLinenumberEnd: 274
    functionName: lua_storage_mail_user_set_metadata_unset
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_mail_user_metadata_key
    - mailbox_get_last_error
    - mailbox_open
    - mailbox_free
    - lua_storage_mailbox_attribute_set
    - mailbox_alloc
    - luaL_error
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: int
    signature: "int lua_storage_mail_user_set_metadata_unset(lua_State *L, struct
      mail_user *user,\n\t\t\t\t\t const char *key, const char *value,\n\t\t\t\t\t
      size_t value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:278,1
    - Dst: lua_check_storage_mail_user
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:279,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:280,1
    - Dst: lua_tolstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:284,1
    - Dst: lua_storage_mail_user_set_metadata_unset
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 276
    functionDepth: 10
    functionLinenumber: 276
    functionLinenumberEnd: 288
    functionName: lua_storage_mail_user_metadata_set
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_tolstring
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - lua_storage_mail_user_set_metadata_unset
    - lua_check_storage_mail_user
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_metadata_set(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:292,1
    - Dst: lua_check_storage_mail_user
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:293,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:294,1
    - Dst: lua_storage_mail_user_set_metadata_unset
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 290
    functionDepth: 10
    functionLinenumber: 290
    functionLinenumberEnd: 297
    functionName: lua_storage_mail_user_metadata_unset
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_check_storage_mail_user
    - lua_storage_mail_user_set_metadata_unset
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_metadata_unset(lua_State *L)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:301,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:302,1
    - Dst: lua_check_storage_mail_user
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:303,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:306,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:310,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:311,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:313,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:314,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:315,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:316,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:320,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:323,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:324,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:328,1
    - Dst: lua_storage_mail_user_metadata_key
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:332,1
    - Dst: lua_storage_mailbox_attribute_list
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:339,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:347,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:347,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:348,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:350,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:351,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:352,1
    - Dst: memmove
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:353,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:353,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:354,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:354,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:357,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:360,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 299
    functionDepth: 9
    functionLinenumber: 299
    functionLinenumberEnd: 363
    functionName: lua_storage_mail_user_metadata_list
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 0
    functionsReached:
    - lua_createtable
    - strlen
    - t_strdup_printf
    - array_count
    - mailbox_alloc
    - mail_namespace_find_inbox
    - lua_storage_mailbox_attribute_list
    - mailbox_free
    - memmove
    - lua_pushlstring
    - t_strdup_noconst
    - lua_setfield
    - lua_storage_mail_user_metadata_key
    - mailbox_get_last_error
    - luaL_error
    - lua_gettop
    - memset
    - mailbox_open
    - array_foreach
    - t_array_init
    - lua_check_storage_mail_user
    - ARRAY_TYPE
    - lua_tostring
    - strstr
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_user_metadata_list(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:390,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:391,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:392,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:393,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-storage/mail-user-lua.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 395
    functionName: lua_storage_mail_user_register
    functionSourceFile: /src/dovecot/src/lib-storage/mail-user-lua.c
    functionUses: 1
    functionsReached:
    - luaL_newmetatable
    - lua_pushvalue
    - lua_pop
    - luaL_setfuncs
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_storage_mail_user_register(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_register
      Src: /src/dovecot/src/lib-storage/mailbox-list-register.c:18,1
    - Dst: mailbox_list_register
      Src: /src/dovecot/src/lib-storage/mailbox-list-register.c:19,1
    - Dst: mailbox_list_register
      Src: /src/dovecot/src/lib-storage/mailbox-list-register.c:20,1
    - Dst: mailbox_list_register
      Src: /src/dovecot/src/lib-storage/mailbox-list-register.c:21,1
    - Dst: mailbox_list_register
      Src: /src/dovecot/src/lib-storage/mailbox-list-register.c:22,1
    - Dst: mailbox_list_register
      Src: /src/dovecot/src/lib-storage/mailbox-list-register.c:23,1
    - Dst: mailbox_list_register
      Src: /src/dovecot/src/lib-storage/mailbox-list-register.c:24,1
    - Dst: mailbox_list_index_init
      Src: /src/dovecot/src/lib-storage/mailbox-list-register.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 16
    functionDepth: 3
    functionLinenumber: 16
    functionLinenumberEnd: 26
    functionName: mailbox_list_register_all
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-register.c
    functionUses: 1
    functionsReached:
    - mailbox_list_index_init
    - mailbox_list_register
    linkageType: ''
    returnType: void
    signature: void mailbox_list_register_all(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:18,1
    - Dst: mailbox_save_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:19,1
    - Dst: mailbox_save_continue
      Src: /src/dovecot/src/lib-storage/test-mail.c:22,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/lib-storage/test-mail.c:23,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/test-mail.c:26,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:28,1
    - Dst: mailbox_save_finish
      Src: /src/dovecot/src/lib-storage/test-mail.c:30,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - trans
    - input
    argTypes:
    - struct mailbox_transaction_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 31
    functionName: test_mail_save_trans
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mailbox_save_alloc
    - mailbox_save_continue
    - mailbox_save_finish
    - mailbox_save_cancel
    - mailbox_save_begin
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: "int test_mail_save_trans(struct mailbox_transaction_context *trans,\n\t\t
      \    struct istream *input)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/test-mail.c:39,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/test-mail.c:39,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:40,1
    - Dst: test_mail_save_trans
      Src: /src/dovecot/src/lib-storage/test-mail.c:42,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/test-mail.c:43,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-storage/test-mail.c:45,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:47,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail.c:49,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:50,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/test-mail.c:52,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail.c:53,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - box
    - mail_input
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 33
    functionDepth: 11
    functionLinenumber: 33
    functionLinenumberEnd: 55
    functionName: test_mail_save
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - strlen
    - i_fatal
    - test_mail_save_trans
    - mailbox_sync
    - mailbox_transaction_commit
    - i_stream_unref
    - i_stream_create_from_data
    linkageType: ''
    returnType: void
    signature: void test_mail_save(struct mailbox *box, const char *mail_input)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:64,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:65,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:66,1
    - Dst: mailbox_keywords_create
      Src: /src/dovecot/src/lib-storage/test-mail.c:67,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail.c:68,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:69,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/lib-storage/test-mail.c:70,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/lib-storage/test-mail.c:71,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:72,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:73,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail.c:74,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:75,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/test-mail.c:77,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail.c:78,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:79,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 57
    functionDepth: 11
    functionLinenumber: 57
    functionLinenumberEnd: 80
    functionName: test_mail_remove_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mail_alloc
    - mailbox_transaction_begin
    - mailbox_get_last_internal_error
    - mailbox_keywords_unref
    - mailbox_keywords_create
    - i_fatal
    - mailbox_sync
    - mail_set_seq
    - mailbox_transaction_commit
    - mail_free
    - mail_update_keywords
    linkageType: ''
    returnType: void
    signature: void test_mail_remove_keywords(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/test-mail.c:85,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:90,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail.c:90,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail.c:92,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:93,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/test-mail.c:94,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/test-mail.c:96,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/test-mail.c:98,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:99,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/test-mail.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 100
    functionName: test_mail_fetch_get_random_headers
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_idx
    - array_count
    - mailbox_header_lookup_init
    - t_array_init
    - i_rand_limit
    - ARRAY_TYPE
    - array_append_zero
    - N_ELEMENTS
    linkageType: ''
    returnType: struct mailbox_header_lookup_ctx
    signature: 'struct mailbox_header_lookup_ctx *

      test_mail_fetch_get_random_headers(struct mailbox *box)'
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/test-mail.c:114,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/lib-storage/test-mail.c:117,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/lib-storage/test-mail.c:118,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-storage/test-mail.c:121,1
    - Dst: mail_get_hdr_stream
      Src: /src/dovecot/src/lib-storage/test-mail.c:124,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:125,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/lib-storage/test-mail.c:128,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:129,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:130,1
    - Dst: mail_get_date
      Src: /src/dovecot/src/lib-storage/test-mail.c:133,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/test-mail.c:136,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/lib-storage/test-mail.c:139,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/test-mail.c:142,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/test-mail.c:145,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-storage/test-mail.c:151,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:154,1
    - Dst: mail_get_binary_stream
      Src: /src/dovecot/src/lib-storage/test-mail.c:155,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:156,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/test-mail.c:159,1
    - Dst: mail_get_binary_properties
      Src: /src/dovecot/src/lib-storage/test-mail.c:161,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:162,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/test-mail.c:180,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:187,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:189,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 66
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 191
    functionName: test_mail_fetch_field
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - mail_get_special
    - mail_get_date
    - mail_get_virtual_size
    - mailbox_get_last_internal_error
    - i_error
    - e_debug
    - mail_get_hdr_stream
    - mail_get_binary_stream
    - mail_get_binary_properties
    - mail_get_parts
    - mail_get_flags
    - i_rand_limit
    - mail_get_stream
    - i_stream_unref
    - mail_get_received_date
    - mail_get_save_date
    - mail_get_physical_size
    linkageType: ''
    returnType: void
    signature: void test_mail_fetch_field(struct mail *mail, enum mail_fetch_field
      field)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/test-mail.c:199,1
    - Dst: mail_get_header_stream
      Src: /src/dovecot/src/lib-storage/test-mail.c:200,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:204,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:206,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/test-mail.c:209,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/test-mail.c:210,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-storage/test-mail.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - mail
    - headers
    argTypes:
    - struct mail*
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 211
    functionName: test_mail_fetch_headers
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_error
    - mailbox_get_last_internal_error
    - e_debug
    - mail_get_header_stream
    - i_stream_skip
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: "void test_mail_fetch_headers(struct mail *mail,\n\t\t\tstruct mailbox_header_lookup_ctx
      *headers)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:247,1
    - Dst: i_rand
      Src: /src/dovecot/src/lib-storage/test-mail.c:248,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:249,1
    - Dst: test_mail_fetch_get_random_headers
      Src: /src/dovecot/src/lib-storage/test-mail.c:250,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:251,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/test-mail.c:252,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:253,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/test-mail.c:254,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:255,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:259,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail.c:259,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:261,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:262,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail.c:263,1
    - Dst: test_mail_fetch_field
      Src: /src/dovecot/src/lib-storage/test-mail.c:264,1
    - Dst: test_mail_fetch_get_random_headers
      Src: /src/dovecot/src/lib-storage/test-mail.c:267,1
    - Dst: test_mail_fetch_headers
      Src: /src/dovecot/src/lib-storage/test-mail.c:268,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/test-mail.c:269,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:273,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:274,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail.c:275,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:276,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - box
    - seq
    argTypes:
    - struct mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 213
    functionDepth: 4
    functionLinenumber: 213
    functionLinenumberEnd: 278
    functionName: test_mail_random_fetch
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mail_alloc
    - mailbox_transaction_begin
    - mailbox_header_lookup_unref
    - e_debug
    - test_mail_fetch_get_random_headers
    - mailbox_get_last_internal_error
    - i_fatal
    - mail_set_seq
    - test_mail_fetch_field
    - i_rand_limit
    - mailbox_transaction_commit
    - mail_free
    - i_rand
    - N_ELEMENTS
    - test_mail_fetch_headers
    linkageType: ''
    returnType: void
    signature: void test_mail_random_fetch(struct mailbox *box, uint32_t seq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-storage/test-mail.c:291,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail.c:291,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/test-mail.c:298,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:305,1
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:306,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:307,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/test-mail.c:308,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:310,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:311,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail.c:312,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:313,1
    - Dst: test_mail_save
      Src: /src/dovecot/src/lib-storage/test-mail.c:314,1
    - Dst: test_mail_remove_keywords
      Src: /src/dovecot/src/lib-storage/test-mail.c:320,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/test-mail.c:321,1
    - Dst: test_mail_random_fetch
      Src: /src/dovecot/src/lib-storage/test-mail.c:323,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/lib-storage/test-mail.c:324,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail.c:325,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:326,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:327,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:329,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail.c:330,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 280
    functionDepth: 12
    functionLinenumber: 280
    functionLinenumberEnd: 332
    functionName: test_mail_random_access
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - test_mail_random_fetch
    - test_mail_storage_init
    - i_rand_limit
    - mailbox_alloc
    - mailbox_free
    - i_fatal
    - test_end
    - test_mail_storage_deinit
    - test_mail_remove_keywords
    - test_mail_storage_init_user
    - mailbox_delete
    - test_mail_storage_deinit_user
    - N_ELEMENTS
    - test_mail_save
    - mailbox_open
    - e_debug
    - t_strconcat
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_random_access(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:348,1
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:349,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:350,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:353,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:354,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:354,1
    - Dst: test_mail_save
      Src: /src/dovecot/src/lib-storage/test-mail.c:357,1
    - Dst: test_mail_remove_keywords
      Src: /src/dovecot/src/lib-storage/test-mail.c:362,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:365,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:366,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:367,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:371,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:376,1
    - Dst: mail_get_header_stream
      Src: /src/dovecot/src/lib-storage/test-mail.c:376,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:377,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/test-mail.c:377,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:379,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/test-mail.c:379,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:380,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/test-mail.c:380,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/test-mail.c:381,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:382,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/test-mail.c:382,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:383,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:383,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/test-mail.c:384,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:385,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/test-mail.c:385,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/test-mail.c:387,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:388,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:389,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:389,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:390,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:391,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail.c:392,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 334
    functionDepth: 12
    functionLinenumber: 334
    functionLinenumberEnd: 394
    functionName: test_attachment_flags_during_header_fetch
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - strlen
    - mailbox_header_lookup_init
    - mailbox_alloc
    - test_mail_storage_init
    - test_assert
    - mail_free
    - mailbox_free
    - mailbox_transaction_begin
    - mail_get_header_stream
    - i_stream_skip
    - mail_set_seq
    - test_end
    - test_mail_storage_deinit
    - test_mail_remove_keywords
    - i_stream_read_more
    - test_mail_storage_init_user
    - mailbox_header_lookup_unref
    - mailbox_transaction_commit
    - test_mail_storage_deinit_user
    - test_mail_save
    - mailbox_open
    - mail_alloc
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_attachment_flags_during_header_fetch(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:409,1
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:410,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:411,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:415,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:415,1
    - Dst: test_mail_save
      Src: /src/dovecot/src/lib-storage/test-mail.c:417,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:423,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:424,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:425,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:428,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/test-mail.c:428,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:430,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/test-mail.c:430,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:432,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:433,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:433,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:434,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:435,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail.c:436,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 396
    functionDepth: 12
    functionLinenumber: 396
    functionLinenumberEnd: 438
    functionName: test_bodystructure_reparsing
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_open
    - test_mail_storage_init_user
    - mailbox_transaction_begin
    - mail_alloc
    - test_mail_storage_deinit
    - test_mail_storage_deinit_user
    - mail_set_seq
    - mail_get_first_header
    - test_end
    - mailbox_alloc
    - test_mail_storage_init
    - test_assert
    - test_mail_save
    - mail_free
    - mailbox_transaction_commit
    - mail_get_special
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bodystructure_reparsing(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:448,1
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:449,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:450,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:454,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:454,1
    - Dst: test_mail_save
      Src: /src/dovecot/src/lib-storage/test-mail.c:456,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:462,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:463,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:464,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:466,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/test-mail.c:466,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:467,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/test-mail.c:468,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:469,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:470,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/test-mail.c:470,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:473,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:473,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:474,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:475,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail.c:476,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 440
    functionDepth: 12
    functionLinenumber: 440
    functionLinenumberEnd: 478
    functionName: test_bodystructure_corruption_reparsing
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_alloc
    - test_mail_storage_init
    - test_assert
    - mail_free
    - mail_get_special
    - test_expect_no_more_errors
    - mailbox_free
    - mailbox_transaction_begin
    - test_expect_error_string
    - mail_set_seq
    - test_end
    - test_mail_storage_deinit
    - test_mail_storage_init_user
    - mailbox_transaction_commit
    - test_mail_storage_deinit_user
    - test_mail_save
    - mailbox_open
    - mail_alloc
    - mail_set_cache_corrupted
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bodystructure_corruption_reparsing(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:486,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:487,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:490,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:491,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:491,1
    - Dst: test_mail_save
      Src: /src/dovecot/src/lib-storage/test-mail.c:493,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:502,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:504,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:505,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:506,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:508,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail.c:510,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:512,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:513,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:514,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:515,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:517,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:518,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:518,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:519,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:521,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:522,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:523,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/test-mail.c:524,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/test-mail.c:525,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:527,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail.c:529,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:531,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:532,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:533,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:534,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:536,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:537,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:537,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:538,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:540,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:541,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:542,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:543,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/test-mail.c:544,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/test-mail.c:545,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:547,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail.c:549,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:551,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:552,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:553,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:554,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:556,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:558,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:559,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:559,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:560,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:561,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 480
    functionDepth: 12
    functionLinenumber: 480
    functionLinenumberEnd: 563
    functionName: test_mail_set_critical
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - event_unref
    - mailbox_alloc
    - test_mail_storage_init
    - test_assert
    - mail_free
    - test_expect_no_more_errors
    - mailbox_free
    - mailbox_transaction_begin
    - mail_set_critical
    - test_expect_error_string
    - mail_set_seq
    - test_end
    - test_mail_storage_deinit
    - test_mail_storage_init_user
    - test_assert_strcmp
    - mailbox_transaction_commit
    - mail_get_last_internal_error
    - test_mail_storage_deinit_user
    - test_mail_save
    - container_of
    - mailbox_open
    - mail_alloc
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_set_critical(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:571,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:572,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:575,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:576,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:576,1
    - Dst: test_mail_save
      Src: /src/dovecot/src/lib-storage/test-mail.c:578,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:584,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:585,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:586,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:591,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:592,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail.c:593,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:594,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:595,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:596,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:597,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:598,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:598,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:601,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:602,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/lib-storage/test-mail.c:602,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:603,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:603,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:605,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:606,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:607,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:608,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:610,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:611,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:611,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:612,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:614,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:615,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:616,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail.c:617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 565
    functionDepth: 12
    functionLinenumber: 565
    functionLinenumberEnd: 618
    functionName: test_mail_set_critical_different_mailboxes
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_alloc
    - test_mail_storage_init
    - test_assert
    - mail_free
    - mailbox_create
    - test_expect_no_more_errors
    - mailbox_free
    - mailbox_transaction_begin
    - mail_set_critical
    - test_expect_error_string
    - mail_set_seq
    - test_end
    - test_mail_storage_deinit
    - test_mail_storage_init_user
    - test_assert_strcmp
    - mailbox_transaction_commit
    - mail_get_last_internal_error
    - test_mail_storage_deinit_user
    - test_mail_save
    - mailbox_open
    - mail_alloc
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_set_critical_different_mailboxes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mail_storage_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:626,1
    - Dst: test_mail_storage_init_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:627,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:630,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:632,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:633,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/lib-storage/test-mail.c:633,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:634,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:634,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:635,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/test-mail.c:635,1
    - Dst: test_mail_save
      Src: /src/dovecot/src/lib-storage/test-mail.c:638,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:644,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:646,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:647,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:648,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:649,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-storage/test-mail.c:650,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:655,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:656,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail.c:657,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:658,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:660,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:661,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:662,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:663,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:664,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:665,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:666,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:667,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:668,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:669,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:670,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:672,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:673,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail.c:674,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:675,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:677,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:678,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:679,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:680,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:681,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:682,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:683,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:684,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:685,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:686,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:687,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:689,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:690,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail.c:691,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:692,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:694,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:695,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:696,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:697,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:698,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:699,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:700,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail.c:702,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/test-mail.c:703,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/test-mail.c:704,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-storage/test-mail.c:705,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/test-mail.c:707,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib-storage/test-mail.c:708,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:709,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:710,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/test-mail.c:712,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:713,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail.c:715,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:717,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:718,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:719,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:720,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:720,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail.c:721,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/test-mail.c:721,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:722,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/test-mail.c:723,1
    - Dst: test_mail_storage_deinit_user
      Src: /src/dovecot/src/lib-storage/test-mail.c:724,1
    - Dst: test_mail_storage_deinit
      Src: /src/dovecot/src/lib-storage/test-mail.c:725,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 620
    functionDepth: 12
    functionLinenumber: 620
    functionLinenumberEnd: 726
    functionName: test_mail_get_last_internal_error
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_alloc
    - test_mail_storage_init
    - test_assert
    - mail_free
    - mailbox_create
    - test_expect_no_more_errors
    - mailbox_free
    - mailbox_transaction_begin
    - mail_set_critical
    - mail_storage_get_last_internal_error
    - test_expect_error_string
    - mail_set_seq
    - test_end
    - test_mail_storage_deinit
    - mailbox_get_storage
    - test_mail_storage_init_user
    - test_assert_strcmp
    - mailbox_transaction_commit
    - mail_get_last_internal_error
    - test_mail_storage_deinit_user
    - mail_storage_set_critical
    - test_mail_save
    - mailbox_open
    - mail_alloc
    - mailbox_set_critical
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_get_last_internal_error(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:742,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-storage/test-mail.c:750,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-storage/test-mail.c:751,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-storage/test-mail.c:752,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-storage/test-mail.c:753,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/lib-storage/test-mail.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 728
    functionDepth: 7
    functionLinenumber: 728
    functionLinenumberEnd: 756
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail.c
    functionUses: 7
    functionsReached:
    - event_set_forced_debug
    - test_dir_init
    - test_run
    - null_strcmp
    - master_service_init
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/fail-mail-storage.c:13,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/fail-mail-storage.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 18
    functionName: fail_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *fail_storage_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: fail_storage_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fail_storage_destroy(struct mail_storage *storage ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fail_storage_alloc
      Src: /src/dovecot/src/lib-storage/fail-mail-storage.c:44,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/fail-mail-storage.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: fail_mail_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mail-storage.c
    functionUses: 0
    functionsReached:
    - fail_storage_alloc
    - p_array_init
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *fail_mail_storage_create(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_lock_file_create
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:31,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:34,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - user
    - lock
    argTypes:
    - struct mail_user*
    - struct file_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 14
    functionDepth: 5
    functionLinenumber: 14
    functionLinenumberEnd: 44
    functionName: mailbox_autoexpunge_lock
    functionSourceFile: /src/dovecot/src/lib-storage/mail-autoexpunge.c
    functionUses: 0
    functionsReached:
    - e_error
    - mail_user_lock_file_create
    linkageType: ''
    returnType: bool
    signature: bool mailbox_autoexpunge_lock(struct mail_user *user, struct file_lock
      **lock)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:65,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:77,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:78,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:80,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:82,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:83,1
    - Dst: mail_autoexpunge
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:88,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:94,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:95,1
    - Dst: mail_autoexpunge
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:99,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:101,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:110,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:111,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:114,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 5
    argNames:
    - box
    - interval_time
    - max_mails
    - expire_time
    - expunged_count
    argTypes:
    - struct mailbox*
    - unsigned int
    - unsigned int
    - time_t
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 47
    functionDepth: 11
    functionLinenumber: 47
    functionLinenumberEnd: 122
    functionName: mailbox_autoexpunge_batch
    functionSourceFile: /src/dovecot/src/lib-storage/mail-autoexpunge.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mail_alloc
    - mailbox_transaction_begin
    - I_MIN
    - mail_index_get_header
    - I_MAX
    - mailbox_sync
    - mail_set_seq
    - mail_index_get_header_ext
    - mailbox_transaction_commit
    - mail_free
    - mail_get_save_date
    - mail_autoexpunge
    linkageType: ''
    returnType: int
    signature: "int mailbox_autoexpunge_batch(struct mailbox *box,\n\t\t\t  const
      unsigned int interval_time,\n\t\t\t  const unsigned int max_mails,\n\t\t\t  const
      time_t expire_time,\n\t\t\t  unsigned int *expunged_count)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:140,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:141,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:151,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:159,1
    - Dst: mailbox_autoexpunge_batch
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:163,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 4
    argNames:
    - box
    - interval_time
    - max_mails
    - expunged_count
    argTypes:
    - struct mailbox*
    - unsigned int
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 124
    functionDepth: 12
    functionLinenumber: 124
    functionLinenumberEnd: 168
    functionName: mailbox_autoexpunge
    functionSourceFile: /src/dovecot/src/lib-storage/mail-autoexpunge.c
    functionUses: 0
    functionsReached:
    - mailbox_autoexpunge_batch
    - mailbox_get_last_mail_error
    - mailbox_get_status
    - mailbox_sync
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int mailbox_autoexpunge(struct mailbox *box, unsigned int interval_time,\n\t\t
      \   unsigned int max_mails, unsigned int *expunged_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:181,1
    - Dst: mailbox_autoexpunge
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:182,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:184,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:185,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - ns
    - vname
    - autoexpunge
    - autoexpunge_max_mails
    - expunged_count
    argTypes:
    - struct mail_namespace*
    - char*
    - unsigned int
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 170
    functionDepth: 13
    functionLinenumber: 170
    functionLinenumberEnd: 188
    functionName: mailbox_autoexpunge_set
    functionSourceFile: /src/dovecot/src/lib-storage/mail-autoexpunge.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_get_last_internal_error
    - mailbox_autoexpunge
    - e_error
    - mailbox_alloc
    linkageType: ''
    returnType: void
    signature: "void mailbox_autoexpunge_set(struct mail_namespace *ns, const char
      *vname,\n\t\t\tunsigned int autoexpunge,\n\t\t\tunsigned int autoexpunge_max_mails,\n\t\t\tunsigned
      int *expunged_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:199,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:200,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:204,1
    - Dst: mailbox_autoexpunge_set
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ns
    - set
    - expunged_count
    argTypes:
    - struct mail_namespace*
    - struct mailbox_settings*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 190
    functionDepth: 14
    functionLinenumber: 190
    functionLinenumberEnd: 208
    functionName: mailbox_autoexpunge_wildcards
    functionSourceFile: /src/dovecot/src/lib-storage/mail-autoexpunge.c
    functionUses: 0
    functionsReached:
    - mailbox_autoexpunge_set
    - mailbox_list_iter_next
    - t_strconcat
    - mailbox_list_iter_init
    linkageType: ''
    returnType: void
    signature: "void mailbox_autoexpunge_wildcards(struct mail_namespace *ns,\n\t\t\t
      \     const struct mailbox_settings *set,\n\t\t\t      unsigned int *expunged_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:223,1
    - Dst: mailbox_autoexpunge_wildcards
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:224,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:227,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:228,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:230,1
    - Dst: mailbox_autoexpunge_set
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ns
    - box_set
    - expunged_count
    argTypes:
    - struct mail_namespace*
    - struct mailbox_settings*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 216
    functionDepth: 15
    functionLinenumber: 216
    functionLinenumberEnd: 235
    functionName: mailbox_autoexpunge_name
    functionSourceFile: /src/dovecot/src/lib-storage/mail-autoexpunge.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - strpbrk
    - t_strndup
    - mailbox_autoexpunge_wildcards
    - mailbox_autoexpunge_set
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void mailbox_autoexpunge_name(struct mail_namespace *ns,\n\t\t\t const
      struct mailbox_settings *box_set,\n\t\t\t unsigned int *expunged_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:243,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:246,1
    - Dst: mailbox_autoexpunge_lock
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:250,1
    - Dst: mailbox_autoexpunge_name
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:254,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ns
    - lock
    - expunged_count
    argTypes:
    - struct mail_namespace*
    - struct file_lock**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 237
    functionDepth: 16
    functionLinenumber: 237
    functionLinenumberEnd: 256
    functionName: mail_namespace_autoexpunge
    functionSourceFile: /src/dovecot/src/lib-storage/mail-autoexpunge.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - mailbox_autoexpunge_name
    - mailbox_autoexpunge_lock
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool mail_namespace_autoexpunge(struct mail_namespace *ns, struct
      file_lock **lock,\n\t\t\t   unsigned int *expunged_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:266,1
    - Dst: mail_namespace_autoexpunge
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:270,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:274,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib-storage/mail-autoexpunge.c:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 260
    functionDepth: 17
    functionLinenumber: 260
    functionLinenumberEnd: 277
    functionName: mail_user_autoexpunge
    functionSourceFile: /src/dovecot/src/lib-storage/mail-autoexpunge.c
    functionUses: 4
    functionsReached:
    - event_reason_end
    - file_lock_free
    - mail_namespace_autoexpunge
    - event_reason_begin
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mail_user_autoexpunge(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:39,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:41,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - struct mail_search_simplify_prev_arg*
    - struct mail_search_simplify_prev_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 45
    functionName: mail_search_simplify_prev_arg_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int mail_search_simplify_prev_arg_cmp(const struct mail_search_simplify_prev_arg
      *arg1,\n\t\t\t\t  const struct mail_search_simplify_prev_arg *arg2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mem_hash
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:52,1
    - Dst: str_hash
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:54,1
    - Dst: str_hash
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct mail_search_simplify_prev_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 58
    functionName: mail_search_simplify_prev_arg_hash
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mem_hash
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mail_search_simplify_prev_arg_hash(const struct mail_search_simplify_prev_arg
      *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - arg
    - mask_r
    argTypes:
    - struct mail_search_arg*
    - struct mail_search_simplify_prev_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: mail_search_arg_get_base_mask
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void mail_search_arg_get_base_mask(const struct mail_search_arg *arg,\n\t\t\t\t\t
      \ struct mail_search_simplify_prev_arg *mask_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:75,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:77,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:80,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:82,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 86
    functionName: mail_search_args_simplify_get_prev_argp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - hash_table_insert
    - p_strdup
    - hash_table_lookup
    - p_new
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg **\nmail_search_args_simplify_get_prev_argp(struct
      mail_search_simplify_ctx *ctx,\n\t\t\t\t\tconst struct mail_search_simplify_prev_arg
      *mask)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_simplify_get_prev_argp
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:95,1
    - Dst: mail_search_arg_one_deinit
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:102,1
    - Dst: mail_search_arg_one_deinit
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - args
    - mask
    argTypes:
    - struct mail_search_simplify_ctx*
    - struct mail_search_arg*
    - struct mail_search_simplify_prev_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 113
    functionName: mail_search_args_merge_mask
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_args_simplify_get_prev_argp
    - mail_search_arg_one_deinit
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_merge_mask(struct mail_search_simplify_ctx *ctx,\n\t\t\t
      \   struct mail_search_arg *args,\n\t\t\t    const struct mail_search_simplify_prev_arg
      *mask)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_get_base_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:120,1
    - Dst: mail_search_args_merge_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct mail_search_simplify_ctx*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 123
    functionName: mail_search_args_merge_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_get_base_mask
    - mail_search_args_merge_mask
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_merge_flags(struct mail_search_simplify_ctx
      *ctx,\n\t\t\t\t\t struct mail_search_arg *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_get_base_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:131,1
    - Dst: mail_search_args_merge_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct mail_search_simplify_ctx*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 134
    functionName: mail_search_args_merge_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_get_base_mask
    - mail_search_args_merge_mask
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_merge_keywords(struct mail_search_simplify_ctx
      *ctx,\n\t\t\t\tstruct mail_search_arg *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:146,1
    - Dst: seq_range_array_invert
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:149,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:151,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 161
    functionName: mail_search_args_simplify_set
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - seq_range_array_invert
    - array_get
    - seq_range_exists
    linkageType: ''
    returnType: void
    signature: void mail_search_args_simplify_set(struct mail_search_arg *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_get_base_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:174,1
    - Dst: mail_search_args_simplify_get_prev_argp
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:176,1
    - Dst: seq_range_array_intersect
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:182,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct mail_search_simplify_ctx*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 190
    functionName: mail_search_args_merge_set
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_get_base_mask
    - mail_search_args_simplify_get_prev_argp
    - seq_range_array_intersect
    - seq_range_array_merge
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_merge_set(struct mail_search_simplify_ctx *ctx,\n\t\t\t\t
      \      struct mail_search_arg *args)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_get_base_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:198,1
    - Dst: mail_search_args_simplify_get_prev_argp
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:201,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct mail_search_simplify_ctx*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 252
    functionName: mail_search_args_merge_time
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_get_base_mask
    - mail_search_args_simplify_get_prev_argp
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_merge_time(struct mail_search_simplify_ctx *ctx,\n\t\t\t\t\tstruct
      mail_search_arg *args)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_get_base_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:260,1
    - Dst: mail_search_args_simplify_get_prev_argp
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:262,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct mail_search_simplify_ctx*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 309
    functionName: mail_search_args_merge_size
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_get_base_mask
    - mail_search_args_simplify_get_prev_argp
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_merge_size(struct mail_search_simplify_ctx *ctx,\n\t\t\t\t\tstruct
      mail_search_arg *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_get_base_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:316,1
    - Dst: mail_search_args_merge_mask
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct mail_search_simplify_ctx*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 320
    functionName: mail_search_args_merge_text
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_get_base_mask
    - mail_search_args_merge_mask
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_merge_text(struct mail_search_simplify_ctx *ctx,\n\t\t\t\t\tstruct
      mail_search_arg *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_one_equals
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - args
    - wanted_arg
    argTypes:
    - struct mail_search_arg*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 333
    functionName: mail_search_args_have_equal
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_one_equals
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_have_equal(const struct mail_search_arg *args,\n\t\t\t
      \   const struct mail_search_arg *wanted_arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_one_equals
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:345,1
    - Dst: mail_search_arg_one_deinit
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:347,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:351,1
    - Dst: mail_search_args_remove_equal
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:353,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:356,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - all_args
    - argsp
    - wanted_arg
    - check_subs
    argTypes:
    - struct mail_search_args*
    - struct mail_search_arg**
    - struct mail_search_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 368
    functionName: mail_search_args_remove_equal
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 1
    functionsReached:
    - mail_search_arg_one_equals
    - i_unreached
    - mail_search_args_remove_equal
    - mail_search_arg_one_deinit
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_remove_equal(struct mail_search_args *all_args,\n\t\t\t
      \     struct mail_search_arg **argsp,\n\t\t\t      const struct mail_search_arg
      *wanted_arg,\n\t\t\t      bool check_subs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:376,1
    - Dst: mail_search_args_have_equal
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:380,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - parent_arg
    - wanted_args
    argTypes:
    - struct mail_search_arg*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 384
    functionName: mail_search_args_have_all_equal
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_args_have_equal
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_have_all_equal(struct mail_search_arg *parent_arg,\n\t\t\t\tconst
      struct mail_search_arg *wanted_args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:410,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:417,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:420,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:422,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:426,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:431,1
    - Dst: mail_search_args_have_all_equal
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:439,1
    - Dst: mail_search_arg_one_deinit
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:441,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 3
    argNames:
    - all_args
    - argsp
    - and_arg
    argTypes:
    - struct mail_search_args*
    - struct mail_search_arg**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 400
    functionDepth: 3
    functionLinenumber: 400
    functionLinenumberEnd: 450
    functionName: mail_search_args_simplify_drop_redundant_args_real
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - t_new
    - array_lsearch
    - array_foreach_elem
    - array_push_back
    - mail_search_arg_one_deinit
    - t_array_init
    - mail_search_args_have_all_equal
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_simplify_drop_redundant_args_real(struct mail_search_args
      *all_args,\n\t\t\t\t\t\t   struct mail_search_arg **argsp,\n\t\t\t\t\t\t   bool
      and_arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_simplify_drop_redundant_args_real
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - all_args
    - argsp
    - and_arg
    argTypes:
    - struct mail_search_args*
    - struct mail_search_arg**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 452
    functionDepth: 4
    functionLinenumber: 452
    functionLinenumberEnd: 464
    functionName: mail_search_args_simplify_drop_redundant_args
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_args_simplify_drop_redundant_args_real
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_simplify_drop_redundant_args(struct mail_search_args
      *all_args,\n\t\t\t\t\t      struct mail_search_arg **argsp,\n\t\t\t\t\t      bool
      and_arg)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_one_equals
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:511,1
    - Dst: mail_search_args_have_equal
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:514,1
    - Dst: mail_search_args_remove_equal
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:524,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:532,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:541,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 4
    argNames:
    - all_args
    - argsp
    - pool
    - and_arg
    argTypes:
    - struct mail_search_args*
    - struct mail_search_arg**
    - pool_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 549
    functionName: mail_search_args_simplify_extract_common
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_one_equals
    - mail_search_args_have_equal
    - p_new
    - mail_search_args_remove_equal
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_simplify_extract_common(struct mail_search_args
      *all_args,\n\t\t\t\t\t struct mail_search_arg **argsp,\n\t\t\t\t\t pool_t pool,
      bool and_arg)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:559,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:562,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:563,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:602,1
    - Dst: mail_search_args_simplify_drop_redundant_args
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:607,1
    - Dst: mail_search_args_simplify_extract_common
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:609,1
    - Dst: mail_search_args_simplify_sub
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:612,1
    - Dst: mail_search_args_simplify_set
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:618,1
    - Dst: mail_search_args_merge_flags
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:645,1
    - Dst: mail_search_args_merge_keywords
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:648,1
    - Dst: mail_search_args_merge_set
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:652,1
    - Dst: mail_search_args_merge_time
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:657,1
    - Dst: mail_search_args_merge_size
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:661,1
    - Dst: mail_search_args_merge_text
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:675,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:688,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:689,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 97
    argCount: 4
    argNames:
    - all_args
    - pool
    - argsp
    - parent_and
    argTypes:
    - struct mail_search_args*
    - pool_t
    - struct mail_search_arg**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 551
    functionDepth: 5
    functionLinenumber: 551
    functionLinenumberEnd: 691
    functionName: mail_search_args_simplify_sub
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 1
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - mail_search_args_simplify_extract_common
    - mail_search_args_merge_set
    - hash_table_create
    - mail_search_args_simplify_sub
    - hash_table_destroy
    - mail_search_args_merge_keywords
    - mail_search_args_simplify_set
    - pool_unref
    - mail_search_args_merge_flags
    - mail_search_args_merge_size
    - mail_search_args_merge_time
    - i_assert
    - mail_search_args_merge_text
    - mail_search_args_simplify_drop_redundant_args
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_simplify_sub(struct mail_search_args *all_args,
      pool_t pool,\n\t\t\t      struct mail_search_arg **argsp, bool parent_and)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_simplify_merge_flags
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:706,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 2
    argNames:
    - argsp
    - parent_and
    argTypes:
    - struct mail_search_arg**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 727
    functionName: mail_search_args_simplify_merge_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 1
    functionsReached:
    - mail_search_args_simplify_merge_flags
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_simplify_merge_flags(struct mail_search_arg
      **argsp,\n\t\t\t\t      bool parent_and)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_unnest_inthreads
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:741,1
    - Dst: mail_search_args_unnest_inthreads
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:752,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:772,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:787,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 4
    argNames:
    - args
    - argp
    - parent_inthreads
    - parent_and
    argTypes:
    - struct mail_search_args*
    - struct mail_search_arg**
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 793
    functionName: mail_search_args_unnest_inthreads
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 1
    functionsReached:
    - mail_search_args_unnest_inthreads
    - p_new
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_unnest_inthreads(struct mail_search_args *args,\n\t\t\t\t
      \ struct mail_search_arg **argp,\n\t\t\t\t  bool parent_inthreads, bool parent_and)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_simplify_sub
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:801,1
    - Dst: mail_search_args_unnest_inthreads
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:802,1
    - Dst: mail_search_args_simplify_sub
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:805,1
    - Dst: mail_search_args_simplify_drop_redundant_args
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:809,1
    - Dst: mail_search_args_simplify_extract_common
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:811,1
    - Dst: mail_search_args_simplify_sub
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:814,1
    - Dst: mail_search_args_simplify_merge_flags
      Src: /src/dovecot/src/lib-storage/mail-search-args-simplify.c:819,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 795
    functionDepth: 6
    functionLinenumber: 795
    functionLinenumberEnd: 822
    functionName: mail_search_args_simplify
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    functionUses: 2
    functionsReached:
    - mail_search_args_simplify_extract_common
    - mail_search_args_simplify_sub
    - mail_search_args_simplify_merge_flags
    - mail_search_args_unnest_inthreads
    - mail_search_args_simplify_drop_redundant_args
    linkageType: ''
    returnType: void
    signature: void mail_search_args_simplify(struct mail_search_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:20,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:21,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:22,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:23,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:24,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:25,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:26,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:27,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:28,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:29,1
    - Dst: mail_storage_class_register
      Src: /src/dovecot/src/lib-storage/mail-storage-register.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 18
    functionDepth: 3
    functionLinenumber: 18
    functionLinenumberEnd: 31
    functionName: mail_storage_register_all
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-register.c
    functionUses: 1
    functionsReached:
    - mail_storage_class_register
    linkageType: ''
    returnType: void
    signature: void mail_storage_register_all(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search.c:21,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mail-search.c:23,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-search.c:25,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/mail-search.c:28,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-search.c:35,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/mail-search.c:40,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mail-search.c:41,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/mail-search.c:41,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mail-search.c:44,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/lib-storage/mail-search.c:46,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/mail-search.c:49,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/lib-storage/mail-search.c:54,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/mail-search.c:57,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - arg
    - box
    - search_saved_uidset
    argTypes:
    - struct mail_search_arg*
    - struct mailbox*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 60
    functionName: mailbox_uidset_change
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - strcmp
    - memcpy
    - t_new
    - mailbox_get_seq_range
    - seq_range_array_add_range
    - seq_range_array_add
    - array_count
    - array_clear
    - array_front
    - array_is_created
    - array_append_array
    linkageType: ''
    returnType: void
    signature: "void mailbox_uidset_change(struct mail_search_arg *arg, struct mailbox
      *box,\n\t\t      const ARRAY_TYPE(seq_range) *search_saved_uidset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-search.c:69,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/lib-storage/mail-search.c:72,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mail-search.c:76,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/mail-search.c:81,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/mail-search.c:82,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib-storage/mail-search.c:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - arg
    - box
    argTypes:
    - struct mail_search_arg*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 88
    functionName: mailbox_seqset_change
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - mailbox_get_seq_range
    - array_get
    - array_clear
    - seq_range_array_remove_range
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: void mailbox_seqset_change(struct mail_search_arg *arg, struct mailbox
      *box)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_seqset_change
      Src: /src/dovecot/src/lib-storage/mail-search.c:98,1
    - Dst: mailbox_uidset_change
      Src: /src/dovecot/src/lib-storage/mail-search.c:102,1
    - Dst: mail_search_arg_change_sets
      Src: /src/dovecot/src/lib-storage/mail-search.c:109,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - args
    - arg
    - search_saved_uidset
    argTypes:
    - struct mail_search_args*
    - struct mail_search_arg*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 115
    functionName: mail_search_arg_change_sets
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - mail_search_arg_change_sets
    - mailbox_seqset_change
    - mailbox_uidset_change
    linkageType: ''
    returnType: void
    signature: "void mail_search_arg_change_sets(struct mail_search_args *args,\n\t\t\t
      \   struct mail_search_arg *arg,\n\t\t\t    const ARRAY_TYPE(seq_range) *search_saved_uidset)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:134,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/lib-storage/mail-search.c:136,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/lib-storage/mail-search.c:142,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:145,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-search.c:146,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search.c:153,1
    - Dst: mail_search_arg_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:168,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - args
    - arg
    argTypes:
    - struct mail_search_args*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 174
    functionName: mail_search_arg_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 2
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_get_namespace
    - p_new
    - mail_search_arg_init
    - imap_match_init
    - mailbox_keywords_create_valid
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_search_arg_init(struct mail_search_args *args,\n\t\t\t  struct
      mail_search_arg *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:183,1
    - Dst: mail_search_arg_change_sets
      Src: /src/dovecot/src/lib-storage/mail-search.c:191,1
    - Dst: mail_search_args_simplify
      Src: /src/dovecot/src/lib-storage/mail-search.c:195,1
    - Dst: mail_search_arg_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - args
    - box
    - change_sets
    - search_saved_uidset
    argTypes:
    - struct mail_search_args*
    - struct mailbox*
    - bool
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 176
    functionDepth: 7
    functionLinenumber: 176
    functionLinenumberEnd: 197
    functionName: mail_search_args_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 8
    functionsReached:
    - mail_search_arg_change_sets
    - i_assert
    - mail_search_arg_init
    - mail_search_args_simplify
    linkageType: ''
    returnType: void
    signature: "void mail_search_args_init(struct mail_search_args *args,\n\t\t\t
      \  struct mailbox *box, bool change_sets,\n\t\t\t   const ARRAY_TYPE(seq_range)
      *search_saved_uidset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_one_deinit
      Src: /src/dovecot/src/lib-storage/mail-search.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: mail_search_arg_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - mail_search_arg_one_deinit
    linkageType: ''
    returnType: void
    signature: void mail_search_arg_deinit(struct mail_search_arg *arg)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/lib-storage/mail-search.c:212,1
    - Dst: imap_match_deinit
      Src: /src/dovecot/src/lib-storage/mail-search.c:218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:221,1
    - Dst: mailbox_search_result_free
      Src: /src/dovecot/src/lib-storage/mail-search.c:223,1
    - Dst: mail_search_arg_deinit
      Src: /src/dovecot/src/lib-storage/mail-search.c:229,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 234
    functionName: mail_search_arg_one_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 4
    functionsReached:
    - imap_match_deinit
    - mail_search_arg_deinit
    - mailbox_keywords_unref
    - mailbox_search_result_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_search_arg_one_deinit(struct mail_search_arg *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_deinit
      Src: /src/dovecot/src/lib-storage/mail-search.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: mail_search_args_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 3
    functionsReached:
    - mail_search_arg_deinit
    linkageType: ''
    returnType: void
    signature: void mail_search_args_deinit(struct mail_search_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mail-search.c:252,1
    - Dst: mailbox_get_uid_range
      Src: /src/dovecot/src/lib-storage/mail-search.c:253,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mail-search.c:260,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/mail-search.c:261,1
    - Dst: mail_search_args_seq2uid_sub
      Src: /src/dovecot/src/lib-storage/mail-search.c:266,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - args
    - arg
    - uids
    argTypes:
    - struct mail_search_args*
    - struct mail_search_arg*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 273
    functionName: mail_search_args_seq2uid_sub
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - mail_search_args_seq2uid_sub
    - mailbox_get_uid_range
    - array_append_array
    - array_clear
    linkageType: ''
    returnType: void
    signature: "void mail_search_args_seq2uid_sub(struct mail_search_args *args,\n\t\t\t\t\t
      struct mail_search_arg *arg,\n\t\t\t\t\t ARRAY_TYPE(seq_range) *uids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mail-search.c:278,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:280,1
    - Dst: mail_search_args_seq2uid_sub
      Src: /src/dovecot/src/lib-storage/mail-search.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 282
    functionName: mail_search_args_seq2uid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - mail_search_args_seq2uid_sub
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: void mail_search_args_seq2uid(struct mail_search_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 290
    functionName: mail_search_args_ref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_search_args_ref(struct mail_search_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:296,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:300,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:303,1
    - Dst: mail_search_args_deinit
      Src: /src/dovecot/src/lib-storage/mail-search.c:305,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-search.c:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _args
    argTypes:
    - struct mail_search_args**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 292
    functionDepth: 3
    functionLinenumber: 292
    functionLinenumberEnd: 307
    functionName: mail_search_args_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 35
    functionsReached:
    - mail_search_args_deinit
    - i_assert
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void mail_search_args_unref(struct mail_search_args **_args)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search.c:314,1
    - Dst: mail_search_arg_dup
      Src: /src/dovecot/src/lib-storage/mail-search.c:329,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:337,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-search.c:338,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/mail-search.c:339,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search.c:357,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search.c:366,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search.c:370,1
    - Dst: mail_search_mime_part_dup
      Src: /src/dovecot/src/lib-storage/mail-search.c:375,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 59
    argCount: 2
    argNames:
    - pool
    - arg
    argTypes:
    - pool_t
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 379
    functionName: mail_search_arg_dup_one
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - p_array_init
    - mail_search_mime_part_dup
    - array_count
    - mail_search_arg_dup
    - array_append_array
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      mail_search_arg_dup_one(pool_t pool, const struct mail_search_arg *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_dup_one
      Src: /src/dovecot/src/lib-storage/mail-search.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pool
    - arg
    argTypes:
    - pool_t
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 391
    functionName: mail_search_arg_dup
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 2
    functionsReached:
    - mail_search_arg_dup_one
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      mail_search_arg_dup(pool_t pool, const struct mail_search_arg *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:398,1
    - Dst: mail_search_arg_dup
      Src: /src/dovecot/src/lib-storage/mail-search.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 393
    functionDepth: 3
    functionLinenumber: 393
    functionLinenumberEnd: 403
    functionName: mail_search_args_dup
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 2
    functionsReached:
    - mail_search_arg_dup
    - mail_search_build_init
    linkageType: ''
    returnType: struct mail_search_args
    signature: 'struct mail_search_args *

      mail_search_args_dup(const struct mail_search_args *args)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/lib-storage/mail-search.c:409,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - args
    - full_reset
    argTypes:
    - struct mail_search_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 431
    functionName: mail_search_args_reset
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 4
    functionsReached:
    - mail_search_args_reset
    linkageType: ''
    returnType: void
    signature: void mail_search_args_reset(struct mail_search_arg *args, bool full_reset)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:444,1
    - Dst: search_arg_foreach
      Src: /src/dovecot/src/lib-storage/mail-search.c:450,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:466,1
    - Dst: search_arg_foreach
      Src: /src/dovecot/src/lib-storage/mail-search.c:472,1
    - Dst: callback
      Src: /src/dovecot/src/lib-storage/mail-search.c:488,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 3
    argNames:
    - arg
    - callback
    - context
    argTypes:
    - struct mail_search_arg*
    - mail_search_foreach_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 490
    functionName: search_arg_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - search_arg_foreach
    - i_assert
    - callback
    linkageType: ''
    returnType: void
    signature: "void search_arg_foreach(struct mail_search_arg *arg,\n\t\t\t       mail_search_foreach_callback_t
      *callback,\n\t\t\t       void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_foreach
      Src: /src/dovecot/src/lib-storage/mail-search.c:501,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - args
    - callback
    - context
    argTypes:
    - struct mail_search_arg*
    - mail_search_foreach_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 493
    functionDepth: 2
    functionLinenumber: 493
    functionLinenumberEnd: 513
    functionName: mail_search_args_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - search_arg_foreach
    linkageType: ''
    returnType: int
    signature: "int mail_search_args_foreach(struct mail_search_arg *args,\n\t\t\t
      \    mail_search_foreach_callback_t *callback,\n\t\t\t     void *context)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_analyze
      Src: /src/dovecot/src/lib-storage/mail-search.c:531,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/mail-search.c:542,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/mail-search.c:547,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 4
    argNames:
    - arg
    - headers
    - have_body
    - have_text
    argTypes:
    - struct mail_search_arg*
    - buffer_t*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 560
    functionName: search_arg_analyze
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - search_arg_analyze
    - buffer_append
    linkageType: ''
    returnType: void
    signature: "void search_arg_analyze(struct mail_search_arg *arg, buffer_t *headers,\n\t\t
      \  bool *have_body, bool *have_text)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-storage/mail-search.c:571,1
    - Dst: search_arg_analyze
      Src: /src/dovecot/src/lib-storage/mail-search.c:573,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/mail-search.c:580,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 582
    functionName: mail_search_args_analyze
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - search_arg_analyze
    - t_buffer_create
    - buffer_append
    linkageType: ''
    returnType: char
    signature: "char *const *\nmail_search_args_analyze(struct mail_search_arg *args,\n\t\t\t
      bool *have_headers, bool *have_body)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_match_mailbox_arg
      Src: /src/dovecot/src/lib-storage/mail-search.c:595,1
    - Dst: mail_search_args_match_mailbox_arg
      Src: /src/dovecot/src/lib-storage/mail-search.c:604,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search.c:610,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:616,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/mail-search.c:616,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/mail-search.c:618,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - arg
    - vname
    - sep
    argTypes:
    - struct mail_search_arg*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 624
    functionName: mail_search_args_match_mailbox_arg
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - strcmp
    - imap_match_init
    - imap_match
    - pool_datastack_create
    - mail_search_args_match_mailbox_arg
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_match_mailbox_arg(const struct mail_search_arg
      *arg,\n\t\t\t\t   const char *vname, char sep)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_simplify
      Src: /src/dovecot/src/lib-storage/mail-search.c:634,1
    - Dst: mail_search_args_match_mailbox_arg
      Src: /src/dovecot/src/lib-storage/mail-search.c:637,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - args
    - vname
    - sep
    argTypes:
    - struct mail_search_args*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 628
    functionDepth: 7
    functionLinenumber: 628
    functionLinenumberEnd: 641
    functionName: mail_search_args_match_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - mail_search_args_match_mailbox_arg
    - mail_search_args_simplify
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_match_mailbox(struct mail_search_args *args,\n\t\t\t\t
      \   const char *vname, char sep)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_equals
      Src: /src/dovecot/src/lib-storage/mail-search.c:655,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib-storage/mail-search.c:666,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib-storage/mail-search.c:668,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search.c:673,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search.c:688,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search.c:701,1
    - Dst: mail_search_arg_equals
      Src: /src/dovecot/src/lib-storage/mail-search.c:713,1
    - Dst: mail_search_mime_parts_equal
      Src: /src/dovecot/src/lib-storage/mail-search.c:716,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-search.c:720,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - struct mail_search_arg*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 721
    functionName: mail_search_arg_one_equals
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 3
    functionsReached:
    - strcmp
    - mail_search_mime_parts_equal
    - i_unreached
    - strcasecmp
    - array_cmp
    - mail_search_arg_equals
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_arg_one_equals(const struct mail_search_arg *arg1,\n\t\t\t\tconst
      struct mail_search_arg *arg2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_one_equals
      Src: /src/dovecot/src/lib-storage/mail-search.c:727,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - struct mail_search_arg*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 723
    functionDepth: 2
    functionLinenumber: 723
    functionLinenumberEnd: 733
    functionName: mail_search_arg_equals
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - mail_search_arg_one_equals
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_arg_equals(const struct mail_search_arg *arg1,\n\t\t\t
      \   const struct mail_search_arg *arg2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_equals
      Src: /src/dovecot/src/lib-storage/mail-search.c:740,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - struct mail_search_arg**
    - struct mail_search_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 735
    functionDepth: 3
    functionLinenumber: 735
    functionLinenumberEnd: 741
    functionName: mail_search_arg_equals_p
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - mail_search_arg_equals
    linkageType: ''
    returnType: int
    signature: "int mail_search_arg_equals_p(const struct mail_search_arg *const *arg1,\n\t\t\t
      \    const struct mail_search_arg *const *arg2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:746,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:747,1
    - Dst: mail_search_arg_equals
      Src: /src/dovecot/src/lib-storage/mail-search.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - args1
    - args2
    argTypes:
    - struct mail_search_args*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 743
    functionDepth: 3
    functionLinenumber: 743
    functionLinenumberEnd: 750
    functionName: mail_search_args_equal
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mail_search_arg_equals
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_args_equal(const struct mail_search_args *args1,\n\t\t\t
      \   const struct mail_search_args *args2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-storage/mail-search.c:758,1
    - Dst: mail_search_args_result_serialize_arg
      Src: /src/dovecot/src/lib-storage/mail-search.c:766,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - arg
    - dest
    argTypes:
    - struct mail_search_arg*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 770
    functionName: mail_search_args_result_serialize_arg
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - mail_search_args_result_serialize_arg
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: "void mail_search_args_result_serialize_arg(const struct mail_search_arg
      *arg,\n\t\t\t\t      buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_result_serialize_arg
      Src: /src/dovecot/src/lib-storage/mail-search.c:778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - args
    - dest
    argTypes:
    - struct mail_search_args*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 772
    functionDepth: 2
    functionLinenumber: 772
    functionLinenumberEnd: 779
    functionName: mail_search_args_result_serialize
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - mail_search_args_result_serialize_arg
    linkageType: ''
    returnType: void
    signature: "void mail_search_args_result_serialize(const struct mail_search_args
      *args,\n\t\t\t\t       buffer_t *dest)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:788,1
    - Dst: mail_search_args_result_deserialize_arg
      Src: /src/dovecot/src/lib-storage/mail-search.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - arg
    - data
    - size
    argTypes:
    - struct mail_search_arg*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 781
    functionDepth: 1
    functionLinenumber: 781
    functionLinenumberEnd: 804
    functionName: mail_search_args_result_deserialize_arg
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 1
    functionsReached:
    - i_assert
    - mail_search_args_result_deserialize_arg
    linkageType: ''
    returnType: void
    signature: "void mail_search_args_result_deserialize_arg(struct mail_search_arg
      *arg,\n\t\t\t\t\tconst unsigned char **data,\n\t\t\t\t\tsize_t *size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_result_deserialize_arg
      Src: /src/dovecot/src/lib-storage/mail-search.c:812,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - args
    - data
    - size
    argTypes:
    - struct mail_search_args*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 806
    functionDepth: 2
    functionLinenumber: 806
    functionLinenumberEnd: 813
    functionName: mail_search_args_result_deserialize
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - mail_search_args_result_deserialize_arg
    linkageType: ''
    returnType: void
    signature: "void mail_search_args_result_deserialize(struct mail_search_args *args,\n\t\t\t\t\t
      const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mail-search.c:823,1
    - Dst: seq_range_array_merge_n
      Src: /src/dovecot/src/lib-storage/mail-search.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mail_search_seqset_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 826
    functionName: mail_search_seqset_next_batch
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_merge_n
    - array_clear
    linkageType: ''
    returnType: void
    signature: void mail_search_seqset_next_batch(struct mail_search_seqset_iter *iter)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:834,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mail-search.c:836,1
    - Dst: mail_search_args_ref
      Src: /src/dovecot/src/lib-storage/mail-search.c:839,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:854,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/mail-search.c:856,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-search.c:860,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search.c:864,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-search.c:867,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-search.c:868,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/mail-search.c:869,1
    - Dst: mail_search_seqset_next_batch
      Src: /src/dovecot/src/lib-storage/mail-search.c:870,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - search_args
    - messages_count
    - batch_size
    argTypes:
    - struct mail_search_args*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 828
    functionDepth: 2
    functionLinenumber: 828
    functionLinenumberEnd: 872
    functionName: mail_search_seqset_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 2
    functionsReached:
    - i_panic
    - i_array_init
    - seq_range_array_add_range
    - p_array_init
    - mail_search_seqset_next_batch
    - array_count
    - mail_search_args_ref
    - i_new
    - i_assert
    - array_append_array
    linkageType: ''
    returnType: struct mail_search_seqset_iter
    signature: "struct mail_search_seqset_iter *\nmail_search_seqset_iter_init(struct
      mail_search_args *search_args,\n\t\t\t     uint32_t messages_count, unsigned
      int batch_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/mail-search.c:881,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mail-search.c:882,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-search.c:883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mail_search_seqset_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 874
    functionDepth: 4
    functionLinenumber: 874
    functionLinenumberEnd: 884
    functionName: mail_search_seqset_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 2
    functionsReached:
    - mail_search_args_unref
    - array_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void mail_search_seqset_iter_deinit(struct mail_search_seqset_iter
      **_iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-search.c:888,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-search.c:889,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/lib-storage/mail-search.c:893,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-search.c:895,1
    - Dst: mail_search_seqset_next_batch
      Src: /src/dovecot/src/lib-storage/mail-search.c:896,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-search.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mail_search_seqset_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 886
    functionDepth: 2
    functionLinenumber: 886
    functionLinenumberEnd: 898
    functionName: mail_search_seqset_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search.c
    functionUses: 2
    functionsReached:
    - i_unreached
    - mail_search_seqset_next_batch
    - seq_range_array_remove_seq_range
    - array_count
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool mail_search_seqset_iter_next(struct mail_search_seqset_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 814
    functionName: MAIL_STORAGE_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_STORAGE_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 814
    functionDepth: 0
    functionLinenumber: 814
    functionLinenumberEnd: 816
    functionName: MAIL_STORAGE_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_STORAGE_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-storage/mail-storage-private.h:944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 942
    functionDepth: 1
    functionLinenumber: 942
    functionLinenumberEnd: 945
    functionName: mailbox_name_sanitize
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-private.h
    functionUses: 3
    functionsReached:
    - str_sanitize
    linkageType: ''
    returnType: char
    signature: char *mailbox_name_sanitize(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 17
    functionName: mail_index_view_get_messages_count
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mail_index_view_get_messages_count(struct mail_index_view
      *view ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - seq
    - uid_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 23
    functionName: mail_index_lookup_uid
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_index_lookup_uid(struct mail_index_view *view ATTR_UNUSED,\n\t\t\t
      \  uint32_t seq, uint32_t *uid_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - first_uid
    - last_uid
    - first_seq_r
    - last_seq_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: mail_index_lookup_seq_range
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_lookup_seq_range(struct mail_index_view *view ATTR_UNUSED,\n\t\t\t\t
      uint32_t first_uid, uint32_t last_uid,\n\t\t\t\t uint32_t *first_seq_r, uint32_t
      *last_seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - modseq
    - log_seq_r
    - log_offset_r
    argTypes:
    - struct mail_index_view*
    - uint64_t
    - uint32_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: mail_index_modseq_get_next_log_offset
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_index_modseq_get_next_log_offset(struct mail_index_view
      *view ATTR_UNUSED,\n\t\t\t\t\t   uint64_t modseq, uint32_t *log_seq_r,\n\t\t\t\t\t
      \  uoff_t *log_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: mail_transaction_log_view_open
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct mail_transaction_log_view
    signature: 'struct mail_transaction_log_view *

      mail_transaction_log_view_open(struct mail_transaction_log *log ATTR_UNUSED)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 7
    argNames:
    - ATTR_UNUSED
    - min_file_seq ATTR_UNUSED
    - min_file_offset ATTR_UNUSED
    - max_file_seq ATTR_UNUSED
    - max_file_offset ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log_view*
    - uint32_t
    - uoff_t
    - uint32_t
    - uoff_t
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: mail_transaction_log_view_set
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_view_set(struct mail_transaction_log_view
      *view ATTR_UNUSED,\n\t\t\t\t  uint32_t min_file_seq ATTR_UNUSED, uoff_t min_file_offset
      ATTR_UNUSED,\n\t\t\t\t  uint32_t max_file_seq ATTR_UNUSED, uoff_t max_file_offset
      ATTR_UNUSED,\n\t\t\t\t  bool *reset_r ATTR_UNUSED, const char **reason_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log_view**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 54
    functionName: mail_transaction_log_view_close
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_view_close(struct mail_transaction_log_view
      **view ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - file_seq_r
    argTypes:
    - struct mail_transaction_log*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: mail_transaction_log_get_tail
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_transaction_log_get_tail(struct mail_transaction_log *log
      ATTR_UNUSED,\n\t\t\t\t   uint32_t *file_seq_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:70,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - hdr_r
    - data_r
    argTypes:
    - struct mail_transaction_log_view*
    - struct mail_transaction_header**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 91
    functionName: mail_transaction_log_view_next
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 8
    functionsReached:
    - memcpy
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int mail_transaction_log_view_next(struct mail_transaction_log_view
      *view ATTR_UNUSED,\n\t\t\t\t   const struct mail_transaction_header **hdr_r,\n\t\t\t\t
      \  const void **data_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: mail_transaction_log_view_mark
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_view_mark(struct mail_transaction_log_view
      *view ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_transaction_log_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: mail_transaction_log_view_rewind
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_transaction_log_view_rewind(struct mail_transaction_log_view
      *view ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:105,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:106,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:111,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:112,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:113,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:118,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:121,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:122,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:124,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:125,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:126,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:130,1
    - Dst: mailbox_get_expunges
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:130,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:133,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:136,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:138,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:140,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:142,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:144,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:144,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 147
    functionName: test_mailbox_get_expunges
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 0
    functionsReached:
    - t_new
    - seq_range_array_add_range
    - mailbox_get_expunges
    - array_get
    - test_end
    - t_array_init
    - ARRAY_TYPE
    - test_assert
    - memcmp
    - memset
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mailbox_get_expunges(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:157,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-storage/test-mailbox-get.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 149
    functionDepth: 7
    functionLinenumber: 149
    functionLinenumberEnd: 162
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-storage/test-mailbox-get.c
    functionUses: 7
    functionsReached:
    - test_run
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:19,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:21,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:22,1
    - Dst: lua_newuserdata
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:24,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:26,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:27,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:28,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:29,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:30,1
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:32,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:33,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:33,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:34,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:36,1
    - Dst: mailbox_get_name
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:36,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - L
    - box
    argTypes:
    - lua_State*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 38
    functionName: dlua_push_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 1
    functionsReached:
    - lua_createtable
    - mailbox_get_name
    - lua_setfield
    - lua_pushstring
    - lua_newuserdata
    - lua_setmetatable
    - lua_pushcfunction
    - mailbox_get_vname
    - luaL_setmetatable
    - luaL_checkstack
    linkageType: ''
    returnType: void
    signature: void dlua_push_mailbox(lua_State *L, struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:43,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:44,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:46,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:46,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:48,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:49,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:50,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: lua_check_storage_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_istable
    - lua_pop
    - lua_pushliteral
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct mailbox
    signature: 'struct mailbox *

      lua_check_storage_mailbox(lua_State *L, int arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:57,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:58,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:60,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: lua_storage_mailbox_tostring
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - mailbox_get_vname
    - lua_check_storage_mailbox
    - DLUA_REQUIRE_ARGS
    - lua_pushstring
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_tostring(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:68,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:69,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:70,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:71,1
    - Dst: DLUA_MAILBOX_EQUALS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: lua_storage_mailbox_eq
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - DLUA_MAILBOX_EQUALS
    - lua_check_storage_mailbox
    - lua_pushboolean
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_eq(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:78,1
    - Dst: lua_storage_cmp
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:79,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: lua_storage_mailbox_lt
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_cmp
    - lua_pushboolean
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_lt(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:86,1
    - Dst: lua_storage_cmp
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:87,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: lua_storage_mailbox_le
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_cmp
    - lua_pushboolean
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_le(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:94,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:96,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:97,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:98,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:100,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: lua_storage_mailbox_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - lua_rawget
    - mailbox_free
    - lua_pop
    - DLUA_REQUIRE_ARGS
    - lua_pushliteral
    - lua_touserdata
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_unref(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:108,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: lua_storage_mailbox_gc
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - lua_touserdata
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_gc(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:118,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:119,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:122,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:123,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:124,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 116
    functionDepth: 9
    functionLinenumber: 116
    functionLinenumberEnd: 129
    functionName: lua_storage_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_error
    - mailbox_open
    - DLUA_REQUIRE_ARGS
    - lua_check_storage_mailbox
    - luaL_error
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_open(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:133,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:134,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 139
    functionName: lua_storage_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - lua_check_storage_mailbox
    - DLUA_REQUIRE_ARGS
    - mailbox_close
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_close(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:143,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:144,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:147,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:148,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:150,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:151,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:152,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 141
    functionDepth: 11
    functionLinenumber: 141
    functionLinenumberEnd: 157
    functionName: lua_storage_mailbox_sync
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_error
    - luaL_checkinteger
    - mailbox_sync
    - lua_check_storage_mailbox
    - DLUA_REQUIRE_ARGS_IN
    - luaL_error
    - mailbox_get_vname
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_sync(lua_State *L)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:163,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:167,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:168,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:169,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:170,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:172,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:173,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:174,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:175,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:176,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:179,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:181,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:181,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:182,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:193,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:194,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:195,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:196,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:197,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:198,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:199,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:200,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:201,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:203,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:204,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:206,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:207,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:208,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:209,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:210,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:211,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:212,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:214,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:216,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:216,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:217,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:218,1
    - Dst: lua_rawseti
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:219,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:221,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 159
    functionDepth: 8
    functionLinenumber: 159
    functionLinenumberEnd: 225
    functionName: lua_storage_mailbox_status
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - i_zero
    - lua_createtable
    - mailbox_get_last_error
    - lua_rawseti
    - array_foreach_elem
    - mailbox_get_status
    - lua_pushstring
    - luaL_checkinteger
    - array_is_created
    - lua_check_storage_mailbox
    - LUA_TABLE_SET_BOOL
    - array_count
    - luaL_error
    - mailbox_get_vname
    - lua_gettop
    - LUA_TABLE_SET_NUMBER
    - lua_setfield
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_status(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: LUA_TABLE_SET_NUMBER
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA_TABLE_SET_NUMBER(field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: LUA_TABLE_SET_BOOL
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA_TABLE_SET_BOOL(field)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:229,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:230,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:231,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:234,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:238,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:241,1
    - Dst: lua_storage_mailbox_attribute_get
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:245,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:249,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:251,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:259,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 261
    functionName: lua_storage_mailbox_metadata_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - lua_storage_mailbox_attribute_get
    - lua_pushnil
    - lua_check_storage_mailbox
    - lua_pushlstring
    - luaL_error
    - lua_tostring
    - lua_gettop
    - i_assert
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_metadata_get(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:265,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:266,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:267,1
    - Dst: lua_tolstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:271,1
    - Dst: lua_storage_mailbox_attribute_set
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:273,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 277
    functionName: lua_storage_mailbox_metadata_set
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - lua_tolstring
    - lua_storage_mailbox_attribute_set
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - lua_check_storage_mailbox
    - luaL_error
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_metadata_set(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:281,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:282,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:283,1
    - Dst: lua_storage_mailbox_attribute_set
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:286,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 290
    functionName: lua_storage_mailbox_metadata_unset
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_mailbox_attribute_set
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - lua_check_storage_mailbox
    - luaL_error
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_metadata_unset(lua_State *L)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:294,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:295,1
    - Dst: lua_check_storage_mailbox
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:296,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:299,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:303,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:306,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:307,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:311,1
    - Dst: lua_storage_mailbox_attribute_list
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:315,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:323,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:323,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:324,1
    - Dst: lua_pushlstring
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:326,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:329,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 332
    functionName: lua_storage_mailbox_metadata_list
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 0
    functionsReached:
    - lua_storage_mailbox_attribute_list
    - lua_createtable
    - t_strdup_printf
    - array_foreach
    - lua_pushlstring
    - lua_check_storage_mailbox
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - luaL_error
    - lua_tostring
    - lua_gettop
    - lua_setfield
    linkageType: ''
    returnType: int
    signature: int lua_storage_mailbox_metadata_list(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:360,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:361,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:362,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:363,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-storage/mailbox-lua.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 365
    functionName: lua_storage_mailbox_register
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-lua.c
    functionUses: 1
    functionsReached:
    - luaL_newmetatable
    - lua_pushvalue
    - lua_pop
    - luaL_setfuncs
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_storage_mailbox_register(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: mail_namespace_is_removable
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mail_namespace_is_removable(const struct mail_namespace *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.h:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 201
    functionName: mail_namespace_is_inbox_noinferiors
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.h
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool mail_namespace_is_inbox_noinferiors(struct mail_namespace *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/mail-namespace.h:211,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-namespace.h:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 213
    functionName: mail_namespace_prefix_is_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.h
    functionUses: 0
    functionsReached:
    - str_begins_icase
    - mail_namespace_get_sep
    linkageType: ''
    returnType: bool
    signature: bool mail_namespace_prefix_is_inbox(struct mail_namespace *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:24,1
    - Dst: struct mailbox*::notify_callback
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 26
    functionName: notify_delay_callback
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-watch.c
    functionUses: 0
    functionsReached:
    - struct mailbox*::notify_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void notify_delay_callback(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:35,1
    - Dst: ST_CHANGED
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:36,1
    - Dst: notify_delay_callback
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:43,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 44
    functionName: notify_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-watch.c
    functionUses: 0
    functionsReached:
    - notify_delay_callback
    - stat
    - ST_CHANGED
    linkageType: ''
    returnType: void
    signature: void notify_timeout(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:48,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: notify_callback
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-watch.c
    functionUses: 6
    functionsReached:
    - timeout_add_short
    - timeout_reset
    linkageType: ''
    returnType: void
    signature: void notify_callback(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:64,1
    - Dst: io_add_notify
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:66,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:68,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:69,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:70,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - box
    - path
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 85
    functionName: mailbox_watch_add
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-watch.c
    functionUses: 0
    functionsReached:
    - io_add_notify
    - timeout_add
    - i_strdup
    - stat
    - i_new
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mailbox_watch_add(struct mailbox *box, const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:95,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:96,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:97,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:100,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 102
    functionName: mailbox_watch_remove_all
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-watch.c
    functionUses: 0
    functionsReached:
    - io_remove
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mailbox_watch_remove_all(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: notify_extract_callback
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-watch.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void notify_extract_callback(struct mailbox *box ATTR_UNUSED)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:119,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:121,1
    - Dst: io_add_notify
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:123,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:125,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:128,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:140,1
    - Dst: io_loop_extract_notify_fd
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:144,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:148,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:149,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-storage/mailbox-watch.c:150,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - box
    - reason_r
    argTypes:
    - struct mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 152
    functionName: mailbox_watch_extract_notify_fd
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-watch.c
    functionUses: 1
    functionsReached:
    - io_add_notify
    - array_push_back
    - array_foreach_elem
    - io_remove
    - t_strdup_printf
    - io_loop_destroy
    - io_loop_create
    - io_loop_extract_notify_fd
    - array_count
    - t_array_init
    linkageType: ''
    returnType: int
    signature: int mailbox_watch_extract_notify_fd(struct mailbox *box, const char
      **reason_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - box
    - uid1
    - uid2
    - seq1_r
    - seq2_r
    argTypes:
    - struct mailbox*
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 12
    functionName: mailbox_get_seq_range
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-get.c
    functionUses: 9
    functionsReached:
    - mail_index_lookup_seq_range
    linkageType: ''
    returnType: void
    signature: "void mailbox_get_seq_range(struct mailbox *box, uint32_t uid1, uint32_t
      uid2,\n\t\t\t   uint32_t *seq1_r, uint32_t *seq2_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:22,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:25,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:26,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:27,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:32,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:33,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:37,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:38,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - box
    - seqs
    - uids
    argTypes:
    - struct mailbox*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 41
    functionName: mailbox_get_uid_range
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-get.c
    functionUses: 4
    functionsReached:
    - seq_range_array_add
    - seq_range_array_add_range
    - mail_index_lookup_uid
    - array_get
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void mailbox_get_uid_range(struct mailbox *box,\n\t\t\t   const ARRAY_TYPE(seq_range)
      *seqs,\n\t\t\t   ARRAY_TYPE(seq_range) *uids)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_modseq_get_next_log_offset
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:86,1
    - Dst: mail_transaction_log_view_open
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:99,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:100,1
    - Dst: mail_transaction_log_get_tail
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:105,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:107,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:108,1
    - Dst: mail_transaction_log_view_close
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:116,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - box
    - prev_modseq
    - log_view_r
    - modseq_too_old_r
    argTypes:
    - struct mailbox*
    - uint64_t
    - struct mail_transaction_log_view**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 122
    functionName: mailbox_get_expunges_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-get.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_close
    - mail_transaction_log_get_tail
    - mail_index_modseq_get_next_log_offset
    - mail_transaction_log_view_set
    - mail_transaction_log_view_open
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mailbox_get_expunges_init(struct mailbox *box, uint64_t prev_modseq,\n\t\t\t
      \ struct mail_transaction_log_view **log_view_r,\n\t\t\t  bool *modseq_too_old_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:137,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:145,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:147,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:149,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:151,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:157,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:158,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:159,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - log_view
    - expunged_uids
    - expunges
    argTypes:
    - struct mail_transaction_log_view*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 162
    functionName: mailbox_get_expunged_guids
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-get.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - memcpy
    - seq_range_array_iter_nth
    - seq_range_exists
    - array_append_space
    - seq_range_array_iter_init
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: "void mailbox_get_expunged_guids(struct mail_transaction_log_view *log_view,\n\t\t\t
      \  ARRAY_TYPE(seq_range) *expunged_uids,\n\t\t\t   ARRAY_TYPE(mailbox_expunge_rec)
      *expunges)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:179,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:179,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:180,1
    - Dst: mailbox_get_expunges_init
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:182,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:186,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:191,1
    - Dst: mail_transaction_log_view_mark
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:194,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:195,1
    - Dst: add_expunges
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:203,1
    - Dst: add_guid_expunges
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:206,1
    - Dst: mail_transaction_log_view_rewind
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:211,1
    - Dst: seq_range_array_intersect
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:214,1
    - Dst: mailbox_get_expunged_guids
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:217,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:218,1
    - Dst: mail_transaction_log_view_close
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:221,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 5
    argNames:
    - box
    - prev_modseq
    - uids_filter
    - expunged_uids
    - expunges
    argTypes:
    - struct mailbox*
    - uint64_t
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 223
    functionName: mailbox_get_expunges_full
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-get.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_transaction_log_view_next
    - mail_transaction_log_view_close
    - mailbox_get_expunges_init
    - seq_range_array_intersect
    - mailbox_get_expunged_guids
    - array_count
    - add_expunges
    - ARRAY_TYPE
    - array_front
    - add_guid_expunges
    - i_assert
    - array_free
    - mail_transaction_log_view_rewind
    - mail_transaction_log_view_mark
    linkageType: ''
    returnType: void
    signature: "void mailbox_get_expunges_full(struct mailbox *box, uint64_t prev_modseq,\n\t\t\t
      \ const ARRAY_TYPE(seq_range) *uids_filter,\n\t\t\t  ARRAY_TYPE(seq_range) *expunged_uids,\n\t\t\t
      \ ARRAY_TYPE(mailbox_expunge_rec) *expunges)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_expunges_full
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - box
    - prev_modseq
    - uids_filter
    - expunges
    argTypes:
    - struct mailbox*
    - uint64_t
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 231
    functionName: mailbox_get_expunges
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-get.c
    functionUses: 1
    functionsReached:
    - mailbox_get_expunges_full
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_get_expunges(struct mailbox *box, uint64_t prev_modseq,\n\t\t\t
      \ const ARRAY_TYPE(seq_range) *uids_filter,\n\t\t\t  ARRAY_TYPE(mailbox_expunge_rec)
      *expunges)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_expunges_full
      Src: /src/dovecot/src/lib-storage/mailbox-get.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - box
    - prev_modseq
    - uids_filter
    - expunged_uids
    argTypes:
    - struct mailbox*
    - uint64_t
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 239
    functionName: mailbox_get_expunged_uids
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-get.c
    functionUses: 2
    functionsReached:
    - mailbox_get_expunges_full
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_get_expunged_uids(struct mailbox *box, uint64_t prev_modseq,\n\t\t\t
      \      const ARRAY_TYPE(seq_range) *uids_filter,\n\t\t\t       ARRAY_TYPE(seq_range)
      *expunged_uids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/lib-storage/mail-lua.c:19,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/lib-storage/mail-lua.c:21,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/lib-storage/mail-lua.c:22,1
    - Dst: lua_pushlightuserdata
      Src: /src/dovecot/src/lib-storage/mail-lua.c:24,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-lua.c:25,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mail-lua.c:36,1
    - Dst: LUA_TABLE_SET_NUMBER
      Src: /src/dovecot/src/lib-storage/mail-lua.c:37,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/lib-storage/mail-lua.c:38,1
    - Dst: dlua_push_mailbox
      Src: /src/dovecot/src/lib-storage/mail-lua.c:40,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-lua.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - L
    - mail
    argTypes:
    - lua_State*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 17
    functionDepth: 2
    functionLinenumber: 17
    functionLinenumberEnd: 43
    functionName: dlua_push_mail
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushlightuserdata
    - lua_createtable
    - luaL_checkstack
    - dlua_push_mailbox
    - LUA_TABLE_SET_BOOL
    - luaL_setmetatable
    - LUA_TABLE_SET_NUMBER
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void dlua_push_mail(lua_State *L, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: LUA_TABLE_SET_NUMBER
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA_TABLE_SET_NUMBER(field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: LUA_TABLE_SET_BOOL
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA_TABLE_SET_BOOL(field)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-storage/mail-lua.c:48,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-lua.c:49,1
    - Dst: lua_typename
      Src: /src/dovecot/src/lib-storage/mail-lua.c:51,1
    - Dst: lua_type
      Src: /src/dovecot/src/lib-storage/mail-lua.c:51,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-storage/mail-lua.c:53,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/lib-storage/mail-lua.c:54,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/lib-storage/mail-lua.c:55,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-storage/mail-lua.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 58
    functionName: lua_check_storage_mail
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 0
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_istable
    - lua_pop
    - lua_pushliteral
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct mail
    signature: 'struct mail *

      lua_check_storage_mail(lua_State *L, int arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-lua.c:62,1
    - Dst: lua_check_storage_mail
      Src: /src/dovecot/src/lib-storage/mail-lua.c:63,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-lua.c:66,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mail-lua.c:66,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-storage/mail-lua.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: lua_storage_mail_tostring
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - t_strdup_printf
    - DLUA_REQUIRE_ARGS
    - lua_check_storage_mail
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_tostring(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-lua.c:74,1
    - Dst: lua_check_storage_mail
      Src: /src/dovecot/src/lib-storage/mail-lua.c:75,1
    - Dst: lua_check_storage_mail
      Src: /src/dovecot/src/lib-storage/mail-lua.c:76,1
    - Dst: DLUA_MAILBOX_EQUALS
      Src: /src/dovecot/src/lib-storage/mail-lua.c:78,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mail-lua.c:79,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mail-lua.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 83
    functionName: lua_storage_mail_eq
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushboolean
    - lua_check_storage_mail
    - DLUA_MAILBOX_EQUALS
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_eq(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-lua.c:87,1
    - Dst: lua_check_storage_mail
      Src: /src/dovecot/src/lib-storage/mail-lua.c:88,1
    - Dst: lua_check_storage_mail
      Src: /src/dovecot/src/lib-storage/mail-lua.c:89,1
    - Dst: DLUA_MAILBOX_EQUALS
      Src: /src/dovecot/src/lib-storage/mail-lua.c:91,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-lua.c:92,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mail-lua.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 97
    functionName: lua_storage_mail_lt
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushboolean
    - DLUA_MAILBOX_EQUALS
    - DLUA_REQUIRE_ARGS
    - lua_check_storage_mail
    - luaL_error
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_lt(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-storage/mail-lua.c:101,1
    - Dst: lua_check_storage_mail
      Src: /src/dovecot/src/lib-storage/mail-lua.c:102,1
    - Dst: lua_check_storage_mail
      Src: /src/dovecot/src/lib-storage/mail-lua.c:103,1
    - Dst: DLUA_MAILBOX_EQUALS
      Src: /src/dovecot/src/lib-storage/mail-lua.c:105,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-storage/mail-lua.c:106,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/lib-storage/mail-lua.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 112
    functionName: lua_storage_mail_le
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushboolean
    - DLUA_MAILBOX_EQUALS
    - DLUA_REQUIRE_ARGS
    - lua_check_storage_mail
    - luaL_error
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_le(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_check_storage_mail
      Src: /src/dovecot/src/lib-storage/mail-lua.c:116,1
    - Dst: lua_pushliteral
      Src: /src/dovecot/src/lib-storage/mail-lua.c:119,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-storage/mail-lua.c:120,1
    - Dst: lua_rawset
      Src: /src/dovecot/src/lib-storage/mail-lua.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 124
    functionName: lua_storage_mail_gc
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushnil
    - lua_pushliteral
    - lua_check_storage_mail
    - lua_rawset
    linkageType: ''
    returnType: int
    signature: int lua_storage_mail_gc(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-storage/mail-lua.c:137,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-storage/mail-lua.c:138,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-storage/mail-lua.c:139,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/lib-storage/mail-lua.c:140,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-storage/mail-lua.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: lua_storage_mail_register
    functionSourceFile: /src/dovecot/src/lib-storage/mail-lua.c
    functionUses: 1
    functionsReached:
    - luaL_newmetatable
    - lua_pushvalue
    - lua_pop
    - luaL_setfuncs
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_storage_mail_register(struct dlua_script *script)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list*::v::notify_init
      Src: /src/dovecot/src/lib-storage/mailbox-list-notify.c:13,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - list
    - mask
    - notify_r
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_notify_event
    - struct mailbox_list_notify**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 14
    functionName: mailbox_list_notify_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-notify.c
    functionUses: 2
    functionsReached:
    - struct mailbox_list*::v::notify_init
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_notify_init(struct mailbox_list *list,\n\t\t\t     enum
      mailbox_list_notify_event mask,\n\t\t\t     struct mailbox_list_notify **notify_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list_notify*::list::v::notify_deinit
      Src: /src/dovecot/src/lib-storage/mailbox-list-notify.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _notify
    argTypes:
    - struct mailbox_list_notify**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 23
    functionName: mailbox_list_notify_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-notify.c
    functionUses: 3
    functionsReached:
    - struct mailbox_list_notify*::list::v::notify_deinit
    linkageType: ''
    returnType: void
    signature: void mailbox_list_notify_deinit(struct mailbox_list_notify **_notify)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list_notify*::list::v::notify_next
      Src: /src/dovecot/src/lib-storage/mailbox-list-notify.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - notify
    - rec_r
    argTypes:
    - struct mailbox_list_notify*
    - struct mailbox_list_notify_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 29
    functionName: mailbox_list_notify_next
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-notify.c
    functionUses: 1
    functionsReached:
    - struct mailbox_list_notify*::list::v::notify_next
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_notify_next(struct mailbox_list_notify *notify,\n\t\t\t
      \    const struct mailbox_list_notify_rec **rec_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list_notify*::list::v::notify_wait
      Src: /src/dovecot/src/lib-storage/mailbox-list-notify.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - notify
    - context
    argTypes:
    - struct mailbox_list_notify*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: mailbox_list_notify_wait
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-notify.c
    functionUses: 2
    functionsReached:
    - struct mailbox_list_notify*::list::v::notify_wait
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_notify_wait(struct mailbox_list_notify *notify,\n\t\t\t
      \     void (*callback)(void *context), void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list_notify*::list::v::notify_flush
      Src: /src/dovecot/src/lib-storage/mailbox-list-notify.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - notify
    argTypes:
    - struct mailbox_list_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: mailbox_list_notify_flush
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-list-notify.c
    functionUses: 1
    functionsReached:
    - struct mailbox_list_notify*::list::v::notify_flush
    linkageType: ''
    returnType: void
    signature: void mailbox_list_notify_flush(struct mailbox_list_notify *notify)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail-thread.c:19,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-thread.c:20,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - type_r
    argTypes:
    - char*
    - enum mail_thread_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 26
    functionName: mail_thread_type_parse
    functionSourceFile: /src/dovecot/src/lib-storage/mail-thread.c
    functionUses: 2
    functionsReached:
    - strcasecmp
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool mail_thread_type_parse(const char *str, enum mail_thread_type
      *type_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail-thread.c:32,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-thread.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum mail_thread_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 37
    functionName: mail_thread_type_to_str
    functionSourceFile: /src/dovecot/src/lib-storage/mail-thread.c
    functionUses: 1
    functionsReached:
    - i_panic
    - N_ELEMENTS
    linkageType: ''
    returnType: char
    signature: char *mail_thread_type_to_str(enum mail_thread_type type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/mail-copy.c:18,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail-copy.c:19,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-copy.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - mail
    - func
    argTypes:
    - struct mail_save_context*
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 21
    functionName: mail_copy_set_failed
    functionSourceFile: /src/dovecot/src/lib-storage/mail-copy.c
    functionUses: 0
    functionsReached:
    - mail_storage_get_last_error
    - t_strdup_printf
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: "void mail_copy_set_failed(struct mail_save_context *ctx, struct mail
      *mail,\n\t\t     const char *func)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/mail-copy.c:30,1
    - Dst: mail_copy_set_failed
      Src: /src/dovecot/src/lib-storage/mail-copy.c:31,1
    - Dst: mailbox_save_set_received_date
      Src: /src/dovecot/src/lib-storage/mail-copy.c:34,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/mail-copy.c:37,1
    - Dst: mail_copy_set_failed
      Src: /src/dovecot/src/lib-storage/mail-copy.c:39,1
    - Dst: mailbox_save_set_from_envelope
      Src: /src/dovecot/src/lib-storage/mail-copy.c:43,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/mail-copy.c:46,1
    - Dst: mail_copy_set_failed
      Src: /src/dovecot/src/lib-storage/mail-copy.c:47,1
    - Dst: mailbox_save_set_guid
      Src: /src/dovecot/src/lib-storage/mail-copy.c:51,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 54
    functionName: mail_save_copy_default_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/mail-copy.c
    functionUses: 0
    functionsReached:
    - mailbox_save_set_guid
    - mailbox_save_set_from_envelope
    - mail_get_received_date
    - mail_get_special
    - mail_copy_set_failed
    - mailbox_save_set_received_date
    linkageType: ''
    returnType: int
    signature: "int mail_save_copy_default_metadata(struct mail_save_context *ctx,\n\t\t\t\t
      \   struct mail *mail)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::set_uid_cache_updates
      Src: /src/dovecot/src/lib-storage/mail-copy.c:67,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/mail-copy.c:69,1
    - Dst: mail_copy_set_failed
      Src: /src/dovecot/src/lib-storage/mail-copy.c:70,1
    - Dst: mail_save_copy_default_metadata
      Src: /src/dovecot/src/lib-storage/mail-copy.c:73,1
    - Dst: mailbox_save_begin
      Src: /src/dovecot/src/lib-storage/mail-copy.c:76,1
    - Dst: mailbox_save_continue
      Src: /src/dovecot/src/lib-storage/mail-copy.c:81,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/mail-copy.c:83,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-copy.c:84,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mail-copy.c:88,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/mail-copy.c:90,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/mail-copy.c:90,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context**
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 94
    functionName: mail_storage_try_copy
    functionSourceFile: /src/dovecot/src/lib-storage/mail-copy.c
    functionUses: 0
    functionsReached:
    - i_assert
    - struct mail_private*::v::set_uid_cache_updates
    - mailbox_save_continue
    - mail_get_stream_because
    - i_stream_get_error
    - mail_save_copy_default_metadata
    - mailbox_set_critical
    - mailbox_save_begin
    - i_stream_read
    - mail_copy_set_failed
    - i_stream_get_name
    linkageType: ''
    returnType: int
    signature: int mail_storage_try_copy(struct mail_save_context **_ctx, struct mail
      *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-copy.c:98,1
    - Dst: mail_storage_try_copy
      Src: /src/dovecot/src/lib-storage/mail-copy.c:100,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/lib-storage/mail-copy.c:102,1
    - Dst: mailbox_save_finish
      Src: /src/dovecot/src/lib-storage/mail-copy.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 5
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: mail_storage_copy
    functionSourceFile: /src/dovecot/src/lib-storage/mail-copy.c
    functionUses: 1
    functionsReached:
    - mailbox_save_finish
    - i_assert
    - mailbox_save_cancel
    - mail_storage_try_copy
    linkageType: ''
    returnType: int
    signature: int mail_storage_copy(struct mail_save_context *ctx, struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/mail-copy.c:112,1
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/mail-copy.c:114,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 126
    functionName: mail_storage_copy_can_use_hardlink
    functionSourceFile: /src/dovecot/src/lib-storage/mail-copy.c
    functionUses: 0
    functionsReached:
    - mailbox_get_permissions
    linkageType: ''
    returnType: bool
    signature: "bool mail_storage_copy_can_use_hardlink(struct mailbox *src,\n\t\t\t\t\tstruct
      mailbox *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:19,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:20,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:23,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:24,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:26,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:28,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:30,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 13
    functionDepth: 4
    functionLinenumber: 13
    functionLinenumberEnd: 37
    functionName: test_mail_storage_init
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage-common.c
    functionUses: 11
    functionsReached:
    - p_new
    - i_warning
    - pool_allocfree_create
    - io_loop_create
    - mail_storage_service_init
    - unlink_directory
    - test_dir_get
    - p_strdup_printf
    linkageType: ''
    returnType: struct test_mail_storage_ctx
    signature: struct test_mail_storage_ctx *test_mail_storage_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:43,1
    - Dst: chdir
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:47,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:48,1
    - Dst: chdir
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:49,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:50,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:52,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:54,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:56,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct test_mail_storage_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 39
    functionDepth: 11
    functionLinenumber: 39
    functionLinenumberEnd: 59
    functionName: test_mail_storage_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage-common.c
    functionUses: 10
    functionsReached:
    - i_error
    - mail_storage_service_deinit
    - i_fatal
    - chdir
    - io_loop_destroy
    - pool_unref
    - unlink_directory
    linkageType: ''
    returnType: void
    signature: void test_mail_storage_deinit(struct test_mail_storage_ctx **_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:67,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:69,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:72,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:77,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:78,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:81,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:82,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:83,1
    - Dst: mkdir_parents
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:83,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:85,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:86,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:86,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:89,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:91,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:94,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:95,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:97,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:99,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:105,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - set
    argTypes:
    - struct test_mail_storage_ctx*
    - struct test_mail_storage_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 61
    functionDepth: 9
    functionLinenumber: 61
    functionLinenumberEnd: 110
    functionName: test_mail_storage_init_user
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage-common.c
    functionUses: 12
    functionsReached:
    - i_error
    - array_push_back
    - mail_storage_service_lookup_next
    - str_array_length
    - t_strdup_printf
    - mkdir_parents
    - i_fatal
    - unlink_directory
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - i_assert
    - N_ELEMENTS
    - array_append
    linkageType: ''
    returnType: void
    signature: "void test_mail_storage_init_user(struct test_mail_storage_ctx *ctx,\n\t\t\t\t
      const struct test_mail_storage_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/lib-storage/test-mail-storage-common.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_mail_storage_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: test_mail_storage_deinit_user
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-storage-common.c
    functionUses: 12
    functionsReached:
    - mail_user_deinit
    linkageType: ''
    returnType: void
    signature: void test_mail_storage_deinit_user(struct test_mail_storage_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 24
    functionName: mail_search_build_new
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 13
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\nmail_search_build_new(struct mail_search_build_context
      *ctx,\n\t\t      enum mail_search_arg_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:33,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:34,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 38
    functionName: mail_search_build_str
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 4
    functionsReached:
    - mail_search_build_new
    - p_strdup
    - mail_search_parse_string
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\nmail_search_build_str(struct mail_search_build_context
      *ctx,\n\t\t      enum mail_search_arg_type type)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_key
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:54,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:57,1
    - Dst: mail_search_build_list
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:58,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:69,1
    - Dst: mail_search_register_find
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:71,1
    - Dst: struct mail_search_register_arg*::build
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:73,1
    - Dst: mail_search_register_get_fallback
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:74,1
    - Dst: fallback
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:75,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:78,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - parent
    - arg_r
    argTypes:
    - struct mail_search_build_context*
    - struct mail_search_arg*
    - struct mail_search_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 85
    functionName: mail_search_build_key_int
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 0
    functionsReached:
    - strcmp
    - struct mail_search_register_arg*::build
    - mail_search_register_find
    - t_str_ucase
    - fallback
    - mail_search_register_get_fallback
    - mail_search_build_list
    - p_strconcat
    - mail_search_parse_key
    linkageType: ''
    returnType: int
    signature: "int mail_search_build_key_int(struct mail_search_build_context *ctx,\n\t\t\t
      \ struct mail_search_arg *parent,\n\t\t\t  struct mail_search_arg **arg_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_key_int
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - parent
    - arg_r
    argTypes:
    - struct mail_search_build_context*
    - struct mail_search_arg*
    - struct mail_search_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: mail_search_build_key
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 4
    functionsReached:
    - mail_search_build_key_int
    linkageType: ''
    returnType: int
    signature: "int mail_search_build_key(struct mail_search_build_context *ctx,\n\t\t\t
      \ struct mail_search_arg *parent,\n\t\t\t  struct mail_search_arg **arg_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:109,1
    - Dst: mail_search_build_key_int
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - arg_r
    argTypes:
    - struct mail_search_build_context*
    - struct mail_search_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 133
    functionName: mail_search_build_list
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 1
    functionsReached:
    - mail_search_build_key_int
    - p_new
    linkageType: ''
    returnType: int
    signature: "int mail_search_build_list(struct mail_search_build_context *ctx,\n\t\t\t\t
      \ struct mail_search_arg **arg_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:149,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:150,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:154,1
    - Dst: mail_search_build_list
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:156,1
    - Dst: mail_search_build_get_utf8
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:159,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:162,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:163,1
    - Dst: mail_search_parser_get_error
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:163,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:166,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 5
    argNames:
    - reg
    - parser
    - charset
    - args_r
    - client_error_r
    argTypes:
    - struct mail_search_register*
    - struct mail_search_parser*
    - char**
    - struct mail_search_args**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 179
    functionName: mail_search_build
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 3
    functionsReached:
    - i_zero
    - p_strdup
    - t_strdup
    - pool_unref
    - mail_search_parser_get_error
    - mail_search_build_get_utf8
    - mail_search_build_init
    - mail_search_build_list
    linkageType: ''
    returnType: int
    signature: "int mail_search_build(struct mail_search_register *reg,\n\t\t      struct
      mail_search_parser *parser, const char **charset,\n\t\t      struct mail_search_args
      **args_r,\n\t\t      const char **client_error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:186,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 191
    functionName: mail_search_build_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 24
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_search_args
    signature: struct mail_search_args *mail_search_build_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - args
    - type
    argTypes:
    - struct mail_search_args*
    - enum mail_search_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 205
    functionName: mail_search_build_add
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 4
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\nmail_search_build_add(struct mail_search_args
      *args,\n\t\t      enum mail_search_arg_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 210
    functionName: mail_search_build_add_all
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 8
    functionsReached:
    - mail_search_build_add
    linkageType: ''
    returnType: void
    signature: void mail_search_build_add_all(struct mail_search_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:217,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:219,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - args
    - seq1
    - seq2
    argTypes:
    - struct mail_search_args*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 221
    functionName: mail_search_build_add_seqset
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 3
    functionsReached:
    - seq_range_array_add_range
    - mail_search_build_add
    - p_array_init
    linkageType: ''
    returnType: void
    signature: "void mail_search_build_add_seqset(struct mail_search_args *args,\n\t\t\t\t
      \ uint32_t seq1, uint32_t seq2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:229,1
    - Dst: charset_to_utf8_str
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:232,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:243,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mail-search-build.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - input
    - output_r
    argTypes:
    - struct mail_search_build_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 246
    functionName: mail_search_build_get_utf8
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-build.c
    functionUses: 7
    functionsReached:
    - str_c
    - t_str_new
    - charset_to_utf8_str
    - p_strdup
    linkageType: ''
    returnType: int
    signature: "int mail_search_build_get_utf8(struct mail_search_build_context *ctx,\n\t\t\t
      \      const char *input, const char **output_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 237
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 260
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 283
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 322
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 378
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:472,1
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:473,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 478
    functionName: mail_storage_event_get_user
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - event_get_ptr
    - event_get_parent
    linkageType: ''
    returnType: struct mail_user
    signature: struct mail_user *mail_storage_event_get_user(struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:484,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 3
    argNames:
    - set
    - pool
    - str
    argTypes:
    - struct mail_user_settings*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 485
    functionName: fix_base_path
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - p_strconcat
    linkageType: ''
    returnType: void
    signature: void fix_base_path(struct mail_user_settings *set, pool_t pool, const
      char **str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:496,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:499,1
    - Dst: message_header_name_is_valid
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:500,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:501,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:505,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:511,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - key
    - value
    - error_r
    argTypes:
    - char*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 516
    functionName: mail_cache_fields_parse
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - message_header_name_is_valid
    - strcmp
    - t_strdup_printf
    - settings_boollist_get
    - str_begins_icase
    linkageType: ''
    returnType: bool
    signature: "bool mail_cache_fields_parse(const char *key,\n\t\t\t\t    const ARRAY_TYPE(const_string)
      *value,\n\t\t\t\t    const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:524,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:525,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:528,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:543,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:544,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - key
    - value
    - pool
    - type_r
    argTypes:
    - char*
    - char**
    - pool_t
    - enum mailbox_list_path_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 550
    functionName: mailbox_list_get_path_setting
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup_until
    - N_ELEMENTS
    - strrchr
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_get_path_setting(const char *key, const char **value,\n\t\t\t
      \     pool_t pool, enum mailbox_list_path_type *type_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:562,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:563,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:564,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:570,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:571,1
    - Dst: mail_storage_event_get_user
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:575,1
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:577,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:584,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:590,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:592,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:593,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:600,1
    - Dst: mailbox_list_get_path_setting
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:604,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 6
    argNames:
    - ATTR_UNUSED
    - _set
    - key
    - value
    - flags
    - error_r
    argTypes:
    - struct event*
    - void*
    - char*
    - char**
    - enum setting_apply_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 552
    functionDepth: 4
    functionLinenumber: 552
    functionLinenumberEnd: 611
    functionName: mail_storage_settings_apply
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path_setting
    - str_begins_with
    - p_strndup
    - mail_user_get_home
    - strlen
    - t_strdup_printf
    - t_strndup
    - p_strconcat
    - mail_storage_event_get_user
    linkageType: ''
    returnType: bool
    signature: "bool mail_storage_settings_apply(struct event *event ATTR_UNUSED,
      void *_set,\n\t\t\t    const char *key, const char **value,\n\t\t\t    enum
      setting_apply_flags flags,\n\t\t\t    const char **error_r)"
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:627,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:629,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:631,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:634,1
    - Dst: file_lock_method_parse
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:649,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:651,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:667,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:668,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:672,1
    - Dst: str_array_find
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:683,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:684,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:691,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:700,1
    - Dst: hash_format_init
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:705,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:707,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:711,1
    - Dst: hash_format_deinit_free
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:716,1
    - Dst: uri_check
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:720,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:721,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:728,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:729,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:730,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:733,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:738,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:739,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:741,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:743,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:745,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:746,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:747,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:749,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:756,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:757,1
    - Dst: mail_cache_fields_parse
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:760,1
    - Dst: mail_cache_fields_parse
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:763,1
    - Dst: mail_cache_fields_parse
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:766,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:770,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:775,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:785,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:789,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:794,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:799,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:806,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:809,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:814,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:816,1
    - Dst: DOC_LINK
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:818,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 137
    argCount: 4
    argNames:
    - event
    - _set
    - pool
    - error_r
    argTypes:
    - struct event*
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 613
    functionDepth: 3
    functionLinenumber: 613
    functionLinenumberEnd: 822
    functionName: mail_storage_settings_ext_check
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_strdup
    - mail_cache_fields_parse
    - p_array_init
    - var_expand_program_create
    - strlen
    - t_strdup_printf
    - array_not_empty
    - hash_format_init
    - settings_boollist_get
    - array_front
    - array_append_zero
    - p_strdup_until
    - file_lock_method_parse
    - DOC_LINK
    - e_warning
    - str_array_find
    - uri_check
    - hash_format_deinit_free
    - var_expand_program_free
    - p_strconcat
    - strcmp
    - strrchr
    - array_push_back
    - str_begins
    - getenv
    - ARRAY_TYPE
    - var_expand_program_variables
    - t_strconcat
    - p_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool mail_storage_settings_ext_check(struct event *event, void *_set,
      pool_t pool,\n\t\t\t\tconst char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:833,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:836,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:837,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:838,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:839,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:840,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:842,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:843,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:847,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:853,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:854,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:855,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:856,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:860,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - event
    - pool
    - ns
    - error_r
    argTypes:
    - struct event*
    - pool_t
    - struct mail_namespace_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 824
    functionDepth: 3
    functionLinenumber: 824
    functionLinenumberEnd: 862
    functionName: namespace_parse_mailboxes
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - event_create
    - pool_add_external_ref
    - event_unref
    - p_array_init
    - array_foreach_elem
    - array_push_back
    - t_strdup_printf
    - array_not_empty
    - settings_free
    - array_is_empty
    - array_count
    - settings_event_add_list_filter_name
    - settings_get_filter
    - event_add_str
    linkageType: ''
    returnType: int
    signature: "int namespace_parse_mailboxes(struct event *event, pool_t pool,\n\t\t\t
      \ struct mail_namespace_settings *ns,\n\t\t\t  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:871,1
    - Dst: namespace_parse_mailboxes
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:877,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - event
    - _set
    - pool
    - error_r
    argTypes:
    - struct event*
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 864
    functionDepth: 4
    functionLinenumber: 864
    functionLinenumberEnd: 878
    functionName: namespace_settings_ext_check
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - namespace_parse_mailboxes
    linkageType: ''
    returnType: bool
    signature: "bool namespace_settings_ext_check(struct event *event,\n\t\t\t\t\t
      void *_set, pool_t pool,\n\t\t\t\t\t const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:886,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:888,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:890,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:892,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:894,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:896,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:898,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:900,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 903
    functionName: mailbox_special_use_exists
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool mailbox_special_use_exists(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:911,1
    - Dst: mailbox_special_use_exists
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:913,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:914,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct mailbox_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 905
    functionDepth: 2
    functionLinenumber: 905
    functionLinenumberEnd: 919
    functionName: mailbox_special_use_check
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - mailbox_special_use_exists
    - i_warning
    linkageType: ''
    returnType: void
    signature: void mailbox_special_use_check(struct mailbox_settings *set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_special_use_check
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 921
    functionDepth: 3
    functionLinenumber: 921
    functionLinenumberEnd: 928
    functionName: mailbox_settings_check
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - mailbox_special_use_check
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      \  const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:971,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - ATTR_UNUSED
    - _set
    - key
    - value
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event*
    - void*
    - char*
    - char**
    - enum setting_apply_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 974
    functionName: mail_user_settings_apply
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool mail_user_settings_apply(struct event *event ATTR_UNUSED, void
      *_set,\n\t\t\t const char *key, const char **value,\n\t\t\t enum setting_apply_flags
      flags ATTR_UNUSED,\n\t\t\t const char **error_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:982,1
    - Dst: fix_base_path
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:983,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:986,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:986,1
    - Dst: parse_postmaster_address
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:989,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:992,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:993,1
    - Dst: faccessat
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:994,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:995,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 1002
    functionName: mail_user_settings_check
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - parse_postmaster_address
    - array_not_empty
    - t_strdup_printf
    - faccessat
    - my_hostdomain
    - fix_base_path
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool mail_user_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      \    const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_postmaster_address
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1010,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1011,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1012,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct mail_user_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1014
    functionName: get_postmaster_address_error
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - pool_datastack_create
    - parse_postmaster_address
    linkageType: ''
    returnType: void
    signature: "void get_postmaster_address_error(const struct mail_user_settings
      *set,\n\t\t\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_postmaster_address_error
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1024,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - set
    - address_r
    - error_r
    argTypes:
    - struct mail_user_settings*
    - struct message_address**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1016
    functionDepth: 2
    functionLinenumber: 1016
    functionLinenumberEnd: 1026
    functionName: mail_user_set_get_postmaster_address
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 1
    functionsReached:
    - get_postmaster_address_error
    linkageType: ''
    returnType: bool
    signature: "bool mail_user_set_get_postmaster_address(const struct mail_user_settings
      *set,\n\t\t\t\t\t  const struct message_address **address_r,\n\t\t\t\t\t  const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_postmaster_address_error
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - set
    - address_r
    - error_r
    argTypes:
    - struct mail_user_settings*
    - struct smtp_address**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1028
    functionDepth: 2
    functionLinenumber: 1028
    functionLinenumberEnd: 1038
    functionName: mail_user_set_get_postmaster_smtp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 1
    functionsReached:
    - get_postmaster_address_error
    linkageType: ''
    returnType: bool
    signature: "bool mail_user_set_get_postmaster_smtp(const struct mail_user_settings
      *set,\n\t\t\t\t       const struct smtp_address **address_r,\n\t\t\t\t       const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1041
    functionName: OFFSET
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 108
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET(name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1073,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1080,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1086,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1088,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1089,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - instance
    - def
    - key_prefix
    argTypes:
    - struct settings_instance*
    - struct setting_define*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1064
    functionDepth: 3
    functionLinenumber: 1064
    functionLinenumberEnd: 1091
    functionName: mail_storage_2nd_setting_reset_def
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - settings_override
    - t_strdup_printf
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void mail_storage_2nd_setting_reset_def(struct settings_instance *instance,\n\t\t\t\t
      \  const struct setting_define *def,\n\t\t\t\t   const char *key_prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_2nd_setting_reset_def
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1099,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-storage-settings.c:1104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - instance
    - offset
    - key_prefix
    argTypes:
    - struct settings_instance*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1093
    functionDepth: 4
    functionLinenumber: 1093
    functionLinenumberEnd: 1105
    functionName: mail_storage_2nd_setting_reset_offset
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-settings.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mail_storage_2nd_setting_reset_def
    linkageType: ''
    returnType: void
    signature: "void mail_storage_2nd_setting_reset_offset(struct settings_instance
      *instance,\n\t\t\t\t      size_t offset, const char *key_prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:17,1
    - Dst: mail_search_arg_to_cmdline
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:19,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:21,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:23,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - dest
    - args
    - middle
    argTypes:
    - string_t*
    - struct mail_search_arg*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 24
    functionName: mail_search_subargs_to_cmdline
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c
    functionUses: 0
    functionsReached:
    - str_append
    - mail_search_arg_to_cmdline
    linkageType: ''
    returnType: void
    signature: "void mail_search_subargs_to_cmdline(string_t *dest, const struct mail_search_arg
      *args,\n\t\t\t       const char *middle)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:33,1
    - Dst: mail_search_subargs_to_cmdline
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:36,1
    - Dst: mail_search_subargs_to_cmdline
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:39,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:43,1
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:47,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:48,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:49,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:50,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:51,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:51,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:56,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:57,1
    - Dst: mail_thread_type_to_str
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:58,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:60,1
    - Dst: mail_search_subargs_to_cmdline
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:61,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:65,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:66,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:69,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:70,1
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:94,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:95,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 61
    argCount: 2
    argNames:
    - dest
    - arg
    argTypes:
    - string_t*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 26
    functionDepth: 3
    functionLinenumber: 26
    functionLinenumberEnd: 96
    functionName: mail_search_arg_to_cmdline
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c
    functionUses: 1
    functionsReached:
    - i_panic
    - str_c
    - str_append_c
    - i_unreached
    - str_len
    - mail_search_subargs_to_cmdline
    - mail_search_arg_to_imap
    - mail_thread_type_to_str
    - imap_append_astring
    - str_insert
    - str_append
    linkageType: ''
    returnType: void
    signature: void mail_search_arg_to_cmdline(string_t *dest, const struct mail_search_arg
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_arg_to_cmdline
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:104,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dest
    - args
    argTypes:
    - string_t*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 108
    functionName: mail_search_args_to_cmdline
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c
    functionUses: 1
    functionsReached:
    - mail_search_arg_to_cmdline
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void mail_search_args_to_cmdline(string_t *dest,\n\t\t\t\t const struct
      mail_search_arg *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:24,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:25,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 27
    functionName: mail_storage_hooks_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void mail_storage_hooks_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:35,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:36,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:37,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 39
    functionName: mail_storage_hooks_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_storage_hooks_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:46,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:51,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:52,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - module
    - hooks
    argTypes:
    - struct module*
    - struct mail_storage_hooks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 54
    functionName: mail_storage_hooks_add
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 22
    functionsReached:
    - i_zero
    - i_array_init
    - array_is_created
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void mail_storage_hooks_add(struct module *module,\n\t\t\t    const
      struct mail_storage_hooks *hooks)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:61,1
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - module
    - hooks
    argTypes:
    - struct module*
    - struct mail_storage_hooks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 64
    functionName: mail_storage_hooks_add_forced
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 1
    functionsReached:
    - mail_storage_hooks_add
    - array_back_modifiable
    linkageType: ''
    returnType: void
    signature: "void mail_storage_hooks_add_forced(struct module *module,\n\t\t\t\t
      \  const struct mail_storage_hooks *hooks)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:71,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:77,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - hooks
    argTypes:
    - struct mail_storage_hooks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 80
    functionName: mail_storage_hooks_remove
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 22
    functionsReached:
    - array_delete
    - i_assert
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: void
    signature: void mail_storage_hooks_remove(const struct mail_storage_hooks *hooks)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:87,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:88,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hooks
    argTypes:
    - struct mail_storage_hooks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: mail_storage_hooks_add_internal
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_push_back
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void mail_storage_hooks_add_internal(const struct mail_storage_hooks
      *hooks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:96,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:97,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hooks
    argTypes:
    - struct mail_storage_hooks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 99
    functionName: mail_storage_hooks_remove_internal
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void mail_storage_hooks_remove_internal(const struct mail_storage_hooks
      *hooks)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:108,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:110,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:113,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:114,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - h1
    - h2
    argTypes:
    - struct mail_storage_module_hooks*
    - struct mail_storage_module_hooks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 117
    functionName: mail_storage_module_hooks_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 0
    functionsReached:
    - str_begins
    - strcmp
    - strrchr
    linkageType: ''
    returnType: int
    signature: "int mail_storage_module_hooks_cmp(const struct mail_storage_module_hooks
      *h1,\n\t\t\t      const struct mail_storage_module_hooks *h2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:126,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:126,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:127,1
    - Dst: module_get_plugin_name
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:129,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:130,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:131,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:135,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:139,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:142,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:143,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:143,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:144,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:145,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:146,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 147
    functionName: mail_user_add_plugin_hooks
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 0
    functionsReached:
    - module_get_plugin_name
    - array_lsearch
    - p_array_init
    - array_push_back
    - array_foreach
    - array_count
    - t_array_init
    - array_sort
    - array_is_created
    - array_append_array
    linkageType: ''
    returnType: void
    signature: void mail_user_add_plugin_hooks(struct mail_user *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_add_plugin_hooks
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:154,1
    - Dst: hook_build_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:156,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:158,1
    - Dst: struct mail_storage_hooks*::mail_user_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:160,1
    - Dst: hook_build_update
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 165
    functionName: hook_mail_user_created
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - hook_build_init
    - struct mail_storage_hooks*::mail_user_created
    - mail_user_add_plugin_hooks
    - hook_build_update
    linkageType: ''
    returnType: void
    signature: void hook_mail_user_created(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:174,1
    - Dst: struct mail_storage_hooks*::mail_namespace_storage_added
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 178
    functionName: hook_mail_namespace_storage_added
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 0
    functionsReached:
    - struct mail_storage_hooks*::mail_namespace_storage_added
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void hook_mail_namespace_storage_added(struct mail_namespace *ns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:185,1
    - Dst: struct mail_storage_hooks*::mail_namespaces_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - namespaces
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 191
    functionName: hook_mail_namespaces_created
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 0
    functionsReached:
    - struct mail_storage_hooks*::mail_namespaces_created
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void hook_mail_namespaces_created(struct mail_namespace *namespaces)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:198,1
    - Dst: struct mail_storage_hooks*::mail_namespaces_added
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - namespaces
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 204
    functionName: hook_mail_namespaces_added
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 1
    functionsReached:
    - struct mail_storage_hooks*::mail_namespaces_added
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void hook_mail_namespaces_added(struct mail_namespace *namespaces)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hook_build_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:212,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:214,1
    - Dst: struct mail_storage_hooks*::mail_storage_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:216,1
    - Dst: hook_build_update
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 219
    functionName: hook_mail_storage_created
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 1
    functionsReached:
    - struct mail_storage_hooks*::mail_storage_created
    - hook_build_init
    - hook_build_update
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void hook_mail_storage_created(struct mail_storage *storage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hook_build_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:229,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:231,1
    - Dst: struct mail_storage_hooks*::mailbox_list_created
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:233,1
    - Dst: hook_build_update
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 236
    functionName: hook_mailbox_list_created
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 1
    functionsReached:
    - hook_build_update
    - hook_build_init
    - struct mail_storage_hooks*::mailbox_list_created
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void hook_mailbox_list_created(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hook_build_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:246,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:248,1
    - Dst: struct mail_storage_hooks*::mailbox_allocated
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:250,1
    - Dst: hook_build_update
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 253
    functionName: hook_mailbox_allocated
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 1
    functionsReached:
    - hook_build_update
    - hook_build_init
    - struct mail_storage_hooks*::mailbox_allocated
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void hook_mailbox_allocated(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:262,1
    - Dst: struct mail_storage_hooks*::mailbox_opened
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 266
    functionName: hook_mailbox_opened
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 0
    functionsReached:
    - struct mail_storage_hooks*::mailbox_opened
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void hook_mailbox_opened(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hook_build_init
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:275,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:277,1
    - Dst: struct mail_storage_hooks*::mail_allocated
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:279,1
    - Dst: hook_build_update
      Src: /src/dovecot/src/lib-storage/mail-storage-hooks.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 282
    functionName: hook_mail_allocated
    functionSourceFile: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    functionUses: 0
    functionsReached:
    - struct mail_storage_hooks*::mail_allocated
    - hook_build_init
    - hook_build_update
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void hook_mail_allocated(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: LANG_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LANG_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: LANG_USER_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LANG_USER_CONTEXT_REQUIRE(obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:40,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/lang-user.c:44,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/lang-user.c:48,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/lang-user.c:48,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/lang-user.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - user
    - lang
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 50
    functionName: lang_user_settings_get
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_is_empty
    - array_idx_elem
    - LANG_USER_CONTEXT_REQUIRE
    - i_assert
    linkageType: ''
    returnType: struct lang_settings
    signature: 'struct lang_settings *

      lang_user_settings_get(struct mail_user *user, const char *lang)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/lang-user.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 129
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(langs, set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/lang-user.c:56,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/lang-user.c:56,1
    - Dst: language_list_init
      Src: /src/dovecot/src/lib-storage/lang-user.c:61,1
    - Dst: language_list_add_names
      Src: /src/dovecot/src/lib-storage/lang-user.c:64,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/lang-user.c:65,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/lang-user.c:70,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/lang-user.c:70,1
    - Dst: language_list_get_all
      Src: /src/dovecot/src/lib-storage/lang-user.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - luser
    - error_r
    argTypes:
    - struct lang_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 72
    functionName: lang_user_init_languages
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - language_list_get_all
    - language_list_init
    - t_strdup_printf
    - array_is_empty
    - i_assert
    - language_list_add_names
    linkageType: ''
    returnType: int
    signature: int lang_user_init_languages(struct lang_user *luser, const char **error_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:78,1
    - Dst: lang_user_settings_get
      Src: /src/dovecot/src/lib-storage/lang-user.c:79,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/lang-user.c:80,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/lang-user.c:89,1
    - Dst: lang_filter_find
      Src: /src/dovecot/src/lib-storage/lang-user.c:91,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/lang-user.c:94,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/lang-user.c:102,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/lang-user.c:103,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-storage/lang-user.c:104,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:106,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/lang-user.c:108,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:114,1
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:119,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 4
    argNames:
    - user
    - lang
    - filter_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct language*
    - struct lang_filter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 124
    functionName: lang_user_create_filters
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - event_create
    - lang_user_settings_get
    - event_unref
    - lang_filter_find
    - array_foreach_elem
    - lang_filter_create
    - t_strdup_printf
    - array_is_empty
    - event_add_str
    - LANG_USER_CONTEXT_REQUIRE
    - lang_filter_unref
    linkageType: ''
    returnType: int
    signature: "int lang_user_create_filters(struct mail_user *user, const struct
      language *lang,\n\t\t\t struct lang_filter **filter_r, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:131,1
    - Dst: lang_user_settings_get
      Src: /src/dovecot/src/lib-storage/lang-user.c:132,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/lang-user.c:133,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/lang-user.c:142,1
    - Dst: lang_tokenizer_find
      Src: /src/dovecot/src/lib-storage/lang-user.c:144,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/lang-user.c:147,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/lang-user.c:155,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/lang-user.c:156,1
    - Dst: lang_tokenizer_create
      Src: /src/dovecot/src/lib-storage/lang-user.c:157,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/lang-user.c:162,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:168,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:173,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 5
    argNames:
    - user
    - lang
    - tokenizer_r
    - search
    - error_r
    argTypes:
    - struct mail_user*
    - struct language*
    - struct lang_tokenizer**
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 178
    functionName: lang_user_create_tokenizer
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_find
    - event_create
    - lang_user_settings_get
    - event_unref
    - array_foreach_elem
    - t_strdup_printf
    - array_is_empty
    - event_add_str
    - lang_tokenizer_create
    - LANG_USER_CONTEXT_REQUIRE
    - lang_tokenizer_unref
    linkageType: ''
    returnType: int
    signature: "int lang_user_create_tokenizer(struct mail_user *user, const struct
      language *lang,\n\t\t\t   struct lang_tokenizer **tokenizer_r, bool search,\n\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lang_user_create_tokenizer
      Src: /src/dovecot/src/lib-storage/lang-user.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - user
    - user_lang
    - error_r
    argTypes:
    - struct mail_user*
    - struct language_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 190
    functionName: lang_user_language_init_tokenizers
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - lang_user_create_tokenizer
    linkageType: ''
    returnType: int
    signature: "int lang_user_language_init_tokenizers(struct mail_user *user,\n\t\t\t\t
      \  struct language_user *user_lang,\n\t\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:207,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/lang-user.c:209,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/lang-user.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - user
    - lang
    argTypes:
    - struct mail_user*
    - struct language*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 214
    functionName: lang_user_language_find
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 2
    functionsReached:
    - strcmp
    - LANG_USER_CONTEXT_REQUIRE
    - array_foreach_elem
    linkageType: ''
    returnType: struct language_user
    signature: "struct language_user *\nlang_user_language_find(struct mail_user *user,\n\t\t
      \       const struct language *lang)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/lang-user.c:223,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/lang-user.c:225,1
    - Dst: lang_user_language_init_tokenizers
      Src: /src/dovecot/src/lib-storage/lang-user.c:227,1
    - Dst: lang_user_create_filters
      Src: /src/dovecot/src/lib-storage/lang-user.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - user
    - luser
    - lang
    - error_r
    argTypes:
    - struct mail_user*
    - struct lang_user*
    - struct language*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 216
    functionDepth: 4
    functionLinenumber: 216
    functionLinenumberEnd: 231
    functionName: lang_user_language_create
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - lang_user_create_filters
    - lang_user_language_init_tokenizers
    - p_new
    - array_push_back
    linkageType: ''
    returnType: int
    signature: "int lang_user_language_create(struct mail_user *user,\n                                     struct
      lang_user *luser,\n\t\t\t\t     const struct language *lang,\n\t\t\t\t     const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/lang-user.c:240,1
    - Dst: language_list_get_all
      Src: /src/dovecot/src/lib-storage/lang-user.c:240,1
    - Dst: lang_user_language_create
      Src: /src/dovecot/src/lib-storage/lang-user.c:241,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/lang-user.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - user
    - luser
    - error_r
    argTypes:
    - struct mail_user*
    - struct lang_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 233
    functionDepth: 5
    functionLinenumber: 233
    functionLinenumberEnd: 248
    functionName: lang_user_languages_fill_all
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - language_list_get_all
    - lang_user_language_create
    - array_foreach_elem
    linkageType: ''
    returnType: int
    signature: "int lang_user_languages_fill_all(struct mail_user *user,\n                                        struct
      lang_user *luser,\n                                        const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/lang-user.c:257,1
    - Dst: lang_user_settings_get
      Src: /src/dovecot/src/lib-storage/lang-user.c:259,1
    - Dst: lang_user_language_init_tokenizers
      Src: /src/dovecot/src/lib-storage/lang-user.c:261,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/lang-user.c:262,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/lang-user.c:267,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/lang-user.c:268,1
    - Dst: lang_filter_create
      Src: /src/dovecot/src/lib-storage/lang-user.c:269,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/lang-user.c:271,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:272,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/lang-user.c:274,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/lang-user.c:275,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/lang-user.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - user
    - luser
    - error_r
    argTypes:
    - struct mail_user*
    - struct lang_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 280
    functionName: lang_user_init_data_language
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_new
    - lang_user_settings_get
    - event_unref
    - i_unreached
    - p_array_init
    - array_push_back
    - lang_filter_create
    - t_strdup_printf
    - lang_user_language_init_tokenizers
    - event_add_str
    linkageType: ''
    returnType: int
    signature: "int lang_user_init_data_language(struct mail_user *user, struct lang_user
      *luser,\n\t\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: lang_user_get_language_list
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 2
    functionsReached:
    - LANG_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct language_list
    signature: struct language_list *lang_user_get_language_list(struct mail_user
      *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 295
    functionName: lang_user_get_all_languages
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 1
    functionsReached:
    - LANG_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      lang_user_get_all_languages(struct mail_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 303
    functionName: lang_user_get_data_languages
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 1
    functionsReached:
    - LANG_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      lang_user_get_data_languages(struct mail_user *user)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 310
    functionName: lang_user_get_data_lang
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 1
    functionsReached:
    - LANG_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct language_user
    signature: struct language_user *lang_user_get_data_lang(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/lang-user.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 316
    functionName: lang_user_get_settings
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - LANG_USER_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct langs_settings
    signature: struct langs_settings *lang_user_get_settings(struct mail_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lang_filter_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:321,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:323,1
    - Dst: lang_tokenizer_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - user_lang
    argTypes:
    - struct language_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 318
    functionDepth: 2
    functionLinenumber: 318
    functionLinenumberEnd: 326
    functionName: lang_user_language_free
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - lang_tokenizer_unref
    - lang_filter_unref
    linkageType: ''
    returnType: void
    signature: void lang_user_language_free(struct language_user *user_lang)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: language_list_deinit
      Src: /src/dovecot/src/lib-storage/lang-user.c:333,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/lang-user.c:335,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/lang-user.c:336,1
    - Dst: lang_user_language_free
      Src: /src/dovecot/src/lib-storage/lang-user.c:337,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/lang-user.c:340,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/lang-user.c:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - luser
    argTypes:
    - struct lang_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 342
    functionName: lang_user_free
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - event_unref
    - array_foreach_elem
    - lang_user_language_free
    - settings_free
    - array_is_created
    - language_list_deinit
    linkageType: ''
    returnType: void
    signature: void lang_user_free(struct lang_user *luser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/lang-user.c:348,1
    - Dst: lang_user_init_languages
      Src: /src/dovecot/src/lib-storage/lang-user.c:350,1
    - Dst: lang_user_init_data_language
      Src: /src/dovecot/src/lib-storage/lang-user.c:351,1
    - Dst: lang_user_languages_fill_all
      Src: /src/dovecot/src/lib-storage/lang-user.c:352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - user
    - luser
    - error_r
    argTypes:
    - struct mail_user*
    - struct lang_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 344
    functionDepth: 6
    functionLinenumber: 344
    functionLinenumberEnd: 355
    functionName: lang_user_init_libfts
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 0
    functionsReached:
    - lang_user_init_data_language
    - lang_user_languages_fill_all
    - p_array_init
    - lang_user_init_languages
    linkageType: ''
    returnType: int
    signature: "int lang_user_init_libfts(struct mail_user *user, struct lang_user
      *luser,\n\t\t      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT
      Src: /src/dovecot/src/lib-storage/lang-user.c:360,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/lang-user.c:369,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/lang-user.c:372,1
    - Dst: event_ref
      Src: /src/dovecot/src/lib-storage/lang-user.c:376,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/lang-user.c:378,1
    - Dst: lang_user_init_libfts
      Src: /src/dovecot/src/lib-storage/lang-user.c:380,1
    - Dst: MODULE_CONTEXT_UNSET
      Src: /src/dovecot/src/lib-storage/lang-user.c:381,1
    - Dst: lang_user_free
      Src: /src/dovecot/src/lib-storage/lang-user.c:382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - user
    - event
    - initialize_libfts
    - error_r
    argTypes:
    - struct mail_user*
    - struct event*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 357
    functionDepth: 7
    functionLinenumber: 357
    functionLinenumberEnd: 387
    functionName: lang_user_init
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 1
    functionsReached:
    - LANG_USER_CONTEXT
    - p_new
    - lang_user_init_libfts
    - event_ref
    - lang_user_free
    - MODULE_CONTEXT_SET
    - MODULE_CONTEXT_UNSET
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int lang_user_init(struct mail_user *user, struct event *event,\n\t\t
      \  bool initialize_libfts, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LANG_USER_CONTEXT
      Src: /src/dovecot/src/lib-storage/lang-user.c:391,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/lang-user.c:394,1
    - Dst: lang_user_free
      Src: /src/dovecot/src/lib-storage/lang-user.c:396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 389
    functionDepth: 4
    functionLinenumber: 389
    functionLinenumberEnd: 398
    functionName: lang_user_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/lang-user.c
    functionUses: 1
    functionsReached:
    - i_assert
    - LANG_USER_CONTEXT
    - lang_user_free
    linkageType: ''
    returnType: void
    signature: void lang_user_deinit(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:19,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 22
    functionName: mail_search_register_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct mail_search_register
    signature: struct mail_search_register *mail_search_register_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:30,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _reg
    argTypes:
    - struct mail_search_register**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 32
    functionName: mail_search_register_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register.c
    functionUses: 1
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void mail_search_register_deinit(struct mail_search_register **_reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - reg
    - arg
    - count
    argTypes:
    - struct mail_search_register*
    - struct mail_search_register_arg*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: mail_search_register_add
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register.c
    functionUses: 1
    functionsReached:
    - array_append
    linkageType: ''
    returnType: void
    signature: "void mail_search_register_add(struct mail_search_register *reg,\n\t\t\t
      \     const struct mail_search_register_arg *arg,\n\t\t\t      unsigned int
      count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reg
    - fallback
    argTypes:
    - struct mail_search_register*
    - mail_search_register_fallback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: mail_search_register_fallback
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mail_search_register_fallback(struct mail_search_register *reg,\n\t\t\t\t
      \  mail_search_register_fallback_t *fallback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - struct mail_search_register_arg*
    - struct mail_search_register_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: mail_search_register_arg_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int mail_search_register_arg_cmp(const struct mail_search_register_arg
      *arg1,\n\t\t\t     const struct mail_search_register_arg *arg2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:60,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - reg
    - count_r
    argTypes:
    - struct mail_search_register*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 65
    functionName: mail_search_register_get
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register.c
    functionUses: 0
    functionsReached:
    - array_sort
    - array_get
    linkageType: ''
    returnType: struct mail_search_register_arg
    signature: "struct mail_search_register_arg *\nmail_search_register_get(struct
      mail_search_register *reg,\n\t\t\t unsigned int *count_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:73,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-storage/mail-search-register.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - reg
    - key
    argTypes:
    - struct mail_search_register*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 79
    functionName: mail_search_register_find
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register.c
    functionUses: 1
    functionsReached:
    - array_sort
    - array_bsearch
    linkageType: ''
    returnType: struct mail_search_register_arg
    signature: 'struct mail_search_register_arg *

      mail_search_register_find(struct mail_search_register *reg, const char *key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - reg
    - fallback_r
    argTypes:
    - struct mail_search_register*
    - mail_search_register_fallback_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 89
    functionName: mail_search_register_get_fallback
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_register_get_fallback(struct mail_search_register
      *reg,\n\t\t\t\t       mail_search_register_fallback_t **fallback_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:10,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:13,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:14,1
    - Dst: mailbox_recent_flags_set_uid_forced
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - box
    - uid
    argTypes:
    - struct mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 7
    functionDepth: 4
    functionLinenumber: 7
    functionLinenumberEnd: 18
    functionName: mailbox_recent_flags_set_uid
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - mailbox_recent_flags_set_uid_forced
    - seq_range_exists
    - array_clear
    linkageType: ''
    returnType: void
    signature: void mailbox_recent_flags_set_uid(struct mailbox *box, uint32_t uid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_recent_flags_have_uid
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:27,1
    - Dst: seq_range_array_add_with_init
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - box
    - uid
    argTypes:
    - struct mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: mailbox_recent_flags_set_uid_forced
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
    functionUses: 2
    functionsReached:
    - seq_range_array_add_with_init
    - mailbox_recent_flags_have_uid
    linkageType: ''
    returnType: void
    signature: void mailbox_recent_flags_set_uid_forced(struct mailbox *box, uint32_t
      uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:40,1
    - Dst: mailbox_recent_flags_set_uid
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - box
    - view
    - seq1
    - seq2
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 5
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: mailbox_recent_flags_set_seqs
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
    functionUses: 1
    functionsReached:
    - mail_index_lookup_uid
    - mailbox_recent_flags_set_uid
    linkageType: ''
    returnType: void
    signature: "void mailbox_recent_flags_set_seqs(struct mailbox *box,\n\t\t\t\t
      \  struct mail_index_view *view,\n\t\t\t\t   uint32_t seq1, uint32_t seq2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:47,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - box
    - uid
    argTypes:
    - struct mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: mailbox_recent_flags_have_uid
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - seq_range_exists
    linkageType: ''
    returnType: bool
    signature: bool mailbox_recent_flags_have_uid(struct mailbox *box, uint32_t uid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:53,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: mailbox_recent_flags_reset
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_clear
    linkageType: ''
    returnType: void
    signature: void mailbox_recent_flags_reset(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:65,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:68,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 86
    functionName: mailbox_recent_flags_count
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
    functionUses: 1
    functionsReached:
    - array_get
    - array_is_created
    - mail_index_get_header
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mailbox_recent_flags_count(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:93,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:97,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - box
    - seq1
    - seq2
    argTypes:
    - struct mailbox*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 101
    functionName: mailbox_recent_flags_expunge_seqs
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - seq_range_array_remove
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: "void mailbox_recent_flags_expunge_seqs(struct mailbox *box,\n\t\t\t\t
      \      uint32_t seq1, uint32_t seq2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:105,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/mailbox-recent-flags.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - box
    - uid
    argTypes:
    - struct mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: mailbox_recent_flags_expunge_uid
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: void mailbox_recent_flags_expunge_uid(struct mailbox *box, uint32_t
      uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - args
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 133
    functionName: mail_search_mime_args_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mail_search_mime_args_foreach(args, callback, context)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:23,1
    - Dst: mail_search_mime_arg_dup
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:33,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:41,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:69,1
    - Dst: mail_search_mime_arg_dup
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:80,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 65
    argCount: 2
    argNames:
    - pool
    - arg
    argTypes:
    - pool_t
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 91
    functionName: mail_search_mime_arg_dup_one
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_arg_dup
    - p_strdup
    - p_new
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: "struct mail_search_mime_arg *\nmail_search_mime_arg_dup_one(pool_t
      pool,\n\t\t\t     const struct mail_search_mime_arg *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_arg_dup_one
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pool
    - arg
    argTypes:
    - pool_t
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 103
    functionName: mail_search_mime_arg_dup
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 1
    functionsReached:
    - mail_search_mime_arg_dup_one
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: 'struct mail_search_mime_arg *

      mail_search_mime_arg_dup(pool_t pool, const struct mail_search_mime_arg *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:111,1
    - Dst: mail_search_mime_arg_dup
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pool
    - mpart
    argTypes:
    - pool_t
    - struct mail_search_mime_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 115
    functionName: mail_search_mime_part_dup
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 1
    functionsReached:
    - mail_search_mime_arg_dup
    - p_new
    linkageType: ''
    returnType: struct mail_search_mime_part
    signature: "struct mail_search_mime_part *\nmail_search_mime_part_dup(pool_t pool,\n\t\t\t
      \ const struct mail_search_mime_part *mpart)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_args_reset
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:127,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - args
    - full_reset
    argTypes:
    - struct mail_search_mime_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 149
    functionName: mail_search_mime_args_reset
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 1
    functionsReached:
    - mail_search_mime_args_reset
    linkageType: ''
    returnType: void
    signature: "void mail_search_mime_args_reset(struct mail_search_mime_arg *args,\n\t\t\t\t
      bool full_reset)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:163,1
    - Dst: search_mime_arg_foreach
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:169,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:185,1
    - Dst: search_mime_arg_foreach
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:191,1
    - Dst: callback
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:207,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 3
    argNames:
    - arg
    - callback
    - context
    argTypes:
    - struct mail_search_mime_arg*
    - mail_search_mime_foreach_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 209
    functionName: search_mime_arg_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 1
    functionsReached:
    - i_assert
    - search_mime_arg_foreach
    - callback
    linkageType: ''
    returnType: void
    signature: "void search_mime_arg_foreach(struct mail_search_mime_arg *arg,\n\t\t\tmail_search_mime_foreach_callback_t
      *callback,\n\t\t\tvoid *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: search_mime_arg_foreach
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - args
    - callback
    - context
    argTypes:
    - struct mail_search_mime_arg*
    - mail_search_mime_foreach_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 232
    functionName: mail_search_mime_args_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 0
    functionsReached:
    - search_mime_arg_foreach
    linkageType: ''
    returnType: int
    signature: "int mail_search_mime_args_foreach(struct mail_search_mime_arg *args,\n\t\t\t\t
      \ mail_search_mime_foreach_callback_t *callback,\n\t\t\t\t  void *context)"
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_arg_equals
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:247,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:258,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:288,1
    - Dst: mail_search_mime_arg_equals
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:301,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:310,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 59
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - struct mail_search_mime_arg*
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 311
    functionName: mail_search_mime_arg_one_equals
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_arg_equals
    - strcmp
    - strcasecmp
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_mime_arg_one_equals(const struct mail_search_mime_arg
      *arg1,\n\t\t\t\t     const struct mail_search_mime_arg *arg2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_arg_one_equals
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:317,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - struct mail_search_mime_arg*
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 323
    functionName: mail_search_mime_arg_equals
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 1
    functionsReached:
    - mail_search_mime_arg_one_equals
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_mime_arg_equals(const struct mail_search_mime_arg
      *arg1,\n\t\t\t\t const struct mail_search_mime_arg *arg2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:328,1
    - Dst: mail_search_mime_arg_equals
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mpart1
    - mpart2
    argTypes:
    - struct mail_search_mime_part*
    - struct mail_search_mime_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 331
    functionName: mail_search_mime_parts_equal
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 1
    functionsReached:
    - mail_search_mime_arg_equals
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_mime_parts_equal(const struct mail_search_mime_part
      *mpart1,\n\t\t\t\t  const struct mail_search_mime_part *mpart2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mpart
    argTypes:
    - struct mail_search_mime_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 342
    functionName: mail_search_mime_simplify
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mail_search_mime_simplify(struct mail_search_mime_part *mpart)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:355,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:359,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:362,1
    - Dst: mail_search_mime_arg_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:363,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:366,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:369,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 5
    argNames:
    - dest
    - args
    - prefix
    - qflags
    - error_r
    argTypes:
    - string_t*
    - struct mail_search_mime_arg*
    - char*
    - enum imap_quote_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 371
    functionName: mail_search_mime_subargs_to_imap
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 0
    functionsReached:
    - str_append
    - HAS_ALL_BITS
    - mail_search_mime_arg_to_imap
    - str_append_c
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_mime_subargs_to_imap(string_t *dest,\n\t\t\t\t const
      struct mail_search_mime_arg *args,\n\t\t\t\t const char *prefix,\n\t\t\t\t enum
      imap_quote_flags qflags,\n\t\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: localtime
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:382,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:383,1
    - Dst: imap_to_date
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:386,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dest
    - arg
    argTypes:
    - string_t*
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 390
    functionName: mail_search_mime_arg_to_imap_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 0
    functionsReached:
    - localtime
    - str_printfa
    - imap_to_date
    - utc_offset
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_mime_arg_to_imap_date(string_t *dest,\n\t\t\t\t  const
      struct mail_search_mime_arg *arg)"
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:399,1
    - Dst: mail_search_mime_subargs_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:402,1
    - Dst: mail_search_mime_subargs_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:407,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:412,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:415,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:418,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:421,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:422,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:425,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:426,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:429,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:430,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:431,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:432,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:435,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:436,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:439,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:440,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:443,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:444,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:447,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:448,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:451,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:452,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:455,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:456,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:459,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:460,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:463,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:464,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:465,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:466,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:469,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:470,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:471,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:472,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:475,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:476,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:479,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:480,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:483,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:484,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:487,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:488,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:491,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:492,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:495,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:496,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:499,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:500,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:503,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:504,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:507,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:508,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:511,1
    - Dst: mail_search_mime_arg_to_imap_date
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:512,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:513,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:520,1
    - Dst: mail_search_mime_arg_to_imap_date
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:521,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:522,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:529,1
    - Dst: mail_search_mime_arg_to_imap_date
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:530,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:531,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:538,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:539,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:542,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:543,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:546,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:549,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:552,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:555,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:558,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:560,1
    - Dst: mail_search_mime_subargs_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:561,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:566,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:568,1
    - Dst: mail_search_mime_subargs_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:569,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:574,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:575,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:578,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:579,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:582,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:583,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:586,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:587,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 184
    argCount: 4
    argNames:
    - dest
    - arg
    - utf8
    - error_r
    argTypes:
    - string_t*
    - struct mail_search_mime_arg*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 591
    functionName: mail_search_mime_arg_to_imap
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - str_append_c
    - mail_search_mime_subargs_to_imap
    - t_strdup_printf
    - imap_append_astring
    - mail_search_mime_arg_to_imap_date
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_mime_arg_to_imap(string_t *dest,\n\t\t\t\t  const
      struct mail_search_mime_arg *arg,\n\t\t\t\t  bool utf8, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:599,1
    - Dst: mail_search_mime_arg_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:601,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:605,1
    - Dst: mail_search_mime_arg_to_imap
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:607,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:611,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/mail-search-mime.c:613,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - dest
    - mpart
    - utf8
    - error_r
    argTypes:
    - string_t*
    - struct mail_search_mime_part*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 616
    functionName: mail_search_mime_part_to_imap
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime.c
    functionUses: 1
    functionsReached:
    - mail_search_mime_arg_to_imap
    - i_assert
    - str_append_c
    linkageType: ''
    returnType: bool
    signature: "bool mail_search_mime_part_to_imap(string_t *dest,\n\t\t\t\t   const
      struct mail_search_mime_part *mpart,\n\t\t\t\t   bool utf8, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:24,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:26,1
    - Dst: mailbox_attribute_get_stream
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:34,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:35,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:45,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:48,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:49,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:50,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:52,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:55,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:62,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:68,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 5
    argNames:
    - box
    - key
    - value_r
    - value_len_r
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 16
    functionDepth: 5
    functionLinenumber: 16
    functionLinenumberEnd: 72
    functionName: lua_storage_mailbox_attribute_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c
    functionUses: 2
    functionsReached:
    - t_str_new
    - mailbox_get_last_error
    - i_assert
    - str_begins
    - strlen
    - i_stream_skip
    - i_stream_get_error
    - i_stream_unref
    - str_append_data
    - mailbox_attribute_get_stream
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int lua_storage_mailbox_attribute_get(struct mailbox *box, const char
      *key,\n\t\t\t\t      const char **value_r, size_t *value_len_r,\n\t\t\t\t      const
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:82,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:84,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:86,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:94,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:95,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:99,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:102,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:105,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:106,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:107,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:108,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:112,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - box
    - key
    - value
    - value_len
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 115
    functionName: lua_storage_mailbox_attribute_set
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c
    functionUses: 3
    functionsReached:
    - i_zero
    - mailbox_attribute_set
    - mailbox_get_last_error
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - str_begins
    - i_stream_create_from_data
    - mailbox_transaction_commit
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int lua_storage_mailbox_attribute_set(struct mailbox *box, const char
      *key,\n\t\t\t\t      const char *value, size_t value_len,\n\t\t\t\t      const
      char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:125,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:127,1
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:135,1
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:139,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:140,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:141,1
    - Dst: lua_storage_mailbox_attribute_get
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:142,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:149,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c:151,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 4
    argNames:
    - box
    - prefix
    - items_r
    - error_r
    argTypes:
    - struct mailbox*
    - char*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 117
    functionDepth: 6
    functionLinenumber: 117
    functionLinenumberEnd: 156
    functionName: lua_storage_mailbox_attribute_list
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c
    functionUses: 2
    functionsReached:
    - mailbox_get_last_error
    - array_append_space
    - str_begins
    - t_strdup_printf
    - mailbox_attribute_iter_init
    - lua_storage_mailbox_attribute_get
    - mailbox_attribute_iter_next
    - mailbox_attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int lua_storage_mailbox_attribute_list(struct mailbox *box, const
      char *prefix,\n\t\t\t\t       ARRAY_TYPE(lua_storage_keyvalue) *items_r,\n\t\t\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail.c:26,1
    - Dst: struct mailbox_transaction_context*::box::v::mail_alloc
      Src: /src/dovecot/src/lib-storage/mail.c:29,1
    - Dst: hook_mail_allocated
      Src: /src/dovecot/src/lib-storage/mail.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - t
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: mail_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 22
    functionsReached:
    - struct mailbox_transaction_context*::box::v::mail_alloc
    - i_assert
    - hook_mail_allocated
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *mail_alloc(struct mailbox_transaction_context *t,\n\t\t\tenum
      mail_fetch_field wanted_fields,\n\t\t\tstruct mailbox_header_lookup_ctx *wanted_headers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail.c:42,1
    - Dst: struct mail_private*::v::free
      Src: /src/dovecot/src/lib-storage/mail.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: mail_free
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 24
    functionsReached:
    - struct mail_private*::v::free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_free(struct mail **mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::set_seq
      Src: /src/dovecot/src/lib-storage/mail.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - seq
    argTypes:
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 54
    functionName: mail_set_seq
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 22
    functionsReached:
    - struct mail_private*::v::set_seq
    linkageType: ''
    returnType: void
    signature: void mail_set_seq(struct mail *mail, uint32_t seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::set_seq
      Src: /src/dovecot/src/lib-storage/mail.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - seq
    argTypes:
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: mail_set_seq_saving
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::set_seq
    linkageType: ''
    returnType: void
    signature: void mail_set_seq_saving(struct mail *mail, uint32_t seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::set_uid
      Src: /src/dovecot/src/lib-storage/mail.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - uid
    argTypes:
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: mail_set_uid
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 8
    functionsReached:
    - struct mail_private*::v::set_uid
    linkageType: ''
    returnType: bool
    signature: bool mail_set_uid(struct mail *mail, uint32_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::prefetch
      Src: /src/dovecot/src/lib-storage/mail.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 84
    functionName: mail_prefetch
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::prefetch
    linkageType: ''
    returnType: bool
    signature: bool mail_prefetch(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail.c:94,1
    - Dst: struct mail_private*::v::add_temp_wanted_fields
      Src: /src/dovecot/src/lib-storage/mail.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - mail
    - fields
    - headers
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: mail_add_temp_wanted_fields
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 7
    functionsReached:
    - struct mail_private*::v::add_temp_wanted_fields
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_add_temp_wanted_fields(struct mail *mail,\n\t\t\t\t enum
      mail_fetch_field fields,\n\t\t\t\t struct mailbox_header_lookup_ctx *headers)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/mail.c:103,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail.c:104,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - mail
    - days_r
    argTypes:
    - struct mail*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 123
    functionName: index_mail_get_age_days
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - mail_index_get_header
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool index_mail_get_age_days(struct mail *mail, int *days_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail.c:132,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-storage/mail.c:133,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-storage/mail.c:134,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-storage/mail.c:135,1
    - Dst: index_mail_get_age_days
      Src: /src/dovecot/src/lib-storage/mail.c:137,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-storage/mail.c:138,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail.c:144,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail.c:147,1
    - Dst: dec2str_buf
      Src: /src/dovecot/src/lib-storage/mail.c:149,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-storage/mail.c:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 154
    functionName: mail_event_create
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_age_days
    - event_create
    - event_set_append_log_prefix
    - dec2str_buf
    - event_add_category
    - i_assert
    - t_strconcat
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void mail_event_create(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_event_create
      Src: /src/dovecot/src/lib-storage/mail.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: mail_event
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 1
    functionsReached:
    - mail_event_create
    linkageType: ''
    returnType: struct event
    signature: struct event *mail_event(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_flags
      Src: /src/dovecot/src/lib-storage/mail.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 170
    functionName: mail_get_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 18
    functionsReached:
    - struct mail_private*::v::get_flags
    linkageType: ''
    returnType: enum mail_flags
    signature: enum mail_flags mail_get_flags(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_modseq
      Src: /src/dovecot/src/lib-storage/mail.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 177
    functionName: mail_get_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 4
    functionsReached:
    - struct mail_private*::v::get_modseq
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mail_get_modseq(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_pvt_modseq
      Src: /src/dovecot/src/lib-storage/mail.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 184
    functionName: mail_get_pvt_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::get_pvt_modseq
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mail_get_pvt_modseq(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_keywords
      Src: /src/dovecot/src/lib-storage/mail.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 191
    functionName: mail_get_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 8
    functionsReached:
    - struct mail_private*::v::get_keywords
    linkageType: ''
    returnType: char
    signature: char *const *mail_get_keywords(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_keyword_indexes
      Src: /src/dovecot/src/lib-storage/mail.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 198
    functionName: mail_get_keyword_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 2
    functionsReached:
    - struct mail_private*::v::get_keyword_indexes
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: ARRAY_TYPE *mail_get_keyword_indexes(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_parts
      Src: /src/dovecot/src/lib-storage/mail.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - parts_r
    argTypes:
    - struct mail*
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: mail_get_parts
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 6
    functionsReached:
    - struct mail_private*::v::get_parts
    linkageType: ''
    returnType: int
    signature: int mail_get_parts(struct mail *mail, struct message_part **parts_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_date
      Src: /src/dovecot/src/lib-storage/mail.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - date_r
    - timezone_r
    argTypes:
    - struct mail*
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 218
    functionName: mail_get_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 4
    functionsReached:
    - struct mail_private*::v::get_date
    linkageType: ''
    returnType: int
    signature: int mail_get_date(struct mail *mail, time_t *date_r, int *timezone_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_received_date
      Src: /src/dovecot/src/lib-storage/mail.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 229
    functionName: mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 7
    functionsReached:
    - struct mail_private*::v::get_received_date
    linkageType: ''
    returnType: int
    signature: int mail_get_received_date(struct mail *mail, time_t *date_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_save_date
      Src: /src/dovecot/src/lib-storage/mail.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 240
    functionName: mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 5
    functionsReached:
    - struct mail_private*::v::get_save_date
    linkageType: ''
    returnType: int
    signature: int mail_get_save_date(struct mail *mail, time_t *date_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_virtual_size
      Src: /src/dovecot/src/lib-storage/mail.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 251
    functionName: mail_get_virtual_size
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 9
    functionsReached:
    - struct mail_private*::v::get_virtual_size
    linkageType: ''
    returnType: int
    signature: int mail_get_virtual_size(struct mail *mail, uoff_t *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_physical_size
      Src: /src/dovecot/src/lib-storage/mail.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 262
    functionName: mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 11
    functionsReached:
    - struct mail_private*::v::get_physical_size
    linkageType: ''
    returnType: int
    signature: int mail_get_physical_size(struct mail *mail, uoff_t *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_first_header
      Src: /src/dovecot/src/lib-storage/mail.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 274
    functionName: mail_get_first_header
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 4
    functionsReached:
    - struct mail_private*::v::get_first_header
    linkageType: ''
    returnType: int
    signature: "int mail_get_first_header(struct mail *mail, const char *field,\n\t\t\t
      \ const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_first_header
      Src: /src/dovecot/src/lib-storage/mail.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 286
    functionName: mail_get_first_header_utf8
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 1
    functionsReached:
    - struct mail_private*::v::get_first_header
    linkageType: ''
    returnType: int
    signature: "int mail_get_first_header_utf8(struct mail *mail, const char *field,\n\t\t\t
      \      const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_headers
      Src: /src/dovecot/src/lib-storage/mail.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - char*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: mail_get_headers
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::get_headers
    linkageType: ''
    returnType: int
    signature: "int mail_get_headers(struct mail *mail, const char *field,\n\t\t     const
      char *const **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_headers
      Src: /src/dovecot/src/lib-storage/mail.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - char*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 310
    functionName: mail_get_headers_utf8
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::get_headers
    linkageType: ''
    returnType: int
    signature: "int mail_get_headers_utf8(struct mail *mail, const char *field,\n\t\t\t
      \ const char *const **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail.c:321,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail.c:322,1
    - Dst: struct mail_private*::v::get_header_stream
      Src: /src/dovecot/src/lib-storage/mail.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - mail
    - headers
    - stream_r
    argTypes:
    - struct mail*
    - struct mailbox_header_lookup_ctx*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 326
    functionName: mail_get_header_stream
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 4
    functionsReached:
    - i_assert
    - struct mail_private*::v::get_header_stream
    linkageType: ''
    returnType: int
    signature: "int mail_get_header_stream(struct mail *mail,\n\t\t\t   struct mailbox_header_lookup_ctx
      *headers,\n\t\t\t   struct istream **stream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 334
    functionName: mail_set_aborted
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: void mail_set_aborted(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/mail.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - mail
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct mail*
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 341
    functionName: mail_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 3
    functionsReached:
    - mail_get_stream_because
    linkageType: ''
    returnType: int
    signature: "int mail_get_stream(struct mail *mail, struct message_size *hdr_size,\n\t\t
      \   struct message_size *body_size, struct istream **stream_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_aborted
      Src: /src/dovecot/src/lib-storage/mail.c:351,1
    - Dst: struct mail_private*::v::get_stream
      Src: /src/dovecot/src/lib-storage/mail.c:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - mail
    - hdr_size
    - body_size
    - reason
    - stream_r
    argTypes:
    - struct mail*
    - struct message_size*
    - struct message_size*
    - char*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 343
    functionDepth: 3
    functionLinenumber: 343
    functionLinenumberEnd: 358
    functionName: mail_get_stream_because
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 7
    functionsReached:
    - mail_set_aborted
    - struct mail_private*::v::get_stream
    linkageType: ''
    returnType: int
    signature: "int mail_get_stream_because(struct mail *mail, struct message_size
      *hdr_size,\n\t\t\t    struct message_size *body_size,\n\t\t\t    const char
      *reason, struct istream **stream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_hdr_stream_because
      Src: /src/dovecot/src/lib-storage/mail.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - hdr_size
    - stream_r
    argTypes:
    - struct mail*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 367
    functionName: mail_get_hdr_stream
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 3
    functionsReached:
    - mail_get_hdr_stream_because
    linkageType: ''
    returnType: int
    signature: "int mail_get_hdr_stream(struct mail *mail, struct message_size *hdr_size,\n\t\t\tstruct
      istream **stream_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_aborted
      Src: /src/dovecot/src/lib-storage/mail.c:377,1
    - Dst: struct mail_private*::v::get_stream
      Src: /src/dovecot/src/lib-storage/mail.c:382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - mail
    - hdr_size
    - reason
    - stream_r
    argTypes:
    - struct mail*
    - struct message_size*
    - char*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 384
    functionName: mail_get_hdr_stream_because
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 2
    functionsReached:
    - mail_set_aborted
    - struct mail_private*::v::get_stream
    linkageType: ''
    returnType: int
    signature: "int mail_get_hdr_stream_because(struct mail *mail,\n\t\t\t\tstruct
      message_size *hdr_size,\n\t\t\t\tconst char *reason, struct istream **stream_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail.c:398,1
    - Dst: mail_set_aborted
      Src: /src/dovecot/src/lib-storage/mail.c:401,1
    - Dst: struct mail_private*::v::get_binary_stream
      Src: /src/dovecot/src/lib-storage/mail.c:405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - mail
    - part
    - include_hdr
    - bprops_r
    - stream_r
    argTypes:
    - struct mail*
    - struct message_part*
    - bool
    - struct mail_binary_properties*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 389
    functionDepth: 3
    functionLinenumber: 389
    functionLinenumberEnd: 407
    functionName: mail_get_binary_stream
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 2
    functionsReached:
    - i_zero
    - struct mail_private*::v::get_binary_stream
    - mail_set_aborted
    linkageType: ''
    returnType: int
    signature: "int mail_get_binary_stream(struct mail *mail, const struct message_part
      *part,\n\t\t\t   bool include_hdr,\n\t\t\t   struct mail_binary_properties *bprops_r,\n\t\t\t
      \  struct istream **stream_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail.c:421,1
    - Dst: struct mail_private*::v::get_binary_stream
      Src: /src/dovecot/src/lib-storage/mail.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - mail
    - part
    - include_hdr
    - bprops_r
    argTypes:
    - struct mail*
    - struct message_part*
    - bool
    - struct mail_binary_properties*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 426
    functionName: mail_get_binary_properties
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 3
    functionsReached:
    - i_zero
    - struct mail_private*::v::get_binary_stream
    linkageType: ''
    returnType: int
    signature: "int mail_get_binary_properties(struct mail *mail,\n\t\t\t       const
      struct message_part *part,\n\t\t\t       bool include_hdr,\n\t\t\t       struct
      mail_binary_properties *bprops_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_special
      Src: /src/dovecot/src/lib-storage/mail.c:435,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 439
    functionName: mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 17
    functionsReached:
    - i_assert
    - struct mail_private*::v::get_special
    linkageType: ''
    returnType: int
    signature: "int mail_get_special(struct mail *mail, enum mail_fetch_field field,\n\t\t
      \    const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::get_backend_mail
      Src: /src/dovecot/src/lib-storage/mail.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - real_mail_r
    argTypes:
    - struct mail*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 445
    functionName: mail_get_backend_mail
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 4
    functionsReached:
    - struct mail_private*::v::get_backend_mail
    linkageType: ''
    returnType: int
    signature: int mail_get_backend_mail(struct mail *mail, struct mail **real_mail_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/mail.c:454,1
    - Dst: message_id_get_next
      Src: /src/dovecot/src/lib-storage/mail.c:461,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail.c:465,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - mail
    - value_r
    - require_valid
    argTypes:
    - struct mail*
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 447
    functionDepth: 4
    functionLinenumber: 447
    functionLinenumberEnd: 474
    functionName: mail_get_message_id_full
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - mail_get_first_header
    - message_id_get_next
    linkageType: ''
    returnType: int
    signature: "int mail_get_message_id_full(struct mail *mail,\n\t\t\t\t    const
      char **value_r,\n\t\t\t\t    bool require_valid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_message_id_full
      Src: /src/dovecot/src/lib-storage/mail.c:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - value_r
    argTypes:
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 476
    functionDepth: 5
    functionLinenumber: 476
    functionLinenumberEnd: 479
    functionName: mail_get_message_id
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - mail_get_message_id_full
    linkageType: ''
    returnType: int
    signature: int mail_get_message_id(struct mail *mail, const char **value_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_message_id_full
      Src: /src/dovecot/src/lib-storage/mail.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - value_r
    argTypes:
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 481
    functionDepth: 5
    functionLinenumber: 481
    functionLinenumberEnd: 484
    functionName: mail_get_message_id_no_validation
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - mail_get_message_id_full
    linkageType: ''
    returnType: int
    signature: int mail_get_message_id_no_validation(struct mail *mail, const char
      **value_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::update_flags
      Src: /src/dovecot/src/lib-storage/mail.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - modify_type
    - flags
    argTypes:
    - struct mail*
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 492
    functionName: mail_update_flags
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 8
    functionsReached:
    - struct mail_private*::v::update_flags
    linkageType: ''
    returnType: void
    signature: "void mail_update_flags(struct mail *mail, enum modify_type modify_type,\n\t\t
      \      enum mail_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::update_keywords
      Src: /src/dovecot/src/lib-storage/mail.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - modify_type
    - keywords
    argTypes:
    - struct mail*
    - enum modify_type
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 500
    functionName: mail_update_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 6
    functionsReached:
    - struct mail_private*::v::update_keywords
    linkageType: ''
    returnType: void
    signature: "void mail_update_keywords(struct mail *mail, enum modify_type modify_type,\n\t\t\t
      \ struct mail_keywords *keywords)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::update_modseq
      Src: /src/dovecot/src/lib-storage/mail.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - min_modseq
    argTypes:
    - struct mail*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 507
    functionName: mail_update_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::update_modseq
    linkageType: ''
    returnType: void
    signature: void mail_update_modseq(struct mail *mail, uint64_t min_modseq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::update_pvt_modseq
      Src: /src/dovecot/src/lib-storage/mail.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - min_pvt_modseq
    argTypes:
    - struct mail*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 514
    functionName: mail_update_pvt_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::update_pvt_modseq
    linkageType: ''
    returnType: void
    signature: void mail_update_pvt_modseq(struct mail *mail, uint64_t min_pvt_modseq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::update_pop3_uidl
      Src: /src/dovecot/src/lib-storage/mail.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - mail
    - uidl
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 522
    functionName: mail_update_pop3_uidl
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 3
    functionsReached:
    - struct mail_private*::v::update_pop3_uidl
    linkageType: ''
    returnType: void
    signature: void mail_update_pop3_uidl(struct mail *mail, const char *uidl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::expunge
      Src: /src/dovecot/src/lib-storage/mail.c:529,1
    - Dst: mail_expunge_requested_event
      Src: /src/dovecot/src/lib-storage/mail.c:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 531
    functionName: mail_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 8
    functionsReached:
    - struct mail_private*::v::expunge
    - mail_expunge_requested_event
    linkageType: ''
    returnType: void
    signature: void mail_expunge(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_expunge
      Src: /src/dovecot/src/lib-storage/mail.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 540
    functionName: mail_autoexpunge
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 1
    functionsReached:
    - mail_expunge
    linkageType: ''
    returnType: void
    signature: void mail_autoexpunge(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/mail.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 542
    functionDepth: 2
    functionLinenumber: 542
    functionLinenumberEnd: 547
    functionName: mail_set_expunged
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 1
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: void mail_set_expunged(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::precache
      Src: /src/dovecot/src/lib-storage/mail.c:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 556
    functionName: mail_precache
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 1
    functionsReached:
    - struct mail_private*::v::precache
    linkageType: ''
    returnType: int
    signature: int mail_precache(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct mail_private*::v::set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/mail.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - field
    - reason
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 566
    functionName: mail_set_cache_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 5
    functionsReached:
    - struct mail_private*::v::set_cache_corrupted
    linkageType: ''
    returnType: void
    signature: "void mail_set_cache_corrupted(struct mail *mail,\n\t\t\t      enum
      mail_fetch_field field,\n\t\t\t      const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib-storage/mail.c:573,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-storage/mail.c:575,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-storage/mail.c:576,1
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/lib-storage/mail.c:577,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail.c:577,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/mail.c:581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - guid
    - guid_128_r
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 585
    functionName: mail_generate_guid_128_hash
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - strlen
    - buffer_set_used_size
    - guid_128_from_string
    - buffer_create_from_data
    - sha1_get_digest
    linkageType: ''
    returnType: void
    signature: void mail_generate_guid_128_hash(const char *guid, guid_128_t guid_128_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_part_is_attachment
      Src: /src/dovecot/src/lib-storage/mail.c:593,1
    - Dst: mail_message_has_attachment
      Src: /src/dovecot/src/lib-storage/mail.c:594,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 2
    argNames:
    - part
    - set
    argTypes:
    - struct message_part*
    - struct message_part_attachment_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 587
    functionDepth: 4
    functionLinenumber: 587
    functionLinenumberEnd: 595
    functionName: mail_message_has_attachment
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 1
    functionsReached:
    - message_part_is_attachment
    - mail_message_has_attachment
    linkageType: ''
    returnType: bool
    signature: "bool mail_message_has_attachment(struct message_part *part,\n\t\t\t
      \   const struct message_part_attachment_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/lib-storage/mail.c:602,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-storage/mail.c:603,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-storage/mail.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 605
    functionName: mail_has_attachment_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - str_array_icase_find
    linkageType: ''
    returnType: bool
    signature: bool mail_has_attachment_keywords(struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/mail.c:613,1
    - Dst: imap_bodystructure_parse_full
      Src: /src/dovecot/src/lib-storage/mail.c:619,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/mail.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - mail
    - parts_r
    argTypes:
    - struct mail*
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 626
    functionName: mail_parse_parts
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - imap_bodystructure_parse_full
    - mail_get_special
    - mail_set_cache_corrupted
    linkageType: ''
    returnType: int
    signature: int mail_parse_parts(struct mail *mail, struct message_part **parts_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_settings
      Src: /src/dovecot/src/lib-storage/mail.c:632,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-storage/mail.c:632,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-storage/mail.c:652,1
    - Dst: mail_parse_parts
      Src: /src/dovecot/src/lib-storage/mail.c:659,1
    - Dst: mailbox_keywords_create
      Src: /src/dovecot/src/lib-storage/mail.c:661,1
    - Dst: mailbox_keywords_create
      Src: /src/dovecot/src/lib-storage/mail.c:662,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/mail.c:663,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/mail.c:665,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/mail.c:666,1
    - Dst: mail_message_has_attachment
      Src: /src/dovecot/src/lib-storage/mail.c:669,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/lib-storage/mail.c:672,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/lib-storage/mail.c:673,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/lib-storage/mail.c:678,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/lib-storage/mail.c:680,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 628
    functionDepth: 5
    functionLinenumber: 628
    functionLinenumberEnd: 683
    functionName: mail_set_attachment_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - mail_storage_get_settings
    - mail_message_has_attachment
    - mail_set_critical
    - mail_storage_get_last_internal_error
    - mailbox_keywords_create
    - mailbox_keywords_unref
    - mail_get_parts
    - mailbox_get_vname
    - mail_update_keywords
    - mail_parse_parts
    linkageType: ''
    returnType: int
    signature: int mail_set_attachment_keywords(struct mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_aborted
      Src: /src/dovecot/src/lib-storage/mail.c:688,1
    - Dst: mail_event_create
      Src: /src/dovecot/src/lib-storage/mail.c:692,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 685
    functionDepth: 3
    functionLinenumber: 685
    functionLinenumberEnd: 694
    functionName: mail_stream_access_start
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - mail_set_aborted
    - mail_event_create
    linkageType: ''
    returnType: bool
    signature: bool mail_stream_access_start(struct mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_aborted
      Src: /src/dovecot/src/lib-storage/mail.c:699,1
    - Dst: mail_event_create
      Src: /src/dovecot/src/lib-storage/mail.c:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 696
    functionDepth: 3
    functionLinenumber: 696
    functionLinenumberEnd: 705
    functionName: mail_metadata_access_start
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - mail_set_aborted
    - mail_event_create
    linkageType: ''
    returnType: bool
    signature: bool mail_metadata_access_start(struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/mail.c:710,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-storage/mail.c:720,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/mail.c:720,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail.c:724,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-storage/mail.c:724,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail.c:727,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-storage/mail.c:727,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 707
    functionDepth: 4
    functionLinenumber: 707
    functionLinenumberEnd: 728
    functionName: mail_opened_event
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - container_of
    - mail_event
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    linkageType: ''
    returnType: void
    signature: void mail_opened_event(struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-storage/mail.c:733,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail.c:735,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-storage/mail.c:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail_event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 736
    functionName: mail_metadata_accessed_event
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 0
    functionsReached:
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    linkageType: ''
    returnType: void
    signature: void mail_metadata_accessed_event(struct event *mail_event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-storage/mail.c:741,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/mail.c:741,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail.c:745,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-storage/mail.c:745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 738
    functionDepth: 4
    functionLinenumber: 738
    functionLinenumberEnd: 746
    functionName: mail_expunge_requested_event
    functionSourceFile: /src/dovecot/src/lib-storage/mail.c
    functionUses: 1
    functionsReached:
    - mail_event
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    linkageType: ''
    returnType: void
    signature: void mail_expunge_requested_event(struct mail *mail)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_result_analyze_args
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:17,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - result
    - arg
    argTypes:
    - struct mail_search_result*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 33
    functionName: mailbox_search_result_analyze_args
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 1
    functionsReached:
    - mailbox_search_result_analyze_args
    linkageType: ''
    returnType: void
    signature: "void mailbox_search_result_analyze_args(struct mail_search_result
      *result,\n\t\t\t\t   struct mail_search_arg *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:41,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:44,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:45,1
    - Dst: mail_search_args_ref
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:49,1
    - Dst: mailbox_search_result_analyze_args
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:50,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - box
    - args
    - flags
    argTypes:
    - struct mailbox*
    - struct mail_search_args*
    - enum mailbox_search_result_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 55
    functionName: mailbox_search_result_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - array_push_back
    - mail_search_args_ref
    - i_new
    - mailbox_search_result_analyze_args
    linkageType: ''
    returnType: struct mail_search_result
    signature: "struct mail_search_result *\nmailbox_search_result_alloc(struct mailbox
      *box, struct mail_search_args *args,\n\t\t\t    enum mailbox_search_result_flags
      flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:64,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:65,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:66,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:69,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:71,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:72,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:73,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:74,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:75,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - _result
    argTypes:
    - struct mail_search_result**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 78
    functionName: mailbox_search_result_free
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 5
    functionsReached:
    - array_delete
    - i_free
    - i_unreached
    - array_lsearch_ptr_idx
    - array_is_created
    - mail_search_args_unref
    - array_free
    linkageType: ''
    returnType: void
    signature: void mailbox_search_result_free(struct mail_search_result **_result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_result_alloc
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:86,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - flags
    argTypes:
    - struct mail_search_context*
    - enum mailbox_search_result_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: mailbox_search_result_save
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 3
    functionsReached:
    - mailbox_search_result_alloc
    - array_push_back
    linkageType: ''
    returnType: struct mail_search_result
    signature: "struct mail_search_result *\nmailbox_search_result_save(struct mail_search_context
      *ctx,\n\t\t\t   enum mailbox_search_result_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:95,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:96,1
    - Dst: mail_search_args_seq2uid
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct mail_search_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 99
    functionName: mailbox_search_result_initial_done
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - mail_search_args_seq2uid
    linkageType: ''
    returnType: void
    signature: void mailbox_search_result_initial_done(struct mail_search_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:106,1
    - Dst: mailbox_search_result_initial_done
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: mailbox_search_results_initial_done
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 1
    functionsReached:
    - mailbox_search_result_initial_done
    - array_get
    linkageType: ''
    returnType: void
    signature: void mailbox_search_results_initial_done(struct mail_search_context
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:113,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:115,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:118,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:119,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:120,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - result
    - uid
    argTypes:
    - struct mail_search_result*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 123
    functionName: mailbox_search_result_add
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - seq_range_exists
    - array_is_created
    - i_assert
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: void mailbox_search_result_add(struct mail_search_result *result, uint32_t
      uid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:128,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:129,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:130,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - result
    - uid
    argTypes:
    - struct mail_search_result*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 134
    functionName: mailbox_search_result_remove
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - array_is_created
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: "void mailbox_search_result_remove(struct mail_search_result *result,\n\t\t\t\t
      \ uint32_t uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:141,1
    - Dst: mailbox_search_result_add
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct mail_search_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 144
    functionName: mailbox_search_results_add
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 0
    functionsReached:
    - array_get
    - mailbox_search_result_add
    linkageType: ''
    returnType: void
    signature: void mailbox_search_results_add(struct mail_search_context *ctx, uint32_t
      uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:151,1
    - Dst: mailbox_search_result_remove
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - box
    - uid
    argTypes:
    - struct mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 154
    functionName: mailbox_search_results_remove
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 0
    functionsReached:
    - array_get
    - mailbox_search_result_remove
    linkageType: ''
    returnType: void
    signature: void mailbox_search_results_remove(struct mailbox *box, uint32_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - result
    - uid
    argTypes:
    - struct mail_search_result*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: mailbox_search_result_never
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    linkageType: ''
    returnType: void
    signature: "void mailbox_search_result_never(struct mail_search_result *result,\n\t\t\t\t
      uint32_t uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_result_never
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:169,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:171,1
    - Dst: mailbox_search_result_never
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct mail_search_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 174
    functionName: mailbox_search_results_never
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 0
    functionsReached:
    - array_get
    - mailbox_search_result_never
    linkageType: ''
    returnType: void
    signature: "void mailbox_search_results_never(struct mail_search_context *ctx,\n\t\t\t\t
      \ uint32_t uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct mail_search_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 180
    functionName: mailbox_search_result_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      mailbox_search_result_get(struct mail_search_result *result)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:186,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:187,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:189,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:190,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:192,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/mailbox-search-result.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - result
    - removed_uids
    - added_uids
    argTypes:
    - struct mail_search_result*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 194
    functionName: mailbox_search_result_sync
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-search-result.c
    functionUses: 3
    functionsReached:
    - array_append_array
    - array_clear
    linkageType: ''
    returnType: void
    signature: "void mailbox_search_result_sync(struct mail_search_result *result,\n\t\t\t\tARRAY_TYPE(seq_range)
      *removed_uids,\n\t\t\t\tARRAY_TYPE(seq_range) *added_uids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parser_init_cmdline
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:241,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:241,1
    - Dst: mail_search_build
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:242,1
    - Dst: mail_search_register_get_imap4rev1
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:242,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:244,1
    - Dst: mail_search_parser_deinit
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 234
    functionDepth: 4
    functionLinenumber: 234
    functionLinenumberEnd: 247
    functionName: test_build_search_args
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c
    functionUses: 1
    functionsReached:
    - i_panic
    - mail_search_parser_deinit
    - mail_search_parser_init_cmdline
    - t_strsplit
    - mail_search_build
    - mail_search_register_get_imap4rev1
    linkageType: ''
    returnType: struct mail_search_args
    signature: 'struct mail_search_args *

      test_build_search_args(const char *args)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: test_search_args_are_initialized
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:269,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 277
    functionName: test_search_args_are_initialized
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c
    functionUses: 1
    functionsReached:
    - test_search_args_are_initialized
    linkageType: ''
    returnType: bool
    signature: bool test_search_args_are_initialized(struct mail_search_arg *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:285,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:289,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:290,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:291,1
    - Dst: test_build_search_args
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:292,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:297,1
    - Dst: mail_search_args_simplify
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:298,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:300,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:301,1
    - Dst: mail_search_args_to_imap
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:301,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:303,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:303,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:303,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:305,1
    - Dst: test_search_args_are_initialized
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:305,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:306,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:308,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 279
    functionDepth: 8
    functionLinenumber: 279
    functionLinenumberEnd: 310
    functionName: test_mail_search_args_simplify
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_build_search_args
    - mail_index_alloc
    - mail_search_args_to_imap
    - test_assert_idx
    - mail_search_args_init
    - test_search_args_are_initialized
    - test_end
    - str_truncate
    - mail_search_args_simplify
    - test_assert
    - mail_search_args_unref
    - mail_index_free
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_search_args_simplify(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:316,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:318,1
    - Dst: mail_search_args_simplify
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:319,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:320,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 312
    functionDepth: 7
    functionLinenumber: 312
    functionLinenumberEnd: 323
    functionName: test_mail_search_args_simplify_empty_lists
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c
    functionUses: 0
    functionsReached:
    - test_end
    - mail_search_build_init
    - mail_search_args_simplify
    - mail_search_args_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_search_args_simplify_empty_lists(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 325
    functionDepth: 7
    functionLinenumber: 325
    functionLinenumberEnd: 336
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c
    functionUses: 8
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 19
    functionDepth: 3
    functionLinenumber: 19
    functionLinenumberEnd: 29
    functionName: human_search_or
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - mail_search_build_key
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      human_search_or(struct mail_search_build_context *ctx)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:40,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:41,1
    - Dst: mail_parse_human_timestamp
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:44,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:50,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - type
    - date_type
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    - enum mail_search_date_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 56
    functionName: arg_new_human_date
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - mail_parse_human_timestamp
    - mail_search_parse_string
    - p_strconcat
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\narg_new_human_date(struct mail_search_build_context
      *ctx,\n\t\t   enum mail_search_arg_type type,\n\t\t   enum mail_search_date_type
      date_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _func
    - ','
    - _type
    - ','
    - _date_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: CALLBACK_DATE
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_DATE(_func, _type, _date_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: human_search_savedatesupported
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      human_search_savedatesupported(struct mail_search_build_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:89,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:90,1
    - Dst: str_parse_get_size
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:93,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:94,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_build_context*
    - enum mail_search_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 98
    functionName: arg_new_human_size
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    - p_strdup
    - mail_search_parse_string
    - str_parse_get_size
    linkageType: ''
    returnType: struct mail_search_arg
    signature: "struct mail_search_arg *\narg_new_human_size(struct mail_search_build_context
      *ctx,\n\t\t   enum mail_search_arg_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg_new_human_size
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 104
    functionName: human_search_larger
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - arg_new_human_size
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      human_search_larger(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg_new_human_size
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 110
    functionName: human_search_smaller
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - arg_new_human_size
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      human_search_smaller(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_str
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: human_search_guid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - mail_search_build_str
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      human_search_guid(struct mail_search_build_context *ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_str
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:123,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:127,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:128,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:131,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:132,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 138
    functionName: human_search_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - uni_utf8_str_is_valid
    - strchr
    - p_strconcat
    - mail_search_build_str
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      human_search_mailbox(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_str
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: human_search_mailbox_guid
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - mail_search_build_str
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      human_search_mailbox_guid(struct mail_search_build_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: human_search_oldestonly
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - mail_search_build_new
    linkageType: ''
    returnType: struct mail_search_arg
    signature: 'struct mail_search_arg *

      human_search_oldestonly(struct mail_search_build_context *ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_register_init
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:192,1
    - Dst: mail_search_register_add
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:193,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:194,1
    - Dst: mail_search_register_get
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:197,1
    - Dst: mail_search_register_get
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:198,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:199,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:201,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:203,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:212,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:214,1
    - Dst: mail_search_register_add
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:215,1
    - Dst: mail_search_register_get_fallback
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:217,1
    - Dst: mail_search_register_fallback
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:218,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - imap_register
    argTypes:
    - struct mail_search_register*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 220
    functionName: mail_search_register_init_human
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_search_register_get_fallback
    - array_push_back
    - array_get
    - mail_search_register_add
    - mail_search_register_fallback
    - mail_search_register_init
    - t_array_init
    - mail_search_register_get
    - N_ELEMENTS
    linkageType: ''
    returnType: struct mail_search_register
    signature: 'struct mail_search_register *

      mail_search_register_init_human(struct mail_search_register *imap_register)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_register_get_imap4rev1
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:226,1
    - Dst: mail_search_register_init_human
      Src: /src/dovecot/src/lib-storage/mail-search-register-human.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 4
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: mail_search_register_get_human
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-register-human.c
    functionUses: 0
    functionsReached:
    - mail_search_register_get_imap4rev1
    - mail_search_register_init_human
    linkageType: ''
    returnType: struct mail_search_register
    signature: struct mail_search_register *mail_search_register_get_human(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_mime_build_context*
    - enum mail_search_mime_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 23
    functionName: mail_search_mime_build_new
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-build.c
    functionUses: 10
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: "struct mail_search_mime_arg *\nmail_search_mime_build_new(struct mail_search_mime_build_context
      *ctx,\n\t\t      enum mail_search_mime_arg_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_build_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:32,1
    - Dst: mail_search_parse_string
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:33,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct mail_search_mime_build_context*
    - enum mail_search_mime_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 37
    functionName: mail_search_mime_build_str
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-build.c
    functionUses: 1
    functionsReached:
    - mail_search_mime_build_new
    - p_strdup
    - mail_search_parse_string
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: "struct mail_search_mime_arg *\nmail_search_mime_build_str(struct mail_search_mime_build_context
      *ctx,\n\t\t      enum mail_search_mime_arg_type type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parse_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:52,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:55,1
    - Dst: mail_search_mime_build_list
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:56,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:67,1
    - Dst: mail_search_mime_register_find
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:69,1
    - Dst: struct mail_search_mime_register_arg*::build
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:71,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:74,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - parent
    - arg_r
    argTypes:
    - struct mail_search_mime_build_context*
    - struct mail_search_mime_arg*
    - struct mail_search_mime_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 39
    functionDepth: 3
    functionLinenumber: 39
    functionLinenumberEnd: 81
    functionName: mail_search_mime_build_key_int
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-build.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_search_mime_build_list
    - t_str_ucase
    - mail_search_mime_register_find
    - struct mail_search_mime_register_arg*::build
    - p_strconcat
    - mail_search_parse_key
    linkageType: ''
    returnType: int
    signature: "int mail_search_mime_build_key_int(struct mail_search_mime_build_context
      *ctx,\n\t\t\t  struct mail_search_mime_arg *parent,\n\t\t\t  struct mail_search_mime_arg
      **arg_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_mime_build_key_int
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - parent
    - arg_r
    argTypes:
    - struct mail_search_mime_build_context*
    - struct mail_search_mime_arg*
    - struct mail_search_mime_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 83
    functionDepth: 4
    functionLinenumber: 83
    functionLinenumberEnd: 96
    functionName: mail_search_mime_build_key
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-build.c
    functionUses: 4
    functionsReached:
    - mail_search_mime_build_key_int
    linkageType: ''
    returnType: int
    signature: "int mail_search_mime_build_key(struct mail_search_mime_build_context
      *ctx,\n\t\t\t  struct mail_search_mime_arg *parent,\n\t\t\t  struct mail_search_mime_arg
      **arg_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:105,1
    - Dst: mail_search_mime_build_key_int
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - arg_r
    argTypes:
    - struct mail_search_mime_build_context*
    - struct mail_search_mime_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 129
    functionName: mail_search_mime_build_list
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-build.c
    functionUses: 1
    functionsReached:
    - p_new
    - mail_search_mime_build_key_int
    linkageType: ''
    returnType: int
    signature: "int mail_search_mime_build_list(struct mail_search_mime_build_context
      *ctx,\n\t\t\t\t  struct mail_search_mime_arg **arg_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:141,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:144,1
    - Dst: mail_search_mime_build_key
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - bctx
    - mpart_r
    argTypes:
    - struct mail_search_build_context*
    - struct mail_search_mime_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 131
    functionDepth: 5
    functionLinenumber: 131
    functionLinenumberEnd: 158
    functionName: mail_search_mime_build
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-build.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mail_search_mime_build_key
    - p_new
    linkageType: ''
    returnType: int
    signature: "int mail_search_mime_build(struct mail_search_build_context *bctx,\n\t\t
      \     struct mail_search_mime_part **mpart_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-mime-build.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - pool
    - mpart
    - type
    argTypes:
    - pool_t
    - struct mail_search_mime_part*
    - enum mail_search_mime_arg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 173
    functionName: mail_search_mime_build_add
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-mime-build.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct mail_search_mime_arg
    signature: "struct mail_search_mime_arg *\nmail_search_mime_build_add(pool_t pool,\n\t\t
      \     struct mail_search_mime_part *mpart,\n\t\t      enum mail_search_mime_arg_type
      type)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:30,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:34,1
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:36,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:39,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:41,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - _parser
    - key_r
    argTypes:
    - struct mail_search_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 57
    functionName: imap_search_parse_key
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser-imap.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_unreached
    - imap_arg_as_astring
    - t_strconcat
    - imap_arg_as_list
    linkageType: ''
    returnType: int
    signature: "int imap_search_parse_key(struct mail_search_parser *_parser,\n\t\t\t\t
      const char **key_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:71,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - _parser
    - value_r
    argTypes:
    - struct mail_search_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 85
    functionName: imap_search_parse_string
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser-imap.c
    functionUses: 0
    functionsReached:
    - imap_arg_as_astring
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int imap_search_parse_string(struct mail_search_parser *_parser,\n\t\t\t\t
      \   const char **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:94,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _parser
    - str
    argTypes:
    - struct mail_search_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 101
    functionName: imap_search_parse_skip_next
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser-imap.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: bool imap_search_parse_skip_next(struct mail_search_parser *_parser,
      const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:115,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mail-search-parser-imap.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 122
    functionName: mail_search_parser_init_imap
    functionSourceFile: /src/dovecot/src/lib-storage/mail-search-parser-imap.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_search_parser
    signature: 'struct mail_search_parser *

      mail_search_parser_init_imap(const struct imap_arg *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:23,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:29,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:30,1
    - Dst: i_qsort
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:31,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:35,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:37,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:39,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:43,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:46,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:47,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:53,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:56,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:59,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:59,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - box
    - headers
    argTypes:
    - struct mailbox*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 9
    functionDepth: 6
    functionLinenumber: 9
    functionLinenumberEnd: 63
    functionName: mailbox_header_lookup_init_real
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-header.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pool_alloconly_create
    - t_new
    - p_strdup
    - p_new
    - i_qsort
    - strlen
    - strcasecmp
    - i_assert
    - t_strconcat
    - mail_cache_register_fields
    linkageType: ''
    returnType: struct mailbox_header_lookup_ctx
    signature: "struct mailbox_header_lookup_ctx *\nmailbox_header_lookup_init_real(struct
      mailbox *box,\n\t\t\t\tconst char *const headers[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_header_lookup_init_real
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - box
    - headers
    argTypes:
    - struct mailbox*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 7
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: mailbox_header_lookup_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-header.c
    functionUses: 10
    functionsReached:
    - mailbox_header_lookup_init_real
    linkageType: ''
    returnType: struct mailbox_header_lookup_ctx
    signature: 'struct mailbox_header_lookup_ctx *

      mailbox_header_lookup_init(struct mailbox *box, const char *const headers[])'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: mailbox_header_lookup_ref
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-header.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mailbox_header_lookup_ref(struct mailbox_header_lookup_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:91,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_header_lookup_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 96
    functionName: mailbox_header_lookup_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-header.c
    functionUses: 11
    functionsReached:
    - i_assert
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void mailbox_header_lookup_unref(struct mailbox_header_lookup_ctx **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:102,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:105,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:107,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:109,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:111,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:112,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:113,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/mailbox-header.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - hdr1
    - hdr2
    argTypes:
    - struct mailbox_header_lookup_ctx*
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 98
    functionDepth: 8
    functionLinenumber: 98
    functionLinenumberEnd: 114
    functionName: mailbox_header_lookup_merge
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-header.c
    functionUses: 1
    functionsReached:
    - array_push_back
    - mailbox_header_lookup_init
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: struct mailbox_header_lookup_ctx
    signature: "struct mailbox_header_lookup_ctx *\nmailbox_header_lookup_merge(const
      struct mailbox_header_lookup_ctx *hdr1,\n\t\t\t    const struct mailbox_header_lookup_ctx
      *hdr2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c:21,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - value_r
    argTypes:
    - struct mailbox*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 26
    functionName: mailbox_attribute_specialuse_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c
    functionUses: 0
    functionsReached:
    - array_is_empty
    - t_array_const_string_join
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_specialuse_get(struct mailbox *box,\n\tconst
      char *key ATTR_UNUSED,\n\tstruct mail_attribute_value *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - value_r
    argTypes:
    - struct mailbox*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 51
    functionName: mailbox_attribute_comment_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mailbox_attribute_comment_get(struct mailbox *box,\n\tconst char
      *key ATTR_UNUSED,\n\tstruct mail_attribute_value *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - value_r
    argTypes:
    - struct mailbox*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 88
    functionName: server_attribute_comment_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int server_attribute_comment_get(struct mailbox *box,\n\tconst char
      *key ATTR_UNUSED,\n\tstruct mail_attribute_value *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - value_r
    argTypes:
    - struct mailbox*
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: server_attribute_admin_get
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int server_attribute_admin_get(struct mailbox *box,\n\tconst char
      *key ATTR_UNUSED,\n\tstruct mail_attribute_value *value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_register_internal
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c:136,1
    - Dst: mailbox_attribute_register_internal
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c:138,1
    - Dst: mailbox_attribute_register_internal
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c:140,1
    - Dst: mailbox_attribute_register_internal
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c:147,1
    - Dst: mailbox_attribute_register_internal
      Src: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 150
    functionName: mailbox_attributes_internal_init
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c
    functionUses: 1
    functionsReached:
    - mailbox_attribute_register_internal
    linkageType: ''
    returnType: void
    signature: void mailbox_attributes_internal_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 14
    functionName: fail_mailbox_is_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool fail_mailbox_is_readonly(struct mailbox *box ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - box
    - features
    argTypes:
    - struct mailbox*
    - enum mailbox_feature
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: fail_mailbox_enable
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_enable(struct mailbox *box,\n\t\t\t       enum mailbox_feature
      features)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - auto_boxes ATTR_UNUSED
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 29
    functionName: fail_mailbox_exists
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_exists(struct mailbox *box ATTR_UNUSED,\n\t\t\t       bool
      auto_boxes ATTR_UNUSED,\n\t\t\t       enum mailbox_existence *existence_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:33,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 36
    functionName: fail_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int fail_mailbox_open(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: fail_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fail_mailbox_close(struct mailbox *box ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: fail_mailbox_free
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - event_unref
    linkageType: ''
    returnType: void
    signature: void fail_mailbox_free(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: fail_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_create(struct mailbox *box,\n\t\t    const struct
      mailbox_update *update ATTR_UNUSED,\n\t\t    bool directory ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - box
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: fail_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_update(struct mailbox *box,\n\t\t    const struct
      mailbox_update *update ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: fail_mailbox_delete
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int fail_mailbox_delete(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - src
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 79
    functionName: fail_mailbox_rename
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_rename(struct mailbox *src,\n\t\t\t       struct
      mailbox *dest ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:87,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 90
    functionName: fail_mailbox_get_status
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_get_status(struct mailbox *box ATTR_UNUSED,\n\t\t\t\t
      \  enum mailbox_status_items items ATTR_UNUSED,\n\t\t\t\t   struct mailbox_status
      *status_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:97,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - metadata_r ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 100
    functionName: fail_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_get_metadata(struct mailbox *box,\n\t\t\t  enum mailbox_metadata_items
      items ATTR_UNUSED,\n\t\t\t  struct mailbox_metadata *metadata_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - box
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: fail_mailbox_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_set_subscribed(struct mailbox *box,\n\t\t\t\t       bool
      set ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - box
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 119
    functionName: fail_mailbox_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: "struct mailbox_sync_context *\nfail_mailbox_sync_init(struct mailbox
      *box,\n\t\t       enum mailbox_sync_flags flags ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - sync_rec_r ATTR_UNUSED
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: fail_mailbox_sync_next
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool fail_mailbox_sync_next(struct mailbox_sync_context *ctx ATTR_UNUSED,\n\t\t
      \      struct mailbox_sync_rec *sync_rec_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:132,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:133,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 136
    functionName: fail_mailbox_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - i_free
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_sync_deinit(struct mailbox_sync_context *ctx,\n\t\t\t
      struct mailbox_sync_status *status_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: fail_mailbox_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fail_mailbox_notify_changes(struct mailbox *box ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:149,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - box
    - flags
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 154
    functionName: fail_mailbox_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nfail_mailbox_transaction_begin(struct
      mailbox *box,\n\t\t\t       enum mailbox_transaction_flags flags,\n\t\t\t       const
      char *reason ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:159,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 161
    functionName: fail_mailbox_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void fail_mailbox_transaction_rollback(struct mailbox_transaction_context
      *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fail_mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: fail_mailbox_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - fail_mailbox_transaction_rollback
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_transaction_commit(struct mailbox_transaction_context
      *t,\n\t\t\t\tstruct mail_transaction_commit_changes *changes_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:181,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:185,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - t
    - args
    - sort_program ATTR_UNUSED
    - wanted_fields ATTR_UNUSED
    - wanted_headers ATTR_UNUSED
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - enum mail_sort_type*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 188
    functionName: fail_mailbox_search_init
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct mail_search_context
    signature: "struct mail_search_context *\nfail_mailbox_search_init(struct mailbox_transaction_context
      *t,\n\t\t\t struct mail_search_args *args,\n\t\t\t const enum mail_sort_type
      *sort_program ATTR_UNUSED,\n\t\t\t enum mail_fetch_field wanted_fields ATTR_UNUSED,\n\t\t\t
      struct mailbox_header_lookup_ctx *wanted_headers ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:192,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:193,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: fail_mailbox_search_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: int
    signature: int fail_mailbox_search_deinit(struct mail_search_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - mail_r
    - tryagain_r
    argTypes:
    - struct mail_search_context*
    - struct mail**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 205
    functionName: fail_mailbox_search_next_nonblock
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool fail_mailbox_search_next_nonblock(struct mail_search_context
      *ctx ATTR_UNUSED,\n\t\t\t\t  struct mail **mail_r, bool *tryagain_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: fail_mailbox_search_next_update_seq
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool fail_mailbox_search_next_update_seq(struct mail_search_context
      *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_search_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 218
    functionName: fail_mailbox_search_next_match_mail
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_search_next_match_mail(struct mail_search_context
      *ctx ATTR_UNUSED,\n\t\t\t\t    struct mail *mail ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 228
    functionName: fail_mailbox_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      fail_mailbox_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 235
    functionName: fail_mailbox_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_save_begin(struct mail_save_context *ctx ATTR_UNUSED,\n\t\t\tstruct
      istream *input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: fail_mailbox_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fail_mailbox_save_continue(struct mail_save_context *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: fail_mailbox_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fail_mailbox_save_finish(struct mail_save_context *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 252
    functionName: fail_mailbox_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fail_mailbox_save_cancel(struct mail_save_context *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 259
    functionName: fail_mailbox_copy
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fail_mailbox_copy(struct mail_save_context *ctx ATTR_UNUSED,\n\t\t
      \ struct mail *mail ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: fail_mailbox_is_inconsistent
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool fail_mailbox_is_inconsistent(struct mailbox *box ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:323,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:324,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:326,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:327,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:327,1
    - Dst: mail_storage_mailbox_create_event
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:334,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:336,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/fail-mailbox.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 316
    functionDepth: 5
    functionLinenumber: 316
    functionLinenumberEnd: 339
    functionName: fail_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/fail-mailbox.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - p_array_init
    - mail_storage_mailbox_create_event
    - mailbox_list_get_storage_name
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nfail_mailbox_alloc(struct mail_storage *storage,
      struct mailbox_list *list,\n\t\t   const char *vname, enum mailbox_flags flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ENOQUOTA
      Src: /src/dovecot/src/lib-storage/mail-error.c:16,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/mail-error.c:19,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - error_r
    - error_string_r
    argTypes:
    - enum mail_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 27
    functionName: mail_error_from_errno
    functionSourceFile: /src/dovecot/src/lib-storage/mail-error.c
    functionUses: 2
    functionsReached:
    - ENOTFOUND
    - ENOQUOTA
    linkageType: ''
    returnType: bool
    signature: "bool mail_error_from_errno(enum mail_error *error_r,\n\t\t\t   const
      char **error_string_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-storage/mail-error.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func
    - path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: mail_error_eacces_msg
    functionSourceFile: /src/dovecot/src/lib-storage/mail-error.c
    functionUses: 4
    functionsReached:
    - eacces_error_get
    linkageType: ''
    returnType: char
    signature: char *mail_error_eacces_msg(const char *func, const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eacces_error_get_creating
      Src: /src/dovecot/src/lib-storage/mail-error.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func
    - path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: mail_error_create_eacces_msg
    functionSourceFile: /src/dovecot/src/lib-storage/mail-error.c
    functionUses: 1
    functionsReached:
    - eacces_error_get_creating
    linkageType: ''
    returnType: char
    signature: char *mail_error_create_eacces_msg(const char *func, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:40,1
    - Dst: struct mail_storage*::v::add_list
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:43,1
    - Dst: hook_mail_namespace_storage_added
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ns
    - storage
    argTypes:
    - struct mail_namespace*
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 45
    functionName: mail_namespace_add_storage
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 1
    functionsReached:
    - struct mail_storage*::v::add_list
    - hook_mail_namespace_storage_added
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void mail_namespace_add_storage(struct mail_namespace *ns,\n\t\t\t\tstruct
      mail_storage *storage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ns
    - list
    argTypes:
    - struct mail_namespace*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: mail_namespace_finish_list_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 1
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: "void mail_namespace_finish_list_init(struct mail_namespace *ns,\n\t\t\t\t
      \    struct mailbox_list *list)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:58,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:59,1
    - Dst: mail_storage_unref
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:60,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:61,1
    - Dst: mailbox_list_destroy
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:64,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:66,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:68,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:70,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:71,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:72,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 73
    functionName: mail_namespace_free
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - settings_instance_free
    - array_foreach_elem
    - settings_free
    - mail_storage_unref
    - mailbox_list_destroy
    - array_is_created
    - i_free
    - array_free
    - mail_user_unref
    linkageType: ''
    returnType: void
    signature: void mail_namespace_free(struct mail_namespace *ns)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:82,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:85,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:88,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:89,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:91,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:94,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:96,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:99,1
    - Dst: mail_namespace_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:101,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:105,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:107,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:109,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:110,1
    - Dst: mail_namespace_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 4
    argNames:
    - user
    - ns_set
    - ns_r
    - error_r
    argTypes:
    - struct mail_user*
    - struct mail_namespace_settings*
    - struct mail_namespace**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 75
    functionDepth: 5
    functionLinenumber: 75
    functionLinenumberEnd: 128
    functionName: mail_namespace_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - strcmp
    - mail_namespace_free
    - pool_ref
    - t_strdup_printf
    - i_strdup
    - i_new
    linkageType: ''
    returnType: int
    signature: "int mail_namespace_alloc(struct mail_user *user,\n\t\t\t const struct
      mail_namespace_settings *ns_set,\n\t\t\t struct mail_namespace **ns_r,\n\t\t\t
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:140,1
    - Dst: mail_namespace_alloc
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:149,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:159,1
    - Dst: mail_storage_create
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:169,1
    - Dst: mail_namespace_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 5
    argNames:
    - user
    - set_event
    - ns_set
    - ns_p
    - error_r
    argTypes:
    - struct mail_user*
    - struct event*
    - struct mail_namespace_settings*
    - struct mail_namespace**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 130
    functionDepth: 9
    functionLinenumber: 130
    functionLinenumberEnd: 177
    functionName: mail_namespaces_init_add
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - strchr
    - mail_namespace_free
    - mail_storage_create
    - mail_namespace_alloc
    - e_debug
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int mail_namespaces_init_add(struct mail_user *user, struct event
      *set_event,\n\t\t\t     const struct mail_namespace_settings *ns_set,\n\t\t\t
      \    struct mail_namespace **ns_p, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:182,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:183,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ns
    - error_r
    argTypes:
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 200
    functionName: namespace_is_valid_alias_storage
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool namespace_is_valid_alias_storage(struct mail_namespace *ns,\n\t\t\t\t\t
      \    const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_name
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:208,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:211,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:216,1
    - Dst: namespace_is_valid_alias_storage
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - ns
    - all_namespaces
    - error_r
    argTypes:
    - struct mail_namespace*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 234
    functionName: namespace_set_alias_for
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - namespace_is_valid_alias_storage
    - t_strdup_printf
    - mail_namespace_find_name
    linkageType: ''
    returnType: int
    signature: "int namespace_set_alias_for(struct mail_namespace *ns,\n\t\t\tstruct
      mail_namespace *all_namespaces,\n\t\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:241,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ns
    - path_r
    argTypes:
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 249
    functionName: get_listindex_path
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: bool
    signature: bool get_listindex_path(struct mail_namespace *ns, const char **path_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_listindex_path
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:264,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:265,1
    - Dst: get_listindex_path
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:270,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:271,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:275,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:276,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:277,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - ns
    - error_r
    argTypes:
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 288
    functionName: namespace_has_duplicate_listindex
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - strcmp
    - get_listindex_path
    - t_strdup_printf
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: bool
    signature: "bool namespace_has_duplicate_listindex(struct mail_namespace *ns,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:299,1
    - Dst: mail_namespace_find_prefix
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:300,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:301,1
    - Dst: namespace_set_alias_for
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:317,1
    - Dst: namespace_has_duplicate_listindex
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:319,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:325,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:335,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 58
    argCount: 2
    argNames:
    - namespaces
    - error_r
    argTypes:
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 373
    functionName: namespaces_check
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - namespace_has_duplicate_listindex
    - strlen
    - t_strdup_printf
    - mail_namespace_find_prefix
    - namespace_set_alias_for
    linkageType: ''
    returnType: bool
    signature: bool namespaces_check(struct mail_namespace *namespaces, const char
      **error_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:382,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:390,1
    - Dst: settings_instance_dup
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:392,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:393,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:395,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:398,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:399,1
    - Dst: mail_namespaces_init_add
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:401,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:404,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:406,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:409,1
    - Dst: namespaces_check
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:415,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:416,1
    - Dst: mail_user_add_namespace
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:421,1
    - Dst: hook_mail_namespaces_created
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:423,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - namespaces
    - error_r
    argTypes:
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 375
    functionDepth: 10
    functionLinenumber: 375
    functionLinenumberEnd: 425
    functionName: mail_namespaces_init_finish
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - i_unreached
    - settings_instance_dup
    - mail_storage_service_user_get_settings_instance
    - mail_user_add_namespace
    - hook_mail_namespaces_created
    - event_set_ptr
    - namespaces_check
    - settings_override
    - mail_namespaces_init_add
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int mail_namespaces_init_finish(struct mail_namespace *namespaces,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:450,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:454,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:455,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:461,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:464,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:470,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:474,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:475,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:476,1
    - Dst: mail_namespaces_init_add
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:479,1
    - Dst: mail_namespaces_deinit
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:482,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:483,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:484,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:487,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:492,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:493,1
    - Dst: mail_namespaces_init_default_location
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:498,1
    - Dst: mail_namespaces_init_finish
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:500,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - user
    - error_r
    argTypes:
    - struct mail_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 443
    functionDepth: 11
    functionLinenumber: 443
    functionLinenumberEnd: 501
    functionName: mail_namespaces_init
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 2
    functionsReached:
    - event_create
    - event_unref
    - mail_namespaces_init_default_location
    - e_debug
    - array_get
    - t_strdup_printf
    - settings_free
    - mail_namespaces_init_finish
    - event_add_str
    - settings_get_filter
    - settings_event_add_list_filter_name
    - mail_namespaces_init_add
    - array_is_created
    - i_assert
    - mail_namespaces_deinit
    linkageType: ''
    returnType: int
    signature: int mail_namespaces_init(struct mail_user *user, const char **error_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:517,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:520,1
    - Dst: mail_namespace_alloc
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:524,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:525,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:531,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:533,1
    - Dst: settings_instance_dup
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:534,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:538,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:543,1
    - Dst: mail_storage_create
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:548,1
    - Dst: mail_namespace_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:549,1
    - Dst: mail_namespaces_init_finish
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:552,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - user
    - set_event
    - override_mail_driver
    - override_mail_path
    - error_r
    argTypes:
    - struct mail_user*
    - struct event*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 503
    functionDepth: 11
    functionLinenumber: 503
    functionLinenumberEnd: 553
    functionName: mail_namespaces_init_location_full
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - mail_namespace_free
    - i_assert
    - mail_namespace_alloc
    - mail_storage_create
    - settings_instance_dup
    - settings_free
    - mail_storage_service_user_get_settings_instance
    - mail_namespaces_init_finish
    - settings_override
    - settings_get
    - p_memdup
    linkageType: ''
    returnType: int
    signature: "int mail_namespaces_init_location_full(struct mail_user *user,\n\t\t\t\t
      \  struct event *set_event,\n\t\t\t\t   const char *override_mail_driver,\n\t\t\t\t
      \  const char *override_mail_path,\n\t\t\t\t   const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:563,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:567,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:569,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:571,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:572,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:574,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:576,1
    - Dst: mail_namespaces_init_location_full
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:583,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:585,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:586,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:591,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:596,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - user
    - error_r
    argTypes:
    - struct mail_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 555
    functionDepth: 12
    functionLinenumber: 555
    functionLinenumberEnd: 600
    functionName: mail_namespaces_init_default_location
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 1
    functionsReached:
    - event_create
    - event_unref
    - t_strdup_printf
    - getenv
    - settings_free
    - settings_get
    - mail_namespaces_init_location_full
    linkageType: ''
    returnType: int
    signature: "int mail_namespaces_init_default_location(struct mail_user *user,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespaces_init_location_full
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - user
    - set_event
    - error_r
    argTypes:
    - struct mail_user*
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 602
    functionDepth: 12
    functionLinenumber: 602
    functionLinenumberEnd: 608
    functionName: mail_namespaces_init_location
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - mail_namespaces_init_location_full
    linkageType: ''
    returnType: int
    signature: "int mail_namespaces_init_location(struct mail_user *user,\n\t\t\t\t
      \ struct event *set_event,\n\t\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:614,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:618,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 610
    functionDepth: 1
    functionLinenumber: 610
    functionLinenumberEnd: 623
    functionName: mail_namespaces_init_empty
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct mail_namespace
    signature: struct mail_namespace *mail_namespaces_init_empty(struct mail_user
      *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _namespaces
    argTypes:
    - struct mail_namespace**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 625
    functionDepth: 5
    functionLinenumber: 625
    functionLinenumberEnd: 639
    functionName: mail_namespaces_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 2
    functionsReached:
    - mail_namespace_free
    linkageType: ''
    returnType: void
    signature: void mail_namespaces_deinit(struct mail_namespace **_namespaces)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:649,1
    - Dst: mail_storage_set_callbacks
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - namespaces
    - callbacks
    - context
    argTypes:
    - struct mail_namespace*
    - struct mail_storage_callbacks*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 652
    functionName: mail_namespaces_set_storage_callbacks
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 1
    functionsReached:
    - mail_storage_set_callbacks
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void mail_namespaces_set_storage_callbacks(struct mail_namespace *namespaces,\n\t\t\t\t\t
      \  struct mail_storage_callbacks *callbacks,\n\t\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 659
    functionName: mail_namespace_ref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_namespace_ref(struct mail_namespace *ns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:665,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:672,1
    - Dst: mail_namespace_free
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _ns
    argTypes:
    - struct mail_namespace**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 661
    functionDepth: 5
    functionLinenumber: 661
    functionLinenumberEnd: 674
    functionName: mail_namespace_unref
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - mail_namespace_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_namespace_unref(struct mail_namespace **_ns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:680,1
    - Dst: mail_namespace_unref
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:691,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 676
    functionDepth: 6
    functionLinenumber: 676
    functionLinenumberEnd: 692
    functionName: mail_namespace_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 2
    functionsReached:
    - mail_namespace_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mail_namespace_destroy(struct mail_namespace *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 697
    functionName: mail_namespace_get_event
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *mail_namespace_get_event(const struct mail_namespace
      *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 703
    functionName: mail_namespace_get_default_storage
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct mail_storage
    signature: 'struct mail_storage *

      mail_namespace_get_default_storage(struct mail_namespace *ns)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 705
    functionDepth: 2
    functionLinenumber: 705
    functionLinenumberEnd: 709
    functionName: mail_namespace_get_sep
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 32
    functionsReached:
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: char mail_namespace_get_sep(struct mail_namespace *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:715,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - namespaces
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 716
    functionName: mail_namespaces_get_root_sep
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 2
    functionsReached:
    - mail_namespace_get_sep
    linkageType: ''
    returnType: char
    signature: char mail_namespaces_get_root_sep(struct mail_namespace *namespaces)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:721,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:726,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:727,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:734,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:736,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - ns
    - mailbox
    - inbox
    argTypes:
    - struct mail_namespace*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 741
    functionName: mail_namespace_is_usable_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - strncmp
    - mail_namespace_get_sep
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: "bool mail_namespace_is_usable_prefix(struct mail_namespace *ns,\n\t\t\t\t\t
      \   const char *mailbox, bool inbox)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_to_nfc
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:759,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:759,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:760,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:763,1
    - Dst: mail_namespace_is_usable_prefix
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:779,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 4
    argNames:
    - namespaces
    - box
    - flags
    - mask
    argTypes:
    - struct mail_namespace*
    - char*
    - enum namespace_flags
    - enum namespace_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 743
    functionDepth: 2
    functionLinenumber: 743
    functionLinenumberEnd: 785
    functionName: mail_namespace_find_mask
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - strlen
    - mail_namespace_is_usable_prefix
    - str_begins_icase
    - uni_utf8_to_nfc
    - i_assert
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nmail_namespace_find_mask(struct mail_namespace
      *namespaces, const char *box,\n\t\t\t enum namespace_flags flags,\n\t\t\t enum
      namespace_flags mask)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_to_nfc
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:797,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:797,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:798,1
    - Dst: mailbox_list_get_storage
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:801,1
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ns
    - mailbox
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 805
    functionName: mail_namespace_find_shared
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - strlen
    - mailbox_list_get_namespace
    - mailbox_list_get_storage
    - uni_utf8_to_nfc
    - i_assert
    linkageType: ''
    returnType: struct mail_namespace
    signature: 'struct mail_namespace *

      mail_namespace_find_shared(struct mail_namespace *ns, const char *mailbox)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_mask
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:812,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:813,1
    - Dst: mail_namespace_is_shared_user_root
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:815,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:817,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:817,1
    - Dst: mail_namespace_find_shared
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:818,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - namespaces
    - mailbox
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 807
    functionDepth: 3
    functionLinenumber: 807
    functionLinenumberEnd: 821
    functionName: mail_namespace_find
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 16
    functionsReached:
    - strchr
    - mail_namespace_get_sep
    - mail_namespace_find_shared
    - mail_namespace_find_mask
    - i_assert
    - mail_namespace_is_shared_user_root
    linkageType: ''
    returnType: struct mail_namespace
    signature: 'struct mail_namespace *

      mail_namespace_find(struct mail_namespace *namespaces, const char *mailbox)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:830,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:833,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - namespaces
    - mailbox
    argTypes:
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 823
    functionDepth: 4
    functionLinenumber: 823
    functionLinenumberEnd: 838
    functionName: mail_namespace_find_unalias
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find
    - mailbox_list_get_vname
    - mailbox_list_get_storage_name
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nmail_namespace_find_unalias(struct mail_namespace
      *namespaces,\n\t\t\t    const char **mailbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_mask
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - namespaces
    - mailbox
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 846
    functionName: mail_namespace_find_visible
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 1
    functionsReached:
    - mail_namespace_find_mask
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nmail_namespace_find_visible(struct mail_namespace
      *namespaces,\n\t\t\t    const char *mailbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_mask
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - namespaces
    - mailbox
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 848
    functionDepth: 3
    functionLinenumber: 848
    functionLinenumberEnd: 855
    functionName: mail_namespace_find_subscribable
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find_mask
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nmail_namespace_find_subscribable(struct mail_namespace
      *namespaces,\n\t\t\t\t const char *mailbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_mask
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - namespaces
    - mailbox
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 857
    functionDepth: 3
    functionLinenumber: 857
    functionLinenumberEnd: 863
    functionName: mail_namespace_find_unsubscribable
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find_mask
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nmail_namespace_find_unsubscribable(struct
      mail_namespace *namespaces,\n\t\t\t\t   const char *mailbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:868,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:873,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - namespaces
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 876
    functionName: mail_namespace_find_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 33
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct mail_namespace
    signature: 'struct mail_namespace *

      mail_namespace_find_inbox(struct mail_namespace *namespaces)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:883,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:887,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - namespaces
    - prefix
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 891
    functionName: mail_namespace_find_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 3
    functionsReached:
    - strcmp
    - strlen
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nmail_namespace_find_prefix(struct mail_namespace
      *namespaces,\n\t\t\t   const char *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:898,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:902,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:903,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - namespaces
    - prefix
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 907
    functionName: mail_namespace_find_prefix_nosep
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    - mail_namespace_get_sep
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nmail_namespace_find_prefix_nosep(struct mail_namespace
      *namespaces,\n\t\t\t\t const char *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:916,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - namespaces
    - name
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 920
    functionName: mail_namespace_find_name
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct mail_namespace
    signature: "struct mail_namespace *\nmail_namespace_find_name(struct mail_namespace
      *namespaces,\n\t\t\t const char *name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:933,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/mail-namespace.c:934,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 938
    functionName: mail_namespace_is_shared_user_root
    functionSourceFile: /src/dovecot/src/lib-storage/mail-namespace.c
    functionUses: 2
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool mail_namespace_is_shared_user_root(struct mail_namespace *ns)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 35
    functionName: mailbox_uidvalidity_next_fallback
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mailbox_uidvalidity_next_fallback(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:40,1
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:46,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:48,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:49,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:50,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:52,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:56,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:58,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:59,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:63,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:63,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:69,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:70,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:71,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:71,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:72,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:73,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:74,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - list
    - path
    - uid_validity
    argTypes:
    - struct mailbox_list*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 75
    functionName: mailbox_uidvalidity_write
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - umask
    - open
    - pwrite_full
    - mailbox_list_get_user
    - strlen
    - e_error
    - close
    - mailbox_list_get_root_permissions
    - i_snprintf
    - eperm_error_get_chgrp
    - fchown
    linkageType: ''
    returnType: void
    signature: "void mailbox_uidvalidity_write(struct mailbox_list *list,\n\t\t\t\t
      \     const char *path, uint32_t uid_validity)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:86,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:87,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:88,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:89,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:90,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:93,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:94,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:96,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:100,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:102,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:102,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:102,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:109,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:109,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:110,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:110,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 4
    argNames:
    - list
    - path
    - uid_validity
    - log_enoent
    argTypes:
    - struct mailbox_list*
    - char*
    - uint32_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 112
    functionName: mailbox_uidvalidity_rename
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c
    functionUses: 0
    functionsReached:
    - rename
    - str_c
    - t_str_new
    - str_printfa
    - str_len
    - mailbox_list_get_user
    - e_error
    - str_truncate
    - str_append
    linkageType: ''
    returnType: int
    signature: "int mailbox_uidvalidity_rename(struct mailbox_list *list, const char
      *path,\n\t\t\t   uint32_t *uid_validity, bool log_enoent)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:126,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:131,1
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:135,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:141,1
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:142,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:145,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:145,1
    - Dst: mailbox_uidvalidity_next_fallback
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:147,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:149,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:150,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:156,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:157,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:158,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:166,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:167,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:167,1
    - Dst: mailbox_uidvalidity_next_fallback
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:173,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:174,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:176,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:177,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:178,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:186,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:186,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:190,1
    - Dst: mailbox_uidvalidity_write
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:191,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:196,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:197,1
    - Dst: mailbox_uidvalidity_rename
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:201,1
    - Dst: mailbox_uidvalidity_next_fallback
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:202,1
    - Dst: mailbox_uidvalidity_write
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:203,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 2
    argNames:
    - list
    - path
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 114
    functionDepth: 6
    functionLinenumber: 114
    functionLinenumberEnd: 205
    functionName: mailbox_uidvalidity_next_rescan
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c
    functionUses: 0
    functionsReached:
    - mailbox_uidvalidity_rename
    - strlen
    - t_strdup_printf
    - mailbox_list_get_user
    - readdir
    - mailbox_list_mkdir_root
    - opendir
    - i_close_fd
    - umask
    - open
    - e_error
    - closedir
    - i_unlink_if_exists
    - strncmp
    - mailbox_uidvalidity_write
    - str_to_uint32_hex
    - strrchr
    - mailbox_uidvalidity_next_fallback
    - t_strdup_until
    - t_strconcat
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mailbox_uidvalidity_next_rescan(struct mailbox_list *list,
      const char *path)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:209,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:214,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:217,1
    - Dst: mailbox_uidvalidity_next_rescan
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:218,1
    - Dst: read_full
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:220,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:222,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:223,1
    - Dst: mailbox_uidvalidity_next_rescan
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:224,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:227,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:230,1
    - Dst: mailbox_uidvalidity_next_rescan
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:231,1
    - Dst: mailbox_uidvalidity_rename
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:235,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:236,1
    - Dst: mailbox_uidvalidity_next_rescan
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:237,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:242,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:243,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:244,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:244,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:245,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:246,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c:247,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - list
    - path
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 207
    functionDepth: 7
    functionLinenumber: 207
    functionLinenumberEnd: 249
    functionName: mailbox_uidvalidity_next
    functionSourceFile: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c
    functionUses: 0
    functionsReached:
    - mailbox_uidvalidity_next_rescan
    - read_full
    - mailbox_uidvalidity_rename
    - i_unreached
    - i_close_fd
    - pwrite_full
    - open
    - strlen
    - mailbox_list_get_user
    - e_error
    - i_snprintf
    - close
    - str_to_uint32_hex
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mailbox_uidvalidity_next(struct mailbox_list *list, const
      char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:22,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 17
    functionDepth: 2
    functionLinenumber: 17
    functionLinenumberEnd: 31
    functionName: mail_user_find_attribute_namespace
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: struct mail_namespace
    signature: 'struct mail_namespace *

      mail_user_find_attribute_namespace(struct mail_user *user)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:46,1
    - Dst: mail_user_find_attribute_namespace
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:50,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:53,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:58,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:59,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:60,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:61,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:64,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:71,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - err_storage
    - user
    - dict_r
    argTypes:
    - struct mail_storage*
    - struct mail_user*
    - struct dict**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 33
    functionDepth: 4
    functionLinenumber: 33
    functionLinenumberEnd: 78
    functionName: index_storage_get_user_dict
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - mail_user_find_attribute_namespace
    - settings_event_add_filter_name
    - mail_storage_set_critical
    - mail_storage_set_internal_error
    - mail_storage_set_error
    - dict_init_auto
    linkageType: ''
    returnType: int
    signature: "int index_storage_get_user_dict(struct mail_storage *err_storage,\n\t\t\t
      \   struct mail_user *user, struct dict **dict_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:94,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:99,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:101,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:103,1
    - Dst: index_storage_get_user_dict
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:106,1
    - Dst: index_storage_get_user_dict
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:110,1
    - Dst: index_storage_get_user_dict
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:114,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:124,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:128,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:129,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:130,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:131,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:134,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:141,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 4
    argNames:
    - box
    - type_flags
    - dict_r
    - mailbox_prefix_r
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 80
    functionDepth: 8
    functionLinenumber: 80
    functionLinenumberEnd: 148
    functionName: index_storage_get_dict
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - mailbox_get_namespace
    - event_create
    - dict_init_auto
    - event_unref
    - mail_storage_set_internal_error
    - guid_128_to_string
    - settings_event_add_filter_name
    - mail_storage_set_critical
    - mailbox_get_metadata
    - mail_storage_set_error
    - index_storage_get_user_dict
    linkageType: ''
    returnType: int
    signature: "int index_storage_get_dict(struct mailbox *box, enum mail_attribute_type
      type_flags,\n\t\t       struct dict **dict_r, const char **mailbox_prefix_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:158,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:161,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - type_flags
    - mailbox_prefix
    - key
    argTypes:
    - enum mail_attribute_type
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 165
    functionName: key_get_prefixed
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - i_unreached
    linkageType: ''
    returnType: char
    signature: "char *\nkey_get_prefixed(enum mail_attribute_type type_flags, const
      char *mailbox_prefix,\n\t\t const char *key)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:186,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:193,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:196,1
    - Dst: index_storage_get_dict
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:203,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:205,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:206,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:207,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - t
    - type_flags
    - dtrans_r
    - mailbox_prefix_r
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_attribute_type
    - struct dict_transaction_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 167
    functionDepth: 9
    functionLinenumber: 167
    functionLinenumberEnd: 209
    functionName: index_storage_attribute_get_dict_trans
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - guid_128_to_string
    - mail_user_get_dict_op_settings
    - mailbox_list_get_user
    - dict_transaction_begin
    - i_assert
    - mailbox_get_metadata
    - index_storage_get_dict
    linkageType: ''
    returnType: int
    signature: "int index_storage_attribute_get_dict_trans(struct mailbox_transaction_context
      *t,\n\t\t\t\t       enum mail_attribute_type type_flags,\n\t\t\t\t       struct
      dict_transaction_context **dtrans_r,\n\t\t\t\t       const char **mailbox_prefix_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_attribute_get_dict_trans
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:223,1
    - Dst: key_get_prefixed
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:229,1
    - Dst: mailbox_attribute_value_to_string
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:232,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:236,1
    - Dst: mail_index_attribute_set
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:237,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:238,1
    - Dst: dict_unset
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:240,1
    - Dst: mail_index_attribute_unset
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - t
    - type_flags
    - key
    - value
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 211
    functionDepth: 10
    functionLinenumber: 211
    functionLinenumberEnd: 243
    functionName: index_storage_attribute_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - mail_index_attribute_set
    - key_get_prefixed
    - strlen
    - mail_index_attribute_unset
    - mailbox_attribute_value_to_string
    - dict_unset
    - dict_set
    - index_storage_attribute_get_dict_trans
    linkageType: ''
    returnType: int
    signature: "int index_storage_attribute_set(struct mailbox_transaction_context
      *t,\n\t\t\t\tenum mail_attribute_type type_flags,\n\t\t\t\tconst char *key,\n\t\t\t\tconst
      struct mail_attribute_value *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:256,1
    - Dst: index_storage_get_dict
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:258,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:261,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:262,1
    - Dst: dict_lookup
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:263,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:263,1
    - Dst: key_get_prefixed
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:264,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - box
    - type_flags
    - key
    - value_r
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 247
    functionDepth: 9
    functionLinenumber: 247
    functionLinenumberEnd: 272
    functionName: index_storage_attribute_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dict_lookup
    - key_get_prefixed
    - mail_user_get_dict_op_settings
    - mailbox_list_get_user
    - pool_datastack_create
    - mailbox_set_critical
    - index_storage_get_dict
    linkageType: ''
    returnType: int
    signature: "int index_storage_attribute_get(struct mailbox *box,\n\t\t\t\tenum
      mail_attribute_type type_flags,\n\t\t\t\tconst char *key,\n\t\t\t\tstruct mail_attribute_value
      *value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:283,1
    - Dst: index_storage_get_dict
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:285,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:286,1
    - Dst: mail_storage_clear_error
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:287,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:291,1
    - Dst: key_get_prefixed
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:291,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:293,1
    - Dst: mailbox_list_get_user
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:294,1
    - Dst: mail_user_get_dict_op_settings
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:295,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - box
    - type_flags
    - prefix
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 274
    functionDepth: 9
    functionLinenumber: 274
    functionLinenumberEnd: 301
    functionName: index_storage_attribute_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - key_get_prefixed
    - strlen
    - mail_user_get_dict_op_settings
    - mailbox_list_get_user
    - i_strdup
    - dict_iterate_init
    - mail_storage_clear_error
    - i_new
    - index_storage_get_dict
    linkageType: ''
    returnType: struct mailbox_attribute_iter
    signature: "struct mailbox_attribute_iter *\nindex_storage_attribute_iter_init(struct
      mailbox *box,\n\t\t\t\t  enum mail_attribute_type type_flags,\n\t\t\t\t  const
      char *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_iterate
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:313,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mailbox_attribute_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 316
    functionName: index_storage_attribute_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - strncmp
    - i_assert
    - dict_iterate
    linkageType: ''
    returnType: char
    signature: 'char *

      index_storage_attribute_iter_next(struct mailbox_attribute_iter *_iter)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:328,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:329,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:334,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-attribute.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mailbox_attribute_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 318
    functionDepth: 4
    functionLinenumber: 318
    functionLinenumberEnd: 337
    functionName: index_storage_attribute_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attribute.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - i_free
    - dict_iterate_deinit
    linkageType: ''
    returnType: int
    signature: int index_storage_attribute_iter_deinit(struct mailbox_attribute_iter
      *_iter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:21,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:35,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:38,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct mail_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 43
    functionName: i_stream_mail_try_get_cached_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/istream-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - mail_storage_last_error_push
    - mail_get_physical_size
    - mail_storage_last_error_pop
    linkageType: ''
    returnType: bool
    signature: bool i_stream_mail_try_get_cached_size(struct mail_istream *mstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:65,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:66,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 76
    functionName: i_stream_mail_get_cached_mail_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/istream-mail.c
    functionUses: 0
    functionsReached:
    - mail_get_first_header
    - t_strdup_printf
    - N_ELEMENTS
    linkageType: ''
    returnType: char
    signature: 'char *

      i_stream_mail_get_cached_mail_id(struct mail_istream *mstream ATTR_UNUSED)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_mail_get_cached_mail_id
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:97,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:99,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:100,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:104,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:106,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:107,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - mstream
    - size
    argTypes:
    - struct mail_istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 110
    functionName: i_stream_mail_set_size_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/istream-mail.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - mail_set_cache_corrupted
    - t_strdup_printf
    - mailbox_get_vname
    - i_stream_get_name
    - i_stream_mail_get_cached_mail_id
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void i_stream_mail_set_size_corrupted(struct mail_istream *mstream,
      size_t size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:119,1
    - Dst: struct istream_private*::snapshot
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:123,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:128,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:129,1
    - Dst: i_stream_mail_set_size_corrupted
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:137,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:140,1
    - Dst: i_stream_snapshot_free
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:146,1
    - Dst: index_mail_refresh_expunged
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:156,1
    - Dst: i_stream_mail_try_get_cached_size
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:160,1
    - Dst: i_stream_mail_set_size_corrupted
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:162,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 167
    functionName: i_stream_mail_read
    functionSourceFile: /src/dovecot/src/lib-storage/index/istream-mail.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_stream_mail_try_get_cached_size
    - struct istream_private*::snapshot
    - i_stream_read_copy_from_parent
    - i_stream_mail_set_size_corrupted
    - i_stream_seek
    - i_stream_snapshot_free
    - index_mail_refresh_expunged
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_mail_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:174,1
    - Dst: i_stream_mail_try_get_cached_size
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:178,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:187,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-storage/index/istream-mail.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - mail
    - input
    - input_has_body
    argTypes:
    - struct mail*
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 189
    functionName: i_stream_create_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/istream-mail.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_mail_try_get_cached_size
    - i_new
    - i_stream_get_fd
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *i_stream_create_mail(struct mail *mail, struct istream
      *input,\n\t\t\t\t     bool input_has_body)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - l1
    - l2
    argTypes:
    - struct index_mail_line*
    - struct index_mail_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: header_line_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int header_line_cmp(const struct index_mail_line *l1,\n\t\t\t   const
      struct index_mail_line *l2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: index_mail_parse_header_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void index_mail_parse_header_deinit(struct index_mail *mail)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:54,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:56,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:57,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:59,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:60,1
    - Dst: HEADER_MATCH_USABLE
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:68,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:72,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:74,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:82,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:84,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:88,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:101,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:102,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:112,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:115,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:119,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:125,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:129,1
    - Dst: HEADER_MATCH_USABLE
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:134,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:135,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:138,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:140,1
    - Dst: index_mail_parse_header_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:145,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:146,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 42
    functionDepth: 12
    functionLinenumber: 42
    functionLinenumberEnd: 147
    functionName: index_mail_parse_header_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - pool_alloconly_create
    - buffer_append
    - buffer_append_zero
    - HEADER_MATCH_USABLE
    - array_get
    - buffer_create_dynamic
    - pool_unref
    - buffer_set_used_size
    - index_mail_cache_add_idx
    - mail_cache_field_can_add
    - index_mail_parse_header_deinit
    - array_sort
    - i_assert
    linkageType: ''
    returnType: void
    signature: void index_mail_parse_header_finish(struct index_mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:154,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:161,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - box
    - field
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 149
    functionDepth: 6
    functionLinenumber: 149
    functionLinenumberEnd: 164
    functionName: get_header_field_idx
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_strconcat
    - mail_cache_register_fields
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int get_header_field_idx(struct mailbox *box, const char *field)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 178
    functionName: index_mail_want_parse_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool index_mail_want_parse_headers(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_register_get_list
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:188,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:190,1
    - Dst: mail_cache_field_want_add
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:192,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:196,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:199,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 180
    functionDepth: 12
    functionLinenumber: 180
    functionLinenumberEnd: 200
    functionName: index_mail_parse_header_register_all_wanted
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - pool_unref
    - str_begins_icase_with
    - mail_cache_field_want_add
    - mail_cache_register_get_list
    linkageType: ''
    returnType: void
    signature: void index_mail_parse_header_register_all_wanted(struct index_mail
      *mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_filter_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:210,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:211,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:215,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:216,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:217,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:218,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:221,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:222,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:223,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:225,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:231,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:238,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:245,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:251,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:258,1
    - Dst: index_mail_parse_header_register_all_wanted
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:265,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 3
    argNames:
    - mail
    - headers
    - full_header_stream
    argTypes:
    - struct index_mail*
    - struct mailbox_header_lookup_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 202
    functionDepth: 13
    functionLinenumber: 202
    functionLinenumberEnd: 266
    functionName: index_mail_parse_header_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_idx_set
    - i_zero
    - buffer_create_dynamic
    - buffer_set_used_size
    - array_clear
    - index_mail_filter_stream_destroy
    - i_assert
    - index_mail_parse_header_register_all_wanted
    linkageType: ''
    returnType: void
    signature: "void index_mail_parse_header_init(struct index_mail *mail,\n\t\t\t\t
      \ struct mailbox_header_lookup_ctx *headers,\n\t\t\t\t  bool full_header_stream)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:293,1
    - Dst: imap_envelope_write
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:296,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:297,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:300,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:302,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:303,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 286
    functionDepth: 12
    functionLinenumber: 286
    functionLinenumberEnd: 305
    functionName: index_mail_parse_finish_imap_envelope
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_data
    - str_len
    - index_mail_cache_add_idx
    - mail_cache_field_can_add
    - imap_envelope_write
    - str_new
    linkageType: ''
    returnType: void
    signature: void index_mail_parse_finish_imap_envelope(struct index_mail *mail)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:316,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:322,1
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:323,1
    - Dst: message_part_envelope_parse_from_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:327,1
    - Dst: index_mail_parse_finish_imap_envelope
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:331,1
    - Dst: index_mail_parse_header_finish
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:339,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:342,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - part
    - hdr
    - mail
    argTypes:
    - struct message_part*
    - struct message_header_line*
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 307
    functionDepth: 13
    functionLinenumber: 307
    functionLinenumberEnd: 346
    functionName: index_mail_parse_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - message_part_data_parse_from_header
    - index_mail_parse_finish_imap_envelope
    - index_mail_parse_header_finish
    - i_assert
    - message_part_envelope_parse_from_header
    linkageType: ''
    returnType: void
    signature: "void index_mail_parse_header(struct message_part *part,\n\t\t\t     struct
      message_header_line *hdr,\n\t\t\t     struct index_mail *mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - part
    - hdr
    - mail
    argTypes:
    - struct message_part*
    - struct message_header_line*
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 385
    functionDepth: 14
    functionLinenumber: 385
    functionLinenumberEnd: 391
    functionName: index_mail_parse_part_header_cb
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - index_mail_parse_header
    linkageType: ''
    returnType: void
    signature: "void index_mail_parse_part_header_cb(struct message_part *part,\n\t\t\t\tstruct
      message_header_line *hdr,\n\t\t\t\tstruct index_mail *mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hdr
    - mail
    argTypes:
    - struct message_header_line*
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 393
    functionDepth: 14
    functionLinenumber: 393
    functionLinenumberEnd: 398
    functionName: index_mail_parse_header_cb
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - index_mail_parse_header
    linkageType: ''
    returnType: void
    signature: "void index_mail_parse_header_cb(struct message_header_line *hdr,\n\t\t\t
      \  struct index_mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:403,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:406,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:407,1
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:416,1
    - Dst: tee_i_stream_create
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:419,1
    - Dst: tee_i_stream_create_child
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:420,1
    - Dst: tee_i_stream_create_child
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:421,1
    - Dst: index_mail_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:423,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:426,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - _mail
    - input
    argTypes:
    - struct mail*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 400
    functionDepth: 14
    functionLinenumber: 400
    functionLinenumberEnd: 430
    functionName: index_mail_cache_parse_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - index_mail_want_cache
    - tee_i_stream_create_child
    - INDEX_MAIL
    - tee_i_stream_create
    - index_mail_parse_header_init
    - i_assert
    - message_parser_init
    - i_stream_unref
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      index_mail_cache_parse_init(struct mail *_mail, struct istream *input)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:440,1
    - Dst: index_mail_set_message_parts_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:441,1
    - Dst: index_mail_parts_reset
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:442,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:453,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:456,1
    - Dst: message_parser_init_from_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:461,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 432
    functionDepth: 4
    functionLinenumber: 432
    functionLinenumberEnd: 465
    functionName: index_mail_init_parser
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - message_parser_deinit_from_parts
    - index_mail_set_message_parts_corrupted
    - message_parser_init_from_parts
    - index_mail_parts_reset
    - i_stream_seek
    - message_parser_init
    linkageType: ''
    returnType: void
    signature: void index_mail_init_parser(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:472,1
    - Dst: index_mail_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:474,1
    - Dst: index_mail_init_parser
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:480,1
    - Dst: message_parser_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:486,1
    - Dst: message_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:488,1
    - Dst: index_mail_stream_check_failure
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:492,1
    - Dst: index_mail_parse_header_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:493,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:496,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:498,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - mail
    - headers
    argTypes:
    - struct index_mail*
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 467
    functionDepth: 14
    functionLinenumber: 467
    functionLinenumberEnd: 500
    functionName: index_mail_parse_headers_internal
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - message_parse_header
    - ENUM_NEGATE
    - index_mail_init_parser
    - message_parser_parse_header
    - index_mail_parse_header_deinit
    - index_mail_parse_header_init
    - i_assert
    - index_mail_stream_check_failure
    linkageType: ''
    returnType: int
    signature: "int index_mail_parse_headers_internal(struct index_mail *mail,\n\t\t\t\t
      \     struct mailbox_header_lookup_ctx *headers)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_hdr_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:512,1
    - Dst: index_mail_parse_headers_internal
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:515,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mail
    - headers
    - reason
    argTypes:
    - struct index_mail*
    - struct mailbox_header_lookup_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 502
    functionDepth: 15
    functionLinenumber: 502
    functionLinenumberEnd: 518
    functionName: index_mail_parse_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - mail_get_hdr_stream_because
    - i_stream_seek
    - index_mail_parse_headers_internal
    linkageType: ''
    returnType: int
    signature: "int index_mail_parse_headers(struct index_mail *mail,\n\t\t\t     struct
      mailbox_header_lookup_ctx *headers,\n\t\t\t     const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: message_part_envelope_parse_from_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:524,1
    - Dst: index_mail_parse_finish_imap_envelope
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - mail
    argTypes:
    - struct message_header_line*
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 520
    functionDepth: 13
    functionLinenumber: 520
    functionLinenumberEnd: 529
    functionName: imap_envelope_parse_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - index_mail_parse_finish_imap_envelope
    - message_part_envelope_parse_from_header
    linkageType: ''
    returnType: void
    signature: "void imap_envelope_parse_callback(struct message_header_line *hdr,\n\t\t\t
      \    struct index_mail *mail)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:540,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:541,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:543,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:546,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:555,1
    - Dst: mail_get_header_stream
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:557,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:558,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:561,1
    - Dst: message_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:566,1
    - Dst: index_mail_stream_log_failure_for
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:569,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:572,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:576,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 531
    functionDepth: 8
    functionLinenumber: 531
    functionLinenumberEnd: 578
    functionName: index_mail_headers_get_envelope
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - str_c
    - message_parse_header
    - index_mail_cache_lookup_field
    - index_mail_stream_log_failure_for
    - mailbox_header_lookup_unref
    - mail_get_header_stream
    - mailbox_header_lookup_init
    - i_stream_seek
    - i_assert
    - str_new
    - str_free
    linkageType: ''
    returnType: int
    signature: int index_mail_headers_get_envelope(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:585,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - buffer
    - pos
    argTypes:
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 595
    functionName: get_header_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 5
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: size_t get_header_size(buffer_t *buffer, size_t pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:603,1
    - Dst: HEADER_MATCH_USABLE
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - mail
    - field_idx
    argTypes:
    - struct index_mail*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 607
    functionName: index_mail_header_is_parsed
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - HEADER_MATCH_USABLE
    - array_get
    linkageType: ''
    returnType: int
    signature: "int index_mail_header_is_parsed(struct index_mail *mail,\n\t\t\t\t
      \      unsigned int field_idx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:622,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - unsigned char**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 628
    functionName: skip_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 2
    functionsReached:
    - IS_LWSP
    linkageType: ''
    returnType: bool
    signature: bool skip_header(const unsigned char **data, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:640,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:641,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:644,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:647,1
    - Dst: skip_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:655,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:658,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:661,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:665,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:666,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 667
    functionName: index_mail_get_parsed_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - message_header_strdup
    - p_array_init
    - array_idx
    - array_push_back
    - array_get
    - array_front
    - skip_header
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *const *

      index_mail_get_parsed_header(struct index_mail *mail, unsigned int field_idx)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:683,1
    - Dst: get_header_field_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:685,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:687,1
    - Dst: mail_cache_lookup_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:688,1
    - Dst: p_free
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:691,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:696,1
    - Dst: mail_set_aborted
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:697,1
    - Dst: index_mail_header_is_parsed
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:701,1
    - Dst: index_mail_cache_reason
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:703,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:704,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:706,1
    - Dst: index_mail_parse_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:708,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:709,1
    - Dst: index_mail_header_is_parsed
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:714,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:716,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:717,1
    - Dst: index_mail_get_parsed_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:720,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:724,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:728,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:732,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:738,1
    - Dst: get_header_size
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:741,1
    - Dst: message_header_strdup
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:742,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:746,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:750,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:751,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 3
    argNames:
    - mail
    - field
    - value_r
    argTypes:
    - struct index_mail*
    - char*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 669
    functionDepth: 16
    functionLinenumber: 669
    functionLinenumberEnd: 753
    functionName: index_mail_get_raw_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - mail_set_aborted
    - index_mail_cache_reason
    - p_array_init
    - buffer_get_data
    - t_strdup_printf
    - mailbox_header_lookup_init
    - mail_cache_lookup_headers
    - array_front
    - array_append_zero
    - index_mail_header_is_parsed
    - p_new
    - get_header_field_idx
    - str_new
    - index_mail_get_parsed_header
    - message_header_strdup
    - p_free
    - index_mail_parse_headers
    - mailbox_header_lookup_unref
    - i_assert
    - array_push_back
    - IS_LWSP
    - get_header_size
    linkageType: ''
    returnType: int
    signature: "int index_mail_get_raw_headers(struct index_mail *mail, const char
      *field,\n\t\t\t   const char *const **value_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:769,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:769,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:770,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - pool
    - _str
    argTypes:
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 755
    functionDepth: 1
    functionLinenumber: 755
    functionLinenumberEnd: 789
    functionName: unfold_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlen
    - p_malloc
    linkageType: ''
    returnType: int
    signature: int unfold_header(pool_t pool, const char **_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:793,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:794,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 791
    functionDepth: 1
    functionLinenumber: 791
    functionLinenumberEnd: 800
    functionName: str_replace_nuls
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - str_len
    - str_c_modifiable
    linkageType: ''
    returnType: void
    signature: void str_replace_nuls(string_t *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:811,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:814,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:816,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:818,1
    - Dst: unfold_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:821,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:822,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:827,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:828,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:829,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:829,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:830,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:830,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:830,1
    - Dst: str_replace_nuls
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:832,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:834,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:834,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:838,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - mail
    - _list
    - max_count
    argTypes:
    - struct index_mail*
    - char***
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 802
    functionDepth: 4
    functionLinenumber: 802
    functionLinenumberEnd: 841
    functionName: index_mail_headers_decode
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - p_strdup
    - p_new
    - str_replace_nuls
    - str_len
    - message_header_decode_utf8
    - strlen
    - str_array_length
    - str_truncate
    - unfold_header
    - str_new
    - str_free
    linkageType: ''
    returnType: int
    signature: "int index_mail_headers_decode(struct index_mail *mail, const char
      *const **_list,\n\t\t\t  unsigned int max_count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:846,1
    - Dst: index_mail_get_raw_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:851,1
    - Dst: index_mail_headers_decode
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:859,1
    - Dst: mail_set_mail_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:863,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 4
    argNames:
    - _mail
    - field
    - decode_to_utf8
    - value_r
    argTypes:
    - struct mail*
    - char*
    - bool
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 843
    functionDepth: 17
    functionLinenumber: 843
    functionLinenumberEnd: 868
    functionName: index_mail_get_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - mail_set_mail_cache_corrupted
    - INDEX_MAIL
    - index_mail_get_raw_headers
    - index_mail_headers_decode
    linkageType: ''
    returnType: int
    signature: "int index_mail_get_headers(struct mail *_mail, const char *field,\n\t\t\t
      \  bool decode_to_utf8, const char *const **value_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:880,1
    - Dst: index_mail_get_raw_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:886,1
    - Dst: index_mail_headers_decode
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:894,1
    - Dst: mail_set_mail_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:898,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 4
    argNames:
    - _mail
    - field
    - decode_to_utf8
    - value_r
    argTypes:
    - struct mail*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 877
    functionDepth: 17
    functionLinenumber: 877
    functionLinenumberEnd: 904
    functionName: index_mail_get_first_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - mail_set_mail_cache_corrupted
    - INDEX_MAIL
    - index_mail_get_raw_headers
    - index_mail_headers_decode
    linkageType: ''
    returnType: int
    signature: "int index_mail_get_first_header(struct mail *_mail, const char *field,\n\t\t\t\tbool
      decode_to_utf8, const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - hdr
    - ATTR_UNUSED
    - mail
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 914
    functionDepth: 14
    functionLinenumber: 914
    functionLinenumberEnd: 920
    functionName: header_cache_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - index_mail_parse_header
    linkageType: ''
    returnType: void
    signature: "void header_cache_callback(struct header_filter_istream *input ATTR_UNUSED,\n\t\t
      \     struct message_header_line *hdr,\n\t\t      bool *matched ATTR_UNUSED,
      struct index_mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:933,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:934,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:937,1
    - Dst: index_mail_parse_header_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:938,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 922
    functionDepth: 1
    functionLinenumber: 922
    functionLinenumberEnd: 941
    functionName: index_mail_filter_stream_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 1
    functionsReached:
    - i_stream_skip
    - index_mail_parse_header_deinit
    - i_assert
    - i_stream_read_more
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void index_mail_filter_stream_destroy(struct index_mail *mail)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:947,1
    - Dst: index_mail_filter_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:951,1
    - Dst: index_mail_cache_reason
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:956,1
    - Dst: index_mail_parse_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:958,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:962,1
    - Dst: mail_cache_lookup_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:963,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:966,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:969,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:969,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:970,1
    - Dst: p_free
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:975,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:979,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:990,1
    - Dst: index_mail_cache_reason
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:991,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:991,1
    - Dst: mail_get_hdr_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:996,1
    - Dst: index_mail_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:999,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-storage/index/index-mail-headers.c:1001,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - _mail
    - headers
    - stream_r
    argTypes:
    - struct mail*
    - struct mailbox_header_lookup_ctx*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 943
    functionDepth: 16
    functionLinenumber: 943
    functionLinenumberEnd: 1009
    functionName: index_mail_get_header_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-headers.c
    functionUses: 0
    functionsReached:
    - i_assert
    - index_mail_cache_reason
    - index_mail_parse_headers
    - str_data
    - str_len
    - p_free
    - mail_get_hdr_stream_because
    - mail_cache_field_exists
    - t_strdup_printf
    - i_stream_create_header_filter
    - INDEX_MAIL
    - index_mail_filter_stream_destroy
    - mail_cache_lookup_headers
    - str_append
    - index_mail_parse_header_init
    - i_stream_create_from_data
    - str_new
    linkageType: ''
    returnType: int
    signature: "int index_mail_get_header_stream(struct mail *_mail,\n\t\t\t\t struct
      mailbox_header_lookup_ctx *headers,\n\t\t\t\t struct istream **stream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_memdup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: index_mail_global_cache_fields_dup
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - i_memdup
    linkageType: ''
    returnType: struct mail_cache_field
    signature: struct mail_cache_field *index_mail_global_cache_fields_dup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:89,1
    - Dst: mail_cache_field_get_decision
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:96,1
    - Dst: mail_cache_decision_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - mail
    - buf
    - field_idx
    argTypes:
    - struct index_mail*
    - buffer_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 83
    functionDepth: 8
    functionLinenumber: 83
    functionLinenumberEnd: 104
    functionName: index_mail_cache_lookup_field
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 2
    functionsReached:
    - mail_cache_field_get_decision
    - mail_cache_decision_add
    - mail_cache_lookup_field
    linkageType: ''
    returnType: int
    signature: "int index_mail_cache_lookup_field(struct index_mail *mail, buffer_t
      *buf,\n\t\t\t\t  unsigned int field_idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_attachment_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 106
    functionDepth: 6
    functionLinenumber: 106
    functionLinenumberEnd: 121
    functionName: index_mail_try_set_attachment_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_attachment_keywords
    linkageType: ''
    returnType: void
    signature: void index_mail_try_set_attachment_keywords(struct index_mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_readonly
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:131,1
    - Dst: mail_has_attachment_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 133
    functionName: index_mail_want_attachment_keywords_on_fetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_has_attachment_keywords
    - mailbox_is_readonly
    linkageType: ''
    returnType: bool
    signature: bool index_mail_want_attachment_keywords_on_fetch(struct index_mail
      *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:140,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mail
    - part_buf_r
    argTypes:
    - struct index_mail*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 9
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: get_serialized_parts
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - t_buffer_create
    - index_mail_cache_lookup_field
    linkageType: ''
    returnType: int
    signature: int get_serialized_parts(struct index_mail *mail, buffer_t **part_buf_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_serialized_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:150,1
    - Dst: message_part_deserialize
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:153,1
    - Dst: mail_set_mail_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:156,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 144
    functionDepth: 10
    functionLinenumber: 144
    functionLinenumberEnd: 161
    functionName: get_unserialized_parts
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - binary_to_hex
    - mail_set_mail_cache_corrupted
    - get_serialized_parts
    - message_part_deserialize
    linkageType: ''
    returnType: struct message_part
    signature: struct message_part *get_unserialized_parts(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_unserialized_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 163
    functionDepth: 11
    functionLinenumber: 163
    functionLinenumberEnd: 178
    functionName: get_cached_parts
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - get_unserialized_parts
    linkageType: ''
    returnType: bool
    signature: bool get_cached_parts(struct index_mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_serialized_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:202,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:202,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:205,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:207,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mail
    - error
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 197
    functionDepth: 10
    functionLinenumber: 197
    functionLinenumberEnd: 211
    functionName: index_mail_set_message_parts_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 2
    functionsReached:
    - mail_set_cache_corrupted
    - t_strdup_printf
    - INDEX_MAIL
    - get_serialized_parts
    - binary_to_hex
    linkageType: ''
    returnType: void
    signature: void index_mail_set_message_parts_corrupted(struct mail *mail, const
      char *error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:221,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:222,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - mail
    - field
    - data
    - data_size
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 213
    functionDepth: 9
    functionLinenumber: 213
    functionLinenumberEnd: 229
    functionName: index_mail_get_fixed_field
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - buffer_create_from_data
    - i_assert
    - index_mail_cache_lookup_field
    linkageType: ''
    returnType: bool
    signature: "bool index_mail_get_fixed_field(struct index_mail *mail,\n\t\t\t\t
      \      enum index_cache_field field,\n\t\t\t\t       void *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_get_fixed_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mail
    - field
    - size_r
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 10
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: index_mail_get_cached_uoff_t
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_fixed_field
    linkageType: ''
    returnType: bool
    signature: "bool index_mail_get_cached_uoff_t(struct index_mail *mail,\n\t\t\t\t
      \ enum index_cache_field field, uoff_t *size_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:252,1
    - Dst: index_transaction_init_pvt
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:254,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 259
    functionName: index_mail_get_pvt
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_transaction_init_pvt
    - i_assert
    - mail_index_lookup_seq
    linkageType: ''
    returnType: bool
    signature: bool index_mail_get_pvt(struct mail *_mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:267,1
    - Dst: mailbox_recent_flags_have_uid
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:271,1
    - Dst: index_mail_get_pvt
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:274,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:276,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:277,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 283
    functionName: index_mail_get_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - mailbox_get_private_flags_mask
    - index_mail_get_pvt
    - mail_index_lookup
    - mailbox_recent_flags_have_uid
    linkageType: ''
    returnType: enum mail_flags
    signature: enum mail_flags index_mail_get_flags(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:287,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:292,1
    - Dst: mail_index_modseq_lookup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 296
    functionName: index_mail_get_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - mail_index_modseq_enable
    - mail_index_modseq_lookup
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t index_mail_get_modseq(struct mail *_mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:300,1
    - Dst: mailbox_open_index_pvt
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:305,1
    - Dst: index_transaction_init_pvt
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:307,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:309,1
    - Dst: mail_index_modseq_lookup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 298
    functionDepth: 7
    functionLinenumber: 298
    functionLinenumberEnd: 314
    functionName: index_mail_get_pvt_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_index_modseq_enable
    - mail_index_modseq_lookup
    - INDEX_MAIL
    - mailbox_open_index_pvt
    - index_transaction_init_pvt
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t index_mail_get_pvt_modseq(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:318,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:324,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:325,1
    - Dst: index_mail_get_keyword_indexes
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:327,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:329,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:330,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:331,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:334,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:337,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:341,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 343
    functionName: index_mail_get_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - array_push_back
    - array_get
    - index_mail_get_keyword_indexes
    - INDEX_MAIL
    - array_front
    - array_append_zero
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *const *index_mail_get_keywords(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:348,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:351,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:352,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 358
    functionName: index_mail_get_keyword_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - INDEX_MAIL
    - array_is_created
    - mail_index_lookup_keywords
    - p_array_init
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      index_mail_get_keyword_indexes(struct mail *_mail)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:362,1
    - Dst: get_cached_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:366,1
    - Dst: index_mail_cache_reason
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:373,1
    - Dst: index_mail_parse_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:374,1
    - Dst: index_mail_parse_body
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:381,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - _mail
    - parts_r
    argTypes:
    - struct mail*
    - struct message_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 360
    functionDepth: 16
    functionLinenumber: 360
    functionLinenumberEnd: 387
    functionName: index_mail_get_parts
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_cache_reason
    - index_mail_parse_headers
    - get_cached_parts
    - INDEX_MAIL
    - index_mail_parse_body
    linkageType: ''
    returnType: int
    signature: int index_mail_get_parts(struct mail *_mail, struct message_part **parts_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:391,1
    - Dst: index_mail_get_fixed_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 389
    functionDepth: 10
    functionLinenumber: 389
    functionLinenumberEnd: 405
    functionName: index_mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_get_fixed_field
    linkageType: ''
    returnType: int
    signature: int index_mail_get_received_date(struct mail *_mail, time_t *date_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:409,1
    - Dst: index_mail_get_fixed_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 407
    functionDepth: 10
    functionLinenumber: 407
    functionLinenumberEnd: 423
    functionName: index_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_get_fixed_field
    linkageType: ''
    returnType: int
    signature: int index_mail_get_save_date(struct mail *_mail, time_t *date_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:435,1
    - Dst: message_date_parse
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:439,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:440,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:445,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:447,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 425
    functionDepth: 4
    functionLinenumber: 425
    functionLinenumberEnd: 450
    functionName: index_mail_cache_sent_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - strlen
    - time_to_uint32_trunc
    - mail_get_first_header
    - index_mail_cache_add
    - message_date_parse
    linkageType: ''
    returnType: int
    signature: int index_mail_cache_sent_date(struct index_mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:454,1
    - Dst: index_mail_get_fixed_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:465,1
    - Dst: index_mail_cache_sent_date
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:469,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - _mail
    - date_r
    - timezone_r
    argTypes:
    - struct mail*
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 452
    functionDepth: 10
    functionLinenumber: 452
    functionLinenumberEnd: 475
    functionName: index_mail_get_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_get_fixed_field
    - index_mail_cache_sent_date
    linkageType: ''
    returnType: int
    signature: int index_mail_get_date(struct mail *_mail, time_t *date_r, int *timezone_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_cached_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:482,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 477
    functionDepth: 12
    functionLinenumber: 477
    functionLinenumberEnd: 496
    functionName: get_cached_msgpart_sizes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - get_cached_parts
    linkageType: ''
    returnType: bool
    signature: bool get_cached_msgpart_sizes(struct index_mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 507
    functionName: index_mail_get_vsize_extension
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_ext
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t *index_mail_get_vsize_extension(struct mail *_mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:522,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:523,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:528,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:529,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 541
    functionName: index_mail_try_set_body_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - mail_set_cache_corrupted
    linkageType: ''
    returnType: void
    signature: void index_mail_try_set_body_size(struct index_mail *mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_get_vsize_extension
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:551,1
    - Dst: index_mail_get_cached_uoff_t
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:557,1
    - Dst: get_cached_msgpart_sizes
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:562,1
    - Dst: index_mail_try_set_body_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:566,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:574,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - mail
    - size_r
    argTypes:
    - struct index_mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 543
    functionDepth: 13
    functionLinenumber: 543
    functionLinenumberEnd: 579
    functionName: index_mail_get_cached_virtual_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_index_update_ext
    - index_mail_get_vsize_extension
    - get_cached_msgpart_sizes
    - index_mail_try_set_body_size
    - index_mail_get_cached_uoff_t
    linkageType: ''
    returnType: bool
    signature: bool index_mail_get_cached_virtual_size(struct index_mail *mail, uoff_t
      *size_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_get_cached_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:592,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:602,1
    - Dst: index_mail_get_cached_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:604,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 581
    functionDepth: 14
    functionLinenumber: 581
    functionLinenumberEnd: 608
    functionName: index_mail_get_cached_body_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_cached_virtual_size
    - mail_get_physical_size
    linkageType: ''
    returnType: void
    signature: void index_mail_get_cached_body_size(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:612,1
    - Dst: index_mail_get_cached_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:618,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:622,1
    - Dst: index_mail_cache_reason
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:623,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:625,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 610
    functionDepth: 14
    functionLinenumber: 610
    functionLinenumberEnd: 630
    functionName: index_mail_get_virtual_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_cache_reason
    - mail_get_stream_because
    - INDEX_MAIL
    - i_stream_seek
    - index_mail_get_cached_virtual_size
    - i_assert
    linkageType: ''
    returnType: int
    signature: int index_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:634,1
    - Dst: index_mail_get_cached_uoff_t
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:648,1
    - Dst: get_cached_msgpart_sizes
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 632
    functionDepth: 13
    functionLinenumber: 632
    functionLinenumberEnd: 657
    functionName: index_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_get_cached_uoff_t
    - get_cached_msgpart_sizes
    linkageType: ''
    returnType: int
    signature: int index_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - mail
    - field
    - data
    - data_size
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 664
    functionName: index_mail_cache_add
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - index_mail_cache_add_idx
    linkageType: ''
    returnType: void
    signature: "void index_mail_cache_add(struct index_mail *mail, enum index_cache_field
      field,\n\t\t\t  const void *data, size_t data_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:676,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:684,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - mail
    - field_idx
    - data
    - data_size
    argTypes:
    - struct index_mail*
    - unsigned int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 666
    functionDepth: 12
    functionLinenumber: 666
    functionLinenumberEnd: 687
    functionName: index_mail_cache_add_idx
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 5
    functionsReached:
    - mail_index_get_header
    - mail_cache_add
    linkageType: ''
    returnType: void
    signature: "void index_mail_cache_add_idx(struct index_mail *mail, unsigned int
      field_idx,\n\t\t\t      const void *data, size_t data_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:692,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:695,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:696,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:699,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - _mail
    - uidl
    - order
    argTypes:
    - struct mail*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 689
    functionDepth: 2
    functionLinenumber: 689
    functionLinenumberEnd: 701
    functionName: index_mail_cache_pop3_data
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - strlen
    - index_mail_cache_add
    linkageType: ''
    returnType: void
    signature: "void index_mail_cache_pop3_data(struct mail *_mail,\n\t\t\t\tconst
      char *uidl, uint32_t order)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:707,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - part
    - hdr
    - pool
    argTypes:
    - struct message_part*
    - struct message_header_line*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 703
    functionDepth: 5
    functionLinenumber: 703
    functionLinenumberEnd: 708
    functionName: parse_bodystructure_part_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - message_part_data_parse_from_header
    linkageType: ''
    returnType: void
    signature: "void parse_bodystructure_part_header(struct message_part *part,\n\t\t\t\t\t
      \   struct message_header_line *hdr,\n\t\t\t\t\t    pool_t pool)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_field_want_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:722,1
    - Dst: mail_cache_field_want_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:725,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 710
    functionDepth: 12
    functionLinenumber: 710
    functionLinenumberEnd: 729
    functionName: want_plain_bodystructure_cached
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_cache_field_want_add
    linkageType: ''
    returnType: bool
    signature: bool want_plain_bodystructure_cached(struct index_mail *mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_field_want_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:740,1
    - Dst: message_part_data_is_plain_7bit
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:744,1
    - Dst: want_plain_bodystructure_cached
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:745,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:755,1
    - Dst: message_parts_have_nuls
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:759,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:775,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 731
    functionDepth: 13
    functionLinenumber: 731
    functionLinenumberEnd: 779
    functionName: index_mail_body_parsed_cache_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - message_parts_have_nuls
    - ENUM_NEGATE
    - want_plain_bodystructure_cached
    - index_mail_cache_add_idx
    - mail_cache_field_want_add
    - message_part_data_is_plain_7bit
    linkageType: ''
    returnType: void
    signature: void index_mail_body_parsed_cache_flags(struct index_mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:791,1
    - Dst: mail_cache_field_get_decision
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:797,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:811,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:812,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:813,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:814,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:816,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 781
    functionDepth: 13
    functionLinenumber: 781
    functionLinenumberEnd: 819
    functionName: index_mail_body_parsed_cache_message_parts
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - buffer_create_dynamic
    - mail_cache_field_exists
    - message_part_serialize
    - pool_unref
    - index_mail_cache_add_idx
    - mail_cache_field_get_decision
    linkageType: ''
    returnType: void
    signature: void index_mail_body_parsed_cache_message_parts(struct index_mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:829,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mail
    - str
    - extended
    argTypes:
    - struct index_mail*
    - string_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 836
    functionName: index_mail_write_bodystructure
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - imap_bodystructure_write
    - mail_set_cache_corrupted
    linkageType: ''
    returnType: int
    signature: "int index_mail_write_bodystructure(struct index_mail *mail, string_t
      *str,\n\t\t\t       bool extended)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:858,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:867,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:877,1
    - Dst: mail_cache_field_want_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:881,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:885,1
    - Dst: index_mail_write_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:886,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:887,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:888,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:889,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:889,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:894,1
    - Dst: mail_cache_field_get_decision
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:900,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:908,1
    - Dst: mail_cache_field_want_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:912,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:917,1
    - Dst: index_mail_write_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:918,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:919,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:920,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:921,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:921,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 838
    functionDepth: 12
    functionLinenumber: 838
    functionLinenumberEnd: 924
    functionName: index_mail_body_parsed_cache_bodystructure
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - mail_cache_field_exists
    - mail_cache_field_get_decision
    - mail_cache_field_want_add
    - mail_cache_field_can_add
    - index_mail_cache_add
    - index_mail_write_bodystructure
    - i_assert
    - str_new
    linkageType: ''
    returnType: void
    signature: "void index_mail_body_parsed_cache_bodystructure(struct index_mail
      *mail,\n\t\t\t\t\t   enum index_cache_field field)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:958,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:970,1
    - Dst: mail_cache_field_want_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:973,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 926
    functionDepth: 12
    functionLinenumber: 926
    functionLinenumberEnd: 976
    functionName: index_mail_want_cache
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - mail_cache_field_want_add
    - mail_cache_field_can_add
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: bool index_mail_want_cache(struct index_mail *mail, enum index_cache_field
      field)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_write_body_snippet
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:981,1
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:987,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:988,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:990,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 978
    functionDepth: 13
    functionLinenumber: 978
    functionLinenumberEnd: 992
    functionName: index_mail_save_finish_make_snippet
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_want_cache
    - index_mail_write_body_snippet
    - strlen
    - index_mail_cache_add
    linkageType: ''
    returnType: void
    signature: void index_mail_save_finish_make_snippet(struct index_mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1002,1
    - Dst: index_mail_get_vsize_extension
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1019,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1026,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1033,1
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1035,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1036,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 994
    functionDepth: 13
    functionLinenumber: 994
    functionLinenumberEnd: 1040
    functionName: index_mail_cache_sizes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_want_cache
    - mail_index_update_ext
    - index_mail_get_vsize_extension
    - index_mail_cache_add
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void index_mail_cache_sizes(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1048,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1056,1
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1058,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1059,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1060,1
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1066,1
    - Dst: index_mail_cache_sent_date
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1067,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1042
    functionDepth: 13
    functionLinenumber: 1042
    functionLinenumberEnd: 1068
    functionName: index_mail_cache_dates
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_want_cache
    - time_to_uint32_trunc
    - index_mail_cache_sent_date
    - index_mail_cache_add
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void index_mail_cache_dates(struct index_mail *mail)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1076,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1079,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1084,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1089,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1097,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1100,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1102,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1104,1
    - Dst: index_mail_find_first_text_mime_part
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1115,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 1
    argNames:
    - parts
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1120
    functionName: index_mail_find_first_text_mime_part
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - i_assert
    - strcasecmp
    - index_mail_find_first_text_mime_part
    linkageType: ''
    returnType: struct message_part
    signature: 'struct message_part *

      index_mail_find_first_text_mime_part(struct message_part *parts)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1130,1
    - Dst: index_mail_find_first_text_mime_part
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1132,1
    - Dst: index_mail_cache_reason
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1139,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1140,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1142,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1144,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1145,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1148,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1149,1
    - Dst: message_snippet_generate
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1150,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1152,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1153,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1122
    functionDepth: 7
    functionLinenumber: 1122
    functionLinenumberEnd: 1157
    functionName: index_mail_write_body_snippet
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - message_snippet_generate
    - str_c
    - index_mail_cache_reason
    - index_mail_find_first_text_mime_part
    - i_stream_create_limit
    - mail_get_stream_because
    - i_stream_seek
    - str_append
    - i_assert
    - str_new
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int index_mail_write_body_snippet(struct index_mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1164
    functionName: index_mail_parts_reset
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void index_mail_parts_reset(struct index_mail *mail)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1177,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1181,1
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1182,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1188,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1189,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1190,1
    - Dst: index_mail_stream_log_failure_for
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1205,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1208,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1212,1
    - Dst: index_mail_set_message_parts_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1213,1
    - Dst: index_mail_parts_reset
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1215,1
    - Dst: index_mail_parse_header_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1219,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1223,1
    - Dst: index_mail_parse_header_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1224,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1231,1
    - Dst: get_cached_msgpart_sizes
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1241,1
    - Dst: index_mail_body_parsed_cache_flags
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1243,1
    - Dst: index_mail_body_parsed_cache_message_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1244,1
    - Dst: index_mail_body_parsed_cache_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1245,1
    - Dst: index_mail_cache_sizes
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1246,1
    - Dst: index_mail_cache_dates
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1247,1
    - Dst: mail_has_attachment_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1250,1
    - Dst: index_mail_try_set_attachment_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1251,1
    - Dst: index_mail_want_attachment_keywords_on_fetch
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1253,1
    - Dst: index_mail_try_set_attachment_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1254,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 59
    argCount: 3
    argNames:
    - mail
    - field
    - success
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1166
    functionDepth: 14
    functionLinenumber: 1166
    functionLinenumberEnd: 1257
    functionName: index_mail_parse_body_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_stream_log_failure_for
    - index_mail_set_message_parts_corrupted
    - i_stream_ref
    - index_mail_body_parsed_cache_flags
    - index_mail_parse_header_deinit
    - i_unreached
    - i_stream_have_bytes_left
    - mail_has_attachment_keywords
    - index_mail_want_attachment_keywords_on_fetch
    - index_mail_cache_sizes
    - message_parser_deinit_from_parts
    - index_mail_try_set_attachment_keywords
    - index_mail_parts_reset
    - i_assert
    - i_stream_read
    - index_mail_cache_dates
    - i_stream_unref
    - index_mail_body_parsed_cache_bodystructure
    - index_mail_body_parsed_cache_message_parts
    - get_cached_msgpart_sizes
    linkageType: ''
    returnType: int
    signature: "int index_mail_parse_body_finish(struct index_mail *mail,\n\t\t\t
      \    enum index_cache_field field, bool success)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_stream_log_failure_for
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1262
    functionName: index_mail_stream_log_failure
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_stream_log_failure_for
    linkageType: ''
    returnType: void
    signature: void index_mail_stream_log_failure(struct index_mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_stream_log_failure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1264
    functionDepth: 2
    functionLinenumber: 1264
    functionLinenumberEnd: 1270
    functionName: index_mail_stream_check_failure
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - index_mail_stream_log_failure
    linkageType: ''
    returnType: int
    signature: int index_mail_stream_check_failure(struct index_mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1274,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1275,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1272
    functionDepth: 3
    functionLinenumber: 1272
    functionLinenumberEnd: 1277
    functionName: index_mail_refresh_expunged
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - mail_set_expunged
    - mail_index_refresh
    - mail_index_is_expunged
    linkageType: ''
    returnType: void
    signature: void index_mail_refresh_expunged(struct mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1284,1
    - Dst: index_mail_refresh_expunged
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1290,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1296,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1297,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1298,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1298,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1301,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1310,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - mail
    - input
    argTypes:
    - struct index_mail*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1279
    functionDepth: 4
    functionLinenumber: 1279
    functionLinenumberEnd: 1313
    functionName: index_mail_stream_log_failure_for
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 3
    functionsReached:
    - mailbox_get_last_internal_error
    - mail_set_critical
    - t_strdup_printf
    - i_stream_get_error
    - i_stream_get_name
    - index_mail_refresh_expunged
    - i_assert
    - strstr
    linkageType: ''
    returnType: void
    signature: "void index_mail_stream_log_failure_for(struct index_mail *mail,\n\t\t\t\t
      \      struct istream *input)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1322,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1325,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1330,1
    - Dst: message_parser_parse_body
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1331,1
    - Dst: message_parser_parse_body
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1335,1
    - Dst: index_mail_stream_check_failure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1338,1
    - Dst: index_mail_parse_body_finish
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1339,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1315
    functionDepth: 15
    functionLinenumber: 1315
    functionLinenumberEnd: 1344
    functionName: index_mail_parse_body
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - message_parser_parse_body
    - index_mail_parse_body_finish
    - i_stream_seek
    - i_assert
    - index_mail_stream_check_failure
    linkageType: ''
    returnType: int
    signature: "int index_mail_parse_body(struct index_mail *mail,\n\t\t\t\t enum
      index_cache_field field)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1346
    functionDepth: 1
    functionLinenumber: 1346
    functionLinenumberEnd: 1351
    functionName: index_mail_stream_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void index_mail_stream_destroy_callback(struct index_mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1355,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1358,1
    - Dst: i_stream_set_init_buffer_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _mail
    - input
    argTypes:
    - struct mail*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1353
    functionDepth: 1
    functionLinenumber: 1353
    functionLinenumberEnd: 1362
    functionName: index_mail_set_read_buffer_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - i_stream_set_max_buffer_size
    - i_stream_set_init_buffer_size
    linkageType: ''
    returnType: void
    signature: void index_mail_set_read_buffer_size(struct mail *_mail, struct istream
      *input)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1375,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1376,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1377,1
    - Dst: i_stream_create_mail
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1382,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1384,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1393,1
    - Dst: index_mail_want_attachment_keywords_on_fetch
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1398,1
    - Dst: get_cached_msgpart_sizes
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1405,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1412,1
    - Dst: get_cached_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1415,1
    - Dst: index_mail_parse_headers_internal
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1416,1
    - Dst: message_get_header_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1419,1
    - Dst: index_mail_stream_log_failure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1422,1
    - Dst: index_mail_get_cached_body_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1435,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1437,1
    - Dst: index_mail_parse_body
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1440,1
    - Dst: message_get_body_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1443,1
    - Dst: index_mail_stream_log_failure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1446,1
    - Dst: index_mail_try_set_body_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1470,1
    - Dst: index_mail_stream_check_failure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1472,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1474,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 73
    argCount: 4
    argNames:
    - mail
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct index_mail*
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1364
    functionDepth: 16
    functionLinenumber: 1364
    functionLinenumberEnd: 1479
    functionName: index_mail_init_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_want_attachment_keywords_on_fetch
    - index_mail_parse_headers_internal
    - get_cached_parts
    - index_mail_stream_log_failure
    - i_stream_create_mail
    - index_mail_parse_body
    - index_mail_stream_check_failure
    - i_stream_add_destroy_callback
    - get_cached_msgpart_sizes
    - i_stream_seek
    - message_get_body_size
    - i_stream_unref
    - index_mail_try_set_body_size
    - message_get_header_size
    - i_assert
    - index_mail_get_cached_body_size
    linkageType: ''
    returnType: int
    signature: "int index_mail_init_stream(struct index_mail *mail,\n\t\t\t   struct
      message_size *hdr_size,\n\t\t\t   struct message_size *body_size,\n\t\t\t   struct
      istream **stream_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1481
    functionDepth: 13
    functionLinenumber: 1481
    functionLinenumberEnd: 1486
    functionName: index_mail_want_write_snippet
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_want_cache
    linkageType: ''
    returnType: bool
    signature: "bool index_mail_want_write_snippet(struct index_mail *mail,\n\t\t\t\t\t
      \ enum index_cache_field field)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_want_write_snippet
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1497,1
    - Dst: index_mail_cache_reason
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1500,1
    - Dst: get_cached_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1507,1
    - Dst: index_mail_parse_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1508,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1515,1
    - Dst: index_mail_parse_body
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1518,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1488
    functionDepth: 16
    functionLinenumber: 1488
    functionLinenumberEnd: 1519
    functionName: index_mail_parse_bodystructure_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_parse_headers
    - index_mail_cache_reason
    - get_cached_parts
    - index_mail_parse_body
    - i_assert
    - index_mail_want_write_snippet
    linkageType: ''
    returnType: int
    signature: "int index_mail_parse_bodystructure_full(struct index_mail *mail,\n\t\t\t\t
      \   enum index_cache_field field)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_body_parsed_cache_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1530,1
    - Dst: index_mail_parse_bodystructure_full
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1532,1
    - Dst: index_mail_parse_bodystructure_full
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1541,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1545,1
    - Dst: index_mail_want_write_snippet
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1548,1
    - Dst: index_mail_write_body_snippet
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1549,1
    - Dst: index_mail_cache_add_if_wanted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1552,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1554,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1556,1
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1562,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1563,1
    - Dst: index_mail_write_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1564,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1566,1
    - Dst: index_mail_cache_add_if_wanted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1568,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1569,1
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1574,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1575,1
    - Dst: index_mail_write_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1576,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1578,1
    - Dst: index_mail_cache_add_if_wanted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1580,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1582,1
    - Dst: index_mail_body_parsed_cache_message_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1586,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 39
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1521
    functionDepth: 17
    functionLinenumber: 1521
    functionLinenumberEnd: 1589
    functionName: index_mail_parse_bodystructure
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - str_c
    - index_mail_write_body_snippet
    - strlen
    - index_mail_body_parsed_cache_bodystructure
    - index_mail_want_cache
    - index_mail_cache_add_if_wanted
    - index_mail_parse_bodystructure_full
    - index_mail_body_parsed_cache_message_parts
    - index_mail_write_bodystructure
    - i_assert
    - str_new
    - index_mail_want_write_snippet
    linkageType: ''
    returnType: int
    signature: "int index_mail_parse_bodystructure(struct index_mail *mail,\n\t\t\t\t\t
      \ enum index_cache_field field)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1595,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - mail
    - str
    - extended
    argTypes:
    - struct index_mail*
    - string_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1591
    functionDepth: 1
    functionLinenumber: 1591
    functionLinenumberEnd: 1600
    functionName: index_mail_get_plain_bodystructure
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    linkageType: ''
    returnType: void
    signature: "void index_mail_get_plain_bodystructure(struct index_mail *mail, string_t
      *str,\n\t\t\t\t   bool extended)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1612,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1613,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1614,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1615,1
    - Dst: index_mail_parse_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1625,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1627,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - mail
    - value_r
    argTypes:
    - struct index_mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1630
      start: 1602
    functionDepth: 18
    functionLinenumber: 1602
    functionLinenumberEnd: 1630
    functionName: index_mail_fetch_body_snippet
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - str_c
    - index_mail_cache_lookup_field
    - str_len
    - index_mail_parse_bodystructure
    - i_assert
    - str_new
    linkageType: ''
    returnType: int
    signature: int index_mail_fetch_body_snippet(struct index_mail *mail, const char
      **value_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1648,1
    - Dst: get_cached_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1650,1
    - Dst: index_mail_get_plain_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1651,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1652,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1657,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1658,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1662,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1664,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1664,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1665,1
    - Dst: imap_body_parse_from_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1667,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1670,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1671,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1675,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1680,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - mail
    - value_r
    argTypes:
    - struct index_mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1682
      start: 1632
    functionDepth: 12
    functionLinenumber: 1632
    functionLinenumberEnd: 1682
    functionName: index_mail_get_cached_body
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - index_mail_cache_lookup_field
    - get_cached_parts
    - mail_set_cache_corrupted
    - imap_body_parse_from_bodystructure
    - t_strdup_printf
    - str_truncate
    - index_mail_get_plain_bodystructure
    - str_new
    - str_free
    linkageType: ''
    returnType: bool
    signature: bool index_mail_get_cached_body(struct index_mail *mail, const char
      **value_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1698,1
    - Dst: get_cached_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1700,1
    - Dst: index_mail_get_plain_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1701,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1702,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1704,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1708,1
    - Dst: index_mail_want_attachment_keywords_on_fetch
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1709,1
    - Dst: index_mail_try_set_attachment_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1710,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - mail
    - value_r
    argTypes:
    - struct index_mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1684
    functionDepth: 12
    functionLinenumber: 1684
    functionLinenumberEnd: 1712
    functionName: index_mail_get_cached_bodystructure
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - str_c
    - index_mail_want_attachment_keywords_on_fetch
    - index_mail_cache_lookup_field
    - get_cached_parts
    - index_mail_try_set_attachment_keywords
    - index_mail_get_plain_bodystructure
    - str_new
    - str_free
    linkageType: ''
    returnType: bool
    signature: "bool index_mail_get_cached_bodystructure(struct index_mail *mail,\n\t\t\t\t\t
      const char **value_r)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1717,1
    - Dst: index_mail_get_cached_body
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1722,1
    - Dst: index_mail_parse_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1727,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1729,1
    - Dst: index_mail_get_cached_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1733,1
    - Dst: index_mail_parse_bodystructure
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1736,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1738,1
    - Dst: index_mail_headers_get_envelope
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1743,1
    - Dst: index_mail_fetch_body_snippet
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1753,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1768,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1714
    functionDepth: 19
    functionLinenumber: 1714
    functionLinenumberEnd: 1770
    functionName: index_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_cached_body
    - i_unreached
    - index_mail_parse_bodystructure
    - INDEX_MAIL
    - index_mail_fetch_body_snippet
    - index_mail_get_cached_bodystructure
    - i_assert
    - index_mail_headers_get_envelope
    linkageType: ''
    returnType: int
    signature: "int index_mail_get_special(struct mail *_mail,\n\t\t\t   enum mail_fetch_field
      field, const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mail
    - real_mail_r
    argTypes:
    - struct mail*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1772
    functionDepth: 0
    functionLinenumber: 1772
    functionLinenumberEnd: 1777
    functionName: index_mail_get_backend_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int index_mail_get_backend_mail(struct mail *mail,\n\t\t\t\tstruct
      mail **real_mail_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1787,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1788,1
    - Dst: index_mail_init
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - t
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1792
      start: 1779
    functionDepth: 1
    functionLinenumber: 1779
    functionLinenumberEnd: 1792
    functionName: index_mail_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_init
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\nindex_mail_alloc(struct mailbox_transaction_context
      *t,\n\t\t enum mail_fetch_field wanted_fields,\n\t\t struct mailbox_header_lookup_ctx
      *wanted_headers)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1802,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1812,1
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1813,1
    - Dst: mailbox_header_lookup_ref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1817,1
    - Dst: index_mail_init_data
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1819,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 6
    argNames:
    - mail
    - t
    - wanted_fields
    - wanted_headers
    - mail_pool
    - data_pool
    argTypes:
    - struct index_mail*
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    - struct pool*
    - struct pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1794
    functionDepth: 2
    functionLinenumber: 1794
    functionLinenumberEnd: 1820
    functionName: index_mail_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - mailbox_header_lookup_ref
    - index_mail_init_data
    - array_create
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: "void index_mail_init(struct index_mail *mail,\n\t\t     struct mailbox_transaction_context
      *t,\n\t\t     enum mail_fetch_field wanted_fields,\n\t\t     struct mailbox_header_lookup_ctx
      *wanted_headers,\n\t\t     struct pool *mail_pool,\n\t\t     struct pool *data_pool)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: message_parser_deinit_from_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1829,1
    - Dst: index_mail_set_message_parts_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1830,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1835,1
    - Dst: i_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1844,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1847,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1853,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1854,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - mail
    - closing
    argTypes:
    - struct index_mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1860
      start: 1822
    functionDepth: 11
    functionLinenumber: 1822
    functionLinenumberEnd: 1860
    functionName: index_mail_close_streams_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - i_panic
    - message_parser_deinit_from_parts
    - index_mail_set_message_parts_corrupted
    - i_stream_remove_destroy_callback
    - i_stream_unref
    - i_stream_get_name
    linkageType: ''
    returnType: void
    signature: void index_mail_close_streams_full(struct index_mail *mail, bool closing)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_close_streams_full
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1865
      start: 1862
    functionDepth: 12
    functionLinenumber: 1862
    functionLinenumberEnd: 1865
    functionName: index_mail_close_streams
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_close_streams_full
    linkageType: ''
    returnType: void
    signature: void index_mail_close_streams(struct index_mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_header_lookup_ref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1881,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1883
      start: 1867
    functionDepth: 2
    functionLinenumber: 1867
    functionLinenumberEnd: 1883
    functionName: index_mail_init_data
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - mailbox_header_lookup_ref
    linkageType: ''
    returnType: void
    signature: void index_mail_init_data(struct index_mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1887,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1888,1
    - Dst: index_mail_init_data
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1890,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1885
    functionDepth: 3
    functionLinenumber: 1885
    functionLinenumberEnd: 1902
    functionName: index_mail_reset_data
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - i_zero
    - index_mail_init_data
    - p_clear
    linkageType: ''
    returnType: void
    signature: void index_mail_reset_data(struct index_mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1906,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1920,1
    - Dst: index_mail_cache_sizes
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1928,1
    - Dst: index_mail_cache_dates
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1929,1
    - Dst: index_mail_close_streams_full
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1932,1
    - Dst: mail_cache_close_mail
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1936,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1938,1
    - Dst: index_mail_reset_data
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1904
    functionDepth: 14
    functionLinenumber: 1904
    functionLinenumberEnd: 1941
    functionName: index_mail_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - index_mail_cache_sizes
    - event_unref
    - mailbox_header_lookup_unref
    - index_mail_reset_data
    - index_mail_close_streams_full
    - INDEX_MAIL
    - mail_cache_close_mail
    - index_mail_cache_dates
    linkageType: ''
    returnType: void
    signature: void index_mail_close(struct mail *_mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1956,1
    - Dst: mail_cache_register_lookup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1963,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1966,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1972
      start: 1943
    functionDepth: 7
    functionLinenumber: 1943
    functionLinenumberEnd: 1972
    functionName: check_envelope
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_cache_field_exists
    - mail_cache_register_lookup
    linkageType: ''
    returnType: void
    signature: void check_envelope(struct index_mail *mail)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1976,1
    - Dst: index_mail_get_fixed_field
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:1995,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2015,1
    - Dst: check_envelope
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2026,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2038,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2040,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2056,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2071,1
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2083,1
    - Dst: mail_has_attachment_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2110,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 59
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 1974
    functionDepth: 10
    functionLinenumber: 1974
    functionLinenumberEnd: 2114
    functionName: index_mail_update_access_parts_pre
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_fixed_field
    - mail_cache_field_exists
    - mail_has_attachment_keywords
    - INDEX_MAIL
    - check_envelope
    linkageType: ''
    returnType: void
    signature: void index_mail_update_access_parts_pre(struct mail *_mail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2118,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2138,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2141,1
    - Dst: mail_get_hdr_stream
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2143,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2146
      start: 2116
    functionDepth: 4
    functionLinenumber: 2116
    functionLinenumberEnd: 2146
    functionName: index_mail_update_access_parts_post
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - mail_index_get_header
    - mail_get_hdr_stream
    - mail_get_stream_because
    linkageType: ''
    returnType: void
    signature: void index_mail_update_access_parts_post(struct mail *_mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2150,1
    - Dst: struct index_mail*::mail::v::close
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2163,1
    - Dst: mail_index_lookup_full
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2168,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2175,1
    - Dst: mail_index_view_is_inconsistent
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2177,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2178,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2185,1
    - Dst: index_mail_update_access_parts_pre
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2188,1
    - Dst: index_mail_update_access_parts_post
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - _mail
    - seq
    - saving
    argTypes:
    - struct mail*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2196
      start: 2148
    functionDepth: 11
    functionLinenumber: 2148
    functionLinenumberEnd: 2196
    functionName: index_mail_set_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 1
    functionsReached:
    - mail_set_expunged
    - struct index_mail*::mail::v::close
    - INDEX_MAIL
    - index_mail_update_access_parts_pre
    - mail_index_view_is_inconsistent
    - index_mail_update_access_parts_post
    - i_assert
    - mail_index_lookup_full
    linkageType: ''
    returnType: void
    signature: void index_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2200,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2218,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2224,1
    - Dst: posix_fadvise
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2230,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2231,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2231,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2233,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2239
      start: 2198
    functionDepth: 4
    functionLinenumber: 2198
    functionLinenumberEnd: 2239
    functionName: index_mail_prefetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - posix_fadvise
    - i_stream_get_fd
    - mail_event
    - mail_get_stream_because
    - e_error
    - INDEX_MAIL
    - i_stream_get_name
    linkageType: ''
    returnType: bool
    signature: bool index_mail_prefetch(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2243,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2246,1
    - Dst: index_mail_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2247,1
    - Dst: struct index_mail*::mail::v::close
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2250,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - _mail
    - uid
    argTypes:
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2255
      start: 2241
    functionDepth: 12
    functionLinenumber: 2241
    functionLinenumberEnd: 2255
    functionName: index_mail_set_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - mail_index_lookup_seq
    - struct index_mail*::mail::v::close
    - INDEX_MAIL
    - index_mail_set_seq
    linkageType: ''
    returnType: bool
    signature: bool index_mail_set_uid(struct mail *_mail, uint32_t uid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2261,1
    - Dst: mailbox_header_lookup_ref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2270,1
    - Dst: mailbox_header_lookup_merge
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2273,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2275,1
    - Dst: index_mail_update_access_parts_pre
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - _mail
    - fields
    - headers
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2257
    functionDepth: 11
    functionLinenumber: 2257
    functionLinenumberEnd: 2289
    functionName: index_mail_add_temp_wanted_fields
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_header_lookup_ref
    - mailbox_header_lookup_unref
    - INDEX_MAIL
    - index_mail_update_access_parts_pre
    - mailbox_header_lookup_merge
    linkageType: ''
    returnType: void
    signature: "void index_mail_add_temp_wanted_fields(struct mail *_mail,\n\t\t\t\t
      \      enum mail_fetch_field fields,\n\t\t\t\t       struct mailbox_header_lookup_ctx
      *headers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - _mail
    - set
    argTypes:
    - struct mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2291
    functionDepth: 1
    functionLinenumber: 2291
    functionLinenumberEnd: 2296
    functionName: index_mail_set_uid_cache_updates
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    linkageType: ''
    returnType: void
    signature: void index_mail_set_uid_cache_updates(struct mail *_mail, bool set)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2300,1
    - Dst: struct index_mail*::mail::v::close
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2303,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2305,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2308,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2309,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2310,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2311,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2312,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2313,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2314,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2316,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2317,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2318,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2319,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2321
      start: 2298
    functionDepth: 2
    functionLinenumber: 2298
    functionLinenumberEnd: 2321
    functionName: index_mail_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - event_unref
    - mailbox_header_lookup_unref
    - struct index_mail*::mail::v::close
    - array_is_created
    - pool_unref
    - INDEX_MAIL
    - buffer_free
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void index_mail_free(struct mail *_mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2325,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2328,1
    - Dst: index_mail_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2334,1
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2338,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2323
    functionDepth: 14
    functionLinenumber: 2323
    functionLinenumberEnd: 2342
    functionName: index_mail_cache_parse_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - message_parser_parse_next_block
    - index_mail_parse_header
    - message_part_data_parse_from_header
    linkageType: ''
    returnType: void
    signature: void index_mail_cache_parse_continue(struct mail *_mail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2347,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2357,1
    - Dst: index_mail_cache_parse_continue
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2363,1
    - Dst: index_mail_parse_body_finish
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - _mail
    - received_date
    - success
    argTypes:
    - struct mail*
    - time_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2375
      start: 2344
    functionDepth: 15
    functionLinenumber: 2344
    functionLinenumberEnd: 2375
    functionName: index_mail_cache_parse_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - i_assert
    - index_mail_cache_parse_continue
    - index_mail_parse_body_finish
    linkageType: ''
    returnType: void
    signature: "void index_mail_cache_parse_deinit(struct mail *_mail, time_t received_date,\n\t\t\t\t
      \  bool success)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_get_pvt
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2385,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2391,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2392,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2402,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - _mail
    - modify_type
    - pvt_flags
    argTypes:
    - struct mail*
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2403
      start: 2377
    functionDepth: 2
    functionLinenumber: 2377
    functionLinenumberEnd: 2403
    functionName: index_mail_update_pvt_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_get_private_flags_mask
    - index_mail_get_pvt
    - mail_index_lookup
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool index_mail_update_pvt_flags(struct mail *_mail, enum modify_type
      modify_type,\n\t\t\t    enum mail_flags pvt_flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2416,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2418,1
    - Dst: index_mail_update_pvt_flags
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2419,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2420,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2431,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2437,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - _mail
    - modify_type
    - flags
    argTypes:
    - struct mail*
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2439
      start: 2405
    functionDepth: 4
    functionLinenumber: 2405
    functionLinenumberEnd: 2439
    functionName: index_mail_update_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_update_pvt_flags
    - mailbox_get_private_flags_mask
    - mail_index_update_flags
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void index_mail_update_flags(struct mail *_mail, enum modify_type
      modify_type,\n\t\t\t     enum mail_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2444,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2446,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2447,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2448,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2454,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - mail
    - modify_type
    - keywords
    argTypes:
    - struct mail*
    - enum modify_type
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2441
    functionDepth: 3
    functionLinenumber: 2441
    functionLinenumberEnd: 2460
    functionName: index_mail_update_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_index_update_keywords
    - memset
    - INDEX_MAIL
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: "void index_mail_update_keywords(struct mail *mail, enum modify_type
      modify_type,\n\t\t\t\tstruct mail_keywords *keywords)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - min_modseq
    argTypes:
    - struct mail*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2466
      start: 2462
    functionDepth: 0
    functionLinenumber: 2462
    functionLinenumberEnd: 2466
    functionName: index_mail_update_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_index_update_modseq
    linkageType: ''
    returnType: void
    signature: void index_mail_update_modseq(struct mail *mail, uint64_t min_modseq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_transaction_init_pvt
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2472,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mail
    - min_pvt_modseq
    argTypes:
    - struct mail*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2475
      start: 2468
    functionDepth: 1
    functionLinenumber: 2468
    functionLinenumberEnd: 2475
    functionName: index_mail_update_pvt_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - index_transaction_init_pvt
    - mail_index_update_modseq
    linkageType: ''
    returnType: void
    signature: void index_mail_update_pvt_modseq(struct mail *mail, uint64_t min_pvt_modseq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2484,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2485,1
    - Dst: mail_generate_guid_128_hash
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2487,1
    - Dst: mail_index_expunge_guid
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2492
      start: 2477
    functionDepth: 5
    functionLinenumber: 2477
    functionLinenumberEnd: 2492
    functionName: index_mail_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_index_expunge_guid
    - mail_generate_guid_128_hash
    - mail_get_special
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void index_mail_expunge(struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2496,1
    - Dst: index_mail_parse_headers
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2499,1
    - Dst: index_mail_parse_body
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mail
    - parse_body
    argTypes:
    - struct mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2505
      start: 2494
    functionDepth: 16
    functionLinenumber: 2494
    functionLinenumberEnd: 2505
    functionName: index_mail_parse
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_parse_body
    - index_mail_parse_headers
    linkageType: ''
    returnType: void
    signature: void index_mail_parse(struct mail *mail, bool parse_body)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2509,1
    - Dst: mail_cache_field_exists_any
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2515,1
    - Dst: index_mail_parse
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2524,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2526,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2528,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2530,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2532,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2534,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2536,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2538,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2540
      start: 2507
    functionDepth: 17
    functionLinenumber: 2507
    functionLinenumberEnd: 2540
    functionName: index_mail_precache
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - mail_get_physical_size
    - index_mail_parse
    - INDEX_MAIL
    - mail_get_received_date
    - mail_get_save_date
    - mail_get_virtual_size
    - mail_cache_field_exists_any
    linkageType: ''
    returnType: int
    signature: int index_mail_precache(struct mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2548,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2553
      start: 2542
    functionDepth: 2
    functionLinenumber: 2542
    functionLinenumberEnd: 2553
    functionName: index_mail_reset_vsize_ext
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_index_map_get_ext_idx
    - mail_index_update_ext
    linkageType: ''
    returnType: void
    signature: void index_mail_reset_vsize_ext(struct mail *mail)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2559,1
    - Dst: index_mail_parts_reset
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2570,1
    - Dst: index_mail_reset_vsize_ext
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2571,1
    - Dst: index_mail_parts_reset
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2577,1
    - Dst: index_mail_reset_vsize_ext
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2578,1
    - Dst: index_mail_parts_reset
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2582,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2595,1
    - Dst: mail_cache_transaction_reset
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2599,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2604,1
    - Dst: mail_set_mail_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2608,1
    - Dst: mail_set_mail_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2612,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 47
    argCount: 3
    argNames:
    - mail
    - field
    - reason
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2616
      start: 2555
    functionDepth: 4
    functionLinenumber: 2555
    functionLinenumberEnd: 2616
    functionName: index_mail_set_cache_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_critical
    - t_strdup_printf
    - INDEX_MAIL
    - mail_set_mail_cache_corrupted
    - index_mail_parts_reset
    - index_mail_reset_vsize_ext
    - mail_cache_transaction_reset
    linkageType: ''
    returnType: void
    signature: "void index_mail_set_cache_corrupted(struct mail *mail,\n\t\t\t\t    enum
      mail_fetch_field field,\n\t\t\t\t    const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2622,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2626,1
    - Dst: mail_opened_event
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2627,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2628,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - mail
    - ATTR_UNUSED
    argTypes:
    - struct mail*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2630
      start: 2618
    functionDepth: 5
    functionLinenumber: 2618
    functionLinenumberEnd: 2630
    functionName: index_mail_opened
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - event_reason_end
    - mail_opened_event
    - container_of
    - event_reason_begin
    linkageType: ''
    returnType: int
    signature: "int index_mail_opened(struct mail *mail,\n\t\t      struct istream
      **stream ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2634,1
    - Dst: index_mail_save_finish_make_snippet
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2636,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2641,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2643
      start: 2632
    functionDepth: 14
    functionLinenumber: 2632
    functionLinenumberEnd: 2643
    functionName: index_mail_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_save_finish_make_snippet
    - p_strdup
    linkageType: ''
    returnType: void
    signature: void index_mail_save_finish(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_get_missing_reason
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2648,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail.c:2649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mail
    - reason
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2650
      start: 2645
    functionDepth: 4
    functionLinenumber: 2645
    functionLinenumberEnd: 2650
    functionName: index_mail_cache_reason
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.c
    functionUses: 6
    functionsReached:
    - t_strdup_printf
    - mail_cache_get_missing_reason
    linkageType: ''
    returnType: char
    signature: char *index_mail_cache_reason(struct mail *mail, const char *reason)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:23,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:25,1
    - Dst: mailbox_search_result_remove
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:34,1
    - Dst: mailbox_search_result_remove
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:36,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 5
    argNames:
    - result
    - changed_uids_arr
    - idx
    - next_uid
    - last_uid
    argTypes:
    - struct mail_search_result*
    - ARRAY_TYPE*
    - unsigned int*
    - uint32_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 11
    functionDepth: 2
    functionLinenumber: 11
    functionLinenumberEnd: 50
    functionName: search_result_range_remove
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-result.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    - mailbox_search_result_remove
    linkageType: ''
    returnType: void
    signature: "void search_result_range_remove(struct mail_search_result *result,\n\t\t\t
      \  const ARRAY_TYPE(seq_range) *changed_uids_arr,\n\t\t\t   unsigned int *idx,\n\t\t\t
      \  uint32_t *next_uid, uint32_t last_uid)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:64,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:65,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:69,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:71,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:72,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:77,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:78,1
    - Dst: search_result_range_remove
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:83,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:86,1
    - Dst: mailbox_search_result_add
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:97,1
    - Dst: mail_search_args_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:99,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:100,1
    - Dst: search_result_range_remove
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:105,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:110,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 2
    argNames:
    - result
    - changed_uids_arr
    argTypes:
    - struct mail_search_result*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 52
    functionDepth: 8
    functionLinenumber: 52
    functionLinenumberEnd: 113
    functionName: search_result_update_search
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-result.c
    functionUses: 0
    functionsReached:
    - mailbox_transaction_begin
    - mail_search_args_deinit
    - array_get
    - mail_search_args_init
    - search_result_range_remove
    - mailbox_search_deinit
    - mailbox_search_result_add
    - mailbox_search_init
    - mailbox_transaction_commit
    - mailbox_search_next
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int search_result_update_search(struct mail_search_result *result,\n\t\t\t
      \   const ARRAY_TYPE(seq_range) *changed_uids_arr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:121,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:126,1
    - Dst: search_result_update_search
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:131,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - result
    - uids
    argTypes:
    - struct mail_search_result*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 115
    functionDepth: 9
    functionLinenumber: 115
    functionLinenumberEnd: 135
    functionName: index_search_result_update_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-result.c
    functionUses: 1
    functionsReached:
    - i_zero
    - search_result_update_search
    - array_count
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int index_search_result_update_flags(struct mail_search_result *result,\n\t\t\t\t
      \    const ARRAY_TYPE(seq_range) *uids)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:147,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:155,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:157,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:158,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:164,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:165,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:167,1
    - Dst: mailbox_search_result_add
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:168,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:170,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - result
    - old_messages_count
    argTypes:
    - struct mail_search_result*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 177
    functionName: index_search_result_update_appends
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-result.c
    functionUses: 1
    functionsReached:
    - i_zero
    - seq_range_array_add_range
    - mailbox_transaction_begin
    - t_array_init
    - mailbox_search_deinit
    - mailbox_search_result_add
    - mailbox_search_init
    - mailbox_transaction_commit
    - mailbox_search_next
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: "int index_search_result_update_appends(struct mail_search_result *result,\n\t\t\t\t
      \      unsigned int old_messages_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:185,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:190,1
    - Dst: mailbox_search_results_remove
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - box
    - expunges
    argTypes:
    - struct mailbox*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 194
    functionName: index_search_results_update_expunges
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-result.c
    functionUses: 0
    functionsReached:
    - array_count
    - mailbox_search_results_remove
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: "void index_search_results_update_expunges(struct mailbox *box,\n\t\t\t\t\t
      \ const ARRAY_TYPE(seq_range) *expunges)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:190,1
    - Dst: mailbox_search_results_remove
      Src: /src/dovecot/src/lib-storage/index/index-search-result.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 193
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-result.c
    functionUses: 85
    functionsReached:
    - mailbox_search_results_remove
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: void array_foreach(expunges, seqs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:14,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:15,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:17,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - cache
    - uid
    - msgid_idx
    argTypes:
    - struct mail_thread_cache*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 30
    functionName: thread_msg_add
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-links.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_idx_get_space
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t thread_msg_add(struct mail_thread_cache *cache,\n\t\t\t       uint32_t
      uid, uint32_t msgid_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - cache
    - node
    - ancestor
    argTypes:
    - struct mail_thread_cache*
    - struct mail_thread_node*
    - struct mail_thread_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 43
    functionName: thread_node_has_ancestor
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-links.c
    functionUses: 0
    functionsReached:
    - array_idx
    linkageType: ''
    returnType: bool
    signature: "bool thread_node_has_ancestor(struct mail_thread_cache *cache,\n\t\t\t\t
      \    const struct mail_thread_node *node,\n\t\t\t\t     const struct mail_thread_node
      *ancestor)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:51,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:57,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:58,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:60,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:61,1
    - Dst: thread_node_has_ancestor
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:65,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:86,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:87,1
    - Dst: MAIL_THREAD_NODE_EXISTS
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:101,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 3
    argNames:
    - cache
    - parent_idx
    - child_idx
    argTypes:
    - struct mail_thread_cache*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 120
    functionName: thread_link_reference
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-links.c
    functionUses: 0
    functionsReached:
    - array_idx_modifiable
    - MAIL_THREAD_NODE_EXISTS
    - thread_node_has_ancestor
    - array_idx_get_space
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void thread_link_reference(struct mail_thread_cache *cache,\n\t\t\t\t
      \ uint32_t parent_idx, uint32_t child_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: thread_link_reference
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:137,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - cache
    - uid
    - msgid_map
    - msgid_map_idx
    argTypes:
    - struct mail_thread_cache*
    - uint32_t
    - struct mail_index_strmap_rec*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 143
    functionName: thread_link_references
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-links.c
    functionUses: 0
    functionsReached:
    - thread_link_reference
    - i_assert
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t thread_link_references(struct mail_thread_cache *cache, uint32_t
      uid,\n\t\t       const struct mail_index_strmap_rec *msgid_map,\n\t\t       unsigned
      int *msgid_map_idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:152,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:153,1
    - Dst: thread_msg_add
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:157,1
    - Dst: thread_link_references
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:158,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:161,1
    - Dst: thread_link_reference
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:170,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - cache
    - msgid_map
    - msgid_map_idx
    argTypes:
    - struct mail_thread_cache*
    - struct mail_index_strmap_rec*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 145
    functionDepth: 4
    functionLinenumber: 145
    functionLinenumberEnd: 172
    functionName: mail_thread_add
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-links.c
    functionUses: 0
    functionsReached:
    - array_idx_modifiable
    - thread_link_reference
    - thread_msg_add
    - thread_link_references
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_thread_add(struct mail_thread_cache *cache,\n\t\t     const
      struct mail_index_strmap_rec *msgid_map,\n\t\t     unsigned int *msgid_map_idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:180,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:184,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - cache
    - parent_idx
    - child_idx
    argTypes:
    - struct mail_thread_cache*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 193
    functionName: mail_thread_unref_link
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-links.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_idx_modifiable
    linkageType: ''
    returnType: bool
    signature: "bool mail_thread_unref_link(struct mail_thread_cache *cache,\n\t\t
      \      uint32_t parent_idx, uint32_t child_idx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:204,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:219,1
    - Dst: mail_thread_unref_link
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:226,1
    - Dst: mail_thread_unref_link
      Src: /src/dovecot/src/lib-storage/index/index-thread-links.c:232,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - cache
    - msgid_map
    - msgid_map_idx
    argTypes:
    - struct mail_thread_cache*
    - struct mail_index_strmap_rec*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 242
    functionName: mail_thread_remove
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-links.c
    functionUses: 0
    functionsReached:
    - mail_thread_unref_link
    - i_assert
    - array_idx_modifiable
    linkageType: ''
    returnType: bool
    signature: "bool mail_thread_remove(struct mail_thread_cache *cache,\n\t\t\tconst
      struct mail_index_strmap_rec *msgid_map,\n\t\t\tunsigned int *msgid_map_idx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/index-status.c:21,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/index/index-status.c:23,1
    - Dst: index_storage_get_open_status
      Src: /src/dovecot/src/lib-storage/index/index-status.c:26,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 10
    functionDepth: 11
    functionLinenumber: 10
    functionLinenumberEnd: 28
    functionName: index_storage_get_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-status.c
    functionUses: 1
    functionsReached:
    - index_storage_get_open_status
    - mailbox_open
    - mailbox_sync
    linkageType: ''
    returnType: int
    signature: "int index_storage_get_status(struct mailbox *box,\n\t\t\t     enum
      mailbox_status_items items,\n\t\t\t     struct mailbox_status *status_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-status.c:41,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-status.c:42,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-status.c:45,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-status.c:46,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 60
    functionName: index_storage_count_pvt_unseen
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-status.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup
    - mail_index_view_get_messages_count
    - mail_index_lookup_uid
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int index_storage_count_pvt_unseen(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-status.c:68,1
    - Dst: mail_index_lookup_first
      Src: /src/dovecot/src/lib-storage/index/index-status.c:69,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-status.c:73,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/index-status.c:75,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-status.c:80,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-status.c:81,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 86
    functionName: index_storage_find_first_pvt_unseen_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-status.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_seq
    - mail_index_lookup_first
    - mail_index_get_header
    - mail_index_lookup_seq_range
    - mail_index_lookup
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t index_storage_find_first_pvt_unseen_seq(struct mailbox *box)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-status.c:95,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-status.c:102,1
    - Dst: index_sync_update_recent_count
      Src: /src/dovecot/src/lib-storage/index/index-status.c:106,1
    - Dst: mailbox_recent_flags_count
      Src: /src/dovecot/src/lib-storage/index/index-status.c:108,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-status.c:109,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/index-status.c:113,1
    - Dst: index_storage_count_pvt_unseen
      Src: /src/dovecot/src/lib-storage/index/index-status.c:117,1
    - Dst: mail_index_is_in_memory
      Src: /src/dovecot/src/lib-storage/index/index-status.c:128,1
    - Dst: mail_index_have_modseq_tracking
      Src: /src/dovecot/src/lib-storage/index/index-status.c:130,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/index-status.c:132,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/index-status.c:140,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/index-status.c:149,1
    - Dst: mail_index_lookup_first
      Src: /src/dovecot/src/lib-storage/index/index-status.c:150,1
    - Dst: index_storage_find_first_pvt_unseen_seq
      Src: /src/dovecot/src/lib-storage/index/index-status.c:154,1
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/lib-storage/index/index-status.c:166,1
    - Dst: mailbox_is_readonly
      Src: /src/dovecot/src/lib-storage/index/index-status.c:168,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 176
    functionName: index_storage_get_open_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-status.c
    functionUses: 1
    functionsReached:
    - mail_index_modseq_get_highest
    - index_storage_find_first_pvt_unseen_seq
    - index_sync_update_recent_count
    - mail_index_lookup_first
    - mail_index_get_keywords
    - mail_index_get_header
    - mail_index_is_in_memory
    - mailbox_is_readonly
    - mailbox_get_private_flags_mask
    - index_storage_count_pvt_unseen
    - mailbox_recent_flags_count
    - mail_index_have_modseq_tracking
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void index_storage_get_open_status(struct mailbox *box,\n\t\t\t\t
      \  enum mailbox_status_items items,\n\t\t\t\t   struct mailbox_status *status_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-status.c:184,1
    - Dst: mail_cache_register_get_list
      Src: /src/dovecot/src/lib-storage/index/index-status.c:189,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/index/index-status.c:191,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-status.c:191,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-status.c:192,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-status.c:194,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-status.c:196,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/index/index-status.c:197,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-status.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - box
    - metadata_r
    argTypes:
    - struct mailbox*
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 178
    functionDepth: 5
    functionLinenumber: 178
    functionLinenumberEnd: 204
    functionName: get_metadata_cache_fields
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-status.c
    functionUses: 0
    functionsReached:
    - t_new
    - array_append_space
    - ENUM_NEGATE
    - pool_unref
    - t_array_init
    - mail_cache_register_get_list
    - ARRAY_TYPE
    - t_strdup
    linkageType: ''
    returnType: void
    signature: "void get_metadata_cache_fields(struct mailbox *box,\n\t\t\t  struct
      mailbox_metadata *metadata_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_register_get_list
      Src: /src/dovecot/src/lib-storage/index/index-status.c:214,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/index-status.c:218,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:219,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:220,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:222,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:223,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:224,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:225,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:226,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:228,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:230,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:232,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:234,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:236,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:238,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:240,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-status.c:242,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/index-status.c:245,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-status.c:249,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 27
    argCount: 2
    argNames:
    - box
    - metadata_r
    argTypes:
    - struct mailbox*
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 206
    functionDepth: 5
    functionLinenumber: 206
    functionLinenumberEnd: 250
    functionName: get_metadata_precache_fields
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-status.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - e_debug
    - pool_unref
    - mail_cache_register_get_list
    linkageType: ''
    returnType: void
    signature: "void get_metadata_precache_fields(struct mailbox *box,\n\t\t\t\t\t
      struct mailbox_metadata *metadata_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-status.c:262,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-status.c:268,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/index/index-status.c:269,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-status.c:271,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/index-status.c:272,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-status.c:276,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/index/index-status.c:281,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-status.c:282,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - box
    - metadata_r
    argTypes:
    - struct mailbox*
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 289
    functionName: index_mailbox_get_first_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-status.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mail_alloc
    - mailbox_transaction_begin
    - mail_index_get_header
    - mail_set_seq
    - mailbox_transaction_commit
    - mail_free
    - mail_get_save_date
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_get_first_save_date(struct mailbox *box,\n\t\t\t\t
      \ struct mailbox_metadata *metadata_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_namespace
      Src: /src/dovecot/src/lib-storage/index/index-status.c:299,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-status.c:300,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/index-status.c:307,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/index/index-status.c:311,1
    - Dst: index_mailbox_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-status.c:316,1
    - Dst: index_mailbox_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/index-status.c:320,1
    - Dst: index_mailbox_get_first_save_date
      Src: /src/dovecot/src/lib-storage/index/index-status.c:324,1
    - Dst: get_metadata_cache_fields
      Src: /src/dovecot/src/lib-storage/index/index-status.c:328,1
    - Dst: get_metadata_precache_fields
      Src: /src/dovecot/src/lib-storage/index/index-status.c:330,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 291
    functionDepth: 11
    functionLinenumber: 291
    functionLinenumberEnd: 332
    functionName: index_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-status.c
    functionUses: 1
    functionsReached:
    - mailbox_open
    - ENUM_NEGATE
    - get_metadata_precache_fields
    - mailbox_list_get_namespace
    - mailbox_sync
    - get_metadata_cache_fields
    - index_mailbox_get_first_save_date
    - index_mailbox_get_virtual_size
    - index_mailbox_get_physical_size
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_get_metadata(struct mailbox *box,\n\t\t\t       enum
      mailbox_metadata_items items,\n\t\t\t       struct mailbox_metadata *metadata_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mail_search_arg*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: search_none
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void search_none(struct mail_search_arg *arg ATTR_UNUSED, void *ctx
      ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/index/index-search.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 81
    functionName: search_set_failed
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mail_storage_last_error_push
    linkageType: ''
    returnType: void
    signature: void search_set_failed(struct index_search_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-search.c:85,1
    - Dst: search_set_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:93,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 96
    functionName: search_cur_mail_failed
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - search_set_failed
    linkageType: ''
    returnType: void
    signature: void search_cur_mail_failed(struct index_search_context *ctx)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/index-search.c:114,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/index-search.c:118,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:124,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/index-search.c:124,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 98
    functionDepth: 8
    functionLinenumber: 98
    functionLinenumberEnd: 148
    functionName: search_init_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - strcmp
    - guid_128_to_string
    - mail_index_modseq_enable
    - mailbox_get_metadata
    linkageType: ''
    returnType: void
    signature: "void search_init_arg(struct mail_search_arg *arg,\n\t\t\t    struct
      index_search_context *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/index-search.c:154,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:155,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 159
    functionName: search_seqset_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - seq_range_exists
    - ARG_SET_RESULT
    linkageType: ''
    returnType: void
    signature: "void search_seqset_arg(struct mail_search_arg *arg,\n\t\t\t      struct
      index_search_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-search.c:164,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:174,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/index-search.c:175,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-search.c:177,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - struct index_search_context*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 189
    functionName: search_arg_match_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - array_get
    - mail_index_lookup_keywords
    - t_array_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: "int search_arg_match_keywords(struct index_search_context *ctx,\n\t\t\t\t
      \    struct mail_search_arg *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_transaction_init_pvt
      Src: /src/dovecot/src/lib-storage/index/index-search.c:194,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/index-search.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct index_search_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 201
    functionName: index_search_get_pvt
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - index_transaction_init_pvt
    - mail_index_lookup_seq
    linkageType: ''
    returnType: bool
    signature: bool index_search_get_pvt(struct index_search_context *ctx, uint32_t
      uid)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/index-search.c:215,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-search.c:219,1
    - Dst: mailbox_recent_flags_have_uid
      Src: /src/dovecot/src/lib-storage/index/index-search.c:221,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/index-search.c:227,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-search.c:228,1
    - Dst: index_search_get_pvt
      Src: /src/dovecot/src/lib-storage/index/index-search.c:229,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-search.c:230,1
    - Dst: search_arg_match_keywords
      Src: /src/dovecot/src/lib-storage/index/index-search.c:238,1
    - Dst: mail_index_modseq_lookup
      Src: /src/dovecot/src/lib-storage/index/index-search.c:242,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - ctx
    - arg
    - rec
    argTypes:
    - struct index_search_context*
    - struct mail_search_arg*
    - struct mail_index_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 247
    functionName: search_arg_match_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - seq_range_exists
    - ENUM_NEGATE
    - index_search_get_pvt
    - mail_index_modseq_lookup
    - mailbox_get_private_flags_mask
    - mail_index_lookup
    - mailbox_recent_flags_have_uid
    - search_arg_match_keywords
    linkageType: ''
    returnType: int
    signature: "int search_arg_match_index(struct index_search_context *ctx,\n\t\t\t\t
      \ struct mail_search_arg *arg,\n\t\t\t\t  const struct mail_index_record *rec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-search.c:255,1
    - Dst: search_arg_match_index
      Src: /src/dovecot/src/lib-storage/index/index-search.c:256,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:261,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 250
    functionDepth: 3
    functionLinenumber: 250
    functionLinenumberEnd: 267
    functionName: search_index_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - search_arg_match_index
    - mail_index_lookup
    - ARG_SET_RESULT
    linkageType: ''
    returnType: void
    signature: "void search_index_arg(struct mail_search_arg *arg,\n\t\t\t     struct
      index_search_context *ctx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:284,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-search.c:286,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:288,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:292,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:293,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:294,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/index/index-search.c:296,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-search.c:298,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:300,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/index/index-search.c:303,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - struct index_search_context*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 270
    functionDepth: 4
    functionLinenumber: 270
    functionLinenumberEnd: 307
    functionName: search_arg_match_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - strcmp
    - search_cur_mail_failed
    - imap_match
    - strcasecmp
    - mail_get_special
    linkageType: ''
    returnType: int
    signature: "int search_arg_match_mailbox(struct index_search_context *ctx,\n\t\t\t\t
      \   struct mail_search_arg *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_match_mailbox
      Src: /src/dovecot/src/lib-storage/index/index-search.c:312,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:317,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:320,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 309
    functionDepth: 5
    functionLinenumber: 309
    functionLinenumberEnd: 323
    functionName: search_mailbox_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - search_arg_match_mailbox
    - ARG_SET_RESULT
    linkageType: ''
    returnType: void
    signature: "void search_mailbox_arg(struct mail_search_arg *arg,\n\t\t\t       struct
      index_search_context *ctx)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_date
      Src: /src/dovecot/src/lib-storage/index/index-search.c:345,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:346,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-search.c:352,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:353,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/index-search.c:358,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:359,1
    - Dst: localtime
      Src: /src/dovecot/src/lib-storage/index/index-search.c:368,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-storage/index/index-search.c:369,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-search.c:383,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/index-search.c:388,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:390,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-search.c:398,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:399,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-search.c:409,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:410,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:413,1
    - Dst: mail_get_backend_mail
      Src: /src/dovecot/src/lib-storage/index/index-search.c:417,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:418,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/index-search.c:421,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 78
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - struct index_search_context*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 326
    functionDepth: 4
    functionLinenumber: 326
    functionLinenumberEnd: 426
    functionName: search_arg_match_cached
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - search_cur_mail_failed
    - mail_get_special
    - mail_get_date
    - strcmp
    - seq_range_exists
    - i_unreached
    - localtime
    - mail_get_received_date
    - mail_get_save_date
    - mail_get_virtual_size
    - mail_get_backend_mail
    - utc_offset
    linkageType: ''
    returnType: int
    signature: "int search_arg_match_cached(struct index_search_context *ctx,\n\t\t\t\t
      \  struct mail_search_arg *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_match_cached
      Src: /src/dovecot/src/lib-storage/index/index-search.c:431,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:436,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:439,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 428
    functionDepth: 5
    functionLinenumber: 428
    functionLinenumberEnd: 442
    functionName: search_cached_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - search_arg_match_cached
    - ARG_SET_RESULT
    linkageType: ''
    returnType: void
    signature: "void search_cached_arg(struct mail_search_arg *arg,\n\t\t\t      struct
      index_search_context *ctx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: message_date_parse
      Src: /src/dovecot/src/lib-storage/index/index-search.c:455,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-search.c:469,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - type
    - search_time
    - sent_value
    - sent_value_len
    argTypes:
    - enum mail_search_arg_type
    - time_t
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 444
    functionDepth: 4
    functionLinenumber: 444
    functionLinenumberEnd: 471
    functionName: search_sent
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - message_date_parse
    linkageType: ''
    returnType: int
    signature: "int search_sent(enum mail_search_arg_type type, time_t search_time,\n\t\t
      \      const unsigned char *sent_value, size_t sent_value_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-search.c:480,1
    - Dst: struct index_search_context*::mail_ctx::normalizer
      Src: /src/dovecot/src/lib-storage/index/index-search.c:482,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-search.c:483,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/index-search.c:484,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-search.c:491,1
    - Dst: message_search_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:493,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-search.c:493,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - struct index_search_context*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 473
    functionDepth: 3
    functionLinenumber: 473
    functionLinenumberEnd: 497
    functionName: msg_search_arg_context
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - i_panic
    - str_c
    - t_str_new
    - str_len
    - strlen
    - struct index_search_context*::mail_ctx::normalizer
    - message_search_init
    linkageType: ''
    returnType: struct message_search_context
    signature: "struct message_search_context *\nmsg_search_arg_context(struct index_search_context
      *ctx,\n\t\t       struct mail_search_arg *arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-storage/index/index-search.c:508,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-search.c:511,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-search.c:515,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - dest
    - src
    - src_len
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 518
    functionName: compress_lwsp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - IS_LWSP
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void compress_lwsp(string_t *dest, const unsigned char *src,\n\t\t\t
      \ size_t src_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/index/index-search.c:524,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/index/index-search.c:529,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-search.c:533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - size
    argTypes:
    - struct index_search_context*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 535
    functionName: search_context_temp_pool
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - pool_datastack_create
    - p_clear
    linkageType: ''
    returnType: pool_t
    signature: pool_t search_context_temp_pool(struct index_search_context *ctx, size_t
      size)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:554,1
    - Dst: search_sent
      Src: /src/dovecot/src/lib-storage/index/index-search.c:559,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:562,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:571,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:580,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-search.c:589,1
    - Dst: msg_search_arg_context
      Src: /src/dovecot/src/lib-storage/index/index-search.c:598,1
    - Dst: search_context_temp_pool
      Src: /src/dovecot/src/lib-storage/index/index-search.c:612,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/lib-storage/index/index-search.c:614,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-search.c:619,1
    - Dst: message_address_write
      Src: /src/dovecot/src/lib-storage/index/index-search.c:620,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/index-search.c:621,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-search.c:622,1
    - Dst: search_context_temp_pool
      Src: /src/dovecot/src/lib-storage/index/index-search.c:627,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-search.c:629,1
    - Dst: compress_lwsp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:630,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/index-search.c:631,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-search.c:632,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-search.c:636,1
    - Dst: message_search_more_get_decoded
      Src: /src/dovecot/src/lib-storage/index/index-search.c:638,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 70
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct search_header_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 537
    functionDepth: 6
    functionLinenumber: 537
    functionLinenumberEnd: 641
    functionName: search_header_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - i_zero
    - msg_search_arg_context
    - compress_lwsp
    - str_data
    - message_address_write
    - str_len
    - i_unreached
    - search_context_temp_pool
    - strcasecmp
    - message_address_parse
    - ARG_SET_RESULT
    - search_sent
    - str_new
    - message_search_more_get_decoded
    linkageType: ''
    returnType: void
    signature: "void search_header_arg(struct mail_search_arg *arg,\n\t\t\t      struct
      search_header_context *ctx)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:667,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:673,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - arg
    - ATTR_UNUSED
    argTypes:
    - struct mail_search_arg*
    - struct search_header_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 678
    functionName: search_header_unmatch
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - ARG_SET_RESULT
    linkageType: ''
    returnType: void
    signature: "void search_header_unmatch(struct mail_search_arg *arg,\n\t\t\t\t
      \ struct search_header_context *ctx ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-search.c:684,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:688,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search.c:696,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:701,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - hdr
    - ctx
    argTypes:
    - struct message_header_line*
    - struct search_header_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 680
    functionDepth: 14
    functionLinenumber: 680
    functionLinenumberEnd: 703
    functionName: search_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - index_mail_parse_header
    - mail_search_args_foreach
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: "void search_header(struct message_header_line *hdr,\n\t\t\t  struct
      search_header_context *ctx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: msg_search_arg_context
      Src: /src/dovecot/src/lib-storage/index/index-search.c:720,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:722,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-search.c:726,1
    - Dst: message_search_msg
      Src: /src/dovecot/src/lib-storage/index/index-search.c:727,1
    - Dst: index_mail_set_message_parts_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-search.c:730,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-search.c:732,1
    - Dst: message_search_msg
      Src: /src/dovecot/src/lib-storage/index/index-search.c:733,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:734,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-search.c:737,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-search.c:738,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-search.c:739,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search.c:742,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct search_body_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 705
    functionDepth: 11
    functionLinenumber: 705
    functionLinenumberEnd: 743
    functionName: search_body
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - msg_search_arg_context
    - message_search_msg
    - index_mail_set_message_parts_corrupted
    - ARG_SET_RESULT
    - i_stream_get_error
    - i_stream_seek
    - mailbox_set_critical
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void search_body(struct mail_search_arg *arg,\n\t\t\tstruct search_body_context
      *ctx)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-search.c:750,1
    - Dst: mail_search_args_analyze
      Src: /src/dovecot/src/lib-storage/index/index-search.c:761,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-search.c:765,1
    - Dst: mail_get_backend_mail
      Src: /src/dovecot/src/lib-storage/index/index-search.c:769,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:770,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-search.c:773,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:778,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:783,1
    - Dst: mail_get_header_stream
      Src: /src/dovecot/src/lib-storage/index/index-search.c:785,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:787,1
    - Dst: message_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-search.c:790,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-search.c:797,1
    - Dst: mail_get_hdr_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-search.c:798,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:800,1
    - Dst: index_mail_want_parse_headers
      Src: /src/dovecot/src/lib-storage/index/index-search.c:814,1
    - Dst: index_mail_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:816,1
    - Dst: message_parse_header
      Src: /src/dovecot/src/lib-storage/index/index-search.c:819,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-search.c:822,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-search.c:824,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-search.c:825,1
    - Dst: search_set_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:827,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-search.c:831,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:845,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:850,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-search.c:861,1
    - Dst: search_cur_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:862,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-search.c:865,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-search.c:868,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-storage/index/index-search.c:874,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:877,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 73
    argCount: 2
    argNames:
    - args
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 745
    functionDepth: 14
    functionLinenumber: 745
    functionLinenumberEnd: 878
    functionName: search_arg_match_text
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mail_search_args_foreach
    - mailbox_header_lookup_init
    - i_stream_seek
    - index_mail_parse_header_init
    - mail_get_header_stream
    - mail_get_hdr_stream_because
    - mail_get_stream_because
    - i_stream_get_error
    - index_mail_want_parse_headers
    - i_stream_get_name
    - search_set_failed
    - i_zero
    - mailbox_header_lookup_unref
    - mail_search_args_analyze
    - mail_get_parts
    - i_assert
    - search_cur_mail_failed
    - message_parse_header
    - INDEX_MAIL
    - mailbox_set_critical
    - mail_get_backend_mail
    linkageType: ''
    returnType: int
    signature: "int search_arg_match_text(struct mail_search_arg *args,\n\t\t\t\t
      struct index_search_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:887,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-search.c:889,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:891,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/index-search.c:895,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib-storage/index/index-search.c:898,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search.c:902,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-search.c:905,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - messages_count
    - seqset
    - match_not
    argTypes:
    - unsigned int
    - ARRAY_TYPE*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 909
    functionName: search_msgset_fix_limits
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - array_get_modifiable
    - array_count
    - seq_range_array_remove_range
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool search_msgset_fix_limits(unsigned int messages_count,\n\t\t\t
      ARRAY_TYPE(seq_range) *seqset, bool match_not)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: search_msgset_fix_limits
      Src: /src/dovecot/src/lib-storage/index/index-search.c:920,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-search.c:926,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 5
    argNames:
    - messages_count
    - seqset
    - seq1_r
    - seq2_r
    - match_not
    argTypes:
    - unsigned int
    - ARRAY_TYPE*
    - uint32_t*
    - uint32_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 911
    functionDepth: 2
    functionLinenumber: 911
    functionLinenumberEnd: 949
    functionName: search_msgset_fix
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - array_get
    - search_msgset_fix_limits
    linkageType: ''
    returnType: void
    signature: "void search_msgset_fix(unsigned int messages_count,\n\t\t  ARRAY_TYPE(seq_range)
      *seqset,\n\t\t  uint32_t *seq1_r, uint32_t *seq2_r, bool match_not)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:962,1
    - Dst: search_parse_msgset_args
      Src: /src/dovecot/src/lib-storage/index/index-search.c:963,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:968,1
    - Dst: search_or_parse_msgset_args
      Src: /src/dovecot/src/lib-storage/index/index-search.c:969,1
    - Dst: search_msgset_fix
      Src: /src/dovecot/src/lib-storage/index/index-search.c:974,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:991,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 4
    argNames:
    - messages_count
    - args
    - seq1_r
    - seq2_r
    argTypes:
    - unsigned int
    - struct mail_search_arg*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 951
    functionDepth: 3
    functionLinenumber: 951
    functionLinenumberEnd: 997
    functionName: search_or_parse_msgset_args
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - search_msgset_fix
    - search_or_parse_msgset_args
    - i_assert
    - search_parse_msgset_args
    linkageType: ''
    returnType: void
    signature: "void search_or_parse_msgset_args(unsigned int messages_count,\n\t\t\t\t\tstruct
      mail_search_arg *args,\n\t\t\t\t\tuint32_t *seq1_r, uint32_t *seq2_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1006,1
    - Dst: search_parse_msgset_args
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1007,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1014,1
    - Dst: search_or_parse_msgset_args
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1015,1
    - Dst: search_msgset_fix
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1020,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - messages_count
    - args
    - seq1_r
    - seq2_r
    argTypes:
    - unsigned int
    - struct mail_search_arg*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 999
    functionDepth: 4
    functionLinenumber: 999
    functionLinenumberEnd: 1027
    functionName: search_parse_msgset_args
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 2
    functionsReached:
    - search_msgset_fix
    - search_or_parse_msgset_args
    - i_assert
    - search_parse_msgset_args
    linkageType: ''
    returnType: void
    signature: "void search_parse_msgset_args(unsigned int messages_count,\n\t\t\t\t
      \    struct mail_search_arg *args,\n\t\t\t\t     uint32_t *seq1_r, uint32_t
      *seq2_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1037,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - uid_lowwater
    - first_seq
    argTypes:
    - struct index_search_context*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1029
    functionDepth: 0
    functionLinenumber: 1029
    functionLinenumberEnd: 1041
    functionName: search_limit_lowwater
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_seq_range
    linkageType: ''
    returnType: void
    signature: "void search_limit_lowwater(struct index_search_context *ctx,\n\t\t\t\t
      \ uint32_t uid_lowwater, uint32_t *first_seq)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1051,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1055,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1067,1
    - Dst: search_limit_lowwater
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1088,1
    - Dst: search_limit_lowwater
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1105,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 44
    argCount: 4
    argNames:
    - ctx
    - args
    - seq1
    - seq2
    argTypes:
    - struct index_search_context*
    - struct mail_search_arg*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1112
    functionName: search_limit_by_hdr
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mail_index_modseq_get_highest
    - mailbox_get_private_flags_mask
    - mail_index_get_header
    - search_limit_lowwater
    linkageType: ''
    returnType: bool
    signature: "bool search_limit_by_hdr(struct index_search_context *ctx,\n\t\t\t\tstruct
      mail_search_arg *args,\n\t\t\t\tuint32_t *seq1, uint32_t *seq2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: search_parse_msgset_args
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1130,1
    - Dst: search_limit_by_hdr
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1143,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - messages_count
    - args
    argTypes:
    - struct index_search_context*
    - unsigned int
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1114
    functionDepth: 5
    functionLinenumber: 1114
    functionLinenumberEnd: 1148
    functionName: search_get_seqset
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 3
    functionsReached:
    - search_limit_by_hdr
    - search_parse_msgset_args
    linkageType: ''
    returnType: void
    signature: "void search_get_seqset(struct index_search_context *ctx,\n\t\t\t      unsigned
      int messages_count,\n\t\t\t      struct mail_search_arg *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_thread_iterate_next
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1157,1
    - Dst: search_build_subthread
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1159,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1162,1
    - Dst: mail_thread_iterate_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - iter
    - uids
    argTypes:
    - struct mail_thread_iterate_context*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1150
    functionDepth: 1
    functionLinenumber: 1150
    functionLinenumberEnd: 1167
    functionName: search_build_subthread
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - seq_range_array_add
    - search_build_subthread
    - mail_thread_iterate_deinit
    - mail_thread_iterate_next
    linkageType: ''
    returnType: int
    signature: "int search_build_subthread(struct mail_thread_iterate_context *iter,\n\t\t\t\t
      \ ARRAY_TYPE(seq_range) *uids)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1175,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1179,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1181,1
    - Dst: mailbox_search_result_build
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1182,1
    - Dst: mailbox_search_result_get
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1193,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1194,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1199,1
    - Dst: mail_thread_iterate_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1200,1
    - Dst: mail_thread_iterate_next
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1202,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1203,1
    - Dst: search_build_subthread
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1205,1
    - Dst: seq_range_array_have_common
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1209,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1211,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1213,1
    - Dst: mail_thread_iterate_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1215,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - struct index_search_context*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1169
    functionDepth: 3
    functionLinenumber: 1169
    functionLinenumberEnd: 1218
    functionName: search_build_inthread_result
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - p_array_init
    - search_build_subthread
    - seq_range_array_merge
    - mail_thread_iterate_deinit
    - mail_thread_iterate_init
    - mailbox_search_result_get
    - array_count
    - mailbox_search_result_build
    - t_array_init
    - ARRAY_TYPE
    - array_clear
    - seq_range_array_have_common
    - i_assert
    - mail_thread_iterate_next
    linkageType: ''
    returnType: int
    signature: "int search_build_inthread_result(struct index_search_context *ctx,\n\t\t\t\t\tstruct
      mail_search_arg *arg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: search_build_inthreads
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1229,1
    - Dst: search_build_inthread_result
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1233,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - struct index_search_context*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1220
    functionDepth: 4
    functionLinenumber: 1220
    functionLinenumberEnd: 1241
    functionName: search_build_inthreads
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - search_build_inthread_result
    - search_build_inthreads
    linkageType: ''
    returnType: int
    signature: "int search_build_inthreads(struct index_search_context *ctx,\n\t\t\t\t
      \ struct mail_search_arg *arg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1250,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1257,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1285,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1290,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1293,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1294,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1295,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1296,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 5
    argNames:
    - box
    - sort_program
    - wanted_headers
    - wanted_fields_r
    - headers_ctx_r
    argTypes:
    - struct mailbox*
    - enum mail_sort_type*
    - struct mailbox_header_lookup_ctx*
    - enum mail_fetch_field*
    - struct mailbox_header_lookup_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1243
    functionDepth: 8
    functionLinenumber: 1243
    functionLinenumberEnd: 1298
    functionName: wanted_sort_fields_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_count
    - mailbox_header_lookup_init
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: void
    signature: "void wanted_sort_fields_get(struct mailbox *box,\n\t\t       const
      enum mail_sort_type *sort_program,\n\t\t       struct mailbox_header_lookup_ctx
      *wanted_headers,\n\t\t       enum mail_fetch_field *wanted_fields_r,\n\t\t       struct
      mailbox_header_lookup_ctx **headers_ctx_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1310,1
    - Dst: index_sort_program_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1316,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1322,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1324,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1327,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1328,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1330,1
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1332,1
    - Dst: mail_thread_init
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1334,1
    - Dst: search_set_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1335,1
    - Dst: search_build_inthreads
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1336,1
    - Dst: search_set_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1337,1
    - Dst: wanted_sort_fields_get
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1341,1
    - Dst: mailbox_header_lookup_ref
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1346,1
    - Dst: search_get_seqset
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1350,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1351,1
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1354,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 5
    argNames:
    - t
    - args
    - sort_program
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - enum mail_sort_type*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1300
    functionDepth: 9
    functionLinenumber: 1300
    functionLinenumberEnd: 1356
    functionName: index_storage_search_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - i_gettimeofday
    - i_array_init
    - mail_search_args_reset
    - mailbox_header_lookup_ref
    - wanted_sort_fields_get
    - mail_search_args_foreach
    - mailbox_get_open_status
    - i_new
    - search_get_seqset
    - search_set_failed
    - index_sort_program_init
    - array_create
    - mail_thread_init
    - search_build_inthreads
    linkageType: ''
    returnType: struct mail_search_context
    signature: "struct mail_search_context *\nindex_storage_search_init(struct mailbox_transaction_context
      *t,\n\t\t\t  struct mail_search_args *args,\n\t\t\t  const enum mail_sort_type
      *sort_program,\n\t\t\t  enum mail_fetch_field wanted_fields,\n\t\t\t  struct
      mailbox_header_lookup_ctx *wanted_headers)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_search_mime_arg_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1364,1
    - Dst: message_search_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1359
    functionDepth: 4
    functionLinenumber: 1359
    functionLinenumberEnd: 1373
    functionName: search_arg_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 3
    functionsReached:
    - message_search_deinit
    - index_search_mime_arg_deinit
    linkageType: ''
    returnType: void
    signature: "void search_arg_deinit(struct mail_search_arg *arg,\n\t\t  struct
      index_search_context *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1383,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1384,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1387,1
    - Dst: index_sort_program_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1389,1
    - Dst: mail_thread_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1393,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1394,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1395,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1397,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1398,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1401,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1405,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1406,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1407,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1408,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1375
    functionDepth: 2
    functionLinenumber: 1375
    functionLinenumberEnd: 1410
    functionName: index_storage_search_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - mail_search_args_reset
    - mailbox_header_lookup_unref
    - array_foreach_elem
    - pool_unref
    - mail_thread_deinit
    - mail_search_args_foreach
    - INDEX_MAIL
    - mail_free
    - index_sort_program_deinit
    - i_free
    - array_free
    - mail_storage_last_error_pop
    linkageType: ''
    returnType: int
    signature: int index_storage_search_deinit(struct mail_search_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1412
    functionDepth: 0
    functionLinenumber: 1412
    functionLinenumberEnd: 1421
    functionName: search_get_cost
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long long
    signature: unsigned long long search_get_cost(struct mailbox_transaction_context
      *trans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1427,1
    - Dst: search_arg_match_text
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1430,1
    - Dst: index_search_mime_arg_match
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1423
    functionDepth: 15
    functionLinenumber: 1423
    functionLinenumberEnd: 1434
    functionName: search_match_once
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mail_search_args_foreach
    - index_search_mime_arg_match
    - search_arg_match_text
    linkageType: ''
    returnType: int
    signature: int search_match_once(struct index_search_context *ctx)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_is_static
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1436
    functionDepth: 1
    functionLinenumber: 1436
    functionLinenumberEnd: 1480
    functionName: search_arg_is_static
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - search_arg_is_static
    linkageType: ''
    returnType: bool
    signature: bool search_arg_is_static(struct mail_search_arg *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_is_static
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1482
    functionDepth: 2
    functionLinenumber: 1482
    functionLinenumberEnd: 1488
    functionName: search_set_static_matches
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - search_arg_is_static
    linkageType: ''
    returnType: void
    signature: void search_set_static_matches(struct mail_search_arg *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_is_static
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1493,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1490
    functionDepth: 2
    functionLinenumber: 1490
    functionLinenumberEnd: 1497
    functionName: search_has_static_nonmatches
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - search_arg_is_static
    linkageType: ''
    returnType: bool
    signature: bool search_has_static_nonmatches(struct mail_search_arg *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: search_has_static_nonmatches
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1502,1
    - Dst: mailbox_search_results_never
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - match
    argTypes:
    - struct index_search_context*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1508
      start: 1499
    functionDepth: 3
    functionLinenumber: 1499
    functionLinenumberEnd: 1508
    functionName: search_match_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mailbox_search_results_never
    - search_has_static_nonmatches
    linkageType: ''
    returnType: void
    signature: void search_match_finish(struct index_search_context *ctx, int match)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1517,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1523,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1534,1
    - Dst: search_match_once
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1510
    functionDepth: 16
    functionLinenumber: 1510
    functionLinenumberEnd: 1540
    functionName: search_match_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mail_search_args_foreach
    - i_assert
    - N_ELEMENTS
    - search_match_once
    linkageType: ''
    returnType: int
    signature: int search_match_next(struct index_search_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1556,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1558,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1546
    functionDepth: 1
    functionLinenumber: 1546
    functionLinenumberEnd: 1588
    functionName: search_would_block
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - timeval_diff_usecs
    linkageType: ''
    returnType: bool
    signature: bool search_would_block(struct index_search_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1594,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1595,1
    - Dst: search_match_next
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_search_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1590
    functionDepth: 17
    functionLinenumber: 1590
    functionLinenumberEnd: 1605
    functionName: index_storage_search_next_match_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - container_of
    - search_match_next
    linkageType: ''
    returnType: int
    signature: "int index_storage_search_next_match_mail(struct mail_search_context
      *_ctx,\n\t\t\t\t\t struct mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: search_would_block
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1646,1
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1652,1
    - Dst: search_get_cost
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1654,1
    - Dst: struct mailbox*::v::search_next_update_seq
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1659,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1663,1
    - Dst: struct mailbox*::v::search_next_match_mail
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1666,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct index_search_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1638
    functionDepth: 2
    functionLinenumber: 1638
    functionLinenumberEnd: 1667
    functionName: search_more_with_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - mail_search_args_reset
    - search_get_cost
    - mail_set_seq
    - struct mailbox*::v::search_next_match_mail
    - struct mailbox*::v::search_next_update_seq
    - search_would_block
    linkageType: ''
    returnType: int
    signature: "int search_more_with_mail(struct index_search_context *ctx,\n\t\t\t\t
      struct mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1693,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1697,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1700,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1704,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1684
    functionDepth: 3
    functionLinenumber: 1684
    functionLinenumberEnd: 1706
    functionName: index_search_get_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - INDEX_MAIL
    - array_get
    - mail_alloc
    - array_push_back
    linkageType: ''
    returnType: struct mail
    signature: struct mail *index_search_get_mail(struct index_search_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_search_get_mail
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1715,1
    - Dst: search_more_with_mail
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1717,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1725,1
    - Dst: mail_prefetch
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1729,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - mail_r
    argTypes:
    - struct index_search_context*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1735
      start: 1708
    functionDepth: 4
    functionLinenumber: 1708
    functionLinenumberEnd: 1735
    functionName: search_more_with_prefetching
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - i_assert
    - search_more_with_mail
    - index_search_get_mail
    - mail_prefetch
    linkageType: ''
    returnType: int
    signature: "int search_more_with_prefetching(struct index_search_context *ctx,\n\t\t\t\t\tstruct
      mail **mail_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1771,1
    - Dst: mail_search_args_result_deserialize
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1775,1
    - Dst: search_match_once
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1779,1
    - Dst: search_match_finish
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - imail
    argTypes:
    - struct index_search_context*
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1781
      start: 1766
    functionDepth: 16
    functionLinenumber: 1766
    functionLinenumberEnd: 1781
    functionName: search_finish_prefetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - search_match_finish
    - mail_search_args_result_deserialize
    - i_assert
    - search_match_once
    linkageType: ''
    returnType: bool
    signature: "bool search_finish_prefetch(struct index_search_context *ctx,\n\t\t\t\t
      \  struct index_mail *imail)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: search_more_with_prefetching
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1793,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1794,1
    - Dst: search_finish_prefetch
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1799,1
    - Dst: mailbox_search_notify
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1806,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - mail_r
    argTypes:
    - struct index_search_context*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1787
    functionDepth: 17
    functionLinenumber: 1787
    functionLinenumberEnd: 1809
    functionName: search_more
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 2
    functionsReached:
    - INDEX_MAIL
    - search_more_with_prefetching
    - mailbox_search_notify
    - search_finish_prefetch
    linkageType: ''
    returnType: int
    signature: "int search_more(struct index_search_context *ctx,\n\t\t       struct
      mail **mail_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_killed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1814,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1818,1
    - Dst: master_service_get_kill_time
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1821,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1823,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1824,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1826,1
    - Dst: search_set_failed
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1829,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1811
    functionDepth: 3
    functionLinenumber: 1811
    functionLinenumberEnd: 1833
    functionName: index_storage_search_is_interrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - timeval_diff_msecs
    - master_service_is_killed
    - master_service_get_kill_time
    - i_assert
    - mail_storage_set_error
    - search_set_failed
    linkageType: ''
    returnType: bool
    signature: bool index_storage_search_is_interrupted(struct index_search_context
      *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_search_is_interrupted
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1845,1
    - Dst: search_more
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1849,1
    - Dst: search_more
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1861,1
    - Dst: index_sort_list_add
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1862,1
    - Dst: index_sort_list_finish
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1872,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 3
    argNames:
    - _ctx
    - mail_r
    - tryagain_r
    argTypes:
    - struct mail_search_context*
    - struct mail**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1873
      start: 1835
    functionDepth: 18
    functionLinenumber: 1835
    functionLinenumberEnd: 1873
    functionName: index_storage_search_next_nonblock
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 1
    functionsReached:
    - search_more
    - index_storage_search_is_interrupted
    - index_sort_list_finish
    - index_sort_list_add
    linkageType: ''
    returnType: bool
    signature: "bool index_storage_search_next_nonblock(struct mail_search_context
      *_ctx,\n\t\t\t\t\tstruct mail **mail_r, bool *tryagain_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1910,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1915,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1920,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1921,1
    - Dst: mail_search_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1930,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1934,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1935,1
    - Dst: search_set_static_matches
      Src: /src/dovecot/src/lib-storage/index/index-search.c:1938,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1888
    functionDepth: 3
    functionLinenumber: 1888
    functionLinenumberEnd: 1943
    functionName: index_storage_search_next_update_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search.c
    functionUses: 2
    functionsReached:
    - mail_search_args_reset
    - seq_range_exists
    - mail_index_lookup_uid
    - search_set_static_matches
    - mail_search_args_foreach
    linkageType: ''
    returnType: bool
    signature: bool index_storage_search_next_update_seq(struct mail_search_context
      *_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:61,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:62,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:63,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:65,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:68,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:69,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:72,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:75,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct mailbox_vsize_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 82
    functionName: vsize_header_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_zero
    - I_MIN
    - mail_index_view_open
    - mail_index_get_header_ext
    - mailbox_set_critical
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void vsize_header_refresh(struct mailbox_vsize_update *update)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:91,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:98,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct mailbox_vsize_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 107
    functionName: index_mailbox_vsize_check_rebuild
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - mail_index_lookup_seq_range
    - i_zero
    linkageType: ''
    returnType: void
    signature: void index_mailbox_vsize_check_rebuild(struct mailbox_vsize_update
      *update)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:114,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:116,1
    - Dst: vsize_header_refresh
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 5
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: index_mailbox_vsize_update_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - i_assert
    - vsize_header_refresh
    - i_new
    linkageType: ''
    returnType: struct mailbox_vsize_update
    signature: 'struct mailbox_vsize_update *

      index_mailbox_vsize_update_init(struct mailbox *box)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_INDEX_IS_IN_MEMORY
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:134,1
    - Dst: mailbox_lock_file_create
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:137,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:143,1
    - Dst: vsize_header_refresh
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:148,1
    - Dst: index_mailbox_vsize_check_rebuild
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - update
    - lock_secs
    argTypes:
    - struct mailbox_vsize_update*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 151
    functionName: vsize_update_lock_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - vsize_header_refresh
    - index_mailbox_vsize_check_rebuild
    - MAIL_INDEX_IS_IN_MEMORY
    - mailbox_lock_file_create
    - mailbox_set_critical
    linkageType: ''
    returnType: bool
    signature: "bool vsize_update_lock_full(struct mailbox_vsize_update *update,\n\t\t\t\t
      \  unsigned int lock_secs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vsize_update_lock_full
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct mailbox_vsize_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 153
    functionDepth: 6
    functionLinenumber: 153
    functionLinenumberEnd: 156
    functionName: index_mailbox_vsize_update_try_lock
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - vsize_update_lock_full
    linkageType: ''
    returnType: bool
    signature: bool index_mailbox_vsize_update_try_lock(struct mailbox_vsize_update
      *update)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vsize_update_lock_full
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct mailbox_vsize_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 6
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: index_mailbox_vsize_update_wait_lock
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - vsize_update_lock_full
    linkageType: ''
    returnType: bool
    signature: bool index_mailbox_vsize_update_wait_lock(struct mailbox_vsize_update
      *update)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct mailbox_vsize_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 166
    functionName: index_mailbox_vsize_want_updates
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool index_mailbox_vsize_want_updates(struct mailbox_vsize_update *update)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:173,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:175,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct mailbox_vsize_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 179
    functionName: index_mailbox_vsize_update_write_to_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - mail_index_update_header_ext
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    linkageType: ''
    returnType: void
    signature: void index_mailbox_vsize_update_write_to_index(struct mailbox_vsize_update
      *update)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:189,1
    - Dst: index_mailbox_vsize_update_write_to_index
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - update
    argTypes:
    - struct mailbox_vsize_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 181
    functionDepth: 3
    functionLinenumber: 181
    functionLinenumberEnd: 195
    functionName: index_mailbox_vsize_update_write
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - memcmp
    - index_mailbox_vsize_update_write_to_index
    linkageType: ''
    returnType: void
    signature: void index_mailbox_vsize_update_write(struct mailbox_vsize_update *update)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:199,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:203,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:205,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:207,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:212,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:213,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:214,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:215,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:216,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:217,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:219,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:219,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:219,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:220,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 197
    functionDepth: 4
    functionLinenumber: 197
    functionLinenumberEnd: 225
    functionName: index_mailbox_vsize_notify_indexer
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - net_connect_unix
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - write_full
    - i_close_fd
    - str_append_tabescaped
    - str_append
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void index_mailbox_vsize_notify_indexer(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_vsize_update_write
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:234,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:235,1
    - Dst: index_mailbox_vsize_notify_indexer
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:237,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:239,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - _update
    argTypes:
    - struct mailbox_vsize_update**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 227
    functionDepth: 5
    functionLinenumber: 227
    functionLinenumberEnd: 241
    functionName: index_mailbox_vsize_update_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - index_mailbox_vsize_update_write
    - file_lock_free
    - index_mailbox_vsize_notify_indexer
    - i_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void index_mailbox_vsize_update_deinit(struct mailbox_vsize_update
      **_update)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:246,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:251,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:253,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:258,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - update
    - uid
    - vsize
    argTypes:
    - struct mailbox_vsize_update*
    - uint32_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 243
    functionDepth: 4
    functionLinenumber: 243
    functionLinenumberEnd: 264
    functionName: index_mailbox_vsize_hdr_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 1
    functionsReached:
    - mailbox_set_critical
    - i_assert
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void index_mailbox_vsize_hdr_expunge(struct mailbox_vsize_update *update,\n\t\t\t\t
      \    uint32_t uid, uoff_t vsize)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - update
    - require_result
    argTypes:
    - struct mailbox_vsize_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 274
    functionName: index_mailbox_vsize_finish_bg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: "void index_mailbox_vsize_finish_bg(struct mailbox_vsize_update *update,\n\t\t\t
      \     bool require_result)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:291,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:302,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:303,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:308,1
    - Dst: mail_search_build_add_seqset
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:311,1
    - Dst: mail_index_map_get_ext_idx
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:313,1
    - Dst: index_mailbox_vsize_update_write_to_index
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:318,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:321,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:322,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:331,1
    - Dst: index_mailbox_vsize_finish_bg
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:336,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:346,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:350,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:352,1
    - Dst: index_mailbox_vsize_finish_bg
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:353,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:359,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:373,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:375,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:383,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 2
    argNames:
    - update
    - require_result
    argTypes:
    - struct mailbox_vsize_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 385
    functionName: index_mailbox_vsize_hdr_add_missing
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mail_get_virtual_size
    - i_assert
    - mailbox_transaction_begin
    - mail_index_map_get_ext_idx
    - mail_index_lookup_seq_range
    - mail_search_build_add_seqset
    - mailbox_search_deinit
    - mail_search_build_init
    - mailbox_get_open_status
    - mailbox_search_init
    - mailbox_transaction_commit
    - index_mailbox_vsize_finish_bg
    - mailbox_search_next
    - mail_search_args_unref
    - index_mailbox_vsize_update_write_to_index
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_vsize_hdr_add_missing(struct mailbox_vsize_update
      *update,\n\t\t\t\t    bool require_result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:394,1
    - Dst: index_mailbox_vsize_update_init
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:395,1
    - Dst: index_mailbox_vsize_update_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:400,1
    - Dst: index_mailbox_vsize_update_wait_lock
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:406,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:408,1
    - Dst: index_mailbox_vsize_hdr_add_missing
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:409,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:410,1
    - Dst: index_mailbox_vsize_update_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - box
    - metadata_r
    argTypes:
    - struct mailbox*
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 387
    functionDepth: 7
    functionLinenumber: 387
    functionLinenumberEnd: 414
    functionName: index_mailbox_get_virtual_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 1
    functionsReached:
    - index_mailbox_vsize_update_wait_lock
    - index_mailbox_vsize_update_deinit
    - index_mailbox_vsize_update_init
    - event_reason_begin
    - event_reason_end
    - mailbox_get_open_status
    - index_mailbox_vsize_hdr_add_missing
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_get_virtual_size(struct mailbox *box,\n\t\t\t\t
      \  struct mailbox_metadata *metadata_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:430,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:437,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:440,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:442,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:443,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:444,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:446,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:449,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:450,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:456,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:458,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:458,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:465,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:466,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:466,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:467,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:470,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - box
    - metadata_r
    argTypes:
    - struct mailbox*
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 416
    functionDepth: 11
    functionLinenumber: 416
    functionLinenumberEnd: 472
    functionName: index_mailbox_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 1
    functionsReached:
    - mail_search_build_add_all
    - mail_get_physical_size
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mail_event
    - mailbox_sync
    - e_error
    - mailbox_search_deinit
    - mail_search_build_init
    - mailbox_transaction_commit
    - mailbox_search_init
    - mailbox_search_next
    - mail_search_args_unref
    - index_mailbox_get_virtual_size
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_get_physical_size(struct mailbox *box,\n\t\t\t\t
      \   struct mailbox_metadata *metadata_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_vsize_update_init
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:479,1
    - Dst: index_mailbox_vsize_check_rebuild
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:486,1
    - Dst: index_mailbox_vsize_want_updates
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:487,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:492,1
    - Dst: index_mailbox_vsize_update_try_lock
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:494,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:496,1
    - Dst: index_mailbox_vsize_hdr_add_missing
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:497,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:498,1
    - Dst: index_mailbox_vsize_update_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mailbox-size.c:501,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 474
    functionDepth: 7
    functionLinenumber: 474
    functionLinenumberEnd: 502
    functionName: index_mailbox_vsize_update_appends
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    functionUses: 0
    functionsReached:
    - index_mailbox_vsize_update_try_lock
    - index_mailbox_vsize_update_deinit
    - index_mailbox_vsize_want_updates
    - index_mailbox_vsize_check_rebuild
    - index_mailbox_vsize_update_init
    - event_reason_begin
    - event_reason_end
    - mailbox_get_open_status
    - index_mailbox_vsize_hdr_add_missing
    linkageType: ''
    returnType: void
    signature: void index_mailbox_vsize_update_appends(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:23,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:24,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:27,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:28,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:34,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:37,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_pvt_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 18
    functionDepth: 4
    functionLinenumber: 18
    functionLinenumberEnd: 44
    functionName: sync_pvt_expunges
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - mail_index_view_get_messages_count
    - mail_index_lookup_uid
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: int sync_pvt_expunges(struct index_mailbox_sync_pvt_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:53,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:54,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:56,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:59,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:62,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:64,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - keywords
    - seq_old
    - seq_new
    argTypes:
    - struct index_mailbox_sync_pvt_context*
    - ARRAY_TYPE*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 46
    functionDepth: 4
    functionLinenumber: 46
    functionLinenumberEnd: 68
    functionName: sync_pvt_copy_self_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - mail_index_update_keywords
    - mail_index_update_flags
    - mail_index_keywords_create_from_indexes
    - mail_index_keywords_unref
    - array_count
    - mail_index_lookup
    - mail_index_lookup_keywords
    linkageType: ''
    returnType: void
    signature: "void sync_pvt_copy_self_flags(struct index_mailbox_sync_pvt_context
      *ctx,\n\t\t\t ARRAY_TYPE(keyword_indexes) *keywords,\n\t\t\t uint32_t seq_old,
      uint32_t seq_new)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:76,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:77,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - seq_shared
    - seq_pvt
    argTypes:
    - struct index_mailbox_sync_pvt_context*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 79
    functionName: sync_pvt_copy_shared_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - mailbox_get_private_flags_mask
    - mail_index_update_flags
    - mail_index_lookup
    linkageType: ''
    returnType: void
    signature: "void sync_pvt_copy_shared_flags(struct index_mailbox_sync_pvt_context
      *ctx,\n\t\t\t   uint32_t seq_shared, uint32_t seq_pvt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:85,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:86,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:87,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:91,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_pvt_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 81
    functionDepth: 3
    functionLinenumber: 81
    functionLinenumberEnd: 94
    functionName: index_mailbox_sync_view_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - mail_index_view_open
    - mail_index_view_close
    - mail_index_refresh
    - mailbox_set_index_error
    linkageType: ''
    returnType: int
    signature: int index_mailbox_sync_view_refresh(struct index_mailbox_sync_pvt_context
      *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_sync_view_refresh
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:101,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:104,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:110,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:116,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:118,1
    - Dst: index_mailbox_sync_view_refresh
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:122,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - force
    argTypes:
    - struct index_mailbox_sync_pvt_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 125
    functionName: index_mailbox_sync_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - index_mailbox_sync_view_refresh
    - mail_index_get_header
    - mailbox_set_index_error
    - mail_index_sync_begin
    linkageType: ''
    returnType: int
    signature: int index_mailbox_sync_open(struct index_mailbox_sync_pvt_context *ctx,
      bool force)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open_index_pvt
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:136,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:139,1
    - Dst: index_mailbox_sync_open
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:143,1
    - Dst: index_mailbox_sync_pvt_deinit
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - box
    - lock
    - flags
    - ctx_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mail_index_view_sync_flags
    - struct index_mailbox_sync_pvt_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 127
    functionDepth: 7
    functionLinenumber: 127
    functionLinenumberEnd: 151
    functionName: index_mailbox_sync_pvt_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - index_mailbox_sync_pvt_deinit
    - mailbox_open_index_pvt
    - index_mailbox_sync_open
    - i_new
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_sync_pvt_init(struct mailbox *box, bool lock,\n\t\t\t\tenum
      mail_index_view_sync_flags flags,\n\t\t\t\tstruct index_mailbox_sync_pvt_context
      **ctx_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:159,1
    - Dst: index_mailbox_sync_open
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:167,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:170,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:171,1
    - Dst: sync_pvt_expunges
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:176,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:179,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:188,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:197,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:199,1
    - Dst: mail_index_reset
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:208,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:209,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:218,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:219,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:221,1
    - Dst: sync_pvt_copy_self_flags
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:223,1
    - Dst: sync_pvt_copy_shared_flags
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:226,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:233,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:241,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:247,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:248,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 3
    argNames:
    - ctx
    - pvt_changes
    - pvt_changes_count
    argTypes:
    - struct index_mailbox_sync_pvt_context*
    - struct mail_save_private_changes*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 153
    functionDepth: 5
    functionLinenumber: 153
    functionLinenumberEnd: 250
    functionName: index_mailbox_sync_pvt_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - index_mailbox_sync_open
    - e_info
    - mail_index_update_header
    - sync_pvt_copy_shared_flags
    - mail_index_lookup_uid
    - mail_index_lookup_seq
    - mail_index_update_flags
    - mail_index_sync_commit
    - sync_pvt_copy_self_flags
    - mail_index_get_header
    - mail_index_lookup_seq_range
    - mailbox_set_index_error
    - t_array_init
    - ARRAY_TYPE
    - mail_index_reset
    - sync_pvt_expunges
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_sync_pvt_index(struct index_mailbox_sync_pvt_context
      *ctx,\n\t\t\t     const struct mail_save_private_changes *pvt_changes,\n\t\t\t
      \    unsigned int pvt_changes_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - struct mail_save_private_changes*
    - struct mail_save_private_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 261
    functionName: mail_save_private_changes_mailnum_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_save_private_changes_mailnum_cmp(const struct mail_save_private_changes
      *c1,\n\t\t\t\t      const struct mail_save_private_changes *c2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_sync_view_refresh
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:271,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:275,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:278,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:279,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:287,1
    - Dst: index_mailbox_sync_pvt_index
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - trans
    argTypes:
    - struct index_mailbox_sync_pvt_context*
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 263
    functionDepth: 6
    functionLinenumber: 263
    functionLinenumberEnd: 291
    functionName: index_mailbox_sync_pvt_newmails
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - seq_range_array_iter_init
    - array_get_modifiable
    - index_mailbox_sync_view_refresh
    - array_sort
    - index_mailbox_sync_pvt_index
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_sync_pvt_newmails(struct index_mailbox_sync_pvt_context
      *ctx,\n\t\t\t\t    struct mailbox_transaction_context *trans)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_sync_pvt_index
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:303,1
    - Dst: mail_index_view_sync_begin
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:310,1
    - Dst: mail_index_view_sync_next
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:311,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:317,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:321,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:324,1
    - Dst: mail_index_view_sync_commit
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:329,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - flag_updates
    - hidden_updates
    argTypes:
    - struct index_mailbox_sync_pvt_context*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 293
    functionDepth: 12
    functionLinenumber: 293
    functionLinenumberEnd: 332
    functionName: index_mailbox_sync_pvt_view
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add_range
    - mail_index_view_sync_begin
    - mail_index_lookup_seq_range
    - mail_index_view_sync_commit
    - index_mailbox_sync_pvt_index
    - mail_index_view_sync_next
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_sync_pvt_view(struct index_mailbox_sync_pvt_context
      *ctx,\n\t\t\t\tARRAY_TYPE(seq_range) *flag_updates,\n\t\t\t\tARRAY_TYPE(seq_range)
      *hidden_updates)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:341,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:343,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sync-pvt.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct index_mailbox_sync_pvt_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 334
    functionDepth: 4
    functionLinenumber: 334
    functionLinenumberEnd: 345
    functionName: index_mailbox_sync_pvt_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    functionUses: 1
    functionsReached:
    - mail_index_sync_rollback
    - i_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void index_mailbox_sync_pvt_deinit(struct index_mailbox_sync_pvt_context
      **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: MAIL_THREAD_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_THREAD_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: MAIL_THREAD_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_THREAD_CONTEXT_REQUIRE(obj)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_uid
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:66,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:72,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:76,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:80,1
    - Dst: message_id_get_next
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:95,1
    - Dst: message_id_get_next
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:98,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:103,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - rec
    - msgid_r
    argTypes:
    - struct mail_thread_context*
    - struct mail_index_strmap_rec*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 112
    functionName: mail_strmap_rec_get_msgid
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - mail_get_first_header
    - message_id_get_next
    - mail_set_uid
    - mail_set_critical
    linkageType: ''
    returnType: int
    signature: "int mail_strmap_rec_get_msgid(struct mail_thread_context *ctx,\n\t\t\t
      \ const struct mail_index_strmap_rec *rec,\n\t\t\t  const char **msgid_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_strmap_rec_get_msgid
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:127,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - key
    - rec
    - context
    argTypes:
    - char*
    - struct mail_index_strmap_rec*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 114
    functionDepth: 5
    functionLinenumber: 114
    functionLinenumberEnd: 135
    functionName: mail_thread_hash_key_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_strmap_rec_get_msgid
    linkageType: ''
    returnType: bool
    signature: "bool mail_thread_hash_key_cmp(const char *key,\n\t\t\t const struct
      mail_index_strmap_rec *rec,\n\t\t\t void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_strmap_rec_get_msgid
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:150,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:152,1
    - Dst: mail_strmap_rec_get_msgid
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:153,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rec1
    - rec2
    - context
    argTypes:
    - struct mail_index_strmap_rec*
    - struct mail_index_strmap_rec*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 139
    functionDepth: 5
    functionLinenumber: 139
    functionLinenumberEnd: 157
    functionName: mail_thread_hash_rec_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup
    - mail_strmap_rec_get_msgid
    linkageType: ''
    returnType: int
    signature: "int mail_thread_hash_rec_cmp(const struct mail_index_strmap_rec *rec1,\n\t\t\t
      const struct mail_index_strmap_rec *rec2,\n\t\t\t void *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:167,1
    - Dst: mailbox_search_result_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:177,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:184,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:185,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:188,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:193,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:193,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:198,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:200,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:204,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:215,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:219,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:226,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 4
    argNames:
    - idx_map
    - old_count
    - new_count
    - context
    argTypes:
    - uint32_t*
    - unsigned int
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 161
    functionDepth: 5
    functionLinenumber: 161
    functionLinenumberEnd: 228
    functionName: mail_thread_strmap_remap
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_idx_modifiable
    - I_MIN
    - array_get
    - mailbox_search_result_free
    - ARRAY_TYPE
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: "void mail_thread_strmap_remap(const uint32_t *idx_map,\n\t\t\t\t     unsigned
      int old_count,\n\t\t\t\t     unsigned int new_count, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - mail
    - name
    - value_r
    argTypes:
    - struct mail*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 242
    functionName: thread_get_mail_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - mail_get_first_header
    linkageType: ''
    returnType: int
    signature: "int thread_get_mail_header(struct mail *mail, const char *name,\n\t\t\t\t
      \ const char **value_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: thread_get_mail_header
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:250,1
    - Dst: thread_get_mail_header
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:251,1
    - Dst: message_id_get_next
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:255,1
    - Dst: mail_index_strmap_view_sync_add
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:257,1
    - Dst: mail_index_strmap_view_sync_add_unique
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:261,1
    - Dst: message_id_get_next
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:266,1
    - Dst: mail_index_strmap_view_sync_add
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:270,1
    - Dst: message_id_get_next
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:274,1
    - Dst: thread_get_mail_header
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:278,1
    - Dst: message_id_get_next
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:282,1
    - Dst: mail_index_strmap_view_sync_add
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:284,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_thread_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 244
    functionDepth: 4
    functionLinenumber: 244
    functionLinenumberEnd: 294
    functionName: mail_thread_map_add_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - thread_get_mail_header
    - message_id_get_next
    - mail_index_strmap_view_sync_add_unique
    - mail_index_strmap_view_sync_add
    linkageType: ''
    returnType: int
    signature: int mail_thread_map_add_mail(struct mail_thread_context *ctx, struct
      mail *mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_THREAD_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:302,1
    - Dst: mail_index_strmap_view_open
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:313,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:322,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:323,1
    - Dst: mail_index_strmap_view_sync_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:327,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:329,1
    - Dst: mail_index_strmap_view_sync_commit
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:333,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:334,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:338,1
    - Dst: mail_search_build_add_seqset
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:339,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:340,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:344,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:345,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:347,1
    - Dst: mail_thread_map_add_mail
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:348,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:353,1
    - Dst: mail_index_strmap_view_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:357,1
    - Dst: mail_index_strmap_view_sync_commit
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:359,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_thread_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 296
    functionDepth: 8
    functionLinenumber: 296
    functionLinenumberEnd: 361
    functionName: mail_thread_index_map_build
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_view_open
    - mail_index_strmap_view_sync_init
    - mailbox_get_seq_range
    - mail_alloc
    - mailbox_header_lookup_unref
    - mail_search_build_add_seqset
    - mail_index_strmap_view_sync_rollback
    - mailbox_header_lookup_init
    - mailbox_search_deinit
    - mail_search_build_init
    - mail_index_strmap_view_sync_commit
    - mailbox_search_init
    - mail_thread_map_add_mail
    - mailbox_search_next
    - mail_search_args_unref
    - MAIL_THREAD_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int mail_thread_index_map_build(struct mail_thread_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - uid
    - rec
    argTypes:
    - uint32_t*
    - struct mail_index_strmap_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 368
    functionName: msgid_map_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int msgid_map_cmp(const uint32_t *uid,\n\t\t\t const struct mail_index_strmap_rec
      *rec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:374,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:380,1
    - Dst: mailbox_search_result_sync
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:381,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:385,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:392,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:393,1
    - Dst: bsearch_insert_pos
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:396,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:403,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:412,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:415,1
    - Dst: mail_thread_remove
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:416,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - tbox
    - added_uids
    argTypes:
    - struct mail_thread_mailbox*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 370
    functionDepth: 3
    functionLinenumber: 370
    functionLinenumberEnd: 421
    functionName: mail_thread_cache_update_removes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - array_get
    - bsearch_insert_pos
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    - mailbox_search_result_sync
    - mail_thread_remove
    linkageType: ''
    returnType: bool
    signature: "bool mail_thread_cache_update_removes(struct mail_thread_mailbox *tbox,\n\t\t\t\t\t
      \    ARRAY_TYPE(seq_range) *added_uids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:434,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:438,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:440,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:441,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:449,1
    - Dst: mail_thread_add
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:450,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - tbox
    - added_uids
    argTypes:
    - struct mail_thread_mailbox*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 423
    functionDepth: 5
    functionLinenumber: 423
    functionLinenumberEnd: 453
    functionName: mail_thread_cache_update_adds
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    - mail_thread_add
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: void
    signature: "void mail_thread_cache_update_adds(struct mail_thread_mailbox *tbox,\n\t\t\t\t\t
      \ ARRAY_TYPE(seq_range) *added_uids)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_strmap_view_get_highest_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:461,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - tbox
    argTypes:
    - struct mail_thread_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 480
    functionName: mail_thread_cache_fix_invalid_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - array_copy
    - mail_index_strmap_view_get_highest_idx
    linkageType: ''
    returnType: void
    signature: void mail_thread_cache_fix_invalid_indexes(struct mail_thread_mailbox
      *tbox)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_args_equal
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:490,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:492,1
    - Dst: mail_thread_cache_update_removes
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:493,1
    - Dst: mailbox_search_result_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:499,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - tbox
    - ctx
    argTypes:
    - struct mail_thread_mailbox*
    - struct mail_thread_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 482
    functionDepth: 5
    functionLinenumber: 482
    functionLinenumberEnd: 500
    functionName: mail_thread_cache_sync_remove
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - mail_search_args_equal
    - mail_thread_cache_update_removes
    - t_array_init
    - mailbox_search_result_free
    linkageType: ''
    returnType: void
    signature: "void mail_thread_cache_sync_remove(struct mail_thread_mailbox *tbox,\n\t\t\t\t\t
      \ struct mail_thread_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_thread_cache_fix_invalid_indexes
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:511,1
    - Dst: mail_thread_cache_update_adds
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:516,1
    - Dst: mail_index_strmap_view_get_highest_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:522,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:524,1
    - Dst: mailbox_search_result_save
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:527,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:531,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:534,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:536,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:539,1
    - Dst: mail_thread_add
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:540,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - tbox
    - ctx
    - search_ctx
    argTypes:
    - struct mail_thread_mailbox*
    - struct mail_thread_context*
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 502
    functionDepth: 6
    functionLinenumber: 502
    functionLinenumberEnd: 542
    functionName: mail_thread_cache_sync_add
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - mail_thread_cache_update_adds
    - mailbox_search_result_save
    - mail_thread_cache_fix_invalid_indexes
    - array_get
    - mail_thread_add
    - array_clear
    - mailbox_search_next
    - i_assert
    - mail_index_strmap_view_get_highest_idx
    linkageType: ''
    returnType: void
    signature: "void mail_thread_cache_sync_add(struct mail_thread_mailbox *tbox,\n\t\t\t\t
      \      struct mail_thread_context *ctx,\n\t\t\t\t       struct mail_search_context
      *search_ctx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_THREAD_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:547,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:552,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:554,1
    - Dst: mail_search_args_ref
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:556,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:558,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:559,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:560,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:563,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:566,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:568,1
    - Dst: mail_thread_cache_sync_remove
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:572,1
    - Dst: mail_thread_index_map_build
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:573,1
    - Dst: mail_thread_cache_sync_add
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:575,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:576,1
    - Dst: mail_index_strmap_view_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:581,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:583,1
    - Dst: mail_thread_deinit
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:585,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:588,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 3
    argNames:
    - box
    - args
    - ctx_r
    argTypes:
    - struct mailbox*
    - struct mail_search_args*
    - struct mail_thread_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 544
    functionDepth: 9
    functionLinenumber: 544
    functionLinenumberEnd: 592
    functionName: mail_thread_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 2
    functionsReached:
    - i_zero
    - mail_search_build_add_all
    - mailbox_transaction_begin
    - mail_search_args_init
    - event_reason_begin
    - mail_index_strmap_view_set_corrupted
    - event_reason_end
    - mail_thread_deinit
    - mail_search_args_ref
    - mail_thread_index_map_build
    - mail_search_build_init
    - i_new
    - mailbox_search_init
    - mailbox_search_deinit
    - mail_thread_cache_sync_remove
    - i_assert
    - mail_thread_cache_sync_add
    - MAIL_THREAD_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: "int mail_thread_init(struct mailbox *box, struct mail_search_args
      *args,\n\t\t     struct mail_thread_context **ctx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:596,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_thread_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 594
    functionDepth: 2
    functionLinenumber: 594
    functionLinenumberEnd: 598
    functionName: mail_thread_clear
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - mail_free
    - mailbox_transaction_commit
    linkageType: ''
    returnType: void
    signature: void mail_thread_clear(struct mail_thread_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_THREAD_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:603,1
    - Dst: mail_thread_clear
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:607,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:608,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_thread_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 600
    functionDepth: 4
    functionLinenumber: 600
    functionLinenumberEnd: 611
    functionName: mail_thread_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 3
    functionsReached:
    - mail_search_args_unref
    - i_free
    - MAIL_THREAD_CONTEXT_REQUIRE
    - mail_thread_clear
    linkageType: ''
    returnType: void
    signature: void mail_thread_deinit(struct mail_thread_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_THREAD_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:617,1
    - Dst: mail_thread_iterate_init_full
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - thread_type
    - write_seqs
    argTypes:
    - struct mail_thread_context*
    - enum mail_thread_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 621
    functionName: mail_thread_iterate_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 2
    functionsReached:
    - mail_thread_iterate_init_full
    - MAIL_THREAD_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct mail_thread_iterate_context
    signature: "struct mail_thread_iterate_context *\nmail_thread_iterate_init(struct
      mail_thread_context *ctx,\n\t\t\t enum mail_thread_type thread_type, bool write_seqs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_THREAD_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:625,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:627,1
    - Dst: mail_index_strmap_view_close
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:630,1
    - Dst: mailbox_search_result_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:632,1
    - Dst: struct mail_thread_mailbox*::module_ctx::super::close
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:633,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 623
    functionDepth: 5
    functionLinenumber: 623
    functionLinenumberEnd: 634
    functionName: mail_thread_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - mailbox_search_result_free
    - struct mail_thread_mailbox*::module_ctx::super::close
    - i_assert
    - mail_index_strmap_view_close
    - MAIL_THREAD_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void mail_thread_mailbox_close(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_THREAD_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:638,1
    - Dst: mail_index_strmap_deinit
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:640,1
    - Dst: struct mail_thread_mailbox*::module_ctx::super::free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:641,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:643,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:644,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 636
    functionDepth: 4
    functionLinenumber: 636
    functionLinenumberEnd: 646
    functionName: mail_thread_mailbox_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - mail_index_strmap_deinit
    - MAIL_THREAD_CONTEXT_REQUIRE
    - i_free
    - array_free
    - struct mail_thread_mailbox*::module_ctx::super::free
    linkageType: ''
    returnType: void
    signature: void mail_thread_mailbox_free(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_THREAD_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:650,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:657,1
    - Dst: mail_index_strmap_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:662,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:666,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:667,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/index/index-thread.c:669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 648
    functionDepth: 2
    functionLinenumber: 648
    functionLinenumberEnd: 670
    functionName: index_thread_mailbox_opened
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_index_strmap_init
    - MAIL_THREAD_CONTEXT
    - i_new
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: void
    signature: void index_thread_mailbox_opened(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:14,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:15,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:16,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:17,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:18,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:19,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:20,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:21,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 11
    functionDepth: 2
    functionLinenumber: 11
    functionLinenumberEnd: 22
    functionName: index_transaction_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - array_free
    - array_is_created
    - i_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void index_transaction_free(struct mailbox_transaction_context *t)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_STORAGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:29,1
    - Dst: index_pop3_uidl_update_exists_finish
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:34,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:37,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:38,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:44,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:45,1
    - Dst: mailbox_save_context_deinit
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:52,1
    - Dst: struct mailbox_transaction_context*::box::v::transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:54,1
    - Dst: struct mailbox_transaction_context*::box::v::transaction_save_commit_pre
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:56,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:62,1
    - Dst: index_mailbox_sync_pvt_init
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:67,1
    - Dst: struct mailbox_transaction_context*::super::rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:69,1
    - Dst: struct mailbox_transaction_context*::super::commit
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:71,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:81,1
    - Dst: struct mailbox_transaction_context*::box::v::transaction_save_commit_post
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:82,1
    - Dst: struct mailbox_transaction_context*::box::v::transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:84,1
    - Dst: index_mailbox_sync_pvt_newmails
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:88,1
    - Dst: index_mailbox_sync_pvt_deinit
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:92,1
    - Dst: mail_index_set_error_nolog
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:96,1
    - Dst: mailbox_get_last_error
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:96,1
    - Dst: index_transaction_free
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:97,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 56
    argCount: 2
    argNames:
    - index_trans
    - result_r
    argTypes:
    - struct mail_index_transaction*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 24
    functionDepth: 8
    functionLinenumber: 24
    functionLinenumberEnd: 99
    functionName: index_transaction_index_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 0
    functionsReached:
    - index_transaction_free
    - index_mailbox_sync_pvt_deinit
    - mail_index_set_error_nolog
    - mailbox_get_last_error
    - dict_transaction_commit
    - index_mailbox_sync_pvt_init
    - mailbox_set_index_error
    - MAIL_STORAGE_CONTEXT_REQUIRE
    - struct mailbox_transaction_context*::super::commit
    - index_mailbox_sync_pvt_newmails
    - struct mailbox_transaction_context*::box::v::transaction_save_rollback
    - i_assert
    - struct mailbox_transaction_context*::super::rollback
    - struct mailbox_transaction_context*::box::v::transaction_save_commit_post
    - index_pop3_uidl_update_exists_finish
    - mailbox_set_critical
    - mailbox_save_context_deinit
    - array_is_created
    - struct mailbox_transaction_context*::box::v::transaction_save_commit_pre
    linkageType: ''
    returnType: int
    signature: "int index_transaction_index_commit(struct mail_index_transaction *index_trans,\n\t\t\t
      \      struct mail_index_transaction_commit_result *result_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_STORAGE_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:105,1
    - Dst: dict_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:107,1
    - Dst: dict_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:108,1
    - Dst: mailbox_save_context_deinit
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:111,1
    - Dst: struct mailbox_transaction_context*::box::v::transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:112,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:115,1
    - Dst: struct mailbox_transaction_context*::super::rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:116,1
    - Dst: index_transaction_free
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - index_trans
    argTypes:
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 118
    functionName: index_transaction_index_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 0
    functionsReached:
    - dict_transaction_rollback
    - struct mailbox_transaction_context*::super::rollback
    - index_transaction_free
    - MAIL_STORAGE_CONTEXT_REQUIRE
    - mailbox_save_context_deinit
    - struct mailbox_transaction_context*::box::v::transaction_save_rollback
    - i_assert
    linkageType: ''
    returnType: void
    signature: void index_transaction_index_rollback(struct mail_index_transaction
      *index_trans)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum mailbox_transaction_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 133
    functionName: index_transaction_flags_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mail_index_transaction_flags
    signature: enum mail_index_transaction_flags index_transaction_flags_get(enum
      mailbox_transaction_flags flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_transaction_flags_get
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:142,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:143,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 146
    functionName: index_transaction_init_pvt
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 4
    functionsReached:
    - index_transaction_flags_get
    - mail_index_transaction_begin
    - mail_index_transaction_open_updated_view
    linkageType: ''
    returnType: void
    signature: void index_transaction_init_pvt(struct mailbox_transaction_context
      *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:155,1
    - Dst: index_transaction_flags_get
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:157,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:159,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:163,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:164,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:165,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:167,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:170,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:171,1
    - Dst: mail_cache_view_update_cache_decisions
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:174,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 4
    argNames:
    - t
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox_transaction_context*
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 182
    functionName: index_transaction_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 1
    functionsReached:
    - mail_index_transaction_begin
    - index_transaction_flags_get
    - array_create
    - mail_index_transaction_open_updated_view
    - i_strdup
    - mail_cache_view_update_cache_decisions
    - MODULE_CONTEXT_SET
    - mail_cache_get_transaction
    - mail_cache_view_open
    - i_assert
    - mail_index_refresh
    linkageType: ''
    returnType: void
    signature: "void index_transaction_init(struct mailbox_transaction_context *t,\n\t\t\t
      \   struct mailbox *box,\n\t\t\t    enum mailbox_transaction_flags flags,\n\t\t\t
      \   const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:191,1
    - Dst: index_transaction_init
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 184
    functionDepth: 4
    functionLinenumber: 184
    functionLinenumberEnd: 194
    functionName: index_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 34
    functionsReached:
    - i_new
    - index_transaction_init
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nindex_transaction_begin(struct
      mailbox *box,\n\t\t\tenum mailbox_transaction_flags flags,\n\t\t\tconst char
      *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:204,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:205,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:207,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:211,1
    - Dst: mail_index_transaction_commit_full
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:212,1
    - Dst: mail_index_is_deleted
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:216,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 196
    functionDepth: 3
    functionLinenumber: 196
    functionLinenumberEnd: 221
    functionName: index_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 34
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - mail_index_transaction_commit_full
    - mailbox_set_deleted
    - p_array_init
    - mail_index_transaction_commit
    - mail_index_is_deleted
    linkageType: ''
    returnType: int
    signature: "int index_transaction_commit(struct mailbox_transaction_context *t,\n\t\t\t
      \    struct mail_transaction_commit_changes *changes_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:228,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/index-transaction.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 230
    functionName: index_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-transaction.c
    functionUses: 8
    functionsReached:
    - mail_index_transaction_rollback
    linkageType: ''
    returnType: void
    signature: void index_transaction_rollback(struct mailbox_transaction_context
      *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:52,1
    - Dst: mail_search_mime_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:55,1
    - Dst: mail_search_mime_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - mpctx
    - args
    argTypes:
    - struct search_mimepart_context*
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 66
    functionName: search_arg_mime_parent_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - mail_search_mime_args_foreach
    - array_idx_modifiable
    - mail_search_mime_args_reset
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_parent_match(struct search_mimepart_context *mpctx,\n\t\t\t\t\tstruct
      mail_search_mime_arg *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:92,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:96,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:97,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:98,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:101,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:102,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:104,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:104,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:105,1
    - Dst: mail_search_mime_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:112,1
    - Dst: mail_search_mime_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:116,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:121,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:124,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:124,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:125,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:134,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:142,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:143,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:144,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 2
    argNames:
    - mpctx
    - args
    argTypes:
    - struct search_mimepart_context*
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 145
    functionName: search_arg_mime_child_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - array_append_space
    - array_idx_modifiable
    - ARRAY
    - array_copy
    - array_count
    - mail_search_mime_args_foreach
    - t_array_init
    - array_clear
    - i_assert
    - mail_search_mime_args_reset
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_child_match(struct search_mimepart_context *mpctx,\n\t\t\t\t
      \      struct mail_search_mime_arg *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - key
    - value
    argTypes:
    - struct search_mimepart_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 163
    functionName: search_arg_mime_substring_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_substring_match(\n\tstruct search_mimepart_context
      *mpctx ATTR_UNUSED,\n\tconst char *key, const char *value)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: message_date_parse
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:180,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:181,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - type
    - search_time
    - envelope
    argTypes:
    - struct search_mimepart_context*
    - enum mail_search_mime_arg_type
    - time_t
    - struct message_part_envelope*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 165
    functionDepth: 4
    functionLinenumber: 165
    functionLinenumberEnd: 197
    functionName: search_arg_mime_envelope_time_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_unreached
    - message_date_parse
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_envelope_time_match(\n\tstruct search_mimepart_context
      *mpctx ATTR_UNUSED,\n\tenum mail_search_mime_arg_type type, time_t search_time,\n\tconst
      struct message_part_envelope *envelope)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:231,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:238,1
    - Dst: message_address_write
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:239,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:240,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:240,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - type
    - key
    - envelope
    argTypes:
    - struct search_mimepart_context*
    - enum mail_search_mime_arg_type
    - char*
    - struct message_part_envelope*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 199
    functionDepth: 3
    functionLinenumber: 199
    functionLinenumberEnd: 241
    functionName: search_arg_mime_envelope_address_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - message_address_write
    - i_unreached
    - strstr
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_envelope_address_match(\n\tstruct search_mimepart_context
      *mpctx ATTR_UNUSED,\n\tenum mail_search_mime_arg_type type, const char *key,\n\tconst
      struct message_part_envelope *envelope)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: message_part_data_get_filename
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:253,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:257,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:260,1
    - Dst: struct index_search_context*::mail_ctx::normalizer
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:262,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:263,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:265,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:266,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:266,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:272,1
    - Dst: struct index_search_context*::mail_ctx::normalizer
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:273,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:273,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:274,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:278,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:280,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:282,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:284,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:285,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:287,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:291,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - mpctx
    - arg
    argTypes:
    - struct search_mimepart_context*
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 243
    functionDepth: 4
    functionLinenumber: 243
    functionLinenumberEnd: 292
    functionName: search_arg_mime_filename_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - i_panic
    - str_c
    - strcmp
    - str_begins_with
    - i_unreached
    - strlen
    - struct index_search_context*::mail_ctx::normalizer
    - i_strdup
    - str_truncate
    - str_new
    - strstr
    - message_part_data_get_filename
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_filename_match(struct search_mimepart_context
      *mpctx,\n\t\t\t       struct mail_search_mime_arg *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - arg
    argTypes:
    - struct search_mimepart_context*
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 301
    functionName: search_arg_mime_filename_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: "void search_arg_mime_filename_deinit(\n\tstruct search_mimepart_context
      *mpctx ATTR_UNUSED,\n\tstruct mail_search_mime_arg *arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:313,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:316,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - params
    - params_count
    - name
    - key
    argTypes:
    - struct message_part_param*
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 320
    functionName: search_arg_mime_param_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - strstr
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_param_match(const struct message_part_param *params,\n\t\t\t
      \   unsigned int params_count,\n\t\t\t    const char *name, const char *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:329,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:335,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - mpctx
    - key
    argTypes:
    - struct search_mimepart_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 341
    functionName: search_arg_mime_language_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_language_match(struct search_mimepart_context
      *mpctx,\n\t\t\t       const char *key)"
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:350,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:355,1
    - Dst: search_arg_mime_substring_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:365,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:369,1
    - Dst: search_arg_mime_param_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:372,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:378,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:382,1
    - Dst: search_arg_mime_language_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:385,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:388,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:392,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:396,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:400,1
    - Dst: search_arg_mime_param_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:403,1
    - Dst: search_arg_mime_envelope_time_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:410,1
    - Dst: search_arg_mime_envelope_address_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:419,1
    - Dst: search_arg_mime_substring_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:425,1
    - Dst: search_arg_mime_substring_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:430,1
    - Dst: search_arg_mime_substring_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:435,1
    - Dst: search_arg_mime_parent_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:448,1
    - Dst: search_arg_mime_child_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:450,1
    - Dst: search_arg_mime_filename_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:456,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 80
    argCount: 2
    argNames:
    - mpctx
    - arg
    argTypes:
    - struct search_mimepart_context*
    - struct mail_search_mime_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 344
    functionDepth: 5
    functionLinenumber: 344
    functionLinenumberEnd: 464
    functionName: search_mime_arg_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 1
    functionsReached:
    - strcmp
    - search_arg_mime_language_match
    - search_arg_mime_substring_match
    - i_unreached
    - search_arg_mime_param_match
    - search_arg_mime_parent_match
    - strcasecmp
    - search_arg_mime_filename_match
    - search_arg_mime_child_match
    - search_arg_mime_envelope_time_match
    - search_arg_mime_envelope_address_match
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int search_mime_arg_match(struct search_mimepart_context *mpctx,\n\t\t\t\t
      struct mail_search_mime_arg *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: search_mime_arg_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:469,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:474,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:477,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - arg
    - mpctx
    argTypes:
    - struct mail_search_mime_arg*
    - struct search_mimepart_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 466
    functionDepth: 6
    functionLinenumber: 466
    functionLinenumberEnd: 480
    functionName: search_mime_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - ARG_SET_RESULT
    - search_mime_arg_match
    linkageType: ''
    returnType: void
    signature: "void search_mime_arg(struct mail_search_mime_arg *arg,\n\t\t\t    struct
      search_mimepart_context *mpctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:490,1
    - Dst: mail_search_mime_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:496,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:499,1
    - Dst: mail_search_mime_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:501,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:506,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:513,1
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:514,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - mpctx
    - args
    - parts
    argTypes:
    - struct search_mimepart_context*
    - struct mail_search_mime_arg*
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 523
    functionName: search_arg_mime_parts_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - array_append_space
    - array_count
    - mail_search_mime_args_foreach
    - array_pop_back
    - array_back_modifiable
    - mail_search_mime_args_reset
    linkageType: ''
    returnType: int
    signature: "int search_arg_mime_parts_match(struct search_mimepart_context *mpctx,\n\t\t\t\t
      \      struct mail_search_mime_arg *args,\n\t\t\t\t       struct message_part
      *parts)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:536,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:538,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:543,1
    - Dst: imap_bodystructure_parse_full
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:547,1
    - Dst: search_arg_mime_parts_match
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:554,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - mpctx
    - arg
    argTypes:
    - struct search_mimepart_context*
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 526
    functionDepth: 3
    functionLinenumber: 526
    functionLinenumberEnd: 556
    functionName: search_arg_match_mimepart
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_array_init
    - imap_bodystructure_parse_full
    - search_arg_mime_parts_match
    - mail_get_special
    linkageType: ''
    returnType: int
    signature: "int search_arg_match_mimepart(struct search_mimepart_context *mpctx,\n\t\t\t\t
      \    struct mail_search_arg *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_match_mimepart
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:561,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:566,1
    - Dst: ARG_SET_RESULT
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:569,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - arg
    - mpctx
    argTypes:
    - struct mail_search_arg*
    - struct search_mimepart_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 558
    functionDepth: 4
    functionLinenumber: 558
    functionLinenumberEnd: 572
    functionName: search_mimepart_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 0
    functionsReached:
    - search_arg_match_mimepart
    - ARG_SET_RESULT
    linkageType: ''
    returnType: void
    signature: "void search_mimepart_arg(struct mail_search_arg *arg,\n\t\t\t\tstruct
      search_mimepart_context *mpctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:580,1
    - Dst: mail_search_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:583,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:585,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - args
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 588
    functionName: index_search_mime_arg_match
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mail_search_args_foreach
    - str_free
    - pool_unref
    linkageType: ''
    returnType: int
    signature: "int index_search_mime_arg_match(struct mail_search_arg *args,\n\t\t\t\tstruct
      index_search_context *ctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: search_arg_mime_filename_deinit
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:599,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - arg
    - ATTR_UNUSED
    argTypes:
    - struct mail_search_mime_arg*
    - struct search_mimepart_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 590
    functionDepth: 2
    functionLinenumber: 590
    functionLinenumberEnd: 604
    functionName: search_mime_arg_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 1
    functionsReached:
    - search_arg_mime_filename_deinit
    linkageType: ''
    returnType: void
    signature: "void search_mime_arg_deinit(struct mail_search_mime_arg *arg,\n\t\t
      \      struct search_mimepart_context *mpctx ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:612,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:615,1
    - Dst: mail_search_mime_args_reset
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:618,1
    - Dst: mail_search_mime_args_foreach
      Src: /src/dovecot/src/lib-storage/index/index-search-mime.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - arg
    - ctx
    argTypes:
    - struct mail_search_arg*
    - struct index_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 621
    functionName: index_search_mime_arg_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-search-mime.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mail_search_mime_args_foreach
    - i_assert
    - mail_search_mime_args_reset
    linkageType: ''
    returnType: void
    signature: "void index_search_mime_arg_deinit(struct mail_search_arg *arg,\n\t\t\t\t
      \ struct index_search_context *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: INDEX_STORAGE_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INDEX_STORAGE_CONTEXT(obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct mail_search_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 20
    functionName: search_result_want_flag_updates
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-search.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool search_result_want_flag_updates(const struct mail_search_result
      *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:30,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - changes
    argTypes:
    - struct index_mailbox_sync_context*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 34
    functionName: index_sync_uidify_array
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: "void index_sync_uidify_array(struct index_mailbox_sync_context *ctx,\n\t\t\t\t
      \   const ARRAY_TYPE(seq_range) *changes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:30,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-search.c
    functionUses: 85
    functionsReached:
    - seq_range_array_add
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: void array_foreach(changes, range)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:40,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:41,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:42,1
    - Dst: index_sync_uidify_array
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:44,1
    - Dst: index_sync_uidify_array
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: index_sync_uidify
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-search.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - index_sync_uidify_array
    - array_count
    linkageType: ''
    returnType: void
    signature: void index_sync_uidify(struct index_mailbox_sync_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:53,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:53,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:55,1
    - Dst: search_result_want_flag_updates
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:58,1
    - Dst: index_sync_uidify
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 63
    functionName: index_sync_search_results_uidify
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-search.c
    functionUses: 0
    functionsReached:
    - index_sync_uidify
    - array_get
    - search_result_want_flag_updates
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void index_sync_search_results_uidify(struct index_mailbox_sync_context
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: search_result_want_flag_updates
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:74,1
    - Dst: index_search_result_update_flags
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:75,1
    - Dst: index_search_result_update_appends
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct index_mailbox_sync_context*
    - struct mail_search_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 65
    functionDepth: 10
    functionLinenumber: 65
    functionLinenumberEnd: 79
    functionName: search_result_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-search.c
    functionUses: 0
    functionsReached:
    - search_result_want_flag_updates
    - index_search_result_update_flags
    - index_search_result_update_appends
    linkageType: ''
    returnType: void
    signature: "void search_result_update(struct index_mailbox_sync_context *ctx,\n\t\t
      \    struct mail_search_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:86,1
    - Dst: search_result_update
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 81
    functionDepth: 11
    functionLinenumber: 81
    functionLinenumberEnd: 89
    functionName: index_sync_search_results_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-search.c
    functionUses: 0
    functionsReached:
    - array_get
    - search_result_update
    linkageType: ''
    returnType: void
    signature: void index_sync_search_results_update(struct index_mailbox_sync_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_search_results_update_expunges
      Src: /src/dovecot/src/lib-storage/index/index-sync-search.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: index_sync_search_results_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-search.c
    functionUses: 0
    functionsReached:
    - index_search_results_update_expunges
    linkageType: ''
    returnType: void
    signature: void index_sync_search_results_expunge(struct index_mailbox_sync_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cte
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: IS_CONVERTED_CTE
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_CONVERTED_CTE(cte)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:50,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:58,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:59,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:60,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:61,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:63,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - end_offset
    argTypes:
    - struct binary_ctx*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 67
    functionName: binary_copy_to
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - array_append_space
    - i_stream_create_crlf
    - i_stream_create_limit
    - i_stream_seek
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: void binary_copy_to(struct binary_ctx *ctx, uoff_t end_offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_header_filter_add
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:77,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 4
    argNames:
    - input
    - hdr
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 80
    functionName: binary_cte_filter_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - i_stream_header_filter_add
    - strlen
    linkageType: ''
    returnType: void
    signature: "void binary_cte_filter_callback(struct header_filter_istream *input,\n\t\t\t
      \  struct message_header_line *hdr,\n\t\t\t   bool *matched ATTR_UNUSED, void
      *context ATTR_UNUSED)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:100,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:103,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:104,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:105,1
    - Dst: message_decoder_parse_cte
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:108,1
    - Dst: message_parse_header_has_nuls
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:109,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:114,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:117,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:118,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:119,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:124,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:130,1
    - Dst: IS_CONVERTED_CTE
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:133,1
    - Dst: binary_copy_to
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:136,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:137,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:142,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:143,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:145,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:147,1
    - Dst: binary_copy_to
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:150,1
    - Dst: add_binary_part
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:162,1
    - Dst: binary_copy_to
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:165,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:176,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:179,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:181,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:184,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:190,1
    - Dst: i_stream_create_qp_decoder
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:193,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:197,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:201,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 77
    argCount: 3
    argNames:
    - ctx
    - part
    - include_hdr
    argTypes:
    - struct binary_ctx*
    - struct message_part*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 205
    functionName: add_binary_part
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 1
    functionsReached:
    - i_stream_create_crlf
    - message_parse_header_deinit
    - i_stream_create_qp_decoder
    - i_stream_seek
    - mail_storage_set_error
    - i_stream_create_base64_decoder
    - array_append_space
    - mail_set_critical
    - i_unreached
    - binary_copy_to
    - i_stream_get_error
    - message_parse_header_has_nuls
    - i_stream_get_name
    - message_parse_header_next
    - strcasecmp
    - i_stream_create_header_filter
    - i_assert
    - message_parse_header_init
    - N_ELEMENTS
    - IS_CONVERTED_CTE
    - message_decoder_parse_cte
    - i_stream_create_limit
    - i_stream_unref
    - add_binary_part
    linkageType: ''
    returnType: int
    signature: "int add_binary_part(struct binary_ctx *ctx, const struct message_part
      *part,\n\t\tbool include_hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:213,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:214,1
    - Dst: safe_mkstemp_hostpid
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:215,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:217,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:217,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:218,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:223,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:223,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:225,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - path_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 207
    functionDepth: 4
    functionLinenumber: 207
    functionLinenumberEnd: 230
    functionName: fd_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mail_user_set_get_temp_prefix
    - mail_event
    - i_close_fd
    - i_unlink
    - safe_mkstemp_hostpid
    - e_error
    linkageType: ''
    returnType: int
    signature: int fd_callback(const char **path_r, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:236,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct binary_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 238
    functionName: binary_streams_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void binary_streams_free(struct binary_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:244,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:251,1
    - Dst: binary_parts_update
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:253,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:255,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:274,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - part
    - msg_bin_parts
    argTypes:
    - struct binary_ctx*
    - struct message_part*
    - struct message_binary_part**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 279
    functionName: binary_parts_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 1
    functionsReached:
    - i_zero
    - p_new
    - binary_parts_update
    - array_get_modifiable
    - INDEX_MAIL
    linkageType: ''
    returnType: void
    signature: "void binary_parts_update(struct binary_ctx *ctx, const struct message_part
      *part,\n\t\t    struct message_binary_part **msg_bin_parts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:283,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:286,1
    - Dst: message_binary_part_serialize
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:287,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct binary_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 290
    functionName: binary_parts_cache
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_cache_add
    - t_buffer_create
    - message_binary_part_serialize
    linkageType: ''
    returnType: void
    signature: void binary_parts_cache(struct binary_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:298,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:299,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 305
    functionName: blocks_get_streams
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_get
    - t_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream **blocks_get_streams(struct binary_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:317,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:323,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:324,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:330,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:331,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:335,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:340,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:343,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:346,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:346,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:355,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:358,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:358,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:359,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 2
    argNames:
    - ctx
    - full_input
    argTypes:
    - struct binary_ctx*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 361
    functionName: blocks_count_lines
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - array_get_modifiable
    - i_stream_read_eof
    - i_stream_have_bytes_left
    - memchr
    - i_stream_skip
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int blocks_count_lines(struct binary_ctx *ctx, struct istream *full_input)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:369,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:374,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:376,1
    - Dst: mail_storage_free_binary_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:378,1
    - Dst: mail_get_stream_because
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:379,1
    - Dst: add_binary_part
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:382,1
    - Dst: binary_streams_free
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:383,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:387,1
    - Dst: i_streams_merge
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:388,1
    - Dst: blocks_get_streams
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:388,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:392,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:394,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:394,1
    - Dst: blocks_count_lines
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:397,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:400,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:404,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:405,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:406,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:408,1
    - Dst: binary_streams_free
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:409,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:414,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:424,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:424,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:426,1
    - Dst: binary_parts_update
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:430,1
    - Dst: binary_parts_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:432,1
    - Dst: binary_streams_free
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:434,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 6
    argNames:
    - _mail
    - part
    - include_hdr
    - reason
    - binary_r
    - converted_r
    argTypes:
    - struct mail*
    - struct message_part*
    - bool
    - char*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 363
    functionDepth: 5
    functionLinenumber: 363
    functionLinenumberEnd: 439
    functionName: index_mail_read_binary_to_cache
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - blocks_count_lines
    - array_count
    - i_stream_seek
    - i_stream_create_from_data
    - mail_storage_set_error
    - binary_parts_update
    - mail_set_critical
    - i_stream_set_name
    - timeout_add
    - i_stream_have_bytes_left
    - mail_get_stream_because
    - i_stream_get_error
    - binary_streams_free
    - i_stream_get_name
    - i_zero
    - blocks_get_streams
    - mail_storage_free_binary_cache
    - i_assert
    - i_streams_merge
    - INDEX_MAIL
    - t_array_init
    - binary_parts_cache
    - i_stream_unref
    - add_binary_part
    linkageType: ''
    returnType: int
    signature: "int index_mail_read_binary_to_cache(struct mail *_mail,\n\t\t\t\tconst
      struct message_part *part,\n\t\t\t\tbool include_hdr, const char *reason,\n\t\t\t\tbool
      *binary_r, bool *converted_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:451,1
    - Dst: index_mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:452,1
    - Dst: message_binary_part_deserialize
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:456,1
    - Dst: mail_set_mail_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 441
    functionDepth: 9
    functionLinenumber: 441
    functionLinenumberEnd: 464
    functionName: get_cached_binary_parts
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - message_binary_part_deserialize
    - mail_set_mail_cache_corrupted
    - t_buffer_create
    - index_mail_cache_lookup_field
    linkageType: ''
    returnType: bool
    signature: bool get_cached_binary_parts(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: msg_part_find
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - parts
    - physical_pos
    argTypes:
    - struct message_part*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 479
    functionName: msg_part_find
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 1
    functionsReached:
    - msg_part_find
    linkageType: ''
    returnType: struct message_part
    signature: 'struct message_part *

      msg_part_find(struct message_part *parts, uoff_t physical_pos)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:487,1
    - Dst: mail_get_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:494,1
    - Dst: get_cached_binary_parts
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:498,1
    - Dst: message_parts_have_nuls
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:500,1
    - Dst: index_mail_read_binary_to_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:503,1
    - Dst: msg_part_find
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:519,1
    - Dst: mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:522,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:522,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 4
    argNames:
    - _mail
    - part
    - include_hdr
    - bprops_r
    argTypes:
    - struct mail*
    - struct message_part*
    - bool
    - struct mail_binary_properties*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 481
    functionDepth: 10
    functionLinenumber: 481
    functionLinenumberEnd: 554
    functionName: index_mail_get_binary_properties
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - message_parts_have_nuls
    - mail_set_cache_corrupted
    - index_mail_read_binary_to_cache
    - t_strdup_printf
    - get_cached_binary_parts
    - INDEX_MAIL
    - msg_part_find
    - mail_get_parts
    linkageType: ''
    returnType: int
    signature: "int index_mail_get_binary_properties(struct mail *_mail,\n\t\t\t\t
      const struct message_part *part,\n\t\t\t\t bool include_hdr,\n\t\t\t\t struct
      mail_binary_properties *bprops_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:562,1
    - Dst: index_mail_get_binary_properties
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:568,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:577,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:578,1
    - Dst: index_mail_read_binary_to_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:582,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:598,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:599,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:602,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:603,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:604,1
    - Dst: mail_storage_free_binary_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:605,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-storage/index/index-mail-binary.c:608,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 5
    argNames:
    - _mail
    - part
    - include_hdr
    - bprops_r
    - stream_r
    argTypes:
    - struct mail*
    - struct message_part*
    - bool
    - struct mail_binary_properties*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 556
    functionDepth: 11
    functionLinenumber: 556
    functionLinenumberEnd: 611
    functionName: index_mail_get_binary_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    functionUses: 0
    functionsReached:
    - i_stream_create_crlf
    - index_mail_get_binary_properties
    - timeout_reset
    - index_mail_read_binary_to_cache
    - i_stream_create_limit
    - i_stream_ref
    - INDEX_MAIL
    - i_stream_seek
    - i_stream_unref
    - mail_storage_free_binary_cache
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int index_mail_get_binary_stream(struct mail *_mail,\n\t\t\t\t const
      struct message_part *part,\n\t\t\t\t bool include_hdr,\n\t\t\t\t struct mail_binary_properties
      *bprops_r,\n\t\t\t\t struct istream **stream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mail
    - ','
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: HEADER_MATCH_USABLE
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEADER_MATCH_USABLE(mail, num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 164
    functionName: INDEX_MAIL
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.h
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INDEX_MAIL(s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_want_cache
      Src: /src/dovecot/src/lib-storage/index/index-mail.h:281,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-mail.h:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - mail
    - field
    - data
    - data_size
    argTypes:
    - struct index_mail*
    - enum index_cache_field
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 277
    functionDepth: 13
    functionLinenumber: 277
    functionLinenumberEnd: 285
    functionName: index_mail_cache_add_if_wanted
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-mail.h
    functionUses: 1
    functionsReached:
    - index_mail_want_cache
    - index_mail_cache_add
    linkageType: ''
    returnType: bool
    signature: "bool index_mail_cache_add_if_wanted(struct index_mail *mail, enum
      index_cache_field field,\n\t\t\t       const void *data, size_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:41,1
    - Dst: struct mail_save_context*::part_is_attachment
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:47,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - hdr
    - context
    argTypes:
    - struct istream_attachment_header*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 52
    functionName: index_attachment_want
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - i_zero
    - struct mail_save_context*::part_is_attachment
    - str_begins_icase_with
    linkageType: ''
    returnType: bool
    signature: "bool index_attachment_want(const struct istream_attachment_header
      *hdr,\n\t\t\t\t  void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:61,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:62,1
    - Dst: safe_mkstemp_hostpid
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:63,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:65,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:66,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:69,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:69,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:70,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:71,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 76
    functionName: index_attachment_open_temp_fd
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - mail_user_set_get_temp_prefix
    - i_close_fd
    - unlink
    - safe_mkstemp_hostpid
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: int index_attachment_open_temp_fd(void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:91,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:96,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:99,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:102,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:103,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:107,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:108,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:111,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:114,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:115,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - info
    - output_r
    - ATTR_UNUSED
    - context
    argTypes:
    - struct istream_attachment_info*
    - struct ostream**
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 121
    functionName: index_attachment_open_ostream
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - fs_file_init
    - p_strdup
    - fs_write_stream
    - array_append_space
    - strlen
    - guid_128_to_string
    - t_strdup_printf
    - guid_128_generate
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int index_attachment_open_ostream(struct istream_attachment_info *info,\n\t\t\t
      \     struct ostream **output_r,\n\t\t\t      const char **error_r ATTR_UNUSED,
      void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:131,1
    - Dst: fs_write_stream_abort_error
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:134,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:135,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:136,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:137,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:138,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:141,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - output
    - success
    - error
    - context
    argTypes:
    - struct ostream*
    - bool
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 147
    functionName: index_attachment_close_ostream
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - t_strdup_printf
    - array_pop_back
    - fs_file_path
    - fs_write_stream_abort_error
    - i_assert
    - fs_write_stream_finish
    - fs_file_last_error
    linkageType: ''
    returnType: int
    signature: "int index_attachment_close_ostream(struct ostream *output, bool success,\n\t\t\t
      \      const char **error, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:158,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:163,1
    - Dst: hash_format_init
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:165,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:168,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:176,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:177,1
    - Dst: i_stream_create_attachment_extractor
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:180,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - fs
    - input
    argTypes:
    - struct mail_save_context*
    - struct fs*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 149
    functionDepth: 4
    functionLinenumber: 149
    functionLinenumberEnd: 183
    functionName: index_attachment_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - i_panic
    - p_new
    - p_array_init
    - hash_format_init
    - i_assert
    - i_stream_create_attachment_extractor
    linkageType: ''
    returnType: void
    signature: "void index_attachment_save_begin(struct mail_save_context *ctx,\n\t\t\t\t
      struct fs *fs, struct istream *input)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:193,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:194,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:195,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - output
    argTypes:
    - struct mail_save_context*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 198
    functionName: save_check_write_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - o_stream_get_name
    - mail_storage_set_error_from_errno
    - mail_set_critical
    linkageType: ''
    returnType: int
    signature: "int save_check_write_error(struct mail_save_context *ctx,\n\t\t\t\t
      \ struct ostream *output)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:211,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:213,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:214,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:215,1
    - Dst: index_mail_cache_parse_continue
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:217,1
    - Dst: i_stream_attachment_extractor_can_retry
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:218,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:225,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:226,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:227,1
    - Dst: save_check_write_error
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:231,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 200
    functionDepth: 15
    functionLinenumber: 200
    functionLinenumberEnd: 235
    functionName: index_attachment_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - index_mail_cache_parse_continue
    - mail_set_critical
    - i_stream_get_data
    - i_stream_skip
    - i_stream_get_error
    - i_stream_attachment_extractor_can_retry
    - save_check_write_error
    - o_stream_nsend
    - i_stream_get_name
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int index_attachment_save_continue(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:241,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 244
    functionName: index_attachment_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int index_attachment_save_finish(struct mail_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:251,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 255
    functionName: index_attachment_save_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void index_attachment_save_free(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 262
    functionName: index_attachment_save_get_extrefs
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      index_attachment_save_get_extrefs(struct mail_save_context *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:272,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:273,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:274,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:275,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:275,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - storage
    - fs
    - name
    argTypes:
    - struct mail_storage*
    - struct fs*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 264
    functionDepth: 4
    functionLinenumber: 264
    functionLinenumberEnd: 278
    functionName: index_attachment_delete_real
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - fs_delete
    - t_strdup_printf
    - mail_storage_set_critical
    - fs_file_last_error
    linkageType: ''
    returnType: int
    signature: "int index_attachment_delete_real(struct mail_storage *storage,\n\t\t\t
      \    struct fs *fs, const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_attachment_delete_real
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - storage
    - fs
    - name
    argTypes:
    - struct mail_storage*
    - struct fs*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 280
    functionDepth: 5
    functionLinenumber: 280
    functionLinenumberEnd: 287
    functionName: index_attachment_delete
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - index_attachment_delete_real
    linkageType: ''
    returnType: int
    signature: "int index_attachment_delete(struct mail_storage *storage,\n\t\t\t
      \   struct fs *fs, const char *name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:302,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:303,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:306,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:308,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:310,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:314,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:316,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:318,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:319,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - str
    - extrefs
    argTypes:
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 321
    functionName: index_attachment_append_extrefs
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - str_append_c
    - str_len
    linkageType: ''
    returnType: void
    signature: "void index_attachment_append_extrefs(string_t *str,\n\tconst ARRAY_TYPE(mail_attachment_extref)
      *extrefs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:302,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:303,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:306,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:308,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:310,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:314,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:316,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:318,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:319,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 320
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 85
    functionsReached:
    - str_append
    - str_printfa
    - str_append_c
    - str_len
    linkageType: ''
    returnType: void
    signature: void array_foreach(extrefs, extref)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - str
    - extref
    argTypes:
    - char*
    - struct mail_attachment_extref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 354
    functionName: parse_extref_decode_options
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool parse_extref_decode_options(const char *str,\n\t\t\t    struct
      mail_attachment_extref *extref)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:364,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:365,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:376,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:377,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:378,1
    - Dst: parse_extref_decode_options
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:380,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:386,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:387,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - line
    - pool
    - extrefs
    argTypes:
    - char*
    - pool_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 390
    functionName: index_attachment_parse_extrefs
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - parse_extref_decode_options
    - array_push_back
    - str_array_length
    - t_strsplit
    - str_to_uoff
    linkageType: ''
    returnType: bool
    signature: "bool index_attachment_parse_extrefs(const char *line, pool_t pool,\n\t\t\t\t
      \   ARRAY_TYPE(mail_attachment_extref) *extrefs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:397,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:407,1
    - Dst: index_attachment_parse_extrefs
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:408,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:408,1
    - Dst: istream_attachment_connector_begin
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:413,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:415,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:416,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:418,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:425,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:429,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:429,1
    - Dst: i_stream_create_fs_file
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:430,1
    - Dst: istream_attachment_connector_add
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:432,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:436,1
    - Dst: istream_attachment_connector_abort
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:438,1
    - Dst: istream_attachment_connector_finish
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:443,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:444,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:444,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:445,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-attachment.c:446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 7
    argNames:
    - fs
    - attachment_dir
    - path_suffix
    - stream
    - full_size
    - ext_refs
    - error_r
    argTypes:
    - struct fs*
    - char*
    - char*
    - struct istream**
    - uoff_t
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 449
    functionName: index_attachment_stream_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-attachment.c
    functionUses: 0
    functionsReached:
    - fs_file_init
    - istream_attachment_connector_finish
    - MAX_BASE64_DECODED_SIZE
    - fs_set_metadata
    - i_stream_set_name
    - t_strdup_printf
    - istream_attachment_connector_begin
    - array_foreach
    - i_stream_create_fs_file
    - istream_attachment_connector_abort
    - pool_datastack_create
    - t_array_init
    - ARRAY_TYPE
    - i_stream_unref
    - istream_attachment_connector_add
    - i_stream_get_name
    - index_attachment_parse_extrefs
    linkageType: ''
    returnType: int
    signature: "int index_attachment_stream_get(struct fs *fs, const char *attachment_dir,\n\t\t\t\tconst
      char *path_suffix,\n\t\t\t\tstruct istream **stream, uoff_t full_size,\n\t\t\t\tconst
      char *ext_refs, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:80,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:83,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:87,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:90,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:91,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - program
    argTypes:
    - struct mail_search_sort_program*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 92
    functionName: index_sort_list_init_string
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    - mail_index_ext_register
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void index_sort_list_init_string(struct mail_search_sort_program *program)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct mail_sort_node*
    - struct mail_sort_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: sort_node_seq_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int sort_node_seq_cmp(const struct mail_sort_node *n1,\n\t\t\t     const
      struct mail_sort_node *n2)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:110,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:111,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:113,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:114,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:116,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:131,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sort_string_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 133
    functionName: index_sort_generate_seqs
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_push_back
    - array_get
    - array_clear
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void index_sort_generate_seqs(struct sort_string_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:141,1
    - Dst: index_sort_generate_seqs
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:144,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:145,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:146,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:148,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:150,1
    - Dst: index_sort_node_add
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sort_string_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 156
    functionName: index_sort_reget_sort_ids
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_get
    - array_clear
    - index_sort_generate_seqs
    - index_sort_node_add
    - i_assert
    linkageType: ''
    returnType: void
    signature: void index_sort_reget_sort_ids(struct sort_string_context *ctx)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext_full
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:166,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:189,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:191,1
    - Dst: index_sort_list_reset_broken
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:193,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:193,1
    - Dst: mail_index_ext_get_reset_id
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:210,1
    - Dst: index_sort_reget_sort_ids
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:220,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:226,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:228,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct sort_string_context*
    - struct mail_sort_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 231
    functionName: index_sort_node_add
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 1
    functionsReached:
    - index_sort_reget_sort_ids
    - mail_index_lookup_uid
    - array_push_back
    - index_sort_list_reset_broken
    - t_strdup_printf
    - mail_index_lookup_ext_full
    - i_assert
    - mail_index_ext_get_reset_id
    linkageType: ''
    returnType: void
    signature: "void index_sort_node_add(struct sort_string_context *ctx,\n\t\t\t\tstruct
      mail_sort_node *node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:239,1
    - Dst: index_sort_node_add
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 233
    functionDepth: 4
    functionLinenumber: 233
    functionLinenumberEnd: 248
    functionName: index_sort_list_add_string
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - i_zero
    - index_sort_node_add
    linkageType: ''
    returnType: void
    signature: "void index_sort_list_add_string(struct mail_search_sort_program *program,\n\t\t\t\tstruct
      mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:256,1
    - Dst: index_sort_node_cmp_type
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct mail_sort_node*
    - struct mail_sort_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 263
    functionName: sort_node_zero_string_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - strcmp
    - index_sort_node_cmp_type
    linkageType: ''
    returnType: int
    signature: "int sort_node_zero_string_cmp(const struct mail_sort_node *n1,\n\t\t\t\t
      \    const struct mail_sort_node *n2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:276,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:278,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:279,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:280,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:282,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:285,1
    - Dst: index_sort_header_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:285,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:291,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:292,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sort_string_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 294
    functionName: index_sort_zeroes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - str_c
    - str_len
    - array_get_modifiable
    - if
    - index_sort_header_get
    - i_new
    - i_assert
    - str_new
    linkageType: ''
    returnType: void
    signature: void index_sort_zeroes(struct sort_string_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:315,1
    - Dst: index_sort_header_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:340,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:342,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:343,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:343,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 4
    argNames:
    - ctx
    - idx
    - str
    - result_r
    argTypes:
    - struct sort_string_context*
    - uint32_t
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 358
    functionName: index_sort_get_expunged_string
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - str_len
    - array_get
    - index_sort_header_get
    linkageType: ''
    returnType: bool
    signature: "bool index_sort_get_expunged_string(struct sort_string_context *ctx,
      uint32_t idx,\n\t\t\t       string_t *str, const char **result_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:378,1
    - Dst: index_sort_header_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:379,1
    - Dst: index_sort_get_expunged_string
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:384,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:392,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:393,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:393,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - ctx
    - idx
    - node
    - str_r
    argTypes:
    - struct sort_string_context*
    - uint32_t
    - struct mail_sort_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 395
    functionName: index_sort_get_string
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - t_str_new
    - str_len
    - index_sort_header_get
    - index_sort_get_expunged_string
    linkageType: ''
    returnType: bool
    signature: "bool index_sort_get_string(struct sort_string_context *ctx,\n\t\t
      \     uint32_t idx, struct mail_sort_node *node,\n\t\t      const char **str_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:413,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:414,1
    - Dst: index_sort_get_string
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:418,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:419,1
    - Dst: index_sort_get_string
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:425,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:428,1
    - Dst: index_sort_get_string
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:458,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 5
    argNames:
    - ctx
    - key
    - start_idx
    - idx_r
    - prev_str_r
    argTypes:
    - struct sort_string_context*
    - char*
    - unsigned int
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 403
    functionDepth: 3
    functionLinenumber: 403
    functionLinenumberEnd: 464
    functionName: index_sort_bsearch
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - i_assert
    - strcmp
    - index_sort_get_string
    linkageType: ''
    returnType: void
    signature: "void index_sort_bsearch(struct sort_string_context *ctx, const char
      *key,\n\t\t   unsigned int start_idx, unsigned int *idx_r,\n\t\t   const char
      **prev_str_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:476,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:476,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:477,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:479,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:480,1
    - Dst: index_sort_get_string
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:485,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:486,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:487,1
    - Dst: index_sort_node_cmp_type
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:501,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:506,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:510,1
    - Dst: index_sort_bsearch
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:519,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:521,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:530,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:532,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:536,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sort_string_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 466
    functionDepth: 4
    functionLinenumber: 466
    functionLinenumberEnd: 538
    functionName: index_sort_merge
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - strcmp
    - index_sort_get_string
    - array_push_back
    - array_get_modifiable
    - array_get
    - index_sort_node_cmp_type
    - array_count
    - index_sort_bsearch
    - array_free
    - array_append
    linkageType: ''
    returnType: void
    signature: void index_sort_merge(struct sort_string_context *ctx)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:553,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:571,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:575,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:578,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:589,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:603,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:606,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:611,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:616,1
    - Dst: index_sort_get_string
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:625,1
    - Dst: index_sort_get_string
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:635,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:642,1
    - Dst: index_sort_get_string
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:649,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:658,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:664,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:666,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:668,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:675,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:689,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:691,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:696,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:704,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:706,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:707,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:711,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 110
    argCount: 4
    argNames:
    - ctx
    - left_idx
    - right_idx
    - reason_r
    argTypes:
    - struct sort_string_context*
    - unsigned int
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 540
    functionDepth: 3
    functionLinenumber: 540
    functionLinenumberEnd: 714
    functionName: index_sort_add_ids_range
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - strcmp
    - index_sort_get_string
    - mail_index_lookup_uid
    - array_get_modifiable
    - t_strdup_printf
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int index_sort_add_ids_range(struct sort_string_context *ctx,\n\t\t\t
      unsigned int left_idx, unsigned int right_idx,\n\t\t\t const char **reason_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:722,1
    - Dst: index_sort_add_ids_range
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:736,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - reason_r
    argTypes:
    - struct sort_string_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 716
    functionDepth: 4
    functionLinenumber: 716
    functionLinenumberEnd: 740
    functionName: index_sort_add_sort_ids
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - array_get
    - index_sort_add_ids_range
    linkageType: ''
    returnType: int
    signature: int index_sort_add_sort_ids(struct sort_string_context *ctx, const
      char **reason_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_reset_inc
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:756,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:766,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:772,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:776,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:777,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:777,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:780,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:782,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:787,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:791,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:792,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:794,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:797,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sort_string_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 742
    functionDepth: 3
    functionLinenumber: 742
    functionLinenumberEnd: 798
    functionName: index_sort_write_changed_sort_ids
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_push_back
    - array_get
    - mail_index_is_expunged
    - mail_index_update_ext
    - mail_index_ext_reset_inc
    - array_count
    - ARRAY_TYPE
    - array_sort
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void index_sort_write_changed_sort_ids(struct sort_string_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_sort_node_cmp_type
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:810,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct mail_sort_node*
    - struct mail_sort_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 813
    functionName: sort_node_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - index_sort_node_cmp_type
    linkageType: ''
    returnType: int
    signature: "int sort_node_cmp(const struct mail_sort_node *n1,\n\t\t\t const struct
      mail_sort_node *n2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:824,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:829,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:831,1
    - Dst: index_sort_node_add
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:833,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sort_string_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 815
    functionDepth: 4
    functionLinenumber: 815
    functionLinenumberEnd: 844
    functionName: index_sort_add_missing
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_get
    - i_assert
    - index_sort_node_add
    linkageType: ''
    returnType: void
    signature: void index_sort_add_missing(struct sort_string_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:852,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:855,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:856,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:858,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - reason
    argTypes:
    - struct sort_string_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 846
    functionDepth: 4
    functionLinenumber: 846
    functionLinenumberEnd: 862
    functionName: index_sort_list_reset_broken
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 1
    functionsReached:
    - mailbox_set_critical
    - array_foreach_modifiable
    - array_append_array
    - array_clear
    linkageType: ''
    returnType: void
    signature: "void index_sort_list_reset_broken(struct sort_string_context *ctx,\n\t\t\t\t\t
      const char *reason)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:873,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:875,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:877,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:878,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:879,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:881,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:885,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:887,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:891,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:892,1
    - Dst: index_sort_generate_seqs
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:898,1
    - Dst: index_sort_add_missing
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:900,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:902,1
    - Dst: index_sort_zeroes
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:905,1
    - Dst: array_reverse
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:915,1
    - Dst: array_reverse
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:916,1
    - Dst: index_sort_merge
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:920,1
    - Dst: index_sort_add_sort_ids
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:922,1
    - Dst: index_sort_list_reset_broken
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:926,1
    - Dst: index_sort_write_changed_sort_ids
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:928,1
    - Dst: array_reverse
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:932,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:935,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:936,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:940,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:943,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:944,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:945,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:952,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sort-string.c:953,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 1
    argNames:
    - program
    argTypes:
    - struct mail_search_sort_program*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 864
    functionDepth: 5
    functionLinenumber: 864
    functionLinenumberEnd: 955
    functionName: index_sort_list_finish_string
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort-string.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - index_sort_write_changed_sort_ids
    - array_push_back
    - array_reverse
    - array_get
    - index_sort_list_reset_broken
    - index_sort_add_missing
    - pool_unref
    - array_count
    - array_clear
    - index_sort_merge
    - index_sort_generate_seqs
    - array_sort
    - index_sort_zeroes
    - array_is_created
    - i_free
    - array_free
    - index_sort_add_sort_ids
    linkageType: ''
    returnType: void
    signature: void index_sort_list_finish_string(struct mail_search_sort_program
      *program)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_get_base_subject_cased
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:72,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:72,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:80,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:85,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:86,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:102,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - subject
    - node
    argTypes:
    - struct subject_gather_context*
    - char*
    - struct mail_thread_root_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 109
    functionName: add_base_subject
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - imap_get_base_subject_cased
    - p_strdup
    - hash_table_update
    - pool_datastack_create
    - hash_table_lookup_full
    - hash_table_insert
    linkageType: ''
    returnType: void
    signature: "void add_base_subject(struct subject_gather_context *ctx, const char
      *subject,\n\t\t struct mail_thread_root_node *node)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - struct mail_thread_child_node*
    - struct mail_thread_child_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 124
    functionName: mail_thread_child_node_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mail_thread_child_node_cmp(const struct mail_thread_child_node
      *c1,\n\t\t\t\t      const struct mail_thread_child_node *c2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_thread_child_node_cmp
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct mail_thread_root_node*
    - struct mail_thread_root_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: mail_thread_root_node_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - mail_thread_child_node_cmp
    linkageType: ''
    returnType: int
    signature: "int mail_thread_root_node_cmp(const struct mail_thread_root_node *r1,\n\t\t\t\t
      \    const struct mail_thread_root_node *r2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:137,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:138,1
    - Dst: MAIL_THREAD_NODE_EXISTS
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:138,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - idx
    argTypes:
    - struct thread_finish_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 141
    functionName: thread_lookup_existing
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - i_assert
    - MAIL_THREAD_NODE_EXISTS
    - array_idx
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t thread_lookup_existing(struct thread_finish_context *ctx,
      uint32_t idx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: thread_lookup_existing
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:149,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:151,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:154,1
    - Dst: mail_get_date
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:160,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - child
    argTypes:
    - struct thread_finish_context*
    - struct mail_thread_child_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 167
    functionName: thread_child_node_fill
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - mail_get_date
    - i_unreached
    - thread_lookup_existing
    - mail_set_uid
    - mail_get_received_date
    linkageType: ''
    returnType: void
    signature: "void thread_child_node_fill(struct thread_finish_context *ctx,\n\t\t
      \      struct mail_thread_child_node *child)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:177,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:178,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:181,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:183,1
    - Dst: thread_lookup_existing
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:186,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:188,1
    - Dst: thread_child_node_fill
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:192,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:194,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - parent_idx
    - sorted_children
    argTypes:
    - struct thread_finish_context*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 200
    functionName: thread_sort_children
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - i_zero
    - thread_lookup_existing
    - array_push_back
    - thread_child_node_fill
    - array_get
    - array_clear
    - array_sort
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void thread_sort_children(struct thread_finish_context *ctx, uint32_t
      parent_idx,\n\t\t     ARRAY_TYPE(mail_thread_child_node) *sorted_children)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:208,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:212,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:215,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:219,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:220,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:221,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:224,1
    - Dst: thread_sort_children
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:231,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:233,1
    - Dst: thread_lookup_existing
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:240,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:241,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:244,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:246,1
    - Dst: add_base_subject
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct thread_finish_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 202
    functionDepth: 4
    functionLinenumber: 202
    functionLinenumberEnd: 250
    functionName: gather_base_subjects
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - i_array_init
    - hash_table_create
    - add_base_subject
    - thread_lookup_existing
    - array_get_modifiable
    - i_unreached
    - thread_sort_children
    - mail_set_uid
    - nearest_power
    - mail_get_first_header
    - ARRAY_TYPE
    - array_front
    linkageType: ''
    returnType: void
    signature: void gather_base_subjects(struct thread_finish_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:262,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - parent_idx
    - child_idx
    argTypes:
    - struct thread_finish_context*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 267
    functionName: thread_add_shadow_child
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - array_idx_get_space
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: "void thread_add_shadow_child(struct thread_finish_context *ctx,\n\t\t\t\t
      \   uint32_t parent_idx, uint32_t child_idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:277,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:281,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:284,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:287,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:289,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:295,1
    - Dst: thread_add_shadow_child
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:300,1
    - Dst: thread_add_shadow_child
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:317,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:324,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:325,1
    - Dst: thread_add_shadow_child
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:329,1
    - Dst: thread_add_shadow_child
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:330,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:337,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 2
    argNames:
    - ctx
    - cur
    argTypes:
    - struct thread_finish_context*
    - struct mail_thread_root_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 343
    functionName: mail_thread_root_thread_merge
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - i_zero
    - thread_add_shadow_child
    - array_idx_modifiable
    - array_push_back
    - array_get_modifiable
    - array_count
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_thread_root_thread_merge(struct thread_finish_context *ctx,\n\t\t\t\t\t
      \ struct mail_thread_root_node *cur)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:351,1
    - Dst: mail_thread_root_thread_merge
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:354,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct thread_finish_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 362
    functionName: merge_subject_threads
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - mail_thread_root_thread_merge
    - array_front_modifiable
    linkageType: ''
    returnType: bool
    signature: bool merge_subject_threads(struct thread_finish_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:366,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:372,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:373,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:374,1
    - Dst: thread_sort_children
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:385,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:387,1
    - Dst: thread_child_node_fill
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:392,1
    - Dst: thread_child_node_fill
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:399,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:402,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:403,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct thread_finish_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 364
    functionDepth: 4
    functionLinenumber: 364
    functionLinenumberEnd: 404
    functionName: sort_root_nodes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_get_modifiable
    - thread_child_node_fill
    - thread_sort_children
    - array_get
    - ARRAY_TYPE
    - array_front
    - array_sort
    - array_free
    linkageType: ''
    returnType: void
    signature: void sort_root_nodes(struct thread_finish_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 413
    functionName: mail_thread_root_node_idx_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mail_thread_root_node_idx_cmp(const void *key, const void *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:425,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:428,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:436,1
    - Dst: MAIL_THREAD_NODE_EXISTS
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:437,1
    - Dst: thread_child_node_fill
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:441,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:446,1
    - Dst: bsearch
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:449,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:451,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:456,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - record_count
    argTypes:
    - struct thread_finish_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 457
    functionName: sort_root_nodes_ref2
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - bsearch
    - array_idx
    - array_get_modifiable
    - thread_child_node_fill
    - MAIL_THREAD_NODE_EXISTS
    - array_front
    - array_sort
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sort_root_nodes_ref2(struct thread_finish_context *ctx,\n\t\t\t\t
      uint32_t record_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:469,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:470,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:478,1
    - Dst: MAIL_THREAD_NODE_EXISTS
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:483,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:490,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:493,1
    - Dst: MAIL_THREAD_NODE_EXISTS
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:495,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:504,1
    - Dst: MAIL_THREAD_NODE_EXISTS
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:505,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:508,1
    - Dst: thread_add_shadow_child
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:511,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - record_count
    argTypes:
    - struct thread_finish_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 459
    functionDepth: 2
    functionLinenumber: 459
    functionLinenumberEnd: 513
    functionName: mail_thread_create_shadows
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - i_zero
    - thread_add_shadow_child
    - array_push_back
    - array_idx
    - MAIL_THREAD_NODE_EXISTS
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_thread_create_shadows(struct thread_finish_context *ctx,\n\t\t\t\t
      \      uint32_t record_count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:518,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:523,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:523,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:524,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:526,1
    - Dst: mail_thread_create_shadows
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:528,1
    - Dst: sort_root_nodes
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:534,1
    - Dst: gather_base_subjects
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:537,1
    - Dst: merge_subject_threads
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:539,1
    - Dst: sort_root_nodes
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:541,1
    - Dst: sort_root_nodes_ref2
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:545,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:548,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - thread_type
    argTypes:
    - struct thread_finish_context*
    - enum mail_thread_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 515
    functionDepth: 5
    functionLinenumber: 515
    functionLinenumberEnd: 550
    functionName: mail_thread_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - sort_root_nodes
    - i_unreached
    - I_MIN
    - merge_subject_threads
    - mail_thread_create_shadows
    - sort_root_nodes_ref2
    - array_count
    - array_idx_get_space
    - gather_base_subjects
    linkageType: ''
    returnType: void
    signature: "void mail_thread_finish(struct thread_finish_context *ctx,\n\t\t\t
      \      enum mail_thread_type thread_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:560,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:567,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:569,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:570,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - iter
    - root
    argTypes:
    - struct mail_thread_iterate_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 574
    functionName: nodes_change_uids_to_seqs
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - mailbox_get_seq_range
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void nodes_change_uids_to_seqs(struct mail_thread_iterate_context *iter,
      bool root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:582,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:583,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:588,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mail_thread_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 591
    functionName: mail_thread_iterate_fill_root
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - i_array_init
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void mail_thread_iterate_fill_root(struct mail_thread_iterate_context
      *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:599,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:603,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:604,1
    - Dst: thread_sort_children
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:605,1
    - Dst: nodes_change_uids_to_seqs
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:608,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:609,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - parent_iter
    - parent_idx
    argTypes:
    - struct mail_thread_iterate_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 593
    functionDepth: 4
    functionLinenumber: 593
    functionLinenumberEnd: 611
    functionName: mail_thread_iterate_children
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - nodes_change_uids_to_seqs
    - thread_sort_children
    - event_reason_begin
    - event_reason_end
    - i_new
    linkageType: ''
    returnType: struct mail_thread_iterate_context
    signature: "struct mail_thread_iterate_context *\nmail_thread_iterate_children(struct
      mail_thread_iterate_context *parent_iter,\n\t\t\t     uint32_t parent_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:622,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:623,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:629,1
    - Dst: mail_thread_finish
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:630,1
    - Dst: mail_thread_iterate_fill_root
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:632,1
    - Dst: nodes_change_uids_to_seqs
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:634,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:635,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - cache
    - tmp_mail
    - thread_type
    - return_seqs
    argTypes:
    - struct mail_thread_cache*
    - struct mail*
    - enum mail_thread_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 613
    functionDepth: 6
    functionLinenumber: 613
    functionLinenumberEnd: 637
    functionName: mail_thread_iterate_init_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 1
    functionsReached:
    - nodes_change_uids_to_seqs
    - mail_thread_iterate_fill_root
    - event_reason_begin
    - mail_thread_finish
    - event_reason_end
    - i_new
    linkageType: ''
    returnType: struct mail_thread_iterate_context
    signature: "struct mail_thread_iterate_context *\nmail_thread_iterate_init_full(struct
      mail_thread_cache *cache,\n\t\t\t      struct mail *tmp_mail,\n\t\t\t      enum
      mail_thread_type thread_type,\n\t\t\t      bool return_seqs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:647,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:652,1
    - Dst: mail_thread_iterate_children
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:654,1
    - Dst: mail_thread_iterate_next
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:658,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - iter
    - child_iter_r
    argTypes:
    - struct mail_thread_iterate_context*
    - struct mail_thread_iterate_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 639
    functionDepth: 5
    functionLinenumber: 639
    functionLinenumberEnd: 661
    functionName: mail_thread_iterate_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 4
    functionsReached:
    - array_get
    - mail_thread_iterate_children
    - mail_thread_iterate_next
    - array_idx
    linkageType: ''
    returnType: struct mail_thread_child_node
    signature: "struct mail_thread_child_node *\nmail_thread_iterate_next(struct mail_thread_iterate_context
      *iter,\n\t\t\t struct mail_thread_iterate_context **child_iter_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mail_thread_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 666
    functionName: mail_thread_iterate_count
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 1
    functionsReached:
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mail_thread_iterate_count(struct mail_thread_iterate_context
      *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:675,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:676,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:677,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:679,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-thread-finish.c:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mail_thread_iterate_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 682
    functionName: mail_thread_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    functionUses: 3
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: int
    signature: int mail_thread_iterate_deinit(struct mail_thread_iterate_context **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:14,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - box
    - trans
    - uid
    argTypes:
    - struct mailbox*
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 19
    functionName: index_pop3_uidl_set_max_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_update_header_ext
    linkageType: ''
    returnType: void
    signature: "void index_pop3_uidl_set_max_uid(struct mailbox *box,\n\t\t\t\t struct
      mail_index_transaction *trans,\n\t\t\t\t uint32_t uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:33,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 42
    functionName: index_pop3_uidl_can_exist
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_get_header_ext
    linkageType: ''
    returnType: bool
    signature: bool index_pop3_uidl_can_exist(struct mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - mail
    - exists
    argTypes:
    - struct mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 58
    functionName: index_pop3_uidl_update_exists
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void index_pop3_uidl_update_exists(struct mail *mail, bool exists)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:68,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:79,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:88,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:89,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:91,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:92,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:98,1
    - Dst: index_pop3_uidl_set_max_uid
      Src: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c:102,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 104
    functionName: index_pop3_uidl_update_exists_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c
    functionUses: 1
    functionsReached:
    - memcpy
    - mail_index_view_open
    - mail_index_view_get_messages_count
    - mail_index_get_header_ext
    - index_pop3_uidl_set_max_uid
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void index_pop3_uidl_update_exists_finish(struct mailbox_transaction_context
      *trans)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: MAIL_THREAD_NODE_EXISTS
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-private.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_THREAD_NODE_EXISTS(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crc32_str
      Src: /src/dovecot/src/lib-storage/index/index-thread-private.h:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: crc32_str_nonzero
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-thread-private.h
    functionUses: 1
    functionsReached:
    - crc32_str
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crc32_str_nonzero(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:26,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - index_sync_ctx
    - sync_view
    - sync_trans
    - dirty_flag_updates
    argTypes:
    - struct mail_index_sync_ctx*
    - struct mail_index_view*
    - struct mail_index_transaction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 33
    functionName: index_sync_changes_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct index_sync_changes_context
    signature: "struct index_sync_changes_context *\nindex_sync_changes_init(struct
      mail_index_sync_ctx *index_sync_ctx,\n\t\t\tstruct mail_index_view *sync_view,\n\t\t\tstruct
      mail_index_transaction *sync_trans,\n\t\t\tbool dirty_flag_updates)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:40,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct index_sync_changes_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 42
    functionName: index_sync_changes_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void index_sync_changes_deinit(struct index_sync_changes_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:46,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_sync_changes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: index_sync_changes_reset
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_clear
    linkageType: ''
    returnType: void
    signature: void index_sync_changes_reset(struct index_sync_changes_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:59,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:68,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - last_uid
    argTypes:
    - struct index_sync_changes_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 69
    functionName: index_sync_changes_delete_to
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_delete
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void index_sync_changes_delete_to(struct index_sync_changes_context
      *ctx,\n\t\t\t\t  uint32_t last_uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:79,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - count
    - expunged_guid_128_r
    argTypes:
    - struct index_sync_changes_context*
    - unsigned int
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 88
    functionName: index_sync_changes_have_expunges
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached:
    - memcpy
    - array_front
    linkageType: ''
    returnType: bool
    signature: "bool index_sync_changes_have_expunges(struct index_sync_changes_context
      *ctx,\n\t\t\t\t unsigned int count,\n\t\t\t\t guid_128_t expunged_guid_128_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: index_sync_changes_delete_to
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:100,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:101,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:105,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:109,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:114,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:115,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:129,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:133,1
    - Dst: mail_index_update_flags_range
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:138,1
    - Dst: index_sync_changes_have_expunges
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:147,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 4
    argNames:
    - ctx
    - uid
    - sync_expunge_r
    - expunged_guid_128_r
    argTypes:
    - struct index_sync_changes_context*
    - uint32_t
    - bool*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 150
    functionName: index_sync_changes_read
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_sync_next
    - i_zero
    - index_sync_changes_have_expunges
    - array_push_back
    - mail_index_lookup_seq_range
    - array_count
    - index_sync_changes_delete_to
    - mail_index_update_flags_range
    linkageType: ''
    returnType: void
    signature: "void index_sync_changes_read(struct index_sync_changes_context *ctx,\n\t\t\t
      \    uint32_t uid, bool *sync_expunge_r,\n\t\t\t     guid_128_t expunged_guid_128_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_sync_changes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: index_sync_changes_have
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool index_sync_changes_have(struct index_sync_changes_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_sync_changes_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: index_sync_changes_get_next_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t index_sync_changes_get_next_uid(struct index_sync_changes_context
      *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:172,1
    - Dst: mail_index_sync_flags_apply
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:176,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:181,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:188,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:189,1
    - Dst: mail_index_sync_keywords_apply
      Src: /src/dovecot/src/lib-storage/index/index-sync-changes.c:191,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 5
    argNames:
    - ctx
    - pool
    - flags
    - keywords
    - sync_type_r
    argTypes:
    - struct index_sync_changes_context*
    - pool_t
    - uint8_t*
    - ARRAY_TYPE*
    - enum mail_index_sync_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 200
    functionName: index_sync_changes_apply
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync-changes.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_flags_apply
    - mail_index_sync_keywords_apply
    - p_array_init
    - I_MIN
    - array_get
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void index_sync_changes_apply(struct index_sync_changes_context *ctx,\n\t\t\t
      \     pool_t pool, uint8_t *flags,\n\t\t\t      ARRAY_TYPE(keyword_indexes)
      *keywords,\n\t\t\t      enum mail_index_sync_type *sync_type_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:43,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:48,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 39
    functionDepth: 3
    functionLinenumber: 39
    functionLinenumberEnd: 56
    functionName: index_sort_program_set_mail_failed
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - i_assert
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: "void index_sort_program_set_mail_failed(struct mail_search_sort_program
      *program,\n\t\t\t\t   struct mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:62,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 72
    functionName: index_sort_program_set_date_failed
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - index_sort_program_set_mail_failed
    linkageType: ''
    returnType: time_t
    signature: "time_t index_sort_program_set_date_failed(struct mail_search_sort_program
      *program,\n\t\t\t\t   struct mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:78,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:81,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:83,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: index_sort_list_add_arrival
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - mail_get_received_date
    - array_append_space
    - ARRAY_TYPE
    - index_sort_program_set_date_failed
    linkageType: ''
    returnType: void
    signature: "void index_sort_list_add_arrival(struct mail_search_sort_program *program,\n\t\t\t
      \   struct mail *mail)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:91,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:95,1
    - Dst: mail_get_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:97,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:98,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:100,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 87
    functionDepth: 5
    functionLinenumber: 87
    functionLinenumberEnd: 103
    functionName: index_sort_list_add_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - mail_get_date
    - array_append_space
    - index_sort_program_set_date_failed
    - ARRAY_TYPE
    - mail_get_received_date
    linkageType: ''
    returnType: void
    signature: "void index_sort_list_add_date(struct mail_search_sort_program *program,\n\t\t\t
      struct mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:109,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:112,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:114,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 105
    functionDepth: 4
    functionLinenumber: 105
    functionLinenumberEnd: 118
    functionName: index_sort_list_add_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - mail_get_virtual_size
    - array_append_space
    - ARRAY_TYPE
    - index_sort_program_set_mail_failed
    linkageType: ''
    returnType: void
    signature: "void index_sort_list_add_size(struct mail_search_sort_program *program,\n\t\t\t
      struct mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:124,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 132
    functionName: index_sort_get_pop3_order
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - str_to_uoff
    - mail_get_special
    linkageType: ''
    returnType: int
    signature: int index_sort_get_pop3_order(struct mail *mail, uoff_t *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:138,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:141,1
    - Dst: index_sort_get_pop3_order
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 3
    functionLinenumber: 134
    functionLinenumberEnd: 144
    functionName: index_sort_list_add_pop3_order
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - array_append_space
    - ARRAY_TYPE
    - index_sort_get_pop3_order
    linkageType: ''
    returnType: void
    signature: "void index_sort_list_add_pop3_order(struct mail_search_sort_program
      *program,\n\t\t\t       struct mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:150,1
    - Dst: strtod
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - mail
    - result_r
    argTypes:
    - struct mail*
    - float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: index_sort_get_relevancy
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - strtod
    - mail_get_special
    linkageType: ''
    returnType: int
    signature: int index_sort_get_relevancy(struct mail *mail, float *result_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:162,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:165,1
    - Dst: index_sort_get_relevancy
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 168
    functionName: index_sort_list_add_relevancy
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - index_sort_get_relevancy
    - array_append_space
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: "void index_sort_list_add_relevancy(struct mail_search_sort_program
      *program,\n\t\t\t      struct mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:177,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:180,1
    - Dst: struct mail_search_sort_program*::sort_list_add
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - program
    - mail
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 188
    functionName: index_sort_list_add
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 1
    functionsReached:
    - i_assert
    - struct mail_search_sort_program*::sort_list_add
    linkageType: ''
    returnType: void
    signature: "void index_sort_list_add(struct mail_search_sort_program *program,\n\t\t\t
      struct mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_sort_node_cmp_type
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct mail_sort_node_date*
    - struct mail_sort_node_date*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 212
    functionName: sort_node_date_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - index_sort_node_cmp_type
    linkageType: ''
    returnType: int
    signature: "int sort_node_date_cmp(const struct mail_sort_node_date *n1,\n\t\t\t
      \     const struct mail_sort_node_date *n2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:217,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:219,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:220,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - program
    argTypes:
    - struct mail_search_sort_program*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 223
    functionName: index_sort_list_finish_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - array_sort
    - i_free
    - memcpy
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: void index_sort_list_finish_date(struct mail_search_sort_program *program)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_sort_node_cmp_type
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:235,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct mail_sort_node_size*
    - struct mail_sort_node_size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 238
    functionName: sort_node_size_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - index_sort_node_cmp_type
    linkageType: ''
    returnType: int
    signature: "int sort_node_size_cmp(const struct mail_sort_node_size *n1,\n\t\t\t
      \     const struct mail_sort_node_size *n2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:243,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:245,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:246,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - program
    argTypes:
    - struct mail_search_sort_program*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 249
    functionName: index_sort_list_finish_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - array_sort
    - i_free
    - memcpy
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: void index_sort_list_finish_size(struct mail_search_sort_program *program)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_sort_node_cmp_type
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct mail_sort_node_float*
    - struct mail_sort_node_float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 264
    functionName: sort_node_float_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - index_sort_node_cmp_type
    linkageType: ''
    returnType: int
    signature: "int sort_node_float_cmp(const struct mail_sort_node_float *n1,\n\t\t\t
      \      const struct mail_sort_node_float *n2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:269,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:274,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:277,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - program
    argTypes:
    - struct mail_search_sort_program*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 280
    functionName: index_sort_list_finish_float
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - array_sort
    - i_free
    - memcpy
    - ARRAY_TYPE
    linkageType: ''
    returnType: void
    signature: void index_sort_list_finish_float(struct mail_search_sort_program *program)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:284,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:289,1
    - Dst: struct mail_search_sort_program*::sort_list_finish
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:290,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - program
    argTypes:
    - struct mail_search_sort_program*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 292
    functionName: index_sort_list_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 1
    functionsReached:
    - i_zero
    - struct mail_search_sort_program*::sort_list_finish
    - event_reason_end
    - event_reason_begin
    linkageType: ''
    returnType: void
    signature: void index_sort_list_finish(struct mail_search_sort_program *program)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:299,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - program
    - seq_r
    argTypes:
    - struct mail_search_sort_program*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 305
    functionName: index_sort_list_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_idx
    linkageType: ''
    returnType: bool
    signature: "bool index_sort_list_next(struct mail_search_sort_program *program,\n\t\t\t
      \ uint32_t *seq_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:313,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:316,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:326,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:334,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:341,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:346,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:358,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:362,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:365,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:367,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:367,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 4
    argNames:
    - box
    - sort_program
    - wanted_fields_r
    - wanted_headers_r
    argTypes:
    - struct mailbox*
    - enum mail_sort_type*
    - enum mail_fetch_field*
    - struct mailbox_header_lookup_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 307
    functionDepth: 8
    functionLinenumber: 307
    functionLinenumberEnd: 369
    functionName: get_wanted_fields
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - array_push_back
    - array_idx
    - array_count
    - mailbox_header_lookup_init
    - t_array_init
    - ARRAY_TYPE
    - array_append_zero
    linkageType: ''
    returnType: void
    signature: "void get_wanted_fields(struct mailbox *box, const enum mail_sort_type
      *sort_program,\n\t\t  enum mail_fetch_field *wanted_fields_r,\n\t\t  struct
      mailbox_header_lookup_ctx **wanted_headers_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: get_wanted_fields
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:383,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:386,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:388,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:391,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:404,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:409,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:411,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:412,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:424,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:426,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:427,1
    - Dst: index_sort_list_init_string
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:441,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:444,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:446,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:447,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:454,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:456,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:457,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:464,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 74
    argCount: 2
    argNames:
    - t
    - sort_program
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_sort_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 371
    functionDepth: 9
    functionLinenumber: 371
    functionLinenumberEnd: 467
    functionName: index_sort_program_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 1
    functionsReached:
    - i_panic
    - i_array_init
    - i_malloc
    - mail_alloc
    - get_wanted_fields
    - mailbox_header_lookup_unref
    - i_unreached
    - index_sort_list_init_string
    - i_new
    - ARRAY_TYPE
    linkageType: ''
    returnType: struct mail_search_sort_program
    signature: "struct mail_search_sort_program *\nindex_sort_program_init(struct
      mailbox_transaction_context *t,\n\t\t\tconst enum mail_sort_type *sort_program)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_sort_list_finish
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:476,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:477,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:478,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _program
    argTypes:
    - struct mail_search_sort_program**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 469
    functionDepth: 2
    functionLinenumber: 469
    functionLinenumberEnd: 483
    functionName: index_sort_program_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 1
    functionsReached:
    - mail_free
    - index_sort_list_finish
    - array_free
    - i_free
    linkageType: ''
    returnType: int
    signature: int index_sort_program_deinit(struct mail_search_sort_program **_program)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:492,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:497,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:497,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - mail
    - header
    - addr_r
    argTypes:
    - struct mail*
    - char*
    - struct message_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 502
    functionName: get_first_addr
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - mail_get_first_header
    - pool_datastack_create
    - strlen
    - message_address_parse
    linkageType: ''
    returnType: int
    signature: "int get_first_addr(struct mail *mail, const char *header,\n\t       struct
      message_address **addr_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_first_addr
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - mail
    - header
    - mailbox_r
    argTypes:
    - struct mail*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 504
    functionDepth: 3
    functionLinenumber: 504
    functionLinenumberEnd: 515
    functionName: get_first_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - get_first_addr
    linkageType: ''
    returnType: int
    signature: int get_first_mailbox(struct mail *mail, const char *header, const
      char **mailbox_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_first_addr
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:524,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:531,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:533,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:534,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:536,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:537,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:542,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - mail
    - header
    - name_r
    argTypes:
    - struct mail*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 517
    functionDepth: 4
    functionLinenumber: 517
    functionLinenumberEnd: 546
    functionName: get_display_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - get_first_addr
    - str_len
    - message_header_decode_utf8
    - strlen
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int get_display_name(struct mail *mail, const char *header, const char
      **name_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:555,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - program
    - mail
    - seq
    argTypes:
    - struct mail_search_sort_program*
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 561
    functionName: index_sort_set_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 0
    functionsReached:
    - mail_set_seq
    linkageType: ''
    returnType: void
    signature: "void index_sort_set_seq(struct mail_search_sort_program *program,\n\t\t
      \  struct mail *mail, uint32_t seq)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:571,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:572,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:576,1
    - Dst: imap_get_base_subject_cased
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:583,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:583,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:585,1
    - Dst: get_first_mailbox
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:588,1
    - Dst: get_first_mailbox
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:591,1
    - Dst: get_first_mailbox
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:594,1
    - Dst: get_display_name
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:597,1
    - Dst: get_display_name
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:600,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:603,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:606,1
    - Dst: uni_utf8_to_decomposed_titlecase
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:612,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:612,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 4
    argNames:
    - program
    - seq
    - sort_type
    - dest
    argTypes:
    - struct mail_search_sort_program*
    - uint32_t
    - enum mail_sort_type
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 563
    functionDepth: 4
    functionLinenumber: 563
    functionLinenumberEnd: 614
    functionName: index_sort_header_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 3
    functionsReached:
    - imap_get_base_subject_cased
    - get_first_mailbox
    - index_sort_set_seq
    - i_unreached
    - index_sort_program_set_mail_failed
    - get_display_name
    - strlen
    - mail_get_first_header
    - pool_datastack_create
    - str_truncate
    - str_append
    - uni_utf8_to_decomposed_titlecase
    linkageType: ''
    returnType: int
    signature: "int index_sort_header_get(struct mail_search_sort_program *program,
      uint32_t seq,\n\t\t\t  enum mail_sort_type sort_type, string_t *dest)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:638,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:639,1
    - Dst: index_sort_header_get
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:640,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:641,1
    - Dst: index_sort_header_get
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:642,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:643,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:645,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:645,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:645,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:649,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:650,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:651,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:653,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:654,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:655,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:661,1
    - Dst: mail_get_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:662,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:663,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:665,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:666,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:669,1
    - Dst: mail_get_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:670,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:671,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:673,1
    - Dst: index_sort_program_set_date_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:674,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:681,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:682,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:683,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:687,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:688,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:689,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:697,1
    - Dst: index_sort_get_relevancy
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:698,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:699,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:700,1
    - Dst: index_sort_get_relevancy
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:701,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:702,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:712,1
    - Dst: index_sort_get_pop3_order
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:713,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:714,1
    - Dst: index_sort_set_seq
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:715,1
    - Dst: index_sort_get_pop3_order
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:716,1
    - Dst: index_sort_program_set_mail_failed
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:717,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-sort.c:727,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 82
    argCount: 4
    argNames:
    - program
    - sort_program
    - seq1
    - seq2
    argTypes:
    - struct mail_search_sort_program*
    - enum mail_sort_type*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 616
    functionDepth: 5
    functionLinenumber: 616
    functionLinenumberEnd: 728
    functionName: index_sort_node_cmp_type
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sort.c
    functionUses: 6
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - mail_get_date
    - index_sort_get_relevancy
    - index_sort_set_seq
    - index_sort_program_set_mail_failed
    - i_unreached
    - index_sort_program_set_date_failed
    - index_sort_header_get
    - index_sort_get_pop3_order
    - mail_get_received_date
    - mail_get_virtual_size
    linkageType: ''
    returnType: int
    signature: "int index_sort_node_cmp_type(struct mail_search_sort_program *program,\n\t\t\t
      \    const enum mail_sort_type *sort_program,\n\t\t\t     uint32_t seq1, uint32_t
      seq2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:20,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:23,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - view
    - old_seq
    - new_seq
    argTypes:
    - struct index_rebuild_context*
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 26
    functionName: index_index_copy_vsize
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-rebuild.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_ext
    - mail_index_update_ext
    linkageType: ''
    returnType: void
    signature: "void index_index_copy_vsize(struct index_rebuild_context *ctx,\n\t\t
      \      struct mail_index_view *view,\n\t\t       uint32_t old_seq, uint32_t
      new_seq)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext_full
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:41,1
    - Dst: mail_index_ext_get_reset_id
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:46,1
    - Dst: mail_index_ext_reset
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:54,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:58,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - ctx
    - view
    - old_seq
    - new_seq
    argTypes:
    - struct index_rebuild_context*
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 61
    functionName: index_index_copy_cache
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-rebuild.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_get_reset_id
    - mail_index_lookup_ext_full
    - mail_index_ext_reset
    - mail_index_update_ext
    linkageType: ''
    returnType: void
    signature: "void index_index_copy_cache(struct index_rebuild_context *ctx,\n\t\t
      \      struct mail_index_view *view,\n\t\t       uint32_t old_seq, uint32_t
      new_seq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:68,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:70,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:75,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:76,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:80,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:81,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:82,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:83,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:84,1
    - Dst: mail_index_modseq_lookup
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:87,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:88,1
    - Dst: index_index_copy_vsize
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:90,1
    - Dst: index_index_copy_cache
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - view
    - old_seq
    - new_seq
    argTypes:
    - struct index_rebuild_context*
    - struct mail_index_view*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 63
    functionDepth: 4
    functionLinenumber: 63
    functionLinenumberEnd: 92
    functionName: index_index_copy_from_old
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-rebuild.c
    functionUses: 0
    functionsReached:
    - index_index_copy_vsize
    - mail_index_update_keywords
    - mail_index_update_flags
    - mail_index_keywords_create_from_indexes
    - mail_index_modseq_lookup
    - mail_index_view_get_index
    - mail_index_update_modseq
    - mail_index_keywords_unref
    - t_array_init
    - mail_index_lookup
    - ARRAY_TYPE
    - index_index_copy_cache
    - mail_index_lookup_keywords
    linkageType: ''
    returnType: void
    signature: "void index_index_copy_from_old(struct index_rebuild_context *ctx,\n\t\t\t
      \ struct mail_index_view *view,\n\t\t\t  uint32_t old_seq, uint32_t new_seq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:99,1
    - Dst: index_index_copy_from_old
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:102,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:104,1
    - Dst: index_index_copy_from_old
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - new_seq
    - uid
    argTypes:
    - struct index_rebuild_context*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 94
    functionDepth: 5
    functionLinenumber: 94
    functionLinenumberEnd: 109
    functionName: index_rebuild_index_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-rebuild.c
    functionUses: 0
    functionsReached:
    - index_index_copy_from_old
    - mail_index_lookup_seq
    linkageType: ''
    returnType: void
    signature: "void index_rebuild_index_metadata(struct index_rebuild_context *ctx,\n\t\t\t\t
      \ uint32_t new_seq, uint32_t uid)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:116,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:122,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:124,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:125,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:126,1
    - Dst: gen_uidvalidity
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:134,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:135,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:147,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:158,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:159,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:164,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:165,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:167,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:171,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:173,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - ctx
    - gen_uidvalidity
    argTypes:
    - struct index_rebuild_context*
    - index_rebuild_generate_uidvalidity_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 174
    functionName: index_rebuild_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-rebuild.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_modseq_get_highest
    - mail_index_update_header
    - gen_uidvalidity
    - I_MIN
    - mail_index_get_header
    - mail_index_transaction_open_updated_view
    - mail_index_view_get_index
    - mail_index_update_header_ext
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: "void index_rebuild_header(struct index_rebuild_context *ctx,\n\t\t
      \    index_rebuild_generate_uidvalidity_t *gen_uidvalidity)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:183,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:185,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - ext_id
    argTypes:
    - struct index_rebuild_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 191
    functionName: index_rebuild_box_preserve_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-rebuild.c
    functionUses: 0
    functionsReached:
    - mail_index_update_header_ext
    - mail_index_get_header_ext
    linkageType: ''
    returnType: void
    signature: "void index_rebuild_box_preserve_header(struct index_rebuild_context
      *ctx,\n\t\t\t\t  uint32_t ext_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:204,1
    - Dst: mail_index_is_locked
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:204,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:206,1
    - Dst: mail_index_reset
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:210,1
    - Dst: mailbox_recent_flags_reset
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:211,1
    - Dst: mail_index_ext_lookup
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:212,1
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:215,1
    - Dst: mailbox_get_index_path
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:218,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:219,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:220,1
    - Dst: mail_index_set_lock_method
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:227,1
    - Dst: mail_index_open
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:230,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:231,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - box
    - view
    - trans
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 193
    functionDepth: 6
    functionLinenumber: 193
    functionLinenumberEnd: 235
    functionName: index_index_rebuild_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-rebuild.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_lookup
    - mail_cache_open_and_verify
    - mail_index_alloc
    - mailbox_recent_flags_reset
    - mail_index_set_lock_method
    - mail_index_view_open
    - mail_index_free
    - mail_index_open
    - i_new
    - mail_index_reset
    - mail_index_is_locked
    - mailbox_get_index_path
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: struct index_rebuild_context
    signature: "struct index_rebuild_context *\nindex_index_rebuild_init(struct mailbox
      *box, struct mail_index_view *view,\n\t\t\t struct mail_index_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_purge_with_trans
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:245,1
    - Dst: index_rebuild_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:247,1
    - Dst: index_rebuild_box_preserve_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:248,1
    - Dst: index_rebuild_box_preserve_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:249,1
    - Dst: index_rebuild_box_preserve_header
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:250,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:252,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:253,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:254,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-rebuild.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - _ctx
    - cb
    argTypes:
    - struct index_rebuild_context**
    - index_rebuild_generate_uidvalidity_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 237
    functionDepth: 15
    functionLinenumber: 237
    functionLinenumberEnd: 257
    functionName: index_index_rebuild_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-rebuild.c
    functionUses: 0
    functionsReached:
    - index_rebuild_box_preserve_header
    - index_rebuild_header
    - mail_index_close
    - mail_cache_purge_with_trans
    - i_free
    - mail_index_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: "void index_index_rebuild_deinit(struct index_rebuild_context **_ctx,\n\t\t\t\tindex_rebuild_generate_uidvalidity_t
      *cb)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 28
    functionName: index_storage_get_sync_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mail_index_sync_flags
    signature: enum mail_index_sync_flags index_storage_get_sync_flags(struct mailbox
      *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:33,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:51,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 54
    functionName: index_mailbox_want_full_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 1
    functionsReached:
    - timeout_reset
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: bool
    signature: "bool index_mailbox_want_full_sync(struct mailbox *box,\n\t\t\t\t  enum
      mailbox_sync_flags flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:61,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:62,1
    - Dst: mail_index_view_sync_next
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:63,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:67,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:75,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:78,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 56
    functionDepth: 10
    functionLinenumber: 56
    functionLinenumberEnd: 84
    functionName: index_view_sync_recs_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - seq_range_array_add_range
    - mail_index_lookup_seq_range
    - mail_index_view_sync_next
    linkageType: ''
    returnType: void
    signature: void index_view_sync_recs_get(struct index_mailbox_sync_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:91,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:93,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 99
    functionName: index_view_sync_cleanup_updates
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - seq_range_array_remove_seq_range
    linkageType: ''
    returnType: void
    signature: void index_view_sync_cleanup_updates(struct index_mailbox_sync_context
      *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:109,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:126,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:132,1
    - Dst: mail_index_view_sync_begin
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:134,1
    - Dst: mail_index_view_sync_get_expunges
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:136,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:138,1
    - Dst: index_view_sync_recs_get
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:140,1
    - Dst: index_sync_search_results_expunge
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:141,1
    - Dst: index_mailbox_sync_pvt_init
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:147,1
    - Dst: index_mailbox_sync_pvt_view
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:148,1
    - Dst: index_mailbox_sync_pvt_deinit
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:150,1
    - Dst: index_view_sync_cleanup_updates
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:153,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - box
    - flags
    - failed
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 101
    functionDepth: 13
    functionLinenumber: 101
    functionLinenumberEnd: 155
    functionName: index_mailbox_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 1
    functionsReached:
    - index_view_sync_cleanup_updates
    - index_mailbox_sync_pvt_deinit
    - index_mailbox_sync_pvt_init
    - mail_index_view_sync_begin
    - index_view_sync_recs_get
    - array_count
    - mail_index_view_sync_get_expunges
    - i_new
    - index_mailbox_sync_pvt_view
    - index_sync_search_results_expunge
    - mail_index_refresh
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: "struct mailbox_sync_context *\nindex_mailbox_sync_init(struct mailbox
      *box, enum mailbox_sync_flags flags,\n\t\t\tbool failed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:169,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:170,1
    - Dst: mailbox_recent_flags_expunge_seqs
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - sync_rec_r
    argTypes:
    - struct index_mailbox_sync_context*
    - struct mailbox_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 179
    functionName: index_mailbox_sync_next_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    - mailbox_recent_flags_expunge_seqs
    - array_idx
    linkageType: ''
    returnType: bool
    signature: "bool index_mailbox_sync_next_expunge(struct index_mailbox_sync_context
      *ctx,\n\t\t\t\tstruct mailbox_sync_rec *sync_rec_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:192,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:202,1
    - Dst: index_mailbox_sync_next_expunge
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - _ctx
    - sync_rec_r
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 181
    functionDepth: 3
    functionLinenumber: 181
    functionLinenumberEnd: 213
    functionName: index_mailbox_sync_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - array_get
    - index_mailbox_sync_next_expunge
    linkageType: ''
    returnType: bool
    signature: "bool index_mailbox_sync_next(struct mailbox_sync_context *_ctx,\n\t\t\t
      \    struct mailbox_sync_rec *sync_rec_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:223,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:230,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:234,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:236,1
    - Dst: mail_index_view_is_inconsistent
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:236,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:242,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:247,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:253,1
    - Dst: mail_index_view_is_inconsistent
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:258,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:262,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:267,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:268,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 273
    functionName: index_mailbox_expunge_unseen_recent
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_uid
    - mail_index_lookup_seq
    - array_get
    - mail_index_get_header
    - mail_index_view_is_inconsistent
    - seq_range_array_remove_range
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void index_mailbox_expunge_unseen_recent(struct index_mailbox_sync_context
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:277,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:281,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:283,1
    - Dst: mailbox_recent_flags_reset
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:287,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:294,1
    - Dst: mailbox_recent_flags_set_seqs
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 275
    functionDepth: 6
    functionLinenumber: 275
    functionLinenumberEnd: 302
    functionName: index_sync_update_recent_count
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 1
    functionsReached:
    - mailbox_recent_flags_set_seqs
    - mailbox_recent_flags_reset
    - mail_index_lookup_seq_range
    - mail_index_get_header
    - mailbox_set_critical
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void index_sync_update_recent_count(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:306,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:307,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:308,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:309,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:310,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:311,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:312,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_mailbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: index_mailbox_sync_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void index_mailbox_sync_free(struct index_mailbox_sync_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_sync_next_expunge
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:326,1
    - Dst: index_sync_search_results_uidify
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:329,1
    - Dst: mail_index_view_sync_commit
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:332,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:334,1
    - Dst: index_mailbox_sync_free
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:339,1
    - Dst: index_mailbox_expunge_unseen_recent
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:342,1
    - Dst: index_sync_update_recent_count
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:347,1
    - Dst: index_sync_search_results_update
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:354,1
    - Dst: index_mailbox_vsize_update_appends
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:356,1
    - Dst: mail_index_view_is_inconsistent
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:358,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:363,1
    - Dst: index_mailbox_sync_free
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:367,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - _ctx
    - status_r
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 315
    functionDepth: 12
    functionLinenumber: 315
    functionLinenumberEnd: 369
    functionName: index_mailbox_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - index_sync_search_results_uidify
    - index_sync_update_recent_count
    - index_sync_search_results_update
    - mailbox_set_index_error
    - index_mailbox_sync_next_expunge
    - index_mailbox_sync_free
    - index_mailbox_expunge_unseen_recent
    - mail_index_view_is_inconsistent
    - mail_index_view_sync_commit
    - index_mailbox_vsize_update_appends
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_sync_deinit(struct mailbox_sync_context *_ctx,\n\t\t\t
      \     struct mailbox_sync_status *status_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:377,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:378,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:378,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:379,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:380,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:384,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:385,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 402
    functionName: index_keyword_array_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - array_count
    linkageType: ''
    returnType: bool
    signature: "bool index_keyword_array_cmp(const ARRAY_TYPE(keyword_indexes) *k1,\n\t\t\t
      \    const ARRAY_TYPE(keyword_indexes) *k2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum mail_index_sync_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 415
    functionName: index_sync_type_convert
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mailbox_sync_type
    signature: enum mailbox_sync_type index_sync_type_convert(enum mail_index_sync_type
      type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:420,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:424,1
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - box
    - view
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 430
    functionName: index_list_get_ext_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_register
    - INDEX_STORAGE_CONTEXT
    - mail_index_view_get_index
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t index_list_get_ext_id(struct mailbox *box, struct mail_index_view
      *view)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_is_in_memory
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:447,1
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:447,1
    - Dst: index_list_get_ext_id
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:452,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:453,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:472,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:475,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:477,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:478,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:480,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:483,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:488,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:494,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 4
    argNames:
    - box
    - list_view
    - seq
    - reason_r
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - uint32_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 432
    functionDepth: 5
    functionLinenumber: 432
    functionLinenumberEnd: 499
    functionName: index_storage_list_index_has_changed_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - index_list_get_ext_id
    - t_strdup_printf
    - mail_index_lookup_ext
    - mail_index_view_get_index
    - mail_index_is_in_memory
    - stat
    - mailbox_set_critical
    - i_assert
    - t_strconcat
    - mailbox_get_path_to
    linkageType: ''
    returnType: enum index_storage_list_change
    signature: "enum index_storage_list_change index_storage_list_index_has_changed_full(struct
      mailbox *box,\n\t\t\t\t\t  struct mail_index_view *list_view,\n\t\t\t\t\t  uint32_t
      seq, const char **reason_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_list_index_has_changed_full
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:506,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - box
    - list_view
    - seq
    - ATTR_UNUSED
    - reason_r
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - uint32_t
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 501
    functionDepth: 6
    functionLinenumber: 501
    functionLinenumberEnd: 515
    functionName: index_storage_list_index_has_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - index_storage_list_index_has_changed_full
    linkageType: ''
    returnType: int
    signature: "int index_storage_list_index_has_changed(struct mailbox *box,\n\t\t\t\t\t
      struct mail_index_view *list_view,\n\t\t\t\t\t uint32_t seq, bool quick ATTR_UNUSED,\n\t\t\t\t\t
      const char **reason_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_get_view
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:531,1
    - Dst: mail_index_is_in_memory
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:532,1
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:532,1
    - Dst: index_list_get_ext_id
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:536,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:537,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:542,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:545,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:547,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:548,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:549,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:553,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:558,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/index-sync.c:559,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - box
    - trans
    - seq
    argTypes:
    - struct mailbox*
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 517
    functionDepth: 5
    functionLinenumber: 517
    functionLinenumberEnd: 560
    functionName: index_storage_list_index_update_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - index_list_get_ext_id
    - mail_index_lookup_ext
    - mail_index_view_get_index
    - mail_index_update_ext
    - mail_index_is_in_memory
    - stat
    - memcmp
    - mail_index_transaction_get_view
    - mailbox_set_critical
    - i_assert
    - t_strconcat
    - mailbox_get_path_to
    linkageType: ''
    returnType: void
    signature: "void index_storage_list_index_update_sync(struct mailbox *box,\n\t\t\t\t\t
      \ struct mail_index_transaction *trans,\n\t\t\t\t\t  uint32_t seq)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:45,1
    - Dst: mail_cache_register_lookup
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:48,1
    - Dst: mail_cache_register_get_field
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:50,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:51,1
    - Dst: message_header_name_is_valid
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:56,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:57,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:61,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:67,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - box
    - set
    - fields
    - dec
    argTypes:
    - struct mailbox*
    - char*
    - ARRAY_TYPE*
    - enum mail_cache_decision_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 36
    functionDepth: 6
    functionLinenumber: 36
    functionLinenumberEnd: 77
    functionName: set_cache_decisions
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - message_header_name_is_valid
    - i_zero
    - mail_cache_register_lookup
    - mail_cache_register_get_field
    - str_begins_icase_with
    - settings_boollist_get
    - e_error
    - mail_cache_register_fields
    linkageType: ''
    returnType: void
    signature: "void set_cache_decisions(struct mailbox *box,\n\t\t\t\tconst char
      *set, const ARRAY_TYPE(const_string) *fields,\n\t\t\t\tenum mail_cache_decision_type
      dec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:81,1
    - Dst: index_mail_global_cache_fields_dup
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:85,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:86,1
    - Dst: str_array_find
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:90,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:90,1
    - Dst: set_cache_decisions
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:96,1
    - Dst: set_cache_decisions
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:99,1
    - Dst: set_cache_decisions
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 79
    functionDepth: 7
    functionLinenumber: 79
    functionLinenumberEnd: 107
    functionName: index_cache_register_defaults
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - set_cache_decisions
    - settings_boollist_get
    - index_mail_global_cache_fields_dup
    - str_array_find
    - mail_cache_register_fields
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void index_cache_register_defaults(struct mailbox *box)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:113,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:119,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:141,1
    - Dst: struct mail_storage*::callbacks::notify_no
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:143,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:150,1
    - Dst: struct mail_storage*::callbacks::notify_ok
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:152,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 3
    argNames:
    - box
    - notify_type
    - secs_left
    argTypes:
    - struct mailbox*
    - enum mailbox_lock_notify_type
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 156
    functionName: index_storage_lock_notify
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - struct mail_storage*::callbacks::notify_no
    - struct mail_storage*::callbacks::notify_ok
    - time
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: "void index_storage_lock_notify(struct mailbox *box,\n\t\t\t       enum
      mailbox_lock_notify_type notify_type,\n\t\t\t       unsigned int secs_left)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:160,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 164
    functionName: index_storage_lock_notify_reset
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - time
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void index_storage_lock_notify_reset(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:171,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:175,1
    - Dst: mail_index_alloc_cache_get
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - box
    - index_r
    argTypes:
    - struct mailbox*
    - struct mail_index**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 166
    functionDepth: 5
    functionLinenumber: 166
    functionLinenumberEnd: 183
    functionName: index_mailbox_alloc_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_alloc_cache_get
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: int index_mailbox_alloc_index(struct mailbox *box, struct mail_index
      **index_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:188,1
    - Dst: index_storage_mailbox_exists_full
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - box
    - auto_boxes
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 194
    functionName: index_storage_mailbox_exists
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_exists_full
    - mailbox_is_autocreated
    linkageType: ''
    returnType: int
    signature: "int index_storage_mailbox_exists(struct mailbox *box, bool auto_boxes,\n\t\t\t\t
      enum mailbox_existence *existence_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:204,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:206,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:219,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:220,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:225,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:227,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:234,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:235,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:239,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:240,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:245,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:246,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:246,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 3
    argNames:
    - box
    - subdir
    - existence_r
    argTypes:
    - struct mailbox*
    - char*
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 196
    functionDepth: 5
    functionLinenumber: 196
    functionLinenumberEnd: 252
    functionName: index_storage_mailbox_exists_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 2
    functionsReached:
    - mailbox_get_last_mail_error
    - strcmp
    - ENOTFOUND
    - stat
    - mailbox_set_critical
    - t_strconcat
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int index_storage_mailbox_exists_full(struct mailbox *box, const char
      *subdir,\n\t\t\t\t      enum mailbox_existence *existence_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_create_missing_dir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:261,1
    - Dst: index_mailbox_alloc_index
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:263,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:266,1
    - Dst: mailbox_create_missing_dir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:268,1
    - Dst: mail_index_set_cache_dir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:270,1
    - Dst: mail_index_set_fsync_mode
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:272,1
    - Dst: mail_index_set_lock_method
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:274,1
    - Dst: mail_storage_get_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:276,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:302,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 254
    functionDepth: 6
    functionLinenumber: 254
    functionLinenumberEnd: 304
    functionName: index_storage_mailbox_alloc_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_set_lock_method
    - mailbox_create_missing_dir
    - index_mailbox_alloc_index
    - mail_index_set_fsync_mode
    - mail_index_set_optimization_settings
    - mail_index_set_cache_dir
    - mail_storage_get_lock_timeout
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: int index_storage_mailbox_alloc_index(struct mailbox *box)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:308,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:312,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:316,1
    - Dst: index_storage_mailbox_alloc_index
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:318,1
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:322,1
    - Dst: mail_index_open
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:324,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:327,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:328,1
    - Dst: mail_index_move_to_memory
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:332,1
    - Dst: mail_index_open_or_create
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:335,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:337,1
    - Dst: mail_index_is_in_memory
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:341,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:342,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:344,1
    - Dst: mail_index_is_deleted
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:350,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:351,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:352,1
    - Dst: mail_index_fsck
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:357,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:358,1
    - Dst: mail_index_get_cache
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:363,1
    - Dst: index_cache_register_defaults
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:364,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:365,1
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:366,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:368,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:372,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:375,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:378,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:380,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:387,1
    - Dst: index_thread_mailbox_opened
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:389,1
    - Dst: hook_mailbox_opened
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:390,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 2
    argNames:
    - box
    - move_to_memory
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 306
    functionDepth: 8
    functionLinenumber: 306
    functionLinenumberEnd: 392
    functionName: index_storage_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 1
    functionsReached:
    - mail_index_get_keywords
    - mail_index_fsck
    - index_cache_register_defaults
    - i_panic
    - index_thread_mailbox_opened
    - mail_index_move_to_memory
    - mail_index_is_deleted
    - index_storage_mailbox_alloc_index
    - mail_index_close
    - mail_index_view_open
    - INDEX_STORAGE_CONTEXT
    - mailbox_get_permissions
    - mail_index_open_or_create
    - mail_index_get_cache
    - mailbox_set_index_error
    - i_assert
    - hook_mailbox_opened
    - mailbox_set_deleted
    - mail_index_modseq_enable
    - ENUM_NEGATE
    - mail_index_open
    - mail_index_is_in_memory
    - mail_index_ext_register
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: int index_storage_mailbox_open(struct mailbox *box, bool move_to_memory)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:401,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:404,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:405,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:406,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:408,1
    - Dst: mail_storage_mailbox_create_event
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:409,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:412,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:413,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:416,1
    - Dst: mail_storage_settings_to_index_flags
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:419,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:422,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:424,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:425,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:427,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:429,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - box
    - vname
    - flags
    - index_prefix
    argTypes:
    - struct mailbox*
    - char*
    - enum mailbox_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 394
    functionDepth: 5
    functionLinenumber: 394
    functionLinenumberEnd: 431
    functionName: index_storage_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 1
    functionsReached:
    - strcmp
    - p_strdup
    - p_new
    - p_array_init
    - time
    - mail_storage_settings_to_index_flags
    - mail_storage_mailbox_create_event
    - mailbox_list_get_storage_name
    - event_want_debug
    - MODULE_CONTEXT_SET
    - i_assert
    - array_create
    linkageType: ''
    returnType: void
    signature: "void index_storage_mailbox_alloc(struct mailbox *box, const char *vname,\n\t\t\t\t
      enum mailbox_flags flags,\n\t\t\t\t const char *index_prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - box
    - feature
    argTypes:
    - struct mailbox*
    - enum mailbox_feature
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 433
    functionDepth: 3
    functionLinenumber: 433
    functionLinenumberEnd: 445
    functionName: index_storage_mailbox_enable
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_modseq_enable
    linkageType: ''
    returnType: int
    signature: "int index_storage_mailbox_enable(struct mailbox *box,\n\t\t\t\t enum
      mailbox_feature feature)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:449,1
    - Dst: mailbox_watch_remove_all
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:451,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:452,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:455,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:457,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:459,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:460,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:465,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 447
    functionDepth: 5
    functionLinenumber: 447
    functionLinenumberEnd: 468
    functionName: index_storage_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 2
    functionsReached:
    - mail_index_close
    - i_free_and_null
    - mailbox_watch_remove_all
    - i_stream_unref
    - mail_index_view_close
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void index_storage_mailbox_close(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_alloc_cache_unref
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:473,1
    - Dst: mail_index_alloc_cache_unref
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 470
    functionDepth: 4
    functionLinenumber: 470
    functionLinenumberEnd: 476
    functionName: index_storage_mailbox_unref_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_alloc_cache_unref
    linkageType: ''
    returnType: void
    signature: void index_storage_mailbox_unref_indexes(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_unref_indexes
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:480,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 478
    functionDepth: 5
    functionLinenumber: 478
    functionLinenumberEnd: 482
    functionName: index_storage_mailbox_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 1
    functionsReached:
    - event_unref
    - index_storage_mailbox_unref_indexes
    linkageType: ''
    returnType: void
    signature: void index_storage_mailbox_free(struct mailbox *box)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_register_get_list
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:495,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:499,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:503,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:508,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:510,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:521,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:523,1
    - Dst: mail_cache_register_fields
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:524,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:525,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:526,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:529,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 484
    functionDepth: 6
    functionLinenumber: 484
    functionLinenumberEnd: 530
    functionName: index_storage_mailbox_update_cache
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_zero
    - array_front_modifiable
    - str_begins_with
    - array_push_back
    - pool_unref
    - array_count
    - t_array_init
    - mail_cache_register_get_list
    - mail_cache_register_fields
    linkageType: ''
    returnType: void
    signature: "void index_storage_mailbox_update_cache(struct mailbox *box,\n\t\t\t\t
      \  const struct mailbox_update *update)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open_index_pvt
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:540,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:543,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:544,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:545,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:548,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:549,1
    - Dst: mail_index_update_highest_modseq
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:550,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:554,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:555,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:556,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 532
    functionDepth: 7
    functionLinenumber: 532
    functionLinenumberEnd: 558
    functionName: index_storage_mailbox_update_pvt
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_modseq_get_highest
    - mail_index_transaction_begin
    - mail_index_modseq_enable
    - mail_index_update_highest_modseq
    - mail_index_transaction_commit
    - mail_index_view_open
    - mailbox_set_index_error
    - mailbox_open_index_pvt
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int index_storage_mailbox_update_pvt(struct mailbox *box,\n\t\t\t\t
      const struct mailbox_update *update)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_update_cache
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:566,1
    - Dst: index_storage_mailbox_update_pvt
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:569,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 560
    functionDepth: 8
    functionLinenumber: 560
    functionLinenumberEnd: 573
    functionName: index_storage_mailbox_update_common
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_update_cache
    - index_storage_mailbox_update_pvt
    linkageType: ''
    returnType: int
    signature: "int index_storage_mailbox_update_common(struct mailbox *box,\n\t\t\t\t\tconst
      struct mailbox_update *update)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:583,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:587,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:588,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:589,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:591,1
    - Dst: mail_index_reset
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:599,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:601,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:609,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:617,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:622,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:623,1
    - Dst: mail_index_update_highest_modseq
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:624,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:628,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:629,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:630,1
    - Dst: index_storage_mailbox_update_common
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:632,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 575
    functionDepth: 9
    functionLinenumber: 575
    functionLinenumberEnd: 633
    functionName: index_storage_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_modseq_get_highest
    - mail_index_transaction_begin
    - mailbox_open
    - mail_index_update_header
    - mail_index_modseq_enable
    - mail_index_update_highest_modseq
    - mail_index_transaction_commit
    - index_storage_mailbox_update_common
    - mail_index_view_open
    - mail_index_get_header
    - mailbox_set_index_error
    - mail_index_reset
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int index_storage_mailbox_update(struct mailbox *box,\n\t\t\t\t const
      struct mailbox_update *update)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:645,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:649,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:657,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:660,1
    - Dst: mailbox_mkdir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:663,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:670,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:671,1
    - Dst: mailbox_mkdir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:672,1
    - Dst: mailbox_refresh_permissions
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:680,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:689,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:695,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 2
    argNames:
    - box
    - directory
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 635
    functionDepth: 5
    functionLinenumber: 635
    functionLinenumberEnd: 707
    functionName: index_storage_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_refresh_permissions
    - strrchr
    - i_unreached
    - mailbox_mkdir
    - mailbox_exists
    - t_strdup_until
    - mail_storage_set_error
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: int index_storage_mailbox_create(struct mailbox *box, bool directory)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_delete_dir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:714,1
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:717,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:719,1
    - Dst: mailbox_name_get_sha128
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:725,1
    - Dst: mailbox_list_add_change
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:726,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - box
    - mailbox_deleted
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 709
    functionDepth: 8
    functionLinenumber: 709
    functionLinenumberEnd: 729
    functionName: index_storage_mailbox_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_name_get_sha128
    - mail_storage_copy_list_error
    - mailbox_list_delete_dir
    - mailbox_list_get_last_error
    - mailbox_list_add_change
    linkageType: ''
    returnType: int
    signature: int index_storage_mailbox_delete_dir(struct mailbox *box, bool mailbox_deleted)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:740,1
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:741,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:743,1
    - Dst: mailbox_attribute_unset
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:746,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:747,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:753,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - t
    - type
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_attribute_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 731
    functionDepth: 5
    functionLinenumber: 731
    functionLinenumberEnd: 756
    functionName: mailbox_delete_all_attributes
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mailbox_attribute_unset
    - str_begins_with
    - mailbox_attribute_iter_init
    - mailbox_attribute_iter_next
    - mailbox_attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int mailbox_delete_all_attributes(struct mailbox_transaction_context
      *t,\n\t\t\t      enum mail_attribute_type type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:766,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:768,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:770,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:771,1
    - Dst: mail_search_seqset_iter_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:773,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:780,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:781,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:782,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:783,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:785,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:786,1
    - Dst: mail_search_seqset_iter_next
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:788,1
    - Dst: mail_search_seqset_iter_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:790,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:791,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:793,1
    - Dst: mailbox_delete_all_attributes
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:794,1
    - Dst: mailbox_delete_all_attributes
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:795,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:797,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:801,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 758
    functionDepth: 11
    functionLinenumber: 758
    functionLinenumberEnd: 804
    functionName: mailbox_expunge_all_data
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_search_build_add_all
    - mailbox_delete_all_attributes
    - mail_search_seqset_iter_deinit
    - mailbox_transaction_begin
    - mail_expunge
    - mailbox_sync
    - mail_search_args_unref
    - mailbox_search_deinit
    - mail_search_build_init
    - mailbox_get_open_status
    - mailbox_search_init
    - mailbox_transaction_commit
    - mailbox_search_next
    - mail_search_seqset_iter_init
    - mail_search_seqset_iter_next
    linkageType: ''
    returnType: int
    signature: int mailbox_expunge_all_data(struct mailbox *box)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_delete_dir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:812,1
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:814,1
    - Dst: mailbox_list_delete_symlink
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:827,1
    - Dst: mailbox_expunge_all_data
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:840,1
    - Dst: mailbox_mark_index_deleted
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:843,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:847,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:849,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:853,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:857,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 806
    functionDepth: 12
    functionLinenumber: 806
    functionLinenumberEnd: 863
    functionName: index_storage_mailbox_delete_pre
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_expunge_all_data
    - mailbox_mark_index_deleted
    - mailbox_list_delete_symlink
    - mailbox_sync
    - mailbox_get_open_status
    - mailbox_is_autocreated
    - index_storage_mailbox_delete_dir
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int index_storage_mailbox_delete_pre(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:870,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:876,1
    - Dst: index_storage_mailbox_unref_indexes
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:877,1
    - Dst: mail_index_alloc_cache_destroy_unrefed
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:878,1
    - Dst: struct mailbox*::list::v::delete_mailbox
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:880,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:881,1
    - Dst: mailbox_list_add_change
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:886,1
    - Dst: index_storage_mailbox_delete_dir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:890,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:891,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 865
    functionDepth: 9
    functionLinenumber: 865
    functionLinenumberEnd: 897
    functionName: index_storage_mailbox_delete_post
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mail_index_alloc_cache_destroy_unrefed
    - index_storage_mailbox_unref_indexes
    - struct mailbox*::list::v::delete_mailbox
    - mail_storage_copy_list_error
    - mailbox_close
    - index_storage_mailbox_delete_dir
    - mailbox_get_metadata
    - mailbox_list_add_change
    linkageType: ''
    returnType: int
    signature: int index_storage_mailbox_delete_post(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_delete_pre
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:903,1
    - Dst: index_storage_mailbox_delete_post
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 899
    functionDepth: 13
    functionLinenumber: 899
    functionLinenumberEnd: 910
    functionName: index_storage_mailbox_delete
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_delete_pre
    - index_storage_mailbox_delete_post
    linkageType: ''
    returnType: int
    signature: int index_storage_mailbox_delete(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox*::list::v::rename_mailbox
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:916,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:918,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:922,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:924,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:928,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:932,1
    - Dst: mailbox_name_get_sha128
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:937,1
    - Dst: mailbox_list_add_change
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:938,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct mailbox*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 912
    functionDepth: 9
    functionLinenumber: 912
    functionLinenumberEnd: 940
    functionName: index_storage_mailbox_rename
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_begin
    - mailbox_open
    - mail_index_transaction_commit
    - mailbox_name_get_sha128
    - mail_storage_copy_list_error
    - mail_index_update_header_ext
    - struct mailbox*::list::v::rename_mailbox
    - mailbox_list_add_change
    linkageType: ''
    returnType: int
    signature: int index_storage_mailbox_rename(struct mailbox *src, struct mailbox
      *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:946,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:948,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - view
    argTypes:
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 952
    functionName: index_mailbox_view_update_last_temp_file_scan
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_index_update_header
    linkageType: ''
    returnType: int
    signature: int index_mailbox_view_update_last_temp_file_scan(struct mail_index_view
      *view)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_view_update_last_temp_file_scan
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:956,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:957,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 954
    functionDepth: 3
    functionLinenumber: 954
    functionLinenumberEnd: 961
    functionName: index_mailbox_update_last_temp_file_scan
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - index_mailbox_view_update_last_temp_file_scan
    - mailbox_set_index_error
    linkageType: ''
    returnType: int
    signature: int index_mailbox_update_last_temp_file_scan(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 966
    functionName: index_storage_is_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool index_storage_is_readonly(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_is_inconsistent
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:971,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 972
    functionName: index_storage_is_inconsistent
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 1
    functionsReached:
    - mail_index_view_is_inconsistent
    linkageType: ''
    returnType: bool
    signature: bool index_storage_is_inconsistent(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:976,1
    - Dst: index_mail_save_finish
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:978,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:980,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:981,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:982,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:983,1
    - Dst: index_attachment_save_free
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:984,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:985,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 974
    functionDepth: 15
    functionLinenumber: 974
    functionLinenumberEnd: 988
    functionName: index_save_context_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mailbox_keywords_unref
    - index_attachment_save_free
    - i_free_and_null
    - index_mail_save_finish
    - i_assert
    linkageType: ''
    returnType: void
    signature: void index_save_context_free(struct mail_save_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_register_lookup
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1000,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1001,1
    - Dst: mail_cache_register_lookup
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1003,1
    - Dst: mail_cache_register_get_field
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1008,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1011,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1016,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1017,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1020,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1022,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1025,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1027,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1028,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1033,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1036,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1037,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1038,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1048,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 5
    argNames:
    - ctx
    - src_mail
    - dest_seq
    - name
    - buf
    argTypes:
    - struct mail_save_context*
    - struct mail*
    - uint32_t
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 990
    functionDepth: 12
    functionLinenumber: 990
    functionLinenumberEnd: 1051
    functionName: mail_copy_cache_field
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - buffer_append
    - memcpy
    - ENUM_NEGATE
    - mail_cache_register_lookup
    - mail_cache_register_get_field
    - buffer_set_used_size
    - mail_cache_lookup_field
    - INDEX_MAIL
    - mail_cache_add
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mail_copy_cache_field(struct mail_save_context *ctx, struct mail
      *src_mail,\n\t\t      uint32_t dest_seq, const char *name, buffer_t *buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_mail_get_vsize_extension
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1060,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1067,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - src_mail
    - dest_seq
    argTypes:
    - struct mail_save_context*
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1053
    functionDepth: 3
    functionLinenumber: 1053
    functionLinenumberEnd: 1071
    functionName: index_copy_vsize_extension
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - index_mail_get_vsize_extension
    - mail_index_update_ext
    linkageType: ''
    returnType: void
    signature: "void index_copy_vsize_extension(struct mail_save_context *ctx,\n\t\t\t
      \  struct mail *src_mail, uint32_t dest_seq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1081,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1084,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1088,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1091,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1093,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1094,1
    - Dst: mail_copy_cache_field
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1095,1
    - Dst: index_copy_vsize_extension
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1098,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1099,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - src_mail
    - dest_seq
    argTypes:
    - struct mail_save_context*
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1073
    functionDepth: 13
    functionLinenumber: 1073
    functionLinenumberEnd: 1100
    functionName: index_copy_cache_fields
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_metadata
    - i_unreached
    - buffer_create_dynamic
    - array_foreach
    - index_copy_vsize_extension
    - buffer_free
    - mail_copy_cache_field
    linkageType: ''
    returnType: void
    signature: "void index_copy_cache_fields(struct mail_save_context *ctx,\n\t\t\t
      \    struct mail *src_mail, uint32_t dest_seq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_subscribable
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1115,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1118,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1124,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1126,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1127,1
    - Dst: mailbox_list_set_subscribed
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1131,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1132,1
    - Dst: mailbox_name_get_sha128
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1140,1
    - Dst: mailbox_list_add_change
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - box
    - set
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1103
    functionDepth: 8
    functionLinenumber: 1103
    functionLinenumberEnd: 1144
    functionName: index_storage_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find_subscribable
    - mailbox_list_set_subscribed
    - mailbox_name_get_sha128
    - i_unreached
    - str_begins
    - mail_storage_copy_list_error
    - t_strconcat
    - mail_storage_set_error
    - mailbox_list_add_change
    linkageType: ''
    returnType: int
    signature: int index_storage_set_subscribed(struct mailbox *box, bool set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_wait
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1149,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1150,1
    - Dst: fs_unref
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1146
    functionDepth: 3
    functionLinenumber: 1146
    functionLinenumberEnd: 1153
    functionName: index_storage_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - fs_unref
    - dict_deinit
    - dict_wait
    linkageType: ''
    returnType: void
    signature: void index_storage_destroy(struct mail_storage *storage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1157,1
    - Dst: index_mailbox_vsize_update_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1162,1
    - Dst: index_mailbox_vsize_want_updates
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1163,1
    - Dst: index_mailbox_vsize_update_wait_lock
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1164,1
    - Dst: index_mailbox_vsize_update_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1155
    functionDepth: 7
    functionLinenumber: 1155
    functionLinenumberEnd: 1166
    functionName: index_storage_expunging_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - index_mailbox_vsize_update_wait_lock
    - index_mailbox_vsize_update_deinit
    - index_mailbox_vsize_want_updates
    - index_mailbox_vsize_update_init
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void index_storage_expunging_init(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1170,1
    - Dst: index_mailbox_vsize_update_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1168
    functionDepth: 6
    functionLinenumber: 1168
    functionLinenumberEnd: 1174
    functionName: index_storage_expunging_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - index_mailbox_vsize_update_deinit
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void index_storage_expunging_deinit(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1178,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1181,1
    - Dst: index_mailbox_vsize_update_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1183,1
    - Dst: index_mailbox_vsize_want_updates
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1184,1
    - Dst: index_mailbox_vsize_update_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1176
    functionDepth: 6
    functionLinenumber: 1176
    functionLinenumberEnd: 1187
    functionName: index_storage_expunging_want_updates
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - index_mailbox_vsize_update_deinit
    - index_mailbox_vsize_want_updates
    - index_mailbox_vsize_update_init
    - i_assert
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: bool
    signature: bool index_storage_expunging_want_updates(struct mailbox *box)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1195,1
    - Dst: mail_index_sync_have_any_expunges
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1200,1
    - Dst: index_storage_expunging_init
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1201,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1203,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1210,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1212,1
    - Dst: mail_index_sync_has_expunges
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1216,1
    - Dst: index_storage_expunging_want_updates
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1217,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1220,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1221,1
    - Dst: index_storage_expunged_sync_begin
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1222,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 5
    argNames:
    - box
    - ctx_r
    - view_r
    - trans_r
    - flags
    argTypes:
    - struct mailbox*
    - struct mail_index_sync_ctx**
    - struct mail_index_view**
    - struct mail_index_transaction**
    - enum mail_index_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1189
    functionDepth: 8
    functionLinenumber: 1189
    functionLinenumberEnd: 1226
    functionName: index_storage_expunged_sync_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 1
    functionsReached:
    - index_storage_expunged_sync_begin
    - index_storage_expunging_want_updates
    - mail_index_sync_rollback
    - index_storage_expunging_init
    - mailbox_set_index_error
    - mail_index_sync_begin
    - mail_index_sync_have_any_expunges
    - index_storage_expunging_deinit
    - mail_index_sync_has_expunges
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int index_storage_expunged_sync_begin(struct mailbox *box,\n\t\t\t\t
      \     struct mail_index_sync_ctx **ctx_r,\n\t\t\t\t      struct mail_index_view
      **view_r,\n\t\t\t\t      struct mail_index_transaction **trans_r,\n\t\t\t\t
      \     enum mail_index_sync_flags flags)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1235,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1241,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1246,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1247,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1249,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1250,1
    - Dst: index_mail_cache_parse_continue
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1255,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1260,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1263,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1264,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1264,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - input
    - cache_dest_mail
    argTypes:
    - struct mail_save_context*
    - struct istream*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1228
    functionDepth: 15
    functionLinenumber: 1228
    functionLinenumberEnd: 1268
    functionName: index_storage_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - index_mail_cache_parse_continue
    - mail_set_critical
    - i_unreached
    - o_stream_send_istream
    - o_stream_get_error
    - i_stream_get_error
    - i_stream_get_name
    - i_stream_read
    - mail_storage_set_error_from_errno
    linkageType: ''
    returnType: int
    signature: "int index_storage_save_continue(struct mail_save_context *ctx,\n\t\t\t\tstruct
      istream *input,\n\t\t\t\tstruct mail *cache_dest_mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1272,1
    - Dst: struct index_mail*::mail::v::close
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1277,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1279,1
    - Dst: mail_cache_transaction_reset
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - seq
    argTypes:
    - struct mail_save_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1270
    functionDepth: 3
    functionLinenumber: 1270
    functionLinenumberEnd: 1283
    functionName: index_storage_save_abort_last
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - struct index_mail*::mail::v::close
    - mail_cache_transaction_reset
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void index_storage_save_abort_last(struct mail_save_context *ctx, uint32_t
      seq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1298,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1302,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1304,1
    - Dst: mailbox_mkdir
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1306,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1310,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/index/index-storage.c:1313,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - box
    - path
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1285
    functionDepth: 5
    functionLinenumber: 1285
    functionLinenumberEnd: 1315
    functionName: index_mailbox_fix_inconsistent_existence
    functionSourceFile: /src/dovecot/src/lib-storage/index/index-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_set_deleted
    - mailbox_mkdir
    - stat
    - mailbox_set_critical
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int index_mailbox_fix_inconsistent_existence(struct mailbox *box,\n\t\t\t\t\t
      \    const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:23,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 28
    functionName: shared_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *shared_storage_alloc(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:37,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:38,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:39,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:41,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:43,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:54,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:55,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 3
    argNames:
    - storage
    - ns
    - error_r
    argTypes:
    - struct shared_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 62
    functionName: shared_ns_prefix_validate
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.c
    functionUses: 0
    functionsReached:
    - strchr
    - mail_namespace_get_sep
    - str_begins
    - i_isalnum
    - strlen
    linkageType: ''
    returnType: int
    signature: "int shared_ns_prefix_validate(struct shared_storage *storage,\n\t\t\t
      \ struct mail_namespace *ns, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SHARED_STORAGE
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:68,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:72,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:79,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:83,1
    - Dst: mail_user_get_storage_class
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:85,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:87,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:88,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:90,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:93,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:95,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:104,1
    - Dst: shared_ns_prefix_validate
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:106,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:112,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - _storage
    - ns
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 114
    functionName: shared_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - SHARED_STORAGE
    - p_strdup
    - strchr
    - shared_ns_prefix_validate
    - strlen
    - mail_user_get_storage_class
    - settings_free
    - settings_get
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int shared_storage_create(struct mail_storage *_storage, struct mail_namespace
      *ns,\n\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - storage
    - username
    argTypes:
    - struct shared_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: get_nonexistent_user_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\nget_nonexistent_user_path(struct shared_storage *storage,\n\t\t\t
      \ const char *username)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:139,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:140,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:142,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:143,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:143,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:144,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:145,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:146,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:147,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:149,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:152,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - storage
    - dest
    - user
    argTypes:
    - struct shared_storage*
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 157
    functionName: shared_storage_ns_prefix_expand
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.c
    functionUses: 1
    functionsReached:
    - strchr
    - i_unreached
    - str_begins
    - str_append
    - str_append_data
    - t_strcut
    linkageType: ''
    returnType: void
    signature: "void shared_storage_ns_prefix_expand(struct shared_storage *storage,\n\t\t\t\t
      \    string_t *dest, const char *user)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: SHARED_STORAGE
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:164,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:171,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:181,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:183,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:185,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:189,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:192,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:198,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:207,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:217,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:221,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:227,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:228,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:233,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:236,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:239,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:246,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:247,1
    - Dst: shared_storage_ns_prefix_expand
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:249,1
    - Dst: mail_namespace_find_prefix
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:251,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:251,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:253,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:254,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:259,1
    - Dst: mail_storage_service_user_get_service_ctx
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:261,1
    - Dst: mail_storage_service_user_get_event
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:263,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:265,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:267,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:283,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:285,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:289,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:290,1
    - Dst: shared_mail_user_init
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:295,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:297,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:300,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:301,1
    - Dst: mail_user_add_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:302,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:304,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 79
    argCount: 2
    argNames:
    - _ns
    - _name
    argTypes:
    - struct mail_namespace**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 159
    functionDepth: 9
    functionLinenumber: 159
    functionLinenumberEnd: 306
    functionName: shared_storage_get_namespace
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.c
    functionUses: 1
    functionsReached:
    - mail_namespace_get_sep
    - strchr
    - str_c
    - mail_user_deinit
    - mail_storage_service_lookup_next
    - io_loop_context_switch
    - mail_user_add_namespace
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mail_storage_service_user_get_event
    - event_get_parent
    - t_str_new
    - i_strchr_to_next
    - i_unreached
    - mailbox_list_get_storage_name
    - SHARED_STORAGE
    - mail_storage_service_user_get_service_ctx
    - mailbox_list_set_error
    - shared_storage_ns_prefix_expand
    - mailbox_list_set_critical
    - mail_storage_service_user_get_settings_instance
    - str_begins
    - mail_namespace_find_prefix
    - shared_mail_user_init
    - t_strdup_until
    - str_append
    - io_loop_get_current_context
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int shared_storage_get_namespace(struct mail_namespace **_ns,\n\t\t\t\t
      const char **_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:325,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 313
    functionDepth: 4
    functionLinenumber: 313
    functionLinenumberEnd: 336
    functionName: shared_mail_user_var_home
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.c
    functionUses: 0
    functionsReached:
    - mail_user_get_home
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int shared_mail_user_var_home(const char *key ATTR_UNUSED,\n\t\t\t
      \ const char **value_r, void *context,\n\t\t\t  const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SHARED_STORAGE
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:345,1
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:350,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:353,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:358,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:360,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:368,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:370,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:375,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:376,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:377,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:378,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:386,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:388,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:390,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:391,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:394,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:397,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:401,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:406,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:410,1
    - Dst: settings_instance_dup
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:412,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:413,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:416,1
    - Dst: get_nonexistent_user_path
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:417,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:420,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:425,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:431,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:434,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:435,1
    - Dst: mail_namespaces_init_location
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:443,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:444,1
    - Dst: mail_namespace_destroy
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:448,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:449,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:455,1
    - Dst: mail_storage_create
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:457,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:459,1
    - Dst: mail_namespace_destroy
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:462,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:463,1
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:472,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/shared/shared-storage.c:474,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 61
    argCount: 7
    argNames:
    - _storage
    - user
    - owner
    - _ns
    - username
    - domain
    - new_ns_prefix
    argTypes:
    - struct mail_storage*
    - struct mail_user*
    - struct mail_user*
    - struct mail_namespace**
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 338
    functionDepth: 13
    functionLinenumber: 338
    functionLinenumberEnd: 478
    functionName: shared_mail_user_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - mail_namespace_get_sep
    - p_strdup
    - mail_user_deinit
    - event_unref
    - mail_storage_create
    - t_strdup_printf
    - i_strdup
    - settings_override
    - p_new
    - event_set_ptr
    - event_add_str
    - p_memdup
    - SHARED_STORAGE
    - event_create
    - mail_user_get_home
    - mail_namespace_get_default_storage
    - mailbox_list_set_critical
    - mail_storage_service_user_get_settings_instance
    - e_error
    - mail_namespace_destroy
    - mail_namespaces_init_location
    - ENUM_NEGATE
    - settings_instance_dup
    - e_debug
    - settings_free
    - settings_event_add_list_filter_name
    - i_new
    - get_nonexistent_user_path
    - settings_get
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int shared_mail_user_init(struct mail_storage *_storage,\n\t\t      struct
      mail_user *user, struct mail_user *owner,\n\t\t      struct mail_namespace **_ns,
      const char *username,\n\t\t      const char *domain, const char *new_ns_prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: SHARED_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-storage.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHARED_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:17,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 22
    functionName: shared_list_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *shared_list_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: shared_list_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void shared_list_deinit(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:35,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - shared_list
    - backend_ns
    argTypes:
    - struct mailbox_list*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 37
    functionName: shared_list_copy_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - mailbox_list_get_last_error
    linkageType: ''
    returnType: void
    signature: "void shared_list_copy_error(struct mailbox_list *shared_list,\n\t\t\t\t
      \  struct mail_namespace *backend_ns)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:47,1
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:54,1
    - Dst: mailbox_list_get_storage
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:57,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - list
    - vname
    - flags
    - storage_r
    argTypes:
    - struct mailbox_list**
    - char**
    - enum mailbox_list_get_storage_flags
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 39
    functionDepth: 10
    functionLinenumber: 39
    functionLinenumberEnd: 58
    functionName: shared_get_storage
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_storage
    - shared_storage_get_namespace
    - mailbox_list_get_storage_name
    linkageType: ''
    returnType: int
    signature: "int shared_get_storage(struct mailbox_list **list, const char **vname,\n\t\t
      \  enum mailbox_list_get_storage_flags flags,\n\t\t   struct mail_storage **storage_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: shared_list_get_hierarchy_sep
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char shared_list_get_hierarchy_sep(struct mailbox_list *list ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:71,1
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:73,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - list
    - name
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 65
    functionDepth: 10
    functionLinenumber: 65
    functionLinenumberEnd: 79
    functionName: shared_list_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - mail_namespace_get_default_storage
    - shared_storage_get_namespace
    linkageType: ''
    returnType: int
    signature: "int shared_list_get_path(struct mailbox_list *list, const char *name,\n\t\t
      \    enum mailbox_list_path_type type, const char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: shared_list_get_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: char
    signature: 'char *

      shared_list_get_temp_prefix(struct mailbox_list *list, bool global ATTR_UNUSED)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:95,1
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:99,1
    - Dst: mailbox_list_join_refpattern
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:100,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:104,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 3
    argNames:
    - list
    - ref
    - pattern
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 88
    functionDepth: 10
    functionLinenumber: 88
    functionLinenumberEnd: 106
    functionName: shared_list_join_refpattern
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - str_begins
    - shared_storage_get_namespace
    - t_strconcat
    - mailbox_list_join_refpattern
    linkageType: ''
    returnType: char
    signature: "char *\nshared_list_join_refpattern(struct mailbox_list *list,\n\t\t\t
      \   const char *ref, const char *pattern)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:113,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:123,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:136,1
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:137,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - list
    - patterns
    argTypes:
    - struct mailbox_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 108
    functionDepth: 10
    functionLinenumber: 108
    functionLinenumberEnd: 140
    functionName: shared_list_create_missing_namespaces
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - shared_storage_get_namespace
    - strncmp
    - t_strdup_until
    linkageType: ''
    returnType: void
    signature: "void shared_list_create_missing_namespaces(struct mailbox_list *list,\n\t\t\t\t
      \     const char *const *patterns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:148,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:150,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:151,1
    - Dst: imap_match_init_multiple
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:155,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:156,1
    - Dst: shared_list_create_missing_namespaces
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 142
    functionDepth: 11
    functionLinenumber: 142
    functionLinenumberEnd: 161
    functionName: shared_list_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - pool_alloconly_create
    - imap_match_init_multiple
    - p_new
    - shared_list_create_missing_namespaces
    - array_create
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nshared_list_iter_init(struct
      mailbox_list *list, const char *const *patterns,\n\t\t      enum mailbox_list_iter_flags
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 169
    functionName: shared_list_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      shared_list_iter_next(struct mailbox_list_iterate_context *ctx ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: shared_list_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int shared_list_iter_deinit(struct mailbox_list_iterate_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:184,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - src_list
    - dest_list
    argTypes:
    - struct mailbox_list*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 188
    functionName: shared_list_subscriptions_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_tree_init
    linkageType: ''
    returnType: int
    signature: "int shared_list_subscriptions_refresh(struct mailbox_list *src_list,\n\t\t\t\t
      \ struct mailbox_list *dest_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:196,1
    - Dst: mailbox_list_set_subscribed
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:198,1
    - Dst: shared_list_copy_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - list
    - name
    - set
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 10
    functionLinenumber: 190
    functionLinenumberEnd: 202
    functionName: shared_list_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - shared_storage_get_namespace
    - mailbox_list_set_subscribed
    - shared_list_copy_error
    linkageType: ''
    returnType: int
    signature: "int shared_list_set_subscribed(struct mailbox_list *list,\n\t\t\t\t
      \     const char *name, bool set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:210,1
    - Dst: struct mail_namespace*::list::v::delete_mailbox
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:212,1
    - Dst: shared_list_copy_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 204
    functionDepth: 10
    functionLinenumber: 204
    functionLinenumberEnd: 216
    functionName: shared_list_delete_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - shared_storage_get_namespace
    - struct mail_namespace*::list::v::delete_mailbox
    - shared_list_copy_error
    linkageType: ''
    returnType: int
    signature: int shared_list_delete_mailbox(struct mailbox_list *list, const char
      *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:224,1
    - Dst: mailbox_list_delete_dir
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:226,1
    - Dst: shared_list_copy_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 218
    functionDepth: 10
    functionLinenumber: 218
    functionLinenumberEnd: 230
    functionName: shared_list_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - shared_storage_get_namespace
    - mailbox_list_delete_dir
    - shared_list_copy_error
    linkageType: ''
    returnType: int
    signature: int shared_list_delete_dir(struct mailbox_list *list, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:238,1
    - Dst: mailbox_list_delete_symlink
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:240,1
    - Dst: shared_list_copy_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 232
    functionDepth: 10
    functionLinenumber: 232
    functionLinenumberEnd: 244
    functionName: shared_list_delete_symlink
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - shared_storage_get_namespace
    - mailbox_list_delete_symlink
    - shared_list_copy_error
    linkageType: ''
    returnType: int
    signature: int shared_list_delete_symlink(struct mailbox_list *list, const char
      *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:254,1
    - Dst: shared_storage_get_namespace
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:255,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:258,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    - ns_r
    argTypes:
    - struct mailbox_list*
    - char**
    - struct mailbox_list*
    - char**
    - struct mail_namespace**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 246
    functionDepth: 10
    functionLinenumber: 246
    functionLinenumberEnd: 264
    functionName: shared_list_rename_get_ns
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - shared_storage_get_namespace
    linkageType: ''
    returnType: int
    signature: "int shared_list_rename_get_ns(struct mailbox_list *oldlist,\n\t\t\t\t
      \    const char **oldname,\n\t\t\t\t     struct mailbox_list *newlist,\n\t\t\t\t
      \    const char **newname,\n\t\t\t\t     struct mail_namespace **ns_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: shared_list_rename_get_ns
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:273,1
    - Dst: struct mail_namespace*::list::v::rename_mailbox
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:277,1
    - Dst: shared_list_copy_error
      Src: /src/dovecot/src/lib-storage/index/shared/shared-list.c:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 266
    functionDepth: 11
    functionLinenumber: 266
    functionLinenumberEnd: 281
    functionName: shared_list_rename_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/shared/shared-list.c
    functionUses: 0
    functionsReached:
    - shared_list_copy_error
    - shared_list_rename_get_ns
    - struct mail_namespace*::list::v::rename_mailbox
    linkageType: ''
    returnType: int
    signature: "int shared_list_rename_mailbox(struct mailbox_list *oldlist, const
      char *oldname,\n\t\t\t   struct mailbox_list *newlist, const char *newname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: POP3C_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP3C_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: POP3C_MAILBOX
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP3C_MAILBOX(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: POP3C_MAIL
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP3C_MAIL(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:30,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 35
    functionName: pop3c_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *pop3c_storage_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_STORAGE
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:42,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:44,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:56,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - _storage
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 61
    functionName: pop3c_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - POP3C_STORAGE
    - settings_get
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int pop3c_storage_create(struct mail_storage *_storage,\n\t\t     struct
      mail_namespace *ns ATTR_UNUSED,\n\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_STORAGE
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:65,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:67,1
    - Dst: index_storage_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 63
    functionDepth: 4
    functionLinenumber: 63
    functionLinenumberEnd: 69
    functionName: pop3c_storage_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - POP3C_STORAGE
    - index_storage_destroy
    - settings_free
    linkageType: ''
    returnType: void
    signature: void pop3c_storage_destroy(struct mail_storage *_storage)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:78,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:86,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:88,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:89,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:90,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:92,1
    - Dst: mail_user_home_expand
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:94,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:99,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:101,1
    - Dst: pop3c_client_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - storage
    - set
    argTypes:
    - struct mail_storage*
    - struct pop3c_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 106
    functionName: pop3c_client_create_from_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - strcmp
    - mail_user_set_get_temp_prefix
    - pop3c_client_init
    - event_want_debug
    - t_strconcat
    - mail_user_home_expand
    linkageType: ''
    returnType: struct pop3c_client
    signature: "struct pop3c_client *\npop3c_client_create_from_set(struct mail_storage
      *storage,\n\t\t\t     const struct pop3c_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:115,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:116,1
    - Dst: POP3C_STORAGE
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:123,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 108
    functionDepth: 6
    functionLinenumber: 108
    functionLinenumberEnd: 127
    functionName: pop3c_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - POP3C_STORAGE
    - index_storage_mailbox_alloc
    - p_new
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\npop3c_mailbox_alloc(struct mail_storage *storage,
      struct mailbox_list *list,\n\t\t    const char *vname, enum mailbox_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - box
    - auto_boxes
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 138
    functionName: pop3c_mailbox_exists
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_is_autocreated
    linkageType: ''
    returnType: int
    signature: "int pop3c_mailbox_exists(struct mailbox *box, bool auto_boxes,\n\t\t
      \    enum mailbox_existence *existence_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:151,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:152,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:156,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:161,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - state
    - reply
    - context
    argTypes:
    - enum pop3c_command_state
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 140
    functionDepth: 4
    functionLinenumber: 140
    functionLinenumberEnd: 165
    functionName: pop3c_login_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - str_begins
    - mail_storage_set_error
    - mailbox_set_critical
    linkageType: ''
    returnType: void
    signature: "void pop3c_login_callback(enum pop3c_command_state state,\n\t\t\t\t
      const char *reply, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:169,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:171,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:172,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:173,1
    - Dst: index_storage_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:177,1
    - Dst: pop3c_client_create_from_set
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:180,1
    - Dst: pop3c_client_login
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:182,1
    - Dst: pop3c_client_wait_one
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 167
    functionDepth: 9
    functionLinenumber: 167
    functionLinenumberEnd: 185
    functionName: pop3c_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - index_storage_mailbox_open
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - pop3c_client_create_from_set
    - pop3c_client_wait_one
    - POP3C_MAILBOX
    - mail_storage_set_error
    - pop3c_client_login
    linkageType: ''
    returnType: int
    signature: int pop3c_mailbox_open(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:189,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:191,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:192,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:193,1
    - Dst: pop3c_client_deinit
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:194,1
    - Dst: index_storage_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 187
    functionDepth: 6
    functionLinenumber: 187
    functionLinenumberEnd: 196
    functionName: pop3c_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - i_free_and_null
    - pool_unref
    - pop3c_client_deinit
    - index_storage_mailbox_close
    - POP3C_MAILBOX
    linkageType: ''
    returnType: void
    signature: void pop3c_mailbox_close(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: pop3c_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int pop3c_mailbox_create(struct mailbox *box,\n\t\t     const struct
      mailbox_update *update ATTR_UNUSED,\n\t\t     bool directory ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:212,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:215,1
    - Dst: index_storage_mailbox_update
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:218,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - box
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 208
    functionDepth: 10
    functionLinenumber: 208
    functionLinenumberEnd: 219
    functionName: pop3c_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_update
    - guid_128_is_empty
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int pop3c_mailbox_update(struct mailbox *box,\n\t\t     const struct
      mailbox_update *update ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:225,1
    - Dst: index_storage_get_status
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:227,1
    - Dst: pop3c_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 221
    functionDepth: 12
    functionLinenumber: 221
    functionLinenumberEnd: 234
    functionName: pop3c_mailbox_get_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_get_status
    - pop3c_client_get_capabilities
    - POP3C_MAILBOX
    linkageType: ''
    returnType: int
    signature: "int pop3c_mailbox_get_status(struct mailbox *box,\n\t\t\t\t    enum
      mailbox_status_items items,\n\t\t\t\t    struct mailbox_status *status_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_generate_guid_128_hash
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:243,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:244,1
    - Dst: index_mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 236
    functionDepth: 12
    functionLinenumber: 236
    functionLinenumberEnd: 251
    functionName: pop3c_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - mail_generate_guid_128_hash
    - ENUM_NEGATE
    - index_mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int pop3c_mailbox_get_metadata(struct mailbox *box,\n\t\t\t\t      enum
      mailbox_metadata_items items,\n\t\t\t\t      struct mailbox_metadata *metadata_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 255
    functionName: pop3c_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pop3c_notify_changes(struct mailbox *box ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 265
    functionName: pop3c_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      pop3c_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 274
    functionName: pop3c_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int pop3c_save_begin(struct mail_save_context *ctx,\n\t\t struct istream
      *input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 279
    functionName: pop3c_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pop3c_save_continue(struct mail_save_context *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 281
    functionDepth: 16
    functionLinenumber: 281
    functionLinenumberEnd: 285
    functionName: pop3c_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - index_save_context_free
    linkageType: ''
    returnType: int
    signature: int pop3c_save_finish(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 287
    functionDepth: 16
    functionLinenumber: 287
    functionLinenumberEnd: 291
    functionName: pop3c_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - index_save_context_free
    linkageType: ''
    returnType: void
    signature: void pop3c_save_cancel(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:295,1
    - Dst: index_storage_is_inconsistent
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:297,1
    - Dst: pop3c_client_is_connected
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c:298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: pop3c_storage_is_inconsistent
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_is_inconsistent
    - pop3c_client_is_connected
    - POP3C_MAILBOX
    linkageType: ''
    returnType: bool
    signature: bool pop3c_storage_is_inconsistent(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:112,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:113,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:115,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:116,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:119,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:122,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:124,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:125,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:126,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:128,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:129,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - set
    - event_parent
    argTypes:
    - struct pop3c_client_settings*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 134
    functionName: pop3c_client_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached:
    - event_set_forced_debug
    - pool_alloconly_create
    - event_create
    - p_new
    - p_array_init
    - p_strdup
    - p_strdup_empty
    linkageType: ''
    returnType: struct pop3c_client
    signature: "struct pop3c_client *\npop3c_client_init(const struct pop3c_client_settings
      *set,\n\t\t  struct event *event_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - client
    - state
    - reason
    argTypes:
    - struct pop3c_client*
    - enum pop3c_command_state
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 148
    functionName: client_login_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - callback
    linkageType: ''
    returnType: void
    signature: "void client_login_callback(struct pop3c_client *client,\n\t\t      enum
      pop3c_command_state state, const char *reason)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:157,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:158,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:158,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:160,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:165,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:166,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:172,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:175,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:176,1
    - Dst: callback
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:179,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - client
    - state
    - reply
    argTypes:
    - struct pop3c_client*
    - enum pop3c_command_state
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 182
    functionName: pop3c_client_async_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - array_pop_front
    - i_stream_chain_append
    - array_count
    - io_loop_stop
    - i_stream_seek
    - callback
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void pop3c_client_async_callback(struct pop3c_client *client,\n\t\t\t
      \   enum pop3c_command_state state, const char *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pop3c_client_async_callback
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 189
    functionName: pop3c_client_async_callback_disconnected
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - pop3c_client_async_callback
    linkageType: ''
    returnType: void
    signature: void pop3c_client_async_callback_disconnected(struct pop3c_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:196,1
    - Dst: dns_lookup_abort
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:199,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:200,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:201,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:202,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:203,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:204,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:205,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:206,1
    - Dst: pop3c_client_async_callback_disconnected
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:207,1
    - Dst: client_login_callback
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 210
    functionName: pop3c_client_disconnect
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - client_login_callback
    - io_remove
    - i_close_fd
    - pop3c_client_async_callback_disconnected
    - ssl_iostream_destroy
    - io_loop_stop
    - array_count
    - dns_lookup_abort
    - timeout_remove
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void pop3c_client_disconnect(struct pop3c_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:216,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:217,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct pop3c_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 212
    functionDepth: 4
    functionLinenumber: 212
    functionLinenumberEnd: 219
    functionName: pop3c_client_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached:
    - pool_unref
    - event_unref
    - pop3c_client_disconnect
    linkageType: ''
    returnType: void
    signature: void pop3c_client_deinit(struct pop3c_client **_client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:224,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:226,1
    - Dst: o_stream_switch_ioloop
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:228,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: pop3c_client_ioloop_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io
    - io_loop_move_timeout
    - o_stream_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void pop3c_client_ioloop_changed(struct pop3c_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:235,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:237,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:241,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:246,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 231
    functionDepth: 4
    functionLinenumber: 231
    functionLinenumberEnd: 253
    functionName: pop3c_client_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - net_ip2addr
    - pop3c_client_disconnect
    linkageType: ''
    returnType: void
    signature: void pop3c_client_timeout(struct pop3c_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:257,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:264,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:266,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:268,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:271,1
    - Dst: pop3c_client_connect_ip
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:273,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:275,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 281
    functionName: pop3c_client_dns_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - dns_lookup
    - e_error
    - net_gethostbyname
    - net_gethosterror
    - i_assert
    - pop3c_client_connect_ip
    linkageType: ''
    returnType: int
    signature: int pop3c_client_dns_lookup(struct pop3c_client *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:289,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:290,1
    - Dst: pop3c_client_async_callback_disconnected
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:291,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:295,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:297,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:297,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:300,1
    - Dst: pop3c_client_ioloop_changed
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:301,1
    - Dst: pop3c_client_dns_lookup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:306,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:309,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:316,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:321,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:323,1
    - Dst: pop3c_client_ioloop_changed
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:324,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:325,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:326,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 327
    functionName: pop3c_client_wait_one
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached:
    - io_loop_set_current
    - timeout_add
    - pop3c_client_async_callback_disconnected
    - io_loop_create
    - io_loop_destroy
    - pop3c_client_ioloop_changed
    - array_count
    - pop3c_client_dns_lookup
    - i_assert
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void pop3c_client_wait_one(struct pop3c_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 333
    functionName: pop3c_client_starttls
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void pop3c_client_starttls(struct pop3c_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:340,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:344,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:351,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:352,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 358
    functionName: pop3c_client_authenticate1
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - e_debug
    - o_stream_nsend_str
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void pop3c_client_authenticate1(struct pop3c_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:366,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:368,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:369,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:370,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:372,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:373,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:375,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:376,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:378,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:379,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:379,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:379,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:380,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 382
    functionName: pop3c_client_get_sasl_plain_request
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - base64_encode
    - str_append
    linkageType: ''
    returnType: char
    signature: 'char *

      pop3c_client_get_sasl_plain_request(struct pop3c_client *client)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:386,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:387,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:390,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 395
    functionName: pop3c_client_login_finished
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - io_remove
    - io_loop_stop
    - timeout_remove
    - io_add_istream
    linkageType: ''
    returnType: void
    signature: void pop3c_client_login_finished(struct pop3c_client *client)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:406,1
    - Dst: pop3c_client_starttls
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:411,1
    - Dst: pop3c_client_authenticate1
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:413,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:417,1
    - Dst: pop3c_client_ssl_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:420,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:421,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:425,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:431,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:432,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:435,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:436,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:442,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:445,1
    - Dst: pop3c_client_get_sasl_plain_request
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:446,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:452,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:453,1
    - Dst: client_login_callback
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:455,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:459,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:466,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:470,1
    - Dst: pop3c_client_login_finished
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:474,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:476,1
    - Dst: pop3c_client_login_finished
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:477,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:481,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:483,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:485,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:491,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 76
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct pop3c_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 397
    functionDepth: 4
    functionLinenumber: 397
    functionLinenumberEnd: 494
    functionName: pop3c_client_prelogin_input_line
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - client_login_callback
    - pop3c_client_disconnect
    - i_unreached
    - pop3c_client_login_finished
    - timeout_add
    - pop3c_client_authenticate1
    - t_strdup_printf
    - pop3c_client_get_sasl_plain_request
    - pop3c_client_ssl_init
    - pop3c_client_starttls
    - e_error
    - str_begins_icase
    - str_begins_icase_with
    - strcasecmp
    - o_stream_nsend_str
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int pop3c_client_prelogin_input_line(struct pop3c_client *client, const
      char *line)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:500,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:504,1
    - Dst: pop3c_client_prelogin_input_line
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:505,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:506,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:515,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:517,1
    - Dst: strerror
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:520,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:522,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:524,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 496
    functionDepth: 5
    functionLinenumber: 496
    functionLinenumberEnd: 526
    functionName: pop3c_client_prelogin_input
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - pop3c_client_disconnect
    - strerror
    - i_stream_read_next_line
    - e_error
    - ssl_iostream_get_last_error
    - pop3c_client_prelogin_input_line
    - i_assert
    linkageType: ''
    returnType: void
    signature: void pop3c_client_prelogin_input(struct pop3c_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_check_cert_validity
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:534,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:538,1
    - Dst: ssl_iostream_get_allow_invalid_cert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:539,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - error_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 528
    functionDepth: 2
    functionLinenumber: 528
    functionLinenumberEnd: 551
    functionName: pop3c_client_ssl_handshaked
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - e_debug
    - ssl_iostream_check_cert_validity
    - ssl_iostream_get_allow_invalid_cert
    linkageType: ''
    returnType: enum ssl_iostream_state
    signature: enum ssl_iostream_state pop3c_client_ssl_handshaked(const char **error_r,
      void *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:557,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:561,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:562,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:563,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:564,1
    - Dst: io_stream_autocreate_ssl_client
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:580,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:583,1
    - Dst: ssl_iostream_set_handshake_callback
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:587,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:590,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:591,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:592,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:597,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:601,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:602,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:603,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 553
    functionDepth: 5
    functionLinenumber: 553
    functionLinenumberEnd: 606
    functionName: pop3c_client_ssl_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached:
    - io_add_istream
    - e_debug
    - io_remove
    - ssl_iostream_set_handshake_callback
    - i_stream_ref
    - ssl_iostream_handshake
    - o_stream_ref
    - e_error
    - ssl_iostream_get_last_error
    - iostream_rawlog_create
    - io_stream_autocreate_ssl_client
    - i_assert
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int pop3c_client_ssl_init(struct pop3c_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_geterror
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:612,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:614,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:615,1
    - Dst: strerror
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:615,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:616,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:619,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:620,1
    - Dst: pop3c_client_ssl_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:624,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:625,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 608
    functionDepth: 6
    functionLinenumber: 608
    functionLinenumberEnd: 627
    functionName: pop3c_client_connected
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - pop3c_client_disconnect
    - io_add
    - net_geterror
    - io_remove
    - strerror
    - pop3c_client_ssl_init
    - e_error
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: void pop3c_client_connected(struct pop3c_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_connect_ip
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:631,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:633,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:638,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:640,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:641,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:645,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:648,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:650,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:652,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 629
    functionDepth: 4
    functionLinenumber: 629
    functionLinenumberEnd: 654
    functionName: pop3c_client_connect_ip
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached:
    - o_stream_create_fd
    - i_stream_create_fd
    - pop3c_client_disconnect
    - io_add
    - e_debug
    - timeout_add
    - o_stream_set_no_error_handling
    - net_ip2addr
    - iostream_rawlog_create
    - net_connect_ip
    linkageType: ''
    returnType: void
    signature: void pop3c_client_connect_ip(struct pop3c_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:666,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:667,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:671,1
    - Dst: pop3c_client_connect_ip
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:673,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - result
    - client
    argTypes:
    - struct dns_lookup_result*
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 656
    functionDepth: 5
    functionLinenumber: 656
    functionLinenumberEnd: 674
    functionName: pop3c_dns_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_assert
    - pop3c_client_disconnect
    - pop3c_client_connect_ip
    linkageType: ''
    returnType: void
    signature: "void pop3c_dns_callback(const struct dns_lookup_result *result,\n\t\t
      \  struct pop3c_client *client)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:680,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:683,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - client
    - callback
    - context
    argTypes:
    - struct pop3c_client*
    - pop3c_login_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 689
    functionName: pop3c_client_login
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached:
    - e_debug
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void pop3c_client_login(struct pop3c_client *client,\n\t\t\tpop3c_login_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 694
    functionName: pop3c_client_is_connected
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pop3c_client_is_connected(struct pop3c_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 700
    functionName: pop3c_client_get_capabilities
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum pop3c_capability
    signature: enum pop3c_capability pop3c_client_get_capabilities(struct pop3c_client
      *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:706,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:707,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:708,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:712,1
    - Dst: pop3c_client_async_callback
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:722,1
    - Dst: pop3c_client_async_callback_disconnected
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:725,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 702
    functionDepth: 3
    functionLinenumber: 702
    functionLinenumberEnd: 728
    functionName: pop3c_client_dot_input
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_get_data_size
    - pop3c_client_async_callback_disconnected
    - i_stream_skip
    - i_stream_read
    - pop3c_client_async_callback
    linkageType: ''
    returnType: int
    signature: int pop3c_client_dot_input(struct pop3c_client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:736,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:740,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:742,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:745,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:751,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:752,1
    - Dst: pop3c_client_async_callback
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:755,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 730
    functionDepth: 2
    functionLinenumber: 730
    functionLinenumberEnd: 758
    functionName: pop3c_client_input_next_reply
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - i_stream_read_next_line
    - e_error
    - str_begins_icase
    - array_count
    - pop3c_client_async_callback
    linkageType: ''
    returnType: int
    signature: int pop3c_client_input_next_reply(struct pop3c_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:765,1
    - Dst: pop3c_client_dot_input
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:769,1
    - Dst: pop3c_client_input_next_reply
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:772,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:777,1
    - Dst: pop3c_client_disconnect
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:778,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct pop3c_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 760
    functionDepth: 4
    functionLinenumber: 760
    functionLinenumberEnd: 780
    functionName: pop3c_client_input
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - pop3c_client_disconnect
    - pop3c_client_dot_input
    - timeout_reset
    - pop3c_client_input_next_reply
    - e_error
    linkageType: ''
    returnType: void
    signature: void pop3c_client_input(struct pop3c_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:787,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - state
    - reply
    - context
    argTypes:
    - enum pop3c_command_state
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 791
    functionName: pop3c_client_cmd_reply
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void pop3c_client_cmd_reply(enum pop3c_command_state state,\n\t\t\t\t
      \  const char *reply, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:798,1
    - Dst: pop3c_client_cmd_line_async
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:799,1
    - Dst: pop3c_client_wait_one
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:801,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:802,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:803,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - client
    - cmdline
    - reply_r
    argTypes:
    - struct pop3c_client*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 793
    functionDepth: 4
    functionLinenumber: 793
    functionLinenumberEnd: 805
    functionName: pop3c_client_cmd_line
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pop3c_client_wait_one
    - t_strdup
    - i_free
    - pop3c_client_cmd_line_async
    linkageType: ''
    returnType: int
    signature: "int pop3c_client_cmd_line(struct pop3c_client *client, const char
      *cmdline,\n\t\t\t  const char **reply_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:814,1
    - Dst: pop3c_client_wait_one
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:815,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:817,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:820,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:822,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - client
    - cmdline
    - callback
    - context
    argTypes:
    - struct pop3c_client*
    - char*
    - pop3c_cmd_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 807
    functionDepth: 4
    functionLinenumber: 807
    functionLinenumberEnd: 826
    functionName: pop3c_client_cmd_line_async
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached:
    - array_append_space
    - array_count
    - pop3c_client_wait_one
    - o_stream_nsend_str
    - i_assert
    linkageType: ''
    returnType: struct pop3c_client_cmd
    signature: "struct pop3c_client_cmd *\npop3c_client_cmd_line_async(struct pop3c_client
      *client, const char *cmdline,\n\t\t\t    pop3c_cmd_callback_t *callback, void
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pop3c_client_cmd_line_async
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - cmdline
    argTypes:
    - struct pop3c_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 828
    functionDepth: 5
    functionLinenumber: 828
    functionLinenumberEnd: 832
    functionName: pop3c_client_cmd_line_async_nocb
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - pop3c_client_cmd_line_async
    linkageType: ''
    returnType: void
    signature: "void pop3c_client_cmd_line_async_nocb(struct pop3c_client *client,\n\t\t\t\t
      \     const char *cmdline)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:840,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:841,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:842,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:844,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:845,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:850,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:850,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:852,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:856,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - path_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 858
    functionName: seekable_fd_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_close_fd
    - i_unlink
    - e_error
    - str_append
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: int seekable_fd_callback(const char **path_r, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:871,1
    - Dst: pop3c_client_cmd_stream_async
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:872,1
    - Dst: pop3c_client_wait_one
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:875,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:876,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:877,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:881,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - client
    - cmdline
    - input_r
    - error_r
    argTypes:
    - struct pop3c_client*
    - char*
    - struct istream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 860
    functionDepth: 4
    functionLinenumber: 860
    functionLinenumberEnd: 884
    functionName: pop3c_client_cmd_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pop3c_client_cmd_stream_async
    - pop3c_client_wait_one
    - i_stream_unref
    - t_strdup
    - i_free
    linkageType: ''
    returnType: int
    signature: "int pop3c_client_cmd_stream(struct pop3c_client *client, const char
      *cmdline,\n\t\t\t    struct istream **input_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pop3c_client_cmd_line_async
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:893,1
    - Dst: i_stream_create_chain
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:895,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:896,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:899,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:901,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:902,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c:904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - client
    - cmdline
    - callback
    - context
    argTypes:
    - struct pop3c_client*
    - char*
    - pop3c_cmd_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 886
    functionDepth: 5
    functionLinenumber: 886
    functionLinenumberEnd: 906
    functionName: pop3c_client_cmd_stream_async
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-client.c
    functionUses: 1
    functionsReached:
    - i_stream_create_seekable
    - i_stream_ref
    - i_stream_create_chain
    - i_stream_unref
    - i_stream_create_dot
    - pop3c_client_cmd_line_async
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\npop3c_client_cmd_stream_async(struct pop3c_client
      *client, const char *cmdline,\n\t\t\t      pop3c_cmd_callback_t *callback, void
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:19,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:20,1
    - Dst: index_mail_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - t
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 24
    functionName: pop3c_mail_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_init
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\npop3c_mail_alloc(struct mailbox_transaction_context
      *t,\n\t\t enum mail_fetch_field wanted_fields,\n\t\t struct mailbox_header_lookup_ctx
      *wanted_headers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAIL
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:28,1
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:29,1
    - Dst: pop3c_client_wait_one
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:33,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:34,1
    - Dst: index_mail_close
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 15
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: pop3c_mail_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_close
    - pop3c_client_wait_one
    - i_stream_unref
    - POP3C_MAIL
    - POP3C_MAILBOX
    linkageType: ''
    returnType: void
    signature: void pop3c_mail_close(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:40,1
    - Dst: index_mail_get_date
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 38
    functionDepth: 11
    functionLinenumber: 38
    functionLinenumberEnd: 53
    functionName: pop3c_mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_date
    - POP3C_MAILBOX
    linkageType: ''
    returnType: int
    signature: int pop3c_mail_get_received_date(struct mail *_mail, time_t *date_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:57,1
    - Dst: pop3c_mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 12
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: pop3c_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - pop3c_mail_get_received_date
    linkageType: ''
    returnType: int
    signature: int pop3c_mail_get_save_date(struct mail *_mail, time_t *date_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:72,1
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:73,1
    - Dst: index_mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:83,1
    - Dst: pop3c_sync_get_sizes
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:97,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:106,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 70
    functionDepth: 14
    functionLinenumber: 70
    functionLinenumberEnd: 109
    functionName: pop3c_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_physical_size
    - i_assert
    - INDEX_MAIL
    - mail_get_stream
    - POP3C_MAILBOX
    - pop3c_sync_get_sizes
    linkageType: ''
    returnType: int
    signature: int pop3c_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 120
    functionName: pop3c_mail_cache_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - i_stream_get_size
    linkageType: ''
    returnType: void
    signature: void pop3c_mail_cache_size(struct index_mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - state
    - ATTR_UNUSED
    - context
    argTypes:
    - enum pop3c_command_state
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 139
    functionName: pop3c_mail_prefetch_done
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void pop3c_mail_prefetch_done(enum pop3c_command_state state,\n\t\t\t
      const char *reply ATTR_UNUSED, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAIL
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:143,1
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:144,1
    - Dst: mail_stream_access_start
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:150,1
    - Dst: pop3c_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:151,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:155,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:157,1
    - Dst: pop3c_client_cmd_stream_async
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:161,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:163,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:163,1
    - Dst: index_mail_prefetch
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 141
    functionDepth: 6
    functionLinenumber: 141
    functionLinenumberEnd: 167
    functionName: pop3c_mail_prefetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - pop3c_client_cmd_stream_async
    - i_stream_set_name
    - t_strdup_printf
    - pop3c_client_get_capabilities
    - mail_stream_access_start
    - POP3C_MAILBOX
    - POP3C_MAIL
    - t_strcut
    - index_mail_prefetch
    linkageType: ''
    returnType: bool
    signature: bool pop3c_mail_prefetch(struct mail *_mail)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAIL
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:174,1
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:176,1
    - Dst: pop3c_client_wait_one
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:187,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:197,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:198,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:200,1
    - Dst: index_mail_close_streams
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:203,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:205,1
    - Dst: mail_stream_access_start
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:210,1
    - Dst: pop3c_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:212,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:214,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:217,1
    - Dst: pop3c_client_cmd_stream
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:219,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:221,1
    - Dst: pop3c_client_is_connected
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:222,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:227,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:227,1
    - Dst: struct index_mail*::mail::v::istream_opened
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:232,1
    - Dst: index_mail_close_streams
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:234,1
    - Dst: pop3c_mail_cache_size
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:239,1
    - Dst: index_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:244,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 5
    argNames:
    - _mail
    - get_body
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct mail*
    - bool
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 169
    functionDepth: 17
    functionLinenumber: 169
    functionLinenumberEnd: 245
    functionName: pop3c_mail_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - i_panic
    - str_begins_with
    - struct index_mail*::mail::v::istream_opened
    - pop3c_mail_cache_size
    - i_stream_set_name
    - t_strdup_printf
    - index_mail_close_streams
    - pop3c_client_get_capabilities
    - mail_stream_access_start
    - index_mail_init_stream
    - pop3c_client_wait_one
    - POP3C_MAILBOX
    - POP3C_MAIL
    - i_stream_get_name
    - t_strcut
    - pop3c_client_is_connected
    - mail_storage_set_error
    - pop3c_client_cmd_stream
    linkageType: ''
    returnType: int
    signature: "int pop3c_mail_get_stream(struct mail *_mail, bool get_body,\n\t\t
      \     struct message_size *hdr_size,\n\t\t      struct message_size *body_size,
      struct istream **stream_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:251,1
    - Dst: pop3c_sync_get_uidls
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:257,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:260,1
    - Dst: index_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 247
    functionDepth: 20
    functionLinenumber: 247
    functionLinenumberEnd: 266
    functionName: pop3c_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-mail.c
    functionUses: 0
    functionsReached:
    - pop3c_sync_get_uidls
    - i_assert
    - index_mail_get_special
    - POP3C_MAILBOX
    linkageType: ''
    returnType: int
    signature: "int pop3c_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t       const char **value_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:24,1
    - Dst: pop3c_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:32,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:34,1
    - Dst: pop3c_client_cmd_stream
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:40,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:42,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:46,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:47,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:48,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:50,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:52,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:57,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:58,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:63,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:64,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:66,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:68,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:73,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:75,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct pop3c_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 22
    functionDepth: 5
    functionLinenumber: 22
    functionLinenumberEnd: 78
    functionName: pop3c_sync_get_uidls
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - strchr
    - p_strdup
    - p_array_init
    - array_push_back
    - i_stream_destroy
    - pool_unref
    - i_stream_read_next_line
    - pop3c_client_get_capabilities
    - array_append_zero
    - ARRAY_TYPE
    - array_front
    - mailbox_set_critical
    - str_to_uint
    - mail_storage_set_error
    - pop3c_client_cmd_stream
    linkageType: ''
    returnType: int
    signature: int pop3c_sync_get_uidls(struct pop3c_mailbox *mbox)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:87,1
    - Dst: pop3c_sync_get_uidls
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:90,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:94,1
    - Dst: pop3c_client_cmd_stream
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:98,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:100,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:104,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:105,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:107,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:111,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:113,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:118,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:119,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:123,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:124,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:129,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:131,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct pop3c_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 80
    functionDepth: 6
    functionLinenumber: 80
    functionLinenumberEnd: 135
    functionName: pop3c_sync_get_sizes
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c
    functionUses: 1
    functionsReached:
    - strchr
    - str_to_uint
    - i_stream_destroy
    - i_free_and_null
    - i_stream_read_next_line
    - str_to_uoff
    - i_new
    - mailbox_set_critical
    - pop3c_sync_get_uidls
    - i_assert
    - pop3c_client_cmd_stream
    linkageType: ''
    returnType: int
    signature: int pop3c_sync_get_sizes(struct pop3c_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:143,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:147,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:149,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:150,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:152,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:152,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - pool
    - local_msgs
    - messages_count
    - cache_view
    - cache_idx
    argTypes:
    - pool_t
    - ARRAY_TYPE*
    - uint32_t
    - struct mail_cache_view*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 137
    functionDepth: 8
    functionLinenumber: 137
    functionLinenumberEnd: 156
    functionName: pop3c_get_local_msgs
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - p_strdup
    - array_idx_set
    - mail_cache_lookup_field
    - str_truncate
    linkageType: ''
    returnType: void
    signature: "void pop3c_get_local_msgs(pool_t pool, ARRAY_TYPE(pop3c_sync_msg)
      *local_msgs,\n\t\t     uint32_t messages_count,\n\t\t     struct mail_cache_view
      *cache_view,\n\t\t     unsigned int cache_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - msg1
    - msg2
    argTypes:
    - struct pop3c_sync_msg*
    - struct pop3c_sync_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: pop3c_sync_msg_uidl_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    linkageType: ''
    returnType: int
    signature: "int pop3c_sync_msg_uidl_cmp(const struct pop3c_sync_msg *msg1,\n\t\t\t\t
      \  const struct pop3c_sync_msg *msg2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:185,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:195,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:198,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:201,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:206,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:207,1
    - Dst: pop3c_get_local_msgs
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:208,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:210,1
    - Dst: pop3c_get_remote_msgs
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:211,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:214,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:215,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:220,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:221,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:222,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:224,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:225,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:238,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:242,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:246,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:248,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:249,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:251,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:255,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:256,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:264,1
    - Dst: mailbox_recent_flags_set_seqs
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:266,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:267,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 4
    argNames:
    - mbox
    - sync_view
    - sync_trans
    - cache_view
    argTypes:
    - struct pop3c_mailbox*
    - struct mail_index_view*
    - struct mail_index_transaction*
    - struct mail_cache_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 178
    functionDepth: 12
    functionLinenumber: 178
    functionLinenumberEnd: 268
    functionName: pop3c_sync_messages
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - mail_index_lookup_uid
    - strlen
    - mail_index_lookup_seq_range
    - pool_unref
    - mail_index_append
    - INDEX_STORAGE_CONTEXT
    - mailbox_recent_flags_set_seqs
    - pop3c_get_remote_msgs
    - array_get
    - mail_index_get_header
    - mail_cache_add
    - i_assert
    - strcmp
    - pool_alloconly_create
    - mail_index_update_header
    - pop3c_get_local_msgs
    - i_new
    - ARRAY_TYPE
    - mail_cache_get_transaction
    - array_sort
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: "void pop3c_sync_messages(struct pop3c_mailbox *mbox,\n\t\t    struct
      mail_index_view *sync_view,\n\t\t    struct mail_index_transaction *sync_trans,\n\t\t
      \   struct mail_cache_view *cache_view)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pop3c_sync_get_uidls
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:284,1
    - Dst: index_storage_get_sync_flags
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:287,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:290,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:294,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:299,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:300,1
    - Dst: pop3c_sync_messages
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:301,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:306,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:307,1
    - Dst: bsearch_insert_pos
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:311,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:318,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:322,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:323,1
    - Dst: pop3c_client_cmd_line_async_nocb
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:324,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:324,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:329,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:330,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:334,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:335,1
    - Dst: pop3c_client_cmd_line
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:338,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:340,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct pop3c_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 270
    functionDepth: 13
    functionLinenumber: 270
    functionLinenumberEnd: 346
    functionName: pop3c_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - mail_cache_view_close
    - pop3c_sync_get_uidls
    - mail_storage_set_error
    - mail_index_sync_next
    - t_str_new
    - index_storage_get_sync_flags
    - mail_index_transaction_open_updated_view
    - pop3c_sync_messages
    - mail_cache_view_open
    - pop3c_client_cmd_line_async_nocb
    - mail_index_view_close
    - mailbox_set_index_error
    - bsearch_insert_pos
    - i_assert
    - pop3c_client_cmd_line
    - mail_index_sync_commit
    - mail_index_sync_begin
    - str_truncate
    linkageType: ''
    returnType: int
    signature: int pop3c_sync(struct pop3c_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: POP3C_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:351,1
    - Dst: pop3c_sync
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:359,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 348
    functionDepth: 14
    functionLinenumber: 348
    functionLinenumberEnd: 361
    functionName: pop3c_storage_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-sync.c
    functionUses: 0
    functionsReached:
    - index_mailbox_sync_init
    - pop3c_sync
    - POP3C_MAILBOX
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      pop3c_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-settings.c:68,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-settings.c:72,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-settings.c:78,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct pop3c_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 85
    functionName: pop3c_settings_parse_features
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-settings.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int pop3c_settings_parse_features(struct pop3c_settings *set,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pop3c_settings_parse_features
      Src: /src/dovecot/src/lib-storage/index/pop3c/pop3c-settings.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 95
    functionName: pop3c_settings_check
    functionSourceFile: /src/dovecot/src/lib-storage/index/pop3c/pop3c-settings.c
    functionUses: 0
    functionsReached:
    - pop3c_settings_parse_features
    linkageType: ''
    returnType: bool
    signature: "bool pop3c_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - file
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: dbox_file_is_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dbox_file_is_open(file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - file
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: dbox_file_is_in_alt
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dbox_file_is_in_alt(file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: DBOX_SAVECTX
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DBOX_SAVECTX(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:23,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:24,1
    - Dst: index_mail_init
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - t
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: dbox_mail_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_init
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\ndbox_mail_alloc(struct mailbox_transaction_context
      *t,\n\t\tenum mail_fetch_field wanted_fields,\n\t\tstruct mailbox_header_lookup_ctx
      *wanted_headers)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:32,1
    - Dst: index_mail_close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:34,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 30
    functionDepth: 15
    functionLinenumber: 30
    functionLinenumberEnd: 39
    functionName: dbox_mail_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_close
    - dbox_file_unref
    - DBOX_MAIL
    linkageType: ''
    returnType: void
    signature: void dbox_mail_close(struct mail *_mail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:44,1
    - Dst: struct dbox_storage*::v::mail_open
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:47,1
    - Dst: dbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:50,1
    - Dst: dbox_file_metadata_read
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:52,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:57,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:58,1
    - Dst: mail_metadata_accessed_event
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:60,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - mail
    - file_r
    argTypes:
    - struct dbox_mail*
    - struct dbox_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 41
    functionDepth: 4
    functionLinenumber: 41
    functionLinenumberEnd: 63
    functionName: dbox_mail_metadata_read
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - struct dbox_storage*::v::mail_open
    - mail_event
    - DBOX_STORAGE
    - i_stream_sync
    - i_stream_seek
    - mail_metadata_accessed_event
    - dbox_file_metadata_read
    - dbox_file_seek
    linkageType: ''
    returnType: int
    signature: int dbox_mail_metadata_read(struct dbox_mail *mail, struct dbox_file
      **file_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dbox_mail_metadata_read
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:71,1
    - Dst: dbox_file_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - mail
    - key
    - value_r
    argTypes:
    - struct dbox_mail*
    - enum dbox_metadata_key
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 65
    functionDepth: 5
    functionLinenumber: 65
    functionLinenumberEnd: 76
    functionName: dbox_mail_metadata_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - dbox_file_metadata_get
    - dbox_mail_metadata_read
    linkageType: ''
    returnType: int
    signature: "int dbox_mail_metadata_get(struct dbox_mail *mail, enum dbox_metadata_key
      key,\n\t\t       const char **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:80,1
    - Dst: index_mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:84,1
    - Dst: dbox_mail_metadata_read
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:87,1
    - Dst: dbox_file_get_plaintext_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 78
    functionDepth: 14
    functionLinenumber: 78
    functionLinenumberEnd: 93
    functionName: dbox_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_physical_size
    - dbox_mail_metadata_read
    - dbox_file_get_plaintext_size
    - DBOX_MAIL
    linkageType: ''
    returnType: int
    signature: int dbox_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:97,1
    - Dst: index_mail_get_cached_virtual_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:102,1
    - Dst: dbox_mail_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:105,1
    - Dst: index_mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:109,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:111,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 95
    functionDepth: 15
    functionLinenumber: 95
    functionLinenumberEnd: 116
    functionName: dbox_mail_get_virtual_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - str_to_uintmax_hex
    - dbox_mail_metadata_get
    - index_mail_get_virtual_size
    - index_mail_get_cached_virtual_size
    - DBOX_MAIL
    linkageType: ''
    returnType: int
    signature: int dbox_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:120,1
    - Dst: index_mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:125,1
    - Dst: dbox_mail_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:128,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 118
    functionDepth: 11
    functionLinenumber: 118
    functionLinenumberEnd: 139
    functionName: dbox_mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - str_to_uintmax_hex
    - index_mail_get_received_date
    - dbox_mail_metadata_get
    - DBOX_MAIL
    linkageType: ''
    returnType: int
    signature: int dbox_mail_get_received_date(struct mail *_mail, time_t *date_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:143,1
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:144,1
    - Dst: index_mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:148,1
    - Dst: struct dbox_storage*::v::mail_file_set
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:151,1
    - Dst: dbox_file_stat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:155,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:156,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:158,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 141
    functionDepth: 11
    functionLinenumber: 141
    functionLinenumberEnd: 163
    functionName: dbox_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - mail_event
    - DBOX_STORAGE
    - index_mail_get_save_date
    - dbox_file_stat
    - struct dbox_storage*::v::mail_file_set
    - DBOX_MAIL
    linkageType: ''
    returnType: int
    signature: int dbox_mail_get_save_date(struct mail *_mail, time_t *date_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:172,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:177,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:178,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:182,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:182,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:183,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:183,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:184,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:186,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:195,1
    - Dst: dbox_mail_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:199,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:205,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:206,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:208,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:210,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:216,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:217,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:218,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 4
    argNames:
    - mail
    - key
    - cache_field
    - value_r
    argTypes:
    - struct dbox_mail*
    - enum dbox_metadata_key
    - enum index_cache_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 165
    functionDepth: 13
    functionLinenumber: 165
    functionLinenumberEnd: 220
    functionName: dbox_get_cached_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - memcpy
    - str_c
    - str_printfa
    - str_data
    - str_len
    - strlen
    - mail_cache_lookup_field
    - index_mail_cache_add_idx
    - dbox_mail_metadata_get
    - str_truncate
    - str_append
    - str_to_uint
    - i_assert
    - str_new
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int dbox_get_cached_metadata(struct dbox_mail *mail, enum dbox_metadata_key
      key,\n\t\t\t enum index_cache_field cache_field,\n\t\t\t const char **value_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:225,1
    - Dst: index_pop3_uidl_can_exist
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:233,1
    - Dst: dbox_get_cached_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:237,1
    - Dst: index_pop3_uidl_update_exists
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:240,1
    - Dst: index_pop3_uidl_can_exist
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:245,1
    - Dst: dbox_get_cached_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:251,1
    - Dst: dbox_get_cached_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:254,1
    - Dst: index_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:260,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 222
    functionDepth: 20
    functionLinenumber: 222
    functionLinenumberEnd: 261
    functionName: dbox_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - dbox_get_cached_metadata
    - index_pop3_uidl_can_exist
    - index_pop3_uidl_update_exists
    - index_mail_get_special
    - DBOX_MAIL
    linkageType: ''
    returnType: int
    signature: "int dbox_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t\t  const char **value_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:271,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:276,1
    - Dst: struct mail_private*::v::istream_opened
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:278,1
    - Dst: dbox_attachment_file_get_stream
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:281,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - mail
    - offset
    - stream_r
    argTypes:
    - struct dbox_mail*
    - uoff_t
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 282
    functionName: get_mail_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - struct mail_private*::v::istream_opened
    - i_stream_create_limit
    - dbox_attachment_file_get_stream
    - dbox_file_seek
    linkageType: ''
    returnType: int
    signature: "int get_mail_stream(struct dbox_mail *mail, uoff_t offset,\n\t\tstruct
      istream **stream_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:289,1
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:290,1
    - Dst: struct dbox_storage*::v::mail_open
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:297,1
    - Dst: get_mail_stream
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:300,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:302,1
    - Dst: index_mail_set_read_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:306,1
    - Dst: index_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c:309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - _mail
    - ATTR_UNUSED
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct mail*
    - bool
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 284
    functionDepth: 17
    functionLinenumber: 284
    functionLinenumberEnd: 311
    functionName: dbox_mail_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_set_read_buffer_size
    - struct dbox_storage*::v::mail_open
    - DBOX_STORAGE
    - get_mail_stream
    - index_mail_init_stream
    - i_stream_unref
    - DBOX_MAIL
    linkageType: ''
    returnType: int
    signature: "int dbox_mail_get_stream(struct mail *_mail, bool get_body ATTR_UNUSED,\n\t\t\t
      struct message_size *hdr_size,\n\t\t\t struct message_size *body_size,\n\t\t\t
      struct istream **stream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: DBOX_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DBOX_STORAGE(s)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:25,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:30,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:36,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:36,1
    - Dst: hex2dec
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:42,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:43,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - input
    - pre_offset
    - need_bytes
    argTypes:
    - struct istream*
    - uoff_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 48
    functionName: dbox_file_match_pre_magic
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_stream_get_data
    - memcmp
    - hex2dec
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dbox_file_match_pre_magic(struct istream *input,\n\t\t\t  uoff_t
      *pre_offset, size_t *need_bytes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - data
    - chr
    - len
    - pos_r
    argTypes:
    - unsigned char*
    - char
    - unsigned int
    - unsigned char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: memchr_nocontrol
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool memchr_nocontrol(const unsigned char *data, char chr,\n\t\t\t
      \    unsigned int len, const unsigned char **pos_r)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:75,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:76,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:77,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:80,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:80,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:84,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:115,1
    - Dst: memchr_nocontrol
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:117,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 3
    argNames:
    - input
    - input_full
    - need_bytes
    argTypes:
    - struct istream*
    - bool
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 133
    functionName: dbox_file_match_post_magic
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached:
    - memchr_nocontrol
    - strlen
    - i_stream_get_data
    - memchr
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int dbox_file_match_post_magic(struct istream *input, bool input_full,\n\t\t\t
      \  size_t *need_bytes)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:153,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:157,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:158,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:163,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:165,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:166,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:173,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:175,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:176,1
    - Dst: dbox_file_match_pre_magic
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:181,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:185,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:186,1
    - Dst: dbox_file_match_post_magic
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:193,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:197,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:198,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:219,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:221,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:227,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 68
    argCount: 3
    argNames:
    - file
    - offset_r
    - pre_r
    argTypes:
    - struct dbox_file*
    - uoff_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 229
    functionName: dbox_file_find_next_magic
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached:
    - dbox_file_match_post_magic
    - strlen
    - dbox_file_match_pre_magic
    - memchr
    - dbox_file_set_syscall_error
    - i_stream_skip
    - i_stream_seek
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: int dbox_file_find_next_magic(struct dbox_file *file, uoff_t *offset_r,
      bool *pre_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:238,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:239,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:242,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:244,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:246,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:247,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:249,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:252,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:258,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - file
    - output
    - out_path
    - count
    argTypes:
    - struct dbox_file*
    - struct ostream*
    - char*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 231
    functionDepth: 4
    functionLinenumber: 231
    functionLinenumberEnd: 260
    functionName: stream_copy
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - o_stream_nsend_istream
    - i_stream_create_limit
    - i_stream_get_error
    - i_stream_unref
    - o_stream_flush
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: "int stream_copy(struct dbox_file *file, struct ostream *output,\n\t
      \   const char *out_path, uoff_t count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:264,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:270,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:275,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:281,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:282,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 283
    functionName: dbox_file_skip_broken_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_stream_get_data
    - memcmp
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void dbox_file_skip_broken_header(struct dbox_file *file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:293,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:300,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:309,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:310,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - file
    - output
    - have_guid_r
    argTypes:
    - struct dbox_file*
    - struct ostream*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 312
    functionName: dbox_file_copy_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_stream_seek
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: "void dbox_file_copy_metadata(struct dbox_file *file, struct ostream
      *output,\n\t\t\tbool *have_guid_r)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:327,1
    - Dst: stream_copy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:330,1
    - Dst: dbox_file_header_write
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:334,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:335,1
    - Dst: dbox_file_find_next_magic
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:340,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:346,1
    - Dst: dbox_file_read_mail_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:348,1
    - Dst: dbox_file_skip_broken_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:352,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:356,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:359,1
    - Dst: dbox_file_find_next_magic
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:362,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:368,1
    - Dst: stream_copy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:369,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:375,1
    - Dst: dbox_file_find_next_magic
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:380,1
    - Dst: dbox_msg_header_fill
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:395,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:396,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:399,1
    - Dst: stream_copy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:400,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:402,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:405,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:406,1
    - Dst: message_get_body_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:407,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:408,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:410,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:412,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:417,1
    - Dst: dbox_file_metadata_skip_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:418,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:421,1
    - Dst: dbox_file_copy_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:425,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:427,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:428,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:429,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:430,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:432,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:433,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:435,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:439,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:440,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:441,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 88
    argCount: 4
    argNames:
    - file
    - start_offset
    - temp_path
    - output
    argTypes:
    - struct dbox_file*
    - uoff_t
    - char*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 314
    functionDepth: 5
    functionLinenumber: 314
    functionLinenumberEnd: 445
    functionName: dbox_file_fix_write_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached:
    - dbox_file_read_mail_header
    - t_strdup_printf
    - i_stream_seek
    - message_get_body_size
    - dbox_file_find_next_magic
    - dbox_file_copy_metadata
    - o_stream_get_error
    - guid_128_generate
    - i_stream_skip
    - i_stream_get_error
    - o_stream_nsend
    - dbox_msg_header_fill
    - o_stream_flush
    - dbox_file_metadata_skip_header
    - guid_128_to_string
    - dbox_file_set_syscall_error
    - dbox_file_header_write
    - o_stream_nsend_str
    - mail_storage_set_critical
    - i_assert
    - i_stream_create_limit
    - dbox_file_skip_broken_header
    - stream_copy
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: "int dbox_file_fix_write_stream(struct dbox_file *file, uoff_t start_offset,\n\t\t\t
      \  const char *temp_path, struct ostream *output)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:455,1
    - Dst: dbox_file_is_open
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:455,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:457,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:458,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:459,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:461,1
    - Dst: dbox_generate_tmp_filename
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:461,1
    - Dst: struct dbox_file*::storage::v::file_create_fd
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:462,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:466,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:467,1
    - Dst: dbox_file_fix_write_stream
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:469,1
    - Dst: o_stream_abort
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:472,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:474,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:475,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:476,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:481,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:482,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:489,1
    - Dst: link
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:491,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:492,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:496,1
    - Dst: dbox_file_close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:501,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:502,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:503,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:506,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:507,1
    - Dst: dbox_file_close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:514,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:515,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c:516,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 2
    argNames:
    - file
    - start_offset
    argTypes:
    - struct dbox_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 447
    functionDepth: 6
    functionLinenumber: 447
    functionLinenumberEnd: 522
    functionName: dbox_file_fix
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c
    functionUses: 0
    functionsReached:
    - dbox_file_open
    - o_stream_unref
    - o_stream_cork
    - t_strdup_printf
    - i_unlink
    - dbox_file_is_open
    - link
    - dbox_file_close
    - rename
    - e_warning
    - dbox_file_fix_write_stream
    - o_stream_abort
    - o_stream_create_fd_file
    - mail_storage_set_critical
    - i_assert
    - close
    - dbox_generate_tmp_filename
    - strrchr
    - unlink
    - struct dbox_file*::storage::v::file_create_fd
    - t_strdup_until
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int dbox_file_fix(struct dbox_file *file, uoff_t start_offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_attachment_save_get_extrefs
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:15,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:16,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:19,1
    - Dst: index_attachment_append_extrefs
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:20,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:21,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct mail_save_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 10
    functionDepth: 2
    functionLinenumber: 10
    functionLinenumberEnd: 22
    functionName: dbox_attachment_save_write_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c
    functionUses: 0
    functionsReached:
    - index_attachment_save_get_extrefs
    - array_count
    - str_append_c
    - index_attachment_append_extrefs
    linkageType: ''
    returnType: void
    signature: "void dbox_attachment_save_write_metadata(struct mail_save_context
      *ctx,\n\t\t\t\t\t string_t *str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:34,1
    - Dst: dbox_file_get_plaintext_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:41,1
    - Dst: struct dbox_file*::storage::v::get_attachment_path_suffix
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:42,1
    - Dst: index_attachment_stream_get
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - file
    - ext_refs
    - stream
    - error_r
    argTypes:
    - struct dbox_file*
    - char*
    - struct istream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 24
    functionDepth: 4
    functionLinenumber: 24
    functionLinenumberEnd: 49
    functionName: dbox_attachment_file_get_stream_from
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c
    functionUses: 0
    functionsReached:
    - struct dbox_file*::storage::v::get_attachment_path_suffix
    - index_attachment_stream_get
    - mail_storage_set_critical
    - dbox_file_get_plaintext_size
    linkageType: ''
    returnType: int
    signature: "int dbox_attachment_file_get_stream_from(struct dbox_file *file,\n\t\t\t\t
      \    const char *ext_refs,\n\t\t\t\t     struct istream **stream,\n\t\t\t\t
      \    const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_metadata_read
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:58,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:61,1
    - Dst: dbox_file_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:63,1
    - Dst: dbox_attachment_file_get_stream_from
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:69,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c:72,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - file
    - stream
    argTypes:
    - struct dbox_file*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 76
    functionName: dbox_attachment_file_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-attachment.c
    functionUses: 1
    functionsReached:
    - dbox_file_metadata_get
    - dbox_file_set_corrupted
    - i_stream_seek
    - dbox_attachment_file_get_stream_from
    - dbox_file_metadata_read
    linkageType: ''
    returnType: int
    signature: "int dbox_attachment_file_get_stream(struct dbox_file *file,\n\t\t\t\t
      \   struct istream **stream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 14
    functionName: DBOX_MAIL
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-mail.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DBOX_MAIL(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: dbox_generate_tmp_filename
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *dbox_generate_tmp_filename(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - function
    argTypes:
    - struct dbox_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: dbox_file_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 2
    functionsReached:
    - mail_storage_set_critical
    linkageType: ''
    returnType: void
    signature: void dbox_file_set_syscall_error(struct dbox_file *file, const char
      *function)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:58,1
    - Dst: struct dbox_file*::storage::v::set_file_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:59,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:59,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:62,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - file
    - reason
    argTypes:
    - struct dbox_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: dbox_file_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - va_start
    - t_strdup_printf
    - t_strdup_vprintf
    - struct dbox_file*::storage::v::set_file_corrupted
    - va_end
    linkageType: ''
    returnType: void
    signature: void dbox_file_set_corrupted(struct dbox_file *file, const char *reason,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: dbox_file_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dbox_file_init(struct dbox_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:76,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:78,1
    - Dst: dbox_file_close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:79,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:80,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:81,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 83
    functionName: dbox_file_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - dbox_file_close
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void dbox_file_free(struct dbox_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:91,1
    - Dst: struct dbox_file*::storage::v::file_unrefed
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct dbox_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 94
    functionName: dbox_file_unref
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - i_assert
    - struct dbox_file*::storage::v::file_unrefed
    linkageType: ''
    returnType: void
    signature: void dbox_file_unref(struct dbox_file **_file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:102,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:104,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:111,1
    - Dst: str_to_uint_hex
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:120,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:121,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:126,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:127,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:136,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 2
    argNames:
    - file
    - line
    argTypes:
    - struct dbox_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 140
    functionName: dbox_file_parse_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - i_isdigit
    - str_to_uint_hex
    - t_strsplit
    - str_to_uintmax_hex
    - dbox_file_set_corrupted
    linkageType: ''
    returnType: int
    signature: int dbox_file_parse_header(struct dbox_file *file, const char *line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:148,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:149,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:152,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:157,1
    - Dst: dbox_file_parse_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 142
    functionDepth: 5
    functionLinenumber: 142
    functionLinenumberEnd: 163
    functionName: dbox_file_read_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - dbox_file_set_syscall_error
    - i_stream_read_next_line
    - dbox_file_set_corrupted
    - i_stream_seek
    - dbox_file_parse_header
    linkageType: ''
    returnType: int
    signature: int dbox_file_read_header(struct dbox_file *file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:177,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:178,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:183,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - file
    - try_altpath
    argTypes:
    - struct dbox_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 199
    functionName: dbox_file_open_fd
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - open
    - mail_storage_set_critical
    - ENOACCESS
    linkageType: ''
    returnType: int
    signature: int dbox_file_open_fd(struct dbox_file *file, bool try_altpath)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_open_fd
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - file
    - try_altpath
    - notfound_r
    argTypes:
    - struct dbox_file*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 201
    functionDepth: 5
    functionLinenumber: 201
    functionLinenumberEnd: 220
    functionName: dbox_file_open_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - dbox_file_open_fd
    linkageType: ''
    returnType: int
    signature: "int dbox_file_open_full(struct dbox_file *file, bool try_altpath,\n\t\t\t
      \      bool *notfound_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_open_full
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - deleted_r
    argTypes:
    - struct dbox_file*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 231
    functionDepth: 6
    functionLinenumber: 231
    functionLinenumberEnd: 234
    functionName: dbox_file_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - dbox_file_open_full
    linkageType: ''
    returnType: int
    signature: int dbox_file_open(struct dbox_file *file, bool *deleted_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_open_full
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - notfound_r
    argTypes:
    - struct dbox_file*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 6
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: dbox_file_open_primary
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - dbox_file_open_full
    linkageType: ''
    returnType: int
    signature: int dbox_file_open_primary(struct dbox_file *file, bool *notfound_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_is_open
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:246,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:247,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:248,1
    - Dst: mail_metadata_accessed_event
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:254,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:258,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:260,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - file
    - event
    - st_r
    argTypes:
    - struct dbox_file*
    - struct event*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 241
    functionDepth: 4
    functionLinenumber: 241
    functionLinenumberEnd: 276
    functionName: dbox_file_stat
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - dbox_file_is_open
    - fstat
    - stat
    - mail_metadata_accessed_event
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: int dbox_file_stat(struct dbox_file *file, struct event *event, struct
      stat *st_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:282,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:283,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:289,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:291,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:291,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - file
    - output
    argTypes:
    - struct dbox_file*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 292
    functionName: dbox_file_header_write
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int dbox_file_header_write(struct dbox_file *file, struct ostream *output)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_unlock
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:296,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:300,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:303,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 294
    functionDepth: 5
    functionLinenumber: 294
    functionLinenumberEnd: 308
    functionName: dbox_file_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 2
    functionsReached:
    - dbox_file_unlock
    - close
    - dbox_file_set_syscall_error
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void dbox_file_close(struct dbox_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:315,1
    - Dst: file_try_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:321,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:324,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:328,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 310
    functionDepth: 4
    functionLinenumber: 310
    functionLinenumberEnd: 336
    functionName: dbox_file_try_lock
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - file_try_lock
    - i_assert
    - file_dotlock_create
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: int dbox_file_try_lock(struct dbox_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:340,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:344,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:346,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:350,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: dbox_file_unlock
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - file_unlock
    - i_stream_sync
    - i_assert
    - file_dotlock_delete
    linkageType: ''
    returnType: void
    signature: void dbox_file_unlock(struct dbox_file *file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:360,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:365,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:370,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:373,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:373,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:374,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:376,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:381,1
    - Dst: hex2dec
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - file
    - physical_size_r
    argTypes:
    - struct dbox_file*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 353
    functionDepth: 5
    functionLinenumber: 353
    functionLinenumberEnd: 388
    functionName: dbox_file_read_mail_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - memcpy
    - I_MIN
    - dbox_file_set_syscall_error
    - dbox_file_set_corrupted
    - memcmp
    - hex2dec
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: int dbox_file_read_mail_header(struct dbox_file *file, uoff_t *physical_size_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:395,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:401,1
    - Dst: dbox_file_read_mail_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:402,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - file
    - offset
    argTypes:
    - struct dbox_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 390
    functionDepth: 6
    functionLinenumber: 390
    functionLinenumberEnd: 410
    functionName: dbox_file_seek
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 2
    functionsReached:
    - dbox_file_read_mail_header
    - i_assert
    - i_stream_seek
    linkageType: ''
    returnType: int
    signature: int dbox_file_seek(struct dbox_file *file, uoff_t offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:419,1
    - Dst: dbox_file_metadata_skip_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:420,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:424,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:425,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:426,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:432,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - file
    - offset
    argTypes:
    - struct dbox_file*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 435
    functionName: dbox_file_seek_next_at_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - dbox_file_metadata_skip_header
    - i_stream_get_max_buffer_size
    - i_stream_read_next_line
    - i_stream_seek
    - i_stream_set_max_buffer_size
    linkageType: ''
    returnType: int
    signature: int dbox_file_seek_next_at_metadata(struct dbox_file *file, uoff_t
      *offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 440
    functionName: dbox_file_seek_rewind
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dbox_file_seek_rewind(struct dbox_file *file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:447,1
    - Dst: dbox_file_seek_next_at_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:456,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:460,1
    - Dst: dbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:469,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - file
    - offset_r
    - last_r
    argTypes:
    - struct dbox_file*
    - uoff_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 442
    functionDepth: 7
    functionLinenumber: 442
    functionLinenumberEnd: 473
    functionName: dbox_file_seek_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - i_stream_read_eof
    - i_assert
    - dbox_file_seek_next_at_metadata
    - dbox_file_seek
    linkageType: ''
    returnType: int
    signature: int dbox_file_seek_next(struct dbox_file *file, uoff_t *offset_r, bool
      *last_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:479,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:483,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:486,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:487,1
    - Dst: o_stream_set_finish_via_child
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:488,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 492
    functionName: dbox_file_append_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - o_stream_set_name
    - o_stream_cork
    - o_stream_create_fd_file
    - i_new
    - i_assert
    - o_stream_set_finish_via_child
    linkageType: ''
    returnType: struct dbox_file_append_context
    signature: struct dbox_file_append_context *dbox_file_append_init(struct dbox_file
      *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:499,1
    - Dst: dbox_file_append_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:503,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:505,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:506,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:507,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:511,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dbox_file_append_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 494
    functionDepth: 5
    functionLinenumber: 494
    functionLinenumberEnd: 515
    functionName: dbox_file_append_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - ftruncate
    - o_stream_close
    - dbox_file_append_flush
    - o_stream_unref
    - dbox_file_set_syscall_error
    - i_assert
    - i_free
    linkageType: ''
    returnType: int
    signature: int dbox_file_append_commit(struct dbox_file_append_context **_ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:523,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:530,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:531,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:535,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:536,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:537,1
    - Dst: o_stream_abort
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:540,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:541,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:543,1
    - Dst: dbox_file_close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:546,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dbox_file_append_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 517
    functionDepth: 6
    functionLinenumber: 517
    functionLinenumberEnd: 548
    functionName: dbox_file_append_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - ftruncate
    - o_stream_close
    - unlink
    - o_stream_unref
    - dbox_file_set_syscall_error
    - o_stream_abort
    - i_assert
    - i_free
    - dbox_file_close
    linkageType: ''
    returnType: void
    signature: void dbox_file_append_rollback(struct dbox_file_append_context **_ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:558,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:559,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:564,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:565,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:568,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:569,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:575,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:576,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dbox_file_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 550
    functionDepth: 5
    functionLinenumber: 550
    functionLinenumberEnd: 582
    functionName: dbox_file_append_flush
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - ftruncate
    - o_stream_seek
    - fdatasync
    - dbox_file_set_syscall_error
    - o_stream_flush
    linkageType: ''
    returnType: int
    signature: int dbox_file_append_flush(struct dbox_file_append_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dbox_file_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 587
    functionName: dbox_file_append_checkpoint
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dbox_file_append_checkpoint(struct dbox_file_append_context *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_header_write
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:607,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:608,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:624,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:625,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:629,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:633,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:634,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - output_r
    argTypes:
    - struct dbox_file_append_context*
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 589
    functionDepth: 5
    functionLinenumber: 589
    functionLinenumberEnd: 640
    functionName: dbox_file_get_append_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - o_stream_seek
    - dbox_file_set_syscall_error
    - dbox_file_header_write
    - fstat
    - dbox_file_set_corrupted
    linkageType: ''
    returnType: int
    signature: "int dbox_file_get_append_stream(struct dbox_file_append_context *ctx,\n\t\t\t\tstruct
      ostream **output_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:649,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:654,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:658,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:661,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:662,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:665,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:669,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 642
    functionDepth: 5
    functionLinenumber: 642
    functionLinenumberEnd: 671
    functionName: dbox_file_metadata_skip_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 2
    functionsReached:
    - memcpy
    - dbox_file_set_syscall_error
    - i_stream_skip
    - dbox_file_set_corrupted
    - memcmp
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: int dbox_file_metadata_skip_header(struct dbox_file *file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:681,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:684,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:686,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:688,1
    - Dst: dbox_file_metadata_skip_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:689,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:693,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:695,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:696,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:702,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:703,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:705,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:707,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - file
    - metadata_offset
    argTypes:
    - struct dbox_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 673
    functionDepth: 6
    functionLinenumber: 673
    functionLinenumberEnd: 709
    functionName: dbox_file_metadata_read_at
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_array_init
    - array_push_back
    - dbox_file_metadata_skip_header
    - i_stream_get_max_buffer_size
    - i_stream_read_next_line
    - i_stream_seek
    - dbox_file_set_corrupted
    - i_stream_set_max_buffer_size
    - p_clear
    linkageType: ''
    returnType: int
    signature: int dbox_file_metadata_read_at(struct dbox_file *file, uoff_t metadata_offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:716,1
    - Dst: dbox_file_metadata_read_at
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 711
    functionDepth: 7
    functionLinenumber: 711
    functionLinenumberEnd: 729
    functionName: dbox_file_metadata_read
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 2
    functionsReached:
    - i_assert
    - dbox_file_metadata_read_at
    linkageType: ''
    returnType: int
    signature: int dbox_file_metadata_read(struct dbox_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:737,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - file
    - key
    argTypes:
    - struct dbox_file*
    - enum dbox_metadata_key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 731
    functionDepth: 1
    functionLinenumber: 731
    functionLinenumberEnd: 743
    functionName: dbox_file_metadata_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 2
    functionsReached:
    - array_get
    linkageType: ''
    returnType: char
    signature: "char *dbox_file_metadata_get(struct dbox_file *file,\n\t\t\t\t   enum
      dbox_metadata_key key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:750,1
    - Dst: dbox_file_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:753,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:755,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 745
    functionDepth: 2
    functionLinenumber: 745
    functionLinenumberEnd: 762
    functionName: dbox_file_get_plaintext_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 2
    functionsReached:
    - str_to_uintmax_hex
    - i_assert
    - dbox_file_metadata_get
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t dbox_file_get_plaintext_size(struct dbox_file *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:767,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:768,1
    - Dst: dec2hex
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - dbox_msg_hdr
    - message_size
    argTypes:
    - struct dbox_message_header*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 774
    functionName: dbox_msg_header_fill
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 1
    functionsReached:
    - memcpy
    - dec2hex
    - memset
    linkageType: ''
    returnType: void
    signature: "void dbox_msg_header_fill(struct dbox_message_header *dbox_msg_hdr,\n\t\t\t
      \ uoff_t message_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:782,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c:784,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 776
    functionDepth: 4
    functionLinenumber: 776
    functionLinenumberEnd: 798
    functionName: dbox_file_unlink
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-file.c
    functionUses: 0
    functionsReached:
    - unlink
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: int dbox_file_unlink(struct dbox_file *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:20,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:21,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:22,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:25,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:29,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 15
    functionDepth: 4
    functionLinenumber: 15
    functionLinenumberEnd: 32
    functionName: dbox_save_add_to_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - mail_index_update_keywords
    - mail_index_update_flags
    - ENUM_NEGATE
    - mail_index_update_modseq
    linkageType: ''
    returnType: void
    signature: void dbox_save_add_to_index(struct dbox_save_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:38,1
    - Dst: dbox_save_add_to_index
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:42,1
    - Dst: mail_set_seq_saving
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:44,1
    - Dst: i_stream_create_lf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:46,1
    - Dst: index_mail_cache_parse_init
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:47,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:48,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:51,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:52,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:53,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:55,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:56,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:57,1
    - Dst: index_attachment_save_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct dbox_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 34
    functionDepth: 15
    functionLinenumber: 34
    functionLinenumberEnd: 65
    functionName: dbox_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c
    functionUses: 0
    functionsReached:
    - i_zero
    - o_stream_get_name
    - mail_set_critical
    - o_stream_get_error
    - DBOX_STORAGE
    - o_stream_cork
    - index_attachment_save_begin
    - dbox_save_add_to_index
    - i_stream_create_lf
    - o_stream_send
    - i_stream_unref
    - index_mail_cache_parse_init
    - mail_set_seq_saving
    linkageType: ''
    returnType: void
    signature: void dbox_save_begin(struct dbox_save_context *ctx, struct istream
      *input)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:69,1
    - Dst: index_attachment_save_continue
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:75,1
    - Dst: index_storage_save_continue
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 16
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: dbox_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c
    functionUses: 0
    functionsReached:
    - DBOX_SAVECTX
    - index_attachment_save_continue
    - index_storage_save_continue
    linkageType: ''
    returnType: int
    signature: int dbox_save_continue(struct mail_save_context *_ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:91,1
    - Dst: index_attachment_save_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:94,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:100,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:103,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:106,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:108,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:109,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:113,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:114,1
    - Dst: index_mail_cache_parse_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:117,1
    - Dst: index_mail_cache_pop3_data
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 85
    functionDepth: 16
    functionLinenumber: 85
    functionLinenumberEnd: 124
    functionName: dbox_save_end
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - mail_set_critical
    - o_stream_get_error
    - index_mail_cache_parse_deinit
    - o_stream_finish
    - o_stream_ref
    - index_attachment_save_finish
    - index_mail_cache_pop3_data
    - o_stream_flush
    - i_assert
    - o_stream_destroy
    linkageType: ''
    returnType: void
    signature: void dbox_save_end(struct dbox_save_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:131,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:138,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:139,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:141,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:143,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:149,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:152,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:154,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:155,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:159,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:159,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:160,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:164,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:167,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:171,1
    - Dst: mail_generate_guid_128_hash
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:176,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:178,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:179,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:181,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:184,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:185,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:189,1
    - Dst: dbox_attachment_save_write_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:193,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:195,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:196,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:196,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:196,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 5
    argNames:
    - _ctx
    - output
    - output_msg_size
    - orig_mailbox_name
    - guid_128
    argTypes:
    - struct mail_save_context*
    - struct ostream*
    - uoff_t
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 197
    functionName: dbox_save_write_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c
    functionUses: 0
    functionsReached:
    - i_zero
    - DBOX_SAVECTX
    - t_str_new
    - memcpy
    - str_printfa
    - i_assert
    - strchr
    - i_unreached
    - str_append_c
    - str_data
    - str_len
    - guid_128_to_string
    - I_MAX
    - guid_128_generate
    - dbox_attachment_save_write_metadata
    - mail_generate_guid_128_hash
    - o_stream_nsend
    - mail_get_virtual_size
    linkageType: ''
    returnType: void
    signature: "void dbox_save_write_metadata(struct mail_save_context *_ctx,\n\t\t\t
      \     struct ostream *output, uoff_t output_msg_size,\n\t\t\t      const char
      *orig_mailbox_name,\n\t\t\t      guid_128_t guid_128)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:208,1
    - Dst: mail_index_ext_resize_hdr
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:213,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c:223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - sync_view
    - ext_id
    - flags_offset
    argTypes:
    - struct dbox_save_context*
    - struct mail_index_view*
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 199
    functionDepth: 4
    functionLinenumber: 199
    functionLinenumberEnd: 226
    functionName: dbox_save_update_header_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-save.c
    functionUses: 0
    functionsReached:
    - mail_index_update_header_ext
    - mail_index_get_header_ext
    - mail_index_ext_resize_hdr
    linkageType: ''
    returnType: void
    signature: "void dbox_save_update_header_flags(struct dbox_save_context *ctx,\n\t\t\t\t
      \  struct mail_index_view *sync_view,\n\t\t\t\t   uint32_t ext_id,\n\t\t\t\t
      \  unsigned int flags_offset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_readlink
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:28,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:31,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:36,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:40,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:41,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:48,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - root_dir
    - alt_path
    - alt_path2
    - alt_symlink_path
    - event
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 54
    functionName: dbox_alt_path_has_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - e_error
    - e_warning
    - strcmp
    - t_readlink
    linkageType: ''
    returnType: bool
    signature: "bool dbox_alt_path_has_changed(const char *root_dir, const char *alt_path,\n\t\t\t
      \ const char *alt_path2, const char *alt_symlink_path,\n\t\t\t  struct event
      *event)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:60,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:62,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:63,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:65,1
    - Dst: dbox_alt_path_has_changed
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:67,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:72,1
    - Dst: symlink
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:74,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:77,1
    - Dst: symlink
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:80,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:83,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - list
    - event
    argTypes:
    - struct mailbox_list*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 56
    functionDepth: 6
    functionLinenumber: 56
    functionLinenumberEnd: 87
    functionName: dbox_verify_alt_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_list_mkdir_root
    - mailbox_list_get_root_path
    - mailbox_list_get_root_forced
    - e_error
    - i_unlink_if_exists
    - symlink
    - dbox_alt_path_has_changed
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void dbox_verify_alt_path(struct mailbox_list *list, struct event *event)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:93,1
    - Dst: mail_user_home_expand
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:101,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:103,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:105,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:106,1
    - Dst: mailbox_list_init_fs
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:107,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:110,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:117,1
    - Dst: dbox_verify_alt_path
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - _storage
    - ns
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 89
    functionDepth: 8
    functionLinenumber: 89
    functionLinenumberEnd: 126
    functionName: dbox_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_strdup
    - event_unref
    - DBOX_STORAGE
    - settings_event_add_filter_name
    - t_strdup_printf
    - dbox_verify_alt_path
    - mailbox_list_init_fs
    - mail_user_home_expand
    linkageType: ''
    returnType: int
    signature: "int dbox_storage_create(struct mail_storage *_storage,\n\t\t\tstruct
      mail_namespace *ns,\n\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:130,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:132,1
    - Dst: index_storage_destroy
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 134
    functionName: dbox_storage_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - DBOX_STORAGE
    - index_storage_destroy
    - fs_deinit
    linkageType: ''
    returnType: void
    signature: void dbox_storage_destroy(struct mail_storage *_storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:140,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:141,1
    - Dst: mailbox_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 8
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: dbox_get_uidvalidity_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_uidvalidity_next
    - t_strconcat
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dbox_get_uidvalidity_next(struct mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_watch_remove_all
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:150,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:152,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:155,1
    - Dst: mailbox_watch_add
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 145
    functionDepth: 5
    functionLinenumber: 145
    functionLinenumberEnd: 158
    functionName: dbox_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - mailbox_watch_remove_all
    - mailbox_get_path_to
    - mailbox_watch_add
    linkageType: ''
    returnType: void
    signature: void dbox_notify_changes(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crc32_str
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 170
    functionName: cleanup_interval
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - crc32_str
    linkageType: ''
    returnType: time_t
    signature: time_t cleanup_interval(struct mail_storage *storage)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: cleanup_interval
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:177,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:193,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:195,1
    - Dst: unlink_old_files
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:210,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - storage
    - path
    - last_scan_time
    - last_change_time
    argTypes:
    - struct mail_storage*
    - char*
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 213
    functionName: dbox_cleanup_temp_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - e_error
    - cleanup_interval
    - stat
    - unlink_old_files
    linkageType: ''
    returnType: bool
    signature: "bool dbox_cleanup_temp_files(struct mail_storage *storage, const char
      *path,\n\t\t\ttime_t last_scan_time, time_t last_change_time)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:217,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:231,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:234,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:235,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:237,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:242,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:256,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:257,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:259,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:260,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:261,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:264,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 215
    functionDepth: 5
    functionLinenumber: 215
    functionLinenumberEnd: 267
    functionName: dbox_mailbox_check_existence
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_error_eacces_msg
    - mailbox_get_path
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - stat
    - ENOACCESS
    - mailbox_set_critical
    - i_assert
    - t_strconcat
    - mail_storage_set_error
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: int dbox_mailbox_check_existence(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:271,1
    - Dst: mail_index_set_fsync_mode
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 269
    functionDepth: 9
    functionLinenumber: 269
    functionLinenumberEnd: 278
    functionName: dbox_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_set_fsync_mode
    - index_storage_mailbox_open
    linkageType: ''
    returnType: int
    signature: int dbox_mailbox_open(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:289,1
    - Dst: ST_ATIME_SEC
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:290,1
    - Dst: ST_CTIME_SEC
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:291,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:294,1
    - Dst: dbox_cleanup_temp_files
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:299,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - storage
    - path
    - last_temp_file_scan
    argTypes:
    - struct mail_storage*
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 280
    functionDepth: 3
    functionLinenumber: 280
    functionLinenumberEnd: 306
    functionName: dbox_mailbox_list_cleanup
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - ST_CTIME_SEC
    - dbox_cleanup_temp_files
    - e_error
    - stat
    - ST_ATIME_SEC
    linkageType: ''
    returnType: int
    signature: "int dbox_mailbox_list_cleanup(struct mail_storage *storage, const
      char *path,\n\t\t\t      time_t last_temp_file_scan)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:314,1
    - Dst: dbox_mailbox_list_cleanup
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:315,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:315,1
    - Dst: index_mailbox_update_last_temp_file_scan
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 308
    functionDepth: 4
    functionLinenumber: 308
    functionLinenumberEnd: 318
    functionName: dbox_mailbox_close_cleanup
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - index_mailbox_update_last_temp_file_scan
    - mail_index_get_header
    - dbox_mailbox_list_cleanup
    linkageType: ''
    returnType: void
    signature: void dbox_mailbox_close_cleanup(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 320
    functionDepth: 6
    functionLinenumber: 320
    functionLinenumberEnd: 323
    functionName: dbox_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_close
    linkageType: ''
    returnType: void
    signature: void dbox_mailbox_close(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:331,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:337,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:341,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:348,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:349,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - storage
    - path
    argTypes:
    - struct mail_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 325
    functionDepth: 4
    functionLinenumber: 325
    functionLinenumberEnd: 354
    functionName: dir_is_empty
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - closedir
    - readdir
    - mail_storage_set_critical
    - opendir
    linkageType: ''
    returnType: int
    signature: int dir_is_empty(struct mail_storage *storage, const char *path)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:359,1
    - Dst: index_storage_mailbox_create
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:364,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:366,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:368,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:370,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:377,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:378,1
    - Dst: dir_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:379,1
    - Dst: struct dbox_storage*::v::set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:383,1
    - Dst: dbox_mailbox_create_indexes
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:390,1
    - Dst: index_mailbox_update_last_temp_file_scan
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:392,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 356
    functionDepth: 9
    functionLinenumber: 356
    functionLinenumberEnd: 393
    functionName: dbox_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - dbox_mailbox_create_indexes
    - mailbox_open
    - DBOX_STORAGE
    - dir_is_empty
    - mail_index_get_header
    - struct dbox_storage*::v::set_mailbox_corrupted
    - index_mailbox_update_last_temp_file_scan
    - stat
    - index_storage_mailbox_create
    - mail_storage_set_error
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int dbox_mailbox_create(struct mailbox *box,\n\t\t\tconst struct mailbox_update
      *update, bool directory)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:398,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:405,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:407,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:408,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:412,1
    - Dst: struct dbox_storage*::v::mailbox_create_indexes
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:413,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:414,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 395
    functionDepth: 5
    functionLinenumber: 395
    functionLinenumberEnd: 420
    functionName: dbox_mailbox_create_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 1
    functionsReached:
    - mail_index_sync_commit
    - mail_index_sync_rollback
    - struct dbox_storage*::v::mailbox_create_indexes
    - DBOX_STORAGE
    - mail_index_get_header
    - mailbox_set_index_error
    - mail_index_sync_begin
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dbox_mailbox_create_indexes(struct mailbox *box,\n\t\t\t\tconst
      struct mailbox_update *update)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:427,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:432,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:435,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:441,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 422
    functionDepth: 6
    functionLinenumber: 422
    functionLinenumberEnd: 445
    functionName: dbox_verify_alt_storage
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - e_error
    - mailbox_list_mkdir_root
    - stat
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: int
    signature: int dbox_verify_alt_storage(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - box
    - ext_id
    - flags_offset
    - flag
    argTypes:
    - struct mailbox*
    - uint32_t
    - unsigned int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 458
    functionName: dbox_header_have_flag
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-common/dbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_get_header_ext
    linkageType: ''
    returnType: bool
    signature: "bool dbox_header_have_flag(struct mailbox *box, uint32_t ext_id,\n\t\t\t
      \  unsigned int flags_offset, uint8_t flag)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:18,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:19,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:20,1
    - Dst: sdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:24,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct dbox_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 14
    functionDepth: 3
    functionLinenumber: 14
    functionLinenumberEnd: 26
    functionName: sdbox_mail_set_expunged
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - t_strdup_printf
    - mail_index_is_expunged
    - sdbox_set_mailbox_corrupted
    - mail_index_refresh
    linkageType: ''
    returnType: void
    signature: void sdbox_mail_set_expunged(struct dbox_mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:31,1
    - Dst: sdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:39,1
    - Dst: sdbox_save_file_get_file
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:44,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:49,1
    - Dst: sdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct dbox_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 28
    functionDepth: 7
    functionLinenumber: 28
    functionLinenumberEnd: 57
    functionName: sdbox_mail_file_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - sdbox_save_file_get_file
    - dbox_file_open
    - sdbox_set_mailbox_corrupted
    - sdbox_file_init
    linkageType: ''
    returnType: int
    signature: int sdbox_mail_file_set(struct dbox_mail *mail)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:63,1
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:64,1
    - Dst: sdbox_mail_file_set
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:69,1
    - Dst: dbox_file_stat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:73,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:74,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:76,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:79,1
    - Dst: sdbox_mail_file_set
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:83,1
    - Dst: dbox_file_stat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:87,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:88,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:90,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:93,1
    - Dst: dbox_header_have_flag
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:97,1
    - Dst: dbox_header_have_flag
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:105,1
    - Dst: dbox_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:115,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 59
    functionDepth: 21
    functionLinenumber: 59
    functionLinenumberEnd: 116
    functionName: sdbox_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - mail_set_expunged
    - mail_event
    - p_strdup_printf
    - dbox_mail_get_special
    - dbox_header_have_flag
    - dbox_file_stat
    - sdbox_mail_file_set
    - DBOX_MAIL
    linkageType: ''
    returnType: int
    signature: "int sdbox_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t       const char **value_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_stream_access_start
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:125,1
    - Dst: sdbox_mail_file_set
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:128,1
    - Dst: dbox_file_is_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:132,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:134,1
    - Dst: sdbox_mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c:137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - mail
    - offset_r
    - file_r
    argTypes:
    - struct dbox_mail*
    - uoff_t*
    - struct dbox_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 118
    functionDepth: 8
    functionLinenumber: 118
    functionLinenumberEnd: 145
    functionName: sdbox_mail_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-mail.c
    functionUses: 0
    functionsReached:
    - dbox_file_open
    - dbox_file_is_open
    - mail_stream_access_start
    - sdbox_mail_set_expunged
    - sdbox_mail_file_set
    linkageType: ''
    returnType: int
    signature: "int sdbox_mail_open(struct dbox_mail *mail, uoff_t *offset_r,\n\t\t
      \   struct dbox_file **file_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:19,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:30,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:32,1
    - Dst: fs_get_driver
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:32,1
    - Dst: fs_get_driver
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:33,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:34,1
    - Dst: sdbox_file_get_attachments
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:41,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:45,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:46,1
    - Dst: index_attachment_parse_extrefs
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:47,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:48,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:51,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:56,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:57,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:58,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:61,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:62,1
    - Dst: sdbox_file_attachment_relpath
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:63,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:64,1
    - Dst: guid_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:66,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:67,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:73,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:75,1
    - Dst: fs_copy
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:77,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:78,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:79,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:82,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:85,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:86,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - src_file
    - dest_file
    argTypes:
    - struct sdbox_file*
    - struct sdbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 12
    functionDepth: 4
    functionLinenumber: 12
    functionLinenumberEnd: 87
    functionName: sdbox_file_copy_attachments
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - p_array_init
    - t_strdup_printf
    - pool_unref
    - array_count
    - index_attachment_parse_extrefs
    - fs_file_last_error
    - sdbox_file_attachment_relpath
    - fs_get_driver
    - p_strconcat
    - guid_generate
    - strcmp
    - pool_alloconly_create
    - fs_file_init
    - array_push_back
    - sdbox_file_get_attachments
    - array_foreach
    - ARRAY_TYPE
    - fs_copy
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: "int sdbox_file_copy_attachments(struct sdbox_file *src_file,\n\t\t\t
      \   struct sdbox_file *dest_file)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:95,1
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:96,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:102,1
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:103,1
    - Dst: sdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:109,1
    - Dst: sdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:110,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:112,1
    - Dst: nfs_safe_link
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:116,1
    - Dst: nfs_safe_link
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:123,1
    - Dst: ECANTLINK
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:126,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:134,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:137,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:138,1
    - Dst: sdbox_file_copy_attachments
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:142,1
    - Dst: sdbox_file_unlink_aborted_save
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:145,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:146,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:147,1
    - Dst: dbox_save_add_to_index
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:152,1
    - Dst: index_copy_cache_fields
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:153,1
    - Dst: sdbox_save_add_file
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:155,1
    - Dst: mail_set_seq_saving
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:156,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:157,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 92
    functionDepth: 14
    functionLinenumber: 92
    functionLinenumberEnd: 159
    functionName: sdbox_copy_hardlink
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - DBOX_SAVECTX
    - strcmp
    - nfs_safe_link
    - ECANTLINK
    - index_copy_cache_fields
    - ENUM_NEGATE
    - mail_set_critical
    - dbox_file_unref
    - dbox_save_add_to_index
    - sdbox_save_add_file
    - sdbox_file_copy_attachments
    - sdbox_file_unlink_aborted_save
    - sdbox_file_init
    - mail_set_seq_saving
    linkageType: ''
    returnType: int
    signature: int sdbox_copy_hardlink(struct mail_save_context *_ctx, struct mail
      *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:168,1
    - Dst: mail_storage_copy_can_use_hardlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:171,1
    - Dst: sdbox_copy_hardlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:174,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 161
    functionDepth: 16
    functionLinenumber: 161
    functionLinenumberEnd: 183
    functionName: sdbox_copy
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-copy.c
    functionUses: 0
    functionsReached:
    - index_save_context_free
    - i_assert
    - sdbox_copy_hardlink
    - mail_storage_copy_can_use_hardlink
    linkageType: ''
    returnType: int
    signature: int sdbox_copy(struct mail_save_context *_ctx, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:31,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 37
    functionName: sdbox_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *sdbox_storage_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:43,1
    - Dst: dbox_storage_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:46,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:50,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - _storage
    - ns
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 39
    functionDepth: 9
    functionLinenumber: 39
    functionLinenumberEnd: 58
    functionName: sdbox_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - fs_get_properties
    - DBOX_STORAGE
    - dbox_storage_create
    linkageType: ''
    returnType: int
    signature: "int sdbox_storage_create(struct mail_storage *_storage,\n\t\t\t\tstruct
      mail_namespace *ns,\n\t\t\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:67,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:68,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:69,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:70,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 78
    functionName: sdbox_storage_find_root_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_user_get_home
    - e_debug
    - t_strconcat
    - i_faccessat2
    linkageType: ''
    returnType: char
    signature: 'char *

      sdbox_storage_find_root_dir(const struct mail_namespace *ns)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sdbox_storage_find_root_dir
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:93,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:95,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:103,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:104,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:105,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:109,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - ns
    - mail_set
    - root_path_r
    - inbox_path_r ATTR_UNUSED
    argTypes:
    - struct mail_namespace*
    - struct mail_storage_settings*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 80
    functionDepth: 5
    functionLinenumber: 80
    functionLinenumberEnd: 116
    functionName: sdbox_storage_autodetect
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - e_debug
    - sdbox_storage_find_root_dir
    - stat
    - S_ISDIR
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool sdbox_storage_autodetect(const struct mail_namespace *ns,\n\t\t\t
      const struct mail_storage_settings *mail_set,\n\t\t\t const char **root_path_r,\n\t\t\t
      const char **inbox_path_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:127,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:129,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:130,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:137,1
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:139,1
    - Dst: SDBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 118
    functionDepth: 6
    functionLinenumber: 118
    functionLinenumberEnd: 145
    functionName: sdbox_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - index_storage_mailbox_alloc
    - p_new
    - SDBOX_STORAGE
    - ENUM_NEGATE
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nsdbox_mailbox_alloc(struct mail_storage *storage,
      struct mailbox_list *list,\n\t\t    const char *vname, enum mailbox_flags flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:156,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:158,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:159,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:164,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:169,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:171,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:171,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:172,1
    - Dst: mail_index_set_ext_init_data
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:177,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:182,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - mbox
    - hdr
    - log_error
    - need_resize_r
    argTypes:
    - struct sdbox_mailbox*
    - struct sdbox_index_header*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 147
    functionDepth: 4
    functionLinenumber: 147
    functionLinenumberEnd: 185
    functionName: sdbox_read_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - mail_index_view_close
    - I_MIN
    - mail_index_view_open
    - mail_index_get_header_ext
    - mailbox_set_critical
    - i_assert
    - mail_index_set_ext_init_data
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int sdbox_read_header(struct sdbox_mailbox *mbox,\n\t\t      struct
      sdbox_index_header *hdr, bool log_error,\n\t\t      bool *need_resize_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:194,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:195,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:201,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:202,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:204,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:205,1
    - Dst: mail_index_ext_resize_hdr
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:209,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:212,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:213,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - mbox
    - trans
    - update
    argTypes:
    - struct sdbox_mailbox*
    - struct mail_index_transaction*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 187
    functionDepth: 5
    functionLinenumber: 187
    functionLinenumberEnd: 218
    functionName: sdbox_update_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_zero
    - sdbox_read_header
    - mail_index_ext_resize_hdr
    - guid_128_generate
    - mail_index_update_header_ext
    - memcmp
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: "void sdbox_update_header(struct sdbox_mailbox *mbox,\n\t\t\t\tstruct
      mail_index_transaction *trans,\n\t\t\t\tconst struct mailbox_update *update)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:224,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:230,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:234,1
    - Dst: dbox_get_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:241,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:245,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:251,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:259,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:264,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:266,1
    - Dst: mail_index_update_highest_modseq
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:267,1
    - Dst: index_pop3_uidl_set_max_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:274,1
    - Dst: sdbox_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:277,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:279,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:280,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 3
    argNames:
    - box
    - update
    - trans
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 220
    functionDepth: 9
    functionLinenumber: 220
    functionLinenumberEnd: 285
    functionName: sdbox_mailbox_create_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - mail_index_modseq_get_highest
    - mail_index_transaction_begin
    - mail_index_update_header
    - mail_index_modseq_enable
    - mail_index_update_highest_modseq
    - sdbox_update_header
    - mail_index_transaction_commit
    - dbox_get_uidvalidity_next
    - mail_index_get_header
    - mailbox_set_index_error
    - index_pop3_uidl_set_max_uid
    linkageType: ''
    returnType: int
    signature: "int sdbox_mailbox_create_indexes(struct mailbox *box,\n\t\t\t\t const
      struct mailbox_update *update,\n\t\t\t\t struct mail_index_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:292,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 295
    functionName: sdbox_get_attachment_path_suffix
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - guid_128_to_string
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      sdbox_get_attachment_path_suffix(struct dbox_file *_file)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:299,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:303,1
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - box
    - reason
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 297
    functionDepth: 5
    functionLinenumber: 297
    functionLinenumberEnd: 309
    functionName: sdbox_set_mailbox_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 2
    functionsReached:
    - SDBOX_MAILBOX
    - sdbox_read_header
    - mailbox_set_critical
    linkageType: ''
    returnType: void
    signature: void sdbox_set_mailbox_corrupted(struct mailbox *box, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:314,1
    - Dst: dbox_file_fix
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _file
    - reason
    argTypes:
    - struct dbox_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 311
    functionDepth: 7
    functionLinenumber: 311
    functionLinenumberEnd: 316
    functionName: sdbox_set_file_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - dbox_file_fix
    - mail_storage_set_critical
    linkageType: ''
    returnType: void
    signature: "void sdbox_set_file_corrupted(struct dbox_file *_file,\n\t\t\t\t     const
      char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_alloc_index
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:322,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:326,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:329,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:330,1
    - Dst: mail_index_set_ext_init_data
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct sdbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 318
    functionDepth: 7
    functionLinenumber: 318
    functionLinenumberEnd: 334
    functionName: sdbox_mailbox_alloc_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - index_storage_mailbox_alloc_index
    - guid_128_generate
    - mail_index_ext_register
    - mail_index_set_ext_init_data
    linkageType: ''
    returnType: int
    signature: int sdbox_mailbox_alloc_index(struct sdbox_mailbox *mbox)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:338,1
    - Dst: dbox_mailbox_check_existence
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:343,1
    - Dst: sdbox_mailbox_alloc_index
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:346,1
    - Dst: dbox_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:349,1
    - Dst: sdbox_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:361,1
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:366,1
    - Dst: sdbox_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:368,1
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:369,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:370,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:373,1
    - Dst: sdbox_mailbox_create_indexes
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:375,1
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:376,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:379,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 336
    functionDepth: 10
    functionLinenumber: 336
    functionLinenumberEnd: 382
    functionName: sdbox_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - i_zero
    - memcpy
    - sdbox_read_header
    - dbox_mailbox_check_existence
    - sdbox_mailbox_alloc_index
    - sdbox_mailbox_create_indexes
    - sdbox_sync
    - guid_128_is_empty
    - dbox_mailbox_open
    linkageType: ''
    returnType: int
    signature: int sdbox_mailbox_open(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:386,1
    - Dst: sdbox_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:389,1
    - Dst: dbox_mailbox_close_cleanup
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:391,1
    - Dst: dbox_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 384
    functionDepth: 7
    functionLinenumber: 384
    functionLinenumberEnd: 393
    functionName: sdbox_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - dbox_mailbox_close
    - dbox_mailbox_close_cleanup
    - sdbox_sync
    linkageType: ''
    returnType: void
    signature: void sdbox_mailbox_close(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:399,1
    - Dst: dbox_mailbox_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:403,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:405,1
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:409,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:410,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:414,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:416,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:416,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 395
    functionDepth: 10
    functionLinenumber: 395
    functionLinenumberEnd: 418
    functionName: sdbox_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - dbox_mailbox_create
    - memcpy
    - i_assert
    - sdbox_read_header
    - mailbox_set_critical
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int sdbox_mailbox_create(struct mailbox *box,\n\t\t     const struct
      mailbox_update *update, bool directory)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:425,1
    - Dst: index_mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:427,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 420
    functionDepth: 12
    functionLinenumber: 420
    functionLinenumberEnd: 434
    functionName: sdbox_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - memcpy
    - index_mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int sdbox_mailbox_get_metadata(struct mailbox *box,\n\t\t\t   enum
      mailbox_metadata_items items,\n\t\t\t   struct mailbox_metadata *metadata_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:440,1
    - Dst: sdbox_mailbox_create_indexes
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:443,1
    - Dst: index_storage_mailbox_update_common
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c:445,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 436
    functionDepth: 10
    functionLinenumber: 436
    functionLinenumberEnd: 446
    functionName: dbox_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_open
    - index_storage_mailbox_update_common
    - sdbox_mailbox_create_indexes
    linkageType: ''
    returnType: int
    signature: int dbox_mailbox_update(struct mailbox *box, const struct mailbox_update
      *update)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:20,1
    - Dst: dbox_file_stat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:24,1
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:27,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:30,1
    - Dst: sdbox_file_move
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:31,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - file
    - event
    - type
    argTypes:
    - struct dbox_file*
    - struct event*
    - enum sdbox_sync_entry_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 12
    functionDepth: 7
    functionLinenumber: 12
    functionLinenumberEnd: 33
    functionName: dbox_sync_file_move_if_needed
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - dbox_file_is_in_alt
    - sdbox_file_move
    - dbox_file_stat
    - dbox_file_open
    linkageType: ''
    returnType: void
    signature: "void dbox_sync_file_move_if_needed(struct dbox_file *file, struct
      event *event,\n\t\t\t      enum sdbox_sync_entry_type type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_is_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:44,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:45,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:46,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:56,1
    - Dst: sdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:58,1
    - Dst: dbox_sync_file_move_if_needed
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:59,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - seq
    - uid
    - type
    argTypes:
    - struct sdbox_sync_context*
    - uint32_t
    - uint32_t
    - enum sdbox_sync_entry_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 35
    functionDepth: 8
    functionLinenumber: 35
    functionLinenumberEnd: 63
    functionName: sdbox_sync_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - dbox_sync_file_move_if_needed
    - mail_index_update_flags
    - array_push_back
    - mail_index_transaction_is_expunged
    - dbox_file_unref
    - sdbox_file_init
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: "void sdbox_sync_file(struct sdbox_sync_context *ctx,\n\t\t\t    uint32_t
      seq, uint32_t uid,\n\t\t\t    enum sdbox_sync_entry_type type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:88,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:96,1
    - Dst: sdbox_sync_file
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:97,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - sync_rec
    argTypes:
    - struct sdbox_sync_context*
    - struct mail_index_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 65
    functionDepth: 9
    functionLinenumber: 65
    functionLinenumberEnd: 98
    functionName: sdbox_sync_add
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - sdbox_sync_file
    - mail_index_lookup_seq_range
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: "void sdbox_sync_add(struct sdbox_sync_context *ctx,\n\t\t\t   const
      struct mail_index_sync_rec *sync_rec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:108,1
    - Dst: sdbox_mailbox_create_indexes
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:115,1
    - Dst: sdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:119,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:125,1
    - Dst: mailbox_recent_flags_set_seqs
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:127,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:129,1
    - Dst: sdbox_sync_add
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sdbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 101
    functionDepth: 10
    functionLinenumber: 101
    functionLinenumberEnd: 132
    functionName: sdbox_sync_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_recent_flags_set_seqs
    - mail_index_sync_next
    - mail_index_get_header
    - mail_index_lookup_seq_range
    - sdbox_sync_add
    - sdbox_mailbox_create_indexes
    - sdbox_set_mailbox_corrupted
    linkageType: ''
    returnType: int
    signature: int sdbox_sync_index(struct sdbox_sync_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:142,1
    - Dst: sdbox_file_unlink_with_attachments
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:145,1
    - Dst: dbox_file_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:147,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:151,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct sdbox_sync_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 134
    functionDepth: 5
    functionLinenumber: 134
    functionLinenumberEnd: 153
    functionName: dbox_sync_file_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - sdbox_file_unlink_with_attachments
    - dbox_file_unref
    - mailbox_sync_notify
    - dbox_file_unlink
    - sdbox_file_init
    linkageType: ''
    returnType: void
    signature: "void dbox_sync_file_expunge(struct sdbox_sync_context *ctx,\n\t\t\t\t
      \  uint32_t uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:162,1
    - Dst: dbox_sync_file_expunge
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:163,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sdbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 155
    functionDepth: 6
    functionLinenumber: 155
    functionLinenumberEnd: 167
    functionName: dbox_sync_expunge_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - dbox_sync_file_expunge
    - mailbox_sync_notify
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void dbox_sync_expunge_files(struct sdbox_sync_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:177,1
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:178,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:179,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:182,1
    - Dst: sdbox_refresh_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - mbox
    - retry
    - log_error
    argTypes:
    - struct sdbox_mailbox*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 169
    functionDepth: 5
    functionLinenumber: 169
    functionLinenumberEnd: 186
    functionName: sdbox_refresh_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 1
    functionsReached:
    - sdbox_read_header
    - mail_index_view_open
    - sdbox_refresh_header
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: int sdbox_refresh_header(struct sdbox_mailbox *mbox, bool retry, bool
      log_error)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:192,1
    - Dst: sdbox_refresh_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:203,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:205,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:208,1
    - Dst: index_storage_get_sync_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:210,1
    - Dst: index_storage_expunged_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:219,1
    - Dst: mail_index_reset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:222,1
    - Dst: sdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:223,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:227,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:228,1
    - Dst: sdbox_sync_index
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:236,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:244,1
    - Dst: sdbox_sync_index_rebuild
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:250,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:254,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:256,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:257,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:258,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 3
    argNames:
    - mbox
    - flags
    - ctx_r
    argTypes:
    - struct sdbox_mailbox*
    - enum sdbox_sync_flags
    - struct sdbox_sync_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 188
    functionDepth: 11
    functionLinenumber: 188
    functionLinenumberEnd: 265
    functionName: sdbox_sync_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - index_storage_expunged_sync_begin
    - sdbox_sync_index_rebuild
    - i_free
    - sdbox_sync_index
    - index_storage_get_sync_flags
    - mail_index_sync_rollback
    - mail_index_get_header
    - sdbox_refresh_header
    - i_new
    - mail_index_reset_fscked
    - index_storage_expunging_deinit
    - mailbox_set_critical
    - sdbox_set_mailbox_corrupted
    - array_free
    linkageType: ''
    returnType: int
    signature: "int sdbox_sync_begin(struct sdbox_mailbox *mbox, enum sdbox_sync_flags
      flags,\n\t\t     struct sdbox_sync_context **ctx_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_ref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:276,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:278,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:279,1
    - Dst: dbox_sync_expunge_files
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:282,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:284,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:286,1
    - Dst: mail_storage_list_index_rebuild_and_set_uncorrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:290,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:292,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:293,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:294,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - _ctx
    - success
    argTypes:
    - struct sdbox_sync_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 267
    functionDepth: 7
    functionLinenumber: 267
    functionLinenumberEnd: 296
    functionName: sdbox_sync_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_commit
    - i_free
    - mail_index_sync_rollback
    - dbox_sync_expunge_files
    - mailbox_set_index_error
    - mail_storage_list_index_rebuild_and_set_uncorrupted
    - index_storage_expunging_deinit
    - mail_index_view_ref
    - array_free
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: int sdbox_sync_finish(struct sdbox_sync_context **_ctx, bool success)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sdbox_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:302,1
    - Dst: sdbox_sync_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - mbox
    - flags
    argTypes:
    - struct sdbox_mailbox*
    - enum sdbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 298
    functionDepth: 12
    functionLinenumber: 298
    functionLinenumberEnd: 308
    functionName: sdbox_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 2
    functionsReached:
    - sdbox_sync_begin
    - sdbox_sync_finish
    linkageType: ''
    returnType: int
    signature: int sdbox_sync(struct sdbox_mailbox *mbox, enum sdbox_sync_flags flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:313,1
    - Dst: mail_index_reset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:317,1
    - Dst: sdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:318,1
    - Dst: index_mailbox_want_full_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:319,1
    - Dst: sdbox_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:323,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c:326,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 310
    functionDepth: 14
    functionLinenumber: 310
    functionLinenumberEnd: 327
    functionName: sdbox_storage_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - index_mailbox_sync_init
    - index_mailbox_want_full_sync
    - mail_index_reset_fscked
    - sdbox_sync
    - sdbox_set_mailbox_corrupted
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      sdbox_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: SDBOX_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SDBOX_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: SDBOX_MAILBOX
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-storage.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SDBOX_MAILBOX(s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:18,1
    - Dst: dbox_get_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:20,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 13
    functionDepth: 9
    functionLinenumber: 13
    functionLinenumberEnd: 25
    functionName: sdbox_sync_set_uidvalidity
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
    functionUses: 0
    functionsReached:
    - dbox_get_uidvalidity_next
    - mail_index_update_header
    - mail_index_get_header
    linkageType: ''
    returnType: void
    signature: void sdbox_sync_set_uidvalidity(struct index_rebuild_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:32,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:36,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:39,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:40,1
    - Dst: sdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:44,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:50,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:51,1
    - Dst: index_rebuild_index_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - ctx
    - trans_view
    - fname
    - primary
    argTypes:
    - struct index_rebuild_context*
    - struct mail_index_view*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 27
    functionDepth: 6
    functionLinenumber: 27
    functionLinenumberEnd: 55
    functionName: sdbox_sync_add_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - mail_index_append
    - index_rebuild_index_metadata
    - mail_index_lookup_seq
    - str_begins
    - str_to_uint32
    - e_warning
    - sdbox_file_init
    linkageType: ''
    returnType: void
    signature: "void sdbox_sync_add_file(struct index_rebuild_context *ctx,\n\t\t
      \   struct mail_index_view *trans_view,\n\t\t    const char *fname, bool primary)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:67,1
    - Dst: index_mailbox_fix_inconsistent_existence
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:74,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:76,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:79,1
    - Dst: sdbox_sync_add_file
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:80,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:82,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:86,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:87,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - ctx
    - trans_view
    - path
    - primary
    argTypes:
    - struct index_rebuild_context*
    - struct mail_index_view*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 59
    functionDepth: 7
    functionLinenumber: 59
    functionLinenumberEnd: 91
    functionName: sdbox_sync_index_rebuild_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
    functionUses: 0
    functionsReached:
    - index_mailbox_fix_inconsistent_existence
    - readdir
    - mailbox_set_critical
    - opendir
    - closedir
    - sdbox_sync_add_file
    linkageType: ''
    returnType: int
    signature: "int sdbox_sync_index_rebuild_dir(struct index_rebuild_context *ctx,\n\t\t\t\t\tstruct
      mail_index_view *trans_view,\n\t\t\t\t\tconst char *path, bool primary)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:95,1
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:99,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:100,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:101,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:102,1
    - Dst: mail_index_set_ext_init_data
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 93
    functionDepth: 5
    functionLinenumber: 93
    functionLinenumberEnd: 108
    functionName: sdbox_sync_update_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - i_zero
    - sdbox_read_header
    - guid_128_generate
    - guid_128_is_empty
    - mail_index_set_ext_init_data
    linkageType: ''
    returnType: void
    signature: void sdbox_sync_update_header(struct index_rebuild_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:116,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:117,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:122,1
    - Dst: sdbox_sync_set_uidvalidity
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:123,1
    - Dst: sdbox_sync_index_rebuild_dir
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:124,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:125,1
    - Dst: sdbox_sync_index_rebuild_dir
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:128,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:129,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:135,1
    - Dst: sdbox_sync_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 110
    functionDepth: 10
    functionLinenumber: 110
    functionLinenumberEnd: 138
    functionName: sdbox_sync_index_rebuild_singles
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - mail_index_transaction_open_updated_view
    - sdbox_sync_index_rebuild_dir
    - sdbox_sync_update_header
    - mailbox_set_critical
    - sdbox_sync_set_uidvalidity
    - mail_index_view_close
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: int sdbox_sync_index_rebuild_singles(struct index_rebuild_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:149,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:156,1
    - Dst: dbox_verify_alt_storage
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:158,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:159,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:165,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:166,1
    - Dst: index_index_rebuild_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:169,1
    - Dst: sdbox_sync_index_rebuild_singles
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:170,1
    - Dst: index_index_rebuild_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:171,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:174,1
    - Dst: mail_index_unset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:176,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:177,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c:179,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - mbox
    - force
    argTypes:
    - struct sdbox_mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 140
    functionDepth: 16
    functionLinenumber: 140
    functionLinenumberEnd: 182
    functionName: sdbox_sync_index_rebuild
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
    functionUses: 1
    functionsReached:
    - mail_index_unset_fscked
    - mail_index_transaction_begin
    - index_index_rebuild_init
    - mail_index_view_close
    - mail_index_transaction_commit
    - sdbox_read_header
    - dbox_verify_alt_storage
    - mail_index_view_open
    - index_index_rebuild_deinit
    - e_warning
    - mail_index_transaction_rollback
    - mailbox_set_critical
    - sdbox_sync_index_rebuild_singles
    linkageType: ''
    returnType: int
    signature: int sdbox_sync_index_rebuild(struct sdbox_mailbox *mbox, bool force)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: SDBOX_SAVECTX
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SDBOX_SAVECTX(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:41,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:45,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:47,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:48,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:49,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mailbox_transaction_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: sdbox_save_file_get_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 1
    functionsReached:
    - array_get
    - i_assert
    - SDBOX_SAVECTX
    linkageType: ''
    returnType: struct dbox_file
    signature: 'struct dbox_file *

      sdbox_save_file_get_file(struct mailbox_transaction_context *t, uint32_t seq)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:59,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:62,1
    - Dst: SDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:66,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:74,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 81
    functionName: sdbox_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - SDBOX_MAILBOX
    - i_array_init
    - i_new
    - SDBOX_SAVECTX
    - i_assert
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      sdbox_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:85,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:92,1
    - Dst: dbox_file_close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:96,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _ctx
    - file
    argTypes:
    - struct mail_save_context*
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 83
    functionDepth: 6
    functionLinenumber: 83
    functionLinenumberEnd: 99
    functionName: sdbox_save_add_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 1
    functionsReached:
    - array_get
    - dbox_file_close
    - SDBOX_SAVECTX
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void sdbox_save_add_file(struct mail_save_context *_ctx, struct dbox_file
      *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:103,1
    - Dst: sdbox_file_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:107,1
    - Dst: dbox_file_append_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:108,1
    - Dst: dbox_file_get_append_stream
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:112,1
    - Dst: dbox_file_append_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:113,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:114,1
    - Dst: dbox_save_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:119,1
    - Dst: sdbox_save_add_file
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - _ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 101
    functionDepth: 16
    functionLinenumber: 101
    functionLinenumberEnd: 123
    functionName: sdbox_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - dbox_file_append_rollback
    - dbox_file_unref
    - dbox_file_get_append_stream
    - dbox_file_append_init
    - dbox_save_begin
    - SDBOX_SAVECTX
    - i_assert
    - sdbox_save_add_file
    - sdbox_file_create
    linkageType: ''
    returnType: int
    signature: int sdbox_save_begin(struct mail_save_context *_ctx, struct istream
      *input)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:136,1
    - Dst: dbox_save_write_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:141,1
    - Dst: dbox_msg_header_fill
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:143,1
    - Dst: o_stream_pwrite
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:144,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:147,1
    - Dst: index_attachment_save_get_extrefs
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:153,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:155,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:162,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:163,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:166,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - file
    argTypes:
    - struct dbox_save_context*
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 125
    functionDepth: 5
    functionLinenumber: 125
    functionLinenumberEnd: 172
    functionName: dbox_save_mail_write_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - index_attachment_save_get_extrefs
    - pool_alloconly_create
    - p_strdup
    - p_array_init
    - dbox_save_write_metadata
    - array_push_back
    - array_get
    - dbox_file_set_syscall_error
    - dbox_msg_header_fill
    - o_stream_pwrite
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dbox_save_mail_write_metadata(struct dbox_save_context *ctx,\n\t\t\t\t\t
      struct dbox_file *file)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:186,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:188,1
    - Dst: dbox_save_end
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:190,1
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:192,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:194,1
    - Dst: dbox_save_mail_write_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 174
    functionDepth: 17
    functionLinenumber: 174
    functionLinenumberEnd: 196
    functionName: dbox_save_finish_write
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - dbox_save_end
    - if
    - time_to_uint32_trunc
    - index_mail_cache_add
    - array_back_modifiable
    - dbox_save_mail_write_metadata
    linkageType: ''
    returnType: int
    signature: int dbox_save_finish_write(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dbox_save_finish_write
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:221,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 18
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: sdbox_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - dbox_save_finish_write
    - index_save_context_free
    linkageType: ''
    returnType: int
    signature: int sdbox_save_finish(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:228,1
    - Dst: sdbox_save_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 226
    functionDepth: 19
    functionLinenumber: 226
    functionLinenumberEnd: 232
    functionName: sdbox_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - DBOX_SAVECTX
    - sdbox_save_finish
    linkageType: ''
    returnType: void
    signature: void sdbox_save_cancel(struct mail_save_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:243,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:244,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:248,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:249,1
    - Dst: sdbox_file_assign_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:250,1
    - Dst: index_pop3_uidl_set_max_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - uids
    argTypes:
    - struct sdbox_save_context*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 255
    functionName: dbox_save_assign_uids
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - seq_range_array_iter_init
    - array_get
    - sdbox_file_assign_uid
    - index_pop3_uidl_set_max_uid
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dbox_save_assign_uids(struct sdbox_save_context *ctx,\n\t\t\t\t
      const ARRAY_TYPE(seq_range) *uids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:268,1
    - Dst: sdbox_file_unlink_aborted_save
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:274,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:276,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sdbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: dbox_save_unref_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_free
    - dbox_file_unref
    - sdbox_file_unlink_aborted_save
    linkageType: ''
    returnType: void
    signature: void dbox_save_unref_files(struct sdbox_save_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:283,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:287,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:289,1
    - Dst: sdbox_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:294,1
    - Dst: sdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:296,1
    - Dst: dbox_save_update_header_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:301,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:305,1
    - Dst: mail_index_append_finish_uids
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:306,1
    - Dst: dbox_save_assign_uids
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:308,1
    - Dst: sdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 281
    functionDepth: 12
    functionLinenumber: 281
    functionLinenumberEnd: 315
    functionName: sdbox_transaction_save_commit_pre
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - sdbox_sync_begin
    - dbox_save_update_header_flags
    - mail_index_get_header
    - mail_index_append_finish_uids
    - array_count
    - dbox_save_assign_uids
    - SDBOX_SAVECTX
    - i_assert
    - sdbox_transaction_save_rollback
    linkageType: ''
    returnType: int
    signature: int sdbox_transaction_save_commit_pre(struct mail_save_context *_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:320,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:325,1
    - Dst: sdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:326,1
    - Dst: mail_index_sync_set_commit_result
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:330,1
    - Dst: sdbox_sync_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:333,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:337,1
    - Dst: fdatasync_path
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:339,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:340,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:344,1
    - Dst: dbox_save_unref_files
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:345,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:346,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - _ctx
    - result
    argTypes:
    - struct mail_save_context*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 317
    functionDepth: 8
    functionLinenumber: 317
    functionLinenumberEnd: 347
    functionName: sdbox_transaction_save_commit_post
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - mail_set_critical
    - fdatasync_path
    - sdbox_sync_finish
    - array_count
    - mail_index_sync_set_commit_result
    - SDBOX_SAVECTX
    - i_assert
    - i_free
    - sdbox_transaction_save_rollback
    - dbox_save_unref_files
    linkageType: ''
    returnType: void
    signature: "void sdbox_transaction_save_commit_post(struct mail_save_context *_ctx,\n\t\t\t\t\tstruct
      mail_index_transaction_commit_result *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:351,1
    - Dst: sdbox_save_cancel
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:355,1
    - Dst: dbox_save_unref_files
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:356,1
    - Dst: sdbox_sync_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:359,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 349
    functionDepth: 20
    functionLinenumber: 349
    functionLinenumberEnd: 361
    functionName: sdbox_transaction_save_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-save.c
    functionUses: 2
    functionsReached:
    - sdbox_sync_finish
    - SDBOX_SAVECTX
    - sdbox_save_cancel
    - i_free
    - dbox_save_unref_files
    linkageType: ''
    returnType: void
    signature: void sdbox_transaction_save_rollback(struct mail_save_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:23,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:24,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:26,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:26,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:29,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - file
    - fname
    argTypes:
    - struct sdbox_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 18
    functionDepth: 5
    functionLinenumber: 18
    functionLinenumberEnd: 32
    functionName: sdbox_file_init_paths
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 0
    functionsReached:
    - i_strdup_printf
    - i_free
    - mailbox_get_path
    - mailbox_get_path_to
    linkageType: ''
    returnType: void
    signature: void sdbox_file_init_paths(struct sdbox_file *file, const char *fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:39,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:43,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:44,1
    - Dst: sdbox_file_init_paths
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:45,1
    - Dst: sdbox_file_init_paths
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:48,1
    - Dst: dbox_generate_tmp_filename
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:48,1
    - Dst: dbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - mbox
    - uid
    argTypes:
    - struct sdbox_mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 34
    functionDepth: 6
    functionLinenumber: 34
    functionLinenumberEnd: 53
    functionName: sdbox_file_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 5
    functionsReached:
    - dbox_file_init
    - dbox_generate_tmp_filename
    - t_strdup_printf
    - if
    - sdbox_file_init_paths
    - i_new
    linkageType: ''
    returnType: struct dbox_file
    signature: struct dbox_file *sdbox_file_init(struct sdbox_mailbox *mbox, uint32_t
      uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:59,1
    - Dst: struct dbox_file*::storage::v::file_create_fd
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct sdbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 7
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: sdbox_file_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 1
    functionsReached:
    - sdbox_file_init
    - struct dbox_file*::storage::v::file_create_fd
    linkageType: ''
    returnType: struct dbox_file
    signature: struct dbox_file *sdbox_file_create(struct sdbox_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:69,1
    - Dst: dbox_file_free
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: sdbox_file_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 0
    functionsReached:
    - dbox_file_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void sdbox_file_free(struct dbox_file *file)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:82,1
    - Dst: dbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:86,1
    - Dst: dbox_file_metadata_read
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:87,1
    - Dst: dbox_file_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:95,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - file
    - extrefs_r
    argTypes:
    - struct dbox_file*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 73
    functionDepth: 8
    functionLinenumber: 73
    functionLinenumberEnd: 103
    functionName: sdbox_file_get_attachments
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 1
    functionsReached:
    - dbox_file_metadata_read
    - dbox_file_metadata_get
    - dbox_file_seek
    - dbox_file_open
    linkageType: ''
    returnType: int
    signature: int sdbox_file_get_attachments(struct dbox_file *file, const char **extrefs_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:110,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:112,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:115,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:117,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:118,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - file
    - srcpath
    argTypes:
    - struct sdbox_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 105
    functionDepth: 4
    functionLinenumber: 105
    functionLinenumberEnd: 121
    functionName: sdbox_file_attachment_relpath
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 1
    functionsReached:
    - strchr
    - guid_128_to_string
    - t_strdup_printf
    - t_strdup_until
    - mailbox_set_critical
    linkageType: ''
    returnType: char
    signature: 'char *

      sdbox_file_attachment_relpath(struct sdbox_file *file, const char *srcpath)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:130,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:131,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:132,1
    - Dst: sdbox_file_attachment_relpath
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:133,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:134,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:136,1
    - Dst: fs_rename
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:138,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:139,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:140,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:143,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct sdbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 145
    functionName: sdbox_file_rename_attachments
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - sdbox_file_attachment_relpath
    - array_foreach_elem
    - t_strdup_printf
    - fs_rename
    - mailbox_set_critical
    - fs_file_last_error
    linkageType: ''
    returnType: int
    signature: int sdbox_file_rename_attachments(struct sdbox_file *file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:155,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:158,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:159,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:162,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:163,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:165,1
    - Dst: sdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:166,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:166,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:170,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:171,1
    - Dst: sdbox_file_init_paths
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:176,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:179,1
    - Dst: sdbox_file_rename_attachments
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - file
    - uid
    argTypes:
    - struct sdbox_file*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 149
    functionDepth: 6
    functionLinenumber: 149
    functionLinenumberEnd: 184
    functionName: sdbox_file_assign_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 1
    functionsReached:
    - rename
    - sdbox_set_mailbox_corrupted
    - sdbox_file_rename_attachments
    - strrchr
    - t_strdup_printf
    - sdbox_file_init_paths
    - stat
    - t_strdup_until
    - mailbox_set_critical
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: int
    signature: int sdbox_file_assign_uid(struct sdbox_file *file, uint32_t uid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:194,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:199,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:201,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:202,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:204,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:205,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:208,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:210,1
    - Dst: sdbox_file_attachment_relpath
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:211,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:212,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:213,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:215,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:216,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct sdbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 186
    functionDepth: 5
    functionLinenumber: 186
    functionLinenumberEnd: 220
    functionName: sdbox_file_unlink_aborted_save_attachments
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - sdbox_file_attachment_relpath
    - array_foreach_elem
    - fs_delete
    - t_strdup_printf
    - mailbox_set_critical
    - fs_file_last_error
    linkageType: ''
    returnType: int
    signature: int sdbox_file_unlink_aborted_save_attachments(struct sdbox_file *file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:228,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:229,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:233,1
    - Dst: sdbox_file_unlink_aborted_save_attachments
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct sdbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 224
    functionDepth: 6
    functionLinenumber: 224
    functionLinenumberEnd: 238
    functionName: sdbox_file_unlink_aborted_save
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 2
    functionsReached:
    - mailbox_set_critical
    - unlink
    - sdbox_file_unlink_aborted_save_attachments
    - array_is_created
    linkageType: ''
    returnType: int
    signature: int sdbox_file_unlink_aborted_save(struct sdbox_file *file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:244,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:249,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:250,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:251,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:253,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:254,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:255,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:259,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:264,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:265,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:266,1
    - Dst: sdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:270,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:270,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:273,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:277,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:279,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:280,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:284,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - file
    - path
    - parents
    argTypes:
    - struct dbox_file*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 240
    functionDepth: 6
    functionLinenumber: 240
    functionLinenumberEnd: 291
    functionName: sdbox_file_create_fd
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 0
    functionsReached:
    - strrchr
    - mkdir_parents_chgrp
    - mailbox_get_permissions
    - umask
    - open
    - t_strdup_printf
    - t_strdup_until
    - mailbox_set_critical
    - sdbox_set_mailbox_corrupted
    - eperm_error_get_chgrp
    - fchown
    linkageType: ''
    returnType: int
    signature: int sdbox_file_create_fd(struct dbox_file *file, const char *path,
      bool parents)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:303,1
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:305,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:317,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:319,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:320,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:321,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:322,1
    - Dst: dbox_generate_tmp_filename
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:323,1
    - Dst: struct dbox_file*::storage::v::file_create_fd
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:327,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:331,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:332,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:333,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:334,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:335,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:336,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:339,1
    - Dst: fsync
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:342,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:343,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:348,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:349,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:354,1
    - Dst: utime
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:361,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:362,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:369,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:370,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:372,1
    - Dst: fdatasync_path
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:376,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:377,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:379,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:383,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:384,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:385,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:387,1
    - Dst: dbox_file_close
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:395,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:396,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:397,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 70
    argCount: 2
    argNames:
    - file
    - alt_path
    argTypes:
    - struct dbox_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 293
    functionDepth: 7
    functionLinenumber: 293
    functionLinenumberEnd: 402
    functionName: sdbox_file_move
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 1
    functionsReached:
    - utime
    - dbox_file_open
    - o_stream_unref
    - t_strdup_printf
    - i_unlink
    - stat
    - i_stream_seek
    - dbox_file_close
    - rename
    - o_stream_get_error
    - fdatasync_path
    - fsync
    - ENOACCESS
    - o_stream_nsend_istream
    - dbox_file_set_syscall_error
    - i_unlink_if_exists
    - o_stream_create_fd_file
    - dbox_file_is_in_alt
    - mail_storage_set_critical
    - i_assert
    - close
    - dbox_generate_tmp_filename
    - strrchr
    - unlink
    - struct dbox_file*::storage::v::file_create_fd
    - o_stream_finish
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: int sdbox_file_move(struct dbox_file *file, bool alt_path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:413,1
    - Dst: sdbox_file_attachment_relpath
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:414,1
    - Dst: index_attachment_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sfile
    - extrefs
    argTypes:
    - struct sdbox_file*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 404
    functionDepth: 6
    functionLinenumber: 404
    functionLinenumberEnd: 418
    functionName: sdbox_unlink_attachments
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 0
    functionsReached:
    - index_attachment_delete
    - sdbox_file_attachment_relpath
    - array_foreach
    linkageType: ''
    returnType: int
    signature: "int sdbox_unlink_attachments(struct sdbox_file *sfile,\n\t\t\t const
      ARRAY_TYPE(mail_attachment_extref) *extrefs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:425,1
    - Dst: sdbox_file_get_attachments
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:430,1
    - Dst: dbox_file_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:435,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:438,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:439,1
    - Dst: index_attachment_parse_extrefs
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:440,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:441,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:443,1
    - Dst: dbox_file_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:448,1
    - Dst: sdbox_unlink_attachments
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:449,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c:450,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - sfile
    argTypes:
    - struct sdbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 422
    functionDepth: 9
    functionLinenumber: 422
    functionLinenumberEnd: 452
    functionName: sdbox_file_unlink_with_attachments
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-single/sdbox-file.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_array_init
    - sdbox_file_get_attachments
    - pool_unref
    - e_warning
    - dbox_file_unlink
    - ARRAY_TYPE
    - array_clear
    - index_attachment_parse_extrefs
    - sdbox_unlink_attachments
    linkageType: ''
    returnType: int
    signature: int sdbox_file_unlink_with_attachments(struct sdbox_file *sfile)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - storage
    - file_id
    argTypes:
    - struct mdbox_storage*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: mdbox_find_and_move_open_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct mdbox_file
    signature: 'struct mdbox_file *

      mdbox_find_and_move_open_file(struct mdbox_storage *storage, uint32_t file_id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:46,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:48,1
    - Dst: dbox_file_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:50,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mdbox_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: mdbox_files_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - array_clear
    - dbox_file_free
    linkageType: ''
    returnType: void
    signature: void mdbox_files_free(struct mdbox_storage *storage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:59,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mdbox_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 64
    functionName: mdbox_files_sync_input
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - i_stream_sync
    - array_get
    linkageType: ''
    returnType: void
    signature: void mdbox_files_sync_input(struct mdbox_storage *storage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:72,1
    - Dst: dbox_file_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:75,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:76,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - storage
    - close_count
    argTypes:
    - struct mdbox_storage*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 86
    functionName: mdbox_close_open_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - dbox_file_free
    linkageType: ''
    returnType: void
    signature: void mdbox_close_open_files(struct mdbox_storage *storage, unsigned
      int close_count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:91,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:92,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:94,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - file
    - fname
    - alt
    argTypes:
    - struct mdbox_file*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 102
    functionName: mdbox_file_init_paths
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - i_strdup_printf
    - i_free
    linkageType: ''
    returnType: void
    signature: void mdbox_file_init_paths(struct mdbox_file *file, const char *fname,
      bool alt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:111,1
    - Dst: struct dbox_file*::storage::v::file_create_fd
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:112,1
    - Dst: file_preallocate
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:118,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:127,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct mdbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 137
    functionName: mdbox_file_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - e_error
    - dbox_file_is_in_alt
    - file_preallocate
    - struct dbox_file*::storage::v::file_create_fd
    linkageType: ''
    returnType: int
    signature: int mdbox_file_create(struct mdbox_file *file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_find_and_move_open_file
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:148,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:154,1
    - Dst: mdbox_close_open_files
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:156,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:160,1
    - Dst: dbox_generate_tmp_filename
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:164,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:165,1
    - Dst: mdbox_file_init_paths
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:166,1
    - Dst: dbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:167,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:172,1
    - Dst: mdbox_file_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - storage
    - file_id
    - alt_dir
    argTypes:
    - struct mdbox_storage*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 176
    functionName: mdbox_file_init_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - dbox_file_init
    - mdbox_file_init_paths
    - dbox_generate_tmp_filename
    - array_push_back
    - mdbox_file_create
    - mdbox_find_and_move_open_file
    - t_strdup_printf
    - array_count
    - i_new
    - mdbox_close_open_files
    linkageType: ''
    returnType: struct dbox_file
    signature: "struct dbox_file *\nmdbox_file_init_full(struct mdbox_storage *storage,\n\t\t
      \    uint32_t file_id, bool alt_dir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_file_init_full
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - storage
    - file_id
    argTypes:
    - struct mdbox_storage*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 4
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: mdbox_file_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - mdbox_file_init_full
    linkageType: ''
    returnType: struct dbox_file
    signature: 'struct dbox_file *

      mdbox_file_init(struct mdbox_storage *storage, uint32_t file_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_file_init_full
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mdbox_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 4
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: mdbox_file_init_new_alt
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - mdbox_file_init_full
    linkageType: ''
    returnType: struct dbox_file
    signature: 'struct dbox_file *

      mdbox_file_init_new_alt(struct mdbox_storage *storage)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:196,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:197,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:200,1
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:201,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:203,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:205,1
    - Dst: mdbox_storage_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:206,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:210,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:211,1
    - Dst: mdbox_file_init_paths
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:216,1
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:217,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - file
    - file_id
    argTypes:
    - struct mdbox_file*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 190
    functionDepth: 4
    functionLinenumber: 190
    functionLinenumberEnd: 221
    functionName: mdbox_file_assign_file_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - rename
    - mdbox_file_init_paths
    - mdbox_storage_set_corrupted
    - array_push_back
    - t_strdup_printf
    - mail_storage_set_critical
    - stat
    - dbox_file_is_in_alt
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mdbox_file_assign_file_id(struct mdbox_file *file, uint32_t file_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - storage
    - idx_r
    argTypes:
    - struct mdbox_storage*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 242
    functionName: mdbox_find_oldest_unused_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct mdbox_file
    signature: "struct mdbox_file *\nmdbox_find_oldest_unused_file(struct mdbox_storage
      *storage,\n\t\t\t      unsigned int *idx_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_find_oldest_unused_file
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:250,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:253,1
    - Dst: dbox_file_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:254,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:258,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mdbox_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 259
    functionName: mdbox_file_close_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - array_delete
    - dbox_file_free
    - mdbox_find_oldest_unused_file
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mdbox_file_close_timeout(struct mdbox_storage *storage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mfile
    argTypes:
    - struct mdbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 268
    functionName: mdbox_file_close_later
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void mdbox_file_close_later(struct mdbox_file *mfile)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:281,1
    - Dst: mdbox_file_close_later
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:284,1
    - Dst: mdbox_find_oldest_unused_file
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:289,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:290,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:291,1
    - Dst: dbox_file_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:293,1
    - Dst: mdbox_file_close_later
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:294,1
    - Dst: dbox_file_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 300
    functionName: mdbox_file_unrefed
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - mdbox_file_close_later
    - array_delete
    - dbox_file_free
    - array_count
    - i_assert
    - mdbox_find_oldest_unused_file
    linkageType: ''
    returnType: void
    signature: void mdbox_file_unrefed(struct dbox_file *file)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:311,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:313,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:314,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:315,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:317,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:318,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:319,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:323,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:328,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:329,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:330,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:333,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:337,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:339,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:340,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c:344,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - file
    - path
    - parents
    argTypes:
    - struct dbox_file*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 302
    functionDepth: 6
    functionLinenumber: 302
    functionLinenumberEnd: 351
    functionName: mdbox_file_create_fd
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-file.c
    functionUses: 0
    functionsReached:
    - mailbox_list_mkdir_root
    - strrchr
    - umask
    - open
    - mail_storage_copy_list_error
    - t_strdup_until
    - mailbox_list_get_root_permissions
    - mail_storage_set_critical
    - eperm_error_get_chgrp
    - fchown
    linkageType: ''
    returnType: int
    signature: int mdbox_file_create_fd(struct dbox_file *file, const char *path,
      bool parents)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:35,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:36,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:39,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:42,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:43,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:46,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:48,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:48,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - seq
    - guid_128
    argTypes:
    - struct mdbox_sync_context*
    - uint32_t
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 51
    functionName: dbox_sync_verify_expunge_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_uid
    - guid_128_to_string
    - mail_index_lookup_ext
    - e_error
    - memcmp
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int dbox_sync_verify_expunge_guid(struct mdbox_sync_context *ctx,
      uint32_t seq,\n\t\t\t      const guid_128_t guid_128)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:59,1
    - Dst: dbox_sync_verify_expunge_guid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:64,1
    - Dst: mdbox_mail_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:67,1
    - Dst: mdbox_map_update_refcount
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:69,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - seq
    - guid_128
    argTypes:
    - struct mdbox_sync_context*
    - uint32_t
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 72
    functionName: mdbox_sync_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - mdbox_map_update_refcount
    - dbox_sync_verify_expunge_guid
    - mdbox_mail_lookup
    linkageType: ''
    returnType: int
    signature: "int mdbox_sync_expunge(struct mdbox_sync_context *ctx, uint32_t seq,\n\t\t\t
      \     const guid_128_t guid_128)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:84,1
    - Dst: mdbox_sync_expunge
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - sync_rec
    argTypes:
    - struct mdbox_sync_context*
    - struct mail_index_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 74
    functionDepth: 4
    functionLinenumber: 74
    functionLinenumberEnd: 96
    functionName: mdbox_sync_rec
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 0
    functionsReached:
    - mdbox_sync_expunge
    - mail_index_lookup_seq_range
    linkageType: ''
    returnType: int
    signature: "int mdbox_sync_rec(struct mdbox_sync_context *ctx,\n\t\t\t  const
      struct mail_index_sync_rec *sync_rec)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:111,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:112,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:113,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:114,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:115,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:117,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:118,1
    - Dst: mail_index_expunge_guid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:120,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:122,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:126,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:127,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:128,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 98
    functionDepth: 5
    functionLinenumber: 98
    functionLinenumberEnd: 133
    functionName: dbox_sync_mark_expunges
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - mail_index_transaction_begin
    - mail_index_lookup_uid
    - seq_range_array_iter_init
    - mail_index_transaction_commit
    - mail_index_lookup_ext
    - mail_index_expunge_guid
    - mailbox_sync_notify
    - guid_128_is_empty
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: int dbox_sync_mark_expunges(struct mdbox_sync_context *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:143,1
    - Dst: mdbox_mailbox_create_indexes
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:150,1
    - Dst: mdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:154,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:159,1
    - Dst: mailbox_recent_flags_set_seqs
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:161,1
    - Dst: mdbox_map_atomic_is_locked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:166,1
    - Dst: mdbox_map_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:167,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:168,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:170,1
    - Dst: mdbox_sync_rec
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:171,1
    - Dst: mdbox_map_atomic_is_locked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:177,1
    - Dst: mdbox_map_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:179,1
    - Dst: dbox_sync_mark_expunges
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:182,1
    - Dst: mdbox_map_atomic_set_failed
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:187,1
    - Dst: mdbox_map_transaction_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:188,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:189,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:190,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:193,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 135
    functionDepth: 6
    functionLinenumber: 135
    functionLinenumberEnd: 197
    functionName: mdbox_sync_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_recent_flags_set_seqs
    - i_array_init
    - mail_index_sync_next
    - mdbox_map_transaction_free
    - mdbox_map_atomic_is_locked
    - mdbox_mailbox_create_indexes
    - mdbox_map_atomic_set_failed
    - mdbox_map_transaction_commit
    - mail_index_get_header
    - mail_index_lookup_seq_range
    - dbox_sync_mark_expunges
    - mdbox_set_mailbox_corrupted
    - mailbox_sync_notify
    - array_free
    - mdbox_sync_rec
    - seq_range_count
    - mdbox_map_transaction_begin
    linkageType: ''
    returnType: int
    signature: int mdbox_sync_index(struct mdbox_sync_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_expunged_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:205,1
    - Dst: mail_index_reset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:207,1
    - Dst: mdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:208,1
    - Dst: mdbox_map_atomic_is_locked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:214,1
    - Dst: mail_index_sync_has_expunges
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:215,1
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:218,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:219,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:220,1
    - Dst: mdbox_map_atomic_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:222,1
    - Dst: mdbox_sync_try_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:224,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - sync_flags
    argTypes:
    - struct mdbox_sync_context*
    - enum mail_index_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 199
    functionDepth: 9
    functionLinenumber: 199
    functionLinenumberEnd: 227
    functionName: mdbox_sync_try_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 1
    functionsReached:
    - index_storage_expunged_sync_begin
    - mdbox_map_atomic_is_locked
    - mail_index_sync_rollback
    - mdbox_sync_try_begin
    - mail_index_sync_set_reason
    - mdbox_set_mailbox_corrupted
    - index_storage_expunging_deinit
    - mail_index_reset_fscked
    - mail_index_sync_has_expunges
    - mdbox_map_atomic_lock
    linkageType: ''
    returnType: int
    signature: "int mdbox_sync_try_begin(struct mdbox_sync_context *ctx,\n\t\t\t\tenum
      mail_index_sync_flags sync_flags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:244,1
    - Dst: index_storage_get_sync_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:249,1
    - Dst: mdbox_sync_try_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:257,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:260,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:261,1
    - Dst: mdbox_sync_index
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:265,1
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:266,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:269,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:270,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:271,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:274,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:279,1
    - Dst: mdbox_map_atomic_is_locked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:281,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:286,1
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:289,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 5
    argNames:
    - mbox
    - flags
    - atomic
    - ctx_r
    - corrupted_r
    argTypes:
    - struct mdbox_mailbox*
    - enum mdbox_sync_flags
    - struct mdbox_map_atomic_context*
    - struct mdbox_sync_context**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 229
    functionDepth: 10
    functionLinenumber: 229
    functionLinenumberEnd: 293
    functionName: mdbox_sync_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 0
    functionsReached:
    - mdbox_map_atomic_is_locked
    - mdbox_sync_index
    - index_storage_get_sync_flags
    - mdbox_sync_try_begin
    - mail_index_sync_rollback
    - i_free_and_null
    - mail_index_sync_set_reason
    - t_strdup_printf
    - index_storage_expunging_deinit
    - i_new
    - i_assert
    - i_free
    linkageType: ''
    returnType: int
    signature: "int mdbox_sync_begin(struct mdbox_mailbox *mbox, enum mdbox_sync_flags
      flags,\n\t\t     struct mdbox_map_atomic_context *atomic,\n\t\t     struct mdbox_sync_context
      **ctx_r, bool *corrupted_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:304,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:305,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:309,1
    - Dst: mail_storage_list_index_rebuild_and_set_uncorrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:313,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - _ctx
    - success
    argTypes:
    - struct mdbox_sync_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 295
    functionDepth: 5
    functionLinenumber: 295
    functionLinenumberEnd: 317
    functionName: mdbox_sync_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_commit
    - mail_index_sync_rollback
    - mailbox_set_index_error
    - mail_storage_list_index_rebuild_and_set_uncorrupted
    - i_free
    linkageType: ''
    returnType: int
    signature: int mdbox_sync_finish(struct mdbox_sync_context **_ctx, bool success)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:322,1
    - Dst: mdbox_map_is_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:333,1
    - Dst: mdbox_storage_rebuild
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:338,1
    - Dst: mailbox_recent_flags_reset
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:341,1
    - Dst: mdbox_map_atomic_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:346,1
    - Dst: mdbox_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:347,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:349,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:351,1
    - Dst: mdbox_map_atomic_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:359,1
    - Dst: mdbox_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:360,1
    - Dst: mdbox_sync_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:364,1
    - Dst: mdbox_map_atomic_set_success
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:366,1
    - Dst: mdbox_map_atomic_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:367,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 2
    argNames:
    - mbox
    - flags
    argTypes:
    - struct mdbox_mailbox*
    - enum mdbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 319
    functionDepth: 11
    functionLinenumber: 319
    functionLinenumberEnd: 370
    functionName: mdbox_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 1
    functionsReached:
    - mdbox_map_is_fscked
    - mailbox_recent_flags_reset
    - mdbox_sync_finish
    - mdbox_map_atomic_begin
    - mdbox_map_atomic_finish
    - mdbox_storage_rebuild
    - mdbox_map_atomic_set_success
    - mail_index_get_header
    - mdbox_sync
    - mailbox_set_critical
    - mdbox_sync_begin
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mdbox_sync(struct mdbox_mailbox *mbox, enum mdbox_sync_flags flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:375,1
    - Dst: mail_index_reset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:379,1
    - Dst: mdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:380,1
    - Dst: index_mailbox_want_full_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:382,1
    - Dst: mdbox_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:386,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c:389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 372
    functionDepth: 14
    functionLinenumber: 372
    functionLinenumberEnd: 390
    functionName: mdbox_storage_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-sync.c
    functionUses: 0
    functionsReached:
    - index_mailbox_sync_init
    - index_mailbox_want_full_sync
    - mdbox_set_mailbox_corrupted
    - mdbox_sync
    - MDBOX_MAILBOX
    - mail_index_reset_fscked
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      mdbox_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:73,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:75,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:78,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:79,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:81,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - storage
    - atomic
    argTypes:
    - struct mdbox_storage*
    - struct mdbox_map_atomic_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 86
    functionName: mdbox_storage_rebuild_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - hash_table_create
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct mdbox_storage_rebuild_context
    signature: "struct mdbox_storage_rebuild_context *\nmdbox_storage_rebuild_init(struct
      mdbox_storage *storage,\n\t\t\t   struct mdbox_map_atomic_context *atomic)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:91,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:95,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:96,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:97,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:98,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_storage_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 100
    functionName: mdbox_storage_rebuild_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - i_free
    - pool_unref
    - i_assert
    - array_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void mdbox_storage_rebuild_deinit(struct mdbox_storage_rebuild_context
      *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct mdbox_rebuild_msg**
    - struct mdbox_rebuild_msg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 121
    functionName: mdbox_rebuild_msg_offset_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mdbox_rebuild_msg_offset_cmp(struct mdbox_rebuild_msg *const *m1,\n\t\t\t
      \    struct mdbox_rebuild_msg *const *m2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct mdbox_rebuild_msg**
    - struct mdbox_rebuild_msg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 131
    functionName: mdbox_rebuild_msg_uid_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mdbox_rebuild_msg_uid_cmp(struct mdbox_rebuild_msg *const *m1,\n\t\t\t\t
      \    struct mdbox_rebuild_msg *const *m2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:136,1
    - Dst: dbox_file_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - file
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: rebuild_scan_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - dbox_file_metadata_get
    linkageType: ''
    returnType: void
    signature: "void rebuild_scan_metadata(struct mdbox_storage_rebuild_context *ctx,\n\t\t\t\t
      \ struct dbox_file *file)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_seek_rewind
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:153,1
    - Dst: dbox_file_seek_next
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:155,1
    - Dst: dbox_file_metadata_read
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:157,1
    - Dst: dbox_file_fix
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:170,1
    - Dst: dbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:179,1
    - Dst: dbox_file_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:187,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:189,1
    - Dst: rebuild_scan_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:194,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:196,1
    - Dst: dbox_file_get_plaintext_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:200,1
    - Dst: mail_generate_guid_128_hash
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:202,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:202,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:203,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:206,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:208,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:221,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 61
    argCount: 3
    argNames:
    - ctx
    - file
    - file_id
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - struct dbox_file*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 142
    functionDepth: 8
    functionLinenumber: 142
    functionLinenumberEnd: 237
    functionName: rebuild_file_mails
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - dbox_file_seek_next
    - hash_table_lookup
    - p_new
    - array_push_back
    - dbox_file_metadata_get
    - dbox_file_seek_rewind
    - e_error
    - rebuild_scan_metadata
    - mail_generate_guid_128_hash
    - dbox_file_fix
    - dbox_file_set_corrupted
    - guid_128_is_empty
    - dbox_file_get_plaintext_size
    - hash_table_insert
    - dbox_file_metadata_read
    - i_assert
    - dbox_file_seek
    linkageType: ''
    returnType: int
    signature: "int rebuild_file_mails(struct mdbox_storage_rebuild_context *ctx,\n\t\t\t
      \     struct dbox_file *file, uint32_t file_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:246,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:248,1
    - Dst: link
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:252,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:253,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:254,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - dir
    - fname_p
    - file_id_r
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - char*
    - char**
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 262
    functionName: rebuild_rename_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - strrchr
    - t_strdup_printf
    - i_unlink
    - e_error
    - link
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int rebuild_rename_file(struct mdbox_storage_rebuild_context *ctx,\n\t\t
      \   const char *dir, const char **fname_p, uint32_t *file_id_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:274,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:275,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:278,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:279,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:280,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:281,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:287,1
    - Dst: rebuild_rename_file
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:295,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:298,1
    - Dst: mdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:300,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:301,1
    - Dst: rebuild_file_mails
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:302,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:304,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:305,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - dir
    - fname
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 264
    functionDepth: 9
    functionLinenumber: 264
    functionLinenumberEnd: 307
    functionName: rebuild_add_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - strcmp
    - seq_range_array_add
    - seq_range_exists
    - mdbox_file_init
    - strrchr
    - rebuild_file_mails
    - dbox_file_open
    - strlen
    - str_to_uint32
    - dbox_file_unref
    - e_error
    - e_warning
    - rebuild_rename_file
    linkageType: ''
    returnType: int
    signature: "int rebuild_add_file(struct mdbox_storage_rebuild_context *ctx,\n\t\t\t
      \   const char *dir, const char *fname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:318,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:319,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:329,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - next_uid
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 335
    functionName: rebuild_add_missing_map_uids
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_append
    - mail_index_update_ext
    - array_get_modifiable
    linkageType: ''
    returnType: void
    signature: "void rebuild_add_missing_map_uids(struct mdbox_storage_rebuild_context
      *ctx,\n\t\t\t     uint32_t next_uid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:346,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:350,1
    - Dst: mdbox_map_view_lookup_rec
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:352,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:358,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:367,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:372,1
    - Dst: rebuild_add_missing_map_uids
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:380,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:384,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_storage_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 337
    functionDepth: 3
    functionLinenumber: 337
    functionLinenumberEnd: 385
    functionName: rebuild_apply_map
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - mdbox_map_view_lookup_rec
    - rebuild_add_missing_map_uids
    - mail_index_get_header
    - array_bsearch
    - array_sort
    - i_assert
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void rebuild_apply_map(struct mdbox_storage_rebuild_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - map_uid
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 398
    functionName: rebuild_lookup_map_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - array_bsearch
    linkageType: ''
    returnType: struct mdbox_rebuild_msg
    signature: "struct mdbox_rebuild_msg *\nrebuild_lookup_map_uid(struct mdbox_storage_rebuild_context
      *ctx,\n\t\t       uint32_t map_uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - recp
    - map_uid
    argTypes:
    - struct mdbox_rebuild_msg**
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 412
    functionName: guid_hash_have_map_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool guid_hash_have_map_uid(struct mdbox_rebuild_msg **recp, uint32_t
      map_uid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:431,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:433,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:436,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:439,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:443,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:450,1
    - Dst: rebuild_lookup_map_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:456,1
    - Dst: guid_hash_have_map_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:458,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:472,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:475,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:476,1
    - Dst: index_rebuild_index_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:477,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:481,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:483,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 5
    argNames:
    - ctx
    - rebuild_ctx
    - mbox
    - view
    - trans
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - struct index_rebuild_context*
    - struct mdbox_mailbox*
    - struct mail_index_view*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 414
    functionDepth: 6
    functionLinenumber: 414
    functionLinenumberEnd: 486
    functionName: rebuild_mailbox_multi
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - rebuild_lookup_map_uid
    - i_assert
    - mail_index_append
    - mail_index_lookup_uid
    - index_rebuild_index_metadata
    - guid_hash_have_map_uid
    - mail_index_get_header
    - mail_index_lookup_ext
    - mail_index_update_ext
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void rebuild_mailbox_multi(struct mdbox_storage_rebuild_context *ctx,\n\t\t
      \     struct index_rebuild_context *rebuild_ctx,\n\t\t      struct mdbox_mailbox
      *mbox,\n\t\t      struct mail_index_view *view,\n\t\t      struct mail_index_transaction
      *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:496,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:497,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:499,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - view
    - hdr_ext_id
    - hdr_r
    - need_resize_r
    argTypes:
    - struct mail_index_view*
    - uint32_t
    - struct mdbox_index_header*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 501
    functionName: mdbox_rebuild_get_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_get_header_ext
    - I_MIN
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void mdbox_rebuild_get_header(struct mail_index_view *view, uint32_t
      hdr_ext_id,\n\t\t\t struct mdbox_index_header *hdr_r, bool *need_resize_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_rebuild_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:510,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:513,1
    - Dst: mdbox_rebuild_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:516,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:522,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:523,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:524,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:527,1
    - Dst: mdbox_map_get_uid_validity
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:532,1
    - Dst: mail_index_ext_resize_hdr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:541,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:544,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - rebuild_ctx
    - mbox
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - struct index_rebuild_context*
    - struct mdbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 503
    functionDepth: 4
    functionLinenumber: 503
    functionLinenumberEnd: 546
    functionName: mdbox_header_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - mail_index_ext_resize_hdr
    - guid_128_generate
    - mail_index_update_header_ext
    - mdbox_rebuild_get_header
    - mdbox_map_get_uid_validity
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: "void mdbox_header_update(struct mdbox_storage_rebuild_context *ctx,\n\t\t\t\tstruct
      index_rebuild_context *rebuild_ctx,\n\t\t\t\tstruct mdbox_mailbox *mbox)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:561,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:565,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:568,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:569,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:570,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:571,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:572,1
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:578,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:580,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:583,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:584,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:585,1
    - Dst: index_index_rebuild_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:589,1
    - Dst: mdbox_header_update
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:590,1
    - Dst: rebuild_mailbox_multi
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:591,1
    - Dst: index_index_rebuild_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:592,1
    - Dst: mail_index_unset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:593,1
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:595,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:596,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:597,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:601,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - ns
    - vname
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 548
    functionDepth: 16
    functionLinenumber: 548
    functionLinenumberEnd: 603
    functionName: rebuild_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mail_index_unset_fscked
    - mailbox_free
    - mailbox_open
    - mailbox_get_last_internal_error
    - index_index_rebuild_init
    - mail_index_sync_commit
    - mail_index_sync_set_reason
    - mailbox_set_index_error
    - index_index_rebuild_deinit
    - mail_index_sync_begin
    - e_error
    - rebuild_mailbox_multi
    - MDBOX_MAILBOX
    - mailbox_alloc
    - mdbox_header_update
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int rebuild_mailbox(struct mdbox_storage_rebuild_context *ctx,\n\t\tstruct
      mail_namespace *ns, const char *vname)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:617,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:620,1
    - Dst: rebuild_mailbox
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:624,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - ns
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 605
    functionDepth: 17
    functionLinenumber: 605
    functionLinenumberEnd: 631
    functionName: rebuild_namespace_mailboxes
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - mailbox_list_iter_next
    - mailbox_list_iter_init
    - rebuild_mailbox
    linkageType: ''
    returnType: int
    signature: "int rebuild_namespace_mailboxes(struct mdbox_storage_rebuild_context
      *ctx,\n\t\t\t    struct mail_namespace *ns)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rebuild_namespace_mailboxes
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:644,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:649,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_storage_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 637
    functionDepth: 18
    functionLinenumber: 637
    functionLinenumberEnd: 651
    functionName: rebuild_mailboxes
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - i_panic
    - rebuild_namespace_mailboxes
    linkageType: ''
    returnType: int
    signature: int rebuild_mailboxes(struct mdbox_storage_rebuild_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:655,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:656,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:658,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct rebuild_msg_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 653
    functionDepth: 5
    functionLinenumber: 653
    functionLinenumberEnd: 661
    functionName: rebuild_msg_mailbox_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_free
    - mail_index_sync_set_reason
    - mail_index_sync_commit
    linkageType: ''
    returnType: int
    signature: int rebuild_msg_mailbox_commit(struct rebuild_msg_mailbox *msg)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:680,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:681,1
    - Dst: dbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:683,1
    - Dst: dbox_file_metadata_read
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:684,1
    - Dst: dbox_file_metadata_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:685,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:688,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:689,1
    - Dst: rebuild_scan_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:691,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:693,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:709,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:712,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:715,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:716,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:719,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:724,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:725,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:729,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:733,1
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:741,1
    - Dst: rebuild_msg_mailbox_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:745,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:749,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:754,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:755,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:756,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:760,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:765,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:768,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:769,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:771,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:774,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 70
    argCount: 2
    argNames:
    - ctx
    - msg
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - struct mdbox_rebuild_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 663
    functionDepth: 9
    functionLinenumber: 663
    functionLinenumberEnd: 777
    functionName: rebuild_restore_msg
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - dbox_file_open
    - rebuild_scan_metadata
    - mailbox_alloc
    - mailbox_create
    - t_strdup
    - mail_index_append
    - mailbox_free
    - MDBOX_MAILBOX
    - i_zero
    - mdbox_file_init
    - mail_index_get_header
    - mailbox_set_index_error
    - mailbox_list_get_vname
    - i_assert
    - dbox_file_seek
    - strcmp
    - mailbox_get_last_mail_error
    - mailbox_open
    - dbox_file_metadata_get
    - dbox_file_unref
    - mail_index_sync_begin
    - mail_index_update_ext
    - rebuild_msg_mailbox_commit
    - dbox_file_metadata_read
    linkageType: ''
    returnType: int
    signature: "int rebuild_restore_msg(struct mdbox_storage_rebuild_context *ctx,\n\t\t\t
      \      struct mdbox_rebuild_msg *msg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:787,1
    - Dst: rebuild_restore_msg
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:799,1
    - Dst: rebuild_msg_mailbox_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:803,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_storage_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 779
    functionDepth: 10
    functionLinenumber: 779
    functionLinenumberEnd: 807
    functionName: rebuild_handle_zero_refs
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - rebuild_msg_mailbox_commit
    - rebuild_restore_msg
    linkageType: ''
    returnType: int
    signature: int rebuild_handle_zero_refs(struct mdbox_storage_rebuild_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:819,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:820,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:822,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:825,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:829,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:834,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:843,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_storage_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 809
    functionDepth: 2
    functionLinenumber: 809
    functionLinenumberEnd: 847
    functionName: rebuild_update_refcounts
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_uid
    - array_get_modifiable
    - mail_index_get_header
    - mail_index_lookup_ext
    - mail_index_update_ext
    - i_assert
    linkageType: ''
    returnType: void
    signature: void rebuild_update_refcounts(struct mdbox_storage_rebuild_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:853,1
    - Dst: rebuild_handle_zero_refs
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:855,1
    - Dst: rebuild_update_refcounts
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:857,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:864,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_storage_rebuild_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 849
    functionDepth: 11
    functionLinenumber: 849
    functionLinenumberEnd: 868
    functionName: rebuild_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - rebuild_update_refcounts
    - mail_index_update_header_ext
    - i_assert
    - rebuild_handle_zero_refs
    linkageType: ''
    returnType: int
    signature: int rebuild_finish(struct mdbox_storage_rebuild_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:878,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:883,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:887,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:888,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:889,1
    - Dst: rebuild_add_file
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:890,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - storage_dir
    - alt
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 870
    functionDepth: 10
    functionLinenumber: 870
    functionLinenumberEnd: 892
    functionName: mdbox_storage_rebuild_scan_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - readdir
    - opendir
    - strlen
    - rebuild_add_file
    - strncmp
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: "int mdbox_storage_rebuild_scan_dir(struct mdbox_storage_rebuild_context
      *ctx,\n\t\t\t       const char *storage_dir, bool alt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:908,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:909,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:910,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 906
    functionDepth: 2
    functionLinenumber: 906
    functionLinenumberEnd: 914
    functionName: mdbox_mailbox_is_fscked
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - mail_index_view_open
    - mail_index_refresh
    - mail_index_view_close
    - mail_index_get_header
    linkageType: ''
    returnType: bool
    signature: bool mdbox_mailbox_is_fscked(struct mailbox *box)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open_or_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:925,1
    - Dst: mdbox_map_atomic_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:930,1
    - Dst: mdbox_map_get_rebuild_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:934,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:940,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:941,1
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:945,1
    - Dst: mdbox_map_is_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:946,1
    - Dst: mdbox_mailbox_is_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:949,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:950,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:958,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:961,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:963,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:964,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - fsckd_box
    - reason
    - reason_string_r
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - struct mailbox*
    - enum mdbox_rebuild_reason
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 916
    functionDepth: 3
    functionLinenumber: 916
    functionLinenumberEnd: 968
    functionName: mdbox_storage_rebuild_scan_prepare
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - mdbox_map_is_fscked
    - i_zero
    - memcpy
    - mdbox_map_open_or_create
    - mdbox_map_refresh
    - I_MIN
    - t_strdup_printf
    - mail_index_get_header_ext
    - mdbox_mailbox_is_fscked
    - mdbox_map_get_rebuild_count
    - i_assert
    - mdbox_map_atomic_lock
    linkageType: ''
    returnType: int
    signature: "int mdbox_storage_rebuild_scan_prepare(struct mdbox_storage_rebuild_context
      *ctx,\n\t\t\t\t   struct mailbox *fsckd_box,\n\t\t\t\t   enum mdbox_rebuild_reason
      reason,\n\t\t\t\t   const char **reason_string_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:974,1
    - Dst: mail_index_fsck
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:977,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:978,1
    - Dst: mdbox_storage_rebuild_scan_dir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:983,1
    - Dst: mdbox_storage_rebuild_scan_dir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:987,1
    - Dst: rebuild_apply_map
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:992,1
    - Dst: rebuild_mailboxes
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:993,1
    - Dst: rebuild_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:994,1
    - Dst: mdbox_map_atomic_set_failed
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:995,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - reason
    argTypes:
    - struct mdbox_storage_rebuild_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 970
    functionDepth: 19
    functionLinenumber: 970
    functionLinenumberEnd: 999
    functionName: mdbox_storage_rebuild_scan
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - mdbox_map_atomic_set_failed
    - mail_index_fsck
    - mail_storage_set_index_error
    - e_warning
    - mdbox_storage_rebuild_scan_dir
    - rebuild_finish
    - rebuild_mailboxes
    - rebuild_apply_map
    linkageType: ''
    returnType: int
    signature: "int mdbox_storage_rebuild_scan(struct mdbox_storage_rebuild_context
      *ctx,\n\t\t\t\t      const char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dbox_verify_alt_storage
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1011,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1012,1
    - Dst: mdbox_map_atomic_set_failed
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1015,1
    - Dst: mdbox_storage_rebuild_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1019,1
    - Dst: mdbox_storage_rebuild_scan_prepare
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1020,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1023,1
    - Dst: mdbox_storage_rebuild_scan
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1024,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1025,1
    - Dst: mdbox_storage_rebuild_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1027,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1030,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - storage
    - atomic
    - fsckd_box
    - rebuild_reason
    argTypes:
    - struct mdbox_storage*
    - struct mdbox_map_atomic_context*
    - struct mailbox*
    - enum mdbox_rebuild_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1001
    functionDepth: 20
    functionLinenumber: 1001
    functionLinenumberEnd: 1034
    functionName: mdbox_storage_rebuild_in_context
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 0
    functionsReached:
    - mdbox_storage_rebuild_scan_prepare
    - mdbox_storage_rebuild_init
    - mdbox_map_atomic_set_failed
    - mdbox_storage_rebuild_deinit
    - dbox_verify_alt_storage
    - event_reason_begin
    - event_reason_end
    - mdbox_storage_rebuild_scan
    - mail_storage_set_critical
    - i_free
    linkageType: ''
    returnType: int
    signature: "int mdbox_storage_rebuild_in_context(struct mdbox_storage *storage,\n\t\t\t\t
      struct mdbox_map_atomic_context *atomic,\n\t\t\t\t struct mailbox *fsckd_box,\n\t\t\t\t
      enum mdbox_rebuild_reason rebuild_reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_atomic_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1043,1
    - Dst: mdbox_storage_rebuild_in_context
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1044,1
    - Dst: mdbox_map_atomic_set_success
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1046,1
    - Dst: mdbox_map_atomic_unset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1047,1
    - Dst: mail_index_reset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1048,1
    - Dst: mdbox_map_atomic_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c:1049,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - storage
    - fsckd_box
    - reason
    argTypes:
    - struct mdbox_storage*
    - struct mailbox*
    - enum mdbox_rebuild_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1036
    functionDepth: 21
    functionLinenumber: 1036
    functionLinenumberEnd: 1052
    functionName: mdbox_storage_rebuild
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
    functionUses: 1
    functionsReached:
    - mdbox_map_atomic_begin
    - mdbox_map_atomic_set_success
    - mdbox_map_atomic_finish
    - mdbox_storage_rebuild_in_context
    - mdbox_map_atomic_unset_fscked
    - mail_index_reset_fscked
    linkageType: ''
    returnType: int
    signature: "int mdbox_storage_rebuild(struct mdbox_storage *storage,\n\t\t\t  struct
      mailbox *fsckd_box,\n\t\t\t  enum mdbox_rebuild_reason reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct mdbox_map_file_msg*
    - struct mdbox_map_file_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 62
    functionName: mdbox_map_file_msg_offset_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_file_msg_offset_cmp(const struct mdbox_map_file_msg
      *m1,\n\t\t\t\t\t const struct mdbox_map_file_msg *m2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:75,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:77,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:80,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:82,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:86,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:87,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:89,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - file
    - meta_hdr_r
    argTypes:
    - struct dbox_file*
    - struct dbox_metadata_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 64
    functionDepth: 4
    functionLinenumber: 64
    functionLinenumberEnd: 94
    functionName: mdbox_file_read_metadata_hdr
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_storage_set_critical
    - i_stream_skip
    - i_stream_get_error
    - dbox_file_set_corrupted
    - memcmp
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: "int mdbox_file_read_metadata_hdr(struct dbox_file *file,\n\t\t\t     struct
      dbox_metadata_header *meta_hdr_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_file_read_metadata_hdr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:104,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:107,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:108,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:110,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:111,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:116,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:117,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:119,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:122,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:125,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - file
    - output
    argTypes:
    - struct dbox_file*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 96
    functionDepth: 5
    functionLinenumber: 96
    functionLinenumberEnd: 127
    functionName: mdbox_file_metadata_copy
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - mdbox_file_read_metadata_hdr
    - i_stream_get_max_buffer_size
    - i_stream_read_next_line
    - o_stream_nsend
    - dbox_file_set_corrupted
    - o_stream_nsend_str
    - i_stream_set_max_buffer_size
    linkageType: ''
    returnType: int
    signature: int mdbox_file_metadata_copy(struct dbox_file *file, struct ostream
      *output)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_file_read_metadata_hdr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:140,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:143,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:145,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:146,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:152,1
    - Dst: index_attachment_parse_extrefs
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:152,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:154,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:159,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:162,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - file
    - ext_refs_pool
    - extrefs
    argTypes:
    - struct dbox_file*
    - pool_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 129
    functionDepth: 5
    functionLinenumber: 129
    functionLinenumberEnd: 166
    functionName: mdbox_metadata_get_extrefs
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - index_attachment_parse_extrefs
    - mdbox_file_read_metadata_hdr
    - i_stream_get_max_buffer_size
    - if
    - i_stream_read_next_line
    - e_warning
    - dbox_file_set_corrupted
    - i_stream_set_max_buffer_size
    linkageType: ''
    returnType: int
    signature: "int mdbox_metadata_get_extrefs(struct dbox_file *file, pool_t ext_refs_pool,\n\t\t\t
      \  ARRAY_TYPE(mail_attachment_extref) *extrefs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:175,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:181,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:181,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - file
    - map_uid
    argTypes:
    - struct mdbox_purge_context*
    - struct dbox_file*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 184
    functionName: mdbox_purge_want_altpath
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST_TO
    - dbox_file_is_in_alt
    - hash_table_lookup
    - POINTER_CAST
    linkageType: ''
    returnType: bool
    signature: "bool mdbox_purge_want_altpath(struct mdbox_purge_context *ctx,\n\t\t\t
      struct dbox_file *file, uint32_t map_uid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_append_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:198,1
    - Dst: mdbox_purge_want_altpath
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:200,1
    - Dst: mdbox_map_append_next
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:203,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:207,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:209,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:210,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:211,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:212,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:215,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:219,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:219,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:221,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:226,1
    - Dst: mdbox_file_metadata_copy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:230,1
    - Dst: mdbox_map_append_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:233,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - file
    - msg
    argTypes:
    - struct mdbox_purge_context*
    - struct dbox_file*
    - struct mdbox_map_file_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 186
    functionDepth: 6
    functionLinenumber: 186
    functionLinenumberEnd: 236
    functionName: mdbox_purge_save_msg
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - mdbox_file_metadata_copy
    - mdbox_map_append_finish
    - o_stream_get_error
    - i_stream_create_limit
    - o_stream_nsend_istream
    - i_stream_read_eof
    - mail_storage_set_critical
    - mdbox_map_append_begin
    - mdbox_map_append_next
    - mdbox_purge_want_altpath
    - dbox_file_set_corrupted
    - i_stream_unref
    - o_stream_flush
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mdbox_purge_save_msg(struct mdbox_purge_context *ctx, struct dbox_file
      *file,\n\t\t     const struct mdbox_map_file_msg *msg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_atomic_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:249,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:252,1
    - Dst: mdbox_map_lookup_full
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:257,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:262,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - msgs_arr
    argTypes:
    - struct mdbox_purge_context*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 271
    functionName: mdbox_file_purge_check_refcounts
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - mdbox_map_set_corrupted
    - mdbox_map_lookup_full
    - array_get
    - mdbox_map_atomic_lock
    linkageType: ''
    returnType: int
    signature: "int mdbox_file_purge_check_refcounts(struct mdbox_purge_context *ctx,\n\t\t\t\t
      const ARRAY_TYPE(mdbox_map_file_msg) *msgs_arr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_attachment_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - extrefs_arr
    argTypes:
    - struct mdbox_purge_context*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 273
    functionDepth: 6
    functionLinenumber: 273
    functionLinenumberEnd: 288
    functionName: mdbox_purge_attachments
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - index_attachment_delete
    linkageType: ''
    returnType: int
    signature: "int mdbox_purge_attachments(struct mdbox_purge_context *ctx,\n\t\t\tconst
      ARRAY_TYPE(mail_attachment_extref) *extrefs_arr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_attachment_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 281
    functionDepth: 6
    functionLinenumber: 281
    functionLinenumberEnd: 286
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 89
    functionsReached:
    - index_attachment_delete
    linkageType: ''
    returnType: void
    signature: void array_foreach(extrefs_arr, extref)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:296,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:298,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:300,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:306,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:307,1
    - Dst: dbox_file_try_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:309,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:314,1
    - Dst: dbox_file_unlock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:315,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:319,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:326,1
    - Dst: mdbox_map_get_file_msgs
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:327,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:329,1
    - Dst: dbox_file_unlock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:330,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:334,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:336,1
    - Dst: mdbox_map_atomic_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:337,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:338,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:339,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:340,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:340,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:341,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:341,1
    - Dst: dbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:344,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:349,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:359,1
    - Dst: mdbox_metadata_get_extrefs
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:363,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:367,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:371,1
    - Dst: mdbox_purge_save_msg
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:372,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:375,1
    - Dst: dbox_file_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:381,1
    - Dst: mdbox_map_append_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:388,1
    - Dst: mdbox_file_purge_check_refcounts
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:401,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:403,1
    - Dst: mdbox_map_append_move
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:412,1
    - Dst: mdbox_map_append_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:414,1
    - Dst: mdbox_map_append_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:420,1
    - Dst: mdbox_map_atomic_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:421,1
    - Dst: dbox_file_unlink
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:426,1
    - Dst: mdbox_map_remove_file_id
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:427,1
    - Dst: dbox_file_unlock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:430,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:432,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:433,1
    - Dst: mdbox_purge_attachments
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:435,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:436,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:437,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 93
    argCount: 3
    argNames:
    - ctx
    - file
    - file_id
    argTypes:
    - struct mdbox_purge_context*
    - struct dbox_file*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 290
    functionDepth: 7
    functionLinenumber: 290
    functionLinenumberEnd: 439
    functionName: mdbox_file_purge
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mdbox_map_append_commit
    - mdbox_map_append_free
    - mdbox_map_append_move
    - pool_unref
    - stat
    - dbox_file_set_corrupted
    - i_stream_seek
    - dbox_file_unlock
    - mdbox_purge_attachments
    - I_MIN
    - array_free
    - dbox_file_try_lock
    - mdbox_map_atomic_begin
    - array_get
    - mdbox_file_purge_check_refcounts
    - mdbox_metadata_get_extrefs
    - mdbox_map_append_flush
    - mdbox_map_get_file_msgs
    - dbox_file_unlink
    - i_assert
    - mail_storage_set_critical
    - dbox_file_seek
    - seq_range_array_add
    - pool_alloconly_create
    - array_push_back
    - mdbox_map_atomic_finish
    - ARRAY_TYPE
    - array_sort
    - mdbox_map_remove_file_id
    - mdbox_purge_save_msg
    linkageType: ''
    returnType: int
    signature: "int mdbox_file_purge(struct mdbox_purge_context *ctx, struct dbox_file
      *file,\n\t\t uint32_t file_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:443,1
    - Dst: mdbox_mail_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:455,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:461,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:462,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mail
    - move_to_alt
    argTypes:
    - struct mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 464
    functionName: mdbox_purge_alt_flag_change
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_push_back
    - mdbox_mail_lookup
    - MDBOX_MAILBOX
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void mdbox_purge_alt_flag_change(struct mail *mail, bool move_to_alt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:472,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:473,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:477,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:478,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mdbox_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 481
    functionName: mdbox_purge_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - p_new
    - hash_table_create_direct
    linkageType: ''
    returnType: struct mdbox_purge_context
    signature: 'struct mdbox_purge_context *

      mdbox_purge_alloc(struct mdbox_storage *storage)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:489,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:490,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:491,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mdbox_purge_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 493
    functionName: mdbox_purge_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - array_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void mdbox_purge_free(struct mdbox_purge_context **_ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:507,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:508,1
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:514,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:520,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:525,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:526,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:527,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:528,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:530,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:531,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:533,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:536,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:537,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:538,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:540,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:542,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:546,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:550,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:551,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_purge_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 495
    functionDepth: 4
    functionLinenumber: 495
    functionLinenumberEnd: 556
    functionName: mdbox_purge_get_primary_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - readdir
    - t_str_new
    - opendir
    - str_append_c
    - str_len
    - str_begins
    - str_to_uint32
    - closedir
    - array_count
    - str_truncate
    - array_front
    - str_append
    - array_is_created
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: int mdbox_purge_get_primary_files(struct mdbox_purge_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - u1
    - u2
    argTypes:
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 565
    functionName: uint32_t_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int uint32_t_cmp(const uint32_t *u1, const uint32_t *u2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:580,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:581,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:582,1
    - Dst: mdbox_map_lookup_full
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:591,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:602,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:605,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:606,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:607,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:608,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:616,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:617,1
    - Dst: mdbox_map_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:628,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:633,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:639,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:639,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:640,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:641,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:643,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_purge_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 645
    functionName: mdbox_altmove_add_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - hash_table_update
    - seq_range_exists
    - POINTER_CAST
    - hash_table_count
    - array_get
    - hash_table_insert
    - array_sort
    - mdbox_map_lookup_full
    - array_is_created
    - mdbox_map_lookup
    linkageType: ''
    returnType: int
    signature: int mdbox_altmove_add_files(struct mdbox_purge_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_purge_alloc
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:658,1
    - Dst: mdbox_map_get_zero_ref_files
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:659,1
    - Dst: mdbox_purge_get_primary_files
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:661,1
    - Dst: mdbox_altmove_add_files
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:665,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:670,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:672,1
    - Dst: mdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:673,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:674,1
    - Dst: mdbox_file_purge
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:675,1
    - Dst: mdbox_map_remove_file_id
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:678,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c:681,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - _storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 647
    functionDepth: 8
    functionLinenumber: 647
    functionLinenumberEnd: 682
    functionName: mdbox_purge
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - mdbox_file_init
    - mdbox_purge_get_primary_files
    - seq_range_array_iter_init
    - dbox_file_open
    - mdbox_purge_alloc
    - mdbox_map_get_zero_ref_files
    - dbox_file_unref
    - mdbox_altmove_add_files
    - mdbox_map_remove_file_id
    - mdbox_file_purge
    linkageType: ''
    returnType: int
    signature: int mdbox_purge(struct mail_storage *_storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:30,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 36
    functionName: mdbox_deleted_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *mdbox_deleted_storage_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:48,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:49,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:56,1
    - Dst: MDBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 38
    functionDepth: 6
    functionLinenumber: 38
    functionLinenumberEnd: 60
    functionName: mdbox_deleted_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - index_storage_mailbox_alloc
    - p_new
    - MDBOX_STORAGE
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nmdbox_deleted_mailbox_alloc(struct mail_storage
      *storage,\n\t\t\t    struct mailbox_list *list,\n\t\t\t    const char *vname,
      enum mailbox_flags flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:67,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:76,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:80,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:83,1
    - Dst: mdbox_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:87,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:91,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:92,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - box
    - update
    - trans
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 97
    functionName: mdbox_deleted_mailbox_create_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_update_header
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mdbox_update_header
    - mailbox_set_index_error
    - MDBOX_MAILBOX
    linkageType: ''
    returnType: int
    signature: "int mdbox_deleted_mailbox_create_indexes(struct mailbox *box,\n\t\t\t\t
      \    const struct mailbox_update *update,\n\t\t\t\t     struct mail_index_transaction
      *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: mdbox_get_attachment_path_suffix
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      mdbox_get_attachment_path_suffix(struct dbox_file *file ATTR_UNUSED)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:110,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 105
    functionDepth: 12
    functionLinenumber: 105
    functionLinenumberEnd: 116
    functionName: mdbox_deleted_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - guid_128_generate
    - index_mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int mdbox_deleted_mailbox_get_metadata(struct mailbox *box,\n\t\t\t\t
      \  enum mailbox_metadata_items items,\n\t\t\t\t   struct mailbox_metadata *metadata_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: mdbox_deleted_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      mdbox_deleted_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: mdbox_deleted_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int mdbox_deleted_save_begin(struct mail_save_context *ctx,\n\t\t\t
      struct istream *input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 141
    functionName: mdbox_deleted_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mdbox_deleted_save_continue(struct mail_save_context *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 143
    functionDepth: 16
    functionLinenumber: 143
    functionLinenumberEnd: 147
    functionName: mdbox_deleted_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - index_save_context_free
    linkageType: ''
    returnType: int
    signature: int mdbox_deleted_save_finish(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 149
    functionDepth: 16
    functionLinenumber: 149
    functionLinenumberEnd: 153
    functionName: mdbox_deleted_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - index_save_context_free
    linkageType: ''
    returnType: void
    signature: void mdbox_deleted_save_cancel(struct mail_save_context *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:180,1
    - Dst: mdbox_deleted_mailbox_create_indexes
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:183,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:186,1
    - Dst: index_storage_get_sync_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:189,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:190,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:192,1
    - Dst: mdbox_map_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:196,1
    - Dst: mdbox_map_lookup_seq_full
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:198,1
    - Dst: mdbox_map_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:204,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:206,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:207,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:213,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:215,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:216,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - mbox
    - ATTR_UNUSED
    argTypes:
    - struct mdbox_mailbox*
    - enum mdbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 155
    functionDepth: 5
    functionLinenumber: 155
    functionLinenumberEnd: 223
    functionName: mdbox_deleted_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_append
    - mail_index_sync_commit
    - index_storage_get_sync_flags
    - mail_index_sync_rollback
    - mdbox_map_open
    - mailbox_set_index_error
    - mail_index_sync_begin
    - mdbox_map_lookup_seq_full
    - mail_index_update_ext
    - mdbox_deleted_mailbox_create_indexes
    - mdbox_map_lookup_uid
    - mdbox_map_get_messages_count
    linkageType: ''
    returnType: int
    signature: "int mdbox_deleted_sync(struct mdbox_mailbox *mbox,\n\t\t\t      enum
      mdbox_sync_flags flags ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:229,1
    - Dst: index_mailbox_want_full_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:233,1
    - Dst: mdbox_deleted_sync
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:235,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 225
    functionDepth: 14
    functionLinenumber: 225
    functionLinenumberEnd: 238
    functionName: mdbox_deleted_storage_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c
    functionUses: 0
    functionsReached:
    - mdbox_deleted_sync
    - index_mailbox_sync_init
    - MDBOX_MAILBOX
    - index_mailbox_want_full_sync
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: "struct mailbox_sync_context *\nmdbox_deleted_storage_sync_init(struct
      mailbox *box,\n\t\t\t\tenum mailbox_sync_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: MDBOX_DBOX_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MDBOX_DBOX_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: MDBOX_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MDBOX_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: MDBOX_MAILBOX
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MDBOX_MAILBOX(s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:25,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:28,1
    - Dst: mdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:29,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:29,1
    - Dst: mdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:35,1
    - Dst: mdbox_map_open_or_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:39,1
    - Dst: mdbox_map_get_uid_validity
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:42,1
    - Dst: mdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:44,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:44,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - mbox
    - view
    - seq
    - map_uid_r
    argTypes:
    - struct mdbox_mailbox*
    - struct mail_index_view*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 51
    functionName: mdbox_mail_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c
    functionUses: 2
    functionsReached:
    - mdbox_map_open_or_create
    - mail_index_lookup_uid
    - mdbox_read_header
    - t_strdup_printf
    - mail_index_lookup_ext
    - mdbox_set_mailbox_corrupted
    - mdbox_map_get_uid_validity
    linkageType: ''
    returnType: int
    signature: "int mdbox_mail_lookup(struct mdbox_mailbox *mbox, struct mail_index_view
      *view,\n\t\t      uint32_t seq, uint32_t *map_uid_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:56,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:58,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:59,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:60,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:64,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - mail
    - map_uid
    argTypes:
    - struct dbox_mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 68
    functionName: dbox_mail_set_expunged
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c
    functionUses: 1
    functionsReached:
    - mail_set_expunged
    - mdbox_map_set_corrupted
    - mail_index_is_expunged
    - MDBOX_MAILBOX
    - mailbox_get_vname
    - mail_index_refresh
    linkageType: ''
    returnType: void
    signature: void dbox_mail_set_expunged(struct dbox_mail *mail, uint32_t map_uid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:72,1
    - Dst: mdbox_map_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:76,1
    - Dst: dbox_mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:84,1
    - Dst: mdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mail
    - map_uid
    argTypes:
    - struct dbox_mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 70
    functionDepth: 5
    functionLinenumber: 70
    functionLinenumberEnd: 90
    functionName: dbox_mail_open_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c
    functionUses: 0
    functionsReached:
    - mdbox_map_lookup
    - MDBOX_MAILBOX
    - mdbox_file_init
    - dbox_mail_set_expunged
    linkageType: ''
    returnType: int
    signature: int dbox_mail_open_init(struct dbox_mail *mail, uint32_t map_uid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:95,1
    - Dst: mdbox_mail_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:101,1
    - Dst: dbox_mail_open_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:104,1
    - Dst: mdbox_save_file_get_file
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct dbox_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 92
    functionDepth: 6
    functionLinenumber: 92
    functionLinenumberEnd: 114
    functionName: mdbox_mail_file_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c
    functionUses: 0
    functionsReached:
    - mdbox_mail_lookup
    - MDBOX_MAILBOX
    - mdbox_save_file_get_file
    - dbox_mail_open_init
    linkageType: ''
    returnType: int
    signature: int mdbox_mail_file_set(struct dbox_mail *mail)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:120,1
    - Dst: mail_stream_access_start
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:124,1
    - Dst: mdbox_mail_file_set
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:128,1
    - Dst: dbox_file_is_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:130,1
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:132,1
    - Dst: mdbox_mail_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:141,1
    - Dst: dbox_mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:144,1
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:148,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:150,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - mail
    - offset_r
    - file_r
    argTypes:
    - struct dbox_mail*
    - uoff_t*
    - struct dbox_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 116
    functionDepth: 7
    functionLinenumber: 116
    functionLinenumberEnd: 157
    functionName: mdbox_mail_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c
    functionUses: 0
    functionsReached:
    - mdbox_mail_file_set
    - mdbox_map_refresh
    - dbox_file_open
    - mdbox_mail_lookup
    - dbox_file_unref
    - dbox_file_is_open
    - mail_stream_access_start
    - MDBOX_MAILBOX
    - dbox_mail_set_expunged
    linkageType: ''
    returnType: int
    signature: "int mdbox_mail_open(struct dbox_mail *mail, uoff_t *offset_r,\n\t\t
      \   struct dbox_file **file_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:161,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:165,1
    - Dst: dbox_mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 159
    functionDepth: 12
    functionLinenumber: 159
    functionLinenumberEnd: 175
    functionName: mdbox_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c
    functionUses: 0
    functionsReached:
    - MDBOX_MAILBOX
    - mail_index_lookup_ext
    - dbox_mail_get_save_date
    linkageType: ''
    returnType: int
    signature: int mdbox_mail_get_save_date(struct mail *mail, time_t *date_r)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_MAIL
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:181,1
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:182,1
    - Dst: mdbox_mail_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:189,1
    - Dst: mdbox_map_lookup_full
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:192,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:195,1
    - Dst: mdbox_mail_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:199,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:202,1
    - Dst: dbox_header_have_flag
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:206,1
    - Dst: dbox_header_have_flag
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:214,1
    - Dst: dbox_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:224,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 177
    functionDepth: 21
    functionLinenumber: 177
    functionLinenumberEnd: 225
    functionName: mdbox_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c
    functionUses: 0
    functionsReached:
    - mdbox_mail_lookup
    - MDBOX_MAILBOX
    - dbox_mail_get_special
    - dbox_header_have_flag
    - mdbox_map_lookup_full
    - p_strdup_printf
    - DBOX_MAIL
    linkageType: ''
    returnType: int
    signature: "int mdbox_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t       const char **value_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_purge_alt_flag_change
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:232,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:233,1
    - Dst: index_mail_update_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c:238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - mail
    - modify_type
    - flags
    argTypes:
    - struct mail*
    - enum modify_type
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 227
    functionDepth: 5
    functionLinenumber: 227
    functionLinenumberEnd: 239
    functionName: mdbox_mail_update_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_update_flags
    - ENUM_NEGATE
    - mdbox_purge_alt_flag_change
    linkageType: ''
    returnType: void
    signature: "void mdbox_mail_update_flags(struct mail *mail, enum modify_type modify_type,\n\t\t\tenum
      mail_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: MDBOX_SAVECTX
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MDBOX_SAVECTX(s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:54,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:59,1
    - Dst: mdbox_map_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:62,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:64,1
    - Dst: mdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - t
    - seq
    - offset_r
    argTypes:
    - struct mailbox_transaction_context*
    - uint32_t
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 50
    functionDepth: 5
    functionLinenumber: 50
    functionLinenumberEnd: 67
    functionName: mdbox_copy_file_get_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - mdbox_file_init
    - MDBOX_SAVECTX
    - i_unreached
    - mail_index_lookup_ext
    - mdbox_map_lookup
    linkageType: ''
    returnType: struct dbox_file
    signature: "struct dbox_file *\nmdbox_copy_file_get_file(struct mailbox_transaction_context
      *t,\n\t\t\t uint32_t seq, uoff_t *offset_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:73,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:77,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:78,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:82,1
    - Dst: mdbox_copy_file_get_file
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:86,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:90,1
    - Dst: dbox_file_append_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - t
    - seq
    - offset_r
    argTypes:
    - struct mailbox_transaction_context*
    - uint32_t
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 69
    functionDepth: 6
    functionLinenumber: 69
    functionLinenumberEnd: 97
    functionName: mdbox_save_file_get_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 1
    functionsReached:
    - dbox_file_append_flush
    - MDBOX_SAVECTX
    - array_get
    - i_assert
    - mdbox_copy_file_get_file
    linkageType: ''
    returnType: struct dbox_file
    signature: "struct dbox_file *\nmdbox_save_file_get_file(struct mailbox_transaction_context
      *t,\n\t\t\t uint32_t seq, uoff_t *offset_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:102,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:105,1
    - Dst: MDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:109,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:118,1
    - Dst: mdbox_map_atomic_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:122,1
    - Dst: mdbox_map_append_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:123,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 127
    functionName: mdbox_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - MDBOX_SAVECTX
    - mdbox_map_atomic_begin
    - mdbox_map_append_begin
    - MDBOX_MAILBOX
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      mdbox_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:131,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:136,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:141,1
    - Dst: mdbox_map_append_next
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:144,1
    - Dst: dbox_save_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:153,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - _ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 129
    functionDepth: 16
    functionLinenumber: 129
    functionLinenumberEnd: 160
    functionName: mdbox_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - array_append_space
    - MDBOX_SAVECTX
    - i_stream_get_size
    - mdbox_map_append_next
    - dbox_save_begin
    linkageType: ''
    returnType: int
    signature: int mdbox_save_begin(struct mail_save_context *_ctx, struct istream
      *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:170,1
    - Dst: dbox_save_write_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:175,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:179,1
    - Dst: dbox_msg_header_fill
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:182,1
    - Dst: o_stream_pwrite
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:183,1
    - Dst: dbox_file_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mdbox_save_context*
    - struct dbox_save_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 162
    functionDepth: 5
    functionLinenumber: 162
    functionLinenumberEnd: 191
    functionName: mdbox_save_mail_write_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - dbox_save_write_metadata
    - dbox_file_set_syscall_error
    - mail_index_update_ext
    - dbox_msg_header_fill
    - o_stream_pwrite
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mdbox_save_mail_write_metadata(struct mdbox_save_context *ctx,\n\t\t\t\t\t
      \ struct dbox_save_mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dbox_save_end
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:202,1
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:204,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:206,1
    - Dst: mdbox_save_mail_write_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:206,1
    - Dst: mdbox_map_append_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 193
    functionDepth: 17
    functionLinenumber: 193
    functionLinenumberEnd: 210
    functionName: mdbox_save_finish_write
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - mdbox_map_append_finish
    - dbox_save_end
    - if
    - mdbox_save_mail_write_metadata
    - array_back_modifiable
    linkageType: ''
    returnType: int
    signature: int mdbox_save_finish_write(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_save_finish_write
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:232,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 228
    functionDepth: 18
    functionLinenumber: 228
    functionLinenumberEnd: 235
    functionName: mdbox_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - mdbox_save_finish_write
    - index_save_context_free
    linkageType: ''
    returnType: int
    signature: int mdbox_save_finish(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:239,1
    - Dst: mdbox_save_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 237
    functionDepth: 19
    functionLinenumber: 237
    functionLinenumberEnd: 243
    functionName: mdbox_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - DBOX_SAVECTX
    - mdbox_save_finish
    linkageType: ''
    returnType: void
    signature: void mdbox_save_cancel(struct mail_save_context *_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:258,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:260,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:261,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:263,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:272,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:276,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:279,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - first_map_uid
    - last_map_uid
    argTypes:
    - struct mdbox_save_context*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 280
    functionName: mdbox_save_set_map_uids
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mdbox_update_header
    - array_get
    - mail_index_lookup_ext
    - time_to_uint32_trunc
    - mail_index_update_ext
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mdbox_save_set_map_uids(struct mdbox_save_context *ctx,\n\t\t\tuint32_t
      first_map_uid, uint32_t last_map_uid)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:284,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:290,1
    - Dst: mdbox_map_append_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:293,1
    - Dst: mdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:294,1
    - Dst: mdbox_map_atomic_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:299,1
    - Dst: mdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:300,1
    - Dst: mdbox_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:306,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:311,1
    - Dst: mdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:314,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:317,1
    - Dst: mdbox_map_append_assign_map_uids
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:323,1
    - Dst: mdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:325,1
    - Dst: dbox_save_update_header_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:330,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:334,1
    - Dst: mail_index_append_finish_uids
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:335,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:344,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:347,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:349,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:350,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:351,1
    - Dst: index_pop3_uidl_set_max_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:352,1
    - Dst: mdbox_save_set_map_uids
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:357,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:360,1
    - Dst: mdbox_map_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:361,1
    - Dst: mdbox_map_update_refcounts
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:362,1
    - Dst: mdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:364,1
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:367,1
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:369,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 282
    functionDepth: 11
    functionLinenumber: 282
    functionLinenumberEnd: 374
    functionName: mdbox_transaction_save_commit_pre
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - MDBOX_SAVECTX
    - seq_range_array_iter_init
    - array_front
    - mdbox_map_update_refcounts
    - i_unreached
    - mail_index_append_finish_uids
    - mdbox_sync_begin
    - mdbox_map_transaction_begin
    - mdbox_map_append_assign_map_uids
    - mail_index_get_header
    - mail_index_sync_set_reason
    - mdbox_map_append_flush
    - i_assert
    - mdbox_map_atomic_lock
    - dbox_save_update_header_flags
    - mdbox_transaction_save_rollback
    - mdbox_save_set_map_uids
    - index_pop3_uidl_set_max_uid
    - mailbox_set_critical
    - array_is_created
    linkageType: ''
    returnType: int
    signature: int mdbox_transaction_save_commit_pre(struct mail_save_context *_ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:379,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:383,1
    - Dst: mail_index_sync_set_commit_result
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:387,1
    - Dst: mdbox_sync_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:391,1
    - Dst: mdbox_map_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:394,1
    - Dst: mdbox_map_atomic_set_failed
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:395,1
    - Dst: mdbox_map_append_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:398,1
    - Dst: mdbox_map_atomic_set_failed
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:399,1
    - Dst: mdbox_map_append_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:401,1
    - Dst: mdbox_map_atomic_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:404,1
    - Dst: fdatasync_path
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:407,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:408,1
    - Dst: mdbox_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:413,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - _ctx
    - result
    argTypes:
    - struct mail_save_context*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 376
    functionDepth: 6
    functionLinenumber: 376
    functionLinenumberEnd: 414
    functionName: mdbox_transaction_save_commit_post
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - mdbox_map_append_commit
    - container_of
    - mdbox_map_append_free
    - mdbox_sync_finish
    - MDBOX_SAVECTX
    - mdbox_map_atomic_set_failed
    - mdbox_map_atomic_finish
    - fdatasync_path
    - mdbox_map_transaction_commit
    - mdbox_transaction_save_rollback
    - mail_index_sync_set_commit_result
    - mailbox_set_critical
    linkageType: ''
    returnType: void
    signature: "void mdbox_transaction_save_commit_post(struct mail_save_context *_ctx,\n\t\t\t\t\tstruct
      mail_index_transaction_commit_result *result)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:418,1
    - Dst: mdbox_save_cancel
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:421,1
    - Dst: mdbox_map_append_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:423,1
    - Dst: mdbox_map_transaction_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:425,1
    - Dst: mdbox_map_atomic_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:427,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:428,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:429,1
    - Dst: mdbox_sync_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:432,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:434,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:435,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 416
    functionDepth: 20
    functionLinenumber: 416
    functionLinenumberEnd: 436
    functionName: mdbox_transaction_save_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 2
    functionsReached:
    - mdbox_map_append_free
    - mdbox_map_transaction_free
    - MDBOX_SAVECTX
    - mdbox_sync_finish
    - mdbox_map_atomic_finish
    - mdbox_save_cancel
    - array_is_created
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void mdbox_transaction_save_rollback(struct mail_save_context *_ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:440,1
    - Dst: mail_storage_copy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:451,1
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:452,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:454,1
    - Dst: mdbox_mail_lookup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:456,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:458,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:462,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:464,1
    - Dst: mail_storage_copy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:467,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:469,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:470,1
    - Dst: mail_storage_copy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:473,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:477,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:478,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:479,1
    - Dst: dbox_save_add_to_index
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:482,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:483,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:486,1
    - Dst: index_copy_cache_fields
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:488,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:490,1
    - Dst: mail_set_seq_saving
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:493,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c:494,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 438
    functionDepth: 16
    functionLinenumber: 438
    functionLinenumberEnd: 496
    functionName: mdbox_copy
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-save.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_array_init
    - index_copy_cache_fields
    - array_append_space
    - MDBOX_SAVECTX
    - array_push_back
    - mail_storage_copy
    - mdbox_mail_lookup
    - mail_index_lookup_ext
    - dbox_save_add_to_index
    - mail_index_update_ext
    - MDBOX_MAILBOX
    - guid_128_from_string
    - memcmp
    - array_is_created
    - guid_128_is_empty
    - mail_set_seq_saving
    - index_save_context_free
    linkageType: ''
    returnType: int
    signature: int mdbox_copy(struct mail_save_context *_ctx, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - map
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: MAP_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAP_STORAGE(map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:34,1
    - Dst: mdbox_storage_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:35,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:37,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - map
    - format
    argTypes:
    - struct mdbox_map*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 39
    functionName: mdbox_map_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - t_strdup_vprintf
    - mdbox_storage_set_corrupted
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void mdbox_map_set_corrupted(struct mdbox_map *map, const char *format,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:47,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:48,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:50,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:53,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:55,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:56,1
    - Dst: mail_index_set_fsync_mode
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:59,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:60,1
    - Dst: mail_index_set_lock_method
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:61,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:62,1
    - Dst: mail_storage_get_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:63,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:63,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:65,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:69,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:72,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:73,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:74,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - storage
    - root_list
    argTypes:
    - struct mdbox_storage*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 78
    functionName: mdbox_map_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - mail_index_set_lock_method
    - event_create
    - mail_index_alloc
    - MAP_STORAGE
    - event_set_append_log_prefix
    - t_strdup_printf
    - mailbox_list_get_root_forced
    - i_strconcat
    - mail_index_set_fsync_mode
    - i_new
    - mail_index_ext_register
    - event_drop_parent_log_prefixes
    - mail_storage_get_lock_timeout
    linkageType: ''
    returnType: struct mdbox_map
    signature: 'struct mdbox_map *

      mdbox_map_init(struct mdbox_storage *storage, struct mailbox_list *root_list)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:86,1
    - Dst: dbox_mailbox_list_cleanup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:87,1
    - Dst: index_mailbox_view_update_last_temp_file_scan
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 4
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: mdbox_map_deinit_cleanup
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - index_mailbox_view_update_last_temp_file_scan
    - mail_index_get_header
    - dbox_mailbox_list_cleanup
    linkageType: ''
    returnType: void
    signature: void mdbox_map_deinit_cleanup(struct mdbox_map *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_deinit_cleanup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:100,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:102,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:103,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:105,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:106,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:107,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:108,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - _map
    argTypes:
    - struct mdbox_map**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 92
    functionDepth: 5
    functionLinenumber: 92
    functionLinenumberEnd: 110
    functionName: mdbox_map_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - event_unref
    - mail_index_close
    - mdbox_map_deinit_cleanup
    - i_free
    - mail_index_free
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void mdbox_map_deinit(struct mdbox_map **_map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:114,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:116,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:116,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:120,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:121,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:123,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 6
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: mdbox_map_mkdir_storage
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_mkdir_root
    - mail_storage_copy_list_error
    - MAP_STORAGE
    linkageType: ''
    returnType: int
    signature: int mdbox_map_mkdir_storage(struct mdbox_map *map)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:140,1
    - Dst: mail_index_set_permissions
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:141,1
    - Dst: mail_storage_settings_to_index_flags
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:146,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:146,1
    - Dst: mdbox_map_mkdir_storage
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:148,1
    - Dst: mail_index_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:157,1
    - Dst: mail_index_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:164,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:167,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:172,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:176,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:178,1
    - Dst: mdbox_map_generate_uid_validity
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:179,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:180,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:180,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:181,1
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:184,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:185,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - map
    - create_missing
    argTypes:
    - struct mdbox_map*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 129
    functionDepth: 7
    functionLinenumber: 129
    functionLinenumberEnd: 190
    functionName: mdbox_map_open_internal
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - mdbox_map_refresh
    - MAP_STORAGE
    - mail_index_close
    - mail_storage_settings_to_index_flags
    - mdbox_map_mkdir_storage
    - mail_index_set_permissions
    - mail_index_view_open
    - mail_storage_set_index_error
    - mail_index_get_header
    - mail_index_open
    - mdbox_map_generate_uid_validity
    - mailbox_list_get_root_permissions
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mdbox_map_open_internal(struct mdbox_map *map, bool create_missing)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open_internal
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 192
    functionDepth: 8
    functionLinenumber: 192
    functionLinenumberEnd: 195
    functionName: mdbox_map_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - mdbox_map_open_internal
    linkageType: ''
    returnType: int
    signature: int mdbox_map_open(struct mdbox_map *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open_internal
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 8
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: mdbox_map_open_or_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mdbox_map_open_internal
    linkageType: ''
    returnType: int
    signature: int mdbox_map_open_or_create(struct mdbox_map *map)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_files_sync_input
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:211,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:213,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:214,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:214,1
    - Dst: mail_index_view_have_transactions
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:217,1
    - Dst: mail_index_view_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:222,1
    - Dst: mail_index_reset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:224,1
    - Dst: mail_index_view_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:225,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:226,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:226,1
    - Dst: mdbox_storage_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 202
    functionDepth: 12
    functionLinenumber: 202
    functionLinenumberEnd: 234
    functionName: mdbox_map_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 3
    functionsReached:
    - mail_index_view_have_transactions
    - mdbox_storage_set_corrupted
    - MAP_STORAGE
    - mail_index_view_sync_begin
    - mail_storage_set_index_error
    - mail_index_view_sync_commit
    - mail_index_reset_fscked
    - mdbox_files_sync_input
    - mail_index_refresh
    linkageType: ''
    returnType: int
    signature: int mdbox_map_refresh(struct mdbox_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 247
    functionName: mdbox_map_is_fscked
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mail_index_get_header
    linkageType: ''
    returnType: bool
    signature: bool mdbox_map_is_fscked(struct mdbox_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:256,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:257,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:259,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - map
    - view
    - hdr_r
    argTypes:
    - struct mdbox_map*
    - struct mail_index_view*
    - struct mdbox_map_mail_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 260
    functionName: mdbox_map_get_ext_hdr
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_get_header_ext
    - I_MIN
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void mdbox_map_get_ext_hdr(struct mdbox_map *map, struct mail_index_view
      *view,\n\t\t      struct mdbox_map_mail_index_header *hdr_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_get_ext_hdr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 268
    functionName: mdbox_map_get_rebuild_count
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - mdbox_map_get_ext_hdr
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mdbox_map_get_rebuild_count(struct mdbox_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:278,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:282,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - map
    - seq
    - rec_r
    argTypes:
    - struct mdbox_map*
    - uint32_t
    - struct mdbox_map_mail_index_record**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 288
    functionName: mdbox_map_lookup_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - mdbox_map_set_corrupted
    - mail_index_lookup_ext
    - mail_index_lookup_uid
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_lookup_seq(struct mdbox_map *map, uint32_t seq,\n\t\t
      \    const struct mdbox_map_mail_index_record **rec_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:293,1
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:295,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - map
    - map_uid
    - seq_r
    argTypes:
    - struct mdbox_map*
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 290
    functionDepth: 13
    functionLinenumber: 290
    functionLinenumberEnd: 301
    functionName: mdbox_map_get_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - mdbox_map_refresh
    - mail_index_lookup_seq
    linkageType: ''
    returnType: int
    signature: int mdbox_map_get_seq(struct mdbox_map *map, uint32_t map_uid, uint32_t
      *seq_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open_or_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:310,1
    - Dst: mdbox_map_get_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:313,1
    - Dst: mdbox_map_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:316,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - map
    - map_uid
    - file_id_r
    - offset_r
    argTypes:
    - struct mdbox_map*
    - uint32_t
    - uint32_t*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 303
    functionDepth: 14
    functionLinenumber: 303
    functionLinenumberEnd: 321
    functionName: mdbox_map_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 3
    functionsReached:
    - mdbox_map_get_seq
    - mdbox_map_lookup_seq
    - mdbox_map_open_or_create
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_lookup(struct mdbox_map *map, uint32_t map_uid,\n\t\t
      \    uint32_t *file_id_r, uoff_t *offset_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open_or_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:330,1
    - Dst: mdbox_map_get_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:333,1
    - Dst: mdbox_map_lookup_seq_full
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - map
    - map_uid
    - rec_r
    - refcount_r
    argTypes:
    - struct mdbox_map*
    - uint32_t
    - struct mdbox_map_mail_index_record*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 323
    functionDepth: 14
    functionLinenumber: 323
    functionLinenumberEnd: 337
    functionName: mdbox_map_lookup_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 3
    functionsReached:
    - mdbox_map_get_seq
    - mdbox_map_lookup_seq_full
    - mdbox_map_open_or_create
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_lookup_full(struct mdbox_map *map, uint32_t map_uid,\n\t\t\t
      \ struct mdbox_map_mail_index_record *rec_r,\n\t\t\t  uint16_t *refcount_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:347,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:351,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:353,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - map
    - seq
    - rec_r
    - refcount_r
    argTypes:
    - struct mdbox_map*
    - uint32_t
    - struct mdbox_map_mail_index_record*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 339
    functionDepth: 3
    functionLinenumber: 339
    functionLinenumberEnd: 359
    functionName: mdbox_map_lookup_seq_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mdbox_map_set_corrupted
    - mdbox_map_lookup_seq
    - mail_index_lookup_ext
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_lookup_seq_full(struct mdbox_map *map, uint32_t seq,\n\t\t\t
      \     struct mdbox_map_mail_index_record *rec_r,\n\t\t\t      uint16_t *refcount_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - map
    - seq
    argTypes:
    - struct mdbox_map*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 367
    functionName: mdbox_map_lookup_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - mail_index_lookup_uid
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mdbox_map_lookup_uid(struct mdbox_map *map, uint32_t seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 372
    functionName: mdbox_map_get_messages_count
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mdbox_map_get_messages_count(struct mdbox_map *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:381,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:382,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:384,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:386,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:389,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:391,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - map
    - view
    - seq
    - rec_r
    argTypes:
    - struct mdbox_map*
    - struct mail_index_view*
    - uint32_t
    - struct dbox_mail_lookup_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 399
    functionName: mdbox_map_view_lookup_rec
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - i_zero
    - memcpy
    - mail_index_lookup_uid
    - mdbox_map_set_corrupted
    - mail_index_lookup_ext
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_view_lookup_rec(struct mdbox_map *map,\n\t\t\t      struct
      mail_index_view *view, uint32_t seq,\n\t\t\t      struct dbox_mail_lookup_rec
      *rec_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:409,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:411,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:413,1
    - Dst: mdbox_map_view_lookup_rec
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:415,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:422,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - map
    - file_id
    - recs
    argTypes:
    - struct mdbox_map*
    - uint32_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 401
    functionDepth: 13
    functionLinenumber: 401
    functionLinenumberEnd: 426
    functionName: mdbox_map_get_file_msgs
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mdbox_map_view_lookup_rec
    - mdbox_map_refresh
    - array_push_back
    - mail_index_get_header
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_get_file_msgs(struct mdbox_map *map, uint32_t file_id,\n\t\t\t
      \   ARRAY_TYPE(mdbox_map_file_msg) *recs)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:439,1
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:443,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:446,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:448,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:456,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:460,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - map
    - file_ids_r
    argTypes:
    - struct mdbox_map*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 428
    functionDepth: 13
    functionLinenumber: 428
    functionLinenumberEnd: 464
    functionName: mdbox_map_get_zero_ref_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - seq_range_array_add
    - mdbox_map_refresh
    - mail_index_get_header
    - mdbox_map_open
    - mail_index_lookup_ext
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_get_zero_ref_files(struct mdbox_map *map,\n\t\t\t\t
      ARRAY_TYPE(seq_range) *file_ids_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 473
    functionName: mdbox_map_atomic_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 4
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct mdbox_map_atomic_context
    signature: struct mdbox_map_atomic_context *mdbox_map_atomic_begin(struct mdbox_map
      *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_get_offsets
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:483,1
    - Dst: mdbox_storage_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:486,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:491,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - map
    - sync_ctx
    argTypes:
    - struct mdbox_map*
    - struct mail_index_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 475
    functionDepth: 3
    functionLinenumber: 475
    functionLinenumberEnd: 492
    functionName: mdbox_map_sync_handle
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_next
    - mdbox_storage_set_corrupted
    - mail_index_sync_get_offsets
    linkageType: ''
    returnType: void
    signature: "void mdbox_map_sync_handle(struct mdbox_map *map,\n\t\t      struct
      mail_index_sync_ctx *sync_ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open_or_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:502,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:507,1
    - Dst: mail_index_reset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:510,1
    - Dst: mdbox_storage_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:511,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:515,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:516,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:516,1
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:520,1
    - Dst: mdbox_map_sync_handle
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:525,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - atomic
    - reason
    argTypes:
    - struct mdbox_map_atomic_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 494
    functionDepth: 9
    functionLinenumber: 494
    functionLinenumberEnd: 527
    functionName: mdbox_map_atomic_lock
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 4
    functionsReached:
    - mdbox_map_sync_handle
    - mdbox_storage_set_corrupted
    - mdbox_map_open_or_create
    - MAP_STORAGE
    - mail_index_sync_set_reason
    - mail_storage_set_index_error
    - mail_index_sync_begin
    - mail_index_reset_fscked
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_atomic_lock(struct mdbox_map_atomic_context *atomic,\n\t\t\t
      \ const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - atomic
    argTypes:
    - struct mdbox_map_atomic_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 529
    functionDepth: 0
    functionLinenumber: 529
    functionLinenumberEnd: 532
    functionName: mdbox_map_atomic_is_locked
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mdbox_map_atomic_is_locked(struct mdbox_map_atomic_context *atomic)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - atomic
    argTypes:
    - struct mdbox_map_atomic_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 538
    functionName: mdbox_map_atomic_set_failed
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mdbox_map_atomic_set_failed(struct mdbox_map_atomic_context *atomic)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - atomic
    argTypes:
    - struct mdbox_map_atomic_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 544
    functionName: mdbox_map_atomic_set_success
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mdbox_map_atomic_set_success(struct mdbox_map_atomic_context *atomic)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_unset_fscked
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - atomic
    argTypes:
    - struct mdbox_map_atomic_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 550
    functionName: mdbox_map_atomic_unset_fscked
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - mail_index_unset_fscked
    linkageType: ''
    returnType: void
    signature: void mdbox_map_atomic_unset_fscked(struct mdbox_map_atomic_context
      *atomic)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:561,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:563,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:564,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:564,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:569,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - _atomic
    argTypes:
    - struct mdbox_map_atomic_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 552
    functionDepth: 5
    functionLinenumber: 552
    functionLinenumberEnd: 573
    functionName: mdbox_map_atomic_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 5
    functionsReached:
    - mail_index_sync_commit
    - MAP_STORAGE
    - mail_index_sync_rollback
    - mail_storage_set_index_error
    - i_assert
    - i_free
    linkageType: ''
    returnType: int
    signature: int mdbox_map_atomic_finish(struct mdbox_map_atomic_context **_atomic)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:587,1
    - Dst: mdbox_map_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:593,1
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:594,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:599,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - atomic
    - external
    argTypes:
    - struct mdbox_map_atomic_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 575
    functionDepth: 13
    functionLinenumber: 575
    functionLinenumberEnd: 603
    functionName: mdbox_map_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mail_index_transaction_begin
    - mdbox_map_open
    - i_new
    - mdbox_map_refresh
    linkageType: ''
    returnType: struct mdbox_map_transaction_context
    signature: "struct mdbox_map_transaction_context *\nmdbox_map_transaction_begin(struct
      mdbox_map_atomic_context *atomic,\n\t\t\t    bool external)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:608,1
    - Dst: mdbox_map_atomic_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:614,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:617,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:618,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:618,1
    - Dst: mdbox_map_atomic_set_success
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:622,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - reason
    argTypes:
    - struct mdbox_map_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 605
    functionDepth: 10
    functionLinenumber: 605
    functionLinenumberEnd: 624
    functionName: mdbox_map_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mail_index_transaction_commit
    - MAP_STORAGE
    - mdbox_map_atomic_set_success
    - mail_storage_set_index_error
    - i_assert
    - mdbox_map_atomic_lock
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_transaction_commit(struct mdbox_map_transaction_context
      *ctx,\n\t\t\t\t const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:633,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mdbox_map_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 635
    functionName: mdbox_map_transaction_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mail_index_transaction_rollback
    - i_free
    linkageType: ''
    returnType: void
    signature: void mdbox_map_transaction_free(struct mdbox_map_transaction_context
      **_ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:645,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:648,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:653,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:653,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:656,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:661,1
    - Dst: mail_index_atomic_inc_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:664,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:667,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:675,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:675,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:676,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - map_uid
    - diff
    argTypes:
    - struct mdbox_map_transaction_context*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 637
    functionDepth: 2
    functionLinenumber: 637
    functionLinenumberEnd: 681
    functionName: mdbox_map_update_refcount
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - MAP_STORAGE
    - mail_index_lookup_seq
    - mail_index_atomic_inc_ext
    - mdbox_map_set_corrupted
    - t_strdup_printf
    - unlikely
    - mail_index_lookup_ext
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_update_refcount(struct mdbox_map_transaction_context
      *ctx,\n\t\t\t      uint32_t map_uid, int diff)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:689,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:692,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:694,1
    - Dst: mdbox_map_update_refcount
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:695,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - map_uids
    - diff
    argTypes:
    - struct mdbox_map_transaction_context*
    - ARRAY_TYPE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 683
    functionDepth: 3
    functionLinenumber: 683
    functionLinenumberEnd: 699
    functionName: mdbox_map_update_refcounts
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - array_count
    - mdbox_map_update_refcount
    - unlikely
    - array_idx
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_update_refcounts(struct mdbox_map_transaction_context
      *ctx,\n\t\t\t       const ARRAY_TYPE(uint32_t) *map_uids, int diff)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_atomic_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:715,1
    - Dst: mdbox_map_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:716,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:718,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:720,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:723,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:731,1
    - Dst: mdbox_map_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:735,1
    - Dst: mdbox_map_transaction_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:736,1
    - Dst: mdbox_map_atomic_finish
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:737,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - map
    - file_id
    argTypes:
    - struct mdbox_map*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 701
    functionDepth: 14
    functionLinenumber: 701
    functionLinenumberEnd: 740
    functionName: mdbox_map_remove_file_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mdbox_map_transaction_free
    - mdbox_map_atomic_begin
    - mdbox_map_atomic_finish
    - mdbox_map_set_corrupted
    - mdbox_map_transaction_commit
    - mail_index_get_header
    - mail_index_lookup_ext
    - mdbox_map_transaction_begin
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: int mdbox_map_remove_file_id(struct mdbox_map *map, uint32_t file_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:747,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:751,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:752,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:753,1
    - Dst: mdbox_map_open_or_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:755,1
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - atomic
    argTypes:
    - struct mdbox_map_atomic_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 742
    functionDepth: 13
    functionLinenumber: 742
    functionLinenumberEnd: 766
    functionName: mdbox_map_append_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - mdbox_map_refresh
    - i_new
    - mdbox_map_open_or_create
    linkageType: ''
    returnType: struct mdbox_map_append_context
    signature: 'struct mdbox_map_append_context *

      mdbox_map_append_begin(struct mdbox_map_atomic_context *atomic)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: localtime
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:779,1
    - Dst: mktime
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:792,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:794,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - interval
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 797
    functionName: day_begin_stamp
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - i_panic
    - localtime
    - mktime
    linkageType: ''
    returnType: time_t
    signature: time_t day_begin_stamp(unsigned int interval)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:804,1
    - Dst: dbox_file_open_primary
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:807,1
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:818,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - file
    - want_altpath
    argTypes:
    - struct dbox_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 799
    functionDepth: 7
    functionLinenumber: 799
    functionLinenumberEnd: 823
    functionName: dbox_try_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - dbox_file_open_primary
    - dbox_file_is_in_alt
    - dbox_file_open
    linkageType: ''
    returnType: bool
    signature: bool dbox_try_open(struct dbox_file *file, bool want_altpath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:830,1
    - Dst: dbox_file_seek_next
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:833,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - file
    - offset
    argTypes:
    - struct dbox_file*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 825
    functionDepth: 8
    functionLinenumber: 825
    functionLinenumberEnd: 837
    functionName: dbox_file_is_ok_at
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - dbox_file_seek_next
    - dbox_file_seek
    linkageType: ''
    returnType: bool
    signature: bool dbox_file_is_ok_at(struct dbox_file *file, uoff_t offset)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:860,1
    - Dst: dbox_try_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:861,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:862,1
    - Dst: dbox_file_try_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:868,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:871,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:873,1
    - Dst: dbox_file_is_ok_at
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:881,1
    - Dst: dbox_file_append_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:884,1
    - Dst: dbox_file_get_append_stream
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:885,1
    - Dst: dbox_file_append_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:894,1
    - Dst: dbox_file_unlock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:898,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:899,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 8
    argNames:
    - ctx
    - want_altpath
    - rec
    - stamp
    - mail_size
    - file_append_r
    - output_r
    - retry_later_r
    argTypes:
    - struct mdbox_map_append_context*
    - bool
    - struct mdbox_map_mail_index_record*
    - time_t
    - uoff_t
    - struct dbox_file_append_context**
    - struct ostream**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 839
    functionDepth: 9
    functionLinenumber: 839
    functionLinenumberEnd: 901
    functionName: mdbox_map_file_try_append
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - mdbox_file_init
    - dbox_file_is_ok_at
    - dbox_file_unref
    - dbox_file_get_append_stream
    - dbox_try_open
    - e_error
    - stat
    - dbox_file_append_init
    - dbox_file_unlock
    - dbox_file_try_lock
    - dbox_file_append_rollback
    linkageType: ''
    returnType: bool
    signature: "bool mdbox_map_file_try_append(struct mdbox_map_append_context *ctx,\n\t\t\t
      \ bool want_altpath,\n\t\t\t  const struct mdbox_map_mail_index_record *rec,\n\t\t\t
      \ time_t stamp, uoff_t mail_size,\n\t\t\t  struct dbox_file_append_context **file_append_r,\n\t\t\t
      \ struct ostream **output_r, bool *retry_later_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:911,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - file_id
    argTypes:
    - struct mdbox_map_append_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 903
    functionDepth: 1
    functionLinenumber: 903
    functionLinenumberEnd: 920
    functionName: mdbox_map_is_appending
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: bool
    signature: bool mdbox_map_is_appending(struct mdbox_map_append_context *ctx, uint32_t
      file_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:934,1
    - Dst: dbox_file_is_in_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:938,1
    - Dst: dbox_file_get_append_stream
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:949,1
    - Dst: dbox_file_append_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:956,1
    - Dst: dbox_file_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:957,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 4
    argNames:
    - ctx
    - mail_size
    - want_altpath
    - output_r
    argTypes:
    - struct mdbox_map_append_context*
    - uoff_t
    - bool
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 922
    functionDepth: 6
    functionLinenumber: 922
    functionLinenumberEnd: 961
    functionName: mdbox_map_find_existing_append
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - dbox_file_append_flush
    - array_get
    - dbox_file_get_append_stream
    - dbox_file_is_in_alt
    - dbox_file_close
    linkageType: ''
    returnType: struct dbox_file_append_context
    signature: "struct dbox_file_append_context *\nmdbox_map_find_existing_append(struct
      mdbox_map_append_context *ctx,\n\t\t\t       uoff_t mail_size, bool want_altpath,\n\t\t\t
      \      struct ostream **output_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:979,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:981,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:986,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:987,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:988,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:990,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:990,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:994,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:997,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1001,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1002,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - file_ids_r
    argTypes:
    - struct mdbox_map_append_context*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 963
    functionDepth: 4
    functionLinenumber: 963
    functionLinenumberEnd: 1007
    functionName: mdbox_map_find_primary_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - readdir
    - opendir
    - strlen
    - str_to_uint32
    - closedir
    - strncmp
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_find_primary_files(struct mdbox_map_append_context *ctx,\n\t\t\t
      \    ARRAY_TYPE(seq_range) *file_ids_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1016,1
    - Dst: day_begin_stamp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1028,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1029,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1032,1
    - Dst: mdbox_map_find_primary_files
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1036,1
    - Dst: mdbox_map_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1041,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1044,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1046,1
    - Dst: mdbox_map_is_appending
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1065,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1070,1
    - Dst: mdbox_map_file_try_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1071,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1083,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 5
    argNames:
    - ctx
    - mail_size
    - want_altpath
    - file_append_r
    - output_r
    argTypes:
    - struct mdbox_map_append_context*
    - uoff_t
    - bool
    - struct dbox_file_append_context**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1009
    functionDepth: 10
    functionLinenumber: 1009
    functionLinenumberEnd: 1089
    functionName: mdbox_map_find_appendable_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - seq_range_exists
    - mdbox_map_file_try_append
    - mail_index_lookup_uid
    - mdbox_map_is_appending
    - mail_index_get_header
    - day_begin_stamp
    - mail_index_lookup_seq_range
    - t_array_init
    - ARRAY_TYPE
    - mdbox_map_lookup_seq
    - mdbox_map_find_primary_files
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_find_appendable_file(struct mdbox_map_append_context
      *ctx,\n\t\t\t       uoff_t mail_size, bool want_altpath,\n\t\t\t       struct
      dbox_file_append_context **file_append_r,\n\t\t\t       struct ostream **output_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_find_existing_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1106,1
    - Dst: mdbox_map_find_appendable_file
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1112,1
    - Dst: mdbox_file_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1123,1
    - Dst: mdbox_file_init_new_alt
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1124,1
    - Dst: dbox_file_append_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1125,1
    - Dst: dbox_file_get_append_stream
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1127,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1129,1
    - Dst: dbox_file_append_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1130,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1131,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1136,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1141,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1143,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1144,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 5
    argNames:
    - ctx
    - mail_size
    - flags
    - file_append_ctx_r
    - output_r
    argTypes:
    - struct mdbox_map_append_context*
    - uoff_t
    - enum mdbox_map_append_flags
    - struct dbox_file_append_context**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1091
    functionDepth: 11
    functionLinenumber: 1091
    functionLinenumberEnd: 1148
    functionName: mdbox_map_append_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mdbox_map_find_existing_append
    - mdbox_map_find_appendable_file
    - mdbox_file_init
    - i_assert
    - array_append_space
    - array_push_back
    - dbox_file_unref
    - dbox_file_get_append_stream
    - dbox_file_append_init
    - mdbox_file_init_new_alt
    - dbox_file_append_rollback
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_append_next(struct mdbox_map_append_context *ctx,\n\t\t\t
      \ uoff_t mail_size, enum mdbox_map_append_flags flags,\n\t\t\t  struct dbox_file_append_context
      **file_append_ctx_r,\n\t\t\t  struct ostream **output_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dbox_file_append_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1163,1
    - Dst: dbox_file_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 2
    argNames:
    - map
    - append_ctx
    argTypes:
    - struct mdbox_map*
    - struct dbox_file_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1150
    functionDepth: 6
    functionLinenumber: 1150
    functionLinenumberEnd: 1165
    functionName: mdbox_map_append_close_if_unneeded
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - dbox_file_close
    - dbox_file_append_flush
    linkageType: ''
    returnType: void
    signature: "void mdbox_map_append_close_if_unneeded(struct mdbox_map *map,\n\t\t\t\t
      \  struct dbox_file_append_context *append_ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1173,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1174,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1176,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1179,1
    - Dst: dbox_file_append_checkpoint
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1181,1
    - Dst: mdbox_map_append_close_if_unneeded
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_map_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1167
    functionDepth: 7
    functionLinenumber: 1167
    functionLinenumberEnd: 1184
    functionName: mdbox_map_append_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - array_get_modifiable
    - mdbox_map_append_close_if_unneeded
    - i_assert
    - dbox_file_append_checkpoint
    linkageType: ''
    returnType: void
    signature: void mdbox_map_append_finish(struct mdbox_map_append_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1191,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1192,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_map_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1186
    functionDepth: 1
    functionLinenumber: 1186
    functionLinenumberEnd: 1194
    functionName: mdbox_map_append_abort
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_delete
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mdbox_map_append_abort(struct mdbox_map_append_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1200,1
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1205,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1207,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1210,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1211,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1212,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1217,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - map
    - file_id_r
    argTypes:
    - struct mdbox_map*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1221
    functionName: mdbox_find_highest_file_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - readdir
    - opendir
    - str_to_uint
    - strlen
    - e_error
    - closedir
    - strncmp
    linkageType: ''
    returnType: int
    signature: int mdbox_find_highest_file_id(struct mdbox_map *map, uint32_t *file_id_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_atomic_lock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1234,1
    - Dst: mdbox_map_get_ext_hdr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1237,1
    - Dst: mdbox_find_highest_file_id
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1245,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1253,1
    - Dst: dbox_file_append_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1258,1
    - Dst: mdbox_file_assign_file_id
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1262,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1268,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1274,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - separate_transaction
    - reason
    argTypes:
    - struct mdbox_map_append_context*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1223
    functionDepth: 10
    functionLinenumber: 1223
    functionLinenumberEnd: 1280
    functionName: mdbox_map_assign_file_ids
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 0
    functionsReached:
    - mdbox_find_highest_file_id
    - mail_index_transaction_begin
    - dbox_file_append_flush
    - array_get
    - mdbox_file_assign_file_id
    - mail_index_update_header_ext
    - mdbox_map_get_ext_hdr
    - mdbox_map_atomic_lock
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_assign_file_ids(struct mdbox_map_append_context *ctx,\n\t\t\t
      \ bool separate_transaction, const char *reason)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1290,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1296,1
    - Dst: mdbox_map_assign_file_ids
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1302,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1306,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1308,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1319,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1320,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1322,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1327,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1328,1
    - Dst: mail_index_append_finish_uids
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1329,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1330,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1331,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1336,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1341,1
    - Dst: mail_storage_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1342,1
    - Dst: MAP_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - first_map_uid_r
    - last_map_uid_r
    argTypes:
    - struct mdbox_map_append_context*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1282
    functionDepth: 11
    functionLinenumber: 1282
    functionLinenumberEnd: 1350
    functionName: mdbox_map_append_assign_map_uids
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mail_index_append
    - mail_index_update_header
    - mail_index_transaction_commit
    - MAP_STORAGE
    - array_get
    - mail_index_get_header
    - array_front
    - mail_storage_set_index_error
    - mail_index_update_ext
    - mail_index_append_finish_uids
    - array_count
    - t_array_init
    - mdbox_map_assign_file_ids
    - ARRAY_TYPE
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_append_assign_map_uids(struct mdbox_map_append_context
      *ctx,\n\t\t\t\t     uint32_t *first_map_uid_r,\n\t\t\t\t     uint32_t *last_map_uid_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_assign_file_ids
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1364,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1367,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1368,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1370,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1371,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1376,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1384,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1391,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1394,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1398,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1399,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1400,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1401,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1402,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - map_uids
    - expunge_map_uids
    argTypes:
    - struct mdbox_map_append_context*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1352
    functionDepth: 11
    functionLinenumber: 1352
    functionLinenumberEnd: 1405
    functionName: mdbox_map_append_move
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mail_index_append
    - seq_range_array_iter_nth
    - mail_index_lookup_seq
    - seq_range_array_iter_init
    - i_unreached
    - array_get
    - mail_index_get_header
    - mail_index_update_ext
    - mdbox_map_assign_file_ids
    - i_assert
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: "int mdbox_map_append_move(struct mdbox_map_append_context *ctx,\n\t\t\t
      \ const ARRAY_TYPE(uint32_t) *map_uids,\n\t\t\t  const ARRAY_TYPE(seq_range)
      *expunge_map_uids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1412,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1414,1
    - Dst: dbox_file_append_flush
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_map_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1407
    functionDepth: 6
    functionLinenumber: 1407
    functionLinenumberEnd: 1420
    functionName: mdbox_map_append_flush
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - array_get_modifiable
    - i_assert
    - dbox_file_append_flush
    linkageType: ''
    returnType: int
    signature: int mdbox_map_append_flush(struct mdbox_map_append_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1427,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1429,1
    - Dst: dbox_file_append_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1431,1
    - Dst: mdbox_map_atomic_set_success
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mdbox_map_append_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1422
    functionDepth: 6
    functionLinenumber: 1422
    functionLinenumberEnd: 1436
    functionName: mdbox_map_append_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - array_get_modifiable
    - dbox_file_append_commit
    - i_assert
    - mdbox_map_atomic_set_success
    linkageType: ''
    returnType: int
    signature: int mdbox_map_append_commit(struct mdbox_map_append_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1448,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1450,1
    - Dst: dbox_file_append_rollback
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1453,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1456,1
    - Dst: dbox_file_unlock
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1458,1
    - Dst: dbox_file_unref
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1459,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1462,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1463,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1464,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1465,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mdbox_map_append_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1438
    functionDepth: 7
    functionLinenumber: 1438
    functionLinenumberEnd: 1466
    functionName: mdbox_map_append_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 3
    functionsReached:
    - i_free
    - array_get_modifiable
    - dbox_file_unref
    - mail_index_transaction_rollback
    - dbox_file_unlock
    - array_free
    - dbox_file_append_rollback
    linkageType: ''
    returnType: void
    signature: void mdbox_map_append_free(struct mdbox_map_append_context **_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1479,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1482,1
    - Dst: mdbox_map_sync_handle
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1485,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1487,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1492,1
    - Dst: mail_index_sync_set_reason
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1496,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1468
    functionDepth: 5
    functionLinenumber: 1468
    functionLinenumberEnd: 1498
    functionName: mdbox_map_generate_uid_validity
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 1
    functionsReached:
    - mdbox_map_sync_handle
    - mail_index_update_header
    - mail_index_sync_commit
    - mail_index_get_header
    - mail_index_sync_set_reason
    - mail_index_sync_begin
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mdbox_map_generate_uid_validity(struct mdbox_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1504,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1506,1
    - Dst: mdbox_map_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c:1508,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct mdbox_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1500
    functionDepth: 2
    functionLinenumber: 1500
    functionLinenumberEnd: 1510
    functionName: mdbox_map_get_uid_validity
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c
    functionUses: 2
    functionsReached:
    - mdbox_map_set_corrupted
    - i_assert
    - mail_index_get_header
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mdbox_map_get_uid_validity(struct mdbox_map *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:34,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 40
    functionName: mdbox_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *mdbox_storage_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:45,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:48,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:60,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:62,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:63,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:66,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:71,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:71,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:74,1
    - Dst: mdbox_map_init
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:76,1
    - Dst: dbox_storage_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - _storage
    - ns
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 42
    functionDepth: 9
    functionLinenumber: 42
    functionLinenumberEnd: 78
    functionName: mdbox_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - p_strdup
    - MDBOX_STORAGE
    - event_set_append_log_prefix
    - t_strdup_printf
    - mailbox_list_get_root_forced
    - mdbox_map_init
    - p_strconcat
    - dbox_storage_create
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int mdbox_storage_create(struct mail_storage *_storage,\n\t\t\t struct
      mail_namespace *ns, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:82,1
    - Dst: mdbox_files_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:84,1
    - Dst: mdbox_map_deinit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:85,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:86,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:88,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:89,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:90,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:91,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:92,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:93,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:94,1
    - Dst: dbox_storage_destroy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 80
    functionDepth: 6
    functionLinenumber: 80
    functionLinenumberEnd: 96
    functionName: mdbox_storage_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - MDBOX_STORAGE
    - dbox_storage_destroy
    - settings_free
    - mdbox_files_free
    - mdbox_map_deinit
    - array_is_created
    - i_free
    - array_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mdbox_storage_destroy(struct mail_storage *_storage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:105,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:106,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:107,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:108,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 116
    functionName: mdbox_storage_find_root_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_user_get_home
    - e_debug
    - t_strconcat
    - i_faccessat2
    linkageType: ''
    returnType: char
    signature: 'char *

      mdbox_storage_find_root_dir(const struct mail_namespace *ns)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_storage_find_root_dir
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:131,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:133,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:139,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:140,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:141,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:145,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:146,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - ns
    - mail_set
    - root_path_r
    - inbox_path_r ATTR_UNUSED
    argTypes:
    - struct mail_namespace*
    - struct mail_storage_settings*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 152
    functionName: mdbox_storage_autodetect
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mdbox_storage_find_root_dir
    - stat
    - S_ISDIR
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool mdbox_storage_autodetect(const struct mail_namespace *ns,\n\t\t\t
      const struct mail_storage_settings *mail_set,\n\t\t\t const char **root_path_r,\n\t\t\t
      const char **inbox_path_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:163,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:165,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:166,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:173,1
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:175,1
    - Dst: MDBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 154
    functionDepth: 6
    functionLinenumber: 154
    functionLinenumberEnd: 181
    functionName: mdbox_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - index_storage_mailbox_alloc
    - p_new
    - MDBOX_STORAGE
    - ENUM_NEGATE
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nmdbox_mailbox_alloc(struct mail_storage *storage,
      struct mailbox_list *list,\n\t\t    const char *vname, enum mailbox_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:185,1
    - Dst: dbox_mailbox_check_existence
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:187,1
    - Dst: dbox_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:189,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:193,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:197,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 183
    functionDepth: 10
    functionLinenumber: 183
    functionLinenumberEnd: 203
    functionName: mdbox_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - dbox_mailbox_check_existence
    - MDBOX_MAILBOX
    - dbox_mailbox_open
    - mail_index_ext_register
    linkageType: ''
    returnType: int
    signature: int mdbox_mailbox_open(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:207,1
    - Dst: mdbox_storage_rebuild
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:211,1
    - Dst: dbox_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 205
    functionDepth: 22
    functionLinenumber: 205
    functionLinenumberEnd: 216
    functionName: mdbox_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - dbox_mailbox_close
    - mdbox_storage_rebuild
    - MDBOX_STORAGE
    linkageType: ''
    returnType: void
    signature: void mdbox_mailbox_close(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:224,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:226,1
    - Dst: mdbox_set_mailbox_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:230,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:230,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:234,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:236,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - mbox
    - hdr
    - need_resize_r
    argTypes:
    - struct mdbox_mailbox*
    - struct mdbox_index_header*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 239
    functionName: mdbox_read_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 1
    functionsReached:
    - i_zero
    - memcpy
    - I_MIN
    - t_strdup_printf
    - mail_index_get_header_ext
    - mdbox_set_mailbox_corrupted
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mdbox_read_header(struct mdbox_mailbox *mbox,\n\t\t      struct
      mdbox_index_header *hdr, bool *need_resize_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:248,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:249,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:255,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:256,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:258,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:259,1
    - Dst: mdbox_map_get_uid_validity
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:263,1
    - Dst: mail_index_ext_resize_hdr
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:265,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:268,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:269,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - mbox
    - trans
    - update
    argTypes:
    - struct mdbox_mailbox*
    - struct mail_index_transaction*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 241
    functionDepth: 4
    functionLinenumber: 241
    functionLinenumberEnd: 272
    functionName: mdbox_update_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 2
    functionsReached:
    - i_zero
    - memcpy
    - mdbox_read_header
    - mail_index_ext_resize_hdr
    - guid_128_generate
    - mail_index_update_header_ext
    - mdbox_map_get_uid_validity
    - memcmp
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: "void mdbox_update_header(struct mdbox_mailbox *mbox,\n\t\t\t struct
      mail_index_transaction *trans,\n\t\t\t const struct mailbox_update *update)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mdbox_map_open_or_create
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:285,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:289,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:293,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:294,1
    - Dst: dbox_get_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:300,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:304,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:310,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:318,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:323,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:324,1
    - Dst: mail_index_update_highest_modseq
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:325,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:328,1
    - Dst: index_pop3_uidl_set_max_uid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:333,1
    - Dst: mdbox_update_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:336,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:338,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:339,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 41
    argCount: 3
    argNames:
    - box
    - update
    - trans
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 275
    functionDepth: 9
    functionLinenumber: 275
    functionLinenumberEnd: 344
    functionName: mdbox_write_index_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_modseq_get_highest
    - mail_index_transaction_begin
    - mail_index_update_header
    - mdbox_map_open_or_create
    - mail_index_modseq_enable
    - mail_index_update_highest_modseq
    - mdbox_update_header
    - dbox_get_uidvalidity_next
    - mail_index_transaction_commit
    - mail_index_view_open
    - mail_index_get_header
    - mailbox_set_index_error
    - index_pop3_uidl_set_max_uid
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: "void mdbox_write_index_header(struct mailbox *box,\n\t\t\t const struct
      mailbox_update *update,\n\t\t\t struct mail_index_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:350,1
    - Dst: mdbox_write_index_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - box
    - update
    - trans
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 346
    functionDepth: 10
    functionLinenumber: 346
    functionLinenumberEnd: 357
    functionName: mdbox_mailbox_create_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 1
    functionsReached:
    - MDBOX_MAILBOX
    - mdbox_write_index_header
    linkageType: ''
    returnType: int
    signature: "int mdbox_mailbox_create_indexes(struct mailbox *box,\n\t\t\t\t const
      struct mailbox_update *update,\n\t\t\t\t struct mail_index_transaction *trans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:365,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:366,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:367,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:369,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:375,1
    - Dst: mdbox_map_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:378,1
    - Dst: mdbox_map_refresh
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:379,1
    - Dst: mdbox_map_get_rebuild_count
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - storage
    - reason
    argTypes:
    - struct mdbox_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 359
    functionDepth: 13
    functionLinenumber: 359
    functionLinenumberEnd: 383
    functionName: mdbox_storage_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 5
    functionsReached:
    - mdbox_map_refresh
    - va_start
    - mdbox_map_open
    - i_strdup
    - t_strdup_vprintf
    - mdbox_map_get_rebuild_count
    - mail_storage_set_critical
    - va_end
    linkageType: ''
    returnType: void
    signature: "void mdbox_storage_set_corrupted(struct mdbox_storage *storage,\n\t\t\t\t
      const char *reason, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dbox_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 389
    functionName: mdbox_get_attachment_path_suffix
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      mdbox_get_attachment_path_suffix(struct dbox_file *file ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:393,1
    - Dst: mdbox_storage_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - box
    - reason
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 391
    functionDepth: 14
    functionLinenumber: 391
    functionLinenumberEnd: 397
    functionName: mdbox_set_mailbox_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 5
    functionsReached:
    - mdbox_storage_set_corrupted
    - MDBOX_STORAGE
    linkageType: ''
    returnType: void
    signature: void mdbox_set_mailbox_corrupted(struct mailbox *box, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_DBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:401,1
    - Dst: mdbox_storage_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - reason
    argTypes:
    - struct dbox_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 399
    functionDepth: 14
    functionLinenumber: 399
    functionLinenumberEnd: 404
    functionName: mdbox_set_file_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - MDBOX_DBOX_STORAGE
    - mdbox_storage_set_corrupted
    linkageType: ''
    returnType: void
    signature: void mdbox_set_file_corrupted(struct dbox_file *file, const char *reason)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:414,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:421,1
    - Dst: dbox_mailbox_create_indexes
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:423,1
    - Dst: mdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:427,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:428,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:430,1
    - Dst: mdbox_write_index_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:432,1
    - Dst: mdbox_read_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:433,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:437,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - mbox
    - guid_r
    argTypes:
    - struct mdbox_mailbox*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 406
    functionDepth: 10
    functionLinenumber: 406
    functionLinenumberEnd: 439
    functionName: mdbox_mailbox_get_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - dbox_mailbox_create_indexes
    - mdbox_write_index_header
    - mdbox_read_header
    - mail_index_get_header
    - i_assert
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: int mdbox_mailbox_get_guid(struct mdbox_mailbox *mbox, guid_128_t guid_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MDBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:446,1
    - Dst: index_mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:448,1
    - Dst: mdbox_mailbox_get_guid
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:451,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 441
    functionDepth: 12
    functionLinenumber: 441
    functionLinenumberEnd: 455
    functionName: mdbox_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - MDBOX_MAILBOX
    - mdbox_mailbox_get_guid
    - index_mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int mdbox_mailbox_get_metadata(struct mailbox *box,\n\t\t\t   enum
      mailbox_metadata_items items,\n\t\t\t   struct mailbox_metadata *metadata_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:461,1
    - Dst: mdbox_write_index_header
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:464,1
    - Dst: index_storage_mailbox_update_common
      Src: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c:466,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 457
    functionDepth: 10
    functionLinenumber: 457
    functionLinenumberEnd: 467
    functionName: mdbox_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_open
    - mdbox_write_index_header
    - index_storage_mailbox_update_common
    linkageType: ''
    returnType: int
    signature: int mdbox_mailbox_update(struct mailbox *box, const struct mailbox_update
      *update)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:95,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - str
    - error_r
    argTypes:
    - char*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 102
    functionName: imapc_resp_text_code_parse
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool imapc_resp_text_code_parse(const char *str, enum mail_error *error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - error
    - str_r
    argTypes:
    - enum mail_error
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 115
    functionName: imapc_mail_error_to_resp_text_code
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 1
    functionsReached:
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool imapc_mail_error_to_resp_text_code(enum mail_error error, const
      char **str_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 122
    functionName: imapc_mailbox_has_modseqs
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - IMAPC_BOX_HAS_FEATURE
    linkageType: ''
    returnType: bool
    signature: bool imapc_mailbox_has_modseqs(struct imapc_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:129,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 135
    functionName: imapc_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *imapc_storage_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_resp_text_code_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:143,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:144,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - storage
    - default_error
    - reply
    argTypes:
    - struct imapc_storage*
    - enum mail_error
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 150
    functionName: imapc_copy_error_from_reply
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    - imapc_resp_text_code_parse
    linkageType: ''
    returnType: void
    signature: "void imapc_copy_error_from_reply(struct imapc_storage *storage,\n\t\t\t\t
      enum mail_error default_error,\n\t\t\t\t const struct imapc_command_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - sctx
    - client
    argTypes:
    - struct imapc_simple_context*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 158
    functionName: imapc_simple_context_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 3
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void imapc_simple_context_init(struct imapc_simple_context *sctx,\n\t\t\t
      \      struct imapc_storage_client *client)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:163,1
    - Dst: imapc_command_abort
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:164,1
    - Dst: imapc_client_logout
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:165,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - sctx
    - cmd
    argTypes:
    - struct imapc_simple_context*
    - struct imapc_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 10
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: imapc_simple_run
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 3
    functionsReached:
    - imapc_client_logout
    - imapc_command_abort
    - imapc_storage_client_handle_auth_failure
    - imapc_client_run
    linkageType: ''
    returnType: void
    signature: "void imapc_simple_run(struct imapc_simple_context *sctx,\n\t\t      struct
      imapc_command **cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mail_fetch_flush
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:175,1
    - Dst: imapc_mailbox_run_nofetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: imapc_mailbox_run
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_run_nofetch
    - imapc_mail_fetch_flush
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_run(struct imapc_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 179
    functionDepth: 9
    functionLinenumber: 179
    functionLinenumberEnd: 185
    functionName: imapc_mailbox_run_nofetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 1
    functionsReached:
    - imapc_client_run
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_run_nofetch(struct imapc_mailbox *mbox)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:195,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:198,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:201,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:204,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:208,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 187
    functionDepth: 4
    functionLinenumber: 187
    functionLinenumberEnd: 209
    functionName: imapc_simple_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_copy_error_from_reply
    - imapc_storage_client_handle_auth_failure
    - mail_storage_set_critical
    - mail_storage_set_internal_error
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_simple_callback(const struct imapc_command_reply *reply,\n\t\t\t
      \  void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:221,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:222,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:224,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 211
    functionDepth: 11
    functionLinenumber: 211
    functionLinenumberEnd: 226
    functionName: imapc_mailbox_noop
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_simple_context_init
    - imapc_command_send
    - imapc_client_mailbox_cmd
    - imapc_simple_run
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_noop(struct imapc_mailbox *mbox)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:237,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:238,1
    - Dst: struct imapc_storage_event_callback*::callback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:239,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:245,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:246,1
    - Dst: struct imapc_mailbox_event_callback*::callback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:247,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:251,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:252,1
    - Dst: struct imapc_mailbox_event_callback*::callback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:253,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_untagged_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 256
    functionName: imapc_storage_client_untagged_cb
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - struct imapc_storage_event_callback*::callback
    - struct imapc_mailbox_event_callback*::callback
    - strcasecmp
    - array_foreach
    linkageType: ''
    returnType: void
    signature: "void imapc_storage_client_untagged_cb(const struct imapc_untagged_reply
      *reply,\n\t\t\t\t void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:265,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:277,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:278,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 280
    functionName: imapc_storage_client_login_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - imapc_storage_client_handle_auth_failure
    - imapc_client_stop
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void imapc_storage_client_login_callback(const struct imapc_command_reply
      *reply,\n\t\t\t\t    void *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:293,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:295,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:301,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:303,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 308
    functionName: imapc_storage_client_handle_auth_failure
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 3
    functionsReached:
    - mailbox_list_set_error
    - mailbox_list_set_internal_error
    - mail_storage_set_internal_error
    - mail_storage_set_error
    linkageType: ''
    returnType: bool
    signature: bool imapc_storage_client_handle_auth_failure(struct imapc_storage_client
      *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_login
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:313,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:319,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:320,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:321,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - client
    - user
    - host
    argTypes:
    - struct imapc_storage_client*
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 310
    functionDepth: 9
    functionLinenumber: 310
    functionLinenumberEnd: 326
    functionName: imapc_storage_client_login
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_client_run
    - imapc_storage_client_handle_auth_failure
    - imapc_client_login
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void imapc_storage_client_login(struct imapc_storage_client *client,\n\t\t\t\t
      \      struct mail_user *user, const char *host)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:338,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:350,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:352,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:354,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:357,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:360,1
    - Dst: dsasl_client_mech_uses_password
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:362,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:365,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:371,1
    - Dst: mail_user_home_expand
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:373,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:379,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:380,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:381,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:383,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:386,1
    - Dst: imapc_client_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:387,1
    - Dst: imapc_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:388,1
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:391,1
    - Dst: imapc_storage_client_login
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:396,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 3
    argNames:
    - list
    - client_r
    - error_r
    argTypes:
    - struct mailbox_list*
    - struct imapc_storage_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 328
    functionDepth: 10
    functionLinenumber: 328
    functionLinenumberEnd: 401
    functionName: imapc_storage_client_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - dsasl_client_mech_find
    - t_str_new
    - str_c
    - mail_user_set_get_temp_prefix
    - array_foreach_elem
    - dsasl_client_mech_uses_password
    - t_strdup_printf
    - settings_free
    - imapc_client_set_login_callback
    - array_is_empty
    - imapc_client_init
    - imapc_client_register_untagged
    - i_new
    - imapc_storage_client_login
    - settings_get
    - t_strconcat
    - mail_user_home_expand
    linkageType: ''
    returnType: int
    signature: "int imapc_storage_client_create(struct mailbox_list *list,\n\t\t\t\tstruct
      imapc_storage_client **client_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:410,1
    - Dst: imapc_client_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:413,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:414,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:415,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:416,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:417,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:418,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct imapc_storage_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 403
    functionDepth: 5
    functionLinenumber: 403
    functionLinenumberEnd: 420
    functionName: imapc_storage_client_unref
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - settings_free
    - array_free
    - array_foreach_modifiable
    - i_assert
    - i_free
    - imapc_client_deinit
    linkageType: ''
    returnType: void
    signature: void imapc_storage_client_unref(struct imapc_storage_client **_client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_STORAGE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:427,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:430,1
    - Dst: imapc_storage_client_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:435,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:440,1
    - Dst: IMAPC_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:441,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:447,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:458,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:460,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:468,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:470,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:472,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:474,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:476,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - _storage
    - ns
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 422
    functionDepth: 11
    functionLinenumber: 422
    functionLinenumberEnd: 481
    functionName: imapc_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - IMAPC_HAS_FEATURE
    - p_array_init
    - IMAPC_STORAGE
    - imapc_storage_client_create
    - t_array_const_string_join
    - imapc_storage_client_register_untagged
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int imapc_storage_create(struct mail_storage *_storage,\n\t\t     struct
      mail_namespace *ns,\n\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_STORAGE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:485,1
    - Dst: imapc_client_logout
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:491,1
    - Dst: imapc_storage_client_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:493,1
    - Dst: index_storage_destroy
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 483
    functionDepth: 10
    functionLinenumber: 483
    functionLinenumberEnd: 495
    functionName: imapc_storage_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_client_logout
    - imapc_storage_client_unref
    - index_storage_destroy
    - IMAPC_STORAGE
    linkageType: ''
    returnType: void
    signature: void imapc_storage_destroy(struct mail_storage *_storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:503,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - client
    - name
    - callback
    argTypes:
    - struct imapc_storage_client*
    - char*
    - imapc_storage_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 506
    functionName: imapc_storage_client_register_untagged
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 3
    functionsReached:
    - i_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void imapc_storage_client_register_untagged(struct imapc_storage_client
      *client,\n\t\t\t\t\t    const char *name,\n\t\t\t\t\t    imapc_storage_callback_t
      *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:513,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:514,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:515,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:516,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:517,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - client
    - name
    argTypes:
    - struct imapc_storage_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 522
    functionName: imapc_storage_client_unregister_untagged
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_delete
    - i_unreached
    - array_foreach_idx
    - array_foreach_modifiable
    - i_free
    linkageType: ''
    returnType: void
    signature: "void imapc_storage_client_unregister_untagged(struct imapc_storage_client
      *client,\n\t\t\t\t\t      const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:531,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:532,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:539,1
    - Dst: IMAPC_STORAGE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:541,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:543,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:544,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:545,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:546,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:547,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:548,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:549,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:550,1
    - Dst: imapc_mailbox_register_callbacks
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 524
    functionDepth: 6
    functionLinenumber: 524
    functionLinenumberEnd: 554
    functionName: imapc_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - index_storage_mailbox_alloc
    - p_new
    - p_array_init
    - IMAPC_STORAGE
    - imapc_mailbox_register_callbacks
    - str_new
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nimapc_mailbox_alloc(struct mail_storage *storage,
      struct mailbox_list *list,\n\t\t    const char *vname, enum mailbox_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:559,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:561,1
    - Dst: imapc_list_storage_to_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 564
    functionName: imapc_mailbox_get_remote_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - imapc_list_storage_to_remote_name
    linkageType: ''
    returnType: char
    signature: char *imapc_mailbox_get_remote_name(struct imapc_mailbox *mbox)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:570,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:575,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:587,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:588,1
    - Dst: imapc_list_get_mailbox_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:591,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:592,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - box
    - auto_boxes
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 566
    functionDepth: 3
    functionLinenumber: 566
    functionLinenumberEnd: 602
    functionName: imapc_mailbox_exists
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imapc_list_get_mailbox_flags
    - mail_storage_copy_list_error
    - imapc_storage_client_handle_auth_failure
    - mailbox_is_autocreated
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_exists(struct mailbox *box, bool auto_boxes,\n\t\t
      \    enum mailbox_existence *existence_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:606,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 615
    functionName: imapc_mailbox_want_examine
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - IMAPC_BOX_HAS_FEATURE
    linkageType: ''
    returnType: bool
    signature: bool imapc_mailbox_want_examine(struct imapc_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mbox
    - error_r
    argTypes:
    - struct imapc_mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 627
    functionName: imapc_mailbox_verify_select
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imapc_mailbox_verify_select(struct imapc_mailbox *mbox, const
      char **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:636,1
    - Dst: imapc_mailbox_verify_select
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:641,1
    - Dst: imap_mailbox_select_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:642,1
    - Dst: imapc_client_mailbox_reconnect
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:647,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:648,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:652,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 629
    functionDepth: 6
    functionLinenumber: 629
    functionLinenumberEnd: 653
    functionName: imapc_mailbox_reopen_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imap_mailbox_select_finish
    - t_strdup_printf
    - imapc_mailbox_verify_select
    - imapc_client_mailbox_reconnect
    - i_assert
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_mailbox_reopen_callback(const struct imapc_command_reply
      *reply,\n\t\t\t      void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_msgmap_reset
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:663,1
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:663,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:669,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:687,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:689,1
    - Dst: imapc_mailbox_want_examine
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:690,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:691,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:692,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:694,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:695,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 655
    functionDepth: 4
    functionLinenumber: 655
    functionLinenumberEnd: 698
    functionName: imapc_mailbox_reopen
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_mailbox_cmd
    - imapc_client_mailbox_get_msgmap
    - imapc_mailbox_want_examine
    - imapc_mailbox_get_remote_name
    - imapc_msgmap_reset
    - imapc_command_sendf
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_reopen(void *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_verify_select
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:709,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:710,1
    - Dst: imap_mailbox_select_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:714,1
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:732,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:735,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:739,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:741,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:745,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 700
    functionDepth: 4
    functionLinenumber: 700
    functionLinenumberEnd: 746
    functionName: imapc_mailbox_open_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imap_mailbox_select_finish
    - imapc_copy_error_from_reply
    - imapc_mailbox_verify_select
    - imapc_storage_client_handle_auth_failure
    - mailbox_set_critical
    - mail_storage_set_internal_error
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_mailbox_open_callback(const struct imapc_command_reply
      *reply,\n\t\t\t    void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:751,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 748
    functionDepth: 10
    functionLinenumber: 748
    functionLinenumberEnd: 757
    functionName: imapc_mailbox_get_capabilities
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_client_get_capabilities
    - imapc_storage_client_handle_auth_failure
    linkageType: ''
    returnType: int
    signature: int imapc_mailbox_get_capabilities(struct imapc_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 768
    functionName: imapc_mailbox_get_extensions
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_get_extensions(struct imapc_mailbox *mbox)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:775,1
    - Dst: imapc_mailbox_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:777,1
    - Dst: imapc_mailbox_has_modseqs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:780,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:781,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:782,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:784,1
    - Dst: imapc_client_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:788,1
    - Dst: mailbox_get_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:789,1
    - Dst: imapc_client_mailbox_set_reopen_cb
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:790,1
    - Dst: imapc_mailbox_get_extensions
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:793,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:799,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:801,1
    - Dst: imapc_mailbox_want_examine
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:803,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:804,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:805,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:807,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:808,1
    - Dst: imapc_mailbox_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:812,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 770
    functionDepth: 11
    functionLinenumber: 770
    functionLinenumberEnd: 816
    functionName: imapc_mailbox_select
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mailbox_get_name
    - imapc_client_mailbox_cmd
    - imapc_command_set_flags
    - imapc_mailbox_get_capabilities
    - imapc_client_mailbox_open
    - imapc_mailbox_has_modseqs
    - imapc_mailbox_want_examine
    - imapc_command_sendf
    - imapc_mailbox_get_remote_name
    - array_clear
    - imapc_mailbox_run
    - imapc_client_mailbox_set_reopen_cb
    - array_is_created
    - i_assert
    - imapc_mailbox_get_extensions
    linkageType: ''
    returnType: int
    signature: int imapc_mailbox_select(struct imapc_mailbox *mbox)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:820,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:822,1
    - Dst: index_storage_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:824,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:836,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:838,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:849,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:849,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:851,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:853,1
    - Dst: imapc_mailbox_select
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:857,1
    - Dst: mailbox_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:858,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 818
    functionDepth: 12
    functionLinenumber: 818
    functionLinenumberEnd: 862
    functionName: imapc_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - IMAPC_MAILBOX
    - index_storage_mailbox_open
    - imapc_mailbox_select
    - t_strdup_printf
    - mailbox_close
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int imapc_mailbox_open(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:866,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct imapc_mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 864
    functionDepth: 1
    functionLinenumber: 864
    functionLinenumberEnd: 869
    functionName: imapc_mail_cache_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void imapc_mail_cache_free(struct imapc_mail_cache *cache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:873,1
    - Dst: imapc_mailbox_commit_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:876,1
    - Dst: imapc_mail_fetch_flush
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:877,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:884,1
    - Dst: imapc_untagged_fetch_ctx_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:885,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:886,1
    - Dst: imapc_client_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:889,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:890,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:891,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:893,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:894,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:895,1
    - Dst: imapc_mail_cache_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:896,1
    - Dst: index_storage_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 871
    functionDepth: 6
    functionLinenumber: 871
    functionLinenumberEnd: 898
    functionName: imapc_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_mail_cache_free
    - imapc_untagged_fetch_ctx_free
    - array_foreach_elem
    - index_storage_mailbox_close
    - imapc_client_mailbox_close
    - array_clear
    - imapc_mail_fetch_flush
    - IMAPC_MAILBOX
    - array_is_created
    - imapc_mailbox_commit_delayed_trans
    - array_free
    - mail_index_view_close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_close(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:905,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:908,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:912,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:915,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:918,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:919,1
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:921,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:922,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:924,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:925,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 900
    functionDepth: 11
    functionLinenumber: 900
    functionLinenumberEnd: 927
    functionName: imapc_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imapc_simple_run
    - t_strdup_printf
    - imapc_mailbox_get_remote_name
    - imapc_simple_context_init
    - IMAPC_MAILBOX
    - imapc_command_sendf
    - mailbox_list_get_hierarchy_sep
    - imapc_client_cmd
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_create(struct mailbox *box,\n\t\t     const struct
      mailbox_update *update ATTR_UNUSED,\n\t\t     bool directory)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:932,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:935,1
    - Dst: index_storage_mailbox_update
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:938,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 929
    functionDepth: 10
    functionLinenumber: 929
    functionLinenumberEnd: 939
    functionName: imapc_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_update
    - guid_128_is_empty
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_update(struct mailbox *box,\n\t\t\t\tconst struct
      mailbox_update *update)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:952,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:953,1
    - Dst: imapc_mailbox_name_equals
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:959,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:965,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:966,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:967,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:970,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:972,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:977,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:979,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:981,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:983,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:985,1
    - Dst: imapc_mailbox_has_modseqs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:986,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 29
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 941
    functionDepth: 2
    functionLinenumber: 941
    functionLinenumberEnd: 989
    functionName: imapc_untagged_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - imapc_mailbox_name_equals
    - str_to_uint32
    - strcasecmp
    - imapc_mailbox_has_modseqs
    - imap_arg_get_atom
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_status(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \ struct imapc_storage_client *client)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1005,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1006,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1009,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1013,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1014,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1015,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1018,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1019,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1024
    functionName: imapc_untagged_namespace
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - imap_arg_get_list
    - array_append_space
    - imap_arg_get_nstring
    - array_clear
    - N_ELEMENTS
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_namespace(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \    struct imapc_storage_client *client)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_find_command_by_tag
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1032,1
    - Dst: imapc_command_get_start_time
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1036,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - client
    - tag
    - detail_r
    argTypes:
    - struct imapc_storage_client*
    - char*
    - struct mail_storage_progress_details*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1026
    functionDepth: 1
    functionLinenumber: 1026
    functionLinenumberEnd: 1042
    functionName: imapc_parse_inprogress_start_time
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_command_get_start_time
    - imapc_client_find_command_by_tag
    linkageType: ''
    returnType: void
    signature: "void imapc_parse_inprogress_start_time(struct imapc_storage_client
      *client,\n\t\t\t\t  const char *tag,\n\t\t\t\t  struct mail_storage_progress_details
      *detail_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1051,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1052,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1056,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1057,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1061,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1062,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1066,1
    - Dst: imapc_parse_inprogress_start_time
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1067,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 3
    argNames:
    - reply
    - client
    - detail_r
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    - struct mail_storage_progress_details*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1044
    functionDepth: 2
    functionLinenumber: 1044
    functionLinenumberEnd: 1070
    functionName: imapc_parse_inprogress
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imap_arg_get_list_full
    - str_to_uint32
    - imapc_parse_inprogress_start_time
    - imap_arg_get_atom
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_parse_inprogress(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \  struct imapc_storage_client *client,\n\t\t\t\t   struct mail_storage_progress_details
      *detail_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1078,1
    - Dst: imapc_parse_inprogress
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1085,1
    - Dst: struct mail_storage*::callbacks::notify_progress
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1086,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1072
    functionDepth: 4
    functionLinenumber: 1072
    functionLinenumberEnd: 1087
    functionName: imapc_untagged_inprogress
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_parse_inprogress
    - strcasecmp
    - struct mail_storage*::callbacks::notify_progress
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_inprogress(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \     struct imapc_storage_client *client)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_is_ssl
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1089
    functionDepth: 1
    functionLinenumber: 1089
    functionLinenumberEnd: 1091
    functionName: response_code_forward_alert
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_client_is_ssl
    linkageType: ''
    returnType: bool
    signature: bool response_code_forward_alert(const struct imapc_storage_client
      *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1101,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1103,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1105,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1110,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1112,1
    - Dst: struct imapc_forwarded_response_codes*::forward
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1115,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1116,1
    - Dst: imap_write_args
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1117,1
    - Dst: notify
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1121,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1121,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 19
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1125
    functionName: imapc_untagged_respcodes
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - imap_write_args
    - notify
    - strcasecmp
    - N_ELEMENTS
    - struct imapc_forwarded_response_codes*::forward
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_respcodes(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \    struct imapc_storage_client *client)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_get_open_status
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1131,1
    - Dst: imapc_mailbox_has_modseqs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1145,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - mbox
    - items
    - status_r
    argTypes:
    - struct imapc_mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1127
    functionDepth: 3
    functionLinenumber: 1127
    functionLinenumberEnd: 1150
    functionName: imapc_mailbox_get_selected_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_has_modseqs
    - index_storage_get_open_status
    linkageType: ''
    returnType: void
    signature: "void imapc_mailbox_get_selected_status(struct imapc_mailbox *mbox,\n\t\t\t\t\t
      \     enum mailbox_status_items items,\n\t\t\t\t\t      struct mailbox_status
      *status_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_delete
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1152
    functionDepth: 14
    functionLinenumber: 1152
    functionLinenumberEnd: 1156
    functionName: imapc_mailbox_delete
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_delete
    linkageType: ''
    returnType: int
    signature: int imapc_mailbox_delete(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1161,1
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1165,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1167,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1171,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1172,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1177,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1178,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1158
    functionDepth: 11
    functionLinenumber: 1158
    functionLinenumberEnd: 1183
    functionName: imapc_server_unselect
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_simple_run
    - imapc_simple_context_init
    - imapc_client_get_capabilities
    - imapc_command_sendf
    - imapc_client_cmd
    linkageType: ''
    returnType: int
    signature: int imapc_server_unselect(struct imapc_storage_client *client)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1189,1
    - Dst: imapc_mailbox_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1194,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1197,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1199,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1202,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1204,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1206,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1208,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1210,1
    - Dst: imapc_mailbox_has_modseqs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1212,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1213,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1215,1
    - Dst: imapc_client_is_server_selected
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1220,1
    - Dst: mailbox_get_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1221,1
    - Dst: imapc_server_unselect
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1227,1
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1231,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1234,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1236,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1237,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1238,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1238,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1239,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1185
    functionDepth: 12
    functionLinenumber: 1185
    functionLinenumberEnd: 1243
    functionName: imapc_mailbox_run_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - mailbox_get_name
    - t_str_new
    - str_c
    - str_len
    - imapc_simple_run
    - imapc_mailbox_get_capabilities
    - imapc_mailbox_has_modseqs
    - imapc_simple_context_init
    - imapc_mailbox_get_remote_name
    - imapc_server_unselect
    - imapc_client_is_server_selected
    - IMAPC_MAILBOX
    - str_append
    - imapc_command_sendf
    - imapc_client_cmd
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_run_status(struct mailbox *box,\n\t\t\t\t    enum
      mailbox_status_items items,\n\t\t\t\t    struct mailbox_status *status_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1249,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1252,1
    - Dst: imapc_mailbox_get_selected_status
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1256,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1261,1
    - Dst: imapc_mailbox_get_selected_status
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1263,1
    - Dst: imapc_mailbox_run_status
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1265,1
    - Dst: index_storage_get_status
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1272,1
    - Dst: imapc_mailbox_run_status
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1281,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1245
    functionDepth: 13
    functionLinenumber: 1245
    functionLinenumberEnd: 1285
    functionName: imapc_mailbox_get_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_get_selected_status
    - mailbox_open
    - imapc_mailbox_run_status
    - IMAPC_BOX_HAS_FEATURE
    - IMAPC_MAILBOX
    - index_storage_get_status
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_get_status(struct mailbox *box,\n\t\t\t\t    enum
      mailbox_status_items items,\n\t\t\t\t    struct mailbox_status *status_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1296,1
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1303,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1304,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1306,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1307,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1308,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1287
    functionDepth: 11
    functionLinenumber: 1287
    functionLinenumberEnd: 1314
    functionName: imapc_mailbox_get_namespaces
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_simple_run
    - imapc_command_send
    - imapc_mailbox_get_capabilities
    - imapc_simple_context_init
    - imapc_client_cmd
    linkageType: ''
    returnType: int
    signature: int imapc_mailbox_get_namespaces(struct imapc_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1323,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1324,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - storage
    - remote_name
    argTypes:
    - struct imapc_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1316
    functionDepth: 1
    functionLinenumber: 1316
    functionLinenumberEnd: 1333
    functionName: imapc_namespace_find_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - strlen
    - str_begins_with
    - array_foreach
    linkageType: ''
    returnType: struct imapc_namespace
    signature: "struct imapc_namespace *\nimapc_namespace_find_mailbox(struct imapc_storage
      *storage,\n\t\t\t     const char *remote_name)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1339,1
    - Dst: mail_generate_guid_128_hash
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1345,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1346,1
    - Dst: imapc_mailbox_get_namespaces
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1349,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1352,1
    - Dst: imapc_namespace_find_mailbox
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1353,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1358,1
    - Dst: index_mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1361,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1335
    functionDepth: 12
    functionLinenumber: 1335
    functionLinenumberEnd: 1365
    functionName: imapc_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - imapc_namespace_find_mailbox
    - index_mailbox_get_metadata
    - imapc_mailbox_get_remote_name
    - mail_generate_guid_128_hash
    - IMAPC_MAILBOX
    - imapc_mailbox_get_namespaces
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_get_metadata(struct mailbox *box,\n\t\t\t\t      enum
      mailbox_metadata_items items,\n\t\t\t\t      struct mailbox_metadata *metadata_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1376,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1378,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1380,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1367
    functionDepth: 4
    functionLinenumber: 1367
    functionLinenumberEnd: 1383
    functionName: imapc_noop_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_critical
    - mail_storage_set_internal_error
    - imapc_copy_error_from_reply
    linkageType: ''
    returnType: void
    signature: "void imapc_noop_callback(const struct imapc_command_reply *reply,\n\t\t\t\tvoid
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1389,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1385
    functionDepth: 6
    functionLinenumber: 1385
    functionLinenumberEnd: 1392
    functionName: imapc_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_client_mailbox_cmd
    - imapc_command_send
    linkageType: ''
    returnType: void
    signature: void imapc_idle_timeout(struct imapc_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_noop_callback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1400,1
    - Dst: imapc_client_mailbox_idle
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1394
    functionDepth: 2
    functionLinenumber: 1394
    functionLinenumberEnd: 1403
    functionName: imapc_idle_noop_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_client_mailbox_idle
    - imapc_noop_callback
    linkageType: ''
    returnType: void
    signature: "void imapc_idle_noop_callback(const struct imapc_command_reply *reply,\n\t\t\t\t
      \    void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1407,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1412,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1421,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1423,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1427,1
    - Dst: imapc_client_is_running
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1427,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1405
    functionDepth: 6
    functionLinenumber: 1405
    functionLinenumberEnd: 1432
    functionName: imapc_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_client_mailbox_cmd
    - imapc_command_send
    - timeout_add
    - imapc_client_is_running
    - IMAPC_MAILBOX
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imapc_notify_changes(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1436,1
    - Dst: mail_index_view_is_inconsistent
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1439,1
    - Dst: imapc_client_mailbox_is_opened
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1434
    functionDepth: 2
    functionLinenumber: 1434
    functionLinenumberEnd: 1444
    functionName: imapc_is_inconsistent
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_client_mailbox_is_opened
    - mail_index_view_is_inconsistent
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: bool
    signature: bool imapc_is_inconsistent(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_transaction_save_commit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1470,1
    - Dst: index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c:1471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1466
    functionDepth: 4
    functionLinenumber: 1466
    functionLinenumberEnd: 1473
    functionName: imapc_mailbox_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.c
    functionUses: 0
    functionsReached:
    - imapc_transaction_save_commit
    - index_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_transaction_commit(struct mailbox_transaction_context
      *t,\n\t\t\t\t struct mail_transaction_commit_changes *changes_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:24,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:25,1
    - Dst: index_mail_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - t
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 16
    functionDepth: 3
    functionLinenumber: 16
    functionLinenumberEnd: 30
    functionName: imapc_mail_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_init
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\nimapc_mail_alloc(struct mailbox_transaction_context
      *t,\n\t\t enum mail_fetch_field wanted_fields,\n\t\t struct mailbox_header_lookup_ctx
      *wanted_headers)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:34,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:45,1
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:50,1
    - Dst: imapc_msgmap_uid_to_rseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:51,1
    - Dst: imapc_mailbox_noop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:56,1
    - Dst: imapc_msgmap_uid_to_rseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:62,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 32
    functionDepth: 12
    functionLinenumber: 32
    functionLinenumberEnd: 63
    functionName: imapc_mail_is_expunged
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_seq
    - imapc_mailbox_noop
    - imapc_client_mailbox_get_msgmap
    - IMAPC_MAILBOX
    - imapc_msgmap_uid_to_rseq
    linkageType: ''
    returnType: bool
    signature: bool imapc_mail_is_expunged(struct mail *_mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:67,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:68,1
    - Dst: imapc_mail_is_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:71,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:72,1
    - Dst: imapc_client_mailbox_is_opened
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:73,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:75,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 65
    functionDepth: 13
    functionLinenumber: 65
    functionLinenumberEnd: 95
    functionName: imapc_mail_failed
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - IMAPC_MAILBOX
    - mail_set_critical
    - IMAPC_MAIL
    - imapc_mail_is_expunged
    - mail_storage_set_internal_error
    - imapc_client_mailbox_is_opened
    linkageType: ''
    returnType: int
    signature: int imapc_mail_failed(struct mail *mail, const char *field)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:99,1
    - Dst: imapc_mailbox_has_modseqs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:105,1
    - Dst: index_mail_get_modseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:106,1
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:108,1
    - Dst: imapc_msgmap_uid_to_rseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:109,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 115
    functionName: imapc_mail_get_modseq
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - array_get
    - imapc_client_mailbox_get_msgmap
    - imapc_mailbox_has_modseqs
    - index_mail_get_modseq
    - IMAPC_MAILBOX
    - imapc_msgmap_uid_to_rseq
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t imapc_mail_get_modseq(struct mail *_mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:119,1
    - Dst: index_mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:122,1
    - Dst: imapc_mail_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:126,1
    - Dst: imapc_mail_failed
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 117
    functionDepth: 14
    functionLinenumber: 117
    functionLinenumberEnd: 138
    functionName: imapc_mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_get_received_date
    - imapc_mail_fetch
    - imapc_mail_failed
    linkageType: ''
    returnType: int
    signature: int imapc_mail_get_received_date(struct mail *_mail, time_t *date_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:142,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:143,1
    - Dst: index_mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:146,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:149,1
    - Dst: imapc_mail_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:152,1
    - Dst: imapc_mail_failed
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:155,1
    - Dst: imapc_mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:159,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 140
    functionDepth: 15
    functionLinenumber: 140
    functionLinenumberEnd: 165
    functionName: imapc_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_fetch
    - index_mail_get_save_date
    - INDEX_MAIL
    - HAS_NO_BITS
    - imapc_mail_failed
    - IMAPC_MAILBOX
    - imapc_mail_get_received_date
    linkageType: ''
    returnType: int
    signature: int imapc_mail_get_save_date(struct mail *_mail, time_t *date_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:169,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:170,1
    - Dst: index_mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:177,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:183,1
    - Dst: imapc_mail_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:188,1
    - Dst: imapc_mail_failed
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:191,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:202,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:204,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:205,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:207,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:210,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:211,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:212,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 167
    functionDepth: 14
    functionLinenumber: 167
    functionLinenumberEnd: 217
    functionName: imapc_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_fetch
    - index_mail_get_physical_size
    - IMAPC_BOX_HAS_FEATURE
    - mail_set_critical
    - INDEX_MAIL
    - i_stream_get_size
    - i_stream_seek
    - imapc_mail_failed
    - IMAPC_MAILBOX
    - mail_get_stream
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: int
    signature: int imapc_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:221,1
    - Dst: imapc_mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 219
    functionDepth: 15
    functionLinenumber: 219
    functionLinenumberEnd: 228
    functionName: imapc_mail_get_virtual_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - imapc_mail_get_physical_size
    linkageType: ''
    returnType: int
    signature: int imapc_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:235,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:236,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:241,1
    - Dst: index_mail_get_header_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:243,1
    - Dst: index_mail_get_header_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:248,1
    - Dst: imapc_mail_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:254,1
    - Dst: index_mail_get_header_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - _mail
    - headers
    - stream_r
    argTypes:
    - struct mail*
    - struct mailbox_header_lookup_ctx*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 230
    functionDepth: 17
    functionLinenumber: 230
    functionLinenumberEnd: 258
    functionName: imapc_mail_get_header_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_fetch
    - index_mail_get_header_stream
    - IMAPC_BOX_HAS_FEATURE
    - IMAPC_MAIL
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: int
    signature: "int imapc_mail_get_header_stream(struct mail *_mail,\n\t\t\t     struct
      mailbox_header_lookup_ctx *headers,\n\t\t\t     struct istream **stream_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:273,1
    - Dst: mail_get_header_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:274,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:275,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:279,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:280,1
    - Dst: index_mail_get_headers
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - _mail
    - field
    - decode_to_utf8
    - value_r
    argTypes:
    - struct mail*
    - char*
    - bool
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 260
    functionDepth: 18
    functionLinenumber: 260
    functionLinenumberEnd: 283
    functionName: imapc_mail_get_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_header_lookup_unref
    - mail_get_header_stream
    - i_stream_skip
    - mailbox_header_lookup_init
    - index_mail_get_headers
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int imapc_mail_get_headers(struct mail *_mail, const char *field,\n\t\t
      \      bool decode_to_utf8, const char *const **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mail_get_headers
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - _mail
    - field
    - decode_to_utf8
    - value_r
    argTypes:
    - struct mail*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 285
    functionDepth: 19
    functionLinenumber: 285
    functionLinenumberEnd: 297
    functionName: imapc_mail_get_first_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_get_headers
    linkageType: ''
    returnType: int
    signature: "int imapc_mail_get_first_header(struct mail *_mail, const char *field,\n\t\t\t
      \   bool decode_to_utf8, const char **value_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:304,1
    - Dst: index_mail_close_streams
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:311,1
    - Dst: imapc_mail_try_init_stream_from_cache
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:320,1
    - Dst: mail_set_aborted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:325,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:331,1
    - Dst: imapc_mail_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:337,1
    - Dst: imapc_mail_failed
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:341,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:343,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:347,1
    - Dst: imapc_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:348,1
    - Dst: index_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:352,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 5
    argNames:
    - _mail
    - get_body
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct mail*
    - bool
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 299
    functionDepth: 17
    functionLinenumber: 299
    functionLinenumberEnd: 354
    functionName: imapc_mail_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_fetch
    - mail_set_expunged
    - mail_set_aborted
    - imapc_mail_try_init_stream_from_cache
    - imapc_mail_init_stream
    - i_stream_create_from_data
    - index_mail_close_streams
    - index_mail_init_stream
    - IMAPC_MAIL
    - imapc_mail_failed
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int imapc_mail_get_stream(struct mail *_mail, bool get_body,\n\t\t
      \     struct message_size *hdr_size,\n\t\t      struct message_size *body_size,
      struct istream **stream_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_field_exists
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - mail
    - headers
    argTypes:
    - struct index_mail*
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 356
    functionDepth: 7
    functionLinenumber: 356
    functionLinenumberEnd: 368
    functionName: imapc_mail_has_headers_in_cache
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - mail_cache_field_exists
    linkageType: ''
    returnType: bool
    signature: "bool imapc_mail_has_headers_in_cache(struct index_mail *mail,\n\t\t\t\t
      \    struct mailbox_header_lookup_ctx *headers)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:373,1
    - Dst: index_mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:381,1
    - Dst: index_mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:383,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:384,1
    - Dst: index_mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:386,1
    - Dst: index_mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:392,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:393,1
    - Dst: imapc_mail_get_cached_guid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:397,1
    - Dst: index_mail_get_cached_body
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:399,1
    - Dst: index_mail_get_cached_bodystructure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:401,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:404,1
    - Dst: imapc_mail_has_headers_in_cache
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:406,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:411,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:414,1
    - Dst: imapc_mail_has_headers_in_cache
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:416,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:418,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 29
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 370
    functionDepth: 14
    functionLinenumber: 370
    functionLinenumberEnd: 420
    functionName: imapc_mail_update_access_parts
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_get_cached_guid
    - imapc_mail_has_headers_in_cache
    - index_mail_get_physical_size
    - index_mail_get_cached_body
    - IMAPC_BOX_HAS_FEATURE
    - mailbox_header_lookup_unref
    - index_mail_get_received_date
    - index_mail_get_save_date
    - mailbox_header_lookup_init
    - HAS_NO_BITS
    - IMAPC_MAILBOX
    - index_mail_get_cached_bodystructure
    linkageType: ''
    returnType: void
    signature: void imapc_mail_update_access_parts(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:424,1
    - Dst: index_mail_set_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:428,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:429,1
    - Dst: imapc_mail_prefetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - _mail
    - seq
    - saving
    argTypes:
    - struct mail*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 422
    functionDepth: 12
    functionLinenumber: 422
    functionLinenumberEnd: 439
    functionName: imapc_mail_set_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_set_seq
    - IMAPC_MAIL
    - IMAPC_BOX_HAS_FEATURE
    - imapc_mail_prefetch
    linkageType: ''
    returnType: void
    signature: void imapc_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:446,1
    - Dst: index_mail_add_temp_wanted_fields
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:448,1
    - Dst: imapc_mail_update_access_parts
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:450,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _mail
    - fields
    - headers
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 441
    functionDepth: 15
    functionLinenumber: 441
    functionLinenumberEnd: 451
    functionName: imapc_mail_add_temp_wanted_fields
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - imapc_mail_update_access_parts
    - index_mail_add_temp_wanted_fields
    linkageType: ''
    returnType: void
    signature: "void imapc_mail_add_temp_wanted_fields(struct mail *_mail,\n\t\t\t\t
      \ enum mail_fetch_field fields,\n\t\t\t\t  struct mailbox_header_lookup_ctx
      *headers)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:455,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:456,1
    - Dst: imapc_mail_fetch_flush
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:460,1
    - Dst: imapc_mailbox_run_nofetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:462,1
    - Dst: index_mail_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:465,1
    - Dst: imapc_mail_cache_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:469,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:479,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:480,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 453
    functionDepth: 15
    functionLinenumber: 453
    functionLinenumberEnd: 485
    functionName: imapc_mail_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_cache_free
    - index_mail_close
    - i_close_fd
    - imapc_mailbox_run_nofetch
    - IMAPC_MAIL
    - imapc_mail_fetch_flush
    - IMAPC_MAILBOX
    - buffer_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_mail_close(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:498,1
    - Dst: mail_get_hdr_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:501,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:503,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:505,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:506,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:507,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:508,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:510,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:511,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:512,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:514,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - imail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 517
    functionName: imapc_mail_get_hdr_hash
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - sha1_result
    - i_stream_create_limit
    - mail_get_hdr_stream
    - i_stream_skip
    - binary_to_hex
    - i_stream_seek
    - i_stream_unref
    - sha1_init
    - i_assert
    - i_stream_read_more
    - sha1_loop
    linkageType: ''
    returnType: int
    signature: int imapc_mail_get_hdr_hash(struct index_mail *imail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:521,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:527,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:530,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:531,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:536,1
    - Dst: mail_cache_lookup_field
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:537,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:539,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 519
    functionDepth: 13
    functionLinenumber: 519
    functionLinenumberEnd: 543
    functionName: imapc_mail_get_cached_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 1
    functionsReached:
    - str_c
    - strlen
    - mail_cache_lookup_field
    - index_mail_cache_add_idx
    - INDEX_MAIL
    - mail_cache_field_can_add
    - str_new
    linkageType: ''
    returnType: bool
    signature: bool imapc_mail_get_cached_guid(struct mail *_mail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:547,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:548,1
    - Dst: imapc_mail_get_cached_guid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:552,1
    - Dst: imapc_mail_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:559,1
    - Dst: imapc_mail_failed
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:562,1
    - Dst: imapc_mail_get_hdr_hash
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:567,1
    - Dst: index_mail_cache_add_idx
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:571,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:572,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - _mail
    - value_r
    argTypes:
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 545
    functionDepth: 14
    functionLinenumber: 545
    functionLinenumberEnd: 575
    functionName: imapc_mail_get_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_get_cached_guid
    - imapc_mail_fetch
    - imapc_mail_get_hdr_hash
    - strlen
    - index_mail_cache_add_idx
    - INDEX_MAIL
    - imapc_mail_failed
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: int
    signature: int imapc_mail_get_guid(struct mail *_mail, const char **value_r)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:581,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:582,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:587,1
    - Dst: imapc_mail_get_guid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:593,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:595,1
    - Dst: imapc_mail_get_guid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:597,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:599,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:600,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:605,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:609,1
    - Dst: index_mail_get_cached_body
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:612,1
    - Dst: imapc_mail_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:614,1
    - Dst: imapc_mail_failed
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:617,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:623,1
    - Dst: index_mail_get_cached_bodystructure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:626,1
    - Dst: imapc_mail_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:628,1
    - Dst: imapc_mail_failed
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:631,1
    - Dst: index_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c:640,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 577
    functionDepth: 20
    functionLinenumber: 577
    functionLinenumberEnd: 641
    functionName: imapc_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.c
    functionUses: 0
    functionsReached:
    - imapc_mail_fetch
    - index_mail_get_cached_body
    - IMAPC_BOX_HAS_FEATURE
    - mail_set_critical
    - imapc_mail_get_guid
    - index_mail_get_cached_bodystructure
    - INDEX_MAIL
    - imapc_mail_failed
    - IMAPC_MAILBOX
    - str_to_uint64
    - index_mail_get_special
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int imapc_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t       const char **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:25,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:26,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:27,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:28,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:30,1
    - Dst: mail_index_mark_corrupted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:35,1
    - Dst: imapc_client_mailbox_reconnect
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - mbox
    - reason
    argTypes:
    - struct imapc_mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 19
    functionDepth: 6
    functionLinenumber: 19
    functionLinenumberEnd: 41
    functionName: imapc_mailbox_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - va_start
    - mail_index_mark_corrupted
    - t_strdup_printf
    - t_strdup_vprintf
    - imapc_client_mailbox_reconnect
    - mail_storage_set_internal_error
    - va_end
    linkageType: ''
    returnType: void
    signature: "void imapc_mailbox_set_corrupted(struct imapc_mailbox *mbox,\n\t\t\t\t
      const char *reason, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: imapc_mailbox_get_sync_view
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_index_view_open
    linkageType: ''
    returnType: struct mail_index_view
    signature: 'struct mail_index_view *

      imapc_mailbox_get_sync_view(struct imapc_mailbox *mbox)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:57,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:60,1
    - Dst: imapc_mailbox_get_sync_view
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:60,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:63,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:66,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 70
    functionName: imapc_mailbox_init_delayed_trans
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_begin
    - mail_index_transaction_open_updated_view
    - imapc_mailbox_get_sync_view
    - mail_cache_get_transaction
    - mail_cache_view_open
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_init_delayed_trans(struct imapc_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_get_sync_view
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:74,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:81,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:84,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:85,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:86,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:87,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:89,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:90,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 94
    functionName: imapc_mailbox_commit_delayed_expunges
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_index_lookup_seq
    - seq_range_array_iter_init
    - mailbox_set_index_error
    - imapc_mailbox_get_sync_view
    - array_clear
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: int imapc_mailbox_commit_delayed_expunges(struct imapc_mailbox *mbox)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:104,1
    - Dst: mail_index_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:109,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:111,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:112,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:119,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:121,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:126,1
    - Dst: imapc_mailbox_commit_delayed_expunges
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:127,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:132,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:133,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:134,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:135,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - mbox
    - force
    - changes_r
    argTypes:
    - struct imapc_mailbox*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 137
    functionName: imapc_mailbox_commit_delayed_trans
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 1
    functionsReached:
    - mail_cache_view_close
    - imapc_mailbox_commit_delayed_expunges
    - mail_index_transaction_commit
    - mailbox_set_index_error
    - array_count
    - mail_index_transaction_rollback
    - i_assert
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_commit_delayed_trans(struct imapc_mailbox *mbox,\n\t\t\t\t
      \      bool force, bool *changes_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:141,1
    - Dst: struct imapc_mailbox*::box::notify_callback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 144
    functionName: imapc_mailbox_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - struct imapc_mailbox*::box::notify_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_idle_timeout(struct imapc_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:152,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:154,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 158
    functionName: imapc_mailbox_idle_notify
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - timeout_add_short
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_idle_notify(struct imapc_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:165,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:166,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:167,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mbox
    - uid
    argTypes:
    - struct imapc_mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 178
    functionName: imapc_mailbox_index_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - mail_index_expunge
    - mail_index_lookup_seq
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_index_expunge(struct imapc_mailbox *mbox, uint32_t
      uid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:187,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:194,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:196,1
    - Dst: imapc_mailbox_index_expunge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:202,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 208
    functionName: imapc_mailbox_fetch_state_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_index_expunge
    - i_assert
    - mail_index_view_get_messages_count
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_fetch_state_finish(struct imapc_mailbox *mbox)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:218,1
    - Dst: imapc_mailbox_fetch_state_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:222,1
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:225,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:228,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:232,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 210
    functionDepth: 4
    functionLinenumber: 210
    functionLinenumberEnd: 236
    functionName: imapc_mailbox_fetch_state_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - imapc_copy_error_from_reply
    - imapc_mailbox_fetch_state_finish
    - mail_storage_set_critical
    - mail_storage_set_internal_error
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_mailbox_fetch_state_callback(const struct imapc_command_reply
      *reply,\n\t\t\t\t   void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_init_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:243,1
    - Dst: imapc_mailbox_fetch_state_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:244,1
    - Dst: imapc_mailbox_fetch_state
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 250
    functionName: imap_mailbox_select_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 2
    functionsReached:
    - imapc_mailbox_fetch_state
    - imapc_mailbox_init_delayed_trans
    - imapc_mailbox_fetch_state_finish
    linkageType: ''
    returnType: void
    signature: void imap_mailbox_select_finish(struct imapc_mailbox *mbox)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:269,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:270,1
    - Dst: imapc_mailbox_has_modseqs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:271,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:272,1
    - Dst: mail_index_modseq_enable
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:273,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:275,1
    - Dst: mail_index_is_in_memory
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:278,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:281,1
    - Dst: imapc_list_get_mailbox_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:284,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:287,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:290,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:292,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:300,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:303,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:303,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - mbox
    - first_uid
    argTypes:
    - struct imapc_mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 252
    functionDepth: 6
    functionLinenumber: 252
    functionLinenumberEnd: 305
    functionName: imapc_mailbox_fetch_state
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 1
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_mailbox_cmd
    - t_str_new
    - str_printfa
    - mail_index_modseq_enable
    - imapc_list_get_mailbox_flags
    - IMAPC_BOX_HAS_FEATURE
    - str_append_c
    - str_c
    - imapc_command_send
    - imapc_mailbox_has_modseqs
    - mail_index_is_in_memory
    - str_append
    linkageType: ''
    returnType: bool
    signature: bool imapc_mailbox_fetch_state(struct imapc_mailbox *mbox, uint32_t
      first_uid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX_IS_FULLY_SELECTED
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:316,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:317,1
    - Dst: imapc_mailbox_get_sync_view
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:328,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:332,1
    - Dst: imapc_mailbox_idle_notify
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:336,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 337
    functionName: imapc_untagged_exists
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_idle_notify
    - IMAPC_MAILBOX_IS_FULLY_SELECTED
    - IMAPC_BOX_HAS_FEATURE
    - mail_index_get_header
    - imapc_mailbox_get_sync_view
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_exists(const struct imapc_untagged_reply *reply,\n\t\t
      \     struct imapc_mailbox *mbox)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:345,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - kw
    - kw_arr
    argTypes:
    - struct mail_keywords*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 359
    functionName: keywords_are_equal
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool keywords_are_equal(struct mail_keywords *kw,\n\t\t\t       const
      ARRAY_TYPE(keyword_indexes) *kw_arr)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:387,1
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:395,1
    - Dst: imapc_msgmap_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:396,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:398,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:399,1
    - Dst: imapc_msgmap_uid_to_rseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:407,1
    - Dst: imapc_msgmap_uidnext
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:409,1
    - Dst: imapc_msgmap_rseq_to_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:420,1
    - Dst: imapc_mailbox_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:422,1
    - Dst: imapc_msgmap_uid_to_rseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:435,1
    - Dst: imapc_mailbox_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:436,1
    - Dst: imapc_msgmap_uidnext
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:445,1
    - Dst: imapc_mailbox_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:446,1
    - Dst: imapc_msgmap_uidnext
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:449,1
    - Dst: imapc_msgmap_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:453,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:455,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:460,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 54
    argCount: 6
    argNames:
    - mbox
    - rseq
    - fetch_uid
    - lseq_r
    - uid_r
    - new_message_r
    argTypes:
    - struct imapc_mailbox*
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 361
    functionDepth: 7
    functionLinenumber: 361
    functionLinenumberEnd: 471
    functionName: imapc_mailbox_msgmap_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - imapc_msgmap_append
    - mail_index_append
    - IMAPC_BOX_HAS_FEATURE
    - imapc_msgmap_uidnext
    - imapc_msgmap_rseq_to_uid
    - mail_index_get_header
    - imapc_client_mailbox_get_msgmap
    - imapc_mailbox_set_corrupted
    - imapc_msgmap_count
    - imapc_msgmap_uid_to_rseq
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_msgmap_update(struct imapc_mailbox *mbox,\n\t\t\t
      \   uint32_t rseq, uint32_t fetch_uid,\n\t\t\t    uint32_t *lseq_r, uint32_t
      *uid_r,\n\t\t\t    bool *new_message_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:477,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:479,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:482,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:483,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - mbox
    - remote_name
    argTypes:
    - struct imapc_mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 488
    functionName: imapc_mailbox_name_equals
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 3
    functionsReached:
    - strcmp
    - imapc_mailbox_get_remote_name
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool imapc_mailbox_name_equals(struct imapc_mailbox *mbox,\n\t\t\t
      \      const char *remote_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:493,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 498
    functionName: imapc_untagged_fetch_ctx_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct imapc_untagged_fetch_ctx
    signature: 'struct imapc_untagged_fetch_ctx *

      imapc_untagged_fetch_ctx_create(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:505,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct imapc_untagged_fetch_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 508
    functionName: imapc_untagged_fetch_ctx_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 1
    functionsReached:
    - i_assert
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void imapc_untagged_fetch_ctx_free(struct imapc_untagged_fetch_ctx
      **_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:515,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:523,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:525,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:529,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:530,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:537,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:540,1
    - Dst: mail_index_keywords_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:541,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:542,1
    - Dst: keywords_are_equal
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:543,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:544,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:547,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - mbox
    - ctx
    - view
    - lseq
    argTypes:
    - struct imapc_mailbox*
    - struct imapc_untagged_fetch_ctx*
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 510
    functionDepth: 4
    functionLinenumber: 510
    functionLinenumberEnd: 548
    functionName: imapc_untagged_fetch_update_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_index_update_keywords
    - mail_index_update_flags
    - array_push_back
    - array_front
    - mail_index_keywords_unref
    - t_array_init
    - mail_index_lookup
    - ARRAY_TYPE
    - array_append_zero
    - mail_index_lookup_keywords
    - mail_index_keywords_create
    - keywords_are_equal
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_fetch_update_flags(struct imapc_mailbox *mbox,\n\t\t\t\t
      \      struct imapc_untagged_fetch_ctx *ctx,\n\t\t\t\t       struct mail_index_view
      *view,\n\t\t\t\t       uint32_t lseq)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_init_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:557,1
    - Dst: imapc_mailbox_msgmap_update
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:558,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:569,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:572,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:585,1
    - Dst: imapc_mailbox_index_expunge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:587,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:590,1
    - Dst: imapc_untagged_fetch_update_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:597,1
    - Dst: mail_index_modseq_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:602,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:603,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:604,1
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:607,1
    - Dst: mail_cache_field_can_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:611,1
    - Dst: mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:613,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:614,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 3
    argNames:
    - mbox
    - ctx
    - rseq
    argTypes:
    - struct imapc_mailbox*
    - struct imapc_untagged_fetch_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 550
    functionDepth: 12
    functionLinenumber: 550
    functionLinenumberEnd: 618
    functionName: imapc_untagged_fetch_handle
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - imapc_mailbox_init_delayed_trans
    - mail_index_lookup_uid
    - ENUM_NEGATE
    - mail_index_lookup_seq
    - strlen
    - imapc_mailbox_index_expunge
    - mail_index_modseq_lookup
    - mail_index_update_modseq
    - mail_cache_field_can_add
    - imapc_mailbox_msgmap_update
    - mail_cache_add
    - imapc_untagged_fetch_update_flags
    - i_assert
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: bool
    signature: "bool imapc_untagged_fetch_handle(struct imapc_mailbox *mbox,\n\t\t\t\t\tstruct
      imapc_untagged_fetch_ctx *ctx,\n\t\t\t\t\tuint32_t rseq)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:630,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:634,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:635,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:636,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:638,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:639,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:642,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:645,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:648,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:650,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:652,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:655,1
    - Dst: imapc_mailbox_has_modseqs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:656,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:658,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:660,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:661,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:664,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:666,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:668,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:669,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:670,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:673,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:675,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:681,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 50
    argCount: 3
    argNames:
    - mbox
    - ctx
    - list
    argTypes:
    - struct imapc_mailbox*
    - struct imapc_untagged_fetch_ctx*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 620
    functionDepth: 2
    functionLinenumber: 620
    functionLinenumberEnd: 687
    functionName: imapc_untagged_fetch_parse
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - imap_arg_get_list
    - str_to_uint64
    - p_array_init
    - IMAPC_BOX_HAS_FEATURE
    - array_push_back
    - str_to_uint32
    - strcasecmp
    - imap_parse_system_flag
    - imapc_mailbox_has_modseqs
    - imap_arg_get_atom
    - imap_arg_get_astring
    linkageType: ''
    returnType: bool
    signature: "bool imapc_untagged_fetch_parse(struct imapc_mailbox *mbox,\n\t\t\t\t
      \      struct imapc_untagged_fetch_ctx *ctx,\n\t\t\t\t       const struct imap_arg
      *list)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:697,1
    - Dst: IMAPC_MAILBOX_IS_FULLY_SELECTED
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:699,1
    - Dst: imapc_untagged_fetch_ctx_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:706,1
    - Dst: imapc_untagged_fetch_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:707,1
    - Dst: imapc_untagged_fetch_ctx_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:708,1
    - Dst: imapc_untagged_fetch_handle
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:712,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:715,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:716,1
    - Dst: imapc_mail_fetch_update
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:718,1
    - Dst: imapc_untagged_fetch_ctx_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:727,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:731,1
    - Dst: imapc_mailbox_idle_notify
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:733,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 689
    functionDepth: 13
    functionLinenumber: 689
    functionLinenumberEnd: 734
    functionName: imapc_untagged_fetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_idle_notify
    - imap_arg_get_list
    - IMAPC_MAILBOX_IS_FULLY_SELECTED
    - imapc_untagged_fetch_ctx_free
    - array_foreach_elem
    - array_push_back
    - imapc_untagged_fetch_parse
    - imapc_untagged_fetch_handle
    - imapc_untagged_fetch_ctx_create
    - imapc_mail_fetch_update
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_fetch(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      struct imapc_mailbox *mbox)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:743,1
    - Dst: IMAPC_MAILBOX_IS_FULLY_SELECTED
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:745,1
    - Dst: imapc_mailbox_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:755,1
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:761,1
    - Dst: imapc_msgmap_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:762,1
    - Dst: imapc_msgmap_rseq_to_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:766,1
    - Dst: imapc_msgmap_expunge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:767,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:768,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:769,1
    - Dst: imapc_mailbox_init_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:771,1
    - Dst: imapc_mailbox_index_expunge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:772,1
    - Dst: imapc_mailbox_idle_notify
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:773,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 736
    functionDepth: 7
    functionLinenumber: 736
    functionLinenumberEnd: 774
    functionName: imapc_untagged_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - array_delete
    - imapc_mailbox_idle_notify
    - imapc_mailbox_init_delayed_trans
    - IMAPC_MAILBOX_IS_FULLY_SELECTED
    - IMAPC_BOX_HAS_FEATURE
    - imapc_msgmap_rseq_to_uid
    - imapc_msgmap_expunge
    - imapc_mailbox_index_expunge
    - imapc_client_mailbox_get_msgmap
    - imapc_mailbox_set_corrupted
    - imapc_msgmap_count
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_expunge(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \  struct imapc_mailbox *mbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:784,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:787,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:791,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:796,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:797,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:798,1
    - Dst: imap_seq_set_nostar_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:799,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:800,1
    - Dst: mail_index_keyword_lookup_or_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:804,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:807,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:808,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:809,1
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:811,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:812,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:813,1
    - Dst: imapc_msgmap_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:814,1
    - Dst: imapc_msgmap_rseq_to_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:818,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:819,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:824,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:827,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - args
    - mbox
    argTypes:
    - struct imap_arg*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 776
    functionDepth: 3
    functionLinenumber: 776
    functionLinenumberEnd: 828
    functionName: imapc_untagged_esearch_gmail_pop3
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - mail_index_update_keywords
    - array_push_back
    - seq_range_array_iter_init
    - imapc_msgmap_rseq_to_uid
    - mail_index_lookup_seq
    - i_free_and_null
    - mail_index_keyword_lookup_or_create
    - mail_index_keywords_create_from_indexes
    - imapc_client_mailbox_get_msgmap
    - e_error
    - t_array_init
    - ARRAY_TYPE
    - imapc_msgmap_count
    - imap_arg_get_atom
    - imap_seq_set_nostar_parse
    - mail_index_keywords_unref
    - imap_arg_atom_equals
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_esearch_gmail_pop3(const struct imap_arg *args,\n\t\t\t\t
      \ struct imapc_mailbox *mbox)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX_IS_FULLY_SELECTED
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:835,1
    - Dst: imapc_search_reply_search
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:840,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 841
    functionName: imapc_untagged_search
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - imapc_search_reply_search
    - IMAPC_MAILBOX_IS_FULLY_SELECTED
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_search(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \ struct imapc_mailbox *mbox)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX_IS_FULLY_SELECTED
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:848,1
    - Dst: imapc_search_reply_sort
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 854
    functionName: imapc_untagged_sort
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - IMAPC_MAILBOX_IS_FULLY_SELECTED
    - imapc_search_reply_sort
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_sort(const struct imapc_untagged_reply *reply,\n\t\t\t\tstruct
      imapc_mailbox *mbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:862,1
    - Dst: IMAPC_MAILBOX_IS_FULLY_SELECTED
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:864,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:871,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:872,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:879,1
    - Dst: imapc_untagged_esearch_gmail_pop3
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:880,1
    - Dst: imapc_search_reply_esearch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:882,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 856
    functionDepth: 4
    functionLinenumber: 856
    functionLinenumberEnd: 883
    functionName: imapc_untagged_esearch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imap_arg_get_list
    - IMAPC_MAILBOX_IS_FULLY_SELECTED
    - imapc_untagged_esearch_gmail_pop3
    - imap_arg_get_string
    - imapc_search_reply_esearch
    - imap_arg_atom_equals
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_esearch(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      \  struct imapc_mailbox *mbox)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_init_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:889,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:890,1
    - Dst: mail_index_reset
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:895,1
    - Dst: imapc_mailbox_commit_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:900,1
    - Dst: mail_index_mark_corrupted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:901,1
    - Dst: imapc_mailbox_init_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:902,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:904,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 885
    functionDepth: 5
    functionLinenumber: 885
    functionLinenumberEnd: 909
    functionName: imapc_sync_uid_validity
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_init_delayed_trans
    - mail_index_update_header
    - mail_index_mark_corrupted
    - mail_index_get_header
    - mail_index_reset
    - imapc_mailbox_commit_delayed_trans
    linkageType: ''
    returnType: void
    signature: void imapc_sync_uid_validity(struct imapc_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:918,1
    - Dst: imapc_mail_cache_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:924,1
    - Dst: imapc_sync_uid_validity
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:925,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 911
    functionDepth: 6
    functionLinenumber: 911
    functionLinenumberEnd: 927
    functionName: imapc_resp_text_uidvalidity
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - imapc_sync_uid_validity
    - str_to_uint32
    - imapc_mail_cache_free
    linkageType: ''
    returnType: void
    signature: "void imapc_resp_text_uidvalidity(const struct imapc_untagged_reply
      *reply,\n\t\t\t    struct imapc_mailbox *mbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:936,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 940
    functionName: imapc_resp_text_uidnext
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - str_to_uint32
    linkageType: ''
    returnType: void
    signature: "void imapc_resp_text_uidnext(const struct imapc_untagged_reply *reply,\n\t\t\tstruct
      imapc_mailbox *mbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint64
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:949,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 942
    functionDepth: 0
    functionLinenumber: 942
    functionLinenumberEnd: 953
    functionName: imapc_resp_text_highestmodseq
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - str_to_uint64
    linkageType: ''
    returnType: void
    signature: "void imapc_resp_text_highestmodseq(const struct imapc_untagged_reply
      *reply,\n\t\t\t      struct imapc_mailbox *mbox)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:963,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:965,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:972,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:975,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:978,1
    - Dst: mail_index_keyword_lookup_or_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:981,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - reply
    - mbox
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 955
    functionDepth: 3
    functionLinenumber: 955
    functionLinenumberEnd: 985
    functionName: imapc_resp_text_permanentflags
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imap_arg_get_list
    - mail_index_keyword_lookup_or_create
    - imap_parse_system_flag
    - imap_arg_get_atom
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imapc_resp_text_permanentflags(const struct imapc_untagged_reply
      *reply,\n\t\t\t       struct imapc_mailbox *mbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:993,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - mbox
    - key
    - callback
    argTypes:
    - struct imapc_mailbox*
    - char*
    - imapc_mailbox_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 996
    functionName: imapc_mailbox_register_untagged
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void imapc_mailbox_register_untagged(struct imapc_mailbox *mbox,\n\t\t\t\t
      \    const char *key,\n\t\t\t\t     imapc_mailbox_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1004,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - mbox
    - key
    - callback
    argTypes:
    - struct imapc_mailbox*
    - char*
    - imapc_mailbox_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 998
    functionDepth: 1
    functionLinenumber: 998
    functionLinenumberEnd: 1007
    functionName: imapc_mailbox_register_resp_text
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void imapc_mailbox_register_resp_text(struct imapc_mailbox *mbox,\n\t\t\t\t
      \     const char *key,\n\t\t\t\t      imapc_mailbox_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1011,1
    - Dst: imapc_mailbox_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1013,1
    - Dst: imapc_mailbox_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1015,1
    - Dst: imapc_mailbox_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1017,1
    - Dst: imapc_mailbox_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1019,1
    - Dst: imapc_mailbox_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1021,1
    - Dst: imapc_mailbox_register_resp_text
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1023,1
    - Dst: imapc_mailbox_register_resp_text
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1025,1
    - Dst: imapc_mailbox_register_resp_text
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1027,1
    - Dst: imapc_mailbox_register_resp_text
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c:1029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1009
    functionDepth: 2
    functionLinenumber: 1009
    functionLinenumberEnd: 1031
    functionName: imapc_mailbox_register_callbacks
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mailbox.c
    functionUses: 1
    functionsReached:
    - imapc_mailbox_register_untagged
    - imapc_mailbox_register_resp_text
    linkageType: ''
    returnType: void
    signature: void imapc_mailbox_register_callbacks(struct imapc_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: IMAPC_MAIL
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAPC_MAIL(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: IMAPC_SEARCHCTX
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAPC_SEARCHCTX(obj)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:29,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:38,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:40,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:41,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:44,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:47,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:50,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:53,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:56,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:59,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:62,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:65,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:70,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:75,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:81,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:84,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:86,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:87,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:88,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:91,1
    - Dst: imapc_build_search_query_args
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:92,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:94,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 61
    argCount: 4
    argNames:
    - mbox
    - args
    - sort_program
    - query_r
    argTypes:
    - struct imapc_mailbox*
    - struct mail_search_args*
    - enum mail_sort_type*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 96
    functionName: imapc_build_sort_query
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - imapc_build_search_query_args
    - i_unreached
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool imapc_build_sort_query(struct imapc_mailbox *mbox,\n\t\t       const
      struct mail_search_args *args,\n\t\t       const enum mail_sort_type *sort_program,\n\t\t
      \      const char **query_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: imapc_search_is_fast_local
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 141
    functionName: imapc_search_is_fast_local
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 1
    functionsReached:
    - imapc_search_is_fast_local
    linkageType: ''
    returnType: bool
    signature: bool imapc_search_is_fast_local(const struct mail_search_arg *args)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:152,1
    - Dst: imapc_build_search_query_args
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:158,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:161,1
    - Dst: imapc_build_search_query_args
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:162,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:163,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:168,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:170,1
    - Dst: mailbox_get_uid_range
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:171,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:173,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:174,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:183,1
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:184,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:186,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:186,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:187,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:187,1
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:209,1
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:214,1
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:218,1
    - Dst: mail_search_arg_to_imap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:230,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 63
    argCount: 3
    argNames:
    - mbox
    - arg
    - str
    argTypes:
    - struct imapc_mailbox*
    - struct mail_search_arg*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 231
    functionName: imapc_build_search_query_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_append_c
    - imapc_build_search_query_args
    - str_len
    - imap_write_seq_range
    - mail_search_arg_to_imap
    - str_begins_icase_with
    - t_array_init
    - ARRAY_TYPE
    - str_append
    - mailbox_get_uid_range
    linkageType: ''
    returnType: bool
    signature: "bool imapc_build_search_query_arg(struct imapc_mailbox *mbox,\n\t\t\t
      \    const struct mail_search_arg *arg,\n\t\t\t     string_t *str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:244,1
    - Dst: imapc_build_search_query_arg
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:245,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:247,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:249,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - mbox
    - args
    - parent_or
    - str
    argTypes:
    - struct imapc_mailbox*
    - struct mail_search_arg*
    - bool
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 251
    functionName: imapc_build_search_query_args
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 2
    functionsReached:
    - str_append_c
    - str_len
    - imapc_build_search_query_arg
    - str_truncate
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool imapc_build_search_query_args(struct imapc_mailbox *mbox,\n\t\t\t
      \     const struct mail_search_arg *args,\n\t\t\t      bool parent_or, string_t
      *str)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:257,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:259,1
    - Dst: imapc_search_is_fast_local
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:263,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:267,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:269,1
    - Dst: imapc_build_search_query_args
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:270,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - mbox
    - args
    - query_r
    argTypes:
    - struct imapc_mailbox*
    - struct mail_search_args*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 253
    functionDepth: 5
    functionLinenumber: 253
    functionLinenumberEnd: 274
    functionName: imapc_build_search_query
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - imapc_build_search_query_args
    - IMAPC_BOX_HAS_FEATURE
    - imapc_search_is_fast_local
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool imapc_build_search_query(struct imapc_mailbox *mbox,\n\t\t\t\t
      \    const struct mail_search_args *args,\n\t\t\t\t     const char **query_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:280,1
    - Dst: IMAPC_SEARCHCTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:281,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:282,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:286,1
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:289,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:292,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:294,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 298
    functionName: imapc_search_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_init
    - IMAPC_SEARCHCTX
    - imapc_copy_error_from_reply
    - IMAPC_MAILBOX
    - mailbox_set_critical
    - i_assert
    - mail_storage_set_internal_error
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_search_callback(const struct imapc_command_reply *reply,\n\t\t\t\t
      \ void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:307,1
    - Dst: imapc_build_sort_query
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:314,1
    - Dst: index_storage_search_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:315,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:317,1
    - Dst: index_storage_search_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:320,1
    - Dst: imapc_build_search_query
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:322,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:326,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:328,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:329,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:330,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:332,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:334,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:335,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:337,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:340,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 5
    argNames:
    - t
    - args
    - sort_program
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_search_args*
    - enum mail_sort_type*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 300
    functionDepth: 10
    functionLinenumber: 300
    functionLinenumberEnd: 343
    functionName: imapc_search_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - imapc_client_mailbox_cmd
    - imapc_command_set_flags
    - i_assert
    - imapc_client_run
    - IMAPC_MAILBOX
    - imapc_command_send
    - index_storage_search_init
    - i_new
    - imapc_build_search_query
    - MODULE_CONTEXT_SET
    - imapc_build_sort_query
    linkageType: ''
    returnType: struct mail_search_context
    signature: "struct mail_search_context *\nimapc_search_init(struct mailbox_transaction_context
      *t,\n\t\t  struct mail_search_args *args,\n\t\t  const enum mail_sort_type *sort_program,\n\t\t
      \ enum mail_fetch_field wanted_fields,\n\t\t  struct mailbox_header_lookup_ctx
      *wanted_headers)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_search_set_matches
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:350,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 354
    functionName: imapc_search_set_matches
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 1
    functionsReached:
    - imapc_search_set_matches
    linkageType: ''
    returnType: void
    signature: void imapc_search_set_matches(struct mail_search_arg *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SEARCHCTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:358,1
    - Dst: index_storage_search_next_update_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:362,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:365,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:366,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:367,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:373,1
    - Dst: imapc_search_set_matches
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:377,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 356
    functionDepth: 4
    functionLinenumber: 356
    functionLinenumberEnd: 379
    functionName: imapc_search_next_update_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached:
    - index_storage_search_next_update_seq
    - seq_range_array_iter_nth
    - mail_index_lookup_seq
    - array_idx
    - IMAPC_SEARCHCTX
    - array_count
    - imapc_search_set_matches
    linkageType: ''
    returnType: bool
    signature: bool imapc_search_next_update_seq(struct mail_search_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SEARCHCTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:383,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:389,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:390,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:391,1
    - Dst: index_storage_search_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_search_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 396
    functionName: imapc_search_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached:
    - IMAPC_SEARCHCTX
    - i_free
    - array_free
    - index_storage_search_deinit
    linkageType: ''
    returnType: int
    signature: int imapc_search_deinit(struct mail_search_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:403,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:408,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:414,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:415,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:416,1
    - Dst: imapc_msgmap_uid_to_rseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:419,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:420,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - args
    - mbox
    argTypes:
    - struct imap_arg*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 422
    functionName: imapc_search_reply_search
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 1
    functionsReached:
    - seq_range_array_add
    - str_to_uint32
    - imapc_client_mailbox_get_msgmap
    - e_error
    - imap_arg_get_atom
    - imapc_msgmap_uid_to_rseq
    linkageType: ''
    returnType: void
    signature: "void imapc_search_reply_search(const struct imap_arg *args,\n\t\t\t
      \      struct imapc_mailbox *mbox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:430,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:432,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:433,1
    - Dst: imap_seq_set_ordered_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:434,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:435,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 3
    argCount: 2
    argNames:
    - args
    - mbox
    argTypes:
    - struct imap_arg*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 436
    functionName: imapc_search_reply_esort
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_atom
    - imap_arg_atom_equals
    - e_error
    - imap_seq_set_ordered_parse
    linkageType: ''
    returnType: void
    signature: "void imapc_search_reply_esort(const struct imap_arg *args,\n\t\t\t\t
      \    struct imapc_mailbox *mbox)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:445,1
    - Dst: imapc_search_reply_esort
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:450,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:456,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:457,1
    - Dst: imap_seq_set_nostar_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:458,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:459,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - args
    - mbox
    argTypes:
    - struct imap_arg*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 460
    functionName: imapc_search_reply_esearch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 1
    functionsReached:
    - imapc_search_reply_esort
    - e_error
    - imap_arg_get_atom
    - imap_seq_set_nostar_parse
    - imap_arg_atom_equals
    linkageType: ''
    returnType: void
    signature: "void imapc_search_reply_esearch(const struct imap_arg *args,\n\t\t\t\tstruct
      imapc_mailbox *mbox)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:470,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:475,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:476,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:477,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c:480,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - args
    - mbox
    argTypes:
    - struct imap_arg*
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 482
    functionName: imapc_search_reply_sort
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-search.c
    functionUses: 1
    functionsReached:
    - e_error
    - str_to_uint32
    - array_push_back
    - imap_arg_get_atom
    linkageType: ''
    returnType: void
    signature: "void imapc_search_reply_sort(const struct imap_arg *args,\n\t\t\t
      \    struct imapc_mailbox *mbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _iter
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: ITER_CONTAINER
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ITER_CONTAINER(_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:31,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: imapc_storage_attribute_context_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct imapc_storage_attribute_context
    signature: 'struct imapc_storage_attribute_context *

      imapc_storage_attribute_context_create(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _actx
    argTypes:
    - struct imapc_storage_attribute_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: imapc_storage_attribute_context_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void imapc_storage_attribute_context_destroy(struct imapc_storage_attribute_context
      **_actx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_attribute_context_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:49,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: imapc_storage_attribute_iter_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - imapc_storage_attribute_context_create
    - p_new
    linkageType: ''
    returnType: struct imapc_storage_attribute_iter
    signature: struct imapc_storage_attribute_iter *imapc_storage_attribute_iter_create()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_attribute_context_destroy
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct imapc_storage_attribute_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: imapc_storage_attribute_iter_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - imapc_storage_attribute_context_destroy
    linkageType: ''
    returnType: void
    signature: void imapc_storage_attribute_iter_destroy(struct imapc_storage_attribute_iter
      **_iter)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:77,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:83,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:89,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:94,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:95,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:98,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:103,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:107,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:108,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:112,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:116,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:120,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:121,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 122
    functionName: imapc_storage_attribute_get_cb
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - imap_arg_get_list_full
    - p_array_init
    - array_push_back
    - imap_arg_get_nstring
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - p_strdup_printf
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_storage_attribute_get_cb(const struct imapc_untagged_reply
      *reply,\n\t\t\t       struct imapc_storage_client *client)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:131,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:132,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:135,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:137,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:138,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:142,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:144,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:147,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:148,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:150,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:152,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:154,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:155,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:156,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:157,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:158,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 6
    argNames:
    - mbox
    - command
    - depth
    - type_flags
    - key
    - value
    argTypes:
    - struct imapc_mailbox*
    - enum imapc_attribute_command_enum
    - int
    - enum mail_attribute_type
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 161
    functionName: imapc_storage_attribute_build_cmd
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - t_strdup_printf
    - imap_append_astring
    - imapc_mailbox_get_remote_name
    - imap_append_nstring
    - str_append
    - t_str_rtrim
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_storage_attribute_build_cmd(struct imapc_mailbox *mbox,\n\t\t\t\t
      \ enum imapc_attribute_command_enum command,\n\t\t\t\t  int depth,\n\t\t\t\t
      \ enum mail_attribute_type type_flags,\n\t\t\t\t  const char *key, const char
      *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:172,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:173,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:174,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:178,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:182,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:183,1
    - Dst: imapc_storage_client_unregister_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:187,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:192,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - mbox
    - line
    - iterating
    - actx
    argTypes:
    - struct imapc_mailbox*
    - char*
    - bool
    - struct imapc_storage_attribute_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 163
    functionDepth: 11
    functionLinenumber: 163
    functionLinenumberEnd: 196
    functionName: imapc_storage_attribute_run_cmd
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - mail_storage_set_error
    - imapc_simple_run
    - imapc_storage_client_unregister_untagged
    - imapc_command_send
    - t_strdup_printf
    - imapc_simple_context_init
    - imapc_client_cmd
    - imapc_storage_client_register_untagged
    linkageType: ''
    returnType: int
    signature: "int imapc_storage_attribute_run_cmd(struct imapc_mailbox *mbox, const
      char *line,\n\t\t\t\tbool iterating,\n\t\t\t\tstruct imapc_storage_attribute_context
      *actx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:205,1
    - Dst: imapc_storage_attribute_build_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:206,1
    - Dst: imapc_storage_attribute_run_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 7
    argNames:
    - box
    - command
    - type_flags
    - depth
    - key
    - value
    - actx
    argTypes:
    - struct mailbox*
    - enum imapc_attribute_command_enum
    - enum mail_attribute_type
    - int
    - char*
    - char*
    - struct imapc_storage_attribute_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 198
    functionDepth: 12
    functionLinenumber: 198
    functionLinenumberEnd: 210
    functionName: imapc_storage_attribute_cmd
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - imapc_storage_attribute_build_cmd
    - imapc_storage_attribute_run_cmd
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: int
    signature: "int imapc_storage_attribute_cmd(struct mailbox *box,\n\t\t\t    enum
      imapc_attribute_command_enum command,\n\t\t\t    enum mail_attribute_type type_flags,\n\t\t\t
      \   int depth, const char *key, const char *value,\n\t\t\t    struct imapc_storage_attribute_context
      *actx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:225,1
    - Dst: mailbox_get_namespace
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:229,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:231,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:236,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:239,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:243,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:244,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - box
    - type_flags
    - key
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 219
    functionDepth: 10
    functionLinenumber: 219
    functionLinenumberEnd: 250
    functionName: imapc_storage_attribute_handling
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_namespace
    - str_begins_with
    - imapc_client_get_capabilities
    - IMAPC_MAILBOX
    - HAS_ALL_BITS
    - mail_storage_set_error
    linkageType: ''
    returnType: enum handling
    signature: "enum handling imapc_storage_attribute_handling(struct mailbox *box,\n\t\t\t\t
      enum mail_attribute_type type_flags,\n\t\t\t\t const char *key)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_attribute_handling
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:257,1
    - Dst: index_storage_attribute_set
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:259,1
    - Dst: mailbox_attribute_value_to_string
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:267,1
    - Dst: imapc_storage_attribute_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:270,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - t
    - type_flags
    - key
    - value
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 252
    functionDepth: 13
    functionLinenumber: 252
    functionLinenumberEnd: 272
    functionName: imapc_storage_attribute_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - index_storage_attribute_set
    - imapc_storage_attribute_handling
    - mailbox_attribute_value_to_string
    - imapc_storage_attribute_cmd
    linkageType: ''
    returnType: int
    signature: "int imapc_storage_attribute_set(struct mailbox_transaction_context
      *t,\n\t\t\t\tenum mail_attribute_type type_flags,\n\t\t\t\tconst char *key,\n\t\t\t\tconst
      struct mail_attribute_value *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_attribute_handling
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:279,1
    - Dst: index_storage_attribute_get
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:281,1
    - Dst: imapc_storage_attribute_context_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:289,1
    - Dst: imapc_storage_attribute_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:290,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:292,1
    - Dst: imapc_storage_attribute_context_destroy
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - box
    - type_flags
    - key
    - value_r
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    - struct mail_attribute_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 274
    functionDepth: 13
    functionLinenumber: 274
    functionLinenumberEnd: 295
    functionName: imapc_storage_attribute_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - imapc_storage_attribute_cmd
    - imapc_storage_attribute_context_create
    - imapc_storage_attribute_handling
    - index_storage_attribute_get
    - imapc_storage_attribute_context_destroy
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int imapc_storage_attribute_get(struct mailbox *box,\n\t\t\t\tenum
      mail_attribute_type type_flags,\n\t\t\t\tconst char *key,\n\t\t\t\tstruct mail_attribute_value
      *value_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_attribute_iter_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:303,1
    - Dst: imapc_storage_attribute_handling
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:305,1
    - Dst: index_storage_attribute_iter_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:307,1
    - Dst: imapc_storage_attribute_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:311,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:314,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:321,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - box
    - type_flags
    - prefix
    argTypes:
    - struct mailbox*
    - enum mail_attribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 297
    functionDepth: 13
    functionLinenumber: 297
    functionLinenumberEnd: 328
    functionName: imapc_storage_attribute_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - index_storage_attribute_iter_init
    - imapc_storage_attribute_cmd
    - imapc_storage_attribute_iter_create
    - imapc_storage_attribute_handling
    - mail_storage_last_error_push
    linkageType: ''
    returnType: struct mailbox_attribute_iter
    signature: "struct mailbox_attribute_iter *\nimapc_storage_attribute_iter_init(struct
      mailbox *box,\n\t\t\t\t  enum mail_attribute_type type_flags,\n\t\t\t\t  const
      char *prefix)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ITER_CONTAINER
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:333,1
    - Dst: index_storage_attribute_iter_next
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:336,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:348,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:349,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mailbox_attribute_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 354
    functionName: imapc_storage_attribute_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - ITER_CONTAINER
    - strchr
    - i_assert
    - index_storage_attribute_iter_next
    linkageType: ''
    returnType: char
    signature: 'char *

      imapc_storage_attribute_iter_next(struct mailbox_attribute_iter *_iter)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ITER_CONTAINER
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:358,1
    - Dst: index_storage_attribute_iter_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:362,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:366,1
    - Dst: imapc_storage_attribute_iter_destroy
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mailbox_attribute_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 356
    functionDepth: 5
    functionLinenumber: 356
    functionLinenumberEnd: 372
    functionName: imapc_storage_attribute_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-attribute.c
    functionUses: 0
    functionsReached:
    - ITER_CONTAINER
    - index_storage_attribute_iter_deinit
    - imapc_storage_attribute_iter_destroy
    - mail_storage_last_error_pop
    linkageType: ''
    returnType: int
    signature: int imapc_storage_attribute_iter_deinit(struct mailbox_attribute_iter
      *_iter)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:22,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:24,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:30,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:36,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:37,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - mail
    - reply
    argTypes:
    - struct imapc_mail*
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 52
    functionName: imapc_mail_set_failure
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - strcasecmp
    - IMAPC_BOX_HAS_FEATURE
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: void
    signature: "void imapc_mail_set_failure(struct imapc_mail *mail,\n\t\t\t\t   const
      struct imapc_command_reply *reply)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:64,1
    - Dst: imapc_mail_set_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:65,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:68,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:70,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:72,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:73,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:74,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:76,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:77,1
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:82,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:86,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:88,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 92
    functionName: imapc_mail_fetch_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - array_delete
    - i_free
    - array_foreach_elem
    - i_unreached
    - mail_storage_set_internal_error
    - imapc_copy_error_from_reply
    - array_lsearch_ptr_idx
    - imapc_mail_set_failure
    - IMAPC_MAILBOX
    - mailbox_set_critical
    - i_assert
    - array_free
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_mail_fetch_callback(const struct imapc_command_reply *reply,\n\t\t\t
      \ void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - superset
    - subset
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 108
    functionName: headers_have_subset
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - str_array_icase_find
    linkageType: ''
    returnType: bool
    signature: bool headers_have_subset(const char *const *superset, const char *const
      *subset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:113,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:117,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:120,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:121,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:126,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:127,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:128,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:132,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:133,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 134
    functionName: headers_merge
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_array_init
    - array_push_back
    - str_array_icase_find
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: char
    signature: 'char *const *

      headers_merge(pool_t pool, const char *const *h1, const char *const *h2)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:139,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:140,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:143,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:144,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:145,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:146,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:149,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:150,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:152,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:155,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:156,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:157,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - mbox
    - str
    argTypes:
    - struct imapc_mailbox*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 159
    functionName: imapc_mail_try_merge_fetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - str_c
    - strchr
    - i_unreached
    - str_begins
    - str_insert
    - null_strcmp
    - str_truncate
    linkageType: ''
    returnType: bool
    signature: bool imapc_mail_try_merge_fetch(struct imapc_mailbox *mbox, string_t
      *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:164,1
    - Dst: imapc_mail_try_merge_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:167,1
    - Dst: imapc_mail_fetch_flush
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:169,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:173,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:174,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:175,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:176,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:178,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:181,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - mail
    - str
    argTypes:
    - struct imapc_mail*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 196
    functionName: imapc_mail_delayed_send_or_merge
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_push_back
    - str_append_str
    - timeout_add_short
    - imapc_mail_try_merge_fetch
    - array_count
    - i_new
    - imapc_mail_fetch_flush
    - IMAPC_MAILBOX
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_mail_delayed_send_or_merge(struct imapc_mail *mail, string_t
      *str)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:202,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:203,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:209,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:210,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:213,1
    - Dst: mail_stream_access_start
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:218,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:222,1
    - Dst: headers_have_subset
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:223,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:233,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:234,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:235,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:241,1
    - Dst: imapc_mailbox_select
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:243,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:250,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:251,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:255,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:255,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:257,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:260,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:262,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:263,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:266,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:268,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:271,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:272,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:279,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:283,1
    - Dst: headers_merge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:286,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:288,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:291,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:292,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:294,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:297,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:297,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:298,1
    - Dst: imapc_mail_delayed_send_or_merge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:305,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 73
    argCount: 3
    argNames:
    - _mail
    - fields
    - headers
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 198
    functionDepth: 12
    functionLinenumber: 198
    functionLinenumberEnd: 307
    functionName: imapc_mail_send_fetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - headers_have_subset
    - str_printfa
    - mail_index_lookup_seq
    - str_len
    - mail_index_is_expunged
    - headers_merge
    - mail_storage_set_error
    - t_str_new
    - str_append_c
    - imapc_mail_delayed_send_or_merge
    - imap_append_astring
    - mail_stream_access_start
    - IMAPC_MAIL
    - IMAPC_MAILBOX
    - i_assert
    - IMAPC_BOX_HAS_FEATURE
    - ENUM_NEGATE
    - imapc_mailbox_select
    - str_truncate
    - str_append
    - HAS_ALL_BITS
    linkageType: ''
    returnType: int
    signature: "int imapc_mail_send_fetch(struct mail *_mail, enum mail_fetch_field
      fields,\n\t\t      const char *const *headers)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:317,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:322,1
    - Dst: imapc_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - mail
    - cache
    argTypes:
    - struct imapc_mail*
    - struct imapc_mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 334
    functionName: imapc_mail_cache_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - imapc_mail_init_stream
    - i_stream_create_fd
    - i_stream_create_from_data
    linkageType: ''
    returnType: void
    signature: "void imapc_mail_cache_get(struct imapc_mail *mail,\n\t\t\t\t struct
      imapc_mail_cache *cache)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:339,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:348,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:356,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:360,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:364,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 22
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct imapc_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 376
    functionName: imapc_mail_get_wanted_fetch_fields
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - HAS_ALL_BITS
    - IMAPC_BOX_HAS_FEATURE
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: enum mail_fetch_field
    signature: enum mail_fetch_field imapc_mail_get_wanted_fetch_fields(struct imapc_mail
      *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:381,1
    - Dst: imapc_mail_cache_get
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct imapc_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 385
    functionName: imapc_mail_try_init_stream_from_cache
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 1
    functionsReached:
    - imapc_mail_cache_get
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: void
    signature: void imapc_mail_try_init_stream_from_cache(struct imapc_mail *mail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:389,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:390,1
    - Dst: imapc_mail_update_access_parts
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:396,1
    - Dst: imapc_mail_try_init_stream_from_cache
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:401,1
    - Dst: imapc_mail_get_wanted_fetch_fields
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:403,1
    - Dst: imapc_mail_has_headers_in_cache
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:406,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:408,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:414,1
    - Dst: imapc_mail_send_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:414,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 387
    functionDepth: 15
    functionLinenumber: 387
    functionLinenumberEnd: 416
    functionName: imapc_mail_prefetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 1
    functionsReached:
    - imapc_mail_has_headers_in_cache
    - IMAPC_BOX_HAS_FEATURE
    - imapc_mail_try_init_stream_from_cache
    - if
    - imapc_mail_update_access_parts
    - imapc_mail_send_fetch
    - IMAPC_MAIL
    - IMAPC_MAILBOX
    - imapc_mail_get_wanted_fetch_fields
    linkageType: ''
    returnType: bool
    signature: bool imapc_mail_prefetch(struct mail *_mail)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:423,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:428,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:431,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:431,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:435,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:440,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:445,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:450,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:455,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:463,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 2
    argNames:
    - imail
    - fields
    argTypes:
    - struct imapc_mail*
    - enum mail_fetch_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 465
    functionName: imapc_mail_have_fields
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - HAS_ALL_BITS
    - i_assert
    - ENUM_NEGATE
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: bool
    signature: bool imapc_mail_have_fields(struct imapc_mail *imail, enum mail_fetch_field
      fields)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:470,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:471,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:476,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:482,1
    - Dst: imapc_mail_get_wanted_fetch_fields
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:488,1
    - Dst: imapc_mail_send_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:490,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - _mail
    - fields
    - headers
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 467
    functionDepth: 13
    functionLinenumber: 467
    functionLinenumberEnd: 491
    functionName: imapc_mail_fetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 7
    functionsReached:
    - imapc_mail_send_fetch
    - IMAPC_MAIL
    - IMAPC_MAILBOX
    - imapc_mail_get_wanted_fetch_fields
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int imapc_mail_fetch(struct mail *_mail, enum mail_fetch_field fields,\n\t\t
      \    const char *const *headers)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:518,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:522,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:525,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:528,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:529,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:531,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:531,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:534,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 512
    functionDepth: 6
    functionLinenumber: 512
    functionLinenumberEnd: 536
    functionName: imapc_mail_fetch_flush
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 4
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_mailbox_cmd
    - str_c
    - array_push_back
    - array_foreach_elem
    - imapc_command_send
    - str_truncate
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imapc_mail_fetch_flush(struct imapc_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:548,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - reply
    - arg
    - fd_r
    argTypes:
    - struct imapc_untagged_reply*
    - struct imap_arg*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 555
    functionName: imapc_find_lfile_arg
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: "bool imapc_find_lfile_arg(const struct imapc_untagged_reply *reply,\n\t\t\t\t
      const struct imap_arg *arg, int *fd_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:566,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:568,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 572
    functionName: imapc_stream_filter
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - i_stream_unref
    - N_ELEMENTS
    - i_stream_create_header_filter
    linkageType: ''
    returnType: void
    signature: void imapc_stream_filter(struct istream **input)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:578,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:583,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:584,1
    - Dst: index_mail_set_read_buffer_size
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:585,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:587,1
    - Dst: imapc_stream_filter
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:590,1
    - Dst: struct index_mail*::mail::v::istream_opened
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:593,1
    - Dst: index_mail_close_streams
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:595,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:599,1
    - Dst: index_mail_close_streams
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:601,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:604,1
    - Dst: index_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:623,1
    - Dst: index_mail_close_streams
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:624,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct imapc_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 574
    functionDepth: 17
    functionLinenumber: 574
    functionLinenumberEnd: 625
    functionName: imapc_mail_init_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 2
    functionsReached:
    - index_mail_set_read_buffer_size
    - struct index_mail*::mail::v::istream_opened
    - IMAPC_BOX_HAS_FEATURE
    - i_stream_set_name
    - imapc_stream_filter
    - t_strdup_printf
    - index_mail_close_streams
    - i_stream_get_size
    - index_mail_init_stream
    - IMAPC_MAILBOX
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_mail_init_stream(struct imapc_mail *mail)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:634,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:641,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:650,1
    - Dst: lseek
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:655,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:656,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:657,1
    - Dst: index_mail_close_streams
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:659,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:660,1
    - Dst: imapc_find_lfile_arg
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:670,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:671,1
    - Dst: dup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:674,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:675,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:676,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:680,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:682,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:686,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:687,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:688,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:692,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:697,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:699,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:701,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:702,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:715,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:716,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:717,1
    - Dst: imapc_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:720,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 65
    argCount: 5
    argNames:
    - mail
    - reply
    - arg
    - have_header
    - have_body
    argTypes:
    - struct imapc_mail*
    - struct imapc_untagged_reply*
    - struct imap_arg*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 627
    functionDepth: 18
    functionLinenumber: 627
    functionLinenumberEnd: 721
    functionName: imapc_fetch_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - dup
    - buffer_create_dynamic
    - i_stream_ref
    - buffer_set_used_size
    - i_stream_create_from_data
    - i_stream_create_concat
    - imapc_find_lfile_arg
    - buffer_append
    - i_close_fd
    - imap_arg_get_nstring
    - IMAPC_MAILBOX
    - e_error
    - i_stream_create_fd_autoclose
    - i_assert
    - i_stream_create_fd
    - lseek
    - IMAPC_BOX_HAS_FEATURE
    - imapc_mail_init_stream
    - index_mail_close_streams
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void imapc_fetch_stream(struct imapc_mail *mail,\n\t\t   const struct
      imapc_untagged_reply *reply,\n\t\t   const struct imap_arg *arg,\n\t\t   bool
      have_header, bool have_body)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:736,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:740,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:742,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:748,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:749,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:750,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:755,1
    - Dst: headers_have_subset
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:757,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:757,1
    - Dst: imapc_find_lfile_arg
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:761,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:763,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:765,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:768,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:771,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:774,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:775,1
    - Dst: index_mail_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:776,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:778,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:779,1
    - Dst: index_mail_parse_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:780,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 3
    argNames:
    - mail
    - reply
    - args
    argTypes:
    - struct imapc_mail*
    - struct imapc_untagged_reply*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 723
    functionDepth: 14
    functionLinenumber: 723
    functionLinenumberEnd: 781
    functionName: imapc_fetch_header_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - headers_have_subset
    - mailbox_header_lookup_init
    - array_front
    - index_mail_parse_header_init
    - array_append_zero
    - i_stream_create_from_data
    - imapc_find_lfile_arg
    - imap_arg_get_astring
    - imap_arg_get_nstring
    - message_parse_header_next
    - imap_arg_get_list
    - message_parse_header_init
    - imap_arg_atom_equals
    - i_stream_create_fd
    - array_push_back
    - t_array_init
    - ARRAY_TYPE
    - index_mail_parse_header
    linkageType: ''
    returnType: void
    signature: "void imapc_fetch_header_stream(struct imapc_mail *mail,\n\t\t\t  const
      struct imapc_untagged_reply *reply,\n\t\t\t  const struct imap_arg *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:799,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:800,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:805,1
    - Dst: imap_bodystructure_parse_args
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:806,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:807,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:811,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:812,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:818,1
    - Dst: imap_write_args
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:819,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:820,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:821,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:823,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:823,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:825,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - mail
    - list_arg
    - extended
    argTypes:
    - struct imapc_mail*
    - struct imap_arg*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 790
    functionDepth: 4
    functionLinenumber: 790
    functionLinenumberEnd: 827
    functionName: imapc_args_to_bodystructure
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 0
    functionsReached:
    - i_panic
    - pool_alloconly_create
    - t_str_new
    - imap_arg_get_list
    - str_c
    - imap_bodystructure_write
    - p_strdup
    - mail_set_critical
    - imap_bodystructure_parse_args
    - imap_write_args
    - pool_unref
    - str_truncate
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_args_to_bodystructure(struct imapc_mail *mail,\n\t\t\t
      \   const struct imap_arg *list_arg, bool extended)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:833,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:842,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:846,1
    - Dst: imapc_fetch_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:847,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:849,1
    - Dst: imapc_fetch_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:850,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:852,1
    - Dst: imapc_fetch_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:853,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:855,1
    - Dst: imapc_fetch_header_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:856,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:858,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:859,1
    - Dst: imap_parse_datetime
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:860,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:862,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:867,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:868,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:869,1
    - Dst: imap_parse_datetime
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:871,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:875,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:876,1
    - Dst: imapc_args_to_bodystructure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:878,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:881,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:882,1
    - Dst: imapc_args_to_bodystructure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:884,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:887,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:888,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:889,1
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:890,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:896,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:897,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:898,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:900,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c:908,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 68
    argCount: 3
    argNames:
    - mail
    - reply
    - args
    argTypes:
    - struct imapc_mail*
    - struct imapc_untagged_reply*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 829
    functionDepth: 19
    functionLinenumber: 829
    functionLinenumberEnd: 910
    functionName: imapc_mail_fetch_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-mail-fetch.c
    functionUses: 1
    functionsReached:
    - imapc_args_to_bodystructure
    - p_strdup
    - IMAPC_BOX_HAS_FEATURE
    - imapc_fetch_stream
    - strcasecmp
    - imapc_fetch_header_stream
    - str_to_uoff
    - HAS_NO_BITS
    - imap_parse_datetime
    - IMAPC_MAILBOX
    - imap_arg_get_atom
    - imapc_client_stop
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_mail_fetch_update(struct imapc_mail *mail,\n\t\t\t     const
      struct imapc_untagged_reply *reply,\n\t\t\t     const struct imap_arg *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:87,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:88,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:92,1
    - Dst: mailbox_tree_set_parents_nonexistent
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 95
    functionName: imapc_list_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - mailbox_tree_set_parents_nonexistent
    - mailbox_tree_init
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *imapc_list_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_client_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:101,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:113,1
    - Dst: imapc_storage_client_register_untagged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:115,1
    - Dst: imapc_list_send_hierarchy_sep_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - _list
    - error_r
    argTypes:
    - struct mailbox_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 97
    functionDepth: 11
    functionLinenumber: 97
    functionLinenumberEnd: 119
    functionName: imapc_list_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_storage_client_create
    - imapc_storage_client_register_untagged
    - imapc_list_send_hierarchy_sep_lookup
    linkageType: ''
    returnType: int
    signature: int imapc_list_init(struct mailbox_list *_list, const char **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_logout
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:129,1
    - Dst: imapc_storage_client_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:130,1
    - Dst: mailbox_list_destroy
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:133,1
    - Dst: settings_instance_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:134,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:135,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:137,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 121
    functionDepth: 10
    functionLinenumber: 121
    functionLinenumberEnd: 139
    functionName: imapc_list_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - settings_instance_free
    - imapc_storage_client_unref
    - mailbox_tree_deinit
    - pool_unref
    - mailbox_list_destroy
    - imapc_client_logout
    linkageType: ''
    returnType: void
    signature: void imapc_list_deinit(struct mailbox_list *_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_resp_text_code_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:148,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:149,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - list
    - default_error
    - reply
    argTypes:
    - struct imapc_mailbox_list*
    - enum mail_error
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 155
    functionName: imapc_list_copy_error_from_reply
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - imapc_resp_text_code_parse
    linkageType: ''
    returnType: void
    signature: "void imapc_list_copy_error_from_reply(struct imapc_mailbox_list *list,\n\t\t\t\t
      enum mail_error default_error,\n\t\t\t\t const struct imapc_command_reply *reply)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:165,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:168,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:171,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:174,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 179
    functionName: imapc_list_simple_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_critical
    - imapc_list_copy_error_from_reply
    - mailbox_list_set_internal_error
    - imapc_storage_client_handle_auth_failure
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_list_simple_callback(const struct imapc_command_reply *reply,\n\t\t\t\t
      \      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:186,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - flag_r
    argTypes:
    - char*
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 193
    functionName: imap_list_flag_parse
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool imap_list_flag_parse(const char *str, enum mailbox_info_flags
      *flag_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_escape_name_params
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:202,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - remote_name
    argTypes:
    - struct imapc_mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 206
    functionName: imapc_list_remote_to_storage_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_escape_name_params
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_list_remote_to_storage_name(struct imapc_mailbox_list
      *list,\n\t\t\t\t  const char *remote_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:212,1
    - Dst: imapc_list_remote_to_storage_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - remote_name
    argTypes:
    - struct imapc_mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 208
    functionDepth: 3
    functionLinenumber: 208
    functionLinenumberEnd: 214
    functionName: imapc_list_remote_to_vname
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_list_remote_to_storage_name
    - mailbox_list_get_vname
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_list_remote_to_vname(struct imapc_mailbox_list *list,\n\t\t\t
      \  const char *remote_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_unescape_name_params
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:220,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - storage_name
    argTypes:
    - struct imapc_mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 223
    functionName: imapc_list_storage_to_remote_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 1
    functionsReached:
    - mailbox_list_unescape_name_params
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_list_storage_to_remote_name(struct imapc_mailbox_list
      *list,\n\t\t\t\t  const char *storage_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:236,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:238,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:241,1
    - Dst: imap_list_flag_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:242,1
    - Dst: imapc_list_remote_to_vname
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:249,1
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:250,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - list
    - tree
    - args
    argTypes:
    - struct imapc_mailbox_list*
    - struct mailbox_tree_context*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 252
    functionName: imapc_list_update_tree
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imap_arg_get_list
    - imap_arg_get_astring
    - imap_list_flag_parse
    - mailbox_tree_get
    - imap_arg_get_atom
    - imapc_list_remote_to_vname
    linkageType: ''
    returnType: struct mailbox_node
    signature: "struct mailbox_node *\nimapc_list_update_tree(struct imapc_mailbox_list
      *list,\n\t\t       struct mailbox_tree_context *tree,\n\t\t       const struct
      imap_arg *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:268,1
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:269,1
    - Dst: mailbox_tree_set_separator
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:274,1
    - Dst: imapc_list_update_tree
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:277,1
    - Dst: imapc_list_update_tree
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:283,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 257
    functionDepth: 5
    functionLinenumber: 257
    functionLinenumberEnd: 286
    functionName: imapc_untagged_list
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_tree_set_separator
    - imapc_list_update_tree
    - imap_arg_get_nstring
    - imap_arg_get_astring
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_list(const struct imapc_untagged_reply *reply,\n\t\t\t\tstruct
      imapc_storage_client *client)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_update_tree
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:303,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - reply
    - client
    argTypes:
    - struct imapc_untagged_reply*
    - struct imapc_storage_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 288
    functionDepth: 5
    functionLinenumber: 288
    functionLinenumberEnd: 313
    functionName: imapc_untagged_lsub
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_list_update_tree
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void imapc_untagged_lsub(const struct imapc_untagged_reply *reply,\n\t\t\t\tstruct
      imapc_storage_client *client)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:320,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:323,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct imapc_mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 327
    functionName: imapc_list_sep_verify
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - strlen
    - mailbox_list_set_critical
    linkageType: ''
    returnType: void
    signature: void imapc_list_sep_verify(struct imapc_mailbox_list *list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_sep_verify
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:336,1
    - Dst: imapc_list_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:338,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:339,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:342,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:344,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 329
    functionDepth: 4
    functionLinenumber: 329
    functionLinenumberEnd: 348
    functionName: imapc_storage_sep_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_critical
    - imapc_list_copy_error_from_reply
    - imapc_list_sep_verify
    - mailbox_list_set_internal_error
    - imapc_storage_client_handle_auth_failure
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_storage_sep_callback(const struct imapc_command_reply *reply,\n\t\t\t\t
      \      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:358,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:360,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct imapc_mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 350
    functionDepth: 6
    functionLinenumber: 350
    functionLinenumberEnd: 362
    functionName: imapc_list_send_hierarchy_sep_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 1
    functionsReached:
    - imapc_command_set_flags
    - imapc_command_send
    - imapc_client_cmd
    linkageType: ''
    returnType: void
    signature: void imapc_list_send_hierarchy_sep_lookup(struct imapc_mailbox_list
      *list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:367,1
    - Dst: imapc_list_send_hierarchy_sep_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:369,1
    - Dst: imapc_client_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:371,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - list
    - sep_r
    argTypes:
    - struct imapc_mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 364
    functionDepth: 9
    functionLinenumber: 364
    functionLinenumberEnd: 377
    functionName: imapc_list_try_get_root_sep
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_client_run
    - imapc_storage_client_handle_auth_failure
    - imapc_list_send_hierarchy_sep_lookup
    linkageType: ''
    returnType: int
    signature: int imapc_list_try_get_root_sep(struct imapc_mailbox_list *list, char
      *sep_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_try_get_root_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 379
    functionDepth: 10
    functionLinenumber: 379
    functionLinenumberEnd: 390
    functionName: imapc_list_get_hierarchy_sep
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_list_try_get_root_sep
    linkageType: ''
    returnType: char
    signature: char imapc_list_get_hierarchy_sep(struct mailbox_list *_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_default_get_storage_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:399,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:400,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:402,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:403,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - _list
    - vname
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 392
    functionDepth: 4
    functionLinenumber: 392
    functionLinenumberEnd: 407
    functionName: imapc_list_get_storage_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_default_get_storage_name
    - t_strdup_printf
    - strcasecmp
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: 'char *

      imapc_list_get_storage_name(struct mailbox_list *_list, const char *vname)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:417,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:418,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:419,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:423,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:424,1
    - Dst: mailbox_list_default_get_vname
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:428,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - _list
    - storage_name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 409
    functionDepth: 4
    functionLinenumber: 409
    functionLinenumberEnd: 429
    functionName: imapc_list_get_vname
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_hierarchy_sep
    - i_unreached
    - str_begins
    - mailbox_list_default_get_vname
    - strcasecmp
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      imapc_list_get_vname(struct mailbox_list *_list, const char *storage_name)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:437,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:447,1
    - Dst: settings_instance_dup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:450,1
    - Dst: mail_storage_2nd_settings_reset
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:451,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:454,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:458,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:462,1
    - Dst: settings_override
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:466,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:472,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:473,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:475,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:477,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:479,1
    - Dst: mailbox_list_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:481,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:484,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:489,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:490,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct imapc_mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 493
    functionName: imapc_list_get_fs
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - strcmp
    - event_create
    - event_unref
    - mailbox_list_create
    - settings_instance_dup
    - settings_event_add_filter_name
    - settings_free
    - mail_storage_service_user_get_settings_instance
    - e_error
    - event_set_ptr
    - settings_override
    - settings_get
    - mail_storage_2nd_settings_reset
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *imapc_list_get_fs(struct imapc_mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_get_fs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:499,1
    - Dst: imapc_list_storage_to_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:505,1
    - Dst: mailbox_list_escape_name_params
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:506,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - list
    - storage_name
    argTypes:
    - struct imapc_mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 495
    functionDepth: 4
    functionLinenumber: 495
    functionLinenumberEnd: 509
    functionName: imapc_list_storage_to_fs_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_escape_name_params
    - imapc_list_storage_to_remote_name
    - imapc_list_get_fs
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_list_storage_to_fs_name(struct imapc_mailbox_list *list,\n\t\t\t
      \     const char *storage_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_get_fs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:515,1
    - Dst: mailbox_list_unescape_name_params
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:521,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:523,1
    - Dst: imapc_list_remote_to_storage_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - list
    - fs_name
    argTypes:
    - struct imapc_mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 511
    functionDepth: 4
    functionLinenumber: 511
    functionLinenumberEnd: 526
    functionName: imapc_list_fs_to_storage_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_list_remote_to_storage_name
    - mailbox_list_unescape_name_params
    - imapc_list_get_fs
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_list_fs_to_storage_name(struct imapc_mailbox_list *list,\n\t\t\t
      \     const char *fs_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_get_fs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:533,1
    - Dst: imapc_list_storage_to_fs_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:537,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - _list
    - name
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 528
    functionDepth: 5
    functionLinenumber: 528
    functionLinenumberEnd: 543
    functionName: imapc_list_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_list_storage_to_fs_name
    - mailbox_list_get_path
    - imapc_list_get_fs
    linkageType: ''
    returnType: int
    signature: "int imapc_list_get_path(struct mailbox_list *_list, const char *name,\n\t\t
      \   enum mailbox_list_path_type type, const char **path_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_get_fs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:549,1
    - Dst: mailbox_list_get_global_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:553,1
    - Dst: mailbox_list_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:554,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _list
    - global
    argTypes:
    - struct mailbox_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 545
    functionDepth: 4
    functionLinenumber: 545
    functionLinenumberEnd: 559
    functionName: imapc_list_get_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mailbox_list_get_temp_prefix
    - mailbox_list_get_global_temp_prefix
    - imapc_list_get_fs
    linkageType: ''
    returnType: char
    signature: 'char *

      imapc_list_get_temp_prefix(struct mailbox_list *_list, bool global)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ref
    - pattern
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 566
    functionName: imapc_list_join_refpattern
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: "char *\nimapc_list_join_refpattern(struct mailbox_list *list ATTR_UNUSED,\n\t\t\t
      \  const char *ref, const char *pattern)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:572,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - list
    argTypes:
    - struct imapc_simple_context*
    - struct imapc_mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 568
    functionDepth: 5
    functionLinenumber: 568
    functionLinenumberEnd: 575
    functionName: imapc_list_simple_context_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_simple_context_init
    - imapc_client_cmd
    linkageType: ''
    returnType: struct imapc_command
    signature: "struct imapc_command *\nimapc_list_simple_context_init(struct imapc_simple_context
      *ctx,\n\t\t\t       struct imapc_mailbox_list *list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_get_fs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:579,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:587,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:591,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:592,1
    - Dst: imapc_list_fs_to_storage_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:593,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:594,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:597,1
    - Dst: struct mailbox_list*::v::delete_mailbox
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:598,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct imapc_mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 577
    functionDepth: 5
    functionLinenumber: 577
    functionLinenumberEnd: 599
    functionName: imapc_list_delete_unused_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_iter_next
    - mailbox_list_get_storage_name
    - mailbox_tree_lookup
    - struct mailbox_list*::v::delete_mailbox
    - mailbox_list_iter_init
    - mailbox_list_get_vname
    - imapc_list_get_fs
    - imapc_list_fs_to_storage_name
    linkageType: ''
    returnType: void
    signature: void imapc_list_delete_unused_indexes(struct imapc_mailbox_list *list)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_try_get_root_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:611,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:627,1
    - Dst: imapc_list_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:630,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:631,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:632,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:633,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:634,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:634,1
    - Dst: mailbox_tree_set_parents_nonexistent
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:635,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:636,1
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:643,1
    - Dst: imapc_list_delete_unused_indexes
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:657,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct imapc_mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 603
    functionDepth: 11
    functionLinenumber: 603
    functionLinenumberEnd: 660
    functionName: imapc_list_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - mail_namespace_get_sep
    - imapc_list_try_get_root_sep
    - imapc_simple_run
    - imapc_list_simple_context_init
    - t_strdup_printf
    - mailbox_tree_deinit
    - imapc_list_delete_unused_indexes
    - mailbox_tree_set_parents_nonexistent
    - mailbox_tree_get
    - imapc_command_sendf
    - mailbox_tree_init
    linkageType: ''
    returnType: int
    signature: int imapc_list_refresh(struct imapc_mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_has_existing_children
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:667,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 671
    functionName: imapc_list_has_existing_children
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 1
    functionsReached:
    - imapc_list_has_existing_children
    linkageType: ''
    returnType: bool
    signature: bool imapc_list_has_existing_children(struct mailbox_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:683,1
    - Dst: mailbox_tree_iterate_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:689,1
    - Dst: mailbox_tree_iterate_next
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:690,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:693,1
    - Dst: imapc_list_has_existing_children
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:694,1
    - Dst: mailbox_list_iter_update
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:698,1
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 673
    functionDepth: 3
    functionLinenumber: 673
    functionLinenumberEnd: 701
    functionName: imapc_list_build_match_tree
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_list_iter_update
    - ENUM_NEGATE
    - mailbox_tree_iterate_deinit
    - imapc_list_has_existing_children
    - mailbox_tree_iterate_next
    - mailbox_tree_iterate_init
    linkageType: ''
    returnType: void
    signature: void imapc_list_build_match_tree(struct imapc_mailbox_list_iterate_context
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_refresh
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:716,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:722,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:724,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:725,1
    - Dst: imap_match_init_multiple
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:729,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:730,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:734,1
    - Dst: mailbox_tree_set_parents_nonexistent
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:735,1
    - Dst: imapc_list_build_match_tree
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:737,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:740,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:742,1
    - Dst: mailbox_tree_iterate_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:745,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - _list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 703
    functionDepth: 12
    functionLinenumber: 703
    functionLinenumberEnd: 749
    functionName: imapc_list_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - pool_alloconly_create
    - imap_match_init_multiple
    - p_new
    - imapc_list_build_match_tree
    - t_strndup
    - mailbox_tree_lookup
    - mailbox_tree_set_parents_nonexistent
    - mailbox_tree_iterate_init
    - imapc_list_refresh
    - array_create
    - mailbox_tree_init
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nimapc_list_iter_init(struct
      mailbox_list *_list, const char *const *patterns,\n\t\t     enum mailbox_list_iter_flags
      flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:758,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:759,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:761,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:764,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:765,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:769,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:770,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:770,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:771,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct imapc_mailbox_list_iterate_context*
    - struct mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 775
    functionName: imapc_list_write_special_use
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_append_c
    - str_len
    - str_truncate
    - str_append
    - str_new
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void imapc_list_write_special_use(struct imapc_mailbox_list_iterate_context
      *ctx,\n\t\t\t     struct mailbox_node *node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct imapc_mailbox_list_iterate_context*
    - struct mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 789
    functionName: imapc_list_is_ns_root
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool imapc_list_is_ns_root(struct imapc_mailbox_list_iterate_context
      *ctx,\n\t\t      struct mailbox_node *node)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_tree_iterate_next
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:805,1
    - Dst: mailbox_list_iter_default_next
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:807,1
    - Dst: imapc_list_is_ns_root
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:809,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:810,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:814,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:815,1
    - Dst: imapc_list_iter_next
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:819,1
    - Dst: imapc_list_write_special_use
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:827,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 791
    functionDepth: 3
    functionLinenumber: 791
    functionLinenumberEnd: 832
    functionName: imapc_list_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    - imapc_list_iter_next
    - imapc_list_is_ns_root
    - mailbox_tree_iterate_next
    - imapc_list_write_special_use
    - strncmp
    - mailbox_list_iter_default_next
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      imapc_list_iter_next(struct mailbox_list_iterate_context *_ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:842,1
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:849,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:850,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:851,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 834
    functionDepth: 2
    functionLinenumber: 834
    functionLinenumberEnd: 853
    functionName: imapc_list_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_tree_deinit
    - i_assert
    - pool_unref
    - mailbox_tree_iterate_deinit
    linkageType: ''
    returnType: int
    signature: int imapc_list_iter_deinit(struct mailbox_list_iterate_context *_ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:864,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:866,1
    - Dst: imapc_list_try_get_root_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:868,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:874,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:879,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:879,1
    - Dst: imapc_list_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:881,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:885,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:886,1
    - Dst: imapc_cmd_has_imap4rev2
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:888,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:889,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:891,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:892,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:899,1
    - Dst: mailbox_tree_set_separator
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:902,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - _src_list
    - dest_list
    argTypes:
    - struct mailbox_list*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 855
    functionDepth: 11
    functionLinenumber: 855
    functionLinenumberEnd: 906
    functionName: imapc_list_subscriptions_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - mail_namespace_get_sep
    - imapc_list_try_get_root_sep
    - imapc_simple_run
    - imapc_list_simple_context_init
    - t_strdup_printf
    - mailbox_tree_deinit
    - mailbox_tree_set_separator
    - imapc_cmd_has_imap4rev2
    - imapc_command_sendf
    - i_assert
    - mailbox_tree_init
    linkageType: ''
    returnType: int
    signature: "int imapc_list_subscriptions_refresh(struct mailbox_list *_src_list,\n\t\t\t\t
      struct mailbox_list *dest_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:915,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:916,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:917,1
    - Dst: imapc_list_storage_to_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:918,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _list
    - name
    - set
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 908
    functionDepth: 11
    functionLinenumber: 908
    functionLinenumberEnd: 921
    functionName: imapc_list_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_simple_run
    - imapc_list_simple_context_init
    - imapc_list_storage_to_remote_name
    - imapc_command_sendf
    linkageType: ''
    returnType: int
    signature: "int imapc_list_set_subscribed(struct mailbox_list *_list,\n\t\t\t\t
      \    const char *name, bool set)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_get_fs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:927,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:932,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:934,1
    - Dst: imapc_list_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:937,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:938,1
    - Dst: imapc_command_connection_is_selected
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:939,1
    - Dst: imapc_command_abort
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:940,1
    - Dst: imapc_server_unselect
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:941,1
    - Dst: imapc_list_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:944,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:945,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:946,1
    - Dst: imapc_list_storage_to_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:946,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:947,1
    - Dst: imapc_list_storage_to_fs_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:950,1
    - Dst: struct mailbox_list*::v::delete_mailbox
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:951,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - _list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 923
    functionDepth: 12
    functionLinenumber: 923
    functionLinenumberEnd: 954
    functionName: imapc_list_delete_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_list_storage_to_fs_name
    - imapc_simple_run
    - imapc_list_simple_context_init
    - imapc_command_connection_is_selected
    - struct mailbox_list*::v::delete_mailbox
    - imapc_client_get_capabilities
    - imapc_storage_client_handle_auth_failure
    - imapc_server_unselect
    - imapc_list_storage_to_remote_name
    - imapc_command_sendf
    - imapc_command_abort
    - imapc_list_get_fs
    linkageType: ''
    returnType: int
    signature: int imapc_list_delete_mailbox(struct mailbox_list *_list, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_get_fs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:960,1
    - Dst: imapc_list_storage_to_fs_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:963,1
    - Dst: mailbox_list_delete_dir
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:964,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 956
    functionDepth: 5
    functionLinenumber: 956
    functionLinenumberEnd: 967
    functionName: imapc_list_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_list_storage_to_fs_name
    - mailbox_list_delete_dir
    - imapc_list_get_fs
    linkageType: ''
    returnType: int
    signature: int imapc_list_delete_dir(struct mailbox_list *_list, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 969
    functionDepth: 2
    functionLinenumber: 969
    functionLinenumberEnd: 975
    functionName: imapc_list_delete_symlink
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    linkageType: ''
    returnType: int
    signature: "int imapc_list_delete_symlink(struct mailbox_list *list,\n\t\t\t  const
      char *name ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_list_get_fs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:982,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:987,1
    - Dst: imapc_list_simple_context_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:992,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:993,1
    - Dst: imapc_list_storage_to_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:994,1
    - Dst: imapc_list_storage_to_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:995,1
    - Dst: imapc_simple_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:996,1
    - Dst: imapc_list_storage_to_fs_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:999,1
    - Dst: imapc_list_storage_to_fs_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:1001,1
    - Dst: struct mailbox_list*::v::rename_mailbox
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:1002,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 977
    functionDepth: 11
    functionLinenumber: 977
    functionLinenumberEnd: 1006
    functionName: imapc_list_rename_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 0
    functionsReached:
    - imapc_list_storage_to_fs_name
    - imapc_simple_run
    - mailbox_list_set_error
    - imapc_list_simple_context_init
    - imapc_list_storage_to_remote_name
    - imapc_command_sendf
    - imapc_list_get_fs
    - struct mailbox_list*::v::rename_mailbox
    linkageType: ''
    returnType: int
    signature: "int imapc_list_rename_mailbox(struct mailbox_list *oldlist, const
      char *oldname,\n\t\t\t  struct mailbox_list *newlist, const char *newname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:1015,1
    - Dst: imapc_list_refresh
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:1017,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:1019,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c:1027,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - _list
    - name
    - flags_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1008
    functionDepth: 12
    functionLinenumber: 1008
    functionLinenumberEnd: 1033
    functionName: imapc_list_get_mailbox_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-list.c
    functionUses: 2
    functionsReached:
    - i_assert
    - imapc_list_refresh
    - mailbox_list_get_vname
    - mailbox_tree_lookup
    linkageType: ''
    returnType: int
    signature: "int imapc_list_get_mailbox_flags(struct mailbox_list *_list, const
      char *name,\n\t\t\t\t enum mailbox_info_flags *flags_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:29,1
    - Dst: mail_storage_set_internal_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:39,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:42,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:49,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:50,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:51,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 23
    functionDepth: 4
    functionLinenumber: 23
    functionLinenumberEnd: 52
    functionName: imapc_sync_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - i_free
    - mailbox_set_critical
    - i_assert
    - mail_storage_set_internal_error
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_sync_callback(const struct imapc_command_reply *reply,\n\t\t\t\tvoid
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:61,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:63,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:67,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:69,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - cmd_str
    - ignore_no
    argTypes:
    - struct imapc_sync_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 54
    functionDepth: 6
    functionLinenumber: 54
    functionLinenumberEnd: 72
    functionName: imapc_sync_cmd_full
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - imapc_client_mailbox_cmd
    - imapc_command_send
    - i_strdup
    - i_new
    linkageType: ''
    returnType: struct imapc_command
    signature: "struct imapc_command *\nimapc_sync_cmd_full(struct imapc_sync_context
      *ctx, const char *cmd_str,\n\t\t    bool ignore_no)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_sync_cmd_full
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - cmd_str
    argTypes:
    - struct imapc_sync_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 7
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: imapc_sync_cmd
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - imapc_sync_cmd_full
    linkageType: ''
    returnType: struct imapc_command
    signature: 'struct imapc_command *

      imapc_sync_cmd(struct imapc_sync_context *ctx, const char *cmd_str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_hash
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - store
    argTypes:
    - struct imapc_sync_store*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: imapc_sync_store_hash
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int imapc_sync_store_hash(const struct imapc_sync_store *store)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - store1
    - store2
    argTypes:
    - struct imapc_sync_store*
    - struct imapc_sync_store*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: imapc_sync_store_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int imapc_sync_store_cmp(const struct imapc_sync_store *store1,\n\t\t\t\tconst
      struct imapc_sync_store *store2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:95,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:98,1
    - Dst: i_qsort
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:99,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:99,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - flags
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: imapc_sync_flags_sort
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strarray_join
    - i_qsort
    - str_array_length
    - t_strsplit
    linkageType: ''
    returnType: char
    signature: char *imapc_sync_flags_sort(const char *flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_sync_flags_sort
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:113,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:113,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:118,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:120,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:122,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:123,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:124,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 127
    functionName: imapc_sync_store_flush
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - seq_range_array_add_range
    - p_new
    - p_array_init
    - imapc_sync_flags_sort
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: void imapc_sync_store_flush(struct imapc_sync_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:135,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:136,1
    - Dst: imapc_sync_store_flush
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:142,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:146,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:148,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:149,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - ctx
    - modify_type
    - uid1
    - uid2
    - flags
    argTypes:
    - struct imapc_sync_context*
    - enum modify_type
    - uint32_t
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 151
    functionName: imapc_sync_store
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - hash_table_create
    - str_append_c
    - str_len
    - str_truncate
    - str_append
    - str_new
    - imapc_sync_store_flush
    linkageType: ''
    returnType: void
    signature: "void imapc_sync_store(struct imapc_sync_context *ctx,\n\t\t enum modify_type
      modify_type, uint32_t uid1, uint32_t uid2,\n\t\t const char *flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:158,1
    - Dst: imapc_sync_store_flush
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:160,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:162,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:165,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:166,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:167,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:168,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:169,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:170,1
    - Dst: imapc_sync_cmd_full
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:173,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:173,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:175,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 153
    functionDepth: 7
    functionLinenumber: 153
    functionLinenumberEnd: 177
    functionName: imapc_sync_finish_store
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - str_c
    - t_str_new
    - str_printfa
    - hash_table_iterate
    - imapc_sync_cmd_full
    - imap_write_seq_range
    - hash_table_iterate_init
    - str_truncate
    - str_append
    - hash_table_is_created
    - hash_table_destroy
    - imapc_sync_store_flush
    linkageType: ''
    returnType: void
    signature: void imapc_sync_finish_store(struct imapc_sync_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:189,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:195,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:196,1
    - Dst: imapc_sync_store
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:198,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - seq1
    - seq2
    argTypes:
    - struct imapc_sync_context*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 179
    functionDepth: 4
    functionLinenumber: 179
    functionLinenumberEnd: 200
    functionName: imapc_sync_add_missing_deleted_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - imapc_sync_store
    - mail_index_lookup
    - mail_index_lookup_uid
    linkageType: ''
    returnType: void
    signature: "void imapc_sync_add_missing_deleted_flags(struct imapc_sync_context
      *ctx,\n\t\t\t\t     uint32_t seq1, uint32_t seq2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:207,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:210,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:212,1
    - Dst: imapc_sync_store
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:213,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:218,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:219,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:220,1
    - Dst: imapc_sync_store
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:221,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - sync_rec
    argTypes:
    - struct imapc_sync_context*
    - struct mail_index_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 202
    functionDepth: 4
    functionLinenumber: 202
    functionLinenumberEnd: 224
    functionName: imapc_sync_index_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - imap_write_flags
    - imapc_sync_store
    - str_truncate
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imapc_sync_index_flags(struct imapc_sync_context *ctx,\n\t\t\t\t
      \  const struct mail_index_sync_rec *sync_rec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:241,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:244,1
    - Dst: imapc_sync_store
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - sync_rec
    argTypes:
    - struct imapc_sync_context*
    - struct mail_index_sync_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 247
    functionName: imapc_sync_index_keyword
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - imapc_sync_store
    - array_idx_elem
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void imapc_sync_index_keyword(struct imapc_sync_context *ctx,\n\t\t\t
      const struct mail_index_sync_rec *sync_rec)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:253,1
    - Dst: imapc_sync_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:258,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:263,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:264,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:265,1
    - Dst: imapc_sync_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:266,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 249
    functionDepth: 8
    functionLinenumber: 249
    functionLinenumberEnd: 267
    functionName: imapc_sync_expunge_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append
    - imapc_sync_cmd
    - array_count
    - imap_write_seq_range
    linkageType: ''
    returnType: void
    signature: void imapc_sync_expunge_finish(struct imapc_sync_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:278,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 284
    functionName: imapc_sync_uid_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_update_header
    - mail_index_get_header
    linkageType: ''
    returnType: void
    signature: void imapc_sync_uid_next(struct imapc_sync_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_has_modseqs
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:288,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:289,1
    - Dst: mail_index_update_highest_modseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 291
    functionName: imapc_sync_highestmodseq
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_has_modseqs
    - mail_index_modseq_get_highest
    - mail_index_update_highest_modseq
    linkageType: ''
    returnType: void
    signature: void imapc_sync_highestmodseq(struct imapc_sync_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:297,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:299,1
    - Dst: imapc_msgmap_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:303,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:304,1
    - Dst: imapc_msgmap_rseq_to_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:307,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:311,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:327,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:327,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:328,1
    - Dst: imapc_mailbox_noop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:341,1
    - Dst: imapc_initial_sync_check
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:342,1
    - Dst: imapc_mailbox_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:346,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - nooped
    argTypes:
    - struct imapc_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 293
    functionDepth: 12
    functionLinenumber: 293
    functionLinenumberEnd: 352
    functionName: imapc_initial_sync_check
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 1
    functionsReached:
    - seq_range_exists
    - mail_index_lookup_uid
    - imapc_msgmap_rseq_to_uid
    - mail_index_get_header
    - imapc_client_mailbox_get_msgmap
    - mail_index_is_expunged
    - imapc_mailbox_noop
    - imapc_mailbox_set_corrupted
    - imapc_msgmap_count
    - i_assert
    - mail_index_view_get_messages_count
    - imapc_initial_sync_check
    linkageType: ''
    returnType: void
    signature: void imapc_initial_sync_check(struct imapc_sync_context *ctx, bool
      nooped)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_BOX_HAS_FEATURE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:362,1
    - Dst: imapc_sync_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:366,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:367,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:369,1
    - Dst: imapc_command_get_tag
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 354
    functionDepth: 8
    functionLinenumber: 354
    functionLinenumberEnd: 371
    functionName: imapc_sync_send_commands
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - IMAPC_BOX_HAS_FEATURE
    - imapc_command_get_tag
    - imapc_sync_cmd
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void imapc_sync_send_commands(struct imapc_sync_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:379,1
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:380,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:381,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:383,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:384,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:384,1
    - Dst: imapc_sync_add_missing_deleted_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:390,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:391,1
    - Dst: imapc_sync_index_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:395,1
    - Dst: imapc_sync_index_keyword
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 373
    functionDepth: 5
    functionLinenumber: 373
    functionLinenumberEnd: 402
    functionName: imapc_sync_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - mail_index_sync_next
    - imapc_sync_add_missing_deleted_flags
    - seq_range_array_add_range
    - mail_index_get_keywords
    - mail_index_lookup_seq_range
    - if
    - imapc_sync_index_keyword
    - imapc_sync_index_flags
    linkageType: ''
    returnType: void
    signature: void imapc_sync_index(struct imapc_sync_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:444,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:446,1
    - Dst: index_storage_get_sync_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:449,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:454,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:459,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:460,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:465,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:466,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:469,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:472,1
    - Dst: mail_cache_get_transaction
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:474,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:476,1
    - Dst: imapc_mailbox_fetch_state
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:482,1
    - Dst: imapc_mailbox_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:485,1
    - Dst: imapc_sync_index
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:489,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:491,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - mbox
    - ctx_r
    - force
    argTypes:
    - struct imapc_mailbox*
    - struct imapc_sync_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 436
    functionDepth: 7
    functionLinenumber: 436
    functionLinenumberEnd: 497
    functionName: imapc_sync_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - index_storage_get_sync_flags
    - imapc_sync_index
    - mail_index_get_header
    - mailbox_set_index_error
    - mail_index_transaction_open_updated_view
    - mail_index_sync_begin
    - imapc_mailbox_fetch_state
    - i_new
    - mail_cache_get_transaction
    - mail_cache_view_open
    - imapc_mailbox_run
    - i_assert
    - i_free
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int imapc_sync_begin(struct imapc_mailbox *mbox,\n\t\t struct imapc_sync_context
      **ctx_r, bool force)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:510,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:511,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:515,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:517,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:520,1
    - Dst: imapc_mailbox_commit_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:528,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:531,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct imapc_sync_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 499
    functionDepth: 5
    functionLinenumber: 499
    functionLinenumberEnd: 533
    functionName: imapc_sync_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - mail_index_sync_commit
    - i_free_and_null
    - mailbox_set_index_error
    - mailbox_set_critical
    - imapc_mailbox_commit_delayed_trans
    - i_free
    linkageType: ''
    returnType: int
    signature: int imapc_sync_finish(struct imapc_sync_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx1
    - ctx2
    argTypes:
    - struct imapc_untagged_fetch_ctx**
    - struct imapc_untagged_fetch_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 540
    functionName: imapc_untagged_fetch_uid_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - uid
    linkageType: ''
    returnType: int
    signature: "int imapc_untagged_fetch_uid_cmp(struct imapc_untagged_fetch_ctx *const
      *ctx1,\n\t\t\t\t\tstruct imapc_untagged_fetch_ctx *const *ctx2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:548,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:548,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:549,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:551,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:554,1
    - Dst: imapc_mailbox_get_sync_view
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:554,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:557,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:559,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:564,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:570,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:572,1
    - Dst: imapc_untagged_fetch_ctx_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:574,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:580,1
    - Dst: imapc_untagged_fetch_ctx_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:584,1
    - Dst: imapc_untagged_fetch_update_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:589,1
    - Dst: imapc_untagged_fetch_ctx_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:593,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 542
    functionDepth: 5
    functionLinenumber: 542
    functionLinenumberEnd: 594
    functionName: imapc_sync_handle_untagged_fetches
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - mail_index_transaction_begin
    - imapc_untagged_fetch_ctx_free
    - array_foreach_elem
    - mail_index_lookup_seq
    - mail_index_get_header
    - mail_index_transaction_open_updated_view
    - imapc_mailbox_get_sync_view
    - array_count
    - array_sort
    - imapc_untagged_fetch_update_flags
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imapc_sync_handle_untagged_fetches(struct imapc_mailbox *mbox)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imapc_sync_begin
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:612,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:615,1
    - Dst: imapc_sync_handle_untagged_fetches
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:616,1
    - Dst: imapc_sync_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 602
    functionDepth: 8
    functionLinenumber: 602
    functionLinenumberEnd: 623
    functionName: imapc_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - array_is_empty
    - imapc_sync_finish
    - imapc_sync_handle_untagged_fetches
    - imapc_sync_begin
    linkageType: ''
    returnType: int
    signature: int imapc_sync(struct imapc_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_noop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:639,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - mbox
    - flags
    argTypes:
    - struct imapc_mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 625
    functionDepth: 12
    functionLinenumber: 625
    functionLinenumberEnd: 641
    functionName: imapc_noop_if_needed
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_noop
    linkageType: ''
    returnType: void
    signature: void imapc_noop_if_needed(struct imapc_mailbox *mbox, enum mailbox_sync_flags
      flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 656
    functionName: imapc_mailbox_need_initial_fetch
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imapc_mailbox_need_initial_fetch(struct imapc_mailbox *mbox)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:661,1
    - Dst: imapc_noop_if_needed
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:672,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:674,1
    - Dst: imapc_mailbox_need_initial_fetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:677,1
    - Dst: imapc_mailbox_commit_delayed_trans
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:681,1
    - Dst: index_mailbox_want_full_sync
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:684,1
    - Dst: imapc_sync
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:686,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:688,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 16
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 658
    functionDepth: 14
    functionLinenumber: 658
    functionLinenumberEnd: 689
    functionName: imapc_mailbox_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - index_mailbox_sync_init
    - index_mailbox_want_full_sync
    - imapc_sync
    - imapc_mailbox_need_initial_fetch
    - imapc_storage_client_handle_auth_failure
    - IMAPC_MAILBOX
    - imapc_mailbox_commit_delayed_trans
    - imapc_noop_if_needed
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      imapc_mailbox_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:694,1
    - Dst: index_mailbox_sync_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:697,1
    - Dst: imapc_client_mailbox_idle
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - status_r
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 691
    functionDepth: 13
    functionLinenumber: 691
    functionLinenumberEnd: 705
    functionName: imapc_mailbox_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-sync.c
    functionUses: 0
    functionsReached:
    - imapc_client_mailbox_idle
    - index_mailbox_sync_deinit
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: int
    signature: "int imapc_mailbox_sync_deinit(struct mailbox_sync_context *ctx,\n\t\t\t
      \     struct mailbox_sync_status *status_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mstorage
    - ','
    - feature
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: IMAPC_HAS_FEATURE
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAPC_HAS_FEATURE(mstorage, feature)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mbox
    - ','
    - feature
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: IMAPC_BOX_HAS_FEATURE
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAPC_BOX_HAS_FEATURE(mbox, feature)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mbox
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: IMAPC_MAILBOX_IS_FULLY_SELECTED
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAPC_MAILBOX_IS_FULLY_SELECTED(mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 205
    functionName: IMAPC_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAPC_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 206
    functionName: IMAPC_MAILBOX
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-storage.h
    functionUses: 37
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAPC_MAILBOX(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: IMAPC_SAVECTX
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAPC_SAVECTX(s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:54,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:57,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 69
    functionName: imapc_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_new
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      imapc_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:76,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:78,1
    - Dst: imapc_client_create_temp_fd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:81,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:84,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:93,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:94,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:95,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - _ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 98
    functionName: imapc_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - i_stream_create_crlf
    - imapc_client_create_temp_fd
    - mail_set_critical
    - o_stream_cork
    - i_strdup
    - imapc_storage_client_handle_auth_failure
    - o_stream_create_fd_file
    - IMAPC_SAVECTX
    - i_assert
    linkageType: ''
    returnType: int
    signature: int imapc_save_begin(struct mail_save_context *_ctx, struct istream
      *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:102,1
    - Dst: index_storage_save_continue
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 100
    functionDepth: 16
    functionLinenumber: 100
    functionLinenumberEnd: 112
    functionName: imapc_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - index_storage_save_continue
    - IMAPC_SAVECTX
    linkageType: ''
    returnType: int
    signature: int imapc_save_continue(struct mail_save_context *_ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:124,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:125,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:128,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:135,1
    - Dst: seq_range_array_add_with_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:136,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - reply
    - uid_r
    argTypes:
    - struct imapc_save_context*
    - struct imapc_command_reply*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 140
    functionName: imapc_save_appenduid
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - seq_range_array_add_with_init
    - str_array_length
    - str_to_uint32
    linkageType: ''
    returnType: void
    signature: "void imapc_save_appenduid(struct imapc_save_context *ctx,\n\t\t\t\t
      const struct imapc_command_reply *reply,\n\t\t\t\t uint32_t *uid_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:146,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:152,1
    - Dst: mail_set_seq_saving
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:153,1
    - Dst: IMAPC_MAIL
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:158,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:159,1
    - Dst: imapc_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - uid
    argTypes:
    - struct imapc_save_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 142
    functionDepth: 18
    functionLinenumber: 142
    functionLinenumberEnd: 169
    functionName: imapc_save_add_to_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - mail_index_append
    - imapc_mail_init_stream
    - INDEX_MAIL
    - IMAPC_MAIL
    - i_stream_create_fd_autoclose
    - mail_set_seq_saving
    linkageType: ''
    returnType: void
    signature: void imapc_save_add_to_index(struct imapc_save_context *ctx, uint32_t
      uid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:179,1
    - Dst: imapc_save_appenduid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:180,1
    - Dst: imapc_save_add_to_index
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:181,1
    - Dst: imapc_storage_client_handle_auth_failure
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:183,1
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:186,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:190,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 171
    functionDepth: 19
    functionLinenumber: 171
    functionLinenumberEnd: 195
    functionName: imapc_save_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_client_stop
    - strcasecmp
    - imapc_copy_error_from_reply
    - imapc_storage_client_handle_auth_failure
    - mailbox_set_critical
    - imapc_save_appenduid
    - imapc_save_add_to_index
    linkageType: ''
    returnType: void
    signature: "void imapc_save_callback(const struct imapc_command_reply *reply,\n\t\t\t\tvoid
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: imapc_save_noop_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_save_noop_callback(const struct imapc_command_reply *reply
      ATTR_UNUSED,\n\t\t\t void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:215,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 226
    functionName: imapc_copy_rollback_store_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imapc_copy_rollback_store_callback(const struct imapc_command_reply
      *reply ATTR_UNUSED,\n\t\t\t\t   void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:236,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 247
    functionName: imapc_copy_rollback_expunge_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - e_error
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_copy_rollback_expunge_callback(const struct imapc_command_reply
      *reply ATTR_UNUSED,\n\t\t\t\t     void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:256,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:258,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:259,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:260,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - str
    - kw
    argTypes:
    - string_t*
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 263
    functionName: imapc_append_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_len
    - mail_index_get_keywords
    - array_idx_elem
    - str_append
    linkageType: ''
    returnType: void
    signature: void imapc_append_keywords(string_t *str, struct mail_keywords *kw)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:275,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:277,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:278,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:278,1
    - Dst: imapc_append_keywords
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:281,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:282,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:283,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:286,1
    - Dst: imap_to_datetime
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:287,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:292,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:295,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:297,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:298,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:300,1
    - Dst: imapc_mailbox_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:302,1
    - Dst: imapc_client_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:311,1
    - Dst: imapc_command_set_flags
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:313,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:314,1
    - Dst: imapc_mailbox_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:316,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 265
    functionDepth: 6
    functionLinenumber: 265
    functionLinenumberEnd: 319
    functionName: imapc_save_append
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_command_set_flags
    - str_c
    - t_str_new
    - i_stream_create_fd
    - str_append_c
    - ENUM_NEGATE
    - imapc_command_send
    - t_strdup_printf
    - imap_to_datetime
    - imap_write_flags
    - imapc_mailbox_get_remote_name
    - imapc_mailbox_run
    - i_stream_unref
    - str_append
    - imapc_command_sendf
    - imapc_client_cmd
    - imapc_append_keywords
    linkageType: ''
    returnType: int
    signature: int imapc_save_append(struct imapc_save_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:323,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:329,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:330,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:331,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:333,1
    - Dst: imapc_save_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:340,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:344,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:345,1
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:346,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:347,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:348,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 321
    functionDepth: 16
    functionLinenumber: 321
    functionLinenumberEnd: 350
    functionName: imapc_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - i_close_fd_path
    - mail_set_critical
    - o_stream_get_error
    - o_stream_unref
    - index_save_context_free
    - o_stream_finish
    - IMAPC_SAVECTX
    - imapc_save_append
    - i_free
    - mail_storage_set_error_from_errno
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int imapc_save_finish(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:354,1
    - Dst: imapc_transaction_save_commit_pre
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:357,1
    - Dst: imapc_save_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 352
    functionDepth: 17
    functionLinenumber: 352
    functionLinenumberEnd: 359
    functionName: imapc_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_save_finish
    - IMAPC_SAVECTX
    - imapc_transaction_save_commit_pre
    linkageType: ''
    returnType: void
    signature: void imapc_save_cancel(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mailbox_run_nofetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 361
    functionDepth: 10
    functionLinenumber: 361
    functionLinenumberEnd: 365
    functionName: imapc_copy_bulk_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_run_nofetch
    linkageType: ''
    returnType: void
    signature: void imapc_copy_bulk_finish(struct imapc_save_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:369,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:374,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:377,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:381,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:383,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:385,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 388
    functionName: imapc_transaction_save_commit_pre
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 1
    functionsReached:
    - array_append_array
    - IMAPC_SAVECTX
    - array_is_created
    - i_assert
    - mail_index_view_get_messages_count
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: int imapc_transaction_save_commit_pre(struct mail_save_context *_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:396,1
    - Dst: imapc_mail_copy_bulk_flush
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:402,1
    - Dst: imapc_copy_bulk_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 390
    functionDepth: 11
    functionLinenumber: 390
    functionLinenumberEnd: 409
    functionName: imapc_transaction_save_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 1
    functionsReached:
    - imapc_copy_bulk_finish
    - imapc_mail_copy_bulk_flush
    - IMAPC_SAVECTX
    linkageType: ''
    returnType: int
    signature: int imapc_transaction_save_commit(struct mailbox_transaction_context
      *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imapc_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _ctx
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 415
    functionName: imapc_transaction_save_commit_post
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_transaction_save_rollback
    linkageType: ''
    returnType: void
    signature: "void imapc_transaction_save_commit_post(struct mail_save_context *_ctx,\n\t\t\t\t\tstruct
      mail_index_transaction_commit_result *result ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:422,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:423,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:424,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:425,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:426,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - store_cmd
    - expunge_cmd
    - uids
    argTypes:
    - string_t*
    - string_t*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 429
    functionName: imapc_expunge_construct_cmd_str
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_truncate
    - str_append_str
    linkageType: ''
    returnType: void
    signature: "void imapc_expunge_construct_cmd_str(string_t *store_cmd,\n\t\t\t\tstring_t
      *expunge_cmd,\n\t\t\t\tstring_t *uids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:438,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:439,1
    - Dst: imapc_expunge_construct_cmd_str
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:441,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:443,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:443,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:444,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:444,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:446,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:449,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:453,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:453,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:454,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - uids
    argTypes:
    - struct imapc_save_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 431
    functionDepth: 6
    functionLinenumber: 431
    functionLinenumberEnd: 455
    functionName: imapc_expunge_send_cmd_str
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_client_mailbox_cmd
    - t_str_new
    - str_c
    - str_len
    - imapc_expunge_construct_cmd_str
    - imapc_command_send
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imapc_expunge_send_cmd_str(struct imapc_save_context *ctx,\n\t\t\t
      \  string_t *uids)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:466,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:469,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:470,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:471,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:474,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:477,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:479,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:483,1
    - Dst: imapc_expunge_send_cmd_str
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:484,1
    - Dst: imapc_mailbox_run_nofetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:486,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:490,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:491,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:494,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:497,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:498,1
    - Dst: imapc_expunge_send_cmd_str
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:499,1
    - Dst: imapc_mailbox_run_nofetch
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:501,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 457
    functionDepth: 10
    functionLinenumber: 457
    functionLinenumberEnd: 502
    functionName: imapc_rollback_send_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - t_str_new
    - seqset_builder_init
    - seqset_builder_try_add
    - seq_range_array_iter_init
    - str_len
    - strlen
    - array_not_empty
    - imapc_expunge_send_cmd_str
    - imapc_mailbox_run_nofetch
    - str_truncate
    - seqset_builder_add
    - seqset_builder_deinit
    linkageType: ''
    returnType: void
    signature: void imapc_rollback_send_expunge(struct imapc_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:507,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct imapc_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 509
    functionName: imapc_copy_bulk_ctx_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - i_free
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void imapc_copy_bulk_ctx_deinit(struct imapc_save_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:513,1
    - Dst: imapc_transaction_save_commit_pre
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:521,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:523,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:527,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:528,1
    - Dst: imapc_copy_bulk_ctx_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:530,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:531,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:536,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:537,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:538,1
    - Dst: imapc_rollback_send_expunge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:541,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:542,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:546,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:547,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 511
    functionDepth: 11
    functionLinenumber: 511
    functionLinenumberEnd: 549
    functionName: imapc_transaction_save_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 1
    functionsReached:
    - seq_range_array_merge
    - imapc_rollback_send_expunge
    - imapc_copy_bulk_ctx_deinit
    - imapc_transaction_save_commit_pre
    - IMAPC_SAVECTX
    - array_free
    - array_is_created
    - i_assert
    - i_free
    - imapc_client_stop
    - seqset_builder_deinit
    linkageType: ''
    returnType: void
    signature: void imapc_transaction_save_rollback(struct mail_save_context *_ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:555,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:563,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:564,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:567,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:574,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:575,1
    - Dst: imap_seq_set_nostar_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:577,1
    - Dst: imap_seq_set_nostar_parse
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:579,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:582,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:583,1
    - Dst: seq_range_array_merge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:585,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:587,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:588,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - reply
    - uid_r
    argTypes:
    - struct imapc_save_context*
    - struct imapc_command_reply*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 590
    functionName: imapc_save_copyuid
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - seq_range_array_iter_nth
    - seq_range_array_merge
    - seq_range_array_iter_init
    - str_array_length
    - str_to_uint32
    - array_is_created
    - t_strsplit
    - t_array_init
    - ARRAY_TYPE
    - imap_seq_set_nostar_parse
    linkageType: ''
    returnType: bool
    signature: "bool imapc_save_copyuid(struct imapc_save_context *ctx,\n\t\t\t       const
      struct imapc_command_reply *reply,\n\t\t\t       uint32_t *uid_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:598,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sctx
    - reply
    argTypes:
    - struct imapc_save_context*
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 592
    functionDepth: 4
    functionLinenumber: 592
    functionLinenumberEnd: 604
    functionName: imapc_copy_set_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - imapc_copy_error_from_reply
    linkageType: ''
    returnType: void
    signature: "void imapc_copy_set_error(struct imapc_save_context *sctx,\n\t\t\t\t
      const struct imapc_command_reply *reply)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:615,1
    - Dst: imapc_save_copyuid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:616,1
    - Dst: imapc_save_add_to_index
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:617,1
    - Dst: imapc_copy_error_from_reply
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:620,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:624,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:628,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 606
    functionDepth: 19
    functionLinenumber: 606
    functionLinenumberEnd: 629
    functionName: imapc_copy_simple_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_copy_error_from_reply
    - strcasecmp
    - mailbox_set_critical
    - imapc_save_copyuid
    - imapc_client_stop
    - imapc_save_add_to_index
    linkageType: ''
    returnType: void
    signature: "void imapc_copy_simple_callback(const struct imapc_command_reply *reply,\n\t\t\t
      \  void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:634,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:641,1
    - Dst: imapc_command_sendf
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:644,1
    - Dst: imapc_mailbox_run
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 631
    functionDepth: 4
    functionLinenumber: 631
    functionLinenumberEnd: 649
    functionName: imapc_copy_simple
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_run
    - imapc_client_mailbox_cmd
    - imapc_command_sendf
    - IMAPC_SAVECTX
    linkageType: ''
    returnType: int
    signature: int imapc_copy_simple(struct mail_save_context *_ctx, struct mail *mail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:659,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:660,1
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:668,1
    - Dst: imapc_save_copyuid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:669,1
    - Dst: imapc_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:670,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:674,1
    - Dst: imapc_save_copyuid
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:675,1
    - Dst: imapc_copy_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:679,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:683,1
    - Dst: imapc_client_stop
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:684,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 651
    functionDepth: 12
    functionLinenumber: 651
    functionLinenumberEnd: 685
    functionName: imapc_copy_bulk_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - i_assert
    - imapc_copy_set_error
    - null_strcasecmp
    - strcasecmp
    - imapc_transaction_save_rollback
    - imapc_save_copyuid
    - i_free
    - imapc_client_stop
    linkageType: ''
    returnType: void
    signature: "void imapc_copy_bulk_callback(const struct imapc_command_reply *reply,\n\t\t\t\t
      \    void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:691,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:692,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:693,1
    - Dst: imapc_client_mailbox_cmd
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:695,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:699,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:701,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:702,1
    - Dst: imapc_command_send
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:704,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:704,1
    - Dst: imapc_copy_bulk_ctx_deinit
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct imapc_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 687
    functionDepth: 6
    functionLinenumber: 687
    functionLinenumberEnd: 707
    functionName: imapc_mail_copy_bulk_flush
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 1
    functionsReached:
    - imapc_client_mailbox_cmd
    - str_c
    - imapc_command_send
    - imapc_copy_bulk_ctx_deinit
    - imap_append_astring
    - str_append
    - i_assert
    - seqset_builder_deinit
    linkageType: ''
    returnType: void
    signature: void imapc_mail_copy_bulk_flush(struct imapc_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:713,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:713,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:713,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:715,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mbox
    - uid
    - box
    argTypes:
    - struct imapc_mailbox*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 721
    functionName: imapc_mail_copy_bulk_try_merge
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - str_begins_with
    - seqset_builder_try_add
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool imapc_mail_copy_bulk_try_merge(struct imapc_mailbox *mbox, uint32_t
      uid,\n\t\t\t       const char *box)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imapc_mail_copy_bulk_try_merge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:731,1
    - Dst: imapc_mail_copy_bulk_flush
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:734,1
    - Dst: imapc_copy_bulk_finish
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:735,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:739,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:740,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:742,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:743,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:745,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - uid
    - box
    argTypes:
    - struct imapc_save_context*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 723
    functionDepth: 11
    functionLinenumber: 723
    functionLinenumberEnd: 750
    functionName: imapc_mail_copy_bulk_delayed_send_or_merge
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - seqset_builder_init
    - i_assert
    - i_strdup
    - i_new
    - seqset_builder_add
    - imapc_copy_bulk_finish
    - imapc_mail_copy_bulk_flush
    - imapc_mail_copy_bulk_try_merge
    linkageType: ''
    returnType: void
    signature: "void imapc_mail_copy_bulk_delayed_send_or_merge(struct imapc_save_context
      *ctx,\n\t\t\t\t\t   uint32_t uid,\n\t\t\t\t\t   const char *box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:755,1
    - Dst: imapc_mail_copy_bulk_delayed_send_or_merge
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:757,1
    - Dst: imapc_mailbox_get_remote_name
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:758,1
    - Dst: imapc_save_add_to_index
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct imapc_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 752
    functionDepth: 19
    functionLinenumber: 752
    functionLinenumberEnd: 762
    functionName: imapc_copy_bulk
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - imapc_mailbox_get_remote_name
    - imapc_save_add_to_index
    - imapc_mail_copy_bulk_delayed_send_or_merge
    - IMAPC_MAILBOX
    linkageType: ''
    returnType: int
    signature: int imapc_copy_bulk(struct imapc_save_context *ctx, struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:766,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:767,1
    - Dst: mail_index_transaction_get_view
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:773,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:775,1
    - Dst: mail_index_transaction_is_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:776,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - mbox
    - uid
    argTypes:
    - struct imapc_mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 764
    functionDepth: 3
    functionLinenumber: 764
    functionLinenumberEnd: 777
    functionName: imapc_is_mail_expunged
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - seq_range_exists
    - mail_index_lookup_seq
    - mail_index_transaction_is_expunged
    - mail_index_transaction_get_view
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool imapc_is_mail_expunged(struct imapc_mailbox *mbox, uint32_t uid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IMAPC_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:781,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:787,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:792,1
    - Dst: IMAPC_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:793,1
    - Dst: imapc_is_mail_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:794,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:795,1
    - Dst: imapc_client_mailbox_get_msgmap
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:798,1
    - Dst: imapc_msgmap_uid_to_rseq
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:800,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:801,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:805,1
    - Dst: imapc_client_get_capabilities
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:812,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:814,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:818,1
    - Dst: imapc_copy_bulk
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:823,1
    - Dst: imapc_copy_simple
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:825,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:826,1
    - Dst: mail_storage_copy
      Src: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c:829,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - _ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 779
    functionDepth: 20
    functionLinenumber: 779
    functionLinenumberEnd: 830
    functionName: imapc_copy
    functionSourceFile: /src/dovecot/src/lib-storage/index/imapc/imapc-save.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - mail_storage_copy
    - imapc_copy_simple
    - imapc_client_mailbox_get_msgmap
    - imapc_is_mail_expunged
    - imapc_client_get_capabilities
    - imapc_copy_bulk
    - IMAPC_SAVECTX
    - IMAPC_MAILBOX
    - imapc_msgmap_uid_to_rseq
    - i_assert
    - mail_storage_set_error
    - index_save_context_free
    linkageType: ''
    returnType: int
    signature: int imapc_copy(struct mail_save_context *_ctx, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: RAW_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RAW_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: RAW_MAILBOX
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RAW_MAILBOX(s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:19,1
    - Dst: index_storage_get_sync_flags
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:21,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:25,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:31,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:35,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:40,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:45,1
    - Dst: mailbox_recent_flags_set_uid
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:46,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:48,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:49,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct raw_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 9
    functionDepth: 5
    functionLinenumber: 9
    functionLinenumberEnd: 55
    functionName: raw_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_next
    - mail_index_append
    - mail_index_update_header
    - mail_index_sync_commit
    - index_storage_get_sync_flags
    - mailbox_set_index_error
    - mail_index_sync_begin
    - i_assert
    - mail_index_view_get_messages_count
    - mailbox_recent_flags_set_uid
    linkageType: ''
    returnType: int
    signature: int raw_sync(struct raw_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RAW_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:60,1
    - Dst: raw_sync
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:64,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/index/raw/raw-sync.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 57
    functionDepth: 14
    functionLinenumber: 57
    functionLinenumberEnd: 67
    functionName: raw_storage_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-sync.c
    functionUses: 0
    functionsReached:
    - index_mailbox_sync_init
    - RAW_MAILBOX
    - raw_sync
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      raw_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RAW_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:14,1
    - Dst: mail_metadata_access_start
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:17,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:21,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:22,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:23,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 12
    functionDepth: 4
    functionLinenumber: 12
    functionLinenumberEnd: 33
    functionName: raw_mail_stat
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-mail.c
    functionUses: 0
    functionsReached:
    - RAW_MAILBOX
    - mail_set_critical
    - i_stream_stat
    - mail_metadata_access_start
    - i_stream_get_name
    linkageType: ''
    returnType: int
    signature: int raw_mail_stat(struct mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:37,1
    - Dst: RAW_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:38,1
    - Dst: raw_mail_stat
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 35
    functionDepth: 5
    functionLinenumber: 35
    functionLinenumberEnd: 47
    functionName: raw_mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - RAW_MAILBOX
    - raw_mail_stat
    linkageType: ''
    returnType: int
    signature: int raw_mail_get_received_date(struct mail *_mail, time_t *date_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:51,1
    - Dst: RAW_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:52,1
    - Dst: raw_mail_stat
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: raw_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - RAW_MAILBOX
    - raw_mail_stat
    linkageType: ''
    returnType: int
    signature: int raw_mail_get_save_date(struct mail *_mail, time_t *date_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:65,1
    - Dst: RAW_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:66,1
    - Dst: raw_mail_stat
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 63
    functionDepth: 5
    functionLinenumber: 63
    functionLinenumberEnd: 75
    functionName: raw_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - RAW_MAILBOX
    - raw_mail_stat
    linkageType: ''
    returnType: int
    signature: int raw_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:82,1
    - Dst: mail_stream_access_start
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:85,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:90,1
    - Dst: index_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - _mail
    - ATTR_UNUSED
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct mail*
    - bool
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 77
    functionDepth: 17
    functionLinenumber: 77
    functionLinenumberEnd: 94
    functionName: raw_mail_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - mail_stream_access_start
    - index_mail_init_stream
    - i_stream_create_limit
    linkageType: ''
    returnType: int
    signature: "int raw_mail_get_stream(struct mail *_mail, bool get_body ATTR_UNUSED,\n\t\t
      \   struct message_size *hdr_size,\n\t\t    struct message_size *body_size,
      struct istream **stream_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RAW_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:100,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:109,1
    - Dst: index_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/raw/raw-mail.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 96
    functionDepth: 20
    functionLinenumber: 96
    functionLinenumberEnd: 114
    functionName: raw_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - RAW_MAILBOX
    - index_mail_get_special
    linkageType: ''
    returnType: int
    signature: "int raw_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t     const char **value_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:30,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:32,1
    - Dst: event_disable_callbacks
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:35,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:38,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:43,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:62,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:64,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:65,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:67,1
    - Dst: mail_namespaces_init_empty
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:71,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:74,1
    - Dst: mail_storage_create
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:78,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:79,1
    - Dst: mail_namespaces_init_finish
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:80,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:81,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:84,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - set_instance
    argTypes:
    - struct mail_storage_service_ctx*
    - struct settings_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 18
    functionDepth: 11
    functionLinenumber: 18
    functionLinenumberEnd: 88
    functionName: raw_storage_create_from_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 2
    functionsReached:
    - event_create
    - mail_storage_service_io_deactivate_user
    - event_unref
    - p_new
    - mail_namespaces_init_empty
    - mail_storage_service_lookup_next
    - ENUM_NEGATE
    - mail_storage_create
    - io_loop_context_switch
    - i_fatal
    - t_strdup_printf
    - event_disable_callbacks
    - mail_namespaces_init_finish
    - io_loop_get_current_context
    - master_service_get_service_settings
    linkageType: ''
    returnType: struct mail_user
    signature: "struct mail_user *\nraw_storage_create_from_set(struct mail_storage_service_ctx
      *ctx,\n\t\t\t    struct settings_instance *set_instance)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:100,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:101,1
    - Dst: mailbox_open_stream
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:104,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:107,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:110,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:113,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:113,1
    - Dst: RAW_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:114,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:115,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 6
    argNames:
    - user
    - input
    - path
    - received_time
    - envelope_sender
    - box_r
    argTypes:
    - struct mail_user*
    - struct istream*
    - char*
    - time_t
    - char*
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 91
    functionDepth: 11
    functionLinenumber: 91
    functionLinenumberEnd: 118
    functionName: raw_mailbox_alloc_common
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - RAW_MAILBOX
    - mailbox_open
    - mailbox_open_stream
    - mailbox_sync
    - mailbox_alloc
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void raw_mailbox_alloc_common(struct mail_user *user, struct istream
      *input,\n\t\t\t const char *path, time_t received_time,\n\t\t\t const char *envelope_sender,
      struct mailbox **box_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raw_mailbox_alloc_common
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - user
    - input
    - received_time
    - envelope_sender
    - box_r
    argTypes:
    - struct mail_user*
    - struct istream*
    - time_t
    - char*
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 12
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: raw_mailbox_alloc_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 2
    functionsReached:
    - raw_mailbox_alloc_common
    linkageType: ''
    returnType: int
    signature: "int raw_mailbox_alloc_stream(struct mail_user *user, struct istream
      *input,\n\t\t\t     time_t received_time, const char *envelope_sender,\n\t\t\t
      \    struct mailbox **box_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raw_mailbox_alloc_common
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - user
    - path
    - received_time
    - envelope_sender
    - box_r
    argTypes:
    - struct mail_user*
    - char*
    - time_t
    - char*
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 128
    functionDepth: 12
    functionLinenumber: 128
    functionLinenumberEnd: 134
    functionName: raw_mailbox_alloc_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 1
    functionsReached:
    - raw_mailbox_alloc_common
    linkageType: ''
    returnType: int
    signature: "int raw_mailbox_alloc_path(struct mail_user *user, const char *path,\n\t\t\t
      \  time_t received_time, const char *envelope_sender,\n\t\t\t   struct mailbox
      **box_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:141,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 146
    functionName: raw_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *raw_storage_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:157,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:158,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:165,1
    - Dst: RAW_STORAGE
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 148
    functionDepth: 6
    functionLinenumber: 148
    functionLinenumberEnd: 171
    functionName: raw_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - index_storage_mailbox_alloc
    - p_new
    - RAW_STORAGE
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nraw_mailbox_alloc(struct mail_storage *storage,
      struct mailbox_list *list,\n\t\t  const char *vname, enum mailbox_flags flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RAW_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:175,1
    - Dst: index_storage_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:181,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:186,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:188,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:189,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:191,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:192,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:193,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:197,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:198,1
    - Dst: i_stream_set_init_buffer_size
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:199,1
    - Dst: index_storage_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 173
    functionDepth: 9
    functionLinenumber: 173
    functionLinenumberEnd: 201
    functionName: raw_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 0
    functionsReached:
    - ENOTFOUND
    - RAW_MAILBOX
    - index_storage_mailbox_open
    - i_stream_set_name
    - i_stream_set_init_buffer_size
    - open
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - i_stream_create_fd_autoclose
    - mailbox_set_critical
    - mail_storage_set_error_from_errno
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int raw_mailbox_open(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - box
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: raw_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int raw_mailbox_create(struct mailbox *box,\n\t\t   const struct mailbox_update
      *update ATTR_UNUSED,\n\t\t   bool directory ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/raw/raw-storage.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - box
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 220
    functionName: raw_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int raw_mailbox_update(struct mailbox *box,\n\t\t   const struct mailbox_update
      *update ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: raw_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/index/raw/raw-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void raw_notify_changes(struct mailbox *box ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:44,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 49
    functionName: maildir_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *maildir_storage_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_STORAGE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:55,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:59,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:63,1
    - Dst: mailbox_list_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:64,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:70,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:72,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:75,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - _storage
    - ns
    - ATTR_UNUSED
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 80
    functionName: maildir_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - mailbox_list_get_temp_prefix
    - mailbox_list_get_root_forced
    - MAILDIR_STORAGE
    - p_strconcat
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int maildir_storage_create(struct mail_storage *_storage, struct mail_namespace
      *ns,\n\t\t       const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_STORAGE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:84,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:86,1
    - Dst: index_storage_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: maildir_storage_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - MAILDIR_STORAGE
    - index_storage_destroy
    - settings_free
    linkageType: ''
    returnType: void
    signature: void maildir_storage_destroy(struct mail_storage *_storage)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:99,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:100,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:101,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:102,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:106,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:109,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:110,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 117
    functionName: maildir_storage_find_root_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - mail_user_get_home
    - e_debug
    - t_strconcat
    - i_faccessat2
    linkageType: ''
    returnType: char
    signature: 'char *

      maildir_storage_find_root_dir(const struct mail_namespace *ns)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: maildir_storage_find_root_dir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:132,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:134,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:139,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:140,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:141,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:145,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:146,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - ns
    - mail_set
    - root_path_r
    - inbox_path_r ATTR_UNUSED
    argTypes:
    - struct mail_namespace*
    - struct mail_storage_settings*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 119
    functionDepth: 5
    functionLinenumber: 119
    functionLinenumberEnd: 152
    functionName: maildir_storage_autodetect
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - e_debug
    - maildir_storage_find_root_dir
    - stat
    - S_ISDIR
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool maildir_storage_autodetect(const struct mail_namespace *ns,\n\t\t\t
      \  const struct mail_storage_settings *mail_set,\n\t\t\t   const char **root_path_r,\n\t\t\t
      \  const char **inbox_path_r ATTR_UNUSED)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:161,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:165,1
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:170,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:171,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:179,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:182,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:184,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:187,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:191,1
    - Dst: mail_error_create_eacces_msg
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:192,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:194,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - box
    - dir
    - verify
    argTypes:
    - struct mailbox*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 154
    functionDepth: 4
    functionLinenumber: 154
    functionLinenumberEnd: 197
    functionName: mkdir_verify
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - mkdir_parents_chgrp
    - mailbox_get_permissions
    - mail_error_create_eacces_msg
    - stat
    - ENOACCESS
    - mailbox_set_critical
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int mkdir_verify(struct mailbox *box, const char *dir, bool verify)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:206,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:207,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:210,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:211,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:212,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:215,1
    - Dst: unlink_old_files
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:226,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - storage
    - dir
    argTypes:
    - struct mail_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 199
    functionDepth: 4
    functionLinenumber: 199
    functionLinenumberEnd: 230
    functionName: maildir_check_tmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - unlink_old_files
    - mail_error_eacces_msg
    - stat
    - ENOACCESS
    - mail_storage_set_critical
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int maildir_check_tmp(struct mail_storage *storage, const char *dir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:240,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:244,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:245,1
    - Dst: mkdir_verify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:246,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - box
    - verify
    argTypes:
    - struct mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 233
    functionDepth: 5
    functionLinenumber: 233
    functionLinenumberEnd: 256
    functionName: create_maildir_subdirs
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - t_strconcat
    - N_ELEMENTS
    - mailbox_get_path_to
    - mkdir_verify
    linkageType: ''
    returnType: int
    signature: int create_maildir_subdirs(struct mailbox *box, bool verify)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_lock_touch
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: maildir_lock_touch_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_lock_touch
    linkageType: ''
    returnType: void
    signature: void maildir_lock_touch_timeout(struct maildir_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:270,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:271,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:279,1
    - Dst: MAILDIR_STORAGE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 263
    functionDepth: 6
    functionLinenumber: 263
    functionLinenumberEnd: 283
    functionName: maildir_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - index_storage_mailbox_alloc
    - p_new
    - MAILDIR_STORAGE
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nmaildir_mailbox_alloc(struct mail_storage *storage,
      struct mailbox_list *list,\n\t\t      const char *vname, enum mailbox_flags
      flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:287,1
    - Dst: maildir_uidlist_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:289,1
    - Dst: maildir_keywords_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:290,1
    - Dst: maildir_uidlist_lock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:293,1
    - Dst: maildir_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:294,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:297,1
    - Dst: index_storage_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:302,1
    - Dst: maildir_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:303,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:308,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 285
    functionDepth: 9
    functionLinenumber: 285
    functionLinenumberEnd: 311
    functionName: maildir_mailbox_open_existing
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_open
    - maildir_uidlist_init
    - MAILDIR_MAILBOX
    - timeout_add
    - maildir_keywords_init
    - mail_index_ext_register
    - maildir_uidlist_lock
    - maildir_mailbox_close
    linkageType: ''
    returnType: int
    signature: int maildir_mailbox_open_existing(struct mailbox *box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:315,1
    - Dst: index_storage_is_readonly
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:317,1
    - Dst: maildir_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:320,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:323,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 327
    functionName: maildir_storage_is_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - maildir_is_backend_readonly
    - index_storage_is_readonly
    - MAILDIR_MAILBOX
    - mailbox_get_private_flags_mask
    linkageType: ''
    returnType: bool
    signature: bool maildir_storage_is_readonly(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:333,1
    - Dst: index_storage_mailbox_exists_full
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - box
    - auto_boxes
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 329
    functionDepth: 6
    functionLinenumber: 329
    functionLinenumberEnd: 339
    functionName: maildir_mailbox_exists
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_mailbox_exists_full
    - mailbox_is_autocreated
    linkageType: ''
    returnType: int
    signature: "int maildir_mailbox_exists(struct mailbox *box, bool auto_boxes,\n\t\t
      \      enum mailbox_existence *existence_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:348,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:349,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:350,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - box_path
    - error_path
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 362
    functionName: maildir_has_any_subdir
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - stat
    - t_strconcat
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: "bool maildir_has_any_subdir(const char *box_path,\n\t\t\t\t   const
      char **error_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:371,1
    - Dst: maildir_has_any_subdir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:372,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - box_path
    - root_dir
    - error_path_r
    argTypes:
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 375
    functionName: maildir_is_selectable
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - maildir_has_any_subdir
    - stat
    linkageType: ''
    returnType: bool
    signature: "bool maildir_is_selectable(const char *box_path,\n\t\t\t\t  const
      char *root_dir,\n\t\t\t\t  const char **error_path_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:379,1
    - Dst: maildir_check_tmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:385,1
    - Dst: maildir_mailbox_open_existing
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:388,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:395,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:396,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:397,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:398,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:401,1
    - Dst: maildir_is_selectable
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:417,1
    - Dst: create_maildir_subdirs
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:419,1
    - Dst: maildir_mailbox_open_existing
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:422,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:426,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:427,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:430,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 377
    functionDepth: 10
    functionLinenumber: 377
    functionLinenumberEnd: 433
    functionName: maildir_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_path
    - maildir_mailbox_open_existing
    - maildir_is_selectable
    - mailbox_list_get_root_forced
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mailbox_set_critical
    - create_maildir_subdirs
    - maildir_check_tmp
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int maildir_mailbox_open(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:437,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:442,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:446,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:448,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:449,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:450,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:451,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:454,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:458,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:460,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:461,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:465,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:469,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 435
    functionDepth: 5
    functionLinenumber: 435
    functionLinenumberEnd: 471
    functionName: maildir_create_shared
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - eperm_error_get_chgrp
    - mailbox_get_permissions
    - i_close_fd
    - umask
    - open
    - mailbox_set_critical
    - i_assert
    - t_strconcat
    - mailbox_get_path_to
    - fchown
    linkageType: ''
    returnType: int
    signature: int maildir_create_shared(struct mailbox *box)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:476,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:482,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:488,1
    - Dst: maildir_uidlist_lock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:489,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:493,1
    - Dst: maildir_uidlist_set_mailbox_guid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:494,1
    - Dst: maildir_uidlist_set_uid_validity
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:496,1
    - Dst: maildir_uidlist_set_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:498,1
    - Dst: maildir_uidlist_update
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:501,1
    - Dst: index_storage_mailbox_update
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:504,1
    - Dst: maildir_uidlist_unlock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:506,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 473
    functionDepth: 10
    functionLinenumber: 473
    functionLinenumberEnd: 508
    functionName: maildir_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_open
    - maildir_uidlist_set_mailbox_guid
    - index_storage_mailbox_update
    - MAILDIR_MAILBOX
    - maildir_uidlist_update
    - maildir_uidlist_set_uid_validity
    - maildir_uidlist_set_next_uid
    - guid_128_is_empty
    - maildir_uidlist_lock
    - maildir_uidlist_unlock
    linkageType: ''
    returnType: int
    signature: int maildir_mailbox_update(struct mailbox *box, const struct mailbox_update
      *update)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:519,1
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:521,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:523,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:523,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:525,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:526,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:527,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:531,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:535,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:540,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:543,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:544,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:548,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 510
    functionDepth: 4
    functionLinenumber: 510
    functionLinenumberEnd: 553
    functionName: maildir_create_maildirfolder_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_path
    - eperm_error_get_chgrp
    - mailbox_get_permissions
    - i_close_fd
    - umask
    - open
    - mailbox_set_critical
    - t_strconcat
    - mail_storage_set_error
    - fchown
    linkageType: ''
    returnType: int
    signature: int maildir_create_maildirfolder_file(struct mailbox *box)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:566,1
    - Dst: create_maildir_subdirs
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:570,1
    - Dst: maildir_create_maildirfolder_file
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:572,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:576,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:578,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:579,1
    - Dst: maildir_create_shared
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:580,1
    - Dst: maildir_mailbox_update
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:584,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 555
    functionDepth: 11
    functionLinenumber: 555
    functionLinenumberEnd: 588
    functionName: maildir_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - maildir_create_shared
    - maildir_create_maildirfolder_file
    - mailbox_list_get_root_forced
    - stat
    - create_maildir_subdirs
    - index_storage_mailbox_create
    - t_strconcat
    - maildir_mailbox_update
    linkageType: ''
    returnType: int
    signature: "int maildir_mailbox_create(struct mailbox *box, const struct mailbox_update
      *update,\n\t\t       bool directory)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:595,1
    - Dst: index_mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:597,1
    - Dst: maildir_uidlist_get_mailbox_guid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:601,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 590
    functionDepth: 12
    functionLinenumber: 590
    functionLinenumberEnd: 606
    functionName: maildir_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - MAILDIR_MAILBOX
    - maildir_uidlist_get_mailbox_guid
    - index_mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int maildir_mailbox_get_metadata(struct mailbox *box,\n\t\t\t     enum
      mailbox_metadata_items items,\n\t\t\t     struct mailbox_metadata *metadata_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:610,1
    - Dst: maildir_uidlist_unlock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:613,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:614,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:618,1
    - Dst: maildir_keywords_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:620,1
    - Dst: maildir_uidlist_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:622,1
    - Dst: index_storage_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:623,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 608
    functionDepth: 6
    functionLinenumber: 608
    functionLinenumberEnd: 624
    functionName: maildir_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 1
    functionsReached:
    - MAILDIR_MAILBOX
    - maildir_uidlist_unlock
    - maildir_keywords_deinit
    - index_storage_mailbox_close
    - mail_index_view_close
    - maildir_uidlist_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void maildir_mailbox_close(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:628,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:629,1
    - Dst: mailbox_watch_remove_all
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:632,1
    - Dst: mailbox_watch_add
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:634,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:635,1
    - Dst: mailbox_watch_add
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:636,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 626
    functionDepth: 2
    functionLinenumber: 626
    functionLinenumberEnd: 639
    functionName: maildir_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - MAILDIR_MAILBOX
    - mailbox_watch_remove_all
    - mailbox_watch_add
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void maildir_notify_changes(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:645,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:646,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:647,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 648
    functionName: maildir_is_internal_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool maildir_is_internal_name(struct mailbox_list *list ATTR_UNUSED,\n\t\t\t
      const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:655,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - list
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 660
    functionName: maildir_storage_add_list
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: "void maildir_storage_add_list(struct mail_storage *storage ATTR_UNUSED,\n\t\t\t\t
      \    struct mailbox_list *list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:666,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:667,1
    - Dst: mailbox_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 662
    functionDepth: 8
    functionLinenumber: 662
    functionLinenumberEnd: 669
    functionName: maildir_get_uidvalidity_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_uidvalidity_next
    - t_strconcat
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t maildir_get_uidvalidity_next(struct mailbox_list *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:673,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:681,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:686,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:689,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:693,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:693,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:695,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 671
    functionDepth: 3
    functionLinenumber: 671
    functionLinenumberEnd: 699
    functionName: maildir_get_private_flags_mask
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_path
    - mailbox_list_get_root_path
    - MAILDIR_MAILBOX
    - mailbox_list_get_root_forced
    - stat
    - t_strconcat
    linkageType: ''
    returnType: enum mail_flags
    signature: enum mail_flags maildir_get_private_flags_mask(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:709,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:710,1
    - Dst: index_mail_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - t
    - wanted_fields
    - wanted_headers
    argTypes:
    - struct mailbox_transaction_context*
    - enum mail_fetch_field
    - struct mailbox_header_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 701
    functionDepth: 3
    functionLinenumber: 701
    functionLinenumberEnd: 715
    functionName: maildir_mail_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 0
    functionsReached:
    - index_mail_init
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\nmaildir_mail_alloc(struct mailbox_transaction_context
      *t,\n\t\t   enum mail_fetch_field wanted_fields,\n\t\t   struct mailbox_header_lookup_ctx
      *wanted_headers)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:720,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:723,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:723,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c:724,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 717
    functionDepth: 2
    functionLinenumber: 717
    functionLinenumberEnd: 728
    functionName: maildir_is_backend_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.c
    functionUses: 1
    functionsReached:
    - ENOACCESS
    - mailbox_get_path
    - t_strconcat
    - i_faccessat2
    linkageType: ''
    returnType: bool
    signature: bool maildir_is_backend_readonly(struct maildir_mailbox *mbox)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_link
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:29,1
    - Dst: link
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:31,1
    - Dst: ENOQUOTA
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:36,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:37,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:45,1
    - Dst: ECANTLINK
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:45,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:48,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - mbox
    - path
    - ctx
    argTypes:
    - struct maildir_mailbox*
    - char*
    - struct hardlink_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 23
    functionDepth: 4
    functionLinenumber: 23
    functionLinenumberEnd: 55
    functionName: do_hardlink
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c
    functionUses: 0
    functionsReached:
    - ECANTLINK
    - nfs_safe_link
    - ENOQUOTA
    - link
    - ENOACCESS
    - mailbox_set_critical
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int do_hardlink(struct maildir_mailbox *mbox, const char *path,\n\t\t
      \      struct hardlink_ctx *ctx)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:60,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:68,1
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:69,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:70,1
    - Dst: maildir_filename_generate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:80,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:81,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:83,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:83,1
    - Dst: maildir_file_do
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:87,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:92,1
    - Dst: do_hardlink
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:95,1
    - Dst: maildir_save_add
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:105,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:106,1
    - Dst: maildir_save_set_dest_basename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:108,1
    - Dst: maildir_save_finish_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:112,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:117,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:119,1
    - Dst: maildir_save_set_sizes
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:121,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 57
    functionDepth: 5
    functionLinenumber: 57
    functionLinenumberEnd: 124
    functionName: maildir_copy_hardlink
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_zero
    - mailbox_get_path
    - mail_get_virtual_size
    - maildir_file_do
    - maildir_save_add
    - maildir_save_set_dest_basename
    - mail_get_physical_size
    - maildir_filename_generate
    - MAILDIR_MAILBOX
    - t_strdup_printf
    - maildir_save_finish_keywords
    - maildir_save_set_sizes
    - mail_get_special
    - do_hardlink
    linkageType: ''
    returnType: int
    signature: int maildir_copy_hardlink(struct mail_save_context *ctx, struct mail
      *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:129,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:132,1
    - Dst: mail_storage_copy_can_use_hardlink
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:135,1
    - Dst: maildir_copy_hardlink
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:137,1
    - Dst: index_save_context_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 126
    functionDepth: 16
    functionLinenumber: 126
    functionLinenumberEnd: 146
    functionName: maildir_copy
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-copy.c
    functionUses: 0
    functionsReached:
    - mail_storage_copy_can_use_hardlink
    - MAILDIR_MAILBOX
    - maildir_copy_hardlink
    - i_assert
    - index_save_context_free
    linkageType: ''
    returnType: int
    signature: int maildir_copy(struct mail_save_context *ctx, struct mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID(c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:28,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:30,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:36,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:37,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:38,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:40,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - mbox
    - path
    - ctx
    argTypes:
    - struct maildir_mailbox*
    - char*
    - struct maildir_open_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 24
    functionDepth: 4
    functionLinenumber: 24
    functionLinenumberEnd: 44
    functionName: do_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - mail_error_eacces_msg
    - nfs_safe_open
    - i_strdup
    - ENOACCESS
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: "int do_open(struct maildir_mailbox *mbox, const char *path,\n\tstruct
      maildir_open_context *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:49,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:54,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:55,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:56,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - mbox
    - path
    - st
    argTypes:
    - struct maildir_mailbox*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 46
    functionDepth: 4
    functionLinenumber: 46
    functionLinenumberEnd: 61
    functionName: do_stat
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - mail_error_eacces_msg
    - stat
    - ENOACCESS
    linkageType: ''
    returnType: int
    signature: int do_stat(struct maildir_mailbox *mbox, const char *path, struct
      stat *st)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_stream_access_start
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:73,1
    - Dst: maildir_file_do
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:81,1
    - Dst: maildir_save_file_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:84,1
    - Dst: do_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:85,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:91,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:95,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:97,1
    - Dst: maildir_lose_unexpected_dir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:98,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:102,1
    - Dst: index_mail_set_read_buffer_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:103,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:105,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - mbox
    - mail
    - deleted_r
    argTypes:
    - struct maildir_mailbox*
    - struct mail*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 63
    functionDepth: 5
    functionLinenumber: 63
    functionLinenumberEnd: 107
    functionName: maildir_open_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_set_read_buffer_size
    - maildir_file_do
    - do_open
    - i_stream_set_name
    - mail_stream_access_start
    - maildir_save_file_get_path
    - maildir_lose_unexpected_dir
    - i_stream_create_fd_autoclose
    - i_assert
    - i_free
    - i_stream_destroy
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\nmaildir_open_mail(struct maildir_mailbox *mbox,
      struct mail *mail,\n\t\t  bool *deleted_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:111,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:112,1
    - Dst: mail_metadata_access_start
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:116,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:124,1
    - Dst: mail_metadata_accessed_event
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:126,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:126,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:129,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:131,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:132,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:133,1
    - Dst: maildir_file_do
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:138,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:141,1
    - Dst: maildir_save_file_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:146,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:147,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:148,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - mail
    - st_r
    argTypes:
    - struct mail*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 153
    functionName: maildir_mail_stat
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - maildir_file_do
    - i_stream_get_fd
    - mail_set_critical
    - mail_event
    - MAILDIR_MAILBOX
    - INDEX_MAIL
    - fstat
    - maildir_save_file_get_path
    - stat
    - mail_get_stream
    - mail_metadata_accessed_event
    - mail_metadata_access_start
    - i_stream_get_name
    linkageType: ''
    returnType: int
    signature: int maildir_mail_stat(struct mail *mail, struct stat *st_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:157,1
    - Dst: index_mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:161,1
    - Dst: maildir_mail_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 155
    functionDepth: 11
    functionLinenumber: 155
    functionLinenumberEnd: 169
    functionName: maildir_mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_get_received_date
    - maildir_mail_stat
    linkageType: ''
    returnType: int
    signature: int maildir_mail_get_received_date(struct mail *_mail, time_t *date_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:173,1
    - Dst: index_mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:177,1
    - Dst: maildir_mail_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 171
    functionDepth: 11
    functionLinenumber: 171
    functionLinenumberEnd: 185
    functionName: maildir_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_get_save_date
    - maildir_mail_stat
    linkageType: ''
    returnType: int
    signature: int maildir_mail_get_save_date(struct mail *_mail, time_t *date_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:197,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:202,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:207,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:208,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:209,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:210,1
    - Dst: maildir_storage_sync_force
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - mbox
    - mail
    - fname_r
    argTypes:
    - struct maildir_mailbox*
    - struct mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 219
    functionName: maildir_mail_get_fname
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - maildir_storage_sync_force
    - mail_index_lookup_seq
    - mail_index_view_open
    - maildir_sync_lookup
    - mail_index_view_close
    - mail_index_refresh
    linkageType: ''
    returnType: int
    signature: "int maildir_mail_get_fname(struct maildir_mailbox *mbox, struct mail
      *mail,\n\t\t       const char **fname_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:224,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:242,1
    - Dst: mail_cache_field_get_decision
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:249,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:251,1
    - Dst: mail_cache_register_get_list
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:255,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:258,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:265,1
    - Dst: index_mail_get_vsize_extension
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:268,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 221
    functionDepth: 5
    functionLinenumber: 221
    functionLinenumberEnd: 288
    functionName: maildir_get_pop3_state
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - pool_unref
    - index_mail_get_vsize_extension
    - mail_cache_field_get_decision
    - mail_cache_register_get_list
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: int
    signature: int maildir_get_pop3_state(struct index_mail *mail)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:294,1
    - Dst: maildir_mail_get_fname
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:299,1
    - Dst: maildir_save_file_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:302,1
    - Dst: maildir_save_file_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:306,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:308,1
    - Dst: maildir_filename_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:314,1
    - Dst: maildir_uidlist_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:324,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:326,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - mail
    - vsize
    - size_r
    argTypes:
    - struct index_mail*
    - bool
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 330
    functionName: maildir_quick_size_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - strrchr
    - maildir_uidlist_lookup_ext
    - MAILDIR_MAILBOX
    - maildir_filename_get_size
    - str_to_uoff
    - maildir_save_file_get_path
    - maildir_mail_get_fname
    - maildir_save_file_get_size
    linkageType: ''
    returnType: int
    signature: "int maildir_quick_size_lookup(struct index_mail *mail, bool vsize,\n\t\t\t\t
      \    uoff_t *size_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:337,1
    - Dst: maildir_quick_size_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:346,1
    - Dst: mail_set_mail_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:351,1
    - Dst: mail_set_mail_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:357,1
    - Dst: maildir_get_pop3_state
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:368,1
    - Dst: maildir_uidlist_set_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:375,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:378,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - mail
    - quick_check
    - vsize
    argTypes:
    - struct index_mail*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 332
    functionDepth: 6
    functionLinenumber: 332
    functionLinenumberEnd: 380
    functionName: maildir_handle_size_caching
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - maildir_quick_size_lookup
    - dec2str
    - MAILDIR_MAILBOX
    - maildir_uidlist_set_ext
    - mail_set_mail_cache_corrupted
    - maildir_get_pop3_state
    linkageType: ''
    returnType: void
    signature: "void maildir_handle_size_caching(struct index_mail *mail, bool quick_check,\n\t\t\t
      \   bool vsize)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:384,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:385,1
    - Dst: maildir_uidlist_is_read
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:391,1
    - Dst: maildir_quick_size_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:395,1
    - Dst: index_mail_get_cached_virtual_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:401,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:402,1
    - Dst: maildir_handle_size_caching
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:403,1
    - Dst: maildir_quick_size_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:406,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:418,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:420,1
    - Dst: maildir_handle_size_caching
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:422,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 382
    functionDepth: 14
    functionLinenumber: 382
    functionLinenumberEnd: 425
    functionName: maildir_mail_get_virtual_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - maildir_quick_size_lookup
    - maildir_uidlist_is_read
    - MAILDIR_MAILBOX
    - INDEX_MAIL
    - i_stream_seek
    - maildir_handle_size_caching
    - mail_get_stream
    - index_mail_get_cached_virtual_size
    - i_assert
    linkageType: ''
    returnType: int
    signature: int maildir_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:429,1
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:430,1
    - Dst: maildir_uidlist_is_read
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:438,1
    - Dst: maildir_quick_size_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:441,1
    - Dst: index_mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:447,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:448,1
    - Dst: maildir_handle_size_caching
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:449,1
    - Dst: maildir_quick_size_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:452,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:466,1
    - Dst: maildir_file_do
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:470,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:473,1
    - Dst: maildir_save_file_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:478,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:480,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:481,1
    - Dst: maildir_handle_size_caching
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:487,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 427
    functionDepth: 14
    functionLinenumber: 427
    functionLinenumberEnd: 490
    functionName: maildir_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - maildir_quick_size_lookup
    - index_mail_get_physical_size
    - mail_set_expunged
    - maildir_uidlist_is_read
    - maildir_file_do
    - mail_set_critical
    - MAILDIR_MAILBOX
    - INDEX_MAIL
    - maildir_save_file_get_path
    - maildir_handle_size_caching
    - mail_get_stream
    - stat
    - i_assert
    linkageType: ''
    returnType: int
    signature: int maildir_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:496,1
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:497,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:504,1
    - Dst: maildir_mail_get_fname
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:512,1
    - Dst: maildir_uidlist_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:515,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:520,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:524,1
    - Dst: maildir_uidlist_unset_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:527,1
    - Dst: maildir_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:532,1
    - Dst: maildir_mail_get_fname
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:546,1
    - Dst: maildir_save_file_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:549,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:551,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:554,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:556,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:557,1
    - Dst: maildir_uidlist_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:561,1
    - Dst: maildir_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:568,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:571,1
    - Dst: maildir_uidlist_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:575,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:580,1
    - Dst: maildir_mail_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:584,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:586,1
    - Dst: maildir_mail_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:590,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:592,1
    - Dst: index_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:596,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 74
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 492
    functionDepth: 20
    functionLinenumber: 492
    functionLinenumberEnd: 598
    functionName: maildir_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 1
    functionsReached:
    - maildir_uidlist_unset_ext
    - strchr
    - p_strdup
    - p_strdup_until
    - strrchr
    - maildir_mail_stat
    - mail_set_critical
    - maildir_uidlist_lookup_ext
    - MAILDIR_MAILBOX
    - INDEX_MAIL
    - maildir_save_file_get_path
    - maildir_mail_get_fname
    - i_assert
    - index_mail_get_special
    - maildir_mail_get_special
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int maildir_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t\t const char **value_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:606,1
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:607,1
    - Dst: maildir_mail_fix_corruption
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:611,1
    - Dst: maildir_open_mail
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:613,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:616,1
    - Dst: struct index_mail*::mail::v::istream_opened
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:620,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:622,1
    - Dst: index_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:628,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - _mail
    - ATTR_UNUSED
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct mail*
    - bool
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 600
    functionDepth: 17
    functionLinenumber: 600
    functionLinenumberEnd: 629
    functionName: maildir_mail_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - struct index_mail*::mail::v::istream_opened
    - MAILDIR_MAILBOX
    - INDEX_MAIL
    - index_mail_init_stream
    - maildir_mail_fix_corruption
    - i_stream_unref
    - maildir_open_mail
    linkageType: ''
    returnType: int
    signature: "int maildir_mail_get_stream(struct mail *_mail, bool get_body ATTR_UNUSED,\n\t\t\tstruct
      message_size *hdr_size,\n\t\t\tstruct message_size *body_size,\n\t\t\tstruct
      istream **stream_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:633,1
    - Dst: maildir_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:636,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:638,1
    - Dst: maildir_uidlist_set_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:644,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - _mail
    - uidl
    argTypes:
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 631
    functionDepth: 21
    functionLinenumber: 631
    functionLinenumberEnd: 646
    functionName: maildir_update_pop3_uidl
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - strcmp
    - MAILDIR_MAILBOX
    - maildir_mail_get_special
    - maildir_uidlist_set_ext
    linkageType: ''
    returnType: void
    signature: void maildir_update_pop3_uidl(struct mail *_mail, const char *uidl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:650,1
    - Dst: maildir_uidlist_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:652,1
    - Dst: maildir_uidlist_unset_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:654,1
    - Dst: maildir_uidlist_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:657,1
    - Dst: maildir_uidlist_unset_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:659,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 648
    functionDepth: 1
    functionLinenumber: 648
    functionLinenumberEnd: 662
    functionName: maildir_mail_remove_sizes_from_uidlist
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_unset_ext
    - maildir_uidlist_lookup_ext
    - MAILDIR_MAILBOX
    linkageType: ''
    returnType: void
    signature: void maildir_mail_remove_sizes_from_uidlist(struct mail *mail)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:676,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:677,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:678,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:680,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:681,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:682,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:686,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:689,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:696,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:697,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:700,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:701,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:710,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - mbox
    - path
    - ctx
    argTypes:
    - struct maildir_mailbox*
    - char*
    - struct maildir_size_fix_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 669
    functionDepth: 4
    functionLinenumber: 669
    functionLinenumberEnd: 713
    functionName: do_fix_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - rename
    - strchr
    - strrchr
    - t_strdup_printf
    - stat
    - t_strdup_until
    - mailbox_set_critical
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int do_fix_size(struct maildir_mailbox *mbox, const char *path,\n\t
      \   struct maildir_size_fix_ctx *ctx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:719,1
    - Dst: maildir_sync_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:731,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:733,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:736,1
    - Dst: maildir_filename_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:739,1
    - Dst: maildir_filename_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:743,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:757,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:759,1
    - Dst: maildir_file_do
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:764,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - mail
    - field
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 765
    functionName: maildir_mail_remove_sizes_from_filename
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strchr
    - maildir_file_do
    - MAILDIR_MAILBOX
    - i_stream_stat
    - maildir_filename_get_size
    - mail_get_stream
    - maildir_sync_lookup
    linkageType: ''
    returnType: void
    signature: "void maildir_mail_remove_sizes_from_filename(struct mail *mail,\n\t\t\t\t\tenum
      mail_fetch_field field)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:770,1
    - Dst: maildir_mail_remove_sizes_from_uidlist
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:776,1
    - Dst: maildir_mail_remove_sizes_from_filename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 767
    functionDepth: 3
    functionLinenumber: 767
    functionLinenumberEnd: 778
    functionName: maildir_mail_fix_corruption
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 1
    functionsReached:
    - container_of
    - maildir_mail_remove_sizes_from_uidlist
    - maildir_mail_remove_sizes_from_filename
    linkageType: ''
    returnType: void
    signature: void maildir_mail_fix_corruption(struct mail *_mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:785,1
    - Dst: index_mail_set_cache_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - _mail
    - field
    - reason
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 780
    functionDepth: 5
    functionLinenumber: 780
    functionLinenumberEnd: 791
    functionName: maildir_mail_set_cache_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_set_cache_corrupted
    - container_of
    linkageType: ''
    returnType: void
    signature: "void maildir_mail_set_cache_corrupted(struct mail *_mail,\n\t\t\t\t\t
      \    enum mail_fetch_field field,\n\t\t\t\t\t     const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_mail_fix_corruption
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:795,1
    - Dst: index_mail_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 793
    functionDepth: 15
    functionLinenumber: 793
    functionLinenumberEnd: 797
    functionName: maildir_mail_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-mail.c
    functionUses: 0
    functionsReached:
    - maildir_mail_fix_corruption
    - index_mail_close
    linkageType: ''
    returnType: void
    signature: void maildir_mail_close(struct mail *_mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: MAILDIR_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAILDIR_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: MAILDIR_MAILBOX
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAILDIR_MAILBOX(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - mbox
    - ','
    - seq
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: maildir_file_do
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-storage.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: maildir_file_do(mbox, seq, callback, context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:16,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:27,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:28,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 30
    functionName: maildir_filename_generate
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c
    functionUses: 1
    functionsReached:
    - dec2str
    - t_strdup_printf
    - timeval_cmp
    linkageType: ''
    returnType: char
    signature: char *maildir_filename_generate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:37,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 3
    argNames:
    - fname
    - type
    - size_r
    argTypes:
    - char*
    - char
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 59
    functionName: maildir_filename_get_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool maildir_filename_get_size(const char *fname, char type, uoff_t
      *size_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:68,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 79
    functionName: ATTR_NO_SANITIZE_INTEGER::maildir_filename_base_hash
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: 'unsigned int ATTR_NO_SANITIZE_INTEGER

      maildir_filename_base_hash(const char *s)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:85,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - fname1
    - fname2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 93
    functionName: maildir_filename_base_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: int maildir_filename_base_cmp(const char *fname1, const char *fname2)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - fname
    - usecs_r
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 116
    functionName: maildir_fname_get_usecs
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool maildir_fname_get_usecs(const char *fname, int *usecs_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: maildir_fname_get_usecs
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:133,1
    - Dst: maildir_fname_get_usecs
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:134,1
    - Dst: maildir_filename_base_cmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c:139,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - fname1
    - fname2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 143
    functionName: maildir_filename_sort_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename.c
    functionUses: 0
    functionsReached:
    - maildir_filename_base_cmp
    - maildir_fname_get_usecs
    linkageType: ''
    returnType: int
    signature: int maildir_filename_sort_cmp(const char *fname1, const char *fname2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:17,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:20,1
    - Dst: maildir_keywords_char_idx
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:46,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:52,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 4
    argNames:
    - ctx
    - fname
    - flags_r
    - keywords_r
    argTypes:
    - struct maildir_keywords_sync_ctx*
    - char*
    - enum mail_flags*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 61
    functionName: maildir_filename_flags_get
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_clear
    - strrchr
    - maildir_keywords_char_idx
    linkageType: ''
    returnType: void
    signature: "void maildir_filename_flags_get(struct maildir_keywords_sync_ctx *ctx,\n\t\t\t\tconst
      char *fname, enum mail_flags *flags_r,\n\t\t\t\tARRAY_TYPE(keyword_indexes)
      *keywords_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: char_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int char_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:77,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:80,1
    - Dst: maildir_keywords_idx_char
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:82,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:84,1
    - Dst: qsort
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:87,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:87,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - keywords
    - fname
    argTypes:
    - struct maildir_keywords_sync_ctx*
    - ARRAY_TYPE*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 89
    functionName: maildir_filename_append_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_len
    - array_get
    - maildir_keywords_idx_char
    - qsort
    - str_c_modifiable
    linkageType: ''
    returnType: void
    signature: "void maildir_filename_append_keywords(struct maildir_keywords_sync_ctx
      *ctx,\n\t\t\t\t ARRAY_TYPE(keyword_indexes) *keywords,\n\t\t\t\t string_t *fname)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:102,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:103,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:108,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:115,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:116,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:117,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:132,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:133,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:136,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:137,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:140,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:141,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:144,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:145,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:148,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:149,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:152,1
    - Dst: maildir_filename_append_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:154,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:162,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:169,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:172,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 52
    argCount: 4
    argNames:
    - ctx
    - fname
    - flags
    - keywords
    argTypes:
    - struct maildir_keywords_sync_ctx*
    - char*
    - enum mail_flags
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 173
    functionName: maildir_filename_flags_full_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strrchr
    - ENUM_NEGATE
    - maildir_filename_append_keywords
    - t_strdup_until
    - str_append
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void maildir_filename_flags_full_set(struct maildir_keywords_sync_ctx
      *ctx,\n\t\t\t\tconst char *fname, enum mail_flags flags,\n\t\t\t\tARRAY_TYPE(keyword_indexes)
      *keywords)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_filename_flags_full_set
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fname
    - flags
    argTypes:
    - char*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: maildir_filename_flags_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c
    functionUses: 0
    functionsReached:
    - maildir_filename_flags_full_set
    linkageType: ''
    returnType: char
    signature: char *maildir_filename_flags_set(const char *fname, enum mail_flags
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_filename_flags_full_set
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ctx
    - fname
    - flags
    - keywords
    argTypes:
    - struct maildir_keywords_sync_ctx*
    - char*
    - enum mail_flags
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 185
    functionName: maildir_filename_flags_kw_set
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c
    functionUses: 0
    functionsReached:
    - maildir_filename_flags_full_set
    linkageType: ''
    returnType: char
    signature: "char *maildir_filename_flags_kw_set(struct maildir_keywords_sync_ctx
      *ctx,\n\t\t\t\t\t  const char *fname, enum mail_flags flags,\n\t\t\t\t\t  ARRAY_TYPE(keyword_indexes)
      *keywords)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_keywords_init_readonly
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: maildir_keywords_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 1
    functionsReached:
    - maildir_keywords_init_readonly
    linkageType: ''
    returnType: struct maildir_keywords
    signature: struct maildir_keywords *maildir_keywords_init(struct maildir_mailbox
      *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:68,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:69,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:71,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:73,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:74,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:75,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:76,1
    - Dst: mail_storage_get_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:83,1
    - Dst: mailbox_list_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 62
    functionDepth: 5
    functionLinenumber: 62
    functionLinenumberEnd: 89
    functionName: maildir_keywords_init_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - mailbox_list_get_temp_prefix
    - hash_table_create
    - i_unreached
    - i_strconcat
    - i_new
    - mail_storage_get_lock_timeout
    - mailbox_get_path_to
    linkageType: ''
    returnType: struct maildir_keywords
    signature: 'struct maildir_keywords *

      maildir_keywords_init_readonly(struct mailbox *box)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:96,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:97,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:98,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:99,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _mk
    argTypes:
    - struct maildir_keywords**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 101
    functionName: maildir_keywords_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 1
    functionsReached:
    - pool_unref
    - array_free
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void maildir_keywords_deinit(struct maildir_keywords **_mk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:105,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:106,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mk
    argTypes:
    - struct maildir_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 108
    functionName: maildir_keywords_clear
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - hash_table_clear
    - array_clear
    - p_clear
    linkageType: ''
    returnType: void
    signature: void maildir_keywords_clear(struct maildir_keywords *mk)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:126,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:129,1
    - Dst: maildir_keywords_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:131,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:135,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:147,1
    - Dst: maildir_keywords_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:150,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:154,1
    - Dst: maildir_keywords_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:159,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:160,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:161,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:162,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:170,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:172,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:178,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:179,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:179,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:181,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:184,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:186,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:187,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 1
    argNames:
    - mk
    argTypes:
    - struct maildir_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 110
    functionDepth: 4
    functionLinenumber: 110
    functionLinenumberEnd: 194
    functionName: maildir_keywords_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_stream_create_fd
    - p_strdup
    - POINTER_CAST
    - str_to_uint
    - open
    - maildir_keywords_clear
    - i_stream_read_next_line
    - hash_table_insert
    - nfs_flush_file_handle_cache
    - array_idx_get_space
    - mailbox_set_critical
    - nfs_safe_stat
    - hash_table_lookup
    - close
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int maildir_keywords_sync(struct maildir_keywords *mk)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:202,1
    - Dst: maildir_keywords_sync
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:207,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:209,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:211,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:216,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - mk
    - name
    - chridx_r
    argTypes:
    - struct maildir_keywords*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 196
    functionDepth: 5
    functionLinenumber: 196
    functionLinenumberEnd: 218
    functionName: maildir_keywords_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST_TO
    - i_assert
    - hash_table_lookup
    - maildir_keywords_sync
    linkageType: ''
    returnType: int
    signature: "int maildir_keywords_lookup(struct maildir_keywords *mk, const char
      *name,\n\t\t\tunsigned int *chridx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:227,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:229,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:230,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:230,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - mk
    - name
    - chridx
    argTypes:
    - struct maildir_keywords*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 236
    functionName: maildir_keywords_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - POINTER_CAST
    - array_idx_get_space
    - hash_table_insert
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void maildir_keywords_create(struct maildir_keywords *mk, const char
      *name,\n\t\t\tunsigned int chridx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: maildir_keywords_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:246,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:250,1
    - Dst: maildir_uidlist_is_locked
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:259,1
    - Dst: maildir_keywords_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:262,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - mk
    - name
    - chridx_r
    argTypes:
    - struct maildir_keywords*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 238
    functionDepth: 6
    functionLinenumber: 238
    functionLinenumberEnd: 265
    functionName: maildir_keywords_lookup_or_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_is_locked
    - array_get
    - maildir_keywords_create
    - maildir_keywords_lookup
    linkageType: ''
    returnType: int
    signature: "int maildir_keywords_lookup_or_create(struct maildir_keywords *mk,
      const char *name,\n\t\t\t\t  unsigned int *chridx_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:273,1
    - Dst: maildir_keywords_sync
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:278,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:280,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:282,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - mk
    - idx
    argTypes:
    - struct maildir_keywords*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 267
    functionDepth: 5
    functionLinenumber: 267
    functionLinenumberEnd: 285
    functionName: maildir_keywords_idx
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    - maildir_keywords_sync
    linkageType: ''
    returnType: char
    signature: 'char *

      maildir_keywords_idx(struct maildir_keywords *mk, unsigned int idx)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:292,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:298,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:299,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:302,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:304,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:304,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:304,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:305,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:310,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:311,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:318,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:320,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:321,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:325,1
    - Dst: utime
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:339,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:340,1
    - Dst: fsync
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:346,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:347,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - mk
    - path
    - fd
    argTypes:
    - struct maildir_keywords*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 352
    functionName: maildir_keywords_write_fd
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - utime
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - mailbox_get_permissions
    - write_full
    - array_get
    - fsync
    - fstat
    - mailbox_set_critical
    - eperm_error_get_chgrp
    - fchown
    linkageType: ''
    returnType: int
    signature: "int maildir_keywords_write_fd(struct maildir_keywords *mk,\n\t\t\t\t
      \    const char *path, int fd)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:367,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:368,1
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:370,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:375,1
    - Dst: file_dotlock_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:376,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:378,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:383,1
    - Dst: maildir_set_deleted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:389,1
    - Dst: maildir_keywords_write_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:393,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:394,1
    - Dst: file_dotlock_replace
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:398,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:399,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - mk
    argTypes:
    - struct maildir_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 354
    functionDepth: 5
    functionLinenumber: 354
    functionLinenumberEnd: 406
    functionName: maildir_keywords_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - mailbox_get_permissions
    - umask
    - maildir_keywords_write_fd
    - maildir_set_deleted
    - file_dotlock_replace
    - i_unlink_if_exists
    - file_dotlock_open
    - mailbox_set_critical
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int maildir_keywords_commit(struct maildir_keywords *mk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:414,1
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:417,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - mk
    - index
    argTypes:
    - struct maildir_keywords*
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 420
    functionName: maildir_keywords_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_index_get_keywords
    - i_new
    linkageType: ''
    returnType: struct maildir_keywords_sync_ctx
    signature: "struct maildir_keywords_sync_ctx *\nmaildir_keywords_sync_init(struct
      maildir_keywords *mk,\n\t\t\t   struct mail_index *index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_keywords_sync_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - mk
    - index
    argTypes:
    - struct maildir_keywords*
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 431
    functionName: maildir_keywords_sync_init_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - maildir_keywords_sync_init
    linkageType: ''
    returnType: struct maildir_keywords_sync_ctx
    signature: "struct maildir_keywords_sync_ctx *\nmaildir_keywords_sync_init_readonly(struct
      maildir_keywords *mk,\n\t\t\t\t    struct mail_index *index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_keywords_commit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct maildir_keywords_sync_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 433
    functionDepth: 6
    functionLinenumber: 433
    functionLinenumberEnd: 441
    functionName: maildir_keywords_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 0
    functionsReached:
    - maildir_keywords_commit
    linkageType: ''
    returnType: void
    signature: void maildir_keywords_sync_deinit(struct maildir_keywords_sync_ctx
      **_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:453,1
    - Dst: maildir_keywords_idx
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:461,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:464,1
    - Dst: maildir_keywords_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:465,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:468,1
    - Dst: maildir_keywords_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:470,1
    - Dst: mail_index_keyword_lookup_or_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:473,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - keyword
    argTypes:
    - struct maildir_keywords_sync_ctx*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 447
    functionDepth: 6
    functionLinenumber: 447
    functionLinenumberEnd: 476
    functionName: maildir_keywords_char_idx
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 1
    functionsReached:
    - maildir_keywords_create
    - t_strdup_printf
    - mail_index_keyword_lookup_or_create
    - maildir_keywords_lookup
    - i_assert
    - t_strconcat
    - maildir_keywords_idx
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int maildir_keywords_char_idx(struct maildir_keywords_sync_ctx
      *ctx,\n\t\t\t\t       char keyword)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:486,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:490,1
    - Dst: maildir_keywords_lookup_or_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:492,1
    - Dst: maildir_keywords_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c:493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - idx
    argTypes:
    - struct maildir_keywords_sync_ctx*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 478
    functionDepth: 7
    functionLinenumber: 478
    functionLinenumberEnd: 499
    functionName: maildir_keywords_idx_char
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-keywords.c
    functionUses: 1
    functionsReached:
    - maildir_keywords_lookup_or_create
    - array_idx_elem
    - array_idx_get_space
    - maildir_keywords_lookup
    linkageType: ''
    returnType: char
    signature: "char maildir_keywords_idx_char(struct maildir_keywords_sync_ctx *ctx,\n\t\t\t
      \      unsigned int idx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:35,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:39,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:44,1
    - Dst: mail_index_lookup_view_flags
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:45,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:46,1
    - Dst: maildir_filename_flags_set
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:48,1
    - Dst: maildir_keywords_sync_init_readonly
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:51,1
    - Dst: maildir_filename_flags_kw_set
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:53,1
    - Dst: maildir_keywords_sync_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:55,1
    - Dst: mailbox_recent_flags_have_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:63,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:66,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:68,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 5
    argNames:
    - mbox
    - uid
    - fname
    - uidlist_flags
    - have_flags_r
    argTypes:
    - struct maildir_mailbox*
    - uint32_t
    - char*
    - enum maildir_uidlist_rec_flag*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 25
    functionDepth: 7
    functionLinenumber: 25
    functionLinenumberEnd: 72
    functionName: maildir_filename_guess
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c
    functionUses: 0
    functionsReached:
    - strrchr
    - mail_index_lookup_seq
    - maildir_keywords_sync_deinit
    - array_count
    - t_array_init
    - maildir_keywords_sync_init_readonly
    - mail_index_lookup_view_flags
    - ARRAY_TYPE
    - maildir_filename_flags_kw_set
    - t_strdup_until
    - mailbox_recent_flags_have_uid
    - maildir_filename_flags_set
    linkageType: ''
    returnType: char
    signature: "char *\nmaildir_filename_guess(struct maildir_mailbox *mbox, uint32_t
      uid,\n\t\t       const char *fname,\n\t\t       enum maildir_uidlist_rec_flag
      *uidlist_flags,\n\t\t       bool *have_flags_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:82,1
    - Dst: maildir_filename_guess
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:88,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:93,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:98,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:98,1
    - Dst: callback
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:100,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:103,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:103,1
    - Dst: callback
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:105,1
    - Dst: maildir_uidlist_update_fname
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:109,1
    - Dst: maildir_uidlist_add_flags
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:114,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - mbox
    - uid
    - callback
    - context
    argTypes:
    - struct maildir_mailbox*
    - uint32_t
    - maildir_file_do_func*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 74
    functionDepth: 8
    functionLinenumber: 74
    functionLinenumberEnd: 118
    functionName: maildir_file_do_try
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - maildir_uidlist_add_flags
    - maildir_uidlist_update_fname
    - callback
    - t_strdup
    - maildir_sync_lookup
    - t_strconcat
    - maildir_filename_guess
    linkageType: ''
    returnType: int
    signature: "int maildir_file_do_try(struct maildir_mailbox *mbox, uint32_t uid,\n\t\t\t
      \      maildir_file_do_func *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:127,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:130,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:134,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - mbox
    - path
    - context
    argTypes:
    - struct maildir_mailbox*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 120
    functionDepth: 4
    functionLinenumber: 120
    functionLinenumberEnd: 142
    functionName: do_racecheck
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - lstat
    linkageType: ''
    returnType: int
    signature: "int do_racecheck(struct maildir_mailbox *mbox, const char *path,\n\t\t\tvoid
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_file_do_try
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - mbox
    - uid
    - callback
    - context
    argTypes:
    - struct maildir_mailbox*
    - uint32_t
    - maildir_file_do_func*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 9
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: maildir_file_do
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c
    functionUses: 5
    functionsReached:
    - maildir_file_do_try
    linkageType: ''
    returnType: int
    signature: "int maildir_file_do(struct maildir_mailbox *mbox, uint32_t uid,\n\t\t
      \   maildir_file_do_func *callback, void *context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:180,1
    - Dst: mkdir_chgrp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:183,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:191,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:195,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:199,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:200,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:201,1
    - Dst: maildir_create_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:205,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:207,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - box
    - path
    - type
    - retry
    argTypes:
    - struct mailbox*
    - char*
    - enum mailbox_list_path_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 177
    functionDepth: 6
    functionLinenumber: 177
    functionLinenumberEnd: 210
    functionName: maildir_create_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c
    functionUses: 1
    functionsReached:
    - mailbox_set_deleted
    - mailbox_list_mkdir_root
    - mkdir_chgrp
    - strrchr
    - mailbox_get_permissions
    - mail_storage_copy_list_error
    - maildir_create_path
    - t_strdup_until
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: "int maildir_create_path(struct mailbox *box, const char *path,\n\t\t\t
      \      enum mailbox_list_path_type type, bool retry)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:215,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:216,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:222,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:224,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:224,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:227,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:231,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:236,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:236,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:240,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:243,1
    - Dst: maildir_create_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:246,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:249,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 212
    functionDepth: 7
    functionLinenumber: 212
    functionLinenumberEnd: 250
    functionName: maildir_create_subdirs
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - maildir_create_path
    - stat
    - mailbox_set_critical
    - i_assert
    - t_strconcat
    - N_ELEMENTS
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: int maildir_create_subdirs(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:257,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:257,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:259,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:261,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:262,1
    - Dst: maildir_create_subdirs
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 252
    functionDepth: 8
    functionLinenumber: 252
    functionLinenumberEnd: 270
    functionName: maildir_set_deleted
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c
    functionUses: 1
    functionsReached:
    - mailbox_set_deleted
    - mailbox_get_path
    - maildir_create_subdirs
    - stat
    - mailbox_set_critical
    linkageType: ''
    returnType: bool
    signature: bool maildir_set_deleted(struct mailbox *box)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rmdir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:284,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:285,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:293,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:302,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:303,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:306,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:308,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:308,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:309,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:310,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c:318,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - storage
    - path
    argTypes:
    - struct mail_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 323
    functionName: maildir_lose_unexpected_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-util.c
    functionUses: 1
    functionsReached:
    - rename
    - strrchr
    - rmdir
    - mail_storage_set_critical
    - t_strdup_until
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int maildir_lose_unexpected_dir(struct mail_storage *storage, const
      char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: MAILDIR_SAVECTX
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAILDIR_SAVECTX(s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:78,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:79,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:85,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:87,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:88,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:100,1
    - Dst: ENOQUOTA
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:103,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:104,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - ctx
    - mf
    - destname
    - newdir
    argTypes:
    - struct maildir_save_context*
    - struct maildir_filename*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 113
    functionName: maildir_file_move
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - rename
    - ENOQUOTA
    - mailbox_set_critical
    - i_assert
    - t_strconcat
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int maildir_file_move(struct maildir_save_context *ctx,\n\t\t\t     struct
      maildir_filename *mf, const char *destname,\n\t\t\t     bool newdir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:118,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:123,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:124,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:132,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:133,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:134,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 139
    functionName: maildir_save_transaction_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - mailbox_get_path
    - p_new
    - MAILDIR_MAILBOX
    - p_strconcat
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      maildir_save_transaction_init(struct mailbox_transaction_context *t)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:145,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:150,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:163,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:170,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:176,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:180,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:181,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:183,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:185,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:189,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:195,1
    - Dst: mail_set_seq_saving
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:202,1
    - Dst: index_copy_cache_fields
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:203,1
    - Dst: index_mail_cache_parse_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:206,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:208,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 3
    argNames:
    - _ctx
    - tmp_fname
    - src_mail
    argTypes:
    - struct mail_save_context*
    - char*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 141
    functionDepth: 15
    functionLinenumber: 141
    functionLinenumberEnd: 213
    functionName: maildir_save_add
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 1
    functionsReached:
    - mail_index_append
    - p_strdup
    - mail_index_update_keywords
    - p_new
    - index_copy_cache_fields
    - mail_index_update_flags
    - ENUM_NEGATE
    - mail_index_update_modseq
    - MAILDIR_SAVECTX
    - i_stream_unref
    - index_mail_cache_parse_init
    - i_assert
    - mail_set_seq_saving
    linkageType: ''
    returnType: struct maildir_filename
    signature: "struct maildir_filename *\nmaildir_save_add(struct mail_save_context
      *_ctx, const char *tmp_fname,\n\t\t struct mail *src_mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:219,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - _ctx
    - mf
    - basename
    argTypes:
    - struct mail_save_context*
    - struct maildir_filename*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 224
    functionName: maildir_save_set_dest_basename
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 1
    functionsReached:
    - MAILDIR_SAVECTX
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void maildir_save_set_dest_basename(struct mail_save_context *_ctx,\n\t\t\t\t
      \   struct maildir_filename *mf,\n\t\t\t\t    const char *basename)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - mf
    - size
    - vsize
    argTypes:
    - struct maildir_filename*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 231
    functionName: maildir_save_set_sizes
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void maildir_save_set_sizes(struct maildir_filename *mf,\n\t\t\t    uoff_t
      size, uoff_t vsize)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:241,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:246,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:251,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:251,1
    - Dst: maildir_filename_flags_set
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:257,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:262,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:263,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:263,1
    - Dst: maildir_filename_flags_kw_set
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:264,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - mf
    - fname_r
    argTypes:
    - struct maildir_save_context*
    - struct maildir_filename*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 233
    functionDepth: 4
    functionLinenumber: 233
    functionLinenumberEnd: 269
    functionName: maildir_get_dest_filename
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - array_count
    - maildir_filename_flags_kw_set
    - array_is_created
    - i_assert
    - maildir_filename_flags_set
    linkageType: ''
    returnType: bool
    signature: "bool maildir_get_dest_filename(struct maildir_save_context *ctx,\n\t\t\t
      \ struct maildir_filename *mf,\n\t\t\t  const char **fname_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:278,1
    - Dst: maildir_get_dest_filename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:282,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - mf
    argTypes:
    - struct maildir_save_context*
    - struct maildir_filename*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 271
    functionDepth: 5
    functionLinenumber: 271
    functionLinenumberEnd: 285
    functionName: maildir_mf_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - maildir_get_dest_filename
    linkageType: ''
    returnType: char
    signature: "char *maildir_mf_get_path(struct maildir_save_context *ctx,\n\t\t\t\t
      \      struct maildir_filename *mf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:291,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:294,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mailbox_transaction_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 304
    functionName: maildir_save_get_mf
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - MAILDIR_SAVECTX
    - i_assert
    linkageType: ''
    returnType: struct maildir_filename
    signature: 'struct maildir_filename *

      maildir_save_get_mf(struct mailbox_transaction_context *t, uint32_t seq)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_save_get_mf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - t
    - seq
    - vsize
    - size_r
    argTypes:
    - struct mailbox_transaction_context*
    - uint32_t
    - bool
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 306
    functionDepth: 2
    functionLinenumber: 306
    functionLinenumberEnd: 313
    functionName: maildir_save_file_get_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 1
    functionsReached:
    - maildir_save_get_mf
    linkageType: ''
    returnType: int
    signature: "int maildir_save_file_get_size(struct mailbox_transaction_context
      *t,\n\t\t\t       uint32_t seq, bool vsize, uoff_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:318,1
    - Dst: maildir_save_get_mf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:319,1
    - Dst: maildir_mf_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - struct mailbox_transaction_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 315
    functionDepth: 6
    functionLinenumber: 315
    functionLinenumberEnd: 322
    functionName: maildir_save_file_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 5
    functionsReached:
    - maildir_save_get_mf
    - MAILDIR_SAVECTX
    - maildir_mf_get_path
    linkageType: ''
    returnType: char
    signature: "char *maildir_save_file_get_path(struct mailbox_transaction_context
      *t,\n\t\t\t\t       uint32_t seq)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:328,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:335,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:336,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:337,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:338,1
    - Dst: maildir_filename_generate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:341,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:342,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:343,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:349,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:350,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:350,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:352,1
    - Dst: ENOQUOTA
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:357,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:358,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:361,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:362,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:365,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:367,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:368,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:369,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:373,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:374,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - mbox
    - dir
    - fname_r
    argTypes:
    - struct maildir_mailbox*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 324
    functionDepth: 4
    functionLinenumber: 324
    functionLinenumberEnd: 380
    functionName: maildir_create_tmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - str_c
    - t_str_new
    - str_append_c
    - ENOQUOTA
    - str_len
    - mailbox_get_permissions
    - maildir_filename_generate
    - umask
    - open
    - str_truncate
    - str_append
    - eperm_error_get_chgrp
    - mail_storage_set_error
    - fchown
    linkageType: ''
    returnType: int
    signature: "int maildir_create_tmp(struct maildir_mailbox *mbox, const char *dir,\n\t\t\t
      \     const char **fname_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:385,1
    - Dst: maildir_save_transaction_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 382
    functionDepth: 3
    functionLinenumber: 382
    functionLinenumberEnd: 390
    functionName: maildir_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - i_assert
    - maildir_save_transaction_init
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      maildir_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:394,1
    - Dst: maildir_create_tmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:404,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:409,1
    - Dst: i_stream_create_lf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:411,1
    - Dst: maildir_save_add
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:412,1
    - Dst: maildir_save_set_dest_basename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:414,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - _ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 392
    functionDepth: 16
    functionLinenumber: 392
    functionLinenumberEnd: 418
    functionName: maildir_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - maildir_save_add
    - i_stream_create_crlf
    - MAILDIR_SAVECTX
    - i_stream_create_lf
    - maildir_create_tmp
    - maildir_save_set_dest_basename
    linkageType: ''
    returnType: int
    signature: int maildir_save_begin(struct mail_save_context *_ctx, struct istream
      *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:432,1
    - Dst: index_storage_save_continue
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 16
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: maildir_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - MAILDIR_SAVECTX
    - index_storage_save_continue
    linkageType: ''
    returnType: int
    signature: int maildir_save_continue(struct mail_save_context *_ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: utime
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:456,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:457,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:462,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:465,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:471,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:474,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - struct maildir_save_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 445
    functionDepth: 4
    functionLinenumber: 445
    functionLinenumberEnd: 480
    functionName: maildir_save_finish_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - utime
    - fstat
    - stat
    - mail_set_critical
    linkageType: ''
    returnType: int
    signature: "int maildir_save_finish_received_date(struct maildir_save_context
      *ctx,\n\t\t\t\t\t     const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_save_abort_last
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:486,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 482
    functionDepth: 4
    functionLinenumber: 482
    functionLinenumberEnd: 496
    functionName: maildir_save_remove_last_filename
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - i_assert
    - index_storage_save_abort_last
    linkageType: ''
    returnType: void
    signature: void maildir_save_remove_last_filename(struct maildir_save_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:500,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:502,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:503,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:504,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:507,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:509,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:510,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:511,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 515
    functionName: maildir_save_finish_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 1
    functionsReached:
    - p_array_init
    - array_copy
    - MAILDIR_SAVECTX
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - mail_index_lookup_keywords
    linkageType: ''
    returnType: void
    signature: void maildir_save_finish_keywords(struct mail_save_context *_ctx)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:519,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:532,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:533,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:534,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:535,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:537,1
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:544,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:545,1
    - Dst: index_mail_cache_add
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:547,1
    - Dst: maildir_save_finish_received_date
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:550,1
    - Dst: index_mail_cache_parse_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:554,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:558,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:563,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:568,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:568,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:569,1
    - Dst: maildir_save_finish_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:571,1
    - Dst: fsync
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:575,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:576,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:577,1
    - Dst: lseek
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:583,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:585,1
    - Dst: maildir_filename_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:587,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:601,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:602,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:603,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:612,1
    - Dst: ENOQUOTA
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:614,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:615,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:618,1
    - Dst: maildir_save_remove_last_filename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:622,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 66
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 517
    functionDepth: 16
    functionLinenumber: 517
    functionLinenumberEnd: 628
    functionName: maildir_save_finish_real
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - MAILDIR_SAVECTX
    - t_strdup
    - mail_storage_set_error_from_errno
    - mail_storage_set_error
    - ENOQUOTA
    - mail_set_critical
    - o_stream_get_error
    - maildir_save_finish_received_date
    - maildir_save_finish_keywords
    - fsync
    - index_mail_cache_add
    - index_mail_cache_parse_deinit
    - maildir_save_remove_last_filename
    - i_unlink_if_exists
    - mail_get_virtual_size
    - close
    - o_stream_destroy
    - lseek
    - o_stream_finish
    - time_to_uint32_trunc
    - maildir_filename_get_size
    - INDEX_MAIL
    - i_stream_unref
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int maildir_save_finish_real(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_save_finish_real
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 630
    functionDepth: 17
    functionLinenumber: 630
    functionLinenumberEnd: 636
    functionName: maildir_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - maildir_save_finish_real
    linkageType: ''
    returnType: int
    signature: int maildir_save_finish(struct mail_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:643,1
    - Dst: maildir_save_finish
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 641
    functionDepth: 18
    functionLinenumber: 641
    functionLinenumberEnd: 647
    functionName: maildir_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - MAILDIR_SAVECTX
    - maildir_save_finish
    linkageType: ''
    returnType: void
    signature: void maildir_save_cancel(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:655,1
    - Dst: maildir_mf_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:655,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 649
    functionDepth: 6
    functionLinenumber: 649
    functionLinenumberEnd: 656
    functionName: maildir_save_unlink_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - maildir_mf_get_path
    - i_unlink
    linkageType: ''
    returnType: void
    signature: void maildir_save_unlink_files(struct maildir_save_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fdatasync_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:669,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:670,1
    - Dst: fdatasync_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:676,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:677,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - new_changed
    - cur_changed
    argTypes:
    - struct maildir_save_context*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 660
    functionDepth: 4
    functionLinenumber: 660
    functionLinenumberEnd: 683
    functionName: maildir_transaction_fsync_dirs
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - fdatasync_path
    linkageType: ''
    returnType: int
    signature: "int maildir_transaction_fsync_dirs(struct maildir_save_context *ctx,\n\t\t\t\t\t
      \ bool new_changed, bool cur_changed)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct seq_range*
    - struct seq_range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 693
    functionName: seq_range_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int seq_range_cmp(const struct seq_range *r1, const struct seq_range
      *r2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:699,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:704,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:708,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:709,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:711,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:713,1
    - Dst: mailbox_recent_flags_set_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:716,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 695
    functionDepth: 5
    functionLinenumber: 695
    functionLinenumberEnd: 719
    functionName: maildir_save_set_recent_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - array_sort
    - array_append_array
    - mailbox_recent_flags_set_uid
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t maildir_save_set_recent_flags(struct maildir_save_context
      *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_lock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:730,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:731,1
    - Dst: maildir_sync_header_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:733,1
    - Dst: maildir_uidlist_refresh_fast_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:735,1
    - Dst: maildir_storage_sync_force
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:741,1
    - Dst: maildir_sync_index_begin
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:744,1
    - Dst: maildir_sync_get_keywords_sync_ctx
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:747,1
    - Dst: maildir_sync_index
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:753,1
    - Dst: maildir_uidlist_get_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:757,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:758,1
    - Dst: mail_index_append_finish_uids
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:759,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:761,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:761,1
    - Dst: maildir_save_set_recent_flags
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:765,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 721
    functionDepth: 6
    functionLinenumber: 721
    functionLinenumberEnd: 766
    functionName: maildir_save_sync_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - maildir_sync_index_begin
    - maildir_storage_sync_force
    - maildir_uidlist_get_next_uid
    - maildir_sync_header_refresh
    - maildir_save_set_recent_flags
    - maildir_sync_index
    - maildir_uidlist_refresh_fast_init
    - mail_index_append_finish_uids
    - maildir_sync_get_keywords_sync_ctx
    - i_assert
    - seq_range_count
    - maildir_uidlist_lock
    linkageType: ''
    returnType: int
    signature: int maildir_save_sync_index(struct maildir_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:797,1
    - Dst: mail_cache_transaction_reset
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 788
    functionDepth: 3
    functionLinenumber: 788
    functionLinenumberEnd: 800
    functionName: maildir_save_rollback_index_changes
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - mail_cache_transaction_reset
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void maildir_save_rollback_index_changes(struct maildir_save_context
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:805,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:810,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - mf
    - prev_mf
    argTypes:
    - struct maildir_filename*
    - struct maildir_filename*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 802
    functionDepth: 0
    functionLinenumber: 802
    functionLinenumberEnd: 815
    functionName: maildir_filename_has_conflict
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool maildir_filename_has_conflict(struct maildir_filename *mf,\n\t\t\t\t\t
      \ struct maildir_filename *prev_mf)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:825,1
    - Dst: maildir_filename_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:829,1
    - Dst: maildir_filename_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:832,1
    - Dst: maildir_filename_has_conflict
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:838,1
    - Dst: maildir_uidlist_get_full_filename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:839,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:852,1
    - Dst: maildir_filename_generate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:853,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - mf
    - prev_mf
    argTypes:
    - struct maildir_save_context*
    - struct maildir_filename*
    - struct maildir_filename*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 817
    functionDepth: 2
    functionLinenumber: 817
    functionLinenumberEnd: 856
    functionName: maildir_filename_check_conflicts
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - maildir_uidlist_get_full_filename
    - maildir_uidlist_refresh
    - maildir_filename_generate
    - maildir_filename_get_size
    - maildir_filename_has_conflict
    linkageType: ''
    returnType: void
    signature: "void maildir_filename_check_conflicts(struct maildir_save_context
      *ctx,\n\t\t\t\t struct maildir_filename *mf,\n\t\t\t\t struct maildir_filename
      *prev_mf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - struct maildir_filename**
    - struct maildir_filename**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 863
    functionName: maildir_filename_dest_basename_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int maildir_filename_dest_basename_cmp(struct maildir_filename *const
      *f1,\n\t\t\t\t   struct maildir_filename *const *f2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:876,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:878,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:879,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:883,1
    - Dst: maildir_filename_check_conflicts
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:888,1
    - Dst: maildir_get_dest_filename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:892,1
    - Dst: maildir_file_move
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:897,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 865
    functionDepth: 5
    functionLinenumber: 865
    functionLinenumberEnd: 902
    functionName: maildir_save_move_files_to_newcur
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - array_foreach_elem
    - maildir_filename_check_conflicts
    - array_push_back
    - maildir_get_dest_filename
    - maildir_file_move
    - array_sort
    linkageType: ''
    returnType: int
    signature: int maildir_save_move_files_to_newcur(struct maildir_save_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:924,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:928,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:929,1
    - Dst: maildir_get_dest_filename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:931,1
    - Dst: maildir_uidlist_sync_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:935,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:937,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:938,1
    - Dst: maildir_uidlist_sync_set_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:940,1
    - Dst: maildir_uidlist_sync_set_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:944,1
    - Dst: maildir_uidlist_sync_set_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:949,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:951,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 912
    functionDepth: 5
    functionLinenumber: 912
    functionLinenumberEnd: 953
    functionName: maildir_save_sync_uidlist
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - seq_range_array_iter_init
    - t_strdup_printf
    - maildir_uidlist_sync_set_ext
    - maildir_get_dest_filename
    - maildir_uidlist_sync_next_uid
    - i_assert
    linkageType: ''
    returnType: void
    signature: void maildir_save_sync_uidlist(struct maildir_save_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:959,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:964,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:965,1
    - Dst: maildir_uidlist_sync_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:986,1
    - Dst: maildir_save_sync_index
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:990,1
    - Dst: maildir_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:991,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:997,1
    - Dst: maildir_save_rollback_index_changes
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1000,1
    - Dst: maildir_transaction_save_rollback
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1002,1
    - Dst: maildir_save_move_files_to_newcur
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1007,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 957
    functionDepth: 7
    functionLinenumber: 957
    functionLinenumberEnd: 1008
    functionName: maildir_transaction_save_commit_pre
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - maildir_transaction_save_rollback
    - MAILDIR_SAVECTX
    - maildir_save_sync_index
    - maildir_uidlist_sync_init
    - maildir_save_move_files_to_newcur
    - i_assert
    - maildir_save_rollback_index_changes
    linkageType: ''
    returnType: int
    signature: int maildir_transaction_save_commit_pre(struct mail_save_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1056,1
    - Dst: maildir_uidlist_unlock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1061,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1062,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _ctx
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1053
    functionDepth: 1
    functionLinenumber: 1053
    functionLinenumberEnd: 1063
    functionName: maildir_transaction_save_commit_post
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 0
    functionsReached:
    - MAILDIR_SAVECTX
    - pool_unref
    - maildir_uidlist_unlock
    linkageType: ''
    returnType: void
    signature: "void maildir_transaction_save_commit_post(struct mail_save_context
      *_ctx,\n\t\t\t\t\t  struct mail_index_transaction_commit_result *result ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1067,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1069,1
    - Dst: maildir_save_cancel
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1072,1
    - Dst: maildir_save_unlink_files
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1075,1
    - Dst: maildir_uidlist_sync_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1078,1
    - Dst: maildir_sync_index_rollback
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1080,1
    - Dst: maildir_uidlist_unlock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1082,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c:1084,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1065
    functionDepth: 19
    functionLinenumber: 1065
    functionLinenumberEnd: 1085
    functionName: maildir_transaction_save_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-save.c
    functionUses: 1
    functionsReached:
    - maildir_sync_index_rollback
    - maildir_uidlist_unlock
    - pool_unref
    - MAILDIR_SAVECTX
    - maildir_uidlist_sync_deinit
    - i_assert
    - maildir_save_cancel
    - maildir_save_unlink_files
    linkageType: ''
    returnType: void
    signature: void maildir_transaction_save_rollback(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_index_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: maildir_sync_get_keywords_sync_ctx
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct maildir_keywords_sync_ctx
    signature: 'struct maildir_keywords_sync_ctx *

      maildir_sync_get_keywords_sync_ctx(struct maildir_index_sync_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - count
    argTypes:
    - struct maildir_index_sync_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: maildir_sync_set_new_msgs_count
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void maildir_sync_set_new_msgs_count(struct maildir_index_sync_context
      *ctx,\n\t\t\t\t     unsigned int count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:58,1
    - Dst: maildir_uidlist_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:64,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:67,1
    - Dst: mail_generate_guid_128_hash
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - uid
    - filename
    - expunged_guid_128
    argTypes:
    - struct maildir_index_sync_context*
    - uint32_t
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 69
    functionName: maildir_expunge_is_valid_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_lookup_ext
    - mail_generate_guid_128_hash
    - guid_128_is_empty
    - t_strcut
    linkageType: ''
    returnType: bool
    signature: "bool maildir_expunge_is_valid_guid(struct maildir_index_sync_context
      *ctx,\n\t\t\t      uint32_t uid, const char *filename,\n\t\t\t      guid_128_t
      expunged_guid_128)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:88,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:89,1
    - Dst: UNLINK_EISDIR
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:94,1
    - Dst: maildir_lose_unexpected_dir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:95,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - mbox
    - path
    - ctx
    argTypes:
    - struct maildir_mailbox*
    - char*
    - struct maildir_index_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 81
    functionDepth: 5
    functionLinenumber: 81
    functionLinenumberEnd: 99
    functionName: maildir_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - unlink
    - UNLINK_EISDIR
    - mailbox_sync_notify
    - maildir_lose_unexpected_dir
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: "int maildir_expunge(struct maildir_mailbox *mbox, const char *path,\n\t\t\t
      \  struct maildir_index_sync_context *ctx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:112,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:113,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:117,1
    - Dst: maildir_filename_flags_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:120,1
    - Dst: index_sync_changes_apply
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:125,1
    - Dst: maildir_filename_flags_kw_set
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:130,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:132,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:133,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:136,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:139,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:143,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:146,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:146,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:147,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:154,1
    - Dst: index_sync_type_convert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:154,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 3
    argNames:
    - mbox
    - path
    - ctx
    argTypes:
    - struct maildir_mailbox*
    - char*
    - struct maildir_index_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 156
    functionName: maildir_sync_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - strcmp
    - rename
    - strrchr
    - maildir_filename_flags_get
    - ENOSPACE
    - index_sync_type_convert
    - stat
    - t_strdup_until
    - maildir_filename_flags_kw_set
    - ENOACCESS
    - mailbox_set_critical
    - mailbox_sync_notify
    - i_assert
    - t_strconcat
    - index_sync_changes_apply
    linkageType: ''
    returnType: int
    signature: "int maildir_sync_flags(struct maildir_mailbox *mbox, const char *path,\n\t\t\t
      \     struct maildir_index_sync_context *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_set_racing
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:176,1
    - Dst: maildir_uidlist_add_flags
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:177,1
    - Dst: maildir_uidlist_sync_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:183,1
    - Dst: maildir_uidlist_sync_remove
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:192,1
    - Dst: maildir_uidlist_sync_next
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:193,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:195,1
    - Dst: maildir_uidlist_sync_finish
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:198,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:200,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - uflags
    - filename
    - uid
    argTypes:
    - struct maildir_index_sync_context*
    - enum maildir_uidlist_rec_flag
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 205
    functionName: maildir_handle_uid_insertion
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_sync_next
    - str_begins_with
    - maildir_uidlist_add_flags
    - maildir_sync_set_racing
    - e_warning
    - maildir_uidlist_sync_remove
    - maildir_uidlist_sync_finish
    - maildir_uidlist_sync_init
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int maildir_handle_uid_insertion(struct maildir_index_sync_context
      *ctx,\n\t\t\t\t\tenum maildir_uidlist_rec_flag uflags,\n\t\t\t\t\tconst char
      *filename, uint32_t uid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_get_sync_flags
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:218,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:221,1
    - Dst: index_storage_expunged_sync_begin
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:223,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:227,1
    - Dst: maildir_keywords_sync_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:234,1
    - Dst: index_sync_changes_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:236,1
    - Dst: maildir_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:237,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - mbox
    - maildir_sync_ctx
    - ctx_r
    argTypes:
    - struct maildir_mailbox*
    - struct maildir_sync_context*
    - struct maildir_index_sync_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 207
    functionDepth: 9
    functionLinenumber: 207
    functionLinenumberEnd: 242
    functionName: maildir_sync_index_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 1
    functionsReached:
    - maildir_is_backend_readonly
    - index_storage_expunged_sync_begin
    - index_sync_changes_init
    - maildir_keywords_sync_init
    - ENUM_NEGATE
    - index_storage_get_sync_flags
    - i_new
    - time
    linkageType: ''
    returnType: int
    signature: "int maildir_sync_index_begin(struct maildir_mailbox *mbox,\n\t\t\t
      \    struct maildir_sync_context *maildir_sync_ctx,\n\t\t\t     struct maildir_index_sync_context
      **ctx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DIR_DELAYED_REFRESH
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:261,1
    - Dst: DIR_DELAYED_REFRESH
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:262,1
    - Dst: DIR_DELAYED_REFRESH
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:263,1
    - Dst: DIR_DELAYED_REFRESH
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:264,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 4
    argCount: 2
    argNames:
    - old_hdr
    - new_hdr
    argTypes:
    - struct maildir_index_header*
    - struct maildir_index_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 265
    functionName: maildir_index_header_has_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - DIR_DELAYED_REFRESH
    linkageType: ''
    returnType: bool
    signature: "bool maildir_index_header_has_changed(const struct maildir_index_header
      *old_hdr,\n\t\t\t\t const struct maildir_index_header *new_hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hdr
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 251
    functionName: DIR_DELAYED_REFRESH
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIR_DELAYED_REFRESH(hdr, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:276,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:276,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:277,1
    - Dst: ST_MTIME_NSEC
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:281,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:284,1
    - Dst: maildir_index_header_has_changed
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:287,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:288,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_index_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 292
    functionName: maildir_sync_index_update_ext_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - maildir_index_header_has_changed
    - ST_MTIME_NSEC
    - mail_index_update_header_ext
    - mail_index_get_header_ext
    - stat
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void maildir_sync_index_update_ext_header(struct maildir_index_sync_context
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:302,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:304,1
    - Dst: mail_index_sync_no_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:309,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:313,1
    - Dst: maildir_sync_index_update_ext_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:315,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:322,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:323,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:329,1
    - Dst: maildir_keywords_sync_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:330,1
    - Dst: index_sync_changes_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:331,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - success
    argTypes:
    - struct maildir_index_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 294
    functionDepth: 7
    functionLinenumber: 294
    functionLinenumberEnd: 334
    functionName: maildir_sync_index_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - index_sync_changes_deinit
    - mail_index_sync_commit
    - mail_index_sync_rollback
    - maildir_sync_index_update_ext_header
    - mail_index_sync_no_warning
    - mailbox_set_index_error
    - maildir_keywords_sync_deinit
    - e_warning
    - index_storage_expunging_deinit
    - time
    - i_free
    linkageType: ''
    returnType: int
    signature: "int maildir_sync_index_finish(struct maildir_index_sync_context *ctx,\n\t\t\t\t
      \    bool success)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_index_finish
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct maildir_index_sync_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 336
    functionDepth: 8
    functionLinenumber: 336
    functionLinenumberEnd: 342
    functionName: maildir_sync_index_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - maildir_sync_index_finish
    linkageType: ''
    returnType: int
    signature: int maildir_sync_index_commit(struct maildir_index_sync_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_index_finish
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct maildir_index_sync_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 344
    functionDepth: 8
    functionLinenumber: 344
    functionLinenumberEnd: 350
    functionName: maildir_sync_index_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 1
    functionsReached:
    - maildir_sync_index_finish
    linkageType: ''
    returnType: void
    signature: void maildir_sync_index_rollback(struct maildir_index_sync_context
      **_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 360
    functionName: uint_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int uint_cmp(const unsigned int *i1, const unsigned int *i2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:372,1
    - Dst: index_keyword_array_cmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:373,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:379,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:380,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:383,1
    - Dst: maildir_keywords_idx_char
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:386,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:389,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:396,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:398,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:399,1
    - Dst: index_keyword_array_cmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:404,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:411,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:415,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:416,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:417,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:418,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:426,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:427,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:429,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:430,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:433,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:434,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:436,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:437,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 2
    argNames:
    - ctx
    - seq
    argTypes:
    - struct maildir_index_sync_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 362
    functionDepth: 8
    functionLinenumber: 362
    functionLinenumberEnd: 439
    functionName: maildir_sync_mail_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - array_delete
    - mail_index_update_keywords
    - array_get
    - mail_index_keywords_create_from_indexes
    - maildir_keywords_idx_char
    - mail_index_keywords_unref
    - array_count
    - index_keyword_array_cmp
    - array_sort
    - mail_index_lookup_keywords
    linkageType: ''
    returnType: void
    signature: void maildir_sync_mail_keywords(struct maildir_index_sync_context *ctx,
      uint32_t seq)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:465,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:468,1
    - Dst: maildir_uidlist_get_uid_validity
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:469,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:475,1
    - Dst: mail_index_reset
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:477,1
    - Dst: mailbox_recent_flags_reset
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:478,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:481,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:488,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:489,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:491,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:492,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:493,1
    - Dst: maildir_uidlist_iter_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:494,1
    - Dst: maildir_uidlist_iter_next
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:495,1
    - Dst: maildir_filename_flags_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:496,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:499,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:504,1
    - Dst: maildir_handle_uid_insertion
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:512,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:530,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:531,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:533,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:536,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:538,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:540,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:545,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:549,1
    - Dst: maildir_handle_uid_insertion
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:554,1
    - Dst: index_sync_changes_read
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:561,1
    - Dst: maildir_expunge_is_valid_guid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:564,1
    - Dst: maildir_file_do
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:568,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:571,1
    - Dst: maildir_sync_notify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:574,1
    - Dst: index_sync_changes_have
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:581,1
    - Dst: maildir_file_do
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:583,1
    - Dst: maildir_sync_notify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:587,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:608,1
    - Dst: maildir_sync_mail_keywords
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:612,1
    - Dst: maildir_uidlist_iter_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:614,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:619,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:624,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:625,1
    - Dst: mailbox_recent_flags_set_seqs
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:631,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:633,1
    - Dst: maildir_uidlist_sync_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:636,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:641,1
    - Dst: time_to_uint32
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:647,1
    - Dst: maildir_get_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:651,1
    - Dst: maildir_uidlist_set_uid_validity
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:652,1
    - Dst: maildir_uidlist_set_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:654,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:657,1
    - Dst: maildir_uidlist_get_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:662,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:664,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:669,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:671,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:675,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:676,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 139
    argCount: 2
    argNames:
    - ctx
    - partial
    argTypes:
    - struct maildir_index_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 441
    functionDepth: 9
    functionLinenumber: 441
    functionLinenumberEnd: 679
    functionName: maildir_sync_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - maildir_handle_uid_insertion
    - mailbox_recent_flags_reset
    - time_to_uint32
    - maildir_uidlist_get_next_uid
    - mail_index_lookup_seq_range
    - maildir_uidlist_iter_next
    - array_count
    - maildir_uidlist_set_uid_validity
    - mailbox_sync_notify
    - time
    - mail_index_append
    - mail_index_transaction_open_updated_view
    - maildir_get_uidvalidity_next
    - e_warning
    - maildir_sync_notify
    - mail_index_reset
    - mail_index_keywords_unref
    - array_free
    - maildir_uidlist_iter_deinit
    - mail_index_view_close
    - i_zero
    - mailbox_recent_flags_set_seqs
    - mail_index_update_keywords
    - maildir_file_do
    - maildir_expunge_is_valid_guid
    - maildir_filename_flags_get
    - index_sync_changes_have
    - mail_index_get_header
    - mailbox_get_private_flags_mask
    - mail_index_lookup
    - maildir_sync_mail_keywords
    - maildir_uidlist_iter_init
    - i_assert
    - maildir_uidlist_get_uid_validity
    - mail_index_update_header
    - ENUM_NEGATE
    - mail_index_update_flags
    - mail_index_keywords_create_from_indexes
    - I_MAX
    - maildir_uidlist_sync_deinit
    - index_sync_changes_read
    - maildir_uidlist_set_next_uid
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: "int maildir_sync_index(struct maildir_index_sync_context *ctx,\n\t\t
      \      bool partial)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:687,1
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mbox
    - view
    argTypes:
    - struct maildir_mailbox*
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 681
    functionDepth: 3
    functionLinenumber: 681
    functionLinenumberEnd: 693
    functionName: maildir_list_get_ext_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_register
    - mail_index_view_get_index
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int maildir_list_get_ext_id(struct maildir_mailbox *mbox,\n\t\t\tstruct
      mail_index_view *view)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:700,1
    - Dst: index_storage_list_index_has_changed
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:709,1
    - Dst: maildir_list_get_ext_id
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:718,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:719,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:738,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:742,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:745,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:746,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:747,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:751,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:758,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:759,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:760,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:764,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 5
    argNames:
    - box
    - list_view
    - seq
    - quick
    - reason_r
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - uint32_t
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 695
    functionDepth: 7
    functionLinenumber: 695
    functionLinenumberEnd: 770
    functionName: maildir_list_index_has_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - index_storage_list_index_has_changed
    - maildir_list_get_ext_id
    - MAILDIR_MAILBOX
    - t_strdup_printf
    - mail_index_lookup_ext
    - stat
    - mailbox_set_critical
    - i_assert
    - t_strconcat
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int maildir_list_index_has_changed(struct mailbox *box,\n\t\t\t\t
      \  struct mail_index_view *list_view,\n\t\t\t\t   uint32_t seq, bool quick,\n\t\t\t\t
      \  const char **reason_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:776,1
    - Dst: index_storage_list_index_update_sync
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:785,1
    - Dst: mail_index_transaction_get_view
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:792,1
    - Dst: maildir_list_get_ext_id
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:793,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:794,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:799,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:809,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c:810,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - box
    - trans
    - seq
    argTypes:
    - struct mailbox*
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 772
    functionDepth: 6
    functionLinenumber: 772
    functionLinenumberEnd: 811
    functionName: maildir_list_index_update_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync-index.c
    functionUses: 0
    functionsReached:
    - i_zero
    - maildir_list_get_ext_id
    - MAILDIR_MAILBOX
    - mail_index_lookup_ext
    - mail_index_update_ext
    - index_storage_list_index_update_sync
    - memcmp
    - mail_index_transaction_get_view
    linkageType: ''
    returnType: void
    signature: "void maildir_list_index_update_sync(struct mailbox *box,\n\t\t\t\t
      \   struct mail_index_transaction *trans,\n\t\t\t\t    uint32_t seq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - uidlist
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: UIDLIST_IS_LOCKED
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UIDLIST_IS_LOCKED(uidlist)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:140,1
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:149,1
    - Dst: index_storage_lock_notify_reset
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:156,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:159,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:160,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:162,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:168,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:173,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:174,1
    - Dst: eacces_error_get_creating
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:175,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:178,1
    - Dst: maildir_set_deleted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:186,1
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:196,1
    - Dst: maildir_uidlist_unlock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:197,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 4
    argNames:
    - uidlist
    - nonblock
    - refresh
    - refresh_when_locked
    argTypes:
    - struct maildir_uidlist*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 135
    functionDepth: 9
    functionLinenumber: 135
    functionLinenumberEnd: 202
    functionName: maildir_uidlist_lock_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - index_storage_lock_notify_reset
    - eacces_error_get_creating
    - mailbox_get_permissions
    - file_dotlock_create
    - maildir_uidlist_refresh
    - umask
    - maildir_set_deleted
    - ENOACCESS
    - mailbox_set_critical
    - mail_storage_set_error
    - maildir_uidlist_unlock
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_lock_timeout(struct maildir_uidlist *uidlist,\n\t\t\t\t\tbool
      nonblock, bool refresh,\n\t\t\t\t\tbool refresh_when_locked)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 10
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: maildir_uidlist_lock
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 3
    functionsReached:
    - maildir_uidlist_lock_timeout
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_lock(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 10
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: maildir_uidlist_try_lock
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_lock_timeout
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_try_lock(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:216,1
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:216,1
    - Dst: file_dotlock_touch
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 219
    functionName: maildir_uidlist_lock_touch
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - UIDLIST_IS_LOCKED
    - i_assert
    - file_dotlock_touch
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_lock_touch(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 224
    functionName: maildir_uidlist_is_locked
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - UIDLIST_IS_LOCKED
    linkageType: ''
    returnType: bool
    signature: bool maildir_uidlist_is_locked(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: maildir_uidlist_is_read
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool maildir_uidlist_is_read(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 234
    functionName: maildir_uidlist_is_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool maildir_uidlist_is_open(struct maildir_uidlist *uidlist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:238,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 245
    functionName: maildir_uidlist_unlock
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 5
    functionsReached:
    - file_dotlock_delete
    - i_assert
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_unlock(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_lock_notify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - secs_left
    - stale
    - context
    argTypes:
    - unsigned int
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 247
    functionDepth: 4
    functionLinenumber: 247
    functionLinenumberEnd: 256
    functionName: dotlock_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - index_storage_lock_notify
    linkageType: ''
    returnType: bool
    signature: bool dotlock_callback(unsigned int secs_left, bool stale, void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:264,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:266,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:268,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:272,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:273,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:274,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:278,1
    - Dst: mail_storage_get_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 258
    functionDepth: 5
    functionLinenumber: 258
    functionLinenumberEnd: 294
    functionName: maildir_uidlist_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - hash_table_create
    - i_unreached
    - mail_storage_get_lock_timeout
    - i_strconcat
    - i_new
    - str_new
    - mailbox_get_path_to
    linkageType: ''
    returnType: struct maildir_uidlist
    signature: struct maildir_uidlist *maildir_uidlist_init(struct maildir_mailbox
      *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:299,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 296
    functionDepth: 4
    functionLinenumber: 296
    functionLinenumberEnd: 308
    functionName: maildir_uidlist_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - close
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_close(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:312,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:317,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 5
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: maildir_uidlist_reset
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - hash_table_clear
    - maildir_uidlist_close
    - array_clear
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_reset(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:325,1
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:325,1
    - Dst: maildir_uidlist_update
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:328,1
    - Dst: maildir_uidlist_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:329,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:331,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:332,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:334,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:335,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:336,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - _uidlist
    argTypes:
    - struct maildir_uidlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 321
    functionDepth: 5
    functionLinenumber: 321
    functionLinenumberEnd: 338
    functionName: maildir_uidlist_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - i_free
    - UIDLIST_IS_LOCKED
    - pool_unref
    - maildir_uidlist_update
    - array_free
    - i_assert
    - maildir_uidlist_close
    - str_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_deinit(struct maildir_uidlist **_uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rec1
    - rec2
    argTypes:
    - struct maildir_uidlist_rec**
    - struct maildir_uidlist_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 345
    functionName: maildir_uid_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - uid
    linkageType: ''
    returnType: int
    signature: "int maildir_uid_cmp(struct maildir_uidlist_rec *const *rec1,\n\t\t\t
      \  struct maildir_uidlist_rec *const *rec2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:353,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:355,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:359,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:361,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:363,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - uidlist
    - fmt
    argTypes:
    - struct maildir_uidlist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 348
    functionDepth: 4
    functionLinenumber: 348
    functionLinenumberEnd: 366
    functionName: maildir_uidlist_set_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - t_strdup_vprintf
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_set_corrupted(struct maildir_uidlist *uidlist,\n\t\t\t
      \     const char *fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ST_MTIME_NSEC
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - uidlist
    - st
    argTypes:
    - struct maildir_uidlist*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 382
    functionName: maildir_uidlist_update_hdr
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - ST_MTIME_NSEC
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_update_hdr(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \      const struct stat *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:391,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:393,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:394,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:401,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - uidlist
    - rec
    argTypes:
    - struct maildir_uidlist*
    - struct maildir_uidlist_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 405
    functionName: maildir_uidlist_records_array_delete
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_get
    - array_bsearch
    - array_delete
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int maildir_uidlist_records_array_delete(struct maildir_uidlist
      *uidlist,\n\t\t\t\t     struct maildir_uidlist_rec *rec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:415,1
    - Dst: MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:420,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:421,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:422,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:424,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:426,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:434,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:435,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:436,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - uidlist
    - line_p
    - rec
    argTypes:
    - struct maildir_uidlist*
    - char**
    - struct maildir_uidlist_rec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 407
    functionDepth: 5
    functionLinenumber: 407
    functionLinenumberEnd: 446
    functionName: maildir_uidlist_read_extended
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - memcpy
    - buffer_append
    - MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
    - t_buffer_create
    - t_strdup_until
    - p_malloc
    - buffer_append_c
    - maildir_uidlist_set_corrupted
    linkageType: ''
    returnType: bool
    signature: "bool maildir_uidlist_read_extended(struct maildir_uidlist *uidlist,\n\t\t\t
      \     const char **line_p,\n\t\t\t      struct maildir_uidlist_rec *rec)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:464,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:469,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:475,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:488,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:494,1
    - Dst: maildir_uidlist_read_extended
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:505,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:509,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - uidlist
    - line
    argTypes:
    - struct maildir_uidlist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 448
    functionDepth: 6
    functionLinenumber: 448
    functionLinenumberEnd: 513
    functionName: maildir_uidlist_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_read_extended
    - p_new
    - maildir_uidlist_set_corrupted
    linkageType: ''
    returnType: bool
    signature: "bool maildir_uidlist_next(struct maildir_uidlist *uidlist,\n\t\t\t\t
      const char *line)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:581,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:588,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:592,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:593,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:599,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:600,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:606,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:608,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:615,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:616,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:617,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 4
    argNames:
    - uidlist
    - line
    - uid_validity_r
    - next_uid_r
    argTypes:
    - struct maildir_uidlist*
    - char*
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 573
    functionDepth: 5
    functionLinenumber: 573
    functionLinenumberEnd: 625
    functionName: maildir_uidlist_read_v3_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - str_len
    - guid_128_from_string
    - t_strdup_until
    - str_truncate
    - str_to_uint
    - maildir_uidlist_set_corrupted
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_read_v3_header(struct maildir_uidlist *uidlist,\n\t\t\t
      \      const char *line,\n\t\t\t       unsigned int *uid_validity_r,\n\t\t\t
      \      unsigned int *next_uid_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:634,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:642,1
    - Dst: sscanf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:652,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:653,1
    - Dst: maildir_uidlist_read_v3_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:660,1
    - Dst: maildir_uidlist_set_corrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:668,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - uidlist
    - input
    argTypes:
    - struct maildir_uidlist*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 627
    functionDepth: 6
    functionLinenumber: 627
    functionLinenumberEnd: 671
    functionName: maildir_uidlist_read_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_read_v3_header
    - maildir_uidlist_set_corrupted
    - sscanf
    - i_stream_read_next_line
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_read_header(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \      struct istream *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 698
    functionName: maildir_uidlist_records_sort_by_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - array_sort
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_records_sort_by_uid(struct maildir_uidlist *uidlist)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:715,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:716,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:717,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:722,1
    - Dst: lseek
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:732,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:737,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:747,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:748,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:753,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:760,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:762,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:766,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:767,1
    - Dst: maildir_uidlist_read_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:772,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:779,1
    - Dst: maildir_uidlist_next
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:782,1
    - Dst: maildir_uidlist_records_sort_by_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:798,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:806,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:817,1
    - Dst: maildir_uidlist_update_hdr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:827,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:833,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:835,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:840,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:842,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:843,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 110
    argCount: 3
    argNames:
    - uidlist
    - retry_r
    - try_retry
    argTypes:
    - struct maildir_uidlist*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 700
    functionDepth: 7
    functionLinenumber: 700
    functionLinenumberEnd: 848
    functionName: maildir_uidlist_update_read
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - nfs_safe_open
    - i_unlink
    - fstat
    - i_stream_seek
    - maildir_uidlist_records_sort_by_uid
    - maildir_uidlist_next
    - i_close_fd
    - i_stream_read_next_line
    - i_stream_get_error
    - ENOACCESS
    - i_stream_destroy
    - maildir_uidlist_read_header
    - close
    - pool_alloconly_create
    - i_stream_create_fd
    - lseek
    - nearest_power
    - maildir_uidlist_update_hdr
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_update_read(struct maildir_uidlist *uidlist,\n\t\t\t
      \   bool *retry_r, bool try_retry)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:856,1
    - Dst: nfs_flush_attr_cache_unlocked
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:857,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:859,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - uidlist
    - st_r
    argTypes:
    - struct maildir_uidlist*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 850
    functionDepth: 4
    functionLinenumber: 850
    functionLinenumberEnd: 868
    functionName: maildir_uidlist_stat
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - nfs_flush_attr_cache_unlocked
    - nfs_safe_stat
    - nfs_flush_file_handle_cache
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_stat(struct maildir_uidlist *uidlist, struct stat
      *st_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:879,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:887,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:897,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:902,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - uidlist
    - recreated_r
    argTypes:
    - struct maildir_uidlist*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 870
    functionDepth: 5
    functionLinenumber: 870
    functionLinenumberEnd: 915
    functionName: maildir_uidlist_has_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - maildir_uidlist_stat
    - fstat
    - CMP_DEV_T
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_has_changed(struct maildir_uidlist *uidlist, bool
      *recreated_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_has_changed
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:923,1
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:925,1
    - Dst: maildir_uidlist_reset
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:932,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:935,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:936,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:937,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:941,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 917
    functionDepth: 6
    functionLinenumber: 917
    functionLinenumberEnd: 946
    functionName: maildir_uidlist_open_latest
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_has_changed
    - UIDLIST_IS_LOCKED
    - nfs_safe_open
    - maildir_uidlist_reset
    - ENOACCESS
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_open_latest(struct maildir_uidlist *uidlist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_open_latest
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:954,1
    - Dst: maildir_uidlist_update_read
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:958,1
    - Dst: maildir_uidlist_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:963,1
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:968,1
    - Dst: maildir_uidlist_update
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:972,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 948
    functionDepth: 8
    functionLinenumber: 948
    functionLinenumberEnd: 976
    functionName: maildir_uidlist_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - UIDLIST_IS_LOCKED
    - maildir_uidlist_open_latest
    - maildir_uidlist_update
    - maildir_uidlist_update_read
    - maildir_uidlist_close
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_refresh(struct maildir_uidlist *uidlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:987,1
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:987,1
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:990,1
    - Dst: maildir_uidlist_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:992,1
    - Dst: ST_NTIMES_EQUAL
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:997,1
    - Dst: ST_MTIME_NSEC
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:997,1
    - Dst: mail_index_is_in_memory
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:998,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1002,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1003,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1007,1
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1009,1
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1013,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 978
    functionDepth: 9
    functionLinenumber: 978
    functionLinenumberEnd: 1015
    functionName: maildir_uidlist_refresh_fast_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - UIDLIST_IS_LOCKED
    - maildir_uidlist_refresh
    - maildir_uidlist_stat
    - mail_index_view_open
    - mail_index_get_header
    - ST_MTIME_NSEC
    - mail_index_is_in_memory
    - ST_NTIMES_EQUAL
    - i_assert
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_refresh_fast_init(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: "uidp < (*recp)->uid ? -1 :\n\t\t*uidp >"
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - uidp
    - recp
    argTypes:
    - uint32_t*
    - struct maildir_uidlist_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1017
    functionDepth: 0
    functionLinenumber: 1017
    functionLinenumberEnd: 1023
    functionName: maildir_uid_bsearch_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - "uidp < (*recp)->uid ? -1 :\n\t\t*uidp >"
    linkageType: ''
    returnType: int
    signature: "int maildir_uid_bsearch_cmp(const uint32_t *uidp,\n\t\t\tstruct maildir_uidlist_rec
      *const *recp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1033,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1037,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - uidlist
    - uid
    - rec_r
    argTypes:
    - struct maildir_uidlist*
    - uint32_t
    - struct maildir_uidlist_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1025
    functionDepth: 9
    functionLinenumber: 1025
    functionLinenumberEnd: 1045
    functionName: maildir_uidlist_lookup_rec
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_refresh
    - array_bsearch
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_lookup_rec(struct maildir_uidlist *uidlist, uint32_t
      uid,\n\t\t\t   struct maildir_uidlist_rec **rec_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_lookup_rec
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1054,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - uidlist
    - uid
    - flags_r
    - fname_r
    argTypes:
    - struct maildir_uidlist*
    - uint32_t
    - enum maildir_uidlist_rec_flag*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1047
    functionDepth: 10
    functionLinenumber: 1047
    functionLinenumberEnd: 1060
    functionName: maildir_uidlist_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_lookup_rec
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_lookup(struct maildir_uidlist *uidlist, uint32_t
      uid,\n\t\t\t   enum maildir_uidlist_rec_flag *flags_r,\n\t\t\t   const char
      **fname_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_lookup_rec
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1070,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1080,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - uidlist
    - uid
    - key
    argTypes:
    - struct maildir_uidlist*
    - uint32_t
    - enum maildir_uidlist_rec_ext_key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1062
    functionDepth: 10
    functionLinenumber: 1062
    functionLinenumberEnd: 1083
    functionName: maildir_uidlist_lookup_ext
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 4
    functionsReached:
    - strlen
    - maildir_uidlist_lookup_rec
    linkageType: ''
    returnType: char
    signature: "char *\nmaildir_uidlist_lookup_ext(struct maildir_uidlist *uidlist,
      uint32_t uid,\n\t\t\t   enum maildir_uidlist_rec_ext_key key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1085
    functionDepth: 0
    functionLinenumber: 1085
    functionLinenumberEnd: 1088
    functionName: maildir_uidlist_get_uid_validity
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t maildir_uidlist_get_uid_validity(struct maildir_uidlist *uidlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1093
    functionName: maildir_uidlist_get_next_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t maildir_uidlist_get_next_uid(struct maildir_uidlist *uidlist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1099,1
    - Dst: maildir_uidlist_update
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1104,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - uidlist
    - mailbox_guid
    argTypes:
    - struct maildir_uidlist*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1095
    functionDepth: 9
    functionLinenumber: 1095
    functionLinenumberEnd: 1109
    functionName: maildir_uidlist_get_mailbox_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - maildir_uidlist_update
    - maildir_uidlist_refresh
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_get_mailbox_guid(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \    guid_128_t mailbox_guid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1114,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - uidlist
    - mailbox_guid
    argTypes:
    - struct maildir_uidlist*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1120
    functionName: maildir_uidlist_set_mailbox_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - memcpy
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_set_mailbox_guid(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \     const guid_128_t mailbox_guid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - uidlist
    - uid_validity
    argTypes:
    - struct maildir_uidlist*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1122
    functionDepth: 1
    functionLinenumber: 1122
    functionLinenumberEnd: 1131
    functionName: maildir_uidlist_set_uid_validity
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_set_uid_validity(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \     uint32_t uid_validity)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - uidlist
    - next_uid
    - force
    argTypes:
    - struct maildir_uidlist*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1133
    functionDepth: 1
    functionLinenumber: 1133
    functionLinenumberEnd: 1141
    functionName: maildir_uidlist_set_next_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_set_next_uid(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \ uint32_t next_uid, bool force)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1153,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1158,1
    - Dst: MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1158,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1160,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1162,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1167,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1168,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1168,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1170,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1172,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - rec
    - pool
    - key
    - value
    argTypes:
    - struct maildir_uidlist_rec*
    - pool_t
    - enum maildir_uidlist_rec_ext_key
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1174
    functionName: maildir_uidlist_rec_set_ext
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - memcpy
    - buffer_append
    - MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
    - strlen
    - t_buffer_create
    - buffer_append_c
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_rec_set_ext(struct maildir_uidlist_rec *rec,
      pool_t pool,\n\t\t\t    enum maildir_uidlist_rec_ext_key key,\n\t\t\t    const
      char *value)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1184,1
    - Dst: MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1184,1
    - Dst: maildir_uidlist_lookup_rec
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1186,1
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1192,1
    - Dst: maildir_uidlist_lookup_rec
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1194,1
    - Dst: maildir_uidlist_rec_set_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1201,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - uidlist
    - uid
    - key
    - value
    argTypes:
    - struct maildir_uidlist*
    - uint32_t
    - enum maildir_uidlist_rec_ext_key
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1177
    functionDepth: 10
    functionLinenumber: 1177
    functionLinenumberEnd: 1203
    functionName: maildir_uidlist_set_ext_internal
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_rec_set_ext
    - MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
    - maildir_uidlist_refresh
    - maildir_uidlist_lookup_rec
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_set_ext_internal(struct maildir_uidlist *uidlist,
      uint32_t uid,\n\t\t\t\t enum maildir_uidlist_rec_ext_key key,\n\t\t\t\t const
      char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_set_ext_internal
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - uidlist
    - uid
    - key
    - value
    argTypes:
    - struct maildir_uidlist*
    - uint32_t
    - enum maildir_uidlist_rec_ext_key
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1211
    functionDepth: 11
    functionLinenumber: 1211
    functionLinenumberEnd: 1216
    functionName: maildir_uidlist_set_ext
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - maildir_uidlist_set_ext_internal
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_set_ext(struct maildir_uidlist *uidlist, uint32_t
      uid,\n\t\t\t     enum maildir_uidlist_rec_ext_key key,\n\t\t\t     const char
      *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_set_ext_internal
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - uidlist
    - uid
    - key
    argTypes:
    - struct maildir_uidlist*
    - uint32_t
    - enum maildir_uidlist_rec_ext_key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1218
    functionDepth: 11
    functionLinenumber: 1218
    functionLinenumberEnd: 1222
    functionName: maildir_uidlist_unset_ext
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - maildir_uidlist_set_ext_internal
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_unset_ext(struct maildir_uidlist *uidlist, uint32_t
      uid,\n\t\t\t       enum maildir_uidlist_rec_ext_key key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1230,1
    - Dst: maildir_get_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1224
    functionDepth: 9
    functionLinenumber: 1224
    functionLinenumberEnd: 1238
    functionName: maildir_uidlist_generate_uid_validity
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - mail_index_get_header
    - maildir_get_uidvalidity_next
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_generate_uid_validity(struct maildir_uidlist *uidlist)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1253,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1255,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1256,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1257,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1260,1
    - Dst: maildir_uidlist_generate_uid_validity
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1264,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1266,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1268,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1269,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1275,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1276,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1277,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1278,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1280,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1281,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1281,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1281,1
    - Dst: maildir_uidlist_iter_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1284,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1285,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1285,1
    - Dst: maildir_uidlist_iter_next_rec
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1288,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1290,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1291,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1294,1
    - Dst: MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1294,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1295,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1296,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1297,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1301,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1302,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1304,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1306,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1307,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1308,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1308,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1308,1
    - Dst: maildir_uidlist_iter_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1310,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1312,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1313,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1314,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1315,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1320,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1323,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1324,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 60
    argCount: 5
    argNames:
    - uidlist
    - fd
    - path
    - first_idx
    - file_size_r
    argTypes:
    - struct maildir_uidlist*
    - int
    - char*
    - unsigned int
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1330
      start: 1240
    functionDepth: 10
    functionLinenumber: 1240
    functionLinenumberEnd: 1330
    functionName: maildir_uidlist_write_fd
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - str_len
    - MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
    - strlen
    - o_stream_cork
    - o_stream_unref
    - array_count
    - t_str_new
    - str_append_c
    - o_stream_get_error
    - guid_128_generate
    - o_stream_nsend
    - maildir_uidlist_iter_deinit
    - maildir_uidlist_iter_next_rec
    - str_data
    - guid_128_to_string
    - o_stream_create_fd_file
    - maildir_uidlist_generate_uid_validity
    - maildir_uidlist_iter_init
    - i_assert
    - str_append_data
    - mailbox_set_critical
    - fdatasync
    - str_append_str
    - o_stream_finish
    - str_truncate
    - str_append
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_write_fd(struct maildir_uidlist *uidlist, int
      fd,\n\t\t\t\t    const char *path, unsigned int first_idx,\n\t\t\t\t    uoff_t
      *file_size_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1337,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1348,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1349,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1350,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1351,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1354,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1358,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1359,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1361,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1364,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1371,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1378,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1384,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1386,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1389,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1332
    functionDepth: 2
    functionLinenumber: 1332
    functionLinenumberEnd: 1390
    functionName: maildir_uidlist_records_drop_expunges
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_push_back
    - array_get
    - mail_index_view_open
    - mail_index_get_header
    - hash_table_remove
    - array_count
    - ARRAY_TYPE
    - mail_index_lookup
    - array_free
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_records_drop_expunges(struct maildir_uidlist *uidlist)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_permissions
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1395,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1402,1
    - Dst: maildir_uidlist_records_drop_expunges
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1404,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1406,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1408,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1409,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1413,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1414,1
    - Dst: umask
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1415,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1420,1
    - Dst: maildir_set_deleted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1426,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1431,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1433,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1434,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1438,1
    - Dst: maildir_uidlist_write_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1444,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1446,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1447,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1455,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1456,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1457,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1461,1
    - Dst: file_dotlock_is_locked
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1461,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1462,1
    - Dst: maildir_uidlist_close
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1467,1
    - Dst: maildir_uidlist_update_hdr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1476,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1479,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 59
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1392
    functionDepth: 11
    functionLinenumber: 1392
    functionLinenumberEnd: 1481
    functionName: maildir_uidlist_recreate
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_records_drop_expunges
    - i_unlink
    - fstat
    - eperm_error_get_chgrp
    - mailbox_get_path_to
    - rename
    - i_unreached
    - i_close_fd
    - umask
    - mailbox_get_permissions
    - open
    - maildir_uidlist_write_fd
    - i_assert
    - t_strconcat
    - file_dotlock_is_locked
    - maildir_set_deleted
    - maildir_uidlist_update_hdr
    - mailbox_set_critical
    - maildir_uidlist_close
    - fchown
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_recreate(struct maildir_uidlist *uidlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_lock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1490,1
    - Dst: maildir_uidlist_recreate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1492,1
    - Dst: maildir_uidlist_unlock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1483
    functionDepth: 12
    functionLinenumber: 1483
    functionLinenumberEnd: 1495
    functionName: maildir_uidlist_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 4
    functionsReached:
    - maildir_uidlist_unlock
    - maildir_uidlist_lock
    - maildir_uidlist_recreate
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_update(struct maildir_uidlist *uidlist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1497
    functionDepth: 1
    functionLinenumber: 1497
    functionLinenumberEnd: 1510
    functionName: maildir_uidlist_want_compress
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool maildir_uidlist_want_compress(struct maildir_uidlist_sync_ctx
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_want_compress
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1524,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1512
    functionDepth: 2
    functionLinenumber: 1512
    functionLinenumberEnd: 1525
    functionName: maildir_uidlist_want_recreate
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_want_compress
    linkageType: ''
    returnType: bool
    signature: bool maildir_uidlist_want_recreate(struct maildir_uidlist_sync_ctx
      *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_want_recreate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1534,1
    - Dst: maildir_uidlist_recreate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1535,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1539,1
    - Dst: maildir_uidlist_open_latest
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1540,1
    - Dst: maildir_uidlist_recreate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1543,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1545,1
    - Dst: lseek
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1547,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1548,1
    - Dst: maildir_uidlist_write_fd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1553,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1557,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1558,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1563,1
    - Dst: maildir_uidlist_update_hdr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1568,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1527
    functionDepth: 12
    functionLinenumber: 1527
    functionLinenumberEnd: 1571
    functionName: maildir_uidlist_sync_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_want_recreate
    - lseek
    - maildir_uidlist_open_latest
    - e_warning
    - maildir_uidlist_update_hdr
    - fstat
    - maildir_uidlist_recreate
    - mailbox_set_critical
    - maildir_uidlist_write_fd
    - i_assert
    linkageType: ''
    returnType: int
    signature: int maildir_uidlist_sync_update(struct maildir_uidlist_sync_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1579,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1585,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - uidlist
    - nonsynced
    argTypes:
    - struct maildir_uidlist*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1573
    functionDepth: 1
    functionLinenumber: 1573
    functionLinenumberEnd: 1587
    functionName: maildir_uidlist_mark_all
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_mark_all(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \    bool nonsynced)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1599,1
    - Dst: maildir_uidlist_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1607,1
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1616,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - uidlist
    - sync_flags
    - locked_r
    argTypes:
    - struct maildir_uidlist*
    - enum maildir_uidlist_sync_flags
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1589
    functionDepth: 10
    functionLinenumber: 1589
    functionLinenumberEnd: 1622
    functionName: maildir_uidlist_sync_lock
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_refresh
    - maildir_uidlist_lock_timeout
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_sync_lock(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \    enum maildir_uidlist_sync_flags sync_flags,\n\t\t\t\t     bool *locked_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_mark_all
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1624
    functionDepth: 2
    functionLinenumber: 1624
    functionLinenumberEnd: 1627
    functionName: maildir_uidlist_set_all_nonsynced
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_mark_all
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_set_all_nonsynced(struct maildir_uidlist *uidlist)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_sync_lock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1637,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1641,1
    - Dst: maildir_uidlist_mark_all
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1653,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1657,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1659,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1661,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1665,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1665,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - uidlist
    - sync_flags
    - sync_ctx_r
    argTypes:
    - struct maildir_uidlist*
    - enum maildir_uidlist_sync_flags
    - struct maildir_uidlist_sync_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1629
    functionDepth: 11
    functionLinenumber: 1629
    functionLinenumberEnd: 1667
    functionName: maildir_uidlist_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - hash_table_create
    - array_count
    - maildir_uidlist_mark_all
    - maildir_uidlist_sync_lock
    - i_new
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_sync_init(struct maildir_uidlist *uidlist,\n\t\t\t
      \     enum maildir_uidlist_sync_flags sync_flags,\n\t\t\t      struct maildir_uidlist_sync_ctx
      **sync_ctx_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1680,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1688,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1694,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1699,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1702,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1703,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1706,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1707,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1708,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1712,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1721,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1727,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1729,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 5
    argNames:
    - ctx
    - filename
    - uid
    - flags
    - rec_r
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    - char*
    - uint32_t
    - enum maildir_uidlist_rec_flag
    - struct maildir_uidlist_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1669
    functionDepth: 4
    functionLinenumber: 1669
    functionLinenumberEnd: 1734
    functionName: maildir_uidlist_sync_next_partial
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - p_strdup
    - p_new
    - ENUM_NEGATE
    - array_push_back
    - array_get
    - array_count
    - mailbox_set_critical
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_sync_next_partial(struct maildir_uidlist_sync_ctx
      *ctx,\n\t\t\t\t  const char *filename, uint32_t uid,\n\t\t\t\t  enum maildir_uidlist_rec_flag
      flags,\n\t\t\t\t  struct maildir_uidlist_rec **rec_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unsigned
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1744,1
    - Dst: while
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1747,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1749,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - extensions
    argTypes:
    - pool_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1736
    functionDepth: 1
    functionLinenumber: 1736
    functionLinenumberEnd: 1751
    functionName: ext_dup
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - memcpy
    - while
    - unsigned
    - p_malloc
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *ext_dup(pool_t pool, const unsigned char *extensions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_sync_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - filename
    - flags
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    - char*
    - enum maildir_uidlist_rec_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1755
    functionDepth: 1
    functionLinenumber: 1755
    functionLinenumberEnd: 1762
    functionName: maildir_uidlist_sync_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - maildir_uidlist_sync_next_uid
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_sync_next(struct maildir_uidlist_sync_ctx *ctx,\n\t\t\t
      \     const char *filename,\n\t\t\t      enum maildir_uidlist_rec_flag flags)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1780,1
    - Dst: maildir_uidlist_sync_next_partial
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1787,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1791,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1802,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1804,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1805,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1807,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1808,1
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1808,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1810,1
    - Dst: ext_dup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1815,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1823,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1824,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1826,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1834,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 5
    argNames:
    - ctx
    - filename
    - uid
    - flags
    - rec_r
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    - char*
    - uint32_t
    - enum maildir_uidlist_rec_flag
    - struct maildir_uidlist_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1764
    functionDepth: 5
    functionLinenumber: 1764
    functionLinenumberEnd: 1837
    functionName: maildir_uidlist_sync_next_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - strcmp
    - ext_dup
    - p_strdup
    - i_assert
    - p_new
    - ENUM_NEGATE
    - maildir_uidlist_sync_next_partial
    - array_push_back
    - UIDLIST_IS_LOCKED
    - e_warning
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_sync_next_uid(struct maildir_uidlist_sync_ctx
      *ctx,\n\t\t\t\t  const char *filename, uint32_t uid,\n\t\t\t\t  enum maildir_uidlist_rec_flag
      flags,\n\t\t\t\t  struct maildir_uidlist_rec **rec_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1845,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1846,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1848,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1849,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1850,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1852,1
    - Dst: maildir_uidlist_records_array_delete
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1853,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1856,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1860,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - filename
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1839
    functionDepth: 2
    functionLinenumber: 1839
    functionLinenumberEnd: 1866
    functionName: maildir_uidlist_sync_remove
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - maildir_uidlist_records_array_delete
    - hash_table_lookup
    - i_assert
    - hash_table_remove
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_sync_remove(struct maildir_uidlist_sync_ctx *ctx,\n\t\t\t\t
      const char *filename)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1876,1
    - Dst: MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1876,1
    - Dst: maildir_uidlist_rec_set_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctx
    - rec
    - key
    - value
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    - struct maildir_uidlist_rec*
    - enum maildir_uidlist_rec_ext_key
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1868
    functionDepth: 2
    functionLinenumber: 1868
    functionLinenumberEnd: 1879
    functionName: maildir_uidlist_sync_set_ext
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - i_assert
    - maildir_uidlist_rec_set_ext
    - MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_sync_set_ext(struct maildir_uidlist_sync_ctx
      *ctx,\n\t\t\t\t  struct maildir_uidlist_rec *rec,\n\t\t\t\t  enum maildir_uidlist_rec_ext_key
      key,\n\t\t\t\t  const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - filename
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1881
    functionDepth: 0
    functionLinenumber: 1881
    functionLinenumberEnd: 1889
    functionName: maildir_uidlist_sync_get_full_filename
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: char
    signature: "char *\nmaildir_uidlist_sync_get_full_filename(struct maildir_uidlist_sync_ctx
      *ctx,\n\t\t\t\t       const char *filename)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - uidlist
    - filename
    - uid_r
    argTypes:
    - struct maildir_uidlist*
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1891
    functionDepth: 0
    functionLinenumber: 1891
    functionLinenumberEnd: 1902
    functionName: maildir_uidlist_get_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: bool
    signature: "bool maildir_uidlist_get_uid(struct maildir_uidlist *uidlist,\n\t\t\t
      \    const char *filename, uint32_t *uid_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1909,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1913,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1914,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1915,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - uidlist
    - filename
    argTypes:
    - struct maildir_uidlist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1904
    functionDepth: 1
    functionLinenumber: 1904
    functionLinenumberEnd: 1916
    functionName: maildir_uidlist_update_fname
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - strcmp
    - p_strdup
    - hash_table_lookup
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_update_fname(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \ const char *filename)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - uidlist
    - filename
    argTypes:
    - struct maildir_uidlist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1918
    functionDepth: 0
    functionLinenumber: 1918
    functionLinenumberEnd: 1926
    functionName: maildir_uidlist_get_full_filename
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: char
    signature: "char *\nmaildir_uidlist_get_full_filename(struct maildir_uidlist *uidlist,\n\t\t\t\t
      \ const char *filename)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: maildir_filename_sort_cmp
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1938,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1928
    functionDepth: 3
    functionLinenumber: 1928
    functionLinenumberEnd: 1939
    functionName: maildir_assign_uid_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - maildir_filename_sort_cmp
    linkageType: ''
    returnType: int
    signature: int maildir_assign_uid_cmp(const void *p1, const void *p2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1946,1
    - Dst: UIDLIST_IS_LOCKED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1946,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1947,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1953,1
    - Dst: qsort
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1954,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1963,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1964,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1966,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1941
    functionDepth: 1
    functionLinenumber: 1941
    functionLinenumberEnd: 1976
    functionName: maildir_uidlist_assign_uids
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - array_get_modifiable
    - UIDLIST_IS_LOCKED
    - qsort
    - i_assert
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_assign_uids(struct maildir_uidlist_sync_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1983,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1985,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1988,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1988,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1990,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1992,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1994,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:1999,1
    - Dst: maildir_uidlist_assign_uids
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2001,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1978
    functionDepth: 2
    functionLinenumber: 1978
    functionLinenumberEnd: 2005
    functionName: maildir_uidlist_swap
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - i_zero
    - maildir_uidlist_assign_uids
    - pool_unref
    - array_count
    - array_sort
    - array_is_created
    - i_assert
    - array_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_swap(struct maildir_uidlist_sync_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 2007
    functionDepth: 0
    functionLinenumber: 2007
    functionLinenumberEnd: 2010
    functionName: maildir_uidlist_sync_recreate
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_sync_recreate(struct maildir_uidlist_sync_ctx
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_swap
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2016,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2019,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2020,1
    - Dst: maildir_uidlist_assign_uids
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2021,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2029,1
    - Dst: maildir_uidlist_want_compress
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2030,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2033,1
    - Dst: maildir_uidlist_sync_update
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2033,1
    - Dst: maildir_uidlist_reset
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2036,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_uidlist_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2041
      start: 2012
    functionDepth: 13
    functionLinenumber: 2012
    functionLinenumberEnd: 2041
    functionName: maildir_uidlist_sync_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - maildir_uidlist_swap
    - maildir_uidlist_want_compress
    - if
    - maildir_uidlist_sync_update
    - maildir_uidlist_reset
    - maildir_uidlist_assign_uids
    - i_assert
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_sync_finish(struct maildir_uidlist_sync_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_sync_finish
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2056,1
    - Dst: maildir_uidlist_mark_all
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2058,1
    - Dst: maildir_uidlist_unlock
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2060,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2062,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2063,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2064,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2065,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2066,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - _ctx
    - success
    argTypes:
    - struct maildir_uidlist_sync_ctx**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2043
    functionDepth: 14
    functionLinenumber: 2043
    functionLinenumberEnd: 2068
    functionName: maildir_uidlist_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - pool_unref
    - maildir_uidlist_sync_finish
    - maildir_uidlist_mark_all
    - array_is_created
    - i_free
    - array_free
    - hash_table_destroy
    - maildir_uidlist_unlock
    linkageType: ''
    returnType: int
    signature: "int maildir_uidlist_sync_deinit(struct maildir_uidlist_sync_ctx **_ctx,\n\t\t\t\tbool
      success)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2076,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2077,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - uidlist
    - filename
    - flags
    argTypes:
    - struct maildir_uidlist*
    - char*
    - enum maildir_uidlist_rec_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2080
      start: 2070
    functionDepth: 1
    functionLinenumber: 2070
    functionLinenumberEnd: 2080
    functionName: maildir_uidlist_add_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - i_assert
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void maildir_uidlist_add_flags(struct maildir_uidlist *uidlist,\n\t\t\t
      \      const char *filename,\n\t\t\t       enum maildir_uidlist_rec_flag flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2088,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - uidlist
    argTypes:
    - struct maildir_uidlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2082
    functionDepth: 1
    functionLinenumber: 2082
    functionLinenumberEnd: 2094
    functionName: maildir_uidlist_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - array_get
    - i_new
    linkageType: ''
    returnType: struct maildir_uidlist_iter_ctx
    signature: 'struct maildir_uidlist_iter_ctx *

      maildir_uidlist_iter_init(struct maildir_uidlist *uidlist)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_uidlist_iter_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2113
      start: 2096
    functionDepth: 1
    functionLinenumber: 2096
    functionLinenumberEnd: 2113
    functionName: maildir_uidlist_iter_update_idx
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_iter_update_idx(struct maildir_uidlist_iter_ctx
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_iter_update_idx
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2121,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - rec_r
    argTypes:
    - struct maildir_uidlist_iter_ctx*
    - struct maildir_uidlist_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2115
    functionDepth: 2
    functionLinenumber: 2115
    functionLinenumberEnd: 2134
    functionName: maildir_uidlist_iter_next_rec
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - maildir_uidlist_iter_update_idx
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool maildir_uidlist_iter_next_rec(struct maildir_uidlist_iter_ctx
      *ctx,\n\t\t\t\t\t  struct maildir_uidlist_rec **rec_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_iter_next_rec
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - uid_r
    - flags_r
    - filename_r
    argTypes:
    - struct maildir_uidlist_iter_ctx*
    - uint32_t*
    - enum maildir_uidlist_rec_flag*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2136
    functionDepth: 3
    functionLinenumber: 2136
    functionLinenumberEnd: 2150
    functionName: maildir_uidlist_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 1
    functionsReached:
    - maildir_uidlist_iter_next_rec
    linkageType: ''
    returnType: bool
    signature: "bool maildir_uidlist_iter_next(struct maildir_uidlist_iter_ctx *ctx,\n\t\t\t
      \      uint32_t *uid_r,\n\t\t\t       enum maildir_uidlist_rec_flag *flags_r,\n\t\t\t
      \      const char **filename_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c:2154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct maildir_uidlist_iter_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2152
    functionDepth: 1
    functionLinenumber: 2152
    functionLinenumberEnd: 2156
    functionName: maildir_uidlist_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c
    functionUses: 2
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void maildir_uidlist_iter_deinit(struct maildir_uidlist_iter_ctx **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 234
    functionName: maildir_sync_set_racing
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void maildir_sync_set_racing(struct maildir_sync_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:246,1
    - Dst: maildir_uidlist_lock_touch
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:248,1
    - Dst: struct mailbox*::storage::callbacks::notify_progress
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:256,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 236
    functionDepth: 4
    functionLinenumber: 236
    functionLinenumberEnd: 260
    functionName: maildir_sync_notify
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 1
    functionsReached:
    - time
    - struct mailbox*::storage::callbacks::notify_progress
    - maildir_uidlist_lock_touch
    linkageType: ''
    returnType: void
    signature: void maildir_sync_notify(struct maildir_sync_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:269,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:271,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:271,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:272,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - mbox
    - flags
    argTypes:
    - struct maildir_mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 277
    functionName: maildir_sync_context_new
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - t_new
    - t_strconcat
    - mailbox_get_path
    linkageType: ''
    returnType: struct maildir_sync_context
    signature: "struct maildir_sync_context *\nmaildir_sync_context_new(struct maildir_mailbox
      *mbox,\n\t\t\t enum mailbox_sync_flags flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_sync_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:282,1
    - Dst: maildir_sync_index_rollback
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:284,1
    - Dst: mail_storage_list_index_rebuild_and_set_uncorrupted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct maildir_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 279
    functionDepth: 15
    functionLinenumber: 279
    functionLinenumberEnd: 287
    functionName: maildir_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - mail_storage_list_index_rebuild_and_set_uncorrupted
    - maildir_sync_index_rollback
    - maildir_uidlist_sync_deinit
    linkageType: ''
    returnType: void
    signature: void maildir_sync_deinit(struct maildir_sync_context *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_sync_get_full_filename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:300,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:302,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:303,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:305,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:305,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:311,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:327,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:328,1
    - Dst: maildir_filename_generate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:333,1
    - Dst: maildir_filename_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:336,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:337,1
    - Dst: maildir_filename_get_size
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:340,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:341,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:344,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:344,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:347,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:348,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:350,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 3
    argNames:
    - ctx
    - dir
    - fname2
    argTypes:
    - struct maildir_sync_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 289
    functionDepth: 4
    functionLinenumber: 289
    functionLinenumberEnd: 356
    functionName: maildir_fix_duplicate
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - rename
    - mailbox_get_path
    - maildir_uidlist_sync_get_full_filename
    - maildir_filename_generate
    - t_strdup_printf
    - i_unlink
    - maildir_filename_get_size
    - e_warning
    - stat
    - CMP_DEV_T
    - mailbox_set_critical
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int maildir_fix_duplicate(struct maildir_sync_context *ctx,\n\t\t\t\t
      const char *dir, const char *fname2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:365,1
    - Dst: maildir_filename_generate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:366,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:367,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:367,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:369,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:370,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - dir
    - fname
    argTypes:
    - struct maildir_sync_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 358
    functionDepth: 4
    functionLinenumber: 358
    functionLinenumberEnd: 379
    functionName: maildir_rename_empty_basename
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - rename
    - mailbox_get_path
    - maildir_filename_generate
    - e_warning
    - mailbox_set_critical
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int maildir_rename_empty_basename(struct maildir_sync_context *ctx,\n\t\t\t
      \     const char *dir, const char *fname)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:388,1
    - Dst: maildir_set_deleted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:393,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - mbox
    - path
    - st_r
    argTypes:
    - struct maildir_mailbox*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 381
    functionDepth: 9
    functionLinenumber: 381
    functionLinenumberEnd: 400
    functionName: maildir_stat
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - nfs_safe_stat
    - maildir_set_deleted
    linkageType: ''
    returnType: int
    signature: int maildir_stat(struct maildir_mailbox *mbox, const char *path, struct
      stat *st_r)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:420,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:425,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:426,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:427,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:429,1
    - Dst: maildir_set_deleted
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:435,1
    - Dst: dirfd
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:441,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:442,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:443,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:444,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:446,1
    - Dst: maildir_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:450,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:451,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:456,1
    - Dst: time_to_uint32
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:458,1
    - Dst: ST_MTIME_NSEC
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:460,1
    - Dst: time_to_uint32
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:462,1
    - Dst: ST_MTIME_NSEC
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:464,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:467,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:468,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:475,1
    - Dst: maildir_rename_empty_basename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:489,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:491,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:492,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:493,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:494,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:495,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:496,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:498,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:498,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:498,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:504,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:510,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:510,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:517,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:519,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:519,1
    - Dst: maildir_sync_notify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:522,1
    - Dst: maildir_sync_notify
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:530,1
    - Dst: maildir_uidlist_sync_next
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:532,1
    - Dst: maildir_fix_duplicate
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:540,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 95
    argCount: 4
    argNames:
    - ctx
    - new_dir
    - final
    - why
    argTypes:
    - struct maildir_sync_context*
    - bool
    - bool
    - enum maildir_scan_why
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 402
    functionDepth: 10
    functionLinenumber: 402
    functionLinenumberEnd: 546
    functionName: maildir_scan_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - str_c
    - maildir_uidlist_sync_next
    - maildir_stat
    - time_to_uint32
    - ENOSPACE
    - fstat
    - time
    - rename
    - readdir
    - t_str_new
    - ENOTFOUND
    - opendir
    - maildir_rename_empty_basename
    - eacces_error_get
    - ENOACCESS
    - dirfd
    - maildir_sync_notify
    - closedir
    - i_assert
    - maildir_fix_duplicate
    - str_append
    - maildir_set_deleted
    - ST_MTIME_NSEC
    - str_truncate
    - mailbox_set_critical
    linkageType: ''
    returnType: int
    signature: "int maildir_scan_dir(struct maildir_sync_context *ctx, bool new_dir,
      bool final,\n\t\t enum maildir_scan_why why)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:604,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:609,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 612
    functionName: maildir_sync_get_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_get_header_ext
    - I_MIN
    linkageType: ''
    returnType: void
    signature: void maildir_sync_get_header(struct maildir_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:616,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:617,1
    - Dst: maildir_sync_get_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 614
    functionDepth: 3
    functionLinenumber: 614
    functionLinenumberEnd: 622
    functionName: maildir_sync_header_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 1
    functionsReached:
    - mail_index_refresh
    - mailbox_set_index_error
    - maildir_sync_get_header
    linkageType: ''
    returnType: int
    signature: int maildir_sync_header_refresh(struct maildir_mailbox *mbox)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_get_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:646,1
    - Dst: DIR_DELAYED_REFRESH
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:658,1
    - Dst: DIR_DELAYED_REFRESH
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:659,1
    - Dst: maildir_sync_header_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:662,1
    - Dst: DIR_DELAYED_REFRESH
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:666,1
    - Dst: DIR_DELAYED_REFRESH
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:670,1
    - Dst: maildir_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:680,1
    - Dst: maildir_stat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:685,1
    - Dst: DIR_MTIME_CHANGED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:692,1
    - Dst: DIR_MTIME_CHANGED
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:697,1
    - Dst: maildir_sync_header_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:706,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 54
    argCount: 7
    argNames:
    - mbox
    - undirty
    - new_dir
    - cur_dir
    - new_changed_r
    - cur_changed_r
    - why_r
    argTypes:
    - struct maildir_mailbox*
    - bool
    - char*
    - char*
    - bool*
    - bool*
    - enum maildir_scan_why*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 624
    functionDepth: 10
    functionLinenumber: 624
    functionLinenumberEnd: 712
    functionName: maildir_sync_quick_check
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - DIR_MTIME_CHANGED
    - DIR_DELAYED_REFRESH
    - maildir_stat
    - maildir_sync_header_refresh
    - maildir_sync_get_header
    linkageType: ''
    returnType: int
    signature: "int maildir_sync_quick_check(struct maildir_mailbox *mbox, bool undirty,\n\t\t\t\t
      \   const char *new_dir, const char *cur_dir,\n\t\t\t\t    bool *new_changed_r,
      bool *cur_changed_r,\n\t\t\t\t    enum maildir_scan_why *why_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hdr
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 634
    functionName: DIR_DELAYED_REFRESH
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIR_DELAYED_REFRESH(hdr, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - st
    - ','
    - hdr
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 638
    functionName: DIR_MTIME_CHANGED
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIR_MTIME_CHANGED(st, hdr, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:719,1
    - Dst: maildir_uidlist_get_uid_validity
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:723,1
    - Dst: maildir_uidlist_set_uid_validity
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:728,1
    - Dst: maildir_uidlist_set_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:730,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 714
    functionDepth: 2
    functionLinenumber: 714
    functionLinenumberEnd: 733
    functionName: maildir_sync_update_next_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_set_uid_validity
    - mail_index_get_header
    - maildir_uidlist_set_next_uid
    - maildir_uidlist_get_uid_validity
    linkageType: ''
    returnType: void
    signature: void maildir_sync_update_next_uid(struct maildir_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:741,1
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:746,1
    - Dst: maildir_uidlist_get_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:747,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - seen_changes
    argTypes:
    - struct maildir_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 735
    functionDepth: 9
    functionLinenumber: 735
    functionLinenumberEnd: 750
    functionName: have_recent_messages
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_get_next_uid
    - maildir_uidlist_refresh
    - mail_index_get_header
    linkageType: ''
    returnType: bool
    signature: bool have_recent_messages(struct maildir_sync_context *ctx, bool seen_changes)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_quick_check
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:762,1
    - Dst: have_recent_messages
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:769,1
    - Dst: have_recent_messages
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:777,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:792,1
    - Dst: mail_index_sync_have_any
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:794,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 4
    argNames:
    - ctx
    - new_changed_r
    - cur_changed_r
    - why_r
    argTypes:
    - struct maildir_sync_context*
    - bool*
    - bool*
    - enum maildir_scan_why*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 752
    functionDepth: 11
    functionLinenumber: 752
    functionLinenumberEnd: 795
    functionName: maildir_sync_get_changes
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_have_any
    - have_recent_messages
    - maildir_sync_quick_check
    - mail_index_refresh
    linkageType: ''
    returnType: int
    signature: "int maildir_sync_get_changes(struct maildir_sync_context *ctx,\n\t\t\t\t
      \   bool *new_changed_r, bool *cur_changed_r,\n\t\t\t\t    enum maildir_scan_why
      *why_r)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_get_changes
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:814,1
    - Dst: maildir_uidlist_sync_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:876,1
    - Dst: maildir_uidlist_sync_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:894,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:898,1
    - Dst: struct mail_storage*::callbacks::notify_no
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:903,1
    - Dst: maildir_uidlist_is_locked
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:909,1
    - Dst: maildir_sync_index_begin
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:914,1
    - Dst: maildir_scan_dir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:925,1
    - Dst: maildir_scan_dir
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:936,1
    - Dst: maildir_sync_update_next_uid
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:940,1
    - Dst: maildir_uidlist_sync_finish
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:943,1
    - Dst: maildir_sync_index
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:956,1
    - Dst: maildir_sync_index_rollback
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:958,1
    - Dst: maildir_sync_index_commit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:959,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:967,1
    - Dst: maildir_uidlist_is_locked
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:967,1
    - Dst: maildir_uidlist_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:972,1
    - Dst: maildir_uidlist_sync_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:986,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 89
    argCount: 4
    argNames:
    - ctx
    - forced
    - find_uid
    - lost_files_r
    argTypes:
    - struct maildir_sync_context*
    - bool
    - uint32_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 798
    functionDepth: 15
    functionLinenumber: 798
    functionLinenumberEnd: 987
    functionName: maildir_sync_context
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - maildir_sync_index_begin
    - maildir_sync_index_rollback
    - maildir_sync_update_next_uid
    - maildir_sync_get_changes
    - maildir_sync_index_commit
    - maildir_sync_index
    - struct mail_storage*::callbacks::notify_no
    - maildir_uidlist_is_locked
    - maildir_scan_dir
    - maildir_uidlist_sync_finish
    - maildir_uidlist_lookup
    - maildir_uidlist_sync_deinit
    - maildir_uidlist_sync_init
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void maildir_sync_context(struct maildir_sync_context *ctx, bool forced,\n\t\t
      \    uint32_t *find_uid, bool *lost_files_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: maildir_uidlist_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:995,1
    - Dst: maildir_uidlist_is_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:999,1
    - Dst: maildir_uidlist_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1007,1
    - Dst: maildir_storage_sync_force
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1011,1
    - Dst: maildir_uidlist_lookup
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1016,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - mbox
    - uid
    - flags_r
    - fname_r
    argTypes:
    - struct maildir_mailbox*
    - uint32_t
    - enum maildir_uidlist_rec_flag*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 989
    functionDepth: 11
    functionLinenumber: 989
    functionLinenumberEnd: 1017
    functionName: maildir_sync_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 3
    functionsReached:
    - maildir_uidlist_is_open
    - maildir_uidlist_refresh
    - maildir_storage_sync_force
    - maildir_uidlist_lookup
    linkageType: ''
    returnType: int
    signature: "int maildir_sync_lookup(struct maildir_mailbox *mbox, uint32_t uid,\n\t\t\tenum
      maildir_uidlist_rec_flag *flags_r,\n\t\t\tconst char **fname_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_context_new
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1028,1
    - Dst: maildir_sync_context
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1029,1
    - Dst: maildir_sync_deinit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - mbox
    - flags
    - force_resync
    - uid
    - lost_files_r
    argTypes:
    - struct maildir_mailbox*
    - enum mailbox_sync_flags
    - bool
    - uint32_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1019
    functionDepth: 16
    functionLinenumber: 1019
    functionLinenumberEnd: 1032
    functionName: maildir_sync_run
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - maildir_sync_context
    - maildir_sync_deinit
    - maildir_sync_context_new
    linkageType: ''
    returnType: int
    signature: "int maildir_sync_run(struct maildir_mailbox *mbox,\n\t\t\t    enum
      mailbox_sync_flags flags, bool force_resync,\n\t\t\t    uint32_t *uid, bool
      *lost_files_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: maildir_sync_run
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1051,1
    - Dst: maildir_sync_run
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - mbox
    - uid
    argTypes:
    - struct maildir_mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1046
    functionDepth: 17
    functionLinenumber: 1046
    functionLinenumberEnd: 1058
    functionName: maildir_storage_sync_force
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 3
    functionsReached:
    - maildir_sync_run
    linkageType: ''
    returnType: int
    signature: int maildir_storage_sync_force(struct maildir_mailbox *mbox, uint32_t
      uid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1065,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1067,1
    - Dst: mail_index_view_sync_begin
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1069,1
    - Dst: mail_index_view_sync_commit
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1071,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1072,1
    - Dst: mail_index_map_clone
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1079,1
    - Dst: mail_index_unmap
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1080,1
    - Dst: mail_index_record_map_move_to_private
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1083,1
    - Dst: mail_index_map_move_to_memory
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1084,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1060
    functionDepth: 12
    functionLinenumber: 1060
    functionLinenumberEnd: 1086
    functionName: maildir_sync_refresh_flags_view
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_map_clone
    - mail_index_view_sync_begin
    - mail_index_view_open
    - mailbox_set_index_error
    - mail_index_unmap
    - mail_index_map_move_to_memory
    - mail_index_view_sync_commit
    - mail_index_record_map_move_to_private
    - mail_index_refresh
    linkageType: ''
    returnType: int
    signature: int maildir_sync_refresh_flags_view(struct maildir_mailbox *mbox)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MAILDIR_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1091,1
    - Dst: index_mailbox_want_full_sync
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1096,1
    - Dst: maildir_sync_run
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1097,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1099,1
    - Dst: maildir_uidlist_is_locked
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1099,1
    - Dst: maildir_storage_sync_force
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1104,1
    - Dst: maildir_sync_refresh_flags_view
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1109,1
    - Dst: maildir_uidlist_set_all_nonsynced
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1111,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1115,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1088
    functionDepth: 18
    functionLinenumber: 1088
    functionLinenumberEnd: 1116
    functionName: maildir_storage_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - maildir_uidlist_set_all_nonsynced
    - maildir_storage_sync_force
    - MAILDIR_MAILBOX
    - maildir_sync_run
    - index_mailbox_sync_init
    - index_mailbox_want_full_sync
    - maildir_uidlist_is_locked
    - i_assert
    - maildir_sync_refresh_flags_view
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      maildir_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1125,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1128,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1129,1
    - Dst: maildir_sync_quick_check
      Src: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct maildir_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1118
    functionDepth: 11
    functionLinenumber: 1118
    functionLinenumberEnd: 1134
    functionName: maildir_sync_is_synced
    functionSourceFile: /src/dovecot/src/lib-storage/index/maildir/maildir-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - t_strconcat
    - maildir_sync_quick_check
    linkageType: ''
    returnType: int
    signature: int maildir_sync_is_synced(struct maildir_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: MBOX_LIST_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MBOX_LIST_CONTEXT(obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:76,1
    - Dst: ENOQUOTA
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:78,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:79,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - mbox
    - function
    - error
    argTypes:
    - struct mbox_mailbox*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 87
    functionName: mbox_set_syscall_error_str
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - i_assert
    - ENOQUOTA
    - mail_storage_set_error
    linkageType: ''
    returnType: void
    signature: "void mbox_set_syscall_error_str(struct mbox_mailbox *mbox, const char
      *function,\n\t\t\t   const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_set_syscall_error_str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:91,1
    - Dst: strerror
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mbox
    - function
    argTypes:
    - struct mbox_mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 5
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: mbox_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - strerror
    - mbox_set_syscall_error_str
    linkageType: ''
    returnType: void
    signature: void mbox_set_syscall_error(struct mbox_mailbox *mbox, const char *function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_set_syscall_error_str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:99,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - mbox
    - input
    - function
    argTypes:
    - struct mbox_mailbox*
    - struct istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 5
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: mbox_istream_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - mbox_set_syscall_error_str
    linkageType: ''
    returnType: void
    signature: "void mbox_istream_set_syscall_error(struct mbox_mailbox *mbox,\n\t\t\t\t
      \   struct istream *input,\n\t\t\t\t    const char *function)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_set_syscall_error_str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:107,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - mbox
    - output
    - function
    argTypes:
    - struct mbox_mailbox*
    - struct ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 5
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: mbox_ostream_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - mbox_set_syscall_error_str
    linkageType: ''
    returnType: void
    signature: "void mbox_ostream_set_syscall_error(struct mbox_mailbox *mbox,\n\t\t\t\t
      \   struct ostream *output,\n\t\t\t\t    const char *function)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_LIST_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:114,1
    - Dst: struct mbox_mailbox_list*::module_ctx::super::get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:120,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:138,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:142,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:146,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:146,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:157,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 4
    argNames:
    - list
    - name
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 160
    functionName: mbox_list_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - strrchr
    - i_unreached
    - struct mbox_mailbox_list*::module_ctx::super::get_path
    - t_strdup_until
    - MBOX_LIST_CONTEXT
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int mbox_list_get_path(struct mailbox_list *list, const char *name,\n\t\t
      \  enum mailbox_list_path_type type, const char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:167,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 172
    functionName: mbox_storage_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_storage
    signature: struct mail_storage *mbox_storage_alloc(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:178,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:182,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:188,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:192,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:193,1
    - Dst: mailbox_list_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:194,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:196,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:197,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:198,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - _storage
    - ns
    - error_r
    argTypes:
    - struct mail_storage*
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 205
    functionName: mbox_storage_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_temp_prefix
    - mailbox_list_get_root_path
    - MBOX_STORAGE
    - master_service_get_client_limit
    - t_strdup_printf
    - stat
    - p_strconcat
    - S_ISDIR
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int mbox_storage_create(struct mail_storage *_storage, struct mail_namespace
      *ns,\n\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:209,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:211,1
    - Dst: index_storage_destroy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 207
    functionDepth: 4
    functionLinenumber: 207
    functionLinenumberEnd: 213
    functionName: mbox_storage_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - MBOX_STORAGE
    - index_storage_destroy
    - settings_free
    linkageType: ''
    returnType: void
    signature: void mbox_storage_destroy(struct mail_storage *_storage)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:219,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:220,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:224,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:225,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:229,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:230,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - path
    - name
    - event
    argTypes:
    - char*
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 237
    functionName: mbox_is_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - e_debug
    - stat
    - S_ISDIR
    - i_faccessat2
    linkageType: ''
    returnType: bool
    signature: bool mbox_is_file(const char *path, const char *name, struct event
      *event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:243,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:244,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:248,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:249,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:253,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:254,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - path
    - name
    - event
    argTypes:
    - char*
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 261
    functionName: mbox_is_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - e_debug
    - stat
    - S_ISDIR
    - i_faccessat2
    linkageType: ''
    returnType: bool
    signature: bool mbox_is_dir(const char *path, const char *name, struct event *event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mbox_is_dir
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:265,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:265,1
    - Dst: mbox_is_file
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:268,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:268,1
    - Dst: mbox_is_file
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:270,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:270,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - dir
    - event
    argTypes:
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 273
    functionName: mbox_storage_is_root_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mbox_is_dir
    - t_strconcat
    - mbox_is_file
    linkageType: ''
    returnType: bool
    signature: bool mbox_storage_is_root_dir(const char *dir, struct event *event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:281,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:282,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:286,1
    - Dst: mbox_storage_is_root_dir
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:287,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:290,1
    - Dst: mbox_storage_is_root_dir
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:291,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 275
    functionDepth: 4
    functionLinenumber: 275
    functionLinenumberEnd: 294
    functionName: mbox_storage_find_root_dir
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_user_get_home
    - t_strconcat
    - e_debug
    - mbox_storage_is_root_dir
    linkageType: ''
    returnType: char
    signature: char *mbox_storage_find_root_dir(const struct mail_namespace *ns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:301,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:302,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:303,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:306,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:308,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:309,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:310,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - user
    - event
    argTypes:
    - struct mail_user*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 315
    functionName: mbox_storage_find_inbox_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - e_debug
    - t_strconcat
    - i_faccessat2
    linkageType: ''
    returnType: char
    signature: 'char *

      mbox_storage_find_inbox_file(struct mail_user *user, struct event *event)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mbox_is_file
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:330,1
    - Dst: mbox_storage_is_root_dir
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:334,1
    - Dst: mbox_storage_find_root_dir
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:338,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:340,1
    - Dst: mbox_storage_find_inbox_file
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:345,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - ns
    - mail_set
    - root_path_r
    - inbox_path_r
    argTypes:
    - struct mail_namespace*
    - struct mail_storage_settings*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 317
    functionDepth: 5
    functionLinenumber: 317
    functionLinenumberEnd: 350
    functionName: mbox_storage_autodetect
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mbox_storage_find_inbox_file
    - e_debug
    - mbox_is_file
    - mbox_storage_find_root_dir
    - mbox_storage_is_root_dir
    linkageType: ''
    returnType: bool
    signature: "bool mbox_storage_autodetect(const struct mail_namespace *ns,\n\t\t\tconst
      struct mail_storage_settings *mail_set,\n\t\t\tconst char **root_path_r, const
      char **inbox_path_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:359,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:363,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - storage
    - path
    argTypes:
    - struct mbox_storage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 352
    functionDepth: 4
    functionLinenumber: 352
    functionLinenumberEnd: 369
    functionName: want_memory_indexes
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_storage_set_critical
    - stat
    linkageType: ''
    returnType: bool
    signature: bool want_memory_indexes(struct mbox_storage *storage, const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:378,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:379,1
    - Dst: index_storage_mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:386,1
    - Dst: MBOX_STORAGE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:388,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:393,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:395,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - storage
    - list
    - vname
    - flags
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    - char*
    - enum mailbox_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 371
    functionDepth: 6
    functionLinenumber: 371
    functionLinenumberEnd: 405
    functionName: mbox_mailbox_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - index_storage_mailbox_alloc
    - p_new
    - MBOX_STORAGE
    - i_fatal
    linkageType: ''
    returnType: struct mailbox
    signature: "struct mailbox *\nmbox_mailbox_alloc(struct mail_storage *storage,
      struct mailbox_list *list,\n\t\t   const char *vname, enum mailbox_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_dotlock_touch
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: mbox_lock_touch_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mbox_dotlock_touch
    linkageType: ''
    returnType: void
    signature: void mbox_lock_touch_timeout(struct mbox_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:415,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:419,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - mbox
    - move_to_memory
    argTypes:
    - struct mbox_mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 412
    functionDepth: 9
    functionLinenumber: 412
    functionLinenumberEnd: 426
    functionName: mbox_mailbox_open_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_register
    - index_storage_mailbox_open
    linkageType: ''
    returnType: int
    signature: int mbox_mailbox_open_finish(struct mbox_mailbox *mbox, bool move_to_memory)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:431,1
    - Dst: want_memory_indexes
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:434,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:436,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:439,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:441,1
    - Dst: mbox_lock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:445,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:450,1
    - Dst: mbox_mailbox_open_finish
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:454,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 428
    functionDepth: 10
    functionLinenumber: 428
    functionLinenumberEnd: 455
    functionName: mbox_mailbox_open_existing
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_path
    - str_begins_with
    - want_memory_indexes
    - timeout_add
    - mbox_lock
    - mailbox_list_get_root_forced
    - mbox_mailbox_open_finish
    linkageType: ''
    returnType: int
    signature: int mbox_mailbox_open_existing(struct mbox_mailbox *mbox)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:459,1
    - Dst: index_storage_is_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:461,1
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:464,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 471
    functionName: mbox_storage_is_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - index_storage_is_readonly
    - mailbox_get_private_flags_mask
    - mbox_is_backend_readonly
    - MBOX_MAILBOX
    linkageType: ''
    returnType: bool
    signature: bool mbox_storage_is_readonly(struct mailbox *box)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:475,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:480,1
    - Dst: mbox_mailbox_open_finish
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:485,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:488,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:488,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:490,1
    - Dst: mbox_mailbox_open_existing
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:491,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:492,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:495,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:496,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:497,1
    - Dst: mail_storage_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:499,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:502,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:503,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 473
    functionDepth: 11
    functionLinenumber: 473
    functionLinenumberEnd: 506
    functionName: mbox_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - ENOTFOUND
    - mailbox_get_path
    - mail_storage_set_error
    - i_stream_ref
    - mbox_mailbox_open_finish
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - stat
    - S_ISDIR
    - MBOX_MAILBOX
    - mailbox_set_critical
    - mail_storage_set_error_from_errno
    - mbox_mailbox_open_existing
    linkageType: ''
    returnType: int
    signature: int mbox_mailbox_open(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:511,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:515,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:520,1
    - Dst: mbox_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:522,1
    - Dst: index_storage_mailbox_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:527,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 508
    functionDepth: 10
    functionLinenumber: 508
    functionLinenumberEnd: 529
    functionName: mbox_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_open
    - index_storage_mailbox_update
    - MBOX_MAILBOX
    - mbox_sync
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: int mbox_mailbox_update(struct mailbox *box, const struct mailbox_update
      *update)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:536,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:538,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:539,1
    - Dst: restrict_access_use_priv_gid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:541,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:542,1
    - Dst: restrict_access_drop_priv_gid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:543,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:546,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:548,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:549,1
    - Dst: mail_error_create_eacces_msg
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:550,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:553,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:557,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 531
    functionDepth: 4
    functionLinenumber: 531
    functionLinenumberEnd: 561
    functionName: create_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - restrict_access_use_priv_gid
    - mailbox_get_path
    - i_close_fd
    - open
    - mail_error_create_eacces_msg
    - restrict_access_drop_priv_gid
    - ENOACCESS
    - mailbox_set_critical
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int create_inbox(struct mailbox *box)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_mailbox_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:569,1
    - Dst: create_inbox
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:573,1
    - Dst: mailbox_create_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:577,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:577,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:582,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:586,1
    - Dst: mbox_mailbox_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:588,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 563
    functionDepth: 11
    functionLinenumber: 563
    functionLinenumberEnd: 589
    functionName: mbox_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - i_close_fd
    - mailbox_create_fd
    - create_inbox
    - mbox_mailbox_update
    - index_storage_mailbox_create
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int mbox_mailbox_create(struct mailbox *box, const struct mailbox_update
      *update,\n\t\t    bool directory)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:593,1
    - Dst: istream_raw_mbox_is_corrupted
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:598,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:604,1
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:606,1
    - Dst: mbox_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:613,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:616,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:617,1
    - Dst: mbox_file_close
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:619,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:620,1
    - Dst: index_storage_mailbox_close
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:622,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 591
    functionDepth: 6
    functionLinenumber: 591
    functionLinenumberEnd: 623
    functionName: mbox_mailbox_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mbox_is_backend_readonly
    - mbox_unlock
    - mbox_file_close
    - i_stream_destroy
    - index_storage_mailbox_close
    - mail_index_get_header
    - istream_raw_mbox_is_corrupted
    - MBOX_MAILBOX
    - mbox_sync
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mbox_mailbox_close(struct mailbox *box)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_is_in_memory
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:630,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:633,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:636,1
    - Dst: mbox_sync_header_refresh
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:640,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:643,1
    - Dst: mbox_file_open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:645,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:648,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:657,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:658,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:659,1
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:660,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:661,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:662,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:665,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - mbox
    - guid_r
    argTypes:
    - struct mbox_mailbox*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 625
    functionDepth: 11
    functionLinenumber: 625
    functionLinenumberEnd: 667
    functionName: mbox_mailbox_get_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_assert
    - mailbox_free
    - mbox_sync_header_refresh
    - mailbox_sync
    - mail_index_is_in_memory
    - mbox_file_open
    - mailbox_alloc
    - MBOX_MAILBOX
    - guid_128_is_empty
    - t_strconcat
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int mbox_mailbox_get_guid(struct mbox_mailbox *mbox, guid_128_t guid_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:674,1
    - Dst: index_mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:676,1
    - Dst: mbox_mailbox_get_guid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:679,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 669
    functionDepth: 12
    functionLinenumber: 669
    functionLinenumberEnd: 683
    functionName: mbox_mailbox_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mbox_mailbox_get_guid
    - MBOX_MAILBOX
    - index_mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int mbox_mailbox_get_metadata(struct mailbox *box,\n\t\t\t  enum mailbox_metadata_items
      items,\n\t\t\t  struct mailbox_metadata *metadata_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:687,1
    - Dst: mailbox_watch_remove_all
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:690,1
    - Dst: mailbox_watch_add
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:692,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 693
    functionName: mbox_notify_changes
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mailbox_get_path
    - mailbox_watch_remove_all
    - MBOX_MAILBOX
    - mailbox_watch_add
    linkageType: ''
    returnType: void
    signature: void mbox_notify_changes(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:702,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:703,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:706,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 695
    functionDepth: 0
    functionLinenumber: 695
    functionLinenumberEnd: 707
    functionName: mbox_is_internal_name
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: "bool mbox_is_internal_name(struct mailbox_list *list ATTR_UNUSED,\n\t\t
      \     const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:714,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - list
    argTypes:
    - struct mail_storage*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 724
    functionName: mbox_storage_add_list
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: "void mbox_storage_add_list(struct mail_storage *storage ATTR_UNUSED,\n\t\t\t\t
      \ struct mailbox_list *list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:731,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:737,1
    - Dst: index_transaction_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 726
    functionDepth: 4
    functionLinenumber: 726
    functionLinenumberEnd: 740
    functionName: mbox_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - index_transaction_init
    - i_new
    - MBOX_MAILBOX
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nmbox_transaction_begin(struct
      mailbox *box,\n\t\t       enum mailbox_transaction_flags flags,\n\t\t       const
      char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:746,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:749,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:751,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:753,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:754,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:759,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - box
    - lock_id1
    - lock_id2
    argTypes:
    - struct mailbox*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 761
    functionName: mbox_transaction_unlock
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - mbox_unlock
    - i_assert
    - MBOX_MAILBOX
    linkageType: ''
    returnType: void
    signature: "void mbox_transaction_unlock(struct mailbox *box, unsigned int lock_id1,\n\t\t\tunsigned
      int lock_id2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_TRANSCTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:767,1
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:769,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:775,1
    - Dst: index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:779,1
    - Dst: mbox_transaction_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 763
    functionDepth: 4
    functionLinenumber: 763
    functionLinenumberEnd: 782
    functionName: mbox_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - MBOX_TRANSCTX
    - mbox_transaction_unlock
    - MBOX_MAILBOX
    - i_assert
    - index_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int mbox_transaction_commit(struct mailbox_transaction_context *t,\n\t\t\tstruct
      mail_transaction_commit_changes *changes_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_TRANSCTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:787,1
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:789,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:794,1
    - Dst: index_transaction_rollback
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:798,1
    - Dst: mbox_transaction_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:799,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 784
    functionDepth: 2
    functionLinenumber: 784
    functionLinenumberEnd: 800
    functionName: mbox_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 0
    functionsReached:
    - index_transaction_rollback
    - MBOX_TRANSCTX
    - MBOX_MAILBOX
    - i_assert
    - mbox_transaction_unlock
    linkageType: ''
    returnType: void
    signature: void mbox_transaction_rollback(struct mailbox_transaction_context *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:806,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:806,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c:807,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 802
    functionDepth: 2
    functionLinenumber: 802
    functionLinenumberEnd: 811
    functionName: mbox_is_backend_readonly
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.c
    functionUses: 2
    functionsReached:
    - ENOACCESS
    - mailbox_get_path
    - i_faccessat2
    linkageType: ''
    returnType: bool
    signature: bool mbox_is_backend_readonly(struct mbox_mailbox *mbox)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:74,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:79,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:80,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:82,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - sync_ctx
    - fmt
    argTypes:
    - struct mbox_sync_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 84
    functionName: mbox_sync_set_critical
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - t_strdup_vprintf
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_set_critical(struct mbox_sync_context *sync_ctx,\n\t\t\t
      \   const char *fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: istream_raw_mbox_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:88,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sync_ctx
    - from_offset
    argTypes:
    - struct mbox_sync_context*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 86
    functionDepth: 5
    functionLinenumber: 86
    functionLinenumberEnd: 95
    functionName: mbox_sync_seek
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - istream_raw_mbox_seek
    - mbox_sync_set_critical
    linkageType: ''
    returnType: int
    signature: int mbox_sync_seek(struct mbox_sync_context *sync_ctx, uoff_t from_offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:103,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:104,1
    - Dst: CMP_ST_MTIME
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 97
    functionDepth: 6
    functionLinenumber: 97
    functionLinenumberEnd: 114
    functionName: mbox_sync_file_update_ext_modified
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mbox_set_syscall_error
    - fstat
    - CMP_ST_MTIME
    linkageType: ''
    returnType: void
    signature: void mbox_sync_file_update_ext_modified(struct mbox_sync_context *sync_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:123,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:124,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - sync_ctx
    - dirty
    argTypes:
    - struct mbox_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 6
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: mbox_sync_file_updated
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mbox_set_syscall_error
    - i_stream_sync
    - fstat
    linkageType: ''
    returnType: void
    signature: void mbox_sync_file_updated(struct mbox_sync_context *sync_ctx, bool
      dirty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: istream_raw_mbox_get_header_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:135,1
    - Dst: istream_raw_mbox_is_eof
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:136,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:139,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:140,1
    - Dst: istream_raw_mbox_get_start_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:146,1
    - Dst: istream_raw_mbox_get_header_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:147,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:148,1
    - Dst: mbox_sync_parse_next_mail
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:153,1
    - Dst: istream_raw_mbox_is_corrupted
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:155,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:158,1
    - Dst: istream_raw_mbox_get_body_size
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:161,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:168,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - sync_ctx
    - mail_ctx
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 128
    functionDepth: 5
    functionLinenumber: 128
    functionLinenumberEnd: 179
    functionName: mbox_sync_read_next_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - istream_raw_mbox_is_eof
    - i_zero
    - istream_raw_mbox_get_body_size
    - istream_raw_mbox_get_header_offset
    - mbox_sync_set_critical
    - istream_raw_mbox_is_corrupted
    - mbox_sync_parse_next_mail
    - i_assert
    - istream_raw_mbox_get_start_offset
    - p_clear
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_read_next_mail(struct mbox_sync_context *sync_ctx,\n\t\t\t
      struct mbox_sync_mail_context *mail_ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_sync_changes_read
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - sync_ctx
    - uid
    - sync_expunge_r
    argTypes:
    - struct mbox_sync_context*
    - uint32_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 181
    functionDepth: 4
    functionLinenumber: 181
    functionLinenumberEnd: 197
    functionName: mbox_sync_read_index_syncs
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - index_sync_changes_read
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_read_index_syncs(struct mbox_sync_context *sync_ctx,\n\t\t\t\t
      \      uint32_t uid, bool *sync_expunge_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:213,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:215,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:220,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:227,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:235,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - sync_ctx
    - uid
    - rec_r
    argTypes:
    - struct mbox_sync_context*
    - uint32_t
    - struct mail_index_record**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 199
    functionDepth: 5
    functionLinenumber: 199
    functionLinenumberEnd: 246
    functionName: mbox_sync_read_index_rec
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mbox_sync_set_critical
    - mail_index_view_get_messages_count
    - mail_index_lookup
    - mail_index_expunge
    linkageType: ''
    returnType: bool
    signature: "bool mbox_sync_read_index_rec(struct mbox_sync_context *sync_ctx,\n\t\t\t
      uint32_t uid, const struct mail_index_record **rec_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:262,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:264,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:265,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:269,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - sync_ctx
    - hdr_md5_sum
    - rec_r
    argTypes:
    - struct mbox_sync_context*
    - unsigned char[]
    - struct mail_index_record**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 279
    functionName: mbox_sync_find_index_md5
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_ext
    - mail_index_lookup
    - memcmp
    - mail_index_view_get_messages_count
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_find_index_md5(struct mbox_sync_context *sync_ctx,\n\t\t\t\t
      \    unsigned char hdr_md5_sum[],\n\t\t\t\t     const struct mail_index_record
      **rec_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:291,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - sync_ctx
    - mail
    - nocheck
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 302
    functionName: mbox_sync_update_from_offset
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_ext
    - mail_index_update_ext
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_update_from_offset(struct mbox_sync_context *sync_ctx,\n
      \                            struct mbox_sync_mail *mail,\n\t\t\t     bool nocheck)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:311,1
    - Dst: mail_index_keywords_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:312,1
    - Dst: mail_index_keywords_create_from_indexes
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:313,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:315,1
    - Dst: mail_index_keywords_unref
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mail_ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 304
    functionDepth: 4
    functionLinenumber: 304
    functionLinenumberEnd: 318
    functionName: mbox_sync_update_index_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_update_keywords
    - mail_index_keywords_create_from_indexes
    - array_is_created
    - mail_index_keywords_unref
    - mail_index_keywords_create
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_index_keywords(struct mbox_sync_mail_context
      *mail_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:326,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:329,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - mail_ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 334
    functionName: mbox_sync_update_md5_if_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_ext
    - memcmp
    - mail_index_update_ext
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_md5_if_changed(struct mbox_sync_mail_context
      *mail_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:340,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:345,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:357,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:358,1
    - Dst: index_keyword_array_cmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:360,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:364,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:365,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:367,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:369,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:370,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - mail_ctx
    - rec
    argTypes:
    - struct mbox_sync_mail_context*
    - struct mail_index_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 372
    functionName: mbox_sync_get_dirty_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - ENUM_NEGATE
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - index_keyword_array_cmp
    - array_is_created
    - mail_index_lookup_keywords
    - array_append_array
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_get_dirty_flags(struct mbox_sync_mail_context *mail_ctx,\n\t\t\t\t
      \     const struct mail_index_record *rec)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:381,1
    - Dst: mbox_sync_get_dirty_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:388,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:393,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:394,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:395,1
    - Dst: index_sync_changes_apply
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:399,1
    - Dst: index_keyword_array_cmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:403,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:409,1
    - Dst: index_sync_type_convert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:410,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - mail_ctx
    - rec
    argTypes:
    - struct mbox_sync_mail_context*
    - struct mail_index_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 374
    functionDepth: 3
    functionLinenumber: 374
    functionLinenumberEnd: 412
    functionName: mbox_sync_update_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - index_sync_type_convert
    - t_array_init
    - index_keyword_array_cmp
    - mbox_sync_get_dirty_flags
    - ARRAY_TYPE
    - mailbox_sync_notify
    - array_is_created
    - array_append_array
    - index_sync_changes_apply
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_update_flags(struct mbox_sync_mail_context *mail_ctx,\n\t\t\t\t
      \  const struct mail_index_record *rec)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:419,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:422,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:425,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:433,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:434,1
    - Dst: mbox_sync_update_index_keywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:436,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:439,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:447,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:455,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:461,1
    - Dst: mail_index_lookup_keywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:462,1
    - Dst: index_keyword_array_cmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:464,1
    - Dst: mbox_sync_update_index_keywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:465,1
    - Dst: mbox_sync_update_md5_if_changed
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:469,1
    - Dst: mbox_sync_update_from_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:482,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 2
    argNames:
    - mail_ctx
    - rec
    argTypes:
    - struct mbox_sync_mail_context*
    - struct mail_index_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 414
    functionDepth: 5
    functionLinenumber: 414
    functionLinenumberEnd: 484
    functionName: mbox_sync_update_index
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mbox_sync_update_from_offset
    - mail_index_append
    - ENUM_NEGATE
    - mail_index_update_flags
    - mbox_sync_update_md5_if_changed
    - mbox_sync_update_index_keywords
    - mail_index_update_ext
    - t_array_init
    - ARRAY_TYPE
    - index_keyword_array_cmp
    - mail_index_lookup_keywords
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_update_index(struct mbox_sync_mail_context *mail_ctx,\n\t\t\t\t
      \  const struct mail_index_record *rec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:492,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:495,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:497,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:501,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:502,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:508,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 513
    functionName: mbox_read_from_line
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_stream_get_data
    - i_stream_skip
    - buffer_set_used_size
    - i_stream_seek
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int mbox_read_from_line(struct mbox_sync_mail_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:523,1
    - Dst: pread_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:528,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:531,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:535,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:549,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:555,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:556,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:558,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:561,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 515
    functionDepth: 7
    functionLinenumber: 515
    functionLinenumberEnd: 565
    functionName: mbox_rewrite_base_uid_last
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mbox_set_syscall_error
    - pwrite_full
    - t_strdup_printf
    - mbox_sync_set_critical
    - pread_full
    - mbox_sync_file_updated
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mbox_rewrite_base_uid_last(struct mbox_sync_context *sync_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:572,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:572,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:572,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:574,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 567
    functionDepth: 7
    functionLinenumber: 567
    functionLinenumberEnd: 580
    functionName: mbox_write_from_line
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - mbox_set_syscall_error
    - pwrite_full
    - mbox_sync_file_updated
    linkageType: ''
    returnType: int
    signature: int mbox_write_from_line(struct mbox_sync_mail_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:591,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 582
    functionDepth: 2
    functionLinenumber: 582
    functionLinenumberEnd: 601
    functionName: update_from_offsets
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - array_get
    - mail_index_update_ext
    linkageType: ''
    returnType: void
    signature: void update_from_offsets(struct mbox_sync_context *sync_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:608,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:610,1
    - Dst: istream_raw_mbox_has_crlf_ending
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:624,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - mail_ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 634
    functionName: mbox_sync_handle_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - istream_raw_mbox_has_crlf_ending
    - mailbox_sync_notify
    - mail_index_expunge
    linkageType: ''
    returnType: void
    signature: void mbox_sync_handle_expunge(struct mbox_sync_mail_context *mail_ctx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mbox_read_from_line
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:659,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:661,1
    - Dst: mbox_sync_update_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:664,1
    - Dst: mbox_sync_try_rewrite
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:665,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:672,1
    - Dst: mbox_write_from_line
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:676,1
    - Dst: mbox_sync_update_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:686,1
    - Dst: mbox_sync_try_rewrite
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:695,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:715,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:718,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:727,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:730,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 1
    argNames:
    - mail_ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 636
    functionDepth: 8
    functionLinenumber: 636
    functionLinenumberEnd: 734
    functionName: mbox_sync_handle_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_push_back
    - mbox_sync_update_header
    - mbox_sync_try_rewrite
    - mbox_read_from_line
    - mbox_write_from_line
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mbox_sync_handle_header(struct mbox_sync_mail_context *mail_ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:742,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:744,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:747,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:751,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:752,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:753,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:756,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:761,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:774,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:789,1
    - Dst: mbox_sync_file_update_ext_modified
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:802,1
    - Dst: mbox_sync_rewrite
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:803,1
    - Dst: update_from_offsets
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:809,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:813,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:817,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:818,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 1
    argNames:
    - mail_ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 736
    functionDepth: 7
    functionLinenumber: 736
    functionLinenumberEnd: 820
    functionName: mbox_sync_handle_missing_space
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_array_init
    - array_push_back
    - update_from_offsets
    - array_count
    - mbox_sync_file_update_ext_modified
    - array_pop_back
    - array_clear
    - ARRAY_TYPE
    - mbox_sync_rewrite
    - array_is_created
    - i_assert
    - array_append_array
    - p_clear
    linkageType: ''
    returnType: int
    signature: int mbox_sync_handle_missing_space(struct mbox_sync_mail_context *mail_ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: istream_raw_mbox_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:832,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:834,1
    - Dst: istream_raw_mbox_get_start_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:841,1
    - Dst: mbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:843,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:846,1
    - Dst: istream_raw_mbox_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:852,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:854,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:856,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:866,1
    - Dst: istream_raw_mbox_get_start_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:873,1
    - Dst: istream_raw_mbox_get_body_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:880,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:881,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 2
    argNames:
    - sync_ctx
    - seq
    argTypes:
    - struct mbox_sync_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 822
    functionDepth: 5
    functionLinenumber: 822
    functionLinenumberEnd: 886
    functionName: mbox_sync_seek_to_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - dec2str
    - mbox_file_seek
    - mail_storage_set_error
    - mail_index_lookup_uid
    - istream_raw_mbox_seek
    - mbox_sync_set_critical
    - istream_raw_mbox_get_body_offset
    - istream_raw_mbox_get_start_offset
    linkageType: ''
    returnType: int
    signature: int mbox_sync_seek_to_seq(struct mbox_sync_context *sync_ctx, uint32_t
      seq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:896,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:898,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:901,1
    - Dst: mbox_istream_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:903,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:907,1
    - Dst: istream_raw_mbox_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:909,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:911,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:916,1
    - Dst: mbox_sync_seek_to_seq
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:920,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - sync_ctx
    - uid
    argTypes:
    - struct mbox_sync_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 888
    functionDepth: 6
    functionLinenumber: 888
    functionLinenumberEnd: 921
    functionName: mbox_sync_seek_to_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_seq_range
    - istream_raw_mbox_seek
    - mbox_istream_set_syscall_error
    - mbox_sync_set_critical
    - i_stream_get_size
    - mbox_sync_seek_to_seq
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: int mbox_sync_seek_to_uid(struct mbox_sync_context *sync_ctx, uint32_t
      uid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:930,1
    - Dst: index_sync_changes_delete_to
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:934,1
    - Dst: index_sync_changes_have
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:935,1
    - Dst: index_sync_changes_get_next_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:944,1
    - Dst: mbox_sync_seek_to_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:959,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:967,1
    - Dst: mbox_sync_seek_to_seq
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:969,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 4
    argNames:
    - sync_ctx
    - next_uid
    - partial
    - skipped_mails
    argTypes:
    - struct mbox_sync_context*
    - uint32_t
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 923
    functionDepth: 7
    functionLinenumber: 923
    functionLinenumberEnd: 984
    functionName: mbox_sync_partial_seek_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - index_sync_changes_get_next_uid
    - mbox_sync_seek_to_uid
    - index_sync_changes_have
    - mbox_sync_seek_to_seq
    - index_sync_changes_delete_to
    - i_assert
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_partial_seek_next(struct mbox_sync_context *sync_ctx,\n\t\t\t\t
      \      uint32_t next_uid, bool *partial,\n\t\t\t\t       bool *skipped_mails)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:998,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - sync_ctx
    - mail_ctx
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1004
    functionName: mbox_sync_hdr_update
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_hdr_update(struct mbox_sync_context *sync_ctx,\n\t\t\t\t
      struct mbox_sync_mail_context *mail_ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1013,1
    - Dst: mbox_sync_hdr_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1021,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - sync_ctx
    - mail_ctx
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1006
    functionDepth: 2
    functionLinenumber: 1006
    functionLinenumberEnd: 1023
    functionName: mbox_sync_imapbase
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - e_warning
    - mbox_sync_hdr_update
    linkageType: ''
    returnType: bool
    signature: "bool mbox_sync_imapbase(struct mbox_sync_context *sync_ctx,\n\t\t\t
      \      struct mbox_sync_mail_context *mail_ctx)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1036,1
    - Dst: mbox_sync_seek_to_seq
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1040,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1047,1
    - Dst: mbox_sync_read_next_mail
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1053,1
    - Dst: mbox_sync_imapbase
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1057,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1069,1
    - Dst: mbox_sync_read_index_rec
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1083,1
    - Dst: mbox_sync_find_index_md5
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1099,1
    - Dst: mbox_sync_read_index_syncs
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1108,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1127,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1135,1
    - Dst: mbox_sync_update_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1151,1
    - Dst: mbox_sync_handle_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1153,1
    - Dst: mbox_sync_handle_expunge
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1157,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 78
    argCount: 3
    argNames:
    - sync_ctx
    - mail_ctx
    - partial
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1025
    functionDepth: 9
    functionLinenumber: 1025
    functionLinenumberEnd: 1158
    functionName: mbox_sync_loop
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mbox_sync_update_flags
    - mbox_sync_read_index_syncs
    - mbox_sync_handle_header
    - mbox_sync_handle_expunge
    - mbox_sync_set_critical
    - mbox_sync_imapbase
    - mbox_sync_find_index_md5
    - mbox_sync_seek_to_seq
    - mailbox_set_critical
    - mbox_sync_read_index_rec
    - mail_index_view_get_messages_count
    - mbox_sync_read_next_mail
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_loop(struct mbox_sync_context *sync_ctx,\n                          struct
      mbox_sync_mail_context *mail_ctx,\n\t\t\t  bool partial)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1225,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1246,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1248,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1249,1
    - Dst: mbox_from_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1258,1
    - Dst: message_date_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1259,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1260,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1263,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1264,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1264,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1265,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1266,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1272,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1273,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - sync_ctx
    - force
    argTypes:
    - struct mbox_sync_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1220
    functionDepth: 6
    functionLinenumber: 1220
    functionLinenumberEnd: 1280
    functionName: mbox_write_pseudo
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_str_new
    - str_printfa
    - ftruncate
    - str_data
    - str_len
    - ENOSPACE
    - mbox_set_syscall_error
    - pwrite_full
    - message_date_create
    - mbox_from_create
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mbox_write_pseudo(struct mbox_sync_context *sync_ctx, bool force)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1289,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1289,1
    - Dst: pwrite
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1291,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1292,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1300,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1301,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1302,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - sync_ctx
    - orig_file_size
    - count
    argTypes:
    - struct mbox_sync_context*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1282
    functionDepth: 6
    functionLinenumber: 1282
    functionLinenumberEnd: 1306
    functionName: mbox_append_zero
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - ftruncate
    - pwrite
    - mbox_set_syscall_error
    - I_MIN
    - memset
    linkageType: ''
    returnType: int
    signature: "int mbox_append_zero(struct mbox_sync_context *sync_ctx,\n\t\t\t    uoff_t
      orig_file_size, uoff_t count)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: istream_raw_mbox_is_eof
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1314,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1315,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1316,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1320,1
    - Dst: mbox_istream_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1322,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1332,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1339,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1342,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1344,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1349,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1354,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1356,1
    - Dst: mbox_append_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1358,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1361,1
    - Dst: mbox_sync_rewrite
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1363,1
    - Dst: update_from_offsets
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1369,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1372,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1373,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1377,1
    - Dst: mbox_sync_file_update_ext_modified
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1379,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1395,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1397,1
    - Dst: mbox_move
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1399,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1403,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1405,1
    - Dst: mbox_write_pseudo
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1410,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1415,1
    - Dst: mbox_write_pseudo
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1418,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 73
    argCount: 2
    argNames:
    - sync_ctx
    - mail_ctx
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1308
    functionDepth: 7
    functionLinenumber: 1308
    functionLinenumberEnd: 1423
    functionName: mbox_sync_handle_eof_updates
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - istream_raw_mbox_is_eof
    - ftruncate
    - str_append_c
    - mbox_append_zero
    - mbox_set_syscall_error
    - mbox_istream_set_syscall_error
    - update_from_offsets
    - mbox_move
    - mbox_sync_set_critical
    - i_stream_get_size
    - mbox_sync_file_update_ext_modified
    - array_clear
    - mbox_sync_file_updated
    - mbox_sync_rewrite
    - i_assert
    - mbox_write_pseudo
    - p_clear
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_handle_eof_updates(struct mbox_sync_context *sync_ctx,\n\t\t\t\t\tstruct
      mbox_sync_mail_context *mail_ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1433,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1434,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1436,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1437,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1440,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1443,1
    - Dst: mail_index_ext_resize
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1446,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1451,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - mbox
    - trans
    argTypes:
    - struct mbox_mailbox*
    - struct mail_index_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1425
    functionDepth: 3
    functionLinenumber: 1425
    functionLinenumberEnd: 1455
    functionName: mbox_sync_index_update_ext_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - memcpy
    - guid_128_generate
    - mail_index_update_header_ext
    - mail_index_get_header_ext
    - memcmp
    - mail_index_ext_resize
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_index_update_ext_header(struct mbox_mailbox *mbox,\n\t\t\t\t
      \ struct mail_index_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1461,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1462,1
    - Dst: mailbox_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1457
    functionDepth: 8
    functionLinenumber: 1457
    functionLinenumberEnd: 1464
    functionName: mbox_get_uidvalidity_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_uidvalidity_next
    - t_strconcat
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mbox_get_uidvalidity_next(struct mailbox_list *list)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1472,1
    - Dst: mbox_istream_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1473,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1494,1
    - Dst: utime
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1495,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1495,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1496,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1501,1
    - Dst: mbox_istream_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1502,1
    - Dst: mbox_sync_index_update_ext_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1511,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1515,1
    - Dst: mbox_get_uidvalidity_next
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1520,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1523,1
    - Dst: istream_raw_mbox_is_eof
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1529,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1531,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1532,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1545,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1546,1
    - Dst: mailbox_recent_flags_set_seqs
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1548,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1551,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1556,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1466
    functionDepth: 9
    functionLinenumber: 1466
    functionLinenumberEnd: 1561
    functionName: mbox_sync_update_index_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - istream_raw_mbox_is_eof
    - utime
    - mailbox_get_path
    - mail_index_update_header
    - mbox_get_uidvalidity_next
    - mailbox_recent_flags_set_seqs
    - mbox_set_syscall_error
    - mbox_sync_index_update_ext_header
    - i_sleep_msecs
    - mbox_istream_set_syscall_error
    - i_stream_stat
    - mail_index_transaction_open_updated_view
    - mail_index_lookup_seq_range
    - i_assert
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: int mbox_sync_update_index_header(struct mbox_sync_context *sync_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1569,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1570,1
    - Dst: index_sync_changes_reset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1572,1
    - Dst: mail_index_sync_reset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1573,1
    - Dst: mail_index_transaction_reset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1574,1
    - Dst: mail_index_reset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1577,1
    - Dst: mailbox_recent_flags_reset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1563
    functionDepth: 2
    functionLinenumber: 1563
    functionLinenumberEnd: 1595
    functionName: mbox_sync_restart
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_reset
    - mailbox_recent_flags_reset
    - index_sync_changes_reset
    - p_clear
    - array_clear
    - mail_index_reset
    - mail_index_sync_reset
    linkageType: ''
    returnType: void
    signature: void mbox_sync_restart(struct mbox_sync_context *sync_ctx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1607,1
    - Dst: mbox_istream_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1608,1
    - Dst: mbox_sync_restart
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1644,1
    - Dst: mbox_sync_loop
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1646,1
    - Dst: mbox_sync_restart
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1665,1
    - Dst: mbox_sync_handle_eof_updates
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1669,1
    - Dst: index_sync_changes_reset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1675,1
    - Dst: mbox_rewrite_base_uid_last
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1682,1
    - Dst: mbox_sync_update_index_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1687,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 52
    argCount: 2
    argNames:
    - sync_ctx
    - flags
    argTypes:
    - struct mbox_sync_context*
    - enum mbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1597
    functionDepth: 10
    functionLinenumber: 1597
    functionLinenumberEnd: 1690
    functionName: mbox_sync_do
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mbox_sync_update_index_header
    - mbox_sync_restart
    - mbox_sync_loop
    - mbox_istream_set_syscall_error
    - i_stream_stat
    - index_sync_changes_reset
    - mbox_rewrite_base_uid_last
    - mbox_sync_handle_eof_updates
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_do(struct mbox_sync_context *sync_ctx,\n\t\t\tenum mbox_sync_flags
      flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1697,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1698,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1702,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1706,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1710,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1710,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1692
    functionDepth: 3
    functionLinenumber: 1692
    functionLinenumberEnd: 1714
    functionName: mbox_sync_header_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 1
    functionsReached:
    - i_zero
    - memcpy
    - I_MIN
    - mailbox_set_index_error
    - mail_index_get_header_ext
    - mail_index_refresh
    linkageType: ''
    returnType: int
    signature: int mbox_sync_header_refresh(struct mbox_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mbox_lock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1722,1
    - Dst: mbox_sync_header_refresh
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1725,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1727,1
    - Dst: mbox_sync_index_update_ext_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1729,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1730,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1716
    functionDepth: 4
    functionLinenumber: 1716
    functionLinenumberEnd: 1734
    functionName: mbox_sync_get_guid
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mbox_unlock
    - mail_index_transaction_begin
    - mbox_sync_header_refresh
    - mail_index_transaction_commit
    - mbox_sync_index_update_ext_header
    - mbox_lock
    linkageType: ''
    returnType: int
    signature: int mbox_sync_get_guid(struct mbox_mailbox *mbox)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1743,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1745,1
    - Dst: mbox_istream_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1748,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1753,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1753,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1755,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1758,1
    - Dst: mbox_sync_header_refresh
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1764,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1767,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 2
    argNames:
    - mbox
    - leave_dirty
    argTypes:
    - struct mbox_mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1736
    functionDepth: 6
    functionLinenumber: 1736
    functionLinenumberEnd: 1782
    functionName: mbox_sync_has_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_set_deleted
    - mailbox_get_path
    - mbox_sync_header_refresh
    - mbox_set_syscall_error
    - mbox_istream_set_syscall_error
    - i_stream_stat
    - stat
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: int mbox_sync_has_changed(struct mbox_mailbox *mbox, bool leave_dirty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: index_sync_changes_deinit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1786,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1787,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1789,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1790,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1791,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1792,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1793,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mbox_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1784
    functionDepth: 7
    functionLinenumber: 1784
    functionLinenumberEnd: 1795
    functionName: mbox_sync_context_free
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - index_sync_changes_deinit
    - mail_index_sync_rollback
    - pool_unref
    - index_storage_expunging_deinit
    - array_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void mbox_sync_context_free(struct mbox_sync_context *sync_ctx)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1808,1
    - Dst: mbox_lock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1819,1
    - Dst: mbox_sync_header_refresh
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1825,1
    - Dst: mbox_sync_has_changed
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1830,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1842,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1848,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1850,1
    - Dst: mbox_lock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1860,1
    - Dst: mbox_lock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1865,1
    - Dst: index_storage_get_sync_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1873,1
    - Dst: index_storage_expunged_sync_begin
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1877,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1884,1
    - Dst: mail_index_sync_have_more
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1889,1
    - Dst: index_storage_expunging_deinit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1894,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1895,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1896,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1902,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1907,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1908,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1909,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1915,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1917,1
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1920,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1922,1
    - Dst: index_sync_changes_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1929,1
    - Dst: mbox_sync_read_index_syncs
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1938,1
    - Dst: index_sync_changes_get_next_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1940,1
    - Dst: mbox_sync_context_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1943,1
    - Dst: mbox_sync_context_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1951,1
    - Dst: mbox_file_open_stream
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1956,1
    - Dst: mbox_sync_context_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1957,1
    - Dst: mbox_sync_do
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1966,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1969,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1970,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1971,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1985,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1986,1
    - Dst: utime
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1990,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1990,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1991,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1992,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:1996,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2000,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2001,1
    - Dst: mbox_sync_context_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2006,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 129
    argCount: 3
    argNames:
    - mbox
    - flags
    - lock_id
    argTypes:
    - struct mbox_mailbox*
    - enum mbox_sync_flags
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2008
      start: 1797
    functionDepth: 11
    functionLinenumber: 1797
    functionLinenumberEnd: 2008
    functionName: mbox_sync_int
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mbox_is_backend_readonly
    - utime
    - index_sync_changes_get_next_uid
    - mail_index_get_keywords
    - mbox_lock
    - mail_index_sync_have_more
    - mbox_sync_do
    - fstat
    - mbox_sync_has_changed
    - index_storage_expunged_sync_begin
    - mbox_unlock
    - index_storage_get_sync_flags
    - i_stream_sync
    - mbox_sync_read_index_syncs
    - ENOACCESS
    - str_new
    - i_zero
    - index_sync_changes_init
    - mbox_sync_context_free
    - mbox_sync_header_refresh
    - mbox_file_open_stream
    - mail_index_sync_rollback
    - mbox_set_syscall_error
    - mail_index_get_header
    - mailbox_set_index_error
    - i_assert
    - pool_alloconly_create
    - mailbox_get_path
    - mail_index_sync_commit
    - fdatasync
    - index_storage_expunging_deinit
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_int(struct mbox_mailbox *mbox, enum mbox_sync_flags
      flags,\n\t\t\t unsigned int *lock_id)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2015,1
    - Dst: mbox_sync_int
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2019,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2025,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2027,1
    - Dst: mbox_lock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2033,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2035,1
    - Dst: mailbox_sync_notify
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2040,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - mbox
    - flags
    argTypes:
    - struct mbox_mailbox*
    - enum mbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2042
      start: 2010
    functionDepth: 12
    functionLinenumber: 2010
    functionLinenumberEnd: 2042
    functionName: mbox_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 2
    functionsReached:
    - mbox_unlock
    - mbox_lock
    - mailbox_sync_notify
    - i_assert
    - mbox_sync_int
    linkageType: ''
    returnType: int
    signature: int mbox_sync(struct mbox_mailbox *mbox, enum mbox_sync_flags flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2047,1
    - Dst: index_mailbox_want_full_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2051,1
    - Dst: mbox_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2060,1
    - Dst: index_mailbox_sync_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c:2063,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2044
    functionDepth: 14
    functionLinenumber: 2044
    functionLinenumberEnd: 2064
    functionName: mbox_storage_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync.c
    functionUses: 0
    functionsReached:
    - index_mailbox_sync_init
    - index_mailbox_want_full_sync
    - MBOX_MAILBOX
    - mbox_sync
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: 'struct mailbox_sync_context *

      mbox_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-all.c:17,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-all.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 20
    functionName: mbox_md5_all_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-all.c
    functionUses: 0
    functionsReached:
    - md5_init
    - i_new
    linkageType: ''
    returnType: struct mbox_md5_context
    signature: struct mbox_md5_context *mbox_md5_all_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-all.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_md5_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 26
    functionName: mbox_md5_all_more
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-all.c
    functionUses: 0
    functionsReached:
    - md5_update
    linkageType: ''
    returnType: void
    signature: "void mbox_md5_all_more(struct mbox_md5_context *ctx,\n\t\t\t      struct
      message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_final
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-all.c:31,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-all.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct mbox_md5_context*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: mbox_md5_all_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-all.c
    functionUses: 0
    functionsReached:
    - i_free
    - md5_final
    linkageType: ''
    returnType: void
    signature: "void mbox_md5_all_finish(struct mbox_md5_context *ctx,\n\t\t\t\tunsigned
      char result[STATIC_ARRAY 16])"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: IS_LWSP_LF
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LWSP_LF(c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:57,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:63,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:64,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 67
    functionName: parse_trailing_whitespace
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - IS_LWSP
    - i_assert
    - str_len
    linkageType: ''
    returnType: void
    signature: "void parse_trailing_whitespace(struct mbox_sync_mail_context *ctx,\n\t\t\t\t
      \     struct message_header_line *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - flags
    - chr
    argTypes:
    - struct mbox_flag_type*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 79
    functionName: mbox_flag_find
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mail_flags
    signature: enum mail_flags mbox_flag_find(struct mbox_flag_type *flags, char chr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mbox_flag_find
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - hdr
    - flags_list
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    - struct mbox_flag_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 99
    functionName: parse_status_flags
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - mbox_flag_find
    linkageType: ''
    returnType: bool
    signature: "bool parse_status_flags(struct mbox_sync_mail_context *ctx,\n\t\t\t
      \      struct message_header_line *hdr,\n\t\t\t       struct mbox_flag_type
      *flags_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_status_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:104,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: parse_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - parse_status_flags
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool parse_status(struct mbox_sync_mail_context *ctx,\n\t\t\t struct
      message_header_line *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_status_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:113,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: parse_x_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - parse_status_flags
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool parse_x_status(struct mbox_sync_mail_context *ctx,\n\t\t\t   struct
      message_header_line *hdr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:124,1
    - Dst: IS_LWSP_LF
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:131,1
    - Dst: IS_LWSP_LF
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:139,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:144,1
    - Dst: mailbox_keyword_is_valid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:146,1
    - Dst: mail_index_keyword_lookup_or_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:148,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:154,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - hdr
    - pos
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 159
    functionName: parse_imap_keywords_list
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - mailbox_keyword_is_valid
    - mail_index_keyword_lookup_or_create
    - t_strndup
    - array_count
    - IS_LWSP_LF
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: "void parse_imap_keywords_list(struct mbox_sync_mail_context *ctx,\n
      \                        struct message_header_line *hdr, size_t pos)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWSP_LF
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:189,1
    - Dst: IS_LWSP_LF
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:196,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:204,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:230,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:233,1
    - Dst: parse_imap_keywords_list
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:237,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 48
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 161
    functionDepth: 4
    functionLinenumber: 161
    functionLinenumberEnd: 238
    functionName: parse_x_imap_base
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - i_assert
    - IS_LWSP_LF
    - parse_imap_keywords_list
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool parse_x_imap_base(struct mbox_sync_mail_context *ctx,\n\t\t\t
      \     struct message_header_line *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_x_imap_base
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 243
    functionDepth: 5
    functionLinenumber: 243
    functionLinenumberEnd: 253
    functionName: parse_x_imap
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - parse_x_imap_base
    linkageType: ''
    returnType: bool
    signature: "bool parse_x_imap(struct mbox_sync_mail_context *ctx,\n\t\t\t struct
      message_header_line *hdr)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:259,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:266,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:270,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:271,1
    - Dst: IS_LWSP_LF
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:274,1
    - Dst: IS_LWSP_LF
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:282,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:286,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:287,1
    - Dst: mail_index_keyword_lookup
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:289,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:289,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:298,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:305,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:310,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:311,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:313,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:314,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:317,1
    - Dst: parse_trailing_whitespace
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:318,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 320
    functionName: parse_x_keywords_real
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - p_array_init
    - array_push_back
    - str_len
    - array_get
    - parse_trailing_whitespace
    - array_count
    - t_array_init
    - str_truncate
    - ARRAY_TYPE
    - mail_index_keyword_lookup
    - array_is_created
    - str_append_data
    - IS_LWSP_LF
    - array_append_array
    linkageType: ''
    returnType: bool
    signature: "bool parse_x_keywords_real(struct mbox_sync_mail_context *ctx,\n\t\t\t\t
      \ struct message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_x_keywords_real
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 322
    functionDepth: 3
    functionLinenumber: 322
    functionLinenumberEnd: 329
    functionName: parse_x_keywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - parse_x_keywords_real
    linkageType: ''
    returnType: bool
    signature: "bool parse_x_keywords(struct mbox_sync_mail_context *ctx,\n\t\t\t
      \    struct message_header_line *hdr)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWSP_LF
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:351,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:403,1
    - Dst: parse_trailing_whitespace
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:405,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 407
    functionName: parse_x_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - parse_trailing_whitespace
    - IS_LWSP_LF
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool parse_x_uid(struct mbox_sync_mail_context *ctx,\n\t\t\tstruct
      message_header_line *hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWSP_LF
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:427,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_sync_mail_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 435
    functionName: parse_content_length
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - IS_LWSP_LF
    linkageType: ''
    returnType: bool
    signature: "bool parse_content_length(struct mbox_sync_mail_context *ctx,\n\t\t\t\t
      struct message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 453
    functionName: mbox_sync_bsearch_header_func_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int mbox_sync_bsearch_header_func_cmp(const void *p1, const void *p2)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:476,1
    - Dst: struct mbox_sync_mail_context*::sync_ctx::mbox::md5_v::init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:478,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:481,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:482,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:489,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:490,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:491,1
    - Dst: bsearch
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:494,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:495,1
    - Dst: struct mbox_sync_header_func*::func
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:504,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:507,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:514,1
    - Dst: struct mbox_sync_mail_context*::sync_ctx::mbox::md5_v::more
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:517,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:518,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:523,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:524,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:527,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:528,1
    - Dst: struct mbox_sync_mail_context*::sync_ctx::mbox::md5_v::finish
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:530,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:542,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:548,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:549,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:549,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 62
    argCount: 2
    argNames:
    - input
    - ctx
    argTypes:
    - struct istream*
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 455
    functionDepth: 5
    functionLinenumber: 455
    functionLinenumberEnd: 553
    functionName: mbox_sync_parse_next_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 1
    functionsReached:
    - str_len
    - struct mbox_sync_header_func*::func
    - message_parse_header_deinit
    - buffer_append
    - str_append_c
    - i_stream_get_error
    - struct mbox_sync_mail_context*::sync_ctx::mbox::md5_v::finish
    - i_stream_get_name
    - message_parse_header_next
    - bsearch
    - i_assert
    - str_append_data
    - message_parse_header_init
    - N_ELEMENTS
    - struct mbox_sync_mail_context*::sync_ctx::mbox::md5_v::init
    - I_MAX
    - mbox_sync_set_critical
    - str_truncate
    - str_append
    - struct mbox_sync_mail_context*::sync_ctx::mbox::md5_v::more
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_parse_next_mail(struct istream *input,\n\t\t\t      struct
      mbox_sync_mail_context *ctx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:574,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:575,1
    - Dst: struct mbox_mailbox*::md5_v::init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:576,1
    - Dst: message_parse_header_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:578,1
    - Dst: message_parse_header_next
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:579,1
    - Dst: bsearch
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:583,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:584,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:587,1
    - Dst: parse_x_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:592,1
    - Dst: struct mbox_mailbox*::md5_v::more
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:598,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:601,1
    - Dst: message_parse_header_deinit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:602,1
    - Dst: struct mbox_mailbox*::md5_v::finish
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:604,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:612,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c:615,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - mbox
    - view
    - seq
    argTypes:
    - struct mbox_mailbox*
    - struct mail_index_view*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 555
    functionDepth: 3
    functionLinenumber: 555
    functionLinenumberEnd: 616
    functionName: mbox_sync_parse_match_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c
    functionUses: 0
    functionsReached:
    - i_zero
    - bsearch
    - i_assert
    - struct mbox_mailbox*::md5_v::finish
    - struct mbox_mailbox*::md5_v::init
    - mail_index_lookup_uid
    - struct mbox_mailbox*::md5_v::more
    - strcasecmp
    - message_parse_header_deinit
    - mail_index_lookup_ext
    - parse_x_uid
    - message_parse_header_next
    - memcmp
    - message_parse_header_init
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: "bool mbox_sync_parse_match_mail(struct mbox_mailbox *mbox,\n\t\t\t\tstruct
      mail_index_view *view, uint32_t seq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: MBOX_STORAGE
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MBOX_STORAGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: MBOX_MAILBOX
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MBOX_MAILBOX(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: MBOX_TRANSCTX
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-storage.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MBOX_TRANSCTX(s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:20,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:24,1
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:24,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:28,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:28,1
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:29,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:30,1
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:32,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:32,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:36,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:40,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:41,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:42,1
    - Dst: S_ISFIFO
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:46,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 15
    functionDepth: 6
    functionLinenumber: 15
    functionLinenumberEnd: 51
    functionName: mbox_file_open
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c
    functionUses: 1
    functionsReached:
    - mbox_is_backend_readonly
    - mailbox_get_path
    - mbox_set_syscall_error
    - i_close_fd
    - open
    - fstat
    - S_ISFIFO
    - ENOACCESS
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mbox_file_open(struct mbox_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mbox_file_close_stream
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:55,1
    - Dst: close
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:58,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 53
    functionDepth: 6
    functionLinenumber: 53
    functionLinenumberEnd: 62
    functionName: mbox_file_close
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c
    functionUses: 1
    functionsReached:
    - mbox_set_syscall_error
    - mbox_file_close_stream
    - close
    linkageType: ''
    returnType: void
    signature: void mbox_file_close(struct mbox_mailbox *mbox)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:71,1
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:71,1
    - Dst: mbox_file_open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:74,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:80,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:83,1
    - Dst: i_stream_set_init_buffer_size
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:85,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:88,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:89,1
    - Dst: i_stream_create_raw_mbox
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:92,1
    - Dst: istream_raw_mbox_set_locked
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:94,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 64
    functionDepth: 7
    functionLinenumber: 64
    functionLinenumberEnd: 96
    functionName: mbox_file_open_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c
    functionUses: 1
    functionsReached:
    - mbox_is_backend_readonly
    - i_stream_create_fd
    - mailbox_get_path
    - istream_raw_mbox_set_locked
    - i_stream_set_init_buffer_size
    - i_stream_set_name
    - i_stream_create_from_data
    - i_stream_create_raw_mbox
    - mbox_file_open
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mbox_file_open_stream(struct mbox_mailbox *mbox)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:105,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:109,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:110,1
    - Dst: utime
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:117,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:117,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:118,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:119,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 98
    functionDepth: 6
    functionLinenumber: 98
    functionLinenumberEnd: 122
    functionName: mbox_file_fix_atime
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c
    functionUses: 0
    functionsReached:
    - mbox_is_backend_readonly
    - mailbox_get_path
    - utime
    - mbox_set_syscall_error
    - fstat
    - ENOACCESS
    linkageType: ''
    returnType: void
    signature: void mbox_file_fix_atime(struct mbox_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mbox_file_fix_atime
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:126,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:128,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:133,1
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:133,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:134,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 123
    functionDepth: 7
    functionLinenumber: 123
    functionLinenumberEnd: 139
    functionName: mbox_file_close_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c
    functionUses: 1
    functionsReached:
    - mbox_is_backend_readonly
    - i_stream_seek
    - mbox_file_fix_atime
    - i_assert
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void mbox_file_close_stream(struct mbox_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:148,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - mbox
    - view
    - seq
    - offset_r
    argTypes:
    - struct mbox_mailbox*
    - struct mail_index_view*
    - uint32_t
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 162
    functionName: mbox_file_lookup_offset
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c
    functionUses: 0
    functionsReached:
    - mailbox_set_critical
    - mail_index_lookup_ext
    linkageType: ''
    returnType: int
    signature: "int mbox_file_lookup_offset(struct mbox_mailbox *mbox,\n\t\t\t    struct
      mail_index_view *view,\n\t\t\t    uint32_t seq, uoff_t *offset_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mbox_file_lookup_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:170,1
    - Dst: istream_raw_mbox_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:177,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:180,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:189,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:191,1
    - Dst: mbox_sync_parse_match_mail
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:199,1
    - Dst: istream_raw_mbox_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:202,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c:203,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - mbox
    - view
    - seq
    - deleted_r
    argTypes:
    - struct mbox_mailbox*
    - struct mail_index_view*
    - uint32_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 164
    functionDepth: 5
    functionLinenumber: 164
    functionLinenumberEnd: 207
    functionName: mbox_file_seek
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-file.c
    functionUses: 1
    functionsReached:
    - dec2str
    - mbox_sync_parse_match_mail
    - mbox_file_lookup_offset
    - istream_raw_mbox_seek
    - mailbox_set_critical
    - i_assert
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int mbox_file_seek(struct mbox_mailbox *mbox, struct mail_index_view
      *view,\n\t\t   uint32_t seq, bool *deleted_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:23,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:24,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:29,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:31,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:32,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:33,1
    - Dst: mbox_ostream_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:34,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:36,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:42,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:43,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:44,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:45,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:47,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:50,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:58,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:60,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:61,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 4
    argNames:
    - sync_ctx
    - dest
    - source
    - size
    argTypes:
    - struct mbox_sync_context*
    - uoff_t
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 15
    functionDepth: 7
    functionLinenumber: 15
    functionLinenumberEnd: 63
    functionName: mbox_move
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 1
    functionsReached:
    - mailbox_set_critical
    - o_stream_seek
    - o_stream_get_error
    - i_stream_sync
    - o_stream_unref
    - i_stream_create_limit
    - o_stream_nsend_istream
    - mbox_sync_set_critical
    - i_stream_seek
    - o_stream_create_fd_file
    - mbox_ostream_set_syscall_error
    - i_stream_unref
    - o_stream_flush
    - mbox_sync_file_updated
    - i_assert
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int mbox_move(struct mbox_sync_context *sync_ctx,\n\t      uoff_t
      dest, uoff_t source, uoff_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:70,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:72,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:74,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:80,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:81,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:84,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - sync_ctx
    - offset
    - size
    argTypes:
    - struct mbox_sync_context*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 65
    functionDepth: 7
    functionLinenumber: 65
    functionLinenumberEnd: 86
    functionName: mbox_fill_space
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 0
    functionsReached:
    - mbox_set_syscall_error
    - memset
    - mbox_sync_file_updated
    - pwrite_full
    linkageType: ''
    returnType: int
    signature: "int mbox_fill_space(struct mbox_sync_context *sync_ctx,\n\t\t\t   uoff_t
      offset, uoff_t size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:95,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:112,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:113,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:114,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:119,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:122,1
    - Dst: mbox_sync_move_buffer
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:129,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:131,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:132,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - size
    argTypes:
    - struct mbox_sync_mail_context*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 142
    functionName: mbox_sync_headers_add_space
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - buffer_get_space_unsafe
    - IS_LWSP
    - memset
    - i_assert
    - mbox_sync_move_buffer
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_headers_add_space(struct mbox_sync_mail_context *ctx,\n\t\t\t\t
      size_t size)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:151,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:152,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:157,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:162,1
    - Dst: mbox_sync_move_buffer
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:177,1
    - Dst: mbox_sync_move_buffer
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:185,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - start_pos
    - size
    argTypes:
    - struct mbox_sync_mail_context*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 200
    functionName: mbox_sync_header_remove_space
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 0
    functionsReached:
    - IS_LWSP
    - mbox_sync_move_buffer
    - str_data
    - str_len
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_header_remove_space(struct mbox_sync_mail_context *ctx,\n\t\t\t\t\t
      \ size_t start_pos, size_t *size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mbox_sync_header_remove_space
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - size
    argTypes:
    - struct mbox_sync_mail_context*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 225
    functionName: mbox_sync_headers_remove_space
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 0
    functionsReached:
    - mbox_sync_header_remove_space
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_headers_remove_space(struct mbox_sync_mail_context
      *ctx,\n\t\t\t\t\t   size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:232,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - hdr_offset
    argTypes:
    - struct mbox_sync_mail_context*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 244
    functionName: mbox_sync_first_mail_written
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_first_mail_written(struct mbox_sync_mail_context *ctx,\n\t\t\t\t\t
      uoff_t hdr_offset)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:251,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:254,1
    - Dst: mbox_sync_headers_add_space
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:259,1
    - Dst: mbox_sync_headers_remove_space
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:262,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:264,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:268,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:273,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:274,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:279,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:286,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:302,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:304,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:305,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:306,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:309,1
    - Dst: mbox_sync_first_mail_written
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:317,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:320,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 2
    argNames:
    - ctx
    - move_diff
    argTypes:
    - struct mbox_sync_mail_context*
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 246
    functionDepth: 7
    functionLinenumber: 246
    functionLinenumberEnd: 322
    functionName: mbox_sync_try_rewrite
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 1
    functionsReached:
    - str_data
    - mbox_sync_headers_add_space
    - str_len
    - mbox_set_syscall_error
    - pwrite_full
    - mbox_sync_headers_remove_space
    - str_truncate
    - mbox_sync_file_updated
    - i_assert
    - mbox_sync_first_mail_written
    linkageType: ''
    returnType: int
    signature: int mbox_sync_try_rewrite(struct mbox_sync_mail_context *ctx, off_t
      move_diff)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:333,1
    - Dst: istream_raw_mbox_get_header_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:338,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:340,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:355,1
    - Dst: mbox_sync_parse_next_mail
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:371,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:373,1
    - Dst: mbox_sync_headers_remove_space
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:383,1
    - Dst: mbox_sync_update_header_from
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:385,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:390,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 6
    argNames:
    - sync_ctx
    - mail_ctx
    - mails
    - seq
    - idx
    - expunged_space
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail_context*
    - struct mbox_sync_mail*
    - uint32_t
    - uint32_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 324
    functionDepth: 6
    functionLinenumber: 324
    functionLinenumberEnd: 393
    functionName: mbox_sync_read_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_append_c
    - mbox_sync_headers_remove_space
    - istream_raw_mbox_get_header_offset
    - mbox_sync_set_critical
    - mbox_sync_update_header_from
    - mbox_sync_parse_next_mail
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_read_next(struct mbox_sync_context *sync_ctx,\n\t\t\t
      \      struct mbox_sync_mail_context *mail_ctx,\n\t\t\t       struct mbox_sync_mail
      *mails,\n\t\t\t       uint32_t seq, uint32_t idx,\n\t\t\t       uoff_t expunged_space)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mbox_sync_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:407,1
    - Dst: mbox_sync_read_next
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:410,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:415,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:418,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:422,1
    - Dst: mbox_sync_file_update_ext_modified
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:427,1
    - Dst: mbox_sync_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:429,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:442,1
    - Dst: mbox_move
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:443,1
    - Dst: mbox_sync_headers_remove_space
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:452,1
    - Dst: mbox_sync_headers_add_space
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:455,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:463,1
    - Dst: mbox_move
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:464,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:469,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:469,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:470,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:471,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:472,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:472,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:473,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:474,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:477,1
    - Dst: mbox_sync_first_mail_written
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:480,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 10
    argNames:
    - sync_ctx
    - mail_ctx
    - mails
    - seq
    - idx
    - padding
    - move_diff
    - expunged_space
    - end_offset
    - first_nonexpunged
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail_context*
    - struct mbox_sync_mail*
    - uint32_t
    - uint32_t
    - uint32_t
    - off_t
    - uoff_t
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 395
    functionDepth: 8
    functionLinenumber: 395
    functionLinenumberEnd: 488
    functionName: mbox_sync_read_and_move
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - mbox_sync_headers_add_space
    - mbox_set_syscall_error
    - pwrite_full
    - mbox_sync_headers_remove_space
    - mbox_sync_seek
    - mbox_move
    - mbox_sync_read_next
    - mbox_sync_set_critical
    - mbox_sync_file_update_ext_modified
    - i_stream_seek
    - mbox_sync_file_updated
    - i_assert
    - mbox_sync_first_mail_written
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_read_and_move(struct mbox_sync_context *sync_ctx,\n
      \                                  struct mbox_sync_mail_context *mail_ctx,\n\t\t\t\t
      \  struct mbox_sync_mail *mails,\n\t\t\t\t   uint32_t seq, uint32_t idx, uint32_t
      padding,\n\t\t\t\t   off_t move_diff, uoff_t expunged_space,\n\t\t\t\t   uoff_t
      end_offset, bool first_nonexpunged)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:503,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:504,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:506,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:507,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:522,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:527,1
    - Dst: mbox_sync_read_and_move
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:551,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:572,1
    - Dst: mbox_move
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:573,1
    - Dst: mbox_fill_space
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:584,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:595,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:596,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:603,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:604,1
    - Dst: mbox_sync_file_updated
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c:607,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 7
    argNames:
    - sync_ctx
    - mail_ctx
    - end_offset
    - move_diff
    - extra_space
    - first_seq
    - last_seq
    argTypes:
    - struct mbox_sync_context*
    - struct mbox_sync_mail_context*
    - uoff_t
    - off_t
    - uoff_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 490
    functionDepth: 9
    functionLinenumber: 490
    functionLinenumberEnd: 610
    functionName: mbox_sync_rewrite
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-rewrite.c
    functionUses: 2
    functionsReached:
    - array_get_modifiable
    - mbox_fill_space
    - mbox_move
    - mbox_sync_read_and_move
    - mbox_sync_file_updated
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mbox_sync_rewrite(struct mbox_sync_context *sync_ctx,\n\t\t      struct
      mbox_sync_mail_context *mail_ctx,\n\t\t      uoff_t end_offset, off_t move_diff,
      uoff_t extra_space,\n\t\t      uint32_t first_seq, uint32_t last_seq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:13,1
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:13,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mbox
    - view
    argTypes:
    - struct mbox_mailbox*
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 7
    functionDepth: 3
    functionLinenumber: 7
    functionLinenumberEnd: 19
    functionName: mbox_list_get_ext_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_register
    - mail_index_view_get_index
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int mbox_list_get_ext_id(struct mbox_mailbox *mbox,\n\t\t
      \    struct mail_index_view *view)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:25,1
    - Dst: index_storage_list_index_has_changed
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:34,1
    - Dst: mbox_list_get_ext_id
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:39,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:40,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:55,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:58,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:60,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:61,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:65,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:72,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - box
    - list_view
    - seq
    - quick
    - reason_r
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - uint32_t
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 21
    functionDepth: 7
    functionLinenumber: 21
    functionLinenumberEnd: 77
    functionName: mbox_list_index_has_changed
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c
    functionUses: 0
    functionsReached:
    - index_storage_list_index_has_changed
    - mbox_list_get_ext_id
    - t_strdup_printf
    - mail_index_lookup_ext
    - stat
    - MBOX_MAILBOX
    - mailbox_set_critical
    - i_assert
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int mbox_list_index_has_changed(struct mailbox *box,\n\t\t\t\tstruct
      mail_index_view *list_view,\n\t\t\t\tuint32_t seq, bool quick, const char **reason_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:83,1
    - Dst: index_storage_list_index_update_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:92,1
    - Dst: mail_index_transaction_get_view
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:95,1
    - Dst: mbox_list_get_ext_id
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:96,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:97,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:102,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:107,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - box
    - trans
    - seq
    argTypes:
    - struct mailbox*
    - struct mail_index_transaction*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 79
    functionDepth: 6
    functionLinenumber: 79
    functionLinenumberEnd: 109
    functionName: mbox_list_index_update_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-list-index.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mbox_list_get_ext_id
    - mail_index_lookup_ext
    - mail_index_update_ext
    - index_storage_list_index_update_sync
    - MBOX_MAILBOX
    - mail_index_transaction_get_view
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void mbox_list_index_update_sync(struct mailbox *box,\n\t\t\t\t struct
      mail_index_transaction *trans,\n\t\t\t\t uint32_t seq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_md5_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 28
    functionName: parse_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 3
    functionsReached:
    - md5_update
    linkageType: ''
    returnType: bool
    signature: "bool parse_date(struct mbox_md5_context *ctx,\n\t\t       struct message_header_line
      *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_md5_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: parse_delivered_to
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 0
    functionsReached:
    - md5_update
    linkageType: ''
    returnType: bool
    signature: "bool parse_delivered_to(struct mbox_md5_context *ctx,\n\t\t\t       struct
      message_header_line *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_md5_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 46
    functionName: parse_message_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 0
    functionsReached:
    - md5_update
    linkageType: ''
    returnType: bool
    signature: "bool parse_message_id(struct mbox_md5_context *ctx,\n\t\t\t     struct
      message_header_line *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_md5_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 58
    functionName: parse_received
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 0
    functionsReached:
    - md5_update
    linkageType: ''
    returnType: bool
    signature: "bool parse_received(struct mbox_md5_context *ctx,\n\t\t\t   struct
      message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_md5_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: parse_x_delivery_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 0
    functionsReached:
    - md5_update
    linkageType: ''
    returnType: bool
    signature: "bool parse_x_delivery_id(struct mbox_md5_context *ctx,\n\t\t\t\tstruct
      message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 85
    functionName: bsearch_header_func_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int bsearch_header_func_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:91,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 94
    functionName: mbox_md5_apop3d_init
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 0
    functionsReached:
    - md5_init
    - i_new
    linkageType: ''
    returnType: struct mbox_md5_context
    signature: struct mbox_md5_context *mbox_md5_apop3d_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:101,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:102,1
    - Dst: struct mbox_md5_header_func*::func
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - hdr
    argTypes:
    - struct mbox_md5_context*
    - struct message_header_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: mbox_md5_apop3d_more
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 0
    functionsReached:
    - bsearch
    - N_ELEMENTS
    - struct mbox_md5_header_func*::func
    linkageType: ''
    returnType: void
    signature: "void mbox_md5_apop3d_more(struct mbox_md5_context *ctx,\n\t\t\t\t
      struct message_header_line *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_final
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:111,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct mbox_md5_context*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 113
    functionName: mbox_md5_apop3d_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-md5-apop3d.c
    functionUses: 0
    functionsReached:
    - i_free
    - md5_final
    linkageType: ''
    returnType: void
    signature: "void mbox_md5_apop3d_finish(struct mbox_md5_context *ctx,\n\t\t\t\t
      \  unsigned char result[STATIC_ARRAY 16])"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:98,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:100,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:106,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:108,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:114,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - list
    - env
    - locks
    argTypes:
    - ARRAY_TYPE*
    - char*
    - enum mbox_lock_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 121
    functionName: mbox_read_lock_methods
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - i_fatal
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: "void mbox_read_lock_methods(const ARRAY_TYPE(const_string) *list,
      const char *env,\n\t\t\t\t   enum mbox_lock_type *locks)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mbox_read_lock_methods
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:129,1
    - Dst: mbox_read_lock_methods
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:131,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:143,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:149,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:151,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:154,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mbox_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: mbox_init_lock_settings
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_fatal
    - mbox_read_lock_methods
    - p_new
    linkageType: ''
    returnType: void
    signature: void mbox_init_lock_settings(struct mbox_storage *storage)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:175,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:175,1
    - Dst: mailbox_set_deleted
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:177,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:179,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:184,1
    - Dst: mbox_file_close
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:185,1
    - Dst: mbox_file_open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:189,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - lock_type
    argTypes:
    - struct mbox_lock_context*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 162
    functionDepth: 7
    functionLinenumber: 162
    functionLinenumberEnd: 195
    functionName: mbox_file_open_latest
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - mailbox_set_deleted
    - mbox_file_close
    - mailbox_get_path
    - mbox_set_syscall_error
    - mbox_file_open
    - CMP_DEV_T
    - nfs_safe_stat
    linkageType: ''
    returnType: int
    signature: int mbox_file_open_latest(struct mbox_lock_context *ctx, int lock_type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: restrict_access_drop_priv_gid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:204,1
    - Dst: mbox_lock_list
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:223,1
    - Dst: mbox_lock_list
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:229,1
    - Dst: index_storage_lock_notify
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:234,1
    - Dst: restrict_access_use_priv_gid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:239,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 3
    argNames:
    - secs_left
    - stale
    - context
    argTypes:
    - unsigned int
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 197
    functionDepth: 4
    functionLinenumber: 197
    functionLinenumberEnd: 245
    functionName: dotlock_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - index_storage_lock_notify
    - restrict_access_use_priv_gid
    - mbox_lock_list
    - restrict_access_drop_priv_gid
    linkageType: ''
    returnType: bool
    signature: bool dotlock_callback(unsigned int secs_left, bool stale, void *context)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:255,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:257,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:269,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:270,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:275,1
    - Dst: chdir
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:276,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:277,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:279,1
    - Dst: i_faccessat2
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:285,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:286,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:288,1
    - Dst: restrict_access_use_priv_gid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:293,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:294,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:301,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:304,1
    - Dst: eacces_error_get_creating
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:306,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:308,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:310,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:315,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:317,1
    - Dst: file_dotlock_touch
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:321,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:323,1
    - Dst: restrict_access_drop_priv_gid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:328,1
    - Dst: fchdir
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:330,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:331,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:333,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 61
    argCount: 3
    argNames:
    - mbox
    - set
    - op
    argTypes:
    - struct mbox_mailbox*
    - struct dotlock_settings*
    - enum mbox_dotlock_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 247
    functionDepth: 6
    functionLinenumber: 247
    functionLinenumberEnd: 336
    functionName: mbox_dotlock_privileged_op
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - mailbox_get_path
    - restrict_access_use_priv_gid
    - strrchr
    - eacces_error_get_creating
    - mbox_set_syscall_error
    - i_close_fd
    - file_dotlock_create
    - open
    - fchdir
    - chdir
    - t_strdup_until
    - file_dotlock_touch
    - ENOACCESS
    - mailbox_set_critical
    - restrict_access_drop_priv_gid
    - i_faccessat2
    linkageType: ''
    returnType: ATTR_NOWARN_UNUSED_RESULT
    signature: "ATTR_NOWARN_UNUSED_RESULT mbox_dotlock_privileged_op(struct mbox_mailbox
      *mbox,\n\t\t\t   struct dotlock_settings *set,\n\t\t\t   enum mbox_dotlock_op
      op)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: eacces_error_get_creating
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:346,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:347,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:348,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:353,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:354,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:357,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:359,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:362,1
    - Dst: i_getgrgid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:365,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:366,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:369,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:372,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - mbox
    - path
    argTypes:
    - struct mbox_mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 338
    functionDepth: 4
    functionLinenumber: 338
    functionLinenumberEnd: 376
    functionName: mbox_dotlock_log_eacces_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dec2str
    - eacces_error_get_creating
    - strrchr
    - mailbox_list_get_root_forced
    - i_getgrgid
    - stat
    - t_strdup_until
    - mailbox_set_critical
    linkageType: ''
    returnType: void
    signature: void mbox_dotlock_log_eacces_error(struct mbox_mailbox *mbox, const
      char *path)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:390,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:391,1
    - Dst: mbox_dotlock_privileged_op
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:396,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:409,1
    - Dst: mail_storage_get_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:412,1
    - Dst: file_dotlock_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:418,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:418,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:422,1
    - Dst: restrict_access_have_priv_gid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:422,1
    - Dst: mbox_dotlock_privileged_op
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:425,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:427,1
    - Dst: mbox_dotlock_log_eacces_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:428,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:428,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:430,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:433,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:433,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:438,1
    - Dst: mbox_file_open_latest
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:444,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 3
    argNames:
    - ctx
    - lock_type
    - try
    argTypes:
    - struct mbox_lock_context*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 378
    functionDepth: 8
    functionLinenumber: 378
    functionLinenumberEnd: 447
    functionName: mbox_lock_dotlock_int
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - i_zero
    - mbox_dotlock_privileged_op
    - mailbox_get_path
    - mail_storage_set_error
    - ENOSPACE
    - mbox_set_syscall_error
    - file_dotlock_create
    - mbox_dotlock_log_eacces_error
    - ENOACCESS
    - mbox_file_open_latest
    - mail_storage_get_lock_timeout
    - restrict_access_have_priv_gid
    linkageType: ''
    returnType: int
    signature: int mbox_lock_dotlock_int(struct mbox_lock_context *ctx, int lock_type,
      bool try)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_lock_dotlock_int
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - lock_type
    - max_wait_time ATTR_UNUSED
    argTypes:
    - struct mbox_lock_context*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 9
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: mbox_lock_dotlock
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - mbox_lock_dotlock_int
    linkageType: ''
    returnType: int
    signature: "int mbox_lock_dotlock(struct mbox_lock_context *ctx, int lock_type,\n\t\t\t
      \    time_t max_wait_time ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_lock_dotlock_int
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - lock_type
    - max_wait_time ATTR_UNUSED
    argTypes:
    - struct mbox_lock_context*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 455
    functionDepth: 9
    functionLinenumber: 455
    functionLinenumberEnd: 459
    functionName: mbox_lock_dotlock_try
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - mbox_lock_dotlock_int
    linkageType: ''
    returnType: int
    signature: "int mbox_lock_dotlock_try(struct mbox_lock_context *ctx, int lock_type,\n\t\t\t\t
      time_t max_wait_time ATTR_UNUSED)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mbox_file_open_latest
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:468,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:486,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:488,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:490,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:490,1
    - Dst: flock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:493,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:499,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:500,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:504,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:506,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:515,1
    - Dst: index_storage_lock_notify
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:517,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:522,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - lock_type
    - max_wait_time
    argTypes:
    - struct mbox_lock_context*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 462
    functionDepth: 8
    functionLinenumber: 462
    functionLinenumberEnd: 524
    functionName: mbox_lock_flock
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - mbox_set_syscall_error
    - I_MIN
    - alarm
    - flock
    - index_storage_lock_notify
    - mbox_file_open_latest
    - time
    linkageType: ''
    returnType: int
    signature: "int mbox_lock_flock(struct mbox_lock_context *ctx, int lock_type,\n\t\t\t
      \  time_t max_wait_time)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mbox_file_open_latest
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:533,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:546,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:548,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:550,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:550,1
    - Dst: lockf
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:554,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:556,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:561,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:562,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:566,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:568,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:577,1
    - Dst: index_storage_lock_notify
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:579,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:584,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - lock_type
    - max_wait_time
    argTypes:
    - struct mbox_lock_context*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 527
    functionDepth: 8
    functionLinenumber: 527
    functionLinenumberEnd: 586
    functionName: mbox_lock_lockf
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - lockf
    - mbox_set_syscall_error
    - I_MIN
    - alarm
    - index_storage_lock_notify
    - ENOACCESS
    - mbox_file_open_latest
    - time
    linkageType: ''
    returnType: int
    signature: "int mbox_lock_lockf(struct mbox_lock_context *ctx, int lock_type,\n\t\t\t
      \  time_t max_wait_time)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mbox_file_open_latest
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:596,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:602,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:614,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:616,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:618,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:618,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:621,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:623,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:628,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:630,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:633,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:636,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:640,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:642,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:651,1
    - Dst: index_storage_lock_notify
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:653,1
    - Dst: alarm
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:658,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 3
    argNames:
    - ctx
    - lock_type
    - max_wait_time
    argTypes:
    - struct mbox_lock_context*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 588
    functionDepth: 8
    functionLinenumber: 588
    functionLinenumberEnd: 661
    functionName: mbox_lock_fcntl
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_get_path
    - mbox_set_syscall_error
    - I_MIN
    - alarm
    - fcntl
    - index_storage_lock_notify
    - ENOACCESS
    - mailbox_set_critical
    - mbox_file_open_latest
    - time
    linkageType: ''
    returnType: int
    signature: "int mbox_lock_fcntl(struct mbox_lock_context *ctx, int lock_type,\n\t\t\t
      \  time_t max_wait_time)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: func
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:686,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - lock_type
    - max_wait_time
    - idx
    argTypes:
    - struct mbox_lock_context*
    - int
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 691
    functionName: ATTR_NOWARN_UNUSED_RESULT::mbox_lock_list
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - func
    linkageType: ''
    returnType: int
    signature: "int ATTR_NOWARN_UNUSED_RESULT\nmbox_lock_list(struct mbox_lock_context
      *ctx, int lock_type,\n\t       time_t max_wait_time, int idx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: index_storage_lock_notify_reset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:703,1
    - Dst: mbox_init_lock_settings
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:706,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:710,1
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:710,1
    - Dst: time
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:715,1
    - Dst: mail_storage_get_lock_timeout
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:716,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:719,1
    - Dst: mbox_lock_list
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:738,1
    - Dst: mbox_unlock_files
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:741,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:743,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:757,1
    - Dst: mbox_lock_list
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:764,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 3
    argNames:
    - mbox
    - lock_type
    - fcntl_locked_r
    argTypes:
    - struct mbox_mailbox*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 693
    functionDepth: 4
    functionLinenumber: 693
    functionLinenumberEnd: 770
    functionName: mbox_update_locking
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached:
    - index_storage_lock_notify_reset
    - mbox_is_backend_readonly
    - i_zero
    - time
    - mbox_init_lock_settings
    - mbox_unlock_files
    - memset
    - i_assert
    - mail_storage_get_lock_timeout
    - mail_storage_set_error
    - mbox_lock_list
    linkageType: ''
    returnType: int
    signature: "int mbox_update_locking(struct mbox_mailbox *mbox, int lock_type,\n\t\t\t
      \      bool *fcntl_locked_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:775,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:790,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:791,1
    - Dst: mbox_update_locking
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:794,1
    - Dst: nfs_flush_attr_cache_fd_locked
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:800,1
    - Dst: nfs_flush_read_cache_locked
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:801,1
    - Dst: nfs_flush_attr_cache_unlocked
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:803,1
    - Dst: nfs_flush_read_cache_unlocked
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:804,1
    - Dst: istream_raw_mbox_set_locked
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:819,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - mbox
    - lock_type
    - lock_id_r
    argTypes:
    - struct mbox_mailbox*
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 772
    functionDepth: 5
    functionLinenumber: 772
    functionLinenumberEnd: 821
    functionName: mbox_lock
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 4
    functionsReached:
    - nfs_flush_attr_cache_unlocked
    - mailbox_get_path
    - nfs_flush_read_cache_unlocked
    - istream_raw_mbox_set_locked
    - nfs_flush_read_cache_locked
    - nfs_flush_attr_cache_fd_locked
    - i_assert
    - mbox_update_locking
    linkageType: ''
    returnType: int
    signature: "int mbox_lock(struct mbox_mailbox *mbox, int lock_type,\n\t      unsigned
      int *lock_id_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mbox_lock_list
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:827,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_lock_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 833
    functionName: mbox_unlock_files
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 1
    functionsReached:
    - mbox_lock_list
    linkageType: ''
    returnType: int
    signature: int mbox_unlock_files(struct mbox_lock_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:841,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:845,1
    - Dst: mbox_update_locking
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:850,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:857,1
    - Dst: istream_raw_mbox_set_unlocked
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:867,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:869,1
    - Dst: mbox_unlock_files
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:875,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - mbox
    - lock_id
    argTypes:
    - struct mbox_mailbox*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 835
    functionDepth: 5
    functionLinenumber: 835
    functionLinenumberEnd: 876
    functionName: mbox_unlock
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 5
    functionsReached:
    - i_zero
    - istream_raw_mbox_set_unlocked
    - mbox_unlock_files
    - i_assert
    - mbox_update_locking
    linkageType: ''
    returnType: int
    signature: int mbox_unlock(struct mbox_mailbox *mbox, unsigned int lock_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 882
    functionName: mbox_get_cur_lock_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mbox_get_cur_lock_id(struct mbox_mailbox *mbox)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_touch
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:890,1
    - Dst: mbox_dotlock_privileged_op
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c:892,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mbox
    argTypes:
    - struct mbox_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 884
    functionDepth: 7
    functionLinenumber: 884
    functionLinenumberEnd: 895
    functionName: mbox_dotlock_touch
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-lock.c
    functionUses: 1
    functionsReached:
    - mbox_dotlock_privileged_op
    - file_dotlock_touch
    linkageType: ''
    returnType: void
    signature: void mbox_dotlock_touch(struct mbox_mailbox *mbox)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:31,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:32,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rstream
    argTypes:
    - struct raw_mbox_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: mbox_istream_log_read_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - i_stream_get_name
    - i_error
    linkageType: ''
    returnType: void
    signature: void mbox_istream_log_read_error(struct raw_mbox_istream *rstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:41,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:42,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 46
    functionName: i_stream_raw_mbox_destroy
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_stream_seek
    linkageType: ''
    returnType: void
    signature: void i_stream_raw_mbox_destroy(struct iostream_private *stream)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:58,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:59,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:71,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:72,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:87,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:92,1
    - Dst: mbox_from_parse
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:93,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:97,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:105,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:109,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:117,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:119,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:120,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:124,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:127,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:138,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 59
    argCount: 1
    argNames:
    - rstream
    argTypes:
    - struct raw_mbox_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 142
    functionName: mbox_read_from_line
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 1
    functionsReached:
    - io_stream_set_error
    - i_stream_get_data
    - memchr
    - mbox_from_parse
    - i_stream_skip
    - memcmp
    - i_assert
    - i_free
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int mbox_read_from_line(struct raw_mbox_istream *rstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:162,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - rstream
    - pos
    argTypes:
    - struct raw_mbox_istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 167
    functionName: handle_end_of_mail
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void handle_end_of_mail(struct raw_mbox_istream *rstream, size_t pos)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:182,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:183,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:192,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:199,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:209,1
    - Dst: mbox_istream_log_read_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:215,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:240,1
    - Dst: handle_end_of_mail
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:254,1
    - Dst: i_stream_raw_mbox_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:255,1
    - Dst: i_stream_raw_mbox_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:266,1
    - Dst: mbox_read_from_line
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:268,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:269,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:272,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:275,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:284,1
    - Dst: i_stream_raw_mbox_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:286,1
    - Dst: mbox_from_parse
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:331,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:338,1
    - Dst: handle_end_of_mail
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:343,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:373,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:376,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:379,1
    - Dst: i_stream_raw_mbox_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:390,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:391,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:394,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 148
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 399
    functionName: i_stream_raw_mbox_read
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 1
    functionsReached:
    - mbox_istream_log_read_error
    - handle_end_of_mail
    - i_stream_raw_mbox_read
    - io_stream_set_error
    - i_error
    - i_stream_get_data
    - mbox_from_parse
    - i_stream_seek
    - mbox_read_from_line
    - i_stream_get_name
    - i_assert
    - i_free
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_raw_mbox_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 412
    functionName: i_stream_raw_mbox_seek
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void i_stream_raw_mbox_seek(struct istream_private *stream,\n\t\t\t\t
      \  uoff_t v_offset, bool mark ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 423
    functionName: i_stream_raw_mbox_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_stream_sync
    linkageType: ''
    returnType: void
    signature: void i_stream_raw_mbox_sync(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:431,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 441
    functionName: i_stream_raw_mbox_stat
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: int i_stream_raw_mbox_stat(struct istream_private *stream, bool exact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:447,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:449,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 468
    functionName: i_stream_create_raw_mbox
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 1
    functionsReached:
    - i_stream_create
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_raw_mbox(struct istream *input)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:481,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:484,1
    - Dst: mbox_istream_log_read_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:486,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:494,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:497,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:504,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:505,1
    - Dst: mbox_istream_log_read_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:509,1
    - Dst: mbox_from_parse
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:514,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:518,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 1
    argNames:
    - rstream
    argTypes:
    - struct raw_mbox_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 521
    functionName: istream_raw_mbox_is_valid_from
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - mbox_istream_log_read_error
    - i_stream_get_data
    - memchr
    - mbox_from_parse
    - memcmp
    - i_free
    - i_stream_read_bytes
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int istream_raw_mbox_is_valid_from(struct raw_mbox_istream *rstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 531
    functionName: istream_raw_mbox_get_start_offset
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t istream_raw_mbox_get_start_offset(struct istream *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:539,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:542,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:545,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:546,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - stream
    - hdr_offset_r
    argTypes:
    - struct istream*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 555
    functionName: istream_raw_mbox_get_header_offset
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 2
    functionsReached:
    - i_stream_get_name
    - i_stream_read
    - i_assert
    - i_error
    linkageType: ''
    returnType: int
    signature: "int istream_raw_mbox_get_header_offset(struct istream *stream,\n\t\t\t\t
      \      uoff_t *hdr_offset_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:564,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:572,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:574,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:574,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:576,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:578,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:580,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:583,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:589,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - stream
    - body_offset_r
    argTypes:
    - struct istream*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 592
    functionName: istream_raw_mbox_get_body_offset
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_stream_get_data_size
    - i_error
    - i_stream_skip
    - i_stream_seek
    - i_stream_get_name
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: "int istream_raw_mbox_get_body_offset(struct istream *stream,\n\t\t\t\t
      \    uoff_t *body_offset_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:604,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:605,1
    - Dst: istream_raw_mbox_get_body_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:607,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:630,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:634,1
    - Dst: istream_raw_mbox_is_valid_from
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:635,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:638,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:650,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:651,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:652,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:656,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 3
    argNames:
    - stream
    - expected_body_size
    - body_size_r
    argTypes:
    - struct istream*
    - uoff_t
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 594
    functionDepth: 4
    functionLinenumber: 594
    functionLinenumberEnd: 660
    functionName: istream_raw_mbox_get_body_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 1
    functionsReached:
    - i_stream_skip
    - istream_raw_mbox_get_body_offset
    - i_stream_seek
    - istream_raw_mbox_is_valid_from
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int istream_raw_mbox_get_body_size(struct istream *stream,\n\t\t\t\t
      \  uoff_t expected_body_size,\n\t\t\t\t   uoff_t *body_size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:667,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 672
    functionName: istream_raw_mbox_get_received_time
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_stream_read
    - i_assert
    linkageType: ''
    returnType: time_t
    signature: time_t istream_raw_mbox_get_received_time(struct istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:679,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 684
    functionName: istream_raw_mbox_get_sender
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_stream_read
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *istream_raw_mbox_get_sender(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 686
    functionDepth: 1
    functionLinenumber: 686
    functionLinenumberEnd: 694
    functionName: istream_raw_mbox_has_crlf_ending
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool istream_raw_mbox_has_crlf_ending(struct istream *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: istream_raw_mbox_get_body_size
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:702,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:710,1
    - Dst: i_stream_seek_mark
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:720,1
    - Dst: i_stream_seek_mark
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:721,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - stream
    - expected_body_size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 696
    functionDepth: 5
    functionLinenumber: 696
    functionLinenumberEnd: 726
    functionName: istream_raw_mbox_next
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_stream_seek_mark
    - istream_raw_mbox_get_body_size
    linkageType: ''
    returnType: int
    signature: int istream_raw_mbox_next(struct istream *stream, uoff_t expected_body_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:734,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:738,1
    - Dst: istream_raw_mbox_next
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:747,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:760,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:762,1
    - Dst: i_stream_seek_mark
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:771,1
    - Dst: i_stream_seek_mark
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:772,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:775,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - stream
    - offset
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 728
    functionDepth: 6
    functionLinenumber: 728
    functionLinenumberEnd: 777
    functionName: istream_raw_mbox_seek
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 4
    functionsReached:
    - i_free_and_null
    - i_stream_read
    - istream_raw_mbox_next
    - i_assert
    - i_free
    - i_stream_seek_mark
    linkageType: ''
    returnType: int
    signature: int istream_raw_mbox_seek(struct istream *stream, uoff_t offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - offset
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 788
    functionName: istream_raw_mbox_set_next_offset
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void istream_raw_mbox_set_next_offset(struct istream *stream, uoff_t
      offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 790
    functionDepth: 0
    functionLinenumber: 790
    functionLinenumberEnd: 796
    functionName: istream_raw_mbox_is_eof
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool istream_raw_mbox_is_eof(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 804
    functionName: istream_raw_mbox_is_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool istream_raw_mbox_is_corrupted(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 806
    functionDepth: 0
    functionLinenumber: 806
    functionLinenumberEnd: 812
    functionName: istream_raw_mbox_set_locked
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void istream_raw_mbox_set_locked(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 814
    functionDepth: 0
    functionLinenumber: 814
    functionLinenumberEnd: 821
    functionName: istream_raw_mbox_set_unlocked
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void istream_raw_mbox_set_unlocked(struct istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:25,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - flags_list
    argTypes:
    - struct mbox_sync_mail_context*
    - struct mbox_flag_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 27
    functionName: status_flags_append
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void status_flags_append(struct mbox_sync_mail_context *ctx,\n\t\t\t\tconst
      struct mbox_flag_type *flags_list)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:35,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:54,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:64,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:67,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 4
    argNames:
    - ctx
    - pos
    - need
    - have
    argTypes:
    - struct mbox_sync_mail_context*
    - size_t
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 71
    functionName: mbox_sync_move_buffer
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 2
    functionsReached:
    - str_delete
    - buffer_copy
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_move_buffer(struct mbox_sync_mail_context *ctx,\n\t\t\t
      \  size_t pos, size_t need, size_t have)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:92,1
    - Dst: mbox_sync_move_buffer
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:111,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:114,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - pos
    - flags_list
    argTypes:
    - struct mbox_sync_mail_context*
    - size_t
    - struct mbox_flag_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 121
    functionName: status_flags_replace
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - buffer_get_space_unsafe
    - mbox_sync_move_buffer
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: void
    signature: "void status_flags_replace(struct mbox_sync_mail_context *ctx, size_t
      pos,\n\t\t\t\t const struct mbox_flag_type *flags_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:128,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:134,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:136,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:138,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:139,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:142,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:144,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:146,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:147,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:149,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - sync_ctx
    - dest
    - keyword_indexes_arr
    argTypes:
    - struct mbox_sync_context*
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 151
    functionName: keywords_append
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_len
    - array_get
    - str_append
    - i_assert
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: "void keywords_append(struct mbox_sync_context *sync_ctx, string_t
      *dest,\n\t\tconst ARRAY_TYPE(keyword_indexes) *keyword_indexes_arr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:158,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:164,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:165,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:169,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:175,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:178,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:179,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:181,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:182,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:184,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - dest
    - startpos
    argTypes:
    - struct mbox_sync_mail_context*
    - string_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 186
    functionName: keywords_append_all
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_data
    - str_len
    - array_get
    - str_append
    - INDEX_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: "void keywords_append_all(struct mbox_sync_mail_context *ctx, string_t
      *dest,\n\t\t    size_t startpos)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:192,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:194,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:196,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:201,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:203,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:204,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:207,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:208,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:212,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:215,1
    - Dst: keywords_append_all
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:217,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:218,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:222,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:223,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:224,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:231,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:232,1
    - Dst: status_flags_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:233,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:234,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:239,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:240,1
    - Dst: status_flags_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:241,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:242,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:248,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:249,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:250,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:251,1
    - Dst: keywords_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:252,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:254,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:259,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:263,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:270,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 53
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 271
    functionName: mbox_sync_add_missing_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - status_flags_append
    - str_append_c
    - str_data
    - str_len
    - keywords_append_all
    - array_count
    - str_append
    - array_is_created
    - i_assert
    - keywords_append
    linkageType: ''
    returnType: void
    signature: void mbox_sync_add_missing_headers(struct mbox_sync_mail_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: status_flags_replace
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 273
    functionDepth: 3
    functionLinenumber: 273
    functionLinenumberEnd: 279
    functionName: mbox_sync_update_status
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - status_flags_replace
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_status(struct mbox_sync_mail_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: status_flags_replace
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: mbox_sync_update_xstatus
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - status_flags_replace
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_xstatus(struct mbox_sync_mail_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:299,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:301,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:304,1
    - Dst: mbox_sync_move_buffer
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:320,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:320,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:321,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - pos
    - new_line
    argTypes:
    - struct mbox_sync_mail_context*
    - size_t
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 322
    functionName: mbox_sync_update_line
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - str_c
    - strchr
    - str_len
    - strlen
    - buffer_copy
    - mbox_sync_move_buffer
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_update_line(struct mbox_sync_mail_context *ctx,\n\t\t\t\t
      \ size_t pos, string_t *new_line)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:331,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:332,1
    - Dst: keywords_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:333,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:334,1
    - Dst: mbox_sync_update_line
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 324
    functionDepth: 3
    functionLinenumber: 324
    functionLinenumberEnd: 336
    functionName: mbox_sync_update_xkeywords
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - mbox_sync_update_line
    - array_is_created
    - keywords_append
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_xkeywords(struct mbox_sync_mail_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:343,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:356,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:357,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:360,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:362,1
    - Dst: keywords_append_all
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:364,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:365,1
    - Dst: mbox_sync_update_line
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:367,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 338
    functionDepth: 3
    functionLinenumber: 338
    functionLinenumberEnd: 368
    functionName: mbox_sync_update_x_imap_base
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - str_len
    - mbox_sync_update_line
    - keywords_append_all
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_x_imap_base(struct mbox_sync_mail_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:378,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:379,1
    - Dst: mbox_sync_update_line
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 370
    functionDepth: 3
    functionLinenumber: 370
    functionLinenumberEnd: 381
    functionName: mbox_sync_update_x_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - mbox_sync_update_line
    - t_str_new
    - str_printfa
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_x_uid(struct mbox_sync_mail_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:385,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:388,1
    - Dst: mbox_sync_update_status
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:390,1
    - Dst: mbox_sync_update_xstatus
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:391,1
    - Dst: mbox_sync_update_xkeywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:392,1
    - Dst: mbox_sync_update_x_imap_base
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:394,1
    - Dst: mbox_sync_update_x_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:395,1
    - Dst: mbox_sync_add_missing_headers
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 383
    functionDepth: 4
    functionLinenumber: 383
    functionLinenumberEnd: 399
    functionName: mbox_sync_update_header_real
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - mbox_sync_update_x_uid
    - mbox_sync_update_xstatus
    - mbox_sync_update_status
    - ENUM_NEGATE
    - mbox_sync_add_missing_headers
    - mbox_sync_update_x_imap_base
    - mbox_sync_update_xkeywords
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_header_real(struct mbox_sync_mail_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_sync_update_header_real
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_sync_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 401
    functionDepth: 5
    functionLinenumber: 401
    functionLinenumberEnd: 405
    functionName: mbox_sync_update_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 1
    functionsReached:
    - mbox_sync_update_header_real
    linkageType: ''
    returnType: void
    signature: void mbox_sync_update_header(struct mbox_sync_mail_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:416,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:419,1
    - Dst: mbox_sync_update_status
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:420,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:425,1
    - Dst: mbox_sync_update_xstatus
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:427,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:429,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:430,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:432,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:433,1
    - Dst: mbox_sync_update_xkeywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:434,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:436,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:438,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:440,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:441,1
    - Dst: mbox_sync_update_xkeywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:443,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:444,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:446,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:447,1
    - Dst: mbox_sync_update_xkeywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:449,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:452,1
    - Dst: mbox_sync_update_x_imap_base
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:455,1
    - Dst: mbox_sync_update_x_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:456,1
    - Dst: mbox_sync_add_missing_headers
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:457,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mbox_sync_mail_context*
    - struct mbox_sync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 408
    functionDepth: 4
    functionLinenumber: 408
    functionLinenumberEnd: 458
    functionName: mbox_sync_update_header_from_real
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 0
    functionsReached:
    - mbox_sync_update_x_uid
    - mbox_sync_update_xstatus
    - mbox_sync_update_status
    - ENUM_NEGATE
    - p_array_init
    - mbox_sync_add_missing_headers
    - mbox_sync_update_x_imap_base
    - array_cmp
    - array_count
    - array_clear
    - mbox_sync_update_xkeywords
    - array_is_created
    - i_assert
    - array_append_array
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_update_header_from_real(struct mbox_sync_mail_context
      *ctx,\n\t\t\t\t  const struct mbox_sync_mail *mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_sync_update_header_from_real
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mbox_sync_mail_context*
    - struct mbox_sync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 460
    functionDepth: 5
    functionLinenumber: 460
    functionLinenumberEnd: 465
    functionName: mbox_sync_update_header_from
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c
    functionUses: 1
    functionsReached:
    - mbox_sync_update_header_from_real
    linkageType: ''
    returnType: void
    signature: "void mbox_sync_update_header_from(struct mbox_sync_mail_context *ctx,\n\t\t\t\t
      \ const struct mbox_sync_mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_TRANSCTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:21,1
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:22,1
    - Dst: mbox_unlock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 19
    functionDepth: 6
    functionLinenumber: 19
    functionLinenumberEnd: 30
    functionName: mbox_prepare_resync
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - mbox_unlock
    - i_assert
    - MBOX_TRANSCTX
    - MBOX_MAILBOX
    linkageType: ''
    returnType: void
    signature: void mbox_prepare_resync(struct mail *mail)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_TRANSCTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:35,1
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:36,1
    - Dst: mail_stream_access_start
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:44,1
    - Dst: istream_raw_mbox_is_corrupted
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:48,1
    - Dst: mbox_prepare_resync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:59,1
    - Dst: mbox_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:61,1
    - Dst: mbox_get_cur_lock_id
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:64,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:68,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:73,1
    - Dst: mbox_lock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:78,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:80,1
    - Dst: mbox_file_open_stream
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:83,1
    - Dst: mbox_file_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:86,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:94,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:102,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 46
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 32
    functionDepth: 13
    functionLinenumber: 32
    functionLinenumberEnd: 105
    functionName: mbox_mail_seek
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - mail_set_expunged
    - mbox_file_seek
    - i_unreached
    - mbox_file_open_stream
    - mail_set_critical
    - mbox_lock
    - MBOX_TRANSCTX
    - mailbox_set_index_error
    - istream_raw_mbox_is_corrupted
    - mail_stream_access_start
    - mbox_get_cur_lock_id
    - mbox_prepare_resync
    - MBOX_MAILBOX
    - i_assert
    - mail_index_refresh
    - mbox_sync
    linkageType: ''
    returnType: int
    signature: int mbox_mail_seek(struct index_mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:109,1
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:111,1
    - Dst: index_mail_get_received_date
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:113,1
    - Dst: mbox_mail_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:116,1
    - Dst: istream_raw_mbox_get_received_time
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 14
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: mbox_mail_get_received_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_received_date
    - INDEX_MAIL
    - mbox_mail_seek
    - MBOX_MAILBOX
    - istream_raw_mbox_get_received_time
    linkageType: ''
    returnType: int
    signature: int mbox_mail_get_received_date(struct mail *_mail, time_t *date_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:132,1
    - Dst: index_mail_get_save_date
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _mail
    - date_r
    argTypes:
    - struct mail*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 130
    functionDepth: 11
    functionLinenumber: 130
    functionLinenumberEnd: 144
    functionName: mbox_mail_get_save_date
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_get_save_date
    linkageType: ''
    returnType: int
    signature: int mbox_mail_get_save_date(struct mail *_mail, time_t *date_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:152,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:160,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:162,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:163,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:164,1
    - Dst: mail_index_is_expunged
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:167,1
    - Dst: mail_set_expunged
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - mail
    - value_r
    argTypes:
    - struct index_mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 173
    functionName: mbox_mail_get_md5_header
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - mail_set_expunged
    - mail_index_lookup_ext
    - mail_index_is_expunged
    - memcmp
    - MBOX_MAILBOX
    - binary_to_hex
    linkageType: ''
    returnType: int
    signature: int mbox_mail_get_md5_header(struct index_mail *mail, const char **value_r)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:179,1
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:180,1
    - Dst: mbox_mail_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:188,1
    - Dst: istream_raw_mbox_get_sender
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:191,1
    - Dst: mbox_mail_get_md5_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:195,1
    - Dst: istream_raw_mbox_get_start_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:206,1
    - Dst: mbox_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:210,1
    - Dst: istream_raw_mbox_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:214,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:216,1
    - Dst: mbox_mail_get_md5_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:221,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:222,1
    - Dst: index_mail_get_special
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:230,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 3
    argNames:
    - _mail
    - field
    - value_r
    argTypes:
    - struct mail*
    - enum mail_fetch_field
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 175
    functionDepth: 20
    functionLinenumber: 175
    functionLinenumberEnd: 231
    functionName: mbox_mail_get_special
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - mbox_mail_get_md5_header
    - istream_raw_mbox_get_sender
    - istream_raw_mbox_seek
    - e_error
    - INDEX_MAIL
    - mbox_mail_seek
    - MBOX_MAILBOX
    - mbox_sync
    - index_mail_get_special
    - istream_raw_mbox_get_start_offset
    linkageType: ''
    returnType: int
    signature: "int mbox_mail_get_special(struct mail *_mail, enum mail_fetch_field
      field,\n\t\t      const char **value_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:236,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:245,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:255,1
    - Dst: mbox_sync_header_refresh
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:256,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:259,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:260,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:261,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:262,1
    - Dst: mbox_file_lookup_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:265,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:278,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - mail
    - next_offset_r
    argTypes:
    - struct index_mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 233
    functionDepth: 5
    functionLinenumber: 233
    functionLinenumberEnd: 280
    functionName: mbox_mail_get_next_offset
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mbox_sync_header_refresh
    - mail_index_lookup_seq
    - mail_index_view_open
    - mail_index_get_header
    - mbox_file_lookup_offset
    - MBOX_MAILBOX
    - i_assert
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: int mbox_mail_get_next_offset(struct index_mail *mail, uoff_t *next_offset_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:284,1
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:286,1
    - Dst: index_mail_get_physical_size
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:291,1
    - Dst: mail_get_stream
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:296,1
    - Dst: istream_raw_mbox_get_body_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:300,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:301,1
    - Dst: mbox_mail_get_next_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:307,1
    - Dst: istream_raw_mbox_get_body_size
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:313,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:315,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:322,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - _mail
    - size_r
    argTypes:
    - struct mail*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 282
    functionDepth: 14
    functionLinenumber: 282
    functionLinenumberEnd: 324
    functionName: mbox_mail_get_physical_size
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_get_physical_size
    - mail_set_critical
    - istream_raw_mbox_get_body_size
    - INDEX_MAIL
    - istream_raw_mbox_get_body_offset
    - i_stream_seek
    - mail_get_stream
    - MBOX_MAILBOX
    - mbox_mail_get_next_offset
    linkageType: ''
    returnType: int
    signature: int mbox_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:328,1
    - Dst: mbox_mail_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:333,1
    - Dst: mbox_mail_get_next_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:336,1
    - Dst: mbox_mail_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:338,1
    - Dst: mbox_mail_get_next_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:340,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:342,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:342,1
    - Dst: istream_raw_mbox_get_header_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:347,1
    - Dst: mail_set_critical
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:348,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:352,1
    - Dst: istream_raw_mbox_set_next_offset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:355,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:357,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:359,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:363,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - mail
    argTypes:
    - struct index_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 326
    functionDepth: 14
    functionLinenumber: 326
    functionLinenumberEnd: 365
    functionName: mbox_mail_init_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - istream_raw_mbox_set_next_offset
    - mail_set_critical
    - mail_event
    - i_stream_create_limit
    - istream_raw_mbox_get_header_offset
    - i_stream_create_header_filter
    - e_warning
    - mbox_mail_seek
    - i_stream_seek
    - MBOX_MAILBOX
    - i_stream_unref
    - mbox_mail_get_next_offset
    linkageType: ''
    returnType: int
    signature: int mbox_mail_init_stream(struct index_mail *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:372,1
    - Dst: mbox_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:375,1
    - Dst: index_mail_init_stream
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:379,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - _mail
    - ATTR_UNUSED
    - hdr_size
    - body_size
    - stream_r
    argTypes:
    - struct mail*
    - bool
    - struct message_size*
    - struct message_size*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 367
    functionDepth: 17
    functionLinenumber: 367
    functionLinenumberEnd: 380
    functionName: mbox_mail_get_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - mbox_mail_init_stream
    - INDEX_MAIL
    - index_mail_init_stream
    linkageType: ''
    returnType: int
    signature: "int mbox_mail_get_stream(struct mail *_mail, bool get_body ATTR_UNUSED,\n\t\t\t\tstruct
      message_size *hdr_size,\n\t\t\t\tstruct message_size *body_size,\n\t\t\t\tstruct
      istream **stream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:384,1
    - Dst: index_mail_set_seq
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _mail
    - seq
    - saving
    argTypes:
    - struct mail*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 382
    functionDepth: 12
    functionLinenumber: 382
    functionLinenumberEnd: 388
    functionName: mbox_mail_set_seq
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - INDEX_MAIL
    - index_mail_set_seq
    linkageType: ''
    returnType: void
    signature: void mbox_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_MAIL
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:392,1
    - Dst: index_mail_set_uid
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _mail
    - uid
    argTypes:
    - struct mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 390
    functionDepth: 13
    functionLinenumber: 390
    functionLinenumberEnd: 398
    functionName: mbox_mail_set_uid
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-mail.c
    functionUses: 0
    functionsReached:
    - index_mail_set_uid
    - INDEX_MAIL
    linkageType: ''
    returnType: bool
    signature: bool mbox_mail_set_uid(struct mail *_mail, uint32_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: MBOX_SAVECTX
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MBOX_SAVECTX(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbox_ostream_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - func
    argTypes:
    - struct mbox_save_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 6
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: ostream_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 19
    functionsReached:
    - mbox_ostream_set_syscall_error
    linkageType: ''
    returnType: void
    signature: void ostream_error(struct mbox_save_context *ctx, const char *func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ostream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 7
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: write_stream_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - ostream_error
    linkageType: ''
    returnType: void
    signature: void write_stream_error(struct mbox_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ostream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 7
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: lseek_stream_error
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - ostream_error
    linkageType: ''
    returnType: void
    signature: void lseek_stream_error(struct mbox_save_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:88,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:89,1
    - Dst: lseek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:99,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:100,1
    - Dst: read
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:104,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:105,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:110,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:111,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - offset
    argTypes:
    - struct mbox_save_context*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 76
    functionDepth: 6
    functionLinenumber: 76
    functionLinenumberEnd: 118
    functionName: mbox_seek_to_end
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - lseek
    - mbox_set_syscall_error
    - write_full
    - read
    - fstat
    linkageType: ''
    returnType: int
    signature: int mbox_seek_to_end(struct mbox_save_context *ctx, uoff_t *offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:122,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 8
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: mbox_append_lf
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - o_stream_send
    - write_stream_error
    linkageType: ''
    returnType: int
    signature: int mbox_append_lf(struct mbox_save_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:143,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:145,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:146,1
    - Dst: mbox_from_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:153,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:155,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - received_date
    - from_envelope
    argTypes:
    - struct mbox_save_context*
    - time_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 130
    functionDepth: 8
    functionLinenumber: 130
    functionLinenumberEnd: 157
    functionName: write_from_line
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 1
    functionsReached:
    - strchr
    - o_stream_send_str
    - my_hostdomain
    - mbox_from_create
    - t_strconcat
    - write_stream_error
    linkageType: ''
    returnType: int
    signature: "int write_from_line(struct mbox_save_context *ctx, time_t received_date,\n\t\t\t
      \  const char *from_envelope)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:167,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:177,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:178,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:179,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:183,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:184,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:187,1
    - Dst: lseek_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:189,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:193,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:194,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:195,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:199,1
    - Dst: lseek_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:200,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 161
    functionDepth: 8
    functionLinenumber: 161
    functionLinenumberEnd: 204
    functionName: mbox_write_content_length
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - dec2str
    - o_stream_seek
    - lseek_stream_error
    - strlen
    - t_strdup_printf
    - o_stream_send
    - o_stream_flush
    - i_assert
    - write_stream_error
    linkageType: ''
    returnType: int
    signature: int mbox_write_content_length(struct mbox_save_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:208,1
    - Dst: MBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:209,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:215,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:216,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:217,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 224
    functionName: mbox_save_init_sync
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - mail_index_view_open
    - mail_index_get_header
    - MBOX_SAVECTX
    - MBOX_MAILBOX
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void mbox_save_init_sync(struct mailbox_transaction_context *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - str
    - flags
    - flags_list
    argTypes:
    - string_t*
    - enum mail_flags
    - struct mbox_flag_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 236
    functionName: status_flags_append
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 1
    functionsReached:
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void status_flags_append(string_t *str, enum mail_flags flags,\n\t\t\t\tconst
      struct mbox_flag_type *flags_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:241,1
    - Dst: status_flags_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:242,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:243,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:246,1
    - Dst: status_flags_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:247,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - str
    - flags
    argTypes:
    - string_t*
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 250
    functionName: mbox_save_append_flag_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - str_append
    - status_flags_append
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void mbox_save_append_flag_headers(string_t *str, enum mail_flags flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_keywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:262,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:263,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:265,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:268,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:270,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:271,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:274,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:275,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:276,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - keywords
    argTypes:
    - struct mbox_save_context*
    - struct mail_keywords*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 278
    functionName: mbox_save_append_keyword_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_len
    - mail_index_get_keywords
    - array_get
    - str_append_data
    - str_append
    - memset
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mbox_save_append_keyword_headers(struct mbox_save_context *ctx,\n\t\t\t\t
      struct mail_keywords *keywords)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mbox_is_backend_readonly
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:289,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:290,1
    - Dst: mbox_lock
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:298,1
    - Dst: mbox_file_open
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:303,1
    - Dst: mbox_sync_has_changed
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:308,1
    - Dst: mbox_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:315,1
    - Dst: mbox_save_init_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:317,1
    - Dst: mbox_seek_to_end
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:322,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:325,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:326,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:329,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - t
    argTypes:
    - struct mbox_save_context*
    - struct mbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 280
    functionDepth: 13
    functionLinenumber: 280
    functionLinenumberEnd: 332
    functionName: mbox_save_init_file
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - mbox_is_backend_readonly
    - mbox_save_init_sync
    - mbox_seek_to_end
    - mbox_lock
    - o_stream_cork
    - mbox_file_open
    - o_stream_create_fd_file
    - mbox_sync
    - i_assert
    - mbox_sync_has_changed
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int mbox_save_init_file(struct mbox_save_context *ctx,\n\t\t    struct
      mbox_transaction_context *t)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:340,1
    - Dst: struct mbox_save_context*::mbox::md5_v::more
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - hdr
    - matched
    - ctx
    argTypes:
    - struct header_filter_istream*
    - struct message_header_line*
    - bool*
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 351
    functionName: save_header_callback
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - struct mbox_save_context*::mbox::md5_v::more
    - str_begins_with
    linkageType: ''
    returnType: void
    signature: "void save_header_callback(struct header_filter_istream *input ATTR_UNUSED,\n\t\t
      \    struct message_header_line *hdr,\n\t\t     bool *matched, struct mbox_save_context
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:360,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:361,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:362,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:365,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:366,1
    - Dst: md5_get_digest
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:368,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:370,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:371,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:372,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:373,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:375,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 376
    functionName: mbox_save_x_delivery_id
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - random_fill
    - t_str_new
    - str_append_c
    - str_c
    - t_buffer_create
    - md5_get_digest
    - base64_encode
    - i_strdup
    - buffer_append_space_unsafe
    - str_append
    linkageType: ''
    returnType: void
    signature: void mbox_save_x_delivery_id(struct mbox_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:384,1
    - Dst: mbox_save_x_delivery_id
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:401,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:405,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:405,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:408,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:409,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mbox_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 411
    functionName: mbox_save_get_input_stream
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_stream_create_from_data
    - i_stream_create_header_filter
    - i_stream_unref
    - i_stream_create_concat
    - mbox_save_x_delivery_id
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      mbox_save_get_input_stream(struct mbox_save_context *ctx, struct istream *input)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_MAILBOX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:428,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:431,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:434,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct mailbox_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 444
    functionName: mbox_save_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - i_assert
    - str_new
    - i_new
    - MBOX_MAILBOX
    linkageType: ''
    returnType: struct mail_save_context
    signature: 'struct mail_save_context *

      mbox_save_alloc(struct mailbox_transaction_context *t)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:448,1
    - Dst: MBOX_TRANSCTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:450,1
    - Dst: mbox_save_init_file
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:461,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:469,1
    - Dst: struct mbox_save_context*::mbox::md5_v::init
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:472,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:479,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:482,1
    - Dst: mail_index_append
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:484,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:485,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:486,1
    - Dst: mail_index_update_keywords
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:488,1
    - Dst: mail_index_update_modseq
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:493,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:499,1
    - Dst: mail_set_seq_saving
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:504,1
    - Dst: mbox_save_append_flag_headers
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:506,1
    - Dst: mbox_save_append_keyword_headers
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:507,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:508,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:510,1
    - Dst: write_from_line
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:516,1
    - Dst: mbox_save_get_input_stream
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:519,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 2
    argNames:
    - _ctx
    - input
    argTypes:
    - struct mail_save_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 446
    functionDepth: 14
    functionLinenumber: 446
    functionLinenumberEnd: 521
    functionName: mbox_save_begin
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - mbox_save_append_flag_headers
    - mail_index_update_modseq
    - mail_set_seq_saving
    - mail_index_append
    - str_append_c
    - struct mbox_save_context*::mbox::md5_v::init
    - mail_index_update_keywords
    - mbox_save_append_keyword_headers
    - mbox_save_init_file
    - i_assert
    - mail_index_update_flags
    - ENUM_NEGATE
    - MBOX_TRANSCTX
    - mail_index_update_ext
    - MBOX_SAVECTX
    - str_truncate
    - write_from_line
    - mbox_save_get_input_stream
    linkageType: ''
    returnType: int
    signature: int mbox_save_begin(struct mail_save_context *_ctx, struct istream
      *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:528,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:530,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:531,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:535,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 523
    functionDepth: 8
    functionLinenumber: 523
    functionLinenumberEnd: 538
    functionName: mbox_save_body_input
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - i_stream_skip
    - i_stream_get_data
    - write_stream_error
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int mbox_save_body_input(struct mbox_save_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:544,1
    - Dst: mbox_save_body_input
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:545,1
    - Dst: index_mail_cache_parse_continue
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:549,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 540
    functionDepth: 15
    functionLinenumber: 540
    functionLinenumberEnd: 556
    functionName: mbox_save_body
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_read
    - index_mail_cache_parse_continue
    - mbox_save_body_input
    linkageType: ''
    returnType: int
    signature: int mbox_save_body(struct mbox_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:560,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:564,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:564,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:565,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 558
    functionDepth: 8
    functionLinenumber: 558
    functionLinenumberEnd: 571
    functionName: mbox_save_finish_headers
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - o_stream_send
    - i_assert
    - write_stream_error
    linkageType: ''
    returnType: int
    signature: int mbox_save_finish_headers(struct mbox_save_context *ctx)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:575,1
    - Dst: mbox_save_body
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:586,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:589,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:602,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:603,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:607,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:611,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:612,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:615,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:617,1
    - Dst: index_mail_cache_parse_continue
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:618,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:623,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:624,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:625,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:630,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:638,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:646,1
    - Dst: struct mbox_save_context*::mbox::md5_v::more
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:647,1
    - Dst: struct mbox_save_context*::mbox::md5_v::finish
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:649,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:650,1
    - Dst: mbox_save_finish_headers
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:655,1
    - Dst: mbox_save_body_input
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:659,1
    - Dst: mbox_save_body
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:661,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 573
    functionDepth: 16
    functionLinenumber: 573
    functionLinenumberEnd: 662
    functionName: mbox_save_continue
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - mbox_save_body
    - i_zero
    - mbox_save_finish_headers
    - index_mail_cache_parse_continue
    - strlen
    - struct mbox_save_context*::mbox::md5_v::finish
    - i_stream_skip
    - e_error
    - MBOX_SAVECTX
    - i_stream_get_error
    - o_stream_send
    - struct mbox_save_context*::mbox::md5_v::more
    - mail_index_update_ext
    - i_stream_get_name
    - i_assert
    - i_stream_read_more
    - write_stream_error
    - mbox_save_body_input
    linkageType: ''
    returnType: int
    signature: int mbox_save_continue(struct mail_save_context *_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:666,1
    - Dst: mbox_save_finish_headers
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:669,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:673,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:674,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:679,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:681,1
    - Dst: mbox_write_content_length
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:681,1
    - Dst: mbox_append_lf
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:682,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 664
    functionDepth: 9
    functionLinenumber: 664
    functionLinenumberEnd: 685
    functionName: mbox_save_finish
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - mbox_save_finish_headers
    - if
    - MBOX_SAVECTX
    - mbox_append_lf
    - o_stream_flush
    - i_assert
    - write_stream_error
    - mbox_write_content_length
    linkageType: ''
    returnType: int
    signature: int mbox_save_finish(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:712,1
    - Dst: mbox_save_finish
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 710
    functionDepth: 10
    functionLinenumber: 710
    functionLinenumberEnd: 716
    functionName: mbox_save_cancel
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - MBOX_SAVECTX
    - mbox_save_finish
    linkageType: ''
    returnType: void
    signature: void mbox_save_cancel(struct mail_save_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:720,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 722
    functionName: mbox_transaction_save_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - o_stream_destroy
    - str_free
    linkageType: ''
    returnType: void
    signature: void mbox_transaction_save_deinit(struct mbox_save_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:729,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:734,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:736,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:737,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mbox_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 724
    functionDepth: 6
    functionLinenumber: 724
    functionLinenumberEnd: 738
    functionName: mbox_save_truncate
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - i_assert
    - ftruncate
    - mbox_set_syscall_error
    linkageType: ''
    returnType: void
    signature: void mbox_save_truncate(struct mbox_save_context *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:742,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:748,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:749,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:751,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:752,1
    - Dst: mail_index_append_finish_uids
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:758,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:761,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:768,1
    - Dst: utime
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:783,1
    - Dst: mailbox_get_path
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:783,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:784,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:785,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:790,1
    - Dst: write_stream_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:791,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:795,1
    - Dst: mbox_set_syscall_error
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:796,1
    - Dst: mbox_save_truncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:797,1
    - Dst: mbox_transaction_save_deinit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:802,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:804,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 740
    functionDepth: 8
    functionLinenumber: 740
    functionLinenumberEnd: 806
    functionName: mbox_transaction_save_commit_pre
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - utime
    - mailbox_get_path
    - mail_index_update_header
    - mbox_save_truncate
    - fdatasync
    - mbox_set_syscall_error
    - mbox_transaction_save_deinit
    - mail_index_append_finish_uids
    - MBOX_SAVECTX
    - mail_index_update_header_ext
    - fstat
    - ENOACCESS
    - o_stream_flush
    - i_assert
    - i_free
    - write_stream_error
    linkageType: ''
    returnType: int
    signature: int mbox_transaction_save_commit_pre(struct mail_save_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:811,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:813,1
    - Dst: mbox_sync
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:818,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:821,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _ctx
    - ATTR_UNUSED
    argTypes:
    - struct mail_save_context*
    - struct mail_index_transaction_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 808
    functionDepth: 13
    functionLinenumber: 808
    functionLinenumberEnd: 822
    functionName: mbox_transaction_save_commit_post
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - MBOX_SAVECTX
    - i_assert
    - i_free
    - mbox_sync
    linkageType: ''
    returnType: void
    signature: "void mbox_transaction_save_commit_post(struct mail_save_context *_ctx,\n\t\t\t\t
      \      struct mail_index_transaction_commit_result *result ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MBOX_SAVECTX
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:826,1
    - Dst: mbox_save_cancel
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:829,1
    - Dst: mbox_save_truncate
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:831,1
    - Dst: mbox_transaction_save_deinit
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:832,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c:833,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 824
    functionDepth: 11
    functionLinenumber: 824
    functionLinenumberEnd: 834
    functionName: mbox_transaction_save_rollback
    functionSourceFile: /src/dovecot/src/lib-storage/index/mbox/mbox-save.c
    functionUses: 0
    functionsReached:
    - mbox_save_truncate
    - mbox_transaction_save_deinit
    - MBOX_SAVECTX
    - mbox_save_cancel
    - i_free
    linkageType: ''
    returnType: void
    signature: void mbox_transaction_save_rollback(struct mail_save_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:36,1
    - Dst: event_want_debug_log
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:36,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:37,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - list
    - function
    - path
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: subsread_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - mailbox_list_set_critical
    - event_want_debug_log
    - ENOACCESS
    linkageType: ''
    returnType: void
    signature: "void subsread_set_syscall_error(struct mailbox_list *list,\n\t\t\t\t
      \      const char *function, const char *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:49,1
    - Dst: event_want_debug_log
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:49,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:50,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - list
    - function
    - path
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 46
    functionDepth: 3
    functionLinenumber: 46
    functionLinenumberEnd: 57
    functionName: subswrite_set_syscall_error
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - mailbox_list_set_critical
    - event_want_debug_log
    - ENOACCESS
    linkageType: ''
    returnType: void
    signature: "void subswrite_set_syscall_error(struct mailbox_list *list,\n\t\t\t\t\tconst
      char *function, const char *path)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:63,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:70,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:72,1
    - Dst: subswrite_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:74,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:74,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:78,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - list
    - input
    - version_r
    argTypes:
    - struct mailbox_list*
    - struct istream*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: subsfile_list_read_header
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - subswrite_set_syscall_error
    - strlen
    - i_stream_skip
    - memcmp
    - i_stream_get_name
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: void
    signature: "void subsfile_list_read_header(struct mailbox_list *list, struct istream
      *input,\n\t\t\t  unsigned int *version_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:92,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:93,1
    - Dst: subswrite_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:97,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:104,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - list
    - path
    - input
    - failed_r
    - ignore_estale
    argTypes:
    - struct mailbox_list*
    - char*
    - struct istream*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 114
    functionName: next_line
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 64
    functionsReached:
    - subswrite_set_syscall_error
    - i_stream_next_line
    - i_stream_read
    - mailbox_list_set_critical
    linkageType: ''
    returnType: char
    signature: "char *next_line(struct mailbox_list *list, const char *path,\n\t\t\t
      \    struct istream *input, bool *failed_r,\n\t\t\t     bool ignore_estale)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:132,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:135,1
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:142,1
    - Dst: file_dotlock_open_group
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:143,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:152,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:154,1
    - Dst: mailbox_list_mkdir_root
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:155,1
    - Dst: file_dotlock_open_group
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:158,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:166,1
    - Dst: subswrite_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:169,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:175,1
    - Dst: subswrite_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:177,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:178,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:182,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:183,1
    - Dst: subsfile_list_read_header
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:184,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:188,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:189,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:191,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:197,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:199,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:201,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:202,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:204,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:205,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:207,1
    - Dst: next_line
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:210,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:212,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:220,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:221,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:223,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:228,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:229,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:234,1
    - Dst: subswrite_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:235,1
    - Dst: fsync
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:238,1
    - Dst: subswrite_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:239,1
    - Dst: o_stream_abort
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:245,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:247,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:250,1
    - Dst: subswrite_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:251,1
    - Dst: file_dotlock_replace
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:258,1
    - Dst: subswrite_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:259,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 103
    argCount: 5
    argNames:
    - list
    - path
    - temp_prefix
    - name
    - set
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 116
    functionDepth: 6
    functionLinenumber: 116
    functionLinenumberEnd: 265
    functionName: subsfile_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - str_c
    - file_dotlock_open_group
    - o_stream_cork
    - nfs_safe_open
    - next_line
    - str_append_tabescaped
    - mailbox_list_get_root_permissions
    - t_str_new
    - mailbox_list_mkdir_root
    - str_append_c
    - subswrite_set_syscall_error
    - fsync
    - i_stream_set_return_partial_line
    - o_stream_nsend
    - i_stream_destroy
    - i_zero
    - mailbox_list_set_error
    - strcasecmp
    - o_stream_abort
    - o_stream_create_fd_file
    - i_stream_create_fd_autoclose
    - o_stream_nsend_str
    - o_stream_destroy
    - file_dotlock_delete
    - strcmp
    - strrchr
    - o_stream_finish
    - t_strsplit
    - file_dotlock_replace
    - t_strdup_until
    - subsfile_list_read_header
    - mailbox_list_get_hierarchy_sep
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int subsfile_set_subscribed(struct mailbox_list *list, const char
      *path,\n\t\t\t    const char *temp_prefix, const char *name,\n\t\t\t    bool
      set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:273,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:276,1
    - Dst: subsread_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:279,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:283,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:285,1
    - Dst: subsfile_list_read_header
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:286,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:288,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:289,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - list
    - path
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 267
    functionDepth: 5
    functionLinenumber: 267
    functionLinenumberEnd: 291
    functionName: subsfile_list_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - nfs_safe_open
    - i_strdup
    - subsread_set_syscall_error
    - i_stream_set_return_partial_line
    - i_new
    - i_stream_create_fd_autoclose
    - subsfile_list_read_header
    - str_new
    linkageType: ''
    returnType: struct subsfile_list_context
    signature: 'struct subsfile_list_context *

      subsfile_list_init(struct mailbox_list *list, const char *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:300,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:301,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:302,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct subsfile_list_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 305
    functionName: subsfile_list_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - i_free
    - str_free
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int subsfile_list_deinit(struct subsfile_list_context **_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - st_r
    argTypes:
    - struct subsfile_list_context*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 320
    functionName: subsfile_list_fstat
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: int subsfile_list_fstat(struct subsfile_list_context *ctx, struct stat
      *st_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:327,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:328,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:329,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:330,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:330,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:333,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:333,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - line
    argTypes:
    - struct subsfile_list_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 335
    functionName: subsfile_list_unescaped
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_c
    - str_append_c
    - strlen
    - str_append_tabunescaped
    - str_truncate
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: char
    signature: 'char *

      subsfile_list_unescaped(struct subsfile_list_context *ctx, const char *line)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next_line
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:347,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:357,1
    - Dst: nfs_safe_open
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:359,1
    - Dst: subsread_set_syscall_error
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:365,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:372,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:374,1
    - Dst: subsfile_list_unescaped
      Src: /src/dovecot/src/lib-storage/list/subscription-file.c:378,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct subsfile_list_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 337
    functionDepth: 5
    functionLinenumber: 337
    functionLinenumberEnd: 380
    functionName: subsfile_list_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/subscription-file.c
    functionUses: 0
    functionsReached:
    - nfs_safe_open
    - next_line
    - subsread_set_syscall_error
    - i_stream_set_return_partial_line
    - subsfile_list_unescaped
    - i_stream_create_fd_autoclose
    - i_stream_destroy
    linkageType: ''
    returnType: char
    signature: char *subsfile_list_next(struct subsfile_list_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: INDEX_LIST_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INDEX_LIST_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: INDEX_LIST_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INDEX_LIST_CONTEXT_REQUIRE(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - box
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: MAILBOX_IS_NEVER_IN_INDEX
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAILBOX_IS_NEVER_IN_INDEX(box)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:35,1
    - Dst: mailbox_list_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:41,1
    - Dst: struct index_list_mailbox*::module_ctx::super::exists
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:44,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:47,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - box
    - auto_boxes
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 58
    functionName: index_list_exists
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - struct index_list_mailbox*::module_ctx::super::exists
    - mailbox_list_index_view_open
    - INDEX_LIST_STORAGE_CONTEXT
    - mail_index_lookup
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int index_list_exists(struct mailbox *box, bool auto_boxes,\n\t\t
      \ enum mailbox_existence *existence_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:68,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:76,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:91,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:99,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:116,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:129,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:140,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:145,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 8
    argNames:
    - list
    - view
    - seq
    - items
    - status_r
    - mailbox_guid
    - vsize_r
    - reason_r
    argTypes:
    - struct mailbox_list*
    - struct mail_index_view*
    - uint32_t
    - enum mailbox_status_items
    - struct mailbox_status*
    - uint8_t*
    - struct mailbox_index_vsize*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 149
    functionName: mailbox_list_index_status
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_lookup_ext
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_status(struct mailbox_list *list,\n\t\t\t
      \      struct mail_index_view *view,\n\t\t\t       uint32_t seq, enum mailbox_status_items
      items,\n\t\t\t       struct mailbox_status *status_r,\n\t\t\t       uint8_t
      *mailbox_guid,\n\t\t\t       struct mailbox_index_vsize *vsize_r,\n\t\t\t       const
      char **reason_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:165,1
    - Dst: mailbox_list_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:171,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:174,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:177,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:181,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 183
    functionName: index_list_get_cached_status
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mailbox_list_index_view_open
    - mailbox_list_index_status
    - mailbox_get_private_flags_mask
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int index_list_get_cached_status(struct mailbox *box,\n\t\t\t     enum
      mailbox_status_items items,\n\t\t\t     struct mailbox_status *status_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:189,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:191,1
    - Dst: index_list_get_cached_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:192,1
    - Dst: struct index_list_mailbox*::module_ctx::super::get_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - box
    - items
    - status_r
    argTypes:
    - struct mailbox*
    - enum mailbox_status_items
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 197
    functionName: index_list_get_status
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - index_list_get_cached_status
    - INDEX_LIST_STORAGE_CONTEXT
    - struct index_list_mailbox*::module_ctx::super::get_status
    - ENUM_NEGATE
    linkageType: ''
    returnType: int
    signature: "int index_list_get_status(struct mailbox *box, enum mailbox_status_items
      items,\n\t\t      struct mailbox_status *status_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:203,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:205,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - box
    - guid_r
    argTypes:
    - struct mailbox*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 200
    functionDepth: 5
    functionLinenumber: 200
    functionLinenumberEnd: 209
    functionName: index_list_get_guid_from_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - strrchr
    - mailbox_get_path_to
    - guid_128_from_string
    linkageType: ''
    returnType: bool
    signature: bool index_list_get_guid_from_path(struct mailbox *box, guid_128_t
      guid_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:214,1
    - Dst: index_list_get_guid_from_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:223,1
    - Dst: mailbox_list_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:231,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:234,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:236,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:241,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:245,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - box
    - guid_r
    argTypes:
    - struct mailbox*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 211
    functionDepth: 6
    functionLinenumber: 211
    functionLinenumberEnd: 247
    functionName: index_list_get_cached_guid
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - index_list_get_guid_from_path
    - e_debug
    - mailbox_list_index_view_open
    - mailbox_list_index_status
    - INDEX_LIST_CONTEXT_REQUIRE
    - guid_128_is_empty
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: int index_list_get_cached_guid(struct mailbox *box, guid_128_t guid_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:251,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:259,1
    - Dst: mailbox_list_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:261,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:264,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:280,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:284,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - box
    - vsize_r
    argTypes:
    - struct mailbox*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 249
    functionDepth: 3
    functionLinenumber: 249
    functionLinenumberEnd: 286
    functionName: index_list_get_cached_vsize
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mailbox_list_index_view_open
    - mailbox_list_index_status
    - INDEX_LIST_CONTEXT_REQUIRE
    - i_assert
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: int index_list_get_cached_vsize(struct mailbox *box, uoff_t *vsize_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:292,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:301,1
    - Dst: mailbox_list_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:303,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:306,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:309,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:313,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:319,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - box
    - first_saved_r
    argTypes:
    - struct mailbox*
    - struct mailbox_index_first_saved*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 288
    functionDepth: 3
    functionLinenumber: 288
    functionLinenumberEnd: 321
    functionName: index_list_get_cached_first_saved
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - mailbox_list_index_view_open
    - mail_index_lookup_ext
    - mailbox_list_index_status
    - INDEX_LIST_CONTEXT_REQUIRE
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int index_list_get_cached_first_saved(struct mailbox *box,\n\t\t\t\t
      \ struct mailbox_index_first_saved *first_saved_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:331,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:341,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:347,1
    - Dst: index_list_get_cached_guid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:353,1
    - Dst: index_list_get_cached_vsize
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:358,1
    - Dst: index_list_get_cached_first_saved
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:370,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 323
    functionDepth: 7
    functionLinenumber: 323
    functionLinenumberEnd: 377
    functionName: index_list_try_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - index_list_get_cached_vsize
    - ENUM_NEGATE
    - index_list_get_cached_guid
    - index_list_get_cached_first_saved
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int index_list_try_get_metadata(struct mailbox *box,\n\t\t\t    enum
      mailbox_metadata_items items,\n\t\t\t    struct mailbox_metadata *metadata_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:384,1
    - Dst: index_list_try_get_metadata
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:387,1
    - Dst: struct index_list_mailbox*::module_ctx::super::get_metadata
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - box
    - items
    - metadata_r
    argTypes:
    - struct mailbox*
    - enum mailbox_metadata_items
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 379
    functionDepth: 8
    functionLinenumber: 379
    functionLinenumberEnd: 390
    functionName: index_list_get_metadata
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - struct index_list_mailbox*::module_ctx::super::get_metadata
    - INDEX_LIST_STORAGE_CONTEXT
    - index_list_try_get_metadata
    linkageType: ''
    returnType: int
    signature: "int index_list_get_metadata(struct mailbox *box,\n\t\t\tenum mailbox_metadata_items
      items,\n\t\t\tstruct mailbox_metadata *metadata_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:400,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - box
    - view
    - changes_r
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - struct index_list_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 404
    functionName: index_list_update_fill_vsize
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_get_header_ext
    linkageType: ''
    returnType: void
    signature: "void index_list_update_fill_vsize(struct mailbox *box,\n\t\t\t     struct
      mail_index_view *view,\n\t\t\t     struct index_list_changes *changes_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:417,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:419,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:422,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:429,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:430,1
    - Dst: mail_index_lookup_seq_range
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:439,1
    - Dst: mail_index_modseq_get_highest
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:445,1
    - Dst: index_list_update_fill_vsize
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:450,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:451,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:453,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - box
    - list_view
    - changes_r
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - struct index_list_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 406
    functionDepth: 8
    functionLinenumber: 406
    functionLinenumberEnd: 456
    functionName: index_list_update_fill_changes
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_modseq_get_highest
    - memcpy
    - mail_index_lookup_seq
    - mailbox_list_index_lookup
    - mail_index_view_open
    - mail_index_get_header
    - mail_index_lookup_seq_range
    - index_list_update_fill_vsize
    - mailbox_get_metadata
    - mail_index_view_close
    linkageType: ''
    returnType: bool
    signature: "bool index_list_update_fill_changes(struct mailbox *box,\n\t\t\t       struct
      mail_index_view *list_view,\n\t\t\t       struct index_list_changes *changes_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:463,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:468,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:471,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:473,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:474,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:475,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - box
    - list_view
    - changes
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - struct index_list_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 458
    functionDepth: 2
    functionLinenumber: 458
    functionLinenumberEnd: 484
    functionName: index_list_first_saved_update_changes
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - mail_index_lookup_uid
    - mail_index_lookup_ext
    - INDEX_LIST_CONTEXT_REQUIRE
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void index_list_first_saved_update_changes(struct mailbox *box,\n\t\t\t\t
      \     struct mail_index_view *list_view,\n\t\t\t\t      struct index_list_changes
      *changes)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:495,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:496,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:497,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:498,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:507,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:508,1
    - Dst: MAILBOX_IS_NEVER_IN_INDEX
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:511,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:530,1
    - Dst: index_list_first_saved_update_changes
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:532,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 17
    argCount: 3
    argNames:
    - box
    - list_view
    - changes
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - struct index_list_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 486
    functionDepth: 3
    functionLinenumber: 486
    functionLinenumberEnd: 537
    functionName: index_list_has_changed
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - i_zero
    - guid_128_equals
    - mailbox_list_index_status
    - index_list_first_saved_update_changes
    - memcmp
    - MAILBOX_IS_NEVER_IN_INDEX
    - memset
    - guid_128_is_empty
    linkageType: ''
    returnType: bool
    signature: "bool index_list_has_changed(struct mailbox *box, struct mail_index_view
      *list_view,\n\t\t       struct index_list_changes *changes)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:544,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:552,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:556,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:557,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:558,1
    - Dst: mail_set_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:560,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:561,1
    - Dst: time_to_uint32_trunc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:563,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:566,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:571,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:572,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:575,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - box
    - list_trans
    - changes
    argTypes:
    - struct mailbox*
    - struct mail_index_transaction*
    - struct index_list_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 539
    functionDepth: 3
    functionLinenumber: 539
    functionLinenumberEnd: 579
    functionName: index_list_update_first_saved
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_get_last_mail_error
    - mail_alloc
    - mailbox_transaction_begin
    - time_to_uint32_trunc
    - mail_set_seq
    - mail_index_update_ext
    - mailbox_transaction_commit
    - INDEX_LIST_CONTEXT_REQUIRE
    - mail_free
    - mail_get_save_date
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: void
    signature: "void index_list_update_first_saved(struct mailbox *box,\n\t\t\t      struct
      mail_index_transaction *list_trans,\n\t\t\t      const struct index_list_changes
      *changes)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:587,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:594,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:596,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:597,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:601,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:602,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:603,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:610,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:616,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:620,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:626,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:631,1
    - Dst: index_list_update_first_saved
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:636,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 4
    argNames:
    - box
    - list_view
    - list_trans
    - changes
    argTypes:
    - struct mailbox*
    - struct mail_index_view*
    - struct mail_index_transaction*
    - struct index_list_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 582
    functionDepth: 4
    functionLinenumber: 582
    functionLinenumberEnd: 637
    functionName: index_list_update
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_zero
    - mail_index_lookup_ext
    - mail_index_update_ext
    - index_list_update_first_saved
    - INDEX_LIST_CONTEXT_REQUIRE
    - i_assert
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: "void index_list_update(struct mailbox *box, struct mail_index_view
      *list_view,\n\t\t  struct mail_index_transaction *list_trans,\n\t\t  const struct
      index_list_changes *changes)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:641,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:648,1
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:661,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:662,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:667,1
    - Dst: index_list_update_fill_changes
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:668,1
    - Dst: index_list_has_changed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:670,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:678,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:681,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:688,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:690,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:694,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:695,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:696,1
    - Dst: index_list_update_fill_changes
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:700,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:701,1
    - Dst: index_list_has_changed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:704,1
    - Dst: index_list_update
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:705,1
    - Dst: MAILBOX_IS_NEVER_IN_INDEX
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:707,1
    - Dst: struct mailbox*::v::list_index_update_sync
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:708,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:715,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:716,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:717,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 639
    functionDepth: 9
    functionLinenumber: 639
    functionLinenumberEnd: 722
    functionName: index_list_update_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_next
    - index_list_has_changed
    - mail_index_sync_commit
    - mail_index_sync_rollback
    - mail_index_view_open
    - mailbox_list_index_refresh
    - mailbox_set_index_error
    - mail_index_sync_begin
    - index_list_update
    - struct mailbox*::v::list_index_update_sync
    - mailbox_list_index_refresh_later
    - INDEX_LIST_CONTEXT_REQUIRE
    - MAILBOX_IS_NEVER_IN_INDEX
    - index_list_update_fill_changes
    - i_assert
    - mail_index_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: int index_list_update_mailbox(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:735,1
    - Dst: mailbox_list_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:738,1
    - Dst: guid_128_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:741,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:742,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:750,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:751,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:753,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:766,1
    - Dst: index_list_update
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:768,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:769,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:770,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 724
    functionDepth: 5
    functionLinenumber: 724
    functionLinenumberEnd: 771
    functionName: mailbox_list_index_update_mailbox_index
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mailbox_list_index_view_open
    - index_list_update
    - guid_128_equals
    - mailbox_list_index_status
    - guid_128_empty
    - guid_128_is_empty
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_update_mailbox_index(struct mailbox *box,\n\t\t\t\t\t
      \    const struct mailbox_update *update)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:775,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 781
    functionName: mailbox_list_index_status_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - mail_index_get_header
    - INDEX_LIST_STORAGE_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_status_sync_init(struct mailbox *box)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:785,1
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:786,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:789,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:800,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:800,1
    - Dst: index_list_update_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:801,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:802,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:802,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 783
    functionDepth: 10
    functionLinenumber: 783
    functionLinenumberEnd: 803
    functionName: mailbox_list_index_status_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - mail_index_get_header
    - INDEX_LIST_STORAGE_CONTEXT
    - INDEX_LIST_CONTEXT_REQUIRE
    - index_list_update_mailbox
    - mail_storage_last_error_push
    - mail_storage_last_error_pop
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_status_sync_deinit(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:810,1
    - Dst: struct index_list_mailbox*::module_ctx::super::transaction_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:812,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:823,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:823,1
    - Dst: index_list_update_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:824,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:825,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:825,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - t
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 805
    functionDepth: 10
    functionLinenumber: 805
    functionLinenumberEnd: 827
    functionName: index_list_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - mailbox_get_storage
    - INDEX_LIST_STORAGE_CONTEXT
    - index_list_update_mailbox
    - mail_storage_last_error_push
    - struct index_list_mailbox*::module_ctx::super::transaction_commit
    - mail_storage_last_error_pop
    linkageType: ''
    returnType: int
    signature: "int index_list_transaction_commit(struct mailbox_transaction_context
      *t,\n\t\t\t      struct mail_transaction_commit_changes *changes_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:832,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:839,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:840,1
    - Dst: struct mailbox*::v::list_index_has_changed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:845,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:851,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:856,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:858,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - box
    - uid
    - flags
    argTypes:
    - struct mailbox*
    - uint32_t
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 829
    functionDepth: 3
    functionLinenumber: 829
    functionLinenumberEnd: 864
    functionName: mailbox_list_index_status_set_info_flags
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_seq
    - mail_index_view_open
    - mailbox_list_index_status
    - INDEX_LIST_CONTEXT_REQUIRE
    - struct mailbox*::v::list_index_has_changed
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_status_set_info_flags(struct mailbox *box,
      uint32_t uid,\n\t\t\t\t\t      enum mailbox_info_flags *flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct mailbox_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 866
    functionDepth: 0
    functionLinenumber: 866
    functionLinenumberEnd: 872
    functionName: mailbox_list_index_status_init_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_status_init_mailbox(struct mailbox_vfuncs *v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:876,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:878,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:883,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:886,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:889,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 874
    functionDepth: 3
    functionLinenumber: 874
    functionLinenumberEnd: 894
    functionName: mailbox_list_index_status_init_finish
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-status.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_register
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_status_init_finish(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 13
    functionName: STAT_GET_MARKED_FILE
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAT_GET_MARKED_FILE(st)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:36,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:37,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:49,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:50,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:75,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:77,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:79,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 5
    argNames:
    - list
    - dir
    - fname
    - type
    - flags_r
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    - enum mailbox_list_file_type
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 96
    functionName: list_is_maildir_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - t_strdup_printf
    - stat
    - S_ISDIR
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int list_is_maildir_mailbox(struct mailbox_list *list, const char
      *dir,\n\t\t\tconst char *fname, enum mailbox_list_file_type type,\n\t\t\tenum
      mailbox_info_flags *flags_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:103,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:106,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:109,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - list
    - path
    - fname
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 111
    functionName: is_inbox_file
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - strcasecmp
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: bool is_inbox_file(struct mailbox_list *list, const char *path, const
      char *fname)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: list_is_maildir_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:132,1
    - Dst: struct mailbox_list*::v::is_internal_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:144,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:173,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:174,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:175,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:178,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:185,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:191,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:192,1
    - Dst: is_inbox_file
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:203,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:204,1
    - Dst: STAT_GET_MARKED_FILE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c:216,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 67
    argCount: 5
    argNames:
    - list
    - dir
    - fname
    - type
    - flags_r
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    - enum mailbox_list_file_type
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 113
    functionDepth: 3
    functionLinenumber: 113
    functionLinenumberEnd: 247
    functionName: fs_list_get_mailbox_flags
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-flags.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ENOTFOUND
    - str_begins_with
    - is_inbox_file
    - mailbox_list_set_critical
    - struct mailbox_list*::v::is_internal_name
    - stat
    - S_ISDIR
    - ENOACCESS
    - STAT_GET_MARKED_FILE
    - list_is_maildir_mailbox
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int fs_list_get_mailbox_flags(struct mailbox_list *list,\n\t\t\t      const
      char *dir, const char *fname,\n\t\t\t      enum mailbox_list_file_type type,\n\t\t\t
      \     enum mailbox_info_flags *flags_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:19,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:20,1
    - Dst: mailbox_list_index_node_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:22,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:24,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:24,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:25,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:26,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:27,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - node
    - guid_r
    argTypes:
    - struct mailbox_list_index_sync_context*
    - struct mailbox_list_index_node*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 12
    functionDepth: 8
    functionLinenumber: 12
    functionLinenumberEnd: 29
    functionName: node_lookup_guid
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - memcpy
    - str_c
    - t_str_new
    - mailbox_free
    - mailbox_list_index_node_get_path
    - mailbox_alloc
    - mailbox_list_get_vname
    - mailbox_list_get_hierarchy_sep
    - mailbox_get_metadata
    linkageType: ''
    returnType: void
    signature: "void node_lookup_guid(struct mailbox_list_index_sync_context *ctx,\n\t\t
      const struct mailbox_list_index_node *node, guid_128_t guid_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:38,1
    - Dst: node_lookup_guid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - node
    - seq_r
    argTypes:
    - struct mailbox_list_index_sync_context*
    - struct mailbox_list_index_node*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 31
    functionDepth: 9
    functionLinenumber: 31
    functionLinenumberEnd: 47
    functionName: node_add_to_index
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - node_lookup_guid
    linkageType: ''
    returnType: void
    signature: "void node_add_to_index(struct mailbox_list_index_sync_context *ctx,\n\t\t
      \ const struct mailbox_list_index_node *node, uint32_t *seq_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_name_unescape
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:64,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:67,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:73,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:85,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:86,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:87,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:88,1
    - Dst: node_add_to_index
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - parent
    - name
    - seq_r
    argTypes:
    - struct mailbox_list_index_sync_context*
    - struct mailbox_list_index_node*
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 57
    functionDepth: 10
    functionLinenumber: 57
    functionLinenumberEnd: 92
    functionName: mailbox_list_index_node_add
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - POINTER_CAST
    - p_new
    - node_add_to_index
    - hash_table_insert
    - mailbox_list_name_unescape
    linkageType: ''
    returnType: struct mailbox_list_index_node
    signature: "struct mailbox_list_index_node *\nmailbox_list_index_node_add(struct
      mailbox_list_index_sync_context *ctx,\n\t\t\t    struct mailbox_list_index_node
      *parent,\n\t\t\t    const char *name, uint32_t *seq_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:105,1
    - Dst: mailbox_list_index_node_find_sibling
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:121,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:122,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:123,1
    - Dst: mailbox_list_index_node_add
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:128,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - name
    - node_r
    - created_r
    argTypes:
    - struct mailbox_list_index_sync_context*
    - char*
    - struct mailbox_list_index_node**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 94
    functionDepth: 11
    functionLinenumber: 94
    functionLinenumberEnd: 136
    functionName: mailbox_list_index_sync_name
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mailbox_list_index_node_find_sibling
    - mail_index_lookup_seq
    - mailbox_list_index_node_add
    - t_strsplit
    - i_assert
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t mailbox_list_index_sync_name(struct mailbox_list_index_sync_context
      *ctx,\n\t\t\t\t      const char *name,\n\t\t\t\t      struct mailbox_list_index_node
      **node_r,\n\t\t\t\t      bool *created_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_existing_name_ids
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:144,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ids
    - node
    argTypes:
    - ARRAY_TYPE*
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: get_existing_name_ids
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 1
    functionsReached:
    - get_existing_name_ids
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void get_existing_name_ids(ARRAY_TYPE(uint32_t) *ids,\n\t\t      const
      struct mailbox_list_index_node *node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:161,1
    - Dst: get_existing_name_ids
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:162,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:163,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:165,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:166,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:169,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:171,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:172,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:173,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:174,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:175,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:175,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:179,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:182,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:184,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:184,1
    - Dst: mail_index_ext_resize
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:185,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:186,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:190,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:192,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_index_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 194
    functionName: mailbox_list_index_sync_names
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - buffer_append
    - i_assert
    - POINTER_CAST
    - buffer_append_zero
    - array_foreach_elem
    - mail_index_ext_resize
    - buffer_create_dynamic
    - strlen
    - nearest_power
    - mail_index_update_header_ext
    - mail_index_get_header_ext
    - get_existing_name_ids
    - array_sort
    - buffer_free
    - hash_table_lookup
    - array_free
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_sync_names(struct mailbox_list_index_sync_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_node_clear_exists
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:201,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 206
    functionName: mailbox_list_index_node_clear_exists
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 1
    functionsReached:
    - mailbox_list_index_node_clear_exists
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_node_clear_exists(struct mailbox_list_index_node
      *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sync_expunge_nonexistent
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:216,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:219,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:221,1
    - Dst: mailbox_list_index_node_unlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - sync_ctx
    - node
    argTypes:
    - struct mailbox_list_index_sync_context*
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 226
    functionName: sync_expunge_nonexistent
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 1
    functionsReached:
    - sync_expunge_nonexistent
    - mailbox_list_index_node_unlink
    - mail_index_expunge
    - mail_index_lookup_seq
    linkageType: ''
    returnType: void
    signature: "void sync_expunge_nonexistent(struct mailbox_list_index_sync_context
      *sync_ctx,\n\t\t\t struct mailbox_list_index_node *node)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:231,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:239,1
    - Dst: mailbox_list_index_index_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:242,1
    - Dst: mail_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:245,1
    - Dst: mailbox_list_index_set_index_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:247,1
    - Dst: mailbox_list_index_reset
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:250,1
    - Dst: mailbox_list_index_parse
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:253,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:254,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:259,1
    - Dst: mailbox_list_index_handle_corruption
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:260,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:266,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:269,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:274,1
    - Dst: mail_index_update_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:281,1
    - Dst: mail_index_transaction_open_updated_view
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:285,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 2
    argNames:
    - list
    - sync_ctx_r
    argTypes:
    - struct mailbox_list*
    - struct mailbox_list_index_sync_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 228
    functionDepth: 4
    functionLinenumber: 228
    functionLinenumberEnd: 291
    functionName: mailbox_list_index_sync_begin
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_index_open
    - mailbox_list_index_set_index_error
    - mailbox_list_get_hierarchy_sep
    - mail_index_update_header
    - mail_index_sync_rollback
    - mailbox_list_index_reset
    - mail_index_get_header
    - mail_index_transaction_open_updated_view
    - mailbox_list_index_handle_corruption
    - mail_index_sync_begin
    - mailbox_list_index_parse
    - i_new
    - INDEX_LIST_CONTEXT_REQUIRE
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_sync_begin(struct mailbox_list *list,\n\t\t\t\t
      \ struct mailbox_list_index_sync_context **sync_ctx_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_node_clear_exists
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:308,1
    - Dst: struct mailbox_list_index_sync_context*::ilist::module_ctx::super::iter_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:319,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:322,1
    - Dst: struct mailbox_list_index_sync_context*::ilist::module_ctx::super::iter_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:326,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:335,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:337,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:338,1
    - Dst: mailbox_list_index_sync_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:342,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:345,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mailbox_list_index_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 293
    functionDepth: 12
    functionLinenumber: 293
    functionLinenumberEnd: 349
    functionName: mailbox_list_index_sync_list
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - mail_index_update_flags
    - mailbox_list_get_storage_name
    - mailbox_list_index_sync_name
    - struct mailbox_list_index_sync_context*::ilist::module_ctx::super::iter_next
    - mailbox_list_index_node_clear_exists
    - struct mailbox_list_index_sync_context*::ilist::module_ctx::super::iter_init
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_sync_list(struct mailbox_list_index_sync_context
      *sync_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_sync_names
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mailbox_list_index_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 363
    functionDepth: 4
    functionLinenumber: 363
    functionLinenumberEnd: 373
    functionName: mailbox_list_index_sync_update_hdr
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_sync_names
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_sync_update_hdr(struct mailbox_list_index_sync_context
      *sync_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:394,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:398,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:401,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:403,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:406,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:411,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:416,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - sync_ctx
    - node
    argTypes:
    - struct mailbox_list_index_sync_context*
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 385
    functionDepth: 4
    functionLinenumber: 385
    functionLinenumberEnd: 419
    functionName: mailbox_list_index_sync_update_corrupted_node
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_update_flags
    - mail_index_lookup_seq
    - mail_index_lookup_ext
    - mail_index_update_ext
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_sync_update_corrupted_node(struct mailbox_list_index_sync_context
      *sync_ctx,\n\t\t\t\t\t      struct mailbox_list_index_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_sync_update_corrupted_node
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:426,1
    - Dst: mailbox_list_index_sync_update_corrupted_nodes
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sync_ctx
    - node
    argTypes:
    - struct mailbox_list_index_sync_context*
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 421
    functionDepth: 5
    functionLinenumber: 421
    functionLinenumberEnd: 429
    functionName: mailbox_list_index_sync_update_corrupted_nodes
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 1
    functionsReached:
    - mailbox_list_index_sync_update_corrupted_node
    - mailbox_list_index_sync_update_corrupted_nodes
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_sync_update_corrupted_nodes(struct mailbox_list_index_sync_context
      *sync_ctx,\n\t\t\t\t\t       struct mailbox_list_index_node *node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_sync_update_corrupted_nodes
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - sync_ctx
    argTypes:
    - struct mailbox_list_index_sync_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 431
    functionDepth: 6
    functionLinenumber: 431
    functionLinenumberEnd: 439
    functionName: mailbox_list_index_sync_update_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_sync_update_corrupted_nodes
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_sync_update_corrupted(struct mailbox_list_index_sync_context
      *sync_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_sync_update_corrupted
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:450,1
    - Dst: mailbox_list_index_sync_update_hdr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:451,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:453,1
    - Dst: mail_index_sync_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:457,1
    - Dst: mail_index_sync_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:458,1
    - Dst: mailbox_list_index_set_index_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:459,1
    - Dst: mail_index_sync_rollback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:461,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:466,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - _sync_ctx
    - success
    argTypes:
    - struct mailbox_list_index_sync_context**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 441
    functionDepth: 7
    functionLinenumber: 441
    functionLinenumberEnd: 468
    functionName: mailbox_list_index_sync_end
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - mail_index_sync_next
    - mailbox_list_index_sync_update_hdr
    - mailbox_list_index_set_index_error
    - mail_index_sync_commit
    - mail_index_sync_rollback
    - i_free
    - mail_index_view_close
    - mailbox_list_index_sync_update_corrupted
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_sync_end(struct mailbox_list_index_sync_context
      **_sync_ctx,\n\t\t\t\tbool success)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:475,1
    - Dst: mailbox_list_index_sync_list
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:486,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:488,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - list
    - refresh
    argTypes:
    - struct mailbox_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 470
    functionDepth: 13
    functionLinenumber: 470
    functionLinenumberEnd: 489
    functionName: mailbox_list_index_sync
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_sync_begin
    - mailbox_list_index_sync_end
    - mailbox_list_index_sync_list
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_sync(struct mailbox_list *list, bool refresh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:500,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:502,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:503,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:506,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:507,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:511,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:514,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:517,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:518,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:520,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:521,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:531,1
    - Dst: mailbox_list_index_node_unlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c:532,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - sync_ctx
    - name
    - delete_selectable
    argTypes:
    - struct mailbox_list_index_sync_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 491
    functionDepth: 4
    functionLinenumber: 491
    functionLinenumberEnd: 534
    functionName: mailbox_list_index_sync_delete
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-sync.c
    functionUses: 0
    functionsReached:
    - i_panic
    - memcpy
    - i_zero
    - mail_index_update_flags
    - mail_index_lookup_seq
    - mailbox_list_set_error
    - mailbox_list_index_lookup
    - mail_index_lookup_ext
    - mail_index_update_ext
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - i_assert
    - mailbox_list_index_node_unlink
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_sync_delete(struct mailbox_list_index_sync_context
      *sync_ctx,\n\t\t\t\t   const char *name, bool delete_selectable)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:26,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:28,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 35
    functionName: fs_list_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_strconcat
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *fs_list_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: fs_list_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void fs_list_deinit(struct mailbox_list *_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: fs_list_get_hierarchy_sep
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char fs_list_get_hierarchy_sep(struct mailbox_list *list ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:55,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - list
    - root_dir
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 63
    functionName: fs_list_get_path_to
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\nfs_list_get_path_to(struct mailbox_list *list,\n\t\t    const
      char *root_dir, const char *name)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_default_get_root_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:74,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:78,1
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:78,1
    - Dst: mailbox_list_try_get_absolute_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:80,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:82,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:93,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:106,1
    - Dst: fs_list_get_path_to
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:123,1
    - Dst: fs_list_get_path_to
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:130,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:137,1
    - Dst: fs_list_get_path_to
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:140,1
    - Dst: fs_list_get_path_to
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:148,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:153,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:159,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:174,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:177,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 79
    argCount: 4
    argNames:
    - _list
    - name
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 65
    functionDepth: 4
    functionLinenumber: 65
    functionLinenumberEnd: 182
    functionName: fs_list_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_is_valid_name
    - i_unreached
    - t_strdup_printf
    - fs_list_get_path_to
    - mailbox_list_try_get_absolute_path
    - mailbox_list_default_get_root_path
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int fs_list_get_path(struct mailbox_list *_list, const char *name,\n\t\t
      enum mailbox_list_path_type type, const char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _list
    - global
    argTypes:
    - struct mailbox_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: fs_list_get_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      fs_list_get_temp_prefix(struct mailbox_list *_list, bool global)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ref
    - pattern
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 203
    functionName: fs_list_join_refpattern
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: "char *\nfs_list_join_refpattern(struct mailbox_list *_list ATTR_UNUSED,\n\t\t\tconst
      char *ref, const char *pattern)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:213,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:221,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:221,1
    - Dst: subsfile_set_subscribed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - _list
    - name
    - set
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 205
    functionDepth: 7
    functionLinenumber: 205
    functionLinenumberEnd: 226
    functionName: fs_list_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - t_strconcat
    - mailbox_list_get_root_forced
    - subsfile_set_subscribed
    linkageType: ''
    returnType: int
    signature: "int fs_list_set_subscribed(struct mailbox_list *_list,\n\t\t\t\t  const
      char *name, bool set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:233,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: mailbox_list_fs_get_trash_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: char
    signature: char *mailbox_list_fs_get_trash_dir(struct mailbox_list *list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_fs_get_trash_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:246,1
    - Dst: mailbox_list_delete_maildir_via_trash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:247,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:254,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:257,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:258,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:260,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:268,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:270,1
    - Dst: mailbox_list_delete_mailbox_nonrecursive
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:271,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 237
    functionDepth: 4
    functionLinenumber: 237
    functionLinenumberEnd: 273
    functionName: fs_list_delete_maildir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - rmdir
    - mailbox_list_fs_get_trash_dir
    - i_unreached
    - mailbox_list_set_critical
    - mailbox_list_delete_mailbox_nonrecursive
    - mailbox_list_delete_maildir_via_trash
    linkageType: ''
    returnType: int
    signature: int fs_list_delete_maildir(struct mailbox_list *list, const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:280,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:284,1
    - Dst: mailbox_list_delete_mailbox_file
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:287,1
    - Dst: fs_list_delete_maildir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:289,1
    - Dst: mailbox_list_delete_until_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:292,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:294,1
    - Dst: mailbox_list_delete_finish_ret
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 275
    functionDepth: 5
    functionLinenumber: 275
    functionLinenumberEnd: 296
    functionName: fs_list_delete_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - mailbox_list_delete_finish_ret
    - mailbox_list_delete_until_root
    - fs_list_delete_maildir
    - mailbox_list_delete_mailbox_file
    - i_assert
    linkageType: ''
    returnType: int
    signature: int fs_list_delete_mailbox(struct mailbox_list *list, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:303,1
    - Dst: mailbox_name_get_sha128
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:306,1
    - Dst: mailbox_list_add_change
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - list
    - name
    - path
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 298
    functionDepth: 8
    functionLinenumber: 298
    functionLinenumberEnd: 310
    functionName: fs_list_rmdir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - mailbox_list_add_change
    - mailbox_name_get_sha128
    - rmdir
    linkageType: ''
    returnType: int
    signature: "int fs_list_rmdir(struct mailbox_list *list, const char *name,\n\t\t\t
      const char *path)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:318,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:320,1
    - Dst: fs_list_rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:321,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:329,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:331,1
    - Dst: fs_list_rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:332,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:344,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:345,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:349,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:350,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:351,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:354,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:356,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:357,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:357,1
    - Dst: fs_list_rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:359,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:364,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:367,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 312
    functionDepth: 9
    functionLinenumber: 312
    functionLinenumberEnd: 370
    functionName: fs_list_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - str_begins_with
    - strrchr
    - i_unreached
    - mailbox_list_set_error
    - rmdir
    - mailbox_list_set_critical
    - t_strdup_printf
    - t_strdup_until
    - mailbox_list_get_hierarchy_sep
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    - fs_list_rmdir
    linkageType: ''
    returnType: int
    signature: int fs_list_delete_dir(struct mailbox_list *list, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:374,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 376
    functionName: path_get_parent_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - t_strdup_until
    - strrchr
    linkageType: ''
    returnType: char
    signature: char *path_get_parent_dir(const char *path)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:385,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:386,1
    - Dst: path_get_parent_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:395,1
    - Dst: path_get_parent_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:399,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:401,1
    - Dst: path_get_parent_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:404,1
    - Dst: path_get_parent_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:405,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:407,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:407,1
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:411,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:412,1
    - Dst: mailbox_list_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:416,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:419,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:425,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:426,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:430,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:431,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:432,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:434,1
    - Dst: mailbox_list_delete_until_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:440,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 33
    argCount: 6
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    - type
    - rmdir_parent
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 378
    functionDepth: 4
    functionLinenumber: 378
    functionLinenumberEnd: 442
    functionName: rename_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - rename
    - path_get_parent_dir
    - strrchr
    - mkdir_parents_chgrp
    - rmdir
    - mailbox_list_delete_until_root
    - mailbox_list_set_critical
    - stat
    - t_strdup_until
    - mailbox_list_get_root_permissions
    - mailbox_list_set_error_from_errno
    linkageType: ''
    returnType: int
    signature: "int rename_dir(struct mailbox_list *oldlist, const char *oldname,\n\t\t
      \     struct mailbox_list *newlist, const char *newname,\n\t\t      enum mailbox_list_path_type
      type, bool rmdir_parent)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:455,1
    - Dst: mailbox_list_get_storage
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:456,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:459,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:461,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:463,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:464,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:466,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:468,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:469,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:471,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:472,1
    - Dst: mailbox_list_get_permissions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:477,1
    - Dst: mailbox_list_get_permissions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:478,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:482,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:482,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:486,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:493,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:495,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:496,1
    - Dst: mailbox_list_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:500,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:503,1
    - Dst: lstat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:513,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:514,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:518,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:521,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:522,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:528,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:531,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:535,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:541,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:542,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:543,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:544,1
    - Dst: mailbox_list_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:545,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:546,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:553,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:556,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:558,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c:560,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 67
    argCount: 4
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 444
    functionDepth: 4
    functionLinenumber: 444
    functionLinenumberEnd: 563
    functionName: fs_list_rename_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strdup_printf
    - mailbox_list_get_root_forced
    - stat
    - mailbox_list_set_error_from_errno
    - rename
    - ENOTFOUND
    - i_unreached
    - mkdir_parents_chgrp
    - mailbox_list_get_storage
    - ENOACCESS
    - rename_dir
    - mailbox_list_set_error
    - mailbox_list_set_critical
    - mailbox_list_get_vname
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    - lstat
    - strcmp
    - mailbox_list_get_path
    - strrchr
    - t_strdup_until
    - mailbox_list_get_permissions
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: int
    signature: "int fs_list_rename_mailbox(struct mailbox_list *oldlist,\n\t\t\t\t
      \ const char *oldname,\n\t\t\t\t  struct mailbox_list *newlist,\n\t\t\t\t  const
      char *newname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:28,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:30,1
    - Dst: mail_index_get_last_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:31,1
    - Dst: mail_index_reset_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 33
    functionName: mailbox_list_index_set_index_error
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 2
    functionsReached:
    - mail_index_get_last_error
    - mailbox_list_set_internal_error
    - mail_index_reset_error
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_set_index_error(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:37,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:38,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ilist
    argTypes:
    - struct mailbox_list_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: mailbox_list_index_init_pool
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - hash_table_create_direct
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_init_pool(struct mailbox_list_index *ilist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:44,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:45,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:46,1
    - Dst: mailbox_list_index_init_pool
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ilist
    argTypes:
    - struct mailbox_list_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 54
    functionName: mailbox_list_index_reset
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - pool_unref
    - hash_table_destroy
    - mailbox_list_index_init_pool
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_reset(struct mailbox_list_index *ilist)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:58,1
    - Dst: mailbox_list_mkdir_missing_list_index_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:67,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:70,1
    - Dst: mail_storage_settings_to_index_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:72,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:73,1
    - Dst: mail_index_use_existing_permissions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:81,1
    - Dst: mailbox_list_get_root_permissions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:84,1
    - Dst: mail_index_set_permissions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:85,1
    - Dst: mail_index_set_optimization_settings
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:97,1
    - Dst: mail_index_set_fsync_mode
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:99,1
    - Dst: mail_index_set_lock_method
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:100,1
    - Dst: mail_index_open_or_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:102,1
    - Dst: mail_index_move_to_memory
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:103,1
    - Dst: mail_index_open_or_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:107,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:109,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 56
    functionDepth: 8
    functionLinenumber: 56
    functionLinenumberEnd: 118
    functionName: mailbox_list_index_index_open
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - strcmp
    - mail_index_set_lock_method
    - mail_index_move_to_memory
    - mail_index_open_or_create
    - mail_storage_settings_to_index_flags
    - mail_index_set_permissions
    - mailbox_list_set_internal_error
    - mailbox_list_mkdir_missing_list_index_root
    - mailbox_list_get_root_permissions
    - mail_index_use_existing_permissions
    - mail_index_set_optimization_settings
    - INDEX_LIST_CONTEXT_REQUIRE
    - mail_index_set_fsync_mode
    - i_assert
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_index_open(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_name_unescape
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:125,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - list
    - node
    - name
    argTypes:
    - struct mailbox_list*
    - struct mailbox_list_index_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: mailbox_list_index_node_find_sibling
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - strcmp
    - mailbox_list_name_unescape
    linkageType: ''
    returnType: struct mailbox_list_index_node
    signature: "struct mailbox_list_index_node *\nmailbox_list_index_node_find_sibling(const
      struct mailbox_list *list,\n\t\t\t\t     struct mailbox_list_index_node *node,\n\t\t\t\t
      \    const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:139,1
    - Dst: mailbox_list_index_node_find_sibling
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:146,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:148,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:149,1
    - Dst: mailbox_list_index_node_find_sibling
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 157
    functionName: mailbox_list_index_lookup_real
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_node_find_sibling
    - mailbox_list_get_hierarchy_sep
    - t_strsplit
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: struct mailbox_list_index_node
    signature: 'struct mailbox_list_index_node *

      mailbox_list_index_lookup_real(struct mailbox_list *list, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_lookup_real
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 166
    functionName: mailbox_list_index_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 2
    functionsReached:
    - mailbox_list_index_lookup_real
    linkageType: ''
    returnType: struct mailbox_list_index_node
    signature: 'struct mailbox_list_index_node *

      mailbox_list_index_lookup(struct mailbox_list *list, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:173,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ilist
    - uid
    argTypes:
    - struct mailbox_list_index*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 174
    functionName: mailbox_list_index_lookup_uid
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - POINTER_CAST
    linkageType: ''
    returnType: struct mailbox_list_index_node
    signature: 'struct mailbox_list_index_node *

      mailbox_list_index_lookup_uid(struct mailbox_list_index *ilist, uint32_t uid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_node_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:180,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:181,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - node
    - sep
    - str
    argTypes:
    - struct mailbox_list_index_node*
    - char
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 184
    functionName: mailbox_list_index_node_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 2
    functionsReached:
    - str_append
    - mailbox_list_index_node_get_path
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_node_get_path(const struct mailbox_list_index_node
      *node,\n\t\t\t\t      char sep, string_t *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ilist
    - node
    argTypes:
    - struct mailbox_list_index*
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 197
    functionName: mailbox_list_index_node_unlink
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_node_unlink(struct mailbox_list_index *ilist,\n\t\t\t\t
      \   struct mailbox_list_index_node *node)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_map_get_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:209,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:213,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:218,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:218,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:228,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:228,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:231,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:234,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:235,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:238,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:238,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:239,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:246,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:246,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:249,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - ilist
    - view
    argTypes:
    - struct mailbox_list_index*
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 251
    functionName: mailbox_list_index_parse_header
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - memcpy
    - str_c
    - t_str_new
    - p_strdup
    - p_strndup
    - CONST_PTR_OFFSET
    - POINTER_CAST
    - memchr
    - uni_utf8_get_valid_data
    - str_truncate
    - hash_table_insert
    - i_assert
    - mail_index_map_get_header_ext
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_parse_header(struct mailbox_list_index *ilist,\n\t\t\t\t\t
      \  struct mail_index_view *view)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:261,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:263,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:264,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:265,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:269,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ilist
    - node
    - prefix
    argTypes:
    - struct mailbox_list_index*
    - struct mailbox_list_index_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: mailbox_list_index_generate_name
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - guid_128_to_string
    - guid_128_generate
    - hash_table_insert
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_generate_name(struct mailbox_list_index *ilist,\n\t\t\t\t
      struct mailbox_list_index_node *node,\n\t\t\t\t const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct mailbox_list_index_node*
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 280
    functionName: mailbox_list_index_node_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_node_cmp(const struct mailbox_list_index_node
      *n1,\n\t\t\t\t       const struct mailbox_list_index_node *n2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_hash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:285,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: mailbox_list_index_node_hash
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST_TO
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mailbox_list_index_node_hash(const struct mailbox_list_index_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - parent
    - node
    argTypes:
    - struct mailbox_list_index_node*
    - struct mailbox_list_index_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 299
    functionName: node_has_parent
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool node_has_parent(const struct mailbox_list_index_node *parent,\n\t\t\t
      \   const struct mailbox_list_index_node *node)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:318,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:319,1
    - Dst: mail_index_view_get_messages_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:322,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:324,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:328,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:330,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:334,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:351,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:352,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:354,1
    - Dst: mailbox_list_index_generate_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:359,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:362,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:368,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:373,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:376,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:377,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:383,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:385,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:387,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:388,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:390,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:397,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:401,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:402,1
    - Dst: mail_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:411,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:412,1
    - Dst: mailbox_list_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:416,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:417,1
    - Dst: mailbox_list_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:421,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:424,1
    - Dst: node_has_parent
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:431,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:432,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:444,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:447,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:448,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:453,1
    - Dst: mailbox_list_index_generate_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:463,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:464,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:465,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:474,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:476,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:477,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 105
    argCount: 3
    argNames:
    - ilist
    - view
    - error_r
    argTypes:
    - struct mailbox_list_index*
    - struct mail_index_view*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 479
    functionName: mailbox_list_index_parse_records
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mail_index_lookup_uid
    - t_strdup_printf
    - mail_index_lookup_ext
    - pool_unref
    - node_has_parent
    - POINTER_CAST
    - hash_table_create
    - p_new
    - hash_table_insert
    - p_memdup
    - hash_table_destroy
    - guid_128_to_string
    - mailbox_list_index_lookup_uid
    - strcasecmp
    - mail_index_lookup
    - i_assert
    - hash_table_lookup
    - pool_alloconly_create
    - ENUM_NEGATE
    - mailbox_list_index_generate_name
    - guid_128_is_empty
    - t_strconcat
    - mail_index_view_get_messages_count
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_parse_records(struct mailbox_list_index *ilist,\n\t\t\t\t\t
      \   struct mail_index_view *view,\n\t\t\t\t\t    const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:484,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:488,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:496,1
    - Dst: mailbox_list_index_reset
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:501,1
    - Dst: mailbox_list_index_parse_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:505,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:506,1
    - Dst: mail_index_mark_corrupted
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:509,1
    - Dst: mailbox_list_index_parse_records
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:515,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:516,1
    - Dst: mail_index_mark_corrupted
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:520,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - list
    - view
    - force
    argTypes:
    - struct mailbox_list*
    - struct mail_index_view*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 481
    functionDepth: 3
    functionLinenumber: 481
    functionLinenumberEnd: 527
    functionName: mailbox_list_index_parse
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - mailbox_list_index_parse_records
    - mail_index_mark_corrupted
    - mailbox_list_set_critical
    - mail_index_get_header
    - mailbox_list_index_reset
    - mailbox_list_index_parse_header
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_parse(struct mailbox_list *list,\n\t\t\t     struct
      mail_index_view *view, bool force)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:534,1
    - Dst: p_strsplit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:538,1
    - Dst: mailbox_list_name_unescape
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:541,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:546,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:547,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:548,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:550,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:551,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:553,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - list
    - storage_name
    - name_len_r
    argTypes:
    - struct mailbox_list*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 529
    functionDepth: 2
    functionLinenumber: 529
    functionLinenumberEnd: 555
    functionName: mailbox_name_hdr_encode
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - mailbox_list_get_hierarchy_sep
    - str_append_c
    - str_data
    - str_len
    - p_strsplit
    - str_append
    - i_assert
    - mailbox_list_name_unescape
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\nmailbox_name_hdr_encode(struct mailbox_list *list,
      const char *storage_name,\n\t\t\tsize_t *name_len_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:562,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:564,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:566,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:573,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:578,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:581,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:582,1
    - Dst: mailbox_list_escape_name_params
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:583,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:590,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:593,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - list
    - name_hdr
    - name_hdr_size
    argTypes:
    - struct mailbox_list*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 594
    functionName: mailbox_name_hdr_decode_storage_name
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_assert
    - t_str_new
    - mailbox_list_get_hierarchy_sep
    - mailbox_list_escape_name_params
    - str_append_c
    - memchr
    - t_strndup
    - str_append
    - str_append_data
    linkageType: ''
    returnType: char
    signature: "char *\nmailbox_name_hdr_decode_storage_name(struct mailbox_list *list,\n\t\t\t\t
      \    const unsigned char *name_hdr,\n\t\t\t\t     size_t name_hdr_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ilist
    - view
    argTypes:
    - struct mailbox_list_index*
    - struct mail_index_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 609
    functionName: mailbox_list_index_need_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mail_index_get_header_ext
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_need_refresh(struct mailbox_list_index *ilist,\n\t\t\t\t
      \    struct mail_index_view *view)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:613,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:626,1
    - Dst: mailbox_list_index_refresh_force
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:630,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 611
    functionDepth: 2
    functionLinenumber: 611
    functionLinenumberEnd: 631
    functionName: mailbox_list_index_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - mailbox_list_index_refresh_force
    - mailbox_list_set_internal_error
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_refresh(struct mailbox_list *list)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:635,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:640,1
    - Dst: mailbox_list_index_index_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:642,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:644,1
    - Dst: mailbox_list_index_set_index_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:645,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:649,1
    - Dst: mailbox_list_index_need_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:650,1
    - Dst: mailbox_list_index_sync
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:653,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:659,1
    - Dst: mailbox_list_index_set_index_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:661,1
    - Dst: mailbox_list_index_parse
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:664,1
    - Dst: mailbox_list_index_parse
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:667,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:669,1
    - Dst: mailbox_list_index_handle_corruption
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:672,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:673,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:675,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 633
    functionDepth: 14
    functionLinenumber: 633
    functionLinenumberEnd: 681
    functionName: mailbox_list_index_refresh_force
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - mailbox_list_index_index_open
    - mailbox_list_index_need_refresh
    - mailbox_list_index_set_index_error
    - mailbox_list_get_last_internal_error
    - mail_index_view_open
    - mailbox_list_set_critical
    - mailbox_list_index_handle_corruption
    - mailbox_list_index_parse
    - INDEX_LIST_CONTEXT_REQUIRE
    - i_assert
    - mail_index_refresh
    - mail_index_view_close
    - mailbox_list_index_sync
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_refresh_force(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:685,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:687,1
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 683
    functionDepth: 3
    functionLinenumber: 683
    functionLinenumberEnd: 689
    functionName: mailbox_list_index_refresh_timeout
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - timeout_remove
    - mailbox_list_index_refresh
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_refresh_timeout(struct mailbox_list *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:693,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:698,1
    - Dst: mailbox_list_index_index_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:704,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:706,1
    - Dst: mailbox_list_index_need_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:707,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:710,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:712,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:715,1
    - Dst: mail_index_mark_corrupted
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:716,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:719,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:723,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 691
    functionDepth: 9
    functionLinenumber: 691
    functionLinenumberEnd: 726
    functionName: mailbox_list_index_refresh_later
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - mailbox_list_index_index_open
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_index_mark_corrupted
    - timeout_add
    - mail_index_view_open
    - mail_index_update_header_ext
    - INDEX_LIST_CONTEXT_REQUIRE
    - memset
    - mailbox_list_index_need_refresh
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_refresh_later(struct mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:736,1
    - Dst: struct mail_storage*::v::list_index_rebuild
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:740,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:741,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:742,1
    - Dst: mailbox_list_index_set_uncorrupted
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:750,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - list
    - reason
    argTypes:
    - struct mailbox_list*
    - enum mail_storage_list_index_rebuild_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 728
    functionDepth: 2
    functionLinenumber: 728
    functionLinenumberEnd: 751
    functionName: list_handle_corruption_locked
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mail_storage_get_last_error
    - array_foreach_elem
    - mailbox_list_set_error
    - mailbox_list_index_set_uncorrupted
    - struct mail_storage*::v::list_index_rebuild
    linkageType: ''
    returnType: int
    signature: "int list_handle_corruption_locked(struct mailbox_list *list,\n\t\t\t
      \     enum mail_storage_list_index_rebuild_reason reason)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:755,1
    - Dst: mailbox_list_lock
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:780,1
    - Dst: list_handle_corruption_locked
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:783,1
    - Dst: mailbox_list_unlock
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:784,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 753
    functionDepth: 8
    functionLinenumber: 753
    functionLinenumberEnd: 788
    functionName: mailbox_list_index_handle_corruption
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 2
    functionsReached:
    - list_handle_corruption_locked
    - mailbox_list_lock
    - mailbox_list_unlock
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_handle_corruption(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:792,1
    - Dst: mailbox_list_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:798,1
    - Dst: mail_index_unset_fscked
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:801,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 790
    functionDepth: 8
    functionLinenumber: 790
    functionLinenumberEnd: 803
    functionName: mailbox_list_index_set_uncorrupted
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - mail_index_unset_fscked
    - mailbox_list_index_sync_begin
    - mailbox_list_index_sync_end
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_set_uncorrupted(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - list
    - index_r
    argTypes:
    - struct mailbox_list*
    - struct mail_index**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 805
    functionDepth: 1
    functionLinenumber: 805
    functionLinenumberEnd: 814
    functionName: mailbox_list_index_get_index
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - INDEX_LIST_CONTEXT
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_get_index(struct mailbox_list *list,\n\t\t\t\t
      \ struct mail_index **index_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:820,1
    - Dst: MAILBOX_IS_NEVER_IN_INDEX
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:831,1
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:837,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:838,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:842,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:845,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:850,1
    - Dst: mailbox_list_index_need_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:851,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:856,1
    - Dst: struct mailbox*::v::list_index_has_changed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:865,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:867,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:873,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:875,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:876,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:881,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 4
    argNames:
    - box
    - require_refreshed
    - view_r
    - seq_r
    argTypes:
    - struct mailbox*
    - bool
    - struct mail_index_view**
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 816
    functionDepth: 10
    functionLinenumber: 816
    functionLinenumberEnd: 888
    functionName: mailbox_list_index_view_open
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 6
    functionsReached:
    - i_assert
    - mail_index_lookup_seq
    - e_debug
    - mailbox_list_index_lookup
    - mail_index_view_open
    - mail_storage_copy_list_error
    - mailbox_list_index_refresh
    - mailbox_list_index_refresh_later
    - INDEX_LIST_CONTEXT
    - MAILBOX_IS_NEVER_IN_INDEX
    - mailbox_list_index_need_refresh
    - struct mailbox*::v::list_index_has_changed
    - mail_index_view_close
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_view_open(struct mailbox *box, bool require_refreshed,\n\t\t\t\t
      struct mail_index_view **view_r,\n\t\t\t\t uint32_t *seq_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:892,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:894,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:896,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:897,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:898,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:900,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:901,1
    - Dst: struct mailbox_list_index*::module_ctx::super::deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:903,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 890
    functionDepth: 5
    functionLinenumber: 890
    functionLinenumberEnd: 904
    functionName: mailbox_list_index_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - struct mailbox_list_index*::module_ctx::super::deinit
    - mail_index_close
    - pool_unref
    - INDEX_LIST_CONTEXT_REQUIRE
    - mail_index_free
    - hash_table_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_deinit(struct mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:910,1
    - Dst: mailbox_list_last_error_push
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:916,1
    - Dst: mailbox_list_index_refresh_force
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:917,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:918,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:924,1
    - Dst: mailbox_list_last_error_pop
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:926,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - list
    - name
    - selectable
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 906
    functionDepth: 15
    functionLinenumber: 906
    functionLinenumberEnd: 927
    functionName: mailbox_list_index_refresh_if_found
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_refresh_force
    - mailbox_list_index_lookup
    - mailbox_list_index_refresh_later
    - mailbox_list_last_error_push
    - mailbox_list_last_error_pop
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_refresh_if_found(struct mailbox_list *list,\n\t\t\t\t
      \   const char *name, bool selectable)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:932,1
    - Dst: mailbox_list_last_error_push
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:937,1
    - Dst: mailbox_list_index_refresh_force
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:938,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:939,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:941,1
    - Dst: mailbox_list_last_error_pop
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:943,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 929
    functionDepth: 15
    functionLinenumber: 929
    functionLinenumberEnd: 944
    functionName: mailbox_list_index_refresh_if_not_found
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_refresh_force
    - mailbox_list_index_lookup
    - mailbox_list_index_refresh_later
    - mailbox_list_last_error_push
    - mailbox_list_last_error_pop
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_refresh_if_not_found(struct mailbox_list *list,\n\t\t\t\t\t\t
      \   const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:948,1
    - Dst: struct index_list_mailbox*::module_ctx::super::open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:950,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:951,1
    - Dst: mailbox_list_index_refresh_if_found
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:952,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 946
    functionDepth: 16
    functionLinenumber: 946
    functionLinenumberEnd: 956
    functionName: mailbox_list_index_open_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - INDEX_LIST_STORAGE_CONTEXT
    - struct index_list_mailbox*::module_ctx::super::open
    - mailbox_list_index_refresh_if_found
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_open_mailbox(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:963,1
    - Dst: struct index_list_mailbox*::module_ctx::super::create_box
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:965,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:966,1
    - Dst: mailbox_list_index_refresh_if_not_found
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:967,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:970,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 958
    functionDepth: 16
    functionLinenumber: 958
    functionLinenumberEnd: 972
    functionName: mailbox_list_index_create_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mailbox_list_index_refresh_if_not_found
    - mailbox_list_index_refresh_later
    - INDEX_LIST_STORAGE_CONTEXT
    - struct index_list_mailbox*::module_ctx::super::create_box
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_create_mailbox(struct mailbox *box,\n\t\t\t\t
      \ const struct mailbox_update *update,\n\t\t\t\t  bool directory)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:978,1
    - Dst: struct index_list_mailbox*::module_ctx::super::update_box
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:980,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:981,1
    - Dst: mailbox_list_index_refresh_if_found
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:982,1
    - Dst: mailbox_list_index_update_mailbox_index
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 974
    functionDepth: 16
    functionLinenumber: 974
    functionLinenumberEnd: 988
    functionName: mailbox_list_index_update_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mailbox_list_index_refresh_if_found
    - mailbox_list_index_update_mailbox_index
    - INDEX_LIST_STORAGE_CONTEXT
    - struct index_list_mailbox*::module_ctx::super::update_box
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_update_mailbox(struct mailbox *box,\n\t\t\t\t
      \ const struct mailbox_update *update)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:993,1
    - Dst: struct mailbox_list_index*::module_ctx::super::delete_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:995,1
    - Dst: mailbox_list_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:996,1
    - Dst: mailbox_list_index_refresh_if_found
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:997,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1000,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 990
    functionDepth: 16
    functionLinenumber: 990
    functionLinenumberEnd: 1002
    functionName: mailbox_list_index_delete_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - struct mailbox_list_index*::module_ctx::super::delete_mailbox
    - mailbox_list_index_refresh_if_found
    - mailbox_list_index_refresh_later
    - mailbox_list_get_last_mail_error
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_delete_mailbox(struct mailbox_list *list, const
      char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1007,1
    - Dst: struct mailbox_list_index*::module_ctx::super::delete_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1009,1
    - Dst: mailbox_list_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1010,1
    - Dst: mailbox_list_index_refresh_if_found
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1011,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 1004
    functionDepth: 16
    functionLinenumber: 1004
    functionLinenumberEnd: 1016
    functionName: mailbox_list_index_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_refresh_if_found
    - struct mailbox_list_index*::module_ctx::super::delete_dir
    - mailbox_list_index_refresh_later
    - mailbox_list_get_last_mail_error
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_delete_dir(struct mailbox_list *list, const
      char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1024,1
    - Dst: struct mailbox_list_index*::module_ctx::super::rename_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1026,1
    - Dst: mailbox_list_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1028,1
    - Dst: mailbox_list_index_refresh_if_found
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1029,1
    - Dst: mailbox_list_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1030,1
    - Dst: mailbox_list_index_refresh_if_not_found
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1031,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1034,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1036,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1018
    functionDepth: 16
    functionLinenumber: 1018
    functionLinenumberEnd: 1038
    functionName: mailbox_list_index_rename_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_refresh_if_not_found
    - mailbox_list_index_refresh_if_found
    - struct mailbox_list_index*::module_ctx::super::rename_mailbox
    - mailbox_list_index_refresh_later
    - mailbox_list_get_last_mail_error
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_rename_mailbox(struct mailbox_list *oldlist,\n\t\t\t\t
      \ const char *oldname,\n\t\t\t\t  struct mailbox_list *newlist,\n\t\t\t\t  const
      char *newname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1044,1
    - Dst: struct mailbox_list_index*::module_ctx::super::set_subscribed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1051,1
    - Dst: mailbox_list_index_index_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1056,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1058,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1059,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1063,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1068,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1070,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1072,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1073,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - _list
    - name
    - set
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1040
    functionDepth: 9
    functionLinenumber: 1040
    functionLinenumberEnd: 1075
    functionName: mailbox_list_index_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mailbox_list_index_index_open
    - mail_index_transaction_begin
    - mail_index_transaction_commit
    - mail_index_view_open
    - mail_index_update_header_ext
    - mail_index_get_header_ext
    - INDEX_LIST_CONTEXT_REQUIRE
    - mail_index_view_close
    - struct mailbox_list_index*::module_ctx::super::set_subscribed
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_set_subscribed(struct mailbox_list *_list,\n\t\t\t\t
      \ const char *name, bool set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1077
    functionDepth: 0
    functionLinenumber: 1077
    functionLinenumberEnd: 1086
    functionName: mailbox_list_index_is_enabled
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mailbox_list_index_is_enabled(struct mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1095,1
    - Dst: mailbox_list_index_is_enabled
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1097,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1100,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1102,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1106,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1128,1
    - Dst: mailbox_list_index_init_finish
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1135
    functionName: mailbox_list_index_created
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_index_is_enabled
    - p_new
    - mailbox_list_index_init_finish
    - MODULE_CONTEXT_SET
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_created(struct mailbox_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1139,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1148,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1153,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1156,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1158,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1163,1
    - Dst: mail_index_ext_register
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1167,1
    - Dst: mailbox_list_index_init_pool
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1170,1
    - Dst: mailbox_list_index_status_init_finish
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1137
    functionDepth: 4
    functionLinenumber: 1137
    functionLinenumberEnd: 1173
    functionName: mailbox_list_index_init_finish
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - mail_index_alloc
    - mailbox_list_get_root_path
    - mailbox_list_index_status_init_finish
    - INDEX_LIST_CONTEXT
    - mail_index_ext_register
    - mailbox_list_index_init_pool
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_init_finish(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_init_finish
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - namespaces
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1175
    functionDepth: 5
    functionLinenumber: 1175
    functionLinenumberEnd: 1182
    functionName: mailbox_list_index_namespaces_added
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_init_finish
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_namespaces_added(struct mail_namespace *namespaces)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1188,1
    - Dst: mailbox_list_index_status_sync_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1190,1
    - Dst: mailbox_list_index_backend_sync_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1192,1
    - Dst: struct index_list_mailbox*::module_ctx::super::sync_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1184
    functionDepth: 2
    functionLinenumber: 1184
    functionLinenumberEnd: 1194
    functionName: mailbox_list_index_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - INDEX_LIST_STORAGE_CONTEXT
    - mailbox_list_index_status_sync_init
    - struct index_list_mailbox*::module_ctx::super::sync_init
    - mailbox_list_index_backend_sync_init
    linkageType: ''
    returnType: struct mailbox_sync_context
    signature: "struct mailbox_sync_context *\nmailbox_list_index_sync_init(struct
      mailbox *box,\n\t\t\t     enum mailbox_sync_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1200,1
    - Dst: struct index_list_mailbox*::module_ctx::super::sync_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1203,1
    - Dst: mailbox_list_index_status_sync_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1207,1
    - Dst: mailbox_list_index_backend_sync_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - status_r
    argTypes:
    - struct mailbox_sync_context*
    - struct mailbox_sync_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1196
    functionDepth: 11
    functionLinenumber: 1196
    functionLinenumberEnd: 1212
    functionName: mailbox_list_index_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - INDEX_LIST_STORAGE_CONTEXT
    - struct index_list_mailbox*::module_ctx::super::sync_deinit
    - mailbox_list_index_backend_sync_deinit
    - mailbox_list_index_status_sync_deinit
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_sync_deinit(struct mailbox_sync_context *ctx,\n\t\t\t
      \      struct mailbox_sync_status *status_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1217,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1223,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1226,1
    - Dst: mailbox_list_index_status_init_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1239,1
    - Dst: mailbox_list_index_backend_init_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1214
    functionDepth: 1
    functionLinenumber: 1214
    functionLinenumberEnd: 1241
    functionName: mailbox_list_index_mailbox_allocated
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_status_init_mailbox
    - p_new
    - INDEX_LIST_CONTEXT
    - mailbox_list_index_backend_init_mailbox
    - MODULE_CONTEXT_SET
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_mailbox_allocated(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add_internal
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index.c:1253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1251
    functionDepth: 2
    functionLinenumber: 1251
    functionLinenumberEnd: 1254
    functionName: mailbox_list_index_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index.c
    functionUses: 1
    functionsReached:
    - mail_storage_hooks_add_internal
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:44,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:51,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:54,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:58,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 59
    functionName: mail_storage_list_index_rebuild_get_namespaces
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_count
    - array_append_space
    - p_array_init
    linkageType: ''
    returnType: bool
    signature: bool mail_storage_list_index_rebuild_get_namespaces(struct mail_storage_list_index_rebuild_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ns1
    - ns2
    argTypes:
    - struct mail_storage_list_index_rebuild_ns*
    - struct mail_storage_list_index_rebuild_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: rebuild_ns_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int rebuild_ns_cmp(const struct mail_storage_list_index_rebuild_ns
      *ns1,\n\t\t\t  const struct mail_storage_list_index_rebuild_ns *ns2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:75,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:77,1
    - Dst: mailbox_list_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:78,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 67
    functionDepth: 5
    functionLinenumber: 67
    functionLinenumberEnd: 86
    functionName: mail_storage_list_index_rebuild_lock_lists
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - array_sort
    - mailbox_list_index_sync_begin
    - array_foreach_modifiable
    - mail_storage_copy_list_error
    linkageType: ''
    returnType: int
    signature: int mail_storage_list_index_rebuild_lock_lists(struct mail_storage_list_index_rebuild_ctx
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:93,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 8
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: mail_storage_list_index_rebuild_unlock_lists
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - mailbox_list_index_sync_end
    linkageType: ''
    returnType: void
    signature: void mail_storage_list_index_rebuild_unlock_lists(struct mail_storage_list_index_rebuild_ctx
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:104,1
    - Dst: mail_index_open
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:109,1
    - Dst: mail_index_ext_lookup
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:110,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:111,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:114,1
    - Dst: mailbox_name_hdr_decode_storage_name
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:116,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:119,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:121,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:124,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:126,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:128,1
    - Dst: mail_index_get_last_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:129,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - ctx
    - list
    - path
    - name_r
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    - struct mailbox_list*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 99
    functionDepth: 6
    functionLinenumber: 99
    functionLinenumberEnd: 133
    functionName: try_get_mailbox_name
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - mail_index_ext_lookup
    - mail_index_alloc
    - e_debug
    - mail_index_close
    - mail_index_get_last_error
    - mail_index_view_open
    - mailbox_name_hdr_decode_storage_name
    - mail_index_open
    - mail_index_get_header_ext
    - mail_index_free
    - mail_index_view_close
    linkageType: ''
    returnType: bool
    signature: "bool try_get_mailbox_name(struct mail_storage_list_index_rebuild_ctx
      *ctx,\n\t\t\t\t struct mailbox_list *list, const char *path,\n\t\t\t\t const
      char **name_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:139,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:140,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:141,1
    - Dst: try_get_mailbox_name
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:145,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:147,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:149,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:152,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:154,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:155,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - box
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    - struct mail_storage_list_index_rebuild_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 135
    functionDepth: 7
    functionLinenumber: 135
    functionLinenumberEnd: 160
    functionName: get_box_name
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - strcmp
    - e_debug
    - try_get_mailbox_name
    - guid_128_to_string
    - t_strdup_printf
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: char
    signature: "char *get_box_name(struct mail_storage_list_index_rebuild_ctx *ctx,\n\t\t\t\tstruct
      mail_storage_list_index_rebuild_mailbox *box)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:171,1
    - Dst: fs_iter_init_with_event
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:172,1
    - Dst: fs_iter_next
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:175,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:176,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:176,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:177,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:178,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:179,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:181,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:182,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:184,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:186,1
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:190,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - list
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 162
    functionDepth: 4
    functionLinenumber: 162
    functionLinenumberEnd: 197
    functionName: mail_storage_list_index_fill_storage_mailboxes
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - fs_iter_init_with_event
    - hash_table_update
    - fs_iter_next
    - p_new
    - e_debug
    - fs_iter_deinit
    - guid_128_to_string
    - mailbox_list_get_root_forced
    - if
    - guid_128_copy
    - guid_128_from_string
    - mail_storage_set_critical
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int mail_storage_list_index_fill_storage_mailboxes(struct mail_storage_list_index_rebuild_ctx
      *ctx,\n\t\t\t\t\t       struct mailbox_list *list)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:207,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:214,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:215,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:220,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:223,1
    - Dst: mailbox_name_sanitize
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:225,1
    - Dst: mailbox_name_sanitize
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:225,1
    - Dst: mailbox_list_index_sync_delete
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:227,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:229,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:231,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:234,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - rebuild_ns
    - box
    - rebuild_box
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    - struct mail_storage_list_index_rebuild_ns*
    - struct mailbox*
    - struct mail_storage_list_index_rebuild_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 199
    functionDepth: 5
    functionLinenumber: 199
    functionLinenumberEnd: 238
    functionName: mail_storage_list_remove_duplicate
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_last_internal_error
    - p_strdup
    - mailbox_name_sanitize
    - e_debug
    - strlen
    - guid_128_to_string
    - e_warning
    - mailbox_list_index_sync_delete
    - strncmp
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: "int mail_storage_list_remove_duplicate(struct mail_storage_list_index_rebuild_ctx
      *ctx,\n\t\t\t\t   struct mail_storage_list_index_rebuild_ns *rebuild_ns,\n\t\t\t\t
      \  struct mailbox *box,\n\t\t\t\t   struct mail_storage_list_index_rebuild_mailbox
      *rebuild_box)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:253,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:255,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:256,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:258,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:261,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:262,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:263,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:268,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:270,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:272,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:273,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:275,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:276,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:277,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:280,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:281,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:283,1
    - Dst: mail_storage_list_remove_duplicate
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:289,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:294,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - rebuild_ns
    - info
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    - struct mail_storage_list_index_rebuild_ns*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 240
    functionDepth: 8
    functionLinenumber: 240
    functionLinenumberEnd: 296
    functionName: mail_storage_list_index_find_indexed_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - mailbox_free
    - p_new
    - mailbox_get_last_internal_error
    - e_debug
    - guid_128_to_string
    - t_strdup_printf
    - guid_128_copy
    - mailbox_alloc
    - hash_table_insert
    - hash_table_lookup
    - mail_storage_set_critical
    - mailbox_get_metadata
    - mail_storage_list_remove_duplicate
    linkageType: ''
    returnType: int
    signature: "int mail_storage_list_index_find_indexed_mailbox(struct mail_storage_list_index_rebuild_ctx
      *ctx,\n\t\t\t\t\t     struct mail_storage_list_index_rebuild_ns *rebuild_ns,\n\t\t\t\t\t
      \    const struct mailbox_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:306,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:310,1
    - Dst: mail_storage_list_index_find_indexed_mailbox
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - rebuild_ns
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    - struct mail_storage_list_index_rebuild_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 298
    functionDepth: 9
    functionLinenumber: 298
    functionLinenumberEnd: 312
    functionName: mail_storage_list_index_find_indexed_mailboxes
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - mailbox_list_iter_next
    - mail_storage_list_index_find_indexed_mailbox
    - mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: "int mail_storage_list_index_find_indexed_mailboxes(struct mail_storage_list_index_rebuild_ctx
      *ctx,\n\t\t\t\t\t       struct mail_storage_list_index_rebuild_ns *rebuild_ns)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:326,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:327,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:330,1
    - Dst: mailbox_mark_index_deleted
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:333,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:335,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:338,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:340,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:342,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 322
    functionDepth: 10
    functionLinenumber: 322
    functionLinenumberEnd: 344
    functionName: mail_storage_list_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - mailbox_get_last_internal_error
    - mailbox_mark_index_deleted
    - e_debug
    - mailbox_get_vname
    - mailbox_set_critical
    - mailbox_create
    linkageType: ''
    returnType: int
    signature: "int mail_storage_list_mailbox_create(struct mailbox *box,\n\t\t\t\t
      const struct mailbox_update *update)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random_fill
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:349,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:350,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 352
    functionName: mailbox_name_add_random_suffix
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - binary_to_hex
    - random_fill
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: char *mailbox_name_add_random_suffix(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:367,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:368,1
    - Dst: mailbox_name_add_random_suffix
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:370,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:373,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:374,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:375,1
    - Dst: mail_storage_list_mailbox_create
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:378,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:380,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:381,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:383,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:386,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:393,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:394,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:395,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:396,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:397,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:399,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:402,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 5
    argNames:
    - ctx
    - list
    - guid_p
    - boxname
    - retry
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    - struct mailbox_list*
    - uint8_t*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 354
    functionDepth: 11
    functionLinenumber: 354
    functionLinenumberEnd: 404
    functionName: mail_storage_list_index_try_create
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_get_last_mail_error
    - mailbox_free
    - mailbox_open
    - mailbox_get_last_internal_error
    - e_debug
    - guid_128_to_string
    - mail_storage_list_mailbox_create
    - guid_128_copy
    - mailbox_sync
    - mailbox_alloc
    - mailbox_name_add_random_suffix
    - mail_storage_set_critical
    linkageType: ''
    returnType: int
    signature: "int mail_storage_list_index_try_create(struct mail_storage_list_index_rebuild_ctx
      *ctx,\n\t\t\t\t   struct mailbox_list *list,\n\t\t\t\t   const uint8_t *guid_p,\n\t\t\t\t
      \  const char *boxname,\n\t\t\t\t   bool retry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_list_index_try_create
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - list
    - boxname
    - guid_p
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    - struct mailbox_list*
    - char*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 406
    functionDepth: 12
    functionLinenumber: 406
    functionLinenumberEnd: 422
    functionName: mail_storage_list_index_create
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - mail_storage_list_index_try_create
    linkageType: ''
    returnType: int
    signature: "int mail_storage_list_index_create(struct mail_storage_list_index_rebuild_ctx
      *ctx,\n\t\t\t       struct mailbox_list *list,\n\t\t\t       const char *boxname,\n\t\t\t
      \      const uint8_t *guid_p)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespaces_get_root_sep
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:443,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:446,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:450,1
    - Dst: mailbox_tree_init_size
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:452,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:454,1
    - Dst: get_box_name
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:458,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:460,1
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:463,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:465,1
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:473,1
    - Dst: mailbox_name_add_random_suffix
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:480,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 436
    functionDepth: 8
    functionLinenumber: 436
    functionLinenumberEnd: 482
    functionName: mail_storage_list_index_add_missing
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - get_box_name
    - container_of
    - hash_table_iterate
    - e_debug
    - hash_table_iterate_init
    - mail_storage_set_critical
    - mailbox_tree_init_size
    - mailbox_tree_get
    - mailbox_name_add_random_suffix
    - mail_namespaces_get_root_sep
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int mail_storage_list_index_add_missing(struct mail_storage_list_index_rebuild_ctx
      *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:524,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:525,1
    - Dst: mail_storage_list_index_fill_storage_mailboxes
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:528,1
    - Dst: mail_storage_list_index_find_indexed_mailboxes
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:530,1
    - Dst: mail_storage_list_index_rebuild_unlock_lists
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:538,1
    - Dst: mail_storage_list_index_add_missing
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:539,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_storage_list_index_rebuild_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 520
    functionDepth: 10
    functionLinenumber: 520
    functionLinenumberEnd: 542
    functionName: mail_storage_list_index_rebuild_ctx
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mail_storage_list_index_add_missing
    - mail_storage_list_index_fill_storage_mailboxes
    - mail_storage_list_index_rebuild_unlock_lists
    - array_foreach_modifiable
    - mail_storage_list_index_find_indexed_mailboxes
    linkageType: ''
    returnType: int
    signature: int mail_storage_list_index_rebuild_ctx(struct mail_storage_list_index_rebuild_ctx
      *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_set_critical
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:551,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:561,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:563,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:564,1
    - Dst: mail_storage_list_index_rebuild_get_namespaces
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:567,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:568,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:569,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:578,1
    - Dst: mail_storage_list_index_rebuild_lock_lists
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:579,1
    - Dst: mail_storage_list_index_rebuild_ctx
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:580,1
    - Dst: mail_storage_list_index_rebuild_unlock_lists
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:581,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:582,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:584,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:585,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 544
    functionDepth: 11
    functionLinenumber: 544
    functionLinenumberEnd: 591
    functionName: mail_storage_list_index_rebuild_int
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - mail_storage_list_index_rebuild_lock_lists
    - hash_table_create
    - mail_storage_list_index_rebuild_ctx
    - event_reason_begin
    - pool_unref
    - mail_storage_list_index_rebuild_get_namespaces
    - event_reason_end
    - mail_storage_list_index_rebuild_unlock_lists
    - mail_storage_set_critical
    - hash_table_destroy
    linkageType: ''
    returnType: int
    signature: int mail_storage_list_index_rebuild_int(struct mail_storage *storage)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_list_index_rebuild_int
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:605,1
    - Dst: mailbox_list_index_set_uncorrupted
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:610,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - storage
    argTypes:
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 593
    functionDepth: 12
    functionLinenumber: 593
    functionLinenumberEnd: 614
    functionName: mail_storage_list_index_rebuild_and_set_uncorrupted
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 3
    functionsReached:
    - mail_storage_list_index_rebuild_int
    - mailbox_list_index_set_uncorrupted
    linkageType: ''
    returnType: int
    signature: int mail_storage_list_index_rebuild_and_set_uncorrupted(struct mail_storage
      *storage)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:627,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:631,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:635,1
    - Dst: mail_storage_list_index_rebuild_int
      Src: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c:639,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - storage
    - reason
    argTypes:
    - struct mail_storage*
    - enum mail_storage_list_index_rebuild_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 616
    functionDepth: 12
    functionLinenumber: 616
    functionLinenumberEnd: 640
    functionName: mail_storage_list_index_rebuild
    functionSourceFile: /src/dovecot/src/lib-storage/list/mail-storage-list-index-rebuild.c
    functionUses: 0
    functionsReached:
    - e_debug
    - e_warning
    - mail_storage_list_index_rebuild_int
    linkageType: ''
    returnType: int
    signature: "int mail_storage_list_index_rebuild(struct mail_storage *storage,\n\t\t\t\t
      \   enum mail_storage_list_index_rebuild_reason reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:23,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 30
    functionName: none_list_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *none_list_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: none_list_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void none_list_deinit(struct mailbox_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: none_list_get_hierarchy_sep
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char none_list_get_hierarchy_sep(struct mailbox_list *list ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: none_list_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int none_list_get_path(struct mailbox_list *list ATTR_UNUSED,\n\t\t
      \  const char *name ATTR_UNUSED,\n\t\t   enum mailbox_list_path_type type ATTR_UNUSED,\n\t\t
      \  const char **path_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: none_list_get_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *\nnone_list_get_temp_prefix(struct mailbox_list *list ATTR_UNUSED,\n\t\t\t
      \ bool global ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: none_list_subscriptions_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int none_list_subscriptions_refresh(struct mailbox_list *src_list
      ATTR_UNUSED,\n\t\t\t\tstruct mailbox_list *dest_list ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - list
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: none_list_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    linkageType: ''
    returnType: int
    signature: "int none_list_set_subscribed(struct mailbox_list *list,\n\t\t\t\t
      \   const char *name ATTR_UNUSED,\n\t\t\t\t    bool set ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: none_list_delete_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    linkageType: ''
    returnType: int
    signature: "int none_list_delete_mailbox(struct mailbox_list *list,\n\t\t\t\t
      \   const char *name ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - list
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: none_list_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    linkageType: ''
    returnType: int
    signature: "int none_list_delete_dir(struct mailbox_list *list,\n\t\t\t\tconst
      char *name ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - oldlist
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: none_list_rename_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    linkageType: ''
    returnType: int
    signature: "int none_list_rename_mailbox(struct mailbox_list *oldlist,\n\t\t\t
      const char *oldname ATTR_UNUSED,\n\t\t\t struct mailbox_list *newlist ATTR_UNUSED,\n\t\t\t
      const char *newname ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:106,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:107,1
    - Dst: imap_match_init_multiple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:111,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:112,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:113,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 121
    functionName: none_list_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - mail_namespace_get_sep
    - imap_match_init_multiple
    - p_new
    - imap_match
    - array_create
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nnone_list_iter_init(struct
      mailbox_list *list,\n\t\t    const char *const *patterns,\n\t\t    enum mailbox_list_iter_flags
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-none.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: none_list_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int none_list_iter_deinit(struct mailbox_list_iterate_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 141
    functionName: none_list_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      none_list_iter_next(struct mailbox_list_iterate_context *_ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - flags
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    - enum mailbox_list_file_type
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 152
    functionName: none_list_get_mailbox_flags
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int none_list_get_mailbox_flags(struct mailbox_list *list ATTR_UNUSED,\n\t\t\t
      \   const char *dir ATTR_UNUSED,\n\t\t\t    const char *fname ATTR_UNUSED,\n\t\t\t
      \   enum mailbox_list_file_type type ATTR_UNUSED,\n\t\t\t    enum mailbox_info_flags
      *flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:36,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:38,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 45
    functionName: index_list_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_strconcat
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *index_list_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _list
    - error_r
    argTypes:
    - struct mailbox_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: index_list_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int index_list_init(struct mailbox_list *_list, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: index_list_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void index_list_deinit(struct mailbox_list *_list)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 78
    functionName: index_list_get_hierarchy_sep
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char index_list_get_hierarchy_sep(struct mailbox_list *list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:93,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:96,1
    - Dst: mailbox_list_index_refresh_force
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:99,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - list
    - view
    - name
    - node_r
    - seq_r
    argTypes:
    - struct index_mailbox_list*
    - struct mail_index_view*
    - char*
    - struct mailbox_list_index_node**
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 80
    functionDepth: 15
    functionLinenumber: 80
    functionLinenumberEnd: 104
    functionName: index_list_get_refreshed_node_seq
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_refresh_force
    - mailbox_list_index_lookup
    - i_panic
    - mail_index_lookup_seq
    linkageType: ''
    returnType: int
    signature: "int index_list_get_refreshed_node_seq(struct index_mailbox_list *list,\n\t\t\t\t
      \ struct mail_index_view *view,\n\t\t\t\t  const char *name,\n\t\t\t\t  struct
      mailbox_list_index_node **node_r,\n\t\t\t\t  uint32_t *seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:110,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _list
    - root_dir
    - mailbox_guid
    argTypes:
    - struct mailbox_list*
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 113
    functionName: index_get_guid_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - guid_128_to_string
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\nindex_get_guid_path(struct mailbox_list *_list, const char
      *root_dir,\n\t\t    const guid_128_t mailbox_guid)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_default_get_root_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:130,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:143,1
    - Dst: mailbox_list_default_get_root_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:147,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:151,1
    - Dst: index_get_guid_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:152,1
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:159,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:165,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:169,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:172,1
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:175,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:177,1
    - Dst: index_list_get_refreshed_node_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:178,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:184,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:186,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:187,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:189,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:192,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:193,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:194,1
    - Dst: index_get_guid_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:197,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:201,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 59
    argCount: 4
    argNames:
    - _list
    - name
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 115
    functionDepth: 16
    functionLinenumber: 115
    functionLinenumberEnd: 203
    functionName: index_list_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_panic
    - i_unreached
    - mail_index_lookup_seq
    - mailbox_list_index_lookup
    - mailbox_list_set_error
    - mail_index_view_open
    - index_list_get_refreshed_node_seq
    - mailbox_list_index_refresh
    - mailbox_list_index_status
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mailbox_list_default_get_root_path
    - INDEX_LIST_CONTEXT_REQUIRE
    - i_assert
    - index_get_guid_path
    - mail_index_view_close
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int index_list_get_path(struct mailbox_list *_list, const char *name,\n\t\t
      \   enum mailbox_list_path_type type, const char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _list
    - global
    argTypes:
    - struct mailbox_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: index_list_get_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      index_list_get_temp_prefix(struct mailbox_list *_list, bool global)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:220,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:225,1
    - Dst: subsfile_set_subscribed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _list
    - name
    - set
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 213
    functionDepth: 7
    functionLinenumber: 213
    functionLinenumberEnd: 232
    functionName: index_list_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - t_strconcat
    - subsfile_set_subscribed
    linkageType: ''
    returnType: int
    signature: "int index_list_set_subscribed(struct mailbox_list *_list,\n\t\t\t\t
      \    const char *name, bool set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:242,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - list
    - name
    - existence_r
    argTypes:
    - struct index_mailbox_list*
    - char*
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 234
    functionDepth: 4
    functionLinenumber: 234
    functionLinenumberEnd: 258
    functionName: index_list_node_exists
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_lookup
    - mailbox_list_index_refresh
    linkageType: ''
    returnType: int
    signature: "int index_list_node_exists(struct index_mailbox_list *list, const
      char *name,\n\t\t       enum mailbox_existence *existence_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:269,1
    - Dst: mailbox_list_index_sync_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:272,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:276,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:283,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct index_mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 260
    functionDepth: 12
    functionLinenumber: 260
    functionLinenumberEnd: 286
    functionName: index_list_mailbox_create_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_sync_name
    - mailbox_list_index_sync_begin
    - mailbox_list_index_sync_end
    - mail_index_update_flags
    linkageType: ''
    returnType: int
    signature: int index_list_mailbox_create_dir(struct index_mailbox_list *list,
      const char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:294,1
    - Dst: mailbox_list_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:302,1
    - Dst: mailbox_list_index_sync_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:305,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:311,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:318,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:322,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:324,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:325,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:326,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:326,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:329,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:332,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:339,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:340,1
    - Dst: mail_index_get_header
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:341,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:342,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:346,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:347,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:349,1
    - Dst: mailbox_list_index_reset
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:351,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - box
    - mailbox_guid
    argTypes:
    - struct mailbox*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 288
    functionDepth: 12
    functionLinenumber: 288
    functionLinenumberEnd: 355
    functionName: index_list_mailbox_create_selectable
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mailbox_list_index_sync_begin
    - mailbox_list_index_sync_end
    - mail_index_update_flags
    - ENUM_NEGATE
    - mail_index_view_open
    - mail_index_get_header
    - mail_index_lookup_ext
    - mailbox_list_index_reset
    - mail_index_update_ext
    - mailbox_list_index_sync_name
    - INDEX_LIST_CONTEXT_REQUIRE
    - i_assert
    - mail_index_view_close
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int index_list_mailbox_create_selectable(struct mailbox *box,\n\t\t\t\t
      \    const guid_128_t mailbox_guid)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:361,1
    - Dst: index_list_node_exists
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:369,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:370,1
    - Dst: index_list_mailbox_create_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:375,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:376,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:383,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:386,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:387,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:398,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:401,1
    - Dst: struct index_list_mailbox*::module_ctx::super::create_box
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:403,1
    - Dst: index_list_mailbox_create_selectable
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:408,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:410,1
    - Dst: mail_storage_last_error_push
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:417,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:418,1
    - Dst: mail_storage_last_error_pop
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:421,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:425,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:433,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 3
    argNames:
    - box
    - update
    - directory
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 357
    functionDepth: 13
    functionLinenumber: 357
    functionLinenumberEnd: 438
    functionName: index_list_mailbox_create
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - i_zero
    - index_list_mailbox_create_selectable
    - index_list_mailbox_create_dir
    - index_list_node_exists
    - struct index_list_mailbox*::module_ctx::super::create_box
    - mail_storage_copy_list_error
    - guid_128_generate
    - guid_128_copy
    - mailbox_delete
    - mail_storage_last_error_push
    - INDEX_LIST_STORAGE_CONTEXT
    - guid_128_is_empty
    - mail_storage_set_error
    - mail_storage_last_error_pop
    linkageType: ''
    returnType: int
    signature: "int index_list_mailbox_create(struct mailbox *box,\n\t\t\t  const
      struct mailbox_update *update, bool directory)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:444,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:447,1
    - Dst: struct index_list_mailbox*::module_ctx::super::update_box
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:452,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:456,1
    - Dst: mailbox_list_default_get_root_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:457,1
    - Dst: index_get_guid_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:460,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:462,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:464,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:467,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:468,1
    - Dst: mailbox_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:471,1
    - Dst: mailbox_list_index_update_mailbox_index
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:477,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - box
    - update
    argTypes:
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 440
    functionDepth: 6
    functionLinenumber: 440
    functionLinenumberEnd: 479
    functionName: index_list_mailbox_update
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - rename
    - mailbox_set_critical
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - mailbox_list_index_update_mailbox_index
    - INDEX_LIST_STORAGE_CONTEXT
    - mailbox_list_default_get_root_path
    - struct index_list_mailbox*::module_ctx::super::update_box
    - guid_128_is_empty
    - index_get_guid_path
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: "int index_list_mailbox_update(struct mailbox *box,\n\t\t\t  const
      struct mailbox_update *update)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_is_autocreated
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:485,1
    - Dst: index_list_node_exists
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:493,1
    - Dst: mail_storage_copy_list_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - box
    - auto_boxes
    - existence_r
    argTypes:
    - struct mailbox*
    - bool
    - enum mailbox_existence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 481
    functionDepth: 5
    functionLinenumber: 481
    functionLinenumberEnd: 498
    functionName: index_list_mailbox_exists
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_is_autocreated
    - index_list_node_exists
    - mail_storage_copy_list_error
    linkageType: ''
    returnType: int
    signature: "int index_list_mailbox_exists(struct mailbox *box, bool auto_boxes,\n\t\t\t
      \ enum mailbox_existence *existence_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 500
    functionDepth: 4
    functionLinenumber: 500
    functionLinenumberEnd: 510
    functionName: mailbox_has_corrupted_name
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_lookup
    linkageType: ''
    returnType: bool
    signature: bool mailbox_has_corrupted_name(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_list_rename_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:514,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:521,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:526,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:530,1
    - Dst: index_list_rename_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:531,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - box
    - newname
    argTypes:
    - struct mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 512
    functionDepth: 2
    functionLinenumber: 512
    functionLinenumberEnd: 533
    functionName: index_list_rename_corrupted
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_hierarchy_sep
    - t_strdup_printf
    - strrchr
    - index_list_rename_mailbox
    linkageType: ''
    returnType: void
    signature: void index_list_rename_corrupted(struct mailbox *box, const char *newname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:537,1
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:543,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:545,1
    - Dst: mail_storage_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:546,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:547,1
    - Dst: struct index_list_mailbox*::module_ctx::super::open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:552,1
    - Dst: mailbox_name_hdr_encode
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:569,1
    - Dst: mail_index_get_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:572,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:580,1
    - Dst: mailbox_has_corrupted_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:582,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:585,1
    - Dst: mail_index_ext_resize_hdr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:586,1
    - Dst: mail_index_update_header_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:588,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:590,1
    - Dst: mailbox_name_hdr_decode_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:594,1
    - Dst: index_list_rename_corrupted
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:596,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 535
    functionDepth: 5
    functionLinenumber: 535
    functionLinenumberEnd: 599
    functionName: index_list_mailbox_open
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mail_index_transaction_begin
    - mailbox_name_hdr_encode
    - mail_index_transaction_commit
    - index_list_rename_corrupted
    - mailbox_list_index_lookup
    - mail_index_ext_resize_hdr
    - mailbox_list_index_refresh
    - struct index_list_mailbox*::module_ctx::super::open
    - mailbox_name_hdr_decode_storage_name
    - mail_index_update_header_ext
    - mail_index_get_header_ext
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - INDEX_LIST_STORAGE_CONTEXT
    - memcmp
    - mailbox_has_corrupted_name
    - mail_storage_set_error
    linkageType: ''
    returnType: int
    signature: int index_list_mailbox_open(struct mailbox *box)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:604,1
    - Dst: struct mailbox*::storage::v::list_index_rebuild
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:612,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - box
    - flags
    argTypes:
    - struct mailbox*
    - enum mailbox_sync_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 617
    functionName: mailbox_list_index_backend_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 1
    functionsReached:
    - struct mailbox*::storage::v::list_index_rebuild
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_backend_sync_init(struct mailbox *box,\n\t\t\t\t\t
      \ enum mailbox_sync_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 629
    functionName: mailbox_list_index_backend_sync_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 1
    functionsReached:
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_backend_sync_deinit(struct mailbox *box)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:637,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:639,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:640,1
    - Dst: mailbox_list_delete_mailbox_nonrecursive
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:648,1
    - Dst: mailbox_list_delete_trash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:652,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:654,1
    - Dst: mailbox_list_delete_until_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:660,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 3
    argNames:
    - _list
    - name
    - type
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 631
    functionDepth: 3
    functionLinenumber: 631
    functionLinenumberEnd: 661
    functionName: index_list_try_delete
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - mailbox_list_delete_until_root
    - mailbox_list_set_critical
    - mailbox_list_delete_mailbox_nonrecursive
    - mailbox_list_delete_trash
    linkageType: ''
    returnType: void
    signature: "void index_list_try_delete(struct mailbox_list *_list, const char
      *name,\n\t\t      enum mailbox_list_path_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: index_list_try_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:666,1
    - Dst: index_list_try_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:667,1
    - Dst: index_list_try_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 663
    functionDepth: 4
    functionLinenumber: 663
    functionLinenumberEnd: 669
    functionName: index_list_delete_finish
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - index_list_try_delete
    linkageType: ''
    returnType: void
    signature: void index_list_delete_finish(struct mailbox_list *list, const char
      *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:679,1
    - Dst: mailbox_list_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:686,1
    - Dst: mailbox_list_index_sync_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:688,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:689,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - list
    - name
    - delete_selectable
    argTypes:
    - struct index_mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 671
    functionDepth: 8
    functionLinenumber: 671
    functionLinenumberEnd: 692
    functionName: index_list_delete_entry
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_index_sync_begin
    - mailbox_list_index_sync_delete
    - mailbox_list_index_sync_end
    linkageType: ''
    returnType: int
    signature: "int index_list_delete_entry(struct index_mailbox_list *list, const
      char *name,\n\t\t\tbool delete_selectable)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:699,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:703,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:705,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:712,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:712,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:713,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:724,1
    - Dst: mailbox_list_index_node_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:725,1
    - Dst: index_list_delete_entry
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:726,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:726,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:729,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:729,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:736,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:736,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:737,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:737,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - _list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 694
    functionDepth: 9
    functionLinenumber: 694
    functionLinenumberEnd: 744
    functionName: index_list_try_delete_nonexistent_parent
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - container_of
    - strrchr
    - mailbox_list_index_lookup
    - mailbox_list_index_node_get_path
    - t_strdup_until
    - str_truncate
    - index_list_delete_entry
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: int
    signature: "int index_list_try_delete_nonexistent_parent(struct mailbox_list *_list,\n\t\t\t\t\t
      const char *name)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:754,1
    - Dst: mailbox_list_delete_mailbox_file
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:763,1
    - Dst: mailbox_list_delete_mailbox_nonrecursive
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:765,1
    - Dst: index_list_delete_finish
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:771,1
    - Dst: index_list_delete_entry
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:773,1
    - Dst: index_list_try_delete_nonexistent_parent
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:777,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 2
    argNames:
    - _list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 746
    functionDepth: 10
    functionLinenumber: 746
    functionLinenumberEnd: 780
    functionName: index_list_delete_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - index_list_delete_entry
    - mailbox_list_delete_mailbox_nonrecursive
    - index_list_try_delete_nonexistent_parent
    - index_list_delete_finish
    - mailbox_list_delete_mailbox_file
    linkageType: ''
    returnType: int
    signature: int index_list_delete_mailbox(struct mailbox_list *_list, const char
      *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: index_list_delete_entry
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:788,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:791,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 782
    functionDepth: 9
    functionLinenumber: 782
    functionLinenumberEnd: 796
    functionName: index_list_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - index_list_delete_entry
    - mailbox_list_set_error
    linkageType: ''
    returnType: int
    signature: int index_list_delete_dir(struct mailbox_list *_list, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _list
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 798
    functionDepth: 2
    functionLinenumber: 798
    functionLinenumberEnd: 805
    functionName: index_list_delete_symlink
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    linkageType: ''
    returnType: int
    signature: "int index_list_delete_symlink(struct mailbox_list *_list,\n\t\t\t
      \ const char *name ATTR_UNUSED)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:822,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:827,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:828,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:829,1
    - Dst: mailbox_list_index_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:834,1
    - Dst: mailbox_list_index_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:837,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:839,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:840,1
    - Dst: T_MAIL_ERR_MAILBOX_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:841,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:844,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:845,1
    - Dst: mailbox_list_index_sync_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:847,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:850,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:851,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:855,1
    - Dst: mailbox_list_index_node_unlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:865,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:869,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:871,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:872,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:874,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:876,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:877,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:885,1
    - Dst: mail_index_update_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:886,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:889,1
    - Dst: mail_index_expunge
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:891,1
    - Dst: mailbox_list_index_sync_end
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:893,1
    - Dst: index_list_try_delete_nonexistent_parent
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:896,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 4
    argNames:
    - _oldlist
    - oldname
    - _newlist
    - newname
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 807
    functionDepth: 12
    functionLinenumber: 807
    functionLinenumberEnd: 899
    functionName: index_list_rename_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 1
    functionsReached:
    - mailbox_list_index_sync_end
    - mail_index_lookup_seq
    - mailbox_list_index_lookup
    - mail_index_lookup_ext
    - T_MAIL_ERR_MAILBOX_NOT_FOUND
    - i_panic
    - memcpy
    - mailbox_list_index_sync_name
    - mailbox_list_index_node_unlink
    - mailbox_list_index_sync_begin
    - mailbox_list_set_error
    - index_list_try_delete_nonexistent_parent
    - i_assert
    - ENUM_NEGATE
    - mail_index_update_flags
    - str_begins
    - mail_index_update_ext
    - mailbox_list_get_hierarchy_sep
    - mail_index_expunge
    linkageType: ''
    returnType: int
    signature: "int index_list_rename_mailbox(struct mailbox_list *_oldlist, const
      char *oldname,\n\t\t\t  struct mailbox_list *_newlist, const char *newname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:908,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:909,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - list
    - ATTR_UNUSED
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 915
    functionName: index_list_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - array_create
    - p_new
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nindex_list_iter_init(struct
      mailbox_list *list,\n\t\t     const char *const *patterns ATTR_UNUSED,\n\t\t
      \    enum mailbox_list_iter_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 921
    functionName: index_list_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      index_list_iter_next(struct mailbox_list_iterate_context *ctx ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 923
    functionDepth: 1
    functionLinenumber: 923
    functionLinenumberEnd: 927
    functionName: index_list_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int index_list_iter_deinit(struct mailbox_list_iterate_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c:959,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - box
    - v
    argTypes:
    - struct mailbox*
    - struct mailbox_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 970
    functionName: mailbox_list_index_backend_init_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-backend.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_backend_init_mailbox(struct mailbox *box,\n\t\t\t\t\t
      \    struct mailbox_vfuncs *v)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 8
    functionName: INDEX_LIST_STORAGE_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-storage.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INDEX_LIST_STORAGE_CONTEXT(obj)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - nnode
    - status
    argTypes:
    - struct mailbox_notify_node*
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 96
    functionName: mailbox_list_index_get_changed_events
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mailbox_list_notify_event
    signature: "enum mailbox_list_notify_event mailbox_list_index_get_changed_events(const
      struct mailbox_notify_node *nnode,\n\t\t\t\t      const struct mailbox_status
      *status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - nnode
    - status
    argTypes:
    - struct mailbox_notify_node*
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 107
    functionName: mailbox_notify_node_update_status
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_notify_node_update_status(struct mailbox_notify_node
      *nnode,\n\t\t\t\t  struct mailbox_status *status)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:112,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:114,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:115,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 109
    functionDepth: 9
    functionLinenumber: 109
    functionLinenumberEnd: 120
    functionName: mailbox_list_index_notify_init_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_open
    - i_strconcat
    - mailbox_free
    - mailbox_alloc
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_init_inbox(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:126,1
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:135,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:137,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:140,1
    - Dst: mail_index_view_dup_private
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:141,1
    - Dst: mailbox_list_notify_tree_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:142,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:143,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:144,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:145,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:146,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:147,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:148,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:149,1
    - Dst: mailbox_list_iter_subscriptions_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:152,1
    - Dst: mailbox_tree_sort
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:153,1
    - Dst: mailbox_tree_dup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:155,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:158,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:165,1
    - Dst: mailbox_list_index_notify_init_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:169,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - list
    - mask
    - notify_r
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_notify_event
    - struct mailbox_list_notify**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 122
    functionDepth: 10
    functionLinenumber: 122
    functionLinenumberEnd: 174
    functionName: mailbox_list_index_notify_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mailbox_list_get_path
    - mailbox_list_notify_tree_init
    - mailbox_tree_dup
    - mail_index_view_open
    - mailbox_tree_sort
    - mailbox_list_index_refresh
    - i_strdup
    - mail_index_view_dup_private
    - mailbox_list_iter_subscriptions_refresh
    - INDEX_LIST_CONTEXT
    - i_new
    - mailbox_list_index_notify_init_inbox
    - str_new
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_notify_init(struct mailbox_list *list,\n\t\t\t\t
      \  enum mailbox_list_notify_event mask,\n\t\t\t\t   struct mailbox_list_notify
      **notify_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:183,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:185,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:186,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:187,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:188,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:189,1
    - Dst: mail_index_view_sync_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:191,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:192,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:193,1
    - Dst: mailbox_list_notify_tree_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:194,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:195,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:196,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:197,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:198,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:199,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:200,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:201,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:202,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:203,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:204,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - notify
    argTypes:
    - struct mailbox_list_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 176
    functionDepth: 4
    functionLinenumber: 176
    functionLinenumberEnd: 205
    functionName: mailbox_list_index_notify_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - io_remove
    - mail_index_view_sync_commit
    - mailbox_list_notify_tree_deinit
    - str_free
    - mailbox_tree_deinit
    - i_free
    - array_free
    - mail_index_view_close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_deinit(struct mailbox_list_notify *notify)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:214,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:219,1
    - Dst: mailbox_list_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:222,1
    - Dst: mailbox_list_index_parse
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:226,1
    - Dst: mailbox_list_index_lookup_uid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:228,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:234,1
    - Dst: memset
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:235,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - inotify
    - view
    - uid
    - items
    - status_r
    - guid_r
    argTypes:
    - struct mailbox_list_notify_index*
    - struct mail_index_view*
    - uint32_t
    - enum mailbox_status_items
    - struct mailbox_status*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 207
    functionDepth: 4
    functionLinenumber: 207
    functionLinenumberEnd: 239
    functionName: notify_lookup_guid
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_index_lookup_seq
    - mailbox_list_index_lookup_uid
    - mailbox_list_index_status
    - mailbox_list_index_parse
    - INDEX_LIST_CONTEXT_REQUIRE
    - memset
    linkageType: ''
    returnType: struct mailbox_list_index_node
    signature: "struct mailbox_list_index_node *\nnotify_lookup_guid(struct mailbox_list_notify_index
      *inotify,\n\t\t   struct mail_index_view *view,\n\t\t   uint32_t uid, enum mailbox_status_items
      items,\n\t\t   struct mailbox_status *status_r, guid_128_t guid_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:247,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:249,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:254,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:256,1
    - Dst: mailbox_list_index_notify_wait
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:262,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 3
    argNames:
    - inotify
    - stat_list
    - stat_inbox
    argTypes:
    - struct mailbox_list_notify_index*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 263
    functionName: notify_update_stat
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - e_error
    - stat
    - mailbox_list_index_notify_wait
    linkageType: ''
    returnType: void
    signature: "void notify_update_stat(struct mailbox_list_notify_index *inotify,\n\t\t\t
      \      bool stat_list, bool stat_inbox)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_update_stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:270,1
    - Dst: mail_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:271,1
    - Dst: mail_index_view_sync_begin
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:274,1
    - Dst: mail_transaction_log_view_mark
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:275,1
    - Dst: mail_index_view_sync_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:276,1
    - Dst: mail_transaction_log_view_rewind
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 265
    functionDepth: 12
    functionLinenumber: 265
    functionLinenumberEnd: 281
    functionName: mailbox_list_index_notify_sync_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - mail_index_view_sync_begin
    - mail_transaction_log_view_mark
    - notify_update_stat
    - mail_index_refresh
    - mail_transaction_log_view_rewind
    - mail_index_view_sync_next
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_sync_init(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:290,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:311,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - inotify
    - uid
    argTypes:
    - struct mailbox_list_notify_index*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 313
    functionName: notify_ext_rec
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool notify_ext_rec(struct mailbox_list_notify_index *inotify,\n\t\t\t
      \  uint32_t uid)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:319,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:324,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:342,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:344,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:355,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:357,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:367,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:374,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:376,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:379,1
    - Dst: mail_index_map_lookup_ext
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:380,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:381,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:402,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:409,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:413,1
    - Dst: notify_ext_rec
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:417,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 65
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 424
    functionName: mailbox_list_index_notify_read_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - seq_range_array_add
    - array_idx
    - t_strndup
    - e_error
    - array_count
    - mail_index_map_lookup_ext
    - notify_ext_rec
    - INDEX_LIST_CONTEXT_REQUIRE
    - array_is_created
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_notify_read_next(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct mailbox_list_inotify_entry*
    - struct mailbox_list_inotify_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 441
    functionName: mailbox_list_inotify_entry_guid_cmp
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_inotify_entry_guid_cmp(const struct mailbox_list_inotify_entry
      *r1,\n\t\t\t\t    const struct mailbox_list_inotify_entry *r2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:456,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:456,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:457,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:458,1
    - Dst: notify_lookup_guid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:460,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:462,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:463,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:466,1
    - Dst: mailbox_list_index_parse
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:470,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:472,1
    - Dst: notify_lookup_guid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:474,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:476,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:477,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:479,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:485,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:487,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:490,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:491,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:495,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:497,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 443
    functionDepth: 5
    functionLinenumber: 443
    functionLinenumberEnd: 501
    functionName: mailbox_list_index_notify_find_renames
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - memcpy
    - array_append_space
    - array_get
    - notify_lookup_guid
    - mailbox_list_index_parse
    - array_count
    - t_array_init
    - memcmp
    - array_sort
    - guid_128_is_empty
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_find_renames(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_subscriptions_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:512,1
    - Dst: mailbox_tree_sort
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:514,1
    - Dst: mailbox_tree_dup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:517,1
    - Dst: mailbox_tree_iterate_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:525,1
    - Dst: mailbox_tree_iterate_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:526,1
    - Dst: mailbox_tree_get_pool
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:528,1
    - Dst: mailbox_tree_iterate_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:531,1
    - Dst: mailbox_tree_iterate_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:535,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:546,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:553,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:554,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:558,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:559,1
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:564,1
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:565,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:567,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 49
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 503
    functionDepth: 3
    functionLinenumber: 503
    functionLinenumberEnd: 569
    functionName: mailbox_list_index_notify_find_subscribes
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - mailbox_tree_dup
    - array_push_back
    - mailbox_tree_sort
    - mailbox_tree_iterate_deinit
    - mailbox_list_iter_subscriptions_refresh
    - mailbox_tree_iterate_next
    - mailbox_tree_iterate_init
    - mailbox_tree_deinit
    - mailbox_tree_get_pool
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_find_subscribes(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:574,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:576,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 586
    functionName: mailbox_list_index_notify_reset_iters
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_init
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_reset_iters(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_notify_sync_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:594,1
    - Dst: mailbox_list_index_notify_read_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:597,1
    - Dst: mail_index_view_sync_commit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:600,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:603,1
    - Dst: seq_range_array_remove_seq_range
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:605,1
    - Dst: mailbox_list_index_notify_reset_iters
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:607,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:608,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:609,1
    - Dst: mailbox_list_index_notify_find_renames
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:610,1
    - Dst: mailbox_list_index_notify_reset_iters
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:611,1
    - Dst: mailbox_list_index_notify_find_subscribes
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:614,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 588
    functionDepth: 13
    functionLinenumber: 588
    functionLinenumberEnd: 617
    functionName: mailbox_list_index_notify_read_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_notify_find_subscribes
    - mailbox_list_index_notify_find_renames
    - mailbox_list_index_notify_sync_init
    - mailbox_list_index_notify_reset_iters
    - seq_range_array_remove_seq_range
    - array_count
    - mail_index_view_sync_commit
    - mailbox_list_index_notify_read_next
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_read_init(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:623,1
    - Dst: mail_index_view_dup_private
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:624,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:626,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:627,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:628,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:629,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:630,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 634
    functionName: mailbox_list_index_notify_read_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - mail_index_view_dup_private
    - array_clear
    - mail_index_view_close
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_read_deinit(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:646,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:648,1
    - Dst: notify_lookup_guid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:649,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:655,1
    - Dst: mailbox_list_index_node_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:656,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:657,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 6
    argNames:
    - inotify
    - view
    - uid
    - items
    - status_r
    - rec_r
    argTypes:
    - struct mailbox_list_notify_index*
    - struct mail_index_view*
    - uint32_t
    - enum mailbox_status_items
    - struct mailbox_status*
    - struct mailbox_list_notify_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 636
    functionDepth: 5
    functionLinenumber: 636
    functionLinenumberEnd: 664
    functionName: mailbox_list_index_notify_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - notify_lookup_guid
    - mailbox_list_index_node_get_path
    - str_truncate
    - mailbox_list_get_vname
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_notify_lookup(struct mailbox_list_notify_index
      *inotify,\n\t\t\t\t struct mail_index_view *view,\n\t\t\t\t uint32_t uid, enum
      mailbox_status_items items,\n\t\t\t\t struct mailbox_status *status_r,\n\t\t\t\t
      struct mailbox_list_notify_rec **rec_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:675,1
    - Dst: mailbox_list_index_notify_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:678,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:681,1
    - Dst: mailbox_list_index_notify_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:684,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - inotify
    - idx
    argTypes:
    - struct mailbox_list_notify_index*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 666
    functionDepth: 6
    functionLinenumber: 666
    functionLinenumberEnd: 691
    functionName: mailbox_list_index_notify_rename
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - t_strdup
    - mailbox_list_index_notify_lookup
    - array_idx
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_notify_rename(struct mailbox_list_notify_index
      *inotify,\n\t\t\t\t unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:699,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:700,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - inotify
    - idx
    argTypes:
    - struct mailbox_list_notify_index*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 705
    functionName: mailbox_list_index_notify_subscribe
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_idx_elem
    - mailbox_list_get_storage_name
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_notify_subscribe(struct mailbox_list_notify_index
      *inotify,\n\t\t\t\t    unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:713,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:714,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - inotify
    - idx
    argTypes:
    - struct mailbox_list_notify_index*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 719
    functionName: mailbox_list_index_notify_unsubscribe
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_idx_elem
    - mailbox_list_get_storage_name
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_notify_unsubscribe(struct mailbox_list_notify_index
      *inotify,\n\t\t\t\t      unsigned int idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_notify_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - inotify
    - uid
    argTypes:
    - struct mailbox_list_notify_index*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 721
    functionDepth: 6
    functionLinenumber: 721
    functionLinenumberEnd: 733
    functionName: mailbox_list_index_notify_expunge
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_notify_lookup
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_notify_expunge(struct mailbox_list_notify_index
      *inotify,\n\t\t\t\t  uint32_t uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_notify_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:742,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - inotify
    - uid
    argTypes:
    - struct mailbox_list_notify_index*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 735
    functionDepth: 6
    functionLinenumber: 735
    functionLinenumberEnd: 747
    functionName: mailbox_list_index_notify_new
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - mailbox_list_index_notify_lookup
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_notify_new(struct mailbox_list_notify_index
      *inotify,\n\t\t\t      uint32_t uid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_notify_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:757,1
    - Dst: mailbox_list_notify_tree_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:767,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:771,1
    - Dst: mailbox_list_index_get_changed_events
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:774,1
    - Dst: mailbox_notify_node_update_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:776,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - inotify
    - uid
    argTypes:
    - struct mailbox_list_notify_index*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 749
    functionDepth: 6
    functionLinenumber: 749
    functionLinenumberEnd: 778
    functionName: mailbox_list_index_notify_change
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_list_index_get_changed_events
    - mailbox_notify_node_update_status
    - mailbox_list_index_notify_lookup
    - mailbox_list_notify_tree_lookup
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_index_notify_change(struct mailbox_list_notify_index
      *inotify,\n\t\t\t\t uint32_t uid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:786,1
    - Dst: mailbox_list_index_notify_expunge
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:788,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:791,1
    - Dst: mailbox_list_index_notify_rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:792,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:797,1
    - Dst: mailbox_list_index_notify_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:799,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:802,1
    - Dst: mailbox_list_index_notify_subscribe
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:803,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:806,1
    - Dst: mailbox_list_index_notify_unsubscribe
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:807,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:812,1
    - Dst: mailbox_list_index_notify_change
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:814,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 780
    functionDepth: 7
    functionLinenumber: 780
    functionLinenumberEnd: 818
    functionName: mailbox_list_index_notify_try_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - mailbox_list_index_notify_expunge
    - mailbox_list_index_notify_unsubscribe
    - mailbox_list_index_notify_rename
    - mailbox_list_index_notify_subscribe
    - array_count
    - mailbox_list_index_notify_new
    - mailbox_list_index_notify_change
    linkageType: ''
    returnType: bool
    signature: bool mailbox_list_index_notify_try_next(struct mailbox_list_notify_index
      *inotify)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:826,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:827,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:828,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:830,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:833,1
    - Dst: mailbox_notify_node_update_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:835,1
    - Dst: mailbox_list_index_get_changed_events
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:836,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 820
    functionDepth: 11
    functionLinenumber: 820
    functionLinenumberEnd: 837
    functionName: mailbox_list_notify_inbox_get_events
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_sync
    - e_error
    - mailbox_list_index_get_changed_events
    - mailbox_get_open_status
    - mailbox_notify_node_update_status
    linkageType: ''
    returnType: enum mailbox_list_notify_event
    signature: enum mailbox_list_notify_event mailbox_list_notify_inbox_get_events(struct
      mailbox_list_notify_index *inotify)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_index_notify_read_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:846,1
    - Dst: mailbox_list_index_handle_corruption
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:847,1
    - Dst: mailbox_list_index_notify_try_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:850,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:860,1
    - Dst: mailbox_list_notify_inbox_get_events
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:864,1
    - Dst: mailbox_list_index_notify_read_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:869,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - notify
    - rec_r
    argTypes:
    - struct mailbox_list_notify*
    - struct mailbox_list_notify_rec**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 839
    functionDepth: 14
    functionLinenumber: 839
    functionLinenumberEnd: 871
    functionName: mailbox_list_index_notify_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_list_index_notify_read_init
    - mailbox_list_notify_inbox_get_events
    - mailbox_list_index_notify_read_deinit
    - mailbox_list_index_handle_corruption
    - mailbox_list_index_notify_try_next
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_index_notify_next(struct mailbox_list_notify *notify,\n\t\t\t\t
      \  const struct mailbox_list_notify_rec **rec_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:875,1
    - Dst: struct mailbox_list_notify_index*::wait_callback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 873
    functionDepth: 1
    functionLinenumber: 873
    functionLinenumberEnd: 877
    functionName: notify_now_callback
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - struct mailbox_list_notify_index*::wait_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void notify_now_callback(struct mailbox_list_notify_index *inotify)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: notify_update_stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:889,1
    - Dst: ST_CHANGED
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:890,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:894,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 879
    functionDepth: 2
    functionLinenumber: 879
    functionLinenumberEnd: 897
    functionName: list_notify_callback
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - notify_update_stat
    - timeout_add_short
    - ST_CHANGED
    linkageType: ''
    returnType: void
    signature: void list_notify_callback(struct mailbox_list_notify_index *inotify)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: notify_update_stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:909,1
    - Dst: ST_CHANGED
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:910,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:916,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 919
    functionName: inbox_notify_callback
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - notify_update_stat
    - timeout_add_short
    - ST_CHANGED
    linkageType: ''
    returnType: void
    signature: void inbox_notify_callback(struct mailbox_list_notify_index *inotify)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_notify_callback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:923,1
    - Dst: inbox_notify_callback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inotify
    argTypes:
    - struct mailbox_list_notify_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 921
    functionDepth: 3
    functionLinenumber: 921
    functionLinenumberEnd: 925
    functionName: full_notify_callback
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - inbox_notify_callback
    - list_notify_callback
    linkageType: ''
    returnType: void
    signature: void full_notify_callback(struct mailbox_list_notify_index *inotify)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:939,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:940,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:941,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:942,1
    - Dst: io_add_notify
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:944,1
    - Dst: io_add_notify
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:949,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:956,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:957,1
    - Dst: notify_update_stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:959,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - notify
    - context
    argTypes:
    - struct mailbox_list_notify*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 927
    functionDepth: 2
    functionLinenumber: 927
    functionLinenumberEnd: 961
    functionName: mailbox_list_index_notify_wait
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 1
    functionsReached:
    - io_add_notify
    - io_remove
    - timeout_add
    - notify_update_stat
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_notify_wait(struct mailbox_list_notify *notify,\n\t\t\t\t
      \   void (*callback)(void *context),\n\t\t\t\t    void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: full_notify_callback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:971,1
    - Dst: notify_now_callback
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c:974,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - notify
    argTypes:
    - struct mailbox_list_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 963
    functionDepth: 4
    functionLinenumber: 963
    functionLinenumberEnd: 975
    functionName: mailbox_list_index_notify_flush
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-notify.c
    functionUses: 0
    functionsReached:
    - full_notify_callback
    - notify_now_callback
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_notify_flush(struct mailbox_list_notify *notify)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:14,1
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:21,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - list
    - flags
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 27
    functionName: iter_use_index
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_index_refresh
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: bool
    signature: "bool iter_use_index(struct mailbox_list *list,\n\t\t\t   enum mailbox_list_iter_flags
      flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:34,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:37,1
    - Dst: iter_use_index
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:39,1
    - Dst: struct mailbox_list_index*::module_ctx::super::iter_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:41,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:44,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:45,1
    - Dst: imap_match_init_multiple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:49,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:50,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:55,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 29
    functionDepth: 4
    functionLinenumber: 29
    functionLinenumberEnd: 60
    functionName: mailbox_list_index_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - pool_alloconly_create
    - imap_match_init_multiple
    - p_new
    - pool_ref
    - iter_use_index
    - INDEX_LIST_CONTEXT_REQUIRE
    - array_create
    - struct mailbox_list_index*::module_ctx::super::iter_init
    - str_new
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nmailbox_list_index_iter_init(struct
      mailbox_list *list,\n\t\t\t     const char *const *patterns,\n\t\t\t     enum
      mailbox_list_iter_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:69,1
    - Dst: mailbox_list_name_escape
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - list
    - raw_name
    - escaped_name
    argTypes:
    - struct mailbox_list*
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 73
    functionName: mailbox_list_get_escaped_mailbox_name
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_hierarchy_sep
    - mailbox_list_name_escape
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_get_escaped_mailbox_name(struct mailbox_list *list,\n\t\t\t\t
      \     const char *raw_name,\n\t\t\t\t      string_t *escaped_name)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:81,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:86,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:87,1
    - Dst: mailbox_list_get_escaped_mailbox_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:89,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:92,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:92,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:95,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:97,1
    - Dst: mail_namespace_is_inbox_noinferiors
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:101,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:102,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:108,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:120,1
    - Dst: mailbox_list_index_status_set_info_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:121,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_index_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 75
    functionDepth: 4
    functionLinenumber: 75
    functionLinenumberEnd: 125
    functionName: mailbox_list_index_update_info
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - p_strdup
    - mailbox_free
    - str_append_c
    - mail_namespace_is_inbox_noinferiors
    - ENUM_NEGATE
    - mailbox_list_index_status_set_info_flags
    - mailbox_alloc
    - mailbox_list_get_vname
    - str_truncate
    - p_strconcat
    - mailbox_list_get_escaped_mailbox_name
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: void
    signature: void mailbox_list_index_update_info(struct mailbox_list_index_iterate_context
      *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:134,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:142,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:153,1
    - Dst: mailbox_list_get_escaped_mailbox_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:154,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:157,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - follow_children
    argTypes:
    - struct mailbox_list_index_iterate_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 168
    functionName: mailbox_list_index_update_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_new
    - mailbox_list_get_escaped_mailbox_name
    - str_len
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_index_update_next(struct mailbox_list_index_iterate_context
      *ctx,\n\t\t\t       bool follow_children)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:174,1
    - Dst: struct mailbox_list_index*::module_ctx::super::iter_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:177,1
    - Dst: mailbox_list_index_update_info
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:188,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:190,1
    - Dst: mailbox_list_iter_try_delete_noselect
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:202,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:203,1
    - Dst: mailbox_list_index_refresh_later
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:207,1
    - Dst: mailbox_list_index_update_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:209,1
    - Dst: mailbox_list_index_update_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:213,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 171
    functionDepth: 10
    functionLinenumber: 171
    functionLinenumberEnd: 214
    functionName: mailbox_list_index_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c
    functionUses: 0
    functionsReached:
    - str_c
    - imap_match
    - mailbox_list_iter_try_delete_noselect
    - mailbox_list_index_refresh_later
    - struct mailbox_list_index*::module_ctx::super::iter_next
    - INDEX_LIST_CONTEXT_REQUIRE
    - mailbox_list_index_update_info
    - mailbox_list_index_update_next
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      mailbox_list_index_iter_next(struct mailbox_list_iterate_context *_ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:220,1
    - Dst: struct mailbox_list_index*::module_ctx::super::iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:222,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:228,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 231
    functionName: mailbox_list_index_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-index-iter.c
    functionUses: 0
    functionsReached:
    - struct mailbox_list_index*::module_ctx::super::iter_deinit
    - pool_unref
    - INDEX_LIST_CONTEXT_REQUIRE
    linkageType: ''
    returnType: int
    signature: int mailbox_list_index_iter_deinit(struct mailbox_list_iterate_context
      *_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:23,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:24,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:27,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:29,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:33,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - list
    - name
    - path
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 17
    functionDepth: 3
    functionLinenumber: 17
    functionLinenumberEnd: 36
    functionName: mailbox_list_check_root_delete
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_set_error
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_check_root_delete(struct mailbox_list *list, const
      char *name,\n\t\t\t       const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random_fill
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:42,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:43,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 46
    functionName: unique_fname
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 0
    functionsReached:
    - binary_to_hex
    - random_fill
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *unique_fname(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:55,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:57,1
    - Dst: mailbox_list_check_root_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:58,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:64,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:65,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:72,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:73,1
    - Dst: EDESTDIREXISTS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:80,1
    - Dst: mailbox_list_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:81,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:83,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:100,1
    - Dst: unique_fname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:101,1
    - Dst: mailbox_list_delete_trash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:102,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:104,1
    - Dst: mailbox_list_delete_trash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:110,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:112,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 3
    argNames:
    - list
    - name
    - trash_dir
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 48
    functionDepth: 4
    functionLinenumber: 48
    functionLinenumberEnd: 120
    functionName: mailbox_list_delete_maildir_via_trash
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 1
    functionsReached:
    - rename
    - mailbox_list_get_path
    - ENOTFOUND
    - mailbox_list_set_error_from_errno
    - i_unreached
    - mailbox_list_set_error
    - mailbox_list_set_critical
    - mailbox_list_delete_trash
    - EDESTDIREXISTS
    - unique_fname
    - mailbox_list_check_root_delete
    - t_strconcat
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_delete_maildir_via_trash(struct mailbox_list *list,\n\t\t\t\t\t
      \ const char *name,\n\t\t\t\t\t  const char *trash_dir)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:126,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:128,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:129,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:130,1
    - Dst: mailbox_list_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:133,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - list
    - name
    - path
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 139
    functionName: mailbox_list_delete_mailbox_file
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 2
    functionsReached:
    - ENOTFOUND
    - mailbox_list_set_error
    - unlink
    - mailbox_list_set_critical
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    - mailbox_list_set_error_from_errno
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_delete_mailbox_file(struct mailbox_list *list,\n\t\t\t\t
      \    const char *name, const char *path)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_check_root_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:153,1
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:156,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:159,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:160,1
    - Dst: mailbox_list_set_error_from_errno
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:162,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:163,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:170,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:171,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:172,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:173,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:175,1
    - Dst: struct mailbox_list*::v::is_internal_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:185,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:187,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:188,1
    - Dst: mailbox_list_delete_trash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:191,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:191,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:192,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:194,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:204,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:204,1
    - Dst: UNLINK_EISDIR
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:206,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:207,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:208,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:216,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:219,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:220,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:229,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:236,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:237,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:244,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:245,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:247,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:254,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 75
    argCount: 4
    argNames:
    - list
    - name
    - path
    - rmdir_path
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 259
    functionName: mailbox_list_delete_mailbox_nonrecursive
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 3
    functionsReached:
    - str_c
    - str_len
    - struct mailbox_list*::v::is_internal_name
    - mailbox_list_set_error_from_errno
    - readdir
    - t_str_new
    - opendir
    - str_append_c
    - i_sleep_msecs
    - UNLINK_EISDIR
    - rmdir
    - mailbox_list_set_error
    - mailbox_list_set_critical
    - closedir
    - mailbox_list_check_root_delete
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    - unlink
    - mailbox_list_delete_trash
    - str_truncate
    - str_append
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_delete_mailbox_nonrecursive(struct mailbox_list *list,\n\t\t\t\t\t
      \    const char *name, const char *path,\n\t\t\t\t\t     bool rmdir_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:270,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:271,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - list
    - type
    argTypes:
    - struct mailbox_list*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 273
    functionName: mailbox_list_path_is_index
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_path_is_index(struct mailbox_list *list,\n\t\t\t\t
      \      enum mailbox_list_path_type type)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_path_is_index
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:283,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:292,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:293,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:297,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:308,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:310,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:311,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:315,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:319,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:323,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 30
    argCount: 3
    argNames:
    - list
    - path
    - type
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 275
    functionDepth: 4
    functionLinenumber: 275
    functionLinenumberEnd: 325
    functionName: mailbox_list_delete_until_root
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 3
    functionsReached:
    - strcmp
    - str_begins_with
    - strrchr
    - rmdir
    - strlen
    - mailbox_list_path_is_index
    - mailbox_list_set_critical
    - t_strndup
    - mailbox_list_get_root_forced
    - t_strdup_until
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_delete_until_root(struct mailbox_list *list, const
      char *path,\n\t\t\t\t    enum mailbox_list_path_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:340,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:341,1
    - Dst: mailbox_list_delete_until_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - storage_name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 327
    functionDepth: 5
    functionLinenumber: 327
    functionLinenumberEnd: 344
    functionName: mailbox_list_delete_mailbox_until_root
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 0
    functionsReached:
    - mailbox_list_delete_until_root
    - mailbox_list_get_path
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_delete_mailbox_until_root(struct mailbox_list *list,\n\t\t\t\t\t
      \   const char *storage_name)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:352,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:354,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:355,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:359,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:361,1
    - Dst: mailbox_list_delete_mailbox_nonrecursive
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:376,1
    - Dst: mailbox_list_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:381,1
    - Dst: mailbox_list_delete_trash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:388,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:393,1
    - Dst: mailbox_list_delete_until_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:402,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 3
    argNames:
    - list
    - name
    - type
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 346
    functionDepth: 5
    functionLinenumber: 346
    functionLinenumberEnd: 404
    functionName: mailbox_list_try_delete
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - mailbox_list_delete_until_root
    - mailbox_list_delete_mailbox_nonrecursive
    - mailbox_list_delete_trash
    - mailbox_list_set_critical
    - mailbox_list_get_last_mail_error
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_try_delete(struct mailbox_list *list, const char
      *name,\n\t\t\t\t   enum mailbox_list_path_type type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_try_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:410,1
    - Dst: mailbox_list_try_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:411,1
    - Dst: mailbox_list_try_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:414,1
    - Dst: mailbox_list_try_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:417,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 406
    functionDepth: 6
    functionLinenumber: 406
    functionLinenumberEnd: 421
    functionName: mailbox_list_delete_finish
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 0
    functionsReached:
    - mailbox_list_try_delete
    linkageType: ''
    returnType: int
    signature: int mailbox_list_delete_finish(struct mailbox_list *list, const char
      *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_last_mail_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:429,1
    - Dst: mailbox_list_delete_finish
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:432,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:445,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:446,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - list
    - name
    - root_delete_success
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 423
    functionDepth: 7
    functionLinenumber: 423
    functionLinenumberEnd: 449
    functionName: mailbox_list_delete_finish_ret
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 1
    functionsReached:
    - mailbox_list_set_error
    - mailbox_list_delete_finish
    - mailbox_list_get_last_mail_error
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_delete_finish_ret(struct mailbox_list *list,\n\t\t\t\t
      \  const char *name, bool root_delete_success)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:453,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - path
    - error_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 464
    functionName: mailbox_list_delete_trash
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 4
    functionsReached:
    - unlink
    - unlink_directory
    linkageType: ''
    returnType: int
    signature: int mailbox_list_delete_trash(const char *path, const char **error_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:472,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:476,1
    - Dst: unlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:478,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:482,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:483,1
    - Dst: UNLINK_EISDIR
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:484,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:485,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c:488,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 466
    functionDepth: 3
    functionLinenumber: 466
    functionLinenumberEnd: 491
    functionName: mailbox_list_delete_symlink_default
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-delete.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - mailbox_list_set_error
    - unlink
    - mailbox_list_set_critical
    - UNLINK_EISDIR
    - i_assert
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_delete_symlink_default(struct mailbox_list *list,\n\t\t\t\t\tconst
      char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 44
    functionName: node_fix_parents
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: void node_fix_parents(struct mailbox_node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:54,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:56,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:58,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:59,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:60,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:64,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:72,1
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:73,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:83,1
    - Dst: node_fix_parents
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:84,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 4
    argNames:
    - ctx
    - glob
    - update_only
    - vname
    argTypes:
    - struct maildir_list_iterate_context*
    - struct imap_match_glob*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 46
    functionDepth: 3
    functionLinenumber: 46
    functionLinenumberEnd: 87
    functionName: maildir_fill_parents
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - strrchr
    - ENUM_NEGATE
    - strlen
    - imap_match
    - mailbox_tree_lookup
    - t_strdup_until
    - mailbox_tree_get
    - strncmp
    - node_fix_parents
    linkageType: ''
    returnType: void
    signature: "void maildir_fill_parents(struct maildir_list_iterate_context *ctx,\n\t\t
      \    struct imap_match_glob *glob, bool update_only,\n\t\t     const char *vname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:96,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:99,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:100,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:102,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - vname
    argTypes:
    - struct maildir_list_iterate_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 89
    functionDepth: 3
    functionLinenumber: 89
    functionLinenumberEnd: 109
    functionName: maildir_set_children
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - strrchr
    - ENUM_NEGATE
    - mailbox_tree_lookup
    - t_strdup_until
    linkageType: ''
    returnType: void
    signature: "void maildir_set_children(struct maildir_list_iterate_context *ctx,\n\t\t\t\t
      const char *vname)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:127,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:135,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:137,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:142,1
    - Dst: maildir_fill_parents
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:144,1
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:146,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:150,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - glob
    - inbox_name
    - update_only
    argTypes:
    - struct maildir_list_iterate_context*
    - struct imap_match_glob*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 111
    functionDepth: 6
    functionLinenumber: 111
    functionLinenumberEnd: 154
    functionName: maildir_fill_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - imap_match
    - mailbox_tree_lookup
    - mailbox_tree_get
    - mailbox_list_mailbox
    - maildir_fill_parents
    linkageType: ''
    returnType: int
    signature: "int maildir_fill_inbox(struct maildir_list_iterate_context *ctx,\n\t\t
      \  struct imap_match_glob *glob, const char *inbox_name,\n\t\t   bool update_only)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:165,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:166,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:176,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - dir
    - fname
    - type_r
    - flags
    argTypes:
    - char*
    - char*
    - enum mailbox_list_file_type*
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 186
    functionName: maildir_get_type
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - stat
    - t_strdup_printf
    - S_ISDIR
    linkageType: ''
    returnType: bool
    signature: "bool maildir_get_type(const char *dir, const char *fname,\n\t\t enum
      mailbox_list_file_type *type_r,\n\t\t enum mailbox_info_flags *flags)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:204,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:205,1
    - Dst: maildir_get_type
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:210,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:234,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 5
    argNames:
    - list
    - dir
    - fname
    - type
    - flags_r
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    - enum mailbox_list_file_type
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 243
    functionName: maildir_list_get_mailbox_flags
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - maildir_get_type
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int maildir_list_get_mailbox_flags(struct mailbox_list *list,\n\t\t\t\t
      \  const char *dir, const char *fname,\n\t\t\t\t   enum mailbox_list_file_type
      type,\n\t\t\t\t   enum mailbox_info_flags *flags_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:252,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:258,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:259,1
    - Dst: mailbox_list_delete_trash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - fname
    argTypes:
    - struct maildir_list_iterate_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 264
    functionName: maildir_delete_trash_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - stat
    - mailbox_list_delete_trash
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool maildir_delete_trash_dir(struct maildir_list_iterate_context
      *ctx,\n\t\t\t\t     const char *fname)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:293,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:294,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:299,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:300,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:301,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:303,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:304,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:305,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:307,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:308,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:309,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:309,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:311,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:311,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:312,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:313,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:320,1
    - Dst: maildir_delete_trash_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:325,1
    - Dst: mailbox_list_dirent_is_alias_symlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:329,1
    - Dst: struct mailbox_list*::v::get_mailbox_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:334,1
    - Dst: mailbox_list_get_file_type
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:335,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 32
    argCount: 4
    argNames:
    - ctx
    - glob
    - d
    - update_only
    argTypes:
    - struct maildir_list_iterate_context*
    - struct imap_match_glob*
    - struct dirent*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 336
    functionName: maildir_fill_readdir_entry
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - rename
    - str_c
    - t_str_new
    - mailbox_list_dirent_is_alias_symlink
    - str_append_c
    - i_unreached
    - uni_utf8_str_is_valid
    - strlen
    - imap_match
    - t_strdup_printf
    - imap_utf8_to_utf7
    - e_error
    - mailbox_list_get_file_type
    - uni_utf8_get_valid_data
    - mailbox_list_get_vname
    - struct mailbox_list*::v::get_mailbox_flags
    - str_append
    - maildir_delete_trash_dir
    linkageType: ''
    returnType: int
    signature: "int maildir_fill_readdir_entry(struct maildir_list_iterate_context
      *ctx,\n\t\t\t   struct imap_match_glob *glob, const struct dirent *d,\n\t\t\t
      \  bool update_only)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:380,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:382,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:383,1
    - Dst: mail_error_eacces_msg
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:384,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:386,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:393,1
    - Dst: maildir_fill_readdir_entry
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:395,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - glob
    - update_only
    argTypes:
    - struct maildir_list_iterate_context*
    - struct imap_match_glob*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 369
    functionDepth: 4
    functionLinenumber: 369
    functionLinenumberEnd: 400
    functionName: maildir_fill_readdir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - readdir
    - mail_error_eacces_msg
    - opendir
    - mailbox_list_set_critical
    - ENOACCESS
    - maildir_fill_readdir_entry
    linkageType: ''
    returnType: int
    signature: "int maildir_fill_readdir(struct maildir_list_iterate_context *ctx,\n\t\t
      \    struct imap_match_glob *glob, bool update_only)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:430,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:433,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:434,1
    - Dst: imap_match_init_multiple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:438,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:439,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:441,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:443,1
    - Dst: maildir_fill_readdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - _list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 422
    functionDepth: 5
    functionLinenumber: 422
    functionLinenumberEnd: 454
    functionName: maildir_list_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_get_sep
    - pool_alloconly_create
    - imap_match_init_multiple
    - p_new
    - maildir_fill_readdir
    - array_create
    - mailbox_tree_init
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nmaildir_list_iter_init(struct
      mailbox_list *_list, const char *const *patterns,\n\t\t       enum mailbox_list_iter_flags
      flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:473,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:474,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 466
    functionDepth: 2
    functionLinenumber: 466
    functionLinenumberEnd: 477
    functionName: maildir_list_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_tree_deinit
    - pool_unref
    - mailbox_tree_iterate_deinit
    linkageType: ''
    returnType: int
    signature: int maildir_list_iter_deinit(struct mailbox_list_iterate_context *_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_tree_iterate_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:489,1
    - Dst: mailbox_list_iter_default_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:491,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:494,1
    - Dst: mail_namespace_is_inbox_noinferiors
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:495,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:496,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c:497,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 479
    functionDepth: 3
    functionLinenumber: 479
    functionLinenumberEnd: 501
    functionName: maildir_list_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_is_inbox_noinferiors
    - ENUM_NEGATE
    - mailbox_tree_iterate_next
    - i_assert
    - mailbox_list_iter_default_next
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      maildir_list_iter_next(struct mailbox_list_iterate_context *_ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_init_multiple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - list
    - pattern
    - flags
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: mailbox_list_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 21
    functionsReached:
    - mailbox_list_iter_init_multiple
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nmailbox_list_iter_init(struct
      mailbox_list *list, const char *pattern,\n\t\t       enum mailbox_list_iter_flags
      flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_subscribable
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:68,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:74,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:75,1
    - Dst: struct mail_namespace*::list::v::subscriptions_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 62
    functionDepth: 4
    functionLinenumber: 62
    functionLinenumberEnd: 81
    functionName: mailbox_list_iter_subscriptions_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 3
    functionsReached:
    - struct mail_namespace*::list::v::subscriptions_refresh
    - mail_namespace_find_subscribable
    - mail_namespace_get_sep
    - mailbox_tree_init
    linkageType: ''
    returnType: int
    signature: int mailbox_list_iter_subscriptions_refresh(struct mailbox_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_settings_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:89,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - pool
    - ns
    - in_set
    argTypes:
    - pool_t
    - struct mail_namespace*
    - struct mailbox_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 97
    functionName: mailbox_settings_add_ns_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_settings_get_vname
    - p_memdup
    linkageType: ''
    returnType: struct mailbox_settings
    signature: "struct mailbox_settings *\nmailbox_settings_add_ns_prefix(pool_t pool,
      struct mail_namespace *ns,\n\t\t\t       const struct mailbox_settings *in_set)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:107,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:110,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:112,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:116,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:117,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:118,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:119,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:120,1
    - Dst: mailbox_settings_add_ns_prefix
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:123,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:126,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:127,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:129,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:130,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:131,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:134,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 142
    functionName: mailbox_list_iter_init_autocreate
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - p_array_init
    - hash_table_create
    - array_foreach_elem
    - array_push_back
    - array_append_space
    - strcasecmp
    - array_is_empty
    - pool_add_external_ref
    - mailbox_settings_add_ns_prefix
    linkageType: ''
    returnType: int
    signature: int mailbox_list_iter_init_autocreate(struct mailbox_list_iterate_context
      *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:151,1
    - Dst: mailbox_list_iter_subscriptions_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:155,1
    - Dst: struct mailbox_list*::v::iter_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:159,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:162,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:163,1
    - Dst: mailbox_list_subscriptions_fill
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:164,1
    - Dst: mailbox_tree_iterate_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:167,1
    - Dst: mailbox_tree_iterate_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:170,1
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:172,1
    - Dst: mailbox_list_iter_init_autocreate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:176,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:177,1
    - Dst: struct mailbox_list*::v::iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:178,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:182,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 144
    functionDepth: 5
    functionLinenumber: 144
    functionLinenumberEnd: 184
    functionName: mailbox_list_iter_init_multiple
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 1
    functionsReached:
    - mail_namespace_get_sep
    - struct mailbox_list*::v::iter_init
    - pool_alloconly_create
    - mailbox_list_iter_init_autocreate
    - struct mailbox_list*::v::iter_deinit
    - mailbox_tree_iterate_deinit
    - mailbox_list_iter_subscriptions_refresh
    - mailbox_list_subscriptions_fill
    - mailbox_tree_iterate_next
    - mailbox_tree_iterate_init
    - i_assert
    - hash_table_destroy
    - mailbox_tree_init
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nmailbox_list_iter_init_multiple(struct
      mailbox_list *list,\n\t\t\t\tconst char *const *patterns,\n\t\t\t\tenum mailbox_list_iter_flags
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - node_flags
    argTypes:
    - enum mailbox_info_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 202
    functionName: node_has_existing_subscription
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool node_has_existing_subscription(enum mailbox_info_flags node_flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: node_has_existing_subscription
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ns
    - node_flags
    argTypes:
    - struct mail_namespace*
    - enum mailbox_info_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 218
    functionName: mailbox_list_want_subscription
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - node_has_existing_subscription
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_want_subscription(struct mail_namespace *ns,\n\t\t\t
      \      enum mailbox_info_flags node_flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - ns
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 231
    functionName: ns_match_simple
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ns_match_simple(struct ns_list_iterate_context *ctx, struct mail_namespace
      *ns)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:254,1
    - Dst: for
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:264,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:265,1
    - Dst: ns_match_simple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:265,1
    - Dst: ns_match_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:266,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 5
    argNames:
    - ctx
    - ns
    - prefix_without_sep
    - pattern
    - result
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    - char*
    - char*
    - enum imap_match_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 279
    functionName: ns_is_match_within_ns
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ns_match_simple
    - if
    - for
    - ns_match_next
    linkageType: ''
    returnType: bool
    signature: "bool ns_is_match_within_ns(struct ns_list_iterate_context *ctx,\n\t\t
      \     struct mail_namespace *ns, const char *prefix_without_sep,\n\t\t      const
      char *pattern, enum imap_match_result result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 288
    functionName: list_pattern_has_wildcards
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool list_pattern_has_wildcards(const char *pattern)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:299,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:305,1
    - Dst: list_pattern_has_wildcards
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:313,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:317,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:321,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:321,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:322,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:323,1
    - Dst: ns_is_match_within_ns
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:326,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - ns
    - pattern
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 328
    functionName: ns_match_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 1
    functionsReached:
    - mail_namespace_get_sep
    - imap_match_init
    - imap_match
    - list_pattern_has_wildcards
    - t_strndup
    - pool_datastack_create
    - strncmp
    - ns_is_match_within_ns
    linkageType: ''
    returnType: bool
    signature: "bool ns_match_next(struct ns_list_iterate_context *ctx,\n\t\t\t  struct
      mail_namespace *ns, const char *pattern)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ns_match_simple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:336,1
    - Dst: for
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:343,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:344,1
    - Dst: ns_match_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ns_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 330
    functionDepth: 3
    functionLinenumber: 330
    functionLinenumberEnd: 350
    functionName: mailbox_list_ns_match_patterns
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - ns_match_simple
    - for
    - ns_match_next
    - if
    linkageType: ''
    returnType: bool
    signature: bool mailbox_list_ns_match_patterns(struct ns_list_iterate_context
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:360,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:365,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:369,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:370,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:370,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:371,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:372,1
    - Dst: ns_is_match_within_ns
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - ns
    - pattern
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 376
    functionName: iter_next_try_prefix_pattern
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - imap_match_init
    - imap_match
    - t_strndup
    - pool_datastack_create
    - strncmp
    - ns_is_match_within_ns
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool iter_next_try_prefix_pattern(struct ns_list_iterate_context *ctx,\n\t\t\t
      \    struct mail_namespace *ns, const char *pattern)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: iter_next_try_prefix_pattern
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:387,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - ns
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 392
    functionName: mailbox_list_ns_prefix_match
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - iter_next_try_prefix_pattern
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_ns_prefix_match(struct ns_list_iterate_context *ctx,\n\t\t\t
      \    struct mail_namespace *ns)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_match_anything
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:405,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - ns
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 409
    functionName: ns_prefix_is_visible
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_match_anything
    linkageType: ''
    returnType: int
    signature: "int ns_prefix_is_visible(struct ns_list_iterate_context *ctx,\n\t\t
      \    struct mail_namespace *ns)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:416,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:421,1
    - Dst: ns_prefix_is_visible
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:422,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - prefix
    argTypes:
    - struct ns_list_iterate_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 428
    functionName: ns_prefix_has_visible_child_namespace
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    - ns_prefix_is_visible
    linkageType: ''
    returnType: int
    signature: "int ns_prefix_has_visible_child_namespace(struct ns_list_iterate_context
      *ctx,\n\t\t\t\t      const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 436
    functionName: mailbox_ns_prefix_is_shared_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mailbox_ns_prefix_is_shared_inbox(struct mail_namespace *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_ns_prefix_is_shared_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:441,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - ns
    - vname
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 444
    functionName: mailbox_is_shared_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - strncmp
    - mailbox_ns_prefix_is_shared_inbox
    linkageType: ''
    returnType: bool
    signature: bool mailbox_is_shared_inbox(struct mail_namespace *ns, const char
      *vname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ns_prefix_has_visible_child_namespace
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:457,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:460,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:461,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:462,1
    - Dst: mailbox_ns_prefix_is_shared_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:463,1
    - Dst: mailbox_is_shared_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:464,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:466,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:469,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - ns
    - prefix
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 446
    functionDepth: 3
    functionLinenumber: 446
    functionLinenumberEnd: 474
    functionName: mailbox_list_match_anything
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 1
    functionsReached:
    - t_strconcat
    - mailbox_list_iter_deinit
    - mailbox_list_iter_next
    - mailbox_is_shared_inbox
    - ns_prefix_has_visible_child_namespace
    - mailbox_list_iter_init
    - mailbox_ns_prefix_is_shared_inbox
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_match_anything(struct ns_list_iterate_context *ctx,\n\t\t\t
      \   struct mail_namespace *ns, const char *prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ns_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 488
    functionName: mailbox_ns_prefix_check_selection_criteria
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mailbox_ns_prefix_check_selection_criteria(struct ns_list_iterate_context
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:497,1
    - Dst: mailbox_list_iter_subscriptions_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:499,1
    - Dst: mailbox_tree_get_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:502,1
    - Dst: ns_has_child_subscriptions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:505,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - parent_ns
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 490
    functionDepth: 5
    functionLinenumber: 490
    functionLinenumberEnd: 511
    functionName: ns_has_child_subscriptions
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 1
    functionsReached:
    - strncmp
    - mailbox_tree_get_root
    - ns_has_child_subscriptions
    - mailbox_list_iter_subscriptions_refresh
    linkageType: ''
    returnType: int
    signature: "int ns_has_child_subscriptions(struct ns_list_iterate_context *ctx,\n\t\t\t\t
      \     struct mail_namespace *parent_ns)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:522,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:523,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:526,1
    - Dst: mailbox_list_ns_prefix_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:529,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:532,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:534,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:539,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:540,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:545,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:546,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:551,1
    - Dst: mailbox_list_match_anything
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:562,1
    - Dst: mailbox_ns_prefix_is_shared_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:566,1
    - Dst: mailbox_list_iter_subscriptions_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:579,1
    - Dst: mailbox_list_ns_iter_failed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:580,1
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:585,1
    - Dst: ns_has_child_subscriptions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:598,1
    - Dst: mailbox_list_ns_iter_failed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:599,1
    - Dst: mailbox_list_want_subscription
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:606,1
    - Dst: mailbox_ns_prefix_check_selection_criteria
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:610,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 58
    argCount: 3
    argNames:
    - ctx
    - ns
    - has_children
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 513
    functionDepth: 6
    functionLinenumber: 513
    functionLinenumberEnd: 611
    functionName: mailbox_list_ns_prefix_return
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_ns_prefix_check_selection_criteria
    - str_begins_icase
    - mailbox_alloc
    - mailbox_ns_prefix_is_shared_inbox
    - mailbox_free
    - mailbox_list_want_subscription
    - ns_has_child_subscriptions
    - mailbox_list_ns_prefix_match
    - mailbox_list_iter_subscriptions_refresh
    - mailbox_exists
    - i_zero
    - p_strndup
    - mailbox_list_ns_iter_failed
    - strcasecmp
    - mailbox_tree_lookup
    - i_assert
    - ENUM_NEGATE
    - mailbox_list_match_anything
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_ns_prefix_return(struct ns_list_iterate_context
      *ctx,\n\t\t\t      struct mail_namespace *ns, bool has_children)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_prefix
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:625,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:637,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:638,1
    - Dst: mailbox_list_match_anything
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:639,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ns_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 613
    functionDepth: 4
    functionLinenumber: 613
    functionLinenumberEnd: 644
    functionName: inbox_set_children_flags
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_list_match_anything
    - t_strdup_printf
    - mail_namespace_find_prefix
    linkageType: ''
    returnType: void
    signature: void inbox_set_children_flags(struct ns_list_iterate_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:652,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ns_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 646
    functionDepth: 2
    functionLinenumber: 646
    functionLinenumberEnd: 656
    functionName: mailbox_list_ns_iter_failed
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 1
    functionsReached:
    - mailbox_list_set_error
    - mailbox_list_get_last_error
    linkageType: ''
    returnType: void
    signature: void mailbox_list_ns_iter_failed(struct ns_list_iterate_context *ctx)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: inbox_set_children_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:675,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:684,1
    - Dst: mailbox_list_ns_match_patterns
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:685,1
    - Dst: mailbox_list_ns_prefix_return
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:690,1
    - Dst: mailbox_list_iter_init_multiple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:698,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:702,1
    - Dst: mailbox_list_ns_iter_failed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:703,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:710,1
    - Dst: mailbox_is_shared_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:719,1
    - Dst: mailbox_list_ns_prefix_return
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:720,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:728,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:739,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:740,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:743,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:746,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:761,1
    - Dst: mailbox_list_ns_iter_failed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:762,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 65
    argCount: 2
    argNames:
    - _ctx
    - info_r
    argTypes:
    - struct mailbox_list_iterate_context*
    - struct mailbox_info**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 658
    functionDepth: 7
    functionLinenumber: 658
    functionLinenumberEnd: 765
    functionName: mailbox_list_ns_iter_try_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_list_iter_deinit
    - ENUM_NEGATE
    - mailbox_list_ns_match_patterns
    - mailbox_list_iter_init_multiple
    - mailbox_list_ns_iter_failed
    - mailbox_list_iter_next
    - strcasecmp
    - mailbox_list_ns_prefix_return
    - mailbox_is_shared_inbox
    - inbox_set_children_flags
    - str_begins_icase
    - strncmp
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_ns_iter_try_next(struct mailbox_list_iterate_context
      *_ctx,\n\t\t\t      const struct mailbox_info **info_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_ns_iter_try_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 767
    functionDepth: 8
    functionLinenumber: 767
    functionLinenumberEnd: 774
    functionName: mailbox_list_ns_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_ns_iter_try_next
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      mailbox_list_ns_iter_next(struct mailbox_list_iterate_context *_ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:784,1
    - Dst: mailbox_list_ns_iter_failed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:785,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:788,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 776
    functionDepth: 3
    functionLinenumber: 776
    functionLinenumberEnd: 790
    functionName: mailbox_list_ns_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_ns_iter_failed
    - mailbox_list_iter_deinit
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int mailbox_list_ns_iter_deinit(struct mailbox_list_iterate_context
      *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:799,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:801,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 810
    functionName: dup_patterns_without_stars
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    linkageType: ''
    returnType: char
    signature: "char **\ndup_patterns_without_stars(pool_t pool, const char *const
      *patterns,\n\t\t\t   unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:816,1
    - Dst: imap_match_init_multiple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:819,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:819,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:820,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - namespaces
    - patterns
    argTypes:
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 822
    functionName: patterns_match_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - imap_match_init_multiple
    - imap_match
    - pool_datastack_create
    - mail_namespace_find_inbox
    linkageType: ''
    returnType: bool
    signature: "bool patterns_match_inbox(struct mail_namespace *namespaces,\n\t\t
      \    const char *const *patterns)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:831,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:832,1
    - Dst: mailbox_list_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:834,1
    - Dst: mailbox_list_ns_iter_failed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:838,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - namespaces
    argTypes:
    - struct ns_list_iterate_context*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 824
    functionDepth: 6
    functionLinenumber: 824
    functionLinenumberEnd: 841
    functionName: inbox_info_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find_inbox
    - i_assert
    - mailbox_list_mailbox
    - mailbox_list_ns_iter_failed
    linkageType: ''
    returnType: int
    signature: "int inbox_info_init(struct ns_list_iterate_context *ctx,\n\t\t\t   struct
      mail_namespace *namespaces)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:857,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:859,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:860,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:864,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:870,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:871,1
    - Dst: uni_utf8_to_nfc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:878,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:878,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:880,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:882,1
    - Dst: patterns_match_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:884,1
    - Dst: inbox_info_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:891,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:892,1
    - Dst: dup_patterns_without_stars
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:901,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:909,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 4
    argNames:
    - namespaces
    - patterns
    - type_mask
    - flags
    argTypes:
    - struct mail_namespace*
    - char**
    - enum mail_namespace_type
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 843
    functionDepth: 7
    functionLinenumber: 843
    functionLinenumberEnd: 911
    functionName: mailbox_list_iter_init_namespaces
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 6
    functionsReached:
    - patterns_match_inbox
    - pool_alloconly_create
    - p_strdup
    - dup_patterns_without_stars
    - p_new
    - strlen
    - str_array_length
    - pool_unref
    - inbox_info_init
    - uni_utf8_to_nfc
    - i_assert
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nmailbox_list_iter_init_namespaces(struct
      mail_namespace *namespaces,\n\t\t\t\t  const char *const *patterns,\n\t\t\t\t
      \ enum mail_namespace_type type_mask,\n\t\t\t\t  enum mailbox_list_iter_flags
      flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:920,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:922,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:926,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:929,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:931,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:931,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:932,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 5
    argNames:
    - boxes
    - ns
    - name
    - only_subscribed
    - idx_r
    argTypes:
    - ARRAY_TYPE*
    - struct mail_namespace*
    - char*
    - bool
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 944
    functionName: autocreate_box_match
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_get_sep
    - I_MIN
    - strlen
    - array_get
    - strncmp
    linkageType: ''
    returnType: enum autocreate_match_result
    signature: "enum autocreate_match_result autocreate_box_match(const ARRAY_TYPE(mailbox_settings)
      *boxes,\n\t\t     struct mail_namespace *ns, const char *name,\n\t\t     bool
      only_subscribed, unsigned int *idx_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: autocreate_box_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:959,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:966,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:967,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:970,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:978,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:979,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:987,1
    - Dst: autocreate_box_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:996,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1001,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1003,1
    - Dst: autocreate_box_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1010,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1029,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1031,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1032,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 52
    argCount: 2
    argNames:
    - ctx
    - _info
    argTypes:
    - struct mailbox_list_iterate_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 946
    functionDepth: 2
    functionLinenumber: 946
    functionLinenumberEnd: 1044
    functionName: mailbox_list_iter_autocreate_filter
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - array_delete
    - p_strdup
    - mail_namespace_get_sep
    - ENUM_NEGATE
    - str_begins
    - array_foreach_modifiable
    - hash_table_insert
    - hash_table_lookup
    - autocreate_box_match
    linkageType: ''
    returnType: struct mailbox_info
    signature: "struct mailbox_info *\nmailbox_list_iter_autocreate_filter(struct
      mailbox_list_iterate_context *ctx,\n\t\t\t\t    const struct mailbox_info *_info)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1053,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1072,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1075,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1076,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1081,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1091,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1096,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1097,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1099,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1101,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1104,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1105,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - autobox
    argTypes:
    - struct mailbox_list_iterate_context*
    - struct autocreate_box*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1046
    functionDepth: 1
    functionLinenumber: 1046
    functionLinenumberEnd: 1110
    functionName: autocreate_iter_autobox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_namespace_get_sep
    - p_strdup_until
    - strrchr
    - ENUM_NEGATE
    - imap_match
    - array_is_empty
    - t_array_const_string_join
    - hash_table_insert
    - hash_table_lookup
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool autocreate_iter_autobox(struct mailbox_list_iterate_context *ctx,\n\t\t\t\t
      \   const struct autocreate_box *autobox)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1114,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1112
    functionDepth: 1
    functionLinenumber: 1112
    functionLinenumberEnd: 1120
    functionName: mailbox_list_mark_node_visited
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: void mailbox_list_mark_node_visited(struct mailbox_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1131,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1135,1
    - Dst: mailbox_list_mark_node_visited
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1138,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1142,1
    - Dst: mailbox_list_mark_node_visited
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1143,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1151,1
    - Dst: mailbox_list_mark_node_visited
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct mailbox_list_iterate_context*
    - struct mailbox_info**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1122
    functionDepth: 3
    functionLinenumber: 1122
    functionLinenumberEnd: 1158
    functionName: mailbox_list_match_subscriptions
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_mark_node_visited
    - ENUM_NEGATE
    - HAS_ANY_BITS
    - HAS_NO_BITS
    - mailbox_tree_get
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_match_subscriptions(struct mailbox_list_iterate_context
      *ctx,\n\t\t\t\t const struct mailbox_info **info)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: node_has_existing_children
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - parent
    argTypes:
    - struct mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1160
    functionDepth: 1
    functionLinenumber: 1160
    functionLinenumberEnd: 1175
    functionName: node_has_existing_children
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 1
    functionsReached:
    - node_has_existing_children
    linkageType: ''
    returnType: bool
    signature: bool node_has_existing_children(struct mailbox_node *parent)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1181,1
    - Dst: mailbox_tree_iterate_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1185,1
    - Dst: mailbox_tree_iterate_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1191,1
    - Dst: mailbox_list_want_subscription
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1193,1
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1202,1
    - Dst: mailbox_tree_iterate_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1203,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1207,1
    - Dst: node_has_existing_children
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1214,1
    - Dst: mailbox_list_mark_node_visited
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1220,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1177
    functionDepth: 3
    functionLinenumber: 1177
    functionLinenumberEnd: 1222
    functionName: mailbox_list_finish_subscriptions
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_list_mark_node_visited
    - mailbox_list_want_subscription
    - mailbox_tree_iterate_deinit
    - node_has_existing_children
    - HAS_NO_BITS
    - mailbox_tree_iterate_next
    - mailbox_tree_iterate_init
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      mailbox_list_finish_subscriptions(struct mailbox_list_iterate_context *ctx)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: struct mailbox_list_iterate_context*::list::v::iter_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1231,1
    - Dst: mailbox_list_match_subscriptions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1232,1
    - Dst: mailbox_list_finish_subscriptions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1236,1
    - Dst: uni_utf8_to_nfc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1251,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1251,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1252,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1253,1
    - Dst: mailbox_rename_nfc_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1259,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1262,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1268,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1269,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1273,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1280,1
    - Dst: mailbox_name_try_get_settings
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1288,1
    - Dst: mail_storage_mailbox_create_event
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1291,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1293,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1295,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1298,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1302,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1304,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1306,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1307,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1312,1
    - Dst: mailbox_list_iter_autocreate_filter
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1315,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1224
    functionDepth: 5
    functionLinenumber: 1224
    functionLinenumberEnd: 1316
    functionName: mailbox_list_iter_next_call
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - event_unref
    - strlen
    - mailbox_list_match_subscriptions
    - mail_storage_mailbox_create_event
    - array_not_empty
    - i_strdup
    - struct mailbox_list_iterate_context*::list::v::iter_next
    - mailbox_name_try_get_settings
    - mailbox_list_set_critical
    - mailbox_list_iter_autocreate_filter
    - i_assert
    - i_free
    - strcmp
    - mailbox_rename_nfc_forced
    - e_debug
    - settings_free
    - mailbox_list_finish_subscriptions
    - t_array_const_string_join
    - uni_utf8_to_nfc
    - settings_get
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      mailbox_list_iter_next_call(struct mailbox_list_iterate_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1333,1
    - Dst: autocreate_iter_autobox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1336,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1339,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1339,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1318
    functionDepth: 2
    functionLinenumber: 1318
    functionLinenumberEnd: 1341
    functionName: mailbox_list_iter_default_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 2
    functionsReached:
    - autocreate_iter_autobox
    - array_get
    - i_assert
    - array_count
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      mailbox_list_iter_default_next(struct mailbox_list_iterate_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct mailbox_list_iterate_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1343
    functionDepth: 0
    functionLinenumber: 1343
    functionLinenumberEnd: 1356
    functionName: special_use_selection
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool special_use_selection(struct mailbox_list_iterate_context *ctx,\n\t\t
      \     const struct mailbox_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1366,1
    - Dst: mailbox_list_iter_next_call
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1370,1
    - Dst: special_use_selection
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1372,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1358
    functionDepth: 6
    functionLinenumber: 1358
    functionLinenumberEnd: 1374
    functionName: mailbox_list_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 29
    functionsReached:
    - mailbox_list_iter_next_call
    - p_clear
    - special_use_selection
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      mailbox_list_iter_next(struct mailbox_list_iterate_context *ctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1385,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1386,1
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1387,1
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1388,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1389,1
    - Dst: struct mailbox_list_iterate_context*::list::v::iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1390,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1376
    functionDepth: 2
    functionLinenumber: 1376
    functionLinenumberEnd: 1391
    functionName: mailbox_list_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 23
    functionsReached:
    - struct mailbox_list_iterate_context*::list::v::iter_deinit
    - pool_unref
    - mailbox_tree_iterate_deinit
    - mailbox_tree_deinit
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: int
    signature: int mailbox_list_iter_deinit(struct mailbox_list_iterate_context **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1393
    functionDepth: 0
    functionLinenumber: 1393
    functionLinenumberEnd: 1402
    functionName: node_fix_parents
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void node_fix_parents(struct mailbox_node *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1420,1
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1422,1
    - Dst: node_fix_parents
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1426,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1447,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1447,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1451,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct mailbox_list_iter_update_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1404
    functionDepth: 3
    functionLinenumber: 1404
    functionLinenumberEnd: 1455
    functionName: mailbox_list_iter_update_real
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - strrchr
    - imap_match
    - t_strdup_until
    - mailbox_tree_get
    - node_fix_parents
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_iter_update_real(struct mailbox_list_iter_update_context
      *ctx,\n\t\t\t      const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_update_real
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct mailbox_list_iter_update_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1457
    functionDepth: 4
    functionLinenumber: 1457
    functionLinenumberEnd: 1462
    functionName: mailbox_list_iter_update
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter.c
    functionUses: 2
    functionsReached:
    - mailbox_list_iter_update_real
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_iter_update(struct mailbox_list_iter_update_context
      *ctx,\n\t\t\t      const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:27,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:30,1
    - Dst: mailbox_list_index_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - tree
    - nnode
    argTypes:
    - struct mailbox_list_notify_tree*
    - struct mailbox_notify_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 19
    functionDepth: 3
    functionLinenumber: 19
    functionLinenumberEnd: 40
    functionName: mailbox_list_notify_node_get_status
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_list_index_status
    - mail_index_lookup_seq
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_notify_node_get_status(struct mailbox_list_notify_tree
      *tree,\n\t\t\t\t    struct mailbox_notify_node *nnode)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:52,1
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:54,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:54,1
    - Dst: mailbox_list_notify_node_get_status
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:64,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:70,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:70,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:71,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:74,1
    - Dst: mailbox_list_notify_node_build
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:75,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - tree
    - index_node
    - path
    argTypes:
    - struct mailbox_list_notify_tree*
    - struct mailbox_list_index_node*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 78
    functionName: mailbox_list_notify_node_build
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c
    functionUses: 1
    functionsReached:
    - str_c
    - str_append_c
    - str_len
    - str_truncate
    - mailbox_tree_get
    - str_append
    - mailbox_list_get_hierarchy_sep
    - mailbox_list_notify_node_build
    - mailbox_list_notify_node_get_status
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_notify_node_build(struct mailbox_list_notify_tree
      *tree,\n\t\t\t       struct mailbox_list_index_node *index_node,\n\t\t\t       string_t
      *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: INDEX_LIST_CONTEXT_REQUIRE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:83,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:85,1
    - Dst: mailbox_list_index_refresh
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:87,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:90,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:93,1
    - Dst: mailbox_list_notify_node_build
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:94,1
    - Dst: mail_index_view_close
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct mailbox_list_notify_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 80
    functionDepth: 5
    functionLinenumber: 80
    functionLinenumberEnd: 97
    functionName: mailbox_list_notify_tree_build
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - mail_index_view_close
    - mail_index_view_open
    - mailbox_list_index_refresh
    - str_truncate
    - INDEX_LIST_CONTEXT_REQUIRE
    - mailbox_list_notify_node_build
    linkageType: ''
    returnType: void
    signature: void mailbox_list_notify_tree_build(struct mailbox_list_notify_tree
      *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:104,1
    - Dst: mailbox_tree_init_size
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:107,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:107,1
    - Dst: mailbox_list_notify_tree_build
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 99
    functionDepth: 6
    functionLinenumber: 99
    functionLinenumberEnd: 111
    functionName: mailbox_list_notify_tree_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c
    functionUses: 1
    functionsReached:
    - mailbox_tree_init_size
    - mailbox_list_notify_tree_build
    - i_new
    - mailbox_list_get_hierarchy_sep
    linkageType: ''
    returnType: struct mailbox_list_notify_tree
    signature: 'struct mailbox_list_notify_tree *

      mailbox_list_notify_tree_init(struct mailbox_list *list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_tree_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:119,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _tree
    argTypes:
    - struct mailbox_list_notify_tree**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: mailbox_list_notify_tree_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c
    functionUses: 1
    functionsReached:
    - mailbox_tree_deinit
    - i_free
    linkageType: ''
    returnType: void
    signature: void mailbox_list_notify_tree_deinit(struct mailbox_list_notify_tree
      **_tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_tree_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tree
    - storage_name
    argTypes:
    - struct mailbox_list_notify_tree*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 131
    functionName: mailbox_list_notify_tree_lookup
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-notify-tree.c
    functionUses: 1
    functionsReached:
    - mailbox_tree_lookup
    linkageType: ''
    returnType: struct mailbox_notify_node
    signature: "struct mailbox_notify_node *\nmailbox_list_notify_tree_lookup(struct
      mailbox_list_notify_tree *tree,\n\t\t\t\tconst char *storage_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:28,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:29,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 38
    functionName: maildir_list_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_strconcat
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *maildir_list_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:45,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:46,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 55
    functionName: imapdir_list_alloc
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_strconcat
    linkageType: ''
    returnType: struct mailbox_list
    signature: struct mailbox_list *imapdir_list_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: maildir_list_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 2
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void maildir_list_deinit(struct mailbox_list *_list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:71,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:72,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:74,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - list
    - dir
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 76
    functionName: maildir_list_get_dirname_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_hierarchy_sep
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\nmaildir_list_get_dirname_path(struct mailbox_list *list, const
      char *dir,\n\t\t\t      const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_try_get_absolute_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:83,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:88,1
    - Dst: maildir_list_get_dirname_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:91,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 78
    functionDepth: 4
    functionLinenumber: 78
    functionLinenumberEnd: 93
    functionName: maildir_list_get_absolute_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - maildir_list_get_dirname_path
    - mailbox_list_try_get_absolute_path
    - t_strdup_until
    - strrchr
    linkageType: ''
    returnType: char
    signature: 'char *

      maildir_list_get_absolute_path(struct mailbox_list *list, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: maildir_list_get_hierarchy_sep
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char maildir_list_get_hierarchy_sep(struct mailbox_list *_list)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_default_get_root_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:111,1
    - Dst: maildir_list_get_absolute_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:117,1
    - Dst: maildir_list_get_dirname_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:134,1
    - Dst: maildir_list_get_dirname_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:141,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:148,1
    - Dst: maildir_list_get_dirname_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:151,1
    - Dst: maildir_list_get_dirname_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:159,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:164,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:170,1
    - Dst: maildir_list_get_dirname_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:176,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 4
    argNames:
    - _list
    - name
    - type
    - path_r
    argTypes:
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 103
    functionDepth: 5
    functionLinenumber: 103
    functionLinenumberEnd: 178
    functionName: maildir_list_get_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_unreached
    - maildir_list_get_absolute_path
    - maildir_list_get_dirname_path
    - mailbox_list_default_get_root_path
    linkageType: ''
    returnType: int
    signature: "int maildir_list_get_path(struct mailbox_list *_list, const char *name,\n\t\t
      \     enum mailbox_list_path_type type, const char **path_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _list
    - global
    argTypes:
    - struct mailbox_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: maildir_list_get_temp_prefix
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      maildir_list_get_temp_prefix(struct mailbox_list *_list, bool global)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:197,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:202,1
    - Dst: subsfile_set_subscribed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _list
    - name
    - set
    argTypes:
    - struct mailbox_list*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 189
    functionDepth: 7
    functionLinenumber: 189
    functionLinenumberEnd: 210
    functionName: maildir_list_set_subscribed
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_error
    - t_strconcat
    - subsfile_set_subscribed
    linkageType: ''
    returnType: int
    signature: "int maildir_list_set_subscribed(struct mailbox_list *_list,\n\t\t\t\t
      \      const char *name, bool set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:219,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 212
    functionDepth: 3
    functionLinenumber: 212
    functionLinenumberEnd: 222
    functionName: mailbox_list_maildir_get_trash_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - mailbox_list_get_root_forced
    linkageType: ''
    returnType: char
    signature: 'char *

      mailbox_list_maildir_get_trash_dir(struct mailbox_list *_list)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_maildir_get_trash_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:230,1
    - Dst: mailbox_list_delete_maildir_via_trash
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:231,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:238,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:241,1
    - Dst: mailbox_list_delete_mailbox_nonrecursive
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 224
    functionDepth: 5
    functionLinenumber: 224
    functionLinenumberEnd: 247
    functionName: maildir_list_delete_maildir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - i_unreached
    - mailbox_list_delete_mailbox_nonrecursive
    - mailbox_list_maildir_get_trash_dir
    - mailbox_list_delete_maildir_via_trash
    linkageType: ''
    returnType: int
    signature: int maildir_list_delete_maildir(struct mailbox_list *list, const char
      *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:261,1
    - Dst: mailbox_list_delete_mailbox_file
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:262,1
    - Dst: maildir_list_delete_maildir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:264,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:267,1
    - Dst: mailbox_list_delete_finish_ret
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 249
    functionDepth: 8
    functionLinenumber: 249
    functionLinenumberEnd: 269
    functionName: maildir_list_delete_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - mailbox_list_delete_finish_ret
    - maildir_list_delete_maildir
    - mailbox_list_delete_mailbox_file
    - i_assert
    linkageType: ''
    returnType: int
    signature: int maildir_list_delete_mailbox(struct mailbox_list *list, const char
      *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:278,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:280,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:281,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:282,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:285,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:286,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - list
    - name
    argTypes:
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 291
    functionName: maildir_list_delete_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - i_unreached
    - mailbox_list_set_error
    - mailbox_list_set_critical
    - stat
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    linkageType: ''
    returnType: int
    signature: int maildir_list_delete_dir(struct mailbox_list *list, const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:299,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:300,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:303,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:306,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:307,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 5
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    - type
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 293
    functionDepth: 3
    functionLinenumber: 293
    functionLinenumberEnd: 312
    functionName: rename_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 1
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - rename
    - mailbox_list_set_critical
    linkageType: ''
    returnType: int
    signature: "int rename_dir(struct mailbox_list *oldlist, const char *oldname,\n\t\t
      \     struct mailbox_list *newlist, const char *newname,\n\t\t      enum mailbox_list_path_type
      type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:335,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:336,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:338,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:339,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:341,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:343,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:344,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:345,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:348,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:353,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:355,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:356,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:359,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:363,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:367,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:368,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:369,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:375,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:376,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:377,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:380,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:383,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:393,1
    - Dst: EDESTDIREXISTS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:393,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:396,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:402,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:404,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:406,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:409,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:410,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 4
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 314
    functionDepth: 7
    functionLinenumber: 314
    functionLinenumberEnd: 413
    functionName: maildir_rename_children
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - mail_namespace_get_sep
    - p_strdup
    - strlen
    - t_strdup_printf
    - pool_unref
    - rename
    - i_unreached
    - mailbox_list_get_storage_name
    - mailbox_list_iter_init
    - rename_dir
    - array_free
    - array_get
    - mailbox_list_set_critical
    - mailbox_list_get_vname
    - EDESTDIREXISTS
    - strncmp
    - strcmp
    - pool_alloconly_create
    - mailbox_list_get_path
    - mailbox_list_iter_deinit
    - array_push_back
    - mailbox_list_iter_next
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int maildir_rename_children(struct mailbox_list *oldlist, const char
      *oldname,\n\t\t\tstruct mailbox_list *newlist, const char *newname)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:425,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:427,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:429,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:431,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:433,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:435,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:436,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:443,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:443,1
    - Dst: mailbox_list_get_permissions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:446,1
    - Dst: mailbox_list_get_permissions
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:447,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:452,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:460,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:462,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:464,1
    - Dst: rename_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:466,1
    - Dst: maildir_rename_children
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:471,1
    - Dst: mailbox_list_set_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:477,1
    - Dst: T_MAILBOX_LIST_ERR_NOT_FOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c:478,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 4
    argNames:
    - oldlist
    - oldname
    - newlist
    - newname
    argTypes:
    - struct mailbox_list*
    - char*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 415
    functionDepth: 8
    functionLinenumber: 415
    functionLinenumberEnd: 483
    functionName: maildir_list_rename_mailbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-maildir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - strchr
    - rename
    - i_unreached
    - mailbox_list_set_error
    - t_strdup_printf
    - mailbox_list_get_root_forced
    - maildir_rename_children
    - rename_dir
    - mailbox_list_get_permissions
    - mailbox_list_get_hierarchy_sep
    - T_MAILBOX_LIST_ERR_NOT_FOUND
    linkageType: ''
    returnType: int
    signature: "int maildir_list_rename_mailbox(struct mailbox_list *oldlist, const
      char *oldname,\n\t\t\t    struct mailbox_list *newlist, const char *newname)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:44,1
    - Dst: mail_namespace_find_unsubscribable
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:46,1
    - Dst: mail_namespace_is_shared_user_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:64,1
    - Dst: mailbox_list_join_refpattern
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:68,1
    - Dst: mail_namespace_find_unsubscribable
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:72,1
    - Dst: mailbox_list_subscription_fill_one
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:74,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:81,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:87,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:87,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:93,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:94,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:98,1
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:101,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:105,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:106,1
    - Dst: mailbox_tree_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:108,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 3
    argNames:
    - list
    - src_list
    - name
    argTypes:
    - struct mailbox_list*
    - struct mailbox_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 22
    functionDepth: 4
    functionLinenumber: 22
    functionLinenumberEnd: 112
    functionName: mailbox_list_subscription_fill_one
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c
    functionUses: 1
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_list_is_valid_name
    - mailbox_list_join_refpattern
    - mailbox_list_subscription_fill_one
    - mail_namespace_find_unsubscribable
    - uni_utf8_str_is_valid
    - strlen
    - t_strndup
    - strncmp
    - mailbox_list_get_vname
    - mailbox_tree_get
    - mail_namespace_is_shared_user_root
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_subscription_fill_one(struct mailbox_list *list,\n\t\t\t\t
      \  struct mailbox_list *src_list,\n\t\t\t\t   const char *name)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:126,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:129,1
    - Dst: mailbox_tree_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:130,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:135,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:140,1
    - Dst: stat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:143,1
    - Dst: mailbox_tree_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:146,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:150,1
    - Dst: mailbox_tree_clear
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:160,1
    - Dst: subsfile_list_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:163,1
    - Dst: subsfile_list_fstat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:164,1
    - Dst: subsfile_list_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:166,1
    - Dst: mailbox_list_subscription_fill_one
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:168,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:172,1
    - Dst: subsfile_set_subscribed
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:176,1
    - Dst: mailbox_list_get_temp_prefix
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:177,1
    - Dst: subsfile_list_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:183,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 2
    argNames:
    - src_list
    - dest_list
    argTypes:
    - struct mailbox_list*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 114
    functionDepth: 7
    functionLinenumber: 114
    functionLinenumberEnd: 188
    functionName: mailbox_list_subscriptions_refresh
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - subsfile_list_fstat
    - mailbox_list_get_temp_prefix
    - mailbox_list_subscription_fill_one
    - subsfile_list_next
    - mailbox_list_get_root_path
    - mailbox_list_set_critical
    - subsfile_list_deinit
    - e_warning
    - subsfile_list_init
    - stat
    - subsfile_set_subscribed
    - mailbox_tree_clear
    - i_assert
    - t_strconcat
    - mailbox_tree_init
    linkageType: ''
    returnType: int
    signature: "int mailbox_list_subscriptions_refresh(struct mailbox_list *src_list,\n\t\t\t\t
      \      struct mailbox_list *dest_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:197,1
    - Dst: mailbox_tree_iterate_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:206,1
    - Dst: mailbox_tree_iterate_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:208,1
    - Dst: mailbox_list_iter_update
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:209,1
    - Dst: mailbox_tree_iterate_deinit
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - tree
    argTypes:
    - struct mailbox_list_iterate_context*
    - struct mailbox_tree_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 190
    functionDepth: 5
    functionLinenumber: 190
    functionLinenumberEnd: 211
    functionName: mailbox_list_subscriptions_fill
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-subscriptions.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mailbox_list_iter_update
    - mailbox_tree_iterate_deinit
    - mailbox_tree_iterate_next
    - mailbox_tree_iterate_init
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_subscriptions_fill(struct mailbox_list_iterate_context
      *ctx,\n\t\t\t\t     struct mailbox_tree_context *tree)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:73,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:74,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:75,1
    - Dst: mailbox_list_set_internal_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:79,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - vname
    - info_flags
    argTypes:
    - struct fs_list_iterate_context*
    - char*
    - enum mailbox_info_flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 59
    functionDepth: 5
    functionLinenumber: 59
    functionLinenumberEnd: 98
    functionName: fs_get_existence_info_flag
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_set_internal_error
    - mailbox_free
    - mailbox_alloc
    - mailbox_exists
    linkageType: ''
    returnType: int
    signature: "int fs_get_existence_info_flag(struct fs_list_iterate_context *ctx,\n\t\t\t
      \  const char *vname,\n\t\t\t   enum mailbox_info_flags *info_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:108,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:109,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:112,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:114,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:116,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:117,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:118,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:120,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:121,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:122,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:122,1
    - Dst: rename
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:124,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:124,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:125,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - storage_name
    argTypes:
    - struct fs_list_iterate_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 127
    functionName: fs_list_rename_invalid
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - rename
    - str_c
    - t_str_new
    - str_append_c
    - i_unreached
    - strlen
    - mailbox_list_get_root_forced
    - imap_utf8_to_utf7
    - e_error
    - uni_utf8_get_valid_data
    - str_append
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void fs_list_rename_invalid(struct fs_list_iterate_context *ctx,\n\t\t
      \      const char *storage_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:135,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:137,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - dir
    - fname
    argTypes:
    - struct list_dir_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 143
    functionName: dir_get_storage_name
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: 'char *

      dir_get_storage_name(struct list_dir_context *dir, const char *fname)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:161,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:164,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:169,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:171,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:173,1
    - Dst: dir_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:178,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:179,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:180,1
    - Dst: fs_list_rename_invalid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:181,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:187,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:188,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:188,1
    - Dst: mailbox_list_dirent_is_alias_symlink
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:208,1
    - Dst: struct fs_list_iterate_context*::ctx::list::v::get_mailbox_flags
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:213,1
    - Dst: mailbox_list_get_file_type
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:215,1
    - Dst: MAILBOX_INFO_FLAGS_FINISHED
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:218,1
    - Dst: fs_get_existence_info_flag
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:221,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:228,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:238,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:239,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 51
    argCount: 4
    argNames:
    - ctx
    - dir_path
    - dir
    - d
    argTypes:
    - struct fs_list_iterate_context*
    - char*
    - struct list_dir_context*
    - struct dirent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 145
    functionDepth: 6
    functionLinenumber: 145
    functionLinenumberEnd: 242
    functionName: dir_entry_get
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_dirent_is_alias_symlink
    - p_strdup
    - dir_get_storage_name
    - array_append_space
    - ENUM_NEGATE
    - uni_utf8_str_is_valid
    - struct fs_list_iterate_context*::ctx::list::v::get_mailbox_flags
    - imap_match
    - MAILBOX_INFO_FLAGS_FINISHED
    - mailbox_list_get_root_forced
    - mailbox_list_get_file_type
    - mailbox_list_get_vname
    - fs_get_existence_info_flag
    - fs_list_rename_invalid
    linkageType: ''
    returnType: int
    signature: "int dir_entry_get(struct fs_list_iterate_context *ctx, const char
      *dir_path,\n\t      struct list_dir_context *dir, const struct dirent *d)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_try_get_absolute_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:252,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:268,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:273,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:277,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - ctx
    - storage_name
    - iter_from_index_dir
    - path_r
    argTypes:
    - struct fs_list_iterate_context*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 244
    functionDepth: 4
    functionLinenumber: 244
    functionLinenumberEnd: 281
    functionName: fs_list_get_storage_path
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_try_get_absolute_path
    - t_strconcat
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: bool
    signature: "bool fs_list_get_storage_path(struct fs_list_iterate_context *ctx,\n\t\t\t
      const char *storage_name, bool iter_from_index_dir,\n\t\t\t const char **path_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fs_list_get_storage_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:292,1
    - Dst: opendir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:300,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:302,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:308,1
    - Dst: mailbox_list_set_critical
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:312,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:323,1
    - Dst: if
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:324,1
    - Dst: dir_entry_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:324,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - dir
    argTypes:
    - struct fs_list_iterate_context*
    - struct list_dir_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 283
    functionDepth: 7
    functionLinenumber: 283
    functionLinenumberEnd: 327
    functionName: fs_list_dir_read
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - ENOTFOUND
    - readdir
    - opendir
    - mailbox_list_set_critical
    - if
    - fs_list_get_storage_path
    - dir_entry_get
    - ENOACCESS
    linkageType: ''
    returnType: int
    signature: "int fs_list_dir_read(struct fs_list_iterate_context *ctx,\n\t\t struct
      list_dir_context *dir)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:348,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:349,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:351,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:353,1
    - Dst: fs_list_dir_read
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - storage_name
    - info_flags
    argTypes:
    - struct fs_list_iterate_context*
    - char*
    - enum mailbox_info_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 341
    functionDepth: 8
    functionLinenumber: 341
    functionLinenumberEnd: 364
    functionName: fs_list_read_dir
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - p_array_init
    - fs_list_dir_read
    linkageType: ''
    returnType: struct list_dir_context
    signature: "struct list_dir_context *\nfs_list_read_dir(struct fs_list_iterate_context
      *ctx, const char *storage_name,\n\t\t enum mailbox_info_flags info_flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:375,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:376,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:383,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:385,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:392,1
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:393,1
    - Dst: mailbox_list_is_valid_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:394,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:395,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:396,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:399,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:400,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:402,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - patterns
    argTypes:
    - struct fs_list_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 366
    functionDepth: 4
    functionLinenumber: 366
    functionLinenumberEnd: 403
    functionName: fs_list_get_valid_patterns
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_is_valid_name
    - p_strdup
    - p_array_init
    - array_push_back
    - uni_utf8_str_is_valid
    - strlen
    - mailbox_list_get_storage_name
    - array_append_zero
    - array_count
    - array_front
    - strncmp
    linkageType: ''
    returnType: bool
    signature: "bool fs_list_get_valid_patterns(struct fs_list_iterate_context *ctx,\n\t\t\t
      \  const char *const *patterns)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:408,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:415,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:418,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:422,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:437,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:447,1
    - Dst: strncasecmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:448,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:457,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:467,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:473,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:477,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:481,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:482,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:485,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:487,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:488,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:489,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:490,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:493,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 45
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 497
    functionName: fs_list_get_roots
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - p_strdup
    - array_delete
    - p_array_init
    - array_push_back
    - str_begins
    - strcasecmp
    - mailbox_list_get_storage_name
    - array_count
    - strncasecmp
    - array_idx_elem
    - t_strdup_until
    - array_sort
    - strncmp
    - i_assert
    linkageType: ''
    returnType: void
    signature: void fs_list_get_roots(struct fs_list_iterate_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:504,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:506,1
    - Dst: fs_list_read_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:509,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 499
    functionDepth: 9
    functionLinenumber: 499
    functionLinenumberEnd: 512
    functionName: fs_list_next_root
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    - fs_list_read_dir
    linkageType: ''
    returnType: void
    signature: void fs_list_next_root(struct fs_list_iterate_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:521,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:522,1
    - Dst: array_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:526,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:528,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:534,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:534,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:535,1
    - Dst: fs_list_get_valid_patterns
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:538,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:540,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:544,1
    - Dst: imap_match_init_multiple
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:547,1
    - Dst: fs_list_get_roots
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:549,1
    - Dst: fs_list_next_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - _list
    - patterns
    - flags
    argTypes:
    - struct mailbox_list*
    - char**
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 514
    functionDepth: 10
    functionLinenumber: 514
    functionLinenumberEnd: 552
    functionName: fs_list_iter_init
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - mail_namespace_get_sep
    - imap_match_init_multiple
    - p_new
    - hash_table_create
    - p_array_init
    - imap_match_init
    - fs_list_get_roots
    - fs_list_next_root
    - hash_table_is_created
    - fs_list_get_valid_patterns
    - i_assert
    - array_create
    linkageType: ''
    returnType: struct mailbox_list_iterate_context
    signature: "struct mailbox_list_iterate_context *\nfs_list_iter_init(struct mailbox_list
      *_list, const char *const *patterns,\n\t\t  enum mailbox_list_iter_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:564,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:567,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 570
    functionName: fs_list_iter_deinit
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - hash_table_destroy
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int fs_list_iter_deinit(struct mailbox_list_iterate_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:575,1
    - Dst: mail_namespace_is_inbox_noinferiors
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:577,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 581
    functionName: inbox_flags_set
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - mail_namespace_is_inbox_noinferiors
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: void inbox_flags_set(struct fs_list_iterate_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 592
    functionName: fs_list_get_inbox_vname
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - p_strconcat
    linkageType: ''
    returnType: char
    signature: 'char *

      fs_list_get_inbox_vname(struct fs_list_iterate_context *ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fs_list_get_inbox_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:598,1
    - Dst: mailbox_list_mailbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:600,1
    - Dst: inbox_flags_set
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:607,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 594
    functionDepth: 6
    functionLinenumber: 594
    functionLinenumberEnd: 616
    functionName: list_file_unfound_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - inbox_flags_set
    - mailbox_list_mailbox
    - fs_list_get_inbox_vname
    linkageType: ''
    returnType: bool
    signature: bool list_file_unfound_inbox(struct fs_list_iterate_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_list_get_storage_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:624,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:627,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:629,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - storage_name
    argTypes:
    - struct fs_list_iterate_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 618
    functionDepth: 5
    functionLinenumber: 618
    functionLinenumberEnd: 631
    functionName: list_file_is_any_inbox
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_path
    - fs_list_get_storage_path
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool list_file_is_any_inbox(struct fs_list_iterate_context *ctx,\n\t\t
      \      const char *storage_name)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: dir_get_storage_name
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:643,1
    - Dst: mailbox_list_get_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:645,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:646,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:649,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:651,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:654,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:657,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:659,1
    - Dst: fs_list_read_dir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:675,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:683,1
    - Dst: list_file_is_any_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:686,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:691,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:699,1
    - Dst: inbox_flags_set
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:711,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:714,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:718,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:724,1
    - Dst: list_file_is_any_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:727,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:733,1
    - Dst: mailbox_list_iter_try_delete_noselect
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:744,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 72
    argCount: 2
    argNames:
    - ctx
    - entry
    argTypes:
    - struct fs_list_iterate_context*
    - struct list_dir_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 633
    functionDepth: 9
    functionLinenumber: 633
    functionLinenumberEnd: 755
    functionName: fs_list_entry
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - dir_get_storage_name
    - ENUM_NEGATE
    - inbox_flags_set
    - imap_match
    - t_strdup_printf
    - strcasecmp
    - pool_unref
    - mailbox_list_iter_try_delete_noselect
    - fs_list_read_dir
    - mailbox_list_get_vname
    - i_assert
    - list_file_is_any_inbox
    linkageType: ''
    returnType: int
    signature: "int fs_list_entry(struct fs_list_iterate_context *ctx,\n\t      const
      struct list_dir_entry *entry)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:767,1
    - Dst: fs_list_entry
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:769,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:774,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:779,1
    - Dst: fs_list_next_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:782,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:789,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:792,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:797,1
    - Dst: fs_list_get_inbox_vname
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:798,1
    - Dst: list_file_unfound_inbox
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:802,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 757
    functionDepth: 10
    functionLinenumber: 757
    functionLinenumberEnd: 807
    functionName: fs_list_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - fs_list_entry
    - array_get
    - imap_match
    - fs_list_next_root
    - pool_unref
    - list_file_unfound_inbox
    - p_strconcat
    - fs_list_get_inbox_vname
    linkageType: ''
    returnType: int
    signature: int fs_list_next(struct fs_list_iterate_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:812,1
    - Dst: fs_list_next_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 809
    functionDepth: 10
    functionLinenumber: 809
    functionLinenumberEnd: 819
    functionName: fs_list_iter_reset
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - i_assert
    - fs_list_next_root
    linkageType: ''
    returnType: void
    signature: void fs_list_iter_reset(struct fs_list_iterate_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:826,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:828,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:829,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:829,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - _ctx
    - info
    argTypes:
    - struct fs_list_iterate_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 833
    functionName: fs_list_iter_try_insert_unseen
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - hash_table_insert
    - p_strdup
    - hash_table_lookup
    - POINTER_CAST
    linkageType: ''
    returnType: bool
    signature: "bool fs_list_iter_try_insert_unseen(struct fs_list_iterate_context
      *_ctx,\n\t\t\t\t\t   const struct mailbox_info *info)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fs_list_iter_try_insert_unseen
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:838,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:859,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:861,1
    - Dst: mailbox_mkdir
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:863,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:864,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:867,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:868,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:870,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 835
    functionDepth: 5
    functionLinenumber: 835
    functionLinenumberEnd: 874
    functionName: fs_list_iter_mkdir_missing
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_path
    - mailbox_free
    - mailbox_get_last_internal_error
    - fs_list_iter_try_insert_unseen
    - mailbox_mkdir
    - e_error
    - mailbox_alloc
    linkageType: ''
    returnType: bool
    signature: bool fs_list_iter_mkdir_missing(struct fs_list_iterate_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_list_next
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct mailbox_list_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 876
    functionDepth: 11
    functionLinenumber: 876
    functionLinenumberEnd: 885
    functionName: fs_list_iter_next
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-fs-iter.c
    functionUses: 0
    functionsReached:
    - fs_list_next
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      fs_list_iter_next(struct mailbox_list_iterate_context *_ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_delete_mailbox_until_root
      Src: /src/dovecot/src/lib-storage/list/mailbox-list-iter-private.h:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - info
    - storage_name
    argTypes:
    - struct mailbox_list_iterate_context*
    - struct mailbox_info*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 30
    functionDepth: 6
    functionLinenumber: 30
    functionLinenumberEnd: 44
    functionName: mailbox_list_iter_try_delete_noselect
    functionSourceFile: /src/dovecot/src/lib-storage/list/mailbox-list-iter-private.h
    functionUses: 2
    functionsReached:
    - mailbox_list_delete_mailbox_until_root
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_iter_try_delete_noselect(struct mailbox_list_iterate_context
      *ctx,\n\t\t\t\t      const struct mailbox_info *info,\n\t\t\t\t      const char
      *storage_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-ldap/ldap-settings-parse.h:8,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-ldap/ldap-settings-parse.h:10,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-ldap/ldap-settings-parse.h:12,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - str
    - scope_r
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 17
    functionName: ldap_parse_scope
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-settings-parse.h
    functionUses: 1
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int ldap_parse_scope(const char *str, int *scope_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - client
    - ','
    - input
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: ldap_search_start
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ldap_search_start(client, input, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - client
    - ','
    - input
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: ldap_compare_start
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ldap_compare_start(client, input, callback, context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:11,1
    - Dst: ldap_parse_result
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:22,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:25,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:28,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:30,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:38,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:40,1
    - Dst: struct ldap_op_queue_entry*::result_callback
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:45,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:48,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - conn
    - req
    - message
    - finished_r
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    - LDAPMessage*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 50
    functionName: ldap_compare_callback
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-compare.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_strdup_printf
    - ldap_memfree
    - ldap_parse_result
    - ldap_err2string
    - ldap_msgtype
    - struct ldap_op_queue_entry*::result_callback
    linkageType: ''
    returnType: int
    signature: "int ldap_compare_callback(struct ldap_connection *conn,\n\t\t      struct
      ldap_op_queue_entry *req,\n\t\t      LDAPMessage *message, bool *finished_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:58,1
    - Dst: ldap_compare_ext
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:72,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:81,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - conn
    - req
    - error_r
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 86
    functionName: ldap_compare_send
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-compare.c
    functionUses: 0
    functionsReached:
    - ldap_compare_ext
    - ldap_err2string
    - strlen
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int ldap_compare_send(struct ldap_connection *conn, struct ldap_op_queue_entry
      *req,\n\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:94,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:95,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:105,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:106,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:107,1
    - Dst: ldap_connection_queue_request
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - conn
    - input
    - callback
    - context
    argTypes:
    - struct ldap_connection*
    - struct ldap_compare_input*
    - ldap_result_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 113
    functionName: ldap_connection_compare_start
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-compare.c
    functionUses: 0
    functionsReached:
    - ldap_connection_queue_request
    - pool_alloconly_create
    - p_strdup
    - p_new
    linkageType: ''
    returnType: void
    signature: "void ldap_connection_compare_start(struct ldap_connection *conn,\n\t\t\t\t
      \  const struct ldap_compare_input *input,\n\t\t\t\t   ldap_result_callback_t
      *callback,\n\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-compare.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct ldap_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: ldap_compare_result
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-compare.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool ldap_compare_result(struct ldap_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:18,1
    - Dst: ldap_connection_deinit
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:21,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pool
    - list
    argTypes:
    - struct ldap_connection_pool*
    - struct ldap_connection_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 23
    functionName: ldap_connection_list_remove
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection-pool.c
    functionUses: 0
    functionsReached:
    - ldap_connection_deinit
    - i_free
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: "void ldap_connection_list_remove(struct ldap_connection_pool *pool,\n\t\t\t\t\tstruct
      ldap_connection_list *list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_list_remove
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - pool
    - max_count
    argTypes:
    - struct ldap_connection_pool*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 37
    functionName: ldap_connection_pool_shrink_to
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection-pool.c
    functionUses: 0
    functionsReached:
    - ldap_connection_list_remove
    linkageType: ''
    returnType: void
    signature: "void ldap_connection_pool_shrink_to(struct ldap_connection_pool *pool,\n\t\t\t
      \      unsigned int max_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - max_connections
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: ldap_connection_pool_init
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection-pool.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct ldap_connection_pool
    signature: 'struct ldap_connection_pool *

      ldap_connection_pool_init(unsigned int max_connections)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_pool_shrink_to
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:55,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:56,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _pool
    argTypes:
    - struct ldap_connection_pool**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 58
    functionName: ldap_connection_pool_deinit
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection-pool.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - ldap_connection_pool_shrink_to
    linkageType: ''
    returnType: void
    signature: void ldap_connection_pool_deinit(struct ldap_connection_pool **_pool)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_have_settings
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:71,1
    - Dst: ldap_connection_init
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:77,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:80,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:84,1
    - Dst: ldap_connection_pool_shrink_to
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 6
    argNames:
    - pool
    - client
    - set
    - ssl_set
    - list_r
    - error_r
    argTypes:
    - struct ldap_connection_pool*
    - struct ldap_client*
    - struct ldap_client_settings*
    - struct ssl_settings*
    - struct ldap_connection_list**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 90
    functionName: ldap_connection_pool_get
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection-pool.c
    functionUses: 0
    functionsReached:
    - ldap_connection_init
    - ldap_connection_pool_shrink_to
    - ldap_connection_have_settings
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: int
    signature: "int ldap_connection_pool_get(struct ldap_connection_pool *pool,\n\t\t\t
      \    struct ldap_client *client,\n\t\t\t     const struct ldap_client_settings
      *set,\n\t\t\t     const struct ssl_settings *ssl_set,\n\t\t\t     struct ldap_connection_list
      **list_r,\n\t\t\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:99,1
    - Dst: ldap_connection_pool_shrink_to
      Src: /src/dovecot/src/lib-ldap/ldap-connection-pool.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pool
    - _list
    argTypes:
    - struct ldap_connection_pool*
    - struct ldap_connection_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: ldap_connection_pool_unref
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection-pool.c
    functionUses: 0
    functionsReached:
    - i_assert
    - ldap_connection_pool_shrink_to
    linkageType: ''
    returnType: void
    signature: "void ldap_connection_pool_unref(struct ldap_connection_pool *pool,\n\t\t\t\tstruct
      ldap_connection_list **_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pool
    argTypes:
    - struct ldap_connection_pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 114
    functionName: ldap_connection_pool_have_references
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection-pool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ldap_connection_pool_have_references(struct ldap_connection_pool
      *pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:29,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - min_protocol
    - opt_r
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: ldap_min_protocol_to_option
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-utils.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int ldap_min_protocol_to_option(const char *min_protocol, int *opt_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_set_option
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:46,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:48,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - ld
    - opt
    - value
    - optname
    - value_str
    - error_r
    argTypes:
    - LDAP*
    - int
    - void*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: ldap_set_opt
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-utils.c
    functionUses: 0
    functionsReached:
    - ldap_err2string
    - t_strdup_printf
    - ldap_set_option
    linkageType: ''
    returnType: int
    signature: "int ldap_set_opt(LDAP *ld, int opt, const void *value,\n\t\t const
      char *optname, const char *value_str,\n\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_set_opt
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ld
    - opt
    - value
    - optname
    - error_r
    argTypes:
    - LDAP*
    - int
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: ldap_set_opt_str
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-utils.c
    functionUses: 0
    functionsReached:
    - ldap_set_opt
    linkageType: ''
    returnType: int
    signature: "int ldap_set_opt_str(LDAP *ld, int opt, const char *value,\n\t\t     const
      char *optname, const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:77,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:81,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:83,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:85,1
    - Dst: ldap_set_opt_str
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:88,1
    - Dst: ldap_set_opt_str
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:91,1
    - Dst: ldap_set_opt_str
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:95,1
    - Dst: ldap_set_opt_str
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:98,1
    - Dst: ldap_set_opt_str
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:101,1
    - Dst: ldap_set_opt_str
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:105,1
    - Dst: ldap_set_opt
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:112,1
    - Dst: ldap_min_protocol_to_option
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:117,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:118,1
    - Dst: ldap_set_opt
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:124,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:131,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 5
    argNames:
    - ld
    - starttls
    - uris
    - ssl_set
    - error_r
    argTypes:
    - LDAP*
    - bool
    - char*
    - struct ssl_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 73
    functionDepth: 3
    functionLinenumber: 73
    functionLinenumberEnd: 135
    functionName: ldap_set_tls_options
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-utils.c
    functionUses: 0
    functionsReached:
    - ldap_set_option
    - t_strdup_printf
    - ldap_min_protocol_to_option
    - ldap_set_opt_str
    - settings_file_get
    - strstr
    - ldap_set_opt
    linkageType: ''
    returnType: int
    signature: "int ldap_set_tls_options(LDAP *ld, bool starttls, const char *uris,\n\t\t\t
      const struct ssl_settings *ssl_set,\n\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_file_has_path
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:141,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - file
    - name
    - error_r
    argTypes:
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: ldap_set_tls_validate_file
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-utils.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - settings_file_has_path
    linkageType: ''
    returnType: int
    signature: "int ldap_set_tls_validate_file(const char *file, const char *name,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_set_tls_validate_file
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:150,1
    - Dst: ldap_set_tls_validate_file
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:152,1
    - Dst: ldap_set_tls_validate_file
      Src: /src/dovecot/src/lib-ldap/ldap-utils.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct ssl_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 157
    functionName: ldap_set_tls_validate
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-utils.c
    functionUses: 0
    functionsReached:
    - ldap_set_tls_validate_file
    linkageType: ''
    returnType: int
    signature: int ldap_set_tls_validate(const struct ssl_settings *set, const char
      **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_kill
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:30,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:32,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:35,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:36,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:37,1
    - Dst: aqueue_deinit
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:39,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:40,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:41,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:42,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct ldap_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 44
    functionName: ldap_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - aqueue_deinit
    - event_unref
    - aqueue_count
    - settings_free
    - pool_unref
    - array_idx_elem
    - aqueue_idx
    - ldap_connection_kill
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void ldap_connection_deinit(struct ldap_connection **_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldap_initialize
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:51,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:53,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:54,1
    - Dst: ldap_set_tls_options
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:58,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:64,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:65,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:67,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:70,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:73,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct ldap_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 46
    functionDepth: 4
    functionLinenumber: 46
    functionLinenumberEnd: 78
    functionName: ldap_connection_setup
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - ldap_initialize
    - ldap_set_tls_options
    - ldap_set_option
    - t_strdup_printf
    - ldap_err2string
    linkageType: ''
    returnType: int
    signature: int ldap_connection_setup(struct ldap_connection *conn, const char
      **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:84,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:88,1
    - Dst: settings_equal
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - conn
    - set
    - ssl_set
    argTypes:
    - struct ldap_connection*
    - struct ldap_client_settings*
    - struct ssl_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: ldap_connection_have_settings
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - settings_equal
    - strstr
    linkageType: ''
    returnType: bool
    signature: "bool ldap_connection_have_settings(struct ldap_connection *conn,\n\t\t\t\t
      \  const struct ldap_client_settings *set,\n\t\t\t\t   const struct ssl_settings
      *ssl_set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:100,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:102,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:103,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:105,1
    - Dst: ldap_client_get_event
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:105,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:107,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:108,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:110,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:111,1
    - Dst: ber_str2bv
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:118,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:118,1
    - Dst: ldap_connection_setup
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:120,1
    - Dst: ldap_connection_deinit
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:121,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:125,1
    - Dst: aqueue_init
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 5
    argNames:
    - client
    - set
    - ssl_set
    - conn_r
    - error_r
    argTypes:
    - struct ldap_client*
    - struct ldap_client_settings*
    - struct ssl_settings*
    - struct ldap_connection**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 95
    functionDepth: 5
    functionLinenumber: 95
    functionLinenumberEnd: 130
    functionName: ldap_connection_init
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - pool_ref
    - p_array_init
    - event_set_append_log_prefix
    - strlen
    - ldap_client_get_event
    - t_strdup_printf
    - ber_str2bv
    - aqueue_init
    - ldap_connection_deinit
    - ldap_connection_setup
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int ldap_connection_init(struct ldap_client *client,\n\t\t\t const
      struct ldap_client_settings *set,\n\t\t\t const struct ssl_settings *ssl_set,\n\t\t\t
      struct ldap_connection **conn_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:135,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:137,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:139,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:140,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:144,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:145,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:147,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 149
    functionName: ldap_connection_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io
    - aqueue_count
    - array_idx_elem
    - io_loop_move_timeout
    - aqueue_idx
    linkageType: ''
    returnType: void
    signature: void ldap_connection_switch_ioloop(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:157,1
    - Dst: struct ldap_op_queue_entry*::result_callback
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:162,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:164,1
    - Dst: ldap_connection_kill
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - conn
    - req
    - ret
    - error
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 166
    functionName: ldap_connection_result_failure
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - ldap_connection_kill
    - e_error
    - struct ldap_op_queue_entry*::result_callback
    linkageType: ''
    returnType: void
    signature: "void ldap_connection_result_failure(struct ldap_connection *conn,\n\t\t\t
      \      struct ldap_op_queue_entry *req,\n\t\t\t       int ret, const char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:173,1
    - Dst: struct ldap_op_queue_entry*::result_callback
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - req
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 178
    functionName: ldap_connection_result_success
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - struct ldap_op_queue_entry*::result_callback
    linkageType: ''
    returnType: void
    signature: "void ldap_connection_result_success(struct ldap_connection *conn,\n\t\t\t\t
      \   struct ldap_op_queue_entry *req)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:187,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:189,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - index_r
    argTypes:
    - struct ldap_connection*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 197
    functionName: ldap_connection_next_unsent_request
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - aqueue_count
    - array_idx_elem
    - aqueue_idx
    linkageType: ''
    returnType: struct ldap_op_queue_entry
    signature: "struct ldap_op_queue_entry *\nldap_connection_next_unsent_request(struct
      ldap_connection *conn,\n\t\t\t\t    unsigned int *index_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:205,1
    - Dst: ldap_connection_connect
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:208,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:209,1
    - Dst: ldap_connection_next_unsent_request
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:219,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:223,1
    - Dst: struct ldap_op_queue_entry*::send_request_cb
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:227,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:231,1
    - Dst: struct ldap_op_queue_entry*::result_callback
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:235,1
    - Dst: ldap_connection_request_destroy
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:237,1
    - Dst: aqueue_delete
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:238,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 240
    functionName: ldap_connection_send_next
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - ldap_connection_connect
    - ldap_connection_request_destroy
    - aqueue_delete
    - timeout_add
    - struct ldap_op_queue_entry*::result_callback
    - struct ldap_op_queue_entry*::send_request_cb
    - i_assert
    - ldap_connection_next_unsent_request
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void ldap_connection_send_next(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:249,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct ldap_op_queue_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 251
    functionName: ldap_connection_request_destroy
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - pool_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void ldap_connection_request_destroy(struct ldap_op_queue_entry **_req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_append
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:257,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:259,1
    - Dst: ldap_connection_send_next
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - req
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 262
    functionName: ldap_connection_queue_request
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - aqueue_append
    - timeout_add
    - ldap_connection_send_next
    linkageType: ''
    returnType: void
    signature: void ldap_connection_queue_request(struct ldap_connection *conn, struct
      ldap_op_queue_entry *req)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:271,1
    - Dst: ldap_parse_result
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:274,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:284,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:284,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:286,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:289,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:289,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:292,1
    - Dst: ldap_parse_extended_result
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:295,1
    - Dst: ldap_install_tls
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:298,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:301,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:301,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:303,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:308,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:308,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:310,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:314,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:317,1
    - Dst: ldap_connect_next_message
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:320,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:323,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:323,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:325,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:330,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:331,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:331,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:333,1
    - Dst: ldap_parse_sasl_bind_result
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:337,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:339,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:340,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:341,1
    - Dst: ldap_connect_next_message
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:345,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:347,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:349,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 60
    argCount: 4
    argNames:
    - conn
    - req
    - message
    - finished_r
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    - LDAPMessage*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 350
    functionName: ldap_connection_connect_parse
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - e_debug
    - t_strdup_printf
    - ldap_memfree
    - ldap_parse_result
    - ldap_err2string
    - ldap_msgtype
    - ldap_connection_result_failure
    - ldap_parse_sasl_bind_result
    - ldap_connect_next_message
    - ldap_install_tls
    - ldap_parse_extended_result
    linkageType: ''
    returnType: int
    signature: "int ldap_connection_connect_parse(struct ldap_connection *conn,\n\t\t\t
      \     struct ldap_op_queue_entry *req,\n\t\t\t      LDAPMessage *message, bool
      *finished_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:358,1
    - Dst: ldap_abandon_ext
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:360,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:362,1
    - Dst: struct ldap_op_queue_entry*::result_callback
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:366,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:368,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:371,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:372,1
    - Dst: aqueue_delete
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:374,1
    - Dst: ldap_connection_request_destroy
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:375,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:379,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct ldap_op_queue_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 380
    functionName: ldap_connection_abort_request
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - ldap_connection_request_destroy
    - aqueue_delete
    - i_unreached
    - aqueue_count
    - ldap_abandon_ext
    - array_idx_elem
    - struct ldap_op_queue_entry*::result_callback
    - aqueue_idx
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void ldap_connection_abort_request(struct ldap_op_queue_entry *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:386,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:390,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:393,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:394,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:395,1
    - Dst: result_callback
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:397,1
    - Dst: ldap_connection_request_destroy
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:398,1
    - Dst: aqueue_clear
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 401
    functionName: ldap_connection_abort_all_requests
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - ldap_connection_request_destroy
    - array_idx_modifiable
    - aqueue_clear
    - aqueue_count
    - result_callback
    - aqueue_idx
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void ldap_connection_abort_all_requests(struct ldap_connection *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:413,1
    - Dst: ldap_start_tls
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:414,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:416,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:416,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:418,1
    - Dst: ldap_sasl_bind
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:427,1
    - Dst: ldap_connection_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:435,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:435,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:437,1
    - Dst: ldap_connection_result_success
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:442,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:445,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - conn
    - req
    - finished_r
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 403
    functionDepth: 2
    functionLinenumber: 403
    functionLinenumberEnd: 451
    functionName: ldap_connect_next_message
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - ldap_sasl_bind
    - i_unreached
    - ldap_connection_result_success
    - t_strdup_printf
    - ldap_err2string
    - ldap_connection_result_failure
    - ldap_start_tls
    - strstr
    linkageType: ''
    returnType: int
    signature: "int ldap_connect_next_message(struct ldap_connection *conn,\n\t\t\t
      \ struct ldap_op_queue_entry *req, bool *finished_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_setup
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:463,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:464,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:467,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:468,1
    - Dst: ldap_connect_next_message
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:474,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:476,1
    - Dst: aqueue_append
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:480,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:483,1
    - Dst: ldap_get_option
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:485,1
    - Dst: ber_sockbuf_ctrl
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:486,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:487,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:489,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 453
    functionDepth: 5
    functionLinenumber: 453
    functionLinenumberEnd: 491
    functionName: ldap_connection_connect
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_new
    - io_add
    - aqueue_append
    - timeout_add
    - pool_unref
    - e_error
    - ber_sockbuf_ctrl
    - ldap_connect_next_message
    - ldap_get_option
    - ldap_connection_setup
    linkageType: ''
    returnType: int
    signature: int ldap_connection_connect(struct ldap_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_remove_closed
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:495,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:496,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:497,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:499,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:503,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:504,1
    - Dst: ldap_abandon_ext
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:506,1
    - Dst: ldap_unbind_ext
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:511,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:512,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 516
    functionName: ldap_connection_kill
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 2
    functionsReached:
    - ldap_unbind_ext
    - aqueue_count
    - ldap_abandon_ext
    - ldap_memfree
    - array_idx_elem
    - io_remove_closed
    - aqueue_idx
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void ldap_connection_kill(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 523
    functionName: ldap_connection_check
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ldap_connection_check(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:529,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:532,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - conn
    - msgid
    - idx_r
    argTypes:
    - struct ldap_connection*
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 540
    functionName: ldap_connection_find_req_by_msgid
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - aqueue_count
    - array_idx_elem
    - aqueue_idx
    linkageType: ''
    returnType: struct ldap_op_queue_entry
    signature: "struct ldap_op_queue_entry *\nldap_connection_find_req_by_msgid(struct
      ldap_connection *conn, int msgid,\n\t\t\t\t  unsigned int *idx_r)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_find_req_by_msgid
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:552,1
    - Dst: ldap_msgid
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:552,1
    - Dst: struct ldap_op_queue_entry*::internal_response_cb
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:554,1
    - Dst: ldap_msgfree
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:555,1
    - Dst: ldap_connection_kill
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:568,1
    - Dst: ldap_connection_send_next
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:569,1
    - Dst: ldap_connection_kill
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:574,1
    - Dst: ldap_connection_abort_all_requests
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:575,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:601,1
    - Dst: ldap_connection_request_destroy
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:602,1
    - Dst: aqueue_delete
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:604,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 2
    argNames:
    - conn
    - message
    argTypes:
    - struct ldap_connection*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 542
    functionDepth: 3
    functionLinenumber: 542
    functionLinenumberEnd: 608
    functionName: ldap_connection_handle_message
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - ldap_connection_request_destroy
    - ldap_msgfree
    - ldap_msgid
    - ldap_connection_send_next
    - aqueue_delete
    - ldap_connection_abort_all_requests
    - ldap_connection_kill
    - ldap_connection_find_req_by_msgid
    - struct ldap_op_queue_entry*::internal_response_cb
    linkageType: ''
    returnType: int
    signature: "int ldap_connection_handle_message(struct ldap_connection *conn,\n\t\t\t
      \      LDAPMessage *message)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ldap_result
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:622,1
    - Dst: ldap_connection_handle_message
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:624,1
    - Dst: ldap_get_option
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:627,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:628,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:630,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:631,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:633,1
    - Dst: ldap_connection_kill
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:636,1
    - Dst: ldap_connection_send_next
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:638,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:642,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 610
    functionDepth: 4
    functionLinenumber: 610
    functionLinenumberEnd: 643
    functionName: ldap_connection_read_more
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - ldap_connection_send_next
    - timeout_reset
    - e_error
    - ldap_result
    - ldap_err2string
    - ldap_connection_kill
    - ldap_get_option
    - ldap_connection_handle_message
    linkageType: ''
    returnType: void
    signature: void ldap_connection_read_more(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct ldap_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 649
    functionName: ldap_result_has_failed
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool ldap_result_has_failed(struct ldap_result *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-connection.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct ldap_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 655
    functionName: ldap_result_get_error
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-connection.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *ldap_result_get_error(struct ldap_result *result)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldap_client_settings_get
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:27,1
    - Dst: ldap_connection_pool_init
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:31,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:33,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:34,1
    - Dst: ldap_connection_pool_get
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:35,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:37,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:38,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:40,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - event
    - client_r
    - error_r
    argTypes:
    - struct event*
    - struct ldap_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 20
    functionDepth: 4
    functionLinenumber: 20
    functionLinenumberEnd: 45
    functionName: ldap_client_init_auto
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.c
    functionUses: 1
    functionsReached:
    - event_create
    - settings_free
    - ldap_connection_pool_init
    - ldap_client_settings_get
    - i_new
    - ldap_connection_pool_get
    - i_free
    linkageType: ''
    returnType: int
    signature: "int ldap_client_init_auto(struct event *event, struct ldap_client
      **client_r,\n\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_pool_unref
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:53,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:54,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct ldap_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 4
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: ldap_client_deinit
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.c
    functionUses: 1
    functionsReached:
    - i_free
    - event_unref
    - ldap_connection_pool_unref
    linkageType: ''
    returnType: void
    signature: void ldap_client_deinit(struct ldap_client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct ldap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: ldap_client_get_event
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *ldap_client_get_event(struct ldap_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_switch_ioloop
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct ldap_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: ldap_client_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.c
    functionUses: 1
    functionsReached:
    - ldap_connection_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void ldap_client_switch_ioloop(struct ldap_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_search_start
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - client
    - input
    - callback
    - context
    argTypes:
    - struct ldap_client*
    - struct ldap_search_input*
    - ldap_result_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: ldap_search_start
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.c
    functionUses: 1
    functionsReached:
    - ldap_connection_search_start
    linkageType: ''
    returnType: void
    signature: "void ldap_search_start(struct ldap_client *client,\n\t\t       const
      struct ldap_search_input *input,\n\t\t       ldap_result_callback_t *callback,
      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_compare_start
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - client
    - input
    - callback
    - context
    argTypes:
    - struct ldap_client*
    - struct ldap_compare_input*
    - ldap_result_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: ldap_compare_start
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.c
    functionUses: 0
    functionsReached:
    - ldap_connection_compare_start
    linkageType: ''
    returnType: void
    signature: "void ldap_compare_start(struct ldap_client *client,\n\t\t\tconst struct
      ldap_compare_input *input,\n\t\t\tldap_result_callback_t *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_connection_pool_have_references
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:89,1
    - Dst: ldap_connection_pool_deinit
      Src: /src/dovecot/src/lib-ldap/ldap-client.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: ldap_clients_cleanup
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-client.c
    functionUses: 1
    functionsReached:
    - ldap_connection_pool_deinit
    - ldap_connection_pool_have_references
    linkageType: ''
    returnType: void
    signature: void ldap_clients_cleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:10,1
    - Dst: ldap_get_dn
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:15,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:16,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:18,1
    - Dst: ldap_first_attribute
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:20,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:22,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:23,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:26,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:27,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:28,1
    - Dst: ldap_get_values_len
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:29,1
    - Dst: ldap_count_values_len
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:31,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:32,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:34,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:35,1
    - Dst: ldap_value_free_len
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:37,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:39,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:40,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:41,1
    - Dst: ldap_next_attribute
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:42,1
    - Dst: ber_free
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:45,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:47,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 3
    argNames:
    - obj
    - result
    - message
    argTypes:
    - struct ldap_entry*
    - struct ldap_result*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 51
    functionName: ldap_entry_init
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-entry.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - ldap_count_values_len
    - p_new
    - p_array_init
    - p_strndup
    - array_push_back
    - ldap_next_attribute
    - ldap_memfree
    - ldap_get_values_len
    - ber_free
    - ldap_get_dn
    - ARRAY_TYPE
    - array_front
    - ldap_first_attribute
    - array_append_zero
    - ldap_value_free_len
    linkageType: ''
    returnType: int
    signature: "int ldap_entry_init(struct ldap_entry *obj, struct ldap_result *result,\n\tLDAPMessage
      *message)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct ldap_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: ldap_entry_dn
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-entry.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ldap_entry_dn(const struct ldap_entry *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: ldap_entry_get_attributes
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-entry.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *const *ldap_entry_get_attributes(const struct ldap_entry *entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:66,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:67,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-ldap/ldap-entry.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: ldap_entry_get_attribute
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-entry.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    - array_foreach
    - array_front
    linkageType: ''
    returnType: char
    signature: char *const *ldap_entry_get_attribute(const struct ldap_entry *entry,
      const char *attribute)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - field
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: DEFN
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFN(type, field, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct ldap_client_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 67
    functionName: ldap_client_settings_postcheck
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ldap_client_settings_postcheck(struct ldap_client_settings *set,
      const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-ldap/ldap-settings.c:76,1
    - Dst: ssl_client_settings_get
      Src: /src/dovecot/src/lib-ldap/ldap-settings.c:77,1
    - Dst: ldap_client_settings_postcheck
      Src: /src/dovecot/src/lib-ldap/ldap-settings.c:78,1
    - Dst: ldap_set_tls_validate
      Src: /src/dovecot/src/lib-ldap/ldap-settings.c:79,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ldap/ldap-settings.c:80,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-ldap/ldap-settings.c:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - event
    - set_r
    - ssl_set_r
    - error_r
    argTypes:
    - struct event*
    - struct ldap_client_settings**
    - struct ssl_settings**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 89
    functionName: ldap_client_settings_get
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-settings.c
    functionUses: 1
    functionsReached:
    - settings_free
    - ldap_set_tls_validate
    - ssl_client_settings_get
    - ldap_client_settings_postcheck
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int ldap_client_settings_get(struct event *event,\n\t\t\t     const
      struct ldap_client_settings **set_r,\n\t\t\t     const struct ssl_settings **ssl_set_r,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct ldap_op_queue_entry*::result_callback
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - req
    - ret
    - error
    argTypes:
    - struct ldap_op_queue_entry*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 23
    functionName: ldap_search_result_failure
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-search.c
    functionUses: 0
    functionsReached:
    - struct ldap_op_queue_entry*::result_callback
    linkageType: ''
    returnType: void
    signature: "void ldap_search_result_failure(struct ldap_op_queue_entry *req,\n\t\t\t
      \  int ret, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct ldap_op_queue_entry*::result_callback
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct ldap_op_queue_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 30
    functionName: ldap_search_result_success
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-search.c
    functionUses: 0
    functionsReached:
    - struct ldap_op_queue_entry*::result_callback
    linkageType: ''
    returnType: void
    signature: void ldap_search_result_success(struct ldap_op_queue_entry *req)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:38,1
    - Dst: ldap_parse_result
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:49,1
    - Dst: ldap_search_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:54,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:54,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:55,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:60,1
    - Dst: ldap_search_result_failure
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:61,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:61,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:64,1
    - Dst: ldap_first_entry
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:68,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:71,1
    - Dst: ldap_entry_init
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:72,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:73,1
    - Dst: ldap_next_entry
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:74,1
    - Dst: ldap_search_result_success
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:78,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 4
    argNames:
    - conn
    - req
    - message
    - finished_r
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    - LDAPMessage*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 84
    functionName: ldap_search_callback
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-search.c
    functionUses: 0
    functionsReached:
    - p_new
    - ldap_first_entry
    - array_push_back
    - ldap_entry_init
    - ldap_next_entry
    - t_strdup_printf
    - ldap_memfree
    - ldap_parse_result
    - ldap_err2string
    - ldap_msgtype
    - ldap_search_result_success
    - ldap_search_result_failure
    linkageType: ''
    returnType: int
    signature: "int ldap_search_callback(struct ldap_connection *conn,\n\t\t     struct
      ldap_op_queue_entry *req,\n\t\t     LDAPMessage *message, bool *finished_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_search_ext
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:105,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:118,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - conn
    - req
    - error_r
    argTypes:
    - struct ldap_connection*
    - struct ldap_op_queue_entry*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 124
    functionName: ldap_search_send
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-search.c
    functionUses: 0
    functionsReached:
    - ldap_err2string
    - t_strdup_printf
    - ldap_search_ext
    linkageType: ''
    returnType: int
    signature: "int ldap_search_send(struct ldap_connection *conn, struct ldap_op_queue_entry
      *req,\n\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:132,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:133,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:136,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:140,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:149,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:150,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:153,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:154,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:156,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:157,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:159,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:160,1
    - Dst: ldap_connection_queue_request
      Src: /src/dovecot/src/lib-ldap/ldap-search.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 4
    argNames:
    - conn
    - input
    - callback
    - context
    argTypes:
    - struct ldap_connection*
    - struct ldap_search_input*
    - ldap_result_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 169
    functionName: ldap_connection_search_start
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-search.c
    functionUses: 1
    functionsReached:
    - array_front_modifiable
    - pool_alloconly_create
    - p_strdup
    - p_new
    - p_array_init
    - array_push_back
    - ldap_connection_queue_request
    - ARRAY_TYPE
    - array_append_zero
    linkageType: ''
    returnType: void
    signature: "void ldap_connection_search_start(struct ldap_connection *conn,\n\t\t\t\t
      \ const struct ldap_search_input *input,\n\t\t\t\t  ldap_result_callback_t *callback,\n\t\t\t\t
      \ void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-iterator.c:11,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-ldap/ldap-iterator.c:12,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-ldap/ldap-iterator.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct ldap_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 17
    functionName: ldap_search_iterator_init
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-iterator.c
    functionUses: 1
    functionsReached:
    - i_assert
    - p_new
    linkageType: ''
    returnType: struct ldap_search_iterator
    signature: struct ldap_search_iterator * ldap_search_iterator_init(struct ldap_result
      *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-ldap/ldap-iterator.c:21,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-ldap/ldap-iterator.c:23,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct ldap_search_iterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: ldap_search_iterator_next
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-iterator.c
    functionUses: 1
    functionsReached:
    - array_count
    - array_idx
    linkageType: ''
    returnType: struct ldap_entry
    signature: struct ldap_entry *ldap_search_iterator_next(struct ldap_search_iterator
      *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct ldap_search_iterator**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: ldap_search_iterator_deinit
    functionSourceFile: /src/dovecot/src/lib-ldap/ldap-iterator.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ldap_search_iterator_deinit(struct ldap_search_iterator **iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - dict
    - ','
    - set
    - ','
    - key
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: dict_lookup_async
    functionSourceFile: /src/dovecot/src/lib-dict/dict.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dict_lookup_async(dict, set, key, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: dict_iterate_set_async_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dict_iterate_set_async_callback(ctx, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 208
    functionName: dict_transaction_commit_async
    functionSourceFile: /src/dovecot/src/lib-dict/dict.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dict_transaction_commit_async(ctx, callback, context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:46,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:49,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - L
    - txn
    argTypes:
    - lua_State*
    - struct lua_dict_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 54
    functionName: sanity_check_txn
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - luaL_error
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void sanity_check_txn(lua_State *L, struct lua_dict_txn *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_transaction_rollback
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:60,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct lua_dict_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: lua_dict_txn_unref
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - dict_transaction_rollback
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void lua_dict_txn_unref(struct lua_dict_txn *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:78,1
    - Dst: xlua_dict_txn_getptr
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:80,1
    - Dst: sanity_check_txn
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:81,1
    - Dst: dict_transaction_rollback
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 87
    functionName: lua_dict_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - sanity_check_txn
    - xlua_dict_txn_getptr
    - dict_transaction_rollback
    - DLUA_REQUIRE_ARGS
    linkageType: ''
    returnType: int
    signature: int lua_dict_transaction_rollback(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:93,1
    - Dst: lua_error
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:94,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - L
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - lua_State*
    - int
    - lua_KContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 99
    functionName: lua_dict_transaction_commit_continue
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - lua_pop
    - lua_isnil
    - lua_error
    linkageType: ''
    returnType: int
    signature: "int lua_dict_transaction_commit_continue(lua_State *L,\n\t\t\t\t\t\tint
      status ATTR_UNUSED,\n\t\t\t\t\t\tlua_KContext ctx ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:109,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:113,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:117,1
    - Dst: lua_pushfstring
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:118,1
    - Dst: dlua_pcall_yieldable_resume
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - result
    - txn
    argTypes:
    - struct dict_commit_result*
    - struct lua_dict_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 124
    functionName: lua_dict_transaction_commit_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - lua_pushfstring
    - lua_pushnil
    - dlua_pcall_yieldable_resume
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void lua_dict_transaction_commit_callback(const struct dict_commit_result
      *result,\n\t\t\t\t     struct lua_dict_txn *txn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:136,1
    - Dst: xlua_dict_txn_getptr
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:138,1
    - Dst: sanity_check_txn
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:139,1
    - Dst: dict_transaction_commit_async
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:142,1
    - Dst: lua_dict_transaction_commit_continue
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:145,1
    - Dst: lua_yieldk
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 147
    functionName: lua_dict_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - dict_transaction_commit_async
    - lua_dict_transaction_commit_continue
    - DLUA_REQUIRE_ARGS
    - lua_yieldk
    - sanity_check_txn
    - xlua_dict_txn_getptr
    linkageType: ''
    returnType: int
    signature: int lua_dict_transaction_commit(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:162,1
    - Dst: xlua_dict_txn_getptr
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:164,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:165,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:166,1
    - Dst: lua_dict_check_key_prefix
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:167,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 172
    functionName: lua_dict_set
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - lua_dict_check_key_prefix
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - dict_set
    - xlua_dict_txn_getptr
    linkageType: ''
    returnType: int
    signature: int lua_dict_set(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:186,1
    - Dst: xlua_dict_txn_getptr
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:188,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:189,1
    - Dst: lua_dict_check_key_prefix
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:190,1
    - Dst: dict_unset
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 195
    functionName: lua_dict_unset
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - lua_dict_check_key_prefix
    - DLUA_REQUIRE_ARGS
    - luaL_checkstring
    - dict_unset
    - xlua_dict_txn_getptr
    linkageType: ''
    returnType: int
    signature: int lua_dict_unset(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:217,1
    - Dst: dlua_check_dict
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:219,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:220,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:221,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:222,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:223,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:225,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:226,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:233,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:236,1
    - Dst: xlua_pushdict_txn
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 241
    functionName: lua_dict_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - xlua_pushdict_txn
    - dlua_check_dict
    - luaL_checkinteger
    - luaL_checkstring
    - DLUA_REQUIRE_ARGS_IN
    - lua_gettop
    - dict_transaction_begin
    linkageType: ''
    returnType: int
    signature: int lua_dict_transaction_begin(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:255,1
    - Dst: xlua_dict_txn_getptr
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:257,1
    - Dst: dlua_table_get_number_by_str
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:258,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:259,1
    - Dst: dlua_table_get_number_by_str
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:260,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:261,1
    - Dst: dict_transaction_set_timestamp
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 269
    functionName: lua_dict_set_timestamp
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - dict_transaction_set_timestamp
    - DLUA_REQUIRE_ARGS
    - luaL_error
    - dlua_table_get_number_by_str
    - xlua_dict_txn_getptr
    linkageType: ''
    returnType: int
    signature: int lua_dict_set_timestamp(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:281,1
    - Dst: xlua_dict_txn_getptr
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:283,1
    - Dst: dict_transaction_set_non_atomic
      Src: /src/dovecot/src/lib-dict/dict-txn-lua.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 286
    functionName: lua_dict_set_non_atomic
    functionSourceFile: /src/dovecot/src/lib-dict/dict-txn-lua.c
    functionUses: 0
    functionsReached:
    - xlua_dict_txn_getptr
    - DLUA_REQUIRE_ARGS
    - dict_transaction_set_non_atomic
    linkageType: ''
    returnType: int
    signature: int lua_dict_set_non_atomic(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict/dict.c:78,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict/dict.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 83
    functionName: dict_driver_lookup
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void dict_driver_lookup(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct dict_commit_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 90
    functionName: dict_transaction_commit_async_noop_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_commit_async_noop_callback(\n\tconst struct
      dict_commit_result *result ATTR_UNUSED,\n\tvoid *context ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dict/dict.c:94,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-dict/dict.c:95,1
    - Dst: dict_driver_lookup
      Src: /src/dovecot/src/lib-dict/dict.c:97,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dict/dict.c:98,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict/dict.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - driver
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: dict_driver_register
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 6
    functionsReached:
    - i_array_init
    - dict_driver_lookup
    - array_push_back
    - i_fatal
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void dict_driver_register(struct dict *driver)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-dict/dict.c:108,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict/dict.c:109,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-dict/dict.c:110,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict/dict.c:112,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-dict/dict.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - driver
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 114
    functionName: dict_driver_unregister
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 3
    functionsReached:
    - array_delete
    - i_unreached
    - array_count
    - array_lsearch_ptr_idx
    - array_free
    linkageType: ''
    returnType: void
    signature: void dict_driver_unregister(struct dict *driver)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 128
    functionName: dict_settings_check
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool dict_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\tconst
      char **error_r ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:135,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict/dict.c:137,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-dict/dict.c:140,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict/dict.c:142,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict/dict.c:146,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-dict/dict.c:146,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict/dict.c:147,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-dict/dict.c:150,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict.c:151,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict/dict.c:155,1
    - Dst: dict_init_filter_auto
      Src: /src/dovecot/src/lib-dict/dict.c:159,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict/dict.c:160,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - event
    - dict_r
    - error_r
    argTypes:
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 162
    functionName: dict_init_auto
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 10
    functionsReached:
    - i_assert
    - t_strdup_printf
    - settings_free
    - array_is_empty
    - array_count
    - array_idx_elem
    - t_strdup
    - settings_get
    - dict_init_filter_auto
    linkageType: ''
    returnType: int
    signature: "int dict_init_auto(struct event *event, struct dict **dict_r,\n\t\t
      \  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-dict/dict.c:172,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:173,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/lib-dict/dict.c:174,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict/dict.c:175,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict/dict.c:177,1
    - Dst: dict_driver_lookup
      Src: /src/dovecot/src/lib-dict/dict.c:181,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict.c:183,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict/dict.c:185,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict/dict.c:186,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-dict/dict.c:190,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:191,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-dict/dict.c:192,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict.c:192,1
    - Dst: struct dict*::v::init
      Src: /src/dovecot/src/lib-dict/dict.c:194,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict.c:195,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict/dict.c:197,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict/dict.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:201,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:204,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-dict/dict.c:204,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict/dict.c:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 4
    argNames:
    - event
    - dict_name
    - dict_r
    - error_r
    argTypes:
    - struct event*
    - char*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 209
    functionName: dict_init_filter_auto
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 3
    functionsReached:
    - event_create
    - struct dict*::v::init
    - event_unref
    - dict_driver_lookup
    - i_assert
    - e_debug
    - event_set_append_log_prefix
    - t_strdup_printf
    - settings_free
    - event_add_category
    - settings_event_add_list_filter_name
    - event_create_passthrough
    - event_add_str
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int dict_init_filter_auto(struct event *event, const char *dict_name,\n\t\t\t
      \ struct dict **dict_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 216
    functionName: dict_ref
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dict_ref(struct dict *dict)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:225,1
    - Dst: struct dict*::v::deinit
      Src: /src/dovecot/src/lib-dict/dict.c:228,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:230,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-dict/dict.c:230,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict/dict.c:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 233
    functionName: dict_unref
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - event_unref
    - struct dict*::v::deinit
    - e_debug
    - event_create_passthrough
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dict_unref(struct dict **_dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:244,1
    - Dst: dict_have_async_operations
      Src: /src/dovecot/src/lib-dict/dict.c:244,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:245,1
    - Dst: dict_unref
      Src: /src/dovecot/src/lib-dict/dict.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 247
    functionName: dict_deinit
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 16
    functionsReached:
    - dict_have_async_operations
    - i_assert
    - dict_unref
    linkageType: ''
    returnType: void
    signature: void dict_deinit(struct dict **_dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:254,1
    - Dst: struct dict*::v::wait
      Src: /src/dovecot/src/lib-dict/dict.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 257
    functionName: dict_wait
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 8
    functionsReached:
    - e_debug
    - struct dict*::v::wait
    linkageType: ''
    returnType: void
    signature: void dict_wait(struct dict *dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 272
    functionName: dict_have_async_operations
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dict_have_async_operations(struct dict *dict)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-dict/dict.c:280,1
    - Dst: struct dict*::v::switch_ioloop
      Src: /src/dovecot/src/lib-dict/dict.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 290
    functionName: dict_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached:
    - io_loop_move_timeout
    - struct dict*::v::switch_ioloop
    linkageType: ''
    returnType: bool
    signature: bool dict_switch_ioloop(struct dict *dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct dict*::v::expire_scan
      Src: /src/dovecot/src/lib-dict/dict.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dict
    - error_r
    argTypes:
    - struct dict*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 302
    functionName: dict_expire_scan
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached:
    - struct dict*::v::expire_scan
    linkageType: ''
    returnType: int
    signature: int dict_expire_scan(struct dict *dict, const char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dict/dict.c:308,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dict/dict.c:310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - key
    - username
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 316
    functionName: dict_key_prefix_is_valid
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - i_assert
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: bool dict_key_prefix_is_valid(const char *key, const char *username)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict/dict.c:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 326
    functionName: dict_pre_api_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    linkageType: ''
    returnType: void
    signature: void dict_pre_api_callback(struct dict *dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict/dict.c:331,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dict/dict.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 334
    functionName: dict_post_api_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void dict_post_api_callback(struct dict *dict)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:338,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib-dict/dict.c:339,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:341,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:343,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-dict/dict.c:344,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - event
    - ret
    - error
    argTypes:
    - struct event*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 348
    functionName: dict_lookup_finished
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - event_set_name
    - e_debug
    - event_find_field_recursive_str
    - event_add_str
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dict_lookup_finished(struct event *event, int ret, const char
      *error)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:353,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:356,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:357,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:359,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:361,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib-dict/dict.c:363,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:364,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - event
    - ret
    - rollback
    - error
    argTypes:
    - struct event*
    - enum dict_commit_ret
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 365
    functionName: dict_transaction_finished
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - event_set_name
    - event_add_str
    - i_assert
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_finished(struct event *event, enum dict_commit_ret
      ret,\n\t\t\t\t      bool rollback, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_pre_api_callback
      Src: /src/dovecot/src/lib-dict/dict.c:373,1
    - Dst: struct dict_lookup_callback_ctx*::callback
      Src: /src/dovecot/src/lib-dict/dict.c:374,1
    - Dst: dict_post_api_callback
      Src: /src/dovecot/src/lib-dict/dict.c:375,1
    - Dst: dict_lookup_finished
      Src: /src/dovecot/src/lib-dict/dict.c:376,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict/dict.c:377,1
    - Dst: dict_unref
      Src: /src/dovecot/src/lib-dict/dict.c:379,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - struct dict_lookup_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 381
    functionName: dict_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_free
    - dict_pre_api_callback
    - dict_lookup_finished
    - dict_unref
    - dict_post_api_callback
    - struct dict_lookup_callback_ctx*::callback
    linkageType: ''
    returnType: void
    signature: "void dict_lookup_callback(const struct dict_lookup_result *result,\n\t\t
      \    void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dict_transaction_context*::dict::v::transaction_rollback
      Src: /src/dovecot/src/lib-dict/dict.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 389
    functionName: dict_transaction_rollback_run
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - struct dict_transaction_context*::dict::v::transaction_rollback
    linkageType: ''
    returnType: void
    signature: void dict_transaction_rollback_run(struct dict_transaction_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-dict/dict.c:397,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict/dict.c:398,1
    - Dst: dict_transaction_rollback_run
      Src: /src/dovecot/src/lib-dict/dict.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 400
    functionName: dict_rollback_async_timeout
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - DLLIST_REMOVE
    - dict_transaction_rollback_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dict_rollback_async_timeout(struct dict_transaction_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-dict/dict.c:405,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict/dict.c:406,1
    - Dst: dict_pre_api_callback
      Src: /src/dovecot/src/lib-dict/dict.c:407,1
    - Dst: struct dict_commit_callback_ctx*::callback
      Src: /src/dovecot/src/lib-dict/dict.c:409,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict.c:411,1
    - Dst: dict_post_api_callback
      Src: /src/dovecot/src/lib-dict/dict.c:412,1
    - Dst: dict_transaction_finished
      Src: /src/dovecot/src/lib-dict/dict.c:414,1
    - Dst: dict_op_settings_private_free
      Src: /src/dovecot/src/lib-dict/dict.c:415,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict/dict.c:416,1
    - Dst: dict_unref
      Src: /src/dovecot/src/lib-dict/dict.c:417,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict/dict.c:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dict_commit_callback_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 419
    functionName: dict_commit_async_timeout
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - event_unref
    - dict_pre_api_callback
    - dict_unref
    - dict_op_settings_private_free
    - pool_unref
    - e_error
    - dict_transaction_finished
    - struct dict_commit_callback_ctx*::callback
    - dict_post_api_callback
    - DLLIST_REMOVE
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dict_commit_async_timeout(struct dict_commit_callback_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:426,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict.c:429,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-dict/dict.c:430,1
    - Dst: dict_commit_async_timeout
      Src: /src/dovecot/src/lib-dict/dict.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - struct dict_commit_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 421
    functionDepth: 3
    functionLinenumber: 421
    functionLinenumberEnd: 434
    functionName: dict_commit_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - p_strdup
    - i_assert
    - dict_commit_async_timeout
    linkageType: ''
    returnType: void
    signature: "void dict_commit_callback(const struct dict_commit_result *result,\n\t\t\t\t
      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-dict/dict.c:439,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dict
    - set
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 443
    functionName: dict_event_create
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_add_str
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      dict_event_create(struct dict *dict, const struct dict_op_settings *set)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_lookup_values
      Src: /src/dovecot/src/lib-dict/dict.c:450,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - dict
    - set
    - pool
    - key
    - value_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 456
    functionName: dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 8
    functionsReached:
    - dict_lookup_values
    linkageType: ''
    returnType: int
    signature: "int dict_lookup(struct dict *dict, const struct dict_op_settings *set,\n\t\tpool_t
      pool, const char *key,\n\t\tconst char **value_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_event_create
      Src: /src/dovecot/src/lib-dict/dict.c:462,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:464,1
    - Dst: dict_key_prefix_is_valid
      Src: /src/dovecot/src/lib-dict/dict.c:464,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:468,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:469,1
    - Dst: struct dict*::v::lookup
      Src: /src/dovecot/src/lib-dict/dict.c:470,1
    - Dst: dict_lookup_finished
      Src: /src/dovecot/src/lib-dict/dict.c:473,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dict/dict.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 6
    argNames:
    - dict
    - set
    - pool
    - key
    - values_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 458
    functionDepth: 2
    functionLinenumber: 458
    functionLinenumberEnd: 476
    functionName: dict_lookup_values
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached:
    - struct dict*::v::lookup
    - event_unref
    - e_debug
    - dict_lookup_finished
    - dict_event_create
    - dict_key_prefix_is_valid
    - event_add_str
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dict_lookup_values(struct dict *dict, const struct dict_op_settings
      *set,\n\t\t       pool_t pool, const char *key,\n\t\t       const char *const
      **values_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:483,1
    - Dst: dict_key_prefix_is_valid
      Src: /src/dovecot/src/lib-dict/dict.c:483,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict/dict.c:487,1
    - Dst: dict_lookup
      Src: /src/dovecot/src/lib-dict/dict.c:489,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dict/dict.c:489,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict/dict.c:493,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict/dict.c:497,1
    - Dst: dict_ref
      Src: /src/dovecot/src/lib-dict/dict.c:499,1
    - Dst: dict_event_create
      Src: /src/dovecot/src/lib-dict/dict.c:502,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-dict/dict.c:503,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:504,1
    - Dst: struct dict*::v::lookup_async
      Src: /src/dovecot/src/lib-dict/dict.c:506,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 5
    argNames:
    - dict
    - set
    - key
    - callback
    - context
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - dict_lookup_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 507
    functionName: dict_lookup_async
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 2
    functionsReached:
    - i_zero
    - dict_lookup
    - struct dict*::v::lookup_async
    - e_debug
    - dict_ref
    - pool_datastack_create
    - i_new
    - callback
    - dict_event_create
    - dict_key_prefix_is_valid
    - event_add_str
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dict_lookup_async(struct dict *dict, const struct dict_op_settings
      *set,\n\t\t       const char *key, dict_lookup_callback_t *callback,\n\t\t       void
      *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:516,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:517,1
    - Dst: dict_key_prefix_is_valid
      Src: /src/dovecot/src/lib-dict/dict.c:517,1
    - Dst: struct dict*::v::iterate_init
      Src: /src/dovecot/src/lib-dict/dict.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - dict
    - set
    - path
    - flags
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - enum dict_iterate_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 524
    functionName: dict_iterate_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 6
    functionsReached:
    - dict_key_prefix_is_valid
    - struct dict*::v::iterate_init
    - i_assert
    linkageType: ''
    returnType: struct dict_iterate_context
    signature: "struct dict_iterate_context *\ndict_iterate_init(struct dict *dict,
      const struct dict_op_settings *set,\n\t\t  const char *path, enum dict_iterate_flags
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_iterate_values
      Src: /src/dovecot/src/lib-dict/dict.c:544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - key_r
    - value_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 551
    functionName: dict_iterate
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 6
    functionsReached:
    - dict_iterate_values
    linkageType: ''
    returnType: bool
    signature: "bool dict_iterate(struct dict_iterate_context *ctx,\n\t\t  const char
      **key_r, const char **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:558,1
    - Dst: struct dict_iterate_context*::dict::v::iterate
      Src: /src/dovecot/src/lib-dict/dict.c:566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - key_r
    - values_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 567
    functionName: dict_iterate_values
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 2
    functionsReached:
    - e_debug
    - struct dict_iterate_context*::dict::v::iterate
    linkageType: ''
    returnType: bool
    signature: "bool dict_iterate_values(struct dict_iterate_context *ctx,\n\t\t\t
      const char **key_r, const char *const **values_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - callback
    - context
    argTypes:
    - struct dict_iterate_context*
    - dict_iterate_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 588
    functionName: dict_iterate_set_async_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dict_iterate_set_async_callback(struct dict_iterate_context *ctx,\n\t\t\t\t
      \    dict_iterate_callback_t *callback,\n\t\t\t\t     void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - max_rows
    argTypes:
    - struct dict_iterate_context*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 594
    functionName: dict_iterate_set_limit
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dict_iterate_set_limit(struct dict_iterate_context *ctx,\n\t\t\t
      \   uint64_t max_rows)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dict_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 599
    functionName: dict_iterate_has_more
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dict_iterate_has_more(struct dict_iterate_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:613,1
    - Dst: struct dict_iterate_context*::dict::v::iterate_deinit
      Src: /src/dovecot/src/lib-dict/dict.c:620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct dict_iterate_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 621
    functionName: dict_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 7
    functionsReached:
    - i_assert
    - struct dict_iterate_context*::dict::v::iterate_deinit
    linkageType: ''
    returnType: int
    signature: "int dict_iterate_deinit(struct dict_iterate_context **_ctx,\n\t\t\tconst
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct dict*::v::transaction_init
      Src: /src/dovecot/src/lib-dict/dict.c:648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dict
    - set
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: dict_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 14
    functionsReached:
    - struct dict*::v::transaction_init
    linkageType: ''
    returnType: struct dict_transaction_context
    signature: 'struct dict_transaction_context *

      dict_transaction_begin(struct dict *dict, const struct dict_op_settings *set)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct dict_transaction_context*::dict::v::set_hide_log_values
      Src: /src/dovecot/src/lib-dict/dict.c:673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - hide_log_values
    argTypes:
    - struct dict_transaction_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: dict_transaction_set_hide_log_values
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached:
    - struct dict_transaction_context*::dict::v::set_hide_log_values
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_set_hide_log_values(struct dict_transaction_context
      *ctx,\n\t\t\t\t\t  bool hide_log_values)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:684,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:685,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:686,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-dict/dict.c:689,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:692,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-dict/dict.c:692,1
    - Dst: struct dict_transaction_context*::dict::v::set_timestamp
      Src: /src/dovecot/src/lib-dict/dict.c:695,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - ts
    argTypes:
    - struct dict_transaction_context*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 696
    functionName: dict_transaction_set_timestamp
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 2
    functionsReached:
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    - struct dict_transaction_context*::dict::v::set_timestamp
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_set_timestamp(struct dict_transaction_context
      *ctx,\n\t\t\t\t    const struct timespec *ts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 702
    functionName: dict_transaction_set_non_atomic
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dict_transaction_set_non_atomic(struct dict_transaction_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict.c:716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - struct dict_commit_result*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 717
    functionName: dict_transaction_commit_sync_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - i_strdup
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_commit_sync_callback(const struct dict_commit_result
      *result,\n\t\t\t\t      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict/dict.c:726,1
    - Dst: dict_transaction_rollback
      Src: /src/dovecot/src/lib-dict/dict.c:727,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict/dict.c:733,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict/dict.c:735,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict/dict.c:737,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:738,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-dict/dict.c:740,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-dict/dict.c:741,1
    - Dst: dict_ref
      Src: /src/dovecot/src/lib-dict/dict.c:743,1
    - Dst: struct dict_transaction_context*::dict::v::transaction_commit
      Src: /src/dovecot/src/lib-dict/dict.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct dict_transaction_context**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 719
    functionDepth: 2
    functionLinenumber: 719
    functionLinenumberEnd: 752
    functionName: dict_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 8
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - dict_transaction_rollback
    - p_new
    - struct dict_transaction_context*::dict::v::transaction_commit
    - dict_ref
    - DLLIST_PREPEND
    - t_strdup
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: int
    signature: "int dict_transaction_commit(struct dict_transaction_context **_ctx,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:766,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-dict/dict.c:768,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-dict/dict.c:771,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict/dict.c:775,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict/dict.c:777,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-dict/dict.c:778,1
    - Dst: dict_ref
      Src: /src/dovecot/src/lib-dict/dict.c:783,1
    - Dst: struct dict_transaction_context*::dict::v::transaction_commit
      Src: /src/dovecot/src/lib-dict/dict.c:790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - _ctx
    - callback
    - context
    argTypes:
    - struct dict_transaction_context**
    - dict_transaction_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 759
    functionDepth: 2
    functionLinenumber: 759
    functionLinenumberEnd: 792
    functionName: dict_transaction_commit_async
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 6
    functionsReached:
    - pool_alloconly_create
    - p_new
    - struct dict_transaction_context*::dict::v::transaction_commit
    - timeout_add_short
    - dict_ref
    - DLLIST_PREPEND
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_commit_async(struct dict_transaction_context
      **_ctx,\n\t\t\t\t   dict_transaction_commit_callback_t *callback,\n\t\t\t\t
      \  void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_transaction_commit_async
      Src: /src/dovecot/src/lib-dict/dict.c:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dict_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 800
    functionName: dict_transaction_commit_async_nocallback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - dict_transaction_commit_async
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_commit_async_nocallback(\n\tstruct dict_transaction_context
      **ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:810,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-dict/dict.c:812,1
    - Dst: dict_transaction_rollback_run
      Src: /src/dovecot/src/lib-dict/dict.c:814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dict_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 815
    functionName: dict_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 6
    functionsReached:
    - i_assert
    - DLLIST_REMOVE
    - dict_transaction_rollback_run
    linkageType: ''
    returnType: void
    signature: void dict_transaction_rollback(struct dict_transaction_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:820,1
    - Dst: dict_key_prefix_is_valid
      Src: /src/dovecot/src/lib-dict/dict.c:820,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-dict/dict.c:821,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:825,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-dict/dict.c:825,1
    - Dst: struct dict_transaction_context*::dict::v::set
      Src: /src/dovecot/src/lib-dict/dict.c:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - key
    - value
    argTypes:
    - struct dict_transaction_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 817
    functionDepth: 2
    functionLinenumber: 817
    functionLinenumberEnd: 829
    functionName: dict_set
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 10
    functionsReached:
    - struct dict_transaction_context*::dict::v::set
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - dict_key_prefix_is_valid
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dict_set(struct dict_transaction_context *ctx,\n\t      const
      char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:836,1
    - Dst: dict_key_prefix_is_valid
      Src: /src/dovecot/src/lib-dict/dict.c:836,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-dict/dict.c:837,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:841,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-dict/dict.c:841,1
    - Dst: struct dict_transaction_context*::dict::v::unset
      Src: /src/dovecot/src/lib-dict/dict.c:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct dict_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 833
    functionDepth: 2
    functionLinenumber: 833
    functionLinenumberEnd: 845
    functionName: dict_unset
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 8
    functionsReached:
    - e_debug
    - struct dict_transaction_context*::dict::v::unset
    - struct event_passthrough*::event
    - event_create_passthrough
    - dict_key_prefix_is_valid
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dict_unset(struct dict_transaction_context *ctx,\n\t\tconst char
      *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict.c:852,1
    - Dst: dict_key_prefix_is_valid
      Src: /src/dovecot/src/lib-dict/dict.c:852,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-dict/dict.c:853,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dict/dict.c:857,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-dict/dict.c:857,1
    - Dst: struct dict_transaction_context*::dict::v::atomic_inc
      Src: /src/dovecot/src/lib-dict/dict.c:860,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - key
    - diff
    argTypes:
    - struct dict_transaction_context*
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 849
    functionDepth: 2
    functionLinenumber: 849
    functionLinenumberEnd: 862
    functionName: dict_atomic_inc
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 2
    functionsReached:
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - dict_key_prefix_is_valid
    - i_assert
    - struct dict_transaction_context*::dict::v::atomic_inc
    linkageType: ''
    returnType: void
    signature: "void dict_atomic_inc(struct dict_transaction_context *ctx,\n\t\t     const
      char *key, long long diff)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict/dict.c:880,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-dict/dict.c:881,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict.c:886,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict.c:887,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict.c:890,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict.c:891,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict.c:894,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict/dict.c:898,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 899
    functionName: dict_escape_string
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_data
    - str_append_c
    linkageType: ''
    returnType: char
    signature: char *dict_escape_string(const char *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict/dict.c:916,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict.c:916,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-dict/dict.c:917,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict.c:921,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict.c:924,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict.c:928,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict/dict.c:931,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 932
    functionName: dict_unescape_string
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char *dict_unescape_string(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict/dict.c:937,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict.c:938,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict.c:939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - source
    - dest_r
    argTypes:
    - struct dict_op_settings*
    - struct dict_op_settings_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 934
    functionDepth: 1
    functionLinenumber: 934
    functionLinenumberEnd: 943
    functionName: dict_op_settings_dup
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_strdup
    linkageType: ''
    returnType: void
    signature: "void dict_op_settings_dup(const struct dict_op_settings *source,\n\t\t\t
      \ struct dict_op_settings_private *dest_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict.c:947,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict.c:948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct dict_op_settings_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 945
    functionDepth: 1
    functionLinenumber: 945
    functionLinenumberEnd: 949
    functionName: dict_op_settings_private_free
    functionSourceFile: /src/dovecot/src/lib-dict/dict.c
    functionUses: 1
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void dict_op_settings_private_free(struct dict_op_settings_private
      *set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: lua_dict_unref
    functionSourceFile: /src/dovecot/src/lib-dict/dict-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lua_dict_unref(struct dict *dict ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/lib-dict/dict-lua.c:36,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/lib-dict/dict-lua.c:36,1
    - Dst: lua_error
      Src: /src/dovecot/src/lib-dict/dict-lua.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - L
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - lua_State*
    - int
    - lua_KContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 40
    functionName: lua_dict_async_continue
    functionSourceFile: /src/dovecot/src/lib-dict/dict-lua.c
    functionUses: 0
    functionsReached:
    - lua_istable
    - lua_isnil
    - lua_error
    linkageType: ''
    returnType: int
    signature: "int lua_dict_async_continue(lua_State *L,\n\t\t\t\t   int status ATTR_UNUSED,\n\t\t\t\t
      \  lua_KContext ctx ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-dict/dict-lua.c:46,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-dict/dict-lua.c:48,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-dict/dict-lua.c:52,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dict/dict-lua.c:54,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-dict/dict-lua.c:55,1
    - Dst: lua_seti
      Src: /src/dovecot/src/lib-dict/dict-lua.c:56,1
    - Dst: dlua_pcall_yieldable_resume
      Src: /src/dovecot/src/lib-dict/dict-lua.c:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - result
    - L
    argTypes:
    - struct dict_lookup_result*
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 61
    functionName: lua_dict_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - str_array_length
    - lua_pushnil
    - lua_seti
    - dlua_pcall_yieldable_resume
    - lua_newtable
    linkageType: ''
    returnType: void
    signature: "void lua_dict_lookup_callback(const struct dict_lookup_result *result,\n\t\t\t\t
      \    lua_State *L)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dict/dict-lua.c:66,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dict/dict-lua.c:68,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-dict/dict-lua.c:70,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-dict/dict-lua.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - L
    - key
    - username
    argTypes:
    - lua_State*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 74
    functionName: lua_dict_check_key_prefix
    functionSourceFile: /src/dovecot/src/lib-dict/dict-lua.c
    functionUses: 2
    functionsReached:
    - str_begins_with
    - luaL_error
    linkageType: ''
    returnType: void
    signature: "void lua_dict_check_key_prefix(lua_State *L, const char *key,\n\t\t\t
      \      const char *username)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-dict/dict-lua.c:94,1
    - Dst: xlua_dict_getptr
      Src: /src/dovecot/src/lib-dict/dict-lua.c:96,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dict/dict-lua.c:97,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-dict/dict-lua.c:98,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dict/dict-lua.c:99,1
    - Dst: lua_dict_check_key_prefix
      Src: /src/dovecot/src/lib-dict/dict-lua.c:100,1
    - Dst: dict_lookup_async
      Src: /src/dovecot/src/lib-dict/dict-lua.c:105,1
    - Dst: lua_dict_async_continue
      Src: /src/dovecot/src/lib-dict/dict-lua.c:107,1
    - Dst: lua_yieldk
      Src: /src/dovecot/src/lib-dict/dict-lua.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 109
    functionName: lua_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict/dict-lua.c
    functionUses: 0
    functionsReached:
    - xlua_dict_getptr
    - lua_dict_check_key_prefix
    - luaL_checkstring
    - lua_yieldk
    - dict_lookup_async
    - DLUA_REQUIRE_ARGS_IN
    - lua_dict_async_continue
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: int lua_dict_lookup(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xlua_pushdict
      Src: /src/dovecot/src/lib-dict/dict-lua.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - dict
    argTypes:
    - lua_State*
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: dlua_push_dict
    functionSourceFile: /src/dovecot/src/lib-dict/dict-lua.c
    functionUses: 1
    functionsReached:
    - xlua_pushdict
    linkageType: ''
    returnType: void
    signature: void dlua_push_dict(lua_State *L, struct dict *dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xlua_dict_getptr
      Src: /src/dovecot/src/lib-dict/dict-lua.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 119
    functionName: dlua_check_dict
    functionSourceFile: /src/dovecot/src/lib-dict/dict-lua.c
    functionUses: 1
    functionsReached:
    - xlua_dict_getptr
    linkageType: ''
    returnType: struct dict
    signature: struct dict *dlua_check_dict(lua_State *L, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_get_dovecot
      Src: /src/dovecot/src/lib-dict/dict-lua.c:136,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-dict/dict-lua.c:138,1
    - Dst: dlua_set_members
      Src: /src/dovecot/src/lib-dict/dict-lua.c:141,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-dict/dict-lua.c:144,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-dict/dict-lua.c:146,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-dict/dict-lua.c:147,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-dict/dict-lua.c:149,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-dict/dict-lua.c:152,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-dict/dict-lua.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 156
    functionName: dlua_dovecot_dict_register
    functionSourceFile: /src/dovecot/src/lib-dict/dict-lua.c
    functionUses: 1
    functionsReached:
    - lua_setfield
    - lua_pushvalue
    - lua_pop
    - lua_setmetatable
    - dlua_set_members
    - dlua_get_dovecot
    - lua_newtable
    - luaL_newmetatable
    linkageType: ''
    returnType: void
    signature: void dlua_dovecot_dict_register(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-dict/dict-file.c:91,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:95,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:102,1
    - Dst: home_expand_tilde
      Src: /src/dovecot/src/lib-dict/dict-file.c:102,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:103,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-file.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - dict
    - home_dir
    - error_r
    argTypes:
    - struct file_dict*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 107
    functionName: file_dict_ensure_path_home_dir
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - i_strdup
    - null_strcmp
    - home_expand_tilde
    - i_free
    linkageType: ''
    returnType: int
    signature: "int file_dict_ensure_path_home_dir(struct file_dict *dict, const char
      *home_dir,\n\t\t\t       const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict/dict-file.c:116,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict/dict-file.c:120,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:121,1
    - Dst: file_lock_method_parse
      Src: /src/dovecot/src/lib-dict/dict-file.c:122,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict/dict-file.c:124,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict/dict-file.c:125,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict/dict-file.c:128,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-dict/dict-file.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - dict_driver
    - event
    - dict_r
    - error_r
    argTypes:
    - struct dict*
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 134
    functionName: file_dict_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - file_lock_method_parse
    - hash_table_create
    - i_unreached
    - settings_free
    - i_strdup
    - i_new
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int file_dict_init(const struct dict *dict_driver, struct event *event,\n\t
      \      struct dict **dict_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/lib-dict/dict-file.c:140,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-dict/dict-file.c:141,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict/dict-file.c:142,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-file.c:143,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-file.c:144,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-file.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 146
    functionName: file_dict_deinit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - i_close_fd_path
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void file_dict_deinit(struct dict *_dict)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib-dict/dict-file.c:166,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-file.c:167,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-dict/dict-file.c:171,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-file.c:173,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib-dict/dict-file.c:177,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct file_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 182
    functionName: file_dict_need_refresh
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - e_error
    - nfs_safe_stat
    - fstat
    - CMP_DEV_T
    linkageType: ''
    returnType: bool
    signature: bool file_dict_need_refresh(struct file_dict *dict)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_dict_need_refresh
      Src: /src/dovecot/src/lib-dict/dict-file.c:188,1
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/lib-dict/dict-file.c:191,1
    - Dst: open
      Src: /src/dovecot/src/lib-dict/dict-file.c:195,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-dict/dict-file.c:200,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - dict
    - error_r
    argTypes:
    - struct file_dict*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 207
    functionName: file_dict_open_latest
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - i_close_fd_path
    - open
    - t_strdup_printf
    - eacces_error_get
    - file_dict_need_refresh
    linkageType: ''
    returnType: int
    signature: int file_dict_open_latest(struct file_dict *dict, const char **error_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_dict_open_latest
      Src: /src/dovecot/src/lib-dict/dict-file.c:214,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/lib-dict/dict-file.c:219,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-dict/dict-file.c:220,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-dict/dict-file.c:223,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-dict/dict-file.c:225,1
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib-dict/dict-file.c:227,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:227,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-dict/dict-file.c:229,1
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib-dict/dict-file.c:232,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:232,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib-dict/dict-file.c:233,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-dict/dict-file.c:235,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - dict
    - error_r
    argTypes:
    - struct file_dict*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 209
    functionDepth: 3
    functionLinenumber: 209
    functionLinenumberEnd: 239
    functionName: file_dict_refresh
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - str_tabunescape
    - i_stream_create_fd
    - p_strdup
    - hash_table_update
    - file_dict_open_latest
    - hash_table_clear
    - i_stream_read_next_line
    - p_clear
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int file_dict_refresh(struct file_dict *dict, const char **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: file_dict_ensure_path_home_dir
      Src: /src/dovecot/src/lib-dict/dict-file.c:249,1
    - Dst: file_dict_refresh
      Src: /src/dovecot/src/lib-dict/dict-file.c:252,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-dict/dict-file.c:255,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict/dict-file.c:259,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 6
    argNames:
    - _dict
    - set
    - pool
    - key
    - values_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 241
    functionDepth: 4
    functionLinenumber: 241
    functionLinenumberEnd: 263
    functionName: file_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - file_dict_refresh
    - file_dict_ensure_path_home_dir
    - hash_table_lookup
    linkageType: ''
    returnType: int
    signature: "int file_dict_lookup(struct dict *_dict,\n\t\t\t    const struct dict_op_settings
      *set,\n\t\t\t    pool_t pool, const char *key,\n\t\t\t    const char *const
      **values_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict/dict-file.c:275,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict/dict-file.c:276,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:280,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-file.c:281,1
    - Dst: file_dict_ensure_path_home_dir
      Src: /src/dovecot/src/lib-dict/dict-file.c:284,1
    - Dst: file_dict_refresh
      Src: /src/dovecot/src/lib-dict/dict-file.c:285,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:286,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-dict/dict-file.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - _dict
    - ATTR_UNUSED
    - path
    - flags
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - enum dict_iterate_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 265
    functionDepth: 4
    functionLinenumber: 265
    functionLinenumberEnd: 290
    functionName: file_dict_iterate_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - strlen
    - hash_table_iterate_init
    - file_dict_refresh
    - file_dict_ensure_path_home_dir
    linkageType: ''
    returnType: struct dict_iterate_context
    signature: "struct dict_iterate_context *\nfile_dict_iterate_init(struct dict
      *_dict,\n\t\t       const struct dict_op_settings *set ATTR_UNUSED,\n\t\t       const
      char *path, enum dict_iterate_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/lib-dict/dict-file.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct file_dict_iterate_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 299
    functionName: file_dict_iterate_key_matches
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: bool
    signature: "bool file_dict_iterate_key_matches(struct file_dict_iterate_context
      *ctx,\n\t\t\t      const char *key)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-dict/dict-file.c:309,1
    - Dst: file_dict_iterate_key_matches
      Src: /src/dovecot/src/lib-dict/dict-file.c:312,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict/dict-file.c:321,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 3
    argNames:
    - _ctx
    - key_r
    - values_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 331
    functionName: file_dict_iterate
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - strchr
    - file_dict_iterate_key_matches
    - hash_table_iterate
    linkageType: ''
    returnType: bool
    signature: "bool file_dict_iterate(struct dict_iterate_context *_ctx,\n\t\t\t
      \     const char **key_r, const char *const **values_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:340,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-dict/dict-file.c:341,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict/dict-file.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 344
    functionName: file_dict_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - t_strdup
    - pool_unref
    linkageType: ''
    returnType: int
    signature: "int file_dict_iterate_deinit(struct dict_iterate_context *_ctx,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict/dict-file.c:352,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict/dict-file.c:353,1
    - Dst: dict_transaction_memory_init
      Src: /src/dovecot/src/lib-dict/dict-file.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 356
    functionName: file_dict_transaction_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - dict_transaction_memory_init
    linkageType: ''
    returnType: struct dict_transaction_context
    signature: 'struct dict_transaction_context *

      file_dict_transaction_init(struct dict *_dict)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-dict/dict-file.c:369,1
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/lib-dict/dict-file.c:370,1
    - Dst: str_to_llong
      Src: /src/dovecot/src/lib-dict/dict-file.c:386,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict/dict-file.c:387,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:389,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-file.c:390,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-file.c:391,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:392,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dict/dict-file.c:394,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:400,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-file.c:402,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib-dict/dict-file.c:405,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-dict/dict-file.c:409,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - ctx
    - atomic_inc_not_found_r
    argTypes:
    - struct dict_transaction_memory_context*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 413
    functionName: file_dict_apply_changes
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_strdup
    - hash_table_update
    - i_unreached
    - strlen
    - t_strdup_printf
    - hash_table_remove
    - array_foreach
    - str_to_llong
    - hash_table_lookup_full
    linkageType: ''
    returnType: void
    signature: "void file_dict_apply_changes(struct dict_transaction_memory_context
      *ctx,\n\t\t\t\t    bool *atomic_inc_not_found_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-dict/dict-file.c:422,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:423,1
    - Dst: fchown
      Src: /src/dovecot/src/lib-dict/dict-file.c:431,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:432,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-dict/dict-file.c:433,1
    - Dst: fchmod
      Src: /src/dovecot/src/lib-dict/dict-file.c:439,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:440,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - src_st
    - dest_fd
    - dest_path
    - error_r
    argTypes:
    - struct stat*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 446
    functionName: fd_copy_stat_permissions
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - dec2str
    - fchmod
    - t_strdup_printf
    - fstat
    - fchown
    linkageType: ''
    returnType: int
    signature: "int fd_copy_stat_permissions(const struct stat *src_st,\n\t\t\t int
      dest_fd, const char *dest_path,\n\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib-dict/dict-file.c:454,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:455,1
    - Dst: fd_copy_stat_permissions
      Src: /src/dovecot/src/lib-dict/dict-file.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - src_fd
    - src_path
    - dest_fd
    - dest_path
    - error_r
    argTypes:
    - int
    - char*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 459
    functionName: fd_copy_permissions
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - fd_copy_stat_permissions
    - fstat
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int fd_copy_permissions(int src_fd, const char *src_path,\n\t\t\t
      \      int dest_fd, const char *dest_path,\n\t\t\t       const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-dict/dict-file.c:468,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-dict/dict-file.c:472,1
    - Dst: stat
      Src: /src/dovecot/src/lib-dict/dict-file.c:473,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:474,1
    - Dst: fd_copy_stat_permissions
      Src: /src/dovecot/src/lib-dict/dict-file.c:478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - src_path
    - dest_fd
    - dest_path
    - error_r
    argTypes:
    - char*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 461
    functionDepth: 2
    functionLinenumber: 461
    functionLinenumberEnd: 479
    functionName: fd_copy_parent_dir_permissions
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - strrchr
    - t_strdup_printf
    - fd_copy_stat_permissions
    - stat
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: "int fd_copy_parent_dir_permissions(const char *src_path, int dest_fd,\n\t\t\t
      \      const char *dest_path, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-dict/dict-file.c:487,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-dict/dict-file.c:490,1
    - Dst: stat_first_parent
      Src: /src/dovecot/src/lib-dict/dict-file.c:492,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-dict/dict-file.c:494,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:496,1
    - Dst: mkdir_parents
      Src: /src/dovecot/src/lib-dict/dict-file.c:504,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-dict/dict-file.c:506,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:508,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - dict
    - error_r
    argTypes:
    - struct file_dict*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 512
    functionName: file_dict_mkdir
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - strrchr
    - t_strdup_printf
    - mkdir_parents
    - t_strdup_until
    - eacces_error_get
    - stat_first_parent
    linkageType: ''
    returnType: int
    signature: int file_dict_mkdir(struct file_dict *dict, const char **error_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: file_dict_open_latest
      Src: /src/dovecot/src/lib-dict/dict-file.c:521,1
    - Dst: open
      Src: /src/dovecot/src/lib-dict/dict-file.c:526,1
    - Dst: file_dict_mkdir
      Src: /src/dovecot/src/lib-dict/dict-file.c:528,1
    - Dst: open
      Src: /src/dovecot/src/lib-dict/dict-file.c:530,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-dict/dict-file.c:534,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:536,1
    - Dst: fd_copy_parent_dir_permissions
      Src: /src/dovecot/src/lib-dict/dict-file.c:541,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-file.c:543,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib-dict/dict-file.c:551,1
    - Dst: file_wait_lock
      Src: /src/dovecot/src/lib-dict/dict-file.c:552,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:555,1
    - Dst: file_dict_open_latest
      Src: /src/dovecot/src/lib-dict/dict-file.c:562,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - dict
    - lock_r
    - error_r
    argTypes:
    - struct file_dict*
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 514
    functionDepth: 3
    functionLinenumber: 514
    functionLinenumberEnd: 565
    functionName: file_dict_lock
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - file_dict_open_latest
    - open
    - t_strdup_printf
    - file_wait_lock
    - file_dict_mkdir
    - e_error
    - eacces_error_get
    - file_lock_free
    - fd_copy_parent_dir_permissions
    linkageType: ''
    returnType: int
    signature: "int file_dict_lock(struct file_dict *dict, struct file_lock **lock_r,\n\t
      \      const char **error_r)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: file_dict_ensure_path_home_dir
      Src: /src/dovecot/src/lib-dict/dict-file.c:584,1
    - Dst: file_dict_lock
      Src: /src/dovecot/src/lib-dict/dict-file.c:590,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:592,1
    - Dst: creat
      Src: /src/dovecot/src/lib-dict/dict-file.c:593,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:595,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-dict/dict-file.c:597,1
    - Dst: file_dotlock_open
      Src: /src/dovecot/src/lib-dict/dict-file.c:602,1
    - Dst: file_dict_mkdir
      Src: /src/dovecot/src/lib-dict/dict-file.c:605,1
    - Dst: file_dotlock_open
      Src: /src/dovecot/src/lib-dict/dict-file.c:607,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:611,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib-dict/dict-file.c:616,1
    - Dst: file_dict_refresh
      Src: /src/dovecot/src/lib-dict/dict-file.c:621,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-dict/dict-file.c:623,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-dict/dict-file.c:625,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-dict/dict-file.c:626,1
    - Dst: fd_copy_permissions
      Src: /src/dovecot/src/lib-dict/dict-file.c:632,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-file.c:633,1
    - Dst: fd_copy_parent_dir_permissions
      Src: /src/dovecot/src/lib-dict/dict-file.c:636,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-file.c:637,1
    - Dst: file_dict_apply_changes
      Src: /src/dovecot/src/lib-dict/dict-file.c:639,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-dict/dict-file.c:641,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-dict/dict-file.c:642,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-dict/dict-file.c:643,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict/dict-file.c:644,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-dict/dict-file.c:645,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dict/dict-file.c:646,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-dict/dict-file.c:647,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict-file.c:648,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-dict/dict-file.c:649,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict-file.c:650,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-dict/dict-file.c:651,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-dict/dict-file.c:651,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-dict/dict-file.c:651,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-dict/dict-file.c:653,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-dict/dict-file.c:655,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:656,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dict/dict-file.c:657,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-dict/dict-file.c:658,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib-dict/dict-file.c:660,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-dict/dict-file.c:662,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-dict/dict-file.c:663,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-dict/dict-file.c:667,1
    - Dst: file_dotlock_replace
      Src: /src/dovecot/src/lib-dict/dict-file.c:670,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:672,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-dict/dict-file.c:673,1
    - Dst: rename
      Src: /src/dovecot/src/lib-dict/dict-file.c:677,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-file.c:678,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib-dict/dict-file.c:680,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-dict/dict-file.c:681,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib-dict/dict-file.c:686,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-dict/dict-file.c:689,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 89
    argCount: 3
    argNames:
    - ctx
    - atomic_inc_not_found_r
    - error_r
    argTypes:
    - struct dict_transaction_memory_context*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 567
    functionDepth: 4
    functionLinenumber: 567
    functionLinenumberEnd: 692
    functionName: file_dict_write_changes
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate
    - str_len
    - file_unlock
    - o_stream_cork
    - t_strdup_printf
    - hash_table_iterate_init
    - str_append_tabescaped
    - creat
    - fd_copy_permissions
    - o_stream_create_fd
    - t_str_new
    - hash_table_iterate_deinit
    - str_append_c
    - rename
    - o_stream_get_error
    - i_close_fd
    - file_dict_ensure_path_home_dir
    - o_stream_nsend
    - file_lock_free
    - fd_copy_parent_dir_permissions
    - str_data
    - file_dict_mkdir
    - file_dict_refresh
    - e_error
    - o_stream_destroy
    - file_dotlock_delete
    - file_dict_apply_changes
    - o_stream_finish
    - file_dict_lock
    - file_dotlock_replace
    - str_truncate
    - file_dotlock_open
    - file_dotlock_get_lock_path
    linkageType: ''
    returnType: int
    signature: "int file_dict_write_changes(struct dict_transaction_memory_context
      *ctx,\n\t\t\tbool *atomic_inc_not_found_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict/dict-file.c:705,1
    - Dst: file_dict_write_changes
      Src: /src/dovecot/src/lib-dict/dict-file.c:706,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict/dict-file.c:712,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict/dict-file.c:714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - _ctx
    - ATTR_UNUSED
    - callback
    - context
    argTypes:
    - struct dict_transaction_context*
    - bool
    - dict_transaction_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 694
    functionDepth: 5
    functionLinenumber: 694
    functionLinenumberEnd: 715
    functionName: file_dict_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-file.c
    functionUses: 0
    functionsReached:
    - i_zero
    - file_dict_write_changes
    - pool_unref
    - callback
    linkageType: ''
    returnType: void
    signature: "void file_dict_transaction_commit(struct dict_transaction_context
      *_ctx,\n\t\t\t     bool async ATTR_UNUSED,\n\t\t\t     dict_transaction_commit_callback_t
      *callback,\n\t\t\t     void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - dict_driver ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct dict*
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: dict_fail_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dict_fail_init(const struct dict *dict_driver ATTR_UNUSED,\n\t
      \      struct event *event ATTR_UNUSED,\n\t       struct dict **dict_r ATTR_UNUSED,
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: dict_fail_deinit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dict_fail_deinit(struct dict *dict ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: dict_fail_wait
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dict_fail_wait(struct dict *dict ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 43
    functionName: dict_fail_lookup
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dict_fail_lookup(struct dict *dict ATTR_UNUSED,\n\t\t\t    const
      struct dict_op_settings *set ATTR_UNUSED,\n\t\t\t    pool_t pool ATTR_UNUSED,\n\t\t\t
      \   const char *key ATTR_UNUSED,\n\t\t\t    const char *const **values_r ATTR_UNUSED,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - enum dict_iterate_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: dict_fail_iterate_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct dict_iterate_context
    signature: "struct dict_iterate_context *\ndict_fail_iterate_init(struct dict
      *dict ATTR_UNUSED,\n\t\t       const struct dict_op_settings *set ATTR_UNUSED,\n\t\t
      \      const char *path ATTR_UNUSED,\n\t\t       enum dict_iterate_flags flags
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct dict_iterate_context*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: dict_fail_iterate
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool dict_fail_iterate(struct dict_iterate_context *ctx ATTR_UNUSED,\n\t\t\t
      \     const char **key_r ATTR_UNUSED,\n\t\t\t      const char *const **values_r
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: dict_fail_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dict_fail_iterate_deinit(struct dict_iterate_context *ctx ATTR_UNUSED,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: dict_fail_transaction_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct dict_transaction_context
    signature: struct dict_transaction_context *dict_fail_transaction_init(struct
      dict *dict ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/lib-dict/dict-fail.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - callback
    - context
    argTypes:
    - struct dict_transaction_context*
    - bool
    - dict_transaction_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 84
    functionName: dict_fail_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached:
    - callback
    linkageType: ''
    returnType: void
    signature: "void dict_fail_transaction_commit(struct dict_transaction_context
      *ctx ATTR_UNUSED,\n\t\t\t\t\t bool async ATTR_UNUSED,\n\t\t\t\t\t dict_transaction_commit_callback_t
      *callback,\n\t\t\t\t\t void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: dict_fail_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dict_fail_transaction_rollback(struct dict_transaction_context
      *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct dict_transaction_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: dict_fail_set
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dict_fail_set(struct dict_transaction_context *ctx ATTR_UNUSED,\n\t\t\t
      \ const char *key ATTR_UNUSED, const char *value ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct dict_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: dict_fail_unset
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dict_fail_unset(struct dict_transaction_context *ctx ATTR_UNUSED,\n\t\t\t
      \   const char *key ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct dict_transaction_context*
    - char*
    - long long diff
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: dict_fail_atomic_inc
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dict_fail_atomic_inc(struct dict_transaction_context *ctx ATTR_UNUSED,\n\t\t\t\t
      const char *key ATTR_UNUSED, long long diff ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: dict_fail_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dict_fail_switch_ioloop(struct dict *dict ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct dict_transaction_context*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dict_fail_set_timestamp
    functionSourceFile: /src/dovecot/src/lib-dict/dict-fail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dict_fail_set_timestamp(struct dict_transaction_context *ctx
      ATTR_UNUSED,\n\t\t\t\t    const struct timespec *ts ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict/dict-redis.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dict
    - state
    argTypes:
    - struct redis_dict*
    - enum redis_input_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: redis_input_state_add
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void redis_input_state_add(struct redis_dict *dict, enum redis_input_state
      state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-dict/dict-redis.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct redis_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: redis_input_state_remove
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - array_pop_front
    linkageType: ''
    returnType: void
    signature: void redis_input_state_remove(struct redis_dict *dict)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:141,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict/dict-redis.c:143,1
    - Dst: struct redis_dict_reply*::callback
      Src: /src/dovecot/src/lib-dict/dict-redis.c:144,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict/dict-redis.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - conn
    - reply
    - result
    argTypes:
    - struct redis_connection*
    - struct redis_dict_reply*
    - struct dict_commit_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: redis_reply_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - i_assert
    - struct redis_dict_reply*::callback
    linkageType: ''
    returnType: void
    signature: "void redis_reply_callback(struct redis_connection *conn,\n\t\t\t\t
      const struct redis_dict_reply *reply,\n\t\t\t\t const struct dict_commit_result
      *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict/dict-redis.c:156,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict-redis.c:161,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-dict/dict-redis.c:165,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-dict/dict-redis.c:167,1
    - Dst: redis_reply_callback
      Src: /src/dovecot/src/lib-dict/dict-redis.c:168,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-dict/dict-redis.c:169,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-dict/dict-redis.c:170,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict/dict-redis.c:171,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct redis_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 175
    functionName: redis_disconnected
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - redis_reply_callback
    - array_foreach
    - i_strdup
    - io_loop_stop
    - array_clear
    - t_strdup
    - timeout_remove
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void redis_disconnected(struct redis_connection *conn, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redis_disconnected
      Src: /src/dovecot/src/lib-dict/dict-redis.c:181,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/lib-dict/dict-redis.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 182
    functionName: redis_conn_destroy
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - redis_disconnected
    - connection_disconnect_reason
    linkageType: ''
    returnType: void
    signature: void redis_conn_destroy(struct connection *_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:186,1
    - Dst: redis_disconnected
      Src: /src/dovecot/src/lib-dict/dict-redis.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct redis_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 191
    functionName: redis_dict_wait_timeout
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - redis_disconnected
    linkageType: ''
    returnType: void
    signature: void redis_dict_wait_timeout(struct redis_dict *dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:195,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:197,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-dict/dict-redis.c:199,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-dict/dict-redis.c:201,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:203,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:206,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dict/dict-redis.c:209,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict/dict-redis.c:210,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict/dict-redis.c:212,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict/dict-redis.c:213,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:214,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict/dict-redis.c:215,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-dict/dict-redis.c:216,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict/dict-redis.c:218,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct redis_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 221
    functionName: redis_wait
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - io_loop_set_current
    - timeout_add
    - connection_switch_ioloop
    - io_loop_destroy
    - io_loop_create
    - array_count
    - io_loop_move_timeout
    - t_strdup
    - i_assert
    - i_free
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: char
    signature: char *redis_wait(struct redis_dict *dict)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-dict/dict-redis.c:231,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict/dict-redis.c:234,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:238,1
    - Dst: redis_input_state_remove
      Src: /src/dovecot/src/lib-dict/dict-redis.c:239,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dict/dict-redis.c:242,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:243,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-dict/dict-redis.c:250,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-dict/dict-redis.c:253,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dict/dict-redis.c:256,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dict/dict-redis.c:263,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-dict/dict-redis.c:263,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:266,1
    - Dst: redis_input_state_remove
      Src: /src/dovecot/src/lib-dict/dict-redis.c:267,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct redis_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 269
    functionName: redis_input_get
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - strcmp
    - redis_input_state_remove
    - str_len
    - i_stream_next_line
    - i_stream_get_data
    - t_strdup_printf
    - i_stream_skip
    - io_loop_stop
    - str_truncate
    - str_to_uint
    - str_append_data
    linkageType: ''
    returnType: int
    signature: int redis_input_get(struct redis_connection *conn, const char **error_r)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict/dict-redis.c:281,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-dict/dict-redis.c:283,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:286,1
    - Dst: redis_input_get
      Src: /src/dovecot/src/lib-dict/dict-redis.c:292,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-dict/dict-redis.c:294,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-dict/dict-redis.c:299,1
    - Dst: redis_input_state_remove
      Src: /src/dovecot/src/lib-dict/dict-redis.c:301,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict/dict-redis.c:304,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dict/dict-redis.c:313,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-dict/dict-redis.c:316,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:317,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:319,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-dict/dict-redis.c:329,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:330,1
    - Dst: redis_reply_callback
      Src: /src/dovecot/src/lib-dict/dict-redis.c:335,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-dict/dict-redis.c:336,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict/dict-redis.c:339,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict/dict-redis.c:340,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:342,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dict/dict-redis.c:347,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict/dict-redis.c:348,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:349,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct redis_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 351
    functionName: redis_conn_input_more
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - array_pop_front
    - redis_input_state_remove
    - i_unreached
    - i_stream_next_line
    - array_get
    - timeout_reset
    - t_strdup_printf
    - redis_reply_callback
    - array_count
    - io_loop_stop
    - redis_input_get
    - str_truncate
    - str_append
    - str_to_uint
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int redis_conn_input_more(struct redis_connection *conn, const char
      **error_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dict/dict-redis.c:359,1
    - Dst: redis_disconnected
      Src: /src/dovecot/src/lib-dict/dict-redis.c:363,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dict/dict-redis.c:363,1
    - Dst: redis_conn_input_more
      Src: /src/dovecot/src/lib-dict/dict-redis.c:369,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:371,1
    - Dst: redis_disconnected
      Src: /src/dovecot/src/lib-dict/dict-redis.c:372,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 353
    functionDepth: 4
    functionLinenumber: 353
    functionLinenumberEnd: 374
    functionName: redis_conn_input
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - redis_conn_input_more
    - i_stream_get_error
    - i_stream_read
    - redis_disconnected
    - i_assert
    linkageType: ''
    returnType: void
    signature: void redis_conn_input(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-redis.c:381,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 387
    functionName: redis_conn_connected
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - e_error
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void redis_conn_connected(struct connection *_conn, bool success)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict/dict-redis.c:404,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict/dict-redis.c:409,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict/dict-redis.c:412,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict/dict-redis.c:415,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict/dict-redis.c:418,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - username
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 419
    functionName: redis_escape_username
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_c
    - t_str_new
    - str_append_c
    linkageType: ''
    returnType: char
    signature: char *redis_escape_username(const char *username)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-dict/dict-redis.c:426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 431
    functionName: redis_settings_check
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    linkageType: ''
    returnType: bool
    signature: "bool redis_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict/dict-redis.c:439,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-dict/dict-redis.c:445,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict/dict-redis.c:449,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-dict/dict-redis.c:454,1
    - Dst: connection_init_client_ip
      Src: /src/dovecot/src/lib-dict/dict-redis.c:457,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-dict/dict-redis.c:461,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-dict/dict-redis.c:463,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-dict/dict-redis.c:466,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-dict/dict-redis.c:467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - dict_driver
    - event
    - dict_r
    - error_r
    argTypes:
    - struct dict*
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 471
    functionName: redis_dict_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - connection_list_init
    - connection_init_client_unix
    - event_set_append_log_prefix
    - i_new
    - connection_init_client_ip
    - settings_get
    - str_new
    linkageType: ''
    returnType: int
    signature: "int redis_dict_init(const struct dict *dict_driver, struct event *event,\n\t\tstruct
      dict **dict_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict/dict-redis.c:477,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:478,1
    - Dst: redis_dict_wait
      Src: /src/dovecot/src/lib-dict/dict-redis.c:479,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:481,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-dict/dict-redis.c:483,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:484,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:485,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:486,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:487,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:488,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:489,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-dict/dict-redis.c:492,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 493
    functionName: redis_dict_deinit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - i_free
    - settings_free
    - array_count
    - array_free
    - redis_dict_wait
    - i_assert
    - connection_deinit
    - str_free
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void redis_dict_deinit(struct dict *_dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict/dict-redis.c:499,1
    - Dst: redis_wait
      Src: /src/dovecot/src/lib-dict/dict-redis.c:501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 495
    functionDepth: 2
    functionLinenumber: 495
    functionLinenumberEnd: 503
    functionName: redis_dict_wait
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 1
    functionsReached:
    - array_count
    - redis_wait
    linkageType: ''
    returnType: void
    signature: void redis_dict_wait(struct dict *_dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:507,1
    - Dst: redis_disconnected
      Src: /src/dovecot/src/lib-dict/dict-redis.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct redis_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 505
    functionDepth: 3
    functionLinenumber: 505
    functionLinenumberEnd: 512
    functionName: redis_dict_lookup_timeout
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - redis_disconnected
    linkageType: ''
    returnType: void
    signature: void redis_dict_lookup_timeout(struct redis_dict *dict)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict/dict-redis.c:518,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dict/dict-redis.c:520,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dict/dict-redis.c:522,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:523,1
    - Dst: redis_escape_username
      Src: /src/dovecot/src/lib-dict/dict-redis.c:525,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict/dict-redis.c:528,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-dict/dict-redis.c:531,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - dict
    - username
    - key
    argTypes:
    - struct redis_dict*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 514
    functionDepth: 2
    functionLinenumber: 514
    functionLinenumberEnd: 533
    functionName: redis_dict_get_full_key
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_unreached
    - str_begins
    - t_strdup_printf
    - t_strconcat
    - redis_escape_username
    linkageType: ''
    returnType: char
    signature: "char *\nredis_dict_get_full_key(struct redis_dict *dict, const char
      *username,\n\t\t\tconst char *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:542,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:543,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:545,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct redis_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 535
    functionDepth: 2
    functionLinenumber: 535
    functionLinenumberEnd: 547
    functionName: redis_dict_auth
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - strlen
    - t_strdup_printf
    - redis_input_state_add
    linkageType: ''
    returnType: void
    signature: void redis_dict_auth(struct redis_dict *dict)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dec2str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:560,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:561,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:562,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:563,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct redis_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 549
    functionDepth: 2
    functionLinenumber: 549
    functionLinenumberEnd: 565
    functionName: redis_dict_select_db
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - dec2str
    - strlen
    - t_strdup_printf
    - redis_input_state_add
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void redis_dict_select_db(struct redis_dict *dict)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: redis_dict_get_full_key
      Src: /src/dovecot/src/lib-dict/dict-redis.c:576,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:581,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-dict/dict-redis.c:584,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:585,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-dict/dict-redis.c:588,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-redis.c:589,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:591,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dict/dict-redis.c:595,1
    - Dst: redis_dict_auth
      Src: /src/dovecot/src/lib-dict/dict-redis.c:597,1
    - Dst: redis_dict_select_db
      Src: /src/dovecot/src/lib-dict/dict-redis.c:601,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:602,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:603,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:604,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dict/dict-redis.c:606,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:607,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dict/dict-redis.c:609,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict/dict-redis.c:610,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict/dict-redis.c:612,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict/dict-redis.c:615,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-dict/dict-redis.c:616,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict/dict-redis.c:617,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-dict/dict-redis.c:618,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:624,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict/dict-redis.c:625,1
    - Dst: redis_disconnected
      Src: /src/dovecot/src/lib-dict/dict-redis.c:626,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict/dict-redis.c:632,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-redis.c:633,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict/dict-redis.c:633,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 6
    argNames:
    - _dict
    - set
    - pool
    - key
    - values_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 567
    functionDepth: 3
    functionLinenumber: 567
    functionLinenumberEnd: 636
    functionName: redis_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - strlen
    - t_strdup_printf
    - io_loop_destroy
    - array_count
    - redis_dict_auth
    - io_loop_run
    - p_new
    - timeout_add
    - redis_input_state_add
    - io_loop_set_current
    - e_error
    - o_stream_nsend_str
    - i_assert
    - connection_client_connect
    - redis_dict_select_db
    - connection_switch_ioloop
    - io_loop_create
    - str_truncate
    - redis_disconnected
    - redis_dict_get_full_key
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: "int redis_dict_lookup(struct dict *_dict,\n\t\t\t     const struct
      dict_op_settings *set,\n\t\t\t     pool_t pool, const char *key,\n\t\t\t     const
      char *const **values_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:644,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict/dict-redis.c:647,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-dict/dict-redis.c:651,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:652,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-redis.c:653,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict-redis.c:656,1
    - Dst: redis_wait
      Src: /src/dovecot/src/lib-dict/dict-redis.c:656,1
    - Dst: redis_dict_auth
      Src: /src/dovecot/src/lib-dict/dict-redis.c:658,1
    - Dst: redis_dict_select_db
      Src: /src/dovecot/src/lib-dict/dict-redis.c:661,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 638
    functionDepth: 3
    functionLinenumber: 638
    functionLinenumberEnd: 663
    functionName: redis_transaction_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - connection_client_connect
    - redis_dict_select_db
    - e_error
    - i_strdup
    - i_new
    - redis_wait
    - i_strdup_printf
    - i_assert
    - redis_dict_auth
    linkageType: ''
    returnType: struct dict_transaction_context
    signature: 'struct dict_transaction_context *

      redis_transaction_init(struct dict *_dict)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:677,1
    - Dst: redis_disconnected
      Src: /src/dovecot/src/lib-dict/dict-redis.c:682,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict/dict-redis.c:685,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:687,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:689,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict/dict-redis.c:691,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:695,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:697,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:700,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:704,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict-redis.c:707,1
    - Dst: redis_wait
      Src: /src/dovecot/src/lib-dict/dict-redis.c:707,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict/dict-redis.c:711,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:713,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:714,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 4
    argNames:
    - _ctx
    - async
    - callback
    - context
    argTypes:
    - struct dict_transaction_context*
    - bool
    - dict_transaction_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 665
    functionDepth: 3
    functionLinenumber: 665
    functionLinenumberEnd: 715
    functionName: redis_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - array_append_space
    - timeout_add
    - redis_input_state_add
    - i_strdup
    - redis_disconnected
    - callback
    - redis_wait
    - o_stream_nsend_str
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void redis_transaction_commit(struct dict_transaction_context *_ctx,
      bool async,\n\t\t\t dict_transaction_commit_callback_t *callback,\n\t\t\t void
      *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-redis.c:723,1
    - Dst: redis_disconnected
      Src: /src/dovecot/src/lib-dict/dict-redis.c:728,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:730,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:732,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:734,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict/dict-redis.c:735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 717
    functionDepth: 3
    functionLinenumber: 717
    functionLinenumberEnd: 736
    functionName: redis_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - redis_input_state_add
    - redis_disconnected
    - o_stream_nsend_str
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void redis_transaction_rollback(struct dict_transaction_context *_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict/dict-redis.c:745,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:751,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:752,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:754,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dict/dict-redis.c:755,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct redis_dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 738
    functionDepth: 2
    functionLinenumber: 738
    functionLinenumberEnd: 759
    functionName: redis_check_transaction
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - o_stream_send_str
    - redis_input_state_add
    - i_strdup
    - i_strdup_printf
    linkageType: ''
    returnType: int
    signature: int redis_check_transaction(struct redis_dict_transaction_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dec2str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:772,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict/dict-redis.c:774,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:775,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:775,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:776,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - cmd
    - key
    argTypes:
    - struct redis_dict_transaction_context*
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 761
    functionDepth: 2
    functionLinenumber: 761
    functionLinenumberEnd: 778
    functionName: redis_append_expire
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_printfa
    - strlen
    - redis_input_state_add
    linkageType: ''
    returnType: void
    signature: "void redis_append_expire(struct redis_dict_transaction_context *ctx,\n\t\t
      \   string_t *cmd, const char *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redis_check_transaction
      Src: /src/dovecot/src/lib-dict/dict-redis.c:789,1
    - Dst: redis_dict_get_full_key
      Src: /src/dovecot/src/lib-dict/dict-redis.c:792,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict/dict-redis.c:793,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict/dict-redis.c:794,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:795,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:795,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:796,1
    - Dst: redis_append_expire
      Src: /src/dovecot/src/lib-dict/dict-redis.c:798,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-dict/dict-redis.c:799,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-dict/dict-redis.c:799,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-dict/dict-redis.c:799,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:800,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dict/dict-redis.c:801,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - _ctx
    - key
    - value
    argTypes:
    - struct dict_transaction_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 780
    functionDepth: 3
    functionLinenumber: 780
    functionLinenumberEnd: 803
    functionName: redis_set
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - redis_append_expire
    - str_data
    - str_len
    - o_stream_get_error
    - strlen
    - redis_input_state_add
    - o_stream_send
    - redis_check_transaction
    - redis_dict_get_full_key
    - i_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void redis_set(struct dict_transaction_context *_ctx,\n\t\t      const
      char *key, const char *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redis_check_transaction
      Src: /src/dovecot/src/lib-dict/dict-redis.c:814,1
    - Dst: redis_dict_get_full_key
      Src: /src/dovecot/src/lib-dict/dict-redis.c:817,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:818,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:819,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib-dict/dict-redis.c:820,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:821,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dict/dict-redis.c:822,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - _ctx
    - key
    argTypes:
    - struct dict_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 805
    functionDepth: 3
    functionLinenumber: 805
    functionLinenumberEnd: 826
    functionName: redis_unset
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - o_stream_send_str
    - strlen
    - t_strdup_printf
    - redis_input_state_add
    - redis_check_transaction
    - redis_dict_get_full_key
    - i_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void redis_unset(struct dict_transaction_context *_ctx,\n\t\t\tconst
      char *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redis_check_transaction
      Src: /src/dovecot/src/lib-dict/dict-redis.c:838,1
    - Dst: redis_dict_get_full_key
      Src: /src/dovecot/src/lib-dict/dict-redis.c:841,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:842,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict/dict-redis.c:843,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict/dict-redis.c:844,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:845,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict/dict-redis.c:845,1
    - Dst: redis_input_state_add
      Src: /src/dovecot/src/lib-dict/dict-redis.c:846,1
    - Dst: redis_append_expire
      Src: /src/dovecot/src/lib-dict/dict-redis.c:848,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-dict/dict-redis.c:849,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-dict/dict-redis.c:849,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-dict/dict-redis.c:849,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict/dict-redis.c:850,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dict/dict-redis.c:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - _ctx
    - key
    - diff
    argTypes:
    - struct dict_transaction_context*
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 828
    functionDepth: 3
    functionLinenumber: 828
    functionLinenumberEnd: 853
    functionName: redis_atomic_inc
    functionSourceFile: /src/dovecot/src/lib-dict/dict-redis.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - redis_append_expire
    - str_data
    - str_len
    - o_stream_get_error
    - strlen
    - t_strdup_printf
    - redis_input_state_add
    - o_stream_send
    - redis_check_transaction
    - redis_dict_get_full_key
    - i_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void redis_atomic_inc(struct dict_transaction_context *_ctx,\n\t\t\t
      \    const char *key, long long diff)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:12,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - dict
    - pool
    argTypes:
    - struct dict_transaction_memory_context*
    - struct dict*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 13
    functionName: dict_transaction_memory_init
    functionSourceFile: /src/dovecot/src/lib-dict/dict-transaction-memory.c
    functionUses: 1
    functionsReached:
    - p_array_init
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_memory_init(struct dict_transaction_memory_context
      *ctx,\n\t\t\t\t  struct dict *dict, pool_t pool)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 21
    functionName: dict_transaction_memory_rollback
    functionSourceFile: /src/dovecot/src/lib-dict/dict-transaction-memory.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void dict_transaction_memory_rollback(struct dict_transaction_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:30,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:32,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - key
    - value
    argTypes:
    - struct dict_transaction_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 34
    functionName: dict_transaction_memory_set
    functionSourceFile: /src/dovecot/src/lib-dict/dict-transaction-memory.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_memory_set(struct dict_transaction_context *_ctx,\n\t\t\t\t
      const char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:43,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - key
    argTypes:
    - struct dict_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: dict_transaction_memory_unset
    functionSourceFile: /src/dovecot/src/lib-dict/dict-transaction-memory.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_memory_unset(struct dict_transaction_context
      *_ctx,\n\t\t\t\t   const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:55,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict/dict-transaction-memory.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - key
    - diff
    argTypes:
    - struct dict_transaction_context*
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 59
    functionName: dict_transaction_memory_atomic_inc
    functionSourceFile: /src/dovecot/src/lib-dict/dict-transaction-memory.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void dict_transaction_memory_atomic_inc(struct dict_transaction_context
      *_ctx,\n\t\t\t\t\tconst char *key, long long diff)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:25,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:26,1
    - Dst: dlua_script_from_state
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:26,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct lua_dict_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: lua_dict_iter_unref
    functionSourceFile: /src/dovecot/src/lib-dict/dict-iter-lua.c
    functionUses: 0
    functionsReached:
    - e_error
    - pool_unref
    - dict_iterate_deinit
    - dlua_script_from_state
    linkageType: ''
    returnType: void
    signature: void lua_dict_iter_unref(struct lua_dict_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_dict_iterate_step
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - L
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - lua_State*
    - int
    - lua_KContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: lua_dict_iterate_step_continue
    functionSourceFile: /src/dovecot/src/lib-dict/dict-iter-lua.c
    functionUses: 0
    functionsReached:
    - lua_dict_iterate_step
    linkageType: ''
    returnType: int
    signature: "int lua_dict_iterate_step_continue(lua_State *L,\n\t\t\t\t\t  int
      status ATTR_UNUSED,\n\t\t\t\t\t  lua_KContext ctx ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:59,1
    - Dst: xlua_dict_iter_getptr
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:61,1
    - Dst: lua_dict_iterate_more
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:64,1
    - Dst: lua_dict_iterate_step_continue
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:68,1
    - Dst: lua_yieldk
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:69,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:74,1
    - Dst: lua_rawgeti
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:79,1
    - Dst: luaL_unref
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:80,1
    - Dst: lua_error
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:81,1
    - Dst: lua_rawgeti
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:88,1
    - Dst: lua_rawgeti
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:89,1
    - Dst: luaL_unref
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:90,1
    - Dst: luaL_unref
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:91,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 96
    functionName: lua_dict_iterate_step
    functionSourceFile: /src/dovecot/src/lib-dict/dict-iter-lua.c
    functionUses: 1
    functionsReached:
    - luaL_unref
    - array_delete
    - array_get
    - lua_dict_iterate_step_continue
    - lua_dict_iterate_more
    - DLUA_REQUIRE_ARGS
    - lua_yieldk
    - lua_error
    - xlua_dict_iter_getptr
    - i_assert
    - lua_rawgeti
    linkageType: ''
    returnType: int
    signature: int lua_dict_iterate_step(lua_State *L)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dict_iterate_values
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:107,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:111,1
    - Dst: luaL_ref
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:112,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:113,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:116,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:118,1
    - Dst: lua_seti
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:119,1
    - Dst: luaL_ref
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:121,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:122,1
    - Dst: dict_iterate_has_more
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:125,1
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:128,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:129,1
    - Dst: luaL_ref
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct lua_dict_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 132
    functionName: lua_dict_iterate_more
    functionSourceFile: /src/dovecot/src/lib-dict/dict-iter-lua.c
    functionUses: 1
    functionsReached:
    - dict_iterate_deinit
    - array_push_back
    - luaL_ref
    - lua_pushstring
    - dict_iterate_has_more
    - lua_seti
    - dict_iterate_values
    - lua_newtable
    linkageType: ''
    returnType: void
    signature: void lua_dict_iterate_more(struct lua_dict_iter *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_pcall_yieldable_resume
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct lua_dict_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 141
    functionName: lua_dict_iterate_callback
    functionSourceFile: /src/dovecot/src/lib-dict/dict-iter-lua.c
    functionUses: 0
    functionsReached:
    - dlua_pcall_yieldable_resume
    linkageType: ''
    returnType: void
    signature: void lua_dict_iterate_callback(struct lua_dict_iter *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:164,1
    - Dst: dlua_check_dict
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:166,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:167,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:168,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:169,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:170,1
    - Dst: lua_dict_check_key_prefix
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:171,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:178,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:179,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:181,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:183,1
    - Dst: dict_iterate_set_async_callback
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:186,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:190,1
    - Dst: xlua_pushdict_iter
      Src: /src/dovecot/src/lib-dict/dict-iter-lua.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 193
    functionName: lua_dict_iterate
    functionSourceFile: /src/dovecot/src/lib-dict/dict-iter-lua.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_array_init
    - xlua_pushdict_iter
    - dict_iterate_set_async_callback
    - dlua_check_dict
    - luaL_checkinteger
    - lua_dict_check_key_prefix
    - luaL_checkstring
    - dict_iterate_init
    - lua_pushcfunction
    - DLUA_REQUIRE_ARGS_IN
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: int lua_dict_iterate(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dict/test-dict.c:23,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dict/test-dict.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict/test-dict.c:25,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict/test-dict.c:25,1
    - Dst: dict_escape_string
      Src: /src/dovecot/src/lib-dict/test-dict.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict/test-dict.c:26,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict/test-dict.c:26,1
    - Dst: dict_unescape_string
      Src: /src/dovecot/src/lib-dict/test-dict.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict/test-dict.c:28,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict/test-dict.c:28,1
    - Dst: dict_unescape_string
      Src: /src/dovecot/src/lib-dict/test-dict.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict/test-dict.c:29,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dict/test-dict.c:29,1
    - Dst: dict_unescape_string
      Src: /src/dovecot/src/lib-dict/test-dict.c:29,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dict/test-dict.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 7
    functionDepth: 3
    functionLinenumber: 7
    functionLinenumberEnd: 31
    functionName: test_dict_escape
    functionSourceFile: /src/dovecot/src/lib-dict/test-dict.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - test_assert
    - dict_escape_string
    - dict_unescape_string
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dict_escape(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-dict/test-dict.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 7
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-dict/test-dict.c
    functionUses: 9
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - principal_out ATTR_UNUSED
    argTypes:
    - krb5_context
    - char*
    - krb5_principal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: KRB5_CALLCONV::krb5_parse_name
    functionSourceFile: /src/dovecot/src/lib-sasl/krb5-dummy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: krb5_error_code
    signature: "krb5_error_code KRB5_CALLCONV\nkrb5_parse_name(krb5_context context
      ATTR_UNUSED, const char *name ATTR_UNUSED,\n                krb5_principal *principal_out
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - krb5_context
    - krb5_principal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: KRB5_CALLCONV::krb5_free_principal
    functionSourceFile: /src/dovecot/src/lib-sasl/krb5-dummy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void KRB5_CALLCONV\nkrb5_free_principal(krb5_context context ATTR_UNUSED,\n\t\t
      \   krb5_principal val ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - krb5_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: KRB5_CALLCONV::krb5_free_context
    functionSourceFile: /src/dovecot/src/lib-sasl/krb5-dummy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void KRB5_CALLCONV krb5_free_context(krb5_context context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - krb5_context
    - krb5_principal
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: KRB5_CALLCONV::krb5_kuserok
    functionSourceFile: /src/dovecot/src/lib-sasl/krb5-dummy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: krb5_boolean
    signature: "krb5_boolean KRB5_CALLCONV\nkrb5_kuserok(krb5_context context ATTR_UNUSED,\n\t
      \    krb5_principal principal ATTR_UNUSED,\n\t     const char *luser ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: gsskrb5_register_acceptor_identity
    functionSourceFile: /src/dovecot/src/lib-sasl/krb5-dummy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OM_uint32
    signature: OM_uint32 gsskrb5_register_acceptor_identity(const char *identity ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: KRB5_CALLCONV::krb5_gss_register_acceptor_identity
    functionSourceFile: /src/dovecot/src/lib-sasl/krb5-dummy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OM_uint32
    signature: 'OM_uint32 KRB5_CALLCONV

      krb5_gss_register_acceptor_identity(const char *path ATTR_UNUSED)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:71,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:74,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:75,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:76,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:77,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:78,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - tctx
    - type
    argTypes:
    - struct test_sasl_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 81
    functionName: test_create_channel_binding_data
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - random_fill
    - p_strdup
    - buffer_create_dynamic
    - test_assert_strcmp
    - base64_encode
    - i_assert
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: void
    signature: void test_create_channel_binding_data(struct test_sasl_context *tctx,
      const char *type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:92,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:95,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rctx
    - authid_type
    - authid
    argTypes:
    - struct sasl_server_req_ctx*
    - enum sasl_server_authid_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 98
    functionName: test_server_request_set_authid
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - test_assert_strcmp
    - test_assert
    linkageType: ''
    returnType: bool
    signature: "bool test_server_request_set_authid(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \      enum sasl_server_authid_type authid_type,\n\t\t\t       const char *authid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:105,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:111,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:113,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - rctx
    - authzid
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 116
    functionName: test_server_request_set_authzid
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - test_assert_strcmp
    linkageType: ''
    returnType: bool
    signature: "bool test_server_request_set_authzid(struct sasl_server_req_ctx *rctx,\n\t\t\t\tconst
      char *authzid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:123,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:127,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rctx
    - realm
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 129
    functionName: test_server_request_set_realm
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - test_assert_strcmp
    linkageType: ''
    returnType: void
    signature: "void test_server_request_set_realm(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \     const char *realm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - field_r
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 139
    functionName: test_server_request_get_extra_field
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool test_server_request_get_extra_field(struct sasl_server_req_ctx
      *rctx ATTR_UNUSED,\n\t\t\t\t    const char *name ATTR_UNUSED,\n\t\t\t\t    const
      char **field_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:146,1
    - Dst: test_create_channel_binding_data
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rctx
    - type
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 150
    functionName: test_server_request_start_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - test_create_channel_binding_data
    - container_of
    linkageType: ''
    returnType: void
    signature: "void test_server_request_start_channel_binding(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t\t  const char *type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rctx
    - data_r
    argTypes:
    - struct sasl_server_req_ctx*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: test_server_request_accept_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: int
    signature: "int test_server_request_accept_channel_binding(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t\t   buffer_t **data_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:172,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:176,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:178,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:179,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:180,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:182,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:186,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:187,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:189,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - rctx
    - password
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 195
    functionName: test_server_request_verify_plain
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - container_of
    - e_debug
    - null_strcmp
    - callback
    linkageType: ''
    returnType: void
    signature: "void test_server_request_verify_plain(struct sasl_server_req_ctx *rctx,\n\t\t\t\t
      const char *password,\n\t\t\t\t sasl_server_passdb_callback_t *callback)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:203,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:208,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:211,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:212,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:213,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:215,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:220,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:221,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:222,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:224,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:229,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:229,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:233,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:234,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:240,1
    - Dst: password_generate
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:244,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:248,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:253,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - rctx
    - scheme
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 254
    functionName: test_server_request_lookup_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - container_of
    - e_debug
    - strlen
    - strcasecmp
    - password_generate
    - null_strcmp
    - callback
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void test_server_request_lookup_credentials(\n\tstruct sasl_server_req_ctx
      *rctx, const char *scheme,\n\tsasl_server_passdb_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:262,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:266,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:267,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - rctx
    - scheme
    - data
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 271
    functionName: test_server_request_set_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - callback
    linkageType: ''
    returnType: void
    signature: "void test_server_request_set_credentials(\n\tstruct sasl_server_req_ctx
      *rctx, const char *scheme, const char *data,\n\tsasl_server_passdb_callback_t
      *callback)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:278,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:284,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:285,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:289,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:305,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:307,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:315,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:318,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - rctx
    - output
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_server_output*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 273
    functionDepth: 3
    functionLinenumber: 273
    functionLinenumberEnd: 321
    functionName: test_server_request_output
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - container_of
    - test_out_reason_quiet
    - e_debug
    - test_has_failed
    - test_out_quiet
    - test_assert
    - dsasl_client_input
    linkageType: ''
    returnType: void
    signature: "void test_server_request_output(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \  const struct sasl_server_output *output)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:329,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:334,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:335,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:336,1
    - Dst: sasl_server_oauth2_request_fail
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:340,1
    - Dst: sasl_server_oauth2_request_succeed
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:344,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - rctx
    - ATTR_UNUSED
    - token
    - req_r
    argTypes:
    - struct sasl_server_req_ctx*
    - pool_t
    - char*
    - struct sasl_server_oauth2_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 346
    functionName: test_server_oauth2_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - sasl_server_oauth2_request_succeed
    - sasl_server_oauth2_request_fail
    - null_strcmp
    linkageType: ''
    returnType: int
    signature: "int test_server_oauth2_auth_new(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \   pool_t pool ATTR_UNUSED, const char *token,\n\t\t\t    struct sasl_server_oauth2_request
      **req_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_create_channel_binding_data
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - type
    - context
    - data_r
    - error_r
    argTypes:
    - char*
    - void*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 383
    functionName: test_client_channel_binding_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - test_create_channel_binding_data
    linkageType: ''
    returnType: int
    signature: "int test_client_channel_binding_callback(const char *type, void *context,\n\t\t\t\t
      \    const buffer_t **data_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:393,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:396,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:398,1
    - Dst: sasl_server_request_initial
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:401,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:404,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:409,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:412,1
    - Dst: sasl_server_request_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:417,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - tctx
    argTypes:
    - struct test_sasl_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 420
    functionName: test_sasl_interact
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - test_out_reason_quiet
    - sasl_server_request_initial
    - test_has_failed
    - sasl_server_request_input
    - dsasl_client_output
    linkageType: ''
    returnType: void
    signature: void test_sasl_interact(struct test_sasl_context *tctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:431,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:432,1
    - Dst: sasl_server_request_create
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:437,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:452,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:458,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:459,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:460,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:461,1
    - Dst: dsasl_client_enable_channel_binding
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:463,1
    - Dst: test_sasl_interact
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:467,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:469,1
    - Dst: sasl_server_request_destroy
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:470,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 4
    argNames:
    - test
    - passdb
    - server_mech
    - auth_initial
    argTypes:
    - struct test_sasl*
    - struct test_sasl_passdb*
    - struct sasl_server_mech*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 473
    functionName: test_sasl_run_once
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - dsasl_client_mech_find
    - dsasl_client_enable_channel_binding
    - pool_unref
    - test_sasl_interact
    - sasl_server_request_destroy
    - dsasl_client_new
    - dsasl_client_free
    - i_assert
    - t_strconcat
    - sasl_server_request_create
    linkageType: ''
    returnType: void
    signature: "void test_sasl_run_once(const struct test_sasl *test,\n\t\t   struct
      test_sasl_passdb *passdb,\n\t\t   const struct sasl_server_mech *server_mech,\n\t\t
      \  bool auth_initial)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:488,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:492,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:492,1
    - Dst: sasl_server_init
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:500,1
    - Dst: sasl_server_instance_create
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:501,1
    - Dst: sasl_server_mech_register_anonymous
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:503,1
    - Dst: sasl_server_mech_register_cram_md5
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:504,1
    - Dst: sasl_server_mech_register_digest_md5
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:505,1
    - Dst: sasl_server_mech_register_external
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:506,1
    - Dst: sasl_server_mech_register_login
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:507,1
    - Dst: sasl_server_mech_register_otp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:508,1
    - Dst: sasl_server_mech_register_plain
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:509,1
    - Dst: sasl_server_mech_register_scram_sha1
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:510,1
    - Dst: sasl_server_mech_register_scram_sha1_plus
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:511,1
    - Dst: sasl_server_mech_register_scram_sha256
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:512,1
    - Dst: sasl_server_mech_register_scram_sha256_plus
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:513,1
    - Dst: sasl_server_mech_register_oauthbearer
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:515,1
    - Dst: sasl_server_mech_register_xoauth2
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:517,1
    - Dst: sasl_server_mech_register_winbind_ntlm
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:523,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:528,1
    - Dst: sasl_server_mech_register_gssapi
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:530,1
    - Dst: sasl_server_mech_register_gss_spnego
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:531,1
    - Dst: sasl_server_mech_find
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:536,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:537,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:540,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:541,1
    - Dst: gss_dummy_add_principal
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:542,1
    - Dst: gss_dummy_kinit
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:543,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:551,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:552,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:554,1
    - Dst: test_sasl_run_once
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:555,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:557,1
    - Dst: sasl_server_instance_unref
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:559,1
    - Dst: sasl_server_deinit
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:560,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:561,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 3
    argNames:
    - test
    - label
    - auth_initial
    argTypes:
    - struct test_sasl*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 562
    functionName: test_sasl_run
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - gss_dummy_add_principal
    - sasl_server_mech_register_plain
    - sasl_server_mech_register_external
    - t_strdup_printf
    - pool_unref
    - sasl_server_mech_register_cram_md5
    - sasl_server_mech_register_anonymous
    - sasl_server_mech_register_scram_sha1
    - sasl_server_mech_register_oauthbearer
    - null_strcasecmp
    - sasl_server_mech_register_gssapi
    - gss_dummy_kinit
    - test_end
    - sasl_server_mech_register_login
    - sasl_server_init
    - test_sasl_run_once
    - i_zero
    - sasl_server_mech_register_gss_spnego
    - sasl_server_instance_create
    - test_begin
    - sasl_server_deinit
    - sasl_server_mech_register_scram_sha256
    - sasl_server_mech_register_digest_md5
    - sasl_server_mech_register_scram_sha256_plus
    - i_assert
    - strcmp
    - pool_alloconly_create
    - sasl_server_mech_register_scram_sha1_plus
    - test_has_failed
    - sasl_server_mech_register_winbind_ntlm
    - sasl_server_mech_find
    - sasl_server_mech_register_otp
    - sasl_server_instance_unref
    - sasl_server_mech_register_xoauth2
    linkageType: ''
    returnType: void
    signature: "void test_sasl_run(const struct test_sasl *test, const char *label,\n\t
      \     bool auth_initial)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_sasl_run
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:802,1
    - Dst: test_sasl_run
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:803,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 795
    functionDepth: 5
    functionLinenumber: 795
    functionLinenumberEnd: 805
    functionName: test_sasl_success
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - test_sasl_run
    linkageType: ''
    returnType: void
    signature: void test_sasl_success(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_sasl_run
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1568
    functionDepth: 5
    functionLinenumber: 1568
    functionLinenumberEnd: 1577
    functionName: test_sasl_bad_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - test_sasl_run
    linkageType: ''
    returnType: void
    signature: void test_sasl_bad_credentials(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1590,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1591,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1593,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1599,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1603,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1604,1
    - Dst: password_schemes_init
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1605,1
    - Dst: dsasl_clients_init
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1606,1
    - Dst: dsasl_client_mech_ntlm_init_dummy
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1607,1
    - Dst: dsasl_clients_init_gssapi
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1609,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1612,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1613,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1614,1
    - Dst: dsasl_clients_deinit
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1616,1
    - Dst: password_schemes_deinit
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1617,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1618,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-sasl/test-sasl-authentication.c:1619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1579
    functionDepth: 7
    functionLinenumber: 1579
    functionLinenumberEnd: 1621
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-authentication.c
    functionUses: 9
    functionsReached:
    - event_set_forced_debug
    - getopt
    - password_schemes_init
    - lib_init
    - lib_deinit
    - i_fatal
    - test_run
    - dsasl_clients_init
    - io_loop_create
    - lib_signals_init
    - io_loop_destroy
    - dsasl_clients_init_gssapi
    - lib_signals_deinit
    - password_schemes_deinit
    - test_init
    - dsasl_clients_deinit
    - dsasl_client_mech_ntlm_init_dummy
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-anonymous.c:11,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-anonymous.c:13,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-anonymous.c:14,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-anonymous.c:18,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 19
    functionName: mech_anonymous_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-anonymous.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_set_authid
    - t_strndup
    - sasl_server_request_failure
    - sasl_server_request_success
    linkageType: ''
    returnType: void
    signature: "void mech_anonymous_auth_continue(struct sasl_server_mech_request
      *request,\n\t\t\t     const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-anonymous.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: sasl_server_mech_register_anonymous
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-anonymous.c
    functionUses: 1
    functionsReached:
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_register_anonymous(struct sasl_server_instance
      *sinst)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:31,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:34,1
    - Dst: auth_scram_credentials_parse
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:45,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:54,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:55,1
    - Dst: auth_scram_server_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:59,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:61,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:62,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:65,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:68,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - auth_request
    - result
    argTypes:
    - struct sasl_server_mech_request*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 71
    functionName: credentials_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_output
    - e_info
    - container_of
    - i_assert
    - sasl_server_request_internal_failure
    - sasl_server_request_failure
    - auth_scram_credentials_parse
    - auth_scram_server_output
    linkageType: ''
    returnType: void
    signature: "void credentials_callback(struct sasl_server_mech_request *auth_request,\n\t\t
      \    const struct sasl_passdb_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:78,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - asserver
    - username
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 84
    functionName: mech_scram_set_username
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_set_authid
    - container_of
    linkageType: ''
    returnType: bool
    signature: "bool mech_scram_set_username(struct auth_scram_server *asserver,\n\t\t\tconst
      char *username)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:91,1
    - Dst: sasl_server_request_set_authzid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - asserver
    - username
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 95
    functionName: mech_scram_set_login_username
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_set_authzid
    - container_of
    linkageType: ''
    returnType: bool
    signature: "bool mech_scram_set_login_username(struct auth_scram_server *asserver,\n\t\t\t
      \     const char *username)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:102,1
    - Dst: sasl_server_request_start_channel_binding
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - asserver
    - type
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 106
    functionName: mech_scram_start_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - container_of
    - sasl_server_request_start_channel_binding
    linkageType: ''
    returnType: void
    signature: "void mech_scram_start_channel_binding(struct auth_scram_server *asserver,\n\t\t\t\t
      const char *type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:113,1
    - Dst: sasl_server_request_accept_channel_binding
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - asserver
    - data_r
    argTypes:
    - struct auth_scram_server*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 117
    functionName: mech_scram_accept_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - container_of
    - sasl_server_request_accept_channel_binding
    linkageType: ''
    returnType: int
    signature: "int mech_scram_accept_channel_binding(struct auth_scram_server *asserver,\n\t\t\t\t
      \ buffer_t **data_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:124,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:127,1
    - Dst: sasl_server_request_lookup_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - asserver
    - key_data
    argTypes:
    - struct auth_scram_server*
    - struct auth_scram_key_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 135
    functionName: mech_scram_credentials_lookup
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_lookup_credentials
    - container_of
    linkageType: ''
    returnType: int
    signature: "int mech_scram_credentials_lookup(struct auth_scram_server *asserver,\n\t\t\t
      \     struct auth_scram_key_data *key_data)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:152,1
    - Dst: auth_scram_server_input
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:160,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:163,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:166,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:168,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:169,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:174,1
    - Dst: sasl_server_request_password_mismatch
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:177,1
    - Dst: auth_scram_server_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:185,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:187,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:191,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - auth_request
    - input
    - input_len
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 192
    functionName: mech_scram_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_output
    - e_info
    - container_of
    - sasl_server_request_password_mismatch
    - auth_scram_server_output
    - i_unreached
    - auth_scram_server_input
    - sasl_server_request_failure
    - sasl_server_request_success
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mech_scram_auth_continue(struct sasl_server_mech_request *auth_request,\n\t\t\t
      const unsigned char *input, size_t input_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:199,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:202,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:206,1
    - Dst: sasl_server_mech_find
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:209,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:210,1
    - Dst: sasl_server_mech_find
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:214,1
    - Dst: auth_scram_server_init
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - mech
    - pool
    argTypes:
    - struct sasl_server_mech*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 227
    functionName: mech_scram_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - p_new
    - sasl_server_mech_find
    - auth_scram_server_init
    - t_strconcat
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: 'struct sasl_server_mech_request *

      mech_scram_auth_new(const struct sasl_server_mech *mech, pool_t pool)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:232,1
    - Dst: auth_scram_server_deinit
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 236
    functionName: mech_scram_auth_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - auth_scram_server_deinit
    - container_of
    linkageType: ''
    returnType: void
    signature: void mech_scram_auth_free(struct sasl_server_mech_request *auth_request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 245
    functionName: mech_scram_mech_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: struct sasl_server_mech *mech_scram_mech_new(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:300,1
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:302,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:304,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - sinst
    - mech_def
    - hash_method
    - password_scheme
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    - struct hash_method*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 307
    functionName: sasl_server_mech_register_scram
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    - sasl_server_mech_register
    - container_of
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_scram(\n\tstruct sasl_server_instance
      *sinst,\n\tconst struct sasl_server_mech_def *mech_def,\n\tconst struct hash_method
      *hash_method, const char *password_scheme)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_scram
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 314
    functionName: sasl_server_mech_register_scram_sha1
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 1
    functionsReached:
    - sasl_server_mech_register_scram
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_scram_sha1(\n\tstruct sasl_server_instance
      *sinst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_scram
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 321
    functionName: sasl_server_mech_register_scram_sha1_plus
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 1
    functionsReached:
    - sasl_server_mech_register_scram
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_scram_sha1_plus(\n\tstruct sasl_server_instance
      *sinst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_scram
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 328
    functionName: sasl_server_mech_register_scram_sha256
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 1
    functionsReached:
    - sasl_server_mech_register_scram
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_scram_sha256(\n\tstruct sasl_server_instance
      *sinst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_scram
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 335
    functionName: sasl_server_mech_register_scram_sha256_plus
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-scram.c
    functionUses: 1
    functionsReached:
    - sasl_server_mech_register_scram
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_scram_sha256_plus(\n\tstruct sasl_server_instance
      *sinst)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:23,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:25,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:32,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:35,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:37,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:38,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:39,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - server
    - set
    argTypes:
    - struct sasl_server*
    - struct sasl_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 45
    functionName: sasl_server_instance_create
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - p_strarray_dup
    - event_set_append_log_prefix
    - DLLIST_PREPEND
    - event_add_category
    linkageType: ''
    returnType: struct sasl_server_instance
    signature: "struct sasl_server_instance *\nsasl_server_instance_create(struct
      sasl_server *server,\n\t\t\t    const struct sasl_server_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: sasl_server_instance_ref
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void sasl_server_instance_ref(struct sasl_server_instance *sinst)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:61,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:67,1
    - Dst: sasl_server_instance_mech_registry_free
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:69,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:71,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:73,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _sinst
    argTypes:
    - struct sasl_server_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 75
    functionName: sasl_server_instance_unref
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server.c
    functionUses: 1
    functionsReached:
    - event_unref
    - sasl_server_instance_mech_registry_free
    - pool_unref
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void sasl_server_instance_unref(struct sasl_server_instance **_sinst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:88,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:89,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:94,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:95,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - event_parent
    - funcs
    argTypes:
    - struct event*
    - struct sasl_server_request_funcs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 99
    functionName: sasl_server_init
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - event_set_append_log_prefix
    - event_add_category
    linkageType: ''
    returnType: struct sasl_server
    signature: "struct sasl_server *\nsasl_server_init(struct event *event_parent,\n\t\t
      const struct sasl_server_request_funcs *funcs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:110,1
    - Dst: sasl_server_mech_registry_free
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:112,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:114,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _server
    argTypes:
    - struct sasl_server**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 116
    functionName: sasl_server_deinit
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server.c
    functionUses: 1
    functionsReached:
    - i_assert
    - event_unref
    - sasl_server_mech_registry_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void sasl_server_deinit(struct sasl_server **_server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct dsasl_client*::cbinding_callback
      Src: /src/dovecot/src/lib-sasl/dsasl-client-private.h:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - client
    - type
    - data_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - char*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 75
    functionName: dasl_client_get_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-private.h
    functionUses: 0
    functionsReached:
    - struct dsasl_client*::cbinding_callback
    linkageType: ''
    returnType: int
    signature: "int dasl_client_get_channel_binding(struct dsasl_client *client,\n\t\t\t\tconst
      char *type, const buffer_t **data_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/sasl-server-oauth2.h:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - request_r
    - pool
    - srctx
    argTypes:
    - struct sasl_server_oauth2_request*
    - pool_t
    - struct sasl_server_req_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 34
    functionName: sasl_server_oauth2_request_init
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-oauth2.h
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void sasl_server_oauth2_request_init(struct sasl_server_oauth2_request
      *request_r,\n\t\t\t\tpool_t pool, struct sasl_server_req_ctx *srctx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:38,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:44,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:48,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:49,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:51,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:52,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:54,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:55,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:56,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:57,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:59,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:62,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:63,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:66,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:68,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:71,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:75,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:76,1
    - Dst: sasl_server_request_failure_with_reply
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:79,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:80,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:80,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - oauth2_req
    - failure
    argTypes:
    - struct oauth2_auth_request*
    - struct sasl_server_oauth2_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 32
    functionDepth: 18
    functionLinenumber: 32
    functionLinenumberEnd: 81
    functionName: oauth2_fail
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_ostream_ndescend_object
    - t_str_new
    - container_of
    - json_ostream_nascend_object
    - sasl_server_request_internal_failure
    - str_data
    - str_len
    - json_ostream_create_str
    - json_ostream_nwrite_string
    - json_ostream_nfinish_destroy
    - i_assert
    - sasl_server_request_failure_with_reply
    linkageType: ''
    returnType: void
    signature: "void oauth2_fail(struct oauth2_auth_request *oauth2_req,\n\t    const
      struct sasl_server_oauth2_failure *failure)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oauth2_fail
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - oauth2_req
    - status
    argTypes:
    - struct oauth2_auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 83
    functionDepth: 19
    functionLinenumber: 83
    functionLinenumberEnd: 91
    functionName: oauth2_fail_status
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - oauth2_fail
    linkageType: ''
    returnType: void
    signature: void oauth2_fail_status(struct oauth2_auth_request *oauth2_req, const
      char *status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oauth2_fail_status
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oauth2_req
    argTypes:
    - struct oauth2_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 20
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: oauth2_fail_invalid_request
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - oauth2_fail_status
    linkageType: ''
    returnType: void
    signature: void oauth2_fail_invalid_request(struct oauth2_auth_request *oauth2_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oauth2_fail_status
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oauth2_req
    argTypes:
    - struct oauth2_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 20
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: oauth2_fail_invalid_token
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - oauth2_fail_status
    linkageType: ''
    returnType: void
    signature: void oauth2_fail_invalid_token(struct oauth2_auth_request *oauth2_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_get_mech_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:108,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:111,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:114,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:116,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:118,1
    - Dst: sasl_server_mech_request_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rctx
    argTypes:
    - struct sasl_server_req_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 121
    functionName: sasl_server_oauth2_request_succeed
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 1
    functionsReached:
    - container_of
    - sasl_server_mech_request_unref
    - e_debug
    - sasl_server_request_get_mech_request
    - sasl_server_request_success
    - i_assert
    linkageType: ''
    returnType: void
    signature: void sasl_server_oauth2_request_succeed(struct sasl_server_req_ctx
      *rctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_get_mech_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:128,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:130,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:134,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:137,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:143,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:145,1
    - Dst: oauth2_fail
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:147,1
    - Dst: sasl_server_mech_request_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - rctx
    - failure
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_server_oauth2_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 123
    functionDepth: 19
    functionLinenumber: 123
    functionLinenumberEnd: 150
    functionName: sasl_server_oauth2_request_fail
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 1
    functionsReached:
    - container_of
    - sasl_server_mech_request_unref
    - e_debug
    - sasl_server_request_get_mech_request
    - oauth2_fail
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sasl_server_oauth2_request_fail(\n\tstruct sasl_server_req_ctx
      *rctx,\n\tconst struct sasl_server_oauth2_failure *failure)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_get_mech_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:158,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - rctx
    argTypes:
    - struct sasl_server_req_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 165
    functionName: sasl_server_oauth2_request_get
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - i_assert
    - sasl_server_request_get_mech_request
    - container_of
    linkageType: ''
    returnType: struct sasl_server_oauth2_request
    signature: 'struct sasl_server_oauth2_request *

      sasl_server_oauth2_request_get(struct sasl_server_req_ctx *rctx)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_get_req_ctx
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:173,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:175,1
    - Dst: sasl_server_mech_request_ref
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:179,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:182,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:183,1
    - Dst: sasl_server_mech_request_ref
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:189,1
    - Dst: struct oauth2_auth_mech*::funcs::auth_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:190,1
    - Dst: sasl_server_oauth2_request_fail
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:193,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:194,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:196,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:200,1
    - Dst: sasl_server_mech_request_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:203,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - oauth2_req
    - token
    argTypes:
    - struct oauth2_auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 167
    functionDepth: 20
    functionLinenumber: 167
    functionLinenumberEnd: 204
    functionName: mech_oauth2_verify_token
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - container_of
    - sasl_server_mech_request_unref
    - sasl_server_oauth2_request_fail
    - e_debug
    - struct oauth2_auth_mech*::funcs::auth_new
    - sasl_server_request_get_req_ctx
    - sasl_server_mech_request_ref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mech_oauth2_verify_token(struct oauth2_auth_request *oauth2_req,\n\t\t\t
      const char *token)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:215,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:223,1
    - Dst: auth_gs2_header_decode
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:232,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:234,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:236,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:241,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:242,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:245,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:248,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:253,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:255,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:263,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:264,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:268,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:270,1
    - Dst: sasl_oauth2_kvpair_parse
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:285,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:287,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:290,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:293,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:294,1
    - Dst: oauth2_valid_token
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:295,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:298,1
    - Dst: oauth2_fail_invalid_token
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:301,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:310,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:312,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:315,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:318,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:320,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:325,1
    - Dst: oauth2_fail_invalid_token
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:326,1
    - Dst: mech_oauth2_verify_token
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:329,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 69
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 209
    functionDepth: 21
    functionLinenumber: 209
    functionLinenumberEnd: 330
    functionName: mech_oauthbearer_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - strcmp
    - oauth2_fail_invalid_token
    - e_info
    - container_of
    - sasl_server_request_set_authid
    - sasl_oauth2_kvpair_parse
    - auth_gs2_header_decode
    - mech_oauth2_verify_token
    - oauth2_fail_invalid_request
    - str_begins_icase
    - oauth2_valid_token
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mech_oauthbearer_auth_continue(struct sasl_server_mech_request
      *request,\n\t\t\t       const unsigned char *data,\n\t\t\t       size_t data_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:341,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:344,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:355,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:355,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:358,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:363,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:364,1
    - Dst: oauth2_valid_token
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:365,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:368,1
    - Dst: oauth2_fail_invalid_token
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:369,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:377,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:380,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:384,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:385,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:388,1
    - Dst: oauth2_fail_invalid_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:389,1
    - Dst: mech_oauth2_verify_token
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:392,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 335
    functionDepth: 21
    functionLinenumber: 335
    functionLinenumberEnd: 393
    functionName: mech_xoauth2_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - oauth2_fail_invalid_token
    - e_info
    - container_of
    - sasl_server_request_set_authid
    - str_begins
    - mech_oauth2_verify_token
    - t_strndup
    - oauth2_fail_invalid_request
    - t_strsplit
    - str_begins_icase
    - oauth2_valid_token
    linkageType: ''
    returnType: void
    signature: "void mech_xoauth2_auth_continue(struct sasl_server_mech_request *request,\n\t\t\t
      \  const unsigned char *data,\n\t\t\t   size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - pool
    argTypes:
    - struct sasl_server_mech*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 404
    functionName: mech_oauth2_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: "struct sasl_server_mech_request *\nmech_oauth2_auth_new(const struct
      sasl_server_mech *mech ATTR_UNUSED,\n\t\t     pool_t pool)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:409,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:411,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:414,1
    - Dst: struct oauth2_auth_mech*::funcs::auth_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 418
    functionName: mech_oauth2_auth_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - struct oauth2_auth_mech*::funcs::auth_free
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void mech_oauth2_auth_free(struct sasl_server_mech_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 427
    functionName: mech_oauth2_mech_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: struct sasl_server_mech *mech_oauth2_mech_new(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:475,1
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:477,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:480,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:486,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - sinst
    - mech_def
    - funcs
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    - struct sasl_server_oauth2_funcs*
    - struct sasl_server_oauth2_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 488
    functionName: mech_oauth2_register
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    - sasl_server_mech_register
    - container_of
    linkageType: ''
    returnType: void
    signature: "void mech_oauth2_register(struct sasl_server_instance *sinst,\n\t\t
      \    const struct sasl_server_mech_def *mech_def,\n\t\t     const struct sasl_server_oauth2_funcs
      *funcs,\n\t\t     const struct sasl_server_oauth2_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mech_oauth2_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sinst
    - funcs
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_oauth2_funcs*
    - struct sasl_server_oauth2_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 496
    functionName: sasl_server_mech_register_oauthbearer
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 1
    functionsReached:
    - mech_oauth2_register
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_oauthbearer(\n\tstruct sasl_server_instance
      *sinst,\n\tconst struct sasl_server_oauth2_funcs *funcs,\n\tconst struct sasl_server_oauth2_settings
      *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mech_oauth2_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sinst
    - funcs
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_oauth2_funcs*
    - struct sasl_server_oauth2_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 504
    functionName: sasl_server_mech_register_xoauth2
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-oauth2.c
    functionUses: 1
    functionsReached:
    - mech_oauth2_register
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_xoauth2(\n\tstruct sasl_server_instance
      *sinst,\n\tconst struct sasl_server_oauth2_funcs *funcs,\n\tconst struct sasl_server_oauth2_settings
      *set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:60,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:75,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:77,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:78,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:79,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:80,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:82,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:86,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:89,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:92,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:94,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:100,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:101,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:104,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct digest_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 109
    functionName: get_digest_challenge
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - random_fill
    - p_strdup
    - t_str_new
    - str_printfa
    - str_append_c
    - str_append
    - base64_encode
    - buffer_create_from_data
    - buffer_append_c
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: string_t
    signature: string_t *get_digest_challenge(struct digest_auth_request *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:117,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:123,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:124,1
    - Dst: auth_digest_get_hash_a1
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:155,1
    - Dst: auth_digest_get_client_response
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:166,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:172,1
    - Dst: sasl_server_request_password_mismatch
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:174,1
    - Dst: auth_digest_get_server_response
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:179,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:184,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:186,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - auth_request
    - credentials
    - size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 188
    functionName: verify_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - container_of
    - sasl_server_request_password_mismatch
    - auth_digest_get_server_response
    - strlen
    - mem_equals_timing_safe
    - e_error
    - auth_digest_get_client_response
    - auth_digest_get_hash_a1
    - p_strconcat
    - sasl_server_request_failure
    - sasl_server_request_success
    linkageType: ''
    returnType: void
    signature: "void verify_credentials(struct sasl_server_mech_request *auth_request,\n\t\t
      \  const unsigned char *credentials, size_t size)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:197,1
    - Dst: sasl_server_request_set_realm
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:199,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:203,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:214,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:218,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:220,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:229,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:240,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:244,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:252,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:262,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:266,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:268,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:273,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:274,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:284,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:288,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:290,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:301,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:305,1
    - Dst: str_to_ulong
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:311,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:319,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:320,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:328,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:329,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:334,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:338,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:343,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:354,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 121
    argCount: 4
    argNames:
    - request
    - key
    - value
    - error_r
    argTypes:
    - struct digest_auth_request*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 360
    functionName: auth_handle_response
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - strcmp
    - memcpy
    - p_strdup
    - sasl_server_request_set_realm
    - strlen
    - t_strdup_printf
    - strcasecmp
    - str_to_ulong
    - t_strsplit
    - str_sanitize
    - str_to_uint
    linkageType: ''
    returnType: bool
    signature: "bool auth_handle_response(struct digest_auth_request *request,\n\t\t
      \    const char *key, const char *value, const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:396,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:396,1
    - Dst: auth_digest_parse_keyvalue
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:400,1
    - Dst: auth_handle_response
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:401,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:426,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:428,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 4
    argNames:
    - request
    - data
    - size
    - error_r
    argTypes:
    - struct digest_auth_request*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 431
    functionName: parse_digest_response
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - auth_handle_response
    - t_strndup
    - t_strdup_noconst
    - auth_digest_parse_keyvalue
    linkageType: ''
    returnType: bool
    signature: "bool parse_digest_response(struct digest_auth_request *request,\n\t\t
      \     const unsigned char *data, size_t size,\n\t\t      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verify_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:439,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:443,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - auth_request
    - result
    argTypes:
    - struct sasl_server_mech_request*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 449
    functionName: credentials_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_failure
    - sasl_server_request_internal_failure
    - verify_credentials
    linkageType: ''
    returnType: void
    signature: "void credentials_callback(struct sasl_server_mech_request *auth_request,\n\t\t
      \    const struct sasl_passdb_result *result)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:456,1
    - Dst: parse_digest_response
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:460,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:461,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:462,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:465,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:468,1
    - Dst: sasl_server_request_set_authzid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:472,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:473,1
    - Dst: sasl_server_request_lookup_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:477,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - auth_request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 451
    functionDepth: 3
    functionLinenumber: 451
    functionLinenumberEnd: 479
    functionName: mech_digest_md5_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_set_authid
    - e_info
    - container_of
    - parse_digest_response
    - sasl_server_request_lookup_credentials
    - sasl_server_request_set_authzid
    - sasl_server_request_failure
    linkageType: ''
    returnType: void
    signature: "void mech_digest_md5_auth_continue(struct sasl_server_mech_request
      *auth_request,\n\t\t\t      const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:487,1
    - Dst: get_digest_challenge
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:493,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:494,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:494,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - auth_request
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 496
    functionName: mech_digest_md5_auth_initial
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_output
    - container_of
    - get_digest_challenge
    - str_data
    - str_len
    linkageType: ''
    returnType: void
    signature: "void mech_digest_md5_auth_initial(struct sasl_server_mech_request
      *auth_request,\n\t\t\t     const unsigned char *data ATTR_UNUSED,\n\t\t\t     size_t
      data_size ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - pool
    argTypes:
    - struct sasl_server_mech*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 508
    functionName: mech_digest_md5_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: "struct sasl_server_mech_request *\nmech_digest_md5_auth_new(const
      struct sasl_server_mech *mech ATTR_UNUSED,\n\t\t\t pool_t pool)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 529
    functionName: sasl_server_mech_register_digest_md5
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 1
    functionsReached:
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_register_digest_md5(struct sasl_server_instance
      *sinst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_get_mech_request
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:535,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:537,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:540,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rctx
    - nonce
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 542
    functionName: sasl_server_mech_digest_md5_test_set_nonce
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - sasl_server_request_get_mech_request
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_digest_md5_test_set_nonce(\n\tstruct sasl_server_req_ctx
      *rctx, const char *nonce)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dasl_client_get_channel_binding
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:30,1
    - Dst: buffer_clone
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:35,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - sclient
    - error_r
    argTypes:
    - struct scram_dsasl_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 37
    functionName: mech_scram_init_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c
    functionUses: 0
    functionsReached:
    - dasl_client_get_channel_binding
    - buffer_clone
    linkageType: ''
    returnType: int
    signature: "int mech_scram_init_channel_binding(struct scram_dsasl_client *sclient,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:61,1
    - Dst: mech_scram_init_channel_binding
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:69,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:74,1
    - Dst: auth_scram_client_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:85,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - sclient
    - error_r
    argTypes:
    - struct scram_dsasl_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 88
    functionName: mech_scram_init
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c
    functionUses: 0
    functionsReached:
    - i_zero
    - auth_scram_client_init
    - mech_scram_init_channel_binding
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int mech_scram_init(struct scram_dsasl_client *sclient,\n\t\t\t   const
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:96,1
    - Dst: mech_scram_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:99,1
    - Dst: auth_scram_client_input
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 106
    functionName: mech_scram_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c
    functionUses: 0
    functionsReached:
    - mech_scram_init
    - container_of
    - auth_scram_client_input
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_scram_input(struct dsasl_client *client,\n\t\t
      const unsigned char *input, size_t input_len,\n\t\t const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:114,1
    - Dst: mech_scram_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:129,1
    - Dst: auth_scram_client_output
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:132,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 135
    functionName: mech_scram_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c
    functionUses: 0
    functionsReached:
    - mech_scram_init
    - container_of
    - auth_scram_client_output
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_scram_output(struct dsasl_client *client,\n\t\t
      \ const unsigned char **output_r, size_t *output_len_r,\n\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:140,1
    - Dst: auth_scram_client_deinit
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct dsasl_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 143
    functionName: mech_scram_free
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-scram.c
    functionUses: 0
    functionsReached:
    - container_of
    - auth_scram_client_deinit
    linkageType: ''
    returnType: void
    signature: void mech_scram_free(struct dsasl_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:71,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:73,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:74,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:75,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:77,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:78,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:78,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:78,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:79,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:79,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - fctx
    - type
    - data
    argTypes:
    - struct fuzz_sasl_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 82
    functionName: fuzz_create_channel_binding_data
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - buffer_create_dynamic
    - strlen
    - base64_encode
    - str_append
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nfuzz_create_channel_binding_data(struct fuzz_sasl_context
      *fctx,\n\t\t\t\t const char *type, const char *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:90,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rctx
    - authid_type
    - authid
    argTypes:
    - struct sasl_server_req_ctx*
    - enum sasl_server_authid_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: fuzz_server_request_set_authid
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    linkageType: ''
    returnType: bool
    signature: "bool fuzz_server_request_set_authid(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \      enum sasl_server_authid_type authid_type,\n\t\t\t       const char *authid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:104,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rctx
    - authzid
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 111
    functionName: fuzz_server_request_set_authzid
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    linkageType: ''
    returnType: bool
    signature: "bool fuzz_server_request_set_authzid(struct sasl_server_req_ctx *rctx,\n\t\t\t\tconst
      char *authzid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 118
    functionName: fuzz_server_request_set_realm
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fuzz_server_request_set_realm(struct sasl_server_req_ctx *rctx
      ATTR_UNUSED,\n\t\t\t      const char *realm ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: fuzz_server_request_get_extra_field
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool fuzz_server_request_get_extra_field(struct sasl_server_req_ctx
      *rctx ATTR_UNUSED,\n\t\t\t\t    const char *name ATTR_UNUSED,\n\t\t\t\t    const
      char **field_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:133,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:135,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rctx
    - type
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: fuzz_server_request_start_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void fuzz_server_request_start_channel_binding(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t\t  const char *type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:144,1
    - Dst: fuzz_create_channel_binding_data
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rctx
    - data_r
    argTypes:
    - struct sasl_server_req_ctx*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 153
    functionName: fuzz_server_request_accept_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - fuzz_create_channel_binding_data
    - container_of
    linkageType: ''
    returnType: int
    signature: "int fuzz_server_request_accept_channel_binding(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t\t   buffer_t **data_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:161,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:164,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:165,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:166,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:168,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:171,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:173,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - rctx
    - password
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 179
    functionName: fuzz_server_request_verify_plain
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - container_of
    - null_strcmp
    - callback
    linkageType: ''
    returnType: void
    signature: "void fuzz_server_request_verify_plain(struct sasl_server_req_ctx *rctx,\n\t\t\t\t
      const char *password,\n\t\t\t\t sasl_server_passdb_callback_t *callback)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:187,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:190,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:193,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:194,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:195,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:197,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:202,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:203,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:205,1
    - Dst: password_generate
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:213,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:216,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:218,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:223,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - rctx
    - scheme
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 224
    functionName: fuzz_server_request_lookup_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - container_of
    - password_generate
    - null_strcmp
    - callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void fuzz_server_request_lookup_credentials(\n\tstruct sasl_server_req_ctx
      *rctx, const char *scheme,\n\tsasl_server_passdb_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:233,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:238,1
    - Dst: callback
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 241
    functionName: fuzz_server_request_set_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - callback
    linkageType: ''
    returnType: void
    signature: "void fuzz_server_request_set_credentials(\n\tstruct sasl_server_req_ctx
      *rctx,\n\tconst char *scheme ATTR_UNUSED, const char *data ATTR_UNUSED,\n\tsasl_server_passdb_callback_t
      *callback)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:254,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:256,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:257,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:262,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:268,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:269,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:271,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:272,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:282,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:283,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:310,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:311,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:313,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:315,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:322,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:324,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:325,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:326,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:328,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:336,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:338,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:339,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:340,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:346,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:348,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:349,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:354,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:356,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:357,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:358,1
    - Dst: buffer_clear
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:371,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:373,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:376,1
    - Dst: t_memdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:380,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:385,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:386,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 102
    argCount: 3
    argNames:
    - fctx
    - _data
    - _size
    argTypes:
    - struct fuzz_sasl_context*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 387
    functionName: fuzz_sasl_amend_data
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - memcpy
    - buffer_append
    - e_debug
    - I_MIN
    - buffer_create_dynamic
    - buffer_clear
    - i_stream_skip
    - t_memdup
    - buffer_append_space_unsafe
    - buffer_free
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: void
    signature: "void fuzz_sasl_amend_data(struct fuzz_sasl_context *fctx,\n\t\t     const
      unsigned char **_data, size_t *_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:403,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:412,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fctx
    argTypes:
    - struct fuzz_sasl_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 415
    functionName: fuzz_assert_success_validity
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - str_array_icase_find
    linkageType: ''
    returnType: void
    signature: void fuzz_assert_success_validity(struct fuzz_sasl_context *fctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:422,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:430,1
    - Dst: fuzz_assert_success_validity
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:435,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:440,1
    - Dst: fuzz_sasl_amend_data
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:453,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:454,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:456,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:459,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - rctx
    - output
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_server_output*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 417
    functionDepth: 2
    functionLinenumber: 417
    functionLinenumberEnd: 462
    functionName: fuzz_server_request_output
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - container_of
    - e_debug
    - fuzz_assert_success_validity
    - fuzz_sasl_amend_data
    - dsasl_client_input
    linkageType: ''
    returnType: void
    signature: "void fuzz_server_request_output(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \  const struct sasl_server_output *output)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:470,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:474,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:475,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:476,1
    - Dst: sasl_server_oauth2_request_fail
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:480,1
    - Dst: sasl_server_oauth2_request_succeed
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:483,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - rctx
    - ATTR_UNUSED
    - token
    - req_r
    argTypes:
    - struct sasl_server_req_ctx*
    - pool_t
    - char*
    - struct sasl_server_oauth2_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 464
    functionDepth: 20
    functionLinenumber: 464
    functionLinenumberEnd: 485
    functionName: fuzz_server_oauth2_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - sasl_server_oauth2_request_succeed
    - sasl_server_oauth2_request_fail
    - null_strcmp
    linkageType: ''
    returnType: int
    signature: "int fuzz_server_oauth2_auth_new(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \   pool_t pool ATTR_UNUSED, const char *token,\n\t\t\t    struct sasl_server_oauth2_request
      **req_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fuzz_create_channel_binding_data
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - type
    - context
    - data_r
    - error_r
    argTypes:
    - char*
    - void*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 521
    functionName: fuzz_client_channel_binding_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - fuzz_create_channel_binding_data
    linkageType: ''
    returnType: int
    signature: "int fuzz_client_channel_binding_callback(const char *type, void *context,\n\t\t\t\t
      \    const buffer_t **data_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:532,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:536,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:540,1
    - Dst: fuzz_sasl_amend_data
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:544,1
    - Dst: sasl_server_request_initial
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:546,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:554,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:558,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:563,1
    - Dst: fuzz_sasl_amend_data
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:565,1
    - Dst: sasl_server_request_input
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:568,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - fctx
    argTypes:
    - struct fuzz_sasl_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 523
    functionDepth: 2
    functionLinenumber: 523
    functionLinenumberEnd: 571
    functionName: fuzz_sasl_interact
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - e_debug
    - sasl_server_request_initial
    - sasl_server_request_input
    - fuzz_sasl_amend_data
    - dsasl_client_output
    linkageType: ''
    returnType: void
    signature: void fuzz_sasl_interact(struct fuzz_sasl_context *fctx)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:579,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:582,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:585,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:587,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:590,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:592,1
    - Dst: t_strdup_empty
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:595,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:597,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:600,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:602,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:604,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:607,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:612,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:614,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:617,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:619,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:625,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:627,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:630,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:636,1
    - Dst: sasl_server_init
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:637,1
    - Dst: sasl_server_instance_create
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:638,1
    - Dst: sasl_server_mech_register_anonymous
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:640,1
    - Dst: sasl_server_mech_register_cram_md5
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:641,1
    - Dst: sasl_server_mech_register_digest_md5
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:642,1
    - Dst: sasl_server_mech_register_login
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:643,1
    - Dst: sasl_server_mech_register_otp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:644,1
    - Dst: sasl_server_mech_register_plain
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:645,1
    - Dst: sasl_server_mech_register_scram_sha1
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:646,1
    - Dst: sasl_server_mech_register_scram_sha1_plus
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:647,1
    - Dst: sasl_server_mech_register_scram_sha256
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:648,1
    - Dst: sasl_server_mech_register_scram_sha256_plus
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:649,1
    - Dst: sasl_server_mech_register_oauthbearer
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:654,1
    - Dst: sasl_server_mech_register_xoauth2
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:657,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:663,1
    - Dst: sasl_server_mech_register_winbind_ntlm
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:665,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:670,1
    - Dst: sasl_server_mech_register_gssapi
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:672,1
    - Dst: sasl_server_mech_register_gss_spnego
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:673,1
    - Dst: sasl_server_mech_find
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:678,1
    - Dst: sasl_server_instance_unref
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:680,1
    - Dst: sasl_server_deinit
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:681,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:685,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:685,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:688,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:689,1
    - Dst: gss_dummy_add_principal
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:690,1
    - Dst: gss_dummy_kinit
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:691,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:698,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:699,1
    - Dst: sasl_server_request_create
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:704,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:714,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:716,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:717,1
    - Dst: dsasl_client_enable_channel_binding
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:719,1
    - Dst: fuzz_sasl_interact
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:723,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:726,1
    - Dst: sasl_server_request_destroy
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:727,1
    - Dst: sasl_server_instance_unref
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:729,1
    - Dst: sasl_server_deinit
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:730,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:733,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:734,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:736,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:737,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:740,1
    - Dst: gss_dummy_deinit
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:742,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 100
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 573
    functionDepth: 3
    functionLinenumber: 573
    functionLinenumberEnd: 744
    functionName: fuzz_sasl_run
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - gss_dummy_add_principal
    - sasl_server_mech_register_plain
    - strlen
    - fuzz_sasl_interact
    - sasl_server_mech_register_cram_md5
    - sasl_server_mech_register_anonymous
    - str_sanitize
    - pool_unref
    - t_strdup
    - sasl_server_mech_register_scram_sha1
    - sasl_server_mech_register_oauthbearer
    - gss_dummy_deinit
    - gss_dummy_kinit
    - sasl_server_mech_register_gssapi
    - i_stream_read_next_line
    - sasl_server_mech_register_login
    - sasl_server_request_destroy
    - sasl_server_init
    - sasl_server_request_create
    - i_zero
    - dsasl_client_enable_channel_binding
    - sasl_server_mech_register_gss_spnego
    - sasl_server_instance_create
    - sasl_server_deinit
    - sasl_server_mech_register_scram_sha256
    - sasl_server_mech_register_digest_md5
    - sasl_server_mech_register_scram_sha256_plus
    - i_assert
    - strcmp
    - pool_alloconly_create
    - dsasl_client_mech_find
    - e_debug
    - sasl_server_mech_register_scram_sha1_plus
    - sasl_server_mech_register_winbind_ntlm
    - sasl_server_mech_find
    - sasl_server_mech_register_otp
    - sasl_server_instance_unref
    - dsasl_client_new
    - dsasl_client_free
    - t_strdup_empty
    - sasl_server_mech_register_xoauth2
    linkageType: ''
    returnType: void
    signature: void fuzz_sasl_run(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:748,1
    - Dst: getenv
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:749,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:750,1
    - Dst: password_schemes_init
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:752,1
    - Dst: dsasl_clients_init
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:753,1
    - Dst: dsasl_client_mech_ntlm_init_dummy
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:755,1
    - Dst: dsasl_clients_init_gssapi
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:758,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:761,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:762,1
    - Dst: fuzz_sasl_run
      Src: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c:765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 746
    functionDepth: 4
    functionLinenumber: 746
    functionLinenumberEnd: 766
    functionName: FUZZ_BEGIN_DATA
    functionSourceFile: /src/dovecot/src/lib-sasl/fuzz-sasl-authentication.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_create
    - password_schemes_init
    - fuzz_sasl_run
    - getenv
    - dsasl_clients_init
    - io_loop_create
    - dsasl_clients_init_gssapi
    - i_stream_create_from_data
    - dsasl_client_mech_ntlm_init_dummy
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_DATA(const unsigned char *data, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:48,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:58,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:62,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:63,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - string_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 65
    functionName: value_append_escaped
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - strlen
    - str_append_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void value_append_escaped(string_t *dest, const void *src)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:69,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:82,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - in_p
    - element_r
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 93
    functionName: parse_list_element
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strdup_until
    linkageType: ''
    returnType: bool
    signature: bool parse_list_element(const char **in_p, const char **element_r)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:101,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:104,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:109,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:120,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:124,1
    - Dst: parse_list_element
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:127,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:128,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:135,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:140,1
    - Dst: str_to_ulong
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:146,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:154,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:155,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:162,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 4
    argNames:
    - dclient
    - key
    - value
    - error_r
    argTypes:
    - struct digest_md5_dsasl_client*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 169
    functionName: handle_challenge_field
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - str_to_ulong
    - strcasecmp
    - parse_list_element
    linkageType: ''
    returnType: bool
    signature: "bool handle_challenge_field(struct digest_md5_dsasl_client *dclient,\n\t\t
      \      const char *key, const char *value, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - ATTR_UNUSED
    - key
    - value
    - rspauth_r
    - error_r
    argTypes:
    - struct digest_md5_dsasl_client*
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 188
    functionName: handle_confirmation_field
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool handle_confirmation_field(struct digest_md5_dsasl_client *dclient
      ATTR_UNUSED,\n\t\t\t  const char *key, const char *value,\n\t\t\t  const char
      **rspauth_r, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:216,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:218,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:221,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:228,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - dclient
    - error_r
    argTypes:
    - struct digest_md5_dsasl_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 232
    functionName: mech_digest_md5_init
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - p_strdup_until
    - strrchr
    - p_strdup_printf
    - p_strdup
    linkageType: ''
    returnType: int
    signature: "int mech_digest_md5_init(struct digest_md5_dsasl_client *dclient,\n\t\t
      \    const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:267,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:267,1
    - Dst: auth_digest_parse_keyvalue
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:271,1
    - Dst: handle_challenge_field
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:274,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:276,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 4
    argNames:
    - dclient
    - input
    - input_len
    - error_r
    argTypes:
    - struct digest_md5_dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 300
    functionName: mech_digest_md5_input_first
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - t_strndup
    - handle_challenge_field
    - t_strdup_noconst
    - auth_digest_parse_keyvalue
    linkageType: ''
    returnType: int
    signature: "int mech_digest_md5_input_first(struct digest_md5_dsasl_client *dclient,\n\t\t\t
      \   const unsigned char *input, size_t input_len,\n\t\t\t    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:323,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:327,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:329,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:330,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:331,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:332,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:334,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:336,1
    - Dst: value_append_escaped
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:337,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:339,1
    - Dst: value_append_escaped
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:340,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:342,1
    - Dst: auth_digest_get_hash_a1_secret
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:349,1
    - Dst: auth_digest_get_hash_a1
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:354,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:356,1
    - Dst: auth_digest_get_client_response
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:359,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:363,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:364,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:365,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:367,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:368,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - dclient
    argTypes:
    - struct digest_md5_dsasl_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 373
    functionName: mech_digest_md5_output_first
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - random_fill
    - p_strdup
    - t_str_new
    - str_printfa
    - auth_digest_get_hash_a1_secret
    - str_append
    - base64_encode
    - auth_digest_get_hash_a1
    - auth_digest_get_client_response
    - value_append_escaped
    - buffer_create_from_data
    - buffer_append_c
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: string_t
    signature: 'string_t *

      mech_digest_md5_output_first(struct digest_md5_dsasl_client *dclient)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:401,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:401,1
    - Dst: auth_digest_parse_keyvalue
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:406,1
    - Dst: handle_confirmation_field
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:409,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:411,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:427,1
    - Dst: auth_digest_get_server_response
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:437,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:442,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 4
    argNames:
    - dclient
    - input
    - input_len
    - error_r
    argTypes:
    - struct digest_md5_dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 448
    functionName: mech_digest_md5_input_final
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - auth_digest_get_server_response
    - strlen
    - t_strdup_printf
    - t_strndup
    - mem_equals_timing_safe
    - handle_confirmation_field
    - t_strdup_noconst
    - auth_digest_parse_keyvalue
    linkageType: ''
    returnType: int
    signature: "int mech_digest_md5_input_final(struct digest_md5_dsasl_client *dclient,\n\t\t\t
      \   const unsigned char *input, size_t input_len,\n\t\t\t    const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:456,1
    - Dst: mech_digest_md5_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:463,1
    - Dst: mech_digest_md5_input_first
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:470,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:478,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:483,1
    - Dst: mech_digest_md5_input_final
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:486,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 450
    functionDepth: 4
    functionLinenumber: 450
    functionLinenumberEnd: 497
    functionName: mech_digest_md5_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - mech_digest_md5_input_final
    - container_of
    - i_unreached
    - mech_digest_md5_init
    - mech_digest_md5_input_first
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_digest_md5_input(struct dsasl_client
      *client,\n\t\t      const unsigned char *input, size_t input_len,\n\t\t      const
      char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:505,1
    - Dst: mech_digest_md5_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:510,1
    - Dst: mech_digest_md5_output_first
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:521,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:522,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:523,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:527,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c:531,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 4
    argNames:
    - client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 538
    functionName: mech_digest_md5_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-digest-md5.c
    functionUses: 0
    functionsReached:
    - container_of
    - str_data
    - str_len
    - i_unreached
    - mech_digest_md5_output_first
    - mech_digest_md5_init
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_digest_md5_output(struct dsasl_client
      *client,\n\t\t       const unsigned char **output_r, size_t *output_len_r,\n\t\t
      \      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_display_status
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:52,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:59,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:60,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:60,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:63,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:64,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 4
    argNames:
    - msg
    - entries
    - status_value
    - status_type
    argTypes:
    - string_t*
    - unsigned int*
    - OM_uint32
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 65
    functionName: mech_gssapi_error_append
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - gss_display_status
    - GSS_ERROR
    - str_sanitize
    - str_append
    - gss_release_buffer
    linkageType: ''
    returnType: void
    signature: "void mech_gssapi_error_append(string_t *msg, unsigned int *entries,\n\t\t\t
      OM_uint32 status_value, int status_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:71,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:74,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:75,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:76,1
    - Dst: mech_gssapi_error_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:79,1
    - Dst: mech_gssapi_error_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:82,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - description
    - major_status
    - minor_status
    argTypes:
    - char*
    - OM_uint32
    - OM_uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 85
    functionName: mech_gssapi_error
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_c
    - t_str_new
    - mech_gssapi_error_append
    linkageType: ''
    returnType: char
    signature: "char *\nmech_gssapi_error(const char *description, OM_uint32 major_status,\n\t\t
      \ OM_uint32 minor_status)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:104,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:105,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:106,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:107,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:109,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:110,1
    - Dst: gss_import_name
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:112,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:115,1
    - Dst: mech_gssapi_error
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:116,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:121,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 3
    argNames:
    - gclient
    - in_buf
    - error_r
    argTypes:
    - struct gssapi_sasl_client*
    - gss_buffer_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 126
    functionName: mech_gssapi_gs1_init
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - mech_gssapi_error
    - str_append_c
    - str_len
    - e_debug
    - GSS_ERROR
    - buffer_create_dynamic
    - gss_import_name
    - str_append
    - str_c_modifiable
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_gssapi_gs1_init(struct gssapi_sasl_client
      *gclient, gss_buffer_t in_buf,\n\t\t     const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:145,1
    - Dst: gss_init_sec_context
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:147,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:154,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:155,1
    - Dst: mech_gssapi_error
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:165,1
    - Dst: auth_gssapi_oid_equal
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:166,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:168,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:172,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:176,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - gclient
    - in_buf
    - out_buf
    - error_r
    argTypes:
    - struct gssapi_sasl_client*
    - gss_buffer_t
    - gss_buffer_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 128
    functionDepth: 3
    functionLinenumber: 128
    functionLinenumberEnd: 185
    functionName: mech_gssapi_sec_context
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - mech_gssapi_error
    - i_assert
    - auth_gssapi_oid_equal
    - i_unreached
    - e_debug
    - GSS_ERROR
    - gss_release_buffer
    - gss_init_sec_context
    linkageType: ''
    returnType: int
    signature: "int mech_gssapi_sec_context(struct gssapi_sasl_client *gclient,\n\t\t\tgss_buffer_t
      in_buf, gss_buffer_t out_buf,\n\t\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mech_gssapi_sec_context
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:195,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:199,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - gclient
    - in_buf
    - error_r
    argTypes:
    - struct gssapi_sasl_client*
    - gss_buffer_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 206
    functionName: mech_gssapi_gs1_sec_context
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - gss_release_buffer
    - mech_gssapi_sec_context
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_gssapi_gs1_sec_context(struct gssapi_sasl_client
      *gclient,\n\t\t\t    gss_buffer_t in_buf, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:221,1
    - Dst: gss_unwrap
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:224,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:226,1
    - Dst: mech_gssapi_error
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:227,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:235,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:241,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:250,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:251,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:252,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:253,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:254,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:256,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:260,1
    - Dst: gss_wrap
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:263,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:266,1
    - Dst: mech_gssapi_error
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:267,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:273,1
    - Dst: buffer_clear
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:275,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:276,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:277,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 3
    argNames:
    - gclient
    - in_buf
    - error_r
    argTypes:
    - struct gssapi_sasl_client*
    - gss_buffer_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 208
    functionDepth: 3
    functionLinenumber: 208
    functionLinenumberEnd: 281
    functionName: mech_gssapi_gs1_unwrap
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - mech_gssapi_error
    - e_debug
    - GSS_ERROR
    - strlen
    - buffer_clear
    - t_buffer_create
    - buffer_get_modifiable_data
    - gss_wrap
    - buffer_append_c
    - gss_release_buffer
    - gss_unwrap
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_gssapi_gs1_unwrap(struct gssapi_sasl_client
      *gclient,\n\t\t       gss_buffer_t in_buf, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:289,1
    - Dst: mech_gssapi_gs1_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:298,1
    - Dst: mech_gssapi_gs1_sec_context
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:301,1
    - Dst: mech_gssapi_gs1_unwrap
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:304,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:309,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 283
    functionDepth: 4
    functionLinenumber: 283
    functionLinenumberEnd: 312
    functionName: mech_gssapi_gs1_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - mech_gssapi_gs1_init
    - container_of
    - i_unreached
    - mech_gssapi_gs1_unwrap
    - mech_gssapi_gs1_sec_context
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_gssapi_gs1_input(struct dsasl_client
      *client,\n\t\t      const unsigned char *input, size_t input_len,\n\t\t      const
      char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:320,1
    - Dst: mech_gssapi_gs1_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:326,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:329,1
    - Dst: mech_gssapi_gs1_sec_context
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:331,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:341,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 314
    functionDepth: 4
    functionLinenumber: 314
    functionLinenumberEnd: 347
    functionName: mech_gssapi_gs1_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - mech_gssapi_gs1_init
    - container_of
    - i_unreached
    - i_assert
    - mech_gssapi_gs1_sec_context
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_gssapi_gs1_output(struct dsasl_client
      *client,\n\t\t       const unsigned char **output_r, size_t *output_len_r,\n\t\t
      \      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:352,1
    - Dst: gss_delete_sec_context
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:356,1
    - Dst: gss_release_name
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:360,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:361,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct dsasl_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 362
    functionName: mech_gssapi_free
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - gss_delete_sec_context
    - buffer_free
    - container_of
    - gss_release_name
    linkageType: ''
    returnType: void
    signature: void mech_gssapi_free(struct dsasl_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:392,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c:393,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 394
    functionName: dsasl_clients_init_gssapi
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-gssapi.c
    functionUses: 2
    functionsReached:
    - dsasl_client_mech_register
    linkageType: ''
    returnType: void
    signature: void dsasl_clients_init_gssapi(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:29,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:37,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:44,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:45,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:46,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:49,1
    - Dst: sasl_server_request_set_authzid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:51,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:53,1
    - Dst: sasl_server_request_verify_plain
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:55,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:61,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:61,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 62
    functionName: mech_plain_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c
    functionUses: 0
    functionsReached:
    - strcmp
    - e_info
    - sasl_server_request_set_authid
    - p_strndup
    - sasl_server_request_set_authzid
    - strlen
    - sasl_server_request_failure
    - sasl_server_request_verify_plain
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void mech_plain_auth_continue(struct sasl_server_mech_request *request,\n\t\t\t
      const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: sasl_server_mech_register_plain
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-plain.c
    functionUses: 2
    functionsReached:
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_register_plain(struct sasl_server_instance *sinst)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:24,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:40,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:42,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:47,1
    - Dst: json_istream_read
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:51,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:52,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:55,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:56,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:57,1
    - Dst: json_node_is_number
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:58,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:62,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:64,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:66,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:70,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:72,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:83,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 4
    argNames:
    - _client
    - input
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 18
    functionDepth: 8
    functionLinenumber: 18
    functionLinenumberEnd: 88
    functionName: mech_oauthbearer_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - container_of
    - p_strdup
    - json_istream_create_object
    - json_istream_read
    - json_istream_skip
    - json_node_get_str
    - t_strdup_printf
    - json_node_is_number
    - json_istream_finish
    - i_stream_unref
    - i_stream_create_from_data
    - json_node_is_string
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_oauthbearer_input(struct dsasl_client
      *_client,\n\t\t       const unsigned char *input, size_t input_len,\n\t\t       const
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:96,1
    - Dst: sasl_oauth2_kvpair_check_value
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:107,1
    - Dst: sasl_oauth2_kvpair_check_value
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:112,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:121,1
    - Dst: auth_gs2_header_encode
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:122,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:123,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:125,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:127,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:128,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:129,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:131,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:132,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 4
    argNames:
    - _client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 135
    functionName: mech_oauthbearer_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - container_of
    - str_append_c
    - str_data
    - str_len
    - auth_gs2_header_encode
    - sasl_oauth2_kvpair_check_value
    - str_new
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_oauthbearer_output(struct dsasl_client
      *_client,\n\t\t\tconst unsigned char **output_r, size_t *output_len_r,\n\t\t\tconst
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:154,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:159,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:161,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:162,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:163,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:165,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - _client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 169
    functionName: mech_xoauth2_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - str_append_c
    - str_data
    - str_len
    - str_new
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_xoauth2_output(struct dsasl_client *_client,\n\t\t
      \   const unsigned char **output_r, size_t *output_len_r,\n\t\t    const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:177,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:179,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - _client
    - key
    - value_r
    - ATTR_UNUSED
    argTypes:
    - struct dsasl_client*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 186
    functionName: mech_oauthbearer_get_result
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-oauthbearer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - container_of
    linkageType: ''
    returnType: int
    signature: "int mech_oauthbearer_get_result(struct dsasl_client *_client, const
      char *key,\n\t\t\t    const char **value_r,\n\t\t\t    const char **error_r
      ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:39,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:42,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:43,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct otp_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 50
    functionName: otp_try_lock
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - i_assert
    - container_of
    - hash_table_insert
    linkageType: ''
    returnType: bool
    signature: bool otp_try_lock(struct otp_auth_request *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:62,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct otp_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: otp_unlock
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - hash_table_remove
    linkageType: ''
    returnType: void
    signature: void otp_unlock(struct otp_auth_request *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: otp_parse_dbentry
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:78,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:78,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:80,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:81,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:86,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:87,1
    - Dst: otp_try_lock
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:91,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:92,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:93,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:97,1
    - Dst: digest_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:98,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:101,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - request
    - credentials
    - size
    argTypes:
    - struct otp_auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 102
    functionName: otp_send_challenge
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - otp_parse_dbentry
    - sasl_server_request_output
    - strlen
    - t_strndup
    - e_error
    - otp_try_lock
    - sasl_server_request_failure
    - digest_name
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void otp_send_challenge(struct otp_auth_request *request,\n\t\t   const
      unsigned char *credentials, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:109,1
    - Dst: otp_send_challenge
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:114,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:118,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - auth_request
    - result
    argTypes:
    - struct sasl_server_mech_request*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 124
    functionName: otp_credentials_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_internal_failure
    - container_of
    - otp_send_challenge
    - sasl_server_request_failure
    linkageType: ''
    returnType: void
    signature: "void otp_credentials_callback(struct sasl_server_mech_request *auth_request,\n\t\t\t
      const struct sasl_passdb_result *result)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:138,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:142,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:144,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:148,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:149,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:153,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:156,1
    - Dst: sasl_server_request_lookup_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct otp_auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 162
    functionName: mech_otp_auth_phase1
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - e_info
    - sasl_server_request_set_authid
    - sasl_server_request_lookup_credentials
    - memchr
    - t_strndup
    - sasl_server_request_failure
    linkageType: ''
    returnType: void
    signature: "void mech_otp_auth_phase1(struct otp_auth_request *request,\n\t\t
      \    const unsigned char *data, size_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:169,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:173,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:175,1
    - Dst: otp_unlock
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - auth_request
    - result
    argTypes:
    - struct sasl_server_mech_request*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: otp_set_credentials_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - otp_unlock
    - container_of
    - sasl_server_request_internal_failure
    - sasl_server_request_success
    linkageType: ''
    returnType: void
    signature: "void otp_set_credentials_callback(struct sasl_server_mech_request
      *auth_request,\n\t\t\t     const struct sasl_passdb_result *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: otp_parse_response
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:188,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:190,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:191,1
    - Dst: otp_unlock
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:192,1
    - Dst: otp_next_hash
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:196,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:198,1
    - Dst: sasl_server_request_password_mismatch
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:200,1
    - Dst: otp_unlock
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:201,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:205,1
    - Dst: sasl_server_request_set_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:207,1
    - Dst: otp_print_dbentry
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - request
    - data
    - hex
    argTypes:
    - struct otp_auth_request*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 210
    functionName: mech_otp_verify
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - otp_unlock
    - e_info
    - otp_parse_response
    - sasl_server_request_password_mismatch
    - otp_print_dbentry
    - sasl_server_request_set_credentials
    - otp_next_hash
    - sasl_server_request_failure
    - memcmp
    linkageType: ''
    returnType: void
    signature: void mech_otp_verify(struct otp_auth_request *request, const char *data,
      bool hex)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: otp_parse_init_response
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:222,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:224,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:225,1
    - Dst: otp_unlock
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:226,1
    - Dst: otp_next_hash
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:230,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:232,1
    - Dst: sasl_server_request_password_mismatch
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:234,1
    - Dst: otp_unlock
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:235,1
    - Dst: sasl_server_request_set_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:239,1
    - Dst: otp_print_dbentry
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - request
    - data
    - hex
    argTypes:
    - struct otp_auth_request*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 242
    functionName: mech_otp_verify_init
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - e_info
    - otp_unlock
    - sasl_server_request_password_mismatch
    - otp_print_dbentry
    - otp_parse_init_response
    - sasl_server_request_set_credentials
    - otp_next_hash
    - sasl_server_request_failure
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void mech_otp_verify_init(struct otp_auth_request *request, const
      char *data,\n\t\t     bool hex)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:249,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:251,1
    - Dst: mech_otp_verify
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:252,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:253,1
    - Dst: mech_otp_verify
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:254,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:255,1
    - Dst: mech_otp_verify_init
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:256,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:257,1
    - Dst: mech_otp_verify_init
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:258,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:260,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:261,1
    - Dst: otp_unlock
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:262,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct otp_auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 244
    functionDepth: 3
    functionLinenumber: 244
    functionLinenumberEnd: 264
    functionName: mech_otp_auth_phase2
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - e_info
    - otp_unlock
    - str_begins
    - mech_otp_verify
    - t_strndup
    - sasl_server_request_failure
    - mech_otp_verify_init
    linkageType: ''
    returnType: void
    signature: "void mech_otp_auth_phase2(struct otp_auth_request *request,\n\t\t
      \    const unsigned char *data, size_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:271,1
    - Dst: mech_otp_auth_phase1
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:275,1
    - Dst: mech_otp_auth_phase2
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - auth_request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 266
    functionDepth: 4
    functionLinenumber: 266
    functionLinenumberEnd: 278
    functionName: mech_otp_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - mech_otp_auth_phase1
    - container_of
    - mech_otp_auth_phase2
    linkageType: ''
    returnType: void
    signature: "void mech_otp_auth_continue(struct sasl_server_mech_request *auth_request,\n\t\t
      \      const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - pool
    argTypes:
    - struct sasl_server_mech*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 289
    functionName: mech_otp_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: 'struct sasl_server_mech_request *

      mech_otp_auth_new(const struct sasl_server_mech *mech ATTR_UNUSED, pool_t pool)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:294,1
    - Dst: otp_unlock
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 298
    functionName: mech_otp_auth_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - otp_unlock
    - container_of
    linkageType: ''
    returnType: void
    signature: void mech_otp_auth_free(struct sasl_server_mech_request *auth_request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:308,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: mech_otp_data_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - p_new
    - hash_table_create
    linkageType: ''
    returnType: struct sasl_server_mech_data
    signature: struct sasl_server_mech_data *mech_otp_data_new(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:318,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mdata
    argTypes:
    - struct sasl_server_mech_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 321
    functionName: mech_otp_data_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 0
    functionsReached:
    - container_of
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void mech_otp_data_free(struct sasl_server_mech_data *mdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 346
    functionName: sasl_server_mech_register_otp
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-otp.c
    functionUses: 2
    functionsReached:
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_register_otp(struct sasl_server_instance *sinst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: krb5_boolean2bool
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: krb5_boolean2bool(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gss_display_status
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:71,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:75,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:76,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - request
    - status_value
    - status_type
    - description
    argTypes:
    - struct gssapi_auth_request*
    - OM_uint32
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 80
    functionName: mech_gssapi_log_error
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - gss_display_status
    - e_info
    - str_sanitize
    - gss_release_buffer
    linkageType: ''
    returnType: void
    signature: "void mech_gssapi_log_error(struct gssapi_auth_request *request,\n\t\t
      \     OM_uint32 status_value, int status_type,\n\t\t      const char *description)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - pool
    argTypes:
    - struct sasl_server_mech*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 93
    functionName: mech_gssapi_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: "struct sasl_server_mech_request *\nmech_gssapi_auth_new(const struct
      sasl_server_mech *mech ATTR_UNUSED,\n\t\t     pool_t pool)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:101,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:108,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:109,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:114,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:115,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:116,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:117,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:119,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:120,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:122,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:123,1
    - Dst: gss_import_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:125,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:128,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:130,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:131,1
    - Dst: gss_acquire_cred
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:136,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:139,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:140,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:142,1
    - Dst: gss_release_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:147,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - request
    - ret_r
    argTypes:
    - struct gssapi_auth_request*
    - gss_cred_id_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 149
    functionName: obtain_service_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - container_of
    - str_append_c
    - gss_release_name
    - str_len
    - e_debug
    - GSS_ERROR
    - mech_gssapi_log_error
    - gss_import_name
    - gss_acquire_cred
    - str_append
    - str_free
    - str_c_modifiable
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 obtain_service_credentials(struct gssapi_auth_request *request,\n\t\t\t
      \  gss_cred_id_t *ret_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gss_import_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:160,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:162,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - request
    - str
    - len
    argTypes:
    - struct gssapi_auth_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 168
    functionName: import_name
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 3
    functionsReached:
    - gss_import_name
    - GSS_ERROR
    - mech_gssapi_log_error
    linkageType: ''
    returnType: gss_name_t
    signature: gss_name_t import_name(struct gssapi_auth_request *request, void *str,
      size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gss_duplicate_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:176,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:177,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - request
    - old
    argTypes:
    - struct gssapi_auth_request*
    - gss_name_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 183
    functionName: duplicate_name
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 1
    functionsReached:
    - GSS_ERROR
    - mech_gssapi_log_error
    - gss_duplicate_name
    linkageType: ''
    returnType: gss_name_t
    signature: gss_name_t duplicate_name(struct gssapi_auth_request *request, gss_name_t
      old)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 199
    functionName: data_has_nuls
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool data_has_nuls(const void *data, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_display_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:209,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:212,1
    - Dst: data_has_nuls
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:216,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:217,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:218,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:221,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - request
    - name
    - name_type_r
    - display_name_r
    argTypes:
    - struct gssapi_auth_request*
    - gss_name_t
    - gss_OID*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 224
    functionName: get_display_name
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 1
    functionsReached:
    - gss_display_name
    - e_info
    - mech_gssapi_log_error
    - data_has_nuls
    - t_strndup
    - gss_release_buffer
    linkageType: ''
    returnType: int
    signature: "int get_display_name(struct gssapi_auth_request *request, gss_name_t
      name,\n\t\t gss_OID *name_type_r, const char **display_name_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: gss_accept_sec_context
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:238,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:252,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:253,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:255,1
    - Dst: auth_gssapi_oid_equal
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:262,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:264,1
    - Dst: get_display_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:267,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:270,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:276,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:281,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:286,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:293,1
    - Dst: mech_gssapi_wrap
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:299,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:302,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - request
    - inbuf
    argTypes:
    - struct gssapi_auth_request*
    - gss_buffer_desc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 304
    functionName: mech_gssapi_sec_context
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 1
    functionsReached:
    - sasl_server_request_output
    - auth_gssapi_oid_equal
    - e_info
    - sasl_server_request_set_authid
    - e_debug
    - GSS_ERROR
    - mech_gssapi_log_error
    - mech_gssapi_wrap
    - e_error
    - get_display_name
    - gss_release_buffer
    - gss_accept_sec_context
    linkageType: ''
    returnType: int
    signature: "int mech_gssapi_sec_context(struct gssapi_auth_request *request,\n\t\t\tgss_buffer_desc
      inbuf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gss_wrap
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:327,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:330,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:331,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:333,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:338,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:340,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - request
    - inbuf
    argTypes:
    - struct gssapi_auth_request*
    - gss_buffer_desc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 306
    functionDepth: 2
    functionLinenumber: 306
    functionLinenumberEnd: 345
    functionName: mech_gssapi_wrap
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 1
    functionsReached:
    - sasl_server_request_output
    - e_debug
    - GSS_ERROR
    - mech_gssapi_log_error
    - gss_wrap
    - gss_release_buffer
    linkageType: ''
    returnType: int
    signature: int mech_gssapi_wrap(struct gssapi_auth_request *request, gss_buffer_desc
      inbuf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_get_extra_field
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:353,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:357,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:359,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - request
    - name
    argTypes:
    - struct gssapi_auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 366
    functionName: k5_principal_is_authorized
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - t_strsplit_spaces
    - e_debug
    - strcmp
    - sasl_server_request_get_extra_field
    linkageType: ''
    returnType: bool
    signature: bool k5_principal_is_authorized(struct gssapi_auth_request *request,
      const char *name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_display_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:382,1
    - Dst: auth_gssapi_oid_equal
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:386,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:388,1
    - Dst: krb5_init_context
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:393,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:395,1
    - Dst: krb5_parse_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:399,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:404,1
    - Dst: k5_principal_is_authorized
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:409,1
    - Dst: krb5_boolean2bool
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:415,1
    - Dst: krb5_kuserok
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:416,1
    - Dst: krb5_free_principal
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:419,1
    - Dst: krb5_free_context
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:421,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - request
    - name
    - login_user
    - check_name_type
    argTypes:
    - struct gssapi_auth_request*
    - gss_name_t
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 423
    functionName: mech_gssapi_krb5_userok
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - krb5_boolean2bool
    - k5_principal_is_authorized
    - auth_gssapi_oid_equal
    - e_info
    - krb5_kuserok
    - krb5_init_context
    - e_error
    - krb5_parse_name
    - krb5_free_principal
    - krb5_free_context
    - get_display_name
    linkageType: ''
    returnType: bool
    signature: "bool mech_gssapi_krb5_userok(struct gssapi_auth_request *request,\n\t\t\tgss_name_t
      name, const char *login_user,\n\t\t\tbool check_name_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gss_compare_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:433,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:437,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:438,1
    - Dst: mech_gssapi_krb5_userok
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:446,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:448,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - request
    - login_user
    argTypes:
    - struct gssapi_auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 425
    functionDepth: 3
    functionLinenumber: 425
    functionLinenumberEnd: 454
    functionName: mech_gssapi_userok
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - e_info
    - mech_gssapi_krb5_userok
    - GSS_ERROR
    - gss_compare_name
    - mech_gssapi_log_error
    linkageType: ''
    returnType: int
    signature: int mech_gssapi_userok(struct gssapi_auth_request *request, const char
      *login_user)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:461,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:469,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:474,1
    - Dst: mech_gssapi_userok
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:483,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:484,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:486,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - auth_request
    - result
    argTypes:
    - struct sasl_server_mech_request*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 456
    functionDepth: 4
    functionLinenumber: 456
    functionLinenumberEnd: 487
    functionName: gssapi_credentials_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - container_of
    - sasl_server_request_internal_failure
    - mech_gssapi_userok
    - sasl_server_request_failure
    - sasl_server_request_success
    linkageType: ''
    returnType: void
    signature: "void gssapi_credentials_callback(struct sasl_server_mech_request *auth_request,\n\t\t\t
      \   const struct sasl_passdb_result *result)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gss_unwrap
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:499,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:502,1
    - Dst: mech_gssapi_log_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:503,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:511,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:512,1
    - Dst: data_has_nuls
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:520,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:521,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:522,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:526,1
    - Dst: import_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:527,1
    - Dst: duplicate_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:529,1
    - Dst: get_display_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:531,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:533,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:539,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:540,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:549,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:552,1
    - Dst: sasl_server_request_lookup_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:558,1
    - Dst: gss_release_buffer
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:560,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 2
    argNames:
    - request
    - inbuf
    argTypes:
    - struct gssapi_auth_request*
    - gss_buffer_desc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 562
    functionName: mech_gssapi_unwrap
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - e_info
    - sasl_server_request_set_authid
    - p_strndup
    - sasl_server_request_lookup_credentials
    - GSS_ERROR
    - mech_gssapi_log_error
    - data_has_nuls
    - e_error
    - duplicate_name
    - get_display_name
    - gss_release_buffer
    - gss_unwrap
    - import_name
    linkageType: ''
    returnType: int
    signature: int mech_gssapi_unwrap(struct gssapi_auth_request *request, gss_buffer_desc
      inbuf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:569,1
    - Dst: mech_gssapi_sec_context
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:579,1
    - Dst: mech_gssapi_wrap
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:582,1
    - Dst: mech_gssapi_unwrap
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:585,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:588,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:591,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - auth_request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 564
    functionDepth: 4
    functionLinenumber: 564
    functionLinenumberEnd: 592
    functionName: mech_gssapi_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_unreached
    - mech_gssapi_wrap
    - mech_gssapi_unwrap
    - sasl_server_request_failure
    - mech_gssapi_sec_context
    linkageType: ''
    returnType: void
    signature: "void mech_gssapi_auth_continue(struct sasl_server_mech_request *auth_request,\n\t\t\t
      \ const unsigned char *data, size_t data_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:599,1
    - Dst: obtain_service_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:604,1
    - Dst: GSS_ERROR
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:606,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:607,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:617,1
    - Dst: mech_gssapi_auth_continue
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:619,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - auth_request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 594
    functionDepth: 5
    functionLinenumber: 594
    functionLinenumberEnd: 621
    functionName: mech_gssapi_auth_initial
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_output
    - container_of
    - sasl_server_request_internal_failure
    - GSS_ERROR
    - obtain_service_credentials
    - mech_gssapi_auth_continue
    linkageType: ''
    returnType: void
    signature: "void mech_gssapi_auth_initial(struct sasl_server_mech_request *auth_request,\n\t\t\t
      const unsigned char *data, size_t data_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:627,1
    - Dst: gss_delete_sec_context
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:632,1
    - Dst: gss_release_cred
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:637,1
    - Dst: gss_release_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:639,1
    - Dst: gss_release_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:641,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 642
    functionName: mech_gssapi_auth_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - gss_delete_sec_context
    - container_of
    - gss_release_name
    - gss_release_cred
    linkageType: ''
    returnType: void
    signature: void mech_gssapi_auth_free(struct sasl_server_mech_request *auth_request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 651
    functionName: mech_gssapi_mech_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: struct sasl_server_mech *mech_gssapi_mech_new(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:691,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:693,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:694,1
    - Dst: env_put
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:700,1
    - Dst: gsskrb5_register_acceptor_identity
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:702,1
    - Dst: krb5_gss_register_acceptor_identity
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:704,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - sinst
    - mech_def
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    - struct sasl_server_gssapi_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 707
    functionName: mech_gssapi_register
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - env_put
    - krb5_gss_register_acceptor_identity
    - p_strdup
    - container_of
    - gsskrb5_register_acceptor_identity
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: "void mech_gssapi_register(struct sasl_server_instance *sinst,\n\t\t
      \    const struct sasl_server_mech_def *mech_def,\n\t\t     const struct sasl_server_gssapi_settings
      *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mech_gssapi_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sinst
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_gssapi_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 714
    functionName: sasl_server_mech_register_gssapi
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 2
    functionsReached:
    - mech_gssapi_register
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_gssapi(\n\tstruct sasl_server_instance
      *sinst,\n\tconst struct sasl_server_gssapi_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_unregister
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 719
    functionName: sasl_server_mech_unregister_gssapi
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_unregister
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_unregister_gssapi(struct sasl_server_instance
      *sinst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mech_gssapi_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sinst
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_gssapi_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 726
    functionName: sasl_server_mech_register_gss_spnego
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 2
    functionsReached:
    - mech_gssapi_register
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_gss_spnego(\n\tstruct sasl_server_instance
      *sinst,\n\tconst struct sasl_server_gssapi_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_unregister
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c:730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 731
    functionName: sasl_server_mech_unregister_gss_spnego
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_unregister
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_unregister_gss_spnego(struct sasl_server_instance
      *sinst)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - _client
    - ATTR_UNUSED
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 29
    functionName: mech_external_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-external.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_external_input(struct dsasl_client *_client,\n\t\t
      \   const unsigned char *input ATTR_UNUSED, size_t input_len,\n\t\t    const
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-external.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - _client
    - output_r
    - output_len_r
    - ATTR_UNUSED
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 51
    functionName: mech_external_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-external.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_external_output(struct dsasl_client
      *_client,\n\t\t     const unsigned char **output_r, size_t *output_len_r,\n\t\t
      \    const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:29,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:30,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:31,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:32,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:33,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:35,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:41,1
    - Dst: dsasl_client_set_parameter
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:41,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:45,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:46,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:46,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:48,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:49,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:49,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:51,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:52,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:55,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:55,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:56,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:56,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:57,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:58,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:58,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:61,1
    - Dst: dsasl_client_get_result
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:61,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:64,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:67,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:69,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:70,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:71,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:72,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:73,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:73,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:74,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:76,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:82,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:83,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:83,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:84,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:85,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:88,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:91,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:92,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:92,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:93,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:94,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:97,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:98,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:100,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:102,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:102,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:103,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:104,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 26
    functionDepth: 3
    functionLinenumber: 26
    functionLinenumberEnd: 107
    functionName: test_sasl_client_login
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-client.c
    functionUses: 0
    functionsReached:
    - dsasl_client_mech_find
    - t_str_new
    - dsasl_client_set_parameter
    - str_c
    - str_append_data
    - test_assert_strcmp
    - dsasl_client_output
    - test_end
    - dsasl_client_new
    - str_truncate
    - test_assert
    - dsasl_client_input
    - str_append
    - dsasl_client_get_result
    - dsasl_client_free
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sasl_client_login(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:112,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:113,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:114,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:121,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:122,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:126,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:126,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:126,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:129,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:131,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:134,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:135,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:140,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:140,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:141,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:143,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:147,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:149,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:149,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:150,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:152,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:155,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:156,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:157,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:158,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:159,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:159,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:160,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:162,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:165,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:168,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:169,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:169,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:170,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:171,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:174,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:177,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:178,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:178,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:179,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:180,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:183,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:187,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:187,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:188,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:189,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 192
    functionName: test_sasl_client_plain
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-client.c
    functionUses: 0
    functionsReached:
    - dsasl_client_mech_find
    - I_MIN
    - test_assert_strcmp
    - dsasl_client_output
    - test_end
    - dsasl_client_new
    - test_assert
    - dsasl_client_input
    - memcmp
    - dsasl_client_free
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sasl_client_plain(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:197,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:199,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:200,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:206,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:207,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:210,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:211,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:211,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:211,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:213,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:214,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:217,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:219,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:219,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:220,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:220,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:223,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:224,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:224,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:225,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:227,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:230,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:234,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:234,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:235,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:236,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 239
    functionName: test_sasl_client_external
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-client.c
    functionUses: 0
    functionsReached:
    - dsasl_client_mech_find
    - I_MIN
    - test_assert_strcmp
    - dsasl_client_output
    - test_end
    - dsasl_client_new
    - test_assert
    - dsasl_client_input
    - memcmp
    - dsasl_client_free
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sasl_client_external(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:245,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:246,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:247,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:248,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:249,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:255,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:255,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:256,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:257,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:257,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:263,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:263,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:264,1
    - Dst: dsasl_client_get_result
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:264,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:265,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:267,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:268,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:274,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:277,1
    - Dst: dsasl_client_set_parameter
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:279,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:279,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:280,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:281,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:288,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:289,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:289,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:290,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:293,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:295,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:297,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:298,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:298,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:299,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:299,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:300,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:301,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:301,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:302,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:303,1
    - Dst: dsasl_client_get_result
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:303,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:304,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:306,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:309,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:310,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:312,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:312,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:313,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:313,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:314,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:315,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:318,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:321,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:321,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:322,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:322,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:323,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:324,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:327,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:328,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:331,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:331,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:332,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:333,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 336
    functionName: test_sasl_client_oauthbearer
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-client.c
    functionUses: 0
    functionsReached:
    - dsasl_client_mech_find
    - t_str_new
    - dsasl_client_set_parameter
    - str_append
    - I_MIN
    - test_assert_strcmp
    - dsasl_client_output
    - test_end
    - dsasl_client_new
    - test_assert
    - dsasl_client_input
    - memcmp
    - dsasl_client_get_result
    - dsasl_client_free
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sasl_client_oauthbearer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:341,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:342,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:343,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:344,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:345,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:347,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:351,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:351,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:352,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:352,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:353,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:353,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:357,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:358,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:358,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:358,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:360,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:361,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:363,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:365,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:365,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:366,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:366,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:367,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:367,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:368,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:369,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:369,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:370,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:372,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:375,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:376,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:378,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:379,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:379,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:380,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:381,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:384,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:387,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:387,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:388,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:388,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:389,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:390,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:393,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:394,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:397,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:397,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:398,1
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:399,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 338
    functionDepth: 3
    functionLinenumber: 338
    functionLinenumberEnd: 402
    functionName: test_sasl_client_xoauth2
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-client.c
    functionUses: 0
    functionsReached:
    - dsasl_client_mech_find
    - t_str_new
    - str_append
    - I_MIN
    - test_assert_strcmp
    - dsasl_client_output
    - test_end
    - dsasl_client_new
    - test_assert
    - dsasl_client_input
    - memcmp
    - dsasl_client_free
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sasl_client_xoauth2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_clients_init
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:414,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:415,1
    - Dst: dsasl_clients_deinit
      Src: /src/dovecot/src/lib-sasl/test-sasl-client.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 404
    functionDepth: 7
    functionLinenumber: 404
    functionLinenumberEnd: 418
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-client.c
    functionUses: 9
    functionsReached:
    - test_run
    - dsasl_clients_init
    - dsasl_clients_deinit
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mech
    argTypes:
    - struct sasl_server_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: sasl_server_mech_get_name
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *sasl_server_mech_get_name(const struct sasl_server_mech *mech)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mech
    argTypes:
    - struct sasl_server_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 21
    functionName: sasl_server_mech_get_security_flags
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum sasl_mech_security_flags
    signature: enum sasl_mech_security_flags sasl_server_mech_get_security_flags(const
      struct sasl_server_mech *mech)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mech
    argTypes:
    - struct sasl_server_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: sasl_server_mech_get_passdb_need
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum sasl_mech_passdb_need
    signature: enum sasl_mech_passdb_need sasl_server_mech_get_passdb_need(const struct
      sasl_server_mech *mech)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:40,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:43,1
    - Dst: struct sasl_server_mech*::def::funcs::auth_continue
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - mreq
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 46
    functionName: sasl_server_mech_generic_auth_initial
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_output
    - i_assert
    - struct sasl_server_mech*::def::funcs::auth_continue
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_generic_auth_initial(\n\tstruct sasl_server_mech_request
      *mreq,\n\tconst unsigned char *data, size_t data_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:54,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:57,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - request
    - result
    argTypes:
    - struct sasl_server_mech_request*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 63
    functionName: sasl_server_mech_plain_verify_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_internal_failure
    - sasl_server_request_failure
    - sasl_server_request_success
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_plain_verify_callback(\n\tstruct sasl_server_mech_request
      *request,\n\tconst struct sasl_passdb_result *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct sasl_server_mech_def*::funcs::data_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - server
    - mech_dreg
    argTypes:
    - struct sasl_server*
    - struct sasl_server_mech_def_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 87
    functionName: sasl_server_mech_data_init
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - struct sasl_server_mech_def*::funcs::data_new
    linkageType: ''
    returnType: struct sasl_server_mech_data
    signature: "struct sasl_server_mech_data *\nsasl_server_mech_data_init(struct
      sasl_server *server,\n\t\t\t   struct sasl_server_mech_def_reg *mech_dreg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct sasl_server_mech_data*::def::funcs::data_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mech_dreg
    argTypes:
    - struct sasl_server_mech_def_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 101
    functionName: sasl_server_mech_data_deinit
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - struct sasl_server_mech_data*::def::funcs::data_free
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_data_deinit(struct sasl_server_mech_def_reg *mech_dreg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - server
    - def
    argTypes:
    - struct sasl_server*
    - struct sasl_server_mech_def*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 121
    functionName: sasl_server_mech_find_def
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct sasl_server_mech_def_reg
    signature: "struct sasl_server_mech_def_reg *\nsasl_server_mech_find_def(struct
      sasl_server *server,\n\t\t\t  const struct sasl_server_mech_def *def)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - server
    - mech_name
    argTypes:
    - struct sasl_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 137
    functionName: sasl_server_mech_find_def_by_name
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct sasl_server_mech_def_reg
    signature: "struct sasl_server_mech_def_reg *\nsasl_server_mech_find_def_by_name(struct
      sasl_server *server,\n\t\t\t\t  const char *mech_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - def
    - set
    - new_set
    argTypes:
    - struct sasl_server_mech_def*
    - struct sasl_server_mech_settings*
    - struct sasl_server_mech_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 155
    functionName: sasl_server_mech_def_merge_settings
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_def_merge_settings(\n\tconst struct sasl_server_mech_def
      *def,\n\tstruct sasl_server_mech_settings *set,\n\tconst struct sasl_server_mech_settings
      *new_set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:165,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:165,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:165,1
    - Dst: sasl_server_mech_find_def
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:169,1
    - Dst: sasl_server_mech_def_merge_settings
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:172,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:176,1
    - Dst: sasl_server_mech_find_def_by_name
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:176,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:178,1
    - Dst: sasl_server_mech_def_merge_settings
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:181,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - server
    - def
    - set
    argTypes:
    - struct sasl_server*
    - struct sasl_server_mech_def*
    - struct sasl_server_mech_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 185
    functionName: sasl_server_mech_register_def
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - p_new
    - DLLIST2_APPEND
    - sasl_server_mech_find_def
    - sasl_server_mech_def_merge_settings
    - i_assert
    - sasl_server_mech_find_def_by_name
    linkageType: ''
    returnType: struct sasl_server_mech_def_reg
    signature: "struct sasl_server_mech_def_reg *\nsasl_server_mech_register_def(struct
      sasl_server *server,\n\t\t\t      const struct sasl_server_mech_def *def,\n\t\t\t
      \     const struct sasl_server_mech_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:191,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sinst
    - name
    argTypes:
    - struct sasl_server_instance*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 199
    functionName: sasl_server_mech_reg_find
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    linkageType: ''
    returnType: struct sasl_server_mech_reg
    signature: 'struct sasl_server_mech_reg *

      sasl_server_mech_reg_find(struct sasl_server_instance *sinst, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct sasl_server_mech_def*::funcs::mech_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:208,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:210,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:215,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:216,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:217,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:218,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - sinst
    - def
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 221
    functionName: sasl_server_mech_create
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_new
    - struct sasl_server_mech_def*::funcs::mech_new
    - event_set_append_log_prefix
    - t_strdup_printf
    - t_str_lcase
    - event_drop_parent_log_prefixes
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: "struct sasl_server_mech *\nsasl_server_mech_create(struct sasl_server_instance
      *sinst,\n\t\t\tconst struct sasl_server_mech_def *def)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mech
    argTypes:
    - struct sasl_server_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: sasl_server_mech_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - event_unref
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_free(struct sasl_server_mech *mech)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:238,1
    - Dst: sasl_server_mech_reg_find
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:238,1
    - Dst: sasl_server_mech_register_def
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:240,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:242,1
    - Dst: sasl_server_mech_def_merge_settings
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:244,1
    - Dst: DLLIST_PREPEND_FULL
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:246,1
    - Dst: sasl_server_mech_create
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:248,1
    - Dst: sasl_server_mech_data_init
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - sinst
    - def
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    - struct sasl_server_mech_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 254
    functionName: sasl_server_mech_register_common
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - p_new
    - DLLIST_PREPEND_FULL
    - sasl_server_mech_create
    - sasl_server_mech_def_merge_settings
    - sasl_server_mech_reg_find
    - sasl_server_mech_register_def
    - sasl_server_mech_data_init
    - i_assert
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: "struct sasl_server_mech *\nsasl_server_mech_register_common(struct
      sasl_server_instance *sinst,\n\t\t\t\t const struct sasl_server_mech_def *def,\n\t\t\t\t
      const struct sasl_server_mech_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_common
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:263,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - sinst
    - def
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    - struct sasl_server_mech_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 256
    functionDepth: 3
    functionLinenumber: 256
    functionLinenumberEnd: 267
    functionName: sasl_server_mech_register
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 7
    functionsReached:
    - sasl_server_mech_register_common
    - DLLIST2_APPEND
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: "struct sasl_server_mech *\nsasl_server_mech_register(struct sasl_server_instance
      *sinst,\n\t\t\t  const struct sasl_server_mech_def *def,\n\t\t\t  const struct
      sasl_server_mech_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_common
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:276,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - sinst
    - def
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    - struct sasl_server_mech_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 269
    functionDepth: 3
    functionLinenumber: 269
    functionLinenumberEnd: 280
    functionName: sasl_server_mech_register_hidden
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - sasl_server_mech_register_common
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: "struct sasl_server_mech *\nsasl_server_mech_register_hidden(struct
      sasl_server_instance *sinst,\n\t\t\t\t const struct sasl_server_mech_def *def,\n\t\t\t\t
      const struct sasl_server_mech_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_reg_find
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sinst
    - name
    argTypes:
    - struct sasl_server_instance*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 291
    functionName: sasl_server_mech_find
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 3
    functionsReached:
    - sasl_server_mech_reg_find
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: 'struct sasl_server_mech *

      sasl_server_mech_find(struct sasl_server_instance *sinst, const char *name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct sasl_server_mech*::def::funcs::mech_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:302,1
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:303,1
    - Dst: sasl_server_mech_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:305,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:310,1
    - Dst: sasl_server_mech_data_deinit
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - mech_reg
    argTypes:
    - struct sasl_server_mech_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 315
    functionName: sasl_server_mech_reg_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_data_deinit
    - sasl_server_mech_free
    - DLLIST_REMOVE_FULL
    - DLLIST2_REMOVE
    - i_assert
    - struct sasl_server_mech*::def::funcs::mech_free
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_reg_free(struct sasl_server_mech_reg *mech_reg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mech_reg_list
    - def
    argTypes:
    - struct sasl_server_mech_reg*
    - struct sasl_server_mech_def*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 332
    functionName: sasl_server_mech_reg_list_find
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct sasl_server_mech_reg
    signature: "struct sasl_server_mech_reg *\nsasl_server_mech_reg_list_find(struct
      sasl_server_mech_reg *mech_reg_list,\n\t\t\t       const struct sasl_server_mech_def
      *def)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_reg_list_find
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:339,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:341,1
    - Dst: sasl_server_mech_reg_list_find
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:344,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:347,1
    - Dst: sasl_server_mech_reg_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:353,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - sinst
    - def
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 354
    functionName: sasl_server_mech_unregister
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 2
    functionsReached:
    - DLLIST2_REMOVE
    - sasl_server_mech_reg_free
    - sasl_server_mech_reg_list_find
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_unregister(struct sasl_server_instance *sinst,\n\t\t\t\t
      const struct sasl_server_mech_def *def)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_reg_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mech_reg_list
    argTypes:
    - struct sasl_server_mech_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 369
    functionName: sasl_server_mech_reg_list_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_reg_free
    linkageType: ''
    returnType: struct sasl_server_mech_reg
    signature: 'struct sasl_server_mech_reg *

      sasl_server_mech_reg_list_free(struct sasl_server_mech_reg *mech_reg_list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_reg_list_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:374,1
    - Dst: sasl_server_mech_reg_list_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 4
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: sasl_server_instance_mech_registry_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 1
    functionsReached:
    - sasl_server_mech_reg_list_free
    linkageType: ''
    returnType: void
    signature: "void sasl_server_instance_mech_registry_free(\n\tstruct sasl_server_instance
      *sinst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct sasl_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: sasl_server_mech_registry_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_registry_free(struct sasl_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct sasl_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 408
    functionName: sasl_server_mech_iter_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct sasl_server_mech_iter
    signature: 'struct sasl_server_mech_iter *

      sasl_server_mech_iter_new(struct sasl_server *server)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 420
    functionName: sasl_server_instance_mech_iter_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct sasl_server_mech_iter
    signature: 'struct sasl_server_mech_iter *

      sasl_server_instance_mech_iter_new(struct sasl_server_instance *sinst)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct sasl_server_mech_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 452
    functionName: sasl_server_mech_iter_next
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: bool
    signature: bool sasl_server_mech_iter_next(struct sasl_server_mech_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct sasl_server_mech_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 460
    functionName: sasl_server_mech_iter_ended
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: bool
    signature: bool sasl_server_mech_iter_ended(struct sasl_server_mech_iter *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:471,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech.c:473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct sasl_server_mech_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 474
    functionName: sasl_server_mech_iter_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_iter_free(struct sasl_server_mech_iter **_iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c:13,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c:15,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c:18,1
    - Dst: sasl_server_request_set_authzid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c:22,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c:23,1
    - Dst: sasl_server_request_verify_plain
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c:26,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 28
    functionName: mech_external_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_set_authid
    - sasl_server_request_set_authzid
    - t_strndup
    - sasl_server_request_failure
    - sasl_server_request_verify_plain
    linkageType: ''
    returnType: void
    signature: "void mech_external_auth_continue(struct sasl_server_mech_request *request,\n\t\t\t
      \   const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: sasl_server_mech_register_external
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-external.c
    functionUses: 1
    functionsReached:
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_register_external(struct sasl_server_instance
      *sinst)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c:32,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c:39,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - _client
    - input
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 47
    functionName: mech_ntlm_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c
    functionUses: 0
    functionsReached:
    - strlen
    - container_of
    - memcmp
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_ntlm_input(struct dsasl_client *_client,\n\t\tconst
      unsigned char *input, size_t input_len,\n\t\tconst char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c:55,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c:74,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c:76,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c:79,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - _client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 80
    functionName: mech_ntlm_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c
    functionUses: 0
    functionsReached:
    - strlen
    - container_of
    - t_strconcat
    - i_unreached
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_ntlm_output(struct dsasl_client *_client,\n\t\t
      \ const unsigned char **output_r, size_t *output_len_r,\n\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: dsasl_client_mech_ntlm_init_dummy
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-ntlm-dummy.c
    functionUses: 2
    functionsReached:
    - dsasl_client_mech_register
    linkageType: ''
    returnType: void
    signature: void dsasl_client_mech_ntlm_init_dummy(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-oauth2.c:38,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-sasl/sasl-oauth2.c:66,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-sasl/sasl-oauth2.c:82,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 6
    argNames:
    - data
    - size
    - key_r
    - value_r
    - end_r
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - char**
    - char**
    - unsigned char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 87
    functionName: sasl_oauth2_kvpair_parse
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-oauth2.c
    functionUses: 1
    functionsReached:
    - i_assert
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: "int sasl_oauth2_kvpair_parse(const unsigned char *data, size_t size,\n\t\t\t
      \    const char **key_r, const char **value_r,\n\t\t\t     const unsigned char
      **end_r,\n\t\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-oauth2.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 98
    functionName: sasl_oauth2_kvpair_check_value
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-oauth2.c
    functionUses: 1
    functionsReached:
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool sasl_oauth2_kvpair_check_value(const char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:20,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:21,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - name
    - idx_r
    argTypes:
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 27
    functionName: dsasl_client_mech_find_idx
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: struct dsasl_client_mech
    signature: 'struct dsasl_client_mech *

      dsasl_client_mech_find_idx(const char *name, unsigned int *idx_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_mech_find_idx
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: dsasl_client_mech_find
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 10
    functionsReached:
    - dsasl_client_mech_find_idx
    linkageType: ''
    returnType: struct dsasl_client_mech
    signature: struct dsasl_client_mech *dsasl_client_mech_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mech
    argTypes:
    - struct dsasl_client_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: dsasl_client_mech_get_name
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *dsasl_client_mech_get_name(const struct dsasl_client_mech *mech)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mech
    argTypes:
    - struct dsasl_client_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: dsasl_client_mech_uses_password
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dsasl_client_mech_uses_password(const struct dsasl_client_mech
      *mech)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_mech_find_idx
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:50,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:52,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mech
    argTypes:
    - struct dsasl_client_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: dsasl_client_mech_register
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 2
    functionsReached:
    - array_delete
    - dsasl_client_mech_find_idx
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void dsasl_client_mech_register(const struct dsasl_client_mech *mech)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_mech_find_idx
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:61,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:62,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mech
    argTypes:
    - struct dsasl_client_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: dsasl_client_mech_unregister
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 0
    functionsReached:
    - i_panic
    - array_delete
    - dsasl_client_mech_find_idx
    linkageType: ''
    returnType: void
    signature: void dsasl_client_mech_unregister(const struct dsasl_client_mech *mech)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:70,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:72,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:75,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:76,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:77,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:79,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:80,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:83,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:84,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:85,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:86,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - mech
    - set
    argTypes:
    - struct dsasl_client_mech*
    - struct dsasl_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 89
    functionName: dsasl_client_new
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 10
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - event_create
    - event_set_append_log_prefix
    - t_strdup_printf
    - t_str_lcase
    - event_add_category
    - p_malloc
    linkageType: ''
    returnType: struct dsasl_client
    signature: "struct dsasl_client *dsasl_client_new(const struct dsasl_client_mech
      *mech,\n\t\t\t\t      const struct dsasl_client_settings *set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct dsasl_client*::mech::free
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:100,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:102,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:102,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:103,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct dsasl_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 105
    functionName: dsasl_client_free
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 10
    functionsReached:
    - event_unref
    - strlen
    - pool_unref
    - struct dsasl_client*::mech::free
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void dsasl_client_free(struct dsasl_client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - client
    - channel_version
    - callback
    - context
    argTypes:
    - struct dsasl_client*
    - enum ssl_iostream_protocol_version
    - dsasl_client_channel_binding_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 115
    functionName: dsasl_client_enable_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dsasl_client_enable_channel_binding(\n\tstruct dsasl_client *client,\n\tenum
      ssl_iostream_protocol_version channel_version,\n\tdsasl_client_channel_binding_callback_t
      *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:123,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:128,1
    - Dst: struct dsasl_client*::mech::input
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 134
    functionName: dsasl_client_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 9
    functionsReached:
    - t_strdup_printf
    - memchr
    - struct dsasl_client*::mech::input
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result dsasl_client_input(struct dsasl_client *client,\n\t\t
      \  const unsigned char *input, size_t input_len,\n\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsasl_client*::mech::output
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 142
    functionName: dsasl_client_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 12
    functionsReached:
    - struct dsasl_client*::mech::output
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result dsasl_client_output(struct dsasl_client *client,\n\t\t
      \   const unsigned char **output_r, size_t *output_len_r,\n\t\t    const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct dsasl_client*::mech::set_parameter
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - client
    - param
    - value
    - error_r
    argTypes:
    - struct dsasl_client*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 155
    functionName: dsasl_client_set_parameter
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 2
    functionsReached:
    - i_assert
    - struct dsasl_client*::mech::set_parameter
    linkageType: ''
    returnType: int
    signature: "int dsasl_client_set_parameter(struct dsasl_client *client,\n\t\t\t
      \      const char *param, const char *value,\n\t\t\t       const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct dsasl_client*::mech::get_result
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:163,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - client
    - key
    - value_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: dsasl_client_get_result
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 2
    functionsReached:
    - struct dsasl_client*::mech::get_result
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dsasl_client_get_result(struct dsasl_client *client,\n\t\t\t    const
      char *key, const char **value_r,\n\t\t\t    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:176,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:177,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:178,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:179,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:180,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:181,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:182,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:183,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:184,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:185,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:186,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:187,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:188,1
    - Dst: dsasl_client_mech_register
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 190
    functionName: dsasl_clients_init
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 5
    functionsReached:
    - i_array_init
    - dsasl_client_mech_register
    linkageType: ''
    returnType: void
    signature: void dsasl_clients_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib-sasl/dsasl-client.c:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 197
    functionName: dsasl_clients_deinit
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client.c
    functionUses: 4
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void dsasl_clients_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: IS_LWSP
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LWSP(c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:33,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - _p
    - pend
    - prefix
    argTypes:
    - unsigned char**
    - unsigned char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 42
    functionName: parse_prefix
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c
    functionUses: 1
    functionsReached:
    - strlen
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool parse_prefix(const unsigned char **_p, const unsigned char *pend,\n\t
      \    const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - _p
    - pend
    argTypes:
    - unsigned char**
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: skip_lwsp
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c
    functionUses: 29
    functionsReached:
    - IS_LWSP
    linkageType: ''
    returnType: void
    signature: void skip_lwsp(const unsigned char **_p, const unsigned char *pend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:61,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:64,1
    - Dst: t_strdup_until_noconst
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - _p
    - pend
    - field_r
    argTypes:
    - unsigned char**
    - unsigned char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: parse_field
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c
    functionUses: 0
    functionsReached:
    - IS_LWSP
    - i_assert
    - t_strdup_until_noconst
    linkageType: ''
    returnType: void
    signature: "void parse_field(const unsigned char **_p, const unsigned char *pend,\n\t
      \   char **field_r)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:75,1
    - Dst: parse_prefix
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:90,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:95,1
    - Dst: parse_field
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:100,1
    - Dst: skip_lwsp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:101,1
    - Dst: str_parse_data_uintmax
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:109,1
    - Dst: IS_LWSP
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:110,1
    - Dst: skip_lwsp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:116,1
    - Dst: parse_field
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:124,1
    - Dst: str_lcase
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:125,1
    - Dst: skip_lwsp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:126,1
    - Dst: parse_prefix
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:138,1
    - Dst: skip_lwsp
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:151,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:160,1
    - Dst: digest_find
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:170,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:173,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:197,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 74
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 199
    functionName: mech_otp_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c
    functionUses: 0
    functionsReached:
    - skip_lwsp
    - memcpy
    - container_of
    - IS_LWSP
    - t_strdup_printf
    - digest_find
    - str_sanitize
    - str_lcase
    - parse_prefix
    - parse_field
    - str_parse_data_uintmax
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_otp_input(struct dsasl_client *client,\n\t
      \      const unsigned char *input, size_t input_len,\n\t       const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:207,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:220,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:222,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:223,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:224,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:226,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:227,1
    - Dst: otp_hash
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:234,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:236,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:237,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:238,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:244,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:245,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:246,1
    - Dst: otp_hash
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:249,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:252,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:253,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:254,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:255,1
    - Dst: digest_name
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:256,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:257,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:260,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c:261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 4
    argNames:
    - client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 263
    functionName: mech_otp_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-otp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - random_fill
    - container_of
    - str_append_c
    - str_printfa
    - str_data
    - str_len
    - binary_to_hex_append
    - otp_hash
    - digest_name
    - str_append
    - binary_to_hex
    - str_new
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_otp_output(struct dsasl_client *client,\n\t\tconst
      unsigned char **output_r, size_t *output_len_r,\n\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:23,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:24,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:26,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:28,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:30,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:40,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:41,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:43,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:44,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:46,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:47,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:47,1
    - Dst: struct sasl_server_mech*::def::funcs::auth_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:52,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:54,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:60,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 4
    argNames:
    - rctx
    - mech
    - protocol
    - event_parent
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_server_mech*
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 68
    functionName: sasl_server_request_create
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 2
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - event_create
    - event_drop_parent_log_prefixes
    - p_new
    - p_strdup
    - struct sasl_server_mech*::def::funcs::auth_new
    - e_debug
    - event_set_append_log_prefix
    - event_add_category
    - t_strdup_printf
    - t_str_lcase
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_create(struct sasl_server_req_ctx *rctx,\n\t\t\t\tconst
      struct sasl_server_mech *mech,\n\t\t\t\tconst char *protocol,\n\t\t\t\tstruct
      event *event_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mreq
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: sasl_server_mech_request_ref
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_request_ref(struct sasl_server_mech_request *mreq)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:86,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:96,1
    - Dst: struct sasl_server_request_funcs*::request_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:100,1
    - Dst: struct sasl_server_mech_request*::mech::def::funcs::auth_free
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:102,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:104,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:107,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:108,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:109,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - _mreq
    argTypes:
    - struct sasl_server_mech_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 110
    functionName: sasl_server_mech_request_unref
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 3
    functionsReached:
    - i_zero
    - event_unref
    - e_debug
    - pool_unref
    - struct sasl_server_request_funcs*::request_free
    - i_assert
    - struct sasl_server_mech_request*::mech::def::funcs::auth_free
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_request_unref(struct sasl_server_mech_request
      **_mreq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_request_ref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rctx
    argTypes:
    - struct sasl_server_req_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: sasl_server_request_ref
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_request_ref
    linkageType: ''
    returnType: void
    signature: void sasl_server_request_ref(struct sasl_server_req_ctx *rctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:121,1
    - Dst: sasl_server_mech_request_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rctx
    argTypes:
    - struct sasl_server_req_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 128
    functionName: sasl_server_request_unref
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - i_zero
    - sasl_server_mech_request_unref
    linkageType: ''
    returnType: void
    signature: void sasl_server_request_unref(struct sasl_server_req_ctx *rctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:135,1
    - Dst: sasl_server_request_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rctx
    argTypes:
    - struct sasl_server_req_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 141
    functionName: sasl_server_request_destroy
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 2
    functionsReached:
    - i_zero
    - sasl_server_request_unref
    linkageType: ''
    returnType: void
    signature: void sasl_server_request_destroy(struct sasl_server_req_ctx *rctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:151,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - req
    - data_size
    argTypes:
    - struct sasl_server_request*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 157
    functionName: sasl_server_request_fail_on_size
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - sasl_server_request_failure
    linkageType: ''
    returnType: bool
    signature: "bool sasl_server_request_fail_on_size(struct sasl_server_request *req,\n\t\t\t\t
      size_t data_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:167,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:168,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - req
    - data
    - data_size
    argTypes:
    - struct sasl_server_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 173
    functionName: sasl_server_request_fail_on_nuls
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - memchr
    - sasl_server_request_failure
    linkageType: ''
    returnType: bool
    signature: "bool sasl_server_request_fail_on_nuls(struct sasl_server_request *req,\n\t\t\t\t
      const unsigned char *data, size_t data_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:182,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:185,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:193,1
    - Dst: sasl_server_request_fail_on_size
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:196,1
    - Dst: sasl_server_request_fail_on_nuls
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:198,1
    - Dst: sasl_server_mech_request_ref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:202,1
    - Dst: struct sasl_server_mech*::def::funcs::auth_initial
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:203,1
    - Dst: sasl_server_mech_request_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - rctx
    - data
    - data_size
    argTypes:
    - struct sasl_server_req_ctx*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 205
    functionName: sasl_server_request_initial
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 2
    functionsReached:
    - sasl_server_mech_request_unref
    - struct sasl_server_mech*::def::funcs::auth_initial
    - e_debug
    - sasl_server_request_fail_on_size
    - sasl_server_request_fail_on_nuls
    - sasl_server_mech_request_ref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_initial(struct sasl_server_req_ctx *rctx,\n\t\t\t\t
      const unsigned char *data, size_t data_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:214,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:216,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:224,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:226,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:229,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:230,1
    - Dst: sasl_server_request_fail_on_size
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:233,1
    - Dst: sasl_server_request_fail_on_nuls
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:235,1
    - Dst: sasl_server_mech_request_ref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:239,1
    - Dst: struct sasl_server_mech*::def::funcs::auth_continue
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:240,1
    - Dst: sasl_server_mech_request_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:241,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - rctx
    - data
    - data_size
    argTypes:
    - struct sasl_server_req_ctx*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 242
    functionName: sasl_server_request_input
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 2
    functionsReached:
    - sasl_server_mech_request_unref
    - struct sasl_server_mech*::def::funcs::auth_continue
    - e_debug
    - sasl_server_request_fail_on_size
    - sasl_server_request_fail_on_nuls
    - sasl_server_request_failure
    - sasl_server_request_success
    - sasl_server_mech_request_ref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_input(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \      const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rctx
    argTypes:
    - struct sasl_server_req_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: sasl_server_request_has_failed
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool sasl_server_request_has_failed(const struct sasl_server_req_ctx
      *rctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rctx
    - authid
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 255
    functionName: sasl_server_request_test_set_authid
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_test_set_authid(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t\t const char *authid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:269,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:270,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:276,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:278,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:279,1
    - Dst: struct sasl_server_request_funcs*::request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:280,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:281,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:282,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:287,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - mreq
    - authid_type
    - authid
    argTypes:
    - struct sasl_server_mech_request*
    - enum sasl_server_authid_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 289
    functionName: sasl_server_request_set_authid
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 10
    functionsReached:
    - p_strdup
    - e_debug
    - strlen
    - str_sanitize
    - struct sasl_server_request_funcs*::request_set_authid
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool sasl_server_request_set_authid(struct sasl_server_mech_request
      *mreq,\n\t\t\t\t    enum sasl_server_authid_type authid_type,\n\t\t\t\t    const
      char *authid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:298,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:299,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:305,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:306,1
    - Dst: struct sasl_server_request_funcs*::request_set_authzid
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:307,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:308,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:309,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:314,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - mreq
    - authzid
    argTypes:
    - struct sasl_server_mech_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 316
    functionName: sasl_server_request_set_authzid
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 4
    functionsReached:
    - e_debug
    - strlen
    - str_sanitize
    - struct sasl_server_request_funcs*::request_set_authzid
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool sasl_server_request_set_authzid(struct sasl_server_mech_request
      *mreq,\n\t\t\t\t     const char *authzid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:325,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:326,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:328,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:329,1
    - Dst: struct sasl_server_request_funcs*::request_set_realm
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:330,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:332,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - mreq
    - realm
    argTypes:
    - struct sasl_server_mech_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 333
    functionName: sasl_server_request_set_realm
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - struct sasl_server_request_funcs*::request_set_realm
    - e_debug
    - str_sanitize
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_set_realm(struct sasl_server_mech_request
      *mreq,\n\t\t\t\t   const char *realm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:343,1
    - Dst: struct sasl_server_request_funcs*::request_get_extra_field
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - mreq
    - name
    - field_r
    argTypes:
    - struct sasl_server_mech_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 349
    functionName: sasl_server_request_get_extra_field
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 1
    functionsReached:
    - i_assert
    - struct sasl_server_request_funcs*::request_get_extra_field
    linkageType: ''
    returnType: bool
    signature: "bool sasl_server_request_get_extra_field(struct sasl_server_mech_request
      *mreq,\n\t\t\t\t\t const char *name,\n\t\t\t\t\t const char **field_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:358,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:359,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:361,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:362,1
    - Dst: struct sasl_server_request_funcs*::request_start_channel_binding
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - mreq
    - type
    argTypes:
    - struct sasl_server_mech_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 364
    functionName: sasl_server_request_start_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 1
    functionsReached:
    - e_debug
    - str_sanitize
    - struct sasl_server_request_funcs*::request_start_channel_binding
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_start_channel_binding(\n\tstruct sasl_server_mech_request
      *mreq, const char *type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:374,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:375,1
    - Dst: struct sasl_server_request_funcs*::request_accept_channel_binding
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:376,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:378,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - mreq
    - data_r
    argTypes:
    - struct sasl_server_mech_request*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 385
    functionName: sasl_server_request_accept_channel_binding
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 1
    functionsReached:
    - e_debug
    - i_assert
    - struct sasl_server_request_funcs*::request_accept_channel_binding
    linkageType: ''
    returnType: int
    signature: "int sasl_server_request_accept_channel_binding(\n\tstruct sasl_server_mech_request
      *mreq, buffer_t **data_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:394,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:396,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:397,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:403,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:412,1
    - Dst: struct sasl_server_request_funcs*::request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - mreq
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 414
    functionName: sasl_server_request_output
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 8
    functionsReached:
    - e_debug
    - i_assert
    - struct sasl_server_request_funcs*::request_output
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_output(struct sasl_server_mech_request *mreq,\n\t\t\t\tconst
      void *data, size_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:423,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:425,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:426,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:432,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:435,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:438,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:446,1
    - Dst: struct sasl_server_request_funcs*::request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:447,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - mreq
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 448
    functionName: sasl_server_request_success
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 8
    functionsReached:
    - e_debug
    - i_assert
    - struct sasl_server_request_funcs*::request_output
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_success(struct sasl_server_mech_request *mreq,\n\t\t\t\t
      const void *data, size_t data_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:459,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:468,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:469,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:470,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:472,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:476,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:478,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:480,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:488,1
    - Dst: struct sasl_server_request_funcs*::request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:489,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - mreq
    - status
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - enum sasl_server_output_status
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 490
    functionName: sasl_server_request_failure_common
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - struct sasl_server_request_funcs*::request_output
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_failure_common(struct sasl_server_mech_request
      *mreq,\n\t\t\t\t   enum sasl_server_output_status status,\n\t\t\t\t   const
      void *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_failure_common
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mreq
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 492
    functionDepth: 2
    functionLinenumber: 492
    functionLinenumberEnd: 498
    functionName: sasl_server_request_failure_with_reply
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 1
    functionsReached:
    - sasl_server_request_failure_common
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_failure_with_reply(\n\tstruct sasl_server_mech_request
      *mreq,\n\tconst void *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_failure_common
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mreq
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 504
    functionName: sasl_server_request_failure
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 20
    functionsReached:
    - sasl_server_request_failure_common
    linkageType: ''
    returnType: void
    signature: void sasl_server_request_failure(struct sasl_server_mech_request *mreq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_failure_common
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mreq
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 506
    functionDepth: 2
    functionLinenumber: 506
    functionLinenumberEnd: 511
    functionName: sasl_server_request_password_mismatch
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 4
    functionsReached:
    - sasl_server_request_failure_common
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_password_mismatch(\n\tstruct sasl_server_mech_request
      *mreq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_failure_common
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mreq
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 513
    functionDepth: 2
    functionLinenumber: 513
    functionLinenumberEnd: 518
    functionName: sasl_server_request_internal_failure
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 8
    functionsReached:
    - sasl_server_request_failure_common
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_internal_failure(\n\tstruct sasl_server_mech_request
      *mreq)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum sasl_passdb_result_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 540
    functionName: sasl_passdb_result_to_string
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: 'char *

      sasl_passdb_result_to_string(enum sasl_passdb_result_status status)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:548,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:553,1
    - Dst: sasl_passdb_result_to_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:554,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:556,1
    - Dst: struct sasl_server_request*::passdb_callback
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - rctx
    - result
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 558
    functionName: verify_plain_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - struct sasl_server_request*::passdb_callback
    - i_assert
    - sasl_passdb_result_to_string
    linkageType: ''
    returnType: void
    signature: "void verify_plain_callback(struct sasl_server_req_ctx *rctx,\n\t\t
      \     const struct sasl_passdb_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:568,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:570,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:571,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:575,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:580,1
    - Dst: struct sasl_server_request_funcs*::request_verify_plain
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - mreq
    - password
    - callback
    argTypes:
    - struct sasl_server_mech_request*
    - char*
    - sasl_server_mech_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 583
    functionName: sasl_server_request_verify_plain
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 2
    functionsReached:
    - e_debug
    - i_assert
    - struct sasl_server_request_funcs*::request_verify_plain
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_verify_plain(\n\tstruct sasl_server_mech_request
      *mreq, const char *password,\n\tsasl_server_mech_passdb_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:591,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:596,1
    - Dst: sasl_passdb_result_to_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:597,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:599,1
    - Dst: struct sasl_server_request*::passdb_callback
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - rctx
    - result
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 602
    functionName: lookup_credentials_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - struct sasl_server_request*::passdb_callback
    - i_assert
    - sasl_passdb_result_to_string
    linkageType: ''
    returnType: void
    signature: "void lookup_credentials_callback(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \   const struct sasl_passdb_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:612,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:614,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:615,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:619,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:625,1
    - Dst: struct sasl_server_request_funcs*::request_lookup_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:626,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - mreq
    - scheme
    - callback
    argTypes:
    - struct sasl_server_mech_request*
    - char*
    - sasl_server_mech_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 628
    functionName: sasl_server_request_lookup_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 4
    functionsReached:
    - e_debug
    - i_assert
    - struct sasl_server_request_funcs*::request_lookup_credentials
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_lookup_credentials(\n\tstruct sasl_server_mech_request
      *mreq, const char *scheme,\n\tsasl_server_mech_passdb_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:636,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:641,1
    - Dst: sasl_passdb_result_to_string
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:642,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:644,1
    - Dst: struct sasl_server_request*::passdb_callback
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - rctx
    - result
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 646
    functionName: set_credentials_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - struct sasl_server_request*::passdb_callback
    - i_assert
    - sasl_passdb_result_to_string
    linkageType: ''
    returnType: void
    signature: "void set_credentials_callback(struct sasl_server_req_ctx *rctx,\n\t\t\t
      const struct sasl_passdb_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:657,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:659,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:660,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:664,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:670,1
    - Dst: struct sasl_server_request_funcs*::request_set_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - mreq
    - scheme
    - data
    - callback
    argTypes:
    - struct sasl_server_mech_request*
    - char*
    - char*
    - sasl_server_mech_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 648
    functionDepth: 1
    functionLinenumber: 648
    functionLinenumberEnd: 673
    functionName: sasl_server_request_set_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 2
    functionsReached:
    - e_debug
    - i_assert
    - struct sasl_server_request_funcs*::request_set_credentials
    linkageType: ''
    returnType: void
    signature: "void sasl_server_request_set_credentials(\n\tstruct sasl_server_mech_request
      *mreq,\n\tconst char *scheme, const char *data,\n\tsasl_server_mech_passdb_callback_t
      *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rctx
    argTypes:
    - struct sasl_server_req_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 679
    functionName: sasl_server_request_get_mech_request
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: 'struct sasl_server_mech_request *

      sasl_server_request_get_mech_request(struct sasl_server_req_ctx *rctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-request.c:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mreq
    argTypes:
    - struct sasl_server_mech_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 681
    functionDepth: 1
    functionLinenumber: 681
    functionLinenumberEnd: 686
    functionName: sasl_server_request_get_req_ctx
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-request.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct sasl_server_req_ctx
    signature: 'struct sasl_server_req_ctx *

      sasl_server_request_get_req_ctx(struct sasl_server_mech_request *mreq)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - _client
    - ATTR_UNUSED
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 30
    functionName: mech_plain_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_plain_input(struct dsasl_client *_client,\n\t\t
      const unsigned char *input ATTR_UNUSED, size_t input_len,\n\t\t const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c:50,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c:52,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c:53,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c:54,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c:55,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c:56,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c:58,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - _client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 62
    functionName: mech_plain_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-plain.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_data
    - str_len
    - str_append
    - str_new
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_plain_output(struct dsasl_client *_client,\n\t\t
      \ const unsigned char **output_r, size_t *output_len_r,\n\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:22,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:25,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:25,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:26,1
    - Dst: printf
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:28,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 29
    functionName: run_ntlm_cmd_yr
    functionSourceFile: /src/dovecot/src/lib-sasl/ntlm_dummy.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - printf
    - strlen
    - base64_encode
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: void
    signature: void run_ntlm_cmd_yr(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:35,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:36,1
    - Dst: t_base64_decode_str
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:41,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:46,1
    - Dst: printf
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:47,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:53,1
    - Dst: printf
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:55,1
    - Dst: printf
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:59,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - param
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 60
    functionName: run_ntlm_cmd_kk
    functionSourceFile: /src/dovecot/src/lib-sasl/ntlm_dummy.c
    functionUses: 0
    functionsReached:
    - strlen
    - printf
    - t_base64_decode_str
    - memcmp
    linkageType: ''
    returnType: void
    signature: void run_ntlm_cmd_kk(const char *param)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:68,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:70,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:71,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:73,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:74,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:75,1
    - Dst: run_ntlm_cmd_yr
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:76,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:77,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:79,1
    - Dst: run_ntlm_cmd_kk
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:80,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:82,1
    - Dst: fflush
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:84,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:87,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 88
    functionName: run_ntlm
    functionSourceFile: /src/dovecot/src/lib-sasl/ntlm_dummy.c
    functionUses: 0
    functionsReached:
    - strcmp
    - run_ntlm_cmd_yr
    - fflush
    - strlen
    - i_fatal
    - i_stream_read_next_line
    - run_ntlm_cmd_kk
    - i_stream_create_fd_autoclose
    - t_strsplit_spaces
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void run_ntlm(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:92,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:95,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:96,1
    - Dst: run_ntlm
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:97,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:99,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-sasl/ntlm_dummy.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 102
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-sasl/ntlm_dummy.c
    functionUses: 9
    functionsReached:
    - strcmp
    - run_ntlm
    - lib_deinit
    - lib_init
    - i_fatal
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:39,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - principal
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: gss_dummy_kinit
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 2
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void gss_dummy_kinit(const char *principal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:45,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - principal
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: gss_dummy_add_principal
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 2
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void gss_dummy_add_principal(const char *principal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:51,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: gss_dummy_deinit
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 1
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void gss_dummy_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:64,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:65,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:66,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:67,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:68,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:70,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:71,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 8
    argNames:
    - minor_status
    - desired_name
    - time_req
    - desired_mechs
    - cred_usage
    - output_cred_handle
    - actual_mechs
    - time_rec
    argTypes:
    - OM_uint32*
    - gss_name_t
    - OM_uint32
    - gss_OID_set
    - gss_cred_usage_t
    - gss_cred_id_t*
    - gss_OID_set*
    - OM_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 78
    functionName: KRB5_CALLCONV::gss_acquire_cred
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - i_assert
    - p_new
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_acquire_cred(OM_uint32 *minor_status,
      gss_name_t desired_name,\n\t\t OM_uint32 time_req, gss_OID_set desired_mechs,\n\t\t
      gss_cred_usage_t cred_usage, gss_cred_id_t *output_cred_handle,\n\t\t gss_OID_set
      *actual_mechs, OM_uint32 *time_rec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - minor_status
    - cred_handle
    argTypes:
    - OM_uint32*
    - gss_cred_id_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: KRB5_CALLCONV::gss_release_cred
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: OM_uint32
    signature: 'OM_uint32 KRB5_CALLCONV

      gss_release_cred(OM_uint32 *minor_status, gss_cred_id_t *cred_handle)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:92,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:93,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:94,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - output
    - num
    argTypes:
    - buffer_t*
    - OM_uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: _encode_uint32
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: void _encode_uint32(buffer_t *output, OM_uint32 num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _encode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:100,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - output
    - buf
    argTypes:
    - buffer_t*
    - gss_buffer_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: _encode_buffer
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - _encode_uint32
    linkageType: ''
    returnType: void
    signature: void _encode_buffer(buffer_t *output, gss_buffer_t buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:120,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:121,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:123,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:125,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:126,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:128,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:129,1
    - Dst: auth_gssapi_oid_equal
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:134,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:137,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:145,1
    - Dst: _encode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:147,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:148,1
    - Dst: _encode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:149,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:150,1
    - Dst: _encode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:152,1
    - Dst: _encode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:153,1
    - Dst: _encode_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:154,1
    - Dst: _encode_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:155,1
    - Dst: _encode_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:156,1
    - Dst: gss_alloc_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:159,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 13
    argNames:
    - minor_status
    - claimant_cred_handle
    - context_handle
    - target_name
    - mech_type
    - req_flags
    - time_req
    - input_chan_bindings
    - input_token ATTR_UNUSED
    - actual_mech_type
    - output_token
    - ret_flags
    - time_rec
    argTypes:
    - OM_uint32*
    - gss_cred_id_t
    - gss_ctx_id_t*
    - gss_name_t
    - gss_OID
    - OM_uint32
    - OM_uint32
    - gss_channel_bindings_t
    - gss_buffer_t
    - gss_OID*
    - gss_buffer_t
    - OM_uint32*
    - OM_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 168
    functionName: KRB5_CALLCONV::gss_init_sec_context
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pool_alloconly_create
    - p_strdup
    - auth_gssapi_oid_equal
    - p_new
    - _encode_uint32
    - buffer_append
    - _encode_buffer
    - strlen
    - t_buffer_create
    - gss_alloc_buffer
    - i_assert
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_init_sec_context(OM_uint32 *minor_status,\n\t\t
      \    gss_cred_id_t claimant_cred_handle,\n\t\t     gss_ctx_id_t *context_handle,
      gss_name_t target_name,\n\t\t     gss_OID mech_type, OM_uint32 req_flags,\n\t\t
      \    OM_uint32 time_req,\n\t\t     gss_channel_bindings_t input_chan_bindings,\n\t\t
      \    gss_buffer_t input_token ATTR_UNUSED,\n\t\t     gss_OID *actual_mech_type,\n\t\t
      \    gss_buffer_t output_token, OM_uint32 *ret_flags,\n\t\t     OM_uint32 *time_rec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _input
    - _input_left
    - num_r
    argTypes:
    - unsigned char**
    - size_t*
    - OM_uint32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 186
    functionName: _decode_uint32
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int _decode_uint32(const unsigned char **_input, size_t *_input_left,\n\t
      \      OM_uint32 *num_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _decode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:194,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:196,1
    - Dst: t_memdup_noconst
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - _input
    - _input_left
    - out
    argTypes:
    - unsigned char**
    - size_t*
    - gss_buffer_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 204
    functionName: _decode_buffer
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_memdup_noconst
    - _decode_uint32
    linkageType: ''
    returnType: int
    signature: "int _decode_buffer(const unsigned char **_input, size_t *_input_left,\n\t
      \      gss_buffer_t out)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:211,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - buf1
    - buf2
    argTypes:
    - gss_buffer_t
    - gss_buffer_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 213
    functionName: _gss_buffer_cmp
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool _gss_buffer_cmp(gss_buffer_t buf1, gss_buffer_t buf2)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: _decode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:223,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:227,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:228,1
    - Dst: _decode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:233,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:237,1
    - Dst: _decode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:251,1
    - Dst: _decode_uint32
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:254,1
    - Dst: _decode_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:258,1
    - Dst: _decode_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:260,1
    - Dst: _decode_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:262,1
    - Dst: _gss_buffer_cmp
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:271,1
    - Dst: _gss_buffer_cmp
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:274,1
    - Dst: _gss_buffer_cmp
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:277,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 3
    argNames:
    - ctx
    - input_token_buffer
    - input_chan_bindings
    argTypes:
    - struct gss_ctx_id_struct*
    - gss_buffer_t
    - gss_channel_bindings_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 282
    functionName: gss_parse_sec_context
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_strndup
    - _decode_buffer
    - _gss_buffer_cmp
    - _decode_uint32
    - p_malloc
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 gss_parse_sec_context(struct gss_ctx_id_struct *ctx,\n\t\t
      \     gss_buffer_t input_token_buffer,\n\t\t      gss_channel_bindings_t input_chan_bindings)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:300,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:301,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:302,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:304,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:305,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:307,1
    - Dst: gss_parse_sec_context
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:309,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:312,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:317,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:318,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:323,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:324,1
    - Dst: gss_alloc_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:329,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 11
    argNames:
    - minor_status
    - context_handle
    - acceptor_cred_handle
    - input_token_buffer
    - input_chan_bindings
    - src_name
    - mech_type
    - output_token
    - ret_flags
    - time_rec
    - delegated_cred_handle
    argTypes:
    - OM_uint32*
    - gss_ctx_id_t*
    - gss_cred_id_t
    - gss_buffer_t
    - gss_channel_bindings_t
    - gss_name_t*
    - gss_OID*
    - gss_buffer_t
    - OM_uint32*
    - OM_uint32*
    - gss_cred_id_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 332
    functionName: KRB5_CALLCONV::gss_accept_sec_context
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - p_strdup
    - p_new
    - gss_parse_sec_context
    - pool_unref
    - i_strdup
    - i_new
    - gss_alloc_buffer
    - i_assert
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_accept_sec_context(OM_uint32 *minor_status,
      gss_ctx_id_t *context_handle,\n\t\t       gss_cred_id_t acceptor_cred_handle,\n\t\t
      \      gss_buffer_t input_token_buffer,\n\t\t       gss_channel_bindings_t input_chan_bindings,\n\t\t
      \      gss_name_t *src_name, gss_OID *mech_type,\n\t\t       gss_buffer_t output_token,
      OM_uint32 *ret_flags,\n\t\t       OM_uint32 *time_rec,\n\t\t       gss_cred_id_t
      *delegated_cred_handle)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:340,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - minor_status
    - context_handle
    - output_token
    argTypes:
    - OM_uint32*
    - gss_ctx_id_t*
    - gss_buffer_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 347
    functionName: KRB5_CALLCONV::gss_delete_sec_context
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - i_assert
    - pool_unref
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_delete_sec_context(OM_uint32 *minor_status,
      gss_ctx_id_t *context_handle,\n\t\t       gss_buffer_t output_token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:355,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:356,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:357,1
    - Dst: gss_alloc_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:359,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 7
    argNames:
    - minor_status
    - context_handle ATTR_UNUSED
    - conf_req_flag
    - qop_req
    - input_message_buffer
    - conf_state
    - output_message_buffer
    argTypes:
    - OM_uint32*
    - gss_ctx_id_t
    - int
    - gss_qop_t
    - gss_buffer_t
    - int*
    - gss_buffer_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 365
    functionName: KRB5_CALLCONV::gss_wrap
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - memcpy
    - gss_alloc_buffer
    - i_assert
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_wrap(OM_uint32 * minor_status, gss_ctx_id_t
      context_handle ATTR_UNUSED,\n\t int conf_req_flag, gss_qop_t qop_req,\n\t gss_buffer_t
      input_message_buffer, int *conf_state,\n\t gss_buffer_t output_message_buffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:373,1
    - Dst: gss_alloc_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:375,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - minor_status
    - context_handle ATTR_UNUSED
    - input_message_buffer
    - output_message_buffer
    - conf_state
    - ATTR_UNUSED
    argTypes:
    - OM_uint32*
    - gss_ctx_id_t
    - gss_buffer_t
    - gss_buffer_t
    - int*
    - gss_qop_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 381
    functionName: KRB5_CALLCONV::gss_unwrap
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - memcpy
    - gss_alloc_buffer
    - i_assert
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_unwrap(OM_uint32 *minor_status, gss_ctx_id_t
      context_handle ATTR_UNUSED,\n\t   gss_buffer_t input_message_buffer,\n\t   gss_buffer_t
      output_message_buffer, int *conf_state,\n\t   gss_qop_t *qop_state ATTR_UNUSED)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:398,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:407,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:418,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:423,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 6
    argNames:
    - minor_status
    - status_value
    - status_type
    - ATTR_UNUSED
    - message_context ATTR_UNUSED
    - status_string
    argTypes:
    - OM_uint32*
    - OM_uint32
    - int
    - gss_OID
    - OM_uint32*
    - gss_buffer_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 426
    functionName: KRB5_CALLCONV::gss_display_status
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_strdup_printf
    - strlen
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_display_status(OM_uint32 *minor_status,\n\t\t
      \  OM_uint32 status_value,\n\t\t   int status_type, gss_OID mech_type ATTR_UNUSED,\n\t\t
      \  OM_uint32 *message_context ATTR_UNUSED,\n\t\t   gss_buffer_t status_string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - minor_status
    - name1
    - name2
    - name_equal
    argTypes:
    - OM_uint32*
    - gss_name_t
    - gss_name_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 436
    functionName: KRB5_CALLCONV::gss_compare_name
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_compare_name(OM_uint32 *minor_status,
      gss_name_t name1, gss_name_t name2,\n\t\t int *name_equal)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:442,1
    - Dst: gss_alloc_buffer
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:444,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - minor_status
    - input_name
    - output_name_buffer
    - output_name_type
    argTypes:
    - OM_uint32*
    - gss_name_t
    - gss_buffer_t
    - gss_OID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 453
    functionName: KRB5_CALLCONV::gss_display_name
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - memcpy
    - gss_alloc_buffer
    - strlen
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_display_name(OM_uint32 *minor_status,
      gss_name_t input_name,\n\t\t gss_buffer_t output_name_buffer, gss_OID *output_name_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:461,1
    - Dst: i_strndup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - minor_status
    - input_name_buffer
    - input_name_type ATTR_UNUSED
    - output_name
    argTypes:
    - OM_uint32*
    - gss_buffer_t
    - gss_OID
    - gss_name_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 468
    functionName: KRB5_CALLCONV::gss_import_name
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - i_strndup
    - i_new
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_import_name(OM_uint32 *minor_status,
      gss_buffer_t input_name_buffer,\n\t\tgss_OID input_name_type ATTR_UNUSED, gss_name_t
      *output_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:478,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - minor_status
    - input_name
    argTypes:
    - OM_uint32*
    - gss_name_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 483
    functionName: KRB5_CALLCONV::gss_release_name
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: OM_uint32
    signature: 'OM_uint32 KRB5_CALLCONV

      gss_release_name(OM_uint32 *minor_status, gss_name_t *input_name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:487,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - length
    argTypes:
    - gss_buffer_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 491
    functionName: gss_alloc_buffer
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 5
    functionsReached:
    - i_zero
    - i_malloc
    linkageType: ''
    returnType: void
    signature: void gss_alloc_buffer(gss_buffer_t buffer, size_t length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:498,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:499,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - minor_status
    - buffer
    argTypes:
    - OM_uint32*
    - gss_buffer_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 504
    functionName: KRB5_CALLCONV::gss_release_buffer
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_free
    linkageType: ''
    returnType: OM_uint32
    signature: 'OM_uint32 KRB5_CALLCONV

      gss_release_buffer(OM_uint32 *minor_status, gss_buffer_t buffer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:512,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-sasl/gssapi-dummy.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - minor_status
    - input_name
    - dest_name
    argTypes:
    - OM_uint32*
    - gss_name_t
    - gss_name_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 518
    functionName: KRB5_CALLCONV::gss_duplicate_name
    functionSourceFile: /src/dovecot/src/lib-sasl/gssapi-dummy.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_new
    linkageType: ''
    returnType: OM_uint32
    signature: "OM_uint32 KRB5_CALLCONV\ngss_duplicate_name(OM_uint32  *minor_status,
      const gss_name_t input_name,\n\t\t   gss_name_t * dest_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:22,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:24,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:27,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:31,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:31,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:33,1
    - Dst: sasl_server_request_verify_plain
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:34,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:36,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 14
    functionDepth: 3
    functionLinenumber: 14
    functionLinenumberEnd: 38
    functionName: mech_login_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_output
    - sasl_server_request_set_authid
    - p_strndup
    - strlen
    - t_strndup
    - sasl_server_request_failure
    - sasl_server_request_verify_plain
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void mech_login_auth_continue(struct sasl_server_mech_request *request,\n\t\t\t
      const unsigned char *data, size_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:47,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:47,1
    - Dst: mech_login_auth_continue
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 40
    functionDepth: 4
    functionLinenumber: 40
    functionLinenumberEnd: 51
    functionName: mech_login_auth_initial
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_output
    - strlen
    - mech_login_auth_continue
    linkageType: ''
    returnType: void
    signature: "void mech_login_auth_initial(struct sasl_server_mech_request *request,\n\t\t\tconst
      unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: sasl_server_mech_register_login
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-login.c
    functionUses: 2
    functionsReached:
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_register_login(struct sasl_server_instance *sinst)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:77,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:78,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:79,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:83,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:84,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:85,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:88,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:89,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - wb_mdata
    - path
    - param
    - event_parent
    argTypes:
    - struct winbind_auth_mech_data*
    - char*
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 94
    functionName: winbind_helper_create
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - event_create
    - p_new
    - array_foreach_elem
    - event_set_append_log_prefix
    - array_append
    linkageType: ''
    returnType: struct winbind_helper
    signature: "struct winbind_helper *\nwinbind_helper_create(struct winbind_auth_mech_data
      *wb_mdata,\n\t\t      const char *path, const char *param,\n\t\t      struct
      event *event_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:98,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct winbind_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: winbind_helper_terminated
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - e_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void winbind_helper_terminated(struct winbind_helper *helper)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:106,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:111,1
    - Dst: kill
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:114,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:115,1
    - Dst: waitpid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:117,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:118,1
    - Dst: winbind_helper_terminated
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct winbind_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 122
    functionName: winbind_helper_kill_now
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - e_debug
    - e_error
    - winbind_helper_terminated
    - kill
    - waitpid
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void winbind_helper_kill_now(struct winbind_helper *helper)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:126,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:133,1
    - Dst: winbind_helper_kill_now
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:136,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:140,1
    - Dst: kill
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:144,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:145,1
    - Dst: kill
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:147,1
    - Dst: winbind_helper_terminated
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:148,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct winbind_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 155
    functionName: winbind_helper_kill
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - winbind_helper_kill_now
    - e_debug
    - timeout_add_short
    - e_error
    - winbind_helper_terminated
    - kill
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void winbind_helper_kill(struct winbind_helper *helper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:159,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct winbind_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: winbind_helper_disconnect
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void winbind_helper_disconnect(struct winbind_helper *helper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: winbind_helper_disconnect
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:165,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct winbind_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 169
    functionName: winbind_helper_restart
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - winbind_helper_disconnect
    linkageType: ''
    returnType: void
    signature: void winbind_helper_restart(struct winbind_helper *helper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: winbind_helper_disconnect
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:173,1
    - Dst: winbind_helper_kill_now
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:174,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct winbind_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 176
    functionName: winbind_helper_destroy
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - winbind_helper_disconnect
    - event_unref
    - winbind_helper_kill_now
    linkageType: ''
    returnType: void
    signature: void winbind_helper_destroy(struct winbind_helper *helper)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:186,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:188,1
    - Dst: WIFSIGNALED
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:192,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:193,1
    - Dst: WTERMSIG
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:194,1
    - Dst: WIFEXITED
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:195,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:196,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:197,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:200,1
    - Dst: winbind_helper_terminated
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:202,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct winbind_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 203
    functionName: winbind_wait_pid
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - WIFEXITED
    - WEXITSTATUS
    - WIFSIGNALED
    - WTERMSIG
    - e_error
    - winbind_helper_terminated
    - waitpid
    linkageType: ''
    returnType: void
    signature: void winbind_wait_pid(struct winbind_helper *helper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: winbind_wait_pid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 3
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: sigchld_handler
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - winbind_wait_pid
    linkageType: ''
    returnType: void
    signature: void sigchld_handler(const siginfo_t *si ATTR_UNUSED, void *context)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:221,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:222,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:225,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:226,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:226,1
    - Dst: fork
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:230,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:232,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:233,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:233,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:234,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:234,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:242,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:243,1
    - Dst: dup2
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:245,1
    - Dst: dup2
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:246,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:247,1
    - Dst: execv_const
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:252,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:256,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:257,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:259,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:263,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:265,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:267,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct winbind_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 269
    functionName: winbind_helper_connect
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - fork
    - dup2
    - e_debug
    - i_close_fd
    - i_fatal
    - lib_signals_set_handler
    - e_error
    - o_stream_create_fd_autoclose
    - i_stream_create_fd_autoclose
    - execv_const
    - pipe
    linkageType: ''
    returnType: void
    signature: void winbind_helper_connect(struct winbind_helper *helper)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:277,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:288,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:288,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:289,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:290,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:291,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:293,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:294,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:294,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:295,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:296,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:298,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:303,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:309,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:312,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:319,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:321,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:323,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:347,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:350,1
    - Dst: t_base64_decode_str
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:351,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:352,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:355,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:357,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:359,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:362,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:365,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:366,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:368,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:372,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:373,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:376,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:381,1
    - Dst: t_base64_decode_str
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:384,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:385,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:388,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:392,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:393,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:398,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 64
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct winbind_auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 402
    functionName: do_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - sasl_server_request_set_authid
    - str_len
    - MAX_BASE64_ENCODED_SIZE
    - t_str_new
    - str_append_c
    - o_stream_get_error
    - t_strarray_join
    - i_stream_read_next_line
    - sasl_server_request_success
    - t_strsplit_spaces
    - o_stream_flush
    - str_data
    - base64_encode
    - e_error
    - t_base64_decode_str
    - i_assert
    - strcmp
    - sasl_server_request_output
    - e_info
    - container_of
    - o_stream_send
    - t_strdup_until
    - t_strconcat
    linkageType: ''
    returnType: enum helper_result
    signature: "enum helper_result do_auth_continue(struct winbind_auth_request *request,\n\t\t
      const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:409,1
    - Dst: winbind_helper_connect
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:412,1
    - Dst: sasl_server_mech_generic_auth_initial
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - auth_request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 414
    functionName: mech_winbind_auth_initial
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - container_of
    - sasl_server_mech_generic_auth_initial
    - winbind_helper_connect
    linkageType: ''
    returnType: void
    signature: "void mech_winbind_auth_initial(struct sasl_server_mech_request *auth_request,\n\t\t\t
      \ const unsigned char *data, size_t data_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:421,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:424,1
    - Dst: do_auth_continue
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:428,1
    - Dst: winbind_helper_restart
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:431,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - auth_request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 416
    functionDepth: 3
    functionLinenumber: 416
    functionLinenumberEnd: 434
    functionName: mech_winbind_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - do_auth_continue
    - winbind_helper_restart
    - container_of
    - sasl_server_request_failure
    linkageType: ''
    returnType: void
    signature: "void mech_winbind_auth_continue(struct sasl_server_mech_request *auth_request,\n\t\t\t
      \  const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - pool
    argTypes:
    - struct sasl_server_mech*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 445
    functionName: mech_winbind_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: "struct sasl_server_mech_request *\nmech_winbind_auth_new(const struct
      sasl_server_mech *mech ATTR_UNUSED,\n\t\t      pool_t pool)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:451,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 455
    functionName: mech_winbind_data_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct sasl_server_mech_data
    signature: struct sasl_server_mech_data *mech_winbind_data_new(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:460,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:463,1
    - Dst: winbind_helper_destroy
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:464,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mdata
    argTypes:
    - struct sasl_server_mech_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 457
    functionDepth: 4
    functionLinenumber: 457
    functionLinenumberEnd: 466
    functionName: mech_winbind_data_free
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - container_of
    - winbind_helper_destroy
    - array_clear
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void mech_winbind_data_free(struct sasl_server_mech_data *mdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 475
    functionName: mech_winbind_mech_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: struct sasl_server_mech *mech_winbind_mech_new(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:515,1
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:517,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:520,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:522,1
    - Dst: winbind_helper_create
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - sinst
    - mech_def
    - helper_param
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_mech_def*
    - char*
    - struct sasl_server_winbind_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 507
    functionDepth: 4
    functionLinenumber: 507
    functionLinenumberEnd: 526
    functionName: sasl_server_mech_register_winbind
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - winbind_helper_create
    - i_assert
    - sasl_server_mech_register
    - container_of
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_winbind(\n\tstruct sasl_server_instance
      *sinst,\n\tconst struct sasl_server_mech_def *mech_def, const char *helper_param,\n\tconst
      struct sasl_server_winbind_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_winbind
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sinst
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_winbind_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 528
    functionDepth: 5
    functionLinenumber: 528
    functionLinenumberEnd: 535
    functionName: sasl_server_mech_register_winbind_ntlm
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 2
    functionsReached:
    - sasl_server_mech_register_winbind
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_winbind_ntlm(\n\tstruct sasl_server_instance
      *sinst,\n\tconst struct sasl_server_winbind_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_winbind
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sinst
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct sasl_server_winbind_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 537
    functionDepth: 5
    functionLinenumber: 537
    functionLinenumberEnd: 543
    functionName: sasl_server_mech_register_winbind_gss_spnego
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-winbind.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_register_winbind
    linkageType: ''
    returnType: void
    signature: "void sasl_server_mech_register_winbind_gss_spnego(\n\tstruct sasl_server_instance
      *sinst,\n\tconst struct sasl_server_winbind_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random_fill
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:38,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:44,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 46
    functionName: get_cram_challenge
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c
    functionUses: 0
    functionsReached:
    - dec2str
    - random_fill
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *get_cram_challenge(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:53,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:60,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:61,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:65,1
    - Dst: hmac_md5_set_cram_context
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:66,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:67,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:67,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:68,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:70,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:72,1
    - Dst: sasl_server_request_password_mismatch
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:74,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - auth_request
    - credentials
    - size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 79
    functionName: verify_credentials
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c
    functionUses: 1
    functionsReached:
    - container_of
    - sasl_server_request_password_mismatch
    - hmac_update
    - strlen
    - hmac_final
    - hmac_md5_set_cram_context
    - mem_equals_timing_safe
    - e_error
    - sasl_server_request_success
    - sasl_server_request_failure
    - hmac_init
    - binary_to_hex
    linkageType: ''
    returnType: void
    signature: "void verify_credentials(struct sasl_server_mech_request *auth_request,\n\t\t
      \  const unsigned char *credentials, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:92,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:100,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:104,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - request
    - data
    - size
    argTypes:
    - struct cram_auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 109
    functionName: parse_cram_response
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c
    functionUses: 0
    functionsReached:
    - e_info
    - p_strndup
    linkageType: ''
    returnType: bool
    signature: "bool parse_cram_response(struct cram_auth_request *request,\n\t\t
      \   const unsigned char *data, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verify_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:117,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:121,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - auth_request
    - result
    argTypes:
    - struct sasl_server_mech_request*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 127
    functionName: credentials_callback
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_failure
    - sasl_server_request_internal_failure
    - verify_credentials
    linkageType: ''
    returnType: void
    signature: "void credentials_callback(struct sasl_server_mech_request *auth_request,\n\t\t
      \    const struct sasl_passdb_result *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:134,1
    - Dst: parse_cram_response
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:137,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:138,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:141,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:144,1
    - Dst: sasl_server_request_lookup_credentials
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - auth_request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 150
    functionName: mech_cram_md5_auth_continue
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_set_authid
    - container_of
    - sasl_server_request_lookup_credentials
    - parse_cram_response
    - sasl_server_request_failure
    linkageType: ''
    returnType: void
    signature: "void mech_cram_md5_auth_continue(struct sasl_server_mech_request *auth_request,\n\t\t\t
      \   const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:158,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:161,1
    - Dst: get_cram_challenge
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:161,1
    - Dst: sasl_server_request_output
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:162,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - auth_request
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: mech_cram_md5_auth_initial
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_output
    - p_strdup
    - container_of
    - get_cram_challenge
    - strlen
    linkageType: ''
    returnType: void
    signature: "void mech_cram_md5_auth_initial(struct sasl_server_mech_request *auth_request,\n\t\t\t
      \  const unsigned char *data ATTR_UNUSED,\n\t\t\t   size_t data_size ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - pool
    argTypes:
    - struct sasl_server_mech*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 175
    functionName: mech_cram_md5_auth_new
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: "struct sasl_server_mech_request *\nmech_cram_md5_auth_new(const struct
      sasl_server_mech *mech ATTR_UNUSED,\n\t\t       pool_t pool)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 195
    functionName: sasl_server_mech_register_cram_md5
    functionSourceFile: /src/dovecot/src/lib-sasl/sasl-server-mech-cram-md5.c
    functionUses: 2
    functionsReached:
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: void sasl_server_mech_register_cram_md5(struct sasl_server_instance
      *sinst)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-anonymous.c:17,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - _client
    - ATTR_UNUSED
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 29
    functionName: mech_anonymous_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-anonymous.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_anonymous_input(struct dsasl_client
      *_client,\n\t\t    const unsigned char *input ATTR_UNUSED, size_t input_len,\n\t\t
      \   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-anonymous.c:37,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-anonymous.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - _client
    - output_r
    - output_len_r
    - ATTR_UNUSED
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 46
    functionName: mech_anonymous_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-anonymous.c
    functionUses: 0
    functionsReached:
    - strlen
    - container_of
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_anonymous_output(struct dsasl_client
      *_client,\n\t\t     const unsigned char **output_r, size_t *output_len_r,\n\t\t
      \    const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sasl_oauth2_kvpair_parse
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:150,1
    - Dst: test_out_reason_quiet
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:152,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:156,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:159,1
    - Dst: sasl_oauth2_kvpair_check_value
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - in
    - in_end
    - test
    argTypes:
    - unsigned char**
    - unsigned char*
    - struct test_kvpair*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 160
    functionName: test_kvpair_valid_next
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c
    functionUses: 0
    functionsReached:
    - sasl_oauth2_kvpair_parse
    - test_out_reason_quiet
    - test_assert_strcmp
    - test_assert
    - sasl_oauth2_kvpair_check_value
    linkageType: ''
    returnType: void
    signature: "void test_kvpair_valid_next(const unsigned char **in, const unsigned
      char *in_end,\n\t\t       const struct test_kvpair *test)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:167,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:168,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:171,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:174,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:174,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:177,1
    - Dst: test_kvpair_valid_next
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:179,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:183,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:184,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:184,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:186,1
    - Dst: buffer_clear
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:187,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 190
    functionName: test_kvpair_valid
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c
    functionUses: 0
    functionsReached:
    - test_kvpair_valid_next
    - buffer_clear
    - strlen
    - t_strdup_printf
    - t_buffer_create
    - test_has_failed
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_kvpair_valid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:234,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:238,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:243,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:243,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:249,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:250,1
    - Dst: sasl_oauth2_kvpair_parse
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:256,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:260,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:262,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 264
    functionName: test_kvpair_invalid
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c
    functionUses: 0
    functionsReached:
    - sasl_oauth2_kvpair_parse
    - test_out_reason
    - t_strdup_noconst
    - strlen
    - t_strdup_printf
    - test_end
    - i_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_kvpair_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 266
    functionDepth: 7
    functionLinenumber: 266
    functionLinenumberEnd: 274
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-sasl/test-sasl-oauth2.c
    functionUses: 9
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:23,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:49,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:56,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 58
    functionName: mech_cram_md5_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - p_strndup
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_cram_md5_input(struct dsasl_client *client,\n\t\t
      \   const unsigned char *input, size_t input_len,\n\t\t    const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:66,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:87,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:88,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:89,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:89,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:90,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:92,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:93,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:94,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:95,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:97,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 4
    argNames:
    - client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 100
    functionName: mech_cram_md5_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-cram-md5.c
    functionUses: 0
    functionsReached:
    - container_of
    - str_append_c
    - hmac_update
    - str_data
    - str_len
    - strlen
    - hmac_final
    - binary_to_hex_append
    - hmac_init
    - str_append
    - str_new
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_cram_md5_output(struct dsasl_client
      *client,\n\t\t     const unsigned char **output_r, size_t *output_len_r,\n\t\t
      \    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - _client
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 33
    functionName: mech_login_input
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-login.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_login_input(struct dsasl_client *_client,\n\t\t
      const unsigned char *input ATTR_UNUSED,\n\t\t size_t input_len ATTR_UNUSED,\n\t\t
      const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-login.c:59,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-login.c:63,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-sasl/dsasl-client-mech-login.c:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 4
    argNames:
    - _client
    - output_r
    - output_len_r
    - error_r
    argTypes:
    - struct dsasl_client*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 67
    functionName: mech_login_output
    functionSourceFile: /src/dovecot/src/lib-sasl/dsasl-client-mech-login.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_unreached
    linkageType: ''
    returnType: enum dsasl_client_result
    signature: "enum dsasl_client_result mech_login_output(struct dsasl_client *_client,\n\t\t
      \ const unsigned char **output_r, size_t *output_len_r,\n\t\t  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/passdb-imap.c:46,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/passdb-imap.c:47,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/passdb-imap.c:49,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct imapc_command_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 52
    functionName: passdb_imap_get_failure_result
    functionSourceFile: /src/dovecot/src/auth/passdb-imap.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: enum passdb_result
    signature: enum passdb_result passdb_imap_get_failure_result(const struct imapc_command_reply
      *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/passdb-imap.c:56,1
    - Dst: imapc_client_deinit
      Src: /src/dovecot/src/auth/passdb-imap.c:57,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-imap.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct imap_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: passdb_imap_login_free
    functionSourceFile: /src/dovecot/src/auth/passdb-imap.c
    functionUses: 0
    functionsReached:
    - imapc_client_deinit
    - auth_request_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void passdb_imap_login_free(struct imap_auth_request *request)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: passdb_imap_get_failure_result
      Src: /src/dovecot/src/auth/passdb-imap.c:73,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb-imap.c:74,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-imap.c:74,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-imap.c:80,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-imap.c:80,1
    - Dst: struct imap_auth_request*::verify_callback
      Src: /src/dovecot/src/auth/passdb-imap.c:84,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/auth/passdb-imap.c:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct imapc_command_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 89
    functionName: passdb_imap_login_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-imap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - timeout_add_short
    - e_error
    - struct imap_auth_request*::verify_callback
    - passdb_imap_get_failure_result
    linkageType: ''
    returnType: void
    signature: "void passdb_imap_login_callback(const struct imapc_command_reply *reply,\n\t\t\t
      \  void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-imap.c:101,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-imap.c:102,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-imap.c:106,1
    - Dst: imapc_client_init
      Src: /src/dovecot/src/auth/passdb-imap.c:107,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-imap.c:107,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-imap.c:111,1
    - Dst: imapc_client_set_login_callback
      Src: /src/dovecot/src/auth/passdb-imap.c:112,1
    - Dst: imapc_client_login
      Src: /src/dovecot/src/auth/passdb-imap.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - auth_request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 91
    functionDepth: 8
    functionLinenumber: 91
    functionLinenumberEnd: 114
    functionName: passdb_imap_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-imap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - p_new
    - auth_request_ref
    - imapc_client_login
    - imapc_client_set_login_callback
    - imapc_client_init
    - auth_request_set_passdb_fields
    - callback
    linkageType: ''
    returnType: void
    signature: "void passdb_imap_verify_plain(struct auth_request *auth_request,\n\t\t\t
      const char *password,\n\t\t\t verify_plain_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb-imap.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: authdb_imap_init
    functionSourceFile: /src/dovecot/src/auth/passdb-imap.c
    functionUses: 0
    functionsReached:
    - passdb_register_module
    linkageType: ''
    returnType: void
    signature: void authdb_imap_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_unregister_module
      Src: /src/dovecot/src/auth/passdb-imap.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: authdb_imap_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb-imap.c
    functionUses: 0
    functionsReached:
    - passdb_unregister_module
    linkageType: ''
    returnType: void
    signature: void authdb_imap_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-request.h:449,1
    - Dst: array_back_modifiable
      Src: /src/dovecot/src/auth/auth-request.h:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 453
    functionName: authdb_event
    functionSourceFile: /src/dovecot/src/auth/auth-request.h
    functionUses: 2
    functionsReached:
    - array_count
    - array_back_modifiable
    linkageType: ''
    returnType: struct event
    signature: struct event *authdb_event(const struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/passdb-pam.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-pam.c:108,1
    - Dst: calloc
      Src: /src/dovecot/src/auth/passdb-pam.c:116,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/auth/passdb-pam.c:118,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-pam.c:121,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:121,1
    - Dst: strdup
      Src: /src/dovecot/src/auth/passdb-pam.c:129,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/auth/passdb-pam.c:131,1
    - Dst: t_strdup
      Src: /src/dovecot/src/auth/passdb-pam.c:136,1
    - Dst: strdup
      Src: /src/dovecot/src/auth/passdb-pam.c:137,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/auth/passdb-pam.c:139,1
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/passdb-pam.c:148,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/passdb-pam.c:149,1
    - Dst: free
      Src: /src/dovecot/src/auth/passdb-pam.c:150,1
    - Dst: free
      Src: /src/dovecot/src/auth/passdb-pam.c:154,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 4
    argNames:
    - num_msg
    - msg
    - resp_r
    - appdata_ptr
    argTypes:
    - int
    - pam_const**
    - struct pam_response**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 164
    functionName: pam_userpass_conv
    functionSourceFile: /src/dovecot/src/auth/passdb-pam.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - container_of
    - e_debug
    - i_fatal_status
    - strlen
    - strdup
    - free
    - t_strdup
    - calloc
    - safe_memset
    linkageType: ''
    returnType: int
    signature: "int pam_userpass_conv(int num_msg, pam_const struct pam_message **msg,\n\t\t
      \ struct pam_response **resp_r, void *appdata_ptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/passdb-pam.c:183,1
    - Dst: stat
      Src: /src/dovecot/src/auth/passdb-pam.c:184,1
    - Dst: stat
      Src: /src/dovecot/src/auth/passdb-pam.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 193
    functionName: pam_get_missing_service_file_path
    functionSourceFile: /src/dovecot/src/auth/passdb-pam.c
    functionUses: 0
    functionsReached:
    - stat
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      pam_get_missing_service_file_path(const char *service ATTR_UNUSED)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-pam.c:199,1
    - Dst: pam_authenticate
      Src: /src/dovecot/src/auth/passdb-pam.c:205,1
    - Dst: pam_get_missing_service_file_path
      Src: /src/dovecot/src/auth/passdb-pam.c:206,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/passdb-pam.c:212,1
    - Dst: pam_strerror
      Src: /src/dovecot/src/auth/passdb-pam.c:213,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/passdb-pam.c:218,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:219,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:219,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/passdb-pam.c:221,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/passdb-pam.c:223,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb-pam.c:227,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:227,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/passdb-pam.c:230,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb-pam.c:232,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:232,1
    - Dst: pam_setcred
      Src: /src/dovecot/src/auth/passdb-pam.c:241,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:243,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:243,1
    - Dst: pam_strerror
      Src: /src/dovecot/src/auth/passdb-pam.c:245,1
    - Dst: pam_acct_mgmt
      Src: /src/dovecot/src/auth/passdb-pam.c:251,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:252,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:252,1
    - Dst: pam_strerror
      Src: /src/dovecot/src/auth/passdb-pam.c:254,1
    - Dst: pam_open_session
      Src: /src/dovecot/src/auth/passdb-pam.c:259,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:260,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:260,1
    - Dst: pam_strerror
      Src: /src/dovecot/src/auth/passdb-pam.c:262,1
    - Dst: pam_close_session
      Src: /src/dovecot/src/auth/passdb-pam.c:266,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:267,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:267,1
    - Dst: pam_strerror
      Src: /src/dovecot/src/auth/passdb-pam.c:269,1
    - Dst: pam_get_item
      Src: /src/dovecot/src/auth/passdb-pam.c:274,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:276,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:276,1
    - Dst: pam_strerror
      Src: /src/dovecot/src/auth/passdb-pam.c:278,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-pam.c:281,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 56
    argCount: 3
    argNames:
    - request
    - pamh
    - service
    argTypes:
    - struct auth_request*
    - pam_handle_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 283
    functionName: try_pam_auth
    functionSourceFile: /src/dovecot/src/auth/passdb-pam.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - container_of
    - auth_request_db_log_unknown_user
    - pam_close_session
    - auth_request_set_field
    - t_strdup_printf
    - pam_get_item
    - e_error
    - pam_authenticate
    - pam_get_missing_service_file_path
    - pam_setcred
    - pam_open_session
    - pam_acct_mgmt
    - t_strconcat
    - pam_strerror
    linkageType: ''
    returnType: int
    signature: "int try_pam_auth(struct auth_request *request, pam_handle_t *pamh,\n\t\t\tconst
      char *service)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/passdb-pam.c:290,1
    - Dst: pam_set_item
      Src: /src/dovecot/src/auth/passdb-pam.c:292,1
    - Dst: pam_set_item
      Src: /src/dovecot/src/auth/passdb-pam.c:293,1
    - Dst: pam_set_item
      Src: /src/dovecot/src/auth/passdb-pam.c:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - request
    - pamh
    argTypes:
    - struct auth_request*
    - pam_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 296
    functionName: set_pam_items
    functionSourceFile: /src/dovecot/src/auth/passdb-pam.c
    functionUses: 0
    functionsReached:
    - pam_set_item
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: void set_pam_items(struct auth_request *request, pam_handle_t *pamh)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/passdb-pam.c:311,1
    - Dst: pam_start
      Src: /src/dovecot/src/auth/passdb-pam.c:315,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:317,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:317,1
    - Dst: pam_strerror
      Src: /src/dovecot/src/auth/passdb-pam.c:319,1
    - Dst: set_pam_items
      Src: /src/dovecot/src/auth/passdb-pam.c:323,1
    - Dst: try_pam_auth
      Src: /src/dovecot/src/auth/passdb-pam.c:324,1
    - Dst: pam_end
      Src: /src/dovecot/src/auth/passdb-pam.c:325,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:326,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:326,1
    - Dst: pam_strerror
      Src: /src/dovecot/src/auth/passdb-pam.c:328,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-pam.c:349,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 3
    argNames:
    - request
    - service
    - password
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 353
    functionName: pam_verify_plain_call
    functionSourceFile: /src/dovecot/src/auth/passdb-pam.c
    functionUses: 0
    functionsReached:
    - i_zero
    - authdb_event
    - try_pam_auth
    - auth_request_set_field
    - pam_start
    - e_error
    - set_pam_items
    - pam_end
    - pam_strerror
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result pam_verify_plain_call(struct auth_request *request,
      const char *service,\n\t\t      const char *password)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-pam.c:360,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-pam.c:366,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:366,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-pam.c:368,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-pam.c:369,1
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-pam.c:378,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-pam.c:379,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-pam.c:380,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-pam.c:384,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-pam.c:384,1
    - Dst: pam_verify_plain_call
      Src: /src/dovecot/src/auth/passdb-pam.c:387,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-pam.c:388,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-pam.c:389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 355
    functionDepth: 4
    functionLinenumber: 355
    functionLinenumberEnd: 390
    functionName: pam_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-pam.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - container_of
    - e_debug
    - settings_free
    - e_error
    - auth_request_set_passdb_fields
    - callback
    - pam_verify_plain_call
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void pam_verify_plain(struct auth_request *request, const char *password,\n\t\t
      verify_plain_callback_t *callback)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-pam.c:402,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-pam.c:407,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-pam.c:412,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-pam.c:416,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/passdb-pam.c:417,1
    - Dst: passdb_set_cache_key
      Src: /src/dovecot/src/auth/passdb-pam.c:419,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-pam.c:426,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-pam.c:427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - pool
    - event
    - passdb_params
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct passdb_parameters*
    - struct passdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 431
    functionName: pam_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb-pam.c
    functionUses: 0
    functionsReached:
    - p_new
    - passdb_set_cache_key
    - t_strdup_printf
    - settings_free
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int pam_preinit(pool_t pool, struct event *event,\n\t    const struct
      passdb_parameters *passdb_params,\n\t    struct passdb_module **module_r, const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_default_protocol
      Src: /src/dovecot/src/auth/test-auth-client.c:15,1
    - Dst: net_accept
      Src: /src/dovecot/src/auth/test-auth-client.c:16,1
    - Dst: auth_client_connection_create
      Src: /src/dovecot/src/auth/test-auth-client.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server_fd
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 18
    functionName: auth_client_connected
    functionSourceFile: /src/dovecot/src/auth/test-auth-client.c
    functionUses: 0
    functionsReached:
    - auth_client_connection_create
    - auth_default_protocol
    - net_accept
    linkageType: ''
    returnType: void
    signature: void auth_client_connected(int *server_fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-client.c:26,1
    - Dst: auth_client_request_continue
      Src: /src/dovecot/src/auth/test-auth-client.c:28,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-client.c:31,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/auth/test-auth-client.c:32,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/auth/test-auth-client.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - req
    - status
    - b64
    - args
    - context
    argTypes:
    - struct auth_client_request*
    - enum auth_request_status
    - char*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 34
    functionName: test_callback
    functionSourceFile: /src/dovecot/src/auth/test-auth-client.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - auth_client_request_continue
    - test_assert_cmp
    - test_assert_strcmp
    linkageType: ''
    returnType: void
    signature: "void test_callback(struct auth_client_request *req, enum auth_request_status
      status,\n\t      const char *b64, const char *const *args, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-client.c:38,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/auth/test-auth-client.c:39,1
    - Dst: test_auth_init
      Src: /src/dovecot/src/auth/test-auth-client.c:40,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/auth/test-auth-client.c:42,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/auth/test-auth-client.c:43,1
    - Dst: io_add
      Src: /src/dovecot/src/auth/test-auth-client.c:44,1
    - Dst: auth_client_init
      Src: /src/dovecot/src/auth/test-auth-client.c:47,1
    - Dst: getpid
      Src: /src/dovecot/src/auth/test-auth-client.c:47,1
    - Dst: auth_client_connect
      Src: /src/dovecot/src/auth/test-auth-client.c:48,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/auth/test-auth-client.c:50,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/auth/test-auth-client.c:51,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/auth/test-auth-client.c:52,1
    - Dst: auth_client_request_new
      Src: /src/dovecot/src/auth/test-auth-client.c:61,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/auth/test-auth-client.c:63,1
    - Dst: auth_client_deinit
      Src: /src/dovecot/src/auth/test-auth-client.c:65,1
    - Dst: io_remove
      Src: /src/dovecot/src/auth/test-auth-client.c:66,1
    - Dst: auth_client_connections_destroy_all
      Src: /src/dovecot/src/auth/test-auth-client.c:67,1
    - Dst: test_auth_deinit
      Src: /src/dovecot/src/auth/test-auth-client.c:68,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/auth/test-auth-client.c:69,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/auth/test-auth-client.c:70,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-client.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 72
    functionName: test_auth_client
    functionSourceFile: /src/dovecot/src/auth/test-auth-client.c
    functionUses: 0
    functionsReached:
    - net_listen_unix
    - getpid
    - io_remove
    - io_loop_destroy
    - auth_client_is_connected
    - io_loop_run
    - io_loop_handler_run
    - auth_client_init
    - test_end
    - test_auth_init
    - auth_client_connect
    - auth_client_connections_destroy_all
    - i_unlink_if_exists
    - io_add
    - io_loop_create
    - auth_client_deinit
    - io_loop_set_running
    - test_auth_deinit
    - auth_client_request_new
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/auth/test-auth-client.c:87,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/auth/test-auth-client.c:90,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/auth/test-auth-client.c:92,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/auth/test-auth-client.c:93,1
    - Dst: test_run
      Src: /src/dovecot/src/auth/test-auth-client.c:94,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/auth/test-auth-client.c:95,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/auth/test-auth-client.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 74
    functionDepth: 7
    functionLinenumber: 74
    functionLinenumberEnd: 99
    functionName: main
    functionSourceFile: /src/dovecot/src/auth/test-auth-client.c
    functionUses: 9
    functionsReached:
    - io_loop_set_current
    - test_run
    - io_loop_destroy
    - io_loop_create
    - master_service_init_finish
    - master_service_init
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pass
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 6
    functionName: IS_VALID_PASSWD
    functionSourceFile: /src/dovecot/src/auth/passdb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_PASSWD(pass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/auth/test-auth.c:49,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/auth/test-auth.c:51,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/auth/test-auth.c:52,1
    - Dst: passdbs_init
      Src: /src/dovecot/src/auth/test-auth.c:56,1
    - Dst: userdbs_init
      Src: /src/dovecot/src/auth/test-auth.c:57,1
    - Dst: passdb_mock_mod_init
      Src: /src/dovecot/src/auth/test-auth.c:58,1
    - Dst: password_schemes_register_all
      Src: /src/dovecot/src/auth/test-auth.c:59,1
    - Dst: password_schemes_allow_weak
      Src: /src/dovecot/src/auth/test-auth.c:60,1
    - Dst: auth_sasl_preinit
      Src: /src/dovecot/src/auth/test-auth.c:62,1
    - Dst: auths_preinit
      Src: /src/dovecot/src/auth/test-auth.c:63,1
    - Dst: auths_init
      Src: /src/dovecot/src/auth/test-auth.c:64,1
    - Dst: auth_token_init
      Src: /src/dovecot/src/auth/test-auth.c:65,1
    - Dst: auth_sasl_init
      Src: /src/dovecot/src/auth/test-auth.c:66,1
    - Dst: auth_penalty_init
      Src: /src/dovecot/src/auth/test-auth.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 46
    functionDepth: 3
    functionLinenumber: 46
    functionLinenumberEnd: 69
    functionName: test_auth_init
    functionSourceFile: /src/dovecot/src/auth/test-auth.c
    functionUses: 1
    functionsReached:
    - auth_sasl_preinit
    - auths_init
    - auth_sasl_init
    - auths_preinit
    - auth_token_init
    - password_schemes_register_all
    - password_schemes_allow_weak
    - settings_simple_init
    - passdb_mock_mod_init
    - userdbs_init
    - passdbs_init
    - auth_penalty_init
    - time
    - settings_get_or_fatal
    linkageType: ''
    returnType: void
    signature: void test_auth_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_penalty_deinit
      Src: /src/dovecot/src/auth/test-auth.c:73,1
    - Dst: db_oauth2_deinit
      Src: /src/dovecot/src/auth/test-auth.c:74,1
    - Dst: auths_deinit
      Src: /src/dovecot/src/auth/test-auth.c:75,1
    - Dst: auth_token_deinit
      Src: /src/dovecot/src/auth/test-auth.c:76,1
    - Dst: password_schemes_deinit
      Src: /src/dovecot/src/auth/test-auth.c:77,1
    - Dst: passdb_mock_mod_deinit
      Src: /src/dovecot/src/auth/test-auth.c:78,1
    - Dst: passdbs_deinit
      Src: /src/dovecot/src/auth/test-auth.c:79,1
    - Dst: userdbs_deinit
      Src: /src/dovecot/src/auth/test-auth.c:80,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/test-auth.c:81,1
    - Dst: auths_free
      Src: /src/dovecot/src/auth/test-auth.c:82,1
    - Dst: auth_sasl_deinit
      Src: /src/dovecot/src/auth/test-auth.c:83,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/test-auth.c:84,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/auth/test-auth.c:85,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/auth/test-auth.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 87
    functionName: test_auth_deinit
    functionSourceFile: /src/dovecot/src/auth/test-auth.c
    functionUses: 1
    functionsReached:
    - settings_simple_deinit
    - userdbs_deinit
    - auth_token_deinit
    - event_unref
    - auth_sasl_deinit
    - passdb_mock_mod_deinit
    - auths_deinit
    - settings_free
    - auth_penalty_deinit
    - i_unlink_if_exists
    - db_oauth2_deinit
    - auths_free
    - password_schemes_deinit
    - passdbs_deinit
    linkageType: ''
    returnType: void
    signature: void test_auth_deinit(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_get_req_ctx
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:18,1
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:20,1
    - Dst: p_strndup
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:41,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:51,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:52,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:53,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:56,1
    - Dst: auth_token_get
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:59,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:63,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:64,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:67,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:69,1
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:75,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:75,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 76
    functionName: mech_dovecot_token_auth_continue
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c
    functionUses: 0
    functionsReached:
    - e_info
    - container_of
    - p_strndup
    - sasl_server_request_set_authid
    - auth_token_get
    - auth_request_set_field
    - str_equals_timing_almost_safe
    - strlen
    - sasl_server_request_get_req_ctx
    - sasl_server_request_failure
    - sasl_server_request_success
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void mech_dovecot_token_auth_continue(struct sasl_server_mech_request
      *request,\n\t\t\t\t const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_hidden
      Src: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 4
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: auth_sasl_mech_register_dovecot_token
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-dovecot-token.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_register_hidden
    linkageType: ''
    returnType: struct sasl_server_mech
    signature: 'struct sasl_server_mech *

      auth_sasl_mech_register_dovecot_token(struct sasl_server_instance *sinst)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:35,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:41,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:45,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:47,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:48,1
    - Dst: auth_request_var_expand_with_table
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:49,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:51,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:51,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:57,1
    - Dst: str_begins
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:62,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:63,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:65,1
    - Dst: auth_request_set_userdb_fields_ex
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:67,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 3
    argNames:
    - request
    - fields
    - pwd_fields
    argTypes:
    - struct auth_request*
    - char**
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 71
    functionName: passwd_file_add_extra_fields
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - authdb_event
    - str_c
    - auth_fields_add
    - auth_request_get_var_expand_table
    - str_begins
    - auth_request_var_expand_with_table
    - e_error
    - str_truncate
    - t_strdup_until
    - auth_request_set_userdb_field
    - auth_request_set_userdb_fields_ex
    linkageType: ''
    returnType: int
    signature: "int passwd_file_add_extra_fields(struct auth_request *request,\n\t\t\t
      \    const char *const *fields,\n\t\t\t     struct auth_fields *pwd_fields)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:78,1
    - Dst: db_passwd_file_lookup
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:82,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:85,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:90,1
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:91,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:94,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:96,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:99,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:102,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:104,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:107,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:112,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:115,1
    - Dst: passwd_file_add_extra_fields
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:120,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:122,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:123,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:127,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:128,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - auth_request
    - callback
    argTypes:
    - struct auth_request*
    - userdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 129
    functionName: passwd_file_lookup
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd-file.c
    functionUses: 1
    functionsReached:
    - dec2str
    - pool_alloconly_create
    - container_of
    - auth_fields_init
    - auth_fields_add
    - db_passwd_file_lookup
    - pool_unref
    - callback
    - passwd_file_add_extra_fields
    - auth_request_set_userdb_field
    linkageType: ''
    returnType: void
    signature: "void passwd_file_lookup(struct auth_request *auth_request,\n\t\t\t
      \      userdb_callback_t *callback)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:137,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:141,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:148,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:151,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:154,1
    - Dst: var_expand_program_execute
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:155,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:157,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:157,1
    - Dst: db_passwd_fix_path
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:164,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:164,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:165,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:165,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:167,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:171,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:173,1
    - Dst: open
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:177,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:179,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:179,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 3
    argNames:
    - auth_request
    - callback
    - context
    argTypes:
    - struct auth_request*
    - userdb_iter_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 131
    functionDepth: 4
    functionLinenumber: 131
    functionLinenumberEnd: 186
    functionName: passwd_file_iterate_init
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - t_str_new
    - container_of
    - str_c
    - auth_request_get_var_expand_table
    - var_expand_program_execute
    - open
    - e_error
    - i_strdup
    - i_new
    - db_passwd_fix_path
    - i_stream_create_fd_autoclose
    linkageType: ''
    returnType: struct userdb_iterate_context
    signature: "struct userdb_iterate_context *\npasswd_file_iterate_init(struct auth_request
      *auth_request,\n\t\t\t userdb_iter_callback_t *callback, void *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:191,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:197,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:201,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:202,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:209,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:209,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:211,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:216,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:218,1
    - Dst: t_strcut
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:218,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 19
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 219
    functionName: passwd_file_iterate_next
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - strchr
    - authdb_event
    - container_of
    - i_strchr_to_next
    - struct userdb_iterate_context*::callback
    - i_stream_read_next_line
    - e_error
    - i_stream_get_error
    - t_strcut
    linkageType: ''
    returnType: void
    signature: void passwd_file_iterate_next(struct userdb_iterate_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:225,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:228,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:229,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: passwd_file_iterate_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_free
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int passwd_file_iterate_deinit(struct userdb_iterate_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:242,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:246,1
    - Dst: db_passwd_file_init
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:247,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - pool
    - event
    - userdb_params ATTR_UNUSED
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct userdb_parameters*
    - struct userdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 253
    functionName: passwd_file_preinit
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - db_passwd_file_init
    - settings_get
    - p_new
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int passwd_file_preinit(pool_t pool, struct event *event,\n\t\t    const
      struct userdb_parameters *userdb_params ATTR_UNUSED,\n\t\t    struct userdb_module
      **module_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:258,1
    - Dst: db_passwd_file_parse
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 261
    functionName: passwd_file_init
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd-file.c
    functionUses: 1
    functionsReached:
    - db_passwd_file_parse
    - container_of
    linkageType: ''
    returnType: void
    signature: void passwd_file_init(struct userdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:266,1
    - Dst: db_passwd_file_unref
      Src: /src/dovecot/src/auth/userdb-passwd-file.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: passwd_file_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - db_passwd_file_unref
    - container_of
    linkageType: ''
    returnType: void
    signature: void passwd_file_deinit(struct userdb_module *_module)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/userdb-static.c:34,1
    - Dst: auth_request_set_userdb_fields
      Src: /src/dovecot/src/auth/userdb-static.c:36,1
    - Dst: struct static_context*::callback
      Src: /src/dovecot/src/auth/userdb-static.c:37,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/userdb-static.c:38,1
    - Dst: struct static_context*::callback
      Src: /src/dovecot/src/auth/userdb-static.c:44,1
    - Dst: struct static_context*::callback
      Src: /src/dovecot/src/auth/userdb-static.c:49,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-static.c:52,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-static.c:52,1
    - Dst: struct static_context*::callback
      Src: /src/dovecot/src/auth/userdb-static.c:57,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/userdb-static.c:61,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 4
    argNames:
    - result
    - credentials ATTR_UNUSED
    - ATTR_UNUSED
    - auth_request
    argTypes:
    - enum passdb_result
    - unsigned char*
    - size_t
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 62
    functionName: static_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/userdb-static.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_request_set_userdb_fields
    - auth_request_set_state
    - e_error
    - i_free
    - struct static_context*::callback
    linkageType: ''
    returnType: void
    signature: "void static_credentials_callback(enum passdb_result result,\n\t\t\t
      \   const unsigned char *credentials ATTR_UNUSED,\n\t\t\t    size_t size ATTR_UNUSED,\n\t\t\t
      \   struct auth_request *auth_request)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/auth/userdb-static.c:77,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/userdb-static.c:82,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/userdb-static.c:83,1
    - Dst: auth_request_lookup_credentials
      Src: /src/dovecot/src/auth/userdb-static.c:92,1
    - Dst: static_credentials_callback
      Src: /src/dovecot/src/auth/userdb-static.c:95,1
    - Dst: auth_request_set_userdb_fields
      Src: /src/dovecot/src/auth/userdb-static.c:100,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-static.c:101,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-static.c:103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - auth_request
    - callback
    argTypes:
    - struct auth_request*
    - userdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 105
    functionName: static_lookup
    functionSourceFile: /src/dovecot/src/auth/userdb-static.c
    functionUses: 0
    functionsReached:
    - auth_request_set_userdb_fields
    - auth_request_set_state
    - auth_request_lookup_credentials
    - i_new
    - static_credentials_callback
    - callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void static_lookup(struct auth_request *auth_request,\n\t\t\t  userdb_callback_t
      *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-static.c:116,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-static.c:120,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-static.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - pool
    - event
    - userdb_params ATTR_UNUSED
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct userdb_parameters*
    - struct userdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 127
    functionName: static_preinit
    functionSourceFile: /src/dovecot/src/auth/userdb-static.c
    functionUses: 0
    functionsReached:
    - settings_get
    - p_new
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int static_preinit(pool_t pool, struct event *event,\n\t       const
      struct userdb_parameters *userdb_params ATTR_UNUSED,\n\t       struct userdb_module
      **module_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-passwd-file.c:64,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-passwd-file.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - key
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: db_passwd_file_expand
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - auth_fields_find
    linkageType: ''
    returnType: int
    signature: "int db_passwd_file_expand(const char *key, const char **value_r,\n\t\t\t\t
      void *context, const char **error_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/db-passwd-file.c:89,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:90,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-passwd-file.c:94,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/db-passwd-file.c:95,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/db-passwd-file.c:97,1
    - Dst: t_strndup
      Src: /src/dovecot/src/auth/db-passwd-file.c:105,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/auth/db-passwd-file.c:107,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/auth/db-passwd-file.c:110,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/db-passwd-file.c:112,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:113,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/auth/db-passwd-file.c:118,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/db-passwd-file.c:122,1
    - Dst: userdb_parse_uid
      Src: /src/dovecot/src/auth/db-passwd-file.c:133,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:135,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:144,1
    - Dst: userdb_parse_gid
      Src: /src/dovecot/src/auth/db-passwd-file.c:153,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:155,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/auth/db-passwd-file.c:169,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/db-passwd-file.c:179,1
    - Dst: p_strsplit_spaces
      Src: /src/dovecot/src/auth/db-passwd-file.c:184,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/auth/db-passwd-file.c:187,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 71
    argCount: 4
    argNames:
    - pw
    - username
    - pass
    - args
    argTypes:
    - struct passwd_file*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 188
    functionName: passwd_file_add
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_strdup_empty
    - p_new
    - userdb_parse_gid
    - t_strarray_join
    - strlen
    - t_strndup
    - e_error
    - p_strconcat
    - userdb_parse_uid
    - hash_table_insert
    - p_strsplit_spaces
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void passwd_file_add(struct passwd_file *pw, const char *username,\n\t\tconst
      char *pass, const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/auth/db-passwd-file.c:195,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/db-passwd-file.c:197,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/db-passwd-file.c:199,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/auth/db-passwd-file.c:200,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-passwd-file.c:201,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/auth/db-passwd-file.c:203,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/auth/db-passwd-file.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - db
    - expanded_path
    argTypes:
    - struct db_passwd_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 206
    functionName: passwd_file_new
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_set_append_log_prefix
    - t_strdup_printf
    - i_strdup
    - i_new
    - hash_table_insert
    - hash_table_is_created
    linkageType: ''
    returnType: struct passwd_file
    signature: 'struct passwd_file *

      passwd_file_new(struct db_passwd_file *db, const char *expanded_path)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/auth/db-passwd-file.c:219,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/auth/db-passwd-file.c:222,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-passwd-file.c:224,1
    - Dst: fstat
      Src: /src/dovecot/src/auth/db-passwd-file.c:230,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-passwd-file.c:231,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/auth/db-passwd-file.c:233,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/db-passwd-file.c:241,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/auth/db-passwd-file.c:242,1
    - Dst: time
      Src: /src/dovecot/src/auth/db-passwd-file.c:244,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/auth/db-passwd-file.c:245,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/auth/db-passwd-file.c:246,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/auth/db-passwd-file.c:247,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/auth/db-passwd-file.c:252,1
    - Dst: passwd_file_add
      Src: /src/dovecot/src/auth/db-passwd-file.c:255,1
    - Dst: passwd_file_add
      Src: /src/dovecot/src/auth/db-passwd-file.c:258,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - pw
    - startup
    - error_r
    argTypes:
    - struct passwd_file*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 261
    functionName: passwd_file_open
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_stream_create_fd
    - hash_table_create
    - i_close_fd
    - open
    - t_strdup_printf
    - passwd_file_add
    - i_stream_read_next_line
    - t_strsplit
    - fstat
    - i_stream_set_return_partial_line
    - eacces_error_get
    - time
    linkageType: ''
    returnType: int
    signature: "int passwd_file_open(struct passwd_file *pw, bool startup,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd_path
      Src: /src/dovecot/src/auth/db-passwd-file.c:279,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/auth/db-passwd-file.c:281,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/db-passwd-file.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct passwd_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 283
    functionName: passwd_file_close
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - i_close_fd_path
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void passwd_file_close(struct passwd_file *pw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/auth/db-passwd-file.c:287,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/auth/db-passwd-file.c:288,1
    - Dst: passwd_file_close
      Src: /src/dovecot/src/auth/db-passwd-file.c:290,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-passwd-file.c:291,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:292,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct passwd_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 294
    functionName: passwd_file_free
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - event_unref
    - hash_table_remove
    - hash_table_is_created
    - passwd_file_close
    - i_free
    linkageType: ''
    returnType: void
    signature: void passwd_file_free(struct passwd_file *pw)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/auth/db-passwd-file.c:303,1
    - Dst: stat
      Src: /src/dovecot/src/auth/db-passwd-file.c:306,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:312,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:312,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/auth/db-passwd-file.c:313,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/db-passwd-file.c:315,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:315,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:319,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:319,1
    - Dst: passwd_file_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:324,1
    - Dst: passwd_file_close
      Src: /src/dovecot/src/auth/db-passwd-file.c:329,1
    - Dst: passwd_file_open
      Src: /src/dovecot/src/auth/db-passwd-file.c:330,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:331,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:331,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - request
    - pw
    argTypes:
    - struct auth_request*
    - struct passwd_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 296
    functionDepth: 3
    functionLinenumber: 296
    functionLinenumberEnd: 337
    functionName: passwd_file_sync
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - passwd_file_free
    - authdb_event
    - e_info
    - passwd_file_open
    - e_error
    - stat
    - passwd_file_close
    - eacces_error_get
    - hash_table_is_created
    linkageType: ''
    returnType: int
    signature: "int passwd_file_sync(struct auth_request *request,\n\t\t\t    struct
      passwd_file *pw)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-passwd-file.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 349
    functionName: db_passwd_file_find
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct db_passwd_file
    signature: struct db_passwd_file *db_passwd_file_find(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/db-passwd-file.c:357,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/db-passwd-file.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct db_passwd_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 359
    functionName: db_passwd_file_set_userdb
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    linkageType: ''
    returnType: void
    signature: void db_passwd_file_set_userdb(struct db_passwd_file *db)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: db_passwd_file_find
      Src: /src/dovecot/src/auth/db-passwd-file.c:367,1
    - Dst: db_passwd_file_set_userdb
      Src: /src/dovecot/src/auth/db-passwd-file.c:371,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/db-passwd-file.c:375,1
    - Dst: db_passwd_file_set_userdb
      Src: /src/dovecot/src/auth/db-passwd-file.c:378,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/db-passwd-file.c:379,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/auth/db-passwd-file.c:380,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/auth/db-passwd-file.c:383,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-passwd-file.c:384,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/auth/db-passwd-file.c:386,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/db-passwd-file.c:387,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:393,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/auth/db-passwd-file.c:395,1
    - Dst: passwd_file_new
      Src: /src/dovecot/src/auth/db-passwd-file.c:398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - path
    - userdb
    - debug
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 404
    functionName: db_passwd_file_init
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 1
    functionsReached:
    - event_set_forced_debug
    - event_create
    - hash_table_create
    - db_passwd_file_set_userdb
    - var_expand_program_create
    - i_fatal
    - i_strdup
    - db_passwd_file_find
    - var_expand_program_free
    - i_new
    - passwd_file_new
    - var_expand_program_variables
    linkageType: ''
    returnType: struct db_passwd_file
    signature: 'struct db_passwd_file *

      db_passwd_file_init(const char *path, bool userdb, bool debug)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: passwd_file_open
      Src: /src/dovecot/src/auth/db-passwd-file.c:412,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct db_passwd_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 406
    functionDepth: 3
    functionLinenumber: 406
    functionLinenumberEnd: 415
    functionName: db_passwd_file_parse
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 1
    functionsReached:
    - e_error
    - passwd_file_open
    linkageType: ''
    returnType: void
    signature: void db_passwd_file_parse(struct db_passwd_file *db)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-passwd-file.c:426,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:436,1
    - Dst: passwd_file_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:439,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/auth/db-passwd-file.c:441,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/auth/db-passwd-file.c:442,1
    - Dst: passwd_file_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:443,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/auth/db-passwd-file.c:444,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/auth/db-passwd-file.c:445,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-passwd-file.c:447,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:448,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/db-passwd-file.c:449,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct db_passwd_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 450
    functionName: db_passwd_file_unref
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 1
    functionsReached:
    - passwd_file_free
    - hash_table_iterate_deinit
    - hash_table_iterate
    - event_unref
    - hash_table_iterate_init
    - var_expand_program_free
    - i_assert
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void db_passwd_file_unref(struct db_passwd_file **_db)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_normpath
      Src: /src/dovecot/src/auth/db-passwd-file.c:457,1
    - Dst: strstr
      Src: /src/dovecot/src/auth/db-passwd-file.c:463,1
    - Dst: strncmp
      Src: /src/dovecot/src/auth/db-passwd-file.c:465,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-passwd-file.c:466,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/db-passwd-file.c:467,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - path
    - path_r
    - orig_path
    - error_r
    argTypes:
    - char*
    - char**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 474
    functionName: db_passwd_fix_path
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    - t_normpath
    - t_strdup_until
    - strncmp
    - strstr
    linkageType: ''
    returnType: int
    signature: "int db_passwd_fix_path(const char *path, const char **path_r,\n\t\t
      \      const char *orig_path, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/db-passwd-file.c:490,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:493,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/db-passwd-file.c:495,1
    - Dst: var_expand_program_execute
      Src: /src/dovecot/src/auth/db-passwd-file.c:496,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:497,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:497,1
    - Dst: db_passwd_fix_path
      Src: /src/dovecot/src/auth/db-passwd-file.c:503,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-passwd-file.c:503,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/db-passwd-file.c:504,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:504,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/db-passwd-file.c:508,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-passwd-file.c:508,1
    - Dst: passwd_file_new
      Src: /src/dovecot/src/auth/db-passwd-file.c:511,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-passwd-file.c:511,1
    - Dst: passwd_file_sync
      Src: /src/dovecot/src/auth/db-passwd-file.c:515,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/db-passwd-file.c:520,1
    - Dst: auth_request_var_expand
      Src: /src/dovecot/src/auth/db-passwd-file.c:521,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-passwd-file.c:523,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:523,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-passwd-file.c:529,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-passwd-file.c:529,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-passwd-file.c:531,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/db-passwd-file.c:533,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-passwd-file.c:533,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/db-passwd-file.c:535,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - db
    - request
    - username_format
    - user_r
    argTypes:
    - struct db_passwd_file*
    - struct auth_request*
    - char*
    - struct passwd_user**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 476
    functionDepth: 4
    functionLinenumber: 476
    functionLinenumberEnd: 539
    functionName: db_passwd_file_lookup
    functionSourceFile: /src/dovecot/src/auth/db-passwd-file.c
    functionUses: 1
    functionsReached:
    - authdb_event
    - t_str_new
    - str_c
    - e_info
    - passwd_file_sync
    - auth_request_db_log_unknown_user
    - auth_request_get_var_expand_table
    - e_debug
    - var_expand_program_execute
    - e_error
    - db_passwd_fix_path
    - passwd_file_new
    - hash_table_lookup
    - auth_request_var_expand
    linkageType: ''
    returnType: int
    signature: "int db_passwd_file_lookup(struct db_passwd_file *db,\n\t\t\t  struct
      auth_request *request,\n\t\t\t  const char *username_format,\n\t\t\t  struct
      passwd_user **user_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sql_connect
      Src: /src/dovecot/src/auth/db-sql.c:13,1
    - Dst: auth_worker_server_send_error
      Src: /src/dovecot/src/auth/db-sql.c:20,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct sql_db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 22
    functionName: db_sql_connect
    functionSourceFile: /src/dovecot/src/auth/db-sql.c
    functionUses: 0
    functionsReached:
    - auth_worker_server_send_error
    - sql_connect
    linkageType: ''
    returnType: void
    signature: void db_sql_connect(struct sql_db *db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_server_send_success
      Src: /src/dovecot/src/auth/db-sql.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: db_sql_success
    functionSourceFile: /src/dovecot/src/auth/db-sql.c
    functionUses: 0
    functionsReached:
    - auth_worker_server_send_success
    linkageType: ''
    returnType: void
    signature: void db_sql_success(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-common.h:20,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/auth/auth-common.h:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - driver
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: auth_driver_filter
    functionSourceFile: /src/dovecot/src/auth/auth-common.h
    functionUses: 0
    functionsReached:
    - t_strconcat
    - t_str_replace
    linkageType: ''
    returnType: char
    signature: char *auth_driver_filter(const char *prefix, const char *driver)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-passwd.c:55,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-passwd.c:55,1
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-passwd.c:57,1
    - Dst: i_getpwnam
      Src: /src/dovecot/src/auth/passdb-passwd.c:60,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-passwd.c:62,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-passwd.c:62,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/passdb-passwd.c:66,1
    - Dst: IS_VALID_PASSWD
      Src: /src/dovecot/src/auth/passdb-passwd.c:70,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb-passwd.c:71,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-passwd.c:71,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-passwd.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - request
    - pw_r
    argTypes:
    - struct auth_request*
    - struct passwd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 80
    functionName: passwd_lookup
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd.c
    functionUses: 0
    functionsReached:
    - i_getpwnam
    - authdb_event
    - auth_request_db_log_unknown_user
    - e_info
    - e_debug
    - auth_request_set_field
    - e_error
    - auth_request_set_passdb_fields
    - IS_VALID_PASSWD
    linkageType: ''
    returnType: enum passdb_result
    signature: enum passdb_result passwd_lookup(struct auth_request *request, struct
      passwd *pw_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-passwd.c:89,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd.c:90,1
    - Dst: passwd_lookup
      Src: /src/dovecot/src/auth/passdb-passwd.c:94,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd.c:96,1
    - Dst: auth_request_db_password_verify
      Src: /src/dovecot/src/auth/passdb-passwd.c:100,1
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/passdb-passwd.c:104,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/passdb-passwd.c:104,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd.c:107,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-passwd.c:112,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd.c:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 115
    functionName: passwd_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd.c
    functionUses: 0
    functionsReached:
    - strlen
    - auth_request_set_field
    - auth_request_db_password_verify
    - auth_request_set_passdb_fields
    - passwd_lookup
    - callback
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void passwd_verify_plain(struct auth_request *request, const char
      *password,\n\t\t    verify_plain_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: passwd_lookup
      Src: /src/dovecot/src/auth/passdb-passwd.c:124,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd.c:126,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-passwd.c:130,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/passdb-passwd.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 133
    functionName: passwd_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd.c
    functionUses: 0
    functionsReached:
    - auth_request_set_field
    - passdb_handle_credentials
    - passwd_lookup
    - callback
    linkageType: ''
    returnType: void
    signature: "void passwd_lookup_credentials(struct auth_request *request,\n\t\t\t
      \ lookup_credentials_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-passwd.c:142,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-passwd.c:144,1
    - Dst: passdb_set_cache_key
      Src: /src/dovecot/src/auth/passdb-passwd.c:151,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-passwd.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - pool
    - event
    - passdb_params
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct passdb_parameters*
    - struct passdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 157
    functionName: passwd_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd.c
    functionUses: 0
    functionsReached:
    - settings_get
    - p_new
    - settings_free
    - passdb_set_cache_key
    linkageType: ''
    returnType: int
    signature: "int passwd_preinit(pool_t pool, struct event *event,\n\t       const
      struct passdb_parameters *passdb_params,\n\t       struct passdb_module **module_r,\n\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: endpwent
      Src: /src/dovecot/src/auth/passdb-passwd.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: passwd_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd.c
    functionUses: 0
    functionsReached:
    - endpwent
    linkageType: ''
    returnType: void
    signature: void passwd_deinit(struct passdb_module *module ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_set_userdb_fields
      Src: /src/dovecot/src/auth/userdb-lua.c:20,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-lua.c:21,1
    - Dst: auth_lua_call_userdb_lookup
      Src: /src/dovecot/src/auth/userdb-lua.c:25,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-lua.c:27,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-lua.c:27,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-lua.c:29,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - auth_request
    - callback
    argTypes:
    - struct auth_request*
    - userdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 30
    functionName: userdb_lua_lookup
    functionSourceFile: /src/dovecot/src/auth/userdb-lua.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_request_set_userdb_fields
    - e_error
    - callback
    - auth_lua_call_userdb_lookup
    linkageType: ''
    returnType: void
    signature: "void userdb_lua_lookup(struct auth_request *auth_request,\n\t\t\t
      \     userdb_callback_t *callback)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-lua.c:39,1
    - Dst: dlua_script_create_auto
      Src: /src/dovecot/src/auth/userdb-lua.c:41,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/userdb-lua.c:42,1
    - Dst: auth_lua_script_init
      Src: /src/dovecot/src/auth/userdb-lua.c:50,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/userdb-lua.c:51,1
    - Dst: auth_lua_script_get_default_cache_key
      Src: /src/dovecot/src/auth/userdb-lua.c:52,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/userdb-lua.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - pool
    - event
    - userdb_params ATTR_UNUSED
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct userdb_parameters*
    - struct userdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 58
    functionName: userdb_lua_preinit
    functionSourceFile: /src/dovecot/src/auth/userdb-lua.c
    functionUses: 0
    functionsReached:
    - auth_lua_script_get_default_cache_key
    - p_new
    - auth_lua_script_init
    - i_fatal
    - dlua_script_create_auto
    linkageType: ''
    returnType: int
    signature: "int userdb_lua_preinit(pool_t pool, struct event *event,\n\t\t   const
      struct userdb_parameters *userdb_params ATTR_UNUSED,\n\t\t   struct userdb_module
      **module_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/auth/userdb-lua.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 6
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: userdb_lua_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-lua.c
    functionUses: 0
    functionsReached:
    - dlua_script_unref
    linkageType: ''
    returnType: void
    signature: void userdb_lua_deinit(struct userdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_call_userdb_iterate_init
      Src: /src/dovecot/src/auth/userdb-lua.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - auth_request
    - callback
    - context
    argTypes:
    - struct auth_request*
    - userdb_iter_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: userdb_lua_iterate_init
    functionSourceFile: /src/dovecot/src/auth/userdb-lua.c
    functionUses: 0
    functionsReached:
    - auth_lua_call_userdb_iterate_init
    linkageType: ''
    returnType: struct userdb_iterate_context
    signature: "struct userdb_iterate_context *\nuserdb_lua_iterate_init(struct auth_request
      *auth_request,\n\t\t\tuserdb_iter_callback_t *callback,\n\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_userdb_iterate_next
      Src: /src/dovecot/src/auth/userdb-lua.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: userdb_lua_iterate_next
    functionSourceFile: /src/dovecot/src/auth/userdb-lua.c
    functionUses: 0
    functionsReached:
    - auth_lua_userdb_iterate_next
    linkageType: ''
    returnType: void
    signature: void userdb_lua_iterate_next(struct userdb_iterate_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_userdb_iterate_deinit
      Src: /src/dovecot/src/auth/userdb-lua.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: userdb_lua_iterate_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-lua.c
    functionUses: 0
    functionsReached:
    - auth_lua_userdb_iterate_deinit
    linkageType: ''
    returnType: int
    signature: int userdb_lua_iterate_deinit(struct userdb_iterate_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-oauth2.c:18,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-oauth2.c:18,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb-oauth2.c:21,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-oauth2.c:21,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-oauth2.c:24,1
    - Dst: struct db_oauth2_request*::verify_callback
      Src: /src/dovecot/src/auth/passdb-oauth2.c:26,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-oauth2.c:27,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - req
    - result
    - error
    - request
    argTypes:
    - struct db_oauth2_request*
    - enum passdb_result
    - char*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 28
    functionName: oauth2_verify_plain_continue
    functionSourceFile: /src/dovecot/src/auth/passdb-oauth2.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - auth_request_set_field
    - e_error
    - auth_request_unref
    - struct db_oauth2_request*::verify_callback
    linkageType: ''
    returnType: void
    signature: "void oauth2_verify_plain_continue(struct db_oauth2_request *req,\n\t\t\t
      \    enum passdb_result result, const char *error,\n\t\t\t     struct auth_request
      *request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-oauth2.c:37,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-oauth2.c:41,1
    - Dst: db_oauth2_lookup
      Src: /src/dovecot/src/auth/passdb-oauth2.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 44
    functionName: oauth2_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-oauth2.c
    functionUses: 0
    functionsReached:
    - auth_request_ref
    - p_new
    - db_oauth2_lookup
    linkageType: ''
    returnType: void
    signature: "void oauth2_verify_plain(struct auth_request *request, const char
      *password,\n\t\t    verify_plain_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-oauth2.c:54,1
    - Dst: db_oauth2_init
      Src: /src/dovecot/src/auth/passdb-oauth2.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - pool
    - event
    - passdb_params ATTR_UNUSED
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct passdb_parameters*
    - struct passdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 61
    functionName: oauth2_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb-oauth2.c
    functionUses: 0
    functionsReached:
    - db_oauth2_init
    - p_new
    linkageType: ''
    returnType: int
    signature: "int oauth2_preinit(pool_t pool, struct event *event,\n\t       const
      struct passdb_parameters *passdb_params ATTR_UNUSED,\n\t       struct passdb_module
      **module_r,\n\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_auth_request_var_expand
      Src: /src/dovecot/src/auth/db-lua.c:78,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - req
    - tpl
    - value_r
    - error_r
    argTypes:
    - struct auth_request*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 84
    functionName: auth_request_lua_do_var_expand
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - t_auth_request_var_expand
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int auth_request_lua_do_var_expand(struct auth_request *req, const
      char *tpl,\n\t\t\t       const char **value_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:88,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/auth/db-lua.c:89,1
    - Dst: auth_request_lua_do_var_expand
      Src: /src/dovecot/src/auth/db-lua.c:92,1
    - Dst: luaL_error
      Src: /src/dovecot/src/auth/db-lua.c:93,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/auth/db-lua.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 98
    functionName: auth_request_lua_var_expand
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - auth_request_lua_do_var_expand
    - lua_pushstring
    - luaL_checkstring
    - auth_lua_check_auth_request
    - luaL_error
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_var_expand(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:102,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/auth/db-lua.c:103,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-lua.c:104,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: auth_request_lua_log_debug
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - e_debug
    - authdb_event
    - auth_lua_check_auth_request
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_log_debug(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:110,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/auth/db-lua.c:111,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/db-lua.c:112,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: auth_request_lua_log_info
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - auth_lua_check_auth_request
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_log_info(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:118,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/auth/db-lua.c:119,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/db-lua.c:120,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: auth_request_lua_log_warning
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - e_warning
    - auth_lua_check_auth_request
    - authdb_event
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_log_warning(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:126,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/auth/db-lua.c:127,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-lua.c:128,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 130
    functionName: auth_request_lua_log_error
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - e_error
    - authdb_event
    - auth_lua_check_auth_request
    - luaL_checkstring
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_log_error(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:134,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/auth/db-lua.c:135,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:136,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/auth/db-lua.c:139,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/auth/db-lua.c:143,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-lua.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 145
    functionName: auth_request_lua_passdb
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - auth_fields_find
    - lua_pushstring
    - lua_pop
    - luaL_checkstring
    - lua_pushnil
    - auth_lua_check_auth_request
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_passdb(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:149,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/auth/db-lua.c:150,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:151,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/auth/db-lua.c:154,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/auth/db-lua.c:158,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-lua.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 160
    functionName: auth_request_lua_userdb
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - auth_fields_find
    - lua_pushstring
    - lua_pop
    - luaL_checkstring
    - lua_pushnil
    - auth_lua_check_auth_request
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_userdb(lua_State *L)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:164,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:165,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:167,1
    - Dst: luaL_error
      Src: /src/dovecot/src/auth/db-lua.c:173,1
    - Dst: luaL_error
      Src: /src/dovecot/src/auth/db-lua.c:175,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/db-lua.c:180,1
    - Dst: password_decode
      Src: /src/dovecot/src/auth/db-lua.c:183,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:187,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:190,1
    - Dst: password_verify
      Src: /src/dovecot/src/auth/db-lua.c:196,1
    - Dst: lua_pushnumber
      Src: /src/dovecot/src/auth/db-lua.c:200,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/auth/db-lua.c:201,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 204
    functionName: auth_request_lua_password_verify
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - password_get_scheme
    - lua_pushstring
    - t_strdup_printf
    - password_decode
    - auth_lua_check_auth_request
    - luaL_error
    - password_verify
    - lua_tostring
    - lua_pushnumber
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_password_verify(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:208,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/db-lua.c:209,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:209,1
    - Dst: dlua_push_event
      Src: /src/dovecot/src/auth/db-lua.c:211,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-lua.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: auth_request_lua_event
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - event_create
    - dlua_push_event
    - event_unref
    - auth_lua_check_auth_request
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_event(lua_State *L)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_check_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:230,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/auth/db-lua.c:231,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:232,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/db-lua.c:235,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/db-lua.c:239,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/auth/db-lua.c:240,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/db-lua.c:248,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/auth/db-lua.c:249,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/auth/db-lua.c:255,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/auth/db-lua.c:256,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 259
    functionName: auth_request_lua_index
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - lua_rawget
    - auth_request_get_var_expand_table
    - lua_pushstring
    - lua_pop
    - luaL_checkstring
    - lua_pushcfunction
    - auth_lua_check_auth_request
    - null_strcmp
    linkageType: ''
    returnType: int
    signature: int auth_request_lua_index(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkstack
      Src: /src/dovecot/src/auth/db-lua.c:263,1
    - Dst: lua_createtable
      Src: /src/dovecot/src/auth/db-lua.c:265,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/auth/db-lua.c:266,1
    - Dst: lua_pushlightuserdata
      Src: /src/dovecot/src/auth/db-lua.c:268,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:269,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/auth/db-lua.c:271,1
    - Dst: lua_pushlightuserdata
      Src: /src/dovecot/src/auth/db-lua.c:272,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:273,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/auth/db-lua.c:274,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:275,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/auth/db-lua.c:277,1
    - Dst: lua_pushlightuserdata
      Src: /src/dovecot/src/auth/db-lua.c:278,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:279,1
    - Dst: luaL_setmetatable
      Src: /src/dovecot/src/auth/db-lua.c:280,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:281,1
    - Dst: lua_pushboolean
      Src: /src/dovecot/src/auth/db-lua.c:283,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:284,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/auth/db-lua.c:291,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/auth/db-lua.c:292,1
    - Dst: LUA_TABLE_SET_BOOL
      Src: /src/dovecot/src/auth/db-lua.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 2
    argNames:
    - L
    - req
    argTypes:
    - lua_State*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 294
    functionName: auth_lua_push_auth_request
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushlightuserdata
    - lua_createtable
    - luaL_checkstack
    - lua_pushboolean
    - LUA_TABLE_SET_BOOL
    - luaL_setmetatable
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void auth_lua_push_auth_request(lua_State *L, struct auth_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 290
    functionName: LUA_TABLE_SET_BOOL
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA_TABLE_SET_BOOL(field)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/dovecot/src/auth/db-lua.c:299,1
    - Dst: luaL_error
      Src: /src/dovecot/src/auth/db-lua.c:300,1
    - Dst: lua_typename
      Src: /src/dovecot/src/auth/db-lua.c:302,1
    - Dst: lua_type
      Src: /src/dovecot/src/auth/db-lua.c:302,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/auth/db-lua.c:304,1
    - Dst: lua_rawget
      Src: /src/dovecot/src/auth/db-lua.c:305,1
    - Dst: lua_touserdata
      Src: /src/dovecot/src/auth/db-lua.c:306,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - L
    - arg
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 309
    functionName: auth_lua_check_auth_request
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 10
    functionsReached:
    - lua_type
    - lua_rawget
    - lua_typename
    - lua_pushstring
    - lua_istable
    - lua_pop
    - lua_touserdata
    - luaL_error
    linkageType: ''
    returnType: struct auth_request
    signature: 'struct auth_request *

      auth_lua_check_auth_request(lua_State *L, int arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/auth/db-lua.c:313,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/auth/db-lua.c:314,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:315,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:316,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/auth/db-lua.c:319,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/auth/db-lua.c:320,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:321,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:322,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/auth/db-lua.c:325,1
    - Dst: lua_pushcfunction
      Src: /src/dovecot/src/auth/db-lua.c:326,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:327,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 329
    functionName: auth_lua_auth_request_register
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushcfunction
    - lua_pop
    - lua_setfield
    - luaL_newmetatable
    linkageType: ''
    returnType: void
    signature: void auth_lua_auth_request_register(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_get_dovecot
      Src: /src/dovecot/src/auth/db-lua.c:353,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/auth/db-lua.c:355,1
    - Dst: dlua_set_members
      Src: /src/dovecot/src/auth/db-lua.c:358,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/auth/db-lua.c:361,1
    - Dst: luaL_setfuncs
      Src: /src/dovecot/src/auth/db-lua.c:363,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/auth/db-lua.c:365,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:366,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/auth/db-lua.c:368,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/auth/db-lua.c:371,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 375
    functionName: auth_lua_dovecot_auth_register
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - lua_setfield
    - lua_pushvalue
    - lua_pop
    - luaL_setfuncs
    - lua_setmetatable
    - dlua_set_members
    - dlua_get_dovecot
    - lua_newtable
    - luaL_newmetatable
    linkageType: ''
    returnType: void
    signature: void auth_lua_dovecot_auth_register(lua_State *L)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-lua.c:382,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:382,1
    - Dst: auth_lua_push_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:385,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/auth/db-lua.c:386,1
    - Dst: lua_isnumber
      Src: /src/dovecot/src/auth/db-lua.c:389,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:390,1
    - Dst: luaL_typename
      Src: /src/dovecot/src/auth/db-lua.c:392,1
    - Dst: lua_tointeger
      Src: /src/dovecot/src/auth/db-lua.c:394,1
    - Dst: lua_isstring
      Src: /src/dovecot/src/auth/db-lua.c:395,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/auth/db-lua.c:395,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:396,1
    - Dst: luaL_typename
      Src: /src/dovecot/src/auth/db-lua.c:399,1
    - Dst: lua_istable
      Src: /src/dovecot/src/auth/db-lua.c:403,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/auth/db-lua.c:403,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:404,1
    - Dst: luaL_typename
      Src: /src/dovecot/src/auth/db-lua.c:407,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:413,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:414,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:415,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:415,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 5
    argNames:
    - L
    - fn
    - ret_success
    - req
    - error_r
    argTypes:
    - lua_State*
    - char*
    - int
    - struct auth_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 420
    functionName: auth_lua_call_lookup
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - lua_gc
    - lua_isnil
    - dlua_pcall
    - e_debug
    - lua_isnumber
    - lua_istable
    - t_strdup_printf
    - lua_pop
    - luaL_typename
    - auth_lua_push_auth_request
    - lua_isstring
    - lua_tointeger
    - lua_gettop
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int auth_lua_call_lookup(lua_State *L, const char *fn, int ret_success,\n\t\t\t\tstruct
      auth_request *req, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_dovecot_register
      Src: /src/dovecot/src/auth/db-lua.c:426,1
    - Dst: auth_lua_dovecot_auth_register
      Src: /src/dovecot/src/auth/db-lua.c:427,1
    - Dst: auth_lua_auth_request_register
      Src: /src/dovecot/src/auth/db-lua.c:428,1
    - Dst: dlua_script_init
      Src: /src/dovecot/src/auth/db-lua.c:429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - params
    - error_r
    argTypes:
    - struct auth_lua_script_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 422
    functionDepth: 4
    functionLinenumber: 422
    functionLinenumberEnd: 433
    functionName: auth_lua_script_init
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 1
    functionsReached:
    - dlua_script_init
    - auth_lua_auth_request_register
    - auth_lua_dovecot_auth_register
    - dlua_dovecot_register
    linkageType: ''
    returnType: int
    signature: "int auth_lua_script_init(const struct auth_lua_script_parameters *params,\n\t\t\t
      const char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/db-lua.c:451,1
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/auth/db-lua.c:454,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/auth/db-lua.c:455,1
    - Dst: lua_isstring
      Src: /src/dovecot/src/auth/db-lua.c:458,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:459,1
    - Dst: luaL_typename
      Src: /src/dovecot/src/auth/db-lua.c:462,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/db-lua.c:466,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:476,1
    - Dst: auth_cache_parse_key_and_fields
      Src: /src/dovecot/src/auth/db-lua.c:477,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:478,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:485,1
    - Dst: auth_cache_parse_key_and_fields
      Src: /src/dovecot/src/auth/db-lua.c:486,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:487,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/db-lua.c:494,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/db-lua.c:496,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:497,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:498,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:499,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:499,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 2
    argNames:
    - params
    - error_r
    argTypes:
    - struct auth_lua_script_parameters*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 435
    functionDepth: 3
    functionLinenumber: 435
    functionLinenumberEnd: 502
    functionName: auth_lua_script_get_default_cache_key
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 1
    functionsReached:
    - i_assert
    - lua_gc
    - dlua_pcall
    - i_unreached
    - t_strdup_printf
    - settings_free
    - lua_pop
    - luaL_typename
    - auth_cache_parse_key_and_fields
    - lua_isstring
    - lua_tostring
    - lua_gettop
    - settings_get
    - dlua_script_has_function
    linkageType: ''
    returnType: int
    signature: "int auth_lua_script_get_default_cache_key(const struct auth_lua_script_parameters
      *params,\n\t\t\t\t      const char **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/dovecot/src/auth/db-lua.c:507,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:508,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:509,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:510,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:510,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:513,1
    - Dst: lua_istable
      Src: /src/dovecot/src/auth/db-lua.c:513,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/auth/db-lua.c:515,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/auth/db-lua.c:516,1
    - Dst: lua_next
      Src: /src/dovecot/src/auth/db-lua.c:517,1
    - Dst: t_strdup
      Src: /src/dovecot/src/auth/db-lua.c:518,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:518,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/db-lua.c:520,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:520,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:522,1
    - Dst: strpbrk
      Src: /src/dovecot/src/auth/db-lua.c:525,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/db-lua.c:526,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:526,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:528,1
    - Dst: lua_type
      Src: /src/dovecot/src/auth/db-lua.c:533,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/db-lua.c:536,1
    - Dst: lua_tointeger
      Src: /src/dovecot/src/auth/db-lua.c:536,1
    - Dst: lua_toboolean
      Src: /src/dovecot/src/auth/db-lua.c:539,1
    - Dst: t_strdup
      Src: /src/dovecot/src/auth/db-lua.c:542,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:542,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/db-lua.c:548,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:548,1
    - Dst: lua_typename
      Src: /src/dovecot/src/auth/db-lua.c:550,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-lua.c:556,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/db-lua.c:557,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/db-lua.c:560,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/db-lua.c:562,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:564,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:572,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:573,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:574,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:574,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 4
    argNames:
    - L
    - req
    - scheme_r
    - password_r
    argTypes:
    - lua_State*
    - struct auth_request*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 504
    functionDepth: 2
    functionLinenumber: 504
    functionLinenumberEnd: 575
    functionName: auth_lua_export_table
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - lua_toboolean
    - t_strdup
    - auth_request_set_userdb_field
    - lua_type
    - lua_pushvalue
    - strpbrk
    - lua_pushnil
    - e_warning
    - lua_isnil
    - password_get_scheme
    - lua_istable
    - lua_pop
    - lua_gettop
    - i_assert
    - dec2str
    - authdb_event
    - lua_gc
    - strcmp
    - lua_typename
    - auth_request_set_field
    - lua_next
    - lua_tointeger
    - lua_tostring
    linkageType: ''
    returnType: void
    signature: "void auth_lua_export_table(lua_State *L, struct auth_request *req,\n\t\t\t\t
      const char **scheme_r, const char **password_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_tointeger
      Src: /src/dovecot/src/auth/db-lua.c:581,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/auth/db-lua.c:584,1
    - Dst: t_strdup
      Src: /src/dovecot/src/auth/db-lua.c:587,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:587,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:588,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:589,1
    - Dst: auth_lua_export_table
      Src: /src/dovecot/src/auth/db-lua.c:593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - L
    - req
    - error_r
    argTypes:
    - lua_State*
    - struct auth_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 577
    functionDepth: 3
    functionLinenumber: 577
    functionLinenumberEnd: 595
    functionName: auth_lua_export_userdb_table
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - lua_gc
    - auth_lua_export_table
    - lua_isnil
    - lua_pop
    - lua_tointeger
    - lua_tostring
    - t_strdup
    linkageType: ''
    returnType: enum userdb_result
    signature: "enum userdb_result auth_lua_export_userdb_table(lua_State *L, struct
      auth_request *req,\n\t\t\t     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_tointeger
      Src: /src/dovecot/src/auth/db-lua.c:602,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/auth/db-lua.c:605,1
    - Dst: t_strdup
      Src: /src/dovecot/src/auth/db-lua.c:608,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:608,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:609,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:610,1
    - Dst: auth_lua_export_table
      Src: /src/dovecot/src/auth/db-lua.c:614,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - L
    - req
    - scheme_r
    - password_r
    - error_r
    argTypes:
    - lua_State*
    - struct auth_request*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 597
    functionDepth: 3
    functionLinenumber: 597
    functionLinenumberEnd: 616
    functionName: auth_lua_export_passdb_table
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - lua_gc
    - auth_lua_export_table
    - lua_isnil
    - lua_pop
    - lua_tointeger
    - lua_tostring
    - t_strdup
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result auth_lua_export_passdb_table(lua_State *L, struct
      auth_request *req,\n\t\t\t     const char **scheme_r, const char **password_r,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-lua.c:625,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:625,1
    - Dst: auth_lua_push_auth_request
      Src: /src/dovecot/src/auth/db-lua.c:628,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/auth/db-lua.c:629,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/auth/db-lua.c:631,1
    - Dst: lua_isnumber
      Src: /src/dovecot/src/auth/db-lua.c:634,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:635,1
    - Dst: luaL_typename
      Src: /src/dovecot/src/auth/db-lua.c:638,1
    - Dst: lua_tointeger
      Src: /src/dovecot/src/auth/db-lua.c:640,1
    - Dst: lua_isstring
      Src: /src/dovecot/src/auth/db-lua.c:641,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/auth/db-lua.c:641,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:642,1
    - Dst: luaL_typename
      Src: /src/dovecot/src/auth/db-lua.c:645,1
    - Dst: lua_istable
      Src: /src/dovecot/src/auth/db-lua.c:649,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/auth/db-lua.c:649,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-lua.c:650,1
    - Dst: luaL_typename
      Src: /src/dovecot/src/auth/db-lua.c:653,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:659,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:660,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:661,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:661,1
    - Dst: auth_lua_export_passdb_table
      Src: /src/dovecot/src/auth/db-lua.c:665,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - script
    - req
    - password
    - error_r
    argTypes:
    - struct dlua_script*
    - struct auth_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 618
    functionDepth: 4
    functionLinenumber: 618
    functionLinenumberEnd: 666
    functionName: auth_lua_call_password_verify
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - lua_gc
    - lua_isnil
    - dlua_pcall
    - e_debug
    - lua_pushstring
    - lua_isnumber
    - lua_istable
    - t_strdup_printf
    - lua_pop
    - luaL_typename
    - auth_lua_push_auth_request
    - lua_isstring
    - lua_tointeger
    - lua_gettop
    - i_assert
    - auth_lua_export_passdb_table
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result auth_lua_call_password_verify(struct dlua_script
      *script,\n\t\t\t      struct auth_request *req, const char *password, const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_call_lookup
      Src: /src/dovecot/src/auth/db-lua.c:677,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:679,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:680,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:680,1
    - Dst: auth_lua_export_passdb_table
      Src: /src/dovecot/src/auth/db-lua.c:684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - script
    - req
    - scheme_r
    - password_r
    - error_r
    argTypes:
    - struct dlua_script*
    - struct auth_request*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 669
    functionDepth: 4
    functionLinenumber: 669
    functionLinenumberEnd: 686
    functionName: auth_lua_call_passdb_lookup
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - auth_lua_call_lookup
    - lua_gc
    - lua_gettop
    - i_assert
    - auth_lua_export_passdb_table
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result auth_lua_call_passdb_lookup(struct dlua_script
      *script,\n\t\t\t    struct auth_request *req, const char **scheme_r,\n\t\t\t
      \   const char **password_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_call_lookup
      Src: /src/dovecot/src/auth/db-lua.c:695,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:697,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:698,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:698,1
    - Dst: auth_lua_export_userdb_table
      Src: /src/dovecot/src/auth/db-lua.c:702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - script
    - req
    - error_r
    argTypes:
    - struct dlua_script*
    - struct auth_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 689
    functionDepth: 4
    functionLinenumber: 689
    functionLinenumberEnd: 703
    functionName: auth_lua_call_userdb_lookup
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 1
    functionsReached:
    - auth_lua_call_lookup
    - lua_gc
    - lua_gettop
    - i_assert
    - auth_lua_export_userdb_table
    linkageType: ''
    returnType: enum userdb_result
    signature: "enum userdb_result auth_lua_call_userdb_lookup(struct dlua_script
      *script,\n\t\t\t    struct auth_request *req, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/db-lua.c:711,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-lua.c:713,1
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/auth/db-lua.c:720,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-lua.c:725,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:725,1
    - Dst: dlua_pcall
      Src: /src/dovecot/src/auth/db-lua.c:728,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-lua.c:729,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:729,1
    - Dst: lua_istable
      Src: /src/dovecot/src/auth/db-lua.c:736,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-lua.c:737,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:737,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:740,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:741,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:742,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:742,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/db-lua.c:746,1
    - Dst: lua_pushnil
      Src: /src/dovecot/src/auth/db-lua.c:752,1
    - Dst: lua_next
      Src: /src/dovecot/src/auth/db-lua.c:753,1
    - Dst: lua_isstring
      Src: /src/dovecot/src/auth/db-lua.c:758,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-lua.c:759,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-lua.c:759,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:762,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:763,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:764,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:764,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/db-lua.c:767,1
    - Dst: lua_tostring
      Src: /src/dovecot/src/auth/db-lua.c:767,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/db-lua.c:768,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:769,1
    - Dst: lua_pop
      Src: /src/dovecot/src/auth/db-lua.c:779,1
    - Dst: lua_gc
      Src: /src/dovecot/src/auth/db-lua.c:780,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-lua.c:781,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/auth/db-lua.c:781,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 4
    argNames:
    - script
    - req
    - callback
    - context
    argTypes:
    - struct dlua_script*
    - struct auth_request*
    - userdb_iter_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 705
    functionDepth: 3
    functionLinenumber: 705
    functionLinenumberEnd: 784
    functionName: auth_lua_call_userdb_iterate_init
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_array_init
    - dlua_script_has_function
    - p_new
    - lua_pushnil
    - lua_istable
    - lua_pop
    - e_error
    - lua_gettop
    - i_assert
    - pool_alloconly_create
    - authdb_event
    - lua_gc
    - dlua_pcall
    - e_debug
    - array_push_back
    - lua_next
    - lua_isstring
    - lua_tostring
    linkageType: ''
    returnType: struct userdb_iterate_context
    signature: "struct userdb_iterate_context *\nauth_lua_call_userdb_iterate_init(struct
      dlua_script *script, struct auth_request *req,\n\t\t\t\t  userdb_iter_callback_t
      *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/db-lua.c:789,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/db-lua.c:791,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/db-lua.c:792,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/auth/db-lua.c:796,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/db-lua.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 786
    functionDepth: 1
    functionLinenumber: 786
    functionLinenumberEnd: 798
    functionName: auth_lua_userdb_iterate_next
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 1
    functionsReached:
    - struct userdb_iterate_context*::callback
    - array_count
    - container_of
    - array_idx_elem
    linkageType: ''
    returnType: void
    signature: void auth_lua_userdb_iterate_next(struct userdb_iterate_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/db-lua.c:803,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/db-lua.c:806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 808
    functionName: auth_lua_userdb_iterate_deinit
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 1
    functionsReached:
    - container_of
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int auth_lua_userdb_iterate_deinit(struct userdb_iterate_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/db-lua.c:820,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/db-lua.c:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 823
    functionName: authdb_lua_init
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - passdb_register_module
    - userdb_register_module
    linkageType: ''
    returnType: void
    signature: void authdb_lua_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_unregister_module
      Src: /src/dovecot/src/auth/db-lua.c:826,1
    - Dst: userdb_unregister_module
      Src: /src/dovecot/src/auth/db-lua.c:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 828
    functionName: authdb_lua_deinit
    functionSourceFile: /src/dovecot/src/auth/db-lua.c
    functionUses: 0
    functionsReached:
    - userdb_unregister_module
    - passdb_unregister_module
    linkageType: ''
    returnType: void
    signature: void authdb_lua_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - db
    - ','
    - req
    - ','
    - token
    - ','
    - request
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: db_oauth2_lookup
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: db_oauth2_lookup(db, req, token, request, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_new
      Src: /src/dovecot/src/auth/test-lua.c:21,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/test-lua.c:23,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/test-lua.c:24,1
    - Dst: passdb_mock
      Src: /src/dovecot/src/auth/test-lua.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:26,1
    - Dst: auth_request_set_username
      Src: /src/dovecot/src/auth/test-lua.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 28
    functionName: test_db_lua_auth_request_new
    functionSourceFile: /src/dovecot/src/auth/test-lua.c
    functionUses: 0
    functionsReached:
    - event_create
    - array_push_back
    - auth_request_set_username
    - auth_request_new
    - passdb_mock
    - test_assert
    linkageType: ''
    returnType: struct auth_request
    signature: struct auth_request *test_db_lua_auth_request_new(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_db_lua_auth_request_new
      Src: /src/dovecot/src/auth/test-lua.c:32,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-lua.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:46,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/auth/test-lua.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:51,1
    - Dst: auth_lua_script_init
      Src: /src/dovecot/src/auth/test-lua.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:52,1
    - Dst: auth_lua_call_password_verify
      Src: /src/dovecot/src/auth/test-lua.c:52,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/auth/test-lua.c:53,1
    - Dst: i_error
      Src: /src/dovecot/src/auth/test-lua.c:56,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/test-lua.c:58,1
    - Dst: auth_request_passdb_lookup_end
      Src: /src/dovecot/src/auth/test-lua.c:60,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/test-lua.c:61,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-lua.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 30
    functionDepth: 6
    functionLinenumber: 30
    functionLinenumberEnd: 64
    functionName: test_db_lua_auth_verify
    functionSourceFile: /src/dovecot/src/auth/test-lua.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_free
    - auth_lua_script_init
    - dlua_script_create_string
    - test_end
    - auth_request_passdb_lookup_end
    - auth_request_unref
    - test_assert
    - dlua_script_unref
    - test_db_lua_auth_request_new
    - test_begin
    - auth_lua_call_password_verify
    linkageType: ''
    returnType: void
    signature: void test_db_lua_auth_verify(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_db_lua_auth_request_new
      Src: /src/dovecot/src/auth/test-lua.c:70,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-lua.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:83,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/auth/test-lua.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:88,1
    - Dst: auth_lua_script_init
      Src: /src/dovecot/src/auth/test-lua.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:89,1
    - Dst: auth_lua_call_passdb_lookup
      Src: /src/dovecot/src/auth/test-lua.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:90,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-lua.c:90,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/auth/test-lua.c:91,1
    - Dst: i_error
      Src: /src/dovecot/src/auth/test-lua.c:94,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/test-lua.c:96,1
    - Dst: auth_request_passdb_lookup_end
      Src: /src/dovecot/src/auth/test-lua.c:97,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/test-lua.c:98,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-lua.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 66
    functionDepth: 6
    functionLinenumber: 66
    functionLinenumberEnd: 101
    functionName: test_db_lua_auth_lookup_numberish_value
    functionSourceFile: /src/dovecot/src/auth/test-lua.c
    functionUses: 0
    functionsReached:
    - strcmp
    - auth_lua_call_passdb_lookup
    - i_error
    - i_free
    - auth_lua_script_init
    - dlua_script_create_string
    - test_end
    - auth_request_passdb_lookup_end
    - auth_request_unref
    - test_assert
    - dlua_script_unref
    - test_db_lua_auth_request_new
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_db_lua_auth_lookup_numberish_value(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_db_lua_auth_request_new
      Src: /src/dovecot/src/auth/test-lua.c:107,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-lua.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:119,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/auth/test-lua.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:124,1
    - Dst: auth_lua_script_init
      Src: /src/dovecot/src/auth/test-lua.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:125,1
    - Dst: auth_lua_call_passdb_lookup
      Src: /src/dovecot/src/auth/test-lua.c:125,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/auth/test-lua.c:126,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-lua.c:127,1
    - Dst: i_error
      Src: /src/dovecot/src/auth/test-lua.c:130,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/test-lua.c:132,1
    - Dst: auth_request_passdb_lookup_end
      Src: /src/dovecot/src/auth/test-lua.c:133,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/test-lua.c:134,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-lua.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 103
    functionDepth: 6
    functionLinenumber: 103
    functionLinenumberEnd: 137
    functionName: test_db_lua_auth_lookup
    functionSourceFile: /src/dovecot/src/auth/test-lua.c
    functionUses: 0
    functionsReached:
    - auth_lua_call_passdb_lookup
    - i_error
    - i_free
    - auth_lua_script_init
    - dlua_script_create_string
    - test_assert_strcmp
    - test_end
    - auth_request_passdb_lookup_end
    - auth_request_unref
    - test_assert
    - dlua_script_unref
    - test_db_lua_auth_request_new
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_db_lua_auth_lookup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_db_lua_auth_request_new
      Src: /src/dovecot/src/auth/test-lua.c:143,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-lua.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:160,1
    - Dst: dlua_script_create_string
      Src: /src/dovecot/src/auth/test-lua.c:160,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:165,1
    - Dst: auth_lua_script_init
      Src: /src/dovecot/src/auth/test-lua.c:165,1
    - Dst: test_expect_error_string_n_times
      Src: /src/dovecot/src/auth/test-lua.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:167,1
    - Dst: auth_lua_call_passdb_lookup
      Src: /src/dovecot/src/auth/test-lua.c:167,1
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/auth/test-lua.c:168,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-lua.c:169,1
    - Dst: auth_fields_export
      Src: /src/dovecot/src/auth/test-lua.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-lua.c:172,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/test-lua.c:172,1
    - Dst: i_error
      Src: /src/dovecot/src/auth/test-lua.c:175,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/test-lua.c:177,1
    - Dst: auth_request_passdb_lookup_end
      Src: /src/dovecot/src/auth/test-lua.c:178,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/test-lua.c:179,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-lua.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 139
    functionDepth: 6
    functionLinenumber: 139
    functionLinenumberEnd: 182
    functionName: test_db_lua_auth_lookup_bad_keyname
    functionSourceFile: /src/dovecot/src/auth/test-lua.c
    functionUses: 0
    functionsReached:
    - auth_lua_call_passdb_lookup
    - i_error
    - i_free
    - auth_lua_script_init
    - test_expect_error_string_n_times
    - dlua_script_create_string
    - test_assert_strcmp
    - auth_fields_export
    - test_end
    - array_count
    - auth_request_passdb_lookup_end
    - auth_request_unref
    - test_assert
    - dlua_script_unref
    - test_db_lua_auth_request_new
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_db_lua_auth_lookup_bad_keyname(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/auth/test-lua.c:185,1
    - Dst: test_db_lua_auth_lookup
      Src: /src/dovecot/src/auth/test-lua.c:188,1
    - Dst: test_db_lua_auth_lookup_numberish_value
      Src: /src/dovecot/src/auth/test-lua.c:189,1
    - Dst: test_db_lua_auth_verify
      Src: /src/dovecot/src/auth/test-lua.c:190,1
    - Dst: test_db_lua_auth_lookup_bad_keyname
      Src: /src/dovecot/src/auth/test-lua.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 184
    functionDepth: 7
    functionLinenumber: 184
    functionLinenumberEnd: 192
    functionName: test_db_lua
    functionSourceFile: /src/dovecot/src/auth/test-lua.c
    functionUses: 0
    functionsReached:
    - test_db_lua_auth_lookup_bad_keyname
    - test_db_lua_auth_verify
    - test_db_lua_auth_lookup
    - test_db_lua_auth_lookup_numberish_value
    - memset
    linkageType: ''
    returnType: void
    signature: void test_db_lua(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/auth-request-fields.c:14,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 17
    functionName: auth_request_fields_alloc
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - event_add_str
    - auth_fields_init
    linkageType: ''
    returnType: void
    signature: void auth_request_fields_alloc(struct auth_request *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_get_name
      Src: /src/dovecot/src/auth/auth-request-fields.c:23,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 27
    functionName: auth_request_fields_init
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_get_name
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void auth_request_fields_init(struct auth_request *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request-fields.c:32,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:33,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request-fields.c:35,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-fields.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - dest
    - key
    - value
    argTypes:
    - string_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: auth_str_add_keyvalue
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void auth_str_add_keyvalue(string_t *dest, const char *key, const char
      *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_export
      Src: /src/dovecot/src/auth/auth-request-fields.c:44,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-fields.c:48,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request-fields.c:50,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-fields.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - dest
    - auth_fields
    - prefix
    argTypes:
    - string_t*
    - struct auth_fields*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 54
    functionName: auth_request_export_fields
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_tabescaped
    - auth_fields_export
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void auth_request_export_fields(string_t *dest, struct auth_fields
      *auth_fields,\n\t\t\t   const char *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-fields.c:48,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request-fields.c:50,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-fields.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 95
    functionsReached:
    - str_printfa
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void array_foreach(fields, field)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:60,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-fields.c:61,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:63,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:66,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:67,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:70,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:75,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request-fields.c:76,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:79,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request-fields.c:80,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-fields.c:83,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-fields.c:85,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:87,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:89,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:93,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:97,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request-fields.c:98,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:101,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request-fields.c:102,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-fields.c:105,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-fields.c:107,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:109,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-fields.c:110,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:113,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-fields.c:114,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/auth/auth-request-fields.c:116,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:117,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:120,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:121,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:125,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:127,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:129,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:131,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-fields.c:133,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:135,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-fields.c:137,1
    - Dst: auth_request_export_fields
      Src: /src/dovecot/src/auth/auth-request-fields.c:139,1
    - Dst: auth_request_export_fields
      Src: /src/dovecot/src/auth/auth-request-fields.c:142,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 77
    argCount: 2
    argNames:
    - request
    - dest
    argTypes:
    - struct auth_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 143
    functionName: auth_request_export
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - auth_request_export_fields
    - auth_str_add_keyvalue
    - str_append_tabescaped
    - net_ip2addr
    - event_want_debug
    - str_append
    linkageType: ''
    returnType: void
    signature: void auth_request_export(struct auth_request *request, string_t *dest)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-fields.c:151,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:154,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:155,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:156,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:157,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:158,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/auth/auth-request-fields.c:159,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/auth/auth-request-fields.c:161,1
    - Dst: auth_request_import_info
      Src: /src/dovecot/src/auth/auth-request-fields.c:163,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:164,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/auth/auth-request-fields.c:165,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/auth/auth-request-fields.c:167,1
    - Dst: auth_request_import_info
      Src: /src/dovecot/src/auth/auth-request-fields.c:169,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:170,1
    - Dst: net_str2port
      Src: /src/dovecot/src/auth/auth-request-fields.c:171,1
    - Dst: event_add_int
      Src: /src/dovecot/src/auth/auth-request-fields.c:173,1
    - Dst: auth_request_import_info
      Src: /src/dovecot/src/auth/auth-request-fields.c:175,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:176,1
    - Dst: net_str2port
      Src: /src/dovecot/src/auth/auth-request-fields.c:177,1
    - Dst: event_add_int
      Src: /src/dovecot/src/auth/auth-request-fields.c:179,1
    - Dst: auth_request_import_info
      Src: /src/dovecot/src/auth/auth-request-fields.c:181,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:182,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:184,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:185,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:186,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:187,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:188,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/auth/auth-request-fields.c:189,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/auth/auth-request-fields.c:190,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:192,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/auth/auth-request-fields.c:193,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/auth/auth-request-fields.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:196,1
    - Dst: net_str2port
      Src: /src/dovecot/src/auth/auth-request-fields.c:197,1
    - Dst: event_add_int
      Src: /src/dovecot/src/auth/auth-request-fields.c:198,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:200,1
    - Dst: net_str2port
      Src: /src/dovecot/src/auth/auth-request-fields.c:201,1
    - Dst: event_add_int
      Src: /src/dovecot/src/auth/auth-request-fields.c:202,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:204,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:205,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:206,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:207,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:208,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:209,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:210,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/auth/auth-request-fields.c:211,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:212,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:213,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:214,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:215,1
    - Dst: auth_fields_import_prefixed
      Src: /src/dovecot/src/auth/auth-request-fields.c:216,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-fields.c:218,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/auth-request-fields.c:223,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 81
    argCount: 3
    argNames:
    - request
    - key
    - value
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 228
    functionName: auth_request_import_info
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 1
    functionsReached:
    - strcmp
    - event_set_forced_debug
    - p_strdup
    - net_addr2ip
    - auth_fields_snapshot
    - event_add_ip
    - e_error
    - auth_request_import_info
    - event_add_str
    - i_assert
    - auth_fields_import_prefixed
    - event_add_int
    - net_str2port
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_import_info(struct auth_request *request,\n\t\t\t
      \     const char *key, const char *value)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-fields.c:235,1
    - Dst: auth_request_import_info
      Src: /src/dovecot/src/auth/auth-request-fields.c:237,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:241,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:242,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:244,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:247,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:250,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:252,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:254,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:256,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-request-fields.c:260,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - request
    - key
    - value
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 267
    functionName: auth_request_import_auth
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - strcmp
    - auth_request_set_username_forced
    - auth_request_import_info
    - event_add_str
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_import_auth(struct auth_request *request,\n\t\t\t
      \     const char *key, const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-request-fields.c:279,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/auth/auth-request-fields.c:280,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/auth/auth-request-fields.c:281,1
    - Dst: base64_decode
      Src: /src/dovecot/src/auth/auth-request-fields.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - request
    - value
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 284
    functionName: auth_request_import_channel_binding
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - strlen
    - buffer_create_dynamic
    - MAX_BASE64_DECODED_SIZE
    - base64_decode
    linkageType: ''
    returnType: void
    signature: "void auth_request_import_channel_binding(struct auth_request *request,\n\t\t\t\t
      \   const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-fields.c:289,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:291,1
    - Dst: auth_request_import_channel_binding
      Src: /src/dovecot/src/auth/auth-request-fields.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - request
    - key
    - value
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 293
    functionName: auth_request_import_continue
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - auth_request_import_channel_binding
    linkageType: ''
    returnType: void
    signature: "void auth_request_import_continue(struct auth_request *request,\n\t\t\t\t
      \ const char *key, const char *value)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-fields.c:300,1
    - Dst: auth_request_import_auth
      Src: /src/dovecot/src/auth/auth-request-fields.c:302,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:306,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-request-fields.c:307,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:308,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:309,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:310,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:311,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:312,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:313,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:314,1
    - Dst: auth_request_set_login_username_forced
      Src: /src/dovecot/src/auth/auth-request-fields.c:315,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:316,1
    - Dst: auth_request_set_auth_successful
      Src: /src/dovecot/src/auth/auth-request-fields.c:317,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:318,1
    - Dst: auth_request_set_password_verified
      Src: /src/dovecot/src/auth/auth-request-fields.c:319,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:320,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:326,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:327,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:328,1
    - Dst: str_begins
      Src: /src/dovecot/src/auth/auth-request-fields.c:329,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request-fields.c:330,1
    - Dst: str_begins
      Src: /src/dovecot/src/auth/auth-request-fields.c:331,1
    - Dst: auth_request_init_userdb_reply
      Src: /src/dovecot/src/auth/auth-request-fields.c:333,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request-fields.c:334,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 3
    argNames:
    - request
    - key
    - value
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 339
    functionName: auth_request_import
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - auth_request_set_login_username_forced
    - auth_request_set_auth_successful
    - str_begins
    - auth_fields_add
    - auth_request_set_password_verified
    - auth_request_set_username_forced
    - auth_request_init_userdb_reply
    - auth_request_import_auth
    - event_add_str
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_import(struct auth_request *request,\n\t\t\t const
      char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-fields.c:344,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:345,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - request
    - type
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 347
    functionName: auth_request_start_channel_binding
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void auth_request_start_channel_binding(struct auth_request *request,\n\t\t\t\t\tconst
      char *type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - request
    - data_r
    argTypes:
    - struct auth_request*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 359
    functionName: auth_request_accept_channel_binding
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int auth_request_accept_channel_binding(struct auth_request *request,\n\t\t\t\t\tbuffer_t
      **data_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request-fields.c:370,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/auth/auth-request-fields.c:371,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/auth/auth-request-fields.c:374,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-request-fields.c:381,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/auth/auth-request-fields.c:384,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-fields.c:396,1
    - Dst: auth_request_get_var_expand_table_full
      Src: /src/dovecot/src/auth/auth-request-fields.c:399,1
    - Dst: auth_request_var_expand_with_table
      Src: /src/dovecot/src/auth/auth-request-fields.c:401,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-request-fields.c:404,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/auth/auth-request-fields.c:408,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - request
    - username
    - error_r
    argTypes:
    - struct auth_request*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 418
    functionName: auth_request_fix_username
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - auth_request_var_expand_with_table
    - t_strdup_printf
    - str_sanitize
    - auth_request_get_var_expand_table_full
    - p_strconcat
    - t_strdup_noconst
    - str_c_modifiable
    linkageType: ''
    returnType: int
    signature: "int auth_request_fix_username(struct auth_request *request, const
      char **username,\n\t\t\t  const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request-fields.c:428,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-request-fields.c:431,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:442,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:443,1
    - Dst: auth_request_fix_username
      Src: /src/dovecot/src/auth/auth-request-fields.c:453,1
    - Dst: event_field_clear
      Src: /src/dovecot/src/auth/auth-request-fields.c:455,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-request-fields.c:458,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:462,1
    - Dst: auth_request_set_login_username
      Src: /src/dovecot/src/auth/auth-request-fields.c:468,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 3
    argNames:
    - request
    - username
    - error_r
    argTypes:
    - struct auth_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 420
    functionDepth: 2
    functionLinenumber: 420
    functionLinenumberEnd: 474
    functionName: auth_request_set_username
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 1
    functionsReached:
    - strchr
    - p_strdup
    - event_field_clear
    - auth_request_set_username_forced
    - auth_request_fix_username
    - auth_request_set_login_username
    - t_strdup_until
    - event_add_str
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_set_username(struct auth_request *request,\n\t\t\t
      \      const char *username, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-fields.c:479,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:481,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - request
    - username
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 483
    functionName: auth_request_set_username_forced
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 3
    functionsReached:
    - p_strdup
    - i_assert
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_username_forced(struct auth_request *request,\n\t\t\t\t
      \     const char *username)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-fields.c:488,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:491,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - request
    - username
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 494
    functionName: auth_request_set_login_username_forced
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - i_assert
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_login_username_forced(struct auth_request *request,\n\t\t\t\t\t
      \   const char *username)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-fields.c:507,1
    - Dst: auth_request_get_auth
      Src: /src/dovecot/src/auth/auth-request-fields.c:514,1
    - Dst: auth_request_fix_username
      Src: /src/dovecot/src/auth/auth-request-fields.c:521,1
    - Dst: event_field_clear
      Src: /src/dovecot/src/auth/auth-request-fields.c:523,1
    - Dst: auth_request_set_login_username_forced
      Src: /src/dovecot/src/auth/auth-request-fields.c:526,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request-fields.c:528,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - request
    - username
    - error_r
    argTypes:
    - struct auth_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 496
    functionDepth: 2
    functionLinenumber: 496
    functionLinenumberEnd: 531
    functionName: auth_request_set_login_username
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 1
    functionsReached:
    - strcmp
    - auth_request_set_login_username_forced
    - event_field_clear
    - e_debug
    - auth_request_fix_username
    - auth_request_get_auth
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_set_login_username(struct auth_request *request,\n\t\t\t\t
      \    const char *username,\n\t\t\t\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request-fields.c:539,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request-fields.c:539,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:544,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-request-fields.c:547,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:550,1
    - Dst: event_field_clear
      Src: /src/dovecot/src/auth/auth-request-fields.c:553,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 554
    functionName: auth_request_master_user_login_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - event_field_clear
    - auth_request_set_username_forced
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void auth_request_master_user_login_finish(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-fields.c:558,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:560,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request-fields.c:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - request
    - realm
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 562
    functionName: auth_request_set_realm
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void auth_request_set_realm(struct auth_request *request, const char
      *realm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 567
    functionName: auth_request_set_auth_successful
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_request_set_auth_successful(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 572
    functionName: auth_request_set_password_verified
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_request_set_password_verified(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/auth-request-fields.c:576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 577
    functionName: auth_request_init_userdb_reply
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 1
    functionsReached:
    - auth_fields_init
    linkageType: ''
    returnType: void
    signature: void auth_request_init_userdb_reply(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_memdup
      Src: /src/dovecot/src/auth/auth-request-fields.c:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - request
    - credentials
    - size
    argTypes:
    - struct auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 579
    functionDepth: 1
    functionLinenumber: 579
    functionLinenumberEnd: 586
    functionName: auth_request_set_delayed_credentials
    functionSourceFile: /src/dovecot/src/auth/auth-request-fields.c
    functionUses: 0
    functionsReached:
    - p_memdup
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_delayed_credentials(struct auth_request *request,\n\t\t\t\t\t
      \ const unsigned char *credentials,\n\t\t\t\t\t  size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-fields.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 25
    functionName: auth_fields_init
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 3
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct auth_fields
    signature: struct auth_fields *auth_fields_init(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:29,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/auth-fields.c:32,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-fields.c:33,1
    - Dst: array_append_array
      Src: /src/dovecot/src/auth/auth-fields.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - fields
    argTypes:
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: auth_fields_snapshot_preserve
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - array_append_array
    - array_is_created
    - array_count
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void auth_fields_snapshot_preserve(struct auth_fields *fields)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:44,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth-fields.c:47,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-fields.c:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - fields
    - key
    - idx_r
    argTypes:
    - struct auth_fields*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 55
    functionName: auth_fields_find_idx
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_get
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool auth_fields_find_idx(struct auth_fields *fields, const char *key,\n\t\t
      \    unsigned int *idx_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-fields.c:64,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-fields.c:65,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-fields.c:65,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-fields.c:66,1
    - Dst: auth_fields_find_idx
      Src: /src/dovecot/src/auth/auth-fields.c:68,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:69,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/auth-fields.c:70,1
    - Dst: array_append_space
      Src: /src/dovecot/src/auth/auth-fields.c:72,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-fields.c:73,1
    - Dst: auth_fields_snapshot_preserve
      Src: /src/dovecot/src/auth/auth-fields.c:75,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/auth/auth-fields.c:76,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-fields.c:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - fields
    - key
    - value
    - flags
    argTypes:
    - struct auth_fields*
    - char*
    - char*
    - enum auth_field_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 80
    functionName: auth_fields_add
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 3
    functionsReached:
    - strchr
    - p_strdup
    - array_append_space
    - p_array_init
    - array_idx_modifiable
    - auth_fields_find_idx
    - auth_fields_snapshot_preserve
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_fields_add(struct auth_fields *fields,\n\t\t     const char
      *key, const char *value,\n\t\t     enum auth_field_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find_idx
      Src: /src/dovecot/src/auth/auth-fields.c:86,1
    - Dst: auth_fields_snapshot_preserve
      Src: /src/dovecot/src/auth/auth-fields.c:87,1
    - Dst: array_delete
      Src: /src/dovecot/src/auth/auth-fields.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - fields
    - key
    argTypes:
    - struct auth_fields*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: auth_fields_remove
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - array_delete
    - auth_fields_find_idx
    - auth_fields_snapshot_preserve
    linkageType: ''
    returnType: void
    signature: void auth_fields_remove(struct auth_fields *fields, const char *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find_idx
      Src: /src/dovecot/src/auth/auth-fields.c:97,1
    - Dst: array_idx
      Src: /src/dovecot/src/auth/auth-fields.c:100,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-fields.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fields
    - key
    argTypes:
    - struct auth_fields*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: auth_fields_find
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 3
    functionsReached:
    - i_assert
    - auth_fields_find_idx
    - array_idx
    linkageType: ''
    returnType: char
    signature: char *auth_fields_find(struct auth_fields *fields, const char *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-fields.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fields
    - key
    argTypes:
    - struct auth_fields*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: auth_fields_exists
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - auth_fields_find
    linkageType: ''
    returnType: bool
    signature: bool auth_fields_exists(struct auth_fields *fields, const char *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:112,1
    - Dst: auth_fields_snapshot_preserve
      Src: /src/dovecot/src/auth/auth-fields.c:113,1
    - Dst: array_clear
      Src: /src/dovecot/src/auth/auth-fields.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fields
    argTypes:
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 116
    functionName: auth_fields_reset
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_clear
    - auth_fields_snapshot_preserve
    linkageType: ''
    returnType: void
    signature: void auth_fields_reset(struct auth_fields *fields)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-fields.c:127,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-fields.c:131,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-fields.c:133,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-fields.c:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - fields
    - prefix
    - args
    - flags
    argTypes:
    - struct auth_fields*
    - char*
    - char**
    - enum auth_field_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 140
    functionName: auth_fields_import_prefixed_args
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strconcat
    - t_strdup_until
    - auth_fields_add
    linkageType: ''
    returnType: int
    signature: "int auth_fields_import_prefixed_args(struct auth_fields *fields,\n\t\t\t\t\t
      \   const char *prefix,\n\t\t\t\t\t    const char *const *args,\n\t\t\t\t\t
      \   enum auth_field_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/auth/auth-fields.c:147,1
    - Dst: auth_fields_import_prefixed_args
      Src: /src/dovecot/src/auth/auth-fields.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - fields
    - prefix
    - str
    - flags
    argTypes:
    - struct auth_fields*
    - char*
    - char*
    - enum auth_field_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 142
    functionDepth: 4
    functionLinenumber: 142
    functionLinenumberEnd: 149
    functionName: auth_fields_import_prefixed
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 1
    functionsReached:
    - t_strsplit_tabescaped
    - auth_fields_import_prefixed_args
    linkageType: ''
    returnType: int
    signature: "int auth_fields_import_prefixed(struct auth_fields *fields, const
      char *prefix,\n\t\t\t\tconst char *str, enum auth_field_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_import_prefixed_args
      Src: /src/dovecot/src/auth/auth-fields.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fields
    - args
    - flags
    argTypes:
    - struct auth_fields*
    - char**
    - enum auth_field_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 4
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: auth_fields_import_args
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - auth_fields_import_prefixed_args
    linkageType: ''
    returnType: int
    signature: "int auth_fields_import_args(struct auth_fields *fields,\n\t\t\t    const
      char *const *args,\n\t\t\t    enum auth_field_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:166,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/auth-fields.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fields
    argTypes:
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: auth_fields_export
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - p_array_init
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: ARRAY_TYPE *auth_fields_export(struct auth_fields *fields)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:179,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth-fields.c:182,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-fields.c:188,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-fields.c:191,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-fields.c:192,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-fields.c:193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - fields
    - dest
    - flags_mask
    - flags_result
    - prefix_with_tab
    argTypes:
    - struct auth_fields*
    - string_t*
    - enum auth_field_flags
    - enum auth_field_flags
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 195
    functionName: auth_fields_append
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - array_get
    - str_append_tabescaped
    - str_append
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void auth_fields_append(struct auth_fields *fields, string_t *dest,\n\t\t\tenum
      auth_field_flags flags_mask,\n\t\t\tenum auth_field_flags flags_result,\n\t\t\tbool
      prefix_with_tab)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:199,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-fields.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - fields
    argTypes:
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 201
    functionName: auth_fields_is_empty
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool auth_fields_is_empty(struct auth_fields *fields)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:208,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:211,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-fields.c:213,1
    - Dst: array_clear
      Src: /src/dovecot/src/auth/auth-fields.c:215,1
    - Dst: array_append_array
      Src: /src/dovecot/src/auth/auth-fields.c:216,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/auth/auth-fields.c:218,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/auth/auth-fields.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - fields
    argTypes:
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 220
    functionName: auth_fields_snapshot
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 1
    functionsReached:
    - ENUM_NEGATE
    - array_count
    - array_clear
    - array_foreach_modifiable
    - array_is_created
    - array_append_array
    linkageType: ''
    returnType: void
    signature: void auth_fields_snapshot(struct auth_fields *fields)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:224,1
    - Dst: array_clear
      Src: /src/dovecot/src/auth/auth-fields.c:225,1
    - Dst: array_append_array
      Src: /src/dovecot/src/auth/auth-fields.c:226,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-fields.c:227,1
    - Dst: array_delete
      Src: /src/dovecot/src/auth/auth-fields.c:228,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-fields.c:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - fields
    argTypes:
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: auth_fields_rollback
    functionSourceFile: /src/dovecot/src/auth/auth-fields.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_count
    - array_clear
    - array_is_created
    - array_append_array
    linkageType: ''
    returnType: void
    signature: void auth_fields_rollback(struct auth_fields *fields)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-cache.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - key
    - idx_r
    argTypes:
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 42
    functionName: auth_request_var_expand_tab_find
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool auth_request_var_expand_tab_find(const char *key, unsigned int
      *idx_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-cache.c:47,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:48,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:49,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:50,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-cache.c:51,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - str
    - data
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 53
    functionName: auth_cache_key_add_var
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_c
    - str_len
    linkageType: ''
    returnType: void
    signature: void auth_cache_key_add_var(string_t *str, const char *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-cache.c:60,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:61,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:62,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:63,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-cache.c:64,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - str
    - i
    argTypes:
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 66
    functionName: auth_cache_key_add_tab_idx
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_c
    - str_len
    linkageType: ''
    returnType: void
    signature: void auth_cache_key_add_tab_idx(string_t *str, unsigned int i)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/auth/auth-cache.c:78,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/auth/auth-cache.c:81,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-cache.c:82,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/auth/auth-cache.c:87,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-cache.c:88,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/auth/auth-cache.c:91,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-cache.c:92,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-cache.c:99,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/auth/auth-cache.c:100,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/auth/auth-cache.c:101,1
    - Dst: auth_request_var_expand_tab_find
      Src: /src/dovecot/src/auth/auth-cache.c:103,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/auth-cache.c:104,1
    - Dst: auth_cache_key_add_var
      Src: /src/dovecot/src/auth/auth-cache.c:105,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-cache.c:107,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/auth-cache.c:107,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-cache.c:113,1
    - Dst: t_strdup
      Src: /src/dovecot/src/auth/auth-cache.c:115,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-cache.c:115,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/auth-cache.c:116,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/auth-cache.c:117,1
    - Dst: auth_cache_key_add_tab_idx
      Src: /src/dovecot/src/auth/auth-cache.c:119,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-cache.c:123,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:124,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-cache.c:125,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/auth/auth-cache.c:128,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-cache.c:130,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-cache.c:130,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 5
    argNames:
    - pool
    - query
    - exclude_driver
    - cache_key_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 132
    functionName: auth_cache_parse_key_exclude
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_c
    - p_strdup
    - var_expand_program_create
    - str_len
    - t_strdup_printf
    - t_strdup
    - t_str_new
    - str_append_c
    - auth_request_var_expand_tab_find
    - var_expand_program_free
    - null_strcmp
    - memset
    - i_assert
    - N_ELEMENTS
    - str_begins_with
    - str_truncate
    - str_append
    - auth_cache_key_add_var
    - var_expand_program_variables
    - auth_cache_key_add_tab_idx
    linkageType: ''
    returnType: int
    signature: "int auth_cache_parse_key_exclude(pool_t pool, const char *query,\n\t\t\t\t\tconst
      char *exclude_driver,\n\t\t\t\t\tconst char **cache_key_r,\n\t\t\t\t\tconst
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/auth-cache.c:140,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth-cache.c:142,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-cache.c:143,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-cache.c:144,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-cache.c:146,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-cache.c:147,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-cache.c:149,1
    - Dst: auth_cache_parse_key_exclude
      Src: /src/dovecot/src/auth/auth-cache.c:153,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-cache.c:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 6
    argNames:
    - pool
    - query
    - fields
    - exclude_driver
    - cache_key_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - ARRAY_TYPE*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 134
    functionDepth: 3
    functionLinenumber: 134
    functionLinenumberEnd: 159
    functionName: auth_cache_parse_key_and_fields
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - array_get
    - t_strdup_printf
    - auth_cache_parse_key_exclude
    - array_is_empty
    - str_append
    linkageType: ''
    returnType: int
    signature: "int auth_cache_parse_key_and_fields(pool_t pool, const char *query,\n\t\t\t\t
      \   const ARRAY_TYPE(const_string) *fields,\n\t\t\t\t    const char *exclude_driver,\n\t\t\t\t
      \   const char **cache_key_r,\n\t\t\t\t    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cache
    - node
    argTypes:
    - struct auth_cache*
    - struct auth_cache_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 177
    functionName: auth_cache_node_unlink
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_cache_node_unlink(struct auth_cache *cache, struct auth_cache_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - cache
    - node
    argTypes:
    - struct auth_cache*
    - struct auth_cache_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 191
    functionName: auth_cache_node_link_head
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void auth_cache_node_link_head(struct auth_cache *cache,\n\t\t\t  struct
      auth_cache_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_node_unlink
      Src: /src/dovecot/src/auth/auth-cache.c:198,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/auth/auth-cache.c:201,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-cache.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cache
    - node
    argTypes:
    - struct auth_cache*
    - struct auth_cache_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: auth_cache_node_destroy
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - i_free
    - hash_table_remove
    - auth_cache_node_unlink
    linkageType: ''
    returnType: void
    signature: void auth_cache_node_destroy(struct auth_cache *cache, struct auth_cache_node
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-cache.c:209,1
    - Dst: auth_cache_clear
      Src: /src/dovecot/src/auth/auth-cache.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: sig_auth_cache_clear
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - auth_cache_clear
    - e_info
    linkageType: ''
    returnType: void
    signature: void sig_auth_cache_clear(const siginfo_t *si ATTR_UNUSED, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-cache.c:220,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-cache.c:224,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-cache.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - context
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 240
    functionName: sig_auth_cache_stats
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - e_info
    linkageType: ''
    returnType: void
    signature: void sig_auth_cache_stats(const siginfo_t *si ATTR_UNUSED, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-cache.c:248,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/auth/auth-cache.c:249,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-cache.c:254,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/auth/auth-cache.c:256,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/auth/auth-cache.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - max_size
    - ttl_secs
    - neg_ttl_secs
    argTypes:
    - size_t
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 261
    functionName: auth_cache_new
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - event_create
    - hash_table_create
    - i_new
    - lib_signals_set_handler
    linkageType: ''
    returnType: struct auth_cache
    signature: "struct auth_cache *auth_cache_new(size_t max_size, unsigned int ttl_secs,\n\t\t\t\t
      \ unsigned int neg_ttl_secs\n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_unset_handler
      Src: /src/dovecot/src/auth/auth-cache.c:268,1
    - Dst: lib_signals_unset_handler
      Src: /src/dovecot/src/auth/auth-cache.c:269,1
    - Dst: auth_cache_clear
      Src: /src/dovecot/src/auth/auth-cache.c:271,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/auth/auth-cache.c:272,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-cache.c:273,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-cache.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - _cache
    argTypes:
    - struct auth_cache**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 275
    functionName: auth_cache_free
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - event_unref
    - auth_cache_clear
    - lib_signals_unset_handler
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void auth_cache_free(struct auth_cache **_cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_count
      Src: /src/dovecot/src/auth/auth-cache.c:279,1
    - Dst: auth_cache_node_destroy
      Src: /src/dovecot/src/auth/auth-cache.c:282,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/auth/auth-cache.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct auth_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 285
    functionName: auth_cache_clear
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 2
    functionsReached:
    - hash_table_count
    - auth_cache_node_destroy
    - hash_table_clear
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int auth_cache_clear(struct auth_cache *cache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match
      Src: /src/dovecot/src/auth/auth-cache.c:315,1
    - Dst: t_strcut
      Src: /src/dovecot/src/auth/auth-cache.c:315,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - node
    - user_mask
    argTypes:
    - struct auth_cache_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 316
    functionName: auth_cache_node_is_user
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - t_strcut
    - wildcard_match
    linkageType: ''
    returnType: bool
    signature: "bool auth_cache_node_is_user(struct auth_cache_node *node,\n\t\t\t\t
      \   const char *user_mask)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_node_is_user
      Src: /src/dovecot/src/auth/auth-cache.c:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - user_masks
    argTypes:
    - struct auth_cache_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 330
    functionName: auth_cache_node_is_one_of_users
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - auth_cache_node_is_user
    linkageType: ''
    returnType: bool
    signature: "bool auth_cache_node_is_one_of_users(struct auth_cache_node *node,\n\t\t\t\t\t
      \   const char *const *user_masks)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_node_is_one_of_users
      Src: /src/dovecot/src/auth/auth-cache.c:340,1
    - Dst: auth_cache_node_destroy
      Src: /src/dovecot/src/auth/auth-cache.c:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cache
    - user_masks
    argTypes:
    - struct auth_cache*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 332
    functionDepth: 3
    functionLinenumber: 332
    functionLinenumberEnd: 346
    functionName: auth_cache_clear_users
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - auth_cache_node_is_one_of_users
    - auth_cache_node_destroy
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int auth_cache_clear_users(struct auth_cache *cache,\n\t\t\t\t
      \   const char *const *user_masks)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_tabescape
      Src: /src/dovecot/src/auth/auth-cache.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - string
    - auth_request ATTR_UNUSED
    argTypes:
    - char*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 355
    functionName: auth_cache_escape
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - str_tabescape
    linkageType: ''
    returnType: char
    signature: "char *\nauth_cache_escape(const char *string,\n\t\t  const struct
      auth_request *auth_request ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-cache.c:364,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-cache.c:368,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-cache.c:379,1
    - Dst: auth_request_get_var_expand_table_full
      Src: /src/dovecot/src/auth/auth-cache.c:382,1
    - Dst: auth_request_var_expand_with_table
      Src: /src/dovecot/src/auth/auth-cache.c:384,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-cache.c:388,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-cache.c:388,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-cache.c:391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - request
    - key
    - username
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 392
    functionName: auth_request_expand_cache_key
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - t_str_new
    - str_c
    - auth_request_var_expand_with_table
    - e_error
    - i_assert
    - t_strconcat
    - auth_request_get_var_expand_table_full
    linkageType: ''
    returnType: char
    signature: "char *\nauth_request_expand_cache_key(const struct auth_request *request,\n\t\t\t
      \     const char *key, const char *username)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_expand_cache_key
      Src: /src/dovecot/src/auth/auth-cache.c:407,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/auth-cache.c:408,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-cache.c:414,1
    - Dst: time
      Src: /src/dovecot/src/auth/auth-cache.c:417,1
    - Dst: auth_cache_node_unlink
      Src: /src/dovecot/src/auth/auth-cache.c:425,1
    - Dst: auth_cache_node_link_head
      Src: /src/dovecot/src/auth/auth-cache.c:426,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 6
    argNames:
    - cache
    - request
    - key
    - node_r
    - expired_r
    - neg_expired_r
    argTypes:
    - struct auth_cache*
    - struct auth_request*
    - char*
    - struct auth_cache_node**
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 394
    functionDepth: 3
    functionLinenumber: 394
    functionLinenumberEnd: 437
    functionName: auth_cache_lookup
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - auth_cache_node_link_head
    - time
    - auth_request_expand_cache_key
    - strlen
    - hash_table_lookup
    - auth_cache_node_unlink
    linkageType: ''
    returnType: char
    signature: "char *\nauth_cache_lookup(struct auth_cache *cache, const struct auth_request
      *request,\n\t\t  const char *key, struct auth_cache_node **node_r,\n\t\t  bool
      *expired_r, bool *neg_expired_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-cache.c:443,1
    - Dst: auth_request_expand_cache_key
      Src: /src/dovecot/src/auth/auth-cache.c:451,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-cache.c:452,1
    - Dst: auth_cache_node_destroy
      Src: /src/dovecot/src/auth/auth-cache.c:459,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/auth-cache.c:461,1
    - Dst: auth_cache_node_destroy
      Src: /src/dovecot/src/auth/auth-cache.c:464,1
    - Dst: i_malloc
      Src: /src/dovecot/src/auth/auth-cache.c:468,1
    - Dst: time
      Src: /src/dovecot/src/auth/auth-cache.c:469,1
    - Dst: memcpy
      Src: /src/dovecot/src/auth/auth-cache.c:472,1
    - Dst: memcpy
      Src: /src/dovecot/src/auth/auth-cache.c:473,1
    - Dst: auth_cache_node_link_head
      Src: /src/dovecot/src/auth/auth-cache.c:475,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/auth/auth-cache.c:479,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 5
    argNames:
    - cache
    - request
    - key
    - value
    - last_success
    argTypes:
    - struct auth_cache*
    - struct auth_request*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 439
    functionDepth: 3
    functionLinenumber: 439
    functionLinenumberEnd: 488
    functionName: auth_cache_insert
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_malloc
    - time
    - auth_request_expand_cache_key
    - auth_cache_node_link_head
    - strlen
    - hash_table_insert
    - auth_cache_node_destroy
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void auth_cache_insert(struct auth_cache *cache, struct auth_request
      *request,\n\t\t       const char *key, const char *value, bool last_success)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_expand_cache_key
      Src: /src/dovecot/src/auth/auth-cache.c:495,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/auth-cache.c:496,1
    - Dst: auth_cache_node_destroy
      Src: /src/dovecot/src/auth/auth-cache.c:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cache
    - request
    - key
    argTypes:
    - struct auth_cache*
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 490
    functionDepth: 3
    functionLinenumber: 490
    functionLinenumberEnd: 501
    functionName: auth_cache_remove
    functionSourceFile: /src/dovecot/src/auth/auth-cache.c
    functionUses: 0
    functionsReached:
    - auth_cache_node_destroy
    - hash_table_lookup
    - auth_request_expand_cache_key
    linkageType: ''
    returnType: void
    signature: "void auth_cache_remove(struct auth_cache *cache,\n\t\t       const
      struct auth_request *request, const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - string
    - ATTR_UNUSED
    argTypes:
    - char*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: escape_none
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *\nescape_none(const char *string,\n\t    const struct auth_request
      *request ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_escape
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - string
    - ATTR_UNUSED
    argTypes:
    - char*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: auth_request_str_escape
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - str_escape
    linkageType: ''
    returnType: char
    signature: "char *\nauth_request_str_escape(const char *string,\n\t\t\tconst struct
      auth_request *request ATTR_UNUSED)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:74,1
    - Dst: t_new
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:80,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:81,1
    - Dst: memcpy
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:85,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:91,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:92,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:95,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:96,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:99,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:100,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:102,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:103,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:104,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:106,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:108,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:110,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:112,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:115,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:119,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:121,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:123,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:125,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:128,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:128,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:129,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:129,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:130,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:133,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:135,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:137,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:138,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:141,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:142,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:144,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:145,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:146,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:147,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:149,1
    - Dst: t_strcut
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:151,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:152,1
    - Dst: strrchr
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:153,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:156,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:157,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:161,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:162,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:166,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:170,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:171,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:172,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:173,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:174,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:176,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:178,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 72
    argCount: 3
    argNames:
    - auth_request
    - username
    - count
    argTypes:
    - struct auth_request*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 180
    functionName: auth_request_get_var_expand_table_full
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 2
    functionsReached:
    - memcpy
    - dec2str
    - t_new
    - i_strchr_to_next
    - strrchr
    - net_ip2addr
    - MALLOC_ADD
    - t_strcut
    - var_expand_table_set_value
    - N_ELEMENTS
    linkageType: ''
    returnType: struct var_expand_table
    signature: "struct var_expand_table *\nauth_request_get_var_expand_table_full(const
      struct auth_request *auth_request,\n\t\t\t\t       const char *username,\n\t\t\t\t
      \      unsigned int *count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_var_expand_table_full
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: auth_request_get_var_expand_table
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 4
    functionsReached:
    - auth_request_get_var_expand_table_full
    linkageType: ''
    returnType: struct var_expand_table
    signature: 'struct var_expand_table *

      auth_request_get_var_expand_table(const struct auth_request *auth_request)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - field_name
    - value_r
    - context
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 204
    functionName: auth_request_var_expand_func_passdb
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - auth_fields_find
    linkageType: ''
    returnType: int
    signature: "int auth_request_var_expand_func_passdb(const char *field_name, const
      char **value_r,\n\t\t\t\t    void *context,\n\t\t\t\t    const char **error_r
      ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - field_name
    - value_r
    - context
    - ATTR_UNUSED
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 206
    functionDepth: 3
    functionLinenumber: 206
    functionLinenumberEnd: 219
    functionName: auth_request_var_expand_func_userdb
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - auth_fields_find
    linkageType: ''
    returnType: int
    signature: "int auth_request_var_expand_func_userdb(const char *field_name, const
      char **value_r,\n\t\t\t\t    void *context, const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_var_expand_with_table
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:232,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - dest
    - str
    - auth_request
    - escape_func
    - error_r
    argTypes:
    - string_t*
    - char*
    - struct auth_request*
    - auth_request_escape_func_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 235
    functionName: auth_request_var_expand
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 2
    functionsReached:
    - auth_request_get_var_expand_table
    - auth_request_var_expand_with_table
    linkageType: ''
    returnType: int
    signature: "int auth_request_var_expand(string_t *dest, const char *str,\n\t\t\t
      \   const struct auth_request *auth_request,\n\t\t\t    auth_request_escape_func_t
      *escape_func,\n\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:245,1
    - Dst: var_expand
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - dest
    - str
    - auth_request
    - table
    - escape_func
    - error_r
    argTypes:
    - string_t*
    - char*
    - struct auth_request*
    - struct var_expand_table*
    - auth_request_escape_func_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 258
    functionName: auth_request_var_expand_with_table
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 4
    functionsReached:
    - i_zero
    - var_expand
    linkageType: ''
    returnType: int
    signature: "int auth_request_var_expand_with_table(string_t *dest, const char
      *str,\n\t\t\t\t       const struct auth_request *auth_request,\n\t\t\t\t       const
      struct var_expand_table *table,\n\t\t\t\t       auth_request_escape_func_t *escape_func,\n\t\t\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:265,1
    - Dst: auth_request_var_expand
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:266,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - str
    - auth_request
    - escape_func
    - value_r
    - error_r
    argTypes:
    - char*
    - struct auth_request*
    - auth_request_escape_func_t*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 270
    functionName: t_auth_request_var_expand
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - auth_request_var_expand
    linkageType: ''
    returnType: int
    signature: "int t_auth_request_var_expand(const char *str,\n\t\t\t      const
      struct auth_request *auth_request,\n\t\t\t      auth_request_escape_func_t *escape_func,\n\t\t\t
      \     const char **value_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - context
    - params_r
    argTypes:
    - void*
    - struct var_expand_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 281
    functionName: auth_request_event_var_expand_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - auth_request_get_var_expand_table
    linkageType: ''
    returnType: void
    signature: "void auth_request_event_var_expand_callback(void *context,\n\t\t\t\t
      \      struct var_expand_params *params_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:286,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:290,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/auth/auth-request-var-expand.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 294
    functionName: auth_request_event_set_var_expand
    functionSourceFile: /src/dovecot/src/auth/auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - event_set_ptr
    - p_new
    linkageType: ''
    returnType: void
    signature: void auth_request_event_set_var_expand(struct auth_request *auth_request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-username-filter.c:42,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/test-username-filter.c:44,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/auth/test-username-filter.c:45,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-username-filter.c:46,1
    - Dst: auth_request_username_accepted
      Src: /src/dovecot/src/auth/test-username-filter.c:46,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-username-filter.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 50
    functionName: test_username_filter
    functionSourceFile: /src/dovecot/src/auth/test-username-filter.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - auth_request_username_accepted
    - t_strsplit_spaces
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_username_filter(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/auth/userdb-passwd.c:41,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/auth/userdb-passwd.c:43,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/userdb-passwd.c:45,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd.c:45,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/userdb-passwd.c:67,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd.c:67,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - auth_request
    - module
    - start_tv
    argTypes:
    - struct auth_request*
    - struct passwd_userdb_module*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 75
    functionName: passwd_check_warnings
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - e_warning
    - timeval_diff_msecs
    - authdb_event
    linkageType: ''
    returnType: void
    signature: "void passwd_check_warnings(struct auth_request *auth_request,\n\t\t
      \     struct passwd_userdb_module *module,\n\t\t      const struct timeval *start_tv)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/userdb-passwd.c:87,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd.c:87,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/auth/userdb-passwd.c:89,1
    - Dst: i_getpwnam
      Src: /src/dovecot/src/auth/userdb-passwd.c:90,1
    - Dst: passwd_check_warnings
      Src: /src/dovecot/src/auth/userdb-passwd.c:92,1
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/userdb-passwd.c:94,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-passwd.c:97,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd.c:97,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-passwd.c:99,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/userdb-passwd.c:102,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-passwd.c:103,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/userdb-passwd.c:107,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-passwd.c:110,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-passwd.c:112,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/userdb-passwd.c:112,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-passwd.c:113,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-passwd.c:114,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/userdb-passwd.c:114,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-passwd.c:116,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-passwd.c:117,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/userdb-passwd.c:117,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-passwd.c:118,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-passwd.c:119,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/userdb-passwd.c:119,1
    - Dst: auth_request_set_userdb_fields
      Src: /src/dovecot/src/auth/userdb-passwd.c:121,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-passwd.c:122,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-passwd.c:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 2
    argNames:
    - auth_request
    - callback
    argTypes:
    - struct auth_request*
    - userdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 127
    functionName: passwd_lookup
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd.c
    functionUses: 2
    functionsReached:
    - i_gettimeofday
    - authdb_event
    - i_getpwnam
    - auth_request_db_log_unknown_user
    - auth_fields_init
    - passwd_check_warnings
    - dec2str
    - auth_fields_add
    - e_debug
    - auth_request_set_field
    - auth_request_set_userdb_fields
    - e_error
    - callback
    - auth_request_set_userdb_field
    linkageType: ''
    returnType: void
    signature: "void passwd_lookup(struct auth_request *auth_request,\n\t\t\t  userdb_callback_t
      *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/auth/userdb-passwd.c:135,1
    - Dst: setpwent
      Src: /src/dovecot/src/auth/userdb-passwd.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - auth_request
    - callback
    - context
    argTypes:
    - struct auth_request*
    - userdb_iter_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 144
    functionName: passwd_iterate_init
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd.c
    functionUses: 0
    functionsReached:
    - setpwent
    - i_new
    linkageType: ''
    returnType: struct userdb_iterate_context
    signature: "struct userdb_iterate_context *\npasswd_iterate_init(struct auth_request
      *auth_request,\n\t\t    userdb_iter_callback_t *callback, void *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - pw
    - set
    argTypes:
    - struct passwd*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 160
    functionName: passwd_iterate_want_pw
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool passwd_iterate_want_pw(struct passwd *pw, const struct auth_settings
      *set)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getpwent
      Src: /src/dovecot/src/auth/userdb-passwd.c:179,1
    - Dst: passwd_iterate_want_pw
      Src: /src/dovecot/src/auth/userdb-passwd.c:180,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/userdb-passwd.c:181,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-passwd.c:189,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-passwd.c:189,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/userdb-passwd.c:193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 194
    functionName: passwd_iterate_next
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd.c
    functionUses: 0
    functionsReached:
    - struct userdb_iterate_context*::callback
    - authdb_event
    - getpwent
    - e_error
    - passwd_iterate_want_pw
    linkageType: ''
    returnType: void
    signature: void passwd_iterate_next(struct userdb_iterate_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/userdb-passwd.c:199,1
    - Dst: passwd_iterate_next
      Src: /src/dovecot/src/auth/userdb-passwd.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 197
    functionDepth: 3
    functionLinenumber: 197
    functionLinenumberEnd: 201
    functionName: passwd_iterate_next_timeout
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd.c
    functionUses: 0
    functionsReached:
    - passwd_iterate_next
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void passwd_iterate_next_timeout(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/auth/userdb-passwd.c:210,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/userdb-passwd.c:213,1
    - Dst: endpwent
      Src: /src/dovecot/src/auth/userdb-passwd.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 218
    functionName: passwd_iterate_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd.c
    functionUses: 0
    functionsReached:
    - endpwent
    - timeout_add
    - i_free
    linkageType: ''
    returnType: int
    signature: int passwd_iterate_deinit(struct userdb_iterate_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-passwd.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - pool
    - ATTR_UNUSED
    - userdb_params ATTR_UNUSED
    - module_r
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - struct event*
    - struct userdb_parameters*
    - struct userdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 232
    functionName: passwd_preinit
    functionSourceFile: /src/dovecot/src/auth/userdb-passwd.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: int
    signature: "int passwd_preinit(pool_t pool, struct event *event ATTR_UNUSED,\n\t
      \      const struct userdb_parameters *userdb_params ATTR_UNUSED,\n\t       struct
      userdb_module **module_r,\n\t       const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: process_title_set
      Src: /src/dovecot/src/auth/main.c:80,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/main.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 87
    functionName: auth_refresh_proctitle
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 2
    functionsReached:
    - process_title_set
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void auth_refresh_proctitle(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_settings_read
      Src: /src/dovecot/src/auth/main.c:93,1
    - Dst: auth_settings_get
      Src: /src/dovecot/src/auth/main.c:94,1
    - Dst: t_new
      Src: /src/dovecot/src/auth/main.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 98
    functionName: read_global_settings
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 0
    functionsReached:
    - t_new
    - auth_settings_read
    - auth_settings_get
    linkageType: ''
    returnType: char
    signature: char *const *read_global_settings(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/main.c:104,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/main.c:105,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/main.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - typename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: auth_socket_type_get
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: enum auth_socket_type
    signature: enum auth_socket_type auth_socket_type_get(const char *typename)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/main.c:121,1
    - Dst: master_service_get_socket_count
      Src: /src/dovecot/src/auth/main.c:122,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/auth/main.c:127,1
    - Dst: net_getunixname
      Src: /src/dovecot/src/auth/main.c:128,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/main.c:130,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/main.c:133,1
    - Dst: stat
      Src: /src/dovecot/src/auth/main.c:134,1
    - Dst: i_error
      Src: /src/dovecot/src/auth/main.c:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 138
    functionName: listeners_init
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_error
    - i_fatal
    - master_service_get_socket_count
    - net_getunixname
    - i_strdup
    - array_idx_get_space
    - stat
    linkageType: ''
    returnType: void
    signature: void listeners_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/auth/main.c:142,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/auth/main.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - name
    - ATTR_UNUSED
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 148
    functionName: auth_module_filter
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: bool auth_module_filter(const char *name, void *context ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sql_drivers_init
      Src: /src/dovecot/src/auth/main.c:156,1
    - Dst: passdbs_init
      Src: /src/dovecot/src/auth/main.c:160,1
    - Dst: userdbs_init
      Src: /src/dovecot/src/auth/main.c:161,1
    - Dst: password_schemes_register_all
      Src: /src/dovecot/src/auth/main.c:163,1
    - Dst: read_global_settings
      Src: /src/dovecot/src/auth/main.c:165,1
    - Dst: i_zero
      Src: /src/dovecot/src/auth/main.c:167,1
    - Dst: module_dir_load
      Src: /src/dovecot/src/auth/main.c:173,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/auth/main.c:174,1
    - Dst: auth_penalty_init
      Src: /src/dovecot/src/auth/main.c:177,1
    - Dst: dict_drivers_register_builtin
      Src: /src/dovecot/src/auth/main.c:179,1
    - Dst: auth_sasl_preinit
      Src: /src/dovecot/src/auth/main.c:180,1
    - Dst: auths_preinit
      Src: /src/dovecot/src/auth/main.c:181,1
    - Dst: listeners_init
      Src: /src/dovecot/src/auth/main.c:183,1
    - Dst: auth_token_init
      Src: /src/dovecot/src/auth/main.c:185,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/auth/main.c:188,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/auth/main.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 190
    functionName: main_preinit
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 5
    functionsReached:
    - sql_drivers_init
    - i_zero
    - auth_sasl_preinit
    - restrict_access_by_env
    - auths_preinit
    - auth_token_init
    - dict_drivers_register_builtin
    - password_schemes_register_all
    - module_dir_load
    - restrict_access_allow_coredumps
    - auth_penalty_init
    - read_global_settings
    - userdbs_init
    - passdbs_init
    - listeners_init
    - module_dir_init
    linkageType: ''
    returnType: void
    signature: void main_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/main.c:197,1
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/auth/main.c:203,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/auth/main.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 206
    functionName: auth_module_load
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - module_dir_init
    - module_dir_load_missing
    linkageType: ''
    returnType: void
    signature: void auth_module_load(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/auth/main.c:213,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/auth/main.c:214,1
    - Dst: auth_refresh_proctitle
      Src: /src/dovecot/src/auth/main.c:217,1
    - Dst: auth_worker_refresh_proctitle
      Src: /src/dovecot/src/auth/main.c:218,1
    - Dst: child_wait_init
      Src: /src/dovecot/src/auth/main.c:220,1
    - Dst: auth_worker_connection_init
      Src: /src/dovecot/src/auth/main.c:221,1
    - Dst: auths_init
      Src: /src/dovecot/src/auth/main.c:222,1
    - Dst: auth_sasl_init
      Src: /src/dovecot/src/auth/main.c:223,1
    - Dst: auth_request_handler_init
      Src: /src/dovecot/src/auth/main.c:224,1
    - Dst: auth_policy_init
      Src: /src/dovecot/src/auth/main.c:225,1
    - Dst: password_schemes_allow_weak
      Src: /src/dovecot/src/auth/main.c:228,1
    - Dst: master_service_set_client_limit
      Src: /src/dovecot/src/auth/main.c:233,1
    - Dst: auth_worker_set_max_restart_request_count
      Src: /src/dovecot/src/auth/main.c:234,1
    - Dst: master_service_get_restart_request_count
      Src: /src/dovecot/src/auth/main.c:235,1
    - Dst: master_service_set_restart_request_count
      Src: /src/dovecot/src/auth/main.c:237,1
    - Dst: passdb_cache_init
      Src: /src/dovecot/src/auth/main.c:240,1
    - Dst: i_warning
      Src: /src/dovecot/src/auth/main.c:242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 245
    functionName: main_init
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 12
    functionsReached:
    - auths_init
    - auth_refresh_proctitle
    - master_service_set_client_limit
    - child_wait_init
    - auth_sasl_init
    - auth_worker_refresh_proctitle
    - passdb_cache_init
    - password_schemes_allow_weak
    - i_warning
    - master_service_set_restart_request_count
    - auth_worker_set_max_restart_request_count
    - auth_worker_connection_init
    - lib_signals_ignore
    - auth_request_handler_init
    - auth_policy_init
    - master_service_get_restart_request_count
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_penalty_deinit
      Src: /src/dovecot/src/auth/main.c:254,1
    - Dst: auth_worker_connection_deinit
      Src: /src/dovecot/src/auth/main.c:257,1
    - Dst: auths_deinit
      Src: /src/dovecot/src/auth/main.c:259,1
    - Dst: auth_request_handler_deinit
      Src: /src/dovecot/src/auth/main.c:261,1
    - Dst: dict_drivers_unregister_builtin
      Src: /src/dovecot/src/auth/main.c:262,1
    - Dst: auth_token_deinit
      Src: /src/dovecot/src/auth/main.c:264,1
    - Dst: auth_client_connections_destroy_all
      Src: /src/dovecot/src/auth/main.c:266,1
    - Dst: auth_master_connections_destroy_all
      Src: /src/dovecot/src/auth/main.c:267,1
    - Dst: auth_worker_connections_destroy_all
      Src: /src/dovecot/src/auth/main.c:268,1
    - Dst: auth_policy_deinit
      Src: /src/dovecot/src/auth/main.c:270,1
    - Dst: db_oauth2_deinit
      Src: /src/dovecot/src/auth/main.c:271,1
    - Dst: auths_free
      Src: /src/dovecot/src/auth/main.c:274,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/auth/main.c:278,1
    - Dst: auth_sasl_deinit
      Src: /src/dovecot/src/auth/main.c:280,1
    - Dst: userdbs_deinit
      Src: /src/dovecot/src/auth/main.c:282,1
    - Dst: passdbs_deinit
      Src: /src/dovecot/src/auth/main.c:283,1
    - Dst: passdb_cache_deinit
      Src: /src/dovecot/src/auth/main.c:284,1
    - Dst: password_schemes_deinit
      Src: /src/dovecot/src/auth/main.c:285,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/main.c:287,1
    - Dst: sql_drivers_deinit
      Src: /src/dovecot/src/auth/main.c:289,1
    - Dst: child_wait_deinit
      Src: /src/dovecot/src/auth/main.c:290,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/auth/main.c:292,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/main.c:293,1
    - Dst: array_free
      Src: /src/dovecot/src/auth/main.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 295
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 17
    functionsReached:
    - auth_worker_connection_deinit
    - auth_sasl_deinit
    - auth_request_handler_deinit
    - array_foreach_modifiable
    - userdbs_deinit
    - auth_token_deinit
    - child_wait_deinit
    - auth_master_connections_destroy_all
    - db_oauth2_deinit
    - passdb_cache_deinit
    - passdbs_deinit
    - dict_drivers_unregister_builtin
    - array_free
    - auth_client_connections_destroy_all
    - auth_policy_deinit
    - auths_deinit
    - auth_worker_connections_destroy_all
    - module_dir_unload
    - i_free
    - sql_drivers_deinit
    - settings_free
    - auth_penalty_deinit
    - auths_free
    - password_schemes_deinit
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_has_connections
      Src: /src/dovecot/src/auth/main.c:299,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/main.c:300,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/auth/main.c:305,1
    - Dst: auth_worker_server_create
      Src: /src/dovecot/src/auth/main.c:306,1
    - Dst: auth_default_protocol
      Src: /src/dovecot/src/auth/main.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 307
    functionName: worker_connected
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 0
    functionsReached:
    - auth_worker_has_connections
    - auth_default_protocol
    - e_error
    - auth_worker_server_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void worker_connected(struct master_service_connection *conn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/auth/main.c:315,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/main.c:317,1
    - Dst: master_service_connection_get_type
      Src: /src/dovecot/src/auth/main.c:319,1
    - Dst: auth_default_protocol
      Src: /src/dovecot/src/auth/main.c:320,1
    - Dst: auth_socket_type_get
      Src: /src/dovecot/src/auth/main.c:321,1
    - Dst: auth_master_connection_create
      Src: /src/dovecot/src/auth/main.c:323,1
    - Dst: auth_master_connection_create
      Src: /src/dovecot/src/auth/main.c:327,1
    - Dst: auth_client_connection_create
      Src: /src/dovecot/src/auth/main.c:331,1
    - Dst: auth_client_connection_create
      Src: /src/dovecot/src/auth/main.c:335,1
    - Dst: auth_client_connection_create
      Src: /src/dovecot/src/auth/main.c:338,1
    - Dst: auth_client_connection_create
      Src: /src/dovecot/src/auth/main.c:342,1
    - Dst: auth_client_connection_create
      Src: /src/dovecot/src/auth/main.c:347,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/main.c:351,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/auth/main.c:353,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 354
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 0
    functionsReached:
    - auth_client_connection_create
    - array_idx_modifiable
    - i_unreached
    - auth_default_protocol
    - auth_master_connection_create
    - auth_socket_type_get
    - i_strdup
    - master_service_connection_get_type
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_server_send_shutdown
      Src: /src/dovecot/src/auth/main.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: auth_die
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 0
    functionsReached:
    - auth_worker_server_send_shutdown
    linkageType: ''
    returnType: void
    signature: void auth_die(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/auth/main.c:372,1
    - Dst: master_getopt
      Src: /src/dovecot/src/auth/main.c:374,1
    - Dst: master_service_init_log_with_pid
      Src: /src/dovecot/src/auth/main.c:377,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/auth/main.c:384,1
    - Dst: main_preinit
      Src: /src/dovecot/src/auth/main.c:386,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/auth/main.c:387,1
    - Dst: main_init
      Src: /src/dovecot/src/auth/main.c:388,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/auth/main.c:389,1
    - Dst: master_service_run
      Src: /src/dovecot/src/auth/main.c:390,1
    - Dst: main_deinit
      Src: /src/dovecot/src/auth/main.c:392,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/auth/main.c:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 366
    functionDepth: 5
    functionLinenumber: 366
    functionLinenumberEnd: 395
    functionName: main
    functionSourceFile: /src/dovecot/src/auth/main.c
    functionUses: 9
    functionsReached:
    - master_service_set_die_callback
    - main_init
    - master_service_run
    - master_service_init_log_with_pid
    - main_deinit
    - master_service_init_finish
    - main_preinit
    - master_getopt
    - master_service_init
    - master_service_deinit
    - master_service_init_log
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_server_connected
      Src: /src/dovecot/src/auth/test-auth-master.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server_fd
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 17
    functionName: auth_master_connected
    functionSourceFile: /src/dovecot/src/auth/test-auth-master.c
    functionUses: 0
    functionsReached:
    - auth_master_server_connected
    linkageType: ''
    returnType: void
    signature: void auth_master_connected(int *server_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/auth/test-auth-master.c:23,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-master.c:24,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/auth/test-auth-master.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - result
    - fields
    argTypes:
    - void*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 26
    functionName: test_client_passdb_lookup_callback
    functionSourceFile: /src/dovecot/src/auth/test-auth-master.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert_cmp
    - test_assert_strcmp
    linkageType: ''
    returnType: void
    signature: "void test_client_passdb_lookup_callback(void *context ATTR_UNUSED,\n\t\t\t\t
      \  int result, const char *const *fields)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/auth/test-auth-master.c:33,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-master.c:34,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/auth/test-auth-master.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - result
    - username
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: test_client_userdb_lookup_callback
    functionSourceFile: /src/dovecot/src/auth/test-auth-master.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert_cmp
    - test_assert_strcmp
    linkageType: ''
    returnType: void
    signature: "void test_client_userdb_lookup_callback(void *context ATTR_UNUSED,\n\t\t\t\t
      \  int result, const char *username,\n\t\t\t\t   const char *const *fields ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-master.c:40,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/auth/test-auth-master.c:41,1
    - Dst: test_auth_init
      Src: /src/dovecot/src/auth/test-auth-master.c:42,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/auth/test-auth-master.c:44,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/auth/test-auth-master.c:45,1
    - Dst: io_add
      Src: /src/dovecot/src/auth/test-auth-master.c:46,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/auth/test-auth-master.c:49,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/test-auth-master.c:52,1
    - Dst: auth_master_pass_lookup_async
      Src: /src/dovecot/src/auth/test-auth-master.c:58,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/auth/test-auth-master.c:61,1
    - Dst: auth_master_user_lookup_async
      Src: /src/dovecot/src/auth/test-auth-master.c:62,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/auth/test-auth-master.c:65,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/test-auth-master.c:67,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/auth/test-auth-master.c:68,1
    - Dst: io_remove
      Src: /src/dovecot/src/auth/test-auth-master.c:69,1
    - Dst: auth_master_server_deinit
      Src: /src/dovecot/src/auth/test-auth-master.c:70,1
    - Dst: test_auth_deinit
      Src: /src/dovecot/src/auth/test-auth-master.c:71,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/auth/test-auth-master.c:72,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/auth/test-auth-master.c:73,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-master.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 38
    functionDepth: 9
    functionLinenumber: 38
    functionLinenumberEnd: 75
    functionName: test_auth_master
    functionSourceFile: /src/dovecot/src/auth/test-auth-master.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - auth_master_pass_lookup_async
    - net_listen_unix
    - auth_master_init
    - io_add
    - auth_master_deinit
    - io_remove
    - io_loop_destroy
    - io_loop_create
    - pool_unref
    - auth_master_user_lookup_async
    - test_auth_init
    - test_auth_deinit
    - test_end
    - i_unlink_if_exists
    - auth_master_server_deinit
    - io_loop_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_master(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/auth/test-auth-master.c:90,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/auth/test-auth-master.c:93,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/auth/test-auth-master.c:95,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/auth/test-auth-master.c:96,1
    - Dst: test_run
      Src: /src/dovecot/src/auth/test-auth-master.c:97,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/auth/test-auth-master.c:98,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/auth/test-auth-master.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 77
    functionDepth: 7
    functionLinenumber: 77
    functionLinenumberEnd: 102
    functionName: main
    functionSourceFile: /src/dovecot/src/auth/test-auth-master.c
    functionUses: 9
    functionsReached:
    - io_loop_set_current
    - test_run
    - io_loop_destroy
    - io_loop_create
    - master_service_init_finish
    - master_service_init
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TEST_NAMED
      Src: /src/dovecot/src/auth/test-main.c:22,1
    - Dst: TEST_NAMED
      Src: /src/dovecot/src/auth/test-main.c:23,1
    - Dst: TEST_NAMED
      Src: /src/dovecot/src/auth/test-main.c:24,1
    - Dst: TEST_NAMED
      Src: /src/dovecot/src/auth/test-main.c:26,1
    - Dst: master_service_init
      Src: /src/dovecot/src/auth/test-main.c:31,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/auth/test-main.c:33,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/test-main.c:35,1
    - Dst: password_schemes_init
      Src: /src/dovecot/src/auth/test-main.c:36,1
    - Dst: passdbs_init
      Src: /src/dovecot/src/auth/test-main.c:37,1
    - Dst: passdb_mock_mod_init
      Src: /src/dovecot/src/auth/test-main.c:38,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/test-main.c:40,1
    - Dst: test_run_named
      Src: /src/dovecot/src/auth/test-main.c:43,1
    - Dst: passdb_mock_mod_deinit
      Src: /src/dovecot/src/auth/test-main.c:45,1
    - Dst: password_schemes_deinit
      Src: /src/dovecot/src/auth/test-main.c:46,1
    - Dst: passdbs_deinit
      Src: /src/dovecot/src/auth/test-main.c:47,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/test-main.c:48,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/auth/test-main.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 12
    functionDepth: 7
    functionLinenumber: 12
    functionLinenumberEnd: 53
    functionName: main
    functionSourceFile: /src/dovecot/src/auth/test-main.c
    functionUses: 9
    functionsReached:
    - event_create
    - password_schemes_init
    - TEST_NAMED
    - event_unref
    - passdb_mock_mod_deinit
    - strcasecmp
    - test_run_named
    - master_service_init_finish
    - passdb_mock_mod_init
    - passdbs_init
    - password_schemes_deinit
    - master_service_init
    - master_service_deinit
    - passdbs_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_call_password_verify
      Src: /src/dovecot/src/auth/passdb-lua.c:18,1
    - Dst: auth_request_db_log_password_mismatch
      Src: /src/dovecot/src/auth/passdb-lua.c:21,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-lua.c:23,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-lua.c:23,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - module
    - request
    - password
    argTypes:
    - struct dlua_passdb_module*
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 12
    functionDepth: 5
    functionLinenumber: 12
    functionLinenumberEnd: 27
    functionName: passdb_lua_verify_password
    functionSourceFile: /src/dovecot/src/auth/passdb-lua.c
    functionUses: 0
    functionsReached:
    - e_error
    - authdb_event
    - auth_lua_call_password_verify
    - auth_request_db_log_password_mismatch
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result passdb_lua_verify_password(struct dlua_passdb_module
      *module,\n\t\t\t   struct auth_request *request, const char *password)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auth_lua_call_passdb_lookup
      Src: /src/dovecot/src/auth/passdb-lua.c:40,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-lua.c:44,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-lua.c:44,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/passdb-lua.c:47,1
    - Dst: auth_request_password_missing
      Src: /src/dovecot/src/auth/passdb-lua.c:49,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-lua.c:53,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb-lua.c:57,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-lua.c:57,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - request
    - scheme_r
    - password_r
    argTypes:
    - struct auth_request*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 29
    functionDepth: 5
    functionLinenumber: 29
    functionLinenumberEnd: 62
    functionName: passdb_lua_lookup
    functionSourceFile: /src/dovecot/src/auth/passdb-lua.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_lua_call_passdb_lookup
    - e_info
    - auth_request_set_field
    - e_error
    - auth_fields_exists
    - auth_request_password_missing
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result passdb_lua_lookup(struct auth_request *request,\n\t\t
      \ const char **scheme_r, const char **password_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-lua.c:70,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-lua.c:71,1
    - Dst: passdb_lua_lookup
      Src: /src/dovecot/src/auth/passdb-lua.c:75,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/passdb-lua.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 64
    functionDepth: 6
    functionLinenumber: 64
    functionLinenumberEnd: 78
    functionName: passdb_lua_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-lua.c
    functionUses: 0
    functionsReached:
    - passdb_handle_credentials
    - auth_request_set_passdb_fields
    - passdb_lua_lookup
    - callback
    linkageType: ''
    returnType: void
    signature: "void passdb_lua_lookup_credentials(struct auth_request *request,\n\t\t\t
      \     lookup_credentials_callback_t *callback)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-lua.c:89,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-lua.c:90,1
    - Dst: passdb_lua_verify_password
      Src: /src/dovecot/src/auth/passdb-lua.c:94,1
    - Dst: passdb_lua_lookup
      Src: /src/dovecot/src/auth/passdb-lua.c:96,1
    - Dst: auth_request_db_password_verify
      Src: /src/dovecot/src/auth/passdb-lua.c:100,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-lua.c:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 80
    functionDepth: 6
    functionLinenumber: 80
    functionLinenumberEnd: 105
    functionName: passdb_lua_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-lua.c
    functionUses: 0
    functionsReached:
    - passdb_lua_lookup
    - auth_request_db_password_verify
    - passdb_lua_verify_password
    - auth_request_set_passdb_fields
    - callback
    linkageType: ''
    returnType: void
    signature: "void passdb_lua_verify_plain(struct auth_request *request, const char
      *password,\n\t\t\tverify_plain_callback_t *callback)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-lua.c:113,1
    - Dst: dlua_script_create_auto
      Src: /src/dovecot/src/auth/passdb-lua.c:115,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/passdb-lua.c:116,1
    - Dst: auth_lua_script_init
      Src: /src/dovecot/src/auth/passdb-lua.c:124,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/passdb-lua.c:125,1
    - Dst: auth_lua_script_get_default_cache_key
      Src: /src/dovecot/src/auth/passdb-lua.c:126,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/passdb-lua.c:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - pool
    - event
    - passdb_params ATTR_UNUSED
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct passdb_parameters*
    - struct passdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 107
    functionDepth: 5
    functionLinenumber: 107
    functionLinenumberEnd: 132
    functionName: passdb_lua_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb-lua.c
    functionUses: 0
    functionsReached:
    - auth_lua_script_get_default_cache_key
    - p_new
    - auth_lua_script_init
    - i_fatal
    - dlua_script_create_auto
    linkageType: ''
    returnType: int
    signature: "int passdb_lua_preinit(pool_t pool, struct event *event,\n\t\t   const
      struct passdb_parameters *passdb_params ATTR_UNUSED,\n\t\t   struct passdb_module
      **module_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_has_function
      Src: /src/dovecot/src/auth/passdb-lua.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 141
    functionName: passdb_lua_init
    functionSourceFile: /src/dovecot/src/auth/passdb-lua.c
    functionUses: 0
    functionsReached:
    - dlua_script_has_function
    linkageType: ''
    returnType: void
    signature: void passdb_lua_init(struct passdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_script_unref
      Src: /src/dovecot/src/auth/passdb-lua.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 143
    functionDepth: 6
    functionLinenumber: 143
    functionLinenumberEnd: 148
    functionName: passdb_lua_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb-lua.c
    functionUses: 0
    functionsReached:
    - dlua_script_unref
    linkageType: ''
    returnType: void
    signature: void passdb_lua_deinit(struct passdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: auth_module_load
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_module_load(const char *name ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: auth_refresh_proctitle
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: passdb_mock_init
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void passdb_mock_init(struct passdb_module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: passdb_mock_deinit
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void passdb_mock_deinit(struct passdb_module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/auth/test-mock.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - request
    - ATTR_UNUSED
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 29
    functionName: passdb_mock_verify_plain
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 0
    functionsReached:
    - callback
    linkageType: ''
    returnType: void
    signature: "void passdb_mock_verify_plain(struct auth_request *request, const
      char *password ATTR_UNUSED,\n\t\t\t\t     verify_plain_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/test-mock.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 36
    functionName: passdb_mock_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 0
    functionsReached:
    - passdb_handle_credentials
    linkageType: ''
    returnType: void
    signature: "void passdb_mock_lookup_credentials(struct auth_request *request,\n\t\t\t\t\t
      \  lookup_credentials_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/auth/test-mock.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - request
    - new_credentials ATTR_UNUSED
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - set_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: passdb_mock_set_credentials
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 0
    functionsReached:
    - callback
    linkageType: ''
    returnType: void
    signature: "void passdb_mock_set_credentials(struct auth_request *request,\n\t\t\t
      \   const char *new_credentials ATTR_UNUSED,\n\t\t\t    set_credentials_callback_t
      *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/auth/test-mock.c:60,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/test-mock.c:62,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/test-mock.c:78,1
    - Dst: passdb_preinit
      Src: /src/dovecot/src/auth/test-mock.c:79,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/test-mock.c:80,1
    - Dst: passdb_init
      Src: /src/dovecot/src/auth/test-mock.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 82
    functionName: passdb_mock_mod_init
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 2
    functionsReached:
    - passdb_register_module
    - event_create
    - event_unref
    - pool_allocfree_create
    - passdb_preinit
    - passdb_init
    linkageType: ''
    returnType: void
    signature: void passdb_mock_mod_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_deinit
      Src: /src/dovecot/src/auth/test-mock.c:86,1
    - Dst: passdb_unregister_module
      Src: /src/dovecot/src/auth/test-mock.c:87,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/test-mock.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: passdb_mock_mod_deinit
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 2
    functionsReached:
    - pool_unref
    - passdb_unregister_module
    - passdb_deinit
    linkageType: ''
    returnType: void
    signature: void passdb_mock_mod_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/auth/test-mock.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: passdb_mock
    functionSourceFile: /src/dovecot/src/auth/test-mock.c
    functionUses: 1
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct auth_passdb
    signature: struct auth_passdb *passdb_mock(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/auth/auth-request-handler.c:57,1
    - Dst: auth_request_handler_get_request_count
      Src: /src/dovecot/src/auth/auth-request-handler.c:72,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/auth/auth-request-handler.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 75
    functionName: p_new
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 422
    functionsReached:
    - hash_table_count
    - auth_request_handler_get_request_count
    - hash_table_create_direct
    linkageType: ''
    returnType: void
    signature: "void p_new(pool, struct auth_request_handler, 1);\n\thandler->refcount
      = 1;\n\thandler->pool = pool;\n\thash_table_create_direct(&handler->requests,
      pool, 0);\n\thandler->callback = callback;\n\thandler->conn = conn;\n\thandler->master_callback
      = master_callback;\n\thandler->token_auth = token_auth;\n\thandler->reply_callback
      =\n\t\tauth_request_handler_default_reply_callback;\n\thandler->reply_continue_callback
      =\n\t\tauth_request_handler_default_reply_continue;\n\thandler->verify_plain_continue_callback
      =\n\t\tauth_request_default_verify_plain_continue;\n\treturn handler;\n}\n\nunsigned
      int\nauth_request_handler_get_request_count(struct auth_request_handler *handler)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/auth/auth-request-handler.c:83,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/auth/auth-request-handler.c:84,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:90,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:91,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request-handler.c:98,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/auth/auth-request-handler.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - handler
    argTypes:
    - struct auth_request_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 102
    functionName: auth_request_handler_abort_requests
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - i_unreached
    - hash_table_iterate_init
    - hash_table_remove
    - auth_request_unref
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_abort_requests(struct auth_request_handler
      *handler)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:112,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:116,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/auth/auth-request-handler.c:116,1
    - Dst: struct auth_request_handler*::callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:119,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/auth/auth-request-handler.c:121,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _handler
    argTypes:
    - struct auth_request_handler**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 123
    functionName: auth_request_handler_unref
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - struct auth_request_handler*::callback
    - hash_table_count
    - i_assert
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_unref(struct auth_request_handler **_handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:131,1
    - Dst: auth_request_handler_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _handler
    argTypes:
    - struct auth_request_handler**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: auth_request_handler_destroy
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - i_assert
    - auth_request_handler_unref
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_destroy(struct auth_request_handler **_handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - handler
    - connect_uid
    - client_pid
    argTypes:
    - struct auth_request_handler*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 143
    functionName: auth_request_handler_set
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_set(struct auth_request_handler *handler,\n\t\t\t
      \     unsigned int connect_uid,\n\t\t\t      unsigned int client_pid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:148,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:158,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:160,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/auth/auth-request-handler.c:160,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - handler
    - request
    argTypes:
    - struct auth_request_handler*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 162
    functionName: auth_request_handler_remove
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - hash_table_remove
    - auth_request_unref
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_remove(struct auth_request_handler *handler,\n\t\t\t\t\tstruct
      auth_request *request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:167,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:168,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:169,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-handler.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - dest
    - key
    - value
    argTypes:
    - string_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 171
    functionName: auth_str_add_keyvalue
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 1
    functionsReached:
    - str_append
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void auth_str_add_keyvalue(string_t *dest, const char *key, const char
      *value)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:178,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/auth-request-handler.c:182,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request-handler.c:183,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:184,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request-handler.c:188,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:189,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/auth-request-handler.c:191,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:195,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request-handler.c:198,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request-handler.c:200,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:204,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request-handler.c:208,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:211,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 18
    argCount: 2
    argNames:
    - request
    - dest
    argTypes:
    - struct auth_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 215
    functionName: auth_str_append_extra_fields
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_fields_append
    - auth_str_add_keyvalue
    - auth_fields_exists
    - null_strcmp
    - str_append
    linkageType: ''
    returnType: void
    signature: void auth_str_append_extra_fields(struct auth_request *request, string_t
      *dest)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request-handler.c:221,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request-handler.c:226,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request-handler.c:232,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request-handler.c:237,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 241
    functionName: auth_request_want_failure_delay
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: bool
    signature: bool auth_request_want_failure_delay(struct auth_request *request)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_log_finished
      Src: /src/dovecot/src/auth/auth-request-handler.c:249,1
    - Dst: struct auth_request_handler*::callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:253,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-request-handler.c:258,1
    - Dst: auth_request_handler_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:259,1
    - Dst: auth_policy_report
      Src: /src/dovecot/src/auth/auth-request-handler.c:262,1
    - Dst: auth_request_want_failure_delay
      Src: /src/dovecot/src/auth/auth-request-handler.c:264,1
    - Dst: struct auth_request_handler*::callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:265,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:266,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request-handler.c:269,1
    - Dst: auth_penalty_update
      Src: /src/dovecot/src/auth/auth-request-handler.c:277,1
    - Dst: auth_request_refresh_last_access
      Src: /src/dovecot/src/auth/auth-request-handler.c:281,1
    - Dst: aqueue_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:282,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/auth/auth-request-handler.c:285,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - request
    - reply
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 288
    functionName: auth_request_handle_failure
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_request_ref
    - auth_request_log_finished
    - auth_request_want_failure_delay
    - e_debug
    - auth_penalty_update
    - aqueue_append
    - timeout_add_short
    - auth_request_unref
    - struct auth_request_handler*::callback
    - auth_request_refresh_last_access
    - auth_request_handler_remove
    - auth_policy_report
    linkageType: ''
    returnType: void
    signature: void auth_request_handle_failure(struct auth_request *request, const
      char *reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-handler.c:298,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/auth/auth-request-handler.c:298,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-handler.c:299,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:302,1
    - Dst: base64_encode
      Src: /src/dovecot/src/auth/auth-request-handler.c:305,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:310,1
    - Dst: struct auth_request_handler*::callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:315,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - request
    - auth_reply
    - reply_size
    argTypes:
    - struct auth_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 316
    functionName: auth_request_handler_reply_continue_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - auth_str_add_keyvalue
    - base64_encode
    - struct auth_request_handler*::callback
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_reply_continue_finish(struct auth_request
      *request,\n\t\t\t\t\t   const void *auth_reply,\n\t\t\t\t\t   size_t reply_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-handler.c:322,1
    - Dst: auth_request_log_finished
      Src: /src/dovecot/src/auth/auth-request-handler.c:324,1
    - Dst: auth_penalty_update
      Src: /src/dovecot/src/auth/auth-request-handler.c:328,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-handler.c:331,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-handler.c:332,1
    - Dst: auth_str_append_extra_fields
      Src: /src/dovecot/src/auth/auth-request-handler.c:333,1
    - Dst: auth_policy_report
      Src: /src/dovecot/src/auth/auth-request-handler.c:336,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request-handler.c:339,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request-handler.c:340,1
    - Dst: auth_request_handler_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:343,1
    - Dst: struct auth_request_handler*::callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:346,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:346,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 318
    functionDepth: 5
    functionLinenumber: 318
    functionLinenumberEnd: 347
    functionName: auth_request_handler_reply_success_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - auth_request_log_finished
    - auth_policy_report
    - auth_penalty_update
    - str_append_tabescaped
    - auth_fields_exists
    - struct auth_request_handler*::callback
    - auth_request_handler_remove
    - auth_str_append_extra_fields
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_reply_success_finish(struct auth_request
      *request)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-handler.c:353,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:355,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-handler.c:357,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:359,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:361,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:390,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:391,1
    - Dst: auth_str_append_extra_fields
      Src: /src/dovecot/src/auth/auth-request-handler.c:393,1
    - Dst: auth_request_handle_failure
      Src: /src/dovecot/src/auth/auth-request-handler.c:395,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:395,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 349
    functionDepth: 5
    functionLinenumber: 349
    functionLinenumberEnd: 396
    functionName: auth_request_handler_reply_failure_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - auth_str_add_keyvalue
    - auth_str_append_extra_fields
    - auth_request_handle_failure
    - str_append
    - auth_fields_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_reply_failure_finish(struct auth_request
      *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_handler_reply_success_finish
      Src: /src/dovecot/src/auth/auth-request-handler.c:404,1
    - Dst: auth_request_handler_reply_failure_finish
      Src: /src/dovecot/src/auth/auth-request-handler.c:406,1
    - Dst: auth_request_handler_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - success
    - request
    argTypes:
    - bool
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 398
    functionDepth: 6
    functionLinenumber: 398
    functionLinenumberEnd: 408
    functionName: auth_request_handler_proxy_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_request_handler_unref
    - auth_request_handler_reply_failure_finish
    - auth_request_handler_reply_success_finish
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_proxy_callback(bool success, struct auth_request
      *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct auth_request_handler*::reply_callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - request
    - result
    - auth_reply
    - reply_size
    argTypes:
    - struct auth_request*
    - enum auth_client_result
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 418
    functionName: auth_request_handler_reply
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - struct auth_request_handler*::reply_callback
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_reply(struct auth_request *request,\n\t\t\t\tenum
      auth_client_result result,\n\t\t\t\tconst void *auth_reply, size_t reply_size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request-handler.c:437,1
    - Dst: auth_request_handler_reply_continue_finish
      Src: /src/dovecot/src/auth/auth-request-handler.c:442,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-handler.c:447,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/auth/auth-request-handler.c:447,1
    - Dst: base64_encode
      Src: /src/dovecot/src/auth/auth-request-handler.c:448,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request-handler.c:449,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:450,1
    - Dst: auth_request_proxy_finish
      Src: /src/dovecot/src/auth/auth-request-handler.c:452,1
    - Dst: auth_request_handler_reply_failure_finish
      Src: /src/dovecot/src/auth/auth-request-handler.c:455,1
    - Dst: auth_request_handler_reply_success_finish
      Src: /src/dovecot/src/auth/auth-request-handler.c:457,1
    - Dst: auth_request_proxy_finish_failure
      Src: /src/dovecot/src/auth/auth-request-handler.c:462,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-handler.c:464,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/auth/auth-request-handler.c:464,1
    - Dst: base64_encode
      Src: /src/dovecot/src/auth/auth-request-handler.c:465,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request-handler.c:466,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:467,1
    - Dst: auth_request_handler_reply_failure_finish
      Src: /src/dovecot/src/auth/auth-request-handler.c:469,1
    - Dst: auth_request_handler_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:474,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 4
    argNames:
    - request
    - result
    - auth_reply
    - reply_size
    argTypes:
    - struct auth_request*
    - enum auth_client_result
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 420
    functionDepth: 6
    functionLinenumber: 420
    functionLinenumberEnd: 475
    functionName: auth_request_handler_default_reply_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_request_proxy_finish_failure
    - str_c
    - t_str_new
    - auth_request_handler_reply_success_finish
    - auth_fields_add
    - auth_request_proxy_finish
    - auth_request_handler_reply_failure_finish
    - auth_request_set_state
    - base64_encode
    - auth_request_handler_unref
    - auth_request_handler_reply_continue_finish
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_default_reply_callback(struct auth_request
      *request,\n\t\t\t\t\t    enum auth_client_result result,\n\t\t\t\t\t    const
      void *auth_reply,\n\t\t\t\t\t    size_t reply_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct auth_request*::handler::reply_continue_callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - request
    - reply
    - reply_size
    argTypes:
    - struct auth_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 481
    functionName: auth_request_handler_reply_continue
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - struct auth_request*::handler::reply_continue_callback
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_reply_continue(struct auth_request *request,\n\t\t\t\t\t
      const void *reply, size_t reply_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_handler_reply
      Src: /src/dovecot/src/auth/auth-request-handler.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - request
    - reply
    - reply_size
    argTypes:
    - struct auth_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 490
    functionName: auth_request_handler_default_reply_continue
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_request_handler_reply
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_default_reply_continue(struct auth_request
      *request,\n\t\t\t\t\t    const void *reply,\n\t\t\t\t\t    size_t reply_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:494,1
    - Dst: auth_request_handler_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 492
    functionDepth: 2
    functionLinenumber: 492
    functionLinenumberEnd: 499
    functionName: auth_request_handler_abort
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - i_assert
    - auth_request_handler_unref
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_abort(struct auth_request *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-handler.c:506,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request-handler.c:508,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-handler.c:510,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:512,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:513,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:515,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-handler.c:516,1
    - Dst: struct auth_request_handler*::callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:518,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:518,1
    - Dst: auth_request_handler_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - handler
    - request
    - fail_code
    - reason
    argTypes:
    - struct auth_request_handler*
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 520
    functionName: auth_request_handler_auth_fail_code
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - e_info
    - str_printfa
    - auth_request_handler_remove
    - str_append_tabescaped
    - struct auth_request_handler*::callback
    - str_append
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_auth_fail_code(struct auth_request_handler
      *handler,\n\t\t\t\t\t   struct auth_request *request,\n\t\t\t\t\t   const char
      *fail_code, const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_handler_auth_fail_code
      Src: /src/dovecot/src/auth/auth-request-handler.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - handler
    - request
    - reason
    argTypes:
    - struct auth_request_handler*
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 522
    functionDepth: 3
    functionLinenumber: 522
    functionLinenumberEnd: 527
    functionName: auth_request_handler_auth_fail
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_request_handler_auth_fail_code
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_auth_fail\n(struct auth_request_handler
      *handler, struct auth_request *request,\n\t\t\t\t\t   const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/auth/auth-request-handler.c:531,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:535,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request-handler.c:540,1
    - Dst: auth_request_handler_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 529
    functionDepth: 2
    functionLinenumber: 529
    functionLinenumberEnd: 545
    functionName: auth_request_timeout
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - e_error
    - auth_request_handler_remove
    - e_info
    - time
    linkageType: ''
    returnType: void
    signature: void auth_request_timeout(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:549,1
    - Dst: auth_request_initial
      Src: /src/dovecot/src/auth/auth-request-handler.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 551
    functionName: auth_request_penalty_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_request_initial
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_penalty_finish(struct auth_request *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_initial
      Src: /src/dovecot/src/auth/auth-request-handler.c:561,1
    - Dst: auth_penalty_to_secs
      Src: /src/dovecot/src/auth/auth-request-handler.c:563,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-request-handler.c:564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - penalty
    - request
    argTypes:
    - unsigned int
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 568
    functionName: auth_penalty_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_penalty_to_secs
    - timeout_add
    - auth_request_initial
    linkageType: ''
    returnType: void
    signature: void auth_penalty_callback(unsigned int penalty, struct auth_request
      *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_auth
      Src: /src/dovecot/src/auth/auth-request-handler.c:576,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-handler.c:581,1
    - Dst: sasl_server_mech_get_name
      Src: /src/dovecot/src/auth/auth-request-handler.c:581,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:586,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/auth/auth-request-handler.c:590,1
    - Dst: sasl_server_mech_find
      Src: /src/dovecot/src/auth/auth-request-handler.c:594,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:597,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/auth/auth-request-handler.c:600,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - handler
    - request
    - mech_name
    - mech_r
    argTypes:
    - struct auth_request_handler*
    - struct auth_request*
    - char*
    - struct sasl_server_mech**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 570
    functionDepth: 3
    functionLinenumber: 570
    functionLinenumberEnd: 605
    functionName: auth_request_handler_find_mech
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - strcmp
    - sasl_server_mech_get_name
    - e_error
    - str_sanitize
    - sasl_server_mech_find
    - auth_request_get_auth
    linkageType: ''
    returnType: int
    signature: "int auth_request_handler_find_mech(struct auth_request_handler *handler,\n\t\t\t
      \      struct auth_request *request,\n\t\t\t       const char *mech_name,\n\t\t\t
      \      const struct sasl_server_mech **mech_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:616,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-request-handler.c:620,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:621,1
    - Dst: auth_request_new
      Src: /src/dovecot/src/auth/auth-request-handler.c:628,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request-handler.c:638,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-request-handler.c:643,1
    - Dst: auth_request_import_auth
      Src: /src/dovecot/src/auth/auth-request-handler.c:647,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-handler.c:649,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:658,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:662,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:667,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:671,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/auth-request-handler.c:674,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/auth/auth-request-handler.c:674,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:675,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:678,1
    - Dst: auth_request_handler_find_mech
      Src: /src/dovecot/src/auth/auth-request-handler.c:684,1
    - Dst: auth_request_init_sasl
      Src: /src/dovecot/src/auth/auth-request-handler.c:687,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-request-handler.c:689,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/auth/auth-request-handler.c:691,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/auth/auth-request-handler.c:691,1
    - Dst: auth_request_handler_auth_fail
      Src: /src/dovecot/src/auth/auth-request-handler.c:708,1
    - Dst: auth_request_handler_auth_fail
      Src: /src/dovecot/src/auth/auth-request-handler.c:716,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-handler.c:733,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-request-handler.c:744,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/auth/auth-request-handler.c:747,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/auth/auth-request-handler.c:747,1
    - Dst: base64_decode
      Src: /src/dovecot/src/auth/auth-request-handler.c:748,1
    - Dst: auth_request_handler_auth_fail_code
      Src: /src/dovecot/src/auth/auth-request-handler.c:749,1
    - Dst: p_malloc
      Src: /src/dovecot/src/auth/auth-request-handler.c:755,1
    - Dst: I_MAX
      Src: /src/dovecot/src/auth/auth-request-handler.c:755,1
    - Dst: memcpy
      Src: /src/dovecot/src/auth/auth-request-handler.c:756,1
    - Dst: auth_penalty_lookup
      Src: /src/dovecot/src/auth/auth-request-handler.c:767,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 85
    argCount: 2
    argNames:
    - handler
    - args
    argTypes:
    - struct auth_request_handler*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 607
    functionDepth: 4
    functionLinenumber: 607
    functionLinenumberEnd: 769
    functionName: auth_request_handler_auth_begin
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - strchr
    - strlen
    - auth_request_handler_find_mech
    - str_to_uint
    - memcpy
    - POINTER_CAST
    - timeout_add
    - hash_table_insert
    - auth_request_handler_auth_fail_code
    - MAX_BASE64_DECODED_SIZE
    - e_error
    - auth_request_init_sasl
    - hash_table_lookup
    - i_assert
    - strcmp
    - auth_penalty_lookup
    - base64_decode
    - auth_request_handler_auth_fail
    - t_buffer_create
    - I_MAX
    - auth_request_new
    - auth_request_unref
    - t_strdup_until
    - auth_request_import_auth
    - p_malloc
    linkageType: ''
    returnType: int
    signature: "int auth_request_handler_auth_begin(struct auth_request_handler *handler,\n\t\t\t\t
      \   const char *const *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-request-handler.c:781,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:782,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/auth-request-handler.c:787,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/auth/auth-request-handler.c:787,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-request-handler.c:789,1
    - Dst: struct auth_request_handler*::callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:791,1
    - Dst: auth_request_handler_auth_fail
      Src: /src/dovecot/src/auth/auth-request-handler.c:797,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:802,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-request-handler.c:810,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/auth/auth-request-handler.c:816,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/auth/auth-request-handler.c:816,1
    - Dst: base64_decode
      Src: /src/dovecot/src/auth/auth-request-handler.c:820,1
    - Dst: auth_request_handler_auth_fail_code
      Src: /src/dovecot/src/auth/auth-request-handler.c:821,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/auth/auth-request-handler.c:829,1
    - Dst: auth_request_import_continue
      Src: /src/dovecot/src/auth/auth-request-handler.c:830,1
    - Dst: auth_request_continue
      Src: /src/dovecot/src/auth/auth-request-handler.c:837,1
    - Dst: auth_request_continue
      Src: /src/dovecot/src/auth/auth-request-handler.c:839,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - handler
    - args
    argTypes:
    - struct auth_request_handler*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 771
    functionDepth: 4
    functionLinenumber: 771
    functionLinenumberEnd: 841
    functionName: auth_request_handler_auth_continue
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - auth_request_handler_auth_fail_code
    - MAX_BASE64_DECODED_SIZE
    - base64_decode
    - strlen
    - auth_request_handler_auth_fail
    - t_strdup_printf
    - t_buffer_create
    - e_error
    - t_split_key_value_eq
    - auth_request_import_continue
    - struct auth_request_handler*::callback
    - str_to_uint
    - hash_table_lookup
    - auth_request_continue
    linkageType: ''
    returnType: int
    signature: "int auth_request_handler_auth_continue(struct auth_request_handler
      *handler,\n\t\t\t\t       const char *const *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:846,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request-handler.c:850,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:851,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:854,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-handler.c:856,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request-handler.c:860,1
    - Dst: auth_token_get
      Src: /src/dovecot/src/auth/auth-request-handler.c:866,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request-handler.c:867,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:870,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:873,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request-handler.c:876,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:878,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:882,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 2
    argNames:
    - request
    - dest
    argTypes:
    - struct auth_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 843
    functionDepth: 4
    functionLinenumber: 843
    functionLinenumberEnd: 885
    functionName: auth_str_append_userdb_extra_fields
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dec2str
    - auth_fields_append
    - auth_str_add_keyvalue
    - auth_token_get
    - auth_fields_exists
    - str_append
    linkageType: ''
    returnType: void
    signature: "void auth_str_append_userdb_extra_fields(struct auth_request *request,\n\t\t\t\t\t\tstring_t
      *dest)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:894,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request-handler.c:896,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request-handler.c:901,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-handler.c:904,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request-handler.c:906,1
    - Dst: auth_str_add_keyvalue
      Src: /src/dovecot/src/auth/auth-request-handler.c:909,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-handler.c:913,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request-handler.c:916,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request-handler.c:917,1
    - Dst: auth_str_append_userdb_extra_fields
      Src: /src/dovecot/src/auth/auth-request-handler.c:918,1
    - Dst: struct auth_request_handler*::master_callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:921,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request-handler.c:921,1
    - Dst: auth_master_connection_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:923,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:924,1
    - Dst: auth_request_handler_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:925,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - result
    - request
    argTypes:
    - enum userdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 887
    functionDepth: 5
    functionLinenumber: 887
    functionLinenumberEnd: 926
    functionName: userdb_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - auth_fields_find
    - auth_str_add_keyvalue
    - auth_str_append_userdb_extra_fields
    - auth_request_set_state
    - struct auth_request_handler*::master_callback
    - str_append_tabescaped
    - auth_master_connection_unref
    - auth_request_unref
    - auth_request_handler_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void userdb_callback(enum userdb_result result,\n\t\t\t    struct
      auth_request *request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct auth_request_handler*::master_callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:935,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-request-handler.c:935,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - handler
    - master
    - id
    argTypes:
    - struct auth_request_handler*
    - struct auth_master_connection*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 928
    functionDepth: 1
    functionLinenumber: 928
    functionLinenumberEnd: 937
    functionName: auth_master_request_failed
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - struct auth_request_handler*::master_callback
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool auth_master_request_failed(struct auth_request_handler *handler,\n\t\t\t
      \  struct auth_master_connection *master,\n\t\t\t   unsigned int id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/auth-request-handler.c:947,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/auth/auth-request-handler.c:947,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:949,1
    - Dst: auth_master_request_failed
      Src: /src/dovecot/src/auth/auth-request-handler.c:951,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-request-handler.c:954,1
    - Dst: auth_request_handler_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:955,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request-handler.c:958,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-request-handler.c:964,1
    - Dst: auth_request_import_master
      Src: /src/dovecot/src/auth/auth-request-handler.c:968,1
    - Dst: net_getunixcred
      Src: /src/dovecot/src/auth/auth-request-handler.c:973,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:975,1
    - Dst: auth_master_request_failed
      Src: /src/dovecot/src/auth/auth-request-handler.c:981,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request-handler.c:986,1
    - Dst: struct auth_request_handler*::master_callback
      Src: /src/dovecot/src/auth/auth-request-handler.c:989,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-request-handler.c:989,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:991,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request-handler.c:996,1
    - Dst: auth_master_connection_ref
      Src: /src/dovecot/src/auth/auth-request-handler.c:1002,1
    - Dst: auth_request_lookup_user
      Src: /src/dovecot/src/auth/auth-request-handler.c:1004,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 5
    argNames:
    - handler
    - master
    - id
    - client_id
    - params
    argTypes:
    - struct auth_request_handler*
    - struct auth_master_connection*
    - unsigned int
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 939
    functionDepth: 2
    functionLinenumber: 939
    functionLinenumberEnd: 1007
    functionName: auth_request_handler_master_request
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - strchr
    - auth_master_connection_ref
    - POINTER_CAST
    - auth_request_ref
    - auth_master_request_failed
    - auth_request_import_master
    - auth_request_lookup_user
    - t_strdup_printf
    - e_error
    - struct auth_request_handler*::master_callback
    - auth_request_set_state
    - auth_request_unref
    - t_strdup_until
    - auth_request_handler_remove
    - hash_table_lookup
    - net_getunixcred
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_handler_master_request(struct auth_request_handler
      *handler,\n\t\t\t\t\t struct auth_master_connection *master,\n\t\t\t\t\t unsigned
      int id, unsigned int client_id,\n\t\t\t\t\t const char *const *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/auth-request-handler.c:1014,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/auth/auth-request-handler.c:1014,1
    - Dst: auth_request_handler_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:1016,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - handler
    - client_id
    argTypes:
    - struct auth_request_handler*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1009
    functionDepth: 2
    functionLinenumber: 1009
    functionLinenumberEnd: 1017
    functionName: auth_request_handler_cancel_request
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_request_handler_remove
    - hash_table_lookup
    - POINTER_CAST
    linkageType: ''
    returnType: void
    signature: "void auth_request_handler_cancel_request(struct auth_request_handler
      *handler,\n\t\t\t\t\t unsigned int client_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/auth-request-handler.c:1025,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:1027,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/auth/auth-request-handler.c:1031,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/auth-request-handler.c:1034,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/auth/auth-request-handler.c:1048,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/auth-request-handler.c:1049,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/auth-request-handler.c:1052,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/auth-request-handler.c:1053,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/auth-request-handler.c:1054,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/auth-request-handler.c:1059,1
    - Dst: aqueue_delete_tail
      Src: /src/dovecot/src/auth/auth-request-handler.c:1060,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:1062,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request-handler.c:1063,1
    - Dst: auth_request_handler_reply
      Src: /src/dovecot/src/auth/auth-request-handler.c:1064,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request-handler.c:1067,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - flush_all
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1019
    functionDepth: 1
    functionLinenumber: 1019
    functionLinenumberEnd: 1068
    functionName: auth_request_handler_flush_failures
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - aqueue_count
    - auth_request_unref
    - aqueue_idx
    - i_rand_minmax
    - i_assert
    - aqueue_delete_tail
    - auth_request_handler_reply
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_flush_failures(bool flush_all)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_handler_flush_failures
      Src: /src/dovecot/src/auth/auth-request-handler.c:1073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1071
    functionDepth: 2
    functionLinenumber: 1071
    functionLinenumberEnd: 1074
    functionName: auth_failure_timeout
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 0
    functionsReached:
    - auth_request_handler_flush_failures
    linkageType: ''
    returnType: void
    signature: void auth_failure_timeout(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/auth-request-handler.c:1078,1
    - Dst: aqueue_init
      Src: /src/dovecot/src/auth/auth-request-handler.c:1079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1076
    functionDepth: 1
    functionLinenumber: 1076
    functionLinenumberEnd: 1080
    functionName: auth_request_handler_init
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - aqueue_init
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_handler_flush_failures
      Src: /src/dovecot/src/auth/auth-request-handler.c:1084,1
    - Dst: array_free
      Src: /src/dovecot/src/auth/auth-request-handler.c:1085,1
    - Dst: aqueue_deinit
      Src: /src/dovecot/src/auth/auth-request-handler.c:1086,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request-handler.c:1088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1082
    functionDepth: 2
    functionLinenumber: 1082
    functionLinenumberEnd: 1089
    functionName: auth_request_handler_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-request-handler.c
    functionUses: 1
    functionsReached:
    - aqueue_deinit
    - array_free
    - auth_request_handler_flush_failures
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_handler_deinit(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:24,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:30,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:32,1
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:33,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:35,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:37,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:38,1
    - Dst: auth_request_var_expand_with_table
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:39,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:41,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:41,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:47,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:55,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:56,1
    - Dst: auth_request_set_passdb_fields_ex
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:59,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:62,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - request
    - fields
    argTypes:
    - struct auth_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 20
    functionDepth: 3
    functionLinenumber: 20
    functionLinenumberEnd: 64
    functionName: passwd_file_add_extra_fields
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd-file.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - t_str_new
    - strchr
    - auth_fields_init
    - authdb_event
    - str_c
    - auth_fields_add
    - auth_request_get_var_expand_table
    - auth_request_set_passdb_fields_ex
    - auth_request_set_field
    - auth_request_var_expand_with_table
    - pool_unref
    - e_error
    - t_strdup_until
    - str_truncate
    linkageType: ''
    returnType: int
    signature: "int passwd_file_add_extra_fields(struct auth_request *request,\n\t\t\t
      \    const char *const *fields)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:72,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:77,1
    - Dst: passwd_file_add_extra_fields
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - request
    - pu
    - crypted_pass_r
    - scheme_r
    argTypes:
    - struct auth_request*
    - struct passwd_user*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 85
    functionName: passwd_file_save_results
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - auth_request_set_field
    - passwd_file_add_extra_fields
    - password_get_scheme
    linkageType: ''
    returnType: int
    signature: "int passwd_file_save_results(struct auth_request *request,\n\t\t\t\t
      \   const struct passwd_user *pu,\n\t\t\t\t    const char **crypted_pass_r,\n\t\t\t\t
      \   const char **scheme_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: db_passwd_file_lookup
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:99,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:102,1
    - Dst: passwd_file_save_results
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:107,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:108,1
    - Dst: auth_request_db_password_verify
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:112,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 87
    functionDepth: 5
    functionLinenumber: 87
    functionLinenumberEnd: 116
    functionName: passwd_file_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - passwd_file_save_results
    - auth_request_db_password_verify
    - db_passwd_file_lookup
    - callback
    linkageType: ''
    returnType: void
    signature: "void passwd_file_verify_plain(struct auth_request *request, const
      char *password,\n\t\t\t verify_plain_callback_t *callback)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: db_passwd_file_lookup
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:129,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:132,1
    - Dst: passwd_file_save_results
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:137,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:138,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 144
    functionName: passwd_file_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - passwd_file_save_results
    - passdb_handle_credentials
    - db_passwd_file_lookup
    - callback
    linkageType: ''
    returnType: void
    signature: "void passwd_file_lookup_credentials(struct auth_request *request,\n\t\t\t
      \      lookup_credentials_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:154,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:158,1
    - Dst: db_passwd_file_init
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:159,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - pool
    - event
    - passdb_params ATTR_UNUSED
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct passdb_parameters*
    - struct passdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 165
    functionName: passwd_file_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - db_passwd_file_init
    - settings_get
    - p_new
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int passwd_file_preinit(pool_t pool, struct event *event,\n\t\t    const
      struct passdb_parameters *passdb_params ATTR_UNUSED,\n\t\t    struct passdb_module
      **module_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: db_passwd_file_parse
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 167
    functionDepth: 4
    functionLinenumber: 167
    functionLinenumberEnd: 173
    functionName: passwd_file_init
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd-file.c
    functionUses: 2
    functionsReached:
    - db_passwd_file_parse
    linkageType: ''
    returnType: void
    signature: void passwd_file_init(struct passdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: db_passwd_file_unref
      Src: /src/dovecot/src/auth/passdb-passwd-file.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 4
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: passwd_file_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb-passwd-file.c
    functionUses: 0
    functionsReached:
    - db_passwd_file_unref
    linkageType: ''
    returnType: void
    signature: void passwd_file_deinit(struct passdb_module *_module)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_auth
      Src: /src/dovecot/src/auth/userdb-prefetch.c:17,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-prefetch.c:20,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-prefetch.c:20,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-prefetch.c:23,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-prefetch.c:23,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-prefetch.c:26,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/userdb-prefetch.c:30,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-prefetch.c:30,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-prefetch.c:33,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/userdb-prefetch.c:37,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-prefetch.c:37,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-prefetch.c:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - auth_request
    - callback
    argTypes:
    - struct auth_request*
    - userdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 11
    functionDepth: 2
    functionLinenumber: 11
    functionLinenumberEnd: 39
    functionName: prefetch_lookup
    functionSourceFile: /src/dovecot/src/auth/userdb-prefetch.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_debug
    - e_error
    - callback
    - auth_request_get_auth
    linkageType: ''
    returnType: void
    signature: "void prefetch_lookup(struct auth_request *auth_request,\n\t\t\t    userdb_callback_t
      *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_init
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:37,1
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:38,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:38,1
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:39,1
    - Dst: md5_final
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:40,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - request
    - credentials
    - size
    argTypes:
    - struct apop_auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 43
    functionName: verify_credentials
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-apop.c
    functionUses: 2
    functionsReached:
    - md5_final
    - md5_update
    - strlen
    - mem_equals_timing_safe
    - md5_init
    linkageType: ''
    returnType: bool
    signature: "bool verify_credentials(struct apop_auth_request *request,\n\t\t\t
      \      const unsigned char *credentials, size_t size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:50,1
    - Dst: verify_credentials
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:54,1
    - Dst: sasl_server_request_success
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:56,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:58,1
    - Dst: sasl_server_request_internal_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:61,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:64,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - req
    - result
    argTypes:
    - struct sasl_server_mech_request*
    - struct sasl_passdb_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 67
    functionName: apop_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-apop.c
    functionUses: 0
    functionsReached:
    - container_of
    - sasl_server_request_internal_failure
    - sasl_server_request_failure
    - sasl_server_request_success
    - verify_credentials
    linkageType: ''
    returnType: void
    signature: "void apop_credentials_callback(struct sasl_server_mech_request *req,\n\t\t\t
      \ const struct sasl_passdb_result *result)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:74,1
    - Dst: sasl_server_request_get_req_ctx
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:76,1
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:78,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:87,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:88,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:98,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:107,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:108,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:114,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:115,1
    - Dst: memcpy
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:118,1
    - Dst: sscanf
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:126,1
    - Dst: getpid
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:129,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:131,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:132,1
    - Dst: sasl_server_request_set_authid
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:136,1
    - Dst: sasl_server_request_failure
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:139,1
    - Dst: sasl_server_request_lookup_credentials
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:143,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 3
    argNames:
    - req
    - data
    - data_size
    argTypes:
    - struct sasl_server_mech_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 145
    functionName: mech_apop_auth_initial
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-apop.c
    functionUses: 0
    functionsReached:
    - memcpy
    - e_info
    - container_of
    - p_strdup_until
    - getpid
    - sasl_server_request_set_authid
    - sasl_server_request_lookup_credentials
    - sscanf
    - sasl_server_request_get_req_ctx
    - sasl_server_request_failure
    linkageType: ''
    returnType: void
    signature: "void mech_apop_auth_initial(struct sasl_server_mech_request *req,\n\t\t
      \      const unsigned char *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - pool
    argTypes:
    - struct sasl_server_mech*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 155
    functionName: mech_apop_auth_new
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-apop.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct sasl_server_mech_request
    signature: 'struct sasl_server_mech_request *

      mech_apop_auth_new(const struct sasl_server_mech *mech ATTR_UNUSED, pool_t pool)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register
      Src: /src/dovecot/src/auth/auth-sasl-mech-apop.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sinst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 4
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: auth_sasl_mech_register_apop
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-apop.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_register
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mech_register_apop(struct sasl_server_instance *sinst)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/auth/auth-client-connection.c:34,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-client-connection.c:37,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-client-connection.c:37,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/auth/auth-client-connection.c:39,1
    - Dst: strstr
      Src: /src/dovecot/src/auth/auth-client-connection.c:42,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-client-connection.c:43,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-client-connection.c:45,1
    - Dst: str_append_data
      Src: /src/dovecot/src/auth/auth-client-connection.c:48,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-client-connection.c:49,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-client-connection.c:51,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-client-connection.c:55,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 56
    functionName: reply_line_hide_pass
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - str_append_c
    - t_strsplit_tabescaped
    - strlen
    - str_append_tabescaped
    - str_append
    - str_append_data
    - strstr
    linkageType: ''
    returnType: char
    signature: char *reply_line_hide_pass(const char *line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-client-connection.c:64,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/auth/auth-client-connection.c:67,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/auth-client-connection.c:67,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-client-connection.c:69,1
    - Dst: reply_line_hide_pass
      Src: /src/dovecot/src/auth/auth-client-connection.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - cmd
    argTypes:
    - struct auth_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 72
    functionName: auth_client_send
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - strlen
    - reply_line_hide_pass
    - o_stream_nsendv
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void auth_client_send(struct auth_client_connection *conn,\n\t\t\t
      \    const char *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_unref
      Src: /src/dovecot/src/auth/auth-client-connection.c:79,1
    - Dst: auth_client_send
      Src: /src/dovecot/src/auth/auth-client-connection.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - reply
    - conn
    argTypes:
    - char*
    - struct auth_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 83
    functionName: auth_callback
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - auth_client_connection_unref
    - auth_client_send
    linkageType: ''
    returnType: void
    signature: "void auth_callback(const char *reply,\n\t\t\t  struct auth_client_connection
      *conn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-client-connection.c:91,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-client-connection.c:93,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-client-connection.c:94,1
    - Dst: auth_client_connection_lookup
      Src: /src/dovecot/src/auth/auth-client-connection.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-client-connection.c:111,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/auth/auth-client-connection.c:112,1
    - Dst: auth_client_connection_unref
      Src: /src/dovecot/src/auth/auth-client-connection.c:113,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-client-connection.c:117,1
    - Dst: auth_request_handler_create
      Src: /src/dovecot/src/auth/auth-client-connection.c:125,1
    - Dst: auth_request_handler_set
      Src: /src/dovecot/src/auth/auth-client-connection.c:128,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-client-connection.c:131,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 133
    functionName: auth_client_input_cpid
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - auth_client_connection_lookup
    - e_debug
    - auth_client_connection_unref
    - auth_request_handler_set
    - e_error
    - auth_request_handler_create
    - str_to_uint
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int auth_client_input_cpid(struct auth_client_connection *conn, const
      char *const *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-client-connection.c:138,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-client-connection.c:141,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/auth/auth-client-connection.c:142,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-client-connection.c:144,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-client-connection.c:145,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-client-connection.c:148,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-client-connection.c:151,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-client-connection.c:155,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 156
    functionName: auth_line_hide_pass
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_begins_with
    - str_append_c
    - str_append_tabescaped
    - str_append
    linkageType: ''
    returnType: char
    signature: 'char *

      auth_line_hide_pass(struct auth_client_connection *conn, const char *const *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-client-connection.c:165,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/auth-client-connection.c:165,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-client-connection.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 170
    functionName: cont_line_hide_pass
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - t_strarray_join
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: 'char *

      cont_line_hide_pass(struct auth_client_connection *conn, const char *const *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-client-connection.c:177,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-client-connection.c:178,1
    - Dst: auth_request_handler_cancel_request
      Src: /src/dovecot/src/auth/auth-client-connection.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 184
    functionName: auth_client_cancel
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_to_uint
    - auth_request_handler_cancel_request
    linkageType: ''
    returnType: int
    signature: int auth_client_cancel(struct auth_client_connection *conn, const char
      *const *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mechs_get_handshake
      Src: /src/dovecot/src/auth/auth-client-connection.c:198,1
    - Dst: auth_sasl_mechs_get_handshake_cbind
      Src: /src/dovecot/src/auth/auth-client-connection.c:200,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-client-connection.c:203,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-client-connection.c:204,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/auth/auth-client-connection.c:206,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-client-connection.c:207,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/auth/auth-client-connection.c:209,1
    - Dst: str_data
      Src: /src/dovecot/src/auth/auth-client-connection.c:209,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-client-connection.c:209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 211
    functionName: auth_client_finish_handshake
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - auth_sasl_mechs_get_handshake
    - o_stream_nsend
    - str_append
    - auth_sasl_mechs_get_handshake_cbind
    - binary_to_hex_append
    linkageType: ''
    returnType: void
    signature: void auth_client_finish_handshake(struct auth_client_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-client-connection.c:216,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-client-connection.c:218,1
    - Dst: str_array_length
      Src: /src/dovecot/src/auth/auth-client-connection.c:222,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-client-connection.c:223,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-client-connection.c:224,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-client-connection.c:225,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-client-connection.c:226,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/auth-client-connection.c:227,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-client-connection.c:232,1
    - Dst: auth_client_finish_handshake
      Src: /src/dovecot/src/auth/auth-client-connection.c:239,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-client-connection.c:241,1
    - Dst: auth_client_input_cpid
      Src: /src/dovecot/src/auth/auth-client-connection.c:242,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-client-connection.c:246,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 250
    functionName: auth_client_handshake_args
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - auth_client_finish_handshake
    - t_strarray_join
    - str_array_length
    - auth_client_input_cpid
    - e_error
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: int auth_client_handshake_args(struct connection *conn, const char
      *const *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-client-connection.c:256,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-client-connection.c:258,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-client-connection.c:259,1
    - Dst: auth_line_hide_pass
      Src: /src/dovecot/src/auth/auth-client-connection.c:260,1
    - Dst: auth_request_handler_auth_begin
      Src: /src/dovecot/src/auth/auth-client-connection.c:261,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-client-connection.c:264,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-client-connection.c:265,1
    - Dst: cont_line_hide_pass
      Src: /src/dovecot/src/auth/auth-client-connection.c:266,1
    - Dst: auth_request_handler_auth_continue
      Src: /src/dovecot/src/auth/auth-client-connection.c:267,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-client-connection.c:270,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-client-connection.c:271,1
    - Dst: auth_client_cancel
      Src: /src/dovecot/src/auth/auth-client-connection.c:272,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-client-connection.c:275,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/auth/auth-client-connection.c:276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 252
    functionDepth: 5
    functionLinenumber: 252
    functionLinenumberEnd: 278
    functionName: auth_client_input_args
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - auth_line_hide_pass
    - auth_request_handler_auth_begin
    - e_debug
    - auth_client_cancel
    - auth_request_handler_auth_continue
    - e_error
    - str_sanitize
    - cont_line_hide_pass
    linkageType: ''
    returnType: int
    signature: int auth_client_input_args(struct connection *conn, const char *const
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-client-connection.c:283,1
    - Dst: auth_request_handler_abort_requests
      Src: /src/dovecot/src/auth/auth-client-connection.c:289,1
    - Dst: auth_request_handler_destroy
      Src: /src/dovecot/src/auth/auth-client-connection.c:290,1
    - Dst: auth_request_handler_get_request_count
      Src: /src/dovecot/src/auth/auth-client-connection.c:294,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-client-connection.c:297,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/auth/auth-client-connection.c:299,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/auth/auth-client-connection.c:302,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/auth/auth-client-connection.c:303,1
    - Dst: auth_client_connection_unref
      Src: /src/dovecot/src/auth/auth-client-connection.c:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 280
    functionDepth: 3
    functionLinenumber: 280
    functionLinenumberEnd: 305
    functionName: auth_client_connection_destroy
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - master_service_client_connection_destroyed
    - connection_disconnect_reason
    - e_error
    - auth_request_handler_get_request_count
    - auth_request_handler_abort_requests
    - auth_client_connection_unref
    - connection_deinit
    - auth_request_handler_destroy
    linkageType: ''
    returnType: void
    signature: void auth_client_connection_destroy(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/auth/auth-client-connection.c:334,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-client-connection.c:338,1
    - Dst: random_fill
      Src: /src/dovecot/src/auth/auth-client-connection.c:347,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/auth/auth-client-connection.c:349,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-client-connection.c:352,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-client-connection.c:353,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/auth/auth-client-connection.c:356,1
    - Dst: str_data
      Src: /src/dovecot/src/auth/auth-client-connection.c:356,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-client-connection.c:356,1
    - Dst: auth_client_finish_handshake
      Src: /src/dovecot/src/auth/auth-client-connection.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - auth
    - fd
    - name
    - flags
    argTypes:
    - struct auth*
    - int
    - char*
    - enum auth_client_connection_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 360
    functionName: auth_client_connection_create
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 2
    functionsReached:
    - random_fill
    - connection_list_init
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - auth_client_finish_handshake
    - connection_init_server
    - o_stream_nsend
    - i_new
    linkageType: ''
    returnType: void
    signature: "void auth_client_connection_create(struct auth *auth, int fd, const
      char *name,\n\t\t\t\t   enum auth_client_connection_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_connection_destroy
      Src: /src/dovecot/src/auth/auth-client-connection.c:370,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-client-connection.c:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct auth_client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 372
    functionName: auth_client_connection_unref
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 3
    functionsReached:
    - auth_client_connection_destroy
    - i_free
    linkageType: ''
    returnType: void
    signature: void auth_client_connection_unref(struct auth_client_connection **_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-client-connection.c:384,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - pid
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 389
    functionName: auth_client_connection_lookup
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 1
    functionsReached:
    - container_of
    linkageType: ''
    returnType: struct auth_client_connection
    signature: 'struct auth_client_connection *

      auth_client_connection_lookup(unsigned int pid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/auth/auth-client-connection.c:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 395
    functionName: auth_client_connections_destroy_all
    functionSourceFile: /src/dovecot/src/auth/auth-client-connection.c
    functionUses: 2
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void auth_client_connections_destroy_all(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:49,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:49,1
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:51,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:52,1
    - Dst: i_getpwnam
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:56,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:58,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:58,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:60,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:63,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:64,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:69,1
    - Dst: auth_userokay
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:70,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:71,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:72,1
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:75,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:75,1
    - Dst: auth_request_db_log_password_mismatch
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:78,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:79,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:84,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 3
    argNames:
    - request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 87
    functionName: bsdauth_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-bsdauth.c
    functionUses: 0
    functionsReached:
    - i_getpwnam
    - authdb_event
    - auth_request_db_log_unknown_user
    - auth_request_db_log_password_mismatch
    - e_debug
    - strlen
    - auth_request_set_field
    - t_strdup_printf
    - auth_userokay
    - e_error
    - auth_request_set_passdb_fields
    - callback
    - t_strdup_noconst
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void bsdauth_verify_plain(struct auth_request *request, const char
      *password,\n\t\t    verify_plain_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:98,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:99,1
    - Dst: passdb_set_cache_key
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:104,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - pool
    - event
    - passdb_params
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct passdb_parameters*
    - struct passdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 111
    functionName: bsdauth_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb-bsdauth.c
    functionUses: 0
    functionsReached:
    - settings_get
    - p_new
    - settings_free
    - passdb_set_cache_key
    linkageType: ''
    returnType: int
    signature: "int bsdauth_preinit(pool_t pool, struct event *event,\n\t\tconst struct
      passdb_parameters *passdb_params,\n\t\tstruct passdb_module **module_r,\n\t\tconst
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: endpwent
      Src: /src/dovecot/src/auth/passdb-bsdauth.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: bsdauth_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb-bsdauth.c
    functionUses: 0
    functionsReached:
    - endpwent
    linkageType: ''
    returnType: void
    signature: void bsdauth_deinit(struct passdb_module *module ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/passdb.c:21,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/passdb.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 26
    functionName: passdb_interface_find
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void passdb_interface_find(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: passdb_interface_find
      Src: /src/dovecot/src/auth/passdb.c:32,1
    - Dst: passdb_unregister_module
      Src: /src/dovecot/src/auth/passdb.c:35,1
    - Dst: i_panic
      Src: /src/dovecot/src/auth/passdb.c:37,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/passdb.c:40,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct passdb_module_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 41
    functionName: passdb_register_module
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 3
    functionsReached:
    - i_panic
    - passdb_interface_find
    - passdb_unregister_module
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void passdb_register_module(struct passdb_module_interface *iface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/auth/passdb.c:47,1
    - Dst: i_panic
      Src: /src/dovecot/src/auth/passdb.c:48,1
    - Dst: array_delete
      Src: /src/dovecot/src/auth/passdb.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct passdb_module_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: passdb_unregister_module
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 4
    functionsReached:
    - i_panic
    - array_delete
    - array_lsearch_ptr_idx
    linkageType: ''
    returnType: void
    signature: void passdb_unregister_module(struct passdb_module_interface *iface)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: password_scheme_is_alias
      Src: /src/dovecot/src/auth/passdb.c:62,1
    - Dst: password_decode
      Src: /src/dovecot/src/auth/passdb.c:68,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb.c:72,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb.c:72,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb.c:76,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb.c:76,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb.c:86,1
    - Dst: t_strcut
      Src: /src/dovecot/src/auth/passdb.c:86,1
    - Dst: password_scheme_is_alias
      Src: /src/dovecot/src/auth/passdb.c:90,1
    - Dst: password_scheme_is_alias
      Src: /src/dovecot/src/auth/passdb.c:91,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/passdb.c:92,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/passdb.c:96,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb.c:99,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb.c:99,1
    - Dst: t_strndup
      Src: /src/dovecot/src/auth/passdb.c:105,1
    - Dst: i_zero
      Src: /src/dovecot/src/auth/passdb.c:106,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/passdb.c:109,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/passdb.c:111,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb.c:115,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb.c:115,1
    - Dst: password_generate
      Src: /src/dovecot/src/auth/passdb.c:119,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb.c:121,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb.c:121,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 5
    argNames:
    - auth_request
    - input
    - input_scheme
    - credentials_r
    - size_r
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 128
    functionName: passdb_get_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 0
    functionsReached:
    - i_zero
    - authdb_event
    - p_strdup
    - e_info
    - strchr
    - password_scheme_is_alias
    - e_debug
    - t_strdup_printf
    - t_strndup
    - password_decode
    - e_error
    - password_generate
    - t_strcut
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool passdb_get_credentials(struct auth_request *auth_request,\n\t\t\t
      \   const char *input, const char *input_scheme,\n\t\t\t    const unsigned char
      **credentials_r, size_t *size_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb.c:139,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/passdb.c:141,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb.c:143,1
    - Dst: passdb_get_credentials
      Src: /src/dovecot/src/auth/passdb.c:148,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb.c:159,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb.c:159,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb.c:165,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - result
    - password
    - scheme
    - callback
    - auth_request
    argTypes:
    - enum passdb_result
    - char*
    - char*
    - lookup_credentials_callback_t*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 130
    functionDepth: 4
    functionLinenumber: 130
    functionLinenumberEnd: 166
    functionName: passdb_handle_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 4
    functionsReached:
    - authdb_event
    - e_info
    - passdb_get_credentials
    - auth_fields_exists
    - callback
    linkageType: ''
    returnType: void
    signature: "void passdb_handle_credentials(enum passdb_result result,\n\t\t\t
      \      const char *password, const char *scheme,\n\t\t\t       lookup_credentials_callback_t
      *callback,\n                               struct auth_request *auth_request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_parse_key_and_fields
      Src: /src/dovecot/src/auth/passdb.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 7
    argNames:
    - module
    - passdb_params
    - pool
    - query
    - fields
    - exclude_driver
    - error_r
    argTypes:
    - struct passdb_module*
    - struct passdb_parameters*
    - pool_t
    - char*
    - ARRAY_TYPE*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 168
    functionDepth: 4
    functionLinenumber: 168
    functionLinenumberEnd: 179
    functionName: passdb_set_cache_key
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 3
    functionsReached:
    - auth_cache_parse_key_and_fields
    linkageType: ''
    returnType: int
    signature: "int passdb_set_cache_key(struct passdb_module *module,\n\t\t\t const
      struct passdb_parameters *passdb_params,\n\t\t\t pool_t pool, const char *query,\n\t\t\t
      const ARRAY_TYPE(const_string) *fields,\n\t\t\t const char *exclude_driver,
      const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: passdb_interface_find
      Src: /src/dovecot/src/auth/passdb.c:190,1
    - Dst: auth_module_load
      Src: /src/dovecot/src/auth/passdb.c:193,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/passdb.c:193,1
    - Dst: passdb_interface_find
      Src: /src/dovecot/src/auth/passdb.c:194,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/passdb.c:197,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/passdb.c:199,1
    - Dst: struct passdb_module_interface*::preinit
      Src: /src/dovecot/src/auth/passdb.c:207,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/passdb.c:208,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb.c:213,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/passdb.c:217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - pool
    - event
    - set
    - use_cache
    argTypes:
    - pool_t
    - struct event*
    - struct auth_passdb_settings*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 219
    functionName: passdb_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 1
    functionsReached:
    - p_new
    - array_push_back
    - i_fatal
    - passdb_interface_find
    - auth_module_load
    - t_strconcat
    - struct passdb_module_interface*::preinit
    linkageType: ''
    returnType: struct passdb_module
    signature: "struct passdb_module *\npassdb_preinit(pool_t pool, struct event *event,\n\t
      \      const struct auth_passdb_settings *set, bool use_cache)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct passdb_module*::iface::init
      Src: /src/dovecot/src/auth/passdb.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - passdb
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 226
    functionName: passdb_init
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 1
    functionsReached:
    - struct passdb_module*::iface::init
    linkageType: ''
    returnType: void
    signature: void passdb_init(struct passdb_module *passdb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/passdb.c:230,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/auth/passdb.c:236,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/passdb.c:237,1
    - Dst: array_delete
      Src: /src/dovecot/src/auth/passdb.c:238,1
    - Dst: struct passdb_module*::iface::deinit
      Src: /src/dovecot/src/auth/passdb.c:241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - passdb
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 245
    functionName: passdb_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 1
    functionsReached:
    - array_delete
    - struct passdb_module*::iface::deinit
    - i_unreached
    - array_lsearch_ptr_idx
    - i_assert
    linkageType: ''
    returnType: void
    signature: void passdb_deinit(struct passdb_module *passdb)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/passdb.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - result
    argTypes:
    - enum passdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 269
    functionName: passdb_result_to_string
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 3
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: 'char *

      passdb_result_to_string(enum passdb_result result)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/passdb.c:285,1
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/passdb.c:286,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:287,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:288,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:290,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:292,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:293,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:294,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:295,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:296,1
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/passdb.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 298
    functionName: passdbs_init
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 3
    functionsReached:
    - i_array_init
    - passdb_register_module
    linkageType: ''
    returnType: void
    signature: void passdbs_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/auth/passdb.c:302,1
    - Dst: array_free
      Src: /src/dovecot/src/auth/passdb.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 304
    functionName: passdbs_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb.c
    functionUses: 3
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void passdbs_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/db-ldap-sasl.c:64,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/auth/db-ldap-sasl.c:70,1
    - Dst: ldap_sasl_interactive_bind_s
      Src: /src/dovecot/src/auth/db-ldap-sasl.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 78
    functionName: db_ldap_bind_sasl_interactive
    functionSourceFile: /src/dovecot/src/auth/db-ldap-sasl.c
    functionUses: 0
    functionsReached:
    - i_zero
    - ldap_sasl_interactive_bind_s
    - t_array_const_string_join
    linkageType: ''
    returnType: int
    signature: int db_ldap_bind_sasl_interactive(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/db-ldap-sasl.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: db_ldap_bind_sasl_interactive
    functionSourceFile: /src/dovecot/src/auth/db-ldap-sasl.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: int
    signature: int db_ldap_bind_sasl_interactive(struct ldap_connection *conn ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-blocking.c:17,1
    - Dst: auth_request_set_fields
      Src: /src/dovecot/src/auth/passdb-blocking.c:21,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - request
    - args
    argTypes:
    - struct auth_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 22
    functionName: auth_worker_reply_parse_args
    functionSourceFile: /src/dovecot/src/auth/passdb-blocking.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - auth_request_set_fields
    linkageType: ''
    returnType: void
    signature: "void auth_worker_reply_parse_args(struct auth_request *request,\n\t\t\t
      \    const char *const *args)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/passdb-blocking.c:30,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-blocking.c:33,1
    - Dst: auth_worker_reply_parse_args
      Src: /src/dovecot/src/auth/passdb-blocking.c:34,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/passdb-blocking.c:38,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-blocking.c:41,1
    - Dst: auth_worker_reply_parse_args
      Src: /src/dovecot/src/auth/passdb-blocking.c:42,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/passdb-blocking.c:46,1
    - Dst: str_to_int
      Src: /src/dovecot/src/auth/passdb-blocking.c:49,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-blocking.c:60,1
    - Dst: auth_worker_reply_parse_args
      Src: /src/dovecot/src/auth/passdb-blocking.c:63,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-blocking.c:69,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-blocking.c:69,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/passdb-blocking.c:70,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 2
    argNames:
    - request
    - args
    argTypes:
    - struct auth_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 72
    functionName: passdb_blocking_auth_worker_reply_parse
    functionSourceFile: /src/dovecot/src/auth/passdb-blocking.c
    functionUses: 0
    functionsReached:
    - strcmp
    - authdb_event
    - t_strarray_join
    - auth_request_set_field
    - e_error
    - auth_worker_reply_parse_args
    - str_to_int
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result passdb_blocking_auth_worker_reply_parse(struct
      auth_request *request,\n\t\t\t\t\tconst char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_blocking_auth_worker_reply_parse
      Src: /src/dovecot/src/auth/passdb-blocking.c:81,1
    - Dst: auth_request_verify_plain_callback
      Src: /src/dovecot/src/auth/passdb-blocking.c:82,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-blocking.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - args
    - context
    argTypes:
    - struct auth_worker_connection*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: verify_plain_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-blocking.c
    functionUses: 1
    functionsReached:
    - passdb_blocking_auth_worker_reply_parse
    - auth_request_verify_plain_callback
    - auth_request_unref
    linkageType: ''
    returnType: bool
    signature: "bool verify_plain_callback(struct auth_worker_connection *conn ATTR_UNUSED,\n\t\t
      \     const char *const *args, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/passdb-blocking.c:91,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/passdb-blocking.c:92,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/passdb-blocking.c:93,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/passdb-blocking.c:94,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/passdb-blocking.c:95,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-blocking.c:97,1
    - Dst: auth_worker_call
      Src: /src/dovecot/src/auth/passdb-blocking.c:98,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/passdb-blocking.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: passdb_blocking_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-blocking.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - auth_request_ref
    - auth_worker_call
    - auth_request_export
    - str_append_tabescaped
    linkageType: ''
    returnType: void
    signature: void passdb_blocking_verify_plain(struct auth_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: passdb_blocking_auth_worker_reply_parse
      Src: /src/dovecot/src/auth/passdb-blocking.c:110,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/passdb-blocking.c:113,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-blocking.c:115,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-blocking.c:115,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/passdb-blocking.c:122,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-blocking.c:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - args
    - context
    argTypes:
    - struct auth_worker_connection*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 102
    functionDepth: 5
    functionLinenumber: 102
    functionLinenumberEnd: 127
    functionName: lookup_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-blocking.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - password_get_scheme
    - passdb_blocking_auth_worker_reply_parse
    - e_error
    - auth_request_unref
    - passdb_handle_credentials
    linkageType: ''
    returnType: bool
    signature: "bool lookup_credentials_callback(struct auth_worker_connection *conn
      ATTR_UNUSED,\n\t\t\t    const char *const *args, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/passdb-blocking.c:133,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/passdb-blocking.c:134,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/passdb-blocking.c:135,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/passdb-blocking.c:136,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/passdb-blocking.c:137,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-blocking.c:139,1
    - Dst: auth_worker_call
      Src: /src/dovecot/src/auth/passdb-blocking.c:140,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/passdb-blocking.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 142
    functionName: passdb_blocking_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-blocking.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - auth_request_ref
    - auth_worker_call
    - auth_request_export
    - str_append_tabescaped
    linkageType: ''
    returnType: void
    signature: void passdb_blocking_lookup_credentials(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/passdb-blocking.c:151,1
    - Dst: struct auth_request*::private_callback::set_credentials
      Src: /src/dovecot/src/auth/passdb-blocking.c:152,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-blocking.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - args
    - context
    argTypes:
    - struct auth_worker_connection*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 155
    functionName: set_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-blocking.c
    functionUses: 0
    functionsReached:
    - strcmp
    - auth_request_unref
    - struct auth_request*::private_callback::set_credentials
    linkageType: ''
    returnType: bool
    signature: "bool set_credentials_callback(struct auth_worker_connection *conn
      ATTR_UNUSED,\n\t\t\t const char *const *args, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/passdb-blocking.c:162,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/passdb-blocking.c:163,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/passdb-blocking.c:164,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/passdb-blocking.c:165,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/passdb-blocking.c:166,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-blocking.c:168,1
    - Dst: auth_worker_call
      Src: /src/dovecot/src/auth/passdb-blocking.c:169,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/passdb-blocking.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - request
    - new_credentials
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 171
    functionName: passdb_blocking_set_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-blocking.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - auth_request_ref
    - auth_worker_call
    - auth_request_export
    - str_append_tabescaped
    linkageType: ''
    returnType: void
    signature: "void passdb_blocking_set_credentials(struct auth_request *request,\n\t\t\t\t
      \    const char *new_credentials)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-policy.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct policy_template_keyvalue*
    - struct policy_template_keyvalue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: auth_policy_attribute_comparator
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int auth_policy_attribute_comparator(const struct policy_template_keyvalue
      *a,\n\t\t\t\t const struct policy_template_keyvalue *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-policy.c:68,1
    - Dst: memcmp
      Src: /src/dovecot/src/auth/auth-policy.c:69,1
    - Dst: I_MIN
      Src: /src/dovecot/src/auth/auth-policy.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - a0
    - a1
    - b0
    - b1
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 70
    functionName: auth_policy_strptrcmp
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - i_assert
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int auth_policy_strptrcmp(const char *a0, const char *a1,\n\t\t      const
      char *b0, const char *b1)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-policy.c:77,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/auth/auth-policy.c:78,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-policy.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - json_output
    - key
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 72
    functionDepth: 17
    functionLinenumber: 72
    functionLinenumberEnd: 82
    functionName: auth_policy_open_key
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strdup_until
    - json_ostream_ndescend_object
    linkageType: ''
    returnType: void
    signature: void auth_policy_open_key(struct json_ostream *json_output, const char
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-policy.c:87,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/auth/auth-policy.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - json_output
    - key
    argTypes:
    - struct json_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 84
    functionDepth: 16
    functionLinenumber: 84
    functionLinenumberEnd: 91
    functionName: auth_policy_close_key
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - strchr
    - json_ostream_nascend_object
    linkageType: ''
    returnType: void
    signature: void auth_policy_close_key(struct json_ostream *json_output, const
      char *key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/auth/auth-policy.c:99,1
    - Dst: strrchr
      Src: /src/dovecot/src/auth/auth-policy.c:100,1
    - Dst: auth_policy_open_key
      Src: /src/dovecot/src/auth/auth-policy.c:105,1
    - Dst: auth_policy_close_key
      Src: /src/dovecot/src/auth/auth-policy.c:110,1
    - Dst: auth_policy_strptrcmp
      Src: /src/dovecot/src/auth/auth-policy.c:114,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-policy.c:123,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-policy.c:124,1
    - Dst: auth_policy_open_key
      Src: /src/dovecot/src/auth/auth-policy.c:127,1
    - Dst: auth_policy_close_key
      Src: /src/dovecot/src/auth/auth-policy.c:131,1
    - Dst: auth_policy_strptrcmp
      Src: /src/dovecot/src/auth/auth-policy.c:134,1
    - Dst: auth_policy_close_key
      Src: /src/dovecot/src/auth/auth-policy.c:135,1
    - Dst: auth_policy_open_key
      Src: /src/dovecot/src/auth/auth-policy.c:136,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 3
    argNames:
    - json_output
    - fromkey
    - tokey
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 93
    functionDepth: 18
    functionLinenumber: 93
    functionLinenumberEnd: 142
    functionName: auth_policy_open_and_close_to_key
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - strchr
    - strrchr
    - auth_policy_open_key
    - auth_policy_close_key
    - auth_policy_strptrcmp
    linkageType: ''
    returnType: void
    signature: "void auth_policy_open_and_close_to_key(struct json_ostream *json_output,\n\t\t\t\t
      \ const char *fromkey, const char *tokey)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-policy.c:147,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/auth/auth-policy.c:148,1
    - Dst: http_client_init_auto
      Src: /src/dovecot/src/auth/auth-policy.c:149,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-policy.c:150,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-policy.c:151,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/auth-policy.c:161,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-policy.c:163,1
    - Dst: t_array_init
      Src: /src/dovecot/src/auth/auth-policy.c:165,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth-policy.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-policy.c:169,1
    - Dst: array_append_space
      Src: /src/dovecot/src/auth/auth-policy.c:172,1
    - Dst: array_sort
      Src: /src/dovecot/src/auth/auth-policy.c:178,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/auth/auth-policy.c:183,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/auth/auth-policy.c:185,1
    - Dst: array_foreach
      Src: /src/dovecot/src/auth/auth-policy.c:186,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-policy.c:187,1
    - Dst: auth_policy_open_and_close_to_key
      Src: /src/dovecot/src/auth/auth-policy.c:188,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/auth/auth-policy.c:190,1
    - Dst: auth_policy_open_and_close_to_key
      Src: /src/dovecot/src/auth/auth-policy.c:195,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/auth/auth-policy.c:196,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/auth/auth-policy.c:197,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/auth-policy.c:199,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-policy.c:199,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/auth-policy.c:202,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth-policy.c:206,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 144
    functionDepth: 19
    functionLinenumber: 144
    functionLinenumberEnd: 207
    functionName: auth_policy_init
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 1
    functionsReached:
    - strchr
    - str_c
    - event_unref
    - json_ostream_nwrite_string
    - i_strdup
    - array_append_space
    - i_fatal
    - e_warning
    - event_create
    - json_ostream_nascend_object
    - array_get
    - http_client_init_auto
    - i_assert
    - auth_policy_open_and_close_to_key
    - json_ostream_ndescend_object
    - json_ostream_create_str
    - settings_event_add_filter_name
    - settings_free
    - array_foreach
    - t_array_init
    - array_sort
    - json_ostream_nfinish_destroy
    - settings_get
    linkageType: ''
    returnType: void
    signature: void auth_policy_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_deinit
      Src: /src/dovecot/src/auth/auth-policy.c:212,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-policy.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 214
    functionName: auth_policy_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 1
    functionsReached:
    - http_client_deinit
    - i_free
    linkageType: ''
    returnType: void
    signature: void auth_policy_deinit(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/auth/auth-policy.c:219,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-policy.c:222,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/auth/auth-policy.c:222,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/auth/auth-policy.c:226,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-policy.c:232,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-policy.c:234,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/auth/auth-policy.c:234,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-policy.c:237,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/auth/auth-policy.c:237,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-policy.c:240,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/auth/auth-policy.c:240,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - context
    argTypes:
    - struct policy_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 243
    functionName: auth_policy_log_result
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - e_info
    - e_debug
    - t_strdup_printf
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - event_create_passthrough
    linkageType: ''
    returnType: void
    signature: void auth_policy_log_result(struct policy_lookup_ctx *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/auth/auth-policy.c:247,1
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/auth/auth-policy.c:248,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-policy.c:250,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-policy.c:251,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/auth-policy.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - context
    argTypes:
    - struct policy_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 253
    functionName: auth_policy_finish
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - event_unref
    - pool_unref
    - auth_request_unref
    - json_istream_destroy
    - http_client_request_abort
    linkageType: ''
    returnType: void
    signature: void auth_policy_finish(struct policy_lookup_ctx *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct policy_lookup_ctx*::callback
      Src: /src/dovecot/src/auth/auth-policy.c:258,1
    - Dst: auth_policy_log_result
      Src: /src/dovecot/src/auth/auth-policy.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - context
    argTypes:
    - struct policy_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 261
    functionName: auth_policy_callback
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - struct policy_lookup_ctx*::callback
    - auth_policy_log_result
    linkageType: ''
    returnType: void
    signature: void auth_policy_callback(struct policy_lookup_ctx *context)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read
      Src: /src/dovecot/src/auth/auth-policy.c:271,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-policy.c:274,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-policy.c:276,1
    - Dst: json_node_get_int
      Src: /src/dovecot/src/auth/auth-policy.c:277,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-policy.c:280,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/auth/auth-policy.c:281,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/auth/auth-policy.c:283,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-policy.c:285,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/auth/auth-policy.c:287,1
    - Dst: io_remove
      Src: /src/dovecot/src/auth/auth-policy.c:295,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-policy.c:298,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/auth/auth-policy.c:300,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-policy.c:302,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/auth/auth-policy.c:307,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-policy.c:308,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-policy.c:310,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-policy.c:314,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/auth/auth-policy.c:320,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-policy.c:332,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/auth-policy.c:335,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-policy.c:340,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-policy.c:345,1
    - Dst: auth_policy_callback
      Src: /src/dovecot/src/auth/auth-policy.c:351,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/auth/auth-policy.c:352,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 61
    argCount: 1
    argNames:
    - context
    argTypes:
    - struct policy_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 263
    functionDepth: 8
    functionLinenumber: 263
    functionLinenumberEnd: 353
    functionName: auth_policy_parse_response
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - strcmp
    - auth_policy_callback
    - p_strdup
    - e_info
    - json_istream_read
    - json_istream_skip
    - e_debug
    - json_node_get_str
    - io_remove
    - auth_request_set_field
    - e_error
    - json_node_get_int
    - i_stream_get_error
    - json_istream_finish
    - i_stream_unref
    - json_istream_destroy
    - i_assert
    - json_node_is_string
    linkageType: ''
    returnType: void
    signature: void auth_policy_parse_response(struct policy_lookup_ctx *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-policy.c:363,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/auth/auth-policy.c:365,1
    - Dst: auth_policy_callback
      Src: /src/dovecot/src/auth/auth-policy.c:366,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-policy.c:372,1
    - Dst: auth_policy_callback
      Src: /src/dovecot/src/auth/auth-policy.c:374,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/auth/auth-policy.c:379,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/auth/auth-policy.c:380,1
    - Dst: json_istream_create_object
      Src: /src/dovecot/src/auth/auth-policy.c:382,1
    - Dst: auth_policy_parse_response
      Src: /src/dovecot/src/auth/auth-policy.c:384,1
    - Dst: auth_policy_callback
      Src: /src/dovecot/src/auth/auth-policy.c:386,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - response
    - ctx
    argTypes:
    - struct http_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 355
    functionDepth: 9
    functionLinenumber: 355
    functionLinenumberEnd: 388
    functionName: auth_policy_process_response
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - auth_policy_callback
    - json_istream_create_object
    - io_add_istream
    - i_stream_ref
    - auth_policy_parse_response
    - e_error
    - http_response_get_message
    linkageType: ''
    returnType: void
    signature: void auth_policy_process_response(const struct http_response *response,
      void *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-policy.c:395,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/auth/auth-policy.c:396,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-policy.c:398,1
    - Dst: auth_policy_callback
      Src: /src/dovecot/src/auth/auth-policy.c:400,1
    - Dst: auth_policy_finish
      Src: /src/dovecot/src/auth/auth-policy.c:401,1
    - Dst: http_client_request_url
      Src: /src/dovecot/src/auth/auth-policy.c:405,1
    - Dst: http_client_request_set_destroy_callback
      Src: /src/dovecot/src/auth/auth-policy.c:407,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/auth/auth-policy.c:409,1
    - Dst: strstr
      Src: /src/dovecot/src/auth/auth-policy.c:414,1
    - Dst: t_strcut
      Src: /src/dovecot/src/auth/auth-policy.c:416,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/auth/auth-policy.c:418,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/auth/auth-policy.c:421,1
    - Dst: http_client_request_set_auth_simple
      Src: /src/dovecot/src/auth/auth-policy.c:428,1
    - Dst: i_stream_create_from_buffer
      Src: /src/dovecot/src/auth/auth-policy.c:433,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/auth/auth-policy.c:434,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/auth/auth-policy.c:435,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/auth/auth-policy.c:436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - context
    argTypes:
    - struct policy_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 390
    functionDepth: 5
    functionLinenumber: 390
    functionLinenumberEnd: 437
    functionName: auth_policy_send_request
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - auth_policy_callback
    - http_client_request_set_destroy_callback
    - auth_request_ref
    - http_client_request_set_auth_simple
    - http_client_request_set_payload
    - i_stream_create_from_buffer
    - e_error
    - auth_policy_finish
    - http_client_request_url
    - http_client_request_add_header
    - t_strcut
    - http_client_request_submit
    - strstr
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void auth_policy_send_request(struct policy_lookup_ctx *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-policy.c:443,1
    - Dst: json_append_escaped
      Src: /src/dovecot/src/auth/auth-policy.c:444,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-policy.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - string
    - auth_request ATTR_UNUSED
    argTypes:
    - char*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 446
    functionName: auth_policy_escape_function
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - json_append_escaped
    linkageType: ''
    returnType: char
    signature: "char *\nauth_policy_escape_function(const char *string,\n\t\t\t    const
      struct auth_request *auth_request ATTR_UNUSED)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-policy.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 473
    functionName: auth_policy_fail_type
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char * auth_policy_fail_type(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_var_expand_table_full
      Src: /src/dovecot/src/auth/auth-policy.c:483,1
    - Dst: auth_policy_fail_type
      Src: /src/dovecot/src/auth/auth-policy.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - auth_request
    - hashed_password
    - requested_username
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 494
    functionName: policy_get_var_expand_table
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - auth_request_get_var_expand_table_full
    - auth_policy_fail_type
    linkageType: ''
    returnType: struct var_expand_table
    signature: "struct var_expand_table *\npolicy_get_var_expand_table(struct auth_request
      *auth_request,\n\t\t\t    const char *hashed_password,\n\t\t\t    const char
      *requested_username)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/auth/auth-policy.c:501,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/auth/auth-policy.c:505,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-policy.c:507,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/auth/auth-policy.c:509,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/auth/auth-policy.c:510,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/auth/auth-policy.c:512,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/auth/auth-policy.c:513,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-policy.c:514,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/auth/auth-policy.c:525,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-policy.c:525,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/auth/auth-policy.c:527,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-policy.c:527,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/auth/auth-policy.c:528,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/auth/auth-policy.c:529,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/auth/auth-policy.c:530,1
    - Dst: buffer_truncate_rshift_bits
      Src: /src/dovecot/src/auth/auth-policy.c:532,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/auth/auth-policy.c:536,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/auth/auth-policy.c:540,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/auth/auth-policy.c:541,1
    - Dst: json_ostream_nopen_space
      Src: /src/dovecot/src/auth/auth-policy.c:543,1
    - Dst: policy_get_var_expand_table
      Src: /src/dovecot/src/auth/auth-policy.c:544,1
    - Dst: auth_request_var_expand_with_table
      Src: /src/dovecot/src/auth/auth-policy.c:546,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-policy.c:551,1
    - Dst: json_ostream_close_space
      Src: /src/dovecot/src/auth/auth-policy.c:555,1
    - Dst: json_ostream_nwrite_true
      Src: /src/dovecot/src/auth/auth-policy.c:561,1
    - Dst: json_ostream_nwrite_false
      Src: /src/dovecot/src/auth/auth-policy.c:564,1
    - Dst: json_ostream_nwrite_bool
      Src: /src/dovecot/src/auth/auth-policy.c:567,1
    - Dst: json_ostream_nwrite_bool
      Src: /src/dovecot/src/auth/auth-policy.c:570,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/auth/auth-policy.c:573,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/auth/auth-policy.c:574,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-policy.c:576,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-policy.c:577,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 3
    argNames:
    - context
    - password
    - include_success
    argTypes:
    - struct policy_lookup_ctx*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 496
    functionDepth: 18
    functionLinenumber: 496
    functionLinenumberEnd: 578
    functionName: auth_policy_create_json
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - json_ostream_nopen_space
    - str_c
    - strlen
    - auth_request_var_expand_with_table
    - buffer_set_used_size
    - json_ostream_nwrite_bool
    - binary_to_hex
    - str_new
    - hash_method_lookup
    - json_ostream_nascend_object
    - json_ostream_nwrite_true
    - struct hash_method*::loop
    - struct hash_method*::result
    - e_error
    - t_malloc_no0
    - i_assert
    - json_ostream_nwrite_false
    - struct hash_method*::init
    - json_ostream_ndescend_object
    - buffer_truncate_rshift_bits
    - e_debug
    - json_ostream_create_str
    - t_buffer_create
    - json_ostream_close_space
    - buffer_get_modifiable_data
    - policy_get_var_expand_table
    - json_ostream_nfinish_destroy
    linkageType: ''
    returnType: void
    signature: "void auth_policy_create_json(struct policy_lookup_ctx *context,\n\t\t\tconst
      char *password, bool include_success)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-policy.c:583,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/auth/auth-policy.c:585,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/auth/auth-policy.c:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - context
    - command
    argTypes:
    - struct policy_lookup_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 593
    functionName: auth_policy_url
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - strlen
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void auth_policy_url(struct policy_lookup_ctx *context,\n\t\t\t    const
      char *command)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cb
      Src: /src/dovecot/src/auth/auth-policy.c:600,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/auth-policy.c:604,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-policy.c:606,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-policy.c:614,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-policy.c:615,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/auth/auth-policy.c:616,1
    - Dst: auth_policy_url
      Src: /src/dovecot/src/auth/auth-policy.c:617,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-policy.c:619,1
    - Dst: auth_policy_create_json
      Src: /src/dovecot/src/auth/auth-policy.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - request
    - password
    - cb
    - context
    argTypes:
    - struct auth_request*
    - char*
    - auth_policy_callback_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 595
    functionDepth: 19
    functionLinenumber: 595
    functionLinenumberEnd: 622
    functionName: auth_policy_check
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - auth_policy_create_json
    - p_new
    - auth_policy_url
    - e_debug
    - event_set_append_log_prefix
    - cb
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void auth_policy_check(struct auth_request *request, const char *password,\n\tauth_policy_callback_t
      cb, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/auth-policy.c:634,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-policy.c:636,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-policy.c:642,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-policy.c:643,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/auth/auth-policy.c:644,1
    - Dst: auth_policy_url
      Src: /src/dovecot/src/auth/auth-policy.c:645,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-policy.c:646,1
    - Dst: auth_policy_create_json
      Src: /src/dovecot/src/auth/auth-policy.c:648,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 626
    functionDepth: 19
    functionLinenumber: 626
    functionLinenumberEnd: 649
    functionName: auth_policy_report
    functionSourceFile: /src/dovecot/src/auth/auth-policy.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - event_create
    - auth_policy_create_json
    - p_new
    - auth_policy_url
    - e_debug
    - event_set_append_log_prefix
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void auth_policy_report(struct auth_request *request)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:34,1
    - Dst: sasl_server_oauth2_request_fail
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:38,1
    - Dst: sasl_server_oauth2_request_succeed
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:53,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:56,1
    - Dst: sasl_server_oauth2_request_fail
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - result
    - auth_request
    argTypes:
    - enum passdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 27
    functionDepth: 20
    functionLinenumber: 27
    functionLinenumberEnd: 60
    functionName: oauth2_verify_finish
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - i_zero
    - sasl_server_oauth2_request_succeed
    - i_unreached
    - sasl_server_oauth2_request_fail
    linkageType: ''
    returnType: void
    signature: "void oauth2_verify_finish(enum passdb_result result,\n\t\t     struct
      auth_request *auth_request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: oauth2_verify_finish
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - result
    - credentials ATTR_UNUSED
    - ATTR_UNUSED
    - auth_request
    argTypes:
    - enum passdb_result
    - unsigned char*
    - size_t
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 21
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: oauth2_verify_callback
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - oauth2_verify_finish
    linkageType: ''
    returnType: void
    signature: "void oauth2_verify_callback(enum passdb_result result,\n\t\t       const
      unsigned char *credentials ATTR_UNUSED,\n\t\t       size_t size ATTR_UNUSED,\n\t\t
      \      struct auth_request *auth_request)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:79,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:86,1
    - Dst: str_to_int
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:88,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:90,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:95,1
    - Dst: auth_request_set_password_verified
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:104,1
    - Dst: auth_request_set_fields
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:105,1
    - Dst: auth_request_lookup_credentials
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:106,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:108,1
    - Dst: oauth2_verify_finish
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:112,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - lookup
    - args
    argTypes:
    - struct oauth2_token_lookup*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 73
    functionDepth: 21
    functionLinenumber: 73
    functionLinenumberEnd: 114
    functionName: mech_oauth2_verify_token_continue
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - container_of
    - e_error
    - auth_request_lookup_credentials
    - auth_request_set_fields
    - auth_request_unref
    - oauth2_verify_finish
    - auth_request_set_password_verified
    - str_to_int
    linkageType: ''
    returnType: void
    signature: "void mech_oauth2_verify_token_continue(struct oauth2_token_lookup
      *lookup,\n\t\t\t\t  const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mech_oauth2_verify_token_continue
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - args
    - context
    argTypes:
    - struct auth_worker_connection*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 116
    functionDepth: 22
    functionLinenumber: 116
    functionLinenumberEnd: 125
    functionName: mech_oauth2_verify_token_input_args
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - mech_oauth2_verify_token_continue
    linkageType: ''
    returnType: bool
    signature: "bool mech_oauth2_verify_token_input_args(\n\tstruct auth_worker_connection
      *conn ATTR_UNUSED,\n\tconst char *const *args, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:135,1
    - Dst: auth_request_set_password_verified
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:138,1
    - Dst: auth_request_lookup_credentials
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:139,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:141,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:142,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:145,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:147,1
    - Dst: oauth2_verify_finish
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:149,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:150,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - db_req
    - result
    - error
    - lookup
    argTypes:
    - struct db_oauth2_request*
    - enum passdb_result
    - char*
    - struct oauth2_token_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 127
    functionDepth: 21
    functionLinenumber: 127
    functionLinenumberEnd: 152
    functionName: mech_oauth2_verify_token_local_continue
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - e_info
    - container_of
    - pool_unref
    - e_error
    - auth_request_lookup_credentials
    - auth_request_unref
    - oauth2_verify_finish
    - auth_request_set_password_verified
    linkageType: ''
    returnType: void
    signature: "void mech_oauth2_verify_token_local_continue(struct db_oauth2_request
      *db_req,\n\t\t\t\t\tenum passdb_result result,\n\t\t\t\t\tconst char *error,\n\t\t\t\t\tstruct
      oauth2_token_lookup *lookup)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:159,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:163,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:167,1
    - Dst: sasl_server_oauth2_request_init
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:168,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:172,1
    - Dst: db_oauth2_use_worker
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:173,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:174,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:177,1
    - Dst: db_oauth2_lookup
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:180,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:184,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:185,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:186,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:187,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:188,1
    - Dst: auth_worker_call
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:189,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - srctx
    - pool
    - token
    - req_r
    argTypes:
    - struct sasl_server_req_ctx*
    - pool_t
    - char*
    - struct sasl_server_oauth2_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 197
    functionName: oauth2_auth_new
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_str_new
    - container_of
    - p_new
    - auth_request_ref
    - str_append_c
    - str_c
    - auth_worker_call
    - auth_request_export
    - e_error
    - str_append_tabescaped
    - sasl_server_oauth2_request_init
    - db_oauth2_lookup
    - str_append
    - db_oauth2_use_worker
    linkageType: ''
    returnType: int
    signature: "int oauth2_auth_new(struct sasl_server_req_ctx *srctx, pool_t pool,\n\t\tconst
      char *token, struct sasl_server_oauth2_request **req_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:206,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:207,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:208,1
    - Dst: db_oauth2_init
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:209,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:211,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 214
    functionName: auth_sasl_oauth2_initialize
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - db_oauth2_init
    - strcasecmp
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void auth_sasl_oauth2_initialize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:223,1
    - Dst: i_zero
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:225,1
    - Dst: db_oauth2_get_openid_configuration_url
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - oauth2_set
    argTypes:
    - struct sasl_server_oauth2_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 228
    functionName: mech_oauth_init_settings
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - i_zero
    - db_oauth2_get_openid_configuration_url
    - i_assert
    linkageType: ''
    returnType: void
    signature: void mech_oauth_init_settings(struct sasl_server_oauth2_settings *oauth2_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mech_oauth_init_settings
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:236,1
    - Dst: sasl_server_mech_register_oauthbearer
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - sasl_inst
    - ATTR_UNUSED
    argTypes:
    - struct sasl_server_instance*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 240
    functionName: mech_oauthbearer_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_register_oauthbearer
    - mech_oauth_init_settings
    linkageType: ''
    returnType: bool
    signature: "bool mech_oauthbearer_register(struct sasl_server_instance *sasl_inst,\n\t\t\t
      \ const struct auth_settings *set ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mech_oauth_init_settings
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:248,1
    - Dst: sasl_server_mech_register_xoauth2
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - sasl_inst
    - ATTR_UNUSED
    argTypes:
    - struct sasl_server_instance*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 242
    functionDepth: 3
    functionLinenumber: 242
    functionLinenumberEnd: 252
    functionName: mech_xoauth2_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - mech_oauth_init_settings
    - sasl_server_mech_register_xoauth2
    linkageType: ''
    returnType: bool
    signature: "bool mech_xoauth2_register(struct sasl_server_instance *sasl_inst,\n\t\t
      \     const struct auth_settings *set ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:268,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: auth_sasl_mech_oauth2_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-oauth2.c
    functionUses: 0
    functionsReached:
    - auth_sasl_mech_register_module
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mech_oauth2_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:50,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:51,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:53,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:56,1
    - Dst: auth_request_fields_alloc
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:57,1
    - Dst: auth_request_fields_init
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 65
    functionName: test_auth_request_init
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-fields.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - p_array_init
    - auth_request_fields_alloc
    - auth_request_fields_init
    linkageType: ''
    returnType: struct auth_request
    signature: struct auth_request *test_auth_request_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:69,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: test_auth_request_deinit
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-fields.c
    functionUses: 0
    functionsReached:
    - event_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void test_auth_request_deinit(struct auth_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_auth_request_init
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:75,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:76,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:77,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:80,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:80,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:83,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:85,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:86,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:88,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:92,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:93,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:93,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:96,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:96,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:98,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:99,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:100,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:100,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:100,1
    - Dst: test_auth_request_deinit
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 73
    functionDepth: 4
    functionLinenumber: 73
    functionLinenumberEnd: 103
    functionName: test_auth_request_fields_list
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-fields.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - auth_request_import
    - str_append_c
    - test_assert_idx
    - str_len
    - test_auth_request_init
    - test_assert_strcmp
    - auth_request_export
    - test_auth_request_deinit
    - str_append_tabescaped
    - null_strcmp
    - str_truncate
    - event_find_field_recursive_str
    - str_append
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_auth_request_fields_list(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:109,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:110,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:111,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:113,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:114,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:117,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:118,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:119,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:119,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:119,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:120,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:120,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - request
    - key
    - value
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 122
    functionName: test_auth_request_export_cmp
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-fields.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - test_assert_strcmp
    - auth_request_export
    - str_append_tabescaped
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool test_auth_request_export_cmp(struct auth_request *request,\n\t\t\t
      \    const char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_auth_request_init
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:128,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:129,1
    - Dst: test_auth_request_export_cmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:130,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:130,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:132,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:133,1
    - Dst: test_auth_request_export_cmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:133,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:134,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:134,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:136,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:137,1
    - Dst: test_auth_request_export_cmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:138,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:138,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:138,1
    - Dst: test_auth_request_deinit
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 124
    functionDepth: 4
    functionLinenumber: 124
    functionLinenumberEnd: 140
    functionName: test_auth_request_fields_secured
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-fields.c
    functionUses: 0
    functionsReached:
    - auth_request_import
    - test_auth_request_export_cmp
    - test_auth_request_init
    - test_auth_request_deinit
    - null_strcmp
    - test_assert
    - event_find_field_recursive_str
    linkageType: ''
    returnType: void
    signature: void test_auth_request_fields_secured(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_auth_request_init
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:144,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:145,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:146,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:148,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:151,1
    - Dst: test_auth_request_deinit
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:152,1
    - Dst: test_auth_request_init
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:155,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:156,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:156,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:158,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:160,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:162,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:163,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:166,1
    - Dst: test_auth_request_deinit
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:167,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:168,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:168,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 142
    functionDepth: 4
    functionLinenumber: 142
    functionLinenumberEnd: 169
    functionName: test_auth_request_export_import
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-fields.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - strchr
    - auth_request_import
    - t_strsplit_tabescaped
    - auth_request_set_field
    - test_auth_request_init
    - test_assert_strcmp
    - auth_request_export
    - test_auth_request_deinit
    - t_strdup_until
    linkageType: ''
    returnType: void
    signature: void test_auth_request_export_import(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:173,1
    - Dst: test_auth_request_fields_list
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:174,1
    - Dst: test_auth_request_fields_secured
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:175,1
    - Dst: test_auth_request_export_import
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:176,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-request-fields.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 171
    functionDepth: 5
    functionLinenumber: 171
    functionLinenumberEnd: 178
    functionName: test_auth_request_fields
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-fields.c
    functionUses: 0
    functionsReached:
    - test_auth_request_fields_list
    - test_auth_request_export_import
    - test_end
    - test_auth_request_fields_secured
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_request_fields(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_strsplit
      Src: /src/dovecot/src/auth/auth-master-connection.c:57,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/auth/auth-master-connection.c:57,1
    - Dst: strstr
      Src: /src/dovecot/src/auth/auth-master-connection.c:59,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-master-connection.c:60,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/auth/auth-master-connection.c:63,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/auth/auth-master-connection.c:63,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/auth-master-connection.c:67,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - conn
    - str
    argTypes:
    - struct auth_master_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 68
    functionName: auth_master_reply_hide_passwords
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strarray_join
    - pool_datastack_create
    - p_strsplit
    - p_strconcat
    - strstr
    linkageType: ''
    returnType: char
    signature: "char *\nauth_master_reply_hide_passwords(struct auth_master_connection
      *conn,\n\t\t\t\t const char *str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-master-connection.c:76,1
    - Dst: auth_master_reply_hide_passwords
      Src: /src/dovecot/src/auth/auth-master-connection.c:77,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-master-connection.c:80,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/auth/auth-master-connection.c:84,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/auth-master-connection.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - reply
    - conn
    argTypes:
    - char*
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 85
    functionName: auth_master_request_callback
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 3
    functionsReached:
    - auth_master_reply_hide_passwords
    - e_debug
    - strlen
    - o_stream_nsendv
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void auth_master_request_callback(const char *reply,\n\t\t\t\t  struct
      auth_master_connection *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-master-connection.c:92,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:94,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/auth/auth-master-connection.c:96,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:98,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/auth/auth-master-connection.c:99,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-master-connection.c:102,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-master-connection.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - conn
    - ATTR_UNUSED
    - message
    argTypes:
    - struct auth_master_connection*
    - enum log_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 104
    functionName: auth_master_event_log_callback
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - timeval_diff_msecs
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: char
    signature: "char *\nauth_master_event_log_callback(struct auth_master_connection
      *conn,\n\t\t\t       enum log_type log_type ATTR_UNUSED,\n\t\t\t       const
      char *message)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/auth/auth-master-connection.c:116,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-master-connection.c:116,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-master-connection.c:117,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-master-connection.c:118,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:119,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/auth/auth-master-connection.c:123,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-master-connection.c:124,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/auth/auth-master-connection.c:125,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:126,1
    - Dst: auth_client_connection_lookup
      Src: /src/dovecot/src/auth/auth-master-connection.c:131,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:133,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:136,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:137,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/auth/auth-master-connection.c:138,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:140,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:143,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:144,1
    - Dst: auth_request_handler_master_request
      Src: /src/dovecot/src/auth/auth-master-connection.c:145,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:148,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:151,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:152,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_master_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 155
    functionName: master_input_request
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - auth_client_connection_lookup
    - hex_to_binary
    - strlen
    - str_array_length
    - t_strdup_printf
    - auth_request_handler_master_request
    - mem_equals_timing_safe
    - e_error
    - buffer_create_from_data
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: "int master_input_request(struct auth_master_connection *conn,\n\t\t\t\t
      const char *const *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:164,1
    - Dst: auth_cache_clear
      Src: /src/dovecot/src/auth/auth-master-connection.c:173,1
    - Dst: auth_cache_clear_users
      Src: /src/dovecot/src/auth/auth-master-connection.c:175,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:177,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_master_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 157
    functionDepth: 4
    functionLinenumber: 157
    functionLinenumberEnd: 180
    functionName: master_input_cache_flush
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - auth_cache_clear_users
    - t_strdup_printf
    - e_error
    - auth_cache_clear
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: "int master_input_cache_flush(struct auth_master_connection *conn,\n\t\t\t\t
      \    const char *const *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-master-connection.c:193,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:194,1
    - Dst: auth_request_new
      Src: /src/dovecot/src/auth/auth-master-connection.c:198,1
    - Dst: auth_master_connection_ref
      Src: /src/dovecot/src/auth/auth-master-connection.c:201,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-master-connection.c:205,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-master-connection.c:210,1
    - Dst: auth_request_import_info
      Src: /src/dovecot/src/auth/auth-master-connection.c:214,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:218,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:220,1
    - Dst: auth_master_connection_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:221,1
    - Dst: auth_request_init
      Src: /src/dovecot/src/auth/auth-master-connection.c:225,1
    - Dst: auth_request_set_username
      Src: /src/dovecot/src/auth/auth-master-connection.c:227,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 5
    argNames:
    - conn
    - args
    - cmd
    - request_r
    - error_r
    argTypes:
    - struct auth_master_connection*
    - char**
    - char*
    - struct auth_request**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 233
    functionName: master_input_auth_request
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - auth_master_connection_ref
    - strchr
    - auth_request_import_info
    - e_error
    - auth_master_connection_unref
    - auth_request_new
    - auth_request_init
    - auth_request_unref
    - t_strdup_until
    - auth_request_set_username
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int master_input_auth_request(struct auth_master_connection *conn,\n\t\t\t\t
      \    const char *const *args, const char *cmd,\n\t\t\t\t     struct auth_request
      **request_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-master-connection.c:245,1
    - Dst: str_to_uid
      Src: /src/dovecot/src/auth/auth-master-connection.c:248,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:251,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-master-connection.c:253,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-master-connection.c:253,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:258,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 264
    functionName: user_verify_restricted_uid
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - dec2str
    - auth_fields_find
    - str_to_uid
    - t_strdup_printf
    - e_error
    linkageType: ''
    returnType: int
    signature: int user_verify_restricted_uid(struct auth_request *auth_request)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: user_verify_restricted_uid
      Src: /src/dovecot/src/auth/auth-master-connection.c:277,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-master-connection.c:281,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:284,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-master-connection.c:286,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:289,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:293,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:296,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-master-connection.c:297,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-master-connection.c:299,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-master-connection.c:300,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-master-connection.c:302,1
    - Dst: auth_fields_append
      Src: /src/dovecot/src/auth/auth-master-connection.c:304,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:307,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-master-connection.c:312,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-master-connection.c:317,1
    - Dst: auth_master_reply_hide_passwords
      Src: /src/dovecot/src/auth/auth-master-connection.c:318,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-master-connection.c:318,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-master-connection.c:320,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/auth/auth-master-connection.c:321,1
    - Dst: str_data
      Src: /src/dovecot/src/auth/auth-master-connection.c:321,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-master-connection.c:321,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:323,1
    - Dst: auth_master_connection_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:324,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - result
    - auth_request
    argTypes:
    - enum userdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 266
    functionDepth: 4
    functionLinenumber: 266
    functionLinenumberEnd: 325
    functionName: user_callback
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - auth_fields_append
    - auth_master_reply_hide_passwords
    - auth_fields_find
    - e_debug
    - str_data
    - str_len
    - user_verify_restricted_uid
    - auth_master_connection_unref
    - str_append_tabescaped
    - o_stream_nsend
    - auth_request_unref
    - str_append
    linkageType: ''
    returnType: void
    signature: "void user_callback(enum userdb_result result,\n\t\t\t  struct auth_request
      *auth_request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_input_auth_request
      Src: /src/dovecot/src/auth/auth-master-connection.c:334,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-master-connection.c:339,1
    - Dst: user_callback
      Src: /src/dovecot/src/auth/auth-master-connection.c:340,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-master-connection.c:342,1
    - Dst: auth_request_lookup_user
      Src: /src/dovecot/src/auth/auth-master-connection.c:343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_master_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 327
    functionDepth: 4
    functionLinenumber: 327
    functionLinenumberEnd: 346
    functionName: master_input_user
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - master_input_auth_request
    - e_info
    - auth_request_lookup_user
    - auth_request_set_state
    - user_callback
    linkageType: ''
    returnType: int
    signature: "int master_input_user(struct auth_master_connection *conn,\n\t\t\t
      \     const char *const *args)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-master-connection.c:354,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:358,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:361,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-master-connection.c:362,1
    - Dst: auth_fields_append
      Src: /src/dovecot/src/auth/auth-master-connection.c:363,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:369,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:374,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-master-connection.c:377,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-master-connection.c:384,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-master-connection.c:384,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-master-connection.c:386,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/auth/auth-master-connection.c:387,1
    - Dst: str_data
      Src: /src/dovecot/src/auth/auth-master-connection.c:387,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-master-connection.c:387,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:389,1
    - Dst: auth_master_connection_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:390,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - auth_request
    - result
    argTypes:
    - struct auth_request*
    - enum passdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 348
    functionDepth: 2
    functionLinenumber: 348
    functionLinenumberEnd: 391
    functionName: pass_callback_finish
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - auth_fields_append
    - str_append_c
    - str_data
    - str_len
    - e_debug
    - auth_master_connection_unref
    - str_append_tabescaped
    - o_stream_nsend
    - auth_request_unref
    linkageType: ''
    returnType: void
    signature: "void pass_callback_finish(struct auth_request *auth_request,\n\t\t\t\t
      enum passdb_result result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pass_callback_finish
      Src: /src/dovecot/src/auth/auth-master-connection.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - success
    - auth_request
    argTypes:
    - bool
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 393
    functionDepth: 3
    functionLinenumber: 393
    functionLinenumberEnd: 399
    functionName: auth_master_pass_proxy_finish
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - pass_callback_finish
    linkageType: ''
    returnType: void
    signature: "void auth_master_pass_proxy_finish(bool success,\n\t\t\t\t\t  struct
      auth_request *auth_request)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_proxy_finish_failure
      Src: /src/dovecot/src/auth/auth-master-connection.c:409,1
    - Dst: auth_request_proxy_finish
      Src: /src/dovecot/src/auth/auth-master-connection.c:411,1
    - Dst: pass_callback_finish
      Src: /src/dovecot/src/auth/auth-master-connection.c:418,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - result
    - credentials ATTR_UNUSED
    - ATTR_UNUSED
    - auth_request
    argTypes:
    - enum passdb_result
    - unsigned char*
    - size_t
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 401
    functionDepth: 3
    functionLinenumber: 401
    functionLinenumberEnd: 419
    functionName: pass_callback
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - auth_request_proxy_finish_failure
    - pass_callback_finish
    - auth_request_proxy_finish
    linkageType: ''
    returnType: void
    signature: "void pass_callback(enum passdb_result result,\n\t\t\t  const unsigned
      char *credentials ATTR_UNUSED,\n\t\t\t  size_t size ATTR_UNUSED,\n\t\t\t  struct
      auth_request *auth_request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_getpwuid
      Src: /src/dovecot/src/auth/auth-master-connection.c:426,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:429,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 434
    functionName: auth_restricted_reason
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - i_getpwuid
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *auth_restricted_reason(struct auth_master_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: master_input_auth_request
      Src: /src/dovecot/src/auth/auth-master-connection.c:443,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-master-connection.c:448,1
    - Dst: pass_callback
      Src: /src/dovecot/src/auth/auth-master-connection.c:449,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:453,1
    - Dst: auth_restricted_reason
      Src: /src/dovecot/src/auth/auth-master-connection.c:457,1
    - Dst: pass_callback
      Src: /src/dovecot/src/auth/auth-master-connection.c:458,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-master-connection.c:461,1
    - Dst: auth_request_lookup_credentials
      Src: /src/dovecot/src/auth/auth-master-connection.c:463,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_master_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 436
    functionDepth: 4
    functionLinenumber: 436
    functionLinenumberEnd: 467
    functionName: master_input_pass
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - master_input_auth_request
    - e_info
    - auth_restricted_reason
    - e_error
    - auth_request_set_state
    - auth_request_lookup_credentials
    - pass_callback
    linkageType: ''
    returnType: int
    signature: "int master_input_pass(struct auth_master_connection *conn,\n\t\t\t
      \     const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-master-connection.c:471,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/auth/auth-master-connection.c:474,1
    - Dst: userdb_blocking_iter_deinit
      Src: /src/dovecot/src/auth/auth-master-connection.c:477,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/auth/auth-master-connection.c:478,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/auth/auth-master-connection.c:479,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:480,1
    - Dst: auth_master_connection_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:481,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-master-connection.c:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct master_list_iter_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 483
    functionName: master_input_list_finish
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - o_stream_uncork
    - userdb_blocking_iter_deinit
    - o_stream_unset_flush_callback
    - auth_master_connection_unref
    - auth_request_unref
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void master_input_list_finish(struct master_list_iter_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/auth/auth-master-connection.c:489,1
    - Dst: master_input_list_finish
      Src: /src/dovecot/src/auth/auth-master-connection.c:490,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/auth/auth-master-connection.c:494,1
    - Dst: userdb_blocking_iter_next
      Src: /src/dovecot/src/auth/auth-master-connection.c:495,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct master_list_iter_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 498
    functionName: master_output_list
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - userdb_blocking_iter_next
    - o_stream_cork
    - master_input_list_finish
    linkageType: ''
    returnType: int
    signature: int master_output_list(struct master_list_iter_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-master-connection.c:507,1
    - Dst: auth_request_var_expand
      Src: /src/dovecot/src/auth/auth-master-connection.c:509,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:511,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-master-connection.c:511,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-master-connection.c:515,1
    - Dst: wildcard_match_icase
      Src: /src/dovecot/src/auth/auth-master-connection.c:518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - user
    - request
    - match_r
    argTypes:
    - char*
    - struct auth_request*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 520
    functionName: match_user
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - t_str_new
    - str_c
    - e_error
    - wildcard_match_icase
    - auth_request_var_expand
    linkageType: ''
    returnType: int
    signature: int match_user(const char *user, struct auth_request *request, bool
      *match_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: userdb_blocking_iter_deinit
      Src: /src/dovecot/src/auth/auth-master-connection.c:529,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:540,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:543,1
    - Dst: master_input_list_finish
      Src: /src/dovecot/src/auth/auth-master-connection.c:544,1
    - Dst: userdb_blocking_iter_init
      Src: /src/dovecot/src/auth/auth-master-connection.c:550,1
    - Dst: match_user
      Src: /src/dovecot/src/auth/auth-master-connection.c:558,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:561,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/auth/auth-master-connection.c:562,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:563,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - user
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 522
    functionDepth: 3
    functionLinenumber: 522
    functionLinenumberEnd: 565
    functionName: master_input_list_callback
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - userdb_blocking_iter_deinit
    - o_stream_send_str
    - t_strdup_printf
    - master_input_list_finish
    - str_tabescape
    - userdb_blocking_iter_init
    - o_stream_nsend_str
    - match_user
    linkageType: ''
    returnType: void
    signature: void master_input_list_callback(const char *user, void *context)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-master-connection.c:589,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:590,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:596,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:597,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:598,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:603,1
    - Dst: auth_restricted_reason
      Src: /src/dovecot/src/auth/auth-master-connection.c:605,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:606,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:607,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:614,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:616,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:617,1
    - Dst: auth_request_new
      Src: /src/dovecot/src/auth/auth-master-connection.c:621,1
    - Dst: auth_master_connection_ref
      Src: /src/dovecot/src/auth/auth-master-connection.c:624,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-master-connection.c:627,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-master-connection.c:632,1
    - Dst: auth_request_import_info
      Src: /src/dovecot/src/auth/auth-master-connection.c:636,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:637,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-master-connection.c:639,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-master-connection.c:645,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/auth-master-connection.c:647,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-master-connection.c:648,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-master-connection.c:649,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-master-connection.c:652,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/auth/auth-master-connection.c:656,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/auth/auth-master-connection.c:657,1
    - Dst: userdb_blocking_iter_init
      Src: /src/dovecot/src/auth/auth-master-connection.c:658,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 59
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct auth_master_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 579
    functionDepth: 4
    functionLinenumber: 579
    functionLinenumberEnd: 662
    functionName: master_input_list
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strdup_printf
    - str_to_uint
    - o_stream_set_flush_callback
    - connection_input_halt
    - i_unreached
    - auth_request_import_info
    - auth_request_import
    - e_error
    - userdb_blocking_iter_init
    - o_stream_nsend_str
    - i_assert
    - strcmp
    - auth_master_connection_ref
    - auth_restricted_reason
    - auth_request_set_username_forced
    - auth_request_new
    - t_strdup_until
    - i_new
    linkageType: ''
    returnType: int
    signature: "int master_input_list(struct auth_master_connection *conn,\n\t\t\t
      \     const char *const *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-master-connection.c:668,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-master-connection.c:670,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/auth-master-connection.c:670,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:672,1
    - Dst: master_input_user
      Src: /src/dovecot/src/auth/auth-master-connection.c:673,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:674,1
    - Dst: master_input_list
      Src: /src/dovecot/src/auth/auth-master-connection.c:675,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:676,1
    - Dst: master_input_pass
      Src: /src/dovecot/src/auth/auth-master-connection.c:677,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-master-connection.c:680,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:681,1
    - Dst: master_input_request
      Src: /src/dovecot/src/auth/auth-master-connection.c:682,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:683,1
    - Dst: master_input_cache_flush
      Src: /src/dovecot/src/auth/auth-master-connection.c:684,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:685,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:686,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:693,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/auth/auth-master-connection.c:695,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - _conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 664
    functionDepth: 5
    functionLinenumber: 664
    functionLinenumberEnd: 697
    functionName: auth_master_input_args
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - container_of
    - master_input_user
    - e_debug
    - t_strarray_join
    - master_input_pass
    - master_input_cache_flush
    - master_input_request
    - e_error
    - str_sanitize
    - i_assert
    - master_input_list
    linkageType: ''
    returnType: int
    signature: "int auth_master_input_args(struct connection *_conn,\n\t\t\t\t   const
      char *const *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-master-connection.c:702,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:703,1
    - Dst: str_array_length
      Src: /src/dovecot/src/auth/auth-master-connection.c:707,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-master-connection.c:708,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-master-connection.c:709,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-master-connection.c:710,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:711,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/auth-master-connection.c:712,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:714,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:723,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 699
    functionDepth: 1
    functionLinenumber: 699
    functionLinenumberEnd: 727
    functionName: auth_master_handshake_args
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strarray_join
    - str_array_length
    - e_error
    - str_to_uint
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int auth_master_handshake_args(struct connection *conn,\n\t\t\t\t
      \     const char *const *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connection_update_properties
      Src: /src/dovecot/src/auth/auth-master-connection.c:761,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-master-connection.c:763,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - st
    argTypes:
    - struct auth_master_connection*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 777
    functionName: auth_master_connection_set_permissions
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - connection_update_properties
    linkageType: ''
    returnType: int
    signature: "int auth_master_connection_set_permissions(struct auth_master_connection
      *conn,\n\t\t\t\t       const struct stat *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-master-connection.c:786,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/auth/auth-master-connection.c:790,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-master-connection.c:794,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/auth/auth-master-connection.c:800,1
    - Dst: event_set_log_message_callback
      Src: /src/dovecot/src/auth/auth-master-connection.c:803,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-master-connection.c:806,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-master-connection.c:809,1
    - Dst: auth_master_connection_set_permissions
      Src: /src/dovecot/src/auth/auth-master-connection.c:811,1
    - Dst: auth_master_connection_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:812,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 5
    argNames:
    - auth
    - fd
    - path
    - socket_st
    - userdb_only
    argTypes:
    - struct auth*
    - int
    - char*
    - struct stat*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 779
    functionDepth: 2
    functionLinenumber: 779
    functionLinenumberEnd: 816
    functionName: auth_master_connection_create
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    - event_set_log_message_callback
    - t_strdup_printf
    - connection_init_server
    - auth_master_connection_unref
    - i_new
    - auth_master_connection_set_permissions
    - o_stream_nsend_str
    - i_assert
    linkageType: ''
    returnType: struct auth_master_connection
    signature: "struct auth_master_connection *\nauth_master_connection_create(struct
      auth *auth, int fd, const char *path,\n\t\t\t      const struct stat *socket_st,
      bool userdb_only)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-master-connection.c:821,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/auth/auth-master-connection.c:826,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/auth/auth-master-connection.c:827,1
    - Dst: auth_master_connection_unref
      Src: /src/dovecot/src/auth/auth-master-connection.c:828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 818
    functionDepth: 3
    functionLinenumber: 818
    functionLinenumberEnd: 829
    functionName: auth_master_connection_destroy
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 0
    functionsReached:
    - auth_master_connection_unref
    - container_of
    - master_service_client_connection_destroyed
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void auth_master_connection_destroy(struct connection *_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-master-connection.c:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct auth_master_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 836
    functionName: auth_master_connection_ref
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void auth_master_connection_ref(struct auth_master_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-master-connection.c:843,1
    - Dst: auth_master_connection_destroy
      Src: /src/dovecot/src/auth/auth-master-connection.c:848,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/auth/auth-master-connection.c:849,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-master-connection.c:850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct auth_master_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 838
    functionDepth: 4
    functionLinenumber: 838
    functionLinenumberEnd: 851
    functionName: auth_master_connection_unref
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 7
    functionsReached:
    - i_assert
    - connection_deinit
    - auth_master_connection_destroy
    - i_free
    linkageType: ''
    returnType: void
    signature: void auth_master_connection_unref(struct auth_master_connection **_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/auth/auth-master-connection.c:856,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 853
    functionDepth: 1
    functionLinenumber: 853
    functionLinenumberEnd: 857
    functionName: auth_master_connections_destroy_all
    functionSourceFile: /src/dovecot/src/auth/auth-master-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void auth_master_connections_destroy_all(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-penalty.c:34,1
    - Dst: anvil_client_init
      Src: /src/dovecot/src/auth/auth-penalty.c:35,1
    - Dst: anvil_client_connect
      Src: /src/dovecot/src/auth/auth-penalty.c:37,1
    - Dst: anvil_client_cmd
      Src: /src/dovecot/src/auth/auth-penalty.c:40,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-penalty.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 30
    functionDepth: 5
    functionLinenumber: 30
    functionLinenumberEnd: 44
    functionName: auth_penalty_init
    functionSourceFile: /src/dovecot/src/auth/auth-penalty.c
    functionUses: 2
    functionsReached:
    - t_strdup_printf
    - anvil_client_init
    - anvil_client_cmd
    - anvil_client_connect
    - i_new
    linkageType: ''
    returnType: struct auth_penalty
    signature: struct auth_penalty *auth_penalty_init(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: anvil_client_deinit
      Src: /src/dovecot/src/auth/auth-penalty.c:51,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-penalty.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _penalty
    argTypes:
    - struct auth_penalty**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: auth_penalty_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-penalty.c
    functionUses: 2
    functionsReached:
    - i_free
    - anvil_client_deinit
    linkageType: ''
    returnType: void
    signature: void auth_penalty_deinit(struct auth_penalty **_penalty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - penalty
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: auth_penalty_to_secs
    functionSourceFile: /src/dovecot/src/auth/auth-penalty.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int auth_penalty_to_secs(unsigned int penalty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-penalty.c:74,1
    - Dst: anvil_client_is_connected
      Src: /src/dovecot/src/auth/auth-penalty.c:76,1
    - Dst: master_service_stop
      Src: /src/dovecot/src/auth/auth-penalty.c:79,1
    - Dst: sscanf
      Src: /src/dovecot/src/auth/auth-penalty.c:81,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-penalty.c:82,1
    - Dst: auth_penalty_to_secs
      Src: /src/dovecot/src/auth/auth-penalty.c:93,1
    - Dst: struct auth_penalty_request*::callback
      Src: /src/dovecot/src/auth/auth-penalty.c:101,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-penalty.c:102,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-penalty.c:103,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - reply
    - request
    argTypes:
    - struct anvil_reply*
    - struct auth_penalty_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 104
    functionName: auth_penalty_anvil_callback
    functionSourceFile: /src/dovecot/src/auth/auth-penalty.c
    functionUses: 0
    functionsReached:
    - master_service_stop
    - auth_penalty_to_secs
    - anvil_client_is_connected
    - struct auth_penalty_request*::callback
    - sscanf
    - e_error
    - auth_request_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: "void auth_penalty_anvil_callback(const struct anvil_reply *reply,\n\t\t\t
      \   struct auth_penalty_request *request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/auth/auth-penalty.c:112,1
    - Dst: memset
      Src: /src/dovecot/src/auth/auth-penalty.c:113,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-penalty.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 118
    functionName: auth_penalty_get_ident
    functionSourceFile: /src/dovecot/src/auth/auth-penalty.c
    functionUses: 0
    functionsReached:
    - memset
    - net_ip2addr
    - IPADDR_IS_V6
    linkageType: ''
    returnType: char
    signature: 'char *

      auth_penalty_get_ident(struct auth_request *auth_request)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_penalty_get_ident
      Src: /src/dovecot/src/auth/auth-penalty.c:127,1
    - Dst: callback
      Src: /src/dovecot/src/auth/auth-penalty.c:130,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-penalty.c:134,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-penalty.c:138,1
    - Dst: anvil_client_query
      Src: /src/dovecot/src/auth/auth-penalty.c:141,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-penalty.c:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - penalty
    - auth_request
    - callback
    argTypes:
    - struct auth_penalty*
    - struct auth_request*
    - auth_penalty_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 145
    functionName: auth_penalty_lookup
    functionSourceFile: /src/dovecot/src/auth/auth-penalty.c
    functionUses: 1
    functionsReached:
    - auth_request_ref
    - auth_penalty_get_ident
    - t_strdup_printf
    - i_new
    - callback
    - anvil_client_query
    linkageType: ''
    returnType: void
    signature: "void auth_penalty_lookup(struct auth_penalty *penalty,\n\t\t\t struct
      auth_request *auth_request,\n\t\t\t auth_penalty_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crc32_str_more
      Src: /src/dovecot/src/auth/auth-penalty.c:152,1
    - Dst: crc32_str
      Src: /src/dovecot/src/auth/auth-penalty.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: get_userpass_checksum
    functionSourceFile: /src/dovecot/src/auth/auth-penalty.c
    functionUses: 0
    functionsReached:
    - crc32_str
    - crc32_str_more
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int get_userpass_checksum(struct auth_request *auth_request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_penalty_get_ident
      Src: /src/dovecot/src/auth/auth-penalty.c:161,1
    - Dst: get_userpass_checksum
      Src: /src/dovecot/src/auth/auth-penalty.c:175,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-penalty.c:176,1
    - Dst: anvil_client_cmd
      Src: /src/dovecot/src/auth/auth-penalty.c:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - penalty
    - auth_request
    - value
    argTypes:
    - struct auth_penalty*
    - struct auth_request*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 156
    functionDepth: 5
    functionLinenumber: 156
    functionLinenumberEnd: 179
    functionName: auth_penalty_update
    functionSourceFile: /src/dovecot/src/auth/auth-penalty.c
    functionUses: 2
    functionsReached:
    - t_strdup_printf
    - get_userpass_checksum
    - auth_penalty_get_ident
    - anvil_client_cmd
    linkageType: ''
    returnType: void
    signature: "void auth_penalty_update(struct auth_penalty *penalty,\n\t\t\t struct
      auth_request *auth_request, unsigned int value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/userdb.c:21,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 26
    functionName: userdb_interface_find
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void userdb_interface_find(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: userdb_interface_find
      Src: /src/dovecot/src/auth/userdb.c:32,1
    - Dst: userdb_unregister_module
      Src: /src/dovecot/src/auth/userdb.c:35,1
    - Dst: i_panic
      Src: /src/dovecot/src/auth/userdb.c:37,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/userdb.c:40,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct userdb_module_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 41
    functionName: userdb_register_module
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 1
    functionsReached:
    - i_panic
    - userdb_interface_find
    - userdb_unregister_module
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void userdb_register_module(struct userdb_module_interface *iface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/auth/userdb.c:47,1
    - Dst: i_panic
      Src: /src/dovecot/src/auth/userdb.c:48,1
    - Dst: array_delete
      Src: /src/dovecot/src/auth/userdb.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct userdb_module_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: userdb_unregister_module
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 2
    functionsReached:
    - i_panic
    - array_delete
    - array_lsearch_ptr_idx
    linkageType: ''
    returnType: void
    signature: void userdb_unregister_module(struct userdb_module_interface *iface)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uid
      Src: /src/dovecot/src/auth/userdb.c:60,1
    - Dst: i_getpwnam
      Src: /src/dovecot/src/auth/userdb.c:63,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb.c:65,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb.c:65,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb.c:69,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - request
    - str
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 75
    functionName: userdb_parse_uid
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 1
    functionsReached:
    - i_getpwnam
    - str_to_uid
    - authdb_event
    - e_error
    linkageType: ''
    returnType: uid_t
    signature: uid_t userdb_parse_uid(struct auth_request *request, const char *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_to_gid
      Src: /src/dovecot/src/auth/userdb.c:85,1
    - Dst: i_getgrnam
      Src: /src/dovecot/src/auth/userdb.c:88,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb.c:90,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb.c:90,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb.c:94,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb.c:94,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - request
    - str
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 100
    functionName: userdb_parse_gid
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 1
    functionsReached:
    - str_to_gid
    - authdb_event
    - i_getgrnam
    - e_error
    linkageType: ''
    returnType: gid_t
    signature: gid_t userdb_parse_gid(struct auth_request *request, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_parse_key_and_fields
      Src: /src/dovecot/src/auth/userdb.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 7
    argNames:
    - module
    - userdb_params
    - pool
    - query
    - fields
    - exclude_driver
    - error_r
    argTypes:
    - struct userdb_module*
    - struct userdb_parameters*
    - pool_t
    - char*
    - ARRAY_TYPE*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 4
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: userdb_set_cache_key
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 0
    functionsReached:
    - auth_cache_parse_key_and_fields
    linkageType: ''
    returnType: int
    signature: "int userdb_set_cache_key(struct userdb_module *module,\n\t\t\t const
      struct userdb_parameters *userdb_params,\n\t\t\t pool_t pool, const char *query,\n\t\t\t
      const ARRAY_TYPE(const_string) *fields,\n\t\t\t const char *exclude_driver,
      const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: userdb_interface_find
      Src: /src/dovecot/src/auth/userdb.c:124,1
    - Dst: auth_module_load
      Src: /src/dovecot/src/auth/userdb.c:127,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/userdb.c:127,1
    - Dst: userdb_interface_find
      Src: /src/dovecot/src/auth/userdb.c:128,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/userdb.c:131,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/userdb.c:133,1
    - Dst: struct userdb_module_interface*::preinit
      Src: /src/dovecot/src/auth/userdb.c:141,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/userdb.c:142,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb.c:145,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/userdb.c:149,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - pool
    - event
    - set
    - use_cache
    argTypes:
    - pool_t
    - struct event*
    - struct auth_userdb_settings*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 151
    functionName: userdb_preinit
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 0
    functionsReached:
    - p_new
    - array_push_back
    - i_fatal
    - userdb_interface_find
    - auth_module_load
    - t_strconcat
    - struct userdb_module_interface*::preinit
    linkageType: ''
    returnType: struct userdb_module
    signature: "struct userdb_module *\nuserdb_preinit(pool_t pool, struct event *event,\n\t
      \      const struct auth_userdb_settings *set, bool use_cache)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct userdb_module*::iface::init
      Src: /src/dovecot/src/auth/userdb.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - userdb
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 158
    functionName: userdb_init
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 0
    functionsReached:
    - struct userdb_module*::iface::init
    linkageType: ''
    returnType: void
    signature: void userdb_init(struct userdb_module *userdb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/userdb.c:162,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/auth/userdb.c:168,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/userdb.c:169,1
    - Dst: array_delete
      Src: /src/dovecot/src/auth/userdb.c:170,1
    - Dst: struct userdb_module*::iface::deinit
      Src: /src/dovecot/src/auth/userdb.c:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - userdb
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 177
    functionName: userdb_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 0
    functionsReached:
    - array_delete
    - i_unreached
    - struct userdb_module*::iface::deinit
    - array_lsearch_ptr_idx
    - i_assert
    linkageType: ''
    returnType: void
    signature: void userdb_deinit(struct userdb_module *userdb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/userdb.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - result
    argTypes:
    - enum userdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 190
    functionName: userdb_result_to_string
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char *userdb_result_to_string(enum userdb_result result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/userdb.c:204,1
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/userdb.c:205,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/userdb.c:206,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/userdb.c:207,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/userdb.c:208,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/userdb.c:209,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/userdb.c:210,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/userdb.c:211,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/userdb.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 215
    functionName: userdbs_init
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - userdb_register_module
    linkageType: ''
    returnType: void
    signature: void userdbs_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/auth/userdb.c:219,1
    - Dst: array_free
      Src: /src/dovecot/src/auth/userdb.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 221
    functionName: userdbs_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb.c
    functionUses: 2
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void userdbs_deinit(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:33,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-sasl.c:39,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-sasl.c:40,1
    - Dst: auth_request_set_username
      Src: /src/dovecot/src/auth/auth-sasl.c:44,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl.c:45,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-sasl.c:50,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-sasl.c:54,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl.c:55,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-sasl.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-sasl.c:60,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl.c:62,1
    - Dst: auth_request_set_username
      Src: /src/dovecot/src/auth/auth-sasl.c:68,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl.c:69,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-sasl.c:74,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - rctx
    - authid_type
    - authid
    argTypes:
    - struct sasl_server_req_ctx*
    - enum sasl_server_authid_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 27
    functionDepth: 3
    functionLinenumber: 27
    functionLinenumberEnd: 75
    functionName: auth_sasl_request_set_authid
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - strchr
    - e_info
    - container_of
    - i_unreached
    - auth_request_set_username_forced
    - auth_request_set_username
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool auth_sasl_request_set_authid(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \    enum sasl_server_authid_type authid_type,\n\t\t\t     const char *authid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:82,1
    - Dst: auth_request_set_login_username
      Src: /src/dovecot/src/auth/auth-sasl.c:85,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rctx
    - authzid
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 90
    functionName: auth_sasl_request_set_authzid
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - e_info
    - container_of
    - auth_request_set_login_username
    linkageType: ''
    returnType: bool
    signature: "bool auth_sasl_request_set_authzid(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \     const char *authzid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:97,1
    - Dst: auth_request_set_realm
      Src: /src/dovecot/src/auth/auth-sasl.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rctx
    - realm
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 100
    functionName: auth_sasl_request_set_realm
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_request_set_realm
    - container_of
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_request_set_realm(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \   const char *realm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:107,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-sasl.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rctx
    - name
    - field_r
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 116
    functionName: auth_sasl_request_get_extra_field
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - container_of
    - auth_fields_find
    linkageType: ''
    returnType: bool
    signature: "bool auth_sasl_request_get_extra_field(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t  const char *name, const char **field_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:123,1
    - Dst: auth_request_start_channel_binding
      Src: /src/dovecot/src/auth/auth-sasl.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rctx
    - type
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: auth_sasl_request_start_channel_binding
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_request_start_channel_binding
    - container_of
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_request_start_channel_binding(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t\tconst char *type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:133,1
    - Dst: auth_request_accept_channel_binding
      Src: /src/dovecot/src/auth/auth-sasl.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rctx
    - data_r
    argTypes:
    - struct sasl_server_req_ctx*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 136
    functionName: auth_sasl_request_accept_channel_binding
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_request_accept_channel_binding
    - container_of
    linkageType: ''
    returnType: int
    signature: "int auth_sasl_request_accept_channel_binding(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t\t buffer_t **data_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:143,1
    - Dst: auth_request_internal_failure
      Src: /src/dovecot/src/auth/auth-sasl.c:147,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-sasl.c:150,1
    - Dst: auth_request_fail_with_reply
      Src: /src/dovecot/src/auth/auth-sasl.c:151,1
    - Dst: auth_request_fail_with_reply
      Src: /src/dovecot/src/auth/auth-sasl.c:155,1
    - Dst: auth_request_handler_reply_continue
      Src: /src/dovecot/src/auth/auth-sasl.c:159,1
    - Dst: sasl_server_mech_get_passdb_need
      Src: /src/dovecot/src/auth/auth-sasl.c:163,1
    - Dst: auth_request_success
      Src: /src/dovecot/src/auth/auth-sasl.c:167,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - rctx
    - output
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_server_output*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 170
    functionName: auth_sasl_request_output
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - e_info
    - container_of
    - auth_request_success
    - auth_request_handler_reply_continue
    - auth_request_fail_with_reply
    - auth_request_internal_failure
    - sasl_server_mech_get_passdb_need
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_request_output(struct sasl_server_req_ctx *rctx,\n\t\t\t
      const struct sasl_server_output *output)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-sasl.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - result
    argTypes:
    - enum passdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 193
    functionName: translate_result_status
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: enum sasl_passdb_result_status
    signature: enum sasl_passdb_result_status translate_result_status(enum passdb_result
      result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: translate_result_status
      Src: /src/dovecot/src/auth/auth-sasl.c:199,1
    - Dst: struct auth_request*::sasl::passdb_callback
      Src: /src/dovecot/src/auth/auth-sasl.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - status
    - request
    argTypes:
    - enum passdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 202
    functionName: verify_plain_callback
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 1
    functionsReached:
    - struct auth_request*::sasl::passdb_callback
    - translate_result_status
    linkageType: ''
    returnType: void
    signature: void verify_plain_callback(enum passdb_result status, struct auth_request
      *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:210,1
    - Dst: auth_request_verify_plain
      Src: /src/dovecot/src/auth/auth-sasl.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - rctx
    - password
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 214
    functionName: auth_sasl_request_verify_plain
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_request_verify_plain
    - container_of
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_request_verify_plain(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \      const char *password,\n\t\t\t       sasl_server_passdb_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: translate_result_status
      Src: /src/dovecot/src/auth/auth-sasl.c:222,1
    - Dst: struct auth_request*::sasl::passdb_callback
      Src: /src/dovecot/src/auth/auth-sasl.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - status
    - credentials
    - size
    - request
    argTypes:
    - enum passdb_result
    - unsigned char*
    - size_t
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 229
    functionName: lookup_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - struct auth_request*::sasl::passdb_callback
    - translate_result_status
    linkageType: ''
    returnType: void
    signature: "void lookup_credentials_callback(enum passdb_result status,\n\t\t\t
      \   const unsigned char *credentials, size_t size,\n\t\t\t    struct auth_request
      *request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:237,1
    - Dst: auth_request_lookup_credentials
      Src: /src/dovecot/src/auth/auth-sasl.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - rctx
    - scheme
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 242
    functionName: auth_sasl_request_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_request_lookup_credentials
    - container_of
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_request_lookup_credentials(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t     const char *scheme,\n\t\t\t\t     sasl_server_passdb_callback_t
      *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct auth_request*::sasl::passdb_callback
      Src: /src/dovecot/src/auth/auth-sasl.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - success
    - request
    argTypes:
    - bool
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 253
    functionName: set_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - struct auth_request*::sasl::passdb_callback
    linkageType: ''
    returnType: void
    signature: void set_credentials_callback(bool success, struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-sasl.c:261,1
    - Dst: auth_request_set_credentials
      Src: /src/dovecot/src/auth/auth-sasl.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - rctx
    - scheme
    - data
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 266
    functionName: auth_sasl_request_set_credentials
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - container_of
    - auth_request_set_credentials
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_request_set_credentials(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t  const char *scheme, const char *data,\n\t\t\t\t  sasl_server_passdb_callback_t
      *callback)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-sasl.c:290,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/auth-sasl.c:295,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/auth-sasl.c:300,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/auth-sasl.c:301,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/auth/auth-sasl.c:307,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 308
    functionName: auth_sasl_translate_protocol_name
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - t_str_lcase
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: char
    signature: 'char *

      auth_sasl_translate_protocol_name(struct auth_request *request)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_create
      Src: /src/dovecot/src/auth/auth-sasl.c:313,1
    - Dst: auth_sasl_translate_protocol_name
      Src: /src/dovecot/src/auth/auth-sasl.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - mech
    argTypes:
    - struct auth_request*
    - struct sasl_server_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 316
    functionName: auth_sasl_request_init
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_sasl_translate_protocol_name
    - sasl_server_request_create
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_request_init(struct auth_request *request,\n\t\t\t
      \   const struct sasl_server_mech *mech)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_request_destroy
      Src: /src/dovecot/src/auth/auth-sasl.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 4
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: auth_sasl_request_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_destroy
    linkageType: ''
    returnType: void
    signature: void auth_sasl_request_deinit(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-sasl.c:325,1
    - Dst: sasl_server_request_initial
      Src: /src/dovecot/src/auth/auth-sasl.c:326,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-sasl.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 323
    functionDepth: 3
    functionLinenumber: 323
    functionLinenumberEnd: 330
    functionName: auth_sasl_request_initial
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_initial
    - auth_request_ref
    - auth_request_unref
    linkageType: ''
    returnType: void
    signature: void auth_sasl_request_initial(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-sasl.c:335,1
    - Dst: sasl_server_request_input
      Src: /src/dovecot/src/auth/auth-sasl.c:336,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-sasl.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 332
    functionDepth: 3
    functionLinenumber: 332
    functionLinenumberEnd: 338
    functionName: auth_sasl_request_continue
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - sasl_server_request_input
    - auth_request_ref
    - auth_request_unref
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_request_continue(struct auth_request *request,\n\t\t\t\tconst
      unsigned char *data, size_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_ucase
      Src: /src/dovecot/src/auth/auth-sasl.c:361,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-sasl.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 367
    functionName: auth_sasl_mech_module_find
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    linkageType: ''
    returnType: struct auth_sasl_mech_module
    signature: 'struct auth_sasl_mech_module *

      auth_sasl_mech_module_find(const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-sasl.c:375,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-sasl.c:375,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/auth/auth-sasl.c:376,1
    - Dst: auth_sasl_mech_module_find
      Src: /src/dovecot/src/auth/auth-sasl.c:378,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-sasl.c:380,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-sasl.c:384,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/auth/auth-sasl.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct auth_sasl_mech_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 388
    functionName: auth_sasl_mech_register_module
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 1
    functionsReached:
    - strcmp
    - t_str_ucase
    - auth_sasl_mech_module_find
    - DLLIST_PREPEND
    - i_new
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_mech_register_module(\n\tconst struct auth_sasl_mech_module
      *module)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/auth/auth-sasl.c:399,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-sasl.c:400,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct auth_sasl_mech_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 403
    functionName: auth_sasl_mech_unregister_module
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - i_free
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_mech_unregister_module(\n\tconst struct auth_sasl_mech_module
      *module)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-sasl.c:415,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/auth/auth-sasl.c:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct auth_sasl_mech_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 420
    functionName: auth_sasl_mech_module_add_loaded
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - DLLIST2_APPEND
    - i_new
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mech_module_add_loaded(const struct auth_sasl_mech_module
      *module)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_ucase
      Src: /src/dovecot/src/auth/auth-sasl.c:426,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-sasl.c:428,1
    - Dst: auth_sasl_mech_module_add_loaded
      Src: /src/dovecot/src/auth/auth-sasl.c:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 434
    functionName: auth_sasl_mech_module_load
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    - auth_sasl_mech_module_add_loaded
    linkageType: ''
    returnType: bool
    signature: bool auth_sasl_mech_module_load(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-sasl.c:444,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-sasl.c:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 455
    functionName: auth_sasl_mechs_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mechs_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mech
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 469
    functionName: MECH_SIMPLE_REGISTER__TEMPLATE
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MECH_SIMPLE_REGISTER__TEMPLATE(mech)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_winbind_ntlm
      Src: /src/dovecot/src/auth/auth-sasl.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sasl_inst
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 482
    functionDepth: 6
    functionLinenumber: 482
    functionLinenumberEnd: 491
    functionName: mech_winbind_ntlm_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_register_winbind_ntlm
    linkageType: ''
    returnType: bool
    signature: "bool mech_winbind_ntlm_register(struct sasl_server_instance *sasl_inst,\n\t\t\t
      \  const struct auth_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_register_winbind_gss_spnego
      Src: /src/dovecot/src/auth/auth-sasl.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sasl_inst
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 493
    functionDepth: 6
    functionLinenumber: 493
    functionLinenumberEnd: 502
    functionName: mech_winbind_gss_spnego_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_register_winbind_gss_spnego
    linkageType: ''
    returnType: bool
    signature: "bool mech_winbind_gss_spnego_register(struct sasl_server_instance
      *sasl_inst,\n\t\t\t\t const struct auth_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_register_apop
      Src: /src/dovecot/src/auth/auth-sasl.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sasl_inst
    - ATTR_UNUSED
    argTypes:
    - struct sasl_server_instance*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 504
    functionDepth: 5
    functionLinenumber: 504
    functionLinenumberEnd: 510
    functionName: mech_apop_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_sasl_mech_register_apop
    linkageType: ''
    returnType: bool
    signature: "bool mech_apop_register(struct sasl_server_instance *sasl_inst,\n\t\t
      \  const struct auth_settings *set ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:598,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:599,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:600,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:601,1
    - Dst: auth_sasl_mech_gssapi_register
      Src: /src/dovecot/src/auth/auth-sasl.c:603,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:606,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:611,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:613,1
    - Dst: auth_sasl_mech_oauth2_register
      Src: /src/dovecot/src/auth/auth-sasl.c:614,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:615,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:616,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:617,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:618,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:619,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:620,1
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl.c:622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 596
    functionDepth: 3
    functionLinenumber: 596
    functionLinenumberEnd: 623
    functionName: auth_sasl_mechs_init
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_sasl_mech_oauth2_register
    - auth_sasl_mech_register_module
    - auth_sasl_mech_gssapi_register
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mechs_init(const struct auth_settings *set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 625
    functionDepth: 0
    functionLinenumber: 625
    functionLinenumberEnd: 628
    functionName: auth_sasl_mechs_get_handshake
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *auth_sasl_mechs_get_handshake(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 633
    functionName: auth_sasl_mechs_get_handshake_cbind
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *auth_sasl_mechs_get_handshake_cbind(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/auth/auth-sasl.c:643,1
    - Dst: sasl_server_instance_create
      Src: /src/dovecot/src/auth/auth-sasl.c:649,1
    - Dst: struct auth_sasl_mech_module*::mech_register
      Src: /src/dovecot/src/auth/auth-sasl.c:658,1
    - Dst: auth_sasl_mech_register_dovecot_token
      Src: /src/dovecot/src/auth/auth-sasl.c:662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - auth
    - set
    argTypes:
    - struct auth*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 639
    functionDepth: 5
    functionLinenumber: 639
    functionLinenumberEnd: 663
    functionName: auth_sasl_instance_init
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - struct auth_sasl_mech_module*::mech_register
    - auth_sasl_mech_register_dovecot_token
    - sasl_server_instance_create
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_instance_init(struct auth *auth,\n\t\t\t     const
      struct auth_settings *set)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: auth_passdb_list_have_verify_plain
      Src: /src/dovecot/src/auth/auth-sasl.c:673,1
    - Dst: auth_passdb_list_have_lookup_credentials
      Src: /src/dovecot/src/auth/auth-sasl.c:678,1
    - Dst: auth_passdb_list_have_lookup_credentials
      Src: /src/dovecot/src/auth/auth-sasl.c:682,1
    - Dst: auth_passdb_list_have_set_credentials
      Src: /src/dovecot/src/auth/auth-sasl.c:684,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - auth
    - passdb_need
    argTypes:
    - struct auth*
    - enum sasl_mech_passdb_need
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 689
    functionName: auth_sasl_mech_verify_passdb
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - auth_passdb_list_have_lookup_credentials
    - auth_passdb_list_have_set_credentials
    - auth_passdb_list_have_verify_plain
    linkageType: ''
    returnType: bool
    signature: "bool auth_sasl_mech_verify_passdb(const struct auth *auth,\n\t\t\t
      \    enum sasl_mech_passdb_need passdb_need)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_instance_mech_iter_new
      Src: /src/dovecot/src/auth/auth-sasl.c:695,1
    - Dst: sasl_server_mech_iter_next
      Src: /src/dovecot/src/auth/auth-sasl.c:696,1
    - Dst: auth_sasl_mech_verify_passdb
      Src: /src/dovecot/src/auth/auth-sasl.c:697,1
    - Dst: sasl_server_mech_iter_ended
      Src: /src/dovecot/src/auth/auth-sasl.c:701,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-sasl.c:703,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-sasl.c:707,1
    - Dst: sasl_server_mech_iter_free
      Src: /src/dovecot/src/auth/auth-sasl.c:711,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 691
    functionDepth: 2
    functionLinenumber: 691
    functionLinenumberEnd: 712
    functionName: auth_sasl_instance_verify
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_iter_next
    - i_fatal
    - auth_sasl_mech_verify_passdb
    - sasl_server_instance_mech_iter_new
    - sasl_server_mech_iter_ended
    - sasl_server_mech_iter_free
    linkageType: ''
    returnType: void
    signature: void auth_sasl_instance_verify(const struct auth *auth)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct auth_sasl_mech_module*::mech_unregister
      Src: /src/dovecot/src/auth/auth-sasl.c:723,1
    - Dst: sasl_server_instance_unref
      Src: /src/dovecot/src/auth/auth-sasl.c:726,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 714
    functionDepth: 2
    functionLinenumber: 714
    functionLinenumberEnd: 727
    functionName: auth_sasl_instance_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - struct auth_sasl_mech_module*::mech_unregister
    - sasl_server_instance_unref
    linkageType: ''
    returnType: void
    signature: void auth_sasl_instance_deinit(struct auth *auth)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-sasl.c:736,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-sasl.c:737,1
    - Dst: sasl_server_mech_iter_new
      Src: /src/dovecot/src/auth/auth-sasl.c:739,1
    - Dst: sasl_server_mech_iter_next
      Src: /src/dovecot/src/auth/auth-sasl.c:740,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-sasl.c:748,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:750,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:752,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:754,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:756,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:758,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:760,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:762,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:764,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-sasl.c:765,1
    - Dst: sasl_server_mech_iter_free
      Src: /src/dovecot/src/auth/auth-sasl.c:767,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/auth-sasl.c:769,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-sasl.c:769,1
    - Dst: i_strdup
      Src: /src/dovecot/src/auth/auth-sasl.c:770,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-sasl.c:770,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 733
    functionDepth: 2
    functionLinenumber: 733
    functionLinenumberEnd: 771
    functionName: auth_sasl_mechs_handshake_init
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_iter_next
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - sasl_server_mech_iter_free
    - i_strdup
    - sasl_server_mech_iter_new
    - str_append
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mechs_handshake_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-sasl.c:775,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-sasl.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 777
    functionName: auth_sasl_mechs_handshake_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mechs_handshake_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-sasl.c:781,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-sasl.c:783,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-sasl.c:786,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-sasl.c:788,1
    - Dst: i_tolower
      Src: /src/dovecot/src/auth/auth-sasl.c:788,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-sasl.c:790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 791
    functionName: auth_sasl_mech_get_plugin_name
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_append
    - i_tolower
    linkageType: ''
    returnType: char
    signature: char *auth_sasl_mech_get_plugin_name(const char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_oauth2_initialize
      Src: /src/dovecot/src/auth/auth-sasl.c:795,1
    - Dst: sasl_server_init
      Src: /src/dovecot/src/auth/auth-sasl.c:796,1
    - Dst: auth_sasl_mechs_init
      Src: /src/dovecot/src/auth/auth-sasl.c:799,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/auth-sasl.c:803,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-sasl.c:804,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth-sasl.c:806,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/auth/auth-sasl.c:807,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-sasl.c:809,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-sasl.c:811,1
    - Dst: auth_sasl_mech_module_load
      Src: /src/dovecot/src/auth/auth-sasl.c:815,1
    - Dst: auth_module_load
      Src: /src/dovecot/src/auth/auth-sasl.c:817,1
    - Dst: auth_sasl_mech_get_plugin_name
      Src: /src/dovecot/src/auth/auth-sasl.c:817,1
    - Dst: auth_sasl_mech_module_load
      Src: /src/dovecot/src/auth/auth-sasl.c:819,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-sasl.c:820,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-sasl.c:824,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 793
    functionDepth: 4
    functionLinenumber: 793
    functionLinenumberEnd: 825
    functionName: auth_sasl_preinit
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 2
    functionsReached:
    - strcmp
    - auth_sasl_mechs_init
    - t_str_ucase
    - auth_sasl_mech_get_plugin_name
    - array_foreach_elem
    - i_fatal
    - array_is_empty
    - auth_sasl_oauth2_initialize
    - auth_module_load
    - sasl_server_init
    - auth_sasl_mech_module_load
    linkageType: ''
    returnType: void
    signature: void auth_sasl_preinit(const struct auth_settings *set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mechs_handshake_init
      Src: /src/dovecot/src/auth/auth-sasl.c:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 827
    functionDepth: 3
    functionLinenumber: 827
    functionLinenumberEnd: 830
    functionName: auth_sasl_init
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 2
    functionsReached:
    - auth_sasl_mechs_handshake_init
    linkageType: ''
    returnType: void
    signature: void auth_sasl_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_deinit
      Src: /src/dovecot/src/auth/auth-sasl.c:834,1
    - Dst: auth_sasl_mechs_deinit
      Src: /src/dovecot/src/auth/auth-sasl.c:835,1
    - Dst: auth_sasl_mechs_handshake_deinit
      Src: /src/dovecot/src/auth/auth-sasl.c:836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 832
    functionDepth: 2
    functionLinenumber: 832
    functionLinenumberEnd: 837
    functionName: auth_sasl_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-sasl.c
    functionUses: 2
    functionsReached:
    - auth_sasl_mechs_handshake_deinit
    - sasl_server_deinit
    - auth_sasl_mechs_deinit
    linkageType: ''
    returnType: void
    signature: void auth_sasl_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:63,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - string
    - request
    argTypes:
    - char*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: test_escape
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - t_strdup_noconst
    - test_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      test_escape(const char *string, const struct auth_request *request)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:76,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:81,1
    - Dst: var_expand
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:81,1
    - Dst: strspn
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:82,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:82,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - str
    - input
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 83
    functionName: test_empty_request
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - auth_request_get_var_expand_table
    - strspn
    - str_truncate
    - test_assert
    - var_expand
    linkageType: ''
    returnType: bool
    signature: bool test_empty_request(string_t *str, const char *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:98,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:101,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:109,1
    - Dst: var_expand
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:109,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:110,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:113,1
    - Dst: test_empty_request
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:113,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 85
    functionDepth: 3
    functionLinenumber: 85
    functionLinenumberEnd: 116
    functionName: test_auth_request_var_expand_keys
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - auth_request_get_var_expand_table
    - test_assert_strcmp
    - test_end
    - test_empty_request
    - test_assert
    - var_expand
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_request_var_expand_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:121,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:124,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:135,1
    - Dst: var_expand
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:135,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:136,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:136,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:141,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:144,1
    - Dst: var_expand
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:144,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:145,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:147,1
    - Dst: test_empty_request
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:147,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 149
    functionName: test_auth_request_var_expand_flags
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - auth_request_get_var_expand_table
    - test_assert_strcmp
    - test_end
    - test_empty_request
    - str_truncate
    - test_assert
    - var_expand
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_request_var_expand_flags(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:165,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:168,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:176,1
    - Dst: var_expand
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:176,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:177,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:179,1
    - Dst: test_empty_request
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:179,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 181
    functionName: test_auth_request_var_expand_long
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - auth_request_get_var_expand_table
    - test_assert_strcmp
    - test_end
    - test_empty_request
    - test_assert
    - var_expand
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_request_var_expand_long(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:194,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:198,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:199,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:200,1
    - Dst: auth_request_get_var_expand_table
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:202,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:207,1
    - Dst: var_expand
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:207,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:208,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:208,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:208,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 212
    functionName: test_auth_request_var_expand_usernames
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - auth_request_get_var_expand_table
    - test_begin
    - test_end
    - str_truncate
    - test_assert
    - var_expand
    - N_ELEMENTS
    - t_strdup_noconst
    linkageType: ''
    returnType: void
    signature: void test_auth_request_var_expand_usernames(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:219,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:221,1
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:222,1
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:223,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:225,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:226,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:228,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:231,1
    - Dst: t_auth_request_var_expand
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:231,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:239,1
    - Dst: t_auth_request_var_expand
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:239,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:245,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:246,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 214
    functionDepth: 3
    functionLinenumber: 214
    functionLinenumberEnd: 248
    functionName: test_auth_request_var_expand_funcs
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - t_auth_request_var_expand
    - pool_alloconly_create
    - auth_fields_init
    - auth_fields_add
    - test_assert_strcmp
    - pool_unref
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_request_var_expand_funcs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:252,1
    - Dst: htonl
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:253,1
    - Dst: htonl
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:254,1
    - Dst: htonl
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:255,1
    - Dst: test_auth_request_var_expand_keys
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:259,1
    - Dst: test_auth_request_var_expand_flags
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:260,1
    - Dst: test_auth_request_var_expand_long
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:261,1
    - Dst: test_auth_request_var_expand_usernames
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:262,1
    - Dst: test_auth_request_var_expand_funcs
      Src: /src/dovecot/src/auth/test-auth-request-var-expand.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 264
    functionName: test_auth_request_var_expand
    functionSourceFile: /src/dovecot/src/auth/test-auth-request-var-expand.c
    functionUses: 0
    functionsReached:
    - test_auth_request_var_expand_flags
    - htonl
    - test_auth_request_var_expand_funcs
    - test_auth_request_var_expand_long
    - test_auth_request_var_expand_usernames
    - test_auth_request_var_expand_keys
    linkageType: ''
    returnType: void
    signature: void test_auth_request_var_expand(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/test-auth-master-server.c:14,1
    - Dst: auth_default_protocol
      Src: /src/dovecot/src/auth/test-auth-master-server.c:15,1
    - Dst: net_accept
      Src: /src/dovecot/src/auth/test-auth-master-server.c:16,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/test-auth-master-server.c:17,1
    - Dst: auth_master_connection_create
      Src: /src/dovecot/src/auth/test-auth-master-server.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - server_fd
    - socket
    argTypes:
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 19
    functionName: auth_master_server_connected
    functionSourceFile: /src/dovecot/src/auth/test-auth-master-server.c
    functionUses: 1
    functionsReached:
    - i_zero
    - auth_default_protocol
    - auth_master_connection_create
    - net_accept
    - i_assert
    linkageType: ''
    returnType: void
    signature: void auth_master_server_connected(int *server_fd, const char *socket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_connections_destroy_all
      Src: /src/dovecot/src/auth/test-auth-master-server.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: auth_master_server_deinit
    functionSourceFile: /src/dovecot/src/auth/test-auth-master-server.c
    functionUses: 1
    functionsReached:
    - auth_master_connections_destroy_all
    linkageType: ''
    returnType: void
    signature: void auth_master_server_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:71,1
    - Dst: auth_worker_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:74,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/auth/auth-worker-connection.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct auth_worker_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 77
    functionName: auth_worker_idle_timeout
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - timeout_reset
    - i_assert
    - auth_worker_deinit
    linkageType: ''
    returnType: void
    signature: void auth_worker_idle_timeout(struct auth_worker_connection *worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:81,1
    - Dst: auth_worker_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct auth_worker_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: auth_worker_call_timeout
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - auth_worker_deinit
    linkageType: ''
    returnType: void
    signature: void auth_worker_call_timeout(struct auth_worker_connection *worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:92,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:95,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/auth-worker-connection.c:98,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-connection.c:101,1
    - Dst: struct auth_worker_request*::callback
      Src: /src/dovecot/src/auth/auth-worker-connection.c:104,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/auth-worker-connection.c:111,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/auth-worker-connection.c:114,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-connection.c:119,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-worker-connection.c:120,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-worker-connection.c:122,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/auth/auth-worker-connection.c:126,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:128,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-worker-connection.c:131,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-worker-connection.c:132,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - worker
    - request
    argTypes:
    - struct auth_worker_connection*
    - struct auth_worker_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 138
    functionName: auth_worker_request_send
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - aqueue_count
    - struct auth_worker_request*::callback
    - strlen
    - t_strdup_printf
    - timeout_add
    - e_error
    - e_warning
    - o_stream_nsendv
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_request_send(struct auth_worker_connection *worker,\n\t\t\t\t
      \    struct auth_worker_request *request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/auth-worker-connection.c:145,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/auth/auth-worker-connection.c:148,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/auth-worker-connection.c:149,1
    - Dst: aqueue_delete_tail
      Src: /src/dovecot/src/auth/auth-worker-connection.c:150,1
    - Dst: auth_worker_request_send
      Src: /src/dovecot/src/auth/auth-worker-connection.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct auth_worker_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 152
    functionName: auth_worker_request_send_next
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - aqueue_count
    - auth_worker_request_send
    - array_idx_elem
    - aqueue_idx
    - aqueue_delete_tail
    linkageType: ''
    returnType: void
    signature: void auth_worker_request_send_next(struct auth_worker_connection *worker)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/auth/auth-worker-connection.c:158,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-connection.c:163,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-connection.c:164,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:166,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-worker-connection.c:172,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:177,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 182
    functionName: auth_worker_handshake_args
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_to_uint
    - e_debug
    - e_error
    - connection_handshake_args_default
    linkageType: ''
    returnType: int
    signature: "int auth_worker_handshake_args(struct connection *conn,\n\t\t\t\t
      \     const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-connection.c:195,1
    - Dst: auth_passdbs_generate_md5
      Src: /src/dovecot/src/auth/auth-worker-connection.c:197,1
    - Dst: auth_userdbs_generate_md5
      Src: /src/dovecot/src/auth/auth-worker-connection.c:198,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-connection.c:199,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/auth/auth-worker-connection.c:200,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-connection.c:201,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/auth/auth-worker-connection.c:202,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-connection.c:203,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/auth/auth-worker-connection.c:205,1
    - Dst: str_data
      Src: /src/dovecot/src/auth/auth-worker-connection.c:205,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-worker-connection.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 206
    functionName: auth_worker_connection_connected
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - str_data
    - auth_passdbs_generate_md5
    - str_len
    - o_stream_nsend
    - str_append
    - auth_userdbs_generate_md5
    - binary_to_hex_append
    linkageType: ''
    returnType: void
    signature: "void auth_worker_connection_connected(struct connection *conn,\n\t\t\t\t\t
      \    bool success)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-worker-connection.c:211,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-connection.c:219,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/auth/auth-worker-connection.c:220,1
    - Dst: auth_worker_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 224
    functionName: auth_worker_destroy
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - t_strdup_printf
    - auth_worker_deinit
    - connection_disconnect_reason
    linkageType: ''
    returnType: void
    signature: void auth_worker_destroy(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-worker-connection.c:234,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/auth/auth-worker-connection.c:237,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/auth/auth-worker-connection.c:239,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:240,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:243,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-worker-connection.c:244,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/auth/auth-worker-connection.c:248,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-worker-connection.c:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 255
    functionName: auth_worker_create
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - connection_client_connect
    - connection_init_client_unix
    - event_set_append_log_prefix
    - timeout_add
    - e_error
    - i_new
    - i_free
    - connection_deinit
    linkageType: ''
    returnType: struct auth_worker_connection
    signature: struct auth_worker_connection *auth_worker_create(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:265,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:266,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:273,1
    - Dst: t_strcut
      Src: /src/dovecot/src/auth/auth-worker-connection.c:274,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-connection.c:278,1
    - Dst: struct auth_worker_connection*::request::callback
      Src: /src/dovecot/src/auth/auth-worker-connection.c:281,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-worker-connection.c:284,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:285,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-worker-connection.c:287,1
    - Dst: auth_worker_create
      Src: /src/dovecot/src/auth/auth-worker-connection.c:290,1
    - Dst: auth_worker_request_send_next
      Src: /src/dovecot/src/auth/auth-worker-connection.c:292,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - _worker
    - reason
    - restart
    argTypes:
    - struct auth_worker_connection**
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 294
    functionName: auth_worker_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 3
    functionsReached:
    - connection_deinit
    - auth_worker_request_send_next
    - auth_worker_create
    - i_free
    - t_strdup_printf
    - e_error
    - struct auth_worker_connection*::request::callback
    - i_assert
    - t_strcut
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void auth_worker_deinit(struct auth_worker_connection **_worker,\n\t\t\t
      \      const char *reason, bool restart)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-worker-connection.c:304,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-worker-connection.c:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 312
    functionName: auth_worker_find_free
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_unreached
    linkageType: ''
    returnType: struct auth_worker_connection
    signature: struct auth_worker_connection *auth_worker_find_free(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/auth/auth-worker-connection.c:324,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-worker-connection.c:327,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-worker-connection.c:328,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-worker-connection.c:335,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-worker-connection.c:336,1
    - Dst: struct auth_worker_request*::callback
      Src: /src/dovecot/src/auth/auth-worker-connection.c:341,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-worker-connection.c:343,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/auth/auth-worker-connection.c:344,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - worker
    - args
    argTypes:
    - struct auth_worker_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 348
    functionName: auth_worker_request_handle
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_halt
    - timeout_add
    - timeout_reset
    - struct auth_worker_request*::callback
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: "int auth_worker_request_handle(struct auth_worker_connection *worker,\n\t\t\t\t
      \     const char *const *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:356,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:366,1
    - Dst: auth_worker_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:371,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct auth_worker_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 350
    functionDepth: 4
    functionLinenumber: 350
    functionLinenumberEnd: 373
    functionName: auth_worker_error
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - auth_worker_deinit
    linkageType: ''
    returnType: bool
    signature: bool auth_worker_error(struct auth_worker_connection *worker)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:380,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-connection.c:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct auth_worker_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 391
    functionName: auth_worker_success
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void auth_worker_success(struct auth_worker_connection *worker)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-worker-connection.c:396,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-connection.c:398,1
    - Dst: auth_worker_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:399,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-connection.c:402,1
    - Dst: auth_worker_success
      Src: /src/dovecot/src/auth/auth-worker-connection.c:403,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-connection.c:405,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-connection.c:408,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-connection.c:415,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:416,1
    - Dst: auth_worker_request_handle
      Src: /src/dovecot/src/auth/auth-worker-connection.c:422,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:425,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-connection.c:429,1
    - Dst: auth_worker_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:433,1
    - Dst: auth_worker_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:440,1
    - Dst: auth_worker_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:443,1
    - Dst: auth_worker_request_send_next
      Src: /src/dovecot/src/auth/auth-worker-connection.c:446,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 393
    functionDepth: 5
    functionLinenumber: 393
    functionLinenumberEnd: 451
    functionName: worker_input_args
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - auth_worker_request_send_next
    - container_of
    - e_error
    - auth_worker_request_handle
    - str_to_uint
    - auth_worker_success
    - auth_worker_deinit
    - auth_worker_error
    linkageType: ''
    returnType: int
    signature: int worker_input_args(struct connection *conn, const char *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-worker-connection.c:456,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-worker-connection.c:457,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/auth/auth-worker-connection.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct auth_worker_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 460
    functionName: worker_input_resume
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - timeout_add
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void worker_input_resume(struct auth_worker_connection *worker)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-worker-connection.c:488,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-worker-connection.c:490,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-worker-connection.c:491,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/auth-worker-connection.c:495,1
    - Dst: auth_worker_find_free
      Src: /src/dovecot/src/auth/auth-worker-connection.c:500,1
    - Dst: auth_worker_create
      Src: /src/dovecot/src/auth/auth-worker-connection.c:503,1
    - Dst: auth_worker_request_send
      Src: /src/dovecot/src/auth/auth-worker-connection.c:507,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-worker-connection.c:508,1
    - Dst: aqueue_append
      Src: /src/dovecot/src/auth/auth-worker-connection.c:511,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - pool
    - username
    - data
    - callback
    - context
    argTypes:
    - pool_t
    - char*
    - char*
    - auth_worker_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 513
    functionName: auth_worker_call
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 4
    functionsReached:
    - p_strdup
    - auth_worker_create
    - p_new
    - i_unreached
    - aqueue_append
    - aqueue_count
    - auth_worker_request_send
    - auth_worker_find_free
    linkageType: ''
    returnType: void
    signature: "void auth_worker_call(pool_t pool, const char *username, const char
      *data,\n\t\t      auth_worker_callback_t *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-worker-connection.c:524,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/auth/auth-worker-connection.c:525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct auth_worker_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 527
    functionName: auth_worker_connection_resume_input
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_worker_connection_resume_input(struct auth_worker_connection
      *worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/auth-worker-connection.c:533,1
    - Dst: aqueue_init
      Src: /src/dovecot/src/auth/auth-worker-connection.c:534,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/auth/auth-worker-connection.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 538
    functionName: auth_worker_connection_init
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - connection_list_init
    - aqueue_init
    linkageType: ''
    returnType: void
    signature: void auth_worker_connection_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:542,1
    - Dst: aqueue_deinit
      Src: /src/dovecot/src/auth/auth-worker-connection.c:544,1
    - Dst: array_free
      Src: /src/dovecot/src/auth/auth-worker-connection.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 546
    functionName: auth_worker_connection_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-worker-connection.c
    functionUses: 1
    functionsReached:
    - aqueue_deinit
    - array_free
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void auth_worker_connection_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_gssapi_settings_init
      Src: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c:19,1
    - Dst: sasl_server_mech_register_gss_spnego
      Src: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - sasl_inst
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 22
    functionName: mech_gss_spnego_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_register_gss_spnego
    - auth_sasl_mech_gssapi_settings_init
    linkageType: ''
    returnType: bool
    signature: "bool mech_gss_spnego_register(struct sasl_server_instance *sasl_inst,\n\t\t\t
      const struct auth_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_unregister_gss_spnego
      Src: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sasl_inst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: mech_gss_spnego_unregister
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_unregister_gss_spnego
    linkageType: ''
    returnType: void
    signature: void mech_gss_spnego_unregister(struct sasl_server_instance *sasl_inst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: auth_sasl_mech_gss_spnego_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c
    functionUses: 0
    functionsReached:
    - auth_sasl_mech_register_module
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mech_gss_spnego_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 3
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: mech_gss_spnego_init
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c
    functionUses: 0
    functionsReached:
    - auth_sasl_mech_register_module
    linkageType: ''
    returnType: void
    signature: void mech_gss_spnego_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_unregister_module
      Src: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: mech_gss_spnego_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gss-spnego.c
    functionUses: 0
    functionsReached:
    - auth_sasl_mech_unregister_module
    linkageType: ''
    returnType: void
    signature: void mech_gss_spnego_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_gssapi_settings_init
      Src: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c:15,1
    - Dst: sasl_server_mech_register_gssapi
      Src: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - sasl_inst
    - set
    argTypes:
    - struct sasl_server_instance*
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 18
    functionName: mech_gssapi_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c
    functionUses: 3
    functionsReached:
    - sasl_server_mech_register_gssapi
    - auth_sasl_mech_gssapi_settings_init
    linkageType: ''
    returnType: bool
    signature: "bool mech_gssapi_register(struct sasl_server_instance *sasl_inst,\n\t\t
      \    const struct auth_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_unregister_gssapi
      Src: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sasl_inst
    argTypes:
    - struct sasl_server_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: mech_gssapi_unregister
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_unregister_gssapi
    linkageType: ''
    returnType: void
    signature: void mech_gssapi_unregister(struct sasl_server_instance *sasl_inst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: auth_sasl_mech_gssapi_register
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c
    functionUses: 1
    functionsReached:
    - auth_sasl_mech_register_module
    linkageType: ''
    returnType: void
    signature: void auth_sasl_mech_gssapi_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_register_module
      Src: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: mech_gssapi_init
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - auth_sasl_mech_register_module
    linkageType: ''
    returnType: void
    signature: void mech_gssapi_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_mech_unregister_module
      Src: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: mech_gssapi_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-mech-gssapi.c
    functionUses: 0
    functionsReached:
    - auth_sasl_mech_unregister_module
    linkageType: ''
    returnType: void
    signature: void mech_gssapi_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/passdb-sql.c:65,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/auth/passdb-sql.c:69,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/auth/passdb-sql.c:71,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/auth/passdb-sql.c:72,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/passdb-sql.c:77,1
    - Dst: auth_request_set_null_field
      Src: /src/dovecot/src/auth/passdb-sql.c:81,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-sql.c:83,1
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-sql.c:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - result
    - sql_request
    argTypes:
    - struct sql_result*
    - struct passdb_sql_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 88
    functionName: sql_query_save_results
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - sql_result_get_field_name
    - sql_result_get_fields_count
    - auth_fields_init
    - auth_fields_add
    - sql_result_get_field_value
    - auth_request_set_field
    - auth_request_set_null_field
    - auth_request_set_passdb_fields
    linkageType: ''
    returnType: int
    signature: "int sql_query_save_results(struct sql_result *result,\n\t\t\t\t  struct
      passdb_sql_request *sql_request)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/auth/passdb-sql.c:102,1
    - Dst: db_sql_success
      Src: /src/dovecot/src/auth/passdb-sql.c:104,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-sql.c:106,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:106,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/auth/passdb-sql.c:107,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/passdb-sql.c:109,1
    - Dst: sql_query_save_results
      Src: /src/dovecot/src/auth/passdb-sql.c:111,1
    - Dst: sql_result_find_field
      Src: /src/dovecot/src/auth/passdb-sql.c:118,1
    - Dst: sql_result_find_field
      Src: /src/dovecot/src/auth/passdb-sql.c:119,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-sql.c:120,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:120,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/auth/passdb-sql.c:123,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-sql.c:124,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:124,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/passdb-sql.c:127,1
    - Dst: auth_request_password_missing
      Src: /src/dovecot/src/auth/passdb-sql.c:129,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/auth/passdb-sql.c:133,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/passdb-sql.c:139,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/passdb-sql.c:141,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/passdb-sql.c:144,1
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/passdb-sql.c:148,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/passdb-sql.c:148,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-sql.c:149,1
    - Dst: struct passdb_sql_request*::callback::verify_plain
      Src: /src/dovecot/src/auth/passdb-sql.c:155,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-sql.c:156,1
    - Dst: auth_request_db_password_verify
      Src: /src/dovecot/src/auth/passdb-sql.c:160,1
    - Dst: struct passdb_sql_request*::callback::verify_plain
      Src: /src/dovecot/src/auth/passdb-sql.c:163,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/passdb-sql.c:164,1
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/passdb-sql.c:165,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/passdb-sql.c:165,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-sql.c:166,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 2
    argNames:
    - result
    - sql_request
    argTypes:
    - struct sql_result*
    - struct passdb_sql_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 90
    functionDepth: 5
    functionLinenumber: 90
    functionLinenumberEnd: 167
    functionName: sql_query_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - db_sql_success
    - sql_result_find_field
    - strlen
    - auth_request_password_missing
    - passdb_handle_credentials
    - auth_request_db_log_unknown_user
    - auth_request_db_password_verify
    - auth_fields_exists
    - t_strdup_noconst
    - safe_memset
    - password_get_scheme
    - e_error
    - i_assert
    - sql_result_next_row
    - authdb_event
    - sql_query_save_results
    - sql_result_get_error
    - auth_request_unref
    - struct passdb_sql_request*::callback::verify_plain
    linkageType: ''
    returnType: void
    signature: "void sql_query_callback(struct sql_result *result,\n\t\t\t       struct
      passdb_sql_request *sql_request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_escape_string
      Src: /src/dovecot/src/auth/passdb-sql.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 173
    functionName: passdb_sql_escape
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - sql_escape_string
    linkageType: ''
    returnType: char
    signature: char *passdb_sql_escape(const char *str, void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-sql.c:180,1
    - Dst: settings_get_params
      Src: /src/dovecot/src/auth/passdb-sql.c:188,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:188,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-sql.c:191,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:191,1
    - Dst: struct passdb_sql_request*::callback::verify_plain
      Src: /src/dovecot/src/auth/passdb-sql.c:192,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-sql.c:198,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:198,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-sql.c:201,1
    - Dst: sql_query
      Src: /src/dovecot/src/auth/passdb-sql.c:202,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-sql.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - sql_request
    argTypes:
    - struct passdb_sql_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 204
    functionName: sql_lookup_pass
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - container_of
    - auth_request_ref
    - e_debug
    - settings_free
    - e_error
    - settings_get_params
    - sql_query
    - struct passdb_sql_request*::callback::verify_plain
    linkageType: ''
    returnType: void
    signature: void sql_lookup_pass(struct passdb_sql_request *sql_request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-sql.c:212,1
    - Dst: sql_lookup_pass
      Src: /src/dovecot/src/auth/passdb-sql.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - request
    - ATTR_UNUSED
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 206
    functionDepth: 3
    functionLinenumber: 206
    functionLinenumberEnd: 217
    functionName: sql_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - p_new
    - sql_lookup_pass
    linkageType: ''
    returnType: void
    signature: "void sql_verify_plain(struct auth_request *request,\n\t\t\t     const
      char *password ATTR_UNUSED,\n\t\t\t     verify_plain_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-sql.c:224,1
    - Dst: sql_lookup_pass
      Src: /src/dovecot/src/auth/passdb-sql.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 229
    functionName: sql_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - p_new
    - sql_lookup_pass
    linkageType: ''
    returnType: void
    signature: "void sql_lookup_credentials(struct auth_request *request,\n\t\t\t\t
      \  lookup_credentials_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-sql.c:237,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:237,1
    - Dst: struct passdb_sql_request*::callback::set_credentials
      Src: /src/dovecot/src/auth/passdb-sql.c:241,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/passdb-sql.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sql_result
    - sql_request
    argTypes:
    - struct sql_commit_result*
    - struct passdb_sql_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 244
    functionName: sql_set_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - e_error
    - authdb_event
    - struct passdb_sql_request*::callback::set_credentials
    - i_free
    linkageType: ''
    returnType: void
    signature: "void sql_set_credentials_callback(const struct sql_commit_result *sql_result,\n\t\t\t\t\t
      struct passdb_sql_request *sql_request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-sql.c:251,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-sql.c:258,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-sql.c:260,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:260,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-sql.c:262,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-sql.c:262,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-sql.c:263,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/passdb-sql.c:267,1
    - Dst: sql_transaction_begin
      Src: /src/dovecot/src/auth/passdb-sql.c:271,1
    - Dst: sql_update
      Src: /src/dovecot/src/auth/passdb-sql.c:272,1
    - Dst: sql_transaction_commit
      Src: /src/dovecot/src/auth/passdb-sql.c:273,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-sql.c:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - request
    - new_credentials
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - set_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 276
    functionName: sql_set_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - sql_transaction_begin
    - authdb_event
    - p_strdup
    - container_of
    - settings_free
    - e_error
    - i_new
    - callback
    - settings_get
    - sql_transaction_commit
    - sql_update
    linkageType: ''
    returnType: void
    signature: "void sql_set_credentials(struct auth_request *request,\n\t\t\t\tconst
      char *new_credentials,\n\t\t\t\tset_credentials_callback_t *callback)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-sql.c:287,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-sql.c:292,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-sql.c:296,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-sql.c:300,1
    - Dst: sql_init_auto
      Src: /src/dovecot/src/auth/passdb-sql.c:301,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-sql.c:302,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-sql.c:303,1
    - Dst: passdb_set_cache_key
      Src: /src/dovecot/src/auth/passdb-sql.c:307,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-sql.c:310,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-sql.c:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - pool
    - event
    - passdb_params
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct passdb_parameters*
    - struct passdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 278
    functionDepth: 5
    functionLinenumber: 278
    functionLinenumberEnd: 315
    functionName: passdb_sql_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - p_new
    - passdb_set_cache_key
    - sql_init_auto
    - settings_free
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int passdb_sql_preinit(pool_t pool, struct event *event,\n\t\t   const
      struct passdb_parameters *passdb_params,\n\t\t   struct passdb_module **module_r,
      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-sql.c:320,1
    - Dst: sql_get_flags
      Src: /src/dovecot/src/auth/passdb-sql.c:323,1
    - Dst: db_sql_connect
      Src: /src/dovecot/src/auth/passdb-sql.c:328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 329
    functionName: passdb_sql_init
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - db_sql_connect
    - container_of
    - sql_get_flags
    linkageType: ''
    returnType: void
    signature: void passdb_sql_init(struct passdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-sql.c:334,1
    - Dst: sql_disconnect
      Src: /src/dovecot/src/auth/passdb-sql.c:338,1
    - Dst: sql_unref
      Src: /src/dovecot/src/auth/passdb-sql.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 331
    functionDepth: 4
    functionLinenumber: 331
    functionLinenumberEnd: 340
    functionName: passdb_sql_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb-sql.c
    functionUses: 0
    functionsReached:
    - container_of
    - sql_unref
    - sql_disconnect
    linkageType: ''
    returnType: void
    signature: void passdb_sql_deinit(struct passdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 188
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 256
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 292
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 294
    functionName: DEF_NOPREFIX
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_NOPREFIX(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 437
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-settings.c:481,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/auth-settings.c:485,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/auth/auth-settings.c:486,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/auth/auth-settings.c:488,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-settings.c:490,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/auth/auth-settings.c:492,1
    - Dst: array_append
      Src: /src/dovecot/src/auth/auth-settings.c:494,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/auth/auth-settings.c:496,1
    - Dst: array_front
      Src: /src/dovecot/src/auth/auth-settings.c:497,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - set
    - pool
    - error_r
    argTypes:
    - struct auth_settings*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 499
    functionName: auth_settings_set_self_ips
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 0
    functionsReached:
    - p_new
    - p_array_init
    - t_strdup_printf
    - net_gethostbyname
    - net_gethosterror
    - array_front
    - t_strsplit_spaces
    - array_append_zero
    - array_append
    linkageType: ''
    returnType: bool
    signature: "bool auth_settings_set_self_ips(struct auth_settings *set, pool_t
      pool,\n\t\t\t   const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-settings.c:508,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-settings.c:510,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-settings.c:511,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-settings.c:515,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-settings.c:517,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-settings.c:519,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-settings.c:521,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-settings.c:523,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct auth_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 531
    functionName: auth_verify_verbose_password
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - t_strdup_printf
    - t_strdup_until
    - str_to_uint
    linkageType: ''
    returnType: bool
    signature: "bool auth_verify_verbose_password(struct auth_settings *set,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-settings.c:540,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/auth-settings.c:543,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-settings.c:543,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth-settings.c:544,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/auth/auth-settings.c:545,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-settings.c:548,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/auth/auth-settings.c:553,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/auth-settings.c:554,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth-settings.c:555,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - set
    - pool
    - event
    - error_r
    argTypes:
    - struct auth_settings*
    - pool_t
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 558
    functionName: auth_settings_get_passdbs
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 0
    functionsReached:
    - pool_add_external_ref
    - p_array_init
    - array_foreach_elem
    - array_push_back
    - t_strdup_printf
    - settings_free
    - array_count
    - settings_get_filter
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool auth_settings_get_passdbs(struct auth_settings *set, pool_t pool,\n\t\t\t
      \ struct event *event, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-settings.c:567,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/auth-settings.c:570,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-settings.c:570,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth-settings.c:571,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/auth/auth-settings.c:572,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-settings.c:575,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/auth/auth-settings.c:580,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/auth-settings.c:581,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth-settings.c:582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - set
    - pool
    - event
    - error_r
    argTypes:
    - struct auth_settings*
    - pool_t
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 585
    functionName: auth_settings_get_userdbs
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 0
    functionsReached:
    - pool_add_external_ref
    - p_array_init
    - array_foreach_elem
    - array_push_back
    - t_strdup_printf
    - settings_free
    - array_count
    - settings_get_filter
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool auth_settings_get_userdbs(struct auth_settings *set, pool_t pool,\n\t\t\t
      \ struct event *event, const char **error_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-settings.c:601,1
    - Dst: auth_verify_verbose_password
      Src: /src/dovecot/src/auth/auth-settings.c:607,1
    - Dst: memset
      Src: /src/dovecot/src/auth/auth-settings.c:612,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/auth/auth-settings.c:631,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-settings.c:637,1
    - Dst: auth_settings_set_self_ips
      Src: /src/dovecot/src/auth/auth-settings.c:644,1
    - Dst: auth_settings_get_passdbs
      Src: /src/dovecot/src/auth/auth-settings.c:646,1
    - Dst: auth_settings_get_userdbs
      Src: /src/dovecot/src/auth/auth-settings.c:648,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 4
    argNames:
    - event
    - _set
    - pool
    - error_r
    argTypes:
    - struct event*
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 587
    functionDepth: 2
    functionLinenumber: 587
    functionLinenumberEnd: 651
    functionName: auth_settings_ext_check
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 0
    functionsReached:
    - auth_settings_set_self_ips
    - auth_settings_get_passdbs
    - auth_verify_verbose_password
    - t_strdup_printf
    - auth_settings_get_userdbs
    - memset
    - hash_method_lookup
    linkageType: ''
    returnType: bool
    signature: "bool auth_settings_ext_check(struct event *event, void *_set,\n\t\t\t\t
      \   pool_t pool, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 653
    functionDepth: 0
    functionLinenumber: 653
    functionLinenumberEnd: 662
    functionName: auth_passdb_settings_check
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool auth_passdb_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      \  const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 673
    functionName: auth_userdb_settings_check
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool auth_userdb_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      \  const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_info_register
      Src: /src/dovecot/src/auth/auth-settings.c:685,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/auth/auth-settings.c:686,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth-settings.c:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - output_r
    argTypes:
    - struct master_service_settings_output*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 678
    functionDepth: 6
    functionLinenumber: 678
    functionLinenumberEnd: 689
    functionName: auth_settings_read
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 1
    functionsReached:
    - i_fatal
    - settings_info_register
    - master_service_settings_read
    linkageType: ''
    returnType: void
    signature: void auth_settings_read(struct master_service_settings_output *output_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-settings.c:693,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-settings.c:694,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/auth/auth-settings.c:696,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-settings.c:697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - protocol
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 699
    functionName: auth_settings_get
    functionSourceFile: /src/dovecot/src/auth/auth-settings.c
    functionUses: 1
    functionsReached:
    - event_unref
    - event_create
    - event_add_str
    - settings_get_or_fatal
    linkageType: ''
    returnType: struct auth_settings
    signature: struct auth_settings *auth_settings_get(const char *protocol)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:53,1
    - Dst: ldap_query_get_fields
      Src: /src/dovecot/src/auth/passdb-ldap.c:56,1
    - Dst: auth_request_set_passdb_fields_ex
      Src: /src/dovecot/src/auth/passdb-ldap.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - conn
    - auth_request
    - ldap_request
    - res
    argTypes:
    - struct ldap_connection*
    - struct auth_request*
    - struct ldap_request_search*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 66
    functionName: ldap_query_save_result
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - ldap_query_get_fields
    - auth_request_set_passdb_fields_ex
    linkageType: ''
    returnType: int
    signature: "int ldap_query_save_result(struct ldap_connection *conn,\n\t\t       struct
      auth_request *auth_request,\n\t\t       struct ldap_request_search *ldap_request,\n\t\t
      \      LDAPMessage *res)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/passdb-ldap.c:80,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-ldap.c:82,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:82,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/passdb-ldap.c:87,1
    - Dst: auth_request_password_missing
      Src: /src/dovecot/src/auth/passdb-ldap.c:88,1
    - Dst: t_strdup
      Src: /src/dovecot/src/auth/passdb-ldap.c:92,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/passdb-ldap.c:96,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/passdb-ldap.c:98,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/passdb-ldap.c:101,1
    - Dst: auth_request_db_password_verify
      Src: /src/dovecot/src/auth/passdb-ldap.c:106,1
    - Dst: struct passdb_ldap_request*::callback::verify_plain
      Src: /src/dovecot/src/auth/passdb-ldap.c:111,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - auth_request
    - ldap_request
    - res
    argTypes:
    - struct auth_request*
    - struct passdb_ldap_request*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 68
    functionDepth: 5
    functionLinenumber: 68
    functionLinenumberEnd: 114
    functionName: ldap_lookup_finish
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_request_db_log_unknown_user
    - password_get_scheme
    - passdb_handle_credentials
    - e_error
    - auth_request_db_password_verify
    - auth_fields_exists
    - auth_request_password_missing
    - struct passdb_ldap_request*::callback::verify_plain
    - t_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void ldap_lookup_finish(struct auth_request *auth_request,\n\t\t   struct
      passdb_ldap_request *ldap_request,\n\t\t   LDAPMessage *res)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:121,1
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/auth/passdb-ldap.c:124,1
    - Dst: ldap_lookup_finish
      Src: /src/dovecot/src/auth/passdb-ldap.c:125,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-ldap.c:126,1
    - Dst: ldap_query_save_result
      Src: /src/dovecot/src/auth/passdb-ldap.c:132,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - request
    - res
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 116
    functionDepth: 6
    functionLinenumber: 116
    functionLinenumberEnd: 136
    functionName: ldap_lookup_pass_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - container_of
    - ldap_lookup_finish
    - ldap_msgtype
    - auth_request_unref
    - ldap_query_save_result
    linkageType: ''
    returnType: void
    signature: "void ldap_lookup_pass_callback(struct ldap_connection *conn,\n\t\t\t
      \ struct ldap_request *request, LDAPMessage *res)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:143,1
    - Dst: ldap_parse_result
      Src: /src/dovecot/src/auth/passdb-ldap.c:151,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-ldap.c:157,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:157,1
    - Dst: auth_request_db_log_login_failure
      Src: /src/dovecot/src/auth/passdb-ldap.c:160,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/passdb-ldap.c:165,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-ldap.c:167,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:167,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/passdb-ldap.c:169,1
    - Dst: struct passdb_ldap_request*::callback::verify_plain
      Src: /src/dovecot/src/auth/passdb-ldap.c:173,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-ldap.c:175,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - conn
    - ldap_request
    - res
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 176
    functionName: ldap_auth_bind_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_request_db_log_unknown_user
    - container_of
    - e_debug
    - auth_request_db_log_login_failure
    - ldap_parse_result
    - e_error
    - ldap_err2string
    - auth_request_unref
    - struct passdb_ldap_request*::callback::verify_plain
    linkageType: ''
    returnType: void
    signature: "void ldap_auth_bind_callback(struct ldap_connection *conn,\n\t\t\tstruct
      ldap_request *ldap_request, LDAPMessage *res)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:182,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb-ldap.c:189,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:189,1
    - Dst: struct passdb_ldap_request*::callback::verify_plain
      Src: /src/dovecot/src/auth/passdb-ldap.c:191,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-ldap.c:197,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:197,1
    - Dst: db_ldap_request
      Src: /src/dovecot/src/auth/passdb-ldap.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - brequest
    argTypes:
    - struct ldap_connection*
    - struct ldap_request_bind*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 201
    functionName: ldap_auth_bind
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - container_of
    - e_debug
    - db_ldap_request
    - struct passdb_ldap_request*::callback::verify_plain
    linkageType: ''
    returnType: void
    signature: "void ldap_auth_bind(struct ldap_connection *conn,\n\t\t\t   struct
      ldap_request_bind *brequest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct passdb_ldap_request*::callback::lookup_credentials
      Src: /src/dovecot/src/auth/passdb-ldap.c:209,1
    - Dst: struct passdb_ldap_request*::callback::verify_plain
      Src: /src/dovecot/src/auth/passdb-ldap.c:212,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-ldap.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - request
    - passdb_result
    argTypes:
    - struct passdb_ldap_request*
    - enum passdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 215
    functionName: passdb_ldap_request_fail
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - struct passdb_ldap_request*::callback::lookup_credentials
    - auth_request_unref
    - struct passdb_ldap_request*::callback::verify_plain
    linkageType: ''
    returnType: void
    signature: "void passdb_ldap_request_fail(struct passdb_ldap_request *request,\n\t\t\t\t
      \    enum passdb_result passdb_result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/passdb-ldap.c:228,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/passdb-ldap.c:230,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-ldap.c:231,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:231,1
    - Dst: passdb_ldap_request_fail
      Src: /src/dovecot/src/auth/passdb-ldap.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - auth_request
    - request
    - res
    argTypes:
    - struct auth_request*
    - struct passdb_ldap_request*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 237
    functionName: ldap_bind_lookup_dn_fail
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_request_db_log_unknown_user
    - passdb_ldap_request_fail
    - e_error
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void ldap_bind_lookup_dn_fail(struct auth_request *auth_request,\n\t\t\t
      struct passdb_ldap_request *request,\n\t\t\t LDAPMessage *res)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:244,1
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/auth/passdb-ldap.c:249,1
    - Dst: ldap_query_save_result
      Src: /src/dovecot/src/auth/passdb-ldap.c:256,1
    - Dst: ldap_get_dn
      Src: /src/dovecot/src/auth/passdb-ldap.c:260,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-ldap.c:261,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/auth/passdb-ldap.c:262,1
    - Dst: ldap_bind_lookup_dn_fail
      Src: /src/dovecot/src/auth/passdb-ldap.c:265,1
    - Dst: struct passdb_ldap_request*::callback::verify_plain
      Src: /src/dovecot/src/auth/passdb-ldap.c:269,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-ldap.c:271,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-ldap.c:274,1
    - Dst: ldap_auth_bind
      Src: /src/dovecot/src/auth/passdb-ldap.c:282,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - conn
    - ldap_request
    - res
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 284
    functionName: ldap_bind_lookup_dn_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - p_new
    - ldap_bind_lookup_dn_fail
    - ldap_memfree
    - ldap_msgtype
    - ldap_get_dn
    - auth_request_unref
    - struct passdb_ldap_request*::callback::verify_plain
    - ldap_auth_bind
    - ldap_query_save_result
    linkageType: ''
    returnType: void
    signature: "void ldap_bind_lookup_dn_callback(struct ldap_connection *conn,\n\t\t\t\t\t
      struct ldap_request *ldap_request,\n\t\t\t\t\t LDAPMessage *res)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:293,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-ldap.c:299,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-ldap.c:300,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-ldap.c:305,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:305,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/passdb-ldap.c:309,1
    - Dst: db_ldap_request
      Src: /src/dovecot/src/auth/passdb-ldap.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - auth_request
    - request
    - ldap_set
    - require_password
    argTypes:
    - struct auth_request*
    - struct passdb_ldap_request*
    - struct ldap_pre_settings*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 313
    functionName: ldap_lookup_pass
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - p_strdup
    - container_of
    - e_debug
    - t_strarray_join
    - db_ldap_request
    linkageType: ''
    returnType: void
    signature: "void ldap_lookup_pass(struct auth_request *auth_request,\n\t\t\t     struct
      passdb_ldap_request *request,\n\t\t\t     const struct ldap_pre_settings *ldap_set,\n\t\t\t
      \    bool require_password)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:321,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-ldap.c:326,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-ldap.c:327,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-ldap.c:336,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:336,1
    - Dst: db_ldap_request
      Src: /src/dovecot/src/auth/passdb-ldap.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - auth_request
    - request
    - ldap_set
    argTypes:
    - struct auth_request*
    - struct passdb_ldap_request*
    - struct ldap_pre_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 342
    functionName: ldap_bind_lookup_dn
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - p_strdup
    - container_of
    - e_debug
    - db_ldap_request
    linkageType: ''
    returnType: void
    signature: "void ldap_bind_lookup_dn(struct auth_request *auth_request,\n\t\t\t\tstruct
      passdb_ldap_request *request,\n\t\t\t\tconst struct ldap_pre_settings *ldap_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:351,1
    - Dst: ldap_query_save_result
      Src: /src/dovecot/src/auth/passdb-ldap.c:355,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-ldap.c:358,1
    - Dst: ldap_auth_bind
      Src: /src/dovecot/src/auth/passdb-ldap.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - auth_request
    - request
    - ldap_set
    argTypes:
    - struct auth_request*
    - struct passdb_ldap_request*
    - struct ldap_pre_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 344
    functionDepth: 3
    functionLinenumber: 344
    functionLinenumberEnd: 360
    functionName: ldap_verify_plain_auth_bind_userdn
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_auth_bind
    - p_strdup
    - container_of
    - ldap_query_save_result
    linkageType: ''
    returnType: void
    signature: "void ldap_verify_plain_auth_bind_userdn(struct auth_request *auth_request,\n\t\t\t\t
      \  struct passdb_ldap_request *request,\n\t\t\t\t   const struct ldap_pre_settings
      *ldap_set)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:369,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:371,1
    - Dst: db_ldap_connect
      Src: /src/dovecot/src/auth/passdb-ldap.c:377,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-ldap.c:378,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-ldap.c:383,1
    - Dst: ldap_pre_settings_post_check
      Src: /src/dovecot/src/auth/passdb-ldap.c:385,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-ldap.c:387,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-ldap.c:388,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-ldap.c:389,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-ldap.c:393,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-ldap.c:396,1
    - Dst: ldap_lookup_pass
      Src: /src/dovecot/src/auth/passdb-ldap.c:400,1
    - Dst: ldap_bind_lookup_dn
      Src: /src/dovecot/src/auth/passdb-ldap.c:402,1
    - Dst: ldap_verify_plain_auth_bind_userdn
      Src: /src/dovecot/src/auth/passdb-ldap.c:404,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-ldap.c:406,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - request
    - ATTR_UNUSED
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 362
    functionDepth: 4
    functionLinenumber: 362
    functionLinenumberEnd: 407
    functionName: ldap_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - container_of
    - p_new
    - auth_request_ref
    - ldap_pre_settings_post_check
    - db_ldap_connect
    - settings_free
    - ldap_lookup_pass
    - e_error
    - ldap_bind_lookup_dn
    - callback
    - ldap_verify_plain_auth_bind_userdn
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void ldap_verify_plain(struct auth_request *request,\n\t\t  const
      char *password ATTR_UNUSED,\n\t\t  verify_plain_callback_t *callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-ldap.c:412,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-ldap.c:414,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-ldap.c:417,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-ldap.c:422,1
    - Dst: ldap_pre_settings_post_check
      Src: /src/dovecot/src/auth/passdb-ldap.c:424,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/passdb-ldap.c:426,1
    - Dst: passdb_ldap_request_fail
      Src: /src/dovecot/src/auth/passdb-ldap.c:427,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-ldap.c:428,1
    - Dst: ldap_lookup_pass
      Src: /src/dovecot/src/auth/passdb-ldap.c:436,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-ldap.c:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 409
    functionDepth: 3
    functionLinenumber: 409
    functionLinenumberEnd: 438
    functionName: ldap_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_request_ref
    - p_new
    - ldap_pre_settings_post_check
    - settings_free
    - passdb_ldap_request_fail
    - ldap_lookup_pass
    - e_error
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void ldap_lookup_credentials(struct auth_request *request,\n\t\t\t\t
      \   lookup_credentials_callback_t *callback)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-ldap.c:451,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-ldap.c:454,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/passdb-ldap.c:458,1
    - Dst: db_ldap_init
      Src: /src/dovecot/src/auth/passdb-ldap.c:459,1
    - Dst: db_ldap_get_attribute_names
      Src: /src/dovecot/src/auth/passdb-ldap.c:461,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/passdb-ldap.c:467,1
    - Dst: passdb_set_cache_key
      Src: /src/dovecot/src/auth/passdb-ldap.c:470,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-ldap.c:477,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-ldap.c:478,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - pool
    - event
    - passdb_params
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct passdb_parameters*
    - struct passdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 440
    functionDepth: 5
    functionLinenumber: 440
    functionLinenumberEnd: 480
    functionName: passdb_ldap_preinit
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_init
    - p_new
    - passdb_set_cache_key
    - settings_free
    - db_ldap_get_attribute_names
    - settings_get
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int passdb_ldap_preinit(pool_t pool, struct event *event,\n\t\t    const
      struct passdb_parameters *passdb_params,\n\t\t    struct passdb_module **module_r,\n\t\t
      \   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:485,1
    - Dst: db_ldap_connect_delayed
      Src: /src/dovecot/src/auth/passdb-ldap.c:488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 489
    functionName: passdb_ldap_init
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_connect_delayed
    - container_of
    linkageType: ''
    returnType: void
    signature: void passdb_ldap_init(struct passdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/passdb-ldap.c:494,1
    - Dst: db_ldap_abort_all_requests
      Src: /src/dovecot/src/auth/passdb-ldap.c:496,1
    - Dst: db_ldap_unref
      Src: /src/dovecot/src/auth/passdb-ldap.c:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct passdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 498
    functionName: passdb_ldap_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb-ldap.c
    functionUses: 0
    functionsReached:
    - container_of
    - db_ldap_unref
    - db_ldap_abort_all_requests
    linkageType: ''
    returnType: void
    signature: void passdb_ldap_deinit(struct passdb_module *_module)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_get_option
      Src: /src/dovecot/src/auth/db-ldap.c:93,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:95,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 101
    functionName: ldap_get_errno
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - e_error
    - ldap_err2string
    - ldap_get_option
    linkageType: ''
    returnType: int
    signature: int ldap_get_errno(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:108,1
    - Dst: ldap_get_errno
      Src: /src/dovecot/src/auth/db-ldap.c:108,1
    - Dst: ldap_get_option
      Src: /src/dovecot/src/auth/db-ldap.c:110,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/db-ldap.c:112,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/auth/db-ldap.c:113,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/auth/db-ldap.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 117
    functionName: ldap_get_error
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_get_errno
    - ldap_set_option
    - ldap_memfree
    - ldap_err2string
    - ldap_get_option
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: char *ldap_get_error(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: db_ldap_conn_close
      Src: /src/dovecot/src/auth/db-ldap.c:121,1
    - Dst: db_ldap_connect
      Src: /src/dovecot/src/auth/db-ldap.c:122,1
    - Dst: db_ldap_conn_close
      Src: /src/dovecot/src/auth/db-ldap.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: ldap_conn_reconnect
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_conn_close
    - db_ldap_connect
    linkageType: ''
    returnType: void
    signature: void ldap_conn_reconnect(struct ldap_connection *conn)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ldap_get_errno
      Src: /src/dovecot/src/auth/db-ldap.c:128,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/db-ldap.c:132,1
    - Dst: ldap_conn_reconnect
      Src: /src/dovecot/src/auth/db-ldap.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 164
    functionName: ldap_handle_error
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_conn_reconnect
    - ldap_get_errno
    - i_unreached
    linkageType: ''
    returnType: int
    signature: int ldap_handle_error(struct ldap_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/db-ldap.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:173,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:174,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:175,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:177,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/db-ldap.c:181,1
    - Dst: ldap_sasl_bind
      Src: /src/dovecot/src/auth/db-ldap.c:184,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:187,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:187,1
    - Dst: ldap_get_error
      Src: /src/dovecot/src/auth/db-ldap.c:189,1
    - Dst: ldap_handle_error
      Src: /src/dovecot/src/auth/db-ldap.c:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - request
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 198
    functionName: db_ldap_request_bind
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - ldap_sasl_bind
    - container_of
    - ldap_get_error
    - strlen
    - e_error
    - i_assert
    - ldap_handle_error
    linkageType: ''
    returnType: int
    signature: "int db_ldap_request_bind(struct ldap_connection *conn,\n\t\t\t\tstruct
      ldap_request *request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/db-ldap.c:204,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:207,1
    - Dst: ldap_search_ext
      Src: /src/dovecot/src/auth/db-ldap.c:209,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:214,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:214,1
    - Dst: ldap_get_error
      Src: /src/dovecot/src/auth/db-ldap.c:216,1
    - Dst: ldap_handle_error
      Src: /src/dovecot/src/auth/db-ldap.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - request
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 200
    functionDepth: 3
    functionLinenumber: 200
    functionLinenumberEnd: 224
    functionName: db_ldap_request_search
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - container_of
    - ldap_get_error
    - ldap_search_ext
    - e_error
    - i_assert
    - ldap_handle_error
    linkageType: ''
    returnType: int
    signature: "int db_ldap_request_search(struct ldap_connection *conn,\n\t\t\t\t
      \ struct ldap_request *request)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: db_ldap_connect
      Src: /src/dovecot/src/auth/db-ldap.c:233,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/db-ldap.c:236,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/auth/db-ldap.c:245,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/db-ldap.c:246,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:265,1
    - Dst: db_ldap_bind
      Src: /src/dovecot/src/auth/db-ldap.c:266,1
    - Dst: db_ldap_request_free
      Src: /src/dovecot/src/auth/db-ldap.c:279,1
    - Dst: db_ldap_request_bind
      Src: /src/dovecot/src/auth/db-ldap.c:283,1
    - Dst: db_ldap_request_search
      Src: /src/dovecot/src/auth/db-ldap.c:286,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:293,1
    - Dst: aqueue_delete
      Src: /src/dovecot/src/auth/db-ldap.c:302,1
    - Dst: struct ldap_request*::callback
      Src: /src/dovecot/src/auth/db-ldap.c:303,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 306
    functionName: db_ldap_request_queue_next
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_request_search
    - db_ldap_connect
    - aqueue_delete
    - aqueue_count
    - db_ldap_request_free
    - db_ldap_request_bind
    - array_idx_elem
    - struct ldap_request*::callback
    - db_ldap_bind
    - aqueue_idx
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool db_ldap_request_queue_next(struct ldap_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/db-ldap.c:315,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/auth/db-ldap.c:319,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/db-ldap.c:320,1
    - Dst: db_ldap_abort_requests
      Src: /src/dovecot/src/auth/db-ldap.c:323,1
    - Dst: ldap_conn_reconnect
      Src: /src/dovecot/src/auth/db-ldap.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 327
    functionName: db_ldap_check_hanging
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_abort_requests
    - aqueue_count
    - ldap_conn_reconnect
    - array_idx_elem
    - aqueue_idx
    linkageType: ''
    returnType: void
    signature: void db_ldap_check_hanging(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:332,1
    - Dst: db_ldap_check_hanging
      Src: /src/dovecot/src/auth/db-ldap.c:337,1
    - Dst: aqueue_append
      Src: /src/dovecot/src/auth/db-ldap.c:339,1
    - Dst: db_ldap_request_queue_next
      Src: /src/dovecot/src/auth/db-ldap.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - request
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 329
    functionDepth: 5
    functionLinenumber: 329
    functionLinenumberEnd: 341
    functionName: db_ldap_request
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 3
    functionsReached:
    - aqueue_append
    - i_assert
    - db_ldap_check_hanging
    - db_ldap_request_queue_next
    linkageType: ''
    returnType: void
    signature: "void db_ldap_request(struct ldap_connection *conn,\n\t\t     struct
      ldap_request *request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:346,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:351,1
    - Dst: ldap_get_error
      Src: /src/dovecot/src/auth/db-ldap.c:353,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/db-ldap.c:357,1
    - Dst: db_ldap_request_queue_next
      Src: /src/dovecot/src/auth/db-ldap.c:359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - ret
    argTypes:
    - struct ldap_connection*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 343
    functionDepth: 5
    functionLinenumber: 343
    functionLinenumberEnd: 362
    functionName: db_ldap_connect_finish
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - e_error
    - ldap_get_error
    - db_ldap_request_queue_next
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int db_ldap_connect_finish(struct ldap_connection *conn, int ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:367,1
    - Dst: ldap_parse_result
      Src: /src/dovecot/src/auth/db-ldap.c:371,1
    - Dst: db_ldap_connect_finish
      Src: /src/dovecot/src/auth/db-ldap.c:381,1
    - Dst: db_ldap_conn_close
      Src: /src/dovecot/src/auth/db-ldap.c:383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - res
    argTypes:
    - struct ldap_connection*
    - struct db_ldap_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 364
    functionDepth: 6
    functionLinenumber: 364
    functionLinenumberEnd: 385
    functionName: db_ldap_default_bind_finished
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_parse_result
    - db_ldap_connect_finish
    - i_assert
    - db_ldap_conn_close
    linkageType: ''
    returnType: void
    signature: "void db_ldap_default_bind_finished(struct ldap_connection *conn,\n\t\t\t\t\t
      \ struct db_ldap_result *res)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/db-ldap.c:396,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/auth/db-ldap.c:397,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/db-ldap.c:398,1
    - Dst: aqueue_delete_tail
      Src: /src/dovecot/src/auth/db-ldap.c:405,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:408,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:412,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:412,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/db-ldap.c:415,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:415,1
    - Dst: struct ldap_request*::callback
      Src: /src/dovecot/src/auth/db-ldap.c:418,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - conn
    - max_count
    - timeout_secs
    - error
    - reason
    argTypes:
    - struct ldap_connection*
    - unsigned int
    - unsigned int
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 423
    functionName: db_ldap_abort_requests
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - authdb_event
    - e_info
    - aqueue_count
    - e_error
    - array_idx_elem
    - struct ldap_request*::callback
    - aqueue_idx
    - i_assert
    - aqueue_delete_tail
    linkageType: ''
    returnType: bool
    signature: "bool db_ldap_abort_requests(struct ldap_connection *conn,\n\t\t\t\t
      \  unsigned int max_count,\n\t\t\t\t   unsigned int timeout_secs,\n\t\t\t\t
      \  bool error, const char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/db-ldap.c:432,1
    - Dst: array_front
      Src: /src/dovecot/src/auth/db-ldap.c:436,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/db-ldap.c:438,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - conn
    - msgid
    - idx_r
    argTypes:
    - struct ldap_connection*
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 447
    functionName: db_ldap_find_request
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - aqueue_count
    - aqueue_idx
    - array_front
    linkageType: ''
    returnType: struct ldap_request
    signature: "struct ldap_request *\ndb_ldap_find_request(struct ldap_connection
      *conn, int msgid,\n\t\t     unsigned int *idx_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/db-ldap.c:455,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/auth/db-ldap.c:460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - request
    - res
    argTypes:
    - struct ldap_request_search*
    - struct db_ldap_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 468
    functionName: db_ldap_search_save_result
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_idx_modifiable
    linkageType: ''
    returnType: int
    signature: "int db_ldap_search_save_result(struct ldap_request_search *request,\n\t\t\t\t
      \     struct db_ldap_result *res)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/db-ldap.c:476,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:484,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:485,1
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/auth/db-ldap.c:488,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:496,1
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/auth/db-ldap.c:497,1
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/auth/db-ldap.c:501,1
    - Dst: ldap_parse_result
      Src: /src/dovecot/src/auth/db-ldap.c:507,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/db-ldap.c:516,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:517,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:517,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:520,1
    - Dst: array_idx
      Src: /src/dovecot/src/auth/db-ldap.c:522,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:524,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:524,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:526,1
    - Dst: db_ldap_search_save_result
      Src: /src/dovecot/src/auth/db-ldap.c:532,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:533,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:533,1
    - Dst: aqueue_delete
      Src: /src/dovecot/src/auth/db-ldap.c:551,1
    - Dst: if
      Src: /src/dovecot/src/auth/db-ldap.c:555,1
    - Dst: struct ldap_request*::callback
      Src: /src/dovecot/src/auth/db-ldap.c:558,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 58
    argCount: 4
    argNames:
    - conn
    - request
    - idx
    - res
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    - unsigned int
    - struct db_ldap_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 559
    functionName: db_ldap_handle_request_result
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - container_of
    - db_ldap_search_save_result
    - array_idx
    - aqueue_delete
    - if
    - ldap_parse_result
    - e_error
    - ldap_msgtype
    - ldap_err2string
    - struct ldap_request*::callback
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool db_ldap_handle_request_result(struct ldap_connection *conn,\n\t\t\t
      \     struct ldap_request *request, unsigned int idx,\n\t\t\t      struct db_ldap_result
      *res)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:576,1
    - Dst: ldap_msgfree
      Src: /src/dovecot/src/auth/db-ldap.c:578,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/db-ldap.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _res
    argTypes:
    - struct db_ldap_result**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 581
    functionName: db_ldap_result_unref
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - ldap_msgfree
    linkageType: ''
    returnType: void
    signature: void db_ldap_result_unref(struct db_ldap_result **_res)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/db-ldap.c:588,1
    - Dst: db_ldap_result_unref
      Src: /src/dovecot/src/auth/db-ldap.c:592,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/db-ldap.c:594,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/auth/db-ldap.c:595,1
    - Dst: db_ldap_result_unref
      Src: /src/dovecot/src/auth/db-ldap.c:597,1
    - Dst: array_free
      Src: /src/dovecot/src/auth/db-ldap.c:599,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct ldap_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 583
    functionDepth: 2
    functionLinenumber: 583
    functionLinenumberEnd: 603
    functionName: db_ldap_request_free
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - container_of
    - db_ldap_result_unref
    - array_foreach_modifiable
    - array_is_created
    - array_free
    linkageType: ''
    returnType: void
    signature: void db_ldap_request_free(struct ldap_request *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldap_msgid
      Src: /src/dovecot/src/auth/db-ldap.c:613,1
    - Dst: db_ldap_default_bind_finished
      Src: /src/dovecot/src/auth/db-ldap.c:615,1
    - Dst: db_ldap_find_request
      Src: /src/dovecot/src/auth/db-ldap.c:619,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:621,1
    - Dst: ldap_conn_reconnect
      Src: /src/dovecot/src/auth/db-ldap.c:622,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/db-ldap.c:627,1
    - Dst: db_ldap_handle_request_result
      Src: /src/dovecot/src/auth/db-ldap.c:628,1
    - Dst: db_ldap_request_free
      Src: /src/dovecot/src/auth/db-ldap.c:629,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/db-ldap.c:630,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - res
    argTypes:
    - struct ldap_connection*
    - struct db_ldap_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 605
    functionDepth: 7
    functionLinenumber: 605
    functionLinenumberEnd: 631
    functionName: db_ldap_handle_result
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_find_request
    - auth_request_ref
    - ldap_conn_reconnect
    - db_ldap_handle_request_result
    - e_error
    - db_ldap_request_free
    - auth_request_unref
    - ldap_msgid
    - db_ldap_default_bind_finished
    linkageType: ''
    returnType: void
    signature: void db_ldap_handle_result(struct ldap_connection *conn, struct db_ldap_result
      *res)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/db-ldap.c:645,1
    - Dst: ldap_result
      Src: /src/dovecot/src/auth/db-ldap.c:646,1
    - Dst: ldap_result
      Src: /src/dovecot/src/auth/db-ldap.c:650,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/db-ldap.c:657,1
    - Dst: db_ldap_handle_result
      Src: /src/dovecot/src/auth/db-ldap.c:660,1
    - Dst: db_ldap_result_unref
      Src: /src/dovecot/src/auth/db-ldap.c:661,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:669,1
    - Dst: db_ldap_request_queue_next
      Src: /src/dovecot/src/auth/db-ldap.c:672,1
    - Dst: ldap_get_errno
      Src: /src/dovecot/src/auth/db-ldap.c:674,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:675,1
    - Dst: ldap_get_error
      Src: /src/dovecot/src/auth/db-ldap.c:675,1
    - Dst: ldap_conn_reconnect
      Src: /src/dovecot/src/auth/db-ldap.c:676,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/db-ldap.c:677,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:679,1
    - Dst: ldap_conn_reconnect
      Src: /src/dovecot/src/auth/db-ldap.c:680,1
    - Dst: db_ldap_conn_close
      Src: /src/dovecot/src/auth/db-ldap.c:684,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 633
    functionDepth: 8
    functionLinenumber: 633
    functionLinenumberEnd: 686
    functionName: ldap_input
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - ldap_get_errno
    - ldap_get_error
    - aqueue_count
    - ldap_conn_reconnect
    - db_ldap_result_unref
    - db_ldap_request_queue_next
    - e_error
    - ldap_result
    - db_ldap_conn_close
    - i_new
    - db_ldap_handle_result
    linkageType: ''
    returnType: void
    signature: void ldap_input(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:690,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:692,1
    - Dst: db_ldap_conn_close
      Src: /src/dovecot/src/auth/db-ldap.c:693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 694
    functionName: ldap_connection_timeout
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_assert
    - db_ldap_conn_close
    linkageType: ''
    returnType: void
    signature: void ldap_connection_timeout(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: db_ldap_bind_sasl_interactive
      Src: /src/dovecot/src/auth/db-ldap.c:700,1
    - Dst: db_ldap_connect_finish
      Src: /src/dovecot/src/auth/db-ldap.c:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 696
    functionDepth: 6
    functionLinenumber: 696
    functionLinenumberEnd: 707
    functionName: db_ldap_bind_sasl
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_connect_finish
    - db_ldap_bind_sasl_interactive
    linkageType: ''
    returnType: int
    signature: int db_ldap_bind_sasl(struct ldap_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:713,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:714,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:715,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/db-ldap.c:719,1
    - Dst: ldap_sasl_bind
      Src: /src/dovecot/src/auth/db-ldap.c:722,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:725,1
    - Dst: ldap_get_errno
      Src: /src/dovecot/src/auth/db-ldap.c:725,1
    - Dst: db_ldap_connect_finish
      Src: /src/dovecot/src/auth/db-ldap.c:726,1
    - Dst: ldap_get_errno
      Src: /src/dovecot/src/auth/db-ldap.c:726,1
    - Dst: db_ldap_conn_close
      Src: /src/dovecot/src/auth/db-ldap.c:728,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/db-ldap.c:736,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/db-ldap.c:737,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 709
    functionDepth: 6
    functionLinenumber: 709
    functionLinenumberEnd: 740
    functionName: db_ldap_bind_simple
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_connect_finish
    - ldap_sasl_bind
    - ldap_get_errno
    - strlen
    - timeout_add
    - db_ldap_conn_close
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int db_ldap_bind_simple(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/db-ldap.c:745,1
    - Dst: db_ldap_bind_simple
      Src: /src/dovecot/src/auth/db-ldap.c:746,1
    - Dst: db_ldap_bind_sasl
      Src: /src/dovecot/src/auth/db-ldap.c:748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 742
    functionDepth: 7
    functionLinenumber: 742
    functionLinenumberEnd: 750
    functionName: db_ldap_bind
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - array_is_empty
    - db_ldap_bind_sasl
    - db_ldap_bind_simple
    linkageType: ''
    returnType: int
    signature: int db_ldap_bind(struct ldap_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldap_get_option
      Src: /src/dovecot/src/auth/db-ldap.c:757,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:759,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:760,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:764,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:767,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/auth/db-ldap.c:768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 769
    functionName: db_ldap_get_fd
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - net_set_nonblock
    - i_fatal
    - ldap_err2string
    - ldap_get_option
    - i_assert
    linkageType: ''
    returnType: void
    signature: void db_ldap_get_fd(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 775
    functionName: db_ldap_log_callback
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      db_ldap_log_callback(struct ldap_connection *conn)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-ldap.c:807,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/auth/db-ldap.c:811,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:813,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:814,1
    - Dst: ldap_set_option
      Src: /src/dovecot/src/auth/db-ldap.c:820,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:822,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:823,1
    - Dst: ldap_set_opt
      Src: /src/dovecot/src/auth/db-ldap.c:826,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:828,1
    - Dst: ldap_set_opt
      Src: /src/dovecot/src/auth/db-ldap.c:831,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/db-ldap.c:832,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:833,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/auth/db-ldap.c:834,1
    - Dst: ldap_set_opt
      Src: /src/dovecot/src/auth/db-ldap.c:838,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/db-ldap.c:840,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:841,1
    - Dst: ldap_set_tls_options
      Src: /src/dovecot/src/auth/db-ldap.c:842,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:844,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 802
    functionDepth: 4
    functionLinenumber: 802
    functionLinenumberEnd: 845
    functionName: ldap_set_options
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - dec2str
    - event_set_forced_debug
    - ldap_set_tls_options
    - p_new
    - ldap_set_option
    - i_fatal
    - ldap_err2string
    - ldap_set_opt
    linkageType: ''
    returnType: void
    signature: void ldap_set_options(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_initialize
      Src: /src/dovecot/src/auth/db-ldap.c:849,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:851,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:852,1
    - Dst: ldap_set_options
      Src: /src/dovecot/src/auth/db-ldap.c:854,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 847
    functionDepth: 5
    functionLinenumber: 847
    functionLinenumberEnd: 855
    functionName: db_ldap_init_ld
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_initialize
    - ldap_err2string
    - i_fatal
    - ldap_set_options
    linkageType: ''
    returnType: void
    signature: void db_ldap_init_ld(struct ldap_connection *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/auth/db-ldap.c:865,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:866,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/db-ldap.c:870,1
    - Dst: db_ldap_init_ld
      Src: /src/dovecot/src/auth/db-ldap.c:873,1
    - Dst: ldap_start_tls_s
      Src: /src/dovecot/src/auth/db-ldap.c:876,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/auth/db-ldap.c:880,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:881,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/db-ldap.c:884,1
    - Dst: ldap_err2string
      Src: /src/dovecot/src/auth/db-ldap.c:885,1
    - Dst: db_ldap_bind
      Src: /src/dovecot/src/auth/db-ldap.c:890,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/auth/db-ldap.c:893,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-ldap.c:894,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/auth/db-ldap.c:895,1
    - Dst: db_ldap_get_fd
      Src: /src/dovecot/src/auth/db-ldap.c:897,1
    - Dst: io_add
      Src: /src/dovecot/src/auth/db-ldap.c:898,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 857
    functionDepth: 8
    functionLinenumber: 857
    functionLinenumberEnd: 900
    functionName: db_ldap_connect
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 3
    functionsReached:
    - i_gettimeofday
    - timeval_diff_msecs
    - str_begins_with
    - io_add
    - e_debug
    - i_fatal
    - e_error
    - ldap_err2string
    - db_ldap_init_ld
    - db_ldap_get_fd
    - ldap_start_tls_s
    - db_ldap_bind
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int db_ldap_connect(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:904,1
    - Dst: db_ldap_connect
      Src: /src/dovecot/src/auth/db-ldap.c:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 902
    functionDepth: 9
    functionLinenumber: 902
    functionLinenumberEnd: 906
    functionName: db_ldap_connect_callback
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - i_assert
    - db_ldap_connect
    linkageType: ''
    returnType: void
    signature: void db_ldap_connect_callback(struct ldap_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:914,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/auth/db-ldap.c:915,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 908
    functionDepth: 1
    functionLinenumber: 908
    functionLinenumberEnd: 916
    functionName: db_ldap_connect_delayed
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - timeout_add_short
    - i_assert
    linkageType: ''
    returnType: void
    signature: void db_ldap_connect_delayed(struct ldap_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/auth/db-ldap.c:921,1
    - Dst: io_add
      Src: /src/dovecot/src/auth/db-ldap.c:924,1
    - Dst: ldap_input
      Src: /src/dovecot/src/auth/db-ldap.c:925,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - enable
    argTypes:
    - struct ldap_connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 918
    functionDepth: 9
    functionLinenumber: 918
    functionLinenumberEnd: 928
    functionName: db_ldap_enable_input
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - io_remove
    - ldap_input
    - io_add
    linkageType: ''
    returnType: void
    signature: void db_ldap_enable_input(struct ldap_connection *conn, bool enable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: db_ldap_abort_requests
      Src: /src/dovecot/src/auth/db-ldap.c:932,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/db-ldap.c:936,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/db-ldap.c:938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 930
    functionDepth: 3
    functionLinenumber: 930
    functionLinenumberEnd: 940
    functionName: db_ldap_disconnect_timeout
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - aqueue_count
    - db_ldap_abort_requests
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void db_ldap_disconnect_timeout(struct ldap_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/db-ldap.c:951,1
    - Dst: array_front
      Src: /src/dovecot/src/auth/db-ldap.c:954,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/auth/db-ldap.c:956,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:958,1
    - Dst: ldap_unbind_ext
      Src: /src/dovecot/src/auth/db-ldap.c:965,1
    - Dst: io_remove_closed
      Src: /src/dovecot/src/auth/db-ldap.c:972,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/auth/db-ldap.c:974,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/db-ldap.c:975,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 942
    functionDepth: 1
    functionLinenumber: 942
    functionLinenumberEnd: 978
    functionName: db_ldap_conn_close
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 5
    functionsReached:
    - ldap_unbind_ext
    - aqueue_count
    - timeout_add
    - io_remove_closed
    - array_front
    - aqueue_idx
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void db_ldap_conn_close(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/auth/db-ldap.c:983,1
    - Dst: strstr
      Src: /src/dovecot/src/auth/db-ldap.c:984,1
    - Dst: strstr
      Src: /src/dovecot/src/auth/db-ldap.c:985,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/auth/db-ldap.c:986,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/auth/db-ldap.c:987,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 988
    functionName: db_ldap_is_sensitive_field
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - str_ends_with
    - strstr
    linkageType: ''
    returnType: bool
    signature: bool db_ldap_is_sensitive_field(const char *name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/db-ldap.c:996,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/db-ldap.c:996,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:997,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/auth/db-ldap.c:999,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/auth/db-ldap.c:1000,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/db-ldap.c:1002,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/db-ldap.c:1003,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/db-ldap.c:1004,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/auth/db-ldap.c:1008,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/auth/db-ldap.c:1009,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-ldap.c:1011,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/db-ldap.c:1015,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/db-ldap.c:1020,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/auth/db-ldap.c:1022,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-ldap.c:1023,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/auth/db-ldap.c:1027,1
    - Dst: str_begins
      Src: /src/dovecot/src/auth/db-ldap.c:1030,1
    - Dst: str_begins
      Src: /src/dovecot/src/auth/db-ldap.c:1031,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/db-ldap.c:1035,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/db-ldap.c:1036,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/auth/db-ldap.c:1039,1
    - Dst: db_ldap_is_sensitive_field
      Src: /src/dovecot/src/auth/db-ldap.c:1041,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/db-ldap.c:1050,1
    - Dst: array_idx
      Src: /src/dovecot/src/auth/db-ldap.c:1055,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/db-ldap.c:1056,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/auth/db-ldap.c:1059,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/auth/db-ldap.c:1060,1
    - Dst: array_front
      Src: /src/dovecot/src/auth/db-ldap.c:1062,1
    - Dst: array_front
      Src: /src/dovecot/src/auth/db-ldap.c:1064,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 5
    argNames:
    - pool
    - attrlist
    - attr_names_r
    - sensitive_r
    - skip_attr
    argTypes:
    - pool_t
    - ARRAY_TYPE*
    - char***
    - char***
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 990
    functionDepth: 2
    functionLinenumber: 990
    functionLinenumberEnd: 1065
    functionName: db_ldap_get_attribute_names
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_array_init
    - var_expand_program_create
    - db_ldap_is_sensitive_field
    - array_idx
    - array_is_empty
    - array_count
    - array_front
    - array_append_zero
    - t_str_new
    - array_idx_elem
    - var_expand_program_free
    - i_assert
    - strcmp
    - array_push_back
    - e_debug
    - str_begins
    - str_truncate
    - ARRAY_TYPE
    - var_expand_program_variables
    linkageType: ''
    returnType: void
    signature: "void db_ldap_get_attribute_names(pool_t pool,\n\t\t\t\t const ARRAY_TYPE(const_string)
      *attrlist,\n\t\t\t\t const char *const **attr_names_r,\n\t\t\t\t const char
      *const **sensitive_r,\n\t\t\t\t const char *skip_attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1067
    functionDepth: 0
    functionLinenumber: 1067
    functionLinenumberEnd: 1069
    functionName: IS_LDAP_ESCAPED_CHAR
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LDAP_ESCAPED_CHAR(c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_LDAP_ESCAPED_CHAR
      Src: /src/dovecot/src/auth/db-ldap.c:1076,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/db-ldap.c:1078,1
    - Dst: str_append_data
      Src: /src/dovecot/src/auth/db-ldap.c:1079,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/db-ldap.c:1081,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/db-ldap.c:1083,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-ldap.c:1086,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - str
    - ATTR_UNUSED
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1087
    functionName: ldap_escape
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - IS_LDAP_ESCAPED_CHAR
    - str_append_data
    linkageType: ''
    returnType: char
    signature: "char *ldap_escape(const char *str,\n\t\t\tvoid *context ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_find
      Src: /src/dovecot/src/auth/db-ldap.c:1100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - attr
    argTypes:
    - struct db_ldap_result_iterate_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1089
    functionDepth: 1
    functionLinenumber: 1089
    functionLinenumberEnd: 1101
    functionName: db_ldap_field_hide_password
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - str_array_find
    linkageType: ''
    returnType: bool
    signature: "bool db_ldap_field_hide_password(struct db_ldap_result_iterate_context
      *ctx,\n\t\t\t    const char *attr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldap_first_attribute
      Src: /src/dovecot/src/auth/db-ldap.c:1112,1
    - Dst: ldap_get_values_len
      Src: /src/dovecot/src/auth/db-ldap.c:1114,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-ldap.c:1116,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-ldap.c:1118,1
    - Dst: ldap_count_values_len
      Src: /src/dovecot/src/auth/db-ldap.c:1121,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-ldap.c:1123,1
    - Dst: p_strndup
      Src: /src/dovecot/src/auth/db-ldap.c:1125,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/db-ldap.c:1128,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/db-ldap.c:1130,1
    - Dst: db_ldap_field_hide_password
      Src: /src/dovecot/src/auth/db-ldap.c:1131,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/db-ldap.c:1132,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/db-ldap.c:1134,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/db-ldap.c:1136,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/auth/db-ldap.c:1140,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/auth/db-ldap.c:1141,1
    - Dst: ldap_value_free_len
      Src: /src/dovecot/src/auth/db-ldap.c:1144,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/auth/db-ldap.c:1145,1
    - Dst: ldap_next_attribute
      Src: /src/dovecot/src/auth/db-ldap.c:1146,1
    - Dst: ber_free
      Src: /src/dovecot/src/auth/db-ldap.c:1148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - ctx
    - conn
    - entry
    - suffix
    argTypes:
    - struct db_ldap_result_iterate_context*
    - struct ldap_connection*
    - LDAPMessage*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1103
    functionDepth: 2
    functionLinenumber: 1103
    functionLinenumberEnd: 1149
    functionName: get_ldap_fields
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - ldap_count_values_len
    - str_printfa
    - p_new
    - p_strndup
    - ldap_next_attribute
    - str_append
    - db_ldap_field_hide_password
    - ldap_memfree
    - ldap_get_values_len
    - ber_free
    - p_strconcat
    - ldap_first_attribute
    - hash_table_insert
    - ldap_value_free_len
    linkageType: ''
    returnType: void
    signature: "void get_ldap_fields(struct db_ldap_result_iterate_context *ctx,\n\t\tstruct
      ldap_connection *conn, LDAPMessage *entry,\n\t\tconst char *suffix)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/db-ldap.c:1161,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-ldap.c:1162,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/auth/db-ldap.c:1168,1
    - Dst: str_new
      Src: /src/dovecot/src/auth/db-ldap.c:1169,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/db-ldap.c:1170,1
    - Dst: get_ldap_fields
      Src: /src/dovecot/src/auth/db-ldap.c:1174,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/db-ldap.c:1175,1
    - Dst: array_foreach
      Src: /src/dovecot/src/auth/db-ldap.c:1176,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-ldap.c:1177,1
    - Dst: get_ldap_fields
      Src: /src/dovecot/src/auth/db-ldap.c:1179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - conn
    - ldap_request
    - res
    - skip_null_values
    argTypes:
    - struct ldap_connection*
    - struct ldap_request_search*
    - LDAPMessage*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1151
    functionDepth: 3
    functionLinenumber: 1151
    functionLinenumberEnd: 1185
    functionName: db_ldap_result_iterate_init_full
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_str_new
    - p_new
    - hash_table_create
    - get_ldap_fields
    - t_strdup_printf
    - array_foreach
    - array_is_created
    - str_new
    linkageType: ''
    returnType: struct db_ldap_result_iterate_context
    signature: "struct db_ldap_result_iterate_context *\ndb_ldap_result_iterate_init_full(struct
      ldap_connection *conn,\n\t\t\t\t struct ldap_request_search *ldap_request,\n\t\t\t\t
      LDAPMessage *res, bool skip_null_values)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: db_ldap_result_iterate_init_full
      Src: /src/dovecot/src/auth/db-ldap.c:1192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - conn
    - ldap_request
    - res
    - skip_null_values
    argTypes:
    - struct ldap_connection*
    - struct ldap_request_search*
    - LDAPMessage*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1187
    functionDepth: 4
    functionLinenumber: 1187
    functionLinenumberEnd: 1194
    functionName: db_ldap_result_iterate_init
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_result_iterate_init_full
    linkageType: ''
    returnType: struct db_ldap_result_iterate_context
    signature: "struct db_ldap_result_iterate_context *\ndb_ldap_result_iterate_init(struct
      ldap_connection *conn,\n\t\t\t    struct ldap_request_search *ldap_request,\n\t\t\t
      \   LDAPMessage *res, bool skip_null_values)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/db-ldap.c:1198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1196
    functionDepth: 1
    functionLinenumber: 1196
    functionLinenumberEnd: 1199
    functionName: db_ldap_attribute_as_multi
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: char *db_ldap_attribute_as_multi(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_lcase
      Src: /src/dovecot/src/auth/db-ldap.c:1207,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-ldap.c:1209,1
    - Dst: db_ldap_attribute_as_multi
      Src: /src/dovecot/src/auth/db-ldap.c:1210,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-ldap.c:1212,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-ldap.c:1215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - data
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1201
    functionDepth: 3
    functionLinenumber: 1201
    functionLinenumberEnd: 1220
    functionName: db_ldap_field_multi_expand
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - t_str_lcase
    - db_ldap_attribute_as_multi
    - t_strdup_printf
    - auth_fields_find
    linkageType: ''
    returnType: int
    signature: "int db_ldap_field_multi_expand(const char *data, const char **value_r,\n\t\t\t
      \  void *context, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_lcase
      Src: /src/dovecot/src/auth/db-ldap.c:1228,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-ldap.c:1230,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-ldap.c:1232,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:1233,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-ldap.c:1239,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-ldap.c:1242,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-ldap.c:1244,1
    - Dst: db_ldap_attribute_as_multi
      Src: /src/dovecot/src/auth/db-ldap.c:1245,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/db-ldap.c:1246,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - data
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1222
    functionDepth: 3
    functionLinenumber: 1222
    functionLinenumberEnd: 1251
    functionName: db_ldap_field_single_expand
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - auth_fields_find
    - db_ldap_attribute_as_multi
    - t_strdup_printf
    - e_warning
    - t_str_lcase
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int db_ldap_field_single_expand(const char *data, const char **value_r,\n\t\t\t
      \   void *context, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/db-ldap.c:1265,1
    - Dst: ldap_get_dn
      Src: /src/dovecot/src/auth/db-ldap.c:1269,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/db-ldap.c:1270,1
    - Dst: ldap_memfree
      Src: /src/dovecot/src/auth/db-ldap.c:1271,1
    - Dst: db_ldap_result_iterate_init
      Src: /src/dovecot/src/auth/db-ldap.c:1273,1
    - Dst: db_ldap_result_iterate_next
      Src: /src/dovecot/src/auth/db-ldap.c:1275,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/auth/db-ldap.c:1277,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/db-ldap.c:1278,1
    - Dst: db_ldap_attribute_as_multi
      Src: /src/dovecot/src/auth/db-ldap.c:1280,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/db-ldap.c:1281,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/db-ldap.c:1283,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/db-ldap.c:1284,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/db-ldap.c:1287,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/db-ldap.c:1287,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/db-ldap.c:1288,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-ldap.c:1288,1
    - Dst: db_ldap_result_iterate_deinit
      Src: /src/dovecot/src/auth/db-ldap.c:1291,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - pool
    - conn
    - ldap_request
    - res
    - skip_null_values
    argTypes:
    - pool_t
    - struct ldap_connection*
    - struct ldap_request_search*
    - LDAPMessage*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1259
    functionDepth: 5
    functionLinenumber: 1259
    functionLinenumberEnd: 1293
    functionName: ldap_query_get_fields
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - auth_fields_init
    - str_append_c
    - auth_fields_add
    - str_len
    - db_ldap_attribute_as_multi
    - ldap_memfree
    - db_ldap_result_iterate_deinit
    - db_ldap_result_iterate_next
    - str_append_tabescaped
    - ldap_get_dn
    - db_ldap_result_iterate_init
    - str_truncate
    - t_str_lcase
    linkageType: ''
    returnType: struct auth_fields
    signature: "struct auth_fields *\nldap_query_get_fields(pool_t pool,\n\t\t      struct
      ldap_connection *conn,\n\t\t      struct ldap_request_search *ldap_request,\n\t\t
      \     LDAPMessage *res, bool skip_null_values)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1295
    functionDepth: 0
    functionLinenumber: 1295
    functionLinenumberEnd: 1305
    functionName: db_ldap_result_return_value
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *const *\ndb_ldap_result_return_value(struct db_ldap_result_iterate_context
      *ctx,\n\t\t\t    struct db_ldap_value *ldap_value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/auth/db-ldap.c:1317,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/db-ldap.c:1321,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/db-ldap.c:1323,1
    - Dst: db_ldap_result_return_value
      Src: /src/dovecot/src/auth/db-ldap.c:1325,1
    - Dst: db_ldap_result_iterate_next
      Src: /src/dovecot/src/auth/db-ldap.c:1328,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - name_r
    - values_r
    argTypes:
    - struct db_ldap_result_iterate_context*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1307
    functionDepth: 1
    functionLinenumber: 1307
    functionLinenumberEnd: 1331
    functionName: db_ldap_result_iterate_next
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 2
    functionsReached:
    - str_printfa
    - db_ldap_result_iterate_next
    - str_truncate
    - hash_table_lookup
    - db_ldap_result_return_value
    linkageType: ''
    returnType: bool
    signature: "bool db_ldap_result_iterate_next(struct db_ldap_result_iterate_context
      *ctx,\n\t\t\t\t const char **name_r,\n\t\t\t\t const char *const **values_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:1345,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/db-ldap.c:1346,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-ldap.c:1348,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:1348,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/db-ldap.c:1353,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/auth/db-ldap.c:1355,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/auth/db-ldap.c:1356,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/db-ldap.c:1358,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/auth/db-ldap.c:1362,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/db-ldap.c:1365,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/db-ldap.c:1367,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/db-ldap.c:1367,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/db-ldap.c:1368,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-ldap.c:1370,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-ldap.c:1370,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-ldap.c:1371,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct db_ldap_result_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1333
    functionDepth: 2
    functionLinenumber: 1333
    functionLinenumberEnd: 1374
    functionName: db_ldap_result_finish_debug
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - authdb_event
    - str_printfa
    - str_c
    - hash_table_iterate
    - str_len
    - e_debug
    - hash_table_iterate_init
    - str_truncate
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void db_ldap_result_finish_debug(struct db_ldap_result_iterate_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: db_ldap_result_finish_debug
      Src: /src/dovecot/src/auth/db-ldap.c:1382,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/auth/db-ldap.c:1383,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/db-ldap.c:1384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct db_ldap_result_iterate_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1376
    functionDepth: 3
    functionLinenumber: 1376
    functionLinenumberEnd: 1385
    functionName: db_ldap_result_iterate_deinit
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - pool_unref
    - db_ldap_result_finish_debug
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void db_ldap_result_iterate_deinit(struct db_ldap_result_iterate_context
      **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_equal
      Src: /src/dovecot/src/auth/db-ldap.c:1396,1
    - Dst: settings_equal
      Src: /src/dovecot/src/auth/db-ldap.c:1397,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - set
    - ssl_set
    argTypes:
    - struct ldap_settings*
    - struct ssl_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1387
    functionDepth: 0
    functionLinenumber: 1387
    functionLinenumberEnd: 1401
    functionName: db_ldap_conn_find
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - settings_equal
    linkageType: ''
    returnType: struct ldap_connection
    signature: 'struct ldap_connection *

      db_ldap_conn_find(const struct ldap_settings *set, const struct ssl_settings
      *ssl_set)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:1409,1
    - Dst: ssl_client_settings_get
      Src: /src/dovecot/src/auth/db-ldap.c:1410,1
    - Dst: ldap_setting_post_check
      Src: /src/dovecot/src/auth/db-ldap.c:1411,1
    - Dst: ldap_set_tls_validate
      Src: /src/dovecot/src/auth/db-ldap.c:1412,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/db-ldap.c:1413,1
    - Dst: db_ldap_conn_find
      Src: /src/dovecot/src/auth/db-ldap.c:1416,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/db-ldap.c:1418,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/db-ldap.c:1419,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/db-ldap.c:1424,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-ldap.c:1425,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/db-ldap.c:1436,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/auth/db-ldap.c:1437,1
    - Dst: event_set_log_prefix_callback
      Src: /src/dovecot/src/auth/db-ldap.c:1438,1
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/db-ldap.c:1440,1
    - Dst: aqueue_init
      Src: /src/dovecot/src/auth/db-ldap.c:1441,1
    - Dst: db_ldap_init_ld
      Src: /src/dovecot/src/auth/db-ldap.c:1446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1403
    functionDepth: 6
    functionLinenumber: 1403
    functionLinenumberEnd: 1448
    functionName: db_ldap_init
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - event_create
    - db_ldap_conn_find
    - p_new
    - i_fatal
    - settings_free
    - db_ldap_init_ld
    - ldap_set_tls_validate
    - ssl_client_settings_get
    - aqueue_init
    - ldap_setting_post_check
    - i_strdup_printf
    - event_set_log_prefix_callback
    - settings_get_or_fatal
    linkageType: ''
    returnType: struct ldap_connection
    signature: struct ldap_connection *db_ldap_init(struct event *event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:1456,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:1467,1
    - Dst: db_ldap_conn_close
      Src: /src/dovecot/src/auth/db-ldap.c:1468,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-ldap.c:1469,1
    - Dst: array_free
      Src: /src/dovecot/src/auth/db-ldap.c:1471,1
    - Dst: aqueue_deinit
      Src: /src/dovecot/src/auth/db-ldap.c:1472,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/db-ldap.c:1474,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/db-ldap.c:1475,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-ldap.c:1477,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/db-ldap.c:1478,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/db-ldap.c:1480,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct ldap_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1450
    functionDepth: 2
    functionLinenumber: 1450
    functionLinenumberEnd: 1481
    functionName: db_ldap_unref
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - aqueue_deinit
    - event_unref
    - i_free
    - settings_free
    - pool_unref
    - db_ldap_conn_close
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void db_ldap_unref(struct ldap_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: db_ldap_abort_requests
      Src: /src/dovecot/src/auth/db-ldap.c:1485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct ldap_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1483
    functionDepth: 3
    functionLinenumber: 1483
    functionLinenumberEnd: 1486
    functionName: db_ldap_abort_all_requests
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 1
    functionsReached:
    - db_ldap_abort_requests
    linkageType: ''
    returnType: void
    signature: void db_ldap_abort_all_requests(struct ldap_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_register_module
      Src: /src/dovecot/src/auth/db-ldap.c:1498,1
    - Dst: userdb_register_module
      Src: /src/dovecot/src/auth/db-ldap.c:1499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1496
    functionDepth: 2
    functionLinenumber: 1496
    functionLinenumberEnd: 1501
    functionName: authdb_ldap_init
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - passdb_register_module
    - userdb_register_module
    linkageType: ''
    returnType: void
    signature: void authdb_ldap_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_unregister_module
      Src: /src/dovecot/src/auth/db-ldap.c:1504,1
    - Dst: userdb_unregister_module
      Src: /src/dovecot/src/auth/db-ldap.c:1505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1502
    functionDepth: 2
    functionLinenumber: 1502
    functionLinenumberEnd: 1506
    functionName: authdb_ldap_deinit
    functionSourceFile: /src/dovecot/src/auth/db-ldap.c
    functionUses: 0
    functionsReached:
    - userdb_unregister_module
    - passdb_unregister_module
    linkageType: ''
    returnType: void
    signature: void authdb_ldap_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/userdb-sql.c:68,1
    - Dst: sql_result_get_fields_count
      Src: /src/dovecot/src/auth/userdb-sql.c:72,1
    - Dst: sql_result_get_field_name
      Src: /src/dovecot/src/auth/userdb-sql.c:74,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/auth/userdb-sql.c:75,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/userdb-sql.c:80,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/userdb-sql.c:82,1
    - Dst: auth_request_set_userdb_fields
      Src: /src/dovecot/src/auth/userdb-sql.c:86,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - result
    - auth_request
    argTypes:
    - struct sql_result*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 87
    functionName: sql_query_get_result
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - sql_result_get_field_name
    - sql_result_get_fields_count
    - auth_fields_init
    - auth_fields_add
    - sql_result_get_field_value
    - auth_request_set_userdb_fields
    - auth_request_set_userdb_field
    linkageType: ''
    returnType: int
    signature: "int sql_query_get_result(struct sql_result *result,\n\t\t     struct
      auth_request *auth_request)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/auth/userdb-sql.c:96,1
    - Dst: db_sql_success
      Src: /src/dovecot/src/auth/userdb-sql.c:98,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-sql.c:100,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:100,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/auth/userdb-sql.c:101,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/userdb-sql.c:104,1
    - Dst: sql_query_get_result
      Src: /src/dovecot/src/auth/userdb-sql.c:105,1
    - Dst: struct userdb_sql_request*::callback
      Src: /src/dovecot/src/auth/userdb-sql.c:109,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/userdb-sql.c:110,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/userdb-sql.c:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - sql_result
    - sql_request
    argTypes:
    - struct sql_result*
    - struct userdb_sql_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 112
    functionName: sql_query_callback
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_request_db_log_unknown_user
    - db_sql_success
    - sql_query_get_result
    - e_error
    - sql_result_get_error
    - auth_request_unref
    - struct userdb_sql_request*::callback
    - i_free
    - sql_result_next_row
    linkageType: ''
    returnType: void
    signature: "void sql_query_callback(struct sql_result *sql_result,\n\t\t\t       struct
      userdb_sql_request *sql_request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sql_escape_string
      Src: /src/dovecot/src/auth/userdb-sql.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: userdb_sql_escape
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - sql_escape_string
    linkageType: ''
    returnType: char
    signature: char *userdb_sql_escape(const char *str, void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-sql.c:125,1
    - Dst: settings_get_params
      Src: /src/dovecot/src/auth/userdb-sql.c:134,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:134,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-sql.c:137,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:137,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-sql.c:138,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/userdb-sql.c:142,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/userdb-sql.c:143,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/userdb-sql.c:147,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:147,1
    - Dst: sql_query
      Src: /src/dovecot/src/auth/userdb-sql.c:149,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-sql.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - auth_request
    - callback
    argTypes:
    - struct auth_request*
    - userdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 151
    functionName: userdb_sql_lookup
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - container_of
    - auth_request_ref
    - e_debug
    - sql_query
    - settings_free
    - e_error
    - settings_get_params
    - callback
    - i_new
    linkageType: ''
    returnType: void
    signature: "void userdb_sql_lookup(struct auth_request *auth_request,\n\t\t\t
      \     userdb_callback_t *callback)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_ref
      Src: /src/dovecot/src/auth/userdb-sql.c:157,1
    - Dst: userdb_sql_iterate_deinit
      Src: /src/dovecot/src/auth/userdb-sql.c:160,1
    - Dst: userdb_sql_iterate_next
      Src: /src/dovecot/src/auth/userdb-sql.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sql_result
    - ctx
    argTypes:
    - struct sql_result*
    - struct sql_userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 163
    functionName: sql_iter_query_callback
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - userdb_sql_iterate_next
    - sql_result_ref
    - userdb_sql_iterate_deinit
    linkageType: ''
    returnType: void
    signature: "void sql_iter_query_callback(struct sql_result *sql_result,\n\t\t\t\t
      \   struct sql_userdb_iterate_context *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-sql.c:171,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/userdb-sql.c:176,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/userdb-sql.c:180,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-sql.c:182,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:182,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-sql.c:185,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:185,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-sql.c:191,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:191,1
    - Dst: sql_query
      Src: /src/dovecot/src/auth/userdb-sql.c:196,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/userdb-sql.c:197,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:197,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-sql.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - auth_request
    - callback
    - context
    argTypes:
    - struct auth_request*
    - userdb_iter_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 201
    functionName: userdb_sql_iterate_init
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - container_of
    - auth_request_ref
    - e_debug
    - settings_free
    - e_error
    - i_new
    - sql_query
    - settings_get
    linkageType: ''
    returnType: struct userdb_iterate_context
    signature: "struct userdb_iterate_context *\nuserdb_sql_iterate_init(struct auth_request
      *auth_request,\n\t\t\tuserdb_iter_callback_t *callback, void *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sql_result_find_field
      Src: /src/dovecot/src/auth/userdb-sql.c:210,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/auth/userdb-sql.c:212,1
    - Dst: sql_result_find_field
      Src: /src/dovecot/src/auth/userdb-sql.c:217,1
    - Dst: sql_result_get_field_value
      Src: /src/dovecot/src/auth/userdb-sql.c:223,1
    - Dst: sql_result_find_field_value
      Src: /src/dovecot/src/auth/userdb-sql.c:227,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/userdb-sql.c:229,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - user_r
    argTypes:
    - struct sql_userdb_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 231
    functionName: userdb_sql_iterate_get_user
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - sql_result_get_field_value
    - t_strconcat
    - sql_result_find_field_value
    - sql_result_find_field
    linkageType: ''
    returnType: int
    signature: "int userdb_sql_iterate_get_user(struct sql_userdb_iterate_context
      *ctx,\n\t\t\t\t       const char **user_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-sql.c:236,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/userdb-sql.c:241,1
    - Dst: sql_result_next_row
      Src: /src/dovecot/src/auth/userdb-sql.c:250,1
    - Dst: db_sql_success
      Src: /src/dovecot/src/auth/userdb-sql.c:252,1
    - Dst: userdb_sql_iterate_get_user
      Src: /src/dovecot/src/auth/userdb-sql.c:254,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-sql.c:255,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:255,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-sql.c:258,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:258,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/userdb-sql.c:261,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-sql.c:266,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-sql.c:266,1
    - Dst: sql_result_get_error
      Src: /src/dovecot/src/auth/userdb-sql.c:268,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/userdb-sql.c:271,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 272
    functionName: userdb_sql_iterate_next
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 1
    functionsReached:
    - struct userdb_iterate_context*::callback
    - authdb_event
    - container_of
    - db_sql_success
    - e_error
    - sql_result_get_error
    - userdb_sql_iterate_get_user
    - sql_result_next_row
    linkageType: ''
    returnType: void
    signature: void userdb_sql_iterate_next(struct userdb_iterate_context *_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-sql.c:277,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/userdb-sql.c:280,1
    - Dst: sql_result_unref
      Src: /src/dovecot/src/auth/userdb-sql.c:286,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/userdb-sql.c:287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 290
    functionName: userdb_sql_iterate_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 1
    functionsReached:
    - sql_result_unref
    - container_of
    - auth_request_unref
    - i_free
    linkageType: ''
    returnType: int
    signature: int userdb_sql_iterate_deinit(struct userdb_iterate_context *_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-sql.c:301,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-sql.c:306,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-sql.c:310,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-sql.c:314,1
    - Dst: sql_init_auto
      Src: /src/dovecot/src/auth/userdb-sql.c:315,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-sql.c:316,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-sql.c:317,1
    - Dst: userdb_set_cache_key
      Src: /src/dovecot/src/auth/userdb-sql.c:321,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-sql.c:324,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-sql.c:325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - pool
    - event
    - userdb_params
    - module_r
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct userdb_parameters*
    - struct userdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 292
    functionDepth: 5
    functionLinenumber: 292
    functionLinenumberEnd: 328
    functionName: userdb_sql_preinit
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - userdb_set_cache_key
    - p_new
    - sql_init_auto
    - settings_free
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int userdb_sql_preinit(pool_t pool, struct event *event,\n\t\t   const
      struct userdb_parameters *userdb_params,\n\t\t   struct userdb_module **module_r,
      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-sql.c:333,1
    - Dst: sql_get_flags
      Src: /src/dovecot/src/auth/userdb-sql.c:336,1
    - Dst: db_sql_connect
      Src: /src/dovecot/src/auth/userdb-sql.c:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 342
    functionName: userdb_sql_init
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - db_sql_connect
    - container_of
    - sql_get_flags
    linkageType: ''
    returnType: void
    signature: void userdb_sql_init(struct userdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-sql.c:347,1
    - Dst: sql_disconnect
      Src: /src/dovecot/src/auth/userdb-sql.c:351,1
    - Dst: sql_unref
      Src: /src/dovecot/src/auth/userdb-sql.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 344
    functionDepth: 4
    functionLinenumber: 344
    functionLinenumberEnd: 353
    functionName: userdb_sql_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-sql.c
    functionUses: 0
    functionsReached:
    - container_of
    - sql_unref
    - sql_disconnect
    linkageType: ''
    returnType: void
    signature: void userdb_sql_deinit(struct userdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: DEF_SECS
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_SECS(type, name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:85,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:86,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:87,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct event*
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 113
    functionName: auth_oauth2_settings_check
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool auth_oauth2_settings_check(struct event *event ATTR_UNUSED, void
      *_set,\n\t\t\t\t       pool_t pool ATTR_UNUSED, const char **error_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: http_client_init_auto
      Src: /src/dovecot/src/auth/db-oauth2.c:191,1
    - Dst: i_zero
      Src: /src/dovecot/src/auth/db-oauth2.c:194,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/db-oauth2.c:203,1
    - Dst: p_array_const_string_join
      Src: /src/dovecot/src/auth/db-oauth2.c:205,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/db-oauth2.c:208,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/auth/db-oauth2.c:210,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/db-oauth2.c:211,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/db-oauth2.c:211,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/db-oauth2.c:212,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/db-oauth2.c:213,1
    - Dst: array_append_space
      Src: /src/dovecot/src/auth/db-oauth2.c:215,1
    - Dst: array_front
      Src: /src/dovecot/src/auth/db-oauth2.c:216,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:219,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/db-oauth2.c:220,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/auth/db-oauth2.c:221,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/auth/db-oauth2.c:222,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-oauth2.c:223,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:234,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:236,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:238,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:240,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-oauth2.c:243,1
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/auth/db-oauth2.c:252,1
    - Dst: oauth2_validation_key_cache_init
      Src: /src/dovecot/src/auth/db-oauth2.c:254,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/auth/db-oauth2.c:260,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/auth/db-oauth2.c:261,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-oauth2.c:263,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 2
    argNames:
    - db
    - error_r
    argTypes:
    - struct db_oauth2*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 270
    functionName: db_oauth2_setup
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - event_unref
    - p_array_init
    - t_strdup_printf
    - array_is_empty
    - array_count
    - array_front
    - dcrypt_initialize
    - dict_init_auto
    - array_append_space
    - array_foreach_elem
    - i_zero
    - event_create
    - p_array_const_string_join
    - pool_datastack_create
    - http_client_init_auto
    - strcmp
    - http_url_parse
    - array_push_back
    - settings_event_add_filter_name
    - oauth2_validation_key_cache_init
    - ARRAY_TYPE
    linkageType: ''
    returnType: int
    signature: int db_oauth2_setup(struct db_oauth2 *db, const char **error_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/db-oauth2.c:277,1
    - Dst: event_add_category
      Src: /src/dovecot/src/auth/db-oauth2.c:278,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/auth/db-oauth2.c:279,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/db-oauth2.c:280,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-oauth2.c:282,1
    - Dst: settings_equal
      Src: /src/dovecot/src/auth/db-oauth2.c:289,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/db-oauth2.c:296,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-oauth2.c:297,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/db-oauth2.c:302,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/db-oauth2.c:303,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/auth/db-oauth2.c:307,1
    - Dst: db_oauth2_setup
      Src: /src/dovecot/src/auth/db-oauth2.c:309,1
    - Dst: db_oauth2_free
      Src: /src/dovecot/src/auth/db-oauth2.c:310,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 4
    argNames:
    - event
    - use_grant_password
    - db_r
    - error_r
    argTypes:
    - struct event*
    - bool
    - struct db_oauth2**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 272
    functionDepth: 4
    functionLinenumber: 272
    functionLinenumberEnd: 317
    functionName: db_oauth2_init
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - event_create
    - db_oauth2_free
    - event_unref
    - p_new
    - settings_equal
    - settings_event_add_filter_name
    - settings_free
    - db_oauth2_setup
    - settings_get
    - DLLIST_PREPEND
    - event_add_category
    linkageType: ''
    returnType: int
    signature: "int db_oauth2_init(struct event *event, bool use_grant_password, struct
      db_oauth2 **db_r,\n\t\t   const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/auth/db-oauth2.c:325,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-oauth2.c:330,1
    - Dst: oauth2_request_abort
      Src: /src/dovecot/src/auth/db-oauth2.c:335,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/auth/db-oauth2.c:338,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:339,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/auth/db-oauth2.c:344,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/auth/db-oauth2.c:346,1
    - Dst: oauth2_validation_key_cache_deinit
      Src: /src/dovecot/src/auth/db-oauth2.c:347,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/db-oauth2.c:348,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-oauth2.c:349,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/db-oauth2.c:350,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - _db
    argTypes:
    - struct db_oauth2**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 319
    functionDepth: 6
    functionLinenumber: 319
    functionLinenumberEnd: 351
    functionName: db_oauth2_free
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 1
    functionsReached:
    - http_client_deinit
    - event_unref
    - oauth2_validation_key_cache_deinit
    - settings_free
    - pool_unref
    - oauth2_request_abort
    - db_oauth2_callback
    - dict_deinit
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void db_oauth2_free(struct db_oauth2 **_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct db_oauth2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 356
    functionName: db_oauth2_get_openid_configuration_url
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *db_oauth2_get_openid_configuration_url(const struct db_oauth2
      *db)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/db-oauth2.c:361,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/db-oauth2.c:363,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct db_oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 358
    functionDepth: 4
    functionLinenumber: 358
    functionLinenumberEnd: 367
    functionName: db_oauth2_have_all_fields
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - auth_fields_exists
    linkageType: ''
    returnType: bool
    signature: bool db_oauth2_have_all_fields(struct db_oauth2_request *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-oauth2.c:376,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-oauth2.c:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - field_name
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 382
    functionName: db_oauth2_var_expand_func_oauth2
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - auth_fields_find
    linkageType: ''
    returnType: int
    signature: "int db_oauth2_var_expand_func_oauth2(const char *field_name,\n\t\t\t\t\t
      \   const char **value_r, void *context,\n\t\t\t\t\t    const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_var_expand_table_full
      Src: /src/dovecot/src/auth/db-oauth2.c:394,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/db-oauth2.c:404,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/auth/db-oauth2.c:405,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/db-oauth2.c:406,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-oauth2.c:407,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/db-oauth2.c:410,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/db-oauth2.c:412,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-oauth2.c:413,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/db-oauth2.c:416,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/db-oauth2.c:418,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/db-oauth2.c:419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - req
    - error_r
    argTypes:
    - struct db_oauth2_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 421
    functionName: db_oauth2_add_extra_fields
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - event_create
    - i_assert
    - event_unref
    - array_get
    - auth_request_set_field
    - settings_free
    - array_is_empty
    - event_set_ptr
    - settings_get
    - auth_request_get_var_expand_table_full
    linkageType: ''
    returnType: bool
    signature: bool db_oauth2_add_extra_fields(struct db_oauth2_request *req, const
      char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_init
      Src: /src/dovecot/src/auth/db-oauth2.c:429,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:432,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:432,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/db-oauth2.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - req
    - fields
    argTypes:
    - struct db_oauth2_request*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 423
    functionDepth: 3
    functionLinenumber: 423
    functionLinenumberEnd: 437
    functionName: db_oauth2_fields_merge
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - e_debug
    - authdb_event
    - auth_fields_init
    - auth_fields_add
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_fields_merge(struct db_oauth2_request *req,\n\t\t\t\t
      \  ARRAY_TYPE(oauth2_field) *fields)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:432,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:432,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/db-oauth2.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 436
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 97
    functionsReached:
    - e_debug
    - authdb_event
    - auth_fields_add
    linkageType: ''
    returnType: void
    signature: void array_foreach(fields, field)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - fields
    - name
    argTypes:
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 449
    functionName: db_oauth2_field_find
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      db_oauth2_field_find(const ARRAY_TYPE(oauth2_field) *fields, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 447
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 97
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void array_foreach(fields, f)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-oauth2.c:458,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/auth/db-oauth2.c:463,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/db-oauth2.c:465,1
    - Dst: callback
      Src: /src/dovecot/src/auth/db-oauth2.c:466,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - req
    - result
    - error_prefix
    - error
    argTypes:
    - struct db_oauth2_request*
    - enum passdb_result
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 468
    functionName: db_oauth2_callback
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 1
    functionsReached:
    - t_strconcat
    - i_assert
    - DLLIST_REMOVE
    - callback
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_callback(struct db_oauth2_request *req,\n\t\t\t       enum
      passdb_result result,\n\t\t\t       const char *error_prefix, const char *error)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-oauth2.c:482,1
    - Dst: t_strcut
      Src: /src/dovecot/src/auth/db-oauth2.c:491,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/auth/db-oauth2.c:492,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/db-oauth2.c:494,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/db-oauth2.c:494,1
    - Dst: var_expand
      Src: /src/dovecot/src/auth/db-oauth2.c:501,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-oauth2.c:503,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:507,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-oauth2.c:507,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-oauth2.c:508,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-oauth2.c:509,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/db-oauth2.c:513,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/db-oauth2.c:513,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - req
    - result_r
    - error_r
    argTypes:
    - struct db_oauth2_request*
    - enum passdb_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 516
    functionName: db_oauth2_validate_username
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - p_strdup
    - i_strchr_to_next
    - auth_fields_find
    - strlen
    - t_strdup_printf
    - t_strcut
    - var_expand
    linkageType: ''
    returnType: bool
    signature: "bool db_oauth2_validate_username(struct db_oauth2_request *req,\n\t\t\t
      \   enum passdb_result *result_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:523,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:523,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-oauth2.c:529,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:532,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:532,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:541,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:541,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:547,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:548,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:548,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:558,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:558,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - req
    - result_r
    - error_r
    argTypes:
    - struct db_oauth2_request*
    - enum passdb_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 518
    functionDepth: 3
    functionLinenumber: 518
    functionLinenumberEnd: 561
    functionName: db_oauth2_user_is_enabled
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - e_debug
    - authdb_event
    - strcmp
    - auth_fields_find
    linkageType: ''
    returnType: bool
    signature: "bool db_oauth2_user_is_enabled(struct db_oauth2_request *req,\n\t\t\t
      \ enum passdb_result *result_r, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/db-oauth2.c:568,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-oauth2.c:570,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/db-oauth2.c:573,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:574,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:574,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/auth/db-oauth2.c:580,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/auth/db-oauth2.c:581,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/db-oauth2.c:582,1
    - Dst: str_array_find
      Src: /src/dovecot/src/auth/db-oauth2.c:583,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-oauth2.c:588,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - req
    - result_r
    - error_r
    argTypes:
    - struct db_oauth2_request*
    - enum passdb_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 563
    functionDepth: 3
    functionLinenumber: 563
    functionLinenumberEnd: 594
    functionName: db_oauth2_token_in_scope
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - auth_fields_find
    - e_debug
    - t_strsplit_tabescaped
    - array_foreach_elem
    - t_strdup_printf
    - array_is_empty
    - t_strsplit_spaces
    - str_array_find
    linkageType: ''
    returnType: bool
    signature: "bool db_oauth2_token_in_scope(struct db_oauth2_request *req,\n\t\t\t
      enum passdb_result *result_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: db_oauth2_user_is_enabled
      Src: /src/dovecot/src/auth/db-oauth2.c:602,1
    - Dst: db_oauth2_validate_username
      Src: /src/dovecot/src/auth/db-oauth2.c:603,1
    - Dst: db_oauth2_token_in_scope
      Src: /src/dovecot/src/auth/db-oauth2.c:604,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/db-oauth2.c:610,1
    - Dst: db_oauth2_add_extra_fields
      Src: /src/dovecot/src/auth/db-oauth2.c:611,1
    - Dst: auth_fields_rollback
      Src: /src/dovecot/src/auth/db-oauth2.c:612,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-oauth2.c:617,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - req
    - result_r
    - error_r
    argTypes:
    - struct db_oauth2_request*
    - enum passdb_result*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 596
    functionDepth: 4
    functionLinenumber: 596
    functionLinenumberEnd: 619
    functionName: db_oauth2_process_fields
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - db_oauth2_validate_username
    - auth_fields_snapshot
    - db_oauth2_token_in_scope
    - auth_fields_rollback
    - db_oauth2_user_is_enabled
    - db_oauth2_add_extra_fields
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_process_fields(struct db_oauth2_request *req,\n\t\t\t\t
      \    enum passdb_result *result_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:635,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:635,1
    - Dst: db_oauth2_fields_merge
      Src: /src/dovecot/src/auth/db-oauth2.c:637,1
    - Dst: db_oauth2_process_fields
      Src: /src/dovecot/src/auth/db-oauth2.c:638,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - result
    - req
    argTypes:
    - struct oauth2_request_result*
    - struct db_oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 621
    functionDepth: 5
    functionLinenumber: 621
    functionLinenumberEnd: 641
    functionName: db_oauth2_introspect_continue
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_debug
    - db_oauth2_fields_merge
    - db_oauth2_callback
    - db_oauth2_process_fields
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_introspect_continue(struct oauth2_request_result *result,\n\t\t\t
      \     struct db_oauth2_request *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/db-oauth2.c:646,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:648,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:648,1
    - Dst: oauth2_introspection_start
      Src: /src/dovecot/src/auth/db-oauth2.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct db_oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 643
    functionDepth: 2
    functionLinenumber: 643
    functionLinenumberEnd: 664
    functionName: db_oauth2_lookup_introspect
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - i_zero
    - authdb_event
    - e_debug
    - oauth2_introspection_start
    linkageType: ''
    returnType: void
    signature: void db_oauth2_lookup_introspect(struct db_oauth2_request *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/auth/db-oauth2.c:672,1
    - Dst: t_array_init
      Src: /src/dovecot/src/auth/db-oauth2.c:673,1
    - Dst: oauth2_try_parse_jwt
      Src: /src/dovecot/src/auth/db-oauth2.c:674,1
    - Dst: db_oauth2_fields_merge
      Src: /src/dovecot/src/auth/db-oauth2.c:678,1
    - Dst: db_oauth2_process_fields
      Src: /src/dovecot/src/auth/db-oauth2.c:679,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:682,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:682,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - req
    - token
    argTypes:
    - struct db_oauth2_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 666
    functionDepth: 6
    functionLinenumber: 666
    functionLinenumberEnd: 687
    functionName: db_oauth2_local_validation
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - oauth2_try_parse_jwt
    - e_debug
    - db_oauth2_fields_merge
    - t_array_init
    - db_oauth2_callback
    - ARRAY_TYPE
    - db_oauth2_process_fields
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_local_validation(struct db_oauth2_request *req,\n\t\t\t\t
      \      const char *token)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: db_oauth2_fields_merge
      Src: /src/dovecot/src/auth/db-oauth2.c:697,1
    - Dst: db_oauth2_have_all_fields
      Src: /src/dovecot/src/auth/db-oauth2.c:698,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:703,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:703,1
    - Dst: db_oauth2_local_validation
      Src: /src/dovecot/src/auth/db-oauth2.c:705,1
    - Dst: db_oauth2_user_is_enabled
      Src: /src/dovecot/src/auth/db-oauth2.c:707,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:708,1
    - Dst: db_oauth2_lookup_introspect
      Src: /src/dovecot/src/auth/db-oauth2.c:712,1
    - Dst: db_oauth2_process_fields
      Src: /src/dovecot/src/auth/db-oauth2.c:715,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:716,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - req
    - fields
    - error_prefix
    argTypes:
    - struct db_oauth2_request*
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 689
    functionDepth: 7
    functionLinenumber: 689
    functionLinenumberEnd: 717
    functionName: db_oauth2_lookup_continue_valid
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - db_oauth2_local_validation
    - e_debug
    - db_oauth2_user_is_enabled
    - db_oauth2_fields_merge
    - db_oauth2_have_all_fields
    - db_oauth2_callback
    - db_oauth2_process_fields
    - db_oauth2_lookup_introspect
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_lookup_continue_valid(struct db_oauth2_request *req,\n\t\t\t\tARRAY_TYPE(oauth2_field)
      *fields,\n\t\t\t\tconst char *error_prefix)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-oauth2.c:723,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:727,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:730,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:734,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:734,1
    - Dst: db_oauth2_lookup_continue_valid
      Src: /src/dovecot/src/auth/db-oauth2.c:736,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - result
    - req
    argTypes:
    - struct oauth2_request_result*
    - struct db_oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 719
    functionDepth: 8
    functionLinenumber: 719
    functionLinenumberEnd: 739
    functionName: db_oauth2_lookup_continue
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - db_oauth2_lookup_continue_valid
    - authdb_event
    - e_debug
    - db_oauth2_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_lookup_continue(struct oauth2_request_result *result,\n\t\t\t
      \ struct db_oauth2_request *req)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-oauth2.c:748,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:752,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:752,1
    - Dst: db_oauth2_field_find
      Src: /src/dovecot/src/auth/db-oauth2.c:754,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:756,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/db-oauth2.c:760,1
    - Dst: db_oauth2_lookup_continue_valid
      Src: /src/dovecot/src/auth/db-oauth2.c:761,1
    - Dst: db_oauth2_field_find
      Src: /src/dovecot/src/auth/db-oauth2.c:772,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/db-oauth2.c:775,1
    - Dst: db_oauth2_callback
      Src: /src/dovecot/src/auth/db-oauth2.c:778,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - result
    - req
    argTypes:
    - struct oauth2_request_result*
    - struct db_oauth2_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 741
    functionDepth: 8
    functionLinenumber: 741
    functionLinenumberEnd: 780
    functionName: db_oauth2_lookup_passwd_grant
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 0
    functionsReached:
    - db_oauth2_lookup_continue_valid
    - authdb_event
    - p_strdup
    - strcmp
    - e_debug
    - db_oauth2_field_find
    - db_oauth2_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_lookup_passwd_grant(struct oauth2_request_result *result,\n\t\t\t
      \     struct db_oauth2_request *req)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/db-oauth2.c:788,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/db-oauth2.c:791,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:810,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:810,1
    - Dst: db_oauth2_local_validation
      Src: /src/dovecot/src/auth/db-oauth2.c:812,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:817,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:817,1
    - Dst: oauth2_passwd_grant_start
      Src: /src/dovecot/src/auth/db-oauth2.c:822,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:826,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:826,1
    - Dst: oauth2_introspection_start
      Src: /src/dovecot/src/auth/db-oauth2.c:829,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/db-oauth2.c:832,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/db-oauth2.c:832,1
    - Dst: oauth2_token_validation_start
      Src: /src/dovecot/src/auth/db-oauth2.c:835,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/db-oauth2.c:838,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/auth/db-oauth2.c:839,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 6
    argNames:
    - db
    - req
    - token
    - request
    - callback
    - context
    argTypes:
    - struct db_oauth2*
    - struct db_oauth2_request*
    - char*
    - struct auth_request*
    - db_oauth2_lookup_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 783
    functionDepth: 7
    functionLinenumber: 783
    functionLinenumberEnd: 840
    functionName: db_oauth2_lookup
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 2
    functionsReached:
    - i_zero
    - authdb_event
    - p_strdup
    - db_oauth2_local_validation
    - oauth2_introspection_start
    - e_debug
    - oauth2_token_validation_start
    - DLLIST_PREPEND
    - oauth2_passwd_grant_start
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void db_oauth2_lookup(struct db_oauth2 *db, struct db_oauth2_request
      *req,\n\t\t      const char *token, struct auth_request *request,\n\t\t      db_oauth2_lookup_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct db_oauth2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 845
    functionName: db_oauth2_use_worker
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool db_oauth2_use_worker(const struct db_oauth2 *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: db_oauth2_free
      Src: /src/dovecot/src/auth/db-oauth2.c:851,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 847
    functionDepth: 7
    functionLinenumber: 847
    functionLinenumberEnd: 853
    functionName: db_oauth2_deinit
    functionSourceFile: /src/dovecot/src/auth/db-oauth2.c
    functionUses: 2
    functionsReached:
    - db_oauth2_free
    linkageType: ''
    returnType: void
    signature: void db_oauth2_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - count
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: auth_worker_set_max_restart_request_count
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_worker_set_max_restart_request_count(unsigned int count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_has_connections
      Src: /src/dovecot/src/auth/auth-worker-server.c:70,1
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-worker-server.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 75
    functionName: auth_worker_get_client
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_has_connections
    - container_of
    linkageType: ''
    returnType: struct auth_worker_server
    signature: struct auth_worker_server *auth_worker_get_client(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_has_connections
      Src: /src/dovecot/src/auth/auth-worker-server.c:84,1
    - Dst: process_title_set
      Src: /src/dovecot/src/auth/auth-worker-server.c:86,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-server.c:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 87
    functionName: auth_worker_refresh_proctitle
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 4
    functionsReached:
    - process_title_set
    - auth_worker_has_connections
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void auth_worker_refresh_proctitle(const char *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/auth/auth-worker-server.c:92,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/auth/auth-worker-server.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct auth_worker_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 98
    functionName: auth_worker_server_check_throttle
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - connection_input_halt
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: void
    signature: void auth_worker_server_check_throttle(struct auth_worker_server *server)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_set_name
      Src: /src/dovecot/src/auth/auth-worker-server.c:104,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-worker-server.c:106,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-server.c:108,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-worker-server.c:110,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-worker-server.c:112,1
    - Dst: auth_worker_server_check_throttle
      Src: /src/dovecot/src/auth/auth-worker-server.c:114,1
    - Dst: auth_worker_server_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:115,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:116,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-worker-server.c:117,1
    - Dst: auth_worker_refresh_proctitle
      Src: /src/dovecot/src/auth/auth-worker-server.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - cmd
    - error
    - log_as_error
    argTypes:
    - struct auth_worker_command*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 120
    functionName: auth_worker_request_finished_full
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - event_unref
    - event_set_name
    - e_debug
    - auth_worker_server_unref
    - auth_worker_refresh_proctitle
    - e_error
    - event_add_str
    - auth_worker_server_check_throttle
    - i_free
    linkageType: ''
    returnType: void
    signature: "void auth_worker_request_finished_full(struct auth_worker_command
      *cmd,\n\t\t\t\t  const char *error, bool log_as_error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_request_finished_full
      Src: /src/dovecot/src/auth/auth-worker-server.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - error
    argTypes:
    - struct auth_worker_command*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: auth_worker_request_finished
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_request_finished_full
    linkageType: ''
    returnType: void
    signature: "void auth_worker_request_finished(struct auth_worker_command *cmd,\n\t\t\t\t\t
      const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_request_finished_full
      Src: /src/dovecot/src/auth/auth-worker-server.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - error
    argTypes:
    - struct auth_worker_command*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 3
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: auth_worker_request_finished_bug
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_request_finished_full
    linkageType: ''
    returnType: void
    signature: "void auth_worker_request_finished_bug(struct auth_worker_command *cmd,\n\t\t\t\t\t
      \    const char *error)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:140,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-worker-server.c:147,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/auth-worker-server.c:149,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-worker-server.c:151,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/auth-worker-server.c:152,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:157,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-worker-server.c:158,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/auth-worker-server.c:164,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/auth-worker-server.c:166,1
    - Dst: auth_request_init
      Src: /src/dovecot/src/auth/auth-worker-server.c:168,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - request_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - struct auth_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 134
    functionDepth: 4
    functionLinenumber: 134
    functionLinenumberEnd: 172
    functionName: auth_worker_auth_request_new
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - strchr
    - auth_fields_snapshot
    - auth_request_import
    - e_debug
    - auth_request_init
    - auth_request_new
    - auth_request_unref
    - t_strdup_until
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_auth_request_new(struct auth_worker_command *cmd,
      unsigned int id,\n\t\t\t\t  const char *const *args, struct auth_request **request_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/auth/auth-worker-server.c:178,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-worker-server.c:182,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/auth/auth-worker-server.c:183,1
    - Dst: str_data
      Src: /src/dovecot/src/auth/auth-worker-server.c:183,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-worker-server.c:183,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/auth/auth-worker-server.c:184,1
    - Dst: i_strchr_to_next
      Src: /src/dovecot/src/auth/auth-worker-server.c:186,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:186,1
    - Dst: t_strcut
      Src: /src/dovecot/src/auth/auth-worker-server.c:187,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/auth-worker-server.c:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - server
    - request
    - str
    argTypes:
    - struct auth_worker_server*
    - struct auth_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 193
    functionName: auth_worker_send_reply
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_strchr_to_next
    - str_data
    - str_len
    - e_warning
    - o_stream_nsend
    - o_stream_flush
    - o_stream_nsend_str
    - time
    - t_strcut
    linkageType: ''
    returnType: void
    signature: "void auth_worker_send_reply(struct auth_worker_server *server,\n\t\t\t\t
      \  struct auth_request *request,\n\t\t\t\t   string_t *str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:200,1
    - Dst: auth_fields_is_empty
      Src: /src/dovecot/src/auth/auth-worker-server.c:204,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - str
    - request
    argTypes:
    - string_t*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 209
    functionName: reply_append_extra_fields
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_fields_is_empty
    - auth_fields_append
    - str_append
    linkageType: ''
    returnType: void
    signature: void reply_append_extra_fields(string_t *str, struct auth_request *request)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:222,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:223,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-worker-server.c:226,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:227,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:229,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:231,1
    - Dst: passdb_result_to_string
      Src: /src/dovecot/src/auth/auth-worker-server.c:232,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:235,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-worker-server.c:237,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:238,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-worker-server.c:240,1
    - Dst: reply_append_extra_fields
      Src: /src/dovecot/src/auth/auth-worker-server.c:241,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:243,1
    - Dst: auth_worker_send_reply
      Src: /src/dovecot/src/auth/auth-worker-server.c:244,1
    - Dst: auth_request_passdb_lookup_end
      Src: /src/dovecot/src/auth/auth-worker-server.c:246,1
    - Dst: auth_worker_request_finished
      Src: /src/dovecot/src/auth/auth-worker-server.c:247,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - result
    - request
    argTypes:
    - enum passdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 211
    functionDepth: 4
    functionLinenumber: 211
    functionLinenumberEnd: 249
    functionName: verify_plain_callback
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 1
    functionsReached:
    - auth_worker_request_finished
    - auth_worker_send_reply
    - t_str_new
    - str_printfa
    - str_append_c
    - str_append_tabescaped
    - auth_fields_exists
    - auth_request_passdb_lookup_end
    - auth_request_unref
    - reply_append_extra_fields
    - str_append
    - passdb_result_to_string
    linkageType: ''
    returnType: void
    signature: "void verify_plain_callback(enum passdb_result result,\n\t\t\t\t  struct
      auth_request *request)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-server.c:263,1
    - Dst: auth_worker_auth_request_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:269,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-worker-server.c:274,1
    - Dst: auth_request_get_auth
      Src: /src/dovecot/src/auth/auth-worker-server.c:282,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:288,1
    - Dst: auth_request_passdb_lookup_begin
      Src: /src/dovecot/src/auth/auth-worker-server.c:294,1
    - Dst: struct auth_passdb*::passdb::iface::verify_plain
      Src: /src/dovecot/src/auth/auth-worker-server.c:295,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - error_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 251
    functionDepth: 5
    functionLinenumber: 251
    functionLinenumberEnd: 298
    functionName: auth_worker_handle_passv
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - auth_request_passdb_lookup_begin
    - auth_request_get_auth
    - auth_request_unref
    - auth_worker_auth_request_new
    - str_to_uint
    - struct auth_passdb*::passdb::iface::verify_plain
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_handle_passv(struct auth_worker_command *cmd,\n\t\t\t
      unsigned int id, const char *const *args,\n\t\t\t const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-server.c:314,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/auth-worker-server.c:321,1
    - Dst: auth_worker_auth_request_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:327,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-worker-server.c:332,1
    - Dst: auth_request_get_auth
      Src: /src/dovecot/src/auth/auth-worker-server.c:340,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:346,1
    - Dst: auth_request_password_verify
      Src: /src/dovecot/src/auth/auth-worker-server.c:353,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:355,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:356,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:359,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:362,1
    - Dst: passdb_result_to_string
      Src: /src/dovecot/src/auth/auth-worker-server.c:363,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:366,1
    - Dst: auth_worker_send_reply
      Src: /src/dovecot/src/auth/auth-worker-server.c:367,1
    - Dst: auth_worker_request_finished
      Src: /src/dovecot/src/auth/auth-worker-server.c:369,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:370,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - error_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 300
    functionDepth: 5
    functionLinenumber: 300
    functionLinenumberEnd: 372
    functionName: auth_worker_handle_passw
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_request_finished
    - auth_worker_send_reply
    - p_strdup
    - t_str_new
    - str_printfa
    - str_append_c
    - password_get_scheme
    - auth_request_get_auth
    - auth_request_password_verify
    - auth_request_unref
    - auth_worker_auth_request_new
    - str_to_uint
    - passdb_result_to_string
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_handle_passw(struct auth_worker_command *cmd,\n\t\t\t
      unsigned int id, const char *const *args,\n\t\t\t const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:386,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:387,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:390,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:393,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:395,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-worker-server.c:397,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:398,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:400,1
    - Dst: base64_encode
      Src: /src/dovecot/src/auth/auth-worker-server.c:401,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-server.c:403,1
    - Dst: reply_append_extra_fields
      Src: /src/dovecot/src/auth/auth-worker-server.c:405,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:407,1
    - Dst: auth_worker_send_reply
      Src: /src/dovecot/src/auth/auth-worker-server.c:408,1
    - Dst: auth_request_passdb_lookup_end
      Src: /src/dovecot/src/auth/auth-worker-server.c:410,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:411,1
    - Dst: auth_worker_request_finished
      Src: /src/dovecot/src/auth/auth-worker-server.c:412,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - result
    - credentials
    - size
    - request
    argTypes:
    - enum passdb_result
    - unsigned char*
    - size_t
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 374
    functionDepth: 4
    functionLinenumber: 374
    functionLinenumberEnd: 413
    functionName: lookup_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_request_finished
    - auth_worker_send_reply
    - t_str_new
    - str_printfa
    - str_append_c
    - base64_encode
    - str_append_tabescaped
    - auth_request_passdb_lookup_end
    - auth_request_unref
    - reply_append_extra_fields
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void lookup_credentials_callback(enum passdb_result result,\n\t\t\t
      \   const unsigned char *credentials, size_t size,\n\t\t\t    struct auth_request
      *request)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-server.c:426,1
    - Dst: auth_worker_auth_request_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:432,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-worker-server.c:437,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:443,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:450,1
    - Dst: auth_request_passdb_lookup_begin
      Src: /src/dovecot/src/auth/auth-worker-server.c:455,1
    - Dst: struct auth_request*::passdb::passdb::iface::lookup_credentials
      Src: /src/dovecot/src/auth/auth-worker-server.c:456,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - error_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 415
    functionDepth: 5
    functionLinenumber: 415
    functionLinenumberEnd: 459
    functionName: auth_worker_handle_passl
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - auth_request_passdb_lookup_begin
    - auth_request_unref
    - auth_worker_auth_request_new
    - str_to_uint
    - struct auth_request*::passdb::passdb::iface::lookup_credentials
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_handle_passl(struct auth_worker_command *cmd,\n\t\t\t
      unsigned int id, const char *const *args,\n\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:469,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:470,1
    - Dst: auth_worker_send_reply
      Src: /src/dovecot/src/auth/auth-worker-server.c:471,1
    - Dst: auth_worker_request_finished
      Src: /src/dovecot/src/auth/auth-worker-server.c:473,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - success
    - request
    argTypes:
    - bool
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 461
    functionDepth: 4
    functionLinenumber: 461
    functionLinenumberEnd: 476
    functionName: set_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_request_finished
    - auth_worker_send_reply
    - t_str_new
    - str_printfa
    - auth_request_unref
    linkageType: ''
    returnType: void
    signature: void set_credentials_callback(bool success, struct auth_request *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-server.c:488,1
    - Dst: auth_worker_auth_request_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:494,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:503,1
    - Dst: struct auth_request*::passdb::passdb::iface::set_credentials
      Src: /src/dovecot/src/auth/auth-worker-server.c:508,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - error_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 478
    functionDepth: 5
    functionLinenumber: 478
    functionLinenumberEnd: 511
    functionName: auth_worker_handle_setcred
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - struct auth_request*::passdb::passdb::iface::set_credentials
    - str_to_uint
    - auth_request_unref
    - auth_worker_auth_request_new
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_handle_setcred(struct auth_worker_command *cmd,\n\t\t\t
      \  unsigned int id, const char *const *args,\n\t\t\t   const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:522,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:523,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:526,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:529,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:532,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-worker-server.c:534,1
    - Dst: auth_fields_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:536,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:540,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:543,1
    - Dst: auth_worker_send_reply
      Src: /src/dovecot/src/auth/auth-worker-server.c:545,1
    - Dst: auth_request_userdb_lookup_end
      Src: /src/dovecot/src/auth/auth-worker-server.c:547,1
    - Dst: userdb_result_to_string
      Src: /src/dovecot/src/auth/auth-worker-server.c:549,1
    - Dst: auth_worker_request_finished
      Src: /src/dovecot/src/auth/auth-worker-server.c:550,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - result
    - auth_request
    argTypes:
    - enum userdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 513
    functionDepth: 4
    functionLinenumber: 513
    functionLinenumberEnd: 552
    functionName: lookup_user_callback
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_request_finished
    - auth_worker_send_reply
    - t_str_new
    - str_printfa
    - auth_fields_append
    - str_append_c
    - userdb_result_to_string
    - auth_request_userdb_lookup_end
    - str_append_tabescaped
    - auth_request_unref
    - str_append
    linkageType: ''
    returnType: void
    signature: "void lookup_user_callback(enum userdb_result result,\n\t\t     struct
      auth_request *auth_request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - userdbs
    - id
    argTypes:
    - struct auth_userdb*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 564
    functionName: auth_userdb_find_by_id
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct auth_userdb
    signature: 'struct auth_userdb *

      auth_userdb_find_by_id(struct auth_userdb *userdbs, unsigned int id)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-server.c:576,1
    - Dst: auth_worker_auth_request_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:581,1
    - Dst: auth_userdb_find_by_id
      Src: /src/dovecot/src/auth/auth-worker-server.c:588,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:591,1
    - Dst: auth_request_userdb_lookup_begin
      Src: /src/dovecot/src/auth/auth-worker-server.c:595,1
    - Dst: auth_request_init_userdb_reply
      Src: /src/dovecot/src/auth/auth-worker-server.c:597,1
    - Dst: struct auth_request*::userdb::userdb::iface::lookup
      Src: /src/dovecot/src/auth/auth-worker-server.c:599,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - error_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 566
    functionDepth: 5
    functionLinenumber: 566
    functionLinenumberEnd: 602
    functionName: auth_worker_handle_user
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - struct auth_request*::userdb::userdb::iface::lookup
    - auth_userdb_find_by_id
    - auth_request_userdb_lookup_begin
    - auth_request_unref
    - auth_request_init_userdb_reply
    - auth_worker_auth_request_new
    - str_to_uint
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_handle_user(struct auth_worker_command *cmd,\n\t\t\tunsigned
      int id, const char *const *args,\n\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_server_send_shutdown
      Src: /src/dovecot/src/auth/auth-worker-server.c:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 608
    functionName: auth_worker_server_idle_kill
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_server_send_shutdown
    linkageType: ''
    returnType: void
    signature: void auth_worker_server_idle_kill(struct connection *conn ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-server.c:617,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:619,1
    - Dst: struct auth_worker_list_context*::auth_request::userdb::userdb::iface::iterate_deinit
      Src: /src/dovecot/src/auth/auth-worker-server.c:620,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:623,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:625,1
    - Dst: auth_worker_send_reply
      Src: /src/dovecot/src/auth/auth-worker-server.c:626,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/auth/auth-worker-server.c:628,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/auth/auth-worker-server.c:629,1
    - Dst: auth_request_userdb_lookup_end
      Src: /src/dovecot/src/auth/auth-worker-server.c:631,1
    - Dst: auth_worker_request_finished
      Src: /src/dovecot/src/auth/auth-worker-server.c:632,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:633,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-worker-server.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct auth_worker_list_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 610
    functionDepth: 4
    functionLinenumber: 610
    functionLinenumberEnd: 635
    functionName: list_iter_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 26
    functionsReached:
    - auth_worker_request_finished
    - auth_worker_send_reply
    - t_str_new
    - str_printfa
    - connection_input_resume
    - auth_request_userdb_lookup_end
    - struct auth_worker_list_context*::auth_request::userdb::userdb::iface::iterate_deinit
    - auth_request_unref
    - o_stream_set_flush_callback
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void list_iter_deinit(struct auth_worker_list_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_iter_deinit
      Src: /src/dovecot/src/auth/auth-worker-server.c:646,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/auth/auth-worker-server.c:651,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:653,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:654,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/auth/auth-worker-server.c:655,1
    - Dst: str_data
      Src: /src/dovecot/src/auth/auth-worker-server.c:655,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-worker-server.c:655,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - user
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 637
    functionDepth: 5
    functionLinenumber: 637
    functionLinenumberEnd: 656
    functionName: list_iter_callback
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - list_iter_deinit
    - str_data
    - str_len
    - o_stream_cork
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void list_iter_callback(const char *user, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/auth/auth-worker-server.c:691,1
    - Dst: list_iter_deinit
      Src: /src/dovecot/src/auth/auth-worker-server.c:692,1
    - Dst: struct auth_worker_list_context*::auth_request::userdb::userdb::iface::iterate_next
      Src: /src/dovecot/src/auth/auth-worker-server.c:696,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct auth_worker_list_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 687
    functionDepth: 5
    functionLinenumber: 687
    functionLinenumberEnd: 698
    functionName: auth_worker_list_output
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - list_iter_deinit
    - struct auth_worker_list_context*::auth_request::userdb::userdb::iface::iterate_next
    linkageType: ''
    returnType: int
    signature: int auth_worker_list_output(struct auth_worker_list_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-server.c:712,1
    - Dst: auth_userdb_find_by_id
      Src: /src/dovecot/src/auth/auth-worker-server.c:717,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:723,1
    - Dst: auth_worker_auth_request_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:726,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-worker-server.c:728,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/auth/auth-worker-server.c:733,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/auth/auth-worker-server.c:735,1
    - Dst: auth_request_userdb_lookup_begin
      Src: /src/dovecot/src/auth/auth-worker-server.c:738,1
    - Dst: struct auth_worker_list_context*::auth_request::userdb::userdb::iface::iterate_init
      Src: /src/dovecot/src/auth/auth-worker-server.c:739,1
    - Dst: struct auth_worker_list_context*::auth_request::userdb::userdb::iface::iterate_next
      Src: /src/dovecot/src/auth/auth-worker-server.c:741,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - error_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 702
    functionDepth: 5
    functionLinenumber: 702
    functionLinenumberEnd: 743
    functionName: auth_worker_handle_list
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - connection_input_halt
    - auth_userdb_find_by_id
    - struct auth_worker_list_context*::auth_request::userdb::userdb::iface::iterate_next
    - auth_request_userdb_lookup_begin
    - i_new
    - struct auth_worker_list_context*::auth_request::userdb::userdb::iface::iterate_init
    - auth_worker_auth_request_new
    - str_to_uint
    - o_stream_set_flush_callback
    - i_free
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_handle_list(struct auth_worker_command *cmd,\n\t\t\tunsigned
      int id, const char *const *args,\n\t\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:747,1
    - Dst: auth_passdbs_generate_md5
      Src: /src/dovecot/src/auth/auth-worker-server.c:751,1
    - Dst: auth_userdbs_generate_md5
      Src: /src/dovecot/src/auth/auth-worker-server.c:752,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:754,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:755,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:755,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/auth-worker-server.c:757,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/auth/auth-worker-server.c:758,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:759,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:759,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - passdb_hash
    - userdb_hash
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 760
    functionName: auth_worker_verify_db_hash
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - auth_passdbs_generate_md5
    - str_truncate
    - auth_userdbs_generate_md5
    - binary_to_hex_append
    linkageType: ''
    returnType: bool
    signature: bool auth_worker_verify_db_hash(const char *passdb_hash, const char
      *userdb_hash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:771,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:772,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:775,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-worker-server.c:777,1
    - Dst: reply_append_extra_fields
      Src: /src/dovecot/src/auth/auth-worker-server.c:778,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-worker-server.c:780,1
    - Dst: auth_worker_send_reply
      Src: /src/dovecot/src/auth/auth-worker-server.c:781,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/auth/auth-worker-server.c:782,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:783,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:784,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-worker-server.c:786,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-server.c:788,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-worker-server.c:790,1
    - Dst: auth_worker_request_finished
      Src: /src/dovecot/src/auth/auth-worker-server.c:791,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - db_request
    - result
    - error
    - auth_request
    argTypes:
    - struct db_oauth2_request*
    - enum passdb_result
    - char*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 762
    functionDepth: 4
    functionLinenumber: 762
    functionLinenumberEnd: 792
    functionName: auth_worker_handle_token_continue
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - auth_worker_request_finished
    - auth_worker_send_reply
    - t_str_new
    - str_printfa
    - str_append_c
    - connection_input_resume
    - e_info
    - pool_unref
    - e_error
    - auth_request_unref
    - reply_append_extra_fields
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void auth_worker_handle_token_continue(struct db_oauth2_request *db_request,\n\t\t\t\t\t
      \     enum passdb_result result,\n\t\t\t\t\t      const char *error,\n\t\t\t\t\t
      \     struct auth_request *auth_request)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/auth-worker-server.c:800,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:802,1
    - Dst: auth_worker_auth_request_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:805,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:807,1
    - Dst: db_oauth2_init
      Src: /src/dovecot/src/auth/auth-worker-server.c:812,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-server.c:813,1
    - Dst: auth_worker_handle_token_continue
      Src: /src/dovecot/src/auth/auth-worker-server.c:814,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/auth/auth-worker-server.c:821,1
    - Dst: db_oauth2_lookup
      Src: /src/dovecot/src/auth/auth-worker-server.c:822,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - error_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 794
    functionDepth: 5
    functionLinenumber: 794
    functionLinenumberEnd: 825
    functionName: auth_worker_handler_oauth2_token
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - connection_input_halt
    - auth_worker_handle_token_continue
    - pool_unref
    - e_error
    - db_oauth2_init
    - db_oauth2_lookup
    - auth_worker_auth_request_new
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_handler_oauth2_token(struct auth_worker_command *cmd,
      unsigned int id,\n\t\t\t\t const char *const *args, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:836,1
    - Dst: auth_worker_handler_oauth2_token
      Src: /src/dovecot/src/auth/auth-worker-server.c:837,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-server.c:840,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - cmd
    - id
    - args
    - error_r
    argTypes:
    - struct auth_worker_command*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 827
    functionDepth: 6
    functionLinenumber: 827
    functionLinenumberEnd: 844
    functionName: auth_worker_handle_token
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    - auth_worker_handler_oauth2_token
    linkageType: ''
    returnType: bool
    signature: "bool auth_worker_handle_token(struct auth_worker_command *cmd, unsigned
      int id,\n\t\t\t const char *const *args, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/auth/auth-worker-server.c:849,1
    - Dst: str_array_length
      Src: /src/dovecot/src/auth/auth-worker-server.c:854,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:855,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-server.c:856,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/auth-worker-server.c:857,1
    - Dst: auth_worker_verify_db_hash
      Src: /src/dovecot/src/auth/auth-worker-server.c:861,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-server.c:862,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 869
    functionName: auth_worker_server_handshake_args
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strarray_join
    - str_array_length
    - e_error
    - auth_worker_verify_db_hash
    - connection_handshake_args_default
    linkageType: ''
    returnType: int
    signature: int auth_worker_server_handshake_args(struct connection *conn, const
      char *const *args)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-worker-server.c:879,1
    - Dst: str_array_length
      Src: /src/dovecot/src/auth/auth-worker-server.c:881,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-worker-server.c:882,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-worker-server.c:883,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/auth-worker-server.c:884,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/auth/auth-worker-server.c:888,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:890,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-worker-server.c:892,1
    - Dst: event_add_category
      Src: /src/dovecot/src/auth/auth-worker-server.c:893,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-worker-server.c:894,1
    - Dst: event_add_int
      Src: /src/dovecot/src/auth/auth-worker-server.c:895,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/auth/auth-worker-server.c:896,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-server.c:896,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-worker-server.c:899,1
    - Dst: auth_worker_refresh_proctitle
      Src: /src/dovecot/src/auth/auth-worker-server.c:908,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:909,1
    - Dst: auth_worker_handle_passv
      Src: /src/dovecot/src/auth/auth-worker-server.c:910,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:911,1
    - Dst: auth_worker_handle_passl
      Src: /src/dovecot/src/auth/auth-worker-server.c:912,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:913,1
    - Dst: auth_worker_handle_passw
      Src: /src/dovecot/src/auth/auth-worker-server.c:914,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:915,1
    - Dst: auth_worker_handle_setcred
      Src: /src/dovecot/src/auth/auth-worker-server.c:916,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:917,1
    - Dst: auth_worker_handle_user
      Src: /src/dovecot/src/auth/auth-worker-server.c:918,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:919,1
    - Dst: auth_worker_handle_list
      Src: /src/dovecot/src/auth/auth-worker-server.c:920,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-worker-server.c:921,1
    - Dst: auth_worker_handle_token
      Src: /src/dovecot/src/auth/auth-worker-server.c:922,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-server.c:924,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-server.c:928,1
    - Dst: auth_worker_request_finished_bug
      Src: /src/dovecot/src/auth/auth-worker-server.c:931,1
    - Dst: auth_worker_server_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:934,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 871
    functionDepth: 7
    functionLinenumber: 871
    functionLinenumberEnd: 936
    functionName: auth_worker_server_input_args
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - auth_worker_handle_user
    - auth_worker_handle_passw
    - str_to_uint
    - event_add_int
    - t_strarray_join
    - event_set_append_log_prefix
    - auth_worker_refresh_proctitle
    - io_loop_time_refresh
    - auth_worker_handle_setcred
    - event_add_str
    - event_create
    - auth_worker_handle_list
    - e_error
    - auth_worker_handle_token
    - i_assert
    - auth_worker_handle_passv
    - strcmp
    - container_of
    - e_debug
    - str_array_length
    - auth_worker_handle_passl
    - auth_worker_server_unref
    - auth_worker_request_finished_bug
    - i_new
    - event_add_category
    linkageType: ''
    returnType: int
    signature: int auth_worker_server_input_args(struct connection *conn, const char
      *const *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/auth/auth-worker-server.c:940,1
    - Dst: auth_worker_server_destroy
      Src: /src/dovecot/src/auth/auth-worker-server.c:941,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/auth/auth-worker-server.c:945,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/auth/auth-worker-server.c:948,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct auth_worker_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 951
    functionName: auth_worker_output
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - connection_input_resume
    - o_stream_get_buffer_used_size
    - auth_worker_server_destroy
    linkageType: ''
    returnType: int
    signature: int auth_worker_output(struct auth_worker_server *server)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-server.c:962,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/auth/auth-worker-server.c:963,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/auth-worker-server.c:964,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct auth_worker_server**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 965
    functionName: auth_worker_server_unref
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 2
    functionsReached:
    - i_assert
    - connection_deinit
    - i_free
    linkageType: ''
    returnType: void
    signature: void auth_worker_server_unref(struct auth_worker_server **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/auth-worker-server.c:970,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-worker-server.c:972,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/auth/auth-worker-server.c:974,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/auth/auth-worker-server.c:975,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/auth/auth-worker-server.c:976,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/auth/auth-worker-server.c:977,1
    - Dst: auth_worker_server_unref
      Src: /src/dovecot/src/auth/auth-worker-server.c:979,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/auth/auth-worker-server.c:980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 967
    functionDepth: 3
    functionLinenumber: 967
    functionLinenumberEnd: 981
    functionName: auth_worker_server_destroy
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 1
    functionsReached:
    - net_disconnect
    - container_of
    - connection_input_halt
    - o_stream_close
    - auth_worker_server_unref
    - i_assert
    - i_stream_close
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void auth_worker_server_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-worker-server.c:1003,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-worker-server.c:1003,1
    - Dst: master_service_get_process_limit
      Src: /src/dovecot/src/auth/auth-worker-server.c:1004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 1001
    functionDepth: 1
    functionLinenumber: 1001
    functionLinenumberEnd: 1005
    functionName: auth_worker_server_send_handshake
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 0
    functionsReached:
    - master_service_get_process_limit
    - o_stream_nsend_str
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void auth_worker_server_send_handshake(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/auth/auth-worker-server.c:1014,1
    - Dst: i_new
      Src: /src/dovecot/src/auth/auth-worker-server.c:1017,1
    - Dst: master_service_get_idle_kill_interval_secs
      Src: /src/dovecot/src/auth/auth-worker-server.c:1022,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/auth/auth-worker-server.c:1023,1
    - Dst: auth_worker_server_send_handshake
      Src: /src/dovecot/src/auth/auth-worker-server.c:1025,1
    - Dst: auth_worker_refresh_proctitle
      Src: /src/dovecot/src/auth/auth-worker-server.c:1027,1
    - Dst: auth_worker_server_send_error
      Src: /src/dovecot/src/auth/auth-worker-server.c:1030,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - auth
    - master_conn
    argTypes:
    - struct auth*
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1007
    functionDepth: 2
    functionLinenumber: 1007
    functionLinenumberEnd: 1032
    functionName: auth_worker_server_create
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 1
    functionsReached:
    - master_service_get_idle_kill_interval_secs
    - connection_list_init
    - auth_worker_server_send_handshake
    - auth_worker_refresh_proctitle
    - connection_init_server
    - auth_worker_server_send_error
    - i_new
    linkageType: ''
    returnType: struct auth_worker_server
    signature: "struct auth_worker_server *\nauth_worker_server_create(struct auth
      *auth,\n\t\t\t  const struct master_service_connection *master_conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_get_client
      Src: /src/dovecot/src/auth/auth-worker-server.c:1037,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-worker-server.c:1041,1
    - Dst: auth_worker_refresh_proctitle
      Src: /src/dovecot/src/auth/auth-worker-server.c:1044,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1034
    functionDepth: 2
    functionLinenumber: 1034
    functionLinenumberEnd: 1045
    functionName: auth_worker_server_send_error
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 2
    functionsReached:
    - auth_worker_get_client
    - o_stream_nsend_str
    - auth_worker_refresh_proctitle
    linkageType: ''
    returnType: void
    signature: void auth_worker_server_send_error(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_get_client
      Src: /src/dovecot/src/auth/auth-worker-server.c:1050,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-worker-server.c:1055,1
    - Dst: auth_worker_refresh_proctitle
      Src: /src/dovecot/src/auth/auth-worker-server.c:1060,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1047
    functionDepth: 2
    functionLinenumber: 1047
    functionLinenumberEnd: 1061
    functionName: auth_worker_server_send_success
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 1
    functionsReached:
    - auth_worker_get_client
    - o_stream_nsend_str
    - auth_worker_refresh_proctitle
    linkageType: ''
    returnType: void
    signature: void auth_worker_server_send_success(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_get_client
      Src: /src/dovecot/src/auth/auth-worker-server.c:1066,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/auth/auth-worker-server.c:1068,1
    - Dst: auth_worker_refresh_proctitle
      Src: /src/dovecot/src/auth/auth-worker-server.c:1070,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1063
    functionDepth: 2
    functionLinenumber: 1063
    functionLinenumberEnd: 1071
    functionName: auth_worker_server_send_shutdown
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 2
    functionsReached:
    - auth_worker_get_client
    - o_stream_nsend_str
    - auth_worker_refresh_proctitle
    linkageType: ''
    returnType: void
    signature: void auth_worker_server_send_shutdown(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_deinit
      Src: /src/dovecot/src/auth/auth-worker-server.c:1078,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/auth/auth-worker-server.c:1079,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1073
    functionDepth: 1
    functionLinenumber: 1073
    functionLinenumberEnd: 1080
    functionName: auth_worker_connections_destroy_all
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 1
    functionsReached:
    - connection_deinit
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void auth_worker_connections_destroy_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1085
    functionName: auth_worker_has_connections
    functionSourceFile: /src/dovecot/src/auth/auth-worker-server.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_worker_has_connections(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/auth/auth-token.c:42,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:45,1
    - Dst: fstat
      Src: /src/dovecot/src/auth/auth-token.c:49,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:50,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/auth/auth-token.c:51,1
    - Dst: S_ISREG
      Src: /src/dovecot/src/auth/auth-token.c:56,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:57,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/auth/auth-token.c:58,1
    - Dst: i_unlink
      Src: /src/dovecot/src/auth/auth-token.c:59,1
    - Dst: lstat
      Src: /src/dovecot/src/auth/auth-token.c:64,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:65,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/auth/auth-token.c:66,1
    - Dst: geteuid
      Src: /src/dovecot/src/auth/auth-token.c:72,1
    - Dst: S_ISREG
      Src: /src/dovecot/src/auth/auth-token.c:73,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/auth/auth-token.c:74,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:75,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/auth/auth-token.c:76,1
    - Dst: i_unlink
      Src: /src/dovecot/src/auth/auth-token.c:77,1
    - Dst: read_full
      Src: /src/dovecot/src/auth/auth-token.c:83,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:85,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:87,1
    - Dst: close
      Src: /src/dovecot/src/auth/auth-token.c:90,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:91,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-token.c:93,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 2
    argNames:
    - path
    - secret_r
    argTypes:
    - char*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 95
    functionName: auth_token_read_secret
    functionSourceFile: /src/dovecot/src/auth/auth-token.c
    functionUses: 0
    functionsReached:
    - lstat
    - geteuid
    - read_full
    - e_debug
    - i_close_fd
    - open
    - i_unlink
    - e_error
    - fstat
    - CMP_DEV_T
    - close
    - S_ISREG
    linkageType: ''
    returnType: int
    signature: "int auth_token_read_secret(const char *path,\n\t\t       unsigned
      char secret_r[AUTH_TOKEN_SECRET_LEN])"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-token.c:105,1
    - Dst: umask
      Src: /src/dovecot/src/auth/auth-token.c:107,1
    - Dst: open
      Src: /src/dovecot/src/auth/auth-token.c:108,1
    - Dst: umask
      Src: /src/dovecot/src/auth/auth-token.c:109,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:112,1
    - Dst: write_full
      Src: /src/dovecot/src/auth/auth-token.c:116,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:118,1
    - Dst: close
      Src: /src/dovecot/src/auth/auth-token.c:119,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:120,1
    - Dst: i_unlink
      Src: /src/dovecot/src/auth/auth-token.c:125,1
    - Dst: rename
      Src: /src/dovecot/src/auth/auth-token.c:129,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:130,1
    - Dst: i_unlink
      Src: /src/dovecot/src/auth/auth-token.c:131,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-token.c:135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - path
    - secret
    argTypes:
    - char*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 137
    functionName: auth_token_write_secret
    functionSourceFile: /src/dovecot/src/auth/auth-token.c
    functionUses: 0
    functionsReached:
    - rename
    - e_debug
    - write_full
    - umask
    - open
    - i_unlink
    - e_error
    - t_strconcat
    - close
    linkageType: ''
    returnType: int
    signature: "int auth_token_write_secret(const char *path,\n\t\t\tconst unsigned
      char secret[AUTH_TOKEN_SECRET_LEN])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-token.c:142,1
    - Dst: auth_token_read_secret
      Src: /src/dovecot/src/auth/auth-token.c:145,1
    - Dst: random_fill
      Src: /src/dovecot/src/auth/auth-token.c:146,1
    - Dst: auth_token_write_secret
      Src: /src/dovecot/src/auth/auth-token.c:148,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-token.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: auth_token_init
    functionSourceFile: /src/dovecot/src/auth/auth-token.c
    functionUses: 2
    functionsReached:
    - random_fill
    - e_error
    - auth_token_write_secret
    - auth_token_read_secret
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void auth_token_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/auth-token.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: auth_token_deinit
    functionSourceFile: /src/dovecot/src/auth/auth-token.c
    functionUses: 2
    functionsReached:
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void auth_token_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hmac_init
      Src: /src/dovecot/src/auth/auth-token.c:168,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-token.c:168,1
    - Dst: hmac_update
      Src: /src/dovecot/src/auth/auth-token.c:170,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-token.c:170,1
    - Dst: hmac_update
      Src: /src/dovecot/src/auth/auth-token.c:172,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-token.c:172,1
    - Dst: hmac_update
      Src: /src/dovecot/src/auth/auth-token.c:173,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-token.c:173,1
    - Dst: hmac_update
      Src: /src/dovecot/src/auth/auth-token.c:174,1
    - Dst: hmac_final
      Src: /src/dovecot/src/auth/auth-token.c:175,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/auth/auth-token.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - service
    - session_pid
    - username
    - session_id
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 178
    functionName: auth_token_get
    functionSourceFile: /src/dovecot/src/auth/auth-token.c
    functionUses: 2
    functionsReached:
    - hmac_update
    - strlen
    - hmac_final
    - hmac_init
    - binary_to_hex
    linkageType: ''
    returnType: char
    signature: "char *auth_token_get(const char *service, const char *session_pid,\n\t\t\t
      \  const char *username, const char *session_id)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb-blocking.c:24,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb-blocking.c:27,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb-blocking.c:30,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb-blocking.c:41,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/userdb-blocking.c:42,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-blocking.c:47,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-blocking.c:47,1
    - Dst: auth_fields_import_args
      Src: /src/dovecot/src/auth/userdb-blocking.c:53,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-blocking.c:55,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-blocking.c:55,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/userdb-blocking.c:58,1
    - Dst: auth_request_userdb_callback
      Src: /src/dovecot/src/auth/userdb-blocking.c:62,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/userdb-blocking.c:63,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - args
    - context
    argTypes:
    - struct auth_worker_connection*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 17
    functionDepth: 5
    functionLinenumber: 17
    functionLinenumberEnd: 65
    functionName: user_callback
    functionSourceFile: /src/dovecot/src/auth/userdb-blocking.c
    functionUses: 1
    functionsReached:
    - strcmp
    - authdb_event
    - auth_request_set_username_forced
    - e_error
    - auth_fields_exists
    - auth_request_unref
    - auth_fields_import_args
    - auth_request_userdb_callback
    linkageType: ''
    returnType: bool
    signature: "bool user_callback(struct auth_worker_connection *conn ATTR_UNUSED,\n\t\t\t
      \ const char *const *args, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/userdb-blocking.c:71,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/userdb-blocking.c:72,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/userdb-blocking.c:73,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/userdb-blocking.c:75,1
    - Dst: auth_worker_call
      Src: /src/dovecot/src/auth/userdb-blocking.c:76,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/userdb-blocking.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 78
    functionName: userdb_blocking_lookup
    functionSourceFile: /src/dovecot/src/auth/userdb-blocking.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - auth_request_ref
    - auth_worker_call
    - auth_request_export
    linkageType: ''
    returnType: void
    signature: void userdb_blocking_lookup(struct auth_request *request)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb-blocking.c:86,1
    - Dst: struct blocking_userdb_iterate_context*::ctx::callback
      Src: /src/dovecot/src/auth/userdb-blocking.c:90,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb-blocking.c:94,1
    - Dst: struct blocking_userdb_iterate_context*::ctx::callback
      Src: /src/dovecot/src/auth/userdb-blocking.c:97,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/userdb-blocking.c:98,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - conn
    - args
    - context
    argTypes:
    - struct auth_worker_connection*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 100
    functionName: iter_callback
    functionSourceFile: /src/dovecot/src/auth/userdb-blocking.c
    functionUses: 0
    functionsReached:
    - strcmp
    - auth_request_unref
    - struct blocking_userdb_iterate_context*::ctx::callback
    linkageType: ''
    returnType: bool
    signature: "bool iter_callback(struct auth_worker_connection *conn,\n\t\t\t  const
      char *const *args, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/userdb-blocking.c:109,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/userdb-blocking.c:110,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/userdb-blocking.c:111,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-blocking.c:113,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/userdb-blocking.c:118,1
    - Dst: auth_worker_call
      Src: /src/dovecot/src/auth/userdb-blocking.c:119,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/userdb-blocking.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - request
    - callback
    - context
    argTypes:
    - struct auth_request*
    - userdb_iter_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 122
    functionName: userdb_blocking_iter_init
    functionSourceFile: /src/dovecot/src/auth/userdb-blocking.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - auth_request_ref
    - p_new
    - auth_worker_call
    - auth_request_export
    linkageType: ''
    returnType: struct userdb_iterate_context
    signature: "struct userdb_iterate_context *\nuserdb_blocking_iter_init(struct
      auth_request *request,\n\t\t\t  userdb_iter_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/userdb-blocking.c:129,1
    - Dst: auth_worker_connection_resume_input
      Src: /src/dovecot/src/auth/userdb-blocking.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 133
    functionName: userdb_blocking_iter_next
    functionSourceFile: /src/dovecot/src/auth/userdb-blocking.c
    functionUses: 1
    functionsReached:
    - i_assert
    - auth_worker_connection_resume_input
    linkageType: ''
    returnType: void
    signature: void userdb_blocking_iter_next(struct userdb_iterate_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_worker_connection_resume_input
      Src: /src/dovecot/src/auth/userdb-blocking.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 149
    functionName: userdb_blocking_iter_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-blocking.c
    functionUses: 2
    functionsReached:
    - auth_worker_connection_resume_input
    linkageType: ''
    returnType: int
    signature: int userdb_blocking_iter_deinit(struct userdb_iterate_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/auth/auth-sasl-gssapi.c:12,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - set
    - gss_set_r
    argTypes:
    - struct auth_settings*
    - struct sasl_server_gssapi_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 15
    functionName: auth_sasl_mech_gssapi_settings_init
    functionSourceFile: /src/dovecot/src/auth/auth-sasl-gssapi.c
    functionUses: 2
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void auth_sasl_mech_gssapi_settings_init(\n\tconst struct auth_settings
      *set,\n\tstruct sasl_server_gssapi_settings *gss_set_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/test-auth-cache.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - auth_request ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct auth_request*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 27
    functionName: auth_request_get_var_expand_table_full
    functionSourceFile: /src/dovecot/src/auth/test-auth-cache.c
    functionUses: 5
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: struct var_expand_table
    signature: "struct var_expand_table *\nauth_request_get_var_expand_table_full(const
      struct auth_request *auth_request ATTR_UNUSED,\n\t\t\t\t       const char *username
      ATTR_UNUSED,\n\t\t\t\t       unsigned int *count ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-auth-cache.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - key
    - value_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: mock_get_passdb
    functionSourceFile: /src/dovecot/src/auth/test-auth-cache.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int mock_get_passdb(const char *key, const char **value_r,\n\t\t\t
      \  void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-auth-cache.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - key
    - value_r
    - ATTR_UNUSED
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: mock_get_userdb
    functionSourceFile: /src/dovecot/src/auth/test-auth-cache.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int mock_get_userdb(const char *key, const char **value_r,\n\t\t\t
      \  void *context ATTR_UNUSED, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: var_expand
      Src: /src/dovecot/src/auth/test-auth-cache.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - dest
    - str
    - auth_request
    - ATTR_UNUSED
    - escape_func ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - string_t*
    - char*
    - struct auth_request*
    - struct var_expand_table*
    - auth_request_escape_func_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 67
    functionName: auth_request_var_expand_with_table
    functionSourceFile: /src/dovecot/src/auth/test-auth-cache.c
    functionUses: 6
    functionsReached:
    - var_expand
    linkageType: ''
    returnType: int
    signature: "int auth_request_var_expand_with_table(string_t *dest, const char
      *str,\n\t\t\t\t       const struct auth_request *auth_request,\n\t\t\t\t       const
      struct var_expand_table *table ATTR_UNUSED,\n\t\t\t\t       auth_request_escape_func_t
      *escape_func ATTR_UNUSED,\n\t\t\t\t       const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-cache.c:93,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/test-auth-cache.c:95,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-auth-cache.c:96,1
    - Dst: auth_cache_parse_key_and_fields
      Src: /src/dovecot/src/auth/test-auth-cache.c:96,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/auth/test-auth-cache.c:97,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/auth/test-auth-cache.c:99,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-cache.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 103
    functionName: test_auth_cache_parse_key
    functionSourceFile: /src/dovecot/src/auth/test-auth-cache.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - pool_datastack_create
    - auth_cache_parse_key_and_fields
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_cache_parse_key(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-auth-cache.c:119,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/test-auth-cache.c:121,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-auth-cache.c:122,1
    - Dst: auth_cache_parse_key_and_fields
      Src: /src/dovecot/src/auth/test-auth-cache.c:122,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/auth/test-auth-cache.c:123,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/auth/test-auth-cache.c:125,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-auth-cache.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 105
    functionDepth: 4
    functionLinenumber: 105
    functionLinenumberEnd: 129
    functionName: test_auth_cache_parse_key_errors
    functionSourceFile: /src/dovecot/src/auth/test-auth-cache.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - pool_datastack_create
    - auth_cache_parse_key_and_fields
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_cache_parse_key_errors(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/auth/test-auth-cache.c:133,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/test-auth-cache.c:134,1
    - Dst: test_run
      Src: /src/dovecot/src/auth/test-auth-cache.c:141,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/test-auth-cache.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 131
    functionDepth: 7
    functionLinenumber: 131
    functionLinenumberEnd: 145
    functionName: main
    functionSourceFile: /src/dovecot/src/auth/test-auth-cache.c
    functionUses: 9
    functionsReached:
    - event_unref
    - event_create
    - test_run
    - lib_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/passdb-cache.c:23,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/passdb-cache.c:24,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-cache.c:26,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-cache.c:26,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - request
    - value
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 15
    functionDepth: 2
    functionLinenumber: 15
    functionLinenumberEnd: 27
    functionName: passdb_cache_log_hit
    functionSourceFile: /src/dovecot/src/auth/passdb-cache.c
    functionUses: 0
    functionsReached:
    - e_debug
    - strchr
    - t_strconcat
    - authdb_event
    linkageType: ''
    returnType: void
    signature: void passdb_cache_log_hit(struct auth_request *request, const char
      *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_lookup
      Src: /src/dovecot/src/auth/passdb-cache.c:40,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-cache.c:43,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-cache.c:43,1
    - Dst: passdb_cache_log_hit
      Src: /src/dovecot/src/auth/passdb-cache.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 6
    argNames:
    - request
    - key
    - use_expired
    - node_r
    - value_r
    - neg_expired_r
    argTypes:
    - struct auth_request*
    - char*
    - bool
    - struct auth_cache_node**
    - char**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 29
    functionDepth: 4
    functionLinenumber: 29
    functionLinenumberEnd: 53
    functionName: passdb_cache_lookup
    functionSourceFile: /src/dovecot/src/auth/passdb-cache.c
    functionUses: 0
    functionsReached:
    - e_debug
    - authdb_event
    - passdb_cache_log_hit
    - auth_cache_lookup
    linkageType: ''
    returnType: bool
    signature: "bool passdb_cache_lookup(struct auth_request *request, const char
      *key,\n\t\t    bool use_expired, struct auth_cache_node **node_r,\n\t\t    const
      char **value_r, bool *neg_expired_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: passdb_blocking_auth_worker_reply_parse
      Src: /src/dovecot/src/auth/passdb-cache.c:63,1
    - Dst: auth_fields_rollback
      Src: /src/dovecot/src/auth/passdb-cache.c:65,1
    - Dst: auth_request_verify_plain_callback_finish
      Src: /src/dovecot/src/auth/passdb-cache.c:66,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/passdb-cache.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - args
    - context
    argTypes:
    - struct auth_worker_connection*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: passdb_cache_verify_plain_callback
    functionSourceFile: /src/dovecot/src/auth/passdb-cache.c
    functionUses: 0
    functionsReached:
    - passdb_blocking_auth_worker_reply_parse
    - auth_request_unref
    - auth_fields_rollback
    - auth_request_verify_plain_callback_finish
    linkageType: ''
    returnType: bool
    signature: "bool passdb_cache_verify_plain_callback(struct auth_worker_connection
      *conn ATTR_UNUSED,\n\t\t\t\t   const char *const *args,\n\t\t\t\t   void *context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: passdb_cache_lookup
      Src: /src/dovecot/src/auth/passdb-cache.c:83,1
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/passdb-cache.c:89,1
    - Dst: auth_request_verify_plain_callback_finish
      Src: /src/dovecot/src/auth/passdb-cache.c:91,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/auth/passdb-cache.c:95,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/passdb-cache.c:100,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-cache.c:100,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/passdb-cache.c:106,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/passdb-cache.c:107,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/passdb-cache.c:108,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/passdb-cache.c:109,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/passdb-cache.c:110,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/passdb-cache.c:111,1
    - Dst: auth_request_export
      Src: /src/dovecot/src/auth/passdb-cache.c:112,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-cache.c:114,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-cache.c:114,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/passdb-cache.c:116,1
    - Dst: auth_request_set_fields
      Src: /src/dovecot/src/auth/passdb-cache.c:119,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/passdb-cache.c:120,1
    - Dst: auth_worker_call
      Src: /src/dovecot/src/auth/passdb-cache.c:121,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/passdb-cache.c:121,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/passdb-cache.c:125,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/passdb-cache.c:126,1
    - Dst: auth_request_db_password_verify_log
      Src: /src/dovecot/src/auth/passdb-cache.c:128,1
    - Dst: auth_request_set_fields
      Src: /src/dovecot/src/auth/passdb-cache.c:146,1
    - Dst: auth_request_verify_plain_callback_finish
      Src: /src/dovecot/src/auth/passdb-cache.c:150,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 5
    argNames:
    - request
    - key
    - password
    - result_r
    - use_expired
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - enum passdb_result*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 71
    functionDepth: 5
    functionLinenumber: 71
    functionLinenumberEnd: 152
    functionName: passdb_cache_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-cache.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - auth_fields_snapshot
    - passdb_cache_lookup
    - auth_worker_call
    - str_append_tabescaped
    - auth_request_set_fields
    - auth_request_db_log_unknown_user
    - t_str_new
    - str_append_c
    - t_strsplit_tabescaped
    - auth_request_db_password_verify_log
    - auth_request_verify_plain_callback_finish
    - password_get_scheme
    - auth_request_export
    - i_assert
    - authdb_event
    - e_info
    - auth_request_ref
    - e_debug
    linkageType: ''
    returnType: bool
    signature: "bool passdb_cache_verify_plain(struct auth_request *request, const
      char *key,\n\t\t\t       const char *password,\n\t\t\t       enum passdb_result
      *result_r, bool use_expired)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: passdb_cache_lookup
      Src: /src/dovecot/src/auth/passdb-cache.c:167,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/auth/passdb-cache.c:179,1
    - Dst: auth_request_set_fields
      Src: /src/dovecot/src/auth/passdb-cache.c:180,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/passdb-cache.c:184,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/passdb-cache.c:185,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 6
    argNames:
    - request
    - key
    - password_r
    - scheme_r
    - result_r
    - use_expired
    argTypes:
    - struct auth_request*
    - char*
    - char**
    - char**
    - enum passdb_result*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 154
    functionDepth: 5
    functionLinenumber: 154
    functionLinenumberEnd: 187
    functionName: passdb_cache_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-cache.c
    functionUses: 0
    functionsReached:
    - password_get_scheme
    - t_strsplit_tabescaped
    - passdb_cache_lookup
    - auth_request_set_fields
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool passdb_cache_lookup_credentials(struct auth_request *request,\n\t\t\t\t
      \    const char *key, const char **password_r,\n\t\t\t\t     const char **scheme_r,\n\t\t\t\t
      \    enum passdb_result *result_r,\n\t\t\t\t     bool use_expired)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: restrict_get_process_size
      Src: /src/dovecot/src/auth/passdb-cache.c:196,1
    - Dst: i_warning
      Src: /src/dovecot/src/auth/passdb-cache.c:198,1
    - Dst: auth_cache_new
      Src: /src/dovecot/src/auth/passdb-cache.c:203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct auth_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 205
    functionName: passdb_cache_init
    functionSourceFile: /src/dovecot/src/auth/passdb-cache.c
    functionUses: 1
    functionsReached:
    - i_warning
    - auth_cache_new
    - restrict_get_process_size
    linkageType: ''
    returnType: void
    signature: void passdb_cache_init(const struct auth_settings *set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_free
      Src: /src/dovecot/src/auth/passdb-cache.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: passdb_cache_deinit
    functionSourceFile: /src/dovecot/src/auth/passdb-cache.c
    functionUses: 1
    functionsReached:
    - auth_cache_free
    linkageType: ''
    returnType: void
    signature: void passdb_cache_deinit(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/auth/passdb-static.c:19,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-static.c:19,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/passdb-static.c:20,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/passdb-static.c:20,1
    - Dst: auth_request_set_passdb_fields
      Src: /src/dovecot/src/auth/passdb-static.c:24,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-static.c:25,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/passdb-static.c:29,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/passdb-static.c:30,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-static.c:33,1
    - Dst: auth_request_password_missing
      Src: /src/dovecot/src/auth/passdb-static.c:34,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/passdb-static.c:37,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/auth/passdb-static.c:38,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/passdb-static.c:43,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - request
    - password_r
    - scheme_r
    argTypes:
    - struct auth_request*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 9
    functionDepth: 4
    functionLinenumber: 9
    functionLinenumberEnd: 47
    functionName: static_save_fields
    functionSourceFile: /src/dovecot/src/auth/passdb-static.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - p_strdup
    - password_get_scheme
    - e_debug
    - auth_request_set_field
    - settings_free
    - auth_request_set_passdb_fields
    - auth_fields_exists
    - auth_request_password_missing
    - settings_get
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result static_save_fields(struct auth_request *request,
      const char **password_r,\n\t\t   const char **scheme_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_save_fields
      Src: /src/dovecot/src/auth/passdb-static.c:57,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-static.c:59,1
    - Dst: auth_request_db_password_verify
      Src: /src/dovecot/src/auth/passdb-static.c:63,1
    - Dst: callback
      Src: /src/dovecot/src/auth/passdb-static.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 66
    functionName: static_verify_plain
    functionSourceFile: /src/dovecot/src/auth/passdb-static.c
    functionUses: 0
    functionsReached:
    - auth_request_db_password_verify
    - static_save_fields
    - callback
    linkageType: ''
    returnType: void
    signature: "void static_verify_plain(struct auth_request *request, const char
      *password,\n\t\t    verify_plain_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_save_fields
      Src: /src/dovecot/src/auth/passdb-static.c:76,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/passdb-static.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 68
    functionDepth: 5
    functionLinenumber: 68
    functionLinenumberEnd: 79
    functionName: static_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/passdb-static.c
    functionUses: 0
    functionsReached:
    - passdb_handle_credentials
    - static_save_fields
    linkageType: ''
    returnType: void
    signature: "void static_lookup_credentials(struct auth_request *request,\n\t\t\t
      \ lookup_credentials_callback_t *callback)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request.c:71,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:74,1
    - Dst: master_service_get_configured_name
      Src: /src/dovecot/src/auth/auth-request.c:74,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request.c:75,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:78,1
    - Dst: str_sanitize_append
      Src: /src/dovecot/src/auth/auth-request.c:80,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request.c:83,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request.c:85,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:86,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:89,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:90,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/auth/auth-request.c:90,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:93,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request.c:94,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:96,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:97,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:98,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request.c:101,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request.c:103,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:104,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request.c:106,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 107
    functionName: get_log_prefix
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - t_str_lcase
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - master_service_get_configured_name
    - str_sanitize_append
    - net_ip2addr
    - str_append
    linkageType: ''
    returnType: char
    signature: char *get_log_prefix(struct auth_request *auth_request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:118,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-request.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - auth_request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 123
    functionName: auth_request_get_log_prefix_db
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: 'char *

      auth_request_get_log_prefix_db(struct auth_request *auth_request)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-request.c:138,1
    - Dst: auth_request_fields_alloc
      Src: /src/dovecot/src/auth/auth-request.c:139,1
    - Dst: event_set_min_log_level
      Src: /src/dovecot/src/auth/auth-request.c:142,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/auth/auth-request.c:143,1
    - Dst: event_add_category
      Src: /src/dovecot/src/auth/auth-request.c:144,1
    - Dst: event_set_log_prefix_callback
      Src: /src/dovecot/src/auth/auth-request.c:145,1
    - Dst: auth_request_event_set_var_expand
      Src: /src/dovecot/src/auth/auth-request.c:147,1
    - Dst: p_array_init
      Src: /src/dovecot/src/auth/auth-request.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 2
    argNames:
    - request
    - parent_event
    argTypes:
    - struct auth_request*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 150
    functionName: auth_request_post_alloc_init
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_create
    - auth_request_fields_alloc
    - p_array_init
    - event_set_min_log_level
    - auth_request_event_set_var_expand
    - event_add_category
    - event_set_log_prefix_callback
    linkageType: ''
    returnType: void
    signature: "void auth_request_post_alloc_init(struct auth_request *request,\n\t\t\t
      \    struct event *parent_event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/auth-request.c:157,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-request.c:158,1
    - Dst: auth_request_post_alloc_init
      Src: /src/dovecot/src/auth/auth-request.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - parent_event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 152
    functionDepth: 3
    functionLinenumber: 152
    functionLinenumberEnd: 163
    functionName: auth_request_new
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 16
    functionsReached:
    - pool_alloconly_create
    - p_new
    - auth_request_post_alloc_init
    linkageType: ''
    returnType: struct auth_request
    signature: struct auth_request *auth_request_new(struct event *parent_event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:173,1
    - Dst: auth_refresh_proctitle
      Src: /src/dovecot/src/auth/auth-request.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - request
    - state
    argTypes:
    - struct auth_request*
    - enum auth_request_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 179
    functionName: auth_request_set_state
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 7
    functionsReached:
    - auth_refresh_proctitle
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_state(struct auth_request *request,\n\t\t\t
      \   enum auth_request_state state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_get_auth
      Src: /src/dovecot/src/auth/auth-request.c:185,1
    - Dst: auth_request_fields_init
      Src: /src/dovecot/src/auth/auth-request.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 192
    functionName: auth_request_init
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 5
    functionsReached:
    - auth_request_get_auth
    - auth_request_fields_init
    linkageType: ''
    returnType: void
    signature: void auth_request_init(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_request_init
      Src: /src/dovecot/src/auth/auth-request.c:197,1
    - Dst: auth_request_init
      Src: /src/dovecot/src/auth/auth-request.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - request
    - mech
    argTypes:
    - struct auth_request*
    - struct sasl_server_mech*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: auth_request_init_sasl
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - auth_request_init
    - auth_sasl_request_init
    linkageType: ''
    returnType: void
    signature: "void auth_request_init_sasl(struct auth_request *request,\n\t\t\t
      \   const struct sasl_server_mech *mech)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_find_protocol
      Src: /src/dovecot/src/auth/auth-request.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: auth_request_get_auth
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 6
    functionsReached:
    - auth_find_protocol
    linkageType: ''
    returnType: struct auth
    signature: struct auth *auth_request_get_auth(struct auth_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:209,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/auth-request.c:213,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-request.c:217,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/auth/auth-request.c:219,1
    - Dst: buffer_append
      Src: /src/dovecot/src/auth/auth-request.c:220,1
    - Dst: auth_request_policy_check_callback
      Src: /src/dovecot/src/auth/auth-request.c:224,1
    - Dst: auth_policy_check
      Src: /src/dovecot/src/auth/auth-request.c:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct auth_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 206
    functionDepth: 20
    functionLinenumber: 206
    functionLinenumberEnd: 231
    functionName: auth_request_success
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - auth_fields_snapshot
    - p_new
    - auth_policy_check
    - buffer_create_dynamic
    - auth_request_policy_check_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_request_success(struct auth_request *request,\n\t\t\t  const
      void *data, size_t data_size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/auth/auth-request.c:236,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/auth/auth-request.c:240,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/auth/auth-request.c:242,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/auth/auth-request.c:245,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/auth/auth-request.c:251,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/auth/auth-request.c:253,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/auth/auth-request.c:255,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/auth/auth-request.c:256,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/auth/auth-request.c:258,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - request
    - event
    argTypes:
    - struct auth_request*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 261
    functionName: auth_request_finished_event
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - struct event_passthrough*::add_int
    - event_create_passthrough
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      auth_request_finished_event(struct auth_request *request, struct event *event)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_finished_event
      Src: /src/dovecot/src/auth/auth-request.c:269,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:271,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/auth/auth-request.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 272
    functionName: auth_request_log_finished
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - e_debug
    - struct event_passthrough*::event
    - auth_request_finished_event
    linkageType: ''
    returnType: void
    signature: void auth_request_log_finished(struct auth_request *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:277,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request.c:279,1
    - Dst: auth_request_fail
      Src: /src/dovecot/src/auth/auth-request.c:283,1
    - Dst: auth_request_set_auth_successful
      Src: /src/dovecot/src/auth/auth-request.c:286,1
    - Dst: auth_request_log_finished
      Src: /src/dovecot/src/auth/auth-request.c:289,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-request.c:293,1
    - Dst: auth_request_handler_reply_continue
      Src: /src/dovecot/src/auth/auth-request.c:301,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request.c:306,1
    - Dst: auth_request_refresh_last_access
      Src: /src/dovecot/src/auth/auth-request.c:307,1
    - Dst: auth_request_handler_reply
      Src: /src/dovecot/src/auth/auth-request.c:308,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct auth_policy_check_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 310
    functionName: auth_request_success_continue
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - auth_request_log_finished
    - auth_request_set_auth_successful
    - auth_request_handler_reply_continue
    - timeout_add
    - auth_request_fail
    - auth_request_set_state
    - auth_request_refresh_last_access
    - i_assert
    - auth_request_handler_reply
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_success_continue(struct auth_policy_check_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:315,1
    - Dst: auth_request_handler_reply_continue
      Src: /src/dovecot/src/auth/auth-request.c:325,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request.c:330,1
    - Dst: auth_request_refresh_last_access
      Src: /src/dovecot/src/auth/auth-request.c:331,1
    - Dst: auth_request_log_finished
      Src: /src/dovecot/src/auth/auth-request.c:332,1
    - Dst: auth_request_handler_reply
      Src: /src/dovecot/src/auth/auth-request.c:333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - request
    - final_data
    - final_data_size
    argTypes:
    - struct auth_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 335
    functionName: auth_request_fail_with_reply
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - auth_request_log_finished
    - auth_request_handler_reply_continue
    - auth_request_set_state
    - auth_request_refresh_last_access
    - i_assert
    - auth_request_handler_reply
    linkageType: ''
    returnType: void
    signature: "void auth_request_fail_with_reply(struct auth_request *request,\n\t\t\t\t
      \ const void *final_data, size_t final_data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_fail_with_reply
      Src: /src/dovecot/src/auth/auth-request.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 3
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: auth_request_fail
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 3
    functionsReached:
    - auth_request_fail_with_reply
    linkageType: ''
    returnType: void
    signature: void auth_request_fail(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_fail
      Src: /src/dovecot/src/auth/auth-request.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 4
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: auth_request_internal_failure
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - auth_request_fail
    linkageType: ''
    returnType: void
    signature: void auth_request_internal_failure(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: auth_request_ref
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_request_ref(struct auth_request *request)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:358,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:362,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-request.c:362,1
    - Dst: auth_request_handler_abort
      Src: /src/dovecot/src/auth/auth-request.c:365,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-request.c:367,1
    - Dst: auth_refresh_proctitle
      Src: /src/dovecot/src/auth/auth-request.c:369,1
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/auth-request.c:372,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-request.c:373,1
    - Dst: dns_lookup_abort
      Src: /src/dovecot/src/auth/auth-request.c:377,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request.c:378,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request.c:379,1
    - Dst: auth_sasl_request_deinit
      Src: /src/dovecot/src/auth/auth-request.c:381,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/auth-request.c:382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - _request
    argTypes:
    - struct auth_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 353
    functionDepth: 5
    functionLinenumber: 353
    functionLinenumberEnd: 383
    functionName: auth_request_unref
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 49
    functionsReached:
    - auth_refresh_proctitle
    - event_unref
    - strlen
    - pool_unref
    - safe_memset
    - array_count
    - timeout_remove
    - auth_sasl_request_deinit
    - dns_lookup_abort
    - i_assert
    - auth_request_handler_abort
    linkageType: ''
    returnType: void
    signature: void auth_request_unref(struct auth_request **_request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:390,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:393,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/auth/auth-request.c:394,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:396,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - request
    - key
    - value
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 401
    functionName: auth_request_import_master
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - strcmp
    - i_assert
    - str_to_pid
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_import_master(struct auth_request *request,\n\t\t\t\tconst
      char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:405,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request.c:407,1
    - Dst: auth_sasl_request_initial
      Src: /src/dovecot/src/auth/auth-request.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 410
    functionName: auth_request_initial
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - auth_request_set_state
    - auth_sasl_request_initial
    - i_assert
    linkageType: ''
    returnType: void
    signature: void auth_request_initial(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:415,1
    - Dst: auth_request_refresh_last_access
      Src: /src/dovecot/src/auth/auth-request.c:417,1
    - Dst: auth_sasl_request_continue
      Src: /src/dovecot/src/auth/auth-request.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - request
    - data
    - data_size
    argTypes:
    - struct auth_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 412
    functionDepth: 4
    functionLinenumber: 412
    functionLinenumberEnd: 419
    functionName: auth_request_continue
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - auth_sasl_request_continue
    - i_assert
    - auth_request_refresh_last_access
    linkageType: ''
    returnType: void
    signature: "void auth_request_continue(struct auth_request *request,\n\t\t\t   const
      unsigned char *data, size_t data_size)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:447,1
    - Dst: auth_cache_insert
      Src: /src/dovecot/src/auth/auth-request.c:456,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:463,1
    - Dst: password_generate_encoded
      Src: /src/dovecot/src/auth/auth-request.c:472,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:476,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/auth/auth-request.c:478,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request.c:483,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request.c:487,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:488,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request.c:489,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request.c:491,1
    - Dst: auth_fields_append
      Src: /src/dovecot/src/auth/auth-request.c:497,1
    - Dst: auth_cache_insert
      Src: /src/dovecot/src/auth/auth-request.c:500,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request.c:500,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - request
    - result
    argTypes:
    - struct auth_request*
    - enum passdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 421
    functionDepth: 4
    functionLinenumber: 421
    functionLinenumberEnd: 502
    functionName: auth_request_save_cache
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - auth_fields_append
    - str_append_c
    - i_unreached
    - auth_cache_insert
    - str_append_tabescaped
    - auth_fields_exists
    - p_strconcat
    - password_generate_encoded
    - str_append
    linkageType: ''
    returnType: void
    signature: "void auth_request_save_cache(struct auth_request *request,\n\t\t\tenum
      passdb_result result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/auth/auth-request.c:511,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/auth/auth-request.c:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - mechs
    - mech_name
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 514
    functionName: auth_request_mechanism_accepted
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - str_array_icase_find
    linkageType: ''
    returnType: bool
    signature: bool auth_request_mechanism_accepted(const char *const *mechs, const
      char *mech_name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match
      Src: /src/dovecot/src/auth/auth-request.c:536,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - filter
    - username
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 546
    functionName: auth_request_username_accepted
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - wildcard_match
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_username_accepted(const char *const *filter,\n\t\t\t\t
      \   const char *username)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_mechanism_accepted
      Src: /src/dovecot/src/auth/auth-request.c:561,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:562,1
    - Dst: auth_request_username_accepted
      Src: /src/dovecot/src/auth/auth-request.c:567,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:568,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:584,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - request
    - passdb
    argTypes:
    - struct auth_request*
    - struct auth_passdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 585
    functionName: auth_request_want_skip_passdb
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - auth_request_username_accepted
    - auth_request_mechanism_accepted
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_want_skip_passdb(struct auth_request *request,\n\t\t\t
      \     struct auth_passdb *passdb)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - request
    - userdb
    argTypes:
    - struct auth_request*
    - struct auth_userdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 600
    functionName: auth_request_want_skip_userdb
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_want_skip_userdb(struct auth_request *request,\n\t\t\t
      \     struct auth_userdb *userdb)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - result
    argTypes:
    - enum auth_request_cache_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 615
    functionName: auth_request_cache_result_to_str
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: 'char *

      auth_request_cache_result_to_str(enum auth_request_cache_result result)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:621,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:622,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-request.c:629,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request.c:630,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request.c:631,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request.c:631,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request.c:633,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/auth/auth-request.c:634,1
    - Dst: auth_driver_filter
      Src: /src/dovecot/src/auth/auth-request.c:635,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/auth/auth-request.c:636,1
    - Dst: event_set_log_prefix_callback
      Src: /src/dovecot/src/auth/auth-request.c:638,1
    - Dst: event_set_min_log_level
      Src: /src/dovecot/src/auth/auth-request.c:642,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:645,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/auth/auth-request.c:645,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/auth-request.c:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 617
    functionDepth: 3
    functionLinenumber: 617
    functionLinenumberEnd: 650
    functionName: auth_request_passdb_lookup_begin
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - dec2str
    - event_create
    - auth_driver_filter
    - event_set_min_log_level
    - e_debug
    - array_push_back
    - settings_event_add_filter_name
    - settings_event_add_list_filter_name
    - event_create_passthrough
    - event_add_str
    - i_assert
    - event_set_log_prefix_callback
    linkageType: ''
    returnType: void
    signature: void auth_request_passdb_lookup_begin(struct auth_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:655,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-request.c:655,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/auth-request.c:665,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:669,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/auth/auth-request.c:671,1
    - Dst: passdb_result_to_string
      Src: /src/dovecot/src/auth/auth-request.c:673,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/auth/auth-request.c:676,1
    - Dst: auth_request_cache_result_to_str
      Src: /src/dovecot/src/auth/auth-request.c:676,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:679,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/auth/auth-request.c:679,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-request.c:680,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/auth/auth-request.c:681,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - request
    - result
    argTypes:
    - struct auth_request*
    - enum passdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 652
    functionDepth: 2
    functionLinenumber: 652
    functionLinenumberEnd: 685
    functionName: auth_request_passdb_lookup_end
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 6
    functionsReached:
    - authdb_event
    - event_unref
    - auth_request_cache_result_to_str
    - e_debug
    - auth_request_set_field
    - array_count
    - struct event_passthrough*::event
    - event_create_passthrough
    - array_pop_back
    - i_assert
    - passdb_result_to_string
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void auth_request_passdb_lookup_end(struct auth_request *request,\n\t\t\t\t
      \   enum passdb_result result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:691,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:692,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-request.c:699,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request.c:700,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request.c:701,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request.c:701,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth-request.c:703,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/auth/auth-request.c:704,1
    - Dst: auth_driver_filter
      Src: /src/dovecot/src/auth/auth-request.c:705,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/auth/auth-request.c:706,1
    - Dst: event_set_log_prefix_callback
      Src: /src/dovecot/src/auth/auth-request.c:708,1
    - Dst: event_set_min_log_level
      Src: /src/dovecot/src/auth/auth-request.c:712,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:715,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/auth/auth-request.c:715,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/auth-request.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 687
    functionDepth: 3
    functionLinenumber: 687
    functionLinenumberEnd: 720
    functionName: auth_request_userdb_lookup_begin
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - dec2str
    - event_create
    - auth_driver_filter
    - event_set_min_log_level
    - e_debug
    - array_push_back
    - settings_event_add_filter_name
    - settings_event_add_list_filter_name
    - event_create_passthrough
    - event_add_str
    - i_assert
    - event_set_log_prefix_callback
    linkageType: ''
    returnType: void
    signature: void auth_request_userdb_lookup_begin(struct auth_request *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:725,1
    - Dst: array_count
      Src: /src/dovecot/src/auth/auth-request.c:725,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:726,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/auth/auth-request.c:728,1
    - Dst: userdb_result_to_string
      Src: /src/dovecot/src/auth/auth-request.c:730,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/auth/auth-request.c:733,1
    - Dst: auth_request_cache_result_to_str
      Src: /src/dovecot/src/auth/auth-request.c:733,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:736,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/auth/auth-request.c:736,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-request.c:737,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/auth/auth-request.c:738,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - request
    - result
    argTypes:
    - struct auth_request*
    - enum userdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 722
    functionDepth: 2
    functionLinenumber: 722
    functionLinenumberEnd: 742
    functionName: auth_request_userdb_lookup_end
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - authdb_event
    - userdb_result_to_string
    - event_unref
    - auth_request_cache_result_to_str
    - e_debug
    - array_count
    - struct event_passthrough*::event
    - event_create_passthrough
    - array_pop_back
    - i_assert
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void auth_request_userdb_lookup_end(struct auth_request *request,\n\t\t\t\t
      \   enum userdb_result result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/auth/auth-request.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 744
    functionDepth: 1
    functionLinenumber: 744
    functionLinenumberEnd: 755
    functionName: auth_request_get_internal_failure_delay
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - i_rand_limit
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int auth_request_get_internal_failure_delay(struct auth_request
      *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request.c:759,1
    - Dst: struct auth_request*::private_callback::lookup_credentials
      Src: /src/dovecot/src/auth/auth-request.c:763,1
    - Dst: struct auth_request*::private_callback::verify_plain
      Src: /src/dovecot/src/auth/auth-request.c:766,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request.c:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 757
    functionDepth: 6
    functionLinenumber: 757
    functionLinenumberEnd: 770
    functionName: auth_request_passdb_internal_failure
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - struct auth_request*::private_callback::lookup_credentials
    - struct auth_request*::private_callback::verify_plain
    - auth_request_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_passdb_internal_failure(struct auth_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request.c:779,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-request.c:781,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - field_name
    - value_r
    - context
    - error_r
    argTypes:
    - char*
    - char**
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 772
    functionDepth: 3
    functionLinenumber: 772
    functionLinenumberEnd: 785
    functionName: auth_request_fields_var_expand_lookup
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - auth_fields_find
    linkageType: ''
    returnType: int
    signature: "int auth_request_fields_var_expand_lookup(const char *field_name,
      const char **value_r,\n\t\t\t\t      void *context, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_replace
      Src: /src/dovecot/src/auth/auth-request.c:791,1
    - Dst: auth_request_set_passdb_fields_ex
      Src: /src/dovecot/src/auth/auth-request.c:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - fields
    argTypes:
    - struct auth_request*
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 798
    functionName: auth_request_set_passdb_fields
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 9
    functionsReached:
    - auth_request_set_passdb_fields_ex
    - t_str_replace
    linkageType: ''
    returnType: int
    signature: "int auth_request_set_passdb_fields(struct auth_request *request,\n\t\t\t\t
      \  struct auth_fields *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-request.c:805,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:805,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/auth/auth-request.c:813,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/auth-request.c:815,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:817,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-request.c:818,1
    - Dst: auth_request_set_strlist
      Src: /src/dovecot/src/auth/auth-request.c:821,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth-request.c:823,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-request.c:824,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - request
    - context
    - default_password_scheme
    - fn_table
    argTypes:
    - struct auth_request*
    - void*
    - char*
    - struct var_expand_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 800
    functionDepth: 2
    functionLinenumber: 800
    functionLinenumberEnd: 826
    functionName: auth_request_set_passdb_fields_ex
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 3
    functionsReached:
    - authdb_event
    - event_create
    - event_unref
    - settings_free
    - e_error
    - event_set_ptr
    - settings_get
    - auth_request_set_strlist
    linkageType: ''
    returnType: int
    signature: "int auth_request_set_passdb_fields_ex(struct auth_request *request,\n\t\t\t\t
      \     void *context,\n\t\t\t\t      const char *default_password_scheme,\n\t\t\t\t
      \     const struct var_expand_provider *fn_table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_replace
      Src: /src/dovecot/src/auth/auth-request.c:831,1
    - Dst: auth_request_set_userdb_fields_ex
      Src: /src/dovecot/src/auth/auth-request.c:837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - fields
    argTypes:
    - struct auth_request*
    - struct auth_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 838
    functionName: auth_request_set_userdb_fields
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 5
    functionsReached:
    - auth_request_set_userdb_fields_ex
    - t_str_replace
    linkageType: ''
    returnType: int
    signature: "int auth_request_set_userdb_fields(struct auth_request *request,\n\t\t\t\t
      \  struct auth_fields *fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-request.c:843,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:843,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/auth/auth-request.c:851,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/auth-request.c:853,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:855,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-request.c:856,1
    - Dst: auth_request_set_userdb_strlist
      Src: /src/dovecot/src/auth/auth-request.c:859,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth-request.c:860,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-request.c:861,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - request
    - context
    - fn_table
    argTypes:
    - struct auth_request*
    - void*
    - struct var_expand_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 840
    functionDepth: 2
    functionLinenumber: 840
    functionLinenumberEnd: 863
    functionName: auth_request_set_userdb_fields_ex
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - authdb_event
    - event_create
    - event_unref
    - auth_request_set_userdb_strlist
    - settings_free
    - e_error
    - event_set_ptr
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int auth_request_set_userdb_fields_ex(struct auth_request *request,
      void *context,\n\t\t\t\t      const struct var_expand_provider *fn_table)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: safe_memset
      Src: /src/dovecot/src/auth/auth-request.c:879,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-request.c:880,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:889,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:889,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/auth-request.c:911,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:922,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:922,1
    - Dst: auth_request_set_password_verified
      Src: /src/dovecot/src/auth/auth-request.c:948,1
    - Dst: auth_request_set_password_verified
      Src: /src/dovecot/src/auth/auth-request.c:956,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:965,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:966,1
    - Dst: auth_request_get_auth
      Src: /src/dovecot/src/auth/auth-request.c:973,1
    - Dst: auth_request_want_skip_passdb
      Src: /src/dovecot/src/auth/auth-request.c:979,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/auth-request.c:984,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/auth-request.c:988,1
    - Dst: auth_fields_rollback
      Src: /src/dovecot/src/auth/auth-request.c:991,1
    - Dst: auth_fields_rollback
      Src: /src/dovecot/src/auth/auth-request.c:993,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:1025,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1025,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1031,1
    - Dst: auth_request_get_internal_failure_delay
      Src: /src/dovecot/src/auth/auth-request.c:1034,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-request.c:1036,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-request.c:1037,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 118
    argCount: 4
    argNames:
    - result
    - request
    - next_passdb_r
    - master_login_r
    argTypes:
    - enum passdb_result*
    - struct auth_request*
    - struct auth_passdb**
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 865
    functionDepth: 3
    functionLinenumber: 865
    functionLinenumberEnd: 1043
    functionName: auth_request_finish_passdb_lookup
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - auth_fields_snapshot
    - auth_request_ref
    - auth_fields_rollback
    - e_debug
    - auth_request_want_skip_passdb
    - strlen
    - auth_request_set_field
    - timeout_add
    - e_error
    - auth_request_get_internal_failure_delay
    - auth_request_set_password_verified
    - auth_request_get_auth
    - i_assert
    - auth_fields_remove
    - safe_memset
    linkageType: ''
    returnType: int
    signature: "int auth_request_finish_passdb_lookup(enum passdb_result *result,\n\t\t\t\t
      \ struct auth_request *request,\n\t\t\t\t  struct auth_passdb **next_passdb_r,\n\t\t\t\t
      \ bool *master_login_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_finish_passdb_lookup
      Src: /src/dovecot/src/auth/auth-request.c:1054,1
    - Dst: auth_request_passdb_lookup_end
      Src: /src/dovecot/src/auth/auth-request.c:1056,1
    - Dst: auth_request_master_user_login_finish
      Src: /src/dovecot/src/auth/auth-request.c:1058,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - result
    - request
    argTypes:
    - enum passdb_result*
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1045
    functionDepth: 4
    functionLinenumber: 1045
    functionLinenumberEnd: 1062
    functionName: auth_request_handle_passdb_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - auth_request_finish_passdb_lookup
    - auth_request_master_user_login_finish
    - auth_request_passdb_lookup_end
    linkageType: ''
    returnType: int
    signature: "int auth_request_handle_passdb_callback(enum passdb_result *result,\n\t\t\t\t
      \   struct auth_request *request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_handle_passdb_callback
      Src: /src/dovecot/src/auth/auth-request.c:1070,1
    - Dst: auth_request_verify_plain
      Src: /src/dovecot/src/auth/auth-request.c:1072,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-request.c:1075,1
    - Dst: struct auth_request*::private_callback::verify_plain
      Src: /src/dovecot/src/auth/auth-request.c:1077,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request.c:1079,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - result
    - request
    argTypes:
    - enum passdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1064
    functionDepth: 6
    functionLinenumber: 1064
    functionLinenumberEnd: 1081
    functionName: auth_request_verify_plain_callback_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - auth_request_verify_plain
    - auth_request_ref
    - auth_request_handle_passdb_callback
    - auth_request_unref
    - struct auth_request*::private_callback::verify_plain
    linkageType: ''
    returnType: void
    signature: "void auth_request_verify_plain_callback_finish(enum passdb_result
      result,\n\t\t\t\t\t  struct auth_request *request)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1088,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request.c:1090,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:1093,1
    - Dst: auth_request_save_cache
      Src: /src/dovecot/src/auth/auth-request.c:1097,1
    - Dst: passdb_cache_verify_plain
      Src: /src/dovecot/src/auth/auth-request.c:1104,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1107,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1107,1
    - Dst: auth_request_verify_plain_callback_finish
      Src: /src/dovecot/src/auth/auth-request.c:1113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - result
    - request
    argTypes:
    - enum passdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1083
    functionDepth: 7
    functionLinenumber: 1083
    functionLinenumberEnd: 1114
    functionName: auth_request_verify_plain_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - authdb_event
    - e_info
    - auth_request_set_state
    - passdb_cache_verify_plain
    - auth_fields_exists
    - auth_request_verify_plain_callback_finish
    - auth_request_save_cache
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_request_verify_plain_callback(enum passdb_result result,\n\t\t\t\t\tstruct
      auth_request *request)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - password
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1116
    functionDepth: 0
    functionLinenumber: 1116
    functionLinenumberEnd: 1131
    functionName: password_has_illegal_chars
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool password_has_illegal_chars(const char *password)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1145
    functionName: auth_request_is_disabled_master_user
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - e_info
    linkageType: ''
    returnType: bool
    signature: bool auth_request_is_disabled_master_user(struct auth_request *request)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request.c:1151,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1153,1
    - Dst: struct auth_policy_check_ctx*::request::handler::verify_plain_continue_callback
      Src: /src/dovecot/src/auth/auth-request.c:1157,1
    - Dst: auth_request_lookup_credentials_policy_continue
      Src: /src/dovecot/src/auth/auth-request.c:1161,1
    - Dst: auth_request_success_continue
      Src: /src/dovecot/src/auth/auth-request.c:1165,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:1168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1147
    functionDepth: 3
    functionLinenumber: 1147
    functionLinenumberEnd: 1170
    functionName: auth_request_policy_penalty_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - auth_request_lookup_credentials_policy_continue
    - struct auth_policy_check_ctx*::request::handler::verify_plain_continue_callback
    - auth_request_success_continue
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_policy_penalty_finish(void *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1176,1
    - Dst: auth_request_policy_penalty_finish
      Src: /src/dovecot/src/auth/auth-request.c:1184,1
    - Dst: auth_request_fail
      Src: /src/dovecot/src/auth/auth-request.c:1189,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-request.c:1192,1
    - Dst: auth_request_policy_penalty_finish
      Src: /src/dovecot/src/auth/auth-request.c:1195,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1172
    functionDepth: 4
    functionLinenumber: 1172
    functionLinenumberEnd: 1197
    functionName: auth_request_policy_check_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - auth_request_policy_penalty_finish
    - auth_request_fail
    - i_assert
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void auth_request_policy_check_callback(int result, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1205,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request.c:1208,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1210,1
    - Dst: struct auth_request*::handler::verify_plain_continue_callback
      Src: /src/dovecot/src/auth/auth-request.c:1215,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-request.c:1218,1
    - Dst: auth_policy_check
      Src: /src/dovecot/src/auth/auth-request.c:1222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - request
    - password
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1199
    functionDepth: 20
    functionLinenumber: 1199
    functionLinenumberEnd: 1225
    functionName: auth_request_verify_plain
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - p_strdup
    - auth_policy_check
    - struct auth_request*::handler::verify_plain_continue_callback
    - p_new
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_request_verify_plain(struct auth_request *request,\n\t\t\t\tconst
      char *password,\n\t\t\t\tverify_plain_callback_t *callback)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1235,1
    - Dst: auth_request_is_disabled_master_user
      Src: /src/dovecot/src/auth/auth-request.c:1237,1
    - Dst: callback
      Src: /src/dovecot/src/auth/auth-request.c:1238,1
    - Dst: password_has_illegal_chars
      Src: /src/dovecot/src/auth/auth-request.c:1242,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1243,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1243,1
    - Dst: callback
      Src: /src/dovecot/src/auth/auth-request.c:1245,1
    - Dst: auth_request_want_skip_passdb
      Src: /src/dovecot/src/auth/auth-request.c:1251,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:1257,1
    - Dst: callback
      Src: /src/dovecot/src/auth/auth-request.c:1258,1
    - Dst: auth_request_passdb_lookup_begin
      Src: /src/dovecot/src/auth/auth-request.c:1262,1
    - Dst: passdb_cache_verify_plain
      Src: /src/dovecot/src/auth/auth-request.c:1266,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request.c:1271,1
    - Dst: auth_request_verify_plain_callback
      Src: /src/dovecot/src/auth/auth-request.c:1280,1
    - Dst: passdb_blocking_verify_plain
      Src: /src/dovecot/src/auth/auth-request.c:1283,1
    - Dst: struct auth_passdb*::passdb::iface::verify_plain
      Src: /src/dovecot/src/auth/auth-request.c:1285,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1227
    functionDepth: 8
    functionLinenumber: 1227
    functionLinenumberEnd: 1288
    functionName: auth_request_default_verify_plain_continue
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - auth_request_is_disabled_master_user
    - auth_request_want_skip_passdb
    - auth_request_passdb_lookup_begin
    - auth_request_verify_plain_callback
    - e_error
    - auth_request_set_state
    - passdb_cache_verify_plain
    - passdb_blocking_verify_plain
    - callback
    - i_assert
    - struct auth_passdb*::passdb::iface::verify_plain
    - password_has_illegal_chars
    linkageType: ''
    returnType: void
    signature: "void auth_request_default_verify_plain_continue(\n\tstruct auth_request
      *request, verify_plain_callback_t *callback)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_handle_passdb_callback
      Src: /src/dovecot/src/auth/auth-request.c:1298,1
    - Dst: auth_request_set_delayed_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1304,1
    - Dst: auth_request_lookup_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1307,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:1321,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1321,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/auth/auth-request.c:1323,1
    - Dst: struct auth_request*::private_callback::lookup_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1332,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 4
    argNames:
    - result
    - credentials
    - size
    - request
    argTypes:
    - enum passdb_result
    - unsigned char*
    - size_t
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1290
    functionDepth: 5
    functionLinenumber: 1290
    functionLinenumberEnd: 1335
    functionName: auth_request_lookup_credentials_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_debug
    - auth_request_handle_passdb_callback
    - struct auth_request*::private_callback::lookup_credentials
    - auth_request_lookup_credentials
    - binary_to_hex
    - auth_request_set_delayed_credentials
    linkageType: ''
    returnType: void
    signature: "void auth_request_lookup_credentials_finish(enum passdb_result result,\n\t\t\t\t
      \      const unsigned char *credentials,\n\t\t\t\t       size_t size,\n\t\t\t\t
      \      struct auth_request *request)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1345,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request.c:1347,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:1350,1
    - Dst: auth_request_save_cache
      Src: /src/dovecot/src/auth/auth-request.c:1354,1
    - Dst: passdb_cache_lookup_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1361,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1364,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1364,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1366,1
    - Dst: auth_request_lookup_credentials_finish
      Src: /src/dovecot/src/auth/auth-request.c:1374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - result
    - credentials
    - size
    - request
    argTypes:
    - enum passdb_result
    - unsigned char*
    - size_t
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1337
    functionDepth: 6
    functionLinenumber: 1337
    functionLinenumberEnd: 1376
    functionName: auth_request_lookup_credentials_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - e_info
    - passdb_cache_lookup_credentials
    - passdb_handle_credentials
    - auth_request_set_state
    - auth_fields_exists
    - auth_request_save_cache
    - i_assert
    - auth_request_lookup_credentials_finish
    linkageType: ''
    returnType: void
    signature: "void auth_request_lookup_credentials_callback(enum passdb_result result,\n\t\t\t\t\t
      \     const unsigned char *credentials,\n\t\t\t\t\t      size_t size,\n\t\t\t\t\t
      \     struct auth_request *request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1384,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request.c:1388,1
    - Dst: auth_request_lookup_credentials_policy_continue
      Src: /src/dovecot/src/auth/auth-request.c:1393,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-request.c:1396,1
    - Dst: auth_policy_check
      Src: /src/dovecot/src/auth/auth-request.c:1400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - request
    - scheme
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1378
    functionDepth: 20
    functionLinenumber: 1378
    functionLinenumberEnd: 1403
    functionName: auth_request_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 6
    functionsReached:
    - p_strdup
    - auth_policy_check
    - p_new
    - auth_request_lookup_credentials_policy_continue
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_request_lookup_credentials(struct auth_request *request,\n\t\t\t\t
      \    const char *scheme,\n\t\t\t\t     lookup_credentials_callback_t *callback)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1413,1
    - Dst: auth_request_is_disabled_master_user
      Src: /src/dovecot/src/auth/auth-request.c:1414,1
    - Dst: callback
      Src: /src/dovecot/src/auth/auth-request.c:1415,1
    - Dst: auth_request_want_skip_passdb
      Src: /src/dovecot/src/auth/auth-request.c:1419,1
    - Dst: callback
      Src: /src/dovecot/src/auth/auth-request.c:1429,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:1432,1
    - Dst: callback
      Src: /src/dovecot/src/auth/auth-request.c:1433,1
    - Dst: auth_request_passdb_lookup_begin
      Src: /src/dovecot/src/auth/auth-request.c:1437,1
    - Dst: passdb_cache_lookup_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1442,1
    - Dst: passdb_handle_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1446,1
    - Dst: auth_request_set_state
      Src: /src/dovecot/src/auth/auth-request.c:1456,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:1460,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1460,1
    - Dst: auth_request_lookup_credentials_callback
      Src: /src/dovecot/src/auth/auth-request.c:1462,1
    - Dst: passdb_blocking_lookup_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1466,1
    - Dst: struct auth_passdb*::passdb::iface::lookup_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1468,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - lookup_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1405
    functionDepth: 7
    functionLinenumber: 1405
    functionLinenumberEnd: 1471
    functionName: auth_request_lookup_credentials_policy_continue
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - authdb_event
    - auth_request_is_disabled_master_user
    - passdb_cache_lookup_credentials
    - auth_request_want_skip_passdb
    - auth_request_passdb_lookup_begin
    - passdb_handle_credentials
    - e_debug
    - passdb_blocking_lookup_credentials
    - e_error
    - auth_request_set_state
    - auth_request_lookup_credentials_callback
    - struct auth_passdb*::passdb::iface::lookup_credentials
    - callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_request_lookup_credentials_policy_continue(\n\tstruct auth_request
      *request, lookup_credentials_callback_t *callback)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_remove
      Src: /src/dovecot/src/auth/auth-request.c:1482,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-request.c:1486,1
    - Dst: passdb_blocking_set_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1488,1
    - Dst: struct auth_passdb*::passdb::iface::set_credentials
      Src: /src/dovecot/src/auth/auth-request.c:1490,1
    - Dst: callback
      Src: /src/dovecot/src/auth/auth-request.c:1494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - request
    - scheme
    - data
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - set_credentials_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1473
    functionDepth: 4
    functionLinenumber: 1473
    functionLinenumberEnd: 1496
    functionName: auth_request_set_credentials
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    - passdb_blocking_set_credentials
    - callback
    - auth_cache_remove
    - struct auth_passdb*::passdb::iface::set_credentials
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_credentials(struct auth_request *request,\n\t\t\t\t
      \ const char *scheme, const char *data,\n\t\t\t\t  set_credentials_callback_t
      *callback)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request.c:1512,1
    - Dst: auth_fields_append
      Src: /src/dovecot/src/auth/auth-request.c:1513,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-request.c:1518,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request.c:1519,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:1520,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/auth/auth-request.c:1521,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-request.c:1523,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:1526,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request.c:1528,1
    - Dst: auth_cache_insert
      Src: /src/dovecot/src/auth/auth-request.c:1531,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - request
    - result
    argTypes:
    - struct auth_request*
    - enum userdb_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1498
    functionDepth: 4
    functionLinenumber: 1498
    functionLinenumberEnd: 1533
    functionName: auth_request_userdb_save_cache
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - auth_fields_append
    - str_append_c
    - str_len
    - auth_cache_insert
    - str_append_tabescaped
    - str_append
    linkageType: ''
    returnType: void
    signature: "void auth_request_userdb_save_cache(struct auth_request *request,\n\t\t\t
      \      enum userdb_result result)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_cache_lookup
      Src: /src/dovecot/src/auth/auth-request.c:1543,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:1547,1
    - Dst: auth_request_get_log_prefix_db
      Src: /src/dovecot/src/auth/auth-request.c:1550,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:1554,1
    - Dst: auth_request_get_log_prefix_db
      Src: /src/dovecot/src/auth/auth-request.c:1556,1
    - Dst: auth_request_init_userdb_reply
      Src: /src/dovecot/src/auth/auth-request.c:1568,1
    - Dst: auth_request_userdb_import
      Src: /src/dovecot/src/auth/auth-request.c:1569,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - request
    - key
    - result_r
    - use_expired
    argTypes:
    - struct auth_request*
    - char*
    - enum userdb_result*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1535
    functionDepth: 4
    functionLinenumber: 1535
    functionLinenumberEnd: 1571
    functionName: auth_request_lookup_user_cache
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - auth_request_userdb_import
    - auth_request_init_userdb_reply
    - auth_cache_lookup
    - auth_request_get_log_prefix_db
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_lookup_user_cache(struct auth_request *request,
      const char *key,\n\t\t\t       enum userdb_result *result_r, bool use_expired)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/auth/auth-request.c:1575,1
    - Dst: struct auth_request*::private_callback::userdb
      Src: /src/dovecot/src/auth/auth-request.c:1576,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request.c:1578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1573
    functionDepth: 6
    functionLinenumber: 1573
    functionLinenumberEnd: 1579
    functionName: auth_request_userdb_internal_failure
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - struct auth_request*::private_callback::userdb
    - auth_request_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_userdb_internal_failure(struct auth_request *request)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_userdb_save_cache
      Src: /src/dovecot/src/auth/auth-request.c:1594,1
    - Dst: auth_fields_snapshot
      Src: /src/dovecot/src/auth/auth-request.c:1599,1
    - Dst: auth_fields_rollback
      Src: /src/dovecot/src/auth/auth-request.c:1603,1
    - Dst: auth_request_userdb_lookup_end
      Src: /src/dovecot/src/auth/auth-request.c:1641,1
    - Dst: auth_request_want_skip_userdb
      Src: /src/dovecot/src/auth/auth-request.c:1645,1
    - Dst: auth_request_lookup_user
      Src: /src/dovecot/src/auth/auth-request.c:1656,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:1671,1
    - Dst: auth_request_lookup_user_cache
      Src: /src/dovecot/src/auth/auth-request.c:1689,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1691,1
    - Dst: auth_request_get_log_prefix_db
      Src: /src/dovecot/src/auth/auth-request.c:1693,1
    - Dst: auth_request_get_internal_failure_delay
      Src: /src/dovecot/src/auth/auth-request.c:1696,1
    - Dst: auth_request_get_internal_failure_delay
      Src: /src/dovecot/src/auth/auth-request.c:1700,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1703,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-request.c:1705,1
    - Dst: timeout_add
      Src: /src/dovecot/src/auth/auth-request.c:1706,1
    - Dst: struct auth_request*::private_callback::userdb
      Src: /src/dovecot/src/auth/auth-request.c:1709,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 84
    argCount: 2
    argNames:
    - result
    - request
    argTypes:
    - enum userdb_result
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1581
    functionDepth: 5
    functionLinenumber: 1581
    functionLinenumberEnd: 1711
    functionName: auth_request_userdb_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - auth_request_userdb_save_cache
    - auth_fields_snapshot
    - e_info
    - auth_fields_rollback
    - auth_request_ref
    - auth_request_lookup_user
    - auth_request_userdb_lookup_end
    - timeout_add
    - e_error
    - auth_request_want_skip_userdb
    - auth_request_get_internal_failure_delay
    - auth_request_lookup_user_cache
    - auth_request_get_log_prefix_db
    - i_assert
    - struct auth_request*::private_callback::userdb
    linkageType: ''
    returnType: void
    signature: "void auth_request_userdb_callback(enum userdb_result result,\n\t\t\t\t
      \ struct auth_request *request)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_init_userdb_reply
      Src: /src/dovecot/src/auth/auth-request.c:1724,1
    - Dst: auth_request_userdb_lookup_begin
      Src: /src/dovecot/src/auth/auth-request.c:1726,1
    - Dst: auth_request_lookup_user_cache
      Src: /src/dovecot/src/auth/auth-request.c:1733,1
    - Dst: auth_request_userdb_callback
      Src: /src/dovecot/src/auth/auth-request.c:1736,1
    - Dst: auth_request_userdb_callback
      Src: /src/dovecot/src/auth/auth-request.c:1745,1
    - Dst: userdb_blocking_lookup
      Src: /src/dovecot/src/auth/auth-request.c:1748,1
    - Dst: struct auth_userdb*::userdb::iface::lookup
      Src: /src/dovecot/src/auth/auth-request.c:1750,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - userdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1753
      start: 1713
    functionDepth: 6
    functionLinenumber: 1713
    functionLinenumberEnd: 1753
    functionName: auth_request_lookup_user
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 3
    functionsReached:
    - struct auth_userdb*::userdb::iface::lookup
    - auth_request_userdb_lookup_begin
    - auth_request_init_userdb_reply
    - auth_request_lookup_user_cache
    - userdb_blocking_lookup
    - auth_request_userdb_callback
    linkageType: ''
    returnType: void
    signature: "void auth_request_lookup_user(struct auth_request *request,\n\t\t\t
      \     userdb_callback_t *callback)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/auth/auth-request.c:1765,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:1766,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1766,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1769,1
    - Dst: net_parse_range
      Src: /src/dovecot/src/auth/auth-request.c:1774,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1775,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1775,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/auth/auth-request.c:1778,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1787,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1787,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1790,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1790,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request.c:1792,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 4
    argNames:
    - request
    - name
    - networks
    - remote_ip
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1755
    functionDepth: 2
    functionLinenumber: 1755
    functionLinenumberEnd: 1796
    functionName: auth_request_validate_networks
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - authdb_event
    - e_info
    - e_debug
    - net_ip2addr
    - net_parse_range
    - t_strsplit_spaces
    - net_is_in_network
    linkageType: ''
    returnType: void
    signature: "void auth_request_validate_networks(struct auth_request *request,\n\t\t\t
      \      const char *name, const char *networks,\n\t\t\t       const struct ip_addr
      *remote_ip)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1812,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1812,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1816,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1817,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1818,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1819,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1820,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1821,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1822,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:1824,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:1827,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1827,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:1832,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1832,1
    - Dst: auth_request_import
      Src: /src/dovecot/src/auth/auth-request.c:1835,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - request
    - name
    - fp
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1798
    functionDepth: 4
    functionLinenumber: 1798
    functionLinenumberEnd: 1837
    functionName: auth_request_validate_client_fp
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - authdb_event
    - e_info
    - auth_request_import
    - i_unreached
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void auth_request_validate_client_fp(struct auth_request *request,
      const char *name,\n\t\t\t\tconst char *fp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:1844,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1844,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request.c:1853,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth-request.c:1854,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1856,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/auth/auth-request.c:1858,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - request
    - value
    - default_scheme
    - noscheme
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1839
    functionDepth: 2
    functionLinenumber: 1839
    functionLinenumberEnd: 1861
    functionName: auth_request_set_password
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - strchr
    - p_strdup
    - e_error
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_password(struct auth_request *request, const
      char *value,\n\t\t\t  const char *default_scheme, bool noscheme)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1869,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request.c:1874,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1875,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request.c:1876,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-request.c:1880,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1883,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-request.c:1886,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-request.c:1889,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-request.c:1890,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - old_username
    - name
    - value
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1863
    functionDepth: 1
    functionLinenumber: 1863
    functionLinenumberEnd: 1894
    functionName: get_updated_username
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - t_strconcat
    - t_strdup_until
    linkageType: ''
    returnType: char
    signature: "char *\nget_updated_username(const char *old_username,\n\t\t     const
      char *name, const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_updated_username
      Src: /src/dovecot/src/auth/auth-request.c:1902,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:1906,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1906,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1912,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:1913,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:1913,1
    - Dst: auth_request_set_username_forced
      Src: /src/dovecot/src/auth/auth-request.c:1916,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - request
    - name
    - value
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1896
    functionDepth: 2
    functionLinenumber: 1896
    functionLinenumberEnd: 1920
    functionName: auth_request_try_update_username
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - authdb_event
    - e_debug
    - auth_request_set_username_forced
    - e_error
    - get_updated_username
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_try_update_username(struct auth_request *request,\n\t\t\t\t
      const char *name, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/auth/auth-request.c:1928,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/auth-request.c:1929,1
    - Dst: auth_request_set_field_keyvalue
      Src: /src/dovecot/src/auth/auth-request.c:1930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - request
    - args
    - key_prefix
    - default_scheme
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1932
      start: 1922
    functionDepth: 1
    functionLinenumber: 1922
    functionLinenumberEnd: 1932
    functionName: auth_request_passdb_import
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - auth_request_set_field_keyvalue
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void auth_request_passdb_import(struct auth_request *request, const
      char *args,\n\t\t\t   const char *key_prefix, const char *default_scheme)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-request.c:1939,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1941,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1942,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:1947,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1949,1
    - Dst: t_strndup
      Src: /src/dovecot/src/auth/auth-request.c:1951,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:1954,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1956,1
    - Dst: t_strndup
      Src: /src/dovecot/src/auth/auth-request.c:1958,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:1959,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1963,1
    - Dst: auth_request_set_password
      Src: /src/dovecot/src/auth/auth-request.c:1964,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1968,1
    - Dst: auth_request_set_password
      Src: /src/dovecot/src/auth/auth-request.c:1969,1
    - Dst: auth_request_try_update_username
      Src: /src/dovecot/src/auth/auth-request.c:1973,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1976,1
    - Dst: auth_request_set_login_username_forced
      Src: /src/dovecot/src/auth/auth-request.c:1977,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1978,1
    - Dst: auth_request_validate_networks
      Src: /src/dovecot/src/auth/auth-request.c:1979,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1981,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1982,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1983,1
    - Dst: auth_request_validate_client_fp
      Src: /src/dovecot/src/auth/auth-request.c:1984,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1985,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1987,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:1990,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:1992,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request.c:1997,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-request.c:1999,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-request.c:2000,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2001,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2001,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/auth/auth-request.c:2005,1
    - Dst: str_to_time
      Src: /src/dovecot/src/auth/auth-request.c:2008,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2009,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2009,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2015,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2015,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2025,1
    - Dst: auth_request_validate_networks
      Src: /src/dovecot/src/auth/auth-request.c:2026,1
    - Dst: str_begins
      Src: /src/dovecot/src/auth/auth-request.c:2028,1
    - Dst: auth_request_init_userdb_reply
      Src: /src/dovecot/src/auth/auth-request.c:2032,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2033,1
    - Dst: auth_request_passdb_import
      Src: /src/dovecot/src/auth/auth-request.c:2037,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/auth-request.c:2041,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2042,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2045,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2046,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2048,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2051,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2053,1
    - Dst: auth_request_passdb_import
      Src: /src/dovecot/src/auth/auth-request.c:2054,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2058,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2066,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 100
    argCount: 4
    argNames:
    - request
    - name
    - value
    - default_scheme
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 1934
    functionDepth: 5
    functionLinenumber: 1934
    functionLinenumberEnd: 2068
    functionName: auth_request_set_field
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 21
    functionsReached:
    - strchr
    - auth_fields_add
    - strlen
    - auth_request_validate_networks
    - i_rand_limit
    - str_to_uint
    - auth_request_set_userdb_field
    - auth_request_passdb_import
    - auth_fields_exists
    - auth_request_set_login_username_forced
    - auth_request_validate_client_fp
    - auth_request_set_password
    - str_to_time
    - t_strndup
    - e_error
    - i_assert
    - auth_fields_remove
    - strcmp
    - authdb_event
    - str_begins
    - t_strdup_until
    - auth_request_init_userdb_reply
    - auth_request_try_update_username
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_field(struct auth_request *request,\n\t\t\t
      \   const char *name, const char *value,\n\t\t\t    const char *default_scheme)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/auth/auth-request.c:2072,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - request
    - name
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2070
    functionDepth: 1
    functionLinenumber: 2070
    functionLinenumberEnd: 2077
    functionName: auth_request_set_null_field
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - str_begins_with
    linkageType: ''
    returnType: void
    signature: void auth_request_set_null_field(struct auth_request *request, const
      char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request.c:2085,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-request.c:2090,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/auth-request.c:2093,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - request
    - field
    - default_scheme
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2079
    functionDepth: 6
    functionLinenumber: 2079
    functionLinenumberEnd: 2094
    functionName: auth_request_set_field_keyvalue
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - strchr
    - auth_request_set_field
    - t_strdup_until
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_field_keyvalue(struct auth_request *request,\n\t\t\t\t
      \    const char *field,\n\t\t\t\t     const char *default_scheme)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_set_field_keyvalue
      Src: /src/dovecot/src/auth/auth-request.c:2103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - request
    - fields
    - default_scheme
    argTypes:
    - struct auth_request*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2096
    functionDepth: 7
    functionLinenumber: 2096
    functionLinenumberEnd: 2106
    functionName: auth_request_set_fields
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 4
    functionsReached:
    - auth_request_set_field_keyvalue
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_fields(struct auth_request *request,\n\t\t\t
      \    const char *const *fields,\n\t\t\t     const char *default_scheme)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-request.c:2112,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth-request.c:2116,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:2117,1
    - Dst: auth_request_set_field
      Src: /src/dovecot/src/auth/auth-request.c:2119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - request
    - strlist
    - default_scheme
    argTypes:
    - struct auth_request*
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2122
      start: 2108
    functionDepth: 6
    functionLinenumber: 2108
    functionLinenumberEnd: 2122
    functionName: auth_request_set_strlist
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - array_get
    - array_is_created
    - i_assert
    - auth_request_set_field
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_strlist(struct auth_request *request,\n\t\t\t
      \     const ARRAY_TYPE(const_string) *strlist,\n\t\t\t      const char *default_scheme)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request.c:2132,1
    - Dst: auth_request_var_expand
      Src: /src/dovecot/src/auth/auth-request.c:2133,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2135,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2135,1
    - Dst: stat
      Src: /src/dovecot/src/auth/auth-request.c:2139,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request.c:2139,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2140,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2140,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request.c:2141,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2144,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request.c:2145,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2146,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request.c:2147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - request
    - path_template
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2149
      start: 2124
    functionDepth: 3
    functionLinenumber: 2124
    functionLinenumberEnd: 2149
    functionName: auth_request_set_uidgid_file
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - dec2str
    - authdb_event
    - t_str_new
    - str_c
    - auth_fields_add
    - e_error
    - stat
    - auth_request_var_expand
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_uidgid_file(struct auth_request *request,\n\t\t\t
      \    const char *path_template)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/auth/auth-request.c:2156,1
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request.c:2157,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-request.c:2162,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/auth-request.c:2165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - request
    - args
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2151
    functionDepth: 1
    functionLinenumber: 2151
    functionLinenumberEnd: 2167
    functionName: auth_request_userdb_import
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - t_strsplit
    - strchr
    - auth_request_set_userdb_field
    - t_strdup_until
    linkageType: ''
    returnType: void
    signature: void auth_request_userdb_import(struct auth_request *request, const
      char *args)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-request.c:2172,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:2176,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:2177,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2179,1
    - Dst: t_strndup
      Src: /src/dovecot/src/auth/auth-request.c:2181,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:2182,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2186,1
    - Dst: t_strndup
      Src: /src/dovecot/src/auth/auth-request.c:2188,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:2189,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2193,1
    - Dst: userdb_parse_uid
      Src: /src/dovecot/src/auth/auth-request.c:2194,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request.c:2199,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2200,1
    - Dst: userdb_parse_gid
      Src: /src/dovecot/src/auth/auth-request.c:2201,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request.c:2206,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2207,1
    - Dst: auth_request_try_update_username
      Src: /src/dovecot/src/auth/auth-request.c:2210,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2212,1
    - Dst: auth_request_set_uidgid_file
      Src: /src/dovecot/src/auth/auth-request.c:2213,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2215,1
    - Dst: auth_request_userdb_import
      Src: /src/dovecot/src/auth/auth-request.c:2216,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2218,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/auth-request.c:2222,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2222,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2227,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2231,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 3
    argNames:
    - request
    - name
    - value
    argTypes:
    - struct auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2169
    functionDepth: 4
    functionLinenumber: 2169
    functionLinenumberEnd: 2232
    functionName: auth_request_set_userdb_field
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 7
    functionsReached:
    - strcmp
    - dec2str
    - authdb_event
    - userdb_parse_gid
    - auth_fields_add
    - strlen
    - auth_request_userdb_import
    - t_strndup
    - auth_request_set_uidgid_file
    - e_warning
    - auth_fields_exists
    - userdb_parse_uid
    - i_assert
    - auth_fields_remove
    - auth_request_try_update_username
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_userdb_field(struct auth_request *request,\n\t\t\t\t
      \  const char *name, const char *value)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2241,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request.c:2246,1
    - Dst: userdb_parse_gid
      Src: /src/dovecot/src/auth/auth-request.c:2248,1
    - Dst: str_len
      Src: /src/dovecot/src/auth/auth-request.c:2254,1
    - Dst: str_append_c
      Src: /src/dovecot/src/auth/auth-request.c:2255,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:2256,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request.c:2256,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2258,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request.c:2259,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/auth-request.c:2263,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2263,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/auth-request.c:2267,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - request
    - name
    - values
    argTypes:
    - struct auth_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2269
      start: 2234
    functionDepth: 5
    functionLinenumber: 2234
    functionLinenumberEnd: 2269
    functionName: auth_request_set_userdb_field_values
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dec2str
    - t_str_new
    - str_c
    - str_append_c
    - authdb_event
    - userdb_parse_gid
    - str_len
    - auth_fields_add
    - e_warning
    - str_append
    - auth_request_set_userdb_field
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_userdb_field_values(struct auth_request *request,\n\t\t\t\t\t
      \ const char *name,\n\t\t\t\t\t  const char *const *values)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth-request.c:2274,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth-request.c:2278,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:2279,1
    - Dst: auth_request_set_userdb_field
      Src: /src/dovecot/src/auth/auth-request.c:2281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - request
    - strlist
    argTypes:
    - struct auth_request*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 2271
    functionDepth: 5
    functionLinenumber: 2271
    functionLinenumberEnd: 2284
    functionName: auth_request_set_userdb_strlist
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - array_get
    - array_is_created
    - i_assert
    - auth_request_set_userdb_field
    linkageType: ''
    returnType: void
    signature: "void auth_request_set_userdb_strlist(struct auth_request *request,\n\t\t\t\t
      \    const ARRAY_TYPE(const_string) *strlist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request.c:2291,1
    - Dst: str_uint_equals
      Src: /src/dovecot/src/auth/auth-request.c:2292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2302
      start: 2286
    functionDepth: 3
    functionLinenumber: 2286
    functionLinenumberEnd: 2302
    functionName: auth_request_proxy_is_self
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - str_uint_equals
    - auth_fields_find
    linkageType: ''
    returnType: bool
    signature: bool auth_request_proxy_is_self(struct auth_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_ip_compare
      Src: /src/dovecot/src/auth/auth-request.c:2310,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/auth/auth-request.c:2314,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - request
    - ip
    argTypes:
    - struct auth_request*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2318
      start: 2304
    functionDepth: 1
    functionLinenumber: 2304
    functionLinenumberEnd: 2318
    functionName: auth_request_proxy_ip_is_self
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_proxy_ip_is_self(struct auth_request *request,\n\t\t\t
      \     const struct ip_addr *ip)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request.c:2325,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request.c:2326,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/auth/auth-request.c:2332,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/auth/auth-request.c:2334,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/auth/auth-request.c:2335,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2336,1
    - Dst: auth_request_proxy_finish_failure
      Src: /src/dovecot/src/auth/auth-request.c:2339,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:2344,1
    - Dst: auth_request_proxy_is_self
      Src: /src/dovecot/src/auth/auth-request.c:2347,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:2349,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2350,1
    - Dst: auth_request_proxy_finish_failure
      Src: /src/dovecot/src/auth/auth-request.c:2352,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - request
    - proxy_host_is_self
    argTypes:
    - struct auth_request*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2354
      start: 2320
    functionDepth: 4
    functionLinenumber: 2320
    functionLinenumberEnd: 2354
    functionName: auth_request_proxy_finish_ip
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - auth_request_proxy_finish_failure
    - auth_request_proxy_is_self
    - net_addr2ip
    - auth_fields_find
    - auth_fields_add
    - e_error
    - auth_fields_exists
    - auth_fields_remove
    - net_ip_compare
    linkageType: ''
    returnType: void
    signature: "void auth_request_proxy_finish_ip(struct auth_request *request,\n\t\t\t
      \    bool proxy_host_is_self)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request.c:2371,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth-request.c:2372,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2375,1
    - Dst: auth_request_proxy_finish_failure
      Src: /src/dovecot/src/auth/auth-request.c:2378,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/auth-request.c:2381,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2386,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request.c:2387,1
    - Dst: auth_request_proxy_ip_is_self
      Src: /src/dovecot/src/auth/auth-request.c:2390,1
    - Dst: auth_request_proxy_finish_ip
      Src: /src/dovecot/src/auth/auth-request.c:2396,1
    - Dst: struct auth_request_proxy_dns_lookup_ctx*::callback
      Src: /src/dovecot/src/auth/auth-request.c:2400,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth-request.c:2401,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/auth-request.c:2402,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct dns_lookup_result*
    - struct auth_request_proxy_dns_lookup_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2403
      start: 2356
    functionDepth: 6
    functionLinenumber: 2356
    functionLinenumberEnd: 2403
    functionName: auth_request_proxy_dns_callback
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - auth_request_proxy_finish_failure
    - auth_request_proxy_finish_ip
    - struct auth_request_proxy_dns_lookup_ctx*::callback
    - event_unref
    - auth_fields_find
    - auth_fields_add
    - e_error
    - e_warning
    - net_ip2addr
    - auth_request_proxy_ip_is_self
    - auth_request_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_request_proxy_dns_callback(const struct dns_lookup_result
      *result,\n\t\t\t\tstruct auth_request_proxy_dns_lookup_ctx *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_default_protocol
      Src: /src/dovecot/src/auth/auth-request.c:2410,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth-request.c:2416,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/auth/auth-request.c:2417,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request.c:2420,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-request.c:2422,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2423,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth-request.c:2428,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/auth-request.c:2431,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/auth/auth-request.c:2434,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - request
    - host
    - callback
    argTypes:
    - struct auth_request*
    - char*
    - auth_request_proxy_cb_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2442
      start: 2405
    functionDepth: 3
    functionLinenumber: 2405
    functionLinenumberEnd: 2442
    functionName: auth_request_proxy_host_lookup
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_new
    - auth_request_ref
    - dns_client_lookup
    - auth_fields_find
    - event_set_append_log_prefix
    - auth_default_protocol
    - e_error
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int auth_request_proxy_host_lookup(struct auth_request *request,\n\t\t\t
      \      const char *host,\n\t\t\t       auth_request_proxy_cb_t *callback)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:2453,1
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:2454,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request.c:2457,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2463,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/auth/auth-request.c:2464,1
    - Dst: auth_fields_add
      Src: /src/dovecot/src/auth/auth-request.c:2467,1
    - Dst: dec2str
      Src: /src/dovecot/src/auth/auth-request.c:2468,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/auth/auth-request.c:2470,1
    - Dst: auth_request_proxy_ip_is_self
      Src: /src/dovecot/src/auth/auth-request.c:2472,1
    - Dst: auth_fields_find
      Src: /src/dovecot/src/auth/auth-request.c:2474,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/auth/auth-request.c:2476,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2477,1
    - Dst: auth_request_proxy_host_lookup
      Src: /src/dovecot/src/auth/auth-request.c:2483,1
    - Dst: auth_request_proxy_ip_is_self
      Src: /src/dovecot/src/auth/auth-request.c:2487,1
    - Dst: auth_request_proxy_finish_ip
      Src: /src/dovecot/src/auth/auth-request.c:2490,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - auth_request_proxy_cb_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2444
    functionDepth: 5
    functionLinenumber: 2444
    functionLinenumberEnd: 2494
    functionName: auth_request_proxy_finish
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - dec2str
    - net_addr2ip
    - auth_request_proxy_finish_ip
    - auth_fields_add
    - auth_fields_find
    - e_error
    - auth_fields_exists
    - net_ip2addr
    - auth_request_proxy_ip_is_self
    - auth_request_proxy_host_lookup
    linkageType: ''
    returnType: int
    signature: "int auth_request_proxy_finish(struct auth_request *request,\n\t\t\t
      \     auth_request_proxy_cb_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:2499,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:2500,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:2501,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:2502,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:2503,1
    - Dst: auth_fields_remove
      Src: /src/dovecot/src/auth/auth-request.c:2504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2505
      start: 2496
    functionDepth: 3
    functionLinenumber: 2496
    functionLinenumberEnd: 2505
    functionName: auth_request_proxy_finish_failure
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 4
    functionsReached:
    - auth_fields_remove
    linkageType: ''
    returnType: void
    signature: void auth_request_proxy_finish_failure(struct auth_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request.c:2513,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request.c:2516,1
    - Dst: password_scheme_detect
      Src: /src/dovecot/src/auth/auth-request.c:2522,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request.c:2525,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:2530,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request.c:2530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - event
    - plain_password
    - crypted_password
    - scheme
    - params
    argTypes:
    - struct event*
    - char*
    - char*
    - char*
    - struct password_generate_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2531
      start: 2507
    functionDepth: 1
    functionLinenumber: 2507
    functionLinenumberEnd: 2531
    functionName: log_password_failure
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - e_debug
    - password_scheme_detect
    linkageType: ''
    returnType: void
    signature: "void log_password_failure(struct event *event, const char *plain_password,\n\t\t
      \    const char *crypted_password, const char *scheme,\n\t\t     const struct
      password_generate_params *params)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/auth/auth-request.c:2542,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/auth/auth-request.c:2544,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:2545,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/auth/auth-request.c:2546,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2549,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request.c:2550,1
    - Dst: t_strndup
      Src: /src/dovecot/src/auth/auth-request.c:2551,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2552,1
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/auth/auth-request.c:2555,1
    - Dst: strlen
      Src: /src/dovecot/src/auth/auth-request.c:2556,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/auth-request.c:2557,1
    - Dst: t_strndup
      Src: /src/dovecot/src/auth/auth-request.c:2558,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/auth/auth-request.c:2558,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth-request.c:2561,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - request
    - str
    argTypes:
    - struct auth_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2563
      start: 2533
    functionDepth: 1
    functionLinenumber: 2533
    functionLinenumberEnd: 2563
    functionName: auth_request_append_password
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - str_printfa
    - i_unreached
    - strlen
    - t_strndup
    - t_strdup_until
    - str_to_uint
    - binary_to_hex
    - sha1_get_digest
    linkageType: ''
    returnType: void
    signature: void auth_request_append_password(struct auth_request *request, string_t
      *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_log_login_failure
      Src: /src/dovecot/src/auth/auth-request.c:2568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - event
    argTypes:
    - struct auth_request*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2565
    functionDepth: 1
    functionLinenumber: 2565
    functionLinenumberEnd: 2570
    functionName: auth_request_log_password_mismatch
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - auth_request_log_login_failure
    linkageType: ''
    returnType: void
    signature: "void auth_request_log_password_mismatch(struct auth_request *request,\n\t\t\t\t\tstruct
      event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_log_login_failure
      Src: /src/dovecot/src/auth/auth-request.c:2575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - event
    argTypes:
    - struct auth_request*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2572
    functionDepth: 1
    functionLinenumber: 2572
    functionLinenumberEnd: 2576
    functionName: auth_request_log_unknown_user
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 0
    functionsReached:
    - auth_request_log_login_failure
    linkageType: ''
    returnType: void
    signature: "void auth_request_log_unknown_user(struct auth_request *request,\n\t\t\t\t
      \  struct event *event)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth-request.c:2583,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:2584,1
    - Dst: event_get_min_log_level
      Src: /src/dovecot/src/auth/auth-request.c:2589,1
    - Dst: event_set_min_log_level
      Src: /src/dovecot/src/auth/auth-request.c:2590,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/auth-request.c:2592,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:2593,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:2594,1
    - Dst: auth_request_append_password
      Src: /src/dovecot/src/auth/auth-request.c:2596,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:2600,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/auth-request.c:2603,1
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:2605,1
    - Dst: str_c
      Src: /src/dovecot/src/auth/auth-request.c:2605,1
    - Dst: event_set_min_log_level
      Src: /src/dovecot/src/auth/auth-request.c:2606,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - request
    - event
    - message
    argTypes:
    - struct auth_request*
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2578
    functionDepth: 2
    functionLinenumber: 2578
    functionLinenumberEnd: 2607
    functionName: auth_request_log_login_failure
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - strcmp
    - str_c
    - e_info
    - t_str_new
    - event_set_min_log_level
    - event_get_min_log_level
    - str_append
    - auth_request_append_password
    linkageType: ''
    returnType: void
    signature: "void auth_request_log_login_failure(struct auth_request *request,\n\t\t\t\t
      \   struct event *event, const char *message)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_log_login_failure
      Src: /src/dovecot/src/auth/auth-request.c:2611,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2609
    functionDepth: 3
    functionLinenumber: 2609
    functionLinenumberEnd: 2613
    functionName: auth_request_db_log_password_mismatch
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 2
    functionsReached:
    - authdb_event
    - auth_request_log_login_failure
    linkageType: ''
    returnType: void
    signature: void auth_request_db_log_password_mismatch(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_log_login_failure
      Src: /src/dovecot/src/auth/auth-request.c:2617,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2619
      start: 2615
    functionDepth: 3
    functionLinenumber: 2615
    functionLinenumberEnd: 2619
    functionName: auth_request_db_log_unknown_user
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 11
    functionsReached:
    - authdb_event
    - auth_request_log_login_failure
    linkageType: ''
    returnType: void
    signature: void auth_request_db_log_unknown_user(struct auth_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_log_login_failure
      Src: /src/dovecot/src/auth/auth-request.c:2624,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - message
    argTypes:
    - struct auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2621
    functionDepth: 3
    functionLinenumber: 2621
    functionLinenumberEnd: 2626
    functionName: auth_request_db_log_login_failure
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - authdb_event
    - auth_request_log_login_failure
    linkageType: ''
    returnType: void
    signature: "void auth_request_db_log_login_failure(struct auth_request *request,\n\t\t\t\t
      \      const char *message)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_password_verify_log
      Src: /src/dovecot/src/auth/auth-request.c:2635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - request
    - event
    - plain_password
    - crypted_password
    - scheme
    argTypes:
    - struct auth_request*
    - struct event*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2628
    functionDepth: 1
    functionLinenumber: 2628
    functionLinenumberEnd: 2637
    functionName: auth_request_password_verify
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - auth_request_password_verify_log
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result auth_request_password_verify(struct auth_request
      *request,\n\t\t\t     struct event *event,\n\t\t\t     const char *plain_password,\n\t\t\t
      \    const char *crypted_password,\n\t\t\t     const char *scheme)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: auth_fields_exists
      Src: /src/dovecot/src/auth/auth-request.c:2667,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/auth-request.c:2668,1
    - Dst: password_decode
      Src: /src/dovecot/src/auth/auth-request.c:2672,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2676,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2680,1
    - Dst: password_verify
      Src: /src/dovecot/src/auth/auth-request.c:2689,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/auth-request.c:2693,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/auth-request.c:2694,1
    - Dst: auth_request_log_password_mismatch
      Src: /src/dovecot/src/auth/auth-request.c:2699,1
    - Dst: log_password_failure
      Src: /src/dovecot/src/auth/auth-request.c:2705,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 6
    argNames:
    - request
    - event
    - plain_password
    - crypted_password
    - scheme
    - log_password_mismatch
    argTypes:
    - struct auth_request*
    - struct event*
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2639
    functionDepth: 4
    functionLinenumber: 2639
    functionLinenumberEnd: 2707
    functionName: auth_request_password_verify_log
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - auth_request_log_password_mismatch
    - e_debug
    - t_strdup_printf
    - password_decode
    - e_error
    - auth_fields_exists
    - password_verify
    - log_password_failure
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result auth_request_password_verify_log(struct auth_request
      *request,\n\t\t\t\t struct event *event,\n\t\t\t\t const char *plain_password,\n\t\t\t\t
      const char *crypted_password,\n\t\t\t\t const char *scheme,\n\t\t\t\t bool log_password_mismatch)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_password_verify_log
      Src: /src/dovecot/src/auth/auth-request.c:2717,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - request
    - plain_password
    - crypted_password
    - scheme
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2720
      start: 2711
    functionDepth: 5
    functionLinenumber: 2711
    functionLinenumberEnd: 2720
    functionName: auth_request_db_password_verify
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 6
    functionsReached:
    - authdb_event
    - auth_request_password_verify_log
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result auth_request_db_password_verify(struct auth_request
      *request,\n\t\t\t\tconst char *plain_password,\n\t\t\t\tconst char *crypted_password,\n\t\t\t\tconst
      char *scheme)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_password_verify_log
      Src: /src/dovecot/src/auth/auth-request.c:2729,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - request
    - plain_password
    - crypted_password
    - scheme
    - log_password_mismatch
    argTypes:
    - struct auth_request*
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2733
      start: 2722
    functionDepth: 5
    functionLinenumber: 2722
    functionLinenumberEnd: 2733
    functionName: auth_request_db_password_verify_log
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 1
    functionsReached:
    - authdb_event
    - auth_request_password_verify_log
    linkageType: ''
    returnType: enum passdb_result
    signature: "enum passdb_result auth_request_db_password_verify_log(struct auth_request
      *request,\n\t\t\t\t    const char *plain_password,\n\t\t\t\t    const char *crypted_password,\n\t\t\t\t
      \   const char *scheme,\n\t\t\t\t    bool log_password_mismatch)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_info
      Src: /src/dovecot/src/auth/auth-request.c:2741,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/auth-request.c:2741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2735
    functionDepth: 2
    functionLinenumber: 2735
    functionLinenumberEnd: 2744
    functionName: auth_request_password_missing
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 4
    functionsReached:
    - authdb_event
    - e_info
    linkageType: ''
    returnType: enum passdb_result
    signature: enum passdb_result auth_request_password_missing(struct auth_request
      *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/auth/auth-request.c:2750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2751
      start: 2746
    functionDepth: 1
    functionLinenumber: 2746
    functionLinenumberEnd: 2751
    functionName: auth_request_refresh_last_access
    functionSourceFile: /src/dovecot/src/auth/auth-request.c
    functionUses: 4
    functionsReached:
    - timeout_reset
    linkageType: ''
    returnType: void
    signature: void auth_request_refresh_last_access(struct auth_request *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:36,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:38,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:40,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth.c:42,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 43
    functionName: auth_passdb_skip_parse
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_unreached
    linkageType: ''
    returnType: enum auth_passdb_skip
    signature: enum auth_passdb_skip auth_passdb_skip_parse(const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:47,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:49,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:51,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: auth_userdb_skip_parse
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_unreached
    linkageType: ''
    returnType: enum auth_userdb_skip
    signature: enum auth_userdb_skip auth_userdb_skip_parse(const char *str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:58,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:60,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:62,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:64,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:66,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:68,1
    - Dst: i_unreached
      Src: /src/dovecot/src/auth/auth.c:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 71
    functionName: auth_db_rule_parse
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_unreached
    linkageType: ''
    returnType: enum auth_db_rule
    signature: enum auth_db_rule auth_db_rule_parse(const char *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth.c:82,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth.c:83,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth.c:84,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/auth/auth.c:85,1
    - Dst: auth_driver_filter
      Src: /src/dovecot/src/auth/auth.c:86,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/auth/auth.c:87,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/auth/auth.c:88,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth.c:90,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/auth/auth.c:92,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/auth.c:93,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth.c:97,1
    - Dst: auth_passdb_skip_parse
      Src: /src/dovecot/src/auth/auth.c:101,1
    - Dst: auth_db_rule_parse
      Src: /src/dovecot/src/auth/auth.c:103,1
    - Dst: auth_db_rule_parse
      Src: /src/dovecot/src/auth/auth.c:105,1
    - Dst: auth_db_rule_parse
      Src: /src/dovecot/src/auth/auth.c:107,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth.c:109,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/auth.c:110,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/auth/auth.c:114,1
    - Dst: p_strsplit_spaces
      Src: /src/dovecot/src/auth/auth.c:121,1
    - Dst: passdb_preinit
      Src: /src/dovecot/src/auth/auth.c:128,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth.c:135,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - auth
    - _set
    - passdbs
    argTypes:
    - struct auth*
    - struct auth_passdb_settings*
    - struct auth_passdb**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 73
    functionDepth: 3
    functionLinenumber: 73
    functionLinenumberEnd: 136
    functionName: auth_passdb_preinit
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_new
    - p_strsplit_spaces
    - auth_driver_filter
    - auth_db_rule_parse
    - event_unref
    - settings_event_add_filter_name
    - i_fatal
    - array_is_created
    - array_is_empty
    - settings_boollist_get
    - passdb_preinit
    - settings_event_add_list_filter_name
    - event_add_str
    - settings_get
    - auth_passdb_skip_parse
    - settings_get_or_fatal
    linkageType: ''
    returnType: void
    signature: "void auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings
      *_set,\n\t\t    struct auth_passdb **passdbs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_deinit
      Src: /src/dovecot/src/auth/auth.c:140,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth.c:141,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth.c:142,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - passdb
    argTypes:
    - struct auth_passdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 144
    functionName: auth_passdb_deinit
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - settings_free
    - passdb_deinit
    linkageType: ''
    returnType: void
    signature: void auth_passdb_deinit(struct auth_passdb *passdb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth.c:154,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth.c:155,1
    - Dst: event_add_str
      Src: /src/dovecot/src/auth/auth.c:156,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/auth/auth.c:157,1
    - Dst: auth_driver_filter
      Src: /src/dovecot/src/auth/auth.c:158,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/auth/auth.c:159,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/auth/auth.c:164,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth.c:168,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/auth/auth.c:170,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/auth.c:171,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth.c:175,1
    - Dst: auth_userdb_skip_parse
      Src: /src/dovecot/src/auth/auth.c:179,1
    - Dst: auth_db_rule_parse
      Src: /src/dovecot/src/auth/auth.c:181,1
    - Dst: auth_db_rule_parse
      Src: /src/dovecot/src/auth/auth.c:183,1
    - Dst: auth_db_rule_parse
      Src: /src/dovecot/src/auth/auth.c:185,1
    - Dst: userdb_preinit
      Src: /src/dovecot/src/auth/auth.c:190,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth.c:197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - auth
    - _set
    argTypes:
    - struct auth*
    - struct auth_userdb_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 198
    functionName: auth_userdb_preinit
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - event_create
    - p_new
    - event_unref
    - auth_driver_filter
    - auth_db_rule_parse
    - auth_userdb_skip_parse
    - userdb_preinit
    - settings_event_add_filter_name
    - i_fatal
    - settings_event_add_list_filter_name
    - event_add_str
    - settings_get
    - settings_get_or_fatal
    linkageType: ''
    returnType: void
    signature: void auth_userdb_preinit(struct auth *auth, const struct auth_userdb_settings
      *_set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: userdb_deinit
      Src: /src/dovecot/src/auth/auth.c:202,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth.c:204,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth.c:205,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - userdb
    argTypes:
    - struct auth_userdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: auth_userdb_deinit
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - userdb_deinit
    - settings_free
    linkageType: ''
    returnType: void
    signature: void auth_userdb_deinit(struct auth_userdb *userdb)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 218
    functionName: auth_passdb_list_have_verify_plain
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_passdb_list_have_verify_plain(const struct auth *auth)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 229
    functionName: auth_passdb_list_have_lookup_credentials
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_passdb_list_have_lookup_credentials(const struct auth *auth)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 244
    functionName: auth_passdb_list_have_set_credentials
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_passdb_list_have_set_credentials(const struct auth *auth)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/auth/auth.c:254,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/auth.c:255,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/auth.c:257,1
    - Dst: pool_ref
      Src: /src/dovecot/src/auth/auth.c:259,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth.c:261,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth.c:262,1
    - Dst: auth_passdb_skip_parse
      Src: /src/dovecot/src/auth/auth.c:277,1
    - Dst: auth_passdb_preinit
      Src: /src/dovecot/src/auth/auth.c:280,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:285,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth.c:286,1
    - Dst: auth_passdb_skip_parse
      Src: /src/dovecot/src/auth/auth.c:294,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth.c:298,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:300,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth.c:301,1
    - Dst: auth_passdb_preinit
      Src: /src/dovecot/src/auth/auth.c:304,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/auth.c:307,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth.c:308,1
    - Dst: auth_userdb_preinit
      Src: /src/dovecot/src/auth/auth.c:310,1
    - Dst: auth_userdb_preinit
      Src: /src/dovecot/src/auth/auth.c:315,1
    - Dst: auth_sasl_instance_init
      Src: /src/dovecot/src/auth/auth.c:318,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 2
    argNames:
    - set
    - protocol
    argTypes:
    - struct auth_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 247
    functionDepth: 6
    functionLinenumber: 247
    functionLinenumberEnd: 321
    functionName: auth_preinit
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - p_strdup
    - auth_sasl_instance_init
    - p_new
    - pool_ref
    - array_get
    - i_fatal
    - auth_userdb_preinit
    - array_is_created
    - auth_passdb_skip_parse
    - auth_passdb_preinit
    linkageType: ''
    returnType: void
    signature: void auth_preinit(const struct auth_settings *set, const char *protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: passdb_init
      Src: /src/dovecot/src/auth/auth.c:325,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - passdb
    argTypes:
    - struct auth_passdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 329
    functionName: auth_passdb_init
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - i_assert
    - passdb_init
    linkageType: ''
    returnType: void
    signature: void auth_passdb_init(struct auth_passdb *passdb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_passdb_init
      Src: /src/dovecot/src/auth/auth.c:342,1
    - Dst: auth_passdb_init
      Src: /src/dovecot/src/auth/auth.c:344,1
    - Dst: userdb_init
      Src: /src/dovecot/src/auth/auth.c:346,1
    - Dst: dns_client_init
      Src: /src/dovecot/src/auth/auth.c:348,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth.c:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 331
    functionDepth: 2
    functionLinenumber: 331
    functionLinenumberEnd: 350
    functionName: auth_init
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 4
    functionsReached:
    - userdb_init
    - i_fatal
    - auth_passdb_init
    - dns_client_init
    linkageType: ''
    returnType: void
    signature: void auth_init(struct auth *auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_passdb_deinit
      Src: /src/dovecot/src/auth/auth.c:358,1
    - Dst: auth_passdb_deinit
      Src: /src/dovecot/src/auth/auth.c:360,1
    - Dst: auth_userdb_deinit
      Src: /src/dovecot/src/auth/auth.c:362,1
    - Dst: dns_client_deinit
      Src: /src/dovecot/src/auth/auth.c:364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 352
    functionDepth: 3
    functionLinenumber: 352
    functionLinenumberEnd: 365
    functionName: auth_deinit
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 4
    functionsReached:
    - auth_userdb_deinit
    - dns_client_deinit
    - auth_passdb_deinit
    linkageType: ''
    returnType: void
    signature: void auth_deinit(struct auth *auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_sasl_instance_deinit
      Src: /src/dovecot/src/auth/auth.c:369,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth.c:370,1
    - Dst: pool_unref
      Src: /src/dovecot/src/auth/auth.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 372
    functionName: auth_free
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 2
    functionsReached:
    - auth_sasl_instance_deinit
    - settings_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void auth_free(struct auth *auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth.c:381,1
    - Dst: settings_hash
      Src: /src/dovecot/src/auth/auth.c:382,1
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth.c:384,1
    - Dst: settings_hash
      Src: /src/dovecot/src/auth/auth.c:385,1
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth.c:387,1
    - Dst: settings_hash
      Src: /src/dovecot/src/auth/auth.c:388,1
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - auth
    - ctx
    argTypes:
    - struct auth*
    - struct md5_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 392
    functionName: auth_passdbs_update_md5
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - settings_hash
    - md5_update
    linkageType: ''
    returnType: void
    signature: void auth_passdbs_update_md5(struct auth *auth, struct md5_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_init
      Src: /src/dovecot/src/auth/auth.c:399,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth.c:400,1
    - Dst: auth_passdbs_update_md5
      Src: /src/dovecot/src/auth/auth.c:401,1
    - Dst: md5_final
      Src: /src/dovecot/src/auth/auth.c:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - md5
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 403
    functionName: auth_passdbs_generate_md5
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 2
    functionsReached:
    - md5_init
    - auth_passdbs_update_md5
    - md5_final
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void auth_passdbs_generate_md5(unsigned char md5[STATIC_ARRAY MD5_RESULTLEN])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth.c:412,1
    - Dst: settings_hash
      Src: /src/dovecot/src/auth/auth.c:413,1
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth.c:415,1
    - Dst: settings_hash
      Src: /src/dovecot/src/auth/auth.c:416,1
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth.c:418,1
    - Dst: settings_hash
      Src: /src/dovecot/src/auth/auth.c:419,1
    - Dst: md5_update
      Src: /src/dovecot/src/auth/auth.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - auth
    - ctx
    argTypes:
    - struct auth*
    - struct md5_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 423
    functionName: auth_userdbs_update_md5
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 0
    functionsReached:
    - settings_hash
    - md5_update
    linkageType: ''
    returnType: void
    signature: void auth_userdbs_update_md5(struct auth *auth, struct md5_context
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_init
      Src: /src/dovecot/src/auth/auth.c:430,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth.c:431,1
    - Dst: auth_userdbs_update_md5
      Src: /src/dovecot/src/auth/auth.c:432,1
    - Dst: md5_final
      Src: /src/dovecot/src/auth/auth.c:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - md5
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 434
    functionName: auth_userdbs_generate_md5
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 2
    functionsReached:
    - md5_init
    - auth_userdbs_update_md5
    - md5_final
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void auth_userdbs_generate_md5(unsigned char md5[STATIC_ARRAY MD5_RESULTLEN])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth.c:441,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:444,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/auth.c:450,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 455
    functionName: auth_find_protocol
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_get
    linkageType: ''
    returnType: struct auth
    signature: struct auth *auth_find_protocol(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/auth/auth.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 464
    functionName: auth_default_protocol
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 5
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct auth
    signature: struct auth *auth_default_protocol(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/auth/auth.c:476,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/auth/auth.c:477,1
    - Dst: event_add_category
      Src: /src/dovecot/src/auth/auth.c:478,1
    - Dst: i_array_init
      Src: /src/dovecot/src/auth/auth.c:479,1
    - Dst: auth_preinit
      Src: /src/dovecot/src/auth/auth.c:481,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/auth.c:482,1
    - Dst: i_fatal
      Src: /src/dovecot/src/auth/auth.c:487,1
    - Dst: auth_settings_get
      Src: /src/dovecot/src/auth/auth.c:493,1
    - Dst: auth_preinit
      Src: /src/dovecot/src/auth/auth.c:494,1
    - Dst: array_push_back
      Src: /src/dovecot/src/auth/auth.c:495,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/auth.c:496,1
    - Dst: str_array_find
      Src: /src/dovecot/src/auth/auth.c:499,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth.c:502,1
    - Dst: auth_sasl_instance_verify
      Src: /src/dovecot/src/auth/auth.c:504,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - parent_event
    - set
    - protocols
    argTypes:
    - struct event*
    - struct auth_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 466
    functionDepth: 7
    functionLinenumber: 466
    functionLinenumberEnd: 506
    functionName: auths_preinit
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - event_set_forced_debug
    - event_create
    - auth_preinit
    - str_array_find
    - array_push_back
    - array_foreach_elem
    - i_fatal
    - settings_free
    - auth_sasl_instance_verify
    - event_add_category
    - auth_settings_get
    linkageType: ''
    returnType: void
    signature: "void auths_preinit(struct event *parent_event,\n\t\t   const struct
      auth_settings *set,\n\t\t   const char *const *protocols)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth.c:513,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth.c:514,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/auth.c:515,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth.c:517,1
    - Dst: auth_init
      Src: /src/dovecot/src/auth/auth.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 519
    functionName: auths_init
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 2
    functionsReached:
    - i_assert
    - auth_init
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void auths_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth.c:525,1
    - Dst: auth_deinit
      Src: /src/dovecot/src/auth/auth.c:526,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/auth.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 521
    functionDepth: 4
    functionLinenumber: 521
    functionLinenumberEnd: 528
    functionName: auths_deinit
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 2
    functionsReached:
    - event_unref
    - auth_deinit
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void auths_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/auth/auth.c:534,1
    - Dst: auth_free
      Src: /src/dovecot/src/auth/auth.c:535,1
    - Dst: array_free
      Src: /src/dovecot/src/auth/auth.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 530
    functionDepth: 4
    functionLinenumber: 530
    functionLinenumberEnd: 537
    functionName: auths_free
    functionSourceFile: /src/dovecot/src/auth/auth.c
    functionUses: 2
    functionsReached:
    - auth_free
    - array_free
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void auths_free(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/db-ldap-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/db-ldap-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: DEF
    functionSourceFile: /src/dovecot/src/auth/db-ldap-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, field)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/db-ldap-settings.c:149,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/db-ldap-settings.c:151,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/db-ldap-settings.c:153,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/auth/db-ldap-settings.c:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - str
    - ref_r
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 160
    functionName: ldap_parse_deref
    functionSourceFile: /src/dovecot/src/auth/db-ldap-settings.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int ldap_parse_deref(const char *str, int *ref_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldap_parse_deref
      Src: /src/dovecot/src/auth/db-ldap-settings.c:167,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-ldap-settings.c:168,1
    - Dst: ldap_parse_scope
      Src: /src/dovecot/src/auth/db-ldap-settings.c:173,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/db-ldap-settings.c:174,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/db-ldap-settings.c:180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 187
    functionName: ldap_setting_check
    functionSourceFile: /src/dovecot/src/auth/db-ldap-settings.c
    functionUses: 0
    functionsReached:
    - array_is_empty
    - ldap_parse_deref
    - t_strdup_printf
    - ldap_parse_scope
    linkageType: ''
    returnType: bool
    signature: "bool ldap_setting_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/auth/db-ldap-settings.c:199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct ldap_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 210
    functionName: ldap_setting_post_check
    functionSourceFile: /src/dovecot/src/auth/db-ldap-settings.c
    functionUses: 1
    functionsReached:
    - array_is_empty
    linkageType: ''
    returnType: int
    signature: int ldap_setting_post_check(const struct ldap_settings *set, const
      char **error_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - set
    - type
    - error_r
    argTypes:
    - struct ldap_pre_settings*
    - enum db_ldap_lookup_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 242
    functionName: ldap_pre_settings_post_check
    functionSourceFile: /src/dovecot/src/auth/db-ldap-settings.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ldap_pre_settings_post_check(const struct ldap_pre_settings *set,\n\t\t\t\t
      enum db_ldap_lookup_type type,\n\t\t\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: UCHAR_LEN
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UCHAR_LEN(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/auth/test-mech.c:35,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/auth/test-mech.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - request
    - callback
    argTypes:
    - struct auth_request*
    - verify_plain_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 37
    functionName: verify_plain_continue_mock_callback
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - callback
    linkageType: ''
    returnType: void
    signature: "void verify_plain_continue_mock_callback(struct auth_request *request,\n\t\t\t\t
      \   verify_plain_callback_t *callback)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-mech.c:49,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/auth/test-mech.c:50,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-mech.c:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - request
    - result
    - auth_reply ATTR_UNUSED
    - reply_size ATTR_UNUSED
    argTypes:
    - struct auth_request*
    - enum auth_client_result
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 55
    functionName: request_handler_reply_mock_callback
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached:
    - strcmp
    - null_strcmp
    linkageType: ''
    returnType: void
    signature: "void request_handler_reply_mock_callback(struct auth_request *request,\n\t\t\t\t
      \   enum auth_client_result result,\n\t\t\t\t    const void *auth_reply ATTR_UNUSED,\n\t\t\t\t
      \   size_t reply_size ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strndup
      Src: /src/dovecot/src/auth/test-mech.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - request
    - reply
    - reply_size
    argTypes:
    - struct auth_request*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: request_handler_reply_continue_mock_callback
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached:
    - p_strndup
    linkageType: ''
    returnType: void
    signature: "void request_handler_reply_continue_mock_callback(struct auth_request
      *request,\n\t\t\t\t\t     const void *reply,\n\t\t\t\t\t     size_t reply_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - char*
    - struct auth_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: auth_client_request_mock_callback
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void auth_client_request_mock_callback(\n\tconst char *reply ATTR_UNUSED,\n\tstruct
      auth_client_connection *conn ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_new
      Src: /src/dovecot/src/auth/test-mech.c:78,1
    - Dst: p_memdup
      Src: /src/dovecot/src/auth/test-mech.c:80,1
    - Dst: auth_default_protocol
      Src: /src/dovecot/src/auth/test-mech.c:94,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-mech.c:96,1
    - Dst: sasl_server_mech_find
      Src: /src/dovecot/src/auth/test-mech.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/auth/test-mech.c:100,1
    - Dst: auth_request_init_sasl
      Src: /src/dovecot/src/auth/test-mech.c:102,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/test-mech.c:110,1
    - Dst: sasl_server_request_test_set_authid
      Src: /src/dovecot/src/auth/test-mech.c:113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 5
    argNames:
    - request_r
    - mech_name
    - handler
    - running_test
    - test_case
    argTypes:
    - struct auth_request**
    - char*
    - struct auth_request_handler*
    - unsigned int
    - struct test_case*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 120
    functionName: test_mech_prepare_request
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - auth_default_protocol
    - auth_request_new
    - sasl_server_mech_find
    - auth_request_init_sasl
    - sasl_server_request_test_set_authid
    - i_assert
    - p_memdup
    linkageType: ''
    returnType: void
    signature: "void test_mech_prepare_request(struct auth_request **request_r,\n\t\t\t\t
      \     const char *mech_name,\n\t\t\t\t      struct auth_request_handler *handler,\n\t\t\t\t
      \     unsigned int running_test,\n\t\t\t\t      const struct test_case *test_case)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-mech.c:127,1
    - Dst: str_append_data
      Src: /src/dovecot/src/auth/test-mech.c:128,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-mech.c:131,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/auth/test-mech.c:135,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/auth/test-mech.c:138,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-mech.c:141,1
    - Dst: str_truncate
      Src: /src/dovecot/src/auth/test-mech.c:144,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/test-mech.c:145,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-mech.c:146,1
    - Dst: sasl_server_mech_digest_md5_test_set_nonce
      Src: /src/dovecot/src/auth/test-mech.c:148,1
    - Dst: auth_request_continue
      Src: /src/dovecot/src/auth/test-mech.c:151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - request
    - in
    - in_len
    - running_test
    - expected_success
    argTypes:
    - struct auth_request*
    - unsigned char*
    - size_t
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 122
    functionDepth: 5
    functionLinenumber: 122
    functionLinenumberEnd: 152
    functionName: test_mech_handle_challenge
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_new
    - str_truncate
    - sasl_server_mech_digest_md5_test_set_nonce
    - str_append
    - test_assert_strcmp_idx
    - str_append_data
    - auth_request_continue
    linkageType: ''
    returnType: void
    signature: "void test_mech_handle_challenge(struct auth_request *request,\n\t\t\t
      \  const unsigned char *in, size_t in_len,\n\t\t\t   unsigned int running_test,
      bool expected_success)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-mech.c:157,1
    - Dst: str_printfa
      Src: /src/dovecot/src/auth/test-mech.c:159,1
    - Dst: getpid
      Src: /src/dovecot/src/auth/test-mech.c:159,1
    - Dst: str_append_data
      Src: /src/dovecot/src/auth/test-mech.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - connect_uid
    - len_r
    argTypes:
    - unsigned int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 164
    functionName: test_mech_construct_apop_challenge
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached:
    - str_append_data
    - t_str_new
    - str_printfa
    - getpid
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      test_mech_construct_apop_challenge(unsigned int connect_uid, size_t *len_r)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:179,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:181,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:182,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:183,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:184,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:185,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:186,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:187,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:189,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:190,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:191,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:192,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:193,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:194,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:195,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:196,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:197,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:198,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:199,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:200,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:204,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:205,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:206,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:207,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:208,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:209,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:210,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:211,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:212,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:213,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:214,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:215,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:216,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:217,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:220,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:221,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:222,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:223,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:224,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:225,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:226,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:229,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:230,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:231,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:232,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:233,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:234,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:235,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:236,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:237,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:238,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:239,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:240,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:241,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:242,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:243,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:244,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:245,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:246,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:247,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:248,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:249,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:250,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:251,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:254,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:255,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:256,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:257,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:258,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:259,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:260,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:262,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:264,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:265,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:266,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:267,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:269,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:270,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:271,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:272,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:273,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:274,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:275,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:276,1
    - Dst: test_auth_init
      Src: /src/dovecot/src/auth/test-mech.c:279,1
    - Dst: t_str_new
      Src: /src/dovecot/src/auth/test-mech.c:281,1
    - Dst: str_append_data
      Src: /src/dovecot/src/auth/test-mech.c:282,1
    - Dst: UCHAR_LEN
      Src: /src/dovecot/src/auth/test-mech.c:283,1
    - Dst: str_append
      Src: /src/dovecot/src/auth/test-mech.c:284,1
    - Dst: auth_token_get
      Src: /src/dovecot/src/auth/test-mech.c:285,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/test-mech.c:287,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/auth/test-mech.c:292,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/auth/test-mech.c:295,1
    - Dst: test_begin
      Src: /src/dovecot/src/auth/test-mech.c:296,1
    - Dst: test_mech_prepare_request
      Src: /src/dovecot/src/auth/test-mech.c:298,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-mech.c:301,1
    - Dst: test_mech_construct_apop_challenge
      Src: /src/dovecot/src/auth/test-mech.c:302,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/test-mech.c:304,1
    - Dst: i_malloc
      Src: /src/dovecot/src/auth/test-mech.c:311,1
    - Dst: I_MAX
      Src: /src/dovecot/src/auth/test-mech.c:311,1
    - Dst: memcpy
      Src: /src/dovecot/src/auth/test-mech.c:312,1
    - Dst: auth_request_initial
      Src: /src/dovecot/src/auth/test-mech.c:315,1
    - Dst: test_mech_handle_challenge
      Src: /src/dovecot/src/auth/test-mech.c:320,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/auth/test-mech.c:336,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-mech.c:345,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-mech.c:349,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/auth/test-mech.c:351,1
    - Dst: i_free
      Src: /src/dovecot/src/auth/test-mech.c:353,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/test-mech.c:354,1
    - Dst: test_end
      Src: /src/dovecot/src/auth/test-mech.c:356,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 166
    functionDepth: 6
    functionLinenumber: 166
    functionLinenumberEnd: 357
    functionName: test_mechs
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 0
    functionsReached:
    - auth_token_get
    - test_assert_idx
    - t_strdup_printf
    - test_mech_construct_apop_challenge
    - test_mech_handle_challenge
    - memcpy
    - t_str_new
    - test_end
    - test_auth_init
    - str_append_data
    - i_free
    - N_ELEMENTS
    - strcmp
    - UCHAR_LEN
    - i_malloc
    - test_mech_prepare_request
    - I_MAX
    - auth_request_unref
    - str_append
    - test_assert_strcmp_idx
    - test_begin
    - auth_request_initial
    linkageType: ''
    returnType: void
    signature: void test_mechs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/auth/test-mech.c:376,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/auth/test-mech.c:379,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/auth/test-mech.c:381,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/auth/test-mech.c:382,1
    - Dst: test_run
      Src: /src/dovecot/src/auth/test-mech.c:383,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/auth/test-mech.c:384,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/auth/test-mech.c:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 363
    functionDepth: 7
    functionLinenumber: 363
    functionLinenumberEnd: 388
    functionName: main
    functionSourceFile: /src/dovecot/src/auth/test-mech.c
    functionUses: 9
    functionsReached:
    - io_loop_set_current
    - test_run
    - io_loop_destroy
    - io_loop_create
    - master_service_init_finish
    - master_service_init
    - master_service_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-ldap.c:56,1
    - Dst: ldap_query_get_fields
      Src: /src/dovecot/src/auth/userdb-ldap.c:57,1
    - Dst: auth_request_set_userdb_fields_ex
      Src: /src/dovecot/src/auth/userdb-ldap.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - conn
    - auth_request
    - ldap_request
    - res
    argTypes:
    - struct ldap_connection*
    - struct auth_request*
    - struct ldap_request_search*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 49
    functionDepth: 6
    functionLinenumber: 49
    functionLinenumberEnd: 63
    functionName: ldap_query_get_result
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - ldap_query_get_fields
    - auth_request_set_userdb_fields_ex
    linkageType: ''
    returnType: int
    signature: "int ldap_query_get_result(struct ldap_connection *conn,\n\t\t      struct
      auth_request *auth_request,\n\t\t      struct ldap_request_search *ldap_request,\n\t\t
      \     LDAPMessage *res)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_db_log_unknown_user
      Src: /src/dovecot/src/auth/userdb-ldap.c:76,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-ldap.c:78,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-ldap.c:78,1
    - Dst: struct userdb_ldap_request*::userdb_callback
      Src: /src/dovecot/src/auth/userdb-ldap.c:85,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - auth_request
    - urequest
    - res
    argTypes:
    - struct auth_request*
    - struct userdb_ldap_request*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 65
    functionDepth: 6
    functionLinenumber: 65
    functionLinenumberEnd: 86
    functionName: userdb_ldap_lookup_finish
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - e_error
    - authdb_event
    - auth_request_db_log_unknown_user
    - struct userdb_ldap_request*::userdb_callback
    linkageType: ''
    returnType: void
    signature: "void userdb_ldap_lookup_finish(struct auth_request *auth_request,\n\t\t\t
      \ struct userdb_ldap_request *urequest,\n\t\t\t  LDAPMessage *res)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-ldap.c:93,1
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/auth/userdb-ldap.c:98,1
    - Dst: userdb_ldap_lookup_finish
      Src: /src/dovecot/src/auth/userdb-ldap.c:99,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/userdb-ldap.c:100,1
    - Dst: ldap_query_get_result
      Src: /src/dovecot/src/auth/userdb-ldap.c:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - request
    - res
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 88
    functionDepth: 7
    functionLinenumber: 88
    functionLinenumberEnd: 110
    functionName: userdb_ldap_lookup_callback
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - container_of
    - userdb_ldap_lookup_finish
    - ldap_msgtype
    - ldap_query_get_result
    - auth_request_unref
    linkageType: ''
    returnType: void
    signature: "void userdb_ldap_lookup_callback(struct ldap_connection *conn,\n\t\t\t\t\tstruct
      ldap_request *request,\n\t\t\t\t\tLDAPMessage *res)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-ldap.c:117,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-ldap.c:119,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-ldap.c:125,1
    - Dst: ldap_pre_settings_post_check
      Src: /src/dovecot/src/auth/userdb-ldap.c:127,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-ldap.c:129,1
    - Dst: callback
      Src: /src/dovecot/src/auth/userdb-ldap.c:130,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:131,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/userdb-ldap.c:135,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-ldap.c:136,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/userdb-ldap.c:138,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/userdb-ldap.c:140,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:145,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/userdb-ldap.c:147,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/userdb-ldap.c:150,1
    - Dst: db_ldap_request
      Src: /src/dovecot/src/auth/userdb-ldap.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - auth_request
    - callback
    argTypes:
    - struct auth_request*
    - userdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 112
    functionDepth: 6
    functionLinenumber: 112
    functionLinenumberEnd: 155
    functionName: userdb_ldap_lookup
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - p_strdup
    - container_of
    - auth_request_ref
    - p_new
    - ldap_pre_settings_post_check
    - e_debug
    - t_strarray_join
    - db_ldap_request
    - settings_free
    - e_error
    - callback
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void userdb_ldap_lookup(struct auth_request *auth_request,\n\t\t\t
      \      userdb_callback_t *callback)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-ldap.c:162,1
    - Dst: ldap_msgtype
      Src: /src/dovecot/src/auth/userdb-ldap.c:165,1
    - Dst: struct ldap_userdb_iterate_context*::ctx::callback
      Src: /src/dovecot/src/auth/userdb-ldap.c:169,1
    - Dst: auth_request_unref
      Src: /src/dovecot/src/auth/userdb-ldap.c:170,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-ldap.c:184,1
    - Dst: ldap_query_get_fields
      Src: /src/dovecot/src/auth/userdb-ldap.c:185,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/auth/userdb-ldap.c:185,1
    - Dst: event_create
      Src: /src/dovecot/src/auth/userdb-ldap.c:194,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-ldap.c:194,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/auth/userdb-ldap.c:195,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-ldap.c:199,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-ldap.c:201,1
    - Dst: array_is_created
      Src: /src/dovecot/src/auth/userdb-ldap.c:203,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-ldap.c:204,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:206,1
    - Dst: array_get
      Src: /src/dovecot/src/auth/userdb-ldap.c:209,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb-ldap.c:213,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/auth/userdb-ldap.c:214,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/userdb-ldap.c:215,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-ldap.c:215,1
    - Dst: strcmp
      Src: /src/dovecot/src/auth/userdb-ldap.c:220,1
    - Dst: e_warning
      Src: /src/dovecot/src/auth/userdb-ldap.c:221,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-ldap.c:221,1
    - Dst: struct ldap_userdb_iterate_context*::ctx::callback
      Src: /src/dovecot/src/auth/userdb-ldap.c:227,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:229,1
    - Dst: event_unref
      Src: /src/dovecot/src/auth/userdb-ldap.c:231,1
    - Dst: db_ldap_enable_input
      Src: /src/dovecot/src/auth/userdb-ldap.c:234,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 3
    argNames:
    - conn
    - request
    - res
    argTypes:
    - struct ldap_connection*
    - struct ldap_request*
    - LDAPMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 157
    functionDepth: 10
    functionLinenumber: 157
    functionLinenumberEnd: 236
    functionName: userdb_ldap_iterate_callback
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - event_unref
    - ldap_query_get_fields
    - struct ldap_userdb_iterate_context*::ctx::callback
    - e_warning
    - ldap_msgtype
    - event_set_ptr
    - event_create
    - array_get
    - e_error
    - pool_datastack_create
    - db_ldap_enable_input
    - strcmp
    - authdb_event
    - container_of
    - settings_free
    - t_strsplit
    - auth_request_unref
    - array_is_created
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void userdb_ldap_iterate_callback(struct ldap_connection *conn,\n\t\t\t\t\t
      struct ldap_request *request,\n\t\t\t\t\t LDAPMessage *res)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-ldap.c:244,1
    - Dst: authdb_event
      Src: /src/dovecot/src/auth/userdb-ldap.c:246,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-ldap.c:252,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-ldap.c:261,1
    - Dst: ldap_pre_settings_post_check
      Src: /src/dovecot/src/auth/userdb-ldap.c:263,1
    - Dst: e_error
      Src: /src/dovecot/src/auth/userdb-ldap.c:265,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:266,1
    - Dst: auth_request_ref
      Src: /src/dovecot/src/auth/userdb-ldap.c:271,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/userdb-ldap.c:273,1
    - Dst: p_strdup
      Src: /src/dovecot/src/auth/userdb-ldap.c:275,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:280,1
    - Dst: e_debug
      Src: /src/dovecot/src/auth/userdb-ldap.c:282,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/auth/userdb-ldap.c:285,1
    - Dst: db_ldap_request
      Src: /src/dovecot/src/auth/userdb-ldap.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 3
    argNames:
    - auth_request
    - callback
    - context
    argTypes:
    - struct auth_request*
    - userdb_iter_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 238
    functionDepth: 6
    functionLinenumber: 238
    functionLinenumberEnd: 290
    functionName: userdb_ldap_iterate_init
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - authdb_event
    - p_strdup
    - container_of
    - p_new
    - auth_request_ref
    - ldap_pre_settings_post_check
    - e_debug
    - t_strarray_join
    - db_ldap_request
    - settings_free
    - e_error
    - settings_get
    linkageType: ''
    returnType: struct userdb_iterate_context
    signature: "struct userdb_iterate_context *\nuserdb_ldap_iterate_init(struct auth_request
      *auth_request,\n\t\t\t userdb_iter_callback_t *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-ldap.c:295,1
    - Dst: struct userdb_iterate_context*::callback
      Src: /src/dovecot/src/auth/userdb-ldap.c:298,1
    - Dst: db_ldap_enable_input
      Src: /src/dovecot/src/auth/userdb-ldap.c:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 292
    functionDepth: 10
    functionLinenumber: 292
    functionLinenumberEnd: 304
    functionName: userdb_ldap_iterate_next
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - struct userdb_iterate_context*::callback
    - container_of
    - db_ldap_enable_input
    linkageType: ''
    returnType: void
    signature: void userdb_ldap_iterate_next(struct userdb_iterate_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-ldap.c:309,1
    - Dst: db_ldap_enable_input
      Src: /src/dovecot/src/auth/userdb-ldap.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct userdb_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 306
    functionDepth: 10
    functionLinenumber: 306
    functionLinenumberEnd: 315
    functionName: userdb_ldap_iterate_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - container_of
    - db_ldap_enable_input
    linkageType: ''
    returnType: int
    signature: int userdb_ldap_iterate_deinit(struct userdb_iterate_context *_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-ldap.c:329,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-ldap.c:332,1
    - Dst: settings_get
      Src: /src/dovecot/src/auth/userdb-ldap.c:335,1
    - Dst: p_new
      Src: /src/dovecot/src/auth/userdb-ldap.c:339,1
    - Dst: db_ldap_init
      Src: /src/dovecot/src/auth/userdb-ldap.c:340,1
    - Dst: db_ldap_get_attribute_names
      Src: /src/dovecot/src/auth/userdb-ldap.c:342,1
    - Dst: db_ldap_get_attribute_names
      Src: /src/dovecot/src/auth/userdb-ldap.c:345,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/auth/userdb-ldap.c:348,1
    - Dst: userdb_set_cache_key
      Src: /src/dovecot/src/auth/userdb-ldap.c:350,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:356,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:357,1
    - Dst: settings_free
      Src: /src/dovecot/src/auth/userdb-ldap.c:358,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 5
    argNames:
    - pool
    - event
    - userdb_params
    - module_r
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - struct event*
    - struct userdb_parameters*
    - struct userdb_module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 317
    functionDepth: 7
    functionLinenumber: 317
    functionLinenumberEnd: 360
    functionName: userdb_ldap_preinit
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_init
    - userdb_set_cache_key
    - p_new
    - settings_free
    - db_ldap_get_attribute_names
    - settings_get
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int userdb_ldap_preinit(pool_t pool, struct event *event,\n\t\t    const
      struct userdb_parameters *userdb_params,\n\t\t    struct userdb_module **module_r,\n\t\t
      \   const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-ldap.c:365,1
    - Dst: db_ldap_connect_delayed
      Src: /src/dovecot/src/auth/userdb-ldap.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 369
    functionName: userdb_ldap_init
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - db_ldap_connect_delayed
    - container_of
    linkageType: ''
    returnType: void
    signature: void userdb_ldap_init(struct userdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/auth/userdb-ldap.c:374,1
    - Dst: db_ldap_abort_all_requests
      Src: /src/dovecot/src/auth/userdb-ldap.c:376,1
    - Dst: db_ldap_unref
      Src: /src/dovecot/src/auth/userdb-ldap.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _module
    argTypes:
    - struct userdb_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 371
    functionDepth: 4
    functionLinenumber: 371
    functionLinenumberEnd: 378
    functionName: userdb_ldap_deinit
    functionSourceFile: /src/dovecot/src/auth/userdb-ldap.c
    functionUses: 0
    functionsReached:
    - container_of
    - db_ldap_unref
    - db_ldap_abort_all_requests
    linkageType: ''
    returnType: void
    signature: void userdb_ldap_deinit(struct userdb_module *_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:28,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:29,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 32
    functionName: doveadm_print_json_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_create
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:39,1
    - Dst: json_ostream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:40,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 34
    functionDepth: 17
    functionLinenumber: 34
    functionLinenumberEnd: 42
    functionName: doveadm_print_json_init_output
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_array
    - json_ostream_create
    - json_ostream_set_no_error_handling
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_init_output(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:48,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct doveadm_print_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: doveadm_print_json_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_header(const struct doveadm_print_header *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_json_init_output
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:57,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 18
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: doveadm_print_json_value_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_object
    - doveadm_print_json_init_output
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_value_header(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 63
    functionDepth: 16
    functionLinenumber: 63
    functionLinenumberEnd: 69
    functionName: doveadm_print_json_value_footer
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_nascend_object
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_value_footer(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:73,1
    - Dst: doveadm_print_json_value_header
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:75,1
    - Dst: json_ostream_nwrite_null
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:78,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:80,1
    - Dst: str_is_float
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:80,1
    - Dst: json_ostream_nwrite_number_raw
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:81,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:84,1
    - Dst: doveadm_print_json_value_footer
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 71
    functionDepth: 19
    functionLinenumber: 71
    functionLinenumberEnd: 88
    functionName: doveadm_print_json_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - array_idx
    - doveadm_print_json_value_footer
    - json_ostream_nwrite_number_raw
    - json_ostream_nwrite_string
    - json_ostream_nwrite_null
    - doveadm_print_json_value_header
    - str_is_float
    - i_assert
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_print(const char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:95,1
    - Dst: doveadm_print_json_value_header
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:96,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:97,1
    - Dst: json_ostream_nopen_string_stream
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:98,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:100,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:104,1
    - Dst: doveadm_print_json_value_footer
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:105,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - value
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 90
    functionDepth: 19
    functionLinenumber: 90
    functionLinenumberEnd: 110
    functionName: doveadm_print_json_print_stream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - array_idx
    - doveadm_print_json_value_footer
    - o_stream_set_no_error_handling
    - o_stream_nsend
    - doveadm_print_json_value_header
    - i_assert
    - o_stream_destroy
    - json_ostream_nopen_string_stream
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_print_stream(const unsigned char *value, size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_json_init_output
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:119,1
    - Dst: json_ostream_nflush
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 18
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: doveadm_print_json_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_nflush
    - doveadm_print_json_init_output
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_flush(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:126,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:127,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-print-json.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 123
    functionDepth: 16
    functionLinenumber: 123
    functionLinenumberEnd: 129
    functionName: doveadm_print_json_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-json.c
    functionUses: 0
    functionsReached:
    - json_ostream_destroy
    - json_ostream_nascend_array
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_print_json_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:18,1
    - Dst: doveadm_blocking_connect
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:29,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:30,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:31,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:31,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:32,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:33,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:33,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 36
    functionName: indexer_send_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-indexer.c
    functionUses: 0
    functionsReached:
    - doveadm_blocking_connect
    - o_stream_get_error
    - o_stream_unref
    - i_fatal
    - o_stream_flush
    - o_stream_nsend_str
    - t_strconcat
    linkageType: ''
    returnType: struct istream
    signature: struct istream *indexer_send_cmd(const char *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:41,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:43,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:46,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:47,1
    - Dst: indexer_send_cmd
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:50,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 51
    functionName: indexer_send_cmd_with_args
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-indexer.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - indexer_send_cmd
    - str_append_c
    - str_append_tabescaped
    - str_append
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      indexer_send_cmd_with_args(const char *cmd, const char *const *args)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:59,1
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:61,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:63,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:64,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:65,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:69,1
    - Dst: indexer_send_cmd_with_args
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:72,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:74,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:75,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:76,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:76,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:77,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:78,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:79,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 81
    functionName: cmd_indexer_add
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-indexer.c
    functionUses: 0
    functionsReached:
    - dec2str
    - strcmp
    - indexer_send_cmd_with_args
    - alarm
    - i_fatal
    - help_ver2
    - doveadm_cmd_param_str
    - i_stream_read_next_line
    - i_stream_get_error
    - doveadm_cmd_param_int64
    - doveadm_cmd_param_bool
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void cmd_indexer_add(struct doveadm_cmd_context *cctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:87,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:88,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:89,1
    - Dst: indexer_send_cmd_with_args
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:93,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:95,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:96,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:97,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:97,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:98,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:99,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:100,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 102
    functionName: cmd_indexer_remove
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-indexer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - indexer_send_cmd_with_args
    - alarm
    - i_fatal
    - help_ver2
    - doveadm_cmd_param_str
    - i_stream_read_next_line
    - i_stream_get_error
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void cmd_indexer_remove(struct doveadm_cmd_context *cctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:106,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:111,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:112,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:113,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:114,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:117,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:120,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:123,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:127,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:129,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:131,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:133,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 135
    functionName: cmd_indexer_list_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-indexer.c
    functionUses: 0
    functionsReached:
    - str_array_length
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int cmd_indexer_list_print(const char *const *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:141,1
    - Dst: indexer_send_cmd_with_args
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:145,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:147,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:148,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:149,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:150,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:151,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:152,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:153,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:155,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:157,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:160,1
    - Dst: cmd_indexer_list_print
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:161,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-indexer.c:162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 137
    functionDepth: 3
    functionLinenumber: 137
    functionLinenumberEnd: 164
    functionName: cmd_indexer_list
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-indexer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - indexer_send_cmd_with_args
    - t_strsplit_tabescaped
    - cmd_indexer_list_print
    - doveadm_print_init
    - alarm
    - i_fatal
    - doveadm_cmd_param_str
    - i_stream_read_next_line
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_indexer_list(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - optP
    - ','
    - nameP
    - ','
    - typeP
    - ','
    - flagP
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: DOVEADM_CMD_PARAM
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DOVEADM_CMD_PARAM(optP, nameP, typeP, flagP)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - optP
    - ','
    - nameP
    - ','
    - keyP
    - ','
    - typeP
    - ','
    - flagP
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 9
    functionName: DOVEADM_CMD_PARAMKV
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DOVEADM_CMD_PARAMKV(optP, nameP, keyP, typeP, flagP)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.h:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - cctx
    - name
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: doveadm_cmd_param_flag
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.h
    functionUses: 5
    functionsReached:
    - doveadm_cmd_param_bool
    linkageType: ''
    returnType: bool
    signature: bool doveadm_cmd_param_flag(const struct doveadm_cmd_context *cctx,
      const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: DOVEADM_MAIL_SERVER_FAILED
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DOVEADM_MAIL_SERVER_FAILED(ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct doveadm_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: doveadm_server_request_free
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_server_request_free(struct doveadm_server_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:77,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:78,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:81,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:81,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:82,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:85,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:87,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:88,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 93
    functionName: doveadm_server_get
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - hash_table_lookup
    - p_strdup
    - hash_table_create
    - p_new
    - hash_table_insert
    - array_is_created
    - i_assert
    - hash_table_is_created
    linkageType: ''
    returnType: struct doveadm_server
    signature: struct doveadm_server *doveadm_server_get(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:103,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:104,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:105,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:106,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct doveadm_mail_server_cmd**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 108
    functionName: doveadm_mail_server_cmd_free
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_server_cmd_free(struct doveadm_mail_server_cmd **_cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:120,1
    - Dst: mail_storage_service_init_settings
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:122,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:124,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:125,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:132,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:133,1
    - Dst: array_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:134,1
    - Dst: doveadm_mail_get_forward_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:136,1
    - Dst: mail_storage_service_get_auth_conn
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:138,1
    - Dst: auth_master_get_socket_path
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:139,1
    - Dst: auth_master_pass_lookup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 5
    argNames:
    - ctx
    - extra_fields
    - pool
    - fields_r
    - auth_socket_path_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char**
    - pool_t
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 110
    functionDepth: 5
    functionLinenumber: 110
    functionLinenumberEnd: 142
    functionName: doveadm_cmd_pass_lookup
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_init_settings
    - i_zero
    - master_service_get_name
    - mail_storage_service_get_auth_conn
    - str_array_length
    - auth_master_pass_lookup
    - doveadm_mail_get_forward_fields
    - t_array_init
    - auth_master_get_socket_path
    - array_append
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmd_pass_lookup(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \   const char *const *extra_fields, pool_t pool,\n\t\t\t    const char *const
      **fields_r,\n\t\t\t    const char **auth_socket_path_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:157,1
    - Dst: array_clear
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:158,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:164,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:169,1
    - Dst: auth_proxy_settings_parse
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:173,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:176,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:184,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:186,1
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:188,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:189,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:190,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:191,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:194,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:196,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:206,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:208,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:217,1
    - Dst: strstr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:220,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:221,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:228,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:229,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 59
    argCount: 6
    argNames:
    - ctx
    - auth_socket_path
    - fields
    - proxy_set
    - nologin_r
    - error_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char*
    - char**
    - struct auth_proxy_settings*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 144
    functionDepth: 3
    functionLinenumber: 144
    functionLinenumberEnd: 235
    functionName: doveadm_cmd_pass_reply_parse
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - net_addr2ip
    - p_array_init
    - array_push_back
    - str_begins
    - t_strdup
    - t_strdup_printf
    - auth_proxy_settings_parse
    - t_strdup_until
    - array_clear
    - array_is_created
    - strstr
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmd_pass_reply_parse(struct doveadm_mail_cmd_context *ctx,\n\t\t\t\t
      const char *auth_socket_path,\n\t\t\t\t const char *const *fields,\n\t\t\t\t
      struct auth_proxy_settings *proxy_set,\n\t\t\t\t bool *nologin_r, const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_get_dest
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:245,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:246,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:248,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:248,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:249,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:251,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:252,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - servercmd
    - str
    argTypes:
    - struct doveadm_mail_server_cmd*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 255
    functionName: doveadm_proxy_cmd_get_redirect_path
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - doveadm_client_get_dest
    - array_foreach
    - net_ip2addr
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void doveadm_proxy_cmd_get_redirect_path(struct doveadm_mail_server_cmd
      *servercmd,\n\t\t\t\t    string_t *str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_get_dest
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:265,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:266,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:268,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:270,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:273,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:274,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - servercmd
    - ip
    - port
    argTypes:
    - struct doveadm_mail_server_cmd*
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 278
    functionName: doveadm_proxy_cmd_have_connected
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - doveadm_client_get_dest
    - array_foreach
    - array_is_created
    - i_assert
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_proxy_cmd_have_connected(struct doveadm_mail_server_cmd
      *servercmd,\n\t\t\t\t const struct ip_addr *ip, in_port_t port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:283,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:284,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:287,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:288,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:289,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 290
    functionName: doveadm_mail_get_outgoing_forward_fields
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - array_is_empty
    - array_pop_back
    - array_front
    - array_append_zero
    - array_is_created
    linkageType: ''
    returnType: char
    signature: 'char *const *

      doveadm_mail_get_outgoing_forward_fields(struct doveadm_mail_cmd_context *ctx)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:304,1
    - Dst: doveadm_client_get_settings
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:307,1
    - Dst: doveadm_proxy_cmd_have_connected
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:309,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:310,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:312,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:316,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:320,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:321,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:322,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:326,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:326,1
    - Dst: doveadm_server_get
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:327,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:330,1
    - Dst: doveadm_client_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:339,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:340,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:349,1
    - Dst: doveadm_mail_get_outgoing_forward_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:354,1
    - Dst: doveadm_client_cmd
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:355,1
    - Dst: doveadm_client_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:357,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 5
    argNames:
    - servercmd
    - ip
    - port
    - ssl_flags
    - error_r
    argTypes:
    - struct doveadm_mail_server_cmd*
    - struct ip_addr*
    - in_port_t
    - enum auth_proxy_ssl_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 359
    functionName: doveadm_cmd_redirect_finish
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - doveadm_client_create
    - doveadm_proxy_cmd_have_connected
    - array_append_space
    - doveadm_client_get_settings
    - doveadm_mail_get_outgoing_forward_fields
    - t_strdup_printf
    - doveadm_server_get
    - doveadm_client_cmd
    - doveadm_client_unref
    - net_ip2addr
    - i_stream_seek
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmd_redirect_finish(struct doveadm_mail_server_cmd *servercmd,\n\t\t\t
      \   const struct ip_addr *ip, in_port_t port,\n\t\t\t    enum auth_proxy_ssl_flags
      ssl_flags,\n\t\t\t    const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:373,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:375,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:376,1
    - Dst: doveadm_proxy_cmd_get_redirect_path
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:377,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:379,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:380,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:382,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:382,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:386,1
    - Dst: doveadm_cmd_pass_lookup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:387,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:393,1
    - Dst: doveadm_cmd_pass_reply_parse
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:398,1
    - Dst: doveadm_cmd_redirect_finish
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:402,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:410,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:414,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 5
    argNames:
    - servercmd
    - host
    - port
    - destuser
    - error_r
    argTypes:
    - struct doveadm_mail_server_cmd*
    - char*
    - in_port_t
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 361
    functionDepth: 6
    functionLinenumber: 361
    functionLinenumberEnd: 416
    functionName: doveadm_cmd_redirect_relookup
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - pool_alloconly_create
    - doveadm_cmd_redirect_finish
    - str_append
    - t_strdup_printf
    - str_tabescape
    - pool_unref
    - doveadm_cmd_pass_lookup
    - doveadm_cmd_pass_reply_parse
    - doveadm_proxy_cmd_get_redirect_path
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmd_redirect_relookup(struct doveadm_mail_server_cmd *servercmd,\n\t\t\t
      \     const char *host, in_port_t port,\n\t\t\t      const char *destuser, const
      char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_get_settings
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:424,1
    - Dst: auth_proxy_parse_redirect
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:430,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:431,1
    - Dst: doveadm_cmd_redirect_relookup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:440,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:443,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:444,1
    - Dst: doveadm_cmd_redirect_finish
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:449,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - servercmd
    - destination
    argTypes:
    - struct doveadm_mail_server_cmd*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 418
    functionDepth: 7
    functionLinenumber: 418
    functionLinenumberEnd: 459
    functionName: doveadm_cmd_redirect
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_redirect_relookup
    - net_addr2ip
    - doveadm_cmd_redirect_finish
    - doveadm_client_get_settings
    - auth_proxy_parse_redirect
    - e_error
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmd_redirect(struct doveadm_mail_server_cmd *servercmd,\n\t\t\t\tconst
      char *destination)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:466,1
    - Dst: doveadm_print_sticky
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:468,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:473,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:474,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:478,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:479,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:481,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:483,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:484,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - data
    - size
    - finished
    - servercmd
    argTypes:
    - unsigned char*
    - size_t
    - bool
    - struct doveadm_mail_server_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 486
    functionName: doveadm_cmd_print_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - doveadm_print
    - str_append_tabunescaped
    - doveadm_print_stream
    - doveadm_print_sticky
    linkageType: ''
    returnType: void
    signature: "void doveadm_cmd_print_callback(const unsigned char *data,\n\t\t\t
      \  size_t size, bool finished,\n\t\t\t   struct doveadm_mail_server_cmd *servercmd)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:502,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:507,1
    - Dst: doveadm_mail_server_cmd_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:508,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:511,1
    - Dst: doveadm_cmd_redirect
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:518,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:522,1
    - Dst: doveadm_mail_server_cmd_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:523,1
    - Dst: doveadm_mail_server_cmd_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:531,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:536,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:540,1
    - Dst: array_delete
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:542,1
    - Dst: doveadm_mail_server_handle
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:544,1
    - Dst: doveadm_server_request_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:547,1
    - Dst: doveadm_client_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:548,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:552,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct doveadm_server_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 488
    functionDepth: 8
    functionLinenumber: 488
    functionLinenumberEnd: 553
    functionName: doveadm_cmd_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - array_delete
    - doveadm_server_request_free
    - doveadm_mail_server_handle
    - e_error
    - doveadm_client_unref
    - io_loop_stop
    - doveadm_cmd_redirect
    - array_foreach_idx
    - array_foreach_modifiable
    - doveadm_mail_server_cmd_free
    linkageType: ''
    returnType: void
    signature: "void doveadm_cmd_callback(const struct doveadm_server_reply *reply,\n\t\t\t\t
      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmdv2_wrapper_generate_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:560,1
    - Dst: doveadm_mail_server_handle_full
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - server
    - conn
    - cmd_ctx
    - username
    - print_username
    argTypes:
    - struct doveadm_server*
    - struct doveadm_client*
    - struct doveadm_mail_cmd_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 564
    functionName: doveadm_mail_server_handle
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 1
    functionsReached:
    - doveadm_mail_server_handle_full
    - doveadm_cmdv2_wrapper_generate_args
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_server_handle(struct doveadm_server *server,\n\t\t\t\tstruct
      doveadm_client *conn,\n\t\t\t\tstruct doveadm_mail_cmd_context *cmd_ctx,\n\t\t\t\tconst
      char *username, bool print_username)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:578,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:580,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:582,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:583,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:585,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:586,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:587,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:590,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:591,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:593,1
    - Dst: i_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:595,1
    - Dst: i_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:599,1
    - Dst: i_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:600,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:600,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:604,1
    - Dst: doveadm_client_set_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:605,1
    - Dst: doveadm_mail_get_outgoing_forward_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:610,1
    - Dst: doveadm_client_cmd
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:611,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:611,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 7
    argNames:
    - server
    - conn
    - cmd_ctx
    - username
    - cmd_name
    - cmd_args
    - print_username
    argTypes:
    - struct doveadm_server*
    - struct doveadm_client*
    - struct doveadm_mail_cmd_context*
    - char*
    - char*
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 613
    functionName: doveadm_mail_server_handle_full
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - doveadm_mail_get_outgoing_forward_fields
    - i_stream_ref
    - doveadm_client_cmd
    - i_strdup
    - str_append_tabescaped
    - i_new
    - doveadm_client_set_print
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_server_handle_full(struct doveadm_server *server,\n\t\t\t\t
      \    struct doveadm_client *conn,\n\t\t\t\t     struct doveadm_mail_cmd_context
      *cmd_ctx,\n\t\t\t\t     const char *username,\n\t\t\t\t     const char *cmd_name,\n\t\t\t\t
      \    const char *const *cmd_args,\n\t\t\t\t     bool print_username)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:622,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:624,1
    - Dst: doveadm_client_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:626,1
    - Dst: doveadm_mail_server_handle
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:630,1
    - Dst: doveadm_server_request_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:633,1
    - Dst: doveadm_client_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - cmd_ctx
    - error_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 615
    functionDepth: 2
    functionLinenumber: 615
    functionLinenumberEnd: 636
    functionName: doveadm_mail_server_request_queue_handle_next
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - doveadm_client_create
    - array_pop_front
    - doveadm_server_request_free
    - doveadm_mail_server_handle
    - doveadm_client_unref
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_server_request_queue_handle_next(struct doveadm_mail_cmd_context
      *cmd_ctx,\n\t\t\t\t\t      const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:651,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:655,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:660,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:663,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:675,1
    - Dst: doveadm_cmd_pass_lookup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:676,1
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:680,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:681,1
    - Dst: doveadm_cmd_pass_reply_parse
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:690,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:711,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:716,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 5
    argNames:
    - ctx
    - proxy_set_r
    - socket_path_r
    - referral_r
    - error_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct auth_proxy_settings*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 638
    functionDepth: 6
    functionLinenumber: 638
    functionLinenumberEnd: 718
    functionName: doveadm_mail_server_user_get_host
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strchr
    - pool_alloconly_create
    - t_strdup_printf
    - pool_unref
    - doveadm_cmd_pass_lookup
    - net_str2hostport
    - doveadm_cmd_pass_reply_parse
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_server_user_get_host(struct doveadm_mail_cmd_context
      *ctx,\n\t\t\t\t  struct auth_proxy_settings *proxy_set_r,\n\t\t\t\t  const char
      **socket_path_r,\n\t\t\t\t  const char **referral_r,\n\t\t\t\t  const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:729,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:731,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:734,1
    - Dst: str_to_int
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:735,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:737,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:739,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:740,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:741,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:744,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:745,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 748
    functionName: doveadm_mail_cmd_extra_fields_parse
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - p_strdup
    - p_array_init
    - array_push_back
    - e_error
    - t_strdup_until
    - array_is_created
    - str_to_int
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_cmd_extra_fields_parse(struct doveadm_mail_cmd_context
      *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_is_initialized
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:759,1
    - Dst: doveadm_mail_cmd_extra_fields_parse
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:762,1
    - Dst: doveadm_mail_server_user_get_host
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:763,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:777,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:780,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:781,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:782,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:798,1
    - Dst: doveadm_server_get
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:799,1
    - Dst: I_MAX
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:801,1
    - Dst: DOVEADM_MAIL_SERVER_FAILED
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:804,1
    - Dst: doveadm_clients_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:807,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:808,1
    - Dst: doveadm_mail_server_request_queue_handle_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:809,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:814,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:819,1
    - Dst: doveadm_clients_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:822,1
    - Dst: doveadm_client_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:823,1
    - Dst: doveadm_mail_server_handle
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:827,1
    - Dst: doveadm_client_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:830,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:833,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:834,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:836,1
    - Dst: doveadm_client_settings_dup
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:838,1
    - Dst: master_service_is_killed
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:840,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 750
    functionDepth: 7
    functionLinenumber: 750
    functionLinenumberEnd: 846
    functionName: doveadm_mail_server_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - t_strdup_printf
    - doveadm_mail_server_request_queue_handle_next
    - doveadm_client_unref
    - array_count
    - io_loop_run
    - doveadm_client_create
    - array_append_space
    - DOVEADM_MAIL_SERVER_FAILED
    - master_service_is_killed
    - doveadm_mail_server_handle
    - doveadm_print_is_initialized
    - doveadm_client_settings_dup
    - doveadm_clients_count
    - i_assert
    - pool_alloconly_create
    - doveadm_server_get
    - I_MAX
    - doveadm_mail_cmd_extra_fields_parse
    - doveadm_mail_server_user_get_host
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_server_user(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:853,1
    - Dst: I_MAX
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:857,1
    - Dst: DOVEADM_MAIL_SERVER_FAILED
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:858,1
    - Dst: doveadm_clients_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:861,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:862,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:866,1
    - Dst: doveadm_mail_server_request_queue_handle_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:868,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:869,1
    - Dst: DOVEADM_MAIL_SERVER_FAILED
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:874,1
    - Dst: doveadm_clients_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:875,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:876,1
    - Dst: doveadm_clients_destroy_all
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:878,1
    - Dst: doveadm_is_killed
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:879,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:880,1
    - Dst: DOVEADM_MAIL_SERVER_FAILED
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:881,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:882,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:885,1
    - Dst: doveadm_server_request_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:886,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:887,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:888,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-server.c:889,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 848
    functionDepth: 3
    functionLinenumber: 848
    functionLinenumberEnd: 890
    functionName: doveadm_mail_server_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-server.c
    functionUses: 0
    functionsReached:
    - DOVEADM_MAIL_SERVER_FAILED
    - doveadm_server_request_free
    - I_MAX
    - doveadm_mail_server_request_queue_handle_next
    - pool_unref
    - e_error
    - doveadm_clients_destroy_all
    - array_count
    - doveadm_is_killed
    - array_free
    - array_foreach_modifiable
    - doveadm_clients_count
    - doveadm_mail_failed_error
    - hash_table_is_created
    - io_loop_run
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_server_flush(struct doveadm_mail_cmd_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:20,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:25,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:28,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:29,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:34,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:35,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:38,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:39,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:40,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:47,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:48,1
    - Dst: dict_drivers_register_builtin
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:54,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:56,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:57,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:58,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - cctx
    - dict_r
    - dopset_r
    argTypes:
    - struct doveadm_cmd_context*
    - struct dict**
    - struct dict_op_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 65
    functionName: cmd_dict_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_begins_with
    - dict_drivers_register_builtin
    - settings_event_add_filter_name
    - doveadm_cmd_param_str
    - e_error
    - dict_init_auto
    linkageType: ''
    returnType: int
    signature: "int cmd_dict_init(struct doveadm_cmd_context *cctx,\n\t      struct
      dict **dict_r,\n\t      struct dict_op_settings *dopset_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cmd_dict_init
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:75,1
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:77,1
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:80,1
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:81,1
    - Dst: dict_transaction_set_timestamp
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - cctx
    - dict_r
    - trans_r
    argTypes:
    - struct doveadm_cmd_context*
    - struct dict**
    - struct dict_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 89
    functionName: cmd_dict_init_transaction
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - dict_transaction_set_timestamp
    - dict_transaction_begin
    - doveadm_cmd_param_int64
    - cmd_dict_init
    linkageType: ''
    returnType: int
    signature: "int cmd_dict_init_transaction(struct doveadm_cmd_context *cctx,\n\t\t\t
      \ struct dict **dict_r,\n\t\t\t  struct dict_transaction_context **trans_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:103,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct dict_lookup_result*
    - struct doveadm_dict_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: dict_lookup_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void dict_lookup_callback(const struct dict_lookup_result *result,\n\t\t\t\t
      struct doveadm_dict_ctx *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:111,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:112,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:117,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:118,1
    - Dst: doveadm_dict_get
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 120
    functionName: cmd_dict_get
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header
    - doveadm_print_init
    - doveadm_cmd_param_str
    - e_error
    - doveadm_dict_get
    linkageType: ''
    returnType: void
    signature: void cmd_dict_get(struct doveadm_cmd_context *cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cmd_dict_init
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:128,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:131,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:132,1
    - Dst: dict_lookup_async
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:134,1
    - Dst: dict_wait
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:136,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:138,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:142,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:145,1
    - Dst: doveadm_print_header_disallow
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:150,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:152,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:154,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:156,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:157,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - cctx
    - key
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 122
    functionDepth: 4
    functionLinenumber: 122
    functionLinenumberEnd: 158
    functionName: doveadm_dict_get
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 1
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - doveadm_print
    - cmd_dict_init
    - doveadm_print_header
    - str_array_length
    - pool_unref
    - e_error
    - dict_lookup_async
    - doveadm_print_header_disallow
    - dict_deinit
    - dict_wait
    linkageType: ''
    returnType: void
    signature: void doveadm_dict_get(struct doveadm_cmd_context *cctx, const char
      *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:164,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:165,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:166,1
    - Dst: doveadm_dict_set
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: cmd_dict_set
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - e_error
    - doveadm_cmd_param_str
    - doveadm_dict_set
    linkageType: ''
    returnType: void
    signature: void cmd_dict_set(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cmd_dict_init_transaction
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:180,1
    - Dst: dict_set
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:183,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:184,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:185,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - cctx
    - key
    - value
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 173
    functionDepth: 5
    functionLinenumber: 173
    functionLinenumberEnd: 190
    functionName: doveadm_dict_set
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 1
    functionsReached:
    - dict_transaction_commit
    - cmd_dict_init_transaction
    - e_error
    - dict_deinit
    - dict_set
    linkageType: ''
    returnType: void
    signature: "void doveadm_dict_set(struct doveadm_cmd_context *cctx, const char
      *key,\n\t\t      const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:196,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:197,1
    - Dst: doveadm_dict_unset
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 202
    functionName: cmd_dict_unset
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - e_error
    - doveadm_dict_unset
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_dict_unset(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cmd_dict_init_transaction
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:210,1
    - Dst: dict_unset
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:213,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:214,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:215,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cctx
    - key
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 204
    functionDepth: 5
    functionLinenumber: 204
    functionLinenumberEnd: 220
    functionName: doveadm_dict_unset
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 1
    functionsReached:
    - dict_transaction_commit
    - cmd_dict_init_transaction
    - e_error
    - dict_unset
    - dict_deinit
    linkageType: ''
    returnType: void
    signature: void doveadm_dict_unset(struct doveadm_cmd_context *cctx, const char
      *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:227,1
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:228,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:229,1
    - Dst: doveadm_dict_inc
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 234
    functionName: cmd_dict_inc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - e_error
    - doveadm_dict_inc
    - doveadm_cmd_param_int64
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_dict_inc(struct doveadm_cmd_context *cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cmd_dict_init_transaction
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:244,1
    - Dst: dict_atomic_inc
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:247,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:248,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:250,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:254,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - cctx
    - key
    - diff
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 236
    functionDepth: 5
    functionLinenumber: 236
    functionLinenumberEnd: 258
    functionName: doveadm_dict_inc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 1
    functionsReached:
    - dict_transaction_commit
    - cmd_dict_init_transaction
    - e_error
    - dict_atomic_inc
    - dict_deinit
    linkageType: ''
    returnType: void
    signature: "void doveadm_dict_inc(struct doveadm_cmd_context *cctx, const char
      *key,\n\t\t      int64_t diff)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:265,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:266,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:270,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:272,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:274,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:277,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:278,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:280,1
    - Dst: doveadm_dict_iter
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:281,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 282
    functionName: cmd_dict_iter
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_dict_iter
    - doveadm_print_init
    - doveadm_cmd_param_flag
    - doveadm_cmd_param_str
    - e_error
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_dict_iter(struct doveadm_cmd_context *cctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cmd_dict_init
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:293,1
    - Dst: dict_iterate_init
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:296,1
    - Dst: dict_iterate_values
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:297,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:298,1
    - Dst: doveadm_print_header_disallow
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:303,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:305,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:308,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:311,1
    - Dst: dict_iterate_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:314,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:315,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:319,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - cctx
    - iter_flags
    - prefix
    argTypes:
    - struct doveadm_cmd_context*
    - enum dict_iterate_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 284
    functionDepth: 4
    functionLinenumber: 284
    functionLinenumberEnd: 320
    functionName: doveadm_dict_iter
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 1
    functionsReached:
    - doveadm_print
    - cmd_dict_init
    - dict_iterate_deinit
    - str_array_length
    - e_error
    - dict_iterate_init
    - doveadm_print_header_disallow
    - dict_deinit
    - dict_iterate_values
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: "void doveadm_dict_iter(struct doveadm_cmd_context *cctx,\n\t\t       enum
      dict_iterate_flags iter_flags, const char *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:388,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm-dict.c:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 390
    functionName: doveadm_register_dict_commands
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_register_dict_commands(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:25,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:25,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:26,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:27,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - rootdir
    - hash
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 29
    functionName: sis_get_dir
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-sis.c
    functionUses: 0
    functionsReached:
    - strchr
    - strlen
    - i_fatal
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *sis_get_dir(const char *rootdir, const char *hash)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:40,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:41,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:42,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:43,1
    - Dst: stat
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:45,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:47,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:48,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:50,1
    - Dst: sis_get_dir
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:52,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:53,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:54,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:55,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:56,1
    - Dst: opendir
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:58,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:62,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:65,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:66,1
    - Dst: readdir
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:68,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:69,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:70,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:71,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:72,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:72,1
    - Dst: closedir
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:75,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-sis.c:76,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 77
    functionName: cmd_sis_find
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-sis.c
    functionUses: 0
    functionsReached:
    - str_c
    - doveadm_print_header
    - str_len
    - strlen
    - doveadm_print_init
    - stat
    - readdir
    - t_str_new
    - str_append_c
    - opendir
    - i_fatal
    - help_ver2
    - closedir
    - e_error
    - sis_get_dir
    - strncmp
    - doveadm_print
    - doveadm_cmd_param_str
    - str_truncate
    - str_append
    linkageType: ''
    returnType: void
    signature: void cmd_sis_find(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:130,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:132,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:134,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:135,1
    - Dst: json_ostream_nwrite_number
      Src: /src/dovecot/src/doveadm/client-connection-http.c:136,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:138,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:141,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - context
    - error
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 125
    functionDepth: 18
    functionLinenumber: 125
    functionLinenumberEnd: 144
    functionName: doveadm_http_server_json_error
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_array
    - json_ostream_nwrite_number
    - json_ostream_ndescend_object
    - json_ostream_nascend_object
    - json_ostream_nascend_array
    - json_ostream_nwrite_string
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_json_error(void *context, const char *error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:152,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:153,1
    - Dst: json_ostream_nwrite_text_stream
      Src: /src/dovecot/src/doveadm/client-connection-http.c:155,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:158,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - context
    - result
    argTypes:
    - void*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 146
    functionDepth: 18
    functionLinenumber: 146
    functionLinenumberEnd: 161
    functionName: doveadm_http_server_json_success
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_ostream_nwrite_text_stream
    - json_ostream_ndescend_array
    - json_ostream_nascend_array
    - json_ostream_nwrite_string
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_json_success(void *context, struct istream
      *result)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_is_allowed_command
      Src: /src/dovecot/src/doveadm/client-connection-http.c:173,1
    - Dst: doveadm_http_server_json_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:178,1
    - Dst: doveadm_http_server_json_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:180,1
    - Dst: doveadm_http_server_json_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:182,1
    - Dst: doveadm_http_server_json_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:184,1
    - Dst: doveadm_cmd_context_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:191,1
    - Dst: iostream_temp_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:198,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/client-connection-http.c:202,1
    - Dst: doveadm_cmd_params_null_terminate_arrays
      Src: /src/dovecot/src/doveadm/client-connection-http.c:205,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/client-connection-http.c:206,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:207,1
    - Dst: client_connection_set_proctitle
      Src: /src/dovecot/src/doveadm/client-connection-http.c:215,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/client-connection-http.c:216,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/client-connection-http.c:216,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/client-connection-http.c:219,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/client-connection-http.c:220,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/client-connection-http.c:222,1
    - Dst: struct doveadm_cmd_context*::cmd::cmd
      Src: /src/dovecot/src/doveadm/client-connection-http.c:223,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/doveadm/client-connection-http.c:225,1
    - Dst: client_connection_set_proctitle
      Src: /src/dovecot/src/doveadm/client-connection-http.c:226,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/client-connection-http.c:228,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:229,1
    - Dst: doveadm_print_deinit
      Src: /src/dovecot/src/doveadm/client-connection-http.c:232,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/doveadm/client-connection-http.c:233,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/client-connection-http.c:234,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:236,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/doveadm/client-connection-http.c:240,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:243,1
    - Dst: doveadm_http_server_json_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:245,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:248,1
    - Dst: doveadm_http_server_json_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:251,1
    - Dst: doveadm_http_server_json_success
      Src: /src/dovecot/src/doveadm/client-connection-http.c:253,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:255,1
    - Dst: doveadm_cmd_context_unref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:256,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 163
    functionDepth: 19
    functionLinenumber: 163
    functionLinenumberEnd: 257
    functionName: doveadm_http_server_command_execute
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_context_create
    - doveadm_print_init
    - t_strdup_printf
    - io_loop_destroy
    - iostream_temp_create
    - struct doveadm_cmd_context*::cmd::cmd
    - o_stream_get_error
    - event_set_append_log_prefix
    - iostream_temp_finish
    - doveadm_cmd_context_unref
    - doveadm_http_server_json_success
    - doveadm_cmd_params_null_terminate_arrays
    - client_connection_set_proctitle
    - array_get
    - e_error
    - doveadm_print_deinit
    - o_stream_switch_ioloop_to
    - e_info
    - io_loop_create
    - doveadm_cmd_param_str
    - o_stream_finish
    - i_stream_unref
    - doveadm_http_server_json_error
    - event_drop_parent_log_prefixes
    - doveadm_client_is_allowed_command
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_command_execute(struct client_request_http
      *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_descend
      Src: /src/dovecot/src/doveadm/client-connection-http.c:265,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:268,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:270,1
    - Dst: p_free_and_null
      Src: /src/dovecot/src/doveadm/client-connection-http.c:276,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/client-connection-http.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 259
    functionDepth: 9
    functionLinenumber: 259
    functionLinenumberEnd: 283
    functionName: request_json_parse_cmd
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_params_clean
    - p_free_and_null
    - json_istream_descend
    - json_node_is_array
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_cmd(struct client_request_http *req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/doveadm/client-connection-http.c:295,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:298,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:300,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/doveadm/client-connection-http.c:308,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/client-connection-http.c:309,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:310,1
    - Dst: json_istream_ignore
      Src: /src/dovecot/src/doveadm/client-connection-http.c:318,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/client-connection-http.c:326,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 285
    functionDepth: 9
    functionLinenumber: 285
    functionLinenumberEnd: 334
    functionName: request_json_parse_cmd_name
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_istream_read_next
    - array_append_space
    - json_node_get_str
    - array_foreach
    - i_strccdascmp
    - json_istream_ignore
    - json_node_is_string
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_cmd_name(struct client_request_http *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_descend
      Src: /src/dovecot/src/doveadm/client-connection-http.c:342,1
    - Dst: json_node_is_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:345,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 336
    functionDepth: 9
    functionLinenumber: 336
    functionLinenumberEnd: 356
    functionName: request_json_parse_cmd_params
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_node_is_object
    - json_istream_descend
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_cmd_params(struct client_request_http *req)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_object_member
      Src: /src/dovecot/src/doveadm/client-connection-http.c:366,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/doveadm/client-connection-http.c:371,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/doveadm/client-connection-http.c:377,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:378,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:386,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/doveadm/client-connection-http.c:394,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 358
    functionDepth: 8
    functionLinenumber: 358
    functionLinenumberEnd: 404
    functionName: request_json_parse_param_key
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - i_strccdascmp
    - json_istream_read_object_member
    - json_istream_ascend
    - array_foreach_modifiable
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_param_key(struct client_request_http *req)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_stream
      Src: /src/dovecot/src/doveadm/client-connection-http.c:415,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:420,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:421,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection-http.c:428,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:430,1
    - Dst: json_istream_skip
      Src: /src/dovecot/src/doveadm/client-connection-http.c:434,1
    - Dst: json_istream_descend
      Src: /src/dovecot/src/doveadm/client-connection-http.c:439,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/client-connection-http.c:444,1
    - Dst: json_node_is_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:446,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:453,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:455,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/client-connection-http.c:461,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/doveadm/client-connection-http.c:461,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/client-connection-http.c:462,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/doveadm/client-connection-http.c:470,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:474,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:476,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:479,1
    - Dst: str_to_int64
      Src: /src/dovecot/src/doveadm/client-connection-http.c:487,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/client-connection-http.c:491,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/client-connection-http.c:495,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 67
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 406
    functionDepth: 9
    functionLinenumber: 406
    functionLinenumberEnd: 504
    functionName: request_json_parse_param_value
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - net_addr2ip
    - p_array_init
    - json_istream_skip
    - array_push_back
    - json_node_get_str
    - i_stream_ref
    - json_node_is_array
    - str_to_int64
    - json_istream_read_stream
    - i_assert
    - json_node_is_string
    - json_istream_descend
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_param_value(struct client_request_http *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/doveadm/client-connection-http.c:513,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/doveadm/client-connection-http.c:516,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/doveadm/client-connection-http.c:518,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:522,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:524,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/client-connection-http.c:532,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/doveadm/client-connection-http.c:532,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/client-connection-http.c:533,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 506
    functionDepth: 9
    functionLinenumber: 506
    functionLinenumberEnd: 537
    functionName: request_json_parse_param_array
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_istream_read_next
    - p_strdup
    - array_push_back
    - json_node_get_str
    - json_node_is_array_end
    - json_istream_ascend
    - json_node_is_string
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_param_array(struct client_request_http *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/doveadm/client-connection-http.c:545,1
    - Dst: json_node_is_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:548,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:550,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/client-connection-http.c:557,1
    - Dst: json_node_get_str
      Src: /src/dovecot/src/doveadm/client-connection-http.c:557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 539
    functionDepth: 9
    functionLinenumber: 539
    functionLinenumberEnd: 560
    functionName: request_json_parse_cmd_id
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_istream_read_next
    - p_strdup
    - json_node_get_str
    - json_node_is_string
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_cmd_id(struct client_request_http *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/doveadm/client-connection-http.c:568,1
    - Dst: json_node_is_array_end
      Src: /src/dovecot/src/doveadm/client-connection-http.c:571,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:573,1
    - Dst: json_istream_ascend
      Src: /src/dovecot/src/doveadm/client-connection-http.c:578,1
    - Dst: doveadm_http_server_command_execute
      Src: /src/dovecot/src/doveadm/client-connection-http.c:581,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 562
    functionDepth: 20
    functionLinenumber: 562
    functionLinenumberEnd: 586
    functionName: request_json_parse_cmd_done
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_istream_read_next
    - json_node_is_array_end
    - doveadm_http_server_command_execute
    - json_istream_ascend
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_cmd_done(struct client_request_http *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_read_next
      Src: /src/dovecot/src/doveadm/client-connection-http.c:594,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 588
    functionDepth: 9
    functionLinenumber: 588
    functionLinenumberEnd: 602
    functionName: request_json_parse_done
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_istream_read_next
    - http_server_request_fail_text
    linkageType: ''
    returnType: int
    signature: int request_json_parse_done(struct client_request_http *req)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: request_json_parse_cmd
      Src: /src/dovecot/src/doveadm/client-connection-http.c:610,1
    - Dst: request_json_parse_cmd_name
      Src: /src/dovecot/src/doveadm/client-connection-http.c:613,1
    - Dst: request_json_parse_cmd_params
      Src: /src/dovecot/src/doveadm/client-connection-http.c:616,1
    - Dst: request_json_parse_param_key
      Src: /src/dovecot/src/doveadm/client-connection-http.c:619,1
    - Dst: request_json_parse_param_value
      Src: /src/dovecot/src/doveadm/client-connection-http.c:622,1
    - Dst: request_json_parse_param_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:625,1
    - Dst: request_json_parse_cmd_id
      Src: /src/dovecot/src/doveadm/client-connection-http.c:628,1
    - Dst: request_json_parse_cmd_done
      Src: /src/dovecot/src/doveadm/client-connection-http.c:631,1
    - Dst: request_json_parse_done
      Src: /src/dovecot/src/doveadm/client-connection-http.c:634,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/client-connection-http.c:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 604
    functionDepth: 21
    functionLinenumber: 604
    functionLinenumberEnd: 639
    functionName: doveadm_http_server_json_parse_v1
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - request_json_parse_param_key
    - request_json_parse_cmd_done
    - request_json_parse_cmd_id
    - request_json_parse_done
    - i_unreached
    - request_json_parse_cmd
    - request_json_parse_param_array
    - request_json_parse_cmd_params
    - request_json_parse_param_value
    - request_json_parse_cmd_name
    linkageType: ''
    returnType: int
    signature: int doveadm_http_server_json_parse_v1(struct client_request_http *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_nfinish
      Src: /src/dovecot/src/doveadm/client-connection-http.c:649,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:650,1
    - Dst: json_ostream_get_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:652,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/doveadm/client-connection-http.c:653,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - req
    - _json_output
    argTypes:
    - struct client_request_http*
    - struct json_ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 641
    functionDepth: 4
    functionLinenumber: 641
    functionLinenumberEnd: 660
    functionName: doveadm_http_server_finish_json_output
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - http_server_request_fail
    - e_error
    - json_ostream_get_error
    - json_ostream_nfinish
    - json_ostream_destroy
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_http_server_finish_json_output(struct client_request_http
      *req,\n\t\t\t\t       struct json_ostream **_json_output)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_istream_create_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:670,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:675,1
    - Dst: json_ostream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/client-connection-http.c:676,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:677,1
    - Dst: doveadm_http_server_json_parse_v1
      Src: /src/dovecot/src/doveadm/client-connection-http.c:680,1
    - Dst: http_server_request_get_response
      Src: /src/dovecot/src/doveadm/client-connection-http.c:682,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:684,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/client-connection-http.c:685,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:686,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/client-connection-http.c:691,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/client-connection-http.c:693,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/doveadm/client-connection-http.c:696,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/client-connection-http.c:698,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/client-connection-http.c:700,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:701,1
    - Dst: json_istream_finish
      Src: /src/dovecot/src/doveadm/client-connection-http.c:705,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection-http.c:706,1
    - Dst: http_server_request_fail_text
      Src: /src/dovecot/src/doveadm/client-connection-http.c:708,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:714,1
    - Dst: doveadm_http_server_finish_json_output
      Src: /src/dovecot/src/doveadm/client-connection-http.c:715,1
    - Dst: doveadm_http_server_send_response
      Src: /src/dovecot/src/doveadm/client-connection-http.c:718,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 662
    functionDepth: 22
    functionLinenumber: 662
    functionLinenumberEnd: 719
    functionName: doveadm_http_server_read_request_v1
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_params_clean
    - io_remove
    - http_server_request_fail_close
    - http_server_request_fail_text
    - doveadm_http_server_json_parse_v1
    - i_stream_get_error
    - doveadm_http_server_send_response
    - i_stream_get_name
    - json_istream_create_array
    - i_stream_destroy
    - doveadm_http_server_finish_json_output
    - json_ostream_nascend_array
    - json_istream_finish
    - json_istream_destroy
    - i_assert
    - json_ostream_ndescend_array
    - e_info
    - json_ostream_create
    - json_ostream_set_no_error_handling
    - http_server_request_get_response
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_read_request_v1(struct client_request_http
      *req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/client-connection-http.c:726,1
    - Dst: str_append_data
      Src: /src/dovecot/src/doveadm/client-connection-http.c:732,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/client-connection-http.c:738,1
    - Dst: i_toupper
      Src: /src/dovecot/src/doveadm/client-connection-http.c:738,1
    - Dst: str_append_data
      Src: /src/dovecot/src/doveadm/client-connection-http.c:746,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/client-connection-http.c:747,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - tmp
    - value
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 748
    functionName: doveadm_http_server_camelcase_value
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_append_c
    - i_toupper
    - str_truncate
    - str_append_data
    linkageType: ''
    returnType: char
    signature: 'char *

      doveadm_http_server_camelcase_value(string_t *tmp, const char *value)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/client-connection-http.c:758,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:760,1
    - Dst: json_ostream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/client-connection-http.c:761,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:762,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/client-connection-http.c:764,1
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/client-connection-http.c:765,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:769,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:770,1
    - Dst: doveadm_http_server_camelcase_value
      Src: /src/dovecot/src/doveadm/client-connection-http.c:772,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:774,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:780,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:781,1
    - Dst: doveadm_http_server_camelcase_value
      Src: /src/dovecot/src/doveadm/client-connection-http.c:783,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:787,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:791,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:795,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:801,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:804,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:806,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:807,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:810,1
    - Dst: doveadm_http_server_finish_json_output
      Src: /src/dovecot/src/doveadm/client-connection-http.c:811,1
    - Dst: doveadm_http_server_send_response
      Src: /src/dovecot/src/doveadm/client-connection-http.c:814,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 750
    functionDepth: 18
    functionLinenumber: 750
    functionLinenumberEnd: 815
    functionName: doveadm_http_server_send_api_v1
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_array
    - t_str_new
    - json_ostream_ndescend_object
    - json_ostream_nascend_object
    - array_idx
    - json_ostream_create
    - doveadm_http_server_finish_json_output
    - json_ostream_nascend_array
    - json_ostream_nwrite_string
    - array_count
    - doveadm_http_server_send_response
    - json_ostream_set_no_error_handling
    - doveadm_http_server_camelcase_value
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_send_api_v1(struct client_request_http *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:823,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/doveadm/client-connection-http.c:824,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/doveadm/client-connection-http.c:826,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/doveadm/client-connection-http.c:828,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/doveadm/client-connection-http.c:831,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/doveadm/client-connection-http.c:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 835
    functionName: doveadm_http_server_options_handler
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - http_server_response_add_header
    - http_server_response_create
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_options_handler(struct client_request_http
      *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:842,1
    - Dst: json_ostream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/client-connection-http.c:843,1
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:844,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/client-connection-http.c:846,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:847,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:850,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:852,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:857,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/client-connection-http.c:859,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/doveadm/client-connection-http.c:864,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/doveadm/client-connection-http.c:867,1
    - Dst: doveadm_http_server_finish_json_output
      Src: /src/dovecot/src/doveadm/client-connection-http.c:868,1
    - Dst: doveadm_http_server_send_response
      Src: /src/dovecot/src/doveadm/client-connection-http.c:871,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 837
    functionDepth: 18
    functionLinenumber: 837
    functionLinenumberEnd: 872
    functionName: doveadm_http_server_print_mounts
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_array
    - json_ostream_ndescend_object
    - json_ostream_nascend_object
    - json_ostream_create
    - doveadm_http_server_finish_json_output
    - json_ostream_nascend_array
    - json_ostream_nwrite_string
    - doveadm_http_server_send_response
    - json_ostream_set_no_error_handling
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_print_mounts(struct client_request_http *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_finish
      Src: /src/dovecot/src/doveadm/client-connection-http.c:885,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/client-connection-http.c:886,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:888,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:889,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/doveadm/client-connection-http.c:890,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/doveadm/client-connection-http.c:895,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:899,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/doveadm/client-connection-http.c:900,1
    - Dst: http_server_response_set_payload
      Src: /src/dovecot/src/doveadm/client-connection-http.c:904,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:905,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/doveadm/client-connection-http.c:908,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 909
    functionName: doveadm_http_server_send_response
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 3
    functionsReached:
    - e_info
    - o_stream_get_error
    - iostream_temp_finish
    - http_server_request_fail
    - http_server_response_create
    - o_stream_finish
    - http_server_response_add_header
    - http_server_response_set_payload
    - i_stream_unref
    - o_stream_destroy
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_send_response(struct client_request_http *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/doveadm/client-connection-http.c:917,1
    - Dst: http_server_request_get_response
      Src: /src/dovecot/src/doveadm/client-connection-http.c:919,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection-http.c:921,1
    - Dst: http_server_response_get_status
      Src: /src/dovecot/src/doveadm/client-connection-http.c:928,1
    - Dst: http_server_response_get_total_size
      Src: /src/dovecot/src/doveadm/client-connection-http.c:929,1
    - Dst: http_request_header_get
      Src: /src/dovecot/src/doveadm/client-connection-http.c:930,1
    - Dst: http_url_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:933,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/client-connection-http.c:934,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/client-connection-http.c:936,1
    - Dst: json_istream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:941,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:942,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/client-connection-http.c:944,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/client-connection-http.c:945,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:946,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:947,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:949,1
    - Dst: http_server_switch_ioloop
      Src: /src/dovecot/src/doveadm/client-connection-http.c:950,1
    - Dst: http_server_request_get_server
      Src: /src/dovecot/src/doveadm/client-connection-http.c:950,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:952,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 911
    functionDepth: 4
    functionLinenumber: 911
    functionLinenumberEnd: 954
    functionName: doveadm_http_server_request_destroy
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - io_remove
    - pool_unref
    - http_url_create
    - net_ip2addr
    - http_server_switch_ioloop
    - http_server_request_get
    - json_ostream_destroy
    - http_server_response_get_total_size
    - i_stream_destroy
    - http_server_request_get_server
    - http_server_response_get_status
    - http_server_request_unref
    - json_istream_destroy
    - i_assert
    - o_stream_destroy
    - e_info
    - o_stream_set_no_error_handling
    - http_server_request_get_response
    - http_request_header_get
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_request_destroy(struct client_request_http
      *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:966,1
    - Dst: str_new
      Src: /src/dovecot/src/doveadm/client-connection-http.c:972,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/client-connection-http.c:973,1
    - Dst: base64_encode
      Src: /src/dovecot/src/doveadm/client-connection-http.c:975,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/client-connection-http.c:975,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:976,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/client-connection-http.c:976,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:979,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - req
    - creds
    argTypes:
    - struct client_request_http*
    - struct http_auth_credentials*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 983
    functionName: doveadm_http_server_auth_basic
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - strlen
    - e_error
    - base64_encode
    - str_new
    - p_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_http_server_auth_basic(struct client_request_http *req,\n\t\t\t
      \      const struct http_auth_credentials *creds)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:994,1
    - Dst: str_new
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1000,1
    - Dst: base64_encode
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1001,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1002,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1003,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1003,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1006,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - req
    - creds
    argTypes:
    - struct client_request_http*
    - struct http_auth_credentials*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 1010
    functionName: doveadm_http_server_auth_api_key
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - strlen
    - e_error
    - base64_encode
    - str_new
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_http_server_auth_api_key(struct client_request_http *req,\n\t\t\t\t
      const struct http_auth_credentials *creds)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1018,1
    - Dst: doveadm_http_server_auth_basic
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1019,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1020,1
    - Dst: doveadm_http_server_auth_api_key
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1021,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1023,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1025,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - req
    - creds
    argTypes:
    - struct client_request_http*
    - struct http_auth_credentials*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1013
    functionDepth: 2
    functionLinenumber: 1013
    functionLinenumberEnd: 1027
    functionName: doveadm_http_server_auth_verify
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - doveadm_http_server_auth_basic
    - strcasecmp
    - e_error
    - str_sanitize
    - doveadm_http_server_auth_api_key
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_http_server_auth_verify(struct client_request_http *req,\n\t\t\t\tconst
      struct http_auth_credentials *creds)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1040,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1042,1
    - Dst: http_server_request_get_auth
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1047,1
    - Dst: doveadm_http_server_auth_verify
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1048,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1052,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1055,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1060,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1064,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct client_request_http*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1029
    functionDepth: 3
    functionLinenumber: 1029
    functionLinenumberEnd: 1067
    functionName: doveadm_http_server_authorize_request
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - http_server_request_get_auth
    - http_server_request_fail
    - http_server_response_create
    - e_error
    - http_server_response_add_header
    - doveadm_http_server_auth_verify
    - http_server_response_submit
    linkageType: ''
    returnType: bool
    signature: bool doveadm_http_server_authorize_request(struct client_request_http
      *req)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1076,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1082,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1084,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1085,1
    - Dst: http_server_request_ref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1090,1
    - Dst: http_server_request_connection_close
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1092,1
    - Dst: http_server_request_set_destroy_callback
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1093,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1098,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1100,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1103,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1112,1
    - Dst: doveadm_http_server_authorize_request
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1116,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1119,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1122,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1123,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1124,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1125,1
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1126,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1127,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1128,1
    - Dst: struct doveadm_http_server_mount*::handler
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1129,1
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1131,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1132,1
    - Dst: struct doveadm_http_server_mount*::handler
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1133,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - context
    - http_sreq
    argTypes:
    - void*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1069
    functionDepth: 4
    functionLinenumber: 1069
    functionLinenumberEnd: 1135
    functionName: doveadm_http_server_handle_request
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - doveadm_http_server_authorize_request
    - p_new
    - p_array_init
    - io_add_istream
    - i_stream_set_name
    - http_server_request_connection_close
    - http_server_request_fail
    - i_stream_ref
    - struct doveadm_http_server_mount*::handler
    - http_server_request_set_destroy_callback
    - net_ip2addr
    - http_server_request_get
    - iostream_temp_create_named
    - i_assert
    - N_ELEMENTS
    - http_server_request_ref
    linkageType: ''
    returnType: void
    signature: "void doveadm_http_server_handle_request(void *context,\n\t\t\t\t   struct
      http_server_request *http_sreq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1149
    functionDepth: 1
    functionLinenumber: 1149
    functionLinenumberEnd: 1160
    functionName: client_connection_http_free
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - http_server_connection_close
    linkageType: ''
    returnType: void
    signature: void client_connection_http_free(struct client_connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1169,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1170,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1171,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1172,1
    - Dst: client_connection_init
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1174,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1176,1
    - Dst: http_server_connection_create
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - doveadm_http_server
    - fd
    - ssl
    argTypes:
    - struct http_server*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1162
    functionDepth: 1
    functionLinenumber: 1162
    functionLinenumberEnd: 1184
    functionName: client_connection_http_create
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - event_set_append_log_prefix
    - pool_unref
    - client_connection_init
    - http_server_connection_create
    linkageType: ''
    returnType: struct client_connection
    signature: "struct client_connection *\nclient_connection_http_create(struct http_server
      *doveadm_http_server, int fd,\n\t\t\t      bool ssl)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_connection_destroy
      Src: /src/dovecot/src/doveadm/client-connection-http.c:1203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - context
    - ATTR_UNUSED
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1186
    functionDepth: 0
    functionLinenumber: 1186
    functionLinenumberEnd: 1204
    functionName: doveadm_http_server_connection_destroy
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-http.c
    functionUses: 0
    functionsReached:
    - client_connection_destroy
    linkageType: ''
    returnType: void
    signature: "void doveadm_http_server_connection_destroy(void *context,\n\t\t\t\t
      \      const char *reason ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:30,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:31,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:33,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:37,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:38,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:39,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 24
    functionDepth: 7
    functionLinenumber: 24
    functionLinenumberEnd: 42
    functionName: doveadm_fs_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - i_zero
    - fs_init_auto
    - settings_event_add_filter_name
    - i_fatal
    - help_ver2
    - doveadm_cmd_param_str
    - event_set_ptr
    linkageType: ''
    returnType: struct fs
    signature: struct fs *doveadm_fs_init(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:48,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:49,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:51,1
    - Dst: fs_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:52,1
    - Dst: doveadm_fs_get
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 54
    functionName: cmd_fs_get
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header
    - doveadm_print_init
    - doveadm_fs_get
    - doveadm_cmd_param_str
    - fs_cmd_help
    linkageType: ''
    returnType: void
    signature: void cmd_fs_get(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_fs_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:65,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:67,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:68,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:69,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:70,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:71,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:74,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:76,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:76,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:77,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:80,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:80,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:81,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:84,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:85,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - cctx
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 56
    functionDepth: 8
    functionLinenumber: 56
    functionLinenumberEnd: 87
    functionName: doveadm_fs_get
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 1
    functionsReached:
    - doveadm_fs_init
    - fs_file_init
    - fs_file_deinit
    - fs_deinit
    - i_stream_skip
    - e_error
    - i_stream_get_error
    - doveadm_print_stream
    - fs_file_path
    - i_stream_unref
    - fs_read_stream
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void doveadm_fs_get(struct doveadm_cmd_context *cctx, const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:94,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:95,1
    - Dst: fs_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:96,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:97,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:98,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:99,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:100,1
    - Dst: doveadm_fs_put
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 103
    functionName: cmd_fs_put
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_put
    - hex_to_binary
    - i_fatal
    - t_buffer_create
    - doveadm_cmd_param_str
    - fs_cmd_help
    linkageType: ''
    returnType: void
    signature: void cmd_fs_put(struct doveadm_cmd_context *cctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_fs_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:116,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:118,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:119,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:124,1
    - Dst: fs_write_set_hash
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:125,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:126,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:129,1
    - Dst: fs_write_set_hash
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:130,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:131,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:134,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:136,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:139,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:140,1
    - Dst: fs_set_metadata
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:143,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:147,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:148,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:149,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:150,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:151,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:152,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:153,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:156,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:157,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 4
    argNames:
    - cctx
    - src_path
    - dest_path
    - hash
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 105
    functionDepth: 8
    functionLinenumber: 105
    functionLinenumberEnd: 158
    functionName: doveadm_fs_put
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 1
    functionsReached:
    - doveadm_fs_init
    - fs_file_init
    - fs_write_stream
    - fs_write_stream_finish
    - fs_file_deinit
    - fs_deinit
    - fs_file_last_error
    - fs_get_properties
    - fs_set_metadata
    - i_fatal
    - doveadm_cmd_param_array
    - i_stream_create_file
    - o_stream_nsend_istream
    - fs_write_set_hash
    - e_error
    - t_split_key_value_eq
    - hash_method_lookup
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void doveadm_fs_put(struct doveadm_cmd_context *cctx,\n\t\t    const
      char *src_path, const char *dest_path,\n\t\t    const buffer_t *hash)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:164,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:165,1
    - Dst: fs_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:166,1
    - Dst: doveadm_fs_copy
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 168
    functionName: cmd_fs_copy
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_copy
    - doveadm_cmd_param_str
    - fs_cmd_help
    linkageType: ''
    returnType: void
    signature: void cmd_fs_copy(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_fs_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:176,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:177,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:178,1
    - Dst: fs_copy
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:179,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:181,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:182,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:185,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:186,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:189,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:190,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - cctx
    - src_path
    - dest_path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 170
    functionDepth: 8
    functionLinenumber: 170
    functionLinenumberEnd: 192
    functionName: doveadm_fs_copy
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 1
    functionsReached:
    - doveadm_fs_init
    - fs_file_init
    - fs_file_deinit
    - fs_deinit
    - e_error
    - fs_copy
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: "void doveadm_fs_copy(struct doveadm_cmd_context *cctx,\n\t\t     const
      char *src_path, const char *dest_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:198,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:199,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:200,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:201,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:203,1
    - Dst: fs_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:204,1
    - Dst: doveadm_fs_stat
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 206
    functionName: cmd_fs_stat
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header
    - doveadm_print_init
    - doveadm_cmd_param_str
    - fs_cmd_help
    - doveadm_print_formatted_set_format
    - doveadm_print_header_simple
    - doveadm_fs_stat
    linkageType: ''
    returnType: void
    signature: void cmd_fs_stat(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_fs_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:214,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:215,1
    - Dst: fs_stat
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:217,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:218,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:218,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:219,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:219,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:221,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:222,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:223,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:226,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:227,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:227,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:230,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - cctx
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 208
    functionDepth: 8
    functionLinenumber: 208
    functionLinenumberEnd: 232
    functionName: doveadm_fs_stat
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 1
    functionsReached:
    - doveadm_fs_init
    - fs_file_init
    - dec2str
    - doveadm_print
    - fs_file_deinit
    - fs_deinit
    - e_error
    - fs_stat
    - fs_file_path
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void doveadm_fs_stat(struct doveadm_cmd_context *cctx, const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:238,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:239,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:240,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:241,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:243,1
    - Dst: fs_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:244,1
    - Dst: doveadm_fs_metadata
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 246
    functionName: cmd_fs_metadata
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - fs_cmd_help
    - doveadm_cmd_param_str
    - doveadm_fs_metadata
    - doveadm_print_formatted_set_format
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_fs_metadata(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_fs_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:255,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:256,1
    - Dst: fs_get_metadata
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:257,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:259,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:260,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:263,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:264,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:265,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:268,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:269,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:269,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:272,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - cctx
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 248
    functionDepth: 8
    functionLinenumber: 248
    functionLinenumberEnd: 274
    functionName: doveadm_fs_metadata
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 1
    functionsReached:
    - doveadm_fs_init
    - fs_file_init
    - fs_file_deinit
    - doveadm_print
    - fs_deinit
    - e_error
    - fs_get_metadata
    - fs_file_path
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void doveadm_fs_metadata(struct doveadm_cmd_context *cctx, const char
      *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:259,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 100
    functionsReached:
    - doveadm_print
    linkageType: ''
    returnType: void
    signature: void array_foreach(metadata, m)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fs_delete
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:293,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:294,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:299,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:300,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:301,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:305,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:307,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:308,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_delete_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 314
    functionName: cmd_fs_delete_ctx_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_delete
    - e_error
    - fs_file_path
    - fs_file_last_error
    linkageType: ''
    returnType: int
    signature: int cmd_fs_delete_ctx_run(struct fs_delete_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fs_file_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:327,1
    - Dst: cmd_fs_delete_ctx_run
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:333,1
    - Dst: fs_wait_async
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:337,1
    - Dst: doveadm_fs_delete_async_fname
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:338,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - fname
    argTypes:
    - struct fs_delete_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 316
    functionDepth: 4
    functionLinenumber: 316
    functionLinenumberEnd: 341
    functionName: doveadm_fs_delete_async_fname
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 1
    functionsReached:
    - fs_file_init
    - doveadm_fs_delete_async_fname
    - t_strdup_printf
    - fs_wait_async
    - cmd_fs_delete_ctx_run
    linkageType: ''
    returnType: int
    signature: "int doveadm_fs_delete_async_fname(struct fs_delete_ctx *ctx,\n\t\t\t\t\t
      const char *fname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_fs_delete_ctx_run
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:347,1
    - Dst: fs_wait_async
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:348,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:351,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fs_delete_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 353
    functionName: doveadm_fs_delete_async_finish
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_wait_async
    - cmd_fs_delete_ctx_run
    linkageType: ''
    returnType: void
    signature: void doveadm_fs_delete_async_finish(struct fs_delete_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:361,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:366,1
    - Dst: I_MAX
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:370,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:371,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:375,1
    - Dst: fs_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:376,1
    - Dst: fs_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:377,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:381,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:382,1
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:384,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:385,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:389,1
    - Dst: cmd_fs_delete_dir_recursive
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:390,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - cctx
    - fs
    - async_count
    - path_prefix
    argTypes:
    - struct doveadm_cmd_context*
    - struct fs*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 392
    functionName: cmd_fs_delete_dir_recursive
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 1
    functionsReached:
    - i_zero
    - t_new
    - fs_iter_next
    - array_push_back
    - fs_iter_deinit
    - array_foreach_elem
    - fs_iter_init
    - I_MAX
    - t_strdup_printf
    - e_error
    - cmd_fs_delete_dir_recursive
    - t_array_init
    - ARRAY_TYPE
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void cmd_fs_delete_dir_recursive(struct doveadm_cmd_context *cctx,\n\t\t\t
      \   struct fs *fs, unsigned int async_count,\n\t\t\t    const char *path_prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:429,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:431,1
    - Dst: cmd_fs_delete_dir_recursive
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:433,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:434,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:436,1
    - Dst: fs_delete
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:437,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:438,1
    - Dst: fs_file_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:439,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:439,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:442,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - cctx
    - fs
    - path
    - async_count
    argTypes:
    - struct doveadm_cmd_context*
    - struct fs*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 444
    functionName: cmd_fs_delete_recursive_path
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - fs_get_properties
    - strlen
    - fs_delete
    - e_error
    - cmd_fs_delete_dir_recursive
    - fs_file_path
    - t_strconcat
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: "void cmd_fs_delete_recursive_path(struct doveadm_cmd_context *cctx,\n\t\t\t\t\t
      struct fs *fs, const char *path,\n\t\t\t\t\t unsigned int async_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_fs_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:453,1
    - Dst: cmd_fs_delete_recursive_path
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:455,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cctx
    - paths
    - async_count
    argTypes:
    - struct doveadm_cmd_context*
    - char**
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 446
    functionDepth: 8
    functionLinenumber: 446
    functionLinenumberEnd: 457
    functionName: doveadm_fs_delete_recursive
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_init
    - fs_deinit
    - cmd_fs_delete_recursive_path
    linkageType: ''
    returnType: void
    signature: "void doveadm_fs_delete_recursive(struct doveadm_cmd_context *cctx,\n\t\t\t\t
      const char *const *paths,\n\t\t\t\t unsigned int async_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:467,1
    - Dst: doveadm_fs_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:469,1
    - Dst: I_MAX
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:471,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:472,1
    - Dst: doveadm_fs_delete_async_fname
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - cctx
    - paths
    - async_count
    argTypes:
    - struct doveadm_cmd_context*
    - char**
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 459
    functionDepth: 8
    functionLinenumber: 459
    functionLinenumberEnd: 480
    functionName: doveadm_fs_delete_paths
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - i_zero
    - doveadm_fs_init
    - t_new
    - doveadm_fs_delete_async_fname
    - I_MAX
    linkageType: ''
    returnType: void
    signature: "void doveadm_fs_delete_paths(struct doveadm_cmd_context *cctx,\n\t\t\t
      \    const char *const *paths,\n\t\t\t     unsigned int async_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:491,1
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:492,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:494,1
    - Dst: fs_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:495,1
    - Dst: doveadm_fs_delete_recursive
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:498,1
    - Dst: doveadm_fs_delete_paths
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 485
    functionDepth: 9
    functionLinenumber: 485
    functionLinenumberEnd: 501
    functionName: cmd_fs_delete
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_param_bool
    - doveadm_cmd_param_array
    - fs_cmd_help
    - doveadm_fs_delete_paths
    - doveadm_cmd_param_int64
    - doveadm_fs_delete_recursive
    linkageType: ''
    returnType: void
    signature: void cmd_fs_delete(struct doveadm_cmd_context *cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:509,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:511,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:514,1
    - Dst: fs_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:515,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:517,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:518,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:519,1
    - Dst: doveadm_fs_iter
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:520,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - cctx
    - flags
    argTypes:
    - struct doveadm_cmd_context*
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 521
    functionName: cmd_fs_iter_full
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_cmd_param_str
    - fs_cmd_help
    - doveadm_fs_iter
    - doveadm_print_formatted_set_format
    - doveadm_print_header_simple
    - doveadm_cmd_param_bool
    linkageType: ''
    returnType: void
    signature: "void cmd_fs_iter_full(struct doveadm_cmd_context *cctx,\n\t\t\t     enum
      fs_iter_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_fs_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:530,1
    - Dst: fs_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:531,1
    - Dst: fs_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:532,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:533,1
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:535,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:536,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - cctx
    - flags
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - enum fs_iter_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 523
    functionDepth: 8
    functionLinenumber: 523
    functionLinenumberEnd: 541
    functionName: doveadm_fs_iter
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 1
    functionsReached:
    - doveadm_fs_init
    - doveadm_print
    - fs_iter_next
    - fs_deinit
    - fs_iter_deinit
    - fs_iter_init
    - e_error
    linkageType: ''
    returnType: void
    signature: "void doveadm_fs_iter(struct doveadm_cmd_context *cctx,\n\t\t     enum
      fs_iter_flags flags, const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_fs_iter_full
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 546
    functionName: cmd_fs_iter
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - cmd_fs_iter_full
    linkageType: ''
    returnType: void
    signature: void cmd_fs_iter(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_fs_iter_full
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 551
    functionName: cmd_fs_iter_dirs
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - cmd_fs_iter_full
    linkageType: ''
    returnType: void
    signature: void cmd_fs_iter_dirs(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:640,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:642,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:644,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 645
    functionName: fs_cmd_help
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 7
    functionsReached:
    - N_ELEMENTS
    - help_ver2
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void fs_cmd_help(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:651,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm-fs.c:652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 653
    functionName: doveadm_register_fs_commands
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_register_fs_commands(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:72,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 76
    functionName: doveadm_mailbox_arg_check
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - uni_utf8_str_is_valid
    - i_fatal_status
    linkageType: ''
    returnType: void
    signature: void doveadm_mailbox_arg_check(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_arg_check
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: doveadm_mailbox_args_check
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - doveadm_mailbox_arg_check
    linkageType: ''
    returnType: void
    signature: void doveadm_mailbox_args_check(const char *const args[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: doveadm_mailbox_cmd_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: doveadm_mailbox_cmd_alloc(type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:99,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:105,1
    - Dst: doveadm_mailbox_list_iter_full_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:110,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:112,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:114,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:116,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:117,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:118,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:119,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:119,1
    - Dst: doveadm_mailbox_list_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 125
    functionName: cmd_mailbox_list_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - container_of
    - doveadm_print
    - i_unreached
    - doveadm_mailbox_list_iter_full_init
    - doveadm_mailbox_list_iter_deinit
    - imap_utf8_to_utf7
    - doveadm_mailbox_list_iter_next
    - str_truncate
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_list_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \    struct mail_user *user)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_args_check
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:135,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:136,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:138,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:139,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:143,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:144,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:150,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 154
    functionName: doveadm_mail_mailbox_search_args_build
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 1
    functionsReached:
    - strchr
    - p_strdup
    - mail_search_build_add
    - doveadm_mailbox_args_check
    - mail_search_build_init
    linkageType: ''
    returnType: struct mail_search_args
    signature: 'struct mail_search_args *

      doveadm_mail_mailbox_search_args_build(const char *const args[])'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:160,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:162,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:163,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:164,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:167,1
    - Dst: doveadm_mail_mailbox_search_args_build
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:168,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 156
    functionDepth: 4
    functionLinenumber: 156
    functionLinenumberEnd: 171
    functionName: cmd_mailbox_list_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print_header
    - doveadm_cmd_param_array
    - doveadm_cmd_param_flag
    - doveadm_mail_mailbox_search_args_build
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_list_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:176,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 180
    functionName: cmd_mailbox_list_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - container_of
    - mail_search_args_unref
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_list_deinit(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:186,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 192
    functionName: cmd_mailbox_list_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mailbox_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_list_alloc(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:199,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:206,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:210,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:211,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:212,1
    - Dst: t_strndup
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:213,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:217,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:218,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:219,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:221,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:222,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:226,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:227,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:229,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:230,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:234,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 194
    functionDepth: 6
    functionLinenumber: 194
    functionLinenumberEnd: 237
    functionName: cmd_mailbox_create_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - container_of
    - mail_namespace_find
    - mailbox_get_last_internal_error
    - mailbox_free
    - array_foreach_elem
    - strlen
    - t_strndup
    - e_error
    - mailbox_alloc
    - mailbox_set_subscribed
    - mailbox_create
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_create_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \      struct mail_user *user)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:243,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:245,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:248,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:249,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:250,1
    - Dst: doveadm_cmd_param_array_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:252,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:253,1
    - Dst: doveadm_mailbox_args_check_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 256
    functionName: cmd_mailbox_create_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_param_array_append
    - container_of
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    - guid_128_from_string
    - doveadm_mailbox_args_check_array
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_create_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:262,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 267
    functionName: cmd_mailbox_create_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - doveadm_mailbox_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_create_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: i_strcmp_reverse_p
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int i_strcmp_reverse_p(const char *const *s1, const char *const *s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:283,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:285,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:285,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:286,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:288,1
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:289,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:290,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - user
    - mailboxes
    - name
    argTypes:
    - struct mail_user*
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 274
    functionDepth: 7
    functionLinenumber: 274
    functionLinenumberEnd: 293
    functionName: get_child_mailboxes
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mail_namespace_find
    - mailbox_list_iter_deinit
    - array_push_back
    - mailbox_list_iter_next
    - t_strdup_printf
    - mailbox_list_iter_init
    - t_strdup
    linkageType: ''
    returnType: int
    signature: "int get_child_mailboxes(struct mail_user *user, ARRAY_TYPE(const_string)
      *mailboxes,\n\t\t    const char *name)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:300,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:306,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:314,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:315,1
    - Dst: get_child_mailboxes
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:316,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:318,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:322,1
    - Dst: array_sort
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:324,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:329,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:330,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:331,1
    - Dst: mailbox_delete_empty
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:332,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:333,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:335,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:337,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:338,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:342,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:343,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:345,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:346,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:350,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 295
    functionDepth: 13
    functionLinenumber: 295
    functionLinenumberEnd: 353
    functionName: cmd_mailbox_delete_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_delete_empty
    - mailbox_alloc
    - doveadm_mail_failed_error
    - doveadm_mail_failed_mailbox
    - mailbox_free
    - array_foreach_elem
    - mail_storage_get_last_internal_error
    - mailbox_get_storage
    - get_child_mailboxes
    - e_error
    - mailbox_delete
    - container_of
    - mail_namespace_find
    - array_push_back
    - t_array_init
    - mailbox_set_subscribed
    - ARRAY_TYPE
    - array_sort
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_delete_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \      struct mail_user *user)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:329,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:330,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:331,1
    - Dst: mailbox_delete_empty
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:332,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:333,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:335,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:337,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:338,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:342,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:343,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:345,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:346,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:350,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 328
    functionDepth: 13
    functionLinenumber: 328
    functionLinenumberEnd: 351
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 171
    functionsReached:
    - mailbox_get_storage
    - mailbox_free
    - mail_namespace_find
    - mailbox_get_last_internal_error
    - mail_storage_get_last_internal_error
    - mailbox_delete_empty
    - e_error
    - mailbox_delete
    - mailbox_alloc
    - mailbox_set_subscribed
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(mailboxes, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:359,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:361,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:362,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:363,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:364,1
    - Dst: doveadm_cmd_param_array_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:366,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:367,1
    - Dst: doveadm_mailbox_args_check_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:369,1
    - Dst: array_sort
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 371
    functionName: cmd_mailbox_delete_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_param_array_append
    - container_of
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    - doveadm_mailbox_args_check_array
    - array_sort
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_delete_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:377,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 382
    functionName: cmd_mailbox_delete_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - doveadm_mailbox_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_delete_alloc(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:389,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:397,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:398,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:399,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:400,1
    - Dst: mailbox_rename
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:401,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:402,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:404,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:405,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:409,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:410,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:412,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:413,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:416,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:417,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:419,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:420,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:425,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:426,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 384
    functionDepth: 7
    functionLinenumber: 384
    functionLinenumberEnd: 428
    functionName: cmd_mailbox_rename_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - container_of
    - mail_namespace_find
    - mailbox_get_last_internal_error
    - mailbox_free
    - mailbox_rename
    - e_error
    - mailbox_alloc
    - mailbox_set_subscribed
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_rename_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \      struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:434,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:436,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:437,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:438,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:439,1
    - Dst: doveadm_mailbox_arg_check
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:440,1
    - Dst: doveadm_mailbox_arg_check
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 442
    functionName: cmd_mailbox_rename_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    - doveadm_mailbox_arg_check
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_rename_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 452
    functionName: cmd_mailbox_rename_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - doveadm_mailbox_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_rename_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:459,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:466,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:467,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:468,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:469,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:470,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:474,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:475,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 454
    functionDepth: 5
    functionLinenumber: 454
    functionLinenumberEnd: 481
    functionName: cmd_mailbox_subscribe_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - container_of
    - mail_namespace_find
    - mailbox_get_last_internal_error
    - mailbox_free
    - array_foreach_elem
    - e_error
    - mailbox_alloc
    - mailbox_set_subscribed
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_subscribe_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t
      \ struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:487,1
    - Dst: doveadm_cmd_param_array_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:489,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:490,1
    - Dst: doveadm_mailbox_args_check_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 495
    functionName: cmd_mailbox_subscribe_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_cmd_param_array_append
    - container_of
    - doveadm_mailbox_args_check_array
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_subscribe_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:502,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - subscriptions
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 509
    functionName: cmd_mailbox_subscriptions_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_mailbox_subscriptions_alloc(bool subscriptions)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_mailbox_subscriptions_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 511
    functionDepth: 2
    functionLinenumber: 511
    functionLinenumberEnd: 514
    functionName: cmd_mailbox_subscribe_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - cmd_mailbox_subscriptions_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_subscribe_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_mailbox_subscriptions_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 519
    functionName: cmd_mailbox_unsubscribe_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - cmd_mailbox_subscriptions_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_unsubscribe_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:526,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:529,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:530,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:531,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:533,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:534,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:535,1
    - Dst: doveadm_cmd_param_uint64
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:536,1
    - Dst: doveadm_cmd_param_uint64
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:537,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:541,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:543,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:544,1
    - Dst: doveadm_mailbox_arg_check
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:545,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 546
    functionName: cmd_mailbox_update_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_uint32
    - i_fatal_status
    - doveadm_cmd_param_uint64
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - doveadm_mailbox_arg_check
    - guid_128_from_string
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_update_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:553,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:560,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:561,1
    - Dst: mailbox_update
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:563,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:564,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:566,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:568,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 548
    functionDepth: 8
    functionLinenumber: 548
    functionLinenumberEnd: 574
    functionName: cmd_mailbox_update_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - mailbox_update
    - container_of
    - mail_namespace_find
    - mailbox_get_last_internal_error
    - mailbox_free
    - e_error
    - mailbox_alloc
    - doveadm_mail_failed_error
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_update_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t
      \  struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 584
    functionName: cmd_mailbox_update_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_update_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:592,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - name
    - type_r
    argTypes:
    - char*
    - enum mailbox_list_path_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 599
    functionName: mailbox_list_path_type_name_parse
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_list_path_type_name_parse(const char *name,\n\t\t\t\t
      \ enum mailbox_list_path_type *type_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:606,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:609,1
    - Dst: mailbox_list_path_type_name_parse
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:610,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:611,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:614,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:616,1
    - Dst: doveadm_mailbox_arg_check
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:619,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:620,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 601
    functionDepth: 2
    functionLinenumber: 601
    functionLinenumberEnd: 621
    functionName: cmd_mailbox_path_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print_header
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - doveadm_mailbox_arg_check
    - mailbox_list_path_type_name_parse
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_path_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:628,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:635,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:636,1
    - Dst: mailbox_list_get_path
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:637,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:639,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:641,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:644,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:646,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 623
    functionDepth: 4
    functionLinenumber: 623
    functionLinenumberEnd: 649
    functionName: cmd_mailbox_path_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - mailbox_list_get_last_internal_error
    - mailbox_list_get_path
    - container_of
    - mail_namespace_find
    - doveadm_print
    - mailbox_list_get_storage_name
    - e_error
    - doveadm_mail_failed_error
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_path_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \    struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:655,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 661
    functionName: cmd_mailbox_path_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_path_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init_log
      Src: /src/dovecot/src/doveadm/doveadm-log.c:36,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-log.c:38,1
    - Dst: i_log_type
      Src: /src/dovecot/src/doveadm/doveadm-log.c:45,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/doveadm/doveadm-log.c:46,1
    - Dst: t_strcut
      Src: /src/dovecot/src/doveadm/doveadm-log.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 49
    functionName: cmd_log_test
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_log_type
    - t_str_lcase
    - t_strcut
    - master_service_init_log
    linkageType: ''
    returnType: void
    signature: void cmd_log_test(struct doveadm_cmd_context *cctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_master_send_signal
      Src: /src/dovecot/src/doveadm/doveadm-log.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: cmd_log_reopen
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - doveadm_master_send_signal
    linkageType: ''
    returnType: void
    signature: void cmd_log_reopen(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/doveadm-log.c:75,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-log.c:77,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-log.c:78,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/doveadm-log.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - type
    argTypes:
    - struct log_find_context*
    - char*
    - enum log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 83
    functionName: cmd_log_find_add
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - hash_table_insert
    - p_strdup
    - hash_table_lookup
    - p_new
    linkageType: ''
    returnType: void
    signature: "void cmd_log_find_add(struct log_find_context *ctx,\n\t\t\t     const
      char *path, enum log_type type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/doveadm/doveadm-log.c:97,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-log.c:99,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-log.c:103,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-log.c:104,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-log.c:105,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-log.c:106,1
    - Dst: readdir
      Src: /src/dovecot/src/doveadm/doveadm-log.c:108,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-log.c:112,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-log.c:113,1
    - Dst: stat
      Src: /src/dovecot/src/doveadm/doveadm-log.c:114,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-log.c:114,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/doveadm/doveadm-log.c:117,1
    - Dst: cmd_log_find_syslog_files
      Src: /src/dovecot/src/doveadm/doveadm-log.c:119,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-log.c:119,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/doveadm-log.c:120,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-log.c:121,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-log.c:122,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-log.c:125,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-log.c:125,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/doveadm-log.c:126,1
    - Dst: closedir
      Src: /src/dovecot/src/doveadm/doveadm-log.c:130,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - path
    - event
    argTypes:
    - struct log_find_context*
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 131
    functionName: cmd_log_find_syslog_files
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 1
    functionsReached:
    - readdir
    - t_str_new
    - str_c
    - opendir
    - str_append_c
    - p_new
    - str_len
    - cmd_log_find_syslog_files
    - p_strdup
    - e_error
    - closedir
    - stat
    - str_truncate
    - S_ISDIR
    - str_append
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void cmd_log_find_syslog_files(struct log_find_context *ctx, const
      char *path,\n\t\t\t  struct event *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/doveadm/doveadm-log.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - str
    - type_r
    argTypes:
    - char*
    - enum log_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: log_type_find
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - str_begins_icase
    linkageType: ''
    returnType: bool
    signature: bool log_type_find(const char *str, enum log_type *type_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-log.c:155,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/doveadm/doveadm-log.c:159,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/doveadm/doveadm-log.c:160,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-log.c:161,1
    - Dst: strstr
      Src: /src/dovecot/src/doveadm/doveadm-log.c:162,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-log.c:165,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-log.c:169,1
    - Dst: log_type_find
      Src: /src/dovecot/src/doveadm/doveadm-log.c:169,1
    - Dst: t_strcut
      Src: /src/dovecot/src/doveadm/doveadm-log.c:169,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - file
    argTypes:
    - struct log_find_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 172
    functionName: cmd_log_find_syslog_file_messages
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - log_type_find
    - strlen
    - open
    - if
    - i_stream_read_next_line
    - i_stream_seek
    - i_stream_create_fd_autoclose
    - t_strcut
    - strstr
    linkageType: ''
    returnType: void
    signature: void cmd_log_find_syslog_file_messages(struct log_find_file *file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/doveadm-log.c:183,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/doveadm-log.c:184,1
    - Dst: stat
      Src: /src/dovecot/src/doveadm/doveadm-log.c:185,1
    - Dst: cmd_log_find_syslog_file_messages
      Src: /src/dovecot/src/doveadm/doveadm-log.c:189,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/doveadm-log.c:191,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct log_find_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 192
    functionName: cmd_log_find_syslog_messages
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - stat
    - cmd_log_find_syslog_file_messages
    linkageType: ''
    returnType: void
    signature: void cmd_log_find_syslog_messages(struct log_find_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-log.c:201,1
    - Dst: stat
      Src: /src/dovecot/src/doveadm/doveadm-log.c:203,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/doveadm/doveadm-log.c:203,1
    - Dst: stat
      Src: /src/dovecot/src/doveadm/doveadm-log.c:205,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/doveadm/doveadm-log.c:205,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-log.c:210,1
    - Dst: cmd_log_find_syslog_files
      Src: /src/dovecot/src/doveadm/doveadm-log.c:211,1
    - Dst: cmd_log_test
      Src: /src/dovecot/src/doveadm/doveadm-log.c:212,1
    - Dst: sleep
      Src: /src/dovecot/src/doveadm/doveadm-log.c:215,1
    - Dst: cmd_log_find_syslog_messages
      Src: /src/dovecot/src/doveadm/doveadm-log.c:216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - cctx
    argTypes:
    - struct log_find_context*
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 217
    functionName: cmd_log_find_syslog
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - printf
    - cmd_log_find_syslog_files
    - doveadm_cmd_param_str
    - cmd_log_find_syslog_messages
    - sleep
    - stat
    - S_ISDIR
    - cmd_log_test
    linkageType: ''
    returnType: void
    signature: "void cmd_log_find_syslog(struct log_find_context *ctx,\n\t\t    struct
      doveadm_cmd_context *cctx)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-log.c:226,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-log.c:227,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/doveadm-log.c:228,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/doveadm/doveadm-log.c:231,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-log.c:233,1
    - Dst: cmd_log_find_add
      Src: /src/dovecot/src/doveadm/doveadm-log.c:236,1
    - Dst: cmd_log_find_add
      Src: /src/dovecot/src/doveadm/doveadm-log.c:237,1
    - Dst: cmd_log_find_add
      Src: /src/dovecot/src/doveadm/doveadm-log.c:238,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-log.c:241,1
    - Dst: cmd_log_find_add
      Src: /src/dovecot/src/doveadm/doveadm-log.c:245,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-log.c:248,1
    - Dst: cmd_log_find_add
      Src: /src/dovecot/src/doveadm/doveadm-log.c:252,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-log.c:256,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-log.c:257,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-log.c:258,1
    - Dst: cmd_log_find_syslog
      Src: /src/dovecot/src/doveadm/doveadm-log.c:260,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/doveadm-log.c:270,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/doveadm-log.c:271,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-log.c:273,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/doveadm-log.c:278,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-log.c:281,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/doveadm-log.c:283,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-log.c:284,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 219
    functionDepth: 4
    functionLinenumber: 219
    functionLinenumberEnd: 285
    functionName: cmd_log_find
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - strcmp
    - hash_table_iterate_deinit
    - hash_table_create
    - cmd_log_find_syslog
    - hash_table_iterate
    - printf
    - hash_table_iterate_init
    - pool_unref
    - cmd_log_find_add
    - master_service_get_service_settings
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void cmd_log_find(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-log.c:292,1
    - Dst: t_strndup
      Src: /src/dovecot/src/doveadm/doveadm-log.c:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - orig
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 300
    functionName: t_cmd_log_error_trim
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strndup
    linkageType: ''
    returnType: char
    signature: char *t_cmd_log_error_trim(const char *orig)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-log.c:311,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-log.c:317,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-log.c:320,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-log.c:321,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/doveadm/doveadm-log.c:328,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-log.c:333,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-log.c:335,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-log.c:336,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/doveadm/doveadm-log.c:338,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-log.c:345,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-log.c:351,1
    - Dst: str_to_timeval
      Src: /src/dovecot/src/doveadm/doveadm-log.c:355,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-log.c:356,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 3
    argNames:
    - event
    - input
    - error_r
    argTypes:
    - struct event*
    - struct istream*
    - struct log_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 360
    functionName: cmd_log_error_next
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - t_strsplit_tabescaped
    - str_array_length
    - i_stream_read_next_line
    - e_error
    - i_stream_get_error
    - str_to_timeval
    - i_stream_close
    linkageType: ''
    returnType: bool
    signature: "bool cmd_log_error_next(struct event *event, struct istream *input,\n\t\t
      \  struct log_error *error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/doveadm/doveadm-log.c:365,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-log.c:366,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-log.c:366,1
    - Dst: doveadm_print_empty
      Src: /src/dovecot/src/doveadm/doveadm-log.c:369,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-log.c:371,1
    - Dst: t_cmd_log_error_trim
      Src: /src/dovecot/src/doveadm/doveadm-log.c:372,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-log.c:373,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-log.c:375,1
    - Dst: t_cmd_log_error_trim
      Src: /src/dovecot/src/doveadm/doveadm-log.c:375,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-log.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - error
    argTypes:
    - struct log_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 377
    functionName: cmd_log_error_write
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    - doveadm_print_empty
    - t_cmd_log_error_trim
    - t_strdup_printf
    - t_strconcat
    - t_strflocaltime
    linkageType: ''
    returnType: void
    signature: void cmd_log_error_write(const struct log_error *error)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-log.c:387,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-log.c:390,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/doveadm/doveadm-log.c:392,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-log.c:394,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-log.c:396,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/doveadm/doveadm-log.c:397,1
    - Dst: master_service_send_cmd
      Src: /src/dovecot/src/doveadm/doveadm-log.c:400,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-log.c:401,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-log.c:405,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-log.c:406,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-log.c:408,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-log.c:409,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-log.c:410,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-log.c:411,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-log.c:414,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-log.c:415,1
    - Dst: cmd_log_error_next
      Src: /src/dovecot/src/doveadm/doveadm-log.c:417,1
    - Dst: cmd_log_error_next
      Src: /src/dovecot/src/doveadm/doveadm-log.c:418,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/doveadm/doveadm-log.c:425,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-log.c:426,1
    - Dst: cmd_log_error_write
      Src: /src/dovecot/src/doveadm/doveadm-log.c:434,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-log.c:436,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 437
    functionName: cmd_log_errors
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - i_zero
    - cmd_log_error_next
    - net_connect_unix
    - timeval_cmp
    - doveadm_print_init
    - cmd_log_error_write
    - master_service_send_cmd
    - e_error
    - doveadm_print_formatted_set_format
    - doveadm_cmd_param_int64
    - i_stream_create_fd_autoclose
    - net_set_nonblock
    - i_assert
    - t_strconcat
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_log_errors(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-log.c:479,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm-log.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 481
    functionName: doveadm_register_log_commands
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-log.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_register_log_commands(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:27,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:30,1
    - Dst: read
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:34,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:36,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:39,1
    - Dst: getpid
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:40,1
    - Dst: kill
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:41,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:44,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - path
    - event
    argTypes:
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 46
    functionName: pid_file_read
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-instance.c
    functionUses: 0
    functionsReached:
    - getpid
    - str_to_pid
    - i_close_fd
    - open
    - read
    - e_error
    - kill
    linkageType: ''
    returnType: bool
    signature: bool pid_file_read(const char *path, struct event *event)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:57,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:58,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:61,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:62,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:63,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:64,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:65,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:68,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:68,1
    - Dst: master_instance_list_init
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:70,1
    - Dst: master_instance_list_iterate_init
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:71,1
    - Dst: master_instance_iterate_list_next
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:72,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:73,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:77,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:81,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:82,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:83,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:83,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:84,1
    - Dst: pid_file_read
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:85,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:86,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:88,1
    - Dst: master_instance_iterate_list_deinit
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:90,1
    - Dst: master_instance_list_deinit
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:91,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 48
    functionDepth: 7
    functionLinenumber: 48
    functionLinenumberEnd: 92
    functionName: cmd_instance_list
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-instance.c
    functionUses: 0
    functionsReached:
    - strcmp
    - doveadm_print
    - master_instance_list_iterate_init
    - master_instance_list_deinit
    - doveadm_print_header
    - printf
    - doveadm_print_init
    - master_instance_iterate_list_next
    - doveadm_cmd_param_str
    - master_instance_iterate_list_deinit
    - master_instance_list_init
    - doveadm_print_header_simple
    - master_service_get_service_settings
    - doveadm_cmd_param_bool
    - t_strconcat
    - unixdate2str
    - pid_file_read
    linkageType: ''
    returnType: void
    signature: void cmd_instance_list(struct doveadm_cmd_context *cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:101,1
    - Dst: instance_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:102,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:104,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:104,1
    - Dst: master_instance_list_init
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:106,1
    - Dst: master_instance_list_find_by_name
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:107,1
    - Dst: master_instance_list_remove
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:109,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:110,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:113,1
    - Dst: master_instance_list_deinit
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 94
    functionDepth: 7
    functionLinenumber: 94
    functionLinenumberEnd: 117
    functionName: cmd_instance_remove
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-instance.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - master_instance_list_deinit
    - doveadm_cmd_param_str
    - e_error
    - master_instance_list_init
    - master_instance_list_remove
    - master_instance_list_find_by_name
    - instance_cmd_help
    - master_service_get_service_settings
    linkageType: ''
    returnType: void
    signature: void cmd_instance_remove(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:143,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:145,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct doveadm_cmd_ver2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 148
    functionName: instance_cmd_help
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-instance.c
    functionUses: 1
    functionsReached:
    - N_ELEMENTS
    - help_ver2
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void instance_cmd_help(const struct doveadm_cmd_ver2 *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:154,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm-instance.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: doveadm_register_instance_commands
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-instance.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_register_instance_commands(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:43,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:44,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:45,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct doveadm_print_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 48
    functionName: doveadm_print_table_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - strlen
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void doveadm_print_table_header(const struct doveadm_print_header *hdr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:59,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:61,1
    - Dst: uni_utf8_strlen
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:68,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 118
    functionName: doveadm_calc_header_length
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - array_get
    - i_assert
    - uni_utf8_strlen
    linkageType: ''
    returnType: void
    signature: void doveadm_calc_header_length(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 129
    functionName: utf8_correction
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t utf8_correction(const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:141,1
    - Dst: utf8_correction
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:143,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:145,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:147,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:149,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:151,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 155
    functionName: doveadm_print_next
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - array_count
    - printf
    - utf8_correction
    - array_idx
    linkageType: ''
    returnType: void
    signature: void doveadm_print_next(const char *value)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:165,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:174,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:178,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:181,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:185,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 186
    functionName: doveadm_print_headers
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - array_get
    - printf
    linkageType: ''
    returnType: void
    signature: void doveadm_print_headers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_calc_header_length
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:192,1
    - Dst: doveadm_print_headers
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:193,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:195,1
    - Dst: doveadm_print_next
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:196,1
    - Dst: array_clear
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 198
    functionName: doveadm_buffer_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - doveadm_print_headers
    - doveadm_print_next
    - array_foreach_elem
    - doveadm_calc_header_length
    - array_clear
    linkageType: ''
    returnType: void
    signature: void doveadm_buffer_flush(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:205,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:206,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:208,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:209,1
    - Dst: doveadm_buffer_flush
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:212,1
    - Dst: doveadm_print_next
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 200
    functionDepth: 3
    functionLinenumber: 200
    functionLinenumberEnd: 215
    functionName: doveadm_print_table_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - doveadm_print_next
    - array_push_back
    - doveadm_buffer_flush
    - array_count
    linkageType: ''
    returnType: void
    signature: void doveadm_print_table_print(const char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:220,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:221,1
    - Dst: str_append_data
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:224,1
    - Dst: doveadm_print_table_print
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:226,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:226,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - value
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 217
    functionDepth: 4
    functionLinenumber: 217
    functionLinenumberEnd: 229
    functionName: doveadm_print_table_print_stream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_fatal
    - memchr
    - doveadm_print_table_print
    - str_truncate
    - str_append_data
    linkageType: ''
    returnType: void
    signature: void doveadm_print_table_print_stream(const unsigned char *value, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:233,1
    - Dst: doveadm_buffer_flush
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: doveadm_print_table_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - array_count
    - doveadm_buffer_flush
    linkageType: ''
    returnType: void
    signature: void doveadm_print_table_flush(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:242,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:243,1
    - Dst: str_new
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:245,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:246,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:247,1
    - Dst: ioctl
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 254
    functionName: doveadm_print_table_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - p_new
    - p_array_init
    - ioctl
    - str_new
    linkageType: ''
    returnType: void
    signature: void doveadm_print_table_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_free
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:258,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:259,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-print-table.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 262
    functionName: doveadm_print_table_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-table.c
    functionUses: 0
    functionsReached:
    - array_free
    - str_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_print_table_deinit(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:23,1
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:30,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:36,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:37,1
    - Dst: mail_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:37,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:38,1
    - Dst: doveadm_mail_iter_deinit_keep_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:41,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:43,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:44,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:46,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:47,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:48,1
    - Dst: mailbox_delete_empty
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:53,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:54,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:56,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:58,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:59,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:60,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:64,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:65,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:67,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:68,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:69,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:74,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - _ctx
    - info
    - search_args
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_info*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 17
    functionDepth: 13
    functionLinenumber: 17
    functionLinenumberEnd: 76
    functionName: cmd_expunge_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - container_of
    - mailbox_free
    - mailbox_get_last_internal_error
    - mail_expunge
    - e_debug
    - mail_event
    - doveadm_mail_iter_init
    - mailbox_delete_empty
    - mailbox_sync
    - doveadm_mail_iter_next
    - mailbox_set_subscribed
    - mailbox_get_vname
    - doveadm_mail_failed_mailbox
    - doveadm_mail_iter_deinit_keep_box
    linkageType: ''
    returnType: int
    signature: "int cmd_expunge_box(struct doveadm_mail_cmd_context *_ctx,\n\t\tconst
      struct mailbox_info *info,\n\t\tstruct mail_search_args *search_args)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: expunge_search_args_is_mailbox_or_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:89,1
    - Dst: expunge_search_args_is_mailbox_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:94,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 106
    functionName: expunge_search_args_is_mailbox_or_ok
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 1
    functionsReached:
    - expunge_search_args_is_mailbox_ok
    - expunge_search_args_is_mailbox_or_ok
    linkageType: ''
    returnType: bool
    signature: bool expunge_search_args_is_mailbox_or_ok(struct mail_search_arg *args)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: expunge_search_args_is_mailbox_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:126,1
    - Dst: expunge_search_args_is_mailbox_or_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:141,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 145
    functionName: expunge_search_args_is_mailbox_ok
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 2
    functionsReached:
    - expunge_search_args_is_mailbox_ok
    - expunge_search_args_is_mailbox_or_ok
    linkageType: ''
    returnType: bool
    signature: bool expunge_search_args_is_mailbox_ok(struct mail_search_arg *args)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: expunge_search_args_is_msgset_or_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:164,1
    - Dst: expunge_search_args_is_msgset_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:168,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 176
    functionName: expunge_search_args_is_msgset_or_ok
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 1
    functionsReached:
    - expunge_search_args_is_msgset_ok
    - expunge_search_args_is_msgset_or_ok
    linkageType: ''
    returnType: bool
    signature: bool expunge_search_args_is_msgset_or_ok(struct mail_search_arg *args)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: expunge_search_args_is_msgset_or_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:193,1
    - Dst: expunge_search_args_is_msgset_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:197,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct mail_search_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 205
    functionName: expunge_search_args_is_msgset_ok
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 2
    functionsReached:
    - expunge_search_args_is_msgset_ok
    - expunge_search_args_is_msgset_or_ok
    linkageType: ''
    returnType: bool
    signature: bool expunge_search_args_is_msgset_ok(struct mail_search_arg *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:217,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:219,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:220,1
    - Dst: cmd_expunge_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 207
    functionDepth: 14
    functionLinenumber: 207
    functionLinenumberEnd: 222
    functionName: cmd_expunge_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 0
    functionsReached:
    - doveadm_mailbox_list_iter_next
    - cmd_expunge_box
    - doveadm_mailbox_list_iter_init
    - if
    linkageType: ''
    returnType: int
    signature: int cmd_expunge_run(struct doveadm_mail_cmd_context *ctx, struct mail_user
      *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: expunge_search_args_is_mailbox_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:230,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:231,1
    - Dst: expunge_search_args_is_msgset_ok
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:235,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:236,1
    - Dst: mail_search_args_simplify
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - args
    - cmd
    argTypes:
    - struct mail_search_args*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 228
    functionDepth: 7
    functionLinenumber: 228
    functionLinenumberEnd: 242
    functionName: expunge_search_args_check
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - mail_search_args_simplify
    - expunge_search_args_is_msgset_ok
    - expunge_search_args_is_mailbox_ok
    linkageType: ''
    returnType: void
    signature: void expunge_search_args_check(struct mail_search_args *args, const
      char *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:248,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:251,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:254,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:255,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:257,1
    - Dst: expunge_search_args_check
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 244
    functionDepth: 8
    functionLinenumber: 244
    functionLinenumberEnd: 259
    functionName: cmd_expunge_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 0
    functionsReached:
    - container_of
    - expunge_search_args_check
    - doveadm_cmd_param_array
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    - doveadm_mail_build_search_args
    linkageType: ''
    returnType: void
    signature: void cmd_expunge_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-expunge.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 269
    functionName: cmd_expunge_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-expunge.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_expunge_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:48,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:56,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:57,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:61,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:65,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:66,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:71,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:72,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:73,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:74,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 5
    argNames:
    - mctx
    - user
    - op
    - ns_r
    - box_r
    argTypes:
    - struct metadata_cmd_context*
    - struct mail_user*
    - enum doveadm_metadata_op
    - struct mail_namespace**
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 36
    functionDepth: 9
    functionLinenumber: 36
    functionLinenumberEnd: 80
    functionName: cmd_mailbox_metadata_get_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_failed_mailbox
    - mailbox_free
    - mail_namespace_find
    - mailbox_open
    - mailbox_get_last_internal_error
    - e_error
    - mailbox_alloc
    - mail_namespace_find_inbox
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_metadata_get_mailbox(struct metadata_cmd_context *mctx,\n\t\t\t\t
      \ struct mail_user *user,\n\t\t\t\t  enum doveadm_metadata_op op,\n\t\t\t\t
      \ struct mail_namespace **ns_r,\n\t\t\t\t  struct mailbox **box_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:87,1
    - Dst: cmd_mailbox_metadata_get_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:94,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:99,1
    - Dst: mailbox_attribute_unset
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:104,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:105,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:107,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:108,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:109,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:110,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:111,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:112,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:113,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:114,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 82
    functionDepth: 10
    functionLinenumber: 82
    functionLinenumberEnd: 120
    functionName: cmd_mailbox_metadata_set_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - mailbox_attribute_set
    - mailbox_attribute_unset
    - container_of
    - mailbox_transaction_begin
    - cmd_mailbox_metadata_get_mailbox
    - mailbox_get_last_internal_error
    - mailbox_transaction_rollback
    - mailbox_free
    - e_error
    - mailbox_transaction_commit
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_metadata_set_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t
      \    struct mail_user *user)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_lcase
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:127,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:129,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:131,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:133,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:136,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:140,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - arg
    - type_r
    - key_r
    argTypes:
    - char*
    - enum mail_attribute_type*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 143
    functionName: cmd_mailbox_metadata_parse_key
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - t_str_lcase
    - str_begins
    - strcmp
    - i_fatal_status
    linkageType: ''
    returnType: void
    signature: "void cmd_mailbox_metadata_parse_key(const char *arg,\n\t\t\t       enum
      mail_attribute_type *type_r,\n\t\t\t       const char **key_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:150,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:153,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 155
    functionName: parse_args_common
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_flag
    linkageType: ''
    returnType: void
    signature: void parse_args_common(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:163,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:167,1
    - Dst: cmd_mailbox_metadata_parse_key
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:170,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - field
    - value_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 174
    functionName: parse_args_key
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - doveadm_cmd_param_str
    - cmd_mailbox_metadata_parse_key
    linkageType: ''
    returnType: bool
    signature: "bool parse_args_key(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\t
      \   const char *field, const char **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:181,1
    - Dst: parse_args_common
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:183,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:184,1
    - Dst: parse_args_key
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:185,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:186,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 176
    functionDepth: 3
    functionLinenumber: 176
    functionLinenumberEnd: 188
    functionName: cmd_mailbox_metadata_set_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - parse_args_common
    - parse_args_key
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_metadata_set_init(struct doveadm_mail_cmd_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 198
    functionName: cmd_mailbox_metadata_set_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_metadata_set_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:205,1
    - Dst: parse_args_common
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:207,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:208,1
    - Dst: parse_args_key
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:209,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 200
    functionDepth: 3
    functionLinenumber: 200
    functionLinenumberEnd: 211
    functionName: cmd_mailbox_metadata_unset_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - parse_args_common
    - parse_args_key
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_metadata_unset_init(struct doveadm_mail_cmd_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 221
    functionName: cmd_mailbox_metadata_unset_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_metadata_unset_alloc(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:228,1
    - Dst: cmd_mailbox_metadata_get_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:235,1
    - Dst: mailbox_attribute_get_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:240,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:242,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:243,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:244,1
    - Dst: doveadm_print_empty
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:247,1
    - Dst: doveadm_print_istream
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:249,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:250,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:251,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:252,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:256,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:259,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 223
    functionDepth: 10
    functionLinenumber: 223
    functionLinenumberEnd: 261
    functionName: cmd_mailbox_metadata_get_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_failed_mailbox
    - container_of
    - doveadm_print
    - mailbox_get_last_internal_error
    - cmd_mailbox_metadata_get_mailbox
    - doveadm_print_empty
    - doveadm_print_istream
    - mailbox_free
    - e_error
    - i_stream_get_error
    - i_stream_get_name
    - mailbox_attribute_get_stream
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_metadata_get_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t
      \    struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:268,1
    - Dst: parse_args_common
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:270,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:271,1
    - Dst: parse_args_key
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:272,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:273,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 263
    functionDepth: 3
    functionLinenumber: 263
    functionLinenumberEnd: 277
    functionName: cmd_mailbox_metadata_get_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print_header
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - parse_args_common
    - parse_args_key
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_metadata_get_init(struct doveadm_mail_cmd_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:283,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 288
    functionName: cmd_mailbox_metadata_get_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_metadata_get_alloc(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:297,1
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:299,1
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:300,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:303,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:305,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:307,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:308,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:309,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:309,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:310,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:312,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:315,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:316,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:317,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:318,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - box
    - type
    argTypes:
    - struct metadata_cmd_context*
    - struct mailbox*
    - enum mail_attribute_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 290
    functionDepth: 5
    functionLinenumber: 290
    functionLinenumberEnd: 322
    functionName: cmd_mailbox_metadata_list_run_iter
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - doveadm_print
    - mailbox_get_last_internal_error
    - i_unreached
    - mailbox_attribute_iter_init
    - mailbox_attribute_iter_next
    - e_error
    - str_truncate
    - mailbox_get_vname
    - str_append
    - mailbox_attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_metadata_list_run_iter(struct metadata_cmd_context
      *ctx,\n\t\t\t\t   struct mailbox *box,\n\t\t\t\t   enum mail_attribute_type
      type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:329,1
    - Dst: cmd_mailbox_metadata_get_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:335,1
    - Dst: cmd_mailbox_metadata_list_run_iter
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:341,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:342,1
    - Dst: cmd_mailbox_metadata_list_run_iter
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:347,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:348,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:352,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 324
    functionDepth: 10
    functionLinenumber: 324
    functionLinenumberEnd: 354
    functionName: cmd_mailbox_metadata_list_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - container_of
    - mailbox_free
    - cmd_mailbox_metadata_get_mailbox
    - cmd_mailbox_metadata_list_run_iter
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_metadata_list_run(struct doveadm_mail_cmd_context
      *_ctx,\n\t\t\t      struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:361,1
    - Dst: parse_args_common
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:363,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:364,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:365,1
    - Dst: parse_args_key
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:366,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 370
    functionName: cmd_mailbox_metadata_list_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print_header
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - parse_args_common
    - parse_args_key
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_metadata_list_init(struct doveadm_mail_cmd_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:376,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 381
    functionName: cmd_mailbox_metadata_list_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-metadata.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_metadata_list_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-who.c:38,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-who.c:39,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-who.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - user
    - ip_r
    argTypes:
    - struct who_user*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: who_user_ip
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_count
    - array_front
    linkageType: ''
    returnType: void
    signature: void who_user_ip(const struct who_user *user, struct ip_addr *ip_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_hash
      Src: /src/dovecot/src/doveadm/doveadm-who.c:49,1
    - Dst: str_hash
      Src: /src/dovecot/src/doveadm/doveadm-who.c:52,1
    - Dst: who_user_ip
      Src: /src/dovecot/src/doveadm/doveadm-who.c:54,1
    - Dst: net_ip_hash
      Src: /src/dovecot/src/doveadm/doveadm-who.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct who_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 58
    functionName: who_user_hash
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - who_user_ip
    - net_ip_hash
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int who_user_hash(const struct who_user *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-who.c:63,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-who.c:65,1
    - Dst: who_user_ip
      Src: /src/dovecot/src/doveadm/doveadm-who.c:72,1
    - Dst: who_user_ip
      Src: /src/dovecot/src/doveadm/doveadm-who.c:73,1
    - Dst: net_ip_cmp
      Src: /src/dovecot/src/doveadm/doveadm-who.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - user1
    - user2
    argTypes:
    - struct who_user*
    - struct who_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: who_user_cmp
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - strcmp
    - who_user_ip
    - net_ip_cmp
    linkageType: ''
    returnType: int
    signature: "int who_user_cmp(const struct who_user *user1,\n\t\t\tconst struct
      who_user *user2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-who.c:84,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/doveadm/doveadm-who.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - user
    - ip
    argTypes:
    - struct who_user*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 89
    functionName: who_user_has_ip
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - net_ip_compare
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: bool who_user_has_ip(const struct who_user *user, const struct ip_addr
      *ip)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-who.c:94,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-who.c:95,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-who.c:99,1
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/doveadm-who.c:102,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/doveadm/doveadm-who.c:103,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-who.c:105,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-who.c:106,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-who.c:108,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/doveadm-who.c:111,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-who.c:114,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/doveadm-who.c:117,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - iter
    - line
    - line_r
    argTypes:
    - struct doveadm_who_iter*
    - char*
    - struct who_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 119
    functionName: who_parse_line
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - net_addr2ip
    - str_to_pid
    - t_strsplit_tabescaped
    - p_strarray_dup
    - str_array_length
    - guid_128_from_string
    - p_clear
    linkageType: ''
    returnType: int
    signature: "int who_parse_line(struct doveadm_who_iter *iter,\n\t\t\t  const char
      *line, struct who_line *line_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-who.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - user
    - pid
    argTypes:
    - struct who_user*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 130
    functionName: who_user_has_pid
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool who_user_has_pid(struct who_user *user, pid_t pid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/doveadm-who.c:140,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-who.c:142,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-who.c:143,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-who.c:144,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-who.c:145,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-who.c:146,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/doveadm-who.c:147,1
    - Dst: who_user_has_ip
      Src: /src/dovecot/src/doveadm/doveadm-who.c:151,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-who.c:152,1
    - Dst: who_user_has_pid
      Src: /src/dovecot/src/doveadm/doveadm-who.c:154,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-who.c:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - line
    argTypes:
    - struct who_context*
    - struct who_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 156
    functionName: who_aggregate_line
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - p_array_init
    - array_push_back
    - who_user_has_pid
    - hash_table_insert
    - who_user_has_ip
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void who_aggregate_line(struct who_context *ctx,\n\t\t\t       const
      struct who_line *line)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_is_numeric
      Src: /src/dovecot/src/doveadm/doveadm-who.c:165,1
    - Dst: net_parse_range
      Src: /src/dovecot/src/doveadm/doveadm-who.c:166,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-who.c:168,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-who.c:176,1
    - Dst: strpbrk
      Src: /src/dovecot/src/doveadm/doveadm-who.c:177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - masks
    argTypes:
    - struct who_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 182
    functionName: who_parse_masks
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - strpbrk
    - e_error
    - str_is_numeric
    - net_parse_range
    linkageType: ''
    returnType: int
    signature: int who_parse_masks(struct who_context *ctx, const char *const *masks)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-who.c:187,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-who.c:192,1
    - Dst: who_parse_masks
      Src: /src/dovecot/src/doveadm/doveadm-who.c:194,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/doveadm/doveadm-who.c:197,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-who.c:198,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - alt_username_field
    - dest_ip
    - masks
    argTypes:
    - struct who_context*
    - char*
    - struct ip_addr*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 206
    functionName: who_parse_args
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - who_parse_masks
    - array_is_empty
    - e_error
    - t_array_init
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int who_parse_args(struct who_context *ctx, const char *alt_username_field,\n\t\t
      \  const struct ip_addr *dest_ip, const char *const *masks)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-who.c:217,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-who.c:218,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-who.c:220,1
    - Dst: doveadm_connect
      Src: /src/dovecot/src/doveadm/doveadm-who.c:222,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-who.c:223,1
    - Dst: write
      Src: /src/dovecot/src/doveadm/doveadm-who.c:224,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-who.c:224,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-who.c:225,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-who.c:227,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/doveadm/doveadm-who.c:231,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/doveadm/doveadm-who.c:232,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-who.c:233,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-who.c:234,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/doveadm/doveadm-who.c:236,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-who.c:237,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-who.c:239,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-who.c:240,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-who.c:244,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-who.c:246,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - anvil_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 249
    functionName: doveadm_who_iter_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - i_close_fd
    - strlen
    - i_stream_set_name
    - p_strsplit_tabescaped
    - str_array_length
    - write
    - i_stream_read_next_line
    - doveadm_connect
    - i_stream_create_fd_autoclose
    - version_string_verify
    - net_set_nonblock
    - p_strdup_printf
    linkageType: ''
    returnType: struct doveadm_who_iter
    signature: struct doveadm_who_iter *doveadm_who_iter_init(const char *anvil_path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-who.c:258,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - iter
    - filter
    argTypes:
    - struct doveadm_who_iter*
    - struct who_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 265
    functionName: doveadm_who_iter_init_filter
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_who_iter_init_filter(struct doveadm_who_iter *iter,\n\t\t\t\t
      \ struct who_filter *filter)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-who.c:276,1
    - Dst: who_parse_line
      Src: /src/dovecot/src/doveadm/doveadm-who.c:280,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-who.c:283,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - iter
    - who_line_r
    argTypes:
    - struct doveadm_who_iter*
    - struct who_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 288
    functionName: doveadm_who_iter_next
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - p_strdup_printf
    - who_parse_line
    - i_stream_read_next_line
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_who_iter_next(struct doveadm_who_iter *iter,\n\t\t\t
      \  struct who_line *who_line_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/doveadm-who.c:309,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-who.c:310,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-who.c:311,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-who.c:312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _iter
    - error_r
    argTypes:
    - struct doveadm_who_iter**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 314
    functionName: doveadm_who_iter_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - t_strdup
    - pool_unref
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int doveadm_who_iter_deinit(struct doveadm_who_iter **_iter,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/doveadm/doveadm-who.c:319,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-who.c:323,1
    - Dst: wildcard_match_icase
      Src: /src/dovecot/src/doveadm/doveadm-who.c:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - filter
    - username
    argTypes:
    - struct who_filter*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 328
    functionName: who_filter_match_username
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - array_is_empty
    - wildcard_match_icase
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool who_filter_match_username(const struct who_filter *filter,\n\t\t\t\t
      \     const char *username)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: who_filter_match_username
      Src: /src/dovecot/src/doveadm/doveadm-who.c:333,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-who.c:340,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/doveadm/doveadm-who.c:341,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - user
    - filter
    argTypes:
    - struct who_user*
    - struct who_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 351
    functionName: who_user_filter_match
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - who_filter_match_username
    - net_is_in_network
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: "bool who_user_filter_match(const struct who_user *user,\n\t\t\t\t
      \ const struct who_filter *filter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-who.c:357,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:359,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:360,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-who.c:360,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:361,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-who.c:363,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-who.c:364,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-who.c:365,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-who.c:366,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-who.c:367,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-who.c:367,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-who.c:368,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:369,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-who.c:369,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-who.c:371,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-who.c:372,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-who.c:373,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-who.c:374,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-who.c:374,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-who.c:375,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-who.c:376,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-who.c:376,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-who.c:377,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:378,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-who.c:378,1
    - Dst: doveadm_print_flush
      Src: /src/dovecot/src/doveadm/doveadm-who.c:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct who_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 381
    functionName: who_print_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - doveadm_print
    - str_append_c
    - str_printfa
    - doveadm_print_flush
    - array_foreach_elem
    - str_len
    - array_foreach
    - net_ip2addr
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void who_print_user(const struct who_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-who.c:388,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-who.c:389,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-who.c:391,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-who.c:392,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-who.c:393,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/doveadm-who.c:395,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/doveadm-who.c:396,1
    - Dst: who_user_filter_match
      Src: /src/dovecot/src/doveadm/doveadm-who.c:397,1
    - Dst: who_print_user
      Src: /src/dovecot/src/doveadm/doveadm-who.c:398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct who_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 400
    functionName: who_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate
    - doveadm_print_header
    - who_user_filter_match
    - who_print_user
    - hash_table_iterate_init
    linkageType: ''
    returnType: void
    signature: void who_print(struct who_context *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/doveadm/doveadm-who.c:409,1
    - Dst: who_filter_match_username
      Src: /src/dovecot/src/doveadm/doveadm-who.c:412,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-who.c:415,1
    - Dst: who_filter_match_username
      Src: /src/dovecot/src/doveadm/doveadm-who.c:423,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/doveadm/doveadm-who.c:427,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/doveadm/doveadm-who.c:432,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 2
    argNames:
    - line
    - filter
    argTypes:
    - struct who_line*
    - struct who_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 436
    functionName: who_line_filter_match
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - who_filter_match_username
    - array_is_empty
    - i_assert
    - net_is_in_network
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool who_line_filter_match(const struct who_line *line,\n\t\t\t   const
      struct who_filter *filter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: who_line_filter_match
      Src: /src/dovecot/src/doveadm/doveadm-who.c:444,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:447,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:448,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:449,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-who.c:449,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:450,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-who.c:450,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:451,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-who.c:451,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:454,1
    - Dst: doveadm_print_empty
      Src: /src/dovecot/src/doveadm/doveadm-who.c:455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - iter
    - line
    argTypes:
    - struct who_context*
    - struct doveadm_who_iter*
    - struct who_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 438
    functionDepth: 3
    functionLinenumber: 438
    functionLinenumberEnd: 456
    functionName: who_print_line
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - dec2str
    - doveadm_print
    - doveadm_print_empty
    - who_line_filter_match
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: "void who_print_line(struct who_context *ctx, struct doveadm_who_iter
      *iter,\n\t       const struct who_line *line)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-who.c:464,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-who.c:465,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-who.c:466,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-who.c:467,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-who.c:469,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-who.c:471,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/doveadm-who.c:473,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-who.c:475,1
    - Dst: who_parse_args
      Src: /src/dovecot/src/doveadm/doveadm-who.c:476,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/doveadm-who.c:477,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-who.c:478,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-who.c:483,1
    - Dst: doveadm_who_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-who.c:484,1
    - Dst: doveadm_who_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-who.c:487,1
    - Dst: who_aggregate_line
      Src: /src/dovecot/src/doveadm/doveadm-who.c:488,1
    - Dst: who_print
      Src: /src/dovecot/src/doveadm/doveadm-who.c:489,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-who.c:491,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-who.c:493,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-who.c:494,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-who.c:495,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-who.c:496,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-who.c:498,1
    - Dst: doveadm_who_iter_init_filter
      Src: /src/dovecot/src/doveadm/doveadm-who.c:499,1
    - Dst: doveadm_who_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-who.c:500,1
    - Dst: who_print_line
      Src: /src/dovecot/src/doveadm/doveadm-who.c:501,1
    - Dst: doveadm_who_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-who.c:505,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-who.c:506,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/doveadm-who.c:510,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-who.c:511,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 458
    functionDepth: 4
    functionLinenumber: 458
    functionLinenumberEnd: 512
    functionName: cmd_who
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-who.c
    functionUses: 0
    functionsReached:
    - doveadm_print_header
    - doveadm_who_iter_deinit
    - doveadm_print_init
    - who_print
    - pool_unref
    - doveadm_cmd_param_bool
    - hash_table_create
    - doveadm_print_header_simple
    - hash_table_destroy
    - who_parse_args
    - i_zero
    - doveadm_who_iter_next
    - who_aggregate_line
    - e_error
    - pool_alloconly_create
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - who_print_line
    - doveadm_who_iter_init_filter
    - doveadm_who_iter_init
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void cmd_who(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:18,1
    - Dst: hex2dec
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:21,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:21,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:23,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:27,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:27,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - input
    - name
    - value
    argTypes:
    - struct istream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 28
    functionName: dump_timestamp
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - printf
    - strlen
    - i_fatal
    - hex2dec
    - unixdate2str
    linkageType: ''
    returnType: void
    signature: void dump_timestamp(struct istream *input, const char *name, const
      char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:35,1
    - Dst: hex2dec
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:38,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:38,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:40,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - input
    - name
    - value
    argTypes:
    - struct istream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 46
    functionName: dump_size
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - printf
    - strlen
    - i_fatal
    - hex2dec
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t dump_size(struct istream *input, const char *name, const char
      *value)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:53,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:54,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:55,1
    - Dst: str_is_numeric
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:59,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:60,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:60,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:61,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:62,1
    - Dst: hex2dec
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:68,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:69,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:71,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:74,1
    - Dst: dump_timestamp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:77,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:80,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:85,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 87
    functionName: dump_file_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dump_timestamp
    - printf
    - strlen
    - i_fatal
    - i_stream_read_next_line
    - t_strsplit
    - str_is_numeric
    - hex2dec
    - i_stream_get_name
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dump_file_hdr(struct istream *input)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:97,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:100,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:103,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:106,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:107,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:109,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:110,1
    - Dst: dump_size
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:112,1
    - Dst: t_strndup
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:113,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:115,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - input
    - hdr_size
    - msg_size_r
    argTypes:
    - struct istream*
    - unsigned int
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 118
    functionName: dump_msg_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dbox.c
    functionUses: 0
    functionsReached:
    - memcpy
    - printf
    - i_fatal
    - t_strndup
    - i_stream_skip
    - dump_size
    - memcmp
    - i_stream_read_bytes
    linkageType: ''
    returnType: bool
    signature: bool dump_msg_hdr(struct istream *input, unsigned int hdr_size, uoff_t
      *msg_size_r)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:128,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:129,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:132,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:133,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:134,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:135,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:139,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:140,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:146,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:149,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:152,1
    - Dst: dump_timestamp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:155,1
    - Dst: dump_size
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:158,1
    - Dst: dump_size
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:161,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:164,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:167,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:175,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 179
    functionName: dump_msg_metadata
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dbox.c
    functionUses: 0
    functionsReached:
    - memcpy
    - dump_timestamp
    - printf
    - i_fatal
    - i_stream_skip
    - i_stream_read_next_line
    - dump_size
    - memcmp
    - i_stream_read_bytes
    linkageType: ''
    returnType: void
    signature: void dump_msg_metadata(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_msg_hdr
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:185,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:187,1
    - Dst: dump_msg_metadata
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - input
    - hdr_size
    argTypes:
    - struct istream*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 181
    functionDepth: 3
    functionLinenumber: 181
    functionLinenumberEnd: 190
    functionName: dump_msg
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dbox.c
    functionUses: 0
    functionsReached:
    - dump_msg_metadata
    - dump_msg_hdr
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: bool dump_msg(struct istream *input, unsigned int hdr_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:200,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:202,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:204,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:205,1
    - Dst: dump_file_hdr
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:206,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:208,1
    - Dst: dump_msg
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:210,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - path
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 214
    functionName: cmd_dump_dbox
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dbox.c
    functionUses: 0
    functionsReached:
    - printf
    - i_stream_set_name
    - i_fatal
    - open
    - i_stream_create_fd_autoclose
    - dump_msg
    - dump_file_hdr
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_dbox(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t\t
      \ const char *path, const char *const *args ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:221,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:226,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-dump-dbox.c:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 227
    functionName: test_dump_dbox
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dbox.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - strrchr
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_dbox(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t\t
      \  const char *path)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:20,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:27,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:28,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:29,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:34,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:35,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:36,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:37,1
    - Dst: doveadm_mail_failed_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:38,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:42,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:44,1
    - Dst: mailbox_save_set_uid
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:46,1
    - Dst: mailbox_save_set_guid
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:48,1
    - Dst: mailbox_save_set_received_date
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:50,1
    - Dst: mailbox_save_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:51,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:52,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:53,1
    - Dst: doveadm_mail_failed_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:54,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:55,1
    - Dst: mailbox_save_continue
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:59,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:64,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:65,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:68,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:69,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:70,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:72,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:73,1
    - Dst: doveadm_mail_failed_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:74,1
    - Dst: mailbox_save_finish
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:75,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:76,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:77,1
    - Dst: doveadm_mail_failed_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:78,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:79,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:80,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:82,1
    - Dst: doveadm_mail_failed_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:83,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:88,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:90,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:91,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 57
    argCount: 3
    argNames:
    - ctx
    - box
    - input
    argTypes:
    - struct save_cmd_context*
    - struct mailbox*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 16
    functionDepth: 9
    functionLinenumber: 16
    functionLinenumberEnd: 93
    functionName: cmd_save_to_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-save.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_save_alloc
    - mailbox_save_set_guid
    - mailbox_save_begin
    - doveadm_mail_failed_error
    - mailbox_transaction_begin
    - i_stream_get_error
    - i_stream_get_name
    - mailbox_get_storage
    - mailbox_transaction_rollback
    - mailbox_save_continue
    - e_error
    - mailbox_get_vname
    - mailbox_transaction_commit
    - i_assert
    - i_stream_read
    - doveadm_mail_failed_storage
    - mailbox_open
    - mailbox_save_finish
    - mailbox_save_cancel
    - mailbox_save_set_uid
    - mailbox_save_set_received_date
    linkageType: ''
    returnType: int
    signature: "int cmd_save_to_mailbox(struct save_cmd_context *ctx, struct mailbox
      *box,\n\t\t    struct istream *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:99,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:104,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:105,1
    - Dst: cmd_save_to_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:106,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 95
    functionDepth: 10
    functionLinenumber: 95
    functionLinenumberEnd: 109
    functionName: cmd_save_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-save.c
    functionUses: 0
    functionsReached:
    - container_of
    - mail_namespace_find
    - mailbox_free
    - mailbox_alloc
    - cmd_save_to_mailbox
    linkageType: ''
    returnType: int
    signature: int cmd_save_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:115,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:119,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:120,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:121,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:122,1
    - Dst: mail_parse_human_timestamp
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:125,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:126,1
    - Dst: doveadm_mail_get_input
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 130
    functionName: cmd_save_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-save.c
    functionUses: 0
    functionsReached:
    - mail_parse_human_timestamp
    - container_of
    - doveadm_cmd_param_uint32
    - i_fatal
    - doveadm_cmd_param_str
    - doveadm_mail_get_input
    linkageType: ''
    returnType: void
    signature: void cmd_save_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-save.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 141
    functionName: cmd_save_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-save.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_save_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: DEF
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 3
    argNames:
    - set
    - pool
    - str
    argTypes:
    - struct doveadm_settings*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: fix_base_path
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-settings.c
    functionUses: 1
    functionsReached:
    - p_strconcat
    linkageType: ''
    returnType: void
    signature: void fix_base_path(struct doveadm_settings *set, pool_t pool, const
      char **str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:156,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct doveadm_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 173
    functionName: dsync_settings_parse_features
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-settings.c
    functionUses: 0
    functionsReached:
    - t_strsplit_spaces
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int dsync_settings_parse_features(struct doveadm_settings *set,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fix_base_path
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:181,1
    - Dst: fix_base_path
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:182,1
    - Dst: dsync_settings_parse_features
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 195
    functionName: doveadm_settings_check
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-settings.c
    functionUses: 0
    functionsReached:
    - dsync_settings_parse_features
    - fix_base_path
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:204,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:208,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:210,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:211,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:214,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:216,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:219,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 6
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: doveadm_read_settings
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-settings.c
    functionUses: 0
    functionsReached:
    - i_zero
    - master_service_settings_read
    - fd_close_on_exec
    - i_fatal
    - master_service_get_event
    - i_assert
    - master_service_get_service_settings
    - settings_get_or_fatal
    linkageType: ''
    returnType: void
    signature: void doveadm_read_settings(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: doveadm_settings_get_config_fd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int doveadm_settings_get_config_fd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_free
      Src: /src/dovecot/src/doveadm/doveadm-settings.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 231
    functionName: doveadm_settings_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-settings.c
    functionUses: 0
    functionsReached:
    - settings_free
    linkageType: ''
    returnType: void
    signature: void doveadm_settings_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:20,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 23
    functionName: doveadm_print_tab_flush_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-tab.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void doveadm_print_tab_flush_header(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:31,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct doveadm_print_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 34
    functionName: doveadm_print_tab_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-tab.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void doveadm_print_tab_header(const struct doveadm_print_header *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_tab_flush_header
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:38,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:40,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:41,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: doveadm_print_tab_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-tab.c
    functionUses: 0
    functionsReached:
    - doveadm_print_tab_flush_header
    - o_stream_nsend_str
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void doveadm_print_tab_print(const char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_tab_print
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:53,1
    - Dst: doveadm_print_tab_flush_header
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:56,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:58,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - value
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 60
    functionName: doveadm_print_tab_print_stream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-tab.c
    functionUses: 0
    functionsReached:
    - doveadm_print_tab_flush_header
    - o_stream_nsend
    - doveadm_print_tab_print
    linkageType: ''
    returnType: void
    signature: void doveadm_print_tab_print_stream(const unsigned char *value, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_tab_flush_header
      Src: /src/dovecot/src/doveadm/doveadm-print-tab.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: doveadm_print_tab_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-tab.c
    functionUses: 0
    functionsReached:
    - doveadm_print_tab_flush_header
    linkageType: ''
    returnType: void
    signature: void doveadm_print_tab_flush(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:19,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:21,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:22,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 26
    functionName: cmd_mail_dict_get_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_print_header
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_mail_dict_get_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:32,1
    - Dst: doveadm_dict_get
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _cctx
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 5
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: cmd_mail_dict_get_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_dict_get
    - container_of
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_dict_get_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\t
      \ struct mail_user *user ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:41,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: cmd_mail_dict_get_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_dict_get_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:52,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:54,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:55,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 57
    functionName: cmd_mail_dict_set_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_mail_dict_set_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:63,1
    - Dst: doveadm_dict_set
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _cctx
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 6
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: cmd_mail_dict_set_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_dict_set
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_dict_set_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\t
      struct mail_user *user ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 77
    functionName: cmd_mail_dict_set_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_dict_set_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:82,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:84,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 86
    functionName: cmd_mail_dict_unset_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_mail_dict_unset_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:92,1
    - Dst: doveadm_dict_unset
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _cctx
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 6
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: cmd_mail_dict_unset_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_dict_unset
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_dict_unset_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\t
      \  struct mail_user *user ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 106
    functionName: cmd_mail_dict_unset_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_dict_unset_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:111,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:113,1
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:114,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: cmd_mail_dict_inc_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - container_of
    - doveadm_cmd_param_int64
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_mail_dict_inc_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:124,1
    - Dst: doveadm_dict_inc
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _cctx
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 6
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: cmd_mail_dict_inc_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_dict_inc
    - container_of
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_dict_inc_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\t
      \ struct mail_user *user ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 138
    functionName: cmd_mail_dict_inc_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_dict_inc_alloc(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:143,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:145,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:146,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:149,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:151,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:153,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:156,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 159
    functionName: cmd_mail_dict_iter_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_flag
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_mail_dict_iter_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:165,1
    - Dst: doveadm_dict_iter
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _cctx
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 161
    functionDepth: 5
    functionLinenumber: 161
    functionLinenumberEnd: 169
    functionName: cmd_mail_dict_iter_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_dict_iter
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_dict_iter_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\t
      \ struct mail_user *user ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:174,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-dict.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 180
    functionName: cmd_mail_dict_iter_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-dict.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_dict_iter_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:28,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct doveadm_print_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: doveadm_print_flow_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-flow.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void doveadm_print_flow_header(const struct doveadm_print_header *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:35,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:36,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 41
    functionName: flow_next_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-flow.c
    functionUses: 0
    functionsReached:
    - array_count
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void flow_next_hdr(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:46,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct doveadm_print_flow_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: doveadm_print_flow_print_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-flow.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void doveadm_print_flow_print_header(const struct doveadm_print_flow_header
      *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:54,1
    - Dst: doveadm_print_flow_print_header
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:56,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:57,1
    - Dst: flow_next_hdr
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: doveadm_print_flow_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-flow.c
    functionUses: 0
    functionsReached:
    - flow_next_hdr
    - o_stream_nsend_str
    - doveadm_print_flow_print_header
    - array_idx
    linkageType: ''
    returnType: void
    signature: void doveadm_print_flow_print(const char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:65,1
    - Dst: doveadm_print_flow_print_header
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:69,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:71,1
    - Dst: flow_next_hdr
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - value
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 76
    functionName: doveadm_print_flow_print_stream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-flow.c
    functionUses: 0
    functionsReached:
    - flow_next_hdr
    - o_stream_nsend
    - doveadm_print_flow_print_header
    - array_idx
    linkageType: ''
    returnType: void
    signature: void doveadm_print_flow_print_stream(const unsigned char *value, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:82,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:83,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: doveadm_print_flow_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-flow.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void doveadm_print_flow_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 94
    functionName: doveadm_print_flow_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-flow.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void doveadm_print_flow_flush(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-print-flow.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: doveadm_print_flow_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-flow.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_print_flow_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:28,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:32,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:34,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:36,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - vname
    - src_sep
    - dest_sep
    argTypes:
    - char*
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 39
    functionName: convert_vname_separators
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    linkageType: ''
    returnType: char
    signature: 'char *

      convert_vname_separators(const char *vname, char src_sep, char dest_sep)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:54,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:56,1
    - Dst: convert_vname_separators
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:58,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:59,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:60,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:63,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:64,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:67,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:68,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:69,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:71,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:73,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:74,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:79,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:80,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:82,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:85,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:86,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:88,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:89,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:90,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 4
    argNames:
    - ctx
    - user
    - info
    - box_r
    argTypes:
    - struct import_cmd_context*
    - struct mail_user*
    - struct mailbox_info*
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 41
    functionDepth: 11
    functionLinenumber: 41
    functionLinenumberEnd: 95
    functionName: dest_mailbox_open_or_create
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_free
    - mail_namespace_find
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - mailbox_sync
    - e_error
    - mailbox_alloc
    - mailbox_set_subscribed
    - convert_vname_separators
    - mailbox_create
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int dest_mailbox_open_or_create(struct import_cmd_context *ctx,\n\t\t\t
      \   struct mail_user *user,\n\t\t\t    const struct mailbox_info *info,\n\t\t\t
      \   struct mailbox **box_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:106,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:110,1
    - Dst: mail_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:110,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:111,1
    - Dst: mailbox_save_copy_flags
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:112,1
    - Dst: mailbox_copy
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:113,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:114,1
    - Dst: mail_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:114,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:116,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:119,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:121,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:122,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - ctx
    - iter
    - src_mail
    - dest_box
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct doveadm_mail_iter*
    - struct mail*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 128
    functionName: cmd_import_box_contents
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - e_debug
    - mailbox_save_alloc
    - mail_event
    - mailbox_copy
    - e_error
    - doveadm_mail_iter_next
    - mailbox_save_copy_flags
    - mailbox_transaction_commit
    linkageType: ''
    returnType: int
    signature: "int cmd_import_box_contents(struct doveadm_mail_cmd_context *ctx,\n\t\t\tstruct
      doveadm_mail_iter *iter, struct mail *src_mail,\n\t\t\tstruct mailbox *dest_box)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:139,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:146,1
    - Dst: dest_mailbox_open_or_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:148,1
    - Dst: cmd_import_box_contents
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:151,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:152,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:155,1
    - Dst: doveadm_mail_iter_deinit_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - dest_user
    - info
    - search_args
    argTypes:
    - struct import_cmd_context*
    - struct mail_user*
    - struct mailbox_info*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 130
    functionDepth: 12
    functionLinenumber: 130
    functionLinenumberEnd: 161
    functionName: cmd_import_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - doveadm_mail_iter_init
    - dest_mailbox_open_or_create
    - cmd_import_box_contents
    - doveadm_mail_iter_deinit_sync
    - doveadm_mail_iter_next
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_import_box(struct import_cmd_context *ctx, struct mail_user
      *dest_user,\n\t       const struct mailbox_info *info,\n\t       struct mail_search_args
      *search_args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:171,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:176,1
    - Dst: mail_storage_service_lookup
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:179,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:181,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:184,1
    - Dst: mail_storage_2nd_settings_reset
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:185,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:188,1
    - Dst: settings_override
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:189,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:189,1
    - Dst: settings_override
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:192,1
    - Dst: settings_override
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:194,1
    - Dst: mail_storage_service_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:197,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:199,1
    - Dst: mail_namespaces_init_location
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:201,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:202,1
    - Dst: mail_storage_service_user_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:203,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:206,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:207,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - dest_user
    argTypes:
    - struct import_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 163
    functionDepth: 13
    functionLinenumber: 163
    functionLinenumberEnd: 208
    functionName: cmd_import_init_source_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mail_storage_service_io_deactivate_user
    - mail_namespaces_init_location
    - mail_storage_service_next
    - i_fatal
    - mail_storage_service_user_get_settings_instance
    - mail_storage_service_io_activate_user
    - t_split_key_value_eq
    - mail_storage_service_lookup
    - settings_override
    - t_strconcat
    - mail_storage_2nd_settings_reset
    - mail_storage_service_user_unref
    linkageType: ''
    returnType: void
    signature: void cmd_import_init_source_user(struct import_cmd_context *ctx, struct
      mail_user *dest_user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:214,1
    - Dst: cmd_import_init_source_user
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:223,1
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:225,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:227,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:228,1
    - Dst: cmd_import_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 210
    functionDepth: 14
    functionLinenumber: 210
    functionLinenumberEnd: 230
    functionName: cmd_import_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - container_of
    - cmd_import_init_source_user
    - if
    - doveadm_mailbox_list_iter_next
    - cmd_import_box
    - doveadm_mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: int cmd_import_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:239,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:243,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:244,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:247,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:248,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:249,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:250,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:252,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:254,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:255,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:262,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:264,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:268,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 269
    functionName: cmd_import_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_strdup_until
    - container_of
    - doveadm_cmd_param_array
    - doveadm_cmd_param_flag
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - e_error
    - doveadm_mail_build_search_args
    linkageType: ''
    returnType: void
    signature: void cmd_import_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:274,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 271
    functionDepth: 4
    functionLinenumber: 271
    functionLinenumberEnd: 278
    functionName: cmd_import_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - mail_user_deinit
    - container_of
    linkageType: ''
    returnType: void
    signature: void cmd_import_deinit(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-import.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 289
    functionName: cmd_import_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-import.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_import_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dump
    argTypes:
    - struct doveadm_cmd_dump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 18
    functionName: doveadm_dump_register
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump.c
    functionUses: 1
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void doveadm_dump_register(const struct doveadm_cmd_dump *dump)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:25,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 30
    functionName: dump_find_name
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct doveadm_cmd_dump
    signature: 'struct doveadm_cmd_dump *

      dump_find_name(const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:37,1
    - Dst: struct doveadm_cmd_dump*::test
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - cctx
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 42
    functionName: dump_find_test
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump.c
    functionUses: 0
    functionsReached:
    - struct doveadm_cmd_dump*::test
    - array_foreach_elem
    linkageType: ''
    returnType: struct doveadm_cmd_dump
    signature: 'struct doveadm_cmd_dump *

      dump_find_test(struct doveadm_cmd_context *cctx, const char *path)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:50,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:51,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:52,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:53,1
    - Dst: dump_find_name
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:55,1
    - Dst: dump_find_test
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:55,1
    - Dst: print_dump_types
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:58,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:59,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:61,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:66,1
    - Dst: struct doveadm_cmd_dump*::cmd
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:68,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 69
    functionName: cmd_dump
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump.c
    functionUses: 0
    functionsReached:
    - print_dump_types
    - printf
    - i_fatal_status
    - doveadm_cmd_param_array
    - help_ver2
    - doveadm_cmd_param_str
    - dump_find_test
    - dump_find_name
    - struct doveadm_cmd_dump*::cmd
    linkageType: ''
    returnType: void
    signature: void cmd_dump(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:92,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:97,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:98,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:101,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:107,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:108,1
    - Dst: fwrite
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:109,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:110,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:112,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:118,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:118,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:120,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - cctx
    - path
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 121
    functionName: cmd_dump_multiplex
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump.c
    functionUses: 0
    functionsReached:
    - printf
    - i_stream_create_file
    - i_stream_create_multiplex
    - i_stream_skip
    - e_error
    - fwrite
    - i_stream_get_error
    - i_stream_unref
    - i_stream_read_more
    - i_stream_multiplex_add_channel
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_multiplex(struct doveadm_cmd_context *cctx,\n\t\t   const
      char *path, const char *const *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:145,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:146,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:147,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 149
    functionName: print_dump_types
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump.c
    functionUses: 1
    functionsReached:
    - N_ELEMENTS
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_dump_types(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:155,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:155,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:156,1
    - Dst: doveadm_dump_register
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 158
    functionName: doveadm_dump_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - doveadm_dump_register
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_dump_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/doveadm-dump.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: doveadm_dump_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void doveadm_dump_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:40,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:43,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:47,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:49,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:51,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:53,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:55,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:56,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:61,1
    - Dst: mail_search_args_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:63,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:64,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:66,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:68,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 7
    argNames:
    - ctx
    - info
    - search_args
    - wanted_fields
    - wanted_headers
    - flags
    - iter_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_info*
    - struct mail_search_args*
    - enum mail_fetch_field
    - char**
    - enum doveadm_mail_iter_flags
    - struct doveadm_mail_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 23
    functionDepth: 11
    functionLinenumber: 23
    functionLinenumberEnd: 71
    functionName: doveadm_mail_iter_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 2
    functionsReached:
    - mailbox_free
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mailbox_header_lookup_unref
    - mail_search_args_init
    - mailbox_sync
    - e_error
    - mailbox_header_lookup_init
    - mailbox_alloc
    - i_new
    - mailbox_search_init
    - i_free
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_iter_init(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \  const struct mailbox_info *info,\n\t\t\t   struct mail_search_args *search_args,\n\t\t\t
      \  enum mail_fetch_field wanted_fields,\n\t\t\t   const char *const *wanted_headers,\n\t\t\t
      \  enum doveadm_mail_iter_flags flags,\n\t\t\t   struct doveadm_mail_iter **iter_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:80,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:81,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:83,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:84,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:91,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:92,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:94,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:95,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:99,1
    - Dst: mail_search_args_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - iter
    - commit
    argTypes:
    - struct doveadm_mail_iter*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 73
    functionDepth: 3
    functionLinenumber: 73
    functionLinenumberEnd: 103
    functionName: doveadm_mail_iter_deinit_transaction
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_transaction_rollback
    - mail_search_args_deinit
    - e_error
    - mailbox_search_deinit
    - mailbox_transaction_commit
    - mailbox_get_vname
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_iter_deinit_transaction(struct doveadm_mail_iter
      *iter,\n\t\t\t\t     bool commit)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_deinit_transaction
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:114,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:116,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:118,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:120,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:121,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:125,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:131,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:132,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - _iter
    - sync
    - commit
    - keep_box
    argTypes:
    - struct doveadm_mail_iter**
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 105
    functionDepth: 11
    functionLinenumber: 105
    functionLinenumberEnd: 134
    functionName: doveadm_mail_iter_deinit_full
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_get_last_internal_error
    - mailbox_sync
    - e_error
    - doveadm_mail_iter_deinit_transaction
    - mailbox_get_vname
    - i_free
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_iter_deinit_full(struct doveadm_mail_iter **_iter,\n\t\t\t
      \     bool sync, bool commit, bool keep_box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_deinit_full
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct doveadm_mail_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 12
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: doveadm_mail_iter_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_iter_deinit_full
    linkageType: ''
    returnType: int
    signature: int doveadm_mail_iter_deinit(struct doveadm_mail_iter **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_deinit_full
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct doveadm_mail_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 12
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: doveadm_mail_iter_deinit_sync
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 1
    functionsReached:
    - doveadm_mail_iter_deinit_full
    linkageType: ''
    returnType: int
    signature: int doveadm_mail_iter_deinit_sync(struct doveadm_mail_iter **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_deinit_full
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - iter
    - box_r
    argTypes:
    - struct doveadm_mail_iter**
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 12
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: doveadm_mail_iter_deinit_keep_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 1
    functionsReached:
    - doveadm_mail_iter_deinit_full
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_iter_deinit_keep_box(struct doveadm_mail_iter **iter,\n\t\t\t\t
      \     struct mailbox **box_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_deinit_full
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct doveadm_mail_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 153
    functionDepth: 12
    functionLinenumber: 153
    functionLinenumberEnd: 156
    functionName: doveadm_mail_iter_deinit_rollback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_iter_deinit_full
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_iter_deinit_rollback(struct doveadm_mail_iter **_iter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_is_killed
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:163,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-iter.c:172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - iter
    - mail_r
    argTypes:
    - struct doveadm_mail_iter*
    - struct mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 173
    functionName: doveadm_mail_iter_next
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 3
    functionsReached:
    - mailbox_search_next
    - doveadm_is_killed
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_mail_iter_next(struct doveadm_mail_iter *iter,\n\t\t\t
      \   struct mail **mail_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct doveadm_mail_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: doveadm_mail_iter_get_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-iter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mailbox
    signature: struct mailbox *doveadm_mail_iter_get_mailbox(struct doveadm_mail_iter
      *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: doveadm_die
    functionSourceFile: /src/dovecot/src/doveadm/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_die(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/main.c:41,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/doveadm/main.c:45,1
    - Dst: master_service_connection_get_type
      Src: /src/dovecot/src/doveadm/main.c:46,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/main.c:47,1
    - Dst: client_connection_http_create
      Src: /src/dovecot/src/doveadm/main.c:48,1
    - Dst: client_connection_tcp_create
      Src: /src/dovecot/src/doveadm/main.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 54
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/doveadm/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_error
    - client_connection_http_create
    - master_service_connection_get_type
    - client_connection_tcp_create
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/main.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct doveadm_cmd_ver2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: help_ver2
    functionSourceFile: /src/dovecot/src/doveadm/main.c
    functionUses: 7
    functionsReached:
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void help_ver2(const struct doveadm_cmd_ver2 *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/doveadm/main.c:64,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/doveadm/main.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: main_preinit
    functionSourceFile: /src/dovecot/src/doveadm/main.c
    functionUses: 6
    functionsReached:
    - restrict_access_by_env
    - restrict_access_allow_coredumps
    linkageType: ''
    returnType: void
    signature: void main_preinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/main.c:73,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/doveadm/main.c:73,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/doveadm/main.c:74,1
    - Dst: http_server_init_auto
      Src: /src/dovecot/src/doveadm/main.c:75,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/main.c:76,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/main.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 68
    functionDepth: 3
    functionLinenumber: 68
    functionLinenumberEnd: 79
    functionName: doveadm_http_server_init
    functionSourceFile: /src/dovecot/src/doveadm/main.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - i_fatal
    - settings_event_add_filter_name
    - master_service_get_event
    - http_server_init_auto
    linkageType: ''
    returnType: void
    signature: void doveadm_http_server_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmds_init
      Src: /src/dovecot/src/doveadm/main.c:85,1
    - Dst: doveadm_register_auth_server_commands
      Src: /src/dovecot/src/doveadm/main.c:86,1
    - Dst: doveadm_dump_init
      Src: /src/dovecot/src/doveadm/main.c:87,1
    - Dst: doveadm_mail_init
      Src: /src/dovecot/src/doveadm/main.c:88,1
    - Dst: dict_drivers_register_builtin
      Src: /src/dovecot/src/doveadm/main.c:89,1
    - Dst: doveadm_load_modules
      Src: /src/dovecot/src/doveadm/main.c:90,1
    - Dst: doveadm_read_settings
      Src: /src/dovecot/src/doveadm/main.c:93,1
    - Dst: doveadm_mail_init_finish
      Src: /src/dovecot/src/doveadm/main.c:95,1
    - Dst: doveadm_load_modules
      Src: /src/dovecot/src/doveadm/main.c:98,1
    - Dst: doveadm_http_server_init
      Src: /src/dovecot/src/doveadm/main.c:100,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/main.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 81
    functionDepth: 7
    functionLinenumber: 81
    functionLinenumberEnd: 103
    functionName: main_init
    functionSourceFile: /src/dovecot/src/doveadm/main.c
    functionUses: 13
    functionsReached:
    - doveadm_register_auth_server_commands
    - doveadm_load_modules
    - dict_drivers_register_builtin
    - doveadm_cmds_init
    - doveadm_http_server_init
    - process_title_set
    - doveadm_read_settings
    - doveadm_dump_init
    - doveadm_mail_init
    - doveadm_mail_init_finish
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_server_deinit
      Src: /src/dovecot/src/doveadm/main.c:107,1
    - Dst: http_server_deinit
      Src: /src/dovecot/src/doveadm/main.c:108,1
    - Dst: doveadm_mail_deinit
      Src: /src/dovecot/src/doveadm/main.c:109,1
    - Dst: doveadm_dump_deinit
      Src: /src/dovecot/src/doveadm/main.c:110,1
    - Dst: doveadm_unload_modules
      Src: /src/dovecot/src/doveadm/main.c:111,1
    - Dst: dict_drivers_unregister_builtin
      Src: /src/dovecot/src/doveadm/main.c:112,1
    - Dst: doveadm_print_deinit
      Src: /src/dovecot/src/doveadm/main.c:113,1
    - Dst: doveadm_cmds_deinit
      Src: /src/dovecot/src/doveadm/main.c:114,1
    - Dst: doveadm_settings_deinit
      Src: /src/dovecot/src/doveadm/main.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 116
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/doveadm/main.c
    functionUses: 18
    functionsReached:
    - doveadm_cmds_deinit
    - http_server_deinit
    - doveadm_mail_deinit
    - doveadm_server_deinit
    - doveadm_settings_deinit
    - doveadm_unload_modules
    - doveadm_dump_deinit
    - doveadm_print_deinit
    - dict_drivers_unregister_builtin
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/doveadm/main.c:124,1
    - Dst: master_getopt
      Src: /src/dovecot/src/doveadm/main.c:126,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/doveadm/main.c:137,1
    - Dst: main_preinit
      Src: /src/dovecot/src/doveadm/main.c:138,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/doveadm/main.c:139,1
    - Dst: main_init
      Src: /src/dovecot/src/doveadm/main.c:141,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/doveadm/main.c:142,1
    - Dst: master_service_run
      Src: /src/dovecot/src/doveadm/main.c:143,1
    - Dst: main_deinit
      Src: /src/dovecot/src/doveadm/main.c:145,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/doveadm/main.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 148
    functionName: main
    functionSourceFile: /src/dovecot/src/doveadm/main.c
    functionUses: 9
    functionsReached:
    - master_service_set_die_callback
    - main_init
    - master_service_run
    - main_deinit
    - master_service_init_finish
    - main_preinit
    - master_getopt
    - master_service_init
    - master_service_deinit
    - master_service_init_log
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/doveadm/client-connection.c:17,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/doveadm/client-connection.c:22,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection.c:24,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - set
    - cmd_name
    argTypes:
    - struct doveadm_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 29
    functionName: doveadm_client_is_allowed_command
    functionSourceFile: /src/dovecot/src/doveadm/client-connection.c
    functionUses: 1
    functionsReached:
    - array_is_empty
    - settings_boollist_get
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_client_is_allowed_command(const struct doveadm_settings
      *set,\n\t\t\t\t       const char *cmd_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/doveadm/client-connection.c:37,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: client_connection_read_settings
    functionSourceFile: /src/dovecot/src/doveadm/client-connection.c
    functionUses: 0
    functionsReached:
    - e_error
    - settings_get
    linkageType: ''
    returnType: int
    signature: int client_connection_read_settings(struct client_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection.c:50,1
    - Dst: net_getsockname
      Src: /src/dovecot/src/doveadm/client-connection.c:55,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/doveadm/client-connection.c:56,1
    - Dst: net_getpeername
      Src: /src/dovecot/src/doveadm/client-connection.c:57,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/doveadm/client-connection.c:58,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/client-connection.c:60,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/doveadm/client-connection.c:62,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/client-connection.c:65,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/client-connection.c:65,1
    - Dst: client_connection_read_settings
      Src: /src/dovecot/src/doveadm/client-connection.c:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - conn
    - type
    - pool
    - fd
    argTypes:
    - struct client_connection*
    - enum doveadm_client_type
    - pool_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 68
    functionName: client_connection_init
    functionSourceFile: /src/dovecot/src/doveadm/client-connection.c
    functionUses: 2
    functionsReached:
    - p_strdup
    - net_getsockname
    - net_getpeername
    - event_add_ip
    - i_set_failure_prefix
    - net_ip2addr
    - i_assert
    - client_connection_read_settings
    linkageType: ''
    returnType: int
    signature: "int client_connection_init(struct client_connection *conn,\n\tenum
      doveadm_client_type type, pool_t pool, int fd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct client_connection*::free
      Src: /src/dovecot/src/doveadm/client-connection.c:77,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/doveadm/client-connection.c:80,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/client-connection.c:83,1
    - Dst: settings_free
      Src: /src/dovecot/src/doveadm/client-connection.c:85,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/client-connection.c:86,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/client-connection.c:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 70
    functionDepth: 3
    functionLinenumber: 70
    functionLinenumberEnd: 88
    functionName: client_connection_destroy
    functionSourceFile: /src/dovecot/src/doveadm/client-connection.c
    functionUses: 2
    functionsReached:
    - event_unref
    - struct client_connection*::free
    - settings_free
    - pool_unref
    - process_title_set
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void client_connection_destroy(struct client_connection **_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/client-connection.c:99,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/client-connection.c:101,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/client-connection.c:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - text
    argTypes:
    - struct client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 103
    functionName: client_connection_set_proctitle
    functionSourceFile: /src/dovecot/src/doveadm/client-connection.c
    functionUses: 1
    functionsReached:
    - process_title_set
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void client_connection_set_proctitle(struct client_connection *conn,\n\t\t\t\t
      \    const char *text)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_connection_destroy
      Src: /src/dovecot/src/doveadm/client-connection.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: doveadm_server_deinit
    functionSourceFile: /src/dovecot/src/doveadm/client-connection.c
    functionUses: 1
    functionsReached:
    - client_connection_destroy
    linkageType: ''
    returnType: void
    signature: void doveadm_server_deinit(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:18,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:19,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:20,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:21,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:27,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:29,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:31,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:32,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:38,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:39,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:45,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mutf7.c:45,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 47
    functionName: cmd_mailbox_mutf7
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mutf7.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - printf
    - doveadm_cmd_param_array
    - help_ver2
    - imap_utf8_to_utf7
    - e_error
    - imap_utf7_to_utf8
    - str_truncate
    - doveadm_cmd_param_bool
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_mutf7(struct doveadm_cmd_context *cctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:44,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:46,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:47,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:48,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:53,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:54,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:58,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:60,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:61,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:62,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:68,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:73,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:74,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:77,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:79,1
    - Dst: mail_search_build_add_seqset
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:80,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:81,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:83,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:86,1
    - Dst: mail_precache
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:87,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:88,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:90,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:91,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:96,1
    - Dst: fflush
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:97,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:101,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:102,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:103,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:104,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:105,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:108,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:109,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:110,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:111,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 2
    argNames:
    - dctx
    - box
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 31
    functionDepth: 8
    functionLinenumber: 31
    functionLinenumberEnd: 115
    functionName: cmd_index_box_precache_real
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - mailbox_get_seq_range
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - printf
    - mail_precache
    - mailbox_search_deinit
    - mailbox_get_status
    - e_error
    - mail_search_build_init
    - mailbox_get_vname
    - mailbox_search_init
    - mail_get_last_internal_error
    - mailbox_transaction_commit
    - mailbox_get_metadata
    - e_info
    - fflush
    - mail_search_build_add_seqset
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: int
    signature: "int cmd_index_box_precache_real(struct doveadm_mail_cmd_context *dctx,\n\t\t\t\t
      \      struct mailbox *box)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:123,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:124,1
    - Dst: struct mailbox*::virtual_vfuncs::get_virtual_backend_boxes
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:125,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:128,1
    - Dst: cmd_index_box_precache
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dctx
    - box
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 132
    functionName: cmd_index_box_precache_virtual
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - struct mailbox*::virtual_vfuncs::get_virtual_backend_boxes
    - t_array_init
    - ARRAY_TYPE
    - cmd_index_box_precache
    linkageType: ''
    returnType: int
    signature: "int cmd_index_box_precache_virtual(struct doveadm_mail_cmd_context
      *dctx,\n\t\t\t\t\t  struct mailbox *box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_index_box_precache_real
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:138,1
    - Dst: cmd_index_box_precache_virtual
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dctx
    - box
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 9
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: cmd_index_box_precache
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 1
    functionsReached:
    - cmd_index_box_precache_real
    - cmd_index_box_precache_virtual
    linkageType: ''
    returnType: int
    signature: "int cmd_index_box_precache(struct doveadm_mail_cmd_context *dctx,\n\t\t\t\t
      \ struct mailbox *box)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:150,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:156,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:157,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:159,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:160,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:161,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:165,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:167,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:172,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:173,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:174,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:175,1
    - Dst: cmd_index_box_precache
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:178,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:179,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:183,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct index_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 142
    functionDepth: 11
    functionLinenumber: 142
    functionLinenumberEnd: 185
    functionName: cmd_index_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_open
    - mailbox_get_last_internal_error
    - mailbox_sync
    - e_error
    - mailbox_alloc
    - mailbox_get_open_status
    - cmd_index_box_precache
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: int cmd_index_box(struct index_cmd_context *ctx, const struct mailbox_info
      *info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:191,1
    - Dst: doveadm_blocking_connect
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:200,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct index_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 203
    functionName: index_queue_connect
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - doveadm_blocking_connect
    - i_fatal
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void index_queue_connect(struct index_cmd_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: index_queue_connect
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:209,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:210,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:213,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:215,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:216,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:217,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:218,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:219,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:220,1
    - Dst: str_data
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:220,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:220,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:221,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:222,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:223,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:226,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:227,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:228,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:230,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - user
    - mailbox
    argTypes:
    - struct index_cmd_context*
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 232
    functionName: cmd_index_queue
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_new
    - str_printfa
    - str_append_c
    - index_queue_connect
    - str_data
    - str_len
    - o_stream_get_error
    - i_fatal
    - i_stream_read_next_line
    - i_stream_get_error
    - str_append_tabescaped
    - o_stream_nsend
    - o_stream_flush
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void cmd_index_queue(struct index_cmd_context *ctx,\n\t\t\t    struct
      mail_user *user, const char *mailbox)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:239,1
    - Dst: cmd_index_queue
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:254,1
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:258,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:260,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:263,1
    - Dst: cmd_index_queue
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:264,1
    - Dst: cmd_index_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:266,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 235
    functionDepth: 12
    functionLinenumber: 235
    functionLinenumberEnd: 270
    functionName: cmd_index_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - container_of
    - mailbox_list_iter_next
    - if
    - cmd_index_queue
    - mailbox_list_iter_init_namespaces
    - cmd_index_box
    linkageType: ''
    returnType: int
    signature: int cmd_index_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:284,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:286,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:287,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:289,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:290,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:295,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:296,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 280
    functionDepth: 2
    functionLinenumber: 280
    functionLinenumberEnd: 297
    functionName: cmd_index_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - strchr
    - container_of
    - doveadm_cmd_param_uint32
    - doveadm_cmd_param_array
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    linkageType: ''
    returnType: void
    signature: void cmd_index_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:302,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:304,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 306
    functionName: cmd_index_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void cmd_index_deinit(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-index.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 317
    functionName: cmd_index_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-index.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_index_alloc(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-master.c:27,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:31,1
    - Dst: read
      Src: /src/dovecot/src/doveadm/doveadm-master.c:34,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-master.c:37,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:39,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/doveadm/doveadm-master.c:45,1
    - Dst: getpid
      Src: /src/dovecot/src/doveadm/doveadm-master.c:48,1
    - Dst: kill
      Src: /src/dovecot/src/doveadm/doveadm-master.c:49,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-master.c:52,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - path
    - pid_r
    - event
    argTypes:
    - char*
    - pid_t*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 54
    functionName: pid_file_read
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 1
    functionsReached:
    - getpid
    - str_to_pid
    - i_close_fd
    - i_fatal
    - open
    - read
    - e_error
    - kill
    linkageType: ''
    returnType: bool
    signature: bool pid_file_read(const char *path, pid_t *pid_r, struct event *event)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-master.c:62,1
    - Dst: pid_file_read
      Src: /src/dovecot/src/doveadm/doveadm-master.c:65,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:66,1
    - Dst: kill
      Src: /src/dovecot/src/doveadm/doveadm-master.c:68,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:69,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-master.c:69,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/doveadm/doveadm-master.c:75,1
    - Dst: kill
      Src: /src/dovecot/src/doveadm/doveadm-master.c:76,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-master.c:78,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - signo
    - event
    argTypes:
    - int
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 85
    functionName: doveadm_master_send_signal
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 1
    functionsReached:
    - dec2str
    - i_fatal
    - i_sleep_msecs
    - e_error
    - kill
    - t_strconcat
    - pid_file_read
    linkageType: ''
    returnType: void
    signature: void doveadm_master_send_signal(int signo, struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_master_send_signal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: cmd_stop
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 0
    functionsReached:
    - doveadm_master_send_signal
    linkageType: ''
    returnType: void
    signature: void cmd_stop(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_master_send_signal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: cmd_reload
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 0
    functionsReached:
    - doveadm_master_send_signal
    linkageType: ''
    returnType: void
    signature: void cmd_reload(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-master.c:101,1
    - Dst: doveadm_blocking_connect
      Src: /src/dovecot/src/doveadm/doveadm-master.c:111,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-master.c:113,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-master.c:113,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/doveadm/doveadm-master.c:114,1
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/doveadm-master.c:115,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-master.c:115,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-master.c:116,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-master.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - cmd
    - input_r
    - error_r
    argTypes:
    - char*
    - struct istream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 121
    functionName: master_service_send_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 1
    functionsReached:
    - doveadm_blocking_connect
    - o_stream_get_error
    - o_stream_unref
    - t_strdup
    - i_stream_unref
    - o_stream_flush
    - o_stream_nsend_str
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int master_service_send_cmd(const char *cmd, struct istream **input_r,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_send_cmd
      Src: /src/dovecot/src/doveadm/doveadm-master.c:128,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 131
    functionName: master_service_send_cmd_or_fatal
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - master_service_send_cmd
    linkageType: ''
    returnType: struct istream
    signature: struct istream *master_service_send_cmd_or_fatal(const char *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-master.c:136,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-master.c:138,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-master.c:141,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-master.c:142,1
    - Dst: master_service_send_cmd_or_fatal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:145,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-master.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: master_service_send_cmd_with_args
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_append_tabescaped
    - master_service_send_cmd_or_fatal
    - str_append
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      master_service_send_cmd_with_args(const char *cmd, const char *const *args)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-master.c:152,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:153,1
    - Dst: master_service_send_cmd_with_args
      Src: /src/dovecot/src/doveadm/doveadm-master.c:156,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-master.c:158,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-master.c:159,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-master.c:160,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-master.c:160,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-master.c:161,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-master.c:165,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-master.c:167,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-master.c:168,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-master.c:171,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-master.c:172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 148
    functionDepth: 4
    functionLinenumber: 148
    functionLinenumberEnd: 173
    functionName: cmd_service_stop
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 0
    functionsReached:
    - i_stream_destroy
    - alarm
    - i_fatal
    - doveadm_cmd_param_array
    - i_stream_read_next_line
    - e_error
    - i_stream_get_error
    - i_stream_get_name
    - master_service_send_cmd_with_args
    linkageType: ''
    returnType: void
    signature: void cmd_service_stop(struct doveadm_cmd_context *cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-master.c:180,1
    - Dst: master_service_send_cmd_or_fatal
      Src: /src/dovecot/src/doveadm/doveadm-master.c:184,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-master.c:186,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:187,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:188,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:189,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:190,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:191,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:192,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:193,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:194,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:195,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:196,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:197,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:198,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:199,1
    - Dst: doveadm_print_get_headers_count
      Src: /src/dovecot/src/doveadm/doveadm-master.c:200,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-master.c:202,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-master.c:203,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-master.c:207,1
    - Dst: str_array_find
      Src: /src/dovecot/src/doveadm/doveadm-master.c:210,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-master.c:213,1
    - Dst: doveadm_print_empty
      Src: /src/dovecot/src/doveadm/doveadm-master.c:214,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 217
    functionName: cmd_service_status
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    - doveadm_print_empty
    - t_strsplit_tabescaped
    - doveadm_print_init
    - doveadm_cmd_param_array
    - alarm
    - i_stream_read_next_line
    - doveadm_print_get_headers_count
    - master_service_send_cmd_or_fatal
    - doveadm_print_header_simple
    - str_array_find
    linkageType: ''
    returnType: void
    signature: void cmd_service_status(struct doveadm_cmd_context *cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-master.c:231,1
    - Dst: master_service_send_cmd_with_args
      Src: /src/dovecot/src/doveadm/doveadm-master.c:235,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-master.c:237,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:238,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:239,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:240,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:241,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:242,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:243,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-master.c:244,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-master.c:246,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-master.c:247,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-master.c:251,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-master.c:252,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-master.c:254,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 227
    functionDepth: 4
    functionLinenumber: 227
    functionLinenumberEnd: 257
    functionName: cmd_process_status
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-master.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    - t_strsplit_tabescaped
    - doveadm_print_init
    - doveadm_cmd_param_array
    - alarm
    - str_array_length
    - i_stream_read_next_line
    - doveadm_print_header_simple
    - master_service_send_cmd_with_args
    linkageType: ''
    returnType: void
    signature: void cmd_process_status(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:31,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:37,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:39,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:40,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:41,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:42,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:43,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - line
    - line_r
    argTypes:
    - char*
    - struct penalty_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 44
    functionName: penalty_parse_line
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-penalty.c
    functionUses: 0
    functionsReached:
    - i_zero
    - net_addr2ip
    - t_strsplit_tabescaped
    - str_to_time
    - i_fatal
    - str_to_uint
    linkageType: ''
    returnType: void
    signature: void penalty_parse_line(const char *line, struct penalty_line *line_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_is_in_network
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:51,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:55,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:55,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:56,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:56,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:57,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:57,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:58,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - line
    argTypes:
    - struct penalty_context*
    - struct penalty_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 59
    functionName: penalty_print_line
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-penalty.c
    functionUses: 0
    functionsReached:
    - dec2str
    - doveadm_print
    - net_ip2addr
    - net_is_in_network
    - t_strflocaltime
    - unixdate2str
    linkageType: ''
    returnType: void
    signature: "void penalty_print_line(struct penalty_context *ctx,\n\t\t   const
      struct penalty_line *line)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_connect
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:69,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:70,1
    - Dst: write
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:71,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:71,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:72,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:74,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:75,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:76,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:77,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:78,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:80,1
    - Dst: penalty_parse_line
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:86,1
    - Dst: penalty_print_line
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:87,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct penalty_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 89
    functionName: penalty_lookup
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-penalty.c
    functionUses: 1
    functionsReached:
    - penalty_parse_line
    - strlen
    - i_fatal
    - write
    - i_stream_read_next_line
    - doveadm_connect
    - i_stream_create_fd_autoclose
    - version_string_verify
    - net_set_nonblock
    - penalty_print_line
    linkageType: ''
    returnType: void
    signature: void penalty_lookup(struct penalty_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:103,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:104,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:105,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:107,1
    - Dst: net_parse_range
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:108,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:110,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:115,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:116,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:117,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:118,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:119,1
    - Dst: penalty_lookup
      Src: /src/dovecot/src/doveadm/doveadm-penalty.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 122
    functionName: cmd_penalty
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-penalty.c
    functionUses: 0
    functionsReached:
    - i_zero
    - doveadm_print_init
    - doveadm_cmd_param_str
    - e_error
    - penalty_lookup
    - net_parse_range
    - doveadm_print_header_simple
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void cmd_penalty(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:12,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:12,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cctx
    - name
    - expected
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 13
    functionName: assert_param_bool
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - test_assert_cmp
    - doveadm_cmd_param_flag
    linkageType: ''
    returnType: void
    signature: "void assert_param_bool(struct doveadm_cmd_context *cctx, const char
      *name,\n\t\t  bool expected)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:20,1
    - Dst: test_failed
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:22,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:22,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:26,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - name
    - expected
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 27
    functionName: assert_param_str
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - t_strdup_printf
    - test_failed
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: "void assert_param_str(struct doveadm_cmd_context *cctx, const char
      *name,\n\t\t const char* expected)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:34,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:36,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:37,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:42,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:45,1
    - Dst: doveadm_cmdline_run
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:47,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:48,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:50,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:51,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - name
    - expected_rc
    - assertfn
    - cmd
    - argv
    argTypes:
    - char*
    - int
    - doveadm_command_ver2_t
    - struct doveadm_cmd_ver2*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 29
    functionDepth: 3
    functionLinenumber: 29
    functionLinenumberEnd: 53
    functionName: test_case
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - t_new
    - event_create
    - event_unref
    - test_expect_errors
    - str_array_length
    - test_end
    - test_assert_cmp
    - doveadm_cmdline_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_case(const char *name, int expected_rc,\n                      doveadm_command_ver2_t
      assertfn,\n\t\t      struct doveadm_cmd_ver2 *cmd,const char **argv )"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:99,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: assert_no_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    linkageType: ''
    returnType: void
    signature: void assert_no_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:105,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: assert_1_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    linkageType: ''
    returnType: void
    signature: void assert_1_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:111,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: assert_2_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    linkageType: ''
    returnType: void
    signature: void assert_2_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:117,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:118,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: assert_3_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    linkageType: ''
    returnType: void
    signature: void assert_3_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:124,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: assert_kv1_in_pos12
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    linkageType: ''
    returnType: void
    signature: void assert_kv1_in_pos12(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:130,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:131,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 133
    functionName: assert_kv3_in_pos23
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    linkageType: ''
    returnType: void
    signature: void assert_kv3_in_pos23(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:137,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: assert_key12
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    linkageType: ''
    returnType: void
    signature: void assert_key12(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:143,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 145
    functionName: assert_key34
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    linkageType: ''
    returnType: void
    signature: void assert_key34(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_1_pos_args
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:149,1
    - Dst: assert_key12
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 151
    functionName: assert_key12_1_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_key12
    - assert_1_pos_args
    linkageType: ''
    returnType: void
    signature: void assert_key12_1_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_2_pos_args
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:155,1
    - Dst: assert_key12
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: assert_key12_2_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_key12
    - assert_2_pos_args
    linkageType: ''
    returnType: void
    signature: void assert_key12_2_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_2_pos_args
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:161,1
    - Dst: assert_key12
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:162,1
    - Dst: assert_key34
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 164
    functionName: assert_key1234_2_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_key34
    - assert_key12
    - assert_2_pos_args
    linkageType: ''
    returnType: void
    signature: void assert_key1234_2_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_bool
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:168,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 170
    functionName: assert_no_switch12
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    - assert_param_bool
    linkageType: ''
    returnType: void
    signature: void assert_no_switch12(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_param_bool
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:174,1
    - Dst: assert_param_str
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: assert_switch12
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_param_str
    - assert_param_bool
    linkageType: ''
    returnType: void
    signature: void assert_switch12(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_no_pos_args
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:180,1
    - Dst: assert_no_switch12
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 4
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: assert_no_switch_no_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_no_switch12
    - assert_no_pos_args
    linkageType: ''
    returnType: void
    signature: void assert_no_switch_no_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_1_pos_args
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:186,1
    - Dst: assert_no_switch12
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 4
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: assert_no_switch_1_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_1_pos_args
    - assert_no_switch12
    linkageType: ''
    returnType: void
    signature: void assert_no_switch_1_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_1_pos_args
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:192,1
    - Dst: assert_switch12
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 4
    functionLinenumber: 190
    functionLinenumberEnd: 194
    functionName: assert_switch12_1_pos_args
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - assert_switch12
    - assert_1_pos_args
    linkageType: ''
    returnType: void
    signature: void assert_switch12_1_pos_args(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_failed
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: assert_not_execd
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - test_failed
    linkageType: ''
    returnType: void
    signature: void assert_not_execd(struct doveadm_cmd_context *cctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 202
    functionName: line
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 253
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: line(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:205,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:206,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:207,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:208,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:209,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:210,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:211,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 203
    functionDepth: 4
    functionLinenumber: 203
    functionLinenumberEnd: 213
    functionName: test_posargs
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - line
    - test_case
    linkageType: ''
    returnType: void
    signature: void test_posargs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:217,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:218,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:219,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:220,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:221,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:222,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:223,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:224,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:227,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:228,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:231,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:232,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:234,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:235,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:236,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:237,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:239,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:240,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:241,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 215
    functionDepth: 4
    functionLinenumber: 215
    functionLinenumberEnd: 243
    functionName: test_kvargs
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - line
    - test_case
    linkageType: ''
    returnType: void
    signature: void test_kvargs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:247,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:248,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:249,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:250,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:251,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:252,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:253,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:254,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:255,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 257
    functionName: test_kvpos
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - line
    - test_case
    linkageType: ''
    returnType: void
    signature: void test_kvpos(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:261,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:262,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:263,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:264,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:265,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:266,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:267,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:268,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:269,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:270,1
    - Dst: test_case
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:271,1
    - Dst: line
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 273
    functionName: test_switches
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - line
    - test_case
    linkageType: ''
    returnType: void
    signature: void test_switches(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 283
    functionDepth: 7
    functionLinenumber: 283
    functionLinenumberEnd: 286
    functionName: main
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-cmd-parse.c
    functionUses: 9
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:13,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:15,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:16,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:16,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:17,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:18,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:18,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:19,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:20,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:20,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:21,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:21,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:22,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:22,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:23,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:24,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:25,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:27,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:28,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:29,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:31,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:32,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:33,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:35,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:35,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:36,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:36,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:37,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:37,1
    - Dst: i_strccdascmp
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:37,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 40
    functionName: test_i_strccdascmp
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-util.c
    functionUses: 0
    functionsReached:
    - i_strccdascmp
    - test_end
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_i_strccdascmp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/doveadm/test-doveadm-util.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 7
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: main
    functionSourceFile: /src/dovecot/src/doveadm/test-doveadm-util.c
    functionUses: 9
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:22,1
    - Dst: doveadm_mail_iter_get_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:28,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:31,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:32,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:33,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:34,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:36,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:38,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:39,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:40,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:42,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:42,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 12
    functionDepth: 12
    functionLinenumber: 12
    functionLinenumberEnd: 45
    functionName: cmd_search_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-search.c
    functionUses: 1
    functionsReached:
    - dec2str
    - doveadm_mail_failed_mailbox
    - doveadm_print
    - mailbox_get_last_internal_error
    - doveadm_mail_iter_get_mailbox
    - doveadm_mail_iter_init
    - guid_128_to_string
    - e_error
    - doveadm_mail_iter_next
    - mailbox_get_vname
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int cmd_search_box(struct doveadm_mail_cmd_context *ctx,\n\t       const
      struct mailbox_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:61,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:63,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:64,1
    - Dst: cmd_search_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 66
    functionName: cmd_search_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-search.c
    functionUses: 0
    functionsReached:
    - doveadm_mailbox_list_iter_next
    - doveadm_mailbox_list_iter_init
    - if
    - cmd_search_box
    linkageType: ''
    returnType: int
    signature: int cmd_search_run(struct doveadm_mail_cmd_context *ctx, struct mail_user
      *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:77,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:78,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:79,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:81,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 85
    functionName: cmd_search_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-search.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_mail_build_search_args
    - doveadm_cmd_param_array
    - doveadm_print_header
    linkageType: ''
    returnType: void
    signature: void cmd_search_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:91,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-search.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: cmd_search_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-search.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_search_alloc(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:42,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:47,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:55,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:57,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:59,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:61,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:63,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:65,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:67,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:69,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:71,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:73,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:76,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:81,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:82,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:83,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - fields
    argTypes:
    - struct status_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 87
    functionName: status_parse_fields
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_fatal_status
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void status_parse_fields(struct status_cmd_context *ctx,\n\t\t\t\tconst
      char *const *fields)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:95,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:95,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:98,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:100,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:102,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:104,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:106,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:108,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:110,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:112,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:114,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:114,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:117,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:119,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - box
    - status
    - metadata
    argTypes:
    - struct status_cmd_context*
    - struct mailbox*
    - struct mailbox_status*
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 121
    functionName: status_output
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c
    functionUses: 0
    functionsReached:
    - guid_128_to_string
    - doveadm_print_num
    - doveadm_print
    - mailbox_get_vname
    linkageType: ''
    returnType: void
    signature: "void status_output(struct status_cmd_context *ctx, struct mailbox
      *box,\n\t      const struct mailbox_status *status,\n\t      const struct mailbox_metadata
      *metadata)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - status
    - metadata
    argTypes:
    - struct status_cmd_context*
    - struct mailbox_status*
    - struct mailbox_metadata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 134
    functionName: status_sum
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void status_sum(struct status_cmd_context *ctx,\n\t   const struct
      mailbox_status *status,\n\t   const struct mailbox_metadata *metadata)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:143,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:144,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:145,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:146,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:148,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:149,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:150,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:151,1
    - Dst: status_output
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:155,1
    - Dst: status_sum
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:157,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct status_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 136
    functionDepth: 8
    functionLinenumber: 136
    functionLinenumberEnd: 160
    functionName: status_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_failed_mailbox
    - status_output
    - mailbox_free
    - mailbox_get_last_internal_error
    - mailbox_get_status
    - e_error
    - mailbox_get_vname
    - doveadm_mailbox_find
    - mailbox_get_metadata
    - status_sum
    linkageType: ''
    returnType: int
    signature: int status_mailbox(struct status_cmd_context *ctx, const struct mailbox_info
      *info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:167,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:175,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:176,1
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:178,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:180,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:182,1
    - Dst: status_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 162
    functionDepth: 9
    functionLinenumber: 162
    functionLinenumberEnd: 185
    functionName: cmd_mailbox_status_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - status_mailbox
    - if
    - doveadm_mailbox_list_iter_next
    - doveadm_mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_status_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \      struct mail_user *user)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:200,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:202,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:205,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:207,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:208,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:209,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:213,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:214,1
    - Dst: status_parse_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:216,1
    - Dst: doveadm_mail_mailbox_search_args_build
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:217,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:220,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:224,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:226,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:228,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:230,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:232,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:234,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:236,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:238,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:240,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:242,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 196
    functionDepth: 4
    functionLinenumber: 196
    functionLinenumberEnd: 243
    functionName: cmd_mailbox_status_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print_header
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    - doveadm_print_header_simple
    - t_strsplit_spaces
    - doveadm_mail_mailbox_search_args_build
    - status_parse_fields
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_status_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:248,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 252
    functionName: cmd_mailbox_status_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c
    functionUses: 0
    functionsReached:
    - container_of
    - mail_search_args_unref
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_status_deinit(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:258,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 264
    functionName: cmd_mailbox_status_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-status.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_status_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 176
    functionName: doveadm_mail_cmd_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.h
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: doveadm_mail_cmd_alloc(type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:18,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:26,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:28,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:28,1
    - Dst: mail_set_attachment_keywords
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:29,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:31,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:32,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:36,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:39,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:42,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 11
    functionDepth: 12
    functionLinenumber: 11
    functionLinenumberEnd: 45
    functionName: cmd_rebuild_attachment_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c
    functionUses: 0
    functionsReached:
    - dec2str
    - doveadm_print
    - i_unreached
    - doveadm_mail_iter_init
    - mail_set_attachment_keywords
    - doveadm_mail_iter_next
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_rebuild_attachment_box(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \  const struct mailbox_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:63,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:65,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:66,1
    - Dst: cmd_rebuild_attachment_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 52
    functionDepth: 13
    functionLinenumber: 52
    functionLinenumberEnd: 68
    functionName: cmd_rebuild_attachment_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c
    functionUses: 0
    functionsReached:
    - doveadm_mailbox_list_iter_next
    - cmd_rebuild_attachment_box
    - doveadm_mailbox_list_iter_init
    - if
    linkageType: ''
    returnType: int
    signature: "int cmd_rebuild_attachment_run(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \  struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:79,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:80,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:81,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:83,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: cmd_rebuild_attachment_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_mail_build_search_args
    - doveadm_cmd_param_array
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_rebuild_attachment_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:92,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: cmd_rebuild_attachment_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-rebuild.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_rebuild_attachment_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:120,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - ioloop
    argTypes:
    - struct dsync_cmd_context*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 123
    functionName: dsync_cmd_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - o_stream_switch_ioloop_to
    - i_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: "void dsync_cmd_switch_ioloop_to(struct dsync_cmd_context *ctx,\n\t\t\t\t
      \      struct ioloop *ioloop)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:131,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:133,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:135,1
    - Dst: doveadm_log_type_from_char
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:138,1
    - Dst: i_log_type
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:142,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:146,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:149,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:152,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:155,1
    - Dst: doveadm_log_type_from_char
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:160,1
    - Dst: i_log_type
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:164,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dsync_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 171
    functionName: remote_error_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - io_remove
    - i_stream_next_line
    - i_log_type
    - i_stream_get_data
    - i_stream_skip
    - doveadm_log_type_from_char
    - fprintf
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: void remote_error_input(struct dsync_cmd_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:179,1
    - Dst: pipe
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:181,1
    - Dst: pipe
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:181,1
    - Dst: pipe
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:181,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:182,1
    - Dst: fork
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:184,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:187,1
    - Dst: dup2
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:191,1
    - Dst: dup2
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:192,1
    - Dst: dup2
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:193,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:194,1
    - Dst: doveadm_settings_get_config_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:200,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:201,1
    - Dst: env_put
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:202,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:202,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:204,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:205,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:206,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:207,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:208,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:209,1
    - Dst: execvp_const
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:211,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:217,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:218,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:219,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:226,1
    - Dst: write_full
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:227,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:227,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:228,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:231,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:232,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:233,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - args
    argTypes:
    - struct dsync_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 234
    functionName: run_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 1
    functionsReached:
    - env_put
    - fork
    - dec2str
    - i_stream_create_fd
    - dup2
    - fd_close_on_exec
    - p_strarray_dup
    - doveadm_settings_get_config_fd
    - i_close_fd
    - write_full
    - i_fatal
    - t_strdup_printf
    - strlen
    - fd_set_nonblock
    - execvp_const
    - i_stream_set_return_partial_line
    - pipe
    linkageType: ''
    returnType: void
    signature: void run_cmd(struct dsync_cmd_context *ctx, const char *const *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:240,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:244,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:246,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:249,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:252,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:261,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:262,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:263,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - argv
    - cmd_args_r
    argTypes:
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 264
    functionName: mirror_get_remote_cmd_line
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_push_back
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void mirror_get_remote_cmd_line(const char *const *argv,\n\t\t\t   const
      char *const **cmd_args_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:280,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:284,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:285,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:295,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:296,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:297,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:298,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:300,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:306,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:307,1
    - Dst: var_expand
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:308,1
    - Dst: var_expand
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:309,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:310,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:314,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:314,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:314,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:315,1
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:317,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:317,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:319,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:321,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:322,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 323
    functionName: get_ssh_cmd_args
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strchr
    - t_str_new
    - strcmp
    - str_c
    - str_len
    - array_push_back
    - array_front
    - t_strsplit
    - e_error
    - t_array_init
    - str_truncate
    - t_malloc_no0
    - ARRAY_TYPE
    - array_append_zero
    - t_strdup
    - var_expand
    linkageType: ''
    returnType: char
    signature: "char *const *\nget_ssh_cmd_args(const char *host, const char *login,
      const char *mail_user,\n\t\t struct event *event)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mirror_get_remote_cmd_line
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:335,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:342,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:349,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:349,1
    - Dst: mirror_get_remote_cmd_line
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:353,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:353,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:359,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:361,1
    - Dst: get_ssh_cmd_args
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:367,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - user
    - event
    - cmd_args_r
    argTypes:
    - struct dsync_cmd_context*
    - char*
    - struct event*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 369
    functionName: mirror_get_remote_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - get_ssh_cmd_args
    - mirror_get_remote_cmd_line
    - strchr
    - i_isalnum
    - t_strsplit
    - t_strdup_until
    linkageType: ''
    returnType: bool
    signature: "bool mirror_get_remote_cmd(struct dsync_cmd_context *ctx,\n\t\t\t\t
      \ const char *user,\n\t\t\t\t  struct event *event,\n\t\t\t\t  const char *const
      **cmd_args_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_memdup
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:376,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ns
    - ns_sep
    argTypes:
    - struct mail_namespace*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 380
    functionName: doveadm_update_escape_char
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - p_memdup
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void doveadm_update_escape_char(struct mail_namespace *ns, char ns_sep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespaces_get_root_sep
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:385,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:390,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:391,1
    - Dst: doveadm_update_escape_char
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 402
    functionName: doveadm_user_init_dsync
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - mail_namespaces_get_root_sep
    - p_new
    - doveadm_update_escape_char
    linkageType: ''
    returnType: void
    signature: void doveadm_user_init_dsync(struct mail_user *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:410,1
    - Dst: mailbox_list_get_root_path
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:411,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - ns1
    - ns2
    - type
    argTypes:
    - struct mail_namespace*
    - struct mail_namespace*
    - enum mailbox_list_path_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 413
    functionName: paths_are_equal
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_list_get_root_path
    linkageType: ''
    returnType: bool
    signature: "bool paths_are_equal(struct mail_namespace *ns1, struct mail_namespace
      *ns2,\n\t\tenum mailbox_list_path_type type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:422,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:424,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:425,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:427,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:443,1
    - Dst: mail_namespace_find_inbox
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - user
    - ns_r
    argTypes:
    - struct dsync_cmd_context*
    - struct mail_user*
    - struct mail_namespace**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 415
    functionDepth: 4
    functionLinenumber: 415
    functionLinenumberEnd: 449
    functionName: get_dsync_verify_namespace
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - mail_namespace_find
    - e_error
    - array_count
    - array_idx_elem
    - mail_namespace_find_inbox
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int get_dsync_verify_namespace(struct dsync_cmd_context *ctx,\n\t\t\t
      \  struct mail_user *user, struct mail_namespace **ns_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:467,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:468,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:469,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:474,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:476,1
    - Dst: mail_storage_service_user_dup
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:483,1
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:485,1
    - Dst: mail_storage_2nd_settings_reset
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:486,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:489,1
    - Dst: settings_override
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:490,1
    - Dst: settings_override
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:493,1
    - Dst: settings_override
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:495,1
    - Dst: mail_storage_service_next
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:498,1
    - Dst: mail_storage_service_user_unref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:500,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:502,1
    - Dst: doveadm_user_init_dsync
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:507,1
    - Dst: get_dsync_verify_namespace
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:509,1
    - Dst: get_dsync_verify_namespace
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:510,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:512,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:512,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:513,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:517,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:518,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:520,1
    - Dst: paths_are_equal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:523,1
    - Dst: paths_are_equal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:524,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:525,1
    - Dst: mailbox_list_get_root_forced
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:529,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:533,1
    - Dst: dsync_brain_slave_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:537,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:540,1
    - Dst: dsync_brain_has_failed
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:545,1
    - Dst: dsync_brain_has_failed
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:546,1
    - Dst: doveadm_is_killed
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:548,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:551,1
    - Dst: dsync_brain_run
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:552,1
    - Dst: dsync_brain_run
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:553,1
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:555,1
    - Dst: dsync_brain_get_unexpected_changes_reason
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:555,1
    - Dst: dsync_brain_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:556,1
    - Dst: doveadm_is_killed
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:558,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 6
    argNames:
    - ctx
    - user
    - brain
    - ibc2
    - changes_during_sync_r
    - mail_error_r
    argTypes:
    - struct dsync_cmd_context*
    - struct mail_user*
    - struct dsync_brain*
    - struct dsync_ibc*
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 451
    functionDepth: 5
    functionLinenumber: 451
    functionLinenumberEnd: 559
    functionName: cmd_dsync_run_local
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - strchr
    - mail_namespace_get_sep
    - mail_user_deinit
    - mailbox_list_get_root_forced
    - dsync_brain_run
    - t_split_key_value_eq
    - settings_override
    - t_strdup
    - mail_storage_service_user_unref
    - paths_are_equal
    - dsync_brain_slave_init
    - doveadm_is_killed
    - mail_storage_service_user_dup
    - mail_storage_service_user_get_settings_instance
    - e_error
    - dsync_brain_get_unexpected_changes_reason
    - i_assert
    - mail_user_unref
    - get_dsync_verify_namespace
    - mail_storage_service_next
    - i_set_failure_prefix
    - dsync_brain_has_failed
    - doveadm_user_init_dsync
    - t_strdup_until
    - dsync_brain_deinit
    - mail_storage_2nd_settings_reset
    linkageType: ''
    returnType: int
    signature: "int cmd_dsync_run_local(struct dsync_cmd_context *ctx, struct mail_user
      *user,\n\t\t    struct dsync_brain *brain, struct dsync_ibc *ibc2,\n\t\t    const
      char **changes_during_sync_r,\n\t\t    enum mail_error *mail_error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - status
    - ctx
    argTypes:
    - struct child_wait_status*
    - struct dsync_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 567
    functionName: cmd_dsync_remote_exited
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void cmd_dsync_remote_exited(const struct child_wait_status *status,\n\t\t\t\t
      \   struct dsync_cmd_context *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:576,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:578,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:579,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:582,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:585,1
    - Dst: kill
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:587,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:588,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dsync_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 569
    functionDepth: 2
    functionLinenumber: 569
    functionLinenumberEnd: 593
    functionName: cmd_dsync_wait_remote
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - mail_storage_service_io_activate_user
    - e_error
    - kill
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void cmd_dsync_wait_remote(struct dsync_cmd_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: WIFSIGNALED
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:601,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:602,1
    - Dst: WTERMSIG
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:604,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:605,1
    - Dst: WIFEXITED
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:606,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:607,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:609,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:610,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:613,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:614,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:616,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:617,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - status
    - remote_errors_logged
    - remote_cmd_args
    - event
    argTypes:
    - int
    - bool
    - char**
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 619
    functionName: cmd_dsync_log_remote_status
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - WIFEXITED
    - WEXITSTATUS
    - WIFSIGNALED
    - t_strarray_join
    - WTERMSIG
    - e_error
    linkageType: ''
    returnType: void
    signature: "void cmd_dsync_log_remote_status(int status, bool remote_errors_logged,\n\t\t\t\t\tconst
      char *const *remote_cmd_args,\n\t\t\t\t\tstruct event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:623,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 625
    functionName: cmd_dsync_run_remote
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - io_loop_run
    - i_set_failure_prefix
    linkageType: ''
    returnType: void
    signature: void cmd_dsync_run_remote(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:632,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:634,1
    - Dst: get_ssh_cmd_args
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 627
    functionDepth: 3
    functionLinenumber: 627
    functionLinenumberEnd: 640
    functionName: parse_ssh_location
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - get_ssh_cmd_args
    - t_strdup_until
    - strrchr
    linkageType: ''
    returnType: char
    signature: 'char *const *

      parse_ssh_location(const char *location, const char *username, struct event
      *event)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:647,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:648,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:649,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:650,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:652,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:653,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:654,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:655,1
    - Dst: o_stream_get_max_buffer_size
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:656,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:657,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:658,1
    - Dst: iostream_rawlog_create_path
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:661,1
    - Dst: dsync_ibc_init_stream
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:664,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - name
    - temp_prefix
    argTypes:
    - struct dsync_cmd_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 666
    functionName: cmd_dsync_ibc_stream_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - i_stream_create_fd
    - i_stream_get_fd
    - fd_set_nonblock
    - o_stream_get_fd
    - i_stream_get_max_buffer_size
    - dsync_ibc_init_stream
    - iostream_rawlog_create_path
    - o_stream_get_max_buffer_size
    - i_stream_set_max_buffer_size
    - i_assert
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: struct dsync_ibc
    signature: "struct dsync_ibc *\ncmd_dsync_ibc_stream_init(struct dsync_cmd_context
      *ctx,\n\t\t\t  const char *name, const char *temp_prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: remote_error_input
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:673,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:675,1
    - Dst: cmd_dsync_log_remote_status
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:676,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:678,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:679,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dsync_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 680
    functionName: dsync_errors_finish
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - io_remove
    - i_close_fd
    - remote_error_input
    - cmd_dsync_log_remote_status
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void dsync_errors_finish(struct dsync_cmd_context *ctx)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:687,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:700,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:703,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:704,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:711,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:718,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:724,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:729,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:730,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:732,1
    - Dst: doveadm_user_init_dsync
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:734,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:736,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:736,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:737,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:738,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:740,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:744,1
    - Dst: dsync_ibc_init_pipe
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:748,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:750,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:751,1
    - Dst: cmd_dsync_ibc_stream_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:752,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:753,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:755,1
    - Dst: child_wait_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:784,1
    - Dst: dsync_brain_master_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:785,1
    - Dst: cmd_dsync_run_local
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:790,1
    - Dst: child_wait_new_with_pid
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:795,1
    - Dst: cmd_dsync_run_remote
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:799,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:801,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:806,1
    - Dst: dsync_brain_get_state
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:807,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:808,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:808,1
    - Dst: dsync_brain_get_unexpected_changes_reason
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:811,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:814,1
    - Dst: e_warning
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:821,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:823,1
    - Dst: dsync_brain_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:826,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:834,1
    - Dst: dsync_ibc_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:836,1
    - Dst: dsync_ibc_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:838,1
    - Dst: dsync_errors_finish
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:840,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:841,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:843,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:844,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:847,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:848,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:852,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:853,1
    - Dst: cmd_dsync_wait_remote
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:860,1
    - Dst: dsync_errors_finish
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:861,1
    - Dst: child_wait_free
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:864,1
    - Dst: child_wait_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:865,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 125
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 682
    functionDepth: 6
    functionLinenumber: 682
    functionLinenumberEnd: 867
    functionName: cmd_dsync_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - str_c
    - o_stream_unref
    - t_strdup_printf
    - array_count
    - dsync_ibc_init_pipe
    - array_front
    - dsync_brain_master_init
    - doveadm_mail_failed_error
    - memcpy
    - t_str_new
    - child_wait_init
    - child_wait_deinit
    - i_close_fd
    - i_fatal
    - cmd_dsync_wait_remote
    - e_warning
    - net_ip2addr
    - cmd_dsync_run_local
    - t_strsplit_spaces
    - dsync_errors_finish
    - i_stream_set_max_buffer_size
    - child_wait_free
    - i_zero
    - io_add_istream
    - dsync_brain_get_state
    - mail_storage_service_io_activate_user
    - ssl_iostream_destroy
    - e_error
    - dsync_brain_get_unexpected_changes_reason
    - o_stream_set_max_buffer_size
    - container_of
    - mail_namespace_find
    - child_wait_new_with_pid
    - mail_user_set_get_temp_prefix
    - array_push_back
    - cmd_dsync_ibc_stream_init
    - doveadm_print
    - e_debug
    - cmd_dsync_run_remote
    - array_foreach
    - dsync_ibc_deinit
    - doveadm_user_init_dsync
    - t_array_init
    - dsync_brain_deinit
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int cmd_dsync_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_extract
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:877,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:880,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:886,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:893,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:899,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct doveadm_server_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 869
    functionDepth: 1
    functionLinenumber: 869
    functionLinenumberEnd: 900
    functionName: dsync_connected_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - p_strdup_printf
    - doveadm_client_extract
    linkageType: ''
    returnType: void
    signature: "void dsync_connected_callback(const struct doveadm_server_reply *reply,\n\t\t\t\t
      \    void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:907,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:909,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:910,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:911,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:912,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:913,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:914,1
    - Dst: doveadm_client_cmd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:921,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:921,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:923,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - conn
    argTypes:
    - struct dsync_cmd_context*
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 902
    functionDepth: 1
    functionLinenumber: 902
    functionLinenumberEnd: 925
    functionName: dsync_server_run_command
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - doveadm_client_cmd
    - str_append_tabescaped
    - str_append
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: "void dsync_server_run_command(struct dsync_cmd_context *ctx,\n\t\t\t\t
      \    struct doveadm_client *conn)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:936,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:937,1
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:940,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:942,1
    - Dst: net_str2port
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:945,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:946,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:958,1
    - Dst: dsync_cmd_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:959,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:962,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:962,1
    - Dst: doveadm_client_create
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:965,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:966,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:970,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:970,1
    - Dst: dsync_server_run_command
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:974,1
    - Dst: doveadm_client_unref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:975,1
    - Dst: doveadm_clients_destroy_all
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:978,1
    - Dst: dsync_cmd_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:980,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:981,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 4
    argNames:
    - ctx
    - target
    - ssl
    - error_r
    argTypes:
    - struct dsync_cmd_context*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 927
    functionDepth: 2
    functionLinenumber: 927
    functionLinenumberEnd: 990
    functionName: dsync_connect_tcp
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strchr
    - p_strdup_until
    - doveadm_client_create
    - strrchr
    - dsync_cmd_switch_ioloop_to
    - t_strdup_printf
    - io_loop_destroy
    - io_loop_create
    - doveadm_client_unref
    - doveadm_clients_destroy_all
    - dsync_server_run_command
    - process_title_set
    - p_strdup_printf
    - net_str2port
    linkageType: ''
    returnType: int
    signature: "int dsync_connect_tcp(struct dsync_cmd_context *ctx,\n\t\t  const
      char *target, bool ssl, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:999,1
    - Dst: dsync_connect_tcp
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1001,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1003,1
    - Dst: dsync_connect_tcp
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1005,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1008,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1010,1
    - Dst: parse_ssh_location
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1020,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - location
    - remote_cmd_args_r
    - error_r
    argTypes:
    - struct dsync_cmd_context*
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 992
    functionDepth: 4
    functionLinenumber: 992
    functionLinenumberEnd: 1022
    functionName: parse_location
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - str_begins
    - dsync_connect_tcp
    - parse_ssh_location
    linkageType: ''
    returnType: int
    signature: "int parse_location(struct dsync_cmd_context *ctx,\n\t       const
      char *location,\n\t       const char *const **remote_cmd_args_r, const char
      **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1031,1
    - Dst: mirror_get_remote_cmd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1047,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1049,1
    - Dst: parse_location
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1050,1
    - Dst: run_cmd
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1058,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1064,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - _ctx
    - service_user ATTR_UNUSED
    - error_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_storage_service_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1024
    functionDepth: 5
    functionLinenumber: 1024
    functionLinenumberEnd: 1066
    functionName: cmd_dsync_prerun
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - container_of
    - mirror_get_remote_cmd
    - parse_location
    - i_fatal
    - doveadm_mail_help_name
    - run_cmd
    linkageType: ''
    returnType: int
    signature: "int cmd_dsync_prerun(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      struct mail_storage_service_user *service_user ATTR_UNUSED,\n\t\t const char
      **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1071,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1074,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1075,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1076,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1078,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1068
    functionDepth: 1
    functionLinenumber: 1068
    functionLinenumberEnd: 1079
    functionName: cmd_dsync_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_mail_help_name
    - array_count
    - lib_signals_ignore
    - array_append_zero
    linkageType: ''
    returnType: void
    signature: void cmd_dsync_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1085,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1090,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1093,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1095,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1098,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1102,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1103,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1104,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1105,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1108,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1111,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1113,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1114,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1117,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1119,1
    - Dst: doveadm_cmd_param_array_append
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1126,1
    - Dst: doveadm_cmd_param_array_append
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1128,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1132,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1133,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1134,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1135,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1137,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1142,1
    - Dst: mail_parse_human_timestamp
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1143,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1145,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1146,1
    - Dst: mail_parse_human_timestamp
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1147,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1149,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1150,1
    - Dst: str_parse_get_size
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1151,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1152,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1154,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1156,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1159,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 47
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1081
    functionDepth: 2
    functionLinenumber: 1081
    functionLinenumberEnd: 1164
    functionName: cmd_dsync_preinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - str_parse_get_size
    - strchr
    - doveadm_cmd_param_array_append
    - container_of
    - doveadm_cmd_param_uint32
    - mail_parse_human_timestamp
    - i_fatal
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - imap_parse_system_flag
    - guid_128_from_string
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: void cmd_dsync_preinit(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1170,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1177,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1178,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1180,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1166
    functionDepth: 1
    functionLinenumber: 1166
    functionLinenumberEnd: 1188
    functionName: cmd_dsync_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - p_array_init
    - doveadm_print_header
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_dsync_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_dsync_alloc
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1192,1
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1190
    functionDepth: 2
    functionLinenumber: 1190
    functionLinenumberEnd: 1198
    functionName: cmd_dsync_backup_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - container_of
    - cmd_dsync_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_dsync_backup_alloc(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1206,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1221,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1222,1
    - Dst: o_stream_set_finish_also_parent
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1223,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1224,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1225,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1226,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1230,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1231,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1236,1
    - Dst: doveadm_user_init_dsync
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1240,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1242,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1243,1
    - Dst: cmd_dsync_ibc_stream_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1245,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1245,1
    - Dst: dsync_brain_slave_init
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1246,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1250,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1252,1
    - Dst: dsync_brain_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1254,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1255,1
    - Dst: dsync_ibc_deinit
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1256,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1261,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1263,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1200
    functionDepth: 3
    functionLinenumber: 1200
    functionLinenumberEnd: 1267
    functionName: cmd_dsync_server_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - str_c
    - o_stream_unref
    - i_stream_ref
    - t_strdup_printf
    - doveadm_mail_failed_error
    - io_loop_run
    - t_str_new
    - o_stream_set_finish_also_parent
    - dsync_brain_slave_init
    - o_stream_nsend
    - net_ip2addr
    - i_stream_get_name
    - o_stream_close
    - mail_storage_service_io_activate_user
    - container_of
    - mail_user_set_get_temp_prefix
    - cmd_dsync_ibc_stream_init
    - dsync_ibc_deinit
    - i_set_failure_prefix
    - o_stream_ref
    - doveadm_user_init_dsync
    - dsync_brain_deinit
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: "int cmd_dsync_server_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \    struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1274,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1276,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1269
    functionDepth: 1
    functionLinenumber: 1269
    functionLinenumberEnd: 1278
    functionName: cmd_dsync_server_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_str
    - doveadm_cmd_param_uint32
    linkageType: ''
    returnType: void
    signature: void cmd_dsync_server_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-dsync.c:1284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1280
    functionDepth: 1
    functionLinenumber: 1280
    functionLinenumberEnd: 1293
    functionName: cmd_dsync_server_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dsync.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_dsync_server_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:134,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:135,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:136,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:137,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:138,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:139,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:139,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:140,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:141,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:141,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:142,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:143,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:144,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:145,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:146,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:147,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:148,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:149,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:151,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:152,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:154,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:155,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:158,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:158,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:159,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:159,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:161,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:161,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:162,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 164
    functionName: dump_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    - unixdate2str
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_hdr(struct mail_index *index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:173,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:177,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:180,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:180,1
    - Dst: memchr
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:187,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:187,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:189,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:192,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:195,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 199
    functionName: dump_list_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - memcpy
    - CONST_PTR_OFFSET
    - memchr
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_list_header(const void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc0
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:203,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:204,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:209,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:209,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 210
    functionName: dump_box_name_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - memcpy
    - printf
    - t_malloc0
    - t_strarray_join
    - t_strsplit
    linkageType: ''
    returnType: void
    signature: void dump_box_name_header(const void *data, size_t size)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:218,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:223,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:223,1
    - Dst: MAIL_INDEX_MAP_HDR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:224,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:225,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:228,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:231,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:232,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:233,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:234,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:235,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:238,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:239,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:239,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:240,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:240,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:241,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:242,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:242,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:243,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:243,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:244,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:245,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:245,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:246,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:247,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:248,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:251,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:252,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:252,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:253,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:254,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:255,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:256,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:257,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:260,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:261,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:262,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:263,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:264,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:265,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:268,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:269,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:270,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:271,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:272,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:273,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:276,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:277,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:278,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:279,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:280,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:281,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:284,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:285,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:286,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:289,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:290,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:291,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:292,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:293,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:296,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:297,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:299,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:301,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:307,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:308,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:309,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:310,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:311,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:313,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:314,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:316,1
    - Dst: t_strndup
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:316,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:317,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:318,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:319,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:320,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:325,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:330,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:331,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:332,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:333,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:334,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:338,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:340,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:340,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:342,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:343,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:344,1
    - Dst: dump_list_header
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:345,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:346,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:347,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:348,1
    - Dst: dump_box_name_header
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:349,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:350,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:353,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:354,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:357,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:358,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 108
    argCount: 2
    argNames:
    - index
    - ext
    argTypes:
    - struct mail_index*
    - struct mail_index_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 360
    functionName: dump_extension_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - strcmp
    - memcpy
    - printf
    - t_malloc0
    - dump_list_header
    - guid_128_to_string
    - t_strndup
    - dump_box_name_header
    - binary_to_hex
    - unixdate2str
    - MALLOC_ADD
    - CONST_PTR_OFFSET
    - MAIL_INDEX_MAP_HDR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void dump_extension_header(struct mail_index *index,\n\t\t\t\t  const
      struct mail_index_ext *ext)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:367,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:368,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:372,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:379,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:380,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:381,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:382,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:383,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:384,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:385,1
    - Dst: dump_extension_header
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:387,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 389
    functionName: dump_extensions
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - dump_extension_header
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_extensions(struct mail_index *index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:398,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:399,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:402,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:406,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct mail_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 409
    functionName: dump_keywords
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - array_get
    - array_is_created
    - array_front
    - printf
    linkageType: ''
    returnType: void
    signature: void dump_keywords(struct mail_index *index)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:415,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:426,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:430,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum mail_cache_decision_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 432
    functionName: cache_decision2str
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - t_strdup_printf
    - ENUM_NEGATE
    linkageType: ''
    returnType: char
    signature: char *cache_decision2str(enum mail_cache_decision_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: CACHE_TYPE_IS_FIXED_SIZE
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CACHE_TYPE_IS_FIXED_SIZE(type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum mail_cache_field_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 453
    functionName: cache_type2str
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *cache_type2str(enum mail_cache_field_type type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:462,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:463,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:464,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:469,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:470,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:471,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:471,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:472,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:473,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:475,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:476,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:477,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:478,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:479,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:480,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:483,1
    - Dst: mail_cache_register_get_list
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:484,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:485,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:491,1
    - Dst: cache_type2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:492,1
    - Dst: CACHE_TYPE_IS_FIXED_SIZE
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:494,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:495,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:497,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:498,1
    - Dst: cache_decision2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:499,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:500,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:502,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 455
    functionDepth: 5
    functionLinenumber: 455
    functionLinenumberEnd: 503
    functionName: dump_cache_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - printf
    - cache_type2str
    - cache_decision2str
    - pool_unref
    - mail_index_offset_to_uint32
    - CACHE_TYPE_IS_FIXED_SIZE
    - mail_cache_register_get_list
    - mail_cache_open_and_verify
    - MAIL_CACHE_IS_UNUSABLE
    - unixdate2str
    linkageType: ''
    returnType: void
    signature: void dump_cache_hdr(struct mail_cache *cache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:508,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:509,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:510,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:511,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:512,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:513,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:514,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:516,1
    - Dst: dump_message_part
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:517,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:519,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - str
    - part
    argTypes:
    - string_t*
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 521
    functionName: dump_message_part
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - str_append_c
    - dump_message_part
    linkageType: ''
    returnType: void
    signature: void dump_message_part(string_t *str, const struct message_part *part)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:529,1
    - Dst: message_part_deserialize
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:531,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:531,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:533,1
    - Dst: dump_message_part
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - str
    - data
    - size
    argTypes:
    - string_t*
    - void*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 523
    functionDepth: 4
    functionLinenumber: 523
    functionLinenumberEnd: 538
    functionName: dump_cache_mime_parts
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - dump_message_part
    - pool_datastack_create
    - message_part_deserialize
    linkageType: ''
    returnType: void
    signature: void dump_cache_mime_parts(string_t *str, const void *data, unsigned
      int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_data
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:547,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - str
    - data
    - size
    argTypes:
    - string_t*
    - unsigned char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 548
    functionName: dump_cache_append_string
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - str_append_data
    linkageType: ''
    returnType: void
    signature: "void dump_cache_append_string(string_t *str, const unsigned char *data,\n\t\t\t
      unsigned int size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:555,1
    - Dst: dump_cache_append_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:556,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - str
    - data
    - size
    argTypes:
    - string_t*
    - unsigned char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 550
    functionDepth: 2
    functionLinenumber: 550
    functionLinenumberEnd: 558
    functionName: dump_cache_snippet
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - dump_cache_append_string
    linkageType: ''
    returnType: void
    signature: void dump_cache_snippet(string_t *str, const unsigned char *data, unsigned
      int size)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:571,1
    - Dst: mail_cache_lookup_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:572,1
    - Dst: mail_cache_lookup_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:573,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:575,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:585,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:586,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:591,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:592,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:595,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:596,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:601,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:601,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:602,1
    - Dst: dump_cache_mime_parts
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:603,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:604,1
    - Dst: dump_cache_snippet
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:605,1
    - Dst: dump_cache_append_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:608,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:621,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:627,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:632,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:633,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:640,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:644,1
    - Dst: fwrite
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:647,1
    - Dst: str_data
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:647,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:647,1
    - Dst: putchar
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:648,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:651,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 66
    argCount: 2
    argNames:
    - cache_view
    - seq
    argTypes:
    - struct mail_cache_view*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 560
    functionDepth: 5
    functionLinenumber: 560
    functionLinenumberEnd: 652
    functionName: dump_cache
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - dump_cache_append_string
    - str_len
    - dump_cache_mime_parts
    - CONST_PTR_OFFSET
    - putchar
    - mail_cache_lookup_iter_next
    - memcpy
    - t_str_new
    - printf
    - i_unreached
    - dump_cache_snippet
    - binary_to_hex
    - str_data
    - fwrite
    - mail_cache_lookup_iter_init
    - strcmp
    - str_truncate
    - str_append
    linkageType: ''
    returnType: void
    signature: void dump_cache(struct mail_cache_view *cache_view, unsigned int seq)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:658,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:659,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:661,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:663,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:665,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:667,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:669,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:670,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:673,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:673,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:674,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:675,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum mail_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 676
    functionName: flags2str
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 4
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - str_truncate
    - str_append
    linkageType: ''
    returnType: char
    signature: char *flags2str(enum mail_flags flags)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_view_get_index
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:680,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:688,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:689,1
    - Dst: flags2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:690,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:692,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:693,1
    - Dst: mail_index_lookup_ext
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:695,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:699,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:700,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:703,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:706,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:710,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:712,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:714,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:715,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:716,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:716,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:717,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:719,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:720,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:721,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:723,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:724,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:725,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:726,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:728,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:729,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:729,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:730,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:732,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:732,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:733,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:733,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:734,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:736,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:737,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:737,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:738,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:740,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:741,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:742,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:742,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:743,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:745,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:746,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:747,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:747,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:748,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:749,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:751,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:752,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:753,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:754,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:755,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:760,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:761,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:762,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 66
    argCount: 2
    argNames:
    - view
    - seq
    argTypes:
    - struct mail_index_view*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 765
    functionName: dump_record
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_printfa
    - printf
    - array_get
    - guid_128_to_string
    - mail_index_lookup_ext
    - mail_index_view_get_index
    - unixdate2str
    - str_truncate
    - mail_index_lookup
    - str_append
    - binary_to_hex
    - flags2str
    linkageType: ''
    returnType: void
    signature: void dump_record(struct mail_index_view *view, unsigned int seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:771,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:771,1
    - Dst: stat
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:772,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - dir
    - name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 773
    functionName: dir_has_index
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - stat
    linkageType: ''
    returnType: bool
    signature: bool dir_has_index(const char *dir, const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:780,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:780,1
    - Dst: dir_has_index
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:781,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:782,1
    - Dst: dir_has_index
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:783,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:784,1
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:787,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:788,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:788,1
    - Dst: mail_index_alloc
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:790,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 791
    functionName: path_open_index
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - mail_index_alloc
    - strrchr
    - dir_has_index
    - stat
    - S_ISDIR
    - t_strdup_until
    linkageType: ''
    returnType: struct mail_index
    signature: struct mail_index *path_open_index(const char *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: path_open_index
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:802,1
    - Dst: mail_index_open
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:804,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:805,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:807,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:808,1
    - Dst: mail_index_view_open
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:811,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:812,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:815,1
    - Dst: dump_hdr
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:816,1
    - Dst: dump_extensions
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:817,1
    - Dst: dump_keywords
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:818,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:820,1
    - Dst: dump_cache_hdr
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:821,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:823,1
    - Dst: mail_index_lookup
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:826,1
    - Dst: dump_record
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:828,1
    - Dst: dump_cache
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:829,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:830,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - path
    - args
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 793
    functionDepth: 6
    functionLinenumber: 793
    functionLinenumberEnd: 833
    functionName: cmd_dump_index
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - dump_cache_hdr
    - dump_extensions
    - dump_keywords
    - dump_record
    - printf
    - i_fatal
    - mail_index_view_open
    - dump_hdr
    - dump_cache
    - mail_index_open
    - mail_index_lookup
    - mail_cache_view_open
    - str_to_uint
    - path_open_index
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_index(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t
      \      const char *path, const char *const *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: path_open_index
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:846,1
    - Dst: mail_index_open
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:850,1
    - Dst: mail_index_close
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:852,1
    - Dst: mail_index_free
      Src: /src/dovecot/src/doveadm/doveadm-dump-index.c:853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 840
    functionDepth: 6
    functionLinenumber: 840
    functionLinenumberEnd: 855
    functionName: test_dump_index
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-index.c
    functionUses: 0
    functionsReached:
    - mail_index_open
    - path_open_index
    - mail_index_close
    - mail_index_free
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_index(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t\t
      \   const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:18,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct mail_index_strmap_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: dump_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-thread.c
    functionUses: 1
    functionsReached:
    - printf
    linkageType: ''
    returnType: size_t
    signature: size_t dump_hdr(const struct mail_index_strmap_header *hdr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_unpack_num
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:29,1
    - Dst: mail_index_unpack_num
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:33,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:35,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:43,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:46,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:48,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:50,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:52,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:53,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:54,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:56,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - p
    - end
    - uid
    argTypes:
    - uint8_t**
    - uint8_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 60
    functionName: dump_record
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-thread.c
    functionUses: 1
    functionsReached:
    - mail_index_unpack_num
    - memcpy
    - printf
    linkageType: ''
    returnType: int
    signature: int dump_record(const uint8_t **p, const uint8_t *end, uint32_t *uid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:70,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:71,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:72,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:78,1
    - Dst: dump_record
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:86,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - data
    - end
    - uid
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 92
    functionName: dump_block
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-thread.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mail_index_offset_to_uint32
    - dump_record
    - printf
    linkageType: ''
    returnType: int
    signature: int dump_block(const uint8_t *data, const uint8_t *end, uint32_t *uid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:104,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:106,1
    - Dst: fstat
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:108,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:109,1
    - Dst: mmap
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:112,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:114,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:115,1
    - Dst: dump_hdr
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:116,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:119,1
    - Dst: dump_block
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:121,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:121,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - path
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 126
    functionName: cmd_dump_thread
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-thread.c
    functionUses: 0
    functionsReached:
    - dump_block
    - mmap
    - printf
    - i_close_fd
    - i_fatal
    - open
    - dump_hdr
    - fstat
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_thread(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\tconst
      char *path, const char *const *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:133,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-thread.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: test_dump_thread
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-thread.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strrchr
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_thread(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t\t
      \    const char *path)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:29,1
    - Dst: password_schemes_register_all
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:31,1
    - Dst: password_schemes_allow_weak
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:32,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:34,1
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:40,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:41,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:43,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:44,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:45,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:46,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:47,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:49,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:50,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:53,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:56,1
    - Dst: password_schemes_get
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:57,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:58,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:60,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:61,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:62,1
    - Dst: password_schemes_deinit
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:63,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:67,1
    - Dst: t_askpass
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:70,1
    - Dst: t_askpass
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:75,1
    - Dst: t_askpass
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:76,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:77,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:78,1
    - Dst: lib_exit
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:80,1
    - Dst: password_schemes_allow_weak
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:85,1
    - Dst: password_generate_encoded
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:87,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:88,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:95,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:97,1
    - Dst: password_decode
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:101,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:103,1
    - Dst: password_verify
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:105,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:107,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:111,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:113,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:116,1
    - Dst: password_schemes_deinit
      Src: /src/dovecot/src/doveadm/doveadm-pw.c:117,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 118
    functionName: cmd_pw
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-pw.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - module_dir_load_missing
    - password_schemes_allow_weak
    - password_decode
    - doveadm_cmd_param_bool
    - printf
    - i_fatal
    - lib_exit
    - password_schemes_register_all
    - doveadm_cmd_param_flag
    - password_generate_encoded
    - i_zero
    - password_get_scheme
    - array_get
    - e_error
    - module_dir_unload
    - password_schemes_get
    - strcmp
    - doveadm_cmd_param_uint32
    - t_askpass
    - doveadm_cmd_param_str
    - t_array_init
    - ARRAY_TYPE
    - password_verify
    - password_schemes_deinit
    - module_dir_init
    linkageType: ''
    returnType: void
    signature: void cmd_pw(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:25,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:27,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:28,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 30
    functionName: cmd_mail_fs_get_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_print_header
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_mail_fs_get_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:36,1
    - Dst: doveadm_cmd_context_replace_set_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:38,1
    - Dst: doveadm_fs_get
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _cctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 32
    functionDepth: 9
    functionLinenumber: 32
    functionLinenumberEnd: 41
    functionName: cmd_mail_fs_get_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_fs_get
    - doveadm_cmd_context_replace_set_event
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_fs_get_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t
      \      struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:46,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 52
    functionName: cmd_mail_fs_get_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_fs_get_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:57,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:60,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:61,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:62,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:63,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:64,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:65,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:66,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 68
    functionName: cmd_mail_fs_put_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - container_of
    - hex_to_binary
    - i_fatal
    - t_buffer_create
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    linkageType: ''
    returnType: void
    signature: void cmd_mail_fs_put_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:74,1
    - Dst: doveadm_cmd_context_replace_set_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:76,1
    - Dst: doveadm_fs_put
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _cctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 9
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: cmd_mail_fs_put_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_put
    - container_of
    - doveadm_cmd_context_replace_set_event
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_fs_put_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t
      \      struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: cmd_mail_fs_put_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_fs_put_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:95,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:97,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:98,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 100
    functionName: cmd_mail_fs_copy_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - container_of
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_mail_fs_copy_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:106,1
    - Dst: doveadm_cmd_context_replace_set_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:108,1
    - Dst: doveadm_fs_copy
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _cctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 102
    functionDepth: 9
    functionLinenumber: 102
    functionLinenumberEnd: 111
    functionName: cmd_mail_fs_copy_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_copy
    - container_of
    - doveadm_cmd_context_replace_set_event
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_fs_copy_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\tstruct
      mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: cmd_mail_fs_copy_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_fs_copy_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:126,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:128,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:129,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:131,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 133
    functionName: cmd_mail_fs_stat_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_print_header
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_mail_fs_stat_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:139,1
    - Dst: doveadm_cmd_context_replace_set_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:141,1
    - Dst: doveadm_fs_stat
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _cctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 135
    functionDepth: 9
    functionLinenumber: 135
    functionLinenumberEnd: 144
    functionName: cmd_mail_fs_stat_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_stat
    - container_of
    - doveadm_cmd_context_replace_set_event
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_fs_stat_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\tstruct
      mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:149,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:153,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: cmd_mail_fs_stat_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_print_formatted_set_format
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_fs_stat_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:161,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:163,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:164,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:166,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 168
    functionName: cmd_mail_fs_metadata_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - container_of
    - doveadm_cmd_param_str
    - doveadm_print_header_simple
    linkageType: ''
    returnType: void
    signature: void cmd_mail_fs_metadata_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:174,1
    - Dst: doveadm_cmd_context_replace_set_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:176,1
    - Dst: doveadm_fs_metadata
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _cctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 170
    functionDepth: 9
    functionLinenumber: 170
    functionLinenumberEnd: 179
    functionName: cmd_mail_fs_metadata_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_metadata
    - container_of
    - doveadm_cmd_context_replace_set_event
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_fs_metadata_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\t
      \   struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:184,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:188,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 191
    functionName: cmd_mail_fs_metadata_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_print_formatted_set_format
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_fs_metadata_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:196,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:198,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:199,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:201,1
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: cmd_mail_fs_delete_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_array
    - doveadm_mail_help_name
    - doveadm_cmd_param_int64
    - doveadm_cmd_param_bool
    linkageType: ''
    returnType: void
    signature: void cmd_mail_fs_delete_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:209,1
    - Dst: doveadm_cmd_context_replace_set_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:211,1
    - Dst: doveadm_fs_delete_recursive
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:213,1
    - Dst: doveadm_fs_delete_paths
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - _cctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 205
    functionDepth: 9
    functionLinenumber: 205
    functionLinenumberEnd: 220
    functionName: cmd_mail_fs_delete_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_delete_recursive
    - container_of
    - doveadm_cmd_context_replace_set_event
    - doveadm_fs_delete_paths
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_fs_delete_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\t
      \ struct mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 230
    functionName: cmd_mail_fs_delete_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_fs_delete_alloc(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:235,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:238,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:239,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:243,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:245,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:248,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 249
    functionName: cmd_mail_fs_iter_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - doveadm_print_header_simple
    - doveadm_cmd_param_bool
    linkageType: ''
    returnType: void
    signature: void cmd_mail_fs_iter_init(struct doveadm_mail_cmd_context *_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:255,1
    - Dst: doveadm_cmd_context_replace_set_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:257,1
    - Dst: doveadm_fs_iter
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _cctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 251
    functionDepth: 9
    functionLinenumber: 251
    functionLinenumberEnd: 260
    functionName: cmd_mail_fs_iter_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_fs_iter
    - container_of
    - doveadm_cmd_context_replace_set_event
    linkageType: ''
    returnType: int
    signature: "int cmd_mail_fs_iter_run(struct doveadm_mail_cmd_context *_cctx,\n\t\t\t\tstruct
      mail_user *user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:266,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:271,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - iter_flags
    argTypes:
    - enum fs_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 274
    functionName: cmd_mail_fs_iter_alloc_full
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_print_formatted_set_format
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_mail_fs_iter_alloc_full(enum fs_iter_flags iter_flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_mail_fs_iter_alloc_full
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 279
    functionName: cmd_mail_fs_iter_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - cmd_mail_fs_iter_alloc_full
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_fs_iter_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_mail_fs_iter_alloc_full
      Src: /src/dovecot/src/doveadm/doveadm-mail-fs.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: cmd_mail_fs_iter_dirs_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fs.c
    functionUses: 0
    functionsReached:
    - cmd_mail_fs_iter_alloc_full
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mail_fs_iter_dirs_alloc(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: search_args_get_mailbox_patterns
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:43,1
    - Dst: array_clear
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:54,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:57,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 4
    argNames:
    - args
    - patterns
    - have_guid
    - have_wildcards
    argTypes:
    - struct mail_search_arg*
    - ARRAY_TYPE*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 67
    functionName: search_args_get_mailbox_patterns
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c
    functionUses: 1
    functionsReached:
    - search_args_get_mailbox_patterns
    - array_clear
    - array_push_back
    linkageType: ''
    returnType: bool
    signature: "bool search_args_get_mailbox_patterns(const struct mail_search_arg
      *args,\n\t\t\t\t ARRAY_TYPE(const_string) *patterns,\n\t\t\t\t bool *have_guid,
      bool *have_wildcards)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:80,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:84,1
    - Dst: search_args_get_mailbox_patterns
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:85,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:89,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:95,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:106,1
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:110,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 5
    argNames:
    - ctx
    - user
    - search_args
    - iter_flags
    - ns_mask
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    - struct mail_search_args*
    - enum mailbox_list_iter_flags
    - enum mail_namespace_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 69
    functionDepth: 8
    functionLinenumber: 69
    functionLinenumberEnd: 114
    functionName: doveadm_mailbox_list_iter_init_nsmask
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_push_back
    - search_args_get_mailbox_patterns
    - array_count
    - mailbox_list_iter_init_namespaces
    - i_new
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: struct doveadm_mailbox_list_iter
    signature: "struct doveadm_mailbox_list_iter *\ndoveadm_mailbox_list_iter_init_nsmask(struct
      doveadm_mail_cmd_context *ctx,\n\t\t\t\t      struct mail_user *user,\n\t\t\t\t
      \     struct mail_search_args *search_args,\n\t\t\t\t      enum mailbox_list_iter_flags
      iter_flags,\n\t\t\t\t      enum mail_namespace_type ns_mask)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_list_iter_init_nsmask
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ctx
    - user
    - search_args
    - iter_flags
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    - struct mail_search_args*
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 9
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: doveadm_mailbox_list_iter_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c
    functionUses: 7
    functionsReached:
    - doveadm_mailbox_list_iter_init_nsmask
    linkageType: ''
    returnType: struct doveadm_mailbox_list_iter
    signature: "struct doveadm_mailbox_list_iter *\ndoveadm_mailbox_list_iter_init(struct
      doveadm_mail_cmd_context *ctx,\n\t\t\t       struct mail_user *user,\n\t\t\t
      \      struct mail_search_args *search_args,\n\t\t\t       enum mailbox_list_iter_flags
      iter_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_list_iter_init_nsmask
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - user
    - search_args
    - iter_flags
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    - struct mail_search_args*
    - enum mailbox_list_iter_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 128
    functionDepth: 9
    functionLinenumber: 128
    functionLinenumberEnd: 141
    functionName: doveadm_mailbox_list_iter_full_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c
    functionUses: 1
    functionsReached:
    - doveadm_mailbox_list_iter_init_nsmask
    linkageType: ''
    returnType: struct doveadm_mailbox_list_iter
    signature: "struct doveadm_mailbox_list_iter *\ndoveadm_mailbox_list_iter_full_init(struct
      doveadm_mail_cmd_context *ctx,\n\t\t\t\t    struct mail_user *user,\n\t\t\t\t
      \   struct mail_search_args *search_args,\n\t\t\t\t    enum mailbox_list_iter_flags
      iter_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:153,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:154,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:156,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:158,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:160,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct doveadm_mailbox_list_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 163
    functionName: doveadm_mailbox_list_iter_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c
    functionUses: 2
    functionsReached:
    - mailbox_list_get_last_internal_error
    - mailbox_list_iter_deinit
    - e_error
    - doveadm_mail_failed_error
    - i_free
    - array_free
    linkageType: ''
    returnType: int
    signature: int doveadm_mailbox_list_iter_deinit(struct doveadm_mailbox_list_iter
      **_iter)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:173,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:178,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:183,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:184,1
    - Dst: mail_search_args_match_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c:192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct doveadm_mailbox_list_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 165
    functionDepth: 8
    functionLinenumber: 165
    functionLinenumberEnd: 197
    functionName: doveadm_mailbox_list_iter_next
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mailbox-list-iter.c
    functionUses: 8
    functionsReached:
    - mail_namespace_get_sep
    - mail_namespace_find
    - array_get
    - mailbox_list_iter_next
    - mail_search_args_match_mailbox
    linkageType: ''
    returnType: struct mailbox_info
    signature: 'struct mailbox_info *

      doveadm_mailbox_list_iter_next(struct doveadm_mailbox_list_iter *iter)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:44,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct doveadm_cmd_ver2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: doveadm_cmd_register_ver2
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd.c
    functionUses: 9
    functionsReached:
    - array_push_back
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_register_ver2(struct doveadm_cmd_ver2 *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:53,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 58
    functionName: doveadm_cmd_find_ver2
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach
    linkageType: ''
    returnType: struct doveadm_cmd_ver2
    signature: struct doveadm_cmd_ver2 *doveadm_cmd_find_ver2(const char *cmd_name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:73,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:75,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:80,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:82,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:85,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 3
    argNames:
    - cmd_name
    - argc
    - argv
    argTypes:
    - char*
    - int*
    - char**[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 105
    functionName: doveadm_cmdline_find_with_args
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    - array_foreach
    - strncmp
    - i_assert
    linkageType: ''
    returnType: struct doveadm_cmd_ver2
    signature: "struct doveadm_cmd_ver2 *\ndoveadm_cmdline_find_with_args(const char
      *cmd_name, int *argc,\n\t\t\t       const char *const *argv[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:111,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:113,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:114,1
    - Dst: doveadm_register_instance_commands
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:116,1
    - Dst: doveadm_register_log_commands
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:117,1
    - Dst: doveadm_register_dict_commands
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:118,1
    - Dst: doveadm_register_fs_commands
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 120
    functionName: doveadm_cmds_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - doveadm_register_log_commands
    - doveadm_register_fs_commands
    - doveadm_register_instance_commands
    - doveadm_register_dict_commands
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_cmds_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: doveadm_cmds_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd.c
    functionUses: 1
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void doveadm_cmds_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:131,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:139,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - argc
    - argv
    - cctx
    argTypes:
    - int
    - char*[]
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 144
    functionName: doveadm_cmdline_check_for_help_request
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void doveadm_cmdline_check_for_help_request(int argc, const char *const
      argv[],\n\t\t\t\t       struct doveadm_cmd_context *cctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmdline_check_for_help_request
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:152,1
    - Dst: doveadm_cmdline_find_with_args
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:153,1
    - Dst: doveadm_cmdline_run
      Src: /src/dovecot/src/doveadm/doveadm-cmd.c:160,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - cmd_name
    - argc
    - argv
    - cctx
    argTypes:
    - char*
    - int
    - char*[]
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 163
    functionName: doveadm_cmdline_try_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd.c
    functionUses: 0
    functionsReached:
    - doveadm_cmdline_check_for_help_request
    - doveadm_cmdline_find_with_args
    - doveadm_cmdline_run
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmdline_try_run(const char *cmd_name,\n\t\t\t     int
      argc, const char *const argv[],\n\t\t\t     struct doveadm_cmd_context *cctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-util.c:32,1
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/doveadm/doveadm-util.c:38,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/doveadm/doveadm-util.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 41
    functionName: doveadm_load_modules
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 1
    functionsReached:
    - i_zero
    - module_dir_init
    - module_dir_load_missing
    linkageType: ''
    returnType: void
    signature: void doveadm_load_modules(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_unload
      Src: /src/dovecot/src/doveadm/doveadm-util.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: doveadm_unload_modules
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 1
    functionsReached:
    - module_dir_unload
    linkageType: ''
    returnType: void
    signature: void doveadm_unload_modules(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-util.c:54,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-util.c:59,1
    - Dst: module_get_plugin_name
      Src: /src/dovecot/src/doveadm/doveadm-util.c:59,1
    - Dst: opendir
      Src: /src/dovecot/src/doveadm/doveadm-util.c:63,1
    - Dst: readdir
      Src: /src/dovecot/src/doveadm/doveadm-util.c:67,1
    - Dst: module_file_get_name
      Src: /src/dovecot/src/doveadm/doveadm-util.c:68,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-util.c:69,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/doveadm-util.c:71,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-util.c:73,1
    - Dst: closedir
      Src: /src/dovecot/src/doveadm/doveadm-util.c:78,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 80
    functionName: doveadm_has_unloaded_plugin
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 0
    functionsReached:
    - strcmp
    - readdir
    - module_get_plugin_name
    - opendir
    - str_begins
    - strlen
    - module_file_get_name
    - closedir
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool doveadm_has_unloaded_plugin(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/doveadm/doveadm-util.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: unixdate2str
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 7
    functionsReached:
    - t_strflocaltime
    linkageType: ''
    returnType: char
    signature: char *unixdate2str(time_t timestamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strfgmtime
      Src: /src/dovecot/src/doveadm/doveadm-util.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - timestamp
    - tz_mins
    argTypes:
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: unixdate2tzstr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 0
    functionsReached:
    - t_strfgmtime
    linkageType: ''
    returnType: char
    signature: char *unixdate2tzstr(time_t timestamp, int tz_mins)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-util.c:99,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/doveadm/doveadm-util.c:100,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-util.c:102,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/doveadm/doveadm-util.c:103,1
    - Dst: net_connect_ip_blocking
      Src: /src/dovecot/src/doveadm/doveadm-util.c:105,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-util.c:107,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-util.c:108,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-util.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - host
    - port
    argTypes:
    - char*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 112
    functionName: doveadm_tcp_connect_port
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 0
    functionsReached:
    - net_connect_ip_blocking
    - alarm
    - i_fatal
    - net_gethostbyname
    - net_gethosterror
    - net_ip2addr
    linkageType: ''
    returnType: int
    signature: int doveadm_tcp_connect_port(const char *host, in_port_t port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_str2hostport
      Src: /src/dovecot/src/doveadm/doveadm-util.c:119,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-util.c:120,1
    - Dst: doveadm_tcp_connect_port
      Src: /src/dovecot/src/doveadm/doveadm-util.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - target
    - default_port
    argTypes:
    - char*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 124
    functionName: doveadm_tcp_connect
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 0
    functionsReached:
    - doveadm_tcp_connect_port
    - i_fatal
    - net_str2hostport
    linkageType: ''
    returnType: int
    signature: int doveadm_tcp_connect(const char *target, in_port_t default_port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-util.c:133,1
    - Dst: doveadm_tcp_connect
      Src: /src/dovecot/src/doveadm/doveadm-util.c:134,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/doveadm/doveadm-util.c:136,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-util.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - path
    - default_port
    argTypes:
    - char*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 141
    functionName: doveadm_connect_with_default_port
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 0
    functionsReached:
    - doveadm_tcp_connect
    - strchr
    - net_connect_unix
    - i_fatal
    linkageType: ''
    returnType: int
    signature: "int doveadm_connect_with_default_port(const char *path,\n\t\t\t\t
      \     in_port_t default_port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_connect_with_default_port
      Src: /src/dovecot/src/doveadm/doveadm-util.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: doveadm_connect
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 2
    functionsReached:
    - doveadm_connect_with_default_port
    linkageType: ''
    returnType: int
    signature: int doveadm_connect(const char *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: net_connect_unix
      Src: /src/dovecot/src/doveadm/doveadm-util.c:156,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-util.c:158,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-util.c:162,1
    - Dst: o_stream_create_fd_blocking
      Src: /src/dovecot/src/doveadm/doveadm-util.c:163,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/doveadm/doveadm-util.c:164,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-util.c:168,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-util.c:171,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/doveadm/doveadm-util.c:174,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/doveadm/doveadm-util.c:175,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-util.c:177,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-util.c:178,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-util.c:179,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-util.c:180,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/doveadm/doveadm-util.c:182,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-util.c:184,1
    - Dst: alarm
      Src: /src/dovecot/src/doveadm/doveadm-util.c:190,1
    - Dst: o_stream_ignore_last_errors
      Src: /src/dovecot/src/doveadm/doveadm-util.c:193,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-util.c:194,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-util.c:195,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 5
    argNames:
    - path
    - set
    - input_r
    - output_r
    - error_r
    argTypes:
    - char*
    - struct connection_settings*
    - struct istream**
    - struct ostream**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 198
    functionName: doveadm_blocking_connect
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 3
    functionsReached:
    - o_stream_ignore_last_errors
    - net_connect_unix
    - o_stream_set_name
    - i_stream_set_name
    - alarm
    - t_strdup_printf
    - o_stream_create_fd_blocking
    - i_stream_read_next_line
    - i_stream_get_error
    - i_stream_create_fd_autoclose
    - version_string_verify
    - o_stream_nsend_str
    - net_set_nonblock
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int doveadm_blocking_connect(const char *path,\n\t\t\t     const struct
      connection_settings *set,\n\t\t\t     struct istream **input_r,\n\t\t\t     struct
      ostream **output_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_killed
      Src: /src/dovecot/src/doveadm/doveadm-util.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: doveadm_is_killed
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 3
    functionsReached:
    - master_service_is_killed
    linkageType: ''
    returnType: bool
    signature: bool doveadm_is_killed(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_toupper
      Src: /src/dovecot/src/doveadm/doveadm-util.c:209,1
    - Dst: i_toupper
      Src: /src/dovecot/src/doveadm/doveadm-util.c:212,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 220
    functionName: i_strccdascmp
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-util.c
    functionUses: 3
    functionsReached:
    - i_toupper
    linkageType: ''
    returnType: int
    signature: int i_strccdascmp(const char *a, const char *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:25,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:26,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:27,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:28,1
    - Dst: event_add_category
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:29,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:31,1
    - Dst: event_ref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - conn_type
    - forced_debug
    argTypes:
    - enum doveadm_client_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 38
    functionName: doveadm_cmd_context_create
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 1
    functionsReached:
    - event_set_forced_debug
    - pool_alloconly_create
    - event_create
    - p_new
    - event_ref
    - event_set_append_log_prefix
    - event_add_category
    linkageType: ''
    returnType: struct doveadm_cmd_context
    signature: 'struct doveadm_cmd_context *

      doveadm_cmd_context_create(enum doveadm_client_type conn_type, bool forced_debug)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:45,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:46,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct doveadm_cmd_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: doveadm_cmd_context_unref
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 1
    functionsReached:
    - event_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_context_unref(struct doveadm_cmd_context **_cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:53,1
    - Dst: event_ref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cctx
    - set_event
    argTypes:
    - struct doveadm_cmd_context*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: doveadm_cmd_context_replace_set_event
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 7
    functionsReached:
    - event_ref
    - event_unref
    linkageType: ''
    returnType: void
    signature: "void doveadm_cmd_context_replace_set_event(struct doveadm_cmd_context
      *cctx,\n\t\t\t\t\t   struct event *set_event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:62,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:63,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:65,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - cctx
    - name
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 70
    functionName: doveadm_cmd_param_get
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    linkageType: ''
    returnType: struct doveadm_cmd_param
    signature: "struct doveadm_cmd_param *\ndoveadm_cmd_param_get(const struct doveadm_cmd_context
      *cctx,\n\t\t      const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:76,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - name
    - value_r
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 82
    functionName: doveadm_cmd_param_bool
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 10
    functionsReached:
    - i_assert
    - doveadm_cmd_param_get
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmd_param_bool(const struct doveadm_cmd_context *cctx,\n\t\t\t
      \   const char *name, bool *value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - check
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 96
    functionName: doveadm_cmd_param_int64_cast
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: doveadm_cmd_param_int64_cast(type, check)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:105,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - name
    - value_r
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - int64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 111
    functionName: doveadm_cmd_param_int64
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 7
    functionsReached:
    - i_assert
    - doveadm_cmd_param_get
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmd_param_int64(const struct doveadm_cmd_context *cctx,\n\t\t\t
      \    const char *name, int64_t *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - name
    - value_r
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 123
    functionName: doveadm_cmd_param_str
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 63
    functionsReached:
    - i_assert
    - doveadm_cmd_param_get
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmd_param_str(const struct doveadm_cmd_context *cctx,\n\t\t\t
      \  const char *name, const char **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:129,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:132,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - name
    - value_r
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: doveadm_cmd_param_ip
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_assert
    - doveadm_cmd_param_get
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmd_param_ip(const struct doveadm_cmd_context *cctx,\n\t\t\t
      \ const char *name, struct ip_addr *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:142,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - name
    - value_r
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 148
    functionName: doveadm_cmd_param_array_get
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - i_assert
    - doveadm_cmd_param_get
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmd_param_array_get(const struct doveadm_cmd_context
      *cctx,\n\t\t\t\t const char *name,\n\t\t\t\t ARRAY_TYPE(const_string) *value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:155,1
    - Dst: doveadm_cmd_param_array_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:156,1
    - Dst: array_append_array
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - name
    - dest
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: doveadm_cmd_param_array_append
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 4
    functionsReached:
    - doveadm_cmd_param_array_get
    - array_append_array
    - ARRAY_TYPE
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmd_param_array_append(const struct doveadm_cmd_context
      *cctx,\n\t\t\t\t    const char *name,\n\t\t\t\t    ARRAY_TYPE(const_string)
      *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:164,1
    - Dst: doveadm_cmd_param_array_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:165,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - cctx
    - name
    - value_r
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 175
    functionName: doveadm_cmd_param_array
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 23
    functionsReached:
    - i_assert
    - array_get
    - doveadm_cmd_param_array_get
    - ARRAY_TYPE
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmd_param_array(const struct doveadm_cmd_context *cctx,\n\t\t\t
      \    const char *name, const char *const **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_get
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:181,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - name
    - value_r
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 187
    functionName: doveadm_cmd_param_istream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - i_assert
    - doveadm_cmd_param_get
    linkageType: ''
    returnType: bool
    signature: "bool doveadm_cmd_param_istream(const struct doveadm_cmd_context *cctx,\n\t\t\t
      \      const char *name, struct istream **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: array_foreach_modifiable
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 78
    functionsReached:
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void array_foreach_modifiable(pargv, param)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:208,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:209,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 212
    functionName: array_foreach_modifiable
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 78
    functionsReached:
    - array_append_zero
    - array_is_created
    - array_pop_back
    linkageType: ''
    returnType: void
    signature: void array_foreach_modifiable(pargv, param)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:223,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:227,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:229,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:233,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - par
    - shortopts
    - longopts
    argTypes:
    - struct doveadm_cmd_param[]
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 236
    functionName: doveadm_build_options
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_append_zero
    - str_append_c
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void doveadm_build_options(const struct doveadm_cmd_param par[],\n\t\t
      \     string_t *shortopts,\n\t\t      ARRAY_TYPE(getopt_option_array) *longopts)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: str_to_int64
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:249,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:251,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:258,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:265,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:267,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:273,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:276,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:277,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:278,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:279,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:283,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:284,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:286,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:290,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:291,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:291,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:297,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 4
    argNames:
    - param
    - value
    - pool
    - error_r
    argTypes:
    - struct doveadm_cmd_param*
    - char*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 300
    functionName: doveadm_fill_param
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - net_addr2ip
    - i_stream_create_fd
    - p_array_init
    - array_push_back
    - i_unreached
    - i_stream_create_file
    - t_strdup_printf
    - i_stream_get_error
    - str_to_int64
    - i_stream_get_name
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int doveadm_fill_param(struct doveadm_cmd_param *param,\n\t\t   const
      char *value, pool_t pool,\n\t\t   const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:308,1
    - Dst: str_new
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:309,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:311,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:315,1
    - Dst: doveadm_build_options
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:316,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:320,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:321,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:325,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:325,1
    - Dst: getopt_long
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:334,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:334,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:335,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:338,1
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:340,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:341,1
    - Dst: doveadm_fill_param
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:343,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:345,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:347,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:353,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:355,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:358,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:360,1
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:367,1
    - Dst: doveadm_fill_param
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:369,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:370,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:372,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:374,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 5
    argNames:
    - argc
    - argv
    - cctx
    - pool
    - pargv
    argTypes:
    - int
    - char*[]
    - struct doveadm_cmd_context*
    - pool_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 381
    functionName: doveadm_cmd_process_options
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - memcpy
    - str_c
    - str_append_c
    - p_array_init
    - array_append_space
    - array_idx
    - array_idx_modifiable
    - doveadm_fill_param
    - doveadm_cmd_params_clean
    - doveadm_build_options
    - e_error
    - array_count
    - ARRAY_TYPE
    - array_front
    - i_assert
    - str_new
    - getopt_long
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmd_process_options(int argc, const char *const argv[],\n\t\t\t
      \   struct doveadm_cmd_context *cctx, pool_t pool,\n\t\t\t    ARRAY_TYPE(doveadm_cmd_param_arr_t)
      *pargv)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:386,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:388,1
    - Dst: i_getopt_reset
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:390,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:391,1
    - Dst: doveadm_cmd_process_options
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:392,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:393,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:398,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:416,1
    - Dst: doveadm_fill_param
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:423,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:424,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:425,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:426,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:427,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:434,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:435,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:436,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:437,1
    - Dst: doveadm_cmd_params_null_terminate_arrays
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:444,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:445,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:449,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:450,1
    - Dst: struct doveadm_cmd_context*::cmd::cmd
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:451,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:452,1
    - Dst: struct doveadm_cmd_context*::cmd::cmd
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:454,1
    - Dst: doveadm_cmd_params_clean
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:456,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:457,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    argCount: 3
    argNames:
    - argc
    - argv
    - cctx
    argTypes:
    - int
    - char*[]
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 459
    functionName: doveadm_cmdline_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 2
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - event_drop_parent_log_prefixes
    - p_array_init
    - i_getopt_reset
    - doveadm_cmd_params_clean
    - array_get_modifiable
    - doveadm_fill_param
    - t_strarray_join
    - doveadm_cmd_process_options
    - t_strdup_printf
    - event_set_append_log_prefix
    - pool_unref
    - e_error
    - ARRAY_TYPE
    - doveadm_cmd_params_null_terminate_arrays
    - struct doveadm_cmd_context*::cmd::cmd
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmdline_run(int argc, const char *const argv[],\n\t\t\tstruct
      doveadm_cmd_context *cctx)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:472,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:474,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:477,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:478,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:479,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:480,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:481,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:482,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:485,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:487,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:488,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:488,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:489,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:490,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:490,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:491,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:493,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - argv
    argTypes:
    - struct doveadm_cmd_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 498
    functionName: doveadm_cmd_param_tostring
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - str_append_escaped
    - strlen
    - t_strdup_printf
    - array_foreach
    - net_ip2addr
    - str_append
    linkageType: ''
    returnType: char
    signature: 'char *

      doveadm_cmd_param_tostring(const struct doveadm_cmd_param *argv)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:502,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:503,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:504,1
    - Dst: doveadm_cmd_param_tostring
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:507,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:508,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 516
    functionName: doveadm_cmd_params_dump
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - doveadm_cmd_param_tostring
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_params_dump(const struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:521,1
    - Dst: i_debug
      Src: /src/dovecot/src/doveadm/doveadm-cmd-parse.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - items
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 524
    functionName: doveadm_cmd_args_dump
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-cmd-parse.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_args_dump(const char *const *items)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:22,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:24,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:24,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:26,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:29,1
    - Dst: memset
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:31,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:31,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:34,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:36,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:37,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:38,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:39,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:40,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:41,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:42,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:43,1
    - Dst: MAIL_TRANSACTION_LOG_HDR_VERSION
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:45,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - input
    - modseq_r
    - version_r
    argTypes:
    - struct istream*
    - uint64_t*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 46
    functionName: dump_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 2
    functionsReached:
    - memcpy
    - MAIL_TRANSACTION_LOG_HDR_VERSION
    - PTR_OFFSET
    - printf
    - i_fatal
    - i_stream_skip
    - i_stream_get_error
    - memset
    - i_stream_read_bytes
    linkageType: ''
    returnType: void
    signature: "void dump_hdr(struct istream *input, uint64_t *modseq_r,\n\t\t     unsigned
      int *version_r)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:108,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:113,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:115,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 65
    argCount: 1
    argNames:
    - type
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 117
    functionName: log_record_type
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *log_record_type(unsigned int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:124,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 130
    functionName: print_data
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_data(const void *data, size_t size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:139,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:146,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:147,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:154,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:155,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:162,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:163,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:168,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 170
    functionName: print_try_uint
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 0
    functionsReached:
    - memcpy
    - printf
    linkageType: ''
    returnType: void
    signature: void print_try_uint(const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: HDRF
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HDRF(field)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:210,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:217,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:223,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:224,1
    - Dst: print_data
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:225,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:226,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:230,1
    - Dst: print_try_uint
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:231,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:232,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:234,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - u
    - data_size
    argTypes:
    - struct mail_transaction_header_update*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 238
    functionName: log_header_update
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 0
    functionsReached:
    - print_try_uint
    - print_data
    - printf
    - CONST_PTR_OFFSET
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void log_header_update(const struct mail_transaction_header_update
      *u,\n\t\t\t      size_t data_size)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:244,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:250,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:252,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:254,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:261,1
    - Dst: print_data
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:262,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:263,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:270,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:272,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:274,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:275,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:277,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:284,1
    - Dst: log_header_update
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:292,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:299,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:300,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:301,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:302,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:303,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:304,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:305,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:309,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:311,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:319,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:320,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:326,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:328,1
    - Dst: print_data
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:329,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:331,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:333,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:339,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:341,1
    - Dst: print_data
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:342,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:344,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:346,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:353,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:356,1
    - Dst: print_data
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:359,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:361,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:362,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:363,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:370,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:372,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:374,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:376,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:385,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:394,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:396,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:402,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:404,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:406,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:412,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:414,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:426,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:438,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:445,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:451,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:455,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:457,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:458,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:459,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 165
    argCount: 4
    argNames:
    - hdr
    - data
    - data_size
    - modseq
    argTypes:
    - struct mail_transaction_header*
    - void*
    - size_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 240
    functionDepth: 3
    functionLinenumber: 240
    functionLinenumberEnd: 467
    functionName: log_record_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 0
    functionsReached:
    - print_data
    - printf
    - strlen
    - log_header_update
    - mail_index_offset_to_uint32
    - memcmp
    - CONST_PTR_OFFSET
    - unixdate2str
    linkageType: ''
    returnType: void
    signature: "void log_record_print(const struct mail_transaction_header *hdr,\n\t\t\t
      \    const void *data, size_t data_size,\n\t\t\t     uint64_t *modseq)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:478,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:480,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:480,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:484,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:487,1
    - Dst: mail_index_offset_to_uint32
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:489,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:491,1
    - Dst: log_record_type
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:493,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:497,1
    - Dst: log_record_type
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:498,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:500,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:502,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:504,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:504,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:506,1
    - Dst: mail_transaction_update_modseq
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:511,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:513,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:514,1
    - Dst: log_record_print
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:516,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:517,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - input
    - modseq
    - version
    argTypes:
    - struct istream*
    - uint64_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 469
    functionDepth: 4
    functionLinenumber: 469
    functionLinenumberEnd: 519
    functionName: dump_record
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 2
    functionsReached:
    - memcpy
    - printf
    - mail_transaction_update_modseq
    - i_fatal
    - log_record_print
    - log_record_type
    - i_stream_get_error
    - mail_index_offset_to_uint32
    - i_stream_skip
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: "int dump_record(struct istream *input, uint64_t *modseq,\n\t\t       unsigned
      int version)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:529,1
    - Dst: dump_hdr
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:530,1
    - Dst: dump_record
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:533,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - path
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 537
    functionName: cmd_dump_log
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 0
    functionsReached:
    - i_stream_create_file
    - dump_hdr
    - dump_record
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_log(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t\t
      const char *path, const char *const *args ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:547,1
    - Dst: strstr
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:550,1
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:554,1
    - Dst: read
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:558,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dump-log.c:562,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 564
    functionName: test_dump_log
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-log.c
    functionUses: 0
    functionsReached:
    - strrchr
    - i_close_fd
    - open
    - read
    - strstr
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_log(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t\t
      \ const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: doveadm_print_server_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-server.c
    functionUses: 0
    functionsReached:
    - str_new
    linkageType: ''
    returnType: void
    signature: void doveadm_print_server_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_free
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: doveadm_print_server_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-server.c
    functionUses: 0
    functionsReached:
    - str_free
    linkageType: ''
    returnType: void
    signature: void doveadm_print_server_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_print_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: doveadm_print_server_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_print_server_header(const struct doveadm_print_header
      *hdr ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:44,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:45,1
    - Dst: doveadm_print_server_flush
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 51
    functionName: doveadm_print_server_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-server.c
    functionUses: 0
    functionsReached:
    - doveadm_print_server_flush
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void doveadm_print_server_print(const char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_server_print
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:57,1
    - Dst: str_append_tabescaped_n
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:60,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:62,1
    - Dst: doveadm_print_server_flush
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - value
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 64
    functionName: doveadm_print_server_print_stream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-server.c
    functionUses: 0
    functionsReached:
    - doveadm_print_server_flush
    - str_append_tabescaped_n
    - doveadm_print_server_print
    - str_len
    linkageType: ''
    returnType: void
    signature: void doveadm_print_server_print_stream(const unsigned char *value,
      size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:71,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_print_server_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: flush_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-server.c
    functionUses: 24
    functionsReached:
    - o_stream_flush
    - io_loop_stop
    linkageType: ''
    returnType: int
    signature: int flush_callback(struct doveadm_print_server_context *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:78,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:79,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:80,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_print_server_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: handle_flush_timeout
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-server.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - io_loop_stop
    - i_error
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: void handle_flush_timeout(struct doveadm_print_server_context *ctx
      ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:87,1
    - Dst: str_data
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:88,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:88,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:89,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:90,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:92,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:97,1
    - Dst: timeout_add
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:100,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:101,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:102,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:103,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:104,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:105,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:106,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/doveadm/doveadm-print-server.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 108
    functionName: doveadm_print_server_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-server.c
    functionUses: 2
    functionsReached:
    - str_data
    - o_stream_uncork
    - str_len
    - timeout_add
    - io_loop_destroy
    - io_loop_create
    - o_stream_unset_flush_callback
    - o_stream_nsend
    - o_stream_get_buffer_used_size
    - str_truncate
    - o_stream_set_flush_callback
    - o_stream_switch_ioloop_to
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void doveadm_print_server_flush(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_init
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - auth_socket_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: doveadm_get_auth_master_conn
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - auth_master_init
    linkageType: ''
    returnType: struct auth_master_connection
    signature: 'struct auth_master_connection *

      doveadm_get_auth_master_conn(const char *auth_socket_path)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:63,1
    - Dst: auth_master_user_lookup
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:66,1
    - Dst: auth_master_pass_lookup
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:69,1
    - Dst: json_ostream_nwritef_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:74,1
    - Dst: json_ostream_nwritef_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:77,1
    - Dst: json_ostream_nwritef_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:83,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:86,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:88,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:90,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:96,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:100,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:106,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:108,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:109,1
    - Dst: json_ostream_nwrite_true
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:112,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 5
    argNames:
    - conn
    - input
    - json_output
    - show_field
    - userdb
    argTypes:
    - struct auth_master_connection*
    - struct authtest_input*
    - struct json_ostream*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 52
    functionDepth: 19
    functionLinenumber: 52
    functionLinenumberEnd: 117
    functionName: cmd_user_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - auth_master_user_lookup
    - pool_alloconly_create
    - strchr
    - json_ostream_nwrite_true
    - strlen
    - auth_master_pass_lookup
    - json_ostream_nwrite_string
    - t_strdup_until
    - json_ostream_nwritef_string
    - strncmp
    linkageType: ''
    returnType: int
    signature: "int cmd_user_input(struct auth_master_connection *conn,\n\t       const
      struct authtest_input *input,\n\t       struct json_ostream *json_output,\n\t
      \      const char *show_field, bool userdb)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:123,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:124,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:126,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:127,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:128,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:129,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:130,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:131,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:132,1
    - Dst: net_str2port
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:133,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:134,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:135,1
    - Dst: net_str2port
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:136,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:137,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:139,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 2
    argNames:
    - info
    - arg
    argTypes:
    - struct auth_user_info*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 141
    functionName: auth_user_info_parse
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - str_begins
    - i_fatal
    - net_addr2ip
    - net_str2port
    linkageType: ''
    returnType: void
    signature: void auth_user_info_parse(struct auth_user_info *info, const char *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_ostream_ndescend_array
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:157,1
    - Dst: auth_master_user_list_init
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:159,1
    - Dst: auth_master_user_list_next
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:160,1
    - Dst: wildcard_match_icase
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:162,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:166,1
    - Dst: auth_master_user_list_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:170,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:171,1
    - Dst: json_ostream_nascend_array
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:175,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 5
    argNames:
    - cctx
    - conn
    - input
    - json_output
    - users
    argTypes:
    - struct doveadm_cmd_context*
    - struct auth_master_connection*
    - struct authtest_input*
    - struct json_ostream*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 143
    functionDepth: 18
    functionLinenumber: 143
    functionLinenumberEnd: 176
    functionName: cmd_user_list
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - json_ostream_ndescend_array
    - wildcard_match_icase
    - json_ostream_nascend_array
    - json_ostream_nwrite_string
    - auth_master_user_list_init
    - e_error
    - auth_master_user_list_deinit
    - auth_master_user_list_next
    linkageType: ''
    returnType: void
    signature: "void cmd_user_list(struct doveadm_cmd_context *cctx,\n\t      struct
      auth_master_connection *conn,\n\t      const struct authtest_input *input,\n\t
      \     struct json_ostream *json_output,\n\t      char *const *users)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:184,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:185,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:188,1
    - Dst: doveadm_get_auth_master_conn
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:190,1
    - Dst: auth_master_cache_flush
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:191,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:192,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:195,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:196,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:197,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:198,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 178
    functionDepth: 9
    functionLinenumber: 178
    functionLinenumberEnd: 201
    functionName: cmd_auth_cache_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - auth_master_deinit
    - doveadm_print_init
    - doveadm_cmd_param_array
    - doveadm_print_num
    - doveadm_cmd_param_str
    - auth_master_cache_flush
    - e_error
    - doveadm_print_formatted_set_format
    - doveadm_print_header_simple
    - doveadm_get_auth_master_conn
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void cmd_auth_cache_flush(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:207,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 4
    argNames:
    - json_output
    - key
    - value
    - show_field
    argTypes:
    - struct json_ostream*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 18
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: cmd_user_mail_input_field
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_ostream_nwrite_string
    linkageType: ''
    returnType: void
    signature: "void cmd_user_mail_input_field(struct json_ostream *json_output,\n\t\t\t\t
      \     const char *key, const char *value,\n\t\t\t\t      const char *show_field)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:223,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:224,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:227,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:229,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:231,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:233,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:238,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:240,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:245,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:246,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:247,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:248,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:250,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 6
    argNames:
    - input
    - user
    - mail_set
    - json_output
    - userdb_fields
    - show_field
    argTypes:
    - struct authtest_input*
    - struct mail_user*
    - struct mail_storage_settings*
    - struct json_ostream*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 255
    functionName: cmd_user_mail_print_fields
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - t_strdup_until
    - cmd_user_mail_input_field
    linkageType: ''
    returnType: void
    signature: "void cmd_user_mail_print_fields(const struct authtest_input *input,\n\t\t\t
      \  struct mail_user *user,\n\t\t\t   const struct mail_storage_settings *mail_set,\n\t\t\t
      \  struct json_ostream *json_output,\n\t\t\t   const char *const *userdb_fields,\n\t\t\t
      \  const char *show_field)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:269,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:278,1
    - Dst: json_ostream_nwritef_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:281,1
    - Dst: json_ostream_nwritef_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:285,1
    - Dst: settings_get
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:290,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:292,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:293,1
    - Dst: mail_storage_service_user_get_userdb_fields
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:298,1
    - Dst: cmd_user_mail_print_fields
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:299,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:302,1
    - Dst: mail_user_var_expand_params
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:304,1
    - Dst: var_expand
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:305,1
    - Dst: json_ostream_nwritef_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:306,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:309,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:310,1
    - Dst: settings_free
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:314,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:315,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 5
    argNames:
    - storage_service
    - input
    - json_output
    - show_field
    - expand_field
    argTypes:
    - struct mail_storage_service_ctx*
    - struct authtest_input*
    - struct json_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 257
    functionDepth: 19
    functionLinenumber: 257
    functionLinenumberEnd: 317
    functionName: cmd_user_mail_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - mail_user_deinit
    - t_str_new
    - cmd_user_mail_print_fields
    - mail_storage_service_lookup_next
    - settings_free
    - json_ostream_nwrite_string
    - mail_user_var_expand_params
    - json_ostream_nwritef_string
    - settings_get
    - var_expand
    - mail_storage_service_user_get_userdb_fields
    linkageType: ''
    returnType: int
    signature: "int cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,\n\t\t
      \   const struct authtest_input *input,\n\t\t    struct json_ostream *json_output,\n\t\t
      \   const char *show_field, const char *expand_field)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:332,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:335,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:336,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:337,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:339,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:340,1
    - Dst: auth_user_info_parse
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:342,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:344,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:346,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:351,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:356,1
    - Dst: doveadm_get_auth_master_conn
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:361,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:366,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:367,1
    - Dst: json_ostream_create
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:373,1
    - Dst: json_ostream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:374,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:375,1
    - Dst: cmd_user_list
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:378,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:381,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:382,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:383,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:388,1
    - Dst: mail_storage_service_set_auth_conn
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:395,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:407,1
    - Dst: cmd_user_mail_input
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:410,1
    - Dst: cmd_user_input
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:413,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:417,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:429,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:430,1
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:433,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:435,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 76
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 319
    functionDepth: 17
    functionLinenumber: 319
    functionLinenumberEnd: 436
    functionName: cmd_user_ver2
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 0
    functionsReached:
    - strchr
    - mail_storage_service_deinit
    - cmd_user_mail_input
    - mail_storage_service_set_auth_conn
    - doveadm_cmd_param_bool
    - auth_master_deinit
    - cmd_user_input
    - mail_storage_service_init
    - doveadm_get_auth_master_conn
    - json_ostream_destroy
    - i_zero
    - json_ostream_nascend_object
    - e_error
    - cmd_user_list
    - json_ostream_ndescend_object
    - auth_user_info_parse
    - doveadm_cmd_param_array
    - json_ostream_create
    - doveadm_cmd_param_str
    - json_ostream_set_no_error_handling
    linkageType: ''
    returnType: void
    signature: void cmd_user_ver2(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:469,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm-auth-server.c:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 472
    functionName: doveadm_register_auth_server_commands
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth-server.c
    functionUses: 1
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_register_auth_server_commands(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:33,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:41,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:46,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:47,1
    - Dst: mailbox_save_copy_flags
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:48,1
    - Dst: mailbox_move
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:50,1
    - Dst: mailbox_copy
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:52,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:54,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:58,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:59,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:64,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:65,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:67,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:68,1
    - Dst: doveadm_mail_iter_deinit_rollback
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:70,1
    - Dst: doveadm_mail_iter_deinit_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - destbox
    - info
    argTypes:
    - struct copy_cmd_context*
    - struct mailbox*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 23
    functionDepth: 13
    functionLinenumber: 23
    functionLinenumberEnd: 77
    functionName: cmd_copy_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-copymove.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mailbox_save_alloc
    - doveadm_mail_iter_init
    - doveadm_mail_iter_deinit_rollback
    - mailbox_move
    - mailbox_copy
    - doveadm_mail_iter_next
    - e_error
    - doveadm_mail_iter_deinit_sync
    - mailbox_save_copy_flags
    - mailbox_transaction_commit
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_copy_box(struct copy_cmd_context *ctx, struct mailbox *destbox,\n\t
      \    const struct mailbox_info *info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:88,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:89,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:92,1
    - Dst: mail_storage_service_io_deactivate_user
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:93,1
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct copy_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 79
    functionDepth: 9
    functionLinenumber: 79
    functionLinenumberEnd: 95
    functionName: cmd_copy_alloc_source_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-copymove.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_io_deactivate_user
    - i_fatal
    - mail_storage_service_io_activate_user
    - mail_storage_service_lookup_next
    linkageType: ''
    returnType: void
    signature: void cmd_copy_alloc_source_user(struct copy_cmd_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:101,1
    - Dst: cmd_copy_alloc_source_user
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:113,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:115,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:116,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:117,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:118,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:120,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:121,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:122,1
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:127,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:129,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:130,1
    - Dst: cmd_copy_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 97
    functionDepth: 14
    functionLinenumber: 97
    functionLinenumberEnd: 132
    functionName: cmd_copy_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-copymove.c
    functionUses: 0
    functionsReached:
    - container_of
    - mailbox_open
    - cmd_copy_alloc_source_user
    - mail_namespace_find
    - mailbox_get_last_internal_error
    - mailbox_free
    - if
    - e_error
    - doveadm_mailbox_list_iter_next
    - mailbox_alloc
    - doveadm_mailbox_list_iter_init
    - cmd_copy_box
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: int cmd_copy_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:151,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:156,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:157,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:158,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:159,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:161,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:163,1
    - Dst: expunge_search_args_check
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 147
    functionDepth: 8
    functionLinenumber: 147
    functionLinenumberEnd: 167
    functionName: cmd_copy_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-copymove.c
    functionUses: 0
    functionsReached:
    - container_of
    - expunge_search_args_check
    - doveadm_cmd_param_array
    - i_fatal
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - doveadm_mail_build_search_args
    linkageType: ''
    returnType: void
    signature: void cmd_copy_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:172,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 176
    functionName: cmd_copy_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-copymove.c
    functionUses: 0
    functionsReached:
    - mail_user_deinit
    - container_of
    linkageType: ''
    returnType: void
    signature: void cmd_copy_deinit(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:182,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 188
    functionName: cmd_copy_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-copymove.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_copy_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_copy_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-copymove.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 197
    functionName: cmd_move_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-copymove.c
    functionUses: 0
    functionsReached:
    - cmd_copy_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_move_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: doveadm_print_formatted_set_format
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-formatted.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_print_formatted_set_format(const char *format)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:31,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:32,1
    - Dst: str_new
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:33,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 36
    functionName: doveadm_print_formatted_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-formatted.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - str_new
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void doveadm_print_formatted_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:42,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:43,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct doveadm_print_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 46
    functionName: doveadm_print_formatted_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-formatted.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void doveadm_print_formatted_header(const struct doveadm_print_header
      *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:51,1
    - Dst: str_data
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:51,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:51,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: doveadm_print_formatted_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-formatted.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    - str_truncate
    - str_data
    - str_len
    linkageType: ''
    returnType: void
    signature: void doveadm_print_formatted_flush(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:58,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:61,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:64,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:65,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:66,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:68,1
    - Dst: var_expand
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:70,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:71,1
    - Dst: doveadm_print_formatted_flush
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 78
    functionName: doveadm_print_formatted_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-formatted.c
    functionUses: 0
    functionsReached:
    - doveadm_print_formatted_flush
    - array_idx_modifiable
    - i_error
    - i_fatal
    - array_count
    - array_pop_back
    - array_front
    - array_append_zero
    - var_expand
    linkageType: ''
    returnType: void
    signature: void doveadm_print_formatted_print(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-print-formatted.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: doveadm_print_formatted_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-formatted.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_print_formatted_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: doveadm_print_is_initialized
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool doveadm_print_is_initialized(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-print.c:42,1
    - Dst: i_panic
      Src: /src/dovecot/src/doveadm/doveadm-print.c:45,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-print.c:47,1
    - Dst: v::header
      Src: /src/dovecot/src/doveadm/doveadm-print.c:51,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-print.c:53,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - key
    - title
    - flags
    argTypes:
    - char*
    - char*
    - enum doveadm_print_header_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 56
    functionName: doveadm_print_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 26
    functionsReached:
    - i_panic
    - i_zero
    - p_strdup
    - array_append_space
    - v::header
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void doveadm_print_header(const char *key, const char *title,\n\t\t\t
      \ enum doveadm_print_header_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-print.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key_title
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: doveadm_print_header_simple
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 21
    functionsReached:
    - doveadm_print_header
    linkageType: ''
    returnType: void
    signature: void doveadm_print_header_simple(const char *key_title)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-print.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: doveadm_print_get_headers_count
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 1
    functionsReached:
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int doveadm_print_get_headers_count(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/doveadm-print.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-print.c:74,1
    - Dst: v::print
      Src: /src/dovecot/src/doveadm/doveadm-print.c:79,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 85
    functionName: doveadm_print_sticky_headers
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 0
    functionsReached:
    - v::print
    - array_get
    - i_assert
    linkageType: ''
    returnType: void
    signature: void doveadm_print_sticky_headers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-print.c:89,1
    - Dst: doveadm_print_sticky_headers
      Src: /src/dovecot/src/doveadm/doveadm-print.c:91,1
    - Dst: v::print
      Src: /src/dovecot/src/doveadm/doveadm-print.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 94
    functionName: doveadm_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 34
    functionsReached:
    - v::print
    - doveadm_print_sticky_headers
    - i_assert
    linkageType: ''
    returnType: void
    signature: void doveadm_print(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-print.c:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - count
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 3
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: doveadm_print_empty
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 6
    functionsReached:
    - doveadm_print
    linkageType: ''
    returnType: void
    signature: void doveadm_print_empty(unsigned int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-print.c:105,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-print.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: doveadm_print_num
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 4
    functionsReached:
    - dec2str
    - doveadm_print
    linkageType: ''
    returnType: void
    signature: void doveadm_print_num(uintmax_t value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_sticky_headers
      Src: /src/dovecot/src/doveadm/doveadm-print.c:112,1
    - Dst: v::print_stream
      Src: /src/dovecot/src/doveadm/doveadm-print.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - value
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 120
    functionName: doveadm_print_stream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 2
    functionsReached:
    - doveadm_print_sticky_headers
    - v::print_stream
    linkageType: ''
    returnType: void
    signature: void doveadm_print_stream(const void *value, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/doveadm-print.c:128,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-print.c:129,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-print.c:130,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-print.c:132,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-print.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 139
    functionName: doveadm_print_istream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 1
    functionsReached:
    - doveadm_print_stream
    - i_assert
    - i_stream_read_more
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: int doveadm_print_istream(struct istream *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-print.c:150,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-print.c:151,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-print.c:152,1
    - Dst: i_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print.c:153,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-print.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 158
    functionName: doveadm_print_sticky
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 1
    functionsReached:
    - strcmp
    - i_unreached
    - i_strdup
    - array_foreach_modifiable
    - i_free
    linkageType: ''
    returnType: void
    signature: void doveadm_print_sticky(const char *key, const char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: v::flush
      Src: /src/dovecot/src/doveadm/doveadm-print.c:163,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/doveadm/doveadm-print.c:164,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/doveadm/doveadm-print.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 166
    functionName: doveadm_print_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 1
    functionsReached:
    - v::flush
    - o_stream_cork
    - o_stream_uncork
    linkageType: ''
    returnType: void
    signature: void doveadm_print_flush(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/doveadm/doveadm-print.c:178,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-print.c:180,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-print.c:181,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-print.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-print.c:186,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-print.c:192,1
    - Dst: v::init
      Src: /src/dovecot/src/doveadm/doveadm-print.c:194,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 195
    functionName: doveadm_print_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 40
    functionsReached:
    - i_panic
    - pool_alloconly_create
    - strcmp
    - v::init
    - p_new
    - p_array_init
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void doveadm_print_init(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: v::flush
      Src: /src/dovecot/src/doveadm/doveadm-print.c:205,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/doveadm/doveadm-print.c:206,1
    - Dst: v::deinit
      Src: /src/dovecot/src/doveadm/doveadm-print.c:209,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/doveadm/doveadm-print.c:210,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-print.c:211,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-print.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 217
    functionName: doveadm_print_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 2
    functionsReached:
    - v::flush
    - o_stream_uncork
    - pool_unref
    - v::deinit
    - array_foreach_modifiable
    - i_free
    linkageType: ''
    returnType: void
    signature: void doveadm_print_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - disallow
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: doveadm_print_init_disallow
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_print_init_disallow(bool disallow)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - disallow
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: doveadm_print_header_disallow
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_print_header_disallow(bool disallow)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:22,1
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:31,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:37,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:38,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:39,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:41,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:42,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:45,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:48,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:53,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:54,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:57,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:60,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:66,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:67,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:69,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:70,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:70,1
    - Dst: doveadm_mail_iter_deinit_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:75,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:78,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:79,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 3
    argNames:
    - _ctx
    - info
    - search_args
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_info*
    - struct mail_search_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 16
    functionDepth: 13
    functionLinenumber: 16
    functionLinenumberEnd: 81
    functionName: cmd_deduplicate_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - hash_table_lookup
    - container_of
    - hash_table_create
    - p_strdup
    - mail_expunge
    - POINTER_CAST
    - doveadm_mail_iter_init
    - pool_unref
    - e_error
    - mail_get_first_header
    - doveadm_mail_iter_next
    - doveadm_mail_iter_deinit_sync
    - mail_get_last_internal_error
    - hash_table_insert
    - doveadm_mail_failed_error
    - mail_get_special
    - hash_table_destroy
    linkageType: ''
    returnType: int
    signature: "int cmd_deduplicate_box(struct doveadm_mail_cmd_context *_ctx,\n\t\t
      \   const struct mailbox_info *info,\n\t\t    struct mail_search_args *search_args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:93,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:95,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:96,1
    - Dst: cmd_deduplicate_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 83
    functionDepth: 14
    functionLinenumber: 83
    functionLinenumberEnd: 98
    functionName: cmd_deduplicate_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c
    functionUses: 0
    functionsReached:
    - doveadm_mailbox_list_iter_next
    - cmd_deduplicate_box
    - doveadm_mailbox_list_iter_init
    - if
    linkageType: ''
    returnType: int
    signature: int cmd_deduplicate_run(struct doveadm_mail_cmd_context *ctx, struct
      mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:108,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:111,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:112,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:113,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 104
    functionDepth: 4
    functionLinenumber: 104
    functionLinenumberEnd: 116
    functionName: cmd_deduplicate_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_array
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    - doveadm_mail_build_search_args
    linkageType: ''
    returnType: void
    signature: void cmd_deduplicate_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: cmd_deduplicate_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-deduplicate.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_deduplicate_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mailbox_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:33,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:35,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:35,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:36,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:37,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:38,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:39,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - user
    - boxname
    - box_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    - char*
    - struct mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 28
    functionDepth: 11
    functionLinenumber: 28
    functionLinenumberEnd: 47
    functionName: cmd_mailbox_cache_open_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_open
    - mailbox_get_last_internal_error
    - mailbox_sync
    - e_error
    - mailbox_get_vname
    - doveadm_mailbox_find
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_cache_open_box(struct doveadm_mail_cmd_context *ctx,\n\t\t\t\t
      \     struct mail_user *user,\n\t\t\t\t      const char *boxname,\n\t\t\t\t
      \     struct mailbox **box_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:53,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:55,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:57,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - str
    - decision_r
    argTypes:
    - char*
    - enum mail_cache_decision_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 62
    functionName: cmd_mailbox_cache_str_to_make_decision
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool cmd_mailbox_cache_str_to_make_decision(const char *str,\n\t\t\t\t
      \      enum mail_cache_decision_type *decision_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:68,1
    - Dst: doveadm_cmd_param_uint64
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:70,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:74,1
    - Dst: cmd_mailbox_cache_str_to_make_decision
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:75,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:77,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:83,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:85,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:86,1
    - Dst: p_strsplit_spaces
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:87,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:90,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:91,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:93,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:94,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:95,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:96,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 64
    functionDepth: 4
    functionLinenumber: 64
    functionLinenumberEnd: 97
    functionName: cmd_mailbox_cache_decision_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_fatal_status
    - doveadm_cmd_param_array
    - doveadm_cmd_param_uint64
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - doveadm_print_header_simple
    - p_strsplit_spaces
    - cmd_mailbox_cache_str_to_make_decision
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_cache_decision_init(struct doveadm_mail_cmd_context
      *_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:102,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:103,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:105,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:108,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:111,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:114,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - decision
    argTypes:
    - enum mail_cache_decision_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 115
    functionName: cmd_mailbox_cache_decision_to_str
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_c
    - t_str_new
    - ENUM_NEGATE
    linkageType: ''
    returnType: char
    signature: 'char *

      cmd_mailbox_cache_decision_to_str(enum mail_cache_decision_type decision)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:131,1
    - Dst: cmd_mailbox_cache_decision_to_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:131,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:132,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - field
    argTypes:
    - struct mailbox_cache_cmd_context*
    - struct mail_cache_field_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 133
    functionName: cmd_mailbox_cache_decision_process_field
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - cmd_mailbox_cache_decision_to_str
    - doveadm_print
    - t_strflocaltime
    linkageType: ''
    returnType: void
    signature: "void cmd_mailbox_cache_decision_process_field(struct mailbox_cache_cmd_context
      *ctx,\n\t\t\t\t\t struct mail_cache_field_private *field)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:142,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:142,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:143,1
    - Dst: mail_cache_register_lookup
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:145,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:148,1
    - Dst: doveadm_print_empty
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:149,1
    - Dst: cmd_mailbox_cache_decision_process_field
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - box
    - cache
    argTypes:
    - struct mailbox_cache_cmd_context*
    - struct mailbox*
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 135
    functionDepth: 4
    functionLinenumber: 135
    functionLinenumberEnd: 155
    functionName: cmd_mailbox_cache_decision_run_per_field
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    - doveadm_print_empty
    - mail_cache_register_lookup
    - cmd_mailbox_cache_decision_process_field
    - mailbox_get_vname
    linkageType: ''
    returnType: void
    signature: "void cmd_mailbox_cache_decision_run_per_field(struct mailbox_cache_cmd_context
      *ctx,\n\t\t\t\t\t struct mailbox *box,\n\t\t\t\t\t struct mail_cache *cache)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:164,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:164,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:165,1
    - Dst: cmd_mailbox_cache_decision_process_field
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - box
    - cache
    argTypes:
    - struct mailbox_cache_cmd_context*
    - struct mailbox*
    - struct mail_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 157
    functionDepth: 4
    functionLinenumber: 157
    functionLinenumberEnd: 168
    functionName: cmd_mailbox_cache_decision_run_all_fields
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    - cmd_mailbox_cache_decision_process_field
    - mailbox_get_vname
    linkageType: ''
    returnType: void
    signature: "void cmd_mailbox_cache_decision_run_all_fields(struct mailbox_cache_cmd_context
      *ctx,\n\t\t\t\t\t  struct mailbox *box,\n\t\t\t\t\t  struct mail_cache *cache)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:174,1
    - Dst: mail_cache_open_and_verify
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:179,1
    - Dst: MAIL_CACHE_IS_UNUSABLE
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:180,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:181,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:182,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:187,1
    - Dst: cmd_mailbox_cache_decision_run_all_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:190,1
    - Dst: cmd_mailbox_cache_decision_run_per_field
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:192,1
    - Dst: mail_cache_header_fields_update
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:196,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:198,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:200,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:201,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:202,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:203,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - box
    argTypes:
    - struct mailbox_cache_cmd_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 170
    functionDepth: 12
    functionLinenumber: 170
    functionLinenumberEnd: 207
    functionName: cmd_mailbox_cache_decision_run_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - mail_cache_view_close
    - doveadm_mail_failed_mailbox
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - cmd_mailbox_cache_decision_run_all_fields
    - cmd_mailbox_cache_decision_run_per_field
    - mail_cache_header_fields_update
    - e_error
    - mailbox_transaction_commit
    - mail_cache_view_open
    - mail_cache_open_and_verify
    - MAIL_CACHE_IS_UNUSABLE
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_cache_decision_run_box(struct mailbox_cache_cmd_context
      *ctx,\n\t\t\t\t\t      struct mailbox *box)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:213,1
    - Dst: cmd_mailbox_cache_open_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:222,1
    - Dst: cmd_mailbox_cache_decision_run_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:224,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 209
    functionDepth: 13
    functionLinenumber: 209
    functionLinenumberEnd: 229
    functionName: cmd_mailbox_cache_decision_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - container_of
    - cmd_mailbox_cache_decision_run_box
    - cmd_mailbox_cache_open_box
    - mailbox_free
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_cache_decision_run(struct doveadm_mail_cmd_context
      *_ctx,\n\t\t\t\t\t  struct mail_user *user)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:240,1
    - Dst: doveadm_mail_iter_get_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:245,1
    - Dst: mail_index_transaction_begin
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:248,1
    - Dst: mail_cache_view_open
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:250,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:252,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:254,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:254,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:255,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:255,1
    - Dst: mail_index_update_ext
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:257,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:258,1
    - Dst: mail_index_transaction_commit
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:262,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:263,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:264,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:265,1
    - Dst: mail_cache_expunge_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:268,1
    - Dst: mail_cache_view_close
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:271,1
    - Dst: doveadm_mail_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:273,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct mailbox_cache_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 231
    functionDepth: 13
    functionLinenumber: 231
    functionLinenumberEnd: 277
    functionName: cmd_mailbox_cache_remove_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - dec2str
    - mail_cache_view_close
    - mail_index_transaction_begin
    - doveadm_print
    - mailbox_get_last_internal_error
    - mail_index_transaction_commit
    - doveadm_mail_iter_get_mailbox
    - doveadm_mail_iter_init
    - doveadm_mail_iter_deinit
    - mail_index_update_ext
    - e_error
    - doveadm_mail_iter_next
    - mail_cache_expunge_count
    - mailbox_get_vname
    - mail_cache_view_open
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_cache_remove_box(struct mailbox_cache_cmd_context
      *ctx,\n\t\t\t\t\tconst struct mailbox_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:283,1
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:291,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:293,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:294,1
    - Dst: cmd_mailbox_cache_remove_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 279
    functionDepth: 14
    functionLinenumber: 279
    functionLinenumberEnd: 296
    functionName: cmd_mailbox_cache_remove_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - container_of
    - if
    - doveadm_mailbox_list_iter_next
    - doveadm_mailbox_list_iter_init
    - cmd_mailbox_cache_remove_box
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_cache_remove_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\t\tstruct
      mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:306,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:309,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:310,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:312,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:313,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:314,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 302
    functionDepth: 4
    functionLinenumber: 302
    functionLinenumberEnd: 317
    functionName: cmd_mailbox_cache_remove_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_array
    - doveadm_mail_help_name
    - doveadm_print_header_simple
    - doveadm_mail_build_search_args
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_cache_remove_init(struct doveadm_mail_cmd_context
      *_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_cache_purge
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:322,1
    - Dst: mailbox_set_index_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:324,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - box
    argTypes:
    - struct mailbox_cache_cmd_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 319
    functionDepth: 15
    functionLinenumber: 319
    functionLinenumberEnd: 329
    functionName: cmd_mailbox_cache_purge_run_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - mailbox_set_index_error
    - doveadm_mail_failed_mailbox
    - mail_cache_purge
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_cache_purge_run_box(struct mailbox_cache_cmd_context
      *ctx,\n\t\t\t\t\t   struct mailbox *box)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:335,1
    - Dst: cmd_mailbox_cache_open_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:344,1
    - Dst: cmd_mailbox_cache_purge_run_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:346,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 331
    functionDepth: 16
    functionLinenumber: 331
    functionLinenumberEnd: 351
    functionName: cmd_mailbox_cache_purge_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - cmd_mailbox_cache_purge_run_box
    - container_of
    - mailbox_free
    - cmd_mailbox_cache_open_box
    linkageType: ''
    returnType: int
    signature: "int cmd_mailbox_cache_purge_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\t
      \      struct mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:357,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:359,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 353
    functionDepth: 4
    functionLinenumber: 353
    functionLinenumberEnd: 361
    functionName: cmd_mailbox_cache_purge_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - container_of
    - doveadm_cmd_param_array
    linkageType: ''
    returnType: void
    signature: void cmd_mailbox_cache_purge_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:366,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 371
    functionName: cmd_mailbox_cache_decision_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_cache_decision_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:376,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 381
    functionName: cmd_mailbox_cache_remove_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_cache_remove_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:386,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 391
    functionName: cmd_mailbox_cache_purge_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-mailbox-cache.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_mailbox_cache_purge_alloc(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:20,1
    - Dst: read
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:22,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:27,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:31,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:34,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:37,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:40,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:43,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:46,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:49,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:52,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:52,1
    - Dst: be32_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:55,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:56,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:56,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 13
    functionDepth: 2
    functionLinenumber: 13
    functionLinenumberEnd: 58
    functionName: dump_record
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c
    functionUses: 3
    functionsReached:
    - lseek
    - printf
    - i_fatal
    - read
    - be32_to_cpu_unaligned
    - binary_to_hex
    - unixdate2str
    linkageType: ''
    returnType: int
    signature: int dump_record(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:66,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:68,1
    - Dst: dump_record
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:72,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - path
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 76
    functionName: cmd_dump_mailboxlog
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - open
    - dump_record
    - i_close_fd
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_mailboxlog(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t
      \   const char *path, const char *const *args ATTR_UNUSED)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:86,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:87,1
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:90,1
    - Dst: read
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:94,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c:108,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 110
    functionName: test_dump_mailboxlog
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-mailboxlog.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strrchr
    - i_close_fd
    - open
    - read
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_mailboxlog(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t\t
      \t const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:61,1
    - Dst: event_add_category
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:62,1
    - Dst: event_want_debug_log
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:65,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 70
    functionName: auth_want_log_debug
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_add_category
    - event_unref
    - event_want_debug_log
    linkageType: ''
    returnType: bool
    signature: bool auth_want_log_debug(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_want_log_debug
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:79,1
    - Dst: auth_master_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - auth_socket_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: doveadm_get_auth_master_conn
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 2
    functionsReached:
    - auth_want_log_debug
    - auth_master_init
    linkageType: ''
    returnType: struct auth_master_connection
    signature: 'struct auth_master_connection *

      doveadm_get_auth_master_conn(const char *auth_socket_path)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:86,1
    - Dst: auth_client_request_abort
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct authtest_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 91
    functionName: cancel_auth
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - auth_client_request_abort
    linkageType: ''
    returnType: void
    signature: void cancel_auth(struct authtest_input *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_server_auth_disconnect
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct login_server_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: cancel_login
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - login_server_auth_disconnect
    linkageType: ''
    returnType: void
    signature: void cancel_login(struct login_server_auth *auth)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:109,1
    - Dst: auth_master_user_lookup
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:112,1
    - Dst: auth_master_pass_lookup
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:115,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:120,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:123,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:129,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:133,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:136,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:138,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:141,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:144,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:146,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:148,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:150,1
    - Dst: t_strcut
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:151,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:155,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 5
    argNames:
    - conn
    - input
    - show_field
    - userdb
    - event
    argTypes:
    - struct auth_master_connection*
    - struct authtest_input*
    - char*
    - bool
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 98
    functionDepth: 5
    functionLinenumber: 98
    functionLinenumberEnd: 157
    functionName: cmd_user_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 1
    functionsReached:
    - auth_master_user_lookup
    - pool_alloconly_create
    - strchr
    - printf
    - strlen
    - auth_master_pass_lookup
    - pool_unref
    - e_error
    - fprintf
    - strncmp
    - t_strcut
    linkageType: ''
    returnType: int
    signature: "int cmd_user_input(struct auth_master_connection *conn,\n\t       struct
      authtest_input *input,\n\t       const char *show_field, bool userdb,\n\t       struct
      event *event)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: auth_client_request_get_id
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:172,1
    - Dst: auth_client_request_get_server_pid
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:173,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:175,1
    - Dst: auth_client_request_get_cookie
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:175,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:177,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:182,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:188,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:194,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:199,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:202,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:203,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:203,1
    - Dst: base64_decode
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:204,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:205,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:206,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:208,1
    - Dst: auth_client_request_abort
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:209,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:211,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:213,1
    - Dst: auth_client_request_abort
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:214,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:219,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:219,1
    - Dst: base64_encode
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:220,1
    - Dst: auth_client_request_continue
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:221,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:221,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:226,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:231,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:233,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:235,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:238,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 5
    argNames:
    - request
    - status
    - data_base64
    - args
    - context
    argTypes:
    - struct auth_client_request*
    - enum auth_request_status
    - char*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 159
    functionDepth: 4
    functionLinenumber: 159
    functionLinenumberEnd: 239
    functionName: auth_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - strlen
    - auth_client_request_abort
    - dsasl_client_input
    - MAX_BASE64_ENCODED_SIZE
    - t_str_new
    - printf
    - auth_client_request_continue
    - i_fatal
    - auth_client_request_get_id
    - auth_client_request_get_server_pid
    - MAX_BASE64_DECODED_SIZE
    - auth_client_request_get_cookie
    - e_error
    - base64_encode
    - io_loop_stop
    - io_loop_is_running
    - strcmp
    - str_begins_with
    - base64_decode
    - t_buffer_create
    - dsasl_client_output
    linkageType: ''
    returnType: void
    signature: "void auth_callback(struct auth_client_request *request,\n\t      enum
      auth_request_status status, const char *data_base64,\n\t      const char *const
      *args, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:251,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:252,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:254,1
    - Dst: random_fill
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:256,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:257,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - type
    - context
    - data_r
    - error_r
    argTypes:
    - char*
    - void*
    - buffer_t**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 266
    functionName: auth_channel_bind_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - random_fill
    - p_strdup
    - buffer_create_dynamic
    - t_strdup_printf
    - buffer_append_space_unsafe
    linkageType: ''
    returnType: int
    signature: "int auth_channel_bind_callback(const char *type, void *context,\n\t\t\t
      \  const buffer_t **data_r, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:272,1
    - Dst: doveadm_is_killed
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:280,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:282,1
    - Dst: auth_client_find_mech
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:284,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:285,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:287,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:290,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:292,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:292,1
    - Dst: base64_encode
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:293,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:295,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:310,1
    - Dst: auth_want_log_debug
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:311,1
    - Dst: auth_client_request_new
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:314,1
    - Dst: auth_client_request_enable_channel_binding
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:317,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - client
    - connected
    - context
    argTypes:
    - struct auth_client*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 319
    functionName: auth_connected
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 3
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - auth_client_request_enable_channel_binding
    - auth_client_request_new
    - i_fatal
    - base64_encode
    - doveadm_is_killed
    - auth_want_log_debug
    - dsasl_client_mech_get_name
    - auth_client_find_mech
    - dsasl_client_output
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: void
    signature: "void auth_connected(struct auth_client *client,\n\t\t\t   bool connected,
      void *context)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:326,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:328,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:334,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:345,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:347,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:348,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:356,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:361,1
    - Dst: dsasl_client_enable_channel_binding
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:362,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct authtest_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 365
    functionName: cmd_auth_init_sasl_client
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dsasl_client_mech_find
    - dsasl_client_enable_channel_binding
    - i_fatal
    - strcasecmp
    - net_ip2addr
    - dsasl_client_new
    linkageType: ''
    returnType: void
    signature: void cmd_auth_init_sasl_client(struct authtest_input *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct authtest_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 370
    functionName: cmd_auth_deinit_sasl_client
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - dsasl_client_free
    linkageType: ''
    returnType: void
    signature: void cmd_auth_deinit_sasl_client(struct authtest_input *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:378,1
    - Dst: cmd_auth_init_sasl_client
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:382,1
    - Dst: auth_client_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:384,1
    - Dst: getpid
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:384,1
    - Dst: auth_want_log_debug
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:385,1
    - Dst: auth_client_connect
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:387,1
    - Dst: auth_client_set_connect_notify
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:388,1
    - Dst: master_service_set_killed_callback
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:389,1
    - Dst: auth_client_is_disconnected
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:391,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:392,1
    - Dst: auth_client_set_connect_notify
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:394,1
    - Dst: auth_client_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:395,1
    - Dst: cmd_auth_deinit_sasl_client
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - auth_socket_path
    - input
    argTypes:
    - char*
    - struct authtest_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 372
    functionDepth: 4
    functionLinenumber: 372
    functionLinenumberEnd: 398
    functionName: cmd_auth_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - cmd_auth_deinit_sasl_client
    - io_loop_run
    - getpid
    - cmd_auth_init_sasl_client
    - auth_client_init
    - master_service_set_killed_callback
    - auth_client_is_disconnected
    - auth_client_deinit
    - auth_want_log_debug
    - auth_client_set_connect_notify
    - t_strconcat
    - auth_client_connect
    linkageType: ''
    returnType: void
    signature: void cmd_auth_input(const char *auth_socket_path, struct authtest_input
      *input)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:406,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:407,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:409,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:411,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:413,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:414,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:415,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:416,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:417,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:418,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:419,1
    - Dst: net_str2port
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:420,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:421,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:422,1
    - Dst: net_str2port
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:423,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:424,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:425,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:426,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:427,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:428,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:429,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:430,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:431,1
    - Dst: net_str2port
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:432,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:433,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:434,1
    - Dst: net_str2port
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:435,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:436,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:437,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:438,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:440,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:441,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:442,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 46
    argCount: 3
    argNames:
    - info
    - arg
    - forward_fields
    argTypes:
    - struct auth_user_info*
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 444
    functionName: auth_user_info_parse_arg
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - array_push_back
    - str_begins
    - i_fatal
    - t_array_init
    - array_is_created
    - net_str2port
    linkageType: ''
    returnType: void
    signature: "void auth_user_info_parse_arg(struct auth_user_info *info, const char
      *arg,\n\t\t\t ARRAY_TYPE(const_string) *forward_fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:449,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:450,1
    - Dst: auth_user_info_parse_arg
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:452,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:453,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:454,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - info
    - args
    argTypes:
    - struct auth_user_info*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 457
    functionName: auth_user_info_parse
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 1
    functionsReached:
    - array_count
    - t_array_init
    - auth_user_info_parse_arg
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: void
    signature: void auth_user_info_parse(struct auth_user_info *info, const char *const
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_user_list_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:471,1
    - Dst: auth_master_user_list_next
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:472,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:474,1
    - Dst: auth_master_user_list_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:476,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:477,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - input
    - users
    argTypes:
    - struct auth_master_connection*
    - struct authtest_input*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 459
    functionDepth: 5
    functionLinenumber: 459
    functionLinenumberEnd: 478
    functionName: cmd_user_list
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 1
    functionsReached:
    - printf
    - i_fatal
    - auth_master_user_list_init
    - auth_master_user_list_deinit
    - auth_master_user_list_next
    linkageType: ''
    returnType: void
    signature: "void cmd_user_list(struct auth_master_connection *conn,\n\t      const
      struct authtest_input *input,\n\t      const char *const *users)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:487,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:488,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:491,1
    - Dst: doveadm_get_auth_master_conn
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:493,1
    - Dst: auth_master_cache_flush
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:494,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:495,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:498,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 480
    functionDepth: 9
    functionLinenumber: 480
    functionLinenumberEnd: 501
    functionName: cmd_auth_cache_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - auth_master_deinit
    - printf
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - auth_master_cache_flush
    - e_error
    - doveadm_get_auth_master_conn
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void cmd_auth_cache_flush(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_clients_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:505,1
    - Dst: dsasl_clients_init_gssapi
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:507,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:510,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:511,1
    - Dst: auth_want_log_debug
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct authtest_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 503
    functionDepth: 4
    functionLinenumber: 503
    functionLinenumberEnd: 516
    functionName: authtest_input_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - dsasl_clients_init
    - dsasl_clients_init_gssapi
    - auth_want_log_debug
    linkageType: ''
    returnType: void
    signature: void authtest_input_init(struct authtest_input *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:520,1
    - Dst: dsasl_clients_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct authtest_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 518
    functionDepth: 2
    functionLinenumber: 518
    functionLinenumberEnd: 523
    functionName: authtest_input_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - dsasl_clients_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void authtest_input_deinit(struct authtest_input *input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: authtest_input_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:531,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:532,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:533,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:534,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:535,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:536,1
    - Dst: auth_user_info_parse
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:537,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:539,1
    - Dst: auth_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:540,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:541,1
    - Dst: t_askpass
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:542,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:544,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:545,1
    - Dst: cmd_auth_input
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:546,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:551,1
    - Dst: authtest_input_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:552,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 525
    functionDepth: 5
    functionLinenumber: 525
    functionLinenumberEnd: 553
    functionName: cmd_auth_test
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - event_create
    - auth_user_info_parse
    - event_unref
    - t_askpass
    - event_set_append_log_prefix
    - doveadm_cmd_param_array
    - t_strdup_printf
    - doveadm_cmd_param_str
    - authtest_input_init
    - auth_cmd_help
    - authtest_input_deinit
    - cmd_auth_input
    linkageType: ''
    returnType: void
    signature: void cmd_auth_test(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:561,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:563,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:568,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:569,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - auth_args
    - errormsg
    - context
    argTypes:
    - char**
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 576
    functionName: login_server_auth_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - e_error
    - io_loop_stop
    - printf
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_callback(const char *const *auth_args,\n\t\t\t
      \  const char *errormsg, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:586,1
    - Dst: getpid
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:590,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:594,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:596,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:597,1
    - Dst: login_server_auth_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:600,1
    - Dst: master_service_set_killed_callback
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:601,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:603,1
    - Dst: login_server_auth_request
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:604,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:606,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:607,1
    - Dst: login_server_auth_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - auth_master_socket_path
    - input
    argTypes:
    - char*
    - struct authtest_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 609
    functionName: cmd_auth_master_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - getpid
    - login_server_auth_request
    - master_service_set_killed_callback
    - hex_to_binary
    - strlen
    - login_server_auth_deinit
    - login_server_auth_init
    - io_loop_is_running
    - io_loop_set_running
    - buffer_create_from_data
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: "void cmd_auth_master_input(const char *auth_master_socket_path,\n\t\t
      \     struct authtest_input *input)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: authtest_input_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:618,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:619,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:622,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:625,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:628,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:631,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:632,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:633,1
    - Dst: auth_user_info_parse
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:634,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:635,1
    - Dst: auth_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:636,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:637,1
    - Dst: t_askpass
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:638,1
    - Dst: cmd_auth_init_sasl_client
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:640,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:642,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:643,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:644,1
    - Dst: auth_client_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:646,1
    - Dst: getpid
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:646,1
    - Dst: auth_want_log_debug
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:647,1
    - Dst: master_service_set_killed_callback
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:648,1
    - Dst: auth_client_connect
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:649,1
    - Dst: auth_client_set_connect_notify
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:650,1
    - Dst: auth_client_is_disconnected
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:651,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:652,1
    - Dst: auth_client_set_connect_notify
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:653,1
    - Dst: cmd_auth_master_input
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:656,1
    - Dst: auth_client_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:661,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:662,1
    - Dst: cmd_auth_deinit_sasl_client
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:663,1
    - Dst: authtest_input_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:664,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 611
    functionDepth: 5
    functionLinenumber: 611
    functionLinenumberEnd: 665
    functionName: cmd_auth_login
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - getpid
    - event_unref
    - t_strdup_printf
    - auth_cmd_help
    - auth_want_log_debug
    - io_loop_run
    - cmd_auth_deinit_sasl_client
    - auth_client_init
    - cmd_auth_init_sasl_client
    - event_set_append_log_prefix
    - auth_client_connect
    - event_create
    - master_service_set_killed_callback
    - authtest_input_init
    - auth_client_set_connect_notify
    - authtest_input_deinit
    - auth_user_info_parse
    - t_askpass
    - auth_client_is_disconnected
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - auth_client_deinit
    - cmd_auth_master_input
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void cmd_auth_login(struct doveadm_cmd_context *cctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: authtest_input_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:677,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:678,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:680,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:681,1
    - Dst: auth_user_info_parse
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:682,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:683,1
    - Dst: auth_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:684,1
    - Dst: doveadm_get_auth_master_conn
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:686,1
    - Dst: putchar
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:692,1
    - Dst: cmd_user_input
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:694,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:704,1
    - Dst: authtest_input_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:705,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 667
    functionDepth: 9
    functionLinenumber: 667
    functionLinenumberEnd: 706
    functionName: cmd_auth_lookup
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - auth_user_info_parse
    - cmd_user_input
    - auth_master_deinit
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - authtest_input_init
    - auth_cmd_help
    - doveadm_get_auth_master_conn
    - authtest_input_deinit
    - putchar
    linkageType: ''
    returnType: void
    signature: void cmd_auth_lookup(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:712,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:713,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:714,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:715,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - key
    - value
    - show_field
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 708
    functionDepth: 3
    functionLinenumber: 708
    functionLinenumberEnd: 717
    functionName: cmd_user_mail_input_field
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 1
    functionsReached:
    - strcmp
    - doveadm_print
    - printf
    linkageType: ''
    returnType: void
    signature: "void cmd_user_mail_input_field(const char *key, const char *value,\n\t\t\t\t
      \     const char *show_field)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:729,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:730,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:731,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:732,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:733,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:734,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:738,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:740,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:745,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:746,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:747,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:748,1
    - Dst: cmd_user_mail_input_field
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:749,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 5
    argNames:
    - input
    - user
    - mail_set
    - userdb_fields
    - show_field
    argTypes:
    - struct authtest_input*
    - struct mail_user*
    - struct mail_storage_settings*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 752
    functionName: cmd_user_mail_print_fields
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strchr
    - t_strdup_until
    - cmd_user_mail_input_field
    linkageType: ''
    returnType: void
    signature: "void cmd_user_mail_print_fields(const struct authtest_input *input,\n\t\t\t
      \  struct mail_user *user,\n\t\t\t   const struct mail_storage_settings *mail_set,\n\t\t\t
      \  const char *const *userdb_fields,\n\t\t\t   const char *show_field)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:766,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:775,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:778,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:781,1
    - Dst: settings_get
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:786,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:788,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:789,1
    - Dst: mail_storage_service_user_get_userdb_fields
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:794,1
    - Dst: cmd_user_mail_print_fields
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:795,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:798,1
    - Dst: mail_user_var_expand_params
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:800,1
    - Dst: var_expand
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:801,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:802,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:804,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:804,1
    - Dst: settings_free
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:808,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:809,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 5
    argNames:
    - storage_service
    - input
    - show_field
    - expand_field
    - event
    argTypes:
    - struct mail_storage_service_ctx*
    - struct authtest_input*
    - char*
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 754
    functionDepth: 9
    functionLinenumber: 754
    functionLinenumberEnd: 811
    functionName: cmd_user_mail_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 1
    functionsReached:
    - i_zero
    - str_c
    - mail_user_deinit
    - t_str_new
    - cmd_user_mail_print_fields
    - mail_storage_service_lookup_next
    - printf
    - settings_free
    - e_error
    - mail_user_var_expand_params
    - fprintf
    - settings_get
    - var_expand
    - mail_storage_service_user_get_userdb_fields
    linkageType: ''
    returnType: int
    signature: "int cmd_user_mail_input(struct mail_storage_service_ctx *storage_service,\n\t\t
      \   const struct authtest_input *input,\n\t\t    const char *show_field, const
      char *expand_field,\n\t\t    struct event *event)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: authtest_input_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:825,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:826,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:828,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:829,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:830,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:831,1
    - Dst: auth_user_info_parse
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:832,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:833,1
    - Dst: auth_cmd_help
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:834,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:837,1
    - Dst: authtest_input_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:839,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:843,1
    - Dst: authtest_input_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:845,1
    - Dst: doveadm_get_auth_master_conn
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:849,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:853,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:854,1
    - Dst: cmd_user_list
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:861,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:862,1
    - Dst: authtest_input_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:863,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:868,1
    - Dst: mail_storage_service_set_auth_conn
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:875,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:878,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:879,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:880,1
    - Dst: putchar
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:889,1
    - Dst: cmd_user_mail_input
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:892,1
    - Dst: cmd_user_input
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:894,1
    - Dst: mail_storage_service_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:905,1
    - Dst: auth_master_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:907,1
    - Dst: authtest_input_deinit
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:908,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 67
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 813
    functionDepth: 11
    functionLinenumber: 813
    functionLinenumberEnd: 909
    functionName: cmd_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 1
    functionsReached:
    - strchr
    - mail_storage_service_deinit
    - doveadm_print_init
    - cmd_user_mail_input
    - mail_storage_service_set_auth_conn
    - auth_cmd_help
    - doveadm_cmd_param_bool
    - putchar
    - auth_master_deinit
    - cmd_user_input
    - mail_storage_service_init
    - doveadm_print_header_simple
    - doveadm_get_auth_master_conn
    - authtest_input_init
    - e_error
    - authtest_input_deinit
    - cmd_user_list
    - auth_user_info_parse
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    linkageType: ''
    returnType: void
    signature: void cmd_user(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:978,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:980,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:982,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 974
    functionDepth: 1
    functionLinenumber: 974
    functionLinenumberEnd: 983
    functionName: auth_cmd_help
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 4
    functionsReached:
    - N_ELEMENTS
    - help_ver2
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void auth_cmd_help(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:989,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm-auth.c:990,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 985
    functionDepth: 2
    functionLinenumber: 985
    functionLinenumberEnd: 991
    functionName: doveadm_register_auth_commands
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-auth.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_register_auth_commands(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:30,1
    - Dst: buffer_append_full_file
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:31,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:33,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:36,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - file
    - data_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 38
    functionName: load_key_from_file
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_strdup_printf
    - t_buffer_create
    - buffer_append_full_file
    - t_str_rtrim
    linkageType: ''
    returnType: int
    signature: "int load_key_from_file(const char *file, const char **data_r,\n\t\t\t
      \     const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:48,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:50,1
    - Dst: dcrypt_key_type_public
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:53,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:55,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:57,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:59,1
    - Dst: dcrypt_key_id_public
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:60,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:61,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:63,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:64,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:67,1
    - Dst: dcrypt_key_id_public_old
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:68,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:69,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:73,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:75,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:81,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:82,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:84,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:85,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:85,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:88,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - cctx
    - buf
    - ctx
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - struct dcrypt_dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 89
    functionName: dcrypt_dump_public_key_metadata
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - dcrypt_key_load_public
    - printf
    - i_fatal
    - dcrypt_key_id_public
    - dcrypt_key_id_public_old
    - dcrypt_key_store_public
    - buffer_set_used_size
    - e_error
    - dcrypt_key_unref_public
    - binary_to_hex
    - dcrypt_key_type_public
    linkageType: ''
    returnType: void
    signature: "void dcrypt_dump_public_key_metadata(struct doveadm_cmd_context *cctx,\n\t\t\t\tconst
      char *buf,\n\t\t\t\tconst struct dcrypt_dump_context *ctx)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: load_key_from_file
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:104,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:106,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:110,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:113,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:117,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:128,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:130,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:139,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:141,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:143,1
    - Dst: dcrypt_key_type_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:146,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:148,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:150,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:152,1
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:153,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:154,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:156,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:157,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:160,1
    - Dst: dcrypt_key_id_private_old
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:161,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:162,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:165,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:167,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:173,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:174,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:176,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:177,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:177,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:180,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 3
    argNames:
    - cctx
    - buf
    - ctx
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - struct dcrypt_dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 181
    functionName: dcrypt_dump_private_key_metadata
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - load_key_from_file
    - dcrypt_key_id_private
    - printf
    - i_fatal
    - dcrypt_key_store_private
    - dcrypt_key_unref_private
    - buffer_set_used_size
    - e_error
    - dcrypt_key_type_private
    - dcrypt_key_id_private_old
    - dcrypt_key_load_private
    - binary_to_hex
    - dcrypt_key_string_get_info
    linkageType: ''
    returnType: void
    signature: "void dcrypt_dump_private_key_metadata(struct doveadm_cmd_context *cctx,\n\t\t\t\t
      const char *buf,\n\t\t\t\t const struct dcrypt_dump_context *ctx)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: load_key_from_file
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:197,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:199,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:203,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:207,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:215,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:218,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:221,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:226,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:229,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:232,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:238,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:241,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:247,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:250,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:253,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:258,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:260,1
    - Dst: dcrypt_dump_public_key_metadata
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:264,1
    - Dst: dcrypt_dump_private_key_metadata
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:269,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 68
    argCount: 4
    argNames:
    - cctx
    - filename
    - print
    - ctx
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - bool
    - struct dcrypt_dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 273
    functionName: dcrypt_key_dump_metadata
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c
    functionUses: 0
    functionsReached:
    - dcrypt_key_string_get_info
    - load_key_from_file
    - printf
    - dcrypt_dump_private_key_metadata
    - e_error
    - dcrypt_dump_public_key_metadata
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_dump_metadata(struct doveadm_cmd_context *cctx,\n\t\t\t\t
      \    const char *filename, bool print,\n\t\t\t\t     const struct dcrypt_dump_context
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:280,1
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:282,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:283,1
    - Dst: dcrypt_key_dump_metadata
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - cctx
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 275
    functionDepth: 4
    functionLinenumber: 275
    functionLinenumberEnd: 288
    functionName: test_dump_dcrypt_key
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dcrypt_key_dump_metadata
    - dcrypt_initialize
    - e_error
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_dcrypt_key(struct doveadm_cmd_context *cctx,\n\t\t\t\t
      const char *path)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:295,1
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:297,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:298,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:301,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:302,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:303,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:305,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:307,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:309,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:311,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:313,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:316,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:318,1
    - Dst: dcrypt_key_dump_metadata
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c:321,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - cctx
    - path
    - args
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 322
    functionName: cmd_dump_dcrypt_key
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-key.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - dcrypt_key_dump_metadata
    - i_fatal
    - strcasecmp
    - t_split_key_value_eq
    - dcrypt_initialize
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_dcrypt_key(struct doveadm_cmd_context *cctx,\n\t\t\t\tconst
      char *path, const char *const *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:85,1
    - Dst: i_get_failure_prefix
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:89,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:90,1
    - Dst: doveadm_log_type_to_char
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:91,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:92,1
    - Dst: va_copy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:94,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:95,1
    - Dst: va_end
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:96,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:99,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:101,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:102,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:105,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:106,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:107,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:108,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:114,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:116,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:117,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 120
    functionName: doveadm_server_log_handler
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - va_copy
    - strchr
    - i_get_failure_prefix
    - o_stream_uncork
    - io_loop_set_current
    - strlen
    - doveadm_log_type_to_char
    - o_stream_cork
    - t_strdup_vprintf
    - o_stream_nsend
    - o_stream_is_corked
    - va_end
    linkageType: ''
    returnType: void
    signature: "void doveadm_server_log_handler(const struct failure_context *ctx,\n\t\t\t
      \  const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:140,1
    - Dst: i_get_failure_handlers
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:141,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:143,1
    - Dst: i_set_info_handler
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:144,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: doveadm_server_capture_logs
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_set_debug_handler
    - i_set_error_handler
    - i_set_info_handler
    - i_get_failure_handlers
    linkageType: ''
    returnType: void
    signature: void doveadm_server_capture_logs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:150,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:151,1
    - Dst: i_set_info_handler
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:152,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 158
    functionName: doveadm_server_restore_logs
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_set_info_handler
    - i_set_debug_handler
    - i_set_error_handler
    linkageType: ''
    returnType: void
    signature: void doveadm_server_restore_logs(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:167,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:168,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:168,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:174,1
    - Dst: doveadm_exit_code_to_str
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:178,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:181,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:182,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:184,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - cctx
    argTypes:
    - struct client_connection_tcp*
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 189
    functionName: doveadm_cmd_server_post
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - doveadm_exit_code_to_str
    - e_error
    - o_stream_nsend
    - o_stream_nsend_str
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void doveadm_cmd_server_post(struct client_connection_tcp *conn,\n\t\t\tstruct
      doveadm_cmd_context *cctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_getopt_reset
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:196,1
    - Dst: doveadm_cmdline_run
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:197,1
    - Dst: doveadm_cmd_server_post
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - conn
    - argc
    - argv
    - cctx
    argTypes:
    - struct client_connection_tcp*
    - int
    - char*[]
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 191
    functionDepth: 4
    functionLinenumber: 191
    functionLinenumberEnd: 200
    functionName: doveadm_cmd_server_run_ver2
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - doveadm_cmdline_run
    - doveadm_cmd_server_post
    - i_getopt_reset
    linkageType: ''
    returnType: void
    signature: "void doveadm_cmd_server_run_ver2(struct client_connection_tcp *conn,\n\t\t\t
      \   int argc, const char *const argv[],\n\t\t\t    struct doveadm_cmd_context
      *cctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmdline_find_with_args
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:210,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:211,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:220,1
    - Dst: o_stream_switch_ioloop
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:221,1
    - Dst: o_stream_switch_ioloop
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:223,1
    - Dst: doveadm_cmd_server_run_ver2
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:225,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:227,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:229,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:230,1
    - Dst: doveadm_print_deinit
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:233,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 5
    argNames:
    - conn
    - cmd_name
    - argc
    - argv
    - cctx
    argTypes:
    - struct client_connection_tcp*
    - char*
    - int
    - char*[]
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 202
    functionDepth: 5
    functionLinenumber: 202
    functionLinenumberEnd: 239
    functionName: doveadm_cmd_handle
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_server_run_ver2
    - o_stream_switch_ioloop_to
    - doveadm_print_init
    - io_loop_destroy
    - io_loop_create
    - e_error
    - doveadm_cmdline_find_with_args
    - doveadm_print_deinit
    - o_stream_switch_ioloop
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmd_handle(struct client_connection_tcp *conn,\n\t\t\t
      \     const char *cmd_name,\n\t\t\t      int argc, const char *const argv[],\n\t\t\t
      \     struct doveadm_cmd_context *cctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:243,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:245,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:246,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:246,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:247,1
    - Dst: doveadm_server_capture_logs
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 249
    functionName: client_connection_log_passthrough
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - o_stream_set_name
    - t_strdup_printf
    - o_stream_multiplex_add_channel
    - o_stream_set_no_error_handling
    - doveadm_server_capture_logs
    linkageType: ''
    returnType: void
    signature: void client_connection_log_passthrough(struct client_connection_tcp
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:256,1
    - Dst: client_connection_log_passthrough
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:258,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - options
    argTypes:
    - struct client_connection_tcp*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 263
    functionName: client_handle_options
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - strcmp
    - client_connection_log_passthrough
    linkageType: ''
    returnType: void
    signature: "void client_handle_options(struct client_connection_tcp *conn,\n\t\t
      \     const char *const *options)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:270,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:273,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:293,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:297,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:305,1
    - Dst: client_handle_options
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:306,1
    - Dst: doveadm_client_is_allowed_command
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:310,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:311,1
    - Dst: client_connection_set_proctitle
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:317,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:318,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:321,1
    - Dst: doveadm_cmd_handle
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:322,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:323,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:324,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:325,1
    - Dst: client_connection_set_proctitle
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:326,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:329,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 3
    argNames:
    - conn
    - cctx
    - args
    argTypes:
    - struct client_connection_tcp*
    - struct doveadm_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 265
    functionDepth: 6
    functionLinenumber: 265
    functionLinenumberEnd: 331
    functionName: client_handle_command_ctx
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - strcmp
    - client_connection_set_proctitle
    - t_strsplit_tabescaped
    - io_remove
    - o_stream_uncork
    - str_array_length
    - o_stream_cork
    - doveadm_cmd_handle
    - io_add_istream
    - e_error
    - o_stream_nsend
    - o_stream_flush
    - client_handle_options
    - doveadm_client_is_allowed_command
    linkageType: ''
    returnType: bool
    signature: "bool client_handle_command_ctx(struct client_connection_tcp *conn,\n\t\t\t\t
      \     struct doveadm_cmd_context *cctx,\n\t\t\t\t      const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_context_create
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:336,1
    - Dst: client_handle_command_ctx
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:344,1
    - Dst: doveadm_cmd_context_unref
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct client_connection_tcp*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 333
    functionDepth: 7
    functionLinenumber: 333
    functionLinenumberEnd: 347
    functionName: client_handle_command
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 1
    functionsReached:
    - doveadm_cmd_context_unref
    - doveadm_cmd_context_create
    - client_handle_command_ctx
    linkageType: ''
    returnType: bool
    signature: "bool client_handle_command(struct client_connection_tcp *conn,\n\t\t\t\t
      \ const char *const *args)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:358,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:365,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:370,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:371,1
    - Dst: client_connection_tcp_init_ssl
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:372,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:374,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:380,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:381,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:387,1
    - Dst: base64_decode
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:388,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:388,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:389,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:397,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:398,1
    - Dst: t_strndup
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:402,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:403,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:403,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:404,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:405,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:406,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 411
    functionName: client_connection_tcp_authenticate
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - strcmp
    - base64_decode
    - io_add_istream
    - str_begins
    - io_remove
    - strlen
    - client_connection_tcp_init_ssl
    - t_buffer_create
    - t_strndup
    - i_stream_read_next_line
    - e_error
    - mem_equals_timing_safe
    - memcmp
    linkageType: ''
    returnType: int
    signature: int client_connection_tcp_authenticate(struct client_connection_tcp
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:418,1
    - Dst: strerror
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:421,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 425
    functionName: client_log_disconnect_error
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - e_error
    - ssl_iostream_get_last_error
    - strerror
    linkageType: ''
    returnType: void
    signature: void client_log_disconnect_error(struct client_connection_tcp *conn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:435,1
    - Dst: client_log_disconnect_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:437,1
    - Dst: client_connection_tcp_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:438,1
    - Dst: version_string_verify_full
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:442,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:445,1
    - Dst: client_connection_tcp_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:448,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:453,1
    - Dst: client_connection_tcp_send_auth_handshake
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:456,1
    - Dst: client_connection_tcp_authenticate
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:460,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:462,1
    - Dst: client_connection_tcp_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:463,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:467,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:475,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:477,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:477,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:478,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:479,1
    - Dst: client_connection_log_passthrough
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:485,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:491,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:495,1
    - Dst: client_handle_command
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:496,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 427
    functionDepth: 3
    functionLinenumber: 427
    functionLinenumberEnd: 498
    functionName: client_connection_tcp_input
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - client_log_disconnect_error
    - o_stream_set_name
    - t_strsplit_tabescaped
    - o_stream_unref
    - o_stream_create_multiplex
    - client_connection_tcp_authenticate
    - client_connection_tcp_destroy
    - i_stream_read_next_line
    - e_error
    - o_stream_set_no_error_handling
    - o_stream_nsend
    - client_connection_log_passthrough
    - client_handle_command
    - o_stream_nsend_str
    - version_string_verify_full
    - client_connection_tcp_send_auth_handshake
    linkageType: ''
    returnType: void
    signature: void client_connection_tcp_input(struct client_connection_tcp *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_autocreate_ssl_server
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:514,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:517,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:520,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:521,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:522,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 503
    functionDepth: 5
    functionLinenumber: 503
    functionLinenumberEnd: 526
    functionName: client_connection_tcp_init_ssl
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 1
    functionsReached:
    - e_error
    - ssl_iostream_get_last_error
    - io_stream_autocreate_ssl_server
    - ssl_iostream_handshake
    linkageType: ''
    returnType: int
    signature: int client_connection_tcp_init_ssl(struct client_connection_tcp *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_getunixname
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:536,1
    - Dst: stat
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:537,1
    - Dst: S_ISSOCK
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - listen_fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 539
    functionName: client_connection_is_preauthenticated
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - stat
    - S_ISSOCK
    - net_getunixname
    linkageType: ''
    returnType: bool
    signature: bool client_connection_is_preauthenticated(int listen_fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:547,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 551
    functionName: client_connection_tcp_send_auth_handshake
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 1
    functionsReached:
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void client_connection_tcp_send_auth_handshake(struct client_connection_tcp
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:559,1
    - Dst: doveadm_print_deinit
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:561,1
    - Dst: doveadm_server_restore_logs
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:565,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:566,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:568,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:570,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:571,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:572,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 553
    functionDepth: 2
    functionLinenumber: 553
    functionLinenumberEnd: 574
    functionName: client_connection_tcp_free
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 0
    functionsReached:
    - i_assert
    - io_remove
    - o_stream_unref
    - i_close_fd
    - ssl_iostream_destroy
    - doveadm_server_restore_logs
    - doveadm_print_deinit
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void client_connection_tcp_free(struct client_connection *_conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:582,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:583,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:584,1
    - Dst: settings_event_add_filter_name
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:585,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:586,1
    - Dst: client_connection_init
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:589,1
    - Dst: client_connection_tcp_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:591,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:596,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:598,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:599,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:600,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:601,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:602,1
    - Dst: client_connection_tcp_init_ssl
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:605,1
    - Dst: client_connection_tcp_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:606,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:611,1
    - Dst: client_connection_is_preauthenticated
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:613,1
    - Dst: client_connection_set_proctitle
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - fd
    - listen_fd
    - ssl
    argTypes:
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 576
    functionDepth: 6
    functionLinenumber: 576
    functionLinenumberEnd: 617
    functionName: client_connection_tcp_create
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - event_create
    - i_stream_create_fd
    - p_new
    - o_stream_create_fd
    - io_add_istream
    - o_stream_set_name
    - event_set_append_log_prefix
    - doveadm_print_init
    - settings_event_add_filter_name
    - i_stream_set_name
    - client_connection_tcp_init_ssl
    - client_connection_tcp_destroy
    - client_connection_set_proctitle
    - o_stream_set_no_error_handling
    - client_connection_init
    - client_connection_is_preauthenticated
    linkageType: ''
    returnType: struct client_connection
    signature: 'struct client_connection *

      client_connection_tcp_create(int fd, int listen_fd, bool ssl)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_connection_destroy
      Src: /src/dovecot/src/doveadm/client-connection-tcp.c:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct client_connection_tcp**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 627
    functionName: client_connection_tcp_destroy
    functionSourceFile: /src/dovecot/src/doveadm/client-connection-tcp.c
    functionUses: 2
    functionsReached:
    - client_connection_destroy
    linkageType: ''
    returnType: void
    signature: void client_connection_tcp_destroy(struct client_connection_tcp **_conn)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:57,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - error
    argTypes:
    - struct doveadm_mail_cmd_context*
    - enum mail_error
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 94
    functionName: doveadm_mail_failed_error
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 21
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_failed_error(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \      enum mail_error error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:101,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - storage
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 103
    functionName: doveadm_mail_failed_storage
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 1
    functionsReached:
    - mail_storage_get_last_error
    - doveadm_mail_failed_error
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_failed_storage(struct doveadm_mail_cmd_context *ctx,\n\t\t\t\t
      struct mail_storage *storage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_failed_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:108,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - box
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: doveadm_mail_failed_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 25
    functionsReached:
    - doveadm_mail_failed_storage
    - mailbox_get_storage
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_failed_mailbox(struct doveadm_mail_cmd_context *ctx,\n\t\t\t\t
      struct mailbox *box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_last_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:116,1
    - Dst: doveadm_mail_failed_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - list
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: doveadm_mail_failed_list
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_failed_error
    - mailbox_list_get_last_error
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_failed_list(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \     struct mailbox_list *list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:126,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:128,1
    - Dst: p_malloc
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 133
    functionName: doveadm_mail_cmd_alloc_size
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      doveadm_mail_cmd_alloc_size(size_t size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:147,1
    - Dst: mail_storage_purge
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:148,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:149,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:151,1
    - Dst: doveadm_mail_failed_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:152,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 157
    functionName: cmd_purge_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_failed_storage
    - mail_storage_get_last_internal_error
    - mail_namespace_get_default_storage
    - mail_storage_purge
    - e_error
    linkageType: ''
    returnType: int
    signature: int cmd_purge_run(struct doveadm_mail_cmd_context *ctx, struct mail_user
      *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 166
    functionName: cmd_purge_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_purge_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:173,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:174,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:179,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:180,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:181,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 184
    functionName: doveadm_mail_cmd_input_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - i_stream_skip
    - e_error
    - i_stream_get_error
    - io_loop_stop
    - i_stream_get_name
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_cmd_input_input(struct doveadm_mail_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:190,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:192,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:192,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:193,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 197
    functionName: doveadm_mail_cmd_input_timeout
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - i_stream_set_name
    - io_loop_stop
    - i_stream_create_error_str
    - i_stream_get_name
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_cmd_input_timeout(struct doveadm_mail_cmd_context
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:205,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:208,1
    - Dst: doveadm_mail_cmd_input_input
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:209,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:210,1
    - Dst: io_add
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:211,1
    - Dst: timeout_add
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:213,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:215,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:216,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:217,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:219,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:221,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 223
    functionName: doveadm_mail_cmd_input_read
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_input_input
    - io_add
    - io_remove
    - timeout_add
    - io_loop_destroy
    - io_loop_create
    - io_loop_is_running
    - io_loop_set_running
    - i_stream_seek
    - i_assert
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_cmd_input_read(struct doveadm_mail_cmd_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:235,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:241,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:245,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:246,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:249,1
    - Dst: i_stream_create_seekable_path
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:250,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:252,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:252,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:253,1
    - Dst: doveadm_mail_cmd_input_read
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 256
    functionName: doveadm_mail_get_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 1
    functionsReached:
    - i_stream_create_fd
    - i_stream_create_seekable_path
    - doveadm_mail_cmd_input_read
    - i_stream_get_fd
    - i_stream_set_name
    - i_stream_create_error_str
    - i_stream_unref
    - i_stream_create_dot
    - i_stream_get_name
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_get_input(struct doveadm_mail_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:261,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:264,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:265,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 267
    functionName: doveadm_mail_get_forward_fields
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 1
    functionsReached:
    - array_append_zero
    - array_is_created
    - array_pop_back
    - array_front
    linkageType: ''
    returnType: char
    signature: 'char *const *

      doveadm_mail_get_forward_fields(struct doveadm_mail_cmd_context *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:274,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:275,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:279,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - user
    - mailbox
    argTypes:
    - struct mail_user*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 269
    functionDepth: 4
    functionLinenumber: 269
    functionLinenumberEnd: 281
    functionName: doveadm_mailbox_find
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 3
    functionsReached:
    - uni_utf8_str_is_valid
    - i_fatal_status
    - mail_namespace_find
    - mailbox_alloc
    linkageType: ''
    returnType: struct mailbox
    signature: 'struct mailbox *

      doveadm_mailbox_find(struct mail_user *user, const char *mailbox)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_parser_init_cmdline
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:290,1
    - Dst: mail_search_build
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:291,1
    - Dst: mail_search_register_get_human
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:291,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:293,1
    - Dst: mail_search_parser_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 283
    functionDepth: 5
    functionLinenumber: 283
    functionLinenumberEnd: 296
    functionName: doveadm_mail_build_search_args
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 9
    functionsReached:
    - mail_search_parser_deinit
    - i_fatal
    - mail_search_parser_init_cmdline
    - mail_search_build
    - mail_search_register_get_human
    linkageType: ''
    returnType: struct mail_search_args
    signature: 'struct mail_search_args *

      doveadm_mail_build_search_args(const char *const args[])'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:302,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:312,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:313,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:314,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:316,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:317,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:319,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:321,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:323,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:324,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - _ctx
    - info
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 298
    functionDepth: 11
    functionLinenumber: 298
    functionLinenumberEnd: 329
    functionName: cmd_force_resync_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - container_of
    - mailbox_open
    - mailbox_get_last_internal_error
    - mailbox_free
    - mailbox_sync
    - e_error
    - mailbox_alloc
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: "int cmd_force_resync_box(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\tconst
      struct mailbox_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_user_get_settings_instance
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:336,1
    - Dst: settings_override
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - service_user
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_storage_service_user*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 341
    functionName: cmd_force_resync_prerun
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - settings_override
    - mail_storage_service_user_get_settings_instance
    linkageType: ''
    returnType: int
    signature: "int cmd_force_resync_prerun(struct doveadm_mail_cmd_context *ctx ATTR_UNUSED,\n\t\t\t\t
      \  struct mail_storage_service_user *service_user,\n\t\t\t\t   const char **error_r
      ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:347,1
    - Dst: mailbox_list_iter_init_namespaces
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:364,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:366,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:369,1
    - Dst: cmd_force_resync_box
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:369,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 343
    functionDepth: 12
    functionLinenumber: 343
    functionLinenumberEnd: 372
    functionName: cmd_force_resync_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - container_of
    - mailbox_list_iter_next
    - if
    - mailbox_list_iter_init_namespaces
    - cmd_force_resync_box
    linkageType: ''
    returnType: int
    signature: "int cmd_force_resync_run(struct doveadm_mail_cmd_context *_ctx,\n\t\t\t\tstruct
      mail_user *user)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:388,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:390,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:391,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 393
    functionName: cmd_force_resync_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_help_name
    - doveadm_cmd_param_str
    - container_of
    - doveadm_cmd_param_flag
    linkageType: ''
    returnType: void
    signature: void cmd_force_resync_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 404
    functionName: cmd_force_resync_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_force_resync_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:412,1
    - Dst: doveadm_mail_get_forward_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - input_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_storage_service_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 420
    functionName: doveadm_mail_ctx_to_storage_service_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - i_zero
    - doveadm_mail_get_forward_fields
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_ctx_to_storage_service_input(struct doveadm_mail_cmd_context
      *ctx,\n\t\t\t\t\t  struct mail_storage_service_input *input_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:431,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:433,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:435,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:437,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:439,1
    - Dst: doveadm_mail_server_user
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:443,1
    - Dst: doveadm_mail_ctx_to_storage_service_input
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:447,1
    - Dst: mail_storage_service_lookup
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:448,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:452,1
    - Dst: doveadm_print_is_initialized
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:458,1
    - Dst: doveadm_print_sticky
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:459,1
    - Dst: struct doveadm_mail_cmd_context*::v::prerun
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:463,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:464,1
    - Dst: mail_storage_service_user_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:466,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 422
    functionDepth: 8
    functionLinenumber: 422
    functionLinenumberEnd: 469
    functionName: doveadm_mail_next_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - T_END_PASS_STR_IF
    - doveadm_mail_server_user
    - t_strdup_printf
    - doveadm_print_is_initialized
    - i_set_failure_prefix
    - struct doveadm_mail_cmd_context*::v::prerun
    - net_ip2addr
    - i_stream_seek
    - mail_storage_service_lookup
    - doveadm_mail_ctx_to_storage_service_input
    - i_assert
    - doveadm_print_sticky
    - mail_storage_service_user_unref
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_next_user(struct doveadm_mail_cmd_context *ctx,\n\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:523,1
    - Dst: doveadm_mail_ctx_to_storage_service_input
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:525,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:526,1
    - Dst: struct doveadm_mail_cmd_context*::v::init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 518
    functionDepth: 4
    functionLinenumber: 518
    functionLinenumberEnd: 530
    functionName: doveadm_mail_single_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_init
    - doveadm_mail_ctx_to_storage_service_input
    - i_assert
    - struct doveadm_mail_cmd_context*::v::init
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_ctx_to_storage_service_input
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:554,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:555,1
    - Dst: struct doveadm_mail_cmd_context*::v::init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - wildcard_user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 543
    functionDepth: 4
    functionLinenumber: 543
    functionLinenumberEnd: 560
    functionName: doveadm_mail_all_users
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - mail_storage_service_init
    - doveadm_mail_ctx_to_storage_service_input
    - struct doveadm_mail_cmd_context*::v::init
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx,\n\t\t
      \      const char *wildcard_user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 615
    functionDepth: 0
    functionLinenumber: 615
    functionLinenumberEnd: 618
    functionName: doveadm_mail_cmd_init_noop
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_cmd_init_noop(struct doveadm_mail_cmd_context *ctx
      ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_all_next
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:625,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:627,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:629,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:630,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - username_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 620
    functionDepth: 11
    functionLinenumber: 620
    functionLinenumberEnd: 635
    functionName: doveadm_mail_cmd_get_next_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - i_stream_read_next_line
    - e_error
    - i_stream_get_error
    - i_stream_get_name
    - mail_storage_service_all_next
    linkageType: ''
    returnType: int
    signature: "int doveadm_mail_cmd_get_next_user(struct doveadm_mail_cmd_context
      *ctx,\n\t\t\t       const char **username_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 640
    functionName: doveadm_mail_cmd_deinit_noop
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_cmd_deinit_noop(struct doveadm_mail_cmd_context *ctx
      ATTR_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct doveadm_mail_cmd*::alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:648,1
    - Dst: doveadm_print_is_initialized
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:658,1
    - Dst: doveadm_print_init_disallow
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:661,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:664,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - cmd
    - set
    argTypes:
    - struct doveadm_mail_cmd*
    - struct doveadm_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 666
    functionName: doveadm_mail_cmd_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init_disallow
    - struct doveadm_mail_cmd*::alloc
    - p_array_init
    - doveadm_print_is_initialized
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: "struct doveadm_mail_cmd_context *\ndoveadm_mail_cmd_init(const struct
      doveadm_mail_cmd *cmd,\n\t\t      const struct doveadm_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct doveadm_mail_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 678
    functionName: doveadm_mail_cmdline_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_init
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      doveadm_mail_cmdline_init(const struct doveadm_mail_cmd *cmd)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct doveadm_mail_cmd_context*::v::preinit
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - wildcard_user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 691
    functionName: doveadm_mail_cmd_exec
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - struct doveadm_mail_cmd_context*::v::preinit
    linkageType: ''
    returnType: void
    signature: "void doveadm_mail_cmd_exec(struct doveadm_mail_cmd_context *ctx,\n\t\t
      \     const char *wildcard_user)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct doveadm_mail_cmd_context*::v::deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 736
    functionName: doveadm_mail_cmd_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - struct doveadm_mail_cmd_context*::v::deinit
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_cmd_deinit(struct doveadm_mail_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:743,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:744,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 746
    functionName: doveadm_mail_cmd_free
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_cmd_free(struct doveadm_mail_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:750,1
    - Dst: lib_exit
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct doveadm_mail_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 748
    functionDepth: 1
    functionLinenumber: 748
    functionLinenumberEnd: 753
    functionName: doveadm_mail_help
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - lib_exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_help(const struct doveadm_mail_cmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_find_ver2
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:759,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:761,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmd_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 755
    functionDepth: 1
    functionLinenumber: 755
    functionLinenumberEnd: 762
    functionName: doveadm_mail_try_help_name
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_cmd_find_ver2
    - help_ver2
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_try_help_name(const char *cmd_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_try_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:766,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 768
    functionName: doveadm_mail_help_name
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 43
    functionsReached:
    - doveadm_mail_try_help_name
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_help_name(const char *cmd_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:845,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:846,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 841
    functionDepth: 2
    functionLinenumber: 841
    functionLinenumberEnd: 847
    functionName: doveadm_mail_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 1
    functionsReached:
    - doveadm_cmd_register_ver2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:853,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:860,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:861,1
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:863,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:865,1
    - Dst: mail_storage_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:870,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 849
    functionDepth: 3
    functionLinenumber: 849
    functionLinenumberEnd: 871
    functionName: doveadm_mail_init_finish
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 1
    functionsReached:
    - i_zero
    - module_dir_load_missing
    - array_not_empty
    - settings_boollist_get
    - mail_storage_init
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_init_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:875,1
    - Dst: module_dir_unload
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 873
    functionDepth: 3
    functionLinenumber: 873
    functionLinenumberEnd: 877
    functionName: doveadm_mail_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 1
    functionsReached:
    - module_dir_unload
    - mail_storage_deinit
    linkageType: ''
    returnType: void
    signature: void doveadm_mail_deinit(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:889,1
    - Dst: doveadm_cmd_param_istream
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:891,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:892,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:893,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:897,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:898,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:907,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:909,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:911,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:914,1
    - Dst: p_memdup
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:916,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:918,1
    - Dst: doveadm_cmd_param_istream
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:924,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:925,1
    - Dst: doveadm_cmd_param_uint32
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:927,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 2
    argNames:
    - mctx
    - wildcard_user_r
    argTypes:
    - struct doveadm_mail_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 879
    functionDepth: 3
    functionLinenumber: 879
    functionLinenumberEnd: 928
    functionName: doveadm_cmdv2_wrapper_parse_common_options
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - strchr
    - doveadm_cmd_param_istream
    - p_strdup
    - doveadm_cmd_param_uint32
    - ENUM_NEGATE
    - i_stream_ref
    - i_fatal
    - doveadm_cmd_param_str
    - doveadm_cmd_param_flag
    - p_memdup
    linkageType: ''
    returnType: void
    signature: "void doveadm_cmdv2_wrapper_parse_common_options(struct doveadm_mail_cmd_context
      *mctx,\n\t\t\t\t\t   const char **wildcard_user_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:937,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:938,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:939,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:940,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:941,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:942,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:945,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:946,1
    - Dst: p_array_const_string_join
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:947,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:949,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:953,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:959,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:960,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:969,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:970,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:971,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:981,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:984,1
    - Dst: i_panic
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:990,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:993,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:994,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 43
    argCount: 4
    argNames:
    - mctx
    - arg
    - opt_args
    - pos_args
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct doveadm_cmd_param*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 995
    functionName: doveadm_cmdv2_wrapper_generate_full_arg
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dec2str
    - i_panic
    - array_push_back
    - p_array_const_string_join
    - array_foreach
    - net_ip2addr
    - ARRAY_TYPE
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void doveadm_cmdv2_wrapper_generate_full_arg(struct doveadm_mail_cmd_context
      *mctx,\n\t\t\t\t\tconst struct doveadm_cmd_param *arg,\n\t\t\t\t\tARRAY_TYPE(const_string)
      *opt_args,\n\t\t\t\t\tARRAY_TYPE(const_string) *pos_args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1001,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1002,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1003,1
    - Dst: doveadm_cmdv2_wrapper_generate_full_arg
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1006,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1010,1
    - Dst: array_append_array
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1011,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1012,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1013,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1014
    functionName: doveadm_cmdv2_wrapper_generate_args
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 1
    functionsReached:
    - p_array_init
    - array_push_back
    - doveadm_cmdv2_wrapper_generate_full_arg
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - array_append_array
    linkageType: ''
    returnType: char
    signature: 'char *const *

      doveadm_cmdv2_wrapper_generate_args(struct doveadm_mail_cmd_context *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmdline_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1027,1
    - Dst: doveadm_mail_cmd_init
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1029,1
    - Dst: doveadm_cmdv2_wrapper_parse_common_options
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1036,1
    - Dst: doveadm_mail_cmd_exec
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1037,1
    - Dst: doveadm_mail_cmd_free
      Src: /src/dovecot/src/doveadm/doveadm-mail.c:1038,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1016
    functionDepth: 4
    functionLinenumber: 1016
    functionLinenumberEnd: 1039
    functionName: doveadm_cmd_ver2_to_mail_cmd_wrapper
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail.c
    functionUses: 0
    functionsReached:
    - doveadm_cmdv2_wrapper_parse_common_options
    - doveadm_mail_cmdline_init
    - doveadm_mail_cmd_init
    - doveadm_mail_cmd_free
    - doveadm_mail_cmd_exec
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_ver2_to_mail_cmd_wrapper(struct doveadm_cmd_context
      *cctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:28,1
    - Dst: doveadm_mail_iter_get_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:32,1
    - Dst: mailbox_keywords_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:35,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:36,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:37,1
    - Dst: doveadm_mail_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:38,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:44,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:45,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:47,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:50,1
    - Dst: doveadm_mail_iter_deinit_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:51,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct flags_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 19
    functionDepth: 13
    functionLinenumber: 19
    functionLinenumberEnd: 52
    functionName: cmd_flags_run_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-flags.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - mailbox_keywords_unref
    - doveadm_mail_iter_get_mailbox
    - doveadm_mail_iter_init
    - mailbox_keywords_create
    - doveadm_mail_iter_deinit
    - e_error
    - mail_update_flags
    - doveadm_mail_iter_next
    - doveadm_mail_iter_deinit_sync
    - mail_update_keywords
    linkageType: ''
    returnType: int
    signature: "int cmd_flags_run_box(struct flags_cmd_context *ctx,\n\t\t  const
      struct mailbox_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:58,1
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:66,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:68,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:69,1
    - Dst: cmd_flags_run_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 54
    functionDepth: 14
    functionLinenumber: 54
    functionLinenumberEnd: 71
    functionName: cmd_flags_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-flags.c
    functionUses: 0
    functionsReached:
    - container_of
    - cmd_flags_run_box
    - if
    - doveadm_mailbox_list_iter_next
    - doveadm_mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: int cmd_flags_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:81,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:84,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:87,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:89,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:90,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:94,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:97,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:99,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:101,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:103,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:106,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:111,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:113,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:116,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:117,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:120,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:121,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:122,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:124,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 77
    functionDepth: 6
    functionLinenumber: 77
    functionLinenumberEnd: 125
    functionName: cmd_flags_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-flags.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - p_array_init
    - i_unreached
    - array_push_back
    - doveadm_cmd_param_array
    - i_fatal
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - imap_parse_system_flag
    - array_count
    - ARRAY_TYPE
    - array_front
    - t_strsplit_spaces
    - array_append_zero
    - doveadm_mail_build_search_args
    linkageType: ''
    returnType: void
    signature: void cmd_flags_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - modify_type
    argTypes:
    - enum modify_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: cmd_flag_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-flags.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: 'struct doveadm_mail_cmd_context *

      cmd_flag_alloc(enum modify_type modify_type)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_flag_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: cmd_flags_add_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-flags.c
    functionUses: 0
    functionsReached:
    - cmd_flag_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_flags_add_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_flag_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: cmd_flags_remove_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-flags.c
    functionUses: 0
    functionsReached:
    - cmd_flag_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_flags_remove_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_flag_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-flags.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: cmd_flags_replace_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-flags.c
    functionUses: 0
    functionsReached:
    - cmd_flag_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_flags_replace_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:36,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:39,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:40,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct anvil_reply*
    - struct kick_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 46
    functionName: kick_user_anvil_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-kick.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_to_uint
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void kick_user_anvil_callback(const struct anvil_reply *reply,\n\t\t\t
      struct kick_context *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:53,1
    - Dst: doveadm_who_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:55,1
    - Dst: doveadm_who_iter_init_filter
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:56,1
    - Dst: doveadm_who_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:57,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:58,1
    - Dst: doveadm_who_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:62,1
    - Dst: who_line_filter_match
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:63,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:65,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:66,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:67,1
    - Dst: doveadm_who_iter_deinit
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:69,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:71,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct kick_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 73
    functionName: kick_users_get_via_who
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-kick.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - p_array_init
    - doveadm_who_iter_deinit
    - doveadm_who_iter_next
    - who_line_filter_match
    - guid_128_copy
    - doveadm_who_iter_init_filter
    - e_error
    - doveadm_who_iter_init
    linkageType: ''
    returnType: void
    signature: void kick_users_get_via_who(struct kick_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:78,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:80,1
    - Dst: anvil_client_init
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:82,1
    - Dst: anvil_client_connect
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:83,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:85,1
    - Dst: anvil_client_deinit
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:86,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:90,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:91,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:93,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:94,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:95,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:96,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:97,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:98,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:101,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:102,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:103,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:104,1
    - Dst: anvil_client_query
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:107,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:107,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:110,1
    - Dst: anvil_client_deinit
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:112,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:113,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:115,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct kick_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 116
    functionName: kick_users_via_anvil
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-kick.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - doveadm_print
    - str_append_c
    - guid_128_to_string
    - io_loop_destroy
    - anvil_client_init
    - io_loop_create
    - anvil_client_connect
    - array_foreach
    - str_append_tabescaped
    - str_truncate
    - str_append
    - guid_128_is_empty
    - io_loop_run
    - anvil_client_query
    - anvil_client_deinit
    linkageType: ''
    returnType: void
    signature: void kick_users_via_anvil(struct kick_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:124,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:125,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:126,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:127,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:130,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:131,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:132,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:133,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:135,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:137,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:142,1
    - Dst: who_parse_args
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:145,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:146,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:150,1
    - Dst: doveadm_print_formatted_set_format
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:151,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:152,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:159,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:160,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:162,1
    - Dst: kick_users_get_via_who
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:168,1
    - Dst: kick_users_via_anvil
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:170,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-kick.c:172,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 118
    functionDepth: 4
    functionLinenumber: 118
    functionLinenumberEnd: 173
    functionName: cmd_kick
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-kick.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - net_addr2ip
    - array_append_space
    - p_array_init
    - array_foreach_elem
    - kick_users_via_anvil
    - doveadm_print_init
    - i_fatal
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - help_ver2
    - pool_unref
    - kick_users_get_via_who
    - doveadm_print_formatted_set_format
    - doveadm_print_header_simple
    - t_strconcat
    - who_parse_args
    linkageType: ''
    returnType: void
    signature: void cmd_kick(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: fetch_user
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_user(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:58,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 54
    functionDepth: 3
    functionLinenumber: 54
    functionLinenumberEnd: 63
    functionName: fetch_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_mailbox(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:69,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:72,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 65
    functionDepth: 8
    functionLinenumber: 65
    functionLinenumberEnd: 74
    functionName: fetch_mailbox_guid
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - guid_128_to_string
    - doveadm_print
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: int fetch_mailbox_guid(struct fetch_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 4
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: fetch_seq
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - doveadm_print_num
    linkageType: ''
    returnType: int
    signature: int fetch_seq(struct fetch_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: fetch_uid
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - doveadm_print_num
    linkageType: ''
    returnType: int
    signature: int fetch_uid(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:92,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: fetch_guid
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_guid(struct fetch_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:100,1
    - Dst: imap_write_flags
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:102,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:102,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:103,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:104,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 106
    functionName: fetch_flags
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - str_c
    - t_str_new
    - doveadm_print
    - imap_write_flags
    - mail_get_flags
    linkageType: ''
    returnType: int
    signature: int fetch_flags(struct fetch_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:110,1
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: fetch_modseq
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - doveadm_print_num
    - mail_get_modseq
    linkageType: ''
    returnType: int
    signature: int fetch_modseq(struct fetch_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:117,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:118,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct fetch_cmd_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: fetch_set_istream_error
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - i_stream_get_name
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void fetch_set_istream_error(struct fetch_cmd_context *ctx, struct
      istream *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_hdr_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:127,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:130,1
    - Dst: doveadm_print_istream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:131,1
    - Dst: fetch_set_istream_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:132,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 135
    functionName: fetch_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - fetch_set_istream_error
    - doveadm_print_istream
    - i_stream_create_limit
    - mail_get_hdr_stream
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int fetch_hdr(struct fetch_cmd_context *ctx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:143,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:144,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:146,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:148,1
    - Dst: mail_get_headers_utf8
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:149,1
    - Dst: mail_get_headers
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:152,1
    - Dst: str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:156,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:159,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:164,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:166,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:167,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:168,1
    - Dst: message_address_parse
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:171,1
    - Dst: str_data
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:172,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:172,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:174,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:178,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:179,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:181,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:183,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:184,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:187,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:188,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:190,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:192,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:198,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:200,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:200,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 202
    functionName: fetch_hdr_field
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - str_c
    - doveadm_print
    - str_append_c
    - str_data
    - str_len
    - str_append
    - message_header_decode_utf8
    - strlen
    - i_fatal
    - message_address_parse
    - t_strdup_until
    - mail_get_headers_utf8
    - str_truncate
    - mail_get_headers
    - str_new
    - p_clear
    linkageType: ''
    returnType: int
    signature: int fetch_hdr_field(struct fetch_cmd_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:212,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:214,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:215,1
    - Dst: imap_msgpart_parse
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:217,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:218,1
    - Dst: imap_msgpart_set_decode_to_binary
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:220,1
    - Dst: imap_msgpart_open
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:222,1
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:223,1
    - Dst: doveadm_print_istream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:226,1
    - Dst: fetch_set_istream_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:227,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:228,1
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:229,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 204
    functionDepth: 4
    functionLinenumber: 204
    functionLinenumberEnd: 231
    functionName: fetch_body_field
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - imap_msgpart_free
    - fetch_set_istream_error
    - doveadm_print_istream
    - i_unreached
    - str_begins
    - imap_msgpart_parse
    - imap_msgpart_set_decode_to_binary
    - i_stream_unref
    - imap_msgpart_open
    linkageType: ''
    returnType: int
    signature: int fetch_body_field(struct fetch_cmd_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:239,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:242,1
    - Dst: doveadm_print_istream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:243,1
    - Dst: fetch_set_istream_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 233
    functionDepth: 4
    functionLinenumber: 233
    functionLinenumberEnd: 246
    functionName: fetch_body
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 1
    functionsReached:
    - fetch_set_istream_error
    - doveadm_print_istream
    - mail_get_stream
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: int fetch_body(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:252,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:255,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 248
    functionDepth: 3
    functionLinenumber: 248
    functionLinenumberEnd: 258
    functionName: fetch_body_snippet
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 1
    functionsReached:
    - i_assert
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_body_snippet(struct fetch_cmd_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:265,1
    - Dst: doveadm_print_istream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:267,1
    - Dst: fetch_set_istream_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 260
    functionDepth: 4
    functionLinenumber: 260
    functionLinenumberEnd: 270
    functionName: fetch_text
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - fetch_set_istream_error
    - doveadm_print_istream
    - mail_get_stream
    linkageType: ''
    returnType: int
    signature: int fetch_text(struct fetch_cmd_context *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:284,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:287,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:287,1
    - Dst: message_decoder_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:288,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:290,1
    - Dst: message_decoder_decode_next_block
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:291,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:297,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:299,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:301,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:302,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:304,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:306,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:309,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:312,1
    - Dst: message_decoder_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:313,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:314,1
    - Dst: doveadm_print_stream
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:316,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:318,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:319,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:320,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 272
    functionDepth: 5
    functionLinenumber: 272
    functionLinenumberEnd: 324
    functionName: fetch_text_utf8
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - message_parser_parse_next_block
    - e_error
    - message_decoder_init
    - pool_datastack_create
    - doveadm_print_stream
    - message_decoder_deinit
    - i_stream_get_error
    - mail_get_stream
    - message_decoder_decode_next_block
    - i_stream_get_name
    - i_assert
    - message_parser_deinit
    - message_parser_init
    linkageType: ''
    returnType: int
    signature: int fetch_text_utf8(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:330,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 326
    functionDepth: 4
    functionLinenumber: 326
    functionLinenumberEnd: 334
    functionName: fetch_size_physical
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - doveadm_print_num
    - mail_get_physical_size
    linkageType: ''
    returnType: int
    signature: int fetch_size_physical(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:340,1
    - Dst: doveadm_print_num
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 336
    functionDepth: 4
    functionLinenumber: 336
    functionLinenumberEnd: 344
    functionName: fetch_size_virtual
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - doveadm_print_num
    - mail_get_virtual_size
    linkageType: ''
    returnType: int
    signature: int fetch_size_virtual(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:350,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:352,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 346
    functionDepth: 3
    functionLinenumber: 346
    functionLinenumberEnd: 354
    functionName: fetch_date_received
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_received_date
    - doveadm_print
    - unixdate2str
    linkageType: ''
    returnType: int
    signature: int fetch_date_received(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_date
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:362,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:366,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:366,1
    - Dst: unixdate2tzstr
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:367,1
    - Dst: abs
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:367,1
    - Dst: abs
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 369
    functionName: fetch_date_sent
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_date
    - doveadm_print
    - t_strdup_printf
    - unixdate2tzstr
    - abs
    linkageType: ''
    returnType: int
    signature: int fetch_date_sent(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:375,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:377,1
    - Dst: unixdate2str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 371
    functionDepth: 3
    functionLinenumber: 371
    functionLinenumberEnd: 379
    functionName: fetch_date_saved
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_save_date
    - doveadm_print
    - unixdate2str
    linkageType: ''
    returnType: int
    signature: int fetch_date_saved(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:385,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:387,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 389
    functionName: fetch_date_received_unixtime
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_received_date
    - doveadm_print
    - dec2str
    linkageType: ''
    returnType: int
    signature: int fetch_date_received_unixtime(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_date
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:396,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:399,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 391
    functionDepth: 3
    functionLinenumber: 391
    functionLinenumberEnd: 401
    functionName: fetch_date_sent_unixtime
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - dec2str
    - mail_get_date
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_date_sent_unixtime(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:407,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:409,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:409,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 3
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: fetch_date_saved_unixtime
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - dec2str
    - mail_get_save_date
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_date_saved_unixtime(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:417,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 413
    functionDepth: 3
    functionLinenumber: 413
    functionLinenumberEnd: 421
    functionName: fetch_imap_envelope
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_imap_envelope(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:427,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 423
    functionDepth: 3
    functionLinenumber: 423
    functionLinenumberEnd: 431
    functionName: fetch_imap_body
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_imap_body(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:437,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 433
    functionDepth: 3
    functionLinenumber: 433
    functionLinenumberEnd: 441
    functionName: fetch_imap_bodystructure
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_imap_bodystructure(struct fetch_cmd_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - size
    argTypes:
    - string_t*
    - struct message_size*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 449
    functionName: fetch_message_part_append_size
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - str_printfa
    linkageType: ''
    returnType: void
    signature: void fetch_message_part_append_size(string_t *str, const struct message_size
      *size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:458,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:460,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:461,1
    - Dst: fetch_message_part_append_size
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:463,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:464,1
    - Dst: fetch_message_part_append_size
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:465,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:466,1
    - Dst: fetch_message_parts_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - str
    - indent
    - parts
    argTypes:
    - string_t*
    - unsigned int
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 469
    functionName: fetch_message_parts_append
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - str_append_c
    - fetch_message_parts_append
    - fetch_message_part_append_size
    - str_append
    linkageType: ''
    returnType: void
    signature: "void fetch_message_parts_append(string_t *str, unsigned int indent,\n\t\t\t
      \ const struct message_part *parts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_parts
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:475,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:478,1
    - Dst: fetch_message_parts_append
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:479,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:480,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 471
    functionDepth: 3
    functionLinenumber: 471
    functionLinenumberEnd: 482
    functionName: fetch_mime_parts
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - doveadm_print
    - fetch_message_parts_append
    - mail_get_parts
    linkageType: ''
    returnType: int
    signature: int fetch_mime_parts(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:488,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 484
    functionDepth: 3
    functionLinenumber: 484
    functionLinenumberEnd: 492
    functionName: fetch_pop3_uidl
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_pop3_uidl(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:498,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 494
    functionDepth: 3
    functionLinenumber: 494
    functionLinenumberEnd: 502
    functionName: fetch_pop3_order
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_pop3_order(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:508,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 504
    functionDepth: 3
    functionLinenumber: 504
    functionLinenumberEnd: 512
    functionName: fetch_refcount
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_refcount(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:518,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 514
    functionDepth: 3
    functionLinenumber: 514
    functionLinenumberEnd: 522
    functionName: fetch_storageid
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - doveadm_print
    linkageType: ''
    returnType: int
    signature: int fetch_storageid(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:563,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 568
    functionName: fetch_field_find
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: struct fetch_field
    signature: struct fetch_field *fetch_field_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:574,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:575,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:576,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 578
    functionName: print_fetch_fields
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_fetch_fields(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:587,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:590,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:593,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:594,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:596,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:598,1
    - Dst: fetch_field_find
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:599,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:601,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:602,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:603,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:604,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:605,1
    - Dst: t_strcut
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:605,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:606,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:607,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:608,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:609,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:610,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:610,1
    - Dst: imap_msgpart_parse
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:612,1
    - Dst: print_fetch_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:613,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:614,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:616,1
    - Dst: imap_msgpart_get_fetch_data
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:617,1
    - Dst: imap_msgpart_free
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:618,1
    - Dst: print_fetch_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:620,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:621,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:624,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - fields
    argTypes:
    - struct fetch_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 580
    functionDepth: 4
    functionLinenumber: 580
    functionLinenumberEnd: 625
    functionName: parse_fetch_fields
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - imap_msgpart_free
    - p_array_init
    - array_push_back
    - str_begins
    - t_strarray_join
    - imap_msgpart_parse
    - i_fatal
    - imap_msgpart_get_fetch_data
    - print_fetch_fields
    - t_strsplit
    - fetch_field_find
    - doveadm_print_header_simple
    - t_str_lcase
    - array_append_zero
    - t_strcut
    linkageType: ''
    returnType: void
    signature: void parse_fetch_fields(struct fetch_cmd_context *ctx, const char *const
      *fields)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:633,1
    - Dst: struct fetch_field*::print
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:635,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:636,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:638,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:641,1
    - Dst: doveadm_mail_failed_mailbox
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fetch_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 627
    functionDepth: 4
    functionLinenumber: 627
    functionLinenumberEnd: 648
    functionName: cmd_fetch_mail
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - struct fetch_field*::print
    - array_foreach
    - e_error
    - mailbox_get_vname
    - mail_get_last_internal_error
    - doveadm_mail_failed_mailbox
    linkageType: ''
    returnType: int
    signature: int cmd_fetch_mail(struct fetch_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:655,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:657,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:664,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:666,1
    - Dst: cmd_fetch_mail
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:666,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - info
    argTypes:
    - struct fetch_cmd_context*
    - struct mailbox_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 650
    functionDepth: 12
    functionLinenumber: 650
    functionLinenumberEnd: 669
    functionName: cmd_fetch_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_iter_init
    - array_front
    - if
    - doveadm_mail_iter_next
    - cmd_fetch_mail
    linkageType: ''
    returnType: int
    signature: int cmd_fetch_box(struct fetch_cmd_context *ctx, const struct mailbox_info
      *info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:679,1
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:687,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:689,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:690,1
    - Dst: cmd_fetch_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 675
    functionDepth: 13
    functionLinenumber: 675
    functionLinenumberEnd: 692
    functionName: cmd_fetch_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - container_of
    - cmd_fetch_box
    - if
    - doveadm_mailbox_list_iter_next
    - doveadm_mailbox_list_iter_init
    linkageType: ''
    returnType: int
    signature: int cmd_fetch_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:702,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:705,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:707,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:708,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:709,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:713,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:714,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:716,1
    - Dst: parse_fetch_fields
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:717,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:718,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 698
    functionDepth: 6
    functionLinenumber: 698
    functionLinenumberEnd: 719
    functionName: cmd_fetch_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - container_of
    - doveadm_cmd_param_array
    - doveadm_cmd_param_str
    - doveadm_mail_help_name
    - parse_fetch_fields
    - t_strsplit_spaces
    - doveadm_mail_build_search_args
    linkageType: ''
    returnType: void
    signature: void cmd_fetch_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:724,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 727
    functionName: cmd_fetch_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - container_of
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void cmd_fetch_deinit(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:733,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-fetch.c:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 739
    functionName: cmd_fetch_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-fetch.c
    functionUses: 0
    functionsReached:
    - doveadm_print_init
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_fetch_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:27,1
    - Dst: doveadm_mail_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:32,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:33,1
    - Dst: mail_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:33,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:34,1
    - Dst: doveadm_mail_iter_deinit_sync
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - info
    - search_args
    - reverse
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mailbox_info*
    - struct mail_search_args*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 17
    functionDepth: 13
    functionLinenumber: 17
    functionLinenumberEnd: 38
    functionName: cmd_altmove_box
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-altmove.c
    functionUses: 0
    functionsReached:
    - e_debug
    - mail_event
    - doveadm_mail_iter_init
    - mail_update_flags
    - doveadm_mail_iter_deinit_sync
    - doveadm_mail_iter_next
    linkageType: ''
    returnType: int
    signature: "int cmd_altmove_box(struct doveadm_mail_cmd_context *ctx,\n\t\tconst
      struct mailbox_info *info,\n\t\tstruct mail_search_args *search_args, bool reverse)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_purge
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:44,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:45,1
    - Dst: mailbox_list_get_event
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:45,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:47,1
    - Dst: doveadm_mail_failed_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - ns
    - storage
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_namespace*
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 52
    functionName: ns_purge
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-altmove.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_failed_storage
    - mail_storage_get_last_internal_error
    - mail_storage_purge
    - e_error
    - mailbox_list_get_event
    linkageType: ''
    returnType: int
    signature: "int ns_purge(struct doveadm_mail_cmd_context *ctx, struct mail_namespace
      *ns,\n\t struct mail_storage *storage)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:58,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:70,1
    - Dst: doveadm_mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:71,1
    - Dst: doveadm_mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:73,1
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:74,1
    - Dst: ns_purge
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:77,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:79,1
    - Dst: cmd_altmove_box
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:85,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - _ctx
    - user
    argTypes:
    - struct doveadm_mail_cmd_context*
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 54
    functionDepth: 14
    functionLinenumber: 54
    functionLinenumberEnd: 87
    functionName: cmd_altmove_run
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-altmove.c
    functionUses: 0
    functionsReached:
    - container_of
    - array_push_back
    - mail_namespace_get_default_storage
    - doveadm_mailbox_list_iter_next
    - ns_purge
    - t_array_init
    - doveadm_mailbox_list_iter_init
    - cmd_altmove_box
    linkageType: ''
    returnType: int
    signature: int cmd_altmove_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user
      *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:122,1
    - Dst: doveadm_cmd_param_flag
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:124,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:127,1
    - Dst: doveadm_mail_help_name
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:128,1
    - Dst: doveadm_mail_build_search_args
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct doveadm_mail_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 118
    functionDepth: 6
    functionLinenumber: 118
    functionLinenumberEnd: 130
    functionName: cmd_altmove_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-altmove.c
    functionUses: 0
    functionsReached:
    - container_of
    - doveadm_cmd_param_array
    - doveadm_cmd_param_flag
    - doveadm_mail_help_name
    - doveadm_mail_build_search_args
    linkageType: ''
    returnType: void
    signature: void cmd_altmove_init(struct doveadm_mail_cmd_context *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_mail_cmd_alloc
      Src: /src/dovecot/src/doveadm/doveadm-mail-altmove.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: cmd_altmove_alloc
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-mail-altmove.c
    functionUses: 0
    functionsReached:
    - doveadm_mail_cmd_alloc
    linkageType: ''
    returnType: struct doveadm_mail_cmd_context
    signature: struct doveadm_mail_cmd_context *cmd_altmove_alloc(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:28,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:29,1
    - Dst: buffer_append_full_file
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:31,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:34,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:34,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:38,1
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:39,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:41,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:41,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:42,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - digest
    - priv_key_r
    - error_r
    - context
    argTypes:
    - char*
    - struct dcrypt_private_key**
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 47
    functionName: get_digest
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c
    functionUses: 12
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - dcrypt_key_id_private
    - t_buffer_create
    - dcrypt_key_unref_private
    - i_strdup
    - buffer_append_full_file
    - dcrypt_key_load_private
    - binary_to_hex
    linkageType: ''
    returnType: int
    signature: "int get_digest(const char *digest,\n\t\t      struct dcrypt_private_key
      **priv_key_r,\n\t\t      const char **error_r, void *context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_encrypt_get_flags
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:51,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:53,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:55,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:57,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:59,1
    - Dst: i_stream_encrypt_get_format
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:61,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:64,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:67,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 70
    functionName: dcrypt_istream_dump_metadata
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c
    functionUses: 0
    functionsReached:
    - i_stream_encrypt_get_format
    - i_stream_encrypt_get_flags
    - printf
    linkageType: ''
    returnType: void
    signature: void dcrypt_istream_dump_metadata(const struct istream *stream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:77,1
    - Dst: i_stream_create_decrypt_callback
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:79,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:83,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:85,1
    - Dst: dcrypt_istream_dump_metadata
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:90,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:91,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:94,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:95,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:95,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:99,1
    - Dst: write_full
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:100,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:101,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:102,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:105,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:105,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:106,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:110,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:111,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 4
    argNames:
    - cctx
    - filename
    - print
    - ctx
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - bool
    - struct dcrypt_dump_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 114
    functionName: dcrypt_file_dump_metadata
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_free
    - printf
    - write_full
    - i_stream_create_file
    - i_fatal
    - i_stream_skip
    - e_error
    - i_stream_get_error
    - i_stream_read
    - dcrypt_istream_dump_metadata
    - i_stream_unref
    - i_stream_get_name
    - i_assert
    - i_stream_create_decrypt_callback
    - i_stream_read_more
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_file_dump_metadata(struct doveadm_cmd_context *cctx,\n\t\t\t\t
      \     const char *filename, bool print,\n\t\t\t\t      struct dcrypt_dump_context
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:121,1
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:122,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:123,1
    - Dst: dcrypt_file_dump_metadata
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - cctx
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 128
    functionName: test_dump_dcrypt_file
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dcrypt_file_dump_metadata
    - dcrypt_initialize
    - e_error
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_dcrypt_file(struct doveadm_cmd_context *cctx,\n\t\t\t\t
      \ const char *path)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:135,1
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:136,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:137,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:140,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:141,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:142,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:144,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:147,1
    - Dst: dcrypt_file_dump_metadata
      Src: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c:149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - cctx
    - path
    - args
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 150
    functionName: cmd_dump_dcrypt_file
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-dump-dcrypt-file.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - i_fatal
    - dcrypt_file_dump_metadata
    - t_split_key_value_eq
    - dcrypt_initialize
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_dcrypt_file(struct doveadm_cmd_context *cctx,\n\t\t\t\t
      const char *path, const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:29,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - struct doveadm_print_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 32
    functionName: doveadm_print_pager_header
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-pager.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void doveadm_print_pager_header(const struct doveadm_print_header *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: pager_next_hdr
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-pager.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: void
    signature: void pager_next_hdr(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:44,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:47,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:51,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:52,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:54,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:55,1
    - Dst: pager_next_hdr
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 57
    functionName: doveadm_print_pager_print
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-pager.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - o_stream_nsend
    - pager_next_hdr
    - array_idx
    linkageType: ''
    returnType: void
    signature: void doveadm_print_pager_print(const char *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:63,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:68,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:69,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:72,1
    - Dst: pager_next_hdr
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - value
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 77
    functionName: doveadm_print_pager_print_stream
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-pager.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - o_stream_nsend
    - pager_next_hdr
    - array_idx
    linkageType: ''
    returnType: void
    signature: void doveadm_print_pager_print_stream(const unsigned char *value, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:83,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:84,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 88
    functionName: doveadm_print_pager_init
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-pager.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void doveadm_print_pager_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: doveadm_print_pager_flush
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-pager.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void doveadm_print_pager_flush(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/doveadm-print-pager.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: doveadm_print_pager_deinit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-print-pager.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_print_pager_deinit(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - status
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 49
    functionName: failure_exit_callback
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void failure_exit_callback(int *status)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm.c:58,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/doveadm.c:66,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm.c:72,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:75,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:78,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm.c:80,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:81,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:83,1
    - Dst: t_strcut
      Src: /src/dovecot/src/doveadm/doveadm.c:84,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:85,1
    - Dst: t_strcut
      Src: /src/dovecot/src/doveadm/doveadm.c:90,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:91,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:92,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:99,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - out
    - cmds
    - prefix
    argTypes:
    - FILE*
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 100
    functionName: usage_commands_write
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - strlen
    - t_strdup_until
    - fprintf
    - strncmp
    - t_strcut
    linkageType: ''
    returnType: void
    signature: "void usage_commands_write(FILE *out, const ARRAY_TYPE(doveadm_cmd_ver2_p)
      *cmds,\n\t\t     const char *prefix)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/doveadm.c:66,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/doveadm.c:72,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:75,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:78,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/doveadm.c:80,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:81,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:83,1
    - Dst: t_strcut
      Src: /src/dovecot/src/doveadm/doveadm.c:84,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:85,1
    - Dst: t_strcut
      Src: /src/dovecot/src/doveadm/doveadm.c:90,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:91,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:92,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 97
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 180
    functionsReached:
    - strcmp
    - strchr
    - t_strdup_until
    - fprintf
    - strncmp
    - t_strcut
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(cmds, cur_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd1
    - cmd2
    argTypes:
    - struct doveadm_cmd_ver2**
    - struct doveadm_cmd_ver2**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: doveadm_cmd_cmp
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int doveadm_cmd_cmp(const struct doveadm_cmd_ver2 *const *cmd1,\n\t\t\t
      \  const struct doveadm_cmd_ver2 *const *cmd2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/doveadm.c:112,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/doveadm.c:114,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/doveadm.c:114,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:116,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:118,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:119,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm.c:121,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/doveadm.c:123,1
    - Dst: array_sort
      Src: /src/dovecot/src/doveadm/doveadm.c:126,1
    - Dst: usage_commands_write
      Src: /src/dovecot/src/doveadm/doveadm.c:128,1
    - Dst: lib_exit
      Src: /src/dovecot/src/doveadm/doveadm.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - out
    - prefix
    - return_code
    argTypes:
    - FILE*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 131
    functionName: ATTR_NORETURN::usage_prefix
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - usage_commands_write
    - lib_exit
    - array_foreach
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - fprintf
    - array_sort
    linkageType: ''
    returnType: void
    signature: 'void ATTR_NORETURN

      usage_prefix(FILE *out, const char *prefix, int return_code)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: usage_prefix
      Src: /src/dovecot/src/doveadm/doveadm.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: usage
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 1
    functionsReached:
    - usage_prefix
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:141,1
    - Dst: lib_exit
      Src: /src/dovecot/src/doveadm/doveadm.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - out
    - cmd
    - exit_code
    argTypes:
    - FILE*
    - struct doveadm_cmd_ver2*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: ATTR_NORETURN::print_usage_and_exit
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 0
    functionsReached:
    - lib_exit
    - fprintf
    linkageType: ''
    returnType: void
    signature: 'void ATTR_NORETURN

      print_usage_and_exit(FILE *out, const struct doveadm_cmd_ver2 *cmd, int exit_code)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_usage_and_exit
      Src: /src/dovecot/src/doveadm/doveadm.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct doveadm_cmd_ver2*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: help_ver2
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 11
    functionsReached:
    - print_usage_and_exit
    linkageType: ''
    returnType: void
    signature: void help_ver2(const struct doveadm_cmd_ver2 *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm.c:154,1
    - Dst: usage_prefix
      Src: /src/dovecot/src/doveadm/doveadm.c:155,1
    - Dst: env_put
      Src: /src/dovecot/src/doveadm/doveadm.c:157,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm.c:159,1
    - Dst: execvp_const
      Src: /src/dovecot/src/doveadm/doveadm.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 162
    functionName: cmd_help
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 12
    functionsReached:
    - env_put
    - doveadm_cmd_param_str
    - usage_prefix
    - execvp_const
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void cmd_help(struct doveadm_cmd_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm.c:177,1
    - Dst: env_put
      Src: /src/dovecot/src/doveadm/doveadm.c:180,1
    - Dst: master_service_get_config_path
      Src: /src/dovecot/src/doveadm/doveadm.c:181,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm.c:183,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/doveadm.c:184,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm.c:187,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm.c:188,1
    - Dst: execv_const
      Src: /src/dovecot/src/doveadm/doveadm.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 191
    functionName: cmd_config
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 0
    functionsReached:
    - env_put
    - memcpy
    - t_new
    - str_array_length
    - doveadm_cmd_param_array
    - master_service_get_config_path
    - i_assert
    - execv_const
    linkageType: ''
    returnType: void
    signature: void cmd_config(struct doveadm_cmd_context *cctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm.c:219,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm.c:220,1
    - Dst: doveadm_cmd_param_array
      Src: /src/dovecot/src/doveadm/doveadm.c:221,1
    - Dst: doveadm_settings_get_config_fd
      Src: /src/dovecot/src/doveadm/doveadm.c:225,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/doveadm/doveadm.c:227,1
    - Dst: env_put
      Src: /src/dovecot/src/doveadm/doveadm.c:228,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/doveadm.c:228,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm.c:231,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm.c:233,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/doveadm.c:234,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/doveadm.c:237,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/doveadm.c:238,1
    - Dst: execv_const
      Src: /src/dovecot/src/doveadm/doveadm.c:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 215
    functionDepth: 4
    functionLinenumber: 215
    functionLinenumberEnd: 241
    functionName: cmd_exec
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 1
    functionsReached:
    - env_put
    - dec2str
    - t_new
    - memcpy
    - fd_close_on_exec
    - doveadm_settings_get_config_fd
    - doveadm_cmd_param_array
    - t_strdup_printf
    - str_array_length
    - help_ver2
    - doveadm_cmd_param_str
    - i_assert
    - execv_const
    linkageType: ''
    returnType: void
    signature: void cmd_exec(struct doveadm_cmd_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm.c:246,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/doveadm.c:248,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/doveadm.c:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cmd_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 254
    functionName: doveadm_has_subcommands
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: bool doveadm_has_subcommands(const char *cmd_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm.c:259,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm.c:260,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm.c:262,1
    - Dst: doveadm_has_subcommands
      Src: /src/dovecot/src/doveadm/doveadm.c:264,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm.c:264,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm.c:265,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm.c:268,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm.c:269,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/doveadm.c:271,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/doveadm.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 273
    functionName: find_longest_cmd_prefix
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - str_truncate
    - str_append
    - doveadm_has_subcommands
    linkageType: ''
    returnType: char
    signature: 'char *

      find_longest_cmd_prefix(char *const argv[])'
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/doveadm/doveadm.c:297,1
    - Dst: master_service_register_long_options
      Src: /src/dovecot/src/doveadm/doveadm.c:303,1
    - Dst: i_set_failure_exit_callback
      Src: /src/dovecot/src/doveadm/doveadm.c:305,1
    - Dst: master_getopt_long
      Src: /src/dovecot/src/doveadm/doveadm.c:309,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:312,1
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm.c:320,1
    - Dst: fprintf
      Src: /src/dovecot/src/doveadm/doveadm.c:329,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:337,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/doveadm/doveadm.c:342,1
    - Dst: doveadm_cmds_init
      Src: /src/dovecot/src/doveadm/doveadm.c:344,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm.c:345,1
    - Dst: doveadm_cmd_register_ver2
      Src: /src/dovecot/src/doveadm/doveadm.c:346,1
    - Dst: doveadm_register_auth_commands
      Src: /src/dovecot/src/doveadm/doveadm.c:347,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:350,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:351,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:352,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm.c:357,1
    - Dst: doveadm_read_settings
      Src: /src/dovecot/src/doveadm/doveadm.c:358,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm.c:362,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/doveadm.c:363,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/doveadm/doveadm.c:364,1
    - Dst: doveadm_dump_init
      Src: /src/dovecot/src/doveadm/doveadm.c:365,1
    - Dst: doveadm_mail_init
      Src: /src/dovecot/src/doveadm/doveadm.c:366,1
    - Dst: dict_drivers_register_builtin
      Src: /src/dovecot/src/doveadm/doveadm.c:367,1
    - Dst: doveadm_load_modules
      Src: /src/dovecot/src/doveadm/doveadm.c:368,1
    - Dst: doveadm_read_settings
      Src: /src/dovecot/src/doveadm/doveadm.c:372,1
    - Dst: getenv
      Src: /src/dovecot/src/doveadm/doveadm.c:373,1
    - Dst: i_set_failure_timestamp_format
      Src: /src/dovecot/src/doveadm/doveadm.c:374,1
    - Dst: master_service_init_stats_client
      Src: /src/dovecot/src/doveadm/doveadm.c:375,1
    - Dst: doveadm_mail_init_finish
      Src: /src/dovecot/src/doveadm/doveadm.c:377,1
    - Dst: doveadm_load_modules
      Src: /src/dovecot/src/doveadm/doveadm.c:380,1
    - Dst: usage_prefix
      Src: /src/dovecot/src/doveadm/doveadm.c:386,1
    - Dst: i_getopt_reset
      Src: /src/dovecot/src/doveadm/doveadm.c:392,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/doveadm/doveadm.c:394,1
    - Dst: i_set_debug_file
      Src: /src/dovecot/src/doveadm/doveadm.c:397,1
    - Dst: doveadm_cmd_context_create
      Src: /src/dovecot/src/doveadm/doveadm.c:400,1
    - Dst: getenv
      Src: /src/dovecot/src/doveadm/doveadm.c:404,1
    - Dst: doveadm_cmdline_try_run
      Src: /src/dovecot/src/doveadm/doveadm.c:406,1
    - Dst: print_usage_and_exit
      Src: /src/dovecot/src/doveadm/doveadm.c:412,1
    - Dst: find_longest_cmd_prefix
      Src: /src/dovecot/src/doveadm/doveadm.c:415,1
    - Dst: doveadm_has_subcommands
      Src: /src/dovecot/src/doveadm/doveadm.c:416,1
    - Dst: usage_prefix
      Src: /src/dovecot/src/doveadm/doveadm.c:417,1
    - Dst: doveadm_has_unloaded_plugin
      Src: /src/dovecot/src/doveadm/doveadm.c:420,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm.c:421,1
    - Dst: usage
      Src: /src/dovecot/src/doveadm/doveadm.c:425,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm.c:428,1
    - Dst: doveadm_cmd_context_unref
      Src: /src/dovecot/src/doveadm/doveadm.c:430,1
    - Dst: doveadm_mail_deinit
      Src: /src/dovecot/src/doveadm/doveadm.c:432,1
    - Dst: doveadm_dump_deinit
      Src: /src/dovecot/src/doveadm/doveadm.c:433,1
    - Dst: doveadm_unload_modules
      Src: /src/dovecot/src/doveadm/doveadm.c:434,1
    - Dst: dict_drivers_unregister_builtin
      Src: /src/dovecot/src/doveadm/doveadm.c:435,1
    - Dst: doveadm_print_deinit
      Src: /src/dovecot/src/doveadm/doveadm.c:436,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm.c:437,1
    - Dst: doveadm_cmds_deinit
      Src: /src/dovecot/src/doveadm/doveadm.c:439,1
    - Dst: doveadm_settings_deinit
      Src: /src/dovecot/src/doveadm/doveadm.c:440,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/doveadm/doveadm.c:441,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 97
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 284
    functionDepth: 7
    functionLinenumber: 284
    functionLinenumberEnd: 443
    functionName: main
    functionSourceFile: /src/dovecot/src/doveadm/doveadm.c
    functionUses: 9
    functionsReached:
    - doveadm_cmds_deinit
    - master_getopt_long
    - doveadm_cmd_context_create
    - doveadm_load_modules
    - doveadm_print_init
    - master_service_register_long_options
    - o_stream_cork
    - o_stream_unref
    - print_usage_and_exit
    - doveadm_settings_deinit
    - doveadm_unload_modules
    - doveadm_dump_init
    - master_service_init
    - o_stream_create_fd
    - i_fatal
    - doveadm_cmd_context_unref
    - doveadm_mail_deinit
    - master_service_init_finish
    - usage_prefix
    - doveadm_mail_init_finish
    - doveadm_has_subcommands
    - dict_drivers_unregister_builtin
    - master_service_init_stats_client
    - doveadm_has_unloaded_plugin
    - usage
    - fprintf
    - doveadm_dump_deinit
    - doveadm_cmd_register_ver2
    - doveadm_mail_init
    - N_ELEMENTS
    - master_service_init_log
    - doveadm_print_deinit
    - strcmp
    - i_getopt_reset
    - doveadm_cmdline_try_run
    - dict_drivers_register_builtin
    - i_set_debug_file
    - find_longest_cmd_prefix
    - getenv
    - o_stream_set_no_error_handling
    - doveadm_register_auth_commands
    - i_set_failure_exit_callback
    - doveadm_cmds_init
    - doveadm_read_settings
    - master_service_deinit
    - i_set_failure_timestamp_format
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:83,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: init_stats_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - str_append
    - t_str_new
    linkageType: ''
    returnType: string_t
    signature: string_t *init_stats_cmd(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct stats_cmd_vfuncs*::build_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:94,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:95,1
    - Dst: stats_send_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:98,1
    - Dst: struct stats_cmd_vfuncs*::process_response
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:99,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - cctx
    - vfuncs
    argTypes:
    - struct doveadm_cmd_context*
    - struct stats_cmd_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 101
    functionName: stats_exec_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - stats_send_cmd
    - struct stats_cmd_vfuncs*::process_response
    - struct stats_cmd_vfuncs*::build_cmd
    - e_error
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void stats_exec_cmd(struct doveadm_cmd_context *cctx,\n\t\t\t   struct
      stats_cmd_vfuncs *vfuncs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:105,1
    - Dst: i_stream_get_disconnect_reason
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct stats_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: handle_disconnection
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_stream_get_disconnect_reason
    linkageType: ''
    returnType: void
    signature: void handle_disconnection(struct stats_cmd_context *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:113,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:114,1
    - Dst: doveadm_connect
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:117,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:118,1
    - Dst: write_full
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:119,1
    - Dst: str_data
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:119,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:119,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:120,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:121,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:123,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:124,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:125,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct stats_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 109
    functionDepth: 5
    functionLinenumber: 109
    functionLinenumberEnd: 129
    functionName: stats_send_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 1
    functionsReached:
    - str_data
    - str_len
    - write_full
    - i_fatal_status
    - i_fatal
    - doveadm_cmd_param_str
    - i_stream_read_next_line
    - doveadm_connect
    - i_stream_create_fd_autoclose
    - version_string_verify
    - net_set_nonblock
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void stats_send_cmd(struct stats_cmd_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:135,1
    - Dst: strtod
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:146,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:147,1
    - Dst: sqrt
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:147,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - args
    - field_types
    - fields_count
    argTypes:
    - char***
    - enum doveadm_dump_field_type[]
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 131
    functionDepth: 3
    functionLinenumber: 131
    functionLinenumberEnd: 154
    functionName: dump_timing
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    - sqrt
    - strtod
    - str_array_length
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void dump_timing(const char *const **args,\n\t\t\tconst enum doveadm_dump_field_type
      field_types[],\n\t\t\tunsigned int fields_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:160,1
    - Dst: doveadm_cmd_param_bool
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:163,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:165,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:168,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:170,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:172,1
    - Dst: init_stats_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:174,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:175,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:178,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:179,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:181,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:183,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - ATTR_UNUSED
    argTypes:
    - struct stats_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 188
    functionName: build_stats_dump_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_new
    - str_append_c
    - t_malloc0
    - str_append
    - str_array_length
    - doveadm_cmd_param_str
    - str_append_tabescaped
    - t_strsplit_spaces
    - doveadm_cmd_param_bool
    - init_stats_cmd
    linkageType: ''
    returnType: int
    signature: "int build_stats_dump_cmd(struct stats_cmd_context *ctx,\n\t\t\t\tconst
      char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_print_init
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:196,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:197,1
    - Dst: doveadm_print_header_simple
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:198,1
    - Dst: doveadm_print_header
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:200,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:203,1
    - Dst: t_strsplit_tabescaped_inplace
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:208,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:211,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:212,1
    - Dst: dump_timing
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:213,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:215,1
    - Dst: doveadm_print
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:216,1
    - Dst: dump_timing
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:217,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct stats_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 190
    functionDepth: 4
    functionLinenumber: 190
    functionLinenumberEnd: 220
    functionName: stats_dump_process_response
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - doveadm_print
    - dump_timing
    - doveadm_print_header
    - doveadm_print_init
    - i_stream_read_next_line
    - doveadm_print_header_simple
    - t_strsplit_tabescaped_inplace
    linkageType: ''
    returnType: void
    signature: void stats_dump_process_response(struct stats_cmd_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: init_stats_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:246,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:247,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:249,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:250,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:253,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:254,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:256,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:260,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:261,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:264,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct stats_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 266
    functionName: build_stats_add_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_append_c
    - t_strdup_printf
    - doveadm_cmd_param_str
    - str_append_tabescaped
    - str_append
    - init_stats_cmd
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int build_stats_add_cmd(struct stats_cmd_context *ctx,\n\t\t\t       const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:270,1
    - Dst: handle_disconnection
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:272,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:276,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct stats_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 279
    functionName: stats_modify_process_response
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - e_error
    - handle_disconnection
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void stats_modify_process_response(struct stats_cmd_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: init_stats_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:286,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:287,1
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:289,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:293,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct stats_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 296
    functionName: build_stats_remove_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - doveadm_cmd_param_str
    - str_append_tabescaped
    - str_append
    - init_stats_cmd
    linkageType: ''
    returnType: int
    signature: "int build_stats_remove_cmd(struct stats_cmd_context *ctx,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_stats_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:301,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - ATTR_UNUSED
    argTypes:
    - struct stats_cmd_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 305
    functionName: build_stats_reopen_cmd
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - str_append
    - init_stats_cmd
    linkageType: ''
    returnType: int
    signature: "int build_stats_reopen_cmd(struct stats_cmd_context *ctx,\n\t\t\t\t
      \ const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_exec_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: doveadm_cmd_stats_dump
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - stats_exec_cmd
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_stats_dump(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_exec_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: doveadm_cmd_stats_add
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - stats_exec_cmd
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_stats_add(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_exec_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: doveadm_cmd_stats_remove
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - stats_exec_cmd
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_stats_remove(struct doveadm_cmd_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_exec_cmd
      Src: /src/dovecot/src/doveadm/doveadm-stats.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 325
    functionName: doveadm_cmd_stats_reopen
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-stats.c
    functionUses: 0
    functionsReached:
    - stats_exec_cmd
    linkageType: ''
    returnType: void
    signature: void doveadm_cmd_stats_reopen(struct doveadm_cmd_context *cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:50,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:51,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:51,1
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:54,1
    - Dst: read
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:58,1
    - Dst: str_lcase
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:61,1
    - Dst: strstr
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:62,1
    - Dst: strstr
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:63,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:65,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - path
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 67
    functionName: test_dump_imap_compress
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strrchr
    - i_close_fd
    - open
    - read
    - str_lcase
    - strstr
    linkageType: ''
    returnType: bool
    signature: "bool test_dump_imap_compress(struct doveadm_cmd_context *cctx ATTR_UNUSED,\n\t\t\t\t
      \   const char *path)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:79,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:81,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:82,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:83,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:85,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:91,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:92,1
    - Dst: i_stream_create_deflate
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:96,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:97,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:99,1
    - Dst: fwrite
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:100,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:102,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:105,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:106,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:107,1
    - Dst: fflush
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:108,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 3
    argNames:
    - cctx
    - path
    - ATTR_UNUSED
    argTypes:
    - struct doveadm_cmd_context*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 109
    functionName: cmd_dump_imap_compress
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - i_stream_create_deflate
    - printf
    - fflush
    - i_fatal
    - open
    - strcasecmp
    - i_stream_read_next_line
    - i_stream_skip
    - fwrite
    - e_error
    - i_stream_get_error
    - i_stream_create_fd_autoclose
    - i_stream_read_more
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void cmd_dump_imap_compress(struct doveadm_cmd_context *cctx,\n\t\t
      \      const char *path, const char *const *args ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:119,1
    - Dst: compression_lookup_handler
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:122,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:122,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 126
    functionName: client_input_get_compress_algorithm
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 0
    functionsReached:
    - compression_lookup_handler
    - str_begins_icase
    - i_fatal
    - t_str_lcase
    linkageType: ''
    returnType: bool
    signature: bool client_input_get_compress_algorithm(struct client *client, const
      char *line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:134,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:138,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:139,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:140,1
    - Dst: client_input_get_compress_algorithm
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 145
    functionName: client_input_uncompressed
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 0
    functionsReached:
    - client_input_get_compress_algorithm
    - i_stream_read_next_line
    - o_stream_nsend
    - o_stream_nsend_str
    - i_stream_read
    linkageType: ''
    returnType: bool
    signature: bool client_input_uncompressed(struct client *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_input_uncompressed
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:153,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:159,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:160,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:161,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:163,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:164,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:165,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:170,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:171,1
    - Dst: master_service_stop
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 175
    functionName: client_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 11
    functionsReached:
    - client_input_uncompressed
    - o_stream_get_error
    - master_service_stop
    - i_fatal
    - i_stream_skip
    - i_stream_get_error
    - o_stream_nsend
    - o_stream_flush
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void client_input(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: server_input_is_starttls_reply
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: bool server_input_is_starttls_reply(const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 191
    functionName: server_input_is_compress_reply
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: bool server_input_is_compress_reply(const char *line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: server_input_is_starttls_reply
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:196,1
    - Dst: server_input_is_compress_reply
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:198,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 201
    functionName: server_input_line_type
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 0
    functionsReached:
    - server_input_is_compress_reply
    - server_input_is_starttls_reply
    linkageType: ''
    returnType: enum server_input_line_type
    signature: enum server_input_line_type server_input_line_type(struct client *client,
      const char *line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:207,1
    - Dst: io_stream_autocreate_ssl_client
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:214,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:217,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:218,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:220,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:221,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 203
    functionDepth: 5
    functionLinenumber: 203
    functionLinenumberEnd: 224
    functionName: client_init_ssl
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 2
    functionsReached:
    - io_add_istream
    - io_remove
    - i_fatal
    - ssl_iostream_handshake
    - ssl_iostream_get_last_error
    - io_stream_autocreate_ssl_client
    linkageType: ''
    returnType: void
    signature: void client_init_ssl(struct client *client)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:232,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:234,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:235,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:238,1
    - Dst: master_service_stop
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:239,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:243,1
    - Dst: write
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:244,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:244,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:245,1
    - Dst: write
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:246,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:247,1
    - Dst: server_input_line_type
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:249,1
    - Dst: client_init_ssl
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:252,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:254,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:255,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:262,1
    - Dst: struct client*::handler::create_istream
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:263,1
    - Dst: struct client*::handler::create_ostream_auto
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:264,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:266,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:267,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:272,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:280,1
    - Dst: write
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:281,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:282,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:283,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 284
    functionName: server_input
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 8
    functionsReached:
    - e_info
    - master_service_stop
    - i_stream_next_line
    - i_fatal
    - strlen
    - i_stream_set_input_pending
    - write
    - o_stream_unref
    - i_stream_get_error
    - i_stream_get_data
    - i_stream_skip
    - struct client*::handler::create_istream
    - struct client*::handler::create_ostream_auto
    - i_stream_unref
    - i_stream_read
    - client_init_ssl
    - server_input_line_type
    linkageType: ''
    returnType: void
    signature: void server_input(struct client *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_cmd_param_str
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:296,1
    - Dst: help_ver2
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:297,1
    - Dst: doveadm_cmd_param_int64
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:298,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:300,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:304,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:306,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:307,1
    - Dst: net_connect_ip
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:310,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:311,1
    - Dst: e_info
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:313,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:313,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:315,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:317,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:319,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:320,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:321,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:322,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:323,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:324,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:325,1
    - Dst: master_service_run
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:326,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:327,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:328,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:329,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:330,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:331,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:332,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:333,1
    - Dst: close
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:334,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/doveadm-compress.c:335,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct doveadm_cmd_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 286
    functionDepth: 5
    functionLinenumber: 286
    functionLinenumberEnd: 336
    functionName: cmd_compress_connect
    functionSourceFile: /src/dovecot/src/doveadm/doveadm-compress.c
    functionUses: 0
    functionsReached:
    - master_service_run
    - event_unref
    - io_remove
    - o_stream_unref
    - doveadm_cmd_param_int64
    - net_connect_ip
    - o_stream_create_fd
    - i_fatal
    - help_ver2
    - net_gethostbyname
    - net_ip2addr
    - i_zero
    - event_create
    - io_add_istream
    - ssl_iostream_destroy
    - net_gethosterror
    - close
    - e_info
    - i_stream_create_fd
    - fd_set_nonblock
    - doveadm_cmd_param_str
    - o_stream_set_no_error_handling
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void cmd_compress_connect(struct doveadm_cmd_context *cctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:29,1
    - Dst: dsync_ibc_recv_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:31,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:34,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:38,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:40,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:47,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:48,1
    - Dst: dsync_brain_sync_mailbox_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:49,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:55,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:55,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:57,1
    - Dst: dsync_brain_sync_mailbox_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:59,1
    - Dst: dsync_brain_mailbox_update_pre
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:62,1
    - Dst: dsync_boxes_need_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:66,1
    - Dst: dsync_brain_sync_mailbox_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:69,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:72,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:73,1
    - Dst: dsync_brain_sync_mailbox_open
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:74,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:77,1
    - Dst: dsync_brain_sync_mailbox_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:81,1
    - Dst: dsync_brain_sync_init_box_states
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:84,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 86
    functionName: dsync_brain_master_sync_recv_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_brain_mailbox_update_pre
    - dsync_brain_sync_mailbox_deinit
    - dsync_boxes_need_sync
    - e_debug
    - guid_128_to_string
    - t_strdup_printf
    - dsync_brain_sync_mailbox_open
    - dsync_brain_sync_init_box_states
    - e_error
    - memcmp
    - dsync_brain_set_changes_during_sync
    - dsync_ibc_recv_mailbox
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_master_sync_recv_mailbox(struct dsync_brain *brain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_recv_mailbox_attribute
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:94,1
    - Dst: dsync_mailbox_import_attribute
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:100,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 105
    functionName: dsync_brain_recv_mailbox_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_import_attribute
    - dsync_ibc_recv_mailbox_attribute
    - i_stream_unref
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_recv_mailbox_attribute(struct dsync_brain *brain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:110,1
    - Dst: dsync_ibc_send_end_of_list
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - brain
    - type
    argTypes:
    - struct dsync_brain*
    - enum dsync_ibc_eol_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 112
    functionName: dsync_brain_send_end_of_list
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_send_end_of_list
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dsync_brain_send_end_of_list(struct dsync_brain *brain,\n\t\t\t\t\t
      enum dsync_ibc_eol_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_export_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:119,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:121,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 128
    functionName: dsync_brain_export_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_export_deinit
    - mailbox_get_vname
    - e_error
    linkageType: ''
    returnType: int
    signature: int dsync_brain_export_deinit(struct dsync_brain *brain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_export_next_attr
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:135,1
    - Dst: dsync_ibc_send_mailbox_attribute
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:136,1
    - Dst: dsync_brain_export_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:140,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:141,1
    - Dst: dsync_brain_send_end_of_list
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:144,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 146
    functionName: dsync_brain_send_mailbox_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - dsync_brain_export_deinit
    - dsync_mailbox_export_next_attr
    - dsync_brain_send_end_of_list
    - dsync_ibc_send_mailbox_attribute
    linkageType: ''
    returnType: void
    signature: void dsync_brain_send_mailbox_attribute(struct dsync_brain *brain)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_recv_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:153,1
    - Dst: dsync_mailbox_import_changes_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:156,1
    - Dst: dsync_mailbox_import_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:164,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 167
    functionName: dsync_brain_recv_mail_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_import_changes_finish
    - dsync_mailbox_import_change
    - dsync_ibc_recv_change
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_recv_mail_change(struct dsync_brain *brain)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_export_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:174,1
    - Dst: dsync_ibc_send_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:175,1
    - Dst: dsync_brain_export_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:179,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:180,1
    - Dst: dsync_brain_send_end_of_list
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:183,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 188
    functionName: dsync_brain_send_mail_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - dsync_ibc_send_change
    - dsync_brain_export_deinit
    - dsync_mailbox_export_next
    - dsync_brain_send_end_of_list
    linkageType: ''
    returnType: void
    signature: void dsync_brain_send_mail_change(struct dsync_brain *brain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:195,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:196,1
    - Dst: dsync_ibc_recv_mail_request
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:198,1
    - Dst: dsync_mailbox_export_want_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 208
    functionName: dsync_brain_recv_mail_request
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - i_assert
    - dsync_mailbox_export_want_mail
    - dsync_ibc_recv_mail_request
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_recv_mail_request(struct dsync_brain *brain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:214,1
    - Dst: dsync_mailbox_import_next_request
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:216,1
    - Dst: dsync_ibc_send_mail_request
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:217,1
    - Dst: dsync_brain_send_end_of_list
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:223,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:227,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 231
    functionName: dsync_brain_send_mail_request
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_brain_send_end_of_list
    - dsync_ibc_send_mail_request
    - i_assert
    - dsync_mailbox_import_next_request
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_send_mail_request(struct dsync_brain *brain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:244,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:245,1
    - Dst: dsync_mailbox_import_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:258,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:279,1
    - Dst: dsync_ibc_send_mailbox_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:287,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 288
    functionName: dsync_brain_sync_half_finished
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - dsync_ibc_send_mailbox_state
    - dsync_mailbox_import_deinit
    - dsync_brain_set_changes_during_sync
    linkageType: ''
    returnType: void
    signature: void dsync_brain_sync_half_finished(struct dsync_brain *brain)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_recv_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:295,1
    - Dst: dsync_brain_export_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:301,1
    - Dst: dsync_brain_sync_half_finished
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:304,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:307,1
    - Dst: dsync_mailbox_import_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:309,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:311,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 313
    functionName: dsync_brain_recv_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - e_debug
    - dsync_mailbox_import_mail
    - dsync_ibc_recv_mail
    - dsync_brain_export_deinit
    - i_stream_unref
    - dsync_brain_sync_half_finished
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_recv_mail(struct dsync_brain *brain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_export_next_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:328,1
    - Dst: dsync_ibc_send_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:329,1
    - Dst: dsync_brain_export_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:333,1
    - Dst: dsync_brain_send_end_of_list
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:337,1
    - Dst: dsync_brain_sync_half_finished
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:339,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 341
    functionName: dsync_brain_send_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_export_next_mail
    - dsync_brain_export_deinit
    - dsync_ibc_send_mail
    - dsync_brain_send_end_of_list
    - dsync_brain_sync_half_finished
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_send_mail(struct dsync_brain *brain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_recv_mailbox_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:348,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:351,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:356,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:357,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:357,1
    - Dst: dsync_brain_sync_mailbox_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:372,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 374
    functionName: dsync_brain_recv_last_common
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_brain_sync_mailbox_deinit
    - e_error
    - memcmp
    - dsync_ibc_recv_mailbox_state
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_recv_last_common(struct dsync_brain *brain)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:380,1
    - Dst: dsync_brain_master_sync_recv_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:384,1
    - Dst: dsync_brain_recv_mailbox_attribute
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:387,1
    - Dst: dsync_brain_recv_mail_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:390,1
    - Dst: dsync_brain_recv_mail_request
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:393,1
    - Dst: dsync_brain_recv_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:396,1
    - Dst: dsync_brain_recv_last_common
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:399,1
    - Dst: dsync_ibc_is_send_queue_full
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:405,1
    - Dst: dsync_brain_send_mailbox_attribute
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:411,1
    - Dst: dsync_brain_send_mail_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:415,1
    - Dst: dsync_brain_send_mail_request
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:419,1
    - Dst: dsync_brain_send_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:423,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c:427,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 51
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 433
    functionName: dsync_brain_sync_mails
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mails.c
    functionUses: 0
    functionsReached:
    - dsync_brain_recv_mail_change
    - dsync_brain_recv_mail
    - dsync_brain_send_mail_request
    - dsync_brain_master_sync_recv_mailbox
    - dsync_brain_send_mail
    - dsync_brain_recv_mailbox_attribute
    - i_unreached
    - dsync_brain_send_mail_change
    - dsync_brain_recv_last_common
    - dsync_brain_send_mailbox_attribute
    - dsync_ibc_is_send_queue_full
    - dsync_brain_recv_mail_request
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_sync_mails(struct dsync_brain *brain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:44,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:46,1
    - Dst: aqueue_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 50
    functionName: dsync_mailbox_tree_bfs_iter_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - aqueue_init
    - i_new
    linkageType: ''
    returnType: struct dsync_mailbox_tree_bfs_iter
    signature: 'struct dsync_mailbox_tree_bfs_iter *

      dsync_mailbox_tree_bfs_iter_init(struct dsync_mailbox_tree *tree)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:57,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:59,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:60,1
    - Dst: aqueue_delete_tail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:61,1
    - Dst: aqueue_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - iter
    - node_r
    argTypes:
    - struct dsync_mailbox_tree_bfs_iter*
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 69
    functionName: dsync_mailbox_tree_bfs_iter_next
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - aqueue_append
    - aqueue_count
    - array_idx_elem
    - aqueue_idx
    - aqueue_delete_tail
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_tree_bfs_iter_next(struct dsync_mailbox_tree_bfs_iter
      *iter,\n\t\t\t\t struct dsync_mailbox_node **node_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:78,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:79,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct dsync_mailbox_tree_bfs_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: dsync_mailbox_tree_bfs_iter_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - aqueue_deinit
    - array_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_tree_bfs_iter_deinit(struct dsync_mailbox_tree_bfs_iter
      **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:91,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:93,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:95,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - node
    - type
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_node*
    - enum dsync_mailbox_tree_sync_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 99
    functionName: sync_add_dir_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    - array_append_space
    - dsync_mailbox_node_get_full_name
    linkageType: ''
    returnType: void
    signature: "void sync_add_dir_change(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t
      \   const struct dsync_mailbox_node *node,\n\t\t    enum dsync_mailbox_tree_sync_type
      type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:107,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:109,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:112,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - node
    - name
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 116
    functionName: sync_add_create_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_strdup
    - i_assert
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void sync_add_create_change(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t
      \      const struct dsync_mailbox_node *node, const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:144,1
    - Dst: memset
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 149
    functionName: sync_set_node_deleted
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - memset
    - hash_table_remove
    linkageType: ''
    returnType: void
    signature: "void sync_set_node_deleted(struct dsync_mailbox_tree *tree,\n\t\t
      \     struct dsync_mailbox_node *node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:160,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:161,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:162,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:168,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:169,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:172,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:173,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:174,1
    - Dst: sync_set_node_deleted
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - tree
    - node
    - reason
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 178
    functionName: sync_delete_mailbox_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_strdup
    - array_append_space
    - sync_set_node_deleted
    - e_debug
    - guid_128_to_string
    - dsync_mailbox_node_get_full_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sync_delete_mailbox_node(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t\t
      struct dsync_mailbox_tree *tree,\n\t\t\t struct dsync_mailbox_node *node, const
      char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:192,1
    - Dst: sync_delete_mailbox_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:196,1
    - Dst: sync_delete_mailbox_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - tree
    - node
    - reason
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 199
    functionName: sync_delete_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - sync_delete_mailbox_node
    linkageType: ''
    returnType: void
    signature: "void sync_delete_mailbox(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t
      \   struct dsync_mailbox_tree *tree,\n\t\t    struct dsync_mailbox_node *node,
      const char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:208,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:210,1
    - Dst: dsync_mailbox_tree_bfs_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:212,1
    - Dst: dsync_mailbox_tree_bfs_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:213,1
    - Dst: sort_siblings
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:215,1
    - Dst: array_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:216,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:220,1
    - Dst: sync_delete_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:224,1
    - Dst: sync_set_node_deleted
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:233,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:237,1
    - Dst: sort_siblings
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:239,1
    - Dst: dsync_mailbox_tree_bfs_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:240,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - tree
    - twoway_sync
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 241
    functionName: sync_tree_sort_and_delete_mailboxes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_bfs_iter_init
    - sync_set_node_deleted
    - sort_siblings
    - array_push_back
    - sync_delete_mailbox
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - dsync_mailbox_tree_bfs_iter_next
    - dsync_mailbox_node_is_dir
    - dsync_mailbox_tree_bfs_iter_deinit
    linkageType: ''
    returnType: void
    signature: "void sync_tree_sort_and_delete_mailboxes(struct dsync_mailbox_tree_sync_ctx
      *ctx,\n\t\t\t\t    struct dsync_mailbox_tree *tree,\n\t\t\t\t    bool twoway_sync)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 253
    functionName: node_names_equal
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool node_names_equal(const struct dsync_mailbox_node *n1,\n\t\t\t
      \    const struct dsync_mailbox_node *n2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_node_name_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - node
    - parent
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 268
    functionName: dsync_mailbox_tree_node_attach_sorted
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_node_name_cmp
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_tree_node_attach_sorted(struct dsync_mailbox_node
      *node,\n\t\t\t\t      struct dsync_mailbox_node *parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_node_detach
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:275,1
    - Dst: dsync_mailbox_tree_node_attach_sorted
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - parent
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 278
    functionName: dsync_mailbox_tree_node_move_sorted
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_node_attach_sorted
    - dsync_mailbox_tree_node_detach
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_tree_node_move_sorted(struct dsync_mailbox_node
      *node,\n\t\t\t\t    struct dsync_mailbox_node *parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:285,1
    - Dst: dsync_mailbox_tree_node_detach
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:289,1
    - Dst: dsync_mailbox_tree_node_attach_sorted
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - tree
    - name
    argTypes:
    - struct dsync_mailbox_tree*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 280
    functionDepth: 2
    functionLinenumber: 280
    functionLinenumberEnd: 294
    functionName: sorted_tree_get
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_get
    - dsync_mailbox_tree_node_attach_sorted
    - dsync_mailbox_tree_node_detach
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: 'struct dsync_mailbox_node *

      sorted_tree_get(struct dsync_mailbox_tree *tree, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:304,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - tree
    - pos
    - parent
    - src
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node**
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 313
    functionName: sync_node_new
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\nsync_node_new(struct dsync_mailbox_tree
      *tree,\n\t      struct dsync_mailbox_node **pos,\n\t      struct dsync_mailbox_node
      *parent,\n\t      const struct dsync_mailbox_node *src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:325,1
    - Dst: sorted_tree_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - tree
    - other_tree
    - other_node
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 327
    functionName: sorted_tree_get_by_node_name
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_node_get_full_name
    - sorted_tree_get
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\nsorted_tree_get_by_node_name(struct dsync_mailbox_tree
      *tree,\n\t\t\t     struct dsync_mailbox_tree *other_tree,\n\t\t\t     struct
      dsync_mailbox_node *other_node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - parent
    - name
    argTypes:
    - struct dsync_mailbox_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 338
    functionName: node_has_child
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool node_has_child(struct dsync_mailbox_node *parent, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:345,1
    - Dst: node_has_existent_children
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - node
    - dirs_ok
    argTypes:
    - struct dsync_mailbox_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 351
    functionName: node_has_existent_children
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - node_has_existent_children
    - dsync_mailbox_node_is_dir
    linkageType: ''
    returnType: bool
    signature: bool node_has_existent_children(struct dsync_mailbox_node *node, bool
      dirs_ok)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: node_has_existent_children
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 358
    functionName: node_is_existent
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - node_has_existent_children
    linkageType: ''
    returnType: bool
    signature: bool node_is_existent(struct dsync_mailbox_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:366,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:372,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:373,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:375,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 377
    functionName: sync_node_is_namespace_prefix
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_get_sep
    - strncmp
    - dsync_mailbox_node_get_full_name
    linkageType: ''
    returnType: bool
    signature: "bool sync_node_is_namespace_prefix(struct dsync_mailbox_tree *tree,\n\t\t\t\t\t
      \ struct dsync_mailbox_node *node)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:393,1
    - Dst: sync_node_is_namespace_prefix
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:393,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:395,1
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:400,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:401,1
    - Dst: str_append_max
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:405,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:406,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:410,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:411,1
    - Dst: node_has_child
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:414,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:414,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:417,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:419,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:419,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:420,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:420,1
    - Dst: dsync_mailbox_tree_node_move_sorted
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:423,1
    - Dst: node_is_existent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:425,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:427,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:429,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:430,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:430,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:431,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:434,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:435,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 5
    argNames:
    - ctx
    - tree
    - node
    - new_parent
    - reason_r
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 437
    functionName: sync_rename_node_to_temp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - str_printfa
    - p_strdup
    - str_append_c
    - strrchr
    - array_append_space
    - node_has_child
    - t_strdup_printf
    - dsync_mailbox_tree_node_move_sorted
    - sync_node_is_namespace_prefix
    - str_truncate
    - dsync_mailbox_node_get_full_name
    - str_append_max
    - buffer_create_from_data
    - node_is_existent
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sync_rename_node_to_temp(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t\t
      struct dsync_mailbox_tree *tree,\n\t\t\t struct dsync_mailbox_node *node,\n\t\t\t
      struct dsync_mailbox_node *new_parent,\n\t\t\t const char **reason_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - parent
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 447
    functionName: node_has_parent
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool node_has_parent(struct dsync_mailbox_node *node,\n\t\t\t    struct
      dsync_mailbox_node *parent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:462,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:463,1
    - Dst: sorted_tree_get_by_node_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:472,1
    - Dst: node_has_parent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:474,1
    - Dst: sync_rename_node_to_temp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:477,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:478,1
    - Dst: sync_rename_node_to_temp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:481,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:484,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:487,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:489,1
    - Dst: dsync_mailbox_tree_node_move_sorted
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:495,1
    - Dst: node_is_existent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:497,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:499,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:501,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:502,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:502,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:503,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:506,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 6
    argNames:
    - ctx
    - tree
    - temp_node
    - node
    - other_node
    - reason_r
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 449
    functionDepth: 4
    functionLinenumber: 449
    functionLinenumberEnd: 509
    functionName: sync_rename_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - node_has_parent
    - strcmp
    - p_strdup
    - sorted_tree_get_by_node_name
    - array_append_space
    - sync_rename_node_to_temp
    - t_strdup_printf
    - dsync_mailbox_tree_node_move_sorted
    - dsync_mailbox_node_get_full_name
    - node_is_existent
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void sync_rename_node(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t
      struct dsync_mailbox_tree *tree,\n\t\t struct dsync_mailbox_node *temp_node,\n\t\t
      struct dsync_mailbox_node *node,\n\t\t const struct dsync_mailbox_node *other_node,\n\t\t
      const char **reason_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:524,1
    - Dst: node_mailbox_guids_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:529,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 539
    functionName: node_mailbox_guids_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - node_mailbox_guids_cmp
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int node_mailbox_guids_cmp(struct dsync_mailbox_node *node1,\n\t\t\t\t
      \ struct dsync_mailbox_node *node2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:547,1
    - Dst: node_mailbox_names_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 561
    functionName: node_mailbox_names_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - strcmp
    - node_mailbox_names_cmp
    linkageType: ''
    returnType: int
    signature: "int node_mailbox_names_cmp(struct dsync_mailbox_node *node1,\n\t\t\t\t
      \ struct dsync_mailbox_node *node2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: node_mailbox_guids_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:568,1
    - Dst: node_mailbox_names_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:572,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:574,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 563
    functionDepth: 2
    functionLinenumber: 563
    functionLinenumberEnd: 576
    functionName: node_mailbox_trees_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - i_assert
    - node_mailbox_names_cmp
    - node_mailbox_guids_cmp
    linkageType: ''
    returnType: int
    signature: "int node_mailbox_trees_cmp(struct dsync_mailbox_node *node1,\n\t\t\t\t
      \ struct dsync_mailbox_node *node2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 590
    functionName: nodes_get_timestamp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: "time_t nodes_get_timestamp(struct dsync_mailbox_node *node1,\n\t\t\t\t
      \ struct dsync_mailbox_node *node2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sync_node_is_namespace_prefix
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 592
    functionDepth: 2
    functionLinenumber: 592
    functionLinenumberEnd: 600
    functionName: sync_node_is_namespace_root
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - sync_node_is_namespace_prefix
    linkageType: ''
    returnType: bool
    signature: "bool sync_node_is_namespace_root(struct dsync_mailbox_tree *tree,\n\t\t\t\t\tstruct
      dsync_mailbox_node *node)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:619,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:619,1
    - Dst: sync_node_is_namespace_root
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:621,1
    - Dst: sync_node_is_namespace_root
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:622,1
    - Dst: sync_node_is_namespace_root
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:623,1
    - Dst: sync_node_is_namespace_root
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:624,1
    - Dst: nodes_get_timestamp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:631,1
    - Dst: nodes_get_timestamp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:632,1
    - Dst: node_mailbox_trees_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:646,1
    - Dst: sync_rename_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:660,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:662,1
    - Dst: sync_rename_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:686,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:688,1
    - Dst: node_has_parent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:690,1
    - Dst: sync_rename_node_to_temp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:694,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:696,1
    - Dst: node_has_parent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:698,1
    - Dst: sync_rename_node_to_temp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:702,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:704,1
    - Dst: sync_rename_node_to_temp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:707,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:709,1
    - Dst: sync_rename_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:720,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:722,1
    - Dst: sync_rename_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:727,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:729,1
    - Dst: node_has_parent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:731,1
    - Dst: sync_rename_node_to_temp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:733,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:735,1
    - Dst: node_has_parent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:737,1
    - Dst: sync_rename_node_to_temp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:739,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:741,1
    - Dst: sync_rename_node_to_temp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:744,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:746,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 78
    argCount: 6
    argNames:
    - ctx
    - local_node1
    - remote_node1
    - local_node2
    - remote_node2
    - reason_r
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 603
    functionDepth: 5
    functionLinenumber: 603
    functionLinenumberEnd: 753
    functionName: sync_rename_lower_ts
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - strcmp
    - node_has_parent
    - i_assert
    - sync_rename_node_to_temp
    - sync_node_is_namespace_root
    - nodes_get_timestamp
    - t_strconcat
    - sync_rename_node
    - node_mailbox_trees_cmp
    linkageType: ''
    returnType: void
    signature: "void sync_rename_lower_ts(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t
      \    struct dsync_mailbox_node *local_node1,\n\t\t     struct dsync_mailbox_node
      *remote_node1,\n\t\t     struct dsync_mailbox_node *local_node2,\n\t\t     struct
      dsync_mailbox_node *remote_node2,\n\t\t     const char **reason_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:765,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:767,1
    - Dst: sync_rename_lower_ts
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:772,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:774,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:776,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:777,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - local_node1
    - remote_node2
    - reason_r
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 755
    functionDepth: 6
    functionLinenumber: 755
    functionLinenumberEnd: 792
    functionName: sync_rename_conflict
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - sync_rename_lower_ts
    - hash_table_lookup
    - t_strconcat
    - dsync_mailbox_node_is_dir
    linkageType: ''
    returnType: bool
    signature: "bool sync_rename_conflict(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t\t\t
      struct dsync_mailbox_node *local_node1,\n\t\t\t\t struct dsync_mailbox_node
      *remote_node2,\n\t\t\t\t const char **reason_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:803,1
    - Dst: sync_find_branch
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:804,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:809,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - tree
    - other_tree
    - dir_node
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 816
    functionName: sync_find_branch
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - sync_find_branch
    - hash_table_lookup
    - dsync_mailbox_node_is_dir
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\nsync_find_branch(struct dsync_mailbox_tree
      *tree,\n\t\t struct dsync_mailbox_tree *other_tree,\n\t\t struct dsync_mailbox_node
      *dir_node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sync_find_branch
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:828,1
    - Dst: sync_find_branch
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:830,1
    - Dst: node_names_equal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:836,1
    - Dst: sync_rename_lower_ts
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:841,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - local_node1
    - remote_node2
    - reason_r
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 818
    functionDepth: 6
    functionLinenumber: 818
    functionLinenumberEnd: 843
    functionName: sync_rename_directory
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - sync_find_branch
    - sync_rename_lower_ts
    - node_names_equal
    linkageType: ''
    returnType: bool
    signature: "bool sync_rename_directory(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t\t\t
      \ struct dsync_mailbox_node *local_node1,\n\t\t\t\t  struct dsync_mailbox_node
      *remote_node2,\n\t\t\t\t  const char **reason_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: event_want_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:856,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:857,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:866,1
    - Dst: sync_node_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:868,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:872,1
    - Dst: sync_node_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:874,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:877,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:877,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:879,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:880,1
    - Dst: dsync_mailbox_node_append_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:881,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:882,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:883,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:886,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:891,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:892,1
    - Dst: sync_rename_directory
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:896,1
    - Dst: dsync_mailbox_node_guids_equal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:897,1
    - Dst: sync_rename_conflict
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:904,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:909,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:909,1
    - Dst: sync_rename_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:912,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - local_parent
    - remote_parent
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 845
    functionDepth: 7
    functionLinenumber: 845
    functionLinenumberEnd: 920
    functionName: sync_rename_mailboxes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - strcmp
    - dsync_mailbox_node_append_full_name
    - t_str_new
    - str_printfa
    - str_c
    - e_debug
    - guid_128_to_string
    - sync_rename_directory
    - sync_rename_conflict
    - dsync_mailbox_node_guids_equal
    - event_want_debug
    - sync_node_new
    - str_truncate
    - dsync_mailbox_node_is_dir
    - str_append
    - i_assert
    - sync_rename_mailboxes
    linkageType: ''
    returnType: bool
    signature: "bool sync_rename_mailboxes(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t\t\t
      \ struct dsync_mailbox_node *local_parent,\n\t\t\t\t  struct dsync_mailbox_node
      *remote_parent)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:929,1
    - Dst: md5_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:931,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:931,1
    - Dst: mailbox_node_hash_first_child
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:935,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - node
    - md5
    argTypes:
    - struct dsync_mailbox_node*
    - struct md5_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 924
    functionDepth: 1
    functionLinenumber: 924
    functionLinenumberEnd: 940
    functionName: mailbox_node_hash_first_child
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - mailbox_node_hash_first_child
    - strlen
    - md5_update
    linkageType: ''
    returnType: bool
    signature: "bool mailbox_node_hash_first_child(struct dsync_mailbox_node *node,\n\t\t\t\t\t
      \ struct md5_context *md5)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:948,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:949,1
    - Dst: md5_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:951,1
    - Dst: mailbox_node_hash_first_child
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:952,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:953,1
    - Dst: md5_final
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:954,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 956
    functionName: mailbox_node_generate_suffix
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - mailbox_node_hash_first_child
    - md5_final
    - i_unreached
    - guid_128_to_string
    - md5_init
    - dsync_mailbox_node_is_dir
    - binary_to_hex
    linkageType: ''
    returnType: char
    signature: 'char *

      mailbox_node_generate_suffix(struct dsync_mailbox_node *node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:963,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:963,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:964,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:973,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:976,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 958
    functionDepth: 1
    functionLinenumber: 958
    functionLinenumberEnd: 977
    functionName: suffix_inc
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - str_len
    - i_unreached
    - str_c_modifiable
    linkageType: ''
    returnType: void
    signature: void suffix_inc(string_t *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:985,1
    - Dst: mailbox_node_generate_suffix
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:993,1
    - Dst: strrchr
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:995,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:996,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:998,1
    - Dst: str_append_max
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1001,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1002,1
    - Dst: node_has_child
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1003,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1003,1
    - Dst: suffix_inc
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1004,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1006,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1007,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1007,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1008,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1008,1
    - Dst: dsync_mailbox_tree_node_move_sorted
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1010,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - tree
    - node
    - reason_r
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 979
    functionDepth: 3
    functionLinenumber: 979
    functionLinenumberEnd: 1012
    functionName: sync_rename_temp_mailbox_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - p_strdup
    - strrchr
    - strlen
    - mailbox_node_generate_suffix
    - node_has_child
    - t_strdup_printf
    - dsync_mailbox_tree_node_move_sorted
    - dsync_mailbox_node_get_full_name
    - str_append_max
    - str_append
    - i_assert
    - suffix_inc
    linkageType: ''
    returnType: void
    signature: "void sync_rename_temp_mailbox_node(struct dsync_mailbox_tree *tree,\n\t\t\t
      \     struct dsync_mailbox_node *node,\n\t\t\t      const char **reason_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sync_rename_delete_node_dirs
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1022,1
    - Dst: sync_add_dir_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1027,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - tree
    - node
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1014
    functionDepth: 2
    functionLinenumber: 1014
    functionLinenumberEnd: 1032
    functionName: sync_rename_delete_node_dirs
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - sync_add_dir_change
    - sync_rename_delete_node_dirs
    linkageType: ''
    returnType: void
    signature: "void sync_rename_delete_node_dirs(struct dsync_mailbox_tree_sync_ctx
      *ctx,\n\t\t\t     struct dsync_mailbox_tree *tree,\n\t\t\t     struct dsync_mailbox_node
      *node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sync_rename_temp_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1042,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1045,1
    - Dst: node_has_existent_children
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1047,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1050,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1052,1
    - Dst: sync_rename_delete_node_dirs
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1053,1
    - Dst: sync_rename_temp_mailbox_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1057,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1058,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1060,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - tree
    - node
    - renames_r
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1034
    functionDepth: 4
    functionLinenumber: 1034
    functionLinenumberEnd: 1064
    functionName: sync_rename_temp_mailboxes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - e_debug
    - sync_rename_temp_mailboxes
    - node_has_existent_children
    - sync_rename_delete_node_dirs
    - sync_rename_temp_mailbox_node
    - dsync_mailbox_node_get_full_name
    - dsync_mailbox_node_is_dir
    linkageType: ''
    returnType: bool
    signature: "bool sync_rename_temp_mailboxes(struct dsync_mailbox_tree_sync_ctx
      *ctx,\n\t\t\t   struct dsync_mailbox_tree *tree,\n\t\t\t   struct dsync_mailbox_node
      *node, bool *renames_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sync_rename_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1080,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1084,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1089,1
    - Dst: sync_rename_temp_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1094,1
    - Dst: sync_rename_temp_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1095,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - renames_r
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1068
    functionDepth: 8
    functionLinenumber: 1068
    functionLinenumberEnd: 1097
    functionName: dsync_mailbox_tree_handle_renames
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - e_debug
    - sync_rename_temp_mailboxes
    - sync_rename_mailboxes
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_handle_renames(struct dsync_mailbox_tree_sync_ctx
      *ctx,\n\t\t\t\t  bool *renames_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1109,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1116,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - node
    - wanted_node
    - reason_r
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1099
    functionDepth: 1
    functionLinenumber: 1099
    functionLinenumberEnd: 1127
    functionName: sync_is_wrong_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool sync_is_wrong_mailbox(struct dsync_mailbox_node *node,\n\t\t\t\t
      \ const struct dsync_mailbox_node *wanted_node,\n\t\t\t\t  const char **reason_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sync_delete_wrong_mailboxes_branch
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1141,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1145,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1149,1
    - Dst: sync_delete_mailbox_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1150,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1158,1
    - Dst: sync_is_wrong_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1158,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1160,1
    - Dst: sync_delete_mailbox_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1161,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 5
    argNames:
    - ctx
    - tree
    - wanted_tree
    - node
    - wanted_node
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1129
    functionDepth: 3
    functionLinenumber: 1129
    functionLinenumberEnd: 1165
    functionName: sync_delete_wrong_mailboxes_branch
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - strcmp
    - sync_delete_wrong_mailboxes_branch
    - sync_is_wrong_mailbox
    - if
    - dsync_mailbox_node_is_dir
    - sync_delete_mailbox_node
    linkageType: ''
    returnType: void
    signature: "void sync_delete_wrong_mailboxes_branch(struct dsync_mailbox_tree_sync_ctx
      *ctx,\n\t\t\t\t   struct dsync_mailbox_tree *tree,\n\t\t\t\t   const struct
      dsync_mailbox_tree *wanted_tree,\n\t\t\t\t   struct dsync_mailbox_node *node,\n\t\t\t\t
      \  const struct dsync_mailbox_node *wanted_node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sync_delete_wrong_mailboxes_branch
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - tree
    - wanted_tree
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1179
    functionDepth: 4
    functionLinenumber: 1179
    functionLinenumberEnd: 1187
    functionName: sync_delete_wrong_mailboxes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - sync_delete_wrong_mailboxes_branch
    linkageType: ''
    returnType: void
    signature: "void sync_delete_wrong_mailboxes(struct dsync_mailbox_tree_sync_ctx
      *ctx,\n\t\t\t    struct dsync_mailbox_tree *tree,\n\t\t\t    const struct dsync_mailbox_tree
      *wanted_tree)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1201,1
    - Dst: dsync_mailbox_tree_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1202,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1204,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1205,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1208,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1211,1
    - Dst: sorted_tree_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1213,1
    - Dst: dsync_mailbox_node_is_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1214,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1219,1
    - Dst: sync_add_create_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1222,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1223,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1231,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1232,1
    - Dst: sync_add_create_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1235,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1239,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1240,1
    - Dst: dsync_mailbox_tree_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1243,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - tree
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1189
    functionDepth: 3
    functionLinenumber: 1189
    functionLinenumberEnd: 1244
    functionName: sync_create_mailboxes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - memcpy
    - dsync_mailbox_tree_iter_init
    - dsync_mailbox_tree_iter_next
    - guid_128_equals
    - sorted_tree_get
    - dsync_mailbox_tree_iter_deinit
    - sync_add_create_change
    - dsync_mailbox_node_is_dir
    - hash_table_lookup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sync_create_mailboxes(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t\t\t
      \ struct dsync_mailbox_tree *tree)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sync_add_dir_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - local_node
    - remote_node
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1246
    functionDepth: 2
    functionLinenumber: 1246
    functionLinenumberEnd: 1276
    functionName: sync_subscription
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - sync_add_dir_change
    linkageType: ''
    returnType: void
    signature: "void sync_subscription(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t
      \ struct dsync_mailbox_node *local_node,\n\t\t  struct dsync_mailbox_node *remote_node)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1294,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1296,1
    - Dst: node_is_existent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1296,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1301,1
    - Dst: node_is_existent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1301,1
    - Dst: sync_add_dir_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1317,1
    - Dst: sync_mailbox_child_dirs
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1322,1
    - Dst: sync_subscription
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1325,1
    - Dst: node_has_existent_children
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1328,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1332,1
    - Dst: node_has_existent_children
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1332,1
    - Dst: node_has_existent_children
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1336,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1340,1
    - Dst: node_has_existent_children
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1340,1
    - Dst: sync_add_dir_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1342,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1350,1
    - Dst: node_is_existent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1350,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1354,1
    - Dst: node_is_existent
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1354,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 45
    argCount: 3
    argNames:
    - ctx
    - local_parent
    - remote_parent
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1278
    functionDepth: 3
    functionLinenumber: 1278
    functionLinenumberEnd: 1357
    functionName: sync_mailbox_child_dirs
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - strcmp
    - sync_add_dir_change
    - sync_mailbox_child_dirs
    - node_has_existent_children
    - sync_subscription
    - node_is_existent
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void sync_mailbox_child_dirs(struct dsync_mailbox_tree_sync_ctx *ctx,\n\t\t\t\t
      \   struct dsync_mailbox_node *local_parent,\n\t\t\t\t    struct dsync_mailbox_node
      *remote_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sync_mailbox_child_dirs
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1359
    functionDepth: 4
    functionLinenumber: 1359
    functionLinenumberEnd: 1363
    functionName: sync_mailbox_dirs
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - sync_mailbox_child_dirs
    linkageType: ''
    returnType: void
    signature: void sync_mailbox_dirs(struct dsync_mailbox_tree_sync_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_update_child_timestamps
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1376,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - node
    - parent_timestamp
    argTypes:
    - struct dsync_mailbox_node*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1365
    functionDepth: 1
    functionLinenumber: 1365
    functionLinenumberEnd: 1377
    functionName: dsync_mailbox_tree_update_child_timestamps
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - dsync_mailbox_tree_update_child_timestamps
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_tree_update_child_timestamps(struct dsync_mailbox_node
      *node,\n\t\t\t\t\t   time_t parent_timestamp)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1391,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1391,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1392,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1392,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1394,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1396,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1403,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1404,1
    - Dst: sync_tree_sort_and_delete_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1409,1
    - Dst: sync_tree_sort_and_delete_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1411,1
    - Dst: dsync_mailbox_tree_update_child_timestamps
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1414,1
    - Dst: dsync_mailbox_tree_update_child_timestamps
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1415,1
    - Dst: dsync_mailbox_tree_handle_renames
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1417,1
    - Dst: sync_delete_wrong_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1427,1
    - Dst: sync_delete_wrong_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1429,1
    - Dst: sync_create_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1432,1
    - Dst: sync_create_mailboxes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1434,1
    - Dst: sync_mailbox_dirs
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1443,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 5
    argNames:
    - local_tree
    - remote_tree
    - sync_type
    - sync_flags
    - parent_event
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    - enum dsync_mailbox_trees_sync_type
    - enum dsync_mailbox_trees_sync_flags
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1379
    functionDepth: 9
    functionLinenumber: 1379
    functionLinenumberEnd: 1445
    functionName: dsync_mailbox_trees_sync_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - event_create
    - dsync_mailbox_tree_handle_renames
    - p_new
    - sync_tree_sort_and_delete_mailboxes
    - sync_mailbox_dirs
    - sync_create_mailboxes
    - i_assert
    - hash_table_is_created
    - sync_delete_wrong_mailboxes
    - dsync_mailbox_tree_update_child_timestamps
    linkageType: ''
    returnType: struct dsync_mailbox_tree_sync_ctx
    signature: "struct dsync_mailbox_tree_sync_ctx *\ndsync_mailbox_trees_sync_init(struct
      dsync_mailbox_tree *local_tree,\n\t\t\t      struct dsync_mailbox_tree *remote_tree,\n\t\t\t
      \     enum dsync_mailbox_trees_sync_type sync_type,\n\t\t\t      enum dsync_mailbox_trees_sync_flags
      sync_flags,\n\t\t\t      struct event *parent_event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1450,1
    - Dst: array_idx
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1447
    functionDepth: 1
    functionLinenumber: 1447
    functionLinenumberEnd: 1453
    functionName: dsync_mailbox_trees_sync_next
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_idx
    linkageType: ''
    returnType: struct dsync_mailbox_tree_sync_change
    signature: 'struct dsync_mailbox_tree_sync_change *

      dsync_mailbox_trees_sync_next(struct dsync_mailbox_tree_sync_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1462,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1463,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c:1464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dsync_mailbox_tree_sync_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1455
    functionDepth: 1
    functionLinenumber: 1455
    functionLinenumberEnd: 1466
    functionName: dsync_mailbox_trees_sync_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - event_unref
    - array_free
    - pool_unref
    linkageType: ''
    returnType: int
    signature: int dsync_mailbox_trees_sync_deinit(struct dsync_mailbox_tree_sync_ctx
      **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.h:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr_hash
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: dsync_mail_hdr_hash_is_empty
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mail.h
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool dsync_mail_hdr_hash_is_empty(const char *hdr_hash)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:18,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:19,1
    - Dst: dsync_brain_want_namespace
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:22,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:25,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:32,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:37,1
    - Dst: i_fatal
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:48,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 49
    functionName: dsync_brain_check_namespaces
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - dsync_brain_want_namespace
    - i_assert
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void dsync_brain_check_namespaces(struct dsync_brain *brain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_brain_check_namespaces
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:55,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:58,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:62,1
    - Dst: dsync_brain_want_namespace
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:67,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:69,1
    - Dst: dsync_mailbox_tree_fill
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:71,1
    - Dst: dsync_mailbox_tree_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:84,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 85
    functionName: dsync_brain_mailbox_trees_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_iter_init
    - dsync_mailbox_tree_fill
    - dsync_brain_check_namespaces
    - e_debug
    - dsync_brain_want_namespace
    - dsync_mailbox_tree_init
    linkageType: ''
    returnType: void
    signature: void dsync_brain_mailbox_trees_init(struct dsync_brain *brain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:93,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:109,1
    - Dst: dsync_mailbox_node_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:110,1
    - Dst: dsync_mailbox_name_to_parts
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:112,1
    - Dst: dsync_ibc_send_mailbox_tree_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:114,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 119
    functionName: dsync_brain_send_mailbox_tree
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_name_to_parts
    - dsync_mailbox_node_to_string
    - dsync_ibc_send_mailbox_tree_node
    - dsync_mailbox_tree_iter_next
    - e_debug
    linkageType: ''
    returnType: void
    signature: void dsync_brain_send_mailbox_tree(struct dsync_brain *brain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_get_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:131,1
    - Dst: dsync_ibc_send_mailbox_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 138
    functionName: dsync_brain_send_mailbox_tree_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_get_deletes
    - dsync_ibc_send_mailbox_deletes
    linkageType: ''
    returnType: void
    signature: void dsync_brain_send_mailbox_tree_deletes(struct dsync_brain *brain)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:145,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:148,1
    - Dst: str_begins
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:154,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - ns
    - name_parts
    argTypes:
    - struct mail_namespace*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 169
    functionName: dsync_namespace_match_parts
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mail_namespace_get_sep
    - str_begins
    linkageType: ''
    returnType: bool
    signature: "bool dsync_namespace_match_parts(struct mail_namespace *ns,\n\t\t\t
      \   const char *const *name_parts)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsync_brain_want_namespace
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:177,1
    - Dst: dsync_namespace_match_parts
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:184,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - brain
    - name_parts
    argTypes:
    - struct dsync_brain*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 191
    functionName: dsync_find_namespace
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_brain_want_namespace
    - dsync_namespace_match_parts
    linkageType: ''
    returnType: struct mail_namespace
    signature: 'struct mail_namespace *

      dsync_find_namespace(struct dsync_brain *brain, const char *const *name_parts)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:199,1
    - Dst: mailbox_verify_create_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:200,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ns
    - vname
    argTypes:
    - struct mail_namespace*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 5
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: dsync_is_valid_name
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - mailbox_verify_create_name
    - mailbox_free
    - mailbox_alloc
    linkageType: ''
    returnType: bool
    signature: bool dsync_is_valid_name(struct mail_namespace *ns, const char *vname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:210,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:211,1
    - Dst: t_strndup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:213,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:213,1
    - Dst: dsync_is_valid_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ns
    - vname_full
    - end_pos
    argTypes:
    - struct mail_namespace*
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 205
    functionDepth: 6
    functionLinenumber: 205
    functionLinenumberEnd: 215
    functionName: dsync_is_valid_name_until
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - str_c
    - dsync_is_valid_name
    - t_strndup
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool dsync_is_valid_name_until(struct mail_namespace *ns, string_t
      *vname_full,\n\t\t\t  unsigned int end_pos)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dsync_is_valid_name_until
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:225,1
    - Dst: mailbox_list_get_hierarchy_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:231,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:232,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:234,1
    - Dst: dsync_is_valid_name_until
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:239,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:245,1
    - Dst: dsync_is_valid_name_until
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:250,1
    - Dst: str_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:255,1
    - Dst: dsync_is_valid_name_until
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:256,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 5
    argNames:
    - ns
    - vname_full
    - alt_char
    - start_pos
    - _end_pos
    argTypes:
    - struct mail_namespace*
    - string_t*
    - char
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 217
    functionDepth: 7
    functionLinenumber: 217
    functionLinenumberEnd: 260
    functionName: dsync_fix_mailbox_name_until
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - str_insert
    - dsync_is_valid_name_until
    - mailbox_list_get_hierarchy_sep
    - str_c_modifiable
    linkageType: ''
    returnType: bool
    signature: "bool dsync_fix_mailbox_name_until(struct mail_namespace *ns, string_t
      *vname_full,\n\t\t\t     char alt_char, unsigned int start_pos,\n\t\t\t     unsigned
      int *_end_pos)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:268,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:272,1
    - Dst: strncmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:273,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:284,1
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:285,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:286,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:287,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:288,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:289,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:290,1
    - Dst: dsync_is_valid_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:292,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:298,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:298,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:299,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:299,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:302,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:304,1
    - Dst: dsync_fix_mailbox_name_until
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:306,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:310,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:311,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:312,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:313,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:313,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:314,1
    - Dst: dsync_is_valid_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:314,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:314,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - ns
    - vname_str
    - alt_char
    argTypes:
    - struct mail_namespace*
    - string_t*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 262
    functionDepth: 8
    functionLinenumber: 262
    functionLinenumberEnd: 319
    functionName: dsync_fix_mailbox_name
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - mail_namespace_get_sep
    - strchr
    - str_c
    - dsync_fix_mailbox_name_until
    - i_unreached
    - uni_utf8_str_is_valid
    - str_len
    - strlen
    - guid_128_to_string
    - guid_128_generate
    - dsync_is_valid_name
    - uni_utf8_get_valid_data
    - str_truncate
    - str_append
    - strncmp
    - t_strdup
    - i_assert
    - str_c_modifiable
    linkageType: ''
    returnType: void
    signature: "void dsync_fix_mailbox_name(struct mail_namespace *ns, string_t *vname_str,\n\t\t
      \      char alt_char)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:330,1
    - Dst: dsync_find_namespace
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:332,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:335,1
    - Dst: DSYNC_LIST_CONTEXT
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:343,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:350,1
    - Dst: mailbox_list_name_escape
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:353,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:358,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:360,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:363,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:365,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:365,1
    - Dst: dsync_fix_mailbox_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:367,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:368,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - brain
    - name_parts
    - name_r
    - ns_r
    argTypes:
    - struct dsync_brain*
    - char**
    - char**
    - struct mail_namespace**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 321
    functionDepth: 9
    functionLinenumber: 321
    functionLinenumberEnd: 371
    functionName: dsync_get_mailbox_name
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_find_namespace
    - mail_namespace_get_sep
    - t_str_new
    - DSYNC_LIST_CONTEXT
    - mailbox_list_name_escape
    - str_append_c
    - str_c
    - str_len
    - dsync_fix_mailbox_name
    - str_truncate
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dsync_get_mailbox_name(struct dsync_brain *brain, const char *const
      *name_parts,\n\t\t       const char **name_r, struct mail_namespace **ns_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_trees_sync_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:390,1
    - Dst: dsync_mailbox_trees_sync_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:394,1
    - Dst: dsync_brain_mailbox_tree_sync_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:396,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 373
    functionDepth: 10
    functionLinenumber: 373
    functionLinenumberEnd: 403
    functionName: dsync_brain_mailbox_trees_sync
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_trees_sync_init
    - dsync_mailbox_trees_sync_next
    - dsync_brain_mailbox_tree_sync_change
    linkageType: ''
    returnType: void
    signature: void dsync_brain_mailbox_trees_sync(struct dsync_brain *brain)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_get_mailbox_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:418,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:420,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:421,1
    - Dst: dsync_mailbox_node_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:422,1
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:423,1
    - Dst: dsync_mailbox_node_copy_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - brain
    - parts
    - remote_node
    - sep
    argTypes:
    - struct dsync_brain*
    - char**
    - struct dsync_mailbox_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 408
    functionDepth: 10
    functionLinenumber: 408
    functionLinenumberEnd: 427
    functionName: dsync_brain_recv_mailbox_tree_add
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_node_to_string
    - e_debug
    - t_strarray_join
    - dsync_mailbox_tree_get
    - dsync_get_mailbox_name
    - dsync_mailbox_node_copy_data
    linkageType: ''
    returnType: int
    signature: "int dsync_brain_recv_mailbox_tree_add(struct dsync_brain *brain,\n\t\t\t\t
      \ const char *const *parts,\n\t\t\t\t  const struct dsync_mailbox_node *remote_node,\n\t\t\t\t
      \ const char *sep)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_recv_mailbox_tree_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:440,1
    - Dst: dsync_brain_recv_mailbox_tree_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:443,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:447,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 429
    functionDepth: 11
    functionLinenumber: 429
    functionLinenumberEnd: 453
    functionName: dsync_brain_recv_mailbox_tree
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - e_error
    - dsync_ibc_recv_mailbox_tree_node
    - dsync_brain_recv_mailbox_tree_add
    - t_strarray_join
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_recv_mailbox_tree(struct dsync_brain *brain)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_find_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:486,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:515,1
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:516,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:519,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:529,1
    - Dst: dsync_mailbox_tree_guid_hash_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:551,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:553,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 5
    argNames:
    - tree
    - other_tree
    - other_del
    - node_r
    - status_r
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_delete*
    - struct dsync_mailbox_node**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 554
    functionName: dsync_brain_mailbox_tree_add_delete
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_unreached
    - dsync_mailbox_tree_find_delete
    - dsync_mailbox_tree_get
    - dsync_mailbox_tree_guid_hash_add
    - dsync_mailbox_node_get_full_name
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: "void dsync_brain_mailbox_tree_add_delete(struct dsync_mailbox_tree
      *tree,\n\t\t\t\t    struct dsync_mailbox_tree *other_tree,\n\t\t\t\t    const
      struct dsync_mailbox_delete *other_del,\n\t\t\t\t    const struct dsync_mailbox_node
      **node_r,\n\t\t\t\t    const char **status_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_recv_mailbox_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:564,1
    - Dst: dsync_mailbox_tree_set_remote_chars
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:569,1
    - Dst: dsync_brain_mailbox_tree_add_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:572,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:577,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:578,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:581,1
    - Dst: dsync_mailbox_delete_type_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:582,1
    - Dst: dsync_mailbox_tree_get_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:588,1
    - Dst: dsync_mailbox_tree_set_remote_chars
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:590,1
    - Dst: dsync_brain_mailbox_tree_add_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:594,1
    - Dst: dsync_brain_mailbox_trees_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:599,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:603,1
    - Dst: dsync_mailbox_tree_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c:605,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 556
    functionDepth: 11
    functionLinenumber: 556
    functionLinenumberEnd: 607
    functionName: dsync_brain_recv_mailbox_tree_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_brain_mailbox_trees_sync
    - dsync_mailbox_tree_iter_init
    - e_debug
    - guid_128_to_string
    - dsync_mailbox_tree_set_remote_chars
    - dsync_brain_mailbox_tree_add_delete
    - dsync_mailbox_tree_get_deletes
    - dsync_mailbox_node_get_full_name
    - i_assert
    - dsync_ibc_recv_mailbox_deletes
    - dsync_mailbox_delete_type_to_string
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_recv_mailbox_tree_deletes(struct dsync_brain *brain)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:20,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:21,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:24,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:25,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:27,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:28,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:39,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:40,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:41,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:42,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:52,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:53,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:54,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:55,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:59,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:68,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:69,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:70,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:71,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:72,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:73,1
    - Dst: mailbox_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:75,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:76,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:77,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:78,1
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:82,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:84,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:85,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:86,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:89,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:91,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:93,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:98,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:100,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:101,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:102,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 5
    argNames:
    - brain
    - box
    - mailbox_guid
    - uid_validity
    - error_r
    argTypes:
    - struct dsync_brain*
    - struct mailbox*
    - guid_128_t
    - uint32_t
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 9
    functionDepth: 11
    functionLinenumber: 9
    functionLinenumberEnd: 105
    functionName: sync_create_box
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - mailbox_update
    - mailbox_get_last_internal_error
    - e_debug
    - guid_128_to_string
    - mailbox_sync
    - e_error
    - mailbox_get_vname
    - memcmp
    - mailbox_create
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int sync_create_box(struct dsync_brain *brain, struct mailbox *box,\n\t\tconst
      guid_128_t mailbox_guid, uint32_t uid_validity,\n\t\tenum mail_error *error_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:117,1
    - Dst: dsync_brain_mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:124,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:127,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:130,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:134,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:134,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:137,1
    - Dst: mailbox_list_get_storage_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:142,1
    - Dst: mailbox_list_delete_dir
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:144,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:147,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:150,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:150,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:155,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:162,1
    - Dst: mailbox_skip_create_name_restrictions
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:165,1
    - Dst: sync_create_box
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:168,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:170,1
    - Dst: mailbox_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:173,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:175,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:186,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:190,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:192,1
    - Dst: mailbox_skip_create_name_restrictions
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:194,1
    - Dst: mailbox_rename
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:195,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:197,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:200,1
    - Dst: mailbox_set_subscribed
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:204,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:209,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:214,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:214,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:216,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:219,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:221,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c:225,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 81
    argCount: 3
    argNames:
    - brain
    - change
    - error_r
    argTypes:
    - struct dsync_brain*
    - struct dsync_mailbox_tree_sync_change*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 107
    functionDepth: 12
    functionLinenumber: 107
    functionLinenumberEnd: 227
    functionName: dsync_brain_mailbox_tree_sync_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - mailbox_get_last_internal_error
    - t_strdup_printf
    - mailbox_alloc
    - dsync_brain_set_changes_during_sync
    - mailbox_create
    - mailbox_free
    - i_unreached
    - mailbox_list_get_storage_name
    - mailbox_list_delete_dir
    - mailbox_skip_create_name_restrictions
    - dsync_brain_mailbox_alloc
    - mailbox_list_get_last_internal_error
    - sync_create_box
    - guid_128_to_string
    - e_error
    - mailbox_delete
    - mailbox_get_vname
    - i_assert
    - mailbox_get_last_mail_error
    - mailbox_rename
    - mailbox_set_subscribed
    linkageType: ''
    returnType: int
    signature: "int dsync_brain_mailbox_tree_sync_change(struct dsync_brain *brain,\n\t\t\tconst
      struct dsync_mailbox_tree_sync_change *change,\n\t\t\tenum mail_error *error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:25,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:26,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:28,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:29,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - sep
    - escape_char
    - alt_char
    argTypes:
    - char
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 37
    functionName: dsync_mailbox_tree_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - i_assert
    - p_new
    linkageType: ''
    returnType: struct dsync_mailbox_tree
    signature: 'struct dsync_mailbox_tree *

      dsync_mailbox_tree_init(char sep, char escape_char, char alt_char)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:44,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:45,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:46,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:47,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _tree
    argTypes:
    - struct dsync_mailbox_tree**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 49
    functionName: dsync_mailbox_tree_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - array_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_tree_deinit(struct dsync_mailbox_tree **_tree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - nodes
    - name
    argTypes:
    - struct dsync_mailbox_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: dsync_mailbox_node_find
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: 'struct dsync_mailbox_node *

      dsync_mailbox_node_find(struct dsync_mailbox_node *nodes, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:70,1
    - Dst: dsync_mailbox_node_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - tree
    - full_name
    argTypes:
    - struct dsync_mailbox_tree*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: dsync_mailbox_tree_lookup
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - dsync_mailbox_node_find
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\ndsync_mailbox_tree_lookup(struct dsync_mailbox_tree
      *tree,\n\t\t\t  const char *full_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - node
    - parent
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 83
    functionName: dsync_mailbox_tree_node_attach
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_tree_node_attach(struct dsync_mailbox_node *node,\n\t\t\t\t
      \   struct dsync_mailbox_node *parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 96
    functionName: dsync_mailbox_tree_node_detach
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_tree_node_detach(struct dsync_mailbox_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:103,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:109,1
    - Dst: dsync_mailbox_node_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:112,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:118,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:119,1
    - Dst: dsync_mailbox_tree_node_attach
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - tree
    - full_name
    argTypes:
    - struct dsync_mailbox_tree*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 124
    functionName: dsync_mailbox_tree_get
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 3
    functionsReached:
    - p_strdup
    - p_new
    - dsync_mailbox_node_find
    - dsync_mailbox_tree_node_attach
    - t_strsplit
    - i_assert
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: 'struct dsync_mailbox_node *

      dsync_mailbox_tree_get(struct dsync_mailbox_tree *tree, const char *full_name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: node_get_full_name_recurse
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:133,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:135,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - tree
    - node
    - str
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: node_get_full_name_recurse
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - str_append
    - str_append_c
    - node_get_full_name_recurse
    linkageType: ''
    returnType: void
    signature: "void node_get_full_name_recurse(const struct dsync_mailbox_tree *tree,\n\t\t\t
      \  const struct dsync_mailbox_node *node, string_t *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:142,1
    - Dst: dsync_mailbox_node_append_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:143,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 145
    functionName: dsync_mailbox_node_get_full_name
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 10
    functionsReached:
    - dsync_mailbox_node_append_full_name
    - str_c
    - t_str_new
    linkageType: ''
    returnType: char
    signature: "char *dsync_mailbox_node_get_full_name(const struct dsync_mailbox_tree
      *tree,\n\t\t\t\t\t     const struct dsync_mailbox_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:151,1
    - Dst: node_get_full_name_recurse
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:153,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:155,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - str
    - tree
    - node
    argTypes:
    - string_t*
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 156
    functionName: dsync_mailbox_node_append_full_name
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 2
    functionsReached:
    - str_truncate
    - i_assert
    - node_get_full_name_recurse
    - str_len
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_node_append_full_name(string_t *str,\n\t\t\t\t\t
      const struct dsync_mailbox_tree *tree,\n\t\t\t\t\t const struct dsync_mailbox_node
      *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 169
    functionName: dsync_mailbox_node_copy_data
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_node_copy_data(struct dsync_mailbox_node *dest,\n\t\t\t\t
      \ const struct dsync_mailbox_node *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:176,1
    - Dst: str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 183
    functionName: dsync_mailbox_tree_iter_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 3
    functionsReached:
    - str_new
    - i_new
    linkageType: ''
    returnType: struct dsync_mailbox_tree_iter
    signature: 'struct dsync_mailbox_tree_iter *

      dsync_mailbox_tree_iter_init(struct dsync_mailbox_tree *tree)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:188,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:190,1
    - Dst: node_get_full_name_length
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 193
    functionName: node_get_full_name_length
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - node_get_full_name_length
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t node_get_full_name_length(struct dsync_mailbox_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: node_get_full_name_length
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:211,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:212,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:214,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:215,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:216,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - iter
    - full_name_r
    - node_r
    argTypes:
    - struct dsync_mailbox_tree_iter*
    - char**
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 220
    functionName: dsync_mailbox_tree_iter_next
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 2
    functionsReached:
    - str_c
    - str_append_c
    - str_len
    - str_truncate
    - str_append
    - node_get_full_name_length
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_tree_iter_next(struct dsync_mailbox_tree_iter *iter,\n\t\t\t\t
      \ const char **full_name_r,\n\t\t\t\t  struct dsync_mailbox_node **node_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:228,1
    - Dst: str_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:231,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct dsync_mailbox_tree_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 233
    functionName: dsync_mailbox_tree_iter_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_tree_iter_deinit(struct dsync_mailbox_tree_iter
      **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:243,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:243,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:245,1
    - Dst: dsync_mailbox_tree_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:247,1
    - Dst: dsync_mailbox_tree_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:248,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:249,1
    - Dst: mailbox_name_get_sha128
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:250,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:252,1
    - Dst: dsync_mailbox_tree_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 255
    functionName: dsync_mailbox_tree_build_name128_hash
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_iter_init
    - dsync_mailbox_tree_iter_next
    - hash_table_create
    - p_new
    - mailbox_name_get_sha128
    - dsync_mailbox_tree_iter_deinit
    - hash_table_insert
    - i_assert
    - hash_table_is_created
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_tree_build_name128_hash(struct dsync_mailbox_tree
      *tree)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:260,1
    - Dst: strchr
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:269,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:271,1
    - Dst: mailbox_list_name_unescape
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:275,1
    - Dst: mailbox_list_name_escape
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:279,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:286,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:288,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:293,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:295,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - tree
    - name
    argTypes:
    - struct dsync_mailbox_tree*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 296
    functionName: convert_name_to_remote_sep
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - mailbox_list_name_escape
    - str_append_c
    - str_c
    - t_strdup_until
    - mailbox_list_name_unescape
    linkageType: ''
    returnType: char
    signature: 'char *

      convert_name_to_remote_sep(struct dsync_mailbox_tree *tree, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:307,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:308,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:308,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:310,1
    - Dst: dsync_mailbox_tree_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:312,1
    - Dst: dsync_mailbox_tree_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:313,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:314,1
    - Dst: convert_name_to_remote_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:317,1
    - Dst: mailbox_name_get_sha128
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:318,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 322
    functionName: dsync_mailbox_tree_build_name128_remotesep_hash
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_iter_init
    - dsync_mailbox_tree_iter_next
    - hash_table_create
    - p_new
    - mailbox_name_get_sha128
    - convert_name_to_remote_sep
    - hash_table_insert
    - i_assert
    - hash_table_is_created
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_tree_build_name128_remotesep_hash(struct dsync_mailbox_tree
      *tree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:333,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:336,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - tree
    - node
    - old_node_r
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 342
    functionName: dsync_mailbox_tree_guid_hash_add
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - hash_table_insert
    - hash_table_lookup
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_guid_hash_add(struct dsync_mailbox_tree *tree,\n\t\t\t\t
      \    struct dsync_mailbox_node *node,\n\t\t\t\t     struct dsync_mailbox_node
      **old_node_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:353,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:354,1
    - Dst: dsync_mailbox_tree_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:357,1
    - Dst: dsync_mailbox_tree_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:358,1
    - Dst: dsync_mailbox_tree_guid_hash_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:359,1
    - Dst: dsync_mailbox_tree_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:365,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - tree
    - dup_node1_r
    - dup_node2_r
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node**
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 344
    functionDepth: 3
    functionLinenumber: 344
    functionLinenumberEnd: 367
    functionName: dsync_mailbox_tree_build_guid_hash
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_iter_init
    - dsync_mailbox_tree_iter_next
    - hash_table_create
    - dsync_mailbox_tree_guid_hash_add
    - dsync_mailbox_tree_iter_deinit
    - hash_table_is_created
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_build_guid_hash(struct dsync_mailbox_tree *tree,\n\t\t\t\t
      \      struct dsync_mailbox_node **dup_node1_r,\n\t\t\t\t       struct dsync_mailbox_node
      **dup_node2_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tree
    - guid
    argTypes:
    - struct dsync_mailbox_tree*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 376
    functionName: dsync_mailbox_tree_lookup_guid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\ndsync_mailbox_tree_lookup_guid(struct
      dsync_mailbox_tree *tree,\n\t\t\t       const guid_128_t guid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tree
    - count_r
    argTypes:
    - struct dsync_mailbox_tree*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 383
    functionName: dsync_mailbox_tree_get_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 2
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct dsync_mailbox_delete
    signature: "struct dsync_mailbox_delete *\ndsync_mailbox_tree_get_deletes(struct
      dsync_mailbox_tree *tree,\n\t\t\t       unsigned int *count_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:391,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:391,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:392,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:396,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:402,1
    - Dst: dsync_mailbox_tree_build_name128_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:403,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:404,1
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:406,1
    - Dst: dsync_mailbox_tree_build_name128_remotesep_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:407,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:408,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - tree
    - del
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_delete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 385
    functionDepth: 4
    functionLinenumber: 385
    functionLinenumberEnd: 410
    functionName: dsync_mailbox_tree_find_delete
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - i_assert
    - dsync_mailbox_tree_build_name128_remotesep_hash
    - dsync_mailbox_tree_build_name128_hash
    - hash_table_lookup
    - hash_table_is_created
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\ndsync_mailbox_tree_find_delete(struct
      dsync_mailbox_tree *tree,\n\t\t\t       const struct dsync_mailbox_delete *del)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:415,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tree
    - remote_sep
    - escape_char
    argTypes:
    - struct dsync_mailbox_tree*
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 420
    functionName: dsync_mailbox_tree_set_remote_chars
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_tree_set_remote_chars(struct dsync_mailbox_tree
      *tree,\n\t\t\t\t\t char remote_sep, char escape_char)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:427,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:431,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:435,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:436,1
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:437,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:437,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:440,1
    - Dst: dsync_mailbox_tree_dup_nodes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:450,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - dest_tree
    - src
    - path
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 454
    functionName: dsync_mailbox_tree_dup_nodes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - memcpy
    - str_c
    - str_append_c
    - str_len
    - dsync_mailbox_tree_get
    - dsync_mailbox_tree_dup_nodes
    - str_truncate
    - str_append
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_tree_dup_nodes(struct dsync_mailbox_tree *dest_tree,\n\t\t\t
      \    const struct dsync_mailbox_node *src,\n\t\t\t     string_t *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:460,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:462,1
    - Dst: dsync_mailbox_tree_dup_nodes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 456
    functionDepth: 3
    functionLinenumber: 456
    functionLinenumberEnd: 466
    functionName: dsync_mailbox_tree_dup
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_dup_nodes
    - dsync_mailbox_tree_init
    - t_str_new
    linkageType: ''
    returnType: struct dsync_mailbox_tree
    signature: 'struct dsync_mailbox_tree *

      dsync_mailbox_tree_dup(const struct dsync_mailbox_tree *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct dsync_mailbox_node**
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 472
    functionName: dsync_mailbox_node_name_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_node_name_cmp(struct dsync_mailbox_node *const *n1,\n\t\t\t\tstruct
      dsync_mailbox_node *const *n2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:478,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:480,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 2
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 485
    functionName: dsync_mailbox_nodes_equal
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - strcmp
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_nodes_equal(const struct dsync_mailbox_node *node1,\n\t\t\t
      \ const struct dsync_mailbox_node *node2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:504,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:505,1
    - Dst: i_qsort
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:510,1
    - Dst: i_qsort
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:511,1
    - Dst: dsync_mailbox_nodes_equal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:514,1
    - Dst: dsync_mailbox_branches_equal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:516,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 521
    functionName: dsync_mailbox_branches_equal
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - i_qsort
    - t_new
    - dsync_mailbox_nodes_equal
    - dsync_mailbox_branches_equal
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_branches_equal(struct dsync_mailbox_node *node1,\n\t\t\t
      \    struct dsync_mailbox_node *node2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_branches_equal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tree1
    - tree2
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 523
    functionDepth: 2
    functionLinenumber: 523
    functionLinenumberEnd: 530
    functionName: dsync_mailbox_trees_equal
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_branches_equal
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_trees_equal(struct dsync_mailbox_tree *tree1,\n\t\t\t
      \      struct dsync_mailbox_tree *tree2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:536,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 542
    functionName: dsync_mailbox_node_to_string
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 2
    functionsReached:
    - guid_128_to_string
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *dsync_mailbox_node_to_string(const struct dsync_mailbox_node
      *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum dsync_mailbox_delete_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 556
    functionName: dsync_mailbox_delete_type_to_string
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: 'char *

      dsync_mailbox_delete_type_to_string(enum dsync_mailbox_delete_type type)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strsplit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:563,1
    - Dst: mailbox_list_name_unescape
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c:566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 571
    functionName: dsync_mailbox_name_to_parts
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.c
    functionUses: 1
    functionsReached:
    - p_strsplit
    - mailbox_list_name_unescape
    linkageType: ''
    returnType: char
    signature: "char *const *\ndsync_mailbox_name_to_parts(const char *name, char
      hierarchy_sep,\n\t\t\t    char escape_char)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:84,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - exporter
    - mail
    - field
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 93
    functionName: dsync_mail_error
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int dsync_mail_error(struct dsync_mailbox_exporter *exporter,\n\t\t\t
      \   struct mail *mail, const char *field)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:104,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:106,1
    - Dst: array_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:112,1
    - Dst: array_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - change
    - name
    - type_r
    argTypes:
    - struct dsync_mail_change*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 127
    functionName: final_keyword_check
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_delete
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool final_keyword_check(struct dsync_mail_change *change, const char
      *name,\n\t\t    char *type_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:137,1
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:139,1
    - Dst: mail_get_pvt_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:140,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:141,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:143,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:144,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:146,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:147,1
    - Dst: final_keyword_check
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:152,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:154,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - exporter
    - mail
    - change
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct mail*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 160
    functionName: search_update_flag_changes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - mail_get_keywords
    - p_array_init
    - array_push_back
    - str_array_length
    - final_keyword_check
    - mail_get_flags
    - mail_get_modseq
    - array_is_created
    - i_assert
    - mail_get_pvt_modseq
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void search_update_flag_changes(struct dsync_mailbox_exporter *exporter,\n\t\t\t
      \  struct mail *mail, struct dsync_mail_change *change)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:171,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:172,1
    - Dst: dsync_mail_get_hdr_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:180,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:182,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - exporter
    - mail
    - guid_r
    - hdr_hash_r
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct mail*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 193
    functionName: exporter_get_guids
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - dsync_mail_error
    - dsync_mail_get_hdr_hash
    linkageType: ''
    returnType: int
    signature: "int exporter_get_guids(struct dsync_mailbox_exporter *exporter,\n\t\t
      \  struct mail *mail, const char **guid_r,\n\t\t   const char **hdr_hash_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:203,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:203,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:207,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:209,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:212,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:213,1
    - Dst: exporter_get_guids
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:216,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:220,1
    - Dst: dsync_transaction_log_scan_find_new_expunge
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:225,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:231,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:232,1
    - Dst: search_update_flag_changes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:233,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - exporter
    - mail
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 195
    functionDepth: 3
    functionLinenumber: 195
    functionLinenumberEnd: 236
    functionName: search_update_flag_change_guid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - POINTER_CAST
    - p_new
    - search_update_flag_changes
    - exporter_get_guids
    - dsync_transaction_log_scan_find_new_expunge
    - hash_table_insert
    - hash_table_lookup
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int search_update_flag_change_guid(struct dsync_mailbox_exporter *exporter,\n\t\t\t
      \      struct mail *mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:243,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:243,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:245,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:247,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:247,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:251,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - exporter
    - uid
    argTypes:
    - struct dsync_mailbox_exporter*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 257
    functionName: export_save_change_get
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - p_new
    - hash_table_insert
    - hash_table_lookup
    - i_assert
    linkageType: ''
    returnType: struct dsync_mail_change
    signature: 'struct dsync_mail_change *

      export_save_change_get(struct dsync_mailbox_exporter *exporter, uint32_t uid)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:267,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:272,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:276,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:278,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:280,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:281,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:282,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:287,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - exporter
    - change
    - seq
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct dsync_mail_change*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 288
    functionName: export_add_mail_instance
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - i_assert
    - p_strdup
    - p_new
    - p_array_init
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void export_add_mail_instance(struct dsync_mailbox_exporter *exporter,\n\t\t\t
      struct dsync_mail_change *change, uint32_t seq)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:306,1
    - Dst: exporter_get_guids
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:310,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:314,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:315,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:323,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:324,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:325,1
    - Dst: export_save_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:328,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:330,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:331,1
    - Dst: search_update_flag_changes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:334,1
    - Dst: export_add_mail_instance
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:336,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - exporter
    - mail
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 290
    functionDepth: 3
    functionLinenumber: 290
    functionLinenumberEnd: 338
    functionName: search_add_save
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - i_assert
    - p_strdup
    - search_update_flag_changes
    - mail_add_temp_wanted_fields
    - dsync_mail_error
    - exporter_get_guids
    - export_add_mail_instance
    - mail_get_received_date
    - mail_get_virtual_size
    - export_save_change_get
    linkageType: ''
    returnType: int
    signature: int search_add_save(struct dsync_mailbox_exporter *exporter, struct
      mail *mail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:348,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:349,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:351,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:353,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - exporter
    - uids
    argTypes:
    - struct dsync_mailbox_exporter*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 354
    functionName: dsync_mailbox_export_add_flagchange_uids
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - hash_table_iterate_init
    - hash_table_iterate
    - hash_table_iterate_deinit
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_export_add_flagchange_uids(struct dsync_mailbox_exporter
      *exporter,\n\t\t\t\t\t ARRAY_TYPE(seq_range) *uids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:367,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:368,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:371,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - exporter
    argTypes:
    - struct dsync_mailbox_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 374
    functionName: dsync_mailbox_export_drop_expunged_flag_changes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - hash_table_remove
    - hash_table_iterate_init
    - hash_table_iterate
    - hash_table_iterate_deinit
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_export_drop_expunged_flag_changes(struct dsync_mailbox_exporter
      *exporter)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:387,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:388,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:389,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:393,1
    - Dst: dsync_mailbox_export_add_flagchange_uids
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:396,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:399,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:412,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:418,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:424,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:429,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:432,1
    - Dst: mail_search_args_to_cmdline
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:433,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:434,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:436,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:436,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:437,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:439,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:441,1
    - Dst: search_update_flag_change_guid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:442,1
    - Dst: search_add_save
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:444,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 1
    argNames:
    - exporter
    argTypes:
    - struct dsync_mailbox_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 376
    functionDepth: 5
    functionLinenumber: 376
    functionLinenumberEnd: 448
    functionName: dsync_mailbox_export_search
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - str_c
    - seq_range_array_add_range
    - mail_search_build_add
    - dsync_mailbox_export_add_flagchange_uids
    - p_array_init
    - mailbox_transaction_begin
    - t_str_new
    - e_debug
    - search_add_save
    - mail_search_args_to_cmdline
    - if
    - mail_search_build_init
    - search_update_flag_change_guid
    - mailbox_search_init
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_export_search(struct dsync_mailbox_exporter *exporter)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - struct dsync_mail_change**
    - struct dsync_mail_change**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 470
    functionName: dsync_mail_change_p_uid_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dsync_mail_change_p_uid_cmp(struct dsync_mail_change *const *c1,\n\t\t\t\t
      \      struct dsync_mail_change *const *c2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:479,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:480,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:482,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:483,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:484,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:485,1
    - Dst: array_sort
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - exporter
    argTypes:
    - struct dsync_mailbox_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 487
    functionName: dsync_mailbox_export_sort_changes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - array_sort
    - hash_table_iterate
    - p_array_init
    - array_push_back
    - hash_table_iterate_init
    - hash_table_count
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_export_sort_changes(struct dsync_mailbox_exporter
      *exporter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - exporter
    - type
    argTypes:
    - struct dsync_mailbox_exporter*
    - enum mail_attribute_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 489
    functionDepth: 5
    functionLinenumber: 489
    functionLinenumberEnd: 496
    functionName: dsync_mailbox_export_attr_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - mailbox_attribute_iter_init
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_export_attr_init(struct dsync_mailbox_exporter
      *exporter,\n\t\t\t       enum mail_attribute_type type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HASH_TABLE_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:502,1
    - Dst: dsync_transaction_log_scan_get_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:507,1
    - Dst: dsync_transaction_log_scan_has_all_changes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:508,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:515,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:516,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:517,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:518,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:519,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:521,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:525,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - exporter
    - log_scan
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct dsync_transaction_log_scan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 526
    functionName: dsync_mailbox_export_log_scan
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - p_new
    - dsync_transaction_log_scan_has_all_changes
    - hash_table_iterate_init
    - HASH_TABLE_TYPE
    - dsync_transaction_log_scan_get_hash
    - hash_table_create_direct
    - hash_table_count
    - hash_table_insert
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_export_log_scan(struct dsync_mailbox_exporter *exporter,\n\t\t\t
      \     struct dsync_transaction_log_scan *log_scan)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:536,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:538,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:560,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:562,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:563,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:564,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:565,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:566,1
    - Dst: dsync_mail_get_hash_headers
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:570,1
    - Dst: dsync_mailbox_export_log_scan
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:573,1
    - Dst: dsync_mailbox_export_search
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:575,1
    - Dst: dsync_mailbox_export_sort_changes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:577,1
    - Dst: dsync_mailbox_export_attr_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:579,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 3
    argNames:
    - box
    - log_scan
    - set
    argTypes:
    - struct mailbox*
    - struct dsync_transaction_log_scan*
    - struct dsync_mailbox_export_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 528
    functionDepth: 6
    functionLinenumber: 528
    functionLinenumberEnd: 581
    functionName: dsync_mailbox_export_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - p_array_init
    - hash_table_create
    - dsync_mailbox_export_log_scan
    - dsync_mailbox_export_attr_init
    - dsync_mailbox_export_search
    - dsync_mailbox_export_sort_changes
    - dsync_mail_get_hash_headers
    linkageType: ''
    returnType: struct dsync_mailbox_exporter
    signature: "struct dsync_mailbox_exporter *\ndsync_mailbox_export_init(struct
      mailbox *box,\n\t\t\t  struct dsync_transaction_log_scan *log_scan,\n\t\t\t
      \ const struct dsync_mailbox_export_settings *set)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:589,1
    - Dst: dsync_transaction_log_scan_get_attr_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:590,1
    - Dst: mailbox_attribute_get_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:596,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:599,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:609,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:615,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:621,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:629,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 1
    argNames:
    - exporter
    argTypes:
    - struct dsync_mailbox_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 583
    functionDepth: 5
    functionLinenumber: 583
    functionLinenumberEnd: 631
    functionName: dsync_mailbox_export_iter_next_nonexistent_attr
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - p_strdup
    - hash_table_iterate
    - mailbox_get_last_internal_error
    - dsync_transaction_log_scan_get_attr_hash
    - i_stream_unref
    - mailbox_attribute_get_stream
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: int dsync_mailbox_export_iter_next_nonexistent_attr(struct dsync_mailbox_exporter
      *exporter)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: HASH_TABLE_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:636,1
    - Dst: dsync_transaction_log_scan_get_attr_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:645,1
    - Dst: mailbox_attribute_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:651,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:653,1
    - Dst: mailbox_attribute_get_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:657,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:661,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:671,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:680,1
    - Dst: e_warning
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:692,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:698,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:700,1
    - Dst: DSYNC_ATTR_HAS_VALUE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:707,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:710,1
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:714,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:715,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:717,1
    - Dst: dsync_mailbox_export_attr_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:723,1
    - Dst: dsync_mailbox_export_iter_next_attr
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:725,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:727,1
    - Dst: dsync_mailbox_export_iter_next_nonexistent_attr
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:728,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 56
    argCount: 1
    argNames:
    - exporter
    argTypes:
    - struct dsync_mailbox_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 633
    functionDepth: 6
    functionLinenumber: 633
    functionLinenumberEnd: 729
    functionName: dsync_mailbox_export_iter_next_attr
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 1
    functionsReached:
    - i_zero
    - p_strdup
    - mailbox_get_last_internal_error
    - dsync_mailbox_export_iter_next_attr
    - dsync_transaction_log_scan_get_attr_hash
    - dsync_mailbox_export_attr_init
    - hash_table_iterate_init
    - HASH_TABLE_TYPE
    - mailbox_attribute_iter_next
    - dsync_mailbox_export_iter_next_nonexistent_attr
    - e_warning
    - i_stream_unref
    - DSYNC_ATTR_HAS_VALUE
    - hash_table_lookup
    - mailbox_attribute_get_stream
    - p_strdup_printf
    - mailbox_attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: int dsync_mailbox_export_iter_next_attr(struct dsync_mailbox_exporter
      *exporter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:739,1
    - Dst: dsync_mailbox_export_iter_next_attr
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:742,1
    - Dst: dsync_mailbox_export_iter_next_nonexistent_attr
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:744,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - exporter
    - attr_r
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct dsync_mailbox_attribute**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 731
    functionDepth: 7
    functionLinenumber: 731
    functionLinenumberEnd: 749
    functionName: dsync_mailbox_export_next_attr
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 1
    functionsReached:
    - dsync_mailbox_export_iter_next_nonexistent_attr
    - dsync_mailbox_export_iter_next_attr
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_export_next_attr(struct dsync_mailbox_exporter *exporter,\n\t\t\t\t
      \  const struct dsync_mailbox_attribute **attr_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - exporter
    - change_r
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct dsync_mail_change**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 765
    functionName: dsync_mailbox_export_next
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 1
    functionsReached:
    - array_get
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_export_next(struct dsync_mailbox_exporter *exporter,\n\t\t\t
      \     const struct dsync_mail_change **change_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:782,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:784,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:785,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:786,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:790,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:791,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:794,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:797,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:801,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:802,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:805,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:806,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:807,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:810,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:814,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:816,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:819,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:822,1
    - Dst: mailbox_get_seq_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:824,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:827,1
    - Dst: array_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:830,1
    - Dst: array_append_array
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:831,1
    - Dst: array_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:832,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:840,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:842,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:844,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:845,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 1
    argNames:
    - exporter
    argTypes:
    - struct dsync_mailbox_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 767
    functionDepth: 4
    functionLinenumber: 767
    functionLinenumberEnd: 846
    functionName: dsync_mailbox_export_body_search_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - mailbox_get_seq_range
    - seq_range_array_add_range
    - seq_range_exists
    - hash_table_iterate
    - p_array_init
    - hash_table_iterate_init
    - array_count
    - array_front
    - hash_table_iterate_deinit
    - array_append_array
    - seq_range_array_remove
    - mail_search_build_add
    - array_get
    - mail_search_build_init
    - array_clear
    - mailbox_search_init
    - i_assert
    - seq_range_array_add
    - array_push_back
    - mail_search_args_unref
    - seq_range_count
    linkageType: ''
    returnType: int
    signature: int dsync_mailbox_export_body_search_init(struct dsync_mailbox_exporter
      *exporter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:854,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:856,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:858,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - exporter
    argTypes:
    - struct dsync_mailbox_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 848
    functionDepth: 3
    functionLinenumber: 848
    functionLinenumberEnd: 861
    functionName: dsync_mailbox_export_body_search_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - mailbox_search_deinit
    - mailbox_get_last_internal_error
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_export_body_search_deinit(struct dsync_mailbox_exporter
      *exporter)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mail_fill
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:869,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:871,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:874,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:882,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:888,1
    - Dst: array_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:895,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - exporter
    - mail
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 863
    functionDepth: 1
    functionLinenumber: 863
    functionLinenumberEnd: 897
    functionName: dsync_mailbox_export_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - seq_range_exists
    - dsync_mail_error
    - dsync_mail_fill
    - array_clear
    - hash_table_lookup
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_export_mail(struct dsync_mailbox_exporter *exporter,\n\t\t\t\t
      \    struct mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:904,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:907,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:908,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:912,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:915,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - exporter
    - request
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct dsync_mail_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 920
    functionName: dsync_mailbox_export_want_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 1
    functionsReached:
    - seq_range_array_add
    - hash_table_lookup
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_export_want_mail(struct dsync_mailbox_exporter
      *exporter,\n\t\t\t\t    const struct dsync_mail_request *request)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_export_body_search_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:934,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:935,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:940,1
    - Dst: dsync_mailbox_export_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:942,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:947,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:952,1
    - Dst: dsync_mailbox_export_body_search_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:956,1
    - Dst: dsync_mailbox_export_body_search_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:957,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:958,1
    - Dst: dsync_mailbox_export_next_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:963,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:968,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:970,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 2
    argNames:
    - exporter
    - mail_r
    argTypes:
    - struct dsync_mailbox_exporter*
    - struct dsync_mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 922
    functionDepth: 5
    functionLinenumber: 922
    functionLinenumberEnd: 977
    functionName: dsync_mailbox_export_next_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 2
    functionsReached:
    - seq_range_array_add
    - dsync_mailbox_export_next_mail
    - i_zero
    - dsync_mailbox_export_body_search_init
    - dsync_mailbox_export_mail
    - array_get
    - dsync_mailbox_export_body_search_deinit
    - mailbox_search_next
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_export_next_mail(struct dsync_mailbox_exporter *exporter,\n\t\t\t\t
      \  const struct dsync_mail **mail_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:987,1
    - Dst: dsync_mailbox_export_body_search_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:988,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:989,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:990,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:992,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:993,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:994,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:996,1
    - Dst: t_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:999,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:1000,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:1001,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - _exporter
    - errstr_r
    - error_r
    argTypes:
    - struct dsync_mailbox_exporter**
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 979
    functionDepth: 4
    functionLinenumber: 979
    functionLinenumberEnd: 1003
    functionName: dsync_mailbox_export_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 1
    functionsReached:
    - dsync_mailbox_export_body_search_deinit
    - event_unref
    - mailbox_header_lookup_unref
    - pool_unref
    - mailbox_transaction_commit
    - i_stream_unref
    - t_strdup
    - i_assert
    - hash_table_destroy
    - mailbox_attribute_iter_deinit
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_export_deinit(struct dsync_mailbox_exporter **_exporter,\n\t\t\t\tconst
      char **errstr_r, enum mail_error *error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c:1009,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - exporter
    argTypes:
    - struct dsync_mailbox_exporter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1005
    functionDepth: 1
    functionLinenumber: 1005
    functionLinenumberEnd: 1011
    functionName: dsync_mailbox_export_get_proctitle
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-export.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *dsync_mailbox_export_get_proctitle(struct dsync_mailbox_exporter
      *exporter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - box
    - hashed_headers
    argTypes:
    - struct mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 14
    functionDepth: 8
    functionLinenumber: 14
    functionLinenumberEnd: 18
    functionName: dsync_mail_get_hash_headers
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mail.c
    functionUses: 1
    functionsReached:
    - mailbox_header_lookup_init
    linkageType: ''
    returnType: struct mailbox_header_lookup_ctx
    signature: 'struct mailbox_header_lookup_ctx *

      dsync_mail_get_hash_headers(struct mailbox *box, const char *const *hashed_headers)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:33,1
    - Dst: mail_get_header_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:34,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:35,1
    - Dst: i_stream_create_lf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:39,1
    - Dst: md5_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:41,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:42,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:43,1
    - Dst: message_header_hash_more
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:44,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:46,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:48,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:51,1
    - Dst: md5_final
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:53,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - mail
    - version
    - hashed_headers
    - hdr_hash_r
    argTypes:
    - struct mail*
    - unsigned int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 20
    functionDepth: 8
    functionLinenumber: 20
    functionLinenumberEnd: 56
    functionName: dsync_mail_get_hdr_hash
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mail.c
    functionUses: 1
    functionsReached:
    - i_zero
    - message_header_hash_more
    - md5_final
    - mailbox_header_lookup_unref
    - mail_get_header_stream
    - i_stream_skip
    - md5_init
    - i_stream_create_lf
    - mailbox_header_lookup_init
    - i_stream_unref
    - binary_to_hex
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int dsync_mail_get_hdr_hash(struct mail *mail, unsigned int version,\n\t\t\t
      \   const char *const *hashed_headers, const char **hdr_hash_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:63,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:65,1
    - Dst: mail_get_save_date
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:75,1
    - Dst: dsync_mail_fill_nonminimal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - mail
    - minimal_fill
    - dmail_r
    - error_field_r
    argTypes:
    - struct mail*
    - bool
    - struct dsync_mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 83
    functionName: dsync_mail_fill
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mail.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mail_get_save_date
    - mail_get_special
    - dsync_mail_fill_nonminimal
    linkageType: ''
    returnType: int
    signature: "int dsync_mail_fill(struct mail *mail, bool minimal_fill,\n\t\t    struct
      dsync_mail *dmail_r, const char **error_field_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:90,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:95,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:99,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:104,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:105,1
    - Dst: mail_get_received_date
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:107,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - mail
    - dmail_r
    - error_field_r
    argTypes:
    - struct mail*
    - struct dsync_mail*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 112
    functionName: dsync_mail_fill_nonminimal
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mail.c
    functionUses: 1
    functionsReached:
    - i_unreached
    - str_to_uint32
    - mail_get_stream
    - mail_get_received_date
    - mail_get_special
    linkageType: ''
    returnType: int
    signature: "int dsync_mail_fill_nonminimal(struct mail *mail, struct dsync_mail
      *dmail_r,\n\t\t\t       const char **error_field_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:121,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:124,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:128,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:130,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - pool
    - src
    - dest
    argTypes:
    - pool_t
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 133
    functionName: const_string_array_dup
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mail.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_array_init
    - array_push_back
    - array_get
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void const_string_array_dup(pool_t pool, const ARRAY_TYPE(const_string)
      *src,\n\t\t       ARRAY_TYPE(const_string) *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:142,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:144,1
    - Dst: const_string_array_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mail.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - pool
    - src
    - dest_r
    argTypes:
    - pool_t
    - struct dsync_mail_change*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 156
    functionName: dsync_mail_change_dup
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mail.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - const_string_array_dup
    linkageType: ''
    returnType: void
    signature: "void dsync_mail_change_dup(pool_t pool, const struct dsync_mail_change
      *src,\n\t\t\t   struct dsync_mail_change *dest_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: DSYNC_ATTR_HAS_VALUE
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DSYNC_ATTR_HAS_VALUE(attr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:56,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:59,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:61,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:62,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:64,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:65,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:67,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:68,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:68,1
    - Dst: dsync_mailbox_import_get_proctitle
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:70,1
    - Dst: dsync_mailbox_export_get_proctitle
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:72,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:74,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:79,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:80,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:83,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:84,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:92,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:95,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:96,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - brain
    - title
    argTypes:
    - struct dsync_brain*
    - enum dsync_brain_title
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 97
    functionName: dsync_brain_get_proctitle_full
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - dsync_mailbox_export_get_proctitle
    - dsync_mailbox_import_get_proctitle
    - mailbox_get_vname
    - str_append
    linkageType: ''
    returnType: char
    signature: "char *\ndsync_brain_get_proctitle_full(struct dsync_brain *brain,\n\t\t\t
      \      enum dsync_brain_title title)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_brain_get_proctitle_full
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: dsync_brain_get_proctitle
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - dsync_brain_get_proctitle_full
    linkageType: ''
    returnType: char
    signature: char *dsync_brain_get_proctitle(struct dsync_brain *brain)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_has_failed
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:109,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:110,1
    - Dst: dsync_brain_run
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:117,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:118,1
    - Dst: dsync_ibc_has_pending_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:124,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 129
    functionName: dsync_brain_run_io
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - dsync_brain_run
    - io_loop_stop
    - dsync_ibc_has_failed
    - dsync_ibc_has_pending_data
    linkageType: ''
    returnType: void
    signature: void dsync_brain_run_io(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:139,1
    - Dst: mail_user_ref
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:140,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:142,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:143,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:151,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:153,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:155,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:156,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - user
    - ibc
    - master_brain
    argTypes:
    - struct mail_user*
    - struct dsync_ibc*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 159
    functionName: dsync_brain_common_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - hash_table_create
    - p_array_init
    - event_set_append_log_prefix
    - t_strdup_printf
    - master_service_get_service_settings
    - mail_user_ref
    linkageType: ''
    returnType: struct dsync_brain
    signature: "struct dsync_brain *\ndsync_brain_common_init(struct mail_user *user,
      struct dsync_ibc *ibc,\n\t\t\tbool master_brain)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - brain
    - flags
    argTypes:
    - struct dsync_brain*
    - enum dsync_brain_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 181
    functionName: dsync_brain_set_flags
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    linkageType: ''
    returnType: void
    signature: void dsync_brain_set_flags(struct dsync_brain *brain, enum dsync_brain_flags
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:189,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - brain
    - vname
    argTypes:
    - struct dsync_brain*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 192
    functionName: dsync_brain_open_virtual_all_box
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - mailbox_alloc
    - mail_namespace_find
    linkageType: ''
    returnType: void
    signature: "void dsync_brain_open_virtual_all_box(struct dsync_brain *brain,\n\t\t\t\t
      const char *vname)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:207,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:209,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:209,1
    - Dst: dsync_brain_common_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:211,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:213,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:215,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:216,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:217,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:218,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:219,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:220,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:221,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:222,1
    - Dst: str_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:224,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:224,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:231,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:232,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:234,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:235,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:245,1
    - Dst: dsync_brain_set_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:246,1
    - Dst: dsync_brain_open_virtual_all_box
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:249,1
    - Dst: dsync_mailbox_states_import
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:253,1
    - Dst: hash_table_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:255,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:256,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:261,1
    - Dst: dsync_brain_mailbox_states_dump
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:262,1
    - Dst: dsync_brain_mailbox_trees_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:264,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:266,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:267,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:269,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:277,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:285,1
    - Dst: dsync_ibc_send_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:291,1
    - Dst: dsync_ibc_set_io_callback
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:293,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:297,1
    - Dst: dsync_brain_get_proctitle
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:297,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 72
    argCount: 5
    argNames:
    - user
    - ibc
    - sync_type
    - flags
    - set
    argTypes:
    - struct mail_user*
    - struct dsync_ibc*
    - enum dsync_brain_sync_type
    - enum dsync_brain_flags
    - struct dsync_brain_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 194
    functionDepth: 5
    functionLinenumber: 194
    functionLinenumberEnd: 299
    functionName: dsync_brain_master_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 1
    functionsReached:
    - str_c
    - p_strdup
    - p_array_init
    - str_len
    - dsync_ibc_set_io_callback
    - dsync_brain_mailbox_trees_init
    - array_count
    - process_title_set
    - dsync_brain_common_init
    - memcpy
    - t_str_new
    - dsync_brain_set_flags
    - str_append_c
    - dsync_brain_open_virtual_all_box
    - array_foreach_elem
    - p_strarray_dup
    - dsync_ibc_send_handshake
    - dsync_mailbox_states_import
    - i_zero
    - hash_table_clear
    - e_error
    - str_delete
    - dsync_brain_mailbox_states_dump
    - i_assert
    - N_ELEMENTS
    - ENUM_NEGATE
    - array_push_back
    - e_debug
    - my_hostdomain
    - dsync_brain_get_proctitle
    - str_append
    linkageType: ''
    returnType: struct dsync_brain
    signature: "struct dsync_brain *\ndsync_brain_master_init(struct mail_user *user,
      struct dsync_ibc *ibc,\n\t\t\tenum dsync_brain_sync_type sync_type,\n\t\t\tenum
      dsync_brain_flags flags,\n\t\t\tconst struct dsync_brain_settings *set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:310,1
    - Dst: dsync_brain_common_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:312,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:315,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:325,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:327,1
    - Dst: dsync_ibc_send_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:328,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:331,1
    - Dst: dsync_brain_get_proctitle
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:331,1
    - Dst: dsync_ibc_set_io_callback
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 6
    argNames:
    - user
    - ibc
    - local
    - process_title_prefix
    - default_alt_char
    - import_commit_msgs_interval
    argTypes:
    - struct mail_user*
    - struct dsync_ibc*
    - bool
    - char*
    - char
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 301
    functionDepth: 4
    functionLinenumber: 301
    functionLinenumberEnd: 334
    functionName: dsync_brain_slave_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 2
    functionsReached:
    - dsync_brain_common_init
    - i_zero
    - p_strdup
    - dsync_ibc_send_handshake
    - dsync_ibc_set_io_callback
    - my_hostdomain
    - dsync_brain_get_proctitle
    - process_title_set
    - i_assert
    linkageType: ''
    returnType: struct dsync_brain
    signature: "struct dsync_brain *\ndsync_brain_slave_init(struct mail_user *user,
      struct dsync_ibc *ibc,\n\t\t       bool local, const char *process_title_prefix,\n\t\t
      \      char default_alt_char,\n\t\t       unsigned int import_commit_msgs_interval)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_brain_want_namespace
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:342,1
    - Dst: mail_namespace_get_default_storage
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:345,1
    - Dst: mail_storage_purge
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:346,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:347,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 352
    functionName: dsync_brain_purge
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - mail_storage_get_last_internal_error
    - mail_namespace_get_default_storage
    - dsync_brain_want_namespace
    - mail_storage_purge
    - e_error
    linkageType: ''
    returnType: void
    signature: void dsync_brain_purge(struct dsync_brain *brain)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_has_timed_out
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:361,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:362,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:365,1
    - Dst: dsync_ibc_has_failed
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:369,1
    - Dst: dsync_ibc_close_mail_streams
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:372,1
    - Dst: dsync_brain_purge
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:375,1
    - Dst: dsync_brain_sync_mailbox_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:378,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:380,1
    - Dst: dsync_mailbox_tree_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:382,1
    - Dst: dsync_mailbox_tree_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:384,1
    - Dst: dsync_mailbox_tree_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:386,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:387,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:388,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:390,1
    - Dst: i_unlink
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:394,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:395,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:396,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:397,1
    - Dst: mail_user_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:401,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:405,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:406,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - _brain
    - error_r
    argTypes:
    - struct dsync_brain**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 354
    functionDepth: 3
    functionLinenumber: 354
    functionLinenumberEnd: 408
    functionName: dsync_brain_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 3
    functionsReached:
    - event_unref
    - t_strdup_printf
    - pool_unref
    - i_unlink
    - hash_table_iterate_deinit
    - mailbox_free
    - i_close_fd
    - dsync_ibc_has_failed
    - dsync_ibc_close_mail_streams
    - file_lock_free
    - hash_table_destroy
    - dsync_ibc_has_timed_out
    - e_error
    - dsync_brain_purge
    - mail_user_unref
    - dsync_brain_sync_mailbox_deinit
    - e_debug
    - dsync_mailbox_tree_iter_deinit
    - dsync_mailbox_tree_deinit
    linkageType: ''
    returnType: int
    signature: int dsync_brain_deinit(struct dsync_brain **_brain, enum mail_error
      *error_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: my_hostdomain
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:419,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:423,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:425,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:433,1
    - Dst: mail_user_get_home
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:439,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:440,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:444,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:449,1
    - Dst: dsync_brain_get_proctitle_full
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:449,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:450,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:452,1
    - Dst: mail_user_home_mkdir
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:456,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:458,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:462,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:464,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:469,1
    - Dst: dsync_brain_get_proctitle
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:469,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - brain
    - remote_hostname
    argTypes:
    - struct dsync_brain*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 410
    functionDepth: 8
    functionLinenumber: 410
    functionLinenumberEnd: 471
    functionName: dsync_brain_lock
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dsync_brain_get_proctitle_full
    - e_debug
    - mail_user_get_home
    - mail_user_home_mkdir
    - e_error
    - my_hostdomain
    - dsync_brain_get_proctitle
    - p_strconcat
    - process_title_set
    - file_create_locked
    linkageType: ''
    returnType: int
    signature: int dsync_brain_lock(struct dsync_brain *brain, const char *remote_hostname)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - brain
    - ibc_set
    argTypes:
    - struct dsync_brain*
    - struct dsync_ibc_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 483
    functionName: dsync_brain_set_hdr_hash_version
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dsync_brain_set_hdr_hash_version(struct dsync_brain *brain,\n\t\t\t\t
      const struct dsync_ibc_settings *ibc_set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:489,1
    - Dst: dsync_ibc_recv_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:491,1
    - Dst: dsync_brain_lock
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:495,1
    - Dst: dsync_brain_set_hdr_hash_version
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:500,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 485
    functionDepth: 9
    functionLinenumber: 485
    functionLinenumberEnd: 506
    functionName: dsync_brain_master_recv_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_recv_handshake
    - i_assert
    - dsync_brain_set_hdr_hash_version
    - dsync_brain_lock
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_master_recv_handshake(struct dsync_brain *brain)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:514,1
    - Dst: dsync_ibc_recv_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:516,1
    - Dst: dsync_brain_set_hdr_hash_version
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:518,1
    - Dst: dsync_brain_lock
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:523,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:533,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:534,1
    - Dst: mail_namespace_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:542,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:545,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:549,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:552,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:554,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:558,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:559,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:563,1
    - Dst: dsync_brain_set_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:566,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:569,1
    - Dst: dsync_brain_open_virtual_all_box
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:575,1
    - Dst: dsync_brain_mailbox_trees_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:576,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 53
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 508
    functionDepth: 9
    functionLinenumber: 508
    functionLinenumberEnd: 583
    functionName: dsync_brain_slave_recv_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - dsync_brain_set_flags
    - p_strdup
    - dsync_brain_open_virtual_all_box
    - mail_namespace_find
    - p_array_init
    - array_push_back
    - p_strarray_dup
    - dsync_ibc_recv_handshake
    - dsync_brain_mailbox_trees_init
    - dsync_brain_lock
    - t_strsplit
    - e_error
    - i_assert
    - dsync_brain_set_hdr_hash_version
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_slave_recv_handshake(struct dsync_brain *brain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:591,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:595,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:601,1
    - Dst: dsync_ibc_send_mailbox_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:604,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:606,1
    - Dst: dsync_ibc_send_end_of_list
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:608,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 610
    functionName: dsync_brain_master_send_last_common
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - dsync_ibc_send_mailbox_state
    - dsync_ibc_send_end_of_list
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dsync_brain_master_send_last_common(struct dsync_brain *brain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:618,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - brain
    - state
    argTypes:
    - struct dsync_brain*
    - struct dsync_mailbox_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 622
    functionName: dsync_mailbox_state_add
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - hash_table_insert
    - p_new
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_state_add(struct dsync_brain *brain,\n\t\t\t\t
      \   const struct dsync_mailbox_state *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:630,1
    - Dst: dsync_ibc_recv_mailbox_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:632,1
    - Dst: dsync_mailbox_state_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:633,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 641
    functionName: dsync_brain_slave_recv_last_common
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_state_add
    - i_assert
    - dsync_ibc_recv_mailbox_state
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_slave_recv_last_common(struct dsync_brain *brain)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_send_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:651,1
    - Dst: dsync_ibc_recv_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:658,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:663,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 673
    functionName: dsync_brain_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_send_finish
    - dsync_ibc_recv_finish
    - e_error
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_finish(struct dsync_brain *brain)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: dsync_brain_master_recv_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:687,1
    - Dst: dsync_brain_slave_recv_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:690,1
    - Dst: dsync_brain_master_send_last_common
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:693,1
    - Dst: dsync_brain_slave_recv_last_common
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:697,1
    - Dst: dsync_brain_send_mailbox_tree
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:700,1
    - Dst: dsync_brain_recv_mailbox_tree
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:704,1
    - Dst: dsync_brain_send_mailbox_tree_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:707,1
    - Dst: dsync_brain_recv_mailbox_tree_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:711,1
    - Dst: dsync_brain_master_send_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:714,1
    - Dst: dsync_brain_slave_recv_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:718,1
    - Dst: dsync_brain_sync_mails
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:721,1
    - Dst: dsync_brain_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:724,1
    - Dst: process_title_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:736,1
    - Dst: dsync_brain_get_proctitle
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:736,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 2
    argNames:
    - brain
    - changed_r
    argTypes:
    - struct dsync_brain*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 675
    functionDepth: 12
    functionLinenumber: 675
    functionLinenumberEnd: 740
    functionName: dsync_brain_run_real
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - dsync_brain_finish
    - dsync_brain_master_recv_handshake
    - dsync_brain_master_send_last_common
    - dsync_brain_send_mailbox_tree_deletes
    - dsync_brain_master_send_mailbox
    - dsync_brain_get_proctitle
    - dsync_brain_sync_mails
    - dsync_brain_send_mailbox_tree
    - dsync_brain_slave_recv_handshake
    - dsync_brain_recv_mailbox_tree
    - dsync_brain_slave_recv_mailbox
    - process_title_set
    - dsync_brain_recv_mailbox_tree_deletes
    - dsync_brain_slave_recv_last_common
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_run_real(struct dsync_brain *brain, bool *changed_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_has_failed
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:748,1
    - Dst: dsync_brain_run_real
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - brain
    - changed_r
    argTypes:
    - struct dsync_brain*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 742
    functionDepth: 13
    functionLinenumber: 742
    functionLinenumberEnd: 755
    functionName: dsync_brain_run
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 2
    functionsReached:
    - dsync_ibc_has_failed
    - dsync_brain_run_real
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_run(struct dsync_brain *brain, bool *changed_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_want_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:765,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:767,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:768,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:769,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:772,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:780,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 759
    functionDepth: 1
    functionLinenumber: 759
    functionLinenumberEnd: 781
    functionName: dsync_brain_mailbox_states_dump
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - e_debug
    - guid_128_to_string
    - hash_table_iterate_init
    - event_want_debug
    linkageType: ''
    returnType: void
    signature: void dsync_brain_mailbox_states_dump(struct dsync_brain *brain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:796,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:798,1
    - Dst: dsync_mailbox_state_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:802,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:806,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:807,1
    - Dst: dsync_mailbox_tree_lookup_guid
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:808,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:812,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:814,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:815,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:818,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:820,1
    - Dst: dsync_brain_mailbox_states_dump
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:821,1
    - Dst: dsync_mailbox_states_export
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:822,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - brain
    - output
    argTypes:
    - struct dsync_brain*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 783
    functionDepth: 2
    functionLinenumber: 783
    functionLinenumberEnd: 823
    functionName: dsync_brain_get_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - dsync_mailbox_states_export
    - hash_table_iterate
    - dsync_mailbox_tree_lookup_guid
    - e_debug
    - hash_table_iterate_init
    - guid_128_to_string
    - hash_table_remove
    - array_foreach
    - dsync_brain_mailbox_states_dump
    - dsync_mailbox_state_add
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: void dsync_brain_get_state(struct dsync_brain *brain, string_t *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 828
    functionName: dsync_brain_get_sync_type
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum dsync_brain_sync_type
    signature: enum dsync_brain_sync_type dsync_brain_get_sync_type(struct dsync_brain
      *brain)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 830
    functionDepth: 0
    functionLinenumber: 830
    functionLinenumberEnd: 833
    functionName: dsync_brain_has_failed
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_has_failed(struct dsync_brain *brain)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - brain
    - remote_only_r
    argTypes:
    - struct dsync_brain*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 845
    functionName: dsync_brain_get_unexpected_changes_reason
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *dsync_brain_get_unexpected_changes_reason(struct dsync_brain
      *brain,\n\t\t\t\t\t\t      bool *remote_only_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:858,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - ns
    - sync_ns
    argTypes:
    - struct mail_namespace*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 859
    functionName: dsync_brain_want_shared_namespace
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    linkageType: ''
    returnType: bool
    signature: "bool dsync_brain_want_shared_namespace(const struct mail_namespace
      *ns,\n\t\t\t\t\t      const struct mail_namespace *sync_ns)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:866,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:867,1
    - Dst: dsync_brain_want_shared_namespace
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:870,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - brain
    - ns
    argTypes:
    - struct dsync_brain*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 890
    functionName: dsync_brain_want_namespace
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 4
    functionsReached:
    - dsync_brain_want_shared_namespace
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool dsync_brain_want_namespace(struct dsync_brain *brain,\n\t\t\t\tstruct
      mail_namespace *ns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:895,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain.c:897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - brain
    - reason
    argTypes:
    - struct dsync_brain*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 898
    functionName: dsync_brain_set_changes_during_sync
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.c
    functionUses: 3
    functionsReached:
    - e_debug
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void dsync_brain_set_changes_during_sync(struct dsync_brain *brain,\n\t\t\t\t\t
      const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:154,1
    - Dst: e_warning
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - importer
    - error
    argTypes:
    - struct dsync_mailbox_importer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 162
    functionName: dsync_import_unexpected_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - e_error
    - e_warning
    linkageType: ''
    returnType: void
    signature: "void dsync_import_unexpected_state(struct dsync_mailbox_importer *importer,\n\t\t\t
      \     const char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:170,1
    - Dst: mail_search_build_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:171,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:172,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:173,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:177,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:179,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 164
    functionDepth: 4
    functionLinenumber: 164
    functionLinenumberEnd: 185
    functionName: dsync_mailbox_import_search_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add_range
    - mail_search_build_add
    - p_array_init
    - mail_search_build_init
    - mailbox_search_init
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_import_search_init(struct dsync_mailbox_importer
      *importer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:195,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:198,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:201,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 203
    functionName: dsync_mailbox_import_transaction_begin
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mail_alloc
    - mailbox_transaction_begin
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_import_transaction_begin(struct dsync_mailbox_importer
      *importer)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:215,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:217,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:219,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:220,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:220,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:221,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:246,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:248,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:255,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:256,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:257,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:258,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:259,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:260,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:261,1
    - Dst: dsync_mailbox_import_transaction_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:263,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:266,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:282,1
    - Dst: dsync_mailbox_import_search_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:290,1
    - Dst: dsync_import_unexpected_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:295,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:295,1
    - Dst: dsync_import_unexpected_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:299,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:299,1
    - Dst: dsync_import_unexpected_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:304,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:304,1
    - Dst: dsync_transaction_log_scan_get_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:310,1
    - Dst: dsync_transaction_log_scan_get_attr_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:311,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 74
    argCount: 3
    argNames:
    - box
    - log_scan
    - set
    argTypes:
    - struct mailbox*
    - struct dsync_transaction_log_scan*
    - struct dsync_mailbox_import_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 205
    functionDepth: 5
    functionLinenumber: 205
    functionLinenumberEnd: 313
    functionName: dsync_mailbox_import_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - event_create
    - p_strdup
    - p_new
    - hash_table_create
    - dsync_mailbox_import_transaction_begin
    - dsync_import_unexpected_state
    - dsync_transaction_log_scan_get_attr_hash
    - event_set_append_log_prefix
    - dsync_mailbox_import_search_init
    - t_strdup_printf
    - dsync_transaction_log_scan_get_hash
    - imap_parse_system_flag
    - hash_table_create_direct
    - mailbox_get_vname
    - mailbox_get_open_status
    linkageType: ''
    returnType: struct dsync_mailbox_importer
    signature: "struct dsync_mailbox_importer *\ndsync_mailbox_import_init(struct
      mailbox *box,\n\t\t\t  struct dsync_transaction_log_scan *log_scan,\n\t\t\t
      \ const struct dsync_mailbox_import_settings *set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_attribute_get_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:326,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:327,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:329,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:338,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:345,1
    - Dst: DSYNC_ATTR_HAS_VALUE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - importer
    - type
    - key
    - attr_r
    argTypes:
    - struct dsync_mailbox_importer*
    - enum mail_attribute_type
    - char*
    - struct dsync_mailbox_attribute**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 315
    functionDepth: 5
    functionLinenumber: 315
    functionLinenumberEnd: 358
    functionName: dsync_mailbox_import_lookup_attr
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - t_new
    - mailbox_get_last_internal_error
    - e_error
    - DSYNC_ATTR_HAS_VALUE
    - hash_table_lookup
    - mailbox_attribute_get_stream
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_lookup_attr(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t enum mail_attribute_type type, const char *key,\n\t\t\t\t
      struct dsync_mailbox_attribute **attr_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:370,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:371,1
    - Dst: I_MIN
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:375,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:376,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:379,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:380,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:383,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:384,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:385,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:389,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:390,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:391,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - input1
    - input2
    - cmp_r
    - error_r
    argTypes:
    - struct istream*
    - struct istream*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 399
    functionName: dsync_istreams_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - t_strdup_printf
    - i_stream_skip
    - i_stream_get_error
    - memcmp
    - i_stream_get_name
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int dsync_istreams_cmp(struct istream *input1, struct istream *input2,\n\t\t
      \  int *cmp_r, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:409,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:410,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:413,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:418,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:418,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:420,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:420,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:421,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:422,1
    - Dst: dsync_istreams_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:423,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:425,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:427,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - attr1
    - attr2
    - cmp_r
    - error_r
    argTypes:
    - struct dsync_mailbox_attribute*
    - struct dsync_mailbox_attribute*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 401
    functionDepth: 2
    functionLinenumber: 401
    functionLinenumberEnd: 429
    functionName: dsync_attributes_cmp_values
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    - i_stream_create_from_data
    - i_stream_seek
    - i_stream_unref
    - dsync_istreams_cmp
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dsync_attributes_cmp_values(const struct dsync_mailbox_attribute
      *attr1,\n\t\t\t    const struct dsync_mailbox_attribute *attr2,\n\t\t\t    int
      *cmp_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DSYNC_ATTR_HAS_VALUE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:436,1
    - Dst: DSYNC_ATTR_HAS_VALUE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:437,1
    - Dst: DSYNC_ATTR_HAS_VALUE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:441,1
    - Dst: DSYNC_ATTR_HAS_VALUE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:442,1
    - Dst: dsync_attributes_cmp_values
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:448,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - attr
    - local_attr
    - cmp_r
    - error_r
    argTypes:
    - struct dsync_mailbox_attribute*
    - struct dsync_mailbox_attribute*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 449
    functionName: dsync_attributes_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_attributes_cmp_values
    - DSYNC_ATTR_HAS_VALUE
    linkageType: ''
    returnType: int
    signature: "int dsync_attributes_cmp(const struct dsync_mailbox_attribute *attr,\n\t\t
      \    const struct dsync_mailbox_attribute *local_attr,\n\t\t     int *cmp_r,
      const char **error_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:461,1
    - Dst: DSYNC_ATTR_HAS_VALUE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:461,1
    - Dst: DSYNC_ATTR_HAS_VALUE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:464,1
    - Dst: dsync_attributes_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:499,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:500,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:528,1
    - Dst: mailbox_attribute_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:532,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:534,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:536,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 4
    argNames:
    - importer
    - attr
    - local_attr
    - result_r
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mailbox_attribute*
    - struct dsync_mailbox_attribute*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 451
    functionDepth: 5
    functionLinenumber: 451
    functionLinenumberEnd: 541
    functionName: dsync_mailbox_import_attribute_real
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dsync_attributes_cmp
    - mailbox_attribute_set
    - mailbox_get_last_internal_error
    - e_error
    - i_assert
    - DSYNC_ATTR_HAS_VALUE
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_attribute_real(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t    const struct dsync_mailbox_attribute *attr,\n\t\t\t\t
      \   const struct dsync_mailbox_attribute *local_attr,\n\t\t\t\t    const char
      **result_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_import_lookup_attr
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:550,1
    - Dst: dsync_mailbox_import_attribute_real
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:554,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:557,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:559,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - importer
    - attr
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mailbox_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 543
    functionDepth: 6
    functionLinenumber: 543
    functionLinenumberEnd: 562
    functionName: dsync_mailbox_import_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 1
    functionsReached:
    - e_debug
    - dsync_mailbox_import_lookup_attr
    - i_stream_unref
    - dsync_mailbox_import_attribute_real
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_attribute(struct dsync_mailbox_importer *importer,\n\t\t\t\t
      \  const struct dsync_mailbox_attribute *attr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:570,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:574,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - importer
    - mail
    - field
    argTypes:
    - struct dsync_mailbox_importer*
    - struct mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 564
    functionDepth: 3
    functionLinenumber: 564
    functionLinenumberEnd: 578
    functionName: dsync_mail_error
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 3
    functionsReached:
    - e_error
    - mailbox_get_last_internal_error
    linkageType: ''
    returnType: void
    signature: "void dsync_mail_error(struct dsync_mailbox_importer *importer,\n\t\t\t
      \    struct mail *mail, const char *field)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:588,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:589,1
    - Dst: mail_generate_guid_128_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:591,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:595,1
    - Dst: mail_generate_guid_128_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:598,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:599,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:601,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:602,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - importer
    - change
    - guid
    - cmp_guid_r
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 580
    functionDepth: 2
    functionLinenumber: 580
    functionLinenumberEnd: 608
    functionName: dsync_mail_change_guid_equals
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_unreached
    - t_strdup_printf
    - mail_generate_guid_128_hash
    - guid_128_from_string
    - memcmp
    - binary_to_hex
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mail_change_guid_equals(struct dsync_mailbox_importer *importer,\n\t\t\t
      \     const struct dsync_mail_change *change,\n\t\t\t      const char *guid,
      const char **cmp_guid_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:628,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:633,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:644,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:646,1
    - Dst: dsync_mail_get_hdr_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:650,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:654,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:659,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - importer
    - wanted_uid
    argTypes:
    - struct dsync_mailbox_importer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 610
    functionDepth: 9
    functionLinenumber: 610
    functionLinenumberEnd: 666
    functionName: importer_try_next_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - p_strdup
    - dsync_mail_error
    - dsync_mail_get_hdr_hash
    - mailbox_search_next
    - mail_get_special
    linkageType: ''
    returnType: int
    signature: "int importer_try_next_mail(struct dsync_mailbox_importer *importer,\n\t\t
      \      uint32_t wanted_uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: importer_try_next_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:675,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - importer
    - wanted_uid
    argTypes:
    - struct dsync_mailbox_importer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 668
    functionDepth: 10
    functionLinenumber: 668
    functionLinenumberEnd: 680
    functionName: importer_next_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - importer_try_next_mail
    linkageType: ''
    returnType: bool
    signature: bool importer_next_mail(struct dsync_mailbox_importer *importer, uint32_t
      wanted_uid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:695,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct importer_mail*
    - struct importer_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 704
    functionName: importer_mail_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int importer_mail_cmp(const struct importer_mail *m1,\n\t\t  const
      struct importer_mail *m2)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:712,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:716,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:727,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:728,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:731,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:732,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - importer
    - newmail
    - remote_uid
    argTypes:
    - struct dsync_mailbox_importer*
    - struct importer_new_mail*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 755
    functionName: newmail_link
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - hash_table_insert
    - hash_table_lookup
    - POINTER_CAST
    linkageType: ''
    returnType: void
    signature: "void newmail_link(struct dsync_mailbox_importer *importer,\n\t\t\t
      struct importer_new_mail *newmail, uint32_t remote_uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:761,1
    - Dst: e_warning
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - importer
    - uid
    - reason
    argTypes:
    - struct dsync_mailbox_importer*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 771
    functionName: dsync_mailbox_revert_existing_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - e_warning
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_revert_existing_uid(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t  uint32_t uid, const char *reason)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:781,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:787,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:792,1
    - Dst: dsync_mail_hdr_hash_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:797,1
    - Dst: dsync_mail_hdr_hash_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:798,1
    - Dst: importer_mail_cmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:810,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:814,1
    - Dst: dsync_mailbox_revert_existing_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:818,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:820,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:825,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:830,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:831,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:839,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:840,1
    - Dst: dsync_mailbox_revert_existing_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:848,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:849,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:855,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:856,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:857,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:875,1
    - Dst: newmail_link
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:877,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:879,1
    - Dst: newmail_link
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:880,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 78
    argCount: 2
    argNames:
    - importer
    - save_change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 773
    functionDepth: 2
    functionLinenumber: 773
    functionLinenumberEnd: 883
    functionName: dsync_mailbox_try_save_cur
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - p_new
    - mail_expunge
    - array_push_back
    - t_strdup_printf
    - dsync_mailbox_revert_existing_uid
    - newmail_link
    - i_assert
    - dsync_mail_hdr_hash_is_empty
    - importer_mail_cmp
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_try_save_cur(struct dsync_mailbox_importer *importer,\n\t\t\t\t
      \      struct dsync_mail_change *save_change)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: importer_next_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:890,1
    - Dst: dsync_mailbox_try_save_cur
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:893,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - importer
    - save_change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 886
    functionDepth: 11
    functionLinenumber: 886
    functionLinenumberEnd: 894
    functionName: dsync_mailbox_try_save
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_try_save_cur
    - importer_next_mail
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_try_save(struct dsync_mailbox_importer *importer,\n\t\t
      \      struct dsync_mail_change *save_change)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_try_save
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - importer
    - save_change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 896
    functionDepth: 12
    functionLinenumber: 896
    functionLinenumberEnd: 900
    functionName: dsync_mailbox_save
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_try_save
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_save(struct dsync_mailbox_importer *importer,\n\t\t\t
      \      struct dsync_mail_change *save_change)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:908,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:922,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:923,1
    - Dst: dsync_mail_change_guid_equals
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:926,1
    - Dst: dsync_import_unexpected_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:927,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:927,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - importer
    - change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 902
    functionDepth: 3
    functionLinenumber: 902
    functionLinenumberEnd: 933
    functionName: dsync_import_set_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - dsync_import_unexpected_state
    - dsync_mail_error
    - mail_set_uid
    - t_strdup_printf
    - dsync_mail_change_guid_equals
    linkageType: ''
    returnType: bool
    signature: "bool dsync_import_set_mail(struct dsync_mailbox_importer *importer,\n\t\t
      \     const struct dsync_mail_change *change)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mail_change_guid_equals
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:943,1
    - Dst: dsync_import_unexpected_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:945,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:945,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - importer
    - change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 935
    functionDepth: 3
    functionLinenumber: 935
    functionLinenumberEnd: 951
    functionName: dsync_check_cur_guid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mail_change_guid_equals
    - t_strdup_printf
    - dsync_import_unexpected_state
    linkageType: ''
    returnType: bool
    signature: "bool dsync_check_cur_guid(struct dsync_mailbox_importer *importer,\n\t\t\t\t
      const struct dsync_mail_change *change)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:993,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 13
    argNames:
    - local_final
    - local_add
    - local_remove
    - remote_final
    - remote_add
    - remote_remove
    - pvt_mask
    - prefer_remote
    - prefer_pvt_remote
    - change_add_r
    - change_remove_r
    - remote_changed
    - remote_pvt_changed
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - bool
    - bool
    - uint32_t*
    - uint32_t*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 1023
    functionName: merge_flags
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void merge_flags(uint32_t local_final, uint32_t local_add, uint32_t
      local_remove,\n\t    uint32_t remote_final, uint32_t remote_add, uint32_t remote_remove,\n\t
      \   uint32_t pvt_mask, bool prefer_remote, bool prefer_pvt_remote,\n\t    uint32_t
      *change_add_r, uint32_t *change_remove_r,\n\t    bool *remote_changed, bool
      *remote_pvt_changed)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1069,1
    - Dst: mail_get_keywords
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1074,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1078,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1079,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1085,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1086,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1087,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1092,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1093,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1094,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1098,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1099,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1100,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1101,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1102,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1103,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1104,1
    - Dst: t_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1105,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1110,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1111,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1131,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1132,1
    - Dst: keyword_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1139,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1140,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1141,1
    - Dst: keyword_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1158,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1159,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1160,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1164,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1164,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1165,1
    - Dst: merge_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1169,1
    - Dst: keywords_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1175,1
    - Dst: keywords_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1179,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1185,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1186,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1187,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1188,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1189,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1190,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1192,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1193,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1194,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1195,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1196,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1197,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 101
    argCount: 6
    argNames:
    - mail
    - local_changes
    - remote_changes
    - prefer_remote
    - remote_changed
    - remote_pvt_changed
    argTypes:
    - struct mail*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    - bool
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1058
    functionDepth: 2
    functionLinenumber: 1058
    functionLinenumberEnd: 1199
    functionName: merge_keywords
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 1
    functionsReached:
    - mail_get_keywords
    - t_new
    - array_push_back
    - mailbox_keywords_unref
    - array_get
    - str_array_length
    - merge_flags
    - mailbox_keywords_create_valid
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - array_is_created
    - i_assert
    - mail_update_keywords
    - keywords_append
    - keyword_find
    linkageType: ''
    returnType: void
    signature: "void merge_keywords(struct mail *mail, const ARRAY_TYPE(const_string)
      *local_changes,\n\t       const ARRAY_TYPE(const_string) *remote_changes,\n\t
      \      bool prefer_remote,\n\t       bool *remote_changed, bool *remote_pvt_changed)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1205,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1210,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1211,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1216,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1223,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1229,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1231,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1231,1
    - Dst: mail_update_keywords
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1232,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1233,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1235,1
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1237,1
    - Dst: mail_update_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1238,1
    - Dst: mail_get_pvt_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1239,1
    - Dst: mail_update_pvt_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1240,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - mail
    - change
    argTypes:
    - struct mail*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1201
    functionDepth: 1
    functionLinenumber: 1201
    functionLinenumberEnd: 1241
    functionName: dsync_mailbox_import_replace_flags
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mail_update_pvt_modseq
    - array_push_back
    - mailbox_keywords_unref
    - array_get
    - mail_update_flags
    - mailbox_keywords_create_valid
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - mail_get_modseq
    - array_append_zero
    - array_is_created
    - mail_update_modseq
    - mail_update_keywords
    - mail_get_pvt_modseq
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_import_replace_flags(struct mail *mail,\n\t\t\t\t
      \  const struct dsync_mail_change *change)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1251,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1256,1
    - Dst: dsync_check_cur_guid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1260,1
    - Dst: dsync_import_set_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1264,1
    - Dst: dsync_mailbox_import_replace_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1271,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1275,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1276,1
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1285,1
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1287,1
    - Dst: mail_get_pvt_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1295,1
    - Dst: mail_get_pvt_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1297,1
    - Dst: merge_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1303,1
    - Dst: mail_get_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1303,1
    - Dst: mailbox_get_private_flags_mask
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1305,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1311,1
    - Dst: mail_update_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1313,1
    - Dst: merge_keywords
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1316,1
    - Dst: mail_get_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1325,1
    - Dst: mail_update_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1326,1
    - Dst: mail_get_pvt_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1331,1
    - Dst: mail_update_pvt_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1332,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 2
    argNames:
    - importer
    - change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1243
    functionDepth: 4
    functionLinenumber: 1243
    functionLinenumberEnd: 1333
    functionName: dsync_mailbox_import_flag_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - mail_update_pvt_modseq
    - merge_keywords
    - dsync_mailbox_import_replace_flags
    - dsync_check_cur_guid
    - merge_flags
    - mail_update_flags
    - mail_get_flags
    - mailbox_get_private_flags_mask
    - ARRAY_TYPE
    - mail_get_modseq
    - mail_update_modseq
    - hash_table_lookup
    - i_assert
    - mail_get_pvt_modseq
    - dsync_import_set_mail
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_import_flag_change(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t const struct dsync_mail_change *change)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1341,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1344,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1348,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - change
    - keyword
    argTypes:
    - struct dsync_mail_change*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1335
    functionDepth: 1
    functionLinenumber: 1335
    functionLinenumberEnd: 1356
    functionName: dsync_mail_change_have_keyword
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - strcasecmp
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mail_change_have_keyword(const struct dsync_mail_change
      *change,\n\t\t\t       const char *keyword)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1364,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1372,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1380,1
    - Dst: dsync_mail_change_have_keyword
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1400,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 3
    argNames:
    - importer
    - change
    - result_r
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1358
    functionDepth: 2
    functionLinenumber: 1358
    functionLinenumberEnd: 1412
    functionName: dsync_mailbox_import_want_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - i_assert
    - dsync_mail_change_have_keyword
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_import_want_change(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t const struct dsync_mail_change *change,\n\t\t\t\t const
      char **result_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1421,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1426,1
    - Dst: dsync_mailbox_import_flag_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1427,1
    - Dst: dsync_mailbox_import_want_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1430,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1433,1
    - Dst: dsync_mail_change_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1434,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1439,1
    - Dst: dsync_mailbox_save
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1440,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1444,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1445,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1447,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - importer
    - change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1414
    functionDepth: 13
    functionLinenumber: 1414
    functionLinenumberEnd: 1449
    functionName: dsync_mailbox_import_save
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - p_new
    - array_push_back
    - dsync_mailbox_import_want_change
    - dsync_mailbox_import_flag_change
    - dsync_mailbox_save
    - i_assert
    - dsync_mail_change_dup
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_import_save(struct dsync_mailbox_importer *importer,\n\t\t\t
      \ const struct dsync_mail_change *change)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1459,1
    - Dst: dsync_import_set_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1460,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1461,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1467,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1470,1
    - Dst: dsync_check_cur_guid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1471,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1472,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1476,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1477,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - importer
    - change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1451
    functionDepth: 4
    functionLinenumber: 1451
    functionLinenumberEnd: 1479
    functionName: dsync_mailbox_import_expunge
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - mail_expunge
    - dsync_check_cur_guid
    - i_assert
    - dsync_import_set_mail
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_import_expunge(struct dsync_mailbox_importer *importer,\n\t\t\t
      \    const struct dsync_mail_change *change)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1495,1
    - Dst: dsync_mailbox_import_search_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1496,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1481
    functionDepth: 5
    functionLinenumber: 1481
    functionLinenumberEnd: 1497
    functionName: dsync_mailbox_rewind_search
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_import_search_init
    - mailbox_search_deinit
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_rewind_search(struct dsync_mailbox_importer *importer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_want_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1507,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1508,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1509,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1510,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1499
    functionDepth: 1
    functionLinenumber: 1499
    functionLinenumberEnd: 1512
    functionName: dsync_mailbox_common_uid_found
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - e_debug
    - event_want_debug
    - imap_write_seq_range
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_common_uid_found(struct dsync_mailbox_importer *importer)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mail_change_guid_equals
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1553,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1558,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1566,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1573,1
    - Dst: dsync_mail_get_hdr_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1581,1
    - Dst: dsync_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1584,1
    - Dst: dsync_mail_hdr_hash_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1589,1
    - Dst: dsync_mail_hdr_hash_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1590,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1597,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1601,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - importer
    - change
    - result_r
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1544
    functionDepth: 9
    functionLinenumber: 1544
    functionLinenumberEnd: 1605
    functionName: dsync_mailbox_import_match_msg
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dsync_mail_change_guid_equals
    - t_strdup_printf
    - dsync_mail_error
    - e_error
    - dsync_mail_get_hdr_hash
    - i_assert
    - dsync_mail_hdr_hash_is_empty
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_match_msg(struct dsync_mailbox_importer *importer,\n\t\t\t
      \      const struct dsync_mail_change *change,\n\t\t\t       const char **result_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1624,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1625,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1631,1
    - Dst: dsync_mail_change_guid_equals
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1632,1
    - Dst: dsync_mailbox_common_uid_found
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1637,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - importer
    - change
    - result_r
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1607
    functionDepth: 3
    functionLinenumber: 1607
    functionLinenumberEnd: 1649
    functionName: dsync_mailbox_find_common_expunged_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - i_assert
    - POINTER_CAST
    - dsync_mailbox_common_uid_found
    - hash_table_lookup
    - dsync_mail_change_guid_equals
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_find_common_expunged_uid(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t       const struct dsync_mail_change *change,\n\t\t\t\t
      \      const char **result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1655,1
    - Dst: e_warning
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - importer
    - change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1651
    functionDepth: 1
    functionLinenumber: 1651
    functionLinenumberEnd: 1666
    functionName: dsync_mailbox_revert_missing
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - e_warning
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_revert_missing(struct dsync_mailbox_importer *importer,\n\t\t\t
      \    const struct dsync_mail_change *change)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1675,1
    - Dst: importer_next_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1682,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1691,1
    - Dst: dsync_mailbox_import_want_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1692,1
    - Dst: dsync_mailbox_common_uid_found
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1695,1
    - Dst: dsync_mailbox_revert_missing
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1698,1
    - Dst: dsync_mailbox_find_common_expunged_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1700,1
    - Dst: dsync_mailbox_common_uid_found
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1706,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1708,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1714,1
    - Dst: dsync_mailbox_import_match_msg
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1721,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1727,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1732,1
    - Dst: dsync_mailbox_common_uid_found
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1735,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1739,1
    - Dst: dsync_mailbox_revert_existing_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1742,1
    - Dst: dsync_mailbox_import_want_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1747,1
    - Dst: dsync_mailbox_revert_missing
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1751,1
    - Dst: dsync_mailbox_find_common_expunged_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1754,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1756,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 3
    argNames:
    - importer
    - change
    - result_r
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1668
    functionDepth: 11
    functionLinenumber: 1668
    functionLinenumberEnd: 1758
    functionName: dsync_mailbox_find_common_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_revert_missing
    - importer_next_mail
    - dsync_mailbox_find_common_expunged_uid
    - dsync_mailbox_import_want_change
    - e_debug
    - t_strdup_printf
    - dsync_mailbox_import_match_msg
    - dsync_mailbox_revert_existing_uid
    - dsync_mailbox_common_uid_found
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_find_common_uid(struct dsync_mailbox_importer *importer,\n\t\t\t
      \     const struct dsync_mail_change *change,\n\t\t\t      const char **result_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1765,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1766,1
    - Dst: dsync_mailbox_find_common_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1777,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1778,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1783,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1807,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1812,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1816,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1825,1
    - Dst: dsync_mailbox_import_save
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1833,1
    - Dst: dsync_mailbox_import_expunge
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1836,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1839,1
    - Dst: dsync_mailbox_import_flag_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1840,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1843,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 2
    argNames:
    - importer
    - change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1760
    functionDepth: 14
    functionLinenumber: 1760
    functionLinenumberEnd: 1846
    functionName: dsync_mailbox_import_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 1
    functionsReached:
    - dsync_mailbox_import_expunge
    - i_unreached
    - e_debug
    - dsync_mailbox_import_save
    - dsync_mailbox_import_flag_change
    - i_assert
    - dsync_mailbox_find_common_uid
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_change(struct dsync_mailbox_importer *importer,\n\t\t\t\tconst
      struct dsync_mail_change *change)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - newmail1
    - newmail2
    argTypes:
    - struct importer_new_mail**
    - struct importer_new_mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1848
    functionDepth: 0
    functionLinenumber: 1848
    functionLinenumberEnd: 1857
    functionName: importer_new_mail_final_uid_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int importer_new_mail_final_uid_cmp(struct importer_new_mail *const
      *newmail1,\n\t\t\t\tstruct importer_new_mail *const *newmail2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: I_MAX
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1865,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1867,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1870,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1884,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1886,1
    - Dst: array_sort
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1901,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1859
    functionDepth: 1
    functionLinenumber: 1859
    functionLinenumberEnd: 1902
    functionName: dsync_mailbox_import_assign_new_uids
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - e_debug
    - I_MAX
    - array_sort
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_import_assign_new_uids(struct dsync_mailbox_importer
      *importer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1912,1
    - Dst: dsync_mail_fill
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1917,1
    - Dst: mail_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1918,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1922,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1926,1
    - Dst: dsync_import_unexpected_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1927,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1927,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - importer
    - mail
    - uid
    - guid
    - dmail_r
    argTypes:
    - struct dsync_mailbox_importer*
    - struct mail*
    - uint32_t
    - char*
    - struct dsync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1904
    functionDepth: 4
    functionLinenumber: 1904
    functionLinenumberEnd: 1933
    functionName: dsync_mailbox_import_local_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dsync_import_unexpected_state
    - mail_set_uid
    - t_strdup_printf
    - e_error
    - dsync_mail_fill
    - mail_get_last_internal_error
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_local_uid(struct dsync_mailbox_importer *importer,\n\t\t\t
      \      struct mail *mail, uint32_t uid, const char *guid,\n\t\t\t       struct
      dsync_mail *dmail_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1939,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1943,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - importer
    - uid
    argTypes:
    - struct dsync_mailbox_importer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1944
      start: 1935
    functionDepth: 1
    functionLinenumber: 1935
    functionLinenumberEnd: 1944
    functionName: dsync_mailbox_import_saved_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_import_saved_uid(struct dsync_mailbox_importer
      *importer,\n\t\t\t       uint32_t uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1952,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1946
    functionDepth: 1
    functionLinenumber: 1946
    functionLinenumberEnd: 1958
    functionName: dsync_mailbox_import_update_first_saved
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_import_update_first_saved(struct dsync_mailbox_importer
      *importer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_import_saved_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1964,1
    - Dst: dsync_mailbox_import_update_first_saved
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1967,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1978,1
    - Dst: dsync_mailbox_import_commit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1979,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - importer
    - newmail
    argTypes:
    - struct dsync_mailbox_importer*
    - struct importer_new_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1960
    functionDepth: 2
    functionLinenumber: 1960
    functionLinenumberEnd: 1983
    functionName: dsync_mailbox_import_saved_newmail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_import_commit
    - array_count
    - dsync_mailbox_import_saved_uid
    - dsync_mailbox_import_update_first_saved
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_import_saved_newmail(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t   struct importer_new_mail *newmail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IMPORTER_DEBUG_CHANGE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1991,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1993,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1996,1
    - Dst: mailbox_save_copy_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1997,1
    - Dst: mailbox_save_set_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1998,1
    - Dst: mailbox_move
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:1999,1
    - Dst: dsync_mailbox_import_saved_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2001,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - importer
    - old_uid
    - new_uid
    argTypes:
    - struct dsync_mailbox_importer*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1985
    functionDepth: 3
    functionLinenumber: 1985
    functionLinenumberEnd: 2003
    functionName: dsync_msg_change_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mailbox_save_alloc
    - IMPORTER_DEBUG_CHANGE
    - mail_set_uid
    - mailbox_move
    - mailbox_save_copy_flags
    - mailbox_save_set_uid
    - dsync_mailbox_import_saved_uid
    linkageType: ''
    returnType: bool
    signature: "bool dsync_msg_change_uid(struct dsync_mailbox_importer *importer,\n\t\t
      \    uint32_t old_uid, uint32_t new_uid)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2016,1
    - Dst: dsync_msg_change_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2019,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2020,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2023,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2024,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2029,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2030,1
    - Dst: dsync_msg_change_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2031,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2032,1
    - Dst: mailbox_get_last_mail_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2035,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2036,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - importer
    - unwanted_uids
    - wanted_uid
    argTypes:
    - struct dsync_mailbox_importer*
    - ARRAY_TYPE*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 2005
    functionDepth: 4
    functionLinenumber: 2005
    functionLinenumberEnd: 2039
    functionName: dsync_mailbox_import_change_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_mail_error
    - seq_range_array_iter_nth
    - dsync_msg_change_uid
    - seq_range_array_iter_init
    - array_get
    - seq_range_array_remove
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_import_change_uid(struct dsync_mailbox_importer
      *importer,\n\t\t\t\tARRAY_TYPE(seq_range) *unwanted_uids,\n\t\t\t\tuint32_t
      wanted_uid)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2047,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2054,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2058,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2059,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2064,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2064,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2065,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2066,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2067,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2071,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2075,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2078,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2082,1
    - Dst: dsync_mailbox_import_change_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2083,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2086,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2091,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2092,1
    - Dst: IMPORTER_DEBUG_CHANGE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2093,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2094,1
    - Dst: mail_expunge
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2095,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2101,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2105,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2112,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2113,1
    - Dst: dsync_mailbox_import_local_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2114,1
    - Dst: dsync_mailbox_save_newmails
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2117,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 4
    argNames:
    - importer
    - all_newmails
    - local_uids
    - wanted_uids
    argTypes:
    - struct dsync_mailbox_importer*
    - struct importer_new_mail*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2123
      start: 2041
    functionDepth: 5
    functionLinenumber: 2041
    functionLinenumberEnd: 2123
    functionName: dsync_mailbox_import_try_local
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - seq_range_array_iter_nth
    - seq_range_array_add
    - seq_range_exists
    - mail_expunge
    - seq_range_array_iter_init
    - IMPORTER_DEBUG_CHANGE
    - mail_set_uid
    - dsync_mailbox_import_change_uid
    - dsync_mailbox_import_local_uid
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    - dsync_mailbox_save_newmails
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_import_try_local(struct dsync_mailbox_importer
      *importer,\n\t\t\t       struct importer_new_mail *all_newmails,\n\t\t\t       ARRAY_TYPE(seq_range)
      *local_uids,\n\t\t\t       ARRAY_TYPE(seq_range) *wanted_uids)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_import_local_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2134,1
    - Dst: dsync_mailbox_save_newmails
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - importer
    - all_newmails
    argTypes:
    - struct dsync_mailbox_importer*
    - struct importer_new_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2142
      start: 2125
    functionDepth: 5
    functionLinenumber: 2125
    functionLinenumberEnd: 2142
    functionName: dsync_mailbox_import_try_virtual_all
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_import_local_uid
    - dsync_mailbox_save_newmails
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_import_try_virtual_all(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t     struct importer_new_mail *all_newmails)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2148,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2154,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2159,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2160,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2163,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2168,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2171,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2173,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2173,1
    - Dst: dsync_mailbox_import_try_local
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2175,1
    - Dst: dsync_mailbox_import_try_virtual_all
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2177,1
    - Dst: IMPORTER_DEBUG_CHANGE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2179,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2181,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - importer
    - all_newmails
    argTypes:
    - struct dsync_mailbox_importer*
    - struct importer_new_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2190
      start: 2144
    functionDepth: 6
    functionLinenumber: 2144
    functionLinenumberEnd: 2190
    functionName: dsync_mailbox_import_handle_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - array_append_space
    - dsync_mailbox_import_try_local
    - IMPORTER_DEBUG_CHANGE
    - dsync_mailbox_import_try_virtual_all
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_import_handle_mail(struct dsync_mailbox_importer
      *importer,\n\t\t\t\t struct importer_new_mail *all_newmails)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2201,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2202,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2204,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2205,1
    - Dst: mail_search_build_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2209,1
    - Dst: mail_search_build_add_all
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2210,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2213,1
    - Dst: mailbox_search_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2216,1
    - Dst: mail_search_args_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2218,1
    - Dst: mailbox_search_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2220,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2221,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2225,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2229,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2230,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2232,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2233,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2236,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2192
    functionDepth: 11
    functionLinenumber: 2192
    functionLinenumberEnd: 2237
    functionName: dsync_mailbox_import_find_virtual_uids
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mail_get_special
    - mail_search_build_add_all
    - hash_table_lookup
    - mailbox_get_last_internal_error
    - mailbox_transaction_begin
    - mail_alloc
    - mailbox_sync
    - e_error
    - mailbox_search_deinit
    - mail_search_build_init
    - mailbox_get_vname
    - mailbox_search_init
    - mailbox_search_next
    - mail_search_args_unref
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_import_find_virtual_uids(struct dsync_mailbox_importer
      *importer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2248,1
    - Dst: dsync_mailbox_import_find_virtual_uids
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2250,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2253,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2254,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2256,1
    - Dst: dsync_mailbox_import_handle_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2256,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2259
      start: 2239
    functionDepth: 12
    functionLinenumber: 2239
    functionLinenumberEnd: 2259
    functionName: dsync_mailbox_import_handle_local_mails
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_import_find_virtual_uids
    - hash_table_iterate
    - hash_table_iterate_init
    - hash_table_remove
    - if
    - dsync_mailbox_import_handle_mail
    - hash_table_count
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_import_handle_local_mails(struct dsync_mailbox_importer
      *importer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2326,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2330,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2333,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2334,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2341,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2344,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2347,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2348,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2349
      start: 2323
    functionDepth: 1
    functionLinenumber: 2323
    functionLinenumberEnd: 2349
    functionName: dsync_mailbox_get_final_keywords
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_get
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - array_is_created
    linkageType: ''
    returnType: char
    signature: 'char *const *

      dsync_mailbox_get_final_keywords(const struct dsync_mail_change *change)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_get_final_keywords
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2359,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2361,1
    - Dst: mailbox_save_set_flags
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2363,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2365,1
    - Dst: mailbox_enable
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2368,1
    - Dst: mailbox_save_set_min_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2369,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - importer
    - save_ctx
    - change
    argTypes:
    - struct dsync_mailbox_importer*
    - struct mail_save_context*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2374
      start: 2351
    functionDepth: 5
    functionLinenumber: 2351
    functionLinenumberEnd: 2374
    functionName: dsync_mailbox_save_set_metadata
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mailbox_enable
    - mailbox_save_set_min_modseq
    - mailbox_keywords_unref
    - mailbox_save_set_flags
    - mailbox_keywords_create_valid
    - dsync_mailbox_get_final_keywords
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_save_set_metadata(struct dsync_mailbox_importer
      *importer,\n\t\t\t\tstruct mail_save_context *save_ctx,\n\t\t\t\tconst struct
      dsync_mail_change *change)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_set_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2385,1
    - Dst: mailbox_copy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2386,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2390,1
    - Dst: e_warning
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2392,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - importer
    - save_ctx_p
    - all_newmails_forcopy
    argTypes:
    - struct dsync_mailbox_importer*
    - struct mail_save_context**
    - struct importer_new_mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2406
      start: 2376
    functionDepth: 3
    functionLinenumber: 2376
    functionLinenumberEnd: 2406
    functionName: dsync_msg_try_copy
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mailbox_copy
    - e_warning
    - mail_set_uid
    - mailbox_get_last_internal_error
    linkageType: ''
    returnType: int
    signature: "int dsync_msg_try_copy(struct dsync_mailbox_importer *importer,\n\t\t
      \  struct mail_save_context **save_ctx_p,\n\t\t   struct importer_new_mail **all_newmails_forcopy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_set_pop3_uidl
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2413,1
    - Dst: mailbox_save_set_pop3_order
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2415,1
    - Dst: mailbox_save_set_received_date
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2416,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - save_ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct dsync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2417
      start: 2408
    functionDepth: 2
    functionLinenumber: 2408
    functionLinenumberEnd: 2417
    functionName: dsync_mailbox_save_set_nonminimal
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - mailbox_save_set_pop3_order
    - mailbox_save_set_pop3_uidl
    - mailbox_save_set_received_date
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_save_set_nonminimal(struct mail_save_context *save_ctx,\n\t\t\t\t
      \ const struct dsync_mail *mail)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2426,1
    - Dst: mailbox_save_set_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2427,1
    - Dst: mailbox_save_set_guid
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2429,1
    - Dst: mailbox_save_set_save_date
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2431,1
    - Dst: dsync_mailbox_save_set_metadata
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2432,1
    - Dst: dsync_mailbox_save_set_nonminimal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2435,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - importer
    - mail
    - newmail
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail*
    - struct importer_new_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2419
    functionDepth: 6
    functionLinenumber: 2419
    functionLinenumberEnd: 2437
    functionName: dsync_mailbox_save_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_save_set_metadata
    - mailbox_save_alloc
    - mailbox_save_set_guid
    - dsync_mailbox_save_set_nonminimal
    - mailbox_save_set_save_date
    - mailbox_save_set_uid
    linkageType: ''
    returnType: struct mail_save_context
    signature: "struct mail_save_context *\ndsync_mailbox_save_init(struct dsync_mailbox_importer
      *importer,\n\t\t\tconst struct dsync_mail *mail,\n\t\t\tstruct importer_new_mail
      *newmail)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_save_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2452,1
    - Dst: dsync_msg_try_copy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2453,1
    - Dst: dsync_mailbox_save_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2455,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2459,1
    - Dst: mailbox_copy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2460,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2466,1
    - Dst: e_warning
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2468,1
    - Dst: dsync_mailbox_save_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2474,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2479,1
    - Dst: dsync_mailbox_import_saved_newmail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2480,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2487,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2494,1
    - Dst: dsync_mail_fill_nonminimal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2496,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2498,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2501,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2504,1
    - Dst: dsync_mailbox_save_set_nonminimal
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2507,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2515,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2519,1
    - Dst: mailbox_save_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2520,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2521,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2522,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2527,1
    - Dst: mailbox_save_continue
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2528,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2534,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2537,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2538,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2539,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2543,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2544,1
    - Dst: mailbox_save_cancel
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2546,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2549,1
    - Dst: mailbox_save_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2550,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2551,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2552,1
    - Dst: dsync_mailbox_import_saved_newmail
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2556,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 78
    argCount: 5
    argNames:
    - importer
    - mail
    - newmail
    - all_newmails_forcopy
    - remote_mail
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail*
    - struct importer_new_mail*
    - struct importer_new_mail**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2560
      start: 2439
    functionDepth: 7
    functionLinenumber: 2439
    functionLinenumberEnd: 2560
    functionName: dsync_mailbox_save_body
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_save_init
    - dsync_mail_fill_nonminimal
    - mailbox_get_last_internal_error
    - mailbox_save_continue
    - dsync_mailbox_import_saved_newmail
    - mailbox_save_finish
    - mailbox_copy
    - e_warning
    - e_error
    - i_stream_read
    - mailbox_save_cancel
    - dsync_mailbox_save_set_nonminimal
    - i_stream_seek
    - i_stream_get_error
    - mailbox_save_begin
    - i_assert
    - dsync_msg_try_copy
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_save_body(struct dsync_mailbox_importer *importer,\n\t\t\tconst
      struct dsync_mail *mail,\n\t\t\tstruct importer_new_mail *newmail,\n\t\t\tstruct
      importer_new_mail **all_newmails_forcopy,\n\t\t\tbool remote_mail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2577,1
    - Dst: dsync_mailbox_save_body
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - importer
    - mail
    - all_newmails
    - remote_mail
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail*
    - struct importer_new_mail*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2562
    functionDepth: 8
    functionLinenumber: 2562
    functionLinenumberEnd: 2582
    functionName: dsync_mailbox_save_newmails
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 2
    functionsReached:
    - dsync_mailbox_save_body
    - if
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_save_newmails(struct dsync_mailbox_importer *importer,\n\t\t\t\t\tconst
      struct dsync_mail *mail,\n\t\t\t\t\tstruct importer_new_mail *all_newmails,\n\t\t\t\t\tbool
      remote_mail)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2591,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2592,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2599,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2603,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2604,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2604,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2607,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2611,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2618,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2620,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2621,1
    - Dst: dsync_mailbox_save_newmails
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2624,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2625,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - importer
    - mail
    argTypes:
    - struct dsync_mailbox_importer*
    - struct dsync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2586
    functionDepth: 9
    functionLinenumber: 2586
    functionLinenumberEnd: 2627
    functionName: dsync_mailbox_import_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 1
    functionsReached:
    - i_assert
    - POINTER_CAST
    - i_unreached
    - e_debug
    - hash_table_remove
    - e_error
    - hash_table_lookup
    - dsync_mailbox_save_newmails
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_mail(struct dsync_mailbox_importer *importer,\n\t\t\t
      \     const struct dsync_mail *mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2647,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2650,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2651,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2652,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2653,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2653,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - importer
    - unwanted_uids
    argTypes:
    - struct dsync_mailbox_importer*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2629
    functionDepth: 1
    functionLinenumber: 2629
    functionLinenumberEnd: 2654
    functionName: reassign_uids_in_seq_range
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - e_debug
    - array_count
    - event_want_debug
    - imap_write_seq_range
    linkageType: ''
    returnType: int
    signature: "int reassign_uids_in_seq_range(struct dsync_mailbox_importer *importer,\n\t\t\t
      \  const ARRAY_TYPE(seq_range) *unwanted_uids)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2703,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2709,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2710,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2711,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2731,1
    - Dst: I_MAX
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2732,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2734,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2735,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2738,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2740,1
    - Dst: reassign_uids_in_seq_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2743,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2745,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2747,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - importer
    - changes_during_sync_r
    argTypes:
    - struct dsync_mailbox_importer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2753
      start: 2699
    functionDepth: 2
    functionLinenumber: 2699
    functionLinenumberEnd: 2753
    functionName: reassign_unwanted_uids
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add_range
    - seq_range_count
    - array_get
    - I_MAX
    - t_strdup_printf
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    - reassign_uids_in_seq_range
    - seq_range_array_remove
    linkageType: ''
    returnType: int
    signature: "int reassign_unwanted_uids(struct dsync_mailbox_importer *importer,\n\t\t
      \      const char **changes_during_sync_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mail_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2764,1
    - Dst: mail_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2765,1
    - Dst: mailbox_transaction_commit_get_changes
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2768,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2770,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2771,1
    - Dst: array_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2774,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2775,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2776,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2777,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2778,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2782,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2783,1
    - Dst: imap_write_seq_range
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2784,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2785,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2785,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2787,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2788,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2789,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2790,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2793,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2794,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2795,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - importer
    - final
    argTypes:
    - struct dsync_mailbox_importer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2799
      start: 2755
    functionDepth: 3
    functionLinenumber: 2755
    functionLinenumberEnd: 2799
    functionName: dsync_mailbox_import_commit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 1
    functionsReached:
    - seq_range_array_iter_nth
    - array_delete
    - t_str_new
    - str_c
    - mailbox_get_last_internal_error
    - mailbox_transaction_rollback
    - e_debug
    - seq_range_array_iter_init
    - imap_write_seq_range
    - array_push_back
    - mailbox_transaction_commit_get_changes
    - pool_unref
    - e_error
    - array_count
    - event_want_debug
    - mailbox_transaction_commit
    - mail_free
    linkageType: ''
    returnType: int
    signature: int dsync_mailbox_import_commit(struct dsync_mailbox_importer *importer,
      bool final)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_import_commit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2812,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2815,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2816,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2817,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2826,1
    - Dst: I_MIN
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2829,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2834,1
    - Dst: mailbox_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2841,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2842,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2843,1
    - Dst: reassign_unwanted_uids
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2852,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - importer
    - changes_during_sync_r
    argTypes:
    - struct dsync_mailbox_importer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2856
      start: 2806
    functionDepth: 11
    functionLinenumber: 2806
    functionLinenumberEnd: 2856
    functionName: dsync_mailbox_import_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - i_zero
    - mailbox_update
    - mailbox_get_last_internal_error
    - e_debug
    - I_MIN
    - mailbox_sync
    - e_error
    - reassign_unwanted_uids
    - dsync_mailbox_import_commit
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_finish(struct dsync_mailbox_importer *importer,\n\t\t\t\t
      \      const char **changes_during_sync_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2865,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2866,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2871,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2878,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2879
      start: 2858
    functionDepth: 1
    functionLinenumber: 2858
    functionLinenumberEnd: 2879
    functionName: dsync_mailbox_import_check_missing_guid_imports
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - e_error
    - hash_table_iterate_init
    - hash_table_iterate
    - hash_table_iterate_deinit
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_import_check_missing_guid_imports(struct dsync_mailbox_importer
      *importer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2888,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2889,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2894,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2901,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2902
      start: 2881
    functionDepth: 1
    functionLinenumber: 2881
    functionLinenumberEnd: 2902
    functionName: dsync_mailbox_import_check_missing_uid_imports
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 0
    functionsReached:
    - e_error
    - hash_table_iterate_init
    - hash_table_iterate
    - hash_table_iterate_deinit
    linkageType: ''
    returnType: void
    signature: void dsync_mailbox_import_check_missing_uid_imports(struct dsync_mailbox_importer
      *importer)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_import_assign_new_uids
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2928,1
    - Dst: dsync_mailbox_import_check_missing_guid_imports
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2931,1
    - Dst: dsync_mailbox_import_check_missing_uid_imports
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2932,1
    - Dst: mailbox_search_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2936,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2937,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2938,1
    - Dst: dsync_mailbox_import_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2943,1
    - Dst: mail_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2947,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2949,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2951,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2952,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2953,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2954,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2955,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2956,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2957,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2958,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2959,1
    - Dst: mailbox_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2974,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2975,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2976,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2982,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2986,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2989,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2990,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 59
    argCount: 9
    argNames:
    - _importer
    - success
    - last_common_uid_r
    - last_common_modseq_r
    - last_common_pvt_modseq_r
    - last_messages_count_r
    - changes_during_sync_r
    - require_full_resync_r
    - error_r
    argTypes:
    - struct dsync_mailbox_importer**
    - bool
    - uint32_t*
    - uint64_t*
    - uint64_t*
    - uint32_t*
    - char**
    - bool*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2992
      start: 2904
    functionDepth: 12
    functionLinenumber: 2904
    functionLinenumberEnd: 2992
    functionName: dsync_mailbox_import_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 1
    functionsReached:
    - event_unref
    - mailbox_get_last_internal_error
    - mail_free
    - pool_unref
    - e_error
    - mailbox_delete
    - dsync_mailbox_import_finish
    - mailbox_search_deinit
    - mailbox_get_open_status
    - mailbox_transaction_commit
    - dsync_mailbox_import_check_missing_uid_imports
    - dsync_mailbox_import_check_missing_guid_imports
    - array_free
    - array_is_created
    - i_assert
    - dsync_mailbox_import_assign_new_uids
    - hash_table_destroy
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_import_deinit(struct dsync_mailbox_importer **_importer,\n\t\t\t\tbool
      success,\n\t\t\t\tuint32_t *last_common_uid_r,\n\t\t\t\tuint64_t *last_common_modseq_r,\n\t\t\t\tuint64_t
      *last_common_pvt_modseq_r,\n\t\t\t\tuint32_t *last_messages_count_r,\n\t\t\t\tconst
      char **changes_during_sync_r,\n\t\t\t\tbool *require_full_resync_r,\n\t\t\t\tenum
      mail_error *error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c:2998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - importer
    argTypes:
    - struct dsync_mailbox_importer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3000
      start: 2994
    functionDepth: 1
    functionLinenumber: 2994
    functionLinenumberEnd: 3000
    functionName: dsync_mailbox_import_get_proctitle
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-import.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *dsync_mailbox_import_get_proctitle(struct dsync_mailbox_importer
      *importer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:12,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ibc
    argTypes:
    - struct dsync_ibc**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 13
    functionName: dsync_ibc_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 2
    functionsReached:
    - struct dsync_ibc*::v::deinit
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_deinit(struct dsync_ibc **_ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ibc
    - callback
    - context
    argTypes:
    - struct dsync_ibc*
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 20
    functionName: dsync_ibc_set_io_callback
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_set_io_callback(struct dsync_ibc *ibc,\n\t\t\t       io_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::send_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - set
    argTypes:
    - struct dsync_ibc*
    - struct dsync_ibc_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 26
    functionName: dsync_ibc_send_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 2
    functionsReached:
    - struct dsync_ibc*::v::send_handshake
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_send_handshake(struct dsync_ibc *ibc,\n\t\t\t      const
      struct dsync_ibc_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - set_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_ibc_settings**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: dsync_ibc_recv_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 2
    functionsReached:
    - struct dsync_ibc*::v::recv_handshake
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_handshake(struct dsync_ibc
      *ibc,\n\t\t\t const struct dsync_ibc_settings **set_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::is_send_queue_full
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 41
    functionName: dsync_ibc_send_ret
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 0
    functionsReached:
    - struct dsync_ibc*::v::is_send_queue_full
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: enum dsync_ibc_send_ret dsync_ibc_send_ret(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::send_end_of_list
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:46,1
    - Dst: dsync_ibc_send_ret
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ibc
    - type
    argTypes:
    - struct dsync_ibc*
    - enum dsync_ibc_eol_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: dsync_ibc_send_end_of_list
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 2
    functionsReached:
    - dsync_ibc_send_ret
    - struct dsync_ibc*::v::send_end_of_list
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: enum dsync_ibc_send_ret dsync_ibc_send_end_of_list(struct dsync_ibc
      *ibc, enum dsync_ibc_eol_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::send_mailbox_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - state
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: dsync_ibc_send_mailbox_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 2
    functionsReached:
    - struct dsync_ibc*::v::send_mailbox_state
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: "enum dsync_ibc_send_ret dsync_ibc_send_mailbox_state(struct dsync_ibc
      *ibc,\n\t\t\t     const struct dsync_mailbox_state *state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_mailbox_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - state_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: dsync_ibc_recv_mailbox_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 2
    functionsReached:
    - struct dsync_ibc*::v::recv_mailbox_state
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_mailbox_state(struct dsync_ibc
      *ibc,\n\t\t\t     struct dsync_mailbox_state *state_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:72,1
    - Dst: struct dsync_ibc*::v::send_mailbox_tree_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ibc
    - name
    - node
    argTypes:
    - struct dsync_ibc*
    - char**
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: dsync_ibc_send_mailbox_tree_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - i_assert
    - struct dsync_ibc*::v::send_mailbox_tree_node
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: "enum dsync_ibc_send_ret dsync_ibc_send_mailbox_tree_node(struct dsync_ibc
      *ibc,\n\t\t\t\t const char *const *name,\n\t\t\t\t const struct dsync_mailbox_node
      *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_mailbox_tree_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ibc
    - name_r
    - node_r
    argTypes:
    - struct dsync_ibc*
    - char***
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 86
    functionName: dsync_ibc_recv_mailbox_tree_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::recv_mailbox_tree_node
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_mailbox_tree_node(struct dsync_ibc
      *ibc,\n\t\t\t\t const char *const **name_r,\n\t\t\t\t const struct dsync_mailbox_node
      **node_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::send_mailbox_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ibc
    - deletes
    - count
    - hierarchy_sep
    - escape_char
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_delete*
    - unsigned int
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: dsync_ibc_send_mailbox_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::send_mailbox_deletes
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: "enum dsync_ibc_send_ret dsync_ibc_send_mailbox_deletes(struct dsync_ibc
      *ibc,\n\t\t\t       const struct dsync_mailbox_delete *deletes,\n\t\t\t       unsigned
      int count, char hierarchy_sep,\n\t\t\t       char escape_char)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_mailbox_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ibc
    - deletes_r
    - count_r
    - hierarchy_sep_r
    - escape_char_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_delete**
    - unsigned int*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: dsync_ibc_recv_mailbox_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::recv_mailbox_deletes
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_mailbox_deletes(struct dsync_ibc
      *ibc,\n\t\t\t       const struct dsync_mailbox_delete **deletes_r,\n\t\t\t       unsigned
      int *count_r, char *hierarchy_sep_r,\n\t\t\t       char *escape_char_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::send_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - dsync_box
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 117
    functionName: dsync_ibc_send_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 0
    functionsReached:
    - struct dsync_ibc*::v::send_mailbox
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: "enum dsync_ibc_send_ret dsync_ibc_send_mailbox(struct dsync_ibc *ibc,\n\t\t
      \      const struct dsync_mailbox *dsync_box)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - dsync_box_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: dsync_ibc_recv_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::recv_mailbox
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_mailbox(struct dsync_ibc *ibc,\n\t\t
      \      const struct dsync_mailbox **dsync_box_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::send_mailbox_attribute
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - attr
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 134
    functionName: ATTR_NOWARN_UNUSED_RESULT::dsync_ibc_send_mailbox_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 0
    functionsReached:
    - struct dsync_ibc*::v::send_mailbox_attribute
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: "enum dsync_ibc_send_ret ATTR_NOWARN_UNUSED_RESULT\ndsync_ibc_send_mailbox_attribute(struct
      dsync_ibc *ibc,\n\t\t\t\t const struct dsync_mailbox_attribute *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_mailbox_attribute
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - attr_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_attribute**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: dsync_ibc_recv_mailbox_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::recv_mailbox_attribute
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_mailbox_attribute(struct dsync_ibc
      *ibc,\n\t\t\t\t const struct dsync_mailbox_attribute **attr_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:149,1
    - Dst: struct dsync_ibc*::v::send_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ibc
    - change
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 153
    functionName: dsync_ibc_send_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::send_change
    - i_assert
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: "enum dsync_ibc_send_ret dsync_ibc_send_change(struct dsync_ibc *ibc,\n\t\t
      \     const struct dsync_mail_change *change)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_change
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - change_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_change**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: dsync_ibc_recv_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::recv_change
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_change(struct dsync_ibc *ibc,\n\t\t
      \     const struct dsync_mail_change **change_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:168,1
    - Dst: struct dsync_ibc*::v::send_mail_request
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ibc
    - request
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: dsync_ibc_send_mail_request
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::send_mail_request
    - i_assert
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: "enum dsync_ibc_send_ret dsync_ibc_send_mail_request(struct dsync_ibc
      *ibc,\n\t\t\t    const struct dsync_mail_request *request)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_mail_request
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - request_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: dsync_ibc_recv_mail_request
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::recv_mail_request
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_mail_request(struct dsync_ibc
      *ibc,\n\t\t\t    const struct dsync_mail_request **request_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:186,1
    - Dst: struct dsync_ibc*::v::send_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ibc
    - mail
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 190
    functionName: dsync_ibc_send_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - i_assert
    - struct dsync_ibc*::v::send_mail
    linkageType: ''
    returnType: enum dsync_ibc_send_ret
    signature: enum dsync_ibc_send_ret dsync_ibc_send_mail(struct dsync_ibc *ibc,
      const struct dsync_mail *mail)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_mail
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - mail_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: dsync_ibc_recv_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::recv_mail
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: enum dsync_ibc_recv_ret dsync_ibc_recv_mail(struct dsync_ibc *ibc,
      struct dsync_mail **mail_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::send_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ibc
    - error
    - mail_error
    - require_full_resync
    argTypes:
    - struct dsync_ibc*
    - char*
    - enum mail_error
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 205
    functionName: dsync_ibc_send_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::send_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_send_finish(struct dsync_ibc *ibc, const char *error,\n\t\t\t
      \  enum mail_error mail_error,\n\t\t\t   bool require_full_resync)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::recv_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ibc
    - error_r
    - mail_error_r
    - require_full_resync_r
    argTypes:
    - struct dsync_ibc*
    - char**
    - enum mail_error*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 214
    functionName: dsync_ibc_recv_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::recv_finish
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_recv_finish(struct dsync_ibc *ibc,
      const char **error_r,\n\t\t      enum mail_error *mail_error_r,\n\t\t      bool
      *require_full_resync_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::close_mail_streams
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: dsync_ibc_close_mail_streams
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::close_mail_streams
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_close_mail_streams(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 224
    functionName: dsync_ibc_has_failed
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_has_failed(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: dsync_ibc_has_timed_out
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_has_timed_out(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::is_send_queue_full
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 234
    functionName: dsync_ibc_is_send_queue_full
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::is_send_queue_full
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_is_send_queue_full(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dsync_ibc*::v::has_pending_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: dsync_ibc_has_pending_data
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc.c
    functionUses: 1
    functionsReached:
    - struct dsync_ibc*::v::has_pending_data
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_has_pending_data(struct dsync_ibc *ibc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:20,1
    - Dst: dsync_mailbox_name_to_parts
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:24,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:26,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:30,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:32,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:34,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:36,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:36,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:37,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ns
    - old_vname
    - alt_char
    argTypes:
    - struct mail_namespace*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 38
    functionName: dsync_mailbox_tree_name_unescape
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_name_to_parts
    - mail_namespace_get_sep
    - t_str_new
    - str_c
    - str_append_c
    - str_len
    - str_truncate
    linkageType: ''
    returnType: char
    signature: "char *\ndsync_mailbox_tree_name_unescape(struct mail_namespace *ns,\n\t\t\t\t
      const char *old_vname, char alt_char)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DSYNC_LIST_CONTEXT
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:49,1
    - Dst: dsync_mailbox_tree_name_unescape
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:54,1
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:57,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:61,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:64,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - tree
    - info
    - alt_char
    - event
    - node_r
    argTypes:
    - struct dsync_mailbox_tree*
    - struct mailbox_info*
    - char
    - struct event*
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 71
    functionName: dsync_mailbox_tree_add_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - DSYNC_LIST_CONTEXT
    - dsync_mailbox_tree_name_unescape
    - dsync_mailbox_tree_get
    - e_error
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_add_node(struct dsync_mailbox_tree *tree,\n\t\t\t
      \   const struct mailbox_info *info,\n\t\t\t    char alt_char, struct event
      *event,\n\t\t\t    struct dsync_mailbox_node **node_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_add_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - tree
    - info
    - node_r
    - alt_char
    - event
    - error_r
    argTypes:
    - struct dsync_mailbox_tree*
    - struct mailbox_info*
    - struct dsync_mailbox_node**
    - char
    - struct event*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 4
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: dsync_mailbox_tree_add_exists_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_add_node
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_add_exists_node(struct dsync_mailbox_tree *tree,\n\t\t\t\t
      \  const struct mailbox_info *info,\n\t\t\t\t   struct dsync_mailbox_node **node_r,\n\t\t\t\t
      \  char alt_char, struct event *event,\n\t\t\t\t   enum mail_error *error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:94,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:96,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:99,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:99,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:104,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:108,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - box
    - metadata_r
    - status_r
    argTypes:
    - struct mailbox*
    - struct mailbox_metadata*
    - struct mailbox_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 88
    functionDepth: 11
    functionLinenumber: 88
    functionLinenumberEnd: 110
    functionName: dsync_mailbox_tree_get_selectable
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - mailbox_get_status
    - mailbox_sync
    - i_assert
    - mailbox_get_metadata
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_get_selectable(struct mailbox *box,\n\t\t\t\t
      \ struct mailbox_metadata *metadata_r,\n\t\t\t\t  struct mailbox_status *status_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:130,1
    - Dst: dsync_mailbox_tree_add_exists_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:131,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:136,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:137,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:140,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:142,1
    - Dst: dsync_mailbox_tree_add_exists_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:143,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:149,1
    - Dst: dsync_mailbox_tree_get_selectable
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:151,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:153,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:163,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:168,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:171,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:173,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:174,1
    - Dst: dsync_mailbox_tree_add_exists_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:178,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:181,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 6
    argNames:
    - tree
    - info
    - box_guid
    - alt_char
    - event
    - error_r
    argTypes:
    - struct dsync_mailbox_tree*
    - struct mailbox_info*
    - guid_128_t
    - char
    - struct event*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 112
    functionDepth: 12
    functionLinenumber: 112
    functionLinenumberEnd: 186
    functionName: dsync_mailbox_tree_add
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_assert
    - mailbox_free
    - mailbox_get_last_internal_error
    - guid_128_equals
    - dsync_mailbox_tree_get_selectable
    - e_error
    - mailbox_alloc
    - dsync_mailbox_tree_add_exists_node
    - guid_128_is_empty
    - mailbox_exists
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_add(struct dsync_mailbox_tree *tree,\n\t\t\t\t
      \ const struct mailbox_info *info,\n\t\t\t\t  const guid_128_t box_guid,\n\t\t\t\t
      \ char alt_char, struct event *event,\n\t\t\t\t  enum mail_error *error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:194,1
    - Dst: dsync_mailbox_tree_build_name128_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:195,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - tree
    - ns
    - sha128
    argTypes:
    - struct dsync_mailbox_tree*
    - struct mail_namespace*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 4
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: dsync_mailbox_tree_find_sha
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - hash_table_is_created
    - dsync_mailbox_tree_build_name128_hash
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\ndsync_mailbox_tree_find_sha(struct dsync_mailbox_tree
      *tree,\n\t\t\t    struct mail_namespace *ns, const guid_128_t sha128)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_list_get_changelog
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:214,1
    - Dst: mailbox_log_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:218,1
    - Dst: mailbox_log_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:219,1
    - Dst: dsync_mailbox_tree_find_sha
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:223,1
    - Dst: mailbox_log_record_get_timestamp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:225,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:229,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:234,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:237,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:249,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:252,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:280,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:283,1
    - Dst: mailbox_log_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:287,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:288,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 59
    argCount: 3
    argNames:
    - tree
    - ns
    - event
    argTypes:
    - struct dsync_mailbox_tree*
    - struct mail_namespace*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 201
    functionDepth: 6
    functionLinenumber: 201
    functionLinenumberEnd: 293
    functionName: dsync_mailbox_tree_add_change_timestamps
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - memcpy
    - mailbox_list_get_changelog
    - array_append_space
    - mailbox_log_iter_next
    - dsync_mailbox_tree_find_sha
    - e_error
    - mailbox_log_iter_deinit
    - mailbox_log_record_get_timestamp
    - mailbox_log_iter_init
    - hash_table_lookup
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_add_change_timestamps(struct dsync_mailbox_tree
      *tree,\n\t\t\t\t\t struct mail_namespace *ns,\n\t\t\t\t\t struct event *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:307,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:308,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:312,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:312,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:313,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:318,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:319,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:321,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:322,1
    - Dst: dsync_mailbox_node_get_full_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:323,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:324,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:326,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:327,1
    - Dst: mailbox_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:328,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:329,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:330,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:333,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:336,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - tree
    - node1
    - node2
    - event
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_node*
    - struct dsync_mailbox_node*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 295
    functionDepth: 8
    functionLinenumber: 295
    functionLinenumberEnd: 338
    functionName: dsync_mailbox_tree_fix_guid_duplicate
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - mailbox_update
    - memcpy
    - mailbox_free
    - mailbox_get_last_internal_error
    - guid_128_to_string
    - guid_128_generate
    - e_error
    - mailbox_alloc
    - dsync_mailbox_node_get_full_name
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_fix_guid_duplicate(struct dsync_mailbox_tree
      *tree,\n\t\t\t\t      struct dsync_mailbox_node *node1,\n\t\t\t\t      struct
      dsync_mailbox_node *node2,\n\t\t\t\t      struct event *event)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:353,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:357,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:369,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:373,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 3
    argNames:
    - info
    - box_name
    - exclude_mailboxes
    argTypes:
    - struct mailbox_info*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 378
    functionName: dsync_mailbox_info_is_wanted
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - str_array_icase_find
    - wildcard_match
    linkageType: ''
    returnType: bool
    signature: "bool dsync_mailbox_info_is_wanted(const struct mailbox_info *info,\n\t\t\t
      \    const char *box_name,\n\t\t\t     const char *const *exclude_mailboxes)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:404,1
    - Dst: mail_namespace_get_sep
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:404,1
    - Dst: t_strndup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:408,1
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:409,1
    - Dst: dsync_mailbox_tree_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:416,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:424,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:425,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:426,1
    - Dst: dsync_mailbox_info_is_wanted
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:426,1
    - Dst: if
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:428,1
    - Dst: dsync_mailbox_tree_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:428,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:433,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:434,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:435,1
    - Dst: mailbox_list_iter_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:440,1
    - Dst: mailbox_list_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:441,1
    - Dst: dsync_mailbox_tree_add_node
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:442,1
    - Dst: mailbox_list_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:449,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:450,1
    - Dst: mailbox_list_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:451,1
    - Dst: dsync_mailbox_tree_build_guid_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:457,1
    - Dst: dsync_mailbox_tree_fix_guid_duplicate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:459,1
    - Dst: dsync_mailbox_tree_add_change_timestamps
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c:465,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 8
    argNames:
    - tree
    - ns
    - box_name
    - box_guid
    - exclude_mailboxes
    - alt_char
    - event
    - error_r
    argTypes:
    - struct dsync_mailbox_tree*
    - struct mail_namespace*
    - char*
    - guid_128_t
    - char**
    - char
    - struct event*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 380
    functionDepth: 13
    functionLinenumber: 380
    functionLinenumberEnd: 468
    functionName: dsync_mailbox_tree_fill
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c
    functionUses: 1
    functionsReached:
    - mail_namespace_get_sep
    - mailbox_list_get_last_internal_error
    - dsync_mailbox_tree_add_node
    - mailbox_list_iter_deinit
    - dsync_mailbox_tree_build_guid_hash
    - dsync_mailbox_tree_get
    - mailbox_list_iter_next
    - t_strndup
    - if
    - e_error
    - mailbox_list_iter_init
    - dsync_mailbox_tree_fix_guid_duplicate
    - dsync_mailbox_tree_add_change_timestamps
    - i_assert
    - dsync_mailbox_info_is_wanted
    - dsync_mailbox_tree_add
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_tree_fill(struct dsync_mailbox_tree *tree,\n\t\t\t
      \   struct mail_namespace *ns, const char *box_name,\n\t\t\t    const guid_128_t
      box_guid,\n\t\t\t    const char *const *exclude_mailboxes,\n\t\t\t    char alt_char,
      struct event *event,\n\t\t\t    enum mail_error *error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: DSYNC_LIST_CONTEXT
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DSYNC_LIST_CONTEXT(obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:70,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:72,1
    - Dst: array_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:75,1
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - pipe
    argTypes:
    - struct dsync_ibc_pipe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 78
    functionName: dsync_ibc_pipe_get_pool
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - pool_alloconly_create
    - array_delete
    - p_clear
    linkageType: ''
    returnType: pool_t
    signature: pool_t dsync_ibc_pipe_get_pool(struct dsync_ibc_pipe *pipe)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:85,1
    - Dst: dsync_ibc_pipe_get_pool
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - pipe
    - type
    argTypes:
    - struct dsync_ibc_pipe*
    - enum item_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 105
    functionName: ATTR_NOWARN_UNUSED_RESULT::dsync_ibc_pipe_push_item
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_get_pool
    - array_append_space
    linkageType: ''
    returnType: struct item
    signature: 'struct item * ATTR_NOWARN_UNUSED_RESULT

      dsync_ibc_pipe_push_item(struct dsync_ibc_pipe *pipe, enum item_type type)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:112,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:116,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:118,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - pipe
    - type
    argTypes:
    - struct dsync_ibc_pipe*
    - enum item_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 124
    functionName: dsync_ibc_pipe_pop_item
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - array_pop_front
    - pool_unref
    - array_count
    - i_assert
    linkageType: ''
    returnType: struct item
    signature: 'struct item *

      dsync_ibc_pipe_pop_item(struct dsync_ibc_pipe *pipe, enum item_type type)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:130,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:133,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pipe
    argTypes:
    - struct dsync_ibc_pipe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: dsync_ibc_pipe_try_pop_eol
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_pop_front
    - array_front
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_pipe_try_pop_eol(struct dsync_ibc_pipe *pipe)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:148,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:152,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:153,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:154,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:156,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:157,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:158,1
    - Dst: array_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:159,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 161
    functionName: dsync_ibc_pipe_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - i_free
    - array_foreach_elem
    - pool_unref
    - array_foreach_modifiable
    - i_assert
    - array_free
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_pipe_deinit(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:170,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:173,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:174,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:175,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:177,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:178,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - ibc
    - set
    argTypes:
    - struct dsync_ibc*
    - struct dsync_ibc_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 184
    functionName: dsync_ibc_pipe_send_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_strdup
    - dsync_ibc_pipe_push_item
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_handshake(struct dsync_ibc *ibc,\n\t\t\t
      \     const struct dsync_ibc_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ibc
    - set_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_ibc_settings**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 199
    functionName: dsync_ibc_pipe_recv_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_handshake(struct dsync_ibc
      *ibc,\n\t\t\t      const struct dsync_ibc_settings **set_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: dsync_ibc_pipe_is_send_queue_full
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_pipe_is_send_queue_full(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: dsync_ibc_pipe_has_pending_data
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_pipe_has_pending_data(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ibc
    - ATTR_UNUSED
    argTypes:
    - struct dsync_ibc*
    - enum dsync_ibc_eol_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 222
    functionName: dsync_ibc_pipe_send_end_of_list
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_end_of_list(struct dsync_ibc *ibc,\n\t\t\t\tenum
      dsync_ibc_eol_type type ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ibc
    - state
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 233
    functionName: dsync_ibc_pipe_send_mailbox_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_mailbox_state(struct dsync_ibc *ibc,\n\t\t\t\t
      \ const struct dsync_mailbox_state *state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_try_pop_eol
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:242,1
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ibc
    - state_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 251
    functionName: dsync_ibc_pipe_recv_mailbox_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    - dsync_ibc_pipe_try_pop_eol
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_mailbox_state(struct dsync_ibc
      *ibc,\n\t\t\t\t  struct dsync_mailbox_state *state_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:261,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:264,1
    - Dst: dsync_mailbox_node_copy_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ibc
    - name
    - node
    argTypes:
    - struct dsync_ibc*
    - char**
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 266
    functionName: dsync_ibc_pipe_send_mailbox_tree_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_node_copy_data
    - dsync_ibc_pipe_push_item
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_mailbox_tree_node(struct dsync_ibc *ibc,\n\t\t\t\t
      \     const char *const *name,\n\t\t\t\t      const struct dsync_mailbox_node
      *node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_try_pop_eol
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:276,1
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ibc
    - name_r
    - node_r
    argTypes:
    - struct dsync_ibc*
    - char***
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 288
    functionName: dsync_ibc_pipe_recv_mailbox_tree_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    - dsync_ibc_pipe_try_pop_eol
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_mailbox_tree_node(struct
      dsync_ibc *ibc,\n\t\t\t\t      const char *const **name_r,\n\t\t\t\t      const
      struct dsync_mailbox_node **node_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - ibc
    - deletes
    - count
    - hierarchy_sep
    - escape_char
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_delete*
    - unsigned int
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 307
    functionName: dsync_ibc_pipe_send_mailbox_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_mailbox_deletes(struct dsync_ibc *ibc,\n\t\t\t\t
      \   const struct dsync_mailbox_delete *deletes,\n\t\t\t\t    unsigned int count,
      char hierarchy_sep,\n\t\t\t\t    char escape_char)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_try_pop_eol
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:319,1
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - ibc
    - deletes_r
    - count_r
    - hierarchy_sep_r
    - escape_char_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_delete**
    - unsigned int*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 331
    functionName: dsync_ibc_pipe_recv_mailbox_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    - dsync_ibc_pipe_try_pop_eol
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_mailbox_deletes(struct
      dsync_ibc *ibc,\n\t\t\t\t    const struct dsync_mailbox_delete **deletes_r,\n\t\t\t\t
      \   unsigned int *count_r,\n\t\t\t\t    char *hierarchy_sep_r,\n\t\t\t\t    char
      *escape_char_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:342,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:344,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:345,1
    - Dst: array_foreach
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:346,1
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:347,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ibc
    - dsync_box
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 352
    functionName: dsync_ibc_pipe_send_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - p_array_init
    - array_foreach
    - array_count
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_mailbox(struct dsync_ibc *ibc,\n\t\t\t    const
      struct dsync_mailbox *dsync_box)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_try_pop_eol
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:361,1
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ibc
    - dsync_box_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 370
    functionName: dsync_ibc_pipe_recv_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    - dsync_ibc_pipe_try_pop_eol
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_mailbox(struct dsync_ibc
      *ibc,\n\t\t\t    const struct dsync_mailbox **dsync_box_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:379,1
    - Dst: dsync_mailbox_attribute_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ibc
    - attr
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 381
    functionName: dsync_ibc_pipe_send_mailbox_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_attribute_dup
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_mailbox_attribute(struct dsync_ibc *ibc,\n\t\t\t\t
      \     const struct dsync_mailbox_attribute *attr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_try_pop_eol
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:390,1
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ibc
    - attr_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_attribute**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 399
    functionName: dsync_ibc_pipe_recv_mailbox_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    - dsync_ibc_pipe_try_pop_eol
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_mailbox_attribute(struct
      dsync_ibc *ibc,\n\t\t\t\t      const struct dsync_mailbox_attribute **attr_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:408,1
    - Dst: dsync_mail_change_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ibc
    - change
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 401
    functionDepth: 3
    functionLinenumber: 401
    functionLinenumberEnd: 410
    functionName: dsync_ibc_pipe_send_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_mail_change_dup
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_change(struct dsync_ibc *ibc,\n\t\t\t   const
      struct dsync_mail_change *change)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_try_pop_eol
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:419,1
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ibc
    - change_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_change**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 412
    functionDepth: 2
    functionLinenumber: 412
    functionLinenumberEnd: 428
    functionName: dsync_ibc_pipe_recv_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    - dsync_ibc_pipe_try_pop_eol
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_change(struct dsync_ibc
      *ibc,\n\t\t\t   const struct dsync_mail_change **change_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:437,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ibc
    - request
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 440
    functionName: dsync_ibc_pipe_send_mail_request
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_mail_request(struct dsync_ibc *ibc,\n\t\t\t\t
      const struct dsync_mail_request *request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_try_pop_eol
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:449,1
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ibc
    - request_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 458
    functionName: dsync_ibc_pipe_recv_mail_request
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    - dsync_ibc_pipe_try_pop_eol
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_mail_request(struct dsync_ibc
      *ibc,\n\t\t\t\t const struct dsync_mail_request **request_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:466,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:467,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:469,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ibc
    - mail
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 478
    functionName: dsync_ibc_pipe_send_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_stream_ref
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_pipe_send_mail(struct dsync_ibc *ibc, const struct dsync_mail
      *mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_try_pop_eol
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:486,1
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ibc
    - mail_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 495
    functionName: dsync_ibc_pipe_recv_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    - dsync_ibc_pipe_try_pop_eol
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_mail(struct dsync_ibc *ibc,
      struct dsync_mail **mail_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_push_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:505,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ibc
    - error
    - mail_error
    - require_full_resync
    argTypes:
    - struct dsync_ibc*
    - char*
    - enum mail_error
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 509
    functionName: dsync_ibc_pipe_send_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - dsync_ibc_pipe_push_item
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_pipe_send_finish(struct dsync_ibc *ibc, const char
      *error,\n\t\t\t   enum mail_error mail_error,\n\t\t\t   bool require_full_resync)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_pop_item
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ibc
    - error_r
    - mail_error_r
    - require_full_resync_r
    argTypes:
    - struct dsync_ibc*
    - char**
    - enum mail_error*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 511
    functionDepth: 2
    functionLinenumber: 511
    functionLinenumberEnd: 527
    functionName: dsync_ibc_pipe_recv_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_pipe_pop_item
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_pipe_recv_finish(struct dsync_ibc
      *ibc, const char **error_r,\n\t\t\t   enum mail_error *mail_error_r,\n\t\t\t
      \  bool *require_full_resync_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:533,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:534,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pipe
    argTypes:
    - struct dsync_ibc_pipe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 539
    functionName: pipe_close_mail_streams
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - array_count
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void pipe_close_mail_streams(struct dsync_ibc_pipe *pipe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pipe_close_mail_streams
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:545,1
    - Dst: pipe_close_mail_streams
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 547
    functionName: dsync_ibc_pipe_close_mail_streams
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - pipe_close_mail_streams
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_pipe_close_mail_streams(struct dsync_ibc *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:582,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:584,1
    - Dst: i_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 587
    functionName: dsync_ibc_pipe_alloc
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct dsync_ibc_pipe
    signature: 'struct dsync_ibc_pipe *

      dsync_ibc_pipe_alloc(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_pipe_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:593,1
    - Dst: dsync_ibc_pipe_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c:594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ibc1_r
    - ibc2_r
    argTypes:
    - struct dsync_ibc**
    - struct dsync_ibc**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 599
    functionName: dsync_ibc_init_pipe
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-pipe.c
    functionUses: 1
    functionsReached:
    - dsync_ibc_pipe_alloc
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_init_pipe(struct dsync_ibc **ibc1_r, struct dsync_ibc
      **ibc2_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:31,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - names
    - name
    - idx_r
    argTypes:
    - char**
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 37
    functionName: field_find
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 6
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool field_find(const char *const *names, const char *name,\n\t\t
      \      unsigned int *idx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:51,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:52,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:54,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:55,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:59,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:60,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:62,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:65,1
    - Dst: field_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:66,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:68,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 5
    argNames:
    - name
    - required_fields
    - header_line
    - deserializer_r
    - error_r
    argTypes:
    - char*
    - char**
    - char*
    - struct dsync_deserializer**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 79
    functionName: dsync_deserializer_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - field_find
    - p_strsplit_tabescaped
    - str_array_length
    - t_strdup_printf
    - pool_unref
    linkageType: ''
    returnType: int
    signature: "int dsync_deserializer_init(const char *name, const char *const *required_fields,\n\t\t\t
      \   const char *header_line,\n\t\t\t    struct dsync_deserializer **deserializer_r,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _deserializer
    argTypes:
    - struct dsync_deserializer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: dsync_deserializer_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void dsync_deserializer_deinit(struct dsync_deserializer **_deserializer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:102,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:103,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:106,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:125,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:127,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - deserializer
    - input
    - decoder_r
    - error_r
    argTypes:
    - struct dsync_deserializer*
    - char*
    - struct dsync_deserializer_decoder**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 135
    functionName: dsync_deserializer_decode_begin
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_strsplit_tabescaped
    - t_strdup_printf
    - pool_unref
    linkageType: ''
    returnType: int
    signature: "int dsync_deserializer_decode_begin(struct dsync_deserializer *deserializer,\n\t\t\t\t
      \   const char *input,\n\t\t\t\t    struct dsync_deserializer_decoder **decoder_r,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - deserializer
    - key
    - idx_r
    argTypes:
    - struct dsync_deserializer*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 150
    functionName: dsync_deserializer_find_field
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool dsync_deserializer_find_field(struct dsync_deserializer *deserializer,\n\t\t\t
      \     const char *key, unsigned int *idx_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_deserializer_find_field
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - decoder
    - key
    - value_r
    argTypes:
    - struct dsync_deserializer_decoder*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 165
    functionName: dsync_deserializer_decode_try
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 0
    functionsReached:
    - dsync_deserializer_find_field
    linkageType: ''
    returnType: bool
    signature: "bool dsync_deserializer_decode_try(struct dsync_deserializer_decoder
      *decoder,\n\t\t\t\t   const char *key, const char **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:173,1
    - Dst: i_panic
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - decoder
    - key
    argTypes:
    - struct dsync_deserializer_decoder*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 178
    functionName: dsync_deserializer_decode_get
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 0
    functionsReached:
    - i_panic
    - dsync_deserializer_decode_try
    linkageType: ''
    returnType: char
    signature: "char *\ndsync_deserializer_decode_get(struct dsync_deserializer_decoder
      *decoder,\n\t\t\t      const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - decoder
    argTypes:
    - struct dsync_deserializer_decoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: dsync_deserializer_decoder_get_name
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      dsync_deserializer_decoder_get_name(struct dsync_deserializer_decoder *decoder)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _decoder
    argTypes:
    - struct dsync_deserializer_decoder**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 193
    functionName: dsync_deserializer_decode_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-deserializer.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void dsync_deserializer_decode_finish(struct dsync_deserializer_decoder
      **_decoder)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:28,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:29,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:32,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:33,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - keys
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 39
    functionName: dsync_serializer_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-serializer.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - str_array_length
    - p_new
    linkageType: ''
    returnType: struct dsync_serializer
    signature: struct dsync_serializer *dsync_serializer_init(const char *const keys[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _serializer
    argTypes:
    - struct dsync_serializer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: dsync_serializer_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-serializer.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void dsync_serializer_deinit(struct dsync_serializer **_serializer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:53,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:58,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:59,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:61,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - struct dsync_serializer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 63
    functionName: dsync_serializer_encode_header_line
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-serializer.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_tabescaped
    - str_append_c
    linkageType: ''
    returnType: char
    signature: 'char *

      dsync_serializer_encode_header_line(struct dsync_serializer *serializer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:69,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:71,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - struct dsync_serializer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 76
    functionName: dsync_serializer_encode_begin
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-serializer.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct dsync_serializer_encoder
    signature: 'struct dsync_serializer_encoder *

      dsync_serializer_encode_begin(struct dsync_serializer *serializer)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:84,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:85,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:86,1
    - Dst: i_panic
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - encoder
    - key
    - value
    argTypes:
    - struct dsync_serializer_encoder*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: dsync_serializer_encode_add
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-serializer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - i_panic
    - array_idx_set
    linkageType: ''
    returnType: void
    signature: "void dsync_serializer_encode_add(struct dsync_serializer_encoder *encoder,\n\t\t\t\t
      const char *key, const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:102,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:105,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:107,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:110,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:111,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:114,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-serializer.c:116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - _encoder
    - output
    argTypes:
    - struct dsync_serializer_encoder**
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 117
    functionName: dsync_serializer_encode_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-serializer.c
    functionUses: 0
    functionsReached:
    - array_get
    - str_append_tabescaped
    - str_append_c
    - pool_unref
    linkageType: ''
    returnType: void
    signature: "void dsync_serializer_encode_finish(struct dsync_serializer_encoder
      **_encoder,\n\t\t\t\t    string_t *output)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 190
    functionName: dsync_ibc_stream_get_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *dsync_ibc_stream_get_state(struct dsync_ibc_stream *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_close
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:195,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:196,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 198
    functionName: dsync_ibc_stream_stop
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_stream_close
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_stream_stop(struct dsync_ibc_stream *ibc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:203,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:204,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:205,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:208,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:209,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:210,1
    - Dst: dsync_ibc_stream_get_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:211,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:212,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:216,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 223
    functionName: dsync_ibc_stream_read_mail_stream
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_get_data_size
    - i_error
    - i_stream_skip
    - i_stream_get_error
    - dsync_ibc_stream_get_state
    - i_stream_seek
    - dsync_ibc_stream_stop
    - i_stream_get_name
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int dsync_ibc_stream_read_mail_stream(struct dsync_ibc_stream *ibc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:227,1
    - Dst: dsync_ibc_stream_read_mail_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:229,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:232,1
    - Dst: struct dsync_ibc_stream*::ibc::io_callback
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:233,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 235
    functionName: dsync_ibc_stream_input
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - struct dsync_ibc_stream*::ibc::io_callback
    - o_stream_uncork
    - dsync_ibc_stream_read_mail_stream
    - timeout_reset
    - o_stream_cork
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_stream_input(struct dsync_ibc_stream *ibc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:244,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:257,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:259,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:262,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:263,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:264,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:269,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:275,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:279,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:282,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:283,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:284,1
    - Dst: dsync_ibc_stream_get_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:285,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:286,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:292,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:293,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 295
    functionName: dsync_ibc_stream_send_value_stream
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_stream_skip
    - i_stream_get_error
    - o_stream_set_flush_pending
    - dsync_ibc_stream_get_state
    - o_stream_nsend
    - o_stream_get_buffer_used_size
    - dsync_ibc_stream_stop
    - i_stream_unref
    - o_stream_flush
    - i_stream_get_name
    - o_stream_nsend_str
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int dsync_ibc_stream_send_value_stream(struct dsync_ibc_stream *ibc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:302,1
    - Dst: dsync_ibc_stream_send_value_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:305,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:308,1
    - Dst: dsync_ibc_is_send_queue_full
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:310,1
    - Dst: struct dsync_ibc_stream*::ibc::io_callback
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:311,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 297
    functionDepth: 3
    functionLinenumber: 297
    functionLinenumberEnd: 313
    functionName: dsync_ibc_stream_output
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - struct dsync_ibc_stream*::ibc::io_callback
    - dsync_ibc_stream_send_value_stream
    - timeout_reset
    - dsync_ibc_is_send_queue_full
    - o_stream_flush
    linkageType: ''
    returnType: int
    signature: int dsync_ibc_stream_output(struct dsync_ibc_stream *ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:317,1
    - Dst: dsync_ibc_stream_get_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:318,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 321
    functionName: dsync_ibc_stream_timeout
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_stream_get_state
    - i_error
    - dsync_ibc_stream_stop
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_stream_timeout(struct dsync_ibc_stream *ibc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_add_istream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:327,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:328,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:329,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:330,1
    - Dst: timeout_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:331,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:333,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:334,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:341,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:344,1
    - Dst: dsync_serializer_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:347,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:347,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:348,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:349,1
    - Dst: dsync_serializer_encode_header_line
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 352
    functionName: dsync_ibc_stream_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 2
    functionsReached:
    - io_add_istream
    - timeout_add
    - o_stream_cork
    - dsync_serializer_init
    - io_set_pending
    - o_stream_set_no_error_handling
    - o_stream_nsend
    - t_strsplit_spaces
    - o_stream_nsend_str
    - o_stream_set_flush_callback
    - i_assert
    - t_strconcat
    - dsync_serializer_encode_header_line
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_stream_init(struct dsync_ibc_stream *ibc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsync_serializer_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:364,1
    - Dst: dsync_deserializer_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:366,1
    - Dst: dsync_deserializer_decode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:369,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:371,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:386,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:387,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:389,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:392,1
    - Dst: io_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:393,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:394,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:395,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:396,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:397,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:398,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:399,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - _ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 400
    functionName: dsync_ibc_stream_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dsync_deserializer_deinit
    - io_remove
    - i_stream_destroy
    - t_strdup_printf
    - o_stream_finish
    - pool_unref
    - i_stream_unref
    - dsync_deserializer_decode_finish
    - o_stream_nsend_str
    - dsync_serializer_deinit
    - i_free
    - o_stream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_stream_deinit(struct dsync_ibc *_ibc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:409,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:415,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:418,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:420,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:421,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:423,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:424,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:426,1
    - Dst: dsync_ibc_stream_get_state
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:426,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:427,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:427,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:428,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:431,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:432,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - ibc
    - line_r
    argTypes:
    - struct dsync_ibc_stream*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 439
    functionName: dsync_ibc_stream_next_line
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - i_assert
    - i_error
    - i_stream_next_line
    - i_stream_get_error
    - dsync_ibc_stream_get_state
    - dsync_ibc_stream_stop
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: "int dsync_ibc_stream_next_line(struct dsync_ibc_stream *ibc,\n\t\t\t\t
      \     const char **line_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:449,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:450,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:452,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:454,1
    - Dst: dsync_deserializer_decoder_get_name
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:455,1
    - Dst: va_end
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:457,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ibc
    - decoder
    - fmt
    argTypes:
    - struct dsync_ibc_stream*
    - struct dsync_deserializer_decoder*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 460
    functionName: dsync_ibc_input_error
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - i_error
    - va_start
    - dsync_deserializer_decoder_get_name
    - t_strdup_vprintf
    - dsync_ibc_stream_stop
    - va_end
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_input_error(struct dsync_ibc_stream *ibc,\n\t\t      struct
      dsync_deserializer_decoder *decoder,\n\t\t      const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:466,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:467,1
    - Dst: str_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:467,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ibc
    - str
    argTypes:
    - struct dsync_ibc_stream*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 468
    functionName: dsync_ibc_stream_send_string
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    - i_assert
    - str_data
    - str_len
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_string(struct dsync_ibc_stream *ibc,\n\t\t\t
      \    const string_t *str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:476,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:477,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:478,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:480,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:480,1
    - Dst: i_unlink
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:485,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:485,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:487,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - path_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 493
    functionName: seekable_fd_callback
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_error
    - i_close_fd
    - i_unlink
    - str_append
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: int seekable_fd_callback(const char **path_r, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:500,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:503,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 495
    functionDepth: 2
    functionLinenumber: 495
    functionLinenumberEnd: 508
    functionName: dsync_ibc_stream_input_stream
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - i_stream_create_dot
    - i_stream_create_seekable
    - i_stream_unref
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      dsync_ibc_stream_input_stream(struct dsync_ibc_stream *ibc)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:521,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - ibc
    argTypes:
    - struct dsync_ibc_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 510
    functionDepth: 3
    functionLinenumber: 510
    functionLinenumberEnd: 528
    functionName: dsync_ibc_check_missing_deserializers
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_input_error
    linkageType: ''
    returnType: int
    signature: int dsync_ibc_check_missing_deserializers(struct dsync_ibc_stream *ibc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: version_string_verify_full
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:541,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:544,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:552,1
    - Dst: dsync_ibc_check_missing_deserializers
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:554,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:573,1
    - Dst: dsync_deserializer_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:574,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:577,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - ibc
    - line
    argTypes:
    - struct dsync_ibc_stream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 530
    functionDepth: 4
    functionLinenumber: 530
    functionLinenumberEnd: 582
    functionName: dsync_ibc_stream_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dsync_deserializer_init
    - dsync_ibc_check_missing_deserializers
    - t_strsplit
    - dsync_ibc_input_error
    - version_string_verify_full
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_stream_handshake(struct dsync_ibc_stream *ibc, const
      char *line)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:592,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:594,1
    - Dst: dsync_ibc_stream_next_line
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:597,1
    - Dst: dsync_ibc_stream_handshake
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:599,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:604,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:614,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:625,1
    - Dst: dsync_deserializer_decode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:632,1
    - Dst: dsync_deserializer_decode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:633,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:636,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 3
    argNames:
    - ibc
    - item
    - decoder_r
    argTypes:
    - struct dsync_ibc_stream*
    - enum item_type
    - struct dsync_deserializer_decoder**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 584
    functionDepth: 5
    functionLinenumber: 584
    functionLinenumberEnd: 642
    functionName: dsync_ibc_stream_input_next
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dsync_deserializer_decode_begin
    - dsync_ibc_stream_handshake
    - timeout_reset
    - dsync_ibc_stream_next_line
    - dsync_ibc_stream_stop
    - dsync_deserializer_decode_finish
    - dsync_ibc_input_error
    - i_assert
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_input_next(struct dsync_ibc_stream
      *ibc, enum item_type item,\n\t\t\t    struct dsync_deserializer_decoder **decoder_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_serializer_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ibc
    - item
    argTypes:
    - struct dsync_ibc_stream*
    - enum item_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 644
    functionDepth: 2
    functionLinenumber: 644
    functionLinenumberEnd: 650
    functionName: dsync_ibc_send_encode_begin
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dsync_serializer_encode_begin
    linkageType: ''
    returnType: struct dsync_serializer_encoder
    signature: 'struct dsync_serializer_encoder *

      dsync_ibc_send_encode_begin(struct dsync_ibc_stream *ibc, enum item_type item)'
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:658,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:661,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:662,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:663,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:665,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:669,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:671,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:675,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:680,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:681,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:683,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:684,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:686,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:687,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:688,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:706,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:708,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:709,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:712,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:713,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:716,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:717,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:720,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:721,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:724,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:728,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:729,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:732,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:734,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:736,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:738,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:740,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:742,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:744,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:746,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:748,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:750,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:752,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:755,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:756,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:759,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:759,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:760,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:761,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 86
    argCount: 2
    argNames:
    - _ibc
    - set
    argTypes:
    - struct dsync_ibc*
    - struct dsync_ibc_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 652
    functionDepth: 3
    functionLinenumber: 652
    functionLinenumberEnd: 762
    functionName: dsync_ibc_stream_send_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - guid_128_to_string
    - t_strdup_printf
    - str_append_tabescaped
    - dsync_serializer_encode_finish
    - dsync_ibc_send_encode_begin
    - dsync_serializer_encode_add
    - dsync_ibc_stream_send_string
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_handshake(struct dsync_ibc *_ibc,\n\t\t\t\tconst
      struct dsync_ibc_settings *set)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:775,1
    - Dst: i_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:778,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:780,1
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:785,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:786,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:788,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:789,1
    - Dst: i_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:792,1
    - Dst: i_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:793,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:795,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:796,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:797,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:798,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:799,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:800,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:801,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:802,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:803,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:807,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:809,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:812,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:824,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:829,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:830,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:832,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:837,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:838,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:840,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:845,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:846,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:848,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:853,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:854,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:856,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:861,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:862,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:863,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:865,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:867,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:869,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:871,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:873,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:875,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:877,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:879,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:881,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:883,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:885,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:886,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 98
    argCount: 2
    argNames:
    - _ibc
    - set_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_ibc_settings**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 764
    functionDepth: 6
    functionLinenumber: 764
    functionLinenumberEnd: 892
    functionName: dsync_ibc_stream_recv_handshake
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - i_error
    - str_to_uint
    - dsync_deserializer_decode_get
    - dsync_deserializer_decode_try
    - p_strsplit_tabescaped
    - str_to_time
    - i_strdup
    - str_to_uoff
    - dsync_ibc_stream_input_next
    - guid_128_from_string
    - dsync_ibc_stream_stop
    - dsync_ibc_input_error
    - i_free
    - p_clear
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_handshake(struct dsync_ibc
      *_ibc,\n\t\t\t\tconst struct dsync_ibc_settings **set_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:900,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:912,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - _ibc
    - type
    argTypes:
    - struct dsync_ibc*
    - enum dsync_ibc_eol_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 894
    functionDepth: 1
    functionLinenumber: 894
    functionLinenumberEnd: 913
    functionName: dsync_ibc_stream_send_end_of_list
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_end_of_list(struct dsync_ibc *_ibc,\n\t\t\t\t
      \ enum dsync_ibc_eol_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:921,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:923,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:924,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:925,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:926,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:927,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:928,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:929,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:930,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:931,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:932,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:933,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:934,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:935,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:936,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:938,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:940,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:941,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - _ibc
    - state
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 915
    functionDepth: 3
    functionLinenumber: 915
    functionLinenumberEnd: 942
    functionName: dsync_ibc_stream_send_mailbox_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_str_new
    - str_append_c
    - guid_128_to_string
    - dsync_ibc_send_encode_begin
    - dsync_serializer_encode_add
    - dsync_ibc_stream_send_string
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_mailbox_state(struct dsync_ibc *_ibc,\n\t\t\t\t
      \   const struct dsync_mailbox_state *state)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:953,1
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:955,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:959,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:960,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:961,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:964,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:965,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:966,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:969,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:970,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:971,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:974,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:975,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:976,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:979,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:980,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:981,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:984,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:985,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:986,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:989,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 2
    argNames:
    - _ibc
    - state_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 944
    functionDepth: 6
    functionLinenumber: 944
    functionLinenumberEnd: 992
    functionName: dsync_ibc_stream_recv_mailbox_state
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dsync_deserializer_decode_get
    - dsync_deserializer_decode_try
    - str_to_uint32
    - dsync_ibc_stream_input_next
    - guid_128_from_string
    - str_to_uint64
    - dsync_ibc_input_error
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_mailbox_state(struct
      dsync_ibc *_ibc,\n\t\t\t\t    struct dsync_mailbox_state *state_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1003,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1005,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1006,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1011,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1013,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1014,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1016,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1016,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1018,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1019,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1019,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1022,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1025,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1028,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1032,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1033,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1034,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1037,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1038,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1041,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1042,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1045,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1046,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1049,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1050,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1053,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1054,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1055,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - _ibc
    - name
    - node
    argTypes:
    - struct dsync_ibc*
    - char**
    - struct dsync_mailbox_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 994
    functionDepth: 3
    functionLinenumber: 994
    functionLinenumberEnd: 1056
    functionName: dsync_ibc_stream_send_mailbox_tree_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - guid_128_to_string
    - dsync_serializer_encode_add
    - str_append_tabescaped
    - str_truncate
    - dsync_serializer_encode_finish
    - dsync_ibc_send_encode_begin
    - i_assert
    - dsync_ibc_stream_send_string
    - guid_128_is_empty
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_mailbox_tree_node(struct dsync_ibc *_ibc,\n\t\t\t\t\tconst
      char *const *name,\n\t\t\t\t\tconst struct dsync_mailbox_node *node)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1069,1
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1073,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1074,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1076,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1078,1
    - Dst: p_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1081,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1083,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1096,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1097,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1098,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1101,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1102,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1103,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1106,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1107,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1108,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1111,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1112,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1113,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1116,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1117,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1118,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1121,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 3
    argNames:
    - _ibc
    - name_r
    - node_r
    argTypes:
    - struct dsync_ibc*
    - char***
    - struct dsync_mailbox_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1058
    functionDepth: 6
    functionLinenumber: 1058
    functionLinenumberEnd: 1126
    functionName: dsync_ibc_stream_recv_mailbox_tree_node
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - p_new
    - dsync_deserializer_decode_get
    - dsync_deserializer_decode_try
    - p_strsplit_tabescaped
    - str_to_time
    - str_to_uint32
    - dsync_ibc_stream_input_next
    - guid_128_from_string
    - dsync_ibc_input_error
    - p_clear
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_mailbox_tree_node(struct
      dsync_ibc *_ibc,\n\t\t\t\t\tconst char *const **name_r,\n\t\t\t\t\tconst struct
      dsync_mailbox_node **node_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1137,1
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1140,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1140,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1141,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1144,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1145,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1145,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1146,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - str
    - encoder
    - deletes
    - count
    - key
    - type
    argTypes:
    - string_t*
    - struct dsync_serializer_encoder*
    - struct dsync_mailbox_delete*
    - unsigned int
    - char*
    - enum dsync_mailbox_delete_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1128
    functionDepth: 2
    functionLinenumber: 1128
    functionLinenumberEnd: 1148
    functionName: dsync_ibc_stream_encode_delete
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - str_len
    - guid_128_to_string
    - str_truncate
    - str_append
    - dsync_serializer_encode_add
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_encode_delete(string_t *str,\n\t\t\t       struct
      dsync_serializer_encoder *encoder,\n\t\t\t       const struct dsync_mailbox_delete
      *deletes,\n\t\t\t       unsigned int count, const char *key,\n\t\t\t       enum
      dsync_mailbox_delete_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1161,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1162,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1164,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1166,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1168,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1170,1
    - Dst: dsync_ibc_stream_encode_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1171,1
    - Dst: dsync_ibc_stream_encode_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1174,1
    - Dst: dsync_ibc_stream_encode_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1177,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1180,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 5
    argNames:
    - _ibc
    - deletes
    - count
    - hierarchy_sep
    - escape_char
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_delete*
    - unsigned int
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1150
    functionDepth: 3
    functionLinenumber: 1150
    functionLinenumberEnd: 1182
    functionName: dsync_ibc_stream_send_mailbox_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - dsync_ibc_stream_encode_delete
    - dsync_ibc_send_encode_begin
    - dsync_serializer_encode_add
    - dsync_ibc_stream_send_string
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_mailbox_deletes(struct dsync_ibc *_ibc,\n\t\t\t\t
      \     const struct dsync_mailbox_delete *deletes,\n\t\t\t\t      unsigned int
      count, char hierarchy_sep,\n\t\t\t\t      char escape_char)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1214,1
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1218,1
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1222,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1223,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1225,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1226,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1227,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1232,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1235,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1236,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1242,1
    - Dst: decode_mailbox_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1243,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1245,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1248,1
    - Dst: decode_mailbox_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1249,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1251,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1254,1
    - Dst: decode_mailbox_deletes
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1255,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1257,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1260,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 5
    argNames:
    - _ibc
    - deletes_r
    - count_r
    - hierarchy_sep_r
    - escape_char_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_delete**
    - unsigned int*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1206
    functionDepth: 6
    functionLinenumber: 1206
    functionLinenumberEnd: 1262
    functionName: dsync_ibc_stream_recv_mailbox_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - decode_mailbox_deletes
    - p_array_init
    - dsync_deserializer_decode_get
    - dsync_deserializer_decode_try
    - strlen
    - array_get
    - dsync_ibc_stream_input_next
    - ARRAY_TYPE
    - dsync_ibc_input_error
    - p_clear
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_mailbox_deletes(struct
      dsync_ibc *_ibc,\n\t\t\t\t      const struct dsync_mailbox_delete **deletes_r,\n\t\t\t\t
      \     unsigned int *count_r, char *hierarchy_sep_r,\n\t\t\t\t      char *escape_char_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1274,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1278,1
    - Dst: dsync_serializer_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1282,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1283,1
    - Dst: memset
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1285,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1286,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1297,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1300,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1302,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1303,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1305,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1309,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1309,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1311,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - ibc
    - dsync_box
    argTypes:
    - struct dsync_ibc_stream*
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1264
    functionDepth: 2
    functionLinenumber: 1264
    functionLinenumberEnd: 1312
    functionName: get_cache_fields
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - i_assert
    - ENUM_NEGATE
    - str_len
    - array_get
    - dsync_serializer_encode_begin
    - str_truncate
    - memset
    - dsync_serializer_encode_add
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: char
    signature: "char *\nget_cache_fields(struct dsync_ibc_stream *ibc,\n\t\t const
      struct dsync_mailbox *dsync_box)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1320,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1323,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1324,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1325,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1326,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1329,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1331,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1333,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1335,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1337,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1338,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1339,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1340,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1341,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1342,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1343,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1344,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1345,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1346,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1347,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1348,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1349,1
    - Dst: get_cache_fields
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1351,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1353,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1355,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1356,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - _ibc
    - dsync_box
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1314
    functionDepth: 3
    functionLinenumber: 1314
    functionLinenumberEnd: 1357
    functionName: dsync_ibc_stream_send_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_str_new
    - str_append_c
    - guid_128_to_string
    - get_cache_fields
    - dsync_ibc_send_encode_begin
    - dsync_serializer_encode_add
    - dsync_ibc_stream_send_string
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_mailbox(struct dsync_ibc *_ibc,\n\t\t\t
      \     const struct dsync_mailbox *dsync_box)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dsync_deserializer_decode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1368,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1370,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1375,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1376,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1377,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1379,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1391,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1399,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1400,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1401,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1404,1
    - Dst: dsync_deserializer_decode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1406,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - ibc
    - box
    - value
    argTypes:
    - struct dsync_ibc_stream*
    - struct dsync_mailbox*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1359
    functionDepth: 3
    functionLinenumber: 1359
    functionLinenumberEnd: 1408
    functionName: parse_cache_field
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - dsync_deserializer_decode_begin
    - dsync_deserializer_decode_get
    - dsync_deserializer_decode_try
    - array_push_back
    - str_to_time
    - dsync_deserializer_decode_finish
    - dsync_ibc_input_error
    linkageType: ''
    returnType: int
    signature: "int parse_cache_field(struct dsync_ibc_stream *ibc, struct dsync_mailbox
      *box,\n\t\t  const char *value)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1421,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1422,1
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1424,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1428,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1429,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1430,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1434,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1436,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1438,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1440,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1443,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1445,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1446,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1447,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1450,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1451,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1452,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1455,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1456,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1457,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1460,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1461,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1462,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1465,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1466,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1467,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1470,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1471,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1472,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1476,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1477,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1478,1
    - Dst: parse_cache_field
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1480,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 2
    argNames:
    - _ibc
    - dsync_box_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1410
    functionDepth: 6
    functionLinenumber: 1410
    functionLinenumberEnd: 1487
    functionName: dsync_ibc_stream_recv_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - p_new
    - p_array_init
    - dsync_deserializer_decode_get
    - dsync_deserializer_decode_try
    - str_to_uint32
    - t_strsplit
    - dsync_ibc_stream_input_next
    - guid_128_from_string
    - str_to_uint64
    - dsync_ibc_input_error
    - parse_cache_field
    - p_clear
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_mailbox(struct dsync_ibc
      *_ibc,\n\t\t\t      const struct dsync_mailbox **dsync_box_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1495,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1501,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1502,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1513,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1514,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1515,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1517,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1519,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1522,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1524,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1525,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1528,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1529,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1532,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1533,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1538,1
    - Dst: dsync_ibc_stream_send_value_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1539,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - _ibc
    - attr
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1489
    functionDepth: 3
    functionLinenumber: 1489
    functionLinenumberEnd: 1541
    functionName: dsync_ibc_stream_send_mailbox_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_str_new
    - i_assert
    - str_append_c
    - dsync_ibc_stream_send_value_stream
    - i_stream_ref
    - dsync_ibc_send_encode_begin
    - dsync_serializer_encode_add
    - dsync_ibc_stream_send_string
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_mailbox_attribute(struct dsync_ibc *_ibc,\n\t\t\t\t\tconst
      struct dsync_mailbox_attribute *attr)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1569,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1570,1
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1572,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1576,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1585,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1589,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1590,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1592,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1594,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1595,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1596,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1599,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1600,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1601,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1608,1
    - Dst: dsync_ibc_stream_input_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1609,1
    - Dst: dsync_ibc_stream_read_mail_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1610,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1615,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1616,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1617,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 2
    argNames:
    - _ibc
    - attr_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mailbox_attribute**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1543
    functionDepth: 6
    functionLinenumber: 1543
    functionLinenumberEnd: 1621
    functionName: dsync_ibc_stream_recv_mailbox_attribute
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - dsync_deserializer_decode_get
    - dsync_deserializer_decode_try
    - dsync_ibc_stream_read_mail_stream
    - str_to_time
    - dsync_ibc_stream_input_next
    - str_to_uint64
    - dsync_ibc_input_error
    - i_assert
    - dsync_ibc_stream_input_stream
    - p_clear
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_mailbox_attribute(struct
      dsync_ibc *_ibc,\n\t\t\t\t\tconst struct dsync_mailbox_attribute **attr_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1629,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1632,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1633,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1647,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1649,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1650,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1651,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1651,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1653,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1655,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1659,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1660,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1663,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1664,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1667,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1668,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1671,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1672,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1675,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1676,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1679,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1681,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1682,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1683,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1687,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1688,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1690,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1691,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1693,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1694,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1697,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1698,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1701,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1702,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1705,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1706,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 59
    argCount: 2
    argNames:
    - _ibc
    - change
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1707
      start: 1623
    functionDepth: 3
    functionLinenumber: 1623
    functionLinenumberEnd: 1707
    functionName: dsync_ibc_stream_send_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - str_append_c
    - i_unreached
    - array_get
    - t_strdup_printf
    - array_is_created
    - dsync_serializer_encode_add
    - array_count
    - str_append_tabescaped
    - dsync_ibc_send_encode_begin
    - i_assert
    - dsync_ibc_stream_send_string
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_change(struct dsync_ibc *_ibc,\n\t\t\t
      \    const struct dsync_mail_change *change)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1722,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1723,1
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1725,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1729,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1741,1
    - Dst: dsync_deserializer_decode_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1745,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1746,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1747,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1751,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1752,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1753,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1754,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1755,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1756,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1757,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1760,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1761,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1762,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1766,1
    - Dst: str_to_uint_hex
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1767,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1769,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1775,1
    - Dst: str_to_uint_hex
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1776,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1778,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1784,1
    - Dst: str_to_uint_hex
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1785,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1787,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1793,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1796,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1798,1
    - Dst: str_array_length
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1799,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1801,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1803,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1804,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1807,1
    - Dst: str_to_ullong_hex
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1808,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1809,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1814,1
    - Dst: str_to_ullong_hex
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1815,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1816,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 84
    argCount: 2
    argNames:
    - _ibc
    - change_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_change**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1709
    functionDepth: 6
    functionLinenumber: 1709
    functionLinenumberEnd: 1824
    functionName: dsync_ibc_stream_recv_change
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - str_to_ullong_hex
    - p_new
    - p_array_init
    - dsync_deserializer_decode_get
    - dsync_deserializer_decode_try
    - t_strsplit_tabescaped
    - array_push_back
    - str_array_length
    - str_to_uint32
    - str_to_uint_hex
    - dsync_ibc_stream_input_next
    - str_to_uint64
    - dsync_ibc_input_error
    - p_clear
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_change(struct dsync_ibc
      *_ibc,\n\t\t\t     const struct dsync_mail_change **change_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1832,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1834,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1835,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1837,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1839,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1840,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1842,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - _ibc
    - request
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1826
    functionDepth: 3
    functionLinenumber: 1826
    functionLinenumberEnd: 1844
    functionName: dsync_ibc_stream_send_mail_request
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_str_new
    - str_append_c
    - dsync_ibc_send_encode_begin
    - dsync_serializer_encode_add
    - dsync_ibc_stream_send_string
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_mail_request(struct dsync_ibc *_ibc,\n\t\t\t\t
      \  const struct dsync_mail_request *request)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1856,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1857,1
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1859,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1863,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1864,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1865,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1866,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1867,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - _ibc
    - request_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1873
      start: 1846
    functionDepth: 6
    functionLinenumber: 1846
    functionLinenumberEnd: 1873
    functionName: dsync_ibc_stream_recv_mail_request
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - dsync_deserializer_decode_try
    - str_to_uint32
    - dsync_ibc_stream_input_next
    - dsync_ibc_input_error
    - p_clear
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_mail_request(struct
      dsync_ibc *_ibc,\n\t\t\t\t   const struct dsync_mail_request **request_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1881,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1883,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1884,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1886,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1887,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1889,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1891,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1891,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1893,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1897,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1898,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1901,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1902,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1905,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1906,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1909,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1911,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1912,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1917,1
    - Dst: dsync_ibc_stream_send_value_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1918,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - _ibc
    - mail
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1875
    functionDepth: 3
    functionLinenumber: 1875
    functionLinenumberEnd: 1920
    functionName: dsync_ibc_stream_send_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_str_new
    - i_assert
    - str_append_c
    - dsync_ibc_stream_send_value_stream
    - i_stream_ref
    - dsync_ibc_send_encode_begin
    - dsync_serializer_encode_add
    - dsync_ibc_stream_send_string
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_mail(struct dsync_ibc *_ibc,\n\t\t\t   const
      struct dsync_mail *mail)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1943,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1944,1
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1946,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1950,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1951,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1952,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1953,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1954,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1957,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1958,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1959,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1960,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1961,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1964,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1965,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1966,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1969,1
    - Dst: str_to_time
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1970,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1971,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1974,1
    - Dst: dsync_ibc_stream_input_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1975,1
    - Dst: dsync_ibc_stream_read_mail_stream
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1976,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1981,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 2
    argNames:
    - _ibc
    - mail_r
    argTypes:
    - struct dsync_ibc*
    - struct dsync_mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1922
    functionDepth: 6
    functionLinenumber: 1922
    functionLinenumberEnd: 1986
    functionName: dsync_ibc_stream_recv_mail
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - dsync_deserializer_decode_try
    - dsync_ibc_stream_read_mail_stream
    - str_to_time
    - str_to_uint32
    - dsync_ibc_stream_input_next
    - dsync_ibc_input_error
    - i_assert
    - dsync_ibc_stream_input_stream
    - p_clear
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: enum dsync_ibc_recv_ret dsync_ibc_stream_recv_mail(struct dsync_ibc
      *_ibc, struct dsync_mail **mail_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1995,1
    - Dst: str_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1997,1
    - Dst: dsync_ibc_send_encode_begin
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:1998,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2000,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2002,1
    - Dst: dec2str
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2003,1
    - Dst: dsync_serializer_encode_add
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2006,1
    - Dst: dsync_serializer_encode_finish
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2007,1
    - Dst: dsync_ibc_stream_send_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2008,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - _ibc
    - error
    - mail_error
    - require_full_resync
    argTypes:
    - struct dsync_ibc*
    - char*
    - enum mail_error
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1988
    functionDepth: 3
    functionLinenumber: 1988
    functionLinenumberEnd: 2009
    functionName: dsync_ibc_stream_send_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_str_new
    - str_append_c
    - dsync_ibc_send_encode_begin
    - dsync_serializer_encode_add
    - dsync_ibc_stream_send_string
    - dsync_serializer_encode_finish
    linkageType: ''
    returnType: void
    signature: "void dsync_ibc_stream_send_finish(struct dsync_ibc *_ibc, const char
      *error,\n\t\t\t     enum mail_error mail_error,\n\t\t\t     bool require_full_resync)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2026,1
    - Dst: dsync_ibc_stream_input_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2031,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2035,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2036,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2037,1
    - Dst: str_to_int
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2038,1
    - Dst: dsync_ibc_input_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2039,1
    - Dst: dsync_deserializer_decode_try
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2042,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - _ibc
    - error_r
    - mail_error_r
    - require_full_resync_r
    argTypes:
    - struct dsync_ibc*
    - char**
    - enum mail_error*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2011
    functionDepth: 6
    functionLinenumber: 2011
    functionLinenumberEnd: 2048
    functionName: dsync_ibc_stream_recv_finish
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - dsync_deserializer_decode_try
    - dsync_ibc_stream_input_next
    - p_clear
    - dsync_ibc_input_error
    - str_to_int
    linkageType: ''
    returnType: enum dsync_ibc_recv_ret
    signature: "enum dsync_ibc_recv_ret dsync_ibc_stream_recv_finish(struct dsync_ibc
      *_ibc, const char **error_r,\n\t\t\t     enum mail_error *mail_error_r,\n\t\t\t
      \    bool *require_full_resync_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2055,1
    - Dst: dsync_ibc_stream_stop
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2056,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2050
    functionDepth: 2
    functionLinenumber: 2050
    functionLinenumberEnd: 2058
    functionName: dsync_ibc_stream_close_mail_streams
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - dsync_ibc_stream_stop
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void dsync_ibc_stream_close_mail_streams(struct dsync_ibc *_ibc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2068,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2072,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 2060
    functionDepth: 1
    functionLinenumber: 2060
    functionLinenumberEnd: 2074
    functionName: dsync_ibc_stream_is_send_queue_full
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_stream_is_send_queue_full(struct dsync_ibc *_ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ibc
    argTypes:
    - struct dsync_ibc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2076
    functionDepth: 0
    functionLinenumber: 2076
    functionLinenumberEnd: 2081
    functionName: dsync_ibc_stream_has_pending_data
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dsync_ibc_stream_has_pending_data(struct dsync_ibc *_ibc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2118,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2122,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2123,1
    - Dst: i_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2124,1
    - Dst: i_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2125,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2127,1
    - Dst: dsync_ibc_stream_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c:2128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 5
    argNames:
    - input
    - output
    - name
    - temp_path_prefix
    - timeout_secs
    argTypes:
    - struct istream*
    - struct ostream*
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2111
    functionDepth: 3
    functionLinenumber: 2111
    functionLinenumberEnd: 2130
    functionName: dsync_ibc_init_stream
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-ibc-stream.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - dsync_ibc_stream_init
    - i_stream_ref
    - o_stream_ref
    - i_strdup
    - i_new
    linkageType: ''
    returnType: struct dsync_ibc
    signature: "struct dsync_ibc *\ndsync_ibc_init_stream(struct istream *input, struct
      ostream *output,\n\t\t      const char *name, const char *temp_path_prefix,\n\t\t
      \     unsigned int timeout_secs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_alloc_guid
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:31,1
    - Dst: mailbox_exists
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:32,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:34,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:35,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:39,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - brain
    - ns
    - guid
    - box_r
    - errstr_r
    - error_r
    argTypes:
    - struct dsync_brain*
    - struct mail_namespace*
    - guid_128_t
    - struct mailbox**
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 16
    functionDepth: 5
    functionLinenumber: 16
    functionLinenumberEnd: 44
    functionName: ns_mailbox_try_alloc
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - mailbox_free
    - mailbox_alloc_guid
    - mailbox_get_last_internal_error
    - mailbox_exists
    linkageType: ''
    returnType: int
    signature: "int ns_mailbox_try_alloc(struct dsync_brain *brain, struct mail_namespace
      *ns,\n\t\t     const guid_128_t guid, struct mailbox **box_r,\n\t\t     const
      char **errstr_r, enum mail_error *error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsync_brain_want_namespace
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:56,1
    - Dst: ns_mailbox_try_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:58,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 5
    argNames:
    - brain
    - guid
    - box_r
    - errstr_r
    - error_r
    argTypes:
    - struct dsync_brain*
    - guid_128_t
    - struct mailbox**
    - char**
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 46
    functionDepth: 6
    functionLinenumber: 46
    functionLinenumberEnd: 63
    functionName: dsync_brain_mailbox_alloc
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 1
    functionsReached:
    - dsync_brain_want_namespace
    - ns_mailbox_try_alloc
    linkageType: ''
    returnType: int
    signature: "int dsync_brain_mailbox_alloc(struct dsync_brain *brain, const guid_128_t
      guid,\n\t\t\t      struct mailbox **box_r, const char **errstr_r,\n\t\t\t      enum
      mail_error *error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:75,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 114
    functionsReached:
    - p_strdup
    - array_append_space
    linkageType: ''
    returnType: void
    signature: void array_foreach(src, src_field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - brain
    - mailbox_guid
    argTypes:
    - struct dsync_brain*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 91
    functionName: dsync_mailbox_state_find
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: struct dsync_mailbox_state
    signature: "struct dsync_mailbox_state *\ndsync_mailbox_state_find(struct dsync_brain
      *brain,\n\t\t\t const guid_128_t mailbox_guid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:100,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - brain
    - mailbox_guid
    argTypes:
    - struct dsync_brain*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: dsync_mailbox_state_remove
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    - hash_table_remove
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_state_remove(struct dsync_brain *brain,\n\t\t\t
      \  const guid_128_t mailbox_guid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 122
    functionName: dsync_brain_sync_init_box_states
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dsync_brain_sync_init_box_states(struct dsync_brain *brain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:133,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:134,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:135,1
    - Dst: dsync_brain_sync_init_box_states
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:144,1
    - Dst: p_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:148,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:151,1
    - Dst: dsync_mailbox_cache_field_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:153,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:156,1
    - Dst: dsync_mailbox_state_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:158,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:162,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 5
    argNames:
    - brain
    - box
    - lock
    - local_dsync_box
    - wait_for_remote_box
    argTypes:
    - struct dsync_brain*
    - struct mailbox*
    - struct file_lock*
    - struct dsync_mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 169
    functionName: dsync_brain_sync_mailbox_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - dsync_mailbox_cache_field_dup
    - memcpy
    - dsync_mailbox_state_find
    - dsync_brain_sync_init_box_states
    - i_assert
    - p_clear
    linkageType: ''
    returnType: void
    signature: "void dsync_brain_sync_mailbox_init(struct dsync_brain *brain,\n\t\t\t
      \     struct mailbox *box,\n\t\t\t      struct file_lock *lock,\n\t\t\t      const
      struct dsync_mailbox *local_dsync_box,\n\t\t\t      bool wait_for_remote_box)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:181,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:183,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:183,1
    - Dst: dsync_mailbox_cache_field_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:188,1
    - Dst: dsync_mailbox_state_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:192,1
    - Dst: dsync_mailbox_import_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:244,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 2
    argNames:
    - brain
    - remote_dsync_box
    argTypes:
    - struct dsync_brain*
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 171
    functionDepth: 6
    functionLinenumber: 171
    functionLinenumberEnd: 247
    functionName: dsync_brain_sync_mailbox_init_remote
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_cache_field_dup
    - dsync_mailbox_state_find
    - memcmp
    - i_assert
    - dsync_mailbox_import_init
    linkageType: ''
    returnType: void
    signature: "void dsync_brain_sync_mailbox_init_remote(struct dsync_brain *brain,\n\t\t\t\t
      \    const struct dsync_mailbox *remote_dsync_box)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:260,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:261,1
    - Dst: dsync_transaction_log_scan_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:268,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:274,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:276,1
    - Dst: mailbox_get_open_status
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:281,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:288,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:295,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:309,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:313,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:317,1
    - Dst: e_warning
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:323,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:326,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:327,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:327,1
    - Dst: dsync_mailbox_export_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:366,1
    - Dst: dsync_brain_sync_mailbox_init_remote
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:368,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 59
    argCount: 2
    argNames:
    - brain
    - remote_dsync_box
    argTypes:
    - struct dsync_brain*
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 249
    functionDepth: 7
    functionLinenumber: 249
    functionLinenumberEnd: 370
    functionName: dsync_brain_sync_mailbox_open
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 1
    functionsReached:
    - dsync_transaction_log_scan_init
    - t_strdup_printf
    - e_error
    - e_warning
    - mailbox_get_open_status
    - mailbox_get_vname
    - dsync_brain_set_changes_during_sync
    - dsync_brain_sync_mailbox_init_remote
    - i_assert
    - dsync_mailbox_export_init
    linkageType: ''
    returnType: int
    signature: "int dsync_brain_sync_mailbox_open(struct dsync_brain *brain,\n\t\t\t\t
      \ const struct dsync_mailbox *remote_dsync_box)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:376,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:378,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:382,1
    - Dst: dsync_mailbox_export_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:384,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:386,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:394,1
    - Dst: dsync_mailbox_import_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:395,1
    - Dst: dsync_transaction_log_scan_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:408,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:409,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:410,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 372
    functionDepth: 13
    functionLinenumber: 372
    functionLinenumberEnd: 413
    functionName: dsync_brain_sync_mailbox_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 3
    functionsReached:
    - dsync_transaction_log_scan_deinit
    - mailbox_free
    - array_push_back
    - dsync_mailbox_export_deinit
    - e_error
    - dsync_mailbox_import_deinit
    - file_lock_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dsync_brain_sync_mailbox_deinit(struct dsync_brain *brain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:430,1
    - Dst: mailbox_get_status
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:431,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:432,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:441,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:442,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:449,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:451,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:452,1
    - Dst: dsync_mailbox_cache_field_dup
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:460,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:462,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - box
    - dsync_box_r
    - error_r
    argTypes:
    - struct mailbox*
    - struct dsync_mailbox*
    - enum mail_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 415
    functionDepth: 8
    functionLinenumber: 415
    functionLinenumberEnd: 467
    functionName: dsync_box_get
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - dsync_mailbox_cache_field_dup
    - mailbox_get_last_internal_error
    - mailbox_get_status
    - e_error
    - pool_datastack_create
    - mailbox_get_vname
    - i_assert
    - mailbox_get_metadata
    linkageType: ''
    returnType: int
    signature: "int dsync_box_get(struct mailbox *box, struct dsync_mailbox *dsync_box_r,\n\t\t\t
      enum mail_error *error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_state_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:478,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 2
    argNames:
    - brain
    - dsync_box
    argTypes:
    - struct dsync_brain*
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 485
    functionName: dsync_brain_has_mailbox_state_changed
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_state_find
    linkageType: ''
    returnType: bool
    signature: "bool dsync_brain_has_mailbox_state_changed(struct dsync_brain *brain,\n\t\t\t\t
      \     const struct dsync_mailbox *dsync_box)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_iter_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:504,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:506,1
    - Dst: dsync_mailbox_tree_iter_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:512,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:520,1
    - Dst: dsync_box_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:522,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:527,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:528,1
    - Dst: dsync_brain_has_mailbox_state_changed
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:534,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:535,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:539,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:545,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:546,1
    - Dst: dsync_mailbox_lock
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:556,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:558,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:561,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:562,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:563,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:564,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:566,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:567,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 4
    argNames:
    - brain
    - box_r
    - lock_r
    - dsync_box_r
    argTypes:
    - struct dsync_brain*
    - struct mailbox**
    - struct file_lock**
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 487
    functionDepth: 11
    functionLinenumber: 487
    functionLinenumberEnd: 577
    functionName: dsync_brain_try_next_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_lock
    - dsync_mailbox_tree_iter_next
    - mailbox_free
    - mailbox_get_last_internal_error
    - dsync_box_get
    - e_debug
    - guid_128_to_string
    - dsync_mailbox_tree_iter_deinit
    - mailbox_sync
    - e_error
    - mailbox_alloc
    - mailbox_get_vname
    - file_lock_free
    - dsync_brain_has_mailbox_state_changed
    - guid_128_is_empty
    linkageType: ''
    returnType: int
    signature: "int dsync_brain_try_next_mailbox(struct dsync_brain *brain, struct
      mailbox **box_r,\n\t\t\t     struct file_lock **lock_r,\n\t\t\t     struct dsync_mailbox
      *dsync_box_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dsync_brain_try_next_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:589,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - brain
    - box_r
    - lock_r
    - dsync_box_r
    argTypes:
    - struct dsync_brain*
    - struct mailbox**
    - struct file_lock**
    - struct dsync_mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 579
    functionDepth: 12
    functionLinenumber: 579
    functionLinenumberEnd: 592
    functionName: dsync_brain_next_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - dsync_brain_try_next_mailbox
    linkageType: ''
    returnType: bool
    signature: "bool dsync_brain_next_mailbox(struct dsync_brain *brain, struct mailbox
      **box_r,\n\t\t\t struct file_lock **lock_r,\n\t\t\t struct dsync_mailbox *dsync_box_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:600,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:601,1
    - Dst: dsync_brain_next_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:603,1
    - Dst: dsync_ibc_send_end_of_list
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:605,1
    - Dst: dsync_ibc_send_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:610,1
    - Dst: dsync_brain_sync_mailbox_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 594
    functionDepth: 13
    functionLinenumber: 594
    functionLinenumberEnd: 613
    functionName: dsync_brain_master_send_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 1
    functionsReached:
    - dsync_brain_next_mailbox
    - dsync_brain_sync_mailbox_init
    - dsync_ibc_send_mailbox
    - dsync_ibc_send_end_of_list
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dsync_brain_master_send_mailbox(struct dsync_brain *brain)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:627,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:630,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:633,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:636,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:642,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:647,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:652,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 4
    argNames:
    - brain
    - box1
    - box2
    - reason_r
    argTypes:
    - struct dsync_brain*
    - struct dsync_mailbox*
    - struct dsync_mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 657
    functionName: dsync_boxes_need_sync
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: "bool dsync_boxes_need_sync(struct dsync_brain *brain,\n\t\t\t   const
      struct dsync_mailbox *box1,\n\t\t\t   const struct dsync_mailbox *box2,\n\t\t\t
      \  const char **reason_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - struct mailbox_cache_field*
    - struct mailbox_cache_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 664
    functionName: mailbox_cache_field_name_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int mailbox_cache_field_name_cmp(const struct mailbox_cache_field
      *f1,\n\t\t\t     const struct mailbox_cache_field *f2)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:672,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:678,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:683,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:683,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:684,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:684,1
    - Dst: array_append_array
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:685,1
    - Dst: array_append_array
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:686,1
    - Dst: array_sort
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:687,1
    - Dst: array_sort
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:688,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:690,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:692,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:693,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:698,1
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:699,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:700,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:707,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:718,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:730,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:735,1
    - Dst: array_count
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:736,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:737,1
    - Dst: array_front
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:738,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 4
    argNames:
    - local_box
    - remote_box
    - box
    - update
    argTypes:
    - struct dsync_mailbox*
    - struct dsync_mailbox*
    - struct mailbox*
    - struct mailbox_update*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 740
    functionName: dsync_cache_fields_update
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_push_back
    - array_get
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_sort
    - array_append_zero
    - i_assert
    - array_append_array
    linkageType: ''
    returnType: void
    signature: "void dsync_cache_fields_update(const struct dsync_mailbox *local_box,\n\t\t\t
      \ const struct dsync_mailbox *remote_box,\n\t\t\t  struct mailbox *box,\n\t\t\t
      \ struct mailbox_update *update)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:753,1
    - Dst: dsync_mailbox_state_find
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:763,1
    - Dst: dsync_mailbox_state_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:768,1
    - Dst: dsync_cache_fields_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:775,1
    - Dst: mailbox_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:783,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:784,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:785,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:786,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 5
    argNames:
    - brain
    - box
    - local_box
    - remote_box
    - reason_r
    argTypes:
    - struct dsync_brain*
    - struct mailbox*
    - struct dsync_mailbox*
    - struct dsync_mailbox*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 742
    functionDepth: 8
    functionLinenumber: 742
    functionLinenumberEnd: 790
    functionName: dsync_brain_mailbox_update_pre
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 1
    functionsReached:
    - i_zero
    - mailbox_update
    - mailbox_get_last_internal_error
    - dsync_mailbox_state_find
    - dsync_cache_fields_update
    - e_error
    - mailbox_get_vname
    - dsync_mailbox_state_remove
    linkageType: ''
    returnType: bool
    signature: "bool dsync_brain_mailbox_update_pre(struct dsync_brain *brain,\n\t\t\t\t
      \   struct mailbox *box,\n\t\t\t\t    const struct dsync_mailbox *local_box,\n\t\t\t\t
      \   const struct dsync_mailbox *remote_box,\n\t\t\t\t    const char **reason_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:799,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:800,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:801,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:802,1
    - Dst: t_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:804,1
    - Dst: dsync_ibc_send_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:809,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - brain
    - dsync_box
    - ignore
    argTypes:
    - struct dsync_brain*
    - struct dsync_mailbox*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 810
    functionName: dsync_brain_slave_send_mailbox_lost
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_zero
    - e_debug
    - guid_128_to_string
    - dsync_ibc_send_mailbox
    - t_array_init
    linkageType: ''
    returnType: void
    signature: "void dsync_brain_slave_send_mailbox_lost(struct dsync_brain *brain,\n\t\t\t\t
      \   const struct dsync_mailbox *dsync_box,\n\t\t\t\t    bool ignore)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:823,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:824,1
    - Dst: dsync_ibc_recv_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:826,1
    - Dst: dsync_brain_mailbox_alloc
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:833,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:835,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:836,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:844,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:846,1
    - Dst: dsync_brain_slave_send_mailbox_lost
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:847,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:851,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:851,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:853,1
    - Dst: dsync_brain_slave_send_mailbox_lost
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:854,1
    - Dst: dsync_mailbox_lock
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:858,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:859,1
    - Dst: mailbox_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:863,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:864,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:865,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:866,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:867,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:868,1
    - Dst: dsync_box_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:873,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:874,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:875,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:882,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:883,1
    - Dst: dsync_brain_slave_send_mailbox_lost
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:884,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:887,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:888,1
    - Dst: memcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:888,1
    - Dst: dsync_brain_mailbox_update_pre
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:891,1
    - Dst: dsync_boxes_need_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:894,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:896,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:897,1
    - Dst: dsync_ibc_send_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:898,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:899,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:900,1
    - Dst: e_debug
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:903,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:904,1
    - Dst: dsync_brain_sync_mailbox_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:907,1
    - Dst: dsync_brain_sync_mailbox_open
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:908,1
    - Dst: dsync_brain_set_changes_during_sync
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:911,1
    - Dst: dsync_brain_sync_mailbox_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:914,1
    - Dst: dsync_brain_slave_send_mailbox_lost
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:915,1
    - Dst: dsync_ibc_send_mailbox
      Src: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c:919,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 74
    argCount: 1
    argNames:
    - brain
    argTypes:
    - struct dsync_brain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 812
    functionDepth: 14
    functionLinenumber: 812
    functionLinenumberEnd: 922
    functionName: dsync_brain_slave_recv_mailbox
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-brain-mailbox.c
    functionUses: 1
    functionsReached:
    - dsync_mailbox_lock
    - mailbox_get_last_internal_error
    - dsync_brain_slave_send_mailbox_lost
    - t_strdup_printf
    - dsync_ibc_send_mailbox
    - dsync_brain_set_changes_during_sync
    - dsync_ibc_recv_mailbox
    - dsync_brain_sync_mailbox_open
    - dsync_brain_mailbox_update_pre
    - mailbox_free
    - dsync_boxes_need_sync
    - mailbox_sync
    - file_lock_free
    - dsync_brain_mailbox_alloc
    - dsync_box_get
    - guid_128_to_string
    - e_error
    - mailbox_get_vname
    - i_assert
    - dsync_brain_sync_mailbox_init
    - dsync_brain_sync_mailbox_deinit
    - e_debug
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool dsync_brain_slave_recv_mailbox(struct dsync_brain *brain)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:34,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:35,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:42,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:42,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:45,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:48,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:48,1
    - Dst: i_zero
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - uid
    - type
    - change_r
    argTypes:
    - struct dsync_transaction_log_scan*
    - uint32_t
    - enum dsync_mail_change_type
    - struct dsync_mail_change**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 64
    functionName: ATTR_NOWARN_UNUSED_RESULT::export_change_get
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - POINTER_CAST
    - p_new
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: bool
    signature: "bool ATTR_NOWARN_UNUSED_RESULT\nexport_change_get(struct dsync_transaction_log_scan
      *ctx, uint32_t uid,\n\t\t  enum dsync_mail_change_type type,\n\t\t  struct dsync_mail_change
      **change_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:78,1
    - Dst: export_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - data
    - hdr
    argTypes:
    - struct dsync_transaction_log_scan*
    - void*
    - struct mail_transaction_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 86
    functionName: log_add_expunge
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - export_change_get
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void log_add_expunge(struct dsync_transaction_log_scan *ctx, const
      void *data,\n\t\tconst struct mail_transaction_header *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:99,1
    - Dst: export_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - data
    - hdr
    - uid
    argTypes:
    - struct dsync_transaction_log_scan*
    - void*
    - struct mail_transaction_header*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 109
    functionName: log_add_expunge_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - export_change_get
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: bool
    signature: "bool log_add_expunge_uid(struct dsync_transaction_log_scan *ctx, const
      void *data,\n\t\t    const struct mail_transaction_header *hdr, uint32_t uid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:123,1
    - Dst: mail_index_lookup_seq
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:125,1
    - Dst: export_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:131,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:134,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:135,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:136,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - view
    - data
    - hdr
    argTypes:
    - struct dsync_transaction_log_scan*
    - struct mail_index_view*
    - void*
    - struct mail_transaction_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 138
    functionName: log_add_expunge_guid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - export_change_get
    - mail_index_lookup_seq
    - guid_128_to_string
    - guid_128_is_empty
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void log_add_expunge_guid(struct dsync_transaction_log_scan *ctx,\n\t\t
      \    struct mail_index_view *view, const void *data,\n\t\t     const struct
      mail_transaction_header *hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:149,1
    - Dst: export_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:154,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:157,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:158,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:159,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - data
    - hdr
    - uid
    argTypes:
    - struct dsync_transaction_log_scan*
    - void*
    - struct mail_transaction_header*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 163
    functionName: log_add_expunge_guid_uid
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - export_change_get
    - i_unreached
    - guid_128_to_string
    - guid_128_is_empty
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: bool
    signature: "bool log_add_expunge_guid_uid(struct dsync_transaction_log_scan *ctx,
      const void *data,\n\t\t\t const struct mail_transaction_header *hdr, uint32_t
      uid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:175,1
    - Dst: export_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - data
    - hdr
    argTypes:
    - struct dsync_transaction_log_scan*
    - void*
    - struct mail_transaction_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 188
    functionName: log_add_flag_update
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - export_change_get
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void log_add_flag_update(struct dsync_transaction_log_scan *ctx, const
      void *data,\n\t\t    const struct mail_transaction_header *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:198,1
    - Dst: export_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:201,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:207,1
    - Dst: array_clear
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:208,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - data
    - hdr
    argTypes:
    - struct dsync_transaction_log_scan*
    - void*
    - struct mail_transaction_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 211
    functionName: log_add_keyword_reset
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - export_change_get
    - array_is_created
    - CONST_PTR_OFFSET
    - array_clear
    linkageType: ''
    returnType: void
    signature: "void log_add_keyword_reset(struct dsync_transaction_log_scan *ctx,
      const void *data,\n\t\t      const struct mail_transaction_header *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:219,1
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:221,1
    - Dst: array_delete
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - change
    - name
    argTypes:
    - struct dsync_mail_change*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 226
    functionName: keywords_change_remove
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_delete
    - array_get
    linkageType: ''
    returnType: void
    signature: void keywords_change_remove(struct dsync_mail_change *change, const
      char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:243,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:246,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:250,1
    - Dst: i_unreached
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:254,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:257,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:258,1
    - Dst: export_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:262,1
    - Dst: array_is_created
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:266,1
    - Dst: p_array_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:267,1
    - Dst: keywords_change_remove
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:270,1
    - Dst: array_push_back
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:272,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - data
    - hdr
    argTypes:
    - struct dsync_transaction_log_scan*
    - void*
    - struct mail_transaction_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 275
    functionName: log_add_keyword_update
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - export_change_get
    - p_array_init
    - keywords_change_remove
    - i_unreached
    - array_push_back
    - t_strndup
    - array_is_created
    - CONST_PTR_OFFSET
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void log_add_keyword_update(struct dsync_transaction_log_scan *ctx,
      const void *data,\n\t\t       const struct mail_transaction_header *hdr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:286,1
    - Dst: export_change_get
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:293,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - data
    - hdr
    - pvt_scan
    argTypes:
    - struct dsync_transaction_log_scan*
    - void*
    - struct mail_transaction_header*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 308
    functionName: log_add_modseq_update
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - export_change_get
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void log_add_modseq_update(struct dsync_transaction_log_scan *ctx,
      const void *data,\n\t\t      const struct mail_transaction_header *hdr, bool
      pvt_scan)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:316,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:316,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:322,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:324,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:326,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - attr_change
    - modseq
    argTypes:
    - struct dsync_transaction_log_scan*
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 331
    functionName: log_add_attribute_update_key
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - i_assert
    - p_strdup
    - p_new
    - strlen
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void log_add_attribute_update_key(struct dsync_transaction_log_scan
      *ctx,\n\t\t\t     const char *attr_change, uint64_t modseq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_add_attribute_update_key
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:343,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - data
    - hdr
    - modseq
    argTypes:
    - struct dsync_transaction_log_scan*
    - void*
    - struct mail_transaction_header*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 346
    functionName: log_add_attribute_update
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - strlen
    - log_add_attribute_update_key
    linkageType: ''
    returnType: void
    signature: "void log_add_attribute_update(struct dsync_transaction_log_scan *ctx,\n\t\t\t
      const void *data,\n\t\t\t const struct mail_transaction_header *hdr,\n\t\t\t
      uint64_t modseq)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mail_index_modseq_get_next_log_offset
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:363,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:368,1
    - Dst: mail_transaction_log_view_set_all
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:379,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:382,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:388,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:396,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 5
    argNames:
    - ctx
    - view
    - pvt_scan
    - log_view
    - modseq
    argTypes:
    - struct dsync_transaction_log_scan*
    - struct mail_index_view*
    - bool
    - struct mail_transaction_log_view*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 348
    functionDepth: 3
    functionLinenumber: 348
    functionLinenumberEnd: 408
    functionName: dsync_log_set
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_set_all
    - e_error
    - mail_index_modseq_get_next_log_offset
    - mail_transaction_log_view_set
    - mail_transaction_log_view_get_prev_pos
    linkageType: ''
    returnType: int
    signature: "int dsync_log_set(struct dsync_transaction_log_scan *ctx,\n\t      struct
      mail_index_view *view, bool pvt_scan,\n\t      struct mail_transaction_log_view
      *log_view, uint64_t modseq)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mail_transaction_log_view_open
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:422,1
    - Dst: dsync_log_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:423,1
    - Dst: mail_transaction_log_view_close
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:424,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:432,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:435,1
    - Dst: mail_transaction_log_view_get_prev_pos
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:436,1
    - Dst: log_add_expunge
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:452,1
    - Dst: log_add_expunge_guid
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:456,1
    - Dst: log_add_flag_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:459,1
    - Dst: log_add_keyword_reset
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:462,1
    - Dst: log_add_keyword_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:466,1
    - Dst: log_add_modseq_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:470,1
    - Dst: mail_transaction_log_view_get_prev_modseq
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:473,1
    - Dst: log_add_attribute_update
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:474,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 45
    argCount: 4
    argNames:
    - ctx
    - view
    - modseq
    - pvt_scan
    argTypes:
    - struct dsync_transaction_log_scan*
    - struct mail_index_view*
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 410
    functionDepth: 4
    functionLinenumber: 410
    functionLinenumberEnd: 477
    functionName: dsync_log_scan
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - mail_transaction_log_view_next
    - mail_transaction_log_view_close
    - mail_transaction_log_view_get_prev_modseq
    - log_add_modseq_update
    - log_add_keyword_reset
    - log_add_expunge_guid
    - log_add_keyword_update
    - mail_transaction_log_view_get_prev_pos
    - log_add_attribute_update
    - mail_transaction_log_view_open
    - log_add_expunge
    - log_add_flag_update
    - dsync_log_set
    linkageType: ''
    returnType: int
    signature: "int dsync_log_scan(struct dsync_transaction_log_scan *ctx,\n\t       struct
      mail_index_view *view, uint64_t modseq, bool pvt_scan)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:495,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - attr1
    - attr2
    argTypes:
    - struct dsync_mailbox_attribute*
    - struct dsync_mailbox_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 496
    functionName: dsync_mailbox_attribute_cmp
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_attribute_cmp(const struct dsync_mailbox_attribute
      *attr1,\n\t\t\t    const struct dsync_mailbox_attribute *attr2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_hash
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct dsync_mailbox_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 502
    functionName: dsync_mailbox_attribute_hash
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 0
    functionsReached:
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dsync_mailbox_attribute_hash(const struct dsync_mailbox_attribute
      *attr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:519,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:521,1
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:523,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:524,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:525,1
    - Dst: dsync_log_scan
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:531,1
    - Dst: dsync_log_scan
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:534,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 5
    argNames:
    - brain
    - highest_wanted_uid
    - modseq
    - pvt_modseq
    - pvt_too_old_r
    argTypes:
    - struct dsync_brain*
    - uint32_t
    - uint64_t
    - uint64_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 504
    functionDepth: 5
    functionLinenumber: 504
    functionLinenumberEnd: 544
    functionName: dsync_transaction_log_scan_init
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - hash_table_create
    - hash_table_create_direct
    - dsync_log_scan
    linkageType: ''
    returnType: int
    signature: "int dsync_transaction_log_scan_init(struct dsync_brain *brain,\n\t\t\t\t
      \   uint32_t highest_wanted_uid,\n\t\t\t\t    uint64_t modseq, uint64_t pvt_modseq,\n\t\t\t\t
      \   bool *pvt_too_old_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - struct dsync_transaction_log_scan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 550
    functionName: dsync_transaction_log_scan_get_hash
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dsync_transaction_log_scan_get_hash(struct dsync_transaction_log_scan
      *scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - struct dsync_transaction_log_scan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 556
    functionName: dsync_transaction_log_scan_get_attr_hash
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dsync_transaction_log_scan_get_attr_hash(struct dsync_transaction_log_scan
      *scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scan
    argTypes:
    - struct dsync_transaction_log_scan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 562
    functionName: dsync_transaction_log_scan_has_all_changes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dsync_transaction_log_scan_has_all_changes(struct dsync_transaction_log_scan
      *scan)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:574,1
    - Dst: mail_transaction_log_view_open
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:579,1
    - Dst: mail_transaction_log_view_set
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:580,1
    - Dst: mail_transaction_log_view_next
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:586,1
    - Dst: log_add_expunge_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:589,1
    - Dst: log_add_expunge_guid_uid
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:593,1
    - Dst: mail_transaction_log_view_close
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:599,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:602,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:602,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - scan
    - uid
    argTypes:
    - struct dsync_transaction_log_scan*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 564
    functionDepth: 2
    functionLinenumber: 564
    functionLinenumberEnd: 603
    functionName: dsync_transaction_log_scan_find_new_expunge
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 1
    functionsReached:
    - mail_transaction_log_view_next
    - mail_transaction_log_view_close
    - i_assert
    - POINTER_CAST
    - log_add_expunge_guid_uid
    - log_add_expunge_uid
    - mail_transaction_log_view_set
    - hash_table_lookup
    - mail_transaction_log_view_open
    linkageType: ''
    returnType: struct dsync_mail_change
    signature: "struct dsync_mail_change *\ndsync_transaction_log_scan_find_new_expunge(struct
      dsync_transaction_log_scan *scan,\n\t\t\t\t\t    uint32_t uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:611,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:612,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:613,1
    - Dst: pool_unref
      Src: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _scan
    argTypes:
    - struct dsync_transaction_log_scan**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 615
    functionName: dsync_transaction_log_scan_deinit
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c
    functionUses: 1
    functionsReached:
    - pool_unref
    - event_unref
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void dsync_transaction_log_scan_deinit(struct dsync_transaction_log_scan
      **_scan)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: mail_namespace_get_sep
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 80
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char mail_namespace_get_sep(struct mail_namespace *ns ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:29,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:29,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:30,1
    - Dst: I_MIN
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - guid_128_r
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: mailbox_name_get_sha128
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 6
    functionsReached:
    - memcpy
    - I_MIN
    - strlen
    - sha1_get_digest
    linkageType: ''
    returnType: void
    signature: void mailbox_name_get_sha128(const char *name, guid_128_t guid_128_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - escape_char ATTR_UNUSED
    argTypes:
    - char**
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: mailbox_list_name_unescape
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_name_unescape(const char **name ATTR_UNUSED,\n\t\t\t\tchar
      escape_char ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - name
    - escape_chars ATTR_UNUSED
    - dest
    argTypes:
    - char*
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: mailbox_list_name_escape
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 4
    functionsReached:
    - str_append
    linkageType: ''
    returnType: void
    signature: "void mailbox_list_name_escape(const char *name,\n\t\t\t      const
      char *escape_chars ATTR_UNUSED,\n\t\t\t      string_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:51,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - tree
    - counter
    - name
    - last_renamed_or_created
    argTypes:
    - struct dsync_mailbox_tree*
    - unsigned int
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: node_create
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 3
    functionsReached:
    - dsync_mailbox_tree_get
    - memcpy
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\nnode_create(struct dsync_mailbox_tree
      *tree, unsigned int counter,\n\t    const char *name, unsigned int last_renamed_or_created)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:63,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tree
    - counter
    - name
    argTypes:
    - struct dsync_mailbox_tree*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 59
    functionDepth: 3
    functionLinenumber: 59
    functionLinenumberEnd: 64
    functionName: random_node_create
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - i_rand_limit
    - node_create
    linkageType: ''
    returnType: struct dsync_mailbox_node
    signature: "struct dsync_mailbox_node *\nrandom_node_create(struct dsync_mailbox_tree
      *tree, unsigned int counter,\n\t\t   const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - tree
    - counter
    - names
    argTypes:
    - struct dsync_mailbox_tree*
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: nodes_create
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - node_create
    linkageType: ''
    returnType: void
    signature: "void nodes_create(struct dsync_mailbox_tree *tree, unsigned int *counter,\n\t\t\t
      const char *const *names)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - tree
    - counter
    - names
    argTypes:
    - struct dsync_mailbox_tree*
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 85
    functionName: nodes_delete
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - node_create
    linkageType: ''
    returnType: void
    signature: "void nodes_delete(struct dsync_mailbox_tree *tree, unsigned int *counter,\n\t\t\t
      const char *const *names)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:91,1
    - Dst: t_str_new
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:97,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:99,1
    - Dst: str_len
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:100,1
    - Dst: str_truncate
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:104,1
    - Dst: str_printfa
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:105,1
    - Dst: random_node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:106,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:106,1
    - Dst: create_random_nodes
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:107,1
    - Dst: str_c
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - tree
    - parent_name
    - depth
    - counter
    argTypes:
    - struct dsync_mailbox_tree*
    - char*
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 87
    functionDepth: 4
    functionLinenumber: 87
    functionLinenumberEnd: 109
    functionName: create_random_nodes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_len
    - str_truncate
    - random_node_create
    - i_rand_minmax
    - create_random_nodes
    linkageType: ''
    returnType: void
    signature: "void create_random_nodes(struct dsync_mailbox_tree *tree, const char
      *parent_name,\n\t\t    unsigned int depth, unsigned int *counter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:116,1
    - Dst: create_random_nodes
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 111
    functionDepth: 5
    functionLinenumber: 111
    functionLinenumberEnd: 119
    functionName: create_random_tree
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_init
    - create_random_nodes
    linkageType: ''
    returnType: struct dsync_mailbox_tree
    signature: struct dsync_mailbox_tree *create_random_tree(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:131,1
    - Dst: test_tree_nodes_fixup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:138,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - pos
    - newguid_counter
    argTypes:
    - struct dsync_mailbox_node**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 147
    functionName: test_tree_nodes_fixup
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - memcpy
    - test_tree_nodes_fixup
    linkageType: ''
    returnType: void
    signature: "void test_tree_nodes_fixup(struct dsync_mailbox_node **pos,\n\t\t\t\t
      \ unsigned int *newguid_counter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_tree_nodes_fixup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 154
    functionName: test_tree_fixup
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_tree_nodes_fixup
    linkageType: ''
    returnType: void
    signature: void test_tree_fixup(struct dsync_mailbox_tree *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:161,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:162,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:163,1
    - Dst: nodes_dump
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - node
    - depth
    argTypes:
    - struct dsync_mailbox_node*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 168
    functionName: nodes_dump
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - guid_128_to_string
    - nodes_dump
    - printf
    linkageType: ''
    returnType: void
    signature: void nodes_dump(const struct dsync_mailbox_node *node, unsigned int
      depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:173,1
    - Dst: nodes_dump
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:174,1
    - Dst: printf
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:175,1
    - Dst: nodes_dump
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tree1
    - tree2
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: trees_dump
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - nodes_dump
    - printf
    linkageType: ''
    returnType: void
    signature: "void trees_dump(struct dsync_mailbox_tree *tree1,\n\t\t       struct
      dsync_mailbox_tree *tree2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:187,1
    - Dst: dsync_mailbox_tree_dup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:189,1
    - Dst: dsync_mailbox_tree_dup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:190,1
    - Dst: dsync_mailbox_tree_build_guid_hash
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:193,1
    - Dst: dsync_mailbox_tree_build_guid_hash
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:194,1
    - Dst: dsync_mailbox_trees_sync_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:195,1
    - Dst: dsync_mailbox_trees_sync_next
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:198,1
    - Dst: dsync_mailbox_trees_sync_deinit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:200,1
    - Dst: test_tree_fixup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:201,1
    - Dst: test_tree_fixup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:202,1
    - Dst: dsync_mailbox_trees_equal
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:204,1
    - Dst: trees_dump
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:205,1
    - Dst: dsync_mailbox_tree_build_guid_hash
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:209,1
    - Dst: dsync_mailbox_tree_build_guid_hash
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:210,1
    - Dst: dsync_mailbox_trees_sync_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:211,1
    - Dst: dsync_mailbox_trees_sync_next
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:214,1
    - Dst: dsync_mailbox_trees_sync_deinit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:216,1
    - Dst: test_tree_fixup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:217,1
    - Dst: test_tree_fixup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:218,1
    - Dst: dsync_mailbox_trees_equal
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:219,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:220,1
    - Dst: trees_dump
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:221,1
    - Dst: dsync_mailbox_trees_equal
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:225,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:226,1
    - Dst: trees_dump
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:227,1
    - Dst: event_unref
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:230,1
    - Dst: dsync_mailbox_tree_deinit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:232,1
    - Dst: dsync_mailbox_tree_deinit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:233,1
    - Dst: dsync_mailbox_tree_deinit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:234,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 2
    argNames:
    - tree1
    - _tree2
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 179
    functionDepth: 10
    functionLinenumber: 179
    functionLinenumberEnd: 235
    functionName: test_trees_nofree
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_build_guid_hash
    - event_create
    - trees_dump
    - event_unref
    - test_tree_fixup
    - dsync_mailbox_tree_dup
    - dsync_mailbox_trees_sync_init
    - dsync_mailbox_tree_deinit
    - dsync_mailbox_trees_equal
    - test_assert
    - dsync_mailbox_trees_sync_deinit
    - dsync_mailbox_trees_sync_next
    linkageType: ''
    returnType: void
    signature: "void test_trees_nofree(struct dsync_mailbox_tree *tree1,\n\t\t\t      struct
      dsync_mailbox_tree **_tree2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_tree_nodes_add_namespace
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - ns
    argTypes:
    - struct dsync_mailbox_node*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 245
    functionName: test_tree_nodes_add_namespace
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 1
    functionsReached:
    - test_tree_nodes_add_namespace
    linkageType: ''
    returnType: void
    signature: "void test_tree_nodes_add_namespace(struct dsync_mailbox_node *node,\n\t\t\t
      \     struct mail_namespace *ns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:255,1
    - Dst: i_assert
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:256,1
    - Dst: test_tree_nodes_add_namespace
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - tree
    - ns
    argTypes:
    - struct dsync_mailbox_tree*
    - struct mail_namespace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 263
    functionName: test_tree_add_namespace
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - dsync_mailbox_tree_get
    - i_assert
    - test_tree_nodes_add_namespace
    linkageType: ''
    returnType: void
    signature: "void test_tree_add_namespace(struct dsync_mailbox_tree *tree,\n\t\t\tstruct
      mail_namespace *ns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsync_mailbox_tree_dup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:270,1
    - Dst: dsync_mailbox_tree_dup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:271,1
    - Dst: test_trees_nofree
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:274,1
    - Dst: dsync_mailbox_tree_deinit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:275,1
    - Dst: test_tree_add_namespace
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:278,1
    - Dst: test_tree_add_namespace
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:279,1
    - Dst: test_trees_nofree
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:280,1
    - Dst: dsync_mailbox_tree_deinit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - tree1
    - tree2
    argTypes:
    - struct dsync_mailbox_tree*
    - struct dsync_mailbox_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 265
    functionDepth: 11
    functionLinenumber: 265
    functionLinenumberEnd: 282
    functionName: test_trees
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_tree_add_namespace
    - dsync_mailbox_tree_dup
    - dsync_mailbox_tree_deinit
    - test_trees_nofree
    linkageType: ''
    returnType: void
    signature: "void test_trees(struct dsync_mailbox_tree *tree1,\n\t\t       struct
      dsync_mailbox_tree *tree2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:292,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:293,1
    - Dst: nodes_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:294,1
    - Dst: dsync_mailbox_tree_dup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:295,1
    - Dst: nodes_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:296,1
    - Dst: nodes_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:297,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:299,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 284
    functionDepth: 12
    functionLinenumber: 284
    functionLinenumberEnd: 301
    functionName: test_dsync_mailbox_tree_sync_creates
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - nodes_create
    - dsync_mailbox_tree_dup
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_creates(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:311,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:312,1
    - Dst: nodes_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:313,1
    - Dst: dsync_mailbox_tree_dup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:314,1
    - Dst: nodes_delete
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:315,1
    - Dst: nodes_delete
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:316,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:318,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 303
    functionDepth: 12
    functionLinenumber: 303
    functionLinenumberEnd: 320
    functionName: test_dsync_mailbox_tree_sync_deletes
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - nodes_create
    - dsync_mailbox_tree_dup
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - nodes_delete
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_deletes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:329,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:330,1
    - Dst: nodes_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:331,1
    - Dst: dsync_mailbox_tree_dup
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:332,1
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:334,1
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:337,1
    - Dst: dsync_mailbox_tree_get
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:341,1
    - Dst: dsync_mailbox_tree_node_detach
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:344,1
    - Dst: dsync_mailbox_tree_node_attach
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:345,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:347,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 322
    functionDepth: 12
    functionLinenumber: 322
    functionLinenumberEnd: 349
    functionName: test_dsync_mailbox_tree_sync_renames1
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - nodes_create
    - dsync_mailbox_tree_get
    - dsync_mailbox_tree_dup
    - dsync_mailbox_tree_node_attach
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - dsync_mailbox_tree_node_detach
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:355,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:356,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:357,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:359,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:360,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:362,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:363,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:365,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 351
    functionDepth: 12
    functionLinenumber: 351
    functionLinenumberEnd: 367
    functionName: test_dsync_mailbox_tree_sync_renames2
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:373,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:374,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:375,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:377,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:378,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:380,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:381,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:383,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 369
    functionDepth: 12
    functionLinenumber: 369
    functionLinenumberEnd: 385
    functionName: test_dsync_mailbox_tree_sync_renames3
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames3(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:391,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:392,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:393,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:395,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:396,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:398,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:400,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 387
    functionDepth: 12
    functionLinenumber: 387
    functionLinenumberEnd: 402
    functionName: test_dsync_mailbox_tree_sync_renames4
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames4(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:408,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:409,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:410,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:412,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:413,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:415,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:417,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 404
    functionDepth: 12
    functionLinenumber: 404
    functionLinenumberEnd: 419
    functionName: test_dsync_mailbox_tree_sync_renames5
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames5(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:425,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:426,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:427,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:429,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:430,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:432,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:433,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:435,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 421
    functionDepth: 12
    functionLinenumber: 421
    functionLinenumberEnd: 437
    functionName: test_dsync_mailbox_tree_sync_renames6
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames6(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:443,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:444,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:445,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:447,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:448,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:450,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 439
    functionDepth: 12
    functionLinenumber: 439
    functionLinenumberEnd: 452
    functionName: test_dsync_mailbox_tree_sync_renames7
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames7(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:458,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:459,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:460,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:462,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:463,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:465,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:467,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 454
    functionDepth: 12
    functionLinenumber: 454
    functionLinenumberEnd: 469
    functionName: test_dsync_mailbox_tree_sync_renames8
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames8(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:475,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:476,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:477,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:479,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:480,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:482,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:484,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 471
    functionDepth: 12
    functionLinenumber: 471
    functionLinenumberEnd: 486
    functionName: test_dsync_mailbox_tree_sync_renames9
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames9(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:492,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:493,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:494,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:496,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:497,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:499,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:501,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 488
    functionDepth: 12
    functionLinenumber: 488
    functionLinenumberEnd: 503
    functionName: test_dsync_mailbox_tree_sync_renames10
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames10(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:509,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:510,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:511,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:513,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:514,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:516,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:517,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:519,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 505
    functionDepth: 12
    functionLinenumber: 505
    functionLinenumberEnd: 521
    functionName: test_dsync_mailbox_tree_sync_renames11
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames11(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:527,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:528,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:529,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:531,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:532,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:533,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:534,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:536,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:537,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:538,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:539,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:541,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 523
    functionDepth: 12
    functionLinenumber: 523
    functionLinenumberEnd: 543
    functionName: test_dsync_mailbox_tree_sync_renames12
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames12(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:549,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:550,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:551,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:553,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:554,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:555,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:556,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:558,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:559,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:560,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:562,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 545
    functionDepth: 12
    functionLinenumber: 545
    functionLinenumberEnd: 564
    functionName: test_dsync_mailbox_tree_sync_renames13
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames13(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:570,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:571,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:572,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:574,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:575,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:576,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:578,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:579,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:580,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:582,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 566
    functionDepth: 12
    functionLinenumber: 566
    functionLinenumberEnd: 584
    functionName: test_dsync_mailbox_tree_sync_renames14
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames14(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:590,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:591,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:592,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:594,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:595,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:597,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 586
    functionDepth: 12
    functionLinenumber: 586
    functionLinenumberEnd: 599
    functionName: test_dsync_mailbox_tree_sync_renames15
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames15(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:605,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:606,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:607,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:609,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:610,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:612,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:613,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:614,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:616,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 601
    functionDepth: 12
    functionLinenumber: 601
    functionLinenumberEnd: 618
    functionName: test_dsync_mailbox_tree_sync_renames16
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames16(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:624,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:625,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:626,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:628,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:630,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:631,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:633,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 620
    functionDepth: 12
    functionLinenumber: 620
    functionLinenumberEnd: 635
    functionName: test_dsync_mailbox_tree_sync_renames17
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames17(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:641,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:642,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:643,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:645,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:646,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:647,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:649,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:650,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:651,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:652,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:654,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 637
    functionDepth: 12
    functionLinenumber: 637
    functionLinenumberEnd: 656
    functionName: test_dsync_mailbox_tree_sync_renames18
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames18(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:662,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:663,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:664,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:666,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:667,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:668,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:670,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:671,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:673,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 658
    functionDepth: 12
    functionLinenumber: 658
    functionLinenumberEnd: 675
    functionName: test_dsync_mailbox_tree_sync_renames19
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames19(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:681,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:682,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:683,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:685,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:686,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:687,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:689,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:690,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:691,1
    - Dst: test_trees_nofree
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:693,1
    - Dst: test_assert
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:694,1
    - Dst: dsync_mailbox_tree_deinit
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:696,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 677
    functionDepth: 11
    functionLinenumber: 677
    functionLinenumberEnd: 698
    functionName: test_dsync_mailbox_tree_sync_renames20
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_end
    - dsync_mailbox_tree_init
    - dsync_mailbox_tree_deinit
    - test_assert
    - test_trees_nofree
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames20(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:706,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:707,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:708,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:710,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:711,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:714,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:715,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:717,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 700
    functionDepth: 12
    functionLinenumber: 700
    functionLinenumberEnd: 720
    functionName: test_dsync_mailbox_tree_sync_renames21
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames21(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:726,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:727,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:728,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:730,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:731,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:732,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:734,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:735,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:736,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:737,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:738,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:740,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 722
    functionDepth: 12
    functionLinenumber: 722
    functionLinenumberEnd: 742
    functionName: test_dsync_mailbox_tree_sync_renames22
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames22(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:748,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:749,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:750,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:752,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:753,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:755,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:756,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:758,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 744
    functionDepth: 12
    functionLinenumber: 744
    functionLinenumberEnd: 760
    functionName: test_dsync_mailbox_tree_sync_renames23
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames23(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:766,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:767,1
    - Dst: dsync_mailbox_tree_init
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:768,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:770,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:771,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:772,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:774,1
    - Dst: node_create
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:775,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:777,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 762
    functionDepth: 12
    functionLinenumber: 762
    functionLinenumberEnd: 779
    functionName: test_dsync_mailbox_tree_sync_renames24
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - dsync_mailbox_tree_init
    - test_trees
    - test_begin
    - node_create
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_renames24(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:785,1
    - Dst: create_random_tree
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:786,1
    - Dst: create_random_tree
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:787,1
    - Dst: test_trees
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:788,1
    - Dst: test_end
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 781
    functionDepth: 12
    functionLinenumber: 781
    functionLinenumberEnd: 790
    functionName: test_dsync_mailbox_tree_sync_random
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_trees
    - create_random_tree
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dsync_mailbox_tree_sync_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 792
    functionDepth: 7
    functionLinenumber: 792
    functionLinenumberEnd: 825
    functionName: main
    functionSourceFile: /src/dovecot/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c
    functionUses: 12
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:14,1
    - Dst: p_strdup
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:15,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:18,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - pool
    - src
    - dest_r
    argTypes:
    - pool_t
    - struct dsync_mailbox_attribute*
    - struct dsync_mailbox_attribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 24
    functionName: dsync_mailbox_attribute_dup
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - i_stream_ref
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_attribute_dup(pool_t pool,\n\t\t\t\t const struct
      dsync_mailbox_attribute *src,\n\t\t\t\t struct dsync_mailbox_attribute *dest_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_open
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:33,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:34,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:35,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:36,1
    - Dst: mailbox_get_path_to
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:40,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:42,1
    - Dst: mailbox_get_vname
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:43,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:44,1
    - Dst: mailbox_lock_file_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:55,1
    - Dst: e_error
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c:58,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - brain
    - box
    - lock_r
    argTypes:
    - struct dsync_brain*
    - struct mailbox*
    - struct file_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 26
    functionDepth: 9
    functionLinenumber: 26
    functionLinenumberEnd: 64
    functionName: dsync_mailbox_lock
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox.c
    functionUses: 2
    functionsReached:
    - mailbox_open
    - mailbox_get_last_internal_error
    - mailbox_lock_file_create
    - e_error
    - mailbox_get_vname
    - mailbox_get_path_to
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_lock(struct dsync_brain *brain, struct mailbox *box,\n\t\t
      \      struct file_lock **lock_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - node1
    - ','
    - node2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: dsync_mailbox_node_guids_equal
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dsync_mailbox_node_guids_equal(node1, node2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: dsync_mailbox_node_is_dir
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-tree.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dsync_mailbox_node_is_dir(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cpu32_to_le_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:20,1
    - Dst: buffer_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - output
    - num
    argTypes:
    - buffer_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 23
    functionName: put_uint32
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - cpu32_to_le_unaligned
    linkageType: ''
    returnType: void
    signature: void put_uint32(buffer_t *output, uint32_t num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:31,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:34,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:35,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:36,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:37,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:39,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:40,1
    - Dst: buffer_append
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:41,1
    - Dst: put_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:43,1
    - Dst: put_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:44,1
    - Dst: put_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:45,1
    - Dst: put_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:46,1
    - Dst: put_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:47,1
    - Dst: put_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:48,1
    - Dst: put_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:49,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:51,1
    - Dst: base64_encode
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:52,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:53,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:56,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:58,1
    - Dst: put_uint32
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:59,1
    - Dst: base64_encode
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - output
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 61
    functionName: dsync_mailbox_states_export
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - buffer_append
    - hash_table_iterate
    - hash_table_iterate_init
    - t_buffer_create
    - buffer_set_used_size
    - base64_encode
    - put_uint32
    - buffer_append_c
    - crc32_data_more
    linkageType: ''
    returnType: void
    signature: "void dsync_mailbox_states_export(const HASH_TABLE_TYPE(dsync_mailbox_state)
      states,\n\t\t\t\t string_t *output)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:70,1
    - Dst: crc32_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 74
    functionName: dsync_mailbox_states_retry_import_v0
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c
    functionUses: 0
    functionsReached:
    - le32_to_cpu_unaligned
    - crc32_data
    linkageType: ''
    returnType: int
    signature: int dsync_mailbox_states_retry_import_v0(const buffer_t *buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HASH_TABLE_TYPE
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:76,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:86,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:86,1
    - Dst: base64_decode
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:87,1
    - Dst: strlen
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:87,1
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:94,1
    - Dst: dsync_mailbox_states_retry_import_v0
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:105,1
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:108,1
    - Dst: crc32_data
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:108,1
    - Dst: dsync_mailbox_states_retry_import_v0
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:110,1
    - Dst: p_new
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:116,1
    - Dst: memcpy
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:117,1
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:118,1
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:119,1
    - Dst: le64_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:120,1
    - Dst: le64_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:121,1
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:122,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c:124,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - pool
    - input
    - error_r
    argTypes:
    - pool_t
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 127
    functionName: dsync_mailbox_states_import
    functionSourceFile: /src/dovecot/src/doveadm/dsync/dsync-mailbox-state.c
    functionUses: 1
    functionsReached:
    - memcpy
    - le64_to_cpu_unaligned
    - p_new
    - base64_decode
    - dsync_mailbox_states_retry_import_v0
    - strlen
    - HASH_TABLE_TYPE
    - t_buffer_create
    - crc32_data
    - le32_to_cpu_unaligned
    - hash_table_insert
    linkageType: ''
    returnType: int
    signature: "int dsync_mailbox_states_import(HASH_TABLE_TYPE(dsync_mailbox_state)
      states,\n\t\t\t\tpool_t pool, const char *input,\n\t\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: DEF
    functionSourceFile: /src/dovecot/src/submission/submission-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/submission/submission-settings.c:195,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/submission/submission-settings.c:199,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission/submission-settings.c:205,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct submission_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 213
    functionName: submission_settings_parse_workarounds
    functionSourceFile: /src/dovecot/src/submission/submission-settings.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int submission_settings_parse_workarounds(struct submission_settings
      *set,\n\t\t\t\tconst char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: submission_settings_parse_workarounds
      Src: /src/dovecot/src/submission/submission-settings.c:227,1
    - Dst: p_strdup
      Src: /src/dovecot/src/submission/submission-settings.c:236,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/submission/submission-settings.c:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 239
    functionName: submission_settings_verify
    functionSourceFile: /src/dovecot/src/submission/submission-settings.c
    functionUses: 0
    functionsReached:
    - submission_settings_parse_workarounds
    - my_hostdomain
    - p_strdup
    linkageType: ''
    returnType: bool
    signature: bool submission_settings_verify(void *_set, pool_t pool ATTR_UNUSED,
      const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: IS_STANDALONE
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STANDALONE()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - new_hook
    argTypes:
    - submission_client_created_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 59
    functionName: submission_client_created_hook_set
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: submission_client_created_func_t
    signature: 'submission_client_created_func_t *

      submission_client_created_hook_set(submission_client_created_func_t *new_hook)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/submission/main.c:64,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission/main.c:69,1
    - Dst: str_append
      Src: /src/dovecot/src/submission/main.c:72,1
    - Dst: str_append
      Src: /src/dovecot/src/submission/main.c:76,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission/main.c:78,1
    - Dst: str_append
      Src: /src/dovecot/src/submission/main.c:79,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/submission/main.c:80,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission/main.c:82,1
    - Dst: str_append
      Src: /src/dovecot/src/submission/main.c:83,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission/main.c:85,1
    - Dst: str_append
      Src: /src/dovecot/src/submission/main.c:86,1
    - Dst: str_printfa
      Src: /src/dovecot/src/submission/main.c:90,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission/main.c:93,1
    - Dst: process_title_set
      Src: /src/dovecot/src/submission/main.c:94,1
    - Dst: str_c
      Src: /src/dovecot/src/submission/main.c:94,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 95
    functionName: submission_refresh_proctitle
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - net_ip2addr
    - str_append
    - process_title_set
    linkageType: ''
    returnType: void
    signature: void submission_refresh_proctitle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: submission_die
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void submission_die(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission/main.c:109,1
    - Dst: write
      Src: /src/dovecot/src/submission/main.c:112,1
    - Dst: strlen
      Src: /src/dovecot/src/submission/main.c:112,1
    - Dst: e_error
      Src: /src/dovecot/src/submission/main.c:114,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 5
    argNames:
    - fd_out
    - event
    - hostname
    - error_code
    - error_msg
    argTypes:
    - int
    - struct event*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 116
    functionName: send_error
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 4
    functionsReached:
    - e_error
    - strlen
    - t_strdup_printf
    - write
    linkageType: ''
    returnType: void
    signature: "void send_error(int fd_out, struct event *event, const char *hostname,\n\t
      \  const char *error_code, const char *error_msg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/submission/main.c:130,1
    - Dst: strlen
      Src: /src/dovecot/src/submission/main.c:131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - data
    - data_len
    - value_r
    argTypes:
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 142
    functionName: extract_input_data_field
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strndup
    linkageType: ''
    returnType: bool
    signature: "bool extract_input_data_field(const unsigned char **data, size_t *data_len,\n\t\t\t
      const char **value_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/submission/main.c:153,1
    - Dst: event_create
      Src: /src/dovecot/src/submission/main.c:161,1
    - Dst: event_add_category
      Src: /src/dovecot/src/submission/main.c:162,1
    - Dst: event_add_fields
      Src: /src/dovecot/src/submission/main.c:163,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/submission/main.c:168,1
    - Dst: event_add_int
      Src: /src/dovecot/src/submission/main.c:170,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/submission/main.c:172,1
    - Dst: event_add_int
      Src: /src/dovecot/src/submission/main.c:174,1
    - Dst: mail_storage_service_lookup_next
      Src: /src/dovecot/src/submission/main.c:178,1
    - Dst: send_error
      Src: /src/dovecot/src/submission/main.c:180,1
    - Dst: event_unref
      Src: /src/dovecot/src/submission/main.c:182,1
    - Dst: event_add_str
      Src: /src/dovecot/src/submission/main.c:187,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/submission/main.c:189,1
    - Dst: settings_get
      Src: /src/dovecot/src/submission/main.c:191,1
    - Dst: send_error
      Src: /src/dovecot/src/submission/main.c:193,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/submission/main.c:195,1
    - Dst: event_unref
      Src: /src/dovecot/src/submission/main.c:196,1
    - Dst: send_error
      Src: /src/dovecot/src/submission/main.c:206,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/submission/main.c:208,1
    - Dst: event_unref
      Src: /src/dovecot/src/submission/main.c:209,1
    - Dst: mailbox_attribute_dict_is_enabled
      Src: /src/dovecot/src/submission/main.c:212,1
    - Dst: send_error
      Src: /src/dovecot/src/submission/main.c:214,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/submission/main.c:216,1
    - Dst: event_unref
      Src: /src/dovecot/src/submission/main.c:217,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission/main.c:225,1
    - Dst: extract_input_data_field
      Src: /src/dovecot/src/submission/main.c:230,1
    - Dst: extract_input_data_field
      Src: /src/dovecot/src/submission/main.c:231,1
    - Dst: client_create
      Src: /src/dovecot/src/submission/main.c:241,1
    - Dst: event_unref
      Src: /src/dovecot/src/submission/main.c:244,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 6
    argNames:
    - input
    - login_flags
    - fd_in
    - fd_out
    - input_buf
    - error_r
    argTypes:
    - struct mail_storage_service_input*
    - enum login_request_flags
    - int
    - int
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 144
    functionDepth: 9
    functionLinenumber: 144
    functionLinenumberEnd: 246
    functionName: client_create_from_input
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 7
    functionsReached:
    - i_zero
    - event_create
    - mail_user_deinit
    - event_unref
    - send_error
    - mailbox_attribute_dict_is_enabled
    - mail_storage_service_lookup_next
    - event_add_fields
    - event_add_ip
    - extract_input_data_field
    - restrict_access_allow_coredumps
    - settings_get
    - event_add_str
    - client_create
    - HAS_ALL_BITS
    - event_add_category
    - event_add_int
    linkageType: ''
    returnType: int
    signature: "int client_create_from_input(const struct mail_storage_service_input
      *input,\n\t\t\t enum login_request_flags login_flags,\n\t\t\t int fd_in, int
      fd_out, const buffer_t *input_buf,\n\t\t\t const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/submission/main.c:253,1
    - Dst: getenv
      Src: /src/dovecot/src/submission/main.c:255,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/submission/main.c:256,1
    - Dst: getlogin
      Src: /src/dovecot/src/submission/main.c:257,1
    - Dst: i_fatal
      Src: /src/dovecot/src/submission/main.c:259,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/submission/main.c:261,1
    - Dst: i_fatal
      Src: /src/dovecot/src/submission/main.c:263,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - username
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 264
    functionName: main_stdio_run
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 4
    functionsReached:
    - i_zero
    - i_fatal
    - IS_STANDALONE
    - getenv
    - client_create_from_input
    - getlogin
    linkageType: ''
    returnType: void
    signature: void main_stdio_run(const char *username)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/submission/main.c:275,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/submission/main.c:284,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/submission/main.c:288,1
    - Dst: client_create_from_input
      Src: /src/dovecot/src/submission/main.c:290,1
    - Dst: i_error
      Src: /src/dovecot/src/submission/main.c:293,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/submission/main.c:294,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/submission/main.c:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - request
    - username
    - extra_fields
    argTypes:
    - struct login_server_request*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 297
    functionName: login_request_finished
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_error
    - i_close_fd
    - master_service_get_event
    - client_create_from_input
    - buffer_create_from_const_data
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: "void login_request_finished(const struct login_server_request *request,\n\t\t
      \      const char *username, const char *const *extra_fields)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission/main.c:304,1
    - Dst: write
      Src: /src/dovecot/src/submission/main.c:307,1
    - Dst: strlen
      Src: /src/dovecot/src/submission/main.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - request
    - errormsg
    argTypes:
    - struct login_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 310
    functionName: login_request_failed
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strdup_printf
    - write
    linkageType: ''
    returnType: void
    signature: "void login_request_failed(const struct login_server_request *request,\n\t\t\t\t
      const char *errormsg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/submission/main.c:320,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/submission/main.c:321,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/submission/main.c:322,1
    - Dst: client_kick
      Src: /src/dovecot/src/submission/main.c:323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - user
    - conn_guid
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 326
    functionName: master_admin_cmd_kick_user
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 0
    functionsReached:
    - strcmp
    - guid_128_is_empty
    - guid_128_cmp
    - client_kick
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int master_admin_cmd_kick_user(const char *user, const guid_128_t
      conn_guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/main.c:335,1
    - Dst: master_service_client_connection_accept
      Src: /src/dovecot/src/submission/main.c:337,1
    - Dst: login_server_add
      Src: /src/dovecot/src/submission/main.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 339
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 0
    functionsReached:
    - login_server_add
    - i_assert
    - master_service_client_connection_accept
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/submission/main.c:352,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/submission/main.c:357,1
    - Dst: getuid
      Src: /src/dovecot/src/submission/main.c:357,1
    - Dst: net_getpeername
      Src: /src/dovecot/src/submission/main.c:358,1
    - Dst: printf
      Src: /src/dovecot/src/submission/main.c:359,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/submission/main.c:364,1
    - Dst: master_service_init
      Src: /src/dovecot/src/submission/main.c:369,1
    - Dst: master_getopt
      Src: /src/dovecot/src/submission/main.c:371,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/submission/main.c:374,1
    - Dst: i_fatal
      Src: /src/dovecot/src/submission/main.c:377,1
    - Dst: t_abspath
      Src: /src/dovecot/src/submission/main.c:393,1
    - Dst: i_fatal
      Src: /src/dovecot/src/submission/main.c:395,1
    - Dst: getenv
      Src: /src/dovecot/src/submission/main.c:402,1
    - Dst: master_service_get_client_limit
      Src: /src/dovecot/src/submission/main.c:403,1
    - Dst: master_admin_clients_init
      Src: /src/dovecot/src/submission/main.c:405,1
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/submission/main.c:406,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/submission/main.c:412,1
    - Dst: i_fatal
      Src: /src/dovecot/src/submission/main.c:414,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/submission/main.c:417,1
    - Dst: t_abspath
      Src: /src/dovecot/src/submission/main.c:418,1
    - Dst: i_fatal
      Src: /src/dovecot/src/submission/main.c:420,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/submission/main.c:425,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission/main.c:429,1
    - Dst: smtp_server_init
      Src: /src/dovecot/src/submission/main.c:435,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/submission/main.c:436,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission/main.c:439,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/submission/main.c:440,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/submission/main.c:442,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/submission/main.c:444,1
    - Dst: login_server_init
      Src: /src/dovecot/src/submission/main.c:445,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/submission/main.c:447,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/submission/main.c:453,1
    - Dst: IS_STANDALONE
      Src: /src/dovecot/src/submission/main.c:455,1
    - Dst: main_stdio_run
      Src: /src/dovecot/src/submission/main.c:457,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 65
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 341
    functionDepth: 6
    functionLinenumber: 341
    functionLinenumberEnd: 459
    functionName: main
    functionSourceFile: /src/dovecot/src/submission/main.c
    functionUses: 14
    functionsReached:
    - master_service_settings_read
    - IS_STANDALONE
    - str_to_uint
    - t_abspath
    - master_service_init
    - net_getpeername
    - printf
    - i_fatal
    - main_stdio_run
    - master_service_init_finish
    - mail_storage_service_init
    - master_getopt
    - smtp_server_init
    - i_zero
    - master_admin_clients_init
    - smtp_server_command_register
    - master_service_set_die_callback
    - login_server_init
    - getuid
    - master_service_get_client_limit
    - getenv
    - my_hostdomain
    - io_loop_set_running
    - master_service_get_service_settings
    - smtp_client_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rbackend
    argTypes:
    - struct submission_backend_relay*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 164
    functionName: backend_relay_trans_finished
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void backend_relay_trans_finished(struct submission_backend_relay *rbackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - relay_reply ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - struct submission_backend_relay*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 172
    functionName: backend_relay_trans_start_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void backend_relay_trans_start_callback(\n\tconst struct smtp_reply
      *relay_reply ATTR_UNUSED,\n\tstruct submission_backend_relay *rbackend ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:181,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/submission/submission-backend-relay.c:185,1
    - Dst: smtp_client_transaction_set_immediate
      Src: /src/dovecot/src/submission/submission-backend-relay.c:188,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/submission/submission-backend-relay.c:189,1
    - Dst: smtp_client_transaction_start_empty
      Src: /src/dovecot/src/submission/submission-backend-relay.c:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - backend
    - ATTR_UNUSED
    - path
    - params
    argTypes:
    - struct submission_backend*
    - struct smtp_server_transaction*
    - struct smtp_address*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 198
    functionName: backend_relay_trans_start
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_set_immediate
    - smtp_client_transaction_start
    - container_of
    - smtp_client_transaction_create
    - smtp_client_transaction_start_empty
    linkageType: ''
    returnType: void
    signature: "void backend_relay_trans_start(struct submission_backend *backend,\n\t\t\t
      \ struct smtp_server_transaction *trans ATTR_UNUSED,\n\t\t\t  const struct smtp_address
      *path,\n\t\t\t  const struct smtp_params_mail *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:205,1
    - Dst: smtp_client_transaction_destroy
      Src: /src/dovecot/src/submission/submission-backend-relay.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - backend
    - ATTR_UNUSED
    argTypes:
    - struct submission_backend*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 213
    functionName: backend_relay_trans_free
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - container_of
    - smtp_client_transaction_destroy
    linkageType: ''
    returnType: void
    signature: "void backend_relay_trans_free(struct submission_backend *backend,\n\t\t\t
      struct smtp_server_transaction *trans ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:220,1
    - Dst: smtp_client_transaction_create_empty
      Src: /src/dovecot/src/submission/submission-backend-relay.c:222,1
    - Dst: smtp_client_transaction_set_immediate
      Src: /src/dovecot/src/submission/submission-backend-relay.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rbackend
    - flags
    argTypes:
    - struct submission_backend_relay*
    - enum smtp_client_transaction_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 228
    functionName: submission_backend_relay_init_transaction
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_set_immediate
    - i_assert
    - smtp_client_transaction_create_empty
    linkageType: ''
    returnType: struct smtp_client_transaction
    signature: "struct smtp_client_transaction *\nsubmission_backend_relay_init_transaction(\n\tstruct
      submission_backend_relay *rbackend,\n\tenum smtp_client_transaction_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:247,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - helo_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_helo_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 250
    functionName: relay_cmd_helo_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_helo_destroy(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \      struct relay_cmd_helo_context *helo_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/submission/submission-backend-relay.c:261,1
    - Dst: smtp_client_connection_update_proxy_data
      Src: /src/dovecot/src/submission/submission-backend-relay.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rbackend
    - data
    argTypes:
    - struct submission_backend_relay*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 264
    functionName: relay_cmd_helo_update_xclient
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_client_connection_update_proxy_data
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_helo_update_xclient(struct submission_backend_relay
      *rbackend,\n\t\t\t      struct smtp_server_cmd_helo *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relay_cmd_helo_update_xclient
      Src: /src/dovecot/src/submission/submission-backend-relay.c:273,1
    - Dst: submission_backend_helo_reply_submit
      Src: /src/dovecot/src/submission/submission-backend-relay.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - helo_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_helo_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 278
    functionName: relay_cmd_helo_reply
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - relay_cmd_helo_update_xclient
    - submission_backend_helo_reply_submit
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_helo_reply(struct smtp_server_cmd_ctx *cmd,\n\t\t     struct
      relay_cmd_helo_context *helo_cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:285,1
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:294,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/submission/submission-backend-relay.c:298,1
    - Dst: relay_cmd_helo_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:299,1
    - Dst: smtp_server_reply_forward
      Src: /src/dovecot/src/submission/submission-backend-relay.c:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - relay_reply
    - helo_cmd
    argTypes:
    - struct smtp_reply*
    - struct relay_cmd_helo_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 310
    functionName: relay_cmd_helo_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_forward
    - relay_cmd_helo_reply
    - backend_relay_handle_relay_reply
    - i_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_helo_callback(const struct smtp_reply *relay_reply,\n\t\t\tstruct
      relay_cmd_helo_context *helo_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: relay_cmd_helo_update_xclient
      Src: /src/dovecot/src/submission/submission-backend-relay.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - helo_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_helo_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 320
    functionName: relay_cmd_helo_start
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - relay_cmd_helo_update_xclient
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_helo_start(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \    struct relay_cmd_helo_context *helo_cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:328,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:331,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:337,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:339,1
    - Dst: smtp_client_command_rset_submit
      Src: /src/dovecot/src/submission/submission-backend-relay.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - backend
    - cmd
    - data
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 344
    functionName: backend_relay_cmd_helo
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - container_of
    - p_new
    - smtp_server_command_add_hook
    - smtp_client_command_rset_submit
    linkageType: ''
    returnType: int
    signature: "int backend_relay_cmd_helo(struct submission_backend *backend,\n\t\t
      \      struct smtp_server_cmd_ctx *cmd,\n\t\t       struct smtp_server_cmd_helo
      *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_mail_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - mail_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 365
    functionName: relay_cmd_mail_replied
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_mail_abort
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_mail_replied(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \      struct relay_cmd_mail_context *mail_cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:371,1
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:380,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/submission/submission-backend-relay.c:384,1
    - Dst: smtp_reply_has_enhanced_code
      Src: /src/dovecot/src/submission/submission-backend-relay.c:388,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/submission/submission-backend-relay.c:389,1
    - Dst: smtp_server_reply_forward
      Src: /src/dovecot/src/submission/submission-backend-relay.c:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - relay_reply
    - mail_cmd
    argTypes:
    - struct smtp_reply*
    - struct relay_cmd_mail_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 394
    functionName: relay_cmd_mail_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_forward
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_has_enhanced_code
    - backend_relay_handle_relay_reply
    - i_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_mail_callback(const struct smtp_reply *relay_reply,\n\t\t\tstruct
      relay_cmd_mail_context *mail_cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_parse_username
      Src: /src/dovecot/src/submission/submission-backend-relay.c:412,1
    - Dst: e_warning
      Src: /src/dovecot/src/submission/submission-backend-relay.c:414,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - rbackend
    - cmd
    - relay_caps
    - data
    argTypes:
    - struct submission_backend_relay*
    - struct smtp_server_cmd_ctx*
    - enum smtp_capability
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 421
    functionName: relay_cmd_mail_parameter_auth
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - e_warning
    - smtp_address_parse_username
    linkageType: ''
    returnType: int
    signature: "int relay_cmd_mail_parameter_auth(struct submission_backend_relay
      *rbackend,\n\t\t\t      struct smtp_server_cmd_ctx *cmd,\n\t\t\t      enum smtp_capability
      relay_caps,\n\t\t\t      struct smtp_server_cmd_mail *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_get_max_mail_size
      Src: /src/dovecot/src/submission/submission-backend-relay.c:438,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:440,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - rbackend
    - cmd
    - relay_caps
    - data
    argTypes:
    - struct submission_backend_relay*
    - struct smtp_server_cmd_ctx*
    - enum smtp_capability
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 449
    functionName: relay_cmd_mail_parameter_size
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply
    - client_get_max_mail_size
    linkageType: ''
    returnType: int
    signature: "int relay_cmd_mail_parameter_size(struct submission_backend_relay
      *rbackend,\n\t\t\t      struct smtp_server_cmd_ctx *cmd,\n\t\t\t      enum smtp_capability
      relay_caps,\n\t\t\t      struct smtp_server_cmd_mail *data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:457,1
    - Dst: smtp_client_connection_get_capabilities
      Src: /src/dovecot/src/submission/submission-backend-relay.c:459,1
    - Dst: relay_cmd_mail_parameter_auth
      Src: /src/dovecot/src/submission/submission-backend-relay.c:463,1
    - Dst: relay_cmd_mail_parameter_size
      Src: /src/dovecot/src/submission/submission-backend-relay.c:465,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:469,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:474,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/submission/submission-backend-relay.c:480,1
    - Dst: smtp_client_transaction_set_immediate
      Src: /src/dovecot/src/submission/submission-backend-relay.c:483,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/submission/submission-backend-relay.c:484,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:488,1
    - Dst: smtp_client_transaction_add_mail
      Src: /src/dovecot/src/submission/submission-backend-relay.c:489,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - backend
    - cmd
    - data
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 494
    functionName: backend_relay_cmd_mail
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_set_immediate
    - smtp_client_transaction_start
    - container_of
    - relay_cmd_mail_parameter_auth
    - relay_cmd_mail_parameter_size
    - p_new
    - smtp_server_command_add_hook
    - smtp_client_transaction_create
    - smtp_client_transaction_add_mail
    - smtp_client_connection_get_capabilities
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int backend_relay_cmd_mail(struct submission_backend *backend,\n\t\t
      \      struct smtp_server_cmd_ctx *cmd,\n\t\t       struct smtp_server_cmd_mail
      *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_rcpt_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - rcpt_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_rcpt_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 515
    functionName: relay_cmd_rcpt_replied
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_rcpt_abort
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_rcpt_replied(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \      struct relay_cmd_rcpt_context *rcpt_cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:521,1
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:533,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/submission/submission-backend-relay.c:537,1
    - Dst: smtp_reply_has_enhanced_code
      Src: /src/dovecot/src/submission/submission-backend-relay.c:539,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/submission/submission-backend-relay.c:540,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:542,1
    - Dst: smtp_server_recipient_reply_forward
      Src: /src/dovecot/src/submission/submission-backend-relay.c:547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - relay_reply
    - rcpt_cmd
    argTypes:
    - struct smtp_reply*
    - struct relay_cmd_rcpt_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 548
    functionName: relay_cmd_rcpt_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - SMTP_REPLY_ENH_CODE
    - smtp_server_recipient_reply_forward
    - smtp_reply_has_enhanced_code
    - backend_relay_handle_relay_reply
    - i_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_rcpt_callback(const struct smtp_reply *relay_reply,\n\t\t\tstruct
      relay_cmd_rcpt_context *rcpt_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:556,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:561,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:566,1
    - Dst: submission_backend_relay_init_transaction
      Src: /src/dovecot/src/submission/submission-backend-relay.c:570,1
    - Dst: smtp_client_transaction_add_pool_rcpt
      Src: /src/dovecot/src/submission/submission-backend-relay.c:571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - backend
    - cmd
    - srcpt
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct submission_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 550
    functionDepth: 2
    functionLinenumber: 550
    functionLinenumberEnd: 575
    functionName: backend_relay_cmd_rcpt
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - container_of
    - p_new
    - submission_backend_relay_init_transaction
    - smtp_server_command_add_hook
    - smtp_client_transaction_add_pool_rcpt
    linkageType: ''
    returnType: int
    signature: "int backend_relay_cmd_rcpt(struct submission_backend *backend,\n\t\t
      \      struct smtp_server_cmd_ctx *cmd,\n\t\t       struct submission_recipient
      *srcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:593,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - rset_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_rset_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 589
    functionDepth: 1
    functionLinenumber: 589
    functionLinenumberEnd: 596
    functionName: relay_cmd_rset_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_rset_destroy(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \      struct relay_cmd_rset_context *rset_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:602,1
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:611,1
    - Dst: smtp_server_reply_forward
      Src: /src/dovecot/src/submission/submission-backend-relay.c:616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - relay_reply
    - rset_cmd
    argTypes:
    - struct smtp_reply*
    - struct relay_cmd_rset_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 617
    functionName: relay_cmd_rset_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_forward
    - i_assert
    - backend_relay_handle_relay_reply
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_rset_callback(const struct smtp_reply *relay_reply,\n\t\t\tstruct
      relay_cmd_rset_context *rset_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:624,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:627,1
    - Dst: smtp_client_transaction_reset
      Src: /src/dovecot/src/submission/submission-backend-relay.c:633,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:638,1
    - Dst: smtp_client_command_rset_submit
      Src: /src/dovecot/src/submission/submission-backend-relay.c:641,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - backend
    - cmd
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 645
    functionName: backend_relay_cmd_rset
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - container_of
    - p_new
    - smtp_server_command_add_hook
    - smtp_client_transaction_reset
    - smtp_client_command_rset_submit
    linkageType: ''
    returnType: int
    signature: "int backend_relay_cmd_rset(struct submission_backend *backend,\n\t\t
      \      struct smtp_server_cmd_ctx *cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:666,1
    - Dst: smtp_server_connection_get_transaction
      Src: /src/dovecot/src/submission/submission-backend-relay.c:669,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:672,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/submission/submission-backend-relay.c:672,1
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:676,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/submission/submission-backend-relay.c:680,1
    - Dst: e_info
      Src: /src/dovecot/src/submission/submission-backend-relay.c:681,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/submission/submission-backend-relay.c:684,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/submission/submission-backend-relay.c:685,1
    - Dst: array_count
      Src: /src/dovecot/src/submission/submission-backend-relay.c:687,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission/submission-backend-relay.c:688,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/submission/submission-backend-relay.c:688,1
    - Dst: e_info
      Src: /src/dovecot/src/submission/submission-backend-relay.c:691,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/submission/submission-backend-relay.c:694,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/submission/submission-backend-relay.c:695,1
    - Dst: array_count
      Src: /src/dovecot/src/submission/submission-backend-relay.c:697,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission/submission-backend-relay.c:698,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/submission/submission-backend-relay.c:698,1
    - Dst: smtp_server_recipient_reply_forward
      Src: /src/dovecot/src/submission/submission-backend-relay.c:701,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - relay_reply
    - srcpt
    argTypes:
    - struct smtp_reply*
    - struct submission_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 702
    functionName: relay_cmd_data_rcpt_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - e_info
    - container_of
    - smtp_server_recipient_reply_forward
    - str_sanitize
    - smtp_address_encode
    - array_count
    - backend_relay_handle_relay_reply
    - smtp_reply_log
    - HAS_ALL_BITS
    - i_assert
    - smtp_server_connection_get_transaction
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_data_rcpt_callback(const struct smtp_reply *relay_reply,\n\t\t\t
      \    struct submission_recipient *srcpt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:708,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/submission/submission-backend-relay.c:719,1
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:726,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/submission/submission-backend-relay.c:730,1
    - Dst: e_info
      Src: /src/dovecot/src/submission/submission-backend-relay.c:731,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/submission/submission-backend-relay.c:734,1
    - Dst: array_count
      Src: /src/dovecot/src/submission/submission-backend-relay.c:736,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission/submission-backend-relay.c:737,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/submission/submission-backend-relay.c:737,1
    - Dst: e_info
      Src: /src/dovecot/src/submission/submission-backend-relay.c:740,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/submission/submission-backend-relay.c:742,1
    - Dst: array_count
      Src: /src/dovecot/src/submission/submission-backend-relay.c:743,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission/submission-backend-relay.c:744,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/submission/submission-backend-relay.c:744,1
    - Dst: smtp_server_reply_forward
      Src: /src/dovecot/src/submission/submission-backend-relay.c:747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - relay_reply
    - data_ctx
    argTypes:
    - struct smtp_reply*
    - struct relay_cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 748
    functionName: relay_cmd_data_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_forward
    - e_info
    - str_sanitize
    - smtp_address_encode
    - array_count
    - backend_relay_handle_relay_reply
    - smtp_reply_log
    - HAS_ALL_BITS
    - i_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_data_callback(const struct smtp_reply *relay_reply,\n\t\t\tstruct
      relay_cmd_data_context *data_ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/submission/submission-backend-relay.c:757,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/submission/submission-backend-relay.c:761,1
    - Dst: smtp_client_transaction_rcpt_set_data_callback
      Src: /src/dovecot/src/submission/submission-backend-relay.c:765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rbackend
    - trans
    argTypes:
    - struct submission_backend_relay*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 768
    functionName: backend_relay_cmd_data_init_callbacks
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_rcpt_set_data_callback
    - HAS_ALL_BITS
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void backend_relay_cmd_data_init_callbacks(struct submission_backend_relay
      *rbackend,\n\t\t\t\t      struct smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:777,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:781,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:787,1
    - Dst: backend_relay_cmd_data_init_callbacks
      Src: /src/dovecot/src/submission/submission-backend-relay.c:789,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/submission/submission-backend-relay.c:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - backend
    - cmd
    - trans
    - data_input
    - ATTR_UNUSED
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 770
    functionDepth: 2
    functionLinenumber: 770
    functionLinenumberEnd: 794
    functionName: backend_relay_cmd_data
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - container_of
    - p_new
    - smtp_client_transaction_send
    - backend_relay_cmd_data_init_callbacks
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int backend_relay_cmd_data(struct submission_backend *backend,\n\t\t
      \      struct smtp_server_cmd_ctx *cmd,\n\t\t       struct smtp_server_transaction
      *trans,\n\t\t       struct istream *data_input, uoff_t data_size ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:812,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - vrfy_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_vrfy_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 815
    functionName: relay_cmd_vrfy_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_vrfy_destroy(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \      struct relay_cmd_vrfy_context *vrfy_cmd)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:821,1
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:830,1
    - Dst: smtp_server_cmd_vrfy_reply_default
      Src: /src/dovecot/src/submission/submission-backend-relay.c:847,1
    - Dst: smtp_reply_has_enhanced_code
      Src: /src/dovecot/src/submission/submission-backend-relay.c:851,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/submission/submission-backend-relay.c:856,1
    - Dst: smtp_server_reply_forward
      Src: /src/dovecot/src/submission/submission-backend-relay.c:863,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - relay_reply
    - vrfy_cmd
    argTypes:
    - struct smtp_reply*
    - struct relay_cmd_vrfy_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 864
    functionName: relay_cmd_vrfy_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_forward
    - smtp_server_cmd_vrfy_reply_default
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_has_enhanced_code
    - backend_relay_handle_relay_reply
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_vrfy_callback(const struct smtp_reply *relay_reply,\n\t\t\tstruct
      relay_cmd_vrfy_context *vrfy_cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:871,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:874,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:878,1
    - Dst: smtp_client_command_vrfy_submit
      Src: /src/dovecot/src/submission/submission-backend-relay.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - backend
    - cmd
    - param
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 883
    functionName: backend_relay_cmd_vrfy
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_vrfy_submit
    - container_of
    - p_new
    - smtp_server_command_add_hook
    linkageType: ''
    returnType: int
    signature: "int backend_relay_cmd_vrfy(struct submission_backend *backend,\n\t\t
      \      struct smtp_server_cmd_ctx *cmd, const char *param)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:901,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:903,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - noop_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_noop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 904
    functionName: relay_cmd_noop_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_noop_destroy(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \      struct relay_cmd_noop_context *noop_cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:910,1
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:919,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/submission/submission-backend-relay.c:923,1
    - Dst: smtp_server_cmd_noop_reply_success
      Src: /src/dovecot/src/submission/submission-backend-relay.c:924,1
    - Dst: smtp_server_reply_forward
      Src: /src/dovecot/src/submission/submission-backend-relay.c:926,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - relay_reply
    - noop_cmd
    argTypes:
    - struct smtp_reply*
    - struct relay_cmd_noop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 927
    functionName: relay_cmd_noop_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_forward
    - backend_relay_handle_relay_reply
    - i_assert
    - smtp_server_cmd_noop_reply_success
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_noop_callback(const struct smtp_reply *relay_reply,\n\t\t\tstruct
      relay_cmd_noop_context *noop_cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:934,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:937,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:941,1
    - Dst: smtp_client_command_noop_submit
      Src: /src/dovecot/src/submission/submission-backend-relay.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - backend
    - cmd
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 946
    functionName: backend_relay_cmd_noop
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_noop_submit
    - container_of
    - p_new
    - smtp_server_command_add_hook
    linkageType: ''
    returnType: int
    signature: "int backend_relay_cmd_noop(struct submission_backend *backend,\n\t\t
      \      struct smtp_server_cmd_ctx *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:964,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:966,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - quit_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_quit_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 967
    functionName: relay_cmd_quit_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_quit_destroy(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \      struct relay_cmd_quit_context *quit_cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 975
    functionName: relay_cmd_quit_relayed_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void relay_cmd_quit_relayed_destroy(void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - quit_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_quit_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 977
    functionDepth: 1
    functionLinenumber: 977
    functionLinenumberEnd: 983
    functionName: relay_cmd_quit_replied
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_quit_replied(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \      struct relay_cmd_quit_context *quit_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/submission/submission-backend-relay.c:991,1
    - Dst: smtp_server_reply_quit
      Src: /src/dovecot/src/submission/submission-backend-relay.c:992,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - quit_cmd
    argTypes:
    - struct relay_cmd_quit_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 993
    functionName: relay_cmd_quit_finish
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - smtp_server_reply_quit
    linkageType: ''
    returnType: void
    signature: void relay_cmd_quit_finish(struct relay_cmd_quit_context *quit_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend-relay.c:999,1
    - Dst: relay_cmd_quit_finish
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - relay_reply ATTR_UNUSED
    - quit_cmd
    argTypes:
    - struct smtp_reply*
    - struct relay_cmd_quit_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 995
    functionDepth: 2
    functionLinenumber: 995
    functionLinenumberEnd: 1002
    functionName: relay_cmd_quit_callback
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - relay_cmd_quit_finish
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_quit_callback(const struct smtp_reply *relay_reply
      ATTR_UNUSED,\n\t\t\tstruct relay_cmd_quit_context *quit_cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_get_state
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1012,1
    - Dst: smtp_server_reply_quit
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1017,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1028,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1030,1
    - Dst: smtp_client_command_set_abort_callback
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1031,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1034,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - quit_cmd
    argTypes:
    - struct relay_cmd_quit_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1004
    functionDepth: 1
    functionLinenumber: 1004
    functionLinenumberEnd: 1035
    functionName: relay_cmd_quit_relay
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_write
    - smtp_client_connection_get_state
    - smtp_server_reply_quit
    - smtp_client_command_new
    - smtp_client_command_submit
    - smtp_client_command_set_abort_callback
    linkageType: ''
    returnType: void
    signature: void relay_cmd_quit_relay(struct relay_cmd_quit_context *quit_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: relay_cmd_quit_relay
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - quit_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct relay_cmd_quit_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1037
    functionDepth: 2
    functionLinenumber: 1037
    functionLinenumberEnd: 1043
    functionName: relay_cmd_quit_next
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - relay_cmd_quit_relay
    linkageType: ''
    returnType: void
    signature: "void relay_cmd_quit_next(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      \   struct relay_cmd_quit_context *quit_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1050,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1053,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1057,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1059,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1061,1
    - Dst: smtp_client_connection_get_state
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1064,1
    - Dst: relay_cmd_quit_relay
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1066,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - backend
    - cmd
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1045
    functionDepth: 2
    functionLinenumber: 1045
    functionLinenumberEnd: 1068
    functionName: backend_relay_cmd_quit
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_get_state
    - container_of
    - p_new
    - smtp_server_command_add_hook
    - relay_cmd_quit_relay
    linkageType: ''
    returnType: int
    signature: "int backend_relay_cmd_quit(struct submission_backend *backend,\n\t\t
      \      struct smtp_server_cmd_ctx *cmd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1084,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1085,1
    - Dst: submission_backend_init
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1086,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1089,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1092,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1096,1
    - Dst: mail_user_home_expand
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1101,1
    - Dst: smtp_server_connection_get_proxy_data
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1108,1
    - Dst: smtp_client_connection_create_unix
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1129,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1132,1
    - Dst: smtp_client_connection_create_ip
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1136,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 2
    argNames:
    - client
    - set
    argTypes:
    - struct client*
    - struct submision_backend_relay_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1074
    functionDepth: 2
    functionLinenumber: 1074
    functionLinenumberEnd: 1142
    functionName: submission_backend_relay_create
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - p_new
    - smtp_client_connection_create
    - smtp_client_connection_create_unix
    - smtp_client_connection_create_ip
    - submission_backend_init
    - event_set_append_log_prefix
    - event_want_debug
    - smtp_server_connection_get_proxy_data
    - mail_user_home_expand
    linkageType: ''
    returnType: struct submission_backend_relay
    signature: "struct submission_backend_relay *\nsubmission_backend_relay_create(\n\tstruct
      client *client,\n\tconst struct submision_backend_relay_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rbackend
    argTypes:
    - struct submission_backend_relay*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1144
    functionDepth: 0
    functionLinenumber: 1144
    functionLinenumberEnd: 1148
    functionName: submission_backend_relay_get
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct submission_backend
    signature: 'struct submission_backend *

      submission_backend_relay_get(struct submission_backend_relay *rbackend)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rbackend
    argTypes:
    - struct submission_backend_relay*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1150
    functionDepth: 0
    functionLinenumber: 1150
    functionLinenumberEnd: 1155
    functionName: submission_backend_relay_get_connection
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct smtp_client_connection
    signature: "struct smtp_client_connection *\nsubmission_backend_relay_get_connection(\n\tstruct
      submission_backend_relay *rbackend)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rbackend
    argTypes:
    - struct submission_backend_relay*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1157
    functionDepth: 0
    functionLinenumber: 1157
    functionLinenumberEnd: 1162
    functionName: submission_backend_relay_get_transaction
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct smtp_client_transaction
    signature: "struct smtp_client_transaction *\nsubmission_backend_relay_get_transaction(\n\tstruct
      submission_backend_relay *rbackend)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1167,1
    - Dst: smtp_client_transaction_destroy
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1170,1
    - Dst: smtp_client_connection_close
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1173
    functionName: backend_relay_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - container_of
    - smtp_client_connection_close
    - smtp_client_transaction_destroy
    linkageType: ''
    returnType: void
    signature: void backend_relay_destroy(struct submission_backend *backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: backend_relay_handle_relay_reply
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1183,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1185,1
    - Dst: e_error
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1186,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1187,1
    - Dst: submission_backend_fail
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1188,1
    - Dst: submission_backend_started
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1195,1
    - Dst: smtp_client_connection_get_capabilities
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1175
    functionDepth: 1
    functionLinenumber: 1175
    functionLinenumberEnd: 1197
    functionName: backend_relay_ready_cb
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - submission_backend_fail
    - smtp_client_connection_get_capabilities
    - e_error
    - backend_relay_handle_relay_reply
    - submission_backend_started
    - smtp_reply_log
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void backend_relay_ready_cb(const struct smtp_reply *reply,\n\t\t\t\t
      \  void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1202,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1199
    functionDepth: 1
    functionLinenumber: 1199
    functionLinenumberEnd: 1206
    functionName: backend_relay_start
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - container_of
    - smtp_client_connection_connect
    linkageType: ''
    returnType: void
    signature: void backend_relay_start(struct submission_backend *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1213,1
    - Dst: smtp_client_connection_cork
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1209
    functionDepth: 1
    functionLinenumber: 1209
    functionLinenumberEnd: 1217
    functionName: backend_relay_client_input_pre
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - container_of
    - smtp_client_connection_cork
    linkageType: ''
    returnType: void
    signature: void backend_relay_client_input_pre(struct submission_backend *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1222,1
    - Dst: smtp_client_connection_uncork
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1226
    functionName: backend_relay_client_input_post
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_uncork
    - container_of
    linkageType: ''
    returnType: void
    signature: void backend_relay_client_input_post(struct submission_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1232,1
    - Dst: smtp_client_connection_get_size_capability
      Src: /src/dovecot/src/submission/submission-backend-relay.c:1234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1235
    functionName: backend_relay_get_max_mail_size
    functionSourceFile: /src/dovecot/src/submission/submission-backend-relay.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_get_size_capability
    - container_of
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t backend_relay_get_max_mail_size(struct submission_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backends_client_input_pre
      Src: /src/dovecot/src/submission/submission-client.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: client_input_pre
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 1
    functionsReached:
    - submission_backends_client_input_pre
    linkageType: ''
    returnType: void
    signature: void client_input_pre(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backends_client_input_post
      Src: /src/dovecot/src/submission/submission-client.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: client_input_post
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 1
    functionsReached:
    - submission_backends_client_input_post
    linkageType: ''
    returnType: void
    signature: void client_input_post(void *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/submission/submission-client.c:70,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/submission/submission-client.c:73,1
    - Dst: strcmp
      Src: /src/dovecot/src/submission/submission-client.c:75,1
    - Dst: smtp_capability_find_by_name
      Src: /src/dovecot/src/submission/submission-client.c:77,1
    - Dst: e_warning
      Src: /src/dovecot/src/submission/submission-client.c:80,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/submission/submission-client.c:91,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 97
    functionName: client_parse_backend_capabilities
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_is_empty
    - settings_boollist_get
    - e_warning
    - HAS_ALL_BITS
    - smtp_capability_find_by_name
    linkageType: ''
    returnType: void
    signature: void client_parse_backend_capabilities(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_set_capabilities
      Src: /src/dovecot/src/submission/submission-client.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 113
    functionName: client_apply_backend_capabilities
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_set_capabilities
    linkageType: ''
    returnType: void
    signature: void client_apply_backend_capabilities(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_apply_backend_capabilities
      Src: /src/dovecot/src/submission/submission-client.c:121,1
    - Dst: smtp_server_connection_resume
      Src: /src/dovecot/src/submission/submission-client.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client
    - caps
    argTypes:
    - struct client*
    - enum smtp_capability
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 127
    functionName: client_default_backend_started
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_resume
    - client_apply_backend_capabilities
    linkageType: ''
    returnType: void
    signature: "void client_default_backend_started(struct client *client,\n\t\t\t\t
      \   enum smtp_capability caps)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/submission/submission-client.c:135,1
    - Dst: strcmp
      Src: /src/dovecot/src/submission/submission-client.c:149,1
    - Dst: strcmp
      Src: /src/dovecot/src/submission/submission-client.c:151,1
    - Dst: submission_backend_relay_create
      Src: /src/dovecot/src/submission/submission-client.c:158,1
    - Dst: submission_backend_relay_get
      Src: /src/dovecot/src/submission/submission-client.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - client
    - set
    argTypes:
    - struct client*
    - struct submission_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 161
    functionName: client_create_backend_default
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - submission_backend_relay_get
    - submission_backend_relay_create
    linkageType: ''
    returnType: void
    signature: "void client_create_backend_default(struct client *client,\n\t\t\t
      \     const struct submission_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/submission/submission-client.c:168,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/submission/submission-client.c:171,1
    - Dst: imap_urlauth_init
      Src: /src/dovecot/src/submission/submission-client.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 180
    functionName: client_init_urlauth
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 1
    functionsReached:
    - i_zero
    - t_strconcat
    - imap_urlauth_init
    linkageType: ''
    returnType: void
    signature: void client_init_urlauth(struct client *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/submission/submission-client.c:198,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/submission/submission-client.c:199,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/submission/submission-client.c:201,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-client.c:202,1
    - Dst: event_ref
      Src: /src/dovecot/src/submission/submission-client.c:206,1
    - Dst: i_array_init
      Src: /src/dovecot/src/submission/submission-client.c:210,1
    - Dst: i_array_init
      Src: /src/dovecot/src/submission/submission-client.c:211,1
    - Dst: i_array_init
      Src: /src/dovecot/src/submission/submission-client.c:212,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission/submission-client.c:214,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/submission/submission-client.c:222,1
    - Dst: client_parse_backend_capabilities
      Src: /src/dovecot/src/submission/submission-client.c:234,1
    - Dst: p_array_init
      Src: /src/dovecot/src/submission/submission-client.c:236,1
    - Dst: smtp_server_connection_create
      Src: /src/dovecot/src/submission/submission-client.c:238,1
    - Dst: smtp_server_connection_set_proxy_data
      Src: /src/dovecot/src/submission/submission-client.c:242,1
    - Dst: smtp_server_connection_login
      Src: /src/dovecot/src/submission/submission-client.c:243,1
    - Dst: client_create_backend_default
      Src: /src/dovecot/src/submission/submission-client.c:247,1
    - Dst: client_init_urlauth
      Src: /src/dovecot/src/submission/submission-client.c:252,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/submission/submission-client.c:256,1
    - Dst: mail_user_get_anvil_session
      Src: /src/dovecot/src/submission/submission-client.c:259,1
    - Dst: master_service_anvil_connect
      Src: /src/dovecot/src/submission/submission-client.c:260,1
    - Dst: hook_client_created
      Src: /src/dovecot/src/submission/submission-client.c:265,1
    - Dst: smtp_server_connection_abort
      Src: /src/dovecot/src/submission/submission-client.c:268,1
    - Dst: client_apply_backend_capabilities
      Src: /src/dovecot/src/submission/submission-client.c:273,1
    - Dst: smtp_server_connection_start
      Src: /src/dovecot/src/submission/submission-client.c:274,1
    - Dst: submission_backend_start
      Src: /src/dovecot/src/submission/submission-client.c:276,1
    - Dst: smtp_server_connection_start_pending
      Src: /src/dovecot/src/submission/submission-client.c:277,1
    - Dst: submission_refresh_proctitle
      Src: /src/dovecot/src/submission/submission-client.c:280,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 59
    argCount: 11
    argNames:
    - fd_in
    - fd_out
    - event
    - user
    - set
    - helo
    - proxy_data
    - pdata
    - pdata_len
    - no_greeting
    - have_mailbox_attribute_dict
    argTypes:
    - int
    - int
    - struct event*
    - struct mail_user*
    - struct submission_settings*
    - char*
    - struct smtp_proxy_data*
    - unsigned char*
    - unsigned int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 182
    functionDepth: 4
    functionLinenumber: 182
    functionLinenumberEnd: 282
    functionName: client_create
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 19
    functionsReached:
    - i_array_init
    - p_array_init
    - submission_backend_start
    - DLLIST_PREPEND
    - smtp_server_connection_start_pending
    - p_new
    - client_create_backend_default
    - event_ref
    - client_parse_backend_capabilities
    - i_zero
    - master_service_anvil_connect
    - smtp_server_connection_create
    - smtp_server_connection_abort
    - net_set_nonblock
    - pool_alloconly_create
    - smtp_server_connection_login
    - mail_user_get_anvil_session
    - smtp_server_connection_start
    - client_init_urlauth
    - submission_refresh_proctitle
    - hook_client_created
    - event_want_debug
    - client_apply_backend_capabilities
    - smtp_server_connection_set_proxy_data
    linkageType: ''
    returnType: struct client
    signature: "struct client *\nclient_create(int fd_in, int fd_out, struct event
      *event,\n\t      struct mail_user *user,\n\t      const struct submission_settings
      *set, const char *helo,\n\t      const struct smtp_proxy_data *proxy_data,\n\t
      \     const unsigned char *pdata, unsigned int pdata_len,\n\t      bool no_greeting,
      bool have_mailbox_attribute_dict)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/submission/submission-client.c:286,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/submission/submission-client.c:287,1
    - Dst: pool_unref
      Src: /src/dovecot/src/submission/submission-client.c:288,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission/submission-client.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 291
    functionName: client_state_reset
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 2
    functionsReached:
    - i_zero
    - i_free
    - pool_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void client_state_reset(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_terminate_full
      Src: /src/dovecot/src/submission/submission-client.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - _client
    - prefix
    - reply_reason
    - log_reason
    argTypes:
    - struct client**
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 304
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 65
    functionsReached:
    - smtp_server_connection_terminate_full
    linkageType: ''
    returnType: void
    signature: "void client_destroy(struct client **_client, const char *prefix,\n\t\t
      \   const char *reply_reason, const char *log_reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-client.c:309,1
    - Dst: submission_backends_destroy_all
      Src: /src/dovecot/src/submission/submission-client.c:315,1
    - Dst: array_free
      Src: /src/dovecot/src/submission/submission-client.c:316,1
    - Dst: array_free
      Src: /src/dovecot/src/submission/submission-client.c:317,1
    - Dst: array_free
      Src: /src/dovecot/src/submission/submission-client.c:318,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/submission/submission-client.c:321,1
    - Dst: mail_user_get_anvil_session
      Src: /src/dovecot/src/submission/submission-client.c:325,1
    - Dst: master_service_anvil_disconnect
      Src: /src/dovecot/src/submission/submission-client.c:326,1
    - Dst: imap_urlauth_deinit
      Src: /src/dovecot/src/submission/submission-client.c:331,1
    - Dst: mail_user_deinit
      Src: /src/dovecot/src/submission/submission-client.c:333,1
    - Dst: client_state_reset
      Src: /src/dovecot/src/submission/submission-client.c:335,1
    - Dst: settings_free
      Src: /src/dovecot/src/submission/submission-client.c:337,1
    - Dst: event_unref
      Src: /src/dovecot/src/submission/submission-client.c:338,1
    - Dst: pool_unref
      Src: /src/dovecot/src/submission/submission-client.c:339,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/submission/submission-client.c:341,1
    - Dst: submission_refresh_proctitle
      Src: /src/dovecot/src/submission/submission-client.c:342,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 306
    functionDepth: 4
    functionLinenumber: 306
    functionLinenumberEnd: 343
    functionName: client_default_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - mail_user_get_anvil_session
    - mail_user_deinit
    - event_unref
    - submission_refresh_proctitle
    - settings_free
    - submission_backends_destroy_all
    - pool_unref
    - imap_urlauth_deinit
    - array_free
    - client_state_reset
    - i_assert
    - DLLIST_REMOVE
    - master_service_anvil_disconnect
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void client_default_destroy(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/submission/submission-client.c:352,1
    - Dst: struct client*::v::trans_start
      Src: /src/dovecot/src/submission/submission-client.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - context
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 355
    functionName: client_connection_trans_start
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - struct client*::v::trans_start
    linkageType: ''
    returnType: void
    signature: "void client_connection_trans_start(void *context,\n\t\t\t      struct
      smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backends_trans_start
      Src: /src/dovecot/src/submission/submission-client.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - trans
    argTypes:
    - struct client*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 362
    functionName: client_default_trans_start
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - submission_backends_trans_start
    linkageType: ''
    returnType: void
    signature: "void client_default_trans_start(struct client *client,\n\t\t\t   struct
      smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::trans_free
      Src: /src/dovecot/src/submission/submission-client.c:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 371
    functionName: client_connection_trans_free
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - struct client*::v::trans_free
    linkageType: ''
    returnType: void
    signature: "void client_connection_trans_free(void *context,\n\t\t\t     struct
      smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_clear
      Src: /src/dovecot/src/submission/submission-client.c:377,1
    - Dst: submission_backends_trans_free
      Src: /src/dovecot/src/submission/submission-client.c:379,1
    - Dst: client_state_reset
      Src: /src/dovecot/src/submission/submission-client.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - client
    - trans
    argTypes:
    - struct client*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 381
    functionName: client_default_trans_free
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - client_state_reset
    - array_clear
    - submission_backends_trans_free
    linkageType: ''
    returnType: void
    signature: "void client_default_trans_free(struct client *client,\n\t\t\t  struct
      smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/submission/submission-client.c:390,1
    - Dst: i_strdup
      Src: /src/dovecot/src/submission/submission-client.c:393,1
    - Dst: submission_refresh_proctitle
      Src: /src/dovecot/src/submission/submission-client.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - new_state
    - new_args
    argTypes:
    - void*
    - enum smtp_server_state
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 397
    functionName: client_connection_state_changed
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - submission_refresh_proctitle
    - i_free
    linkageType: ''
    returnType: void
    signature: "void client_connection_state_changed(void *context ATTR_UNUSED,\n\t\t\t\tenum
      smtp_server_state new_state,\n\t\t\t\tconst char *new_args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_get_stats
      Src: /src/dovecot/src/submission/submission-client.c:402,1
    - Dst: smtp_server_connection_get_transaction_id
      Src: /src/dovecot/src/submission/submission-client.c:404,1
    - Dst: dec2str
      Src: /src/dovecot/src/submission/submission-client.c:406,1
    - Dst: dec2str
      Src: /src/dovecot/src/submission/submission-client.c:407,1
    - Dst: dec2str
      Src: /src/dovecot/src/submission/submission-client.c:408,1
    - Dst: dec2str
      Src: /src/dovecot/src/submission/submission-client.c:409,1
    - Dst: mail_user_var_expand_params
      Src: /src/dovecot/src/submission/submission-client.c:415,1
    - Dst: event_add_int
      Src: /src/dovecot/src/submission/submission-client.c:430,1
    - Dst: event_add_int
      Src: /src/dovecot/src/submission/submission-client.c:431,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission/submission-client.c:433,1
    - Dst: var_expand
      Src: /src/dovecot/src/submission/submission-client.c:434,1
    - Dst: e_error
      Src: /src/dovecot/src/submission/submission-client.c:436,1
    - Dst: str_c
      Src: /src/dovecot/src/submission/submission-client.c:441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 442
    functionName: client_stats
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 4
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - smtp_server_connection_get_transaction_id
    - mail_user_var_expand_params
    - e_error
    - smtp_server_connection_get_stats
    - var_expand
    - event_add_int
    linkageType: ''
    returnType: char
    signature: char *client_stats(struct client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/submission/submission-client.c:453,1
    - Dst: submission_backends_destroy_all
      Src: /src/dovecot/src/submission/submission-client.c:454,1
    - Dst: array_is_created
      Src: /src/dovecot/src/submission/submission-client.c:456,1
    - Dst: array_clear
      Src: /src/dovecot/src/submission/submission-client.c:457,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/submission/submission-client.c:462,1
    - Dst: e_info
      Src: /src/dovecot/src/submission/submission-client.c:463,1
    - Dst: client_stats
      Src: /src/dovecot/src/submission/submission-client.c:464,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - context
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 465
    functionName: client_connection_disconnect
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 6
    functionsReached:
    - t_str_oneline
    - e_info
    - client_stats
    - submission_backends_destroy_all
    - array_clear
    - array_is_created
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_connection_disconnect(void *context, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::destroy
      Src: /src/dovecot/src/submission/submission-client.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 472
    functionName: client_connection_free
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - struct client*::v::destroy
    linkageType: ''
    returnType: void
    signature: void client_connection_free(void *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_get_max_mail_size
      Src: /src/dovecot/src/submission/submission-client.c:486,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 496
    functionName: client_get_max_mail_size
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 1
    functionsReached:
    - submission_backend_get_max_mail_size
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t client_get_max_mail_size(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-client.c:504,1
    - Dst: smtp_capability_find_by_name
      Src: /src/dovecot/src/submission/submission-client.c:504,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-client.c:508,1
    - Dst: smtp_ehlo_keyword_is_valid
      Src: /src/dovecot/src/submission/submission-client.c:508,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-client.c:509,1
    - Dst: smtp_ehlo_params_str_is_valid
      Src: /src/dovecot/src/submission/submission-client.c:509,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission/submission-client.c:511,1
    - Dst: p_strdup
      Src: /src/dovecot/src/submission/submission-client.c:512,1
    - Dst: p_strdup
      Src: /src/dovecot/src/submission/submission-client.c:513,1
    - Dst: array_is_created
      Src: /src/dovecot/src/submission/submission-client.c:515,1
    - Dst: p_array_init
      Src: /src/dovecot/src/submission/submission-client.c:516,1
    - Dst: array_push_back
      Src: /src/dovecot/src/submission/submission-client.c:518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - client
    - capability
    - params
    argTypes:
    - struct client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 519
    functionName: client_add_extra_capability
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - p_strdup
    - p_array_init
    - array_push_back
    - smtp_ehlo_params_str_is_valid
    - array_is_created
    - smtp_ehlo_keyword_is_valid
    - smtp_capability_find_by_name
    linkageType: ''
    returnType: void
    signature: "void client_add_extra_capability(struct client *client, const char
      *capability,\n\t\t\t\t const char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_service_io_activate_user
      Src: /src/dovecot/src/submission/submission-client.c:523,1
    - Dst: client_destroy
      Src: /src/dovecot/src/submission/submission-client.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - shutdown
    argTypes:
    - struct client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 527
    functionName: client_kick
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 7
    functionsReached:
    - client_destroy
    - mail_storage_service_io_activate_user
    linkageType: ''
    returnType: void
    signature: void client_kick(struct client *client, bool shutdown)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_is_user_kicked
      Src: /src/dovecot/src/submission/submission-client.c:531,1
    - Dst: client_kick
      Src: /src/dovecot/src/submission/submission-client.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 534
    functionName: clients_destroy_all
    functionSourceFile: /src/dovecot/src/submission/submission-client.c
    functionUses: 7
    functionsReached:
    - master_service_is_user_kicked
    - client_kick
    linkageType: ''
    returnType: void
    signature: void clients_destroy_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/submission/submission-backend.c:21,1
    - Dst: p_array_init
      Src: /src/dovecot/src/submission/submission-backend.c:25,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/submission/submission-backend.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - backend
    - pool
    - client
    - vfunc
    argTypes:
    - struct submission_backend*
    - pool_t
    - struct client*
    - struct submission_backend_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 29
    functionName: submission_backend_init
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - event_create
    - DLLIST_PREPEND
    - p_array_init
    linkageType: ''
    returnType: void
    signature: "void submission_backend_init(struct submission_backend *backend,\n\t\t\t
      \    pool_t pool, struct client *client,\n\t\t\t     const struct submission_backend_vfuncs
      *vfunc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/submission/submission-backend.c:35,1
    - Dst: i_free
      Src: /src/dovecot/src/submission/submission-backend.c:37,1
    - Dst: i_free
      Src: /src/dovecot/src/submission/submission-backend.c:38,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/submission/submission-backend.c:40,1
    - Dst: struct submission_backend*::v::destroy
      Src: /src/dovecot/src/submission/submission-backend.c:41,1
    - Dst: event_unref
      Src: /src/dovecot/src/submission/submission-backend.c:43,1
    - Dst: pool_unref
      Src: /src/dovecot/src/submission/submission-backend.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 45
    functionName: submission_backend_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - event_unref
    - struct submission_backend*::v::destroy
    - pool_unref
    - i_stream_unref
    - i_free
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void submission_backend_destroy(struct submission_backend *backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_destroy
      Src: /src/dovecot/src/submission/submission-backend.c:50,1
    - Dst: array_clear
      Src: /src/dovecot/src/submission/submission-backend.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: submission_backends_destroy_all
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 2
    functionsReached:
    - submission_backend_destroy
    - array_clear
    linkageType: ''
    returnType: void
    signature: void submission_backends_destroy_all(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct submission_backend*::v::start
      Src: /src/dovecot/src/submission/submission-backend.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 65
    functionName: submission_backend_start
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - struct submission_backend*::v::start
    linkageType: ''
    returnType: void
    signature: void submission_backend_start(struct submission_backend *backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_default_backend_started
      Src: /src/dovecot/src/submission/submission-backend.c:73,1
    - Dst: struct submission_backend*::v::ready
      Src: /src/dovecot/src/submission/submission-backend.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - backend
    - caps
    argTypes:
    - struct submission_backend*
    - enum smtp_capability
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: submission_backend_started
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - client_default_backend_started
    - struct submission_backend*::v::ready
    linkageType: ''
    returnType: void
    signature: "void submission_backend_started(struct submission_backend *backend,\n\t\t\t\tenum
      smtp_capability caps)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:87,1
    - Dst: array_count
      Src: /src/dovecot/src/submission/submission-backend.c:87,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:89,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/submission/submission-backend.c:93,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/submission/submission-backend.c:101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 103
    functionName: submission_backend_fail_rcpts
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_reply
    - array_count
    - i_assert
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void submission_backend_fail_rcpts(struct submission_backend *backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:115,1
    - Dst: smtp_server_command_get_reply_count
      Src: /src/dovecot/src/submission/submission-backend.c:115,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-backend.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - backend
    - cmd
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 117
    functionName: submission_backend_reply_failure
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - i_assert
    - smtp_server_reply
    - smtp_server_command_get_reply_count
    linkageType: ''
    returnType: void
    signature: "void submission_backend_reply_failure(struct submission_backend *backend,\n\t\t\t\t
      struct smtp_server_cmd_ctx *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_reply_failure
      Src: /src/dovecot/src/submission/submission-backend.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - backend
    - cmd
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 129
    functionName: submission_backend_handle_failure
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - submission_backend_reply_failure
    linkageType: ''
    returnType: bool
    signature: "bool submission_backend_handle_failure(struct submission_backend *backend,\n\t\t\t\t
      \ struct smtp_server_cmd_ctx *cmd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/submission/submission-backend.c:142,1
    - Dst: i_strdup
      Src: /src/dovecot/src/submission/submission-backend.c:152,1
    - Dst: i_strdup
      Src: /src/dovecot/src/submission/submission-backend.c:153,1
    - Dst: smtp_server_command_get_reply_count
      Src: /src/dovecot/src/submission/submission-backend.c:157,1
    - Dst: submission_backend_fail_rcpts
      Src: /src/dovecot/src/submission/submission-backend.c:159,1
    - Dst: submission_backend_reply_failure
      Src: /src/dovecot/src/submission/submission-backend.c:162,1
    - Dst: struct submission_backend*::v::fail
      Src: /src/dovecot/src/submission/submission-backend.c:167,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - backend
    - cmd
    - enh_code
    - reason
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 170
    functionName: submission_backend_fail
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - submission_backend_fail_rcpts
    - client_destroy
    - struct submission_backend*::v::fail
    - submission_backend_reply_failure
    - smtp_server_command_get_reply_count
    - i_strdup
    linkageType: ''
    returnType: void
    signature: "void submission_backend_fail(struct submission_backend *backend,\n\t\t\t
      \    struct smtp_server_cmd_ctx *cmd,\n\t\t\t     const char *enh_code, const
      char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct submission_backend*::v::client_input_pre
      Src: /src/dovecot/src/submission/submission-backend.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 184
    functionName: submission_backends_client_input_pre
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - struct submission_backend*::v::client_input_pre
    linkageType: ''
    returnType: void
    signature: void submission_backends_client_input_pre(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct submission_backend*::v::client_input_post
      Src: /src/dovecot/src/submission/submission-backend.c:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 197
    functionName: submission_backends_client_input_post
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - struct submission_backend*::v::client_input_post
    linkageType: ''
    returnType: void
    signature: void submission_backends_client_input_post(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct submission_backend*::v::get_max_mail_size
      Src: /src/dovecot/src/submission/submission-backend.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: submission_backend_get_max_mail_size
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - struct submission_backend*::v::get_max_mail_size
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t submission_backend_get_max_mail_size(struct submission_backend
      *backend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_start
      Src: /src/dovecot/src/submission/submission-backend.c:209,1
    - Dst: struct submission_backend*::v::trans_start
      Src: /src/dovecot/src/submission/submission-backend.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - backend
    - trans
    argTypes:
    - struct submission_backend*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 219
    functionName: submission_backend_trans_start
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - submission_backend_start
    - struct submission_backend*::v::trans_start
    linkageType: ''
    returnType: void
    signature: "void submission_backend_trans_start(struct submission_backend *backend,\n\t\t\t\t
      \   struct smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/submission/submission-backend.c:225,1
    - Dst: struct submission_backend*::v::trans_free
      Src: /src/dovecot/src/submission/submission-backend.c:227,1
    - Dst: i_free
      Src: /src/dovecot/src/submission/submission-backend.c:230,1
    - Dst: i_free
      Src: /src/dovecot/src/submission/submission-backend.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - backend
    - trans
    argTypes:
    - struct submission_backend*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 232
    functionName: submission_backend_trans_free
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - struct submission_backend*::v::trans_free
    - i_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void submission_backend_trans_free(struct submission_backend *backend,\n\t\t\t
      \     struct smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:239,1
    - Dst: submission_backend_trans_start
      Src: /src/dovecot/src/submission/submission-backend.c:240,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/submission/submission-backend.c:242,1
    - Dst: submission_backend_trans_start
      Src: /src/dovecot/src/submission/submission-backend.c:243,1
    - Dst: array_clear
      Src: /src/dovecot/src/submission/submission-backend.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - client
    - trans
    argTypes:
    - struct client*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 245
    functionName: submission_backends_trans_start
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - submission_backend_trans_start
    - i_assert
    - array_clear
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void submission_backends_trans_start(struct client *client,\n\t\t\t\t
      \    struct smtp_server_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:252,1
    - Dst: array_count
      Src: /src/dovecot/src/submission/submission-backend.c:253,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/submission/submission-backend.c:255,1
    - Dst: submission_backend_trans_free
      Src: /src/dovecot/src/submission/submission-backend.c:256,1
    - Dst: array_clear
      Src: /src/dovecot/src/submission/submission-backend.c:257,1
    - Dst: array_clear
      Src: /src/dovecot/src/submission/submission-backend.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - client
    - trans
    argTypes:
    - struct client*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 260
    functionName: submission_backends_trans_free
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - array_count
    - array_clear
    - submission_backend_trans_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void submission_backends_trans_free(struct client *client,\n\t\t\t\t
      \    struct smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:267,1
    - Dst: submission_helo_reply_submit
      Src: /src/dovecot/src/submission/submission-backend.c:271,1
    - Dst: struct submission_backend*::v::cmd_helo
      Src: /src/dovecot/src/submission/submission-backend.c:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - backend
    - cmd
    - data
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 276
    functionName: submission_backend_cmd_helo
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - struct submission_backend*::v::cmd_helo
    - i_assert
    - submission_helo_reply_submit
    linkageType: ''
    returnType: int
    signature: "int submission_backend_cmd_helo(struct submission_backend *backend,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd,\n\t\t\t\tstruct smtp_server_cmd_helo *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_helo_reply_submit
      Src: /src/dovecot/src/submission/submission-backend.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - data
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 283
    functionName: submission_backend_helo_reply_submit
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 1
    functionsReached:
    - submission_helo_reply_submit
    linkageType: ''
    returnType: void
    signature: "void submission_backend_helo_reply_submit(\n\tstruct submission_backend
      *backend ATTR_UNUSED,\n\tstruct smtp_server_cmd_ctx *cmd, struct smtp_server_cmd_helo
      *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_handle_failure
      Src: /src/dovecot/src/submission/submission-backend.c:289,1
    - Dst: submission_backend_start
      Src: /src/dovecot/src/submission/submission-backend.c:292,1
    - Dst: struct submission_backend*::v::cmd_mail
      Src: /src/dovecot/src/submission/submission-backend.c:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - backend
    - cmd
    - data
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 300
    functionName: submission_backend_cmd_mail
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - struct submission_backend*::v::cmd_mail
    - submission_backend_start
    - submission_backend_handle_failure
    linkageType: ''
    returnType: int
    signature: "int submission_backend_cmd_mail(struct submission_backend *backend,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd,\n\t\t\t\tstruct smtp_server_cmd_mail *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr
      Src: /src/dovecot/src/submission/submission-backend.c:307,1
    - Dst: array_push_back
      Src: /src/dovecot/src/submission/submission-backend.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - backend
    argTypes:
    - struct submission_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 311
    functionName: submission_backend_add_pending
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - array_lsearch_ptr
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void submission_backend_add_pending(struct submission_backend *backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_handle_failure
      Src: /src/dovecot/src/submission/submission-backend.c:319,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:322,1
    - Dst: smtp_server_connection_get_transaction
      Src: /src/dovecot/src/submission/submission-backend.c:329,1
    - Dst: submission_backend_trans_start
      Src: /src/dovecot/src/submission/submission-backend.c:331,1
    - Dst: submission_backend_add_pending
      Src: /src/dovecot/src/submission/submission-backend.c:333,1
    - Dst: struct submission_backend*::v::cmd_rcpt
      Src: /src/dovecot/src/submission/submission-backend.c:335,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - backend
    - cmd
    - srcpt
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct submission_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 313
    functionDepth: 3
    functionLinenumber: 313
    functionLinenumberEnd: 336
    functionName: submission_backend_cmd_rcpt
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - submission_backend_trans_start
    - submission_backend_add_pending
    - struct submission_backend*::v::cmd_rcpt
    - submission_backend_handle_failure
    - i_assert
    - smtp_server_connection_get_transaction
    linkageType: ''
    returnType: int
    signature: "int submission_backend_cmd_rcpt(struct submission_backend *backend,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd,\n\t\t\t\tstruct submission_recipient *srcpt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_handle_failure
      Src: /src/dovecot/src/submission/submission-backend.c:341,1
    - Dst: submission_backend_start
      Src: /src/dovecot/src/submission/submission-backend.c:344,1
    - Dst: struct submission_backend*::v::cmd_rset
      Src: /src/dovecot/src/submission/submission-backend.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - backend
    - cmd
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 3
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: submission_backend_cmd_rset
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - struct submission_backend*::v::cmd_rset
    - submission_backend_start
    - submission_backend_handle_failure
    linkageType: ''
    returnType: int
    signature: "int submission_backend_cmd_rset(struct submission_backend *backend,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_fail_rcpts
      Src: /src/dovecot/src/submission/submission-backend.c:359,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:363,1
    - Dst: struct submission_backend*::v::cmd_data
      Src: /src/dovecot/src/submission/submission-backend.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - backend
    - cmd
    - trans
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 367
    functionName: submission_backend_cmd_data
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - struct submission_backend*::v::cmd_data
    - i_assert
    - submission_backend_fail_rcpts
    linkageType: ''
    returnType: int
    signature: "int submission_backend_cmd_data(struct submission_backend *backend,\n\t\t\t
      \   struct smtp_server_cmd_ctx *cmd,\n\t\t\t    struct smtp_server_transaction
      *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:377,1
    - Dst: array_count
      Src: /src/dovecot/src/submission/submission-backend.c:377,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/submission/submission-backend.c:381,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/submission/submission-backend.c:384,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/submission/submission-backend.c:386,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/submission/submission-backend.c:393,1
    - Dst: submission_backend_cmd_data
      Src: /src/dovecot/src/submission/submission-backend.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - client
    - cmd
    - trans
    - data_input
    - data_size
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 400
    functionName: submission_backends_cmd_data
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - array_count
    - submission_backend_cmd_data
    - i_stream_seek
    - i_stream_create_sized
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int submission_backends_cmd_data(struct client *client,\n\t\t\t\t
      struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t struct smtp_server_transaction *trans,\n\t\t\t\t
      struct istream *data_input, uoff_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:407,1
    - Dst: submission_backend_start
      Src: /src/dovecot/src/submission/submission-backend.c:409,1
    - Dst: struct submission_backend*::v::cmd_vrfy
      Src: /src/dovecot/src/submission/submission-backend.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - backend
    - cmd
    - param
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 416
    functionName: submission_backend_cmd_vrfy
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - struct submission_backend*::v::cmd_vrfy
    - submission_backend_start
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int submission_backend_cmd_vrfy(struct submission_backend *backend,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd,\n\t\t\t\tconst char *param)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:422,1
    - Dst: submission_backend_start
      Src: /src/dovecot/src/submission/submission-backend.c:424,1
    - Dst: struct submission_backend*::v::cmd_noop
      Src: /src/dovecot/src/submission/submission-backend.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - backend
    - cmd
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 431
    functionName: submission_backend_cmd_noop
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - submission_backend_start
    - i_assert
    - struct submission_backend*::v::cmd_noop
    linkageType: ''
    returnType: int
    signature: "int submission_backend_cmd_noop(struct submission_backend *backend,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-backend.c:437,1
    - Dst: struct submission_backend*::v::cmd_quit
      Src: /src/dovecot/src/submission/submission-backend.c:447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - backend
    - cmd
    argTypes:
    - struct submission_backend*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 448
    functionName: submission_backend_cmd_quit
    functionSourceFile: /src/dovecot/src/submission/submission-backend.c
    functionUses: 0
    functionsReached:
    - struct submission_backend*::v::cmd_quit
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int submission_backend_cmd_quit(struct submission_backend *backend,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-recipient.c:21,1
    - Dst: p_array_init
      Src: /src/dovecot/src/submission/submission-recipient.c:27,1
    - Dst: smtp_server_recipient_add_hook
      Src: /src/dovecot/src/submission/submission-recipient.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - client
    - rcpt
    argTypes:
    - struct client*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 34
    functionName: submission_recipient_create
    functionSourceFile: /src/dovecot/src/submission/submission-recipient.c
    functionUses: 0
    functionsReached:
    - p_new
    - p_array_init
    - smtp_server_recipient_add_hook
    linkageType: ''
    returnType: struct submission_recipient
    signature: "struct submission_recipient *\nsubmission_recipient_create(struct
      client *client,\n\t\t\t    struct smtp_server_recipient *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/submission/submission-recipient.c:43,1
    - Dst: array_lsearch_ptr
      Src: /src/dovecot/src/submission/submission-recipient.c:45,1
    - Dst: array_push_back
      Src: /src/dovecot/src/submission/submission-recipient.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - srcpt
    argTypes:
    - struct smtp_server_recipient*
    - struct submission_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: submission_recipient_approved
    functionSourceFile: /src/dovecot/src/submission/submission-recipient.c
    functionUses: 0
    functionsReached:
    - array_lsearch_ptr
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void submission_recipient_approved(struct smtp_server_recipient *rcpt
      ATTR_UNUSED,\n\t\t\t      struct submission_recipient *srcpt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/submission/submission-commands.c:30,1
    - Dst: array_foreach
      Src: /src/dovecot/src/submission/submission-commands.c:33,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:35,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/submission/submission-commands.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - client
    - reply
    argTypes:
    - struct client*
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 41
    functionName: submission_helo_reply_add_extra
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - smtp_server_reply_ehlo_add
    - smtp_server_reply_ehlo_add_param
    - array_foreach
    linkageType: ''
    returnType: void
    signature: "void submission_helo_reply_add_extra(struct client *client,\n\t\t\t\tstruct
      smtp_server_reply *reply)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_get_context
      Src: /src/dovecot/src/submission/submission-commands.c:46,1
    - Dst: smtp_server_reply_create_ehlo
      Src: /src/dovecot/src/submission/submission-commands.c:51,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission/submission-commands.c:53,1
    - Dst: str_append
      Src: /src/dovecot/src/submission/submission-commands.c:55,1
    - Dst: strcmp
      Src: /src/dovecot/src/submission/submission-commands.c:57,1
    - Dst: str_printfa
      Src: /src/dovecot/src/submission/submission-commands.c:59,1
    - Dst: str_printfa
      Src: /src/dovecot/src/submission/submission-commands.c:62,1
    - Dst: str_printfa
      Src: /src/dovecot/src/submission/submission-commands.c:66,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:71,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:74,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:76,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:79,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/submission/submission-commands.c:80,1
    - Dst: str_c
      Src: /src/dovecot/src/submission/submission-commands.c:81,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:82,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:84,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:85,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:87,1
    - Dst: client_get_max_mail_size
      Src: /src/dovecot/src/submission/submission-commands.c:90,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/submission/submission-commands.c:92,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:95,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission/submission-commands.c:98,1
    - Dst: submission_helo_reply_add_extra
      Src: /src/dovecot/src/submission/submission-commands.c:100,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/submission/submission-commands.c:102,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 103
    functionName: submission_helo_reply_submit
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 2
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_printfa
    - smtp_server_reply_ehlo_add
    - smtp_server_reply_submit
    - smtp_server_reply_create_ehlo
    - str_append
    - smtp_server_reply_ehlo_add_param
    - smtp_server_connection_get_context
    - submission_helo_reply_add_extra
    - client_get_max_mail_size
    linkageType: ''
    returnType: void
    signature: "void submission_helo_reply_submit(struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t
      \ struct smtp_server_cmd_helo *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_get_state
      Src: /src/dovecot/src/submission/submission-commands.c:111,1
    - Dst: struct client*::v::cmd_helo
      Src: /src/dovecot/src/submission/submission-commands.c:113,1
    - Dst: submission_helo_reply_submit
      Src: /src/dovecot/src/submission/submission-commands.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - data
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 118
    functionName: cmd_helo
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 2
    functionsReached:
    - smtp_server_connection_get_state
    - struct client*::v::cmd_helo
    - submission_helo_reply_submit
    linkageType: ''
    returnType: int
    signature: "int cmd_helo(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t
      \    struct smtp_server_cmd_helo *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_cmd_helo
      Src: /src/dovecot/src/submission/submission-commands.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - cmd
    - data
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 125
    functionName: client_default_cmd_helo
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - submission_backend_cmd_helo
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_helo(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t    struct smtp_server_cmd_helo *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::cmd_mail
      Src: /src/dovecot/src/submission/submission-commands.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - data
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: cmd_mail
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 3
    functionsReached:
    - struct client*::v::cmd_mail
    linkageType: ''
    returnType: int
    signature: "int cmd_mail(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t
      \    struct smtp_server_cmd_mail *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:150,1
    - Dst: submission_backend_cmd_mail
      Src: /src/dovecot/src/submission/submission-commands.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - client
    - cmd
    - data
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 142
    functionDepth: 4
    functionLinenumber: 142
    functionLinenumberEnd: 156
    functionName: client_default_cmd_mail
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - submission_backend_cmd_mail
    - smtp_server_reply
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_mail(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t    struct smtp_server_cmd_mail *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_recipient_create
      Src: /src/dovecot/src/submission/submission-commands.c:168,1
    - Dst: struct client*::v::cmd_rcpt
      Src: /src/dovecot/src/submission/submission-commands.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 171
    functionName: cmd_rcpt
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 3
    functionsReached:
    - struct client*::v::cmd_rcpt
    - submission_recipient_create
    linkageType: ''
    returnType: int
    signature: "int cmd_rcpt(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t
      \    struct smtp_server_recipient *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/submission/submission-commands.c:181,1
    - Dst: submission_backend_cmd_rcpt
      Src: /src/dovecot/src/submission/submission-commands.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - srcpt
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct submission_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 188
    functionName: client_default_cmd_rcpt
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_reply
    - submission_backend_cmd_rcpt
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_rcpt(struct client *client ATTR_UNUSED,\n\t\t\t
      \   struct smtp_server_cmd_ctx *cmd,\n\t\t\t    struct submission_recipient
      *srcpt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::cmd_rset
      Src: /src/dovecot/src/submission/submission-commands.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn_ctx
    - cmd
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: cmd_rset
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 2
    functionsReached:
    - struct client*::v::cmd_rset
    linkageType: ''
    returnType: int
    signature: int cmd_rset(void *conn_ctx, struct smtp_server_cmd_ctx *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_cmd_rset
      Src: /src/dovecot/src/submission/submission-commands.c:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - client
    - cmd
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 212
    functionName: client_default_cmd_rset
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - submission_backend_cmd_rset
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_rset(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/submission/submission-commands.c:230,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/submission/submission-commands.c:231,1
    - Dst: smtp_server_cmd_data_check_size
      Src: /src/dovecot/src/submission/submission-commands.c:232,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission/submission-commands.c:249,1
    - Dst: smtp_server_transaction_write_trace_record
      Src: /src/dovecot/src/submission/submission-commands.c:251,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/submission/submission-commands.c:255,1
    - Dst: i_stream_create_copy_from_data
      Src: /src/dovecot/src/submission/submission-commands.c:256,1
    - Dst: str_data
      Src: /src/dovecot/src/submission/submission-commands.c:257,1
    - Dst: str_len
      Src: /src/dovecot/src/submission/submission-commands.c:257,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/submission/submission-commands.c:261,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/submission/submission-commands.c:262,1
    - Dst: str_len
      Src: /src/dovecot/src/submission/submission-commands.c:263,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/submission/submission-commands.c:265,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/submission/submission-commands.c:266,1
    - Dst: struct client*::v::cmd_data
      Src: /src/dovecot/src/submission/submission-commands.c:268,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/submission/submission-commands.c:270,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - trans
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 272
    functionName: cmd_data_continue
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - i_stream_set_name
    - struct client*::v::cmd_data
    - i_stream_skip
    - smtp_server_transaction_write_trace_record
    - smtp_server_cmd_data_check_size
    - i_stream_create_copy_from_data
    - i_stream_seek
    - i_stream_unref
    - i_stream_create_concat
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int cmd_data_continue(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t\t
      \     struct smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:284,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission/submission-commands.c:292,1
    - Dst: mail_user_set_get_temp_prefix
      Src: /src/dovecot/src/submission/submission-commands.c:293,1
    - Dst: i_stream_create_seekable_path
      Src: /src/dovecot/src/submission/submission-commands.c:294,1
    - Dst: str_c
      Src: /src/dovecot/src/submission/submission-commands.c:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - conn_ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 297
    functionName: cmd_data_begin
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_stream_create_seekable_path
    - mail_user_set_get_temp_prefix
    - smtp_server_reply
    linkageType: ''
    returnType: int
    signature: "int cmd_data_begin(void *conn_ctx,\n\t\t   struct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\t   struct smtp_server_transaction *trans ATTR_UNUSED,\n\t\t
      \  struct istream *data_input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backends_cmd_data
      Src: /src/dovecot/src/submission/submission-commands.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - client
    - cmd
    - trans
    - data_input
    - data_size
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 299
    functionDepth: 4
    functionLinenumber: 299
    functionLinenumberEnd: 306
    functionName: client_default_cmd_data
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - submission_backends_cmd_data
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_data(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t    struct smtp_server_transaction *trans,\n\t\t\t
      \   struct istream *data_input, uoff_t data_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_urlauth_fetch_deinit
      Src: /src/dovecot/src/submission/submission-commands.c:333,1
    - Dst: imap_msgpart_url_free
      Src: /src/dovecot/src/submission/submission-commands.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - burl_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_burl_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 328
    functionDepth: 5
    functionLinenumber: 328
    functionLinenumberEnd: 336
    functionName: cmd_burl_destroy
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_fetch_deinit
    - imap_msgpart_url_free
    linkageType: ''
    returnType: void
    signature: "void cmd_burl_destroy(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      struct cmd_burl_context *burl_cmd)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission/submission-commands.c:352,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:357,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:361,1
    - Dst: smtp_server_connection_data_chunk_add
      Src: /src/dovecot/src/submission/submission-commands.c:368,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - reply
    - last
    - context
    argTypes:
    - struct imap_urlauth_fetch_reply*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 376
    functionName: cmd_burl_fetch_cb
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - i_assert
    - smtp_server_reply
    - smtp_server_connection_data_chunk_add
    linkageType: ''
    returnType: int
    signature: "int cmd_burl_fetch_cb(struct imap_urlauth_fetch_reply *reply,\n\t\t
      \ bool last, void *context)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/submission/submission-commands.c:392,1
    - Dst: strcmp
      Src: /src/dovecot/src/submission/submission-commands.c:393,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:394,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:403,1
    - Dst: imap_msgpart_url_create
      Src: /src/dovecot/src/submission/submission-commands.c:410,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:412,1
    - Dst: imap_msgpart_url_read_part
      Src: /src/dovecot/src/submission/submission-commands.c:416,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:418,1
    - Dst: smtp_server_connection_data_chunk_add
      Src: /src/dovecot/src/submission/submission-commands.c:423,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - burl_cmd
    - imap_url
    argTypes:
    - struct cmd_burl_context*
    - struct imap_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 430
    functionName: cmd_burl_fetch_trusted
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - strcmp
    - smtp_server_reply
    - imap_msgpart_url_create
    - imap_msgpart_url_read_part
    - smtp_server_connection_data_chunk_add
    linkageType: ''
    returnType: int
    signature: "int cmd_burl_fetch_trusted(struct cmd_burl_context *burl_cmd,\n\t\t
      \      struct imap_url *imap_url)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:449,1
    - Dst: imap_urlauth_fetch_init
      Src: /src/dovecot/src/submission/submission-commands.c:456,1
    - Dst: imap_urlauth_fetch_url_parsed
      Src: /src/dovecot/src/submission/submission-commands.c:458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - burl_cmd
    - url
    - imap_url
    argTypes:
    - struct cmd_burl_context*
    - char*
    - struct imap_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 432
    functionDepth: 6
    functionLinenumber: 432
    functionLinenumberEnd: 464
    functionName: cmd_burl_fetch
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - imap_urlauth_fetch_init
    - smtp_server_reply
    - imap_urlauth_fetch_url_parsed
    linkageType: ''
    returnType: int
    signature: "int cmd_burl_fetch(struct cmd_burl_context *burl_cmd, const char *url,\n\t
      \      struct imap_url *imap_url)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_get_context
      Src: /src/dovecot/src/submission/submission-commands.c:469,1
    - Dst: smtp_server_connection_data_chunk_init
      Src: /src/dovecot/src/submission/submission-commands.c:479,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/submission/submission-commands.c:484,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:487,1
    - Dst: imap_url_parse
      Src: /src/dovecot/src/submission/submission-commands.c:490,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:492,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/submission/submission-commands.c:496,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:497,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:501,1
    - Dst: smtp_server_connection_data_check_state
      Src: /src/dovecot/src/submission/submission-commands.c:509,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:513,1
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-commands.c:518,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-commands.c:523,1
    - Dst: cmd_burl_fetch_trusted
      Src: /src/dovecot/src/submission/submission-commands.c:528,1
    - Dst: cmd_burl_fetch
      Src: /src/dovecot/src/submission/submission-commands.c:530,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/submission/submission-commands.c:534,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 466
    functionDepth: 7
    functionLinenumber: 466
    functionLinenumberEnd: 535
    functionName: cmd_burl
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - cmd_burl_fetch
    - p_new
    - smtp_server_command_add_hook
    - smtp_server_command_input_lock
    - smtp_server_reply
    - strcasecmp
    - cmd_burl_fetch_trusted
    - smtp_server_connection_data_check_state
    - t_strsplit
    - smtp_server_connection_data_chunk_init
    - smtp_server_connection_get_context
    - imap_url_parse
    linkageType: ''
    returnType: void
    signature: void cmd_burl(struct smtp_server_cmd_ctx *cmd, const char *params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission/submission-commands.c:547,1
    - Dst: struct client*::v::cmd_vrfy
      Src: /src/dovecot/src/submission/submission-commands.c:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - param
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 553
    functionName: cmd_vrfy
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 2
    functionsReached:
    - struct client*::v::cmd_vrfy
    - smtp_server_reply
    linkageType: ''
    returnType: int
    signature: "int cmd_vrfy(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t
      \    const char *param)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_cmd_vrfy
      Src: /src/dovecot/src/submission/submission-commands.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - cmd
    - param
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 555
    functionDepth: 2
    functionLinenumber: 555
    functionLinenumberEnd: 559
    functionName: client_default_cmd_vrfy
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - submission_backend_cmd_vrfy
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_vrfy(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd, const char *param)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct client*::v::cmd_noop
      Src: /src/dovecot/src/submission/submission-commands.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn_ctx
    - cmd
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 570
    functionName: cmd_noop
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 2
    functionsReached:
    - struct client*::v::cmd_noop
    linkageType: ''
    returnType: int
    signature: int cmd_noop(void *conn_ctx, struct smtp_server_cmd_ctx *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_cmd_noop
      Src: /src/dovecot/src/submission/submission-commands.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - cmd
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 572
    functionDepth: 2
    functionLinenumber: 572
    functionLinenumberEnd: 576
    functionName: client_default_cmd_noop
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - submission_backend_cmd_noop
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_noop(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/submission/submission-commands.c:593,1
    - Dst: smtp_server_reply_quit
      Src: /src/dovecot/src/submission/submission-commands.c:594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - quit_cmd
    argTypes:
    - struct cmd_quit_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 595
    functionName: cmd_quit_finish
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 1
    functionsReached:
    - smtp_server_reply_quit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void cmd_quit_finish(struct cmd_quit_context *quit_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/submission/submission-commands.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - quit_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_quit_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 606
    functionName: cmd_quit_next
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - timeout_add
    linkageType: ''
    returnType: void
    signature: "void cmd_quit_next(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t
      \     struct cmd_quit_context *quit_cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/submission/submission-commands.c:613,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission/submission-commands.c:617,1
    - Dst: struct client*::v::cmd_quit
      Src: /src/dovecot/src/submission/submission-commands.c:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - conn_ctx
    - cmd
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 621
    functionName: cmd_quit
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 3
    functionsReached:
    - struct client*::v::cmd_quit
    - p_new
    - smtp_server_command_add_hook
    linkageType: ''
    returnType: int
    signature: int cmd_quit(void *conn_ctx, struct smtp_server_cmd_ctx *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submission_backend_cmd_quit
      Src: /src/dovecot/src/submission/submission-commands.c:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - cmd
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 623
    functionDepth: 2
    functionLinenumber: 623
    functionLinenumberEnd: 627
    functionName: client_default_cmd_quit
    functionSourceFile: /src/dovecot/src/submission/submission-commands.c
    functionUses: 0
    functionsReached:
    - submission_backend_cmd_quit
    linkageType: ''
    returnType: int
    signature: "int client_default_cmd_quit(struct client *client,\n\t\t\t    struct
      smtp_server_cmd_ctx *cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/dovecot/src/lib-otp/otp-dictionary.c:578,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - word
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 589
    functionName: otp_lookup_word
    functionSourceFile: /src/dovecot/src/lib-otp/otp-dictionary.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int otp_lookup_word(const char *word)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: IS_LWS
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LWS(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-otp/otp-parse.c:23,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 26
    functionName: otp_skip_lws
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 0
    functionsReached:
    - IS_LWS
    linkageType: ''
    returnType: char
    signature: char *otp_skip_lws(const char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: otp_skip_lws
      Src: /src/dovecot/src/lib-otp/otp-parse.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: otp_check_tail
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 0
    functionsReached:
    - otp_skip_lws
    linkageType: ''
    returnType: bool
    signature: bool otp_check_tail(const char *data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-otp/otp-parse.c:44,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-otp/otp-parse.c:45,1
    - Dst: i_isxdigit
      Src: /src/dovecot/src/lib-otp/otp-parse.c:50,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-otp/otp-parse.c:51,1
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-otp/otp-parse.c:56,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-otp/otp-parse.c:68,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-otp/otp-parse.c:68,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - data
    - endptr
    - hash
    argTypes:
    - char*
    - char**
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 69
    functionName: otp_read_hex
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_isxdigit
    - str_append_c
    - hex_to_binary
    - buffer_create_from_data
    - IS_LWS
    linkageType: ''
    returnType: int
    signature: int otp_read_hex(const char *data, const char **endptr, unsigned char
      *hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 76
    functionName: add_word
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: add_word()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-otp/otp-parse.c:89,1
    - Dst: otp_skip_lws
      Src: /src/dovecot/src/lib-otp/otp-parse.c:91,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-otp/otp-parse.c:93,1
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-otp/otp-parse.c:99,1
    - Dst: i_isalpha
      Src: /src/dovecot/src/lib-otp/otp-parse.c:101,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-otp/otp-parse.c:102,1
    - Dst: i_isalpha
      Src: /src/dovecot/src/lib-otp/otp-parse.c:108,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-otp/otp-parse.c:113,1
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-otp/otp-parse.c:115,1
    - Dst: add_word
      Src: /src/dovecot/src/lib-otp/otp-parse.c:116,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-otp/otp-parse.c:117,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-otp/otp-parse.c:125,1
    - Dst: add_word
      Src: /src/dovecot/src/lib-otp/otp-parse.c:126,1
    - Dst: otp_parity
      Src: /src/dovecot/src/lib-otp/otp-parse.c:144,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 50
    argCount: 3
    argNames:
    - data
    - endptr
    - hash
    argTypes:
    - char*
    - char**
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 145
    functionName: ATTR_NO_SANITIZE_INTEGER::otp_read_words
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 0
    functionsReached:
    - otp_parity
    - t_str_new
    - str_append_c
    - str_len
    - str_truncate
    - otp_skip_lws
    - buffer_create_from_data
    - IS_LWS
    - i_isalpha
    - add_word
    linkageType: ''
    returnType: int
    signature: 'int ATTR_NO_SANITIZE_INTEGER

      otp_read_words(const char *data, const char **endptr, unsigned char *hash)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-otp/otp-parse.c:156,1
    - Dst: digest_find
      Src: /src/dovecot/src/lib-otp/otp-parse.c:160,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-otp/otp-parse.c:160,1
    - Dst: str_parse_int
      Src: /src/dovecot/src/lib-otp/otp-parse.c:166,1
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-otp/otp-parse.c:166,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-otp/otp-parse.c:170,1
    - Dst: i_tolower
      Src: /src/dovecot/src/lib-otp/otp-parse.c:171,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - data
    - endptr
    - state
    argTypes:
    - char*
    - char**
    - struct otp_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 176
    functionName: otp_read_new_params
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 0
    functionsReached:
    - str_parse_int
    - i_isalnum
    - digest_find
    - t_strdup_until
    - IS_LWS
    - i_tolower
    linkageType: ''
    returnType: int
    signature: "int otp_read_new_params(const char *data, const char **endptr,\n\t\t\tstruct
      otp_state *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: otp_read_hex
      Src: /src/dovecot/src/lib-otp/otp-parse.c:181,1
    - Dst: otp_read_words
      Src: /src/dovecot/src/lib-otp/otp-parse.c:182,1
    - Dst: otp_check_tail
      Src: /src/dovecot/src/lib-otp/otp-parse.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - data
    - hash
    - hex
    argTypes:
    - char*
    - unsigned char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 187
    functionName: otp_parse_response
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 1
    functionsReached:
    - otp_read_words
    - otp_check_tail
    - otp_read_hex
    linkageType: ''
    returnType: int
    signature: int otp_parse_response(const char *data, unsigned char *hash, bool
      hex)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: otp_read_hex
      Src: /src/dovecot/src/lib-otp/otp-parse.c:193,1
    - Dst: otp_read_words
      Src: /src/dovecot/src/lib-otp/otp-parse.c:194,1
    - Dst: otp_skip_lws
      Src: /src/dovecot/src/lib-otp/otp-parse.c:200,1
    - Dst: otp_read_new_params
      Src: /src/dovecot/src/lib-otp/otp-parse.c:206,1
    - Dst: otp_skip_lws
      Src: /src/dovecot/src/lib-otp/otp-parse.c:212,1
    - Dst: otp_read_hex
      Src: /src/dovecot/src/lib-otp/otp-parse.c:218,1
    - Dst: otp_read_words
      Src: /src/dovecot/src/lib-otp/otp-parse.c:219,1
    - Dst: otp_check_tail
      Src: /src/dovecot/src/lib-otp/otp-parse.c:225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 5
    argNames:
    - data
    - new_state
    - hash
    - hex
    - error
    argTypes:
    - char*
    - struct otp_state*
    - unsigned char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 231
    functionName: otp_parse_init_response
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 1
    functionsReached:
    - otp_read_words
    - otp_check_tail
    - otp_read_new_params
    - otp_skip_lws
    - otp_read_hex
    linkageType: ''
    returnType: int
    signature: "int otp_parse_init_response(const char *data, struct otp_state *new_state,\n\t\t\t
      \   unsigned char *hash, bool hex, const char **error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: otp_read_new_params
      Src: /src/dovecot/src/lib-otp/otp-parse.c:238,1
    - Dst: otp_read_hex
      Src: /src/dovecot/src/lib-otp/otp-parse.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - struct otp_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 246
    functionName: otp_parse_dbentry
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 1
    functionsReached:
    - otp_read_new_params
    - otp_read_hex
    linkageType: ''
    returnType: int
    signature: int otp_parse_dbentry(const char *text, struct otp_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-otp/otp-parse.c:250,1
    - Dst: digest_name
      Src: /src/dovecot/src/lib-otp/otp-parse.c:250,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-otp/otp-parse.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct otp_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 253
    functionName: otp_print_dbentry
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parse.c
    functionUses: 2
    functionsReached:
    - binary_to_hex
    - t_strdup_printf
    - digest_name
    linkageType: ''
    returnType: char
    signature: char *otp_print_dbentry(const struct otp_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md4_final
      Src: /src/dovecot/src/lib-otp/otp-hash.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - res
    argTypes:
    - struct md4_context*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 41
    functionName: md4_fold
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached:
    - md4_final
    linkageType: ''
    returnType: void
    signature: void md4_fold(struct md4_context *ctx, void *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_final
      Src: /src/dovecot/src/lib-otp/otp-hash.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - res
    argTypes:
    - struct md5_context*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 51
    functionName: md5_fold
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached:
    - md5_final
    linkageType: ''
    returnType: void
    signature: void md5_fold(struct md5_context *ctx, void *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 69
    functionName: swab_uint32
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t swab_uint32(uint32_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-otp/otp-hash.c:75,1
    - Dst: swab_uint32
      Src: /src/dovecot/src/lib-otp/otp-hash.c:77,1
    - Dst: swab_uint32
      Src: /src/dovecot/src/lib-otp/otp-hash.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - res
    argTypes:
    - struct sha1_ctxt*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 79
    functionName: sha1_fold
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached:
    - sha1_result
    - swab_uint32
    linkageType: ''
    returnType: void
    signature: void sha1_fold(struct sha1_ctxt *ctx, void *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: F_INIT
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F_INIT(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: F_UPDATE
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F_UPDATE(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: F_FINAL
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F_FINAL(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: F_FOLD
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F_FOLD(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-otp/otp-hash.c:100,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-otp/otp-hash.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - algo
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: digest_name
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 3
    functionsReached:
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: char
    signature: char *digest_name(unsigned int algo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-otp/otp-hash.c:109,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-otp/otp-hash.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 114
    functionName: digest_find
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 2
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int digest_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-otp/otp-hash.c:118,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-otp/otp-hash.c:118,1
    - Dst: struct digest_context*::digest::init
      Src: /src/dovecot/src/lib-otp/otp-hash.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - algo
    argTypes:
    - struct digest_context*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: digest_init
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached:
    - struct digest_context*::digest::init
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void digest_init(struct digest_context *ctx, const unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct digest_context*::digest::update
      Src: /src/dovecot/src/lib-otp/otp-hash.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct digest_context*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: digest_update
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached:
    - struct digest_context*::digest::update
    linkageType: ''
    returnType: void
    signature: "void digest_update(struct digest_context *ctx, const void *data,\n\t\t
      const size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct digest_context*::digest::final
      Src: /src/dovecot/src/lib-otp/otp-hash.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct digest_context*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: digest_final
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached:
    - struct digest_context*::digest::final
    linkageType: ''
    returnType: void
    signature: void digest_final(struct digest_context *ctx, unsigned char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct digest_context*::digest::otp_final
      Src: /src/dovecot/src/lib-otp/otp-hash.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct digest_context*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: digest_otp_final
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 0
    functionsReached:
    - struct digest_context*::digest::otp_final
    linkageType: ''
    returnType: void
    signature: void digest_otp_final(struct digest_context *ctx, unsigned char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digest_init
      Src: /src/dovecot/src/lib-otp/otp-hash.c:145,1
    - Dst: digest_update
      Src: /src/dovecot/src/lib-otp/otp-hash.c:146,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-otp/otp-hash.c:146,1
    - Dst: digest_update
      Src: /src/dovecot/src/lib-otp/otp-hash.c:147,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-otp/otp-hash.c:147,1
    - Dst: digest_otp_final
      Src: /src/dovecot/src/lib-otp/otp-hash.c:148,1
    - Dst: digest_init
      Src: /src/dovecot/src/lib-otp/otp-hash.c:151,1
    - Dst: digest_update
      Src: /src/dovecot/src/lib-otp/otp-hash.c:152,1
    - Dst: digest_otp_final
      Src: /src/dovecot/src/lib-otp/otp-hash.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - algo
    - seed
    - passphrase
    - step
    - result
    argTypes:
    - unsigned int
    - char*
    - char*
    - unsigned int
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 155
    functionName: otp_hash
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 1
    functionsReached:
    - digest_otp_final
    - digest_update
    - strlen
    - digest_init
    linkageType: ''
    returnType: void
    signature: "void otp_hash(unsigned int algo, const char *seed, const char *passphrase,\n\t
      \     unsigned int step, unsigned char *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digest_init
      Src: /src/dovecot/src/lib-otp/otp-hash.c:162,1
    - Dst: digest_update
      Src: /src/dovecot/src/lib-otp/otp-hash.c:163,1
    - Dst: digest_otp_final
      Src: /src/dovecot/src/lib-otp/otp-hash.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - algo
    - prev
    - result
    argTypes:
    - unsigned int
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 165
    functionName: otp_next_hash
    functionSourceFile: /src/dovecot/src/lib-otp/otp-hash.c
    functionUses: 2
    functionsReached:
    - digest_otp_final
    - digest_update
    - digest_init
    linkageType: ''
    returnType: void
    signature: "void otp_next_hash(unsigned int algo, const unsigned char *prev,\n\t\t
      \  unsigned char *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 14
    functionName: otp_parity
    functionSourceFile: /src/dovecot/src/lib-otp/otp-parity.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int otp_parity(unsigned char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - data
    - ','
    - size
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 15
    functionName: memarea_init
    functionSourceFile: /src/dovecot/src/lib/memarea.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memarea_init(data, size, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: i_stream_create_callback
    functionSourceFile: /src/dovecot/src/lib/istream-callback.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_stream_create_callback(callback, context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib/test-aqueue.c:12,1
    - Dst: array_idx_i
      Src: /src/dovecot/src/lib/test-aqueue.c:14,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib/test-aqueue.c:14,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - aqueue
    - deleted_n
    argTypes:
    - struct aqueue*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 21
    functionName: aqueue_is_ok
    functionSourceFile: /src/dovecot/src/lib/test-aqueue.c
    functionUses: 0
    functionsReached:
    - aqueue_count
    - array_idx_i
    - aqueue_idx
    linkageType: ''
    returnType: bool
    signature: bool aqueue_is_ok(struct aqueue *aqueue, unsigned int deleted_n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-aqueue.c:29,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-aqueue.c:30,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-aqueue.c:33,1
    - Dst: aqueue_init
      Src: /src/dovecot/src/lib/test-aqueue.c:34,1
    - Dst: aqueue_append
      Src: /src/dovecot/src/lib/test-aqueue.c:37,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib/test-aqueue.c:38,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-aqueue.c:39,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib/test-aqueue.c:40,1
    - Dst: aqueue_is_ok
      Src: /src/dovecot/src/lib/test-aqueue.c:42,1
    - Dst: aqueue_delete
      Src: /src/dovecot/src/lib/test-aqueue.c:47,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib/test-aqueue.c:48,1
    - Dst: aqueue_is_ok
      Src: /src/dovecot/src/lib/test-aqueue.c:50,1
    - Dst: aqueue_clear
      Src: /src/dovecot/src/lib/test-aqueue.c:53,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib/test-aqueue.c:54,1
    - Dst: aqueue_deinit
      Src: /src/dovecot/src/lib/test-aqueue.c:56,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 1
    argNames:
    - initial_size
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 60
    functionName: test_aqueue2
    functionSourceFile: /src/dovecot/src/lib/test-aqueue.c
    functionUses: 0
    functionsReached:
    - aqueue_deinit
    - aqueue_delete
    - aqueue_append
    - aqueue_count
    - aqueue_clear
    - t_strdup_printf
    - t_array_init
    - aqueue_init
    - aqueue_is_ok
    - N_ELEMENTS
    linkageType: ''
    returnType: char
    signature: char *test_aqueue2(unsigned int initial_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-aqueue.c:67,1
    - Dst: test_aqueue2
      Src: /src/dovecot/src/lib/test-aqueue.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: test_aqueue
    functionSourceFile: /src/dovecot/src/lib/test-aqueue.c
    functionUses: 0
    functionsReached:
    - test_aqueue2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_aqueue(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:15,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:18,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:22,1
    - Dst: o_stream_create_failure_at
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:25,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:25,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:26,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:26,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:29,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:29,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:30,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:31,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:34,1
    - Dst: o_stream_create_failure_at
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:36,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:37,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:37,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:40,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:41,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:44,1
    - Dst: o_stream_create_failure_at_flush
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:46,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:47,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:47,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:48,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:48,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:49,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:50,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-failure-at.c:51,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 52
    functionName: test_ostream_failure_at
    functionSourceFile: /src/dovecot/src/lib/test-ostream-failure-at.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_idx
    - o_stream_get_error
    - t_buffer_create
    - o_stream_create_buffer
    - test_end
    - o_stream_send
    - test_assert
    - o_stream_create_failure_at_flush
    - o_stream_flush
    - o_stream_create_failure_at
    - o_stream_destroy
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_failure_at(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/read-full.c:12,1
    - Dst: read
      Src: /src/dovecot/src/lib/read-full.c:15,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/read-full.c:19,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - fd
    - data
    - size
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 24
    functionName: read_full
    functionSourceFile: /src/dovecot/src/lib/read-full.c
    functionUses: 8
    functionsReached:
    - PTR_OFFSET
    - i_assert
    - read
    linkageType: ''
    returnType: int
    signature: int read_full(int fd, void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/read-full.c:30,1
    - Dst: pread
      Src: /src/dovecot/src/lib/read-full.c:33,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/read-full.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - fd
    - data
    - size
    - offset
    argTypes:
    - int
    - void*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 43
    functionName: pread_full
    functionSourceFile: /src/dovecot/src/lib/read-full.c
    functionUses: 4
    functionsReached:
    - pread
    - PTR_OFFSET
    - i_assert
    linkageType: ''
    returnType: int
    signature: int pread_full(int fd, void *data, size_t size, off_t offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:21,1
    - Dst: struct connection*::v::handshake_ready
      Src: /src/dovecot/src/lib/connection.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: connection_set_handshake_ready
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 1
    functionsReached:
    - struct connection*::v::handshake_ready
    - i_assert
    linkageType: ''
    returnType: void
    signature: void connection_set_handshake_ready(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 30
    functionName: connection_handshake_received
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool connection_handshake_received(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct connection*::v::destroy
      Src: /src/dovecot/src/lib/connection.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct connection*
    - enum connection_disconnect_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: connection_closed
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - struct connection*::v::destroy
    linkageType: ''
    returnType: void
    signature: "void connection_closed(struct connection *conn,\n\t\t\t      enum
      connection_disconnect_reason reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: connection_idle_timeout
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 1
    functionsReached:
    - connection_closed
    linkageType: ''
    returnType: void
    signature: void connection_idle_timeout(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: connection_connect_timeout
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - connection_closed
    linkageType: ''
    returnType: void
    signature: void connection_connect_timeout(struct connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/lib/connection.c:54,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/connection.c:56,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/connection.c:59,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/connection.c:60,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/connection.c:61,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:64,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib/connection.c:66,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/lib/connection.c:67,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/connection.c:69,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 75
    functionName: connection_flush_callback
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - o_stream_get_error
    - e_debug
    - e_error
    - o_stream_unset_flush_callback
    - o_stream_get_buffer_used_size
    - callback
    - o_stream_flush
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: int
    signature: int connection_flush_callback(struct connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/connection.c:82,1
    - Dst: o_stream_get_flush_callback
      Src: /src/dovecot/src/lib/connection.c:85,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/connection.c:86,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:88,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib/connection.c:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 94
    functionName: connection_output_throttle
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - connection_input_halt
    - e_debug
    - o_stream_get_flush_callback
    - o_stream_get_buffer_used_size
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: bool
    signature: bool connection_output_throttle(struct connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/connection.c:105,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/connection.c:107,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/connection.c:108,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/connection.c:110,1
    - Dst: if
      Src: /src/dovecot/src/lib/connection.c:112,1
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib/connection.c:112,1
    - Dst: struct connection*::v::handshake_line
      Src: /src/dovecot/src/lib/connection.c:114,1
    - Dst: connection_set_handshake_ready
      Src: /src/dovecot/src/lib/connection.c:116,1
    - Dst: struct connection*::v::input_line
      Src: /src/dovecot/src/lib/connection.c:124,1
    - Dst: connection_output_throttle
      Src: /src/dovecot/src/lib/connection.c:128,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/connection.c:139,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/connection.c:140,1
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:147,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/connection.c:151,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 153
    functionName: connection_input_parse_lines
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - connection_closed
    - connection_set_handshake_ready
    - o_stream_uncork
    - i_stream_next_line
    - i_stream_ref
    - o_stream_cork
    - struct connection*::v::handshake_line
    - if
    - connection_handshake_received
    - o_stream_ref
    - struct connection*::v::input_line
    - connection_output_throttle
    - o_stream_unref
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int connection_input_parse_lines(struct connection *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib/connection.c:159,1
    - Dst: struct connection*::v::handshake
      Src: /src/dovecot/src/lib/connection.c:161,1
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:162,1
    - Dst: connection_set_handshake_ready
      Src: /src/dovecot/src/lib/connection.c:168,1
    - Dst: connection_input_read
      Src: /src/dovecot/src/lib/connection.c:172,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/connection.c:179,1
    - Dst: connection_input_parse_lines
      Src: /src/dovecot/src/lib/connection.c:182,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 183
    functionName: connection_input_default
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - connection_closed
    - connection_set_handshake_ready
    - i_unreached
    - connection_handshake_received
    - struct connection*::v::handshake
    - connection_input_parse_lines
    - connection_input_read
    linkageType: ''
    returnType: void
    signature: void connection_input_default(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:190,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/connection.c:192,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/connection.c:193,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/connection.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - conn
    - service_name
    - major_version
    - minor_version
    argTypes:
    - struct connection*
    - char*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 209
    functionName: connection_verify_version
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 2
    functionsReached:
    - strcmp
    - i_assert
    - e_error
    linkageType: ''
    returnType: int
    signature: "int connection_verify_version(struct connection *conn,\n\t\t\t      const
      char *service_name,\n\t\t\t      unsigned int major_version,\n\t\t\t      unsigned
      int minor_version)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/connection.c:220,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/connection.c:221,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/connection.c:222,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/connection.c:223,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/connection.c:224,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib/connection.c:225,1
    - Dst: connection_verify_version
      Src: /src/dovecot/src/lib/connection.c:229,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 233
    functionName: connection_handshake_args_default
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 9
    functionsReached:
    - strcmp
    - t_strarray_join
    - str_array_length
    - e_error
    - str_to_uint
    - connection_verify_version
    linkageType: ''
    returnType: int
    signature: "int connection_handshake_args_default(struct connection *conn,\n\t\t\t\t
      \     const char *const *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib/connection.c:239,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/connection.c:241,1
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib/connection.c:245,1
    - Dst: struct connection*::v::handshake_args
      Src: /src/dovecot/src/lib/connection.c:249,1
    - Dst: connection_set_handshake_ready
      Src: /src/dovecot/src/lib/connection.c:252,1
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib/connection.c:258,1
    - Dst: connection_set_handshake_ready
      Src: /src/dovecot/src/lib/connection.c:260,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:264,1
    - Dst: struct connection*::v::input_args
      Src: /src/dovecot/src/lib/connection.c:266,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 267
    functionName: connection_input_line_default
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 3
    functionsReached:
    - connection_set_handshake_ready
    - t_strsplit_tabescaped
    - connection_handshake_received
    - e_error
    - struct connection*::v::handshake_args
    - struct connection*::v::input_args
    - i_assert
    linkageType: ''
    returnType: int
    signature: int connection_input_line_default(struct connection *conn, const char
      *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib/connection.c:271,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/connection.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: connection_input_halt
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 14
    functionsReached:
    - io_remove
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void connection_input_halt(struct connection *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:278,1
    - Dst: io_add_istream_to
      Src: /src/dovecot/src/lib/connection.c:283,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/connection.c:286,1
    - Dst: io_add_to
      Src: /src/dovecot/src/lib/connection.c:288,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/connection.c:291,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib/connection.c:294,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - set_io_pending
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 298
    functionName: connection_input_resume_full
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - io_add_to
    - io_set_pending
    - io_add_istream_to
    - timeout_add_to
    - i_assert
    linkageType: ''
    returnType: void
    signature: void connection_input_resume_full(struct connection *conn, bool set_io_pending)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_resume_full
      Src: /src/dovecot/src/lib/connection.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 303
    functionName: connection_input_resume
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 12
    functionsReached:
    - connection_input_resume_full
    linkageType: ''
    returnType: void
    signature: void connection_input_resume(struct connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:313,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:317,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:321,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/connection.c:322,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:325,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/connection.c:326,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:330,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/connection.c:332,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:333,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/connection.c:336,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/connection.c:337,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 338
    functionName: connection_update_property_label
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - e_debug
    - t_strdup_printf
    - i_strdup
    - net_ip2addr
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void connection_update_property_label(struct connection *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/connection.c:346,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:348,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/connection.c:350,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:351,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:353,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:354,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:355,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/connection.c:358,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/connection.c:361,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/connection.c:363,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/connection.c:365,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/connection.c:369,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/connection.c:370,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/connection.c:372,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/connection.c:373,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/connection.c:374,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/connection.c:377,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/connection.c:378,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/connection.c:378,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 379
    functionName: connection_update_label
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - str_len
    - str_insert
    - i_strdup
    - str_append
    - i_free
    linkageType: ''
    returnType: void
    signature: void connection_update_label(struct connection *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/connection.c:386,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:387,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:390,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/connection.c:392,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:393,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/connection.c:395,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:396,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/connection.c:398,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/connection.c:401,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/connection.c:402,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/connection.c:404,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/connection.c:405,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/connection.c:407,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/connection.c:409,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - conn
    - fd
    argTypes:
    - struct connection*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 410
    functionName: connection_create_stream_name
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - str_len
    - str_append
    linkageType: ''
    returnType: char
    signature: 'char *

      connection_create_stream_name(struct connection *conn, int fd)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/connection.c:415,1
    - Dst: connection_create_stream_name
      Src: /src/dovecot/src/lib/connection.c:417,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/connection.c:420,1
    - Dst: connection_create_stream_name
      Src: /src/dovecot/src/lib/connection.c:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 412
    functionDepth: 2
    functionLinenumber: 412
    functionLinenumberEnd: 424
    functionName: connection_update_stream_names
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - o_stream_set_name
    - i_stream_set_name
    - connection_create_stream_name
    linkageType: ''
    returnType: void
    signature: void connection_update_stream_names(struct connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/connection.c:430,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:431,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/connection.c:432,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/connection.c:433,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:434,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/connection.c:436,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib/connection.c:437,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/connection.c:437,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/connection.c:440,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/connection.c:442,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/connection.c:445,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/connection.c:451,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/connection.c:453,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/connection.c:456,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/connection.c:462,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/connection.c:464,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/connection.c:466,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 467
    functionName: connection_update_event
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - event_set_append_log_prefix
    - strlen
    - net_ip2addr
    - str_append
    - event_add_str
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void connection_update_event(struct connection *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: net_getpeername
      Src: /src/dovecot/src/lib/connection.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:489,1
    - Dst: net_getunixcred
      Src: /src/dovecot/src/lib/connection.c:493,1
    - Dst: connection_update_property_label
      Src: /src/dovecot/src/lib/connection.c:502,1
    - Dst: connection_update_label
      Src: /src/dovecot/src/lib/connection.c:503,1
    - Dst: connection_update_stream_names
      Src: /src/dovecot/src/lib/connection.c:504,1
    - Dst: connection_update_event
      Src: /src/dovecot/src/lib/connection.c:505,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 469
    functionDepth: 3
    functionLinenumber: 469
    functionLinenumberEnd: 509
    functionName: connection_update_properties
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 1
    functionsReached:
    - net_getpeername
    - connection_update_property_label
    - connection_update_label
    - connection_update_event
    - connection_update_stream_names
    - i_assert
    - net_getunixcred
    linkageType: ''
    returnType: void
    signature: void connection_update_properties(struct connection *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:517,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/connection.c:518,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:521,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/connection.c:522,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:525,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:526,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/connection.c:528,1
    - Dst: i_stream_create_unix
      Src: /src/dovecot/src/lib/connection.c:533,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/connection.c:536,1
    - Dst: i_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/connection.c:538,1
    - Dst: o_stream_create_unix
      Src: /src/dovecot/src/lib/connection.c:542,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/connection.c:545,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib/connection.c:547,1
    - Dst: o_stream_set_finish_via_child
      Src: /src/dovecot/src/lib/connection.c:548,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/connection.c:549,1
    - Dst: connection_update_stream_names
      Src: /src/dovecot/src/lib/connection.c:551,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:554,1
    - Dst: connection_input_resume_full
      Src: /src/dovecot/src/lib/connection.c:555,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:556,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:558,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/connection.c:559,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:559,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 511
    functionDepth: 3
    functionLinenumber: 511
    functionLinenumberEnd: 563
    functionName: connection_init_streams
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - o_stream_create_fd
    - i_stream_create_fd
    - e_debug
    - t_strdup_printf
    - o_stream_create_unix
    - o_stream_set_no_error_handling
    - o_stream_destroy
    - connection_input_resume_full
    - i_stream_switch_ioloop_to
    - o_stream_nsend_str
    - connection_update_stream_names
    - i_assert
    - o_stream_switch_ioloop_to
    - i_stream_create_unix
    - o_stream_set_finish_via_child
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void connection_init_streams(struct connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib/connection.c:570,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib/connection.c:571,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 565
    functionDepth: 3
    functionLinenumber: 565
    functionLinenumberEnd: 573
    functionName: connection_streams_changed
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 2
    functionsReached:
    - connection_input_resume
    - connection_input_halt
    linkageType: ''
    returnType: void
    signature: void connection_streams_changed(struct connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:577,1
    - Dst: connection_update_properties
      Src: /src/dovecot/src/lib/connection.c:579,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib/connection.c:584,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:587,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib/connection.c:587,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:590,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib/connection.c:590,1
    - Dst: connection_init_streams
      Src: /src/dovecot/src/lib/connection.c:595,1
    - Dst: struct connection*::v::client_connected
      Src: /src/dovecot/src/lib/connection.c:597,1
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:599,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 575
    functionDepth: 4
    functionLinenumber: 575
    functionLinenumberEnd: 601
    functionName: connection_client_connected
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - connection_closed
    - e_debug
    - connection_update_properties
    - connection_init_streams
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct connection*::v::client_connected
    - i_assert
    linkageType: ''
    returnType: void
    signature: void connection_client_connected(struct connection *conn, bool success)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/connection.c:613,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/connection.c:614,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/connection.c:625,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/connection.c:626,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/connection.c:635,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib/connection.c:637,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib/connection.c:643,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/lib/connection.c:647,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:652,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/connection.c:655,1
    - Dst: connection_update_properties
      Src: /src/dovecot/src/lib/connection.c:659,1
    - Dst: connection_set_default_handlers
      Src: /src/dovecot/src/lib/connection.c:660,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 5
    argNames:
    - list
    - conn
    - name
    - fd_in
    - fd_out
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 603
    functionDepth: 4
    functionLinenumber: 603
    functionLinenumberEnd: 661
    functionName: connection_init_full
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - event_set_forced_debug
    - event_create
    - o_stream_create_error_str
    - connection_update_properties
    - i_strdup
    - i_stream_create_error_str
    - DLLIST_PREPEND
    - connection_set_default_handlers
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void connection_init_full(struct connection_list *list, struct connection
      *conn,\n\t\t     const char *name, int fd_in, int fd_out)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_init_full
      Src: /src/dovecot/src/lib/connection.c:666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - list
    - conn
    - name
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 663
    functionDepth: 5
    functionLinenumber: 663
    functionLinenumberEnd: 667
    functionName: connection_init
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 14
    functionsReached:
    - connection_init_full
    linkageType: ''
    returnType: void
    signature: "void connection_init(struct connection_list *list, struct connection
      *conn,\n\t\t     const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:673,1
    - Dst: connection_init_full
      Src: /src/dovecot/src/lib/connection.c:675,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib/connection.c:677,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:682,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib/connection.c:682,1
    - Dst: connection_init_streams
      Src: /src/dovecot/src/lib/connection.c:684,1
    - Dst: struct connection*::v::init
      Src: /src/dovecot/src/lib/connection.c:690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - list
    - conn
    - name
    - fd_in
    - fd_out
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 669
    functionDepth: 5
    functionLinenumber: 669
    functionLinenumberEnd: 691
    functionName: connection_init_server
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 21
    functionsReached:
    - connection_init_full
    - e_debug
    - connection_init_streams
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    - struct connection*::v::init
    linkageType: ''
    returnType: void
    signature: "void connection_init_server(struct connection_list *list,\n\t\t\t
      \   struct connection *conn, const char *name,\n\t\t\t    int fd_in, int fd_out)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib/connection.c:704,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 7
    argNames:
    - list
    - conn
    - name
    - fd_in
    - fd_out
    - remote_ip
    - remote_port
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    - int
    - int
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 693
    functionDepth: 6
    functionLinenumber: 693
    functionLinenumberEnd: 705
    functionName: connection_init_server_ip
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - connection_init_server
    linkageType: ''
    returnType: void
    signature: "void connection_init_server_ip(struct connection_list *list,\n\t\t\t
      \      struct connection *conn, const char *name,\n\t\t\t       int fd_in, int
      fd_out,\n\t\t\t       const struct ip_addr *remote_ip,\n\t\t\t       in_port_t
      remote_port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:711,1
    - Dst: connection_init_full
      Src: /src/dovecot/src/lib/connection.c:713,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib/connection.c:715,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:720,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib/connection.c:720,1
    - Dst: struct connection*::v::init
      Src: /src/dovecot/src/lib/connection.c:723,1
    - Dst: connection_client_connected
      Src: /src/dovecot/src/lib/connection.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - list
    - conn
    - name
    - fd_in
    - fd_out
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 707
    functionDepth: 5
    functionLinenumber: 707
    functionLinenumberEnd: 725
    functionName: connection_init_client_fd
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 3
    functionsReached:
    - connection_init_full
    - e_debug
    - connection_client_connected
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    - struct connection*::v::init
    linkageType: ''
    returnType: void
    signature: "void connection_init_client_fd(struct connection_list *list,\n\t\t\t
      \      struct connection *conn, const char *name,\n\t\t\t       int fd_in, int
      fd_out)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:736,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:738,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/connection.c:746,1
    - Dst: connection_init
      Src: /src/dovecot/src/lib/connection.c:748,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/connection.c:750,1
    - Dst: connection_update_event
      Src: /src/dovecot/src/lib/connection.c:751,1
    - Dst: struct connection*::v::init
      Src: /src/dovecot/src/lib/connection.c:754,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - list
    - conn
    - hostname
    - ip
    - port
    - my_ip
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    - struct ip_addr*
    - in_port_t
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 727
    functionDepth: 6
    functionLinenumber: 727
    functionLinenumberEnd: 755
    functionName: connection_init_client_ip_from
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_strdup_printf
    - connection_update_event
    - connection_init
    - event_add_str
    - i_assert
    - struct connection*::v::init
    linkageType: ''
    returnType: void
    signature: "void connection_init_client_ip_from(struct connection_list *list,\n\t\t\t\t
      \   struct connection *conn,\n\t\t\t\t    const char *hostname,\n\t\t\t\t    const
      struct ip_addr *ip, in_port_t port,\n\t\t\t\t    const struct ip_addr *my_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_init_client_ip_from
      Src: /src/dovecot/src/lib/connection.c:761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - list
    - conn
    - hostname
    - ip
    - port
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 757
    functionDepth: 7
    functionLinenumber: 757
    functionLinenumberEnd: 762
    functionName: connection_init_client_ip
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 1
    functionsReached:
    - connection_init_client_ip_from
    linkageType: ''
    returnType: void
    signature: "void connection_init_client_ip(struct connection_list *list,\n\t\t\t
      \      struct connection *conn, const char *hostname,\n\t\t\t       const struct
      ip_addr *ip, in_port_t port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:767,1
    - Dst: connection_init
      Src: /src/dovecot/src/lib/connection.c:771,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/connection.c:772,1
    - Dst: struct connection*::v::init
      Src: /src/dovecot/src/lib/connection.c:775,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - list
    - conn
    - path
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 764
    functionDepth: 6
    functionLinenumber: 764
    functionLinenumberEnd: 776
    functionName: connection_init_client_unix
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 13
    functionsReached:
    - connection_init
    - event_add_str
    - i_assert
    - struct connection*::v::init
    linkageType: ''
    returnType: void
    signature: "void connection_init_client_unix(struct connection_list *list,\n\t\t\t\t
      struct connection *conn, const char *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_init_full
      Src: /src/dovecot/src/lib/connection.c:782,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/connection.c:783,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/connection.c:783,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:785,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:786,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:787,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:788,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/connection.c:790,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/connection.c:792,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/connection.c:794,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/connection.c:796,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib/connection.c:797,1
    - Dst: connection_update_stream_names
      Src: /src/dovecot/src/lib/connection.c:799,1
    - Dst: connection_input_resume_full
      Src: /src/dovecot/src/lib/connection.c:802,1
    - Dst: struct connection*::v::client_connected
      Src: /src/dovecot/src/lib/connection.c:805,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 5
    argNames:
    - list
    - conn
    - name
    - input
    - output
    argTypes:
    - struct connection_list*
    - struct connection*
    - char*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 778
    functionDepth: 5
    functionLinenumber: 778
    functionLinenumberEnd: 806
    functionName: connection_init_from_streams
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - i_stream_get_fd
    - connection_init_full
    - o_stream_get_fd
    - struct connection*::v::client_connected
    - i_stream_ref
    - o_stream_ref
    - o_stream_set_no_error_handling
    - connection_input_resume_full
    - connection_update_stream_names
    - i_assert
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void connection_init_from_streams(struct connection_list *list,\n\t\t\t\t
      \ struct connection *conn, const char *name,\n\t\t\t\t  struct istream *input,
      struct ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:811,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/connection.c:813,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/connection.c:814,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib/connection.c:815,1
    - Dst: o_stream_create_error_str
      Src: /src/dovecot/src/lib/connection.c:816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 818
    functionName: connection_set_connect_error_streams
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - o_stream_create_error_str
    - t_strdup_printf
    - i_stream_create_error_str
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void connection_set_connect_error_streams(struct connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib/connection.c:822,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/connection.c:823,1
    - Dst: net_geterror
      Src: /src/dovecot/src/lib/connection.c:825,1
    - Dst: connection_set_connect_error_streams
      Src: /src/dovecot/src/lib/connection.c:827,1
    - Dst: connection_client_connected
      Src: /src/dovecot/src/lib/connection.c:828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 820
    functionDepth: 5
    functionLinenumber: 820
    functionLinenumberEnd: 829
    functionName: connection_socket_connected
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - connection_set_connect_error_streams
    - net_geterror
    - io_remove
    - connection_client_connected
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void connection_socket_connected(struct connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:837,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:838,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:840,1
    - Dst: net_connect_ip
      Src: /src/dovecot/src/lib/connection.c:843,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/lib/connection.c:847,1
    - Dst: net_connect_unix_with_retries
      Src: /src/dovecot/src/lib/connection.c:849,1
    - Dst: connection_set_connect_error_streams
      Src: /src/dovecot/src/lib/connection.c:852,1
    - Dst: connection_update_properties
      Src: /src/dovecot/src/lib/connection.c:861,1
    - Dst: io_add_to
      Src: /src/dovecot/src/lib/connection.c:862,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:864,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib/connection.c:868,1
    - Dst: connection_client_connected
      Src: /src/dovecot/src/lib/connection.c:873,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - conn
    - msecs
    argTypes:
    - struct connection*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 831
    functionDepth: 5
    functionLinenumber: 831
    functionLinenumberEnd: 876
    functionName: connection_client_connect_with_retries
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 1
    functionsReached:
    - net_connect_unix
    - io_add_to
    - connection_set_connect_error_streams
    - e_debug
    - net_connect_unix_with_retries
    - connection_client_connected
    - connection_update_properties
    - timeout_add_to
    - net_connect_ip
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int connection_client_connect_with_retries(struct connection *conn,\n\t\t\t\t\t
      \  unsigned int msecs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_client_connect_with_retries
      Src: /src/dovecot/src/lib/connection.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 878
    functionDepth: 6
    functionLinenumber: 878
    functionLinenumberEnd: 882
    functionName: connection_client_connect
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 12
    functionsReached:
    - connection_client_connect_with_retries
    linkageType: ''
    returnType: int
    signature: int connection_client_connect(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/connection.c:886,1
    - Dst: struct connection*::v::client_connected
      Src: /src/dovecot/src/lib/connection.c:888,1
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 890
    functionName: connection_client_connect_failed
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - struct connection*::v::client_connected
    - connection_closed
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void connection_client_connect_failed(struct connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:894,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib/connection.c:896,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:897,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/connection.c:899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 892
    functionDepth: 7
    functionLinenumber: 892
    functionLinenumberEnd: 903
    functionName: connection_client_connect_async
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 1
    functionsReached:
    - timeout_add_short
    - connection_client_connect
    - i_assert
    linkageType: ''
    returnType: int
    signature: int connection_client_connect_async(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/connection.c:908,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/connection.c:910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 905
    functionDepth: 1
    functionLinenumber: 905
    functionLinenumberEnd: 911
    functionName: connection_update_counters
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void connection_update_counters(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_update_counters
      Src: /src/dovecot/src/lib/connection.c:917,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib/connection.c:924,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/lib/connection.c:926,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/connection.c:927,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib/connection.c:927,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/lib/connection.c:928,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/connection.c:931,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/connection.c:932,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/connection.c:933,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/connection.c:934,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib/connection.c:935,1
    - Dst: shutdown
      Src: /src/dovecot/src/lib/connection.c:937,1
    - Dst: fd_close_maybe_stdio
      Src: /src/dovecot/src/lib/connection.c:938,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 913
    functionDepth: 2
    functionLinenumber: 913
    functionLinenumberEnd: 940
    functionName: connection_disconnect
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 34
    functionsReached:
    - i_zero
    - shutdown
    - o_stream_close
    - e_debug
    - io_remove
    - connection_disconnect_reason
    - fd_close_maybe_stdio
    - struct event_passthrough*::event
    - event_create_passthrough
    - connection_update_counters
    - i_stream_close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void connection_disconnect(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:944,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/connection.c:947,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib/connection.c:949,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/connection.c:950,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/connection.c:951,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/connection.c:952,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/connection.c:953,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/connection.c:954,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/connection.c:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 942
    functionDepth: 3
    functionLinenumber: 942
    functionLinenumberEnd: 957
    functionName: connection_deinit
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 66
    functionsReached:
    - event_unref
    - i_free
    - connection_disconnect
    - i_assert
    - DLLIST_REMOVE
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void connection_deinit(struct connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib/connection.c:965,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/connection.c:967,1
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:972,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/connection.c:978,1
    - Dst: i_stream_set_error
      Src: /src/dovecot/src/lib/connection.c:982,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/connection.c:983,1
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:985,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - conn
    - input
    argTypes:
    - struct connection*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 959
    functionDepth: 1
    functionLinenumber: 959
    functionLinenumberEnd: 994
    functionName: connection_input_read_stream
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 2
    functionsReached:
    - connection_closed
    - i_unreached
    - timeout_reset
    - i_stream_get_error
    - i_stream_set_error
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: "int connection_input_read_stream(struct connection *conn,\n\t\t\t\t
      struct istream *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_read_stream
      Src: /src/dovecot/src/lib/connection.c:998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 996
    functionDepth: 2
    functionLinenumber: 996
    functionLinenumberEnd: 999
    functionName: connection_input_read
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 3
    functionsReached:
    - connection_input_read_stream
    linkageType: ''
    returnType: int
    signature: int connection_input_read(struct connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:1009,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:1017,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/connection.c:1018,1
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib/connection.c:1023,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/connection.c:1027,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1001
    functionDepth: 1
    functionLinenumber: 1001
    functionLinenumberEnd: 1028
    functionName: connection_disconnect_reason
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 8
    functionsReached:
    - i_unreached
    - io_stream_get_disconnect_reason
    - t_strdup_printf
    - i_stream_get_error
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *connection_disconnect_reason(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/connection.c:1033,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:1035,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/connection.c:1038,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:1040,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/connection.c:1044,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/connection.c:1046,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1050
    functionName: connection_input_timeout_reason
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *connection_input_timeout_reason(struct connection *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib/connection.c:1055,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:1056,1
    - Dst: connection_input_resume_full
      Src: /src/dovecot/src/lib/connection.c:1069,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - vfuncs
    argTypes:
    - struct connection*
    - struct connection_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1052
    functionDepth: 2
    functionLinenumber: 1052
    functionLinenumberEnd: 1070
    functionName: connection_set_handlers
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - connection_input_halt
    - connection_input_resume_full
    linkageType: ''
    returnType: void
    signature: "void connection_set_handlers(struct connection *conn,\n\t\t\t     const
      struct connection_vfuncs *vfuncs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_set_handlers
      Src: /src/dovecot/src/lib/connection.c:1074,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1072
    functionDepth: 3
    functionLinenumber: 1072
    functionLinenumberEnd: 1075
    functionName: connection_set_default_handlers
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 1
    functionsReached:
    - connection_set_handlers
    linkageType: ''
    returnType: void
    signature: void connection_set_default_handlers(struct connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_io_to
      Src: /src/dovecot/src/lib/connection.c:1082,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib/connection.c:1084,1
    - Dst: i_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/connection.c:1086,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/connection.c:1088,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - ioloop
    argTypes:
    - struct connection*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1077
    functionDepth: 1
    functionLinenumber: 1077
    functionLinenumberEnd: 1089
    functionName: connection_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 3
    functionsReached:
    - io_loop_move_io_to
    - o_stream_switch_ioloop_to
    - io_loop_move_timeout_to
    - i_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: "void connection_switch_ioloop_to(struct connection *conn,\n\t\t\t\t
      struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib/connection.c:1093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1091
    functionDepth: 2
    functionLinenumber: 1091
    functionLinenumberEnd: 1094
    functionName: connection_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 5
    functionsReached:
    - connection_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: void connection_switch_ioloop(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:1102,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:1104,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/connection.c:1109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - set
    - vfuncs
    argTypes:
    - struct connection_settings*
    - struct connection_vfuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1096
    functionDepth: 1
    functionLinenumber: 1096
    functionLinenumberEnd: 1114
    functionName: connection_list_init
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 35
    functionsReached:
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct connection_list
    signature: "struct connection_list *\nconnection_list_init(const struct connection_settings
      *set,\n\t\t     const struct connection_vfuncs *vfuncs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_closed
      Src: /src/dovecot/src/lib/connection.c:1127,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/connection.c:1128,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/connection.c:1130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct connection_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1116
    functionDepth: 1
    functionLinenumber: 1116
    functionLinenumberEnd: 1131
    functionName: connection_list_deinit
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 34
    functionsReached:
    - i_assert
    - i_free
    - connection_closed
    linkageType: ''
    returnType: void
    signature: void connection_list_deinit(struct connection_list **_list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib/connection.c:1138,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1149
    functionName: connection_is_valid_dns_name
    functionSourceFile: /src/dovecot/src/lib/connection.c
    functionUses: 6
    functionsReached:
    - strstr
    linkageType: ''
    returnType: bool
    signature: bool connection_is_valid_dns_name(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-tee.c:19,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-tee.c:20,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-tee.c:22,1
    - Dst: tee_i_stream_create
      Src: /src/dovecot/src/lib/test-istream-tee.c:23,1
    - Dst: tee_i_stream_create_child
      Src: /src/dovecot/src/lib/test-istream-tee.c:25,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-tee.c:27,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-tee.c:30,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-tee.c:32,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:32,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-tee.c:33,1
    - Dst: tee_i_stream_child_is_waiting
      Src: /src/dovecot/src/lib/test-istream-tee.c:33,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-tee.c:34,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:34,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-tee.c:35,1
    - Dst: tee_i_stream_child_is_waiting
      Src: /src/dovecot/src/lib/test-istream-tee.c:35,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-tee.c:37,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-tee.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:44,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:45,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:46,1
    - Dst: tee_i_stream_child_is_waiting
      Src: /src/dovecot/src/lib/test-istream-tee.c:46,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-tee.c:51,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-tee.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:54,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:55,1
    - Dst: tee_i_stream_child_is_waiting
      Src: /src/dovecot/src/lib/test-istream-tee.c:55,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-tee.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:61,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:61,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:62,1
    - Dst: tee_i_stream_child_is_waiting
      Src: /src/dovecot/src/lib/test-istream-tee.c:62,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-tee.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:66,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:67,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:68,1
    - Dst: tee_i_stream_child_is_waiting
      Src: /src/dovecot/src/lib/test-istream-tee.c:68,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-tee.c:70,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-tee.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:77,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:78,1
    - Dst: tee_i_stream_child_is_waiting
      Src: /src/dovecot/src/lib/test-istream-tee.c:78,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-tee.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:81,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:82,1
    - Dst: tee_i_stream_child_is_waiting
      Src: /src/dovecot/src/lib/test-istream-tee.c:82,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-tee.c:84,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:86,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:86,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-tee.c:87,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-tee.c:89,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-tee.c:91,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 66
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 92
    functionName: test_istream_tee_tailing
    functionSourceFile: /src/dovecot/src/lib/test-istream-tee.c
    functionUses: 0
    functionsReached:
    - tee_i_stream_child_is_waiting
    - test_assert_idx
    - test_istream_set_allow_eof
    - tee_i_stream_create_child
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - test_end
    - i_stream_read
    - test_istream_create
    - i_rand_limit
    - test_assert
    - tee_i_stream_create
    - i_rand_minmax
    - test_istream_set_size
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_tee_tailing(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-tee.c:100,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-tee.c:101,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-tee.c:103,1
    - Dst: tee_i_stream_create
      Src: /src/dovecot/src/lib/test-istream-tee.c:104,1
    - Dst: tee_i_stream_create_child
      Src: /src/dovecot/src/lib/test-istream-tee.c:106,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-tee.c:108,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-tee.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:112,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:112,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-tee.c:113,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-tee.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-tee.c:118,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-tee.c:118,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-tee.c:119,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-tee.c:121,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-tee.c:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 124
    functionName: test_istream_tee_blocks
    functionSourceFile: /src/dovecot/src/lib/test-istream-tee.c
    functionUses: 0
    functionsReached:
    - test_istream_set_allow_eof
    - tee_i_stream_create_child
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - test_end
    - i_stream_read
    - test_istream_create
    - test_assert
    - tee_i_stream_create
    - test_istream_set_size
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_tee_blocks(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib/test-istream-tee.c:131,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-istream-tee.c:133,1
    - Dst: test_istream_tee_tailing
      Src: /src/dovecot/src/lib/test-istream-tee.c:135,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-istream-tee.c:135,1
    - Dst: test_istream_tee_blocks
      Src: /src/dovecot/src/lib/test-istream-tee.c:136,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-istream-tee.c:136,1
    - Dst: str_free
      Src: /src/dovecot/src/lib/test-istream-tee.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: test_istream_tee
    functionSourceFile: /src/dovecot/src/lib/test-istream-tee.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_append_c
    - test_istream_tee_tailing
    - str_new
    - str_free
    - test_istream_tee_blocks
    linkageType: ''
    returnType: void
    signature: void test_istream_tee(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool.c:17,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/mempool.c:19,1
    - Dst: p_get_max_easy_alloc_size
      Src: /src/dovecot/src/lib/mempool.c:20,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - pool
    - old_size
    - min_size
    argTypes:
    - pool_t
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 26
    functionName: pool_get_exp_grown_size
    functionSourceFile: /src/dovecot/src/lib/mempool.c
    functionUses: 0
    functionsReached:
    - p_get_max_easy_alloc_size
    - i_assert
    - nearest_power
    linkageType: ''
    returnType: size_t
    signature: size_t pool_get_exp_grown_size(pool_t pool, size_t old_size, size_t
      min_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool.c:30,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool.c:31,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool.c:32,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool.c:33,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/mempool.c:35,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/mempool.c:36,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/mempool.c:37,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib/mempool.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pool
    - ref_pool
    argTypes:
    - pool_t
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 39
    functionName: pool_add_external_ref
    functionSourceFile: /src/dovecot/src/lib/mempool.c
    functionUses: 11
    functionsReached:
    - i_array_init
    - pool_ref
    - array_push_back
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void pool_add_external_ref(pool_t pool, pool_t ref_pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/mempool.c:43,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/mempool.c:45,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/mempool.c:46,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/mempool.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: pool_external_refs_unref
    functionSourceFile: /src/dovecot/src/lib/mempool.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - array_free
    - pool_unref
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void pool_external_refs_unref(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/test-ioloop.c:19,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ioloop.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 21
    functionName: timeout_callback
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void timeout_callback(struct timeval *tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ioloop.c:27,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 28
    functionName: test_ioloop_fd_cb_left
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void test_ioloop_fd_cb_left(struct test_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ioloop.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: test_ioloop_fd_cb_right
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void test_ioloop_fd_cb_right(struct test_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ioloop.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: test_ioloop_fd_to
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void test_ioloop_fd_to(struct test_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:45,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib/test-ioloop.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:51,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-ioloop.c:53,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:54,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-ioloop.c:58,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:60,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-ioloop.c:63,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-ioloop.c:66,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/test-ioloop.c:69,1
    - Dst: write
      Src: /src/dovecot/src/lib/test-ioloop.c:71,1
    - Dst: write
      Src: /src/dovecot/src/lib/test-ioloop.c:72,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ioloop.c:73,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ioloop.c:75,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:77,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:78,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:79,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:83,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:85,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ioloop.c:86,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ioloop.c:87,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 90
    functionName: test_ioloop_fd
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_error
    - io_add
    - io_remove
    - timeout_add
    - i_fatal
    - i_close_fd
    - io_loop_destroy
    - io_loop_create
    - write
    - test_end
    - test_assert
    - socketpair
    - io_loop_run
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_ioloop_fd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:98,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:100,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:104,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:105,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:105,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/test-ioloop.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:107,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:108,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:108,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/test-ioloop.c:109,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib/test-ioloop.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:111,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:112,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:112,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/test-ioloop.c:113,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:114,1
    - Dst: sleep
      Src: /src/dovecot/src/lib/test-ioloop.c:116,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/test-ioloop.c:119,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:120,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/test-ioloop.c:123,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/test-ioloop.c:124,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ioloop.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:126,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/test-ioloop.c:126,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:127,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:129,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:129,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:130,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 133
    functionName: test_ioloop_timeout
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - io_loop_is_empty
    - timeval_diff_msecs
    - io_loop_set_current
    - timeout_add
    - io_loop_destroy
    - io_loop_create
    - test_end
    - sleep
    - io_loop_move_timeout
    - test_assert
    - io_loop_run
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_ioloop_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - counter
    argTypes:
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: zero_timeout_callback
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zero_timeout_callback(unsigned int *counter)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:148,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-ioloop.c:150,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ioloop.c:151,1
    - Dst: fork
      Src: /src/dovecot/src/lib/test-ioloop.c:152,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ioloop.c:154,1
    - Dst: sleep
      Src: /src/dovecot/src/lib/test-ioloop.c:156,1
    - Dst: write
      Src: /src/dovecot/src/lib/test-ioloop.c:158,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ioloop.c:159,1
    - Dst: test_exit
      Src: /src/dovecot/src/lib/test-ioloop.c:160,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:165,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-ioloop.c:166,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-ioloop.c:167,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ioloop.c:169,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib/test-ioloop.c:170,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:172,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:173,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:174,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 176
    functionName: test_ioloop_zero_timeout
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - fork
    - test_exit
    - io_add
    - timeout_add_short
    - io_remove
    - i_fatal
    - io_loop_destroy
    - write
    - io_loop_create
    - test_end
    - sleep
    - test_assert_ucmp
    - timeout_remove
    - io_loop_run
    - test_begin
    - pipe
    linkageType: ''
    returnType: void
    signature: void test_ioloop_zero_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:186,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-ioloop.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zero_timeout_recreate_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: zero_timeout_recreate_callback
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void zero_timeout_recreate_callback(struct zero_timeout_recreate_ctx
      *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:198,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-ioloop.c:200,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ioloop.c:201,1
    - Dst: fork
      Src: /src/dovecot/src/lib/test-ioloop.c:202,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ioloop.c:204,1
    - Dst: sleep
      Src: /src/dovecot/src/lib/test-ioloop.c:206,1
    - Dst: write
      Src: /src/dovecot/src/lib/test-ioloop.c:208,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ioloop.c:209,1
    - Dst: test_exit
      Src: /src/dovecot/src/lib/test-ioloop.c:210,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:215,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-ioloop.c:216,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-ioloop.c:217,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ioloop.c:219,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib/test-ioloop.c:220,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:222,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:223,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:224,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 226
    functionName: test_ioloop_zero_timeout_recreate
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - fork
    - test_exit
    - io_add
    - timeout_add_short
    - io_remove
    - i_fatal
    - io_loop_destroy
    - write
    - io_loop_create
    - test_end
    - sleep
    - test_assert_ucmp
    - timeout_remove
    - io_loop_run
    - test_begin
    - pipe
    linkageType: ''
    returnType: void
    signature: void test_ioloop_zero_timeout_recreate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: io_callback
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_callback(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:249,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:251,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ioloop.c:253,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib/test-ioloop.c:254,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ioloop.c:255,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-ioloop.c:256,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-ioloop.c:258,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ioloop.c:261,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-ioloop.c:262,1
    - Dst: io_loop_find_fd_conditions
      Src: /src/dovecot/src/lib/test-ioloop.c:262,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:264,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ioloop.c:265,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:266,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ioloop.c:267,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ioloop.c:268,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:270,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 232
    functionDepth: 3
    functionLinenumber: 232
    functionLinenumberEnd: 273
    functionName: test_ioloop_find_fd_conditions
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_add
    - test_assert_idx
    - io_loop_find_fd_conditions
    - io_remove
    - i_fatal
    - i_close_fd
    - io_loop_destroy
    - io_loop_create
    - test_end
    - socketpair
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ioloop_find_fd_conditions(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ioloop.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: io_callback_pending_io
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void io_callback_pending_io(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:282,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/test-ioloop.c:284,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:286,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:286,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/test-ioloop.c:287,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:288,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib/test-ioloop.c:288,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/test-ioloop.c:289,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/test-ioloop.c:290,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ioloop.c:291,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:292,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ioloop.c:293,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:294,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 280
    functionDepth: 3
    functionLinenumber: 280
    functionLinenumberEnd: 297
    functionName: test_ioloop_pending_io
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_is_empty
    - io_add_istream
    - io_loop_set_current
    - io_remove
    - io_set_pending
    - io_loop_create
    - io_loop_destroy
    - test_end
    - test_assert
    - i_stream_unref
    - i_stream_create_from_data
    - io_loop_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ioloop_pending_io(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:301,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib/test-ioloop.c:301,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ioloop.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 303
    functionName: test_ioloop_context_callback
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_get_current_context
    - io_loop_stop
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_ioloop_context_callback(struct ioloop_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:307,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:308,1
    - Dst: io_loop_context_new
      Src: /src/dovecot/src/lib/test-ioloop.c:309,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:311,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib/test-ioloop.c:311,1
    - Dst: io_loop_context_activate
      Src: /src/dovecot/src/lib/test-ioloop.c:312,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:313,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib/test-ioloop.c:313,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/test-ioloop.c:314,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ioloop.c:316,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:317,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib/test-ioloop.c:317,1
    - Dst: io_loop_context_activate
      Src: /src/dovecot/src/lib/test-ioloop.c:319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:320,1
    - Dst: io_loop_get_current_context
      Src: /src/dovecot/src/lib/test-ioloop.c:320,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ioloop.c:322,1
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/lib/test-ioloop.c:323,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:324,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 305
    functionDepth: 3
    functionLinenumber: 305
    functionLinenumberEnd: 326
    functionName: test_ioloop_context
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_context_unref
    - timeout_add
    - io_loop_destroy
    - io_loop_create
    - test_end
    - io_loop_context_activate
    - io_loop_context_new
    - test_assert
    - io_loop_get_current_context
    - io_loop_run
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_ioloop_context(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ioloop.c:330,1
    - Dst: io_loop_context_new
      Src: /src/dovecot/src/lib/test-ioloop.c:334,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib/test-ioloop.c:335,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-ioloop.c:336,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/test-ioloop.c:337,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-ioloop.c:338,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/test-ioloop.c:339,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/lib/test-ioloop.c:340,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:342,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/test-ioloop.c:342,1
    - Dst: io_loop_context_new
      Src: /src/dovecot/src/lib/test-ioloop.c:345,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib/test-ioloop.c:346,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-ioloop.c:347,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/test-ioloop.c:348,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/lib/test-ioloop.c:349,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:351,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/test-ioloop.c:351,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib/test-ioloop.c:354,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:355,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/test-ioloop.c:355,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib/test-ioloop.c:356,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:357,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/test-ioloop.c:357,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib/test-ioloop.c:360,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib/test-ioloop.c:361,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib/test-ioloop.c:362,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib/test-ioloop.c:363,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib/test-ioloop.c:364,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:365,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/test-ioloop.c:365,1
    - Dst: io_loop_context_switch
      Src: /src/dovecot/src/lib/test-ioloop.c:366,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ioloop.c:367,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/test-ioloop.c:367,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/lib/test-ioloop.c:369,1
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/lib/test-ioloop.c:370,1
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/lib/test-ioloop.c:371,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ioloop.c:372,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-ioloop.c:374,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-ioloop.c:375,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-ioloop.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 1
    argNames:
    - root_event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 377
    functionName: test_ioloop_context_events_run
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_context_unref
    - event_create
    - event_get_global
    - event_unref
    - io_loop_context_switch
    - io_loop_destroy
    - io_loop_create
    - io_loop_context_new
    - event_push_global
    - test_assert
    - event_pop_global
    - io_loop_context_deactivate
    linkageType: ''
    returnType: void
    signature: void test_ioloop_context_events_run(struct event *root_event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:381,1
    - Dst: test_ioloop_context_events_run
      Src: /src/dovecot/src/lib/test-ioloop.c:382,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:383,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ioloop.c:385,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-ioloop.c:386,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/test-ioloop.c:387,1
    - Dst: test_ioloop_context_events_run
      Src: /src/dovecot/src/lib/test-ioloop.c:388,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib/test-ioloop.c:389,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-ioloop.c:390,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ioloop.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 392
    functionName: test_ioloop_context_events
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - test_ioloop_context_events_run
    - test_end
    - event_push_global
    - event_pop_global
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ioloop_context_events(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ioloop_timeout
      Src: /src/dovecot/src/lib/test-ioloop.c:396,1
    - Dst: test_ioloop_zero_timeout
      Src: /src/dovecot/src/lib/test-ioloop.c:397,1
    - Dst: test_ioloop_zero_timeout_recreate
      Src: /src/dovecot/src/lib/test-ioloop.c:398,1
    - Dst: test_ioloop_find_fd_conditions
      Src: /src/dovecot/src/lib/test-ioloop.c:399,1
    - Dst: test_ioloop_pending_io
      Src: /src/dovecot/src/lib/test-ioloop.c:400,1
    - Dst: test_ioloop_fd
      Src: /src/dovecot/src/lib/test-ioloop.c:401,1
    - Dst: test_ioloop_context
      Src: /src/dovecot/src/lib/test-ioloop.c:402,1
    - Dst: test_ioloop_context_events
      Src: /src/dovecot/src/lib/test-ioloop.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 394
    functionDepth: 4
    functionLinenumber: 394
    functionLinenumberEnd: 404
    functionName: test_ioloop
    functionSourceFile: /src/dovecot/src/lib/test-ioloop.c
    functionUses: 0
    functionsReached:
    - test_ioloop_find_fd_conditions
    - test_ioloop_context_events
    - test_ioloop_timeout
    - test_ioloop_context
    - test_ioloop_fd
    - test_ioloop_zero_timeout_recreate
    - test_ioloop_pending_io
    - test_ioloop_zero_timeout
    linkageType: ''
    returnType: void
    signature: void test_ioloop(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gmtime
      Src: /src/dovecot/src/lib/utc-offset.c:18,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - tm
    - ATTR_UNUSED
    argTypes:
    - struct tm*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 38
    functionName: utc_offset
    functionSourceFile: /src/dovecot/src/lib/utc-offset.c
    functionUses: 8
    functionsReached:
    - gmtime
    linkageType: ''
    returnType: int
    signature: int utc_offset(struct tm *tm, time_t t ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/env-util.c:18,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/env-util.c:18,1
    - Dst: setenv
      Src: /src/dovecot/src/lib/env-util.c:20,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/env-util.c:21,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - name
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 22
    functionName: env_put
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 8
    functionsReached:
    - strchr
    - i_fatal
    - i_assert
    - setenv
    linkageType: ''
    returnType: void
    signature: void env_put(const char *name, const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/env-util.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/env-util.c:28,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/env-util.c:30,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/env-util.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - envs
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 33
    functionName: env_put_array
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 0
    functionsReached:
    - env_put
    - strchr
    - i_assert
    - t_strdup_until
    linkageType: ''
    returnType: void
    signature: void env_put_array(const char *const *envs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unsetenv
      Src: /src/dovecot/src/lib/env-util.c:38,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/env-util.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: env_remove
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 1
    functionsReached:
    - unsetenv
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void env_remove(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clearenv
      Src: /src/dovecot/src/lib/env-util.c:45,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/env-util.c:46,1
    - Dst: env_get_environ_p
      Src: /src/dovecot/src/lib/env-util.c:48,1
    - Dst: calloc
      Src: /src/dovecot/src/lib/env-util.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 59
    functionName: env_clean
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 1
    functionsReached:
    - env_get_environ_p
    - calloc
    - i_fatal
    - clearenv
    linkageType: ''
    returnType: void
    signature: void env_clean(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/env-util.c:63,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/env-util.c:67,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/env-util.c:71,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/env-util.c:73,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/env-util.c:74,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/env-util.c:75,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/env-util.c:76,1
    - Dst: env_clean
      Src: /src/dovecot/src/lib/env-util.c:83,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/env-util.c:85,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/env-util.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - preserve_envs
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 88
    functionName: env_clean_except_real
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 0
    functionsReached:
    - env_put
    - array_push_back
    - array_get
    - env_clean
    - getenv
    - t_array_init
    - ARRAY_TYPE
    - t_strdup
    linkageType: ''
    returnType: void
    signature: void env_clean_except_real(const char *const preserve_envs[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: env_clean_except_real
      Src: /src/dovecot/src/lib/env-util.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - preserve_envs
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: env_clean_except
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 1
    functionsReached:
    - env_clean_except_real
    linkageType: ''
    returnType: void
    signature: void env_clean_except(const char *const preserve_envs[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: env_get_environ_p
      Src: /src/dovecot/src/lib/env-util.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/env-util.c:104,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/env-util.c:108,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/env-util.c:109,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/env-util.c:111,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/env-util.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 115
    functionName: env_backup_save
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - env_get_environ_p
    - i_assert
    linkageType: ''
    returnType: struct env_backup
    signature: struct env_backup *env_backup_save(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: env_clean
      Src: /src/dovecot/src/lib/env-util.c:119,1
    - Dst: env_put_array
      Src: /src/dovecot/src/lib/env-util.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct env_backup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: env_backup_restore
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 0
    functionsReached:
    - env_clean
    - env_put_array
    linkageType: ''
    returnType: void
    signature: void env_backup_restore(struct env_backup *env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/env-util.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _env
    argTypes:
    - struct env_backup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 129
    functionName: env_backup_free
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void env_backup_free(struct env_backup **_env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _NSGetEnviron
      Src: /src/dovecot/src/lib/env-util.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: env_get_environ_p
    functionSourceFile: /src/dovecot/src/lib/env-util.c
    functionUses: 2
    functionsReached:
    - _NSGetEnviron
    linkageType: ''
    returnType: char
    signature: char ***env_get_environ_p(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-create-locked.c:33,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-create-locked.c:34,1
    - Dst: file_wait_lock
      Src: /src/dovecot/src/lib/file-create-locked.c:37,1
    - Dst: stat
      Src: /src/dovecot/src/lib/file-create-locked.c:40,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib/file-create-locked.c:42,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-create-locked.c:46,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib/file-create-locked.c:51,1
    - Dst: file_lock_set_unlink_on_free
      Src: /src/dovecot/src/lib/file-create-locked.c:53,1
    - Dst: file_lock_set_close_on_free
      Src: /src/dovecot/src/lib/file-create-locked.c:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - fd
    - path
    - set
    - lock_r
    - error_r
    argTypes:
    - int
    - char*
    - struct file_create_settings*
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 59
    functionName: try_lock_existing
    functionSourceFile: /src/dovecot/src/lib/file-create-locked.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - file_wait_lock
    - file_lock_set_unlink_on_free
    - fstat
    - stat
    - CMP_DEV_T
    - file_lock_set_close_on_free
    - file_lock_free
    linkageType: ''
    returnType: int
    signature: "int try_lock_existing(int fd, const char *path,\n\t\t  const struct
      file_create_settings *set,\n\t\t  struct file_lock **lock_r, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/dovecot/src/lib/file-create-locked.c:67,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/file-create-locked.c:71,1
    - Dst: mkdir_parents_chown
      Src: /src/dovecot/src/lib/file-create-locked.c:74,1
    - Dst: mkdir_parents_chgrp
      Src: /src/dovecot/src/lib/file-create-locked.c:76,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-create-locked.c:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - path
    - set
    - error_r
    argTypes:
    - char*
    - struct file_create_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 84
    functionName: try_mkdir
    functionSourceFile: /src/dovecot/src/lib/file-create-locked.c
    functionUses: 0
    functionsReached:
    - strrchr
    - mkdir_parents_chown
    - mkdir_parents_chgrp
    - t_strdup_printf
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: "int try_mkdir(const char *path, const struct file_create_settings
      *set,\n\t  const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/file-create-locked.c:90,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/file-create-locked.c:96,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lib/file-create-locked.c:99,1
    - Dst: safe_mkstemp_group
      Src: /src/dovecot/src/lib/file-create-locked.c:101,1
    - Dst: try_mkdir
      Src: /src/dovecot/src/lib/file-create-locked.c:107,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib/file-create-locked.c:113,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-create-locked.c:115,1
    - Dst: file_try_lock
      Src: /src/dovecot/src/lib/file-create-locked.c:126,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/file-create-locked.c:126,1
    - Dst: link
      Src: /src/dovecot/src/lib/file-create-locked.c:128,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/file-create-locked.c:128,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-create-locked.c:135,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/file-create-locked.c:137,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-create-locked.c:139,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/file-create-locked.c:140,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib/file-create-locked.c:142,1
    - Dst: file_lock_set_path
      Src: /src/dovecot/src/lib/file-create-locked.c:144,1
    - Dst: file_lock_set_unlink_on_free
      Src: /src/dovecot/src/lib/file-create-locked.c:145,1
    - Dst: file_lock_set_close_on_free
      Src: /src/dovecot/src/lib/file-create-locked.c:147,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/file-create-locked.c:149,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/file-create-locked.c:149,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/file-create-locked.c:154,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/file-create-locked.c:155,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/file-create-locked.c:155,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 5
    argNames:
    - path
    - set
    - fd_r
    - lock_r
    - error_r
    argTypes:
    - char*
    - struct file_create_settings*
    - int*
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 158
    functionName: try_create_new
    functionSourceFile: /src/dovecot/src/lib/file-create-locked.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - file_lock_set_close_on_free
    - file_lock_free
    - i_close_fd
    - file_lock_set_path
    - t_strdup_printf
    - safe_mkstemp_group
    - file_lock_set_unlink_on_free
    - file_try_lock
    - try_mkdir
    - i_unlink_if_exists
    - link
    - eacces_error_get
    - str_append
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: "int try_create_new(const char *path, const struct file_create_settings
      *set,\n\t       int *fd_r, struct file_lock **lock_r,  const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/file-create-locked.c:168,1
    - Dst: try_lock_existing
      Src: /src/dovecot/src/lib/file-create-locked.c:170,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/file-create-locked.c:176,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib/file-create-locked.c:180,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-create-locked.c:183,1
    - Dst: try_create_new
      Src: /src/dovecot/src/lib/file-create-locked.c:187,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-create-locked.c:199,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 5
    argNames:
    - path
    - set
    - lock_r
    - created_r
    - error_r
    argTypes:
    - char*
    - struct file_create_settings*
    - struct file_lock**
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 202
    functionName: file_create_locked
    functionSourceFile: /src/dovecot/src/lib/file-create-locked.c
    functionUses: 4
    functionsReached:
    - try_create_new
    - i_close_fd
    - open
    - t_strdup_printf
    - try_lock_existing
    - eacces_error_get
    linkageType: ''
    returnType: int
    signature: "int file_create_locked(const char *path, const struct file_create_settings
      *set,\n\t\t       struct file_lock **lock_r, bool *created_r,\n\t\t       const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - unichar_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 28
    functionName: uni_strlen
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uni_strlen(const unichar_t *str)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.c:41,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib/unichar.c:51,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.c:70,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib/unichar.c:96,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 4
    argNames:
    - _buffer
    - size
    - cstr
    - chr_r
    argTypes:
    - void*
    - size_t
    - bool
    - unichar_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 105
    functionName: uni_utf8_parse_char
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - i_assert
    - uni_is_valid_ucs4
    - uni_utf8_char_bytes
    linkageType: ''
    returnType: int
    signature: "int uni_utf8_parse_char(const void *_buffer, size_t size, bool cstr,\n\t\t
      \   unichar_t *chr_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_parse_char
      Src: /src/dovecot/src/lib/unichar.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - chr_r
    argTypes:
    - char*
    - unichar_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: uni_utf8_get_char
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 2
    functionsReached:
    - uni_utf8_parse_char
    linkageType: ''
    returnType: int
    signature: int uni_utf8_get_char(const char *input, unichar_t *chr_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_parse_char
      Src: /src/dovecot/src/lib/unichar.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - max_len
    - chr_r
    argTypes:
    - void*
    - size_t
    - unichar_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: uni_utf8_get_char_n
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 9
    functionsReached:
    - uni_utf8_parse_char
    linkageType: ''
    returnType: int
    signature: int uni_utf8_get_char_n(const void *input, size_t max_len, unichar_t
      *chr_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_parse_char
      Src: /src/dovecot/src/lib/unichar.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - size
    - chr_r
    argTypes:
    - void*
    - size_t
    - unichar_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: uni_utf8_get_char_buf
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 1
    functionsReached:
    - uni_utf8_parse_char
    linkageType: ''
    returnType: int
    signature: int uni_utf8_get_char_buf(const void *buffer, size_t size, unichar_t
      *chr_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib/unichar.c:127,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/unichar.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 137
    functionName: uni_utf8_to_ucs4
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 1
    functionsReached:
    - array_push_back
    - uni_utf8_get_char
    linkageType: ''
    returnType: int
    signature: int uni_utf8_to_ucs4(const char *input, ARRAY_TYPE(unichars) *output)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/unichar.c:145,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/unichar.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - input
    - size
    - output
    argTypes:
    - unsigned char*
    - size_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 153
    functionName: uni_utf8_to_ucs4_n
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_get_char_n
    - array_push_back
    linkageType: ''
    returnType: int
    signature: "int uni_utf8_to_ucs4_n(const unsigned char *input, size_t size,\n\t\t
      \      ARRAY_TYPE(unichars) *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib/unichar.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - input
    - len
    - output
    argTypes:
    - unichar_t*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: uni_ucs4_to_utf8
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 3
    functionsReached:
    - uni_ucs4_to_utf8_c
    linkageType: ''
    returnType: void
    signature: void uni_ucs4_to_utf8(const unichar_t *input, size_t len, buffer_t
      *output)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/unichar.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.c:171,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib/unichar.c:171,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/unichar.c:194,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/unichar.c:198,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - chr
    - output
    argTypes:
    - unichar_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 200
    functionName: uni_ucs4_to_utf8_c
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 6
    functionsReached:
    - buffer_append_c
    - i_assert
    - uni_is_valid_ucs4
    linkageType: ''
    returnType: void
    signature: void uni_ucs4_to_utf8_c(unichar_t chr, buffer_t *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_strlen_n
      Src: /src/dovecot/src/lib/unichar.c:204,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/unichar.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: uni_utf8_strlen
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 1
    functionsReached:
    - strlen
    - uni_utf8_strlen_n
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uni_utf8_strlen(const char *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib/unichar.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: uni_utf8_strlen_n
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 1
    functionsReached:
    - uni_utf8_partial_strlen_n
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uni_utf8_strlen_n(const void *input, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib/unichar.c:222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - _input
    - size
    - partial_pos_r
    argTypes:
    - void*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 230
    functionName: uni_utf8_partial_strlen_n
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 2
    functionsReached:
    - uni_utf8_char_bytes
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int uni_utf8_partial_strlen_n(const void *_input, size_t
      size,\n\t\t\t\t       size_t *partial_pos_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unichar.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 240
    functionName: uni_ucs4_to_titlecase
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - unicode_code_point_get_data
    linkageType: ''
    returnType: unichar_t
    signature: unichar_t uni_ucs4_to_titlecase(unichar_t chr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib/unichar.c:245,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/unichar.c:245,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/unichar.c:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - output
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 252
    functionName: output_add_replacement_char
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - CONST_PTR_OFFSET
    - memcmp
    linkageType: ''
    returnType: void
    signature: void output_add_replacement_char(buffer_t *output)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: unicode_transform_get_last
      Src: /src/dovecot/src/lib/unichar.c:259,1
    - Dst: unicode_buffer_sink_init
      Src: /src/dovecot/src/lib/unichar.c:267,1
    - Dst: unicode_transform_chain
      Src: /src/dovecot/src/lib/unichar.c:268,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/unichar.c:272,1
    - Dst: unicode_transform_input
      Src: /src/dovecot/src/lib/unichar.c:288,1
    - Dst: unicode_transform_flush
      Src: /src/dovecot/src/lib/unichar.c:295,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/unichar.c:297,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.c:298,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 5
    argNames:
    - _input
    - size
    - trans
    - output
    - error_r
    argTypes:
    - void*
    - size_t
    - struct unicode_transform*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 254
    functionDepth: 3
    functionLinenumber: 254
    functionLinenumberEnd: 300
    functionName: uni_utf8_run_transform
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - i_panic
    - unicode_buffer_sink_init
    - unicode_transform_flush
    - i_assert
    - unicode_transform_get_last
    - uni_utf8_get_char_n
    - unicode_transform_chain
    - unicode_transform_input
    linkageType: ''
    returnType: int
    signature: "int uni_utf8_run_transform(const void *_input, size_t size,\n\t\t\t
      \  struct unicode_transform *trans, buffer_t *output,\n\t\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_nf_init
      Src: /src/dovecot/src/lib/unichar.c:309,1
    - Dst: uni_utf8_run_transform
      Src: /src/dovecot/src/lib/unichar.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - _input
    - size
    - nf_type
    - output
    argTypes:
    - void*
    - size_t
    - enum unicode_nf_type
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 302
    functionDepth: 4
    functionLinenumber: 302
    functionLinenumberEnd: 313
    functionName: uni_utf8_write_nf_common
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_run_transform
    - unicode_nf_init
    linkageType: ''
    returnType: int
    signature: "int uni_utf8_write_nf_common(const void *_input, size_t size,\n\t\t\t
      enum unicode_nf_type nf_type, buffer_t *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_write_nf_common
      Src: /src/dovecot/src/lib/unichar.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - size
    - output
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 315
    functionDepth: 5
    functionLinenumber: 315
    functionLinenumberEnd: 318
    functionName: uni_utf8_write_nfd
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_write_nf_common
    linkageType: ''
    returnType: int
    signature: int uni_utf8_write_nfd(const void *input, size_t size, buffer_t *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_write_nf_common
      Src: /src/dovecot/src/lib/unichar.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - size
    - output
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 320
    functionDepth: 5
    functionLinenumber: 320
    functionLinenumberEnd: 323
    functionName: uni_utf8_write_nfkd
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_write_nf_common
    linkageType: ''
    returnType: int
    signature: int uni_utf8_write_nfkd(const void *input, size_t size, buffer_t *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_write_nf_common
      Src: /src/dovecot/src/lib/unichar.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - size
    - output
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 5
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: uni_utf8_write_nfc
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 1
    functionsReached:
    - uni_utf8_write_nf_common
    linkageType: ''
    returnType: int
    signature: int uni_utf8_write_nfc(const void *input, size_t size, buffer_t *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_write_nf_common
      Src: /src/dovecot/src/lib/unichar.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - size
    - output
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 330
    functionDepth: 5
    functionLinenumber: 330
    functionLinenumberEnd: 333
    functionName: uni_utf8_write_nfkc
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_write_nf_common
    linkageType: ''
    returnType: int
    signature: int uni_utf8_write_nfkc(const void *input, size_t size, buffer_t *output)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/unichar.c:337,1
    - Dst: uni_utf8_write_nf_common
      Src: /src/dovecot/src/lib/unichar.c:339,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unichar.c:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - input
    - size
    - output_r
    argTypes:
    - void*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 335
    functionDepth: 5
    functionLinenumber: 335
    functionLinenumberEnd: 343
    functionName: uni_utf8_to_nfd
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_buffer_create
    - uni_utf8_write_nf_common
    linkageType: ''
    returnType: int
    signature: int uni_utf8_to_nfd(const void *input, size_t size, const char **output_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/unichar.c:347,1
    - Dst: uni_utf8_write_nf_common
      Src: /src/dovecot/src/lib/unichar.c:349,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unichar.c:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - input
    - size
    - output_r
    argTypes:
    - void*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 345
    functionDepth: 5
    functionLinenumber: 345
    functionLinenumberEnd: 353
    functionName: uni_utf8_to_nfkd
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_buffer_create
    - uni_utf8_write_nf_common
    linkageType: ''
    returnType: int
    signature: int uni_utf8_to_nfkd(const void *input, size_t size, const char **output_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/unichar.c:357,1
    - Dst: uni_utf8_write_nf_common
      Src: /src/dovecot/src/lib/unichar.c:359,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unichar.c:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - input
    - size
    - output_r
    argTypes:
    - void*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 355
    functionDepth: 5
    functionLinenumber: 355
    functionLinenumberEnd: 363
    functionName: uni_utf8_to_nfc
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 6
    functionsReached:
    - str_c
    - t_buffer_create
    - uni_utf8_write_nf_common
    linkageType: ''
    returnType: int
    signature: int uni_utf8_to_nfc(const void *input, size_t size, const char **output_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/unichar.c:367,1
    - Dst: uni_utf8_write_nf_common
      Src: /src/dovecot/src/lib/unichar.c:369,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unichar.c:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - input
    - size
    - output_r
    argTypes:
    - void*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 365
    functionDepth: 5
    functionLinenumber: 365
    functionLinenumberEnd: 373
    functionName: uni_utf8_to_nfkc
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_buffer_create
    - uni_utf8_write_nf_common
    linkageType: ''
    returnType: int
    signature: int uni_utf8_to_nfkc(const void *input, size_t size, const char **output_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unicode_nf_checker_init
      Src: /src/dovecot/src/lib/unichar.c:383,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/unichar.c:387,1
    - Dst: unicode_nf_checker_input
      Src: /src/dovecot/src/lib/unichar.c:393,1
    - Dst: unicode_nf_checker_finish
      Src: /src/dovecot/src/lib/unichar.c:398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - _input
    - size
    - type
    argTypes:
    - void*
    - size_t
    - enum unicode_nf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 375
    functionDepth: 3
    functionLinenumber: 375
    functionLinenumberEnd: 399
    functionName: uni_utf8_is_nf
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - unicode_nf_checker_input
    - uni_utf8_get_char_n
    - unicode_nf_checker_init
    - unicode_nf_checker_finish
    linkageType: ''
    returnType: int
    signature: int uni_utf8_is_nf(const void *_input, size_t size, enum unicode_nf_type
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_is_nf
      Src: /src/dovecot/src/lib/unichar.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 401
    functionDepth: 4
    functionLinenumber: 401
    functionLinenumberEnd: 404
    functionName: uni_utf8_is_nfd
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_is_nf
    linkageType: ''
    returnType: int
    signature: int uni_utf8_is_nfd(const void *input, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_is_nf
      Src: /src/dovecot/src/lib/unichar.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 406
    functionDepth: 4
    functionLinenumber: 406
    functionLinenumberEnd: 409
    functionName: uni_utf8_is_nfkd
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_is_nf
    linkageType: ''
    returnType: int
    signature: int uni_utf8_is_nfkd(const void *input, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_is_nf
      Src: /src/dovecot/src/lib/unichar.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 414
    functionName: uni_utf8_is_nfc
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_is_nf
    linkageType: ''
    returnType: int
    signature: int uni_utf8_is_nfc(const void *input, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_is_nf
      Src: /src/dovecot/src/lib/unichar.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 416
    functionDepth: 4
    functionLinenumber: 416
    functionLinenumberEnd: 419
    functionName: uni_utf8_is_nfkc
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_is_nf
    linkageType: ''
    returnType: int
    signature: int uni_utf8_is_nfkc(const void *input, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_casemap_init_uppercase
      Src: /src/dovecot/src/lib/unichar.c:426,1
    - Dst: uni_utf8_run_transform
      Src: /src/dovecot/src/lib/unichar.c:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _input
    - size
    - output
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 421
    functionDepth: 4
    functionLinenumber: 421
    functionLinenumberEnd: 430
    functionName: uni_utf8_write_uppercase
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_run_transform
    - unicode_casemap_init_uppercase
    linkageType: ''
    returnType: int
    signature: int uni_utf8_write_uppercase(const void *_input, size_t size, buffer_t
      *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_casemap_init_lowercase
      Src: /src/dovecot/src/lib/unichar.c:437,1
    - Dst: uni_utf8_run_transform
      Src: /src/dovecot/src/lib/unichar.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _input
    - size
    - output
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 432
    functionDepth: 4
    functionLinenumber: 432
    functionLinenumberEnd: 441
    functionName: uni_utf8_write_lowercase
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_run_transform
    - unicode_casemap_init_lowercase
    linkageType: ''
    returnType: int
    signature: int uni_utf8_write_lowercase(const void *_input, size_t size, buffer_t
      *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_casemap_init_casefold
      Src: /src/dovecot/src/lib/unichar.c:448,1
    - Dst: uni_utf8_run_transform
      Src: /src/dovecot/src/lib/unichar.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _input
    - size
    - output
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 443
    functionDepth: 4
    functionLinenumber: 443
    functionLinenumberEnd: 452
    functionName: uni_utf8_write_casefold
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - unicode_casemap_init_casefold
    - uni_utf8_run_transform
    linkageType: ''
    returnType: int
    signature: int uni_utf8_write_casefold(const void *_input, size_t size, buffer_t
      *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/unichar.c:456,1
    - Dst: uni_utf8_write_uppercase
      Src: /src/dovecot/src/lib/unichar.c:459,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unichar.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - input
    - size
    - output_r
    argTypes:
    - void*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 454
    functionDepth: 5
    functionLinenumber: 454
    functionLinenumberEnd: 462
    functionName: uni_utf8_to_uppercase
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - str_c
    - uni_utf8_write_uppercase
    - t_buffer_create
    linkageType: ''
    returnType: int
    signature: int uni_utf8_to_uppercase(const void *input, size_t size, const char
      **output_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/unichar.c:466,1
    - Dst: uni_utf8_write_lowercase
      Src: /src/dovecot/src/lib/unichar.c:469,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unichar.c:470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - input
    - size
    - output_r
    argTypes:
    - void*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 464
    functionDepth: 5
    functionLinenumber: 464
    functionLinenumberEnd: 472
    functionName: uni_utf8_to_lowercase
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_buffer_create
    - uni_utf8_write_lowercase
    linkageType: ''
    returnType: int
    signature: int uni_utf8_to_lowercase(const void *input, size_t size, const char
      **output_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/unichar.c:476,1
    - Dst: uni_utf8_write_casefold
      Src: /src/dovecot/src/lib/unichar.c:479,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unichar.c:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - input
    - size
    - output_r
    argTypes:
    - void*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 474
    functionDepth: 5
    functionLinenumber: 474
    functionLinenumberEnd: 482
    functionName: uni_utf8_to_casefold
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_buffer_create
    - uni_utf8_write_casefold
    linkageType: ''
    returnType: int
    signature: int uni_utf8_to_casefold(const void *input, size_t size, const char
      **output_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_rfc5051_init
      Src: /src/dovecot/src/lib/unichar.c:492,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/unichar.c:495,1
    - Dst: output_add_replacement_char
      Src: /src/dovecot/src/lib/unichar.c:500,1
    - Dst: unicode_rfc5051_normalize
      Src: /src/dovecot/src/lib/unichar.c:509,1
    - Dst: uni_ucs4_to_utf8
      Src: /src/dovecot/src/lib/unichar.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - _input
    - size
    - output
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 484
    functionDepth: 3
    functionLinenumber: 484
    functionLinenumberEnd: 513
    functionName: uni_utf8_to_decomposed_titlecase
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 1
    functionsReached:
    - unicode_rfc5051_init
    - uni_utf8_get_char_n
    - unicode_rfc5051_normalize
    - output_add_replacement_char
    - uni_ucs4_to_utf8
    linkageType: ''
    returnType: int
    signature: "int uni_utf8_to_decomposed_titlecase(const void *_input, size_t size,\n\t\t\t\t
      \    buffer_t *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/unichar.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - unsigned char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 515
    functionDepth: 3
    functionLinenumber: 515
    functionLinenumberEnd: 521
    functionName: is_valid_utf8_seq
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_get_char_n
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int is_valid_utf8_seq(const unsigned char *input, unsigned
      int size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_utf8_seq
      Src: /src/dovecot/src/lib/unichar.c:533,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/unichar.c:534,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - input
    - size
    - pos_r
    argTypes:
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 523
    functionDepth: 4
    functionLinenumber: 523
    functionLinenumberEnd: 542
    functionName: uni_utf8_find_invalid_pos
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - is_valid_utf8_seq
    - unlikely
    linkageType: ''
    returnType: int
    signature: "int uni_utf8_find_invalid_pos(const unsigned char *input, size_t size,\n\t\t\t\t
      \    size_t *pos_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_find_invalid_pos
      Src: /src/dovecot/src/lib/unichar.c:549,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/unichar.c:553,1
    - Dst: output_add_replacement_char
      Src: /src/dovecot/src/lib/unichar.c:555,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/unichar.c:558,1
    - Dst: is_valid_utf8_seq
      Src: /src/dovecot/src/lib/unichar.c:562,1
    - Dst: output_add_replacement_char
      Src: /src/dovecot/src/lib/unichar.c:565,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/unichar.c:568,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - input
    - size
    - buf
    argTypes:
    - unsigned char*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 544
    functionDepth: 5
    functionLinenumber: 544
    functionLinenumberEnd: 572
    functionName: uni_utf8_get_valid_data
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 7
    functionsReached:
    - buffer_append
    - uni_utf8_find_invalid_pos
    - is_valid_utf8_seq
    - buffer_append_c
    - output_add_replacement_char
    linkageType: ''
    returnType: bool
    signature: "bool uni_utf8_get_valid_data(const unsigned char *input, size_t size,\n\t\t\t
      \    buffer_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_find_invalid_pos
      Src: /src/dovecot/src/lib/unichar.c:578,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/unichar.c:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 574
    functionDepth: 5
    functionLinenumber: 574
    functionLinenumberEnd: 580
    functionName: uni_utf8_str_is_valid
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 12
    functionsReached:
    - uni_utf8_find_invalid_pos
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool uni_utf8_str_is_valid(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_find_invalid_pos
      Src: /src/dovecot/src/lib/unichar.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 582
    functionDepth: 5
    functionLinenumber: 582
    functionLinenumberEnd: 587
    functionName: uni_utf8_data_is_valid
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 3
    functionsReached:
    - uni_utf8_find_invalid_pos
    linkageType: ''
    returnType: bool
    signature: bool uni_utf8_data_is_valid(const unsigned char *data, size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - data
    - old_size
    - max_new_size
    argTypes:
    - unsigned char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 604
    functionName: uni_utf8_data_truncate
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t uni_utf8_data_truncate(const unsigned char *data, size_t old_size,\n\t\t\t
      \     size_t max_new_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unichar.c:613,1
    - Dst: unicode_gc_break_init
      Src: /src/dovecot/src/lib/unichar.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - gcsc
    - input
    - size
    argTypes:
    - struct uni_gc_scanner*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 610
    functionDepth: 1
    functionLinenumber: 610
    functionLinenumberEnd: 617
    functionName: uni_gc_scanner_init
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - i_zero
    - unicode_gc_break_init
    linkageType: ''
    returnType: void
    signature: "void uni_gc_scanner_init(struct uni_gc_scanner *gcsc,\n\t\t\t const
      void *input, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/unichar.c:632,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.c:635,1
    - Dst: unicode_gc_break_cp
      Src: /src/dovecot/src/lib/unichar.c:640,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.c:647,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - gcsc
    argTypes:
    - struct uni_gc_scanner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 619
    functionDepth: 3
    functionLinenumber: 619
    functionLinenumberEnd: 660
    functionName: uni_gc_scan_shift
    functionSourceFile: /src/dovecot/src/lib/unichar.c
    functionUses: 0
    functionsReached:
    - unicode_gc_break_cp
    - uni_utf8_get_char_n
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool uni_gc_scan_shift(struct uni_gc_scanner *gcsc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-nonuls.c:16,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-nonuls.c:19,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-nonuls.c:25,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-nonuls.c:25,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 27
    functionName: i_stream_read_parent
    functionSourceFile: /src/dovecot/src/lib/istream-nonuls.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_get_data_size
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int i_stream_read_parent(struct istream_private *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_parent
      Src: /src/dovecot/src/lib/istream-nonuls.c:36,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-nonuls.c:39,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-nonuls.c:40,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-nonuls.c:44,1
    - Dst: memchr
      Src: /src/dovecot/src/lib/istream-nonuls.c:46,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-nonuls.c:49,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-nonuls.c:52,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-nonuls.c:59,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 61
    functionName: i_stream_nonuls_read
    functionSourceFile: /src/dovecot/src/lib/istream-nonuls.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_stream_try_alloc
    - i_stream_get_data
    - memchr
    - i_stream_skip
    - i_stream_read_parent
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_nonuls_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-nonuls.c:67,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-nonuls.c:77,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-nonuls.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - input
    - replace_chr
    argTypes:
    - struct istream*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 79
    functionName: i_stream_create_nonuls
    functionSourceFile: /src/dovecot/src/lib/istream-nonuls.c
    functionUses: 2
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_nonuls(struct istream *input, char
      replace_chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib/seq-range-array.c:12,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - array
    argTypes:
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 15
    functionName: seq_range_is_overflowed
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 0
    functionsReached:
    - array_get
    linkageType: ''
    returnType: bool
    signature: bool seq_range_is_overflowed(const ARRAY_TYPE(seq_range) *array)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib/seq-range-array.c:24,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/seq-range-array.c:25,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - array
    - seq
    - idx_r
    argTypes:
    - ARRAY_TYPE*
    - uint32_t
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 46
    functionName: ATTR_NOWARN_UNUSED_RESULT::seq_range_lookup
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 0
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool ATTR_NOWARN_UNUSED_RESULT\nseq_range_lookup(const ARRAY_TYPE(seq_range)
      *array,\n\t\t uint32_t seq, unsigned int *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/seq-range-array.c:382,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/seq-range-array.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 386
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 115
    functionsReached:
    - i_assert
    - seq_range_array_remove_range
    linkageType: ''
    returnType: void
    signature: void array_foreach(src, src_range)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: seq_range_lookup
      Src: /src/dovecot/src/lib/seq-range-array.c:442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - array
    - seq
    argTypes:
    - ARRAY_TYPE*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 443
    functionName: seq_range_exists
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 23
    functionsReached:
    - seq_range_lookup
    linkageType: ''
    returnType: bool
    signature: bool seq_range_exists(const ARRAY_TYPE(seq_range) *array, uint32_t
      seq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib/seq-range-array.c:451,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/seq-range-array.c:452,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - array1
    - array2
    argTypes:
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 464
    functionName: seq_range_array_have_common
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 2
    functionsReached:
    - array_get
    linkageType: ''
    returnType: bool
    signature: "bool seq_range_array_have_common(const ARRAY_TYPE(seq_range) *array1,\n\t\t\t\t
      const ARRAY_TYPE(seq_range) *array2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/seq-range-array.c:472,1
    - Dst: seq_range_length
      Src: /src/dovecot/src/lib/seq-range-array.c:472,1
    - Dst: seq_range_length
      Src: /src/dovecot/src/lib/seq-range-array.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - array
    argTypes:
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 476
    functionName: seq_range_count
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 11
    functionsReached:
    - i_assert
    - seq_range_length
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int seq_range_count(const ARRAY_TYPE(seq_range) *array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/seq-range-array.c:472,1
    - Dst: seq_range_length
      Src: /src/dovecot/src/lib/seq-range-array.c:472,1
    - Dst: seq_range_length
      Src: /src/dovecot/src/lib/seq-range-array.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 474
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 115
    functionsReached:
    - i_assert
    - seq_range_length
    linkageType: ''
    returnType: void
    signature: void array_foreach(array, range)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/seq-range-array.c:540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - iter_r
    - array
    argTypes:
    - struct seq_range_iter*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 542
    functionName: seq_range_array_iter_init
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 29
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void seq_range_array_iter_init(struct seq_range_iter *iter_r,\n\t\t\t
      \      const ARRAY_TYPE(seq_range) *array)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib/seq-range-array.c:556,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/seq-range-array.c:560,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - iter
    - n
    - seq_r
    argTypes:
    - struct seq_range_iter*
    - unsigned int
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 569
    functionName: seq_range_array_iter_nth
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.c
    functionUses: 31
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool seq_range_array_iter_nth(struct seq_range_iter *iter, unsigned
      int n,\n\t\t\t      uint32_t *seq_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-noop.c:9,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-noop.c:10,1
    - Dst: i_stream_create_noop
      Src: /src/dovecot/src/lib/test-istream-noop.c:11,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-noop.c:12,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-istream-noop.c:14,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-noop.c:16,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-noop.c:17,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-noop.c:19,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/test-istream-noop.c:20,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-noop.c:21,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-noop.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-noop.c:25,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-istream-noop.c:26,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-istream-noop.c:26,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-noop.c:28,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-noop.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 7
    functionDepth: 3
    functionLinenumber: 7
    functionLinenumberEnd: 31
    functionName: test_istream_noop
    functionSourceFile: /src/dovecot/src/lib/test-istream-noop.c
    functionUses: 0
    functionsReached:
    - i_stream_create_noop
    - str_c
    - t_str_new
    - str_append_data
    - i_stream_get_data
    - test_assert_strcmp
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - i_stream_read
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_noop(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-epoll.c:26,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ioloop-epoll.c:28,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ioloop-epoll.c:29,1
    - Dst: epoll_create
      Src: /src/dovecot/src/lib/ioloop-epoll.c:31,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-epoll.c:34,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-epoll.c:36,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/ioloop-epoll.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ioloop
    - initial_fd_count
    argTypes:
    - struct ioloop*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 41
    functionName: io_loop_handler_init
    functionSourceFile: /src/dovecot/src/lib/ioloop-epoll.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - fd_close_on_exec
    - i_fatal
    - epoll_create
    - i_new
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_init(struct ioloop *ioloop, unsigned int initial_fd_count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib/ioloop-epoll.c:49,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-epoll.c:51,1
    - Dst: close
      Src: /src/dovecot/src/lib/ioloop-epoll.c:53,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-epoll.c:54,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/ioloop-epoll.c:55,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/ioloop-epoll.c:56,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-epoll.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 58
    functionName: io_loop_handler_deinit
    functionSourceFile: /src/dovecot/src/lib/ioloop-epoll.c
    functionUses: 0
    functionsReached:
    - i_error
    - array_get_modifiable
    - array_free
    - i_free
    - close
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_deinit(struct ioloop *ioloop)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct io_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 84
    functionName: epoll_event_mask
    functionSourceFile: /src/dovecot/src/lib/ioloop-epoll.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int epoll_event_mask(struct io_list *list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib/ioloop-epoll.c:94,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-epoll.c:96,1
    - Dst: ioloop_iolist_add
      Src: /src/dovecot/src/lib/ioloop-epoll.c:98,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/ioloop-epoll.c:100,1
    - Dst: epoll_event_mask
      Src: /src/dovecot/src/lib/ioloop-epoll.c:102,1
    - Dst: epoll_ctl
      Src: /src/dovecot/src/lib/ioloop-epoll.c:106,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop-epoll.c:108,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop-epoll.c:113,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib/ioloop-epoll.c:123,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 125
    functionName: io_loop_handle_add
    functionSourceFile: /src/dovecot/src/lib/ioloop-epoll.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_panic
    - ioloop_iolist_add
    - epoll_event_mask
    - array_idx_get_space
    - i_new
    - array_append_zero
    - epoll_ctl
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_add(struct io_file *io)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib/ioloop-epoll.c:135,1
    - Dst: ioloop_iolist_del
      Src: /src/dovecot/src/lib/ioloop-epoll.c:136,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/ioloop-epoll.c:139,1
    - Dst: epoll_event_mask
      Src: /src/dovecot/src/lib/ioloop-epoll.c:141,1
    - Dst: epoll_ctl
      Src: /src/dovecot/src/lib/ioloop-epoll.c:145,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ioloop-epoll.c:146,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop-epoll.c:150,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-epoll.c:152,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-epoll.c:161,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - io
    - closed
    argTypes:
    - struct io_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 162
    functionName: io_loop_handle_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop-epoll.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_panic
    - array_idx_modifiable
    - i_error
    - t_strdup_printf
    - epoll_event_mask
    - ioloop_iolist_del
    - i_free
    - epoll_ctl
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_remove(struct io_file *io, bool closed)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-epoll.c:176,1
    - Dst: io_loop_run_get_wait_time
      Src: /src/dovecot/src/lib/ioloop-epoll.c:179,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib/ioloop-epoll.c:181,1
    - Dst: epoll_wait
      Src: /src/dovecot/src/lib/ioloop-epoll.c:183,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-epoll.c:185,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-epoll.c:189,1
    - Dst: i_sleep_intr_msecs
      Src: /src/dovecot/src/lib/ioloop-epoll.c:190,1
    - Dst: io_loop_handle_timeouts
      Src: /src/dovecot/src/lib/ioloop-epoll.c:195,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/ioloop-epoll.c:203,1
    - Dst: io_loop_call_io
      Src: /src/dovecot/src/lib/ioloop-epoll.c:222,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 228
    functionName: io_loop_handler_run_internal
    functionSourceFile: /src/dovecot/src/lib/ioloop-epoll.c
    functionUses: 0
    functionsReached:
    - epoll_wait
    - array_idx
    - array_get_modifiable
    - i_fatal
    - io_loop_call_io
    - io_loop_run_get_wait_time
    - i_assert
    - io_loop_handle_timeouts
    - i_sleep_intr_msecs
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_run_internal(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:35,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:36,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:39,1
    - Dst: printf_format_fix
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:39,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:41,1
    - Dst: printf_format_fix_get_len
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:41,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:43,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 45
    functionName: test_unchanged
    functionSourceFile: /src/dovecot/src/lib/test-printf-format-fix.c
    functionUses: 0
    functionsReached:
    - printf_format_fix
    - test_assert_idx
    - strlen
    - printf_format_fix_get_len
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unchanged()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:61,1
    - Dst: strerror
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:64,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:65,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:66,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:68,1
    - Dst: printf_format_fix
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:75,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:76,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:77,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:78,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:80,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:80,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:81,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:81,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:82,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:82,1
    - Dst: printf_format_fix_get_len
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:84,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:85,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:86,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:86,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:87,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:88,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:90,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:90,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:91,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:91,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:92,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 94
    functionName: test_ok_changes
    functionSourceFile: /src/dovecot/src/lib/test-printf-format-fix.c
    functionUses: 0
    functionsReached:
    - strcmp
    - printf_format_fix
    - test_assert_idx
    - strstr
    - strlen
    - strerror
    - printf_format_fix_get_len
    - memcmp
    - i_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ok_changes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_unchanged
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:103,1
    - Dst: test_ok_changes
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: test_printf_format_fix
    functionSourceFile: /src/dovecot/src/lib/test-printf-format-fix.c
    functionUses: 0
    functionsReached:
    - test_unchanged
    - test_ok_changes
    linkageType: ''
    returnType: void
    signature: void test_printf_format_fix()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:130,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:131,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:136,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:139,1
    - Dst: printf_format_fix
      Src: /src/dovecot/src/lib/test-printf-format-fix.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 142
    functionName: fatal_printf_format_fix
    functionSourceFile: /src/dovecot/src/lib/test-printf-format-fix.c
    functionUses: 0
    functionsReached:
    - printf_format_fix
    - test_end
    - test_expect_fatal_string
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_printf_format_fix(unsigned int stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: ALLOC_SIZE
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC_SIZE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - block
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: block_canary_check
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: block_canary_check(block)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: ALLOC_SIZE
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALLOC_SIZE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - block
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: STACK_BLOCK_DATA
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STACK_BLOCK_DATA(block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STACK_BLOCK_DATA
      Src: /src/dovecot/src/lib/data-stack.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - block
    argTypes:
    - struct stack_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: data_stack_after_last_alloc
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - STACK_BLOCK_DATA
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *data_stack_after_last_alloc(struct stack_block *block)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:118,1
    - Dst: data_stack_after_last_alloc
      Src: /src/dovecot/src/lib/data-stack.c:120,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/data-stack.c:121,1
    - Dst: ALLOC_SIZE
      Src: /src/dovecot/src/lib/data-stack.c:122,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:139,1
    - Dst: memset
      Src: /src/dovecot/src/lib/data-stack.c:143,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - preserve_data ATTR_UNUSED
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 147
    functionName: data_stack_last_buffer_reset
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - ALLOC_SIZE
    - data_stack_after_last_alloc
    - MEM_ALIGN
    - memset
    - i_assert
    linkageType: ''
    returnType: void
    signature: void data_stack_last_buffer_reset(bool preserve_data ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:153,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/data-stack.c:155,1
    - Dst: data_stack_init
      Src: /src/dovecot/src/lib/data-stack.c:157,1
    - Dst: t_push
      Src: /src/dovecot/src/lib/data-stack.c:158,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/data-stack.c:162,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/data-stack.c:176,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/data-stack.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - marker
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 185
    functionName: t_push
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 2
    functionsReached:
    - t_buffer_get
    - unlikely
    - data_stack_init
    - i_new
    - t_buffer_alloc
    - i_assert
    - t_push
    linkageType: ''
    returnType: data_stack_frame_t
    signature: data_stack_frame_t t_push(const char *marker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_push
      Src: /src/dovecot/src/lib/data-stack.c:189,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/data-stack.c:192,1
    - Dst: p_strdup_vprintf
      Src: /src/dovecot/src/lib/data-stack.c:193,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/data-stack.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 200
    functionName: t_push_named
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - p_strdup_vprintf
    - t_push
    linkageType: ''
    returnType: data_stack_frame_t
    signature: data_stack_frame_t t_push_named(const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - block
    argTypes:
    - struct stack_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: block_canary_check
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: void
    signature: void block_canary_check(struct stack_block *block)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: block_canary_check
      Src: /src/dovecot/src/lib/data-stack.c:221,1
    - Dst: memset
      Src: /src/dovecot/src/lib/data-stack.c:225,1
    - Dst: STACK_BLOCK_DATA
      Src: /src/dovecot/src/lib/data-stack.c:225,1
    - Dst: free
      Src: /src/dovecot/src/lib/data-stack.c:232,1
    - Dst: free
      Src: /src/dovecot/src/lib/data-stack.c:235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - block
    argTypes:
    - struct stack_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 240
    functionName: free_blocks
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - STACK_BLOCK_DATA
    - memset
    - block_canary_check
    - free
    linkageType: ''
    returnType: void
    signature: void free_blocks(struct stack_block *block)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: block_canary_check
      Src: /src/dovecot/src/lib/data-stack.c:252,1
    - Dst: STACK_BLOCK_DATA
      Src: /src/dovecot/src/lib/data-stack.c:254,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:258,1
    - Dst: ALLOC_SIZE
      Src: /src/dovecot/src/lib/data-stack.c:260,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/data-stack.c:261,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:265,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 276
    functionName: t_pop_verify
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - STACK_BLOCK_DATA
    - ALLOC_SIZE
    - block_canary_check
    - MEM_ALIGN
    linkageType: ''
    returnType: void
    signature: void t_pop_verify(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/data-stack.c:283,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:284,1
    - Dst: data_stack_last_buffer_reset
      Src: /src/dovecot/src/lib/data-stack.c:286,1
    - Dst: t_pop_verify
      Src: /src/dovecot/src/lib/data-stack.c:288,1
    - Dst: free_blocks
      Src: /src/dovecot/src/lib/data-stack.c:297,1
    - Dst: block_canary_check
      Src: /src/dovecot/src/lib/data-stack.c:301,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:313,1
    - Dst: memset
      Src: /src/dovecot/src/lib/data-stack.c:314,1
    - Dst: STACK_BLOCK_DATA
      Src: /src/dovecot/src/lib/data-stack.c:314,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 322
    functionName: t_pop_last_unsafe
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 2
    functionsReached:
    - i_panic
    - STACK_BLOCK_DATA
    - data_stack_last_buffer_reset
    - unlikely
    - t_pop_verify
    - free_blocks
    - block_canary_check
    - memset
    - i_assert
    linkageType: ''
    returnType: void
    signature: void t_pop_last_unsafe(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_pop_last_unsafe
      Src: /src/dovecot/src/lib/data-stack.c:326,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/data-stack.c:328,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/data-stack.c:333,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/data-stack.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - id
    argTypes:
    - data_stack_frame_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 324
    functionDepth: 4
    functionLinenumber: 324
    functionLinenumberEnd: 339
    functionName: t_pop
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 2
    functionsReached:
    - t_pop_last_unsafe
    - i_free_and_null
    - unlikely
    linkageType: ''
    returnType: bool
    signature: bool t_pop(data_stack_frame_t *id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: data_stack_frame_contains
      Src: /src/dovecot/src/lib/data-stack.c:343,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib/data-stack.c:344,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/data-stack.c:349,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib/data-stack.c:350,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/data-stack.c:351,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/data-stack.c:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - id
    - str
    argTypes:
    - data_stack_frame_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 341
    functionDepth: 5
    functionLinenumber: 341
    functionLinenumberEnd: 354
    functionName: t_pop_pass_str
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - t_pop
    - data_stack_frame_contains
    - i_strdup
    - t_strdup
    - i_free
    linkageType: ''
    returnType: bool
    signature: bool t_pop_pass_str(data_stack_frame_t *id, const char **str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - block
    argTypes:
    - struct stack_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: mem_block_reset
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mem_block_reset(struct stack_block *block)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/data-stack.c:374,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/data-stack.c:374,1
    - Dst: malloc
      Src: /src/dovecot/src/lib/data-stack.c:378,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/data-stack.c:379,1
    - Dst: abort
      Src: /src/dovecot/src/lib/data-stack.c:382,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:386,1
    - Dst: mem_block_reset
      Src: /src/dovecot/src/lib/data-stack.c:391,1
    - Dst: memset
      Src: /src/dovecot/src/lib/data-stack.c:393,1
    - Dst: STACK_BLOCK_DATA
      Src: /src/dovecot/src/lib/data-stack.c:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - min_size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 396
    functionName: mem_block_alloc
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - STACK_BLOCK_DATA
    - malloc
    - mem_block_reset
    - unlikely
    - memset
    - nearest_power
    - MALLOC_ADD
    - abort
    linkageType: ''
    returnType: struct stack_block
    signature: struct stack_block *mem_block_alloc(size_t min_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib/data-stack.c:410,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/data-stack.c:411,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/data-stack.c:412,1
    - Dst: data_stack_get_alloc_size
      Src: /src/dovecot/src/lib/data-stack.c:412,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/data-stack.c:413,1
    - Dst: data_stack_get_used_size
      Src: /src/dovecot/src/lib/data-stack.c:413,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/data-stack.c:414,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/data-stack.c:415,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/data-stack.c:417,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/data-stack.c:419,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/data-stack.c:422,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib/data-stack.c:428,1
    - Dst: backtrace_get
      Src: /src/dovecot/src/lib/data-stack.c:435,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/data-stack.c:436,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/data-stack.c:438,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/data-stack.c:439,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/data-stack.c:442,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/data-stack.c:443,1
    - Dst: data_stack_get_used_size
      Src: /src/dovecot/src/lib/data-stack.c:444,1
    - Dst: data_stack_get_alloc_size
      Src: /src/dovecot/src/lib/data-stack.c:445,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/data-stack.c:448,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/data-stack.c:451,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/data-stack.c:452,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - last_alloc_size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 453
    functionName: data_stack_send_grow_event
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - str_c
    - event_create
    - backtrace_get
    - data_stack_get_used_size
    - t_str_new
    - str_printfa
    - event_set_name
    - e_debug
    - t_strdup_printf
    - event_want_debug
    - data_stack_get_alloc_size
    - event_add_str
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void data_stack_send_grow_event(size_t last_alloc_size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/data-stack.c:464,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:465,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/data-stack.c:467,1
    - Dst: data_stack_init
      Src: /src/dovecot/src/lib/data-stack.c:469,1
    - Dst: block_canary_check
      Src: /src/dovecot/src/lib/data-stack.c:471,1
    - Dst: ALLOC_SIZE
      Src: /src/dovecot/src/lib/data-stack.c:475,1
    - Dst: data_stack_last_buffer_reset
      Src: /src/dovecot/src/lib/data-stack.c:482,1
    - Dst: mem_block_reset
      Src: /src/dovecot/src/lib/data-stack.c:496,1
    - Dst: mem_block_alloc
      Src: /src/dovecot/src/lib/data-stack.c:499,1
    - Dst: data_stack_after_last_alloc
      Src: /src/dovecot/src/lib/data-stack.c:512,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:524,1
    - Dst: data_stack_send_grow_event
      Src: /src/dovecot/src/lib/data-stack.c:530,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - size
    - permanent
    argTypes:
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 533
    functionName: t_malloc_real
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - mem_block_reset
    - data_stack_last_buffer_reset
    - data_stack_send_grow_event
    - ALLOC_SIZE
    - unlikely
    - block_canary_check
    - mem_block_alloc
    - data_stack_init
    - data_stack_after_last_alloc
    - i_assert
    linkageType: ''
    returnType: void
    signature: void *t_malloc_real(size_t size, bool permanent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_real
      Src: /src/dovecot/src/lib/data-stack.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 548
    functionDepth: 4
    functionLinenumber: 548
    functionLinenumberEnd: 551
    functionName: t_malloc_no0
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 8
    functionsReached:
    - t_malloc_real
    linkageType: ''
    returnType: void
    signature: void *t_malloc_no0(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_real
      Src: /src/dovecot/src/lib/data-stack.c:557,1
    - Dst: memset
      Src: /src/dovecot/src/lib/data-stack.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 553
    functionDepth: 4
    functionLinenumber: 553
    functionLinenumberEnd: 560
    functionName: t_malloc0
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 5
    functionsReached:
    - t_malloc_real
    - memset
    linkageType: ''
    returnType: void
    signature: void *t_malloc0(size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/data-stack.c:568,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:569,1
    - Dst: block_canary_check
      Src: /src/dovecot/src/lib/data-stack.c:570,1
    - Dst: data_stack_last_buffer_reset
      Src: /src/dovecot/src/lib/data-stack.c:571,1
    - Dst: data_stack_after_last_alloc
      Src: /src/dovecot/src/lib/data-stack.c:576,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/data-stack.c:578,1
    - Dst: ALLOC_SIZE
      Src: /src/dovecot/src/lib/data-stack.c:584,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/data-stack.c:588,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/data-stack.c:588,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:589,1
    - Dst: ALLOC_SIZE
      Src: /src/dovecot/src/lib/data-stack.c:589,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:592,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/data-stack.c:605,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/data-stack.c:605,1
    - Dst: memset
      Src: /src/dovecot/src/lib/data-stack.c:606,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/data-stack.c:606,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/data-stack.c:607,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - mem
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 562
    functionDepth: 3
    functionLinenumber: 562
    functionLinenumberEnd: 614
    functionName: ATTR_NO_SANITIZE_INTEGER::t_try_realloc
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - PTR_OFFSET
    - data_stack_last_buffer_reset
    - ALLOC_SIZE
    - unlikely
    - block_canary_check
    - data_stack_after_last_alloc
    - MEM_ALIGN
    - memset
    - i_assert
    linkageType: ''
    returnType: bool
    signature: 'bool ATTR_NO_SANITIZE_INTEGER

      t_try_realloc(void *mem, size_t size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: block_canary_check
      Src: /src/dovecot/src/lib/data-stack.c:618,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/data-stack.c:622,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:627,1
    - Dst: ALLOC_SIZE
      Src: /src/dovecot/src/lib/data-stack.c:627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 629
    functionName: t_get_bytes_available
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - MEM_ALIGN
    - i_assert
    - ALLOC_SIZE
    - block_canary_check
    linkageType: ''
    returnType: size_t
    signature: size_t t_get_bytes_available(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_real
      Src: /src/dovecot/src/lib/data-stack.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 631
    functionDepth: 4
    functionLinenumber: 631
    functionLinenumberEnd: 640
    functionName: t_buffer_get
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 3
    functionsReached:
    - t_malloc_real
    linkageType: ''
    returnType: void
    signature: void *t_buffer_get(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/data-stack.c:651,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/data-stack.c:653,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 642
    functionDepth: 5
    functionLinenumber: 642
    functionLinenumberEnd: 656
    functionName: t_buffer_reget
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_buffer_get
    linkageType: ''
    returnType: void
    signature: void *t_buffer_reget(void *buffer, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:660,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:661,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:662,1
    - Dst: t_malloc_real
      Src: /src/dovecot/src/lib/data-stack.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 658
    functionDepth: 4
    functionLinenumber: 658
    functionLinenumberEnd: 666
    functionName: t_buffer_alloc
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 3
    functionsReached:
    - t_malloc_real
    - i_assert
    linkageType: ''
    returnType: void
    signature: void t_buffer_alloc(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_real
      Src: /src/dovecot/src/lib/data-stack.c:671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 668
    functionDepth: 4
    functionLinenumber: 668
    functionLinenumberEnd: 672
    functionName: t_buffer_alloc_last_full
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - t_malloc_real
    linkageType: ''
    returnType: void
    signature: void t_buffer_alloc_last_full(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:692,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:694,1
    - Dst: STACK_BLOCK_DATA
      Src: /src/dovecot/src/lib/data-stack.c:698,1
    - Dst: STACK_BLOCK_DATA
      Src: /src/dovecot/src/lib/data-stack.c:708,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - id
    - _ptr
    argTypes:
    - data_stack_frame_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 714
    functionName: data_stack_frame_contains
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 1
    functionsReached:
    - STACK_BLOCK_DATA
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool data_stack_frame_contains(data_stack_frame_t *id, const void *_ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 726
    functionName: data_stack_get_alloc_size
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: size_t data_stack_get_alloc_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/data-stack.c:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 738
    functionName: data_stack_get_used_size
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: size_t data_stack_get_used_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dovecot/src/lib/data-stack.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 744
    functionName: data_stack_free_unused
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void data_stack_free_unused(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mem_block_alloc
      Src: /src/dovecot/src/lib/data-stack.c:762,1
    - Dst: t_push
      Src: /src/dovecot/src/lib/data-stack.c:768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 772
    functionName: data_stack_init
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 2
    functionsReached:
    - mem_block_alloc
    - t_push
    linkageType: ''
    returnType: void
    signature: void data_stack_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib/data-stack.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 778
    functionName: data_stack_deinit_event
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - event_unref
    linkageType: ''
    returnType: void
    signature: void data_stack_deinit_event(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_pop
      Src: /src/dovecot/src/lib/data-stack.c:782,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/data-stack.c:784,1
    - Dst: free
      Src: /src/dovecot/src/lib/data-stack.c:786,1
    - Dst: data_stack_free_unused
      Src: /src/dovecot/src/lib/data-stack.c:788,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 780
    functionDepth: 5
    functionLinenumber: 780
    functionLinenumberEnd: 790
    functionName: data_stack_deinit
    functionSourceFile: /src/dovecot/src/lib/data-stack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - data_stack_free_unused
    - t_pop
    - free
    linkageType: ''
    returnType: void
    signature: void data_stack_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-hash-format.c:37,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hash-format.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hash-format.c:43,1
    - Dst: hash_format_init
      Src: /src/dovecot/src/lib/test-hash-format.c:43,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hash-format.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hash-format.c:46,1
    - Dst: hash_format_init
      Src: /src/dovecot/src/lib/test-hash-format.c:46,1
    - Dst: hash_format_loop
      Src: /src/dovecot/src/lib/test-hash-format.c:47,1
    - Dst: hash_format_loop
      Src: /src/dovecot/src/lib/test-hash-format.c:48,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-hash-format.c:49,1
    - Dst: hash_format_deinit
      Src: /src/dovecot/src/lib/test-hash-format.c:50,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hash-format.c:51,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-hash-format.c:51,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-hash-format.c:51,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hash-format.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 12
    functionDepth: 3
    functionLinenumber: 12
    functionLinenumberEnd: 54
    functionName: test_hash_format
    functionSourceFile: /src/dovecot/src/lib/test-hash-format.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - hash_format_init
    - hash_format_deinit
    - hash_format_loop
    - test_end
    - str_truncate
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hash_format(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/printf-format-fix.c:17,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/printf-format-fix.c:18,1
    - Dst: strerror
      Src: /src/dovecot/src/lib/printf-format-fix.c:20,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/printf-format-fix.c:26,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/printf-format-fix.c:27,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/printf-format-fix.c:30,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/printf-format-fix.c:31,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/printf-format-fix.c:32,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/printf-format-fix.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - fmt
    - p
    - len_r
    argTypes:
    - char*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 10
    functionDepth: 5
    functionLinenumber: 10
    functionLinenumberEnd: 37
    functionName: fix_format_real
    functionSourceFile: /src/dovecot/src/lib/printf-format-fix.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_buffer_get
    - strlen
    - strerror
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      fix_format_real(const char *fmt, const char *p, size_t *len_r)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - p
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 59
    functionName: verify_length
    functionSourceFile: /src/dovecot/src/lib/printf-format-fix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool verify_length(const char **p)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/printf-format-fix.c:84,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/printf-format-fix.c:98,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/printf-format-fix.c:100,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/printf-format-fix.c:104,1
    - Dst: verify_length
      Src: /src/dovecot/src/lib/printf-format-fix.c:112,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/printf-format-fix.c:113,1
    - Dst: verify_length
      Src: /src/dovecot/src/lib/printf-format-fix.c:120,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/printf-format-fix.c:121,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/printf-format-fix.c:145,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/printf-format-fix.c:148,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/printf-format-fix.c:151,1
    - Dst: fix_format_real
      Src: /src/dovecot/src/lib/printf-format-fix.c:152,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/printf-format-fix.c:155,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/printf-format-fix.c:158,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/printf-format-fix.c:166,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 60
    argCount: 2
    argNames:
    - format
    - len_r
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 61
    functionDepth: 6
    functionLinenumber: 61
    functionLinenumberEnd: 168
    functionName: printf_format_fix_noalloc
    functionSourceFile: /src/dovecot/src/lib/printf-format-fix.c
    functionUses: 0
    functionsReached:
    - i_panic
    - strchr
    - verify_length
    - strlen
    - fix_format_real
    - N_ELEMENTS
    linkageType: ''
    returnType: char
    signature: 'char *

      printf_format_fix_noalloc(const char *format, size_t *len_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf_format_fix_noalloc
      Src: /src/dovecot/src/lib/printf-format-fix.c:174,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/printf-format-fix.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - format
    - len_r
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 170
    functionDepth: 7
    functionLinenumber: 170
    functionLinenumberEnd: 178
    functionName: printf_format_fix_get_len
    functionSourceFile: /src/dovecot/src/lib/printf-format-fix.c
    functionUses: 2
    functionsReached:
    - printf_format_fix_noalloc
    - t_buffer_alloc
    linkageType: ''
    returnType: char
    signature: char *printf_format_fix_get_len(const char *format, size_t *len_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf_format_fix_noalloc
      Src: /src/dovecot/src/lib/printf-format-fix.c:185,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/printf-format-fix.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 180
    functionDepth: 7
    functionLinenumber: 180
    functionLinenumberEnd: 189
    functionName: printf_format_fix
    functionSourceFile: /src/dovecot/src/lib/printf-format-fix.c
    functionUses: 3
    functionsReached:
    - printf_format_fix_noalloc
    - t_buffer_alloc
    linkageType: ''
    returnType: char
    signature: char *printf_format_fix(const char *format)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf_format_fix_noalloc
      Src: /src/dovecot/src/lib/printf-format-fix.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 7
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: printf_format_fix_unsafe
    functionSourceFile: /src/dovecot/src/lib/printf-format-fix.c
    functionUses: 0
    functionsReached:
    - printf_format_fix_noalloc
    linkageType: ''
    returnType: char
    signature: char *printf_format_fix_unsafe(const char *format)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-unix.c:18,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/istream-unix.c:21,1
    - Dst: i_stream_file_close
      Src: /src/dovecot/src/lib/istream-unix.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 23
    functionName: i_stream_unix_close
    functionSourceFile: /src/dovecot/src/lib/istream-unix.c
    functionUses: 0
    functionsReached:
    - i_stream_file_close
    - i_close_fd
    - container_of
    linkageType: ''
    returnType: void
    signature: void i_stream_unix_close(struct iostream_private *stream, bool close_parent)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-unix.c:28,1
    - Dst: i_stream_file_read
      Src: /src/dovecot/src/lib/istream-unix.c:33,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-unix.c:35,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-unix.c:36,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-unix.c:37,1
    - Dst: fd_read
      Src: /src/dovecot/src/lib/istream-unix.c:40,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream-unix.c:52,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-unix.c:57,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-unix.c:60,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 67
    functionName: i_stream_unix_read
    functionSourceFile: /src/dovecot/src/lib/istream-unix.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_file_read
    - i_stream_try_alloc
    - unlikely
    - fd_read
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_unix_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-unix.c:74,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-unix.c:76,1
    - Dst: i_stream_create_file_common
      Src: /src/dovecot/src/lib/istream-unix.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - fd
    - max_buffer_size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 83
    functionName: i_stream_create_unix
    functionSourceFile: /src/dovecot/src/lib/istream-unix.c
    functionUses: 2
    functionsReached:
    - i_assert
    - i_new
    - i_stream_create_file_common
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_unix(int fd, size_t max_buffer_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-unix.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 92
    functionName: i_stream_unix_set_read_fd
    functionSourceFile: /src/dovecot/src/lib/istream-unix.c
    functionUses: 6
    functionsReached:
    - container_of
    linkageType: ''
    returnType: void
    signature: void i_stream_unix_set_read_fd(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-unix.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 101
    functionName: i_stream_unix_unset_read_fd
    functionSourceFile: /src/dovecot/src/lib/istream-unix.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: void
    signature: void i_stream_unix_unset_read_fd(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-unix.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 113
    functionName: i_stream_unix_get_read_fd
    functionSourceFile: /src/dovecot/src/lib/istream-unix.c
    functionUses: 4
    functionsReached:
    - container_of
    linkageType: ''
    returnType: int
    signature: int i_stream_unix_get_read_fd(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_want_level
      Src: /src/dovecot/src/lib/event-log.c:19,1
    - Dst: event_send_abort
      Src: /src/dovecot/src/lib/event-log.c:20,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/event-log.c:30,1
    - Dst: event_logv
      Src: /src/dovecot/src/lib/event-log.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - event
    - source_filename
    - source_linenum
    - fmt
    argTypes:
    - struct event*
    - char*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 33
    functionName: e_error
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 774
    functionsReached:
    - event_logv
    - event_send_abort
    - event_want_level
    - va_start
    linkageType: ''
    returnType: void
    signature: "void e_error(struct event *event,\n\t     const char *source_filename,
      unsigned int source_linenum,\n\t     const char *fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_want_level
      Src: /src/dovecot/src/lib/event-log.c:42,1
    - Dst: event_send_abort
      Src: /src/dovecot/src/lib/event-log.c:43,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/event-log.c:53,1
    - Dst: event_logv
      Src: /src/dovecot/src/lib/event-log.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - event
    - source_filename
    - source_linenum
    - fmt
    argTypes:
    - struct event*
    - char*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 56
    functionName: e_warning
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 87
    functionsReached:
    - event_logv
    - event_send_abort
    - event_want_level
    - va_start
    linkageType: ''
    returnType: void
    signature: "void e_warning(struct event *event,\n\t       const char *source_filename,
      unsigned int source_linenum,\n\t       const char *fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_want_level
      Src: /src/dovecot/src/lib/event-log.c:65,1
    - Dst: event_send_abort
      Src: /src/dovecot/src/lib/event-log.c:66,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/event-log.c:76,1
    - Dst: event_logv
      Src: /src/dovecot/src/lib/event-log.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - event
    - source_filename
    - source_linenum
    - fmt
    argTypes:
    - struct event*
    - char*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 79
    functionName: e_info
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 117
    functionsReached:
    - event_logv
    - event_send_abort
    - event_want_level
    - va_start
    linkageType: ''
    returnType: void
    signature: "void e_info(struct event *event,\n\t    const char *source_filename,
      unsigned int source_linenum,\n\t    const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/event-log.c:95,1
    - Dst: event_logv
      Src: /src/dovecot/src/lib/event-log.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - event
    - source_filename
    - source_linenum
    - fmt
    argTypes:
    - struct event*
    - char*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 98
    functionName: e_debug
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 460
    functionsReached:
    - event_logv
    - va_start
    linkageType: ''
    returnType: void
    signature: "void e_debug(struct event *event,\n\t     const char *source_filename,
      unsigned int source_linenum,\n\t     const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/event-log.c:114,1
    - Dst: event_logv
      Src: /src/dovecot/src/lib/event-log.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - event
    - level
    - source_filename
    - source_linenum
    - fmt
    argTypes:
    - struct event*
    - enum log_type
    - char*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 117
    functionName: e_log
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached:
    - event_logv
    - va_start
    linkageType: ''
    returnType: void
    signature: "void e_log(struct event *event, enum log_type level,\n\t   const char
      *source_filename, unsigned int source_linenum,\n\t   const char *fmt, ...)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-log.c:147,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib/event-log.c:148,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-log.c:152,1
    - Dst: VA_COPY
      Src: /src/dovecot/src/lib/event-log.c:157,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib/event-log.c:158,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/event-log.c:159,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - glmctx
    - fmt
    - args
    argTypes:
    - struct event_get_log_message_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 164
    functionName: event_get_log_message_str_out
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached:
    - str_append_str
    - VA_COPY
    - str_vprintfa
    - str_append
    - va_end
    linkageType: ''
    returnType: void
    signature: "void event_get_log_message_str_out(struct event_get_log_message_context
      *glmctx,\n\t\t\t      const char *fmt, va_list args)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: event_get_log_message_str_out
      Src: /src/dovecot/src/lib/event-log.c:179,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/event-log.c:182,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/event-log.c:195,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib/event-log.c:197,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/event-log.c:199,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-log.c:202,1
    - Dst: struct event*::log_message_callback
      Src: /src/dovecot/src/lib/event-log.c:207,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/event-log.c:214,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/event-log.c:219,1
    - Dst: struct event*::log_prefix_callback
      Src: /src/dovecot/src/lib/event-log.c:224,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/event-log.c:230,1
    - Dst: event_get_log_message_str_out
      Src: /src/dovecot/src/lib/event-log.c:231,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/event-log.c:235,1
    - Dst: event_get_log_message_str_out
      Src: /src/dovecot/src/lib/event-log.c:242,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/event-log.c:246,1
    - Dst: event_get_log_message
      Src: /src/dovecot/src/lib/event-log.c:253,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 56
    argCount: 5
    argNames:
    - event
    - glmctx
    - prefixes_dropped
    - fmt
    - args
    argTypes:
    - struct event*
    - struct event_get_log_message_context*
    - unsigned int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 258
    functionName: event_get_log_message
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 1
    functionsReached:
    - str_c
    - str_len
    - strlen
    - str_vprintfa
    - str_insert
    - struct event*::log_message_callback
    - struct event*::log_prefix_callback
    - str_truncate
    - str_append
    - t_strdup
    - event_get_log_message_str_out
    - event_get_log_message
    linkageType: ''
    returnType: void
    signature: "void event_get_log_message(struct event *event,\n\t\t      struct
      event_get_log_message_context *glmctx,\n\t\t      unsigned int prefixes_dropped,\n\t\t
      \     const char *fmt, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/event-log.c:265,1
    - Dst: event_logv
      Src: /src/dovecot/src/lib/event-log.c:266,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/event-log.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - event
    - params
    - fmt
    argTypes:
    - struct event*
    - struct event_log_params*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 268
    functionName: event_log
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 9
    functionsReached:
    - va_end
    - event_logv
    - va_start
    linkageType: ''
    returnType: void
    signature: "void event_log(struct event *event, const struct event_log_params
      *params,\n\t       const char *fmt, ...)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_match_source
      Src: /src/dovecot/src/lib/event-log.c:298,1
    - Dst: event_filter_match_source
      Src: /src/dovecot/src/lib/event-log.c:303,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - event
    - level
    - source_filename
    - source_linenum
    argTypes:
    - struct event*
    - enum log_type
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 311
    functionName: event_want_log_level
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached:
    - event_filter_match_source
    linkageType: ''
    returnType: bool
    signature: "bool event_want_log_level(struct event *event, enum log_type level,\n\t\t\t
      \ const char *source_filename,\n\t\t\t  unsigned int source_linenum)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_want_log_level
      Src: /src/dovecot/src/lib/event-log.c:318,1
    - Dst: event_filter_match_source
      Src: /src/dovecot/src/lib/event-log.c:325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - event
    - level
    - source_filename
    - source_linenum
    argTypes:
    - struct event*
    - enum log_type
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 331
    functionName: event_want_level
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 4
    functionsReached:
    - event_want_log_level
    - event_filter_match_source
    linkageType: ''
    returnType: bool
    signature: "bool event_want_level(struct event *event, enum log_type level,\n\t\t
      \     const char *source_filename,\n\t\t      unsigned int source_linenum)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/event-log.c:344,1
    - Dst: event_filter_match_source
      Src: /src/dovecot/src/lib/event-log.c:347,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/event-log.c:352,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/event-log.c:354,1
    - Dst: event_get_log_message
      Src: /src/dovecot/src/lib/event-log.c:355,1
    - Dst: VA_COPY
      Src: /src/dovecot/src/lib/event-log.c:360,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib/event-log.c:361,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/event-log.c:362,1
    - Dst: event_vsend
      Src: /src/dovecot/src/lib/event-log.c:365,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/event-log.c:370,1
    - Dst: event_send
      Src: /src/dovecot/src/lib/event-log.c:373,1
    - Dst: event_vsend
      Src: /src/dovecot/src/lib/event-log.c:375,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-log.c:379,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib/event-log.c:381,1
    - Dst: event_send
      Src: /src/dovecot/src/lib/event-log.c:382,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/event-log.c:382,1
    - Dst: abort
      Src: /src/dovecot/src/lib/event-log.c:385,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 4
    argNames:
    - event
    - params
    - fmt
    - args
    argTypes:
    - struct event*
    - struct event_log_params*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 386
    functionName: event_logv_params
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - event_vsend
    - VA_COPY
    - event_send
    - abort
    - str_vprintfa
    - event_filter_match_source
    - str_append
    - i_assert
    - event_get_log_message
    - va_end
    linkageType: ''
    returnType: void
    signature: "void event_logv_params(struct event *event, const struct event_log_params
      *params,\n\t\t  const char *fmt, va_list args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_set_source
      Src: /src/dovecot/src/lib/event-log.c:396,1
    - Dst: event_want_log_level
      Src: /src/dovecot/src/lib/event-log.c:400,1
    - Dst: event_ref
      Src: /src/dovecot/src/lib/event-log.c:404,1
    - Dst: event_logv_params
      Src: /src/dovecot/src/lib/event-log.c:405,1
    - Dst: event_set_source
      Src: /src/dovecot/src/lib/event-log.c:406,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/event-log.c:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - event
    - params
    - fmt
    - args
    argTypes:
    - struct event*
    - struct event_log_params*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 388
    functionDepth: 4
    functionLinenumber: 388
    functionLinenumberEnd: 410
    functionName: event_logv
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 6
    functionsReached:
    - event_set_source
    - event_unref
    - event_ref
    - event_want_log_level
    - event_logv_params
    linkageType: ''
    returnType: void
    signature: "void event_logv(struct event *event, const struct event_log_params
      *params,\n\t\tconst char *fmt, va_list args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_recalculate_debug_level
      Src: /src/dovecot/src/lib/event-log.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - event
    - force
    argTypes:
    - struct event*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 418
    functionName: event_set_forced_debug
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 31
    functionsReached:
    - event_recalculate_debug_level
    linkageType: ''
    returnType: struct event
    signature: struct event *event_set_forced_debug(struct event *event, bool force)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_recalculate_debug_level
      Src: /src/dovecot/src/lib/event-log.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 425
    functionName: event_unset_forced_debug
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 2
    functionsReached:
    - event_recalculate_debug_level
    linkageType: ''
    returnType: struct event
    signature: struct event *event_unset_forced_debug(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - event
    - force
    argTypes:
    - struct event*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 431
    functionName: event_set_forced_never_debug
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *event_set_forced_never_debug(struct event *event, bool
      force)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unset_global_debug_log_filter
      Src: /src/dovecot/src/lib/event-log.c:435,1
    - Dst: event_filter_ref
      Src: /src/dovecot/src/lib/event-log.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct event_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 439
    functionName: event_set_global_debug_log_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached:
    - event_unset_global_debug_log_filter
    - event_filter_ref
    linkageType: ''
    returnType: void
    signature: void event_set_global_debug_log_filter(struct event_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 444
    functionName: event_get_global_debug_log_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event_filter
    signature: struct event_filter *event_get_global_debug_log_filter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/event-log.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 450
    functionName: event_unset_global_debug_log_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 1
    functionsReached:
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: void event_unset_global_debug_log_filter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unset_global_debug_send_filter
      Src: /src/dovecot/src/lib/event-log.c:454,1
    - Dst: event_filter_ref
      Src: /src/dovecot/src/lib/event-log.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct event_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 458
    functionName: event_set_global_debug_send_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 2
    functionsReached:
    - event_filter_ref
    - event_unset_global_debug_send_filter
    linkageType: ''
    returnType: void
    signature: void event_set_global_debug_send_filter(struct event_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: event_get_global_debug_send_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event_filter
    signature: struct event_filter *event_get_global_debug_send_filter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/event-log.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 469
    functionName: event_unset_global_debug_send_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 1
    functionsReached:
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: void event_unset_global_debug_send_filter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unset_global_core_log_filter
      Src: /src/dovecot/src/lib/event-log.c:473,1
    - Dst: event_filter_ref
      Src: /src/dovecot/src/lib/event-log.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct event_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 477
    functionName: event_set_global_core_log_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached:
    - event_unset_global_core_log_filter
    - event_filter_ref
    linkageType: ''
    returnType: void
    signature: void event_set_global_core_log_filter(struct event_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 482
    functionName: event_get_global_core_log_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event_filter
    signature: struct event_filter *event_get_global_core_log_filter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/event-log.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 488
    functionName: event_unset_global_core_log_filter
    functionSourceFile: /src/dovecot/src/lib/event-log.c
    functionUses: 1
    functionsReached:
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: void event_unset_global_core_log_filter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:18,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:26,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:27,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:28,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:32,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:33,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:33,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:35,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:38,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:38,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:42,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:42,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:42,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 16
    functionDepth: 3
    functionLinenumber: 16
    functionLinenumberEnd: 46
    functionName: test_ostream_multiplex_packet_simple
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - o_stream_send_str
    - o_stream_unref
    - o_stream_create_multiplex
    - o_stream_multiplex_add_channel
    - I_MIN
    - o_stream_finish
    - test_end
    - test_assert
    - memcmp
    - test_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex_packet_simple(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:67,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:71,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:72,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:72,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:81,1
    - Dst: be32_to_cpu_unaligned
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:85,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:85,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:88,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:92,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - is
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 93
    functionName: test_ostream_multiplex_stream_read
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - i_stream_skip
    - io_loop_stop
    - memcmp
    - be32_to_cpu_unaligned
    - test_assert
    - i_stream_read_more
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex_stream_read(struct istream *is)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:97,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:99,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:100,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:102,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:102,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:104,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:106,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:108,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:109,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 112
    functionName: test_ostream_multiplex_stream_write
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - o_stream_cork
    - o_stream_nsend
    - i_rand_limit
    - o_stream_nsend_str
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex_stream_write(struct ostream *channel ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:116,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:118,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:122,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:122,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:123,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:124,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:125,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:126,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:128,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:130,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:133,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:135,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:137,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:139,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:142,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:142,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:144,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:144,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:145,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:147,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:148,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:150,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:152,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:153,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 114
    functionDepth: 3
    functionLinenumber: 114
    functionLinenumberEnd: 156
    functionName: test_ostream_multiplex_packet_stream
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - io_remove
    - o_stream_unref
    - io_loop_destroy
    - test_assert
    - io_loop_run
    - o_stream_create_fd
    - i_close_fd
    - test_end
    - pipe
    - io_add_istream
    - io_loop_set_current
    - o_stream_create_multiplex
    - i_stream_create_fd
    - fd_set_nonblock
    - io_add
    - o_stream_multiplex_add_channel
    - io_loop_create
    - o_stream_finish
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex_packet_stream(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:160,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:161,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:162,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:163,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:174,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:175,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:175,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:176,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:177,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:180,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:180,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:181,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:181,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:181,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:183,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:183,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:184,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:185,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 188
    functionName: test_ostream_multiplex_packet_cork
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - o_stream_uncork
    - o_stream_unref
    - o_stream_cork
    - o_stream_create_multiplex
    - t_buffer_create
    - o_stream_finish
    - test_end
    - test_assert
    - o_stream_nsendv
    - o_stream_flush
    - memcmp
    - test_ostream_create
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex_packet_cork(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:201,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:203,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:206,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:208,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:213,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:216,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_hang_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 217
    functionName: test_hang_input
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_stream_read
    - test_assert
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void test_hang_input(struct test_hang_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:223,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:224,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:225,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:226,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:227,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:229,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:230,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:231,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:232,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:234,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:240,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:241,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:242,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:243,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:245,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:250,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:250,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:251,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:251,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:252,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:256,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:256,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:257,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:260,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:261,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:262,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:271,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:272,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:273,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:274,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:282,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:283,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:283,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:285,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:286,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:287,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:288,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:289,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:290,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:291,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:292,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 293
    functionName: test_ostream_multiplex_packet_hang
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - io_remove
    - o_stream_unref
    - o_stream_cork
    - io_loop_destroy
    - test_assert
    - i_stream_multiplex_add_channel
    - io_loop_run
    - o_stream_create_fd
    - timeout_add
    - i_fatal
    - test_end
    - pipe
    - i_zero
    - io_add_istream
    - o_stream_create_multiplex
    - i_stream_create_multiplex
    - i_stream_create_fd
    - fd_set_nonblock
    - o_stream_multiplex_add_channel
    - io_loop_create
    - o_stream_finish
    - o_stream_set_no_error_handling
    - o_stream_send
    - o_stream_get_buffer_used_size
    - i_stream_unref
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex_packet_hang(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:306,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:309,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:310,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_flush_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 313
    functionName: flush_callback1
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - memset
    - i_assert
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int flush_callback1(struct test_flush_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:319,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:322,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:323,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_flush_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 326
    functionName: flush_callback2
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - memset
    - i_assert
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int flush_callback2(struct test_flush_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:333,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:335,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:336,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:338,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:341,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:344,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_flush_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 345
    functionName: test_flush_input
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_stream_read
    - test_assert
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void test_flush_input(struct test_flush_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:351,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:352,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:353,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:354,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:355,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:357,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:358,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:359,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:360,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:362,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:364,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:365,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:366,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:374,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:375,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:376,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:377,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:379,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:380,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:381,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:382,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:386,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:387,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:388,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:390,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:390,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:391,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:391,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:393,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:394,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:395,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:396,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:397,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:398,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:399,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 347
    functionDepth: 3
    functionLinenumber: 347
    functionLinenumberEnd: 401
    functionName: test_ostream_multiplex_packet_flush_callback
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - io_remove
    - o_stream_unref
    - io_loop_destroy
    - o_stream_set_flush_pending
    - test_assert
    - o_stream_set_flush_callback
    - io_loop_run
    - i_stream_multiplex_add_channel
    - o_stream_create_fd
    - timeout_add
    - i_fatal
    - test_end
    - pipe
    - io_add_istream
    - o_stream_create_multiplex
    - i_stream_create_multiplex
    - i_stream_create_fd
    - fd_set_nonblock
    - o_stream_multiplex_add_channel
    - io_loop_create
    - o_stream_finish
    - o_stream_set_no_error_handling
    - i_stream_unref
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex_packet_flush_callback(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:405,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - buf
    - data
    - size
    argTypes:
    - buffer_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 409
    functionName: buf_expect
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - buffer_delete
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool buf_expect(buffer_t *buf, const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:416,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:417,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:418,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:420,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:422,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:424,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:426,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:427,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:431,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:433,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:436,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:437,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:440,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:442,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:443,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:446,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:447,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:448,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:451,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:454,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:457,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:458,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:459,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:464,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:465,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:466,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:470,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:471,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:473,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:475,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:476,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:477,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:480,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:481,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:482,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:484,1
    - Dst: buf_expect
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:485,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:486,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:488,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:488,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:490,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:491,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:492,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:493,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:494,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 411
    functionDepth: 3
    functionLinenumber: 411
    functionLinenumberEnd: 496
    functionName: test_ostream_multiplex_stream
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - o_stream_create_multiplex
    - o_stream_multiplex_add_channel
    - o_stream_unref
    - o_stream_finish
    - o_stream_create_buffer
    - buf_expect
    - test_end
    - o_stream_nsend
    - test_assert
    - o_stream_flush
    - buffer_free
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex_stream(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ostream_multiplex_packet_simple
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:500,1
    - Dst: test_ostream_multiplex_packet_stream
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:501,1
    - Dst: test_ostream_multiplex_packet_cork
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:502,1
    - Dst: test_ostream_multiplex_packet_hang
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:503,1
    - Dst: test_ostream_multiplex_packet_flush_callback
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:504,1
    - Dst: test_ostream_multiplex_stream
      Src: /src/dovecot/src/lib/test-ostream-multiplex.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 498
    functionDepth: 4
    functionLinenumber: 498
    functionLinenumberEnd: 506
    functionName: test_ostream_multiplex
    functionSourceFile: /src/dovecot/src/lib/test-ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - test_ostream_multiplex_packet_flush_callback
    - test_ostream_multiplex_packet_cork
    - test_ostream_multiplex_packet_simple
    - test_ostream_multiplex_stream
    - test_ostream_multiplex_packet_stream
    - test_ostream_multiplex_packet_hang
    linkageType: ''
    returnType: void
    signature: void test_ostream_multiplex(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_match
      Src: /src/dovecot/src/lib/strfuncs.h:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - haystack
    - needle
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 104
    functionName: str_begins_with
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 98
    functionsReached:
    - str_match
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE str_begins_with(const char *haystack, const char *needle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_match_icase
      Src: /src/dovecot/src/lib/strfuncs.h:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - haystack
    - needle
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: str_begins_icase_with
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 14
    functionsReached:
    - str_match_icase
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE str_begins_icase_with(const char *haystack, const char *needle)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - haystack
    - needle_len
    - suffix_r
    argTypes:
    - char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: str_begins_builtin_success
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool str_begins_builtin_success(const char *haystack, size_t needle_len,\n\t\t\t
      \  const char **suffix_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: str_begins_with
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 98
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str_begins_with(h, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - n
    - ','
    - suffix_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: str_begins
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 94
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str_begins(h, n, suffix_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: str_begins_icase_with
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str_begins_icase_with(h, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - n
    - ','
    - suffix_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: str_begins_icase
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str_begins_icase(h, n, suffix_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.h:140,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.h:141,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/strfuncs.h:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - haystack
    - suffix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 145
    functionName: str_ends_with
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 2
    functionsReached:
    - strcmp
    - strlen
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE str_ends_with(const char *haystack, const char *suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.h:150,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.h:151,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/strfuncs.h:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - haystack
    - suffix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 155
    functionName: str_ends_icase_with
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 0
    functionsReached:
    - strlen
    - strcasecmp
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE str_ends_icase_with(const char *haystack, const char *suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.h:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - chr
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: i_strchr_to_next
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 10
    functionsReached:
    - strchr
    linkageType: ''
    returnType: char
    signature: char *i_strchr_to_next(const char *str, char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_split_key_value
      Src: /src/dovecot/src/lib/strfuncs.h:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - arg
    - key_r
    - value_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: ATTR_NOWARN_UNUSED_RESULT::t_split_key_value_eq
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 0
    functionsReached:
    - t_split_key_value
    linkageType: ''
    returnType: bool
    signature: 'bool ATTR_NOWARN_UNUSED_RESULT

      t_split_key_value_eq(const char *arg, const char **key_r, const char **value_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - arr
    - ','
    - separator
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 232
    functionName: t_array_const_string_join
    functionSourceFile: /src/dovecot/src/lib/strfuncs.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: t_array_const_string_join(arr, separator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/file-dotlock.c:85,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/file-dotlock.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - settings
    - path
    argTypes:
    - struct dotlock_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: file_dotlock_alloc
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_new
    linkageType: ''
    returnType: struct dotlock
    signature: 'struct dotlock *

      file_dotlock_alloc(const struct dotlock_settings *settings, const char *path)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/file-dotlock.c:102,1
    - Dst: read
      Src: /src/dovecot/src/lib/file-dotlock.c:107,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/file-dotlock.c:108,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/file-dotlock.c:118,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/file-dotlock.c:124,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/lib/file-dotlock.c:127,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - lock_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 132
    functionName: read_local_pid
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - str_to_pid
    - i_close_fd
    - open
    - read
    linkageType: ''
    returnType: pid_t
    signature: pid_t read_local_pid(const char *lock_path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib/file-dotlock.c:140,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 5
    argNames:
    - st
    - change
    - last_change_r
    - now
    - check_ctime
    argTypes:
    - struct stat*
    - struct file_change_info*
    - time_t*
    - time_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 164
    functionName: update_change_info
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - CMP_DEV_T
    linkageType: ''
    returnType: bool
    signature: "bool update_change_info(const struct stat *st, struct file_change_info
      *change,\n\t\t   time_t *last_change_r, time_t now, bool check_ctime)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib/file-dotlock.c:174,1
    - Dst: nfs_flush_attr_cache_unlocked
      Src: /src/dovecot/src/lib/file-dotlock.c:175,1
    - Dst: nfs_safe_lstat
      Src: /src/dovecot/src/lib/file-dotlock.c:179,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:181,1
    - Dst: update_change_info
      Src: /src/dovecot/src/lib/file-dotlock.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - now
    - lock_info
    - changed_r
    argTypes:
    - time_t
    - struct lock_info*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 191
    functionName: update_lock_info
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - nfs_flush_attr_cache_unlocked
    - i_error
    - update_change_info
    - nfs_safe_lstat
    - nfs_flush_file_handle_cache
    linkageType: ''
    returnType: int
    signature: "int update_lock_info(time_t now, struct lock_info *lock_info,\n\t\t\t
      \   bool *changed_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/file-dotlock.c:195,1
    - Dst: i_sleep_usecs
      Src: /src/dovecot/src/lib/file-dotlock.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - lock_info
    argTypes:
    - struct lock_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 204
    functionName: dotlock_override
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - i_sleep_usecs
    - i_unlink_if_exists
    linkageType: ''
    returnType: int
    signature: int dotlock_override(struct lock_info *lock_info)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: update_lock_info
      Src: /src/dovecot/src/lib/file-dotlock.c:213,1
    - Dst: read_local_pid
      Src: /src/dovecot/src/lib/file-dotlock.c:222,1
    - Dst: read_local_pid
      Src: /src/dovecot/src/lib/file-dotlock.c:237,1
    - Dst: kill
      Src: /src/dovecot/src/lib/file-dotlock.c:243,1
    - Dst: getpid
      Src: /src/dovecot/src/lib/file-dotlock.c:244,1
    - Dst: update_lock_info
      Src: /src/dovecot/src/lib/file-dotlock.c:255,1
    - Dst: dotlock_override
      Src: /src/dovecot/src/lib/file-dotlock.c:260,1
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib/file-dotlock.c:276,1
    - Dst: nfs_flush_attr_cache_maybe_locked
      Src: /src/dovecot/src/lib/file-dotlock.c:277,1
    - Dst: nfs_safe_stat
      Src: /src/dovecot/src/lib/file-dotlock.c:279,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:284,1
    - Dst: update_change_info
      Src: /src/dovecot/src/lib/file-dotlock.c:288,1
    - Dst: dotlock_override
      Src: /src/dovecot/src/lib/file-dotlock.c:296,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 2
    argNames:
    - now
    - lock_info
    argTypes:
    - time_t
    - struct lock_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 206
    functionDepth: 3
    functionLinenumber: 206
    functionLinenumberEnd: 300
    functionName: check_lock
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - nfs_safe_stat
    - getpid
    - i_error
    - update_change_info
    - nfs_flush_attr_cache_maybe_locked
    - kill
    - nfs_flush_file_handle_cache
    - read_local_pid
    - dotlock_override
    - update_lock_info
    linkageType: ''
    returnType: int
    signature: int check_lock(time_t now, struct lock_info *lock_info)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-dotlock.c:307,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/file-dotlock.c:308,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/file-dotlock.c:308,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib/file-dotlock.c:309,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib/file-dotlock.c:311,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:312,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - fd
    - path
    - nfs_flush
    argTypes:
    - int
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 317
    functionName: file_write_pid
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - ftruncate
    - fdatasync
    - i_error
    - write_full
    - strlen
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: int file_write_pid(int fd, const char *path, bool nfs_flush)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-dotlock.c:329,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib/file-dotlock.c:331,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/file-dotlock.c:333,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/file-dotlock.c:337,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/file-dotlock.c:339,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/file-dotlock.c:341,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/file-dotlock.c:345,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/file-dotlock.c:347,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/file-dotlock.c:349,1
    - Dst: umask
      Src: /src/dovecot/src/lib/file-dotlock.c:353,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lib/file-dotlock.c:354,1
    - Dst: umask
      Src: /src/dovecot/src/lib/file-dotlock.c:356,1
    - Dst: file_write_pid
      Src: /src/dovecot/src/lib/file-dotlock.c:361,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/file-dotlock.c:362,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/file-dotlock.c:364,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/file-dotlock.c:369,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-dotlock.c:370,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:371,1
    - Dst: utime
      Src: /src/dovecot/src/lib/file-dotlock.c:376,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:377,1
    - Dst: nfs_safe_link
      Src: /src/dovecot/src/lib/file-dotlock.c:380,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:386,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/file-dotlock.c:392,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 4
    argNames:
    - lock_info
    - write_pid
    - tmp_path
    - now
    argTypes:
    - struct lock_info*
    - bool
    - string_t*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 397
    functionName: try_create_lock_hardlink
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_assert
    - str_printfa
    - str_append_c
    - strrchr
    - i_error
    - utime
    - nfs_safe_link
    - i_close_fd
    - umask
    - i_unlink
    - fstat
    - str_truncate
    - file_write_pid
    - str_append
    - safe_mkstemp
    - str_append_data
    linkageType: ''
    returnType: int
    signature: "int try_create_lock_hardlink(struct lock_info *lock_info, bool write_pid,\n\t\t\t\t
      \   string_t *tmp_path, time_t now)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/file-dotlock.c:403,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:409,1
    - Dst: file_write_pid
      Src: /src/dovecot/src/lib/file-dotlock.c:414,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/file-dotlock.c:416,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - lock_info
    - write_pid
    argTypes:
    - struct lock_info*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 423
    functionName: try_create_lock_excl
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - open
    - i_error
    - file_write_pid
    linkageType: ''
    returnType: int
    signature: int try_create_lock_excl(struct lock_info *lock_info, bool write_pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/file-dotlock.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: dotlock_wait_end
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void dotlock_wait_end(struct ioloop *ioloop)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_usecs
      Src: /src/dovecot/src/lib/file-dotlock.c:437,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/file-dotlock.c:441,1
    - Dst: io_add_notify
      Src: /src/dovecot/src/lib/file-dotlock.c:442,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/file-dotlock.c:448,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/file-dotlock.c:452,1
    - Dst: i_sleep_usecs
      Src: /src/dovecot/src/lib/file-dotlock.c:454,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/file-dotlock.c:459,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/file-dotlock.c:461,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/file-dotlock.c:462,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/file-dotlock.c:463,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/file-dotlock.c:464,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - lock_info
    argTypes:
    - struct lock_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 465
    functionName: dotlock_wait
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - io_add_notify
    - io_remove
    - timeout_add
    - i_sleep_usecs
    - io_loop_destroy
    - io_loop_create
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dotlock_wait(struct lock_info *lock_info)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib/file-dotlock.c:483,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/file-dotlock.c:486,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/file-dotlock.c:490,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/file-dotlock.c:492,1
    - Dst: file_lock_wait_start
      Src: /src/dovecot/src/lib/file-dotlock.c:501,1
    - Dst: dotlock_wait
      Src: /src/dovecot/src/lib/file-dotlock.c:517,1
    - Dst: time
      Src: /src/dovecot/src/lib/file-dotlock.c:518,1
    - Dst: check_lock
      Src: /src/dovecot/src/lib/file-dotlock.c:521,1
    - Dst: try_create_lock_excl
      Src: /src/dovecot/src/lib/file-dotlock.c:530,1
    - Dst: try_create_lock_hardlink
      Src: /src/dovecot/src/lib/file-dotlock.c:531,1
    - Dst: time
      Src: /src/dovecot/src/lib/file-dotlock.c:537,1
    - Dst: struct dotlock_settings*::callback
      Src: /src/dovecot/src/lib/file-dotlock.c:553,1
    - Dst: struct dotlock_settings*::callback
      Src: /src/dovecot/src/lib/file-dotlock.c:559,1
    - Dst: time
      Src: /src/dovecot/src/lib/file-dotlock.c:565,1
    - Dst: file_lock_wait_end
      Src: /src/dovecot/src/lib/file-dotlock.c:567,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-dotlock.c:570,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-dotlock.c:571,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:572,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:585,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/file-dotlock.c:587,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/file-dotlock.c:588,1
    - Dst: close
      Src: /src/dovecot/src/lib/file-dotlock.c:596,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:597,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/file-dotlock.c:601,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 84
    argCount: 4
    argNames:
    - dotlock
    - flags
    - write_pid
    - lock_path_r
    argTypes:
    - struct dotlock*
    - enum dotlock_create_flags
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 467
    functionDepth: 4
    functionLinenumber: 467
    functionLinenumberEnd: 606
    functionName: dotlock_create
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 11
    functionsReached:
    - i_zero
    - file_lock_wait_start
    - t_str_new
    - i_assert
    - dec2str
    - i_error
    - try_create_lock_excl
    - i_warning
    - i_unlink
    - struct dotlock_settings*::callback
    - fstat
    - try_create_lock_hardlink
    - file_lock_wait_end
    - close
    - dotlock_wait
    - time
    - t_strconcat
    - check_lock
    linkageType: ''
    returnType: int
    signature: "int dotlock_create(struct dotlock *dotlock, enum dotlock_create_flags
      flags,\n\t       bool write_pid, const char **lock_path_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/lib/file-dotlock.c:617,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:618,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/file-dotlock.c:623,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/file-dotlock.c:624,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/file-dotlock.c:625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _dotlock
    argTypes:
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 626
    functionName: file_dotlock_free
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - i_free
    - close
    - i_error
    linkageType: ''
    returnType: void
    signature: void file_dotlock_free(struct dotlock **_dotlock)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dotlock_create
      Src: /src/dovecot/src/lib/file-dotlock.c:635,1
    - Dst: close
      Src: /src/dovecot/src/lib/file-dotlock.c:642,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:643,1
    - Dst: lstat
      Src: /src/dovecot/src/lib/file-dotlock.c:650,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:652,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:654,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:662,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - dotlock
    - flags
    argTypes:
    - struct dotlock*
    - enum dotlock_create_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 628
    functionDepth: 5
    functionLinenumber: 628
    functionLinenumberEnd: 668
    functionName: file_dotlock_create_real
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - dotlock_create
    - close
    - i_error
    - lstat
    linkageType: ''
    returnType: int
    signature: "int file_dotlock_create_real(struct dotlock *dotlock,\n\t\t\t\t    enum
      dotlock_create_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_alloc
      Src: /src/dovecot/src/lib/file-dotlock.c:677,1
    - Dst: file_dotlock_create_real
      Src: /src/dovecot/src/lib/file-dotlock.c:679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - set
    - path
    - flags
    - dotlock_r
    argTypes:
    - struct dotlock_settings*
    - char*
    - enum dotlock_create_flags
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 670
    functionDepth: 6
    functionLinenumber: 670
    functionLinenumberEnd: 680
    functionName: file_dotlock_create
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 10
    functionsReached:
    - file_dotlock_create_real
    - file_dotlock_alloc
    linkageType: ''
    returnType: int
    signature: "int file_dotlock_create(const struct dotlock_settings *set, const
      char *path,\n\t\t\tenum dotlock_create_flags flags,\n\t\t\tstruct dotlock **dotlock_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib/file-dotlock.c:691,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib/file-dotlock.c:693,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:695,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dotlock
    - deleted
    argTypes:
    - struct dotlock*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 706
    functionName: dotlock_replaced_warning
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - file_dotlock_get_lock_path
    - time
    - i_warning
    linkageType: ''
    returnType: void
    signature: void dotlock_replaced_warning(struct dotlock *dotlock, bool deleted)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 719
    functionName: file_dotlock_has_mtime_changed
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool file_dotlock_has_mtime_changed(time_t t1, time_t t2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib/file-dotlock.c:731,1
    - Dst: nfs_safe_lstat
      Src: /src/dovecot/src/lib/file-dotlock.c:732,1
    - Dst: dotlock_replaced_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:734,1
    - Dst: file_dotlock_free
      Src: /src/dovecot/src/lib/file-dotlock.c:735,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:739,1
    - Dst: file_dotlock_free
      Src: /src/dovecot/src/lib/file-dotlock.c:740,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib/file-dotlock.c:745,1
    - Dst: dotlock_replaced_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:746,1
    - Dst: file_dotlock_free
      Src: /src/dovecot/src/lib/file-dotlock.c:748,1
    - Dst: file_dotlock_has_mtime_changed
      Src: /src/dovecot/src/lib/file-dotlock.c:752,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:754,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/file-dotlock.c:757,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/file-dotlock.c:757,1
    - Dst: time
      Src: /src/dovecot/src/lib/file-dotlock.c:758,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/file-dotlock.c:761,1
    - Dst: dotlock_replaced_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:762,1
    - Dst: file_dotlock_free
      Src: /src/dovecot/src/lib/file-dotlock.c:763,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - dotlock_p
    argTypes:
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 721
    functionDepth: 2
    functionLinenumber: 721
    functionLinenumberEnd: 765
    functionName: file_dotlock_delete
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 20
    functionsReached:
    - dec2str
    - i_error
    - file_dotlock_has_mtime_changed
    - dotlock_replaced_warning
    - nfs_safe_lstat
    - i_warning
    - file_dotlock_free
    - i_unlink_if_exists
    - CMP_DEV_T
    - file_dotlock_get_lock_path
    - time
    linkageType: ''
    returnType: int
    signature: int file_dotlock_delete(struct dotlock **dotlock_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_alloc
      Src: /src/dovecot/src/lib/file-dotlock.c:774,1
    - Dst: dotlock_create
      Src: /src/dovecot/src/lib/file-dotlock.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - set
    - path
    - flags
    - dotlock_r
    argTypes:
    - struct dotlock_settings*
    - char*
    - enum dotlock_create_flags
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 767
    functionDepth: 5
    functionLinenumber: 767
    functionLinenumberEnd: 779
    functionName: file_dotlock_open
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 5
    functionsReached:
    - dotlock_create
    - file_dotlock_alloc
    linkageType: ''
    returnType: int
    signature: "int file_dotlock_open(const struct dotlock_settings *set, const char
      *path,\n\t\t      enum dotlock_create_flags flags,\n\t\t      struct dotlock
      **dotlock_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/dovecot/src/lib/file-dotlock.c:801,1
    - Dst: file_dotlock_open
      Src: /src/dovecot/src/lib/file-dotlock.c:802,1
    - Dst: umask
      Src: /src/dovecot/src/lib/file-dotlock.c:803,1
    - Dst: fchown
      Src: /src/dovecot/src/lib/file-dotlock.c:806,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:808,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib/file-dotlock.c:808,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib/file-dotlock.c:809,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:812,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib/file-dotlock.c:813,1
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib/file-dotlock.c:816,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 8
    argNames:
    - set
    - path
    - flags
    - mode
    - uid
    - gid
    - gid_origin
    - dotlock_r
    argTypes:
    - struct dotlock_settings*
    - char*
    - enum dotlock_create_flags
    - mode_t
    - uid_t
    - gid_t
    - char*
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 792
    functionDepth: 6
    functionLinenumber: 792
    functionLinenumberEnd: 822
    functionName: file_dotlock_open_mode_full
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 0
    functionsReached:
    - file_dotlock_delete
    - i_error
    - umask
    - file_dotlock_open
    - file_dotlock_get_lock_path
    - eperm_error_get_chgrp
    - fchown
    linkageType: ''
    returnType: void
    signature: "void file_dotlock_open_mode_full(const struct dotlock_settings *set,
      const char *path,\n\t\t\t    enum dotlock_create_flags flags,\n\t\t\t    mode_t
      mode, uid_t uid, gid_t gid,\n\t\t\t    const char *gid_origin, struct dotlock
      **dotlock_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_open_mode_full
      Src: /src/dovecot/src/lib/file-dotlock.c:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - set
    - path
    - flags
    - mode
    - uid
    - gid
    - dotlock_r
    argTypes:
    - struct dotlock_settings*
    - char*
    - enum dotlock_create_flags
    - mode_t
    - uid_t
    - gid_t
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 824
    functionDepth: 7
    functionLinenumber: 824
    functionLinenumberEnd: 831
    functionName: file_dotlock_open_mode
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 1
    functionsReached:
    - file_dotlock_open_mode_full
    linkageType: ''
    returnType: int
    signature: "int file_dotlock_open_mode(const struct dotlock_settings *set, const
      char *path,\n\t\t\t   enum dotlock_create_flags flags,\n\t\t\t   mode_t mode,
      uid_t uid, gid_t gid,\n\t\t\t   struct dotlock **dotlock_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_open_mode_full
      Src: /src/dovecot/src/lib/file-dotlock.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - set
    - path
    - flags
    - mode
    - gid
    - gid_origin
    - dotlock_r
    argTypes:
    - struct dotlock_settings*
    - char*
    - enum dotlock_create_flags
    - mode_t
    - gid_t
    - char*
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 833
    functionDepth: 7
    functionLinenumber: 833
    functionLinenumberEnd: 840
    functionName: file_dotlock_open_group
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 2
    functionsReached:
    - file_dotlock_open_mode_full
    linkageType: ''
    returnType: int
    signature: "int file_dotlock_open_group(const struct dotlock_settings *set, const
      char *path,\n\t\t\t    enum dotlock_create_flags flags,\n\t\t\t    mode_t mode,
      gid_t gid, const char *gid_origin,\n\t\t\t    struct dotlock **dotlock_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_is_locked
      Src: /src/dovecot/src/lib/file-dotlock.c:853,1
    - Dst: dotlock_replaced_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:859,1
    - Dst: file_dotlock_free
      Src: /src/dovecot/src/lib/file-dotlock.c:861,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib/file-dotlock.c:865,1
    - Dst: rename
      Src: /src/dovecot/src/lib/file-dotlock.c:866,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:867,1
    - Dst: dotlock_replaced_warning
      Src: /src/dovecot/src/lib/file-dotlock.c:869,1
    - Dst: file_dotlock_free
      Src: /src/dovecot/src/lib/file-dotlock.c:870,1
    - Dst: file_dotlock_free
      Src: /src/dovecot/src/lib/file-dotlock.c:873,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - dotlock_p
    - flags
    argTypes:
    - struct dotlock**
    - enum dotlock_replace_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 842
    functionDepth: 2
    functionLinenumber: 842
    functionLinenumberEnd: 875
    functionName: file_dotlock_replace
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 6
    functionsReached:
    - rename
    - file_dotlock_is_locked
    - i_error
    - dotlock_replaced_warning
    - file_dotlock_free
    - file_dotlock_get_lock_path
    linkageType: ''
    returnType: int
    signature: "int file_dotlock_replace(struct dotlock **dotlock_p,\n\t\t\t enum
      dotlock_replace_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib/file-dotlock.c:879,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib/file-dotlock.c:890,1
    - Dst: utime
      Src: /src/dovecot/src/lib/file-dotlock.c:891,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:892,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - dotlock
    argTypes:
    - struct dotlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 895
    functionName: file_dotlock_touch
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 4
    functionsReached:
    - utime
    - file_dotlock_get_lock_path
    - time
    - i_error
    linkageType: ''
    returnType: int
    signature: int file_dotlock_touch(struct dotlock *dotlock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib/file-dotlock.c:904,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-dotlock.c:905,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:906,1
    - Dst: nfs_safe_lstat
      Src: /src/dovecot/src/lib/file-dotlock.c:910,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-dotlock.c:911,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib/file-dotlock.c:914,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - dotlock
    argTypes:
    - struct dotlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 915
    functionName: file_dotlock_is_locked
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 2
    functionsReached:
    - i_error
    - nfs_safe_lstat
    - fstat
    - CMP_DEV_T
    - file_dotlock_get_lock_path
    linkageType: ''
    returnType: bool
    signature: bool file_dotlock_is_locked(struct dotlock *dotlock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib/file-dotlock.c:921,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dotlock
    argTypes:
    - struct dotlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 925
    functionName: file_dotlock_get_lock_path
    functionSourceFile: /src/dovecot/src/lib/file-dotlock.c
    functionUses: 10
    functionsReached:
    - i_strconcat
    linkageType: ''
    returnType: char
    signature: char *file_dotlock_get_lock_path(struct dotlock *dotlock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - iter
    - ','
    - size
    - ','
    - in
    - ','
    - exp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: CHECK
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK(iter, size, in, exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK
      Src: /src/dovecot/src/lib/test-byteorder.c:78,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib/test-byteorder.c:79,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib/test-byteorder.c:80,1
    - Dst: CHECK
      Src: /src/dovecot/src/lib/test-byteorder.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - iter
    - run
    argTypes:
    - int
    - struct bswap_run*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: __test
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached:
    - CHECK
    linkageType: ''
    returnType: void
    signature: void __test(int iter, const struct bswap_run *run)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-byteorder.c:88,1
    - Dst: __test
      Src: /src/dovecot/src/lib/test-byteorder.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: test_bswap
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached:
    - __test
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_bswap(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - iter
    - ','
    - size
    - ','
    - pfx
    - ','
    - in
    - ','
    - fxn
    - ','
    - exp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 188
    functionName: __CHECK_READ
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __CHECK_READ(iter, size, pfx, in, fxn, exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - iter
    - ','
    - size
    - ','
    - in
    - ','
    - be_exp
    - ','
    - le_exp
    - ','
    - cpu_exp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 198
    functionName: CHECK_READ
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_READ(iter, size, in, be_exp, le_exp, cpu_exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_READ
      Src: /src/dovecot/src/lib/test-byteorder.c:201,1
    - Dst: CHECK_READ
      Src: /src/dovecot/src/lib/test-byteorder.c:202,1
    - Dst: CHECK_READ
      Src: /src/dovecot/src/lib/test-byteorder.c:203,1
    - Dst: CHECK_READ
      Src: /src/dovecot/src/lib/test-byteorder.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - iter
    - run
    argTypes:
    - int
    - struct unaligned_run*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 205
    functionName: __test_read
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached:
    - CHECK_READ
    linkageType: ''
    returnType: void
    signature: void __test_read(int iter, const struct unaligned_run *run)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - iter
    - ','
    - size
    - ','
    - pfx
    - ','
    - in
    - ','
    - fxn
    - ','
    - exp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 219
    functionName: __CHECK_WRITE
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __CHECK_WRITE(iter, size, pfx, in, fxn, exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - iter
    - ','
    - size
    - ','
    - out
    - ','
    - be_in
    - ','
    - le_in
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 227
    functionName: CHECK_WRITE
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_WRITE(iter, size, out, be_in, le_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_WRITE
      Src: /src/dovecot/src/lib/test-byteorder.c:230,1
    - Dst: CHECK_WRITE
      Src: /src/dovecot/src/lib/test-byteorder.c:231,1
    - Dst: CHECK_WRITE
      Src: /src/dovecot/src/lib/test-byteorder.c:232,1
    - Dst: CHECK_WRITE
      Src: /src/dovecot/src/lib/test-byteorder.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - iter
    - run
    argTypes:
    - int
    - struct unaligned_run*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: __test_write
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached:
    - CHECK_WRITE
    linkageType: ''
    returnType: void
    signature: void __test_write(int iter, const struct unaligned_run *run)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-byteorder.c:240,1
    - Dst: __test_read
      Src: /src/dovecot/src/lib/test-byteorder.c:241,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-byteorder.c:243,1
    - Dst: __test_write
      Src: /src/dovecot/src/lib/test-byteorder.c:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 245
    functionName: test_unaligned
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached:
    - __test_write
    - __test_read
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_unaligned(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_bswap
      Src: /src/dovecot/src/lib/test-byteorder.c:249,1
    - Dst: test_unaligned
      Src: /src/dovecot/src/lib/test-byteorder.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 251
    functionName: test_byteorder
    functionSourceFile: /src/dovecot/src/lib/test-byteorder.c
    functionUses: 0
    functionsReached:
    - test_unaligned
    - test_bswap
    linkageType: ''
    returnType: void
    signature: void test_byteorder(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlerror
      Src: /src/dovecot/src/lib/module-dir.c:27,1
    - Dst: dlsym
      Src: /src/dovecot/src/lib/module-dir.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - module
    - symbol
    argTypes:
    - struct module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 30
    functionName: module_get_symbol_quiet
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 2
    functionsReached:
    - dlsym
    - dlerror
    linkageType: ''
    returnType: void
    signature: void *module_get_symbol_quiet(struct module *module, const char *symbol)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: module_get_symbol_quiet
      Src: /src/dovecot/src/lib/module-dir.c:37,1
    - Dst: dlerror
      Src: /src/dovecot/src/lib/module-dir.c:39,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/module-dir.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - module
    - symbol
    argTypes:
    - struct module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 47
    functionName: module_get_symbol
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 1
    functionsReached:
    - module_get_symbol_quiet
    - i_error
    - dlerror
    linkageType: ''
    returnType: void
    signature: void *module_get_symbol(struct module *module, const char *symbol)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: module_get_symbol_quiet
      Src: /src/dovecot/src/lib/module-dir.c:52,1
    - Dst: module_get_symbol
      Src: /src/dovecot/src/lib/module-dir.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - module
    - symbol
    - quiet
    argTypes:
    - struct module*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: get_symbol
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 2
    functionsReached:
    - module_get_symbol_quiet
    - module_get_symbol
    linkageType: ''
    returnType: void
    signature: void *get_symbol(struct module *module, const char *symbol, bool quiet)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct module*::deinit
      Src: /src/dovecot/src/lib/module-dir.c:60,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/module-dir.c:64,1
    - Dst: dlclose
      Src: /src/dovecot/src/lib/module-dir.c:65,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/module-dir.c:66,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/module-dir.c:68,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/module-dir.c:69,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/module-dir.c:70,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: module_free
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - i_error
    - struct module*::deinit
    - getenv
    - dlclose
    - i_free
    linkageType: ''
    returnType: void
    signature: void module_free(struct module *module)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/module-dir.c:83,1
    - Dst: dlsym
      Src: /src/dovecot/src/lib/module-dir.c:84,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/module-dir.c:88,1
    - Dst: str_array_find
      Src: /src/dovecot/src/lib/module-dir.c:89,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/module-dir.c:92,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/module-dir.c:93,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/module-dir.c:96,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/module-dir.c:98,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/module-dir.c:99,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/module-dir.c:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - set
    - module
    - error_r
    argTypes:
    - struct module_dir_load_settings*
    - struct module*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 102
    functionName: module_check_wrong_binary_dependency
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - dlsym
    - t_str_new
    - str_printfa
    - str_c
    - t_strsplit
    - str_array_find
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool module_check_wrong_binary_dependency(const struct module_dir_load_settings
      *set,\n\t\t\t\t     struct module *module, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dlsym
      Src: /src/dovecot/src/lib/module-dir.c:115,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/module-dir.c:116,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/module-dir.c:121,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/module-dir.c:123,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/module-dir.c:125,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/module-dir.c:129,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/module-dir.c:130,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/module-dir.c:133,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/module-dir.c:138,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 4
    argNames:
    - set
    - module
    - all_modules
    - error_r
    argTypes:
    - struct module_dir_load_settings*
    - struct module*
    - struct module*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 143
    functionName: module_check_missing_plugin_dependencies
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dlsym
    - t_str_new
    - str_printfa
    - str_c
    - strlen
    - strncmp
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool module_check_missing_plugin_dependencies(const struct module_dir_load_settings
      *set,\n\t\t\t\t\t struct module *module,\n\t\t\t\t\t struct module *all_modules,\n\t\t\t\t\t
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dlopen
      Src: /src/dovecot/src/lib/module-dir.c:148,1
    - Dst: dup
      Src: /src/dovecot/src/lib/module-dir.c:155,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/module-dir.c:157,1
    - Dst: dup2
      Src: /src/dovecot/src/lib/module-dir.c:158,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/module-dir.c:159,1
    - Dst: dlopen
      Src: /src/dovecot/src/lib/module-dir.c:160,1
    - Dst: dup2
      Src: /src/dovecot/src/lib/module-dir.c:161,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/module-dir.c:162,1
    - Dst: close
      Src: /src/dovecot/src/lib/module-dir.c:163,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/module-dir.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - path
    - flags
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 167
    functionName: quiet_dlopen
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - dup2
    - i_error
    - dup
    - i_fatal
    - close
    - dlopen
    linkageType: ''
    returnType: void
    signature: void *quiet_dlopen(const char *path, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - str1
    - str2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 178
    functionName: versions_equal
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool versions_equal(const char *str1, const char *str2)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: quiet_dlopen
      Src: /src/dovecot/src/lib/module-dir.c:195,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib/module-dir.c:198,1
    - Dst: dlerror
      Src: /src/dovecot/src/lib/module-dir.c:202,1
    - Dst: dlopen
      Src: /src/dovecot/src/lib/module-dir.c:207,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/module-dir.c:209,1
    - Dst: dlerror
      Src: /src/dovecot/src/lib/module-dir.c:210,1
    - Dst: dlopen
      Src: /src/dovecot/src/lib/module-dir.c:214,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/module-dir.c:223,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/module-dir.c:224,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/module-dir.c:225,1
    - Dst: get_symbol
      Src: /src/dovecot/src/lib/module-dir.c:229,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/module-dir.c:229,1
    - Dst: versions_equal
      Src: /src/dovecot/src/lib/module-dir.c:231,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/module-dir.c:232,1
    - Dst: module_free
      Src: /src/dovecot/src/lib/module-dir.c:235,1
    - Dst: get_symbol
      Src: /src/dovecot/src/lib/module-dir.c:241,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/module-dir.c:241,1
    - Dst: get_symbol
      Src: /src/dovecot/src/lib/module-dir.c:244,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/module-dir.c:244,1
    - Dst: get_symbol
      Src: /src/dovecot/src/lib/module-dir.c:247,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/module-dir.c:247,1
    - Dst: preinit
      Src: /src/dovecot/src/lib/module-dir.c:250,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/module-dir.c:254,1
    - Dst: module_check_wrong_binary_dependency
      Src: /src/dovecot/src/lib/module-dir.c:257,1
    - Dst: module_check_missing_plugin_dependencies
      Src: /src/dovecot/src/lib/module-dir.c:259,1
    - Dst: module_free
      Src: /src/dovecot/src/lib/module-dir.c:266,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib/module-dir.c:271,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 6
    argNames:
    - path
    - name
    - set
    - all_modules
    - module_r
    - error_r
    argTypes:
    - char*
    - char*
    - struct module_dir_load_settings*
    - struct module*
    - struct module**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 274
    functionName: module_load
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 5
    functionsReached:
    - t_strconcat
    - dlerror
    - module_free
    - t_strdup_printf
    - module_check_wrong_binary_dependency
    - i_strdup
    - module_check_missing_plugin_dependencies
    - preinit
    - quiet_dlopen
    - i_new
    - versions_equal
    - get_symbol
    - i_debug
    - dlopen
    linkageType: ''
    returnType: int
    signature: "int module_load(const char *path, const char *name,\n\t    const struct
      module_dir_load_settings *set,\n\t    struct module *all_modules,\n\t    struct
      module **module_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib/module-dir.c:280,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/module-dir.c:281,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/module-dir.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 283
    functionName: module_name_cmp
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - str_begins
    - strcmp
    linkageType: ''
    returnType: int
    signature: int module_name_cmp(const char *const *n1, const char *const *n2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct module_dir_load_settings*::filter_callback
      Src: /src/dovecot/src/lib/module-dir.c:289,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/module-dir.c:296,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - set
    - names
    - name
    argTypes:
    - struct module_dir_load_settings*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 302
    functionName: module_want_load
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - struct module_dir_load_settings*::filter_callback
    linkageType: ''
    returnType: bool
    signature: "bool module_want_load(const struct module_dir_load_settings *set,\n\t\t\t
      \    const char **names, const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/module-dir.c:324,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/module-dir.c:327,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/module-dir.c:329,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - modules
    - name
    argTypes:
    - struct module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 334
    functionName: module_dir_find
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strncmp
    - strlen
    linkageType: ''
    returnType: struct module
    signature: struct module *module_dir_find(struct module *modules, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_find
      Src: /src/dovecot/src/lib/module-dir.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - modules
    - name
    argTypes:
    - struct module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 339
    functionName: module_is_loaded
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - module_dir_find
    linkageType: ''
    returnType: bool
    signature: bool module_is_loaded(struct module *modules, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib/module-dir.c:351,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/module-dir.c:351,1
    - Dst: module_file_get_name
      Src: /src/dovecot/src/lib/module-dir.c:353,1
    - Dst: i_qsort
      Src: /src/dovecot/src/lib/module-dir.c:356,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/module-dir.c:358,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 362
    functionName: module_names_fix
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_new
    - i_qsort
    - module_file_get_name
    - str_array_length
    linkageType: ''
    returnType: char
    signature: char **module_names_fix(const char *const *module_names)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: module_is_loaded
      Src: /src/dovecot/src/lib/module-dir.c:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - old_modules
    - module_names
    argTypes:
    - struct module*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 374
    functionName: module_dir_is_all_loaded
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - module_is_loaded
    linkageType: ''
    returnType: bool
    signature: bool module_dir_is_all_loaded(struct module *old_modules, const char
      **module_names)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/module-dir.c:387,1
    - Dst: module_dir_is_all_loaded
      Src: /src/dovecot/src/lib/module-dir.c:394,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib/module-dir.c:399,1
    - Dst: opendir
      Src: /src/dovecot/src/lib/module-dir.c:401,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/module-dir.c:403,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/module-dir.c:412,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/module-dir.c:413,1
    - Dst: readdir
      Src: /src/dovecot/src/lib/module-dir.c:416,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/module-dir.c:422,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/module-dir.c:423,1
    - Dst: check_duplicates
      Src: /src/dovecot/src/lib/module-dir.c:427,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/module-dir.c:430,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/module-dir.c:431,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 5
    argNames:
    - _modules
    - dir
    - module_names
    - set
    - error_r
    argTypes:
    - struct module**
    - char*
    - char**
    - struct module_dir_load_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 432
    functionName: module_dir_load_real
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - module_dir_is_all_loaded
    - pool_alloconly_create
    - readdir
    - opendir
    - p_array_init
    - p_strdup
    - array_push_back
    - strlen
    - t_strdup_printf
    - check_duplicates
    - ARRAY_TYPE
    - i_debug
    - strstr
    linkageType: ''
    returnType: int
    signature: "int module_dir_load_real(struct module **_modules,\n\t\t     const
      char *dir, const char **module_names,\n\t\t     const struct module_dir_load_settings
      *set,\n\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_load_real
      Src: /src/dovecot/src/lib/module-dir.c:501,1
    - Dst: module_names_fix
      Src: /src/dovecot/src/lib/module-dir.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - modules
    - dir
    - module_names
    - set
    - error_r
    argTypes:
    - struct module**
    - char*
    - char**
    - struct module_dir_load_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 493
    functionDepth: 4
    functionLinenumber: 493
    functionLinenumberEnd: 504
    functionName: module_dir_try_load_missing
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 2
    functionsReached:
    - module_names_fix
    - module_dir_load_real
    linkageType: ''
    returnType: int
    signature: "int module_dir_try_load_missing(struct module **modules,\n\t\t\t\tconst
      char *dir, const char *const *module_names,\n\t\t\t\tconst struct module_dir_load_settings
      *set,\n\t\t\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_try_load_missing
      Src: /src/dovecot/src/lib/module-dir.c:520,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/module-dir.c:523,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/module-dir.c:525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - old_modules
    - dir
    - module_names
    - set
    argTypes:
    - struct module*
    - char*
    - char**
    - struct module_dir_load_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 512
    functionDepth: 5
    functionLinenumber: 512
    functionLinenumberEnd: 528
    functionName: module_dir_load_missing
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 8
    functionsReached:
    - i_fatal
    - i_error
    - module_dir_try_load_missing
    linkageType: ''
    returnType: struct module
    signature: "struct module *\nmodule_dir_load_missing(struct module *old_modules,\n\t\t\tconst
      char *dir, const char *const *module_names,\n\t\t\tconst struct module_dir_load_settings
      *set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct module*::init
      Src: /src/dovecot/src/lib/module-dir.c:538,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - modules
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 541
    functionName: module_dir_init
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 13
    functionsReached:
    - struct module*::init
    linkageType: ''
    returnType: void
    signature: void module_dir_init(struct module *modules)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib/module-dir.c:559,1
    - Dst: struct module*::deinit
      Src: /src/dovecot/src/lib/module-dir.c:572,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - modules
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 575
    functionName: module_dir_deinit
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - t_new
    - struct module*::deinit
    linkageType: ''
    returnType: void
    signature: void module_dir_deinit(struct module *modules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_deinit
      Src: /src/dovecot/src/lib/module-dir.c:585,1
    - Dst: module_free
      Src: /src/dovecot/src/lib/module-dir.c:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - modules
    argTypes:
    - struct module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 593
    functionName: module_dir_unload
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 14
    functionsReached:
    - module_dir_deinit
    - module_free
    linkageType: ''
    returnType: void
    signature: void module_dir_unload(struct module **modules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_load_missing
      Src: /src/dovecot/src/lib/module-dir.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dir
    - module_names
    - set
    argTypes:
    - char*
    - char**
    - struct module_dir_load_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 595
    functionDepth: 6
    functionLinenumber: 595
    functionLinenumberEnd: 599
    functionName: module_dir_load
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 6
    functionsReached:
    - module_dir_load_missing
    linkageType: ''
    returnType: struct module
    signature: "struct module *module_dir_load(const char *dir, const char *const
      *module_names,\n\t\t\t       const struct module_dir_load_settings *set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib/module-dir.c:606,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/module-dir.c:615,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/module-dir.c:619,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 620
    functionName: module_file_get_name
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 2
    functionsReached:
    - str_begins
    - t_strdup_until
    - strstr
    linkageType: ''
    returnType: char
    signature: char *module_file_get_name(const char *fname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/module-dir.c:626,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/module-dir.c:627,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib/module-dir.c:628,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 630
    functionName: module_name_drop_suffix
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    - t_strndup
    linkageType: ''
    returnType: char
    signature: char *module_name_drop_suffix(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_name_drop_suffix
      Src: /src/dovecot/src/lib/module-dir.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 632
    functionDepth: 2
    functionLinenumber: 632
    functionLinenumberEnd: 635
    functionName: module_get_plugin_name
    functionSourceFile: /src/dovecot/src/lib/module-dir.c
    functionUses: 3
    functionsReached:
    - module_name_drop_suffix
    linkageType: ''
    returnType: char
    signature: char *module_get_plugin_name(struct module *module)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-set-size.c:29,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-set-size.c:31,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-set-size.c:32,1
    - Dst: ftruncate
      Src: /src/dovecot/src/lib/file-set-size.c:37,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-set-size.c:38,1
    - Dst: posix_fallocate
      Src: /src/dovecot/src/lib/file-set-size.c:50,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib/file-set-size.c:56,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-set-size.c:57,1
    - Dst: memset
      Src: /src/dovecot/src/lib/file-set-size.c:66,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/file-set-size.c:66,1
    - Dst: pwrite
      Src: /src/dovecot/src/lib/file-set-size.c:69,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/file-set-size.c:70,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib/file-set-size.c:73,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-set-size.c:74,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 2
    argNames:
    - fd
    - size
    argTypes:
    - int
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 80
    functionName: file_set_size
    functionSourceFile: /src/dovecot/src/lib/file-set-size.c
    functionUses: 0
    functionsReached:
    - ftruncate
    - pwrite
    - i_error
    - ENOSPACE
    - I_MIN
    - posix_fallocate
    - fstat
    - memset
    - i_assert
    linkageType: ''
    returnType: int
    signature: int file_set_size(int fd, off_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fallocate
      Src: /src/dovecot/src/lib/file-set-size.c:86,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/file-set-size.c:93,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/file-set-size.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - int
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 105
    functionName: file_preallocate
    functionSourceFile: /src/dovecot/src/lib/file-set-size.c
    functionUses: 1
    functionsReached:
    - fallocate
    - fcntl
    - i_zero
    linkageType: ''
    returnType: int
    signature: int file_preallocate(int fd ATTR_UNUSED, off_t size ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/log-throttle.c:26,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/log-throttle.c:27,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/log-throttle.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - set
    - callback
    - context
    argTypes:
    - struct log_throttle_settings*
    - log_throttle_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 37
    functionName: log_throttle_init
    functionSourceFile: /src/dovecot/src/lib/log-throttle.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct log_throttle
    signature: "struct log_throttle *\nlog_throttle_init(const struct log_throttle_settings
      *set,\n\t\t  log_throttle_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/log-throttle.c:44,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/log-throttle.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _throttle
    argTypes:
    - struct log_throttle**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: log_throttle_deinit
    functionSourceFile: /src/dovecot/src/lib/log-throttle.c
    functionUses: 0
    functionsReached:
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void log_throttle_deinit(struct log_throttle **_throttle)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct log_throttle*::callback
      Src: /src/dovecot/src/lib/log-throttle.c:51,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/log-throttle.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - throttle
    argTypes:
    - struct log_throttle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: log_throttle_callback
    functionSourceFile: /src/dovecot/src/lib/log-throttle.c
    functionUses: 0
    functionsReached:
    - struct log_throttle*::callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void log_throttle_callback(struct log_throttle *throttle)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/log-throttle.c:64,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/log-throttle.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - throttle
    argTypes:
    - struct log_throttle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 78
    functionName: log_throttle_accept
    functionSourceFile: /src/dovecot/src/lib/log-throttle.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - timeval_diff_msecs
    linkageType: ''
    returnType: bool
    signature: bool log_throttle_accept(struct log_throttle *throttle)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/hash-method.c:16,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 20
    functionName: hash_method_lookup
    functionSourceFile: /src/dovecot/src/lib/hash-method.c
    functionUses: 5
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct hash_method
    signature: struct hash_method *hash_method_lookup(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 27
    functionName: hash_method_init_size
    functionSourceFile: /src/dovecot/src/lib/hash-method.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hash_method_init_size(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - ATTR_UNUSED
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 35
    functionName: hash_method_loop_size
    functionSourceFile: /src/dovecot/src/lib/hash-method.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hash_method_loop_size(void *context, const void *data ATTR_UNUSED,
      size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 49
    functionName: hash_method_result_size
    functionSourceFile: /src/dovecot/src/lib/hash-method.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hash_method_result_size(void *context, unsigned char *result_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash-method.c:55,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash-method.c:56,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/hash-method.c:59,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/hash-method.c:60,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib/hash-method.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - meth
    - data
    - data_len
    - result_r
    argTypes:
    - struct hash_method*
    - void*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 62
    functionName: hash_method_get_digest
    functionSourceFile: /src/dovecot/src/lib/hash-method.c
    functionUses: 0
    functionsReached:
    - struct hash_method*::init
    - struct hash_method*::loop
    - i_assert
    - struct hash_method*::result
    linkageType: ''
    returnType: void
    signature: "void hash_method_get_digest(const struct hash_method *meth,\n\t\t\t
      \   const void *data, size_t data_len,\n\t\t\t    unsigned char *result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash-method.c:67,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/hash-method.c:68,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/hash-method.c:69,1
    - Dst: hash_method_get_digest
      Src: /src/dovecot/src/lib/hash-method.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - meth
    - data
    - data_len
    argTypes:
    - struct hash_method*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 74
    functionName: t_hash_data
    functionSourceFile: /src/dovecot/src/lib/hash-method.c
    functionUses: 0
    functionsReached:
    - buffer_append_space_unsafe
    - i_assert
    - t_buffer_create
    - hash_method_get_digest
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *t_hash_data(const struct hash_method *meth,\n\t\t      const
      void *data, size_t data_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-cache.c:20,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-cache.c:22,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib/test-file-cache.c:25,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-file-cache.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:27,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-file-cache.c:27,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-file-cache.c:28,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-file-cache.c:30,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:31,1
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib/test-file-cache.c:32,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:38,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:41,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:41,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:43,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-file-cache.c:43,1
    - Dst: file_cache_free
      Src: /src/dovecot/src/lib/test-file-cache.c:45,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-cache.c:46,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-file-cache.c:47,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-cache.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 18
    functionDepth: 3
    functionLinenumber: 18
    functionLinenumberEnd: 50
    functionName: test_file_cache_read
    functionSourceFile: /src/dovecot/src/lib/test-file-cache.c
    functionUses: 0
    functionsReached:
    - file_cache_get_map
    - file_cache_read
    - file_cache_free
    - file_cache_new_path
    - o_stream_create_file
    - open
    - i_close_fd
    - test_dir_prepend
    - o_stream_finish
    - i_unlink
    - test_end
    - test_assert
    - memcmp
    - o_stream_nsend_str
    - i_assert
    - o_stream_destroy
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_file_cache_read(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-cache.c:54,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-cache.c:56,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib/test-file-cache.c:59,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-file-cache.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:61,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-file-cache.c:61,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-file-cache.c:62,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-file-cache.c:64,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:65,1
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib/test-file-cache.c:66,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:74,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:74,1
    - Dst: file_cache_write
      Src: /src/dovecot/src/lib/test-file-cache.c:75,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:77,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-file-cache.c:77,1
    - Dst: file_cache_free
      Src: /src/dovecot/src/lib/test-file-cache.c:78,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-cache.c:79,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib/test-file-cache.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:83,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/test-file-cache.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:84,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-file-cache.c:84,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-file-cache.c:85,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-file-cache.c:86,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-cache.c:88,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 89
    functionName: test_file_cache_write_read
    functionSourceFile: /src/dovecot/src/lib/test-file-cache.c
    functionUses: 0
    functionsReached:
    - o_stream_create_file
    - i_unlink
    - test_assert
    - file_cache_new_path
    - i_close_fd
    - test_dir_prepend
    - test_end
    - i_stream_read_more
    - i_stream_destroy
    - file_cache_write
    - file_cache_read
    - open
    - o_stream_nsend_str
    - i_assert
    - o_stream_destroy
    - file_cache_free
    - i_stream_create_file
    - o_stream_finish
    - memcmp
    - file_cache_get_map
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_file_cache_write_read(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-cache.c:93,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-cache.c:95,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib/test-file-cache.c:98,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-file-cache.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:100,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-file-cache.c:100,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-file-cache.c:101,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-file-cache.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:104,1
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib/test-file-cache.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:109,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:109,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:111,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-file-cache.c:111,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib/test-file-cache.c:114,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-file-cache.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:116,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-file-cache.c:116,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-file-cache.c:117,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:120,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-file-cache.c:120,1
    - Dst: file_cache_invalidate
      Src: /src/dovecot/src/lib/test-file-cache.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:124,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:124,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:127,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-file-cache.c:127,1
    - Dst: file_cache_free
      Src: /src/dovecot/src/lib/test-file-cache.c:128,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-cache.c:129,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-file-cache.c:130,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-cache.c:132,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 133
    functionName: test_file_cache_read_invalidate
    functionSourceFile: /src/dovecot/src/lib/test-file-cache.c
    functionUses: 0
    functionsReached:
    - file_cache_get_map
    - file_cache_read
    - file_cache_free
    - file_cache_new_path
    - o_stream_create_file
    - open
    - i_close_fd
    - test_dir_prepend
    - o_stream_finish
    - file_cache_invalidate
    - i_unlink
    - test_end
    - test_assert
    - memcmp
    - o_stream_nsend_str
    - i_assert
    - o_stream_destroy
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_file_cache_read_invalidate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-cache.c:137,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-cache.c:139,1
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib/test-file-cache.c:141,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib/test-file-cache.c:142,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-file-cache.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:148,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-file-cache.c:148,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-file-cache.c:149,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-file-cache.c:151,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:152,1
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib/test-file-cache.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:156,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:156,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:157,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:159,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:159,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:161,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:161,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:165,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:167,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/test-file-cache.c:172,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-file-cache.c:173,1
    - Dst: file_cache_write
      Src: /src/dovecot/src/lib/test-file-cache.c:175,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:176,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/test-file-cache.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:178,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/test-file-cache.c:178,1
    - Dst: file_cache_invalidate
      Src: /src/dovecot/src/lib/test-file-cache.c:180,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:182,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:182,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:183,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/test-file-cache.c:184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:185,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/test-file-cache.c:185,1
    - Dst: file_cache_free
      Src: /src/dovecot/src/lib/test-file-cache.c:188,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-cache.c:189,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-file-cache.c:190,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-cache.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 192
    functionName: test_file_cache_multipage
    functionSourceFile: /src/dovecot/src/lib/test-file-cache.c
    functionUses: 0
    functionsReached:
    - o_stream_create_file
    - i_unlink
    - test_assert
    - CONST_PTR_OFFSET
    - memcpy
    - file_cache_new_path
    - i_close_fd
    - test_dir_prepend
    - file_cache_invalidate
    - test_end
    - mmap_get_page_size
    - file_cache_write
    - file_cache_read
    - open
    - strncmp
    - o_stream_nsend_str
    - i_assert
    - o_stream_destroy
    - file_cache_free
    - o_stream_finish
    - file_cache_get_map
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_file_cache_multipage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-cache.c:196,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-cache.c:199,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:200,1
    - Dst: access
      Src: /src/dovecot/src/lib/test-file-cache.c:200,1
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib/test-file-cache.c:201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:203,1
    - Dst: file_cache_set_size
      Src: /src/dovecot/src/lib/test-file-cache.c:203,1
    - Dst: file_cache_write
      Src: /src/dovecot/src/lib/test-file-cache.c:204,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:208,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-file-cache.c:208,1
    - Dst: file_cache_free
      Src: /src/dovecot/src/lib/test-file-cache.c:210,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/test-file-cache.c:211,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-cache.c:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 213
    functionName: test_file_cache_anon
    functionSourceFile: /src/dovecot/src/lib/test-file-cache.c
    functionUses: 0
    functionsReached:
    - access
    - file_cache_set_size
    - file_cache_write
    - file_cache_free
    - file_cache_new_path
    - test_dir_prepend
    - test_end
    - i_unlink_if_exists
    - test_assert
    - memcmp
    - file_cache_get_map
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_file_cache_anon(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-cache.c:217,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-cache.c:219,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:220,1
    - Dst: access
      Src: /src/dovecot/src/lib/test-file-cache.c:220,1
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib/test-file-cache.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:223,1
    - Dst: file_cache_set_size
      Src: /src/dovecot/src/lib/test-file-cache.c:223,1
    - Dst: file_cache_write
      Src: /src/dovecot/src/lib/test-file-cache.c:224,1
    - Dst: o_stream_create_file
      Src: /src/dovecot/src/lib/test-file-cache.c:227,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-file-cache.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:229,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-file-cache.c:229,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-file-cache.c:230,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-file-cache.c:232,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:233,1
    - Dst: file_cache_set_fd
      Src: /src/dovecot/src/lib/test-file-cache.c:236,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:237,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:237,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:239,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:240,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-file-cache.c:240,1
    - Dst: file_cache_free
      Src: /src/dovecot/src/lib/test-file-cache.c:242,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-cache.c:243,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-file-cache.c:244,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-cache.c:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 246
    functionName: test_file_cache_switch_fd
    functionSourceFile: /src/dovecot/src/lib/test-file-cache.c
    functionUses: 0
    functionsReached:
    - o_stream_create_file
    - i_unlink
    - test_assert
    - file_cache_new_path
    - i_close_fd
    - test_dir_prepend
    - test_end
    - access
    - file_cache_set_size
    - file_cache_write
    - file_cache_read
    - open
    - o_stream_nsend_str
    - i_assert
    - o_stream_destroy
    - file_cache_set_fd
    - file_cache_free
    - o_stream_finish
    - memcmp
    - file_cache_get_map
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_file_cache_switch_fd(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-cache.c:250,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-cache.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:254,1
    - Dst: access
      Src: /src/dovecot/src/lib/test-file-cache.c:254,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-file-cache.c:255,1
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib/test-file-cache.c:256,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-file-cache.c:261,1
    - Dst: strerror
      Src: /src/dovecot/src/lib/test-file-cache.c:262,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-file-cache.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:264,1
    - Dst: file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:264,1
    - Dst: file_cache_get_map
      Src: /src/dovecot/src/lib/test-file-cache.c:265,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:266,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:267,1
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib/test-file-cache.c:270,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:273,1
    - Dst: getrlimit
      Src: /src/dovecot/src/lib/test-file-cache.c:273,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-file-cache.c:278,1
    - Dst: strerror
      Src: /src/dovecot/src/lib/test-file-cache.c:279,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:280,1
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/test-file-cache.c:280,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-file-cache.c:281,1
    - Dst: file_cache_set_size
      Src: /src/dovecot/src/lib/test-file-cache.c:282,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-file-cache.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:287,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:288,1
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/test-file-cache.c:288,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-file-cache.c:291,1
    - Dst: strerror
      Src: /src/dovecot/src/lib/test-file-cache.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:293,1
    - Dst: file_cache_set_size
      Src: /src/dovecot/src/lib/test-file-cache.c:293,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:294,1
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/test-file-cache.c:294,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-file-cache.c:295,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:296,1
    - Dst: file_cache_set_size
      Src: /src/dovecot/src/lib/test-file-cache.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-cache.c:297,1
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/test-file-cache.c:297,1
    - Dst: file_cache_free
      Src: /src/dovecot/src/lib/test-file-cache.c:301,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-cache.c:302,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/test-file-cache.c:303,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-cache.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 248
    functionDepth: 3
    functionLinenumber: 248
    functionLinenumberEnd: 305
    functionName: test_file_cache_errors
    functionSourceFile: /src/dovecot/src/lib/test-file-cache.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - test_assert
    - test_expect_no_more_errors
    - file_cache_new_path
    - i_close_fd
    - strerror
    - getrlimit
    - test_dir_prepend
    - test_expect_error_string
    - test_end
    - mmap_get_page_size
    - access
    - file_cache_set_size
    - file_cache_read
    - open
    - i_unlink_if_exists
    - file_cache_free
    - setrlimit
    - file_cache_get_map
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_file_cache_errors(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_file_cache_read
      Src: /src/dovecot/src/lib/test-file-cache.c:309,1
    - Dst: test_file_cache_write_read
      Src: /src/dovecot/src/lib/test-file-cache.c:310,1
    - Dst: test_file_cache_read_invalidate
      Src: /src/dovecot/src/lib/test-file-cache.c:311,1
    - Dst: test_file_cache_multipage
      Src: /src/dovecot/src/lib/test-file-cache.c:312,1
    - Dst: test_file_cache_anon
      Src: /src/dovecot/src/lib/test-file-cache.c:313,1
    - Dst: test_file_cache_switch_fd
      Src: /src/dovecot/src/lib/test-file-cache.c:314,1
    - Dst: test_file_cache_errors
      Src: /src/dovecot/src/lib/test-file-cache.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 307
    functionDepth: 4
    functionLinenumber: 307
    functionLinenumberEnd: 316
    functionName: test_file_cache
    functionSourceFile: /src/dovecot/src/lib/test-file-cache.c
    functionUses: 0
    functionsReached:
    - test_file_cache_anon
    - test_file_cache_multipage
    - test_file_cache_errors
    - test_file_cache_write_read
    - test_file_cache_read_invalidate
    - test_file_cache_switch_fd
    - test_file_cache_read
    linkageType: ''
    returnType: void
    signature: void test_file_cache(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - page
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 9
    functionName: DOC_LINK
    functionSourceFile: /src/dovecot/src/lib/doc.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DOC_LINK(page)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fstream
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: IS_STREAM_EMPTY
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STREAM_EMPTY(fstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: MAX_SSIZE_T
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX_SSIZE_T(size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ostream-file.c:36,1
    - Dst: iostream_fd_unref
      Src: /src/dovecot/src/lib/ostream-file.c:39,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream-file.c:44,1
    - Dst: close
      Src: /src/dovecot/src/lib/ostream-file.c:44,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ostream-file.c:45,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib/ostream-file.c:46,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 52
    functionName: stream_closed
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 1
    functionsReached:
    - o_stream_get_name
    - i_error
    - io_remove
    - iostream_fd_unref
    - unlikely
    - close
    linkageType: ''
    returnType: void
    signature: void stream_closed(struct file_ostream *fstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:58,1
    - Dst: stream_closed
      Src: /src/dovecot/src/lib/ostream-file.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: o_stream_file_close
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - container_of
    - stream_closed
    linkageType: ''
    returnType: void
    signature: "void o_stream_file_close(struct iostream_private *stream,\n\t\t\t\tbool
      close_parent ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:66,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ostream-file.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 69
    functionName: o_stream_file_destroy
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void o_stream_file_destroy(struct iostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: file_buffer_get_used_size
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t file_buffer_get_used_size(struct file_ostream *fstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_STREAM_EMPTY
      Src: /src/dovecot/src/lib/ostream-file.c:89,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:95,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:102,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - fstream
    - size
    argTypes:
    - struct file_ostream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 116
    functionName: update_buffer
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 1
    functionsReached:
    - i_assert
    - IS_STREAM_EMPTY
    linkageType: ''
    returnType: void
    signature: void update_buffer(struct file_ostream *fstream, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_set_cork
      Src: /src/dovecot/src/lib/ostream-file.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 128
    functionName: o_stream_socket_cork
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - net_set_cork
    linkageType: ''
    returnType: void
    signature: void o_stream_socket_cork(struct file_ostream *fstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/dovecot/src/lib/ostream-file.c:137,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream-file.c:139,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream-file.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 153
    functionName: o_stream_lseek
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - lseek
    - io_stream_set_error
    linkageType: ''
    returnType: int
    signature: int o_stream_lseek(struct file_ostream *fstream)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:166,1
    - Dst: write
      Src: /src/dovecot/src/lib/ostream-file.c:171,1
    - Dst: pwrite
      Src: /src/dovecot/src/lib/ostream-file.c:176,1
    - Dst: o_stream_lseek
      Src: /src/dovecot/src/lib/ostream-file.c:180,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/ostream-file.c:181,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/ostream-file.c:181,1
    - Dst: writev
      Src: /src/dovecot/src/lib/ostream-file.c:192,1
    - Dst: writev
      Src: /src/dovecot/src/lib/ostream-file.c:209,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:222,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ostream-file.c:223,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 4
    argNames:
    - fstream
    - iov
    - iov_count
    - error_r
    argTypes:
    - struct file_ostream*
    - struct const_iovec*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 226
    functionName: o_stream_file_writev
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_lseek
    - pwrite
    - o_stream_get_error
    - writev
    - t_strdup_printf
    - write
    - t_strdup
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_file_writev(struct file_ostream *fstream,\n\t\t\t
      \    const struct const_iovec *iov,\n\t\t\t     unsigned int iov_count,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_socket_cork
      Src: /src/dovecot/src/lib/ostream-file.c:242,1
    - Dst: net_set_tcp_nodelay
      Src: /src/dovecot/src/lib/ostream-file.c:246,1
    - Dst: struct file_ostream*::writev
      Src: /src/dovecot/src/lib/ostream-file.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:260,1
    - Dst: o_stream_file_writev_full
      Src: /src/dovecot/src/lib/ostream-file.c:264,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream-file.c:270,1
    - Dst: stream_closed
      Src: /src/dovecot/src/lib/ostream-file.c:272,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream-file.c:275,1
    - Dst: stream_closed
      Src: /src/dovecot/src/lib/ostream-file.c:278,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:292,1
    - Dst: o_stream_file_writev_full
      Src: /src/dovecot/src/lib/ostream-file.c:294,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/ostream-file.c:300,1
    - Dst: o_stream_file_writev_full
      Src: /src/dovecot/src/lib/ostream-file.c:302,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:304,1
    - Dst: o_stream_file_writev_full
      Src: /src/dovecot/src/lib/ostream-file.c:308,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:313,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:319,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 61
    argCount: 3
    argNames:
    - fstream
    - iov
    - iov_count
    argTypes:
    - struct file_ostream*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 322
    functionName: o_stream_file_writev_full
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 1
    functionsReached:
    - struct file_ostream*::writev
    - io_stream_set_error
    - net_set_tcp_nodelay
    - unlikely
    - o_stream_socket_cork
    - o_stream_file_writev_full
    - i_assert
    - CONST_PTR_OFFSET
    - stream_closed
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_file_writev_full(struct file_ostream *fstream,\n\t\t\t\t
      \  const struct const_iovec *iov,\n\t\t\t\t   unsigned int iov_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_STREAM_EMPTY
      Src: /src/dovecot/src/lib/ostream-file.c:328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - fstream
    - iov
    argTypes:
    - struct file_ostream*
    - struct const_iovec[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 346
    functionName: o_stream_fill_iovec
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - IS_STREAM_EMPTY
    linkageType: ''
    returnType: int
    signature: "int o_stream_fill_iovec(struct file_ostream *fstream,\n\t\t\t       struct
      const_iovec iov[2])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_fill_iovec
      Src: /src/dovecot/src/lib/ostream-file.c:354,1
    - Dst: o_stream_file_writev_full
      Src: /src/dovecot/src/lib/ostream-file.c:356,1
    - Dst: update_buffer
      Src: /src/dovecot/src/lib/ostream-file.c:360,1
    - Dst: IS_STREAM_EMPTY
      Src: /src/dovecot/src/lib/ostream-file.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 348
    functionDepth: 3
    functionLinenumber: 348
    functionLinenumberEnd: 364
    functionName: buffer_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 2
    functionsReached:
    - update_buffer
    - IS_STREAM_EMPTY
    - o_stream_file_writev_full
    - o_stream_fill_iovec
    linkageType: ''
    returnType: int
    signature: int buffer_flush(struct file_ostream *fstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_set_tcp_nodelay
      Src: /src/dovecot/src/lib/ostream-file.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 378
    functionName: o_stream_tcp_flush_via_nodelay
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - net_set_tcp_nodelay
    linkageType: ''
    returnType: void
    signature: void o_stream_tcp_flush_via_nodelay(struct file_ostream *fstream)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:383,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ostream-file.c:389,1
    - Dst: buffer_flush
      Src: /src/dovecot/src/lib/ostream-file.c:392,1
    - Dst: io_add_to
      Src: /src/dovecot/src/lib/ostream-file.c:397,1
    - Dst: io_stream_get_ioloop
      Src: /src/dovecot/src/lib/ostream-file.c:398,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:409,1
    - Dst: net_set_cork
      Src: /src/dovecot/src/lib/ostream-file.c:410,1
    - Dst: o_stream_tcp_flush_via_nodelay
      Src: /src/dovecot/src/lib/ostream-file.c:417,1
    - Dst: net_set_tcp_quickack
      Src: /src/dovecot/src/lib/ostream-file.c:422,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 29
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 380
    functionDepth: 4
    functionLinenumber: 380
    functionLinenumberEnd: 427
    functionName: o_stream_file_cork
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_tcp_flush_via_nodelay
    - container_of
    - io_stream_get_ioloop
    - io_add_to
    - net_set_tcp_quickack
    - io_remove
    - buffer_flush
    - net_set_cork
    - i_assert
    linkageType: ''
    returnType: void
    signature: void o_stream_file_cork(struct ostream_private *stream, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:432,1
    - Dst: buffer_flush
      Src: /src/dovecot/src/lib/ostream-file.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 429
    functionDepth: 4
    functionLinenumber: 429
    functionLinenumberEnd: 435
    functionName: o_stream_file_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - buffer_flush
    - container_of
    linkageType: ''
    returnType: int
    signature: int o_stream_file_flush(struct ostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:441,1
    - Dst: io_add_to
      Src: /src/dovecot/src/lib/ostream-file.c:446,1
    - Dst: io_stream_get_ioloop
      Src: /src/dovecot/src/lib/ostream-file.c:446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 450
    functionName: o_stream_file_flush_pending
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_stream_get_ioloop
    - io_add_to
    linkageType: ''
    returnType: void
    signature: void o_stream_file_flush_pending(struct ostream_private *stream, bool
      set)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 464
    functionName: get_unused_space
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t get_unused_space(const struct file_ostream *fstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:470,1
    - Dst: get_unused_space
      Src: /src/dovecot/src/lib/ostream-file.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 473
    functionName: o_stream_file_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - get_unused_space
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_file_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:478,1
    - Dst: buffer_flush
      Src: /src/dovecot/src/lib/ostream-file.c:489,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - stream
    - offset
    argTypes:
    - struct ostream_private*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 495
    functionName: o_stream_file_seek
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - buffer_flush
    - container_of
    linkageType: ''
    returnType: int
    signature: int o_stream_file_seek(struct ostream_private *stream, uoff_t offset)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/ostream-file.c:501,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-file.c:507,1
    - Dst: i_realloc
      Src: /src/dovecot/src/lib/ostream-file.c:516,1
    - Dst: IS_STREAM_EMPTY
      Src: /src/dovecot/src/lib/ostream-file.c:519,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/ostream-file.c:522,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - fstream
    - bytes
    argTypes:
    - struct file_ostream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 529
    functionName: o_stream_grow_buffer
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - memmove
    - I_MIN
    - nearest_power
    - IS_STREAM_EMPTY
    - i_realloc
    linkageType: ''
    returnType: void
    signature: void o_stream_grow_buffer(struct file_ostream *fstream, size_t bytes)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/ostream-file.c:544,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-file.c:546,1
    - Dst: struct file_ostream*::ostream::callback
      Src: /src/dovecot/src/lib/ostream-file.c:548,1
    - Dst: o_stream_file_flush
      Src: /src/dovecot/src/lib/ostream-file.c:550,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/ostream-file.c:552,1
    - Dst: IS_STREAM_EMPTY
      Src: /src/dovecot/src/lib/ostream-file.c:557,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ostream-file.c:558,1
    - Dst: io_add_to
      Src: /src/dovecot/src/lib/ostream-file.c:564,1
    - Dst: io_stream_get_ioloop
      Src: /src/dovecot/src/lib/ostream-file.c:564,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-file.c:570,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 531
    functionDepth: 5
    functionLinenumber: 531
    functionLinenumberEnd: 571
    functionName: stream_send_io
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - io_stream_get_ioloop
    - io_add_to
    - o_stream_uncork
    - io_remove
    - o_stream_unref
    - o_stream_cork
    - o_stream_ref
    - o_stream_file_flush
    - IS_STREAM_EMPTY
    - struct file_ostream*::ostream::callback
    linkageType: ''
    returnType: void
    signature: void stream_send_io(struct file_ostream *fstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_unused_space
      Src: /src/dovecot/src/lib/ostream-file.c:580,1
    - Dst: o_stream_grow_buffer
      Src: /src/dovecot/src/lib/ostream-file.c:582,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/ostream-file.c:592,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/ostream-file.c:593,1
    - Dst: io_add_to
      Src: /src/dovecot/src/lib/ostream-file.c:607,1
    - Dst: io_stream_get_ioloop
      Src: /src/dovecot/src/lib/ostream-file.c:607,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 3
    argNames:
    - fstream
    - data
    - size
    argTypes:
    - struct file_ostream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 613
    functionName: o_stream_add
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - memcpy
    - get_unused_space
    - o_stream_grow_buffer
    - io_add_to
    - io_stream_get_ioloop
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: size_t
    signature: "size_t o_stream_add(struct file_ostream *fstream,\n\t\t\t   const
      void *data, size_t size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:620,1
    - Dst: get_unused_space
      Src: /src/dovecot/src/lib/ostream-file.c:629,1
    - Dst: IS_STREAM_EMPTY
      Src: /src/dovecot/src/lib/ostream-file.c:629,1
    - Dst: o_stream_file_flush
      Src: /src/dovecot/src/lib/ostream-file.c:630,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-file.c:634,1
    - Dst: IS_STREAM_EMPTY
      Src: /src/dovecot/src/lib/ostream-file.c:636,1
    - Dst: o_stream_file_writev_full
      Src: /src/dovecot/src/lib/ostream-file.c:639,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:651,1
    - Dst: o_stream_add
      Src: /src/dovecot/src/lib/ostream-file.c:653,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/ostream-file.c:654,1
    - Dst: o_stream_add
      Src: /src/dovecot/src/lib/ostream-file.c:671,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:677,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:678,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 615
    functionDepth: 5
    functionLinenumber: 615
    functionLinenumberEnd: 680
    functionName: o_stream_file_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_add
    - get_unused_space
    - container_of
    - i_assert
    - I_MIN
    - o_stream_file_writev_full
    - o_stream_file_flush
    - IS_STREAM_EMPTY
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_file_sendv(struct ostream_private *stream,\n\t\t\t\t
      \  const struct const_iovec *iov,\n\t\t\t\t   unsigned int iov_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:690,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-file.c:696,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/ostream-file.c:697,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/ostream-file.c:698,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-file.c:703,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/ostream-file.c:704,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - fstream
    - data
    - size
    - pos
    argTypes:
    - struct file_ostream*
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 708
    functionName: o_stream_file_update_buffer
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - memcpy
    - I_MIN
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: size_t
    signature: "size_t o_stream_file_update_buffer(struct file_ostream *fstream,\n\t\t\t
      \   const void *data, size_t size, size_t pos)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:715,1
    - Dst: file_buffer_get_used_size
      Src: /src/dovecot/src/lib/ostream-file.c:719,1
    - Dst: o_stream_file_update_buffer
      Src: /src/dovecot/src/lib/ostream-file.c:731,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/ostream-file.c:732,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/ostream-file.c:743,1
    - Dst: o_stream_file_flush
      Src: /src/dovecot/src/lib/ostream-file.c:758,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib/ostream-file.c:761,1
    - Dst: stream_closed
      Src: /src/dovecot/src/lib/ostream-file.c:763,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - stream
    - data
    - size
    - offset
    argTypes:
    - struct ostream_private*
    - void*
    - size_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 710
    functionDepth: 5
    functionLinenumber: 710
    functionLinenumberEnd: 767
    functionName: o_stream_file_write_at
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - container_of
    - pwrite_full
    - o_stream_file_update_buffer
    - file_buffer_get_used_size
    - o_stream_file_flush
    - CONST_PTR_OFFSET
    - stream_closed
    linkageType: ''
    returnType: int
    signature: "int o_stream_file_write_at(struct ostream_private *stream,\n\t\t       const
      void *data, size_t size, uoff_t offset)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:775,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib/ostream-file.c:780,1
    - Dst: o_stream_socket_cork
      Src: /src/dovecot/src/lib/ostream-file.c:789,1
    - Dst: buffer_flush
      Src: /src/dovecot/src/lib/ostream-file.c:792,1
    - Dst: o_stream_lseek
      Src: /src/dovecot/src/lib/ostream-file.c:800,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/lib/ostream-file.c:806,1
    - Dst: safe_sendfile
      Src: /src/dovecot/src/lib/ostream-file.c:811,1
    - Dst: MAX_SSIZE_T
      Src: /src/dovecot/src/lib/ostream-file.c:812,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/ostream-file.c:816,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream-file.c:835,1
    - Dst: stream_closed
      Src: /src/dovecot/src/lib/ostream-file.c:840,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/ostream-file.c:851,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:857,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 70
    argCount: 4
    argNames:
    - outstream
    - instream
    - in_fd
    - res_r
    argTypes:
    - struct ostream_private*
    - struct istream*
    - int
    - enum ostream_send_istream_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 769
    functionDepth: 4
    functionLinenumber: 769
    functionLinenumberEnd: 865
    functionName: io_stream_sendfile
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_lseek
    - container_of
    - i_stream_get_absolute_offset
    - i_assert
    - io_stream_set_error
    - MAX_SSIZE_T
    - o_stream_socket_cork
    - i_stream_get_size
    - buffer_flush
    - i_stream_seek
    - stream_closed
    - safe_sendfile
    linkageType: ''
    returnType: bool
    signature: "bool io_stream_sendfile(struct ostream_private *outstream,\n\t\t   struct
      istream *instream, int in_fd,\n\t\t   enum ostream_send_istream_result *res_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:872,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:878,1
    - Dst: IS_STREAM_EMPTY
      Src: /src/dovecot/src/lib/ostream-file.c:878,1
    - Dst: o_stream_grow_buffer
      Src: /src/dovecot/src/lib/ostream-file.c:884,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:905,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/ostream-file.c:907,1
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib/ostream-file.c:911,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ostream-file.c:913,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:919,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/ostream-file.c:921,1
    - Dst: pwrite_full
      Src: /src/dovecot/src/lib/ostream-file.c:935,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/ostream-file.c:941,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/ostream-file.c:944,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 3
    argNames:
    - outstream
    - instream
    - in_size
    argTypes:
    - struct ostream_private*
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 867
    functionDepth: 2
    functionLinenumber: 867
    functionLinenumberEnd: 949
    functionName: io_stream_copy_backwards
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - memcpy
    - container_of
    - o_stream_grow_buffer
    - i_unreached
    - IS_STREAM_EMPTY
    - pwrite_full
    - i_stream_skip
    - i_stream_seek
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: enum ostream_send_istream_result
    signature: "enum ostream_send_istream_result io_stream_copy_backwards(struct ostream_private
      *outstream,\n\t\t\t struct istream *instream, uoff_t in_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib/ostream-file.c:960,1
    - Dst: io_stream_copy
      Src: /src/dovecot/src/lib/ostream-file.c:967,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:969,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/lib/ostream-file.c:971,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-file.c:980,1
    - Dst: io_stream_copy_backwards
      Src: /src/dovecot/src/lib/ostream-file.c:981,1
    - Dst: io_stream_copy
      Src: /src/dovecot/src/lib/ostream-file.c:984,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - outstream
    - instream
    argTypes:
    - struct ostream_private*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 951
    functionDepth: 3
    functionLinenumber: 951
    functionLinenumberEnd: 986
    functionName: io_stream_copy_same_stream
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - i_stream_get_absolute_offset
    - io_stream_copy_backwards
    - i_stream_get_size
    - io_stream_copy
    - i_assert
    linkageType: ''
    returnType: enum ostream_send_istream_result
    signature: "enum ostream_send_istream_result io_stream_copy_same_stream(struct
      ostream_private *outstream,\n\t\t\t   struct istream *instream)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:993,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/ostream-file.c:998,1
    - Dst: io_stream_sendfile
      Src: /src/dovecot/src/lib/ostream-file.c:1001,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/ostream-file.c:1009,1
    - Dst: io_stream_copy
      Src: /src/dovecot/src/lib/ostream-file.c:1012,1
    - Dst: io_stream_copy_same_stream
      Src: /src/dovecot/src/lib/ostream-file.c:1013,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - outstream
    - instream
    argTypes:
    - struct ostream_private*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 988
    functionDepth: 5
    functionLinenumber: 988
    functionLinenumberEnd: 1014
    functionName: o_stream_file_send_istream
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_get_fd
    - io_stream_copy_same_stream
    - io_stream_copy
    - io_stream_sendfile
    linkageType: ''
    returnType: enum ostream_send_istream_result
    signature: "enum ostream_send_istream_result o_stream_file_send_istream(struct
      ostream_private *outstream,\n\t\t\t   struct istream *instream)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-file.c:1020,1
    - Dst: io_loop_move_io_to
      Src: /src/dovecot/src/lib/ostream-file.c:1023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct ostream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1024
    functionName: o_stream_file_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io_to
    - container_of
    linkageType: ''
    returnType: void
    signature: "void o_stream_file_switch_ioloop_to(struct ostream_private *stream,\n\t\t\t\t\t
      \  struct ioloop *ioloop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-file.c:1053,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 4
    argNames:
    - fstream
    - fd
    - max_buffer_size
    - autoclose_fd
    argTypes:
    - struct file_ostream*
    - int
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1026
    functionDepth: 1
    functionLinenumber: 1026
    functionLinenumberEnd: 1059
    functionName: o_stream_create_file_common
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_create
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_file_common(struct file_ostream
      *fstream,\n\tint fd, size_t max_buffer_size, bool autoclose_fd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib/ostream-file.c:1066,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-file.c:1072,1
    - Dst: S_ISREG
      Src: /src/dovecot/src/lib/ostream-file.c:1075,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - fstream
    argTypes:
    - struct file_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1081
    functionName: fstream_init_file
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - fstat
    - S_ISREG
    linkageType: ''
    returnType: void
    signature: void fstream_init_file(struct file_ostream *fstream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-file.c:1091,1
    - Dst: iostream_fd_ref
      Src: /src/dovecot/src/lib/ostream-file.c:1094,1
    - Dst: o_stream_create_file_common
      Src: /src/dovecot/src/lib/ostream-file.c:1096,1
    - Dst: lseek
      Src: /src/dovecot/src/lib/ostream-file.c:1099,1
    - Dst: fstream_init_file
      Src: /src/dovecot/src/lib/ostream-file.c:1104,1
    - Dst: net_getsockname
      Src: /src/dovecot/src/lib/ostream-file.c:1108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - fd
    - ref
    - max_buffer_size
    - autoclose_fd
    argTypes:
    - int
    - struct iostream_fd*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1083
    functionDepth: 2
    functionLinenumber: 1083
    functionLinenumberEnd: 1123
    functionName: o_stream_create_fd_common
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - lseek
    - iostream_fd_ref
    - net_getsockname
    - i_new
    - fstream_init_file
    - o_stream_create_file_common
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_fd_common(int fd, struct iostream_fd
      *ref,\n\t\t\t  size_t max_buffer_size, bool autoclose_fd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_fd_common
      Src: /src/dovecot/src/lib/ostream-file.c:1128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - max_buffer_size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1125
    functionDepth: 3
    functionLinenumber: 1125
    functionLinenumberEnd: 1129
    functionName: o_stream_create_fd
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 28
    functionsReached:
    - o_stream_create_fd_common
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_fd(int fd, size_t max_buffer_size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_fd_common
      Src: /src/dovecot/src/lib/ostream-file.c:1134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - fd
    - max_buffer_size
    argTypes:
    - int*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1131
    functionDepth: 3
    functionLinenumber: 1131
    functionLinenumberEnd: 1138
    functionName: o_stream_create_fd_autoclose
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 7
    functionsReached:
    - o_stream_create_fd_common
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_fd_autoclose(int *fd, size_t max_buffer_size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_fd_common
      Src: /src/dovecot/src/lib/ostream-file.c:1143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - max_buffer_size
    argTypes:
    - struct iostream_fd*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1140
    functionDepth: 3
    functionLinenumber: 1140
    functionLinenumberEnd: 1144
    functionName: o_stream_create_fd_ref_autoclose
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd_common
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *o_stream_create_fd_ref_autoclose(struct iostream_fd
      *ref,\n\t\t\t\t\t\t size_t max_buffer_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/dovecot/src/lib/ostream-file.c:1153,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-file.c:1155,1
    - Dst: o_stream_create_file_common
      Src: /src/dovecot/src/lib/ostream-file.c:1156,1
    - Dst: fstream_init_file
      Src: /src/dovecot/src/lib/ostream-file.c:1157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - fd
    - offset
    - autoclose_fd
    argTypes:
    - int
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1163
    functionName: o_stream_create_fd_file
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 18
    functionsReached:
    - fstream_init_file
    - lseek
    - i_new
    - o_stream_create_file_common
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_fd_file(int fd, uoff_t offset, bool autoclose_fd)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib/ostream-file.c:1169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - offset
    argTypes:
    - int*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1165
    functionDepth: 3
    functionLinenumber: 1165
    functionLinenumberEnd: 1172
    functionName: o_stream_create_fd_file_autoclose
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd_file
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_fd_file_autoclose(int *fd, uoff_t offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib/ostream-file.c:1179,1
    - Dst: open
      Src: /src/dovecot/src/lib/ostream-file.c:1183,1
    - Dst: o_stream_create_error
      Src: /src/dovecot/src/lib/ostream-file.c:1184,1
    - Dst: o_stream_create_fd_file_autoclose
      Src: /src/dovecot/src/lib/ostream-file.c:1185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - path
    - offset
    - mode
    - flags
    argTypes:
    - char*
    - uoff_t
    - mode_t
    - enum ostream_create_file_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1174
    functionDepth: 4
    functionLinenumber: 1174
    functionLinenumberEnd: 1186
    functionName: o_stream_create_file
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 8
    functionsReached:
    - o_stream_create_fd_file_autoclose
    - open
    - HAS_ANY_BITS
    - o_stream_create_error
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *o_stream_create_file(const char *path, uoff_t offset,
      mode_t mode,\n\t\t\t\t     enum ostream_create_file_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-file.c:1193,1
    - Dst: o_stream_create_file_common
      Src: /src/dovecot/src/lib/ostream-file.c:1194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1188
    functionDepth: 2
    functionLinenumber: 1188
    functionLinenumberEnd: 1199
    functionName: o_stream_create_fd_blocking
    functionSourceFile: /src/dovecot/src/lib/ostream-file.c
    functionUses: 1
    functionsReached:
    - i_new
    - o_stream_create_file_common
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_fd_blocking(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: pool_unsafe_data_stack_get_name
    functionSourceFile: /src/dovecot/src/lib/mempool-unsafe-datastack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pool_unsafe_data_stack_get_name(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: pool_unsafe_data_stack_ref
    functionSourceFile: /src/dovecot/src/lib/mempool-unsafe-datastack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_unsafe_data_stack_ref(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/mempool-unsafe-datastack.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 5
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: pool_unsafe_data_stack_malloc
    functionSourceFile: /src/dovecot/src/lib/mempool-unsafe-datastack.c
    functionUses: 0
    functionsReached:
    - t_malloc0
    linkageType: ''
    returnType: void
    signature: "void *pool_unsafe_data_stack_malloc(pool_t pool ATTR_UNUSED,\n\t\t\t\t\t
      \  size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: pool_unsafe_data_stack_free
    functionSourceFile: /src/dovecot/src/lib/mempool-unsafe-datastack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pool_unsafe_data_stack_free(pool_t pool ATTR_UNUSED,\n\t\t\t\t\tvoid
      *mem ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-unsafe-datastack.c:113,1
    - Dst: t_try_realloc
      Src: /src/dovecot/src/lib/mempool-unsafe-datastack.c:119,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/mempool-unsafe-datastack.c:120,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/mempool-unsafe-datastack.c:122,1
    - Dst: memset
      Src: /src/dovecot/src/lib/mempool-unsafe-datastack.c:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - mem
    - old_size
    - new_size
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 5
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: pool_unsafe_data_stack_realloc
    functionSourceFile: /src/dovecot/src/lib/mempool-unsafe-datastack.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_try_realloc
    - t_malloc_no0
    - memset
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void *pool_unsafe_data_stack_realloc(pool_t pool ATTR_UNUSED,\n\t\t\t\t\t
      \   void *mem,\n\t\t\t\t\t    size_t old_size, size_t new_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: pool_unsafe_data_stack_clear
    functionSourceFile: /src/dovecot/src/lib/mempool-unsafe-datastack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_unsafe_data_stack_clear(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/mempool-unsafe-datastack.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: pool_unsafe_data_stack_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool-unsafe-datastack.c
    functionUses: 0
    functionsReached:
    - t_get_bytes_available
    linkageType: ''
    returnType: size_t
    signature: size_t pool_unsafe_data_stack_get_max_easy_alloc_size(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cmsg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: CMSG_DATA
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_DATA(cmsg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - len
    - ','
    - align
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: MY_ALIGN
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MY_ALIGN(len, align)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: CMSG_SPACE
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_SPACE(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: CMSG_LEN
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_LEN(len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/dovecot/src/lib/fdpass.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/fdpass.c:112,1
    - Dst: memset
      Src: /src/dovecot/src/lib/fdpass.c:114,1
    - Dst: memset
      Src: /src/dovecot/src/lib/fdpass.c:124,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dovecot/src/lib/fdpass.c:128,1
    - Dst: CMSG_LEN
      Src: /src/dovecot/src/lib/fdpass.c:131,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/fdpass.c:132,1
    - Dst: CMSG_DATA
      Src: /src/dovecot/src/lib/fdpass.c:132,1
    - Dst: sendmsg
      Src: /src/dovecot/src/lib/fdpass.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 4
    argNames:
    - handle
    - send_fd
    - data
    - size
    argTypes:
    - int
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 141
    functionName: fd_send
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 3
    functionsReached:
    - memcpy
    - CMSG_SPACE
    - CMSG_FIRSTHDR
    - CMSG_LEN
    - sendmsg
    - CMSG_DATA
    - memset
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fd_send(int handle, int send_fd, const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cmsg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 147
    functionName: CHECK_CMSG
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_CMSG(cmsg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cmsg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 152
    functionName: CHECK_CMSG
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_CMSG(cmsg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/dovecot/src/lib/fdpass.c:160,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/fdpass.c:162,1
    - Dst: memset
      Src: /src/dovecot/src/lib/fdpass.c:164,1
    - Dst: memset
      Src: /src/dovecot/src/lib/fdpass.c:172,1
    - Dst: recvmsg
      Src: /src/dovecot/src/lib/fdpass.c:176,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dovecot/src/lib/fdpass.c:187,1
    - Dst: CHECK_CMSG
      Src: /src/dovecot/src/lib/fdpass.c:188,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/fdpass.c:191,1
    - Dst: CMSG_DATA
      Src: /src/dovecot/src/lib/fdpass.c:191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - handle
    - data
    - size
    - fd
    argTypes:
    - int
    - void*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 193
    functionName: fd_read
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 3
    functionsReached:
    - memcpy
    - CMSG_SPACE
    - CMSG_FIRSTHDR
    - memset
    - CMSG_DATA
    - CHECK_CMSG
    - recvmsg
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fd_read(int handle, void *data, size_t size, int *fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - int
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: fd_send
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t fd_send(int handle ATTR_UNUSED, int send_fd ATTR_UNUSED,\n\t\tconst
      void *data ATTR_UNUSED, size_t size ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - int
    - void*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 211
    functionName: fd_read
    functionSourceFile: /src/dovecot/src/lib/fdpass.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t fd_read(int handle ATTR_UNUSED, void *data ATTR_UNUSED,\n\t\tsize_t
      size ATTR_UNUSED, int *fd ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/dovecot/src/lib/unix-socket-create.c:16,1
    - Dst: net_listen_unix_unlink_stale
      Src: /src/dovecot/src/lib/unix-socket-create.c:17,1
    - Dst: umask
      Src: /src/dovecot/src/lib/unix-socket-create.c:18,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/unix-socket-create.c:21,1
    - Dst: chown
      Src: /src/dovecot/src/lib/unix-socket-create.c:27,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/unix-socket-create.c:28,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/unix-socket-create.c:29,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/unix-socket-create.c:29,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/unix-socket-create.c:30,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - path
    - mode
    - uid
    - gid
    - backlog
    argTypes:
    - char*
    - int
    - uid_t
    - gid_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 35
    functionName: unix_socket_create
    functionSourceFile: /src/dovecot/src/lib/unix-socket-create.c
    functionUses: 0
    functionsReached:
    - dec2str
    - i_error
    - net_listen_unix_unlink_stale
    - i_close_fd
    - umask
    - chown
    linkageType: ''
    returnType: int
    signature: "int unix_socket_create(const char *path, int mode,\n\t\t       uid_t
      uid, gid_t gid, int backlog)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:11,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:13,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:17,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:18,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:22,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:22,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:23,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:26,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:26,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:27,1
    - Dst: event_filter_merge
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:30,1
    - Dst: event_filter_export
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:33,1
    - Dst: event_filter_export
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:34,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:36,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - parent_str
    - child_str
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 7
    functionDepth: 3
    functionLinenumber: 7
    functionLinenumberEnd: 38
    functionName: filter_merge
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-merge.c
    functionUses: 3
    functionsReached:
    - t_str_new
    - t_strdup_printf
    - event_filter_create
    - event_filter_parse
    - test_out_quiet
    - event_filter_export
    - event_filter_merge
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: void filter_merge(const char *parent_str, const char *child_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:60,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:61,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:62,1
    - Dst: filter_merge
      Src: /src/dovecot/src/lib/test-event-filter-merge.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 40
    functionDepth: 4
    functionLinenumber: 40
    functionLinenumberEnd: 65
    functionName: test_event_filter_merge
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-merge.c
    functionUses: 0
    functionsReached:
    - filter_merge
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_merge(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gencat
    argTypes:
    - enum unicode_general_category
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 10
    functionName: unicode_general_category_is_group
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool unicode_general_category_is_group(enum unicode_general_category
      gencat)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cp
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 25
    functionName: unicode_code_point_get_data
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct unicode_code_point_data
    signature: 'struct unicode_code_point_data *

      unicode_code_point_get_data(uint32_t cp)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - cp_data
    argTypes:
    - struct unicode_code_point_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: unicode_code_point_data_is_assigned
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool unicode_code_point_data_is_assigned(\n\tconst struct unicode_code_point_data
      *cp_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cp_data
    - type_r
    - decomp_r
    argTypes:
    - struct unicode_code_point_data*
    - uint8_t*
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 53
    functionName: unicode_code_point_data_get_first_decomposition
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_code_point_data_get_first_decomposition(\n\tconst struct
      unicode_code_point_data *cp_data,\n\tuint8_t *type_r, const uint32_t **decomp_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - cp_data
    - canonical
    - decomp_r
    argTypes:
    - struct unicode_code_point_data*
    - bool
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 70
    functionName: unicode_code_point_data_get_full_decomposition
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_code_point_data_get_full_decomposition(\n\tconst struct
      unicode_code_point_data *cp_data, bool canonical,\n\tconst uint32_t **decomp_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - cp_data
    - second
    argTypes:
    - struct unicode_code_point_data*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 95
    functionName: unicode_code_point_data_find_composition
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t unicode_code_point_data_find_composition(\n\tconst struct
      unicode_code_point_data *cp_data, uint32_t second)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-data.h:100,1
    - Dst: unicode_code_point_data_is_assigned
      Src: /src/dovecot/src/lib/unicode-data.h:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cp
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: unicode_code_point_is_assigned
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 1
    functionsReached:
    - unicode_code_point_data_is_assigned
    - unicode_code_point_get_data
    linkageType: ''
    returnType: bool
    signature: bool unicode_code_point_is_assigned(uint32_t cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-data.h:110,1
    - Dst: unicode_code_point_data_get_full_decomposition
      Src: /src/dovecot/src/lib/unicode-data.h:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cp
    - canonical
    - decomp_r
    argTypes:
    - uint32_t
    - bool
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 114
    functionName: unicode_code_point_get_full_decomposition
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached:
    - unicode_code_point_data_get_full_decomposition
    - unicode_code_point_get_data
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_code_point_get_full_decomposition(uint32_t cp, bool
      canonical,\n\t\t\t\t\t  const uint32_t **decomp_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cp_data
    - map_r
    argTypes:
    - struct unicode_code_point_data*
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: unicode_code_point_data_get_uppercase_mapping
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_code_point_data_get_uppercase_mapping(\n\tconst struct
      unicode_code_point_data *cp_data,\n\tconst uint32_t **map_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cp_data
    - map_r
    argTypes:
    - struct unicode_code_point_data*
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: unicode_code_point_data_get_lowercase_mapping
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_code_point_data_get_lowercase_mapping(\n\tconst struct
      unicode_code_point_data *cp_data,\n\tconst uint32_t **map_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cp_data
    - map_r
    argTypes:
    - struct unicode_code_point_data*
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 150
    functionName: unicode_code_point_data_get_casefold_mapping
    functionSourceFile: /src/dovecot/src/lib/unicode-data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_code_point_data_get_casefold_mapping(\n\tconst struct
      unicode_code_point_data *cp_data,\n\tconst uint32_t **map_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/ipwd.c:20,1
    - Dst: i_realloc
      Src: /src/dovecot/src/lib/ipwd.c:23,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 25
    functionName: pw_init
    functionSourceFile: /src/dovecot/src/lib/ipwd.c
    functionUses: 0
    functionsReached:
    - i_realloc
    - nearest_power
    linkageType: ''
    returnType: void
    signature: void pw_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/ipwd.c:32,1
    - Dst: i_realloc
      Src: /src/dovecot/src/lib/ipwd.c:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 37
    functionName: gr_init
    functionSourceFile: /src/dovecot/src/lib/ipwd.c
    functionUses: 0
    functionsReached:
    - i_realloc
    - nearest_power
    linkageType: ''
    returnType: void
    signature: void gr_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/ipwd.c:41,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/ipwd.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: ipwd_deinit
    functionSourceFile: /src/dovecot/src/lib/ipwd.c
    functionUses: 0
    functionsReached:
    - i_free_and_null
    linkageType: ''
    returnType: void
    signature: void ipwd_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pw_init
      Src: /src/dovecot/src/lib/ipwd.c:51,1
    - Dst: getpwnam_r
      Src: /src/dovecot/src/lib/ipwd.c:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - name
    - pwd_r
    argTypes:
    - char*
    - struct passwd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 61
    functionName: i_getpwnam
    functionSourceFile: /src/dovecot/src/lib/ipwd.c
    functionUses: 5
    functionsReached:
    - pw_init
    - getpwnam_r
    linkageType: ''
    returnType: int
    signature: int i_getpwnam(const char *name, struct passwd *pwd_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pw_init
      Src: /src/dovecot/src/lib/ipwd.c:69,1
    - Dst: getpwuid_r
      Src: /src/dovecot/src/lib/ipwd.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - uid
    - pwd_r
    argTypes:
    - uid_t
    - struct passwd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 75
    functionName: i_getpwuid
    functionSourceFile: /src/dovecot/src/lib/ipwd.c
    functionUses: 1
    functionsReached:
    - pw_init
    - getpwuid_r
    linkageType: ''
    returnType: int
    signature: int i_getpwuid(uid_t uid, struct passwd *pwd_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gr_init
      Src: /src/dovecot/src/lib/ipwd.c:83,1
    - Dst: getgrnam_r
      Src: /src/dovecot/src/lib/ipwd.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - name
    - grp_r
    argTypes:
    - char*
    - struct group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: i_getgrnam
    functionSourceFile: /src/dovecot/src/lib/ipwd.c
    functionUses: 2
    functionsReached:
    - getgrnam_r
    - gr_init
    linkageType: ''
    returnType: int
    signature: int i_getgrnam(const char *name, struct group *grp_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gr_init
      Src: /src/dovecot/src/lib/ipwd.c:97,1
    - Dst: getgrgid_r
      Src: /src/dovecot/src/lib/ipwd.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - gid
    - grp_r
    argTypes:
    - gid_t
    - struct group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 103
    functionName: i_getgrgid
    functionSourceFile: /src/dovecot/src/lib/ipwd.c
    functionUses: 1
    functionsReached:
    - getgrgid_r
    - gr_init
    linkageType: ''
    returnType: int
    signature: int i_getgrgid(gid_t gid, struct group *grp_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_cache_new_path
      Src: /src/dovecot/src/lib/file-cache.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: file_cache_new
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 0
    functionsReached:
    - file_cache_new_path
    linkageType: ''
    returnType: struct file_cache
    signature: struct file_cache *file_cache_new(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/file-cache.c:29,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/file-cache.c:31,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/file-cache.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - path
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 34
    functionName: file_cache_new_path
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 9
    functionsReached:
    - i_strdup
    - buffer_create_dynamic
    - i_new
    linkageType: ''
    returnType: struct file_cache
    signature: struct file_cache *file_cache_new_path(int fd, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: munmap_anon
      Src: /src/dovecot/src/lib/file-cache.c:43,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-cache.c:44,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/file-cache.c:46,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/file-cache.c:47,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/file-cache.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _cache
    argTypes:
    - struct file_cache**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 49
    functionName: file_cache_free
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 8
    functionsReached:
    - munmap_anon
    - buffer_free
    - i_free
    - i_error
    linkageType: ''
    returnType: void
    signature: void file_cache_free(struct file_cache **_cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_cache_invalidate
      Src: /src/dovecot/src/lib/file-cache.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cache
    - fd
    argTypes:
    - struct file_cache*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: file_cache_set_fd
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 4
    functionsReached:
    - file_cache_invalidate
    linkageType: ''
    returnType: void
    signature: void file_cache_set_fd(struct file_cache *cache, int fd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib/file-cache.c:59,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:69,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-cache.c:74,1
    - Dst: mmap_anon
      Src: /src/dovecot/src/lib/file-cache.c:81,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-cache.c:83,1
    - Dst: mremap_anon
      Src: /src/dovecot/src/lib/file-cache.c:90,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-cache.c:93,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - cache
    - size
    argTypes:
    - struct file_cache*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 102
    functionName: file_cache_set_size
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 4
    functionsReached:
    - i_error
    - mmap_anon
    - mremap_anon
    - mmap_get_page_size
    - i_assert
    linkageType: ''
    returnType: int
    signature: int file_cache_set_size(struct file_cache *cache, uoff_t size)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib/file-cache.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:111,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-cache.c:129,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-cache.c:131,1
    - Dst: file_cache_set_size
      Src: /src/dovecot/src/lib/file-cache.c:142,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:147,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/file-cache.c:149,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/file-cache.c:154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:171,1
    - Dst: pread
      Src: /src/dovecot/src/lib/file-cache.c:182,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:191,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 70
    argCount: 3
    argNames:
    - cache
    - offset
    - size
    argTypes:
    - struct file_cache*
    - uoff_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 228
    functionName: file_cache_read
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 8
    functionsReached:
    - file_cache_set_size
    - PTR_OFFSET
    - i_error
    - buffer_get_space_unsafe
    - fstat
    - mmap_get_page_size
    - pread
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t file_cache_read(struct file_cache *cache, uoff_t offset, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cache
    - size_r
    argTypes:
    - struct file_cache*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: file_cache_get_map
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *file_cache_get_map(struct file_cache *cache, size_t *size_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib/file-cache.c:239,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:243,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:244,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:245,1
    - Dst: file_cache_set_size
      Src: /src/dovecot/src/lib/file-cache.c:247,1
    - Dst: file_cache_invalidate
      Src: /src/dovecot/src/lib/file-cache.c:250,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/file-cache.c:254,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/file-cache.c:254,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/file-cache.c:259,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/file-cache.c:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - cache
    - data
    - size
    - offset
    argTypes:
    - struct file_cache*
    - void*
    - size_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 279
    functionName: file_cache_write
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 5
    functionsReached:
    - memcpy
    - file_cache_set_size
    - PTR_OFFSET
    - buffer_get_space_unsafe
    - file_cache_invalidate
    - mmap_get_page_size
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void file_cache_write(struct file_cache *cache, const void *data,
      size_t size,\n\t\t      uoff_t offset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib/file-cache.c:283,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:290,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-cache.c:304,1
    - Dst: posix_madvise
      Src: /src/dovecot/src/lib/file-cache.c:312,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/file-cache.c:312,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/file-cache.c:316,1
    - Dst: memset
      Src: /src/dovecot/src/lib/file-cache.c:327,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 3
    argNames:
    - cache
    - offset
    - size
    argTypes:
    - struct file_cache*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 337
    functionName: file_cache_invalidate
    functionSourceFile: /src/dovecot/src/lib/file-cache.c
    functionUses: 6
    functionsReached:
    - PTR_OFFSET
    - buffer_get_space_unsafe
    - posix_madvise
    - mmap_get_page_size
    - memset
    - i_assert
    linkageType: ''
    returnType: void
    signature: void file_cache_invalidate(struct file_cache *cache, uoff_t offset,
      uoff_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/imem.c:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 10
    functionName: i_malloc
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 23
    functionsReached:
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void *i_malloc(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/imem.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mem
    - old_size
    - new_size
    argTypes:
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: i_realloc
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 5
    functionsReached:
    - p_realloc
    linkageType: ''
    returnType: void
    signature: void *i_realloc(void *mem, size_t old_size, size_t new_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/imem.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 20
    functionName: i_strdup
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 232
    functionsReached:
    - p_strdup
    linkageType: ''
    returnType: char
    signature: char *i_strdup(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_memdup
      Src: /src/dovecot/src/lib/imem.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: i_memdup
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 4
    functionsReached:
    - p_memdup
    linkageType: ''
    returnType: void
    signature: void *i_memdup(const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib/imem.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 30
    functionName: i_strdup_empty
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 3
    functionsReached:
    - p_strdup_empty
    linkageType: ''
    returnType: char
    signature: char *i_strdup_empty(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/imem.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - end
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: i_strdup_until
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 1
    functionsReached:
    - p_strdup_until
    linkageType: ''
    returnType: char
    signature: char *i_strdup_until(const void *str, const void *end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/imem.c:39,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib/imem.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - str
    - max_chars
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: i_strndup
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 10
    functionsReached:
    - i_assert
    - p_strndup
    linkageType: ''
    returnType: char
    signature: char *i_strndup(const void *str, size_t max_chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/imem.c:48,1
    - Dst: p_strdup_vprintf
      Src: /src/dovecot/src/lib/imem.c:49,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/imem.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 52
    functionName: i_strdup_printf
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 38
    functionsReached:
    - va_end
    - p_strdup_vprintf
    - va_start
    linkageType: ''
    returnType: char
    signature: char *i_strdup_printf(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_vprintf
      Src: /src/dovecot/src/lib/imem.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - format
    - args
    argTypes:
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: i_strdup_vprintf
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 7
    functionsReached:
    - p_strdup_vprintf
    linkageType: ''
    returnType: char
    signature: char *i_strdup_vprintf(const char *format, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/imem.c:65,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/imem.c:67,1
    - Dst: vstrconcat
      Src: /src/dovecot/src/lib/imem.c:70,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/imem.c:71,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/imem.c:72,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/imem.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - str1
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 59
    functionDepth: 5
    functionLinenumber: 59
    functionLinenumberEnd: 74
    functionName: i_strconcat
    functionSourceFile: /src/dovecot/src/lib/imem.c
    functionUses: 20
    functionsReached:
    - memcpy
    - vstrconcat
    - va_start
    - t_buffer_alloc
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: char
    signature: char *i_strconcat(const char *str1, ...)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/iostream-pump.c:33,1
    - Dst: o_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/iostream-pump.c:34,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/iostream-pump.c:35,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/iostream-pump.c:36,1
    - Dst: o_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/iostream-pump.c:37,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/iostream-pump.c:38,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/iostream-pump.c:39,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/iostream-pump.c:40,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/iostream-pump.c:44,1
    - Dst: struct iostream_pump*::callback
      Src: /src/dovecot/src/lib/iostream-pump.c:45,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/iostream-pump.c:49,1
    - Dst: struct iostream_pump*::callback
      Src: /src/dovecot/src/lib/iostream-pump.c:50,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:54,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/iostream-pump.c:56,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/iostream-pump.c:60,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/iostream-pump.c:62,1
    - Dst: struct iostream_pump*::callback
      Src: /src/dovecot/src/lib/iostream-pump.c:64,1
    - Dst: struct iostream_pump*::callback
      Src: /src/dovecot/src/lib/iostream-pump.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:78,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/iostream-pump.c:82,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 83
    functionName: iostream_pump_copy
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - i_unreached
    - o_stream_send_istream
    - I_MIN
    - o_stream_cork
    - io_remove
    - o_stream_finish
    - struct iostream_pump*::callback
    - o_stream_get_max_buffer_size
    - i_assert
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: void iostream_pump_copy(struct iostream_pump *pump)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/iostream-pump.c:89,1
    - Dst: struct iostream_pump*::callback
      Src: /src/dovecot/src/lib/iostream-pump.c:91,1
    - Dst: struct iostream_pump*::callback
      Src: /src/dovecot/src/lib/iostream-pump.c:98,1
    - Dst: iostream_pump_copy
      Src: /src/dovecot/src/lib/iostream-pump.c:103,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/iostream-pump.c:105,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/iostream-pump.c:107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 110
    functionName: iostream_pump_flush
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - io_set_pending
    - struct iostream_pump*::callback
    - o_stream_flush
    - iostream_pump_copy
    linkageType: ''
    returnType: int
    signature: int iostream_pump_flush(struct iostream_pump *pump)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:119,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/iostream-pump.c:122,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/iostream-pump.c:123,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/iostream-pump.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 132
    functionName: iostream_pump_create
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 3
    functionsReached:
    - o_stream_ref
    - i_assert
    - i_stream_ref
    - i_new
    linkageType: ''
    returnType: struct iostream_pump
    signature: 'struct iostream_pump *

      iostream_pump_create(struct istream *input, struct ostream *output)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:136,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:137,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/iostream-pump.c:141,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:147,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib/iostream-pump.c:148,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/iostream-pump.c:150,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/iostream-pump.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 154
    functionName: iostream_pump_start
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 3
    functionsReached:
    - io_add_istream
    - io_set_pending
    - o_stream_set_flush_pending
    - o_stream_set_flush_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: void iostream_pump_start(struct iostream_pump *pump)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: iostream_pump_get_input
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: struct istream *iostream_pump_get_input(struct iostream_pump *pump)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: iostream_pump_get_output
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *iostream_pump_get_output(struct iostream_pump *pump)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - pump
    - callback
    - context
    argTypes:
    - struct iostream_pump*
    - iostream_pump_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 175
    functionName: iostream_pump_set_completion_callback
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void iostream_pump_set_completion_callback(struct iostream_pump *pump,\n\t\t\t\t\t
      \  iostream_pump_callback_t *callback,\n\t\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:179,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 182
    functionName: iostream_pump_ref
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void iostream_pump_ref(struct iostream_pump *pump)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:192,1
    - Dst: iostream_pump_stop
      Src: /src/dovecot/src/lib/iostream-pump.c:199,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/iostream-pump.c:201,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/iostream-pump.c:202,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream-pump.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _pump
    argTypes:
    - struct iostream_pump**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 204
    functionName: iostream_pump_unref
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - i_stream_unref
    - iostream_pump_stop
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void iostream_pump_unref(struct iostream_pump **_pump)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:208,1
    - Dst: iostream_pump_stop
      Src: /src/dovecot/src/lib/iostream-pump.c:216,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/iostream-pump.c:217,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/iostream-pump.c:218,1
    - Dst: iostream_pump_unref
      Src: /src/dovecot/src/lib/iostream-pump.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _pump
    argTypes:
    - struct iostream_pump**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 221
    functionName: iostream_pump_destroy
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 8
    functionsReached:
    - o_stream_unref
    - i_stream_unref
    - iostream_pump_unref
    - iostream_pump_stop
    - i_assert
    linkageType: ''
    returnType: void
    signature: void iostream_pump_destroy(struct iostream_pump **_pump)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:225,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/lib/iostream-pump.c:228,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/iostream-pump.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 231
    functionName: iostream_pump_stop
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 2
    functionsReached:
    - o_stream_unset_flush_callback
    - io_remove
    - i_assert
    linkageType: ''
    returnType: void
    signature: void iostream_pump_stop(struct iostream_pump *pump)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 236
    functionName: iostream_pump_is_waiting_output
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool iostream_pump_is_waiting_output(struct iostream_pump *pump)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-pump.c:241,1
    - Dst: io_loop_move_io_to
      Src: /src/dovecot/src/lib/iostream-pump.c:243,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/iostream-pump.c:244,1
    - Dst: i_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/iostream-pump.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pump
    - ioloop
    argTypes:
    - struct iostream_pump*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 246
    functionName: iostream_pump_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io_to
    - i_assert
    - o_stream_switch_ioloop_to
    - i_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: "void iostream_pump_switch_ioloop_to(struct iostream_pump *pump,\n\t\t\t\t
      \   struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_pump_switch_ioloop_to
      Src: /src/dovecot/src/lib/iostream-pump.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pump
    argTypes:
    - struct iostream_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 251
    functionName: iostream_pump_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.c
    functionUses: 0
    functionsReached:
    - iostream_pump_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: void iostream_pump_switch_ioloop(struct iostream_pump *pump)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str.c:9,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str.c:10,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str.c:12,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:13,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-str.c:14,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-str.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:16,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:16,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:16,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:18,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-str.c:19,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:20,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib/test-str.c:21,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:22,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:22,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:22,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 7
    functionDepth: 3
    functionLinenumber: 7
    functionLinenumberEnd: 25
    functionName: test_str_append
    functionSourceFile: /src/dovecot/src/lib/test-str.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - str_data
    - str_append_str
    - test_end
    - test_assert
    - memcmp
    - str_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_append(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str.c:32,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str.c:33,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-str.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 36
    functionName: test_str_c
    functionSourceFile: /src/dovecot/src/lib/test-str.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_c(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str.c:51,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str.c:53,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/test-str.c:54,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/test-str.c:55,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/test-str.c:56,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/test-str.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:58,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:58,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:58,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib/test-str.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:61,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:61,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:61,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: test_str_insert
    functionSourceFile: /src/dovecot/src/lib/test-str.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_insert
    - test_end
    - memcmp
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_insert(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str.c:68,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str.c:70,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/test-str.c:71,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:72,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/test-str.c:73,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/test-str.c:74,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/test-str.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:76,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:76,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:76,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/test-str.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:79,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:79,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:79,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:81,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/test-str.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:83,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:83,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:83,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str.c:85,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 86
    functionName: test_str_delete
    functionSourceFile: /src/dovecot/src/lib/test-str.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - test_end
    - str_delete
    - test_assert
    - memcmp
    - str_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_delete(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str.c:90,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str.c:92,1
    - Dst: str_append_max
      Src: /src/dovecot/src/lib/test-str.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:94,1
    - Dst: str_append_max
      Src: /src/dovecot/src/lib/test-str.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:97,1
    - Dst: str_append_max
      Src: /src/dovecot/src/lib/test-str.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:100,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:100,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:100,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-str.c:101,1
    - Dst: str_append_max
      Src: /src/dovecot/src/lib/test-str.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:104,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:104,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:104,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-str.c:105,1
    - Dst: str_append_max
      Src: /src/dovecot/src/lib/test-str.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str.c:108,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-str.c:108,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:108,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-str.c:109,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 111
    functionName: test_str_append_max
    functionSourceFile: /src/dovecot/src/lib/test-str.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_max
    - str_data
    - test_end
    - str_truncate
    - test_assert
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_append_max(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str.c:115,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str.c:118,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:119,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-str.c:121,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:122,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:122,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-str.c:125,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:126,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:126,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 113
    functionDepth: 3
    functionLinenumber: 113
    functionLinenumberEnd: 129
    functionName: test_str_truncate
    functionSourceFile: /src/dovecot/src/lib/test-str.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - test_assert_idx
    - str_len
    - test_end
    - str_truncate
    - str_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_truncate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str.c:133,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str.c:136,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:137,1
    - Dst: str_truncate_utf8
      Src: /src/dovecot/src/lib/test-str.c:139,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:140,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:140,1
    - Dst: str_truncate_utf8
      Src: /src/dovecot/src/lib/test-str.c:143,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:144,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:144,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:147,1
    - Dst: str_truncate_utf8
      Src: /src/dovecot/src/lib/test-str.c:150,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:151,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:151,1
    - Dst: str_truncate_utf8
      Src: /src/dovecot/src/lib/test-str.c:154,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:155,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:155,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:156,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:156,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str.c:159,1
    - Dst: str_truncate_utf8
      Src: /src/dovecot/src/lib/test-str.c:162,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:163,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:163,1
    - Dst: str_truncate_utf8
      Src: /src/dovecot/src/lib/test-str.c:166,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str.c:167,1
    - Dst: uni_utf8_data_is_valid
      Src: /src/dovecot/src/lib/test-str.c:167,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-str.c:167,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-str.c:168,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str.c:170,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 131
    functionDepth: 6
    functionLinenumber: 131
    functionLinenumberEnd: 171
    functionName: test_str_truncate_utf8
    functionSourceFile: /src/dovecot/src/lib/test-str.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - test_assert_idx
    - str_len
    - uni_utf8_data_is_valid
    - test_end
    - str_truncate_utf8
    - str_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_truncate_utf8(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_str_append
      Src: /src/dovecot/src/lib/test-str.c:175,1
    - Dst: test_str_c
      Src: /src/dovecot/src/lib/test-str.c:176,1
    - Dst: test_str_insert
      Src: /src/dovecot/src/lib/test-str.c:177,1
    - Dst: test_str_delete
      Src: /src/dovecot/src/lib/test-str.c:178,1
    - Dst: test_str_append_max
      Src: /src/dovecot/src/lib/test-str.c:179,1
    - Dst: test_str_truncate
      Src: /src/dovecot/src/lib/test-str.c:180,1
    - Dst: test_str_truncate_utf8
      Src: /src/dovecot/src/lib/test-str.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 173
    functionDepth: 7
    functionLinenumber: 173
    functionLinenumberEnd: 182
    functionName: test_str
    functionSourceFile: /src/dovecot/src/lib/test-str.c
    functionUses: 0
    functionsReached:
    - test_str_append_max
    - test_str_insert
    - test_str_truncate
    - test_str_truncate_utf8
    - test_str_c
    - test_str_append
    - test_str_delete
    linkageType: ''
    returnType: void
    signature: void test_str(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - getdata
    - ','
    - data
    - ','
    - count
    - ','
    - value
    - ','
    - idx_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 24
    functionName: BINARY_NUMERIC_SEARCH
    functionSourceFile: /src/dovecot/src/lib/bsearch-insert-pos.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BINARY_NUMERIC_SEARCH(getdata, data, count, value, idx_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - index
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: BINARY_SEARCH_ARRAY_GET
    functionSourceFile: /src/dovecot/src/lib/bsearch-insert-pos.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BINARY_SEARCH_ARRAY_GET(array, index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - data
    - ','
    - count
    - ','
    - value
    - ','
    - idx_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: BINARY_NUMBER_SEARCH
    functionSourceFile: /src/dovecot/src/lib/bsearch-insert-pos.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BINARY_NUMBER_SEARCH(data, count, value, idx_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - key
    - ','
    - base
    - ','
    - nmemb
    - ','
    - size
    - ','
    - cmp
    - ','
    - idx_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: bsearch_insert_pos
    functionSourceFile: /src/dovecot/src/lib/bsearch-insert-pos.h
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bsearch_insert_pos(key, base, nmemb, size, cmp, idx_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - array
    - ','
    - key
    - ','
    - cmp
    - ','
    - idx_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 51
    functionName: array_bsearch_insert_pos
    functionSourceFile: /src/dovecot/src/lib/bsearch-insert-pos.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_bsearch_insert_pos(array, key, cmp, idx_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream.c:14,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/istream.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 16
    functionName: i_stream_set_name
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 37
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_set_name(struct istream *stream, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:20,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 27
    functionName: i_stream_get_name
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 81
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *i_stream_get_name(struct istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_close
      Src: /src/dovecot/src/lib/istream.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - close_parents
    argTypes:
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 36
    functionName: i_stream_close_full
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - io_stream_close
    linkageType: ''
    returnType: void
    signature: void i_stream_close_full(struct istream *stream, bool close_parents)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_close_full
      Src: /src/dovecot/src/lib/istream.c:43,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 45
    functionName: i_stream_destroy
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 71
    functionsReached:
    - i_stream_close_full
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_destroy(struct istream **stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_ref
      Src: /src/dovecot/src/lib/istream.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: i_stream_ref
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 59
    functionsReached:
    - io_stream_ref
    linkageType: ''
    returnType: void
    signature: void i_stream_ref(struct istream *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_unref
      Src: /src/dovecot/src/lib/istream.c:64,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/istream.c:65,1
    - Dst: i_stream_snapshot_free
      Src: /src/dovecot/src/lib/istream.c:69,1
    - Dst: io_stream_unref
      Src: /src/dovecot/src/lib/istream.c:71,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/istream.c:72,1
    - Dst: str_free
      Src: /src/dovecot/src/lib/istream.c:73,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream.c:74,1
    - Dst: io_stream_free
      Src: /src/dovecot/src/lib/istream.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct istream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 77
    functionName: i_stream_unref
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 321
    functionsReached:
    - io_stream_unref
    - io_stream_free
    - i_unreached
    - i_stream_snapshot_free
    - str_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_unref(struct istream **_stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_add_destroy_callback
      Src: /src/dovecot/src/lib/istream.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stream
    - callback
    - context
    argTypes:
    - struct istream*
    - istream_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: i_stream_add_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 5
    functionsReached:
    - io_stream_add_destroy_callback
    linkageType: ''
    returnType: void
    signature: "void i_stream_add_destroy_callback(struct istream *stream,\n\t\t\t\t
      \  istream_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib/istream.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 92
    functionName: i_stream_remove_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 3
    functionsReached:
    - io_stream_remove_destroy_callback
    linkageType: ''
    returnType: void
    signature: "void i_stream_remove_destroy_callback(struct istream *stream,\n\t\t\t\t
      \     void (*callback)())"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: i_stream_get_fd
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int i_stream_get_fd(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:105,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dest
    - source
    argTypes:
    - struct istream*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: i_stream_copy_fd
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 2
    functionsReached:
    - i_assert
    - i_stream_get_fd
    linkageType: ''
    returnType: void
    signature: void i_stream_copy_fd(struct istream *dest, struct istream *source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/istream.c:116,1
    - Dst: io_stream_set_verror
      Src: /src/dovecot/src/lib/istream.c:118,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/istream.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - stream_errno
    - fmt
    argTypes:
    - struct istream*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 120
    functionName: i_stream_set_error
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached:
    - va_end
    - io_stream_set_verror
    - va_start
    linkageType: ''
    returnType: void
    signature: "void i_stream_set_error(struct istream *stream, int stream_errno,\n\t\t\tconst
      char *fmt, ...)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/dovecot/src/lib/istream.c:138,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 139
    functionName: i_stream_get_error
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 90
    functionsReached:
    - strerror
    linkageType: ''
    returnType: char
    signature: char *i_stream_get_error(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib/istream.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: i_stream_get_disconnect_reason
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 2
    functionsReached:
    - io_stream_get_disconnect_reason
    linkageType: ''
    returnType: char
    signature: char *i_stream_get_disconnect_reason(struct istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_close_full
      Src: /src/dovecot/src/lib/istream.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: i_stream_close
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 24
    functionsReached:
    - i_stream_close_full
    linkageType: ''
    returnType: void
    signature: void i_stream_close(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - size
    argTypes:
    - struct istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: i_stream_set_init_buffer_size
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_stream_set_init_buffer_size(struct istream *stream, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: i_stream_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 14
    functionsReached:
    - io_stream_set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: void i_stream_set_max_buffer_size(struct istream *stream, size_t max_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 172
    functionName: i_stream_get_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t i_stream_get_max_buffer_size(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: i_stream_set_return_partial_line
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_stream_set_return_partial_line(struct istream *stream, bool
      set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 185
    functionName: i_stream_set_persistent_buffers
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_stream_set_persistent_buffers(struct istream *stream, bool set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/istream.c:195,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - stream
    - blocking
    argTypes:
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 200
    functionName: i_stream_set_blocking
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - fd_set_nonblock
    linkageType: ''
    returnType: void
    signature: void i_stream_set_blocking(struct istream *stream, bool blocking)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: i_stream_update
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_stream_update(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snapshot_has_memarea
      Src: /src/dovecot/src/lib/istream.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - snapshot
    - memarea
    argTypes:
    - struct istream_snapshot*
    - struct memarea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 221
    functionName: snapshot_has_memarea
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached:
    - snapshot_has_memarea
    linkageType: ''
    returnType: bool
    signature: "bool snapshot_has_memarea(struct istream_snapshot *snapshot,\n\t\t\t\t
      struct memarea *memarea)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snapshot_has_memarea
      Src: /src/dovecot/src/lib/istream.c:231,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream.c:236,1
    - Dst: memarea_ref
      Src: /src/dovecot/src/lib/istream.c:239,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:247,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/istream.c:250,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream.c:251,1
    - Dst: struct istream_private*::snapshot
      Src: /src/dovecot/src/lib/istream.c:255,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - stream
    - prev_snapshot
    argTypes:
    - struct istream_private*
    - struct istream_snapshot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 256
    functionName: i_stream_default_snapshot
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached:
    - i_panic
    - struct istream_private*::snapshot
    - memarea_ref
    - i_new
    - i_stream_get_name
    - i_assert
    - snapshot_has_memarea
    linkageType: ''
    returnType: struct istream_snapshot
    signature: "struct istream_snapshot *\ni_stream_default_snapshot(struct istream_private
      *stream,\n\t\t\t  struct istream_snapshot *prev_snapshot)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_snapshot_free
      Src: /src/dovecot/src/lib/istream.c:266,1
    - Dst: struct istream_snapshot*::free
      Src: /src/dovecot/src/lib/istream.c:268,1
    - Dst: memarea_unref
      Src: /src/dovecot/src/lib/istream.c:271,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream.c:272,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream.c:273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - _snapshot
    argTypes:
    - struct istream_snapshot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 275
    functionName: i_stream_snapshot_free
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 3
    functionsReached:
    - struct istream_snapshot*::free
    - i_stream_snapshot_free
    - memarea_unref
    - i_stream_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_snapshot_free(struct istream_snapshot **_snapshot)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - prev_snapshot
    argTypes:
    - struct istream_private*
    - struct istream_snapshot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 282
    functionName: i_stream_noop_snapshot
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct istream_snapshot
    signature: "struct istream_snapshot *\ni_stream_noop_snapshot(struct istream_private
      *stream ATTR_UNUSED,\n\t\t       struct istream_snapshot *prev_snapshot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 289
    functionName: i_stream_is_io_pending_until_read
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool i_stream_is_io_pending_until_read(struct istream_private *_stream)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_is_buffer_invalid
      Src: /src/dovecot/src/lib/istream.c:299,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:301,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream.c:306,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream.c:307,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream.c:309,1
    - Dst: struct istream_private*::snapshot
      Src: /src/dovecot/src/lib/istream.c:315,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream.c:317,1
    - Dst: i_stream_snapshot_free
      Src: /src/dovecot/src/lib/istream.c:319,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:322,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:325,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:327,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/istream.c:327,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:329,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/istream.c:329,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:330,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/istream.c:330,1
    - Dst: i_stream_is_io_pending_until_read
      Src: /src/dovecot/src/lib/istream.c:335,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib/istream.c:339,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 291
    functionDepth: 3
    functionLinenumber: 291
    functionLinenumberEnd: 342
    functionName: i_stream_read
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 83
    functionsReached:
    - i_stream_is_buffer_invalid
    - memcpy
    - i_stream_is_io_pending_until_read
    - struct istream_private*::snapshot
    - i_stream_set_input_pending
    - memcmp
    - i_stream_snapshot_free
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_read(struct istream *stream)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream.c:350,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream.c:359,1
    - Dst: struct istream_private*::read
      Src: /src/dovecot/src/lib/istream.c:370,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:372,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:373,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:376,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:385,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:386,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:390,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:393,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:394,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:395,1
    - Dst: i_stream_update
      Src: /src/dovecot/src/lib/istream.c:408,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:411,1
    - Dst: i_stream_is_buffer_invalid
      Src: /src/dovecot/src/lib/istream.c:411,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 413
    functionName: i_stream_read_memarea
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 12
    functionsReached:
    - i_stream_is_buffer_invalid
    - unlikely
    - i_stream_update
    - struct istream_private*::read
    - i_stream_seek
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_read_memarea(struct istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream.c:418,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream.c:422,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - data_r
    - size_r
    argTypes:
    - struct istream*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 425
    functionName: i_stream_read_more_memarea
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 2
    functionsReached:
    - i_stream_get_data
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: "int i_stream_read_more_memarea(struct istream *stream,\n\t\t\t       const
      unsigned char **data_r, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - tv_r
    argTypes:
    - struct istream*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 430
    functionName: i_stream_get_last_read_time
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_stream_get_last_read_time(struct istream *stream, struct timeval
      *tv_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream.c:441,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream.c:445,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream.c:448,1
    - Dst: i_stream_update
      Src: /src/dovecot/src/lib/istream.c:454,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:461,1
    - Dst: i_stream_update
      Src: /src/dovecot/src/lib/istream.c:463,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - istream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 432
    functionDepth: 2
    functionLinenumber: 432
    functionLinenumberEnd: 465
    functionName: i_stream_read_copy_from_parent
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 5
    functionsReached:
    - i_assert
    - i_stream_get_data
    - i_stream_update
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_read_copy_from_parent(struct istream *istream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memarea_unref
      Src: /src/dovecot/src/lib/istream.c:470,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/istream.c:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 479
    functionName: i_stream_free_buffer
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached:
    - i_free_and_null
    - memarea_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_free_buffer(struct istream_private *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib/istream.c:494,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream.c:504,1
    - Dst: struct istream_private*::seek
      Src: /src/dovecot/src/lib/istream.c:507,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - stream
    - count
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 508
    functionName: i_stream_skip
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 158
    functionsReached:
    - unlikely
    - struct istream_private*::seek
    - i_stream_free_buffer
    linkageType: ''
    returnType: void
    signature: void i_stream_skip(struct istream *stream, uoff_t count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_can_optimize_seek
      Src: /src/dovecot/src/lib/istream.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 521
    functionName: i_stream_can_optimize_seek
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached:
    - i_stream_can_optimize_seek
    linkageType: ''
    returnType: bool
    signature: bool i_stream_can_optimize_seek(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_can_optimize_seek
      Src: /src/dovecot/src/lib/istream.c:528,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream.c:529,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream.c:531,1
    - Dst: struct istream_private*::seek
      Src: /src/dovecot/src/lib/istream.c:536,1
    - Dst: i_stream_update
      Src: /src/dovecot/src/lib/istream.c:538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - stream
    - v_offset
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 523
    functionDepth: 3
    functionLinenumber: 523
    functionLinenumberEnd: 539
    functionName: i_stream_seek
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 124
    functionsReached:
    - unlikely
    - i_stream_update
    - i_stream_skip
    - i_stream_can_optimize_seek
    - struct istream_private*::seek
    linkageType: ''
    returnType: void
    signature: void i_stream_seek(struct istream *stream, uoff_t v_offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream.c:545,1
    - Dst: struct istream_private*::seek
      Src: /src/dovecot/src/lib/istream.c:549,1
    - Dst: i_stream_update
      Src: /src/dovecot/src/lib/istream.c:550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - v_offset
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 551
    functionName: i_stream_seek_mark
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 3
    functionsReached:
    - struct istream_private*::seek
    - i_stream_update
    - unlikely
    linkageType: ''
    returnType: void
    signature: void i_stream_seek_mark(struct istream *stream, uoff_t v_offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream.c:557,1
    - Dst: struct istream_private*::sync
      Src: /src/dovecot/src/lib/istream.c:561,1
    - Dst: i_stream_update
      Src: /src/dovecot/src/lib/istream.c:562,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 564
    functionName: i_stream_sync
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 11
    functionsReached:
    - i_stream_update
    - unlikely
    - struct istream_private*::sync
    linkageType: ''
    returnType: void
    signature: void i_stream_sync(struct istream *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream.c:570,1
    - Dst: struct istream_private*::stat
      Src: /src/dovecot/src/lib/istream.c:573,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - exact
    - st_r
    argTypes:
    - struct istream*
    - bool
    - struct stat**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 579
    functionName: i_stream_stat
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 21
    functionsReached:
    - struct istream_private*::stat
    - unlikely
    linkageType: ''
    returnType: int
    signature: int i_stream_stat(struct istream *stream, bool exact, const struct
      stat **st_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream.c:585,1
    - Dst: struct istream_private*::get_size
      Src: /src/dovecot/src/lib/istream.c:589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - exact
    - size_r
    argTypes:
    - struct istream*
    - bool
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 592
    functionName: i_stream_get_size
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 18
    functionsReached:
    - struct istream_private*::get_size
    - unlikely
    linkageType: ''
    returnType: int
    signature: int i_stream_get_size(struct istream *stream, bool exact, uoff_t *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream.c:596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 597
    functionName: i_stream_have_bytes_left
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 12
    functionsReached:
    - i_stream_get_data_size
    linkageType: ''
    returnType: bool
    signature: bool i_stream_have_bytes_left(struct istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream.c:601,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/istream.c:602,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib/istream.c:603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 599
    functionDepth: 4
    functionLinenumber: 599
    functionLinenumberEnd: 604
    functionName: i_stream_read_eof
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 6
    functionsReached:
    - i_stream_have_bytes_left
    - i_stream_read
    - i_stream_get_data_size
    linkageType: ''
    returnType: bool
    signature: bool i_stream_read_eof(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 614
    functionName: i_stream_get_absolute_offset
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t i_stream_get_absolute_offset(struct istream *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib/istream.c:637,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/istream.c:638,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/istream.c:640,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib/istream.c:642,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - stream
    - i
    argTypes:
    - struct istream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 650
    functionName: i_stream_next_line_finish
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - str_append_data
    - str_new
    - str_truncate
    - str_c_modifiable
    linkageType: ''
    returnType: char
    signature: char *i_stream_next_line_finish(struct istream_private *stream, size_t
      i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line_finish
      Src: /src/dovecot/src/lib/istream.c:657,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 652
    functionDepth: 2
    functionLinenumber: 652
    functionLinenumberEnd: 660
    functionName: i_stream_last_line
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_stream_next_line_finish
    linkageType: ''
    returnType: char
    signature: char *i_stream_last_line(struct istream_private *_stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/lib/istream.c:670,1
    - Dst: i_stream_next_line_finish
      Src: /src/dovecot/src/lib/istream.c:673,1
    - Dst: i_stream_last_line
      Src: /src/dovecot/src/lib/istream.c:676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 662
    functionDepth: 3
    functionLinenumber: 662
    functionLinenumberEnd: 678
    functionName: i_stream_next_line
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 26
    functionsReached:
    - memchr
    - i_stream_next_line_finish
    - i_stream_last_line
    linkageType: ''
    returnType: char
    signature: char *i_stream_next_line(struct istream *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/istream.c:685,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/istream.c:689,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream.c:691,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream.c:694,1
    - Dst: i_stream_last_line
      Src: /src/dovecot/src/lib/istream.c:699,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 680
    functionDepth: 4
    functionLinenumber: 680
    functionLinenumberEnd: 705
    functionName: i_stream_read_next_line
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 73
    functionsReached:
    - i_stream_get_data_size
    - io_stream_set_error
    - i_stream_next_line
    - i_stream_last_line
    - i_stream_read
    linkageType: ''
    returnType: char
    signature: char *i_stream_read_next_line(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: i_stream_last_line_crlf
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool i_stream_last_line_crlf(struct istream *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_is_buffer_invalid
      Src: /src/dovecot/src/lib/istream.c:729,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 730
    functionName: i_stream_is_buffer_invalid
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 3
    functionsReached:
    - i_stream_is_buffer_invalid
    linkageType: ''
    returnType: bool
    signature: bool i_stream_is_buffer_invalid(const struct istream_private *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream.c:742,1
    - Dst: i_stream_is_buffer_invalid
      Src: /src/dovecot/src/lib/istream.c:742,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - stream
    - size_r
    argTypes:
    - struct istream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 732
    functionDepth: 2
    functionLinenumber: 732
    functionLinenumberEnd: 769
    functionName: i_stream_get_data
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 56
    functionsReached:
    - i_stream_is_buffer_invalid
    - unlikely
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      i_stream_get_data(struct istream *stream, size_t *size_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream.c:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 771
    functionDepth: 3
    functionLinenumber: 771
    functionLinenumberEnd: 777
    functionName: i_stream_get_data_size
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 29
    functionsReached:
    - i_stream_get_data
    linkageType: ''
    returnType: size_t
    signature: size_t i_stream_get_data_size(struct istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - size_r
    argTypes:
    - struct istream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 779
    functionDepth: 0
    functionLinenumber: 779
    functionLinenumberEnd: 791
    functionName: i_stream_get_modifiable_data
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *i_stream_get_modifiable_data(struct istream *stream,\n\t\t\t\t\t
      \   size_t *size_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream.c:800,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/istream.c:805,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream.c:810,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:816,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 4
    argNames:
    - stream
    - data_r
    - size_r
    - threshold
    argTypes:
    - struct istream*
    - unsigned char**
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 793
    functionDepth: 4
    functionLinenumber: 793
    functionLinenumberEnd: 824
    functionName: i_stream_read_data
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 2
    functionsReached:
    - i_assert
    - i_stream_read
    - i_stream_get_data
    linkageType: ''
    returnType: int
    signature: "int i_stream_read_data(struct istream *stream, const unsigned char
      **data_r,\n\t\t       size_t *size_r, size_t threshold)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream.c:832,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/istream.c:839,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - stream
    - data_r
    - size_r
    - limit
    argTypes:
    - struct istream*
    - unsigned char**
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 826
    functionDepth: 3
    functionLinenumber: 826
    functionLinenumberEnd: 845
    functionName: i_stream_read_limited
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached:
    - i_stream_get_data
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int i_stream_read_limited(struct istream *stream, const unsigned char
      **data_r,\n\t\t\t  size_t *size_r, size_t limit)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:849,1
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib/istream.c:850,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/istream.c:853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 859
    functionName: i_stream_compress
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - memarea_get_refcount
    - memmove
    linkageType: ''
    returnType: void
    signature: void i_stream_compress(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 864
    functionName: i_stream_w_buffer_free
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_w_buffer_free(void *buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib/istream.c:872,1
    - Dst: memarea_free_without_callback
      Src: /src/dovecot/src/lib/istream.c:875,1
    - Dst: i_realloc
      Src: /src/dovecot/src/lib/istream.c:876,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib/istream.c:879,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:881,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream.c:882,1
    - Dst: memarea_unref
      Src: /src/dovecot/src/lib/istream.c:885,1
    - Dst: memarea_init
      Src: /src/dovecot/src/lib/istream.c:891,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - stream
    - old_size
    argTypes:
    - struct istream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 866
    functionDepth: 2
    functionLinenumber: 866
    functionLinenumberEnd: 893
    functionName: i_stream_w_buffer_realloc
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_malloc
    - memarea_init
    - memarea_unref
    - memarea_get_refcount
    - memarea_free_without_callback
    - i_assert
    - i_realloc
    linkageType: ''
    returnType: void
    signature: void i_stream_w_buffer_realloc(struct istream_private *stream, size_t
      old_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/istream.c:905,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/istream.c:907,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:908,1
    - Dst: i_stream_w_buffer_realloc
      Src: /src/dovecot/src/lib/istream.c:915,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - stream
    - bytes
    argTypes:
    - struct istream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 895
    functionDepth: 3
    functionLinenumber: 895
    functionLinenumberEnd: 916
    functionName: i_stream_grow_buffer
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_stream_w_buffer_realloc
    - i_assert
    - i_stream_get_max_buffer_size
    - nearest_power
    linkageType: ''
    returnType: void
    signature: void i_stream_grow_buffer(struct istream_private *stream, size_t bytes)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:921,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:922,1
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib/istream.c:928,1
    - Dst: i_stream_w_buffer_realloc
      Src: /src/dovecot/src/lib/istream.c:932,1
    - Dst: i_stream_compress
      Src: /src/dovecot/src/lib/istream.c:934,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/istream.c:935,1
    - Dst: i_stream_grow_buffer
      Src: /src/dovecot/src/lib/istream.c:937,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:952,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - stream
    - wanted_size
    - size_r
    argTypes:
    - struct istream_private*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 918
    functionDepth: 4
    functionLinenumber: 918
    functionLinenumberEnd: 954
    functionName: i_stream_try_alloc
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 8
    functionsReached:
    - i_stream_compress
    - i_stream_get_max_buffer_size
    - i_stream_w_buffer_realloc
    - i_assert
    - memarea_get_refcount
    - i_stream_grow_buffer
    linkageType: ''
    returnType: bool
    signature: "bool i_stream_try_alloc(struct istream_private *stream,\n\t\t\tsize_t
      wanted_size, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream.c:964,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream.c:969,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - wanted_size
    - size_r
    argTypes:
    - struct istream_private*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 956
    functionDepth: 5
    functionLinenumber: 956
    functionLinenumberEnd: 970
    functionName: ATTR_NOWARN_UNUSED_RESULT::i_stream_try_alloc_avoid_compress
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_stream_try_alloc
    linkageType: ''
    returnType: bool
    signature: "bool ATTR_NOWARN_UNUSED_RESULT\ni_stream_try_alloc_avoid_compress(struct
      istream_private *stream,\n\t\t\t\t  size_t wanted_size, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream.c:976,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/istream.c:979,1
    - Dst: i_stream_w_buffer_realloc
      Src: /src/dovecot/src/lib/istream.c:980,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream.c:982,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - stream
    - size
    argTypes:
    - struct istream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 972
    functionDepth: 5
    functionLinenumber: 972
    functionLinenumberEnd: 986
    functionName: i_stream_alloc
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 4
    functionsReached:
    - i_stream_w_buffer_realloc
    - i_stream_try_alloc
    - i_assert
    - nearest_power
    linkageType: ''
    returnType: void
    signature: void *i_stream_alloc(struct istream_private *stream, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memarea_unref
      Src: /src/dovecot/src/lib/istream.c:993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 998
    functionName: i_stream_memarea_detach
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - memarea_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_memarea_detach(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream.c:1008,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream.c:1012,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - _stream
    - data
    - size
    argTypes:
    - struct istream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1000
    functionDepth: 5
    functionLinenumber: 1000
    functionLinenumberEnd: 1015
    functionName: i_stream_add_data
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_stream_try_alloc
    linkageType: ''
    returnType: bool
    signature: "bool i_stream_add_data(struct istream *_stream, const unsigned char
      *data,\n\t\t       size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:1020,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1024
    functionName: i_stream_get_root_io
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_get_root_io(struct istream *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_root_io
      Src: /src/dovecot/src/lib/istream.c:1033,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/istream.c:1035,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - pending
    argTypes:
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1026
    functionDepth: 2
    functionLinenumber: 1026
    functionLinenumberEnd: 1038
    functionName: i_stream_set_input_pending
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 18
    functionsReached:
    - io_set_pending
    - i_stream_get_root_io
    linkageType: ''
    returnType: void
    signature: void i_stream_set_input_pending(struct istream *stream, bool pending)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/istream.c:1042,1
    - Dst: struct istream*::real_stream::switch_ioloop_to
      Src: /src/dovecot/src/lib/istream.c:1046,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct istream*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1051
    functionName: i_stream_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 4
    functionsReached:
    - struct istream*::real_stream::switch_ioloop_to
    - io_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: void i_stream_switch_ioloop_to(struct istream *stream, struct ioloop
      *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/istream.c:1055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1053
    functionDepth: 2
    functionLinenumber: 1053
    functionLinenumberEnd: 1056
    functionName: i_stream_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: void i_stream_switch_ioloop(struct istream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_root_io
      Src: /src/dovecot/src/lib/istream.c:1060,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:1062,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/istream.c:1065,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - io
    argTypes:
    - struct istream*
    - struct io*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1058
    functionDepth: 2
    functionLinenumber: 1058
    functionLinenumberEnd: 1068
    functionName: i_stream_set_io
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - io_set_pending
    - i_stream_get_root_io
    linkageType: ''
    returnType: void
    signature: void i_stream_set_io(struct istream *stream, struct io *io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_root_io
      Src: /src/dovecot/src/lib/istream.c:1072,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:1074,1
    - Dst: io_is_pending
      Src: /src/dovecot/src/lib/istream.c:1075,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - io
    argTypes:
    - struct istream*
    - struct io*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1070
    functionDepth: 2
    functionLinenumber: 1070
    functionLinenumberEnd: 1078
    functionName: i_stream_unset_io
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - io_is_pending
    - i_stream_get_root_io
    linkageType: ''
    returnType: void
    signature: void i_stream_unset_io(struct istream *stream, struct io *io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream.c:1085,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream.c:1089,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1080
    functionDepth: 2
    functionLinenumber: 1080
    functionLinenumberEnd: 1090
    functionName: i_stream_default_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_stream_set_max_buffer_size
    - container_of
    linkageType: ''
    returnType: void
    signature: "void i_stream_default_set_max_buffer_size(struct iostream_private
      *stream,\n\t\t\t\t     size_t max_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream.c:1096,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream.c:1099,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1092
    functionDepth: 3
    functionLinenumber: 1092
    functionLinenumberEnd: 1100
    functionName: i_stream_default_close
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_default_close(struct iostream_private *stream,\n\t\t\t\t
      \  bool close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream.c:1105,1
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib/istream.c:1107,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1102
    functionDepth: 2
    functionLinenumber: 1102
    functionLinenumberEnd: 1109
    functionName: i_stream_default_destroy
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_free_buffer
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_default_destroy(struct iostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1111
    functionDepth: 0
    functionLinenumber: 1111
    functionLinenumberEnd: 1117
    functionName: i_stream_default_seek_seekable
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void i_stream_default_seek_seekable(struct istream_private *stream,\n\t\t\t
      \      uoff_t v_offset, bool mark ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/istream.c:1125,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream.c:1126,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/istream.c:1129,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream.c:1137,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream.c:1146,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream.c:1148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1119
    functionDepth: 4
    functionLinenumber: 1119
    functionLinenumberEnd: 1152
    functionName: i_stream_default_seek_nonseekable
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 2
    functionsReached:
    - i_panic
    - io_stream_set_error
    - i_stream_skip
    - i_stream_get_name
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: "void i_stream_default_seek_nonseekable(struct istream_private *stream,\n\t\t\t\t
      \      uoff_t v_offset, bool mark ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream.c:1161,1
    - Dst: i_stream_default_seek_nonseekable
      Src: /src/dovecot/src/lib/istream.c:1178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - stream
    - v_offset
    argTypes:
    - struct istream_private*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1154
    functionDepth: 5
    functionLinenumber: 1154
    functionLinenumberEnd: 1181
    functionName: i_stream_nonseekable_try_seek
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 5
    functionsReached:
    - i_stream_default_seek_nonseekable
    - i_stream_seek
    linkageType: ''
    returnType: bool
    signature: "bool i_stream_nonseekable_try_seek(struct istream_private *stream,\n\t\t\t\t
      \  uoff_t v_offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream.c:1191,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream.c:1192,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/istream.c:1193,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.c:1194,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream.c:1199,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1183
    functionDepth: 4
    functionLinenumber: 1183
    functionLinenumberEnd: 1203
    functionName: seekable_i_stream_get_size
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_stream_skip
    - i_stream_read
    - i_stream_seek
    - i_assert
    linkageType: ''
    returnType: int
    signature: int seekable_i_stream_get_size(struct istream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib/istream.c:1213,1
    - Dst: seekable_i_stream_get_size
      Src: /src/dovecot/src/lib/istream.c:1222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1205
    functionDepth: 5
    functionLinenumber: 1205
    functionLinenumberEnd: 1232
    functionName: i_stream_default_stat
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - seekable_i_stream_get_size
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: int i_stream_default_stat(struct istream_private *stream, bool exact)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct istream_private*::stat
      Src: /src/dovecot/src/lib/istream.c:1238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - exact
    - size_r
    argTypes:
    - struct istream_private*
    - bool
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1234
    functionDepth: 0
    functionLinenumber: 1234
    functionLinenumberEnd: 1245
    functionName: i_stream_default_get_size
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 0
    functionsReached:
    - struct istream_private*::stat
    linkageType: ''
    returnType: int
    signature: "int i_stream_default_get_size(struct istream_private *stream,\n\t\t\t
      \ bool exact, uoff_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/istream.c:1258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - _stream
    - parent
    argTypes:
    - struct istream_private*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1247
    functionDepth: 2
    functionLinenumber: 1247
    functionLinenumberEnd: 1259
    functionName: i_stream_init_parent
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 1
    functionsReached:
    - i_stream_ref
    linkageType: ''
    returnType: void
    signature: "void i_stream_init_parent(struct istream_private *_stream,\n\t\t\t
      \ struct istream *parent)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_init_parent
      Src: /src/dovecot/src/lib/istream.c:1269,1
    - Dst: memarea_init_empty
      Src: /src/dovecot/src/lib/istream.c:1273,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/istream.c:1302,1
    - Dst: io_stream_init
      Src: /src/dovecot/src/lib/istream.c:1309,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 4
    argNames:
    - _stream
    - parent
    - fd
    - flags
    argTypes:
    - struct istream_private*
    - struct istream*
    - int
    - enum istream_create_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1261
    functionDepth: 3
    functionLinenumber: 1261
    functionLinenumberEnd: 1315
    functionName: i_stream_create
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 23
    functionsReached:
    - i_zero
    - io_stream_init
    - memarea_init_empty
    - i_stream_init_parent
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create(struct istream_private *_stream,
      struct istream *parent, int fd,\n\t\tenum istream_create_flag flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream.c:1321,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream.c:1332,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/istream.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - stream_errno
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1317
    functionDepth: 4
    functionLinenumber: 1317
    functionLinenumberEnd: 1335
    functionName: i_stream_create_error
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 2
    functionsReached:
    - i_stream_create
    - i_stream_set_name
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_error(int stream_errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/istream.c:1343,1
    - Dst: i_stream_create_error
      Src: /src/dovecot/src/lib/istream.c:1344,1
    - Dst: io_stream_set_verror
      Src: /src/dovecot/src/lib/istream.c:1345,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/istream.c:1346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - stream_errno
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1337
    functionDepth: 5
    functionLinenumber: 1337
    functionLinenumberEnd: 1348
    functionName: i_stream_create_error_str
    functionSourceFile: /src/dovecot/src/lib/istream.c
    functionUses: 7
    functionsReached:
    - va_end
    - i_stream_create_error
    - io_stream_set_verror
    - va_start
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_error_str(int stream_errno, const char *fmt, ...)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 6
    functionName: UINT64_SUM_OVERFLOWS
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UINT64_SUM_OVERFLOWS(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: BIT
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BIT(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - val
    - ','
    - bits
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: HAS_NO_BITS
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HAS_NO_BITS(val,bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - val
    - ','
    - bits
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: HAS_ANY_BITS
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HAS_ANY_BITS(val,bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - val
    - ','
    - bits
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: HAS_ALL_BITS
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 38
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HAS_ALL_BITS(val,bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: UNSIGNED_MINUS
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSIGNED_MINUS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_popcountll
      Src: /src/dovecot/src/lib/bits.h:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: bits_is_power_of_two
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 1
    functionsReached:
    - __builtin_popcountll
    linkageType: ''
    returnType: bool
    signature: bool bits_is_power_of_two(uint64_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_clz
      Src: /src/dovecot/src/lib/bits.h:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: bits_required32
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - __builtin_clz
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_required32(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bits_required32
      Src: /src/dovecot/src/lib/bits.h:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: bits_required8
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - bits_required32
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_required8(uint8_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bits_required32
      Src: /src/dovecot/src/lib/bits.h:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: bits_required16
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - bits_required32
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_required16(uint16_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_clzll
      Src: /src/dovecot/src/lib/bits.h:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: bits_required64
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - __builtin_clzll
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_required64(uint64_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: bits_is_power_of_two
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bits_is_power_of_two(uint64_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bits_required8
      Src: /src/dovecot/src/lib/bits.h:67,1
    - Dst: bits_required8
      Src: /src/dovecot/src/lib/bits.h:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: bits_required16
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - bits_required8
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_required16(uint16_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bits_required16
      Src: /src/dovecot/src/lib/bits.h:73,1
    - Dst: bits_required16
      Src: /src/dovecot/src/lib/bits.h:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: bits_required32
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 2
    functionsReached:
    - bits_required16
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_required32(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bits_required32
      Src: /src/dovecot/src/lib/bits.h:79,1
    - Dst: bits_required32
      Src: /src/dovecot/src/lib/bits.h:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: bits_required64
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - bits_required32
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_required64(uint64_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/bits.h:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - num
    - count
    argTypes:
    - uint64_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 92
    functionName: bits_rotl64
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - UNSIGNED_MINUS
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t bits_rotl64(uint64_t num, unsigned int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/bits.h:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - num
    - count
    argTypes:
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 101
    functionName: bits_rotl32
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - UNSIGNED_MINUS
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bits_rotl32(uint32_t num, unsigned int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/bits.h:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - num
    - count
    argTypes:
    - uint64_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: bits_rotr64
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - UNSIGNED_MINUS
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t bits_rotr64(uint64_t num, unsigned int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/bits.h:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - num
    - count
    argTypes:
    - uint32_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: bits_rotr32
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - UNSIGNED_MINUS
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bits_rotr32(uint32_t num, unsigned int count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bits_required32
      Src: /src/dovecot/src/lib/bits.h:142,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/bits.h:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - val
    - fracbits
    argTypes:
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 151
    functionName: bits_fraclog
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - bits_required32
    - BIT
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_fraclog(unsigned int val, unsigned int fracbits)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BIT
      Src: /src/dovecot/src/lib/bits.h:159,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/bits.h:160,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/bits.h:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - fracbits
    argTypes:
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: bits_fraclog_bucket_start
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - BIT
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_fraclog_bucket_start(unsigned int bucket, unsigned
      int fracbits)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BIT
      Src: /src/dovecot/src/lib/bits.h:173,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/bits.h:174,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/bits.h:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - fracbits
    argTypes:
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 178
    functionName: bits_fraclog_bucket_end
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached:
    - BIT
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_fraclog_bucket_end(unsigned int bucket, unsigned
      int fracbits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bits
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 183
    functionName: BITS_FRACLOG_BUCKETS
    functionSourceFile: /src/dovecot/src/lib/bits.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITS_FRACLOG_BUCKETS(bits)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/hash-format.c:42,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/hash-format.c:48,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/hash-format.c:50,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/hash-format.c:52,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/hash-format.c:54,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/hash-format.c:56,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/hash-format.c:62,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/hash-format.c:64,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/hash-format.c:69,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 5
    argNames:
    - str
    - idxp
    - method_r
    - bits_r
    - error_r
    argTypes:
    - char*
    - unsigned int*
    - struct hash_method**
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 77
    functionName: hash_format_parse
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_strdup_until
    - str_to_uint
    - t_strconcat
    - hash_method_lookup
    linkageType: ''
    returnType: int
    signature: "int hash_format_parse(const char *str, unsigned int *idxp,\n\t\t  const
      struct hash_method **method_r,\n\t\t  unsigned int *bits_r, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib/hash-format.c:91,1
    - Dst: hash_format_parse
      Src: /src/dovecot/src/lib/hash-format.c:107,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/hash-format.c:110,1
    - Dst: struct hash_format_list*::method::init
      Src: /src/dovecot/src/lib/hash-format.c:112,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - format
    - str
    - error_r
    argTypes:
    - struct hash_format*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 115
    functionName: hash_format_string_analyze
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 0
    functionsReached:
    - hash_format_parse
    - p_new
    - struct hash_format_list*::method::init
    - p_malloc
    linkageType: ''
    returnType: int
    signature: "int hash_format_string_analyze(struct hash_format *format, const char
      *str,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/hash-format.c:124,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/hash-format.c:125,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/hash-format.c:127,1
    - Dst: hash_format_string_analyze
      Src: /src/dovecot/src/lib/hash-format.c:130,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/hash-format.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - format_string
    - format_r
    - error_r
    argTypes:
    - char*
    - struct hash_format**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 134
    functionName: hash_format_init
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 4
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - hash_format_string_analyze
    linkageType: ''
    returnType: int
    signature: "int hash_format_init(const char *format_string, struct hash_format
      **format_r,\n\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct hash_format_list*::method::loop
      Src: /src/dovecot/src/lib/hash-format.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - format
    - data
    - size
    argTypes:
    - struct hash_format*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 151
    functionName: hash_format_loop
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 3
    functionsReached:
    - struct hash_format_list*::method::loop
    linkageType: ''
    returnType: void
    signature: "void hash_format_loop(struct hash_format *format,\n\t\t      const
      void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/hash-format.c:158,1
    - Dst: struct hash_format_list*::method::init
      Src: /src/dovecot/src/lib/hash-format.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - struct hash_format*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: hash_format_reset
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 2
    functionsReached:
    - memset
    - struct hash_format_list*::method::init
    linkageType: ''
    returnType: void
    signature: void hash_format_reset(struct hash_format *format)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash-format.c:169,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib/hash-format.c:173,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/hash-format.c:176,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib/hash-format.c:177,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/hash-format.c:179,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/hash-format.c:180,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/hash-format.c:183,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/hash-format.c:184,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/hash-format.c:187,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib/hash-format.c:188,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/hash-format.c:190,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/hash-format.c:191,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/hash-format.c:191,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/hash-format.c:192,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/hash-format.c:192,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 3
    argNames:
    - dest
    - list
    - digest
    argTypes:
    - string_t*
    - struct hash_format_list*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 195
    functionName: hash_format_digest
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - base64_encode
    - str_delete
    - str_truncate
    - i_assert
    - binary_to_hex_append
    linkageType: ''
    returnType: void
    signature: "void hash_format_digest(string_t *dest, const struct hash_format_list
      *list,\n\t\t   const unsigned char *digest)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/hash-format.c:208,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/hash-format.c:213,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash-format.c:218,1
    - Dst: struct hash_format_list*::method::result
      Src: /src/dovecot/src/lib/hash-format.c:219,1
    - Dst: hash_format_digest
      Src: /src/dovecot/src/lib/hash-format.c:220,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/hash-format.c:223,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash-format.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - format
    - dest
    argTypes:
    - struct hash_format*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 227
    functionName: hash_format_write
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 1
    functionsReached:
    - strchr
    - str_append_c
    - hash_format_digest
    - i_assert
    - struct hash_format_list*::method::result
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void hash_format_write(struct hash_format *format, string_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_format_write
      Src: /src/dovecot/src/lib/hash-format.c:235,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/hash-format.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _format
    - dest
    argTypes:
    - struct hash_format**
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 237
    functionName: hash_format_deinit
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 1
    functionsReached:
    - hash_format_write
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void hash_format_deinit(struct hash_format **_format, string_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/hash-format.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _format
    argTypes:
    - struct hash_format**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 245
    functionName: hash_format_deinit_free
    functionSourceFile: /src/dovecot/src/lib/hash-format.c
    functionUses: 2
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void hash_format_deinit_free(struct hash_format **_format)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: HASH_VALUE_CAST
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_VALUE_CAST(table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - table
    - ','
    - pool
    - ','
    - size
    - ','
    - hash_cb
    - ','
    - key_cmp_cb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: hash_table_create
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 56
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_create(table, pool, size, hash_cb, key_cmp_cb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - table
    - ','
    - pool
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: hash_table_create_direct
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_create_direct(table, pool, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: hash_table_is_created
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_is_created(table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: hash_table_destroy
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 63
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_destroy(table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - table
    - ','
    - free_collisions
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: hash_table_clear
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_clear(table, free_collisions)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - table
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: hash_table_lookup
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 126
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_lookup(table, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - table
    - ','
    - lookup_key
    - ','
    - orig_key_r
    - ','
    - value_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: hash_table_lookup_full
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_lookup_full(table, lookup_key, orig_key_r, value_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - table
    - ','
    - lookup_key
    - ','
    - orig_key_r
    - ','
    - value_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: hash_table_lookup_full
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_lookup_full(table, lookup_key, orig_key_r, value_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - table
    - ','
    - key
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: hash_table_insert
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 73
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_insert(table, key, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - table
    - ','
    - key
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 115
    functionName: hash_table_update
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_update(table, key, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - table
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: hash_table_try_remove
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_try_remove(table, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - table
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: hash_table_remove
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_remove(table, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: hash_table_count
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_count(table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 136
    functionName: hash_table_iterate_init
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 48
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_iterate_init(table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ctx
    - ','
    - table
    - ','
    - key_r
    - ','
    - value_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: hash_table_iterate
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 48
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_iterate(ctx, table, key_r, value_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ctx
    - ','
    - table
    - ','
    - key_r
    - ','
    - value_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: hash_table_iterate
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 48
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_iterate(ctx, table, key_r, value_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: hash_table_freeze
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_freeze(table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - table
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: hash_table_thaw
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_thaw(table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - table1
    - ','
    - table2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 170
    functionName: hash_table_copy
    functionSourceFile: /src/dovecot/src/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_table_copy(table1, table2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-timeout.c:24,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/istream-timeout.c:26,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream-timeout.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 20
    functionDepth: 3
    functionLinenumber: 20
    functionLinenumberEnd: 29
    functionName: i_stream_timeout_close
    functionSourceFile: /src/dovecot/src/lib/istream-timeout.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void i_stream_timeout_close(struct iostream_private *stream,\n\t\t\t\t
      \  bool close_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-timeout.c:35,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib/istream-timeout.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct istream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: i_stream_timeout_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/istream-timeout.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_loop_move_timeout_to
    linkageType: ''
    returnType: void
    signature: "void i_stream_timeout_switch_ioloop_to(struct istream_private *stream,\n\t\t\t\t\t
      \     struct ioloop *ioloop)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/istream-timeout.c:54,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/istream-timeout.c:56,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib/istream-timeout.c:61,1
    - Dst: io_stream_get_ioloop
      Src: /src/dovecot/src/lib/istream-timeout.c:61,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-timeout.c:68,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-timeout.c:72,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib/istream-timeout.c:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - tstream
    argTypes:
    - struct timeout_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 77
    functionName: i_stream_timeout
    functionSourceFile: /src/dovecot/src/lib/istream-timeout.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - io_stream_get_ioloop
    - io_stream_set_error
    - i_stream_set_input_pending
    - t_strdup_printf
    - timeout_add_to
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void i_stream_timeout(struct timeout_istream *tstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib/istream-timeout.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tstream
    argTypes:
    - struct timeout_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 88
    functionName: i_stream_timeout_set_pending
    functionSourceFile: /src/dovecot/src/lib/istream-timeout.c
    functionUses: 0
    functionsReached:
    - i_stream_set_input_pending
    linkageType: ''
    returnType: void
    signature: void i_stream_timeout_set_pending(struct timeout_istream *tstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-timeout.c:94,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-timeout.c:98,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib/istream-timeout.c:101,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-timeout.c:107,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-timeout.c:109,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib/istream-timeout.c:115,1
    - Dst: io_stream_get_ioloop
      Src: /src/dovecot/src/lib/istream-timeout.c:115,1
    - Dst: i_stream_timeout_set_pending
      Src: /src/dovecot/src/lib/istream-timeout.c:118,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib/istream-timeout.c:121,1
    - Dst: i_stream_timeout_set_pending
      Src: /src/dovecot/src/lib/istream-timeout.c:122,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 128
    functionName: i_stream_timeout_read
    functionSourceFile: /src/dovecot/src/lib/istream-timeout.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_stream_get_ioloop
    - io_stream_set_error
    - i_stream_read_copy_from_parent
    - timeout_reset
    - i_stream_get_error
    - i_stream_seek
    - i_stream_timeout_set_pending
    - timeout_add_to
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_timeout_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-timeout.c:135,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-timeout.c:148,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-timeout.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - input
    - timeout_msecs
    argTypes:
    - struct istream*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 130
    functionDepth: 4
    functionLinenumber: 130
    functionLinenumberEnd: 150
    functionName: i_stream_create_timeout
    functionSourceFile: /src/dovecot/src/lib/istream-timeout.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_timeout(struct istream *input, unsigned int timeout_msecs)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - stream
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: o_stream_add_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/ostream.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: o_stream_add_destroy_callback(stream, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - stream
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 151
    functionName: o_stream_set_flush_callback
    functionSourceFile: /src/dovecot/src/lib/ostream.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: o_stream_set_flush_callback(stream, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/ostream.h:176,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.h:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 178
    functionName: o_stream_uncork_flush
    functionSourceFile: /src/dovecot/src/lib/ostream.h
    functionUses: 6
    functionsReached:
    - o_stream_flush
    - o_stream_uncork
    linkageType: ''
    returnType: int
    signature: int o_stream_uncork_flush(struct ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-backtrace.c:7,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-backtrace.c:8,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:11,1
    - Dst: backtrace_append
      Src: /src/dovecot/src/lib/test-backtrace.c:11,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:15,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-backtrace.c:15,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-backtrace.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:17,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-backtrace.c:17,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-backtrace.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:20,1
    - Dst: backtrace_append
      Src: /src/dovecot/src/lib/test-backtrace.c:20,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:22,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-backtrace.c:22,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-backtrace.c:22,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:25,1
    - Dst: backtrace_append
      Src: /src/dovecot/src/lib/test-backtrace.c:25,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-backtrace.c:27,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 5
    functionDepth: 3
    functionLinenumber: 5
    functionLinenumberEnd: 28
    functionName: test_backtrace_append
    functionSourceFile: /src/dovecot/src/lib/test-backtrace.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - backtrace_append
    - test_end
    - test_assert
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_backtrace_append(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-backtrace.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:35,1
    - Dst: backtrace_get
      Src: /src/dovecot/src/lib/test-backtrace.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:39,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-backtrace.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:41,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-backtrace.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:44,1
    - Dst: backtrace_get
      Src: /src/dovecot/src/lib/test-backtrace.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:46,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-backtrace.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-backtrace.c:49,1
    - Dst: backtrace_get
      Src: /src/dovecot/src/lib/test-backtrace.c:49,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-backtrace.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 30
    functionDepth: 3
    functionLinenumber: 30
    functionLinenumberEnd: 52
    functionName: test_backtrace_get
    functionSourceFile: /src/dovecot/src/lib/test-backtrace.c
    functionUses: 0
    functionsReached:
    - backtrace_get
    - test_end
    - test_assert
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_backtrace_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_backtrace_append
      Src: /src/dovecot/src/lib/test-backtrace.c:56,1
    - Dst: test_backtrace_get
      Src: /src/dovecot/src/lib/test-backtrace.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: test_backtrace
    functionSourceFile: /src/dovecot/src/lib/test-backtrace.c
    functionUses: 0
    functionsReached:
    - test_backtrace_append
    - test_backtrace_get
    linkageType: ''
    returnType: void
    signature: void test_backtrace(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 5
    functionName: IS_ESCAPED_CHAR
    functionSourceFile: /src/dovecot/src/lib/strescape.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ESCAPED_CHAR(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_nescape
      Src: /src/dovecot/src/lib/strescape.h:13,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strescape.h:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 14
    functionName: str_escape
    functionSourceFile: /src/dovecot/src/lib/strescape.h
    functionUses: 6
    functionsReached:
    - strlen
    - str_nescape
    linkageType: ''
    returnType: char
    signature: char *str_escape(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CDPUT
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:28,1
    - Dst: CDPUT
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:29,1
    - Dst: CDPUT
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:30,1
    - Dst: CDPUT
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:31,1
    - Dst: CDPUT
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:32,1
    - Dst: CDPUT
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:33,1
    - Dst: CDPUT
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:34,1
    - Dst: CDPUT
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - _hmac_ctx
    - context_digest
    argTypes:
    - struct hmac_context*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 36
    functionName: hmac_md5_get_cram_context
    functionSourceFile: /src/dovecot/src/lib/hmac-cram-md5.c
    functionUses: 0
    functionsReached:
    - CDPUT
    linkageType: ''
    returnType: void
    signature: "void hmac_md5_get_cram_context(struct hmac_context *_hmac_ctx,\n\t\t\tunsigned
      char context_digest[CRAM_MD5_CONTEXTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 27
    functionName: CDPUT
    functionSourceFile: /src/dovecot/src/lib/hmac-cram-md5.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CDPUT(p, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CDGET
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:54,1
    - Dst: CDGET
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:55,1
    - Dst: CDGET
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:56,1
    - Dst: CDGET
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:57,1
    - Dst: CDGET
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:58,1
    - Dst: CDGET
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:59,1
    - Dst: CDGET
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:60,1
    - Dst: CDGET
      Src: /src/dovecot/src/lib/hmac-cram-md5.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - _hmac_ctx
    - context_digest
    argTypes:
    - struct hmac_context*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 65
    functionName: hmac_md5_set_cram_context
    functionSourceFile: /src/dovecot/src/lib/hmac-cram-md5.c
    functionUses: 1
    functionsReached:
    - CDGET
    linkageType: ''
    returnType: void
    signature: "void hmac_md5_set_cram_context(struct hmac_context *_hmac_ctx,\n\t\t\tconst
      unsigned char context_digest[CRAM_MD5_CONTEXTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: CDGET
    functionSourceFile: /src/dovecot/src/lib/hmac-cram-md5.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CDGET(p, c)
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/unicode-data.c:8,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 126
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 172
    functionName: unicode_general_category_from_string
    functionSourceFile: /src/dovecot/src/lib/unicode-data.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t unicode_general_category_from_string(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base32.c:27,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base32.c:28,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base32.c:29,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:30,1
    - Dst: base32_encode
      Src: /src/dovecot/src/lib/test-base32.c:31,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base32.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:32,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-base32.c:32,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base32.c:32,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base32.c:34,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base32.c:36,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base32.c:37,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base32.c:38,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/test-base32.c:39,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base32.c:43,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:46,1
    - Dst: base32_encode
      Src: /src/dovecot/src/lib/test-base32.c:47,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base32.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:48,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/test-base32.c:48,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base32.c:48,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base32.c:50,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 51
    functionName: test_base32_encode
    functionSourceFile: /src/dovecot/src/lib/test-base32.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - strchr
    - strlen
    - test_end
    - strncmp
    - str_truncate
    - test_assert
    - base32_encode
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base32_encode(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base32.c:72,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base32.c:73,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base32.c:74,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:75,1
    - Dst: base32hex_encode
      Src: /src/dovecot/src/lib/test-base32.c:76,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base32.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:77,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-base32.c:77,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base32.c:77,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base32.c:79,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base32.c:81,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base32.c:82,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base32.c:83,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/test-base32.c:84,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base32.c:88,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:91,1
    - Dst: base32hex_encode
      Src: /src/dovecot/src/lib/test-base32.c:92,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base32.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:93,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/test-base32.c:93,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base32.c:93,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base32.c:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 97
    functionName: test_base32hex_encode
    functionSourceFile: /src/dovecot/src/lib/test-base32.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - strchr
    - strlen
    - base32hex_encode
    - test_end
    - str_truncate
    - test_assert
    - strncmp
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base32hex_encode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base32.c:126,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base32.c:127,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base32.c:128,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:129,1
    - Dst: base32_decode
      Src: /src/dovecot/src/lib/test-base32.c:132,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base32.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-base32.c:135,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base32.c:135,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base32.c:138,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base32.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 141
    functionName: test_base32_decode
    functionSourceFile: /src/dovecot/src/lib/test-base32.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - base32_decode
    - strlen
    - test_end
    - str_truncate
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base32_decode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base32.c:149,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base32.c:150,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base32.c:152,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base32.c:154,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-base32.c:156,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:158,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:159,1
    - Dst: base32_encode
      Src: /src/dovecot/src/lib/test-base32.c:160,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:161,1
    - Dst: base32_decode
      Src: /src/dovecot/src/lib/test-base32.c:161,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base32.c:161,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base32.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:162,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base32.c:162,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base32.c:163,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base32.c:163,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base32.c:165,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base32.c:167,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base32.c:169,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-base32.c:171,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:173,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base32.c:174,1
    - Dst: base32hex_encode
      Src: /src/dovecot/src/lib/test-base32.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:176,1
    - Dst: base32hex_decode
      Src: /src/dovecot/src/lib/test-base32.c:176,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base32.c:176,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base32.c:176,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base32.c:177,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base32.c:177,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base32.c:178,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base32.c:178,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base32.c:180,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 181
    functionName: test_base32_random
    functionSourceFile: /src/dovecot/src/lib/test-base32.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - base32_decode
    - str_data
    - str_len
    - test_end
    - base32hex_encode
    - i_rand_uchar
    - str_truncate
    - i_rand_limit
    - test_assert
    - memcmp
    - base32_encode
    - base32hex_decode
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base32_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_base32_encode
      Src: /src/dovecot/src/lib/test-base32.c:185,1
    - Dst: test_base32hex_encode
      Src: /src/dovecot/src/lib/test-base32.c:186,1
    - Dst: test_base32_decode
      Src: /src/dovecot/src/lib/test-base32.c:187,1
    - Dst: test_base32_random
      Src: /src/dovecot/src/lib/test-base32.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: test_base32
    functionSourceFile: /src/dovecot/src/lib/test-base32.c
    functionUses: 0
    functionsReached:
    - test_base32_decode
    - test_base32_encode
    - test_base32_random
    - test_base32hex_encode
    linkageType: ''
    returnType: void
    signature: void test_base32(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:45,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:51,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:54,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:62,1
    - Dst: io_notify_fd_find
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:65,1
    - Dst: io_loop_call_io
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:72,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:76,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 78
    functionName: inotify_input_more
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-inotify.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - i_error
    - i_fatal
    - io_loop_call_io
    - read
    - io_notify_fd_find
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool inotify_input_more(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inotify_input_more
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: inotify_input
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-inotify.c
    functionUses: 0
    functionsReached:
    - inotify_input_more
    linkageType: ''
    returnType: void
    signature: void inotify_input(struct ioloop *ioloop)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_notify_handler_init
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:98,1
    - Dst: inotify_add_watch
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:102,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:112,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:114,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:123,1
    - Dst: io_notify_fd_add
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:127,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 6
    argNames:
    - path
    - source_filename
    - source_linenum
    - callback
    - context
    - io_r
    argTypes:
    - char*
    - char*
    - unsigned int
    - io_callback_t*
    - void*
    - struct io**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 131
    functionName: io_add_notify
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-inotify.c
    functionUses: 4
    functionsReached:
    - i_error
    - io_add
    - io_loop_notify_handler_init
    - i_warning
    - io_notify_fd_add
    - inotify_add_watch
    linkageType: ''
    returnType: enum io_notify_result
    signature: "enum io_notify_result io_add_notify(const char *path, const char *source_filename,\n\t
      \     unsigned int source_linenum,\n\t      io_callback_t *callback, void *context,
      struct io **io_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inotify_rm_watch
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:142,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:144,1
    - Dst: io_notify_fd_free
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:147,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - _io
    argTypes:
    - struct io*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 151
    functionName: io_loop_notify_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-inotify.c
    functionUses: 0
    functionsReached:
    - io_remove
    - io_notify_fd_free
    - i_error
    - inotify_rm_watch
    linkageType: ''
    returnType: void
    signature: void io_loop_notify_remove(struct io *_io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:157,1
    - Dst: i_getpwuid
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:159,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:160,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:162,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:163,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 167
    functionName: ioloop_inotify_user_limit_exceeded
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-inotify.c
    functionUses: 0
    functionsReached:
    - dec2str
    - geteuid
    - t_strdup_printf
    - i_warning
    - i_getpwuid
    linkageType: ''
    returnType: void
    signature: void ioloop_inotify_user_limit_exceeded(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:175,1
    - Dst: inotify_init
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:177,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:180,1
    - Dst: ioloop_inotify_user_limit_exceeded
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:182,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:185,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 189
    functionName: io_loop_notify_handler_init
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-inotify.c
    functionUses: 1
    functionsReached:
    - fd_close_on_exec
    - i_error
    - fd_set_nonblock
    - ioloop_inotify_user_limit_exceeded
    - inotify_init
    - i_new
    linkageType: ''
    returnType: struct ioloop_notify_handler_context
    signature: struct ioloop_notify_handler_context *io_loop_notify_handler_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:200,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:204,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:207,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 209
    functionName: io_loop_notify_handler_deinit
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-inotify.c
    functionUses: 0
    functionsReached:
    - io_remove
    - i_free
    - i_warning
    - i_close_fd
    linkageType: ''
    returnType: void
    signature: void io_loop_notify_handler_deinit(struct ioloop *ioloop)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inotify_init
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:221,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:224,1
    - Dst: ioloop_inotify_user_limit_exceeded
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:226,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ioloop-notify-inotify.c:231,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 211
    functionDepth: 4
    functionLinenumber: 211
    functionLinenumberEnd: 235
    functionName: io_loop_extract_notify_fd
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-inotify.c
    functionUses: 1
    functionsReached:
    - ioloop_inotify_user_limit_exceeded
    - io_remove
    - inotify_init
    - i_error
    linkageType: ''
    returnType: int
    signature: int io_loop_extract_notify_fd(struct ioloop *ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-concat.c:26,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-concat.c:27,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:28,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib/test-istream-concat.c:32,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:35,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:35,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:38,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-concat.c:40,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:47,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:49,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:49,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-concat.c:50,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:50,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:54,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - buffer_size
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 14
    functionDepth: 4
    functionLinenumber: 14
    functionLinenumberEnd: 57
    functionName: test_istream_concat_one
    functionSourceFile: /src/dovecot/src/lib/test-istream-concat.c
    functionUses: 0
    functionsReached:
    - test_istream_set_size
    - i_stream_get_data_size
    - test_istream_set_allow_eof
    - i_stream_get_data
    - i_stream_skip
    - i_stream_read
    - test_istream_create
    - test_assert
    - i_stream_unref
    - i_stream_create_concat
    linkageType: ''
    returnType: void
    signature: void test_istream_concat_one(unsigned int buffer_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-concat.c:67,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-istream-concat.c:68,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-concat.c:70,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-istream-concat.c:71,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:74,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-concat.c:75,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:78,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib/test-istream-concat.c:80,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:81,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-concat.c:83,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-istream-concat.c:85,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/test-istream-concat.c:87,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-concat.c:91,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-concat.c:92,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-concat.c:93,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-concat.c:93,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:95,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:101,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-concat.c:102,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-concat.c:102,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:106,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-istream-concat.c:110,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:114,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:116,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:117,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-istream-concat.c:118,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 59
    functionDepth: 5
    functionLinenumber: 59
    functionLinenumberEnd: 119
    functionName: test_istream_concat_random
    functionSourceFile: /src/dovecot/src/lib/test-istream-concat.c
    functionUses: 0
    functionsReached:
    - t_new
    - i_stream_get_data_size
    - i_stream_create_concat
    - i_stream_create_limit
    - test_istream_set_allow_eof
    - i_stream_get_data
    - i_stream_skip
    - test_has_failed
    - i_stream_read
    - test_istream_create_data
    - i_stream_set_max_buffer_size
    - i_rand_limit
    - t_malloc_no0
    - i_stream_seek
    - test_assert
    - i_rand_minmax
    - i_assert
    - i_stream_unref
    linkageType: ''
    returnType: bool
    signature: bool test_istream_concat_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-concat.c:123,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-concat.c:126,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-concat.c:127,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib/test-istream-concat.c:130,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:131,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:132,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-concat.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:135,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:135,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:136,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-concat.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 139
    functionName: test_istream_concat_seek_end
    functionSourceFile: /src/dovecot/src/lib/test-istream-concat.c
    functionUses: 0
    functionsReached:
    - test_end
    - i_stream_read
    - test_istream_create
    - i_stream_seek
    - test_assert
    - i_stream_unref
    - i_stream_create_concat
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_concat_seek_end(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-concat.c:145,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-concat.c:147,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:148,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-concat.c:149,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib/test-istream-concat.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:153,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:153,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:155,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:155,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-concat.c:156,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:159,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:160,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-concat.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 163
    functionName: test_istream_concat_early_end
    functionSourceFile: /src/dovecot/src/lib/test-istream-concat.c
    functionUses: 0
    functionsReached:
    - test_istream_set_size
    - test_istream_set_allow_eof
    - i_stream_skip
    - test_end
    - i_stream_read
    - test_istream_create
    - test_assert
    - i_stream_unref
    - i_stream_create_concat
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_concat_early_end(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-concat.c:171,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-concat.c:174,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-concat.c:175,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-concat.c:176,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib/test-istream-concat.c:180,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:183,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:186,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:187,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:188,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-concat.c:191,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:192,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:194,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-concat.c:194,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-concat.c:197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:200,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:200,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:201,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-concat.c:202,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:204,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:204,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:205,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:207,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:208,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-concat.c:209,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:210,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:210,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:211,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-concat.c:212,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:213,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:213,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:214,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:215,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-concat.c:215,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-concat.c:219,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:222,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:223,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-concat.c:223,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-concat.c:224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:225,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-concat.c:225,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-concat.c:227,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-concat.c:227,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-concat.c:230,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-concat.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 165
    functionDepth: 5
    functionLinenumber: 165
    functionLinenumberEnd: 232
    functionName: test_istream_concat_snapshot
    functionSourceFile: /src/dovecot/src/lib/test-istream-concat.c
    functionUses: 0
    functionsReached:
    - i_stream_create_concat
    - test_istream_set_allow_eof
    - i_stream_skip
    - test_end
    - i_stream_read
    - test_istream_create
    - test_assert
    - i_stream_unref
    - memcmp
    - test_istream_set_size
    - i_stream_read_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_concat_snapshot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-concat.c:238,1
    - Dst: test_istream_concat_one
      Src: /src/dovecot/src/lib/test-istream-concat.c:240,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-concat.c:242,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-concat.c:244,1
    - Dst: if
      Src: /src/dovecot/src/lib/test-istream-concat.c:246,1
    - Dst: test_istream_concat_random
      Src: /src/dovecot/src/lib/test-istream-concat.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 234
    functionDepth: 6
    functionLinenumber: 234
    functionLinenumberEnd: 248
    functionName: test_istream_concat
    functionSourceFile: /src/dovecot/src/lib/test-istream-concat.c
    functionUses: 0
    functionsReached:
    - if
    - test_istream_concat_random
    - test_end
    - test_istream_concat_one
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_concat(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hex-binary.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:16,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-hex-binary.c:16,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib/test-hex-binary.c:16,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hex-binary.c:17,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hex-binary.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:20,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-hex-binary.c:20,1
    - Dst: binary_to_hex_ucase
      Src: /src/dovecot/src/lib/test-hex-binary.c:20,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hex-binary.c:21,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hex-binary.c:23,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-hex-binary.c:24,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-hex-binary.c:25,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib/test-hex-binary.c:26,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-hex-binary.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:28,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-hex-binary.c:28,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-hex-binary.c:28,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-hex-binary.c:28,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hex-binary.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 30
    functionName: test_binary_to_hex
    functionSourceFile: /src/dovecot/src/lib/test-hex-binary.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - t_strconcat
    - test_end
    - binary_to_hex_ucase
    - test_assert
    - binary_to_hex
    - binary_to_hex_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_binary_to_hex(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-hex-binary.c:41,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hex-binary.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:45,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib/test-hex-binary.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:48,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib/test-hex-binary.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:49,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hex-binary.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:50,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-hex-binary.c:50,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hex-binary.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hex-binary.c:53,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib/test-hex-binary.c:53,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hex-binary.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 32
    functionDepth: 3
    functionLinenumber: 32
    functionLinenumberEnd: 55
    functionName: test_hex_to_binary
    functionSourceFile: /src/dovecot/src/lib/test-hex-binary.c
    functionUses: 0
    functionsReached:
    - hex_to_binary
    - t_buffer_create
    - test_end
    - test_assert
    - memcmp
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hex_to_binary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_binary_to_hex
      Src: /src/dovecot/src/lib/test-hex-binary.c:59,1
    - Dst: test_hex_to_binary
      Src: /src/dovecot/src/lib/test-hex-binary.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: test_hex_binary
    functionSourceFile: /src/dovecot/src/lib/test-hex-binary.c
    functionUses: 0
    functionsReached:
    - test_binary_to_hex
    - test_hex_to_binary
    linkageType: ''
    returnType: void
    signature: void test_hex_binary(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-sized.c:23,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-sized.c:29,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-sized.c:30,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/test-istream-sized.c:31,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-sized.c:34,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-sized.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-sized.c:38,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-sized.c:41,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-sized.c:42,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-sized.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-sized.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-sized.c:46,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-sized.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-sized.c:49,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/test-istream-sized.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-sized.c:51,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-sized.c:51,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-sized.c:52,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-sized.c:53,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - sized_input
    - sized_size
    - stream_errno
    argTypes:
    - char*
    - uoff_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 20
    functionDepth: 4
    functionLinenumber: 20
    functionLinenumberEnd: 54
    functionName: run_test
    functionSourceFile: /src/dovecot/src/lib/test-istream-sized.c
    functionUses: 12
    functionsReached:
    - I_MIN
    - strlen
    - test_istream_set_allow_eof
    - i_stream_get_data
    - i_stream_read
    - test_istream_create_data
    - i_stream_create_sized
    - test_assert
    - memcmp
    - test_istream_set_size
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void run_test(const char *sized_input, uoff_t sized_size, int stream_errno)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-sized.c:64,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-sized.c:65,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-sized.c:66,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/test-istream-sized.c:69,1
    - Dst: i_stream_create_min_sized
      Src: /src/dovecot/src/lib/test-istream-sized.c:71,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/test-istream-sized.c:72,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-sized.c:73,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-sized.c:73,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-sized.c:74,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-sized.c:75,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-sized.c:75,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-sized.c:77,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-sized.c:77,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-sized.c:79,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-sized.c:81,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-sized.c:82,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-sized.c:82,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-sized.c:89,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-sized.c:90,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-sized.c:91,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - exact
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 93
    functionName: test_istream_sized_full
    functionSourceFile: /src/dovecot/src/lib/test-istream-sized.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - I_MIN
    - test_istream_set_allow_eof
    - i_stream_read
    - test_istream_create_data
    - i_stream_create_sized
    - i_stream_unref
    - i_stream_create_min_sized
    - test_istream_set_size
    linkageType: ''
    returnType: void
    signature: void test_istream_sized_full(bool exact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-sized.c:99,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-sized.c:100,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-sized.c:100,1
    - Dst: run_test
      Src: /src/dovecot/src/lib/test-istream-sized.c:101,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-sized.c:102,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-sized.c:104,1
    - Dst: test_istream_sized_full
      Src: /src/dovecot/src/lib/test-istream-sized.c:105,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-sized.c:106,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-sized.c:108,1
    - Dst: test_istream_sized_full
      Src: /src/dovecot/src/lib/test-istream-sized.c:109,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-sized.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 95
    functionDepth: 5
    functionLinenumber: 95
    functionLinenumberEnd: 111
    functionName: test_istream_sized
    functionSourceFile: /src/dovecot/src/lib/test-istream-sized.c
    functionUses: 0
    functionsReached:
    - run_test
    - t_strdup_printf
    - test_end
    - N_ELEMENTS
    - test_begin
    - test_istream_sized_full
    linkageType: ''
    returnType: void
    signature: void test_istream_sized(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-connection.c:49,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib/test-connection.c:50,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib/test-connection.c:51,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/test-connection.c:52,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/test-connection.c:53,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:59,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib/test-connection.c:59,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-connection.c:61,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-connection.c:62,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib/test-connection.c:63,1
    - Dst: connection_init_client_fd
      Src: /src/dovecot/src/lib/test-connection.c:64,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-connection.c:66,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib/test-connection.c:68,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib/test-connection.c:69,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-connection.c:72,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-connection.c:73,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib/test-connection.c:75,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib/test-connection.c:76,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-connection.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 5
    argNames:
    - set_s
    - set_c
    - v_s
    - v_c
    - iter_count
    argTypes:
    - struct connection_settings*
    - struct connection_settings*
    - struct connection_vfuncs*
    - struct connection_vfuncs*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 41
    functionDepth: 6
    functionLinenumber: 41
    functionLinenumberEnd: 79
    functionName: test_connection_run
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - connection_list_init
    - i_free
    - fd_set_nonblock
    - io_loop_destroy
    - io_loop_create
    - connection_init_server
    - i_new
    - test_assert
    - socketpair
    - connection_init_client_fd
    - connection_deinit
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: "void test_connection_run(const struct connection_settings *set_s,\n\t\t\t\tconst
      struct connection_settings *set_c,\n\t\t\t\tconst struct connection_vfuncs *v_s,\n\t\t\t\tconst
      struct connection_vfuncs *v_c,\n\t\t\t\tunsigned int iter_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: test_connection_simple_client_connected
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_simple_client_connected(struct connection *conn,
      bool success)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:93,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib/test-connection.c:95,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-connection.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 100
    functionName: test_connection_simple_input_args
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_error
    - connection_disconnect
    linkageType: ''
    returnType: int
    signature: int test_connection_simple_input_args(struct connection *conn, const
      char *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-connection.c:104,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib/test-connection.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: test_connection_simple_destroy
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_connection_simple_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:117,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:121,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 115
    functionDepth: 7
    functionLinenumber: 115
    functionLinenumberEnd: 125
    functionName: test_connection_simple
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_simple(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-connection.c:155,1
    - Dst: i_stream_set_blocking
      Src: /src/dovecot/src/lib/test-connection.c:156,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-connection.c:157,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib/test-connection.c:158,1
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib/test-connection.c:159,1
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/lib/test-connection.c:160,1
    - Dst: connection_set_handshake_ready
      Src: /src/dovecot/src/lib/test-connection.c:161,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:164,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-connection.c:166,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-connection.c:170,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 151
    functionDepth: 5
    functionLinenumber: 151
    functionLinenumberEnd: 171
    functionName: test_connection_no_input_input
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_stream_create_fd
    - connection_set_handshake_ready
    - t_strsplit_tabescaped
    - connection_handshake_received
    - i_stream_read_next_line
    - io_loop_stop
    - i_stream_set_blocking
    - i_stream_unref
    - connection_handshake_args_default
    linkageType: ''
    returnType: void
    signature: void test_connection_no_input_input(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:182,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:187,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 180
    functionDepth: 7
    functionLinenumber: 180
    functionLinenumberEnd: 191
    functionName: test_connection_no_input
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_no_input(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: test_connection_custom_handshake_client_connected
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_custom_handshake_client_connected(struct connection
      *conn, bool success)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_args_default
      Src: /src/dovecot/src/lib/test-connection.c:205,1
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib/test-connection.c:209,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:210,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:211,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:213,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:215,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 201
    functionDepth: 3
    functionLinenumber: 201
    functionLinenumberEnd: 221
    functionName: test_connection_custom_handshake_args
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - connection_handshake_args_default
    - o_stream_nsend_str
    - connection_handshake_received
    linkageType: ''
    returnType: int
    signature: "int test_connection_custom_handshake_args(struct connection *conn,\n\t\t\t\t\t\t
      const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:233,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:235,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:238,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 231
    functionDepth: 7
    functionLinenumber: 231
    functionLinenumberEnd: 242
    functionName: test_connection_custom_handshake
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_custom_handshake(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:249,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/test-connection.c:252,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:255,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:256,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib/test-connection.c:257,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:258,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:260,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-connection.c:260,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:261,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:262,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-connection.c:262,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 246
    functionDepth: 3
    functionLinenumber: 246
    functionLinenumberEnd: 266
    functionName: test_connection_ping_pong_input_args
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strdup_printf
    - test_assert
    - str_to_uint
    - o_stream_nsend_str
    - connection_disconnect
    linkageType: ''
    returnType: int
    signature: int test_connection_ping_pong_input_args(struct connection *conn, const
      char *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:270,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 272
    functionName: test_connection_ping_pong_client_connected
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_ping_pong_client_connected(struct connection *conn,
      bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:283,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:288,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 281
    functionDepth: 7
    functionLinenumber: 281
    functionLinenumberEnd: 291
    functionName: test_connection_ping_pong
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_ping_pong(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-connection.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 313
    functionName: test_connection_input_full_input_args
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    linkageType: ''
    returnType: int
    signature: "int test_connection_input_full_input_args(struct connection *conn,\n\t\t\t\t\t\t
      const char *const *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:317,1
    - Dst: test_connection_simple_destroy
      Src: /src/dovecot/src/lib/test-connection.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 315
    functionDepth: 4
    functionLinenumber: 315
    functionLinenumberEnd: 320
    functionName: test_connection_input_full_destroy
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_connection_simple_destroy
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_input_full_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:331,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:333,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 329
    functionDepth: 7
    functionLinenumber: 329
    functionLinenumberEnd: 336
    functionName: test_connection_input_full
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_input_full(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:344,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: test_connection_resume_client_connected
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_resume_client_connected(struct connection *conn,
      bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-connection.c:350,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib/test-connection.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 348
    functionDepth: 3
    functionLinenumber: 348
    functionLinenumberEnd: 354
    functionName: test_connection_resume_continue
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_connection_resume_continue(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-connection.c:358,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 360
    functionName: test_connection_resume_send_quit
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_connection_resume_send_quit(struct connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:365,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:369,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:370,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-connection.c:371,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:372,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib/test-connection.c:373,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-connection.c:374,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:375,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib/test-connection.c:377,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 381
    functionName: test_connection_resume_input_args
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - connection_input_halt
    - timeout_add_short
    - test_assert
    - o_stream_nsend_str
    - connection_disconnect
    linkageType: ''
    returnType: int
    signature: "int test_connection_resume_input_args(struct connection *conn,\n\t\t\t\t\t
      \    const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:392,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:395,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:397,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:398,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 390
    functionDepth: 7
    functionLinenumber: 390
    functionLinenumberEnd: 402
    functionName: test_connection_resume
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_resume(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:408,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:412,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:413,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:414,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib/test-connection.c:415,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-connection.c:416,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:418,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib/test-connection.c:420,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 405
    functionDepth: 3
    functionLinenumber: 405
    functionLinenumberEnd: 424
    functionName: test_connection_resume_pipelined_input_args
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - connection_input_halt
    - timeout_add_short
    - test_assert
    - o_stream_nsend_str
    - connection_disconnect
    linkageType: ''
    returnType: int
    signature: "int test_connection_resume_pipelined_input_args(struct connection
      *conn,\n\t\t\t\t\t\t       const char *const *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:435,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:438,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:441,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:442,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 433
    functionDepth: 7
    functionLinenumber: 433
    functionLinenumberEnd: 446
    functionName: test_connection_resume_pipelined
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_resume_pipelined(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 455
    functionName: test_connection_idle_kill_client_connected
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_connection_idle_kill_client_connected(struct connection
      *conn ATTR_UNUSED,\n\t\t\t\t\t   bool success)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 473
    functionName: test_connection_idle_kill_timeout
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_connection_idle_kill_timeout(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:485,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:488,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:491,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:492,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 483
    functionDepth: 7
    functionLinenumber: 483
    functionLinenumberEnd: 496
    functionName: test_connection_idle_kill
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_idle_kill(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:502,1
    - Dst: test_connection_simple_destroy
      Src: /src/dovecot/src/lib/test-connection.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 500
    functionDepth: 4
    functionLinenumber: 500
    functionLinenumberEnd: 504
    functionName: test_connection_handshake_failed_destroy
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_connection_simple_destroy
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_handshake_failed_destroy(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:555,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib/test-connection.c:557,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-connection.c:557,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-connection.c:561,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:562,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:564,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:568,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:570,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 513
    functionDepth: 7
    functionLinenumber: 513
    functionLinenumberEnd: 574
    functionName: test_connection_handshake_failed_version
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_connection_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_handshake_failed_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 583
    functionName: test_connection_handshake_failed_1_args
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_connection_handshake_failed_1_args(struct connection *conn
      ATTR_UNUSED,\n\t\t\t\t\t\t   const char *const *args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:595,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:597,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 593
    functionDepth: 7
    functionLinenumber: 593
    functionLinenumberEnd: 601
    functionName: test_connection_handshake_failed_args
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_handshake_failed_args(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 609
    functionName: test_connection_handshake_failed_2_line
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_connection_handshake_failed_2_line(struct connection *conn
      ATTR_UNUSED,\n\t\t\t\t\t\t   const char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:621,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:623,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 619
    functionDepth: 7
    functionLinenumber: 619
    functionLinenumberEnd: 627
    functionName: test_connection_handshake_failed_line
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_handshake_failed_line(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 634
    functionName: test_connection_handshake_failed_3
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int test_connection_handshake_failed_3(struct connection *conn ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:646,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:648,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 644
    functionDepth: 7
    functionLinenumber: 644
    functionLinenumberEnd: 652
    functionName: test_connection_handshake_failed_input
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_handshake_failed_input(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:659,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 661
    functionName: test_connection_errored_client_connected
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_connection_errored_client_connected(struct connection *conn,\n\t\t\t\t\t\t
      \    bool success)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:665,1
    - Dst: test_connection_simple_destroy
      Src: /src/dovecot/src/lib/test-connection.c:666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 663
    functionDepth: 4
    functionLinenumber: 663
    functionLinenumberEnd: 667
    functionName: test_connection_errored_destroy
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_connection_simple_destroy
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_errored_destroy(struct connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-connection.c:672,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 669
    functionDepth: 2
    functionLinenumber: 669
    functionLinenumberEnd: 675
    functionName: test_connection_errored_input_line
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    linkageType: ''
    returnType: int
    signature: "int test_connection_errored_input_line(struct connection *conn ATTR_UNUSED,\n\t\t\t\t\t
      \     const char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:686,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:688,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 684
    functionDepth: 7
    functionLinenumber: 684
    functionLinenumberEnd: 692
    functionName: test_connection_input_error_reason
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_input_error_reason(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:719,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:721,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 717
    functionDepth: 7
    functionLinenumber: 717
    functionLinenumberEnd: 725
    functionName: test_connection_no_version
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_no_version(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:731,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-connection.c:770,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:771,1
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/lib/test-connection.c:771,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 772
    functionName: test_connection_is_valid_dns_name
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - connection_is_valid_dns_name
    - t_strdup_printf
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_is_valid_dns_name(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-connection.c:810,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 811
    functionName: output_throttle_flush_callback
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    linkageType: ''
    returnType: int
    signature: int output_throttle_flush_callback(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib/test-connection.c:816,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 813
    functionDepth: 1
    functionLinenumber: 813
    functionLinenumberEnd: 819
    functionName: output_throttle_client_input_line
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_assert_cmp
    linkageType: ''
    returnType: int
    signature: int output_throttle_client_input_line(struct connection *conn, const
      char *line ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_set_send_buffer_size
      Src: /src/dovecot/src/lib/test-connection.c:827,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:828,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/test-connection.c:829,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-connection.c:833,1
    - Dst: BLOCK
      Src: /src/dovecot/src/lib/test-connection.c:838,1
    - Dst: BLOCK
      Src: /src/dovecot/src/lib/test-connection.c:838,1
    - Dst: BLOCK
      Src: /src/dovecot/src/lib/test-connection.c:838,1
    - Dst: BLOCK
      Src: /src/dovecot/src/lib/test-connection.c:838,1
    - Dst: BLOCK
      Src: /src/dovecot/src/lib/test-connection.c:838,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:840,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 843
    functionName: output_throttle_server_input_line
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - strcmp
    - BLOCK
    - net_set_send_buffer_size
    - test_assert
    - o_stream_nsend_str
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: int
    signature: int output_throttle_server_input_line(struct connection *conn, const
      char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 838
    functionName: BLOCK
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BLOCK(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-connection.c:848,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-connection.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 853
    functionName: test_connection_output_throttle_client_connected
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_output_throttle_client_connected(struct connection
      *conn, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-connection.c:869,1
    - Dst: test_connection_run
      Src: /src/dovecot/src/lib/test-connection.c:871,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-connection.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 867
    functionDepth: 7
    functionLinenumber: 867
    functionLinenumberEnd: 876
    functionName: test_connection_output_throttle
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_connection_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_output_throttle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_connection_simple
      Src: /src/dovecot/src/lib/test-connection.c:882,1
    - Dst: test_connection_no_input
      Src: /src/dovecot/src/lib/test-connection.c:883,1
    - Dst: test_connection_custom_handshake
      Src: /src/dovecot/src/lib/test-connection.c:884,1
    - Dst: test_connection_ping_pong
      Src: /src/dovecot/src/lib/test-connection.c:885,1
    - Dst: test_connection_input_full
      Src: /src/dovecot/src/lib/test-connection.c:886,1
    - Dst: test_connection_resume
      Src: /src/dovecot/src/lib/test-connection.c:887,1
    - Dst: test_connection_resume_pipelined
      Src: /src/dovecot/src/lib/test-connection.c:888,1
    - Dst: test_connection_idle_kill
      Src: /src/dovecot/src/lib/test-connection.c:889,1
    - Dst: test_connection_handshake_failed_version
      Src: /src/dovecot/src/lib/test-connection.c:890,1
    - Dst: test_connection_handshake_failed_args
      Src: /src/dovecot/src/lib/test-connection.c:891,1
    - Dst: test_connection_handshake_failed_line
      Src: /src/dovecot/src/lib/test-connection.c:892,1
    - Dst: test_connection_handshake_failed_input
      Src: /src/dovecot/src/lib/test-connection.c:893,1
    - Dst: test_connection_input_error_reason
      Src: /src/dovecot/src/lib/test-connection.c:894,1
    - Dst: test_connection_no_version
      Src: /src/dovecot/src/lib/test-connection.c:895,1
    - Dst: test_connection_is_valid_dns_name
      Src: /src/dovecot/src/lib/test-connection.c:896,1
    - Dst: test_connection_output_throttle
      Src: /src/dovecot/src/lib/test-connection.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 880
    functionDepth: 8
    functionLinenumber: 880
    functionLinenumberEnd: 898
    functionName: test_connection
    functionSourceFile: /src/dovecot/src/lib/test-connection.c
    functionUses: 0
    functionsReached:
    - test_connection_simple
    - test_connection_custom_handshake
    - test_connection_ping_pong
    - test_connection_handshake_failed_args
    - test_connection_input_full
    - test_connection_handshake_failed_input
    - test_connection_resume
    - test_connection_is_valid_dns_name
    - test_connection_no_input
    - test_connection_idle_kill
    - test_connection_output_throttle
    - test_connection_handshake_failed_line
    - test_connection_no_version
    - test_connection_handshake_failed_version
    - test_connection_input_error_reason
    - test_connection_resume_pipelined
    linkageType: ''
    returnType: void
    signature: void test_connection(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - dest
    - data
    - size
    - ucase
    argTypes:
    - unsigned char*
    - unsigned char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 27
    functionName: binary_to_hex_case
    functionSourceFile: /src/dovecot/src/lib/hex-binary.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void binary_to_hex_case(unsigned char *dest, const unsigned char *data,\n\t\t
      \  size_t size, bool ucase)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/hex-binary.c:31,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/hex-binary.c:31,1
    - Dst: binary_to_hex_case
      Src: /src/dovecot/src/lib/hex-binary.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 29
    functionDepth: 5
    functionLinenumber: 29
    functionLinenumberEnd: 36
    functionName: binary_to_hex
    functionSourceFile: /src/dovecot/src/lib/hex-binary.c
    functionUses: 53
    functionsReached:
    - MALLOC_MULTIPLY
    - binary_to_hex_case
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: char *binary_to_hex(const unsigned char *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/hex-binary.c:40,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/hex-binary.c:40,1
    - Dst: binary_to_hex_case
      Src: /src/dovecot/src/lib/hex-binary.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 38
    functionDepth: 5
    functionLinenumber: 38
    functionLinenumberEnd: 45
    functionName: binary_to_hex_ucase
    functionSourceFile: /src/dovecot/src/lib/hex-binary.c
    functionUses: 1
    functionsReached:
    - MALLOC_MULTIPLY
    - binary_to_hex_case
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: char *binary_to_hex_ucase(const unsigned char *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/hex-binary.c:52,1
    - Dst: binary_to_hex_case
      Src: /src/dovecot/src/lib/hex-binary.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dest
    - data
    - size
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: binary_to_hex_append
    functionSourceFile: /src/dovecot/src/lib/hex-binary.c
    functionUses: 15
    functionsReached:
    - buffer_append_space_unsafe
    - binary_to_hex_case
    linkageType: ''
    returnType: void
    signature: "void binary_to_hex_append(string_t *dest, const unsigned char *data,\n\t\t\t
      \ size_t size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/hex-binary.c:80,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 21
    argCount: 2
    argNames:
    - data
    - dest
    argTypes:
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 85
    functionName: hex_to_binary
    functionSourceFile: /src/dovecot/src/lib/hex-binary.c
    functionUses: 16
    functionsReached:
    - buffer_append_c
    linkageType: ''
    returnType: int
    signature: int hex_to_binary(const char *data, buffer_t *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-multiplex.c:70,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/istream-multiplex.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mstream
    - cid
    argTypes:
    - struct multiplex_istream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: get_channel
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_foreach_elem
    linkageType: ''
    returnType: struct multiplex_ichannel
    signature: 'struct multiplex_ichannel *

      get_channel(struct multiplex_istream *mstream, uint8_t cid)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/istream-multiplex.c:81,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 94
    functionName: propagate_eof
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void propagate_eof(struct multiplex_istream *mstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:102,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/istream-multiplex.c:103,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:109,1
    - Dst: propagate_eof
      Src: /src/dovecot/src/lib/istream-multiplex.c:113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 114
    functionName: propagate_error
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - propagate_eof
    - io_stream_set_error
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void propagate_error(struct multiplex_istream *mstream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_channel
      Src: /src/dovecot/src/lib/istream-multiplex.c:122,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-multiplex.c:132,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib/istream-multiplex.c:135,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/istream-multiplex.c:141,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-multiplex.c:145,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-multiplex.c:146,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib/istream-multiplex.c:149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-multiplex.c:151,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-multiplex.c:152,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - req_channel
    - data
    - wanted
    - got
    argTypes:
    - struct multiplex_ichannel*
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 116
    functionDepth: 5
    functionLinenumber: 116
    functionLinenumberEnd: 157
    functionName: i_stream_multiplex_add
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_stream_try_alloc
    - i_stream_set_input_pending
    - I_MIN
    - get_channel
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t i_stream_multiplex_add(struct multiplex_ichannel *req_channel,\n\t\t
      \      const unsigned char *data, size_t wanted,\n\t\t       size_t *got)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-multiplex.c:172,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-multiplex.c:181,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:182,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-multiplex.c:187,1
    - Dst: i_stream_multiplex_read_packet
      Src: /src/dovecot/src/lib/istream-multiplex.c:192,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/istream-multiplex.c:198,1
    - Dst: i_stream_multiplex_add
      Src: /src/dovecot/src/lib/istream-multiplex.c:199,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-multiplex.c:205,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-multiplex.c:207,1
    - Dst: i_stream_multiplex_ichannel_read
      Src: /src/dovecot/src/lib/istream-multiplex.c:214,1
    - Dst: be32_to_cpu_unaligned
      Src: /src/dovecot/src/lib/istream-multiplex.c:223,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-multiplex.c:224,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:228,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 49
    argCount: 2
    argNames:
    - mstream
    - req_channel
    argTypes:
    - struct multiplex_istream*
    - struct multiplex_ichannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 159
    functionDepth: 6
    functionLinenumber: 159
    functionLinenumberEnd: 231
    functionName: i_stream_multiplex_read_packet
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 1
    functionsReached:
    - i_stream_multiplex_add
    - I_MIN
    - i_stream_get_data
    - i_stream_skip
    - be32_to_cpu_unaligned
    - propagate_error
    - i_stream_multiplex_read_packet
    - i_assert
    - i_stream_multiplex_ichannel_read
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t i_stream_multiplex_read_packet(struct multiplex_istream *mstream,\n\t\t\t
      \      struct multiplex_ichannel *req_channel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/istream-multiplex.c:237,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - mstream
    - error
    argTypes:
    - struct multiplex_istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 244
    functionName: i_stream_multiplex_set_io_error
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void i_stream_multiplex_set_io_error(struct multiplex_istream *mstream,\n\t\t\t\t\t
      \   const char *error)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-multiplex.c:255,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-multiplex.c:257,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-multiplex.c:258,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:259,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-multiplex.c:264,1
    - Dst: memchr
      Src: /src/dovecot/src/lib/istream-multiplex.c:268,1
    - Dst: i_stream_multiplex_add
      Src: /src/dovecot/src/lib/istream-multiplex.c:285,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-multiplex.c:291,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-multiplex.c:294,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-multiplex.c:306,1
    - Dst: i_stream_multiplex_add
      Src: /src/dovecot/src/lib/istream-multiplex.c:310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-multiplex.c:316,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-multiplex.c:317,1
    - Dst: i_stream_multiplex_set_io_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:321,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-multiplex.c:321,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-multiplex.c:327,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-multiplex.c:334,1
    - Dst: propagate_eof
      Src: /src/dovecot/src/lib/istream-multiplex.c:336,1
    - Dst: i_stream_multiplex_set_io_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:339,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-multiplex.c:339,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-multiplex.c:341,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 71
    argCount: 2
    argNames:
    - mstream
    - req_channel
    argTypes:
    - struct multiplex_istream*
    - struct multiplex_ichannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 246
    functionDepth: 6
    functionLinenumber: 246
    functionLinenumberEnd: 344
    functionName: i_stream_multiplex_read_stream
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_stream_multiplex_add
    - i_stream_multiplex_set_io_error
    - i_stream_get_data
    - memchr
    - t_strdup_printf
    - propagate_eof
    - i_stream_skip
    - propagate_error
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t i_stream_multiplex_read_stream(struct multiplex_istream *mstream,\n\t\t\t
      \      struct multiplex_ichannel *req_channel)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-multiplex.c:353,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-multiplex.c:354,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:355,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-multiplex.c:359,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/istream-multiplex.c:360,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-multiplex.c:365,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-multiplex.c:366,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:367,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-multiplex.c:371,1
    - Dst: i_stream_multiplex_set_io_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:374,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-multiplex.c:374,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/istream-multiplex.c:378,1
    - Dst: i_stream_multiplex_set_io_error
      Src: /src/dovecot/src/lib/istream-multiplex.c:380,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-multiplex.c:380,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-multiplex.c:386,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 346
    functionDepth: 4
    functionLinenumber: 346
    functionLinenumberEnd: 389
    functionName: i_stream_multiplex_read_header
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_stream_get_data
    - t_strdup_printf
    - i_stream_skip
    - memcmp
    - propagate_error
    - i_stream_multiplex_set_io_error
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_multiplex_read_header(struct multiplex_istream *mstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-multiplex.c:394,1
    - Dst: i_stream_multiplex_read_header
      Src: /src/dovecot/src/lib/istream-multiplex.c:407,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-multiplex.c:411,1
    - Dst: i_stream_multiplex_ichannel_read
      Src: /src/dovecot/src/lib/istream-multiplex.c:412,1
    - Dst: i_stream_multiplex_read_packet
      Src: /src/dovecot/src/lib/istream-multiplex.c:415,1
    - Dst: i_stream_multiplex_read_stream
      Src: /src/dovecot/src/lib/istream-multiplex.c:417,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/istream-multiplex.c:419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 391
    functionDepth: 7
    functionLinenumber: 391
    functionLinenumberEnd: 420
    functionName: i_stream_multiplex_ichannel_read
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 2
    functionsReached:
    - container_of
    - i_unreached
    - i_stream_multiplex_read_stream
    - i_stream_multiplex_read_packet
    - i_stream_multiplex_read_header
    - i_assert
    - i_stream_multiplex_ichannel_read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_multiplex_ichannel_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-multiplex.c:427,1
    - Dst: i_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/istream-multiplex.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct istream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 430
    functionName: i_stream_multiplex_ichannel_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: "void i_stream_multiplex_ichannel_switch_ioloop_to(struct istream_private
      *stream,\n\t\t\t\t\t     struct ioloop *ioloop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-multiplex.c:437,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/istream-multiplex.c:441,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream-multiplex.c:444,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 432
    functionDepth: 3
    functionLinenumber: 432
    functionLinenumberEnd: 446
    functionName: i_stream_multiplex_ichannel_close
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_close
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void i_stream_multiplex_ichannel_close(struct iostream_private *stream,
      bool close_parent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/istream-multiplex.c:452,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-multiplex.c:455,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/istream-multiplex.c:456,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-multiplex.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 458
    functionName: i_stream_multiplex_try_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_stream_unref
    - array_free
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void i_stream_multiplex_try_destroy(struct multiplex_istream *mstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-multiplex.c:464,1
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib/istream-multiplex.c:466,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/istream-multiplex.c:467,1
    - Dst: i_stream_multiplex_try_destroy
      Src: /src/dovecot/src/lib/istream-multiplex.c:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 460
    functionDepth: 3
    functionLinenumber: 460
    functionLinenumberEnd: 474
    functionName: i_stream_multiplex_ichannel_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - container_of
    - i_stream_free_buffer
    - i_stream_multiplex_try_destroy
    linkageType: ''
    returnType: void
    signature: void i_stream_multiplex_ichannel_destroy(struct iostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-multiplex.c:479,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-multiplex.c:489,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/istream-multiplex.c:492,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-multiplex.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - mstream
    - cid
    argTypes:
    - struct multiplex_istream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 476
    functionDepth: 4
    functionLinenumber: 476
    functionLinenumberEnd: 495
    functionName: i_stream_add_channel_real
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_stream_get_fd
    - i_stream_create
    - i_new
    - array_push_back
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_add_channel_real(struct multiplex_istream *mstream, uint8_t cid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-multiplex.c:500,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-multiplex.c:502,1
    - Dst: get_channel
      Src: /src/dovecot/src/lib/istream-multiplex.c:502,1
    - Dst: i_stream_add_channel_real
      Src: /src/dovecot/src/lib/istream-multiplex.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - cid
    argTypes:
    - struct istream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 497
    functionDepth: 5
    functionLinenumber: 497
    functionLinenumberEnd: 505
    functionName: i_stream_multiplex_add_channel
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 6
    functionsReached:
    - i_assert
    - container_of
    - get_channel
    - i_stream_add_channel_real
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_multiplex_add_channel(struct istream *stream,
      uint8_t cid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-multiplex.c:511,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/istream-multiplex.c:515,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/istream-multiplex.c:516,1
    - Dst: i_stream_add_channel_real
      Src: /src/dovecot/src/lib/istream-multiplex.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - parent
    - bufsize
    argTypes:
    - struct istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 507
    functionDepth: 5
    functionLinenumber: 507
    functionLinenumberEnd: 519
    functionName: i_stream_create_multiplex
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 6
    functionsReached:
    - i_array_init
    - i_stream_ref
    - i_new
    - i_stream_add_channel_real
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_multiplex(struct istream *parent, size_t
      bufsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-multiplex.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 527
    functionName: i_stream_multiplex_get_channel_id
    functionSourceFile: /src/dovecot/src/lib/istream-multiplex.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t i_stream_multiplex_get_channel_id(struct istream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:17,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:20,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:22,1
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:23,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:24,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:25,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:26,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:28,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:28,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:29,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:32,1
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:33,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:34,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:36,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:37,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:39,1
    - Dst: i_stream_create_failure_at_eof
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:40,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:41,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:42,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:43,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:45,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:45,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:46,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:47,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-failure-at.c:48,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 49
    functionName: test_istream_failure_at
    functionSourceFile: /src/dovecot/src/lib/test-istream-failure-at.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_idx
    - i_stream_create_failure_at
    - i_stream_create_from_data
    - i_stream_skip
    - i_stream_get_error
    - test_end
    - i_stream_seek
    - i_stream_create_failure_at_eof
    - test_assert
    - i_stream_read
    - test_begin
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_istream_failure_at(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:8,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:9,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/test-strfuncs.c:9,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/test-strfuncs.c:12,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:13,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:13,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:14,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:16,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 6
    functionDepth: 3
    functionLinenumber: 6
    functionLinenumberEnd: 17
    functionName: test_p_strdup
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - p_free
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_p_strdup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:31,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:33,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib/test-strfuncs.c:34,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:36,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:37,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 19
    functionDepth: 3
    functionLinenumber: 19
    functionLinenumberEnd: 40
    functionName: test_p_strndup
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - p_free
    - p_strndup
    - test_end
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_p_strndup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:45,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib/test-strfuncs.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:46,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib/test-strfuncs.c:46,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib/test-strfuncs.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:50,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:50,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:51,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 54
    functionName: test_p_strdup_empty
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup_empty
    - p_free
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_p_strdup_empty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:61,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/test-strfuncs.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:63,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:63,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:64,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/test-strfuncs.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:67,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:67,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:68,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/test-strfuncs.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:72,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:72,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:73,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/test-strfuncs.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:76,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:76,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:77,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 80
    functionName: test_p_strdup_until
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup_until
    - p_free
    - test_end
    - test_assert
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_p_strdup_until(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:93,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:95,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib/test-strfuncs.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:98,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:101,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:102,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 105
    functionName: test_p_strarray_dup
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strarray_dup
    - test_end
    - test_assert
    - i_free
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_p_strarray_dup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:137,1
    - Dst: t_split_key_value
      Src: /src/dovecot/src/lib/test-strfuncs.c:137,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:138,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:139,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:141,1
    - Dst: t_split_key_value_eq
      Src: /src/dovecot/src/lib/test-strfuncs.c:142,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:143,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:144,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:144,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:145,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:145,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 148
    functionName: test_t_split_key_value
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - t_split_key_value
    - test_assert_strcmp
    - test_end
    - t_split_key_value_eq
    - null_strcmp
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_split_key_value(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:170,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:172,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-strfuncs.c:174,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-strfuncs.c:176,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-strfuncs.c:178,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:180,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:180,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:181,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:181,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:182,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:182,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 186
    functionName: test_t_strsplit
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - t_strsplit
    - test_end
    - null_strcmp
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_strsplit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:207,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:209,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib/test-strfuncs.c:210,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib/test-strfuncs.c:212,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib/test-strfuncs.c:214,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:216,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:216,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:217,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:217,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:218,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:218,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib/test-strfuncs.c:223,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:224,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:225,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:225,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:226,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 228
    functionName: test_t_strsplit_spaces
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_idx
    - test_end
    - null_strcmp
    - test_assert
    - t_strsplit_spaces
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_strsplit_spaces(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:232,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:233,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:233,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:233,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:234,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:234,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:234,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:235,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:235,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:235,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:236,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:236,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:236,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:237,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:237,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:238,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:238,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:238,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:239,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:239,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:239,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:240,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:240,1
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:240,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 242
    functionName: test_t_str_replace
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - t_str_replace
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_str_replace(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:246,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:247,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:247,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:247,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:248,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:248,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:248,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:249,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:249,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:249,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:250,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:250,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:250,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:251,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:251,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:252,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:252,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:253,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:253,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:254,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:254,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:255,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:255,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:255,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:256,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:256,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:257,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:257,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:257,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:258,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:258,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:258,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:259,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:259,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:259,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:260,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:260,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:261,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:261,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:262,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:262,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:263,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:263,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:264,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:264,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:264,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:265,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:265,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:265,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:266,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:266,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:266,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:267,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:267,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:267,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:268,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:268,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:268,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:269,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:269,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:269,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:270,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:270,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:270,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:271,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:271,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:271,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:272,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:272,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:272,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:273,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:273,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:273,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:274,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:274,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:275,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:275,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:276,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:276,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:276,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:277,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:277,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:278,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:278,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:278,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:279,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:279,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:279,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 244
    functionDepth: 3
    functionLinenumber: 244
    functionLinenumberEnd: 281
    functionName: test_t_str_oneline
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_oneline
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_str_oneline(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:286,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:286,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:286,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:287,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:287,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:287,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:288,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:288,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:288,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:289,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:289,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:290,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:290,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:291,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:291,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:292,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:292,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:293,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:293,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:293,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:294,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:294,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:294,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:295,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:295,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:295,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:296,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:296,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:297,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:297,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:298,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:298,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:298,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:299,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:299,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:299,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 301
    functionName: test_t_str_trim
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_trim
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_str_trim(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:305,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:306,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:306,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:306,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:307,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:307,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:307,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:308,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:308,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:308,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:309,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:309,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:309,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:310,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:310,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:310,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:311,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:311,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:311,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:312,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:312,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:312,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:313,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:313,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:313,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:314,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:314,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:314,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:315,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:315,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:315,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:316,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:316,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:316,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:317,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:317,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:317,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:318,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:318,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:318,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:319,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:319,1
    - Dst: t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:319,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 321
    functionName: test_t_str_ltrim
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ltrim
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_str_ltrim(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:326,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:326,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:326,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:327,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:327,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:327,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:328,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:328,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:328,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:329,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:329,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:329,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:330,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:330,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:330,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:331,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:331,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:331,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:332,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:332,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:332,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:333,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:333,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:333,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:334,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:334,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:334,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:335,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:335,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:335,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:336,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:336,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:336,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:337,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:337,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:337,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:338,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:338,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:338,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:339,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:339,1
    - Dst: t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:339,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 323
    functionDepth: 3
    functionLinenumber: 323
    functionLinenumberEnd: 341
    functionName: test_t_str_rtrim
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - test_assert
    - t_str_rtrim
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_str_rtrim(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:386,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:386,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib/test-strfuncs.c:386,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:388,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:389,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:389,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib/test-strfuncs.c:389,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:393,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:394,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:394,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib/test-strfuncs.c:394,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:398,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:399,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:399,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib/test-strfuncs.c:399,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:403,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 404
    functionName: test_t_strarray_join
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_idx
    - t_strarray_join
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_t_strarray_join(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-strfuncs.c:408,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:412,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/test-strfuncs.c:414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:416,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:416,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib/test-strfuncs.c:416,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-strfuncs.c:418,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-strfuncs.c:419,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:420,1
    - Dst: p_array_const_string_join
      Src: /src/dovecot/src/lib/test-strfuncs.c:421,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:423,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:423,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:424,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/test-strfuncs.c:427,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 406
    functionDepth: 3
    functionLinenumber: 406
    functionLinenumberEnd: 429
    functionName: test_p_array_const_string_join
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - strcmp
    - t_array_const_string_join
    - test_assert_idx
    - str_array_length
    - p_array_const_string_join
    - test_end
    - ARRAY_TYPE
    - test_assert
    - array_free
    - i_free
    - N_ELEMENTS
    - array_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_p_array_const_string_join(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:443,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:444,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:445,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:446,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:446,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:447,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:447,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib/test-strfuncs.c:448,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:449,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:449,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib/test-strfuncs.c:450,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 453
    functionName: test_mem_equals_timing_safe
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strlen
    - mem_equals_timing_safe
    - test_end
    - test_assert
    - memcmp
    - i_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mem_equals_timing_safe(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:471,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:472,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:473,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:473,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib/test-strfuncs.c:474,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:475,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:475,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib/test-strfuncs.c:476,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 479
    functionName: test_str_equals_timing_almost_safe
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_equals_timing_almost_safe
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_equals_timing_almost_safe(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:492,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:493,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib/test-strfuncs.c:494,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:495,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:495,1
    - Dst: dec2str_buf
      Src: /src/dovecot/src/lib/test-strfuncs.c:495,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:498,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 481
    functionDepth: 3
    functionLinenumber: 481
    functionLinenumberEnd: 499
    functionName: test_dec2str_buf
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_idx
    - dec2str_buf
    - test_end
    - i_snprintf
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dec2str_buf(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:514,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:516,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:517,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:518,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:519,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:520,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:521,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:522,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:523,1
    - Dst: MATCH_TEST
      Src: /src/dovecot/src/lib/test-strfuncs.c:524,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:530,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:531,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:532,1
    - Dst: str_match
      Src: /src/dovecot/src/lib/test-strfuncs.c:532,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:533,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:535,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:536,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:539,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:539,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:540,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:540,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:541,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:541,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:542,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:543,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:543,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:544,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:547,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:547,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:548,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:548,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:548,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:549,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:549,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:549,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:550,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:550,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:552,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:552,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:553,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:553,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:554,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-strfuncs.c:554,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:556,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:556,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:557,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:557,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:558,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:558,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:559,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:559,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:560,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:560,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:561,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:561,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:562,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:562,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:563,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 501
    functionDepth: 3
    functionLinenumber: 501
    functionLinenumberEnd: 564
    functionName: test_str_match
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - test_assert_idx
    - str_begins
    - strlen
    - MATCH_TEST
    - test_end
    - test_assert
    - str_match
    - strncmp
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_match(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:584,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:585,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:586,1
    - Dst: str_match_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:586,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:587,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:589,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:590,1
    - Dst: strncasecmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:593,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:593,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:594,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:594,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:595,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:595,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:596,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:597,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:597,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:598,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:601,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:601,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:602,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:602,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:602,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:603,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:603,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:603,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:604,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:604,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strfuncs.c:604,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:605,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:605,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:607,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:607,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:608,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:608,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:609,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:609,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:611,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:611,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:612,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:612,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:613,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:613,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:614,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:614,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:615,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:615,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:616,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:616,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:617,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:617,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:618,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 566
    functionDepth: 3
    functionLinenumber: 566
    functionLinenumberEnd: 619
    functionName: test_str_match_icase
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_idx
    - strlen
    - str_match_icase
    - test_end
    - str_begins_icase_with
    - str_begins_icase
    - strncasecmp
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_match_icase(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:637,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:638,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:639,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:639,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:641,1
    - Dst: str_ends_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:641,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib/test-strfuncs.c:646,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:647,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:647,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strfuncs.c:648,1
    - Dst: str_ends_icase_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:648,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:651,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 621
    functionDepth: 3
    functionLinenumber: 621
    functionLinenumberEnd: 652
    functionName: test_str_ends_with
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - str_ends_with
    - test_end
    - test_assert
    - str_ends_icase_with
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_ends_with(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:671,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:672,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:673,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:674,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:675,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:676,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:677,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:678,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:679,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:688,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:690,1
    - Dst: i_memspn
      Src: /src/dovecot/src/lib/test-strfuncs.c:691,1
    - Dst: test_assert_ucmp_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:693,1
    - Dst: i_memspn
      Src: /src/dovecot/src/lib/test-strfuncs.c:696,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:696,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:697,1
    - Dst: strspn
      Src: /src/dovecot/src/lib/test-strfuncs.c:698,1
    - Dst: test_assert_ucmp_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:700,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:703,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 654
    functionDepth: 3
    functionLinenumber: 654
    functionLinenumberEnd: 704
    functionName: test_memspn
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - TEST_CASE
    - strspn
    - test_assert_ucmp_idx
    - strlen
    - test_end
    - i_memspn
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_memspn(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 663
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(a, b, r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:723,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:724,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:725,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:726,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:727,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:728,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:729,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-strfuncs.c:730,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:739,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strfuncs.c:741,1
    - Dst: i_memcspn
      Src: /src/dovecot/src/lib/test-strfuncs.c:742,1
    - Dst: test_assert_ucmp_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:744,1
    - Dst: i_memcspn
      Src: /src/dovecot/src/lib/test-strfuncs.c:747,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:747,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strfuncs.c:748,1
    - Dst: strcspn
      Src: /src/dovecot/src/lib/test-strfuncs.c:749,1
    - Dst: test_assert_ucmp_idx
      Src: /src/dovecot/src/lib/test-strfuncs.c:751,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:754,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 706
    functionDepth: 3
    functionLinenumber: 706
    functionLinenumberEnd: 755
    functionName: test_memcspn
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - TEST_CASE
    - test_assert_ucmp_idx
    - strlen
    - strcspn
    - i_memcspn
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_memcspn(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 715
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(a, b, r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_p_strdup
      Src: /src/dovecot/src/lib/test-strfuncs.c:759,1
    - Dst: test_p_strndup
      Src: /src/dovecot/src/lib/test-strfuncs.c:760,1
    - Dst: test_p_strdup_empty
      Src: /src/dovecot/src/lib/test-strfuncs.c:761,1
    - Dst: test_p_strdup_until
      Src: /src/dovecot/src/lib/test-strfuncs.c:762,1
    - Dst: test_p_strarray_dup
      Src: /src/dovecot/src/lib/test-strfuncs.c:763,1
    - Dst: test_t_split_key_value
      Src: /src/dovecot/src/lib/test-strfuncs.c:764,1
    - Dst: test_t_strsplit
      Src: /src/dovecot/src/lib/test-strfuncs.c:765,1
    - Dst: test_t_strsplit_spaces
      Src: /src/dovecot/src/lib/test-strfuncs.c:766,1
    - Dst: test_t_str_replace
      Src: /src/dovecot/src/lib/test-strfuncs.c:767,1
    - Dst: test_t_str_oneline
      Src: /src/dovecot/src/lib/test-strfuncs.c:768,1
    - Dst: test_t_str_trim
      Src: /src/dovecot/src/lib/test-strfuncs.c:769,1
    - Dst: test_t_str_ltrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:770,1
    - Dst: test_t_str_rtrim
      Src: /src/dovecot/src/lib/test-strfuncs.c:771,1
    - Dst: test_t_strarray_join
      Src: /src/dovecot/src/lib/test-strfuncs.c:772,1
    - Dst: test_p_array_const_string_join
      Src: /src/dovecot/src/lib/test-strfuncs.c:773,1
    - Dst: test_mem_equals_timing_safe
      Src: /src/dovecot/src/lib/test-strfuncs.c:774,1
    - Dst: test_str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib/test-strfuncs.c:775,1
    - Dst: test_dec2str_buf
      Src: /src/dovecot/src/lib/test-strfuncs.c:776,1
    - Dst: test_str_match
      Src: /src/dovecot/src/lib/test-strfuncs.c:777,1
    - Dst: test_str_match_icase
      Src: /src/dovecot/src/lib/test-strfuncs.c:778,1
    - Dst: test_str_ends_with
      Src: /src/dovecot/src/lib/test-strfuncs.c:779,1
    - Dst: test_memspn
      Src: /src/dovecot/src/lib/test-strfuncs.c:780,1
    - Dst: test_memcspn
      Src: /src/dovecot/src/lib/test-strfuncs.c:781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 757
    functionDepth: 4
    functionLinenumber: 757
    functionLinenumberEnd: 782
    functionName: test_strfuncs
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - test_p_strarray_dup
    - test_str_match_icase
    - test_t_str_ltrim
    - test_memspn
    - test_t_str_oneline
    - test_t_str_trim
    - test_p_array_const_string_join
    - test_p_strdup_empty
    - test_str_match
    - test_p_strdup
    - test_t_split_key_value
    - test_t_str_rtrim
    - test_t_strarray_join
    - test_p_strndup
    - test_t_strsplit_spaces
    - test_memcspn
    - test_mem_equals_timing_safe
    - test_t_str_replace
    - test_str_equals_timing_almost_safe
    - test_dec2str_buf
    - test_t_strsplit
    - test_p_strdup_until
    - test_str_ends_with
    linkageType: ''
    returnType: void
    signature: void test_strfuncs(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strfuncs.c:788,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-strfuncs.c:789,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib/test-strfuncs.c:790,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-strfuncs.c:793,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib/test-strfuncs.c:794,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strfuncs.c:797,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 784
    functionDepth: 3
    functionLinenumber: 784
    functionLinenumberEnd: 799
    functionName: fatal_strfuncs
    functionSourceFile: /src/dovecot/src/lib/test-strfuncs.c
    functionUses: 0
    functionsReached:
    - test_end
    - p_strndup
    - test_expect_fatal_string
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_strfuncs(unsigned int stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/numpack.c:11,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/numpack.c:15,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - buf
    - num
    argTypes:
    - buffer_t*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 16
    functionName: numpack_encode
    functionSourceFile: /src/dovecot/src/lib/numpack.c
    functionUses: 4
    functionsReached:
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: void numpack_encode(buffer_t *buf, uint64_t num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bits_required8
      Src: /src/dovecot/src/lib/numpack.c:37,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - p
    - end
    - num_r
    argTypes:
    - uint8_t**
    - uint8_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 44
    functionName: numpack_decode
    functionSourceFile: /src/dovecot/src/lib/numpack.c
    functionUses: 2
    functionsReached:
    - bits_required8
    linkageType: ''
    returnType: int
    signature: int numpack_decode(const uint8_t **p, const uint8_t *end, uint64_t
      *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: numpack_decode
      Src: /src/dovecot/src/lib/numpack.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - p
    - end
    - num_r
    argTypes:
    - uint8_t**
    - uint8_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 57
    functionName: numpack_decode32
    functionSourceFile: /src/dovecot/src/lib/numpack.c
    functionUses: 2
    functionsReached:
    - numpack_decode
    linkageType: ''
    returnType: int
    signature: int numpack_decode32(const uint8_t **p, const uint8_t *end, uint32_t
      *num_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/bsearch-insert-pos.c:16,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/bsearch-insert-pos.c:22,1
    - Dst: cmp
      Src: /src/dovecot/src/lib/bsearch-insert-pos.c:23,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - key
    - base
    - nmemb
    - size
    - idx_r
    argTypes:
    - void*
    - void*
    - unsigned int
    - size_t
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 39
    functionName: bsearch_insert_pos
    functionSourceFile: /src/dovecot/src/lib/bsearch-insert-pos.c
    functionUses: 18
    functionsReached:
    - cmp
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: bool
    signature: "bool bsearch_insert_pos(const void *key, const void *base, unsigned
      int nmemb,\n\t\t\tsize_t size, int (*cmp)(const void *, const void *),\n\t\t\tunsigned
      int *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bsearch_insert_pos
      Src: /src/dovecot/src/lib/bsearch-insert-pos.c:45,1
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/bsearch-insert-pos.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - array
    - key
    - idx_r
    argTypes:
    - struct array*
    - void*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: array_bsearch_insert_pos_i
    functionSourceFile: /src/dovecot/src/lib/bsearch-insert-pos.c
    functionUses: 0
    functionsReached:
    - array_count_i
    - bsearch_insert_pos
    linkageType: ''
    returnType: bool
    signature: "bool array_bsearch_insert_pos_i(const struct array *array, const void
      *key,\n\t\t\t\tint (*cmp)(const void *, const void *),\n\t\t\t\tunsigned int
      *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-break.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gcbrk
    argTypes:
    - struct unicode_gc_break*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 18
    functionName: unicode_gc_break_init
    functionSourceFile: /src/dovecot/src/lib/unicode-break.c
    functionUses: 1
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void unicode_gc_break_init(struct unicode_gc_break *gcbrk)
  - BBCount: 67
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-break.c:24,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/unicode-break.c:195,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/unicode-break.c:232,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 169
    argCount: 3
    argNames:
    - gcbrk
    - cp
    - _cp_data
    argTypes:
    - struct unicode_gc_break*
    - uint32_t
    - struct unicode_code_point_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 257
    functionName: unicode_gc_break_cp
    functionSourceFile: /src/dovecot/src/lib/unicode-break.c
    functionUses: 1
    functionsReached:
    - i_unreached
    - unicode_code_point_get_data
    linkageType: ''
    returnType: bool
    signature: "bool unicode_gc_break_cp(struct unicode_gc_break *gcbrk, uint32_t
      cp,\n\t\t\t const struct unicode_code_point_data **_cp_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - pool
    - ','
    - init_count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: p_array_init
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 230
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: p_array_init(array, pool, init_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - init_count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: i_array_init
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 230
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_array_init(array, init_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - init_count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: t_array_init
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 193
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: t_array_init(array, init_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: ARRAY_TYPE_CAST_CONST
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_TYPE_CAST_CONST(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: ARRAY_TYPE_CAST_MODIFIABLE
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_TYPE_CAST_MODIFIABLE(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: ARRAY_TYPE_CHECK
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_TYPE_CHECK(array, data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array1
    - ','
    - array2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: ARRAY_TYPES_CHECK
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_TYPES_CHECK(array1, array2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: ARRAY_TYPE_CHECK
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_TYPE_CHECK(array, data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array1
    - ','
    - array2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: ARRAY_TYPES_CHECK
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_TYPES_CHECK(array1, array2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - elem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 115
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_foreach(array, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - elem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: array_foreach_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 82
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_foreach_modifiable(array, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - elem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: array_foreach_reverse
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_foreach_reverse(array, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - elem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: array_foreach_reverse_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_foreach_reverse_modifiable(array, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - elem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 112
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 197
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_foreach_elem(array, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - elem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: array_ptr_to_idx
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_ptr_to_idx(array, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - elem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: array_foreach_idx
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_foreach_idx(array, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - array
    - buffer
    - element_size
    argTypes:
    - struct array*
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: array_create_from_buffer_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void array_create_from_buffer_i(struct array *array, buffer_t *buffer,\n\t\t\t
      \  size_t element_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - buffer
    - ','
    - element_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: array_create_from_buffer
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_create_from_buffer(array, buffer, element_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic_max
      Src: /src/dovecot/src/lib/array.h:148,1
    - Dst: array_create_from_buffer_i
      Src: /src/dovecot/src/lib/array.h:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - array
    - pool
    - element_size
    - init_count
    argTypes:
    - struct array*
    - pool_t
    - size_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 152
    functionName: array_create_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - array_create_from_buffer_i
    - buffer_create_dynamic_max
    linkageType: ''
    returnType: void
    signature: "void array_create_i(struct array *array, pool_t pool,\n\t       size_t
      element_size, unsigned int init_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - array
    - ','
    - pool
    - ','
    - element_size
    - ','
    - init_count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: array_create
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_create(array, pool, element_size, init_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/array.h:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: array_free_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void array_free_i(struct array *array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: array_free
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 221
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_free(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free_without_data
      Src: /src/dovecot/src/lib/array.h:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: ATTR_WARN_UNUSED_RESULT::array_free_without_data_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - buffer_free_without_data
    linkageType: ''
    returnType: void
    signature: 'void * ATTR_WARN_UNUSED_RESULT

      array_free_without_data_i(struct array *array)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: array_free_without_data
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_free_without_data(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: array_is_created_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool array_is_created_i(const struct array *array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: array_is_created
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 417
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_is_created(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_pool
      Src: /src/dovecot/src/lib/array.h:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: array_get_pool_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - buffer_get_pool
    linkageType: ''
    returnType: pool_t
    signature: pool_t array_get_pool_i(struct array *array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: array_get_pool
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_get_pool(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/array.h:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: array_clear_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void array_clear_i(struct array *array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: array_clear
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 112
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_clear(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 200
    functionName: array_count_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int array_count_i(const struct array *array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 203
    functionName: array_count
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 358
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_count(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 206
    functionName: array_is_empty
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 63
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_is_empty(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 208
    functionName: array_not_empty
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_not_empty(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/array.h:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - array
    - data
    - count
    argTypes:
    - struct array*
    - void*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: array_append_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: void
    signature: void array_append_i(struct array *array, const void *data, unsigned
      int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - data
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 218
    functionName: array_append
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_append(array, data, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/array.h:222,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib/array.h:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dest_array
    - src_array
    argTypes:
    - struct array*
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 224
    functionName: array_append_array_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - buffer_append_buf
    - i_assert
    linkageType: ''
    returnType: void
    signature: void array_append_array_i(struct array *dest_array, const struct array
      *src_array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dest_array
    - ','
    - src_array
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 228
    functionName: array_append_array
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_append_array(dest_array, src_array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_insert
      Src: /src/dovecot/src/lib/array.h:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - array
    - idx
    - data
    - count
    argTypes:
    - struct array*
    - unsigned int
    - void*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: array_insert_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - buffer_insert
    linkageType: ''
    returnType: void
    signature: "void array_insert_i(struct array *array, unsigned int idx,\n\t       const
      void *data, unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - array
    - ','
    - idx
    - ','
    - data
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 240
    functionName: array_insert
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_insert(array, idx, data, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/array.h:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - array
    - idx
    - count
    argTypes:
    - struct array*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 246
    functionName: array_delete_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - buffer_delete
    linkageType: ''
    returnType: void
    signature: void array_delete_i(struct array *array, unsigned int idx, unsigned
      int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - idx
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 249
    functionName: array_delete
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 91
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_delete(array, idx, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.h:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - array
    - count_r
    argTypes:
    - struct array*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: array_get_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - array_count_i
    linkageType: ''
    returnType: void
    signature: 'void *

      array_get_i(const struct array *array, unsigned int *count_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 258
    functionName: array_get
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 330
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_get(array, count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.h:262,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib/array.h:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - array
    - pool
    - count_r
    argTypes:
    - struct array*
    - pool_t
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: array_get_copy_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - array_count_i
    - p_memdup
    linkageType: ''
    returnType: void
    signature: 'void *

      array_get_copy_i(const struct array *array, pool_t pool, unsigned int *count_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - pool
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: array_get_copy
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_get_copy(array, pool, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/array.h:275,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/array.h:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - array
    - idx
    argTypes:
    - struct array*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 277
    functionName: array_idx_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 2
    functionsReached:
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: 'void * ATTR_PURE

      array_idx_i(const struct array *array, unsigned int idx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 280
    functionName: array_front
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 117
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_front(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 281
    functionName: array_front_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_front_modifiable(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 282
    functionName: array_back
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_back(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 283
    functionName: array_back_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_back_modifiable(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 284
    functionName: array_pop_back
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_pop_back(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 285
    functionName: array_push_back
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 361
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_push_back(array, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 286
    functionName: array_pop_front
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_pop_front(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: array_push_front
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_push_front(array, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 290
    functionName: array_idx
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 89
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_idx(array, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 296
    functionName: array_idx_elem
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 49
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_idx_elem(array, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 299
    functionName: array_idx_elem
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 49
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_idx_elem(array, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.h:304,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib/array.h:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - array
    - count_r
    argTypes:
    - struct array*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 306
    functionName: array_get_modifiable_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - array_count_i
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: void
    signature: 'void *

      array_get_modifiable_i(struct array *array, unsigned int *count_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: array_get_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 90
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_get_modifiable(array, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 316
    functionName: array_idx_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_idx_modifiable(array, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: array_idx_get_space
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_idx_get_space(array, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - idx
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 326
    functionName: array_idx_set
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_idx_set(array, idx, data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 330
    functionName: array_idx_clear
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_idx_clear(array, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/array.h:336,1
    - Dst: memset
      Src: /src/dovecot/src/lib/array.h:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 339
    functionName: array_append_space_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - memset
    - buffer_append_space_unsafe
    linkageType: ''
    returnType: void
    signature: 'void *

      array_append_space_i(struct array *array)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 342
    functionName: array_append_space
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 158
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_append_space(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 344
    functionName: array_append_zero
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 89
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_append_zero(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: array_insert_space
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_insert_space(array, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/array.h:354,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib/array.h:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - dest
    - dest_idx
    - src
    - src_idx
    - count
    argTypes:
    - struct array*
    - unsigned int
    - struct array*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 359
    functionName: array_copy
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 4
    functionsReached:
    - buffer_copy
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void array_copy(struct array *dest, unsigned int dest_idx,\n\t   const
      struct array *src, unsigned int src_idx, unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array1
    - ','
    - array2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 365
    functionName: array_cmp
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_cmp(array1, array2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array1
    - ','
    - array2
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 377
    functionName: array_equal_fn
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_equal_fn(array1, array2, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - array1
    - ','
    - array2
    - ','
    - cmp
    - ','
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 393
    functionName: array_equal_fn_ctx
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_equal_fn_ctx(array1, array2, cmp, ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 397
    functionName: array_reverse
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_reverse(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 404
    functionName: array_sort
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 74
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_sort(array, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - func
    - ','
    - array
    - ','
    - key
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 412
    functionName: ARRAY_SEARCH_CALL
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_SEARCH_CALL(func, array, key, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_bsearch_i
      Src: /src/dovecot/src/lib/array.h:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - array
    - key
    argTypes:
    - struct array*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 419
    functionName: array_bsearch_modifiable_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - array_bsearch_i
    linkageType: ''
    returnType: void
    signature: "void *array_bsearch_modifiable_i(struct array *array, const void *key,\n\t\t\t\t\t
      \      int (*cmp)(const void *, const void *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - key
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: array_bsearch
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_bsearch(array, key, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - key
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 427
    functionName: array_bsearch_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_bsearch_modifiable(array, key, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_i
      Src: /src/dovecot/src/lib/array.h:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - array
    - key
    argTypes:
    - struct array*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 435
    functionName: array_lsearch_modifiable_i
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached:
    - array_lsearch_i
    linkageType: ''
    returnType: void
    signature: "void *array_lsearch_modifiable_i(struct array *array, const void *key,\n\t\t\t\t\t
      \      int (*cmp)(const void *, const void *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - key
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 440
    functionName: array_lsearch
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_lsearch(array, key, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - key
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 443
    functionName: array_lsearch_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_lsearch_modifiable(array, key, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 450
    functionName: array_lsearch_ptr
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_lsearch_ptr(array, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 452
    functionName: array_lsearch_ptr_modifiable
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_lsearch_ptr_modifiable(array, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - key
    - ','
    - idx_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 459
    functionName: array_lsearch_ptr_idx
    functionSourceFile: /src/dovecot/src/lib/array.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_lsearch_ptr_idx(array, key, idx_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: event_recalculate_debug_level
    functionSourceFile: /src/dovecot/src/lib/lib-event-private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void event_recalculate_debug_level(struct event *event)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/base32.c:111,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/base32.c:151,1
    - Dst: memset
      Src: /src/dovecot/src/lib/base32.c:156,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/base32.c:157,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/base32.c:159,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 51
    argCount: 5
    argNames:
    - alph
    - pad
    - src
    - src_size
    - dest
    argTypes:
    - char*
    - bool
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 162
    functionName: base32_encode_with_alphabet
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - memset
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void base32_encode_with_alphabet(const char *alph,\n\tbool pad, const
      void *src, size_t src_size, buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base32_encode_with_alphabet
      Src: /src/dovecot/src/lib/base32.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - pad
    - src
    - src_size
    - dest
    argTypes:
    - bool
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: base32_encode
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 3
    functionsReached:
    - base32_encode_with_alphabet
    linkageType: ''
    returnType: void
    signature: "void base32_encode(bool pad, const void *src, size_t src_size,\n\tbuffer_t
      *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base32_encode_with_alphabet
      Src: /src/dovecot/src/lib/base32.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - pad
    - src
    - src_size
    - dest
    argTypes:
    - bool
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 174
    functionName: base32hex_encode
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 3
    functionsReached:
    - base32_encode_with_alphabet
    linkageType: ''
    returnType: void
    signature: "void base32hex_encode(bool pad, const void *src, size_t src_size,\n\tbuffer_t
      *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: IS_EMPTY
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EMPTY(c)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/base32.c:198,1
    - Dst: IS_EMPTY
      Src: /src/dovecot/src/lib/base32.c:198,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/base32.c:239,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/base32.c:245,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/base32.c:252,1
    - Dst: IS_EMPTY
      Src: /src/dovecot/src/lib/base32.c:252,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/base32.c:259,1
    - Dst: IS_EMPTY
      Src: /src/dovecot/src/lib/base32.c:271,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 84
    argCount: 5
    argNames:
    - alph
    - src
    - src_size
    - src_pos_r
    - dest
    argTypes:
    - unsigned char*
    - void*
    - size_t
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 281
    functionName: base32_decode_with_alphabet
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 0
    functionsReached:
    - IS_EMPTY
    - buffer_append
    - unlikely
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int base32_decode_with_alphabet(const unsigned char *alph,\n\t\t  const
      void *src, size_t src_size, size_t *src_pos_r,\n\t\t  buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base32_decode_with_alphabet
      Src: /src/dovecot/src/lib/base32.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - src
    - src_size
    - src_pos_r
    - dest
    argTypes:
    - void*
    - size_t
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 288
    functionName: base32_decode
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 3
    functionsReached:
    - base32_decode_with_alphabet
    linkageType: ''
    returnType: int
    signature: "int base32_decode(const void *src, size_t src_size,\n\t\t  size_t
      *src_pos_r, buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base32_decode_with_alphabet
      Src: /src/dovecot/src/lib/base32.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - src
    - src_size
    - src_pos_r
    - dest
    argTypes:
    - void*
    - size_t
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 294
    functionName: base32hex_decode
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 1
    functionsReached:
    - base32_decode_with_alphabet
    linkageType: ''
    returnType: int
    signature: "int base32hex_decode(const void *src, size_t src_size,\n\t\t  size_t
      *src_pos_r, buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/base32.c:299,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/base32.c:301,1
    - Dst: MAX_BASE32_DECODED_SIZE
      Src: /src/dovecot/src/lib/base32.c:301,1
    - Dst: base32_decode
      Src: /src/dovecot/src/lib/base32.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 296
    functionDepth: 3
    functionLinenumber: 296
    functionLinenumberEnd: 304
    functionName: t_base32_decode_str
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 0
    functionsReached:
    - base32_decode
    - strlen
    - t_buffer_create
    - MAX_BASE32_DECODED_SIZE
    linkageType: ''
    returnType: buffer_t
    signature: buffer_t *t_base32_decode_str(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/base32.c:309,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/base32.c:311,1
    - Dst: MAX_BASE32_DECODED_SIZE
      Src: /src/dovecot/src/lib/base32.c:311,1
    - Dst: base32hex_decode
      Src: /src/dovecot/src/lib/base32.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 306
    functionDepth: 3
    functionLinenumber: 306
    functionLinenumberEnd: 314
    functionName: t_base32hex_decode_str
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 0
    functionsReached:
    - base32hex_decode
    - strlen
    - t_buffer_create
    - MAX_BASE32_DECODED_SIZE
    linkageType: ''
    returnType: buffer_t
    signature: buffer_t *t_base32hex_decode_str(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: base32_is_valid_char
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool base32_is_valid_char(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: base32hex_is_valid_char
    functionSourceFile: /src/dovecot/src/lib/base32.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool base32hex_is_valid_char(char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-rawlog.c:18,1
    - Dst: iostream_rawlog_close
      Src: /src/dovecot/src/lib/istream-rawlog.c:20,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream-rawlog.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 14
    functionDepth: 3
    functionLinenumber: 14
    functionLinenumberEnd: 23
    functionName: i_stream_rawlog_close
    functionSourceFile: /src/dovecot/src/lib/istream-rawlog.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_close
    - iostream_rawlog_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_rawlog_close(struct iostream_private *stream,\n\t\t\t\t
      \ bool close_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-rawlog.c:28,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-rawlog.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 25
    functionDepth: 4
    functionLinenumber: 25
    functionLinenumberEnd: 38
    functionName: i_stream_rawlog_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-rawlog.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_seek
    linkageType: ''
    returnType: void
    signature: void i_stream_rawlog_destroy(struct iostream_private *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-rawlog.c:43,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-rawlog.c:47,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-rawlog.c:53,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-rawlog.c:57,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-rawlog.c:60,1
    - Dst: iostream_rawlog_flush
      Src: /src/dovecot/src/lib/istream-rawlog.c:65,1
    - Dst: iostream_rawlog_write
      Src: /src/dovecot/src/lib/istream-rawlog.c:71,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-rawlog.c:75,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 40
    functionDepth: 4
    functionLinenumber: 40
    functionLinenumberEnd: 78
    functionName: i_stream_rawlog_read
    functionSourceFile: /src/dovecot/src/lib/istream-rawlog.c
    functionUses: 0
    functionsReached:
    - container_of
    - iostream_rawlog_flush
    - i_stream_get_data
    - i_stream_seek
    - iostream_rawlog_write
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_rawlog_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-rawlog.c:87,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-rawlog.c:88,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/istream-rawlog.c:91,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/istream-rawlog.c:92,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/istream-rawlog.c:93,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-rawlog.c:94,1
    - Dst: i_stream_create_rawlog_from_stream
      Src: /src/dovecot/src/lib/istream-rawlog.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - input
    - rawlog_path
    - rawlog_fd
    - flags
    argTypes:
    - struct istream*
    - char*
    - int
    - enum iostream_rawlog_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 80
    functionDepth: 4
    functionLinenumber: 80
    functionLinenumberEnd: 96
    functionName: i_stream_create_rawlog
    functionSourceFile: /src/dovecot/src/lib/istream-rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - o_stream_set_name
    - t_strdup_printf
    - o_stream_create_fd_autoclose
    - i_stream_create_rawlog_from_stream
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_rawlog(struct istream *input, const
      char *rawlog_path,\n\t\t       int rawlog_fd, enum iostream_rawlog_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-rawlog.c:105,1
    - Dst: iostream_rawlog_init
      Src: /src/dovecot/src/lib/istream-rawlog.c:110,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-rawlog.c:119,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-rawlog.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - input
    - rawlog_output
    - flags
    argTypes:
    - struct istream*
    - struct ostream*
    - enum iostream_rawlog_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 121
    functionName: i_stream_create_rawlog_from_stream
    functionSourceFile: /src/dovecot/src/lib/istream-rawlog.c
    functionUses: 1
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    - iostream_rawlog_init
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_rawlog_from_stream(struct istream
      *input,\n\t\t\t\t   struct ostream *rawlog_output,\n\t\t\t\t   enum iostream_rawlog_flags
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - pid
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 22
    functionName: child_wait_new_with_pid
    functionSourceFile: /src/dovecot/src/lib/child-wait.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: child_wait_new_with_pid(pid, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: child_wait_new
    functionSourceFile: /src/dovecot/src/lib/child-wait.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: child_wait_new(callback, context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-hash.c:20,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-hash.c:26,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib/istream-hash.c:29,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-hash.c:31,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-hash.c:32,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-hash.c:34,1
    - Dst: struct hash_istream*::method::loop
      Src: /src/dovecot/src/lib/istream-hash.c:38,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 16
    functionDepth: 4
    functionLinenumber: 16
    functionLinenumberEnd: 48
    functionName: i_stream_hash_read
    functionSourceFile: /src/dovecot/src/lib/istream-hash.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_read_copy_from_parent
    - i_stream_get_data
    - struct hash_istream*::method::loop
    - i_stream_seek
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_hash_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-hash.c:55,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-hash.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 64
    functionName: i_stream_hash_seek
    functionSourceFile: /src/dovecot/src/lib/istream-hash.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_stream_set_error
    linkageType: ''
    returnType: void
    signature: "void i_stream_hash_seek(struct istream_private *stream,\n\t\t   uoff_t
      v_offset, bool mark ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-hash.c:72,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-hash.c:85,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-hash.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - input
    - method
    - hash_context
    argTypes:
    - struct istream*
    - struct hash_method*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 87
    functionName: i_stream_create_hash
    functionSourceFile: /src/dovecot/src/lib/istream-hash.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_hash(struct istream *input, const
      struct hash_method *method,\n\t\t     void *hash_context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-try.c:22,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-try.c:25,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - tstream
    argTypes:
    - struct try_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 26
    functionName: i_stream_unref_try_inputs
    functionSourceFile: /src/dovecot/src/lib/istream-try.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_unref_try_inputs(struct try_istream *tstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-try.c:32,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream-try.c:36,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream-try.c:39,1
    - Dst: i_stream_unref_try_inputs
      Src: /src/dovecot/src/lib/istream-try.c:42,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 28
    functionDepth: 3
    functionLinenumber: 28
    functionLinenumberEnd: 43
    functionName: i_stream_try_close
    functionSourceFile: /src/dovecot/src/lib/istream-try.c
    functionUses: 0
    functionsReached:
    - i_stream_unref_try_inputs
    - container_of
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_try_close(struct iostream_private *stream,\n\t\t\t       bool
      close_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - tstream
    - try_input
    argTypes:
    - struct try_istream*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 72
    functionName: i_stream_try_is_buffer_full
    functionSourceFile: /src/dovecot/src/lib/istream-try.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool i_stream_try_is_buffer_full(struct try_istream *tstream,\n\t\t\t
      \   struct istream *try_input)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/istream-try.c:82,1
    - Dst: i_stream_try_is_buffer_full
      Src: /src/dovecot/src/lib/istream-try.c:83,1
    - Dst: i_stream_init_parent
      Src: /src/dovecot/src/lib/istream-try.c:86,1
    - Dst: i_stream_unref_try_inputs
      Src: /src/dovecot/src/lib/istream-try.c:87,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-try.c:100,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-try.c:102,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-try.c:108,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - tstream
    argTypes:
    - struct try_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 74
    functionDepth: 4
    functionLinenumber: 74
    functionLinenumberEnd: 112
    functionName: i_stream_try_detect
    functionSourceFile: /src/dovecot/src/lib/istream-try.c
    functionUses: 0
    functionsReached:
    - i_stream_unref_try_inputs
    - i_stream_try_is_buffer_full
    - io_stream_set_error
    - i_stream_get_error
    - i_stream_init_parent
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int i_stream_try_detect(struct try_istream *tstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-try.c:118,1
    - Dst: i_stream_try_detect
      Src: /src/dovecot/src/lib/istream-try.c:122,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-try.c:126,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib/istream-try.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 114
    functionDepth: 5
    functionLinenumber: 114
    functionLinenumberEnd: 129
    functionName: i_stream_try_read
    functionSourceFile: /src/dovecot/src/lib/istream-try.c
    functionUses: 0
    functionsReached:
    - i_stream_read_copy_from_parent
    - i_stream_try_detect
    - container_of
    - i_stream_seek
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_try_read(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/istream-try.c:140,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/istream-try.c:141,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/istream-try.c:146,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-try.c:148,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-try.c:150,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib/istream-try.c:153,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-try.c:164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - input
    - min_buffer_full_size
    argTypes:
    - struct istream*[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 131
    functionDepth: 4
    functionLinenumber: 131
    functionLinenumberEnd: 165
    functionName: istream_try_create
    functionSourceFile: /src/dovecot/src/lib/istream-try.c
    functionUses: 1
    functionsReached:
    - i_stream_ref
    - I_MAX
    - i_stream_get_max_buffer_size
    - i_new
    - i_stream_create
    - i_assert
    - p_memdup
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *istream_try_create(struct istream *const input[],\n\t\t\t\t
      \  size_t min_buffer_full_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-notify-fd.c:14,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - fd
    - callback
    - context
    argTypes:
    - struct ioloop_notify_fd_context*
    - int
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 27
    functionName: io_notify_fd_add
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-fd.c
    functionUses: 1
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct io
    signature: "struct io *io_notify_fd_add(struct ioloop_notify_fd_context *ctx,
      int fd,\n\t\t\t    io_callback_t *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-notify-fd.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - io
    argTypes:
    - struct ioloop_notify_fd_context*
    - struct io_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 40
    functionName: io_notify_fd_free
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-fd.c
    functionUses: 1
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: "void io_notify_fd_free(struct ioloop_notify_fd_context *ctx,\n\t\t
      \      struct io_notify *io)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - fd
    argTypes:
    - struct ioloop_notify_fd_context*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 53
    functionName: io_notify_fd_find
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-fd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct io_notify
    signature: 'struct io_notify *

      io_notify_fd_find(struct ioloop_notify_fd_context *ctx, int fd)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: MY_EV_SET
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MY_EV_SET(a, b, c, d, e, f, g)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: MY_EV_SET
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MY_EV_SET(a, b, c, d, e, f, g)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:49,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - io
    argTypes:
    - struct ioloop_notify_handler_context*
    - struct io_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: io_loop_notify_free
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 0
    functionsReached:
    - i_free
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: "void io_loop_notify_free(struct ioloop_notify_handler_context *ctx,\n\t\t
      \   struct io_notify *io)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: kevent
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:63,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:63,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:68,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:71,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:76,1
    - Dst: io_loop_call_io
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:84,1
    - Dst: io_loop_notify_free
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:87,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_notify_handler_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 89
    functionName: event_callback
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - kevent
    - i_fatal
    - io_loop_call_io
    - io_loop_notify_free
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void event_callback(struct ioloop_notify_handler_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:96,1
    - Dst: kqueue
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:97,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:99,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 102
    functionName: io_loop_notify_handler_init
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 1
    functionsReached:
    - kqueue
    - i_fatal
    - fd_close_on_exec
    - i_new
    linkageType: ''
    returnType: struct ioloop_notify_handler_context
    signature: struct ioloop_notify_handler_context *io_loop_notify_handler_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:113,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:117,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:120,1
    - Dst: close
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:121,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:122,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 124
    functionName: io_loop_notify_handler_deinit
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 0
    functionsReached:
    - i_error
    - io_remove
    - i_warning
    - i_free
    - close
    linkageType: ''
    returnType: void
    signature: void io_loop_notify_handler_deinit(struct ioloop *ioloop)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_notify_handler_init
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:139,1
    - Dst: open
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:141,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:146,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:149,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:151,1
    - Dst: MY_EV_SET
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:164,1
    - Dst: kevent
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:167,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:168,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:169,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:170,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:175,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:178,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 6
    argNames:
    - path
    - source_filename
    - source_linenum
    - callback
    - context
    - io_r
    argTypes:
    - char*
    - char*
    - unsigned int
    - io_callback_t*
    - void*
    - struct io**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 181
    functionName: io_add_notify
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 4
    functionsReached:
    - fd_close_on_exec
    - i_error
    - kevent
    - io_add
    - i_close_fd
    - io_loop_notify_handler_init
    - open
    - MY_EV_SET
    - DLLIST_PREPEND
    - i_new
    - i_free
    linkageType: ''
    returnType: enum io_notify_result
    signature: "enum io_notify_result io_add_notify(const char *path, const char *source_filename,\n\t
      \     unsigned int source_linenum,\n\t      io_callback_t *callback, void *context,
      struct io **io_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MY_EV_SET
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:190,1
    - Dst: kevent
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:191,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:192,1
    - Dst: close
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:193,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:194,1
    - Dst: io_loop_notify_free
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - _io
    argTypes:
    - struct io*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 199
    functionName: io_loop_notify_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 0
    functionsReached:
    - kevent
    - i_error
    - MY_EV_SET
    - io_loop_notify_free
    - close
    linkageType: ''
    returnType: void
    signature: void io_loop_notify_remove(struct io *_io)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: kqueue
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:211,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:213,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ioloop-notify-kqueue.c:218,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 222
    functionName: io_loop_extract_notify_fd
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-kqueue.c
    functionUses: 1
    functionsReached:
    - kqueue
    - i_error
    - io_remove
    linkageType: ''
    returnType: int
    signature: int io_loop_extract_notify_fd(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _event
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: e_error
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 779
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: e_error(_event, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _event
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: e_warning
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 87
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: e_warning(_event, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _event
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: e_info
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 119
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: e_info(_event, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _event
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: e_debug
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 460
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: e_debug(_event, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _event
    - ','
    - level
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: e_log
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: e_log(_event, level, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _event
    - ','
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: event_want_log_level
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_want_log_level(_event, level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: event_want_debug_log
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_want_debug_log(_event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _event
    - ','
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: event_want_level
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_want_level(_event, level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: event_want_debug
    functionSourceFile: /src/dovecot/src/lib/event-log.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_want_debug(_event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:28,1
    - Dst: uri_check
      Src: /src/dovecot/src/lib/test-uri.c:35,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-uri.c:36,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-uri.c:37,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib/test-uri.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 24
    functionDepth: 3
    functionLinenumber: 24
    functionLinenumberEnd: 39
    functionName: test_uri_valid
    functionSourceFile: /src/dovecot/src/lib/test-uri.c
    functionUses: 0
    functionsReached:
    - uri_check
    - t_strdup_printf
    - test_out_quiet
    - str_sanitize
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_uri_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:62,1
    - Dst: uri_check
      Src: /src/dovecot/src/lib/test-uri.c:69,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-uri.c:70,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-uri.c:71,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib/test-uri.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 73
    functionName: test_uri_invalid
    functionSourceFile: /src/dovecot/src/lib/test-uri.c
    functionUses: 0
    functionsReached:
    - uri_check
    - t_strdup_printf
    - test_out_quiet
    - str_sanitize
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_uri_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:611,1
    - Dst: uri_check
      Src: /src/dovecot/src/lib/test-uri.c:618,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-uri.c:619,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-uri.c:620,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib/test-uri.c:620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 607
    functionDepth: 3
    functionLinenumber: 607
    functionLinenumberEnd: 622
    functionName: test_uri_rfc
    functionSourceFile: /src/dovecot/src/lib/test-uri.c
    functionUses: 0
    functionsReached:
    - uri_check
    - t_strdup_printf
    - test_out_quiet
    - str_sanitize
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_uri_rfc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-uri.c:628,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:630,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib/test-uri.c:631,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:632,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:632,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:632,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:633,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib/test-uri.c:634,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:635,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:635,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:635,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:636,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib/test-uri.c:637,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:638,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:638,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:638,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:639,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib/test-uri.c:640,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:641,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:641,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:641,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:642,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib/test-uri.c:643,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:644,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:644,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:644,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:645,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib/test-uri.c:646,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:647,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:647,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:647,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:648,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib/test-uri.c:649,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:650,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:650,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:650,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:651,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:652,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:654,1
    - Dst: uri_append_path_segment_data
      Src: /src/dovecot/src/lib/test-uri.c:655,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:656,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:656,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:656,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:657,1
    - Dst: uri_append_path_segment_data
      Src: /src/dovecot/src/lib/test-uri.c:658,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:659,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:659,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:659,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:660,1
    - Dst: uri_append_path_segment_data
      Src: /src/dovecot/src/lib/test-uri.c:661,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:662,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:662,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:662,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:663,1
    - Dst: uri_append_path_segment_data
      Src: /src/dovecot/src/lib/test-uri.c:664,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:665,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:665,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:665,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:666,1
    - Dst: uri_append_path_segment_data
      Src: /src/dovecot/src/lib/test-uri.c:667,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:668,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:668,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:668,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:669,1
    - Dst: uri_append_path_segment_data
      Src: /src/dovecot/src/lib/test-uri.c:670,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:671,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:671,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:671,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:672,1
    - Dst: uri_append_path_segment_data
      Src: /src/dovecot/src/lib/test-uri.c:673,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:674,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:674,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:674,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:675,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:676,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:678,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/test-uri.c:679,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:680,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:680,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:680,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:681,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/test-uri.c:682,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:683,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:683,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:683,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:684,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/test-uri.c:685,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:686,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:686,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:686,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:687,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/test-uri.c:688,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:689,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:689,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:689,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:690,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/test-uri.c:691,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:692,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:692,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:692,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:693,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/test-uri.c:694,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:695,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:695,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:695,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:696,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/test-uri.c:697,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:698,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:698,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:698,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:699,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:700,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:702,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib/test-uri.c:703,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:704,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:704,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:704,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:705,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib/test-uri.c:706,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:707,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:707,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:707,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:708,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib/test-uri.c:709,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:710,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:710,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:710,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:711,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib/test-uri.c:712,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:713,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:713,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:713,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:714,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib/test-uri.c:715,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:716,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:716,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:716,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:717,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib/test-uri.c:718,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:719,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:719,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:719,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:720,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib/test-uri.c:721,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:722,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:722,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:722,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:723,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:724,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:726,1
    - Dst: uri_append_fragment_data
      Src: /src/dovecot/src/lib/test-uri.c:727,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:728,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:728,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:728,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:729,1
    - Dst: uri_append_fragment_data
      Src: /src/dovecot/src/lib/test-uri.c:730,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:731,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:731,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:731,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:732,1
    - Dst: uri_append_fragment_data
      Src: /src/dovecot/src/lib/test-uri.c:733,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:734,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:734,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:734,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:735,1
    - Dst: uri_append_fragment_data
      Src: /src/dovecot/src/lib/test-uri.c:736,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:737,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:737,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:737,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:738,1
    - Dst: uri_append_fragment_data
      Src: /src/dovecot/src/lib/test-uri.c:739,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:740,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:740,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:740,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:741,1
    - Dst: uri_append_fragment_data
      Src: /src/dovecot/src/lib/test-uri.c:742,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:743,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:743,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:743,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:744,1
    - Dst: uri_append_fragment_data
      Src: /src/dovecot/src/lib/test-uri.c:745,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:746,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:746,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:746,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:747,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:748,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:750,1
    - Dst: uri_append_unreserved
      Src: /src/dovecot/src/lib/test-uri.c:751,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:752,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:752,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:752,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:753,1
    - Dst: uri_append_unreserved
      Src: /src/dovecot/src/lib/test-uri.c:754,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:755,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:755,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:755,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:756,1
    - Dst: uri_append_unreserved
      Src: /src/dovecot/src/lib/test-uri.c:757,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:758,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:758,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:758,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:759,1
    - Dst: uri_append_unreserved
      Src: /src/dovecot/src/lib/test-uri.c:760,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:761,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:761,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:761,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:762,1
    - Dst: uri_append_unreserved
      Src: /src/dovecot/src/lib/test-uri.c:763,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:764,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:764,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:764,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:765,1
    - Dst: uri_append_unreserved
      Src: /src/dovecot/src/lib/test-uri.c:766,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:767,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:767,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:767,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:768,1
    - Dst: uri_append_unreserved
      Src: /src/dovecot/src/lib/test-uri.c:769,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:770,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:770,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:770,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:771,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:772,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:774,1
    - Dst: uri_append_unreserved_path
      Src: /src/dovecot/src/lib/test-uri.c:775,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:776,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:776,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:776,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:777,1
    - Dst: uri_append_unreserved_path
      Src: /src/dovecot/src/lib/test-uri.c:778,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:779,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:779,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:779,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:780,1
    - Dst: uri_append_unreserved_path
      Src: /src/dovecot/src/lib/test-uri.c:781,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:782,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:782,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:782,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:783,1
    - Dst: uri_append_unreserved_path
      Src: /src/dovecot/src/lib/test-uri.c:784,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:785,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:785,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:785,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:786,1
    - Dst: uri_append_unreserved_path
      Src: /src/dovecot/src/lib/test-uri.c:787,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:788,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:788,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:788,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:789,1
    - Dst: uri_append_unreserved_path
      Src: /src/dovecot/src/lib/test-uri.c:790,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:791,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:791,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:791,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:792,1
    - Dst: uri_append_unreserved_path
      Src: /src/dovecot/src/lib/test-uri.c:793,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:794,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-uri.c:794,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-uri.c:794,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-uri.c:795,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 162
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 626
    functionDepth: 3
    functionLinenumber: 626
    functionLinenumberEnd: 797
    functionName: test_uri_escape
    functionSourceFile: /src/dovecot/src/lib/test-uri.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - uri_append_path_data
    - uri_append_path_segment_data
    - test_end
    - uri_append_unreserved
    - uri_append_fragment_data
    - str_truncate
    - test_assert
    - uri_append_unreserved_path
    - uri_append_query_data
    - uri_append_user_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_uri_escape(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:801,1
    - Dst: uri_parser_init
      Src: /src/dovecot/src/lib/test-uri.c:805,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/test-uri.c:805,1
    - Dst: uri_parse_scheme
      Src: /src/dovecot/src/lib/test-uri.c:812,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:813,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-uri.c:814,1
    - Dst: uri_parse_slashslash_host_authority
      Src: /src/dovecot/src/lib/test-uri.c:815,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:816,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-uri.c:817,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib/test-uri.c:818,1
    - Dst: uri_parse_query
      Src: /src/dovecot/src/lib/test-uri.c:819,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:820,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-uri.c:821,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 799
    functionDepth: 3
    functionLinenumber: 799
    functionLinenumberEnd: 823
    functionName: test_uri_aaa
    functionSourceFile: /src/dovecot/src/lib/test-uri.c
    functionUses: 0
    functionsReached:
    - uri_parse_query
    - uri_parser_init
    - test_assert_strcmp
    - test_end
    - uri_parse_scheme
    - pool_datastack_create
    - uri_parse_slashslash_host_authority
    - test_assert
    - test_assert_ucmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_uri_aaa(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-uri.c:827,1
    - Dst: uri_parser_init
      Src: /src/dovecot/src/lib/test-uri.c:830,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/test-uri.c:830,1
    - Dst: uri_parse_scheme
      Src: /src/dovecot/src/lib/test-uri.c:838,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:839,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-uri.c:840,1
    - Dst: uri_parse_host_authority
      Src: /src/dovecot/src/lib/test-uri.c:841,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:842,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-uri.c:843,1
    - Dst: test_assert_ucmp
      Src: /src/dovecot/src/lib/test-uri.c:844,1
    - Dst: uri_parse_path
      Src: /src/dovecot/src/lib/test-uri.c:845,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:846,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:847,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-uri.c:848,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:849,1
    - Dst: uri_parse_query
      Src: /src/dovecot/src/lib/test-uri.c:850,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-uri.c:851,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-uri.c:852,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-uri.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 825
    functionDepth: 3
    functionLinenumber: 825
    functionLinenumberEnd: 854
    functionName: test_uri_iax
    functionSourceFile: /src/dovecot/src/lib/test-uri.c
    functionUses: 0
    functionsReached:
    - uri_parse_host_authority
    - uri_parse_query
    - uri_parser_init
    - test_assert_strcmp
    - test_end
    - uri_parse_scheme
    - pool_datastack_create
    - uri_parse_path
    - test_assert
    - test_assert_ucmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_uri_iax(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_uri_valid
      Src: /src/dovecot/src/lib/test-uri.c:859,1
    - Dst: test_uri_invalid
      Src: /src/dovecot/src/lib/test-uri.c:860,1
    - Dst: test_uri_rfc
      Src: /src/dovecot/src/lib/test-uri.c:861,1
    - Dst: test_uri_escape
      Src: /src/dovecot/src/lib/test-uri.c:862,1
    - Dst: test_uri_aaa
      Src: /src/dovecot/src/lib/test-uri.c:863,1
    - Dst: test_uri_iax
      Src: /src/dovecot/src/lib/test-uri.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 857
    functionDepth: 4
    functionLinenumber: 857
    functionLinenumberEnd: 865
    functionName: test_uri
    functionSourceFile: /src/dovecot/src/lib/test-uri.c
    functionUses: 0
    functionsReached:
    - test_uri_aaa
    - test_uri_valid
    - test_uri_rfc
    - test_uri_invalid
    - test_uri_escape
    - test_uri_iax
    linkageType: ''
    returnType: void
    signature: void test_uri(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - p
    - start
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: is_escaped
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_escaped(const char *p, const char *start)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: is_escaped
      Src: /src/dovecot/src/lib/wildcard-match.c:73,1
    - Dst: is_escaped
      Src: /src/dovecot/src/lib/wildcard-match.c:83,1
    - Dst: is_escaped
      Src: /src/dovecot/src/lib/wildcard-match.c:94,1
    - Dst: is_escaped
      Src: /src/dovecot/src/lib/wildcard-match.c:103,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/wildcard-match.c:115,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/wildcard-match.c:115,1
    - Dst: is_escaped
      Src: /src/dovecot/src/lib/wildcard-match.c:134,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 89
    argCount: 4
    argNames:
    - data
    - mask
    - icase
    - escaped
    argTypes:
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 137
    functionName: wildcard_match_int
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.c
    functionUses: 0
    functionsReached:
    - is_escaped
    - i_toupper
    linkageType: ''
    returnType: int
    signature: int wildcard_match_int(const char *data, const char *mask, bool icase,
      bool escaped)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match_int
      Src: /src/dovecot/src/lib/wildcard-match.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - mask
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: wildcard_match
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.c
    functionUses: 10
    functionsReached:
    - wildcard_match_int
    linkageType: ''
    returnType: bool
    signature: bool wildcard_match(const char *data, const char *mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match_int
      Src: /src/dovecot/src/lib/wildcard-match.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - mask
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: wildcard_match_icase
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.c
    functionUses: 5
    functionsReached:
    - wildcard_match_int
    linkageType: ''
    returnType: bool
    signature: bool wildcard_match_icase(const char *data, const char *mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match_int
      Src: /src/dovecot/src/lib/wildcard-match.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - mask
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: wildcard_match_escaped
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.c
    functionUses: 0
    functionsReached:
    - wildcard_match_int
    linkageType: ''
    returnType: bool
    signature: bool wildcard_match_escaped(const char *data, const char *mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match_int
      Src: /src/dovecot/src/lib/wildcard-match.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - mask
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: wildcard_match_escaped_icase
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.c
    functionUses: 0
    functionsReached:
    - wildcard_match_int
    linkageType: ''
    returnType: bool
    signature: bool wildcard_match_escaped_icase(const char *data, const char *mask)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib/wildcard-match.c:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - mask
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 171
    functionName: wildcard_is_escaped_literal
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.c
    functionUses: 0
    functionsReached:
    - strpbrk
    linkageType: ''
    returnType: bool
    signature: bool wildcard_is_escaped_literal(const char *mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib/wildcard-match.c:175,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/wildcard-match.c:179,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/wildcard-match.c:179,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/wildcard-match.c:181,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/wildcard-match.c:182,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/wildcard-match.c:183,1
    - Dst: strpbrk
      Src: /src/dovecot/src/lib/wildcard-match.c:186,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/wildcard-match.c:188,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/wildcard-match.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 190
    functionName: wildcard_str_escape
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.c
    functionUses: 3
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - strpbrk
    - str_append
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char *wildcard_str_escape(const char *str)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: link
      Src: /src/dovecot/src/lib/file-copy.c:25,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/file-copy.c:28,1
    - Dst: link
      Src: /src/dovecot/src/lib/file-copy.c:30,1
    - Dst: ECANTLINK
      Src: /src/dovecot/src/lib/file-copy.c:35,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:36,1
    - Dst: open
      Src: /src/dovecot/src/lib/file-copy.c:43,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:47,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-copy.c:51,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:52,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/file-copy.c:53,1
    - Dst: umask
      Src: /src/dovecot/src/lib/file-copy.c:57,1
    - Dst: open
      Src: /src/dovecot/src/lib/file-copy.c:58,1
    - Dst: umask
      Src: /src/dovecot/src/lib/file-copy.c:59,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:61,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/file-copy.c:62,1
    - Dst: fchown
      Src: /src/dovecot/src/lib/file-copy.c:67,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:68,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/file-copy.c:70,1
    - Dst: o_stream_create_fd_file
      Src: /src/dovecot/src/lib/file-copy.c:71,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/file-copy.c:73,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/file-copy.c:79,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:81,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/file-copy.c:82,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:85,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/file-copy.c:86,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/file-copy.c:90,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/file-copy.c:91,1
    - Dst: close
      Src: /src/dovecot/src/lib/file-copy.c:93,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:94,1
    - Dst: close
      Src: /src/dovecot/src/lib/file-copy.c:97,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:98,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 66
    argCount: 3
    argNames:
    - srcpath
    - tmppath
    - try_hardlink
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 102
    functionName: file_copy_to_tmp
    functionSourceFile: /src/dovecot/src/lib/file-copy.c
    functionUses: 0
    functionsReached:
    - ECANTLINK
    - i_stream_create_fd
    - i_error
    - i_unreached
    - o_stream_get_error
    - i_close_fd
    - umask
    - open
    - o_stream_send_istream
    - i_stream_destroy
    - i_stream_get_error
    - fstat
    - i_unlink_if_exists
    - link
    - o_stream_create_fd_file
    - close
    - o_stream_destroy
    - fchown
    linkageType: ''
    returnType: int
    signature: "int file_copy_to_tmp(const char *srcpath, const char *tmppath,\n\t\t\t
      \   bool try_hardlink)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/file-copy.c:111,1
    - Dst: file_copy_to_tmp
      Src: /src/dovecot/src/lib/file-copy.c:113,1
    - Dst: rename
      Src: /src/dovecot/src/lib/file-copy.c:115,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-copy.c:116,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/file-copy.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - srcpath
    - destpath
    - try_hardlink
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 104
    functionDepth: 4
    functionLinenumber: 104
    functionLinenumberEnd: 123
    functionName: file_copy
    functionSourceFile: /src/dovecot/src/lib/file-copy.c
    functionUses: 0
    functionsReached:
    - rename
    - file_copy_to_tmp
    - i_error
    - i_unlink
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int file_copy(const char *srcpath, const char *destpath, bool try_hardlink)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/hash2.h:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - ATTR_UNUSED
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: hash2_strcmp
    functionSourceFile: /src/dovecot/src/lib/hash2.h
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool hash2_strcmp(const void *a, const void *b, void *ctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_hash
      Src: /src/dovecot/src/lib/hash2.h:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: hash2_str_hash
    functionSourceFile: /src/dovecot/src/lib/hash2.h
    functionUses: 0
    functionsReached:
    - str_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int hash2_str_hash(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - parent
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: event_create
    functionSourceFile: /src/dovecot/src/lib/lib-event.h
    functionUses: 243
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_create(parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - parent
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: event_create_passthrough
    functionSourceFile: /src/dovecot/src/lib/lib-event.h
    functionUses: 57
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_create_passthrough(parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - reason_code
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: event_reason_begin
    functionSourceFile: /src/dovecot/src/lib/lib-event.h
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_reason_begin(reason_code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - event
    - ','
    - replace
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 277
    functionName: event_set_log_prefix_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_set_log_prefix_callback(event, replace, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - event
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 289
    functionName: event_set_log_message_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_set_log_message_callback(event, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - event
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 297
    functionName: event_unset_log_message_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_unset_log_message_callback(event, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - pump
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: iostream_pump_set_completion_callback
    functionSourceFile: /src/dovecot/src/lib/iostream-pump.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: iostream_pump_set_completion_callback(pump, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 8
    functionName: INVALID
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INVALID(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 9
    functionName: VALID
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALID(n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crappy_uintmax_to_str
      Src: /src/dovecot/src/lib/test-strnum.c:18,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib/test-strnum.c:20,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strnum.c:22,1
    - Dst: STRINGIFY2
      Src: /src/dovecot/src/lib/test-strnum.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - into
    - val
    argTypes:
    - char*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 26
    functionName: crappy_uintmax_to_str
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 1
    functionsReached:
    - strlen
    - i_snprintf
    - crappy_uintmax_to_str
    - STRINGIFY2
    linkageType: ''
    returnType: int
    signature: int crappy_uintmax_to_str(char *into, uintmax_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: STRINGIFY
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRINGIFY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: STRINGIFY2
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRINGIFY2(s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-strnum.c:30,1
    - Dst: i_rand
      Src: /src/dovecot/src/lib/test-strnum.c:31,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:35,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-strnum.c:42,1
    - Dst: crappy_uintmax_to_str
      Src: /src/dovecot/src/lib/test-strnum.c:43,1
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/test-strnum.c:44,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:45,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:46,1
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/test-strnum.c:52,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:53,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:54,1
    - Dst: str_parse_uintmax
      Src: /src/dovecot/src/lib/test-strnum.c:55,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:56,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:57,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:58,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:61,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:67,1
    - Dst: crappy_uintmax_to_str
      Src: /src/dovecot/src/lib/test-strnum.c:69,1
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/test-strnum.c:78,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:79,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:81,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 27
    functionDepth: 3
    functionLinenumber: 27
    functionLinenumberEnd: 82
    functionName: test_str_to_uintmax
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - i_rand_minmax
    - crappy_uintmax_to_str
    - test_assert_idx
    - str_parse_uintmax
    - test_end
    - str_to_uintmax
    - i_rand_limit
    - i_rand
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_to_uintmax(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crappy_uintmax_to_str_hex
      Src: /src/dovecot/src/lib/test-strnum.c:92,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib/test-strnum.c:94,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strnum.c:96,1
    - Dst: STRINGIFY2
      Src: /src/dovecot/src/lib/test-strnum.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - into
    - val
    argTypes:
    - char*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 100
    functionName: crappy_uintmax_to_str_hex
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 1
    functionsReached:
    - strlen
    - i_snprintf
    - crappy_uintmax_to_str_hex
    - STRINGIFY2
    linkageType: ''
    returnType: int
    signature: int crappy_uintmax_to_str_hex(char *into, uintmax_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: STRINGIFY
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRINGIFY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: STRINGIFY2
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRINGIFY2(s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-strnum.c:104,1
    - Dst: i_rand
      Src: /src/dovecot/src/lib/test-strnum.c:105,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:109,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-strnum.c:116,1
    - Dst: crappy_uintmax_to_str_hex
      Src: /src/dovecot/src/lib/test-strnum.c:117,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib/test-strnum.c:118,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:119,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:120,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib/test-strnum.c:125,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:126,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:127,1
    - Dst: str_parse_uintmax_hex
      Src: /src/dovecot/src/lib/test-strnum.c:128,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:129,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:130,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:131,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:134,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:140,1
    - Dst: crappy_uintmax_to_str_hex
      Src: /src/dovecot/src/lib/test-strnum.c:142,1
    - Dst: str_to_uintmax_hex
      Src: /src/dovecot/src/lib/test-strnum.c:154,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:155,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:157,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 158
    functionName: test_str_to_uintmax_hex
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - i_rand_minmax
    - crappy_uintmax_to_str_hex
    - test_assert_idx
    - str_parse_uintmax_hex
    - test_end
    - str_to_uintmax_hex
    - i_rand_limit
    - i_rand
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_to_uintmax_hex(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crappy_uintmax_to_str_oct
      Src: /src/dovecot/src/lib/test-strnum.c:168,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib/test-strnum.c:170,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strnum.c:172,1
    - Dst: STRINGIFY2
      Src: /src/dovecot/src/lib/test-strnum.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - into
    - val
    argTypes:
    - char*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 176
    functionName: crappy_uintmax_to_str_oct
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 1
    functionsReached:
    - crappy_uintmax_to_str_oct
    - i_snprintf
    - strlen
    - STRINGIFY2
    linkageType: ''
    returnType: int
    signature: int crappy_uintmax_to_str_oct(char *into, uintmax_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 165
    functionName: STRINGIFY
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRINGIFY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 166
    functionName: STRINGIFY2
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRINGIFY2(s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-strnum.c:180,1
    - Dst: i_rand
      Src: /src/dovecot/src/lib/test-strnum.c:181,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:185,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-strnum.c:192,1
    - Dst: crappy_uintmax_to_str_oct
      Src: /src/dovecot/src/lib/test-strnum.c:193,1
    - Dst: str_to_uintmax_oct
      Src: /src/dovecot/src/lib/test-strnum.c:194,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:195,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:196,1
    - Dst: str_to_uintmax_oct
      Src: /src/dovecot/src/lib/test-strnum.c:201,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:202,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:203,1
    - Dst: str_parse_uintmax_oct
      Src: /src/dovecot/src/lib/test-strnum.c:204,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:205,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:206,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:207,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:210,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:216,1
    - Dst: crappy_uintmax_to_str_oct
      Src: /src/dovecot/src/lib/test-strnum.c:218,1
    - Dst: str_to_uintmax_oct
      Src: /src/dovecot/src/lib/test-strnum.c:227,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:228,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 231
    functionName: test_str_to_uintmax_oct
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - crappy_uintmax_to_str_oct
    - i_rand_minmax
    - str_to_uintmax_oct
    - test_assert_idx
    - str_parse_uintmax_oct
    - test_end
    - i_rand_limit
    - i_rand
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_to_uintmax_oct(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:241,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:242,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:243,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:244,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:247,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:248,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:249,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:250,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:252,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strnum.c:253,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/lib/test-strnum.c:255,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:256,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:258,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:260,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-strnum.c:264,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/lib/test-strnum.c:265,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:266,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 268
    functionName: test_str_to_u64
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - INVALID
    - test_assert_idx
    - VALID
    - str_to_uint64
    - t_strconcat
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_to_u64(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:280,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:281,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:282,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:283,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:284,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:285,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:286,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:288,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strnum.c:289,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib/test-strnum.c:291,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:292,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:294,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:296,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 299
    functionName: test_str_to_u32
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - INVALID
    - test_assert_idx
    - str_to_uint32
    - VALID
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_to_u32(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:310,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:311,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:312,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:313,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:314,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:315,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:317,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:318,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:320,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strnum.c:321,1
    - Dst: str_to_llong
      Src: /src/dovecot/src/lib/test-strnum.c:323,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:324,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:326,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:328,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 302
    functionDepth: 3
    functionLinenumber: 302
    functionLinenumberEnd: 331
    functionName: test_str_to_llong
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - INVALID
    - test_assert_idx
    - VALID
    - test_end
    - str_to_llong
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_to_llong(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:342,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:343,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:344,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:345,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:346,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:347,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:348,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:350,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strnum.c:351,1
    - Dst: str_to_int
      Src: /src/dovecot/src/lib/test-strnum.c:353,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:354,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:356,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:358,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 361
    functionName: test_str_to_i32
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - INVALID
    - test_assert_idx
    - test_begin
    - VALID
    - test_end
    - N_ELEMENTS
    - str_to_int
    linkageType: ''
    returnType: void
    signature: void test_str_to_i32(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:371,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:372,1
    - Dst: VALID
      Src: /src/dovecot/src/lib/test-strnum.c:373,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:374,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:375,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:376,1
    - Dst: INVALID
      Src: /src/dovecot/src/lib/test-strnum.c:377,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:379,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strnum.c:380,1
    - Dst: str_to_float
      Src: /src/dovecot/src/lib/test-strnum.c:383,1
    - Dst: str_to_double
      Src: /src/dovecot/src/lib/test-strnum.c:384,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:385,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:387,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:389,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:390,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strnum.c:391,1
    - Dst: fabs
      Src: /src/dovecot/src/lib/test-strnum.c:391,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 394
    functionName: test_str_to_float
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - str_to_double
    - INVALID
    - test_assert_idx
    - VALID
    - test_end
    - str_to_float
    - fabs
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_to_float(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:398,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:400,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:400,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:401,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:401,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:402,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:403,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:404,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:404,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:405,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:405,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:406,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:407,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:407,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:408,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:409,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:409,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:410,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strnum.c:411,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:412,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:412,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:413,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:413,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:414,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:415,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:415,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:416,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:416,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:417,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:417,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strnum.c:418,1
    - Dst: str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:418,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strnum.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 396
    functionDepth: 3
    functionLinenumber: 396
    functionLinenumberEnd: 420
    functionName: test_str_is_float
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - test_end
    - str_is_float
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_str_is_float(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_str_to_uintmax
      Src: /src/dovecot/src/lib/test-strnum.c:425,1
    - Dst: test_str_to_uintmax_hex
      Src: /src/dovecot/src/lib/test-strnum.c:426,1
    - Dst: test_str_to_uintmax_oct
      Src: /src/dovecot/src/lib/test-strnum.c:427,1
    - Dst: test_str_to_u64
      Src: /src/dovecot/src/lib/test-strnum.c:428,1
    - Dst: test_str_to_u32
      Src: /src/dovecot/src/lib/test-strnum.c:429,1
    - Dst: test_str_to_llong
      Src: /src/dovecot/src/lib/test-strnum.c:430,1
    - Dst: test_str_to_i32
      Src: /src/dovecot/src/lib/test-strnum.c:431,1
    - Dst: test_str_to_float
      Src: /src/dovecot/src/lib/test-strnum.c:432,1
    - Dst: test_str_is_float
      Src: /src/dovecot/src/lib/test-strnum.c:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 422
    functionDepth: 4
    functionLinenumber: 422
    functionLinenumberEnd: 434
    functionName: test_strnum
    functionSourceFile: /src/dovecot/src/lib/test-strnum.c
    functionUses: 0
    functionsReached:
    - test_str_to_u64
    - test_str_to_uintmax_oct
    - test_str_is_float
    - test_str_to_u32
    - test_str_to_uintmax_hex
    - test_str_to_llong
    - test_str_to_uintmax
    - test_str_to_i32
    - test_str_to_float
    linkageType: ''
    returnType: void
    signature: void test_strnum(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: PAGE_ALIGN
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAGE_ALIGN(size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/mmap-anon.c:40,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/mmap-anon.c:42,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/mmap-anon.c:43,1
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib/mmap-anon.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: movable_mmap_init
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - open
    - fd_close_on_exec
    - mmap_get_page_size
    linkageType: ''
    returnType: void
    signature: void movable_mmap_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: movable_mmap_init
      Src: /src/dovecot/src/lib/mmap-anon.c:56,1
    - Dst: PAGE_ALIGN
      Src: /src/dovecot/src/lib/mmap-anon.c:60,1
    - Dst: mmap
      Src: /src/dovecot/src/lib/mmap-anon.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - length
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 73
    functionName: mmap_anon
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 1
    functionsReached:
    - movable_mmap_init
    - PAGE_ALIGN
    - mmap
    linkageType: ''
    returnType: void
    signature: void *mmap_anon(size_t length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mmap_anon
      Src: /src/dovecot/src/lib/mmap-anon.c:81,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/mmap-anon.c:97,1
    - Dst: munmap
      Src: /src/dovecot/src/lib/mmap-anon.c:98,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mmap-anon.c:99,1
    - Dst: munmap
      Src: /src/dovecot/src/lib/mmap-anon.c:102,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mmap-anon.c:103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - hdr
    - new_size
    argTypes:
    - struct anon_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 106
    functionName: mremap_move
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 0
    functionsReached:
    - memcpy
    - munmap
    - i_panic
    - mmap_anon
    linkageType: ''
    returnType: void
    signature: void *mremap_move(struct anon_header *hdr, size_t new_size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mmap-anon.c:120,1
    - Dst: PAGE_ALIGN
      Src: /src/dovecot/src/lib/mmap-anon.c:122,1
    - Dst: mremap_move
      Src: /src/dovecot/src/lib/mmap-anon.c:131,1
    - Dst: munmap
      Src: /src/dovecot/src/lib/mmap-anon.c:136,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mmap-anon.c:138,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - old_address
    - ATTR_UNUSED
    - new_size
    - flags
    argTypes:
    - void*
    - size_t
    - size_t
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 143
    functionName: mremap_anon
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 1
    functionsReached:
    - i_panic
    - PAGE_ALIGN
    - mremap_move
    - munmap
    linkageType: ''
    returnType: void
    signature: "void *mremap_anon(void *old_address, size_t old_size  ATTR_UNUSED,\n\t\t
      \ size_t new_size, unsigned long flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mmap-anon.c:156,1
    - Dst: munmap
      Src: /src/dovecot/src/lib/mmap-anon.c:158,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mmap-anon.c:159,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - start
    - ATTR_UNUSED
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 162
    functionName: munmap_anon
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 1
    functionsReached:
    - i_panic
    - munmap
    linkageType: ''
    returnType: int
    signature: int munmap_anon(void *start, size_t length ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mmap
      Src: /src/dovecot/src/lib/mmap-anon.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - length
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 170
    functionName: mmap_anon
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 2
    functionsReached:
    - mmap
    linkageType: ''
    returnType: void
    signature: void *mmap_anon(size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mremap
      Src: /src/dovecot/src/lib/mmap-anon.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - old_address
    - old_size
    - new_size
    - flags
    argTypes:
    - void*
    - size_t
    - size_t
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: mremap_anon
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 1
    functionsReached:
    - mremap
    linkageType: ''
    returnType: void
    signature: "void *mremap_anon(void *old_address, size_t old_size, size_t new_size,\n\t\t
      \ unsigned long flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/dovecot/src/lib/mmap-anon.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - start
    - length
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: munmap_anon
    functionSourceFile: /src/dovecot/src/lib/mmap-anon.c
    functionUses: 1
    functionsReached:
    - munmap
    linkageType: ''
    returnType: int
    signature: int munmap_anon(void *start, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/ostream.c:9,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/ostream.c:10,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - name
    argTypes:
    - struct ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 7
    functionDepth: 2
    functionLinenumber: 7
    functionLinenumberEnd: 11
    functionName: o_stream_set_name
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 18
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void o_stream_set_name(struct ostream *stream, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 21
    functionName: o_stream_get_name
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *o_stream_get_name(struct ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: o_stream_get_fd
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int o_stream_get_fd(struct ostream *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/dovecot/src/lib/ostream.c:43,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 44
    functionName: o_stream_get_error
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 60
    functionsReached:
    - strerror
    linkageType: ''
    returnType: char
    signature: char *o_stream_get_error(struct ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib/ostream.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: o_stream_get_disconnect_reason
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 8
    functionsReached:
    - io_stream_get_disconnect_reason
    linkageType: ''
    returnType: char
    signature: char *o_stream_get_disconnect_reason(struct ostream *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.c:61,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:62,1
    - Dst: io_stream_close
      Src: /src/dovecot/src/lib/ostream.c:75,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - stream
    - close_parents
    argTypes:
    - struct ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 81
    functionName: o_stream_close_full
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - i_assert
    - io_stream_close
    linkageType: ''
    returnType: void
    signature: void o_stream_close_full(struct ostream *stream, bool close_parents)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_close_full
      Src: /src/dovecot/src/lib/ostream.c:91,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 93
    functionName: o_stream_destroy
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 80
    functionsReached:
    - o_stream_unref
    - o_stream_close_full
    linkageType: ''
    returnType: void
    signature: void o_stream_destroy(struct ostream **_stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_ref
      Src: /src/dovecot/src/lib/ostream.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: o_stream_ref
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 23
    functionsReached:
    - io_stream_ref
    linkageType: ''
    returnType: void
    signature: void o_stream_ref(struct ostream *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ostream.c:112,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib/ostream.c:113,1
    - Dst: io_stream_unref
      Src: /src/dovecot/src/lib/ostream.c:116,1
    - Dst: io_stream_free
      Src: /src/dovecot/src/lib/ostream.c:117,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 119
    functionName: o_stream_unref
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 88
    functionsReached:
    - i_panic
    - o_stream_get_name
    - io_stream_unref
    - io_stream_free
    linkageType: ''
    returnType: void
    signature: void o_stream_unref(struct ostream **_stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_add_destroy_callback
      Src: /src/dovecot/src/lib/ostream.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stream
    - callback
    - context
    argTypes:
    - struct ostream*
    - ostream_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: o_stream_add_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 2
    functionsReached:
    - io_stream_add_destroy_callback
    linkageType: ''
    returnType: void
    signature: "void o_stream_add_destroy_callback(struct ostream *stream,\n\t\t\t\t
      \  ostream_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib/ostream.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: o_stream_remove_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 2
    functionsReached:
    - io_stream_remove_destroy_callback
    linkageType: ''
    returnType: void
    signature: "void o_stream_remove_destroy_callback(struct ostream *stream,\n\t\t\t\t
      \     void (*callback)())"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_close_full
      Src: /src/dovecot/src/lib/ostream.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: o_stream_close
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 31
    functionsReached:
    - o_stream_close_full
    linkageType: ''
    returnType: void
    signature: void o_stream_close(struct ostream *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.c:148,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/ostream.c:152,1
    - Dst: struct ostream_private*::callback
      Src: /src/dovecot/src/lib/ostream.c:154,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.c:156,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib/ostream.c:158,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream.c:159,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 163
    functionName: o_stream_default_buffering_flush
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - struct ostream_private*::callback
    - o_stream_unref
    - o_stream_ref
    - o_stream_set_flush_pending
    - o_stream_flush
    linkageType: ''
    returnType: int
    signature: int o_stream_default_buffering_flush(struct ostream_private *_stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/ostream.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - _stream
    - parent
    argTypes:
    - struct ostream_private*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 174
    functionName: o_stream_init_buffering_flush
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 5
    functionsReached:
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: void
    signature: "void o_stream_init_buffering_flush(struct ostream_private *_stream,\n\t\t\t\t
      \  struct ostream *parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct ostream_private*::set_flush_callback
      Src: /src/dovecot/src/lib/ostream.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - stream
    - callback
    - context
    argTypes:
    - struct ostream*
    - stream_flush_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 184
    functionName: o_stream_set_flush_callback
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 28
    functionsReached:
    - struct ostream_private*::set_flush_callback
    linkageType: ''
    returnType: void
    signature: "void o_stream_set_flush_callback(struct ostream *stream,\n\t\t\t\t
      stream_flush_callback_t *callback,\n\t\t\t\t void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct ostream_private*::set_flush_callback
      Src: /src/dovecot/src/lib/ostream.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 191
    functionName: o_stream_unset_flush_callback
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 7
    functionsReached:
    - struct ostream_private*::set_flush_callback
    linkageType: ''
    returnType: void
    signature: void o_stream_unset_flush_callback(struct ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - context_r
    argTypes:
    - struct ostream*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 199
    functionName: o_stream_get_flush_callback
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: stream_flush_callback_t
    signature: 'stream_flush_callback_t *

      o_stream_get_flush_callback(struct ostream *stream, void **context_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/ostream.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct ostream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: o_stream_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 20
    functionsReached:
    - io_stream_set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: void o_stream_set_max_buffer_size(struct ostream *stream, size_t max_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: o_stream_get_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_get_max_buffer_size(struct ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:215,1
    - Dst: struct ostream_private*::cork
      Src: /src/dovecot/src/lib/ostream.c:218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 219
    functionName: o_stream_cork
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 69
    functionsReached:
    - struct ostream_private*::cork
    - unlikely
    linkageType: ''
    returnType: void
    signature: void o_stream_cork(struct ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:225,1
    - Dst: struct ostream_private*::cork
      Src: /src/dovecot/src/lib/ostream.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: o_stream_uncork
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 52
    functionsReached:
    - struct ostream_private*::cork
    - unlikely
    linkageType: ''
    returnType: void
    signature: void o_stream_uncork(struct ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: o_stream_is_corked
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool o_stream_is_corked(struct ostream *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_ignore_last_errors
      Src: /src/dovecot/src/lib/ostream.c:243,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:245,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:250,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream.c:251,1
    - Dst: o_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/ostream.c:253,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:258,1
    - Dst: struct ostream_private*::flush
      Src: /src/dovecot/src/lib/ostream.c:258,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 263
    functionName: o_stream_flush
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 66
    functionsReached:
    - o_stream_ignore_last_errors
    - io_stream_set_error
    - struct ostream_private*::flush
    - unlikely
    - o_stream_get_max_buffer_size
    - i_assert
    linkageType: ''
    returnType: int
    signature: int o_stream_flush(struct ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:269,1
    - Dst: struct ostream_private*::flush_pending
      Src: /src/dovecot/src/lib/ostream.c:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 273
    functionName: o_stream_set_flush_pending
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 31
    functionsReached:
    - unlikely
    - struct ostream_private*::flush_pending
    linkageType: ''
    returnType: void
    signature: void o_stream_set_flush_pending(struct ostream *stream, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct ostream_private*::get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 280
    functionName: o_stream_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 34
    functionsReached:
    - struct ostream_private*::get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_get_buffer_used_size(const struct ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct ostream_private*::get_buffer_avail_size
      Src: /src/dovecot/src/lib/ostream.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: o_stream_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 8
    functionsReached:
    - struct ostream_private*::get_buffer_avail_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_get_buffer_avail_size(const struct ostream *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:293,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:298,1
    - Dst: struct ostream_private*::seek
      Src: /src/dovecot/src/lib/ostream.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - stream
    - offset
    argTypes:
    - struct ostream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 304
    functionName: o_stream_seek
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 9
    functionsReached:
    - i_assert
    - struct ostream_private*::seek
    - unlikely
    linkageType: ''
    returnType: int
    signature: int o_stream_seek(struct ostream *stream, uoff_t offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/ostream.c:310,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - data
    - size
    argTypes:
    - struct ostream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 315
    functionName: o_stream_send
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 61
    functionsReached:
    - i_zero
    - o_stream_sendv
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t o_stream_send(struct ostream *stream, const void *data, size_t
      size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:333,1
    - Dst: struct ostream_private*::sendv
      Src: /src/dovecot/src/lib/ostream.c:334,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:337,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:339,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - stream
    - iov
    - iov_count
    - overflow_r
    argTypes:
    - struct ostream*
    - struct const_iovec*
    - unsigned int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 348
    functionName: o_stream_sendv_int
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - struct ostream_private*::sendv
    - i_assert
    - unlikely
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_sendv_int(struct ostream *stream, const struct const_iovec
      *iov,\n\t\t   unsigned int iov_count, bool *overflow_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:355,1
    - Dst: o_stream_sendv_int
      Src: /src/dovecot/src/lib/ostream.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 360
    functionName: o_stream_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 9
    functionsReached:
    - o_stream_sendv_int
    - unlikely
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_sendv(struct ostream *stream, const struct const_iovec
      *iov,\n\t\t       unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/ostream.c:364,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/ostream.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - str
    argTypes:
    - struct ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 365
    functionName: o_stream_send_str
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 16
    functionsReached:
    - strlen
    - o_stream_send
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t o_stream_send_str(struct ostream *stream, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/ostream.c:371,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib/ostream.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - data
    - size
    argTypes:
    - struct ostream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 376
    functionName: o_stream_nsend
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 122
    functionsReached:
    - i_zero
    - o_stream_nsendv
    linkageType: ''
    returnType: void
    signature: void o_stream_nsend(struct ostream *stream, const void *data, size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:383,1
    - Dst: o_stream_sendv_int
      Src: /src/dovecot/src/lib/ostream.c:386,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 390
    functionName: o_stream_nsendv
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 12
    functionsReached:
    - o_stream_sendv_int
    - unlikely
    linkageType: ''
    returnType: void
    signature: "void o_stream_nsendv(struct ostream *stream, const struct const_iovec
      *iov,\n\t\t     unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/ostream.c:394,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/ostream.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - str
    argTypes:
    - struct ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 395
    functionName: o_stream_nsend_str
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 146
    functionsReached:
    - strlen
    - o_stream_nsend
    linkageType: ''
    returnType: void
    signature: void o_stream_nsend_str(struct ostream *stream, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 401
    functionName: o_stream_finish
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 57
    functionsReached:
    - o_stream_flush
    linkageType: ''
    returnType: int
    signature: int o_stream_finish(struct ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: o_stream_set_finish_also_parent
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void o_stream_set_finish_also_parent(struct ostream *stream, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 411
    functionName: o_stream_set_finish_via_child
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void o_stream_set_finish_via_child(struct ostream *stream, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 419
    functionName: o_stream_ignore_last_errors
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void o_stream_ignore_last_errors(struct ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_ignore_last_errors
      Src: /src/dovecot/src/lib/ostream.c:423,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream.c:426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 428
    functionName: o_stream_abort
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 5
    functionsReached:
    - o_stream_ignore_last_errors
    - io_stream_set_error
    linkageType: ''
    returnType: void
    signature: void o_stream_abort(struct ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: o_stream_set_no_error_handling
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void o_stream_set_no_error_handling(struct ostream *stream, bool set)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:443,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:447,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:452,1
    - Dst: struct ostream_private*::send_istream
      Src: /src/dovecot/src/lib/ostream.c:453,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:456,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:457,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:458,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib/ostream.c:458,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:464,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib/ostream.c:465,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:468,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:471,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:475,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - outstream
    - instream
    argTypes:
    - struct ostream*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 435
    functionDepth: 2
    functionLinenumber: 435
    functionLinenumberEnd: 481
    functionName: o_stream_send_istream
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 12
    functionsReached:
    - struct ostream_private*::send_istream
    - i_stream_have_bytes_left
    - unlikely
    - o_stream_set_flush_pending
    - i_assert
    linkageType: ''
    returnType: enum ostream_send_istream_result
    signature: enum ostream_send_istream_result o_stream_send_istream(struct ostream
      *outstream, struct istream *instream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:485,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/ostream.c:487,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ostream.c:491,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream.c:497,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/ostream.c:499,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/ostream.c:500,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - outstream
    - instream
    argTypes:
    - struct ostream*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 483
    functionDepth: 3
    functionLinenumber: 483
    functionLinenumberEnd: 506
    functionName: o_stream_nsend_istream
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 8
    functionsReached:
    - io_stream_set_error
    - i_unreached
    - o_stream_send_istream
    - i_stream_get_error
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: void o_stream_nsend_istream(struct ostream *outstream, struct istream
      *instream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:513,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:518,1
    - Dst: struct ostream*::real_stream::write_at
      Src: /src/dovecot/src/lib/ostream.c:519,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ostream.c:523,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:524,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - stream
    - data
    - size
    - offset
    argTypes:
    - struct ostream*
    - void*
    - size_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 529
    functionName: o_stream_pwrite
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 3
    functionsReached:
    - i_assert
    - unlikely
    - struct ostream*::real_stream::write_at
    linkageType: ''
    returnType: int
    signature: "int o_stream_pwrite(struct ostream *stream, const void *data, size_t
      size,\n\t\t    uoff_t offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - tv_r
    argTypes:
    - struct ostream*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 534
    functionName: o_stream_get_last_write_time
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void o_stream_get_last_write_time(struct ostream *stream, struct timeval
      *tv_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/ostream.c:543,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream.c:545,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/ostream.c:549,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib/ostream.c:554,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - outstream
    - instream
    argTypes:
    - struct ostream*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 536
    functionDepth: 3
    functionLinenumber: 536
    functionLinenumberEnd: 557
    functionName: io_stream_copy
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 2
    functionsReached:
    - o_stream_sendv
    - i_stream_have_bytes_left
    - i_stream_read_more
    - i_stream_skip
    linkageType: ''
    returnType: enum ostream_send_istream_result
    signature: enum ostream_send_istream_result io_stream_copy(struct ostream *outstream,
      struct istream *instream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/ostream.c:563,1
    - Dst: struct ostream_private*::switch_ioloop_to
      Src: /src/dovecot/src/lib/ostream.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct ostream*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 566
    functionName: o_stream_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 11
    functionsReached:
    - io_stream_switch_ioloop_to
    - struct ostream_private*::switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: void o_stream_switch_ioloop_to(struct ostream *stream, struct ioloop
      *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/ostream.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 571
    functionName: o_stream_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 3
    functionsReached:
    - o_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: void o_stream_switch_ioloop(struct ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream.c:577,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.c:579,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib/ostream.c:581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 573
    functionDepth: 3
    functionLinenumber: 573
    functionLinenumberEnd: 582
    functionName: o_stream_default_close
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - container_of
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: "void o_stream_default_close(struct iostream_private *stream,\n\t\t\t\t
      \  bool close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream.c:587,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 584
    functionDepth: 2
    functionLinenumber: 584
    functionLinenumberEnd: 590
    functionName: o_stream_default_destroy
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - container_of
    linkageType: ''
    returnType: void
    signature: void o_stream_default_destroy(struct iostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream.c:597,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/ostream.c:600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 592
    functionDepth: 2
    functionLinenumber: 592
    functionLinenumberEnd: 602
    functionName: o_stream_default_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: "void o_stream_default_set_max_buffer_size(struct iostream_private
      *stream,\n\t\t\t\t     size_t max_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream.c:609,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.c:611,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/ostream.c:615,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - _stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 604
    functionDepth: 2
    functionLinenumber: 604
    functionLinenumberEnd: 617
    functionName: o_stream_default_cork
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - o_stream_cork
    - o_stream_uncork
    linkageType: ''
    returnType: void
    signature: void o_stream_default_cork(struct ostream_private *_stream, bool set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:624,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib/ostream.c:629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 619
    functionDepth: 3
    functionLinenumber: 619
    functionLinenumberEnd: 630
    functionName: o_stream_copy_error_from_parent
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 13
    functionsReached:
    - i_assert
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: void o_stream_copy_error_from_parent(struct ostream_private *_stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream.c:634,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.c:639,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib/ostream.c:640,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream.c:643,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 632
    functionDepth: 4
    functionLinenumber: 632
    functionLinenumberEnd: 647
    functionName: o_stream_flush_parent_if_needed
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 3
    functionsReached:
    - o_stream_flush
    - o_stream_get_buffer_used_size
    - o_stream_copy_error_from_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_flush_parent_if_needed(struct ostream_private *_stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream.c:653,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream.c:657,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/ostream.c:659,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib/ostream.c:661,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 649
    functionDepth: 4
    functionLinenumber: 649
    functionLinenumberEnd: 663
    functionName: o_stream_flush_parent
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 6
    functionsReached:
    - o_stream_flush
    - i_assert
    - o_stream_copy_error_from_parent
    - o_stream_finish
    linkageType: ''
    returnType: int
    signature: int o_stream_flush_parent(struct ostream_private *_stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib/ostream.c:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 665
    functionDepth: 5
    functionLinenumber: 665
    functionLinenumberEnd: 671
    functionName: o_stream_default_flush
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_default_flush(struct ostream_private *_stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/ostream.c:679,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - _stream
    - callback
    - context
    argTypes:
    - struct ostream_private*
    - stream_flush_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 683
    functionName: o_stream_default_set_flush_callback
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: void
    signature: "void o_stream_default_set_flush_callback(struct ostream_private *_stream,\n\t\t\t\t
      \   stream_flush_callback_t *callback,\n\t\t\t\t    void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib/ostream.c:689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - _stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 690
    functionName: o_stream_default_set_flush_pending
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_set_flush_pending
    linkageType: ''
    returnType: void
    signature: void o_stream_default_set_flush_pending(struct ostream_private *_stream,
      bool set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream.c:698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 699
    functionName: o_stream_default_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_default_get_buffer_used_size(const struct ostream_private
      *_stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream.c:707,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 711
    functionName: o_stream_default_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_default_get_buffer_avail_size(const struct ostream_private
      *_stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _stream
    - ATTR_UNUSED
    argTypes:
    - struct ostream_private*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 719
    functionName: o_stream_default_seek
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int o_stream_default_seek(struct ostream_private *_stream,\n\t\t      uoff_t
      offset ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream.c:727,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib/ostream.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 721
    functionDepth: 4
    functionLinenumber: 721
    functionLinenumberEnd: 733
    functionName: o_stream_default_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_sendv
    - o_stream_copy_error_from_parent
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_default_sendv(struct ostream_private *stream,\n\t\t
      \      const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - _stream
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct ostream_private*
    - void*
    - size_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 735
    functionDepth: 0
    functionLinenumber: 735
    functionLinenumberEnd: 742
    functionName: o_stream_default_write_at
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int o_stream_default_write_at(struct ostream_private *_stream,\n\t\t\t
      \ const void *data ATTR_UNUSED,\n\t\t\t  size_t size ATTR_UNUSED, uoff_t offset
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_copy
      Src: /src/dovecot/src/lib/ostream.c:748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - outstream
    - instream
    argTypes:
    - struct ostream_private*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 744
    functionDepth: 4
    functionLinenumber: 744
    functionLinenumberEnd: 749
    functionName: o_stream_default_send_istream
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - io_stream_copy
    linkageType: ''
    returnType: enum ostream_send_istream_result
    signature: "enum ostream_send_istream_result o_stream_default_send_istream(struct
      ostream_private *outstream,\n\t\t\t      struct istream *instream)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/ostream.c:756,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - _stream
    - ioloop
    argTypes:
    - struct ostream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 757
    functionName: o_stream_default_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: "void o_stream_default_switch_ioloop_to(struct ostream_private *_stream,\n\t\t\t\t
      \ struct ioloop *ioloop)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/ostream.c:769,1
    - Dst: io_stream_init
      Src: /src/dovecot/src/lib/ostream.c:817,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 3
    argNames:
    - _stream
    - parent
    - fd
    argTypes:
    - struct ostream_private*
    - struct ostream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 759
    functionDepth: 2
    functionLinenumber: 759
    functionLinenumberEnd: 819
    functionName: o_stream_create
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 12
    functionsReached:
    - o_stream_ref
    - io_stream_init
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create(struct ostream_private *_stream, struct ostream *parent, int
      fd)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream.c:826,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream.c:831,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib/ostream.c:832,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/ostream.c:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - stream_errno
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 821
    functionDepth: 3
    functionLinenumber: 821
    functionLinenumberEnd: 835
    functionName: o_stream_create_error
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 2
    functionsReached:
    - o_stream_set_no_error_handling
    - o_stream_create
    - o_stream_set_name
    - i_new
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_error(int stream_errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/ostream.c:843,1
    - Dst: o_stream_create_error
      Src: /src/dovecot/src/lib/ostream.c:844,1
    - Dst: io_stream_set_verror
      Src: /src/dovecot/src/lib/ostream.c:845,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/ostream.c:846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - stream_errno
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 837
    functionDepth: 4
    functionLinenumber: 837
    functionLinenumberEnd: 848
    functionName: o_stream_create_error_str
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 9
    functionsReached:
    - va_end
    - o_stream_create_error
    - io_stream_set_verror
    - va_start
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_error_str(int stream_errno, const char *fmt, ...)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream.c:854,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream.c:855,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/ostream.c:855,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - output
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 850
    functionDepth: 3
    functionLinenumber: 850
    functionLinenumberEnd: 856
    functionName: o_stream_create_passthrough
    functionSourceFile: /src/dovecot/src/lib/ostream.c
    functionUses: 0
    functionsReached:
    - o_stream_create
    - i_new
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_passthrough(struct ostream *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:46,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-time-util.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:51,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-time-util.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:52,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-time-util.c:52,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 55
    functionName: test_timeval_cmp
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - timeval_cmp
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_timeval_cmp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:182,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-time-util.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:188,1
    - Dst: timeval_cmp_margin
      Src: /src/dovecot/src/lib/test-time-util.c:188,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:189,1
    - Dst: timeval_cmp_margin
      Src: /src/dovecot/src/lib/test-time-util.c:189,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 57
    functionDepth: 3
    functionLinenumber: 57
    functionLinenumberEnd: 192
    functionName: test_timeval_cmp_margin
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - test_end
    - timeval_cmp_margin
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_timeval_cmp_margin(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:213,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-time-util.c:214,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/test-time-util.c:215,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/test-time-util.c:216,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:217,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:218,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/test-time-util.c:220,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/test-time-util.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:222,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:223,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 194
    functionDepth: 3
    functionLinenumber: 194
    functionLinenumberEnd: 226
    functionName: test_timeval_diff
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - timeval_diff_usecs
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_timeval_diff(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:263,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-time-util.c:264,1
    - Dst: mktime
      Src: /src/dovecot/src/lib/test-time-util.c:267,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:268,1
    - Dst: time_to_local_day_start
      Src: /src/dovecot/src/lib/test-time-util.c:270,1
    - Dst: localtime
      Src: /src/dovecot/src/lib/test-time-util.c:271,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:272,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:275,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:278,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 228
    functionDepth: 3
    functionLinenumber: 228
    functionLinenumberEnd: 279
    functionName: test_time_to_local_day_start
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - localtime
    - time_to_local_day_start
    - N_ELEMENTS
    - test_begin
    - mktime
    linkageType: ''
    returnType: void
    signature: void test_time_to_local_day_start(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-time-util.c:284,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-time-util.c:285,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:286,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:289,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-time-util.c:289,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:291,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/test-time-util.c:291,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:292,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:293,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:296,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-time-util.c:296,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:297,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/test-time-util.c:297,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:298,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:301,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-time-util.c:301,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:302,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/test-time-util.c:302,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:303,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:306,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-time-util.c:306,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:307,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/test-time-util.c:307,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - ts
    - idx
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 309
    functionName: test_timestamp
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - strlen
    - str_array_length
    - t_strsplit
    - str_to_uint
    linkageType: ''
    returnType: void
    signature: void test_timestamp(const char *ts, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:314,1
    - Dst: time
      Src: /src/dovecot/src/lib/test-time-util.c:316,1
    - Dst: test_timestamp
      Src: /src/dovecot/src/lib/test-time-util.c:317,1
    - Dst: t_strftime
      Src: /src/dovecot/src/lib/test-time-util.c:317,1
    - Dst: gmtime
      Src: /src/dovecot/src/lib/test-time-util.c:317,1
    - Dst: test_timestamp
      Src: /src/dovecot/src/lib/test-time-util.c:318,1
    - Dst: t_strfgmtime
      Src: /src/dovecot/src/lib/test-time-util.c:318,1
    - Dst: test_timestamp
      Src: /src/dovecot/src/lib/test-time-util.c:319,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/lib/test-time-util.c:319,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 322
    functionName: test_strftime_now
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - gmtime
    - t_strftime
    - test_end
    - test_timestamp
    - t_strfgmtime
    - time
    - t_strflocaltime
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_strftime_now(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:327,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:331,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-time-util.c:331,1
    - Dst: t_strftime
      Src: /src/dovecot/src/lib/test-time-util.c:331,1
    - Dst: gmtime
      Src: /src/dovecot/src/lib/test-time-util.c:331,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:332,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-time-util.c:332,1
    - Dst: t_strfgmtime
      Src: /src/dovecot/src/lib/test-time-util.c:332,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 335
    functionName: test_strftime_fixed
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - strcmp
    - gmtime
    - t_strftime
    - test_end
    - test_assert
    - t_strfgmtime
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_strftime_fixed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:341,1
    - Dst: time
      Src: /src/dovecot/src/lib/test-time-util.c:343,1
    - Dst: i_microseconds
      Src: /src/dovecot/src/lib/test-time-util.c:344,1
    - Dst: i_nanoseconds
      Src: /src/dovecot/src/lib/test-time-util.c:345,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:350,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:351,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 337
    functionDepth: 3
    functionLinenumber: 337
    functionLinenumberEnd: 354
    functionName: test_micro_nanoseconds
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - test_end
    - i_nanoseconds
    - i_microseconds
    - test_assert
    - time
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_micro_nanoseconds(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:384,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-time-util.c:385,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:386,1
    - Dst: str_to_timeval
      Src: /src/dovecot/src/lib/test-time-util.c:386,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:387,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:388,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-time-util.c:390,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-time-util.c:391,1
    - Dst: str_to_timeval
      Src: /src/dovecot/src/lib/test-time-util.c:391,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 393
    functionName: test_str_to_timeval
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - str_to_timeval
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_to_timeval(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-time-util.c:397,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-time-util.c:400,1
    - Dst: timeval_from_usecs
      Src: /src/dovecot/src/lib/test-time-util.c:401,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:402,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-time-util.c:402,1
    - Dst: timeval_from_usecs
      Src: /src/dovecot/src/lib/test-time-util.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:407,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-time-util.c:407,1
    - Dst: timeval_from_usecs
      Src: /src/dovecot/src/lib/test-time-util.c:411,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:412,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-time-util.c:412,1
    - Dst: timeval_from_usecs
      Src: /src/dovecot/src/lib/test-time-util.c:416,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:417,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-time-util.c:417,1
    - Dst: timeval_from_usecs
      Src: /src/dovecot/src/lib/test-time-util.c:421,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-time-util.c:422,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-time-util.c:422,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-time-util.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 395
    functionDepth: 3
    functionLinenumber: 395
    functionLinenumberEnd: 425
    functionName: test_timeval_from_usecs
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - i_zero
    - timeval_cmp
    - test_end
    - timeval_from_usecs
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_timeval_from_usecs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_timeval_cmp
      Src: /src/dovecot/src/lib/test-time-util.c:429,1
    - Dst: test_timeval_cmp_margin
      Src: /src/dovecot/src/lib/test-time-util.c:430,1
    - Dst: test_timeval_diff
      Src: /src/dovecot/src/lib/test-time-util.c:431,1
    - Dst: test_time_to_local_day_start
      Src: /src/dovecot/src/lib/test-time-util.c:432,1
    - Dst: test_strftime_now
      Src: /src/dovecot/src/lib/test-time-util.c:433,1
    - Dst: test_strftime_fixed
      Src: /src/dovecot/src/lib/test-time-util.c:434,1
    - Dst: test_micro_nanoseconds
      Src: /src/dovecot/src/lib/test-time-util.c:435,1
    - Dst: test_str_to_timeval
      Src: /src/dovecot/src/lib/test-time-util.c:436,1
    - Dst: test_timeval_from_usecs
      Src: /src/dovecot/src/lib/test-time-util.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 427
    functionDepth: 4
    functionLinenumber: 427
    functionLinenumberEnd: 438
    functionName: test_time_util
    functionSourceFile: /src/dovecot/src/lib/test-time-util.c
    functionUses: 0
    functionsReached:
    - test_micro_nanoseconds
    - test_timeval_cmp_margin
    - test_timeval_from_usecs
    - test_timeval_cmp
    - test_strftime_fixed
    - test_str_to_timeval
    - test_strftime_now
    - test_time_to_local_day_start
    - test_timeval_diff
    linkageType: ''
    returnType: void
    signature: void test_time_util(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: N_ELEMENTS
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 300
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: N_ELEMENTS(arr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: MEM_ALIGN
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MEM_ALIGN(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - offset
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: PTR_OFFSET
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 131
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR_OFFSET(ptr, offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - offset
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: CONST_PTR_OFFSET
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 95
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_PTR_OFFSET(ptr, offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: container_of
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 607
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_of(ptr, type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: I_MIN
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 109
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: I_MIN(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: I_MAX
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: I_MAX(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: POINTER_CAST
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 51
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POINTER_CAST(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: POINTER_CAST_TO
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POINTER_CAST_TO(p, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - format_idx
    - ','
    - arg_idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: ATTR_FORMAT
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_FORMAT(format_idx, arg_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arg_idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: ATTR_FORMAT_ARG
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_FORMAT_ARG(arg_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - format_idx
    - ','
    - arg_idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: ATTR_SCANF
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_SCANF(format_idx, arg_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - format_idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: ATTR_STRFTIME
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_STRFTIME(format_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: ATTR_NULL
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_NULL(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: ATTR_DEPRECATED
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_DEPRECATED(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - callback
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 174
    functionName: CALLBACK_TYPECHECK
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_TYPECHECK(callback, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - callback
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: CALLBACK_TYPECHECK
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CALLBACK_TYPECHECK(callback, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - condition
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: COMPILE_ERROR_IF_TRUE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_ERROR_IF_TRUE(condition)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - condition
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: COMPILE_ERROR_IF_TRUE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_ERROR_IF_TRUE(condition)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _a
    - ','
    - _b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE(_a, _b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _a1
    - ','
    - _a2
    - ','
    - _b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE(_a1, _a2, _b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - return_type
    - ','
    - checks
    - ','
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: TYPE_CHECKS
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE_CHECKS(return_type, checks, func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _a
    - ','
    - _b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 202
    functionName: COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE(_a, _b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _a1
    - ','
    - _a2
    - ','
    - _b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE(_a1, _a2, _b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - return_type
    - ','
    - checks
    - ','
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 204
    functionName: TYPE_CHECKS
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE_CHECKS(return_type, checks, func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    functionName: unlikely
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlikely(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: likely
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 40
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: likely(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 211
    functionName: unlikely
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlikely(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 212
    functionName: likely
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 40
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: likely(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 231
    functionName: i_assert
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 2460
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_assert(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - maj
    - ','
    - min
    - ','
    - micro
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: DOVECOT_PREREQ
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DOVECOT_PREREQ(maj, min, micro)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 256
    functionName: i_zero
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 681
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_zero(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 259
    functionName: i_zero_safe
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_zero_safe(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - st_a
    - ','
    - st_b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 265
    functionName: ST_CHANGED
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_CHANGED(st_a, st_b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    functionName: ATTR_NO_SANITIZE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_NO_SANITIZE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 297
    functionName: ENUM_NEGATE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 114
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENUM_NEGATE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 302
    functionName: ENUM_NEGATE
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 114
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENUM_NEGATE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 305
    functionName: regexec
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: regexec(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    functionName: regcomp
    functionSourceFile: /src/dovecot/src/lib/macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: regcomp(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - nelem
    - ','
    - _maxsize
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 28
    functionName: CHECK_OVERFLOW
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_OVERFLOW(type, nelem, _maxsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: pool_test_get_name
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pool_test_get_name(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pool_test_ref
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_test_ref(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: pool_test_unref
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_test_unref(pool_t *pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/test-mempool.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: pool_test_malloc
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    linkageType: ''
    returnType: void
    signature: void *pool_test_malloc(pool_t pool ATTR_UNUSED, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: pool_test_free
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_test_free(pool_t pool ATTR_UNUSED, void *mem ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/test-mempool.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - new_size
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: pool_test_realloc
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    linkageType: ''
    returnType: void
    signature: "void *pool_test_realloc(pool_t pool ATTR_UNUSED, void *mem ATTR_UNUSED,\n\t\t\t
      \      size_t old_size ATTR_UNUSED, size_t new_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: pool_test_clear
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_test_clear(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: pool_test_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t pool_test_get_max_easy_alloc_size(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_mempool_overflow
      Src: /src/dovecot/src/lib/test-mempool.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: test_mempool
    functionSourceFile: /src/dovecot/src/lib/test-mempool.c
    functionUses: 0
    functionsReached:
    - test_mempool_overflow
    linkageType: ''
    returnType: void
    signature: void test_mempool(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: T_STRING
    functionSourceFile: /src/dovecot/src/lib/data-stack.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: T_STRING(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: T_XSTRING
    functionSourceFile: /src/dovecot/src/lib/data-stack.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: T_XSTRING(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pass_condition
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: T_END_PASS_STR_IF
    functionSourceFile: /src/dovecot/src/lib/data-stack.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: T_END_PASS_STR_IF(pass_condition, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: T_END_PASS_STR
    functionSourceFile: /src/dovecot/src/lib/data-stack.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: T_END_PASS_STR(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: t_new
    functionSourceFile: /src/dovecot/src/lib/data-stack.h
    functionUses: 100
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: t_new(type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-imem.c:13,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-imem.c:15,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-imem.c:16,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-imem.c:17,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-imem.c:18,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/test-imem.c:21,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib/test-imem.c:22,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:25,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-imem.c:25,1
    - Dst: i_realloc_type
      Src: /src/dovecot/src/lib/test-imem.c:28,1
    - Dst: i_realloc
      Src: /src/dovecot/src/lib/test-imem.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:33,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-imem.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:34,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-imem.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:35,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-imem.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:36,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-imem.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:37,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-imem.c:37,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-imem.c:40,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-imem.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:43,1
    - Dst: i_realloc_type
      Src: /src/dovecot/src/lib/test-imem.c:46,1
    - Dst: i_realloc
      Src: /src/dovecot/src/lib/test-imem.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-imem.c:50,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-imem.c:50,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-imem.c:52,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-imem.c:53,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-imem.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 56
    functionName: test_imem_alloc
    functionSourceFile: /src/dovecot/src/lib/test-imem.c
    functionUses: 0
    functionsReached:
    - i_malloc
    - i_realloc_type
    - test_end
    - i_new
    - test_assert
    - memcmp
    - memset
    - i_free
    - i_realloc
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imem_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_imem_alloc
      Src: /src/dovecot/src/lib/test-imem.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: test_imem
    functionSourceFile: /src/dovecot/src/lib/test-imem.c
    functionUses: 0
    functionsReached:
    - test_imem_alloc
    linkageType: ''
    returnType: void
    signature: void test_imem(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/mountpoint.c:69,1
    - Dst: statvfs
      Src: /src/dovecot/src/lib/mountpoint.c:70,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mountpoint.c:74,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/mountpoint.c:78,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/mountpoint.c:79,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/mountpoint.c:81,1
    - Dst: getvfsbynumber
      Src: /src/dovecot/src/lib/mountpoint.c:81,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/mountpoint.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - path
    - pool
    - point_r
    argTypes:
    - char*
    - pool_t
    - struct mountpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 87
    functionName: mountpoint_get_statvfs
    functionSourceFile: /src/dovecot/src/lib/mountpoint.c
    functionUses: 0
    functionsReached:
    - i_zero
    - statvfs
    - p_strdup
    - getvfsbynumber
    - i_error
    linkageType: ''
    returnType: int
    signature: "int mountpoint_get_statvfs(const char *path, pool_t pool,\n                       struct
      mountpoint *point_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/mountpoint.c:93,1
    - Dst: mountpoint_get_statvfs
      Src: /src/dovecot/src/lib/mountpoint.c:98,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/mountpoint.c:105,1
    - Dst: stat
      Src: /src/dovecot/src/lib/mountpoint.c:106,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mountpoint.c:110,1
    - Dst: mountpoint_iter_init
      Src: /src/dovecot/src/lib/mountpoint.c:114,1
    - Dst: mountpoint_iter_next
      Src: /src/dovecot/src/lib/mountpoint.c:115,1
    - Dst: minor
      Src: /src/dovecot/src/lib/mountpoint.c:116,1
    - Dst: minor
      Src: /src/dovecot/src/lib/mountpoint.c:116,1
    - Dst: major
      Src: /src/dovecot/src/lib/mountpoint.c:117,1
    - Dst: major
      Src: /src/dovecot/src/lib/mountpoint.c:117,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/mountpoint.c:121,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/mountpoint.c:122,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/mountpoint.c:123,1
    - Dst: mountpoint_iter_deinit
      Src: /src/dovecot/src/lib/mountpoint.c:127,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - path
    - pool
    - point_r
    argTypes:
    - char*
    - pool_t
    - struct mountpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 131
    functionName: mountpoint_get
    functionSourceFile: /src/dovecot/src/lib/mountpoint.c
    functionUses: 3
    functionsReached:
    - i_zero
    - p_strdup
    - i_error
    - mountpoint_iter_deinit
    - mountpoint_iter_next
    - stat
    - mountpoint_iter_init
    - minor
    - major
    - mountpoint_get_statvfs
    linkageType: ''
    returnType: int
    signature: int mountpoint_get(const char *path, pool_t pool, struct mountpoint
      *point_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/mountpoint.c:154,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/mountpoint.c:160,1
    - Dst: mntctl
      Src: /src/dovecot/src/lib/mountpoint.c:161,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/mountpoint.c:163,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mountpoint.c:166,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib/mountpoint.c:171,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/mountpoint.c:172,1
    - Dst: fopen
      Src: /src/dovecot/src/lib/mountpoint.c:175,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mountpoint.c:177,1
    - Dst: resetmnttab
      Src: /src/dovecot/src/lib/mountpoint.c:181,1
    - Dst: setmntent
      Src: /src/dovecot/src/lib/mountpoint.c:183,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mountpoint.c:185,1
    - Dst: getmntinfo
      Src: /src/dovecot/src/lib/mountpoint.c:189,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mountpoint.c:191,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 152
    functionDepth: 5
    functionLinenumber: 152
    functionLinenumberEnd: 198
    functionName: mountpoint_iter_init
    functionSourceFile: /src/dovecot/src/lib/mountpoint.c
    functionUses: 1
    functionsReached:
    - memcpy
    - i_malloc
    - t_buffer_get
    - i_error
    - setmntent
    - mntctl
    - resetmnttab
    - fopen
    - i_new
    - getmntinfo
    linkageType: ''
    returnType: struct mountpoint_iter
    signature: struct mountpoint_iter *mountpoint_iter_init(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/mountpoint.c:212,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/mountpoint.c:217,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/mountpoint.c:224,1
    - Dst: mountpoint_iter_next
      Src: /src/dovecot/src/lib/mountpoint.c:237,1
    - Dst: stat
      Src: /src/dovecot/src/lib/mountpoint.c:239,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/mountpoint.c:253,1
    - Dst: getextmntent
      Src: /src/dovecot/src/lib/mountpoint.c:254,1
    - Dst: hasmntopt
      Src: /src/dovecot/src/lib/mountpoint.c:255,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/mountpoint.c:259,1
    - Dst: makedev
      Src: /src/dovecot/src/lib/mountpoint.c:265,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/mountpoint.c:276,1
    - Dst: getmntent
      Src: /src/dovecot/src/lib/mountpoint.c:277,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/mountpoint.c:278,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/mountpoint.c:279,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/mountpoint.c:280,1
    - Dst: stat
      Src: /src/dovecot/src/lib/mountpoint.c:286,1
    - Dst: getvfsbynumber
      Src: /src/dovecot/src/lib/mountpoint.c:307,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 75
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct mountpoint_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 318
    functionName: mountpoint_iter_next
    functionSourceFile: /src/dovecot/src/lib/mountpoint.c
    functionUses: 2
    functionsReached:
    - i_zero
    - strcmp
    - PTR_OFFSET
    - getvfsbynumber
    - makedev
    - getmntent
    - mountpoint_iter_next
    - stat
    - getextmntent
    - hasmntopt
    - t_strconcat
    linkageType: ''
    returnType: struct mountpoint
    signature: struct mountpoint *mountpoint_iter_next(struct mountpoint_iter *iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/mountpoint.c:327,1
    - Dst: fclose
      Src: /src/dovecot/src/lib/mountpoint.c:330,1
    - Dst: endmntent
      Src: /src/dovecot/src/lib/mountpoint.c:333,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/mountpoint.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct mountpoint_iter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 337
    functionName: mountpoint_iter_deinit
    functionSourceFile: /src/dovecot/src/lib/mountpoint.c
    functionUses: 1
    functionsReached:
    - fclose
    - i_free
    - endmntent
    linkageType: ''
    returnType: int
    signature: int mountpoint_iter_deinit(struct mountpoint_iter **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 9
    functionName: cmp_uint
    functionSourceFile: /src/dovecot/src/lib/test-bsearch-insert-pos.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int cmp_uint(const unsigned int *i1, const unsigned int *i2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bsearch_insert_pos
      Src: /src/dovecot/src/lib/test-bsearch-insert-pos.c:27,1
    - Dst: test_out
      Src: /src/dovecot/src/lib/test-bsearch-insert-pos.c:43,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-bsearch-insert-pos.c:43,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 11
    functionDepth: 2
    functionLinenumber: 11
    functionLinenumberEnd: 46
    functionName: test_bsearch_insert_pos
    functionSourceFile: /src/dovecot/src/lib/test-bsearch-insert-pos.c
    functionUses: 0
    functionsReached:
    - test_out
    - t_strdup_printf
    - bsearch_insert_pos
    linkageType: ''
    returnType: void
    signature: void test_bsearch_insert_pos(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: str_data
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 158
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *str_data(const string_t *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: str_len
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 321
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t str_len(const string_t *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/str.h:35,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/str.h:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - cstr
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: str_append
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 439
    functionsReached:
    - buffer_append
    - strlen
    linkageType: ''
    returnType: void
    signature: void str_append(string_t *str, const char *cstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/str.h:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - data
    - len
    argTypes:
    - string_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: str_append_data
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 81
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: void
    signature: void str_append_data(string_t *str, const void *data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/str.h:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - chr
    argTypes:
    - string_t*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: str_append_c
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 402
    functionsReached:
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: void str_append_c(string_t *str, unsigned char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - chr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: str_append_c
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 402
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str_append_c(str, chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/str.h:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - string_t*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: str_append_str
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 15
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: void
    signature: void str_append_str(string_t *dest, const string_t *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_insert
      Src: /src/dovecot/src/lib/str.h:72,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/str.h:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - pos
    - cstr
    argTypes:
    - string_t*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: str_insert
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 11
    functionsReached:
    - strlen
    - buffer_insert
    linkageType: ''
    returnType: void
    signature: void str_insert(string_t *str, size_t pos, const char *cstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/str.h:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - pos
    - len
    argTypes:
    - string_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: str_delete
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 9
    functionsReached:
    - buffer_delete
    linkageType: ''
    returnType: void
    signature: void str_delete(string_t *str, size_t pos, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_replace
      Src: /src/dovecot/src/lib/str.h:83,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/str.h:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - str
    - pos
    - len
    - cstr
    argTypes:
    - string_t*
    - size_t
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: str_replace
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 11
    functionsReached:
    - strlen
    - buffer_replace
    linkageType: ''
    returnType: void
    signature: "void str_replace(string_t *str, size_t pos, size_t len,\n\t\t\t       const
      char *cstr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/str.h:90,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/str.h:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - string_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: str_truncate
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 291
    functionsReached:
    - buffer_set_used_size
    - str_len
    linkageType: ''
    returnType: void
    signature: void str_truncate(string_t *str, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_clear
      Src: /src/dovecot/src/lib/str.h:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: str_clear
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 1
    functionsReached:
    - buffer_clear
    linkageType: ''
    returnType: void
    signature: void str_clear(string_t *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib/str.h:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: str_clear_safe
    functionSourceFile: /src/dovecot/src/lib/str.h
    functionUses: 0
    functionsReached:
    - buffer_clear_safe
    linkageType: ''
    returnType: void
    signature: void str_clear_safe(string_t *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 19
    functionName: test_failures_handler
    functionSourceFile: /src/dovecot/src/lib/test-failures.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void test_failures_handler(const struct failure_context *ctx,\n\t\t\t\t
      \ const char *format ATTR_UNUSED,\n\t\t\t\t  va_list args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-failures.c:23,1
    - Dst: i_get_failure_handlers
      Src: /src/dovecot/src/lib/test-failures.c:24,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-failures.c:25,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-failures.c:27,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/lib/test-failures.c:29,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib/test-failures.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:31,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/lib/test-failures.c:32,1
    - Dst: i_set_info_handler
      Src: /src/dovecot/src/lib/test-failures.c:34,1
    - Dst: i_info
      Src: /src/dovecot/src/lib/test-failures.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:36,1
    - Dst: i_set_info_handler
      Src: /src/dovecot/src/lib/test-failures.c:37,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib/test-failures.c:39,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/test-failures.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:41,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-failures.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:43,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib/test-failures.c:44,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-failures.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 20
    functionDepth: 3
    functionLinenumber: 20
    functionLinenumberEnd: 52
    functionName: test_get_set_handlers
    functionSourceFile: /src/dovecot/src/lib/test-failures.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_set_debug_handler
    - i_warning
    - i_set_error_handler
    - test_end
    - test_assert
    - i_set_info_handler
    - i_info
    - i_get_failure_handlers
    - i_debug
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_get_set_handlers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-failures.c:55,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib/test-failures.c:56,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/test-failures.c:57,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-failures.c:58,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-failures.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: test_expected
    functionSourceFile: /src/dovecot/src/lib/test-failures.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - test_expect_errors
    - i_warning
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_expected(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-failures.c:63,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-failures.c:64,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-failures.c:65,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-failures.c:66,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-failures.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: test_expected_str
    functionSourceFile: /src/dovecot/src/lib/test-failures.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - i_error
    - test_expect_error_string
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_expected_str(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-failures.c:83,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/test-failures.c:86,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-failures.c:89,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - line
    - prefix
    - text
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 90
    functionName: internal_line_match
    functionSourceFile: /src/dovecot/src/lib/test-failures.c
    functionUses: 0
    functionsReached:
    - str_begins
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool internal_line_match(const char *line, const char *prefix, const
      char *text)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-failures.c:96,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-failures.c:99,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-failures.c:107,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-failures.c:110,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-failures.c:111,1
    - Dst: fork
      Src: /src/dovecot/src/lib/test-failures.c:112,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-failures.c:114,1
    - Dst: dup2
      Src: /src/dovecot/src/lib/test-failures.c:117,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-failures.c:118,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-failures.c:119,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-failures.c:120,1
    - Dst: i_set_failure_internal
      Src: /src/dovecot/src/lib/test-failures.c:127,1
    - Dst: i_log_type
      Src: /src/dovecot/src/lib/test-failures.c:129,1
    - Dst: i_log_type
      Src: /src/dovecot/src/lib/test-failures.c:130,1
    - Dst: i_log_type
      Src: /src/dovecot/src/lib/test-failures.c:132,1
    - Dst: test_exit
      Src: /src/dovecot/src/lib/test-failures.c:133,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-failures.c:136,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/test-failures.c:140,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-failures.c:141,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-failures.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:145,1
    - Dst: internal_line_match
      Src: /src/dovecot/src/lib/test-failures.c:145,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-failures.c:149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:150,1
    - Dst: internal_line_match
      Src: /src/dovecot/src/lib/test-failures.c:150,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-failures.c:154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:156,1
    - Dst: internal_line_match
      Src: /src/dovecot/src/lib/test-failures.c:156,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-failures.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:158,1
    - Dst: internal_line_match
      Src: /src/dovecot/src/lib/test-failures.c:158,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-failures.c:159,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-failures.c:160,1
    - Dst: internal_line_match
      Src: /src/dovecot/src/lib/test-failures.c:160,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-failures.c:162,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/test-failures.c:163,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-failures.c:165,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 92
    functionDepth: 5
    functionLinenumber: 92
    functionLinenumberEnd: 166
    functionName: test_internal_split
    functionSourceFile: /src/dovecot/src/lib/test-failures.c
    functionUses: 0
    functionsReached:
    - fork
    - i_stream_create_fd
    - test_exit
    - dup2
    - i_close_fd
    - alarm
    - i_fatal
    - i_set_failure_internal
    - i_log_type
    - i_stream_read_next_line
    - test_end
    - test_assert
    - i_stream_unref
    - internal_line_match
    - memset
    - test_begin
    - pipe
    linkageType: ''
    returnType: void
    signature: void test_internal_split(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_get_set_handlers
      Src: /src/dovecot/src/lib/test-failures.c:170,1
    - Dst: test_expected
      Src: /src/dovecot/src/lib/test-failures.c:171,1
    - Dst: test_expected_str
      Src: /src/dovecot/src/lib/test-failures.c:172,1
    - Dst: test_internal_split
      Src: /src/dovecot/src/lib/test-failures.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 168
    functionDepth: 6
    functionLinenumber: 168
    functionLinenumberEnd: 174
    functionName: test_failures
    functionSourceFile: /src/dovecot/src/lib/test-failures.c
    functionUses: 0
    functionsReached:
    - test_expected_str
    - test_expected
    - test_get_set_handlers
    - test_internal_split
    linkageType: ''
    returnType: void
    signature: void test_failures(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: TEST
    functionSourceFile: /src/dovecot/src/lib/test-lib.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 11
    functionName: FATAL
    functionSourceFile: /src/dovecot/src/lib/test-lib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FATAL(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-poll.c:25,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-poll.c:27,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-poll.c:30,1
    - Dst: memset
      Src: /src/dovecot/src/lib/ioloop-poll.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ioloop
    - initial_fd_count
    argTypes:
    - struct ioloop*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 32
    functionName: io_loop_handler_init
    functionSourceFile: /src/dovecot/src/lib/ioloop-poll.c
    functionUses: 0
    functionsReached:
    - memset
    - i_new
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_init(struct ioloop *ioloop, unsigned int initial_fd_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-poll.c:36,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-poll.c:37,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-poll.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: io_loop_handler_deinit
    functionSourceFile: /src/dovecot/src/lib/ioloop-poll.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_deinit(struct ioloop *ioloop)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/ioloop-poll.c:56,1
    - Dst: i_realloc_type
      Src: /src/dovecot/src/lib/ioloop-poll.c:58,1
    - Dst: memset
      Src: /src/dovecot/src/lib/ioloop-poll.c:60,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/ioloop-poll.c:68,1
    - Dst: i_realloc_type
      Src: /src/dovecot/src/lib/ioloop-poll.c:70,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-poll.c:94,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 95
    functionName: io_loop_handle_add
    functionSourceFile: /src/dovecot/src/lib/ioloop-poll.c
    functionUses: 0
    functionsReached:
    - memset
    - i_assert
    - i_realloc_type
    - nearest_power
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_add(struct io_file *io)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-poll.c:104,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/ioloop-poll.c:113,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop-poll.c:115,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-poll.c:117,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-poll.c:121,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/ioloop-poll.c:124,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/ioloop-poll.c:125,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/ioloop-poll.c:128,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/ioloop-poll.c:129,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - io
    - ATTR_UNUSED
    argTypes:
    - struct io_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 142
    functionName: io_loop_handle_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop-poll.c
    functionUses: 0
    functionsReached:
    - i_panic
    - i_error
    - ENUM_NEGATE
    - fcntl
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_remove(struct io_file *io, bool closed ATTR_UNUSED)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_run_get_wait_time
      Src: /src/dovecot/src/lib/ioloop-poll.c:154,1
    - Dst: poll
      Src: /src/dovecot/src/lib/ioloop-poll.c:164,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-poll.c:166,1
    - Dst: io_loop_handle_timeouts
      Src: /src/dovecot/src/lib/ioloop-poll.c:169,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-poll.c:187,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/ioloop-poll.c:198,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/ioloop-poll.c:201,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/ioloop-poll.c:204,1
    - Dst: io_loop_call_io
      Src: /src/dovecot/src/lib/ioloop-poll.c:213,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 53
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 219
    functionName: io_loop_handler_run_internal
    functionSourceFile: /src/dovecot/src/lib/ioloop-poll.c
    functionUses: 0
    functionsReached:
    - i_error
    - ENUM_NEGATE
    - i_fatal
    - io_loop_call_io
    - poll
    - io_loop_run_get_wait_time
    - io_loop_handle_timeouts
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_run_internal(struct ioloop *ioloop)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: lstat
      Src: /src/dovecot/src/lib/safe-mkdir.c:15,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:17,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib/safe-mkdir.c:19,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:21,1
    - Dst: open
      Src: /src/dovecot/src/lib/safe-mkdir.c:30,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:32,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/safe-mkdir.c:34,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:35,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib/safe-mkdir.c:37,1
    - Dst: S_ISLNK
      Src: /src/dovecot/src/lib/safe-mkdir.c:37,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:38,1
    - Dst: fchown
      Src: /src/dovecot/src/lib/safe-mkdir.c:44,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:45,1
    - Dst: fchmod
      Src: /src/dovecot/src/lib/safe-mkdir.c:50,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:51,1
    - Dst: close
      Src: /src/dovecot/src/lib/safe-mkdir.c:55,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:56,1
    - Dst: lstat
      Src: /src/dovecot/src/lib/safe-mkdir.c:59,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:60,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib/safe-mkdir.c:62,1
    - Dst: S_ISLNK
      Src: /src/dovecot/src/lib/safe-mkdir.c:62,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:63,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:66,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/safe-mkdir.c:71,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/safe-mkdir.c:73,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/safe-mkdir.c:73,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/safe-mkdir.c:74,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/safe-mkdir.c:74,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 41
    argCount: 4
    argNames:
    - dir
    - mode
    - uid
    - gid
    argTypes:
    - char*
    - mode_t
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 78
    functionName: safe_mkdir
    functionSourceFile: /src/dovecot/src/lib/safe-mkdir.c
    functionUses: 0
    functionsReached:
    - dec2str
    - fchmod
    - S_ISLNK
    - open
    - i_fatal
    - fstat
    - mkdir
    - S_ISDIR
    - fchown
    - close
    - lstat
    linkageType: ''
    returnType: int
    signature: int safe_mkdir(const char *dir, mode_t mode, uid_t uid, gid_t gid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: creat
      Src: /src/dovecot/src/lib/test-file-create-locked.c:16,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-file-create-locked.c:18,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-create-locked.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: create_file
    functionSourceFile: /src/dovecot/src/lib/test-file-create-locked.c
    functionUses: 30
    functionsReached:
    - i_close_fd
    - i_fatal
    - creat
    linkageType: ''
    returnType: void
    signature: void create_file(const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib/test-file-create-locked.c:27,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-file-create-locked.c:30,1
    - Dst: kill
      Src: /src/dovecot/src/lib/test-file-create-locked.c:31,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-file-create-locked.c:34,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib/test-file-create-locked.c:36,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-file-create-locked.c:38,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - pid
    - path
    argTypes:
    - pid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 40
    functionName: wait_for_file
    functionSourceFile: /src/dovecot/src/lib/test-file-create-locked.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_sleep_msecs
    - i_fatal
    - kill
    - stat
    linkageType: ''
    returnType: bool
    signature: bool wait_for_file(pid_t pid, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-create-locked.c:50,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-create-locked.c:51,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/lib/test-file-create-locked.c:58,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:60,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-file-create-locked.c:61,1
    - Dst: create_file
      Src: /src/dovecot/src/lib/test-file-create-locked.c:63,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib/test-file-create-locked.c:64,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib/test-file-create-locked.c:66,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-create-locked.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 69
    functionName: test_file_create_locked_basic_child
    functionSourceFile: /src/dovecot/src/lib/test-file-create-locked.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - file_unlock
    - i_close_fd
    - create_file
    - test_has_failed
    - test_dir_prepend
    - test_assert
    - file_create_locked
    linkageType: ''
    returnType: int
    signature: int test_file_create_locked_basic_child(void *context ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-create-locked.c:79,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-create-locked.c:80,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-create-locked.c:86,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/test-file-create-locked.c:88,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/test-file-create-locked.c:89,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib/test-file-create-locked.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:94,1
    - Dst: wait_for_file
      Src: /src/dovecot/src/lib/test-file-create-locked.c:94,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-file-create-locked.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:96,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/lib/test-file-create-locked.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:98,1
    - Dst: file_unlock
      Src: /src/dovecot/src/lib/test-file-create-locked.c:100,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib/test-file-create-locked.c:102,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/test-file-create-locked.c:103,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/test-file-create-locked.c:104,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-create-locked.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 106
    functionName: test_file_create_locked_basic
    functionSourceFile: /src/dovecot/src/lib/test-file-create-locked.c
    functionUses: 0
    functionsReached:
    - test_subprocess_fork
    - wait_for_file
    - file_unlock
    - file_create_locked
    - test_subprocess_kill_all
    - test_dir_prepend
    - test_has_failed
    - test_end
    - i_unlink_if_exists
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_file_create_locked_basic(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-file-create-locked.c:122,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-file-create-locked.c:124,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-file-create-locked.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:128,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/lib/test-file-create-locked.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:130,1
    - Dst: file_create_locked
      Src: /src/dovecot/src/lib/test-file-create-locked.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:136,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-file-create-locked.c:137,1
    - Dst: stat
      Src: /src/dovecot/src/lib/test-file-create-locked.c:140,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-file-create-locked.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-file-create-locked.c:142,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-file-create-locked.c:143,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib/test-file-create-locked.c:144,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib/test-file-create-locked.c:146,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-file-create-locked.c:147,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-file-create-locked.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 150
    functionName: test_file_create_locked_mkdir
    functionSourceFile: /src/dovecot/src/lib/test-file-create-locked.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_close_fd
    - test_begin
    - i_fatal
    - test_dir_prepend
    - i_unlink
    - test_end
    - stat
    - unlink_directory
    - test_assert
    - file_lock_free
    - t_strconcat
    - file_create_locked
    linkageType: ''
    returnType: void
    signature: void test_file_create_locked_mkdir(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_file_create_locked_basic
      Src: /src/dovecot/src/lib/test-file-create-locked.c:154,1
    - Dst: test_file_create_locked_mkdir
      Src: /src/dovecot/src/lib/test-file-create-locked.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 5
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: test_file_create_locked
    functionSourceFile: /src/dovecot/src/lib/test-file-create-locked.c
    functionUses: 0
    functionsReached:
    - test_file_create_locked_basic
    - test_file_create_locked_mkdir
    linkageType: ''
    returnType: void
    signature: void test_file_create_locked(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-callback.c:20,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/istream-callback.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 23
    functionName: i_stream_callback_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-callback.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - container_of
    linkageType: ''
    returnType: void
    signature: void i_stream_callback_destroy(struct iostream_private *stream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-callback.c:28,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/istream-callback.c:38,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-callback.c:43,1
    - Dst: struct callback_istream*::callback
      Src: /src/dovecot/src/lib/istream-callback.c:47,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-callback.c:58,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-callback.c:61,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 65
    functionName: i_stream_callback_read
    functionSourceFile: /src/dovecot/src/lib/istream-callback.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - struct callback_istream*::callback
    - buffer_delete
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_callback_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-callback.c:74,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-callback.c:76,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/istream-callback.c:79,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-callback.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - callback
    - context
    argTypes:
    - istream_callback_read_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 87
    functionName: i_stream_create_callback
    functionSourceFile: /src/dovecot/src/lib/istream-callback.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - buffer_create_dynamic
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_callback(istream_callback_read_t *callback, void *context)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-callback.c:93,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/istream-callback.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - data
    - size
    argTypes:
    - struct istream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: i_stream_callback_append
    functionSourceFile: /src/dovecot/src/lib/istream-callback.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - container_of
    linkageType: ''
    returnType: void
    signature: "void i_stream_callback_append(struct istream *input,\n\t\t\t      const
      void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_callback_append
      Src: /src/dovecot/src/lib/istream-callback.c:101,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/istream-callback.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - input
    - str
    argTypes:
    - struct istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: i_stream_callback_append_str
    functionSourceFile: /src/dovecot/src/lib/istream-callback.c
    functionUses: 0
    functionsReached:
    - i_stream_callback_append
    - strlen
    linkageType: ''
    returnType: void
    signature: void i_stream_callback_append_str(struct istream *input, const char
      *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-callback.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: i_stream_callback_get_buffer
    functionSourceFile: /src/dovecot/src/lib/istream-callback.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: buffer_t
    signature: buffer_t *i_stream_callback_get_buffer(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-callback.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - input
    - stream_errno
    - error
    argTypes:
    - struct istream*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 118
    functionName: i_stream_callback_set_error
    functionSourceFile: /src/dovecot/src/lib/istream-callback.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    linkageType: ''
    returnType: void
    signature: "void i_stream_callback_set_error(struct istream *input, int stream_errno,\n\t\t\t\t
      const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-multiplex.c:38,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/test-multiplex.c:39,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-multiplex.c:40,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-multiplex.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - channel
    argTypes:
    - struct test_channel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 42
    functionName: test_multiplex_channel_write
    functionSourceFile: /src/dovecot/src/lib/test-multiplex.c
    functionUses: 0
    functionsReached:
    - random_fill
    - o_stream_nsend
    - i_rand_limit
    linkageType: ''
    returnType: void
    signature: void test_multiplex_channel_write(struct test_channel *channel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-multiplex.c:48,1
    - Dst: test_multiplex_channel_write
      Src: /src/dovecot/src/lib/test-multiplex.c:50,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-multiplex.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 3
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: test_multiplex_stream_write
    functionSourceFile: /src/dovecot/src/lib/test-multiplex.c
    functionUses: 0
    functionsReached:
    - test_multiplex_channel_write
    - io_loop_stop
    - i_rand_limit
    linkageType: ''
    returnType: void
    signature: void test_multiplex_stream_write(struct ostream *channel ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-multiplex.c:58,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-multiplex.c:59,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-multiplex.c:60,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-multiplex.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - channel
    argTypes:
    - struct test_channel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: test_istream_multiplex_stream_read
    functionSourceFile: /src/dovecot/src/lib/test-multiplex.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_stream_read
    - i_stream_get_data
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex_stream_read(struct test_channel *channel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-multiplex.c:70,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-multiplex.c:71,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-multiplex.c:72,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-multiplex.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - channel
    argTypes:
    - struct test_channel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 4
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: test_istream_read_alt
    functionSourceFile: /src/dovecot/src/lib/test-multiplex.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_stream_read
    - i_stream_get_data
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void test_istream_read_alt(struct test_channel *channel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/test-multiplex.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-multiplex.c:85,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-multiplex.c:85,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-multiplex.c:86,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-multiplex.c:87,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-multiplex.c:88,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-multiplex.c:89,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/test-multiplex.c:90,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-multiplex.c:92,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-multiplex.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - channel
    - is
    - os
    argTypes:
    - struct test_channel*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 94
    functionName: setup_channel
    functionSourceFile: /src/dovecot/src/lib/test-multiplex.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - i_stream_create_fd
    - fd_set_nonblock
    - io_add_istream
    - buffer_create_dynamic
    - test_assert
    - pipe
    linkageType: ''
    returnType: void
    signature: "void setup_channel(struct test_channel *channel,\n\t\t\t  struct istream
      *is, struct ostream *os)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_read_alt
      Src: /src/dovecot/src/lib/test-multiplex.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-multiplex.c:99,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-multiplex.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-multiplex.c:102,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-multiplex.c:104,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-multiplex.c:105,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-multiplex.c:107,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-multiplex.c:108,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-multiplex.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-multiplex.c:110,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-multiplex.c:110,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-multiplex.c:111,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-multiplex.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-multiplex.c:113,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-multiplex.c:113,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-multiplex.c:114,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-multiplex.c:115,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-multiplex.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - channel
    argTypes:
    - struct test_channel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 96
    functionDepth: 5
    functionLinenumber: 96
    functionLinenumberEnd: 117
    functionName: teardown_channel
    functionSourceFile: /src/dovecot/src/lib/test-multiplex.c
    functionUses: 0
    functionsReached:
    - io_remove
    - test_istream_read_alt
    - o_stream_unref
    - i_close_fd
    - o_stream_finish
    - test_assert
    - memcmp
    - buffer_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void teardown_channel(struct test_channel *channel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-multiplex.c:120,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-multiplex.c:122,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/test-multiplex.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-multiplex.c:126,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-multiplex.c:126,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-multiplex.c:127,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-multiplex.c:128,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-multiplex.c:129,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-multiplex.c:130,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-multiplex.c:132,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-multiplex.c:133,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-multiplex.c:134,1
    - Dst: o_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-multiplex.c:136,1
    - Dst: o_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-multiplex.c:138,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-multiplex.c:139,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-multiplex.c:141,1
    - Dst: setup_channel
      Src: /src/dovecot/src/lib/test-multiplex.c:143,1
    - Dst: setup_channel
      Src: /src/dovecot/src/lib/test-multiplex.c:144,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-multiplex.c:149,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-multiplex.c:151,1
    - Dst: teardown_channel
      Src: /src/dovecot/src/lib/test-multiplex.c:153,1
    - Dst: teardown_channel
      Src: /src/dovecot/src/lib/test-multiplex.c:154,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-multiplex.c:156,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-multiplex.c:158,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-multiplex.c:159,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-multiplex.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 119
    functionDepth: 6
    functionLinenumber: 119
    functionLinenumberEnd: 162
    functionName: test_multiplex_stream
    functionSourceFile: /src/dovecot/src/lib/test-multiplex.c
    functionUses: 0
    functionsReached:
    - io_remove
    - o_stream_unref
    - io_loop_destroy
    - test_assert
    - io_loop_run
    - i_stream_multiplex_add_channel
    - o_stream_create_fd
    - i_close_fd
    - test_end
    - teardown_channel
    - pipe
    - io_loop_set_current
    - o_stream_create_multiplex
    - i_stream_create_multiplex
    - i_stream_create_fd
    - fd_set_nonblock
    - io_add
    - setup_channel
    - o_stream_multiplex_add_channel
    - io_loop_create
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_multiplex_stream(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random_init
      Src: /src/dovecot/src/lib/test-multiplex.c:165,1
    - Dst: test_multiplex_stream
      Src: /src/dovecot/src/lib/test-multiplex.c:166,1
    - Dst: random_deinit
      Src: /src/dovecot/src/lib/test-multiplex.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 7
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: test_multiplex
    functionSourceFile: /src/dovecot/src/lib/test-multiplex.c
    functionUses: 0
    functionsReached:
    - random_init
    - test_multiplex_stream
    - random_deinit
    linkageType: ''
    returnType: void
    signature: void test_multiplex(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/memarea.c:27,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/memarea.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - data
    - size
    - callback
    - context
    argTypes:
    - void*
    - size_t
    - memarea_free_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 36
    functionName: memarea_init
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 2
    functionsReached:
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct memarea
    signature: "struct memarea *\nmemarea_init(const void *data, size_t size,\n\t
      \    memarea_free_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/memarea.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: memarea_init_empty
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct memarea
    signature: struct memarea *memarea_init_empty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/memarea.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct memarea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: memarea_ref
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void memarea_ref(struct memarea *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/memarea.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/memarea.c:60,1
    - Dst: struct memarea*::callback
      Src: /src/dovecot/src/lib/memarea.c:61,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/memarea.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _area
    argTypes:
    - struct memarea**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 63
    functionName: memarea_unref
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 5
    functionsReached:
    - struct memarea*::callback
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void memarea_unref(struct memarea **_area)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/memarea.c:70,1
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib/memarea.c:70,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/memarea.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _area
    argTypes:
    - struct memarea**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: memarea_free_without_callback
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_free
    - memarea_get_refcount
    linkageType: ''
    returnType: void
    signature: void memarea_free_without_callback(struct memarea **_area)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/memarea.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct memarea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: memarea_get_refcount
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 5
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int memarea_get_refcount(struct memarea *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - area
    - size_r
    argTypes:
    - struct memarea*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: memarea_get
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *memarea_get(struct memarea *area, size_t *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct memarea*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: memarea_get_size
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t memarea_get_size(struct memarea *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: memarea_free_callback_noop
    functionSourceFile: /src/dovecot/src/lib/memarea.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void memarea_free_callback_noop(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib/hook-build.c:34,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/hook-build.c:36,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib/hook-build.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct hook_build_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 38
    functionName: hook_build_append
    functionSourceFile: /src/dovecot/src/lib/hook-build.c
    functionUses: 0
    functionsReached:
    - p_new
    - DLLIST2_APPEND
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void hook_build_append(struct hook_build_context *ctx, void (**vfuncs)())
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hook-build.c:45,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/hook-build.c:47,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/hook-build.c:48,1
    - Dst: hook_build_append
      Src: /src/dovecot/src/lib/hook-build.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 54
    functionName: hook_build_init
    functionSourceFile: /src/dovecot/src/lib/hook-build.c
    functionUses: 7
    functionsReached:
    - pool_alloconly_create
    - i_assert
    - p_new
    - hook_build_append
    linkageType: ''
    returnType: struct hook_build_context
    signature: struct hook_build_context *hook_build_init(void (**vfuncs)(), size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hook-build.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - stack
    argTypes:
    - struct hook_build_context*
    - struct hook_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 68
    functionName: hook_update_mask
    functionSourceFile: /src/dovecot/src/lib/hook-build.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void hook_update_mask(struct hook_build_context *ctx, struct hook_stack
      *stack,\n\t\t void (**vlast)())"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hook-build.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - stack
    argTypes:
    - struct hook_build_context*
    - struct hook_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 83
    functionName: hook_copy_stack
    functionSourceFile: /src/dovecot/src/lib/hook-build.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void hook_copy_stack(struct hook_build_context *ctx, struct hook_stack
      *stack)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hook_update_mask
      Src: /src/dovecot/src/lib/hook-build.c:105,1
    - Dst: hook_copy_stack
      Src: /src/dovecot/src/lib/hook-build.c:110,1
    - Dst: hook_build_append
      Src: /src/dovecot/src/lib/hook-build.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - _vlast
    argTypes:
    - struct hook_build_context*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 114
    functionName: hook_build_update
    functionSourceFile: /src/dovecot/src/lib/hook-build.c
    functionUses: 7
    functionsReached:
    - hook_update_mask
    - hook_build_append
    - hook_copy_stack
    linkageType: ''
    returnType: void
    signature: void hook_build_update(struct hook_build_context *ctx, void *_vlast)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/hook-build.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct hook_build_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: hook_build_deinit
    functionSourceFile: /src/dovecot/src/lib/hook-build.c
    functionUses: 1
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void hook_build_deinit(struct hook_build_context **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-event.c:8,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-lib-event.c:9,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-lib-event.c:13,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:14,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:14,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-lib-event.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:16,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:16,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-lib-event.c:18,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:20,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:21,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-lib-event.c:23,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:25,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-lib-event.c:28,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:30,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:32,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib/test-lib-event.c:32,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib/test-lib-event.c:35,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:37,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-lib-event.c:41,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/test-lib-event.c:42,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-lib-event.c:43,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:45,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib/test-lib-event.c:46,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-lib-event.c:49,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:50,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:51,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-lib-event.c:54,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-lib-event.c:55,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-event.c:56,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:57,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib/test-lib-event.c:57,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-lib-event.c:59,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-event.c:60,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 6
    functionDepth: 3
    functionLinenumber: 6
    functionLinenumberEnd: 61
    functionName: test_event_fields
    functionSourceFile: /src/dovecot/src/lib/test-lib-event.c
    functionUses: 0
    functionsReached:
    - strcmp
    - event_create
    - net_addr2ip
    - event_unref
    - i_unreached
    - net_ip_compare
    - event_add_ip
    - event_strlist_append
    - test_assert_strcmp
    - test_end
    - event_add_int
    - array_idx_elem
    - test_assert
    - event_find_field_recursive_str
    - event_add_str
    - event_find_field_nonrecursive
    - test_begin
    - event_add_timeval
    linkageType: ''
    returnType: void
    signature: void test_event_fields(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-event.c:65,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-lib-event.c:66,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-lib-event.c:67,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-lib-event.c:68,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-lib-event.c:69,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-lib-event.c:70,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-lib-event.c:71,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:73,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib/test-lib-event.c:73,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:74,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib/test-lib-event.c:74,1
    - Dst: event_strlist_replace
      Src: /src/dovecot/src/lib/test-lib-event.c:77,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-lib-event.c:77,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:78,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib/test-lib-event.c:78,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-lib-event.c:80,1
    - Dst: event_strlist_copy_recursive
      Src: /src/dovecot/src/lib/test-lib-event.c:81,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:82,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib/test-lib-event.c:82,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-lib-event.c:83,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-lib-event.c:85,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-lib-event.c:86,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-event.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 88
    functionName: test_event_strlist
    functionSourceFile: /src/dovecot/src/lib/test-lib-event.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_strlist_append
    - test_assert_strcmp
    - test_end
    - event_strlist_replace
    - event_find_field_recursive_str
    - event_strlist_copy_recursive
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_strlist(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-event.c:92,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:93,1
    - Dst: event_reason_code
      Src: /src/dovecot/src/lib/test-lib-event.c:93,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:94,1
    - Dst: event_reason_code
      Src: /src/dovecot/src/lib/test-lib-event.c:94,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:95,1
    - Dst: event_reason_code_prefix
      Src: /src/dovecot/src/lib/test-lib-event.c:95,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-lib-event.c:96,1
    - Dst: event_reason_code_prefix
      Src: /src/dovecot/src/lib/test-lib-event.c:96,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-event.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 98
    functionName: test_lib_event_reason_code
    functionSourceFile: /src/dovecot/src/lib/test-lib-event.c
    functionUses: 0
    functionsReached:
    - event_reason_code
    - event_reason_code_prefix
    - test_assert_strcmp
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lib_event_reason_code(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_event_fields
      Src: /src/dovecot/src/lib/test-lib-event.c:102,1
    - Dst: test_event_strlist
      Src: /src/dovecot/src/lib/test-lib-event.c:103,1
    - Dst: test_lib_event_reason_code
      Src: /src/dovecot/src/lib/test-lib-event.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 4
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: test_lib_event
    functionSourceFile: /src/dovecot/src/lib/test-lib-event.c
    functionUses: 0
    functionsReached:
    - test_event_fields
    - test_lib_event_reason_code
    - test_event_strlist
    linkageType: ''
    returnType: void
    signature: void test_lib_event(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-event.c:111,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-lib-event.c:113,1
    - Dst: event_reason_code
      Src: /src/dovecot/src/lib/test-lib-event.c:114,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-lib-event.c:118,1
    - Dst: event_reason_code
      Src: /src/dovecot/src/lib/test-lib-event.c:119,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-lib-event.c:123,1
    - Dst: event_reason_code
      Src: /src/dovecot/src/lib/test-lib-event.c:124,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-lib-event.c:128,1
    - Dst: event_reason_code
      Src: /src/dovecot/src/lib/test-lib-event.c:129,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-lib-event.c:133,1
    - Dst: event_reason_code_prefix
      Src: /src/dovecot/src/lib/test-lib-event.c:134,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-lib-event.c:138,1
    - Dst: event_reason_code_prefix
      Src: /src/dovecot/src/lib/test-lib-event.c:139,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-lib-event.c:143,1
    - Dst: event_reason_code_prefix
      Src: /src/dovecot/src/lib/test-lib-event.c:144,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-lib-event.c:148,1
    - Dst: event_reason_code
      Src: /src/dovecot/src/lib/test-lib-event.c:149,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-event.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 39
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 155
    functionName: fatal_lib_event
    functionSourceFile: /src/dovecot/src/lib/test-lib-event.c
    functionUses: 0
    functionsReached:
    - event_reason_code
    - event_reason_code_prefix
    - test_end
    - test_expect_fatal_string
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_lib_event(unsigned int stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hash-method.c:20,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-hash-method.c:20,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib/test-hash-method.c:22,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib/test-hash-method.c:23,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/test-hash-method.c:24,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/test-hash-method.c:28,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib/test-hash-method.c:29,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-hash-method.c:31,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-hash-method.c:32,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hash-method.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - method
    argTypes:
    - struct hash_method*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 34
    functionName: test_hash_method_one
    functionSourceFile: /src/dovecot/src/lib/test-hash-method.c
    functionUses: 0
    functionsReached:
    - struct hash_method*::init
    - i_malloc
    - struct hash_method*::loop
    - t_strdup_printf
    - struct hash_method*::result
    - test_end
    - i_free
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hash_method_one(const struct hash_method *method)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mmap_get_page_size
      Src: /src/dovecot/src/lib/test-hash-method.c:40,1
    - Dst: mmap
      Src: /src/dovecot/src/lib/test-hash-method.c:42,1
    - Dst: mprotect
      Src: /src/dovecot/src/lib/test-hash-method.c:44,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib/test-hash-method.c:46,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-hash-method.c:48,1
    - Dst: test_hash_method_one
      Src: /src/dovecot/src/lib/test-hash-method.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 36
    functionDepth: 4
    functionLinenumber: 36
    functionLinenumberEnd: 52
    functionName: test_hash_method_boundary
    functionSourceFile: /src/dovecot/src/lib/test-hash-method.c
    functionUses: 0
    functionsReached:
    - mmap
    - i_malloc
    - test_hash_method_one
    - mprotect
    - mmap_get_page_size
    - memset
    linkageType: ''
    returnType: void
    signature: void test_hash_method_boundary(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hash-method.c:430,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-hash-method.c:433,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hash-method.c:435,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hash-method.c:437,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-hash-method.c:437,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-hash-method.c:441,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-hash-method.c:444,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/test-hash-method.c:445,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/test-hash-method.c:447,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib/test-hash-method.c:449,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-hash-method.c:450,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-hash-method.c:450,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hash-method.c:454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 54
    functionDepth: 3
    functionLinenumber: 54
    functionLinenumberEnd: 455
    functionName: test_hash_methods_fips
    functionSourceFile: /src/dovecot/src/lib/test-hash-method.c
    functionUses: 0
    functionsReached:
    - strcmp
    - struct hash_method*::init
    - test_assert_idx
    - struct hash_method*::loop
    - t_strdup_printf
    - test_end
    - struct hash_method*::result
    - memcmp
    - hash_method_lookup
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hash_methods_fips()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hash-method.c:470,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hash-method.c:474,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-hash-method.c:476,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/test-hash-method.c:480,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/test-hash-method.c:482,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib/test-hash-method.c:483,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-hash-method.c:484,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib/test-hash-method.c:484,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hash-method.c:487,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 457
    functionDepth: 6
    functionLinenumber: 457
    functionLinenumberEnd: 488
    functionName: test_hash_methods_large
    functionSourceFile: /src/dovecot/src/lib/test-hash-method.c
    functionUses: 0
    functionsReached:
    - struct hash_method*::init
    - struct hash_method*::loop
    - test_begin
    - struct hash_method*::result
    - binary_to_hex
    - test_end
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - hash_method_lookup
    linkageType: ''
    returnType: void
    signature: void test_hash_methods_large(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_hash_method_boundary
      Src: /src/dovecot/src/lib/test-hash-method.c:492,1
    - Dst: test_hash_methods_fips
      Src: /src/dovecot/src/lib/test-hash-method.c:493,1
    - Dst: test_hash_methods_large
      Src: /src/dovecot/src/lib/test-hash-method.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 490
    functionDepth: 7
    functionLinenumber: 490
    functionLinenumberEnd: 496
    functionName: test_hash_method
    functionSourceFile: /src/dovecot/src/lib/test-hash-method.c
    functionUses: 0
    functionsReached:
    - test_hash_methods_fips
    - test_hash_method_boundary
    - test_hash_methods_large
    linkageType: ''
    returnType: void
    signature: void test_hash_method(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:23,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-data-stack.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:26,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-data-stack.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:30,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-data-stack.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:34,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/test-data-stack.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:38,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-data-stack.c:40,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 5
    argNames:
    - event
    - type
    - ctx
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event*
    - enum event_callback_type
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 42
    functionName: test_ds_grow_event_callback
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - strstr
    - event_find_field_nonrecursive
    - test_assert
    linkageType: ''
    returnType: bool
    signature: "bool test_ds_grow_event_callback(struct event *event,\n\t\t\t    enum
      event_callback_type type,\n\t\t\t    struct failure_context *ctx,\n\t\t\t    const
      char *fmt ATTR_UNUSED,\n\t\t\t    va_list args ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:48,1
    - Dst: event_register_callback
      Src: /src/dovecot/src/lib/test-data-stack.c:49,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:51,1
    - Dst: event_get_global_debug_log_filter
      Src: /src/dovecot/src/lib/test-data-stack.c:51,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-data-stack.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:53,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-data-stack.c:53,1
    - Dst: event_set_global_debug_log_filter
      Src: /src/dovecot/src/lib/test-data-stack.c:54,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-data-stack.c:55,1
    - Dst: data_stack_free_unused
      Src: /src/dovecot/src/lib/test-data-stack.c:59,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-data-stack.c:61,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:62,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-data-stack.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 65
    functionName: test_ds_grow_event
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - event_get_global_debug_log_filter
    - t_malloc0
    - event_register_callback
    - event_set_global_debug_log_filter
    - event_filter_create
    - event_filter_parse
    - data_stack_free_unused
    - test_assert
    - i_assert
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ds_grow_event(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:73,1
    - Dst: data_stack_get_used_size
      Src: /src/dovecot/src/lib/test-data-stack.c:74,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-data-stack.c:75,1
    - Dst: data_stack_get_used_size
      Src: /src/dovecot/src/lib/test-data-stack.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:77,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-data-stack.c:80,1
    - Dst: data_stack_get_used_size
      Src: /src/dovecot/src/lib/test-data-stack.c:81,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-data-stack.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 71
    functionDepth: 5
    functionLinenumber: 71
    functionLinenumberEnd: 84
    functionName: test_ds_get_used_size
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - t_malloc0
    - data_stack_get_used_size
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_ds_get_used_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:93,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:95,1
    - Dst: if
      Src: /src/dovecot/src/lib/test-data-stack.c:98,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:99,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:100,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:101,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:102,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:102,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:103,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:104,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:104,1
    - Dst: if
      Src: /src/dovecot/src/lib/test-data-stack.c:107,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:108,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:109,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:110,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:111,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:112,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 91
    functionDepth: 5
    functionLinenumber: 91
    functionLinenumberEnd: 113
    functionName: test_ds_get_bytes_available
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - t_get_bytes_available
    - if
    - t_malloc_no0
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ds_get_bytes_available(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib/test-data-stack.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 125
    functionName: test_ds_growing_debug
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - t_strdup_vprintf
    linkageType: ''
    returnType: void
    signature: "void test_ds_growing_debug(const struct failure_context *ctx ATTR_UNUSED,\n\t\t
      \     const char *format, va_list args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:133,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-data-stack.c:135,1
    - Dst: event_set_global_debug_log_filter
      Src: /src/dovecot/src/lib/test-data-stack.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:137,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-data-stack.c:137,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-data-stack.c:138,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/lib/test-data-stack.c:140,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/test-data-stack.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:145,1
    - Dst: t_buffer_reget
      Src: /src/dovecot/src/lib/test-data-stack.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:152,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/lib/test-data-stack.c:154,1
    - Dst: event_unset_global_debug_log_filter
      Src: /src/dovecot/src/lib/test-data-stack.c:155,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-data-stack.c:156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 127
    functionDepth: 6
    functionLinenumber: 127
    functionLinenumberEnd: 157
    functionName: test_ds_grow_in_event
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - event_unset_global_debug_log_filter
    - t_buffer_get
    - i_set_debug_handler
    - event_set_global_debug_log_filter
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_filter_unref
    - test_begin
    - t_buffer_reget
    linkageType: ''
    returnType: void
    signature: void test_ds_grow_in_event(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:161,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:165,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:167,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:168,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/test-data-stack.c:171,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/test-data-stack.c:175,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:176,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:178,1
    - Dst: t_buffer_alloc_last_full
      Src: /src/dovecot/src/lib/test-data-stack.c:181,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:182,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:182,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/test-data-stack.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 159
    functionDepth: 5
    functionLinenumber: 159
    functionLinenumberEnd: 183
    functionName: test_ds_buffers
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - t_buffer_get
    - test_assert_idx
    - t_get_bytes_available
    - t_buffer_alloc_last_full
    - MEM_ALIGN
    - t_malloc_no0
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ds_buffers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:222,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:226,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:228,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:229,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:232,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:236,1
    - Dst: t_try_realloc
      Src: /src/dovecot/src/lib/test-data-stack.c:236,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:238,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:240,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:240,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/test-data-stack.c:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 220
    functionDepth: 5
    functionLinenumber: 220
    functionLinenumberEnd: 241
    functionName: test_ds_realloc
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - t_get_bytes_available
    - t_try_realloc
    - MEM_ALIGN
    - t_malloc_no0
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ds_realloc()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_push_named
      Src: /src/dovecot/src/lib/test-data-stack.c:251,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/test-data-stack.c:252,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:253,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/test-data-stack.c:254,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:257,1
    - Dst: t_try_realloc
      Src: /src/dovecot/src/lib/test-data-stack.c:258,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:259,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:262,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-data-stack.c:265,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:269,1
    - Dst: test_ds_recurse
      Src: /src/dovecot/src/lib/test-data-stack.c:273,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:277,1
    - Dst: strspn
      Src: /src/dovecot/src/lib/test-data-stack.c:277,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:278,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:280,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib/test-data-stack.c:280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - depth
    - number
    - size
    argTypes:
    - int
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 245
    functionDepth: 5
    functionLinenumber: 245
    functionLinenumberEnd: 281
    functionName: test_ds_recurse
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 1
    functionsReached:
    - t_buffer_get
    - test_assert_idx
    - strspn
    - t_pop
    - t_try_realloc
    - t_malloc_no0
    - t_buffer_alloc
    - t_push_named
    - memset
    - i_assert
    - test_ds_recurse
    linkageType: ''
    returnType: void
    signature: void test_ds_recurse(int depth, int number, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:288,1
    - Dst: data_stack_get_used_size
      Src: /src/dovecot/src/lib/test-data-stack.c:289,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-data-stack.c:291,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-data-stack.c:292,1
    - Dst: test_ds_recurse
      Src: /src/dovecot/src/lib/test-data-stack.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 283
    functionDepth: 6
    functionLinenumber: 283
    functionLinenumberEnd: 294
    functionName: test_ds_recursive
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - test_ds_recurse
    - data_stack_get_used_size
    - i_rand_limit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ds_recursive(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-data-stack.c:302,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:304,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-data-stack.c:305,1
    - Dst: t_push
      Src: /src/dovecot/src/lib/test-data-stack.c:306,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:309,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:310,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-data-stack.c:312,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-data-stack.c:314,1
    - Dst: data_stack_frame_contains
      Src: /src/dovecot/src/lib/test-data-stack.c:314,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-data-stack.c:319,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-data-stack.c:320,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-data-stack.c:322,1
    - Dst: t_pop_pass_str
      Src: /src/dovecot/src/lib/test-data-stack.c:322,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-data-stack.c:324,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/test-data-stack.c:329,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/test-data-stack.c:330,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 299
    functionDepth: 6
    functionLinenumber: 299
    functionLinenumberEnd: 331
    functionName: test_ds_pass_str
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - t_pop_pass_str
    - test_assert_idx
    - t_strdup_printf
    - data_stack_frame_contains
    - test_assert_strcmp
    - t_malloc_no0
    - test_assert
    - t_strdup
    - N_ELEMENTS
    - test_begin
    - t_push
    linkageType: ''
    returnType: void
    signature: void test_ds_pass_str(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-data-stack.c:357,1
    - Dst: data_stack_free_unused
      Src: /src/dovecot/src/lib/test-data-stack.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 363
    functionName: test_data_stack
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - data_stack_free_unused
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_data_stack(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: t_pop
      Src: /src/dovecot/src/lib/test-data-stack.c:386,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-data-stack.c:390,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:396,1
    - Dst: t_push_named
      Src: /src/dovecot/src/lib/test-data-stack.c:397,1
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/test-data-stack.c:398,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:399,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:400,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-data-stack.c:414,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:415,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:420,1
    - Dst: t_push_named
      Src: /src/dovecot/src/lib/test-data-stack.c:421,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-data-stack.c:422,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-data-stack.c:427,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib/test-data-stack.c:428,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-data-stack.c:434,1
    - Dst: t_push_named
      Src: /src/dovecot/src/lib/test-data-stack.c:435,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/test-data-stack.c:436,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-data-stack.c:441,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib/test-data-stack.c:442,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 366
    functionDepth: 5
    functionLinenumber: 366
    functionLinenumberEnd: 454
    functionName: fatal_data_stack
    functionSourceFile: /src/dovecot/src/lib/test-data-stack.c
    functionUses: 0
    functionsReached:
    - t_buffer_get
    - t_get_bytes_available
    - t_pop
    - test_end
    - test_expect_fatal_string
    - t_malloc_no0
    - t_push_named
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_data_stack(unsigned int stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: cpu_limit_handler
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cpu_limit_handler(const siginfo_t *si ATTR_UNUSED, void *context
      ATTR_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeval_add
      Src: /src/dovecot/src/lib/cpu-limit.c:42,1
    - Dst: timeval_add
      Src: /src/dovecot/src/lib/cpu-limit.c:44,1
    - Dst: timeval_add
      Src: /src/dovecot/src/lib/cpu-limit.c:48,1
    - Dst: timeval_add
      Src: /src/dovecot/src/lib/cpu-limit.c:50,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/cpu-limit.c:51,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/cpu-limit.c:52,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/cpu-limit.c:53,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - climit
    - type
    - rusage
    argTypes:
    - struct cpu_limit*
    - enum cpu_limit_type
    - struct rusage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: cpu_limit_get_usage_msecs_with
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.c
    functionUses: 0
    functionsReached:
    - timeval_add
    - i_assert
    - timeval_diff_msecs
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int cpu_limit_get_usage_msecs_with(struct cpu_limit *climit,\n\t\t\t
      \      enum cpu_limit_type type,\n\t\t\t       const struct rusage *rusage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/dovecot/src/lib/cpu-limit.c:64,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/cpu-limit.c:65,1
    - Dst: cpu_limit_get_usage_msecs_with
      Src: /src/dovecot/src/lib/cpu-limit.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - climit
    - type
    argTypes:
    - struct cpu_limit*
    - enum cpu_limit_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 68
    functionName: cpu_limit_get_usage_msecs
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.c
    functionUses: 0
    functionsReached:
    - getrusage
    - cpu_limit_get_usage_msecs_with
    - i_fatal
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int cpu_limit_get_usage_msecs(struct cpu_limit *climit, enum
      cpu_limit_type type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cpu_limit_update_recursive
      Src: /src/dovecot/src/lib/cpu-limit.c:77,1
    - Dst: cpu_limit_get_usage_msecs_with
      Src: /src/dovecot/src/lib/cpu-limit.c:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - climit
    - rusage
    - max_wait_secs
    argTypes:
    - struct cpu_limit*
    - struct rusage*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 92
    functionName: cpu_limit_update_recursive
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.c
    functionUses: 1
    functionsReached:
    - cpu_limit_get_usage_msecs_with
    - cpu_limit_update_recursive
    linkageType: ''
    returnType: bool
    signature: "bool cpu_limit_update_recursive(struct cpu_limit *climit,\n\t\t\t
      \  const struct rusage *rusage,\n\t\t\t   unsigned int *max_wait_secs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/dovecot/src/lib/cpu-limit.c:100,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/cpu-limit.c:101,1
    - Dst: cpu_limit_update_recursive
      Src: /src/dovecot/src/lib/cpu-limit.c:103,1
    - Dst: timeval_add
      Src: /src/dovecot/src/lib/cpu-limit.c:110,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/cpu-limit.c:112,1
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/cpu-limit.c:120,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/cpu-limit.c:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 123
    functionName: cpu_limit_update_rlimit
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.c
    functionUses: 0
    functionsReached:
    - i_zero
    - cpu_limit_update_recursive
    - getrusage
    - i_fatal
    - timeval_add
    - setrlimit
    linkageType: ''
    returnType: void
    signature: void cpu_limit_update_rlimit(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/cpu-limit.c:131,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/cpu-limit.c:132,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/cpu-limit.c:134,1
    - Dst: getrlimit
      Src: /src/dovecot/src/lib/cpu-limit.c:141,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/cpu-limit.c:142,1
    - Dst: getrusage
      Src: /src/dovecot/src/lib/cpu-limit.c:146,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/cpu-limit.c:147,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib/cpu-limit.c:151,1
    - Dst: cpu_limit_update_rlimit
      Src: /src/dovecot/src/lib/cpu-limit.c:156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - cpu_limit_secs
    - type
    argTypes:
    - unsigned int
    - enum cpu_limit_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 158
    functionName: cpu_limit_init
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.c
    functionUses: 3
    functionsReached:
    - cpu_limit_update_rlimit
    - getrusage
    - i_fatal
    - getrlimit
    - lib_signals_set_handler
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct cpu_limit
    signature: 'struct cpu_limit *

      cpu_limit_init(unsigned int cpu_limit_secs, enum cpu_limit_type type)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/cpu-limit.c:168,1
    - Dst: cpu_limit_update_rlimit
      Src: /src/dovecot/src/lib/cpu-limit.c:171,1
    - Dst: lib_signals_unset_handler
      Src: /src/dovecot/src/lib/cpu-limit.c:173,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/cpu-limit.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _climit
    argTypes:
    - struct cpu_limit**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 175
    functionName: cpu_limit_deinit
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.c
    functionUses: 3
    functionsReached:
    - lib_signals_unset_handler
    - i_assert
    - cpu_limit_update_rlimit
    - i_free
    linkageType: ''
    returnType: void
    signature: void cpu_limit_deinit(struct cpu_limit **_climit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/cpu-limit.c:183,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/cpu-limit.c:185,1
    - Dst: cpu_limit_update_rlimit
      Src: /src/dovecot/src/lib/cpu-limit.c:198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - climit
    argTypes:
    - struct cpu_limit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 201
    functionName: cpu_limit_exceeded
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - timeval_diff_msecs
    - cpu_limit_update_rlimit
    linkageType: ''
    returnType: bool
    signature: bool cpu_limit_exceeded(struct cpu_limit *climit)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: __has_extension
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __has_extension(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: CMP_DEV_T
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMP_DEV_T(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: ST_ATIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_ATIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: ST_MTIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MTIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: ST_CTIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_CTIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: ST_ATIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_ATIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: ST_MTIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MTIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: ST_CTIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_CTIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: ST_ATIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_ATIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: ST_MTIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MTIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: ST_CTIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_CTIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: ST_ATIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_ATIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: ST_MTIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MTIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: ST_CTIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_CTIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: ST_ATIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_ATIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: ST_MTIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MTIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: ST_CTIME_NSEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_CTIME_NSEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: ST_ATIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_ATIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: ST_MTIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_MTIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: ST_CTIME_SEC
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_CTIME_SEC(st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ns1
    - ','
    - ns2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: ST_NTIMES_EQUAL
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_NTIMES_EQUAL(ns1, ns2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ns1
    - ','
    - ns2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: ST_NTIMES_EQUAL
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ST_NTIMES_EQUAL(ns1, ns2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - st1
    - ','
    - st2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: CMP_ST_MTIME
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMP_ST_MTIME(st1, st2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - st1
    - ','
    - st2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: CMP_ST_CTIME
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMP_ST_CTIME(st1, st2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: i_toupper
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_toupper(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: i_tolower
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_tolower(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: i_isalnum
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isalnum(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: i_isalpha
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isalpha(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: i_isascii
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isascii(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: i_isblank
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isblank(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: i_iscntrl
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_iscntrl(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: i_isdigit
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isdigit(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: i_isgraph
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isgraph(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    functionName: i_islower
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_islower(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: i_isprint
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isprint(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: i_ispunct
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_ispunct(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: i_isspace
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isspace(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: i_isupper
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isupper(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: i_isxdigit
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_isxdigit(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 126
    functionName: ENOSPACE
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENOSPACE(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: ENOQUOTA
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENOQUOTA(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: ENOSPACE
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENOSPACE(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: ENOQUOTA
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENOQUOTA(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 138
    functionName: ENOACCESS
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 47
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENOACCESS(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: ENOACCESS
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 47
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENOACCESS(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: ENOTFOUND
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENOTFOUND(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: ECANTLINK
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ECANTLINK(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: UNLINK_EISDIR
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNLINK_EISDIR(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: EDESTDIREXISTS
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EDESTDIREXISTS(errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errno
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: ESTALE_FSTAT
    functionSourceFile: /src/dovecot/src/lib/compat.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ESTALE_FSTAT(errno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/dovecot/src/lib/lib-event.c:90,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-event.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ru_r
    argTypes:
    - struct rusage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 92
    functionName: get_self_rusage
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - getrusage
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void get_self_rusage(struct rusage *ru_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 104
    functionName: last_passthrough_event
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct event
    signature: struct event *last_passthrough_event(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - event
    - parent
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 115
    functionName: event_copy_parent_defaults
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void event_copy_parent_defaults(struct event *event,\n\t\t\t\t       const
      struct event *parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 129
    functionName: event_set_changed
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void event_set_changed(struct event *event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:139,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/lib-event.c:142,1
    - Dst: callback
      Src: /src/dovecot/src/lib/lib-event.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - event
    - type
    - ctx
    - fmt
    - args
    argTypes:
    - struct event*
    - enum event_callback_type
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 152
    functionName: event_call_callbacks
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - callback
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool event_call_callbacks(struct event *event, enum event_callback_type
      type,\n\t\t     struct failure_context *ctx, const char *fmt, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/lib-event.c:165,1
    - Dst: event_call_callbacks
      Src: /src/dovecot/src/lib/lib-event.c:166,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/lib-event.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - event
    - type
    argTypes:
    - struct event*
    - enum event_callback_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 168
    functionName: event_call_callbacks_noargs
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_call_callbacks
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void event_call_callbacks_noargs(struct event *event,\n\t\t\t    enum
      event_callback_type type, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_get_categories
      Src: /src/dovecot/src/lib/lib-event.c:174,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib/lib-event.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - to
    - from
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: event_copy_categories
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_get_categories
    - event_add_category
    linkageType: ''
    returnType: void
    signature: void event_copy_categories(struct event *to, struct event *from)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:185,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/lib-event.c:187,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/lib-event.c:190,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/lib-event.c:193,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib/lib-event.c:196,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/lib-event.c:199,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-event.c:202,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/lib-event.c:204,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - to
    - from
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 210
    functionName: event_copy_fields
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - array_get
    - event_add_ip
    - event_strlist_append
    - array_foreach
    - event_add_str
    - array_is_created
    - event_add_int
    - event_add_timeval
    linkageType: ''
    returnType: void
    signature: void event_copy_fields(struct event *to, struct event *from)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:215,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:217,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/lib-event.c:219,1
    - Dst: event_find_category
      Src: /src/dovecot/src/lib/lib-event.c:220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - event
    - other
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 224
    functionName: event_has_all_categories
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - event_find_category
    linkageType: ''
    returnType: bool
    signature: bool event_has_all_categories(struct event *event, const struct event
      *other)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:229,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/lib-event.c:231,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/lib-event.c:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - event
    - other
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 236
    functionName: event_has_all_fields
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - event_find_field_nonrecursive
    linkageType: ''
    returnType: bool
    signature: bool event_has_all_fields(struct event *event, const struct event *other)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create_internal
      Src: /src/dovecot/src/lib/lib-event.c:241,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/lib-event.c:243,1
    - Dst: event_export
      Src: /src/dovecot/src/lib/lib-event.c:245,1
    - Dst: event_import
      Src: /src/dovecot/src/lib/lib-event.c:246,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/lib-event.c:246,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-event.c:247,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/lib-event.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 250
    functionName: event_dup
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - i_panic
    - str_c
    - t_str_new
    - event_export
    - event_create_internal
    - event_import
    linkageType: ''
    returnType: struct event
    signature: struct event *event_dup(const struct event *source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_flatten_recurse
      Src: /src/dovecot/src/lib/lib-event.c:262,1
    - Dst: event_copy_categories
      Src: /src/dovecot/src/lib/lib-event.c:264,1
    - Dst: event_copy_fields
      Src: /src/dovecot/src/lib/lib-event.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - dst
    - src
    - limit
    argTypes:
    - struct event*
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 266
    functionName: event_flatten_recurse
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - event_flatten_recurse
    - event_copy_categories
    - event_copy_fields
    linkageType: ''
    returnType: void
    signature: "void event_flatten_recurse(struct event *dst, struct event *src,\n\t\t\t\t
      \ struct event *limit)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_ref
      Src: /src/dovecot/src/lib/lib-event.c:275,1
    - Dst: event_create_internal
      Src: /src/dovecot/src/lib/lib-event.c:279,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/lib-event.c:281,1
    - Dst: event_flatten_recurse
      Src: /src/dovecot/src/lib/lib-event.c:284,1
    - Dst: event_flatten_recurse
      Src: /src/dovecot/src/lib/lib-event.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 292
    functionName: event_flatten
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - event_ref
    - event_set_name
    - event_create_internal
    - event_flatten_recurse
    linkageType: ''
    returnType: struct event
    signature: struct event *event_flatten(struct event *src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_ref
      Src: /src/dovecot/src/lib/lib-event.c:300,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/lib-event.c:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - event
    - new
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 305
    functionName: replace_parent_ref
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_ref
    - event_unref
    linkageType: ''
    returnType: void
    signature: void replace_parent_ref(struct event *event, struct event *new)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_ref
      Src: /src/dovecot/src/lib/lib-event.c:365,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/lib-event.c:371,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:383,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib/lib-event.c:384,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:385,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib/lib-event.c:386,1
    - Dst: event_ref
      Src: /src/dovecot/src/lib/lib-event.c:396,1
    - Dst: event_dup
      Src: /src/dovecot/src/lib/lib-event.c:398,1
    - Dst: event_flatten_recurse
      Src: /src/dovecot/src/lib/lib-event.c:401,1
    - Dst: replace_parent_ref
      Src: /src/dovecot/src/lib/lib-event.c:402,1
    - Dst: replace_parent_ref
      Src: /src/dovecot/src/lib/lib-event.c:405,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 24
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 357
    functionDepth: 3
    functionLinenumber: 357
    functionLinenumberEnd: 408
    functionName: event_minimize
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - replace_parent_ref
    - timeval_cmp
    - event_ref
    - event_flatten_recurse
    - event_dup
    - array_is_empty
    - array_is_created
    linkageType: ''
    returnType: struct event
    signature: struct event *event_minimize(struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/lib-event.c:415,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/lib-event.c:417,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/lib-event.c:423,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:424,1
    - Dst: event_ref
      Src: /src/dovecot/src/lib/lib-event.c:429,1
    - Dst: event_copy_parent_defaults
      Src: /src/dovecot/src/lib/lib-event.c:430,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/lib-event.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - parent
    - source_filename
    - source_linenum
    argTypes:
    - struct event*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 434
    functionName: event_create_internal
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached:
    - i_gettimeofday
    - pool_alloconly_create
    - p_strdup
    - p_new
    - event_ref
    - event_copy_parent_defaults
    - DLLIST_PREPEND
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_create_internal(struct event *parent, const
      char *source_filename,\n\t\t      unsigned int source_linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create_internal
      Src: /src/dovecot/src/lib/lib-event.c:442,1
    - Dst: event_call_callbacks_noargs
      Src: /src/dovecot/src/lib/lib-event.c:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - parent
    - source_filename
    - source_linenum
    argTypes:
    - struct event*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 445
    functionName: event_create
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 245
    functionsReached:
    - event_call_callbacks_noargs
    - event_create_internal
    linkageType: ''
    returnType: struct event
    signature: "struct event *event_create(struct event *parent, const char *source_filename,\n\t\t\t
      \  unsigned int source_linenum)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-event.c:455,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/lib-event.c:461,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/lib-event.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - parent
    - source_filename
    - source_linenum
    argTypes:
    - struct event*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 473
    functionName: event_create_passthrough
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 57
    functionsReached:
    - i_panic
    - event_create
    - memcpy
    linkageType: ''
    returnType: struct event_passthrough
    signature: "struct event_passthrough *\nevent_create_passthrough(struct event
      *parent, const char *source_filename,\n\t\t\t unsigned int source_linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 481
    functionName: event_ref
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 16
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct event
    signature: struct event *event_ref(struct event *event)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:491,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:494,1
    - Dst: event_call_callbacks_noargs
      Src: /src/dovecot/src/lib/lib-event.c:496,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:501,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:502,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/lib-event.c:503,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/lib-event.c:505,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/lib-event.c:506,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - _event
    argTypes:
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 483
    functionDepth: 3
    functionLinenumber: 483
    functionLinenumberEnd: 507
    functionName: event_unref
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 273
    functionsReached:
    - event_unref
    - event_call_callbacks_noargs
    - pool_unref
    - DLLIST_REMOVE
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void event_unref(struct event **_event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: events_get_head
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *events_get_head(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:516,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:519,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/lib-event.c:520,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 525
    functionName: event_push_global
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 6
    functionsReached:
    - i_array_init
    - array_is_created
    - i_assert
    - array_push_back
    linkageType: ''
    returnType: struct event
    signature: struct event *event_push_global(struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:529,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:530,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:534,1
    - Dst: io_loop_get_active_global_root
      Src: /src/dovecot/src/lib/lib-event.c:534,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:536,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/lib-event.c:537,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-event.c:542,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:544,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/lib-event.c:546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 549
    functionName: event_pop_global
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 6
    functionsReached:
    - array_delete
    - array_get
    - array_count
    - io_loop_get_active_global_root
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: struct event
    signature: struct event *event_pop_global(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 554
    functionName: event_get_global
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *event_get_global(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/lib-event.c:563,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/lib-event.c:564,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/lib-event.c:564,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/lib-event.c:566,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/lib-event.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - reason_code
    - source_filename
    - source_linenum
    argTypes:
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 569
    functionName: event_reason_begin
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 32
    functionsReached:
    - event_create
    - event_get_global
    - event_strlist_append
    - event_push_global
    - i_new
    linkageType: ''
    returnType: struct event_reason
    signature: "struct event_reason *\nevent_reason_begin(const char *reason_code,
      const char *source_filename,\n\t\t   unsigned int source_linenum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib/lib-event.c:577,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:580,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/lib-event.c:581,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:582,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _reason
    argTypes:
    - struct event_reason**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 571
    functionDepth: 4
    functionLinenumber: 571
    functionLinenumberEnd: 583
    functionName: event_reason_end
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 29
    functionsReached:
    - i_assert
    - event_pop_global
    - event_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void event_reason_end(struct event_reason **_reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_code_prefix
      Src: /src/dovecot/src/lib/lib-event.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - module
    - name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 588
    functionName: event_reason_code
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 3
    functionsReached:
    - event_reason_code_prefix
    linkageType: ''
    returnType: char
    signature: char *event_reason_code(const char *module, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_isupper
      Src: /src/dovecot/src/lib/lib-event.c:597,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - module
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 601
    functionName: event_reason_code_module_validate
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - i_isupper
    linkageType: ''
    returnType: bool
    signature: bool event_reason_code_module_validate(const char *module)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:608,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:609,1
    - Dst: event_reason_code_module_validate
      Src: /src/dovecot/src/lib/lib-event.c:611,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-event.c:612,1
    - Dst: event_reason_code_module_validate
      Src: /src/dovecot/src/lib/lib-event.c:615,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-event.c:616,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/lib-event.c:620,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/lib-event.c:620,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/lib-event.c:621,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/lib-event.c:621,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/lib-event.c:622,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:623,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/lib-event.c:624,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:630,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-event.c:633,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:637,1
    - Dst: i_tolower
      Src: /src/dovecot/src/lib/lib-event.c:637,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/lib-event.c:641,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - module
    - name_prefix
    - name
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 642
    functionName: event_reason_code_prefix
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 5
    functionsReached:
    - i_panic
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - event_reason_code_module_validate
    - str_append
    - i_assert
    - i_tolower
    linkageType: ''
    returnType: char
    signature: "char *event_reason_code_prefix(const char *module,\n\t\t\t\t     const
      char *name_prefix, const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:651,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:656,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/lib-event.c:659,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - event
    - prefix
    - append
    argTypes:
    - struct event*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 644
    functionDepth: 2
    functionLinenumber: 644
    functionLinenumberEnd: 663
    functionName: event_set_log_prefix
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - p_strdup
    - i_free
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_set_log_prefix(struct event *event, const char *prefix, bool append)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_log_prefix
      Src: /src/dovecot/src/lib/lib-event.c:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event
    - prefix
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 665
    functionDepth: 3
    functionLinenumber: 665
    functionLinenumberEnd: 669
    functionName: event_set_append_log_prefix
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 82
    functionsReached:
    - event_set_log_prefix
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_set_append_log_prefix(struct event *event, const char *prefix)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_log_prefix
      Src: /src/dovecot/src/lib/lib-event.c:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event
    - prefix
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 671
    functionDepth: 3
    functionLinenumber: 671
    functionLinenumberEnd: 674
    functionName: event_replace_log_prefix
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached:
    - event_set_log_prefix
    linkageType: ''
    returnType: struct event
    signature: struct event *event_replace_log_prefix(struct event *event, const char
      *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - event
    - count
    argTypes:
    - struct event*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 681
    functionName: event_drop_parent_log_prefixes
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_drop_parent_log_prefixes(struct event *event, unsigned int count)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - event
    - replace
    - callback
    - context
    argTypes:
    - struct event*
    - bool
    - event_log_prefix_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 698
    functionName: event_set_log_prefix_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 4
    functionsReached:
    - i_free
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_set_log_prefix_callback(struct event *event,\n\t\t\t
      \     bool replace,\n\t\t\t      event_log_prefix_callback_t *callback,\n\t\t\t
      \     void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - event
    - callback
    - context
    argTypes:
    - struct event*
    - event_log_message_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 709
    functionName: event_set_log_message_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_set_log_message_callback(struct event *event,\n\t\t\t
      \      event_log_message_callback_t *callback,\n\t\t\t       void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 714
    functionName: event_disable_callbacks
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void event_disable_callbacks(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:721,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - event
    - callback
    - context
    argTypes:
    - struct event*
    - event_log_message_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 717
    functionDepth: 1
    functionLinenumber: 717
    functionLinenumberEnd: 726
    functionName: event_unset_log_message_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void event_unset_log_message_callback(struct event *event,\n\t\t\t\t
      \     event_log_message_callback_t *callback,\n\t\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:731,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/lib-event.c:732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - event
    - name
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 728
    functionDepth: 2
    functionLinenumber: 728
    functionLinenumberEnd: 734
    functionName: event_set_name
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 38
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_set_name(struct event *event, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/lib-event.c:740,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - event
    - filename
    - linenum
    - literal_fname
    argTypes:
    - struct event*
    - char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 746
    functionName: event_set_source
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - strcmp
    - p_strdup
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_set_source(struct event *event, const char *filename,\n\t\t
      unsigned int linenum, bool literal_fname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 752
    functionName: event_set_always_log_source
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *event_set_always_log_source(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_recalculate_debug_level
      Src: /src/dovecot/src/lib/lib-event.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - event
    - level
    argTypes:
    - struct event*
    - enum log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 759
    functionName: event_set_min_log_level
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 5
    functionsReached:
    - event_recalculate_debug_level
    linkageType: ''
    returnType: struct event
    signature: struct event *event_set_min_log_level(struct event *event, enum log_type
      level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 764
    functionName: event_get_min_log_level
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum log_type
    signature: enum log_type event_get_min_log_level(const struct event *event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:770,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/lib-event.c:771,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/lib-event.c:774,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/lib-event.c:775,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib/lib-event.c:781,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:782,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - event
    - key
    - value
    argTypes:
    - struct event*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 785
    functionName: event_set_ptr
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 37
    functionsReached:
    - strcmp
    - p_strdup
    - array_append_space
    - p_array_init
    - array_foreach_modifiable
    - array_is_created
    linkageType: ''
    returnType: struct event
    signature: struct event *event_set_ptr(struct event *event, const char *key, void
      *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:791,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/lib-event.c:793,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/lib-event.c:794,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - event
    - key
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 798
    functionName: event_get_ptr
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 14
    functionsReached:
    - strcmp
    - array_is_created
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void *event_get_ptr(const struct event *event, const char *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/lib-event.c:804,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/lib-event.c:805,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 809
    functionName: event_category_find_registered
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct event_category
    signature: struct event_category *event_category_find_registered(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/lib-event.c:816,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/lib-event.c:817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 822
    functionName: event_category_find_internal
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct event_internal_category
    signature: 'struct event_internal_category *

      event_category_find_internal(const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-event.c:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 828
    functionName: event_get_registered_categories
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct event_category
    signature: 'struct event_category *const *

      event_get_registered_categories(unsigned int *count_r)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:835,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - internal
    argTypes:
    - struct event_internal_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 838
    functionName: event_category_add_to_array
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void event_category_add_to_array(struct event_internal_category *internal)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_category_register
      Src: /src/dovecot/src/lib/lib-event.c:852,1
    - Dst: event_category_find_internal
      Src: /src/dovecot/src/lib/lib-event.c:863,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/lib-event.c:866,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/lib-event.c:869,1
    - Dst: event_category_add_to_array
      Src: /src/dovecot/src/lib/lib-event.c:875,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-event.c:886,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:914,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/lib-event.c:922,1
    - Dst: callback
      Src: /src/dovecot/src/lib/lib-event.c:923,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - category
    argTypes:
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 840
    functionDepth: 2
    functionLinenumber: 840
    functionLinenumberEnd: 924
    functionName: event_category_register
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 3
    functionsReached:
    - i_panic
    - event_category_add_to_array
    - array_push_back
    - array_foreach_elem
    - i_strdup
    - event_category_register
    - i_new
    - callback
    - event_category_find_internal
    linkageType: ''
    returnType: struct event_category
    signature: 'struct event_category *

      event_category_register(struct event_category *category)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:936,1
    - Dst: array_lsearch_ptr
      Src: /src/dovecot/src/lib/lib-event.c:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - event
    - category
    argTypes:
    - struct event*
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 939
    functionName: event_find_category
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - i_assert
    - array_lsearch_ptr
    linkageType: ''
    returnType: bool
    signature: "bool event_find_category(const struct event *event,\n\t\t    const
      struct event_category *category)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:947,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/lib-event.c:948,1
    - Dst: event_category_register
      Src: /src/dovecot/src/lib/lib-event.c:951,1
    - Dst: event_find_category
      Src: /src/dovecot/src/lib/lib-event.c:952,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:953,1
    - Dst: event_set_changed
      Src: /src/dovecot/src/lib/lib-event.c:955,1
    - Dst: event_recalculate_debug_level
      Src: /src/dovecot/src/lib/lib-event.c:956,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - event
    - categories
    argTypes:
    - struct event*
    - struct event_category**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 941
    functionDepth: 3
    functionLinenumber: 941
    functionLinenumberEnd: 958
    functionName: event_add_categories
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - event_set_changed
    - p_array_init
    - array_push_back
    - event_category_register
    - event_find_category
    - array_is_created
    - event_recalculate_debug_level
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_add_categories(struct event *event,\n\t\t     struct
      event_category *const *categories)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_categories
      Src: /src/dovecot/src/lib/lib-event.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event
    - category
    argTypes:
    - struct event*
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 960
    functionDepth: 4
    functionLinenumber: 960
    functionLinenumberEnd: 965
    functionName: event_add_category
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 73
    functionsReached:
    - event_add_categories
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_add_category(struct event *event, struct event_category *category)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:972,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/lib-event.c:975,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/lib-event.c:976,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - event
    - key
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 980
    functionName: event_find_field_nonrecursive
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 4
    functionsReached:
    - array_foreach_modifiable
    - array_is_created
    - strcmp
    linkageType: ''
    returnType: struct event_field
    signature: 'struct event_field *

      event_find_field_nonrecursive(const struct event *event, const char *key)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/lib-event.c:988,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/lib-event.c:994,1
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/lib-event.c:996,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - event
    - key
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 982
    functionDepth: 2
    functionLinenumber: 982
    functionLinenumberEnd: 1001
    functionName: event_find_field_recursive
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 7
    functionsReached:
    - event_get_global
    - event_find_field_nonrecursive
    linkageType: ''
    returnType: struct event_field
    signature: 'struct event_field *

      event_find_field_recursive(const struct event *event, const char *key)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/lib-event.c:1013,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/lib-event.c:1019,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib/lib-event.c:1020,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:1022,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:1023,1
    - Dst: event_get_recursive_strlist
      Src: /src/dovecot/src/lib/lib-event.c:1027,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - event
    - pool
    - key
    - dest
    argTypes:
    - struct event*
    - pool_t
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1003
    functionDepth: 2
    functionLinenumber: 1003
    functionLinenumberEnd: 1028
    functionName: event_get_recursive_strlist
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - array_lsearch
    - array_push_back
    - array_foreach_elem
    - event_get_recursive_strlist
    - event_find_field_nonrecursive
    linkageType: ''
    returnType: void
    signature: "void event_get_recursive_strlist(const struct event *event, pool_t
      pool,\n\t\t\t    const char *key, ARRAY_TYPE(const_string) *dest)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib/lib-event.c:1035,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1043,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1045,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/lib-event.c:1049,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/lib-event.c:1051,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1052,1
    - Dst: event_get_recursive_strlist
      Src: /src/dovecot/src/lib/lib-event.c:1056,1
    - Dst: event_get_recursive_strlist
      Src: /src/dovecot/src/lib/lib-event.c:1057,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/lib-event.c:1057,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib/lib-event.c:1059,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/lib-event.c:1062,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - event
    - key
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1030
    functionDepth: 3
    functionLinenumber: 1030
    functionLinenumberEnd: 1063
    functionName: event_find_field_recursive_str
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 6
    functionsReached:
    - event_get_global
    - i_unreached
    - event_get_recursive_strlist
    - t_strdup_printf
    - event_find_field_recursive
    - t_array_init
    - net_ip2addr
    - ARRAY_TYPE
    - t_array_const_string_join
    linkageType: ''
    returnType: char
    signature: 'char *

      event_find_field_recursive_str(const struct event *event, const char *key)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/lib-event.c:1070,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:1072,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1073,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib/lib-event.c:1074,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:1075,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/lib-event.c:1077,1
    - Dst: event_set_changed
      Src: /src/dovecot/src/lib/lib-event.c:1079,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - event
    - key
    - clear
    argTypes:
    - struct event*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1065
    functionDepth: 2
    functionLinenumber: 1065
    functionLinenumberEnd: 1081
    functionName: event_get_field
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - i_zero
    - event_set_changed
    - p_strdup
    - array_append_space
    - p_array_init
    - array_is_created
    - event_find_field_nonrecursive
    linkageType: ''
    returnType: struct event_field
    signature: 'struct event_field *

      event_get_field(struct event *event, const char *key, bool clear)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib/lib-event.c:1092,1
    - Dst: event_get_field
      Src: /src/dovecot/src/lib/lib-event.c:1097,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:1099,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - event
    - key
    - value
    argTypes:
    - struct event*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1083
    functionDepth: 3
    functionLinenumber: 1083
    functionLinenumberEnd: 1101
    functionName: event_add_str
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 122
    functionsReached:
    - event_get_field
    - event_find_field_recursive
    - p_strdup
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_add_str(struct event *event, const char *key, const char *value)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_get_field
      Src: /src/dovecot/src/lib/lib-event.c:1106,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:1109,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1111,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:1118,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib/lib-event.c:1119,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:1120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - event
    - key
    - value
    argTypes:
    - struct event*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1103
    functionDepth: 3
    functionLinenumber: 1103
    functionLinenumberEnd: 1122
    functionName: event_strlist_append
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 9
    functionsReached:
    - p_strdup
    - p_array_init
    - array_lsearch
    - array_push_back
    - event_get_field
    - array_is_created
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_strlist_append(struct event *event, const char *key, const char *value)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_get_field
      Src: /src/dovecot/src/lib/lib-event.c:1128,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/lib-event.c:1132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - event
    - key
    - values
    - count
    argTypes:
    - struct event*
    - char*
    - char**
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1124
    functionDepth: 4
    functionLinenumber: 1124
    functionLinenumberEnd: 1134
    functionName: event_strlist_replace
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - event_get_field
    - event_strlist_append
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_strlist_replace(struct event *event, const char
      *key,\n\t\t      const char *const *values, unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/lib-event.c:1140,1
    - Dst: event_get_field
      Src: /src/dovecot/src/lib/lib-event.c:1141,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:1142,1
    - Dst: event_get_recursive_strlist
      Src: /src/dovecot/src/lib/lib-event.c:1143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - dest
    - src
    - key
    argTypes:
    - struct event*
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1136
    functionDepth: 4
    functionLinenumber: 1136
    functionLinenumberEnd: 1146
    functionName: event_strlist_copy_recursive
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - event_get_field
    - i_assert
    - event_strlist_append
    - event_get_recursive_strlist
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_strlist_copy_recursive(struct event *dest, const
      struct event *src,\n\t\t\t     const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_get_field
      Src: /src/dovecot/src/lib/lib-event.c:1153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - event
    - key
    - num
    argTypes:
    - struct event*
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1148
    functionDepth: 3
    functionLinenumber: 1148
    functionLinenumberEnd: 1157
    functionName: event_add_int
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 42
    functionsReached:
    - event_get_field
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_add_int(struct event *event, const char *key, intmax_t num)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/lib-event.c:1163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - event
    - key
    - num
    argTypes:
    - struct event*
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1159
    functionDepth: 4
    functionLinenumber: 1159
    functionLinenumberEnd: 1165
    functionName: event_add_int_nonzero
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_add_int
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_add_int_nonzero(struct event *event, const char *key, intmax_t num)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/lib-event.c:1172,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/lib-event.c:1174,1
    - Dst: event_set_changed
      Src: /src/dovecot/src/lib/lib-event.c:1177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - event
    - key
    - num
    argTypes:
    - struct event*
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1167
    functionDepth: 4
    functionLinenumber: 1167
    functionLinenumberEnd: 1179
    functionName: event_inc_int
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - event_set_changed
    - event_add_int
    - event_find_field_nonrecursive
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_inc_int(struct event *event, const char *key, intmax_t num)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_get_field
      Src: /src/dovecot/src/lib/lib-event.c:1187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - event
    - key
    - tv
    argTypes:
    - struct event*
    - char*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1181
    functionDepth: 3
    functionLinenumber: 1181
    functionLinenumberEnd: 1191
    functionName: event_add_timeval
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 7
    functionsReached:
    - event_get_field
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_add_timeval(struct event *event, const char
      *key,\n\t\t  const struct timeval *tv)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib/lib-event.c:1201,1
    - Dst: event_field_clear
      Src: /src/dovecot/src/lib/lib-event.c:1202,1
    - Dst: event_get_field
      Src: /src/dovecot/src/lib/lib-event.c:1206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - event
    - key
    - ip
    argTypes:
    - struct event*
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1193
    functionDepth: 3
    functionLinenumber: 1193
    functionLinenumberEnd: 1210
    functionName: event_add_ip
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 15
    functionsReached:
    - event_get_field
    - event_find_field_recursive
    - event_field_clear
    linkageType: ''
    returnType: struct event
    signature: 'struct event *

      event_add_ip(struct event *event, const char *key, const struct ip_addr *ip)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/lib-event.c:1218,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib/lib-event.c:1220,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/lib-event.c:1223,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/lib-event.c:1225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - event
    - fields
    argTypes:
    - struct event*
    - struct event_add_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1212
    functionDepth: 4
    functionLinenumber: 1212
    functionLinenumberEnd: 1230
    functionName: event_add_fields
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 4
    functionsReached:
    - event_add_str
    - event_add_ip
    - event_add_int
    - event_add_timeval
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nevent_add_fields(struct event *event,\n\t\t const
      struct event_add_field *fields)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/lib-event.c:1234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event
    - key
    argTypes:
    - struct event*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1232
    functionDepth: 4
    functionLinenumber: 1232
    functionLinenumberEnd: 1235
    functionName: event_field_clear
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 4
    functionsReached:
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void event_field_clear(struct event *event, const char *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1237
    functionDepth: 0
    functionLinenumber: 1237
    functionLinenumberEnd: 1240
    functionName: event_get_parent
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *event_get_parent(const struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1242
    functionDepth: 0
    functionLinenumber: 1242
    functionLinenumberEnd: 1245
    functionName: event_get_pool
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: pool_t
    signature: pool_t event_get_pool(const struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event
    - tv_r
    argTypes:
    - struct event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1247
    functionDepth: 0
    functionLinenumber: 1247
    functionLinenumberEnd: 1250
    functionName: event_get_create_time
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void event_get_create_time(const struct event *event, struct timeval
      *tv_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - event
    - tv_r
    argTypes:
    - struct event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1252
    functionDepth: 0
    functionLinenumber: 1252
    functionLinenumberEnd: 1256
    functionName: event_get_last_send_time
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool event_get_last_send_time(const struct event *event, struct timeval
      *tv_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/lib-event.c:1265,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-event.c:1267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - event
    - duration_usecs_r
    argTypes:
    - struct event*
    - uintmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1258
    functionDepth: 1
    functionLinenumber: 1258
    functionLinenumberEnd: 1269
    functionName: event_get_last_duration
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - i_assert
    - timeval_diff_usecs
    linkageType: ''
    returnType: void
    signature: "void event_get_last_duration(const struct event *event,\n\t\t\t     uintmax_t
      *duration_usecs_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:1274,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-event.c:1278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - event
    - count_r
    argTypes:
    - struct event*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1271
    functionDepth: 1
    functionLinenumber: 1271
    functionLinenumberEnd: 1279
    functionName: event_get_fields
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached:
    - array_get
    - array_is_created
    linkageType: ''
    returnType: struct event_field
    signature: 'struct event_field *

      event_get_fields(const struct event *event, unsigned int *count_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:1284,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-event.c:1288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1281
    functionDepth: 1
    functionLinenumber: 1281
    functionLinenumberEnd: 1289
    functionName: event_get_categories
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - array_get
    - array_is_created
    linkageType: ''
    returnType: struct event_category
    signature: 'struct event_category *const *

      event_get_categories(const struct event *event, unsigned int *count_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HASH_TABLE_TYPE
      Src: /src/dovecot/src/lib/lib-event.c:1292,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib/lib-event.c:1296,1
    - Dst: insert_category
      Src: /src/dovecot/src/lib/lib-event.c:1300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cat
    argTypes:
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1291
    functionDepth: 1
    functionLinenumber: 1291
    functionLinenumberEnd: 1301
    functionName: insert_category
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - insert_category
    - hash_table_update
    - HASH_TABLE_TYPE
    linkageType: ''
    returnType: void
    signature: "void insert_category(HASH_TABLE_TYPE(category_set) hash,\n\t\tconst
      struct event_category *const cat)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_get_categories
      Src: /src/dovecot/src/lib/lib-event.c:1310,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/lib-event.c:1314,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib/lib-event.c:1316,1
    - Dst: insert_category
      Src: /src/dovecot/src/lib/lib-event.c:1321,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib/lib-event.c:1323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1303
    functionDepth: 2
    functionLinenumber: 1303
    functionLinenumberEnd: 1326
    functionName: event_categories_iterate_init
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached:
    - insert_category
    - event_get_categories
    - hash_table_iterate_init
    - hash_table_create_direct
    - i_new
    linkageType: ''
    returnType: struct event_category_iterator
    signature: 'struct event_category_iterator *

      event_categories_iterate_init(const struct event *event)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib/lib-event.c:1337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - iter
    - cat_r
    argTypes:
    - struct event_category_iterator*
    - struct event_category**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1328
    functionDepth: 0
    functionLinenumber: 1328
    functionLinenumberEnd: 1338
    functionName: event_categories_iterate
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached:
    - hash_table_iterate
    linkageType: ''
    returnType: bool
    signature: "bool event_categories_iterate(struct event_category_iterator *iter,\n\t\t\t
      \     const struct event_category **cat_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib/lib-event.c:1348,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib/lib-event.c:1349,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:1350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _iter
    argTypes:
    - struct event_category_iterator**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1340
    functionDepth: 1
    functionLinenumber: 1340
    functionLinenumberEnd: 1351
    functionName: event_categories_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached:
    - hash_table_iterate_deinit
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void event_categories_iterate_deinit(struct event_category_iterator
      **_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/lib-event.c:1358,1
    - Dst: event_vsend
      Src: /src/dovecot/src/lib/lib-event.c:1359,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/lib-event.c:1360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - event
    - ctx
    - fmt
    argTypes:
    - struct event*
    - struct failure_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1353
    functionDepth: 1
    functionLinenumber: 1353
    functionLinenumberEnd: 1361
    functionName: event_send
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 9
    functionsReached:
    - event_vsend
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void event_send(struct event *event, struct failure_context *ctx,\n\t\tconst
      char *fmt, ...)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/lib-event.c:1366,1
    - Dst: get_self_rusage
      Src: /src/dovecot/src/lib/lib-event.c:1372,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/lib-event.c:1373,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/lib-event.c:1375,1
    - Dst: event_call_callbacks
      Src: /src/dovecot/src/lib/lib-event.c:1377,1
    - Dst: i_log_typev
      Src: /src/dovecot/src/lib/lib-event.c:1381,1
    - Dst: event_send_abort
      Src: /src/dovecot/src/lib/lib-event.c:1383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - event
    - ctx
    - fmt
    - args
    argTypes:
    - struct event*
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1363
    functionDepth: 4
    functionLinenumber: 1363
    functionLinenumberEnd: 1384
    functionName: event_vsend
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached:
    - i_gettimeofday
    - get_self_rusage
    - timeval_diff_usecs
    - i_log_typev
    - event_send_abort
    - event_call_callbacks
    - event_add_int
    linkageType: ''
    returnType: void
    signature: "void event_vsend(struct event *event, struct failure_context *ctx,\n\t\t
      const char *fmt, va_list args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:1389,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/lib-event.c:1391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1386
    functionDepth: 4
    functionLinenumber: 1386
    functionLinenumberEnd: 1392
    functionName: event_send_abort
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 7
    functionsReached:
    - event_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void event_send_abort(struct event *event)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1399,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1400,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1401,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1402,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1405,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1406,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/lib-event.c:1407,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1410,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1411,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/lib-event.c:1412,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1417,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1418,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/lib-event.c:1419,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/lib-event.c:1419,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-event.c:1424,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1425,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1426,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/lib-event.c:1427,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1429,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - dest
    - field
    argTypes:
    - string_t*
    - struct event_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1394
    functionDepth: 2
    functionLinenumber: 1394
    functionLinenumberEnd: 1434
    functionName: event_export_field_value
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - array_get
    - str_append_tabescaped
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: void event_export_field_value(string_t *dest, const struct event_field
      *field)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/lib-event.c:1439,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1445,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1446,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1447,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/lib-event.c:1448,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1451,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1452,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/lib-event.c:1455,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1461,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1462,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1463,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:1466,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/lib-event.c:1468,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1469,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1470,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1471,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:1475,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/lib-event.c:1477,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/lib-event.c:1478,1
    - Dst: event_export_field_value
      Src: /src/dovecot/src/lib/lib-event.c:1479,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - event
    - dest
    argTypes:
    - struct event*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1436
    functionDepth: 3
    functionLinenumber: 1436
    functionLinenumberEnd: 1482
    functionName: event_export
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 3
    functionsReached:
    - str_printfa
    - str_append_c
    - array_foreach_elem
    - array_foreach
    - str_append_tabescaped
    - event_export_field_value
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void event_export(const struct event *event, string_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_import_unescaped
      Src: /src/dovecot/src/lib/lib-event.c:1486,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib/lib-event.c:1486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - event
    - str
    - error_r
    argTypes:
    - struct event*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1484
    functionDepth: 1
    functionLinenumber: 1484
    functionLinenumberEnd: 1488
    functionName: event_import
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - t_strsplit_tabescaped
    - event_import_unescaped
    linkageType: ''
    returnType: bool
    signature: bool event_import(struct event *event, const char *str, const char
      **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_to_time
      Src: /src/dovecot/src/lib/lib-event.c:1495,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/lib-event.c:1504,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - arg_secs
    - arg_usecs
    - tv_r
    - error_r
    argTypes:
    - char*
    - char*
    - struct timeval*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1490
    functionDepth: 1
    functionLinenumber: 1490
    functionLinenumberEnd: 1510
    functionName: event_import_tv
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - str_to_uint
    - str_to_time
    linkageType: ''
    returnType: bool
    signature: "bool event_import_tv(const char *arg_secs, const char *arg_usecs,\n\t\t\t
      \   struct timeval *tv_r, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/lib-event.c:1520,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1521,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1525,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:1527,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:1528,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1531,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - event
    - field
    - _args
    - error_r
    argTypes:
    - struct event*
    - struct event_field*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1512
    functionDepth: 1
    functionLinenumber: 1512
    functionLinenumberEnd: 1537
    functionName: event_import_strlist
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_array_init
    - array_push_back
    - t_strdup_printf
    - str_to_uint
    linkageType: ''
    returnType: bool
    signature: "bool event_import_strlist(struct event *event, struct event_field
      *field,\n\t\t     const char *const **_args, const char **error_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: event_get_field
      Src: /src/dovecot/src/lib/lib-event.c:1550,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/lib/lib-event.c:1558,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1559,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/lib-event.c:1567,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/lib-event.c:1572,1
    - Dst: event_import_tv
      Src: /src/dovecot/src/lib/lib-event.c:1576,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1578,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/lib-event.c:1586,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1587,1
    - Dst: event_import_strlist
      Src: /src/dovecot/src/lib/lib-event.c:1594,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/lib-event.c:1598,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 5
    argNames:
    - event
    - code
    - arg
    - _args
    - error_r
    argTypes:
    - struct event*
    - enum event_code
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1539
    functionDepth: 3
    functionLinenumber: 1539
    functionLinenumberEnd: 1602
    functionName: event_import_field
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - net_addr2ip
    - event_import_strlist
    - i_unreached
    - t_strdup_printf
    - str_to_intmax
    - event_import_tv
    - event_get_field
    - null_strcmp
    linkageType: ''
    returnType: bool
    signature: "bool event_import_field(struct event *event, enum event_code code,
      const char *arg,\n\t\t   const char *const **_args, const char **error_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: event_category_find_registered
      Src: /src/dovecot/src/lib/lib-event.c:1620,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1622,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:1626,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1627,1
    - Dst: event_find_category
      Src: /src/dovecot/src/lib/lib-event.c:1628,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:1629,1
    - Dst: event_import_tv
      Src: /src/dovecot/src/lib/lib-event.c:1633,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1635,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:1642,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/lib-event.c:1643,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/lib-event.c:1652,1
    - Dst: event_set_source
      Src: /src/dovecot/src/lib/lib-event.c:1656,1
    - Dst: event_import_field
      Src: /src/dovecot/src/lib/lib-event.c:1666,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 3
    argNames:
    - event
    - _args
    - error_r
    argTypes:
    - struct event*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1673
      start: 1605
    functionDepth: 4
    functionLinenumber: 1605
    functionLinenumberEnd: 1673
    functionName: event_import_arg
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_set_source
    - p_array_init
    - array_push_back
    - event_category_find_registered
    - t_strdup_printf
    - event_import_tv
    - i_strdup
    - event_import_field
    - event_find_category
    - str_to_uint
    - array_is_created
    - i_free
    linkageType: ''
    returnType: bool
    signature: "bool event_import_arg(struct event *event, const char *const **_args,\n\t\t
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-event.c:1683,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/lib-event.c:1684,1
    - Dst: event_import_tv
      Src: /src/dovecot/src/lib/lib-event.c:1691,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-event.c:1692,1
    - Dst: event_import_arg
      Src: /src/dovecot/src/lib/lib-event.c:1699,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - event
    - args
    - error_r
    argTypes:
    - struct event*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1675
    functionDepth: 5
    functionLinenumber: 1675
    functionLinenumberEnd: 1704
    functionName: event_import_unescaped
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 3
    functionsReached:
    - t_strdup_printf
    - event_import_arg
    - event_import_tv
    - array_clear
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool event_import_unescaped(struct event *event, const char *const
      *args,\n\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:1708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - event_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1706
    functionDepth: 1
    functionLinenumber: 1706
    functionLinenumberEnd: 1709
    functionName: event_register_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 4
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void event_register_callback(event_callback_t *callback)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib/lib-event.c:1715,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/lib-event.c:1716,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/lib-event.c:1717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - callback
    argTypes:
    - event_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1711
    functionDepth: 1
    functionLinenumber: 1711
    functionLinenumberEnd: 1718
    functionName: event_unregister_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 2
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void event_unregister_callback(event_callback_t *callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/lib-event.c:1722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - event_category_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1720
    functionDepth: 1
    functionLinenumber: 1720
    functionLinenumberEnd: 1723
    functionName: event_category_register_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void event_category_register_callback(event_category_callback_t *callback)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib/lib-event.c:1729,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/lib-event.c:1730,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/lib-event.c:1731,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - callback
    argTypes:
    - event_category_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1725
    functionDepth: 1
    functionLinenumber: 1725
    functionLinenumberEnd: 1732
    functionName: event_category_unregister_callback
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void event_category_unregister_callback(event_category_callback_t *callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib/lib-event.c:1737,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1734
    functionDepth: 4
    functionLinenumber: 1734
    functionLinenumberEnd: 1739
    functionName: event_passthrough_set_append_log_prefix
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_set_append_log_prefix(const char *prefix)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_replace_log_prefix
      Src: /src/dovecot/src/lib/lib-event.c:1744,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1741
    functionDepth: 4
    functionLinenumber: 1741
    functionLinenumberEnd: 1746
    functionName: event_passthrough_replace_log_prefix
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_replace_log_prefix
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_replace_log_prefix(const char *prefix)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/lib-event.c:1751,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1753
      start: 1748
    functionDepth: 3
    functionLinenumber: 1748
    functionLinenumberEnd: 1753
    functionName: event_passthrough_set_name
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_set_name
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_set_name(const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_source
      Src: /src/dovecot/src/lib/lib-event.c:1759,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - filename
    - linenum
    - literal_fname
    argTypes:
    - char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1755
    functionDepth: 2
    functionLinenumber: 1755
    functionLinenumberEnd: 1762
    functionName: event_passthrough_set_source
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_set_source
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: "struct event_passthrough *\nevent_passthrough_set_source(const char
      *filename,\n\t\t\t     unsigned int linenum, bool literal_fname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_always_log_source
      Src: /src/dovecot/src/lib/lib-event.c:1767,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1764
    functionDepth: 2
    functionLinenumber: 1764
    functionLinenumberEnd: 1769
    functionName: event_passthrough_set_always_log_source
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_set_always_log_source
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_set_always_log_source(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_categories
      Src: /src/dovecot/src/lib/lib-event.c:1774,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - categories
    argTypes:
    - struct event_category**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1776
      start: 1771
    functionDepth: 4
    functionLinenumber: 1771
    functionLinenumberEnd: 1776
    functionName: event_passthrough_add_categories
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - last_passthrough_event
    - event_add_categories
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_add_categories(struct event_category *const *categories)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_category
      Src: /src/dovecot/src/lib/lib-event.c:1781,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - category
    argTypes:
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1778
    functionDepth: 5
    functionLinenumber: 1778
    functionLinenumberEnd: 1783
    functionName: event_passthrough_add_category
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_add_category
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_add_category(struct event_category *category)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_fields
      Src: /src/dovecot/src/lib/lib-event.c:1788,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fields
    argTypes:
    - struct event_add_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1785
    functionDepth: 5
    functionLinenumber: 1785
    functionLinenumberEnd: 1790
    functionName: event_passthrough_add_fields
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_add_fields
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_add_fields(const struct event_add_field *fields)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/lib-event.c:1795,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1792
    functionDepth: 4
    functionLinenumber: 1792
    functionLinenumberEnd: 1797
    functionName: event_passthrough_add_str
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_add_str
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_add_str(const char *key, const char *value)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/lib-event.c:1802,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1799
    functionDepth: 4
    functionLinenumber: 1799
    functionLinenumberEnd: 1804
    functionName: event_passthrough_strlist_append
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_strlist_append
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_strlist_append(const char *key, const char *value)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_strlist_replace
      Src: /src/dovecot/src/lib/lib-event.c:1810,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - key
    - values
    - count
    argTypes:
    - char*
    - char**
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1806
    functionDepth: 5
    functionLinenumber: 1806
    functionLinenumberEnd: 1812
    functionName: event_passthrough_strlist_replace
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - last_passthrough_event
    - event_strlist_replace
    linkageType: ''
    returnType: struct event_passthrough
    signature: "struct event_passthrough *\nevent_passthrough_strlist_replace(const
      char *key, const char *const *values,\n\t\t\t\t  unsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/lib-event.c:1817,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - num
    argTypes:
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1819
      start: 1814
    functionDepth: 4
    functionLinenumber: 1814
    functionLinenumberEnd: 1819
    functionName: event_passthrough_add_int
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - last_passthrough_event
    - event_add_int
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_add_int(const char *key, intmax_t num)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int_nonzero
      Src: /src/dovecot/src/lib/lib-event.c:1824,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - num
    argTypes:
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1821
    functionDepth: 5
    functionLinenumber: 1821
    functionLinenumberEnd: 1826
    functionName: event_passthrough_add_int_nonzero
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - last_passthrough_event
    - event_add_int_nonzero
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_add_int_nonzero(const char *key, intmax_t num)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib/lib-event.c:1831,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - tv
    argTypes:
    - char*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1828
    functionDepth: 4
    functionLinenumber: 1828
    functionLinenumberEnd: 1833
    functionName: event_passthrough_add_timeval
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - last_passthrough_event
    - event_add_timeval
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_add_timeval(const char *key, const struct timeval *tv)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/lib-event.c:1838,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - ip
    argTypes:
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1835
    functionDepth: 4
    functionLinenumber: 1835
    functionLinenumberEnd: 1840
    functionName: event_passthrough_add_ip
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_add_ip
    - last_passthrough_event
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_add_ip(const char *key, const struct ip_addr *ip)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_inc_int
      Src: /src/dovecot/src/lib/lib-event.c:1845,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - num
    argTypes:
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1842
    functionDepth: 5
    functionLinenumber: 1842
    functionLinenumberEnd: 1847
    functionName: event_passthrough_inc_int
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - last_passthrough_event
    - event_inc_int
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_inc_int(const char *key, intmax_t num)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_field_clear
      Src: /src/dovecot/src/lib/lib-event.c:1852,1
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1849
    functionDepth: 5
    functionLinenumber: 1849
    functionLinenumberEnd: 1854
    functionName: event_passthrough_clear_field
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - last_passthrough_event
    - event_field_clear
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      event_passthrough_clear_field(const char *key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: last_passthrough_event
      Src: /src/dovecot/src/lib/lib-event.c:1858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1856
    functionDepth: 2
    functionLinenumber: 1856
    functionLinenumberEnd: 1861
    functionName: event_passthrough_event
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - last_passthrough_event
    linkageType: ''
    returnType: struct event
    signature: struct event *event_passthrough_event(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_self_rusage
      Src: /src/dovecot/src/lib/lib-event.c:1886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1884
    functionDepth: 2
    functionLinenumber: 1884
    functionLinenumberEnd: 1887
    functionName: event_enable_user_cpu_usecs
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 1
    functionsReached:
    - get_self_rusage
    linkageType: ''
    returnType: void
    signature: void event_enable_user_cpu_usecs(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1896,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1897,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1898,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1901,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/lib-event.c:1903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1889
    functionDepth: 1
    functionLinenumber: 1889
    functionLinenumberEnd: 1904
    functionName: lib_event_init
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - i_array_init
    linkageType: ''
    returnType: void
    signature: void lib_event_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unset_global_debug_log_filter
      Src: /src/dovecot/src/lib/lib-event.c:1913,1
    - Dst: event_unset_global_debug_send_filter
      Src: /src/dovecot/src/lib/lib-event.c:1914,1
    - Dst: event_unset_global_core_log_filter
      Src: /src/dovecot/src/lib/lib-event.c:1915,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/lib-event.c:1917,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/lib-event.c:1922,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:1923,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-event.c:1924,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/lib-event.c:1928,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/lib-event.c:1930,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/lib-event.c:1932,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/lib-event.c:1933,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/lib-event.c:1934,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/lib-event.c:1935,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/lib-event.c:1936,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1906
    functionDepth: 2
    functionLinenumber: 1906
    functionLinenumberEnd: 1937
    functionName: lib_event_deinit
    functionSourceFile: /src/dovecot/src/lib/lib-event.c
    functionUses: 0
    functionsReached:
    - event_unset_global_debug_log_filter
    - array_foreach_elem
    - i_warning
    - event_unset_global_core_log_filter
    - event_unset_global_debug_send_filter
    - array_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void lib_event_deinit(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-str-find.c:11,1
    - Dst: str_find_init
      Src: /src/dovecot/src/lib/test-str-find.c:16,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/test-str-find.c:16,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-str-find.c:19,1
    - Dst: str_find_reset
      Src: /src/dovecot/src/lib/test-str-find.c:22,1
    - Dst: str_find_more
      Src: /src/dovecot/src/lib/test-str-find.c:26,1
    - Dst: str_find_more
      Src: /src/dovecot/src/lib/test-str-find.c:35,1
    - Dst: str_find_get_match_end_pos
      Src: /src/dovecot/src/lib/test-str-find.c:45,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-str-find.c:46,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 2
    argNames:
    - key
    - expected_pos
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 52
    functionName: test_str_find_substring
    functionSourceFile: /src/dovecot/src/lib/test-str-find.c
    functionUses: 0
    functionsReached:
    - str_find_init
    - strlen
    - str_find_reset
    - pool_datastack_create
    - str_find_more
    - i_assert
    - str_find_get_match_end_pos
    linkageType: ''
    returnType: bool
    signature: bool test_str_find_substring(const char *key, int expected_pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-str-find.c:71,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-str-find.c:72,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib/test-str-find.c:75,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-str-find.c:76,1
    - Dst: test_str_find_substring
      Src: /src/dovecot/src/lib/test-str-find.c:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: test_str_find
    functionSourceFile: /src/dovecot/src/lib/test-str-find.c
    functionUses: 0
    functionsReached:
    - strstr
    - strlen
    - t_strndup
    - test_str_find_substring
    linkageType: ''
    returnType: void
    signature: void test_str_find(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/aqueue.c:11,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib/aqueue.c:13,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 17
    functionName: aqueue_init
    functionSourceFile: /src/dovecot/src/lib/aqueue.c
    functionUses: 7
    functionsReached:
    - i_assert
    - buffer_get_writable_size
    - i_new
    linkageType: ''
    returnType: struct aqueue
    signature: struct aqueue *aqueue_init(struct array *array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/aqueue.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _aqueue
    argTypes:
    - struct aqueue**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: aqueue_deinit
    functionSourceFile: /src/dovecot/src/lib/aqueue.c
    functionUses: 7
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void aqueue_deinit(struct aqueue **_aqueue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:31,1
    - Dst: array_append_space_i
      Src: /src/dovecot/src/lib/aqueue.c:34,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib/aqueue.c:35,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:37,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/aqueue.c:39,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib/aqueue.c:40,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib/aqueue.c:44,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - aqueue
    argTypes:
    - struct aqueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 51
    functionName: aqueue_grow
    functionSourceFile: /src/dovecot/src/lib/aqueue.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - array_copy
    - buffer_get_writable_size
    - i_assert
    - array_append_space_i
    linkageType: ''
    returnType: void
    signature: void aqueue_grow(struct aqueue *aqueue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_grow
      Src: /src/dovecot/src/lib/aqueue.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:57,1
    - Dst: array_idx_set_i
      Src: /src/dovecot/src/lib/aqueue.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - aqueue
    - data
    argTypes:
    - struct aqueue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: aqueue_append
    functionSourceFile: /src/dovecot/src/lib/aqueue.c
    functionUses: 8
    functionsReached:
    - array_idx_set_i
    - i_assert
    - aqueue_grow
    linkageType: ''
    returnType: void
    signature: void aqueue_append(struct aqueue *aqueue, const void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/lib/aqueue.c:67,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:69,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/lib/aqueue.c:84,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib/aqueue.c:88,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:92,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:96,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib/aqueue.c:97,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/aqueue.c:103,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - aqueue
    - n
    argTypes:
    - struct aqueue*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 105
    functionName: aqueue_delete
    functionSourceFile: /src/dovecot/src/lib/aqueue.c
    functionUses: 6
    functionsReached:
    - aqueue_count
    - i_assert
    - aqueue_idx
    - array_copy
    linkageType: ''
    returnType: void
    signature: void aqueue_delete(struct aqueue *aqueue, unsigned int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_delete
      Src: /src/dovecot/src/lib/aqueue.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - aqueue
    argTypes:
    - struct aqueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: aqueue_delete_tail
    functionSourceFile: /src/dovecot/src/lib/aqueue.c
    functionUses: 5
    functionsReached:
    - aqueue_delete
    linkageType: ''
    returnType: void
    signature: void aqueue_delete_tail(struct aqueue *aqueue)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - aqueue
    argTypes:
    - struct aqueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: aqueue_clear
    functionSourceFile: /src/dovecot/src/lib/aqueue.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void aqueue_clear(struct aqueue *aqueue)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - aqueue
    argTypes:
    - struct aqueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 124
    functionName: aqueue_count
    functionSourceFile: /src/dovecot/src/lib/aqueue.c
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int aqueue_count(const struct aqueue *aqueue)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - ATTR_UNUSED
    - source_filename ATTR_UNUSED
    - source_linenum ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - io_r
    argTypes:
    - char*
    - char*
    - unsigned int
    - io_callback_t*
    - void*
    - struct io**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 18
    functionName: io_add_notify
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-none.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: enum io_notify_result
    signature: "enum io_notify_result io_add_notify(const char *path ATTR_UNUSED,\n\t
      \     const char *source_filename ATTR_UNUSED,\n\t      unsigned int source_linenum
      ATTR_UNUSED,\n\t      io_callback_t *callback ATTR_UNUSED,\n\t      void *context
      ATTR_UNUSED, struct io **io_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct io*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: io_loop_notify_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_loop_notify_remove(struct io *io ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: io_loop_notify_handler_deinit
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-none.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_loop_notify_handler_deinit(struct ioloop *ioloop ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: io_loop_extract_notify_fd
    functionSourceFile: /src/dovecot/src/lib/ioloop-notify-none.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int io_loop_extract_notify_fd(struct ioloop *ioloop ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-nf.c:15,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-unicode-nf.c:16,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-nf.c:21,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib/test-unicode-nf.c:23,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:25,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:28,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - column
    - out_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 13
    functionDepth: 2
    functionLinenumber: 13
    functionLinenumberEnd: 30
    functionName: test_column_to_utf8
    functionSourceFile: /src/dovecot/src/lib/test-unicode-nf.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - uni_is_valid_ucs4
    - uni_ucs4_to_utf8_c
    - t_strsplit
    - str_to_uint32_hex
    linkageType: ''
    returnType: int
    signature: int test_column_to_utf8(const char *column, const char **out_r)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-unicode-nf.c:36,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:45,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:46,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:46,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:47,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:48,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:48,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:51,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:52,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:52,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:53,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:54,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:54,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:57,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:58,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:58,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:59,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:60,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:60,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:63,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:64,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:64,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:65,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:66,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:66,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:69,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:70,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:70,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:71,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:72,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:72,1
    - Dst: uni_utf8_is_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:75,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:75,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:76,1
    - Dst: uni_utf8_is_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:77,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:77,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:78,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:79,1
    - Dst: uni_utf8_is_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:80,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:80,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:81,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:83,1
    - Dst: uni_utf8_is_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:84,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:84,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:85,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:87,1
    - Dst: uni_utf8_is_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:88,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:88,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:89,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:98,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:99,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:99,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:100,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:101,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:101,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:104,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:105,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:105,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:106,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:107,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:107,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:110,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:111,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:111,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:112,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:113,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:113,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:116,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:117,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:117,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:118,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:119,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:119,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:122,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:123,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:123,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:124,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:125,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:125,1
    - Dst: uni_utf8_is_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:128,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:128,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:129,1
    - Dst: uni_utf8_is_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:130,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:130,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:131,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:132,1
    - Dst: uni_utf8_is_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:133,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:133,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:136,1
    - Dst: uni_utf8_is_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:137,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:137,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:138,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:140,1
    - Dst: uni_utf8_is_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:141,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:141,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:142,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:151,1
    - Dst: uni_utf8_write_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:152,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:152,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:153,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:154,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:154,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:157,1
    - Dst: uni_utf8_write_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:158,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:158,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:159,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:160,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:160,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:163,1
    - Dst: uni_utf8_write_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:164,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:164,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:165,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:166,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:166,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:169,1
    - Dst: uni_utf8_write_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:170,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:170,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:171,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:172,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:172,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:175,1
    - Dst: uni_utf8_write_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:176,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:176,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:177,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:178,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:178,1
    - Dst: uni_utf8_is_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:181,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:181,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:182,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:183,1
    - Dst: uni_utf8_is_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:184,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:184,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:185,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:187,1
    - Dst: uni_utf8_is_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:188,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:188,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:189,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:191,1
    - Dst: uni_utf8_is_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:192,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:192,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:193,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:195,1
    - Dst: uni_utf8_is_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:196,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:196,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:197,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:206,1
    - Dst: uni_utf8_write_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:207,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:207,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:208,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:209,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:209,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:212,1
    - Dst: uni_utf8_write_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:213,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:213,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:214,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:215,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:215,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:218,1
    - Dst: uni_utf8_write_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:219,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:219,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:220,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:221,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:221,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:224,1
    - Dst: uni_utf8_write_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:225,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:225,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:226,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:227,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:227,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:230,1
    - Dst: uni_utf8_write_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:231,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:231,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:232,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:233,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:233,1
    - Dst: uni_utf8_is_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:236,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:236,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:237,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:238,1
    - Dst: uni_utf8_is_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:239,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:239,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:240,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:242,1
    - Dst: uni_utf8_is_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:243,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:243,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:244,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:246,1
    - Dst: uni_utf8_is_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:247,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:247,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:248,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:250,1
    - Dst: uni_utf8_is_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:251,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:251,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:252,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 149
    argCount: 6
    argNames:
    - c1
    - c2
    - c3
    - c4
    - c5
    - line_num
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 32
    functionDepth: 6
    functionLinenumber: 32
    functionLinenumberEnd: 254
    functionName: test_columns
    functionSourceFile: /src/dovecot/src/lib/test-unicode-nf.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - uni_utf8_write_nfd
    - uni_utf8_is_nfc
    - uni_utf8_write_nfkd
    - test_assert_idx
    - strlen
    - t_buffer_create
    - buffer_set_used_size
    - uni_utf8_is_nfd
    - uni_utf8_is_nfkd
    - uni_utf8_is_nfkc
    - test_assert_strcmp_idx
    - uni_utf8_write_nfc
    - uni_utf8_write_nfkc
    linkageType: ''
    returnType: void
    signature: "void test_columns(const char *c1, const char *c2, const char *c3,
      const char *c4,\n\t     const char *c5, unsigned int line_num)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-nf.c:283,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-unicode-nf.c:284,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-nf.c:285,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-nf.c:285,1
    - Dst: test_column_to_utf8
      Src: /src/dovecot/src/lib/test-unicode-nf.c:295,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-nf.c:296,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-nf.c:296,1
    - Dst: test_columns
      Src: /src/dovecot/src/lib/test-unicode-nf.c:305,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-nf.c:310,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-nf.c:311,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-nf.c:311,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:328,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-unicode-nf.c:329,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-unicode-nf.c:330,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib/test-unicode-nf.c:335,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-unicode-nf.c:337,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:338,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:341,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:342,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-unicode-nf.c:342,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-unicode-nf.c:342,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:343,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:344,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:344,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:344,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:347,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:348,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-unicode-nf.c:348,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-unicode-nf.c:348,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:349,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:350,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:350,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:350,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:353,1
    - Dst: uni_utf8_write_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:354,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-unicode-nf.c:354,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-unicode-nf.c:354,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:355,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:356,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:356,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:356,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:359,1
    - Dst: uni_utf8_write_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:360,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-unicode-nf.c:360,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-unicode-nf.c:360,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:361,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-nf.c:362,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:362,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:362,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 3
    argNames:
    - line
    - part1
    - line_num
    argTypes:
    - char*
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 256
    functionDepth: 7
    functionLinenumber: 256
    functionLinenumberEnd: 365
    functionName: test_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-nf.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - test_assert_idx
    - t_strdup_printf
    - buffer_set_used_size
    - uni_utf8_write_nfc
    - uni_utf8_write_nfkc
    - t_str_new
    - uni_utf8_write_nfkd
    - uni_ucs4_to_utf8_c
    - test_columns
    - uni_is_valid_ucs4
    - str_data
    - test_failed
    - i_assert
    - str_to_uint32_hex
    - test_column_to_utf8
    - uni_utf8_write_nfd
    - str_array_length
    - t_buffer_create
    - t_strsplit
    - str_truncate
    - test_assert_strcmp_idx
    linkageType: ''
    returnType: void
    signature: void test_line(const char *line, bool part1, unsigned int line_num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-unicode-nf.c:379,1
    - Dst: test_column_to_utf8
      Src: /src/dovecot/src/lib/test-unicode-nf.c:382,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:383,1
    - Dst: test_column_to_utf8
      Src: /src/dovecot/src/lib/test-unicode-nf.c:384,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:385,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:387,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:388,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:388,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:389,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:390,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:390,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:392,1
    - Dst: uni_utf8_write_nfc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:393,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:393,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:394,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:395,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:395,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:397,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:398,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:398,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:399,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:400,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:400,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:402,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:403,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:403,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:404,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:405,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:405,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:407,1
    - Dst: uni_utf8_write_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:408,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:409,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:410,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:410,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:412,1
    - Dst: uni_utf8_write_nfkc
      Src: /src/dovecot/src/lib/test-unicode-nf.c:413,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:413,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:414,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:415,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:415,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:417,1
    - Dst: uni_utf8_write_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:418,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:418,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:419,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:420,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:420,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unicode-nf.c:422,1
    - Dst: uni_utf8_write_nfkd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:423,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-nf.c:423,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:424,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:425,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unicode-nf.c:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 367
    functionDepth: 6
    functionLinenumber: 367
    functionLinenumberEnd: 426
    functionName: test_long
    functionSourceFile: /src/dovecot/src/lib/test-unicode-nf.c
    functionUses: 0
    functionsReached:
    - test_column_to_utf8
    - str_c
    - uni_utf8_write_nfd
    - uni_utf8_write_nfkd
    - strlen
    - t_buffer_create
    - test_assert_strcmp
    - buffer_set_used_size
    - test_assert
    - uni_utf8_write_nfc
    - uni_utf8_write_nfkc
    linkageType: ''
    returnType: void
    signature: void test_long(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-unicode-nf.c:449,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-unicode-nf.c:450,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-unicode-nf.c:454,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-unicode-nf.c:457,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-unicode-nf.c:459,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-unicode-nf.c:461,1
    - Dst: uni_utf8_write_nfd
      Src: /src/dovecot/src/lib/test-unicode-nf.c:467,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-unicode-nf.c:467,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-unicode-nf.c:467,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:468,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:475,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:487,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:488,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:489,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:490,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:491,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:492,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:493,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:494,1
    - Dst: test_assert_memcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:495,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-nf.c:496,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 428
    functionDepth: 6
    functionLinenumber: 428
    functionLinenumberEnd: 497
    functionName: test_stream_safe
    functionSourceFile: /src/dovecot/src/lib/test-unicode-nf.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - uni_utf8_write_nfd
    - str_data
    - str_len
    - t_buffer_create
    - test_assert
    - str_append
    - test_assert_memcmp
    linkageType: ''
    returnType: void
    signature: void test_stream_safe(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unicode-nf.c:505,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-nf.c:505,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-unicode-nf.c:508,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-nf.c:510,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-nf.c:510,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/test-unicode-nf.c:512,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-nf.c:517,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-unicode-nf.c:518,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/test-unicode-nf.c:523,1
    - Dst: test_line
      Src: /src/dovecot/src/lib/test-unicode-nf.c:533,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unicode-nf.c:537,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-nf.c:538,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unicode-nf.c:539,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-nf.c:539,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib/test-unicode-nf.c:541,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-nf.c:542,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-nf.c:546,1
    - Dst: test_line
      Src: /src/dovecot/src/lib/test-unicode-nf.c:550,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 499
    functionDepth: 8
    functionLinenumber: 499
    functionLinenumberEnd: 551
    functionName: test_unicode_nf
    functionSourceFile: /src/dovecot/src/lib/test-unicode-nf.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strchr
    - t_str_trim
    - open
    - t_strdup_printf
    - test_has_failed
    - i_stream_read_next_line
    - test_end
    - test_failed
    - i_stream_create_fd_autoclose
    - t_str_lcase
    - test_line
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unicode_nf(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isatty
      Src: /src/dovecot/src/lib/askpass.c:20,1
    - Dst: fputs
      Src: /src/dovecot/src/lib/askpass.c:22,1
    - Dst: fflush
      Src: /src/dovecot/src/lib/askpass.c:23,1
    - Dst: open
      Src: /src/dovecot/src/lib/askpass.c:25,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/askpass.c:27,1
    - Dst: tcgetattr
      Src: /src/dovecot/src/lib/askpass.c:30,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/askpass.c:33,1
    - Dst: tcsetattr
      Src: /src/dovecot/src/lib/askpass.c:34,1
    - Dst: read
      Src: /src/dovecot/src/lib/askpass.c:42,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/askpass.c:45,1
    - Dst: tcsetattr
      Src: /src/dovecot/src/lib/askpass.c:50,1
    - Dst: fputs
      Src: /src/dovecot/src/lib/askpass.c:52,1
    - Dst: fflush
      Src: /src/dovecot/src/lib/askpass.c:52,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/askpass.c:53,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - prompt
    - pass
    argTypes:
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 55
    functionName: askpass_str
    functionSourceFile: /src/dovecot/src/lib/askpass.c
    functionUses: 0
    functionsReached:
    - tcgetattr
    - ENUM_NEGATE
    - fflush
    - tcsetattr
    - i_close_fd
    - open
    - i_fatal
    - read
    - isatty
    - buffer_append_c
    - fputs
    linkageType: ''
    returnType: void
    signature: void askpass_str(const char *prompt, buffer_t *pass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/askpass.c:61,1
    - Dst: askpass_str
      Src: /src/dovecot/src/lib/askpass.c:62,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/askpass.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - prompt
    - buf
    - buf_size
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: askpass
    functionSourceFile: /src/dovecot/src/lib/askpass.c
    functionUses: 4
    functionsReached:
    - buffer_create_from_data
    - askpass_str
    - buffer_append_c
    linkageType: ''
    returnType: void
    signature: void askpass(const char *prompt, char *buf, size_t buf_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/askpass.c:68,1
    - Dst: askpass_str
      Src: /src/dovecot/src/lib/askpass.c:70,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/askpass.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - prompt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: t_askpass
    functionSourceFile: /src/dovecot/src/lib/askpass.c
    functionUses: 4
    functionsReached:
    - askpass_str
    - t_str_new
    - str_c
    linkageType: ''
    returnType: char
    signature: char *t_askpass(const char *prompt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-log.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: test_event_log_prefix_cb
    functionSourceFile: /src/dovecot/src/lib/test-event-log.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      test_event_log_prefix_cb(char *prefix)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-log.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prefix
    - ATTR_UNUSED
    - message
    argTypes:
    - char*
    - enum log_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: test_event_log_message_cb
    functionSourceFile: /src/dovecot/src/lib/test-event-log.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\ntest_event_log_message_cb(char *prefix,\n\t\t\t  enum log_type
      log_type ATTR_UNUSED,\n\t\t\t  const char *message)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib/test-event-log.c:66,1
    - Dst: test_dir_get_prefix
      Src: /src/dovecot/src/lib/test-event-log.c:66,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-event-log.c:67,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-event-log.c:69,1
    - Dst: i_set_failure_file
      Src: /src/dovecot/src/lib/test-event-log.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 64
    functionDepth: 6
    functionLinenumber: 64
    functionLinenumberEnd: 72
    functionName: temp_log_file_init
    functionSourceFile: /src/dovecot/src/lib/test-event-log.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - open
    - i_strconcat
    - test_dir_get_prefix
    - i_set_failure_file
    linkageType: ''
    returnType: int
    signature: int temp_log_file_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dovecot/src/lib/test-event-log.c:78,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-event-log.c:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - log_fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 88
    functionName: read_log_line
    functionSourceFile: /src/dovecot/src/lib/test-event-log.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - read
    linkageType: ''
    returnType: char
    signature: char *read_log_line(int log_fd)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-log.c:2384,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-log.c:2386,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib/test-event-log.c:2396,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib/test-event-log.c:2398,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-log.c:2401,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-log.c:2406,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-log.c:2407,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-event-log.c:2411,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib/test-event-log.c:2423,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/test-event-log.c:2427,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib/test-event-log.c:2429,1
    - Dst: event_replace_log_prefix
      Src: /src/dovecot/src/lib/test-event-log.c:2432,1
    - Dst: event_set_log_prefix_callback
      Src: /src/dovecot/src/lib/test-event-log.c:2435,1
    - Dst: event_set_log_prefix_callback
      Src: /src/dovecot/src/lib/test-event-log.c:2440,1
    - Dst: event_set_log_message_callback
      Src: /src/dovecot/src/lib/test-event-log.c:2445,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-event-log.c:2460,1
    - Dst: event_log
      Src: /src/dovecot/src/lib/test-event-log.c:2462,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-event-log.c:2464,1
    - Dst: read_log_line
      Src: /src/dovecot/src/lib/test-event-log.c:2464,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-event-log.c:2466,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-log.c:2467,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-log.c:2469,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 1
    argNames:
    - log_fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2470
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 2470
    functionName: test_event_log_message
    functionSourceFile: /src/dovecot/src/lib/test-event-log.c
    functionUses: 0
    functionsReached:
    - str_c
    - event_create
    - event_drop_parent_log_prefixes
    - event_unref
    - t_str_new
    - event_set_log_message_callback
    - i_unreached
    - event_log
    - event_set_append_log_prefix
    - event_replace_log_prefix
    - test_assert_strcmp
    - i_set_failure_prefix
    - read_log_line
    - i_assert
    - event_set_log_prefix_callback
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_log_message(int log_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-log.c:2478,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-log.c:2479,1
    - Dst: usleep
      Src: /src/dovecot/src/lib/test-event-log.c:2480,1
    - Dst: e_info
      Src: /src/dovecot/src/lib/test-event-log.c:2481,1
    - Dst: event_get_last_duration
      Src: /src/dovecot/src/lib/test-event-log.c:2482,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-log.c:2483,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-log.c:2484,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-log.c:2485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2486
      start: 2475
    functionDepth: 4
    functionLinenumber: 2475
    functionLinenumberEnd: 2486
    functionName: test_event_duration
    functionSourceFile: /src/dovecot/src/lib/test-event-log.c
    functionUses: 0
    functionsReached:
    - event_create
    - usleep
    - e_info
    - event_unref
    - test_end
    - event_get_last_duration
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_duration()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-log.c:2490,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-log.c:2492,1
    - Dst: event_set_min_log_level
      Src: /src/dovecot/src/lib/test-event-log.c:2493,1
    - Dst: e_info
      Src: /src/dovecot/src/lib/test-event-log.c:2495,1
    - Dst: read_log_line
      Src: /src/dovecot/src/lib/test-event-log.c:2496,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-log.c:2497,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib/test-event-log.c:2498,1
    - Dst: read_log_line
      Src: /src/dovecot/src/lib/test-event-log.c:2499,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-event-log.c:2500,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-log.c:2501,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-log.c:2502,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-log.c:2503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - log_fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2488
    functionDepth: 4
    functionLinenumber: 2488
    functionLinenumberEnd: 2504
    functionName: test_event_log_level
    functionSourceFile: /src/dovecot/src/lib/test-event-log.c
    functionUses: 0
    functionsReached:
    - event_create
    - e_info
    - event_unref
    - event_set_min_log_level
    - test_assert_strcmp
    - test_end
    - e_warning
    - read_log_line
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_log_level(int log_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_event_duration
      Src: /src/dovecot/src/lib/test-event-log.c:2508,1
    - Dst: i_get_failure_handlers
      Src: /src/dovecot/src/lib/test-event-log.c:2512,1
    - Dst: temp_log_file_init
      Src: /src/dovecot/src/lib/test-event-log.c:2514,1
    - Dst: test_event_log_message
      Src: /src/dovecot/src/lib/test-event-log.c:2515,1
    - Dst: test_event_log_level
      Src: /src/dovecot/src/lib/test-event-log.c:2516,1
    - Dst: i_set_failure_file
      Src: /src/dovecot/src/lib/test-event-log.c:2518,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib/test-event-log.c:2519,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-event-log.c:2520,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-event-log.c:2521,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-event-log.c:2522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2523
      start: 2506
    functionDepth: 7
    functionLinenumber: 2506
    functionLinenumberEnd: 2523
    functionName: test_event_log
    functionSourceFile: /src/dovecot/src/lib/test-event-log.c
    functionUses: 0
    functionsReached:
    - test_event_duration
    - i_free
    - temp_log_file_init
    - i_close_fd
    - test_event_log_level
    - i_unlink
    - i_set_error_handler
    - test_event_log_message
    - i_get_failure_handlers
    - i_set_failure_file
    linkageType: ''
    returnType: void
    signature: void test_event_log(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - filter
    - ','
    - str
    - ','
    - error_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: event_filter_import
    functionSourceFile: /src/dovecot/src/lib/event-filter.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_filter_import(filter, str, error_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-data.c:31,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-unicode-data.c:32,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:33,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:33,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/test-unicode-data.c:38,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:43,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:45,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/test-unicode-data.c:45,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:46,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:48,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:49,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:49,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:56,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:57,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:57,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:64,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:67,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:72,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 7
    argNames:
    - line
    - file
    - line_num
    - cp_first_r
    - cp_last_r
    - prop_r
    - value_r
    argTypes:
    - char*
    - char*
    - unsigned int
    - uint32_t*
    - uint32_t*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 73
    functionName: parse_prop_file_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - t_str_trim
    - str_array_length
    - t_strdup_printf
    - test_has_failed
    - t_strsplit
    - test_failed
    - t_strdup_until
    - strstr
    - str_to_uint32_hex
    linkageType: ''
    returnType: bool
    signature: "bool parse_prop_file_line(const char *line, const char *file, unsigned
      int line_num,\n\t\t     uint32_t *cp_first_r, uint32_t *cp_last_r,\n\t\t     const
      char **prop_r, const char **value_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-unicode-data.c:80,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:86,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:86,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:87,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-data.c:94,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:95,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:99,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:102,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:102,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:103,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:105,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib/test-unicode-data.c:105,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:106,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - cp
    - parsed_mapping
    - case_map
    - case_map_len
    argTypes:
    - uint32_t
    - char**
    - uint32_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 111
    functionName: test_case_mapping
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - uni_is_valid_ucs4
    - test_assert_idx
    - str_array_length
    - test_has_failed
    - test_assert
    - str_to_uint32_hex
    linkageType: ''
    returnType: void
    signature: "void test_case_mapping(uint32_t cp, const char *const *parsed_mapping,\n\t\t
      \ const uint32_t *case_map, unsigned int case_map_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-data.c:115,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-unicode-data.c:116,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:121,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:121,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-data.c:127,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:127,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:132,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:135,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:136,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:136,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:145,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:147,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:147,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:150,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-data.c:151,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/test-unicode-data.c:156,1
    - Dst: unicode_code_point_data_get_casefold_mapping
      Src: /src/dovecot/src/lib/test-unicode-data.c:160,1
    - Dst: test_case_mapping
      Src: /src/dovecot/src/lib/test-unicode-data.c:162,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - line
    - line_num
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 163
    functionName: test_case_folding_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_case_mapping
    - unicode_code_point_get_data
    - t_str_trim
    - strlen
    - str_array_length
    - t_strdup_printf
    - t_strsplit
    - unicode_code_point_data_get_casefold_mapping
    - test_failed
    - str_to_uint32_hex
    linkageType: ''
    returnType: void
    signature: void test_case_folding_line(const char *line, unsigned int line_num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_prop_file_line
      Src: /src/dovecot/src/lib/test-unicode-data.c:170,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:174,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/test-unicode-data.c:176,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - line
    - line_num
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 180
    functionName: test_composition_exclusions_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - unicode_code_point_get_data
    - test_has_failed
    - parse_prop_file_line
    linkageType: ''
    returnType: void
    signature: void test_composition_exclusions_line(const char *line, unsigned int
      line_num)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: parse_prop_file_line
      Src: /src/dovecot/src/lib/test-unicode-data.c:188,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:192,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/test-unicode-data.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:197,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:202,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:207,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:212,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-unicode-data.c:221,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:222,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:223,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:224,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:225,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - line
    - line_num
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 227
    functionName: test_derived_normalization_props_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - strcmp
    - unicode_code_point_get_data
    - parse_prop_file_line
    - test_assert_idx
    - test_has_failed
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_derived_normalization_props_line(const char *line, unsigned
      int line_num)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: parse_prop_file_line
      Src: /src/dovecot/src/lib/test-unicode-data.c:235,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:239,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/test-unicode-data.c:241,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:243,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:244,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:245,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:246,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:247,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:248,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:249,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:250,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:251,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:252,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:253,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:254,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:255,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:256,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:257,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:258,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:259,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:260,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:261,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:262,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:263,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:264,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:265,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:266,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:267,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:268,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 31
    argCount: 2
    argNames:
    - line
    - line_num
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 270
    functionName: test_grapheme_break_property_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - strcmp
    - unicode_code_point_get_data
    - test_assert_idx
    - parse_prop_file_line
    - test_has_failed
    linkageType: ''
    returnType: void
    signature: void test_grapheme_break_property_line(const char *line, unsigned int
      line_num)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: parse_prop_file_line
      Src: /src/dovecot/src/lib/test-unicode-data.c:277,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:281,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/test-unicode-data.c:283,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:285,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:286,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:287,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:288,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:289,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:290,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:291,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:292,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:293,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:294,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:295,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:296,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - line
    - line_num
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 298
    functionName: test_prop_list_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - strcmp
    - unicode_code_point_get_data
    - test_assert_idx
    - parse_prop_file_line
    - test_has_failed
    linkageType: ''
    returnType: void
    signature: void test_prop_list_line(const char *line, unsigned int line_num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-data.c:302,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-unicode-data.c:303,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:308,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:308,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-data.c:314,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:314,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:319,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:322,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:323,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:323,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:332,1
    - Dst: t_str_trim
      Src: /src/dovecot/src/lib/test-unicode-data.c:333,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-data.c:334,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-data.c:335,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/test-unicode-data.c:340,1
    - Dst: unicode_code_point_data_get_uppercase_mapping
      Src: /src/dovecot/src/lib/test-unicode-data.c:344,1
    - Dst: test_case_mapping
      Src: /src/dovecot/src/lib/test-unicode-data.c:346,1
    - Dst: unicode_code_point_data_get_lowercase_mapping
      Src: /src/dovecot/src/lib/test-unicode-data.c:347,1
    - Dst: test_case_mapping
      Src: /src/dovecot/src/lib/test-unicode-data.c:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - line
    - line_num
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 350
    functionName: test_special_casing_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - unicode_code_point_data_get_lowercase_mapping
    - test_case_mapping
    - unicode_code_point_get_data
    - t_str_trim
    - strlen
    - str_array_length
    - t_strdup_printf
    - t_strsplit
    - test_failed
    - unicode_code_point_data_get_uppercase_mapping
    - str_to_uint32_hex
    linkageType: ''
    returnType: void
    signature: void test_special_casing_line(const char *line, unsigned int line_num)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-data.c:356,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-unicode-data.c:357,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:358,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:358,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:367,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:368,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:368,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-data.c:378,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/test-unicode-data.c:382,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:384,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:387,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:388,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:388,1
    - Dst: unicode_general_category_from_string
      Src: /src/dovecot/src/lib/test-unicode-data.c:400,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:402,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:402,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-data.c:408,1
    - Dst: unicode_general_category_is_group
      Src: /src/dovecot/src/lib/test-unicode-data.c:408,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/test-unicode-data.c:414,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:415,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:415,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/test-unicode-data.c:429,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:432,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:432,1
    - Dst: unicode_decomposition_type_from_string
      Src: /src/dovecot/src/lib/test-unicode-data.c:438,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/test-unicode-data.c:439,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-data.c:443,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:452,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:453,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:453,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:460,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:461,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:461,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:468,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:469,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:469,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:482,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/test-unicode-data.c:484,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:486,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:488,1
    - Dst: unicode_code_point_data_get_first_decomposition
      Src: /src/dovecot/src/lib/test-unicode-data.c:496,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unicode-data.c:498,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/test-unicode-data.c:498,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:499,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:502,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:507,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:510,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-data.c:510,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:511,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:513,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib/test-unicode-data.c:513,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:514,1
    - Dst: unicode_code_point_data_get_uppercase_mapping
      Src: /src/dovecot/src/lib/test-unicode-data.c:523,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:525,1
    - Dst: unicode_code_point_data_get_lowercase_mapping
      Src: /src/dovecot/src/lib/test-unicode-data.c:531,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:533,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:536,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 80
    argCount: 2
    argNames:
    - line
    - line_num
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 542
    functionName: test_unicode_data_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - strchr
    - unicode_code_point_data_get_lowercase_mapping
    - test_assert_idx
    - strlen
    - t_strdup_printf
    - test_assert
    - str_to_uint
    - unicode_code_point_get_data
    - unicode_decomposition_type_from_string
    - unicode_general_category_from_string
    - unicode_general_category_is_group
    - uni_is_valid_ucs4
    - test_failed
    - str_to_uint32_hex
    - strcmp
    - unicode_code_point_data_get_first_decomposition
    - str_array_length
    - test_has_failed
    - t_strsplit
    - t_strdup_until
    - unicode_code_point_data_get_uppercase_mapping
    linkageType: ''
    returnType: void
    signature: void test_unicode_data_line(const char *line, unsigned int line_num)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: parse_prop_file_line
      Src: /src/dovecot/src/lib/test-unicode-data.c:550,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:554,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/test-unicode-data.c:556,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:558,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:559,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:560,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:561,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:562,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:563,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:564,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:565,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:566,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:567,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:568,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:569,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:570,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:571,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:572,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:573,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:574,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:575,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:576,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:577,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:578,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:579,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:580,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:581,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:582,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:583,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:584,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:585,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:586,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:587,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:588,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:589,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-data.c:590,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-data.c:591,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 39
    argCount: 2
    argNames:
    - line
    - line_num
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 544
    functionDepth: 2
    functionLinenumber: 544
    functionLinenumberEnd: 593
    functionName: test_word_break_property_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - strcmp
    - unicode_code_point_get_data
    - test_assert_idx
    - parse_prop_file_line
    - test_has_failed
    linkageType: ''
    returnType: void
    signature: void test_word_break_property_line(const char *line, unsigned int line_num)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-unicode-data.c:599,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-unicode-data.c:603,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-unicode-data.c:605,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unicode-data.c:607,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-data.c:607,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/test-unicode-data.c:609,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-data.c:613,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-unicode-data.c:614,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/test-unicode-data.c:620,1
    - Dst: test_line
      Src: /src/dovecot/src/lib/test-unicode-data.c:628,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 595
    functionDepth: 8
    functionLinenumber: 595
    functionLinenumberEnd: 630
    functionName: test_ucd_file
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_fatal
    - t_strdup_printf
    - open
    - test_has_failed
    - i_stream_read_next_line
    - i_stream_create_fd_autoclose
    - test_line
    - t_strconcat
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_ucd_file(const char *filename,\n\t      void (*test_line)(const
      char *line, unsigned int line_num))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-data.c:642,1
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-data.c:643,1
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-data.c:645,1
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-data.c:647,1
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-data.c:649,1
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-data.c:650,1
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-data.c:651,1
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-data.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 654
    functionName: test_unicode_data
    functionSourceFile: /src/dovecot/src/lib/test-unicode-data.c
    functionUses: 0
    functionsReached:
    - test_ucd_file
    linkageType: ''
    returnType: void
    signature: void test_unicode_data(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 18
    functionName: o_stream_null_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-null.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_null_sendv(struct ostream_private *stream,\n\t\t
      \   const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-null.c:25,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-null.c:29,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib/ostream-null.c:30,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/ostream-null.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 20
    functionDepth: 3
    functionLinenumber: 20
    functionLinenumberEnd: 33
    functionName: o_stream_create_null
    functionSourceFile: /src/dovecot/src/lib/ostream-null.c
    functionUses: 0
    functionsReached:
    - o_stream_set_no_error_handling
    - o_stream_create
    - o_stream_set_name
    - i_new
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_null(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-chain.c:45,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/istream-chain.c:50,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream-chain.c:53,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib/istream-chain.c:56,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib/istream-chain.c:60,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - chain
    - stream
    argTypes:
    - struct istream_chain*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 61
    functionName: i_stream_chain_append_internal
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 0
    functionsReached:
    - DLLIST2_APPEND
    - i_stream_set_input_pending
    - i_stream_ref
    - i_new
    - i_stream_set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: "void i_stream_chain_append_internal(struct istream_chain *chain,\n\t\t\t
      \      struct istream *stream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_chain_append_internal
      Src: /src/dovecot/src/lib/istream-chain.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - chain
    - stream
    argTypes:
    - struct istream_chain*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 4
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: i_stream_chain_append
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 3
    functionsReached:
    - i_stream_chain_append_internal
    linkageType: ''
    returnType: void
    signature: void i_stream_chain_append(struct istream_chain *chain, struct istream
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_chain_append_internal
      Src: /src/dovecot/src/lib/istream-chain.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chain
    argTypes:
    - struct istream_chain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: i_stream_chain_append_eof
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 1
    functionsReached:
    - i_stream_chain_append_internal
    linkageType: ''
    returnType: void
    signature: void i_stream_chain_append_eof(struct istream_chain *chain)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-chain.c:78,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream-chain.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 87
    functionName: i_stream_chain_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 0
    functionsReached:
    - i_stream_set_max_buffer_size
    - container_of
    linkageType: ''
    returnType: void
    signature: "void i_stream_chain_set_max_buffer_size(struct iostream_private *stream,\n\t\t\t\t
      \   size_t max_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-chain.c:92,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-chain.c:98,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-chain.c:99,1
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib/istream-chain.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 103
    functionName: i_stream_chain_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_free
    - i_stream_free_buffer
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_chain_destroy(struct iostream_private *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:112,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:113,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-chain.c:116,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib/istream-chain.c:118,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-chain.c:119,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-chain.c:125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:133,1
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib/istream-chain.c:147,1
    - Dst: i_stream_memarea_detach
      Src: /src/dovecot/src/lib/istream-chain.c:148,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-chain.c:149,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib/istream-chain.c:149,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-chain.c:155,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-chain.c:155,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-chain.c:156,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - cstream
    argTypes:
    - struct chain_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 105
    functionDepth: 6
    functionLinenumber: 105
    functionLinenumberEnd: 157
    functionName: i_stream_chain_read_next
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_stream_get_data_size
    - i_stream_get_data
    - i_stream_skip
    - DLLIST2_REMOVE
    - i_stream_seek
    - i_stream_alloc
    - i_stream_memarea_detach
    - i_assert
    - i_free
    - memarea_get_refcount
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void i_stream_chain_read_next(struct chain_istream *cstream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:165,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:187,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-chain.c:190,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - cstream
    argTypes:
    - struct chain_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 192
    functionName: i_stream_chain_skip
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: bool i_stream_chain_skip(struct chain_istream *cstream)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-chain.c:197,1
    - Dst: i_stream_chain_skip
      Src: /src/dovecot/src/lib/istream-chain.c:209,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:211,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:213,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-chain.c:216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:221,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-chain.c:222,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-chain.c:228,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-chain.c:230,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-chain.c:231,1
    - Dst: i_stream_chain_read_next
      Src: /src/dovecot/src/lib/istream-chain.c:237,1
    - Dst: i_stream_chain_read
      Src: /src/dovecot/src/lib/istream-chain.c:239,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-chain.c:242,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:247,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:259,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-chain.c:261,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib/istream-chain.c:261,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:267,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 194
    functionDepth: 7
    functionLinenumber: 194
    functionLinenumberEnd: 272
    functionName: i_stream_chain_read
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 1
    functionsReached:
    - memcpy
    - container_of
    - io_stream_set_error
    - i_stream_chain_read_next
    - i_stream_get_data
    - i_stream_chain_skip
    - i_stream_get_error
    - i_stream_alloc
    - i_stream_chain_read
    - i_stream_get_name
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_chain_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-chain.c:278,1
    - Dst: i_stream_chain_skip
      Src: /src/dovecot/src/lib/istream-chain.c:282,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream-chain.c:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 291
    functionName: i_stream_chain_close
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_close
    - i_stream_chain_skip
    linkageType: ''
    returnType: void
    signature: "void i_stream_chain_close(struct iostream_private *stream,\n\t\t\t\t
      bool close_parent)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-chain.c:300,1
    - Dst: i_stream_default_snapshot
      Src: /src/dovecot/src/lib/istream-chain.c:301,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-chain.c:305,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-chain.c:311,1
    - Dst: struct istream_private*::snapshot
      Src: /src/dovecot/src/lib/istream-chain.c:313,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/istream-chain.c:321,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - stream
    - prev_snapshot
    argTypes:
    - struct istream_private*
    - struct istream_snapshot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 293
    functionDepth: 3
    functionLinenumber: 293
    functionLinenumberEnd: 324
    functionName: i_stream_chain_snapshot
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 0
    functionsReached:
    - container_of
    - struct istream_private*::snapshot
    - i_stream_default_snapshot
    - i_stream_ref
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct istream_snapshot
    signature: "struct istream_snapshot *\ni_stream_chain_snapshot(struct istream_private
      *stream,\n\t\t\tstruct istream_snapshot *prev_snapshot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-chain.c:331,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-chain.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - chain_r
    - max_buffer_size
    argTypes:
    - struct istream_chain**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 326
    functionDepth: 4
    functionLinenumber: 326
    functionLinenumberEnd: 349
    functionName: i_stream_create_chain
    functionSourceFile: /src/dovecot/src/lib/istream-chain.c
    functionUses: 2
    functionsReached:
    - i_stream_create
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *i_stream_create_chain(struct istream_chain **chain_r,\n\t\t\t\t
      \     size_t max_buffer_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-log-throttle.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - new_events_count
    - ioloop
    argTypes:
    - unsigned int
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 14
    functionName: test_log_throttle_callback
    functionSourceFile: /src/dovecot/src/lib/test-log-throttle.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_log_throttle_callback(unsigned int new_events_count,\n\t\t\t\t
      \      struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-log-throttle.c:27,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-log-throttle.c:29,1
    - Dst: log_throttle_init
      Src: /src/dovecot/src/lib/test-log-throttle.c:30,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-log-throttle.c:34,1
    - Dst: log_throttle_accept
      Src: /src/dovecot/src/lib/test-log-throttle.c:34,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-log-throttle.c:36,1
    - Dst: log_throttle_accept
      Src: /src/dovecot/src/lib/test-log-throttle.c:36,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-log-throttle.c:38,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-log-throttle.c:39,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-log-throttle.c:43,1
    - Dst: log_throttle_accept
      Src: /src/dovecot/src/lib/test-log-throttle.c:43,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-log-throttle.c:45,1
    - Dst: log_throttle_accept
      Src: /src/dovecot/src/lib/test-log-throttle.c:45,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-log-throttle.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-log-throttle.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-log-throttle.c:51,1
    - Dst: log_throttle_accept
      Src: /src/dovecot/src/lib/test-log-throttle.c:51,1
    - Dst: log_throttle_deinit
      Src: /src/dovecot/src/lib/test-log-throttle.c:53,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-log-throttle.c:54,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-log-throttle.c:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 16
    functionDepth: 3
    functionLinenumber: 16
    functionLinenumberEnd: 57
    functionName: test_log_throttle
    functionSourceFile: /src/dovecot/src/lib/test-log-throttle.c
    functionUses: 0
    functionsReached:
    - log_throttle_accept
    - test_assert_idx
    - io_loop_destroy
    - io_loop_create
    - test_end
    - test_assert
    - log_throttle_deinit
    - log_throttle_init
    - io_loop_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_log_throttle(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crc32_data_more
      Src: /src/dovecot/src/lib/crc32.h:11,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/crc32.h:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 12
    functionName: crc32_str
    functionSourceFile: /src/dovecot/src/lib/crc32.h
    functionUses: 6
    functionsReached:
    - strlen
    - crc32_data_more
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crc32_str(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crc32_data_more
      Src: /src/dovecot/src/lib/crc32.h:15,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/crc32.h:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - crc
    - str
    argTypes:
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 16
    functionName: crc32_str_more
    functionSourceFile: /src/dovecot/src/lib/crc32.h
    functionUses: 3
    functionsReached:
    - strlen
    - crc32_data_more
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crc32_str_more(uint32_t crc, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - chr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: UTF16_SURROGATE_HIGH
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF16_SURROGATE_HIGH(chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - chr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: UTF16_SURROGATE_LOW
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF16_SURROGATE_LOW(chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: UTF8_IS_START_SEQ
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF8_IS_START_SEQ(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - chr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: UTF16_VALID_HIGH_SURROGATE
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF16_VALID_HIGH_SURROGATE(chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - chr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: UTF16_VALID_LOW_SURROGATE
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTF16_VALID_LOW_SURROGATE(chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTF16_VALID_HIGH_SURROGATE
      Src: /src/dovecot/src/lib/unichar.h:63,1
    - Dst: UTF16_VALID_LOW_SURROGATE
      Src: /src/dovecot/src/lib/unichar.h:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: uni_is_valid_ucs4
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 11
    functionsReached:
    - UTF16_VALID_HIGH_SURROGATE
    - UTF16_VALID_LOW_SURROGATE
    linkageType: ''
    returnType: bool
    signature: bool uni_is_valid_ucs4(unichar_t chr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.h:82,1
    - Dst: uni_is_valid_ucs4
      Src: /src/dovecot/src/lib/unichar.h:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: uni_ucs4_to_utf8_len
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 1
    functionsReached:
    - i_assert
    - uni_is_valid_ucs4
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uni_ucs4_to_utf8_len(unichar_t chr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: uni_utf8_char_bytes
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uni_utf8_char_bytes(unsigned char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.h:197,1
    - Dst: UTF16_VALID_HIGH_SURROGATE
      Src: /src/dovecot/src/lib/unichar.h:197,1
    - Dst: UTF16_VALID_LOW_SURROGATE
      Src: /src/dovecot/src/lib/unichar.h:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - high
    - low
    argTypes:
    - unichar_t
    - unichar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 203
    functionName: uni_join_surrogate
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached:
    - UTF16_VALID_HIGH_SURROGATE
    - i_assert
    - UTF16_VALID_LOW_SURROGATE
    linkageType: ''
    returnType: unichar_t
    signature: unichar_t uni_join_surrogate(unichar_t high, unichar_t low)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.h:207,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unichar.h:208,1
    - Dst: UTF16_SURROGATE_HIGH
      Src: /src/dovecot/src/lib/unichar.h:209,1
    - Dst: UTF16_SURROGATE_LOW
      Src: /src/dovecot/src/lib/unichar.h:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - chr
    - high_r
    - low_r
    argTypes:
    - unichar_t
    - unichar_t*
    - unichar_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: uni_split_surrogate
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached:
    - UTF16_SURROGATE_LOW
    - UTF16_SURROGATE_HIGH
    - i_assert
    linkageType: ''
    returnType: void
    signature: void uni_split_surrogate(unichar_t chr, unichar_t *high_r, unichar_t
      *low_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib/unichar.h:247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - gcsc
    - size_r
    argTypes:
    - struct uni_gc_scanner*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 243
    functionDepth: 4
    functionLinenumber: 243
    functionLinenumberEnd: 251
    functionName: uni_gc_scan_get
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached:
    - uni_gc_scan_shift
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      uni_gc_scan_get(struct uni_gc_scanner *gcsc, size_t *size_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uni_gc_scan_get
      Src: /src/dovecot/src/lib/unichar.h:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - gcsc
    - c
    argTypes:
    - struct uni_gc_scanner*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 255
    functionDepth: 5
    functionLinenumber: 255
    functionLinenumberEnd: 265
    functionName: uni_gc_scan_ascii_equals
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached:
    - uni_gc_scan_get
    linkageType: ''
    returnType: bool
    signature: bool uni_gc_scan_ascii_equals(struct uni_gc_scanner *gcsc, unsigned
      int c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uni_gc_scan_get
      Src: /src/dovecot/src/lib/unichar.h:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - gcsc
    argTypes:
    - struct uni_gc_scanner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 268
    functionDepth: 5
    functionLinenumber: 268
    functionLinenumberEnd: 273
    functionName: uni_gc_scan_at_end
    functionSourceFile: /src/dovecot/src/lib/unichar.h
    functionUses: 0
    functionsReached:
    - uni_gc_scan_get
    linkageType: ''
    returnType: bool
    signature: bool uni_gc_scan_at_end(struct uni_gc_scanner *gcsc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/dovecot/src/lib/test-lib-signals.c:19,1
    - Dst: getpid
      Src: /src/dovecot/src/lib/test-lib-signals.c:19,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-lib-signals.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct test_context_delayed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: kill_timeout
    functionSourceFile: /src/dovecot/src/lib/test-lib-signals.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - kill
    - getpid
    linkageType: ''
    returnType: void
    signature: void kill_timeout(struct test_context_delayed *tctx ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-lib-signals.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tctx
    argTypes:
    - struct test_context_delayed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 28
    functionName: test_timeout
    functionSourceFile: /src/dovecot/src/lib/test-lib-signals.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void test_timeout(struct test_context_delayed *tctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-lib-signals.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 38
    functionName: signal_handler_delayed
    functionSourceFile: /src/dovecot/src/lib/test-lib-signals.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void signal_handler_delayed(const siginfo_t *si ATTR_UNUSED,\n\tvoid
      *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-signals.c:47,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-lib-signals.c:49,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib/test-lib-signals.c:51,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib/test-lib-signals.c:52,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-lib-signals.c:56,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:57,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:58,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:59,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:61,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:62,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-lib-signals.c:63,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib/test-lib-signals.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:68,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-signals.c:70,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-signals.c:72,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-lib-signals.c:74,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-lib-signals.c:76,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib/test-lib-signals.c:78,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib/test-lib-signals.c:79,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:83,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:84,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:85,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:87,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:88,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib/test-lib-signals.c:90,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-lib-signals.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:95,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-signals.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 99
    functionName: test_lib_signals_delayed
    functionSourceFile: /src/dovecot/src/lib/test-lib-signals.c
    functionUses: 0
    functionsReached:
    - i_zero
    - timeout_add_short
    - lib_signals_set_handler
    - io_loop_create
    - lib_signals_init
    - io_loop_destroy
    - test_end
    - test_assert
    - lib_signals_deinit
    - io_loop_run
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_lib_signals_delayed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-signals.c:108,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-lib-signals.c:110,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib/test-lib-signals.c:112,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib/test-lib-signals.c:113,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-lib-signals.c:118,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:119,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:120,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:123,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-lib-signals.c:127,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:128,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:129,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:130,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:132,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:133,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-lib-signals.c:134,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-lib-signals.c:136,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib/test-lib-signals.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:141,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-signals.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 144
    functionName: test_lib_signals_delayed_nested_ioloop
    functionSourceFile: /src/dovecot/src/lib/test-lib-signals.c
    functionUses: 0
    functionsReached:
    - i_zero
    - timeout_add_short
    - lib_signals_set_handler
    - io_loop_create
    - lib_signals_init
    - io_loop_destroy
    - test_end
    - test_assert
    - lib_signals_deinit
    - io_loop_run
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_lib_signals_delayed_nested_ioloop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-signals.c:153,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-lib-signals.c:155,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-lib-signals.c:157,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib/test-lib-signals.c:159,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib/test-lib-signals.c:160,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:164,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:165,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:167,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:168,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-lib-signals.c:172,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:173,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:174,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:178,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:181,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:182,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-lib-signals.c:183,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:186,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:187,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:188,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib/test-lib-signals.c:190,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-lib-signals.c:192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:195,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-signals.c:197,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-lib-signals.c:199,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-lib-signals.c:201,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-lib-signals.c:203,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib/test-lib-signals.c:205,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib/test-lib-signals.c:206,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:210,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:211,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:212,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:213,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:214,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-lib-signals.c:218,1
    - Dst: lib_signals_switch_ioloop
      Src: /src/dovecot/src/lib/test-lib-signals.c:219,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:222,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-lib-signals.c:223,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-lib-signals.c:224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-lib-signals.c:227,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:229,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-lib-signals.c:230,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-lib-signals.c:231,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib/test-lib-signals.c:233,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-lib-signals.c:234,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-lib-signals.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 237
    functionName: test_lib_signals_delayed_no_ioloop_automove
    functionSourceFile: /src/dovecot/src/lib/test-lib-signals.c
    functionUses: 0
    functionsReached:
    - i_zero
    - timeout_add_short
    - lib_signals_set_handler
    - io_loop_create
    - lib_signals_init
    - io_loop_destroy
    - test_end
    - test_assert
    - lib_signals_switch_ioloop
    - lib_signals_deinit
    - io_loop_run
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_lib_signals_delayed_no_ioloop_automove(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_lib_signals_delayed
      Src: /src/dovecot/src/lib/test-lib-signals.c:242,1
    - Dst: test_lib_signals_delayed_nested_ioloop
      Src: /src/dovecot/src/lib/test-lib-signals.c:243,1
    - Dst: test_lib_signals_delayed_no_ioloop_automove
      Src: /src/dovecot/src/lib/test-lib-signals.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 240
    functionDepth: 4
    functionLinenumber: 240
    functionLinenumberEnd: 245
    functionName: test_lib_signals
    functionSourceFile: /src/dovecot/src/lib/test-lib-signals.c
    functionUses: 0
    functionsReached:
    - test_lib_signals_delayed_nested_ioloop
    - test_lib_signals_delayed_no_ioloop_automove
    - test_lib_signals_delayed
    linkageType: ''
    returnType: void
    signature: void test_lib_signals(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/test-ostream-file.c:23,1
    - Dst: test_create_temp_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:24,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:25,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/test-ostream-file.c:26,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-ostream-file.c:28,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/test-ostream-file.c:29,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-ostream-file.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:31,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-file.c:31,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-ostream-file.c:34,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-ostream-file.c:35,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/test-ostream-file.c:36,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-ostream-file.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:38,1
    - Dst: o_stream_pwrite
      Src: /src/dovecot/src/lib/test-ostream-file.c:38,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-ostream-file.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:40,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-ostream-file.c:40,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/test-ostream-file.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:44,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-file.c:44,1
    - Dst: pread
      Src: /src/dovecot/src/lib/test-ostream-file.c:45,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ostream-file.c:47,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:50,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-file.c:50,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-file.c:52,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 15
    functionDepth: 4
    functionLinenumber: 15
    functionLinenumberEnd: 54
    functionName: test_ostream_file_random_once
    functionSourceFile: /src/dovecot/src/lib/test-ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - o_stream_unref
    - o_stream_cork
    - i_rand_limit
    - test_assert
    - i_rand_minmax
    - memcpy
    - o_stream_create_fd
    - random_fill
    - test_create_temp_fd
    - i_close_fd
    - i_fatal
    - o_stream_flush
    - o_stream_pwrite
    - memset
    - i_assert
    - o_stream_finish
    - o_stream_send
    - memcmp
    - pread
    linkageType: ''
    returnType: void
    signature: void test_ostream_file_random_once(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-file.c:60,1
    - Dst: test_ostream_file_random_once
      Src: /src/dovecot/src/lib/test-ostream-file.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 56
    functionDepth: 5
    functionLinenumber: 56
    functionLinenumberEnd: 63
    functionName: test_ostream_file_random
    functionSourceFile: /src/dovecot/src/lib/test-ostream-file.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_ostream_file_random_once
    linkageType: ''
    returnType: void
    signature: void test_ostream_file_random(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-file.c:75,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-ostream-file.c:78,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-ostream-file.c:79,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ostream-file.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:82,1
    - Dst: write
      Src: /src/dovecot/src/lib/test-ostream-file.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:83,1
    - Dst: lseek
      Src: /src/dovecot/src/lib/test-ostream-file.c:83,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/test-ostream-file.c:84,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-ostream-file.c:87,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-ostream-file.c:88,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ostream-file.c:90,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:91,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-ostream-file.c:94,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/test-ostream-file.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:96,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-ostream-file.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:98,1
    - Dst: pread
      Src: /src/dovecot/src/lib/test-ostream-file.c:98,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-file.c:99,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-file.c:100,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-file.c:103,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:105,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib/test-ostream-file.c:107,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-ostream-file.c:108,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/test-ostream-file.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:110,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-ostream-file.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:112,1
    - Dst: pread
      Src: /src/dovecot/src/lib/test-ostream-file.c:112,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-file.c:113,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-file.c:114,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-file.c:115,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-ostream-file.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:119,1
    - Dst: pwrite
      Src: /src/dovecot/src/lib/test-ostream-file.c:119,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:120,1
    - Dst: o_stream_seek
      Src: /src/dovecot/src/lib/test-ostream-file.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:122,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-ostream-file.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:124,1
    - Dst: pread
      Src: /src/dovecot/src/lib/test-ostream-file.c:124,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-file.c:125,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-file.c:126,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-file.c:128,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:129,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-ostream-file.c:131,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-ostream-file.c:132,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-file.c:133,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 134
    functionName: test_ostream_file_send_istream_file
    functionSourceFile: /src/dovecot/src/lib/test-ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_seek
    - write
    - i_unlink
    - i_stream_seek
    - test_assert
    - memcpy
    - o_stream_create_fd
    - o_stream_send_istream
    - i_close_fd
    - i_fatal
    - test_dir_prepend
    - test_end
    - i_stream_destroy
    - pwrite
    - open
    - i_stream_create_fd_autoclose
    - o_stream_destroy
    - i_stream_create_fd
    - lseek
    - i_stream_create_limit
    - memcmp
    - i_stream_unref
    - pread
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_file_send_istream_file(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-file.c:144,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-ostream-file.c:147,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-ostream-file.c:148,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ostream-file.c:150,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:151,1
    - Dst: write
      Src: /src/dovecot/src/lib/test-ostream-file.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:152,1
    - Dst: lseek
      Src: /src/dovecot/src/lib/test-ostream-file.c:152,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/test-ostream-file.c:153,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:156,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib/test-ostream-file.c:156,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/test-ostream-file.c:157,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-ostream-file.c:160,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/test-ostream-file.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:162,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-ostream-file.c:162,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:164,1
    - Dst: read
      Src: /src/dovecot/src/lib/test-ostream-file.c:164,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-file.c:165,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-file.c:166,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-ostream-file.c:169,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/test-ostream-file.c:170,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:171,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-ostream-file.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:173,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-file.c:174,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-file.c:176,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-file.c:177,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:178,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-ostream-file.c:180,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-file.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 136
    functionDepth: 4
    functionLinenumber: 136
    functionLinenumberEnd: 182
    functionName: test_ostream_file_send_istream_sendfile
    functionSourceFile: /src/dovecot/src/lib/test-ostream-file.c
    functionUses: 0
    functionsReached:
    - write
    - i_unlink
    - i_stream_seek
    - test_assert
    - o_stream_send_istream
    - i_close_fd
    - i_fatal
    - test_dir_prepend
    - test_end
    - open
    - o_stream_create_fd_autoclose
    - i_stream_create_fd_autoclose
    - socketpair
    - i_assert
    - o_stream_destroy
    - lseek
    - i_stream_create_limit
    - read
    - memcmp
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_file_send_istream_sendfile(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-file.c:186,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-ostream-file.c:188,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-ostream-file.c:189,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-ostream-file.c:191,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:192,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ostream-file.c:195,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ostream-file.c:196,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/test-ostream-file.c:201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:202,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/test-ostream-file.c:203,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:204,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-file.c:205,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-ostream-file.c:207,1
    - Dst: pread
      Src: /src/dovecot/src/lib/test-ostream-file.c:208,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:209,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-file.c:210,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-file.c:210,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:211,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-ostream-file.c:213,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-file.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 184
    functionDepth: 4
    functionLinenumber: 184
    functionLinenumberEnd: 215
    functionName: test_ostream_file_send_over_iov_max
    functionSourceFile: /src/dovecot/src/lib/test-ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - o_stream_sendv
    - i_close_fd
    - i_fatal
    - open
    - test_dir_prepend
    - i_unlink
    - test_end
    - o_stream_destroy
    - test_assert
    - memcmp
    - pread
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_file_send_over_iov_max(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ostream_file_random
      Src: /src/dovecot/src/lib/test-ostream-file.c:219,1
    - Dst: test_ostream_file_send_istream_file
      Src: /src/dovecot/src/lib/test-ostream-file.c:220,1
    - Dst: test_ostream_file_send_istream_sendfile
      Src: /src/dovecot/src/lib/test-ostream-file.c:221,1
    - Dst: test_ostream_file_send_over_iov_max
      Src: /src/dovecot/src/lib/test-ostream-file.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 217
    functionDepth: 6
    functionLinenumber: 217
    functionLinenumberEnd: 223
    functionName: test_ostream_file
    functionSourceFile: /src/dovecot/src/lib/test-ostream-file.c
    functionUses: 0
    functionsReached:
    - test_ostream_file_random
    - test_ostream_file_send_over_iov_max
    - test_ostream_file_send_istream_file
    - test_ostream_file_send_istream_sendfile
    linkageType: ''
    returnType: void
    signature: void test_ostream_file(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-file.c:231,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-ostream-file.c:232,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/test-ostream-file.c:233,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib/test-ostream-file.c:234,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-ostream-file.c:235,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-ostream-file.c:236,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-file.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 241
    functionName: fatal_ostream_file
    functionSourceFile: /src/dovecot/src/lib/test-ostream-file.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - o_stream_set_name
    - test_end
    - test_expect_fatal_string
    - o_stream_nsend_str
    - o_stream_destroy
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_ostream_file(unsigned int stage)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: child_wait_add_pid
      Src: /src/dovecot/src/lib/child-wait.c:37,1
    - Dst: child_wait_free
      Src: /src/dovecot/src/lib/child-wait.c:41,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib/child-wait.c:52,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib/child-wait.c:53,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib/child-wait.c:55,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib/child-wait.c:60,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/child-wait.c:63,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 64
    functionName: i_new
    functionSourceFile: /src/dovecot/src/lib/child-wait.c
    functionUses: 434
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - hash_table_remove
    - child_wait_free
    - i_free
    - child_wait_add_pid
    linkageType: ''
    returnType: void
    signature: "void i_new(struct child_wait, 1);\n\twait->callback = callback;\n\twait->context
      = context;\n\n\tif (pid != (pid_t)-1)\n\t\tchild_wait_add_pid(wait, pid);\n\treturn
      wait;\n}\n\nvoid child_wait_free(struct child_wait **_wait)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib/child-wait.c:69,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/child-wait.c:69,1
    - Dst: lib_signals_set_expected
      Src: /src/dovecot/src/lib/child-wait.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - wait
    - pid
    argTypes:
    - struct child_wait*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: child_wait_add_pid
    functionSourceFile: /src/dovecot/src/lib/child-wait.c
    functionUses: 1
    functionsReached:
    - hash_table_insert
    - POINTER_CAST
    - lib_signals_set_expected
    linkageType: ''
    returnType: void
    signature: void child_wait_add_pid(struct child_wait *wait, pid_t pid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib/child-wait.c:77,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/child-wait.c:77,1
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib/child-wait.c:79,1
    - Dst: lib_signals_set_expected
      Src: /src/dovecot/src/lib/child-wait.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - wait
    - pid
    argTypes:
    - struct child_wait*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 81
    functionName: child_wait_remove_pid
    functionSourceFile: /src/dovecot/src/lib/child-wait.c
    functionUses: 0
    functionsReached:
    - hash_table_count
    - POINTER_CAST
    - hash_table_remove
    - lib_signals_set_expected
    linkageType: ''
    returnType: void
    signature: void child_wait_remove_pid(struct child_wait *wait, pid_t pid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/dovecot/src/lib/child-wait.c:88,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib/child-wait.c:89,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/child-wait.c:90,1
    - Dst: child_wait_remove_pid
      Src: /src/dovecot/src/lib/child-wait.c:92,1
    - Dst: struct child_wait_status::wait::callback
      Src: /src/dovecot/src/lib/child-wait.c:93,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/child-wait.c:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 99
    functionName: sigchld_handler
    functionSourceFile: /src/dovecot/src/lib/child-wait.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - i_error
    - child_wait_remove_pid
    - struct child_wait_status::wait::callback
    - hash_table_lookup
    - waitpid
    linkageType: ''
    returnType: void
    signature: void sigchld_handler(const siginfo_t *si ATTR_UNUSED, void *context
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_switch_ioloop
      Src: /src/dovecot/src/lib/child-wait.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: child_wait_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib/child-wait.c
    functionUses: 0
    functionsReached:
    - lib_signals_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void child_wait_switch_ioloop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: child_wait_switch_ioloop
      Src: /src/dovecot/src/lib/child-wait.c:109,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib/child-wait.c:113,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib/child-wait.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: child_wait_init
    functionSourceFile: /src/dovecot/src/lib/child-wait.c
    functionUses: 2
    functionsReached:
    - lib_signals_set_handler
    - hash_table_create_direct
    - child_wait_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void child_wait_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/child-wait.c:125,1
    - Dst: child_wait_switch_ioloop
      Src: /src/dovecot/src/lib/child-wait.c:127,1
    - Dst: lib_signals_unset_handler
      Src: /src/dovecot/src/lib/child-wait.c:131,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib/child-wait.c:133,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib/child-wait.c:134,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/child-wait.c:135,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib/child-wait.c:136,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib/child-wait.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 139
    functionName: child_wait_deinit
    functionSourceFile: /src/dovecot/src/lib/child-wait.c
    functionUses: 2
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_destroy
    - hash_table_iterate_init
    - lib_signals_unset_handler
    - i_assert
    - i_free
    - child_wait_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void child_wait_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - list
    - ','
    - item
    - ','
    - prev
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 11
    functionName: DLLIST_PREPEND_FULL
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST_PREPEND_FULL(list, item, prev, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - list
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: DLLIST_PREPEND
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 50
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST_PREPEND(list, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - list
    - ','
    - item
    - ','
    - prev
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 26
    functionName: DLLIST_REMOVE_FULL
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST_REMOVE_FULL(list, item, prev, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - list
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: DLLIST_REMOVE
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 56
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST_REMOVE(list, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - head
    - ','
    - tail
    - ','
    - item
    - ','
    - prev
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: DLLIST2_PREPEND_FULL
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_PREPEND_FULL(head, tail, item, prev, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - tail
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: DLLIST2_PREPEND
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_PREPEND(head, tail, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - head
    - ','
    - tail
    - ','
    - item
    - ','
    - prev
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: DLLIST2_APPEND_FULL
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_APPEND_FULL(head, tail, item, prev, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - tail
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: DLLIST2_APPEND
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_APPEND(head, tail, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - head
    - ','
    - tail
    - ','
    - after
    - ','
    - item
    - ','
    - prev
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: DLLIST2_INSERT_AFTER_FULL
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_INSERT_AFTER_FULL(head, tail, after, item, prev, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - tail
    - ','
    - after
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: DLLIST2_INSERT_AFTER
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_INSERT_AFTER(head, tail, after, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - head
    - ','
    - tail
    - ','
    - item
    - ','
    - prev
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 77
    functionName: DLLIST2_REMOVE_FULL
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_REMOVE_FULL(head, tail, item, prev, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - tail
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: DLLIST2_REMOVE
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_REMOVE(head, tail, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - head1
    - ','
    - tail1
    - ','
    - head2
    - ','
    - tail2
    - ','
    - prev
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: DLLIST2_JOIN_FULL
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_JOIN_FULL(head1, tail1, head2, tail2, prev, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head1
    - ','
    - tail1
    - ','
    - head2
    - ','
    - tail2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: DLLIST2_JOIN
    functionSourceFile: /src/dovecot/src/lib/llist.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLLIST2_JOIN(head1, tail1, head2, tail2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/sort.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - member
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 12
    functionName: search_strcmp
    functionSourceFile: /src/dovecot/src/lib/sort.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int search_strcmp(const char *key, const char *const *member)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/sort.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - member
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 17
    functionName: search_strcasecmp
    functionSourceFile: /src/dovecot/src/lib/sort.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int search_strcasecmp(const char *key, const char *const *member)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/iostream.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 15
    functionName: iostream_fd_init
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct iostream_fd
    signature: struct iostream_fd *iostream_fd_init(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ref
    argTypes:
    - struct iostream_fd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 21
    functionName: iostream_fd_ref
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void iostream_fd_ref(struct iostream_fd *ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream.c:28,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _ref
    argTypes:
    - struct iostream_fd**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 34
    functionName: iostream_fd_unref
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: bool
    signature: bool iostream_fd_unref(struct iostream_fd **_ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_fd_init
      Src: /src/dovecot/src/lib/iostream.c:41,1
    - Dst: i_stream_create_fd_ref_autoclose
      Src: /src/dovecot/src/lib/iostream.c:42,1
    - Dst: o_stream_create_fd_ref_autoclose
      Src: /src/dovecot/src/lib/iostream.c:43,1
    - Dst: iostream_fd_unref
      Src: /src/dovecot/src/lib/iostream.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - fd
    - max_in_buffer_size
    - max_out_buffer_size
    - input_r
    - output_r
    argTypes:
    - int*
    - size_t
    - size_t
    - struct istream**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 4
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: io_stream_create_fd_autoclose
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 1
    functionsReached:
    - iostream_fd_unref
    - o_stream_create_fd_ref_autoclose
    - iostream_fd_init
    - i_stream_create_fd_ref_autoclose
    linkageType: ''
    returnType: void
    signature: "void io_stream_create_fd_autoclose(int *fd, size_t max_in_buffer_size,\n\t\t\t\t
      \  size_t max_out_buffer_size,\n\t\t\t\t   struct istream **input_r,\n\t\t\t\t
      \  struct ostream **output_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: io_stream_default_close
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void io_stream_default_close(struct iostream_private *stream ATTR_UNUSED,\n\t\t\tbool
      close_parent ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: io_stream_default_destroy
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_stream_default_destroy(struct iostream_private *stream ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 68
    functionName: io_stream_init
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_stream_init(struct iostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: io_stream_ref
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void io_stream_ref(struct iostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream.c:79,1
    - Dst: struct iostream_private*::close
      Src: /src/dovecot/src/lib/iostream.c:83,1
    - Dst: struct iostream_private*::destroy
      Src: /src/dovecot/src/lib/iostream.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 86
    functionName: io_stream_unref
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached:
    - struct iostream_private*::destroy
    - i_assert
    - struct iostream_private*::close
    linkageType: ''
    returnType: bool
    signature: bool io_stream_unref(struct iostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/iostream.c:92,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/iostream.c:93,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/iostream.c:95,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream.c:98,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream.c:99,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 101
    functionName: io_stream_free
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - i_free
    - array_free
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void io_stream_free(struct iostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct iostream_private*::close
      Src: /src/dovecot/src/lib/iostream.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: io_stream_close
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached:
    - struct iostream_private*::close
    linkageType: ''
    returnType: void
    signature: void io_stream_close(struct iostream_private *stream, bool close_parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct iostream_private*::set_max_buffer_size
      Src: /src/dovecot/src/lib/iostream.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: io_stream_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached:
    - struct iostream_private*::set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: "void io_stream_set_max_buffer_size(struct iostream_private *stream,\n\t\t\t\t
      \  size_t max_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/iostream.c:119,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/iostream.c:120,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib/iostream.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - context
    argTypes:
    - struct iostream_private*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 124
    functionName: io_stream_add_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - array_is_created
    - array_append_space
    linkageType: ''
    returnType: void
    signature: "void io_stream_add_destroy_callback(struct iostream_private *stream,\n\t\t\t\t
      \   void (*callback)(void *), void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib/iostream.c:132,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/iostream.c:135,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/iostream.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 140
    functionName: io_stream_remove_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached:
    - array_delete
    - array_get
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void io_stream_remove_destroy_callback(struct iostream_private *stream,\n\t\t\t\t
      \      void (*callback)(void *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/iostream.c:147,1
    - Dst: io_stream_set_verror
      Src: /src/dovecot/src/lib/iostream.c:148,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/iostream.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - fmt
    argTypes:
    - struct iostream_private*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: io_stream_set_error
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 40
    functionsReached:
    - va_end
    - io_stream_set_verror
    - va_start
    linkageType: ''
    returnType: void
    signature: "void io_stream_set_error(struct iostream_private *stream,\n\t\t\t
      const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib/iostream.c:157,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - fmt
    - args
    argTypes:
    - struct iostream_private*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 160
    functionName: io_stream_set_verror
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 4
    functionsReached:
    - i_free
    - i_strdup_vprintf
    linkageType: ''
    returnType: void
    signature: "void io_stream_set_verror(struct iostream_private *stream,\n\t\t\t
      \ const char *fmt, va_list args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/iostream.c:169,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/iostream.c:172,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream.c:181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 182
    functionName: io_stream_get_disconnect_reason
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 8
    functionsReached:
    - i_stream_get_error
    - o_stream_get_error
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *io_stream_get_disconnect_reason(struct istream *input,\n\t\t\t\t\t
      \   struct ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct iostream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: io_stream_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void io_stream_switch_ioloop_to(struct iostream_private *stream,\n\t\t\t\tstruct
      ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: io_stream_get_ioloop
    functionSourceFile: /src/dovecot/src/lib/iostream.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: struct ioloop
    signature: struct ioloop *io_stream_get_ioloop(struct iostream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ioloop-iolist.c:22,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop-iolist.c:26,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-iolist.c:30,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - list
    - io
    argTypes:
    - struct io_list*
    - struct io_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 40
    functionName: ioloop_iolist_add
    functionSourceFile: /src/dovecot/src/lib/ioloop-iolist.c
    functionUses: 1
    functionsReached:
    - i_panic
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: bool ioloop_iolist_add(struct io_list *list, struct io_file *io)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - list
    - io
    argTypes:
    - struct io_list*
    - struct io_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 56
    functionName: ioloop_iolist_del
    functionSourceFile: /src/dovecot/src/lib/ioloop-iolist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ioloop_iolist_del(struct io_list *list, struct io_file *io)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: SHA1Init
    functionSourceFile: /src/dovecot/src/lib/sha1.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA1Init(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: SHA1Update
    functionSourceFile: /src/dovecot/src/lib/sha1.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA1Update(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: SHA1Final
    functionSourceFile: /src/dovecot/src/lib/sha1.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA1Final(x, y)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - guid_128_t
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 21
    functionName: reverse_guid_128_cmp
    functionSourceFile: /src/dovecot/src/lib/test-guid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reverse_guid_128_cmp(const guid_128_t a, const guid_128_t b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: le32_to_cpu_unaligned
      Src: /src/dovecot/src/lib/test-guid.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - g
    argTypes:
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 30
    functionName: guid_128_has_sane_nsecs
    functionSourceFile: /src/dovecot/src/lib/test-guid.c
    functionUses: 0
    functionsReached:
    - le32_to_cpu_unaligned
    linkageType: ''
    returnType: bool
    signature: bool guid_128_has_sane_nsecs(const guid_128_t g)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: set_fake_time
    functionSourceFile: /src/dovecot/src/lib/test-guid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_fake_time(time_t sec, long usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:64,1
    - Dst: set_fake_time
      Src: /src/dovecot/src/lib/test-guid.c:65,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:66,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:73,1
    - Dst: reverse_guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:74,1
    - Dst: guid_128_has_sane_nsecs
      Src: /src/dovecot/src/lib/test-guid.c:74,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:76,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:81,1
    - Dst: set_fake_time
      Src: /src/dovecot/src/lib/test-guid.c:86,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:89,1
    - Dst: reverse_guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:90,1
    - Dst: guid_128_has_sane_nsecs
      Src: /src/dovecot/src/lib/test-guid.c:90,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:92,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:97,1
    - Dst: set_fake_time
      Src: /src/dovecot/src/lib/test-guid.c:102,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:105,1
    - Dst: reverse_guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:106,1
    - Dst: guid_128_has_sane_nsecs
      Src: /src/dovecot/src/lib/test-guid.c:106,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:108,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:117,1
    - Dst: set_fake_time
      Src: /src/dovecot/src/lib/test-guid.c:118,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:124,1
    - Dst: reverse_guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:125,1
    - Dst: guid_128_has_sane_nsecs
      Src: /src/dovecot/src/lib/test-guid.c:125,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:127,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:133,1
    - Dst: set_fake_time
      Src: /src/dovecot/src/lib/test-guid.c:134,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:136,1
    - Dst: reverse_guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:137,1
    - Dst: guid_128_has_sane_nsecs
      Src: /src/dovecot/src/lib/test-guid.c:137,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:138,1
    - Dst: set_fake_time
      Src: /src/dovecot/src/lib/test-guid.c:141,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:143,1
    - Dst: reverse_guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:144,1
    - Dst: guid_128_has_sane_nsecs
      Src: /src/dovecot/src/lib/test-guid.c:144,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:149,1
    - Dst: set_fake_time
      Src: /src/dovecot/src/lib/test-guid.c:150,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:152,1
    - Dst: reverse_guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:153,1
    - Dst: guid_128_has_sane_nsecs
      Src: /src/dovecot/src/lib/test-guid.c:153,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:154,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:159,1
    - Dst: set_fake_time
      Src: /src/dovecot/src/lib/test-guid.c:160,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:162,1
    - Dst: reverse_guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:162,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:163,1
    - Dst: guid_128_has_sane_nsecs
      Src: /src/dovecot/src/lib/test-guid.c:163,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 168
    functionName: test_ioloop_guid_128_generate
    functionSourceFile: /src/dovecot/src/lib/test-guid.c
    functionUses: 0
    functionsReached:
    - set_fake_time
    - guid_128_generate
    - test_end
    - test_assert
    - reverse_guid_128_cmp
    - guid_128_has_sane_nsecs
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ioloop_guid_128_generate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:182,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:183,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:185,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib/test-guid.c:185,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:186,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:186,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:187,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:189,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:190,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib/test-guid.c:190,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:191,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib/test-guid.c:191,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:192,1
    - Dst: guid_128_empty
      Src: /src/dovecot/src/lib/test-guid.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:194,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib/test-guid.c:194,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:195,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:197,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/lib/test-guid.c:198,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:199,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib/test-guid.c:199,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:200,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib/test-guid.c:200,1
    - Dst: guid_128_copy
      Src: /src/dovecot/src/lib/test-guid.c:201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:202,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib/test-guid.c:202,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:203,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib/test-guid.c:203,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:204,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:206,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib/test-guid.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:208,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/test-guid.c:208,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:209,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib/test-guid.c:209,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:210,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-guid.c:212,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-guid.c:214,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:217,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/test-guid.c:217,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:218,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib/test-guid.c:218,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:221,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/test-guid.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:224,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/test-guid.c:224,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:228,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/test-guid.c:228,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-guid.c:230,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:237,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/test-guid.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:238,1
    - Dst: guid_128_equals
      Src: /src/dovecot/src/lib/test-guid.c:238,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:241,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/test-guid.c:241,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:243,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/test-guid.c:243,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:245,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib/test-guid.c:245,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:246,1
    - Dst: guid_128_is_empty
      Src: /src/dovecot/src/lib/test-guid.c:246,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:247,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib/test-guid.c:247,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:248,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib/test-guid.c:248,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:249,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:249,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:250,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib/test-guid.c:250,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:251,1
    - Dst: guid_128_cmp
      Src: /src/dovecot/src/lib/test-guid.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:252,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-guid.c:252,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib/test-guid.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:253,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-guid.c:253,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib/test-guid.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:254,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-guid.c:254,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib/test-guid.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:256,1
    - Dst: guid_128_from_uuid_string
      Src: /src/dovecot/src/lib/test-guid.c:256,1
    - Dst: guid_128_uuid4_generate
      Src: /src/dovecot/src/lib/test-guid.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-guid.c:262,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-guid.c:264,1
    - Dst: test_ioloop_guid_128_generate
      Src: /src/dovecot/src/lib/test-guid.c:266,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 170
    functionDepth: 4
    functionLinenumber: 170
    functionLinenumberEnd: 267
    functionName: test_guid
    functionSourceFile: /src/dovecot/src/lib/test-guid.c
    functionUses: 0
    functionsReached:
    - strcmp
    - guid_128_to_uuid_string
    - i_assert
    - guid_128_cmp
    - guid_128_from_uuid_string
    - guid_128_to_string
    - guid_128_generate
    - guid_128_equals
    - guid_128_copy
    - test_end
    - guid_128_empty
    - test_ioloop_guid_128_generate
    - guid_128_from_string
    - test_assert
    - guid_128_uuid4_generate
    - memset
    - guid_128_is_empty
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_guid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 5
    functionName: ARRAY
    functionSourceFile: /src/dovecot/src/lib/array-decl.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY(array_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - array_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 9
    functionName: ARRAY_DEFINE_TYPE
    functionSourceFile: /src/dovecot/src/lib/array-decl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_DEFINE_TYPE(name, array_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: ARRAY_TYPE
    functionSourceFile: /src/dovecot/src/lib/array-decl.h
    functionUses: 216
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARRAY_TYPE(name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:11,1
    - Dst: boundaries_permute
      Src: /src/dovecot/src/lib/test-seq-range-array.c:20,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:25,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:27,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/test-seq-range-array.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:33,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - input
    - i
    - count
    argTypes:
    - uint32_t*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 34
    functionName: boundaries_permute
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 1
    functionsReached:
    - seq_range_array_add
    - array_get
    - t_array_init
    - ARRAY_TYPE
    - boundaries_permute
    - test_assert
    linkageType: ''
    returnType: void
    signature: void boundaries_permute(uint32_t *input, unsigned int i, unsigned int
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boundaries_permute
      Src: /src/dovecot/src/lib/test-seq-range-array.c:40,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-seq-range-array.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: test_seq_range_array_add_boundaries
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    - boundaries_permute
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_add_boundaries(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:45,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-range-array.c:47,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:48,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:49,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:50,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:52,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:52,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:55,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:55,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:56,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:57,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:57,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-seq-range-array.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 59
    functionName: test_seq_range_array_add_merge
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - seq_range_array_add_range
    - test_end
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_add_merge(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:63,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-range-array.c:68,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:69,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:70,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:71,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-seq-range-array.c:72,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:73,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-seq-range-array.c:75,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/test-seq-range-array.c:76,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/test-seq-range-array.c:77,1
    - Dst: seq_range_array_merge_n
      Src: /src/dovecot/src/lib/test-seq-range-array.c:78,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:79,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:79,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/test-seq-range-array.c:79,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-seq-range-array.c:79,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:81,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:83,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib/test-seq-range-array.c:83,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:84,1
    - Dst: seq_range_array_invert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:86,1
    - Dst: seq_range_array_intersect
      Src: /src/dovecot/src/lib/test-seq-range-array.c:87,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:88,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:88,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-seq-range-array.c:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 91
    functionName: test_seq_range_array_merge_n
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - seq_range_array_iter_nth
    - test_assert_idx
    - seq_range_array_iter_init
    - I_MIN
    - seq_range_array_invert
    - seq_range_array_intersect
    - seq_range_array_merge_n
    - test_end
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - seq_range_count
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_merge_n(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:95,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-range-array.c:98,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:99,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:100,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:101,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:103,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:103,1
    - Dst: seq_range_array_remove_nth
      Src: /src/dovecot/src/lib/test-seq-range-array.c:105,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/test-seq-range-array.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:106,1
    - Dst: seq_range_array_remove_nth
      Src: /src/dovecot/src/lib/test-seq-range-array.c:108,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/test-seq-range-array.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:109,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:110,1
    - Dst: seq_range_array_remove_nth
      Src: /src/dovecot/src/lib/test-seq-range-array.c:112,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:115,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:115,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-seq-range-array.c:116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 93
    functionDepth: 3
    functionLinenumber: 93
    functionLinenumberEnd: 117
    functionName: test_seq_range_array_remove_nth
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - seq_range_array_add_range
    - seq_range_array_remove_nth
    - array_idx
    - array_front
    - test_end
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_remove_nth(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:121,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-range-array.c:124,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:125,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:128,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:128,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/test-seq-range-array.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:129,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:132,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:133,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:133,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:134,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:134,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:137,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:138,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:138,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:141,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:142,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:142,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:145,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:146,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:147,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:148,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:149,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:149,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-seq-range-array.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 152
    functionName: test_seq_range_array_remove_range
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add_range
    - array_front
    - test_end
    - array_count
    - t_array_init
    - test_assert
    - ARRAY_TYPE
    - seq_range_array_remove_range
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_remove_range(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:159,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:166,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-seq-range-array.c:167,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-seq-range-array.c:169,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-seq-range-array.c:170,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-seq-range-array.c:171,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:174,1
    - Dst: seq_range_array_add_range_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:179,1
    - Dst: seq_range_array_remove
      Src: /src/dovecot/src/lib/test-seq-range-array.c:188,1
    - Dst: seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:193,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/test-seq-range-array.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:218,1
    - Dst: test_out
      Src: /src/dovecot/src/lib/test-seq-range-array.c:226,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib/test-seq-range-array.c:228,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-seq-range-array.c:229,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/test-seq-range-array.c:231,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 232
    functionName: test_seq_range_array_random
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - seq_range_array_add
    - test_out_reason
    - array_get
    - t_strdup_printf
    - test_out
    - i_rand_limit
    - ARRAY_TYPE
    - seq_range_array_add_range_count
    - seq_range_array_remove_range
    - memset
    - i_assert
    - array_free
    - seq_range_array_remove
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_random(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:236,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:241,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:242,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/test-seq-range-array.c:244,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:247,1
    - Dst: seq_range_array_invert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:249,1
    - Dst: seq_range_array_iter_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:252,1
    - Dst: seq_range_array_iter_nth
      Src: /src/dovecot/src/lib/test-seq-range-array.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:254,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:258,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:259,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - min
    - max
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 261
    functionName: test_seq_range_array_invert_minmax
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - seq_range_array_iter_nth
    - seq_range_array_iter_init
    - test_assert_idx
    - seq_range_array_invert
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - test_assert
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_invert_minmax(uint32_t min, uint32_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-range-array.c:265,1
    - Dst: test_seq_range_array_invert_minmax
      Src: /src/dovecot/src/lib/test-seq-range-array.c:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 263
    functionDepth: 3
    functionLinenumber: 263
    functionLinenumberEnd: 271
    functionName: test_seq_range_array_invert
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - test_seq_range_array_invert_minmax
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_invert(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:302,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-range-array.c:306,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-seq-range-array.c:307,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:308,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:310,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:312,1
    - Dst: seq_range_array_invert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:313,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/test-seq-range-array.c:315,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:317,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:320,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-seq-range-array.c:322,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:324,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:325,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 328
    functionName: test_seq_range_array_invert_edges
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add_range
    - test_assert_idx
    - seq_range_array_invert
    - array_get
    - t_array_init
    - ARRAY_TYPE
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_invert_edges(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:345,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:349,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:350,1
    - Dst: test_seq_range_create
      Src: /src/dovecot/src/lib/test-seq-range-array.c:352,1
    - Dst: test_seq_range_create
      Src: /src/dovecot/src/lib/test-seq-range-array.c:354,1
    - Dst: seq_range_array_have_common
      Src: /src/dovecot/src/lib/test-seq-range-array.c:355,1
    - Dst: test_out
      Src: /src/dovecot/src/lib/test-seq-range-array.c:361,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 362
    functionName: test_seq_range_array_have_common
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - test_seq_range_create
    - test_out
    - t_array_init
    - ARRAY_TYPE
    - seq_range_array_have_common
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array_have_common(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_seq_range_array_add_boundaries
      Src: /src/dovecot/src/lib/test-seq-range-array.c:366,1
    - Dst: test_seq_range_array_add_merge
      Src: /src/dovecot/src/lib/test-seq-range-array.c:367,1
    - Dst: test_seq_range_array_merge_n
      Src: /src/dovecot/src/lib/test-seq-range-array.c:368,1
    - Dst: test_seq_range_array_remove_nth
      Src: /src/dovecot/src/lib/test-seq-range-array.c:369,1
    - Dst: test_seq_range_array_remove_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:370,1
    - Dst: test_seq_range_array_invert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:371,1
    - Dst: test_seq_range_array_invert_edges
      Src: /src/dovecot/src/lib/test-seq-range-array.c:372,1
    - Dst: test_seq_range_array_have_common
      Src: /src/dovecot/src/lib/test-seq-range-array.c:373,1
    - Dst: test_seq_range_array_random
      Src: /src/dovecot/src/lib/test-seq-range-array.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 364
    functionDepth: 4
    functionLinenumber: 364
    functionLinenumberEnd: 375
    functionName: test_seq_range_array
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - test_seq_range_array_add_boundaries
    - test_seq_range_array_have_common
    - test_seq_range_array_invert_edges
    - test_seq_range_array_random
    - test_seq_range_array_merge_n
    - test_seq_range_array_invert
    - test_seq_range_array_add_merge
    - test_seq_range_array_remove_nth
    - test_seq_range_array_remove_range
    linkageType: ''
    returnType: void
    signature: void test_seq_range_array(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/test-seq-range-array.c:379,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-seq-range-array.c:382,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-range-array.c:385,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-seq-range-array.c:386,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:387,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:390,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-seq-range-array.c:391,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:392,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib/test-seq-range-array.c:395,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-seq-range-array.c:396,1
    - Dst: seq_range_array_add
      Src: /src/dovecot/src/lib/test-seq-range-array.c:397,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib/test-seq-range-array.c:400,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-seq-range-array.c:402,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-seq-range-array.c:403,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:403,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib/test-seq-range-array.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-range-array.c:408,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:408,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib/test-seq-range-array.c:410,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-seq-range-array.c:413,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-seq-range-array.c:414,1
    - Dst: seq_range_count
      Src: /src/dovecot/src/lib/test-seq-range-array.c:414,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-seq-range-array.c:417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 419
    functionName: fatal_seq_range_array
    functionSourceFile: /src/dovecot/src/lib/test-seq-range-array.c
    functionUses: 0
    functionsReached:
    - seq_range_array_add
    - seq_range_array_add_range
    - array_append_space
    - i_error
    - test_end
    - t_array_init
    - test_expect_fatal_string
    - ARRAY_TYPE
    - test_assert
    - seq_range_count
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_seq_range_array(unsigned int stage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:18,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - u0
    argTypes:
    - enum iostream_proxy_side
    - enum iostream_proxy_status
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 21
    functionName: completed
    functionSourceFile: /src/dovecot/src/lib/test-iostream-proxy.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void completed(enum iostream_proxy_side side ATTR_UNUSED,\n\t       enum
      iostream_proxy_status status ATTR_UNUSED, int *u0)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:34,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:35,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:35,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:37,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:38,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:39,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:40,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:42,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:44,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:45,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:47,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:48,1
    - Dst: iostream_proxy_create
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:52,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:53,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:54,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:55,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:56,1
    - Dst: iostream_proxy_set_completion_callback
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:58,1
    - Dst: iostream_proxy_start
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:59,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:61,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:62,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:64,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:68,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:69,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:69,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:71,1
    - Dst: shutdown
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:71,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:76,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:77,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:77,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:77,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:80,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:81,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:81,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:83,1
    - Dst: shutdown
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:83,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:88,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:89,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:89,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:89,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:90,1
    - Dst: iostream_proxy_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:92,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:94,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:96,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:97,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:100,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:101,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:102,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:103,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 23
    functionDepth: 4
    functionLinenumber: 23
    functionLinenumberEnd: 106
    functionName: test_iostream_proxy_simple
    functionSourceFile: /src/dovecot/src/lib/test-iostream-proxy.c
    functionUses: 0
    functionsReached:
    - o_stream_send_str
    - o_stream_unref
    - i_stream_get_data
    - io_loop_destroy
    - test_assert
    - io_loop_run
    - o_stream_create_fd
    - i_close_fd
    - i_stream_skip
    - test_end
    - o_stream_flush
    - iostream_proxy_create
    - shutdown
    - iostream_proxy_start
    - iostream_proxy_unref
    - iostream_proxy_set_completion_callback
    - socketpair
    - i_stream_read
    - strcmp
    - i_stream_create_fd
    - fd_set_nonblock
    - io_loop_create
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_proxy_simple(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_iostream_proxy_simple
      Src: /src/dovecot/src/lib/test-iostream-proxy.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 5
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: test_iostream_proxy
    functionSourceFile: /src/dovecot/src/lib/test-iostream-proxy.c
    functionUses: 0
    functionsReached:
    - test_iostream_proxy_simple
    linkageType: ''
    returnType: void
    signature: void test_iostream_proxy(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:19,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:21,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:23,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:24,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:26,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:27,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:29,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:29,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:32,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:33,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:34,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:36,1
    - Dst: o_stream_pwrite
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:36,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:38,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:38,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:42,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:42,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:45,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:45,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:47,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 12
    functionDepth: 3
    functionLinenumber: 12
    functionLinenumberEnd: 49
    functionName: test_ostream_buffer_random_once
    functionSourceFile: /src/dovecot/src/lib/test-ostream-buffer.c
    functionUses: 0
    functionsReached:
    - memcpy
    - random_fill
    - buffer_free
    - o_stream_uncork
    - buffer_create_dynamic
    - o_stream_cork
    - o_stream_unref
    - memset
    - o_stream_finish
    - o_stream_send
    - i_rand_limit
    - test_assert
    - o_stream_flush
    - o_stream_pwrite
    - memcmp
    - i_rand_minmax
    - i_assert
    - o_stream_create_buffer
    linkageType: ''
    returnType: void
    signature: void test_ostream_buffer_random_once(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:55,1
    - Dst: test_ostream_buffer_random_once
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 51
    functionDepth: 4
    functionLinenumber: 51
    functionLinenumberEnd: 58
    functionName: test_ostream_buffer_random
    functionSourceFile: /src/dovecot/src/lib/test-ostream-buffer.c
    functionUses: 0
    functionsReached:
    - test_ostream_buffer_random_once
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_buffer_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:65,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:67,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:69,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:70,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:70,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:74,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:75,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:75,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:79,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:81,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:82,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:82,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:86,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:87,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:87,1
    - Dst: o_stream_send_str
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:91,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:92,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:93,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:94,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:97,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:97,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:97,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:99,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 102
    functionName: test_ostream_buffer_size
    functionSourceFile: /src/dovecot/src/lib/test-ostream-buffer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - o_stream_get_buffer_avail_size
    - str_len
    - o_stream_send_str
    - strlen
    - o_stream_unref
    - o_stream_create_buffer
    - test_end
    - o_stream_get_buffer_used_size
    - test_assert
    - o_stream_set_max_buffer_size
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_ostream_buffer_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ostream_buffer_random
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:106,1
    - Dst: test_ostream_buffer_size
      Src: /src/dovecot/src/lib/test-ostream-buffer.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 5
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: test_ostream_buffer
    functionSourceFile: /src/dovecot/src/lib/test-ostream-buffer.c
    functionUses: 0
    functionsReached:
    - test_ostream_buffer_random
    - test_ostream_buffer_size
    linkageType: ''
    returnType: void
    signature: void test_ostream_buffer(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:13,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:14,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib/base64.c:23,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:33,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:41,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - enc
    - src_size
    argTypes:
    - struct base64_encoder*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 53
    functionName: base64_get_full_encoded_size
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 0
    functionsReached:
    - i_assert
    - HAS_ALL_BITS
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t base64_get_full_encoded_size(struct base64_encoder *enc, uoff_t
      src_size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:60,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/base64.c:80,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - enc
    - src_size
    argTypes:
    - struct base64_encoder*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 100
    functionName: base64_encode_get_out_size
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: size_t
    signature: size_t base64_encode_get_out_size(struct base64_encoder *enc, size_t
      src_size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:104,1
    - Dst: base64_encode_get_out_size
      Src: /src/dovecot/src/lib/base64.c:105,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/base64.c:119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:127,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - enc
    - src_size
    argTypes:
    - struct base64_encoder*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 140
    functionName: base64_encode_get_size
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 0
    functionsReached:
    - base64_encode_get_out_size
    - HAS_ALL_BITS
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: size_t
    signature: size_t base64_encode_get_size(struct base64_encoder *enc, size_t src_size)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:145,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:146,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:150,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:157,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/base64.c:193,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 2
    argNames:
    - enc
    - dst_space
    argTypes:
    - struct base64_encoder*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 215
    functionName: base64_encode_get_full_space
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 1
    functionsReached:
    - HAS_ALL_BITS
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: size_t
    signature: "size_t base64_encode_get_full_space(struct base64_encoder *enc,\n\t\t\t\t
      \   size_t dst_space)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:228,1
    - Dst: base64_encode_get_out_size
      Src: /src/dovecot/src/lib/base64.c:237,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/base64.c:241,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:246,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/base64.c:248,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/base64.c:251,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/base64.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:261,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:262,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:270,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/base64.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:304,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:358,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:360,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/base64.c:362,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/base64.c:365,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/base64.c:367,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:372,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 122
    argCount: 6
    argNames:
    - enc
    - src_c
    - src_size
    - src_pos_r
    - dst_avail
    - dest
    argTypes:
    - struct base64_encoder*
    - unsigned char*
    - size_t
    - size_t*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 374
    functionName: base64_encode_more_data
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memmove
    - i_unreached
    - base64_encode_get_out_size
    - buffer_append_space_unsafe
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void base64_encode_more_data(struct base64_encoder *enc,\n\t\t\tconst
      unsigned char *src_c, size_t src_size,\n\t\t\tsize_t *src_pos_r, size_t dst_avail,
      buffer_t *dest)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:380,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:384,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:385,1
    - Dst: buffer_get_avail_size
      Src: /src/dovecot/src/lib/base64.c:393,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:399,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/base64.c:400,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:407,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:408,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/base64.c:409,1
    - Dst: base64_encode_more_data
      Src: /src/dovecot/src/lib/base64.c:414,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:416,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:419,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:422,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:423,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:424,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/base64.c:437,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/base64.c:440,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/base64.c:445,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:451,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 5
    argNames:
    - enc
    - src
    - src_size
    - src_pos_r
    - dest
    argTypes:
    - struct base64_encoder*
    - void*
    - size_t
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 456
    functionName: base64_encode_more
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - buffer_get_avail_size
    - I_MIN
    - base64_encode_more_data
    - buffer_append_c
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool base64_encode_more(struct base64_encoder *enc,\n\t\t\tconst void
      *src, size_t src_size, size_t *src_pos_r,\n\t\t\tbuffer_t *dest)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:462,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib/base64.c:463,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:468,1
    - Dst: buffer_get_avail_size
      Src: /src/dovecot/src/lib/base64.c:473,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:478,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:482,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:489,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:499,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/base64.c:508,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/base64.c:518,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:529,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/base64.c:533,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/base64.c:544,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/base64.c:563,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/base64.c:564,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/base64.c:565,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:569,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:571,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/base64.c:574,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 103
    argCount: 2
    argNames:
    - enc
    - dest
    argTypes:
    - struct base64_encoder*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 581
    functionName: base64_encode_finish
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 1
    functionsReached:
    - memcpy
    - buffer_get_avail_size
    - i_unreached
    - memmove
    - I_MIN
    - I_MAX
    - HAS_NO_BITS
    - buffer_append_space_unsafe
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool base64_encode_finish(struct base64_encoder *enc, buffer_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 589
    functionName: IS_EMPTY
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EMPTY(c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:594,1
    - Dst: IS_EMPTY
      Src: /src/dovecot/src/lib/base64.c:598,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 4
    argNames:
    - dec
    - src_c
    - src_size
    - src_pos
    argTypes:
    - struct base64_decoder*
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 600
    functionName: base64_skip_whitespace
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 0
    functionsReached:
    - IS_EMPTY
    - HAS_ALL_BITS
    linkageType: ''
    returnType: void
    signature: "void base64_skip_whitespace(struct base64_decoder *dec, const unsigned
      char *src_c,\n\t\t       size_t src_size, size_t *src_pos)"
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:608,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:610,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:612,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:617,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:618,1
    - Dst: base64_skip_whitespace
      Src: /src/dovecot/src/lib/base64.c:631,1
    - Dst: buffer_get_avail_size
      Src: /src/dovecot/src/lib/base64.c:656,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:658,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/base64.c:672,1
    - Dst: IS_EMPTY
      Src: /src/dovecot/src/lib/base64.c:672,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:680,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/base64.c:692,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/base64.c:699,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/base64.c:706,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/base64.c:712,1
    - Dst: base64_skip_whitespace
      Src: /src/dovecot/src/lib/base64.c:718,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:728,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:732,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/base64.c:742,1
    - Dst: base64_skip_whitespace
      Src: /src/dovecot/src/lib/base64.c:755,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/base64.c:763,1
    - Dst: base64_skip_whitespace
      Src: /src/dovecot/src/lib/base64.c:773,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 157
    argCount: 5
    argNames:
    - dec
    - src
    - src_size
    - src_pos_r
    - dest
    argTypes:
    - struct base64_decoder*
    - void*
    - size_t
    - size_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 602
    functionDepth: 2
    functionLinenumber: 602
    functionLinenumberEnd: 802
    functionName: base64_decode_more
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 2
    functionsReached:
    - buffer_get_avail_size
    - i_unreached
    - base64_skip_whitespace
    - unlikely
    - buffer_append_c
    - IS_EMPTY
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int base64_decode_more(struct base64_decoder *dec,\n\t\t       const
      void *src, size_t src_size, size_t *src_pos_r,\n\t\t       buffer_t *dest)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:806,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:812,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/base64.c:814,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/base64.c:817,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - dec
    argTypes:
    - struct base64_decoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 821
    functionName: base64_decode_finish
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 2
    functionsReached:
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: int
    signature: int base64_decode_finish(struct base64_decoder *dec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/base64.c:834,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib/base64.c:834,1
    - Dst: base64_scheme_encode
      Src: /src/dovecot/src/lib/base64.c:835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - b64
    - flags
    - max_line_len
    - src
    - src_size
    argTypes:
    - struct base64_scheme*
    - enum base64_encode_flags
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 827
    functionDepth: 1
    functionLinenumber: 827
    functionLinenumberEnd: 837
    functionName: t_base64_scheme_encode
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 1
    functionsReached:
    - MAX_BASE64_ENCODED_SIZE
    - t_buffer_create
    - base64_scheme_encode
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *t_base64_scheme_encode(const struct base64_scheme *b64,\n\t\t\t\t
      enum base64_encode_flags flags,\n\t\t\t\t size_t max_line_len,\n\t\t\t\t const
      void *src, size_t src_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: base64_decode_init
      Src: /src/dovecot/src/lib/base64.c:847,1
    - Dst: base64_decode_more
      Src: /src/dovecot/src/lib/base64.c:848,1
    - Dst: base64_decode_finish
      Src: /src/dovecot/src/lib/base64.c:850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - b64
    - flags
    - src
    - src_size
    - dest
    argTypes:
    - struct base64_scheme*
    - enum base64_decode_flags
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 853
    functionName: base64_scheme_decode
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 1
    functionsReached:
    - base64_decode_init
    - base64_decode_more
    - base64_decode_finish
    linkageType: ''
    returnType: int
    signature: "int base64_scheme_decode(const struct base64_scheme *b64,\n\t\t\t
      enum base64_decode_flags flags,\n\t\t\t const void *src, size_t src_size, buffer_t
      *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/base64.c:861,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib/base64.c:861,1
    - Dst: base64_scheme_decode
      Src: /src/dovecot/src/lib/base64.c:862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - b64
    - flags
    - src
    - src_size
    argTypes:
    - struct base64_scheme*
    - enum base64_decode_flags
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 855
    functionDepth: 4
    functionLinenumber: 855
    functionLinenumberEnd: 864
    functionName: t_base64_scheme_decode
    functionSourceFile: /src/dovecot/src/lib/base64.c
    functionUses: 1
    functionsReached:
    - base64_scheme_decode
    - t_buffer_create
    - MAX_BASE64_DECODED_SIZE
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *t_base64_scheme_decode(const struct base64_scheme *b64,\n\t\t\t\t
      enum base64_decode_flags flags,\n\t\t\t\t const void *src, size_t src_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:11,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:12,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:13,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:14,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:15,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:16,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:17,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:18,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:19,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:20,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:21,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:22,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:23,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:24,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:24,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:26,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:27,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:28,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:29,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:30,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:31,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:32,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:33,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:34,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:35,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:36,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:37,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:38,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:39,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:39,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:41,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:42,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:43,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:44,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:45,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:46,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:47,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:47,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:49,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:50,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:51,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:52,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:53,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:54,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:54,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:55,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:56,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:56,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:58,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:59,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:60,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:61,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:62,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:63,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:64,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:65,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:65,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:66,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:67,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:67,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:69,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:70,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:71,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:72,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:72,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:73,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:74,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:74,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 7
    functionDepth: 3
    functionLinenumber: 7
    functionLinenumberEnd: 77
    functionName: test_seq_set_builder_add
    functionSourceFile: /src/dovecot/src/lib/test-seq-set-builder.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - seqset_builder_init
    - seqset_builder_add
    - test_assert_strcmp
    - test_end
    - str_truncate
    - str_append
    - seqset_builder_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_seq_set_builder_add(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:83,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:85,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:86,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:89,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:90,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:91,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:92,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:93,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:94,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:94,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:96,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:98,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:99,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:99,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:100,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:102,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:103,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:103,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:104,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:106,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:107,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:108,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:109,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:109,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:110,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:110,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:111,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:113,1
    - Dst: seqset_builder_init
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:115,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:116,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:117,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:118,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:119,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:120,1
    - Dst: seqset_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:120,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:121,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:121,1
    - Dst: seqset_builder_deinit
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:122,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:123,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:123,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 126
    functionName: test_seq_set_builder_try_add
    functionSourceFile: /src/dovecot/src/lib/test-seq-set-builder.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - seqset_builder_init
    - seqset_builder_try_add
    - str_len
    - test_assert_strcmp
    - test_end
    - str_truncate
    - test_assert
    - str_append
    - seqset_builder_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_seq_set_builder_try_add(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_seq_set_builder_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:130,1
    - Dst: test_seq_set_builder_try_add
      Src: /src/dovecot/src/lib/test-seq-set-builder.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: test_seq_set_builder
    functionSourceFile: /src/dovecot/src/lib/test-seq-set-builder.c
    functionUses: 0
    functionsReached:
    - test_seq_set_builder_add
    - test_seq_set_builder_try_add
    linkageType: ''
    returnType: void
    signature: void test_seq_set_builder(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-iostream-pump.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - status
    - u0
    argTypes:
    - enum iostream_pump_status
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 30
    functionName: completed
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void completed(enum iostream_pump_status status, int *u0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-iostream-pump.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - u0
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: failed
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 115
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void failed(int *u0)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-iostream-pump.c:48,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-iostream-pump.c:50,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib/test-iostream-pump.c:51,1
    - Dst: test_ostream_set_max_output_size
      Src: /src/dovecot/src/lib/test-iostream-pump.c:62,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nonblock_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 67
    functionName: pump_nonblocking_timeout
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - test_ostream_set_max_output_size
    - test_istream_set_size
    - i_stream_set_input_pending
    - test_istream_set_allow_eof
    linkageType: ''
    returnType: void
    signature: void pump_nonblocking_timeout(struct nonblock_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-iostream-pump.c:74,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/test-iostream-pump.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:80,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib/test-iostream-pump.c:80,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-iostream-pump.c:81,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-iostream-pump.c:82,1
    - Dst: test_ostream_set_max_output_size
      Src: /src/dovecot/src/lib/test-iostream-pump.c:85,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/test-iostream-pump.c:88,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib/test-iostream-pump.c:91,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:92,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:93,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib/test-iostream-pump.c:95,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib/test-iostream-pump.c:96,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/test-iostream-pump.c:98,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/test-iostream-pump.c:99,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-iostream-pump.c:101,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-iostream-pump.c:103,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/test-iostream-pump.c:104,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/test-iostream-pump.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:107,1
    - Dst: test_ostream_set_max_output_size
      Src: /src/dovecot/src/lib/test-iostream-pump.c:112,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:113,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-iostream-pump.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:115,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/test-iostream-pump.c:115,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/test-iostream-pump.c:118,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-iostream-pump.c:118,1
    - Dst: iostream_pump_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:120,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-iostream-pump.c:121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 4
    argNames:
    - in
    - out
    - counter
    - out_buffer
    argTypes:
    - struct istream*
    - struct ostream*
    - int*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 123
    functionName: run_pump
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - str_c
    - iostream_pump_set_completion_callback
    - iostream_pump_create
    - timeout_add_short
    - o_stream_unref
    - io_loop_destroy
    - i_stream_get_size
    - test_assert
    - iostream_pump_unref
    - t_strdup
    - io_loop_run
    - test_ostream_set_max_output_size
    - alarm
    - test_istream_set_allow_eof
    - timeout_add
    - o_stream_flush
    - test_istream_set_size
    - io_loop_set_current
    - io_loop_create
    - iostream_pump_start
    - i_stream_unref
    - timeout_remove
    linkageType: ''
    returnType: char
    signature: "char *\nrun_pump(struct istream *in, struct ostream *out, int *counter,\n\t
      buffer_t *out_buffer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-iostream-pump.c:130,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-iostream-pump.c:132,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib/test-iostream-pump.c:136,1
    - Dst: test_ostream_create_nonblocking
      Src: /src/dovecot/src/lib/test-iostream-pump.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - in_block
    - out_block
    - in_r
    - out_r
    - out_buffer_r
    argTypes:
    - bool
    - bool
    - struct istream**
    - struct ostream**
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 139
    functionName: test_iostream_setup
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - test_ostream_create_nonblocking
    - test_istream_create_data
    - t_buffer_create
    - test_ostream_create
    linkageType: ''
    returnType: void
    signature: "void test_iostream_setup(bool in_block, bool out_block,\n\t\t    struct
      istream **in_r, struct ostream **out_r,\n\t\t    buffer_t **out_buffer_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-pump.c:149,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-pump.c:149,1
    - Dst: test_iostream_setup
      Src: /src/dovecot/src/lib/test-iostream-pump.c:154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:157,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-pump.c:157,1
    - Dst: run_pump
      Src: /src/dovecot/src/lib/test-iostream-pump.c:157,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-pump.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - in_block
    - out_block
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 161
    functionName: test_iostream_pump_simple
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_iostream_setup
    - run_pump
    - t_strdup_printf
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump_simple(bool in_block, bool out_block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-pump.c:171,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-pump.c:171,1
    - Dst: test_iostream_setup
      Src: /src/dovecot/src/lib/test-iostream-pump.c:176,1
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib/test-iostream-pump.c:177,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:178,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:180,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-pump.c:180,1
    - Dst: run_pump
      Src: /src/dovecot/src/lib/test-iostream-pump.c:180,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-pump.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - in_block
    - out_block
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 163
    functionDepth: 4
    functionLinenumber: 163
    functionLinenumberEnd: 183
    functionName: test_iostream_pump_failure_start_read
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_iostream_setup
    - run_pump
    - i_stream_create_failure_at
    - t_strdup_printf
    - test_end
    - test_assert
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump_failure_start_read(bool in_block, bool out_block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-pump.c:193,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-pump.c:193,1
    - Dst: test_iostream_setup
      Src: /src/dovecot/src/lib/test-iostream-pump.c:198,1
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib/test-iostream-pump.c:199,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:200,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:202,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-pump.c:202,1
    - Dst: run_pump
      Src: /src/dovecot/src/lib/test-iostream-pump.c:202,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-pump.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - in_block
    - out_block
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 205
    functionName: test_iostream_pump_failure_mid_read
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_iostream_setup
    - run_pump
    - i_stream_create_failure_at
    - t_strdup_printf
    - test_end
    - test_assert
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump_failure_mid_read(bool in_block, bool out_block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-pump.c:215,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-pump.c:215,1
    - Dst: test_iostream_setup
      Src: /src/dovecot/src/lib/test-iostream-pump.c:220,1
    - Dst: i_stream_create_failure_at_eof
      Src: /src/dovecot/src/lib/test-iostream-pump.c:221,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:222,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:224,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-pump.c:224,1
    - Dst: run_pump
      Src: /src/dovecot/src/lib/test-iostream-pump.c:224,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-pump.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - in_block
    - out_block
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 207
    functionDepth: 4
    functionLinenumber: 207
    functionLinenumberEnd: 228
    functionName: test_iostream_pump_failure_end_read
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_iostream_setup
    - run_pump
    - t_strdup_printf
    - test_end
    - test_assert
    - i_stream_unref
    - i_stream_create_failure_at_eof
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump_failure_end_read(bool in_block, bool out_block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-pump.c:238,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-pump.c:238,1
    - Dst: test_iostream_setup
      Src: /src/dovecot/src/lib/test-iostream-pump.c:243,1
    - Dst: o_stream_create_failure_at
      Src: /src/dovecot/src/lib/test-iostream-pump.c:244,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:245,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:247,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-pump.c:247,1
    - Dst: run_pump
      Src: /src/dovecot/src/lib/test-iostream-pump.c:247,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-pump.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - in_block
    - out_block
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 230
    functionDepth: 4
    functionLinenumber: 230
    functionLinenumberEnd: 250
    functionName: test_iostream_pump_failure_start_write
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_iostream_setup
    - run_pump
    - o_stream_unref
    - t_strdup_printf
    - test_end
    - test_assert
    - o_stream_create_failure_at
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump_failure_start_write(bool in_block, bool out_block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-pump.c:260,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-pump.c:260,1
    - Dst: test_iostream_setup
      Src: /src/dovecot/src/lib/test-iostream-pump.c:265,1
    - Dst: o_stream_create_failure_at
      Src: /src/dovecot/src/lib/test-iostream-pump.c:266,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:267,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:271,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-pump.c:271,1
    - Dst: run_pump
      Src: /src/dovecot/src/lib/test-iostream-pump.c:271,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-pump.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - in_block
    - out_block
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 252
    functionDepth: 4
    functionLinenumber: 252
    functionLinenumberEnd: 276
    functionName: test_iostream_pump_failure_mid_write
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_iostream_setup
    - run_pump
    - o_stream_unref
    - t_strdup_printf
    - test_end
    - test_assert
    - o_stream_create_failure_at
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump_failure_mid_write(bool in_block, bool out_block)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-pump.c:291,1
    - Dst: test_iostream_setup
      Src: /src/dovecot/src/lib/test-iostream-pump.c:293,1
    - Dst: o_stream_create_failure_at_flush
      Src: /src/dovecot/src/lib/test-iostream-pump.c:294,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-pump.c:295,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-pump.c:297,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iostream-pump.c:297,1
    - Dst: run_pump
      Src: /src/dovecot/src/lib/test-iostream-pump.c:297,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-pump.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - in_block
    - out_block
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 278
    functionDepth: 4
    functionLinenumber: 278
    functionLinenumberEnd: 301
    functionName: test_iostream_pump_failure_end_write
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_iostream_setup
    - run_pump
    - o_stream_unref
    - test_end
    - test_assert
    - o_stream_create_failure_at_flush
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump_failure_end_write(bool in_block, bool out_block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-iostream-pump.c:307,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-iostream-pump.c:308,1
    - Dst: test_iostream_pump_simple
      Src: /src/dovecot/src/lib/test-iostream-pump.c:310,1
    - Dst: test_iostream_pump_failure_start_read
      Src: /src/dovecot/src/lib/test-iostream-pump.c:311,1
    - Dst: test_iostream_pump_failure_mid_read
      Src: /src/dovecot/src/lib/test-iostream-pump.c:312,1
    - Dst: test_iostream_pump_failure_end_read
      Src: /src/dovecot/src/lib/test-iostream-pump.c:313,1
    - Dst: test_iostream_pump_failure_start_write
      Src: /src/dovecot/src/lib/test-iostream-pump.c:314,1
    - Dst: test_iostream_pump_failure_mid_write
      Src: /src/dovecot/src/lib/test-iostream-pump.c:315,1
    - Dst: test_iostream_pump_failure_end_write
      Src: /src/dovecot/src/lib/test-iostream-pump.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 303
    functionDepth: 5
    functionLinenumber: 303
    functionLinenumberEnd: 318
    functionName: test_iostream_pump_real
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - test_iostream_pump_simple
    - test_iostream_pump_failure_start_read
    - test_iostream_pump_failure_end_write
    - test_iostream_pump_failure_start_write
    - BIT
    - test_iostream_pump_failure_mid_write
    - test_iostream_pump_failure_end_read
    - test_iostream_pump_failure_mid_read
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump_real(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_iostream_pump_real
      Src: /src/dovecot/src/lib/test-iostream-pump.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 320
    functionDepth: 6
    functionLinenumber: 320
    functionLinenumberEnd: 324
    functionName: test_iostream_pump
    functionSourceFile: /src/dovecot/src/lib/test-iostream-pump.c
    functionUses: 0
    functionsReached:
    - test_iostream_pump_real
    linkageType: ''
    returnType: void
    signature: void test_iostream_pump(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-crc32.c:10,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-crc32.c:11,1
    - Dst: crc32_str
      Src: /src/dovecot/src/lib/test-crc32.c:11,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-crc32.c:12,1
    - Dst: crc32_data
      Src: /src/dovecot/src/lib/test-crc32.c:12,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-crc32.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 6
    functionDepth: 3
    functionLinenumber: 6
    functionLinenumberEnd: 14
    functionName: test_crc32
    functionSourceFile: /src/dovecot/src/lib/test-crc32.c
    functionUses: 0
    functionsReached:
    - crc32_data
    - test_end
    - crc32_str
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_crc32(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: CHECK_FLATTEN_SAME
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_FLATTEN_SAME(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - e
    - ','
    - c
    - ','
    - nc
    - ','
    - f
    - ','
    - nf
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 18
    functionName: CHECK_FLATTEN_DIFF
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_FLATTEN_DIFF(e, c, nc, f, nf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:33,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - got
    - ngot
    - exp
    - nexp
    argTypes:
    - struct event_category**
    - unsigned int
    - char**
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 34
    functionName: check_event_diff_cats
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void check_event_diff_cats(struct event_category *const *got,\n\t\t\t\t
      \ unsigned int ngot, const char **exp,\n\t\t\t\t  unsigned int nexp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:52,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:56,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:59,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:63,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib/test-event-flatten.c:63,1
    - Dst: t_array_const_string_join
      Src: /src/dovecot/src/lib/test-event-flatten.c:67,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:68,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - got
    - ngot
    - exp
    - nexp
    argTypes:
    - struct event_field*
    - unsigned int
    - struct event_field*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 72
    functionName: check_event_diff_fields
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - strcmp
    - timeval_cmp
    - test_assert_strcmp
    - test_assert
    - t_array_const_string_join
    - net_ip_compare
    linkageType: ''
    returnType: void
    signature: "void check_event_diff_fields(const struct event_field *got, unsigned
      int ngot,\n\t\t\t\t    const struct event_field *exp, unsigned int nexp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:91,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:92,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:92,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:93,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:95,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:96,1
    - Dst: event_get_categories
      Src: /src/dovecot/src/lib/test-event-flatten.c:100,1
    - Dst: check_event_diff_cats
      Src: /src/dovecot/src/lib/test-event-flatten.c:101,1
    - Dst: event_get_fields
      Src: /src/dovecot/src/lib/test-event-flatten.c:104,1
    - Dst: check_event_diff_fields
      Src: /src/dovecot/src/lib/test-event-flatten.c:105,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 6
    argNames:
    - e
    - orig
    - expected_cats
    - num_expected_cats
    - expected_fields
    - num_expected_fields
    argTypes:
    - struct event*
    - struct event*
    - char**
    - unsigned int
    - struct event_field*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 74
    functionDepth: 4
    functionLinenumber: 74
    functionLinenumberEnd: 109
    functionName: check_event_diff
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - strcmp
    - event_get_fields
    - event_unref
    - timeval_cmp
    - event_get_categories
    - check_event_diff_cats
    - test_assert
    - check_event_diff_fields
    linkageType: ''
    returnType: void
    signature: "void check_event_diff(struct event *e, struct event *orig,\n\t\t\t
      \    const char **expected_cats,\n\t\t\t     unsigned int num_expected_cats,\n\t\t\t
      \    const struct event_field *expected_fields,\n\t\t\t     unsigned int num_expected_fields)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-flatten.c:113,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - e
    - orig
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 4
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: check_event_same
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - event_unref
    - test_assert
    linkageType: ''
    returnType: void
    signature: void check_event_same(struct event *e, struct event *orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-flatten.c:124,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-flatten.c:126,1
    - Dst: CHECK_FLATTEN_SAME
      Src: /src/dovecot/src/lib/test-event-flatten.c:128,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-flatten.c:130,1
    - Dst: CHECK_FLATTEN_SAME
      Src: /src/dovecot/src/lib/test-event-flatten.c:131,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-flatten.c:133,1
    - Dst: CHECK_FLATTEN_SAME
      Src: /src/dovecot/src/lib/test-event-flatten.c:134,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-flatten.c:136,1
    - Dst: CHECK_FLATTEN_SAME
      Src: /src/dovecot/src/lib/test-event-flatten.c:137,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib/test-event-flatten.c:139,1
    - Dst: CHECK_FLATTEN_SAME
      Src: /src/dovecot/src/lib/test-event-flatten.c:140,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:142,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-flatten.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 120
    functionDepth: 5
    functionLinenumber: 120
    functionLinenumberEnd: 145
    functionName: test_event_flatten_no_parent
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - CHECK_FLATTEN_SAME
    - event_create
    - event_unref
    - test_end
    - event_add_str
    - event_add_category
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_flatten_no_parent(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-flatten.c:224,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-flatten.c:226,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-flatten.c:228,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:230,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-flatten.c:232,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:233,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-flatten.c:235,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:236,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-flatten.c:238,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:239,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib/test-event-flatten.c:241,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:242,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib/test-event-flatten.c:244,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:245,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:247,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:248,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:249,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:250,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:252,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:253,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-flatten.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 147
    functionDepth: 5
    functionLinenumber: 147
    functionLinenumberEnd: 256
    functionName: test_event_flatten_one_parent
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - CHECK_FLATTEN_DIFF
    - event_create
    - event_unref
    - event_strlist_append
    - test_end
    - event_add_str
    - event_add_category
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_flatten_one_parent(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-flatten.c:293,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-flatten.c:295,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-flatten.c:297,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-flatten.c:299,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-flatten.c:301,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:303,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-flatten.c:305,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:306,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-flatten.c:308,1
    - Dst: CHECK_FLATTEN_DIFF
      Src: /src/dovecot/src/lib/test-event-flatten.c:309,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:311,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:312,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-flatten.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 258
    functionDepth: 4
    functionLinenumber: 258
    functionLinenumberEnd: 315
    functionName: test_event_flatten_override_parent_field
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - CHECK_FLATTEN_DIFF
    - event_create
    - event_unref
    - test_end
    - event_add_str
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_flatten_override_parent_field(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-flatten.c:319,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-flatten.c:320,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:321,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-flatten.c:322,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:323,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-flatten.c:324,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:326,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-event-flatten.c:328,1
    - Dst: event_flatten
      Src: /src/dovecot/src/lib/test-event-flatten.c:329,1
    - Dst: event_export
      Src: /src/dovecot/src/lib/test-event-flatten.c:331,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-flatten.c:333,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:339,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-flatten.c:339,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:342,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:343,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-flatten.c:344,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-event-flatten.c:347,1
    - Dst: event_export
      Src: /src/dovecot/src/lib/test-event-flatten.c:348,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-event-flatten.c:349,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-flatten.c:349,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:351,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:354,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:355,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-flatten.c:356,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-flatten.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 317
    functionDepth: 4
    functionLinenumber: 317
    functionLinenumberEnd: 359
    functionName: test_event_strlist_flatten
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - event_create
    - event_export
    - event_unref
    - event_flatten
    - event_strlist_append
    - t_strdup_printf
    - test_assert_strcmp
    - test_end
    - str_truncate
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_strlist_flatten(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_event_flatten_no_parent
      Src: /src/dovecot/src/lib/test-event-flatten.c:363,1
    - Dst: test_event_flatten_one_parent
      Src: /src/dovecot/src/lib/test-event-flatten.c:364,1
    - Dst: test_event_flatten_override_parent_field
      Src: /src/dovecot/src/lib/test-event-flatten.c:365,1
    - Dst: test_event_strlist_flatten
      Src: /src/dovecot/src/lib/test-event-flatten.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 361
    functionDepth: 6
    functionLinenumber: 361
    functionLinenumberEnd: 367
    functionName: test_event_flatten
    functionSourceFile: /src/dovecot/src/lib/test-event-flatten.c
    functionUses: 0
    functionsReached:
    - test_event_flatten_no_parent
    - test_event_strlist_flatten
    - test_event_flatten_one_parent
    - test_event_flatten_override_parent_field
    linkageType: ''
    returnType: void
    signature: void test_event_flatten(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: primes_closest
      Src: /src/dovecot/src/lib/test-primes.c:11,1
    - Dst: primes_closest
      Src: /src/dovecot/src/lib/test-primes.c:13,1
    - Dst: primes_closest
      Src: /src/dovecot/src/lib/test-primes.c:19,1
    - Dst: test_out
      Src: /src/dovecot/src/lib/test-primes.c:23,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 6
    functionDepth: 2
    functionLinenumber: 6
    functionLinenumberEnd: 24
    functionName: test_primes
    functionSourceFile: /src/dovecot/src/lib/test-primes.c
    functionUses: 0
    functionsReached:
    - test_out
    - primes_closest
    linkageType: ''
    returnType: void
    signature: void test_primes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:21,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:23,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:24,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:26,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:27,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:33,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:34,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:35,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:35,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:36,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:40,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:41,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:42,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:42,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:43,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:47,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:48,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:49,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:49,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:50,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:52,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:53,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 13
    functionDepth: 4
    functionLinenumber: 13
    functionLinenumberEnd: 55
    functionName: test_event_filter_strings
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_filter_match
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_add_str
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_strings(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:65,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:67,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:68,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:69,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:70,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:71,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:72,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:74,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:75,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:76,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:77,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:78,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:79,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:83,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:84,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:84,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:85,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:85,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:86,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:90,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:91,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:92,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:92,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:93,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:97,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:98,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:99,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:99,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:100,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:104,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:105,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:106,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:106,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:107,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:109,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:110,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 112
    functionName: test_event_filter_override_parent_fields
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_filter_match
    - event_filter_unref
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_add_str
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_override_parent_fields(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:122,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:124,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:125,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:126,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:127,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:128,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:129,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/test-event-filter.c:130,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:132,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:133,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:134,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:135,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:136,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:137,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:141,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:142,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:143,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:143,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:144,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:148,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:149,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:149,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:150,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:150,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:151,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:155,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:155,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:156,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:156,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:157,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:157,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:158,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:162,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:162,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:163,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:164,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:164,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:165,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib/test-event-filter.c:167,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:168,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:169,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 114
    functionDepth: 4
    functionLinenumber: 114
    functionLinenumberEnd: 171
    functionName: test_event_filter_override_global_fields
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_filter_match
    - event_filter_unref
    - event_filter_create
    - event_filter_parse
    - event_push_global
    - test_end
    - test_assert
    - event_add_str
    - event_pop_global
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_override_global_fields(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:182,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:184,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:185,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:186,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:188,1
    - Dst: event_field_clear
      Src: /src/dovecot/src/lib/test-event-filter.c:189,1
    - Dst: event_field_clear
      Src: /src/dovecot/src/lib/test-event-filter.c:190,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter.c:192,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter.c:194,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:196,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:196,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:198,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:198,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:199,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:199,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:200,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:204,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:205,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:205,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:206,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:207,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:207,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:208,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:211,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:212,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:212,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:213,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:213,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:214,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:214,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:215,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:217,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:218,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 173
    functionDepth: 5
    functionLinenumber: 173
    functionLinenumberEnd: 220
    functionName: test_event_filter_clear_parent_fields
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_field_clear
    - test_assert_idx
    - t_strdup_printf
    - event_filter_match
    - event_filter_unref
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_add_str
    - N_ELEMENTS
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_clear_parent_fields(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:231,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:233,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:234,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:235,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/test-event-filter.c:236,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:238,1
    - Dst: event_field_clear
      Src: /src/dovecot/src/lib/test-event-filter.c:239,1
    - Dst: event_field_clear
      Src: /src/dovecot/src/lib/test-event-filter.c:240,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter.c:242,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter.c:244,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:245,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:246,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:246,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:248,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:248,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:249,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:249,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:250,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:255,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:255,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:256,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:257,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:257,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:258,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:262,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:263,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:264,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:264,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:265,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib/test-event-filter.c:267,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:268,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:269,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 222
    functionDepth: 5
    functionLinenumber: 222
    functionLinenumberEnd: 271
    functionName: test_event_filter_clear_global_fields
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_field_clear
    - test_assert_idx
    - t_strdup_printf
    - event_filter_match
    - event_filter_unref
    - event_filter_create
    - event_filter_parse
    - event_push_global
    - test_end
    - test_assert
    - event_add_str
    - event_pop_global
    - N_ELEMENTS
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_clear_global_fields(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:281,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:283,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:285,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:286,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:286,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib/test-event-filter.c:288,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:290,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:290,1
    - Dst: event_inc_int
      Src: /src/dovecot/src/lib/test-event-filter.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:293,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:293,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib/test-event-filter.c:294,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:295,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-event-filter.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:298,1
    - Dst: event_inc_int
      Src: /src/dovecot/src/lib/test-event-filter.c:300,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:301,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:301,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib/test-event-filter.c:302,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:303,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-event-filter.c:304,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:305,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:306,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:308,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:309,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 273
    functionDepth: 5
    functionLinenumber: 273
    functionLinenumberEnd: 311
    functionName: test_event_filter_inc_int
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_filter_match
    - test_assert_strcmp
    - event_filter_create
    - event_filter_parse
    - event_find_field_recursive
    - test_end
    - test_assert
    - i_assert
    - event_inc_int
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_inc_int(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:328,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:330,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib/test-event-filter.c:331,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:333,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:334,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:334,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:336,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:336,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:338,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:339,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 313
    functionDepth: 5
    functionLinenumber: 313
    functionLinenumberEnd: 341
    functionName: test_event_filter_parent_category_match
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_filter_match
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_add_category
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_parent_category_match(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:350,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:352,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:354,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:356,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:356,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:357,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:357,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:359,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:360,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:360,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:363,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:364,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:364,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:365,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:368,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:369,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:370,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:370,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:371,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:371,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:372,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:375,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:376,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:376,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:377,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:377,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:378,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:380,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:381,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:381,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:382,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:384,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:384,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:385,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:386,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:388,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 390
    functionName: test_event_filter_strlist
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - event_create
    - event_unref
    - event_strlist_append
    - event_filter_match
    - test_expect_error_string
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_strlist(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:399,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:401,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:402,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:405,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:406,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:407,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:407,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:409,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:409,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:410,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:413,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:414,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:414,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:416,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:416,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:418,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:419,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:419,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:421,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:422,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:422,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:423,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:426,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:427,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:427,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:429,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:429,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:431,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:432,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:432,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:434,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:435,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:435,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:436,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:438,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:439,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 392
    functionDepth: 4
    functionLinenumber: 392
    functionLinenumberEnd: 441
    functionName: test_event_filter_strlist_recursive
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_strlist_append
    - event_filter_match
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_strlist_recursive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:450,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:452,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/test-event-filter.c:453,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:455,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:458,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:459,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:459,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:460,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:460,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:461,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:462,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:462,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:463,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:467,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:467,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:469,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:469,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:471,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:472,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:472,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:474,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:475,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:475,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:476,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:480,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:480,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:482,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:482,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:484,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:485,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:485,1
    - Dst: event_strlist_append
      Src: /src/dovecot/src/lib/test-event-filter.c:487,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:488,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:488,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:489,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:491,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib/test-event-filter.c:492,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:493,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 443
    functionDepth: 4
    functionLinenumber: 443
    functionLinenumberEnd: 495
    functionName: test_event_filter_strlist_global_events
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_strlist_append
    - event_filter_match
    - event_filter_create
    - event_filter_parse
    - event_push_global
    - test_end
    - test_assert
    - event_pop_global
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_strlist_global_events(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:505,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:507,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:508,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:509,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:510,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:511,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:512,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:513,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:514,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:515,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:516,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:517,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:518,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:519,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:520,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:521,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:522,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:523,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:524,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:525,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:526,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:527,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:528,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:530,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:530,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:531,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:532,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:532,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:533,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:533,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:534,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:534,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:535,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:535,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:536,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:536,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:537,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:537,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:538,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:538,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:539,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:539,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:540,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:540,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:542,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:543,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:544,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:545,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:546,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:547,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:548,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:549,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:550,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:551,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 497
    functionDepth: 4
    functionLinenumber: 497
    functionLinenumberEnd: 553
    functionName: test_event_filter_named_and_str
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_set_name
    - event_filter_match
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_add_str
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_named_and_str(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:563,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:565,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:566,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:567,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:568,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:569,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:570,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:571,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:572,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:573,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:574,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:575,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:576,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:577,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:578,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:579,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:580,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:581,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:582,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:583,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:584,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:585,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:586,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:588,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:588,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:589,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:591,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:591,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:592,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:592,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:593,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:593,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:594,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:594,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:595,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:595,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:596,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:596,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:597,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:597,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:598,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:598,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:599,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:599,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:601,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:602,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:603,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:604,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:605,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:606,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:607,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:608,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:609,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:610,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 555
    functionDepth: 4
    functionLinenumber: 555
    functionLinenumberEnd: 612
    functionName: test_event_filter_named_or_str
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_set_name
    - event_filter_match
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_add_str
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_named_or_str(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:622,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:624,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:625,1
    - Dst: event_set_name
      Src: /src/dovecot/src/lib/test-event-filter.c:626,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:627,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:628,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:630,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:630,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:631,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:631,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:632,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:633,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:633,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:634,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:634,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:636,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:637,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:638,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 614
    functionDepth: 4
    functionLinenumber: 614
    functionLinenumberEnd: 640
    functionName: test_event_filter_named_separate_from_str
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_set_name
    - event_filter_match
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_add_str
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_named_separate_from_str(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:650,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:653,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:654,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:654,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:656,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:657,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:657,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:659,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:660,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 642
    functionDepth: 4
    functionLinenumber: 642
    functionLinenumberEnd: 662
    functionName: test_event_filter_duration
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_filter_match
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_filter_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_duration(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:672,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:675,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:676,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:676,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:678,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:679,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:680,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:680,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:681,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:682,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:682,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:683,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:684,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:684,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:685,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:687,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:688,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:688,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:689,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:690,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:690,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:691,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:692,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:692,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:693,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:694,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:694,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:695,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:697,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:699,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:700,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:700,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:701,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:701,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:702,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:704,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:705,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:705,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:706,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:706,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:707,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:709,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:710,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:710,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:711,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:713,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:713,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:714,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:715,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:717,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:718,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:718,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:719,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:721,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:721,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:722,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:723,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:725,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:727,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:728,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:728,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:729,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:733,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:733,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:734,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:735,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:737,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:738,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:738,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:739,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:739,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:740,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:742,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 664
    functionDepth: 4
    functionLinenumber: 664
    functionLinenumberEnd: 744
    functionName: test_event_filter_numbers
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - event_create
    - event_unref
    - event_filter_match
    - event_filter_unref
    - event_filter_create
    - event_filter_parse
    - test_expect_error_string
    - test_end
    - test_assert
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_numbers(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:749,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/test-event-filter.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - addr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 752
    functionName: test_addr2ip
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - i_unreached
    linkageType: ''
    returnType: struct ip_addr
    signature: struct ip_addr test_addr2ip(const char *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:763,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:765,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:766,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:766,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:768,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:770,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:770,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-event-filter.c:771,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:772,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:772,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:774,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:774,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-event-filter.c:775,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:776,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:776,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:778,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:779,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:779,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:781,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:782,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:784,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:784,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:785,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:786,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:788,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:789,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:789,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:791,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:791,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-event-filter.c:792,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:793,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:793,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:795,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:795,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-event-filter.c:796,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:797,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:797,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:799,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:800,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:800,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:801,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:803,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:804,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:804,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:806,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:806,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-event-filter.c:807,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:808,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:808,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:810,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:810,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-event-filter.c:811,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:812,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:812,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:814,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:815,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:815,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:817,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:818,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:818,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:819,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:821,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:822,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:822,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-event-filter.c:823,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:824,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:826,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:826,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:827,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:828,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:835,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:836,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:838,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:839,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:840,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:841,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:843,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:844,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:845,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:847,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:848,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:849,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:850,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:853,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:855,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter.c:857,1
    - Dst: test_addr2ip
      Src: /src/dovecot/src/lib/test-event-filter.c:858,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter.c:860,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:861,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:862,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:862,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib/test-event-filter.c:863,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:864,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:864,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:865,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:868,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:869,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 754
    functionDepth: 4
    functionLinenumber: 754
    functionLinenumberEnd: 870
    functionName: test_event_filter_ips
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_unref
    - test_assert_idx
    - event_add_ip
    - t_strdup_printf
    - event_filter_match
    - event_filter_parse
    - test_assert
    - event_add_int
    - test_expect_no_more_errors
    - net_addr2ip
    - test_expect_error_string
    - test_end
    - event_add_str
    - event_filter_unref
    - event_create
    - N_ELEMENTS
    - event_filter_create
    - test_begin
    - test_addr2ip
    linkageType: ''
    returnType: void
    signature: void test_event_filter_ips(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:879,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter.c:940,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:941,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:942,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:944,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:945,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:945,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:947,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:948,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:950,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:951,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 872
    functionDepth: 4
    functionLinenumber: 872
    functionLinenumberEnd: 955
    functionName: test_event_filter_size_values
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - test_assert_idx
    - event_filter_match
    - event_filter_unref
    - event_filter_create
    - event_filter_parse
    - test_end
    - N_ELEMENTS
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_size_values(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:964,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter.c:1037,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:1038,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:1039,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:1041,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:1042,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:1042,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:1044,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-event-filter.c:1045,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:1047,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:1048,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:1051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 957
    functionDepth: 4
    functionLinenumber: 957
    functionLinenumberEnd: 1052
    functionName: test_event_filter_interval_values
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - test_assert_idx
    - event_filter_match
    - event_filter_unref
    - event_filter_create
    - event_filter_parse
    - test_end
    - N_ELEMENTS
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_interval_values(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:1061,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:1063,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:1066,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib/test-event-filter.c:1067,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:1068,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:1068,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:1069,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:1073,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:1073,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:1074,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:1075,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:1078,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter.c:1079,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:1080,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:1080,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:1081,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:1081,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:1082,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:1084,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:1085,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1054
    functionDepth: 4
    functionLinenumber: 1054
    functionLinenumberEnd: 1086
    functionName: test_event_filter_ambiguous_units
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - event_create
    - event_unref
    - event_filter_match
    - test_expect_error_string
    - event_filter_create
    - event_filter_parse
    - event_filter_unref
    - test_end
    - test_assert
    - event_add_str
    - event_add_int
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_ambiguous_units(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter.c:1096,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter.c:1098,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib/test-event-filter.c:1101,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:1103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:1104,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:1104,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:1105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:1107,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:1107,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:1108,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:1109,1
    - Dst: event_add_timeval
      Src: /src/dovecot/src/lib/test-event-filter.c:1112,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter.c:1114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:1115,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter.c:1115,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-event-filter.c:1116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-filter.c:1118,1
    - Dst: event_filter_match
      Src: /src/dovecot/src/lib/test-event-filter.c:1118,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-event-filter.c:1119,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:1120,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter.c:1122,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter.c:1123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1088
    functionDepth: 4
    functionLinenumber: 1088
    functionLinenumberEnd: 1124
    functionName: test_event_filter_timeval_values
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - event_create
    - event_unref
    - event_filter_match
    - test_expect_error_string
    - event_filter_create
    - event_filter_parse
    - test_end
    - test_assert
    - event_filter_unref
    - test_begin
    - event_add_timeval
    linkageType: ''
    returnType: void
    signature: void test_event_filter_timeval_values(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_event_filter_strings
      Src: /src/dovecot/src/lib/test-event-filter.c:1128,1
    - Dst: test_event_filter_override_parent_fields
      Src: /src/dovecot/src/lib/test-event-filter.c:1129,1
    - Dst: test_event_filter_override_global_fields
      Src: /src/dovecot/src/lib/test-event-filter.c:1130,1
    - Dst: test_event_filter_clear_parent_fields
      Src: /src/dovecot/src/lib/test-event-filter.c:1131,1
    - Dst: test_event_filter_clear_global_fields
      Src: /src/dovecot/src/lib/test-event-filter.c:1132,1
    - Dst: test_event_filter_inc_int
      Src: /src/dovecot/src/lib/test-event-filter.c:1133,1
    - Dst: test_event_filter_parent_category_match
      Src: /src/dovecot/src/lib/test-event-filter.c:1134,1
    - Dst: test_event_filter_strlist
      Src: /src/dovecot/src/lib/test-event-filter.c:1135,1
    - Dst: test_event_filter_strlist_recursive
      Src: /src/dovecot/src/lib/test-event-filter.c:1136,1
    - Dst: test_event_filter_strlist_global_events
      Src: /src/dovecot/src/lib/test-event-filter.c:1137,1
    - Dst: test_event_filter_named_and_str
      Src: /src/dovecot/src/lib/test-event-filter.c:1138,1
    - Dst: test_event_filter_named_or_str
      Src: /src/dovecot/src/lib/test-event-filter.c:1139,1
    - Dst: test_event_filter_named_separate_from_str
      Src: /src/dovecot/src/lib/test-event-filter.c:1140,1
    - Dst: test_event_filter_duration
      Src: /src/dovecot/src/lib/test-event-filter.c:1141,1
    - Dst: test_event_filter_numbers
      Src: /src/dovecot/src/lib/test-event-filter.c:1142,1
    - Dst: test_event_filter_ips
      Src: /src/dovecot/src/lib/test-event-filter.c:1143,1
    - Dst: test_event_filter_size_values
      Src: /src/dovecot/src/lib/test-event-filter.c:1144,1
    - Dst: test_event_filter_interval_values
      Src: /src/dovecot/src/lib/test-event-filter.c:1145,1
    - Dst: test_event_filter_ambiguous_units
      Src: /src/dovecot/src/lib/test-event-filter.c:1146,1
    - Dst: test_event_filter_timeval_values
      Src: /src/dovecot/src/lib/test-event-filter.c:1147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1126
    functionDepth: 6
    functionLinenumber: 1126
    functionLinenumberEnd: 1148
    functionName: test_event_filter
    functionSourceFile: /src/dovecot/src/lib/test-event-filter.c
    functionUses: 0
    functionsReached:
    - test_event_filter_ips
    - test_event_filter_timeval_values
    - test_event_filter_named_separate_from_str
    - test_event_filter_clear_global_fields
    - test_event_filter_inc_int
    - test_event_filter_named_or_str
    - test_event_filter_numbers
    - test_event_filter_strlist_recursive
    - test_event_filter_interval_values
    - test_event_filter_duration
    - test_event_filter_strings
    - test_event_filter_ambiguous_units
    - test_event_filter_override_parent_fields
    - test_event_filter_clear_parent_fields
    - test_event_filter_parent_category_match
    - test_event_filter_size_values
    - test_event_filter_strlist
    - test_event_filter_override_global_fields
    - test_event_filter_named_and_str
    - test_event_filter_strlist_global_events
    linkageType: ''
    returnType: void
    signature: void test_event_filter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crc32_data_more
      Src: /src/dovecot/src/lib/crc32.c:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 10
    functionName: crc32_data
    functionSourceFile: /src/dovecot/src/lib/crc32.c
    functionUses: 3
    functionsReached:
    - crc32_data_more
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crc32_data(const void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crc32_z
      Src: /src/dovecot/src/lib/crc32.c:19,1
    - Dst: crc32_z
      Src: /src/dovecot/src/lib/crc32.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - crc
    - data
    - size
    argTypes:
    - uint32_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 25
    functionName: crc32_data_more
    functionSourceFile: /src/dovecot/src/lib/crc32.c
    functionUses: 9
    functionsReached:
    - crc32_z
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t crc32_data_more(uint32_t crc, const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - uint64_t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: SHA3_KECCAK_SPONGE_WORDS
    functionSourceFile: /src/dovecot/src/lib/sha3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA3_KECCAK_SPONGE_WORDS(uint64_t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_ref
      Src: /src/dovecot/src/lib/hash.c:69,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/hash.c:70,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/hash.c:73,1
    - Dst: primes_closest
      Src: /src/dovecot/src/lib/hash.c:73,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/hash.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - table_r
    - node_pool
    - initial_size
    - hash_cb
    - key_compare_cb
    argTypes:
    - struct hash_table**
    - pool_t
    - unsigned int
    - hash_callback_t*
    - hash_cmp_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 81
    functionName: hash_table_create
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 56
    functionsReached:
    - primes_closest
    - I_MAX
    - pool_ref
    - i_new
    linkageType: ''
    returnType: void
    signature: "void hash_table_create(struct hash_table **table_r, pool_t node_pool,\n\t\t
      \      unsigned int initial_size, hash_callback_t *hash_cb,\n\t\t       hash_cmp_callback_t
      *key_compare_cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib/hash.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: direct_hash
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST_TO
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int direct_hash(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: direct_cmp
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int direct_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib/hash.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - table_r
    - node_pool
    - initial_size
    argTypes:
    - struct hash_table**
    - pool_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: hash_table_create_direct
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 14
    functionsReached:
    - hash_table_create
    linkageType: ''
    returnType: void
    signature: "void hash_table_create_direct(struct hash_table **table_r, pool_t
      node_pool,\n\t\t\t      unsigned int initial_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib/hash.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct hash_table*
    - struct hash_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 109
    functionName: free_node
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - p_free
    linkageType: ''
    returnType: void
    signature: void free_node(struct hash_table *table, struct hash_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib/hash.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct hash_table*
    - struct hash_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 120
    functionName: destroy_node_list
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - p_free
    linkageType: ''
    returnType: void
    signature: void destroy_node_list(struct hash_table *table, struct hash_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: destroy_node_list
      Src: /src/dovecot/src/lib/hash.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: hash_table_destroy_nodes
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - destroy_node_list
    linkageType: ''
    returnType: void
    signature: void hash_table_destroy_nodes(struct hash_table *table)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:140,1
    - Dst: hash_table_destroy_nodes
      Src: /src/dovecot/src/lib/hash.c:143,1
    - Dst: destroy_node_list
      Src: /src/dovecot/src/lib/hash.c:144,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/hash.c:147,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/hash.c:148,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/hash.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _table
    argTypes:
    - struct hash_table**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 132
    functionDepth: 3
    functionLinenumber: 132
    functionLinenumberEnd: 150
    functionName: hash_table_destroy
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 65
    functionsReached:
    - hash_table_destroy_nodes
    - destroy_node_list
    - pool_unref
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void hash_table_destroy(struct hash_table **_table)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:154,1
    - Dst: hash_table_destroy_nodes
      Src: /src/dovecot/src/lib/hash.c:157,1
    - Dst: destroy_node_list
      Src: /src/dovecot/src/lib/hash.c:161,1
    - Dst: memset
      Src: /src/dovecot/src/lib/hash.c:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - table
    - free_nodes
    argTypes:
    - struct hash_table*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 152
    functionDepth: 3
    functionLinenumber: 152
    functionLinenumberEnd: 169
    functionName: hash_table_clear
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 11
    functionsReached:
    - hash_table_destroy_nodes
    - destroy_node_list
    - i_assert
    - memset
    linkageType: ''
    returnType: void
    signature: void hash_table_clear(struct hash_table *table, bool free_nodes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct hash_table*::key_compare_cb
      Src: /src/dovecot/src/lib/hash.c:181,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - table
    - key
    - hash
    argTypes:
    - struct hash_table*
    - void*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 188
    functionName: hash_table_lookup_node
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - struct hash_table*::key_compare_cb
    linkageType: ''
    returnType: struct hash_node
    signature: "struct hash_node *\nhash_table_lookup_node(const struct hash_table
      *table,\n\t\t       const void *key, unsigned int hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_node
      Src: /src/dovecot/src/lib/hash.c:194,1
    - Dst: struct hash_table*::hash_cb
      Src: /src/dovecot/src/lib/hash.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - table
    - key
    argTypes:
    - struct hash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: hash_table_lookup
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 127
    functionsReached:
    - struct hash_table*::hash_cb
    - hash_table_lookup_node
    linkageType: ''
    returnType: void
    signature: void *hash_table_lookup(const struct hash_table *table, const void
      *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_node
      Src: /src/dovecot/src/lib/hash.c:204,1
    - Dst: struct hash_table*::hash_cb
      Src: /src/dovecot/src/lib/hash.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - table
    - lookup_key
    - orig_key
    - value
    argTypes:
    - struct hash_table*
    - void*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 212
    functionName: hash_table_lookup_full
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 22
    functionsReached:
    - struct hash_table*::hash_cb
    - hash_table_lookup_node
    linkageType: ''
    returnType: bool
    signature: "bool hash_table_lookup_full(const struct hash_table *table,\n\t\t\t
      \   const void *lookup_key,\n\t\t\t    void **orig_key, void **value)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:222,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:223,1
    - Dst: struct hash_table*::hash_cb
      Src: /src/dovecot/src/lib/hash.c:227,1
    - Dst: hash_table_lookup_node
      Src: /src/dovecot/src/lib/hash.c:231,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:233,1
    - Dst: struct hash_table*::key_compare_cb
      Src: /src/dovecot/src/lib/hash.c:251,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:252,1
    - Dst: struct hash_table*::key_compare_cb
      Src: /src/dovecot/src/lib/hash.c:265,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:266,1
    - Dst: hash_table_resize
      Src: /src/dovecot/src/lib/hash.c:276,1
    - Dst: hash_table_insert_node
      Src: /src/dovecot/src/lib/hash.c:278,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/hash.c:283,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 4
    argNames:
    - table
    - key
    - value
    - opcode
    argTypes:
    - struct hash_table*
    - void*
    - void*
    - enum hash_table_operation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 296
    functionName: hash_table_insert_node
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 1
    functionsReached:
    - struct hash_table*::key_compare_cb
    - p_new
    - struct hash_table*::hash_cb
    - hash_table_lookup_node
    - hash_table_resize
    - i_assert
    - hash_table_insert_node
    linkageType: ''
    returnType: void
    signature: "void hash_table_insert_node(struct hash_table *table, void *key, void
      *value,\n\t\t\t     enum hash_table_operation opcode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_insert_node
      Src: /src/dovecot/src/lib/hash.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - table
    - key
    - value
    argTypes:
    - struct hash_table*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 301
    functionName: hash_table_insert
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 74
    functionsReached:
    - hash_table_insert_node
    linkageType: ''
    returnType: void
    signature: void hash_table_insert(struct hash_table *table, void *key, void *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_insert_node
      Src: /src/dovecot/src/lib/hash.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - table
    - key
    - value
    argTypes:
    - struct hash_table*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 306
    functionName: hash_table_update
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 22
    functionsReached:
    - hash_table_insert_node
    linkageType: ''
    returnType: void
    signature: void hash_table_update(struct hash_table *table, void *key, void *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:313,1
    - Dst: free_node
      Src: /src/dovecot/src/lib/hash.c:321,1
    - Dst: free_node
      Src: /src/dovecot/src/lib/hash.c:331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - table
    - root
    argTypes:
    - struct hash_table*
    - struct hash_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 333
    functionName: hash_table_compress
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - i_assert
    - free_node
    linkageType: ''
    returnType: void
    signature: void hash_table_compress(struct hash_table *table, struct hash_node
      *root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_compress
      Src: /src/dovecot/src/lib/hash.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 335
    functionDepth: 3
    functionLinenumber: 335
    functionLinenumberEnd: 343
    functionName: hash_table_compress_removed
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - hash_table_compress
    linkageType: ''
    returnType: void
    signature: void hash_table_compress_removed(struct hash_table *table)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct hash_table*::hash_cb
      Src: /src/dovecot/src/lib/hash.c:350,1
    - Dst: hash_table_lookup_node
      Src: /src/dovecot/src/lib/hash.c:352,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/hash.c:353,1
    - Dst: hash_table_resize
      Src: /src/dovecot/src/lib/hash.c:361,1
    - Dst: hash_table_compress
      Src: /src/dovecot/src/lib/hash.c:362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - table
    - key
    argTypes:
    - struct hash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 364
    functionName: hash_table_try_remove
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - hash_table_compress
    - unlikely
    - struct hash_table*::hash_cb
    - hash_table_lookup_node
    - hash_table_resize
    linkageType: ''
    returnType: bool
    signature: bool hash_table_try_remove(struct hash_table *table, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: hash_table_count
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int hash_table_count(const struct hash_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_freeze
      Src: /src/dovecot/src/lib/hash.c:375,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/hash.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 381
    functionName: hash_table_iterate_init
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 51
    functionsReached:
    - i_new
    - hash_table_freeze
    linkageType: ''
    returnType: struct hash_iterate_context
    signature: struct hash_iterate_context *hash_table_iterate_init(struct hash_table
      *table)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct hash_iterate_context*
    - struct hash_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 399
    functionName: hash_table_iterate_next
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct hash_node
    signature: "struct hash_node *\nhash_table_iterate_next(struct hash_iterate_context
      *ctx,\n\t\t\tstruct hash_node *node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_next
      Src: /src/dovecot/src/lib/hash.c:408,1
    - Dst: hash_table_iterate_next
      Src: /src/dovecot/src/lib/hash.c:416,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - key_r
    - value_r
    argTypes:
    - struct hash_iterate_context*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 418
    functionName: hash_table_iterate
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 51
    functionsReached:
    - hash_table_iterate_next
    linkageType: ''
    returnType: bool
    signature: "bool hash_table_iterate(struct hash_iterate_context *ctx,\n\t\t\tvoid
      **key_r, void **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_thaw
      Src: /src/dovecot/src/lib/hash.c:428,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/hash.c:429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct hash_iterate_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 430
    functionName: hash_table_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 49
    functionsReached:
    - hash_table_thaw
    - i_free
    linkageType: ''
    returnType: void
    signature: void hash_table_iterate_deinit(struct hash_iterate_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 435
    functionName: hash_table_freeze
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hash_table_freeze(struct hash_table *table)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:439,1
    - Dst: hash_table_resize
      Src: /src/dovecot/src/lib/hash.c:445,1
    - Dst: hash_table_compress_removed
      Src: /src/dovecot/src/lib/hash.c:446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 437
    functionDepth: 4
    functionLinenumber: 437
    functionLinenumberEnd: 448
    functionName: hash_table_thaw
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 1
    functionsReached:
    - hash_table_resize
    - hash_table_compress_removed
    - i_assert
    linkageType: ''
    returnType: void
    signature: void hash_table_thaw(struct hash_table *table)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash.c:456,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/hash.c:462,1
    - Dst: primes_closest
      Src: /src/dovecot/src/lib/hash.c:462,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/hash.c:474,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/hash.c:475,1
    - Dst: hash_table_insert_node
      Src: /src/dovecot/src/lib/hash.c:486,1
    - Dst: hash_table_insert_node
      Src: /src/dovecot/src/lib/hash.c:494,1
    - Dst: free_node
      Src: /src/dovecot/src/lib/hash.c:497,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/hash.c:503,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - table
    - grow
    argTypes:
    - struct hash_table*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 450
    functionDepth: 2
    functionLinenumber: 450
    functionLinenumberEnd: 505
    functionName: hash_table_resize
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 3
    functionsReached:
    - primes_closest
    - free_node
    - I_MAX
    - i_new
    - i_assert
    - i_free
    - hash_table_insert_node
    linkageType: ''
    returnType: bool
    signature: bool hash_table_resize(struct hash_table *table, bool grow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_freeze
      Src: /src/dovecot/src/lib/hash.c:512,1
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib/hash.c:514,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib/hash.c:515,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib/hash.c:516,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib/hash.c:517,1
    - Dst: hash_table_thaw
      Src: /src/dovecot/src/lib/hash.c:519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct hash_table*
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 507
    functionDepth: 2
    functionLinenumber: 507
    functionLinenumberEnd: 520
    functionName: hash_table_copy
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - hash_table_freeze
    - hash_table_thaw
    - hash_table_insert
    linkageType: ''
    returnType: void
    signature: void hash_table_copy(struct hash_table *dest, struct hash_table *src)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 539
    functionName: ATTR_NO_SANITIZE_INTEGER::str_hash
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: 'unsigned int ATTR_NO_SANITIZE_INTEGER

      str_hash(const char *p)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/hash.c:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 558
    functionName: ATTR_NO_SANITIZE_INTEGER::strcase_hash
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - i_toupper
    linkageType: ''
    returnType: unsigned int
    signature: 'unsigned int ATTR_NO_SANITIZE_INTEGER

      strcase_hash(const char *p)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - p
    - size
    argTypes:
    - void*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 575
    functionName: ATTR_NO_SANITIZE_INTEGER::mem_hash
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: 'unsigned int ATTR_NO_SANITIZE_INTEGER

      mem_hash(const void *p, unsigned int size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 577
    functionDepth: 0
    functionLinenumber: 577
    functionLinenumberEnd: 593
    functionName: ATTR_NO_SANITIZE_INTEGER::strfastcase_hash
    functionSourceFile: /src/dovecot/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: 'unsigned int ATTR_NO_SANITIZE_INTEGER

      strfastcase_hash(const char *p)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-failure-at.c:17,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-failure-at.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 21
    functionName: i_stream_failure_at_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-failure-at.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_failure_at_destroy(struct iostream_private *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-failure-at.c:27,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-failure-at.c:31,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib/istream-failure-at.c:34,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-failure-at.c:43,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-failure-at.c:51,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-failure-at.c:61,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 23
    functionDepth: 4
    functionLinenumber: 23
    functionLinenumberEnd: 65
    functionName: i_stream_failure_at_read
    functionSourceFile: /src/dovecot/src/lib/istream-failure-at.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_stream_set_error
    - i_stream_read_copy_from_parent
    - i_stream_seek
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_failure_at_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-failure-at.c:73,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/istream-failure-at.c:84,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-failure-at.c:86,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-failure-at.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - input
    - failure_offset
    - stream_errno
    - error_string
    argTypes:
    - struct istream*
    - uoff_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 88
    functionName: i_stream_create_failure_at
    functionSourceFile: /src/dovecot/src/lib/istream-failure-at.c
    functionUses: 5
    functionsReached:
    - i_strdup
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_failure_at(struct istream *input,
      uoff_t failure_offset,\n\t\t\t   int stream_errno, const char *error_string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib/istream-failure-at.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - stream_errno
    - error_string
    argTypes:
    - struct istream*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 5
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: i_stream_create_failure_at_eof
    functionSourceFile: /src/dovecot/src/lib/istream-failure-at.c
    functionUses: 2
    functionsReached:
    - i_stream_create_failure_at
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_failure_at_eof(struct istream *input,
      int stream_errno,\n\t\t\t       const char *error_string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib/wildcard-match.h:12,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mask
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 13
    functionName: wildcard_is_literal
    functionSourceFile: /src/dovecot/src/lib/wildcard-match.h
    functionUses: 2
    functionsReached:
    - strpbrk
    linkageType: ''
    returnType: bool
    signature: bool wildcard_is_literal(const char *mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib/execv-const.c:15,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/execv-const.c:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 19
    functionName: argv_drop_const
    functionSourceFile: /src/dovecot/src/lib/execv-const.c
    functionUses: 0
    functionsReached:
    - t_new
    - t_strdup_noconst
    linkageType: ''
    returnType: char
    signature: char **argv_drop_const(const char *const argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: execv
      Src: /src/dovecot/src/lib/execv-const.c:23,1
    - Dst: argv_drop_const
      Src: /src/dovecot/src/lib/execv-const.c:23,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/execv-const.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - path
    - argv
    argTypes:
    - char*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 26
    functionName: execv_const
    functionSourceFile: /src/dovecot/src/lib/execv-const.c
    functionUses: 4
    functionsReached:
    - i_fatal_status
    - execv
    - argv_drop_const
    linkageType: ''
    returnType: void
    signature: void execv_const(const char *path, const char *const argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: execvp
      Src: /src/dovecot/src/lib/execv-const.c:30,1
    - Dst: argv_drop_const
      Src: /src/dovecot/src/lib/execv-const.c:30,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/execv-const.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - file
    - argv
    argTypes:
    - char*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: execvp_const
    functionSourceFile: /src/dovecot/src/lib/execv-const.c
    functionUses: 2
    functionsReached:
    - argv_drop_const
    - execvp
    - i_fatal_status
    linkageType: ''
    returnType: void
    signature: void execvp_const(const char *file, const char *const argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-file.c:19,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-file.c:21,1
    - Dst: iostream_fd_unref
      Src: /src/dovecot/src/lib/istream-file.c:24,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream-file.c:29,1
    - Dst: close
      Src: /src/dovecot/src/lib/istream-file.c:29,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/istream-file.c:30,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-file.c:31,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 15
    functionDepth: 2
    functionLinenumber: 15
    functionLinenumberEnd: 35
    functionName: i_stream_file_close
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 1
    functionsReached:
    - container_of
    - i_error
    - iostream_fd_unref
    - unlikely
    - i_stream_get_name
    - close
    linkageType: ''
    returnType: void
    signature: "void i_stream_file_close(struct iostream_private *stream,\n\t\t\t
      bool close_parent ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-file.c:39,1
    - Dst: open
      Src: /src/dovecot/src/lib/istream-file.c:41,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-file.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 49
    functionName: i_stream_file_open
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 0
    functionsReached:
    - i_stream_get_name
    - open
    - io_stream_set_error
    linkageType: ''
    returnType: int
    signature: int i_stream_file_open(struct istream_private *stream)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-file.c:54,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-file.c:59,1
    - Dst: i_stream_file_open
      Src: /src/dovecot/src/lib/istream-file.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:65,1
    - Dst: pread
      Src: /src/dovecot/src/lib/istream-file.c:71,1
    - Dst: read
      Src: /src/dovecot/src/lib/istream-file.c:78,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/istream-file.c:89,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:97,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-file.c:99,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-file.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:113,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:114,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:128,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:129,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 131
    functionName: i_stream_file_read
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 1
    functionsReached:
    - container_of
    - io_stream_set_error
    - i_stream_try_alloc
    - unlikely
    - read
    - i_stream_file_open
    - pread
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_file_read(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-file.c:137,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/istream-file.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 148
    functionName: i_stream_file_seek
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 0
    functionsReached:
    - i_panic
    - container_of
    linkageType: ''
    returnType: void
    signature: "void i_stream_file_seek(struct istream_private *stream, uoff_t v_offset,\n\t\t\t
      \      bool mark ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 159
    functionName: i_stream_file_sync
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_stream_file_sync(struct istream_private *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-file.c:165,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-file.c:166,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/istream-file.c:171,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-file.c:173,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/istream-file.c:175,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-file.c:175,1
    - Dst: stat
      Src: /src/dovecot/src/lib/istream-file.c:179,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-file.c:181,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/istream-file.c:183,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-file.c:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - stream
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 188
    functionName: i_stream_file_stat
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_error
    - io_stream_set_error
    - i_stream_get_error
    - fstat
    - stat
    - i_stream_get_name
    linkageType: ''
    returnType: int
    signature: int i_stream_file_stat(struct istream_private *stream, bool exact ATTR_UNUSED)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib/istream-file.c:213,1
    - Dst: S_ISREG
      Src: /src/dovecot/src/lib/istream-file.c:215,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib/istream-file.c:217,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-file.c:222,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-file.c:224,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/istream-file.c:232,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:233,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-file.c:236,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-file.c:244,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/istream-file.c:245,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 5
    argNames:
    - fstream
    - fd
    - path
    - max_buffer_size
    - autoclose_fd
    argTypes:
    - struct file_istream*
    - int
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 190
    functionDepth: 4
    functionLinenumber: 190
    functionLinenumberEnd: 247
    functionName: i_stream_create_file_common
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 1
    functionsReached:
    - io_stream_set_error
    - i_stream_set_name
    - t_strdup_printf
    - fcntl
    - fstat
    - S_ISDIR
    - i_stream_create
    - i_assert
    - S_ISREG
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_file_common(struct file_istream
      *fstream,\n\t\t\t    int fd, const char *path,\n\t\t\t    size_t max_buffer_size,
      bool autoclose_fd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:253,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-file.c:255,1
    - Dst: i_stream_create_file_common
      Src: /src/dovecot/src/lib/istream-file.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - max_buffer_size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 5
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: i_stream_create_fd
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 48
    functionsReached:
    - i_assert
    - i_new
    - i_stream_create_file_common
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_fd(int fd, size_t max_buffer_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-file.c:265,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-file.c:267,1
    - Dst: i_stream_create_file_common
      Src: /src/dovecot/src/lib/istream-file.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - max_buffer_size
    argTypes:
    - int*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 260
    functionDepth: 5
    functionLinenumber: 260
    functionLinenumberEnd: 272
    functionName: i_stream_create_fd_autoclose
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 35
    functionsReached:
    - i_assert
    - i_new
    - i_stream_create_file_common
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_fd_autoclose(int *fd, size_t max_buffer_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-file.c:279,1
    - Dst: iostream_fd_ref
      Src: /src/dovecot/src/lib/istream-file.c:281,1
    - Dst: i_stream_create_file_common
      Src: /src/dovecot/src/lib/istream-file.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ref
    - max_buffer_size
    argTypes:
    - struct iostream_fd*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 274
    functionDepth: 5
    functionLinenumber: 274
    functionLinenumberEnd: 284
    functionName: i_stream_create_fd_ref_autoclose
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 1
    functionsReached:
    - iostream_fd_ref
    - i_new
    - i_stream_create_file_common
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *i_stream_create_fd_ref_autoclose(struct iostream_fd
      *ref,\n\t\t\t\t\t\t size_t max_buffer_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-file.c:291,1
    - Dst: i_stream_create_file_common
      Src: /src/dovecot/src/lib/istream-file.c:292,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/istream-file.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - path
    - max_buffer_size
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 286
    functionDepth: 5
    functionLinenumber: 286
    functionLinenumberEnd: 296
    functionName: i_stream_create_file
    functionSourceFile: /src/dovecot/src/lib/istream-file.c
    functionUses: 15
    functionsReached:
    - i_stream_set_name
    - i_new
    - i_stream_create_file_common
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_file(const char *path, size_t max_buffer_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/str-sanitize.c:15,1
    - Dst: i_iscntrl
      Src: /src/dovecot/src/lib/str-sanitize.c:18,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-sanitize.c:22,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - src
    - max_bytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 24
    functionName: str_sanitize_skip_start
    functionSourceFile: /src/dovecot/src/lib/str-sanitize.c
    functionUses: 0
    functionsReached:
    - uni_utf8_get_char_n
    - i_iscntrl
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: size_t str_sanitize_skip_start(const char *src, size_t max_bytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib/str-sanitize.c:35,1
    - Dst: i_iscntrl
      Src: /src/dovecot/src/lib/str-sanitize.c:38,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-sanitize.c:43,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - src
    - max_chars
    argTypes:
    - char*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 27
    functionDepth: 3
    functionLinenumber: 27
    functionLinenumberEnd: 45
    functionName: str_sanitize_skip_start_utf8
    functionSourceFile: /src/dovecot/src/lib/str-sanitize.c
    functionUses: 0
    functionsReached:
    - i_iscntrl
    - i_assert
    - uni_utf8_get_char
    linkageType: ''
    returnType: size_t
    signature: size_t str_sanitize_skip_start_utf8(const char *src, uintmax_t max_chars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_data
      Src: /src/dovecot/src/lib/str-sanitize.c:49,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/str-sanitize.c:50,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-sanitize.c:52,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/str-sanitize.c:58,1
    - Dst: uni_utf8_data_truncate
      Src: /src/dovecot/src/lib/str-sanitize.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dest
    - initial_pos
    argTypes:
    - string_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 60
    functionName: str_sanitize_truncate_char
    functionSourceFile: /src/dovecot/src/lib/str-sanitize.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - str_truncate
    - i_assert
    - uni_utf8_data_truncate
    linkageType: ''
    returnType: void
    signature: void str_sanitize_truncate_char(string_t *dest, unsigned int initial_pos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/str-sanitize.c:64,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/str-sanitize.c:69,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/str-sanitize.c:75,1
    - Dst: i_iscntrl
      Src: /src/dovecot/src/lib/str-sanitize.c:79,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/str-sanitize.c:80,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/str-sanitize.c:82,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/str-sanitize.c:88,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/str-sanitize.c:90,1
    - Dst: str_sanitize_truncate_char
      Src: /src/dovecot/src/lib/str-sanitize.c:91,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/str-sanitize.c:93,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - dest
    - src
    - max_bytes
    argTypes:
    - string_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 95
    functionName: str_sanitize_append
    functionSourceFile: /src/dovecot/src/lib/str-sanitize.c
    functionUses: 1
    functionsReached:
    - i_iscntrl
    - str_append_c
    - str_len
    - uni_utf8_get_char_n
    - str_sanitize_truncate_char
    - str_truncate
    - str_append
    - str_append_data
    linkageType: ''
    returnType: void
    signature: void str_sanitize_append(string_t *dest, const char *src, size_t max_bytes)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-sanitize.c:105,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib/str-sanitize.c:108,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/str-sanitize.c:112,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/str-sanitize.c:115,1
    - Dst: i_iscntrl
      Src: /src/dovecot/src/lib/str-sanitize.c:119,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/str-sanitize.c:120,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/str-sanitize.c:122,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/str-sanitize.c:128,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/str-sanitize.c:129,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - dest
    - src
    - max_cps
    argTypes:
    - string_t*
    - char*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 131
    functionName: str_sanitize_append_utf8
    functionSourceFile: /src/dovecot/src/lib/str-sanitize.c
    functionUses: 1
    functionsReached:
    - i_iscntrl
    - str_len
    - str_append_data
    - str_truncate
    - uni_utf8_get_char
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void str_sanitize_append_utf8(string_t *dest, const char *src,\n\t\t\t
      \     uintmax_t max_cps)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_sanitize_skip_start
      Src: /src/dovecot/src/lib/str-sanitize.c:141,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/str-sanitize.c:145,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/str-sanitize.c:145,1
    - Dst: str_sanitize_append
      Src: /src/dovecot/src/lib/str-sanitize.c:146,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/str-sanitize.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - src
    - max_bytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 133
    functionDepth: 4
    functionLinenumber: 133
    functionLinenumberEnd: 148
    functionName: str_sanitize
    functionSourceFile: /src/dovecot/src/lib/str-sanitize.c
    functionUses: 46
    functionsReached:
    - str_c
    - t_str_new
    - I_MIN
    - str_sanitize_append
    - str_sanitize_skip_start
    linkageType: ''
    returnType: char
    signature: char *str_sanitize(const char *src, size_t max_bytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_sanitize_skip_start_utf8
      Src: /src/dovecot/src/lib/str-sanitize.c:158,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/str-sanitize.c:162,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/str-sanitize.c:162,1
    - Dst: str_sanitize_append_utf8
      Src: /src/dovecot/src/lib/str-sanitize.c:163,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/str-sanitize.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - src
    - max_cps
    argTypes:
    - char*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 165
    functionName: str_sanitize_utf8
    functionSourceFile: /src/dovecot/src/lib/str-sanitize.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - I_MIN
    - str_sanitize_append_utf8
    - str_sanitize_skip_start_utf8
    linkageType: ''
    returnType: char
    signature: char *str_sanitize_utf8(const char *src, uintmax_t max_cps)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/iostream-rawlog.c:33,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/iostream-rawlog.c:34,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/iostream-rawlog.c:38,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/iostream-rawlog.c:39,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/iostream-rawlog.c:40,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/iostream-rawlog.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - rstream
    - line_ends
    argTypes:
    - struct rawlog_iostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 43
    functionName: rawlog_write_timestamp
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 0
    functionsReached:
    - buffer_create_from_data
    - str_printfa
    - o_stream_nsend
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void rawlog_write_timestamp(struct rawlog_iostream *rstream, bool line_ends)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/iostream-rawlog.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rstream
    - flags
    - input
    argTypes:
    - struct rawlog_iostream*
    - enum iostream_rawlog_flags
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: iostream_rawlog_init
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 1
    functionsReached:
    - buffer_create_dynamic
    linkageType: ''
    returnType: void
    signature: "void iostream_rawlog_init(struct rawlog_iostream *rstream,\n\t\t\t
      \ enum iostream_rawlog_flags flags, bool input)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rawlog_write_timestamp
      Src: /src/dovecot/src/lib/iostream-rawlog.c:59,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/iostream-rawlog.c:61,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/iostream-rawlog.c:64,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/iostream-rawlog.c:66,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/iostream-rawlog.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - rstream
    - data
    - size
    - line_ends
    argTypes:
    - struct rawlog_iostream*
    - unsigned char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 54
    functionDepth: 3
    functionLinenumber: 54
    functionLinenumberEnd: 69
    functionName: iostream_rawlog_write_flush
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    - rawlog_write_timestamp
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: "void iostream_rawlog_write_flush(struct rawlog_iostream *rstream,\n\t\t\t
      \   const unsigned char *data, size_t size,\n\t\t\t    bool line_ends)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/lib/iostream-rawlog.c:80,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/iostream-rawlog.c:85,1
    - Dst: iostream_rawlog_write_flush
      Src: /src/dovecot/src/lib/iostream-rawlog.c:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - rstream
    - data
    - size
    argTypes:
    - struct rawlog_iostream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 97
    functionName: iostream_rawlog_write_buffered
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - memchr
    - iostream_rawlog_write_flush
    linkageType: ''
    returnType: void
    signature: "void iostream_rawlog_write_buffered(struct rawlog_iostream *rstream,\n\t\t\t
      \      const unsigned char *data, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rawlog_write_timestamp
      Src: /src/dovecot/src/lib/iostream-rawlog.c:106,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/iostream-rawlog.c:110,1
    - Dst: rawlog_write_timestamp
      Src: /src/dovecot/src/lib/iostream-rawlog.c:112,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/iostream-rawlog.c:117,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - rstream
    - data
    - size
    argTypes:
    - struct rawlog_iostream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 121
    functionName: iostream_rawlog_write_unbuffered
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend
    - rawlog_write_timestamp
    linkageType: ''
    returnType: void
    signature: "void iostream_rawlog_write_unbuffered(struct rawlog_iostream *rstream,\n\t\t\t\t
      const unsigned char *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/iostream-rawlog.c:125,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-rawlog.c:126,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib/iostream-rawlog.c:127,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/iostream-rawlog.c:128,1
    - Dst: iostream_rawlog_close
      Src: /src/dovecot/src/lib/iostream-rawlog.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rstream
    argTypes:
    - struct rawlog_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 131
    functionName: iostream_rawlog_flush_output
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - i_error
    - iostream_rawlog_close
    - o_stream_get_error
    - o_stream_flush
    linkageType: ''
    returnType: void
    signature: void iostream_rawlog_flush_output(struct rawlog_iostream *rstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib/iostream-rawlog.c:139,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/iostream-rawlog.c:141,1
    - Dst: iostream_rawlog_write_buffered
      Src: /src/dovecot/src/lib/iostream-rawlog.c:143,1
    - Dst: iostream_rawlog_write_unbuffered
      Src: /src/dovecot/src/lib/iostream-rawlog.c:145,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/iostream-rawlog.c:146,1
    - Dst: iostream_rawlog_flush_output
      Src: /src/dovecot/src/lib/iostream-rawlog.c:147,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - rstream
    - data
    - size
    argTypes:
    - struct rawlog_iostream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 133
    functionDepth: 5
    functionLinenumber: 133
    functionLinenumberEnd: 148
    functionName: iostream_rawlog_write
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 1
    functionsReached:
    - iostream_rawlog_write_buffered
    - o_stream_uncork
    - iostream_rawlog_write_unbuffered
    - o_stream_cork
    - iostream_rawlog_flush_output
    - io_loop_time_refresh
    linkageType: ''
    returnType: void
    signature: "void iostream_rawlog_write(struct rawlog_iostream *rstream,\n\t\t\t
      \  const unsigned char *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: iostream_rawlog_write_flush
      Src: /src/dovecot/src/lib/iostream-rawlog.c:153,1
    - Dst: iostream_rawlog_flush_output
      Src: /src/dovecot/src/lib/iostream-rawlog.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - rstream
    argTypes:
    - struct rawlog_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: iostream_rawlog_flush
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 1
    functionsReached:
    - iostream_rawlog_write_flush
    - iostream_rawlog_flush_output
    linkageType: ''
    returnType: void
    signature: void iostream_rawlog_flush(struct rawlog_iostream *rstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/iostream-rawlog.c:160,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/iostream-rawlog.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rstream
    argTypes:
    - struct rawlog_iostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 162
    functionName: iostream_rawlog_close
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 2
    functionsReached:
    - o_stream_unref
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void iostream_rawlog_close(struct rawlog_iostream *rstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_rawlog
      Src: /src/dovecot/src/lib/iostream-rawlog.c:173,1
    - Dst: o_stream_create_rawlog
      Src: /src/dovecot/src/lib/iostream-rawlog.c:176,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/iostream-rawlog.c:180,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/iostream-rawlog.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - fd
    - path
    - input
    - output
    argTypes:
    - int
    - char*
    - struct istream**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 164
    functionDepth: 5
    functionLinenumber: 164
    functionLinenumberEnd: 182
    functionName: iostream_rawlog_create_fd
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_create_rawlog
    - o_stream_unref
    - i_stream_create_rawlog
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void iostream_rawlog_create_fd(int fd, const char *path, struct istream
      **input,\n\t\t\t  struct ostream **output)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib/iostream-rawlog.c:195,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/iostream-rawlog.c:198,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/iostream-rawlog.c:200,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/lib/iostream-rawlog.c:203,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-rawlog.c:205,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/lib/iostream-rawlog.c:206,1
    - Dst: net_connect_ip_blocking
      Src: /src/dovecot/src/lib/iostream-rawlog.c:209,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-rawlog.c:211,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/iostream-rawlog.c:211,1
    - Dst: iostream_rawlog_create_fd
      Src: /src/dovecot/src/lib/iostream-rawlog.c:214,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - path
    - input
    - output
    argTypes:
    - char*
    - struct istream**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 184
    functionDepth: 6
    functionLinenumber: 184
    functionLinenumberEnd: 216
    functionName: iostream_rawlog_try_create_tcp
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_error
    - net_connect_ip_blocking
    - str_begins
    - net_gethostbyname
    - iostream_rawlog_create_fd
    - net_str2hostport
    - net_gethosterror
    - net_ip2addr
    linkageType: ''
    returnType: int
    signature: "int iostream_rawlog_try_create_tcp(const char *path,\n\t\t\t       struct
      istream **input, struct ostream **output)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: iostream_rawlog_try_create_tcp
      Src: /src/dovecot/src/lib/iostream-rawlog.c:225,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/lib/iostream-rawlog.c:228,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-rawlog.c:231,1
    - Dst: iostream_rawlog_create_prefix
      Src: /src/dovecot/src/lib/iostream-rawlog.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - dir
    - input
    - output
    argTypes:
    - char*
    - struct istream**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 218
    functionDepth: 7
    functionLinenumber: 218
    functionLinenumberEnd: 233
    functionName: iostream_rawlog_create
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 9
    functionsReached:
    - t_strdup_printf
    - iostream_rawlog_create_prefix
    - iostream_rawlog_try_create_tcp
    - t_strflocaltime
    linkageType: ''
    returnType: int
    signature: "int iostream_rawlog_create(const char *dir, struct istream **input,\n\t\t\t
      \  struct ostream **output)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-rawlog.c:243,1
    - Dst: open
      Src: /src/dovecot/src/lib/iostream-rawlog.c:244,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib/iostream-rawlog.c:246,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-rawlog.c:247,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-rawlog.c:251,1
    - Dst: open
      Src: /src/dovecot/src/lib/iostream-rawlog.c:252,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib/iostream-rawlog.c:254,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-rawlog.c:255,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/iostream-rawlog.c:256,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/iostream-rawlog.c:257,1
    - Dst: i_stream_create_rawlog
      Src: /src/dovecot/src/lib/iostream-rawlog.c:264,1
    - Dst: o_stream_create_rawlog
      Src: /src/dovecot/src/lib/iostream-rawlog.c:267,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/iostream-rawlog.c:270,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/iostream-rawlog.c:271,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - prefix
    - input
    - output
    argTypes:
    - char*
    - struct istream**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 235
    functionDepth: 5
    functionLinenumber: 235
    functionLinenumberEnd: 273
    functionName: iostream_rawlog_create_prefix
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 1
    functionsReached:
    - i_error
    - i_close_fd
    - o_stream_create_rawlog
    - open
    - t_strdup_printf
    - o_stream_unref
    - i_unlink
    - i_stream_create_rawlog
    - ENOACCESS
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: "int iostream_rawlog_create_prefix(const char *prefix, struct istream
      **input,\n\t\t\t\t  struct ostream **output)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: iostream_rawlog_try_create_tcp
      Src: /src/dovecot/src/lib/iostream-rawlog.c:280,1
    - Dst: open
      Src: /src/dovecot/src/lib/iostream-rawlog.c:282,1
    - Dst: ENOACCESS
      Src: /src/dovecot/src/lib/iostream-rawlog.c:284,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-rawlog.c:285,1
    - Dst: iostream_rawlog_create_fd
      Src: /src/dovecot/src/lib/iostream-rawlog.c:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - path
    - input
    - output
    argTypes:
    - char*
    - struct istream**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 275
    functionDepth: 7
    functionLinenumber: 275
    functionLinenumberEnd: 290
    functionName: iostream_rawlog_create_path
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 1
    functionsReached:
    - i_error
    - open
    - iostream_rawlog_create_fd
    - iostream_rawlog_try_create_tcp
    - ENOACCESS
    linkageType: ''
    returnType: int
    signature: "int iostream_rawlog_create_path(const char *path, struct istream **input,\n\t\t\t\tstruct
      ostream **output)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_rawlog_from_stream
      Src: /src/dovecot/src/lib/iostream-rawlog.c:304,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/iostream-rawlog.c:306,1
    - Dst: o_stream_create_rawlog_from_stream
      Src: /src/dovecot/src/lib/iostream-rawlog.c:310,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/iostream-rawlog.c:312,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/iostream-rawlog.c:315,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - rawlog_output
    - input
    - output
    argTypes:
    - struct ostream*
    - struct istream**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 292
    functionDepth: 5
    functionLinenumber: 292
    functionLinenumberEnd: 316
    functionName: iostream_rawlog_create_from_stream
    functionSourceFile: /src/dovecot/src/lib/iostream-rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_create_rawlog_from_stream
    - o_stream_unref
    - o_stream_ref
    - i_stream_create_rawlog_from_stream
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void iostream_rawlog_create_from_stream(struct ostream *rawlog_output,\n\t\t\t\t\tstruct
      istream **input,\n\t\t\t\t\tstruct ostream **output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cpu_limit_get_usage_msecs
      Src: /src/dovecot/src/lib/cpu-limit.h:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - climit
    - type
    argTypes:
    - struct cpu_limit*
    - enum cpu_limit_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: cpu_limit_get_usage_secs
    functionSourceFile: /src/dovecot/src/lib/cpu-limit.h
    functionUses: 0
    functionsReached:
    - cpu_limit_get_usage_msecs
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int cpu_limit_get_usage_secs(struct cpu_limit *climit, enum
      cpu_limit_type type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/uri-util.h:50,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/uri-util.h:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: uri_char_sanitize
    functionSourceFile: /src/dovecot/src/lib/uri-util.h
    functionUses: 2
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *uri_char_sanitize(unsigned char c)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - mode
    argTypes:
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 20
    functionName: mkdir_get_executable_mode
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: mode_t
    signature: mode_t mkdir_get_executable_mode(mode_t mode)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/dovecot/src/lib/mkdir-parents.c:32,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib/mkdir-parents.c:33,1
    - Dst: umask
      Src: /src/dovecot/src/lib/mkdir-parents.c:34,1
    - Dst: open
      Src: /src/dovecot/src/lib/mkdir-parents.c:42,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mkdir-parents.c:46,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mkdir-parents.c:60,1
    - Dst: fchown
      Src: /src/dovecot/src/lib/mkdir-parents.c:63,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/mkdir-parents.c:64,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib/mkdir-parents.c:66,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mkdir-parents.c:67,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mkdir-parents.c:71,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib/mkdir-parents.c:71,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/mkdir-parents.c:76,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/mkdir-parents.c:77,1
    - Dst: i_getpwuid
      Src: /src/dovecot/src/lib/mkdir-parents.c:82,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/mkdir-parents.c:83,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/mkdir-parents.c:86,1
    - Dst: i_getgrgid
      Src: /src/dovecot/src/lib/mkdir-parents.c:91,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/mkdir-parents.c:92,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mkdir-parents.c:95,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/mkdir-parents.c:95,1
    - Dst: fchmod
      Src: /src/dovecot/src/lib/mkdir-parents.c:101,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib/mkdir-parents.c:103,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mkdir-parents.c:104,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/mkdir-parents.c:106,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/mkdir-parents.c:107,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/mkdir-parents.c:111,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 63
    argCount: 5
    argNames:
    - path
    - mode
    - uid
    - gid
    - gid_origin
    argTypes:
    - char*
    - mode_t
    - uid_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 113
    functionName: mkdir_chown_full
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - i_error
    - rmdir
    - fchmod
    - i_close_fd
    - umask
    - open
    - i_getgrgid
    - mkdir
    - i_getpwuid
    - i_assert
    - eperm_error_get_chgrp
    - fchown
    linkageType: ''
    returnType: void
    signature: "void mkdir_chown_full(const char *path, mode_t mode, uid_t uid,\n\t\t
      gid_t gid, const char *gid_origin)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mkdir_chown_full
      Src: /src/dovecot/src/lib/mkdir-parents.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - path
    - mode
    - uid
    - gid
    argTypes:
    - char*
    - mode_t
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 4
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: mkdir_chown
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 0
    functionsReached:
    - mkdir_chown_full
    linkageType: ''
    returnType: int
    signature: int mkdir_chown(const char *path, mode_t mode, uid_t uid, gid_t gid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mkdir_chown_full
      Src: /src/dovecot/src/lib/mkdir-parents.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - path
    - mode
    - gid
    - gid_origin
    argTypes:
    - char*
    - mode_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 120
    functionDepth: 4
    functionLinenumber: 120
    functionLinenumberEnd: 124
    functionName: mkdir_chgrp
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 1
    functionsReached:
    - mkdir_chown_full
    linkageType: ''
    returnType: int
    signature: "int mkdir_chgrp(const char *path, mode_t mode,\n\t\tgid_t gid, const
      char *gid_origin)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mkdir_chown_full
      Src: /src/dovecot/src/lib/mkdir-parents.c:133,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib/mkdir-parents.c:138,1
    - Dst: mkdir_parents_chown_full
      Src: /src/dovecot/src/lib/mkdir-parents.c:143,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/mkdir-parents.c:143,1
    - Dst: mkdir_chown_full
      Src: /src/dovecot/src/lib/mkdir-parents.c:151,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 5
    argNames:
    - path
    - mode
    - uid
    - gid
    - gid_origin
    argTypes:
    - char*
    - mode_t
    - uid_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 127
    functionDepth: 4
    functionLinenumber: 127
    functionLinenumberEnd: 153
    functionName: mkdir_parents_chown_full
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 1
    functionsReached:
    - t_strdup_until
    - mkdir_chown_full
    - mkdir_parents_chown_full
    - strrchr
    linkageType: ''
    returnType: void
    signature: "void mkdir_parents_chown_full(const char *path, mode_t mode, uid_t
      uid, gid_t gid,\n\t\t\t const char *gid_origin)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mkdir_parents_chown_full
      Src: /src/dovecot/src/lib/mkdir-parents.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - path
    - mode
    - uid
    - gid
    argTypes:
    - char*
    - mode_t
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 5
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: mkdir_parents_chown
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 1
    functionsReached:
    - mkdir_parents_chown_full
    linkageType: ''
    returnType: int
    signature: int mkdir_parents_chown(const char *path, mode_t mode, uid_t uid, gid_t
      gid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mkdir_parents_chown_full
      Src: /src/dovecot/src/lib/mkdir-parents.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - path
    - mode
    - gid
    - gid_origin
    argTypes:
    - char*
    - mode_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 5
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: mkdir_parents_chgrp
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 9
    functionsReached:
    - mkdir_parents_chown_full
    linkageType: ''
    returnType: int
    signature: "int mkdir_parents_chgrp(const char *path, mode_t mode,\n\t\t\tgid_t
      gid, const char *gid_origin)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mkdir_parents_chown
      Src: /src/dovecot/src/lib/mkdir-parents.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - mode
    argTypes:
    - char*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 6
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: mkdir_parents
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 10
    functionsReached:
    - mkdir_parents_chown
    linkageType: ''
    returnType: int
    signature: int mkdir_parents(const char *path, mode_t mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib/mkdir-parents.c:178,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/mkdir-parents.c:179,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib/mkdir-parents.c:183,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/mkdir-parents.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - path
    - root_dir_r
    - st_r
    argTypes:
    - char*
    - char**
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 191
    functionName: stat_first_parent
    functionSourceFile: /src/dovecot/src/lib/mkdir-parents.c
    functionUses: 2
    functionsReached:
    - strcmp
    - t_strdup_until
    - stat
    - strrchr
    linkageType: ''
    returnType: int
    signature: "int stat_first_parent(const char *path, const char **root_dir_r,\n\t\t
      \     struct stat *st_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key_type
    - ','
    - value_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 12
    functionName: HASH_TABLE_UNION
    functionSourceFile: /src/dovecot/src/lib/hash-decl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_TABLE_UNION(key_type, value_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - key_type
    - ','
    - value_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: HASH_TABLE_DEFINE_TYPE
    functionSourceFile: /src/dovecot/src/lib/hash-decl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_TABLE_DEFINE_TYPE(name, key_type, value_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key_type
    - ','
    - value_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: HASH_TABLE
    functionSourceFile: /src/dovecot/src/lib/hash-decl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_TABLE(key_type, value_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: HASH_TABLE_TYPE
    functionSourceFile: /src/dovecot/src/lib/hash-decl.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_TABLE_TYPE(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:28,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:29,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base64.c:30,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:31,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib/test-base64.c:32,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:32,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:33,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-base64.c:33,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base64.c:33,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:34,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:35,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:35,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:36,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 39
    functionName: test_base64_encode
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - str_len
    - strlen
    - base64_encode
    - test_end
    - str_truncate
    - MAX_BASE64_ENCODED_SIZE
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base64_encode(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:75,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base64.c:76,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:82,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:82,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/test-base64.c:84,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-base64.c:86,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib/test-base64.c:89,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:89,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:92,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:93,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:93,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:93,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base64.c:94,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base64.c:94,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:95,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:97,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:98,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:98,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:99,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 47
    functionDepth: 5
    functionLinenumber: 47
    functionLinenumberEnd: 103
    functionName: test_base64_decode
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - MAX_BASE64_DECODED_SIZE
    - base64_decode
    - test_assert_idx
    - t_malloc0
    - str_len
    - strlen
    - str_data
    - test_end
    - memcmp
    - buffer_create_from_data
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base64_decode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:111,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:112,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:114,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:116,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-base64.c:118,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:120,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:121,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib/test-base64.c:122,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:123,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib/test-base64.c:123,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base64.c:123,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:123,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:125,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:125,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base64.c:126,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base64.c:126,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 129
    functionName: test_base64_random
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - base64_decode
    - test_assert_idx
    - str_data
    - str_len
    - base64_encode
    - test_end
    - i_rand_uchar
    - str_truncate
    - i_rand_limit
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base64_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:151,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:152,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base64.c:153,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:154,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib/test-base64.c:155,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:155,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:157,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-base64.c:157,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base64.c:157,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:158,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:159,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:159,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:160,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 131
    functionDepth: 3
    functionLinenumber: 131
    functionLinenumberEnd: 163
    functionName: test_base64url_encode
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - str_len
    - strlen
    - base64url_encode
    - test_end
    - str_truncate
    - MAX_BASE64_ENCODED_SIZE
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base64url_encode(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:199,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base64.c:200,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:206,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:206,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/test-base64.c:208,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-base64.c:210,1
    - Dst: base64url_decode
      Src: /src/dovecot/src/lib/test-base64.c:213,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:214,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:216,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:217,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:217,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:217,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base64.c:218,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base64.c:218,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:219,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:221,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:222,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:222,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:223,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:226,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 171
    functionDepth: 5
    functionLinenumber: 171
    functionLinenumberEnd: 227
    functionName: test_base64url_decode
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - MAX_BASE64_DECODED_SIZE
    - base64url_decode
    - test_assert_idx
    - t_malloc0
    - str_len
    - strlen
    - str_data
    - test_end
    - memcmp
    - buffer_create_from_data
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base64url_decode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:235,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:236,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:238,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:240,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-base64.c:242,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:244,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:245,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib/test-base64.c:246,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:247,1
    - Dst: base64url_decode
      Src: /src/dovecot/src/lib/test-base64.c:247,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base64.c:247,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:247,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:249,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:249,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base64.c:250,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base64.c:250,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 253
    functionName: test_base64url_random
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - base64url_decode
    - test_assert_idx
    - str_data
    - str_len
    - base64url_encode
    - test_end
    - i_rand_uchar
    - str_truncate
    - i_rand_limit
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base64url_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:456,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:457,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base64.c:458,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:464,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/test-base64.c:466,1
    - Dst: base64_get_full_encoded_size
      Src: /src/dovecot/src/lib/test-base64.c:468,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:469,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:470,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib/test-base64.c:470,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:471,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:473,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/test-base64.c:473,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:475,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-base64.c:475,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base64.c:475,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:476,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:477,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:477,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:478,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:479,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:479,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:481,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 451
    functionDepth: 4
    functionLinenumber: 451
    functionLinenumberEnd: 482
    functionName: test_base64_encode_lowlevel
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - str_len
    - strlen
    - test_end
    - base64_get_full_encoded_size
    - str_truncate
    - base64_encode_init
    - base64_encode_finish
    - MAX_BASE64_ENCODED_SIZE
    - N_ELEMENTS
    - test_begin
    - base64_encode_more
    linkageType: ''
    returnType: void
    signature: void test_base64_encode_lowlevel(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:873,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base64.c:874,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:886,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:886,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/test-base64.c:888,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-base64.c:890,1
    - Dst: base64_decode_init
      Src: /src/dovecot/src/lib/test-base64.c:893,1
    - Dst: base64_decode_more
      Src: /src/dovecot/src/lib/test-base64.c:894,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:894,1
    - Dst: base64_decode_finish
      Src: /src/dovecot/src/lib/test-base64.c:897,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:899,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:900,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:900,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:900,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base64.c:901,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-base64.c:901,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:902,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:903,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:905,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:907,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-base64.c:908,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:908,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:909,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:912,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 867
    functionDepth: 5
    functionLinenumber: 867
    functionLinenumberEnd: 913
    functionName: test_base64_decode_lowlevel
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - MAX_BASE64_DECODED_SIZE
    - base64_decode_more
    - test_assert_idx
    - t_malloc0
    - base64_decode_init
    - strlen
    - str_len
    - str_data
    - test_end
    - memcmp
    - buffer_create_from_data
    - N_ELEMENTS
    - test_begin
    - base64_decode_finish
    linkageType: ''
    returnType: void
    signature: void test_base64_decode_lowlevel(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-base64.c:932,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-base64.c:933,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/test-base64.c:935,1
    - Dst: base64_get_full_encoded_size
      Src: /src/dovecot/src/lib/test-base64.c:936,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/test-base64.c:937,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/test-base64.c:938,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib/test-base64.c:940,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:941,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/test-base64.c:942,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:943,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base64.c:945,1
    - Dst: base64_get_full_encoded_size
      Src: /src/dovecot/src/lib/test-base64.c:945,1
    - Dst: base64_decode_init
      Src: /src/dovecot/src/lib/test-base64.c:948,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/test-base64.c:949,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/test-base64.c:950,1
    - Dst: base64_decode_more
      Src: /src/dovecot/src/lib/test-base64.c:952,1
    - Dst: base64_decode_finish
      Src: /src/dovecot/src/lib/test-base64.c:954,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:956,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:957,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base64.c:958,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 9
    argNames:
    - b64
    - enc_flags
    - dec_flags
    - max_line_len
    - test_idx
    - in_buf
    - in_buf_size
    - buf1
    - buf2
    argTypes:
    - struct base64_scheme*
    - enum base64_encode_flags
    - enum base64_decode_flags
    - size_t
    - unsigned int
    - unsigned char*
    - size_t
    - buffer_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 915
    functionDepth: 4
    functionLinenumber: 915
    functionLinenumberEnd: 959
    functionName: test_base64_random_lowlevel_one_block
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - base64_decode_more
    - test_assert_idx
    - base64_decode_init
    - base64_decode_finish
    - buffer_set_used_size
    - buffer_append_space_unsafe
    - base64_get_full_encoded_size
    - buffer_create_from_data
    - test_assert
    - base64_encode_init
    - base64_encode_finish
    - memcmp
    - base64_encode_more
    linkageType: ''
    returnType: void
    signature: "void test_base64_random_lowlevel_one_block(const struct base64_scheme
      *b64,\n\t\t\t\t      enum base64_encode_flags enc_flags,\n\t\t\t\t      enum
      base64_decode_flags dec_flags,\n\t\t\t\t      size_t max_line_len,\n\t\t\t\t
      \     unsigned int test_idx,\n\t\t\t\t      const unsigned char *in_buf,\n\t\t\t\t
      \     size_t in_buf_size,\n\t\t\t\t      buffer_t *buf1, buffer_t *buf2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-base64.c:981,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/test-base64.c:986,1
    - Dst: base64_get_full_encoded_size
      Src: /src/dovecot/src/lib/test-base64.c:987,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:997,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:998,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/test-base64.c:1005,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/test-base64.c:1006,1
    - Dst: base64_encode_get_full_space
      Src: /src/dovecot/src/lib/test-base64.c:1011,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1013,1
    - Dst: base64_encode_get_size
      Src: /src/dovecot/src/lib/test-base64.c:1016,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib/test-base64.c:1018,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1019,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1021,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-base64.c:1023,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-base64.c:1025,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1027,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/test-base64.c:1027,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base64.c:1031,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-base64.c:1033,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/test-base64.c:1034,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1035,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib/test-base64.c:1035,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1037,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/test-base64.c:1037,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1038,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib/test-base64.c:1038,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-base64.c:1042,1
    - Dst: base64_decode_init
      Src: /src/dovecot/src/lib/test-base64.c:1047,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:1057,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:1058,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/test-base64.c:1065,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/test-base64.c:1066,1
    - Dst: base64_decode_more
      Src: /src/dovecot/src/lib/test-base64.c:1070,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1072,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-base64.c:1077,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-base64.c:1079,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1081,1
    - Dst: base64_decode_finish
      Src: /src/dovecot/src/lib/test-base64.c:1085,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1086,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-base64.c:1087,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-base64.c:1088,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 73
    argCount: 10
    argNames:
    - b64
    - enc_flags
    - dec_flags
    - max_line_len
    - test_idx
    - in_buf
    - in_buf_size
    - buf1
    - buf2
    - chunk_size
    argTypes:
    - struct base64_scheme*
    - enum base64_encode_flags
    - enum base64_decode_flags
    - size_t
    - unsigned int
    - unsigned char*
    - size_t
    - buffer_t*
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 961
    functionDepth: 4
    functionLinenumber: 961
    functionLinenumberEnd: 1091
    functionName: test_base64_random_lowlevel_stream
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - base64_decode_more
    - test_assert_idx
    - base64_decode_init
    - base64_decode_finish
    - base64_encode_get_full_space
    - buffer_set_used_size
    - base64_encode_get_size
    - buffer_append_space_unsafe
    - base64_get_full_encoded_size
    - i_rand_limit
    - buffer_create_from_data
    - base64_encode_init
    - base64_encode_finish
    - test_assert
    - i_assert
    - buffer_cmp
    - memcmp
    - base64_encode_more
    linkageType: ''
    returnType: void
    signature: "void test_base64_random_lowlevel_stream(const struct base64_scheme
      *b64,\n\t\t\t\t   enum base64_encode_flags enc_flags,\n\t\t\t\t   enum base64_decode_flags
      dec_flags,\n\t\t\t\t   size_t max_line_len, unsigned int test_idx,\n\t\t\t\t
      \  const unsigned char *in_buf,\n\t\t\t\t   size_t in_buf_size,\n\t\t\t\t   buffer_t
      *buf1, buffer_t *buf2,\n\t\t\t\t   size_t chunk_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-base64.c:1104,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-base64.c:1107,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:1107,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-base64.c:1108,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib/test-base64.c:1108,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:1112,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-base64.c:1114,1
    - Dst: test_base64_random_lowlevel_one_block
      Src: /src/dovecot/src/lib/test-base64.c:1116,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-base64.c:1121,1
    - Dst: i_info
      Src: /src/dovecot/src/lib/test-base64.c:1122,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:1133,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-base64.c:1135,1
    - Dst: test_base64_random_lowlevel_stream
      Src: /src/dovecot/src/lib/test-base64.c:1137,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-base64.c:1142,1
    - Dst: i_info
      Src: /src/dovecot/src/lib/test-base64.c:1143,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-base64.c:1154,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-base64.c:1156,1
    - Dst: test_base64_random_lowlevel_stream
      Src: /src/dovecot/src/lib/test-base64.c:1158,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-base64.c:1162,1
    - Dst: i_info
      Src: /src/dovecot/src/lib/test-base64.c:1163,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 4
    argNames:
    - b64
    - enc_flags
    - dec_flags
    - max_line_len
    argTypes:
    - struct base64_scheme*
    - enum base64_encode_flags
    - enum base64_decode_flags
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1093
    functionDepth: 5
    functionLinenumber: 1093
    functionLinenumberEnd: 1171
    functionName: test_base64_random_lowlevel_case
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - t_buffer_create
    - test_has_failed
    - i_rand_uchar
    - test_base64_random_lowlevel_one_block
    - i_rand_limit
    - test_base64_random_lowlevel_stream
    - i_info
    - MAX_BASE64_ENCODED_SIZE
    linkageType: ''
    returnType: void
    signature: "void test_base64_random_lowlevel_case(const struct base64_scheme *b64,\n\t\t\t\t
      enum base64_encode_flags enc_flags,\n\t\t\t\t enum base64_decode_flags dec_flags,\n\t\t\t\t
      size_t max_line_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:1176,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1177,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1178,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1179,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1181,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1183,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1185,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1187,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1188,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1189,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1191,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1193,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1196,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1199,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1203,1
    - Dst: test_base64_random_lowlevel_case
      Src: /src/dovecot/src/lib/test-base64.c:1207,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:1211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1173
    functionDepth: 6
    functionLinenumber: 1173
    functionLinenumberEnd: 1212
    functionName: test_base64_random_lowlevel
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_base64_random_lowlevel_case
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_base64_random_lowlevel(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:1217,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/test-base64.c:1220,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-base64.c:1222,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-base64.c:1224,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/test-base64.c:1229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - in
    - max_line_len
    - crlf
    - out
    argTypes:
    - char*
    - size_t
    - bool
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1214
    functionDepth: 2
    functionLinenumber: 1214
    functionLinenumberEnd: 1230
    functionName: _add_lines
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - str_append
    - strlen
    - str_append_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void _add_lines(const char *in, size_t max_line_len, bool crlf, string_t
      *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:1260,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-base64.c:1261,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:1263,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base64.c:1264,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:1268,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/test-base64.c:1269,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib/test-base64.c:1270,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:1270,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/test-base64.c:1272,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:1274,1
    - Dst: _add_lines
      Src: /src/dovecot/src/lib/test-base64.c:1275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base64.c:1277,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-base64.c:1277,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base64.c:1277,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base64.c:1278,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:1282,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-base64.c:1284,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-base64.c:1285,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:1289,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/test-base64.c:1290,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib/test-base64.c:1292,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-base64.c:1292,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/test-base64.c:1294,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-base64.c:1296,1
    - Dst: _add_lines
      Src: /src/dovecot/src/lib/test-base64.c:1297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-base64.c:1299,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-base64.c:1299,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base64.c:1299,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-base64.c:1300,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-base64.c:1304,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1232
    functionDepth: 4
    functionLinenumber: 1232
    functionLinenumberEnd: 1305
    functionName: test_base64_encode_lines
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - _add_lines
    - strlen
    - test_end
    - str_truncate
    - test_assert
    - base64_encode_init
    - base64_encode_finish
    - N_ELEMENTS
    - test_begin
    - base64_encode_more
    linkageType: ''
    returnType: void
    signature: void test_base64_encode_lines(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_base64_encode
      Src: /src/dovecot/src/lib/test-base64.c:1310,1
    - Dst: test_base64_decode
      Src: /src/dovecot/src/lib/test-base64.c:1311,1
    - Dst: test_base64_random
      Src: /src/dovecot/src/lib/test-base64.c:1312,1
    - Dst: test_base64url_encode
      Src: /src/dovecot/src/lib/test-base64.c:1313,1
    - Dst: test_base64url_decode
      Src: /src/dovecot/src/lib/test-base64.c:1314,1
    - Dst: test_base64url_random
      Src: /src/dovecot/src/lib/test-base64.c:1315,1
    - Dst: test_base64_encode_lowlevel
      Src: /src/dovecot/src/lib/test-base64.c:1316,1
    - Dst: test_base64_decode_lowlevel
      Src: /src/dovecot/src/lib/test-base64.c:1317,1
    - Dst: test_base64_random_lowlevel
      Src: /src/dovecot/src/lib/test-base64.c:1318,1
    - Dst: test_base64_encode_lines
      Src: /src/dovecot/src/lib/test-base64.c:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1307
    functionDepth: 7
    functionLinenumber: 1307
    functionLinenumberEnd: 1320
    functionName: test_base64
    functionSourceFile: /src/dovecot/src/lib/test-base64.c
    functionUses: 0
    functionsReached:
    - test_base64_decode_lowlevel
    - test_base64_encode
    - test_base64_decode
    - test_base64url_random
    - test_base64_random_lowlevel
    - test_base64url_encode
    - test_base64_encode_lines
    - test_base64_random
    - test_base64url_decode
    - test_base64_encode_lowlevel
    linkageType: ''
    returnType: void
    signature: void test_base64(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-fd-util.c:9,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-fd-util.c:11,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-fd-util.c:16,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-fd-util.c:19,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-fd-util.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 6
    functionDepth: 3
    functionLinenumber: 6
    functionLinenumberEnd: 24
    functionName: fatal_i_close
    functionSourceFile: /src/dovecot/src/lib/test-fd-util.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - t_strdup_printf
    - test_end
    - test_expect_fatal_string
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_i_close(unsigned int stage)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/hostpid.c:24,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/hostpid.c:25,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/hostpid.c:27,1
    - Dst: gethostname
      Src: /src/dovecot/src/lib/hostpid.c:29,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/hostpid.c:30,1
    - Dst: strcspn
      Src: /src/dovecot/src/lib/hostpid.c:36,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/hostpid.c:36,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/hostpid.c:37,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/hostpid.c:38,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib/hostpid.c:41,1
    - Dst: getpid
      Src: /src/dovecot/src/lib/hostpid.c:41,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 17
    functionDepth: 2
    functionLinenumber: 17
    functionLinenumberEnd: 43
    functionName: hostpid_init
    functionSourceFile: /src/dovecot/src/lib/hostpid.c
    functionUses: 1
    functionsReached:
    - getpid
    - strcspn
    - i_fatal
    - i_free_and_null
    - getenv
    - strlen
    - i_strdup
    - gethostname
    - i_snprintf
    linkageType: ''
    returnType: void
    signature: void hostpid_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/hostpid.c:47,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/hostpid.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: hostpid_deinit
    functionSourceFile: /src/dovecot/src/lib/hostpid.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void hostpid_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/lib/hostpid.c:64,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/hostpid.c:66,1
    - Dst: getaddrinfo
      Src: /src/dovecot/src/lib/hostpid.c:70,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/hostpid.c:71,1
    - Dst: freeaddrinfo
      Src: /src/dovecot/src/lib/hostpid.c:72,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/hostpid.c:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 79
    functionName: my_hostdomain
    functionSourceFile: /src/dovecot/src/lib/hostpid.c
    functionUses: 7
    functionsReached:
    - i_strdup
    - freeaddrinfo
    - getenv
    - getaddrinfo
    linkageType: ''
    returnType: char
    signature: char *my_hostdomain(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/fdatasync-path.c:15,1
    - Dst: fdatasync
      Src: /src/dovecot/src/lib/fdatasync-path.c:18,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/fdatasync-path.c:29,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 31
    functionName: fdatasync_path
    functionSourceFile: /src/dovecot/src/lib/fdatasync-path.c
    functionUses: 4
    functionsReached:
    - i_close_fd
    - open
    - fdatasync
    linkageType: ''
    returnType: int
    signature: int fdatasync_path(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-istream-seekable.c:20,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib/test-istream-seekable.c:21,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib/test-istream-seekable.c:21,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-istream-seekable.c:22,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-istream-seekable.c:24,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-istream-seekable.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - path_r
    - ATTR_UNUSED
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 16
    functionDepth: 6
    functionLinenumber: 16
    functionLinenumberEnd: 30
    functionName: fd_callback
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_error
    - open
    - i_unlink
    - i_strconcat
    - test_dir_get
    - i_free
    linkageType: ''
    returnType: int
    signature: int fd_callback(const char **path_r, void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-seekable.c:44,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-seekable.c:46,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:47,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib/test-istream-seekable.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:52,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:56,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:56,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-seekable.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:58,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:60,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:60,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-seekable.c:61,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:62,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:62,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-seekable.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:71,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:74,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:75,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:77,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 1
    argNames:
    - buffer_size
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 78
    functionName: test_istream_seekable_one
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable
    - test_istream_set_allow_eof
    - i_stream_get_data
    - i_stream_skip
    - i_stream_read
    - test_istream_create
    - test_assert
    - i_stream_unref
    - test_istream_set_size
    linkageType: ''
    returnType: void
    signature: void test_istream_seekable_one(unsigned int buffer_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-seekable.c:88,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-istream-seekable.c:89,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-seekable.c:91,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/test-istream-seekable.c:92,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-seekable.c:95,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-seekable.c:97,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:100,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-seekable.c:102,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib/test-istream-seekable.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:104,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:107,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:108,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-seekable.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:111,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-seekable.c:113,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-seekable.c:115,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-seekable.c:116,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-seekable.c:116,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:125,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-seekable.c:126,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-seekable.c:126,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-seekable.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:130,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:137,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:138,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:140,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 80
    functionDepth: 5
    functionLinenumber: 80
    functionLinenumberEnd: 141
    functionName: test_istream_seekable_random
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable
    - t_new
    - i_stream_get_data_size
    - test_istream_set_allow_eof
    - i_stream_get_data
    - i_stream_skip
    - i_stream_read
    - test_istream_create_data
    - i_stream_seek
    - i_rand_limit
    - t_malloc_no0
    - test_assert
    - i_rand_minmax
    - i_assert
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_seekable_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-seekable.c:146,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-seekable.c:151,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/test-istream-seekable.c:153,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib/test-istream-seekable.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:159,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:159,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-seekable.c:160,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:162,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-seekable.c:162,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:164,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:164,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-seekable.c:165,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:167,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-seekable.c:167,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-seekable.c:168,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:170,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:173,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:174,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-seekable.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 176
    functionName: test_istream_seekable_eof
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable
    - strlen
    - i_stream_get_data
    - test_end
    - i_stream_read
    - i_stream_seek
    - test_assert
    - memcmp
    - i_stream_create_from_data
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_seekable_eof(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-seekable.c:182,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-seekable.c:184,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:185,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-seekable.c:186,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib/test-istream-seekable.c:190,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:191,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:191,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:193,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:193,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-seekable.c:194,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:197,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:198,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-seekable.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 178
    functionDepth: 4
    functionLinenumber: 178
    functionLinenumberEnd: 201
    functionName: test_istream_seekable_early_end
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable
    - test_istream_set_allow_eof
    - i_stream_skip
    - test_end
    - i_stream_read
    - test_istream_create
    - test_assert
    - i_stream_unref
    - test_istream_set_size
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_seekable_early_end(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-seekable.c:205,1
    - Dst: sha256_init
      Src: /src/dovecot/src/lib/test-istream-seekable.c:207,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-seekable.c:208,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib/test-istream-seekable.c:211,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/test-istream-seekable.c:212,1
    - Dst: i_stream_create_hash
      Src: /src/dovecot/src/lib/test-istream-seekable.c:213,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:214,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:214,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:215,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:215,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-seekable.c:216,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:217,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:217,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:218,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:219,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:220,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:221,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-seekable.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 203
    functionDepth: 5
    functionLinenumber: 203
    functionLinenumberEnd: 223
    functionName: test_istream_seekable_invalid_read
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable
    - i_stream_create_hash
    - i_stream_skip
    - test_end
    - test_istream_create
    - i_stream_create_sized
    - sha256_init
    - test_assert
    - i_stream_read
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_seekable_invalid_read(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-seekable.c:227,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-seekable.c:228,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib/test-istream-seekable.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:233,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:233,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:234,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:234,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:235,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:235,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:237,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:238,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-seekable.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 240
    functionName: test_istream_seekable_get_size
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable
    - test_end
    - i_stream_get_size
    - test_istream_create
    - test_assert
    - i_stream_unref
    - i_stream_read
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_seekable_get_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-seekable.c:246,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-seekable.c:247,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:248,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-seekable.c:249,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib/test-istream-seekable.c:253,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-seekable.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:255,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:255,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-seekable.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:257,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:257,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-seekable.c:258,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-seekable.c:259,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:261,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-seekable.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-seekable.c:262,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-seekable.c:263,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-istream-seekable.c:267,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/test-istream-seekable.c:267,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-istream-seekable.c:269,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:270,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-istream-seekable.c:271,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-seekable.c:273,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-seekable.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 242
    functionDepth: 4
    functionLinenumber: 242
    functionLinenumberEnd: 275
    functionName: test_istream_seekable_failed_writes
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_create_seekable
    - test_expect_no_more_errors
    - i_stream_set_name
    - i_close_fd
    - test_istream_set_allow_eof
    - t_strdup_printf
    - test_assert_strcmp
    - i_stream_skip
    - i_stream_get_error
    - test_expect_error_string
    - i_stream_read
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - test_istream_set_size
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_seekable_failed_writes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-seekable.c:281,1
    - Dst: test_istream_seekable_one
      Src: /src/dovecot/src/lib/test-istream-seekable.c:283,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-seekable.c:284,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-seekable.c:286,1
    - Dst: test_istream_seekable_random
      Src: /src/dovecot/src/lib/test-istream-seekable.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 277
    functionDepth: 6
    functionLinenumber: 277
    functionLinenumberEnd: 289
    functionName: test_istream_seekable
    functionSourceFile: /src/dovecot/src/lib/test-istream-seekable.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_istream_seekable_random
    - test_istream_seekable_one
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_seekable(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/process-stat.c:36,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/lib/process-stat.c:37,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/process-stat.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - line
    - field
    argTypes:
    - char*
    - struct key_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: parse_field
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 1
    functionsReached:
    - str_to_uint64
    - strlen
    - str_begins_with
    linkageType: ''
    returnType: int
    signature: int parse_field(const char *line, struct key_val *field)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/process-stat.c:44,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/process-stat.c:45,1
    - Dst: parse_field
      Src: /src/dovecot/src/lib/process-stat.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - buf
    - fields
    argTypes:
    - char*
    - struct key_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: buffer_parse
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - parse_field
    - str_array_length
    linkageType: ''
    returnType: void
    signature: void buffer_parse(const char *buf, struct key_val *fields)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/process-stat.c:58,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/process-stat.c:61,1
    - Dst: seteuid
      Src: /src/dovecot/src/lib/process-stat.c:65,1
    - Dst: open
      Src: /src/dovecot/src/lib/process-stat.c:66,1
    - Dst: seteuid
      Src: /src/dovecot/src/lib/process-stat.c:67,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/process-stat.c:68,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/process-stat.c:68,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/process-stat.c:74,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/process-stat.c:76,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib/process-stat.c:76,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/process-stat.c:78,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - path
    - event
    argTypes:
    - char*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 81
    functionName: open_fd
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 1
    functionsReached:
    - seteuid
    - dec2str
    - geteuid
    - e_debug
    - i_fatal
    - open
    - e_error
    - eacces_error_get
    linkageType: ''
    returnType: int
    signature: int open_fd(const char *path, struct event *event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open_fd
      Src: /src/dovecot/src/lib/process-stat.c:87,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/process-stat.c:90,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/process-stat.c:91,1
    - Dst: buffer_append_full_istream
      Src: /src/dovecot/src/lib/process-stat.c:93,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/process-stat.c:94,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/process-stat.c:96,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/process-stat.c:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - path
    - buf
    - max_size
    - event
    argTypes:
    - char*
    - string_t*
    - size_t
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 83
    functionDepth: 6
    functionLinenumber: 83
    functionLinenumberEnd: 102
    functionName: read_file_buffer
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 0
    functionsReached:
    - open_fd
    - i_stream_set_name
    - e_error
    - i_stream_create_fd_autoclose
    - i_stream_unref
    - buffer_append_full_istream
    linkageType: ''
    returnType: int
    signature: int read_file_buffer(const char *path, string_t *buf, size_t max_size,
      struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/process-stat.c:109,1
    - Dst: read_file_buffer
      Src: /src/dovecot/src/lib/process-stat.c:110,1
    - Dst: buffer_parse
      Src: /src/dovecot/src/lib/process-stat.c:115,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/process-stat.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - path
    - max_size
    - fields
    - event
    argTypes:
    - char*
    - size_t
    - struct key_val*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 104
    functionDepth: 7
    functionLinenumber: 104
    functionLinenumberEnd: 117
    functionName: parse_key_val_file
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 0
    functionsReached:
    - read_file_buffer
    - buffer_parse
    - t_str_new
    - str_c
    linkageType: ''
    returnType: int
    signature: "int parse_key_val_file(const char *path,\n\t\t\t      size_t max_size,\n\t\t\t
      \     struct key_val *fields,\n\t\t\t      struct event *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_key_val_file
      Src: /src/dovecot/src/lib/process-stat.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stat_r
    - event
    argTypes:
    - struct process_stat*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 119
    functionDepth: 8
    functionLinenumber: 119
    functionLinenumberEnd: 135
    functionName: parse_proc_io
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 0
    functionsReached:
    - parse_key_val_file
    linkageType: ''
    returnType: int
    signature: int parse_proc_io(struct process_stat *stat_r, struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_key_val_file
      Src: /src/dovecot/src/lib/process-stat.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stat_r
    - event
    argTypes:
    - struct process_stat*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 8
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: parse_proc_status
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 0
    functionsReached:
    - parse_key_val_file
    linkageType: ''
    returnType: int
    signature: int parse_proc_status(struct process_stat *stat_r, struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/dovecot/src/lib/process-stat.c:157,1
    - Dst: timeval_to_usecs
      Src: /src/dovecot/src/lib/process-stat.c:159,1
    - Dst: timeval_to_usecs
      Src: /src/dovecot/src/lib/process-stat.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - stat_r
    argTypes:
    - struct process_stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 166
    functionName: stat_get_rusage
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 0
    functionsReached:
    - getrusage
    - timeval_to_usecs
    linkageType: ''
    returnType: int
    signature: int stat_get_rusage(struct process_stat *stat_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/process-stat.c:170,1
    - Dst: read_file_buffer
      Src: /src/dovecot/src/lib/process-stat.c:185,1
    - Dst: stat_get_rusage
      Src: /src/dovecot/src/lib/process-stat.c:192,1
    - Dst: e_error
      Src: /src/dovecot/src/lib/process-stat.c:193,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/process-stat.c:199,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/process-stat.c:199,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/process-stat.c:200,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/process-stat.c:202,1
    - Dst: str_to_uint64
      Src: /src/dovecot/src/lib/process-stat.c:204,1
    - Dst: sysconf
      Src: /src/dovecot/src/lib/process-stat.c:208,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - stat_r
    - event
    argTypes:
    - struct process_stat*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 168
    functionDepth: 7
    functionLinenumber: 168
    functionLinenumberEnd: 210
    functionName: parse_stat_file
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - stat_get_rusage
    - read_file_buffer
    - str_array_length
    - t_strsplit
    - e_error
    - str_to_uint64
    - sysconf
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int parse_stat_file(struct process_stat *stat_r, struct event *event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if
      Src: /src/dovecot/src/lib/process-stat.c:217,1
    - Dst: parse_stat_file
      Src: /src/dovecot/src/lib/process-stat.c:217,1
    - Dst: parse_proc_io
      Src: /src/dovecot/src/lib/process-stat.c:219,1
    - Dst: parse_proc_status
      Src: /src/dovecot/src/lib/process-stat.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - stat_r
    - event
    argTypes:
    - struct process_stat*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 212
    functionDepth: 9
    functionLinenumber: 212
    functionLinenumberEnd: 224
    functionName: parse_all_stats
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 0
    functionsReached:
    - parse_stat_file
    - parse_proc_io
    - parse_proc_status
    - if
    linkageType: ''
    returnType: int
    signature: int parse_all_stats(struct process_stat *stat_r, struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/process-stat.c:233,1
    - Dst: parse_all_stats
      Src: /src/dovecot/src/lib/process-stat.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stat_r
    - event
    argTypes:
    - struct process_stat*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 10
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: process_stat_read_start
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 1
    functionsReached:
    - i_zero
    - parse_all_stats
    linkageType: ''
    returnType: void
    signature: void process_stat_read_start(struct process_stat *stat_r, struct event
      *event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/process-stat.c:241,1
    - Dst: parse_all_stats
      Src: /src/dovecot/src/lib/process-stat.c:246,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/process-stat.c:247,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/process-stat.c:265,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/process-stat.c:266,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/process-stat.c:267,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - stat
    - event
    argTypes:
    - struct process_stat*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 237
    functionDepth: 10
    functionLinenumber: 237
    functionLinenumberEnd: 274
    functionName: process_stat_read_finish
    functionSourceFile: /src/dovecot/src/lib/process-stat.c
    functionUses: 1
    functionsReached:
    - i_zero
    - parse_all_stats
    - PTR_OFFSET
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void process_stat_read_finish(struct process_stat *stat, struct event
      *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: defined
      Src: /src/dovecot/src/lib/test-utc-mktime.c:18,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-utc-mktime.c:45,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/test-utc-mktime.c:47,1
    - Dst: utc_mktime
      Src: /src/dovecot/src/lib/test-utc-mktime.c:55,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib/test-utc-mktime.c:57,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-utc-mktime.c:57,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-utc-mktime.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 61
    functionName: test_utc_mktime
    functionSourceFile: /src/dovecot/src/lib/test-utc-mktime.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_out_reason
    - defined
    - utc_mktime
    - t_strdup_printf
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_utc_mktime(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: log_fd_can_close
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool log_fd_can_close(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_replace
      Src: /src/dovecot/src/lib/failures.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: log_prefix_sanitize
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - t_str_replace
    linkageType: ''
    returnType: char
    signature: char *log_prefix_sanitize(const char *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/failures.c:84,1
    - Dst: log_timestamp_add
      Src: /src/dovecot/src/lib/failures.c:85,1
    - Dst: log_prefix_add
      Src: /src/dovecot/src/lib/failures.c:86,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/failures.c:87,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib/failures.c:90,1
    - Dst: printf_format_fix
      Src: /src/dovecot/src/lib/failures.c:90,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/failures.c:106,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/failures.c:106,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/failures.c:107,1
    - Dst: log_fd_write
      Src: /src/dovecot/src/lib/failures.c:108,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/failures.c:108,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/failures.c:111,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/failures.c:114,1
    - Dst: log_fd_write
      Src: /src/dovecot/src/lib/failures.c:115,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/failures.c:115,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/failures.c:115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 81
    functionDepth: 8
    functionLinenumber: 81
    functionLinenumberEnd: 116
    functionName: default_write
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_c
    - log_fd_write
    - log_timestamp_add
    - log_prefix_add
    - str_len
    - printf_format_fix
    - str_data
    - str_append_c
    - str_vprintfa
    - str_delete
    linkageType: ''
    returnType: void
    signature: "void default_write(const struct failure_context *ctx,\n\t      const
      char *format, va_list args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/failures.c:128,1
    - Dst: failure_exit
      Src: /src/dovecot/src/lib/failures.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct failure_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 133
    functionName: default_on_handler_failure
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - failure_exit
    linkageType: ''
    returnType: void
    signature: void default_on_handler_failure(const struct failure_context *ctx)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/failures.c:139,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:142,1
    - Dst: log_prefix_sanitize
      Src: /src/dovecot/src/lib/failures.c:142,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:144,1
    - Dst: log_prefix_add
      Src: /src/dovecot/src/lib/failures.c:146,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/failures.c:148,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib/failures.c:149,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/failures.c:171,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/failures.c:174,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib/failures.c:174,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib/failures.c:175,1
    - Dst: syslog
      Src: /src/dovecot/src/lib/failures.c:177,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/failures.c:177,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/failures.c:179,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib/failures.c:180,1
    - Dst: syslog
      Src: /src/dovecot/src/lib/failures.c:183,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/failures.c:183,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 185
    functionName: syslog_write
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - syslog
    - str_c
    - log_prefix_add
    - str_len
    - i_unreached
    - str_vprintfa
    - str_delete
    - log_prefix_sanitize
    - str_append
    - i_assert
    - str_c_modifiable
    linkageType: ''
    returnType: void
    signature: "void syslog_write(const struct failure_context *ctx,\n\t     const
      char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: failure_exit
      Src: /src/dovecot/src/lib/failures.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct failure_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: syslog_on_handler_failure
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - failure_exit
    linkageType: ''
    returnType: void
    signature: void syslog_on_handler_failure(const struct failure_context *ctx ATTR_UNUSED)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_failure_send_option_forced
      Src: /src/dovecot/src/lib/failures.c:204,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/failures.c:213,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/failures.c:214,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/failures.c:216,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:218,1
    - Dst: log_prefix_sanitize
      Src: /src/dovecot/src/lib/failures.c:218,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/failures.c:219,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib/failures.c:221,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/failures.c:223,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/failures.c:223,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/failures.c:223,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/failures.c:225,1
    - Dst: log_fd_write
      Src: /src/dovecot/src/lib/failures.c:226,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/failures.c:227,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/failures.c:227,1
    - Dst: internal_send_split
      Src: /src/dovecot/src/lib/failures.c:229,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 230
    functionName: internal_write
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_printfa
    - str_c
    - str_append_c
    - log_fd_write
    - str_len
    - str_data
    - str_vprintfa
    - i_failure_send_option_forced
    - log_prefix_sanitize
    - internal_send_split
    - str_append
    linkageType: ''
    returnType: void
    signature: "void internal_write(const struct failure_context *ctx,\n\t       const
      char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: failure_exit
      Src: /src/dovecot/src/lib/failures.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct failure_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: internal_on_handler_failure
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - failure_exit
    linkageType: ''
    returnType: void
    signature: void internal_on_handler_failure(const struct failure_context *ctx
      ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: v::write
      Src: /src/dovecot/src/lib/failures.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 270
    functionName: common_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - v::write
    linkageType: ''
    returnType: int
    signature: "int common_handler(const struct failure_context *ctx,\n\t\t\t  const
      char *format, va_list args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: common_handler
      Src: /src/dovecot/src/lib/failures.c:282,1
    - Dst: v::on_handler_failure
      Src: /src/dovecot/src/lib/failures.c:283,1
    - Dst: abort
      Src: /src/dovecot/src/lib/failures.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 286
    functionName: error_handler_real
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - common_handler
    - abort
    - v::on_handler_failure
    linkageType: ''
    returnType: void
    signature: "void error_handler_real(const struct failure_context *ctx,\n\t\t\t
      const char *format, va_list args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/failures.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - format_arg ATTR_UNUSED
    - timestamp_usecs
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 304
    functionName: get_log_stamp_format
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *get_log_stamp_format(const char *format_arg ATTR_UNUSED,\n\t\t\t\t\tunsigned
      int timestamp_usecs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: failure_exit_callback
      Src: /src/dovecot/src/lib/failures.c:312,1
    - Dst: lib_exit
      Src: /src/dovecot/src/lib/failures.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 315
    functionName: failure_exit
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 3
    functionsReached:
    - failure_exit_callback
    - lib_exit
    linkageType: ''
    returnType: void
    signature: void failure_exit(int status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/failures.c:325,1
    - Dst: localtime
      Src: /src/dovecot/src/lib/failures.c:326,1
    - Dst: strftime
      Src: /src/dovecot/src/lib/failures.c:331,1
    - Dst: get_log_stamp_format
      Src: /src/dovecot/src/lib/failures.c:332,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct failure_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 335
    functionName: log_timestamp_add
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - i_gettimeofday
    - get_log_stamp_format
    - strftime
    - localtime
    - str_append
    linkageType: ''
    returnType: void
    signature: void log_timestamp_add(const struct failure_context *ctx, string_t
      *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:342,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:343,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:345,1
    - Dst: log_prefix_sanitize
      Src: /src/dovecot/src/lib/failures.c:345,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:346,1
    - Dst: log_prefix_sanitize
      Src: /src/dovecot/src/lib/failures.c:348,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/failures.c:349,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/failures.c:349,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/failures.c:350,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:351,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/failures.c:352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - str
    argTypes:
    - struct failure_context*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 354
    functionName: log_prefix_add
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 2
    functionsReached:
    - strlen
    - str_append_data
    - log_prefix_sanitize
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void log_prefix_add(const struct failure_context *ctx, string_t *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: poll
      Src: /src/dovecot/src/lib/failures.c:365,1
    - Dst: abort
      Src: /src/dovecot/src/lib/failures.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 370
    functionName: fd_wait_writable
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - abort
    - poll
    linkageType: ''
    returnType: void
    signature: void fd_wait_writable(int fd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/dovecot/src/lib/failures.c:381,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/failures.c:410,1
    - Dst: process_title_get
      Src: /src/dovecot/src/lib/failures.c:410,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/failures.c:414,1
    - Dst: process_title_set
      Src: /src/dovecot/src/lib/failures.c:416,1
    - Dst: fd_wait_writable
      Src: /src/dovecot/src/lib/failures.c:418,1
    - Dst: process_title_set
      Src: /src/dovecot/src/lib/failures.c:441,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 3
    argNames:
    - fd
    - data
    - len
    argTypes:
    - int
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 443
    functionName: log_fd_write
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 2
    functionsReached:
    - t_strdup_printf
    - write
    - process_title_get
    - fd_wait_writable
    - t_strdup
    - process_title_set
    linkageType: ''
    returnType: int
    signature: int log_fd_write(int fd, const unsigned char *data, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: backtrace_get
      Src: /src/dovecot/src/lib/failures.c:454,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/failures.c:455,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/failures.c:459,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/failures.c:460,1
    - Dst: abort
      Src: /src/dovecot/src/lib/failures.c:461,1
    - Dst: failure_exit
      Src: /src/dovecot/src/lib/failures.c:463,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 2
    argNames:
    - type
    - status
    argTypes:
    - enum log_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 464
    functionName: ATTR_NORETURN::default_fatal_finish
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - backtrace_get
    - i_error
    - failure_exit
    - getenv
    - abort
    linkageType: ''
    returnType: void
    signature: 'void ATTR_NORETURN

      default_fatal_finish(enum log_type type, int status)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: common_handler
      Src: /src/dovecot/src/lib/failures.c:470,1
    - Dst: ATTR_NORETURN::default_fatal_finish
      Src: /src/dovecot/src/lib/failures.c:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 466
    functionDepth: 3
    functionLinenumber: 466
    functionLinenumberEnd: 474
    functionName: ATTR_NORETURN::fatal_handler_real
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - common_handler
    - ATTR_NORETURN::default_fatal_finish
    linkageType: ''
    returnType: void
    signature: "void ATTR_NORETURN fatal_handler_real(const struct failure_context
      *ctx,\n\t\t\t    const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fatal_handler_real
      Src: /src/dovecot/src/lib/failures.c:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 482
    functionName: default_fatal_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - fatal_handler_real
    linkageType: ''
    returnType: void
    signature: "void default_fatal_handler(const struct failure_context *ctx,\n\t\t\t
      \  const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: error_handler_real
      Src: /src/dovecot/src/lib/failures.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 484
    functionDepth: 2
    functionLinenumber: 484
    functionLinenumberEnd: 490
    functionName: default_error_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - error_handler_real
    linkageType: ''
    returnType: void
    signature: "void default_error_handler(const struct failure_context *ctx,\n\t\t\t
      \  const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:496,1
    - Dst: i_log_typev
      Src: /src/dovecot/src/lib/failures.c:497,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/failures.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - format
    argTypes:
    - struct failure_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 499
    functionName: i_log_type
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 4
    functionsReached:
    - i_log_typev
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void i_log_type(const struct failure_context *ctx, const char *format,
      ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debug_handler
      Src: /src/dovecot/src/lib/failures.c:506,1
    - Dst: info_handler
      Src: /src/dovecot/src/lib/failures.c:509,1
    - Dst: error_handler
      Src: /src/dovecot/src/lib/failures.c:512,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 514
    functionName: i_log_typev
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 2
    functionsReached:
    - info_handler
    - error_handler
    - debug_handler
    linkageType: ''
    returnType: void
    signature: "void i_log_typev(const struct failure_context *ctx, const char *format,\n\t\t
      va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_set_clean_exit
      Src: /src/dovecot/src/lib/failures.c:521,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/failures.c:522,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:525,1
    - Dst: fatal_handler
      Src: /src/dovecot/src/lib/failures.c:526,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/failures.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 529
    functionName: i_panic
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 159
    functionsReached:
    - i_zero
    - i_unreached
    - va_start
    - fatal_handler
    - lib_set_clean_exit
    linkageType: ''
    returnType: void
    signature: void i_panic(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_set_clean_exit
      Src: /src/dovecot/src/lib/failures.c:536,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/failures.c:537,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:541,1
    - Dst: fatal_handler
      Src: /src/dovecot/src/lib/failures.c:542,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/failures.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 545
    functionName: i_fatal
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 317
    functionsReached:
    - i_zero
    - i_unreached
    - va_start
    - fatal_handler
    - lib_set_clean_exit
    linkageType: ''
    returnType: void
    signature: void i_fatal(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_set_clean_exit
      Src: /src/dovecot/src/lib/failures.c:552,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/failures.c:553,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:557,1
    - Dst: fatal_handler
      Src: /src/dovecot/src/lib/failures.c:558,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/failures.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - status
    - format
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 561
    functionName: i_fatal_status
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 48
    functionsReached:
    - i_zero
    - i_unreached
    - va_start
    - fatal_handler
    - lib_set_clean_exit
    linkageType: ''
    returnType: void
    signature: void i_fatal_status(int status, const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:568,1
    - Dst: error_handler
      Src: /src/dovecot/src/lib/failures.c:569,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/failures.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 573
    functionName: i_error
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 183
    functionsReached:
    - error_handler
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void i_error(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:580,1
    - Dst: error_handler
      Src: /src/dovecot/src/lib/failures.c:581,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/failures.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 585
    functionName: i_warning
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 26
    functionsReached:
    - error_handler
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void i_warning(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:592,1
    - Dst: info_handler
      Src: /src/dovecot/src/lib/failures.c:593,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/failures.c:594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 597
    functionName: i_info
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 9
    functionsReached:
    - info_handler
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void i_info(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:604,1
    - Dst: debug_handler
      Src: /src/dovecot/src/lib/failures.c:605,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/failures.c:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 599
    functionDepth: 0
    functionLinenumber: 599
    functionLinenumberEnd: 609
    functionName: i_debug
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 35
    functionsReached:
    - va_end
    - debug_handler
    - va_start
    linkageType: ''
    returnType: void
    signature: void i_debug(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/lib/failures.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - callback
    argTypes:
    - failure_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 620
    functionName: i_set_error_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 7
    functionsReached:
    - getenv
    linkageType: ''
    returnType: void
    signature: void i_set_error_handler(failure_callback_t *callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - failure_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 625
    functionName: i_set_info_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_set_info_handler(failure_callback_t *callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - failure_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 630
    functionName: i_set_debug_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_set_debug_handler(failure_callback_t *callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - fatal_callback_r
    - error_callback_r
    - info_callback_r
    - debug_callback_r
    argTypes:
    - failure_callback_t**
    - failure_callback_t**
    - failure_callback_t**
    - failure_callback_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 641
    functionName: i_get_failure_handlers
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void i_get_failure_handlers(failure_callback_t **fatal_callback_r,\n\t\t\t
      \   failure_callback_t **error_callback_r,\n\t\t\t    failure_callback_t **info_callback_r,\n\t\t\t
      \   failure_callback_t **debug_callback_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fatal_handler_real
      Src: /src/dovecot/src/lib/failures.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 649
    functionName: i_syslog_fatal_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - fatal_handler_real
    linkageType: ''
    returnType: void
    signature: "void i_syslog_fatal_handler(const struct failure_context *ctx,\n\t\t\t
      \   const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: error_handler_real
      Src: /src/dovecot/src/lib/failures.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 657
    functionName: i_syslog_error_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - error_handler_real
    linkageType: ''
    returnType: void
    signature: "void i_syslog_error_handler(const struct failure_context *ctx,\n\t\t\t
      \   const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/failures.c:663,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/failures.c:664,1
    - Dst: openlog
      Src: /src/dovecot/src/lib/failures.c:665,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib/failures.c:667,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib/failures.c:668,1
    - Dst: i_set_info_handler
      Src: /src/dovecot/src/lib/failures.c:669,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/lib/failures.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ident
    - options
    - facility
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 659
    functionDepth: 2
    functionLinenumber: 659
    functionLinenumberEnd: 671
    functionName: i_set_failure_syslog
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - i_set_debug_handler
    - openlog
    - i_set_error_handler
    - i_strdup
    - i_set_fatal_handler
    - i_free
    - i_set_info_handler
    linkageType: ''
    returnType: void
    signature: void i_set_failure_syslog(const char *ident, int options, int facility)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_fd_can_close
      Src: /src/dovecot/src/lib/failures.c:677,1
    - Dst: close
      Src: /src/dovecot/src/lib/failures.c:678,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/failures.c:679,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/failures.c:680,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/failures.c:680,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/failures.c:684,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/failures.c:686,1
    - Dst: open
      Src: /src/dovecot/src/lib/failures.c:689,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/failures.c:692,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/failures.c:694,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/failures.c:694,1
    - Dst: failure_exit
      Src: /src/dovecot/src/lib/failures.c:696,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/failures.c:698,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/failures.c:700,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - fd
    - path
    argTypes:
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 673
    functionDepth: 2
    functionLinenumber: 673
    functionLinenumberEnd: 702
    functionName: open_log_file
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - strcmp
    - fd_close_on_exec
    - failure_exit
    - write_full
    - strlen
    - open
    - t_strdup_printf
    - i_fatal_status
    - log_fd_can_close
    - close
    linkageType: ''
    returnType: void
    signature: void open_log_file(int *fd, const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib/failures.c:706,1
    - Dst: log_fd_can_close
      Src: /src/dovecot/src/lib/failures.c:708,1
    - Dst: close
      Src: /src/dovecot/src/lib/failures.c:709,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/failures.c:710,1
    - Dst: log_fd_can_close
      Src: /src/dovecot/src/lib/failures.c:713,1
    - Dst: close
      Src: /src/dovecot/src/lib/failures.c:715,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/failures.c:716,1
    - Dst: open_log_file
      Src: /src/dovecot/src/lib/failures.c:719,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib/failures.c:725,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib/failures.c:726,1
    - Dst: i_set_info_handler
      Src: /src/dovecot/src/lib/failures.c:727,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/lib/failures.c:728,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - path
    - prefix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 704
    functionDepth: 3
    functionLinenumber: 704
    functionLinenumberEnd: 729
    functionName: i_set_failure_file
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 4
    functionsReached:
    - i_error
    - i_set_debug_handler
    - i_set_failure_prefix
    - i_set_error_handler
    - log_fd_can_close
    - open_log_file
    - i_set_fatal_handler
    - close
    - i_set_info_handler
    linkageType: ''
    returnType: void
    signature: void i_set_failure_file(const char *path, const char *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/failures.c:735,1
    - Dst: log_fd_write
      Src: /src/dovecot/src/lib/failures.c:737,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/failures.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 739
    functionName: i_failure_send_option_forced
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - log_fd_write
    - strlen
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: int i_failure_send_option_forced(const char *key, const char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_failure_send_option_forced
      Src: /src/dovecot/src/lib/failures.c:744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 745
    functionName: i_failure_send_option
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - i_failure_send_option_forced
    linkageType: ''
    returnType: void
    signature: void i_failure_send_option(const char *key, const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/failures.c:751,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/failures.c:752,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/failures.c:754,1
    - Dst: log_prefix_sanitize
      Src: /src/dovecot/src/lib/failures.c:754,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib/failures.c:755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - prefix_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 747
    functionDepth: 2
    functionLinenumber: 747
    functionLinenumberEnd: 756
    functionName: i_set_failure_prefix
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 36
    functionsReached:
    - va_start
    - i_strdup
    - t_strdup_vprintf
    - log_prefix_sanitize
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_set_failure_prefix(const char *prefix_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/failures.c:764,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/failures.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 762
    functionDepth: 2
    functionLinenumber: 762
    functionLinenumberEnd: 767
    functionName: i_unset_failure_prefix
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 4
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_unset_failure_prefix(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 772
    functionName: i_get_failure_prefix
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *i_get_failure_prefix(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/failures.c:792,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/failures.c:793,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/failures.c:793,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/failures.c:795,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/failures.c:801,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/failures.c:802,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/failures.c:803,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/failures.c:804,1
    - Dst: str_append_max
      Src: /src/dovecot/src/lib/failures.c:807,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/failures.c:808,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/failures.c:813,1
    - Dst: log_fd_write
      Src: /src/dovecot/src/lib/failures.c:815,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/failures.c:816,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/failures.c:816,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - full_str
    - prefix_len
    argTypes:
    - string_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 774
    functionDepth: 2
    functionLinenumber: 774
    functionLinenumberEnd: 821
    functionName: internal_send_split
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - strchr
    - str_append_c
    - log_fd_write
    - str_data
    - str_len
    - I_MAX
    - str_truncate
    - str_append_max
    - str_append_data
    linkageType: ''
    returnType: int
    signature: int internal_send_split(string_t *full_str, size_t prefix_len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_warning
      Src: /src/dovecot/src/lib/failures.c:832,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/failures.c:838,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - line
    - log_type_r
    - replace_prefix_r
    - have_prefix_len_r
    argTypes:
    - char*
    - enum log_type*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 845
    functionName: line_parse_prefix
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - i_warning
    linkageType: ''
    returnType: bool
    signature: "bool line_parse_prefix(const char *line, enum log_type *log_type_r,\n\t\t\t
      \     bool *replace_prefix_r, bool *have_prefix_len_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/failures.c:851,1
    - Dst: line_parse_prefix
      Src: /src/dovecot/src/lib/failures.c:852,1
    - Dst: str_parse_uint
      Src: /src/dovecot/src/lib/failures.c:874,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/failures.c:879,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - line
    - failure
    argTypes:
    - char*
    - struct failure_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 847
    functionDepth: 2
    functionLinenumber: 847
    functionLinenumberEnd: 886
    functionName: i_failure_parse_line
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - i_zero
    - line_parse_prefix
    - str_parse_uint
    - strlen
    linkageType: ''
    returnType: void
    signature: void i_failure_parse_line(const char *line, struct failure_line *failure)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fatal_handler_real
      Src: /src/dovecot/src/lib/failures.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 889
    functionDepth: 0
    functionLinenumber: 889
    functionLinenumberEnd: 897
    functionName: i_internal_fatal_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - fatal_handler_real
    linkageType: ''
    returnType: void
    signature: "void i_internal_fatal_handler(const struct failure_context *ctx,\n\t\t\t
      const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: error_handler_real
      Src: /src/dovecot/src/lib/failures.c:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 906
    functionName: i_internal_error_handler
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - error_handler_real
    linkageType: ''
    returnType: void
    signature: "void i_internal_error_handler(const struct failure_context *ctx,\n\t\t\t
      const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/failures.c:910,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/lib/failures.c:911,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/lib/failures.c:912,1
    - Dst: i_set_info_handler
      Src: /src/dovecot/src/lib/failures.c:913,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/lib/failures.c:914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 908
    functionDepth: 1
    functionLinenumber: 908
    functionLinenumberEnd: 915
    functionName: i_set_failure_internal
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 2
    functionsReached:
    - i_set_debug_handler
    - fd_set_nonblock
    - i_set_error_handler
    - i_set_fatal_handler
    - i_set_info_handler
    linkageType: ''
    returnType: void
    signature: void i_set_failure_internal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - failure_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 921
    functionName: i_failure_handler_is_internal
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool i_failure_handler_is_internal(failure_callback_t *const callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ignore
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 926
    functionName: i_set_failure_ignore_errors
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_set_failure_ignore_errors(bool ignore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open_log_file
      Src: /src/dovecot/src/lib/failures.c:933,1
    - Dst: i_set_debug_handler
      Src: /src/dovecot/src/lib/failures.c:938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 928
    functionDepth: 3
    functionLinenumber: 928
    functionLinenumberEnd: 939
    functionName: i_set_info_file
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - open_log_file
    - i_set_debug_handler
    linkageType: ''
    returnType: void
    signature: void i_set_info_file(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open_log_file
      Src: /src/dovecot/src/lib/failures.c:946,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 941
    functionDepth: 3
    functionLinenumber: 941
    functionLinenumberEnd: 948
    functionName: i_set_debug_file
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 2
    functionsReached:
    - open_log_file
    linkageType: ''
    returnType: void
    signature: void i_set_debug_file(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 955
    functionName: i_failure_have_stdout_logs
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool i_failure_have_stdout_logs(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/failures.c:961,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/failures.c:962,1
    - Dst: strstr
      Src: /src/dovecot/src/lib/failures.c:964,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/failures.c:966,1
    - Dst: i_strdup_until
      Src: /src/dovecot/src/lib/failures.c:968,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/failures.c:969,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 957
    functionDepth: 2
    functionLinenumber: 957
    functionLinenumberEnd: 971
    functionName: i_set_failure_timestamp_format
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 2
    functionsReached:
    - i_free_and_null
    - i_strdup_until
    - i_strdup
    - i_free
    - strstr
    linkageType: ''
    returnType: void
    signature: void i_set_failure_timestamp_format(const char *fmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_failure_send_option
      Src: /src/dovecot/src/lib/failures.c:975,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/failures.c:975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ip
    argTypes:
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 973
    functionDepth: 4
    functionLinenumber: 973
    functionLinenumberEnd: 976
    functionName: i_set_failure_send_ip
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - i_failure_send_option
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: void i_set_failure_send_ip(const struct ip_addr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_failure_send_option
      Src: /src/dovecot/src/lib/failures.c:980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 978
    functionDepth: 4
    functionLinenumber: 978
    functionLinenumberEnd: 981
    functionName: i_set_failure_send_prefix
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 1
    functionsReached:
    - i_failure_send_option
    linkageType: ''
    returnType: void
    signature: void i_set_failure_send_prefix(const char *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 983
    functionDepth: 0
    functionLinenumber: 983
    functionLinenumberEnd: 986
    functionName: i_set_failure_exit_callback
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_set_failure_exit_callback(void (*callback)(int *status))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_fd_can_close
      Src: /src/dovecot/src/lib/failures.c:996,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/failures.c:997,1
    - Dst: log_fd_can_close
      Src: /src/dovecot/src/lib/failures.c:1001,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/failures.c:1002,1
    - Dst: log_fd_can_close
      Src: /src/dovecot/src/lib/failures.c:1006,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/failures.c:1007,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/failures.c:1011,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/failures.c:1012,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/failures.c:1013,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/failures.c:1014,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 1015
    functionName: failures_deinit
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - log_fd_can_close
    - i_free_and_null
    - i_free
    linkageType: ''
    returnType: void
    signature: void failures_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/failures.c:1020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - source_filename
    - source_linenum
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1018
    functionDepth: 2
    functionLinenumber: 1018
    functionLinenumberEnd: 1021
    functionName: i_unreached
    functionSourceFile: /src/dovecot/src/lib/failures.c
    functionUses: 434
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: void
    signature: void i_unreached(const char *source_filename, int source_linenum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-tee.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:38,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - tee
    argTypes:
    - struct tee_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 49
    functionName: tee_streams_update_buffer
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_get_data
    linkageType: ''
    returnType: void
    signature: void tee_streams_update_buffer(struct tee_istream *tee)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-tee.c:64,1
    - Dst: tee_streams_update_buffer
      Src: /src/dovecot/src/lib/istream-tee.c:65,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - tee
    argTypes:
    - struct tee_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 51
    functionDepth: 4
    functionLinenumber: 51
    functionLinenumberEnd: 67
    functionName: tee_streams_skip
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 0
    functionsReached:
    - tee_streams_update_buffer
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void tee_streams_skip(struct tee_istream *tee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-tee.c:73,1
    - Dst: tee_streams_skip
      Src: /src/dovecot/src/lib/istream-tee.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 77
    functionName: i_stream_tee_close
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 0
    functionsReached:
    - container_of
    - tee_streams_skip
    linkageType: ''
    returnType: void
    signature: "void i_stream_tee_close(struct iostream_private *stream,\n\t\t\t       bool
      close_parent ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-tee.c:82,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:99,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-tee.c:100,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-tee.c:103,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-tee.c:104,1
    - Dst: tee_streams_skip
      Src: /src/dovecot/src/lib/istream-tee.c:106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 79
    functionDepth: 5
    functionLinenumber: 79
    functionLinenumberEnd: 110
    functionName: i_stream_tee_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 0
    functionsReached:
    - container_of
    - tee_streams_skip
    - i_stream_skip
    - i_stream_unref
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_tee_destroy(struct iostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-tee.c:117,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream-tee.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 122
    functionName: i_stream_tee_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 0
    functionsReached:
    - i_stream_set_max_buffer_size
    - container_of
    linkageType: ''
    returnType: void
    signature: "void i_stream_tee_set_max_buffer_size(struct iostream_private *stream,\n\t\t\t\t
      size_t max_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-tee.c:127,1
    - Dst: tee_streams_update_buffer
      Src: /src/dovecot/src/lib/istream-tee.c:137,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-tee.c:139,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:148,1
    - Dst: tee_streams_skip
      Src: /src/dovecot/src/lib/istream-tee.c:149,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/istream-tee.c:150,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-tee.c:152,1
    - Dst: tee_streams_update_buffer
      Src: /src/dovecot/src/lib/istream-tee.c:163,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-tee.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:167,1
    - Dst: tee_streams_update_buffer
      Src: /src/dovecot/src/lib/istream-tee.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:169,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:172,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:174,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-tee.c:177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 124
    functionDepth: 5
    functionLinenumber: 124
    functionLinenumberEnd: 180
    functionName: i_stream_tee_read
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_get_data_size
    - i_stream_get_data
    - tee_streams_skip
    - tee_streams_update_buffer
    - i_stream_read
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_tee_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-tee.c:186,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib/istream-tee.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 193
    functionName: i_stream_tee_stat
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: int i_stream_tee_stat(struct istream_private *stream, bool exact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-tee.c:198,1
    - Dst: tee_streams_skip
      Src: /src/dovecot/src/lib/istream-tee.c:200,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-tee.c:201,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/istream-tee.c:202,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib/istream-tee.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 195
    functionDepth: 5
    functionLinenumber: 195
    functionLinenumberEnd: 206
    functionName: i_stream_tee_sync
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 0
    functionsReached:
    - i_panic
    - container_of
    - i_stream_get_data_size
    - i_stream_sync
    - tee_streams_skip
    linkageType: ''
    returnType: void
    signature: void i_stream_tee_sync(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-tee.c:212,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/istream-tee.c:214,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/istream-tee.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 220
    functionName: tee_i_stream_create
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 3
    functionsReached:
    - i_stream_create_limit
    - i_stream_ref
    - i_new
    linkageType: ''
    returnType: struct tee_istream
    signature: struct tee_istream *tee_i_stream_create(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-tee.c:227,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-tee.c:243,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-tee.c:243,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/istream-tee.c:245,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-tee.c:245,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-tee.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - tee
    argTypes:
    - struct tee_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 222
    functionDepth: 4
    functionLinenumber: 222
    functionLinenumberEnd: 249
    functionName: tee_i_stream_create_child
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 3
    functionsReached:
    - i_stream_get_fd
    - i_stream_set_name
    - i_new
    - i_stream_unref
    - i_stream_create
    - i_stream_get_name
    linkageType: ''
    returnType: struct istream
    signature: struct istream *tee_i_stream_create_child(struct tee_istream *tee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-tee.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 258
    functionName: tee_i_stream_child_is_waiting
    functionSourceFile: /src/dovecot/src/lib/istream-tee.c
    functionUses: 1
    functionsReached:
    - container_of
    linkageType: ''
    returnType: bool
    signature: bool tee_i_stream_child_is_waiting(struct istream *input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPILE_ERROR_IF_TRUE
      Src: /src/dovecot/src/lib/mempool-allocfree.c:150,1
    - Dst: calloc
      Src: /src/dovecot/src/lib/mempool-allocfree.c:153,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/mempool-allocfree.c:155,1
    - Dst: strdup
      Src: /src/dovecot/src/lib/mempool-allocfree.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 163
    functionName: pool_allocfree_create
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 5
    functionsReached:
    - COMPILE_ERROR_IF_TRUE
    - calloc
    - strdup
    - i_fatal_status
    linkageType: ''
    returnType: pool_t
    signature: pool_t pool_allocfree_create(const char *name ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib/mempool-allocfree.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 174
    functionName: pool_allocfree_create_clean
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - pool_allocfree_create
    linkageType: ''
    returnType: pool_t
    signature: pool_t pool_allocfree_create_clean(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_allocfree_clear
      Src: /src/dovecot/src/lib/mempool-allocfree.c:178,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/mempool-allocfree.c:180,1
    - Dst: free
      Src: /src/dovecot/src/lib/mempool-allocfree.c:182,1
    - Dst: free
      Src: /src/dovecot/src/lib/mempool-allocfree.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - apool
    argTypes:
    - struct allocfree_pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 185
    functionName: pool_allocfree_destroy
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - pool_allocfree_clear
    - free
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void pool_allocfree_destroy(struct allocfree_pool *apool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 196
    functionName: pool_allocfree_get_name
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: char
    signature: char *pool_allocfree_get_name(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 205
    functionName: pool_allocfree_ref
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void pool_allocfree_ref(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:211,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:212,1
    - Dst: pool_allocfree_destroy
      Src: /src/dovecot/src/lib/mempool-allocfree.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _pool
    argTypes:
    - pool_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 222
    functionName: pool_allocfree_unref
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - pool_allocfree_destroy
    linkageType: ''
    returnType: void
    signature: void pool_allocfree_unref(pool_t *_pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:226,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/mempool-allocfree.c:227,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/mempool-allocfree.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - apool
    - block
    argTypes:
    - struct allocfree_pool*
    - struct pool_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: pool_block_attach
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - i_assert
    - DLLIST_PREPEND
    linkageType: ''
    returnType: void
    signature: void *pool_block_attach(struct allocfree_pool *apool, struct pool_block
      *block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:238,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:242,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:243,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:246,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:247,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/mempool-allocfree.c:248,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - apool
    - mem
    argTypes:
    - struct allocfree_pool*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 253
    functionName: pool_block_detach
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: struct pool_block
    signature: 'struct pool_block *

      pool_block_detach(struct allocfree_pool *apool, unsigned char *mem)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:258,1
    - Dst: calloc
      Src: /src/dovecot/src/lib/mempool-allocfree.c:260,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/mempool-allocfree.c:262,1
    - Dst: pool_block_attach
      Src: /src/dovecot/src/lib/mempool-allocfree.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pool
    - size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 266
    functionName: pool_allocfree_malloc
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - container_of
    - calloc
    - pool_block_attach
    linkageType: ''
    returnType: void
    signature: void *pool_allocfree_malloc(pool_t pool, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:271,1
    - Dst: pool_block_detach
      Src: /src/dovecot/src/lib/mempool-allocfree.c:272,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/mempool-allocfree.c:274,1
    - Dst: free
      Src: /src/dovecot/src/lib/mempool-allocfree.c:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - mem
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 276
    functionName: pool_allocfree_free
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - pool_block_detach
    - container_of
    - free
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void pool_allocfree_free(pool_t pool, void *mem)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:282,1
    - Dst: pool_block_detach
      Src: /src/dovecot/src/lib/mempool-allocfree.c:285,1
    - Dst: realloc
      Src: /src/dovecot/src/lib/mempool-allocfree.c:288,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/mempool-allocfree.c:289,1
    - Dst: memset
      Src: /src/dovecot/src/lib/mempool-allocfree.c:294,1
    - Dst: pool_block_attach
      Src: /src/dovecot/src/lib/mempool-allocfree.c:298,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - pool
    - mem
    - old_size
    - new_size
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 299
    functionName: pool_allocfree_realloc
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_fatal_status
    - memset
    - pool_block_attach
    - pool_block_detach
    - realloc
    linkageType: ''
    returnType: void
    signature: "void *pool_allocfree_realloc(pool_t pool, void *mem,\n\t\t\t\t    size_t
      old_size, size_t new_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:304,1
    - Dst: pool_allocfree_free
      Src: /src/dovecot/src/lib/mempool-allocfree.c:309,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-allocfree.c:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 301
    functionDepth: 3
    functionLinenumber: 301
    functionLinenumberEnd: 312
    functionName: pool_allocfree_clear
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 1
    functionsReached:
    - i_assert
    - container_of
    - pool_allocfree_free
    linkageType: ''
    returnType: void
    signature: void pool_allocfree_clear(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 317
    functionName: pool_allocfree_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t pool_allocfree_get_max_easy_alloc_size(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 324
    functionName: pool_allocfree_get_total_used_size
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t pool_allocfree_get_total_used_size(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-allocfree.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 332
    functionName: pool_allocfree_get_total_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t pool_allocfree_get_total_alloc_size(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib/mempool-datastack.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 106
    functionName: pool_datastack_create
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 74
    functionsReached:
    - t_new
    linkageType: ''
    returnType: pool_t
    signature: pool_t pool_datastack_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: pool_data_stack_get_name
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pool_data_stack_get_name(pool_t pool ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-datastack.c:116,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool-datastack.c:118,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-datastack.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 122
    functionName: pool_data_stack_ref
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - container_of
    - unlikely
    linkageType: ''
    returnType: void
    signature: void pool_data_stack_ref(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-datastack.c:127,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool-datastack.c:129,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-datastack.c:130,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-datastack.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 136
    functionName: pool_data_stack_unref
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - i_assert
    - container_of
    - unlikely
    linkageType: ''
    returnType: void
    signature: void pool_data_stack_unref(pool_t *pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-datastack.c:141,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool-datastack.c:143,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-datastack.c:144,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/mempool-datastack.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 5
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: pool_data_stack_malloc
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - container_of
    - t_malloc0
    - unlikely
    linkageType: ''
    returnType: void
    signature: void *pool_data_stack_malloc(pool_t pool ATTR_UNUSED, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-datastack.c:152,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool-datastack.c:154,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-datastack.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - pool
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 156
    functionName: pool_data_stack_free
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - container_of
    - unlikely
    linkageType: ''
    returnType: void
    signature: void pool_data_stack_free(pool_t pool, void *mem ATTR_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-datastack.c:162,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-datastack.c:165,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool-datastack.c:168,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-datastack.c:169,1
    - Dst: t_try_realloc
      Src: /src/dovecot/src/lib/mempool-datastack.c:174,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/mempool-datastack.c:175,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/mempool-datastack.c:177,1
    - Dst: memset
      Src: /src/dovecot/src/lib/mempool-datastack.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - pool
    - mem
    - old_size
    - new_size
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 158
    functionDepth: 5
    functionLinenumber: 158
    functionLinenumberEnd: 183
    functionName: pool_data_stack_realloc
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 0
    functionsReached:
    - i_panic
    - memcpy
    - container_of
    - unlikely
    - t_try_realloc
    - t_malloc_no0
    - memset
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void *pool_data_stack_realloc(pool_t pool, void *mem,\n\t\t\t\t     size_t
      old_size, size_t new_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: pool_data_stack_clear
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_data_stack_clear(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_get_bytes_available
      Src: /src/dovecot/src/lib/mempool-datastack.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: pool_data_stack_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool-datastack.c
    functionUses: 0
    functionsReached:
    - t_get_bytes_available
    linkageType: ''
    returnType: size_t
    signature: size_t pool_data_stack_get_max_easy_alloc_size(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-chain.c:14,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-chain.c:16,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-chain.c:17,1
    - Dst: i_stream_create_chain
      Src: /src/dovecot/src/lib/test-istream-chain.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:21,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:21,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib/test-istream-chain.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:24,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:24,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:26,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:27,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:27,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:29,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:29,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib/test-istream-chain.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:32,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:32,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:34,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:35,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:35,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:37,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:37,1
    - Dst: i_stream_chain_append_eof
      Src: /src/dovecot/src/lib/test-istream-chain.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:40,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:40,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:43,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:43,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:48,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:50,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:51,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-chain.c:52,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 7
    functionDepth: 5
    functionLinenumber: 7
    functionLinenumberEnd: 53
    functionName: test_istream_chain_basic
    functionSourceFile: /src/dovecot/src/lib/test-istream-chain.c
    functionUses: 0
    functionsReached:
    - i_stream_chain_append
    - i_stream_get_data
    - test_end
    - test_istream_create
    - i_stream_chain_append_eof
    - test_assert
    - i_stream_create_chain
    - memcmp
    - i_stream_read
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_chain_basic(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-chain.c:60,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-chain.c:62,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-chain.c:63,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-chain.c:64,1
    - Dst: i_stream_create_chain
      Src: /src/dovecot/src/lib/test-istream-chain.c:66,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib/test-istream-chain.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:68,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:68,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-chain.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:70,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:70,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-chain.c:75,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:78,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:79,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-chain.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 55
    functionDepth: 5
    functionLinenumber: 55
    functionLinenumberEnd: 81
    functionName: test_istream_chain_early_end
    functionSourceFile: /src/dovecot/src/lib/test-istream-chain.c
    functionUses: 0
    functionsReached:
    - i_stream_chain_append
    - test_istream_set_allow_eof
    - i_stream_skip
    - test_end
    - i_stream_read
    - test_istream_create
    - i_stream_create_chain
    - test_assert
    - test_istream_set_size
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_chain_early_end(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-chain.c:91,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-chain.c:93,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-chain.c:94,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-chain.c:95,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-chain.c:96,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-chain.c:97,1
    - Dst: i_stream_create_chain
      Src: /src/dovecot/src/lib/test-istream-chain.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:101,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:101,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib/test-istream-chain.c:104,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:106,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:108,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:108,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-chain.c:111,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib/test-istream-chain.c:114,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:115,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-chain.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:117,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:118,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-chain.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:120,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:121,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-chain.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:123,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:123,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-chain.c:124,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-chain.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:126,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:128,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:128,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-chain.c:132,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib/test-istream-chain.c:135,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:136,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-chain.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:138,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:138,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-chain.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:140,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:142,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:144,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:144,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-chain.c:147,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib/test-istream-chain.c:150,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:152,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:152,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:154,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:154,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-chain.c:159,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib/test-istream-chain.c:162,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:164,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:165,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:166,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:166,1
    - Dst: i_stream_chain_append_eof
      Src: /src/dovecot/src/lib/test-istream-chain.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:173,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:173,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:174,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:175,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:176,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:177,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-chain.c:177,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-chain.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:185,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-chain.c:185,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:186,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-chain.c:187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-chain.c:188,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-chain.c:190,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-chain.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 83
    functionDepth: 5
    functionLinenumber: 83
    functionLinenumberEnd: 192
    functionName: test_istream_chain_accumulate
    functionSourceFile: /src/dovecot/src/lib/test-istream-chain.c
    functionUses: 0
    functionsReached:
    - test_istream_set_size
    - i_stream_chain_append
    - test_istream_set_allow_eof
    - i_stream_get_data
    - i_stream_skip
    - test_end
    - test_istream_create
    - i_stream_chain_append_eof
    - test_assert
    - i_stream_create_chain
    - memcmp
    - i_stream_read
    - i_stream_read_data
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_chain_accumulate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_chain_basic
      Src: /src/dovecot/src/lib/test-istream-chain.c:196,1
    - Dst: test_istream_chain_early_end
      Src: /src/dovecot/src/lib/test-istream-chain.c:197,1
    - Dst: test_istream_chain_accumulate
      Src: /src/dovecot/src/lib/test-istream-chain.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 6
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: test_istream_chain
    functionSourceFile: /src/dovecot/src/lib/test-istream-chain.c
    functionUses: 0
    functionsReached:
    - test_istream_chain_basic
    - test_istream_chain_accumulate
    - test_istream_chain_early_end
    linkageType: ''
    returnType: void
    signature: void test_istream_chain(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 9
    functionName: DBL_EQ
    functionSourceFile: /src/dovecot/src/lib/test-stats-dist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DBL_EQ(a, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:18,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/test-stats-dist.c:20,1
    - Dst: i_qsort
      Src: /src/dovecot/src/lib/test-stats-dist.c:31,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-stats-dist.c:33,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/lib/test-stats-dist.c:33,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-stats-dist.c:34,1
    - Dst: stats_dist_get_sum
      Src: /src/dovecot/src/lib/test-stats-dist.c:34,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-stats-dist.c:35,1
    - Dst: stats_dist_get_min
      Src: /src/dovecot/src/lib/test-stats-dist.c:35,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-stats-dist.c:36,1
    - Dst: stats_dist_get_max
      Src: /src/dovecot/src/lib/test-stats-dist.c:36,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-stats-dist.c:37,1
    - Dst: DBL_EQ
      Src: /src/dovecot/src/lib/test-stats-dist.c:37,1
    - Dst: stats_dist_get_avg
      Src: /src/dovecot/src/lib/test-stats-dist.c:37,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-stats-dist.c:41,1
    - Dst: stats_dist_get_median
      Src: /src/dovecot/src/lib/test-stats-dist.c:41,1
    - Dst: stats_dist_get_median
      Src: /src/dovecot/src/lib/test-stats-dist.c:42,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-stats-dist.c:45,1
    - Dst: stats_dist_get_95th
      Src: /src/dovecot/src/lib/test-stats-dist.c:45,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-stats-dist.c:48,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - t
    - input
    - input_size
    argTypes:
    - struct stats_dist*
    - int64_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 49
    functionName: test_stats_dist_verify
    functionSourceFile: /src/dovecot/src/lib/test-stats-dist.c
    functionUses: 0
    functionsReached:
    - stats_dist_get_sum
    - stats_dist_get_avg
    - test_assert_idx
    - stats_dist_get_min
    - i_qsort
    - DBL_EQ
    - stats_dist_get_median
    - stats_dist_get_95th
    - i_new
    - stats_dist_get_count
    - stats_dist_get_max
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_stats_dist_verify(struct stats_dist *t, const int64_t *input,\n\t\t
      \      unsigned int input_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-stats-dist.c:65,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-stats-dist.c:67,1
    - Dst: stats_dist_init
      Src: /src/dovecot/src/lib/test-stats-dist.c:68,1
    - Dst: stats_dist_add
      Src: /src/dovecot/src/lib/test-stats-dist.c:70,1
    - Dst: test_stats_dist_verify
      Src: /src/dovecot/src/lib/test-stats-dist.c:71,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-stats-dist.c:73,1
    - Dst: DBL_EQ
      Src: /src/dovecot/src/lib/test-stats-dist.c:73,1
    - Dst: stats_dist_get_variance
      Src: /src/dovecot/src/lib/test-stats-dist.c:73,1
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/lib/test-stats-dist.c:76,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-stats-dist.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 80
    functionName: test_stats_dist_get_variance
    functionSourceFile: /src/dovecot/src/lib/test-stats-dist.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - DBL_EQ
    - test_begin
    - stats_dist_add
    - stats_dist_get_variance
    - test_end
    - stats_dist_deinit
    - test_stats_dist_verify
    - N_ELEMENTS
    - stats_dist_init
    linkageType: ''
    returnType: void
    signature: void test_stats_dist_get_variance(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-stats-dist.c:102,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-stats-dist.c:103,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-stats-dist.c:103,1
    - Dst: stats_dist_init
      Src: /src/dovecot/src/lib/test-stats-dist.c:104,1
    - Dst: stats_dist_add
      Src: /src/dovecot/src/lib/test-stats-dist.c:106,1
    - Dst: test_stats_dist_verify
      Src: /src/dovecot/src/lib/test-stats-dist.c:107,1
    - Dst: stats_dist_reset
      Src: /src/dovecot/src/lib/test-stats-dist.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:110,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/lib/test-stats-dist.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:111,1
    - Dst: stats_dist_get_max
      Src: /src/dovecot/src/lib/test-stats-dist.c:111,1
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/lib/test-stats-dist.c:112,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-stats-dist.c:113,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-stats-dist.c:116,1
    - Dst: stats_dist_init
      Src: /src/dovecot/src/lib/test-stats-dist.c:117,1
    - Dst: stats_dist_add
      Src: /src/dovecot/src/lib/test-stats-dist.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:120,1
    - Dst: stats_dist_get_count
      Src: /src/dovecot/src/lib/test-stats-dist.c:120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:121,1
    - Dst: stats_dist_get_sum
      Src: /src/dovecot/src/lib/test-stats-dist.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:122,1
    - Dst: stats_dist_get_min
      Src: /src/dovecot/src/lib/test-stats-dist.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:123,1
    - Dst: stats_dist_get_max
      Src: /src/dovecot/src/lib/test-stats-dist.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:124,1
    - Dst: DBL_EQ
      Src: /src/dovecot/src/lib/test-stats-dist.c:124,1
    - Dst: stats_dist_get_avg
      Src: /src/dovecot/src/lib/test-stats-dist.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:126,1
    - Dst: stats_dist_get_median
      Src: /src/dovecot/src/lib/test-stats-dist.c:126,1
    - Dst: stats_dist_get_median
      Src: /src/dovecot/src/lib/test-stats-dist.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-stats-dist.c:127,1
    - Dst: stats_dist_get_95th
      Src: /src/dovecot/src/lib/test-stats-dist.c:127,1
    - Dst: stats_dist_get_95th
      Src: /src/dovecot/src/lib/test-stats-dist.c:127,1
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/lib/test-stats-dist.c:128,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-stats-dist.c:129,1
    - Dst: test_stats_dist_get_variance
      Src: /src/dovecot/src/lib/test-stats-dist.c:131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 132
    functionName: test_stats_dist
    functionSourceFile: /src/dovecot/src/lib/test-stats-dist.c
    functionUses: 0
    functionsReached:
    - test_stats_dist_get_variance
    - stats_dist_get_avg
    - t_strdup_printf
    - stats_dist_get_median
    - stats_dist_get_95th
    - stats_dist_reset
    - test_assert
    - stats_dist_add
    - test_end
    - stats_dist_get_count
    - stats_dist_deinit
    - stats_dist_get_max
    - test_stats_dist_verify
    - stats_dist_init
    - DBL_EQ
    - stats_dist_get_min
    - N_ELEMENTS
    - stats_dist_get_sum
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_stats_dist(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:20,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:24,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 15
    functionDepth: 4
    functionLinenumber: 15
    functionLinenumberEnd: 32
    functionName: i_stream_read_parent
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_stream_get_data_size
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int i_stream_read_parent(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:43,1
    - Dst: base64_encode_get_size
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:47,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:48,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:51,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:52,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:53,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - bstream
    argTypes:
    - struct base64_encoder_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 34
    functionDepth: 5
    functionLinenumber: 34
    functionLinenumberEnd: 58
    functionName: i_stream_base64_try_encode
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_try_alloc
    - i_stream_get_data
    - i_stream_skip
    - base64_encode_get_size
    - buffer_create_from_data
    - i_assert
    - base64_encode_more
    linkageType: ''
    returnType: int
    signature: int i_stream_base64_try_encode(struct base64_encoder_istream *bstream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: base64_encode_get_size
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:68,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:70,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:75,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:78,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:80,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - bstream
    argTypes:
    - struct base64_encoder_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 60
    functionDepth: 5
    functionLinenumber: 60
    functionLinenumberEnd: 86
    functionName: i_stream_base64_finish_encode
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_try_alloc
    - base64_encode_get_size
    - buffer_create_from_data
    - base64_encode_finish
    - i_assert
    linkageType: ''
    returnType: int
    signature: int i_stream_base64_finish_encode(struct base64_encoder_istream *bstream)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:91,1
    - Dst: base64_encode_is_finished
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:95,1
    - Dst: i_stream_read_parent
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:102,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:108,1
    - Dst: i_stream_base64_try_encode
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:115,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:123,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:124,1
    - Dst: i_stream_base64_finish_encode
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:126,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:137,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 88
    functionDepth: 6
    functionLinenumber: 88
    functionLinenumberEnd: 139
    functionName: i_stream_base64_encoder_read
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_get_data_size
    - base64_encode_is_finished
    - i_stream_base64_finish_encode
    - i_stream_read_parent
    - i_stream_base64_try_encode
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_base64_encoder_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:146,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:154,1
    - Dst: base64_encode_reset
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:156,1
    - Dst: i_stream_default_seek_nonseekable
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 141
    functionDepth: 5
    functionLinenumber: 141
    functionLinenumberEnd: 159
    functionName: i_stream_base64_encoder_seek
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_default_seek_nonseekable
    - container_of
    - i_stream_seek
    - base64_encode_reset
    linkageType: ''
    returnType: void
    signature: "void i_stream_base64_encoder_seek(struct istream_private *stream,\n\t\t\t
      \    uoff_t v_offset, bool mark)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:166,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:169,1
    - Dst: base64_get_full_encoded_size
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - stream
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 181
    functionName: i_stream_base64_encoder_stat
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - container_of
    - base64_get_full_encoded_size
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: "int i_stream_base64_encoder_stat(struct istream_private *stream,\n\tbool
      exact ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:191,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:193,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:206,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:208,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - b64
    - input
    - chars_per_line
    - crlf
    argTypes:
    - struct base64_scheme*
    - struct istream*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 210
    functionName: i_stream_create_base64_encoder_common
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    - base64_encode_init
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_base64_encoder_common(const struct
      base64_scheme *b64,\n\t\t\t\t      struct istream *input,\n\t\t\t\t      unsigned
      int chars_per_line, bool crlf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_base64_encoder_common
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - chars_per_line
    - crlf
    argTypes:
    - struct istream*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 212
    functionDepth: 5
    functionLinenumber: 212
    functionLinenumberEnd: 218
    functionName: i_stream_create_base64_encoder
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 1
    functionsReached:
    - i_stream_create_base64_encoder_common
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_base64_encoder(struct istream *input,\n\t\t\t
      \      unsigned int chars_per_line, bool crlf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_base64_encoder_common
      Src: /src/dovecot/src/lib/istream-base64-encoder.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - input
    - chars_per_line
    - crlf
    argTypes:
    - struct istream*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 220
    functionDepth: 5
    functionLinenumber: 220
    functionLinenumberEnd: 226
    functionName: i_stream_create_base64url_encoder
    functionSourceFile: /src/dovecot/src/lib/istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_create_base64_encoder_common
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_base64url_encoder(struct istream
      *input,\n\t\t\t\t  unsigned int chars_per_line, bool crlf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream.c:13,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream.c:15,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream.c:16,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/test-istream.c:18,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/test-istream.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:22,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:22,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:24,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream.c:24,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:27,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:27,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:29,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:31,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:31,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:33,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:36,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream.c:36,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:39,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:39,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:41,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream.c:41,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:43,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:45,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream.c:45,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:48,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:48,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:50,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream.c:50,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:51,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-istream.c:53,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-istream.c:54,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-istream.c:55,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream.c:57,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 7
    functionDepth: 4
    functionLinenumber: 7
    functionLinenumberEnd: 58
    functionName: test_istream_children
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_stream_create_limit
    - i_stream_get_data
    - test_istream_set_max_buffer_size
    - i_stream_skip
    - test_end
    - test_istream_create_data
    - test_assert
    - memcmp
    - i_stream_read
    - test_begin
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_istream_children(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/test-istream.c:63,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - is
    - expect
    - i
    argTypes:
    - struct istream*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: test_istream_next_line_expect
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 0
    functionsReached:
    - i_stream_next_line
    - test_assert_strcmp_idx
    linkageType: ''
    returnType: void
    signature: "void test_istream_next_line_expect(struct istream *is, const char
      *expect,\n\t\t\t\t\t  unsigned int i)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:80,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:81,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:82,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:83,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:84,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:85,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:86,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:87,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:88,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:89,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:90,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream.c:93,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream.c:95,1
    - Dst: i_stream_create_copy_from_data
      Src: /src/dovecot/src/lib/test-istream.c:98,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream.c:99,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:99,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:101,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:102,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/test-istream.c:102,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream.c:103,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:104,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream.c:106,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream.c:107,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:107,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:109,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:110,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/test-istream.c:110,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream.c:111,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:112,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:120,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:120,1
    - Dst: test_istream_next_line_expect
      Src: /src/dovecot/src/lib/test-istream.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:123,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:124,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:132,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:132,1
    - Dst: test_istream_next_line_expect
      Src: /src/dovecot/src/lib/test-istream.c:133,1
    - Dst: test_istream_next_line_expect
      Src: /src/dovecot/src/lib/test-istream.c:134,1
    - Dst: test_istream_next_line_expect
      Src: /src/dovecot/src/lib/test-istream.c:135,1
    - Dst: test_istream_next_line_expect
      Src: /src/dovecot/src/lib/test-istream.c:136,1
    - Dst: test_istream_next_line_expect
      Src: /src/dovecot/src/lib/test-istream.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:138,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:139,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:141,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:144,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:144,1
    - Dst: test_istream_next_line_expect
      Src: /src/dovecot/src/lib/test-istream.c:145,1
    - Dst: test_istream_next_line_expect
      Src: /src/dovecot/src/lib/test-istream.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:147,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:148,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:156,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-istream.c:158,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream.c:160,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:161,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:161,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/test-istream.c:162,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:169,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:170,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:178,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-istream.c:179,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/lib/test-istream.c:180,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream.c:185,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/test-istream.c:185,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:186,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/test-istream.c:187,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:189,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:195,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:196,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:204,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib/test-istream.c:205,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:206,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib/test-istream.c:208,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream.c:212,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:213,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream.c:213,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/test-istream.c:214,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:216,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:220,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:221,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:222,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream.c:224,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 67
    functionDepth: 5
    functionLinenumber: 67
    functionLinenumberEnd: 225
    functionName: test_istream_next_line
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 0
    functionsReached:
    - i_stream_create_crlf
    - test_assert_idx
    - test_assert
    - I_MIN
    - i_stream_next_line
    - i_stream_skip
    - test_end
    - i_stream_set_return_partial_line
    - t_strsplit_spaces
    - test_istream_set_size
    - TEST_CASE
    - i_stream_read
    - N_ELEMENTS
    - test_istream_next_line_expect
    - t_strsplit
    - i_stream_create_copy_from_data
    - test_istream_create_data
    - i_stream_unref
    - test_assert_strcmp_idx
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_next_line(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - s
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(a, s, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(a)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:241,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:242,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:243,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:244,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:245,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:246,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:247,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:248,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:249,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:250,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:251,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream.c:254,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream.c:255,1
    - Dst: i_stream_create_copy_from_data
      Src: /src/dovecot/src/lib/test-istream.c:258,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:259,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:260,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:260,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream.c:261,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:262,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream.c:264,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream.c:265,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:266,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:266,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream.c:267,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:268,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:280,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:283,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:283,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:284,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:285,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:287,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:293,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:293,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:294,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:294,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:295,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:295,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:296,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:296,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:297,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:298,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:299,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:301,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:304,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:304,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:305,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:305,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:306,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:307,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:309,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-istream.c:311,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream.c:313,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:314,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:316,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:320,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:321,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:322,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:330,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-istream.c:331,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/lib/test-istream.c:332,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream.c:336,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:337,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:339,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:344,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:345,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib/test-istream.c:354,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib/test-istream.c:355,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:356,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib/test-istream.c:358,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream.c:362,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:363,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-istream.c:365,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:369,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream.c:370,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream.c:371,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream.c:373,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 227
    functionDepth: 5
    functionLinenumber: 227
    functionLinenumberEnd: 374
    functionName: test_istream_read_next_line
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 0
    functionsReached:
    - i_stream_create_crlf
    - test_assert_idx
    - TEST_CASE
    - i_stream_skip
    - i_stream_read_next_line
    - i_stream_create_copy_from_data
    - t_strsplit
    - test_istream_create_data
    - i_stream_set_return_partial_line
    - test_end
    - test_assert
    - i_stream_unref
    - t_strsplit_spaces
    - test_assert_strcmp_idx
    - test_istream_set_size
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_read_next_line(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - s
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(a, s, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_children
      Src: /src/dovecot/src/lib/test-istream.c:378,1
    - Dst: test_istream_next_line
      Src: /src/dovecot/src/lib/test-istream.c:379,1
    - Dst: test_istream_read_next_line
      Src: /src/dovecot/src/lib/test-istream.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 376
    functionDepth: 6
    functionLinenumber: 376
    functionLinenumberEnd: 381
    functionName: test_istream
    functionSourceFile: /src/dovecot/src/lib/test-istream.c
    functionUses: 0
    functionsReached:
    - test_istream_children
    - test_istream_next_line
    - test_istream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_istream(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/dovecot/src/lib/test-istream-unix.c:17,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:18,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 15
    functionDepth: 2
    functionLinenumber: 15
    functionLinenumberEnd: 19
    functionName: write_one
    functionSourceFile: /src/dovecot/src/lib/test-istream-unix.c
    functionUses: 1
    functionsReached:
    - i_fatal
    - write
    linkageType: ''
    returnType: void
    signature: void write_one(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dovecot/src/lib/test-istream-unix.c:25,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 27
    functionName: read_one
    functionSourceFile: /src/dovecot/src/lib/test-istream-unix.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - read
    linkageType: ''
    returnType: void
    signature: void read_one(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-unix.c:35,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/test-istream-unix.c:35,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-unix.c:36,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-unix.c:37,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - input
    - idx
    argTypes:
    - struct istream*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 3
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: test_server_read_nofd
    functionSourceFile: /src/dovecot/src/lib/test-istream-unix.c
    functionUses: 0
    functionsReached:
    - i_stream_unix_get_read_fd
    - i_stream_read_more
    - i_stream_skip
    - test_assert_idx
    linkageType: ''
    returnType: void
    signature: void test_server_read_nofd(struct istream *input, unsigned int idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-unix.c:48,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/test-istream-unix.c:48,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-unix.c:49,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-unix.c:50,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:50,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/test-istream-unix.c:52,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/test-istream-unix.c:52,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:53,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-unix.c:54,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - input
    - wanted_fd
    - idx
    argTypes:
    - struct istream*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 57
    functionName: test_server_read_fd
    functionSourceFile: /src/dovecot/src/lib/test-istream-unix.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - i_close_fd
    - i_fatal
    - i_stream_skip
    - i_stream_unix_get_read_fd
    - fstat
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void test_server_read_fd(struct istream *input, int wanted_fd, unsigned
      int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_unix
      Src: /src/dovecot/src/lib/test-istream-unix.c:65,1
    - Dst: test_server_read_nofd
      Src: /src/dovecot/src/lib/test-istream-unix.c:67,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:68,1
    - Dst: test_server_read_nofd
      Src: /src/dovecot/src/lib/test-istream-unix.c:71,1
    - Dst: i_stream_set_blocking
      Src: /src/dovecot/src/lib/test-istream-unix.c:73,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-unix.c:75,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/test-istream-unix.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-unix.c:76,1
    - Dst: i_stream_unix_get_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:76,1
    - Dst: i_stream_set_blocking
      Src: /src/dovecot/src/lib/test-istream-unix.c:77,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:78,1
    - Dst: test_server_read_nofd
      Src: /src/dovecot/src/lib/test-istream-unix.c:81,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:82,1
    - Dst: test_server_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:85,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:86,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:89,1
    - Dst: test_server_read_nofd
      Src: /src/dovecot/src/lib/test-istream-unix.c:90,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:91,1
    - Dst: i_stream_unix_unset_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:94,1
    - Dst: test_server_read_nofd
      Src: /src/dovecot/src/lib/test-istream-unix.c:95,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:96,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:99,1
    - Dst: test_server_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:100,1
    - Dst: test_server_read_nofd
      Src: /src/dovecot/src/lib/test-istream-unix.c:101,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:102,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:105,1
    - Dst: test_server_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:106,1
    - Dst: i_stream_unix_set_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:107,1
    - Dst: test_server_read_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:108,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:109,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-istream-unix.c:111,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 113
    functionName: test_istream_unix_server
    functionSourceFile: /src/dovecot/src/lib/test-istream-unix.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - write_one
    - i_stream_unix_unset_read_fd
    - test_server_read_fd
    - i_stream_unix_get_read_fd
    - i_stream_set_blocking
    - i_stream_unix_set_read_fd
    - test_assert
    - test_server_read_nofd
    - i_stream_read_more
    - i_stream_create_unix
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_istream_unix_server(int fd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:118,1
    - Dst: read_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:119,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib/test-istream-unix.c:122,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:123,1
    - Dst: read_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:124,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:127,1
    - Dst: read_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:128,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib/test-istream-unix.c:131,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:132,1
    - Dst: read_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:133,1
    - Dst: write_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:136,1
    - Dst: read_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:137,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib/test-istream-unix.c:140,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:141,1
    - Dst: read_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:142,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib/test-istream-unix.c:145,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:146,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib/test-istream-unix.c:147,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:148,1
    - Dst: read_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:149,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib/test-istream-unix.c:152,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:153,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib/test-istream-unix.c:154,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:155,1
    - Dst: read_one
      Src: /src/dovecot/src/lib/test-istream-unix.c:156,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:158,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 159
    functionName: test_istream_unix_client
    functionSourceFile: /src/dovecot/src/lib/test-istream-unix.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - i_fatal
    - write_one
    - fd_send
    - read_one
    linkageType: ''
    returnType: void
    signature: void test_istream_unix_client(int fd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-unix.c:165,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-istream-unix.c:166,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:167,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-istream-unix.c:168,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:169,1
    - Dst: socketpair
      Src: /src/dovecot/src/lib/test-istream-unix.c:170,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:171,1
    - Dst: fork
      Src: /src/dovecot/src/lib/test-istream-unix.c:172,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-istream-unix.c:174,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:176,1
    - Dst: test_istream_unix_client
      Src: /src/dovecot/src/lib/test-istream-unix.c:177,1
    - Dst: test_exit
      Src: /src/dovecot/src/lib/test-istream-unix.c:178,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:180,1
    - Dst: test_istream_unix_server
      Src: /src/dovecot/src/lib/test-istream-unix.c:181,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:184,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-unix.c:185,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-unix.c:186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 161
    functionDepth: 5
    functionLinenumber: 161
    functionLinenumberEnd: 187
    functionName: test_istream_unix
    functionSourceFile: /src/dovecot/src/lib/test-istream-unix.c
    functionUses: 0
    functionsReached:
    - fork
    - test_exit
    - test_istream_unix_server
    - i_close_fd
    - i_fatal
    - open
    - test_end
    - test_istream_unix_client
    - socketpair
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_unix(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/dovecot/src/lib/rand.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 14
    functionName: i_rand
    functionSourceFile: /src/dovecot/src/lib/rand.c
    functionUses: 4
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t i_rand(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/rand.c:18,1
    - Dst: arc4random_uniform
      Src: /src/dovecot/src/lib/rand.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: i_rand_limit
    functionSourceFile: /src/dovecot/src/lib/rand.c
    functionUses: 46
    functionsReached:
    - arc4random_uniform
    - i_assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t i_rand_limit(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random_fill
      Src: /src/dovecot/src/lib/rand.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 28
    functionName: i_rand
    functionSourceFile: /src/dovecot/src/lib/rand.c
    functionUses: 4
    functionsReached:
    - random_fill
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t i_rand(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/rand.c:94,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/rand.c:97,1
    - Dst: i_rand
      Src: /src/dovecot/src/lib/rand.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 100
    functionName: i_rand_limit
    functionSourceFile: /src/dovecot/src/lib/rand.c
    functionUses: 46
    functionsReached:
    - i_rand
    - i_assert
    - UNSIGNED_MINUS
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t i_rand_limit(uint32_t upper_bound)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/write-full.c:12,1
    - Dst: write
      Src: /src/dovecot/src/lib/write-full.c:15,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/write-full.c:16,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/write-full.c:19,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/write-full.c:26,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - fd
    - data
    - size
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 31
    functionName: write_full
    functionSourceFile: /src/dovecot/src/lib/write-full.c
    functionUses: 42
    functionsReached:
    - i_assert
    - CONST_PTR_OFFSET
    - unlikely
    - write
    linkageType: ''
    returnType: int
    signature: int write_full(int fd, const void *data, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/write-full.c:37,1
    - Dst: pwrite
      Src: /src/dovecot/src/lib/write-full.c:40,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/write-full.c:41,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/write-full.c:44,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/write-full.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - fd
    - data
    - size
    - offset
    argTypes:
    - int
    - void*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 57
    functionName: pwrite_full
    functionSourceFile: /src/dovecot/src/lib/write-full.c
    functionUses: 13
    functionsReached:
    - i_assert
    - pwrite
    - unlikely
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: int pwrite_full(int fd, const void *data, size_t size, off_t offset)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/lib/home-expand.c:19,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/home-expand.c:22,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/home-expand.c:27,1
    - Dst: i_getpwnam
      Src: /src/dovecot/src/lib/home-expand.c:30,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/home-expand.c:32,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/home-expand.c:48,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/home-expand.c:50,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - _path
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 52
    functionName: home_try_expand
    functionSourceFile: /src/dovecot/src/lib/home-expand.c
    functionUses: 0
    functionsReached:
    - i_getpwnam
    - strchr
    - i_error
    - getenv
    - t_strdup_until
    - t_strdup
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int home_try_expand(const char **_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: home_try_expand
      Src: /src/dovecot/src/lib/home-expand.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: home_expand
    functionSourceFile: /src/dovecot/src/lib/home-expand.c
    functionUses: 6
    functionsReached:
    - home_try_expand
    linkageType: ''
    returnType: char
    signature: char *home_expand(const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/home-expand.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - path
    - home
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 72
    functionName: home_expand_tilde
    functionSourceFile: /src/dovecot/src/lib/home-expand.c
    functionUses: 2
    functionsReached:
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: char *home_expand_tilde(const char *path, const char *home)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-net.c:47,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-net.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:49,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:50,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:50,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-net.c:51,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib/test-net.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:55,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:55,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:58,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib/test-net.c:58,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:59,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib/test-net.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:60,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:63,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib/test-net.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:64,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib/test-net.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:67,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:68,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:69,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib/test-net.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:71,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib/test-net.c:71,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-net.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 19
    functionDepth: 3
    functionLinenumber: 19
    functionLinenumberEnd: 73
    functionName: test_net_is_in_network
    functionSourceFile: /src/dovecot/src/lib/test-net.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - test_assert_idx
    - test_end
    - test_assert
    - net_is_in_network
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_net_is_in_network(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-net.c:79,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:80,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:80,1
    - Dst: ntohl
      Src: /src/dovecot/src/lib/test-net.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:83,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:83,1
    - Dst: ntohl
      Src: /src/dovecot/src/lib/test-net.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:86,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:86,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/test-net.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:87,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:87,1
    - Dst: ntohl
      Src: /src/dovecot/src/lib/test-net.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:90,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:90,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/test-net.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:91,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:94,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:94,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/test-net.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:95,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:98,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:98,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/test-net.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:100,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:102,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:102,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-net.c:103,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/test-net.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:104,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:104,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-net.c:105,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/test-net.c:105,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-net.c:106,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 107
    functionName: test_net_ip2addr
    functionSourceFile: /src/dovecot/src/lib/test-net.c
    functionUses: 0
    functionsReached:
    - strcmp
    - net_addr2ip
    - ntohl
    - test_assert_strcmp
    - test_end
    - net_ip2addr
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_net_ip2addr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-net.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:116,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:116,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:118,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:118,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:120,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:120,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:122,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:122,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:124,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:124,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:126,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:126,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:127,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:129,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:129,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:131,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:131,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:133,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:133,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:135,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:135,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:137,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:137,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:139,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:139,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:141,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:141,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:143,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:143,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:146,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:147,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:147,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:148,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:150,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:150,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:152,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:152,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:155,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:155,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:156,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:157,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:157,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:159,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:159,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:160,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:162,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:162,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:163,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:164,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:167,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:167,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:168,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:169,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:169,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:170,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:171,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:171,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:173,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:173,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:174,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:175,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:175,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-net.c:176,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-net.c:177,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 178
    functionName: test_net_str2hostport
    functionSourceFile: /src/dovecot/src/lib/test-net.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - net_str2hostport
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_net_str2hostport(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-net.c:188,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-net.c:191,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:194,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib/test-net.c:194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:197,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/lib/test-net.c:197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-net.c:198,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-net.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 201
    functionName: test_net_unix_long_paths
    functionSourceFile: /src/dovecot/src/lib/test-net.c
    functionUses: 0
    functionsReached:
    - net_connect_unix
    - net_listen_unix
    - test_end
    - test_assert
    - memset
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_net_unix_long_paths(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-net.c:231,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-net.c:232,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:235,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-net.c:236,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-net.c:237,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-net.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 203
    functionDepth: 3
    functionLinenumber: 203
    functionLinenumberEnd: 240
    functionName: test_net_addr2ip
    functionSourceFile: /src/dovecot/src/lib/test-net.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - test_assert_idx
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_net_addr2ip(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_net_is_in_network
      Src: /src/dovecot/src/lib/test-net.c:244,1
    - Dst: test_net_ip2addr
      Src: /src/dovecot/src/lib/test-net.c:245,1
    - Dst: test_net_addr2ip
      Src: /src/dovecot/src/lib/test-net.c:246,1
    - Dst: test_net_str2hostport
      Src: /src/dovecot/src/lib/test-net.c:247,1
    - Dst: test_net_unix_long_paths
      Src: /src/dovecot/src/lib/test-net.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 242
    functionDepth: 4
    functionLinenumber: 242
    functionLinenumberEnd: 249
    functionName: test_net
    functionSourceFile: /src/dovecot/src/lib/test-net.c
    functionUses: 0
    functionsReached:
    - test_net_is_in_network
    - test_net_ip2addr
    - test_net_addr2ip
    - test_net_str2hostport
    - test_net_unix_long_paths
    linkageType: ''
    returnType: void
    signature: void test_net(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: pool_system_get_name
    functionSourceFile: /src/dovecot/src/lib/mempool-system.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pool_system_get_name(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: pool_system_ref
    functionSourceFile: /src/dovecot/src/lib/mempool-system.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_system_ref(pool_t pool ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/dovecot/src/lib/mempool-system.c:105,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool-system.c:106,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/mempool-system.c:107,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-system.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 115
    functionName: pool_system_malloc
    functionSourceFile: /src/dovecot/src/lib/mempool-system.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - i_assert
    - calloc
    - unlikely
    linkageType: ''
    returnType: void
    signature: void *pool_system_malloc(pool_t pool ATTR_UNUSED, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/mempool-system.c:123,1
    - Dst: malloc_usable_size
      Src: /src/dovecot/src/lib/mempool-system.c:123,1
    - Dst: free
      Src: /src/dovecot/src/lib/mempool-system.c:125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-system.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 130
    functionName: pool_system_free
    functionSourceFile: /src/dovecot/src/lib/mempool-system.c
    functionUses: 0
    functionsReached:
    - i_assert
    - malloc_usable_size
    - free
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void pool_system_free(pool_t pool ATTR_UNUSED, void *mem ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-system.c:136,1
    - Dst: malloc_usable_size
      Src: /src/dovecot/src/lib/mempool-system.c:137,1
    - Dst: realloc
      Src: /src/dovecot/src/lib/mempool-system.c:140,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool-system.c:141,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/mempool-system.c:142,1
    - Dst: memset
      Src: /src/dovecot/src/lib/mempool-system.c:148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - mem
    - old_size
    - new_size
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 152
    functionName: pool_system_realloc
    functionSourceFile: /src/dovecot/src/lib/mempool-system.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - unlikely
    - malloc_usable_size
    - memset
    - i_assert
    - realloc
    linkageType: ''
    returnType: void
    signature: "void *pool_system_realloc(pool_t pool ATTR_UNUSED, void *mem,\n\t\t\t\t
      size_t old_size, size_t new_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-system.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 158
    functionName: ATTR_NORETURN::pool_system_clear
    functionSourceFile: /src/dovecot/src/lib/mempool-system.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: void
    signature: 'void ATTR_NORETURN

      pool_system_clear(pool_t pool ATTR_UNUSED)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: pool_system_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool-system.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t pool_system_get_max_easy_alloc_size(pool_t pool ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:42,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-event-category-register.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cat
    argTypes:
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 44
    functionName: check_category
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert
    linkageType: ''
    returnType: void
    signature: void check_category(struct event_category *cat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_category_find_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - name
    - should_exist
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: check_cat_registered
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - event_category_find_registered
    - test_assert
    linkageType: ''
    returnType: void
    signature: void check_cat_registered(const char *name, bool should_exist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-category-register.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:65,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib/test-event-category-register.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:75,1
    - Dst: event_category_find_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:75,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-category-register.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - newcat
    - expcat
    argTypes:
    - struct event_category*
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 57
    functionDepth: 5
    functionLinenumber: 57
    functionLinenumberEnd: 79
    functionName: register_cat
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_unref
    - event_category_find_registered
    - test_assert
    - event_add_category
    linkageType: ''
    returnType: void
    signature: "void register_cat(struct event_category *newcat,\n\t\t\t struct event_category
      *expcat)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:88,1
    - Dst: event_category_find_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-event-category-register.c:94,1
    - Dst: event_category_find_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - cat
    - expectation
    argTypes:
    - struct event_category*
    - enum unreg_expectation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 110
    functionName: unregister_cat
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - event_category_find_registered
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void unregister_cat(struct event_category *cat,\n\t\t\t   enum unreg_expectation
      expectation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-category-register.c:117,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:119,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:120,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:121,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:122,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:124,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:125,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-category-register.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 112
    functionDepth: 6
    functionLinenumber: 112
    functionLinenumberEnd: 129
    functionName: test_event_category_1ptr_null
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_end
    - check_cat_registered
    - register_cat
    - unregister_cat
    linkageType: ''
    returnType: void
    signature: void test_event_category_1ptr_null(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-category-register.c:138,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:140,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:141,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:142,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:143,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:144,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:145,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:146,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:148,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:149,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:151,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:152,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-category-register.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 131
    functionDepth: 6
    functionLinenumber: 131
    functionLinenumberEnd: 157
    functionName: test_event_category_1ptr_nonnull
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_end
    - check_cat_registered
    - register_cat
    - unregister_cat
    linkageType: ''
    returnType: void
    signature: void test_event_category_1ptr_nonnull(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-category-register.c:165,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:167,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:168,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:169,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:170,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:172,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:173,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:174,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:175,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-category-register.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 159
    functionDepth: 6
    functionLinenumber: 159
    functionLinenumberEnd: 179
    functionName: test_event_category_2ptr_null
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_end
    - check_cat_registered
    - register_cat
    - unregister_cat
    linkageType: ''
    returnType: void
    signature: void test_event_category_2ptr_null(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-category-register.c:189,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:191,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:192,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:193,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:194,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:195,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:196,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:197,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:199,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:200,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:201,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:202,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:204,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:205,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-category-register.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 181
    functionDepth: 6
    functionLinenumber: 181
    functionLinenumberEnd: 210
    functionName: test_event_category_2ptr_nonnull_same
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_end
    - check_cat_registered
    - register_cat
    - unregister_cat
    linkageType: ''
    returnType: void
    signature: void test_event_category_2ptr_nonnull_same(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-category-register.c:221,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:223,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:224,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:225,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:226,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:227,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:228,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:229,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:230,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:232,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:233,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:234,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:235,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:237,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:238,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:239,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:240,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-category-register.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 212
    functionDepth: 6
    functionLinenumber: 212
    functionLinenumberEnd: 245
    functionName: test_event_category_2ptr_nonnull_similar
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_end
    - check_cat_registered
    - register_cat
    - unregister_cat
    linkageType: ''
    returnType: void
    signature: void test_event_category_2ptr_nonnull_similar(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_category_register_callback
      Src: /src/dovecot/src/lib/test-event-category-register.c:249,1
    - Dst: test_event_category_1ptr_null
      Src: /src/dovecot/src/lib/test-event-category-register.c:255,1
    - Dst: test_event_category_1ptr_nonnull
      Src: /src/dovecot/src/lib/test-event-category-register.c:256,1
    - Dst: test_event_category_2ptr_null
      Src: /src/dovecot/src/lib/test-event-category-register.c:262,1
    - Dst: test_event_category_2ptr_nonnull_same
      Src: /src/dovecot/src/lib/test-event-category-register.c:263,1
    - Dst: test_event_category_2ptr_nonnull_similar
      Src: /src/dovecot/src/lib/test-event-category-register.c:264,1
    - Dst: event_category_unregister_callback
      Src: /src/dovecot/src/lib/test-event-category-register.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 247
    functionDepth: 7
    functionLinenumber: 247
    functionLinenumberEnd: 267
    functionName: test_event_category_register
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - test_event_category_2ptr_null
    - event_category_unregister_callback
    - test_event_category_1ptr_nonnull
    - test_event_category_1ptr_null
    - test_event_category_2ptr_nonnull_same
    - event_category_register_callback
    - test_event_category_2ptr_nonnull_similar
    linkageType: ''
    returnType: void
    signature: void test_event_category_register(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_category_register_callback
      Src: /src/dovecot/src/lib/test-event-category-register.c:282,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-category-register.c:284,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:286,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:287,1
    - Dst: check_cat_registered
      Src: /src/dovecot/src/lib/test-event-category-register.c:288,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:289,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:290,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:291,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-event-category-register.c:293,1
    - Dst: register_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:294,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-category-register.c:298,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:300,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:301,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:302,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:303,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:305,1
    - Dst: unregister_cat
      Src: /src/dovecot/src/lib/test-event-category-register.c:306,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-category-register.c:308,1
    - Dst: event_category_unregister_callback
      Src: /src/dovecot/src/lib/test-event-category-register.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 269
    functionDepth: 6
    functionLinenumber: 269
    functionLinenumberEnd: 320
    functionName: fatal_event_category_register
    functionSourceFile: /src/dovecot/src/lib/test-event-category-register.c
    functionUses: 0
    functionsReached:
    - unregister_cat
    - event_unref
    - event_category_unregister_callback
    - test_end
    - event_category_register_callback
    - test_expect_fatal_string
    - check_cat_registered
    - register_cat
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_event_category_register(unsigned int stage)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sendfile-util.c:25,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sendfile-util.c:39,1
    - Dst: sendfile
      Src: /src/dovecot/src/lib/sendfile-util.c:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - out_fd
    - in_fd
    - offset
    - count
    argTypes:
    - int
    - int
    - uoff_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 54
    functionName: safe_sendfile
    functionSourceFile: /src/dovecot/src/lib/sendfile-util.c
    functionUses: 1
    functionsReached:
    - i_assert
    - sendfile
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t safe_sendfile(int out_fd, int in_fd, uoff_t *offset, size_t
      count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sendfile-util.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sendfile-util.c:70,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/sendfile-util.c:72,1
    - Dst: sendfile
      Src: /src/dovecot/src/lib/sendfile-util.c:73,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - out_fd
    - in_fd
    - offset
    - count
    argTypes:
    - int
    - int
    - uoff_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 87
    functionName: safe_sendfile
    functionSourceFile: /src/dovecot/src/lib/sendfile-util.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_assert
    - sendfile
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t safe_sendfile(int out_fd, int in_fd, uoff_t *offset, size_t
      count)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sendfile-util.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sendfile-util.c:100,1
    - Dst: sendfile
      Src: /src/dovecot/src/lib/sendfile-util.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sendfile-util.c:119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sendfile-util.c:124,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - out_fd
    - in_fd
    - offset
    - count
    argTypes:
    - int
    - int
    - uoff_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 126
    functionName: safe_sendfile
    functionSourceFile: /src/dovecot/src/lib/sendfile-util.c
    functionUses: 1
    functionsReached:
    - i_assert
    - sendfile
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t safe_sendfile(int out_fd, int in_fd, uoff_t *offset, size_t
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - int
    - int
    - uoff_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 135
    functionName: safe_sendfile
    functionSourceFile: /src/dovecot/src/lib/sendfile-util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t safe_sendfile(int out_fd ATTR_UNUSED, int in_fd ATTR_UNUSED,\n\t\t
      \     uoff_t *offset ATTR_UNUSED,\n\t\t      size_t count ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:37,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:42,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/buffer.c:45,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/buffer.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - struct real_buffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 53
    functionName: buffer_alloc
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 7
    functionsReached:
    - p_realloc
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void buffer_alloc(struct real_buffer *buf, size_t size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/buffer.c:60,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/buffer.c:61,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/buffer.c:67,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/buffer.c:67,1
    - Dst: memset
      Src: /src/dovecot/src/lib/buffer.c:69,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/buffer.c:77,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/buffer.c:78,1
    - Dst: pool_get_name
      Src: /src/dovecot/src/lib/buffer.c:81,1
    - Dst: pool_get_exp_grown_size
      Src: /src/dovecot/src/lib/buffer.c:85,1
    - Dst: buffer_alloc
      Src: /src/dovecot/src/lib/buffer.c:92,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/buffer.c:102,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/buffer.c:103,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/buffer.c:104,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:113,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:114,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 3
    argNames:
    - buf
    - pos
    - data_size
    argTypes:
    - struct real_buffer*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 123
    functionName: buffer_check_limits
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 0
    functionsReached:
    - i_panic
    - memcpy
    - pool_get_name
    - pool_get_exp_grown_size
    - p_free
    - buffer_alloc
    - I_MIN
    - unlikely
    - memset
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void buffer_check_limits(struct real_buffer *buf, size_t pos, size_t
      data_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_check_limits
      Src: /src/dovecot/src/lib/buffer.c:133,1
    - Dst: buffer_check_limits
      Src: /src/dovecot/src/lib/buffer.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - data_size
    argTypes:
    - struct real_buffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 140
    functionName: buffer_check_append_limits
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 0
    functionsReached:
    - buffer_check_limits
    linkageType: ''
    returnType: void
    signature: void buffer_check_append_limits(struct real_buffer *buf, size_t data_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:147,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:149,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/buffer.c:150,1
    - Dst: memset
      Src: /src/dovecot/src/lib/buffer.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - buffer
    - data
    - size
    argTypes:
    - buffer_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 157
    functionName: buffer_create_from_data
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 26
    functionsReached:
    - i_zero
    - memset
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void buffer_create_from_data(buffer_t *buffer, void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:165,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:167,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/buffer.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - buffer
    - data
    - size
    argTypes:
    - buffer_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 173
    functionName: buffer_create_from_const_data
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 6
    functionsReached:
    - i_zero
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: "void buffer_create_from_const_data(buffer_t *buffer,\n\t\t\t\t   const
      void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic_max
      Src: /src/dovecot/src/lib/buffer.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pool
    - init_size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: buffer_create_dynamic
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 99
    functionsReached:
    - buffer_create_dynamic_max
    linkageType: ''
    returnType: buffer_t
    signature: buffer_t *buffer_create_dynamic(pool_t pool, size_t init_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:191,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/buffer.c:194,1
    - Dst: buffer_alloc
      Src: /src/dovecot/src/lib/buffer.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - pool
    - init_size
    - max_size
    argTypes:
    - pool_t
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 203
    functionName: buffer_create_dynamic_max
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 2
    functionsReached:
    - buffer_alloc
    - i_assert
    - p_new
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *buffer_create_dynamic_max(pool_t pool, size_t init_size,\n\t\t\t\t
      \   size_t max_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:209,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/buffer.c:213,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/buffer.c:215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 216
    functionName: buffer_free
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 85
    functionsReached:
    - container_of
    - p_free
    linkageType: ''
    returnType: void
    signature: void buffer_free(buffer_t **_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:220,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/buffer.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 228
    functionName: buffer_free_without_data
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 1
    functionsReached:
    - container_of
    - p_free
    linkageType: ''
    returnType: void
    signature: void *buffer_free_without_data(buffer_t **_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 236
    functionName: buffer_get_pool
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 2
    functionsReached:
    - container_of
    linkageType: ''
    returnType: pool_t
    signature: pool_t buffer_get_pool(const buffer_t *_buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:241,1
    - Dst: buffer_check_limits
      Src: /src/dovecot/src/lib/buffer.c:243,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/buffer.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - _buf
    - pos
    - data
    - data_size
    argTypes:
    - buffer_t*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 238
    functionDepth: 3
    functionLinenumber: 238
    functionLinenumberEnd: 246
    functionName: buffer_write
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 19
    functionsReached:
    - buffer_check_limits
    - container_of
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void buffer_write(buffer_t *_buf, size_t pos,\n\t\t  const void *data,
      size_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:250,1
    - Dst: buffer_check_append_limits
      Src: /src/dovecot/src/lib/buffer.c:254,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/buffer.c:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - _buf
    - data
    - data_size
    argTypes:
    - buffer_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 248
    functionDepth: 4
    functionLinenumber: 248
    functionLinenumberEnd: 257
    functionName: buffer_append
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 135
    functionsReached:
    - memcpy
    - buffer_check_append_limits
    - container_of
    linkageType: ''
    returnType: void
    signature: void buffer_append(buffer_t *_buf, const void *data, size_t data_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:261,1
    - Dst: buffer_check_append_limits
      Src: /src/dovecot/src/lib/buffer.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _buf
    - chr
    argTypes:
    - buffer_t*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: buffer_append_c
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 41
    functionsReached:
    - buffer_check_append_limits
    - container_of
    linkageType: ''
    returnType: void
    signature: void buffer_append_c(buffer_t *_buf, unsigned char chr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:271,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib/buffer.c:274,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib/buffer.c:276,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/buffer.c:277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - _buf
    - pos
    - data
    - data_size
    argTypes:
    - buffer_t*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 268
    functionDepth: 4
    functionLinenumber: 268
    functionLinenumberEnd: 279
    functionName: buffer_insert
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 3
    functionsReached:
    - buffer_write
    - buffer_copy
    - container_of
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void buffer_insert(buffer_t *_buf, size_t pos,\n\t\t   const void
      *data, size_t data_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:283,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/buffer.c:293,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/buffer.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - _buf
    - pos
    - size
    argTypes:
    - buffer_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 301
    functionName: buffer_delete
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 15
    functionsReached:
    - container_of
    - buffer_set_used_size
    - memmove
    linkageType: ''
    returnType: void
    signature: void buffer_delete(buffer_t *_buf, size_t pos, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:306,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib/buffer.c:310,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/buffer.c:319,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib/buffer.c:323,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/buffer.c:325,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib/buffer.c:330,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/buffer.c:333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - _buf
    - pos
    - size
    - data
    - data_size
    argTypes:
    - buffer_t*
    - size_t
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 303
    functionDepth: 4
    functionLinenumber: 303
    functionLinenumberEnd: 334
    functionName: buffer_replace
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 1
    functionsReached:
    - memcpy
    - container_of
    - memmove
    - buffer_write
    - buffer_copy
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: "void buffer_replace(buffer_t *_buf, size_t pos, size_t size,\n\t\t
      \   const void *data, size_t data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:339,1
    - Dst: buffer_check_limits
      Src: /src/dovecot/src/lib/buffer.c:341,1
    - Dst: memset
      Src: /src/dovecot/src/lib/buffer.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _buf
    - pos
    - data_size
    argTypes:
    - buffer_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 337
    functionDepth: 3
    functionLinenumber: 337
    functionLinenumberEnd: 343
    functionName: buffer_write_zero
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 1
    functionsReached:
    - buffer_check_limits
    - memset
    - container_of
    linkageType: ''
    returnType: void
    signature: void buffer_write_zero(buffer_t *_buf, size_t pos, size_t data_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:347,1
    - Dst: buffer_check_limits
      Src: /src/dovecot/src/lib/buffer.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - _buf
    - data_size
    argTypes:
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 352
    functionName: buffer_append_zero
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 17
    functionsReached:
    - buffer_check_limits
    - container_of
    linkageType: ''
    returnType: void
    signature: void buffer_append_zero(buffer_t *_buf, size_t data_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:356,1
    - Dst: buffer_write_zero
      Src: /src/dovecot/src/lib/buffer.c:359,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib/buffer.c:361,1
    - Dst: memset
      Src: /src/dovecot/src/lib/buffer.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _buf
    - pos
    - data_size
    argTypes:
    - buffer_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 364
    functionName: buffer_insert_zero
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 1
    functionsReached:
    - buffer_copy
    - container_of
    - memset
    - buffer_write_zero
    linkageType: ''
    returnType: void
    signature: void buffer_insert_zero(buffer_t *_buf, size_t pos, size_t data_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:368,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 376
    functionName: buffer_nul_terminate
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void buffer_nul_terminate(buffer_t *_buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:381,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:383,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:386,1
    - Dst: buffer_check_limits
      Src: /src/dovecot/src/lib/buffer.c:392,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:393,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/buffer.c:396,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/buffer.c:397,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/buffer.c:399,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/buffer.c:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - _dest
    - dest_pos
    - _src
    - src_pos
    - copy_size
    argTypes:
    - buffer_t*
    - size_t
    - buffer_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 402
    functionName: buffer_copy
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 12
    functionsReached:
    - memcpy
    - container_of
    - memmove
    - buffer_check_limits
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void buffer_copy(buffer_t *_dest, size_t dest_pos,\n\t\t const buffer_t
      *_src, size_t src_pos, size_t copy_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib/buffer.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dest
    - src
    - src_pos
    - copy_size
    argTypes:
    - buffer_t*
    - buffer_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 404
    functionDepth: 4
    functionLinenumber: 404
    functionLinenumberEnd: 408
    functionName: buffer_append_buf
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 8
    functionsReached:
    - buffer_copy
    linkageType: ''
    returnType: void
    signature: "void buffer_append_buf(buffer_t *dest, const buffer_t *src,\n\t\t
      \      size_t src_pos, size_t copy_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:412,1
    - Dst: buffer_check_limits
      Src: /src/dovecot/src/lib/buffer.c:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _buf
    - pos
    - size
    argTypes:
    - buffer_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 410
    functionDepth: 3
    functionLinenumber: 410
    functionLinenumberEnd: 416
    functionName: buffer_get_space_unsafe
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 18
    functionsReached:
    - buffer_check_limits
    - container_of
    linkageType: ''
    returnType: void
    signature: void *buffer_get_space_unsafe(buffer_t *_buf, size_t pos, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/buffer.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 418
    functionDepth: 4
    functionLinenumber: 418
    functionLinenumberEnd: 423
    functionName: buffer_append_space_unsafe
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 31
    functionsReached:
    - buffer_get_space_unsafe
    linkageType: ''
    returnType: void
    signature: void *buffer_append_space_unsafe(buffer_t *buf, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:428,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - _buf
    - used_size_r
    argTypes:
    - buffer_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 434
    functionName: buffer_get_modifiable_data
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 17
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void *buffer_get_modifiable_data(const buffer_t *_buf, size_t *used_size_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:438,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _buf
    - used_size
    argTypes:
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 446
    functionName: buffer_set_used_size
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 113
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void buffer_set_used_size(buffer_t *_buf, size_t used_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:450,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/buffer.c:454,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/buffer.c:454,1
    - Dst: buffer_clear
      Src: /src/dovecot/src/lib/buffer.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 456
    functionName: buffer_clear_safe
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 1
    functionsReached:
    - buffer_clear
    - container_of
    - I_MAX
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void buffer_clear_safe(buffer_t *_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 464
    functionName: buffer_get_size
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 1
    functionsReached:
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t buffer_get_size(const buffer_t *_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 476
    functionName: buffer_get_writable_size
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 8
    functionsReached:
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t buffer_get_writable_size(const buffer_t *_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 485
    functionName: buffer_get_avail_size
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 3
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t buffer_get_avail_size(const buffer_t *_buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib/buffer.c:494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - buf1
    - buf2
    argTypes:
    - buffer_t*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 495
    functionName: buffer_cmp
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 2
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool buffer_cmp(const buffer_t *buf1, const buffer_t *buf2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/buffer.c:500,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/buffer.c:506,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer.c:508,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - _buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 510
    functionName: buffer_verify_pool
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - p_realloc
    linkageType: ''
    returnType: void
    signature: void buffer_verify_pool(buffer_t *_buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/buffer.c:524,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/buffer.c:524,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib/buffer.c:525,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/buffer.c:534,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - buf
    - bits
    argTypes:
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 512
    functionDepth: 2
    functionLinenumber: 512
    functionLinenumberEnd: 536
    functionName: buffer_truncate_rshift_bits
    functionSourceFile: /src/dovecot/src/lib/buffer.c
    functionUses: 2
    functionsReached:
    - I_MIN
    - buffer_get_modifiable_data
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void buffer_truncate_rshift_bits(buffer_t *buf, size_t bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-version.c:9,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:11,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:11,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:12,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:12,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:13,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:13,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:14,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:14,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:16,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:16,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:17,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:18,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:18,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:19,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:20,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:20,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:21,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:21,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:22,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:22,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:23,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:24,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:25,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:26,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-version.c:27,1
    - Dst: version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:27,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-version.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 7
    functionDepth: 3
    functionLinenumber: 7
    functionLinenumberEnd: 30
    functionName: test_version_is_valid
    functionSourceFile: /src/dovecot/src/lib/test-version.c
    functionUses: 0
    functionsReached:
    - test_end
    - version_is_valid
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_version_is_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-version.c:51,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-version.c:53,1
    - Dst: version_cmp
      Src: /src/dovecot/src/lib/test-version.c:53,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-version.c:54,1
    - Dst: version_cmp
      Src: /src/dovecot/src/lib/test-version.c:54,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-version.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 32
    functionDepth: 3
    functionLinenumber: 32
    functionLinenumberEnd: 57
    functionName: test_version_cmp
    functionSourceFile: /src/dovecot/src/lib/test-version.c
    functionUses: 0
    functionsReached:
    - test_end
    - version_cmp
    - test_begin
    - test_assert_idx
    linkageType: ''
    returnType: void
    signature: void test_version_cmp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_version_is_valid
      Src: /src/dovecot/src/lib/test-version.c:61,1
    - Dst: test_version_cmp
      Src: /src/dovecot/src/lib/test-version.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: test_version
    functionSourceFile: /src/dovecot/src/lib/test-version.c
    functionUses: 0
    functionsReached:
    - test_version_cmp
    - test_version_is_valid
    linkageType: ''
    returnType: void
    signature: void test_version(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-concat.c:26,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:27,1
    - Dst: i_stream_concat_skip
      Src: /src/dovecot/src/lib/istream-concat.c:32,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream-concat.c:37,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 22
    functionDepth: 3
    functionLinenumber: 22
    functionLinenumberEnd: 39
    functionName: i_stream_concat_close
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - i_stream_concat_skip
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_concat_close(struct iostream_private *stream,\n\t\t\t\t
      \ bool close_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-concat.c:44,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:45,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-concat.c:49,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-concat.c:50,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-concat.c:51,1
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib/istream-concat.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 53
    functionName: i_stream_concat_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_free_buffer
    - i_stream_unref
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_concat_destroy(struct iostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-concat.c:60,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:61,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream-concat.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 67
    functionName: i_stream_concat_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - i_stream_set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: "void i_stream_concat_set_max_buffer_size(struct iostream_private *stream,\n\t\t\t\t
      \   size_t max_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:75,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-concat.c:78,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-concat.c:82,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-concat.c:85,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:91,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:95,1
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib/istream-concat.c:103,1
    - Dst: i_stream_memarea_detach
      Src: /src/dovecot/src/lib/istream-concat.c:104,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-concat.c:105,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/istream-concat.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:107,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-concat.c:112,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-concat.c:113,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 1
    argNames:
    - cstream
    argTypes:
    - struct concat_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 117
    functionName: i_stream_concat_read_next
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_unreached
    - i_stream_try_alloc
    - i_stream_get_data
    - i_stream_skip
    - i_stream_seek
    - i_stream_memarea_detach
    - i_assert
    - memarea_get_refcount
    linkageType: ''
    returnType: void
    signature: void i_stream_concat_read_next(struct concat_istream *cstream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:124,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-concat.c:135,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:142,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-concat.c:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - cstream
    argTypes:
    - struct concat_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 149
    functionName: i_stream_concat_skip
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_stream_skip
    linkageType: ''
    returnType: void
    signature: void i_stream_concat_skip(struct concat_istream *cstream)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-concat.c:154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:155,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:162,1
    - Dst: i_stream_concat_skip
      Src: /src/dovecot/src/lib/istream-concat.c:163,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:165,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-concat.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:178,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/istream-concat.c:179,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-concat.c:184,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-concat.c:186,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-concat.c:187,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/istream-concat.c:196,1
    - Dst: i_stream_concat_read_next
      Src: /src/dovecot/src/lib/istream-concat.c:199,1
    - Dst: i_stream_concat_read
      Src: /src/dovecot/src/lib/istream-concat.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:205,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-concat.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:211,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:223,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-concat.c:225,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib/istream-concat.c:235,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-concat.c:243,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:248,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 151
    functionDepth: 6
    functionLinenumber: 151
    functionLinenumberEnd: 253
    functionName: i_stream_concat_read
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 1
    functionsReached:
    - memcpy
    - container_of
    - io_stream_set_error
    - i_stream_try_alloc
    - i_stream_set_input_pending
    - i_stream_get_data
    - i_stream_get_max_buffer_size
    - i_stream_get_error
    - i_stream_read
    - i_stream_get_name
    - i_assert
    - i_stream_concat_skip
    - i_stream_concat_read
    - i_stream_concat_read_next
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_concat_read(struct istream_private *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib/istream-concat.c:269,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-concat.c:270,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-concat.c:272,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-concat.c:273,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/istream-concat.c:274,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-concat.c:275,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-concat.c:276,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - cstream
    - v_offset
    - idx_r
    argTypes:
    - struct concat_istream*
    - uoff_t*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 293
    functionName: find_v_offset
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 0
    functionsReached:
    - i_error
    - io_stream_set_error
    - i_stream_stat
    - i_stream_get_error
    - i_stream_get_name
    linkageType: ''
    returnType: int
    signature: "int find_v_offset(struct concat_istream *cstream, uoff_t *v_offset,\n\t
      \     unsigned int *idx_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-concat.c:299,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:300,1
    - Dst: find_v_offset
      Src: /src/dovecot/src/lib/istream-concat.c:308,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-concat.c:318,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:323,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-concat.c:329,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 295
    functionDepth: 4
    functionLinenumber: 295
    functionLinenumberEnd: 330
    functionName: i_stream_concat_seek
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_stream_set_error
    - find_v_offset
    - i_stream_seek
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void i_stream_concat_seek(struct istream_private *stream,\n\t\t\t\t
      uoff_t v_offset, bool mark ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-concat.c:336,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:337,1
    - Dst: find_v_offset
      Src: /src/dovecot/src/lib/istream-concat.c:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 332
    functionDepth: 3
    functionLinenumber: 332
    functionLinenumberEnd: 349
    functionName: i_stream_concat_stat
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 0
    functionsReached:
    - find_v_offset
    - i_assert
    - container_of
    linkageType: ''
    returnType: int
    signature: int i_stream_concat_stat(struct istream_private *stream, bool exact
      ATTR_UNUSED)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/istream-concat.c:361,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:363,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/istream-concat.c:370,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-concat.c:372,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-concat.c:378,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib/istream-concat.c:380,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-concat.c:381,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-concat.c:384,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-concat.c:399,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 351
    functionDepth: 4
    functionLinenumber: 351
    functionLinenumberEnd: 400
    functionName: i_stream_create_concat
    functionSourceFile: /src/dovecot/src/lib/istream-concat.c
    functionUses: 13
    functionsReached:
    - i_stream_ref
    - i_stream_get_max_buffer_size
    - i_stream_seek
    - i_new
    - i_stream_create
    - i_assert
    - p_memdup
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_concat(struct istream *input[])
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-crlf.c:14,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-istream-crlf.c:17,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/test-istream-crlf.c:20,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-istream-crlf.c:21,1
    - Dst: i_stream_create_lf
      Src: /src/dovecot/src/lib/test-istream-crlf.c:24,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-istream-crlf.c:30,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib/test-istream-crlf.c:34,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-istream-crlf.c:38,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-istream-crlf.c:39,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-crlf.c:46,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-crlf.c:47,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/test-istream-crlf.c:48,1
    - Dst: i_stream_create_lf
      Src: /src/dovecot/src/lib/test-istream-crlf.c:51,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib/test-istream-crlf.c:52,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-crlf.c:56,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/test-istream-crlf.c:60,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-crlf.c:62,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-crlf.c:63,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/test-istream-crlf.c:65,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/test-istream-crlf.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-crlf.c:66,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-crlf.c:70,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-crlf.c:70,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-istream-crlf.c:70,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-crlf.c:73,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-istream-crlf.c:73,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-crlf.c:74,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-crlf.c:75,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 8
    functionDepth: 4
    functionLinenumber: 8
    functionLinenumberEnd: 77
    functionName: test_istream_crlf_input
    functionSourceFile: /src/dovecot/src/lib/test-istream-crlf.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - i_stream_create_crlf
    - str_data
    - test_assert_idx
    - str_len
    - strlen
    - i_stream_get_data
    - I_MAX
    - i_stream_create_lf
    - i_stream_read
    - str_truncate
    - test_assert
    - i_stream_unref
    - memcmp
    - i_stream_create_from_data
    linkageType: ''
    returnType: void
    signature: void test_istream_crlf_input(const char *input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-crlf.c:90,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-crlf.c:91,1
    - Dst: test_istream_crlf_input
      Src: /src/dovecot/src/lib/test-istream-crlf.c:92,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-crlf.c:93,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-crlf.c:96,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-crlf.c:101,1
    - Dst: test_istream_crlf_input
      Src: /src/dovecot/src/lib/test-istream-crlf.c:112,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 79
    functionDepth: 5
    functionLinenumber: 79
    functionLinenumberEnd: 113
    functionName: test_istream_crlf
    functionSourceFile: /src/dovecot/src/lib/test-istream-crlf.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_end
    - i_rand_limit
    - N_ELEMENTS
    - test_istream_crlf_input
    linkageType: ''
    returnType: void
    signature: void test_istream_crlf(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-macros.c:18,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/test-macros.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-macros.c:20,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-macros.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 22
    functionName: test_container_of
    functionSourceFile: /src/dovecot/src/lib/test-macros.c
    functionUses: 0
    functionsReached:
    - test_end
    - container_of
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_container_of(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - prefix
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: TEST_POINTER_CAST
    functionSourceFile: /src/dovecot/src/lib/test-macros.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_POINTER_CAST(type, prefix, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: TEST_BUF
    functionSourceFile: /src/dovecot/src/lib/test-hmac.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_BUF(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hmac.c:206,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hmac.c:207,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib/test-hmac.c:210,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-hmac.c:210,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/test-hmac.c:211,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib/test-hmac.c:213,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-hmac.c:214,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-hmac.c:214,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hmac.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 204
    functionDepth: 3
    functionLinenumber: 204
    functionLinenumberEnd: 217
    functionName: test_hmac_rfc
    functionSourceFile: /src/dovecot/src/lib/test-hmac.c
    functionUses: 0
    functionsReached:
    - hmac_update
    - test_assert_idx
    - test_begin
    - hmac_final
    - test_end
    - memcmp
    - hmac_init
    - N_ELEMENTS
    - hash_method_lookup
    linkageType: ''
    returnType: void
    signature: void test_hmac_rfc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hmac.c:221,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hmac.c:222,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib/test-hmac.c:225,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-hmac.c:225,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/test-hmac.c:226,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib/test-hmac.c:228,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-hmac.c:229,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-hmac.c:229,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hmac.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 232
    functionName: test_hmac384_rfc
    functionSourceFile: /src/dovecot/src/lib/test-hmac.c
    functionUses: 0
    functionsReached:
    - hmac_update
    - test_assert_idx
    - test_begin
    - hmac_final
    - test_end
    - memcmp
    - hmac_init
    - N_ELEMENTS
    - hash_method_lookup
    linkageType: ''
    returnType: void
    signature: void test_hmac384_rfc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hmac.c:236,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hmac.c:237,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib/test-hmac.c:240,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-hmac.c:240,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/test-hmac.c:241,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib/test-hmac.c:243,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-hmac.c:244,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-hmac.c:244,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hmac.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 247
    functionName: test_hmac512_rfc
    functionSourceFile: /src/dovecot/src/lib/test-hmac.c
    functionUses: 0
    functionsReached:
    - hmac_update
    - test_assert_idx
    - test_begin
    - hmac_final
    - test_end
    - memcmp
    - hmac_init
    - N_ELEMENTS
    - hash_method_lookup
    linkageType: ''
    returnType: void
    signature: void test_hmac512_rfc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hmac.c:252,1
    - Dst: t_hmac_data
      Src: /src/dovecot/src/lib/test-hmac.c:256,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-hmac.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hmac.c:259,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-hmac.c:260,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hmac.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 249
    functionDepth: 3
    functionLinenumber: 249
    functionLinenumberEnd: 263
    functionName: test_hmac_buffer
    functionSourceFile: /src/dovecot/src/lib/test-hmac.c
    functionUses: 0
    functionsReached:
    - t_hmac_data
    - test_begin
    - test_end
    - memcmp
    - test_assert
    - hash_method_lookup
    linkageType: ''
    returnType: void
    signature: void test_hmac_buffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hmac.c:267,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-hmac.c:268,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-hmac.c:269,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-hmac.c:270,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-hmac.c:272,1
    - Dst: hmac_hkdf
      Src: /src/dovecot/src/lib/test-hmac.c:273,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-hmac.c:275,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-hmac.c:275,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hmac.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 279
    functionName: test_hkdf_rfc
    functionSourceFile: /src/dovecot/src/lib/test-hmac.c
    functionUses: 0
    functionsReached:
    - hmac_hkdf
    - test_assert_idx
    - test_begin
    - t_buffer_create
    - buffer_set_used_size
    - test_end
    - memcmp
    - N_ELEMENTS
    - hash_method_lookup
    linkageType: ''
    returnType: void
    signature: void test_hkdf_rfc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hmac.c:283,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-hmac.c:285,1
    - Dst: t_hmac_hkdf
      Src: /src/dovecot/src/lib/test-hmac.c:286,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-hmac.c:289,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-hmac.c:290,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hmac.c:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 292
    functionName: test_hkdf_buffer
    functionSourceFile: /src/dovecot/src/lib/test-hmac.c
    functionUses: 0
    functionsReached:
    - test_begin
    - t_hmac_hkdf
    - test_end
    - memcmp
    - test_assert
    - hash_method_lookup
    linkageType: ''
    returnType: void
    signature: void test_hkdf_buffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_hmac_rfc
      Src: /src/dovecot/src/lib/test-hmac.c:296,1
    - Dst: test_hmac384_rfc
      Src: /src/dovecot/src/lib/test-hmac.c:297,1
    - Dst: test_hmac512_rfc
      Src: /src/dovecot/src/lib/test-hmac.c:298,1
    - Dst: test_hmac_buffer
      Src: /src/dovecot/src/lib/test-hmac.c:299,1
    - Dst: test_hkdf_rfc
      Src: /src/dovecot/src/lib/test-hmac.c:300,1
    - Dst: test_hkdf_buffer
      Src: /src/dovecot/src/lib/test-hmac.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 294
    functionDepth: 4
    functionLinenumber: 294
    functionLinenumberEnd: 302
    functionName: test_hmac
    functionSourceFile: /src/dovecot/src/lib/test-hmac.c
    functionUses: 0
    functionsReached:
    - test_hmac_buffer
    - test_hkdf_buffer
    - test_hmac_rfc
    - test_hkdf_rfc
    - test_hmac512_rfc
    - test_hmac384_rfc
    linkageType: ''
    returnType: void
    signature: void test_hmac(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: PARENT_IDX
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARENT_IDX(idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: LEFT_CHILD_IDX
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEFT_CHILD_IDX(idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 15
    functionName: RIGHT_CHILD_IDX
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIGHT_CHILD_IDX(idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/priorityq.c:27,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/priorityq.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cmp_callback
    - init_size
    argTypes:
    - priorityq_cmp_callback_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 31
    functionName: priorityq_init
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct priorityq
    signature: 'struct priorityq *

      priorityq_init(priorityq_cmp_callback_t *cmp_callback, unsigned int init_size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib/priorityq.c:38,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/priorityq.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _pq
    argTypes:
    - struct priorityq**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: priorityq_deinit
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 1
    functionsReached:
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void priorityq_deinit(struct priorityq **_pq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib/priorityq.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pq
    argTypes:
    - struct priorityq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: priorityq_count
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int priorityq_count(const struct priorityq *pq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/priorityq.c:53,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/priorityq.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - items
    - idx1
    - idx2
    argTypes:
    - struct priorityq_item**
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 63
    functionName: heap_items_swap
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void heap_items_swap(struct priorityq_item **items,\n\t\t\t    unsigned
      int idx1, unsigned int idx2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib/priorityq.c:71,1
    - Dst: PARENT_IDX
      Src: /src/dovecot/src/lib/priorityq.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/priorityq.c:75,1
    - Dst: struct priorityq*::cmp_callback
      Src: /src/dovecot/src/lib/priorityq.c:76,1
    - Dst: heap_items_swap
      Src: /src/dovecot/src/lib/priorityq.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - pq
    - idx
    argTypes:
    - struct priorityq*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 84
    functionName: heap_item_bubble_up
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - struct priorityq*::cmp_callback
    - PARENT_IDX
    - heap_items_swap
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int heap_item_bubble_up(struct priorityq *pq, unsigned int
      idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib/priorityq.c:91,1
    - Dst: LEFT_CHILD_IDX
      Src: /src/dovecot/src/lib/priorityq.c:92,1
    - Dst: RIGHT_CHILD_IDX
      Src: /src/dovecot/src/lib/priorityq.c:93,1
    - Dst: struct priorityq*::cmp_callback
      Src: /src/dovecot/src/lib/priorityq.c:95,1
    - Dst: struct priorityq*::cmp_callback
      Src: /src/dovecot/src/lib/priorityq.c:100,1
    - Dst: heap_items_swap
      Src: /src/dovecot/src/lib/priorityq.c:104,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - pq
    - idx
    argTypes:
    - struct priorityq*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 107
    functionName: heap_item_bubble_down
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - struct priorityq*::cmp_callback
    - RIGHT_CHILD_IDX
    - LEFT_CHILD_IDX
    - heap_items_swap
    linkageType: ''
    returnType: void
    signature: void heap_item_bubble_down(struct priorityq *pq, unsigned int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib/priorityq.c:111,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/priorityq.c:112,1
    - Dst: heap_item_bubble_up
      Src: /src/dovecot/src/lib/priorityq.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pq
    - item
    argTypes:
    - struct priorityq*
    - struct priorityq_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: priorityq_add
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 1
    functionsReached:
    - array_count
    - heap_item_bubble_up
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void priorityq_add(struct priorityq *pq, struct priorityq_item *item)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib/priorityq.c:121,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/priorityq.c:122,1
    - Dst: heap_items_swap
      Src: /src/dovecot/src/lib/priorityq.c:126,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/priorityq.c:127,1
    - Dst: heap_item_bubble_up
      Src: /src/dovecot/src/lib/priorityq.c:131,1
    - Dst: heap_item_bubble_down
      Src: /src/dovecot/src/lib/priorityq.c:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - pq
    - idx
    argTypes:
    - struct priorityq*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 134
    functionName: priorityq_remove_idx
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get_modifiable
    - heap_item_bubble_down
    - heap_item_bubble_up
    - heap_items_swap
    - i_assert
    linkageType: ''
    returnType: void
    signature: void priorityq_remove_idx(struct priorityq *pq, unsigned int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_remove_idx
      Src: /src/dovecot/src/lib/priorityq.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pq
    - item
    argTypes:
    - struct priorityq*
    - struct priorityq_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 4
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: priorityq_remove
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 1
    functionsReached:
    - priorityq_remove_idx
    linkageType: ''
    returnType: void
    signature: void priorityq_remove(struct priorityq *pq, struct priorityq_item *item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib/priorityq.c:146,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/priorityq.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pq
    argTypes:
    - struct priorityq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 151
    functionName: priorityq_peek
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 1
    functionsReached:
    - array_count
    - array_front
    linkageType: ''
    returnType: struct priorityq_item
    signature: struct priorityq_item *priorityq_peek(struct priorityq *pq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_peek
      Src: /src/dovecot/src/lib/priorityq.c:157,1
    - Dst: priorityq_remove_idx
      Src: /src/dovecot/src/lib/priorityq.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - pq
    argTypes:
    - struct priorityq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 153
    functionDepth: 4
    functionLinenumber: 153
    functionLinenumberEnd: 163
    functionName: priorityq_pop
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached:
    - priorityq_peek
    - priorityq_remove_idx
    linkageType: ''
    returnType: struct priorityq_item
    signature: struct priorityq_item *priorityq_pop(struct priorityq *pq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib/priorityq.c:167,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/priorityq.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 171
    functionName: priorityq_items
    functionSourceFile: /src/dovecot/src/lib/priorityq.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_front
    linkageType: ''
    returnType: struct priorityq_item
    signature: struct priorityq_item *const *priorityq_items(struct priorityq *pq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - fd
    - ','
    - condition
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: io_add
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_add(fd, condition, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - ioloop
    - ','
    - fd
    - ','
    - condition
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: io_add_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_add_to(ioloop, fd, condition, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - path
    - ','
    - callback
    - ','
    - context
    - ','
    - io_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: io_add_notify
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_add_notify(path, callback, context, io_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - input
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: io_add_istream
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 50
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_add_istream(input, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ioloop
    - ','
    - input
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: io_add_istream_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_add_istream_to(ioloop, input, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - msecs
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 129
    functionName: timeout_add
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 109
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timeout_add(msecs, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ioloop
    - ','
    - msecs
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: timeout_add_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timeout_add_to(ioloop, msecs, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - msecs
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: timeout_add_short
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timeout_add_short(msecs, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ioloop
    - ','
    - msecs
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: timeout_add_short_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timeout_add_short_to(ioloop, msecs, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - time
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: timeout_add_absolute
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timeout_add_absolute(time, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ioloop
    - ','
    - time
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: timeout_add_absolute_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timeout_add_absolute_to(ioloop, time, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ctx
    - ','
    - activate
    - ','
    - deactivate
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 250
    functionName: io_loop_context_add_callbacks
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_loop_context_add_callbacks(ctx, activate, deactivate, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ctx
    - ','
    - activate
    - ','
    - deactivate
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 259
    functionName: io_loop_context_remove_callbacks
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_loop_context_remove_callbacks(ctx, activate, deactivate, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 292
    functionName: io_wait_timer_add
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_wait_timer_add()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ioloop
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 297
    functionName: io_wait_timer_add_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_wait_timer_add_to(ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:16,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:17,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:18,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:19,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-llist.c:21,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:22,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:24,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:28,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:29,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:30,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:37,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:43,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:45,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:50,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:53,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:55,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:57,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:58,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:60,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-llist.c:61,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 62
    functionName: test_dllist
    functionSourceFile: /src/dovecot/src/lib/test-llist.c
    functionUses: 0
    functionsReached:
    - t_new
    - test_end
    - DLLIST_PREPEND
    - test_assert
    - DLLIST_REMOVE
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dllist(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:69,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:70,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:71,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:72,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-llist.c:74,1
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:76,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:78,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:81,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:82,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib/test-llist.c:84,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:86,1
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:91,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib/test-llist.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:97,1
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:98,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:106,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:110,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:112,1
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/lib/test-llist.c:114,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:119,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:125,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:127,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib/test-llist.c:128,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:130,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-llist.c:131,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 132
    functionName: test_dllist2
    functionSourceFile: /src/dovecot/src/lib/test-llist.c
    functionUses: 0
    functionsReached:
    - t_new
    - DLLIST2_APPEND
    - test_begin
    - DLLIST2_REMOVE
    - test_end
    - test_assert
    - DLLIST2_PREPEND
    linkageType: ''
    returnType: void
    signature: void test_dllist2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-llist.c:137,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-llist.c:139,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-llist.c:140,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:141,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-llist.c:142,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-llist.c:144,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-llist.c:145,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib/test-llist.c:148,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib/test-llist.c:150,1
    - Dst: DLLIST2_JOIN
      Src: /src/dovecot/src/lib/test-llist.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:156,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:161,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:165,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-llist.c:166,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-llist.c:169,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 134
    functionDepth: 3
    functionLinenumber: 134
    functionLinenumberEnd: 170
    functionName: test_dllist2_join
    functionSourceFile: /src/dovecot/src/lib/test-llist.c
    functionUses: 0
    functionsReached:
    - t_new
    - DLLIST2_APPEND
    - DLLIST2_JOIN
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dllist2_join(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dllist
      Src: /src/dovecot/src/lib/test-llist.c:174,1
    - Dst: test_dllist2
      Src: /src/dovecot/src/lib/test-llist.c:175,1
    - Dst: test_dllist2_join
      Src: /src/dovecot/src/lib/test-llist.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 172
    functionDepth: 4
    functionLinenumber: 172
    functionLinenumberEnd: 177
    functionName: test_llist
    functionSourceFile: /src/dovecot/src/lib/test-llist.c
    functionUses: 0
    functionsReached:
    - test_dllist
    - test_dllist2
    - test_dllist2_join
    linkageType: ''
    returnType: void
    signature: void test_llist(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strescape.c:58,1
    - Dst: str_escape
      Src: /src/dovecot/src/lib/test-strescape.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:64,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strescape.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:71,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:71,1
    - Dst: str_escape
      Src: /src/dovecot/src/lib/test-strescape.c:71,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strescape.c:73,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strescape.c:75,1
    - Dst: str_nescape
      Src: /src/dovecot/src/lib/test-strescape.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:78,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:78,1
    - Dst: str_nescape
      Src: /src/dovecot/src/lib/test-strescape.c:80,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:81,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-strescape.c:81,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strescape.c:83,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-strescape.c:85,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strescape.c:86,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strescape.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:88,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:88,1
    - Dst: str_unescape
      Src: /src/dovecot/src/lib/test-strescape.c:88,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/test-strescape.c:88,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-strescape.c:90,1
    - Dst: str_append_unescaped
      Src: /src/dovecot/src/lib/test-strescape.c:91,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strescape.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:92,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:92,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-strescape.c:92,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strescape.c:94,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strescape.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:98,1
    - Dst: str_unescape_next
      Src: /src/dovecot/src/lib/test-strescape.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:99,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:99,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:100,1
    - Dst: str_unescape_next
      Src: /src/dovecot/src/lib/test-strescape.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:101,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:101,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:102,1
    - Dst: str_unescape_next
      Src: /src/dovecot/src/lib/test-strescape.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:104,1
    - Dst: str_unescape_next
      Src: /src/dovecot/src/lib/test-strescape.c:104,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strescape.c:105,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strescape.c:107,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strescape.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:109,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:109,1
    - Dst: t_str_tabunescape
      Src: /src/dovecot/src/lib/test-strescape.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:111,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:111,1
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib/test-strescape.c:111,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/test-strescape.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:113,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:113,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib/test-strescape.c:113,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-strescape.c:115,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/lib/test-strescape.c:116,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strescape.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:117,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:117,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-strescape.c:117,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-strescape.c:119,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/lib/test-strescape.c:121,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strescape.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:122,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:122,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-strescape.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:123,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:123,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-strescape.c:123,1
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib/test-strescape.c:123,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/test-strescape.c:123,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strescape.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 125
    functionName: test_str_escape
    functionSourceFile: /src/dovecot/src/lib/test-strescape.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_append_unescaped
    - strlen
    - str_escape
    - test_assert
    - t_str_new
    - t_str_tabunescape
    - str_unescape
    - str_unescape_next
    - str_tabescape
    - test_end
    - str_nescape
    - t_strdup_noconst
    - str_tabunescape
    - str_append_tabunescaped
    - N_ELEMENTS
    - strcmp
    - str_truncate
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_escape(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-strescape.c:129,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strescape.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:132,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:132,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib/test-strescape.c:132,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/test-strescape.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:135,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:135,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-strescape.c:135,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-strescape.c:138,1
    - Dst: str_append_tabescaped_n
      Src: /src/dovecot/src/lib/test-strescape.c:139,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strescape.c:140,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:141,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-strescape.c:141,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-strescape.c:144,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/lib/test-strescape.c:145,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strescape.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:146,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:146,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-strescape.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:148,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:148,1
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib/test-strescape.c:148,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/test-strescape.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:149,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:149,1
    - Dst: t_str_tabunescape
      Src: /src/dovecot/src/lib/test-strescape.c:149,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-strescape.c:152,1
    - Dst: str_append_tabunescaped
      Src: /src/dovecot/src/lib/test-strescape.c:153,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-strescape.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:154,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:154,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-strescape.c:154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:156,1
    - Dst: str_tabunescape
      Src: /src/dovecot/src/lib/test-strescape.c:156,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/test-strescape.c:156,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-strescape.c:157,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:157,1
    - Dst: t_str_tabunescape
      Src: /src/dovecot/src/lib/test-strescape.c:157,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strescape.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 160
    functionName: test_tabescape
    functionSourceFile: /src/dovecot/src/lib/test-strescape.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_tabescaped_n
    - str_tabunescape
    - t_str_tabunescape
    - t_strdup_noconst
    - strlen
    - str_tabescape
    - test_assert_strcmp
    - str_append_tabunescaped
    - test_end
    - str_append_tabescaped
    - str_truncate
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_tabescape(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strescape.c:166,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strescape.c:167,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib/test-strescape.c:168,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strescape.c:170,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:170,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strescape.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: test_strsplit_tabescaped
    functionSourceFile: /src/dovecot/src/lib/test-strescape.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - t_strsplit_tabescaped
    - test_end
    - null_strcmp
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_strsplit_tabescaped(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-strescape.c:179,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-strescape.c:180,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/test-strescape.c:181,1
    - Dst: t_strsplit_tabescaped_inplace
      Src: /src/dovecot/src/lib/test-strescape.c:182,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-strescape.c:184,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-strescape.c:184,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-strescape.c:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 187
    functionName: test_strsplit_tabescaped_inplace
    functionSourceFile: /src/dovecot/src/lib/test-strescape.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_begin
    - test_end
    - null_strcmp
    - t_strsplit_tabescaped_inplace
    - N_ELEMENTS
    - t_strdup_noconst
    linkageType: ''
    returnType: void
    signature: void test_strsplit_tabescaped_inplace(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-strescape.c:191,1
    - Dst: test_str_escape
      Src: /src/dovecot/src/lib/test-strescape.c:193,1
    - Dst: test_tabescape
      Src: /src/dovecot/src/lib/test-strescape.c:194,1
    - Dst: test_strsplit_tabescaped
      Src: /src/dovecot/src/lib/test-strescape.c:195,1
    - Dst: test_strsplit_tabescaped_inplace
      Src: /src/dovecot/src/lib/test-strescape.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 189
    functionDepth: 4
    functionLinenumber: 189
    functionLinenumberEnd: 197
    functionName: test_strescape
    functionSourceFile: /src/dovecot/src/lib/test-strescape.c
    functionUses: 0
    functionsReached:
    - test_tabescape
    - t_strdup_printf
    - test_str_escape
    - test_strsplit_tabescaped_inplace
    - test_strsplit_tabescaped
    linkageType: ''
    returnType: void
    signature: void test_strescape(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 11
    functionName: BITS_REQUIRED
    functionSourceFile: /src/dovecot/src/lib/bits.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITS_REQUIRED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: BITS_REQUIRED
    functionSourceFile: /src/dovecot/src/lib/bits.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITS_REQUIRED(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/bits.c:17,1
    - Dst: BITS_REQUIRED
      Src: /src/dovecot/src/lib/bits.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - num
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 23
    functionName: nearest_power
    functionSourceFile: /src/dovecot/src/lib/bits.c
    functionUses: 13
    functionsReached:
    - BITS_REQUIRED
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: size_t nearest_power(size_t num)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 35
    functionName: bits_required8
    functionSourceFile: /src/dovecot/src/lib/bits.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bits_required8(uint8_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/str.c:16,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/str.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pool
    - initial_size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 11
    functionDepth: 2
    functionLinenumber: 11
    functionLinenumberEnd: 17
    functionName: str_new
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 774
    functionsReached:
    - buffer_create_dynamic
    - I_MAX
    linkageType: ''
    returnType: string_t
    signature: string_t *str_new(pool_t pool, size_t initial_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str.c:23,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/str.c:25,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib/str.c:26,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/str.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - pool
    - str
    - len
    argTypes:
    - pool_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 29
    functionName: str_new_const
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 2
    functionsReached:
    - i_assert
    - p_new
    - str_truncate
    - buffer_create_from_const_data
    linkageType: ''
    returnType: string_t
    signature: string_t *str_new_const(pool_t pool, const char *str, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib/str.c:33,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/str.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - initial_size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 3
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: t_str_new
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 644
    functionsReached:
    - pool_datastack_create
    - str_new
    linkageType: ''
    returnType: string_t
    signature: string_t *t_str_new(size_t initial_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new_const
      Src: /src/dovecot/src/lib/str.c:38,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/str.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: t_str_new_const
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 0
    functionsReached:
    - str_new_const
    - pool_datastack_create
    linkageType: ''
    returnType: string_t
    signature: string_t *t_str_new_const(const char *str, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/str.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: str_free
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 68
    functionsReached:
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void str_free(string_t **str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_nul_terminate
      Src: /src/dovecot/src/lib/str.c:51,1
    - Dst: buffer_free_without_data
      Src: /src/dovecot/src/lib/str.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: str_free_without_data
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 1
    functionsReached:
    - buffer_nul_terminate
    - buffer_free_without_data
    linkageType: ''
    returnType: char
    signature: char *str_free_without_data(string_t **str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_nul_terminate
      Src: /src/dovecot/src/lib/str.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: str_c
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 687
    functionsReached:
    - buffer_nul_terminate
    linkageType: ''
    returnType: char
    signature: char *str_c(string_t *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_nul_terminate
      Src: /src/dovecot/src/lib/str.c:63,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib/str.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: str_c_modifiable
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 15
    functionsReached:
    - buffer_nul_terminate
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: char
    signature: char *str_c_modifiable(string_t *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib/str.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - str1
    - str2
    argTypes:
    - string_t*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 73
    functionName: str_equals
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool str_equals(const string_t *str1, const string_t *str2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/dovecot/src/lib/str.c:80,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/str.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - str
    - cstr
    - max_len
    argTypes:
    - string_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 75
    functionDepth: 5
    functionLinenumber: 75
    functionLinenumberEnd: 86
    functionName: str_append_max
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 8
    functionsReached:
    - buffer_append
    - memchr
    linkageType: ''
    returnType: void
    signature: void str_append_max(string_t *str, const char *cstr, size_t max_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/str.c:92,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib/str.c:93,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/str.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - str
    - fmt
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: str_printfa
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 281
    functionsReached:
    - va_end
    - str_vprintfa
    - va_start
    linkageType: ''
    returnType: void
    signature: void str_printfa(string_t *str, const char *fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VA_COPY
      Src: /src/dovecot/src/lib/str.c:106,1
    - Dst: printf_format_fix_get_len
      Src: /src/dovecot/src/lib/str.c:111,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib/str.c:115,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib/str.c:116,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib/str.c:119,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/str.c:121,1
    - Dst: vsnprintf
      Src: /src/dovecot/src/lib/str.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str.c:123,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/str.c:128,1
    - Dst: vsnprintf
      Src: /src/dovecot/src/lib/str.c:129,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str.c:130,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/str.c:132,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/str.c:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - str
    - fmt
    - args
    argTypes:
    - string_t*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 97
    functionDepth: 8
    functionLinenumber: 97
    functionLinenumberEnd: 136
    functionName: str_vprintfa
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 11
    functionsReached:
    - buffer_get_space_unsafe
    - VA_COPY
    - buffer_set_used_size
    - printf_format_fix_get_len
    - buffer_get_writable_size
    - vsnprintf
    - i_assert
    - va_end
    linkageType: ''
    returnType: void
    signature: void str_vprintfa(string_t *str, const char *fmt, va_list args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/str.c:140,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/str.c:144,1
    - Dst: uni_utf8_data_truncate
      Src: /src/dovecot/src/lib/str.c:144,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/str.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - string_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 145
    functionName: str_truncate_utf8
    functionSourceFile: /src/dovecot/src/lib/str.c
    functionUses: 2
    functionsReached:
    - uni_utf8_data_truncate
    - str_truncate
    - str_data
    - str_len
    linkageType: ''
    returnType: void
    signature: void str_truncate_utf8(string_t *str, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: F
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: G
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: H
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - f
    - ','
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - x
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: STEP
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STEP(f, a, b, c, d, x, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 43
    functionName: SET
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 208
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: GET
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:73,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:73,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:74,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:74,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:75,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:75,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:76,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:76,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:78,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:78,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:79,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:79,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:80,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:80,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:81,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:81,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:83,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:83,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:84,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:84,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:85,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:85,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:86,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:86,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:88,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:88,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:89,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:89,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:90,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:90,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:91,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md4.c:91,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:93,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:93,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:94,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:94,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:95,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:95,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:96,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:96,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:98,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:98,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:99,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:99,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:100,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:100,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:101,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:101,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:103,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:103,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:104,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:104,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:105,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:105,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:106,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:106,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:108,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:108,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:109,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:109,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:110,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:110,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:111,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:111,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:113,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:113,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:114,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:114,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:115,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:115,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:116,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:116,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:118,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:118,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:119,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:119,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:120,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:120,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:121,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:121,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:123,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:123,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:124,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:124,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:125,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:125,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:126,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:126,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:128,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:128,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:129,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:129,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:130,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:130,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md4.c:131,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md4.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 70
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct md4_context*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 147
    functionName: body
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 17
    functionsReached:
    - GET
    - SET
    - STEP
    linkageType: ''
    returnType: void
    signature: "void * ATTR_NOWARN_UNUSED_RESULT ATTR_UNSIGNED_WRAPS\n\tATTR_NO_SANITIZE_UNDEFINED
      ATTR_NO_SANITIZE_INTEGER\n\tATTR_NO_SANITIZE_IMPLICIT_CONVERSION\nbody(struct
      md4_context *ctx, const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct md4_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 158
    functionName: md4_init
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void md4_init(struct md4_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib/md4.c:180,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/md4.c:184,1
    - Dst: body
      Src: /src/dovecot/src/lib/md4.c:187,1
    - Dst: body
      Src: /src/dovecot/src/lib/md4.c:191,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/md4.c:195,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct md4_context*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 196
    functionName: md4_update
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 0
    functionsReached:
    - memcpy
    - body
    linkageType: ''
    returnType: void
    signature: void md4_update(struct md4_context *ctx, const void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/md4.c:212,1
    - Dst: body
      Src: /src/dovecot/src/lib/md4.c:213,1
    - Dst: memset
      Src: /src/dovecot/src/lib/md4.c:218,1
    - Dst: body
      Src: /src/dovecot/src/lib/md4.c:230,1
    - Dst: i_zero_safe
      Src: /src/dovecot/src/lib/md4.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct md4_context*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 250
    functionName: md4_final
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 1
    functionsReached:
    - body
    - memset
    - i_zero_safe
    linkageType: ''
    returnType: void
    signature: void md4_final(struct md4_context *ctx, unsigned char result[STATIC_ARRAY
      MD4_RESULTLEN])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md4_init
      Src: /src/dovecot/src/lib/md4.c:257,1
    - Dst: md4_update
      Src: /src/dovecot/src/lib/md4.c:258,1
    - Dst: md4_final
      Src: /src/dovecot/src/lib/md4.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - data
    - size
    - result
    argTypes:
    - void*
    - size_t
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 260
    functionName: md4_get_digest
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 0
    functionsReached:
    - md4_update
    - md4_init
    - md4_final
    linkageType: ''
    returnType: void
    signature: "void md4_get_digest(const void *data, size_t size,\n\t\t    unsigned
      char result[STATIC_ARRAY MD4_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md4_init
      Src: /src/dovecot/src/lib/md4.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: hash_method_init_md4
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 0
    functionsReached:
    - md4_init
    linkageType: ''
    returnType: void
    signature: void hash_method_init_md4(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md4_update
      Src: /src/dovecot/src/lib/md4.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: hash_method_loop_md4
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 0
    functionsReached:
    - md4_update
    linkageType: ''
    returnType: void
    signature: void hash_method_loop_md4(void *context, const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md4_final
      Src: /src/dovecot/src/lib/md4.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 274
    functionName: hash_method_result_md4
    functionSourceFile: /src/dovecot/src/lib/md4.c
    functionUses: 0
    functionsReached:
    - md4_final
    linkageType: ''
    returnType: void
    signature: void hash_method_result_md4(void *context, unsigned char *result_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_get_expr_for_testing
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:27,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:28,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:28,1
    - Dst: event_filter_query_match_eval
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:31,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:34,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - test_name
    - event
    - filter
    - log_type
    - expected
    argTypes:
    - char*
    - struct event*
    - struct event_filter*
    - enum event_filter_log_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 16
    functionDepth: 3
    functionLinenumber: 16
    functionLinenumberEnd: 36
    functionName: check_expr
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 0
    functionsReached:
    - test_out_quiet
    - t_strdup_printf
    - event_filter_query_match_eval
    - event_filter_get_expr_for_testing
    linkageType: ''
    returnType: void
    signature: "void check_expr(const char *test_name,\n\t\t       struct event *event,\n\t\t
      \      struct event_filter *filter,\n\t\t       enum event_filter_log_type log_type,\n\t\t
      \      bool expected)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:44,1
    - Dst: event_filter_category_from_log_type
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:47,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:48,1
    - Dst: event_find_field_recursive_str
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:49,1
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:54,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:55,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:55,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:56,1
    - Dst: check_expr
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:58,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - filter_string
    - event
    - log_type
    - expected
    argTypes:
    - char*
    - struct event*
    - enum event_filter_log_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 38
    functionDepth: 4
    functionLinenumber: 38
    functionLinenumberEnd: 61
    functionName: do_test_expr
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 0
    functionsReached:
    - check_expr
    - event_filter_category_from_log_type
    - t_strdup_printf
    - event_filter_create
    - test_out_quiet
    - event_filter_parse
    - event_find_field_recursive_str
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: "void do_test_expr(const char *filter_string, struct event *event,\n\t\t\t
      enum event_filter_log_type log_type,\n\t\t\t bool expected)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNARY
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - event
    - expr
    - truth
    - log_type
    argTypes:
    - struct event*
    - char*
    - bool
    - enum event_filter_log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 90
    functionName: test_unary_expr
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 0
    functionsReached:
    - UNARY
    linkageType: ''
    returnType: void
    signature: "void test_unary_expr(struct event *event,\n\t\t\t    const char *expr,
      bool truth,\n\t\t\t    enum event_filter_log_type log_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 88
    functionName: UNARY
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNARY()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BINARY
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:159,1
    - Dst: BINARY
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 6
    argNames:
    - event
    - expr1
    - expr2
    - truth1
    - truth2
    - log_type
    argTypes:
    - struct event*
    - char*
    - char*
    - bool
    - bool
    - enum event_filter_log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 161
    functionName: test_binary_expr
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 0
    functionsReached:
    - BINARY
    linkageType: ''
    returnType: void
    signature: "void test_binary_expr(struct event *event,\n\t\t\t     const char
      *expr1, const char *expr2,\n\t\t\t     bool truth1, bool truth2,\n\t\t\t     enum
      event_filter_log_type log_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - opstr
    - ','
    - op
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 158
    functionName: BINARY
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BINARY(opstr, op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:179,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:181,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:182,1
    - Dst: test_unary_expr
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:184,1
    - Dst: STR_IS_EMPTY
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:186,1
    - Dst: test_unary_expr
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:188,1
    - Dst: STR_MATCHES
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:190,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:193,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:197,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:198,1
    - Dst: event_create
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:200,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:201,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:202,1
    - Dst: test_binary_expr
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:204,1
    - Dst: STR_IS_EMPTY
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:207,1
    - Dst: STR_IS_EMPTY
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:208,1
    - Dst: test_binary_expr
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:210,1
    - Dst: STR_MATCHES
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:213,1
    - Dst: STR_IS_EMPTY
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:214,1
    - Dst: test_binary_expr
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:216,1
    - Dst: STR_IS_EMPTY
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:219,1
    - Dst: STR_MATCHES
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:220,1
    - Dst: test_binary_expr
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:222,1
    - Dst: STR_MATCHES
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:225,1
    - Dst: STR_MATCHES
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:226,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - log_type
    argTypes:
    - enum event_filter_log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 163
    functionDepth: 4
    functionLinenumber: 163
    functionLinenumberEnd: 232
    functionName: test_event_filter_expr_fields
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 0
    functionsReached:
    - event_create
    - STR_MATCHES
    - event_unref
    - STR_IS_EMPTY
    - test_unary_expr
    - test_binary_expr
    - event_add_str
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_event_filter_expr_fields(enum event_filter_log_type log_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 175
    functionName: STR_IS_EMPTY
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_IS_EMPTY(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: STR_MATCHES
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_MATCHES(v, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:246,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:247,1
    - Dst: test_event_filter_expr_fields
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:248,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter-expr.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 234
    functionDepth: 5
    functionLinenumber: 234
    functionLinenumberEnd: 250
    functionName: test_event_filter_expr
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-expr.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_event_filter_expr_fields
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_expr(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - hexstr
    - dec
    - hexstr_size
    argTypes:
    - unsigned char*
    - uintmax_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 18
    functionName: dec2hex
    functionSourceFile: /src/dovecot/src/lib/hex-dec.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dec2hex(unsigned char *hexstr, uintmax_t dec, unsigned int hexstr_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - unsigned char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 37
    functionName: hex2dec
    functionSourceFile: /src/dovecot/src/lib/hex-dec.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: uintmax_t
    signature: uintmax_t hex2dec(const unsigned char *data, unsigned int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct str_find_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 31
    functionName: init_badtab
    functionSourceFile: /src/dovecot/src/lib/str-find.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_badtab(struct str_find_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - suffixes
    argTypes:
    - struct str_find_context*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: init_suffixes
    functionSourceFile: /src/dovecot/src/lib/str-find.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_suffixes(struct str_find_context *ctx, unsigned int *suffixes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/str-find.c:59,1
    - Dst: init_suffixes
      Src: /src/dovecot/src/lib/str-find.c:60,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct str_find_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 76
    functionName: init_goodtab
    functionSourceFile: /src/dovecot/src/lib/str-find.c
    functionUses: 0
    functionsReached:
    - init_suffixes
    - t_buffer_get
    linkageType: ''
    returnType: void
    signature: void init_goodtab(struct str_find_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/str-find.c:81,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-find.c:83,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-find.c:84,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/str-find.c:86,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/str-find.c:86,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/str-find.c:87,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/str-find.c:89,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/str-find.c:91,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/str-find.c:92,1
    - Dst: init_goodtab
      Src: /src/dovecot/src/lib/str-find.c:94,1
    - Dst: init_badtab
      Src: /src/dovecot/src/lib/str-find.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - pool
    - key
    argTypes:
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 78
    functionDepth: 6
    functionLinenumber: 78
    functionLinenumberEnd: 97
    functionName: str_find_init
    functionSourceFile: /src/dovecot/src/lib/str-find.c
    functionUses: 2
    functionsReached:
    - MALLOC_MULTIPLY
    - memcpy
    - p_new
    - strlen
    - init_goodtab
    - init_badtab
    - MALLOC_ADD
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: struct str_find_context
    signature: struct str_find_context *str_find_init(pool_t pool, const char *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib/str-find.c:104,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/str-find.c:105,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/str-find.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct str_find_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 107
    functionName: str_find_deinit
    functionSourceFile: /src/dovecot/src/lib/str-find.c
    functionUses: 1
    functionsReached:
    - p_free
    linkageType: ''
    returnType: void
    signature: void str_find_deinit(struct str_find_context **_ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-find.c:140,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/str-find.c:158,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-find.c:160,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 51
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct str_find_context*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 173
    functionName: str_find_more
    functionSourceFile: /src/dovecot/src/lib/str-find.c
    functionUses: 3
    functionsReached:
    - i_assert
    - I_MAX
    linkageType: ''
    returnType: bool
    signature: "bool str_find_more(struct str_find_context *ctx,\n\t\t    const unsigned
      char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct str_find_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: str_find_get_match_end_pos
    functionSourceFile: /src/dovecot/src/lib/str-find.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t str_find_get_match_end_pos(struct str_find_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct str_find_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: str_find_reset
    functionSourceFile: /src/dovecot/src/lib/str-find.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void str_find_reset(struct str_find_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - uuid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: GUID_128_IS_UUID4
    functionSourceFile: /src/dovecot/src/lib/guid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GUID_128_IS_UUID4(uuid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/guid.h:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - guid
    argTypes:
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: guid_128_empty
    functionSourceFile: /src/dovecot/src/lib/guid.h
    functionUses: 5
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void guid_128_empty(guid_128_t guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib/guid.h:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - guid_128_t
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: guid_128_copy
    functionSourceFile: /src/dovecot/src/lib/guid.h
    functionUses: 15
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void guid_128_copy(guid_128_t dest, const guid_128_t src)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib/event-filter.c:50,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/event-filter.c:55,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/event-filter.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - pool
    - fragment
    argTypes:
    - pool_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 59
    functionName: event_filter_create_real
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct event_filter
    signature: struct event_filter *event_filter_create_real(pool_t pool, bool fragment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_create_real
      Src: /src/dovecot/src/lib/event-filter.c:63,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/event-filter.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: event_filter_create
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 30
    functionsReached:
    - pool_alloconly_create
    - event_filter_create_real
    linkageType: ''
    returnType: struct event_filter
    signature: struct event_filter *event_filter_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_create_real
      Src: /src/dovecot/src/lib/event-filter.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: event_filter_create_with_pool
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 3
    functionsReached:
    - event_filter_create_real
    linkageType: ''
    returnType: struct event_filter
    signature: struct event_filter *event_filter_create_with_pool(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_create_real
      Src: /src/dovecot/src/lib/event-filter.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: event_filter_create_fragment
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - event_filter_create_real
    linkageType: ''
    returnType: struct event_filter
    signature: struct event_filter *event_filter_create_fragment(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/event-filter.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct event_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: event_filter_ref
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 4
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void event_filter_ref(struct event_filter *filter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/event-filter.c:88,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/event-filter.c:95,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/event-filter.c:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _filter
    argTypes:
    - struct event_filter**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 100
    functionName: event_filter_unref
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 36
    functionsReached:
    - i_assert
    - DLLIST_REMOVE
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void event_filter_unref(struct event_filter **_filter)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/event-filter.c:109,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/event-filter.c:111,1
    - Dst: IPADDR_BITS
      Src: /src/dovecot/src/lib/event-filter.c:113,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/event-filter.c:115,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/event-filter.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - wanted_field
    argTypes:
    - struct event_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 122
    functionName: wanted_field_value_str
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - i_unreached
    - net_ip2addr
    - IPADDR_BITS
    linkageType: ''
    returnType: char
    signature: 'char *

      wanted_field_value_str(const struct event_field *wanted_field)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/event-filter.c:135,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib/event-filter.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - filter
    - context
    argTypes:
    - struct event_filter*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 146
    functionName: event_filter_get_or_alloc_internal_query
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - array_foreach_modifiable
    - array_append_space
    linkageType: ''
    returnType: struct event_filter_query_internal
    signature: "struct event_filter_query_internal *\nevent_filter_get_or_alloc_internal_query(struct
      event_filter *filter,\n\t\t\t\t\t void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/event-filter.c:154,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/event-filter.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - pool
    - root
    - new
    - op
    argTypes:
    - pool_t
    - struct event_filter_node**
    - struct event_filter_node*
    - enum event_filter_node_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 168
    functionName: add_node
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 2
    functionsReached:
    - i_assert
    - p_new
    linkageType: ''
    returnType: void
    signature: "void add_node(pool_t pool, struct event_filter_node **root,\n\t\t
      \    struct event_filter_node *new,\n\t\t     enum event_filter_node_op op)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: filter_node_requires_event_name
      Src: /src/dovecot/src/lib/event-filter.c:174,1
    - Dst: filter_node_requires_event_name
      Src: /src/dovecot/src/lib/event-filter.c:176,1
    - Dst: filter_node_requires_event_name
      Src: /src/dovecot/src/lib/event-filter.c:177,1
    - Dst: filter_node_requires_event_name
      Src: /src/dovecot/src/lib/event-filter.c:179,1
    - Dst: filter_node_requires_event_name
      Src: /src/dovecot/src/lib/event-filter.c:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct event_filter_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 185
    functionName: filter_node_requires_event_name
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - filter_node_requires_event_name
    linkageType: ''
    returnType: bool
    signature: bool filter_node_requires_event_name(struct event_filter_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/event-filter.c:195,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/event-filter.c:197,1
    - Dst: event_filter_parser_lex_init
      Src: /src/dovecot/src/lib/event-filter.c:202,1
    - Dst: event_filter_parser_set_extra
      Src: /src/dovecot/src/lib/event-filter.c:203,1
    - Dst: event_filter_parser_parse
      Src: /src/dovecot/src/lib/event-filter.c:205,1
    - Dst: event_filter_parser_lex_destroy
      Src: /src/dovecot/src/lib/event-filter.c:207,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/event-filter.c:211,1
    - Dst: event_filter_get_or_alloc_internal_query
      Src: /src/dovecot/src/lib/event-filter.c:213,1
    - Dst: add_node
      Src: /src/dovecot/src/lib/event-filter.c:215,1
    - Dst: filter_node_requires_event_name
      Src: /src/dovecot/src/lib/event-filter.c:219,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/event-filter.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - str
    - filter
    - case_sensitive
    - error_r
    argTypes:
    - char*
    - struct event_filter*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 233
    functionName: event_filter_parse_real
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - i_zero
    - event_filter_parser_parse
    - event_filter_get_or_alloc_internal_query
    - event_filter_parser_lex_init
    - event_filter_parser_lex_destroy
    - strlen
    - filter_node_requires_event_name
    - event_filter_parser_set_extra
    - add_node
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int event_filter_parse_real(const char *str, struct event_filter *filter,\n\t\t\tbool
      case_sensitive, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_parse_real
      Src: /src/dovecot/src/lib/event-filter.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - filter
    - error_r
    argTypes:
    - char*
    - struct event_filter*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: event_filter_parse
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 26
    functionsReached:
    - event_filter_parse_real
    linkageType: ''
    returnType: int
    signature: "int event_filter_parse(const char *str, struct event_filter *filter,\n\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_parse_real
      Src: /src/dovecot/src/lib/event-filter.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - filter
    - error_r
    argTypes:
    - char*
    - struct event_filter*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 245
    functionDepth: 3
    functionLinenumber: 245
    functionLinenumberEnd: 252
    functionName: event_filter_parse_case_sensitive
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 3
    functionsReached:
    - event_filter_parse_real
    linkageType: ''
    returnType: int
    signature: "int event_filter_parse_case_sensitive(const char *str,\n\t\t\t\t      struct
      event_filter *filter,\n\t\t\t\t      const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/event-filter.c:265,1
    - Dst: event_filter_node_find_field_exact
      Src: /src/dovecot/src/lib/event-filter.c:273,1
    - Dst: event_filter_node_find_field_exact
      Src: /src/dovecot/src/lib/event-filter.c:277,1
    - Dst: event_filter_node_find_field_exact
      Src: /src/dovecot/src/lib/event-filter.c:283,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 4
    argNames:
    - node
    - key
    - op_not
    - op_not_r
    argTypes:
    - struct event_filter_node*
    - char*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 289
    functionName: event_filter_node_find_field_exact
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - strcmp
    - event_filter_node_find_field_exact
    linkageType: ''
    returnType: char
    signature: "char *\nevent_filter_node_find_field_exact(struct event_filter_node
      *node,\n\t\t\t\t   const char *key, bool op_not, bool *op_not_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/event-filter.c:297,1
    - Dst: event_filter_node_find_field_exact
      Src: /src/dovecot/src/lib/event-filter.c:298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - filter
    - key
    - op_not_r
    argTypes:
    - struct event_filter*
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 303
    functionName: event_filter_find_field_exact
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - event_filter_node_find_field_exact
    - array_foreach
    linkageType: ''
    returnType: char
    signature: "char *event_filter_find_field_exact(struct event_filter *filter,\n\t\t\t\t\t
      \ const char *key, bool *op_not_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/event-filter.c:312,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/event-filter.c:314,1
    - Dst: event_filter_node_has_field_prefix
      Src: /src/dovecot/src/lib/event-filter.c:319,1
    - Dst: event_filter_node_has_field_prefix
      Src: /src/dovecot/src/lib/event-filter.c:321,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 3
    argNames:
    - node
    - key
    - prefix
    argTypes:
    - struct event_filter_node*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 331
    functionName: event_filter_node_has_field_prefix
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - strcmp
    - str_begins_with
    - event_filter_node_has_field_prefix
    linkageType: ''
    returnType: bool
    signature: "bool event_filter_node_has_field_prefix(struct event_filter_node *node,\n\t\t\t\t
      \  const char *key, const char *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/event-filter.c:338,1
    - Dst: event_filter_node_has_field_prefix
      Src: /src/dovecot/src/lib/event-filter.c:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - filter
    - key
    - prefix
    argTypes:
    - struct event_filter*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 343
    functionName: event_filter_has_field_prefix
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - event_filter_node_has_field_prefix
    - array_foreach
    linkageType: ''
    returnType: bool
    signature: "bool event_filter_has_field_prefix(struct event_filter *filter,\n\t\t\t\t
      \  const char *key, const char *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/event-filter.c:350,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/event-filter.c:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - name
    - log_type_r
    argTypes:
    - char*
    - enum event_filter_log_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 357
    functionName: event_filter_category_to_log_type
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: "bool event_filter_category_to_log_type(const char *name,\n\t\t\t\t
      \      enum event_filter_log_type *log_type_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/event-filter.c:364,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/event-filter.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - log_type
    argTypes:
    - enum event_filter_log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 369
    functionName: event_filter_category_from_log_type
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - N_ELEMENTS
    - i_unreached
    linkageType: ''
    returnType: char
    signature: 'char *

      event_filter_category_from_log_type(enum event_filter_log_type log_type)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: p_new::p_new
      Src: /src/dovecot/src/lib/event-filter.c:379,1
    - Dst: clone_expr
      Src: /src/dovecot/src/lib/event-filter.c:384,1
    - Dst: clone_expr
      Src: /src/dovecot/src/lib/event-filter.c:385,1
    - Dst: category::category
      Src: /src/dovecot/src/lib/event-filter.c:388,1
    - Dst: category::category
      Src: /src/dovecot/src/lib/event-filter.c:389,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/event-filter.c:389,1
    - Dst: category::category
      Src: /src/dovecot/src/lib/event-filter.c:390,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:393,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/event-filter.c:393,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:394,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:398,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/event-filter.c:398,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:401,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:404,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:407,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:408,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/event-filter.c:411,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/event-filter.c:413,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:413,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/event-filter.c:414,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/event-filter.c:415,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/event-filter.c:416,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/event-filter.c:417,1
    - Dst: field::field
      Src: /src/dovecot/src/lib/event-filter.c:417,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 2
    argNames:
    - pool
    - old
    argTypes:
    - pool_t
    - struct event_filter_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 431
    functionName: clone_expr
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - field::field
    - p_strdup
    - p_array_init
    - clone_expr
    - array_foreach_elem
    - array_push_back
    - category::category
    - array_count
    - p_new::p_new
    - array_is_created
    linkageType: ''
    returnType: struct event_filter_node
    signature: 'struct event_filter_node *

      clone_expr(pool_t pool, struct event_filter_node *old)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/event-filter.c:450,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/event-filter.c:453,1
    - Dst: event_filter_get_or_alloc_internal_query::event_filter_get_or_alloc_internal_query
      Src: /src/dovecot/src/lib/event-filter.c:457,1
    - Dst: add_node
      Src: /src/dovecot/src/lib/event-filter.c:459,1
    - Dst: expr::expr
      Src: /src/dovecot/src/lib/event-filter.c:459,1
    - Dst: clone_expr
      Src: /src/dovecot/src/lib/event-filter.c:460,1
    - Dst: filter_node_requires_event_name
      Src: /src/dovecot/src/lib/event-filter.c:462,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - dest
    - src
    - op
    - new_context
    - with_context
    argTypes:
    - struct event_filter*
    - struct event_filter*
    - enum event_filter_merge_op
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 433
    functionDepth: 2
    functionLinenumber: 433
    functionLinenumberEnd: 464
    functionName: event_filter_merge_with_context_internal
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - clone_expr
    - filter_node_requires_event_name
    - array_foreach
    - event_filter_get_or_alloc_internal_query::event_filter_get_or_alloc_internal_query
    - add_node
    - expr::expr
    linkageType: ''
    returnType: void
    signature: "void event_filter_merge_with_context_internal(struct event_filter
      *dest,\n\t\t\t\t\t const struct event_filter *src,\n\t\t\t\t\t enum event_filter_merge_op
      op,\n\t\t\t\t\t void *new_context, bool with_context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/event-filter.c:472,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib/event-filter.c:474,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/event-filter.c:475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - filter
    - context
    argTypes:
    - struct event_filter*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 480
    functionName: event_filter_remove_queries_with_context
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - array_delete
    - array_foreach
    - array_foreach_idx
    linkageType: ''
    returnType: bool
    signature: "bool event_filter_remove_queries_with_context(struct event_filter
      *filter,\n\t\t\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_merge_with_context_internal
      Src: /src/dovecot/src/lib/event-filter.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dest
    - src
    - op
    argTypes:
    - struct event_filter*
    - struct event_filter*
    - enum event_filter_merge_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 482
    functionDepth: 3
    functionLinenumber: 482
    functionLinenumberEnd: 487
    functionName: event_filter_merge
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 3
    functionsReached:
    - event_filter_merge_with_context_internal
    linkageType: ''
    returnType: void
    signature: "void event_filter_merge(struct event_filter *dest,\n\t\t\tconst struct
      event_filter *src,\n\t\t\tenum event_filter_merge_op op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_merge_with_context_internal
      Src: /src/dovecot/src/lib/event-filter.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dest
    - src
    - op
    - new_context
    argTypes:
    - struct event_filter*
    - struct event_filter*
    - enum event_filter_merge_op
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 495
    functionName: event_filter_merge_with_context
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - event_filter_merge_with_context_internal
    linkageType: ''
    returnType: void
    signature: "void event_filter_merge_with_context(struct event_filter *dest,\n\t\t\t\t
      \    const struct event_filter *src,\n\t\t\t\t     enum event_filter_merge_op
      op,\n\t\t\t\t     void *new_context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_escaped
      Src: /src/dovecot/src/lib/event-filter.c:501,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/event-filter.c:501,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - dest
    - src
    - wildcard
    argTypes:
    - string_t*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 497
    functionDepth: 2
    functionLinenumber: 497
    functionLinenumberEnd: 506
    functionName: event_filter_append_escaped
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - str_append_escaped
    - strlen
    - str_append
    linkageType: ''
    returnType: void
    signature: void event_filter_append_escaped(string_t *dest, const char *src, bool
      wildcard)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/event-filter.c:515,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/event-filter.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - op
    argTypes:
    - enum event_filter_node_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 529
    functionName: event_filter_export_query_expr_op
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: 'char *

      event_filter_export_query_expr_op(enum event_filter_node_op op)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:538,1
    - Dst: event_filter_export_query_expr
      Src: /src/dovecot/src/lib/event-filter.c:541,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:542,1
    - Dst: event_filter_export_query_expr
      Src: /src/dovecot/src/lib/event-filter.c:543,1
    - Dst: event_filter_export_query_expr
      Src: /src/dovecot/src/lib/event-filter.c:546,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:547,1
    - Dst: event_filter_export_query_expr
      Src: /src/dovecot/src/lib/event-filter.c:548,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:551,1
    - Dst: event_filter_export_query_expr
      Src: /src/dovecot/src/lib/event-filter.c:552,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/event-filter.c:559,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:561,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:565,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:566,1
    - Dst: event_filter_export_query_expr_op
      Src: /src/dovecot/src/lib/event-filter.c:566,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:567,1
    - Dst: event_filter_append_escaped
      Src: /src/dovecot/src/lib/event-filter.c:568,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:570,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:573,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:574,1
    - Dst: event_filter_export_query_expr_op
      Src: /src/dovecot/src/lib/event-filter.c:574,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:575,1
    - Dst: event_filter_append_escaped
      Src: /src/dovecot/src/lib/event-filter.c:576,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:577,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:580,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:581,1
    - Dst: event_filter_export_query_expr_op
      Src: /src/dovecot/src/lib/event-filter.c:581,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:583,1
    - Dst: event_filter_append_escaped
      Src: /src/dovecot/src/lib/event-filter.c:584,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:585,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:587,1
    - Dst: event_filter_category_from_log_type
      Src: /src/dovecot/src/lib/event-filter.c:587,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:592,1
    - Dst: event_filter_append_escaped
      Src: /src/dovecot/src/lib/event-filter.c:593,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:594,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:595,1
    - Dst: event_filter_export_query_expr_op
      Src: /src/dovecot/src/lib/event-filter.c:595,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:596,1
    - Dst: event_filter_append_escaped
      Src: /src/dovecot/src/lib/event-filter.c:597,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:598,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:600,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 65
    argCount: 3
    argNames:
    - query
    - node
    - dest
    argTypes:
    - struct event_filter_query_internal*
    - struct event_filter_node*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 531
    functionDepth: 3
    functionLinenumber: 531
    functionLinenumberEnd: 603
    functionName: event_filter_export_query_expr
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - event_filter_export_query_expr_op
    - str_append_c
    - event_filter_export_query_expr
    - i_unreached
    - event_filter_append_escaped
    - event_filter_category_from_log_type
    - str_append
    - wanted_field_value_str
    linkageType: ''
    returnType: void
    signature: "void event_filter_export_query_expr(const struct event_filter_query_internal
      *query,\n\t\t\t       struct event_filter_node *node,\n\t\t\t       string_t
      *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:609,1
    - Dst: event_filter_export_query_expr
      Src: /src/dovecot/src/lib/event-filter.c:610,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/event-filter.c:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - query
    - dest
    argTypes:
    - struct event_filter_query_internal*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 605
    functionDepth: 4
    functionLinenumber: 605
    functionLinenumberEnd: 612
    functionName: event_filter_export_query
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - event_filter_export_query_expr
    linkageType: ''
    returnType: void
    signature: "void event_filter_export_query(const struct event_filter_query_internal
      *query,\n\t\t\t  string_t *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/event-filter.c:619,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/event-filter.c:621,1
    - Dst: event_filter_export_query
      Src: /src/dovecot/src/lib/event-filter.c:623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - filter
    - dest
    argTypes:
    - struct event_filter*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 614
    functionDepth: 5
    functionLinenumber: 614
    functionLinenumberEnd: 625
    functionName: event_filter_export
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 3
    functionsReached:
    - str_append
    - event_filter_export_query
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void event_filter_export(struct event_filter *filter, string_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib/event-filter.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - filter
    - count_r
    argTypes:
    - struct event_filter*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 636
    functionName: event_filter_get_expr_for_testing
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - array_get
    linkageType: ''
    returnType: struct event_filter_node
    signature: "struct event_filter_node *\nevent_filter_get_expr_for_testing(struct
      event_filter *filter,\n\t\t\t\t  unsigned int *count_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - category
    - wanted_category
    argTypes:
    - struct event_category*
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 647
    functionName: event_category_match
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool event_category_match(const struct event_category *category,\n\t\t
      \    const struct event_category *wanted_category)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/event-filter.c:655,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/event-filter.c:656,1
    - Dst: event_category_match
      Src: /src/dovecot/src/lib/event-filter.c:657,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - event
    - wanted_category
    argTypes:
    - struct event*
    - struct event_category*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 662
    functionName: event_has_category_nonrecursive
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - event_category_match
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool event_has_category_nonrecursive(struct event *event,\n\t\t\t\tstruct
      event_category *wanted_category)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_has_category_nonrecursive
      Src: /src/dovecot/src/lib/event-filter.c:679,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib/event-filter.c:682,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/event-filter.c:685,1
    - Dst: event_has_category_nonrecursive
      Src: /src/dovecot/src/lib/event-filter.c:687,1
    - Dst: event_get_parent
      Src: /src/dovecot/src/lib/event-filter.c:689,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - event
    - node
    - log_type
    argTypes:
    - struct event*
    - struct event_filter_node*
    - enum event_filter_log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 664
    functionDepth: 2
    functionLinenumber: 664
    functionLinenumberEnd: 692
    functionName: event_has_category
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - event_has_category_nonrecursive
    - event_get_global
    - event_get_parent
    linkageType: ''
    returnType: bool
    signature: "bool event_has_category(struct event *event, struct event_filter_node
      *node,\n\t\t   enum event_filter_log_type log_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match_escaped
      Src: /src/dovecot/src/lib/event-filter.c:699,1
    - Dst: wildcard_match_escaped_icase
      Src: /src/dovecot/src/lib/event-filter.c:701,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/event-filter.c:704,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/event-filter.c:706,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - value
    - wanted_value
    - flags
    argTypes:
    - char*
    - char*
    - enum cmp_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 694
    functionDepth: 3
    functionLinenumber: 694
    functionLinenumberEnd: 708
    functionName: cmp_str
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - wildcard_match_escaped_icase
    - wildcard_match_escaped
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool cmp_str(const char *value, const char *wanted_value, enum cmp_flags
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmp_str
      Src: /src/dovecot/src/lib/event-filter.c:714,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - value
    - wanted_field
    - flags
    argTypes:
    - char*
    - struct event_field*
    - enum cmp_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 710
    functionDepth: 4
    functionLinenumber: 710
    functionLinenumberEnd: 715
    functionName: cmp_value
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - cmp_str
    - wanted_field_value_str
    linkageType: ''
    returnType: bool
    signature: "bool cmp_value(const char *value, const struct event_field *wanted_field,\n\t
      \ enum cmp_flags flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_find_field_nonrecursive
      Src: /src/dovecot/src/lib/event-filter.c:728,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/event-filter.c:730,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/event-filter.c:731,1
    - Dst: cmp_str
      Src: /src/dovecot/src/lib/event-filter.c:733,1
    - Dst: event_match_strlist_recursive
      Src: /src/dovecot/src/lib/event-filter.c:737,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - event
    - wanted_key
    - wanted_value
    - cmp_flags
    - seen
    argTypes:
    - struct event*
    - char*
    - char*
    - enum cmp_flags
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 717
    functionDepth: 4
    functionLinenumber: 717
    functionLinenumberEnd: 739
    functionName: event_match_strlist_recursive
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - cmp_str
    - event_match_strlist_recursive
    - i_assert
    - event_find_field_nonrecursive
    linkageType: ''
    returnType: bool
    signature: "bool event_match_strlist_recursive(struct event *event,\n\t\t\t      const
      char *wanted_key, const char *wanted_value,\n\t\t\t      enum cmp_flags cmp_flags,
      bool *seen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:745,1
    - Dst: event_match_strlist_recursive
      Src: /src/dovecot/src/lib/event-filter.c:748,1
    - Dst: event_match_strlist_recursive
      Src: /src/dovecot/src/lib/event-filter.c:751,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/event-filter.c:751,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - event
    - wanted_field
    - cmp_flags
    argTypes:
    - struct event*
    - struct event_field*
    - enum cmp_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 741
    functionDepth: 5
    functionLinenumber: 741
    functionLinenumberEnd: 761
    functionName: event_match_strlist
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - wanted_field_value_str
    - event_get_global
    - event_match_strlist_recursive
    linkageType: ''
    returnType: bool
    signature: "bool event_match_strlist(struct event *event, const struct event_field
      *wanted_field,\n\t\t    enum cmp_flags cmp_flags)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/event-filter.c:781,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/event-filter.c:783,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - op
    - a
    - b
    argTypes:
    - enum event_filter_node_op
    - intmax_t
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 784
    functionName: event_filter_handle_numeric_operation
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool event_filter_handle_numeric_operation(enum event_filter_node_op
      op,\n\t\t\t\t      intmax_t a, intmax_t b)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/event-filter.c:796,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/event-filter.c:798,1
    - Dst: event_get_last_duration
      Src: /src/dovecot/src/lib/event-filter.c:801,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/lib/event-filter.c:806,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/event-filter.c:827,1
    - Dst: event_filter_export_query_expr_op
      Src: /src/dovecot/src/lib/event-filter.c:831,1
    - Dst: if
      Src: /src/dovecot/src/lib/event-filter.c:844,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/event-filter.c:845,1
    - Dst: struct event_filter*::cmp_key_func
      Src: /src/dovecot/src/lib/event-filter.c:846,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:847,1
    - Dst: cmp_value
      Src: /src/dovecot/src/lib/event-filter.c:849,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/event-filter.c:858,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:865,1
    - Dst: event_filter_handle_numeric_operation
      Src: /src/dovecot/src/lib/event-filter.c:873,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/event-filter.c:880,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:884,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/event-filter.c:896,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:902,1
    - Dst: event_filter_export_query_expr_op
      Src: /src/dovecot/src/lib/event-filter.c:903,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib/event-filter.c:911,1
    - Dst: wildcard_match_escaped_icase
      Src: /src/dovecot/src/lib/event-filter.c:913,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:914,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/event-filter.c:922,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/event-filter.c:937,1
    - Dst: event_filter_export_query_expr_op
      Src: /src/dovecot/src/lib/event-filter.c:941,1
    - Dst: net_is_in_network
      Src: /src/dovecot/src/lib/event-filter.c:949,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/event-filter.c:961,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:965,1
    - Dst: wildcard_match_escaped_icase
      Src: /src/dovecot/src/lib/event-filter.c:973,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/event-filter.c:973,1
    - Dst: wanted_field_value_str
      Src: /src/dovecot/src/lib/event-filter.c:974,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 89
    argCount: 6
    argNames:
    - filter
    - event
    - node
    - use_strcmp
    - source_filename
    - source_linenum
    argTypes:
    - struct event_filter*
    - struct event*
    - struct event_filter_node*
    - bool
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 786
    functionDepth: 5
    functionLinenumber: 786
    functionLinenumberEnd: 975
    functionName: event_match_field
    functionSourceFile: /src/dovecot/src/lib/event-filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_zero
    - event_filter_export_query_expr_op
    - i_warning
    - if
    - event_filter_handle_numeric_operation
    - cmp_value
    - event_find_field_recursive
    - event_get_last_duration
    - net_ip2addr
    - struct event_filter*::cmp_key_func
    - wildcard_match_escaped_icase
    - wanted_field_value_str
    - i_snprintf
    - net_is_in_network
    linkageType: ''
    returnType: bool
    signature: "bool event_match_field(struct event_filter *filter, struct event *event,\n\t\t
      \ struct event_filter_node *node, bool use_strcmp,\n\t\t  const char *source_filename,
      unsigned int source_linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/iostream-temp.c:47,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/iostream-temp.c:49,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/iostream-temp.c:50,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/iostream-temp.c:51,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream-temp.c:52,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream-temp.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 54
    functionName: o_stream_temp_close
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - buffer_free
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: "void o_stream_temp_close(struct iostream_private *stream,\n\t\t    bool
      close_parent ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/iostream-temp.c:64,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/iostream-temp.c:65,1
    - Dst: safe_mkstemp_hostpid
      Src: /src/dovecot/src/lib/iostream-temp.c:66,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-temp.c:68,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/iostream-temp.c:68,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/iostream-temp.c:71,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/iostream-temp.c:71,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/iostream-temp.c:72,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/iostream-temp.c:75,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-temp.c:76,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/iostream-temp.c:76,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/iostream-temp.c:77,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/iostream-temp.c:85,1
    - Dst: buffer_create_dynamic_max
      Src: /src/dovecot/src/lib/iostream-temp.c:86,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/iostream-temp.c:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - tstream
    argTypes:
    - struct temp_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 90
    functionName: o_stream_temp_move_to_fd
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_error
    - i_close_fd
    - write_full
    - I_MIN
    - i_unlink
    - safe_mkstemp_hostpid
    - str_append
    - buffer_free
    - buffer_create_dynamic_max
    linkageType: ''
    returnType: int
    signature: int o_stream_temp_move_to_fd(struct temp_ostream *tstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/iostream-temp.c:95,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:100,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/iostream-temp.c:101,1
    - Dst: pread
      Src: /src/dovecot/src/lib/iostream-temp.c:102,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/iostream-temp.c:103,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-temp.c:108,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib/iostream-temp.c:109,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/iostream-temp.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - output
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 92
    functionDepth: 5
    functionLinenumber: 92
    functionLinenumberEnd: 117
    functionName: o_stream_temp_move_to_memory
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - o_stream_get_name
    - container_of
    - i_error
    - i_close_fd
    - buffer_create_dynamic
    - pread
    - i_assert
    linkageType: ''
    returnType: int
    signature: int o_stream_temp_move_to_memory(struct ostream *output)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:124,1
    - Dst: buffer_get_writable_size
      Src: /src/dovecot/src/lib/iostream-temp.c:131,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/iostream-temp.c:133,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/iostream-temp.c:145,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/iostream-temp.c:150,1
    - Dst: struct temp_ostream*::writev
      Src: /src/dovecot/src/lib/iostream-temp.c:156,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/iostream-temp.c:158,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:160,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:168,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/iostream-temp.c:171,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/iostream-temp.c:179,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib/iostream-temp.c:180,1
    - Dst: o_stream_temp_move_to_memory
      Src: /src/dovecot/src/lib/iostream-temp.c:182,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/iostream-temp.c:185,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:189,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/iostream-temp.c:190,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/iostream-temp.c:192,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 49
    argCount: 4
    argNames:
    - tstream
    - iov
    - iov_count
    - flush
    argTypes:
    - struct temp_ostream*
    - struct const_iovec*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 119
    functionDepth: 6
    functionLinenumber: 119
    functionLinenumberEnd: 195
    functionName: o_stream_temp_fd_buf_sendv
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - buffer_append
    - o_stream_get_name
    - i_error
    - I_MIN
    - buffer_set_used_size
    - buffer_get_writable_size
    - struct temp_ostream*::writev
    - o_stream_temp_move_to_memory
    - buffer_free
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_temp_fd_buf_sendv(struct temp_ostream *tstream,\n\t\t\t
      \  const struct const_iovec *iov,\n\t\t\t   unsigned int iov_count, bool flush)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:201,1
    - Dst: o_stream_temp_fd_buf_sendv
      Src: /src/dovecot/src/lib/iostream-temp.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - tstream
    - iov
    - iov_count
    argTypes:
    - struct temp_ostream*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 197
    functionDepth: 7
    functionLinenumber: 197
    functionLinenumberEnd: 211
    functionName: o_stream_temp_fd_sendv
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - i_assert
    - o_stream_temp_fd_buf_sendv
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_temp_fd_sendv(struct temp_ostream *tstream,\n\t\t
      \      const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/iostream-temp.c:218,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/iostream-temp.c:224,1
    - Dst: o_stream_temp_dup_cancel
      Src: /src/dovecot/src/lib/iostream-temp.c:226,1
    - Dst: o_stream_temp_fd_sendv
      Src: /src/dovecot/src/lib/iostream-temp.c:231,1
    - Dst: o_stream_temp_move_to_fd
      Src: /src/dovecot/src/lib/iostream-temp.c:237,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:238,1
    - Dst: o_stream_temp_fd_sendv
      Src: /src/dovecot/src/lib/iostream-temp.c:239,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/iostream-temp.c:244,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 213
    functionDepth: 8
    functionLinenumber: 213
    functionLinenumberEnd: 249
    functionName: o_stream_temp_sendv
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - container_of
    - o_stream_temp_fd_sendv
    - ENUM_NEGATE
    - o_stream_temp_move_to_fd
    - o_stream_temp_dup_cancel
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_temp_sendv(struct ostream_private *stream,\n\t\t
      \   const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/iostream-temp.c:259,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/iostream-temp.c:262,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/iostream-temp.c:263,1
    - Dst: io_stream_copy
      Src: /src/dovecot/src/lib/iostream-temp.c:265,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/iostream-temp.c:273,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/iostream-temp.c:276,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/iostream-temp.c:278,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/iostream-temp.c:279,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/iostream-temp.c:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - tstream
    - res_r
    argTypes:
    - struct temp_ostream*
    - enum ostream_send_istream_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 251
    functionDepth: 4
    functionLinenumber: 251
    functionLinenumberEnd: 286
    functionName: o_stream_temp_dup_cancel
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 1
    functionsReached:
    - io_stream_set_error
    - i_unreached
    - i_stream_create_limit
    - i_stream_get_error
    - i_stream_seek
    - io_stream_copy
    - i_stream_unref
    - i_stream_get_name
    - i_stream_destroy
    linkageType: ''
    returnType: bool
    signature: "bool o_stream_temp_dup_cancel(struct temp_ostream *tstream,\n\t\t\t\t
      \    enum ostream_send_istream_result *res_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/iostream-temp.c:291,1
    - Dst: o_stream_temp_fd_buf_sendv
      Src: /src/dovecot/src/lib/iostream-temp.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 288
    functionDepth: 7
    functionLinenumber: 288
    functionLinenumberEnd: 298
    functionName: o_stream_temp_flush
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_temp_fd_buf_sendv
    linkageType: ''
    returnType: int
    signature: int o_stream_temp_flush(struct ostream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/iostream-temp.c:307,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib/iostream-temp.c:310,1
    - Dst: o_stream_temp_dup_cancel
      Src: /src/dovecot/src/lib/iostream-temp.c:312,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:315,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/iostream-temp.c:320,1
    - Dst: o_stream_temp_dup_cancel
      Src: /src/dovecot/src/lib/iostream-temp.c:325,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/iostream-temp.c:327,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - outstream
    - instream
    - res_r
    argTypes:
    - struct temp_ostream*
    - struct istream*
    - enum ostream_send_istream_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 300
    functionDepth: 5
    functionLinenumber: 300
    functionLinenumberEnd: 336
    functionName: o_stream_temp_dup_istream
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - i_stream_get_fd
    - i_stream_ref
    - i_stream_get_size
    - o_stream_temp_dup_cancel
    - i_stream_seek
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool o_stream_temp_dup_istream(struct temp_ostream *outstream,\n\t\t\t
      \ struct istream *instream,\n\t\t\t  enum ostream_send_istream_result *res_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/iostream-temp.c:343,1
    - Dst: o_stream_temp_dup_istream
      Src: /src/dovecot/src/lib/iostream-temp.c:347,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/iostream-temp.c:349,1
    - Dst: io_stream_copy
      Src: /src/dovecot/src/lib/iostream-temp.c:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - _outstream
    - instream
    argTypes:
    - struct ostream_private*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 338
    functionDepth: 6
    functionLinenumber: 338
    functionLinenumberEnd: 352
    functionName: o_stream_temp_send_istream
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - ENUM_NEGATE
    - container_of
    - io_stream_copy
    - o_stream_temp_dup_istream
    linkageType: ''
    returnType: enum ostream_send_istream_result
    signature: "enum ostream_send_istream_result o_stream_temp_send_istream(struct
      ostream_private *_outstream,\n\t\t\t   struct istream *instream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writev
      Src: /src/dovecot/src/lib/iostream-temp.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fd
    - iov
    - iov_count
    argTypes:
    - int
    - struct iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 358
    functionName: iostream_temp_writev
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - writev
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t iostream_temp_writev(int fd, const struct iovec *iov,\n\t\t\t\t
      \   unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/iostream-temp.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - output
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 367
    functionName: o_stream_temp_set_writev
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: void
    signature: "void o_stream_temp_set_writev(struct ostream *output,\n\t\t\t      ssize_t
      (*func)(int fd, const struct iovec *iov,\n\t\t\t\t\t      unsigned int iov_count))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/lib/iostream-temp.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - temp_path_prefix
    - flags
    argTypes:
    - char*
    - enum iostream_temp_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 373
    functionName: iostream_temp_create
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 3
    functionsReached:
    - iostream_temp_create_named
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *iostream_temp_create(const char *temp_path_prefix,\n\t\t\t\t
      \    enum iostream_temp_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/iostream-temp.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - temp_path_prefix
    - flags
    - name
    argTypes:
    - char*
    - enum iostream_temp_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 381
    functionName: iostream_temp_create_named
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 6
    functionsReached:
    - iostream_temp_create_sized
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *iostream_temp_create_named(const char *temp_path_prefix,\n\t\t\t\t\t
      \  enum iostream_temp_flags flags,\n\t\t\t\t\t   const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/iostream-temp.c:391,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/iostream-temp.c:397,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/iostream-temp.c:400,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/iostream-temp.c:404,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/iostream-temp.c:405,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/iostream-temp.c:407,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-temp.c:407,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/iostream-temp.c:410,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-temp.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 4
    argNames:
    - temp_path_prefix
    - flags
    - name
    - max_mem_size
    argTypes:
    - char*
    - enum iostream_temp_flags
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 414
    functionName: iostream_temp_create_sized
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 1
    functionsReached:
    - o_stream_set_name
    - buffer_create_dynamic
    - t_strdup_printf
    - i_strdup
    - o_stream_create
    - i_new
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *iostream_temp_create_sized(const char *temp_path_prefix,\n\t\t\t\t\t
      \  enum iostream_temp_flags flags,\n\t\t\t\t\t   const char *name,\n\t\t\t\t\t
      \  size_t max_mem_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/iostream-temp.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 419
    functionName: iostream_temp_buf_destroyed
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 0
    functionsReached:
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void iostream_temp_buf_destroyed(buffer_t *buf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/iostream-temp.c:425,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-temp.c:435,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/iostream-temp.c:437,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-temp.c:439,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib/iostream-temp.c:440,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/iostream-temp.c:441,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/iostream-temp.c:442,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-temp.c:442,1
    - Dst: i_stream_get_absolute_offset
      Src: /src/dovecot/src/lib/iostream-temp.c:445,1
    - Dst: dup
      Src: /src/dovecot/src/lib/iostream-temp.c:450,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/iostream-temp.c:450,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib/iostream-temp.c:452,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/iostream-temp.c:454,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/iostream-temp.c:455,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/iostream-temp.c:456,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/iostream-temp.c:457,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/iostream-temp.c:459,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-temp.c:459,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/iostream-temp.c:461,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/iostream-temp.c:462,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/iostream-temp.c:468,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/iostream-temp.c:469,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-temp.c:469,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/iostream-temp.c:473,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/iostream-temp.c:475,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iostream-temp.c:475,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib/iostream-temp.c:478,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/iostream-temp.c:482,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 2
    argNames:
    - output
    - max_buffer_size
    argTypes:
    - struct ostream**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 421
    functionDepth: 6
    functionLinenumber: 421
    functionLinenumberEnd: 484
    functionName: iostream_temp_finish
    functionSourceFile: /src/dovecot/src/lib/iostream-temp.c
    functionUses: 8
    functionsReached:
    - container_of
    - i_stream_get_absolute_offset
    - i_stream_get_fd
    - o_stream_get_error
    - i_stream_set_name
    - dup
    - i_stream_create_limit
    - t_strdup_printf
    - i_stream_create_from_data
    - o_stream_finish
    - i_stream_add_destroy_callback
    - i_stream_create_error_str
    - i_stream_seek
    - i_stream_create_fd_autoclose
    - i_stream_get_name
    - i_assert
    - o_stream_destroy
    - i_stream_unref
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *iostream_temp_finish(struct ostream **output,\n\t\t\t\t
      \    size_t max_buffer_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hexstr
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 6
    functionName: DEC2HEX
    functionSourceFile: /src/dovecot/src/lib/hex-dec.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEC2HEX(hexstr, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/seq-set-builder.c:17,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/seq-set-builder.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - str
    argTypes:
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 23
    functionName: seqset_builder_init
    functionSourceFile: /src/dovecot/src/lib/seq-set-builder.c
    functionUses: 4
    functionsReached:
    - i_new
    - str_len
    linkageType: ''
    returnType: struct seqset_builder
    signature: struct seqset_builder *seqset_builder_init(string_t *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/seq-set-builder.c:28,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/seq-set-builder.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - builder
    - seq
    argTypes:
    - struct seqset_builder*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 30
    functionName: seqset_builder_append_one
    functionSourceFile: /src/dovecot/src/lib/seq-set-builder.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_len
    linkageType: ''
    returnType: void
    signature: void seqset_builder_append_one(struct seqset_builder *builder, uint32_t
      seq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/seq-set-builder.c:38,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/seq-set-builder.c:40,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/seq-set-builder.c:43,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/seq-set-builder.c:44,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/seq-set-builder.c:45,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/seq-set-builder.c:45,1
    - Dst: seqset_builder_append_one
      Src: /src/dovecot/src/lib/seq-set-builder.c:48,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/seq-set-builder.c:50,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/seq-set-builder.c:51,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/seq-set-builder.c:52,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/seq-set-builder.c:54,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - builder
    - seq
    argTypes:
    - struct seqset_builder*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 32
    functionDepth: 3
    functionLinenumber: 32
    functionLinenumberEnd: 56
    functionName: seqset_builder_create_or_merge_range
    functionSourceFile: /src/dovecot/src/lib/seq-set-builder.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_data
    - str_len
    - i_unreached
    - str_truncate
    - i_assert
    - seqset_builder_append_one
    linkageType: ''
    returnType: void
    signature: "void seqset_builder_create_or_merge_range(struct seqset_builder *builder,\n\t\t\t\t
      \    uint32_t seq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seqset_builder_append_one
      Src: /src/dovecot/src/lib/seq-set-builder.c:62,1
    - Dst: seqset_builder_create_or_merge_range
      Src: /src/dovecot/src/lib/seq-set-builder.c:66,1
    - Dst: seqset_builder_append_one
      Src: /src/dovecot/src/lib/seq-set-builder.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - builder
    - seq
    argTypes:
    - struct seqset_builder*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 72
    functionName: seqset_builder_add
    functionSourceFile: /src/dovecot/src/lib/seq-set-builder.c
    functionUses: 3
    functionsReached:
    - seqset_builder_create_or_merge_range
    - seqset_builder_append_one
    linkageType: ''
    returnType: void
    signature: void seqset_builder_add(struct seqset_builder *builder, uint32_t seq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/seq-set-builder.c:82,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/seq-set-builder.c:87,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/seq-set-builder.c:95,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/seq-set-builder.c:99,1
    - Dst: dec2str_buf
      Src: /src/dovecot/src/lib/seq-set-builder.c:99,1
    - Dst: seqset_builder_add
      Src: /src/dovecot/src/lib/seq-set-builder.c:103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - builder
    - max_len
    - seq
    argTypes:
    - struct seqset_builder*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 105
    functionName: seqset_builder_try_add
    functionSourceFile: /src/dovecot/src/lib/seq-set-builder.c
    functionUses: 3
    functionsReached:
    - seqset_builder_add
    - strlen
    - dec2str_buf
    - str_len
    linkageType: ''
    returnType: bool
    signature: "bool seqset_builder_try_add(struct seqset_builder *builder, size_t
      max_len,\n\t\t\t    uint32_t seq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/seq-set-builder.c:111,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/seq-set-builder.c:111,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/seq-set-builder.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - builder
    argTypes:
    - struct seqset_builder**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 113
    functionName: seqset_builder_deinit
    functionSourceFile: /src/dovecot/src/lib/seq-set-builder.c
    functionUses: 5
    functionsReached:
    - i_free
    - str_truncate
    - str_len
    linkageType: ''
    returnType: void
    signature: void seqset_builder_deinit(struct seqset_builder **builder)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:42,1
    - Dst: uni_utf8_to_uppercase
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:52,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:52,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:54,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:55,1
    - Dst: uni_utf8_to_lowercase
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:57,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:57,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:59,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:60,1
    - Dst: uni_utf8_to_casefold
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:62,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:62,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:64,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:65,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unicode-casemap.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 38
    functionDepth: 6
    functionLinenumber: 38
    functionLinenumberEnd: 69
    functionName: test_unicode_casemap
    functionSourceFile: /src/dovecot/src/lib/test-unicode-casemap.c
    functionUses: 0
    functionsReached:
    - uni_utf8_to_casefold
    - test_assert_idx
    - strlen
    - uni_utf8_to_uppercase
    - test_end
    - uni_utf8_to_lowercase
    - test_assert_strcmp_idx
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unicode_casemap(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_init_with_size
      Src: /src/dovecot/src/lib/stats-dist.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: stats_dist_init
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 5
    functionsReached:
    - stats_dist_init_with_size
    linkageType: ''
    returnType: struct stats_dist
    signature: struct stats_dist *stats_dist_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/stats-dist.c:28,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib/stats-dist.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sample_count
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 35
    functionName: stats_dist_init_with_size
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 1
    functionsReached:
    - i_malloc
    - i_assert
    linkageType: ''
    returnType: struct stats_dist
    signature: struct stats_dist *stats_dist_init_with_size(unsigned int sample_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/stats-dist.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _stats
    argTypes:
    - struct stats_dist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: stats_dist_deinit
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 5
    functionsReached:
    - i_free_and_null
    linkageType: ''
    returnType: void
    signature: void stats_dist_deinit(struct stats_dist **_stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/stats-dist.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: stats_dist_reset
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 3
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void stats_dist_reset(struct stats_dist *stats)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/stats-dist.c:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - stats
    - value
    argTypes:
    - struct stats_dist*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 68
    functionName: stats_dist_add
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 5
    functionsReached:
    - i_rand_limit
    linkageType: ''
    returnType: void
    signature: void stats_dist_add(struct stats_dist *stats, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: stats_dist_get_count
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int stats_dist_get_count(const struct stats_dist *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: stats_dist_get_sum
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t stats_dist_get_sum(const struct stats_dist *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: stats_dist_get_min
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t stats_dist_get_min(const struct stats_dist *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: stats_dist_get_max
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t stats_dist_get_max(const struct stats_dist *stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: stats_dist_get_avg
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double stats_dist_get_avg(const struct stats_dist *stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_qsort
      Src: /src/dovecot/src/lib/stats-dist.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 109
    functionName: stats_dist_ensure_sorted
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 0
    functionsReached:
    - i_qsort
    linkageType: ''
    returnType: void
    signature: void stats_dist_ensure_sorted(struct stats_dist *stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_ensure_sorted
      Src: /src/dovecot/src/lib/stats-dist.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 122
    functionName: stats_dist_get_median
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 3
    functionsReached:
    - stats_dist_ensure_sorted
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t stats_dist_get_median(struct stats_dist *stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_get_avg
      Src: /src/dovecot/src/lib/stats-dist.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 140
    functionName: stats_dist_get_variance
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 3
    functionsReached:
    - stats_dist_get_avg
    linkageType: ''
    returnType: double
    signature: double stats_dist_get_variance(const struct stats_dist *stats)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - range
    - fraction
    argTypes:
    - unsigned int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 162
    functionName: stats_dist_get_index
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int stats_dist_get_index(unsigned int range, double fraction)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_ensure_sorted
      Src: /src/dovecot/src/lib/stats-dist.c:168,1
    - Dst: stats_dist_get_index
      Src: /src/dovecot/src/lib/stats-dist.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stats
    - fraction
    argTypes:
    - struct stats_dist*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 174
    functionName: stats_dist_get_percentile
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 1
    functionsReached:
    - stats_dist_ensure_sorted
    - stats_dist_get_index
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t stats_dist_get_percentile(struct stats_dist *stats, double
      fraction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stats
    - count_r
    argTypes:
    - struct stats_dist*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 183
    functionName: stats_dist_get_samples
    functionSourceFile: /src/dovecot/src/lib/stats-dist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: "uint64_t *stats_dist_get_samples(const struct stats_dist *stats,\n\t\t\t\t
      \      unsigned int *count_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/dovecot/src/lib/fd-util.c:16,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/fd-util.c:18,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/fd-util.c:21,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/fd-util.c:22,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - set
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 23
    functionName: fd_close_on_exec
    functionSourceFile: /src/dovecot/src/lib/fd-util.c
    functionUses: 10
    functionsReached:
    - i_fatal
    - fcntl
    linkageType: ''
    returnType: void
    signature: void fd_close_on_exec(int fd, bool set)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/dovecot/src/lib/fd-util.c:34,1
    - Dst: net_getsockname
      Src: /src/dovecot/src/lib/fd-util.c:39,1
    - Dst: getsockname
      Src: /src/dovecot/src/lib/fd-util.c:45,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/fd-util.c:49,1
    - Dst: net_getpeername
      Src: /src/dovecot/src/lib/fd-util.c:55,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/fd-util.c:56,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/fd-util.c:59,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/fd-util.c:60,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/fd-util.c:61,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/fd-util.c:66,1
    - Dst: t_readlink
      Src: /src/dovecot/src/lib/fd-util.c:69,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/fd-util.c:69,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/fd-util.c:71,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/fd-util.c:82,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/fd-util.c:83,1
    - Dst: major
      Src: /src/dovecot/src/lib/fd-util.c:83,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/fd-util.c:84,1
    - Dst: minor
      Src: /src/dovecot/src/lib/fd-util.c:84,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/fd-util.c:84,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/fd-util.c:88,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/fd-util.c:89,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/fd-util.c:90,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/fd-util.c:96,1
    - Dst: strerror
      Src: /src/dovecot/src/lib/fd-util.c:97,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/fd-util.c:102,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 39
    argCount: 2
    argNames:
    - first_fd
    - last_fd
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 103
    functionName: fd_debug_verify_leaks
    functionSourceFile: /src/dovecot/src/lib/fd-util.c
    functionUses: 1
    functionsReached:
    - i_zero
    - dec2str
    - net_getsockname
    - i_error
    - net_getpeername
    - strerror
    - t_strdup_printf
    - fcntl
    - i_fatal
    - fstat
    - net_ip2addr
    - major
    - getsockname
    - minor
    - t_readlink
    linkageType: ''
    returnType: void
    signature: void fd_debug_verify_leaks(int first_fd, int last_fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/fd-util.c:109,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/fd-util.c:111,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/fd-util.c:113,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/fd-util.c:118,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/fd-util.c:120,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/fd-util.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - fd
    - nonblock
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 122
    functionName: fd_set_nonblock
    functionSourceFile: /src/dovecot/src/lib/fd-util.c
    functionUses: 25
    functionsReached:
    - i_fatal
    - i_assert
    - fcntl
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: void fd_set_nonblock(int fd, bool nonblock)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/fd-util.c:131,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/fd-util.c:135,1
    - Dst: dup2
      Src: /src/dovecot/src/lib/fd-util.c:136,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/fd-util.c:139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - fd_in
    - fd_out
    argTypes:
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 141
    functionName: fd_close_maybe_stdio
    functionSourceFile: /src/dovecot/src/lib/fd-util.c
    functionUses: 3
    functionsReached:
    - i_close_fd
    - i_fatal
    - dup2
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void fd_close_maybe_stdio(int *fd_in, int *fd_out)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/fd-util.c:152,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/fd-util.c:153,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/fd-util.c:164,1
    - Dst: close
      Src: /src/dovecot/src/lib/fd-util.c:164,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/fd-util.c:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 6
    argNames:
    - fd
    - path
    - arg
    - func
    - file
    - line
    argTypes:
    - int*
    - char*
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 173
    functionName: i_close_fd_path
    functionSourceFile: /src/dovecot/src/lib/fd-util.c
    functionUses: 12
    functionsReached:
    - i_panic
    - i_error
    - close
    - unlikely
    linkageType: ''
    returnType: void
    signature: "void i_close_fd_path(int *fd, const char *path, const char *arg,\n\t\t
      \    const char *func, const char *file, int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - int
    - struct iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 20
    functionName: test_writev_fail
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t test_writev_fail(int fd ATTR_UNUSED, const struct iovec *iov
      ATTR_UNUSED,\n\t\t unsigned int iov_count ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-iostream-temp.c:27,1
    - Dst: writev
      Src: /src/dovecot/src/lib/test-iostream-temp.c:43,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - fd
    - iov
    - iov_count
    argTypes:
    - int
    - struct iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 44
    functionName: test_writev_fail_at
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - writev
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t test_writev_fail_at(int fd, const struct iovec *iov,\n\t\t
      \   unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:48,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-iostream-temp.c:50,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-iostream-temp.c:52,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib/test-iostream-temp.c:53,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-iostream-temp.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - output
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 46
    functionDepth: 7
    functionLinenumber: 46
    functionLinenumberEnd: 56
    functionName: test_iostream_temp_finish
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - iostream_temp_finish
    - i_stream_get_data
    - t_strndup
    - i_stream_read
    - i_stream_destroy
    linkageType: ''
    returnType: char
    signature: char *test_iostream_temp_finish(struct ostream *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-temp.c:61,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:63,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:65,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:67,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:67,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-iostream-temp.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:71,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:71,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-iostream-temp.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:74,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:74,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-iostream-temp.c:75,1
    - Dst: test_iostream_temp_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:75,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-temp.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 57
    functionDepth: 8
    functionLinenumber: 57
    functionLinenumberEnd: 77
    functionName: test_iostream_temp_create_sized_memory
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - o_stream_get_fd
    - test_iostream_temp_finish
    - test_assert_strcmp
    - test_expect_error_string
    - test_end
    - o_stream_send
    - test_assert
    - iostream_temp_create_sized
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_temp_create_sized_memory(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-temp.c:83,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:84,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:85,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:87,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:89,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:90,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:92,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:92,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-iostream-temp.c:93,1
    - Dst: test_iostream_temp_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:93,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-temp.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - tmp_prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 79
    functionDepth: 8
    functionLinenumber: 79
    functionLinenumberEnd: 95
    functionName: test_iostream_temp_create_sized_disk
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - o_stream_get_fd
    - test_iostream_temp_finish
    - test_assert_strcmp
    - test_end
    - o_stream_send
    - test_assert
    - iostream_temp_create_sized
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_temp_create_sized_disk(const char *tmp_prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-temp.c:101,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:103,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:104,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:105,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:106,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:108,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:109,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:109,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-iostream-temp.c:110,1
    - Dst: test_iostream_temp_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:110,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-temp.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - tmp_prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 97
    functionDepth: 8
    functionLinenumber: 97
    functionLinenumberEnd: 112
    functionName: test_iostream_temp_create_sized_disk_mixed
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - o_stream_get_fd
    - test_iostream_temp_finish
    - test_assert_strcmp
    - test_end
    - o_stream_send
    - test_assert
    - iostream_temp_create_sized
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_temp_create_sized_disk_mixed(const char *tmp_prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-temp.c:118,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:123,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:123,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:124,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:125,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:125,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:126,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:127,1
    - Dst: o_stream_temp_set_writev
      Src: /src/dovecot/src/lib/test-iostream-temp.c:129,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-iostream-temp.c:131,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-temp.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:135,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:135,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-iostream-temp.c:136,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:138,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:138,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:141,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:141,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-iostream-temp.c:142,1
    - Dst: test_iostream_temp_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:142,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-temp.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - tmp_prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 114
    functionDepth: 8
    functionLinenumber: 114
    functionLinenumberEnd: 145
    functionName: test_iostream_temp_create_write_error_middle
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - o_stream_temp_set_writev
    - o_stream_get_fd
    - test_iostream_temp_finish
    - t_strdup_printf
    - test_assert_strcmp
    - test_expect_error_string
    - test_end
    - o_stream_send
    - test_assert
    - iostream_temp_create_sized
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_temp_create_write_error_middle(const char *tmp_prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-temp.c:151,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:155,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:155,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:156,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:156,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:157,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:158,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:159,1
    - Dst: o_stream_temp_set_writev
      Src: /src/dovecot/src/lib/test-iostream-temp.c:161,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-iostream-temp.c:163,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-temp.c:163,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-iostream-temp.c:167,1
    - Dst: test_iostream_temp_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:167,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-iostream-temp.c:168,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-temp.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - tmp_prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 147
    functionDepth: 8
    functionLinenumber: 147
    functionLinenumberEnd: 171
    functionName: test_iostream_temp_create_write_error_finish
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - o_stream_temp_set_writev
    - o_stream_get_fd
    - test_iostream_temp_finish
    - t_strdup_printf
    - test_assert_strcmp
    - test_expect_error_string
    - test_end
    - o_stream_send
    - test_assert
    - iostream_temp_create_sized
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_temp_create_write_error_finish(const char *tmp_prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-temp.c:177,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:180,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:181,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:181,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:182,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:182,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:183,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:183,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:184,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:184,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:185,1
    - Dst: o_stream_temp_set_writev
      Src: /src/dovecot/src/lib/test-iostream-temp.c:192,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-iostream-temp.c:194,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iostream-temp.c:194,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:198,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/test-iostream-temp.c:198,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-iostream-temp.c:199,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:201,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/test-iostream-temp.c:201,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:202,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-iostream-temp.c:203,1
    - Dst: test_iostream_temp_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:203,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-temp.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - tmp_prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 173
    functionDepth: 8
    functionLinenumber: 173
    functionLinenumberEnd: 207
    functionName: test_iostream_temp_create_write_error_mixed
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - test_expect_no_more_errors
    - test_assert_idx
    - o_stream_temp_set_writev
    - o_stream_get_fd
    - o_stream_sendv
    - test_iostream_temp_finish
    - t_strdup_printf
    - test_expect_error_string
    - test_end
    - o_stream_send
    - test_assert_strcmp_idx
    - iostream_temp_create_sized
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_temp_create_write_error_mixed(const char *tmp_prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iostream-temp.c:216,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-iostream-temp.c:218,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-iostream-temp.c:219,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-iostream-temp.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:222,1
    - Dst: write
      Src: /src/dovecot/src/lib/test-iostream-temp.c:222,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:223,1
    - Dst: lseek
      Src: /src/dovecot/src/lib/test-iostream-temp.c:223,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/test-iostream-temp.c:225,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:227,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:229,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-iostream-temp.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:230,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:232,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-iostream-temp.c:232,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-iostream-temp.c:233,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-iostream-temp.c:236,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:239,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:239,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:240,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-iostream-temp.c:241,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:242,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-iostream-temp.c:242,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:243,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-iostream-temp.c:244,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-iostream-temp.c:245,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-iostream-temp.c:248,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:249,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:251,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-iostream-temp.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:252,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-iostream-temp.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:254,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/test-iostream-temp.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:255,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-iostream-temp.c:256,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-iostream-temp.c:257,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-iostream-temp.c:260,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/test-iostream-temp.c:261,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib/test-iostream-temp.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:264,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-iostream-temp.c:264,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:265,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib/test-iostream-temp.c:266,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:267,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib/test-iostream-temp.c:267,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-iostream-temp.c:268,1
    - Dst: test_expect_no_more_errors
      Src: /src/dovecot/src/lib/test-iostream-temp.c:269,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib/test-iostream-temp.c:270,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-iostream-temp.c:271,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/test-iostream-temp.c:273,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-iostream-temp.c:275,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iostream-temp.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 47
    argCount: 1
    argNames:
    - tmp_prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 209
    functionDepth: 7
    functionLinenumber: 209
    functionLinenumberEnd: 277
    functionName: test_iostream_temp_istream
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - write
    - i_unlink
    - i_stream_seek
    - test_assert
    - test_expect_no_more_errors
    - iostream_temp_finish
    - o_stream_send_istream
    - i_fatal
    - test_expect_error_string
    - test_end
    - iostream_temp_create_sized
    - i_stream_destroy
    - open
    - i_stream_create_fd_autoclose
    - i_stream_read
    - o_stream_destroy
    - lseek
    - i_stream_create_limit
    - o_stream_send
    - i_stream_unref
    - t_strconcat
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iostream_temp_istream(const char *tmp_prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-iostream-temp.c:281,1
    - Dst: test_iostream_temp_create_sized_memory
      Src: /src/dovecot/src/lib/test-iostream-temp.c:283,1
    - Dst: test_iostream_temp_create_sized_disk
      Src: /src/dovecot/src/lib/test-iostream-temp.c:284,1
    - Dst: test_iostream_temp_create_sized_disk_mixed
      Src: /src/dovecot/src/lib/test-iostream-temp.c:285,1
    - Dst: test_iostream_temp_create_write_error_middle
      Src: /src/dovecot/src/lib/test-iostream-temp.c:286,1
    - Dst: test_iostream_temp_create_write_error_finish
      Src: /src/dovecot/src/lib/test-iostream-temp.c:287,1
    - Dst: test_iostream_temp_create_write_error_mixed
      Src: /src/dovecot/src/lib/test-iostream-temp.c:288,1
    - Dst: test_iostream_temp_istream
      Src: /src/dovecot/src/lib/test-iostream-temp.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 279
    functionDepth: 9
    functionLinenumber: 279
    functionLinenumberEnd: 290
    functionName: test_iostream_temp
    functionSourceFile: /src/dovecot/src/lib/test-iostream-temp.c
    functionUses: 0
    functionsReached:
    - test_iostream_temp_create_sized_disk_mixed
    - test_iostream_temp_create_write_error_finish
    - test_iostream_temp_create_write_error_mixed
    - test_iostream_temp_istream
    - test_iostream_temp_create_sized_disk
    - test_dir_prepend
    - test_iostream_temp_create_write_error_middle
    - test_iostream_temp_create_sized_memory
    linkageType: ''
    returnType: void
    signature: void test_iostream_temp(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/iostream-proxy.c:40,1
    - Dst: struct iostream_proxy*::callback
      Src: /src/dovecot/src/lib/iostream-proxy.c:42,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - proxy
    - side
    - pump_status
    argTypes:
    - struct iostream_proxy*
    - enum iostream_proxy_side
    - enum iostream_pump_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 43
    functionName: iostream_proxy_completion
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 0
    functionsReached:
    - struct iostream_proxy*::callback
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void iostream_proxy_completion(struct iostream_proxy *proxy,\n\t\t\t
      \ enum iostream_proxy_side side,\n\t\t\t  enum iostream_pump_status pump_status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_proxy_completion
      Src: /src/dovecot/src/lib/iostream-proxy.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - status
    - proxy
    argTypes:
    - enum iostream_pump_status
    - struct iostream_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: iostream_proxy_rtl_completion
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 0
    functionsReached:
    - iostream_proxy_completion
    linkageType: ''
    returnType: void
    signature: "void iostream_proxy_rtl_completion(enum iostream_pump_status status,\n\t\t\t\t
      \  struct iostream_proxy *proxy)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_proxy_completion
      Src: /src/dovecot/src/lib/iostream-proxy.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - status
    - proxy
    argTypes:
    - enum iostream_pump_status
    - struct iostream_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: iostream_proxy_ltr_completion
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 0
    functionsReached:
    - iostream_proxy_completion
    linkageType: ''
    returnType: void
    signature: "void iostream_proxy_ltr_completion(enum iostream_pump_status status,\n\t\t\t\t
      \  struct iostream_proxy *proxy)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:63,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/iostream-proxy.c:69,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib/iostream-proxy.c:71,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib/iostream-proxy.c:72,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib/iostream-proxy.c:74,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib/iostream-proxy.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - left_input
    - left_output
    - right_input
    - right_output
    argTypes:
    - struct istream*
    - struct ostream*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 80
    functionName: iostream_proxy_create
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 3
    functionsReached:
    - iostream_pump_set_completion_callback
    - i_assert
    - i_new
    - iostream_pump_create
    linkageType: ''
    returnType: struct iostream_proxy
    signature: "struct iostream_proxy *\niostream_proxy_create(struct istream *left_input,
      struct ostream *left_output,\n\t\t      struct istream *right_input, struct
      ostream *right_output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:84,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:85,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib/iostream-proxy.c:87,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib/iostream-proxy.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct iostream_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 89
    functionName: iostream_proxy_start
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 3
    functionsReached:
    - iostream_pump_start
    - i_assert
    linkageType: ''
    returnType: void
    signature: void iostream_proxy_start(struct iostream_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - proxy
    - callback
    - context
    argTypes:
    - struct iostream_proxy*
    - iostream_proxy_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: iostream_proxy_set_completion_callback
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void iostream_proxy_set_completion_callback(struct iostream_proxy
      *proxy,\n\t\t\t\t\t    iostream_proxy_callback_t *callback,\n\t\t\t\t\t    void
      *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:103,1
    - Dst: iostream_pump_get_input
      Src: /src/dovecot/src/lib/iostream-proxy.c:106,1
    - Dst: iostream_pump_get_input
      Src: /src/dovecot/src/lib/iostream-proxy.c:107,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/iostream-proxy.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - proxy
    - side
    argTypes:
    - struct iostream_proxy*
    - enum iostream_proxy_side
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 110
    functionName: iostream_proxy_get_istream
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 0
    functionsReached:
    - i_assert
    - iostream_pump_get_input
    - i_unreached
    linkageType: ''
    returnType: struct istream
    signature: struct istream *iostream_proxy_get_istream(struct iostream_proxy *proxy,
      enum iostream_proxy_side side)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:114,1
    - Dst: iostream_pump_get_output
      Src: /src/dovecot/src/lib/iostream-proxy.c:117,1
    - Dst: iostream_pump_get_output
      Src: /src/dovecot/src/lib/iostream-proxy.c:118,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/iostream-proxy.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - proxy
    - side
    argTypes:
    - struct iostream_proxy*
    - enum iostream_proxy_side
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: iostream_proxy_get_ostream
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 0
    functionsReached:
    - iostream_pump_get_output
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *iostream_proxy_get_ostream(struct iostream_proxy *proxy,
      enum iostream_proxy_side side)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct iostream_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: iostream_proxy_ref
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void iostream_proxy_ref(struct iostream_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:139,1
    - Dst: iostream_pump_unref
      Src: /src/dovecot/src/lib/iostream-proxy.c:143,1
    - Dst: iostream_pump_unref
      Src: /src/dovecot/src/lib/iostream-proxy.c:144,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/iostream-proxy.c:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - proxy_r
    argTypes:
    - struct iostream_proxy**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 147
    functionName: iostream_proxy_unref
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 6
    functionsReached:
    - iostream_pump_unref
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void iostream_proxy_unref(struct iostream_proxy **proxy_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:151,1
    - Dst: iostream_pump_stop
      Src: /src/dovecot/src/lib/iostream-proxy.c:152,1
    - Dst: iostream_pump_stop
      Src: /src/dovecot/src/lib/iostream-proxy.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct iostream_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 154
    functionName: iostream_proxy_stop
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 0
    functionsReached:
    - iostream_pump_stop
    - i_assert
    linkageType: ''
    returnType: void
    signature: void iostream_proxy_stop(struct iostream_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: iostream_pump_is_waiting_output
      Src: /src/dovecot/src/lib/iostream-proxy.c:161,1
    - Dst: iostream_pump_is_waiting_output
      Src: /src/dovecot/src/lib/iostream-proxy.c:163,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/iostream-proxy.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - proxy
    - side
    argTypes:
    - struct iostream_proxy*
    - enum iostream_proxy_side
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 166
    functionName: iostream_proxy_is_waiting_output
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 1
    functionsReached:
    - iostream_pump_is_waiting_output
    - i_unreached
    linkageType: ''
    returnType: bool
    signature: "bool iostream_proxy_is_waiting_output(struct iostream_proxy *proxy,\n\t\t\t\t
      \     enum iostream_proxy_side side)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/iostream-proxy.c:170,1
    - Dst: iostream_pump_switch_ioloop
      Src: /src/dovecot/src/lib/iostream-proxy.c:171,1
    - Dst: iostream_pump_switch_ioloop
      Src: /src/dovecot/src/lib/iostream-proxy.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct iostream_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 168
    functionDepth: 3
    functionLinenumber: 168
    functionLinenumberEnd: 173
    functionName: iostream_proxy_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.c
    functionUses: 0
    functionsReached:
    - i_assert
    - iostream_pump_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void iostream_proxy_switch_ioloop(struct iostream_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:37,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/strfuncs.c:39,1
    - Dst: vsnprintf
      Src: /src/dovecot/src/lib/strfuncs.c:40,1
    - Dst: printf_format_fix_unsafe
      Src: /src/dovecot/src/lib/strfuncs.c:40,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/strfuncs.c:42,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - dest
    - max_chars
    - format
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 32
    functionDepth: 8
    functionLinenumber: 32
    functionLinenumberEnd: 46
    functionName: i_snprintf
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 13
    functionsReached:
    - va_start
    - vsnprintf
    - printf_format_fix_unsafe
    - i_assert
    - va_end
    linkageType: ''
    returnType: int
    signature: int i_snprintf(char *dest, size_t max_chars, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:56,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/strfuncs.c:57,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pool
    - str
    argTypes:
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 60
    functionName: p_strdup
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 470
    functionsReached:
    - memcpy
    - strlen
    - p_malloc
    linkageType: ''
    returnType: char
    signature: char *p_strdup(pool_t pool, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/strfuncs.c:66,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - pool
    - data
    - size
    argTypes:
    - pool_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: p_memdup
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 24
    functionsReached:
    - memcpy
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void *p_memdup(pool_t pool, const void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/strfuncs.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - str
    argTypes:
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: p_strdup_empty
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 10
    functionsReached:
    - p_strdup
    linkageType: ''
    returnType: char
    signature: char *p_strdup_empty(pool_t pool, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:84,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/strfuncs.c:88,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - pool
    - start
    - end
    argTypes:
    - pool_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: p_strdup_until
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 18
    functionsReached:
    - memcpy
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: char
    signature: char *p_strdup_until(pool_t pool, const void *start, const void *end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:100,1
    - Dst: memchr
      Src: /src/dovecot/src/lib/strfuncs.c:102,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/strfuncs.c:108,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - pool
    - str
    - max_chars
    argTypes:
    - pool_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 111
    functionName: p_strndup
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 23
    functionsReached:
    - memcpy
    - i_assert
    - memchr
    - p_malloc
    linkageType: ''
    returnType: char
    signature: char *p_strndup(pool_t pool, const void *str, size_t max_chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/strfuncs.c:118,1
    - Dst: p_strdup_vprintf
      Src: /src/dovecot/src/lib/strfuncs.c:119,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/strfuncs.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pool
    - format
    argTypes:
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 123
    functionName: p_strdup_printf
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 82
    functionsReached:
    - va_end
    - p_strdup_vprintf
    - va_start
    linkageType: ''
    returnType: char
    signature: char *p_strdup_printf(pool_t pool, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VA_COPY
      Src: /src/dovecot/src/lib/strfuncs.c:137,1
    - Dst: printf_format_fix_get_len
      Src: /src/dovecot/src/lib/strfuncs.c:142,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/strfuncs.c:145,1
    - Dst: vsnprintf
      Src: /src/dovecot/src/lib/strfuncs.c:146,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:147,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/strfuncs.c:153,1
    - Dst: vsnprintf
      Src: /src/dovecot/src/lib/strfuncs.c:154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:155,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:159,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/strfuncs.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - format
    - args
    - size_r
    argTypes:
    - char*
    - va_list
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 125
    functionDepth: 8
    functionLinenumber: 125
    functionLinenumberEnd: 163
    functionName: t_noalloc_strdup_vprintf
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - t_buffer_get
    - VA_COPY
    - printf_format_fix_get_len
    - vsnprintf
    - i_assert
    - va_end
    linkageType: ''
    returnType: char
    signature: "char *t_noalloc_strdup_vprintf(const char *format, va_list args,\n\t\t\t
      \      unsigned int *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_noalloc_strdup_vprintf
      Src: /src/dovecot/src/lib/strfuncs.c:170,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/strfuncs.c:172,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/strfuncs.c:175,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - pool
    - format
    - args
    argTypes:
    - pool_t
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 165
    functionDepth: 9
    functionLinenumber: 165
    functionLinenumberEnd: 179
    functionName: p_strdup_vprintf
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 4
    functionsReached:
    - memcpy
    - t_noalloc_strdup_vprintf
    - p_malloc
    - t_buffer_alloc
    linkageType: ''
    returnType: char
    signature: char *p_strdup_vprintf(pool_t pool, const char *format, va_list args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:187,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/strfuncs.c:191,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:195,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/strfuncs.c:199,1
    - Dst: t_buffer_reget
      Src: /src/dovecot/src/lib/strfuncs.c:200,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:203,1
    - Dst: va_arg
      Src: /src/dovecot/src/lib/strfuncs.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - str1
    - args
    - ret_len
    argTypes:
    - char*
    - va_list
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 181
    functionDepth: 6
    functionLinenumber: 181
    functionLinenumberEnd: 214
    functionName: vstrconcat
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 1
    functionsReached:
    - memcpy
    - t_buffer_get
    - strlen
    - va_arg
    - nearest_power
    - i_assert
    - t_buffer_reget
    linkageType: ''
    returnType: char
    signature: char *vstrconcat(const char *str1, va_list args, size_t *ret_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:222,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/strfuncs.c:224,1
    - Dst: vstrconcat
      Src: /src/dovecot/src/lib/strfuncs.c:227,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/strfuncs.c:228,1
    - Dst: vstrconcat
      Src: /src/dovecot/src/lib/strfuncs.c:230,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/strfuncs.c:231,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:232,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/strfuncs.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - pool
    - str1
    argTypes:
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 216
    functionDepth: 7
    functionLinenumber: 216
    functionLinenumberEnd: 237
    functionName: p_strconcat
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 39
    functionsReached:
    - memcpy
    - vstrconcat
    - va_start
    - va_end
    - t_buffer_alloc
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: char
    signature: char *p_strconcat(pool_t pool, const char *str1, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/strfuncs.c:241,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 5
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: t_memdup_noconst
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 1
    functionsReached:
    - memcpy
    - t_malloc_no0
    linkageType: ''
    returnType: void
    signature: void *t_memdup_noconst(const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_memdup_noconst
      Src: /src/dovecot/src/lib/strfuncs.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 6
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: t_memdup
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 2
    functionsReached:
    - t_memdup_noconst
    linkageType: ''
    returnType: void
    signature: void *t_memdup(const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/strfuncs.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: t_strdup
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 112
    functionsReached:
    - t_strdup_noconst
    linkageType: ''
    returnType: char
    signature: char *t_strdup(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_memdup_noconst
      Src: /src/dovecot/src/lib/strfuncs.c:260,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 256
    functionDepth: 6
    functionLinenumber: 256
    functionLinenumberEnd: 261
    functionName: t_strdup_noconst
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 21
    functionsReached:
    - t_memdup_noconst
    - strlen
    linkageType: ''
    returnType: char
    signature: char *t_strdup_noconst(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/strfuncs.c:268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: t_strdup_empty
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 1
    functionsReached:
    - t_strdup
    linkageType: ''
    returnType: char
    signature: char *t_strdup_empty(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:276,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/strfuncs.c:280,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 271
    functionDepth: 5
    functionLinenumber: 271
    functionLinenumberEnd: 284
    functionName: t_strdup_until_noconst
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 1
    functionsReached:
    - memcpy
    - i_assert
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: char *t_strdup_until_noconst(const void *start, const void *end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_until_noconst
      Src: /src/dovecot/src/lib/strfuncs.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 6
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: t_strdup_until
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 135
    functionsReached:
    - t_strdup_until_noconst
    linkageType: ''
    returnType: char
    signature: char *t_strdup_until(const void *start, const void *end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:293,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib/strfuncs.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - str
    - max_chars
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 295
    functionName: t_strndup
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 80
    functionsReached:
    - i_assert
    - p_strndup
    linkageType: ''
    returnType: char
    signature: char *t_strndup(const void *str, size_t max_chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/strfuncs.c:302,1
    - Dst: p_strdup_vprintf
      Src: /src/dovecot/src/lib/strfuncs.c:303,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/strfuncs.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 297
    functionDepth: 10
    functionLinenumber: 297
    functionLinenumberEnd: 307
    functionName: t_strdup_printf
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 1057
    functionsReached:
    - va_end
    - p_strdup_vprintf
    - va_start
    linkageType: ''
    returnType: char
    signature: char *t_strdup_printf(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_vprintf
      Src: /src/dovecot/src/lib/strfuncs.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - format
    - args
    argTypes:
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 10
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: t_strdup_vprintf
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 25
    functionsReached:
    - p_strdup_vprintf
    linkageType: ''
    returnType: char
    signature: char *t_strdup_vprintf(const char *format, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:320,1
    - Dst: va_start
      Src: /src/dovecot/src/lib/strfuncs.c:322,1
    - Dst: vstrconcat
      Src: /src/dovecot/src/lib/strfuncs.c:324,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/strfuncs.c:325,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/strfuncs.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - str1
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 314
    functionDepth: 7
    functionLinenumber: 314
    functionLinenumberEnd: 329
    functionName: t_strconcat
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 279
    functionsReached:
    - vstrconcat
    - va_start
    - t_buffer_alloc
    - i_assert
    - va_end
    linkageType: ''
    returnType: char
    signature: char *t_strconcat(const char *str1, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/strfuncs.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - str
    - cutchar
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 331
    functionDepth: 7
    functionLinenumber: 331
    functionLinenumberEnd: 341
    functionName: t_strcut
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 54
    functionsReached:
    - t_strdup_until
    linkageType: ''
    returnType: char
    signature: char *t_strcut(const char *str, char cutchar)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.c:348,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:351,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/strfuncs.c:352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - str
    - from
    - to
    argTypes:
    - char*
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 343
    functionDepth: 5
    functionLinenumber: 343
    functionLinenumberEnd: 361
    functionName: t_str_replace
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 12
    functionsReached:
    - strchr
    - strlen
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: char *t_str_replace(const char *str, char from, char to)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib/strfuncs.c:370,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:373,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/strfuncs.c:374,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strfuncs.c:382,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strfuncs.c:388,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strfuncs.c:393,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/strfuncs.c:405,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/strfuncs.c:406,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/strfuncs.c:406,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strfuncs.c:408,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/strfuncs.c:409,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 363
    functionDepth: 4
    functionLinenumber: 363
    functionLinenumberEnd: 410
    functionName: t_str_oneline
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 3
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - strlen
    - strpbrk
    - str_truncate
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char *t_str_oneline(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - dest
    - src
    - dstsize
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 424
    functionName: i_strocpy
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int i_strocpy(char *dest, const char *src, size_t dstsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/strfuncs.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 433
    functionName: str_ucase
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 40
    functionsReached:
    - i_toupper
    linkageType: ''
    returnType: char
    signature: char *str_ucase(char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_tolower
      Src: /src/dovecot/src/lib/strfuncs.c:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 442
    functionName: str_lcase
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 36
    functionsReached:
    - i_tolower
    linkageType: ''
    returnType: char
    signature: char *str_lcase(char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:446,1
    - Dst: str_lcase
      Src: /src/dovecot/src/lib/strfuncs.c:448,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/strfuncs.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 444
    functionDepth: 7
    functionLinenumber: 444
    functionLinenumberEnd: 449
    functionName: t_str_lcase
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 29
    functionsReached:
    - str_lcase
    - i_assert
    - t_strdup_noconst
    linkageType: ''
    returnType: char
    signature: char *t_str_lcase(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:453,1
    - Dst: str_ucase
      Src: /src/dovecot/src/lib/strfuncs.c:455,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/strfuncs.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 451
    functionDepth: 7
    functionLinenumber: 451
    functionLinenumberEnd: 456
    functionName: t_str_ucase
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 36
    functionsReached:
    - str_ucase
    - i_assert
    - t_strdup_noconst
    linkageType: ''
    returnType: char
    signature: char *t_str_ucase(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib/strfuncs.c:462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - haystack
    - needles
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 465
    functionName: i_strstr_arr
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: char
    signature: char *i_strstr_arr(const char *haystack, const char *const *needles)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:475,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.c:481,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.c:490,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 5
    argNames:
    - str
    - chars
    - sides
    - begin_r
    - end_r
    argTypes:
    - char*
    - char*
    - enum _str_trim_sides
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 499
    functionName: str_trim_parse
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - strchr
    - strlen
    linkageType: ''
    returnType: void
    signature: "void str_trim_parse(const char *str,\n\tconst char *chars, enum _str_trim_sides
      sides,\n\tconst char **begin_r, const char **end_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_trim_parse
      Src: /src/dovecot/src/lib/strfuncs.c:505,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/strfuncs.c:509,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - chars
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 501
    functionDepth: 7
    functionLinenumber: 501
    functionLinenumberEnd: 510
    functionName: t_str_trim
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 6
    functionsReached:
    - str_trim_parse
    - t_strdup_until
    linkageType: ''
    returnType: char
    signature: char *t_str_trim(const char *str, const char *chars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_trim_parse
      Src: /src/dovecot/src/lib/strfuncs.c:516,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/strfuncs.c:520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - pool
    - str
    - chars
    argTypes:
    - pool_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 512
    functionDepth: 2
    functionLinenumber: 512
    functionLinenumberEnd: 521
    functionName: p_str_trim
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - p_strdup_until
    - str_trim_parse
    linkageType: ''
    returnType: char
    signature: char *p_str_trim(pool_t pool, const char *str, const char *chars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_trim_parse
      Src: /src/dovecot/src/lib/strfuncs.c:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - chars
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 531
    functionName: str_ltrim
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 2
    functionsReached:
    - str_trim_parse
    linkageType: ''
    returnType: char
    signature: char *str_ltrim(const char *str, const char *chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/strfuncs.c:535,1
    - Dst: str_ltrim
      Src: /src/dovecot/src/lib/strfuncs.c:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - chars
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: t_str_ltrim
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 2
    functionsReached:
    - str_ltrim
    - t_strdup
    linkageType: ''
    returnType: char
    signature: char *t_str_ltrim(const char *str, const char *chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/strfuncs.c:540,1
    - Dst: str_ltrim
      Src: /src/dovecot/src/lib/strfuncs.c:540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - pool
    - str
    - chars
    argTypes:
    - pool_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 538
    functionDepth: 2
    functionLinenumber: 538
    functionLinenumberEnd: 541
    functionName: p_str_ltrim
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - str_ltrim
    - p_strdup
    linkageType: ''
    returnType: char
    signature: char *p_str_ltrim(pool_t pool, const char *str, const char *chars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_trim_parse
      Src: /src/dovecot/src/lib/strfuncs.c:547,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/strfuncs.c:550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - chars
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 543
    functionDepth: 7
    functionLinenumber: 543
    functionLinenumberEnd: 551
    functionName: t_str_rtrim
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 4
    functionsReached:
    - str_trim_parse
    - t_strdup_until
    linkageType: ''
    returnType: char
    signature: char *t_str_rtrim(const char *str, const char *chars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_trim_parse
      Src: /src/dovecot/src/lib/strfuncs.c:557,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/strfuncs.c:560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - pool
    - str
    - chars
    argTypes:
    - pool_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 553
    functionDepth: 2
    functionLinenumber: 553
    functionLinenumberEnd: 561
    functionName: p_str_rtrim
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - p_strdup_until
    - str_trim_parse
    linkageType: ''
    returnType: char
    signature: char *p_str_rtrim(pool_t pool, const char *str, const char *chars)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/strfuncs.c:570,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 571
    functionName: null_strcmp
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 48
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int null_strcmp(const char *s1, const char *s2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/strfuncs.c:580,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 581
    functionName: null_strcasecmp
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 3
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int null_strcasecmp(const char *s1, const char *s2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/strfuncs.c:590,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/strfuncs.c:590,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - p1
    - p2
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 598
    functionName: i_memcasecmp
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 8
    functionsReached:
    - i_toupper
    linkageType: ''
    returnType: int
    signature: int i_memcasecmp(const void *p1, const void *p2, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/strfuncs.c:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: i_strcmp_p
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int i_strcmp_p(const char *const *p1, const char *const *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/strfuncs.c:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 608
    functionName: i_strcasecmp_p
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int i_strcasecmp_p(const char *const *p1, const char *const *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - p1
    - p2
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 610
    functionDepth: 0
    functionLinenumber: 610
    functionLinenumberEnd: 623
    functionName: mem_equals_timing_safe
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mem_equals_timing_safe(const void *p1, const void *p2, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 625
    functionDepth: 0
    functionLinenumber: 625
    functionLinenumberEnd: 638
    functionName: str_equals_timing_almost_safe
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool str_equals_timing_almost_safe(const char *s1, const char *s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: str_match
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t str_match(const char *p1, const char *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_tolower
      Src: /src/dovecot/src/lib/strfuncs.c:655,1
    - Dst: i_tolower
      Src: /src/dovecot/src/lib/strfuncs.c:655,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 659
    functionName: str_match_icase
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 3
    functionsReached:
    - i_tolower
    linkageType: ''
    returnType: size_t
    signature: size_t str_match_icase(const char *p1, const char *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_match
      Src: /src/dovecot/src/lib/strfuncs.c:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - haystack
    - needle
    - suffix_r
    argTypes:
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 669
    functionName: str_begins
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 99
    functionsReached:
    - str_match
    linkageType: ''
    returnType: bool
    signature: bool str_begins(const char *haystack, const char *needle, const char
      **suffix_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_match_icase
      Src: /src/dovecot/src/lib/strfuncs.c:675,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - haystack
    - needle
    - suffix_r
    argTypes:
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 672
    functionDepth: 2
    functionLinenumber: 672
    functionLinenumberEnd: 680
    functionName: str_begins_icase
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 29
    functionsReached:
    - str_match_icase
    linkageType: ''
    returnType: bool
    signature: "bool str_begins_icase(const char *haystack, const char *needle,\n\t\t
      \     const char **suffix_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:686,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:687,1
    - Dst: memchr
      Src: /src/dovecot/src/lib/strfuncs.c:693,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 4
    argNames:
    - data
    - data_len
    - accept
    - accept_len
    argTypes:
    - void*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 697
    functionName: i_memspn
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 2
    functionsReached:
    - i_assert
    - memchr
    linkageType: ''
    returnType: size_t
    signature: "size_t i_memspn(const void *data, size_t data_len,\n\t\tconst void
      *accept, size_t accept_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/strfuncs.c:704,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:705,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:706,1
    - Dst: memchr
      Src: /src/dovecot/src/lib/strfuncs.c:715,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 4
    argNames:
    - data
    - data_len
    - reject
    - reject_len
    argTypes:
    - void*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 699
    functionDepth: 1
    functionLinenumber: 699
    functionLinenumberEnd: 720
    functionName: i_memcspn
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 3
    functionsReached:
    - memchr
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: size_t
    signature: "size_t i_memcspn(const void *data, size_t data_len,\n\t\t const void
      *reject, size_t reject_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.c:725,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/strfuncs.c:727,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - arg
    - separator
    - key_r
    - value_r
    argTypes:
    - char*
    - char
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 722
    functionDepth: 7
    functionLinenumber: 722
    functionLinenumberEnd: 733
    functionName: t_split_key_value
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 3
    functionsReached:
    - strchr
    - t_strdup_until
    linkageType: ''
    returnType: bool
    signature: "bool t_split_key_value(const char *arg, char separator,\n\t\t       const
      char **key_r, const char **value_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.c:744,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/strfuncs.c:748,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/strfuncs.c:750,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/strfuncs.c:753,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.c:757,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/strfuncs.c:760,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/strfuncs.c:761,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.c:771,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:785,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 789
    functionName: split_str_slow
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_strdup
    - p_new
    - nearest_power
    - i_assert
    - p_realloc
    linkageType: ''
    returnType: char
    signature: 'char **

      split_str_slow(pool_t pool, const char *data, const char *separators, bool spaces)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib/strfuncs.c:798,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/strfuncs.c:800,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/strfuncs.c:803,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/strfuncs.c:806,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/strfuncs.c:809,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/strfuncs.c:810,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:819,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 791
    functionDepth: 2
    functionLinenumber: 791
    functionLinenumberEnd: 823
    functionName: split_str_fast
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_strdup
    - p_new
    - nearest_power
    - i_assert
    - p_realloc
    linkageType: ''
    returnType: char
    signature: 'char **

      split_str_fast(pool_t pool, const char *data, char sep)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:828,1
    - Dst: split_str_fast
      Src: /src/dovecot/src/lib/strfuncs.c:831,1
    - Dst: split_str_slow
      Src: /src/dovecot/src/lib/strfuncs.c:833,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 825
    functionDepth: 3
    functionLinenumber: 825
    functionLinenumberEnd: 834
    functionName: split_str
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - split_str_slow
    - i_assert
    - split_str_fast
    linkageType: ''
    returnType: char
    signature: 'char **

      split_str(pool_t pool, const char *data, const char *separators, bool spaces)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split_str
      Src: /src/dovecot/src/lib/strfuncs.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 836
    functionDepth: 4
    functionLinenumber: 836
    functionLinenumberEnd: 840
    functionName: t_strsplit
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 71
    functionsReached:
    - split_str
    linkageType: ''
    returnType: char
    signature: char **t_strsplit(const char *data, const char *separators)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split_str
      Src: /src/dovecot/src/lib/strfuncs.c:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 842
    functionDepth: 4
    functionLinenumber: 842
    functionLinenumberEnd: 846
    functionName: t_strsplit_spaces
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 26
    functionsReached:
    - split_str
    linkageType: ''
    returnType: char
    signature: char **t_strsplit_spaces(const char *data, const char *separators)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split_str
      Src: /src/dovecot/src/lib/strfuncs.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 848
    functionDepth: 4
    functionLinenumber: 848
    functionLinenumberEnd: 851
    functionName: p_strsplit
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 6
    functionsReached:
    - split_str
    linkageType: ''
    returnType: char
    signature: char **p_strsplit(pool_t pool, const char *data, const char *separators)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split_str
      Src: /src/dovecot/src/lib/strfuncs.c:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 853
    functionDepth: 4
    functionLinenumber: 853
    functionLinenumberEnd: 857
    functionName: p_strsplit_spaces
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 4
    functionsReached:
    - split_str
    linkageType: ''
    returnType: char
    signature: "char **p_strsplit_spaces(pool_t pool, const char *data,\n\t\t\t const
      char *separators)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib/strfuncs.c:861,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/strfuncs.c:862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pool
    - arr
    argTypes:
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 859
    functionDepth: 1
    functionLinenumber: 859
    functionLinenumberEnd: 863
    functionName: p_strsplit_free
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 3
    functionsReached:
    - p_free
    linkageType: ''
    returnType: void
    signature: void p_strsplit_free(pool_t pool, char **arr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - arr
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 865
    functionDepth: 0
    functionLinenumber: 865
    functionLinenumberEnd: 876
    functionName: str_array_length
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 92
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int str_array_length(const char *const *arr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:886,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/strfuncs.c:888,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:892,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/strfuncs.c:895,1
    - Dst: t_buffer_reget
      Src: /src/dovecot/src/lib/strfuncs.c:896,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:900,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:904,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib/strfuncs.c:909,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/strfuncs.c:910,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - pool
    - arr
    - arr_len
    - separator
    argTypes:
    - pool_t
    - char**
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 878
    functionDepth: 6
    functionLinenumber: 878
    functionLinenumberEnd: 912
    functionName: p_strarray_join_n
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_buffer_get
    - strlen
    - nearest_power
    - t_buffer_alloc
    - p_memdup
    - t_buffer_reget
    linkageType: ''
    returnType: char
    signature: "char *\np_strarray_join_n(pool_t pool, const char *const *arr, unsigned
      int arr_len,\n\t\t  const char *separator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strarray_join_n
      Src: /src/dovecot/src/lib/strfuncs.c:916,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/strfuncs.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arr
    - separator
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 914
    functionDepth: 7
    functionLinenumber: 914
    functionLinenumberEnd: 918
    functionName: t_strarray_join
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 45
    functionsReached:
    - p_strarray_join_n
    - str_array_length
    linkageType: ''
    returnType: char
    signature: char *t_strarray_join(const char *const *arr, const char *separator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/strfuncs.c:925,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - arr
    - value
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 934
    functionName: str_array_remove
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool str_array_remove(const char **arr, const char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/strfuncs.c:939,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - arr
    - value
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 943
    functionName: str_array_find
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 18
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool str_array_find(const char *const *arr, const char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/strfuncs.c:948,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - arr
    - value
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 945
    functionDepth: 0
    functionLinenumber: 945
    functionLinenumberEnd: 952
    functionName: str_array_icase_find
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 13
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool str_array_icase_find(const char *const *arr, const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:963,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/strfuncs.c:965,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/strfuncs.c:966,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strfuncs.c:968,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/strfuncs.c:969,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:973,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/strfuncs.c:973,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 975
    functionName: p_strarray_dup
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 29
    functionsReached:
    - memcpy
    - PTR_OFFSET
    - strlen
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: char
    signature: char **p_strarray_dup(pool_t pool, const char *const *arr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dec2str_buf
      Src: /src/dovecot/src/lib/strfuncs.c:979,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/strfuncs.c:979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - number
    argTypes:
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 5
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: dec2str
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 94
    functionsReached:
    - dec2str_buf
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: char *dec2str(uintmax_t number)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strfuncs.c:993,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buffer
    - number
    argTypes:
    - char[]
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 982
    functionDepth: 1
    functionLinenumber: 982
    functionLinenumberEnd: 995
    functionName: dec2str_buf
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 5
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *dec2str_buf(char buffer[STATIC_ARRAY MAX_INT_STRLEN], uintmax_t
      number)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib/strfuncs.c:1000,1
    - Dst: p_strarray_join_n
      Src: /src/dovecot/src/lib/strfuncs.c:1002,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/strfuncs.c:1002,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/strfuncs.c:1002,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - pool
    - arr
    - separator
    argTypes:
    - pool_t
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 997
    functionDepth: 7
    functionLinenumber: 997
    functionLinenumberEnd: 1004
    functionName: p_array_const_string_join
    functionSourceFile: /src/dovecot/src/lib/strfuncs.c
    functionUses: 5
    functionsReached:
    - array_is_empty
    - p_strarray_join_n
    - array_count
    - array_front
    linkageType: ''
    returnType: char
    signature: "char *p_array_const_string_join(pool_t pool, const ARRAY_TYPE(const_string)
      *arr,\n\t\t\t\tconst char *separator)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str-sanitize.c:41,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-sanitize.c:42,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib/test-str-sanitize.c:43,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:45,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-str-sanitize.c:45,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:47,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str-sanitize.c:49,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str-sanitize.c:51,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str-sanitize.c:52,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-sanitize.c:53,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-str-sanitize.c:56,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str-sanitize.c:57,1
    - Dst: str_sanitize_append
      Src: /src/dovecot/src/lib/test-str-sanitize.c:58,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:60,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-str-sanitize.c:60,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-str-sanitize.c:60,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:62,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-str-sanitize.c:62,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-str-sanitize.c:62,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:64,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-str-sanitize.c:64,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-str-sanitize.c:64,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str-sanitize.c:66,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 13
    functionDepth: 5
    functionLinenumber: 13
    functionLinenumberEnd: 67
    functionName: test_str_sanitize_max_bytes
    functionSourceFile: /src/dovecot/src/lib/test-str-sanitize.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_begins_with
    - test_assert_idx
    - str_sanitize_append
    - test_end
    - str_sanitize
    - null_strcmp
    - str_truncate
    - str_append
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_sanitize_max_bytes(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str-sanitize.c:97,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-sanitize.c:98,1
    - Dst: str_sanitize_utf8
      Src: /src/dovecot/src/lib/test-str-sanitize.c:99,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:101,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-str-sanitize.c:101,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:103,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str-sanitize.c:105,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str-sanitize.c:107,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-str-sanitize.c:108,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-sanitize.c:109,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-str-sanitize.c:112,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-str-sanitize.c:113,1
    - Dst: str_sanitize_append_utf8
      Src: /src/dovecot/src/lib/test-str-sanitize.c:114,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:116,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/test-str-sanitize.c:116,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-str-sanitize.c:116,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:118,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-str-sanitize.c:118,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-str-sanitize.c:118,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-sanitize.c:120,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-str-sanitize.c:120,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-str-sanitize.c:120,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str-sanitize.c:122,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 123
    functionName: test_str_sanitize_max_codepoints
    functionSourceFile: /src/dovecot/src/lib/test-str-sanitize.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - str_sanitize_utf8
    - str_sanitize_append_utf8
    - test_end
    - null_strcmp
    - str_truncate
    - str_append
    - strncmp
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_sanitize_max_codepoints(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_str_sanitize_max_bytes
      Src: /src/dovecot/src/lib/test-str-sanitize.c:127,1
    - Dst: test_str_sanitize_max_codepoints
      Src: /src/dovecot/src/lib/test-str-sanitize.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 6
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: test_str_sanitize
    functionSourceFile: /src/dovecot/src/lib/test-str-sanitize.c
    functionUses: 0
    functionsReached:
    - test_str_sanitize_max_bytes
    - test_str_sanitize_max_codepoints
    linkageType: ''
    returnType: void
    signature: void test_str_sanitize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - arr
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: static_assert_array_size
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: static_assert_array_size(arr, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib.h:75,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/lib.h:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - dest
    - src
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: i_memcpy
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 0
    functionsReached:
    - memcpy
    - i_assert
    linkageType: ''
    returnType: void
    signature: void *i_memcpy(void *dest, const void *src, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - dest
    - ','
    - src
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: memcpy
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 258
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memcpy(dest, src, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: i_unlink
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 51
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_unlink(path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: i_unlink_if_exists
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 40
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_unlink_if_exists(path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/lib.h:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: i_rand_ushort
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 0
    functionsReached:
    - i_rand_limit
    linkageType: ''
    returnType: unsigned short
    signature: unsigned short i_rand_ushort(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/lib.h:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: i_rand_uchar
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 4
    functionsReached:
    - i_rand_limit
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char i_rand_uchar(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib.h:137,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/lib.h:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - min_val
    - max_val
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: i_rand_minmax
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 23
    functionsReached:
    - i_assert
    - i_rand_limit
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t i_rand_minmax(uint32_t min_val, uint32_t max_val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib.h:144,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib.h:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ts
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 149
    functionName: time_to_uint32
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t time_to_uint32(time_t ts)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ts
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 158
    functionName: time_to_uint32_trunc
    functionSourceFile: /src/dovecot/src/lib/lib.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t time_to_uint32_trunc(time_t ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.h:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - trans
    - def
    argTypes:
    - struct unicode_transform*
    - struct unicode_transform_def*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: unicode_transform_init
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.h
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void unicode_transform_init(struct unicode_transform *trans,\n\t\t
      \      const struct unicode_transform_def *def)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.h:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - trans
    - next
    argTypes:
    - struct unicode_transform*
    - struct unicode_transform*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: unicode_transform_chain
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.h
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void unicode_transform_chain(struct unicode_transform *trans,\n\t\t\tstruct
      unicode_transform *next)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct unicode_transform*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: unicode_transform_get_last
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct unicode_transform
    signature: 'struct unicode_transform *

      unicode_transform_get_last(struct unicode_transform *trans)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_transform_input_buf
      Src: /src/dovecot/src/lib/unicode-transform.h:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - trans
    - in
    - in_len
    - error_r
    argTypes:
    - struct unicode_transform*
    - uint32_t*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: unicode_transform_input
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.h
    functionUses: 1
    functionsReached:
    - unicode_transform_input_buf
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t unicode_transform_input(struct unicode_transform *trans,\n\t\t\tconst
      uint32_t *in, size_t in_len, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:26,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/hmac.c:31,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/hmac.c:32,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib/hmac.c:33,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/hmac.c:39,1
    - Dst: memset
      Src: /src/dovecot/src/lib/hmac.c:40,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/hmac.c:41,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/hmac.c:48,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/hmac.c:49,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/hmac.c:50,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/hmac.c:51,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/hmac.c:53,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/hmac.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 4
    argNames:
    - _ctx
    - key
    - key_len
    - meth
    argTypes:
    - struct hmac_context*
    - unsigned char*
    - size_t
    - struct hash_method*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 55
    functionName: hmac_init
    functionSourceFile: /src/dovecot/src/lib/hmac.c
    functionUses: 8
    functionsReached:
    - struct hash_method*::init
    - memcpy
    - struct hash_method*::loop
    - struct hash_method*::result
    - memset
    - i_assert
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void hmac_init(struct hmac_context *_ctx, const unsigned char *key,\n\t\tsize_t
      key_len, const struct hash_method *meth)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct hmac_context_priv*::hash::result
      Src: /src/dovecot/src/lib/hmac.c:61,1
    - Dst: struct hmac_context_priv*::hash::loop
      Src: /src/dovecot/src/lib/hmac.c:63,1
    - Dst: struct hmac_context_priv*::hash::result
      Src: /src/dovecot/src/lib/hmac.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _ctx
    - digest
    argTypes:
    - struct hmac_context*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: hmac_final
    functionSourceFile: /src/dovecot/src/lib/hmac.c
    functionUses: 8
    functionsReached:
    - struct hmac_context_priv*::hash::result
    - struct hmac_context_priv*::hash::loop
    linkageType: ''
    returnType: void
    signature: void hmac_final(struct hmac_context *_ctx, unsigned char *digest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:74,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/hmac.c:76,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib/hmac.c:77,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/hmac.c:79,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/hmac.c:80,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib/hmac.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - meth
    - key
    - key_len
    - data
    - data_len
    argTypes:
    - struct hash_method*
    - unsigned char*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: t_hmac_data
    functionSourceFile: /src/dovecot/src/lib/hmac.c
    functionUses: 1
    functionsReached:
    - hmac_update
    - buffer_get_space_unsafe
    - hmac_final
    - t_buffer_create
    - hmac_init
    - i_assert
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *t_hmac_data(const struct hash_method *meth,\n\t\t      const
      unsigned char *key, size_t key_len,\n\t\t      const void *data, size_t data_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_hmac_data
      Src: /src/dovecot/src/lib/hmac.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - meth
    - key
    - key_len
    - data
    argTypes:
    - struct hash_method*
    - unsigned char*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 5
    functionLinenumber: 85
    functionLinenumberEnd: 90
    functionName: t_hmac_buffer
    functionSourceFile: /src/dovecot/src/lib/hmac.c
    functionUses: 4
    functionsReached:
    - t_hmac_data
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *t_hmac_buffer(const struct hash_method *meth,\n\t\t\tconst
      unsigned char *key, size_t key_len,\n\t\t\tconst buffer_t *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_hmac_data
      Src: /src/dovecot/src/lib/hmac.c:96,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/hmac.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - meth
    - key
    - key_len
    - data
    argTypes:
    - struct hash_method*
    - unsigned char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 5
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: t_hmac_str
    functionSourceFile: /src/dovecot/src/lib/hmac.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_hmac_data
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *t_hmac_str(const struct hash_method *meth,\n\t\t     const
      unsigned char *key, size_t key_len,\n\t\t     const char *data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:105,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:116,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hmac.c:120,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib/hmac.c:130,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/hmac.c:131,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib/hmac.c:132,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib/hmac.c:140,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/hmac.c:142,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/hmac.c:143,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/hmac.c:144,1
    - Dst: memset
      Src: /src/dovecot/src/lib/hmac.c:145,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib/hmac.c:146,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/hmac.c:147,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/hmac.c:151,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/hmac.c:152,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 9
    argNames:
    - method
    - salt
    - salt_len
    - ikm
    - ikm_len
    - info
    - info_len
    - okm_r
    - okm_len
    argTypes:
    - struct hash_method*
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 99
    functionDepth: 5
    functionLinenumber: 99
    functionLinenumberEnd: 153
    functionName: hmac_hkdf
    functionSourceFile: /src/dovecot/src/lib/hmac.c
    functionUses: 2
    functionsReached:
    - buffer_append
    - hmac_update
    - hmac_final
    - hmac_init
    - memset
    - i_assert
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void hmac_hkdf(const struct hash_method *method,\n\t       const unsigned
      char *salt, size_t salt_len,\n\t       const unsigned char *ikm, size_t ikm_len,\n\t
      \      const unsigned char *info, size_t info_len,\n\t       buffer_t *okm_r,
      size_t okm_len)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-try.c:14,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-try.c:18,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-try.c:19,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:21,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:22,1
    - Dst: istream_try_create
      Src: /src/dovecot/src/lib/test-istream-try.c:23,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:26,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:26,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:31,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:32,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:32,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:33,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:33,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:34,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:34,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:38,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:39,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:39,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:40,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:40,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:41,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:41,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:44,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:44,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:45,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:45,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:46,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:46,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:50,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:51,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:52,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:52,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:53,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:53,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:54,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:54,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:59,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:59,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:60,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:60,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:61,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:61,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:63,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:64,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:64,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:65,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:65,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:66,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:66,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:71,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:71,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:72,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:72,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:73,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:73,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:78,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:79,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:79,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:80,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:80,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:81,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:81,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:86,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:87,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:87,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:88,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:88,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:89,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:89,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:95,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:95,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:96,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:102,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:102,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:103,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:109,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:109,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:110,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:115,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:116,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:116,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:117,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:118,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:118,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:124,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-try.c:125,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:127,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:128,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:129,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:131,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-try.c:132,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 10
    functionDepth: 5
    functionLinenumber: 10
    functionLinenumberEnd: 133
    functionName: test_istream_try_normal
    functionSourceFile: /src/dovecot/src/lib/test-istream-try.c
    functionUses: 0
    functionsReached:
    - istream_try_create
    - i_assert
    - i_stream_get_data_size
    - test_assert_idx
    - test_end
    - i_stream_read
    - test_istream_create
    - i_stream_unref
    - test_istream_set_size
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_try_normal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-try.c:137,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-try.c:139,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-try.c:140,1
    - Dst: istream_try_create
      Src: /src/dovecot/src/lib/test-istream-try.c:144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:145,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:147,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:148,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:149,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:150,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-try.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 135
    functionDepth: 5
    functionLinenumber: 135
    functionLinenumberEnd: 152
    functionName: test_istream_try_empty
    functionSourceFile: /src/dovecot/src/lib/test-istream-try.c
    functionUses: 0
    functionsReached:
    - istream_try_create
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - i_stream_read
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_try_empty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-try.c:159,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib/test-istream-try.c:162,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:163,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-try.c:164,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib/test-istream-try.c:165,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:166,1
    - Dst: istream_try_create
      Src: /src/dovecot/src/lib/test-istream-try.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:173,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:173,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:174,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:175,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:175,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:176,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:176,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-try.c:178,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:179,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-try.c:179,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:180,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:180,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-try.c:181,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-try.c:181,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:183,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:184,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-try.c:185,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-try.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 154
    functionDepth: 5
    functionLinenumber: 154
    functionLinenumberEnd: 188
    functionName: test_istream_try_buffer_full
    functionSourceFile: /src/dovecot/src/lib/test-istream-try.c
    functionUses: 0
    functionsReached:
    - istream_try_create
    - i_stream_get_data_size
    - test_istream_set_max_buffer_size
    - test_end
    - i_stream_read
    - test_istream_create
    - test_assert
    - i_stream_unref
    - test_istream_set_size
    - test_begin
    - i_stream_create_base64_decoder
    linkageType: ''
    returnType: void
    signature: void test_istream_try_buffer_full(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_try_normal
      Src: /src/dovecot/src/lib/test-istream-try.c:192,1
    - Dst: test_istream_try_empty
      Src: /src/dovecot/src/lib/test-istream-try.c:193,1
    - Dst: test_istream_try_buffer_full
      Src: /src/dovecot/src/lib/test-istream-try.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 6
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: test_istream_try
    functionSourceFile: /src/dovecot/src/lib/test-istream-try.c
    functionUses: 0
    functionsReached:
    - test_istream_try_normal
    - test_istream_try_empty
    - test_istream_try_buffer_full
    linkageType: ''
    returnType: void
    signature: void test_istream_try(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 9
    functionName: i_new
    functionSourceFile: /src/dovecot/src/lib/imem.h
    functionUses: 452
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_new(type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - mem
    - ','
    - type
    - ','
    - old_count
    - ','
    - new_count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: i_realloc_type
    functionSourceFile: /src/dovecot/src/lib/imem.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_realloc_type(mem, type, old_count, new_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: i_free
    functionSourceFile: /src/dovecot/src/lib/imem.h
    functionUses: 618
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_free(mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 26
    functionName: i_free
    functionSourceFile: /src/dovecot/src/lib/imem.h
    functionUses: 618
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_free(mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: i_free_and_null
    functionSourceFile: /src/dovecot/src/lib/imem.h
    functionUses: 63
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_free_and_null(mem)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib/unlink-directory.c:53,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib/unlink-directory.c:54,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/unlink-directory.c:60,1
    - Dst: va_end
      Src: /src/dovecot/src/lib/unlink-directory.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - error
    - first_errno
    - fmt
    argTypes:
    - char**
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 48
    functionDepth: 11
    functionLinenumber: 48
    functionLinenumberEnd: 62
    functionName: unlink_directory_error
    functionSourceFile: /src/dovecot/src/lib/unlink-directory.c
    functionUses: 0
    functionsReached:
    - va_end
    - t_strdup_vprintf
    - i_error
    - va_start
    linkageType: ''
    returnType: void
    signature: "void unlink_directory_error(const char **error,\n\t\t       int *first_errno,\n\t\t
      \      const char *fmt, ...)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/unlink-directory.c:74,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:76,1
    - Dst: lstat
      Src: /src/dovecot/src/lib/unlink-directory.c:84,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:85,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib/unlink-directory.c:89,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:91,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:96,1
    - Dst: open
      Src: /src/dovecot/src/lib/unlink-directory.c:101,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:103,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/unlink-directory.c:107,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/unlink-directory.c:108,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:109,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib/unlink-directory.c:114,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/unlink-directory.c:116,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:118,1
    - Dst: fchdir
      Src: /src/dovecot/src/lib/unlink-directory.c:122,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/unlink-directory.c:123,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:124,1
    - Dst: opendir
      Src: /src/dovecot/src/lib/unlink-directory.c:128,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/unlink-directory.c:130,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:131,1
    - Dst: readdir
      Src: /src/dovecot/src/lib/unlink-directory.c:138,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:141,1
    - Dst: unlink
      Src: /src/dovecot/src/lib/unlink-directory.c:159,1
    - Dst: lstat
      Src: /src/dovecot/src/lib/unlink-directory.c:162,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:164,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib/unlink-directory.c:171,1
    - Dst: unlink_directory_r
      Src: /src/dovecot/src/lib/unlink-directory.c:173,1
    - Dst: fchdir
      Src: /src/dovecot/src/lib/unlink-directory.c:179,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:180,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib/unlink-directory.c:188,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:193,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib/unlink-directory.c:200,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/unlink-directory.c:204,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:211,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/unlink-directory.c:220,1
    - Dst: closedir
      Src: /src/dovecot/src/lib/unlink-directory.c:221,1
    - Dst: unlink_directory_error
      Src: /src/dovecot/src/lib/unlink-directory.c:222,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 105
    argCount: 3
    argNames:
    - dir
    - flags
    - error
    argTypes:
    - char*
    - enum unlink_directory_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 64
    functionDepth: 12
    functionLinenumber: 64
    functionLinenumberEnd: 233
    functionName: unlink_directory_r
    functionSourceFile: /src/dovecot/src/lib/unlink-directory.c
    functionUses: 1
    functionsReached:
    - readdir
    - opendir
    - str_begins_with
    - unlink_directory_error
    - rmdir
    - i_close_fd
    - fchdir
    - open
    - unlink
    - unlink_directory_r
    - closedir
    - fstat
    - S_ISDIR
    - CMP_DEV_T
    - lstat
    linkageType: ''
    returnType: int
    signature: "int unlink_directory_r(const char *dir, enum unlink_directory_flags
      flags,\n\t\t   const char **error)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_get_working_dir
      Src: /src/dovecot/src/lib/unlink-directory.c:241,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/unlink-directory.c:242,1
    - Dst: open
      Src: /src/dovecot/src/lib/unlink-directory.c:247,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/unlink-directory.c:249,1
    - Dst: unlink_directory_r
      Src: /src/dovecot/src/lib/unlink-directory.c:258,1
    - Dst: fchdir
      Src: /src/dovecot/src/lib/unlink-directory.c:261,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/unlink-directory.c:262,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/unlink-directory.c:265,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib/unlink-directory.c:273,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/unlink-directory.c:274,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - dir
    - flags
    - error_r
    argTypes:
    - char*
    - enum unlink_directory_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 235
    functionDepth: 13
    functionLinenumber: 235
    functionLinenumberEnd: 283
    functionName: unlink_directory
    functionSourceFile: /src/dovecot/src/lib/unlink-directory.c
    functionUses: 10
    functionsReached:
    - rmdir
    - i_close_fd
    - fchdir
    - open
    - t_strdup_printf
    - unlink_directory_r
    - i_warning
    - i_fatal
    - t_get_working_dir
    linkageType: ''
    returnType: int
    signature: "int unlink_directory(const char *dir, enum unlink_directory_flags
      flags,\n\t\t     const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:76,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:80,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:83,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:84,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:87,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:90,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:92,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:92,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 5
    argNames:
    - base64_input_len
    - input_data
    - input
    - output
    - stream_errno
    argTypes:
    - unsigned int
    - struct istream*
    - struct istream*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 93
    functionName: decode_test
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-decoder.c
    functionUses: 1
    functionsReached:
    - test_istream_set_size
    - strlen
    - i_stream_get_data
    - test_istream_set_allow_eof
    - test_assert
    - memcmp
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: "void decode_test(unsigned int base64_input_len,\n\t    struct istream
      *input_data, struct istream *input,\n\t    const char *output, int stream_errno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:99,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:102,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:103,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:104,1
    - Dst: decode_test
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:106,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:108,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - base64_input
    - output
    - stream_errno
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: decode_base64_test
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_istream_set_allow_eof
    - test_istream_create_data
    - i_stream_unref
    - decode_test
    - i_stream_create_base64_decoder
    linkageType: ''
    returnType: void
    signature: "void decode_base64_test(const char *base64_input, const char *output,\n\t\t
      \  int stream_errno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:116,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:119,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:120,1
    - Dst: i_stream_create_base64url_decoder
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:121,1
    - Dst: decode_test
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:123,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:125,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - base64_input
    - output
    - stream_errno
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: decode_base64url_test
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - i_stream_create_base64url_decoder
    - strlen
    - test_istream_set_allow_eof
    - test_istream_create_data
    - i_stream_unref
    - decode_test
    linkageType: ''
    returnType: void
    signature: "void decode_base64url_test(const char *base64_input, const char *output,\n\t\t
      \     int stream_errno)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:138,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:140,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:142,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:154,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:156,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:159,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:162,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:163,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:166,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:167,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:170,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:172,1
    - Dst: i_stream_create_base64_encoder
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:175,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:176,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:176,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:177,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:179,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:179,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:183,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:184,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:184,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:187,1
    - Dst: base64_get_full_encoded_size
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:188,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:190,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:193,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:197,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:198,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:200,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:200,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:204,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:205,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:208,1
    - Dst: i_stream_create_base64_encoder
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:212,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:213,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:213,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:214,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:216,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:216,1
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:220,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:221,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:221,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:224,1
    - Dst: base64_get_full_encoded_size
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:225,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:227,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:230,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:234,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:235,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:237,1
    - Dst: BIT
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:237,1
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:241,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:242,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:245,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:250,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:250,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:251,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:251,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:252,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:252,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:253,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:253,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:257,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:259,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:261,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:262,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:263,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:266,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:268,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:269,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:274,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:276,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:277,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:281,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:281,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:282,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:283,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:283,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:284,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:285,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:285,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:286,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:287,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:287,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:288,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:289,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:289,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:290,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:293,1
    - Dst: i_info
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:294,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:300,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:301,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:302,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:303,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:304,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:305,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:306,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:307,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:308,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:310,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 129
    functionDepth: 6
    functionLinenumber: 129
    functionLinenumberEnd: 311
    functionName: test_istream_base64_io_random
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - i_stream_ref
    - i_stream_get_data
    - buffer_set_used_size
    - i_rand_uchar
    - base64_get_full_encoded_size
    - i_rand_limit
    - BIT
    - base64_encode_init
    - i_rand_minmax
    - i_stream_create_from_data
    - i_stream_create_base64_decoder
    - buffer_append
    - i_stream_set_name
    - I_MIN
    - i_stream_skip
    - i_stream_get_error
    - test_end
    - i_stream_get_name
    - i_stream_set_max_buffer_size
    - i_stream_read_more
    - i_stream_create_sized
    - i_info
    - i_error
    - t_buffer_create
    - test_has_failed
    - i_stream_create_base64_encoder
    - memcmp
    - i_stream_unref
    - HAS_ALL_BITS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_base64_io_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:317,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:320,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:320,1
    - Dst: decode_base64_test
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:321,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:323,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:326,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:329,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:329,1
    - Dst: decode_base64url_test
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:331,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:333,1
    - Dst: test_istream_base64_io_random
      Src: /src/dovecot/src/lib/test-istream-base64-decoder.c:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 313
    functionDepth: 11
    functionLinenumber: 313
    functionLinenumberEnd: 337
    functionName: test_istream_base64_decoder
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - decode_base64_test
    - t_strdup_printf
    - test_istream_base64_io_random
    - test_end
    - decode_base64url_test
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_base64_decoder(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:12,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:13,1
    - Dst: uni_utf8_strlen
      Src: /src/dovecot/src/lib/test-unichar.c:13,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:14,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:16,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:17,1
    - Dst: uni_utf8_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:18,1
    - Dst: uni_utf8_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:18,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:19,1
    - Dst: uni_utf8_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:20,1
    - Dst: uni_utf8_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:20,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 22
    functionName: test_unichar_uni_utf8_strlen
    functionSourceFile: /src/dovecot/src/lib/test-unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_strlen_n
    - uni_utf8_strlen
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unichar_uni_utf8_strlen(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:30,1
    - Dst: uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:31,1
    - Dst: uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:32,1
    - Dst: uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:33,1
    - Dst: uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:34,1
    - Dst: uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:35,1
    - Dst: uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:35,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:36,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 24
    functionDepth: 3
    functionLinenumber: 24
    functionLinenumberEnd: 37
    functionName: test_unichar_uni_utf8_partial_strlen_n
    functionSourceFile: /src/dovecot/src/lib/test-unichar.c
    functionUses: 0
    functionsReached:
    - uni_utf8_partial_strlen_n
    - test_end
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_unichar_uni_utf8_partial_strlen_n(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:95,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-unichar.c:97,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unichar.c:100,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib/test-unichar.c:100,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unichar.c:101,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unichar.c:103,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib/test-unichar.c:103,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 39
    functionDepth: 3
    functionLinenumber: 39
    functionLinenumberEnd: 108
    functionName: test_unichar_valid_unicode
    functionSourceFile: /src/dovecot/src/lib/test-unichar.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - uni_utf8_get_char
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unichar_valid_unicode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:113,1
    - Dst: uni_split_surrogate
      Src: /src/dovecot/src/lib/test-unichar.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:119,1
    - Dst: uni_join_surrogate
      Src: /src/dovecot/src/lib/test-unichar.c:119,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 122
    functionName: test_unichar_surrogates
    functionSourceFile: /src/dovecot/src/lib/test-unichar.c
    functionUses: 0
    functionsReached:
    - uni_join_surrogate
    - test_end
    - test_assert
    - test_begin
    - uni_split_surrogate
    linkageType: ''
    returnType: void
    signature: void test_unichar_surrogates(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-unichar.c:151,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-unichar.c:151,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-unichar.c:154,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:156,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-unichar.c:158,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-unichar.c:161,1
    - Dst: uni_utf8_to_decomposed_titlecase
      Src: /src/dovecot/src/lib/test-unichar.c:162,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unichar.c:162,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unichar.c:164,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:164,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-unichar.c:167,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 124
    functionDepth: 4
    functionLinenumber: 124
    functionLinenumberEnd: 169
    functionName: test_unichar_collation
    functionSourceFile: /src/dovecot/src/lib/test-unichar.c
    functionUses: 0
    functionsReached:
    - str_c
    - uni_utf8_to_decomposed_titlecase
    - buffer_free
    - buffer_create_dynamic
    - strlen
    - buffer_set_used_size
    - test_end
    - test_assert_strcmp_idx
    - i_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unichar_collation(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-unichar.c:186,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-unichar.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-unichar.c:188,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:190,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-unichar.c:192,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-unichar.c:196,1
    - Dst: uni_gc_scanner_init
      Src: /src/dovecot/src/lib/test-unichar.c:197,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unichar.c:197,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib/test-unichar.c:199,1
    - Dst: uni_gc_scan_get
      Src: /src/dovecot/src/lib/test-unichar.c:203,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/test-unichar.c:207,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-unichar.c:208,1
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib/test-unichar.c:209,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unichar.c:212,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:212,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 171
    functionDepth: 6
    functionLinenumber: 171
    functionLinenumberEnd: 215
    functionName: test_unichar_grapheme_clusters
    functionSourceFile: /src/dovecot/src/lib/test-unichar.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - str_append_data
    - uni_gc_scan_shift
    - uni_gc_scan_at_end
    - uni_gc_scan_get
    - test_end
    - uni_gc_scanner_init
    - str_truncate
    - test_assert_strcmp_idx
    - i_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unichar_grapheme_clusters(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-unichar.c:221,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:223,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-unichar.c:231,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-unichar.c:235,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib/test-unichar.c:236,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:237,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib/test-unichar.c:237,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:238,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib/test-unichar.c:238,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:238,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib/test-unichar.c:238,1
    - Dst: str_data
      Src: /src/dovecot/src/lib/test-unichar.c:238,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:239,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib/test-unichar.c:242,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:242,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:246,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib/test-unichar.c:246,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:246,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib/test-unichar.c:248,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:248,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-unichar.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:253,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib/test-unichar.c:253,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:253,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:254,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib/test-unichar.c:254,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-unichar.c:254,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:258,1
    - Dst: test_unichar_collation
      Src: /src/dovecot/src/lib/test-unichar.c:260,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unichar.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:263,1
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib/test-unichar.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-unichar.c:264,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib/test-unichar.c:264,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-unichar.c:265,1
    - Dst: test_unichar_uni_utf8_strlen
      Src: /src/dovecot/src/lib/test-unichar.c:267,1
    - Dst: test_unichar_uni_utf8_partial_strlen_n
      Src: /src/dovecot/src/lib/test-unichar.c:268,1
    - Dst: test_unichar_valid_unicode
      Src: /src/dovecot/src/lib/test-unichar.c:269,1
    - Dst: test_unichar_surrogates
      Src: /src/dovecot/src/lib/test-unichar.c:270,1
    - Dst: test_unichar_grapheme_clusters
      Src: /src/dovecot/src/lib/test-unichar.c:272,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 217
    functionDepth: 7
    functionLinenumber: 217
    functionLinenumberEnd: 273
    functionName: test_unichar
    functionSourceFile: /src/dovecot/src/lib/test-unichar.c
    functionUses: 0
    functionsReached:
    - str_c
    - test_unichar_grapheme_clusters
    - i_rand_limit
    - test_assert
    - t_str_new
    - uni_utf8_str_is_valid
    - uni_ucs4_to_utf8_c
    - test_end
    - test_unichar_surrogates
    - str_data
    - uni_utf8_get_char_n
    - test_unichar_uni_utf8_partial_strlen_n
    - test_unichar_uni_utf8_strlen
    - test_unichar_valid_unicode
    - test_unichar_collation
    - uni_utf8_char_bytes
    - str_truncate
    - uni_utf8_get_char
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unichar(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getegid
      Src: /src/dovecot/src/lib/eacces-error.c:19,1
    - Dst: restrict_get_groups_list
      Src: /src/dovecot/src/lib/eacces-error.c:22,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - gid
    argTypes:
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 28
    functionName: is_in_group
    functionSourceFile: /src/dovecot/src/lib/eacces-error.c
    functionUses: 1
    functionsReached:
    - restrict_get_groups_list
    - getegid
    linkageType: ''
    returnType: bool
    signature: bool is_in_group(gid_t gid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/eacces-error.c:45,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - errmsg
    - path
    - mode
    argTypes:
    - string_t*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 48
    functionName: write_eacces_error
    functionSourceFile: /src/dovecot/src/lib/eacces-error.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void write_eacces_error(string_t *errmsg, const char *path, int mode)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib/eacces-error.c:59,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:60,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/eacces-error.c:75,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/eacces-error.c:78,1
    - Dst: is_in_group
      Src: /src/dovecot/src/lib/eacces-error.c:80,1
    - Dst: write_eacces_error
      Src: /src/dovecot/src/lib/eacces-error.c:92,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:96,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:97,1
    - Dst: getgrgid
      Src: /src/dovecot/src/lib/eacces-error.c:98,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:100,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 4
    argNames:
    - path
    - access_mode
    - write_eacces
    - errmsg
    argTypes:
    - char*
    - int
    - bool
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 50
    functionDepth: 6
    functionLinenumber: 50
    functionLinenumberEnd: 104
    functionName: test_manual_access
    functionSourceFile: /src/dovecot/src/lib/eacces-error.c
    functionUses: 0
    functionsReached:
    - dec2str
    - getgrgid
    - str_printfa
    - geteuid
    - i_unreached
    - stat
    - write_eacces_error
    - is_in_group
    linkageType: ''
    returnType: int
    signature: "int test_manual_access(const char *path, int access_mode, bool write_eacces,\n\t\t
      \  string_t *errmsg)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: getuid
      Src: /src/dovecot/src/lib/eacces-error.c:110,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/eacces-error.c:110,1
    - Dst: access
      Src: /src/dovecot/src/lib/eacces-error.c:111,1
    - Dst: write_eacces_error
      Src: /src/dovecot/src/lib/eacces-error.c:114,1
    - Dst: test_manual_access
      Src: /src/dovecot/src/lib/eacces-error.c:115,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:117,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:122,1
    - Dst: stat
      Src: /src/dovecot/src/lib/eacces-error.c:132,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/eacces-error.c:132,1
    - Dst: write_eacces_error
      Src: /src/dovecot/src/lib/eacces-error.c:137,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:139,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/eacces-error.c:145,1
    - Dst: test_manual_access
      Src: /src/dovecot/src/lib/eacces-error.c:148,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - path
    - access_mode
    - errmsg
    argTypes:
    - char*
    - int
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 106
    functionDepth: 8
    functionLinenumber: 106
    functionLinenumberEnd: 149
    functionName: test_access
    functionSourceFile: /src/dovecot/src/lib/eacces-error.c
    functionUses: 0
    functionsReached:
    - access
    - geteuid
    - str_printfa
    - i_unreached
    - getuid
    - test_manual_access
    - stat
    - write_eacces_error
    - str_append
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int test_access(const char *path, int access_mode, string_t *errmsg)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/eacces-error.c:163,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:164,1
    - Dst: t_get_working_dir
      Src: /src/dovecot/src/lib/eacces-error.c:167,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/eacces-error.c:168,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:169,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:171,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/eacces-error.c:172,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:175,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:176,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/eacces-error.c:176,1
    - Dst: i_getpwuid
      Src: /src/dovecot/src/lib/eacces-error.c:178,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/eacces-error.c:178,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:180,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:183,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/eacces-error.c:186,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:187,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:191,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:191,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/eacces-error.c:191,1
    - Dst: i_getgrgid
      Src: /src/dovecot/src/lib/eacces-error.c:192,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/eacces-error.c:192,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:194,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:197,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/eacces-error.c:200,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:201,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:206,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/eacces-error.c:207,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/eacces-error.c:209,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/eacces-error.c:213,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib/eacces-error.c:214,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/eacces-error.c:217,1
    - Dst: stat
      Src: /src/dovecot/src/lib/eacces-error.c:218,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/eacces-error.c:221,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/eacces-error.c:224,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:229,1
    - Dst: test_access
      Src: /src/dovecot/src/lib/eacces-error.c:237,1
    - Dst: test_access
      Src: /src/dovecot/src/lib/eacces-error.c:240,1
    - Dst: test_access
      Src: /src/dovecot/src/lib/eacces-error.c:244,1
    - Dst: test_access
      Src: /src/dovecot/src/lib/eacces-error.c:245,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:252,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/eacces-error.c:258,1
    - Dst: i_getpwuid
      Src: /src/dovecot/src/lib/eacces-error.c:259,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/eacces-error.c:260,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:261,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:262,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:264,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:265,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:265,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:270,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/eacces-error.c:272,1
    - Dst: i_getgrgid
      Src: /src/dovecot/src/lib/eacces-error.c:273,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/eacces-error.c:274,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:275,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:276,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/eacces-error.c:279,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/eacces-error.c:281,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 101
    argCount: 3
    argNames:
    - func
    - path
    - creating
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 151
    functionDepth: 9
    functionLinenumber: 151
    functionLinenumberEnd: 282
    functionName: eacces_error_get_full
    functionSourceFile: /src/dovecot/src/lib/eacces-error.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - test_access
    - stat
    - i_getpwuid
    - t_strdup
    - t_str_new
    - str_append_c
    - i_getgrgid
    - geteuid
    - t_get_working_dir
    - dec2str
    - strcmp
    - i_error
    - strrchr
    - getegid
    - t_strdup_until
    - str_append
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: 'char *

      eacces_error_get_full(const char *func, const char *path, bool creating)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eacces_error_get_full
      Src: /src/dovecot/src/lib/eacces-error.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func
    - path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 284
    functionDepth: 10
    functionLinenumber: 284
    functionLinenumberEnd: 287
    functionName: eacces_error_get
    functionSourceFile: /src/dovecot/src/lib/eacces-error.c
    functionUses: 21
    functionsReached:
    - eacces_error_get_full
    linkageType: ''
    returnType: char
    signature: char *eacces_error_get(const char *func, const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eacces_error_get_full
      Src: /src/dovecot/src/lib/eacces-error.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - func
    - path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 289
    functionDepth: 10
    functionLinenumber: 289
    functionLinenumberEnd: 292
    functionName: eacces_error_get_creating
    functionSourceFile: /src/dovecot/src/lib/eacces-error.c
    functionUses: 8
    functionsReached:
    - eacces_error_get_full
    linkageType: ''
    returnType: char
    signature: char *eacces_error_get_creating(const char *func, const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/eacces-error.c:301,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:303,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:303,1
    - Dst: getgrgid
      Src: /src/dovecot/src/lib/eacces-error.c:304,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:306,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:308,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/eacces-error.c:309,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/eacces-error.c:309,1
    - Dst: getgrgid
      Src: /src/dovecot/src/lib/eacces-error.c:310,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/eacces-error.c:310,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:312,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/eacces-error.c:314,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/eacces-error.c:315,1
    - Dst: DOC_LINK
      Src: /src/dovecot/src/lib/eacces-error.c:316,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/eacces-error.c:318,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - func
    - path
    - gid
    - gid_origin
    argTypes:
    - char*
    - char*
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 294
    functionDepth: 6
    functionLinenumber: 294
    functionLinenumberEnd: 319
    functionName: eperm_error_get_chgrp
    functionSourceFile: /src/dovecot/src/lib/eacces-error.c
    functionUses: 13
    functionsReached:
    - dec2str
    - getgrgid
    - t_str_new
    - str_printfa
    - str_c
    - DOC_LINK
    - getegid
    - str_append
    linkageType: ''
    returnType: char
    signature: "char *eperm_error_get_chgrp(const char *func, const char *path,\n\t\t\t\t
      \ gid_t gid, const char *gid_origin)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:45,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:46,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:47,1
    - Dst: t_getcwd_noalloc
      Src: /src/dovecot/src/lib/path-util.c:51,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/path-util.c:53,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:54,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/path-util.c:58,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:84,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:92,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/path-util.c:95,1
    - Dst: t_buffer_reget
      Src: /src/dovecot/src/lib/path-util.c:96,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:101,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:103,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:108,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:109,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/path-util.c:110,1
    - Dst: lstat
      Src: /src/dovecot/src/lib/path-util.c:117,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/path-util.c:118,1
    - Dst: S_ISLNK
      Src: /src/dovecot/src/lib/path-util.c:122,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/path-util.c:125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:143,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/path-util.c:146,1
    - Dst: t_buffer_reget
      Src: /src/dovecot/src/lib/path-util.c:148,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:155,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/path-util.c:156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:163,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:164,1
    - Dst: readlink
      Src: /src/dovecot/src/lib/path-util.c:167,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/path-util.c:168,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:190,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/path-util.c:194,1
    - Dst: t_buffer_reget
      Src: /src/dovecot/src/lib/path-util.c:196,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:202,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:204,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:206,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/path-util.c:207,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:209,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/path-util.c:210,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:222,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib/path-util.c:230,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/path-util.c:233,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:241,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:242,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/path-util.c:249,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 142
    argCount: 4
    argNames:
    - path
    - resolve_links
    - npath_r
    - error_r
    argTypes:
    - char*
    - bool
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 36
    functionDepth: 11
    functionLinenumber: 36
    functionLinenumberEnd: 252
    functionName: path_normalize
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 0
    functionsReached:
    - memcpy
    - readlink
    - t_buffer_get
    - memmove
    - strlen
    - S_ISLNK
    - t_getcwd_noalloc
    - t_strdup_printf
    - nearest_power
    - S_ISDIR
    - t_buffer_alloc
    - i_assert
    - t_buffer_reget
    - lstat
    linkageType: ''
    returnType: int
    signature: "int path_normalize(const char *path, bool resolve_links,\n\t\t\t  const
      char **npath_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: path_normalize
      Src: /src/dovecot/src/lib/path-util.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - path
    - npath_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 254
    functionDepth: 12
    functionLinenumber: 254
    functionLinenumberEnd: 257
    functionName: t_normpath
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 1
    functionsReached:
    - path_normalize
    linkageType: ''
    returnType: int
    signature: int t_normpath(const char *path, const char **npath_r, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:262,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:263,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:264,1
    - Dst: t_normpath
      Src: /src/dovecot/src/lib/path-util.c:267,1
    - Dst: t_normpath
      Src: /src/dovecot/src/lib/path-util.c:269,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/path-util.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - path
    - root
    - npath_r
    - error_r
    argTypes:
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 259
    functionDepth: 13
    functionLinenumber: 259
    functionLinenumberEnd: 270
    functionName: t_normpath_to
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 0
    functionsReached:
    - t_normpath
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int t_normpath_to(const char *path, const char *root, const char **npath_r,\n\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: path_normalize
      Src: /src/dovecot/src/lib/path-util.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - path
    - npath_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 272
    functionDepth: 12
    functionLinenumber: 272
    functionLinenumberEnd: 275
    functionName: t_realpath
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 1
    functionsReached:
    - path_normalize
    linkageType: ''
    returnType: int
    signature: int t_realpath(const char *path, const char **npath_r, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:280,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:281,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:282,1
    - Dst: t_realpath
      Src: /src/dovecot/src/lib/path-util.c:285,1
    - Dst: t_realpath
      Src: /src/dovecot/src/lib/path-util.c:287,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/path-util.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - path
    - root
    - npath_r
    - error_r
    argTypes:
    - char*
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 277
    functionDepth: 13
    functionLinenumber: 277
    functionLinenumberEnd: 288
    functionName: t_realpath_to
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - i_assert
    - t_realpath
    linkageType: ''
    returnType: int
    signature: "int t_realpath_to(const char *path, const char *root, const char **npath_r,\n\t\t
      \ const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:292,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:293,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:294,1
    - Dst: t_get_working_dir
      Src: /src/dovecot/src/lib/path-util.c:302,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/path-util.c:303,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/path-util.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - path
    - abspath_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 290
    functionDepth: 8
    functionLinenumber: 290
    functionLinenumberEnd: 309
    functionName: t_abspath
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 6
    functionsReached:
    - t_strconcat
    - i_assert
    - t_get_working_dir
    linkageType: ''
    returnType: int
    signature: int t_abspath(const char *path, const char **abspath_r, const char
      **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:313,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:314,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/path-util.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - path
    - root
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 311
    functionDepth: 8
    functionLinenumber: 311
    functionLinenumberEnd: 320
    functionName: t_abspath_to
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 0
    functionsReached:
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: char *t_abspath_to(const char *path, const char *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:326,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:327,1
    - Dst: t_getcwd_noalloc
      Src: /src/dovecot/src/lib/path-util.c:328,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/path-util.c:331,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/path-util.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dir_r
    - error_r
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 322
    functionDepth: 5
    functionLinenumber: 322
    functionLinenumberEnd: 334
    functionName: t_get_working_dir
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 4
    functionsReached:
    - strlen
    - i_assert
    - t_getcwd_noalloc
    - t_buffer_alloc
    linkageType: ''
    returnType: int
    signature: int t_get_working_dir(const char **dir_r, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/path-util.c:338,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/path-util.c:345,1
    - Dst: readlink
      Src: /src/dovecot/src/lib/path-util.c:346,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/path-util.c:347,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/path-util.c:348,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/path-util.c:351,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/path-util.c:356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - path
    - dest_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 336
    functionDepth: 11
    functionLinenumber: 336
    functionLinenumberEnd: 359
    functionName: t_readlink
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 6
    functionsReached:
    - readlink
    - t_buffer_get
    - t_strdup_printf
    - nearest_power
    - t_buffer_alloc
    - i_assert
    linkageType: ''
    returnType: int
    signature: int t_readlink(const char *path, const char **dest_r, const char **error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/path-util.c:369,1
    - Dst: t_abspath
      Src: /src/dovecot/src/lib/path-util.c:372,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/path-util.c:373,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/path-util.c:378,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/path-util.c:380,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/path-util.c:381,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/path-util.c:383,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/path-util.c:384,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/path-util.c:385,1
    - Dst: access
      Src: /src/dovecot/src/lib/path-util.c:386,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/path-util.c:386,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/path-util.c:387,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/path-util.c:390,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - binpath
    - error_r
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 361
    functionDepth: 11
    functionLinenumber: 361
    functionLinenumberEnd: 398
    functionName: t_binary_abspath
    functionSourceFile: /src/dovecot/src/lib/path-util.c
    functionUses: 1
    functionsReached:
    - strchr
    - t_str_new
    - access
    - str_append_c
    - str_c
    - t_strdup_printf
    - getenv
    - t_strsplit
    - str_truncate
    - str_append
    - t_abspath
    linkageType: ''
    returnType: bool
    signature: bool t_binary_abspath(const char **binpath, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - block
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: POOL_BLOCK_DATA
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POOL_BLOCK_DATA(block)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: POOL_BLOCK_DATA
      Src: /src/dovecot/src/lib/mempool-alloconly.c:197,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-alloconly.c:204,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:205,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:206,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-alloconly.c:211,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-alloconly.c:216,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/mempool-alloconly.c:221,1
    - Dst: check_sentries
      Src: /src/dovecot/src/lib/mempool-alloconly.c:224,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - block
    argTypes:
    - struct pool_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 225
    functionName: check_sentries
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 1
    functionsReached:
    - i_panic
    - i_unreached
    - POOL_BLOCK_DATA
    - MEM_ALIGN
    - check_sentries
    linkageType: ''
    returnType: void
    signature: void check_sentries(struct pool_block *block)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:232,1
    - Dst: COMPILE_ERROR_IF_TRUE
      Src: /src/dovecot/src/lib/mempool-alloconly.c:234,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:238,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/mempool-alloconly.c:238,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/mempool-alloconly.c:243,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/mempool-alloconly.c:248,1
    - Dst: block_alloc
      Src: /src/dovecot/src/lib/mempool-alloconly.c:249,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/mempool-alloconly.c:252,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/mempool-alloconly.c:255,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/mempool-alloconly.c:256,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/mempool-alloconly.c:258,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-alloconly.c:265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - size
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 268
    functionName: pool_alloconly_create
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 334
    functionsReached:
    - i_zero
    - block_alloc
    - p_strdup
    - p_new
    - str_begins
    - strlen
    - getenv
    - nearest_power
    - COMPILE_ERROR_IF_TRUE
    - MEM_ALIGN
    - i_assert
    linkageType: ''
    returnType: pool_t
    signature: pool_t pool_alloconly_create(const char *name ATTR_UNUSED, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/mempool-alloconly.c:275,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - name
    - size
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 279
    functionName: pool_alloconly_create_clean
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 6
    functionsReached:
    - pool_alloconly_create
    - container_of
    linkageType: ''
    returnType: pool_t
    signature: pool_t pool_alloconly_create_clean(const char *name, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/mempool-alloconly.c:285,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/mempool-alloconly.c:288,1
    - Dst: free
      Src: /src/dovecot/src/lib/mempool-alloconly.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - block
    argTypes:
    - struct alloconly_pool*
    - struct pool_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 293
    functionName: pool_alloconly_free_block
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - free
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void pool_alloconly_free_block(struct alloconly_pool *apool ATTR_UNUSED,\n\t\t\t\t
      \     struct pool_block *block)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_free_block
      Src: /src/dovecot/src/lib/mempool-alloconly.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - apool
    argTypes:
    - struct alloconly_pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 308
    functionName: pool_alloconly_free_blocks_until_last
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_free_block
    linkageType: ''
    returnType: void
    signature: void pool_alloconly_free_blocks_until_last(struct alloconly_pool *apool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_free_blocks_until_last
      Src: /src/dovecot/src/lib/mempool-alloconly.c:313,1
    - Dst: pool_alloconly_free_block
      Src: /src/dovecot/src/lib/mempool-alloconly.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - apool
    argTypes:
    - struct alloconly_pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 310
    functionDepth: 3
    functionLinenumber: 310
    functionLinenumberEnd: 317
    functionName: pool_alloconly_destroy
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_free_block
    - pool_alloconly_free_blocks_until_last
    linkageType: ''
    returnType: void
    signature: void pool_alloconly_destroy(struct alloconly_pool *apool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 329
    functionName: pool_alloconly_get_name
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: char
    signature: char *pool_alloconly_get_name(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 337
    functionName: pool_alloconly_ref
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: void
    signature: void pool_alloconly_ref(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:342,1
    - Dst: pool_external_refs_unref
      Src: /src/dovecot/src/lib/mempool-alloconly.c:351,1
    - Dst: pool_alloconly_destroy
      Src: /src/dovecot/src/lib/mempool-alloconly.c:352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 339
    functionDepth: 4
    functionLinenumber: 339
    functionLinenumberEnd: 353
    functionName: pool_alloconly_unref
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - container_of
    - pool_external_refs_unref
    - pool_alloconly_destroy
    linkageType: ''
    returnType: void
    signature: void pool_alloconly_unref(pool_t *pool)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-alloconly.c:359,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-alloconly.c:360,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:368,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/mempool-alloconly.c:369,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:371,1
    - Dst: t_buffer_alloc_last_full
      Src: /src/dovecot/src/lib/mempool-alloconly.c:377,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib/mempool-alloconly.c:378,1
    - Dst: calloc
      Src: /src/dovecot/src/lib/mempool-alloconly.c:384,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool-alloconly.c:385,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/mempool-alloconly.c:386,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - apool
    - size
    argTypes:
    - struct alloconly_pool*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 355
    functionDepth: 5
    functionLinenumber: 355
    functionLinenumberEnd: 394
    functionName: block_alloc
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 3
    functionsReached:
    - I_MIN
    - i_fatal_status
    - calloc
    - unlikely
    - nearest_power
    - t_buffer_alloc_last_full
    - i_assert
    - i_debug
    linkageType: ''
    returnType: void
    signature: void block_alloc(struct alloconly_pool *apool, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:399,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:404,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:406,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:406,1
    - Dst: block_alloc
      Src: /src/dovecot/src/lib/mempool-alloconly.c:411,1
    - Dst: POOL_BLOCK_DATA
      Src: /src/dovecot/src/lib/mempool-alloconly.c:414,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/mempool-alloconly.c:420,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/mempool-alloconly.c:421,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:421,1
    - Dst: memset
      Src: /src/dovecot/src/lib/mempool-alloconly.c:423,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/mempool-alloconly.c:423,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - pool
    - size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 396
    functionDepth: 6
    functionLinenumber: 396
    functionLinenumberEnd: 427
    functionName: pool_alloconly_malloc
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - memcpy
    - block_alloc
    - container_of
    - PTR_OFFSET
    - POOL_BLOCK_DATA
    - MEM_ALIGN
    - memset
    linkageType: ''
    returnType: void
    signature: void *pool_alloconly_malloc(pool_t pool, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:432,1
    - Dst: POOL_BLOCK_DATA
      Src: /src/dovecot/src/lib/mempool-alloconly.c:435,1
    - Dst: memset
      Src: /src/dovecot/src/lib/mempool-alloconly.c:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pool
    - mem
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 442
    functionName: pool_alloconly_free
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - memset
    - container_of
    - POOL_BLOCK_DATA
    linkageType: ''
    returnType: void
    signature: void pool_alloconly_free(pool_t pool, void *mem)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: POOL_BLOCK_DATA
      Src: /src/dovecot/src/lib/mempool-alloconly.c:447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - apool
    - mem
    - size
    argTypes:
    - struct alloconly_pool*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 461
    functionName: pool_alloconly_try_grow
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - POOL_BLOCK_DATA
    linkageType: ''
    returnType: bool
    signature: bool pool_alloconly_try_grow(struct alloconly_pool *apool, void *mem,
      size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:467,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-alloconly.c:470,1
    - Dst: MEM_ALIGN
      Src: /src/dovecot/src/lib/mempool-alloconly.c:475,1
    - Dst: pool_alloconly_try_grow
      Src: /src/dovecot/src/lib/mempool-alloconly.c:478,1
    - Dst: pool_alloconly_malloc
      Src: /src/dovecot/src/lib/mempool-alloconly.c:480,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/mempool-alloconly.c:482,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - pool
    - mem
    - old_size
    - new_size
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 463
    functionDepth: 7
    functionLinenumber: 463
    functionLinenumberEnd: 487
    functionName: pool_alloconly_realloc
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pool_alloconly_try_grow
    - container_of
    - pool_alloconly_malloc
    - MEM_ALIGN
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void *pool_alloconly_realloc(pool_t pool, void *mem,\n\t\t\t\t    size_t
      old_size, size_t new_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:492,1
    - Dst: check_sentries
      Src: /src/dovecot/src/lib/mempool-alloconly.c:496,1
    - Dst: pool_alloconly_free_blocks_until_last
      Src: /src/dovecot/src/lib/mempool-alloconly.c:499,1
    - Dst: memset
      Src: /src/dovecot/src/lib/mempool-alloconly.c:508,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/mempool-alloconly.c:508,1
    - Dst: POOL_BLOCK_DATA
      Src: /src/dovecot/src/lib/mempool-alloconly.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 512
    functionName: pool_alloconly_clear
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - container_of
    - POOL_BLOCK_DATA
    - check_sentries
    - memset
    - pool_alloconly_free_blocks_until_last
    linkageType: ''
    returnType: void
    signature: void pool_alloconly_clear(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 520
    functionName: pool_alloconly_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t pool_alloconly_get_max_easy_alloc_size(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:525,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-alloconly.c:529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 534
    functionName: pool_alloconly_get_total_used_size
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t pool_alloconly_get_total_used_size(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/mempool-alloconly.c:539,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-alloconly.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 548
    functionName: pool_alloconly_get_total_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t pool_alloconly_get_total_alloc_size(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: i_stream_create_from_buffer
    functionSourceFile: /src/dovecot/src/lib/istream.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_stream_create_from_buffer(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: i_stream_create_from_string
    functionSourceFile: /src/dovecot/src/lib/istream.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_stream_create_from_string(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: i_stream_create_copy_from_buffer
    functionSourceFile: /src/dovecot/src/lib/istream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_stream_create_copy_from_buffer(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: i_stream_create_copy_from_string
    functionSourceFile: /src/dovecot/src/lib/istream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_stream_create_copy_from_string(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - stream
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: i_stream_add_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/istream.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_stream_add_destroy_callback(stream, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.h:229,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib/istream.h:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - stream
    - data_r
    - size_r
    - wanted
    argTypes:
    - struct istream*
    - unsigned char**
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 225
    functionDepth: 5
    functionLinenumber: 225
    functionLinenumberEnd: 231
    functionName: i_stream_read_bytes
    functionSourceFile: /src/dovecot/src/lib/istream.h
    functionUses: 39
    functionsReached:
    - i_assert
    - i_stream_read_data
    linkageType: ''
    returnType: int
    signature: "int i_stream_read_bytes(struct istream *stream, const unsigned char
      **data_r,\n\t\t\tsize_t *size_r, size_t wanted)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib/istream.h:237,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream.h:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - data_r
    - size_r
    argTypes:
    - struct istream*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 233
    functionDepth: 6
    functionLinenumber: 233
    functionLinenumberEnd: 240
    functionName: i_stream_read_more
    functionSourceFile: /src/dovecot/src/lib/istream.h
    functionUses: 75
    functionsReached:
    - i_assert
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: "int i_stream_read_more(struct istream *stream, const unsigned char
      **data_r,\n\t\t   size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-multiplex.c:49,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ostream-multiplex.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mstream
    - cid
    argTypes:
    - struct multiplex_ostream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 55
    functionName: get_channel
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 2
    functionsReached:
    - i_assert
    - array_foreach_elem
    linkageType: ''
    returnType: struct multiplex_ochannel
    signature: 'struct multiplex_ochannel *

      get_channel(struct multiplex_ostream *mstream, uint8_t cid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-multiplex.c:62,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib/ostream-multiplex.c:64,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ostream-multiplex.c:65,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream-multiplex.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 72
    functionName: propagate_error
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 3
    functionsReached:
    - o_stream_get_error
    - i_assert
    - io_stream_set_error
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void propagate_error(struct multiplex_ostream *mstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ostream-multiplex.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 89
    functionName: get_next_channel
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    linkageType: ''
    returnType: struct multiplex_ochannel
    signature: struct multiplex_ochannel *get_next_channel(struct multiplex_ostream
      *mstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/ostream-multiplex.c:96,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-multiplex.c:98,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-multiplex.c:98,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib/ostream-multiplex.c:100,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-multiplex.c:101,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib/ostream-multiplex.c:102,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream-multiplex.c:109,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/ostream-multiplex.c:109,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/ostream-multiplex.c:110,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-multiplex.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - mstream
    - channel
    argTypes:
    - struct multiplex_ostream*
    - struct multiplex_ochannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 115
    functionName: o_stream_multiplex_send_packet
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_assert
    - o_stream_get_buffer_avail_size
    - I_MIN
    - o_stream_sendv
    - o_stream_cork
    - propagate_error
    - o_stream_is_corked
    - N_ELEMENTS
    - cpu32_to_be
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_multiplex_send_packet(struct multiplex_ostream *mstream,\n\t\t\t
      \      struct multiplex_ochannel *channel)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/ostream-multiplex.c:122,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/ostream-multiplex.c:125,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/ostream-multiplex.c:127,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/ostream-multiplex.c:141,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/ostream-multiplex.c:146,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/ostream-multiplex.c:149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-multiplex.c:151,1
    - Dst: memchr
      Src: /src/dovecot/src/lib/ostream-multiplex.c:160,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib/ostream-multiplex.c:176,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-multiplex.c:177,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream-multiplex.c:183,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/ostream-multiplex.c:183,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/ostream-multiplex.c:184,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/ostream-multiplex.c:189,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-multiplex.c:197,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/ostream-multiplex.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-multiplex.c:209,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 2
    argNames:
    - mstream
    - channel
    argTypes:
    - struct multiplex_ostream*
    - struct multiplex_ochannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 117
    functionDepth: 5
    functionLinenumber: 117
    functionLinenumberEnd: 211
    functionName: o_stream_multiplex_send_stream
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - o_stream_sendv
    - o_stream_cork
    - memchr
    - buffer_set_used_size
    - o_stream_is_corked
    - memcmp
    - propagate_error
    - buffer_delete
    - buffer_append_c
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_multiplex_send_stream(struct multiplex_ostream *mstream,\n\t\t\t
      \      struct multiplex_ochannel *channel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib/ostream-multiplex.c:219,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/ostream-multiplex.c:223,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-multiplex.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 229
    functionName: o_stream_multiplex_send_header
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_assert
    - o_stream_send
    - propagate_error
    linkageType: ''
    returnType: int
    signature: int o_stream_multiplex_send_header(struct multiplex_ostream *mstream)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_multiplex_send_header
      Src: /src/dovecot/src/lib/ostream-multiplex.c:239,1
    - Dst: get_next_channel
      Src: /src/dovecot/src/lib/ostream-multiplex.c:243,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/ostream-multiplex.c:246,1
    - Dst: o_stream_multiplex_send_packet
      Src: /src/dovecot/src/lib/ostream-multiplex.c:253,1
    - Dst: o_stream_multiplex_send_stream
      Src: /src/dovecot/src/lib/ostream-multiplex.c:257,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/ostream-multiplex.c:264,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib/ostream-multiplex.c:267,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/ostream-multiplex.c:268,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 231
    functionDepth: 6
    functionLinenumber: 231
    functionLinenumberEnd: 270
    functionName: o_stream_multiplex_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - o_stream_multiplex_send_stream
    - o_stream_get_buffer_avail_size
    - o_stream_uncork
    - get_next_channel
    - buffer_delete
    - o_stream_multiplex_send_packet
    - o_stream_multiplex_send_header
    - o_stream_is_corked
    linkageType: ''
    returnType: int
    signature: int o_stream_multiplex_sendv(struct multiplex_ostream *mstream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream-multiplex.c:274,1
    - Dst: o_stream_multiplex_sendv
      Src: /src/dovecot/src/lib/ostream-multiplex.c:276,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ostream-multiplex.c:286,1
    - Dst: struct multiplex_ochannel*::ostream::callback
      Src: /src/dovecot/src/lib/ostream-multiplex.c:288,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 272
    functionDepth: 7
    functionLinenumber: 272
    functionLinenumberEnd: 297
    functionName: o_stream_multiplex_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - o_stream_multiplex_sendv
    - struct multiplex_ochannel*::ostream::callback
    - array_foreach_elem
    linkageType: ''
    returnType: int
    signature: int o_stream_multiplex_flush(struct multiplex_ostream *mstream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-multiplex.c:303,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream-multiplex.c:307,1
    - Dst: propagate_error
      Src: /src/dovecot/src/lib/ostream-multiplex.c:309,1
    - Dst: o_stream_multiplex_sendv
      Src: /src/dovecot/src/lib/ostream-multiplex.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 299
    functionDepth: 7
    functionLinenumber: 299
    functionLinenumberEnd: 320
    functionName: o_stream_multiplex_ochannel_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - o_stream_multiplex_sendv
    - container_of
    - propagate_error
    linkageType: ''
    returnType: int
    signature: int o_stream_multiplex_ochannel_flush(struct ostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_multiplex_ochannel_flush
      Src: /src/dovecot/src/lib/ostream-multiplex.c:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 322
    functionDepth: 8
    functionLinenumber: 322
    functionLinenumberEnd: 329
    functionName: o_stream_multiplex_ochannel_cork
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - o_stream_multiplex_ochannel_flush
    linkageType: ''
    returnType: void
    signature: void o_stream_multiplex_ochannel_cork(struct ostream_private *stream,
      bool set)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-multiplex.c:336,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/ostream-multiplex.c:337,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-multiplex.c:338,1
    - Dst: o_stream_multiplex_sendv
      Src: /src/dovecot/src/lib/ostream-multiplex.c:349,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/ostream-multiplex.c:351,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/ostream-multiplex.c:363,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-multiplex.c:364,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-multiplex.c:365,1
    - Dst: o_stream_multiplex_sendv
      Src: /src/dovecot/src/lib/ostream-multiplex.c:374,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 331
    functionDepth: 7
    functionLinenumber: 331
    functionLinenumberEnd: 377
    functionName: o_stream_multiplex_ochannel_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - container_of
    - o_stream_get_buffer_avail_size
    - I_MIN
    - o_stream_multiplex_sendv
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_multiplex_ochannel_sendv(struct ostream_private *stream,\n\t\t\t\t
      const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - callback
    - context
    argTypes:
    - struct ostream_private*
    - stream_flush_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 387
    functionName: o_stream_multiplex_ochannel_set_flush_callback
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void o_stream_multiplex_ochannel_set_flush_callback(struct ostream_private
      *stream,\n\t\t\t\t\t       stream_flush_callback_t *callback,\n\t\t\t\t\t       void
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-multiplex.c:393,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream-multiplex.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 397
    functionName: o_stream_multiplex_ochannel_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_multiplex_ochannel_get_buffer_used_size(const struct
      ostream_private *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-multiplex.c:403,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-multiplex.c:405,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/ostream-multiplex.c:406,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ostream-multiplex.c:424,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ostream-multiplex.c:428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 399
    functionDepth: 3
    functionLinenumber: 399
    functionLinenumberEnd: 429
    functionName: o_stream_multiplex_ochannel_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - container_of
    - o_stream_get_buffer_avail_size
    - i_unreached
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_multiplex_ochannel_get_buffer_avail_size(const struct
      ostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-multiplex.c:436,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ostream-multiplex.c:440,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib/ostream-multiplex.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 445
    functionName: o_stream_multiplex_ochannel_close
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_close
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void o_stream_multiplex_ochannel_close(struct iostream_private *stream,
      bool close_parent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ostream-multiplex.c:451,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/ostream-multiplex.c:457,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-multiplex.c:461,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/ostream-multiplex.c:462,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/ostream-multiplex.c:463,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ostream-multiplex.c:464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - mstream
    argTypes:
    - struct multiplex_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 447
    functionDepth: 2
    functionLinenumber: 447
    functionLinenumberEnd: 465
    functionName: o_stream_multiplex_try_destroy
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - array_foreach_elem
    - o_stream_unref
    - o_stream_set_flush_callback
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void o_stream_multiplex_try_destroy(struct multiplex_ostream *mstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-multiplex.c:471,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-multiplex.c:472,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/ostream-multiplex.c:474,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/ostream-multiplex.c:476,1
    - Dst: o_stream_multiplex_try_destroy
      Src: /src/dovecot/src/lib/ostream-multiplex.c:482,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 467
    functionDepth: 3
    functionLinenumber: 467
    functionLinenumberEnd: 483
    functionName: o_stream_multiplex_ochannel_destroy
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_unref
    - o_stream_multiplex_try_destroy
    - array_foreach_modifiable
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void o_stream_multiplex_ochannel_destroy(struct iostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-multiplex.c:488,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/ostream-multiplex.c:490,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/ostream-multiplex.c:503,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/ostream-multiplex.c:504,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-multiplex.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - mstream
    - cid
    argTypes:
    - struct multiplex_ostream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 485
    functionDepth: 3
    functionLinenumber: 485
    functionLinenumberEnd: 513
    functionName: o_stream_add_channel_real
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - o_stream_get_fd
    - buffer_create_dynamic
    - o_stream_create
    - i_new
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_add_channel_real(struct multiplex_ostream *mstream, uint8_t cid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-multiplex.c:518,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-multiplex.c:520,1
    - Dst: get_channel
      Src: /src/dovecot/src/lib/ostream-multiplex.c:520,1
    - Dst: o_stream_add_channel_real
      Src: /src/dovecot/src/lib/ostream-multiplex.c:522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - cid
    argTypes:
    - struct ostream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 515
    functionDepth: 4
    functionLinenumber: 515
    functionLinenumberEnd: 523
    functionName: o_stream_multiplex_add_channel
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 10
    functionsReached:
    - i_assert
    - container_of
    - get_channel
    - o_stream_add_channel_real
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_multiplex_add_channel(struct ostream *stream,
      uint8_t cid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-multiplex.c:530,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/ostream-multiplex.c:544,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib/ostream-multiplex.c:548,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ostream-multiplex.c:549,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/ostream-multiplex.c:550,1
    - Dst: o_stream_add_channel_real
      Src: /src/dovecot/src/lib/ostream-multiplex.c:552,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - parent
    - bufsize
    - format
    argTypes:
    - struct ostream*
    - size_t
    - enum ostream_multiplex_format
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 525
    functionDepth: 4
    functionLinenumber: 525
    functionLinenumberEnd: 553
    functionName: o_stream_create_multiplex
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 13
    functionsReached:
    - i_array_init
    - buffer_create_dynamic
    - o_stream_add_channel_real
    - o_stream_ref
    - i_new
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *o_stream_create_multiplex(struct ostream *parent,
      size_t bufsize,\n\t\t\t\t\t  enum ostream_multiplex_format format)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-multiplex.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 561
    functionName: o_stream_multiplex_get_channel_id
    functionSourceFile: /src/dovecot/src/lib/ostream-multiplex.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t o_stream_multiplex_get_channel_id(struct ostream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-rawlog.c:17,1
    - Dst: iostream_rawlog_close
      Src: /src/dovecot/src/lib/ostream-rawlog.c:19,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib/ostream-rawlog.c:21,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 22
    functionName: o_stream_rawlog_close
    functionSourceFile: /src/dovecot/src/lib/ostream-rawlog.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_close
    - iostream_rawlog_close
    linkageType: ''
    returnType: void
    signature: "void o_stream_rawlog_close(struct iostream_private *stream,\n\t\t\t\t
      \ bool close_parent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-rawlog.c:29,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream-rawlog.c:33,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib/ostream-rawlog.c:34,1
    - Dst: iostream_rawlog_write
      Src: /src/dovecot/src/lib/ostream-rawlog.c:40,1
    - Dst: iostream_rawlog_write
      Src: /src/dovecot/src/lib/ostream-rawlog.c:44,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 24
    functionDepth: 6
    functionLinenumber: 24
    functionLinenumberEnd: 52
    functionName: o_stream_rawlog_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-rawlog.c
    functionUses: 0
    functionsReached:
    - iostream_rawlog_write
    - o_stream_sendv
    - container_of
    - o_stream_copy_error_from_parent
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_rawlog_sendv(struct ostream_private *stream,\n\t\t
      \     const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-rawlog.c:57,1
    - Dst: iostream_rawlog_flush
      Src: /src/dovecot/src/lib/ostream-rawlog.c:60,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib/ostream-rawlog.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 62
    functionName: o_stream_rawlog_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-rawlog.c
    functionUses: 0
    functionsReached:
    - container_of
    - iostream_rawlog_flush
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_rawlog_flush(struct ostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-rawlog.c:71,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-rawlog.c:72,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/ostream-rawlog.c:75,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/ostream-rawlog.c:76,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/ostream-rawlog.c:78,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ostream-rawlog.c:79,1
    - Dst: o_stream_create_rawlog_from_stream
      Src: /src/dovecot/src/lib/ostream-rawlog.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - output
    - rawlog_path
    - rawlog_fd
    - flags
    argTypes:
    - struct ostream*
    - char*
    - int
    - enum iostream_rawlog_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 64
    functionDepth: 11
    functionLinenumber: 64
    functionLinenumberEnd: 81
    functionName: o_stream_create_rawlog
    functionSourceFile: /src/dovecot/src/lib/ostream-rawlog.c
    functionUses: 2
    functionsReached:
    - o_stream_create_fd
    - o_stream_create_rawlog_from_stream
    - o_stream_set_name
    - t_strdup_printf
    - o_stream_create_fd_autoclose
    - i_assert
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_rawlog(struct ostream *output, const
      char *rawlog_path,\n\t\t       int rawlog_fd, enum iostream_rawlog_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-rawlog.c:90,1
    - Dst: iostream_rawlog_init
      Src: /src/dovecot/src/lib/ostream-rawlog.c:96,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-rawlog.c:97,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/ostream-rawlog.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - output
    - rawlog_output
    - flags
    argTypes:
    - struct ostream*
    - struct ostream*
    - enum iostream_rawlog_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 99
    functionName: o_stream_create_rawlog_from_stream
    functionSourceFile: /src/dovecot/src/lib/ostream-rawlog.c
    functionUses: 2
    functionsReached:
    - o_stream_get_fd
    - o_stream_create
    - i_new
    - iostream_rawlog_init
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_rawlog_from_stream(struct ostream
      *output,\n\t\t\t\t   struct ostream *rawlog_output,\n\t\t\t\t   enum iostream_rawlog_flags
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nanosleep
      Src: /src/dovecot/src/lib/sleep.c:13,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/sleep.c:15,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ts_sleep
    - interruptible
    argTypes:
    - struct timespec*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 20
    functionName: ATTR_NOWARN_UNUSED_RESULT::sleep_timespec
    functionSourceFile: /src/dovecot/src/lib/sleep.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - nanosleep
    linkageType: ''
    returnType: bool
    signature: 'bool ATTR_NOWARN_UNUSED_RESULT

      sleep_timespec(const struct timespec *ts_sleep, bool interruptible)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep_timespec
      Src: /src/dovecot/src/lib/sleep.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - usecs
    argTypes:
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 29
    functionName: i_sleep_usecs
    functionSourceFile: /src/dovecot/src/lib/sleep.c
    functionUses: 3
    functionsReached:
    - sleep_timespec
    linkageType: ''
    returnType: void
    signature: void i_sleep_usecs(unsigned long long usecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep_timespec
      Src: /src/dovecot/src/lib/sleep.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - msecs
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 38
    functionName: i_sleep_msecs
    functionSourceFile: /src/dovecot/src/lib/sleep.c
    functionUses: 7
    functionsReached:
    - sleep_timespec
    linkageType: ''
    returnType: void
    signature: void i_sleep_msecs(unsigned int msecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep_timespec
      Src: /src/dovecot/src/lib/sleep.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - secs
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: i_sleep_secs
    functionSourceFile: /src/dovecot/src/lib/sleep.c
    functionUses: 0
    functionsReached:
    - sleep_timespec
    linkageType: ''
    returnType: void
    signature: void i_sleep_secs(time_t secs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep_timespec
      Src: /src/dovecot/src/lib/sleep.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - usecs
    argTypes:
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: i_sleep_intr_usecs
    functionSourceFile: /src/dovecot/src/lib/sleep.c
    functionUses: 0
    functionsReached:
    - sleep_timespec
    linkageType: ''
    returnType: bool
    signature: bool i_sleep_intr_usecs(unsigned long long usecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep_timespec
      Src: /src/dovecot/src/lib/sleep.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - msecs
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: i_sleep_intr_msecs
    functionSourceFile: /src/dovecot/src/lib/sleep.c
    functionUses: 3
    functionsReached:
    - sleep_timespec
    linkageType: ''
    returnType: bool
    signature: bool i_sleep_intr_msecs(unsigned int msecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep_timespec
      Src: /src/dovecot/src/lib/sleep.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - secs
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: i_sleep_intr_secs
    functionSourceFile: /src/dovecot/src/lib/sleep.c
    functionUses: 7
    functionsReached:
    - sleep_timespec
    linkageType: ''
    returnType: bool
    signature: bool i_sleep_intr_secs(time_t secs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-seekable.c:41,1
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib/istream-seekable.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 45
    functionName: i_stream_seekable_close
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_seekable_close(struct iostream_private *stream,\n\t\t\t\t
      \   bool close_parent ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-seekable.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - sstream
    argTypes:
    - struct seekable_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: unref_streams
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void unref_streams(struct seekable_istream *sstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-seekable.c:58,1
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib/istream-seekable.c:60,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/istream-seekable.c:61,1
    - Dst: unref_streams
      Src: /src/dovecot/src/lib/istream-seekable.c:62,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-seekable.c:65,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-seekable.c:66,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-seekable.c:67,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-seekable.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: i_stream_seekable_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_free_buffer
    - unref_streams
    - i_stream_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_seekable_destroy(struct iostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-seekable.c:76,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream-seekable.c:81,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream-seekable.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - max_size
    argTypes:
    - struct iostream_private*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 84
    functionName: i_stream_seekable_set_max_buffer_size
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_set_max_buffer_size
    - container_of
    linkageType: ''
    returnType: void
    signature: "void i_stream_seekable_set_max_buffer_size(struct iostream_private
      *stream,\n\t\t\t\t      size_t max_size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: struct seekable_istream*::fd_callback
      Src: /src/dovecot/src/lib/istream-seekable.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:99,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/istream-seekable.c:100,1
    - Dst: ENOSPACE
      Src: /src/dovecot/src/lib/istream-seekable.c:101,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/istream-seekable.c:102,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/istream-seekable.c:103,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/istream-seekable.c:106,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/istream-seekable.c:110,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/istream-seekable.c:111,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/istream-seekable.c:112,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-seekable.c:112,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-seekable.c:113,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-seekable.c:117,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-seekable.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:123,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:124,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/istream-seekable.c:125,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-seekable.c:127,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-seekable.c:128,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/istream-seekable.c:129,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/istream-seekable.c:137,1
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib/istream-seekable.c:140,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - sstream
    argTypes:
    - struct seekable_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 86
    functionDepth: 11
    functionLinenumber: 86
    functionLinenumberEnd: 142
    functionName: copy_to_temp_file
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - struct seekable_istream*::fd_callback
    - i_error
    - i_stream_free_buffer
    - ENOSPACE
    - write_full
    - i_close_fd
    - i_stream_set_name
    - I_MAX
    - t_strdup_printf
    - i_stream_get_data
    - i_strdup
    - i_stream_get_error
    - i_stream_create_fd_autoclose
    - i_stream_get_name
    - i_stream_set_max_buffer_size
    - i_assert
    - i_stream_read_memarea
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int copy_to_temp_file(struct seekable_istream *sstream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-seekable.c:154,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-seekable.c:156,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-seekable.c:158,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/istream-seekable.c:159,1
    - Dst: unref_streams
      Src: /src/dovecot/src/lib/istream-seekable.c:177,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-seekable.c:182,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - sstream
    argTypes:
    - struct seekable_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 144
    functionDepth: 4
    functionLinenumber: 144
    functionLinenumberEnd: 187
    functionName: read_more
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 86
    functionsReached:
    - i_stream_get_data_size
    - io_stream_set_error
    - unref_streams
    - i_stream_get_error
    - i_stream_get_name
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t read_more(struct seekable_istream *sstream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:198,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:199,1
    - Dst: read_from_buffer
      Src: /src/dovecot/src/lib/istream-seekable.c:205,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:209,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-seekable.c:211,1
    - Dst: read_more
      Src: /src/dovecot/src/lib/istream-seekable.c:214,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-seekable.c:220,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:221,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-seekable.c:227,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-seekable.c:234,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-seekable.c:237,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:241,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - sstream
    - ret_r
    argTypes:
    - struct seekable_istream*
    - ssize_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 189
    functionDepth: 5
    functionLinenumber: 189
    functionLinenumberEnd: 243
    functionName: read_from_buffer
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 1
    functionsReached:
    - memcpy
    - i_stream_get_data_size
    - read_more
    - i_stream_try_alloc
    - i_stream_get_data
    - read_from_buffer
    - i_stream_skip
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool read_from_buffer(struct seekable_istream *sstream, ssize_t *ret_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:252,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:253,1
    - Dst: i_stream_alloc
      Src: /src/dovecot/src/lib/istream-seekable.c:257,1
    - Dst: pread_full
      Src: /src/dovecot/src/lib/istream-seekable.c:260,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-seekable.c:263,1
    - Dst: strerror
      Src: /src/dovecot/src/lib/istream-seekable.c:265,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/istream-seekable.c:269,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/istream-seekable.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - sstream
    argTypes:
    - struct seekable_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 245
    functionDepth: 6
    functionLinenumber: 245
    functionLinenumberEnd: 274
    functionName: i_stream_seekable_write_failed
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - strerror
    - i_free_and_null
    - pread_full
    - i_stream_alloc
    - i_assert
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: int i_stream_seekable_write_failed(struct seekable_istream *sstream)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-seekable.c:279,1
    - Dst: read_from_buffer
      Src: /src/dovecot/src/lib/istream-seekable.c:285,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-seekable.c:292,1
    - Dst: copy_to_temp_file
      Src: /src/dovecot/src/lib/istream-seekable.c:300,1
    - Dst: read_from_buffer
      Src: /src/dovecot/src/lib/istream-seekable.c:302,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/istream-seekable.c:303,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:306,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/istream-seekable.c:309,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:313,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-seekable.c:317,1
    - Dst: read_more
      Src: /src/dovecot/src/lib/istream-seekable.c:318,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-seekable.c:324,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:325,1
    - Dst: write
      Src: /src/dovecot/src/lib/istream-seekable.c:326,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:327,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-seekable.c:332,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/istream-seekable.c:340,1
    - Dst: i_stream_seekable_write_failed
      Src: /src/dovecot/src/lib/istream-seekable.c:341,1
    - Dst: read_from_buffer
      Src: /src/dovecot/src/lib/istream-seekable.c:343,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/istream-seekable.c:344,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/istream-seekable.c:347,1
    - Dst: i_stream_sync
      Src: /src/dovecot/src/lib/istream-seekable.c:352,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-seekable.c:353,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-seekable.c:357,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-seekable.c:358,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-seekable.c:367,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 68
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 276
    functionDepth: 12
    functionLinenumber: 276
    functionLinenumberEnd: 374
    functionName: i_stream_seekable_read
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_get_data_size
    - read_more
    - io_stream_set_error
    - i_unreached
    - i_stream_sync
    - i_stream_get_data
    - i_warning
    - write
    - read_from_buffer
    - i_strdup
    - i_stream_seekable_write_failed
    - i_stream_skip
    - i_stream_seek
    - copy_to_temp_file
    - i_assert
    - CONST_PTR_OFFSET
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_seekable_read(struct istream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-seekable.c:380,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-seekable.c:395,1
    - Dst: i_stream_seekable_read
      Src: /src/dovecot/src/lib/istream-seekable.c:397,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/istream-seekable.c:400,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib/istream-seekable.c:402,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-seekable.c:405,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-seekable.c:407,1
    - Dst: unref_streams
      Src: /src/dovecot/src/lib/istream-seekable.c:408,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib/istream-seekable.c:415,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:420,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 376
    functionDepth: 13
    functionLinenumber: 376
    functionLinenumberEnd: 425
    functionName: i_stream_seekable_stat
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_panic
    - container_of
    - i_stream_seekable_read
    - unref_streams
    - i_stream_stat
    - i_stream_skip
    - i_stream_seek
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: int
    signature: int i_stream_seekable_stat(struct istream_private *stream, bool exact)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_default_seek_nonseekable
      Src: /src/dovecot/src/lib/istream-seekable.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 427
    functionDepth: 5
    functionLinenumber: 427
    functionLinenumberEnd: 439
    functionName: i_stream_seekable_seek
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_default_seek_nonseekable
    linkageType: ''
    returnType: void
    signature: "void i_stream_seekable_seek(struct istream_private *stream,\n\t\t\t\t
      \  uoff_t v_offset, bool mark)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-seekable.c:446,1
    - Dst: i_stream_default_snapshot
      Src: /src/dovecot/src/lib/istream-seekable.c:452,1
    - Dst: struct seekable_istream*::fd_input::real_stream::snapshot
      Src: /src/dovecot/src/lib/istream-seekable.c:455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - prev_snapshot
    argTypes:
    - struct istream_private*
    - struct istream_snapshot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 441
    functionDepth: 3
    functionLinenumber: 441
    functionLinenumberEnd: 458
    functionName: i_stream_seekable_snapshot
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - i_stream_default_snapshot
    - container_of
    - struct seekable_istream*::fd_input::real_stream::snapshot
    linkageType: ''
    returnType: struct istream_snapshot
    signature: "struct istream_snapshot *\ni_stream_seekable_snapshot(struct istream_private
      *stream,\n\t\t\t   struct istream_snapshot *prev_snapshot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 526
    functionName: inputs_are_seekable
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool inputs_are_seekable(struct istream *input[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:534,1
    - Dst: inputs_are_seekable
      Src: /src/dovecot/src/lib/istream-seekable.c:537,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib/istream-seekable.c:538,1
    - Dst: i_streams_merge
      Src: /src/dovecot/src/lib/istream-seekable.c:540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - input
    - max_buffer_size
    - context
    argTypes:
    - struct istream*[]
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 528
    functionDepth: 5
    functionLinenumber: 528
    functionLinenumberEnd: 541
    functionName: i_stream_create_seekable
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 10
    functionsReached:
    - i_stream_create_concat
    - inputs_are_seekable
    - i_assert
    - i_streams_merge
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_seekable(struct istream *input[],\n\t\t\t
      size_t max_buffer_size,\n\t\t\t int (*fd_callback)(const char **path_r, void
      *context),\n\t\t\t void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/istream-seekable.c:549,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/istream-seekable.c:550,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lib/istream-seekable.c:551,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/istream-seekable.c:553,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/istream-seekable.c:553,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/istream-seekable.c:558,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/istream-seekable.c:558,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/istream-seekable.c:560,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/istream-seekable.c:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - path_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 543
    functionDepth: 4
    functionLinenumber: 543
    functionLinenumberEnd: 566
    functionName: seekable_fd_callback
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_error
    - i_close_fd
    - i_unlink
    - str_append
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: int seekable_fd_callback(const char **path_r, void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:576,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-seekable.c:577,1
    - Dst: inputs_are_seekable
      Src: /src/dovecot/src/lib/istream-seekable.c:579,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib/istream-seekable.c:580,1
    - Dst: i_stream_create_seekable
      Src: /src/dovecot/src/lib/istream-seekable.c:582,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/istream-seekable.c:584,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-seekable.c:585,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - input
    - max_buffer_size
    - temp_path_prefix
    argTypes:
    - struct istream*[]
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 568
    functionDepth: 6
    functionLinenumber: 568
    functionLinenumberEnd: 589
    functionName: i_stream_create_seekable_path
    functionSourceFile: /src/dovecot/src/lib/istream-seekable.c
    functionUses: 6
    functionsReached:
    - i_stream_create_seekable
    - inputs_are_seekable
    - i_assert
    - container_of
    - i_strdup
    - i_stream_create_concat
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_seekable_path(struct istream *input[],\n\t\t\t
      \     size_t max_buffer_size,\n\t\t\t      const char *temp_path_prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:14,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:15,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:16,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:16,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:17,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:17,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 5
    functionDepth: 3
    functionLinenumber: 5
    functionLinenumberEnd: 20
    functionName: test_malloc_overflow_multiply
    functionSourceFile: /src/dovecot/src/lib/test-malloc-overflow.c
    functionUses: 0
    functionsReached:
    - MALLOC_MULTIPLY
    - test_assert_idx
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_malloc_overflow_multiply(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:35,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:35,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:36,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:37,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:37,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:38,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:38,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 22
    functionDepth: 3
    functionLinenumber: 22
    functionLinenumberEnd: 41
    functionName: test_malloc_overflow_add
    functionSourceFile: /src/dovecot/src/lib/test-malloc-overflow.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - test_assert
    - MALLOC_ADD
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_malloc_overflow_add(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_malloc_overflow_multiply
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:45,1
    - Dst: test_malloc_overflow_add
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 4
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: test_malloc_overflow
    functionSourceFile: /src/dovecot/src/lib/test-malloc-overflow.c
    functionUses: 0
    functionsReached:
    - test_malloc_overflow_multiply
    - test_malloc_overflow_add
    linkageType: ''
    returnType: void
    signature: void test_malloc_overflow(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:58,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:61,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:62,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:62,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:65,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:65,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:70,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:71,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:73,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:74,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:80,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:80,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:82,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:82,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 84
    functionName: fatal_malloc_overflow_multiply
    functionSourceFile: /src/dovecot/src/lib/test-malloc-overflow.c
    functionUses: 0
    functionsReached:
    - MALLOC_MULTIPLY
    - i_error
    - test_end
    - test_expect_fatal_string
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_malloc_overflow_multiply(unsigned int *stage)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:96,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:99,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:100,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:100,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:103,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:103,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:108,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:109,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:111,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:112,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:118,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:118,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:120,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:120,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 86
    functionDepth: 3
    functionLinenumber: 86
    functionLinenumberEnd: 122
    functionName: fatal_malloc_overflow_add
    functionSourceFile: /src/dovecot/src/lib/test-malloc-overflow.c
    functionUses: 0
    functionsReached:
    - i_error
    - test_end
    - test_expect_fatal_string
    - MALLOC_ADD
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_malloc_overflow_add(unsigned int *stage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fatal_malloc_overflow_multiply
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:128,1
    - Dst: fatal_malloc_overflow_add
      Src: /src/dovecot/src/lib/test-malloc-overflow.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 124
    functionDepth: 4
    functionLinenumber: 124
    functionLinenumberEnd: 132
    functionName: fatal_malloc_overflow
    functionSourceFile: /src/dovecot/src/lib/test-malloc-overflow.c
    functionUses: 0
    functionsReached:
    - fatal_malloc_overflow_add
    - fatal_malloc_overflow_multiply
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_malloc_overflow(unsigned int stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 14
    functionName: INTEGER_CMP
    functionSourceFile: /src/dovecot/src/lib/sort.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTEGER_CMP(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - base
    - ','
    - nmemb
    - ','
    - size
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 23
    functionName: i_qsort
    functionSourceFile: /src/dovecot/src/lib/sort.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_qsort(base, nmemb, size, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - key
    - ','
    - base
    - ','
    - nmemb
    - ','
    - size
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 29
    functionName: i_bsearch
    functionSourceFile: /src/dovecot/src/lib/sort.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_bsearch(key, base, nmemb, size, cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/str-table.c:15,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib/str-table.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 18
    functionName: str_table_init
    functionSourceFile: /src/dovecot/src/lib/str-table.c
    functionUses: 1
    functionsReached:
    - hash_table_create
    - i_new
    linkageType: ''
    returnType: struct str_table
    signature: struct str_table *str_table_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib/str-table.c:29,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib/str-table.c:30,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/str-table.c:31,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib/str-table.c:32,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib/str-table.c:33,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/str-table.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _table
    argTypes:
    - struct str_table**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 35
    functionName: str_table_deinit
    functionSourceFile: /src/dovecot/src/lib/str-table.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void str_table_deinit(struct str_table **_table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib/str-table.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct str_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: str_table_is_empty
    functionSourceFile: /src/dovecot/src/lib/str-table.c
    functionUses: 0
    functionsReached:
    - hash_table_count
    linkageType: ''
    returnType: bool
    signature: bool str_table_is_empty(struct str_table *table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/lib/str-table.c:48,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/str-table.c:49,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib/str-table.c:52,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-table.c:53,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib/str-table.c:56,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/str-table.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - table
    - str
    argTypes:
    - struct str_table*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 58
    functionName: str_table_ref
    functionSourceFile: /src/dovecot/src/lib/str-table.c
    functionUses: 3
    functionsReached:
    - hash_table_update
    - POINTER_CAST
    - i_strdup
    - hash_table_lookup_full
    - POINTER_CAST_TO
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *str_table_ref(struct str_table *table, const char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup_full
      Src: /src/dovecot/src/lib/str-table.c:66,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/str-table.c:67,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib/str-table.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/str-table.c:70,1
    - Dst: hash_table_update
      Src: /src/dovecot/src/lib/str-table.c:72,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/str-table.c:72,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib/str-table.c:74,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/str-table.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - table
    - str
    argTypes:
    - struct str_table*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 78
    functionName: str_table_unref
    functionSourceFile: /src/dovecot/src/lib/str-table.c
    functionUses: 3
    functionsReached:
    - hash_table_update
    - POINTER_CAST
    - i_unreached
    - hash_table_remove
    - hash_table_lookup_full
    - POINTER_CAST_TO
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void str_table_unref(struct str_table *table, const char **str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-lib.c:8,1
    - Dst: TEST
      Src: /src/dovecot/src/lib/test-lib.c:12,1
    - Dst: TEST_NAMED
      Src: /src/dovecot/src/lib/test-lib.c:12,1
    - Dst: FATAL
      Src: /src/dovecot/src/lib/test-lib.c:13,1
    - Dst: TEST
      Src: /src/dovecot/src/lib/test-lib.c:20,1
    - Dst: FATAL
      Src: /src/dovecot/src/lib/test-lib.c:21,1
    - Dst: FATAL_NAMED
      Src: /src/dovecot/src/lib/test-lib.c:21,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib/test-lib.c:28,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib/test-lib.c:29,1
    - Dst: test_run_named_with_fatals
      Src: /src/dovecot/src/lib/test-lib.c:31,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 5
    functionDepth: 7
    functionLinenumber: 5
    functionLinenumberEnd: 32
    functionName: main
    functionSourceFile: /src/dovecot/src/lib/test-lib.c
    functionUses: 14
    functionsReached:
    - strcmp
    - TEST_NAMED
    - test_dir_init
    - FATAL
    - FATAL_NAMED
    - test_run_named_with_fatals
    - test_subprocesses_init
    - TEST
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/dovecot/src/lib/nfs-workarounds.c:55,1
    - Dst: nfs_flush_file_handle_cache
      Src: /src/dovecot/src/lib/nfs-workarounds.c:62,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - path
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 65
    functionName: nfs_safe_do
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 0
    functionsReached:
    - nfs_flush_file_handle_cache
    - callback
    linkageType: ''
    returnType: int
    signature: "int nfs_safe_do(const char *path, int (*callback)(const char *path,
      void *context),\n\t    void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/nfs-workarounds.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - path
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: nfs_safe_open_callback
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 0
    functionsReached:
    - open
    linkageType: ''
    returnType: int
    signature: int nfs_safe_open_callback(const char *path, void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/nfs-workarounds.c:84,1
    - Dst: nfs_safe_do
      Src: /src/dovecot/src/lib/nfs-workarounds.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - path
    - flags
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 91
    functionName: nfs_safe_open
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 13
    functionsReached:
    - i_assert
    - nfs_safe_do
    linkageType: ''
    returnType: int
    signature: int nfs_safe_open(const char *path, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib/nfs-workarounds.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 98
    functionName: nfs_safe_stat_callback
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: int
    signature: int nfs_safe_stat_callback(const char *path, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_do
      Src: /src/dovecot/src/lib/nfs-workarounds.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - buf
    argTypes:
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: nfs_safe_stat
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 13
    functionsReached:
    - nfs_safe_do
    linkageType: ''
    returnType: int
    signature: int nfs_safe_stat(const char *path, struct stat *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lstat
      Src: /src/dovecot/src/lib/nfs-workarounds.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - context
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: nfs_safe_lstat_callback
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 0
    functionsReached:
    - lstat
    linkageType: ''
    returnType: int
    signature: int nfs_safe_lstat_callback(const char *path, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nfs_safe_do
      Src: /src/dovecot/src/lib/nfs-workarounds.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - buf
    argTypes:
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: nfs_safe_lstat
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 3
    functionsReached:
    - nfs_safe_do
    linkageType: ''
    returnType: int
    signature: int nfs_safe_lstat(const char *path, struct stat *buf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib/nfs-workarounds.c:123,1
    - Dst: link
      Src: /src/dovecot/src/lib/nfs-workarounds.c:128,1
    - Dst: stat
      Src: /src/dovecot/src/lib/nfs-workarounds.c:138,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - oldpath
    - newpath
    - links1
    argTypes:
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 145
    functionName: nfs_safe_link
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 4
    functionsReached:
    - stat
    - link
    linkageType: ''
    returnType: int
    signature: int nfs_safe_link(const char *oldpath, const char *newpath, bool links1)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: chown
      Src: /src/dovecot/src/lib/nfs-workarounds.c:152,1
    - Dst: likely
      Src: /src/dovecot/src/lib/nfs-workarounds.c:157,1
    - Dst: nfs_flush_file_handle_cache_parent_dir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:158,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:161,1
    - Dst: stat
      Src: /src/dovecot/src/lib/nfs-workarounds.c:166,1
    - Dst: likely
      Src: /src/dovecot/src/lib/nfs-workarounds.c:173,1
    - Dst: nfs_flush_file_handle_cache_parent_dir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:174,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:177,1
    - Dst: chmod
      Src: /src/dovecot/src/lib/nfs-workarounds.c:182,1
    - Dst: likely
      Src: /src/dovecot/src/lib/nfs-workarounds.c:187,1
    - Dst: nfs_flush_file_handle_cache_parent_dir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:188,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:191,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 195
    functionName: nfs_flush_chown_uid
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 0
    functionsReached:
    - i_error
    - likely
    - stat
    - nfs_flush_file_handle_cache_parent_dir
    - chown
    - chmod
    linkageType: ''
    returnType: void
    signature: void nfs_flush_chown_uid(const char *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib/nfs-workarounds.c:204,1
    - Dst: likely
      Src: /src/dovecot/src/lib/nfs-workarounds.c:205,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:207,1
    - Dst: fchown
      Src: /src/dovecot/src/lib/nfs-workarounds.c:215,1
    - Dst: likely
      Src: /src/dovecot/src/lib/nfs-workarounds.c:218,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:223,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - path
    - fd
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: nfs_flush_fchown_uid
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 0
    functionsReached:
    - fchown
    - fstat
    - i_error
    - likely
    linkageType: ''
    returnType: bool
    signature: bool nfs_flush_fchown_uid(const char *path, int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: alarm
      Src: /src/dovecot/src/lib/nfs-workarounds.c:249,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/nfs-workarounds.c:250,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/nfs-workarounds.c:251,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/nfs-workarounds.c:253,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:258,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/nfs-workarounds.c:263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - path
    - fd
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 265
    functionName: nfs_flush_fcntl
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 0
    functionsReached:
    - unlikely
    - alarm
    - i_error
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool nfs_flush_fcntl(const char *path, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/nfs-workarounds.c:273,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/nfs-workarounds.c:275,1
    - Dst: nfs_flush_file_handle_cache_parent_dir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 283
    functionName: nfs_flush_attr_cache_unlocked
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 5
    functionsReached:
    - i_close_fd
    - open
    - nfs_flush_file_handle_cache_parent_dir
    linkageType: ''
    returnType: void
    signature: void nfs_flush_attr_cache_unlocked(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nfs_flush_chown_uid
      Src: /src/dovecot/src/lib/nfs-workarounds.c:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 288
    functionName: nfs_flush_attr_cache_maybe_locked
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 1
    functionsReached:
    - nfs_flush_chown_uid
    linkageType: ''
    returnType: void
    signature: void nfs_flush_attr_cache_maybe_locked(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nfs_flush_fchown_uid
      Src: /src/dovecot/src/lib/nfs-workarounds.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 300
    functionName: nfs_flush_attr_cache_fd_locked
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 3
    functionsReached:
    - nfs_flush_fchown_uid
    linkageType: ''
    returnType: void
    signature: "void nfs_flush_attr_cache_fd_locked(const char *path ATTR_UNUSED,\n\t\t\t\t
      \   int fd ATTR_UNUSED)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nfs_flush_chown_uid
      Src: /src/dovecot/src/lib/nfs-workarounds.c:307,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/nfs-workarounds.c:310,1
    - Dst: rmdir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:310,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:311,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/nfs-workarounds.c:312,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/nfs-workarounds.c:316,1
    - Dst: open
      Src: /src/dovecot/src/lib/nfs-workarounds.c:333,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:335,1
    - Dst: t_get_working_dir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:340,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:341,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/nfs-workarounds.c:342,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib/nfs-workarounds.c:345,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/nfs-workarounds.c:349,1
    - Dst: chdir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:350,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:351,1
    - Dst: nfs_flush_file_handle_cache_dir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:354,1
    - Dst: fchdir
      Src: /src/dovecot/src/lib/nfs-workarounds.c:355,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:356,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/nfs-workarounds.c:357,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/nfs-workarounds.c:360,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 2
    argNames:
    - path
    - try_parent ATTR_UNUSED
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 302
    functionDepth: 7
    functionLinenumber: 302
    functionLinenumberEnd: 365
    functionName: nfs_flush_file_handle_cache_dir
    functionSourceFile: /src/dovecot/src/lib/nfs-workarounds.c
    functionUses: 1
    functionsReached:
    - i_error
    - strrchr
    - rmdir
    - nfs_flush_file_handle_cache_dir
    - i_close_fd
    - fchdir
    - open
    - i_warning
    - unlikely
    - chdir
    - mkdir
    - t_get_working_dir
    - t_strdup_until
    - nfs_flush_chown_uid
    linkageType: ''
    returnType: bool
    signature: bool nfs_flush_file_handle_cache_dir(const char *path, bool try_parent
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: MAX_BASE32_ENCODED_SIZE
    functionSourceFile: /src/dovecot/src/lib/base32.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX_BASE32_ENCODED_SIZE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: MAX_BASE32_DECODED_SIZE
    functionSourceFile: /src/dovecot/src/lib/base32.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX_BASE32_DECODED_SIZE(size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/dovecot/src/lib/test-cpu-limit.c:25,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-cpu-limit.c:26,1
    - Dst: timeval_add
      Src: /src/dovecot/src/lib/test-cpu-limit.c:28,1
    - Dst: timeval_add
      Src: /src/dovecot/src/lib/test-cpu-limit.c:30,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum cpu_limit_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 32
    functionName: get_cpu_time
    functionSourceFile: /src/dovecot/src/lib/test-cpu-limit.c
    functionUses: 0
    functionsReached:
    - timeval_add
    - getrusage
    - i_fatal
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval get_cpu_time(enum cpu_limit_type type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-cpu-limit.c:36,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib/test-cpu-limit.c:41,1
    - Dst: creat
      Src: /src/dovecot/src/lib/test-cpu-limit.c:43,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-cpu-limit.c:45,1
    - Dst: write
      Src: /src/dovecot/src/lib/test-cpu-limit.c:46,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-cpu-limit.c:47,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-cpu-limit.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 49
    functionName: test_cpu_loop_once
    functionSourceFile: /src/dovecot/src/lib/test-cpu-limit.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - i_fatal
    - guid_128_generate
    - test_dir_prepend
    - write
    - creat
    linkageType: ''
    returnType: void
    signature: void test_cpu_loop_once(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-cpu-limit.c:58,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-cpu-limit.c:58,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:60,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:61,1
    - Dst: get_cpu_time
      Src: /src/dovecot/src/lib/test-cpu-limit.c:62,1
    - Dst: cpu_limit_exceeded
      Src: /src/dovecot/src/lib/test-cpu-limit.c:64,1
    - Dst: test_cpu_loop_once
      Src: /src/dovecot/src/lib/test-cpu-limit.c:65,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib/test-cpu-limit.c:67,1
    - Dst: get_cpu_time
      Src: /src/dovecot/src/lib/test-cpu-limit.c:68,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/test-cpu-limit.c:69,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib/test-cpu-limit.c:70,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib/test-cpu-limit.c:72,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-cpu-limit.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - type
    - type_str
    argTypes:
    - enum cpu_limit_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 51
    functionDepth: 11
    functionLinenumber: 51
    functionLinenumberEnd: 74
    functionName: test_cpu_limit_simple
    functionSourceFile: /src/dovecot/src/lib/test-cpu-limit.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - cpu_limit_deinit
    - cpu_limit_init
    - cpu_limit_exceeded
    - t_strdup_printf
    - test_cpu_loop_once
    - lib_signals_init
    - test_end
    - test_assert_cmp
    - get_cpu_time
    - lib_signals_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_cpu_limit_simple(enum cpu_limit_type type, const char *type_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-cpu-limit.c:78,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-cpu-limit.c:84,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-cpu-limit.c:84,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:86,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:87,1
    - Dst: get_cpu_time
      Src: /src/dovecot/src/lib/test-cpu-limit.c:88,1
    - Dst: cpu_limit_exceeded
      Src: /src/dovecot/src/lib/test-cpu-limit.c:90,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-cpu-limit.c:90,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:91,1
    - Dst: cpu_limit_exceeded
      Src: /src/dovecot/src/lib/test-cpu-limit.c:93,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-cpu-limit.c:93,1
    - Dst: test_cpu_loop_once
      Src: /src/dovecot/src/lib/test-cpu-limit.c:94,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib/test-cpu-limit.c:96,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib/test-cpu-limit.c:99,1
    - Dst: get_cpu_time
      Src: /src/dovecot/src/lib/test-cpu-limit.c:100,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/test-cpu-limit.c:101,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib/test-cpu-limit.c:102,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib/test-cpu-limit.c:104,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-cpu-limit.c:105,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-cpu-limit.c:107,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-cpu-limit.c:107,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:109,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:110,1
    - Dst: get_cpu_time
      Src: /src/dovecot/src/lib/test-cpu-limit.c:111,1
    - Dst: cpu_limit_exceeded
      Src: /src/dovecot/src/lib/test-cpu-limit.c:114,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-cpu-limit.c:114,1
    - Dst: test_cpu_loop_once
      Src: /src/dovecot/src/lib/test-cpu-limit.c:117,1
    - Dst: cpu_limit_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:120,1
    - Dst: cpu_limit_exceeded
      Src: /src/dovecot/src/lib/test-cpu-limit.c:122,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-cpu-limit.c:122,1
    - Dst: test_cpu_loop_once
      Src: /src/dovecot/src/lib/test-cpu-limit.c:123,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib/test-cpu-limit.c:125,1
    - Dst: cpu_limit_deinit
      Src: /src/dovecot/src/lib/test-cpu-limit.c:128,1
    - Dst: get_cpu_time
      Src: /src/dovecot/src/lib/test-cpu-limit.c:129,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/test-cpu-limit.c:130,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib/test-cpu-limit.c:131,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/test-cpu-limit.c:133,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib/test-cpu-limit.c:134,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-cpu-limit.c:135,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 2
    argNames:
    - type
    - type_str
    argTypes:
    - enum cpu_limit_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 76
    functionDepth: 11
    functionLinenumber: 76
    functionLinenumberEnd: 136
    functionName: test_cpu_limit_nested
    functionSourceFile: /src/dovecot/src/lib/test-cpu-limit.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - cpu_limit_deinit
    - cpu_limit_init
    - cpu_limit_exceeded
    - t_strdup_printf
    - test_dir_prepend
    - lib_signals_init
    - test_has_failed
    - test_cpu_loop_once
    - test_end
    - test_assert_cmp
    - i_unlink_if_exists
    - get_cpu_time
    - lib_signals_deinit
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_cpu_limit_nested(enum cpu_limit_type type, const char *type_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_cpu_limit_simple
      Src: /src/dovecot/src/lib/test-cpu-limit.c:140,1
    - Dst: test_cpu_limit_simple
      Src: /src/dovecot/src/lib/test-cpu-limit.c:143,1
    - Dst: test_cpu_limit_simple
      Src: /src/dovecot/src/lib/test-cpu-limit.c:144,1
    - Dst: test_cpu_limit_nested
      Src: /src/dovecot/src/lib/test-cpu-limit.c:145,1
    - Dst: test_cpu_limit_nested
      Src: /src/dovecot/src/lib/test-cpu-limit.c:147,1
    - Dst: test_cpu_limit_nested
      Src: /src/dovecot/src/lib/test-cpu-limit.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 138
    functionDepth: 12
    functionLinenumber: 138
    functionLinenumberEnd: 149
    functionName: test_cpu_limit
    functionSourceFile: /src/dovecot/src/lib/test-cpu-limit.c
    functionUses: 0
    functionsReached:
    - test_cpu_limit_simple
    - test_cpu_limit_nested
    linkageType: ''
    returnType: void
    signature: void test_cpu_limit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib/test-cpu-limit.c:157,1
    - Dst: test_run
      Src: /src/dovecot/src/lib/test-cpu-limit.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 7
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: main
    functionSourceFile: /src/dovecot/src/lib/test-cpu-limit.c
    functionUses: 14
    functionsReached:
    - test_run
    - test_dir_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-sized.c:20,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-sized.c:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 17
    functionDepth: 4
    functionLinenumber: 17
    functionLinenumberEnd: 30
    functionName: i_stream_sized_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_seek
    linkageType: ''
    returnType: void
    signature: void i_stream_sized_destroy(struct iostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-sized.c:37,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/istream-sized.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - ATTR_UNUSED
    argTypes:
    - struct istream_sized_error_data*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 32
    functionDepth: 11
    functionLinenumber: 32
    functionLinenumberEnd: 46
    functionName: i_stream_create_sized_default_error_callback
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\ni_stream_create_sized_default_error_callback(\n\tconst struct
      istream_sized_error_data *data, void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-sized.c:54,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-sized.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - pos_r
    argTypes:
    - struct istream_private*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 60
    functionName: i_stream_sized_parent_read
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_sized_parent_read(struct istream_private *stream,
      size_t *pos_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-sized.c:65,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-sized.c:72,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-sized.c:78,1
    - Dst: i_stream_sized_parent_read
      Src: /src/dovecot/src/lib/istream-sized.c:82,1
    - Dst: i_stream_sized_parent_read
      Src: /src/dovecot/src/lib/istream-sized.c:90,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/istream-sized.c:93,1
    - Dst: struct sized_istream*::error_callback
      Src: /src/dovecot/src/lib/istream-sized.c:105,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-sized.c:106,1
    - Dst: struct sized_istream*::error_callback
      Src: /src/dovecot/src/lib/istream-sized.c:121,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-sized.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-sized.c:129,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 62
    functionDepth: 4
    functionLinenumber: 62
    functionLinenumberEnd: 132
    functionName: i_stream_sized_read
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 0
    functionsReached:
    - i_zero
    - container_of
    - struct sized_istream*::error_callback
    - io_stream_set_error
    - i_stream_sized_parent_read
    - i_stream_get_data
    - i_stream_seek
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_sized_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-sized.c:138,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib/istream-sized.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stream
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 152
    functionName: i_stream_sized_stat
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: int i_stream_sized_stat(struct istream_private *stream, bool exact
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-sized.c:159,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-sized.c:170,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-sized.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 4
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: i_stream_create_sized_common
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct sized_istream
    signature: 'struct sized_istream *

      i_stream_create_sized_common(struct istream *input, uoff_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_sized_common
      Src: /src/dovecot/src/lib/istream-sized.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - input
    - size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 175
    functionDepth: 5
    functionLinenumber: 175
    functionLinenumberEnd: 183
    functionName: i_stream_create_sized
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 9
    functionsReached:
    - i_stream_create_sized_common
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_sized(struct istream *input, uoff_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/istream-sized.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - input
    - offset
    - size
    argTypes:
    - struct istream*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 185
    functionDepth: 6
    functionLinenumber: 185
    functionLinenumberEnd: 195
    functionName: i_stream_create_sized_range
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 1
    functionsReached:
    - i_stream_create_sized
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *i_stream_create_sized_range(struct istream *input,\n\t\t\t\t\t
      \   uoff_t offset, uoff_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_sized
      Src: /src/dovecot/src/lib/istream-sized.c:201,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-sized.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - input
    - min_size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 6
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: i_stream_create_min_sized
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 1
    functionsReached:
    - container_of
    - i_stream_create_sized
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_min_sized(struct istream *input, uoff_t
      min_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_sized_range
      Src: /src/dovecot/src/lib/istream-sized.c:213,1
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-sized.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - input
    - offset
    - min_size
    argTypes:
    - struct istream*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 208
    functionDepth: 7
    functionLinenumber: 208
    functionLinenumberEnd: 218
    functionName: i_stream_create_min_sized_range
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 1
    functionsReached:
    - i_stream_create_sized_range
    - container_of
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *i_stream_create_min_sized_range(struct istream *input,\n\t\t\t\t\t\tuoff_t
      offset, uoff_t min_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_sized_common
      Src: /src/dovecot/src/lib/istream-sized.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - input
    - size
    - error_callback
    - context
    argTypes:
    - struct istream*
    - uoff_t
    - istream_sized_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 221
    functionDepth: 5
    functionLinenumber: 221
    functionLinenumberEnd: 232
    functionName: i_stream_create_sized_with_callback
    functionSourceFile: /src/dovecot/src/lib/istream-sized.c
    functionUses: 0
    functionsReached:
    - i_stream_create_sized_common
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_sized_with_callback(struct istream
      *input, uoff_t size,\n\t\t\t\t    istream_sized_callback_t *error_callback,\n\t\t\t\t
      \   void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 38
    functionName: update_highest_fd
    functionSourceFile: /src/dovecot/src/lib/ioloop-select.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void update_highest_fd(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-select.c:45,1
    - Dst: FD_ZERO
      Src: /src/dovecot/src/lib/ioloop-select.c:47,1
    - Dst: FD_ZERO
      Src: /src/dovecot/src/lib/ioloop-select.c:48,1
    - Dst: FD_ZERO
      Src: /src/dovecot/src/lib/ioloop-select.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ioloop
    - initial_fd_count ATTR_UNUSED
    argTypes:
    - struct ioloop*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 50
    functionName: io_loop_handler_init
    functionSourceFile: /src/dovecot/src/lib/ioloop-select.c
    functionUses: 0
    functionsReached:
    - FD_ZERO
    - i_new
    linkageType: ''
    returnType: void
    signature: "void io_loop_handler_init(struct ioloop *ioloop,\n\t\t\t  unsigned
      int initial_fd_count ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-select.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: io_loop_handler_deinit
    functionSourceFile: /src/dovecot/src/lib/ioloop-select.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_deinit(struct ioloop *ioloop)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-select.c:63,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-select.c:66,1
    - Dst: FD_SET
      Src: /src/dovecot/src/lib/ioloop-select.c:69,1
    - Dst: FD_SET
      Src: /src/dovecot/src/lib/ioloop-select.c:71,1
    - Dst: FD_SET
      Src: /src/dovecot/src/lib/ioloop-select.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 76
    functionName: io_loop_handle_add
    functionSourceFile: /src/dovecot/src/lib/ioloop-select.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - i_assert
    - FD_SET
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_add(struct io_file *io)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-select.c:84,1
    - Dst: FD_CLR
      Src: /src/dovecot/src/lib/ioloop-select.c:87,1
    - Dst: FD_CLR
      Src: /src/dovecot/src/lib/ioloop-select.c:89,1
    - Dst: FD_ISSET
      Src: /src/dovecot/src/lib/ioloop-select.c:91,1
    - Dst: FD_ISSET
      Src: /src/dovecot/src/lib/ioloop-select.c:91,1
    - Dst: FD_CLR
      Src: /src/dovecot/src/lib/ioloop-select.c:92,1
    - Dst: update_highest_fd
      Src: /src/dovecot/src/lib/ioloop-select.c:96,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-select.c:98,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - io
    - ATTR_UNUSED
    argTypes:
    - struct io_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 99
    functionName: io_loop_handle_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop-select.c
    functionUses: 0
    functionsReached:
    - FD_ISSET
    - i_free
    - i_assert
    - FD_CLR
    - update_highest_fd
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_remove(struct io_file *io, bool closed ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - fd
    - ','
    - cond
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: io_check_condition
    functionSourceFile: /src/dovecot/src/lib/ioloop-select.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: io_check_condition(ctx, fd, cond)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_run_get_wait_time
      Src: /src/dovecot/src/lib/ioloop-select.c:114,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/ioloop-select.c:116,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/ioloop-select.c:117,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/ioloop-select.c:118,1
    - Dst: select
      Src: /src/dovecot/src/lib/ioloop-select.c:120,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop-select.c:123,1
    - Dst: io_loop_handle_timeouts
      Src: /src/dovecot/src/lib/ioloop-select.c:126,1
    - Dst: io_check_condition
      Src: /src/dovecot/src/lib/ioloop-select.c:139,1
    - Dst: io_loop_call_io
      Src: /src/dovecot/src/lib/ioloop-select.c:141,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 146
    functionName: io_loop_handler_run_internal
    functionSourceFile: /src/dovecot/src/lib/ioloop-select.c
    functionUses: 0
    functionsReached:
    - memcpy
    - select
    - io_check_condition
    - io_loop_call_io
    - i_warning
    - io_loop_run_get_wait_time
    - io_loop_handle_timeouts
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_run_internal(struct ioloop *ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/safe-memset.c:15,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - data
    - c
    - size
    argTypes:
    - void*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 17
    functionName: safe_memset
    functionSourceFile: /src/dovecot/src/lib/safe-memset.c
    functionUses: 24
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void safe_memset(void *data, int c, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-wrapper.c:25,1
    - Dst: o_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:26,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 33
    functionName: wrapper_ostream_optimal_size
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - o_stream_get_max_buffer_size
    - I_MIN
    linkageType: ''
    returnType: size_t
    signature: size_t wrapper_ostream_optimal_size(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: wrapper_ostream_size
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t wrapper_ostream_size(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: wrapper_ostream_is_empty
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_size
    linkageType: ''
    returnType: bool
    signature: bool wrapper_ostream_is_empty(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: wrapper_ostream_is_full
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_size
    linkageType: ''
    returnType: bool
    signature: bool wrapper_ostream_is_full(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:61,1
    - Dst: wrapper_ostream_optimal_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: wrapper_ostream_is_filled
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_size
    - wrapper_ostream_optimal_size
    linkageType: ''
    returnType: bool
    signature: bool wrapper_ostream_is_filled(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: wrapper_ostream_copy_parent_error
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_copy_parent_error(struct wrapper_ostream *wostream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_copy_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:85,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib/ostream-wrapper.c:88,1
    - Dst: struct wrapper_ostream*::output_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: wrapper_ostream_handle_parent_error
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - struct wrapper_ostream*::output_error
    - wrapper_ostream_copy_parent_error
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_handle_parent_error(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: wrapper_ostream_closed
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_closed(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: wrapper_ostream_output_close
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_output_close(struct wrapper_ostream *wostream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct wrapper_ostream*::output_start
      Src: /src/dovecot/src/lib/ostream-wrapper.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: wrapper_ostream_output_start
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - struct wrapper_ostream*::output_start
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_output_start(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:126,1
    - Dst: struct wrapper_ostream*::output_ready
      Src: /src/dovecot/src/lib/ostream-wrapper.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: wrapper_ostream_output_ready
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - struct wrapper_ostream*::output_ready
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool wrapper_ostream_output_ready(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:133,1
    - Dst: struct wrapper_ostream*::output_finish
      Src: /src/dovecot/src/lib/ostream-wrapper.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: wrapper_ostream_output_finish
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - struct wrapper_ostream*::output_finish
    - i_assert
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_output_finish(struct wrapper_ostream *wostream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct wrapper_ostream*::output_halt
      Src: /src/dovecot/src/lib/ostream-wrapper.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: wrapper_ostream_output_halt
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - struct wrapper_ostream*::output_halt
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_output_halt(struct wrapper_ostream *wostream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct wrapper_ostream*::output_resume
      Src: /src/dovecot/src/lib/ostream-wrapper.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: wrapper_ostream_output_resume
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - struct wrapper_ostream*::output_resume
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_output_resume(struct wrapper_ostream *wostream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:173,1
    - Dst: wrapper_ostream_is_filled
      Src: /src/dovecot/src/lib/ostream-wrapper.c:175,1
    - Dst: struct wrapper_ostream*::output_update_timeouts
      Src: /src/dovecot/src/lib/ostream-wrapper.c:176,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 177
    functionName: wrapper_ostream_output_update_timeouts
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_is_empty
    - struct wrapper_ostream*::output_update_timeouts
    - wrapper_ostream_is_filled
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_output_update_timeouts(struct wrapper_ostream
      *wostream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:195,1
    - Dst: wrapper_ostream_is_filled
      Src: /src/dovecot/src/lib/ostream-wrapper.c:196,1
    - Dst: wrapper_ostream_output_halt
      Src: /src/dovecot/src/lib/ostream-wrapper.c:199,1
    - Dst: wrapper_ostream_output_resume
      Src: /src/dovecot/src/lib/ostream-wrapper.c:201,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib/ostream-wrapper.c:203,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 11
    argCount: 2
    argNames:
    - wostream
    - sending
    argTypes:
    - struct wrapper_ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 205
    functionName: wrapper_ostream_output_manage
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_output_halt
    - wrapper_ostream_is_empty
    - wrapper_ostream_is_filled
    - o_stream_set_flush_pending
    - wrapper_ostream_output_resume
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_output_manage(struct wrapper_ostream *wostream,
      bool sending)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:216,1
    - Dst: wrapper_ostream_closed
      Src: /src/dovecot/src/lib/ostream-wrapper.c:222,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib/ostream-wrapper.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 227
    functionName: wrapper_ostream_handle_pending_error
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - i_free_and_null
    - io_stream_set_error
    - wrapper_ostream_closed
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_handle_pending_error(struct wrapper_ostream *wostream)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_handle_pending_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:235,1
    - Dst: wrapper_ostream_output_ready
      Src: /src/dovecot/src/lib/ostream-wrapper.c:240,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:246,1
    - Dst: wrapper_ostream_handle_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:247,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:248,1
    - Dst: wrapper_ostream_output_finish
      Src: /src/dovecot/src/lib/ostream-wrapper.c:254,1
    - Dst: wrapper_ostream_copy_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:258,1
    - Dst: wrapper_ostream_handle_pending_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:261,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:262,1
    - Dst: wrapper_ostream_output_close
      Src: /src/dovecot/src/lib/ostream-wrapper.c:265,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 230
    functionDepth: 4
    functionLinenumber: 230
    functionLinenumberEnd: 267
    functionName: wrapper_ostream_finish
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_handle_pending_error
    - wrapper_ostream_output_close
    - wrapper_ostream_output_finish
    - o_stream_unref
    - wrapper_ostream_copy_parent_error
    - wrapper_ostream_output_ready
    - wrapper_ostream_handle_parent_error
    - i_assert
    - o_stream_uncork_flush
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_finish(struct wrapper_ostream *wostream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_output_manage
      Src: /src/dovecot/src/lib/ostream-wrapper.c:278,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:281,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:282,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:284,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:285,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib/ostream-wrapper.c:287,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:290,1
    - Dst: wrapper_ostream_handle_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:291,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/ostream-wrapper.c:297,1
    - Dst: struct wrapper_ostream*::wait_begin
      Src: /src/dovecot/src/lib/ostream-wrapper.c:298,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/ostream-wrapper.c:299,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:303,1
    - Dst: io_loop_have_ios
      Src: /src/dovecot/src/lib/ostream-wrapper.c:303,1
    - Dst: io_loop_have_immediate_timeouts
      Src: /src/dovecot/src/lib/ostream-wrapper.c:304,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/ostream-wrapper.c:308,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/ostream-wrapper.c:309,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib/ostream-wrapper.c:312,1
    - Dst: o_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib/ostream-wrapper.c:314,1
    - Dst: struct wrapper_ostream*::wait_end
      Src: /src/dovecot/src/lib/ostream-wrapper.c:315,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/ostream-wrapper.c:316,1
    - Dst: wrapper_ostream_output_halt
      Src: /src/dovecot/src/lib/ostream-wrapper.c:320,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-wrapper.c:323,1
    - Dst: wrapper_ostream_handle_pending_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:325,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 271
    functionDepth: 4
    functionLinenumber: 271
    functionLinenumberEnd: 330
    functionName: wrapper_ostream_flush_wait
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_handle_pending_error
    - i_assert
    - o_stream_switch_ioloop_to
    - wrapper_ostream_output_halt
    - io_loop_have_immediate_timeouts
    - e_debug
    - struct wrapper_ostream*::wait_begin
    - wrapper_ostream_handle_parent_error
    - o_stream_cork
    - io_loop_destroy
    - io_loop_create
    - io_loop_have_ios
    - struct wrapper_ostream*::wait_end
    - wrapper_ostream_output_manage
    - o_stream_is_corked
    - o_stream_uncork_flush
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_flush_wait(struct wrapper_ostream *wostream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_output_ready
      Src: /src/dovecot/src/lib/ostream-wrapper.c:341,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:349,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:353,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:358,1
    - Dst: wrapper_ostream_handle_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:359,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:362,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 333
    functionDepth: 4
    functionLinenumber: 333
    functionLinenumberEnd: 367
    functionName: wrapper_ostream_flush_parent
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_used_size
    - wrapper_ostream_output_ready
    - o_stream_flush
    - wrapper_ostream_handle_parent_error
    - i_assert
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_flush_parent(struct wrapper_ostream *wostream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:377,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:378,1
    - Dst: wrapper_ostream_output_ready
      Src: /src/dovecot/src/lib/ostream-wrapper.c:380,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:384,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:385,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream-wrapper.c:386,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:387,1
    - Dst: wrapper_ostream_handle_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - wostream
    - iov
    - iov_count
    argTypes:
    - struct wrapper_ostream*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 370
    functionDepth: 4
    functionLinenumber: 370
    functionLinenumberEnd: 394
    functionName: wrapper_ostream_writev
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - o_stream_sendv
    - wrapper_ostream_output_ready
    - wrapper_ostream_handle_parent_error
    - i_assert
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t wrapper_ostream_writev(struct wrapper_ostream *wostream,\n\t\t
      \      const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_writev
      Src: /src/dovecot/src/lib/ostream-wrapper.c:409,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:419,1
    - Dst: wrapper_ostream_writev
      Src: /src/dovecot/src/lib/ostream-wrapper.c:422,1
    - Dst: wrapper_ostream_flush_wait
      Src: /src/dovecot/src/lib/ostream-wrapper.c:426,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:428,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:439,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/ostream-wrapper.c:451,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:453,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/ostream-wrapper.c:454,1
    - Dst: wrapper_ostream_writev
      Src: /src/dovecot/src/lib/ostream-wrapper.c:458,1
    - Dst: wrapper_ostream_flush_wait
      Src: /src/dovecot/src/lib/ostream-wrapper.c:462,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:464,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:467,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/ostream-wrapper.c:468,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:474,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ostream-wrapper.c:483,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 3
    argNames:
    - wostream
    - iov
    - iov_count
    argTypes:
    - struct wrapper_ostream*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 398
    functionDepth: 5
    functionLinenumber: 398
    functionLinenumberEnd: 484
    functionName: wrapper_ostream_writev_full
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_unreached
    - wrapper_ostream_flush_wait
    - wrapper_ostream_writev
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t wrapper_ostream_writev_full(struct wrapper_ostream *wostream,\n\t\t\t
      \   const struct const_iovec *iov,\n\t\t\t    unsigned int iov_count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:496,1
    - Dst: wrapper_ostream_writev_full
      Src: /src/dovecot/src/lib/ostream-wrapper.c:509,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/ostream-wrapper.c:514,1
    - Dst: wrapper_ostream_is_filled
      Src: /src/dovecot/src/lib/ostream-wrapper.c:522,1
    - Dst: wrapper_ostream_output_halt
      Src: /src/dovecot/src/lib/ostream-wrapper.c:523,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 487
    functionDepth: 6
    functionLinenumber: 487
    functionLinenumberEnd: 526
    functionName: wrapper_ostream_flush_buffer
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_writev_full
    - wrapper_ostream_output_halt
    - wrapper_ostream_is_filled
    - buffer_delete
    - i_assert
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_flush_buffer(struct wrapper_ostream *wostream)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_handle_pending_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:533,1
    - Dst: wrapper_ostream_output_start
      Src: /src/dovecot/src/lib/ostream-wrapper.c:537,1
    - Dst: wrapper_ostream_flush_parent
      Src: /src/dovecot/src/lib/ostream-wrapper.c:539,1
    - Dst: wrapper_ostream_flush_buffer
      Src: /src/dovecot/src/lib/ostream-wrapper.c:544,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:551,1
    - Dst: wrapper_ostream_output_ready
      Src: /src/dovecot/src/lib/ostream-wrapper.c:555,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:561,1
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:561,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:564,1
    - Dst: wrapper_ostream_handle_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:566,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 528
    functionDepth: 7
    functionLinenumber: 528
    functionLinenumberEnd: 570
    functionName: wrapper_ostream_flush_real
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_handle_pending_error
    - wrapper_ostream_output_start
    - wrapper_ostream_flush_buffer
    - wrapper_ostream_flush_parent
    - wrapper_ostream_is_empty
    - wrapper_ostream_output_ready
    - o_stream_flush
    - wrapper_ostream_handle_parent_error
    - i_assert
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_flush_real(struct wrapper_ostream *wostream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_output_start
      Src: /src/dovecot/src/lib/ostream-wrapper.c:586,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - wostream
    - size
    argTypes:
    - struct wrapper_ostream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 588
    functionName: wrapper_ostream_send_prepare
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_output_start
    linkageType: ''
    returnType: bool
    signature: bool wrapper_ostream_send_prepare(struct wrapper_ostream *wostream,
      size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/ostream-wrapper.c:604,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:615,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-wrapper.c:620,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/ostream-wrapper.c:621,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 5
    argNames:
    - wostream
    - iov
    - iov_count
    - iov_idx
    - iov_idx_pos
    argTypes:
    - struct wrapper_ostream*
    - struct const_iovec*
    - unsigned int
    - unsigned int*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 591
    functionDepth: 5
    functionLinenumber: 591
    functionLinenumberEnd: 633
    functionName: wrapper_ostream_add
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - I_MIN
    - buffer_create_dynamic
    - i_assert
    - buffer_append
    linkageType: ''
    returnType: size_t
    signature: "size_t wrapper_ostream_add(struct wrapper_ostream *wostream,\n\t\t
      \   const struct const_iovec *iov,\n\t\t    unsigned int iov_count, unsigned
      int *iov_idx,\n\t\t    size_t *iov_idx_pos)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_handle_pending_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:646,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:651,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:652,1
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:660,1
    - Dst: wrapper_ostream_is_filled
      Src: /src/dovecot/src/lib/ostream-wrapper.c:661,1
    - Dst: wrapper_ostream_send_prepare
      Src: /src/dovecot/src/lib/ostream-wrapper.c:662,1
    - Dst: wrapper_ostream_flush_buffer
      Src: /src/dovecot/src/lib/ostream-wrapper.c:663,1
    - Dst: wrapper_ostream_is_full
      Src: /src/dovecot/src/lib/ostream-wrapper.c:666,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:668,1
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:675,1
    - Dst: wrapper_ostream_optimal_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:677,1
    - Dst: wrapper_ostream_send_prepare
      Src: /src/dovecot/src/lib/ostream-wrapper.c:678,1
    - Dst: wrapper_ostream_writev_full
      Src: /src/dovecot/src/lib/ostream-wrapper.c:679,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:688,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:694,1
    - Dst: wrapper_ostream_add
      Src: /src/dovecot/src/lib/ostream-wrapper.c:699,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:701,1
    - Dst: wrapper_ostream_is_filled
      Src: /src/dovecot/src/lib/ostream-wrapper.c:703,1
    - Dst: wrapper_ostream_output_start
      Src: /src/dovecot/src/lib/ostream-wrapper.c:707,1
    - Dst: wrapper_ostream_flush_buffer
      Src: /src/dovecot/src/lib/ostream-wrapper.c:708,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:714,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 44
    argCount: 3
    argNames:
    - wostream
    - iov
    - iov_count
    argTypes:
    - struct wrapper_ostream*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 635
    functionDepth: 7
    functionLinenumber: 635
    functionLinenumberEnd: 716
    functionName: wrapper_ostream_sendv_real
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_handle_pending_error
    - wrapper_ostream_output_start
    - i_assert
    - wrapper_ostream_writev_full
    - wrapper_ostream_flush_buffer
    - wrapper_ostream_is_empty
    - wrapper_ostream_add
    - wrapper_ostream_is_filled
    - wrapper_ostream_optimal_size
    - wrapper_ostream_is_full
    - wrapper_ostream_send_prepare
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t wrapper_ostream_sendv_real(struct wrapper_ostream *wostream,\n\t\t\t
      \  const struct const_iovec *iov,\n\t\t\t   unsigned int iov_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct wrapper_ostream*::callback_pre
      Src: /src/dovecot/src/lib/ostream-wrapper.c:725,1
    - Dst: struct wrapper_ostream*::ostream::callback
      Src: /src/dovecot/src/lib/ostream-wrapper.c:726,1
    - Dst: struct wrapper_ostream*::callback_post
      Src: /src/dovecot/src/lib/ostream-wrapper.c:728,1
    - Dst: wrapper_ostream_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:730,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 733
    functionName: wrapper_ostream_callback
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - struct wrapper_ostream*::ostream::callback
    - struct wrapper_ostream*::callback_post
    - wrapper_ostream_flush
    - struct wrapper_ostream*::callback_pre
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_callback(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/ostream-wrapper.c:739,1
    - Dst: wrapper_ostream_continue
      Src: /src/dovecot/src/lib/ostream-wrapper.c:740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 741
    functionName: wrapper_ostream_handle_event
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_continue
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_handle_event(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:752,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/ostream-wrapper.c:754,1
    - Dst: wrapper_ostream_output_close
      Src: /src/dovecot/src/lib/ostream-wrapper.c:755,1
    - Dst: struct wrapper_ostream*::close
      Src: /src/dovecot/src/lib/ostream-wrapper.c:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - close_parent ATTR_UNUSED
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 747
    functionDepth: 3
    functionLinenumber: 747
    functionLinenumberEnd: 758
    functionName: wrapper_ostream_close
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - container_of
    - wrapper_ostream_output_close
    - struct wrapper_ostream*::close
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void wrapper_ostream_close(struct iostream_private *stream,\n\t\t
      \     bool close_parent ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:763,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/ostream-wrapper.c:765,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ostream-wrapper.c:766,1
    - Dst: struct wrapper_ostream*::destroy
      Src: /src/dovecot/src/lib/ostream-wrapper.c:769,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/ostream-wrapper.c:770,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:771,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 760
    functionDepth: 4
    functionLinenumber: 760
    functionLinenumberEnd: 773
    functionName: wrapper_ostream_destroy
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - container_of
    - struct wrapper_ostream*::destroy
    - event_unref
    - o_stream_unref
    - buffer_free
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_destroy(struct iostream_private *stream)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:782,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:789,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-wrapper.c:795,1
    - Dst: wrapper_ostream_flush_buffer
      Src: /src/dovecot/src/lib/ostream-wrapper.c:798,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:802,1
    - Dst: wrapper_ostream_handle_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:803,1
    - Dst: wrapper_ostream_output_resume
      Src: /src/dovecot/src/lib/ostream-wrapper.c:809,1
    - Dst: wrapper_ostream_output_manage
      Src: /src/dovecot/src/lib/ostream-wrapper.c:813,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 779
    functionDepth: 7
    functionLinenumber: 779
    functionLinenumberEnd: 814
    functionName: wrapper_ostream_cork
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - container_of
    - wrapper_ostream_flush_buffer
    - wrapper_ostream_output_manage
    - o_stream_cork
    - wrapper_ostream_output_resume
    - wrapper_ostream_handle_parent_error
    - i_assert
    - o_stream_uncork_flush
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_cork(struct ostream_private *stream, bool set)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:821,1
    - Dst: wrapper_ostream_handle_pending_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:825,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib/ostream-wrapper.c:832,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-wrapper.c:833,1
    - Dst: wrapper_ostream_sendv_real
      Src: /src/dovecot/src/lib/ostream-wrapper.c:837,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:844,1
    - Dst: wrapper_ostream_handle_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:846,1
    - Dst: wrapper_ostream_output_update_timeouts
      Src: /src/dovecot/src/lib/ostream-wrapper.c:852,1
    - Dst: wrapper_ostream_output_manage
      Src: /src/dovecot/src/lib/ostream-wrapper.c:854,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 816
    functionDepth: 8
    functionLinenumber: 816
    functionLinenumberEnd: 858
    functionName: wrapper_ostream_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_handle_pending_error
    - container_of
    - wrapper_ostream_output_manage
    - o_stream_cork
    - wrapper_ostream_output_update_timeouts
    - wrapper_ostream_handle_parent_error
    - o_stream_is_corked
    - o_stream_uncork_flush
    - wrapper_ostream_sendv_real
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t wrapper_ostream_sendv(struct ostream_private *stream,\n\t\t
      \     const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:863,1
    - Dst: wrapper_ostream_handle_pending_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:868,1
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:874,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:887,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib/ostream-wrapper.c:890,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-wrapper.c:891,1
    - Dst: wrapper_ostream_flush_real
      Src: /src/dovecot/src/lib/ostream-wrapper.c:898,1
    - Dst: wrapper_ostream_flush_wait
      Src: /src/dovecot/src/lib/ostream-wrapper.c:905,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:919,1
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:926,1
    - Dst: wrapper_ostream_finish
      Src: /src/dovecot/src/lib/ostream-wrapper.c:928,1
    - Dst: wrapper_ostream_flush_wait
      Src: /src/dovecot/src/lib/ostream-wrapper.c:934,1
    - Dst: wrapper_ostream_output_update_timeouts
      Src: /src/dovecot/src/lib/ostream-wrapper.c:940,1
    - Dst: wrapper_ostream_output_manage
      Src: /src/dovecot/src/lib/ostream-wrapper.c:944,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:947,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:949,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:950,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:958,1
    - Dst: wrapper_ostream_handle_parent_error
      Src: /src/dovecot/src/lib/ostream-wrapper.c:959,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib/ostream-wrapper.c:963,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:966,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:967,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 75
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 860
    functionDepth: 8
    functionLinenumber: 860
    functionLinenumberEnd: 969
    functionName: wrapper_ostream_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 1
    functionsReached:
    - wrapper_ostream_handle_pending_error
    - i_assert
    - container_of
    - o_stream_uncork
    - wrapper_ostream_flush_wait
    - wrapper_ostream_is_empty
    - o_stream_unref
    - o_stream_cork
    - wrapper_ostream_handle_parent_error
    - o_stream_ref
    - wrapper_ostream_output_update_timeouts
    - wrapper_ostream_flush_real
    - wrapper_ostream_finish
    - wrapper_ostream_output_manage
    - o_stream_is_corked
    - o_stream_uncork_flush
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_flush(struct ostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:977,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/ostream-wrapper.c:985,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/ostream-wrapper.c:989,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - callback
    - context
    argTypes:
    - struct ostream_private*
    - stream_flush_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 992
    functionName: wrapper_ostream_set_flush_callback
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - container_of
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void wrapper_ostream_set_flush_callback(struct ostream_private *stream,\n\t\t\t\t
      \  stream_flush_callback_t *callback,\n\t\t\t\t   void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:998,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1004,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1008,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - stream
    - set
    argTypes:
    - struct ostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 994
    functionDepth: 1
    functionLinenumber: 994
    functionLinenumberEnd: 1011
    functionName: wrapper_ostream_flush_pending
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_flush_pending(struct ostream_private *stream,
      bool set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1017,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1023,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1013
    functionDepth: 1
    functionLinenumber: 1013
    functionLinenumberEnd: 1025
    functionName: wrapper_ostream_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: size_t
    signature: size_t wrapper_ostream_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1031,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1045,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1027
    functionDepth: 3
    functionLinenumber: 1027
    functionLinenumberEnd: 1048
    functionName: wrapper_ostream_get_buffer_avail_size
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_get_buffer_avail_size
    linkageType: ''
    returnType: size_t
    signature: size_t wrapper_ostream_get_buffer_avail_size(const struct ostream_private
      *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1055,1
    - Dst: struct wrapper_ostream*::switch_ioloop_to
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1059,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1063,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct ostream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1050
    functionDepth: 1
    functionLinenumber: 1050
    functionLinenumberEnd: 1065
    functionName: wrapper_ostream_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_loop_move_timeout_to
    - struct wrapper_ostream*::switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: "void wrapper_ostream_switch_ioloop_to(struct ostream_private *stream,\n\t\t\t\t
      struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1094,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - wostream
    - max_buffer_size
    - blocking
    - event
    argTypes:
    - struct wrapper_ostream*
    - size_t
    - bool
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1071
    functionDepth: 3
    functionLinenumber: 1071
    functionLinenumberEnd: 1097
    functionName: wrapper_ostream_create
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - o_stream_create
    - event_create
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\nwrapper_ostream_create(struct wrapper_ostream *wostream,\n\t\t
      \      size_t max_buffer_size, bool blocking,\n\t\t       struct event *event)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1112,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1114,1
    - Dst: wrapper_ostream_finish
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1116,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1121,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1122,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1133,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1137,1
    - Dst: wrapper_ostream_callback
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1138,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1140,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1144,1
    - Dst: wrapper_ostream_callback
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1145,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1153,1
    - Dst: wrapper_ostream_output_manage
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1159,1
    - Dst: wrapper_ostream_is_empty
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1166,1
    - Dst: wrapper_ostream_is_filled
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1167,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1172,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 50
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1099
    functionDepth: 5
    functionLinenumber: 1099
    functionLinenumberEnd: 1175
    functionName: wrapper_ostream_continue
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 1
    functionsReached:
    - o_stream_close
    - wrapper_ostream_is_empty
    - o_stream_unref
    - o_stream_cork
    - wrapper_ostream_is_filled
    - o_stream_ref
    - io_loop_stop
    - o_stream_get_buffer_used_size
    - wrapper_ostream_finish
    - wrapper_ostream_output_manage
    - i_assert
    - o_stream_uncork_flush
    - wrapper_ostream_callback
    linkageType: ''
    returnType: int
    signature: int wrapper_ostream_continue(struct wrapper_ostream *wostream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1177
    functionDepth: 0
    functionLinenumber: 1177
    functionLinenumberEnd: 1190
    functionName: wrapper_ostream_trigger_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_trigger_flush(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - wostream
    - size_r
    argTypes:
    - struct wrapper_ostream*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1192
    functionDepth: 1
    functionLinenumber: 1192
    functionLinenumberEnd: 1203
    functionName: wrapper_ostream_get_buffered_size
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool wrapper_ostream_get_buffered_size(struct wrapper_ostream *wostream,\n\t\t\t\t
      \      uoff_t *size_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1208,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1209,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1210,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1214,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - wostream
    - output
    argTypes:
    - struct wrapper_ostream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1205
    functionDepth: 2
    functionLinenumber: 1205
    functionLinenumberEnd: 1217
    functionName: wrapper_ostream_output_available
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - o_stream_ref
    - i_assert
    - o_stream_cork
    linkageType: ''
    returnType: void
    signature: "void wrapper_ostream_output_available(struct wrapper_ostream *wostream,\n\t\t\t\t
      \     struct ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_trigger_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1223,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1224,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1219
    functionDepth: 2
    functionLinenumber: 1219
    functionLinenumberEnd: 1229
    functionName: wrapper_ostream_output_destroyed
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - o_stream_set_no_error_handling
    - o_stream_unref
    - wrapper_ostream_trigger_flush
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_output_destroyed(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1240,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1242,1
    - Dst: wrapper_ostream_trigger_flush
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1244,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - wostream
    - stream_errno
    - stream_error
    argTypes:
    - struct wrapper_ostream*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1231
    functionDepth: 2
    functionLinenumber: 1231
    functionLinenumberEnd: 1245
    functionName: wrapper_ostream_set_error
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - i_assert
    - wrapper_ostream_trigger_flush
    linkageType: ''
    returnType: void
    signature: "void wrapper_ostream_set_error(struct wrapper_ostream *wostream,\n\t\t\t
      \      int stream_errno, const char *stream_error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_callback
      Src: /src/dovecot/src/lib/ostream-wrapper.c:1258,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1247
    functionDepth: 2
    functionLinenumber: 1247
    functionLinenumberEnd: 1259
    functionName: wrapper_ostream_notify_error
    functionSourceFile: /src/dovecot/src/lib/ostream-wrapper.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_callback
    linkageType: ''
    returnType: void
    signature: void wrapper_ostream_notify_error(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-failure-at.c:18,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ostream-failure-at.c:21,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/ostream-failure-at.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 15
    functionDepth: 2
    functionLinenumber: 15
    functionLinenumberEnd: 23
    functionName: o_stream_failure_at_destroy
    functionSourceFile: /src/dovecot/src/lib/ostream-failure-at.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void o_stream_failure_at_destroy(struct iostream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-failure-at.c:30,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream-failure-at.c:51,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-failure-at.c:59,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream-failure-at.c:69,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ostream-failure-at.c:70,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib/ostream-failure-at.c:73,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 25
    functionDepth: 4
    functionLinenumber: 25
    functionLinenumberEnd: 78
    functionName: o_stream_failure_at_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-failure-at.c
    functionUses: 0
    functionsReached:
    - container_of
    - io_stream_set_error
    - o_stream_sendv
    - i_new
    - o_stream_copy_error_from_parent
    - i_free
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_failure_at_sendv(struct ostream_private *stream,\n\t\t\t
      \ const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-failure-at.c:84,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/ostream-failure-at.c:87,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib/ostream-failure-at.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 5
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: o_stream_failure_at_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-failure-at.c
    functionUses: 0
    functionsReached:
    - container_of
    - o_stream_flush_parent
    - io_stream_set_error
    linkageType: ''
    returnType: int
    signature: int o_stream_failure_at_flush(struct ostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-failure-at.c:101,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/ostream-failure-at.c:106,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-failure-at.c:107,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/ostream-failure-at.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - output
    - failure_offset
    - error_string
    argTypes:
    - struct ostream*
    - uoff_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 109
    functionName: o_stream_create_failure_at
    functionSourceFile: /src/dovecot/src/lib/ostream-failure-at.c
    functionUses: 4
    functionsReached:
    - i_strdup
    - o_stream_create
    - i_new
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_failure_at(struct ostream *output,
      uoff_t failure_offset,\n\t\t\t   const char *error_string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-failure-at.c:116,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/ostream-failure-at.c:119,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-failure-at.c:121,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/ostream-failure-at.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - output
    - error_string
    argTypes:
    - struct ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 123
    functionName: o_stream_create_failure_at_flush
    functionSourceFile: /src/dovecot/src/lib/ostream-failure-at.c
    functionUses: 2
    functionsReached:
    - i_strdup
    - o_stream_create
    - i_new
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      o_stream_create_failure_at_flush(struct ostream *output, const char *error_string)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - i
    - ','
    - o
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 14
    functionName: GOOD
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GOOD(i, o)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - i
    - ','
    - o
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 21
    functionName: BAD
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BAD(i, o)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_filter_create
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:233,1
    - Dst: event_filter_parse
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:234,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:236,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:240,1
    - Dst: event_filter_export
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:242,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:244,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:244,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:244,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:245,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:245,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:247,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:247,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:248,1
    - Dst: event_filter_unref
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - name
    - input
    - exp
    - fails
    argTypes:
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 226
    functionDepth: 11
    functionLinenumber: 226
    functionLinenumberEnd: 252
    functionName: testcase
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_begins_with
    - t_strdup_printf
    - event_filter_create
    - event_filter_parse
    - test_out_quiet
    - event_filter_export
    - event_filter_unref
    linkageType: ''
    returnType: void
    signature: "void testcase(const char *name, const char *input, const char *exp,\n\t\t
      \    bool fails)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:258,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:259,1
    - Dst: testcase
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 254
    functionDepth: 12
    functionLinenumber: 254
    functionLinenumberEnd: 263
    functionName: test_event_filter_parser_table
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - testcase
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_parser_table(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:274,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:275,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:276,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:278,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:279,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:280,1
    - Dst: testcase
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:282,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:282,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 267
    functionDepth: 12
    functionLinenumber: 267
    functionLinenumberEnd: 283
    functionName: test_event_filter_parser_categories
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - testcase
    - str_append
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_parser_categories(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:299,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:310,1
    - Dst: testcase
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 8
    argNames:
    - not1
    - not2
    - and
    - sp
    - sp1
    - sp2
    - sp3
    - sp4
    argTypes:
    - bool
    - bool
    - bool
    - char*
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 287
    functionDepth: 12
    functionLinenumber: 287
    functionLinenumberEnd: 320
    functionName: test_event_filter_parser_simple_nesting_helper
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - testcase
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void test_event_filter_parser_simple_nesting_helper(bool not1, bool
      not2,\n\t\t\t\t\t       bool and, const char *sp,\n\t\t\t\t\t       bool sp1,
      bool sp2,\n\t\t\t\t\t       bool sp3, bool sp4)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:335,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:336,1
    - Dst: test_event_filter_parser_simple_nesting_helper
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:347,1
    - Dst: test_event_filter_parser_simple_nesting_helper
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 322
    functionDepth: 13
    functionLinenumber: 322
    functionLinenumberEnd: 359
    functionName: test_event_filter_parser_simple_nesting
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - test_event_filter_parser_simple_nesting_helper
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_parser_simple_nesting(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:382,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:383,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:385,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:387,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:391,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:393,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:394,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:396,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:397,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:398,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:399,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:399,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:400,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:401,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:408,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:418,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:420,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:421,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:423,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:424,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:426,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:427,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:427,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:428,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:430,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:433,1
    - Dst: testcase
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:435,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:436,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:437,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 44
    argCount: 8
    argNames:
    - name
    - parens
    - key
    - keyq
    - key_special
    - value_in
    - value_exp
    - valueq
    argTypes:
    - char*
    - bool
    - char*
    - enum quoting
    - bool
    - char*
    - char*
    - enum quoting
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 370
    functionDepth: 12
    functionLinenumber: 370
    functionLinenumberEnd: 441
    functionName: generated_single_comparison
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - str_append_escaped
    - strlen
    - testcase
    - str_append
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void generated_single_comparison(const char *name,\n\t\t\t\t\tbool
      parens,\n\t\t\t\t\tconst char *key,\n\t\t\t\t\tenum quoting keyq,\n\t\t\t\t\tbool
      key_special,\n\t\t\t\t\tconst char *value_in,\n\t\t\t\t\tconst char *value_exp,\n\t\t\t\t\tenum
      quoting valueq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:447,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:447,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:450,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:451,1
    - Dst: generated_single_comparison
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:452,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:461,1
    - Dst: generated_single_comparison
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:462,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:471,1
    - Dst: generated_single_comparison
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:472,1
    - Dst: generated_single_comparison
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:480,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:492,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:493,1
    - Dst: generated_single_comparison
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:494,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:503,1
    - Dst: generated_single_comparison
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:504,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:513,1
    - Dst: generated_single_comparison
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:514,1
    - Dst: generated_single_comparison
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:522,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:532,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - parens
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 443
    functionDepth: 13
    functionLinenumber: 443
    functionLinenumberEnd: 533
    functionName: test_event_filter_parser_generated
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - test_end
    - generated_single_comparison
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_parser_generated(bool parens)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:537,1
    - Dst: testcase
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:538,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 535
    functionDepth: 12
    functionLinenumber: 535
    functionLinenumberEnd: 540
    functionName: test_event_filter_parser_simple_invalid
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - test_end
    - testcase
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_event_filter_parser_simple_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_event_filter_parser_table
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:544,1
    - Dst: test_event_filter_parser_categories
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:545,1
    - Dst: test_event_filter_parser_simple_nesting
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:546,1
    - Dst: test_event_filter_parser_generated
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:547,1
    - Dst: test_event_filter_parser_generated
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:548,1
    - Dst: test_event_filter_parser_simple_invalid
      Src: /src/dovecot/src/lib/test-event-filter-parser.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 542
    functionDepth: 14
    functionLinenumber: 542
    functionLinenumberEnd: 550
    functionName: test_event_filter_parser
    functionSourceFile: /src/dovecot/src/lib/test-event-filter-parser.c
    functionUses: 0
    functionsReached:
    - test_event_filter_parser_categories
    - test_event_filter_parser_simple_invalid
    - test_event_filter_parser_table
    - test_event_filter_parser_simple_nesting
    - test_event_filter_parser_generated
    linkageType: ''
    returnType: void
    signature: void test_event_filter_parser(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-memarea.c:11,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-memarea.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 9
    functionDepth: 2
    functionLinenumber: 9
    functionLinenumberEnd: 14
    functionName: test_callback
    functionSourceFile: /src/dovecot/src/lib/test-memarea.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_callback(buffer_t *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-memarea.c:22,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-memarea.c:23,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-memarea.c:24,1
    - Dst: memarea_init
      Src: /src/dovecot/src/lib/test-memarea.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-memarea.c:27,1
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib/test-memarea.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-memarea.c:28,1
    - Dst: memarea_get
      Src: /src/dovecot/src/lib/test-memarea.c:28,1
    - Dst: memarea_ref
      Src: /src/dovecot/src/lib/test-memarea.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-memarea.c:32,1
    - Dst: memarea_get_refcount
      Src: /src/dovecot/src/lib/test-memarea.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-memarea.c:33,1
    - Dst: memarea_get
      Src: /src/dovecot/src/lib/test-memarea.c:33,1
    - Dst: memarea_unref
      Src: /src/dovecot/src/lib/test-memarea.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-memarea.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-memarea.c:36,1
    - Dst: memarea_unref
      Src: /src/dovecot/src/lib/test-memarea.c:38,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-memarea.c:39,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-memarea.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 16
    functionDepth: 5
    functionLinenumber: 16
    functionLinenumberEnd: 42
    functionName: test_memarea
    functionSourceFile: /src/dovecot/src/lib/test-memarea.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - memarea_init
    - memarea_unref
    - buffer_create_dynamic
    - memarea_ref
    - test_end
    - test_assert
    - memarea_get
    - memarea_get_refcount
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_memarea(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-limit.c:15,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-limit.c:23,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 12
    functionDepth: 4
    functionLinenumber: 12
    functionLinenumberEnd: 25
    functionName: i_stream_limit_destroy
    functionSourceFile: /src/dovecot/src/lib/istream-limit.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_seek
    linkageType: ''
    returnType: void
    signature: void i_stream_limit_destroy(struct iostream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-limit.c:30,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-limit.c:35,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-limit.c:47,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-limit.c:51,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-limit.c:54,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-limit.c:70,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 27
    functionDepth: 4
    functionLinenumber: 27
    functionLinenumberEnd: 73
    functionName: i_stream_limit_read
    functionSourceFile: /src/dovecot/src/lib/istream-limit.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_get_data
    - i_stream_seek
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_limit_read(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-limit.c:79,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib/istream-limit.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 91
    functionName: i_stream_limit_stat
    functionSourceFile: /src/dovecot/src/lib/istream-limit.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: int i_stream_limit_stat(struct istream_private *stream, bool exact)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-limit.c:97,1
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib/istream-limit.c:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - stream
    - exact
    - size_r
    argTypes:
    - struct istream_private*
    - bool
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 112
    functionName: i_stream_limit_get_size
    functionSourceFile: /src/dovecot/src/lib/istream-limit.c
    functionUses: 0
    functionsReached:
    - container_of
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: "int i_stream_limit_get_size(struct istream_private *stream,\n\t\t\t\t
      \  bool exact, uoff_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-limit.c:118,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-limit.c:130,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-limit.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - input
    - v_size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 114
    functionDepth: 4
    functionLinenumber: 114
    functionLinenumberEnd: 132
    functionName: i_stream_create_limit
    functionSourceFile: /src/dovecot/src/lib/istream-limit.c
    functionUses: 38
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_limit(struct istream *input, uoff_t
      v_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib/istream-limit.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - input
    - v_offset
    - v_size
    argTypes:
    - struct istream*
    - uoff_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 5
    functionLinenumber: 134
    functionLinenumberEnd: 144
    functionName: i_stream_create_range
    functionSourceFile: /src/dovecot/src/lib/istream-limit.c
    functionUses: 1
    functionsReached:
    - i_stream_create_limit
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *i_stream_create_range(struct istream *input,\n\t\t\t\t
      \     uoff_t v_offset, uoff_t v_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:86,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:88,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:90,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:92,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:95,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:95,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:95,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:98,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - text_len
    - input
    - input_data
    - output
    argTypes:
    - unsigned int
    - struct istream*
    - struct istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 75
    functionDepth: 4
    functionLinenumber: 75
    functionLinenumberEnd: 100
    functionName: encode_test
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-encoder.c
    functionUses: 1
    functionsReached:
    - test_istream_set_size
    - strlen
    - i_stream_get_data
    - test_istream_set_allow_eof
    - i_stream_get_size
    - test_assert
    - memcmp
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: "void encode_test(unsigned int text_len,\n\t\t\tstruct istream *input,
      struct istream *input_data,\n\t\t\tconst char *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:106,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:109,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:110,1
    - Dst: i_stream_create_base64_encoder
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:111,1
    - Dst: encode_test
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:114,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:116,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - text
    - chars_per_line
    - crlf
    - output
    argTypes:
    - char*
    - unsigned int
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 102
    functionDepth: 6
    functionLinenumber: 102
    functionLinenumberEnd: 118
    functionName: encode_base64_test
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_istream_set_allow_eof
    - encode_test
    - test_istream_create_data
    - i_stream_create_base64_encoder
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void encode_base64_test(const char *text, unsigned int chars_per_line,\n\t\t
      \  bool crlf, const char *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:124,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:127,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:128,1
    - Dst: i_stream_create_base64url_encoder
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:129,1
    - Dst: encode_test
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:132,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:134,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - text
    - chars_per_line
    - crlf
    - output
    argTypes:
    - char*
    - unsigned int
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 120
    functionDepth: 6
    functionLinenumber: 120
    functionLinenumberEnd: 136
    functionName: encode_base64url_test
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_istream_set_allow_eof
    - encode_test
    - test_istream_create_data
    - i_stream_unref
    - i_stream_create_base64url_encoder
    linkageType: ''
    returnType: void
    signature: "void encode_base64url_test(const char *text, unsigned int chars_per_line,\n\t\t
      \     bool crlf, const char *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:141,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:146,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:147,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:147,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:150,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:152,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:154,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:155,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:156,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:156,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - input
    - textout
    argTypes:
    - struct istream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 138
    functionDepth: 4
    functionLinenumber: 138
    functionLinenumberEnd: 159
    functionName: test_encoder_seek
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - strlen
    - i_stream_get_data
    - i_stream_skip
    - i_stream_seek
    - test_assert
    - memcmp
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: void test_encoder_seek(struct istream *input, const char *textout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:166,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:166,1
    - Dst: i_stream_create_base64_encoder
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:167,1
    - Dst: test_encoder_seek
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:169,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:171,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - textin
    - textout
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 161
    functionDepth: 6
    functionLinenumber: 161
    functionLinenumberEnd: 173
    functionName: test_istream_base64_encoder_seek
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_encoder_seek
    - i_stream_create_base64_encoder
    - i_stream_unref
    - i_stream_create_from_data
    linkageType: ''
    returnType: void
    signature: void test_istream_base64_encoder_seek(const char *textin, const char
      *textout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:180,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:180,1
    - Dst: i_stream_create_base64url_encoder
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:181,1
    - Dst: test_encoder_seek
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:183,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:185,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - textin
    - textout
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 175
    functionDepth: 6
    functionLinenumber: 175
    functionLinenumberEnd: 187
    functionName: test_istream_base64url_encoder_seek
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - strlen
    - test_encoder_seek
    - i_stream_unref
    - i_stream_create_from_data
    - i_stream_create_base64url_encoder
    linkageType: ''
    returnType: void
    signature: void test_istream_base64url_encoder_seek(const char *textin, const
      char *textout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:193,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:196,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:196,1
    - Dst: encode_base64_test
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:198,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:200,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:203,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:206,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:206,1
    - Dst: encode_base64url_test
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:208,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:210,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:213,1
    - Dst: test_istream_base64_encoder_seek
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:214,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:216,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:218,1
    - Dst: test_istream_base64url_encoder_seek
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:219,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-base64-encoder.c:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 189
    functionDepth: 11
    functionLinenumber: 189
    functionLinenumberEnd: 222
    functionName: test_istream_base64_encoder
    functionSourceFile: /src/dovecot/src/lib/test-istream-base64-encoder.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - test_end
    - test_istream_base64_encoder_seek
    - test_istream_base64url_encoder_seek
    - encode_base64_test
    - N_ELEMENTS
    - test_begin
    - encode_base64url_test
    linkageType: ''
    returnType: void
    signature: void test_istream_base64_encoder(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_nanoseconds
      Src: /src/dovecot/src/lib/time-util.h:12,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: i_microseconds
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 3
    functionsReached:
    - i_nanoseconds
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t i_microseconds(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/time-util.h:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tv1
    - tv2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: timeval_diff_msecs
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 37
    functionsReached:
    - timeval_diff_usecs
    linkageType: ''
    returnType: long long
    signature: "long long timeval_diff_msecs(const struct timeval *tv1,\n\t\t\t\t\t
      \  const struct timeval *tv2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/time-util.h:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tv_r
    - usecs
    argTypes:
    - struct timeval*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 35
    functionName: timeval_from_usecs
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void timeval_from_usecs(struct timeval *tv_r, unsigned long usecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/time-util.h:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tv
    - usecs
    argTypes:
    - struct timeval*
    - suseconds_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 47
    functionName: timeval_add_usecs
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void timeval_add_usecs(struct timeval *tv, suseconds_t usecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/time-util.h:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tv
    - usecs
    argTypes:
    - struct timeval*
    - suseconds_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 59
    functionName: timeval_sub_usecs
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void timeval_sub_usecs(struct timeval *tv, suseconds_t usecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - tv
    - msecs
    argTypes:
    - struct timeval*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 70
    functionName: timeval_add_msecs
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timeval_add_msecs(struct timeval *tv, unsigned int msecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - tv
    - msecs
    argTypes:
    - struct timeval*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: timeval_sub_msecs
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timeval_sub_msecs(struct timeval *tv, unsigned int msecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: timeval_to_usecs
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned long long
    signature: unsigned long long timeval_to_usecs(const struct timeval *tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/time-util.h:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tv
    - val
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: timeval_add
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void timeval_add(struct timeval *tv, const struct timeval *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: timeval_round
    functionSourceFile: /src/dovecot/src/lib/time-util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t timeval_round(struct timeval *tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - mem
    - size
    - b
    argTypes:
    - void*
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 15
    functionName: mem_has_bytes
    functionSourceFile: /src/dovecot/src/lib/test-mempool-alloconly.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mem_has_bytes(const void *mem, size_t size, uint8_t b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:27,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:30,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:34,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:35,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:37,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:38,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:41,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:44,1
    - Dst: mem_has_bytes
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:45,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:45,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:47,1
    - Dst: mem_has_bytes
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:49,1
    - Dst: mem_has_bytes
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:49,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:50,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:53,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 17
    functionDepth: 5
    functionLinenumber: 17
    functionLinenumberEnd: 54
    functionName: test_mempool_alloconly
    functionSourceFile: /src/dovecot/src/lib/test-mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_buffer_get
    - mem_has_bytes
    - pool_unref
    - test_end
    - test_assert
    - memset
    - test_begin
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void test_mempool_alloconly(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:65,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:66,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:67,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:68,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:72,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:73,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:78,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:79,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:91,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-mempool-alloconly.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 94
    functionName: fatal_mempool_alloconly
    functionSourceFile: /src/dovecot/src/lib/test-mempool-alloconly.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - pool_unref
    - test_end
    - test_expect_fatal_string
    - test_begin
    - p_malloc
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_mempool_alloconly(unsigned int stage)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/process-title.c:44,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/process-title.c:49,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/process-title.c:52,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/process-title.c:60,1
    - Dst: memset
      Src: /src/dovecot/src/lib/process-title.c:68,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - argv
    - env
    argTypes:
    - char*[]
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 73
    functionName: proctitle_hack_init
    functionSourceFile: /src/dovecot/src/lib/process-title.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_assert
    - memset
    linkageType: ''
    returnType: void
    signature: void proctitle_hack_init(char *argv[], char *env[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/process-title.c:84,1
    - Dst: malloc
      Src: /src/dovecot/src/lib/process-title.c:87,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/process-title.c:89,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/process-title.c:91,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/process-title.c:94,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/process-title.c:98,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/process-title.c:99,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/process-title.c:100,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/process-title.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 105
    functionName: argv_dup
    functionSourceFile: /src/dovecot/src/lib/process-title.c
    functionUses: 0
    functionsReached:
    - memcpy
    - malloc
    - PTR_OFFSET
    - i_fatal_status
    - strlen
    - i_assert
    linkageType: ''
    returnType: char
    signature: char **argv_dup(char *old_argv[], void **memblock_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/process-title.c:109,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/process-title.c:115,1
    - Dst: memset
      Src: /src/dovecot/src/lib/process-title.c:120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - title
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 126
    functionName: proctitle_hack_set
    functionSourceFile: /src/dovecot/src/lib/process-title.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlen
    - memset
    linkageType: ''
    returnType: void
    signature: void proctitle_hack_set(const char *title)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: env_get_environ_p
      Src: /src/dovecot/src/lib/process-title.c:136,1
    - Dst: argv_dup
      Src: /src/dovecot/src/lib/process-title.c:140,1
    - Dst: argv_dup
      Src: /src/dovecot/src/lib/process-title.c:141,1
    - Dst: proctitle_hack_init
      Src: /src/dovecot/src/lib/process-title.c:142,1
    - Dst: setproctitle_init
      Src: /src/dovecot/src/lib/process-title.c:145,1
    - Dst: env_get_environ_p
      Src: /src/dovecot/src/lib/process-title.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - argv
    argTypes:
    - int
    - char**[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 148
    functionName: process_title_init
    functionSourceFile: /src/dovecot/src/lib/process-title.c
    functionUses: 1
    functionsReached:
    - env_get_environ_p
    - setproctitle_init
    - argv_dup
    - proctitle_hack_init
    linkageType: ''
    returnType: void
    signature: void process_title_init(int argc ATTR_UNUSED, char **argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/process-title.c:152,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/process-title.c:155,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/process-title.c:156,1
    - Dst: setproctitle
      Src: /src/dovecot/src/lib/process-title.c:159,1
    - Dst: setproctitle
      Src: /src/dovecot/src/lib/process-title.c:161,1
    - Dst: proctitle_hack_set
      Src: /src/dovecot/src/lib/process-title.c:164,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/process-title.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - title
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 150
    functionDepth: 8
    functionLinenumber: 150
    functionLinenumberEnd: 167
    functionName: process_title_set
    functionSourceFile: /src/dovecot/src/lib/process-title.c
    functionUses: 29
    functionsReached:
    - t_strconcat
    - setproctitle
    - i_strdup
    - proctitle_hack_set
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void process_title_set(const char *title)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: process_title_get
    functionSourceFile: /src/dovecot/src/lib/process-title.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *process_title_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: process_title_get_counter
    functionSourceFile: /src/dovecot/src/lib/process-title.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int process_title_get_counter(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: env_get_environ_p
      Src: /src/dovecot/src/lib/process-title.c:182,1
    - Dst: free
      Src: /src/dovecot/src/lib/process-title.c:184,1
    - Dst: free
      Src: /src/dovecot/src/lib/process-title.c:185,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/process-title.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 198
    functionName: process_title_deinit
    functionSourceFile: /src/dovecot/src/lib/process-title.c
    functionUses: 0
    functionsReached:
    - env_get_environ_p
    - i_free
    - free
    linkageType: ''
    returnType: void
    signature: void process_title_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct hmac_context_priv*::hash::loop
      Src: /src/dovecot/src/lib/hmac.h:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - data
    - size
    argTypes:
    - struct hmac_context*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 34
    functionName: hmac_update
    functionSourceFile: /src/dovecot/src/lib/hmac.h
    functionUses: 10
    functionsReached:
    - struct hmac_context_priv*::hash::loop
    linkageType: ''
    returnType: void
    signature: void hmac_update(struct hmac_context *_ctx, const void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/hmac.h:59,1
    - Dst: hmac_hkdf
      Src: /src/dovecot/src/lib/hmac.h:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 8
    argNames:
    - method
    - salt
    - salt_len
    - ikm
    - ikm_len
    - info
    - info_len
    - okm_len
    argTypes:
    - struct hash_method*
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 52
    functionDepth: 6
    functionLinenumber: 52
    functionLinenumberEnd: 63
    functionName: t_hmac_hkdf
    functionSourceFile: /src/dovecot/src/lib/hmac.h
    functionUses: 1
    functionsReached:
    - t_buffer_create
    - hmac_hkdf
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_hmac_hkdf(const struct hash_method *method,\n\t    const
      unsigned char *salt, size_t salt_len,\n\t    const unsigned char *ikm, size_t
      ikm_len,\n\t    const unsigned char *info, size_t info_len,\n\t    size_t okm_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:11,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:14,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:14,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:16,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:16,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:17,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:18,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:18,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:20,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:20,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:21,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:21,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:22,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:22,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:24,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:25,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:26,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:29,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:31,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:31,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:32,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:32,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:33,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:35,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:36,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:36,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:37,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:39,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:39,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:40,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:41,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/test-bits.c:41,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 44
    functionName: test_bits_unsigned_minus
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_end
    - UNSIGNED_MINUS
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_bits_unsigned_minus(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:63,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/test-bits.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:64,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/test-bits.c:64,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:68,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/test-bits.c:68,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:69,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/test-bits.c:69,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:70,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/test-bits.c:70,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:74,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/test-bits.c:74,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:75,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/test-bits.c:75,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 78
    functionName: test_nearest_power
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - nearest_power
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_nearest_power(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:82,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:84,1
    - Dst: bits_is_power_of_two
      Src: /src/dovecot/src/lib/test-bits.c:84,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:86,1
    - Dst: bits_is_power_of_two
      Src: /src/dovecot/src/lib/test-bits.c:86,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:87,1
    - Dst: bits_is_power_of_two
      Src: /src/dovecot/src/lib/test-bits.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:89,1
    - Dst: bits_is_power_of_two
      Src: /src/dovecot/src/lib/test-bits.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:90,1
    - Dst: bits_is_power_of_two
      Src: /src/dovecot/src/lib/test-bits.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:91,1
    - Dst: bits_is_power_of_two
      Src: /src/dovecot/src/lib/test-bits.c:91,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: test_bits_is_power_of_two
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - bits_is_power_of_two
    - test_assert_idx
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bits_is_power_of_two(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:102,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:103,1
    - Dst: bits_required64
      Src: /src/dovecot/src/lib/test-bits.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:104,1
    - Dst: bits_required64
      Src: /src/dovecot/src/lib/test-bits.c:104,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:105,1
    - Dst: bits_required64
      Src: /src/dovecot/src/lib/test-bits.c:105,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:109,1
    - Dst: bits_required64
      Src: /src/dovecot/src/lib/test-bits.c:109,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:110,1
    - Dst: bits_required64
      Src: /src/dovecot/src/lib/test-bits.c:110,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:111,1
    - Dst: bits_required64
      Src: /src/dovecot/src/lib/test-bits.c:111,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 114
    functionName: test_bits_requiredXX
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_end
    - test_assert
    - bits_required64
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bits_requiredXX(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:133,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-bits.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:135,1
    - Dst: UINT64_SUM_OVERFLOWS
      Src: /src/dovecot/src/lib/test-bits.c:135,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 137
    functionName: test_sum_overflows
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - UINT64_SUM_OVERFLOWS
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sum_overflows(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:146,1
    - Dst: BITS_FRACLOG_BUCKETS
      Src: /src/dovecot/src/lib/test-bits.c:150,1
    - Dst: bits_fraclog_bucket_start
      Src: /src/dovecot/src/lib/test-bits.c:151,1
    - Dst: bits_fraclog_bucket_end
      Src: /src/dovecot/src/lib/test-bits.c:152,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:153,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:155,1
    - Dst: bits_fraclog
      Src: /src/dovecot/src/lib/test-bits.c:155,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:156,1
    - Dst: bits_fraclog
      Src: /src/dovecot/src/lib/test-bits.c:156,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:158,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 162
    functionName: test_bits_fraclog
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - BITS_FRACLOG_BUCKETS
    - bits_fraclog
    - test_end
    - bits_fraclog_bucket_end
    - test_begin
    - bits_fraclog_bucket_start
    linkageType: ''
    returnType: void
    signature: void test_bits_fraclog(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:173,1
    - Dst: STR
      Src: /src/dovecot/src/lib/test-bits.c:173,1
    - Dst: BITS_FRACLOG_BUCKETS
      Src: /src/dovecot/src/lib/test-bits.c:177,1
    - Dst: bits_fraclog_bucket_start
      Src: /src/dovecot/src/lib/test-bits.c:178,1
    - Dst: bits_fraclog_bucket_end
      Src: /src/dovecot/src/lib/test-bits.c:179,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:180,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:182,1
    - Dst: bits_fraclog
      Src: /src/dovecot/src/lib/test-bits.c:182,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-bits.c:183,1
    - Dst: bits_fraclog
      Src: /src/dovecot/src/lib/test-bits.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:185,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 167
    functionDepth: 3
    functionLinenumber: 167
    functionLinenumberEnd: 188
    functionName: test_bits_fraclog_const
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - BITS_FRACLOG_BUCKETS
    - bits_fraclog
    - STR
    - test_end
    - test_assert
    - bits_fraclog_bucket_end
    - test_begin
    - bits_fraclog_bucket_start
    linkageType: ''
    returnType: void
    signature: void test_bits_fraclog_const(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: STR2
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR2(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: STR
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:194,1
    - Dst: bits_rotl32
      Src: /src/dovecot/src/lib/test-bits.c:194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:195,1
    - Dst: bits_rotl32
      Src: /src/dovecot/src/lib/test-bits.c:195,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:196,1
    - Dst: bits_rotl32
      Src: /src/dovecot/src/lib/test-bits.c:196,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:197,1
    - Dst: bits_rotl32
      Src: /src/dovecot/src/lib/test-bits.c:197,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 190
    functionDepth: 3
    functionLinenumber: 190
    functionLinenumberEnd: 200
    functionName: test_bits_rotl32
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - bits_rotl32
    - test_end
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_bits_rotl32(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:204,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:206,1
    - Dst: bits_rotl64
      Src: /src/dovecot/src/lib/test-bits.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:207,1
    - Dst: bits_rotl64
      Src: /src/dovecot/src/lib/test-bits.c:207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:208,1
    - Dst: bits_rotl64
      Src: /src/dovecot/src/lib/test-bits.c:208,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:209,1
    - Dst: bits_rotl64
      Src: /src/dovecot/src/lib/test-bits.c:209,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 212
    functionName: test_bits_rotl64
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_end
    - bits_rotl64
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_bits_rotl64(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:216,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:218,1
    - Dst: bits_rotr32
      Src: /src/dovecot/src/lib/test-bits.c:218,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:219,1
    - Dst: bits_rotr32
      Src: /src/dovecot/src/lib/test-bits.c:219,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:220,1
    - Dst: bits_rotr32
      Src: /src/dovecot/src/lib/test-bits.c:220,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:221,1
    - Dst: bits_rotr32
      Src: /src/dovecot/src/lib/test-bits.c:221,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 214
    functionDepth: 3
    functionLinenumber: 214
    functionLinenumberEnd: 224
    functionName: test_bits_rotr32
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_end
    - bits_rotr32
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_bits_rotr32(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:230,1
    - Dst: bits_rotr64
      Src: /src/dovecot/src/lib/test-bits.c:230,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:231,1
    - Dst: bits_rotr64
      Src: /src/dovecot/src/lib/test-bits.c:231,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:232,1
    - Dst: bits_rotr64
      Src: /src/dovecot/src/lib/test-bits.c:232,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:233,1
    - Dst: bits_rotr64
      Src: /src/dovecot/src/lib/test-bits.c:233,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 236
    functionName: test_bits_rotr64
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_end
    - bits_rotr64
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_bits_rotr64(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-bits.c:240,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:242,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib/test-bits.c:242,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:243,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib/test-bits.c:243,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:244,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib/test-bits.c:244,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:250,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib/test-bits.c:250,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:251,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib/test-bits.c:251,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:252,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib/test-bits.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:254,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-bits.c:254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:255,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-bits.c:255,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:256,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-bits.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:260,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib/test-bits.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:261,1
    - Dst: HAS_ANY_BITS
      Src: /src/dovecot/src/lib/test-bits.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-bits.c:262,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib/test-bits.c:262,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-bits.c:264,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 238
    functionDepth: 3
    functionLinenumber: 238
    functionLinenumberEnd: 265
    functionName: test_bit_tests
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - HAS_ANY_BITS
    - test_end
    - HAS_NO_BITS
    - test_assert
    - HAS_ALL_BITS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bit_tests(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_bits_unsigned_minus
      Src: /src/dovecot/src/lib/test-bits.c:269,1
    - Dst: test_nearest_power
      Src: /src/dovecot/src/lib/test-bits.c:270,1
    - Dst: test_bits_is_power_of_two
      Src: /src/dovecot/src/lib/test-bits.c:271,1
    - Dst: test_bits_requiredXX
      Src: /src/dovecot/src/lib/test-bits.c:272,1
    - Dst: test_bits_fraclog
      Src: /src/dovecot/src/lib/test-bits.c:273,1
    - Dst: test_bits_fraclog_const
      Src: /src/dovecot/src/lib/test-bits.c:274,1
    - Dst: test_bits_rotl32
      Src: /src/dovecot/src/lib/test-bits.c:275,1
    - Dst: test_bits_rotr32
      Src: /src/dovecot/src/lib/test-bits.c:276,1
    - Dst: test_bits_rotl64
      Src: /src/dovecot/src/lib/test-bits.c:277,1
    - Dst: test_bits_rotr64
      Src: /src/dovecot/src/lib/test-bits.c:278,1
    - Dst: test_sum_overflows
      Src: /src/dovecot/src/lib/test-bits.c:279,1
    - Dst: test_bit_tests
      Src: /src/dovecot/src/lib/test-bits.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 267
    functionDepth: 4
    functionLinenumber: 267
    functionLinenumberEnd: 281
    functionName: test_bits
    functionSourceFile: /src/dovecot/src/lib/test-bits.c
    functionUses: 0
    functionsReached:
    - test_nearest_power
    - test_bits_fraclog_const
    - test_bits_unsigned_minus
    - test_bits_rotr64
    - test_bits_rotr32
    - test_bits_requiredXX
    - test_bits_fraclog
    - test_sum_overflows
    - test_bits_rotl32
    - test_bit_tests
    - test_bits_rotl64
    - test_bits_is_power_of_two
    linkageType: ''
    returnType: void
    signature: void test_bits(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-noop.c:14,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib/istream-noop.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 11
    functionDepth: 4
    functionLinenumber: 11
    functionLinenumberEnd: 18
    functionName: i_stream_noop_read
    functionSourceFile: /src/dovecot/src/lib/istream-noop.c
    functionUses: 0
    functionsReached:
    - i_stream_read_copy_from_parent
    - i_stream_seek
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_noop_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 26
    functionName: i_stream_noop_seek
    functionSourceFile: /src/dovecot/src/lib/istream-noop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void i_stream_noop_seek(struct istream_private *stream,\n\t\t   uoff_t
      v_offset, bool mark ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-noop.c:33,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-noop.c:44,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-noop.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 28
    functionDepth: 4
    functionLinenumber: 28
    functionLinenumberEnd: 46
    functionName: i_stream_create_noop
    functionSourceFile: /src/dovecot/src/lib/istream-noop.c
    functionUses: 2
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_noop(struct istream *input)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:26,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:26,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 22
    functionDepth: 14
    functionLinenumber: 22
    functionLinenumberEnd: 28
    functionName: test_local_path
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - t_strconcat
    - t_normpath_to
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_local_path(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:33,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:33,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:36,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:36,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 30
    functionDepth: 14
    functionLinenumber: 30
    functionLinenumberEnd: 38
    functionName: test_absolute_path_no_change
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - t_normpath_to
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_absolute_path_no_change(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: path_height
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int path_height(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: path_height
      Src: /src/dovecot/src/lib/test-path-util.c:50,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-path-util.c:54,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:54,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 14
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: test_travel_to_root
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - path_height
    - t_normpath_to
    - test_assert_idx
    linkageType: ''
    returnType: void
    signature: void test_travel_to_root(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:62,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:62,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:65,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:65,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:68,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:68,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 59
    functionDepth: 14
    functionLinenumber: 59
    functionLinenumberEnd: 70
    functionName: test_extra_slashes
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - t_normpath_to
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_extra_slashes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:75,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:76,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:76,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:78,1
    - Dst: t_realpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 14
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: test_nonexistent_path
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - t_normpath_to
    - test_assert
    - t_realpath_to
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void test_nonexistent_path(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:86,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:86,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:89,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:89,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:92,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:92,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:95,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:95,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 82
    functionDepth: 14
    functionLinenumber: 82
    functionLinenumberEnd: 97
    functionName: test_relative_dotdot
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - test_assert_strcmp
    - t_normpath_to
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_relative_dotdot(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:102,1
    - Dst: t_realpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:102,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:106,1
    - Dst: t_realpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:106,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:106,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:108,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:108,1
    - Dst: t_get_working_dir
      Src: /src/dovecot/src/lib/test-path-util.c:111,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:112,1
    - Dst: chdir
      Src: /src/dovecot/src/lib/test-path-util.c:113,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:115,1
    - Dst: t_realpath
      Src: /src/dovecot/src/lib/test-path-util.c:115,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:115,1
    - Dst: chdir
      Src: /src/dovecot/src/lib/test-path-util.c:117,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 99
    functionDepth: 14
    functionLinenumber: 99
    functionLinenumberEnd: 119
    functionName: test_link1
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - t_realpath
    - i_fatal
    - test_assert_strcmp
    - chdir
    - t_get_working_dir
    - test_assert
    - t_realpath_to
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void test_link1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:125,1
    - Dst: t_realpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:125,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:125,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:127,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 14
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: test_link4
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - t_realpath_to
    - t_strconcat
    - test_assert_strcmp
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_link4(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:134,1
    - Dst: t_realpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 14
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: test_link_loop
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - t_realpath_to
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_link_loop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_abspath_to
      Src: /src/dovecot/src/lib/test-path-util.c:141,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:142,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-path-util.c:145,1
    - Dst: t_normpath_to
      Src: /src/dovecot/src/lib/test-path-util.c:145,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-path-util.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 139
    functionDepth: 14
    functionLinenumber: 139
    functionLinenumberEnd: 147
    functionName: test_abspath_vs_normpath
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - t_normpath_to
    - test_assert_strcmp
    - t_abspath_to
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_abspath_vs_normpath(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:151,1
    - Dst: symlink
      Src: /src/dovecot/src/lib/test-path-util.c:152,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:153,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:155,1
    - Dst: creat
      Src: /src/dovecot/src/lib/test-path-util.c:156,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:158,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-path-util.c:159,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:162,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:163,1
    - Dst: symlink
      Src: /src/dovecot/src/lib/test-path-util.c:164,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:165,1
    - Dst: symlink
      Src: /src/dovecot/src/lib/test-path-util.c:166,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:167,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:170,1
    - Dst: symlink
      Src: /src/dovecot/src/lib/test-path-util.c:171,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - tmpdir
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 149
    functionDepth: 8
    functionLinenumber: 149
    functionLinenumberEnd: 173
    functionName: create_links
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - i_fatal
    - creat
    - symlink
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void create_links(const char *tmpdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-path-util.c:185,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-path-util.c:186,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-path-util.c:187,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/test-path-util.c:188,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/test-path-util.c:188,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-path-util.c:188,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-path-util.c:188,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-path-util.c:189,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-path-util.c:191,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-path-util.c:192,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib/test-path-util.c:193,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-path-util.c:193,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-path-util.c:196,1
    - Dst: create_links
      Src: /src/dovecot/src/lib/test-path-util.c:198,1
    - Dst: test_link1
      Src: /src/dovecot/src/lib/test-path-util.c:200,1
    - Dst: test_link_loop
      Src: /src/dovecot/src/lib/test-path-util.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 175
    functionDepth: 15
    functionLinenumber: 175
    functionLinenumberEnd: 204
    functionName: test_link_alloc
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_len
    - create_links
    - strlen
    - I_MAX
    - nearest_power
    - test_link1
    - mkdir
    - test_link_loop
    - str_append
    linkageType: ''
    returnType: void
    signature: void test_link_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-path-util.c:212,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-path-util.c:213,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/test-path-util.c:214,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-path-util.c:215,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/test-path-util.c:216,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-path-util.c:222,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-path-util.c:224,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/test-path-util.c:225,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-path-util.c:226,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib/test-path-util.c:227,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-path-util.c:227,1
    - Dst: create_links
      Src: /src/dovecot/src/lib/test-path-util.c:229,1
    - Dst: test_link1
      Src: /src/dovecot/src/lib/test-path-util.c:230,1
    - Dst: test_link_loop
      Src: /src/dovecot/src/lib/test-path-util.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 206
    functionDepth: 15
    functionLinenumber: 206
    functionLinenumberEnd: 234
    functionName: test_link_alloc2
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - create_links
    - test_link1
    - mkdir
    - str_truncate
    - test_link_loop
    - str_append
    - memset
    - str_append_data
    linkageType: ''
    returnType: void
    signature: void test_link_alloc2(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib/test-path-util.c:240,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/test-path-util.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 236
    functionDepth: 14
    functionLinenumber: 236
    functionLinenumberEnd: 242
    functionName: test_cleanup
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 2
    functionsReached:
    - unlink_directory
    - i_error
    linkageType: ''
    returnType: void
    signature: void test_cleanup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib/test-path-util.c:247,1
    - Dst: t_normpath
      Src: /src/dovecot/src/lib/test-path-util.c:248,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:249,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-path-util.c:250,1
    - Dst: test_cleanup
      Src: /src/dovecot/src/lib/test-path-util.c:252,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib/test-path-util.c:253,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/test-path-util.c:254,1
    - Dst: create_links
      Src: /src/dovecot/src/lib/test-path-util.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 244
    functionDepth: 13
    functionLinenumber: 244
    functionLinenumberEnd: 258
    functionName: test_path_util_init
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - create_links
    - i_fatal
    - t_normpath
    - test_cleanup
    - mkdir
    - test_dir_get
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void test_path_util_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-path-util.c:262,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/test-path-util.c:263,1
    - Dst: test_path_util_init
      Src: /src/dovecot/src/lib/test-path-util.c:264,1
    - Dst: test_local_path
      Src: /src/dovecot/src/lib/test-path-util.c:265,1
    - Dst: test_absolute_path_no_change
      Src: /src/dovecot/src/lib/test-path-util.c:266,1
    - Dst: test_travel_to_root
      Src: /src/dovecot/src/lib/test-path-util.c:267,1
    - Dst: test_extra_slashes
      Src: /src/dovecot/src/lib/test-path-util.c:268,1
    - Dst: test_nonexistent_path
      Src: /src/dovecot/src/lib/test-path-util.c:269,1
    - Dst: test_relative_dotdot
      Src: /src/dovecot/src/lib/test-path-util.c:270,1
    - Dst: test_link1
      Src: /src/dovecot/src/lib/test-path-util.c:271,1
    - Dst: test_link4
      Src: /src/dovecot/src/lib/test-path-util.c:272,1
    - Dst: test_link_loop
      Src: /src/dovecot/src/lib/test-path-util.c:273,1
    - Dst: test_abspath_vs_normpath
      Src: /src/dovecot/src/lib/test-path-util.c:274,1
    - Dst: test_link_alloc
      Src: /src/dovecot/src/lib/test-path-util.c:275,1
    - Dst: test_link_alloc2
      Src: /src/dovecot/src/lib/test-path-util.c:276,1
    - Dst: test_cleanup
      Src: /src/dovecot/src/lib/test-path-util.c:277,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/test-path-util.c:278,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-path-util.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 260
    functionDepth: 16
    functionLinenumber: 260
    functionLinenumberEnd: 280
    functionName: test_path_util
    functionSourceFile: /src/dovecot/src/lib/test-path-util.c
    functionUses: 0
    functionsReached:
    - test_travel_to_root
    - test_extra_slashes
    - test_link_alloc2
    - test_local_path
    - test_path_util_init
    - alarm
    - test_link4
    - test_relative_dotdot
    - test_abspath_vs_normpath
    - test_nonexistent_path
    - test_end
    - test_link1
    - test_link_alloc
    - test_cleanup
    - test_link_loop
    - test_absolute_path_no_change
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_path_util(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-wildcard-match.c:74,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-wildcard-match.c:75,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-wildcard-match.c:76,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/lib/test-wildcard-match.c:76,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-wildcard-match.c:79,1
    - Dst: wildcard_match_escaped
      Src: /src/dovecot/src/lib/test-wildcard-match.c:79,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-wildcard-match.c:84,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-wildcard-match.c:85,1
    - Dst: wildcard_match
      Src: /src/dovecot/src/lib/test-wildcard-match.c:85,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-wildcard-match.c:90,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-wildcard-match.c:91,1
    - Dst: wildcard_match_escaped
      Src: /src/dovecot/src/lib/test-wildcard-match.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-wildcard-match.c:95,1
    - Dst: wildcard_is_literal
      Src: /src/dovecot/src/lib/test-wildcard-match.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-wildcard-match.c:96,1
    - Dst: wildcard_is_escaped_literal
      Src: /src/dovecot/src/lib/test-wildcard-match.c:96,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-wildcard-match.c:97,1
    - Dst: wildcard_is_escaped_literal
      Src: /src/dovecot/src/lib/test-wildcard-match.c:97,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-wildcard-match.c:98,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-wildcard-match.c:100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-wildcard-match.c:102,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib/test-wildcard-match.c:102,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-wildcard-match.c:103,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib/test-wildcard-match.c:103,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-wildcard-match.c:104,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib/test-wildcard-match.c:104,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-wildcard-match.c:105,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib/test-wildcard-match.c:105,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-wildcard-match.c:106,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib/test-wildcard-match.c:106,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-wildcard-match.c:107,1
    - Dst: wildcard_str_escape
      Src: /src/dovecot/src/lib/test-wildcard-match.c:107,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-wildcard-match.c:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 70
    functionDepth: 3
    functionLinenumber: 70
    functionLinenumberEnd: 109
    functionName: test_wildcard_match
    functionSourceFile: /src/dovecot/src/lib/test-wildcard-match.c
    functionUses: 0
    functionsReached:
    - wildcard_is_escaped_literal
    - wildcard_str_escape
    - test_assert_idx
    - wildcard_is_literal
    - test_assert_strcmp
    - test_end
    - wildcard_match_escaped
    - wildcard_match
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_wildcard_match(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-buffer.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - offset
    argTypes:
    - struct ostream_private*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 21
    functionName: o_stream_buffer_seek
    functionSourceFile: /src/dovecot/src/lib/ostream-buffer.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: int
    signature: int o_stream_buffer_seek(struct ostream_private *stream, uoff_t offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-buffer.c:28,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib/ostream-buffer.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - stream
    - data
    - size
    - offset
    argTypes:
    - struct ostream_private*
    - void*
    - size_t
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 23
    functionDepth: 4
    functionLinenumber: 23
    functionLinenumberEnd: 32
    functionName: o_stream_buffer_write_at
    functionSourceFile: /src/dovecot/src/lib/ostream-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_write
    - container_of
    linkageType: ''
    returnType: int
    signature: "int o_stream_buffer_write_at(struct ostream_private *stream,\n\t\t\t
      const void *data, size_t size, uoff_t offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-buffer.c:39,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/ostream-buffer.c:49,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib/ostream-buffer.c:50,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 34
    functionDepth: 4
    functionLinenumber: 34
    functionLinenumberEnd: 57
    functionName: o_stream_buffer_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_write
    - I_MIN
    - container_of
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_buffer_sendv(struct ostream_private *stream,\n\t\t
      \     const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-buffer.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: o_stream_buffer_get_buffer_used_size
    functionSourceFile: /src/dovecot/src/lib/ostream-buffer.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: size_t
    signature: size_t o_stream_buffer_get_buffer_used_size(const struct ostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-buffer.c:73,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-buffer.c:85,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib/ostream-buffer.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 68
    functionDepth: 3
    functionLinenumber: 68
    functionLinenumberEnd: 88
    functionName: o_stream_create_buffer
    functionSourceFile: /src/dovecot/src/lib/ostream-buffer.c
    functionUses: 27
    functionsReached:
    - o_stream_set_name
    - o_stream_create
    - i_new
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_buffer(buffer_t *buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/safe-mkstemp.c:24,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/safe-mkstemp.c:27,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/safe-mkstemp.c:28,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/safe-mkstemp.c:29,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib/safe-mkstemp.c:30,1
    - Dst: lstat
      Src: /src/dovecot/src/lib/safe-mkstemp.c:31,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/safe-mkstemp.c:31,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/safe-mkstemp.c:34,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/safe-mkstemp.c:34,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/safe-mkstemp.c:35,1
    - Dst: create_func
      Src: /src/dovecot/src/lib/safe-mkstemp.c:39,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/safe-mkstemp.c:39,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/safe-mkstemp.c:44,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - prefix
    - mode
    argTypes:
    - string_t*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 15
    functionDepth: 6
    functionLinenumber: 15
    functionLinenumberEnd: 49
    functionName: safe_mkstemp_create
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 0
    functionsReached:
    - str_c
    - random_fill
    - i_error
    - str_len
    - create_func
    - str_truncate
    - str_append
    - binary_to_hex
    - lstat
    linkageType: ''
    returnType: int
    signature: "int safe_mkstemp_create(string_t *prefix, mode_t mode,\n\t\t    int
      (*create_func)(const char *path, mode_t mode))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/dovecot/src/lib/safe-mkstemp.c:57,1
    - Dst: open
      Src: /src/dovecot/src/lib/safe-mkstemp.c:58,1
    - Dst: umask
      Src: /src/dovecot/src/lib/safe-mkstemp.c:59,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/safe-mkstemp.c:64,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - path
    - mode
    argTypes:
    - char*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 66
    functionName: safe_mkstemp_create_file
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 0
    functionsReached:
    - umask
    - open
    - i_error
    linkageType: ''
    returnType: int
    signature: int safe_mkstemp_create_file(const char *path, mode_t mode)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/safe-mkstemp.c:75,1
    - Dst: safe_mkstemp_create
      Src: /src/dovecot/src/lib/safe-mkstemp.c:76,1
    - Dst: fchown
      Src: /src/dovecot/src/lib/safe-mkstemp.c:82,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/safe-mkstemp.c:84,1
    - Dst: eperm_error_get_chgrp
      Src: /src/dovecot/src/lib/safe-mkstemp.c:84,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/safe-mkstemp.c:85,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/safe-mkstemp.c:87,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/safe-mkstemp.c:88,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/safe-mkstemp.c:92,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/safe-mkstemp.c:93,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/safe-mkstemp.c:93,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/safe-mkstemp.c:94,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - prefix
    - mode
    - uid
    - gid
    - gid_origin
    argTypes:
    - string_t*
    - mode_t
    - uid_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 68
    functionDepth: 7
    functionLinenumber: 68
    functionLinenumberEnd: 98
    functionName: safe_mkstemp_full
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_error
    - str_len
    - i_close_fd
    - i_unlink
    - safe_mkstemp_create
    - str_truncate
    - eperm_error_get_chgrp
    - fchown
    linkageType: ''
    returnType: int
    signature: "int safe_mkstemp_full(string_t *prefix, mode_t mode, uid_t uid, gid_t
      gid,\n\t\t  const char *gid_origin)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_mkstemp_full
      Src: /src/dovecot/src/lib/safe-mkstemp.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prefix
    - mode
    - uid
    - gid
    argTypes:
    - string_t*
    - mode_t
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 8
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: safe_mkstemp
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 10
    functionsReached:
    - safe_mkstemp_full
    linkageType: ''
    returnType: int
    signature: int safe_mkstemp(string_t *prefix, mode_t mode, uid_t uid, gid_t gid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_mkstemp_full
      Src: /src/dovecot/src/lib/safe-mkstemp.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prefix
    - mode
    - gid
    - gid_origin
    argTypes:
    - string_t*
    - mode_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 8
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: safe_mkstemp_group
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 2
    functionsReached:
    - safe_mkstemp_full
    linkageType: ''
    returnType: int
    signature: "int safe_mkstemp_group(string_t *prefix, mode_t mode,\n\t\t       gid_t
      gid, const char *gid_origin)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/safe-mkstemp.c:113,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/safe-mkstemp.c:116,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/lib/safe-mkstemp.c:117,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/safe-mkstemp.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - prefix
    - mode
    - uid
    - gid
    argTypes:
    - string_t*
    - mode_t
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 111
    functionDepth: 9
    functionLinenumber: 111
    functionLinenumberEnd: 120
    functionName: safe_mkstemp_hostpid
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 4
    functionsReached:
    - safe_mkstemp
    - str_printfa
    - str_truncate
    - str_len
    linkageType: ''
    returnType: int
    signature: int safe_mkstemp_hostpid(string_t *prefix, mode_t mode, uid_t uid,
      gid_t gid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/safe-mkstemp.c:125,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/safe-mkstemp.c:128,1
    - Dst: safe_mkstemp_group
      Src: /src/dovecot/src/lib/safe-mkstemp.c:129,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/safe-mkstemp.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - prefix
    - mode
    - gid
    - gid_origin
    argTypes:
    - string_t*
    - mode_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 122
    functionDepth: 9
    functionLinenumber: 122
    functionLinenumberEnd: 132
    functionName: safe_mkstemp_hostpid_group
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 2
    functionsReached:
    - str_printfa
    - str_truncate
    - safe_mkstemp_group
    - str_len
    linkageType: ''
    returnType: int
    signature: "int safe_mkstemp_hostpid_group(string_t *prefix, mode_t mode,\n\t\t\t
      \      gid_t gid, const char *gid_origin)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/dovecot/src/lib/safe-mkstemp.c:140,1
    - Dst: mkdir
      Src: /src/dovecot/src/lib/safe-mkstemp.c:141,1
    - Dst: umask
      Src: /src/dovecot/src/lib/safe-mkstemp.c:142,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/safe-mkstemp.c:147,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - path
    - mode
    argTypes:
    - char*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 149
    functionName: safe_mkstemp_create_dir
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 0
    functionsReached:
    - umask
    - mkdir
    - i_error
    linkageType: ''
    returnType: int
    signature: int safe_mkstemp_create_dir(const char *path, mode_t mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_mkstemp_create
      Src: /src/dovecot/src/lib/safe-mkstemp.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - mode
    argTypes:
    - string_t*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 7
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: safe_mkstemp_dir
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 0
    functionsReached:
    - safe_mkstemp_create
    linkageType: ''
    returnType: int
    signature: int safe_mkstemp_dir(string_t *prefix, mode_t mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/safe-mkstemp.c:158,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/safe-mkstemp.c:160,1
    - Dst: safe_mkstemp_dir
      Src: /src/dovecot/src/lib/safe-mkstemp.c:161,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/safe-mkstemp.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - prefix
    - mode
    argTypes:
    - string_t*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 156
    functionDepth: 8
    functionLinenumber: 156
    functionLinenumberEnd: 166
    functionName: safe_mkstemp_dir_pid
    functionSourceFile: /src/dovecot/src/lib/safe-mkstemp.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - str_truncate
    - safe_mkstemp_dir
    - str_len
    linkageType: ''
    returnType: int
    signature: int safe_mkstemp_dir_pid(string_t *prefix, mode_t mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: K
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: K(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: F0
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F0(b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: F1
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F1(b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: F2
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F2(b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: F3
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F3(b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: S
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 606
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S(n, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: H
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: W
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: W(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: PUTBYTE
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUTBYTE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: PUTPAD
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUTPAD(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/dovecot/src/lib/sha1.c:85,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:120,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:120,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:120,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:120,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:120,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:125,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:125,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:125,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:125,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:125,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:125,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:127,1
    - Dst: F0
      Src: /src/dovecot/src/lib/sha1.c:127,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:127,1
    - Dst: K
      Src: /src/dovecot/src/lib/sha1.c:127,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:128,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:132,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:132,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:132,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:132,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:132,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:132,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:133,1
    - Dst: F1
      Src: /src/dovecot/src/lib/sha1.c:133,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:133,1
    - Dst: K
      Src: /src/dovecot/src/lib/sha1.c:133,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:134,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:138,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:138,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:138,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:138,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:138,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:138,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:139,1
    - Dst: F2
      Src: /src/dovecot/src/lib/sha1.c:139,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:139,1
    - Dst: K
      Src: /src/dovecot/src/lib/sha1.c:139,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:140,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:144,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:144,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:144,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:144,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:144,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:144,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:145,1
    - Dst: F3
      Src: /src/dovecot/src/lib/sha1.c:145,1
    - Dst: W
      Src: /src/dovecot/src/lib/sha1.c:145,1
    - Dst: K
      Src: /src/dovecot/src/lib/sha1.c:145,1
    - Dst: S
      Src: /src/dovecot/src/lib/sha1.c:146,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:149,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:149,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:150,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:150,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:151,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:151,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:152,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:152,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:153,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:153,1
    - Dst: memset
      Src: /src/dovecot/src/lib/sha1.c:155,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 119
    argCount: 1
    argNames:
    - ctxt
    argTypes:
    - struct sha1_ctxt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 156
    functionName: ATTR_UNSIGNED_WRAPS::sha1_step
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached:
    - F3
    - F2
    - memmove
    - S
    - F0
    - W
    - H
    - K
    - F1
    - memset
    linkageType: ''
    returnType: void
    signature: 'void ATTR_UNSIGNED_WRAPS

      sha1_step(struct sha1_ctxt *ctxt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/sha1.c:163,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:164,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:165,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:166,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:167,1
    - Dst: H
      Src: /src/dovecot/src/lib/sha1.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctxt
    argTypes:
    - struct sha1_ctxt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 169
    functionName: sha1_init
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 6
    functionsReached:
    - memset
    - H
    linkageType: ''
    returnType: void
    signature: void sha1_init(struct sha1_ctxt *ctxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:177,1
    - Dst: memset
      Src: /src/dovecot/src/lib/sha1.c:182,1
    - Dst: sha1_step
      Src: /src/dovecot/src/lib/sha1.c:185,1
    - Dst: memset
      Src: /src/dovecot/src/lib/sha1.c:189,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:193,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:193,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:194,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:194,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:195,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:195,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:196,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:196,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:198,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:198,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:199,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:199,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:200,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:200,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:201,1
    - Dst: PUTPAD
      Src: /src/dovecot/src/lib/sha1.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 1
    argNames:
    - ctxt
    argTypes:
    - struct sha1_ctxt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 203
    functionName: sha1_pad
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached:
    - memset
    - PUTPAD
    - sha1_step
    linkageType: ''
    returnType: void
    signature: void sha1_pad(struct sha1_ctxt *ctxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/dovecot/src/lib/sha1.c:221,1
    - Dst: sha1_step
      Src: /src/dovecot/src/lib/sha1.c:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - ctxt
    - input
    - len
    argTypes:
    - struct sha1_ctxt*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 229
    functionName: sha1_loop
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 5
    functionsReached:
    - sha1_step
    - memmove
    linkageType: ''
    returnType: void
    signature: void sha1_loop(struct sha1_ctxt *ctxt, const void *input, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_pad
      Src: /src/dovecot/src/lib/sha1.c:237,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/sha1.c:239,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib/sha1.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 2
    argNames:
    - ctxt
    - digest0
    argTypes:
    - struct sha1_ctxt*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 253
    functionName: sha1_result
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 7
    functionsReached:
    - safe_memset
    - sha1_pad
    - memmove
    linkageType: ''
    returnType: void
    signature: void sha1_result(struct sha1_ctxt *ctxt, void *digest0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_init
      Src: /src/dovecot/src/lib/sha1.c:260,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib/sha1.c:261,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib/sha1.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - data
    - size
    - result
    argTypes:
    - void*
    - size_t
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 255
    functionDepth: 3
    functionLinenumber: 255
    functionLinenumberEnd: 263
    functionName: sha1_get_digest
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 8
    functionsReached:
    - sha1_init
    - sha1_result
    - sha1_loop
    linkageType: ''
    returnType: void
    signature: "void sha1_get_digest(const void *data, size_t size,\n\t\t     unsigned
      char result[STATIC_ARRAY SHA1_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_init
      Src: /src/dovecot/src/lib/sha1.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: hash_method_init_sha1
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached:
    - sha1_init
    linkageType: ''
    returnType: void
    signature: void hash_method_init_sha1(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib/sha1.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: hash_method_loop_sha1
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached:
    - sha1_loop
    linkageType: ''
    returnType: void
    signature: void hash_method_loop_sha1(void *context, const void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_result
      Src: /src/dovecot/src/lib/sha1.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 3
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: hash_method_result_sha1
    functionSourceFile: /src/dovecot/src/lib/sha1.c
    functionUses: 0
    functionsReached:
    - sha1_result
    linkageType: ''
    returnType: void
    signature: void hash_method_result_sha1(void *context, unsigned char *result_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-punycode.c:31,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-punycode.c:33,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-punycode.c:34,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/test-punycode.c:35,1
    - Dst: punycode_decode
      Src: /src/dovecot/src/lib/test-punycode.c:36,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-punycode.c:36,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-punycode.c:37,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-punycode.c:38,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-punycode.c:38,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-punycode.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 7
    functionDepth: 4
    functionLinenumber: 7
    functionLinenumberEnd: 41
    functionName: test_punycode_decode
    functionSourceFile: /src/dovecot/src/lib/test-punycode.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - test_assert_idx
    - strlen
    - test_end
    - punycode_decode
    - str_truncate
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_punycode_decode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_punycode_decode
      Src: /src/dovecot/src/lib/test-punycode.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: test_punycode
    functionSourceFile: /src/dovecot/src/lib/test-punycode.c
    functionUses: 0
    functionsReached:
    - test_punycode_decode
    linkageType: ''
    returnType: void
    signature: void test_punycode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: IPADDR_IS_V4
    functionSourceFile: /src/dovecot/src/lib/net.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPADDR_IS_V4(ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: IPADDR_IS_V6
    functionSourceFile: /src/dovecot/src/lib/net.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPADDR_IS_V6(ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: IPADDR_BITS
    functionSourceFile: /src/dovecot/src/lib/net.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPADDR_BITS(ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - err
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: NET_ACCEPT_ENOCONN
    functionSourceFile: /src/dovecot/src/lib/net.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NET_ACCEPT_ENOCONN(err)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 17
    functionName: cmp_int
    functionSourceFile: /src/dovecot/src/lib/test-priorityq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int cmp_int(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/test-priorityq.c:38,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-priorityq.c:41,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib/test-priorityq.c:43,1
    - Dst: priorityq_init
      Src: /src/dovecot/src/lib/test-priorityq.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:46,1
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib/test-priorityq.c:46,1
    - Dst: p_new
      Src: /src/dovecot/src/lib/test-priorityq.c:47,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/lib/test-priorityq.c:49,1
    - Dst: priorityq_items
      Src: /src/dovecot/src/lib/test-priorityq.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:52,1
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib/test-priorityq.c:52,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-priorityq.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:54,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-priorityq.c:55,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:58,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-priorityq.c:58,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-priorityq.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:61,1
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib/test-priorityq.c:61,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-priorityq.c:61,1
    - Dst: priorityq_peek
      Src: /src/dovecot/src/lib/test-priorityq.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:64,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:65,1
    - Dst: priorityq_pop
      Src: /src/dovecot/src/lib/test-priorityq.c:66,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:70,1
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib/test-priorityq.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:71,1
    - Dst: priorityq_peek
      Src: /src/dovecot/src/lib/test-priorityq.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:72,1
    - Dst: priorityq_pop
      Src: /src/dovecot/src/lib/test-priorityq.c:72,1
    - Dst: priorityq_deinit
      Src: /src/dovecot/src/lib/test-priorityq.c:73,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-priorityq.c:75,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-priorityq.c:78,1
    - Dst: priorityq_init
      Src: /src/dovecot/src/lib/test-priorityq.c:80,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-priorityq.c:82,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/lib/test-priorityq.c:83,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-priorityq.c:86,1
    - Dst: priorityq_remove
      Src: /src/dovecot/src/lib/test-priorityq.c:87,1
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib/test-priorityq.c:92,1
    - Dst: priorityq_pop
      Src: /src/dovecot/src/lib/test-priorityq.c:93,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:94,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-priorityq.c:100,1
    - Dst: priorityq_deinit
      Src: /src/dovecot/src/lib/test-priorityq.c:102,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-priorityq.c:104,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/test-priorityq.c:105,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 19
    functionDepth: 5
    functionLinenumber: 19
    functionLinenumberEnd: 106
    functionName: test_priorityq
    functionSourceFile: /src/dovecot/src/lib/test-priorityq.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - priorityq_pop
    - p_new
    - priorityq_peek
    - test_begin
    - priorityq_items
    - pool_unref
    - test_end
    - priorityq_init
    - priorityq_count
    - i_rand_limit
    - test_assert
    - priorityq_deinit
    - priorityq_remove
    - priorityq_add
    - i_assert
    - N_ELEMENTS
    - p_clear
    linkageType: ''
    returnType: void
    signature: void test_priorityq(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_info
      Src: /src/dovecot/src/lib/randgen.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - seed
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 25
    functionName: kiss_init
    functionSourceFile: /src/dovecot/src/lib/randgen.c
    functionUses: 0
    functionsReached:
    - i_info
    linkageType: ''
    returnType: void
    signature: void kiss_init(unsigned int seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 38
    functionName: kiss_rand
    functionSourceFile: /src/dovecot/src/lib/randgen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int kiss_rand(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - seed_r
    argTypes:
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: rand_get_last_seed
    functionSourceFile: /src/dovecot/src/lib/randgen.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rand_get_last_seed(unsigned int *seed_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/randgen.c:74,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/randgen.c:77,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/randgen.c:80,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/randgen.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 84
    functionName: random_open_urandom
    functionSourceFile: /src/dovecot/src/lib/randgen.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - open
    - fd_close_on_exec
    linkageType: ''
    returnType: void
    signature: void random_open_urandom(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/randgen.c:125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/randgen.c:126,1
    - Dst: kiss_rand
      Src: /src/dovecot/src/lib/randgen.c:131,1
    - Dst: arc4random_buf
      Src: /src/dovecot/src/lib/randgen.c:137,1
    - Dst: random_read
      Src: /src/dovecot/src/lib/randgen.c:146,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/randgen.c:146,1
    - Dst: random_read
      Src: /src/dovecot/src/lib/randgen.c:156,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/randgen.c:161,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/randgen.c:162,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/randgen.c:162,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 170
    functionName: random_fill
    functionSourceFile: /src/dovecot/src/lib/randgen.c
    functionUses: 36
    functionsReached:
    - memcpy
    - PTR_OFFSET
    - I_MIN
    - kiss_rand
    - i_assert
    - arc4random_buf
    - random_read
    linkageType: ''
    returnType: void
    signature: void random_fill(void *buf, size_t size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: kiss_init
      Src: /src/dovecot/src/lib/randgen.c:178,1
    - Dst: srand
      Src: /src/dovecot/src/lib/randgen.c:179,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/randgen.c:185,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/randgen.c:187,1
    - Dst: kiss_init
      Src: /src/dovecot/src/lib/randgen.c:188,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/randgen.c:194,1
    - Dst: random_open_urandom
      Src: /src/dovecot/src/lib/randgen.c:198,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/randgen.c:203,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/randgen.c:206,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/randgen.c:207,1
    - Dst: kiss_init
      Src: /src/dovecot/src/lib/randgen.c:208,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/randgen.c:209,1
    - Dst: srand
      Src: /src/dovecot/src/lib/randgen.c:214,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 172
    functionDepth: 4
    functionLinenumber: 172
    functionLinenumberEnd: 216
    functionName: random_init
    functionSourceFile: /src/dovecot/src/lib/randgen.c
    functionUses: 2
    functionsReached:
    - strcmp
    - random_fill
    - srand
    - i_close_fd
    - i_fatal
    - i_warning
    - getenv
    - random_open_urandom
    - str_to_uint
    - kiss_init
    linkageType: ''
    returnType: void
    signature: void random_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/randgen.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 223
    functionName: random_deinit
    functionSourceFile: /src/dovecot/src/lib/randgen.c
    functionUses: 2
    functionsReached:
    - i_close_fd
    linkageType: ''
    returnType: void
    signature: void random_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib/buffer-istream.c:16,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/buffer-istream.c:19,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/buffer-istream.c:20,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/buffer-istream.c:21,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer-istream.c:28,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/buffer-istream.c:31,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib/buffer-istream.c:31,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - buf
    - is
    - max_read_size
    - error_r
    argTypes:
    - buffer_t*
    - struct istream*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 8
    functionDepth: 7
    functionLinenumber: 8
    functionLinenumberEnd: 35
    functionName: buffer_append_full_istream
    functionSourceFile: /src/dovecot/src/lib/buffer-istream.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - I_MIN
    - i_stream_skip
    - i_stream_get_error
    - t_strdup
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: enum buffer_append_result
    signature: "enum buffer_append_result buffer_append_full_istream(buffer_t *buf,
      struct istream *is, size_t max_read_size,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib/buffer-istream.c:41,1
    - Dst: buffer_append_full_istream
      Src: /src/dovecot/src/lib/buffer-istream.c:43,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib/buffer-istream.c:45,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/buffer-istream.c:46,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/buffer-istream.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - buf
    - file
    - max_read_size
    - error_r
    argTypes:
    - buffer_t*
    - char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 37
    functionDepth: 11
    functionLinenumber: 37
    functionLinenumberEnd: 49
    functionName: buffer_append_full_file
    functionSourceFile: /src/dovecot/src/lib/buffer-istream.c
    functionUses: 2
    functionsReached:
    - eacces_error_get
    - i_stream_create_file
    - i_stream_unref
    - i_assert
    - buffer_append_full_istream
    linkageType: ''
    returnType: enum buffer_append_result
    signature: "enum buffer_append_result buffer_append_full_file(buffer_t *buf, const
      char *file, size_t max_read_size,\n\t\t\tconst char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-crlf.c:20,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-crlf.c:22,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:24,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-crlf.c:30,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:31,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-crlf.c:34,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - cstream
    argTypes:
    - struct crlf_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 14
    functionDepth: 5
    functionLinenumber: 14
    functionLinenumberEnd: 37
    functionName: i_stream_crlf_read_common
    functionSourceFile: /src/dovecot/src/lib/istream-crlf.c
    functionUses: 0
    functionsReached:
    - i_stream_try_alloc
    - i_assert
    - i_stream_get_data_size
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int i_stream_crlf_read_common(struct crlf_istream *cstream)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-crlf.c:42,1
    - Dst: i_stream_crlf_read_common
      Src: /src/dovecot/src/lib/istream-crlf.c:48,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-crlf.c:53,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:72,1
    - Dst: memchr
      Src: /src/dovecot/src/lib/istream-crlf.c:73,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-crlf.c:83,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:89,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:104,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:107,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-crlf.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:112,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 39
    functionDepth: 6
    functionLinenumber: 39
    functionLinenumberEnd: 115
    functionName: i_stream_crlf_read_crlf
    functionSourceFile: /src/dovecot/src/lib/istream-crlf.c
    functionUses: 0
    functionsReached:
    - memcpy
    - container_of
    - i_stream_get_data
    - memchr
    - i_stream_skip
    - i_stream_crlf_read_common
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_crlf_read_crlf(struct istream_private *stream)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-crlf.c:120,1
    - Dst: i_stream_crlf_read_common
      Src: /src/dovecot/src/lib/istream-crlf.c:126,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-crlf.c:130,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/istream-crlf.c:158,1
    - Dst: memchr
      Src: /src/dovecot/src/lib/istream-crlf.c:159,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-crlf.c:162,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:168,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-crlf.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:175,1
    - Dst: i_stream_crlf_read_lf
      Src: /src/dovecot/src/lib/istream-crlf.c:176,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-crlf.c:178,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 117
    functionDepth: 6
    functionLinenumber: 117
    functionLinenumberEnd: 181
    functionName: i_stream_crlf_read_lf
    functionSourceFile: /src/dovecot/src/lib/istream-crlf.c
    functionUses: 1
    functionsReached:
    - memcpy
    - container_of
    - i_stream_crlf_read_lf
    - I_MIN
    - i_stream_get_data
    - memchr
    - i_stream_skip
    - i_stream_crlf_read_common
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_crlf_read_lf(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-crlf.c:188,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-crlf.c:196,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-crlf.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - input
    - crlf
    argTypes:
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 198
    functionName: i_stream_create_crlf_full
    functionSourceFile: /src/dovecot/src/lib/istream-crlf.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_crlf_full(struct istream *input, bool crlf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_crlf_full
      Src: /src/dovecot/src/lib/istream-crlf.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 5
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: i_stream_create_crlf
    functionSourceFile: /src/dovecot/src/lib/istream-crlf.c
    functionUses: 11
    functionsReached:
    - i_stream_create_crlf_full
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_crlf(struct istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_crlf_full
      Src: /src/dovecot/src/lib/istream-crlf.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 205
    functionDepth: 5
    functionLinenumber: 205
    functionLinenumberEnd: 208
    functionName: i_stream_create_lf
    functionSourceFile: /src/dovecot/src/lib/istream-crlf.c
    functionUses: 4
    functionsReached:
    - i_stream_create_crlf_full
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_lf(struct istream *input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/dovecot/src/lib/lib.c:48,1
    - Dst: faccessat
      Src: /src/dovecot/src/lib/lib.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - dirfd
    - pathname
    - mode
    - flags
    argTypes:
    - int
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: i_faccessat2
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 10
    functionsReached:
    - syscall
    - faccessat
    linkageType: ''
    returnType: int
    signature: int i_faccessat2(int dirfd, const char *pathname, int mode, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/lib/lib.c:61,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/lib.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - path
    - source_fname
    - source_linenum
    argTypes:
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 67
    functionName: i_unlink
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 53
    functionsReached:
    - unlink
    - i_error
    linkageType: ''
    returnType: int
    signature: "int i_unlink(const char *path, const char *source_fname,\n\t     unsigned
      int source_linenum)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/dovecot/src/lib/lib.c:73,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/lib.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - path
    - source_fname
    - source_linenum
    argTypes:
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 82
    functionName: i_unlink_if_exists
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 41
    functionsReached:
    - unlink
    - i_error
    linkageType: ''
    returnType: int
    signature: "int i_unlink_if_exists(const char *path, const char *source_fname,\n\t\t
      \      unsigned int source_linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: i_getopt_reset
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void i_getopt_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_atexit_priority
      Src: /src/dovecot/src/lib/lib.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - lib_atexit_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: lib_atexit
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 5
    functionsReached:
    - lib_atexit_priority
    linkageType: ''
    returnType: void
    signature: void lib_atexit(lib_atexit_callback_t *callback)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib.c:106,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/lib.c:107,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib.c:110,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib.c:113,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib/lib.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - callback
    - priority
    argTypes:
    - lib_atexit_callback_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 121
    functionName: lib_atexit_priority
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 3
    functionsReached:
    - i_array_init
    - array_append_space
    - array_get
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void lib_atexit_priority(lib_atexit_callback_t *callback, int priority)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cb1
    - cb2
    argTypes:
    - struct atexit_callback*
    - struct atexit_callback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: atexit_callback_priority_cmp
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int atexit_callback_priority_cmp(const struct atexit_callback *cb1,\n\t\t\t\t\tconst
      struct atexit_callback *cb2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib.c:133,1
    - Dst: array_sort
      Src: /src/dovecot/src/lib/lib.c:134,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/lib.c:135,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/lib.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 139
    functionName: lib_atexit_run
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 1
    functionsReached:
    - array_sort
    - array_is_created
    - array_free
    - array_foreach
    linkageType: ''
    returnType: void
    signature: void lib_atexit_run(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib/lib.c:143,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib.c:145,1
    - Dst: dup
      Src: /src/dovecot/src/lib/lib.c:151,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib.c:153,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/lib.c:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 141
    functionDepth: 3
    functionLinenumber: 141
    functionLinenumberEnd: 157
    functionName: lib_open_non_stdio_dev_null
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 0
    functionsReached:
    - dup
    - i_fatal
    - open
    - fd_close_on_exec
    linkageType: ''
    returnType: void
    signature: void lib_open_non_stdio_dev_null(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - set
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: lib_set_clean_exit
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lib_set_clean_exit(bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_set_clean_exit
      Src: /src/dovecot/src/lib/lib.c:166,1
    - Dst: exit
      Src: /src/dovecot/src/lib/lib.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: lib_exit
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 12
    functionsReached:
    - exit
    - lib_set_clean_exit
    linkageType: ''
    returnType: void
    signature: void lib_exit(int status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/dovecot/src/lib/lib.c:180,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/lib.c:180,1
    - Dst: abort
      Src: /src/dovecot/src/lib/lib.c:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 185
    functionName: lib_atexit_handler
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 0
    functionsReached:
    - strlen
    - abort
    - write
    linkageType: ''
    returnType: void
    signature: void lib_atexit_handler(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib.c:189,1
    - Dst: random_init
      Src: /src/dovecot/src/lib/lib.c:190,1
    - Dst: data_stack_init
      Src: /src/dovecot/src/lib/lib.c:191,1
    - Dst: hostpid_init
      Src: /src/dovecot/src/lib/lib.c:192,1
    - Dst: lib_open_non_stdio_dev_null
      Src: /src/dovecot/src/lib/lib.c:193,1
    - Dst: lib_event_init
      Src: /src/dovecot/src/lib/lib.c:194,1
    - Dst: event_filter_init
      Src: /src/dovecot/src/lib/lib.c:195,1
    - Dst: lib_set_clean_exit
      Src: /src/dovecot/src/lib/lib.c:201,1
    - Dst: atexit
      Src: /src/dovecot/src/lib/lib.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 187
    functionDepth: 5
    functionLinenumber: 187
    functionLinenumberEnd: 208
    functionName: lib_init
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 22
    functionsReached:
    - lib_event_init
    - lib_open_non_stdio_dev_null
    - data_stack_init
    - random_init
    - event_filter_init
    - lib_set_clean_exit
    - hostpid_init
    - atexit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void lib_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: lib_is_initialized
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lib_is_initialized(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib.c:217,1
    - Dst: lib_atexit_run
      Src: /src/dovecot/src/lib/lib.c:219,1
    - Dst: ipwd_deinit
      Src: /src/dovecot/src/lib/lib.c:220,1
    - Dst: hostpid_deinit
      Src: /src/dovecot/src/lib/lib.c:221,1
    - Dst: event_filter_deinit
      Src: /src/dovecot/src/lib/lib.c:222,1
    - Dst: data_stack_deinit_event
      Src: /src/dovecot/src/lib/lib.c:223,1
    - Dst: lib_event_deinit
      Src: /src/dovecot/src/lib/lib.c:224,1
    - Dst: restrict_access_deinit
      Src: /src/dovecot/src/lib/lib.c:225,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/lib.c:226,1
    - Dst: data_stack_deinit
      Src: /src/dovecot/src/lib/lib.c:227,1
    - Dst: failures_deinit
      Src: /src/dovecot/src/lib/lib.c:228,1
    - Dst: process_title_deinit
      Src: /src/dovecot/src/lib/lib.c:229,1
    - Dst: random_deinit
      Src: /src/dovecot/src/lib/lib.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 215
    functionDepth: 6
    functionLinenumber: 215
    functionLinenumberEnd: 233
    functionName: lib_deinit
    functionSourceFile: /src/dovecot/src/lib/lib.c
    functionUses: 18
    functionsReached:
    - failures_deinit
    - event_filter_deinit
    - lib_atexit_run
    - data_stack_deinit_event
    - lib_event_deinit
    - restrict_access_deinit
    - i_close_fd
    - data_stack_deinit
    - ipwd_deinit
    - random_deinit
    - hostpid_deinit
    - i_assert
    - process_title_deinit
    linkageType: ''
    returnType: void
    signature: void lib_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str-parse.c:122,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-parse.c:123,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:124,1
    - Dst: str_parse_get_interval
      Src: /src/dovecot/src/lib/test-str-parse.c:124,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:126,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:128,1
    - Dst: str_parse_get_interval_msecs
      Src: /src/dovecot/src/lib/test-str-parse.c:128,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:130,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-parse.c:132,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:133,1
    - Dst: str_parse_get_interval_msecs
      Src: /src/dovecot/src/lib/test-str-parse.c:133,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:135,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-parse.c:137,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:138,1
    - Dst: str_parse_get_interval
      Src: /src/dovecot/src/lib/test-str-parse.c:138,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-parse.c:140,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:141,1
    - Dst: str_parse_get_interval_msecs
      Src: /src/dovecot/src/lib/test-str-parse.c:141,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str-parse.c:143,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 6
    functionDepth: 3
    functionLinenumber: 6
    functionLinenumberEnd: 144
    functionName: test_str_parse_get_interval
    functionSourceFile: /src/dovecot/src/lib/test-str-parse.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - str_parse_get_interval
    - test_end
    - str_parse_get_interval_msecs
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_parse_get_interval(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str-parse.c:148,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-parse.c:188,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:190,1
    - Dst: str_parse_get_size
      Src: /src/dovecot/src/lib/test-str-parse.c:190,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:192,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str-parse.c:193,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-str-parse.c:195,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-str-parse.c:197,1
    - Dst: str_parse_get_size
      Src: /src/dovecot/src/lib/test-str-parse.c:197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str-parse.c:199,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str-parse.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 203
    functionName: test_str_parse_get_size
    functionSourceFile: /src/dovecot/src/lib/test-str-parse.c
    functionUses: 0
    functionsReached:
    - str_parse_get_size
    - test_assert_idx
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_parse_get_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_str_parse_get_interval
      Src: /src/dovecot/src/lib/test-str-parse.c:207,1
    - Dst: test_str_parse_get_size
      Src: /src/dovecot/src/lib/test-str-parse.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 205
    functionDepth: 4
    functionLinenumber: 205
    functionLinenumberEnd: 209
    functionName: test_str_parse
    functionSourceFile: /src/dovecot/src/lib/test-str-parse.c
    functionUses: 0
    functionsReached:
    - test_str_parse_get_size
    - test_str_parse_get_interval
    linkageType: ''
    returnType: void
    signature: void test_str_parse(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/malloc-overflow.h:18,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 6
    argNames:
    - a
    - b
    - sizeof_a
    - sizeof_b
    - fname
    - linenum
    argTypes:
    - size_t
    - size_t
    - size_t
    - size_t
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 10
    functionDepth: 2
    functionLinenumber: 10
    functionLinenumberEnd: 22
    functionName: malloc_multiply_check
    functionSourceFile: /src/dovecot/src/lib/malloc-overflow.h
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: size_t
    signature: "size_t malloc_multiply_check(size_t a, size_t b, size_t sizeof_a,
      size_t sizeof_b,\n\t\t      const char *fname, unsigned int linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: MALLOC_MULTIPLY
    functionSourceFile: /src/dovecot/src/lib/malloc-overflow.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MALLOC_MULTIPLY(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: MALLOC_MULTIPLY
    functionSourceFile: /src/dovecot/src/lib/malloc-overflow.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MALLOC_MULTIPLY(a, b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/malloc-overflow.h:40,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 6
    argNames:
    - a
    - b
    - sizeof_a
    - sizeof_b
    - fname
    - linenum
    argTypes:
    - size_t
    - size_t
    - size_t
    - size_t
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 44
    functionName: malloc_add_check
    functionSourceFile: /src/dovecot/src/lib/malloc-overflow.h
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: size_t
    signature: "size_t malloc_add_check(size_t a, size_t b, size_t sizeof_a, size_t
      sizeof_b,\n\t\t const char *fname, unsigned int linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: MALLOC_ADD
    functionSourceFile: /src/dovecot/src/lib/malloc-overflow.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MALLOC_ADD(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: MALLOC_ADD
    functionSourceFile: /src/dovecot/src/lib/malloc-overflow.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MALLOC_ADD(a, b)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-buffer.c:17,1
    - Dst: i_rand_uchar
      Src: /src/dovecot/src/lib/test-buffer.c:19,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:20,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:25,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer.c:26,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:27,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-buffer.c:29,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:32,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:33,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:36,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:37,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib/test-buffer.c:39,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-buffer.c:40,1
    - Dst: buffer_write_zero
      Src: /src/dovecot/src/lib/test-buffer.c:42,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:43,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:49,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-buffer.c:51,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-buffer.c:52,1
    - Dst: buffer_append_zero
      Src: /src/dovecot/src/lib/test-buffer.c:55,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:56,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:61,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:62,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/test-buffer.c:62,1
    - Dst: buffer_insert
      Src: /src/dovecot/src/lib/test-buffer.c:64,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/test-buffer.c:65,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-buffer.c:68,1
    - Dst: buffer_insert_zero
      Src: /src/dovecot/src/lib/test-buffer.c:70,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/test-buffer.c:71,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:74,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:82,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:83,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/test-buffer.c:84,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/test-buffer.c:88,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:93,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:98,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:99,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:100,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/test-buffer.c:101,1
    - Dst: buffer_replace
      Src: /src/dovecot/src/lib/test-buffer.c:102,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/test-buffer.c:106,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:111,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/test-buffer.c:114,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-buffer.c:117,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:126,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:127,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:128,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/test-buffer.c:128,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib/test-buffer.c:129,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/test-buffer.c:130,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:136,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-buffer.c:137,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/test-buffer.c:138,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-buffer.c:139,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-buffer.c:140,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-buffer.c:145,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-buffer.c:148,1
    - Dst: test_out
      Src: /src/dovecot/src/lib/test-buffer.c:152,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib/test-buffer.c:154,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-buffer.c:155,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-buffer.c:157,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 116
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 6
    functionDepth: 11
    functionLinenumber: 6
    functionLinenumberEnd: 158
    functionName: test_buffer_random
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_write_zero
    - buffer_write
    - buffer_create_dynamic
    - buffer_copy
    - t_strdup_printf
    - buffer_set_used_size
    - i_rand_uchar
    - i_rand_limit
    - memcpy
    - buffer_append
    - memmove
    - buffer_get_space_unsafe
    - buffer_insert
    - buffer_free
    - test_out_reason
    - buffer_insert_zero
    - test_out
    - buffer_delete
    - memset
    - i_assert
    - buffer_append_zero
    - I_MAX
    - buffer_replace
    - memcmp
    linkageType: ''
    returnType: void
    signature: void test_buffer_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-buffer.c:164,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-buffer.c:165,1
    - Dst: buffer_write
      Src: /src/dovecot/src/lib/test-buffer.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer.c:167,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-buffer.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 169
    functionName: test_buffer_write
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_write
    - t_buffer_create
    - test_end
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_buffer_write(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-buffer.c:175,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-buffer.c:176,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:177,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/test-buffer.c:177,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer.c:178,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer.c:179,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-buffer.c:179,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/test-buffer.c:179,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-buffer.c:180,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/test-buffer.c:180,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer.c:181,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer.c:182,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-buffer.c:182,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib/test-buffer.c:182,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer.c:184,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-buffer.c:184,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/test-buffer.c:184,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-buffer.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 171
    functionDepth: 5
    functionLinenumber: 171
    functionLinenumberEnd: 186
    functionName: test_buffer_set_used_size
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_get_space_unsafe
    - t_buffer_create
    - buffer_set_used_size
    - test_end
    - buffer_append_space_unsafe
    - test_assert
    - memcmp
    - memset
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_buffer_set_used_size(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/test-buffer.c:197,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-buffer.c:202,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/test-buffer.c:204,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-buffer.c:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 195
    functionDepth: 4
    functionLinenumber: 195
    functionLinenumberEnd: 208
    functionName: binary_to_10
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    linkageType: ''
    returnType: char
    signature: char *binary_to_10(const unsigned char *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-buffer.c:212,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer.c:215,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/test-buffer.c:216,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/test-buffer.c:217,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/test-buffer.c:218,1
    - Dst: buffer_truncate_rshift_bits
      Src: /src/dovecot/src/lib/test-buffer.c:219,1
    - Dst: printf
      Src: /src/dovecot/src/lib/test-buffer.c:220,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib/test-buffer.c:221,1
    - Dst: binary_to_10
      Src: /src/dovecot/src/lib/test-buffer.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 210
    functionDepth: 6
    functionLinenumber: 210
    functionLinenumberEnd: 224
    functionName: test_foo
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_truncate_rshift_bits
    - printf
    - buffer_create_dynamic
    - buffer_set_used_size
    - binary_to_hex
    - buffer_append_c
    - binary_to_10
    linkageType: ''
    returnType: void
    signature: void test_foo(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-buffer.c:231,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-buffer.c:288,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-buffer.c:290,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer.c:291,1
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib/test-buffer.c:292,1
    - Dst: buffer_truncate_rshift_bits
      Src: /src/dovecot/src/lib/test-buffer.c:293,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-buffer.c:294,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib/test-buffer.c:294,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-buffer.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 228
    functionDepth: 4
    functionLinenumber: 228
    functionLinenumberEnd: 298
    functionName: test_buffer_truncate_bits
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_truncate_rshift_bits
    - test_assert_idx
    - buffer_copy
    - t_buffer_create
    - buffer_set_used_size
    - test_end
    - buffer_cmp
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_buffer_truncate_bits(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-buffer.c:307,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-buffer.c:312,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/test-buffer.c:312,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-buffer.c:313,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/test-buffer.c:313,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-buffer.c:314,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-buffer.c:315,1
    - Dst: buffer_replace
      Src: /src/dovecot/src/lib/test-buffer.c:317,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib/test-buffer.c:318,1
    - Dst: buffer_insert
      Src: /src/dovecot/src/lib/test-buffer.c:319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer.c:320,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-buffer.c:321,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 300
    functionDepth: 5
    functionLinenumber: 300
    functionLinenumberEnd: 325
    functionName: test_buffer_replace
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_create_dynamic
    - buffer_insert
    - buffer_replace
    - pool_datastack_create
    - buffer_delete
    - test_assert
    - memcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_buffer_replace(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_buffer_random
      Src: /src/dovecot/src/lib/test-buffer.c:332,1
    - Dst: test_buffer_write
      Src: /src/dovecot/src/lib/test-buffer.c:333,1
    - Dst: test_buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer.c:334,1
    - Dst: test_buffer_truncate_bits
      Src: /src/dovecot/src/lib/test-buffer.c:335,1
    - Dst: test_buffer_replace
      Src: /src/dovecot/src/lib/test-buffer.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 330
    functionDepth: 12
    functionLinenumber: 330
    functionLinenumberEnd: 337
    functionName: test_buffer
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - test_buffer_random
    - test_buffer_replace
    - test_buffer_write
    - test_buffer_set_used_size
    - test_buffer_truncate_bits
    linkageType: ''
    returnType: void
    signature: void test_buffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-buffer.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 342
    functionName: fatal_buffer_free
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void fatal_buffer_free(buffer_t *buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-buffer.c:350,1
    - Dst: buffer_create_dynamic_max
      Src: /src/dovecot/src/lib/test-buffer.c:351,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-buffer.c:352,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-buffer.c:353,1
    - Dst: test_fatal_set_callback
      Src: /src/dovecot/src/lib/test-buffer.c:354,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/test-buffer.c:355,1
    - Dst: buffer_create_dynamic_max
      Src: /src/dovecot/src/lib/test-buffer.c:358,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-buffer.c:359,1
    - Dst: test_fatal_set_callback
      Src: /src/dovecot/src/lib/test-buffer.c:360,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-buffer.c:361,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-buffer.c:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 344
    functionDepth: 5
    functionLinenumber: 344
    functionLinenumberEnd: 367
    functionName: fatal_buffer
    functionSourceFile: /src/dovecot/src/lib/test-buffer.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - test_fatal_set_callback
    - test_end
    - test_expect_fatal_string
    - buffer_append_c
    - buffer_create_dynamic_max
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_buffer(unsigned int stage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:21,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:27,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:32,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 16
    functionDepth: 4
    functionLinenumber: 16
    functionLinenumberEnd: 35
    functionName: i_stream_read_parent
    functionSourceFile: /src/dovecot/src/lib/istream-base64-decoder.c
    functionUses: 2
    functionsReached:
    - i_assert
    - i_stream_get_data_size
    - i_stream_read_memarea
    linkageType: ''
    returnType: int
    signature: int i_stream_read_parent(struct istream_private *stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:45,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:49,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:52,1
    - Dst: base64_decode_more
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:53,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:54,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:56,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:56,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - bstream
    argTypes:
    - struct base64_decoder_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 37
    functionDepth: 6
    functionLinenumber: 37
    functionLinenumberEnd: 64
    functionName: i_stream_base64_try_decode_block
    functionSourceFile: /src/dovecot/src/lib/istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - base64_decode_more
    - i_stream_try_alloc
    - I_MIN
    - i_stream_get_data
    - i_stream_skip
    - buffer_create_from_data
    - binary_to_hex
    linkageType: ''
    returnType: int
    signature: int i_stream_base64_try_decode_block(struct base64_decoder_istream
      *bstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:71,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:71,1
    - Dst: base64_decode_finish
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:73,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bstream
    argTypes:
    - struct base64_decoder_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 78
    functionName: i_stream_base64_finish_decode
    functionSourceFile: /src/dovecot/src/lib/istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_get_data_size
    - io_stream_set_error
    - base64_decode_finish
    linkageType: ''
    returnType: void
    signature: void i_stream_base64_finish_decode(struct base64_decoder_istream *bstream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:83,1
    - Dst: base64_decode_is_finished
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:87,1
    - Dst: i_stream_read_parent
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:93,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:99,1
    - Dst: i_stream_base64_finish_decode
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:100,1
    - Dst: i_stream_base64_try_decode_block
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:108,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:115,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 80
    functionDepth: 7
    functionLinenumber: 80
    functionLinenumberEnd: 117
    functionName: i_stream_base64_decoder_read
    functionSourceFile: /src/dovecot/src/lib/istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - i_stream_base64_finish_decode
    - container_of
    - i_stream_get_data_size
    - i_stream_read_parent
    - i_assert
    - base64_decode_is_finished
    - i_stream_base64_try_decode_block
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_base64_decoder_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:124,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:132,1
    - Dst: base64_decode_reset
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:134,1
    - Dst: i_stream_default_seek_nonseekable
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - v_offset
    - mark
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 119
    functionDepth: 5
    functionLinenumber: 119
    functionLinenumberEnd: 137
    functionName: i_stream_base64_decoder_seek
    functionSourceFile: /src/dovecot/src/lib/istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - i_stream_default_seek_nonseekable
    - container_of
    - i_stream_seek
    - base64_decode_reset
    linkageType: ''
    returnType: void
    signature: "void i_stream_base64_decoder_seek(struct istream_private *stream,\n\t\t\t
      \    uoff_t v_offset, bool mark)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:145,1
    - Dst: base64_decode_init
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:155,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:157,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - b64
    - input
    argTypes:
    - struct base64_scheme*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 139
    functionDepth: 4
    functionLinenumber: 139
    functionLinenumberEnd: 159
    functionName: i_stream_create_base64_decoder_common
    functionSourceFile: /src/dovecot/src/lib/istream-base64-decoder.c
    functionUses: 0
    functionsReached:
    - base64_decode_init
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_base64_decoder_common(const struct
      base64_scheme *b64,\n\t\t\t\t      struct istream *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_base64_decoder_common
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 5
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: i_stream_create_base64_decoder
    functionSourceFile: /src/dovecot/src/lib/istream-base64-decoder.c
    functionUses: 5
    functionsReached:
    - i_stream_create_base64_decoder_common
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_base64_decoder(struct istream *input)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_base64_decoder_common
      Src: /src/dovecot/src/lib/istream-base64-decoder.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 5
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: i_stream_create_base64url_decoder
    functionSourceFile: /src/dovecot/src/lib/istream-base64-decoder.c
    functionUses: 1
    functionsReached:
    - i_stream_create_base64_decoder_common
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_base64url_decoder(struct istream *input)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - pool
    - ','
    - type
    - ','
    - count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: p_new
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 534
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: p_new(pool, type, count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - pool
    - ','
    - mem
    - ','
    - type
    - ','
    - old_count
    - ','
    - new_count
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: p_realloc_type
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: p_realloc_type(pool, mem, type, old_count, new_count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool.h:118,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool.h:119,1
    - Dst: pool_t::v::malloc
      Src: /src/dovecot/src/lib/mempool.h:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - size
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 122
    functionName: p_malloc
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 43
    functionsReached:
    - i_panic
    - unlikely
    - pool_t::v::malloc
    linkageType: ''
    returnType: void
    signature: 'void * ATTR_MALLOC ATTR_RETURNS_NONNULL

      p_malloc(pool_t pool, size_t size)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/dovecot/src/lib/mempool.h:129,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool.h:130,1
    - Dst: pool_t::v::malloc
      Src: /src/dovecot/src/lib/mempool.h:134,1
    - Dst: pool_t::v::realloc
      Src: /src/dovecot/src/lib/mempool.h:136,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - pool
    - mem
    - old_size
    - new_size
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: p_realloc
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 7
    functionsReached:
    - i_panic
    - pool_t::v::realloc
    - unlikely
    - pool_t::v::malloc
    linkageType: ''
    returnType: void
    signature: 'void * ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL

      p_realloc(pool_t pool, void *mem, size_t old_size, size_t new_size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pool
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: p_free
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: p_free(pool, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pool
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 147
    functionName: p_free_and_null
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: p_free_and_null(pool, mem)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_t::v::free
      Src: /src/dovecot/src/lib/mempool.h:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - pool
    - mem
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 152
    functionName: p_free_internal
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 0
    functionsReached:
    - pool_t::v::free
    linkageType: ''
    returnType: void
    signature: void p_free_internal(pool_t pool, void *mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_t::v::clear
      Src: /src/dovecot/src/lib/mempool.h:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: p_clear
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 38
    functionsReached:
    - pool_t::v::clear
    linkageType: ''
    returnType: void
    signature: void p_clear(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_t::v::get_max_easy_alloc_size
      Src: /src/dovecot/src/lib/mempool.h:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: p_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 3
    functionsReached:
    - pool_t::v::get_max_easy_alloc_size
    linkageType: ''
    returnType: size_t
    signature: size_t p_get_max_easy_alloc_size(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_t::v::get_name
      Src: /src/dovecot/src/lib/mempool.h:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pool_get_name
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 2
    functionsReached:
    - pool_t::v::get_name
    linkageType: ''
    returnType: char
    signature: char *pool_get_name(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_t::v::ref
      Src: /src/dovecot/src/lib/mempool.h:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pool_ref
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 25
    functionsReached:
    - pool_t::v::ref
    linkageType: ''
    returnType: void
    signature: void pool_ref(pool_t pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: v::unref
      Src: /src/dovecot/src/lib/mempool.h:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 178
    functionName: pool_unref
    functionSourceFile: /src/dovecot/src/lib/mempool.h
    functionUses: 346
    functionsReached:
    - v::unref
    linkageType: ''
    returnType: void
    signature: void pool_unref(pool_t *pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: i_unreached
    functionSourceFile: /src/dovecot/src/lib/failures.h
    functionUses: 455
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_unreached()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib/unlink-old-files.c:23,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/unlink-old-files.c:26,1
    - Dst: utime
      Src: /src/dovecot/src/lib/unlink-old-files.c:32,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/unlink-old-files.c:33,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/unlink-old-files.c:35,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/unlink-old-files.c:36,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/unlink-old-files.c:37,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/unlink-old-files.c:39,1
    - Dst: readdir
      Src: /src/dovecot/src/lib/unlink-old-files.c:40,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/unlink-old-files.c:47,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/unlink-old-files.c:50,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/unlink-old-files.c:51,1
    - Dst: stat
      Src: /src/dovecot/src/lib/unlink-old-files.c:52,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unlink-old-files.c:52,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/unlink-old-files.c:54,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unlink-old-files.c:54,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib/unlink-old-files.c:55,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/unlink-old-files.c:56,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/unlink-old-files.c:56,1
    - Dst: closedir
      Src: /src/dovecot/src/lib/unlink-old-files.c:60,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/unlink-old-files.c:61,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 32
    argCount: 3
    argNames:
    - dir
    - prefix
    - min_time
    argTypes:
    - char*
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 14
    functionDepth: 4
    functionLinenumber: 14
    functionLinenumberEnd: 63
    functionName: unlink_old_files_real
    functionSourceFile: /src/dovecot/src/lib/unlink-old-files.c
    functionUses: 0
    functionsReached:
    - utime
    - t_str_new
    - str_printfa
    - opendir
    - i_error
    - readdir
    - str_len
    - str_c
    - strlen
    - closedir
    - stat
    - str_truncate
    - S_ISDIR
    - i_unlink_if_exists
    - str_append
    - strncmp
    linkageType: ''
    returnType: int
    signature: int unlink_old_files_real(const char *dir, const char *prefix, time_t
      min_time)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unlink_old_files_real
      Src: /src/dovecot/src/lib/unlink-old-files.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dir
    - prefix
    - min_time
    argTypes:
    - char*
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 5
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: unlink_old_files
    functionSourceFile: /src/dovecot/src/lib/unlink-old-files.c
    functionUses: 2
    functionsReached:
    - unlink_old_files_real
    linkageType: ''
    returnType: int
    signature: int unlink_old_files(const char *dir, const char *prefix, time_t min_time)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/dovecot/src/lib/time-util.c:12,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/time-util.c:13,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - tv_r
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 10
    functionDepth: 2
    functionLinenumber: 10
    functionLinenumberEnd: 14
    functionName: i_gettimeofday
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 30
    functionsReached:
    - gettimeofday
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void i_gettimeofday(struct timeval *tv_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/dovecot/src/lib/time-util.c:20,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/time-util.c:21,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 23
    functionName: i_nanoseconds
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 4
    functionsReached:
    - clock_gettime
    - i_fatal
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t i_nanoseconds(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - tv1
    - tv2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 36
    functionName: timeval_cmp
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timeval_cmp(const struct timeval *tv1, const struct timeval *tv2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/time-util.c:67,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - tv1
    - tv2
    - usec_margin
    argTypes:
    - struct timeval*
    - struct timeval*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 69
    functionName: timeval_cmp_margin
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int timeval_cmp_margin(const struct timeval *tv1, const struct timeval
      *tv2,\n\tunsigned int usec_margin)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tv1
    - tv2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 84
    functionName: timeval_diff_usecs
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: long long
    signature: "long long timeval_diff_usecs(const struct timeval *tv1,\n\t\t\t     const
      struct timeval *tv2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime
      Src: /src/dovecot/src/lib/time-util.c:92,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/time-util.c:93,1
    - Dst: mktime
      Src: /src/dovecot/src/lib/time-util.c:98,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/time-util.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 101
    functionName: time_to_local_day_start
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 3
    functionsReached:
    - i_zero
    - localtime
    - i_assert
    - mktime
    linkageType: ''
    returnType: time_t
    signature: time_t time_to_local_day_start(time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/time-util.c:105,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/time-util.c:106,1
    - Dst: strftime
      Src: /src/dovecot/src/lib/time-util.c:109,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/time-util.c:111,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/time-util.c:112,1
    - Dst: t_buffer_alloc
      Src: /src/dovecot/src/lib/time-util.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - fmt
    - tm
    argTypes:
    - char*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 103
    functionDepth: 5
    functionLinenumber: 103
    functionLinenumberEnd: 116
    functionName: strftime_real
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 0
    functionsReached:
    - t_buffer_get
    - strftime
    - strlen
    - t_buffer_alloc
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *strftime_real(const char *fmt, const struct tm *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strftime_real
      Src: /src/dovecot/src/lib/time-util.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fmt
    - tm
    argTypes:
    - char*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 6
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: t_strftime
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 4
    functionsReached:
    - strftime_real
    linkageType: ''
    returnType: char
    signature: char *t_strftime(const char *fmt, const struct tm *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strftime_real
      Src: /src/dovecot/src/lib/time-util.c:125,1
    - Dst: localtime
      Src: /src/dovecot/src/lib/time-util.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fmt
    - t
    argTypes:
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 6
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: t_strflocaltime
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 12
    functionsReached:
    - localtime
    - strftime_real
    linkageType: ''
    returnType: char
    signature: char *t_strflocaltime(const char *fmt, time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strftime_real
      Src: /src/dovecot/src/lib/time-util.c:130,1
    - Dst: gmtime
      Src: /src/dovecot/src/lib/time-util.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fmt
    - t
    argTypes:
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 6
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: t_strfgmtime
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 3
    functionsReached:
    - strftime_real
    - gmtime
    linkageType: ''
    returnType: char
    signature: char *t_strfgmtime(const char *fmt, time_t t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/time-util.c:137,1
    - Dst: str_to_time
      Src: /src/dovecot/src/lib/time-util.c:139,1
    - Dst: str_to_time
      Src: /src/dovecot/src/lib/time-util.c:143,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/time-util.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - tv_r
    argTypes:
    - char*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 7
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: str_to_timeval
    functionSourceFile: /src/dovecot/src/lib/time-util.c
    functionUses: 4
    functionsReached:
    - strchr
    - str_to_time
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: int str_to_timeval(const char *str, struct timeval *tv_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - num
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: primes_closest
    functionSourceFile: /src/dovecot/src/lib/primes.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int primes_closest(unsigned int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 10
    functionName: i_stream_data_read
    functionSourceFile: /src/dovecot/src/lib/istream-data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_data_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 17
    functionName: i_stream_data_seek
    functionSourceFile: /src/dovecot/src/lib/istream-data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void i_stream_data_seek(struct istream_private *stream, uoff_t v_offset,\n\t\t\t
      \      bool mark ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/istream-data.c:23,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib/istream-data.c:34,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib/istream-data.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 19
    functionDepth: 4
    functionLinenumber: 19
    functionLinenumberEnd: 38
    functionName: i_stream_create_from_data
    functionSourceFile: /src/dovecot/src/lib/istream-data.c
    functionUses: 64
    functionsReached:
    - i_stream_create
    - i_stream_set_name
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: struct istream *i_stream_create_from_data(const void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/istream-data.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: i_stream_copied_data_free
    functionSourceFile: /src/dovecot/src/lib/istream-data.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_copied_data_free(void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_malloc
      Src: /src/dovecot/src/lib/istream-data.c:53,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/istream-data.c:54,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib/istream-data.c:56,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib/istream-data.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 62
    functionName: i_stream_create_copy_from_data
    functionSourceFile: /src/dovecot/src/lib/istream-data.c
    functionUses: 6
    functionsReached:
    - memcpy
    - i_malloc
    - i_stream_create_from_data
    - i_stream_add_destroy_callback
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      i_stream_create_copy_from_data(const void *data, size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - signo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: SIGNAL_IS_TERMINAL
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIGNAL_IS_TERMINAL(signo)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/lib-signals.c:111,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - signo
    - sicode
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 66
    functionDepth: 11
    functionLinenumber: 66
    functionLinenumberEnd: 112
    functionName: lib_signal_code_to_str
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *lib_signal_code_to_str(int signo, int sicode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/dovecot/src/lib/lib-signals.c:124,1
    - Dst: lib_signals_syscall_error
      Src: /src/dovecot/src/lib/lib-signals.c:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - si
    argTypes:
    - siginfo_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 130
    functionName: lib_signal_delayed
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 1
    functionsReached:
    - lib_signals_syscall_error
    - write
    linkageType: ''
    returnType: void
    signature: void lib_signal_delayed(const siginfo_t *si)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/lib-signals.c:149,1
    - Dst: SIGNAL_IS_TERMINAL
      Src: /src/dovecot/src/lib/lib-signals.c:159,1
    - Dst: struct signal_handler*::immediate_handler
      Src: /src/dovecot/src/lib/lib-signals.c:168,1
    - Dst: lib_signal_delayed
      Src: /src/dovecot/src/lib/lib-signals.c:170,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 173
    functionName: sig_handler
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - i_zero
    - SIGNAL_IS_TERMINAL
    - lib_signal_delayed
    - struct signal_handler*::immediate_handler
    linkageType: ''
    returnType: void
    signature: void sig_handler(int signo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 184
    functionName: sig_ignore
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sig_ignore(int signo ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 196
    functionName: lib_signals_ioloop_find
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct signal_ioloop
    signature: 'struct signal_ioloop *

      lib_signals_ioloop_find(struct ioloop *ioloop)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_add_to
      Src: /src/dovecot/src/lib/lib-signals.c:205,1
    - Dst: io_set_never_wait_alone
      Src: /src/dovecot/src/lib/lib-signals.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct signal_ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 207
    functionName: lib_signals_init_io
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - io_set_never_wait_alone
    - io_add_to
    linkageType: ''
    returnType: void
    signature: void lib_signals_init_io(struct signal_ioloop *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ioloop_find
      Src: /src/dovecot/src/lib/lib-signals.c:214,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/lib-signals.c:216,1
    - Dst: lib_signals_init_io
      Src: /src/dovecot/src/lib/lib-signals.c:218,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/lib-signals.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 223
    functionName: lib_signals_ioloop_ref
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - lib_signals_init_io
    - lib_signals_ioloop_find
    - i_new
    linkageType: ''
    returnType: struct signal_ioloop
    signature: 'struct signal_ioloop *

      lib_signals_ioloop_ref(struct ioloop *ioloop)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:233,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/lib-signals.c:236,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/lib-signals.c:237,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-signals.c:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - _sig_ioloop
    argTypes:
    - struct signal_ioloop**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 239
    functionName: lib_signals_ioloop_unref
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - io_remove
    - i_assert
    - DLLIST_REMOVE
    - i_free
    linkageType: ''
    returnType: void
    signature: void lib_signals_ioloop_unref(struct signal_ioloop **_sig_ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ioloop_unref
      Src: /src/dovecot/src/lib/lib-signals.c:243,1
    - Dst: lib_signals_ioloop_ref
      Src: /src/dovecot/src/lib/lib-signals.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct signal_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 248
    functionName: signal_handler_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - lib_signals_ioloop_ref
    - lib_signals_ioloop_unref
    linkageType: ''
    returnType: void
    signature: void signal_handler_switch_ioloop(struct signal_handler *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ioloop_unref
      Src: /src/dovecot/src/lib/lib-signals.c:252,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/lib-signals.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct signal_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 254
    functionName: signal_handler_free
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - i_free
    - lib_signals_ioloop_unref
    linkageType: ''
    returnType: void
    signature: void signal_handler_free(struct signal_handler *h)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-signals.c:261,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/lib-signals.c:262,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-signals.c:265,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:270,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:273,1
    - Dst: struct signal_handler*::delayed_handler
      Src: /src/dovecot/src/lib/lib-signals.c:284,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/lib-signals.c:289,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-signals.c:290,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 293
    functionName: signal_handle_shadowed
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - array_count
    - struct signal_handler*::delayed_handler
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void signal_handle_shadowed(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-signals.c:299,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/lib-signals.c:300,1
    - Dst: lib_signals_ioloop_find
      Src: /src/dovecot/src/lib/lib-signals.c:303,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/lib-signals.c:305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 306
    functionName: signal_check_shadowed
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    - lib_signals_ioloop_find
    - io_set_pending
    linkageType: ''
    returnType: void
    signature: void signal_check_shadowed(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-signals.c:315,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/lib-signals.c:316,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/lib-signals.c:317,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:319,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib/lib-signals.c:323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - signo
    - si
    argTypes:
    - int
    - siginfo_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 324
    functionName: signal_shadow
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_idx_set
    - array_get
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void signal_shadow(int signo, const siginfo_t *si)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: signal_handle_shadowed
      Src: /src/dovecot/src/lib/lib-signals.c:339,1
    - Dst: sigfillset
      Src: /src/dovecot/src/lib/lib-signals.c:342,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:343,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib/lib-signals.c:344,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:345,1
    - Dst: read
      Src: /src/dovecot/src/lib/lib-signals.c:349,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/lib-signals.c:351,1
    - Dst: memset
      Src: /src/dovecot/src/lib/lib-signals.c:352,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:356,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:358,1
    - Dst: sigprocmask
      Src: /src/dovecot/src/lib/lib-signals.c:360,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:361,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:374,1
    - Dst: struct signal_handler*::delayed_handler
      Src: /src/dovecot/src/lib/lib-signals.c:389,1
    - Dst: signal_shadow
      Src: /src/dovecot/src/lib/lib-signals.c:395,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 398
    functionName: signal_read
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_fatal
    - memset
    - read
    - signal_handle_shadowed
    - sigfillset
    - struct signal_handler*::delayed_handler
    - signal_shadow
    - sigprocmask
    - i_assert
    linkageType: ''
    returnType: void
    signature: void signal_read(void *context ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:407,1
    - Dst: io_set_never_wait_alone
      Src: /src/dovecot/src/lib/lib-signals.c:414,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - expected
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 418
    functionName: lib_signals_update_expected_signals
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - io_set_never_wait_alone
    - i_assert
    linkageType: ''
    returnType: void
    signature: void lib_signals_update_expected_signals(bool expected)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ioloop_unref
      Src: /src/dovecot/src/lib/lib-signals.c:432,1
    - Dst: lib_signals_ioloop_ref
      Src: /src/dovecot/src/lib/lib-signals.c:434,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 438
    functionName: lib_signals_ioloop_switch
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - lib_signals_ioloop_ref
    - lib_signals_ioloop_unref
    linkageType: ''
    returnType: void
    signature: void lib_signals_ioloop_switch(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ioloop_switch
      Src: /src/dovecot/src/lib/lib-signals.c:444,1
    - Dst: signal_check_shadowed
      Src: /src/dovecot/src/lib/lib-signals.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - prev_ioloop ATTR_UNUSED
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 440
    functionDepth: 4
    functionLinenumber: 440
    functionLinenumberEnd: 448
    functionName: lib_signals_ioloop_switched
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - signal_check_shadowed
    - lib_signals_ioloop_switch
    linkageType: ''
    returnType: void
    signature: void lib_signals_ioloop_switched(struct ioloop *prev_ioloop ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ioloop_find
      Src: /src/dovecot/src/lib/lib-signals.c:454,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/lib-signals.c:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 459
    functionName: lib_signals_ioloop_destroyed
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - io_remove
    - lib_signals_ioloop_find
    linkageType: ''
    returnType: void
    signature: void lib_signals_ioloop_destroyed(struct ioloop *ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ioloop_unref
      Src: /src/dovecot/src/lib/lib-signals.c:468,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 461
    functionDepth: 2
    functionLinenumber: 461
    functionLinenumberEnd: 473
    functionName: lib_signals_ioloop_detach
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 1
    functionsReached:
    - lib_signals_ioloop_unref
    linkageType: ''
    returnType: void
    signature: void lib_signals_ioloop_detach(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ioloop_switch
      Src: /src/dovecot/src/lib/lib-signals.c:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 479
    functionName: lib_signals_ioloop_attach
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 1
    functionsReached:
    - lib_signals_ioloop_switch
    linkageType: ''
    returnType: void
    signature: void lib_signals_ioloop_attach(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/dovecot/src/lib/lib-signals.c:485,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:486,1
    - Dst: sigaction
      Src: /src/dovecot/src/lib/lib-signals.c:496,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:497,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - signo
    - flags
    argTypes:
    - int
    - enum libsig_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 498
    functionName: lib_signals_set
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - sigaction
    - sigemptyset
    linkageType: ''
    returnType: void
    signature: void lib_signals_set(int signo, enum libsig_flags flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_set_handler2
      Src: /src/dovecot/src/lib/lib-signals.c:504,1
    - Dst: lib_signals_set_handler2
      Src: /src/dovecot/src/lib/lib-signals.c:506,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - signo
    - flags
    - handler
    - context
    argTypes:
    - int
    - enum libsig_flags
    - signal_handler_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 507
    functionName: lib_signals_set_handler
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 12
    functionsReached:
    - lib_signals_set_handler2
    linkageType: ''
    returnType: void
    signature: "void lib_signals_set_handler(int signo, enum libsig_flags flags,\n\t\t\t
      \    signal_handler_t *handler, void *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:516,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-signals.c:519,1
    - Dst: lib_signals_set
      Src: /src/dovecot/src/lib/lib-signals.c:524,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/lib-signals.c:526,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/lib-signals.c:538,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:539,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/lib-signals.c:540,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/lib-signals.c:541,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/lib-signals.c:542,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/lib-signals.c:543,1
    - Dst: signal_handler_switch_ioloop
      Src: /src/dovecot/src/lib/lib-signals.c:545,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 5
    argNames:
    - signo
    - flags
    - immediate_handler
    - delayed_handler
    - context
    argTypes:
    - int
    - enum libsig_flags
    - signal_handler_t*
    - signal_handler_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 509
    functionDepth: 4
    functionLinenumber: 509
    functionLinenumberEnd: 546
    functionName: lib_signals_set_handler2
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 2
    functionsReached:
    - i_panic
    - fd_close_on_exec
    - fd_set_nonblock
    - lib_signals_set
    - i_fatal
    - i_new
    - signal_handler_switch_ioloop
    - i_assert
    - pipe
    linkageType: ''
    returnType: void
    signature: "void lib_signals_set_handler2(int signo, enum libsig_flags flags,\n\t\t\t
      \     signal_handler_t *immediate_handler,\n\t\t\t      signal_handler_t *delayed_handler,\n\t\t\t
      \     void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/dovecot/src/lib/lib-signals.c:552,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:553,1
    - Dst: sigaction
      Src: /src/dovecot/src/lib/lib-signals.c:567,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/lib-signals.c:568,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - signo
    - restart_syscalls
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 548
    functionDepth: 2
    functionLinenumber: 548
    functionLinenumberEnd: 569
    functionName: lib_signals_ignore_forced
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - sigaction
    - sigemptyset
    linkageType: ''
    returnType: void
    signature: void lib_signals_ignore_forced(int signo, bool restart_syscalls)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-signals.c:574,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:578,1
    - Dst: lib_signals_ignore_forced
      Src: /src/dovecot/src/lib/lib-signals.c:580,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - signo
    - restart_syscalls
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 571
    functionDepth: 3
    functionLinenumber: 571
    functionLinenumberEnd: 581
    functionName: lib_signals_ignore
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 5
    functionsReached:
    - i_panic
    - i_assert
    - lib_signals_ignore_forced
    linkageType: ''
    returnType: void
    signature: void lib_signals_ignore(int signo, bool restart_syscalls)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ignore_forced
      Src: /src/dovecot/src/lib/lib-signals.c:590,1
    - Dst: signal_handler_free
      Src: /src/dovecot/src/lib/lib-signals.c:600,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 583
    functionDepth: 3
    functionLinenumber: 583
    functionLinenumberEnd: 603
    functionName: lib_signals_clear_handlers_and_ignore
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 1
    functionsReached:
    - lib_signals_ignore_forced
    - signal_handler_free
    linkageType: ''
    returnType: void
    signature: void lib_signals_clear_handlers_and_ignore(int signo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_ignore_forced
      Src: /src/dovecot/src/lib/lib-signals.c:617,1
    - Dst: lib_signals_update_expected_signals
      Src: /src/dovecot/src/lib/lib-signals.c:622,1
    - Dst: signal_handler_free
      Src: /src/dovecot/src/lib/lib-signals.c:623,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-signals.c:628,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - signo
    - handler
    - context
    argTypes:
    - int
    - signal_handler_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 605
    functionDepth: 3
    functionLinenumber: 605
    functionLinenumberEnd: 630
    functionName: lib_signals_unset_handler
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 3
    functionsReached:
    - lib_signals_update_expected_signals
    - i_panic
    - lib_signals_ignore_forced
    - signal_handler_free
    linkageType: ''
    returnType: void
    signature: "void lib_signals_unset_handler(int signo, signal_handler_t *handler,\n\t\t\t
      \      void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_update_expected_signals
      Src: /src/dovecot/src/lib/lib-signals.c:643,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-signals.c:648,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - signo
    - expected
    - handler
    - context
    argTypes:
    - int
    - bool
    - signal_handler_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 632
    functionDepth: 2
    functionLinenumber: 632
    functionLinenumberEnd: 650
    functionName: lib_signals_set_expected
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 2
    functionsReached:
    - lib_signals_update_expected_signals
    - i_panic
    linkageType: ''
    returnType: void
    signature: "void lib_signals_set_expected(int signo, bool expected,\n\t\t\t      signal_handler_t
      *handler, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:659,1
    - Dst: signal_handler_switch_ioloop
      Src: /src/dovecot/src/lib/lib-signals.c:660,1
    - Dst: signal_check_shadowed
      Src: /src/dovecot/src/lib/lib-signals.c:663,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/lib-signals.c:668,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - signo
    - handler
    - context
    argTypes:
    - int
    - signal_handler_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 652
    functionDepth: 4
    functionLinenumber: 652
    functionLinenumberEnd: 670
    functionName: lib_signals_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 2
    functionsReached:
    - signal_handler_switch_ioloop
    - signal_check_shadowed
    - i_assert
    - i_panic
    linkageType: ''
    returnType: void
    signature: "void lib_signals_switch_ioloop(int signo,\n\t\t\t       signal_handler_t
      *handler, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dec2str_buf
      Src: /src/dovecot/src/lib/lib-signals.c:678,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/lib-signals.c:680,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/lib-signals.c:681,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/lib-signals.c:684,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/lib-signals.c:685,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/lib-signals.c:687,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 672
    functionDepth: 2
    functionLinenumber: 672
    functionLinenumberEnd: 691
    functionName: lib_signals_syscall_error
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 5
    functionsReached:
    - memcpy
    - write_full
    - strlen
    - dec2str_buf
    linkageType: ''
    returnType: void
    signature: void lib_signals_syscall_error(const char *prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_add_switch_callback
      Src: /src/dovecot/src/lib/lib-signals.c:698,1
    - Dst: io_loop_add_destroy_callback
      Src: /src/dovecot/src/lib/lib-signals.c:699,1
    - Dst: lib_signals_set
      Src: /src/dovecot/src/lib/lib-signals.c:704,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 693
    functionDepth: 3
    functionLinenumber: 693
    functionLinenumberEnd: 706
    functionName: lib_signals_init
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 10
    functionsReached:
    - io_loop_add_destroy_callback
    - lib_signals_set
    - io_loop_add_switch_callback
    linkageType: ''
    returnType: void
    signature: void lib_signals_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lib_signals_clear_handlers_and_ignore
      Src: /src/dovecot/src/lib/lib-signals.c:714,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:716,1
    - Dst: close
      Src: /src/dovecot/src/lib/lib-signals.c:719,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/lib-signals.c:720,1
    - Dst: close
      Src: /src/dovecot/src/lib/lib-signals.c:721,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/lib-signals.c:722,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/lib-signals.c:726,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/lib-signals.c:727,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/lib-signals.c:728,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 708
    functionDepth: 4
    functionLinenumber: 708
    functionLinenumberEnd: 729
    functionName: lib_signals_deinit
    functionSourceFile: /src/dovecot/src/lib/lib-signals.c
    functionUses: 10
    functionsReached:
    - lib_signals_clear_handlers_and_ignore
    - i_error
    - array_free
    - array_is_created
    - i_assert
    - close
    linkageType: ''
    returnType: void
    signature: void lib_signals_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-numpack.c:35,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-numpack.c:41,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-numpack.c:42,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-numpack.c:43,1
    - Dst: numpack_encode
      Src: /src/dovecot/src/lib/test-numpack.c:44,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-numpack.c:45,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-numpack.c:46,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-numpack.c:46,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-numpack.c:51,1
    - Dst: numpack_decode
      Src: /src/dovecot/src/lib/test-numpack.c:51,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-numpack.c:52,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-numpack.c:54,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-numpack.c:56,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-numpack.c:57,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-numpack.c:60,1
    - Dst: numpack_decode
      Src: /src/dovecot/src/lib/test-numpack.c:60,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-numpack.c:61,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-numpack.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 64
    functionName: test_numpack
    functionSourceFile: /src/dovecot/src/lib/test-numpack.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - numpack_decode
    - t_buffer_create
    - buffer_set_used_size
    - test_end
    - memcmp
    - N_ELEMENTS
    - numpack_encode
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_numpack(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: F
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: G
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: H
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: I
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: I(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - f
    - ','
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - x
    - ','
    - t
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: STEP
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STEP(f, a, b, c, d, x, t, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: SET
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 220
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: GET
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:77,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:77,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:78,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:78,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:79,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:79,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:80,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:80,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:81,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:81,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:82,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:82,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:83,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:83,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:84,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:84,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:85,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:85,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:86,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:86,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:87,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:87,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:88,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:88,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:89,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:89,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:90,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:90,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:91,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:91,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:92,1
    - Dst: SET
      Src: /src/dovecot/src/lib/md5.c:92,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:95,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:95,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:96,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:96,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:97,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:97,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:98,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:98,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:99,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:99,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:100,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:100,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:101,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:101,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:102,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:102,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:103,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:103,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:104,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:104,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:105,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:105,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:106,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:106,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:107,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:107,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:108,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:108,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:109,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:109,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:110,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:110,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:113,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:113,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:114,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:114,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:115,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:115,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:116,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:116,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:117,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:117,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:118,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:118,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:119,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:119,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:120,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:120,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:121,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:121,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:122,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:122,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:123,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:123,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:124,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:124,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:125,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:125,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:126,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:126,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:127,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:127,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:128,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:128,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:131,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:131,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:132,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:132,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:133,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:133,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:134,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:134,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:135,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:135,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:136,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:136,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:137,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:137,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:138,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:138,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:139,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:139,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:140,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:140,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:141,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:141,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:142,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:142,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:143,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:143,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:144,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:144,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:145,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:145,1
    - Dst: STEP
      Src: /src/dovecot/src/lib/md5.c:146,1
    - Dst: GET
      Src: /src/dovecot/src/lib/md5.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 85
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct md5_context*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 162
    functionName: body
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 19
    functionsReached:
    - GET
    - SET
    - STEP
    linkageType: ''
    returnType: void
    signature: "void * ATTR_NOWARN_UNUSED_RESULT ATTR_UNSIGNED_WRAPS\n        ATTR_NO_SANITIZE_UNDEFINED
      ATTR_NO_SANITIZE_INTEGER\n        ATTR_NO_SANITIZE_IMPLICIT_CONVERSION\nbody(struct
      md5_context *ctx, const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/md5.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct md5_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 174
    functionName: md5_init
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 10
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void md5_init(struct md5_context *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib/md5.c:197,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/md5.c:201,1
    - Dst: body
      Src: /src/dovecot/src/lib/md5.c:204,1
    - Dst: body
      Src: /src/dovecot/src/lib/md5.c:208,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/md5.c:212,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct md5_context*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 213
    functionName: ATTR_UNSIGNED_WRAPS::md5_update
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 0
    functionsReached:
    - memcpy
    - body
    linkageType: ''
    returnType: void
    signature: 'void ATTR_UNSIGNED_WRAPS

      md5_update(struct md5_context *ctx, const void *data, size_t size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/md5.c:229,1
    - Dst: body
      Src: /src/dovecot/src/lib/md5.c:230,1
    - Dst: memset
      Src: /src/dovecot/src/lib/md5.c:235,1
    - Dst: body
      Src: /src/dovecot/src/lib/md5.c:247,1
    - Dst: i_zero_safe
      Src: /src/dovecot/src/lib/md5.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - result
    argTypes:
    - struct md5_context*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 267
    functionName: md5_final
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 9
    functionsReached:
    - body
    - memset
    - i_zero_safe
    linkageType: ''
    returnType: void
    signature: void md5_final(struct md5_context *ctx, unsigned char result[STATIC_ARRAY
      MD5_RESULTLEN])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_init
      Src: /src/dovecot/src/lib/md5.c:274,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib/md5.c:275,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib/md5.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - data
    - size
    - result
    argTypes:
    - void*
    - size_t
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 277
    functionName: md5_get_digest
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 5
    functionsReached:
    - md5_init
    - md5_final
    - md5_update
    linkageType: ''
    returnType: void
    signature: "void md5_get_digest(const void *data, size_t size,\n\t\t    unsigned
      char result[STATIC_ARRAY MD5_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_init
      Src: /src/dovecot/src/lib/md5.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: hash_method_init_md5
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 0
    functionsReached:
    - md5_init
    linkageType: ''
    returnType: void
    signature: void hash_method_init_md5(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_update
      Src: /src/dovecot/src/lib/md5.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 286
    functionName: hash_method_loop_md5
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 0
    functionsReached:
    - md5_update
    linkageType: ''
    returnType: void
    signature: void hash_method_loop_md5(void *context, const void *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: md5_final
      Src: /src/dovecot/src/lib/md5.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 291
    functionName: hash_method_result_md5
    functionSourceFile: /src/dovecot/src/lib/md5.c
    functionUses: 0
    functionsReached:
    - md5_final
    linkageType: ''
    returnType: void
    signature: void hash_method_result_md5(void *context, unsigned char *result_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:14,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - mem
    - size
    - b
    argTypes:
    - void*
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 19
    functionName: mem_has_bytes
    functionSourceFile: /src/dovecot/src/lib/test-mempool-allocfree.c
    functionUses: 1
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: bool
    signature: bool mem_has_bytes(const void *mem, size_t size, uint8_t b)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:29,1
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:30,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:36,1
    - Dst: mem_has_bytes
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:36,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:40,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:45,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:47,1
    - Dst: mem_has_bytes
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:47,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:48,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:55,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:57,1
    - Dst: mem_has_bytes
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:57,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:58,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:63,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:71,1
    - Dst: pool_allocfree_get_total_used_size
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:71,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:73,1
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:76,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:80,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:81,1
    - Dst: mem_has_bytes
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:81,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:82,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:85,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:87,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 21
    functionDepth: 3
    functionLinenumber: 21
    functionLinenumberEnd: 88
    functionName: test_mempool_allocfree
    functionSourceFile: /src/dovecot/src/lib/test-mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - p_free
    - test_assert_idx
    - mem_has_bytes
    - pool_allocfree_get_total_used_size
    - pool_allocfree_create
    - pool_unref
    - test_end
    - test_assert
    - p_malloc
    - memset
    - test_begin
    - p_realloc
    linkageType: ''
    returnType: void
    signature: void test_mempool_allocfree(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:99,1
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:100,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:101,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:102,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:106,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:107,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:112,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:113,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:125,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-mempool-allocfree.c:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 128
    functionName: fatal_mempool_allocfree
    functionSourceFile: /src/dovecot/src/lib/test-mempool-allocfree.c
    functionUses: 0
    functionsReached:
    - pool_allocfree_create
    - pool_unref
    - test_end
    - test_expect_fatal_string
    - test_begin
    - p_malloc
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_mempool_allocfree(unsigned int stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aqueue
    - n
    argTypes:
    - struct aqueue*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: aqueue_idx
    functionSourceFile: /src/dovecot/src/lib/aqueue.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int aqueue_idx(const struct aqueue *aqueue, unsigned int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_file_close
      Src: /src/dovecot/src/lib/ostream-unix.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 13
    functionDepth: 3
    functionLinenumber: 13
    functionLinenumberEnd: 17
    functionName: o_stream_unix_close
    functionSourceFile: /src/dovecot/src/lib/ostream-unix.c
    functionUses: 0
    functionsReached:
    - o_stream_file_close
    linkageType: ''
    returnType: void
    signature: void o_stream_unix_close(struct iostream_private *stream, bool close_parent)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-unix.c:25,1
    - Dst: o_stream_file_writev
      Src: /src/dovecot/src/lib/ostream-unix.c:31,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-unix.c:37,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib/ostream-unix.c:38,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ostream-unix.c:41,1
    - Dst: o_stream_file_writev
      Src: /src/dovecot/src/lib/ostream-unix.c:57,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - fstream
    - iov
    - iov_count
    - error_r
    argTypes:
    - struct file_ostream*
    - struct const_iovec*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 19
    functionDepth: 11
    functionLinenumber: 19
    functionLinenumberEnd: 62
    functionName: o_stream_unix_writev
    functionSourceFile: /src/dovecot/src/lib/ostream-unix.c
    functionUses: 0
    functionsReached:
    - container_of
    - t_strdup_printf
    - fd_send
    - o_stream_file_writev
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_unix_writev(struct file_ostream *fstream,\n\t\t\t\t
      \   const struct const_iovec *iov,\n\t\t\t\t    unsigned int iov_count,\n\t\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-unix.c:69,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-unix.c:71,1
    - Dst: o_stream_create_file_common
      Src: /src/dovecot/src/lib/ostream-unix.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - fd
    - max_buffer_size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 79
    functionName: o_stream_create_unix
    functionSourceFile: /src/dovecot/src/lib/ostream-unix.c
    functionUses: 3
    functionsReached:
    - i_assert
    - i_new
    - o_stream_create_file_common
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *o_stream_create_unix(int fd, size_t max_buffer_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-unix.c:84,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ostream-unix.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - output
    - fd
    argTypes:
    - struct ostream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 93
    functionName: o_stream_unix_write_fd
    functionSourceFile: /src/dovecot/src/lib/ostream-unix.c
    functionUses: 2
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: bool
    signature: bool o_stream_unix_write_fd(struct ostream *output, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iso8601-date.c:73,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iso8601-date.c:73,1
    - Dst: iso8601_date_parse_tm
      Src: /src/dovecot/src/lib/test-iso8601-date.c:75,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-iso8601-date.c:76,1
    - Dst: test_out
      Src: /src/dovecot/src/lib/test-iso8601-date.c:77,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iso8601-date.c:77,1
    - Dst: test_out
      Src: /src/dovecot/src/lib/test-iso8601-date.c:83,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib/test-iso8601-date.c:84,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iso8601-date.c:85,1
    - Dst: iso8601_date_create_tm
      Src: /src/dovecot/src/lib/test-iso8601-date.c:87,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib/test-iso8601-date.c:88,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-iso8601-date.c:88,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iso8601-date.c:92,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 59
    functionDepth: 11
    functionLinenumber: 59
    functionLinenumberEnd: 93
    functionName: test_iso8601_date_valid
    functionSourceFile: /src/dovecot/src/lib/test-iso8601-date.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out_reason
    - strlen
    - t_strdup_printf
    - test_end
    - test_out
    - iso8601_date_create_tm
    - iso8601_date_parse_tm
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iso8601_date_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-iso8601-date.c:133,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iso8601-date.c:133,1
    - Dst: iso8601_date_parse_tm
      Src: /src/dovecot/src/lib/test-iso8601-date.c:135,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-iso8601-date.c:136,1
    - Dst: test_out
      Src: /src/dovecot/src/lib/test-iso8601-date.c:137,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-iso8601-date.c:137,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-iso8601-date.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 121
    functionDepth: 11
    functionLinenumber: 121
    functionLinenumberEnd: 140
    functionName: test_iso8601_date_invalid
    functionSourceFile: /src/dovecot/src/lib/test-iso8601-date.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strdup_printf
    - test_end
    - test_out
    - iso8601_date_parse_tm
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_iso8601_date_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_iso8601_date_valid
      Src: /src/dovecot/src/lib/test-iso8601-date.c:145,1
    - Dst: test_iso8601_date_invalid
      Src: /src/dovecot/src/lib/test-iso8601-date.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 143
    functionDepth: 12
    functionLinenumber: 143
    functionLinenumberEnd: 147
    functionName: test_iso8601_date
    functionSourceFile: /src/dovecot/src/lib/test-iso8601-date.c
    functionUses: 0
    functionsReached:
    - test_iso8601_date_invalid
    - test_iso8601_date_valid
    linkageType: ''
    returnType: void
    signature: void test_iso8601_date(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/ostream-hash.c:19,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib/ostream-hash.c:24,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib/ostream-hash.c:25,1
    - Dst: struct hash_ostream*::method::loop
      Src: /src/dovecot/src/lib/ostream-hash.c:33,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 14
    functionDepth: 4
    functionLinenumber: 14
    functionLinenumberEnd: 41
    functionName: o_stream_hash_sendv
    functionSourceFile: /src/dovecot/src/lib/ostream-hash.c
    functionUses: 0
    functionsReached:
    - o_stream_sendv
    - container_of
    - o_stream_copy_error_from_parent
    - struct hash_ostream*::method::loop
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_hash_sendv(struct ostream_private *stream,\n\t\t
      \   const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ostream-hash.c:49,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib/ostream-hash.c:54,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib/ostream-hash.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - output
    - method
    - hash_context
    argTypes:
    - struct ostream*
    - struct hash_method*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 56
    functionName: o_stream_create_hash
    functionSourceFile: /src/dovecot/src/lib/ostream-hash.c
    functionUses: 0
    functionsReached:
    - o_stream_create
    - i_new
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_hash(struct ostream *output, const
      struct hash_method *method,\n\t\t     void *hash_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/seq-range-array.h:21,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/seq-range-array.h:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - range
    argTypes:
    - struct seq_range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: seq_range_length
    functionSourceFile: /src/dovecot/src/lib/seq-range-array.h
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t seq_range_length(const struct seq_range *range)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-buffer-istream.c:16,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-buffer-istream.c:17,1
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib/test-buffer-istream.c:21,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-buffer-istream.c:22,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:25,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/test-buffer-istream.c:25,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-buffer-istream.c:25,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-buffer-istream.c:26,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:28,1
    - Dst: buffer_append_full_file
      Src: /src/dovecot/src/lib/test-buffer-istream.c:28,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-buffer-istream.c:30,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-buffer-istream.c:30,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-buffer-istream.c:33,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer-istream.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:35,1
    - Dst: buffer_append_full_file
      Src: /src/dovecot/src/lib/test-buffer-istream.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:37,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-buffer-istream.c:38,1
    - Dst: open
      Src: /src/dovecot/src/lib/test-buffer-istream.c:41,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:42,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-buffer-istream.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:45,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/test-buffer-istream.c:45,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-buffer-istream.c:45,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-buffer-istream.c:47,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer-istream.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:49,1
    - Dst: buffer_append_full_file
      Src: /src/dovecot/src/lib/test-buffer-istream.c:49,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-buffer-istream.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:54,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-buffer-istream.c:54,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-buffer-istream.c:54,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer-istream.c:56,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:57,1
    - Dst: chmod
      Src: /src/dovecot/src/lib/test-buffer-istream.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:59,1
    - Dst: buffer_append_full_file
      Src: /src/dovecot/src/lib/test-buffer-istream.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:61,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-buffer-istream.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:63,1
    - Dst: chmod
      Src: /src/dovecot/src/lib/test-buffer-istream.c:63,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/test-buffer-istream.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:66,1
    - Dst: buffer_append_full_file
      Src: /src/dovecot/src/lib/test-buffer-istream.c:66,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-buffer-istream.c:68,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-buffer-istream.c:68,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-buffer-istream.c:69,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 13
    functionDepth: 12
    functionLinenumber: 13
    functionLinenumberEnd: 70
    functionName: test_buffer_append_full_file
    functionSourceFile: /src/dovecot/src/lib/test-buffer-istream.c
    functionUses: 0
    functionsReached:
    - str_c
    - write_full
    - strlen
    - open
    - t_buffer_create
    - i_close_fd
    - test_dir_prepend
    - test_assert_strcmp
    - buffer_set_used_size
    - i_unlink
    - test_end
    - buffer_append_full_file
    - test_assert
    - memcmp
    - i_assert
    - chmod
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_buffer_append_full_file(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-buffer-istream.c:76,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib/test-buffer-istream.c:77,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:78,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-buffer-istream.c:78,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-buffer-istream.c:79,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-buffer-istream.c:80,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-buffer-istream.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:85,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/test-buffer-istream.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:87,1
    - Dst: buffer_append_full_istream
      Src: /src/dovecot/src/lib/test-buffer-istream.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:89,1
    - Dst: write_full
      Src: /src/dovecot/src/lib/test-buffer-istream.c:89,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-buffer-istream.c:90,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-buffer-istream.c:92,1
    - Dst: buffer_append_full_istream
      Src: /src/dovecot/src/lib/test-buffer-istream.c:92,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-buffer-istream.c:94,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/test-buffer-istream.c:94,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-buffer-istream.c:95,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-buffer-istream.c:96,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-buffer-istream.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 72
    functionDepth: 8
    functionLinenumber: 72
    functionLinenumberEnd: 99
    functionName: test_buffer_append_full_istream
    functionSourceFile: /src/dovecot/src/lib/test-buffer-istream.c
    functionUses: 0
    functionsReached:
    - str_c
    - i_stream_create_fd
    - fd_set_nonblock
    - write_full
    - i_close_fd
    - t_buffer_create
    - test_assert_strcmp
    - test_end
    - test_assert
    - i_stream_unref
    - buffer_append_full_istream
    - test_begin
    - pipe
    linkageType: ''
    returnType: void
    signature: void test_buffer_append_full_istream(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_buffer_append_full_file
      Src: /src/dovecot/src/lib/test-buffer-istream.c:103,1
    - Dst: test_buffer_append_full_istream
      Src: /src/dovecot/src/lib/test-buffer-istream.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 13
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: test_buffer_append_full
    functionSourceFile: /src/dovecot/src/lib/test-buffer-istream.c
    functionUses: 0
    functionsReached:
    - test_buffer_append_full_istream
    - test_buffer_append_full_file
    linkageType: ''
    returnType: void
    signature: void test_buffer_append_full(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 11
    functionName: MAX_BASE64_ENCODED_SIZE
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX_BASE64_ENCODED_SIZE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: MAX_BASE64_DECODED_SIZE
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX_BASE64_DECODED_SIZE(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - enc
    argTypes:
    - struct base64_encoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: base64_encode_is_finished
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool base64_encode_is_finished(struct base64_encoder *enc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/base64.h:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - enc
    - b64
    - flags
    - max_line_len
    argTypes:
    - struct base64_encoder*
    - struct base64_scheme*
    - enum base64_encode_flags
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 69
    functionName: base64_encode_init
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 7
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void base64_encode_init(struct base64_encoder *enc,\n\t\t   const
      struct base64_scheme *b64,\n\t\t   enum base64_encode_flags flags,\n\t\t   size_t
      max_line_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/base64.h:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - enc
    argTypes:
    - struct base64_encoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: base64_encode_reset
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 2
    functionsReached:
    - base64_encode_init
    linkageType: ''
    returnType: void
    signature: void base64_encode_reset(struct base64_encoder *enc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dec
    argTypes:
    - struct base64_decoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: base64_decode_is_finished
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool base64_decode_is_finished(struct base64_decoder *dec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/base64.h:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - dec
    - b64
    - flags
    argTypes:
    - struct base64_decoder*
    - struct base64_scheme*
    - enum base64_decode_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 169
    functionName: base64_decode_init
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 7
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void base64_decode_init(struct base64_decoder *dec,\n\t\t   const
      struct base64_scheme *b64,\n\t\t   enum base64_decode_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_decode_init
      Src: /src/dovecot/src/lib/base64.h:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dec
    argTypes:
    - struct base64_decoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 179
    functionName: base64_decode_reset
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 2
    functionsReached:
    - base64_decode_init
    linkageType: ''
    returnType: void
    signature: void base64_decode_reset(struct base64_decoder *dec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_encode_init
      Src: /src/dovecot/src/lib/base64.h:216,1
    - Dst: base64_encode_more
      Src: /src/dovecot/src/lib/base64.h:217,1
    - Dst: base64_encode_finish
      Src: /src/dovecot/src/lib/base64.h:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - b64
    - flags
    - max_line_len
    - src
    - src_size
    - dest
    argTypes:
    - struct base64_scheme*
    - enum base64_encode_flags
    - size_t
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 209
    functionDepth: 4
    functionLinenumber: 209
    functionLinenumberEnd: 219
    functionName: base64_scheme_encode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 2
    functionsReached:
    - base64_encode_init
    - base64_encode_finish
    - base64_encode_more
    linkageType: ''
    returnType: void
    signature: "void base64_scheme_encode(const struct base64_scheme *b64,\n\t\t     enum
      base64_encode_flags flags, size_t max_line_len,\n\t\t     const void *src, size_t
      src_size, buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_encode
      Src: /src/dovecot/src/lib/base64.h:231,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/base64.h:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - b64
    - flags
    - max_line_len
    - src
    argTypes:
    - struct base64_scheme*
    - enum base64_encode_flags
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 233
    functionName: t_base64_scheme_encode_str
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 0
    functionsReached:
    - strlen
    - t_base64_scheme_encode
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_base64_scheme_encode_str(const struct base64_scheme
      *b64,\n\t\t\t   enum base64_encode_flags flags, size_t max_line_len,\n\t\t\t
      \  const char *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_decode
      Src: /src/dovecot/src/lib/base64.h:266,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/base64.h:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - b64
    - flags
    - str
    argTypes:
    - struct base64_scheme*
    - enum base64_decode_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 262
    functionDepth: 5
    functionLinenumber: 262
    functionLinenumberEnd: 267
    functionName: t_base64_scheme_decode_str
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 0
    functionsReached:
    - t_base64_scheme_decode
    - strlen
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_base64_scheme_decode_str(const struct base64_scheme
      *b64,\n\t\t\t   enum base64_decode_flags flags, const char *str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b64
    - c
    argTypes:
    - struct base64_scheme*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 275
    functionName: base64_scheme_is_valid_char
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool base64_scheme_is_valid_char(const struct base64_scheme *b64, char
      c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_scheme_encode
      Src: /src/dovecot/src/lib/base64.h:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - src
    - src_size
    - dest
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 284
    functionDepth: 5
    functionLinenumber: 284
    functionLinenumberEnd: 288
    functionName: base64_encode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 47
    functionsReached:
    - base64_scheme_encode
    linkageType: ''
    returnType: void
    signature: void base64_encode(const void *src, size_t src_size, buffer_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_encode
      Src: /src/dovecot/src/lib/base64.h:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - flags
    - max_line_len
    - src
    - src_size
    argTypes:
    - enum base64_encode_flags
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 296
    functionName: t_base64_encode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 8
    functionsReached:
    - t_base64_scheme_encode
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_base64_encode(enum base64_encode_flags flags, size_t
      max_line_len,\n\t\tconst void *src, size_t src_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_encode
      Src: /src/dovecot/src/lib/base64.h:302,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/base64.h:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - flags
    - max_line_len
    - src
    argTypes:
    - enum base64_encode_flags
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 304
    functionName: t_base64_encode_str
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 0
    functionsReached:
    - strlen
    - t_base64_scheme_encode
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_base64_encode_str(enum base64_encode_flags flags, size_t
      max_line_len,\n\t\t    const char *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_scheme_decode
      Src: /src/dovecot/src/lib/base64.h:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - src
    - src_size
    - dest
    argTypes:
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 309
    functionDepth: 4
    functionLinenumber: 309
    functionLinenumberEnd: 313
    functionName: base64_decode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 21
    functionsReached:
    - base64_scheme_decode
    linkageType: ''
    returnType: int
    signature: int base64_decode(const void *src, size_t src_size, buffer_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_decode
      Src: /src/dovecot/src/lib/base64.h:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - flags
    - src
    - src_size
    argTypes:
    - enum base64_decode_flags
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 316
    functionDepth: 5
    functionLinenumber: 316
    functionLinenumberEnd: 321
    functionName: t_base64_decode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 2
    functionsReached:
    - t_base64_scheme_decode
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_base64_decode(enum base64_decode_flags flags,\n\t\tconst
      void *src, size_t src_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_decode_str
      Src: /src/dovecot/src/lib/base64.h:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 324
    functionDepth: 6
    functionLinenumber: 324
    functionLinenumberEnd: 327
    functionName: t_base64_decode_str
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 5
    functionsReached:
    - t_base64_scheme_decode_str
    linkageType: ''
    returnType: buffer_t
    signature: buffer_t *t_base64_decode_str(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_scheme_is_valid_char
      Src: /src/dovecot/src/lib/base64.h:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 333
    functionName: base64_is_valid_char
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 1
    functionsReached:
    - base64_scheme_is_valid_char
    linkageType: ''
    returnType: bool
    signature: bool base64_is_valid_char(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_scheme_encode
      Src: /src/dovecot/src/lib/base64.h:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - flags
    - max_line_len
    - src
    - src_size
    - dest
    argTypes:
    - enum base64_encode_flags
    - size_t
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 342
    functionDepth: 5
    functionLinenumber: 342
    functionLinenumberEnd: 348
    functionName: base64url_encode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 9
    functionsReached:
    - base64_scheme_encode
    linkageType: ''
    returnType: void
    signature: "void base64url_encode(enum base64_encode_flags flags, size_t max_line_len,\n\t\t
      const void *src, size_t src_size, buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_encode
      Src: /src/dovecot/src/lib/base64.h:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - flags
    - max_line_len
    - src
    - src_size
    argTypes:
    - enum base64_encode_flags
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 356
    functionName: t_base64url_encode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 1
    functionsReached:
    - t_base64_scheme_encode
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_base64url_encode(enum base64_encode_flags flags, size_t
      max_line_len,\n\t\tconst void *src, size_t src_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_encode
      Src: /src/dovecot/src/lib/base64.h:362,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/base64.h:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - flags
    - max_line_len
    - src
    argTypes:
    - enum base64_encode_flags
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: t_base64url_encode_str
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 0
    functionsReached:
    - strlen
    - t_base64_scheme_encode
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_base64url_encode_str(enum base64_encode_flags flags,
      size_t max_line_len,\n\t\t       const char *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_scheme_decode
      Src: /src/dovecot/src/lib/base64.h:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - flags
    - src
    - src_size
    - dest
    argTypes:
    - enum base64_decode_flags
    - void*
    - size_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 368
    functionDepth: 4
    functionLinenumber: 368
    functionLinenumberEnd: 374
    functionName: base64url_decode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 3
    functionsReached:
    - base64_scheme_decode
    linkageType: ''
    returnType: int
    signature: "int base64url_decode(enum base64_decode_flags flags,\n\t\t const void
      *src, size_t src_size, buffer_t *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_decode
      Src: /src/dovecot/src/lib/base64.h:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - flags
    - src
    - src_size
    argTypes:
    - enum base64_decode_flags
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 377
    functionDepth: 5
    functionLinenumber: 377
    functionLinenumberEnd: 382
    functionName: t_base64url_decode
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 1
    functionsReached:
    - t_base64_scheme_decode
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *\nt_base64url_decode(enum base64_decode_flags flags,\n\t\t
      \  const void *src, size_t src_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_base64_scheme_decode_str
      Src: /src/dovecot/src/lib/base64.h:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - flags
    - str
    argTypes:
    - enum base64_decode_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 385
    functionDepth: 6
    functionLinenumber: 385
    functionLinenumberEnd: 389
    functionName: t_base64url_decode_str
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 3
    functionsReached:
    - t_base64_scheme_decode_str
    linkageType: ''
    returnType: buffer_t
    signature: 'buffer_t *

      t_base64url_decode_str(enum base64_decode_flags flags, const char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base64_scheme_is_valid_char
      Src: /src/dovecot/src/lib/base64.h:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 395
    functionName: base64url_is_valid_char
    functionSourceFile: /src/dovecot/src/lib/base64.h
    functionUses: 0
    functionsReached:
    - base64_scheme_is_valid_char
    linkageType: ''
    returnType: bool
    signature: bool base64url_is_valid_char(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/restrict-access.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct restrict_access_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 31
    functionName: restrict_access_init
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 1
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void restrict_access_init(struct restrict_access_settings *set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_getpwuid
      Src: /src/dovecot/src/lib/restrict-access.c:39,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:40,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/restrict-access.c:42,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - uid
    argTypes:
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 33
    functionDepth: 11
    functionLinenumber: 33
    functionLinenumberEnd: 45
    functionName: get_uid_str
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached:
    - i_getpwuid
    - t_strdup_printf
    - dec2str
    linkageType: ''
    returnType: char
    signature: char *get_uid_str(uid_t uid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_getgrgid
      Src: /src/dovecot/src/lib/restrict-access.c:53,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:54,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/restrict-access.c:56,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - gid
    argTypes:
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 11
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: get_gid_str
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_strdup_printf
    - i_getgrgid
    linkageType: ''
    returnType: char
    signature: char *get_gid_str(gid_t gid)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getgid
      Src: /src/dovecot/src/lib/restrict-access.c:67,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/restrict-access.c:67,1
    - Dst: setgid
      Src: /src/dovecot/src/lib/restrict-access.c:72,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/restrict-access.c:75,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/restrict-access.c:76,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:76,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/restrict-access.c:78,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/restrict-access.c:79,1
    - Dst: get_uid_str
      Src: /src/dovecot/src/lib/restrict-access.c:82,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/restrict-access.c:82,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:83,1
    - Dst: getgid
      Src: /src/dovecot/src/lib/restrict-access.c:83,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:83,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/restrict-access.c:83,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:84,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:84,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/restrict-access.c:84,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:85,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/restrict-access.c:85,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/restrict-access.c:88,1
    - Dst: getgid
      Src: /src/dovecot/src/lib/restrict-access.c:88,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/restrict-access.c:89,1
    - Dst: setresgid
      Src: /src/dovecot/src/lib/restrict-access.c:96,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:97,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:98,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:98,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:99,1
    - Dst: get_uid_str
      Src: /src/dovecot/src/lib/restrict-access.c:99,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/restrict-access.c:99,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/restrict-access.c:102,1
    - Dst: setgid
      Src: /src/dovecot/src/lib/restrict-access.c:104,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:105,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:106,1
    - Dst: setregid
      Src: /src/dovecot/src/lib/restrict-access.c:111,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:112,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:113,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:113,1
    - Dst: get_uid_str
      Src: /src/dovecot/src/lib/restrict-access.c:114,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/restrict-access.c:114,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 3
    argNames:
    - primary_gid
    - privileged_gid
    - gid_source
    argTypes:
    - gid_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 61
    functionDepth: 12
    functionLinenumber: 61
    functionLinenumberEnd: 117
    functionName: restrict_init_groups
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached:
    - getgid
    - t_str_new
    - str_printfa
    - geteuid
    - str_c
    - setregid
    - setgid
    - i_fatal
    - getegid
    - get_gid_str
    - get_uid_str
    - setresgid
    linkageType: ''
    returnType: void
    signature: "void restrict_init_groups(gid_t primary_gid, gid_t privileged_gid,\n\t\t\t\t
      const char *gid_source)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getgroups
      Src: /src/dovecot/src/lib/restrict-access.c:124,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:125,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/restrict-access.c:128,1
    - Dst: getgroups
      Src: /src/dovecot/src/lib/restrict-access.c:129,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - gid_count_r
    argTypes:
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 134
    functionName: restrict_get_groups_list
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 2
    functionsReached:
    - t_new
    - i_fatal
    - getgroups
    linkageType: ''
    returnType: gid_t
    signature: gid_t *restrict_get_groups_list(unsigned int *gid_count_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - set
    - gid_list
    - gid_count
    - have_root_group
    argTypes:
    - struct restrict_access_settings*
    - gid_t*
    - unsigned int*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 153
    functionName: drop_restricted_groups
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void drop_restricted_groups(const struct restrict_access_settings
      *set,\n\t\t\t\t   gid_t *gid_list, unsigned int *gid_count,\n\t\t\t\t   bool
      *have_root_group)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_gid
      Src: /src/dovecot/src/lib/restrict-access.c:160,1
    - Dst: i_getgrnam
      Src: /src/dovecot/src/lib/restrict-access.c:163,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:165,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 171
    functionName: get_group_id
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached:
    - str_to_gid
    - i_fatal
    - i_getgrnam
    linkageType: ''
    returnType: gid_t
    signature: gid_t get_group_id(const char *name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib/restrict-access.c:187,1
    - Dst: restrict_get_groups_list
      Src: /src/dovecot/src/lib/restrict-access.c:190,1
    - Dst: drop_restricted_groups
      Src: /src/dovecot/src/lib/restrict-access.c:191,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/restrict-access.c:207,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/restrict-access.c:215,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/restrict-access.c:215,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/restrict-access.c:216,1
    - Dst: get_group_id
      Src: /src/dovecot/src/lib/restrict-access.c:218,1
    - Dst: setgroups
      Src: /src/dovecot/src/lib/restrict-access.c:227,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:229,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:233,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 3
    argNames:
    - set
    - preserve_existing
    - have_root_group
    argTypes:
    - struct restrict_access_settings*
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 173
    functionDepth: 5
    functionLinenumber: 173
    functionLinenumberEnd: 236
    functionName: fix_groups_list
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached:
    - memcpy
    - restrict_get_groups_list
    - t_new
    - str_array_length
    - get_group_id
    - setgroups
    - i_fatal
    - drop_restricted_groups
    - t_strsplit_spaces
    linkageType: ''
    returnType: void
    signature: "void fix_groups_list(const struct restrict_access_settings *set,\n\t\t\t
      \   bool preserve_existing, bool *have_root_group)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/restrict-access.c:241,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/restrict-access.c:243,1
    - Dst: get_uid_str
      Src: /src/dovecot/src/lib/restrict-access.c:243,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/restrict-access.c:245,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/restrict-access.c:246,1
    - Dst: get_uid_str
      Src: /src/dovecot/src/lib/restrict-access.c:247,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/restrict-access.c:247,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/restrict-access.c:249,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/restrict-access.c:251,1
    - Dst: get_uid_str
      Src: /src/dovecot/src/lib/restrict-access.c:253,1
    - Dst: get_uid_str
      Src: /src/dovecot/src/lib/restrict-access.c:253,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/restrict-access.c:253,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/restrict-access.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - set
    - target_uid
    argTypes:
    - struct restrict_access_settings*
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 238
    functionDepth: 12
    functionLinenumber: 238
    functionLinenumberEnd: 256
    functionName: get_setuid_error_str
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - geteuid
    - str_append
    - get_uid_str
    linkageType: ''
    returnType: char
    signature: 'char *

      get_setuid_error_str(const struct restrict_access_settings *set, uid_t target_uid)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/dovecot/src/lib/restrict-access.c:266,1
    - Dst: getuid
      Src: /src/dovecot/src/lib/restrict-access.c:270,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib/restrict-access.c:273,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/restrict-access.c:275,1
    - Dst: seteuid
      Src: /src/dovecot/src/lib/restrict-access.c:277,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:278,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/restrict-access.c:294,1
    - Dst: restrict_init_groups
      Src: /src/dovecot/src/lib/restrict-access.c:295,1
    - Dst: getegid
      Src: /src/dovecot/src/lib/restrict-access.c:299,1
    - Dst: initgroups
      Src: /src/dovecot/src/lib/restrict-access.c:304,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:306,1
    - Dst: get_gid_str
      Src: /src/dovecot/src/lib/restrict-access.c:308,1
    - Dst: fix_groups_list
      Src: /src/dovecot/src/lib/restrict-access.c:316,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 32
    argCount: 3
    argNames:
    - set
    - flags
    - home
    argTypes:
    - struct restrict_access_settings*
    - enum restrict_access_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 258
    functionDepth: 13
    functionLinenumber: 258
    functionLinenumberEnd: 318
    functionName: restrict_access
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 1
    functionsReached:
    - seteuid
    - geteuid
    - initgroups
    - getuid
    - i_fatal
    - getegid
    - get_gid_str
    - i_assert
    - restrict_init_groups
    - fix_groups_list
    linkageType: ''
    returnType: void
    signature: "void restrict_access(const struct restrict_access_settings *set,\n\t\t
      \    enum restrict_access_flags flags, const char *home)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: env_put
      Src: /src/dovecot/src/lib/restrict-access.c:383,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/restrict-access.c:385,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/restrict-access.c:388,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:388,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/restrict-access.c:390,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:390,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/restrict-access.c:392,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:392,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/restrict-access.c:394,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/restrict-access.c:397,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:397,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/restrict-access.c:399,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/restrict-access.c:399,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct restrict_access_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 379
    functionDepth: 6
    functionLinenumber: 379
    functionLinenumberEnd: 400
    functionName: restrict_access_set_env
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 1
    functionsReached:
    - env_put
    - dec2str
    linkageType: ''
    returnType: void
    signature: void restrict_access_set_env(const struct restrict_access_settings
      *set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: null_if_empty
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *null_if_empty(const char *str)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: restrict_access_init
      Src: /src/dovecot/src/lib/restrict-access.c:411,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:412,1
    - Dst: str_to_uid
      Src: /src/dovecot/src/lib/restrict-access.c:413,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:414,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:416,1
    - Dst: str_to_gid
      Src: /src/dovecot/src/lib/restrict-access.c:417,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:418,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:420,1
    - Dst: str_to_gid
      Src: /src/dovecot/src/lib/restrict-access.c:421,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:422,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:424,1
    - Dst: str_to_gid
      Src: /src/dovecot/src/lib/restrict-access.c:425,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:426,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:428,1
    - Dst: str_to_gid
      Src: /src/dovecot/src/lib/restrict-access.c:429,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:430,1
    - Dst: null_if_empty
      Src: /src/dovecot/src/lib/restrict-access.c:433,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:433,1
    - Dst: null_if_empty
      Src: /src/dovecot/src/lib/restrict-access.c:434,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:434,1
    - Dst: null_if_empty
      Src: /src/dovecot/src/lib/restrict-access.c:435,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:435,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - set_r
    argTypes:
    - struct restrict_access_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 407
    functionDepth: 2
    functionLinenumber: 407
    functionLinenumberEnd: 436
    functionName: restrict_access_get_env
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 3
    functionsReached:
    - str_to_gid
    - null_if_empty
    - restrict_access_init
    - str_to_uid
    - i_fatal
    - getenv
    linkageType: ''
    returnType: void
    signature: void restrict_access_get_env(struct restrict_access_settings *set_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: restrict_access_get_env
      Src: /src/dovecot/src/lib/restrict-access.c:442,1
    - Dst: restrict_access
      Src: /src/dovecot/src/lib/restrict-access.c:443,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/restrict-access.c:446,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/restrict-access.c:451,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/restrict-access.c:452,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/restrict-access.c:454,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/restrict-access.c:455,1
    - Dst: getuid
      Src: /src/dovecot/src/lib/restrict-access.c:456,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/restrict-access.c:457,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/restrict-access.c:464,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/restrict-access.c:465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - flags
    - home
    argTypes:
    - enum restrict_access_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 438
    functionDepth: 14
    functionLinenumber: 438
    functionLinenumberEnd: 466
    functionName: restrict_access_by_env
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 15
    functionsReached:
    - getuid
    - restrict_access_get_env
    - env_remove
    - restrict_access
    linkageType: ''
    returnType: void
    signature: void restrict_access_by_env(enum restrict_access_flags flags, const
      char *home)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 471
    functionName: restrict_access_get_current_chroot
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *restrict_access_get_current_chroot(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/dovecot/src/lib/restrict-access.c:476,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-access.c:477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 479
    functionName: restrict_access_set_dumpable
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached:
    - prctl
    - i_error
    linkageType: ''
    returnType: void
    signature: void restrict_access_set_dumpable(bool allow ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/dovecot/src/lib/restrict-access.c:485,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-access.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 490
    functionName: restrict_access_get_dumpable
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 0
    functionsReached:
    - prctl
    - i_error
    linkageType: ''
    returnType: bool
    signature: bool restrict_access_get_dumpable(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/lib/restrict-access.c:494,1
    - Dst: restrict_access_set_dumpable
      Src: /src/dovecot/src/lib/restrict-access.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - allow
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 492
    functionDepth: 2
    functionLinenumber: 492
    functionLinenumberEnd: 497
    functionName: restrict_access_allow_coredumps
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 23
    functionsReached:
    - restrict_access_set_dumpable
    - getenv
    linkageType: ''
    returnType: void
    signature: void restrict_access_allow_coredumps(bool allow)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/restrict-access.c:501,1
    - Dst: setegid
      Src: /src/dovecot/src/lib/restrict-access.c:505,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-access.c:506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 511
    functionName: restrict_access_use_priv_gid
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 3
    functionsReached:
    - i_assert
    - i_error
    - setegid
    linkageType: ''
    returnType: int
    signature: int restrict_access_use_priv_gid(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setegid
      Src: /src/dovecot/src/lib/restrict-access.c:518,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-access.c:519,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 513
    functionDepth: 2
    functionLinenumber: 513
    functionLinenumberEnd: 521
    functionName: restrict_access_drop_priv_gid
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 3
    functionsReached:
    - i_fatal
    - setegid
    linkageType: ''
    returnType: void
    signature: void restrict_access_drop_priv_gid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 526
    functionName: restrict_access_have_priv_gid
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool restrict_access_have_priv_gid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/restrict-access.c:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: restrict_access_deinit
    functionSourceFile: /src/dovecot/src/lib/restrict-access.c
    functionUses: 1
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void restrict_access_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/pkcs5.c:26,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/pkcs5.c:27,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/pkcs5.c:28,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib/pkcs5.c:29,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib/pkcs5.c:33,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib/pkcs5.c:34,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib/pkcs5.c:35,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/pkcs5.c:38,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 8
    argNames:
    - hash
    - password
    - password_len
    - salt
    - salt_len
    - iter
    - length
    - result
    argTypes:
    - struct hash_method*
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - unsigned int
    - uint32_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 12
    functionDepth: 5
    functionLinenumber: 12
    functionLinenumberEnd: 41
    functionName: pkcs5_pbkdf1
    functionSourceFile: /src/dovecot/src/lib/pkcs5.c
    functionUses: 0
    functionsReached:
    - struct hash_method*::init
    - buffer_append
    - struct hash_method*::loop
    - struct hash_method*::result
    linkageType: ''
    returnType: int
    signature: "int pkcs5_pbkdf1(const struct hash_method *hash,\n\tconst unsigned
      char *password, size_t password_len,\n\tconst unsigned char *salt, size_t salt_len,\n\tunsigned
      int iter, uint32_t length,\n\tbuffer_t *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/dovecot/src/lib/pkcs5.c:62,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib/pkcs5.c:63,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/pkcs5.c:64,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/pkcs5.c:65,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib/pkcs5.c:66,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/pkcs5.c:68,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib/pkcs5.c:71,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib/pkcs5.c:72,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib/pkcs5.c:73,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/pkcs5.c:79,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 8
    argNames:
    - hash
    - password
    - password_len
    - salt
    - salt_len
    - iter
    - length
    - result
    argTypes:
    - struct hash_method*
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - unsigned int
    - uint32_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 82
    functionName: pkcs5_pbkdf2
    functionSourceFile: /src/dovecot/src/lib/pkcs5.c
    functionUses: 0
    functionsReached:
    - memcpy
    - buffer_append
    - hmac_update
    - hmac_final
    - htonl
    - hmac_init
    linkageType: ''
    returnType: int
    signature: "int pkcs5_pbkdf2(const struct hash_method *hash,\n\tconst unsigned
      char *password, size_t password_len,\n\tconst unsigned char *salt, size_t salt_len,\n\tunsigned
      int iter, uint32_t length,\n\tbuffer_t *result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pkcs5_pbkdf1
      Src: /src/dovecot/src/lib/pkcs5.c:91,1
    - Dst: pkcs5_pbkdf2
      Src: /src/dovecot/src/lib/pkcs5.c:94,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/pkcs5.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 9
    argNames:
    - mode
    - hash
    - password
    - password_len
    - salt
    - salt_len
    - iterations
    - dk_len
    - result
    argTypes:
    - enum pkcs5_pbkdf_mode
    - struct hash_method*
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - unsigned int
    - uint32_t
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 6
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: pkcs5_pbkdf
    functionSourceFile: /src/dovecot/src/lib/pkcs5.c
    functionUses: 0
    functionsReached:
    - pkcs5_pbkdf1
    - pkcs5_pbkdf2
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int pkcs5_pbkdf(enum pkcs5_pbkdf_mode mode, const struct hash_method
      *hash,\n\tconst unsigned char *password, size_t password_len,\n\tconst unsigned
      char *salt, size_t salt_len,\n\tunsigned int iterations, uint32_t dk_len,\n\tbuffer_t
      *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: SHFR
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHFR(x, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: ROTR
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTR(x, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: ROTL
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTL(x, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: CH
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CH(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: MAJ
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAJ(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: SHA256_F1
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA256_F1(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: SHA256_F2
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA256_F2(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: SHA256_F3
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA256_F3(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: SHA256_F4
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA256_F4(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: SHA384_F1
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA384_F1(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: SHA384_F2
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA384_F2(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: SHA384_F3
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA384_F3(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: SHA384_F4
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA384_F4(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: SHA512_F1
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA512_F1(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: SHA512_F2
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA512_F2(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: SHA512_F3
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA512_F3(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: SHA512_F4
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA512_F4(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: UNPACK32
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNPACK32(x, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: PACK32
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PACK32(str, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 86
    functionName: UNPACK64
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNPACK64(x, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: PACK64
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PACK64(str, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: SHA256_SCR
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA256_SCR(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: SHA384_SCR
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA384_SCR(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: SHA512_SCR
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA512_SCR(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PACK32
      Src: /src/dovecot/src/lib/sha2.c:211,1
    - Dst: SHA256_SCR
      Src: /src/dovecot/src/lib/sha2.c:215,1
    - Dst: SHA256_F2
      Src: /src/dovecot/src/lib/sha2.c:223,1
    - Dst: CH
      Src: /src/dovecot/src/lib/sha2.c:223,1
    - Dst: SHA256_F1
      Src: /src/dovecot/src/lib/sha2.c:225,1
    - Dst: MAJ
      Src: /src/dovecot/src/lib/sha2.c:225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - data
    - block_nb
    argTypes:
    - struct sha256_ctx*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 240
    functionName: ATTR_UNSIGNED_WRAPS::sha256_transf
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - PACK32
    - MAJ
    - SHA256_F2
    - SHA256_F1
    - SHA256_SCR
    - CH
    linkageType: ''
    returnType: void
    signature: "void ATTR_UNSIGNED_WRAPS\nsha256_transf(struct sha256_ctx *ctx, const
      unsigned char *data,\n\t      size_t block_nb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sha256_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 252
    functionName: sha256_init
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sha256_init(struct sha256_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib/sha2.c:267,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/sha2.c:277,1
    - Dst: sha256_transf
      Src: /src/dovecot/src/lib/sha2.c:279,1
    - Dst: sha256_transf
      Src: /src/dovecot/src/lib/sha2.c:280,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/sha2.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - struct sha256_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 287
    functionName: sha256_loop
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - sha256_transf
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void sha256_loop(struct sha256_ctx *ctx, const void *data,\n\t\t size_t
      len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/sha2.c:303,1
    - Dst: UNPACK64
      Src: /src/dovecot/src/lib/sha2.c:305,1
    - Dst: sha256_transf
      Src: /src/dovecot/src/lib/sha2.c:307,1
    - Dst: UNPACK32
      Src: /src/dovecot/src/lib/sha2.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - digest
    argTypes:
    - struct sha256_ctx*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 312
    functionName: sha256_result
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 1
    functionsReached:
    - UNPACK64
    - memset
    - UNPACK32
    - sha256_transf
    linkageType: ''
    returnType: void
    signature: "void sha256_result(struct sha256_ctx *ctx,\n\t\t   unsigned char digest[STATIC_ARRAY
      SHA256_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha256_init
      Src: /src/dovecot/src/lib/sha2.c:319,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib/sha2.c:320,1
    - Dst: sha256_result
      Src: /src/dovecot/src/lib/sha2.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - data
    - size
    - digest
    argTypes:
    - void*
    - size_t
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: sha256_get_digest
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha256_loop
    - sha256_result
    - sha256_init
    linkageType: ''
    returnType: void
    signature: "void sha256_get_digest(const void *data, size_t size,\n\t\t       unsigned
      char digest[STATIC_ARRAY SHA256_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PACK64
      Src: /src/dovecot/src/lib/sha2.c:340,1
    - Dst: SHA384_SCR
      Src: /src/dovecot/src/lib/sha2.c:344,1
    - Dst: SHA384_F2
      Src: /src/dovecot/src/lib/sha2.c:353,1
    - Dst: CH
      Src: /src/dovecot/src/lib/sha2.c:353,1
    - Dst: SHA384_F1
      Src: /src/dovecot/src/lib/sha2.c:355,1
    - Dst: MAJ
      Src: /src/dovecot/src/lib/sha2.c:355,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - data
    - block_nb
    argTypes:
    - struct sha384_ctx*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 370
    functionName: ATTR_UNSIGNED_WRAPS::sha384_transf
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - SHA384_SCR
    - MAJ
    - PACK64
    - SHA384_F1
    - SHA384_F2
    - CH
    linkageType: ''
    returnType: void
    signature: "void ATTR_UNSIGNED_WRAPS\nsha384_transf(struct sha384_ctx *ctx, const
      unsigned char *data,\n\t      size_t block_nb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sha384_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 382
    functionName: sha384_init
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sha384_init(struct sha384_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib/sha2.c:397,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/sha2.c:407,1
    - Dst: sha384_transf
      Src: /src/dovecot/src/lib/sha2.c:409,1
    - Dst: sha384_transf
      Src: /src/dovecot/src/lib/sha2.c:410,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/sha2.c:413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - struct sha384_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 417
    functionName: sha384_loop
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - sha384_transf
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void sha384_loop(struct sha384_ctx *ctx, const void *data,\n\t\t size_t
      len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/sha2.c:433,1
    - Dst: UNPACK64
      Src: /src/dovecot/src/lib/sha2.c:435,1
    - Dst: sha384_transf
      Src: /src/dovecot/src/lib/sha2.c:437,1
    - Dst: UNPACK64
      Src: /src/dovecot/src/lib/sha2.c:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - digest
    argTypes:
    - struct sha384_ctx*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 442
    functionName: sha384_result
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha384_transf
    - UNPACK64
    - memset
    linkageType: ''
    returnType: void
    signature: "void sha384_result(struct sha384_ctx *ctx,\n\t\t   unsigned char digest[STATIC_ARRAY
      SHA384_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha384_init
      Src: /src/dovecot/src/lib/sha2.c:449,1
    - Dst: sha384_loop
      Src: /src/dovecot/src/lib/sha2.c:450,1
    - Dst: sha384_result
      Src: /src/dovecot/src/lib/sha2.c:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - data
    - size
    - digest
    argTypes:
    - void*
    - size_t
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 444
    functionDepth: 2
    functionLinenumber: 444
    functionLinenumberEnd: 452
    functionName: sha384_get_digest
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha384_result
    - sha384_loop
    - sha384_init
    linkageType: ''
    returnType: void
    signature: "void sha384_get_digest(const void *data, size_t size,\n\t\t       unsigned
      char digest[STATIC_ARRAY SHA384_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PACK64
      Src: /src/dovecot/src/lib/sha2.c:471,1
    - Dst: SHA512_SCR
      Src: /src/dovecot/src/lib/sha2.c:475,1
    - Dst: SHA512_F2
      Src: /src/dovecot/src/lib/sha2.c:483,1
    - Dst: CH
      Src: /src/dovecot/src/lib/sha2.c:483,1
    - Dst: SHA512_F1
      Src: /src/dovecot/src/lib/sha2.c:485,1
    - Dst: MAJ
      Src: /src/dovecot/src/lib/sha2.c:485,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - data
    - block_nb
    argTypes:
    - struct sha512_ctx*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 500
    functionName: ATTR_UNSIGNED_WRAPS::sha512_transf
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - SHA512_SCR
    - SHA512_F2
    - MAJ
    - PACK64
    - SHA512_F1
    - CH
    linkageType: ''
    returnType: void
    signature: "void ATTR_UNSIGNED_WRAPS\nsha512_transf(struct sha512_ctx *ctx, const
      unsigned char *data,\n\t      size_t block_nb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sha512_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 512
    functionName: sha512_init
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sha512_init(struct sha512_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib/sha2.c:527,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/sha2.c:537,1
    - Dst: sha512_transf
      Src: /src/dovecot/src/lib/sha2.c:539,1
    - Dst: sha512_transf
      Src: /src/dovecot/src/lib/sha2.c:540,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/sha2.c:543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - data
    - len
    argTypes:
    - struct sha512_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 547
    functionName: sha512_loop
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - sha512_transf
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void sha512_loop(struct sha512_ctx *ctx, const void *data,\n\t\t size_t
      len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib/sha2.c:563,1
    - Dst: UNPACK64
      Src: /src/dovecot/src/lib/sha2.c:565,1
    - Dst: sha512_transf
      Src: /src/dovecot/src/lib/sha2.c:567,1
    - Dst: UNPACK64
      Src: /src/dovecot/src/lib/sha2.c:570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - digest
    argTypes:
    - struct sha512_ctx*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 572
    functionName: sha512_result
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 1
    functionsReached:
    - UNPACK64
    - memset
    - sha512_transf
    linkageType: ''
    returnType: void
    signature: "void sha512_result(struct sha512_ctx *ctx,\n\t\t   unsigned char digest[STATIC_ARRAY
      SHA512_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha512_init
      Src: /src/dovecot/src/lib/sha2.c:579,1
    - Dst: sha512_loop
      Src: /src/dovecot/src/lib/sha2.c:580,1
    - Dst: sha512_result
      Src: /src/dovecot/src/lib/sha2.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - data
    - size
    - digest
    argTypes:
    - void*
    - size_t
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 574
    functionDepth: 2
    functionLinenumber: 574
    functionLinenumberEnd: 582
    functionName: sha512_get_digest
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha512_result
    - sha512_init
    - sha512_loop
    linkageType: ''
    returnType: void
    signature: "void sha512_get_digest(const void *data, size_t size,\n\t\t       unsigned
      char digest[STATIC_ARRAY SHA512_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha256_init
      Src: /src/dovecot/src/lib/sha2.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 587
    functionName: hash_method_init_sha256
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha256_init
    linkageType: ''
    returnType: void
    signature: void hash_method_init_sha256(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib/sha2.c:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 588
    functionDepth: 2
    functionLinenumber: 588
    functionLinenumberEnd: 591
    functionName: hash_method_loop_sha256
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha256_loop
    linkageType: ''
    returnType: void
    signature: void hash_method_loop_sha256(void *context, const void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha256_result
      Src: /src/dovecot/src/lib/sha2.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 596
    functionName: hash_method_result_sha256
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha256_result
    linkageType: ''
    returnType: void
    signature: void hash_method_result_sha256(void *context, unsigned char *result_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha384_init
      Src: /src/dovecot/src/lib/sha2.c:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 612
    functionName: hash_method_init_sha384
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha384_init
    linkageType: ''
    returnType: void
    signature: void hash_method_init_sha384(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha384_loop
      Src: /src/dovecot/src/lib/sha2.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 613
    functionDepth: 2
    functionLinenumber: 613
    functionLinenumberEnd: 616
    functionName: hash_method_loop_sha384
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha384_loop
    linkageType: ''
    returnType: void
    signature: void hash_method_loop_sha384(void *context, const void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha384_result
      Src: /src/dovecot/src/lib/sha2.c:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 621
    functionName: hash_method_result_sha384
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha384_result
    linkageType: ''
    returnType: void
    signature: void hash_method_result_sha384(void *context, unsigned char *result_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha512_init
      Src: /src/dovecot/src/lib/sha2.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 637
    functionName: hash_method_init_sha512
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha512_init
    linkageType: ''
    returnType: void
    signature: void hash_method_init_sha512(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha512_loop
      Src: /src/dovecot/src/lib/sha2.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 638
    functionDepth: 2
    functionLinenumber: 638
    functionLinenumberEnd: 641
    functionName: hash_method_loop_sha512
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha512_loop
    linkageType: ''
    returnType: void
    signature: void hash_method_loop_sha512(void *context, const void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha512_result
      Src: /src/dovecot/src/lib/sha2.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 643
    functionDepth: 2
    functionLinenumber: 643
    functionLinenumberEnd: 646
    functionName: hash_method_result_sha512
    functionSourceFile: /src/dovecot/src/lib/sha2.c
    functionUses: 0
    functionsReached:
    - sha512_result
    linkageType: ''
    returnType: void
    signature: void hash_method_result_sha512(void *context, unsigned char *result_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:13,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-process-size.c:14,1
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:19,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/restrict-process-size.c:20,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - rlim_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 24
    functionName: restrict_process_size
    functionSourceFile: /src/dovecot/src/lib/restrict-process-size.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - setrlimit
    linkageType: ''
    returnType: void
    signature: void restrict_process_size(rlim_t bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:32,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-process-size.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - rlim_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 37
    functionName: restrict_process_count
    functionSourceFile: /src/dovecot/src/lib/restrict-process-size.c
    functionUses: 1
    functionsReached:
    - i_error
    - setrlimit
    linkageType: ''
    returnType: void
    signature: void restrict_process_count(rlim_t count ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:44,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-process-size.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - count
    argTypes:
    - rlim_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: restrict_fd_limit
    functionSourceFile: /src/dovecot/src/lib/restrict-process-size.c
    functionUses: 0
    functionsReached:
    - i_error
    - setrlimit
    linkageType: ''
    returnType: void
    signature: void restrict_fd_limit(rlim_t count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:55,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-process-size.c:56,1
    - Dst: getrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:60,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-process-size.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - limit_r
    argTypes:
    - rlim_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 67
    functionName: restrict_get_process_size
    functionSourceFile: /src/dovecot/src/lib/restrict-process-size.c
    functionUses: 1
    functionsReached:
    - getrlimit
    - i_error
    linkageType: ''
    returnType: int
    signature: int restrict_get_process_size(rlim_t *limit_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:74,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-process-size.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - limit_r
    argTypes:
    - rlim_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 83
    functionName: restrict_get_core_limit
    functionSourceFile: /src/dovecot/src/lib/restrict-process-size.c
    functionUses: 0
    functionsReached:
    - getrlimit
    - i_error
    linkageType: ''
    returnType: int
    signature: int restrict_get_core_limit(rlim_t *limit_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:90,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-process-size.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - limit_r
    argTypes:
    - rlim_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 99
    functionName: restrict_get_process_limit
    functionSourceFile: /src/dovecot/src/lib/restrict-process-size.c
    functionUses: 0
    functionsReached:
    - getrlimit
    - i_error
    linkageType: ''
    returnType: int
    signature: int restrict_get_process_limit(rlim_t *limit_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/dovecot/src/lib/restrict-process-size.c:105,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/restrict-process-size.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - limit_r
    argTypes:
    - rlim_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 111
    functionName: restrict_get_fd_limit
    functionSourceFile: /src/dovecot/src/lib/restrict-process-size.c
    functionUses: 0
    functionsReached:
    - getrlimit
    - i_error
    linkageType: ''
    returnType: int
    signature: int restrict_get_fd_limit(rlim_t *limit_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib/mmap-util.c:12,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mmap-util.c:27,1
    - Dst: mmap
      Src: /src/dovecot/src/lib/mmap-util.c:29,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - fd
    - length
    - prot
    argTypes:
    - int
    - size_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 30
    functionName: mmap_file
    functionSourceFile: /src/dovecot/src/lib/mmap-util.c
    functionUses: 0
    functionsReached:
    - i_assert
    - fstat
    - mmap
    linkageType: ''
    returnType: void
    signature: void *mmap_file(int fd, size_t *length, int prot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mmap_file
      Src: /src/dovecot/src/lib/mmap-util.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - length
    argTypes:
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: mmap_ro_file
    functionSourceFile: /src/dovecot/src/lib/mmap-util.c
    functionUses: 2
    functionsReached:
    - mmap_file
    linkageType: ''
    returnType: void
    signature: void *mmap_ro_file(int fd, size_t *length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mmap_file
      Src: /src/dovecot/src/lib/mmap-util.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - length
    argTypes:
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: mmap_rw_file
    functionSourceFile: /src/dovecot/src/lib/mmap-util.c
    functionUses: 0
    functionsReached:
    - mmap_file
    linkageType: ''
    returnType: void
    signature: void *mmap_rw_file(int fd, size_t *length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/dovecot/src/lib/mmap-util.c:48,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mmap-util.c:49,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mmap-util.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 53
    functionName: mmap_get_page_size
    functionSourceFile: /src/dovecot/src/lib/mmap-util.c
    functionUses: 11
    functionsReached:
    - sysconf
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: size_t mmap_get_page_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_init_with_size
      Src: /src/dovecot/src/lib/test-random.c:16,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-random.c:17,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-random.c:20,1
    - Dst: stats_dist_add
      Src: /src/dovecot/src/lib/test-random.c:21,1
    - Dst: stats_dist_get_median
      Src: /src/dovecot/src/lib/test-random.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-random.c:27,1
    - Dst: fabs
      Src: /src/dovecot/src/lib/test-random.c:27,1
    - Dst: stats_dist_get_avg
      Src: /src/dovecot/src/lib/test-random.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-random.c:32,1
    - Dst: fabs
      Src: /src/dovecot/src/lib/test-random.c:32,1
    - Dst: stats_dist_deinit
      Src: /src/dovecot/src/lib/test-random.c:34,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-random.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 36
    functionName: test_random_median
    functionSourceFile: /src/dovecot/src/lib/test-random.c
    functionUses: 0
    functionsReached:
    - stats_dist_get_avg
    - stats_dist_add
    - stats_dist_init_with_size
    - stats_dist_get_median
    - test_end
    - i_rand_limit
    - test_assert
    - stats_dist_deinit
    - fabs
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_random_median(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-random.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-random.c:41,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-random.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-random.c:42,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-random.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-random.c:43,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-random.c:43,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-random.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 45
    functionName: test_random_limits
    functionSourceFile: /src/dovecot/src/lib/test-random.c
    functionUses: 0
    functionsReached:
    - test_end
    - i_rand_limit
    - test_assert
    - i_rand_minmax
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_random_limits(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-random.c:49,1
    - Dst: malloc
      Src: /src/dovecot/src/lib/test-random.c:54,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/test-random.c:55,1
    - Dst: mem_hash
      Src: /src/dovecot/src/lib/test-random.c:56,1
    - Dst: free
      Src: /src/dovecot/src/lib/test-random.c:57,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-random.c:62,1
    - Dst: malloc
      Src: /src/dovecot/src/lib/test-random.c:63,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/test-random.c:64,1
    - Dst: mem_hash
      Src: /src/dovecot/src/lib/test-random.c:65,1
    - Dst: free
      Src: /src/dovecot/src/lib/test-random.c:66,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib/test-random.c:68,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib/test-random.c:68,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-random.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 47
    functionDepth: 6
    functionLinenumber: 47
    functionLinenumberEnd: 70
    functionName: test_random_fill
    functionSourceFile: /src/dovecot/src/lib/test-random.c
    functionUses: 0
    functionsReached:
    - dec2str
    - random_fill
    - malloc
    - test_out_reason
    - mem_hash
    - free
    - test_end
    - i_rand_minmax
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_random_fill(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_random_median
      Src: /src/dovecot/src/lib/test-random.c:74,1
    - Dst: test_random_limits
      Src: /src/dovecot/src/lib/test-random.c:75,1
    - Dst: test_random_fill
      Src: /src/dovecot/src/lib/test-random.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 7
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: test_random
    functionSourceFile: /src/dovecot/src/lib/test-random.c
    functionUses: 0
    functionsReached:
    - test_random_median
    - test_random_limits
    - test_random_fill
    linkageType: ''
    returnType: void
    signature: void test_random(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-random.c:83,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-random.c:84,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/test-random.c:85,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-random.c:88,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-random.c:89,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-random.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 94
    functionName: fatal_random
    functionSourceFile: /src/dovecot/src/lib/test-random.c
    functionUses: 0
    functionsReached:
    - test_end
    - i_rand_limit
    - test_expect_fatal_string
    - i_rand_minmax
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_random(unsigned int stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:19,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:20,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/test-array.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:25,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/test-array.c:28,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:30,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/test-array.c:33,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib/test-array.c:35,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:38,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/test-array.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:45,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 47
    functionName: test_array_elem
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - t_new
    - array_foreach_elem
    - array_push_back
    - array_idx
    - test_end
    - array_idx_elem
    - t_array_init
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_elem(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:54,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:55,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:57,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-array.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:58,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib/test-array.c:58,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:59,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib/test-array.c:59,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:61,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:62,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-array.c:62,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:63,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib/test-array.c:63,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:64,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/lib/test-array.c:64,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 67
    functionName: test_array_count
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_not_empty
    - array_is_empty
    - test_end
    - array_count
    - t_array_init
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:75,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:76,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:79,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/test-array.c:82,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib/test-array.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:84,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:86,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:89,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/test-array.c:89,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 68
    functionDepth: 3
    functionLinenumber: 68
    functionLinenumberEnd: 91
    functionName: test_array_foreach
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_idx
    - array_foreach
    - test_end
    - t_array_init
    - test_assert
    - array_foreach_idx
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_foreach(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:99,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:100,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:105,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib/test-array.c:106,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib/test-array.c:107,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/test-array.c:108,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:110,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-array.c:110,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/test-array.c:113,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:116,1
    - Dst: array_foreach_reverse
      Src: /src/dovecot/src/lib/test-array.c:117,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib/test-array.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:120,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/test-array.c:121,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:124,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-array.c:124,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:129,1
    - Dst: array_foreach_reverse_modifiable
      Src: /src/dovecot/src/lib/test-array.c:130,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib/test-array.c:131,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:132,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:133,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/test-array.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:137,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/test-array.c:137,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 93
    functionDepth: 3
    functionLinenumber: 93
    functionLinenumberEnd: 140
    functionName: test_array_foreach_reverse
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_push_back
    - array_foreach_reverse
    - array_foreach
    - test_end
    - array_count
    - t_array_init
    - array_clear
    - test_assert
    - array_foreach_idx
    - array_foreach_reverse_modifiable
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_foreach_reverse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:150,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:151,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:152,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-array.c:154,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/test-array.c:155,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:156,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:157,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/test-array.c:161,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:162,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/test-array.c:166,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:167,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 142
    functionDepth: 11
    functionLinenumber: 142
    functionLinenumberEnd: 171
    functionName: test_array_foreach_elem_string
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - array_foreach_elem
    - test_assert_idx
    - test_begin
    - t_strdup_printf
    - test_end
    - t_array_init
    - t_strdup_noconst
    linkageType: ''
    returnType: void
    signature: void test_array_foreach_elem_string(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - elem
    argTypes:
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 178
    functionName: test_int_compare
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int test_int_compare(const int *key, const int *elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:186,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:187,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-array.c:188,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/test-array.c:189,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-array.c:190,1
    - Dst: array_reverse
      Src: /src/dovecot/src/lib/test-array.c:191,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/test-array.c:193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:195,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:197,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:199,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-array.c:200,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib/test-array.c:201,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:202,1
    - Dst: array_ptr_to_idx
      Src: /src/dovecot/src/lib/test-array.c:203,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:204,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-array.c:204,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib/test-array.c:206,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:207,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 209
    functionName: test_array_reverse
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - array_lsearch
    - array_reverse
    - test_assert_idx
    - test_end
    - array_ptr_to_idx
    - t_array_init
    - array_clear
    - test_assert
    - array_front
    - N_ELEMENTS
    - array_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_reverse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - unsigned short*
    - unsigned short*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 215
    functionName: test_compare_ushort
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int test_compare_ushort(const unsigned short *c1, const unsigned short
      *c2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - c1
    - c2
    - pfuzz
    argTypes:
    - unsigned short*
    - unsigned short*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 222
    functionName: test_compare_ushort_fuzz
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int test_compare_ushort_fuzz(const unsigned short *c1, const unsigned
      short *c2, const int *pfuzz)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:236,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:237,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:238,1
    - Dst: i_rand_ushort
      Src: /src/dovecot/src/lib/test-array.c:240,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:241,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-array.c:243,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:244,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib/test-array.c:244,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:245,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib/test-array.c:245,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:247,1
    - Dst: array_equal_fn_ctx
      Src: /src/dovecot/src/lib/test-array.c:247,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-array.c:250,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/test-array.c:251,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-array.c:254,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-array.c:254,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib/test-array.c:256,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:257,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib/test-array.c:257,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:258,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib/test-array.c:258,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:262,1
    - Dst: array_equal_fn_ctx
      Src: /src/dovecot/src/lib/test-array.c:262,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:265,1
    - Dst: array_equal_fn_ctx
      Src: /src/dovecot/src/lib/test-array.c:265,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib/test-array.c:267,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:268,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib/test-array.c:268,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:269,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib/test-array.c:269,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:271,1
    - Dst: array_equal_fn_ctx
      Src: /src/dovecot/src/lib/test-array.c:271,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:275,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib/test-array.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:276,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib/test-array.c:276,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:277,1
    - Dst: array_equal_fn_ctx
      Src: /src/dovecot/src/lib/test-array.c:277,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 223
    functionDepth: 3
    functionLinenumber: 223
    functionLinenumberEnd: 280
    functionName: test_array_cmp
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - i_rand_ushort
    - array_push_back
    - array_idx
    - test_assert_idx
    - test_end
    - array_cmp
    - t_array_init
    - array_equal_fn_ctx
    - test_assert
    - i_rand_limit
    - array_equal_fn
    - N_ELEMENTS
    - array_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_cmp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:289,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:290,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:291,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-array.c:293,1
    - Dst: i_rand
      Src: /src/dovecot/src/lib/test-array.c:293,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:294,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-array.c:296,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:297,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib/test-array.c:297,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:298,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib/test-array.c:298,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-array.c:300,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/test-array.c:301,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-array.c:303,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-array.c:304,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/test-array.c:308,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-array.c:309,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib/test-array.c:312,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:313,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib/test-array.c:313,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:314,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib/test-array.c:314,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-array.c:315,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:316,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib/test-array.c:316,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib/test-array.c:318,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:319,1
    - Dst: array_cmp
      Src: /src/dovecot/src/lib/test-array.c:319,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:320,1
    - Dst: array_equal_fn
      Src: /src/dovecot/src/lib/test-array.c:320,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:323,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 282
    functionDepth: 11
    functionLinenumber: 282
    functionLinenumberEnd: 324
    functionName: test_array_cmp_str
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - memcpy
    - array_idx_set
    - strcmp
    - array_push_back
    - array_idx
    - test_assert_idx
    - strlen
    - t_strdup_printf
    - test_end
    - array_cmp
    - t_array_init
    - i_rand_limit
    - test_assert
    - array_equal_fn
    - i_rand
    - array_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_cmp_str(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_allocfree_create
      Src: /src/dovecot/src/lib/test-array.c:329,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:333,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/test-array.c:335,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib/test-array.c:336,1
    - Dst: array_free_without_data
      Src: /src/dovecot/src/lib/test-array.c:338,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:339,1
    - Dst: pool_allocfree_get_total_used_size
      Src: /src/dovecot/src/lib/test-array.c:339,1
    - Dst: p_free
      Src: /src/dovecot/src/lib/test-array.c:340,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/test-array.c:342,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:343,1
    - Dst: pool_allocfree_get_total_used_size
      Src: /src/dovecot/src/lib/test-array.c:343,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/test-array.c:345,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - keep
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 326
    functionDepth: 3
    functionLinenumber: 326
    functionLinenumberEnd: 347
    functionName: test_array_free_case
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - p_free
    - p_array_init
    - array_free_without_data
    - pool_allocfree_get_total_used_size
    - pool_allocfree_create
    - pool_unref
    - test_end
    - test_assert
    - array_append_zero
    - array_free
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_free_case(bool keep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_array_free_case
      Src: /src/dovecot/src/lib/test-array.c:351,1
    - Dst: test_array_free_case
      Src: /src/dovecot/src/lib/test-array.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 348
    functionDepth: 4
    functionLinenumber: 348
    functionLinenumberEnd: 353
    functionName: test_array_free
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - test_array_free_case
    linkageType: ''
    returnType: void
    signature: void test_array_free(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:374,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:375,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-array.c:375,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-array.c:376,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-array.c:376,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/test-array.c:377,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-array.c:378,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:379,1
    - Dst: array_lsearch_ptr
      Src: /src/dovecot/src/lib/test-array.c:379,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-array.c:380,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib/test-array.c:380,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:383,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib/test-array.c:383,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:385,1
    - Dst: array_lsearch_ptr
      Src: /src/dovecot/src/lib/test-array.c:385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-array.c:386,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib/test-array.c:386,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 359
    functionDepth: 3
    functionLinenumber: 359
    functionLinenumberEnd: 388
    functionName: test_array_lsearch_ptr
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - array_lsearch_ptr
    - test_end
    - t_array_init
    - array_lsearch_ptr_idx
    - test_assert
    - array_front
    - N_ELEMENTS
    - array_append
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_array_lsearch_ptr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_array_elem
      Src: /src/dovecot/src/lib/test-array.c:392,1
    - Dst: test_array_count
      Src: /src/dovecot/src/lib/test-array.c:393,1
    - Dst: test_array_foreach
      Src: /src/dovecot/src/lib/test-array.c:394,1
    - Dst: test_array_foreach_reverse
      Src: /src/dovecot/src/lib/test-array.c:395,1
    - Dst: test_array_foreach_elem_string
      Src: /src/dovecot/src/lib/test-array.c:396,1
    - Dst: test_array_reverse
      Src: /src/dovecot/src/lib/test-array.c:397,1
    - Dst: test_array_cmp
      Src: /src/dovecot/src/lib/test-array.c:398,1
    - Dst: test_array_cmp_str
      Src: /src/dovecot/src/lib/test-array.c:399,1
    - Dst: test_array_free
      Src: /src/dovecot/src/lib/test-array.c:400,1
    - Dst: test_array_lsearch_ptr
      Src: /src/dovecot/src/lib/test-array.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 390
    functionDepth: 12
    functionLinenumber: 390
    functionLinenumberEnd: 402
    functionName: test_array
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - test_array_foreach_reverse
    - test_array_count
    - test_array_lsearch_ptr
    - test_array_elem
    - test_array_cmp_str
    - test_array_cmp
    - test_array_foreach_elem_string
    - test_array_reverse
    - test_array_foreach
    - test_array_free
    linkageType: ''
    returnType: void
    signature: void test_array(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-array.c:413,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:414,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-array.c:416,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/test-array.c:417,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:423,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-array.c:424,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-array.c:426,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/test-array.c:427,1
    - Dst: ARRAY
      Src: /src/dovecot/src/lib/test-array.c:433,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:434,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:435,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-array.c:436,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-array.c:438,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib/test-array.c:439,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-array.c:447,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:449,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:450,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-array.c:451,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-array.c:454,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib/test-array.c:460,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/test-array.c:462,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/test-array.c:463,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-array.c:464,1
    - Dst: array_append
      Src: /src/dovecot/src/lib/test-array.c:467,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-array.c:471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 47
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 404
    functionDepth: 5
    functionLinenumber: 404
    functionLinenumberEnd: 477
    functionName: fatal_array
    functionSourceFile: /src/dovecot/src/lib/test-array.c
    functionUses: 0
    functionsReached:
    - array_idx
    - t_malloc0
    - ARRAY
    - array_push_back
    - array_copy
    - test_end
    - t_array_init
    - test_expect_fatal_string
    - array_front
    - array_append
    - test_begin
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_array(unsigned int stage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: i_bswap_64
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t i_bswap_64(uint64_t in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: i_bswap_32
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t i_bswap_32(uint32_t in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: i_bswap_16
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t i_bswap_16(uint16_t in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: i_bswap_8
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t i_bswap_8(uint8_t in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 142
    functionName: be64_to_cpu_unaligned
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t be64_to_cpu_unaligned(const void *in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - uint64_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 156
    functionName: cpu64_to_be_unaligned
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cpu64_to_be_unaligned(uint64_t in, void *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 166
    functionName: be32_to_cpu_unaligned
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t be32_to_cpu_unaligned(const void *in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 176
    functionName: cpu32_to_be_unaligned
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cpu32_to_be_unaligned(uint32_t in, void *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 184
    functionName: be16_to_cpu_unaligned
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t be16_to_cpu_unaligned(const void *in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - uint16_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 192
    functionName: cpu16_to_be_unaligned
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cpu16_to_be_unaligned(uint16_t in, void *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: be8_to_cpu_unaligned
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t be8_to_cpu_unaligned(const void *in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: cpu8_to_be_unaligned
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cpu8_to_be_unaligned(uint8_t in, void *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - size
    - ','
    - bswap
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: __GEN
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __GEN(size, bswap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 230
    functionName: GEN
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GEN(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 232
    functionName: GEN
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GEN(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - from
    - ','
    - size
    - ','
    - to
    - ','
    - bswap
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 250
    functionName: ___GEN
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ___GEN(from, size, to, bswap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - from
    - ','
    - size
    - ','
    - to
    - ','
    - be
    - ','
    - le
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 253
    functionName: __GEN
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __GEN(from, size, to, be, le)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - from
    - ','
    - size
    - ','
    - to
    - ','
    - be
    - ','
    - le
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 255
    functionName: __GEN
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __GEN(from, size, to, be, le)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 262
    functionName: GEN
    functionSourceFile: /src/dovecot/src/lib/byteorder.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GEN(size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/file-lock.c:34,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/file-lock.c:36,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/file-lock.c:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - name
    - method_r
    argTypes:
    - char*
    - enum file_lock_method*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 43
    functionName: file_lock_method_parse
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 2
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool file_lock_method_parse(const char *name, enum file_lock_method
      *method_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/file-lock.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - method
    argTypes:
    - enum file_lock_method
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 56
    functionName: file_lock_method_to_str
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 1
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char *file_lock_method_to_str(enum file_lock_method method)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: file_wait_lock
      Src: /src/dovecot/src/lib/file-lock.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - fd
    - path
    - lock_type
    - set
    - lock_r
    - error_r
    argTypes:
    - int
    - char*
    - int
    - struct file_lock_settings*
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: file_try_lock
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 5
    functionsReached:
    - file_wait_lock
    linkageType: ''
    returnType: int
    signature: "int file_try_lock(int fd, const char *path, int lock_type,\n\t\t  const
      struct file_lock_settings *set,\n\t\t  struct file_lock **lock_r, const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/file-lock.c:70,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/file-lock.c:76,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:79,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - lock_fd
    - lock_type
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 65
    functionDepth: 11
    functionLinenumber: 65
    functionLinenumberEnd: 81
    functionName: file_lock_find_fcntl
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_strdup_printf
    - fcntl
    linkageType: ''
    returnType: char
    signature: 'char *

      file_lock_find_fcntl(int lock_fd, int lock_type)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-lock.c:100,1
    - Dst: i_snprintf
      Src: /src/dovecot/src/lib/file-lock.c:102,1
    - Dst: major
      Src: /src/dovecot/src/lib/file-lock.c:103,1
    - Dst: minor
      Src: /src/dovecot/src/lib/file-lock.c:103,1
    - Dst: open
      Src: /src/dovecot/src/lib/file-lock.c:105,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib/file-lock.c:110,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/file-lock.c:111,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib/file-lock.c:112,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib/file-lock.c:116,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/file-lock.c:118,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/file-lock.c:119,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/lib/file-lock.c:121,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib/file-lock.c:125,1
    - Dst: getpid
      Src: /src/dovecot/src/lib/file-lock.c:130,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:132,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 83
    functionDepth: 11
    functionLinenumber: 83
    functionLinenumberEnd: 136
    functionName: file_lock_find_proc_locks
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached:
    - strcmp
    - getpid
    - str_to_pid
    - open
    - str_array_length
    - t_strdup_printf
    - i_stream_read_next_line
    - fstat
    - i_stream_create_fd_autoclose
    - t_strsplit_spaces
    - i_snprintf
    - minor
    - major
    - i_stream_destroy
    linkageType: ''
    returnType: char
    signature: 'char *

      file_lock_find_proc_locks(int lock_fd ATTR_UNUSED)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: file_lock_find_fcntl
      Src: /src/dovecot/src/lib/file-lock.c:144,1
    - Dst: file_lock_find_proc_locks
      Src: /src/dovecot/src/lib/file-lock.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - lock_fd
    - lock_method
    - lock_type
    argTypes:
    - int
    - enum file_lock_method
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 138
    functionDepth: 12
    functionLinenumber: 138
    functionLinenumberEnd: 149
    functionName: file_lock_find
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 1
    functionsReached:
    - file_lock_find_proc_locks
    - file_lock_find_fcntl
    linkageType: ''
    returnType: char
    signature: "char *file_lock_find(int lock_fd, enum file_lock_method lock_method,\n\t\t\t
      \  int lock_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib/file-lock.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - started
    - timeout_secs
    argTypes:
    - time_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: err_is_lock_timeout
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached:
    - time
    linkageType: ''
    returnType: bool
    signature: bool err_is_lock_timeout(time_t started, unsigned int timeout_secs)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/dovecot/src/lib/file-lock.c:166,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-lock.c:169,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/file-lock.c:172,1
    - Dst: file_lock_wait_start
      Src: /src/dovecot/src/lib/file-lock.c:173,1
    - Dst: fcntl
      Src: /src/dovecot/src/lib/file-lock.c:188,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/file-lock.c:190,1
    - Dst: file_lock_wait_end
      Src: /src/dovecot/src/lib/file-lock.c:191,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:200,1
    - Dst: err_is_lock_timeout
      Src: /src/dovecot/src/lib/file-lock.c:206,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:208,1
    - Dst: file_lock_find
      Src: /src/dovecot/src/lib/file-lock.c:212,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:216,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/file-lock.c:219,1
    - Dst: file_lock_find
      Src: /src/dovecot/src/lib/file-lock.c:220,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:227,1
    - Dst: flock
      Src: /src/dovecot/src/lib/file-lock.c:245,1
    - Dst: alarm
      Src: /src/dovecot/src/lib/file-lock.c:247,1
    - Dst: file_lock_wait_end
      Src: /src/dovecot/src/lib/file-lock.c:248,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:256,1
    - Dst: err_is_lock_timeout
      Src: /src/dovecot/src/lib/file-lock.c:261,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:263,1
    - Dst: file_lock_find
      Src: /src/dovecot/src/lib/file-lock.c:266,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/file-lock.c:270,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/file-lock.c:273,1
    - Dst: file_lock_find
      Src: /src/dovecot/src/lib/file-lock.c:274,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/file-lock.c:282,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 75
    argCount: 6
    argNames:
    - fd
    - path
    - lock_type
    - set
    - timeout_secs
    - error_r
    argTypes:
    - int
    - char*
    - int
    - struct file_lock_settings*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 161
    functionDepth: 13
    functionLinenumber: 161
    functionLinenumberEnd: 286
    functionName: file_lock_do
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached:
    - i_panic
    - time
    - i_unreached
    - alarm
    - t_strdup_printf
    - fcntl
    - err_is_lock_timeout
    - flock
    - file_lock_find
    - file_lock_wait_end
    - i_assert
    - file_lock_wait_start
    linkageType: ''
    returnType: int
    signature: "int file_lock_do(int fd, const char *path, int lock_type,\n\t\t\tconst
      struct file_lock_settings *set,\n\t\t\tunsigned int timeout_secs, const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: file_lock_do
      Src: /src/dovecot/src/lib/file-lock.c:296,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/file-lock.c:300,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/file-lock.c:303,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/file-lock.c:305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - fd
    - path
    - lock_type
    - set
    - timeout_secs
    - lock_r
    - error_r
    argTypes:
    - int
    - char*
    - int
    - struct file_lock_settings*
    - unsigned int
    - struct file_lock**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 288
    functionDepth: 14
    functionLinenumber: 288
    functionLinenumberEnd: 308
    functionName: file_wait_lock
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 6
    functionsReached:
    - i_strdup
    - i_gettimeofday
    - file_lock_do
    - i_new
    linkageType: ''
    returnType: int
    signature: "int file_wait_lock(int fd, const char *path, int lock_type,\n\t\t
      \  const struct file_lock_settings *set,\n\t\t   unsigned int timeout_secs,\n\t\t
      \  struct file_lock **lock_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: file_lock_do
      Src: /src/dovecot/src/lib/file-lock.c:315,1
    - Dst: file_lock_log_warning_if_slow
      Src: /src/dovecot/src/lib/file-lock.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - lock
    - lock_type
    argTypes:
    - struct file_lock*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 310
    functionDepth: 14
    functionLinenumber: 310
    functionLinenumberEnd: 322
    functionName: file_lock_try_update
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached:
    - file_lock_do
    - file_lock_log_warning_if_slow
    linkageType: ''
    returnType: int
    signature: int file_lock_try_update(struct file_lock *lock, int lock_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lock
    - set
    argTypes:
    - struct file_lock*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 327
    functionName: file_lock_set_unlink_on_free
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void file_lock_set_unlink_on_free(struct file_lock *lock, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lock
    - set
    argTypes:
    - struct file_lock*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 332
    functionName: file_lock_set_close_on_free
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void file_lock_set_close_on_free(struct file_lock *lock, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/file-lock.c:338,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/file-lock.c:341,1
    - Dst: file_dotlock_get_lock_path
      Src: /src/dovecot/src/lib/file-lock.c:341,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/file-lock.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - dotlock
    argTypes:
    - struct dotlock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 348
    functionName: file_lock_from_dotlock
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 2
    functionsReached:
    - i_strdup
    - i_gettimeofday
    - file_dotlock_get_lock_path
    - i_new
    linkageType: ''
    returnType: struct file_lock
    signature: struct file_lock *file_lock_from_dotlock(struct dotlock **dotlock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: file_lock_do
      Src: /src/dovecot/src/lib/file-lock.c:354,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-lock.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct file_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 350
    functionDepth: 14
    functionLinenumber: 350
    functionLinenumberEnd: 359
    functionName: file_unlock_real
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached:
    - file_lock_do
    - i_error
    linkageType: ''
    returnType: void
    signature: void file_unlock_real(struct file_lock *lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-lock.c:370,1
    - Dst: file_unlock_real
      Src: /src/dovecot/src/lib/file-lock.c:373,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib/file-lock.c:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _lock
    argTypes:
    - struct file_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 361
    functionDepth: 15
    functionLinenumber: 361
    functionLinenumberEnd: 375
    functionName: file_unlock
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 19
    functionsReached:
    - file_lock_free
    - i_assert
    - file_unlock_real
    linkageType: ''
    returnType: void
    signature: void file_unlock(struct file_lock **_lock)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: file_unlock_real
      Src: /src/dovecot/src/lib/file-lock.c:388,1
    - Dst: file_try_lock
      Src: /src/dovecot/src/lib/file-lock.c:389,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-lock.c:392,1
    - Dst: fstat
      Src: /src/dovecot/src/lib/file-lock.c:396,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-lock.c:398,1
    - Dst: stat
      Src: /src/dovecot/src/lib/file-lock.c:399,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-lock.c:401,1
    - Dst: CMP_DEV_T
      Src: /src/dovecot/src/lib/file-lock.c:403,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib/file-lock.c:407,1
    - Dst: file_lock_free
      Src: /src/dovecot/src/lib/file-lock.c:409,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct file_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 377
    functionDepth: 15
    functionLinenumber: 377
    functionLinenumberEnd: 410
    functionName: file_try_unlink_locked
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_unlink
    - file_try_lock
    - fstat
    - stat
    - CMP_DEV_T
    - file_unlock_real
    - file_lock_free
    linkageType: ''
    returnType: void
    signature: void file_try_unlink_locked(struct file_lock *lock)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_dotlock_delete
      Src: /src/dovecot/src/lib/file-lock.c:422,1
    - Dst: file_try_unlink_locked
      Src: /src/dovecot/src/lib/file-lock.c:424,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/file-lock.c:426,1
    - Dst: file_lock_log_warning_if_slow
      Src: /src/dovecot/src/lib/file-lock.c:428,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/file-lock.c:429,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/file-lock.c:430,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - _lock
    argTypes:
    - struct file_lock**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 412
    functionDepth: 16
    functionLinenumber: 412
    functionLinenumberEnd: 431
    functionName: file_lock_free
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 18
    functionsReached:
    - file_dotlock_delete
    - i_close_fd
    - file_lock_log_warning_if_slow
    - i_free
    - file_try_unlink_locked
    linkageType: ''
    returnType: void
    signature: void file_lock_free(struct file_lock **_lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct file_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: file_lock_get_path
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *file_lock_get_path(struct file_lock *lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib/file-lock.c:441,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib/file-lock.c:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lock
    - path
    argTypes:
    - struct file_lock*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 444
    functionName: file_lock_set_path
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 1
    functionsReached:
    - i_strdup
    - i_free
    linkageType: ''
    returnType: void
    signature: void file_lock_set_path(struct file_lock *lock, const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-lock.c:448,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/file-lock.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 446
    functionDepth: 3
    functionLinenumber: 446
    functionLinenumberEnd: 451
    functionName: file_lock_wait_start
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 2
    functionsReached:
    - i_gettimeofday
    - i_assert
    linkageType: ''
    returnType: void
    signature: void file_lock_wait_start(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-lock.c:457,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/file-lock.c:459,1
    - Dst: str_to_llong
      Src: /src/dovecot/src/lib/file-lock.c:462,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/file-lock.c:466,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 470
    functionName: file_lock_wait_init_warning
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 0
    functionsReached:
    - str_to_llong
    - i_assert
    - i_error
    - getenv
    linkageType: ''
    returnType: void
    signature: void file_lock_wait_init_warning(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_lock_wait_init_warning
      Src: /src/dovecot/src/lib/file-lock.c:475,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/file-lock.c:487,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/file-lock.c:489,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/file-lock.c:491,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct file_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 472
    functionDepth: 3
    functionLinenumber: 472
    functionLinenumberEnd: 494
    functionName: file_lock_log_warning_if_slow
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 2
    functionsReached:
    - i_gettimeofday
    - timeval_diff_msecs
    - i_warning
    - file_lock_wait_init_warning
    linkageType: ''
    returnType: void
    signature: void file_lock_log_warning_if_slow(struct file_lock *lock)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/file-lock.c:500,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/file-lock.c:502,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/file-lock.c:503,1
    - Dst: file_lock_wait_init_warning
      Src: /src/dovecot/src/lib/file-lock.c:510,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/file-lock.c:513,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - lock_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 496
    functionDepth: 3
    functionLinenumber: 496
    functionLinenumberEnd: 519
    functionName: file_lock_wait_end
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 2
    functionsReached:
    - i_gettimeofday
    - timeval_diff_usecs
    - i_warning
    - file_lock_wait_init_warning
    - i_assert
    linkageType: ''
    returnType: void
    signature: void file_lock_wait_end(const char *lock_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 524
    functionName: file_lock_wait_get_total_usecs
    functionSourceFile: /src/dovecot/src/lib/file-lock.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t file_lock_wait_get_total_usecs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - input
    - ','
    - size
    - ','
    - error_callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: i_stream_create_sized_with_callback
    functionSourceFile: /src/dovecot/src/lib/istream-sized.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_stream_create_sized_with_callback(input, size, error_callback, context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib/iso8601-date.c:44,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib/iso8601-date.c:51,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - parser
    - digits
    - number_r
    argTypes:
    - struct iso8601_date_parser*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 57
    functionName: iso8601_date_parse_number
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 0
    functionsReached:
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: "int iso8601_date_parse_number(struct iso8601_date_parser *parser,\n\t\t\t
      \ int digits, int *number_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib/iso8601-date.c:73,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib/iso8601-date.c:78,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct iso8601_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 81
    functionName: iso8601_date_parse_secfrac
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 0
    functionsReached:
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: int iso8601_date_parse_secfrac(struct iso8601_date_parser *parser)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: iso8601_date_parse_number
      Src: /src/dovecot/src/lib/iso8601-date.c:105,1
    - Dst: iso8601_date_parse_number
      Src: /src/dovecot/src/lib/iso8601-date.c:116,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct iso8601_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 131
    functionName: is08601_date_parse_time_offset
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 0
    functionsReached:
    - iso8601_date_parse_number
    linkageType: ''
    returnType: int
    signature: int is08601_date_parse_time_offset(struct iso8601_date_parser *parser)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: iso8601_date_parse_number
      Src: /src/dovecot/src/lib/iso8601-date.c:144,1
    - Dst: iso8601_date_parse_number
      Src: /src/dovecot/src/lib/iso8601-date.c:153,1
    - Dst: iso8601_date_parse_number
      Src: /src/dovecot/src/lib/iso8601-date.c:162,1
    - Dst: iso8601_date_parse_secfrac
      Src: /src/dovecot/src/lib/iso8601-date.c:166,1
    - Dst: is08601_date_parse_time_offset
      Src: /src/dovecot/src/lib/iso8601-date.c:170,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct iso8601_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 173
    functionName: is08601_date_parse_full_time
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 0
    functionsReached:
    - iso8601_date_parse_number
    - iso8601_date_parse_secfrac
    - is08601_date_parse_time_offset
    linkageType: ''
    returnType: int
    signature: int is08601_date_parse_full_time(struct iso8601_date_parser *parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: iso8601_date_parse_number
      Src: /src/dovecot/src/lib/iso8601-date.c:185,1
    - Dst: iso8601_date_parse_number
      Src: /src/dovecot/src/lib/iso8601-date.c:197,1
    - Dst: iso8601_date_parse_number
      Src: /src/dovecot/src/lib/iso8601-date.c:207,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct iso8601_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 210
    functionName: is08601_date_parse_full_date
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 0
    functionsReached:
    - iso8601_date_parse_number
    linkageType: ''
    returnType: int
    signature: int is08601_date_parse_full_date(struct iso8601_date_parser *parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is08601_date_parse_full_date
      Src: /src/dovecot/src/lib/iso8601-date.c:217,1
    - Dst: is08601_date_parse_full_time
      Src: /src/dovecot/src/lib/iso8601-date.c:227,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct iso8601_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 212
    functionDepth: 4
    functionLinenumber: 212
    functionLinenumberEnd: 233
    functionName: iso8601_date_parse_date_time
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 0
    functionsReached:
    - is08601_date_parse_full_time
    - is08601_date_parse_full_date
    linkageType: ''
    returnType: int
    signature: int iso8601_date_parse_date_time(struct iso8601_date_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/iso8601-date.c:242,1
    - Dst: iso8601_date_parse_date_time
      Src: /src/dovecot/src/lib/iso8601-date.c:246,1
    - Dst: utc_mktime
      Src: /src/dovecot/src/lib/iso8601-date.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - data
    - size
    - tm_r
    - timestamp_r
    - timezone_offset_r
    argTypes:
    - unsigned char*
    - size_t
    - struct tm*
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 235
    functionDepth: 5
    functionLinenumber: 235
    functionLinenumberEnd: 258
    functionName: iso8601_date_do_parse
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 0
    functionsReached:
    - i_zero
    - utc_mktime
    - iso8601_date_parse_date_time
    linkageType: ''
    returnType: bool
    signature: "bool iso8601_date_do_parse(const unsigned char *data, size_t size,
      struct tm *tm_r,\n\t\t      time_t *timestamp_r, int *timezone_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iso8601_date_do_parse
      Src: /src/dovecot/src/lib/iso8601-date.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - data
    - size
    - timestamp_r
    - timezone_offset_r
    argTypes:
    - unsigned char*
    - size_t
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 6
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: iso8601_date_parse
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 1
    functionsReached:
    - iso8601_date_do_parse
    linkageType: ''
    returnType: bool
    signature: "bool iso8601_date_parse(const unsigned char *data, size_t size,\n\t\t\ttime_t
      *timestamp_r, int *timezone_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iso8601_date_do_parse
      Src: /src/dovecot/src/lib/iso8601-date.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - data
    - size
    - tm_r
    - timezone_offset_r
    argTypes:
    - unsigned char*
    - size_t
    - struct tm*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 269
    functionDepth: 6
    functionLinenumber: 269
    functionLinenumberEnd: 276
    functionName: iso8601_date_parse_tm
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 2
    functionsReached:
    - iso8601_date_do_parse
    linkageType: ''
    returnType: bool
    signature: "bool iso8601_date_parse_tm(const unsigned char *data, size_t size,\n\t\t\t
      \  struct tm *tm_r, int *timezone_offset_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iso8601-date.c:290,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/iso8601-date.c:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - tm
    - timezone_offset
    argTypes:
    - struct tm*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 278
    functionDepth: 11
    functionLinenumber: 278
    functionLinenumberEnd: 298
    functionName: iso8601_date_create_tm
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 4
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *iso8601_date_create_tm(struct tm *tm, int timezone_offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime
      Src: /src/dovecot/src/lib/iso8601-date.c:305,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib/iso8601-date.c:306,1
    - Dst: iso8601_date_create_tm
      Src: /src/dovecot/src/lib/iso8601-date.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 300
    functionDepth: 12
    functionLinenumber: 300
    functionLinenumberEnd: 309
    functionName: iso8601_date_create
    functionSourceFile: /src/dovecot/src/lib/iso8601-date.c
    functionUses: 0
    functionsReached:
    - localtime
    - iso8601_date_create_tm
    - utc_offset
    linkageType: ''
    returnType: char
    signature: char *iso8601_date_create(time_t timestamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fd
    - ','
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: i_close_fd_path
    functionSourceFile: /src/dovecot/src/lib/fd-util.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_close_fd_path(fd, path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fd
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: i_close_fd
    functionSourceFile: /src/dovecot/src/lib/fd-util.h
    functionUses: 162
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_close_fd(fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/array.c:10,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - array
    - idx
    argTypes:
    - struct array*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 12
    functionName: array_idx_modifiable_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 2
    functionsReached:
    - PTR_OFFSET
    - i_assert
    linkageType: ''
    returnType: void
    signature: 'void *

      array_idx_modifiable_i(const struct array *array, unsigned int idx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/array.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - array
    - idx
    argTypes:
    - struct array*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 14
    functionDepth: 4
    functionLinenumber: 14
    functionLinenumberEnd: 18
    functionName: array_idx_get_space_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - buffer_get_space_unsafe
    linkageType: ''
    returnType: void
    signature: void *array_idx_get_space_i(struct array *array, unsigned int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_write
      Src: /src/dovecot/src/lib/array.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - array
    - idx
    - data
    argTypes:
    - struct array*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 4
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: array_idx_set_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 1
    functionsReached:
    - buffer_write
    linkageType: ''
    returnType: void
    signature: void array_idx_set_i(struct array *array, unsigned int idx, const void
      *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_write_zero
      Src: /src/dovecot/src/lib/array.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - array
    - idx
    argTypes:
    - struct array*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 4
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: array_idx_clear_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - buffer_write_zero
    linkageType: ''
    returnType: void
    signature: void array_idx_clear_i(struct array *array, unsigned int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_copy
      Src: /src/dovecot/src/lib/array.c:38,1
    - Dst: buffer_get_space_unsafe
      Src: /src/dovecot/src/lib/array.c:41,1
    - Dst: memset
      Src: /src/dovecot/src/lib/array.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - array
    - idx
    argTypes:
    - struct array*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 44
    functionName: array_insert_space_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - buffer_get_space_unsafe
    - buffer_copy
    - memset
    linkageType: ''
    returnType: void
    signature: void *array_insert_space_i(struct array *array, unsigned int idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:48,1
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:49,1
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:51,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib/array.c:54,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - array1
    - array2
    argTypes:
    - struct array*
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: array_cmp_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - buffer_cmp
    - array_is_created_i
    linkageType: ''
    returnType: bool
    signature: bool array_cmp_i(const struct array *array1, const struct array *array2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:63,1
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:64,1
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:66,1
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:69,1
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/array.c:74,1
    - Dst: cmp
      Src: /src/dovecot/src/lib/array.c:77,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:77,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:78,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - array1
    - array2
    argTypes:
    - struct array*
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 82
    functionName: array_equal_fn_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - array_is_created_i
    - array_count_i
    - cmp
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: bool
    signature: "bool array_equal_fn_i(const struct array *array1, const struct array
      *array2,\n\t\t      int (*cmp)(const void *, const void*))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:91,1
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:92,1
    - Dst: array_is_created_i
      Src: /src/dovecot/src/lib/array.c:94,1
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:97,1
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:97,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/array.c:102,1
    - Dst: cmp
      Src: /src/dovecot/src/lib/array.c:105,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:105,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:106,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - array1
    - array2
    - context
    argTypes:
    - struct array*
    - struct array*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 110
    functionName: array_equal_fn_ctx_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - array_is_created_i
    - array_count_i
    - cmp
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: bool
    signature: "bool array_equal_fn_ctx_i(const struct array *array1, const struct
      array *array2,\n\t\t\t  int (*cmp)(const void *, const void *, const void *),\n\t\t\t
      \ const void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:115,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib/array.c:119,1
    - Dst: t_buffer_get
      Src: /src/dovecot/src/lib/array.c:120,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/array.c:122,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:122,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/array.c:123,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:123,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:124,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/array.c:126,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 112
    functionDepth: 5
    functionLinenumber: 112
    functionLinenumberEnd: 129
    functionName: array_reverse_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - memcpy
    - PTR_OFFSET
    - t_buffer_get
    - buffer_get_modifiable_data
    - array_count_i
    linkageType: ''
    returnType: void
    signature: void array_reverse_i(struct array *array)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:135,1
    - Dst: qsort
      Src: /src/dovecot/src/lib/array.c:138,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib/array.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: array_sort_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - array_count_i
    - qsort
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: void
    signature: void array_sort_i(struct array *array, int (*cmp)(const void *, const
      void *))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:147,1
    - Dst: bsearch
      Src: /src/dovecot/src/lib/array.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - array
    - key
    argTypes:
    - struct array*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: array_bsearch_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 1
    functionsReached:
    - array_count_i
    - bsearch
    linkageType: ''
    returnType: void
    signature: "void *array_bsearch_i(const struct array *array, const void *key,\n\t\t
      \           int (*cmp)(const void *, const void *))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:159,1
    - Dst: cmp
      Src: /src/dovecot/src/lib/array.c:160,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:160,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib/array.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - array
    - key
    argTypes:
    - struct array*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 166
    functionName: array_lsearch_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 1
    functionsReached:
    - array_count_i
    - cmp
    - PTR_OFFSET
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: void
    signature: "void *array_lsearch_i(const struct array *array, const void *key,\n\t\t\t
      \   int (*cmp)(const void *, const void *))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/array.c:170,1
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - array
    - key
    argTypes:
    - struct array*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 179
    functionName: array_lsearch_ptr_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - array_count_i
    - i_assert
    linkageType: ''
    returnType: void
    signature: void *array_lsearch_ptr_i(const struct array *array, const void *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/array.c:184,1
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/array.c:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - array
    - key
    - idx_r
    argTypes:
    - struct array*
    - void*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 195
    functionName: array_lsearch_ptr_idx_i
    functionSourceFile: /src/dovecot/src/lib/array.c
    functionUses: 0
    functionsReached:
    - array_count_i
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool array_lsearch_ptr_idx_i(const struct array *array, const void
      *key,\n\t\t\t     unsigned int *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/hash2.c:37,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib/hash2.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hash
    - size
    argTypes:
    - struct hash2_table*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: hash2_alloc_table
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_idx_get_space
    linkageType: ''
    returnType: void
    signature: void hash2_alloc_table(struct hash2_table *hash, unsigned int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/hash2.c:48,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/hash2.c:49,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/hash2.c:55,1
    - Dst: hash2_alloc_table
      Src: /src/dovecot/src/lib/hash2.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - initial_size
    - value_size
    - key_hash_cb
    - key_compare_cb
    - context
    argTypes:
    - unsigned int
    - unsigned int
    - hash2_key_callback_t*
    - hash2_cmp_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 58
    functionName: hash2_create
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - I_MAX
    - i_new
    - hash2_alloc_table
    linkageType: ''
    returnType: struct hash2_table
    signature: "struct hash2_table *\nhash2_create(unsigned int initial_size, unsigned
      int value_size,\n\t     hash2_key_callback_t *key_hash_cb,\n\t     hash2_cmp_callback_t
      *key_compare_cb, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib/hash2.c:65,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/hash2.c:66,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/hash2.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _hash
    argTypes:
    - struct hash2_table**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: hash2_destroy
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 1
    functionsReached:
    - i_free
    - array_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void hash2_destroy(struct hash2_table **_hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib/hash2.c:72,1
    - Dst: hash2_alloc_table
      Src: /src/dovecot/src/lib/hash2.c:73,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib/hash2.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct hash2_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 77
    functionName: hash2_clear
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 2
    functionsReached:
    - array_free
    - p_clear
    - hash2_alloc_table
    linkageType: ''
    returnType: void
    signature: void hash2_clear(struct hash2_table *hash)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/hash2.c:81,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/hash2.c:90,1
    - Dst: primes_closest
      Src: /src/dovecot/src/lib/hash2.c:90,1
    - Dst: hash2_alloc_table
      Src: /src/dovecot/src/lib/hash2.c:96,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/hash2.c:98,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib/hash2.c:100,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib/hash2.c:105,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/hash2.c:110,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - hash
    - grow
    argTypes:
    - struct hash2_table*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 111
    functionName: hash2_resize
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 0
    functionsReached:
    - primes_closest
    - array_idx_modifiable
    - I_MAX
    - hash2_alloc_table
    - array_count
    - array_idx_elem
    - ARRAY_TYPE
    - array_free
    linkageType: ''
    returnType: void
    signature: void hash2_resize(struct hash2_table *hash, bool grow)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct hash2_table*::key_hash_cb
      Src: /src/dovecot/src/lib/hash2.c:115,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib/hash2.c:119,1
    - Dst: struct hash2_table*::key_compare_cb
      Src: /src/dovecot/src/lib/hash2.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - hash
    - key
    argTypes:
    - struct hash2_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 131
    functionName: hash2_lookup
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 1
    functionsReached:
    - struct hash2_table*::key_compare_cb
    - array_idx_elem
    - struct hash2_table*::key_hash_cb
    linkageType: ''
    returnType: void
    signature: void *hash2_lookup(const struct hash2_table *hash, const void *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib/hash2.c:140,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - hash
    - key_hash
    - iter
    argTypes:
    - struct hash2_table*
    - unsigned int
    - struct hash2_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 153
    functionName: hash2_iterate
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 1
    functionsReached:
    - array_idx_elem
    linkageType: ''
    returnType: void
    signature: "void *hash2_iterate(const struct hash2_table *hash,\n\t\t    unsigned
      int key_hash, struct hash2_iter *iter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash2_insert_hash
      Src: /src/dovecot/src/lib/hash2.c:157,1
    - Dst: struct hash2_table*::key_hash_cb
      Src: /src/dovecot/src/lib/hash2.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hash
    - key
    argTypes:
    - struct hash2_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: hash2_insert
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 1
    functionsReached:
    - hash2_insert_hash
    - struct hash2_table*::key_hash_cb
    linkageType: ''
    returnType: void
    signature: void *hash2_insert(struct hash2_table *hash, const void *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash2_resize
      Src: /src/dovecot/src/lib/hash2.c:164,1
    - Dst: memset
      Src: /src/dovecot/src/lib/hash2.c:170,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/hash2.c:172,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib/hash2.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - hash
    - key_hash
    argTypes:
    - struct hash2_table*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 184
    functionName: hash2_insert_hash
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 3
    functionsReached:
    - memset
    - hash2_resize
    - array_idx_modifiable
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void *hash2_insert_hash(struct hash2_table *hash, unsigned int key_hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - hash
    - valuep
    argTypes:
    - struct hash2_table*
    - struct hash2_value**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 198
    functionName: hash2_remove_value_p
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hash2_remove_value_p(struct hash2_table *hash, struct hash2_value
      **valuep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct hash2_table*::key_hash_cb
      Src: /src/dovecot/src/lib/hash2.c:202,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib/hash2.c:205,1
    - Dst: struct hash2_table*::key_compare_cb
      Src: /src/dovecot/src/lib/hash2.c:209,1
    - Dst: hash2_remove_value_p
      Src: /src/dovecot/src/lib/hash2.c:210,1
    - Dst: hash2_resize
      Src: /src/dovecot/src/lib/hash2.c:211,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/hash2.c:216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - hash
    - key
    argTypes:
    - struct hash2_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 200
    functionDepth: 3
    functionLinenumber: 200
    functionLinenumberEnd: 217
    functionName: hash2_remove
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 0
    functionsReached:
    - i_panic
    - array_idx_modifiable
    - struct hash2_table*::key_hash_cb
    - hash2_remove_value_p
    - struct hash2_table*::key_compare_cb
    - hash2_resize
    linkageType: ''
    returnType: void
    signature: void hash2_remove(struct hash2_table *hash, const void *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib/hash2.c:223,1
    - Dst: hash2_remove_value_p
      Src: /src/dovecot/src/lib/hash2.c:230,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/hash2.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - hash
    - iter
    argTypes:
    - struct hash2_table*
    - struct hash2_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 237
    functionName: hash2_remove_iter
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 1
    functionsReached:
    - i_panic
    - array_idx_modifiable
    - hash2_remove_value_p
    linkageType: ''
    returnType: void
    signature: void hash2_remove_iter(struct hash2_table *hash, struct hash2_iter
      *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct hash2_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: hash2_count
    functionSourceFile: /src/dovecot/src/lib/hash2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int hash2_count(const struct hash2_table *hash)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib/test-unicode-break.c:22,1
    - Dst: unicode_gc_break_init
      Src: /src/dovecot/src/lib/test-unicode-break.c:24,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-break.c:25,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-break.c:31,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-unicode-break.c:33,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-break.c:34,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-break.c:34,1
    - Dst: str_to_uint32_hex
      Src: /src/dovecot/src/lib/test-unicode-break.c:40,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib/test-unicode-break.c:41,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-break.c:41,1
    - Dst: unicode_gc_break_cp
      Src: /src/dovecot/src/lib/test-unicode-break.c:50,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-unicode-break.c:52,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib/test-unicode-break.c:57,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - file
    - line
    - line_num
    argTypes:
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 18
    functionDepth: 11
    functionLinenumber: 18
    functionLinenumberEnd: 58
    functionName: test_gcb_line
    functionSourceFile: /src/dovecot/src/lib/test-unicode-break.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_idx
    - unicode_gc_break_cp
    - t_strdup_printf
    - test_has_failed
    - t_strsplit
    - test_failed
    - test_assert_strcmp_idx
    - unicode_gc_break_init
    - str_to_uint32_hex
    linkageType: ''
    returnType: void
    signature: void test_gcb_line(const char *file, const char *line, unsigned int
      line_num)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/test-unicode-break.c:65,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-unicode-break.c:67,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-unicode-break.c:67,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib/test-unicode-break.c:69,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib/test-unicode-break.c:72,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib/test-unicode-break.c:73,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/test-unicode-break.c:81,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-unicode-break.c:83,1
    - Dst: test_line
      Src: /src/dovecot/src/lib/test-unicode-break.c:91,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 60
    functionDepth: 11
    functionLinenumber: 60
    functionLinenumberEnd: 93
    functionName: test_ucd_file
    functionSourceFile: /src/dovecot/src/lib/test-unicode-break.c
    functionUses: 1
    functionsReached:
    - strchr
    - strlen
    - i_stream_create_file
    - t_strdup_printf
    - test_has_failed
    - i_stream_read_next_line
    - test_line
    - t_strconcat
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_ucd_file(const char *file,\n\t      void (*test_line)(const
      char *file, const char *line,\n\t\t\t\tunsigned int line_num))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ucd_file
      Src: /src/dovecot/src/lib/test-unicode-break.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: test_unicode_break
    functionSourceFile: /src/dovecot/src/lib/test-unicode-break.c
    functionUses: 0
    functionsReached:
    - test_ucd_file
    linkageType: ''
    returnType: void
    signature: void test_unicode_break(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - set
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: log_throttle_init
    functionSourceFile: /src/dovecot/src/lib/log-throttle.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_throttle_init(set, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: TEST_BUF
    functionSourceFile: /src/dovecot/src/lib/test-pkcs5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_BUF(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-pkcs5.c:35,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-pkcs5.c:37,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-pkcs5.c:39,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/test-pkcs5.c:40,1
    - Dst: pkcs5_pbkdf
      Src: /src/dovecot/src/lib/test-pkcs5.c:42,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib/test-pkcs5.c:42,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-pkcs5.c:43,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-pkcs5.c:43,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-pkcs5.c:46,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-pkcs5.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 33
    functionDepth: 7
    functionLinenumber: 33
    functionLinenumberEnd: 49
    functionName: test_pkcs5_pbkdf2
    functionSourceFile: /src/dovecot/src/lib/test-pkcs5.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - buffer_set_used_size
    - test_end
    - pkcs5_pbkdf
    - memcmp
    - hash_method_lookup
    - buffer_free
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_pkcs5_pbkdf2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - so
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: SIZEOF_SOCKADDR
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIZEOF_SOCKADDR(so)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib/net.c:69,1
    - Dst: gai_strerror
      Src: /src/dovecot/src/lib/net.c:70,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:73,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:77,1
    - Dst: gai_strerror
      Src: /src/dovecot/src/lib/net.c:78,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - function
    - gai_errno
    - log
    argTypes:
    - char*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 82
    functionName: net_handle_gai_error
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - i_fatal_status
    - gai_strerror
    - i_error
    linkageType: ''
    returnType: int
    signature: "int net_handle_gai_error(const char *function,\n\t\t\t\tint gai_errno,
      bool log)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_ip_cmp
      Src: /src/dovecot/src/lib/net.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ip1
    - ip2
    argTypes:
    - struct ip_addr*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: net_ip_compare
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 23
    functionsReached:
    - net_ip_cmp
    linkageType: ''
    returnType: bool
    signature: bool net_ip_compare(const struct ip_addr *ip1, const struct ip_addr
      *ip2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib/net.c:96,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/net.c:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ip1
    - ip2
    argTypes:
    - struct ip_addr*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 103
    functionName: net_ip_cmp
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 4
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int net_ip_cmp(const struct ip_addr *ip1, const struct ip_addr *ip2)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ip
    argTypes:
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 127
    functionName: net_ip_hash
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int net_ip_hash(const struct ip_addr *ip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib/net.c:142,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/net.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - so
    - ip
    argTypes:
    - union sockaddr_union*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 145
    functionName: sin_set_ip
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void sin_set_ip(union sockaddr_union *so, const struct ip_addr *ip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:152,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/net.c:157,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/net.c:160,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - so
    - ip
    argTypes:
    - union sockaddr_union*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 163
    functionName: sin_get_ip
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    linkageType: ''
    returnType: void
    signature: void sin_get_ip(const union sockaddr_union *so, struct ip_addr *ip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dovecot/src/lib/net.c:168,1
    - Dst: htons
      Src: /src/dovecot/src/lib/net.c:170,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/net.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - so
    - port
    argTypes:
    - union sockaddr_union*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 173
    functionName: sin_set_port
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - htons
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void sin_set_port(union sockaddr_union *so, in_port_t port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dovecot/src/lib/net.c:178,1
    - Dst: ntohs
      Src: /src/dovecot/src/lib/net.c:180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - so
    argTypes:
    - union sockaddr_union*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 183
    functionName: sin_get_port
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: in_port_t
    signature: in_port_t sin_get_port(const union sockaddr_union *so)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_warning
      Src: /src/dovecot/src/lib/net.c:192,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:197,1
    - Dst: socket
      Src: /src/dovecot/src/lib/net.c:199,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:202,1
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:207,1
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:209,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib/net.c:211,1
    - Dst: sin_set_ip
      Src: /src/dovecot/src/lib/net.c:215,1
    - Dst: bind
      Src: /src/dovecot/src/lib/net.c:216,1
    - Dst: SIZEOF_SOCKADDR
      Src: /src/dovecot/src/lib/net.c:216,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:217,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/net.c:217,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/net.c:218,1
    - Dst: sin_set_ip
      Src: /src/dovecot/src/lib/net.c:224,1
    - Dst: sin_set_port
      Src: /src/dovecot/src/lib/net.c:225,1
    - Dst: connect
      Src: /src/dovecot/src/lib/net.c:226,1
    - Dst: SIZEOF_SOCKADDR
      Src: /src/dovecot/src/lib/net.c:226,1
    - Dst: WSAGetLastError
      Src: /src/dovecot/src/lib/net.c:231,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/net.c:234,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 5
    argNames:
    - ip
    - port
    - my_ip
    - sock_type
    - blocking
    argTypes:
    - struct ip_addr*
    - in_port_t
    - struct ip_addr*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 239
    functionName: net_connect_ip_once
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - i_zero
    - setsockopt
    - WSAGetLastError
    - bind
    - sin_set_port
    - i_error
    - sin_set_ip
    - connect
    - i_close_fd
    - SIZEOF_SOCKADDR
    - i_warning
    - net_ip2addr
    - net_set_nonblock
    - socket
    linkageType: ''
    returnType: int
    signature: "int net_connect_ip_once(const struct ip_addr *ip, in_port_t port,\n\t\t\t
      \      const struct ip_addr *my_ip, int sock_type, bool blocking)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_connect_ip_once
      Src: /src/dovecot/src/lib/net.c:248,1
    - Dst: defined
      Src: /src/dovecot/src/lib/net.c:251,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 7
    argCount: 5
    argNames:
    - ip
    - port
    - my_ip
    - sock_type
    - blocking
    argTypes:
    - struct ip_addr*
    - in_port_t
    - struct ip_addr*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 262
    functionName: net_connect_ip_full
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - net_connect_ip_once
    - defined
    linkageType: ''
    returnType: int
    signature: "int net_connect_ip_full(const struct ip_addr *ip, in_port_t port,\n\t\t\t
      \      const struct ip_addr *my_ip, int sock_type,\n\t\t\t       bool blocking)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_connect_ip_full
      Src: /src/dovecot/src/lib/net.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ip
    - port
    - my_ip
    argTypes:
    - struct ip_addr*
    - in_port_t
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 4
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: net_connect_ip
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 5
    functionsReached:
    - net_connect_ip_full
    linkageType: ''
    returnType: int
    signature: "int net_connect_ip(const struct ip_addr *ip, in_port_t port,\n\t\t
      \  const struct ip_addr *my_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_connect_ip_full
      Src: /src/dovecot/src/lib/net.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ip
    - port
    - my_ip
    argTypes:
    - struct ip_addr*
    - in_port_t
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 4
    functionLinenumber: 270
    functionLinenumberEnd: 274
    functionName: net_connect_ip_blocking
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 2
    functionsReached:
    - net_connect_ip_full
    linkageType: ''
    returnType: int
    signature: "int net_connect_ip_blocking(const struct ip_addr *ip, in_port_t port,\n\t\t\t
      \   const struct ip_addr *my_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_connect_ip_full
      Src: /src/dovecot/src/lib/net.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ip
    - port
    - my_ip
    argTypes:
    - struct ip_addr*
    - in_port_t
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 280
    functionName: net_connect_udp
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - net_connect_ip_full
    linkageType: ''
    returnType: int
    signature: "int net_connect_udp(const struct ip_addr *ip, in_port_t port,\n\t\t\t
      \      const struct ip_addr *my_ip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:288,1
    - Dst: socket
      Src: /src/dovecot/src/lib/net.c:290,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:292,1
    - Dst: sin_set_ip
      Src: /src/dovecot/src/lib/net.c:296,1
    - Dst: bind
      Src: /src/dovecot/src/lib/net.c:297,1
    - Dst: SIZEOF_SOCKADDR
      Src: /src/dovecot/src/lib/net.c:297,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/net.c:298,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/net.c:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ip
    argTypes:
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 303
    functionName: net_try_bind
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - i_zero
    - bind
    - i_error
    - sin_set_ip
    - i_close_fd
    - SIZEOF_SOCKADDR
    - socket
    linkageType: ''
    returnType: int
    signature: int net_try_bind(const struct ip_addr *ip)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:310,1
    - Dst: i_strocpy
      Src: /src/dovecot/src/lib/net.c:312,1
    - Dst: socket
      Src: /src/dovecot/src/lib/net.c:323,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:325,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib/net.c:329,1
    - Dst: connect
      Src: /src/dovecot/src/lib/net.c:332,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/net.c:334,1
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:341,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 349
    functionName: net_connect_unix
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 8
    functionsReached:
    - i_zero
    - setsockopt
    - connect
    - i_error
    - i_close_fd
    - net_set_nonblock
    - socket
    - i_strocpy
    linkageType: ''
    returnType: int
    signature: int net_connect_unix(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/net.c:356,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/lib/net.c:359,1
    - Dst: usleep
      Src: /src/dovecot/src/lib/net.c:364,1
    - Dst: i_rand_minmax
      Src: /src/dovecot/src/lib/net.c:364,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/net.c:365,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib/net.c:366,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - path
    - msecs
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 368
    functionName: net_connect_unix_with_retries
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 6
    functionsReached:
    - i_gettimeofday
    - net_connect_unix
    - timeval_diff_msecs
    - usleep
    - i_rand_minmax
    linkageType: ''
    returnType: int
    signature: int net_connect_unix_with_retries(const char *path, unsigned int msecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/lib/net.c:374,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 376
    functionName: net_disconnect
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 7
    functionsReached:
    - close
    - i_error
    linkageType: ''
    returnType: void
    signature: void net_disconnect(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/net.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - nonblock
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: net_set_nonblock
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 23
    functionsReached:
    - fd_set_nonblock
    linkageType: ''
    returnType: void
    signature: void net_set_nonblock(int fd, bool nonblock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 393
    functionName: net_set_cork
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 2
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int net_set_cork(int fd ATTR_UNUSED, bool cork ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - nodelay
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 400
    functionName: net_set_tcp_nodelay
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 2
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int net_set_tcp_nodelay(int fd, bool nodelay)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 412
    functionName: net_set_tcp_quickack
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 1
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int net_set_tcp_quickack(int fd ATTR_UNUSED, bool quickack ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 424
    functionName: net_set_send_buffer_size
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 1
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int net_set_send_buffer_size(int fd, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 436
    functionName: net_set_recv_buffer_size
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int net_set_recv_buffer_size(int fd, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_listen_full
      Src: /src/dovecot/src/lib/net.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - my_ip
    - port
    - backlog
    argTypes:
    - struct ip_addr*
    - in_port_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 463
    functionName: net_listen
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 2
    functionsReached:
    - net_listen_full
    linkageType: ''
    returnType: int
    signature: int net_listen(const struct ip_addr *my_ip, in_port_t *port, int backlog)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:472,1
    - Dst: sin_set_ip
      Src: /src/dovecot/src/lib/net.c:473,1
    - Dst: sin_set_port
      Src: /src/dovecot/src/lib/net.c:474,1
    - Dst: socket
      Src: /src/dovecot/src/lib/net.c:477,1
    - Dst: socket
      Src: /src/dovecot/src/lib/net.c:484,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:487,1
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:492,1
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:493,1
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:497,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib/net.c:500,1
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:508,1
    - Dst: bind
      Src: /src/dovecot/src/lib/net.c:512,1
    - Dst: SIZEOF_SOCKADDR
      Src: /src/dovecot/src/lib/net.c:512,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:515,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/net.c:516,1
    - Dst: SIZEOF_SOCKADDR
      Src: /src/dovecot/src/lib/net.c:520,1
    - Dst: getsockname
      Src: /src/dovecot/src/lib/net.c:521,1
    - Dst: sin_get_port
      Src: /src/dovecot/src/lib/net.c:523,1
    - Dst: listen
      Src: /src/dovecot/src/lib/net.c:526,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:530,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/net.c:535,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 4
    argNames:
    - my_ip
    - port
    - flags
    - backlog
    argTypes:
    - struct ip_addr*
    - in_port_t*
    - enum net_listen_flags*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 537
    functionName: net_listen_full
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 1
    functionsReached:
    - i_zero
    - setsockopt
    - bind
    - sin_set_port
    - i_error
    - sin_set_ip
    - ENUM_NEGATE
    - sin_get_port
    - i_close_fd
    - SIZEOF_SOCKADDR
    - listen
    - net_ip2addr
    - getsockname
    - socket
    linkageType: ''
    returnType: int
    signature: "int net_listen_full(const struct ip_addr *my_ip, in_port_t *port,\n\t\t
      \   enum net_listen_flags *flags, int backlog)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:547,1
    - Dst: i_strocpy
      Src: /src/dovecot/src/lib/net.c:549,1
    - Dst: socket
      Src: /src/dovecot/src/lib/net.c:560,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:562,1
    - Dst: setsockopt
      Src: /src/dovecot/src/lib/net.c:569,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:570,1
    - Dst: bind
      Src: /src/dovecot/src/lib/net.c:577,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:579,1
    - Dst: listen
      Src: /src/dovecot/src/lib/net.c:582,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:586,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/net.c:589,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - path
    - backlog
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 591
    functionName: net_listen_unix
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 8
    functionsReached:
    - i_zero
    - setsockopt
    - bind
    - i_error
    - i_close_fd
    - listen
    - socket
    - i_strocpy
    linkageType: ''
    returnType: int
    signature: int net_listen_unix(const char *path, int backlog)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib/net.c:598,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/lib/net.c:603,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/net.c:605,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib/net.c:611,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - path
    - backlog
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 617
    functionName: net_listen_unix_unlink_stale
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 1
    functionsReached:
    - i_close_fd
    - net_connect_unix
    - net_listen_unix
    - i_unlink_if_exists
    linkageType: ''
    returnType: int
    signature: int net_listen_unix_unlink_stale(const char *path, int backlog)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:625,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:627,1
    - Dst: accept
      Src: /src/dovecot/src/lib/net.c:629,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:635,1
    - Dst: sin_get_ip
      Src: /src/dovecot/src/lib/net.c:638,1
    - Dst: sin_get_port
      Src: /src/dovecot/src/lib/net.c:639,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - fd
    - addr_r
    - port_r
    argTypes:
    - int
    - struct ip_addr*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 642
    functionName: net_accept
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 9
    functionsReached:
    - i_zero
    - sin_get_port
    - sin_get_ip
    - i_assert
    - accept
    linkageType: ''
    returnType: int
    signature: int net_accept(int fd, struct ip_addr *addr_r, in_port_t *port_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:648,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:649,1
    - Dst: read
      Src: /src/dovecot/src/lib/net.c:651,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/net.c:658,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - fd
    - buf
    - len
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 669
    functionName: net_receive
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - i_assert
    - unlikely
    - read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t net_receive(int fd, void *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/net.c:685,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/net.c:687,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:692,1
    - Dst: getaddrinfo
      Src: /src/dovecot/src/lib/net.c:697,1
    - Dst: net_handle_gai_error
      Src: /src/dovecot/src/lib/net.c:698,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:699,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:707,1
    - Dst: t_new
      Src: /src/dovecot/src/lib/net.c:710,1
    - Dst: sin_get_ip
      Src: /src/dovecot/src/lib/net.c:716,1
    - Dst: freeaddrinfo
      Src: /src/dovecot/src/lib/net.c:718,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - addr
    - ips
    - ips_count
    argTypes:
    - char*
    - struct ip_addr**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 671
    functionDepth: 3
    functionLinenumber: 671
    functionLinenumberEnd: 721
    functionName: net_gethostbyname
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 8
    functionsReached:
    - i_zero
    - t_new
    - net_addr2ip
    - getaddrinfo
    - sin_get_ip
    - freeaddrinfo
    - net_handle_gai_error
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int net_gethostbyname(const char *addr, struct ip_addr **ips,\n\t\t
      \     unsigned int *ips_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:730,1
    - Dst: sin_set_ip
      Src: /src/dovecot/src/lib/net.c:731,1
    - Dst: getnameinfo
      Src: /src/dovecot/src/lib/net.c:732,1
    - Dst: net_handle_gai_error
      Src: /src/dovecot/src/lib/net.c:734,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/net.c:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ip
    - name_r
    argTypes:
    - struct ip_addr*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 723
    functionDepth: 3
    functionLinenumber: 723
    functionLinenumberEnd: 739
    functionName: net_gethostbyaddr
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 1
    functionsReached:
    - i_zero
    - getnameinfo
    - sin_set_ip
    - net_handle_gai_error
    - t_strdup
    linkageType: ''
    returnType: int
    signature: int net_gethostbyaddr(const struct ip_addr *ip, const char **name_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:746,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:748,1
    - Dst: getsockname
      Src: /src/dovecot/src/lib/net.c:750,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:754,1
    - Dst: sin_get_ip
      Src: /src/dovecot/src/lib/net.c:757,1
    - Dst: sin_get_port
      Src: /src/dovecot/src/lib/net.c:758,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - fd
    - addr
    - port
    argTypes:
    - int
    - struct ip_addr*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 741
    functionDepth: 2
    functionLinenumber: 741
    functionLinenumberEnd: 761
    functionName: net_getsockname
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 7
    functionsReached:
    - i_zero
    - i_assert
    - sin_get_port
    - sin_get_ip
    - getsockname
    linkageType: ''
    returnType: int
    signature: int net_getsockname(int fd, struct ip_addr *addr, in_port_t *port)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:768,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:770,1
    - Dst: getpeername
      Src: /src/dovecot/src/lib/net.c:772,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:776,1
    - Dst: sin_get_ip
      Src: /src/dovecot/src/lib/net.c:779,1
    - Dst: sin_get_port
      Src: /src/dovecot/src/lib/net.c:780,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - fd
    - addr
    - port
    argTypes:
    - int
    - struct ip_addr*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 763
    functionDepth: 2
    functionLinenumber: 763
    functionLinenumberEnd: 783
    functionName: net_getpeername
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 8
    functionsReached:
    - i_zero
    - sin_get_port
    - sin_get_ip
    - getpeername
    - i_assert
    linkageType: ''
    returnType: int
    signature: int net_getpeername(int fd, struct ip_addr *addr, in_port_t *port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:790,1
    - Dst: getsockname
      Src: /src/dovecot/src/lib/net.c:791,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib/net.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - fd
    - name_r
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 785
    functionDepth: 2
    functionLinenumber: 785
    functionLinenumberEnd: 799
    functionName: net_getunixname
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 2
    functionsReached:
    - i_zero
    - t_strdup
    - getsockname
    linkageType: ''
    returnType: int
    signature: int net_getunixname(int fd, const char **name_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/dovecot/src/lib/net.c:813,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:814,1
    - Dst: getsockopt
      Src: /src/dovecot/src/lib/net.c:826,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:827,1
    - Dst: getpeereid
      Src: /src/dovecot/src/lib/net.c:837,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:838,1
    - Dst: getsockopt
      Src: /src/dovecot/src/lib/net.c:848,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:849,1
    - Dst: getpeerucred
      Src: /src/dovecot/src/lib/net.c:866,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:867,1
    - Dst: ucred_geteuid
      Src: /src/dovecot/src/lib/net.c:870,1
    - Dst: ucred_getrgid
      Src: /src/dovecot/src/lib/net.c:871,1
    - Dst: ucred_getpid
      Src: /src/dovecot/src/lib/net.c:872,1
    - Dst: ucred_free
      Src: /src/dovecot/src/lib/net.c:873,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:897,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:899,1
    - Dst: recvmsg
      Src: /src/dovecot/src/lib/net.c:907,1
    - Dst: usleep
      Src: /src/dovecot/src/lib/net.c:910,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/net.c:913,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 74
    argCount: 2
    argNames:
    - fd
    - cred_r
    argTypes:
    - int
    - struct net_unix_cred*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 924
    functionName: net_getunixcred
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 3
    functionsReached:
    - i_zero
    - ucred_getrgid
    - usleep
    - i_error
    - getsockopt
    - ucred_getpid
    - ucred_geteuid
    - getpeereid
    - getpeerucred
    - recvmsg
    - ucred_free
    linkageType: ''
    returnType: int
    signature: int net_getunixcred(int fd, struct net_unix_cred *cred_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/net.c:943,1
    - Dst: getnameinfo
      Src: /src/dovecot/src/lib/net.c:945,1
    - Dst: net_handle_gai_error
      Src: /src/dovecot/src/lib/net.c:947,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - ip
    argTypes:
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 926
    functionDepth: 5
    functionLinenumber: 926
    functionLinenumberEnd: 951
    functionName: net_ip2addr
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 86
    functionsReached:
    - getnameinfo
    - t_malloc_no0
    - net_handle_gai_error
    linkageType: ''
    returnType: char
    signature: char *net_ip2addr(const struct ip_addr *ip)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uint
      Src: /src/dovecot/src/lib/net.c:958,1
    - Dst: str_parse_uint
      Src: /src/dovecot/src/lib/net.c:973,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - addr
    - ip
    argTypes:
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 980
    functionName: net_addr2ip_inet4_fast
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - str_parse_uint
    linkageType: ''
    returnType: bool
    signature: bool net_addr2ip_inet4_fast(const char *addr, struct ip_addr *ip)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip_inet4_fast
      Src: /src/dovecot/src/lib/net.c:986,1
    - Dst: if
      Src: /src/dovecot/src/lib/net.c:990,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/net.c:990,1
    - Dst: if
      Src: /src/dovecot/src/lib/net.c:991,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/net.c:993,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib/net.c:995,1
    - Dst: getaddrinfo
      Src: /src/dovecot/src/lib/net.c:1003,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:1004,1
    - Dst: sin_get_ip
      Src: /src/dovecot/src/lib/net.c:1007,1
    - Dst: freeaddrinfo
      Src: /src/dovecot/src/lib/net.c:1010,1
    - Dst: net_handle_gai_error
      Src: /src/dovecot/src/lib/net.c:1011,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - addr
    - ip_r
    argTypes:
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 982
    functionDepth: 3
    functionLinenumber: 982
    functionLinenumberEnd: 1012
    functionName: net_addr2ip
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 46
    functionsReached:
    - strchr
    - net_handle_gai_error
    - getaddrinfo
    - sin_get_ip
    - strlen
    - t_strndup
    - if
    - freeaddrinfo
    - net_addr2ip_inet4_fast
    - i_assert
    linkageType: ''
    returnType: int
    signature: int net_addr2ip(const char *addr, struct ip_addr *ip_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/net.c:1020,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - str
    - port_r
    argTypes:
    - char*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1027
    functionName: net_str2port
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 11
    functionsReached:
    - str_to_uintmax
    linkageType: ''
    returnType: int
    signature: int net_str2port(const char *str, in_port_t *port_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/net.c:1033,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - port_r
    argTypes:
    - char*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1029
    functionDepth: 1
    functionLinenumber: 1029
    functionLinenumberEnd: 1040
    functionName: net_str2port_zero
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 2
    functionsReached:
    - str_to_uintmax
    linkageType: ''
    returnType: int
    signature: int net_str2port_zero(const char *str, in_port_t *port_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/net.c:1050,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/net.c:1053,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/net.c:1055,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/net.c:1056,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/net.c:1062,1
    - Dst: net_str2port
      Src: /src/dovecot/src/lib/net.c:1071,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - str
    - default_port
    - host_r
    - port_r
    argTypes:
    - char*
    - in_port_t
    - char**
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1042
    functionDepth: 7
    functionLinenumber: 1042
    functionLinenumberEnd: 1076
    functionName: net_str2hostport
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 7
    functionsReached:
    - strchr
    - t_strdup_until
    - net_str2port
    linkageType: ''
    returnType: int
    signature: "int net_str2hostport(const char *str, in_port_t default_port,\n\t\t
      \    const char **host_r, in_port_t *port_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:1080,1
    - Dst: IPADDR_IS_V4
      Src: /src/dovecot/src/lib/net.c:1080,1
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/lib/net.c:1080,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/net.c:1082,1
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/lib/net.c:1083,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/net.c:1083,1
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/lib/net.c:1084,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ip
    - port
    argTypes:
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1078
    functionDepth: 11
    functionLinenumber: 1078
    functionLinenumberEnd: 1085
    functionName: net_ipport2str
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 7
    functionsReached:
    - IPADDR_IS_V4
    - t_strdup_printf
    - net_ip2addr
    - IPADDR_IS_V6
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *net_ipport2str(const struct ip_addr *ip, in_port_t port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/lib/net.c:1093,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/net.c:1095,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/net.c:1098,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/net.c:1100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct ip_addr*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1087
    functionDepth: 1
    functionLinenumber: 1087
    functionLinenumberEnd: 1102
    functionName: net_ipv6_mapped_ipv4_convert
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - i_zero
    - memcpy
    - IPADDR_IS_V6
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int net_ipv6_mapped_ipv4_convert(const struct ip_addr *src,\n\t\t\t\t
      struct ip_addr *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/dovecot/src/lib/net.c:1109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1117
    functionName: net_geterror
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 4
    functionsReached:
    - getsockopt
    linkageType: ''
    returnType: int
    signature: int net_geterror(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:1121,1
    - Dst: gai_strerror
      Src: /src/dovecot/src/lib/net.c:1123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - error
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1119
    functionDepth: 1
    functionLinenumber: 1119
    functionLinenumberEnd: 1124
    functionName: net_gethosterror
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 8
    functionsReached:
    - i_assert
    - gai_strerror
    linkageType: ''
    returnType: char
    signature: char *net_gethosterror(int error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/net.c:1148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - error
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1155
    functionName: net_get_hosterror_type
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    linkageType: ''
    returnType: enum net_hosterror_type
    signature: enum net_hosterror_type net_get_hosterror_type(int error)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - error
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1157
    functionDepth: 0
    functionLinenumber: 1157
    functionLinenumberEnd: 1164
    functionName: net_hosterror_notfound
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int net_hosterror_notfound(int error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getservbyport
      Src: /src/dovecot/src/lib/net.c:1170,1
    - Dst: htons
      Src: /src/dovecot/src/lib/net.c:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1166
    functionDepth: 0
    functionLinenumber: 1166
    functionLinenumberEnd: 1172
    functionName: net_getservbyport
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 0
    functionsReached:
    - htons
    - getservbyport
    linkageType: ''
    returnType: char
    signature: char *net_getservbyport(in_port_t port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/net.c:1180,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/net.c:1182,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/net.c:1184,1
    - Dst: IPADDR_BITS
      Src: /src/dovecot/src/lib/net.c:1187,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/net.c:1193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - network
    - ip_r
    - bits_r
    argTypes:
    - char*
    - struct ip_addr*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1174
    functionDepth: 7
    functionLinenumber: 1174
    functionLinenumberEnd: 1198
    functionName: net_parse_range
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 7
    functionsReached:
    - strchr
    - net_addr2ip
    - t_strdup_until
    - IPADDR_BITS
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int net_parse_range(const char *network, struct ip_addr *ip_r,\n\t\t
      \   unsigned int *bits_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: net_ipv6_mapped_ipv4_convert
      Src: /src/dovecot/src/lib/net.c:1208,1
    - Dst: IPADDR_IS_V4
      Src: /src/dovecot/src/lib/net.c:1218,1
    - Dst: IPADDR_IS_V4
      Src: /src/dovecot/src/lib/net.c:1218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/net.c:1222,1
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/lib/net.c:1222,1
    - Dst: IPADDR_IS_V6
      Src: /src/dovecot/src/lib/net.c:1222,1
    - Dst: IPADDR_IS_V4
      Src: /src/dovecot/src/lib/net.c:1224,1
    - Dst: htonl
      Src: /src/dovecot/src/lib/net.c:1243,1
    - Dst: htonl
      Src: /src/dovecot/src/lib/net.c:1244,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 3
    argNames:
    - ip
    - net_ip
    - bits
    argTypes:
    - struct ip_addr*
    - struct ip_addr*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1200
    functionDepth: 2
    functionLinenumber: 1200
    functionLinenumberEnd: 1259
    functionName: net_is_in_network
    functionSourceFile: /src/dovecot/src/lib/net.c
    functionUses: 11
    functionsReached:
    - IPADDR_IS_V4
    - net_ipv6_mapped_ipv4_convert
    - htonl
    - IPADDR_IS_V6
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool net_is_in_network(const struct ip_addr *ip,\n\t\t       const
      struct ip_addr *net_ip, unsigned int bits)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - cp
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 37
    functionName: decode_digit
    functionSourceFile: /src/dovecot/src/lib/punycode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int decode_digit(unsigned char cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - delta
    - numpoints
    - firsttime
    argTypes:
    - unsigned int
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 53
    functionName: adapt
    functionSourceFile: /src/dovecot/src/lib/punycode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int adapt(unsigned int delta, unsigned int numpoints, bool
      firsttime)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY
      Src: /src/dovecot/src/lib/punycode.c:58,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib/punycode.c:63,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib/punycode.c:65,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib/punycode.c:68,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/punycode.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/punycode.c:74,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/punycode.c:80,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/punycode.c:83,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/punycode.c:86,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/punycode.c:94,1
    - Dst: decode_digit
      Src: /src/dovecot/src/lib/punycode.c:108,1
    - Dst: adapt
      Src: /src/dovecot/src/lib/punycode.c:124,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib/punycode.c:141,1
    - Dst: uni_ucs4_to_utf8
      Src: /src/dovecot/src/lib/punycode.c:148,1
    - Dst: array_front
      Src: /src/dovecot/src/lib/punycode.c:148,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 3
    argNames:
    - input
    - len
    - output
    argTypes:
    - char*
    - size_t
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 150
    functionName: punycode_decode
    functionSourceFile: /src/dovecot/src/lib/punycode.c
    functionUses: 3
    functionsReached:
    - strrchr
    - array_push_back
    - ARRAY
    - array_count
    - adapt
    - t_array_init
    - array_insert
    - array_front
    - decode_digit
    - i_assert
    - CONST_PTR_OFFSET
    - uni_ucs4_to_utf8
    linkageType: ''
    returnType: int
    signature: int punycode_decode(const char *input, size_t len, string_t *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stats_dist_get_percentile
      Src: /src/dovecot/src/lib/stats-dist.h:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct stats_dist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: stats_dist_get_95th
    functionSourceFile: /src/dovecot/src/lib/stats-dist.h
    functionUses: 3
    functionsReached:
    - stats_dist_get_percentile
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t stats_dist_get_95th(struct stats_dist *stats)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CPU_ZERO
      Src: /src/dovecot/src/lib/cpu-count.c:19,1
    - Dst: sched_getaffinity
      Src: /src/dovecot/src/lib/cpu-count.c:20,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/cpu-count.c:21,1
    - Dst: CPU_COUNT
      Src: /src/dovecot/src/lib/cpu-count.c:24,1
    - Dst: CPU_CLR
      Src: /src/dovecot/src/lib/cpu-count.c:27,1
    - Dst: cpuset_getaffinity
      Src: /src/dovecot/src/lib/cpu-count.c:28,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/cpu-count.c:30,1
    - Dst: CPU_COUNT
      Src: /src/dovecot/src/lib/cpu-count.c:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - cpu_count_r
    - error_r
    argTypes:
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 14
    functionDepth: 11
    functionLinenumber: 14
    functionLinenumberEnd: 41
    functionName: cpu_count_get
    functionSourceFile: /src/dovecot/src/lib/cpu-count.c
    functionUses: 2
    functionsReached:
    - sched_getaffinity
    - t_strdup_printf
    - cpuset_getaffinity
    - CPU_COUNT
    - CPU_CLR
    - CPU_ZERO
    linkageType: ''
    returnType: int
    signature: int cpu_count_get(int *cpu_count_r, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: version_string_verify_full
      Src: /src/dovecot/src/lib/version.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - line
    - service_name
    - major_version
    argTypes:
    - char*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 13
    functionName: version_string_verify
    functionSourceFile: /src/dovecot/src/lib/version.c
    functionUses: 7
    functionsReached:
    - version_string_verify_full
    linkageType: ''
    returnType: bool
    signature: "bool version_string_verify(const char *line, const char *service_name,\n\t\t\t
      \  unsigned int major_version)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/version.c:19,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib/version.c:22,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib/version.c:25,1
    - Dst: strchr
      Src: /src/dovecot/src/lib/version.c:31,1
    - Dst: str_uint_equals
      Src: /src/dovecot/src/lib/version.c:36,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib/version.c:36,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib/version.c:38,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - line
    - service_name
    - major_version
    - minor_version_r
    argTypes:
    - char*
    - char*
    - unsigned int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 15
    functionDepth: 7
    functionLinenumber: 15
    functionLinenumberEnd: 41
    functionName: version_string_verify_full
    functionSourceFile: /src/dovecot/src/lib/version.c
    functionUses: 3
    functionsReached:
    - strchr
    - str_to_uint
    - str_begins
    - strlen
    - t_strdup_until
    - str_uint_equals
    - strncmp
    linkageType: ''
    returnType: bool
    signature: "bool version_string_verify_full(const char *line, const char *service_name,\n\t\t\t\tunsigned
      int major_version,\n\t\t\t\tunsigned int *minor_version_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uint
      Src: /src/dovecot/src/lib/version.c:50,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/version.c:51,1
    - Dst: str_parse_uint
      Src: /src/dovecot/src/lib/version.c:52,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/version.c:53,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/version.c:57,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/version.c:61,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - version1
    - version2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 74
    functionName: version_cmp
    functionSourceFile: /src/dovecot/src/lib/version.c
    functionUses: 8
    functionsReached:
    - i_assert
    - str_parse_uint
    - i_unreached
    linkageType: ''
    returnType: int
    signature: int version_cmp(const char *version1, const char *version2)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - version
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 89
    functionName: version_is_valid
    functionSourceFile: /src/dovecot/src/lib/version.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool version_is_valid(const char *version)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - str
    - end_char
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 18
    functionName: str_is_numeric
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool str_is_numeric(const char *str, char end_char)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 2
    argNames:
    - str
    - end_char
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 44
    functionName: str_is_float
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool str_is_float(const char *str, char end_char)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: STR_PARSE_U__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_PARSE_U__TEMPLATE(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: STR_TO_U__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_TO_U__TEMPLATE(name, type)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 4
    argNames:
    - data
    - size
    - num_r
    - endp_r
    argTypes:
    - unsigned char*
    - size_t
    - uintmax_t*
    - unsigned char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 106
    functionName: str_parse_data_uintmax
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int str_parse_data_uintmax(const unsigned char *data, size_t size,\n\t\t\t
      \  uintmax_t *num_r, const unsigned char **endp_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_data_uintmax
      Src: /src/dovecot/src/lib/strnum.c:109,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strnum.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - num_r
    - endp_r
    argTypes:
    - char*
    - uintmax_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: str_parse_uintmax
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 1
    functionsReached:
    - strlen
    - str_parse_data_uintmax
    linkageType: ''
    returnType: int
    signature: int str_parse_uintmax(const char *str, uintmax_t *num_r, const char
      **endp_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uintmax
      Src: /src/dovecot/src/lib/strnum.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - uintmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: str_to_uintmax
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 7
    functionsReached:
    - str_parse_uintmax
    linkageType: ''
    returnType: int
    signature: int str_to_uintmax(const char *str, uintmax_t *num_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/strnum.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - str
    - num
    argTypes:
    - char*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 130
    functionName: str_uint_equals
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 2
    functionsReached:
    - str_to_uintmax
    linkageType: ''
    returnType: bool
    signature: bool str_uint_equals(const char *str, uintmax_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 145
    functionName: STR_PARSE_UHEX__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_PARSE_UHEX__TEMPLATE(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: STR_TO_UHEX__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_TO_UHEX__TEMPLATE(name, type)
  - BBCount: 24
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 2
    argNames:
    - ch
    - hex_r
    argTypes:
    - char
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 186
    functionName: _str_parse_hex
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int _str_parse_hex(const char ch,\n\tunsigned int *hex_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _str_parse_hex
      Src: /src/dovecot/src/lib/strnum.c:193,1
    - Dst: _str_parse_hex
      Src: /src/dovecot/src/lib/strnum.c:201,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - str
    - num_r
    - endp_r
    argTypes:
    - char*
    - uintmax_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 206
    functionName: str_parse_uintmax_hex
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 1
    functionsReached:
    - _str_parse_hex
    linkageType: ''
    returnType: int
    signature: "int str_parse_uintmax_hex(const char *str, uintmax_t *num_r,\n\tconst
      char **endp_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uintmax_hex
      Src: /src/dovecot/src/lib/strnum.c:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - uintmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 216
    functionName: str_to_uintmax_hex
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 8
    functionsReached:
    - str_parse_uintmax_hex
    linkageType: ''
    returnType: int
    signature: int str_to_uintmax_hex(const char *str, uintmax_t *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 231
    functionName: STR_PARSE_UOCT__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_PARSE_UOCT__TEMPLATE(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 247
    functionName: STR_TO_UOCT__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_TO_UOCT__TEMPLATE(name, type)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - str
    - num_r
    - endp_r
    argTypes:
    - char*
    - uintmax_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 271
    functionName: str_parse_uintmax_oct
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int str_parse_uintmax_oct(const char *str, uintmax_t *num_r,\n\tconst
      char **endp_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uintmax_oct
      Src: /src/dovecot/src/lib/strnum.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - uintmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 281
    functionName: str_to_uintmax_oct
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 2
    functionsReached:
    - str_parse_uintmax_oct
    linkageType: ''
    returnType: int
    signature: int str_to_uintmax_oct(const char *str, uintmax_t *num_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - int_min
    - ','
    - int_max
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: STR_PARSE_S__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_PARSE_S__TEMPLATE(name, type, int_min, int_max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - int_min
    - ','
    - int_max
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 316
    functionName: STR_TO_S__TEMPLATE
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_TO_S__TEMPLATE(name, type, int_min, int_max)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uintmax
      Src: /src/dovecot/src/lib/strnum.c:333,1
    - Dst: UNSIGNED_MINUS
      Src: /src/dovecot/src/lib/strnum.c:343,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - str
    - num_r
    - endp_r
    argTypes:
    - char*
    - intmax_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 346
    functionName: ATTR_NO_SANITIZE_INTEGER::str_parse_intmax
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached:
    - str_parse_uintmax
    - UNSIGNED_MINUS
    linkageType: ''
    returnType: ATTR_NO_SANITIZE_IMPLICIT_CONVERSION
    signature: 'ATTR_NO_SANITIZE_IMPLICIT_CONVERSION ATTR_NO_SANITIZE_INTEGER

      str_parse_intmax(const char *str, intmax_t *num_r, const char **endp_r)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_intmax
      Src: /src/dovecot/src/lib/strnum.c:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - intmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 356
    functionName: str_to_intmax
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 7
    functionsReached:
    - str_parse_intmax
    linkageType: ''
    returnType: int
    signature: int str_to_intmax(const char *str, intmax_t *num_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - l
    - result_size
    argTypes:
    - uintmax_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 372
    functionName: verify_xid
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int verify_xid(uintmax_t l, unsigned int result_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/strnum.c:378,1
    - Dst: verify_xid
      Src: /src/dovecot/src/lib/strnum.c:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - uid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 374
    functionDepth: 3
    functionLinenumber: 374
    functionLinenumberEnd: 385
    functionName: str_to_uid
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 6
    functionsReached:
    - str_to_uintmax
    - verify_xid
    linkageType: ''
    returnType: int
    signature: int str_to_uid(const char *str, uid_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/strnum.c:391,1
    - Dst: verify_xid
      Src: /src/dovecot/src/lib/strnum.c:396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 401
    functionName: str_to_gid
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 6
    functionsReached:
    - str_to_uintmax
    - verify_xid
    linkageType: ''
    returnType: int
    signature: int str_to_gid(const char *str, gid_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/strnum.c:407,1
    - Dst: verify_xid
      Src: /src/dovecot/src/lib/strnum.c:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - pid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 403
    functionDepth: 3
    functionLinenumber: 403
    functionLinenumberEnd: 414
    functionName: str_to_pid
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 12
    functionsReached:
    - str_to_uintmax
    - verify_xid
    linkageType: ''
    returnType: int
    signature: int str_to_pid(const char *str, pid_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/strnum.c:420,1
    - Dst: verify_xid
      Src: /src/dovecot/src/lib/strnum.c:423,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - ino_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 416
    functionDepth: 3
    functionLinenumber: 416
    functionLinenumberEnd: 427
    functionName: str_to_ino
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 2
    functionsReached:
    - str_to_uintmax
    - verify_xid
    linkageType: ''
    returnType: int
    signature: int str_to_ino(const char *str, ino_t *num_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uintmax
      Src: /src/dovecot/src/lib/strnum.c:433,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 429
    functionDepth: 3
    functionLinenumber: 429
    functionLinenumberEnd: 440
    functionName: str_to_uoff
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 14
    functionsReached:
    - str_to_uintmax
    linkageType: ''
    returnType: int
    signature: int str_to_uoff(const char *str, uoff_t *num_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_to_intmax
      Src: /src/dovecot/src/lib/strnum.c:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 451
    functionName: str_to_time
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 14
    functionsReached:
    - str_to_intmax
    linkageType: ''
    returnType: int
    signature: int str_to_time(const char *str, time_t *num_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtof
      Src: /src/dovecot/src/lib/strnum.c:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 468
    functionName: str_to_float
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 2
    functionsReached:
    - strtof
    linkageType: ''
    returnType: int
    signature: int str_to_float(const char *str, float *num_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtod
      Src: /src/dovecot/src/lib/strnum.c:473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - num_r
    argTypes:
    - char*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 479
    functionName: str_to_double
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 2
    functionsReached:
    - strtod
    linkageType: ''
    returnType: int
    signature: int str_to_double(const char *str, double *num_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_is_numeric
      Src: /src/dovecot/src/lib/strnum.c:488,1
    - Dst: str_is_numeric
      Src: /src/dovecot/src/lib/strnum.c:492,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 496
    functionName: str_num_error
    functionSourceFile: /src/dovecot/src/lib/strnum.c
    functionUses: 3
    functionsReached:
    - str_is_numeric
    linkageType: ''
    returnType: char
    signature: char *str_num_error(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: OBJ_REGISTER
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OBJ_REGISTER(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - obj
    - ','
    - id_ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: OBJ_REGISTER_COMPATIBLE
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OBJ_REGISTER_COMPATIBLE(obj, id_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _reg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: MODULE_CONTEXT_DEFINE
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_DEFINE(_name, _reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _reg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: MODULE_CONTEXT_INIT
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_INIT(_reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _reg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: MODULE_CONTEXT_DEFINE
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_DEFINE(_name, _reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _reg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: MODULE_CONTEXT_INIT
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_INIT(_reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _reg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: MODULE_CONTEXT_DEFINE_INIT
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_DEFINE_INIT(_name, _reg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - id
    argTypes:
    - struct module_context_id*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: module_get_context_id
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int module_get_context_id(struct module_context_id *id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: module_get_context_id
      Src: /src/dovecot/src/lib/module-context.h:87,1
    - Dst: array_count_i
      Src: /src/dovecot/src/lib/module-context.h:88,1
    - Dst: array_idx_modifiable_i
      Src: /src/dovecot/src/lib/module-context.h:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - array
    - id
    argTypes:
    - struct array*
    - struct module_context_id*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: module_context_get
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached:
    - array_count_i
    - array_idx_modifiable_i
    - module_get_context_id
    linkageType: ''
    returnType: void
    signature: 'void *

      module_context_get(struct array *array, struct module_context_id *id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - obj
    - ','
    - id_ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: MODULE_CONTEXT
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT(obj, id_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: module_context_get
      Src: /src/dovecot/src/lib/module-context.h:101,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/module-context.h:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - array
    - id
    - panic_message
    argTypes:
    - struct array*
    - struct module_context_id*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 105
    functionName: module_context_get_require
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached:
    - module_context_get
    - i_panic
    linkageType: ''
    returnType: void
    signature: "void *\nmodule_context_get_require(struct array *array, struct module_context_id
      *id,\n\t\t\t   const char *panic_message)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - obj
    - ','
    - id_ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: MODULE_CONTEXT_REQUIRE
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_REQUIRE(obj, id_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - obj
    - ','
    - id_ctx
    - ','
    - ctx
    - ','
    - module_ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: MODULE_CONTEXT_SET_FULL
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_SET_FULL(obj, id_ctx, ctx, module_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - obj
    - ','
    - id_ctx
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: MODULE_CONTEXT_SET
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 58
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_SET(obj, id_ctx, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - obj
    - ','
    - id_ctx
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: MODULE_CONTEXT_SET_SELF
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_SET_SELF(obj, id_ctx, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - obj
    - ','
    - id_ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: MODULE_CONTEXT_UNSET
    functionSourceFile: /src/dovecot/src/lib/module-context.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CONTEXT_UNSET(obj, id_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/test-hash.c:14,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib/test-hash.c:15,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-hash.c:17,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-hash.c:18,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib/test-hash.c:19,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/test-hash.c:19,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib/test-hash.c:20,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/test-hash.c:20,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/test-hash.c:21,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-hash.c:25,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib/test-hash.c:26,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/test-hash.c:26,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/test-hash.c:27,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib/test-hash.c:33,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib/test-hash.c:33,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib/test-hash.c:34,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/test-hash.c:35,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 7
    functionDepth: 2
    functionLinenumber: 7
    functionLinenumberEnd: 36
    functionName: test_hash_random_pool
    functionSourceFile: /src/dovecot/src/lib/test-hash.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - memmove
    - hash_table_remove
    - i_rand_limit
    - hash_table_create_direct
    - i_new
    - hash_table_insert
    - hash_table_lookup
    - i_free
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void test_hash_random_pool(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-hash.c:42,1
    - Dst: test_hash_random_pool
      Src: /src/dovecot/src/lib/test-hash.c:43,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib/test-hash.c:45,1
    - Dst: test_hash_random_pool
      Src: /src/dovecot/src/lib/test-hash.c:46,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib/test-hash.c:47,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-hash.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: test_hash
    functionSourceFile: /src/dovecot/src/lib/test-hash.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - pool_unref
    - test_end
    - test_hash_random_pool
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hash(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/dovecot/src/lib/guid.c:25,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/guid.c:26,1
    - Dst: getpid
      Src: /src/dovecot/src/lib/guid.c:27,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/guid.c:34,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 17
    functionDepth: 11
    functionLinenumber: 17
    functionLinenumberEnd: 38
    functionName: guid_generate
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 2
    functionsReached:
    - t_strdup_printf
    - clock_gettime
    - i_fatal
    - getpid
    linkageType: ''
    returnType: char
    signature: char *guid_generate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/lib/guid.c:45,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/guid.c:45,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/guid.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - host
    - hash_r
    argTypes:
    - char*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 4
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: guid_128_host_hash_get
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 1
    functionsReached:
    - memcpy
    - strlen
    - sha1_get_digest
    linkageType: ''
    returnType: void
    signature: "void guid_128_host_hash_get(const char *host,\n\t\t\t    unsigned
      char hash_r[STATIC_ARRAY GUID_128_HOST_HASH_SIZE])"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/dovecot/src/lib/guid.c:62,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/guid.c:63,1
    - Dst: getpid
      Src: /src/dovecot/src/lib/guid.c:64,1
    - Dst: guid_128_host_hash_get
      Src: /src/dovecot/src/lib/guid.c:70,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/lib/guid.c:70,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/guid.c:94,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - guid_r
    argTypes:
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 50
    functionDepth: 5
    functionLinenumber: 50
    functionLinenumberEnd: 95
    functionName: guid_128_generate
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 26
    functionsReached:
    - memcpy
    - getpid
    - i_fatal
    - guid_128_host_hash_get
    - my_hostdomain
    - clock_gettime
    linkageType: ''
    returnType: void
    signature: void guid_128_generate(guid_128_t guid_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random_fill
      Src: /src/dovecot/src/lib/guid.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - uuid
    argTypes:
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: guid_128_uuid4_generate
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 2
    functionsReached:
    - random_fill
    linkageType: ''
    returnType: void
    signature: void guid_128_uuid4_generate(guid_128_t uuid)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - guid
    argTypes:
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 113
    functionName: guid_128_is_empty
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool guid_128_is_empty(const guid_128_t guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib/guid.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - guid1
    - guid2
    argTypes:
    - guid_128_t
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: guid_128_equals
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 9
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool guid_128_equals(const guid_128_t guid1, const guid_128_t guid2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib/guid.c:124,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/guid.c:125,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib/guid.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - str
    - guid_r
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: guid_128_from_string
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 19
    functionsReached:
    - buffer_create_from_data
    - hex_to_binary
    - strlen
    linkageType: ''
    returnType: int
    signature: int guid_128_from_string(const char *str, guid_128_t guid_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib/guid.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - guid
    argTypes:
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 6
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: guid_128_to_string
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 65
    functionsReached:
    - binary_to_hex
    linkageType: ''
    returnType: char
    signature: char *guid_128_to_string(const guid_128_t guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mem_hash
      Src: /src/dovecot/src/lib/guid.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - guid
    argTypes:
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: guid_128_hash
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 7
    functionsReached:
    - mem_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int guid_128_hash(const guid_128_t guid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib/guid.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - guid1
    - guid2
    argTypes:
    - guid_128_t
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: guid_128_cmp
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 10
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int guid_128_cmp(const guid_128_t guid1, const guid_128_t guid2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib/guid.c:149,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/guid.c:151,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/guid.c:157,1
    - Dst: guid_128_to_uuid_string
      Src: /src/dovecot/src/lib/guid.c:157,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/guid.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - guid
    - format
    argTypes:
    - guid_128_t
    - enum uuid_format
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 145
    functionDepth: 11
    functionLinenumber: 145
    functionLinenumberEnd: 160
    functionName: guid_128_to_uuid_string
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 7
    functionsReached:
    - guid_128_to_uuid_string
    - guid_128_to_string
    - t_strdup_printf
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char *guid_128_to_uuid_string(const guid_128_t guid, enum uuid_format
      format)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/guid.c:167,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/guid.c:168,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/guid.c:176,1
    - Dst: guid_128_from_string
      Src: /src/dovecot/src/lib/guid.c:178,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/guid.c:178,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 14
    argCount: 2
    argNames:
    - str
    - guid_r
    argTypes:
    - char*
    - guid_128_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 162
    functionDepth: 4
    functionLinenumber: 162
    functionLinenumberEnd: 179
    functionName: guid_128_from_uuid_string
    functionSourceFile: /src/dovecot/src/lib/guid.c
    functionUses: 5
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - guid_128_from_string
    linkageType: ''
    returnType: int
    signature: int guid_128_from_uuid_string(const char *str, guid_128_t guid_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - proxy
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: iostream_proxy_set_completion_callback
    functionSourceFile: /src/dovecot/src/lib/iostream-proxy.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: iostream_proxy_set_completion_callback(proxy, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/strescape.c:9,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/lib/strescape.c:10,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/strescape.c:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 7
    functionDepth: 4
    functionLinenumber: 7
    functionLinenumberEnd: 12
    functionName: str_nescape
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 2
    functionsReached:
    - str_append_escaped
    - str_c
    - t_str_new
    linkageType: ''
    returnType: char
    signature: char *str_nescape(const void *str, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_ESCAPED_CHAR
      Src: /src/dovecot/src/lib/strescape.c:19,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:24,1
    - Dst: IS_ESCAPED_CHAR
      Src: /src/dovecot/src/lib/strescape.c:27,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strescape.c:28,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:29,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - dest
    - src
    - src_size
    argTypes:
    - string_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 14
    functionDepth: 2
    functionLinenumber: 14
    functionLinenumberEnd: 31
    functionName: str_append_escaped
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 7
    functionsReached:
    - str_append_data
    - str_append_c
    - IS_ESCAPED_CHAR
    linkageType: ''
    returnType: void
    signature: void str_append_escaped(string_t *dest, const void *src, size_t src_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:44,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strescape.c:49,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - dest
    - src
    - src_size
    argTypes:
    - string_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 53
    functionName: str_append_unescaped
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 1
    functionsReached:
    - str_append_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void str_append_unescaped(string_t *dest, const void *src, size_t src_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 78
    functionName: str_unescape
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *str_unescape(char *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/strescape.c:98,1
    - Dst: str_unescape
      Src: /src/dovecot/src/lib/strescape.c:100,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - str
    - unescaped_r
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 102
    functionName: str_unescape_next
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 2
    functionsReached:
    - str_unescape
    - p_strdup_until
    linkageType: ''
    returnType: int
    signature: int str_unescape_next(const char **str, const char **unescaped_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:129,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:130,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:133,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - dest
    - src
    - src_size
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 134
    functionName: str_append_tabescaped_n
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 3
    functionsReached:
    - str_append_data
    linkageType: ''
    returnType: void
    signature: void str_append_tabescaped_n(string_t *dest, const unsigned char *src,
      size_t src_size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcspn
      Src: /src/dovecot/src/lib/strescape.c:142,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:143,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/strescape.c:163,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:165,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 167
    functionName: str_append_tabescaped
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 89
    functionsReached:
    - strcspn
    - str_append_data
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void str_append_tabescaped(string_t *dest, const char *src)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib/strescape.c:175,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/strescape.c:176,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:177,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib/strescape.c:178,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/strescape.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 170
    functionDepth: 4
    functionLinenumber: 170
    functionLinenumberEnd: 182
    functionName: str_tabescape
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 15
    functionsReached:
    - str_c
    - t_str_new
    - strpbrk
    - str_append_tabescaped
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char *str_tabescape(const char *str)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/strescape.c:195,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strescape.c:202,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strescape.c:205,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strescape.c:208,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strescape.c:211,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strescape.c:214,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/strescape.c:217,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 3
    argNames:
    - dest
    - src
    - src_size
    argTypes:
    - string_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 225
    functionName: str_append_tabunescaped
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 4
    functionsReached:
    - str_append_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void str_append_tabunescaped(string_t *dest, const void *src, size_t
      src_size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/strescape.c:260,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/strescape.c:262,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/strescape.c:262,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/strescape.c:267,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - str
    - src
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 272
    functionName: str_tabunescape_from
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 0
    functionsReached:
    - strchr
    - strlen
    - memmove
    linkageType: ''
    returnType: char
    signature: char *str_tabunescape_from(char *str, char *src)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/strescape.c:276,1
    - Dst: str_tabunescape_from
      Src: /src/dovecot/src/lib/strescape.c:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 282
    functionName: str_tabunescape
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 7
    functionsReached:
    - strchr
    - str_tabunescape_from
    linkageType: ''
    returnType: char
    signature: char *str_tabunescape(char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/strescape.c:288,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/strescape.c:292,1
    - Dst: str_tabunescape_from
      Src: /src/dovecot/src/lib/strescape.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 284
    functionDepth: 7
    functionLinenumber: 284
    functionLinenumberEnd: 294
    functionName: t_str_tabunescape
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 4
    functionsReached:
    - strchr
    - str_tabunescape_from
    - t_strdup_noconst
    linkageType: ''
    returnType: char
    signature: char *t_str_tabunescape(const char *str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib/strescape.c:303,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib/strescape.c:307,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib/strescape.c:308,1
    - Dst: strpbrk
      Src: /src/dovecot/src/lib/strescape.c:312,1
    - Dst: nearest_power
      Src: /src/dovecot/src/lib/strescape.c:321,1
    - Dst: p_realloc
      Src: /src/dovecot/src/lib/strescape.c:322,1
    - Dst: str_tabunescape_from
      Src: /src/dovecot/src/lib/strescape.c:330,1
    - Dst: str_tabunescape_from
      Src: /src/dovecot/src/lib/strescape.c:336,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/strescape.c:337,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 296
    functionDepth: 5
    functionLinenumber: 296
    functionLinenumberEnd: 341
    functionName: p_strsplit_tabescaped_inplace
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 0
    functionsReached:
    - p_new
    - strpbrk
    - nearest_power
    - p_realloc
    - str_tabunescape_from
    - t_malloc_no0
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: char
    signature: char **p_strsplit_tabescaped_inplace(pool_t pool, char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strsplit_tabescaped_inplace
      Src: /src/dovecot/src/lib/strescape.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 343
    functionDepth: 6
    functionLinenumber: 343
    functionLinenumberEnd: 348
    functionName: t_strsplit_tabescaped_inplace
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 4
    functionsReached:
    - p_strsplit_tabescaped_inplace
    linkageType: ''
    returnType: char
    signature: char *const *t_strsplit_tabescaped_inplace(char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strsplit_tabescaped_inplace
      Src: /src/dovecot/src/lib/strescape.c:352,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/strescape.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 6
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: p_strsplit_tabescaped
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 10
    functionsReached:
    - p_strdup
    - p_strsplit_tabescaped_inplace
    linkageType: ''
    returnType: char
    signature: char **p_strsplit_tabescaped(pool_t pool, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit_tabescaped_inplace
      Src: /src/dovecot/src/lib/strescape.c:357,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib/strescape.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 7
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: t_strsplit_tabescaped
    functionSourceFile: /src/dovecot/src/lib/strescape.c
    functionUses: 55
    functionsReached:
    - t_strsplit_tabescaped_inplace
    - t_strdup_noconst
    linkageType: ''
    returnType: char
    signature: char *const *t_strsplit_tabescaped(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:23,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:28,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:30,1
    - Dst: struct unicode_transform*::next::def::input
      Src: /src/dovecot/src/lib/unicode-transform.c:31,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:33,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - trans
    - out
    - out_data
    - out_len
    - error_r
    argTypes:
    - struct unicode_transform*
    - uint32_t*
    - struct unicode_code_point_data**
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 36
    functionName: uniform_transform_forward
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - struct unicode_transform*::next::def::input
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t uniform_transform_forward(\n\tstruct unicode_transform *trans,
      const uint32_t *out,\n\tconst struct unicode_code_point_data *const *out_data,
      size_t out_len,\n\tconst char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:54,1
    - Dst: struct unicode_transform*::def::input
      Src: /src/dovecot/src/lib/unicode-transform.c:55,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:57,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:61,1
    - Dst: struct unicode_transform*::def::flush
      Src: /src/dovecot/src/lib/unicode-transform.c:76,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:78,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 3
    argNames:
    - trans
    - buf
    - error_r
    argTypes:
    - struct unicode_transform*
    - struct unicode_transform_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 89
    functionName: unicode_transform_input_buf
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - struct unicode_transform*::def::input
    - i_assert
    - struct unicode_transform*::def::flush
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t unicode_transform_input_buf(struct unicode_transform *trans,\n\t\t\t\t
      \   const struct unicode_transform_buffer *buf,\n\t\t\t\t    const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: struct unicode_transform*::def::flush
      Src: /src/dovecot/src/lib/unicode-transform.c:108,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:110,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - trans
    - error_r
    argTypes:
    - struct unicode_transform*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 125
    functionName: unicode_transform_flush
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - struct unicode_transform*::def::flush
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int unicode_transform_flush(struct unicode_transform *trans,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:141,1
    - Dst: unicode_transform_init
      Src: /src/dovecot/src/lib/unicode-transform.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - sink
    - buffer
    argTypes:
    - struct unicode_buffer_sink*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 144
    functionName: unicode_buffer_sink_init
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_zero
    - unicode_transform_init
    linkageType: ''
    returnType: void
    signature: "void unicode_buffer_sink_init(struct unicode_buffer_sink *sink,\n\t\t\t
      \     buffer_t *buffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/unicode-transform.c:152,1
    - Dst: uni_ucs4_to_utf8
      Src: /src/dovecot/src/lib/unicode-transform.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - trans
    - buf
    - ATTR_UNUSED
    argTypes:
    - struct unicode_transform*
    - struct unicode_transform_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: unicode_buffer_sink_input
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - container_of
    - uni_ucs4_to_utf8
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t unicode_buffer_sink_input(struct unicode_transform *trans,\n\t\t\t
      \ const struct unicode_transform_buffer *buf,\n\t\t\t  const char **error_r
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:173,1
    - Dst: unicode_transform_init
      Src: /src/dovecot/src/lib/unicode-transform.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - sink
    - array
    - array_size
    - array_pos
    argTypes:
    - struct unicode_static_array_sink*
    - uint32_t*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 179
    functionName: unicode_static_array_sink_init
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - i_zero
    - unicode_transform_init
    linkageType: ''
    returnType: void
    signature: "void unicode_static_array_sink_init(struct unicode_static_array_sink
      *sink,\n\t\t\t\t    uint32_t *array, size_t array_size,\n\t\t\t\t    size_t
      *array_pos)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/unicode-transform.c:187,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/unicode-transform.c:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - trans
    - buf
    - error_r
    argTypes:
    - struct unicode_transform*
    - struct unicode_transform_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 198
    functionName: unicode_static_array_sink_input
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - memcpy
    - container_of
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t unicode_static_array_sink_input(struct unicode_transform *trans,\n\t\t\t\tconst
      struct unicode_transform_buffer *buf,\n\t\t\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - cp
    - buf
    argTypes:
    - uint32_t
    - uint32_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 242
    functionName: unicode_hangul_decompose
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t unicode_hangul_decompose(uint32_t cp, uint32_t buf[3])
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 8
    argCount: 2
    argNames:
    - l
    - r
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 271
    functionName: unicode_hangul_compose_pair
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t unicode_hangul_compose_pair(uint32_t l, uint32_t r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:293,1
    - Dst: unicode_transform_init
      Src: /src/dovecot/src/lib/unicode-transform.c:294,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ctx_r
    - type
    argTypes:
    - struct unicode_nf_context*
    - enum unicode_nf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 314
    functionName: unicode_nf_init
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_zero
    - unicode_transform_init
    linkageType: ''
    returnType: void
    signature: "void unicode_nf_init(struct unicode_nf_context *ctx_r,\n\t\t     enum
      unicode_nf_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_nf_init
      Src: /src/dovecot/src/lib/unicode-transform.c:323,1
    - Dst: unicode_transform_chain
      Src: /src/dovecot/src/lib/unicode-transform.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct unicode_nf_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 316
    functionDepth: 3
    functionLinenumber: 316
    functionLinenumberEnd: 325
    functionName: unicode_nf_reset
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_transform_chain
    - unicode_nf_init
    linkageType: ''
    returnType: void
    signature: void unicode_nf_reset(struct unicode_nf_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:334,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:335,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:336,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/unicode-transform.c:345,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/unicode-transform.c:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - offset
    - count
    argTypes:
    - struct unicode_nf_context*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 353
    functionName: unicode_nf_buffer_delete
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - i_assert
    - memmove
    linkageType: ''
    returnType: void
    signature: "void unicode_nf_buffer_delete(struct unicode_nf_context *ctx, size_t
      offset,\n\t\t\t size_t count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - idx1
    - idx2
    argTypes:
    - struct unicode_nf_context*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 366
    functionName: unicode_nf_buffer_swap
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void unicode_nf_buffer_swap(struct unicode_nf_context *ctx,\n\t\t
      \      size_t idx1, size_t idx2)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: unicode_hangul_decompose
      Src: /src/dovecot/src/lib/unicode-transform.c:385,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:389,1
    - Dst: unicode_code_point_data_get_full_decomposition
      Src: /src/dovecot/src/lib/unicode-transform.c:390,1
    - Dst: unicode_code_point_data_get_full_decomposition
      Src: /src/dovecot/src/lib/unicode-transform.c:399,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:410,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:411,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:417,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:455,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:477,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:491,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:499,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:504,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:514,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/unicode-transform.c:530,1
    - Dst: unicode_nf_buffer_swap
      Src: /src/dovecot/src/lib/unicode-transform.c:544,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib/unicode-transform.c:549,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 92
    argCount: 3
    argNames:
    - ctx
    - cp
    - cpd
    argTypes:
    - struct unicode_nf_context*
    - uint32_t
    - struct unicode_code_point_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 550
    functionName: unicode_nf_cp
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_nf_buffer_swap
    - unicode_code_point_data_get_full_decomposition
    - unicode_code_point_get_data
    - unicode_hangul_decompose
    - I_MIN
    - I_MAX
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void unicode_nf_cp(struct unicode_nf_context *ctx, uint32_t cp,\n\t
      \     const struct unicode_code_point_data *cpd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:558,1
    - Dst: unicode_nf_cp
      Src: /src/dovecot/src/lib/unicode-transform.c:570,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:573,1
    - Dst: unicode_nf_cp
      Src: /src/dovecot/src/lib/unicode-transform.c:583,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - cp
    - cpd
    argTypes:
    - struct unicode_nf_context*
    - uint32_t
    - struct unicode_code_point_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 552
    functionDepth: 2
    functionLinenumber: 552
    functionLinenumberEnd: 585
    functionName: unicode_nf_input_cp
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - i_assert
    - unicode_nf_cp
    linkageType: ''
    returnType: bool
    signature: "bool unicode_nf_input_cp(struct unicode_nf_context *ctx, uint32_t
      cp,\n\t\t    const struct unicode_code_point_data *cpd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/unicode-transform.c:593,1
    - Dst: unicode_nf_input_cp
      Src: /src/dovecot/src/lib/unicode-transform.c:597,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - trans
    - buf
    - ATTR_UNUSED
    argTypes:
    - struct unicode_transform*
    - struct unicode_transform_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 587
    functionDepth: 3
    functionLinenumber: 587
    functionLinenumberEnd: 603
    functionName: unicode_nf_input
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - container_of
    - unicode_nf_input_cp
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t unicode_nf_input(struct unicode_transform *trans,\n\t\t const
      struct unicode_transform_buffer *buf,\n\t\t const char **error_r ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unicode_hangul_compose_pair
      Src: /src/dovecot/src/lib/unicode-transform.c:609,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:615,1
    - Dst: unicode_code_point_data_find_composition
      Src: /src/dovecot/src/lib/unicode-transform.c:616,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - l
    - r
    - l_data
    argTypes:
    - uint32_t
    - uint32_t
    - struct unicode_code_point_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 617
    functionName: unicode_nf_compose_pair
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_hangul_compose_pair
    - unicode_code_point_data_find_composition
    - unicode_code_point_get_data
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t unicode_nf_compose_pair(uint32_t l, uint32_t r,\n\t\t\tconst
      struct unicode_code_point_data **l_data)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:638,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib/unicode-transform.c:646,1
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:654,1
    - Dst: unicode_nf_compose_pair
      Src: /src/dovecot/src/lib/unicode-transform.c:660,1
    - Dst: unicode_nf_buffer_delete
      Src: /src/dovecot/src/lib/unicode-transform.c:683,1
    - Dst: uniform_transform_forward
      Src: /src/dovecot/src/lib/unicode-transform.c:697,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:702,1
    - Dst: unicode_nf_buffer_delete
      Src: /src/dovecot/src/lib/unicode-transform.c:703,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 56
    argCount: 3
    argNames:
    - ctx
    - finished
    - error_r
    argTypes:
    - struct unicode_nf_context*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 709
    functionName: unicode_nf_flush_more
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_code_point_get_data
    - unicode_nf_compose_pair
    - I_MAX
    - unicode_nf_buffer_delete
    - i_assert
    - uniform_transform_forward
    linkageType: ''
    returnType: int
    signature: "int unicode_nf_flush_more(struct unicode_nf_context *ctx, bool finished,\n\t\t
      \     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/unicode-transform.c:716,1
    - Dst: unicode_nf_flush_more
      Src: /src/dovecot/src/lib/unicode-transform.c:719,1
    - Dst: unicode_nf_cp
      Src: /src/dovecot/src/lib/unicode-transform.c:724,1
    - Dst: unicode_nf_flush_more
      Src: /src/dovecot/src/lib/unicode-transform.c:728,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - trans
    - finished
    - error_r
    argTypes:
    - struct unicode_transform*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 711
    functionDepth: 3
    functionLinenumber: 711
    functionLinenumberEnd: 729
    functionName: unicode_nf_flush
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_nf_flush_more
    - container_of
    - unicode_nf_cp
    linkageType: ''
    returnType: int
    signature: "int unicode_nf_flush(struct unicode_transform *trans, bool finished,\n\t\t
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:747,1
    - Dst: unicode_nf_init
      Src: /src/dovecot/src/lib/unicode-transform.c:776,1
    - Dst: unicode_transform_init
      Src: /src/dovecot/src/lib/unicode-transform.c:777,1
    - Dst: unicode_transform_chain
      Src: /src/dovecot/src/lib/unicode-transform.c:778,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - unc_r
    - type
    argTypes:
    - struct unicode_nf_checker*
    - enum unicode_nf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 744
    functionDepth: 3
    functionLinenumber: 744
    functionLinenumberEnd: 779
    functionName: unicode_nf_checker_init
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_zero
    - unicode_transform_init
    - unicode_transform_chain
    - unicode_nf_init
    linkageType: ''
    returnType: void
    signature: "void unicode_nf_checker_init(struct unicode_nf_checker *unc_r,\n\t\t\t
      \    enum unicode_nf_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_nf_checker_init
      Src: /src/dovecot/src/lib/unicode-transform.c:787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - unc
    argTypes:
    - struct unicode_nf_checker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 781
    functionDepth: 4
    functionLinenumber: 781
    functionLinenumberEnd: 788
    functionName: unicode_nf_checker_reset
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_nf_checker_init
    linkageType: ''
    returnType: void
    signature: void unicode_nf_checker_reset(struct unicode_nf_checker *unc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/unicode-transform.c:796,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:799,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:800,1
    - Dst: memmove
      Src: /src/dovecot/src/lib/unicode-transform.c:811,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - trans
    - buf
    - error_r
    argTypes:
    - struct unicode_transform*
    - struct unicode_transform_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 815
    functionName: unicode_nf_check_sink_input
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - memmove
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t unicode_nf_check_sink_input(struct unicode_transform *trans,\n\t\t\t
      \   const struct unicode_transform_buffer *buf,\n\t\t\t    const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:823,1
    - Dst: unicode_transform_flush
      Src: /src/dovecot/src/lib/unicode-transform.c:842,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:844,1
    - Dst: unicode_nf_reset
      Src: /src/dovecot/src/lib/unicode-transform.c:847,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:849,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:858,1
    - Dst: unicode_transform_input_buf
      Src: /src/dovecot/src/lib/unicode-transform.c:864,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:866,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:871,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:875,1
    - Dst: unicode_transform_input_buf
      Src: /src/dovecot/src/lib/unicode-transform.c:879,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:880,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 3
    argNames:
    - unc
    - cp
    - _cp_data
    argTypes:
    - struct unicode_nf_checker*
    - uint32_t
    - struct unicode_code_point_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 817
    functionDepth: 4
    functionLinenumber: 817
    functionLinenumberEnd: 884
    functionName: unicode_nf_checker_input
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_zero
    - unicode_transform_flush
    - unicode_code_point_get_data
    - unicode_transform_input_buf
    - i_assert
    - unicode_nf_reset
    linkageType: ''
    returnType: int
    signature: "int unicode_nf_checker_input(struct unicode_nf_checker *unc, uint32_t
      cp,\n\t\t\t     const struct unicode_code_point_data **_cp_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unicode_transform_flush
      Src: /src/dovecot/src/lib/unicode-transform.c:894,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:895,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - unc
    argTypes:
    - struct unicode_nf_checker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 886
    functionDepth: 2
    functionLinenumber: 886
    functionLinenumberEnd: 897
    functionName: unicode_nf_checker_finish
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_assert
    - unicode_transform_flush
    linkageType: ''
    returnType: int
    signature: int unicode_nf_checker_finish(struct unicode_nf_checker *unc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:928,1
    - Dst: unicode_transform_init
      Src: /src/dovecot/src/lib/unicode-transform.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - map_r
    argTypes:
    - struct unicode_casemap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 926
    functionDepth: 2
    functionLinenumber: 926
    functionLinenumberEnd: 931
    functionName: unicode_casemap_init_uppercase
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_zero
    - unicode_transform_init
    linkageType: ''
    returnType: void
    signature: void unicode_casemap_init_uppercase(struct unicode_casemap *map_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:935,1
    - Dst: unicode_transform_init
      Src: /src/dovecot/src/lib/unicode-transform.c:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - map_r
    argTypes:
    - struct unicode_casemap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 933
    functionDepth: 2
    functionLinenumber: 933
    functionLinenumberEnd: 938
    functionName: unicode_casemap_init_lowercase
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_zero
    - unicode_transform_init
    linkageType: ''
    returnType: void
    signature: void unicode_casemap_init_lowercase(struct unicode_casemap *map_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:942,1
    - Dst: unicode_transform_init
      Src: /src/dovecot/src/lib/unicode-transform.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - map_r
    argTypes:
    - struct unicode_casemap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 940
    functionDepth: 2
    functionLinenumber: 940
    functionLinenumberEnd: 945
    functionName: unicode_casemap_init_casefold
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_zero
    - unicode_transform_init
    linkageType: ''
    returnType: void
    signature: void unicode_casemap_init_casefold(struct unicode_casemap *map_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_data_get_uppercase_mapping
      Src: /src/dovecot/src/lib/unicode-transform.c:951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cp_data
    - map_r
    argTypes:
    - struct unicode_code_point_data*
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 952
    functionName: unicode_casemap_uppercase_cp
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_code_point_data_get_uppercase_mapping
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_casemap_uppercase_cp(const struct unicode_code_point_data
      *cp_data,\n\t\t\t     const uint32_t **map_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_data_get_lowercase_mapping
      Src: /src/dovecot/src/lib/unicode-transform.c:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cp_data
    - map_r
    argTypes:
    - struct unicode_code_point_data*
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 959
    functionName: unicode_casemap_lowercase_cp
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_code_point_data_get_lowercase_mapping
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_casemap_lowercase_cp(const struct unicode_code_point_data
      *cp_data,\n\t\t\t     const uint32_t **map_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_data_get_casefold_mapping
      Src: /src/dovecot/src/lib/unicode-transform.c:965,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cp_data
    - map_r
    argTypes:
    - struct unicode_code_point_data*
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 966
    functionName: unicode_casemap_casefold_cp
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_code_point_data_get_casefold_mapping
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_casemap_casefold_cp(const struct unicode_code_point_data
      *cp_data,\n\t\t\t    const uint32_t **map_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:977,1
    - Dst: struct unicode_casemap*::map
      Src: /src/dovecot/src/lib/unicode-transform.c:983,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:989,1
    - Dst: uniform_transform_forward
      Src: /src/dovecot/src/lib/unicode-transform.c:993,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:997,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 4
    argNames:
    - map
    - cp
    - cp_data
    - error_r
    argTypes:
    - struct unicode_casemap*
    - uint32_t
    - struct unicode_code_point_data*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 968
    functionDepth: 2
    functionLinenumber: 968
    functionLinenumberEnd: 1012
    functionName: unicode_casemap_input_cp
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - struct unicode_casemap*::map
    - i_assert
    - uniform_transform_forward
    - unicode_code_point_get_data
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t unicode_casemap_input_cp(struct unicode_casemap *map, uint32_t
      cp,\n\t\t\t const struct unicode_code_point_data *cp_data,\n\t\t\t const char
      **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/unicode-transform.c:1020,1
    - Dst: unicode_casemap_flush
      Src: /src/dovecot/src/lib/unicode-transform.c:1023,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:1025,1
    - Dst: unicode_casemap_input_cp
      Src: /src/dovecot/src/lib/unicode-transform.c:1035,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:1040,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - trans
    - buf
    - error_r
    argTypes:
    - struct unicode_transform*
    - struct unicode_transform_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1014
    functionDepth: 3
    functionLinenumber: 1014
    functionLinenumberEnd: 1047
    functionName: unicode_casemap_input
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 0
    functionsReached:
    - unicode_casemap_flush
    - i_assert
    - container_of
    - unicode_casemap_input_cp
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t unicode_casemap_input(struct unicode_transform *trans,\n\t\t
      \     const struct unicode_transform_buffer *buf,\n\t\t      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib/unicode-transform.c:1054,1
    - Dst: unicode_casemap_input_cp
      Src: /src/dovecot/src/lib/unicode-transform.c:1060,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/unicode-transform.c:1061,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - trans
    - ATTR_UNUSED
    - error_r
    argTypes:
    - struct unicode_transform*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1049
    functionDepth: 3
    functionLinenumber: 1049
    functionLinenumberEnd: 1063
    functionName: unicode_casemap_flush
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_assert
    - container_of
    - unicode_casemap_input_cp
    linkageType: ''
    returnType: int
    signature: "int unicode_casemap_flush(struct unicode_transform *trans,\n\t\t      bool
      finished ATTR_UNUSED, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/unicode-transform.c:1071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct unicode_rfc5051_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1069
    functionDepth: 1
    functionLinenumber: 1069
    functionLinenumberEnd: 1072
    functionName: unicode_rfc5051_init
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void unicode_rfc5051_init(struct unicode_rfc5051_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unicode_code_point_get_data
      Src: /src/dovecot/src/lib/unicode-transform.c:1080,1
    - Dst: unicode_hangul_decompose
      Src: /src/dovecot/src/lib/unicode-transform.c:1086,1
    - Dst: unicode_code_point_get_full_decomposition
      Src: /src/dovecot/src/lib/unicode-transform.c:1089,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - cp
    - norm_r
    argTypes:
    - struct unicode_rfc5051_context*
    - uint32_t
    - uint32_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1074
    functionDepth: 2
    functionLinenumber: 1074
    functionLinenumberEnd: 1096
    functionName: unicode_rfc5051_normalize
    functionSourceFile: /src/dovecot/src/lib/unicode-transform.c
    functionUses: 1
    functionsReached:
    - unicode_hangul_decompose
    - unicode_code_point_get_full_decomposition
    - unicode_code_point_get_data
    linkageType: ''
    returnType: size_t
    signature: "size_t unicode_rfc5051_normalize(struct unicode_rfc5051_context *ctx,\n\t\t\t\t
      uint32_t cp, const uint32_t **norm_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-str-table.c:11,1
    - Dst: str_table_init
      Src: /src/dovecot/src/lib/test-str-table.c:12,1
    - Dst: str_table_ref
      Src: /src/dovecot/src/lib/test-str-table.c:14,1
    - Dst: str_table_ref
      Src: /src/dovecot/src/lib/test-str-table.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str-table.c:16,1
    - Dst: str_table_ref
      Src: /src/dovecot/src/lib/test-str-table.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str-table.c:18,1
    - Dst: str_table_ref
      Src: /src/dovecot/src/lib/test-str-table.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str-table.c:20,1
    - Dst: str_table_unref
      Src: /src/dovecot/src/lib/test-str-table.c:22,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str-table.c:23,1
    - Dst: str_table_unref
      Src: /src/dovecot/src/lib/test-str-table.c:24,1
    - Dst: str_table_unref
      Src: /src/dovecot/src/lib/test-str-table.c:26,1
    - Dst: str_table_unref
      Src: /src/dovecot/src/lib/test-str-table.c:27,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str-table.c:28,1
    - Dst: str_table_is_empty
      Src: /src/dovecot/src/lib/test-str-table.c:28,1
    - Dst: str_table_deinit
      Src: /src/dovecot/src/lib/test-str-table.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-str-table.c:31,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-str-table.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 6
    functionDepth: 3
    functionLinenumber: 6
    functionLinenumberEnd: 33
    functionName: test_str_table
    functionSourceFile: /src/dovecot/src/lib/test-str-table.c
    functionUses: 0
    functionsReached:
    - str_table_deinit
    - str_table_ref
    - test_end
    - str_table_init
    - test_assert
    - str_table_is_empty
    - str_table_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_str_table(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:18,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:25,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:28,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:29,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:33,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:34,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:34,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:35,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:35,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:41,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:42,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:42,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:42,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:44,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:44,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:49,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:50,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:50,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:51,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:52,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:52,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:54,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:54,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:54,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:59,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:60,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:61,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:61,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:65,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:67,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:68,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:71,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:71,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:71,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:73,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:73,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:77,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:77,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:80,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:80,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:81,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:83,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:85,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 16
    functionDepth: 6
    functionLinenumber: 16
    functionLinenumberEnd: 86
    functionName: test_istream_multiplex_packet_simple
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_stream_get_data
    - i_stream_create_multiplex
    - test_end
    - i_stream_read
    - test_istream_create_data
    - test_assert
    - memcmp
    - test_istream_set_size
    - i_stream_multiplex_add_channel
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex_packet_simple(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:90,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:90,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:100,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:106,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:110,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:114,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:114,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:116,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:116,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:118,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:118,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:119,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:119,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:119,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:122,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:124,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:126,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:126,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:127,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:127,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:127,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:130,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:135,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:135,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:137,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:140,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:143,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:143,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:145,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:145,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:148,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:150,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:150,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:151,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:151,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:153,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:154,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:156,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:158,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - test_buffer_full_bug
    - packet
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 88
    functionDepth: 11
    functionLinenumber: 88
    functionLinenumberEnd: 159
    functionName: test_istream_multiplex_maxbuf
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data
    - t_strdup_printf
    - i_stream_create_multiplex
    - i_stream_skip
    - test_end
    - test_istream_create_data
    - test_assert
    - memcmp
    - i_stream_read
    - i_stream_multiplex_add_channel
    - test_begin
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex_maxbuf(bool test_buffer_full_bug, bool
      packet)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:166,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:166,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:172,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:175,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:176,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:177,1
    - Dst: memset
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:178,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:181,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:183,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:185,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:186,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:188,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:190,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:193,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:194,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:195,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:197,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:198,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:202,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:204,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:210,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:212,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:214,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:216,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:224,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:230,1
    - Dst: crc32_data_more
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:232,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:235,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:236,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:246,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:247,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:251,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:259,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:260,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:261,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:261,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:263,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:265,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:266,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:267,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 67
    argCount: 1
    argNames:
    - packet
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 161
    functionDepth: 11
    functionLinenumber: 161
    functionLinenumberEnd: 268
    functionName: test_istream_multiplex_random
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - i_stream_get_data
    - t_strdup_printf
    - i_rand_limit
    - test_assert
    - buffer_append_c
    - i_stream_multiplex_add_channel
    - buffer_append
    - random_fill
    - i_stream_skip
    - test_end
    - buffer_free
    - test_istream_set_size
    - crc32_data_more
    - cpu32_to_be
    - i_stream_create_multiplex
    - memset
    - i_stream_read
    - test_istream_create_data
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex_random(bool packet)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_multiplex_get_channel_id
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:284,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:288,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:291,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:292,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:293,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:293,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:295,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:296,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:296,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:303,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:305,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:306,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - channel
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 282
    functionDepth: 4
    functionLinenumber: 282
    functionLinenumberEnd: 307
    functionName: test_istream_multiplex_stream_read
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_assert
    - test_assert_idx
    - i_stream_next_line
    - strlen
    - i_stream_multiplex_get_channel_id
    - io_loop_stop
    - i_stream_read
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex_stream_read(struct istream *channel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:317,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:320,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:320,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:322,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:322,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:326,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:329,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - os
    - cid
    - msg
    argTypes:
    - struct ostream*
    - uint8_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 331
    functionName: test_send_msg
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - strlen
    - N_ELEMENTS
    - cpu32_to_be
    - o_stream_nsendv
    linkageType: ''
    returnType: void
    signature: void test_send_msg(struct ostream *os, uint8_t cid, const char *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:335,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:337,1
    - Dst: test_send_msg
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:338,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:339,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - channel
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 333
    functionDepth: 4
    functionLinenumber: 333
    functionLinenumberEnd: 341
    functionName: test_istream_multiplex_stream_write
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - test_send_msg
    - N_ELEMENTS
    - i_rand_limit
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex_stream_write(struct ostream *channel)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:345,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:345,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:349,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:350,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:353,1
    - Dst: pipe
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:353,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:354,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:355,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:356,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:357,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:357,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:360,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:361,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:362,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:365,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:367,1
    - Dst: io_add
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:369,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:371,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:373,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:374,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:375,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:377,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:378,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:379,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:381,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:381,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:382,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:384,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:386,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:387,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - packet
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 343
    functionDepth: 11
    functionLinenumber: 343
    functionLinenumberEnd: 390
    functionName: test_istream_multiplex_ioloop
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - io_remove
    - o_stream_unref
    - t_strdup_printf
    - io_loop_destroy
    - i_rand_limit
    - test_assert
    - io_loop_run
    - i_stream_multiplex_add_channel
    - o_stream_create_fd
    - i_close_fd
    - test_end
    - o_stream_nsend
    - pipe
    - io_add_istream
    - io_loop_set_current
    - i_stream_create_multiplex
    - i_stream_create_fd
    - fd_set_nonblock
    - io_add
    - io_loop_create
    - o_stream_finish
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex_ioloop(bool packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:394,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:398,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:401,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:402,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:404,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:406,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:408,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:408,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:408,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:411,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:412,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:414,1
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:415,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:416,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:419,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:420,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:422,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:422,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:424,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:424,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:424,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:427,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:428,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 392
    functionDepth: 6
    functionLinenumber: 392
    functionLinenumberEnd: 431
    functionName: test_istream_multiplex_close_channel
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data
    - i_stream_create_multiplex
    - test_end
    - test_istream_create_data
    - test_assert
    - i_stream_unref
    - memcmp
    - i_stream_read
    - i_stream_multiplex_add_channel
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex_close_channel(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_istream_multiplex_packet_simple
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:435,1
    - Dst: test_istream_multiplex_maxbuf
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:436,1
    - Dst: test_istream_multiplex_maxbuf
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:437,1
    - Dst: test_istream_multiplex_maxbuf
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:438,1
    - Dst: test_istream_multiplex_maxbuf
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:439,1
    - Dst: test_istream_multiplex_random
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:440,1
    - Dst: test_istream_multiplex_random
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:441,1
    - Dst: test_istream_multiplex_ioloop
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:442,1
    - Dst: test_istream_multiplex_ioloop
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:443,1
    - Dst: test_istream_multiplex_close_channel
      Src: /src/dovecot/src/lib/test-istream-multiplex.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 433
    functionDepth: 12
    functionLinenumber: 433
    functionLinenumberEnd: 445
    functionName: test_istream_multiplex
    functionSourceFile: /src/dovecot/src/lib/test-istream-multiplex.c
    functionUses: 0
    functionsReached:
    - test_istream_multiplex_ioloop
    - test_istream_multiplex_packet_simple
    - test_istream_multiplex_random
    - test_istream_multiplex_close_channel
    - test_istream_multiplex_maxbuf
    linkageType: ''
    returnType: void
    signature: void test_istream_multiplex(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: ARRAY
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ARRAY(io_destroy_callback_t *)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_handler_init
      Src: /src/dovecot/src/lib/ioloop.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 46
    functionName: io_loop_initialize_handler
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_handler_init
    linkageType: ''
    returnType: void
    signature: void io_loop_initialize_handler(struct ioloop *ioloop)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:57,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop.c:59,1
    - Dst: io_loop_context_ref
      Src: /src/dovecot/src/lib/ioloop.c:71,1
    - Dst: io_loop_initialize_handler
      Src: /src/dovecot/src/lib/ioloop.c:75,1
    - Dst: io_loop_handle_add
      Src: /src/dovecot/src/lib/ioloop.c:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 7
    argNames:
    - ioloop
    - fd
    - condition
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct ioloop*
    - int
    - enum io_condition
    - char*
    - unsigned int
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 89
    functionName: io_add_file
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_initialize_handler
    - io_loop_handle_add
    - io_loop_context_ref
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct io_file
    signature: "struct io_file *\nio_add_file(struct ioloop *ioloop, int fd, enum
      io_condition condition,\n\t    const char *source_filename,\n\t    unsigned
      int source_linenum,\n\t    io_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:98,1
    - Dst: io_add_file
      Src: /src/dovecot/src/lib/ioloop.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - ioloop
    - fd
    - condition
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct ioloop*
    - int
    - enum io_condition
    - char*
    - unsigned int
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: io_add_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 7
    functionsReached:
    - io_add_file
    - i_assert
    linkageType: ''
    returnType: struct io
    signature: "struct io *io_add_to(struct ioloop *ioloop, int fd, enum io_condition
      condition,\n\t\t     const char *source_filename, unsigned int source_linenum,\n\t\t
      \    io_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add_to
      Src: /src/dovecot/src/lib/ioloop.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - fd
    - condition
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - int
    - enum io_condition
    - char*
    - unsigned int
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: io_add
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 40
    functionsReached:
    - io_add_to
    linkageType: ''
    returnType: struct io
    signature: "struct io *io_add(int fd, enum io_condition condition,\n\t\t  const
      char *source_filename,\n\t\t  unsigned int source_linenum,\n\t\t  io_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add_file
      Src: /src/dovecot/src/lib/ioloop.c:124,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib/ioloop.c:124,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/ioloop.c:127,1
    - Dst: i_stream_set_io
      Src: /src/dovecot/src/lib/ioloop.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - ioloop
    - input
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct ioloop*
    - struct istream*
    - char*
    - unsigned int
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 130
    functionName: io_add_istream_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached:
    - i_stream_set_io
    - io_add_file
    - i_stream_ref
    - i_stream_get_fd
    linkageType: ''
    returnType: struct io
    signature: "struct io *io_add_istream_to(struct ioloop *ioloop, struct istream
      *input,\n\t\t\t     const char *source_filename,\n\t\t\t     unsigned int source_linenum,\n\t\t\t
      \    io_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add_istream_to
      Src: /src/dovecot/src/lib/ioloop.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - input
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct istream*
    - char*
    - unsigned int
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: io_add_istream
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 51
    functionsReached:
    - io_add_istream_to
    linkageType: ''
    returnType: struct io
    signature: "struct io *io_add_istream(struct istream *input, const char *source_filename,\n\t\t\t
      \ unsigned int source_linenum,\n\t\t\t  io_callback_t *callback, void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 156
    functionName: io_file_unlink
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_file_unlink(struct io_file *io)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:162,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:171,1
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/lib/ioloop.c:176,1
    - Dst: io_loop_notify_remove
      Src: /src/dovecot/src/lib/ioloop.c:179,1
    - Dst: i_stream_unset_io
      Src: /src/dovecot/src/lib/ioloop.c:186,1
    - Dst: io_file_unlink
      Src: /src/dovecot/src/lib/ioloop.c:189,1
    - Dst: io_loop_handle_remove
      Src: /src/dovecot/src/lib/ioloop.c:191,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop.c:193,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib/ioloop.c:198,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - _io
    - closed
    argTypes:
    - struct io**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 200
    functionName: io_remove_full
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_context_unref
    - i_assert
    - io_loop_handle_remove
    - i_stream_unref
    - i_stream_unset_io
    - io_file_unlink
    - i_free
    - io_loop_notify_remove
    linkageType: ''
    returnType: void
    signature: void io_remove_full(struct io **_io, bool closed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_remove_full
      Src: /src/dovecot/src/lib/ioloop.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 202
    functionDepth: 4
    functionLinenumber: 202
    functionLinenumberEnd: 208
    functionName: io_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 116
    functionsReached:
    - io_remove_full
    linkageType: ''
    returnType: void
    signature: void io_remove(struct io **io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:215,1
    - Dst: io_remove_full
      Src: /src/dovecot/src/lib/ioloop.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 210
    functionDepth: 4
    functionLinenumber: 210
    functionLinenumberEnd: 218
    functionName: io_remove_closed
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 2
    functionsReached:
    - io_remove_full
    - i_assert
    linkageType: ''
    returnType: void
    signature: void io_remove_closed(struct io **io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 228
    functionName: io_set_pending
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 12
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void io_set_pending(struct io *io)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: io_is_pending
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool io_is_pending(struct io *io)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - io
    - set
    argTypes:
    - struct io*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 238
    functionName: io_set_never_wait_alone
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_set_never_wait_alone(struct io *io, bool set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - timeout
    - tv_now
    argTypes:
    - struct timeout*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 240
    functionDepth: 3
    functionLinenumber: 240
    functionLinenumberEnd: 260
    functionName: timeout_update_next
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    linkageType: ''
    returnType: void
    signature: void timeout_update_next(struct timeout *timeout, struct timeval *tv_now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop.c:269,1
    - Dst: io_loop_context_ref
      Src: /src/dovecot/src/lib/ioloop.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 5
    argNames:
    - ioloop
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct ioloop*
    - char*
    - unsigned int
    - timeout_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 284
    functionName: timeout_add_common
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_context_ref
    - i_new
    linkageType: ''
    returnType: struct timeout
    signature: "struct timeout *\ntimeout_add_common(struct ioloop *ioloop, const
      char *source_filename,\n\t\t   unsigned int source_linenum,\n\t\t   timeout_callback_t
      *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_common
      Src: /src/dovecot/src/lib/ioloop.c:294,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/ioloop.c:300,1
    - Dst: timeout_update_next
      Src: /src/dovecot/src/lib/ioloop.c:305,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/lib/ioloop.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - ioloop
    - msecs
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct ioloop*
    - unsigned int
    - char*
    - unsigned int
    - timeout_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 310
    functionName: timeout_add_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 11
    functionsReached:
    - priorityq_add
    - timeout_update_next
    - timeout_add_common
    - array_push_back
    linkageType: ''
    returnType: struct timeout
    signature: "struct timeout *timeout_add_to(struct ioloop *ioloop, unsigned int
      msecs,\n\t\t\t       const char *source_filename,\n\t\t\t       unsigned int
      source_linenum,\n\t\t\t       timeout_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib/ioloop.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - msecs
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - unsigned int
    - char*
    - unsigned int
    - timeout_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 320
    functionName: timeout_add
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 109
    functionsReached:
    - timeout_add_to
    linkageType: ''
    returnType: struct timeout
    signature: "struct timeout *timeout_add(unsigned int msecs, const char *source_filename,\n\t\t\t
      \   unsigned int source_linenum,\n\t\t\t    timeout_callback_t *callback, void
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib/ioloop.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ioloop
    - msecs
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct ioloop*
    - unsigned int
    - char*
    - unsigned int
    - timeout_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 331
    functionName: timeout_add_short_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - timeout_add_to
    linkageType: ''
    returnType: struct timeout
    signature: "struct timeout *\ntimeout_add_short_to(struct ioloop *ioloop, unsigned
      int msecs,\n\t\t     const char *source_filename, unsigned int source_linenum,\n\t\t
      \    timeout_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/lib/ioloop.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - msecs
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - unsigned int
    - char*
    - unsigned int
    - timeout_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 341
    functionName: timeout_add_short
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 48
    functionsReached:
    - timeout_add
    linkageType: ''
    returnType: struct timeout
    signature: "struct timeout *\ntimeout_add_short(unsigned int msecs, const char
      *source_filename,\n\t\t  unsigned int source_linenum,\n\t\t  timeout_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_common
      Src: /src/dovecot/src/lib/ioloop.c:352,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/lib/ioloop.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - ioloop
    - time
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct ioloop*
    - struct timeval*
    - char*
    - unsigned int
    - timeout_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 344
    functionDepth: 4
    functionLinenumber: 344
    functionLinenumberEnd: 359
    functionName: timeout_add_absolute_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - priorityq_add
    - timeout_add_common
    linkageType: ''
    returnType: struct timeout
    signature: "struct timeout *\ntimeout_add_absolute_to(struct ioloop *ioloop, const
      struct timeval *time,\n\t\t\tconst char *source_filename,\n\t\t\tunsigned int
      source_linenum,\n\t\t\ttimeout_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_absolute_to
      Src: /src/dovecot/src/lib/ioloop.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - time
    - source_filename
    - source_linenum
    - callback
    - context
    argTypes:
    - struct timeval*
    - char*
    - unsigned int
    - timeout_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 371
    functionName: timeout_add_absolute
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached:
    - timeout_add_absolute_to
    linkageType: ''
    returnType: struct timeout
    signature: "struct timeout *\ntimeout_add_absolute(const struct timeval *time,\n\t\t
      \    const char *source_filename,\n\t\t     unsigned int source_linenum,\n\t\t
      \    timeout_callback_t *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_common
      Src: /src/dovecot/src/lib/ioloop.c:378,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/lib/ioloop.c:386,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:388,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/ioloop.c:389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - old_to
    - ioloop
    argTypes:
    - struct timeout*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 373
    functionDepth: 4
    functionLinenumber: 373
    functionLinenumberEnd: 393
    functionName: timeout_copy
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - priorityq_add
    - i_assert
    - timeout_add_common
    - array_push_back
    linkageType: ''
    returnType: struct timeout
    signature: 'struct timeout *

      timeout_copy(const struct timeout *old_to, struct ioloop *ioloop)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/lib/ioloop.c:398,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop.c:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - struct timeout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 400
    functionName: timeout_free
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_context_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: void timeout_free(struct timeout *timeout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_remove
      Src: /src/dovecot/src/lib/ioloop.c:414,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib/ioloop.c:418,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ioloop.c:419,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/ioloop.c:420,1
    - Dst: timeout_free
      Src: /src/dovecot/src/lib/ioloop.c:422,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - _timeout
    argTypes:
    - struct timeout**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 402
    functionDepth: 5
    functionLinenumber: 402
    functionLinenumberEnd: 423
    functionName: timeout_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 229
    functionsReached:
    - array_delete
    - timeout_free
    - i_unreached
    - array_lsearch_ptr_idx
    - priorityq_remove
    linkageType: ''
    returnType: void
    signature: void timeout_remove(struct timeout **_timeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_update_next
      Src: /src/dovecot/src/lib/ioloop.c:431,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/ioloop.c:441,1
    - Dst: timeval_add_usecs
      Src: /src/dovecot/src/lib/ioloop.c:443,1
    - Dst: priorityq_remove
      Src: /src/dovecot/src/lib/ioloop.c:445,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/lib/ioloop.c:446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - timeout
    - tv_now
    argTypes:
    - struct timeout*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 426
    functionDepth: 5
    functionLinenumber: 426
    functionLinenumberEnd: 447
    functionName: timeout_reset_timeval
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - timeval_cmp
    - timeout_update_next
    - priorityq_remove
    - priorityq_add
    - timeval_add_usecs
    linkageType: ''
    returnType: void
    signature: void timeout_reset_timeval(struct timeout *timeout, struct timeval
      *tv_now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:451,1
    - Dst: timeout_reset_timeval
      Src: /src/dovecot/src/lib/ioloop.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - struct timeout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 6
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: timeout_reset
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 33
    functionsReached:
    - i_assert
    - timeout_reset_timeval
    linkageType: ''
    returnType: void
    signature: void timeout_reset(struct timeout *timeout)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop.c:461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:465,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:466,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:492,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 4
    argNames:
    - timeout
    - tv_r
    - tv_now
    - in_timeout_loop
    argTypes:
    - struct timeout*
    - struct timeval*
    - struct timeval*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 494
    functionName: timeout_get_wait_time
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int timeout_get_wait_time(struct timeout *timeout, struct timeval
      *tv_r,\n\t\t\t\t struct timeval *tv_now, bool in_timeout_loop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_peek
      Src: /src/dovecot/src/lib/ioloop.c:503,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop.c:520,1
    - Dst: timeout_get_wait_time
      Src: /src/dovecot/src/lib/ioloop.c:526,1
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib/ioloop.c:529,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:536,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - ioloop
    - tv_r
    argTypes:
    - struct ioloop*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 496
    functionDepth: 4
    functionLinenumber: 496
    functionLinenumberEnd: 538
    functionName: io_loop_get_wait_time
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - priorityq_peek
    - timeval_add_msecs
    - timeout_get_wait_time
    - i_assert
    linkageType: ''
    returnType: int
    signature: int io_loop_get_wait_time(struct ioloop *ioloop, struct timeval *tv_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 549
    functionName: io_loop_have_waitable_io_files
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool io_loop_have_waitable_io_files(struct ioloop *ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_get_wait_time
      Src: /src/dovecot/src/lib/ioloop.c:553,1
    - Dst: io_loop_have_waitable_io_files
      Src: /src/dovecot/src/lib/ioloop.c:554,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop.c:555,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ioloop
    - tv_r
    argTypes:
    - struct ioloop*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 551
    functionDepth: 5
    functionLinenumber: 551
    functionLinenumberEnd: 557
    functionName: io_loop_run_get_wait_time
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 3
    functionsReached:
    - i_panic
    - io_loop_have_waitable_io_files
    - io_loop_get_wait_time
    linkageType: ''
    returnType: int
    signature: int io_loop_run_get_wait_time(struct ioloop *ioloop, struct timeval
      *tv_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib/ioloop.c:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 564
    functionName: timeout_cmp
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - timeval_cmp
    linkageType: ''
    returnType: int
    signature: int timeout_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/ioloop.c:570,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop.c:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - old_time
    - new_time
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 575
    functionName: io_loop_default_time_moved
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - i_warning
    - timeval_diff_usecs
    linkageType: ''
    returnType: void
    signature: "void io_loop_default_time_moved(const struct timeval *old_time,\n\t\t\t
      \  const struct timeval *new_time)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib/ioloop.c:581,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib/ioloop.c:584,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ioloop.c:586,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:587,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:589,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:590,1
    - Dst: timeout_update_next
      Src: /src/dovecot/src/lib/ioloop.c:591,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/lib/ioloop.c:592,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/ioloop.c:594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 577
    functionDepth: 4
    functionLinenumber: 577
    functionLinenumberEnd: 595
    functionName: io_loop_timeouts_start_new
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - array_count
    - io_loop_time_refresh
    - array_clear
    - priorityq_add
    - i_assert
    - timeout_update_next
    linkageType: ''
    returnType: void
    signature: void io_loop_timeouts_start_new(struct ioloop *ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib/ioloop.c:602,1
    - Dst: priorityq_items
      Src: /src/dovecot/src/lib/ioloop.c:603,1
    - Dst: timeval_add_usecs
      Src: /src/dovecot/src/lib/ioloop.c:608,1
    - Dst: timeval_sub_usecs
      Src: /src/dovecot/src/lib/ioloop.c:610,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ioloop
    - diff_usecs
    argTypes:
    - struct ioloop*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 612
    functionName: io_loop_timeouts_update
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - priorityq_items
    - timeval_add_usecs
    - priorityq_count
    - timeval_sub_usecs
    linkageType: ''
    returnType: void
    signature: void io_loop_timeouts_update(struct ioloop *ioloop, long long diff_usecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_timeouts_update
      Src: /src/dovecot/src/lib/ioloop.c:619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - diff_usecs
    argTypes:
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 614
    functionDepth: 3
    functionLinenumber: 614
    functionLinenumberEnd: 620
    functionName: io_loops_timeouts_update
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_timeouts_update
    linkageType: ''
    returnType: void
    signature: void io_loops_timeouts_update(long long diff_usecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/ioloop.c:627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 638
    functionName: ioloop_add_wait_time
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - timeval_diff_usecs
    linkageType: ''
    returnType: void
    signature: void ioloop_add_wait_time(struct ioloop *ioloop)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop.c:648,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/ioloop.c:650,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ioloop.c:651,1
    - Dst: io_loops_timeouts_update
      Src: /src/dovecot/src/lib/ioloop.c:653,1
    - Dst: struct ioloop*::time_moved_callback
      Src: /src/dovecot/src/lib/ioloop.c:654,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:655,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop.c:657,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib/ioloop.c:663,1
    - Dst: unlikely
      Src: /src/dovecot/src/lib/ioloop.c:665,1
    - Dst: io_loops_timeouts_update
      Src: /src/dovecot/src/lib/ioloop.c:666,1
    - Dst: struct ioloop*::time_moved_callback
      Src: /src/dovecot/src/lib/ioloop.c:668,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:670,1
    - Dst: ioloop_add_wait_time
      Src: /src/dovecot/src/lib/ioloop.c:672,1
    - Dst: priorityq_peek
      Src: /src/dovecot/src/lib/ioloop.c:679,1
    - Dst: timeout_get_wait_time
      Src: /src/dovecot/src/lib/ioloop.c:684,1
    - Dst: priorityq_remove
      Src: /src/dovecot/src/lib/ioloop.c:689,1
    - Dst: timeout_reset_timeval
      Src: /src/dovecot/src/lib/ioloop.c:692,1
    - Dst: io_loop_context_activate
      Src: /src/dovecot/src/lib/ioloop.c:696,1
    - Dst: t_push_named
      Src: /src/dovecot/src/lib/ioloop.c:697,1
    - Dst: struct timeout*::callback
      Src: /src/dovecot/src/lib/ioloop.c:699,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib/ioloop.c:700,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop.c:701,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/lib/ioloop.c:705,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:706,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 640
    functionDepth: 6
    functionLinenumber: 640
    functionLinenumberEnd: 708
    functionName: io_loop_handle_timeouts_real
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - i_panic
    - struct ioloop*::time_moved_callback
    - ioloop_add_wait_time
    - timeval_diff_usecs
    - priorityq_peek
    - timeout_reset_timeval
    - t_pop
    - unlikely
    - io_loops_timeouts_update
    - io_loop_context_activate
    - timeout_get_wait_time
    - priorityq_remove
    - t_push_named
    - struct timeout*::callback
    - i_assert
    - io_loop_context_deactivate
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_timeouts_real(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_handle_timeouts_real
      Src: /src/dovecot/src/lib/ioloop.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 710
    functionDepth: 7
    functionLinenumber: 710
    functionLinenumberEnd: 714
    functionName: io_loop_handle_timeouts
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 3
    functionsReached:
    - io_loop_handle_timeouts_real
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_timeouts(struct ioloop *ioloop)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:734,1
    - Dst: io_loop_context_activate
      Src: /src/dovecot/src/lib/ioloop.c:740,1
    - Dst: t_push_named
      Src: /src/dovecot/src/lib/ioloop.c:741,1
    - Dst: struct io*::callback
      Src: /src/dovecot/src/lib/ioloop.c:743,1
    - Dst: t_pop
      Src: /src/dovecot/src/lib/ioloop.c:744,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop.c:745,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/lib/ioloop.c:749,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:750,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 728
    functionDepth: 5
    functionLinenumber: 728
    functionLinenumberEnd: 751
    functionName: io_loop_call_io
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 5
    functionsReached:
    - i_panic
    - i_assert
    - t_pop
    - io_loop_context_activate
    - struct io*::callback
    - t_push_named
    - io_loop_context_deactivate
    linkageType: ''
    returnType: void
    signature: void io_loop_call_io(struct io *io)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_initialize_handler
      Src: /src/dovecot/src/lib/ioloop.c:756,1
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/lib/ioloop.c:759,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:763,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/lib/ioloop.c:768,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 770
    functionName: io_loop_run
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 73
    functionsReached:
    - io_loop_initialize_handler
    - i_assert
    - io_loop_context_deactivate
    - io_loop_handler_run
    linkageType: ''
    returnType: void
    signature: void io_loop_run(struct ioloop *ioloop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_call_io
      Src: /src/dovecot/src/lib/ioloop.c:781,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 772
    functionDepth: 6
    functionLinenumber: 772
    functionLinenumberEnd: 787
    functionName: io_loop_call_pending
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_loop_call_io
    linkageType: ''
    returnType: void
    signature: void io_loop_call_pending(struct ioloop *ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:791,1
    - Dst: io_loop_timeouts_start_new
      Src: /src/dovecot/src/lib/ioloop.c:793,1
    - Dst: io_loop_handler_run_internal
      Src: /src/dovecot/src/lib/ioloop.c:795,1
    - Dst: io_loop_call_pending
      Src: /src/dovecot/src/lib/ioloop.c:796,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib/ioloop.c:798,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 789
    functionDepth: 7
    functionLinenumber: 789
    functionLinenumberEnd: 801
    functionName: io_loop_handler_run
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 5
    functionsReached:
    - io_loop_call_pending
    - io_loop_handler_run_internal
    - io_loop_timeouts_start_new
    - io_loop_stop
    - i_assert
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_run(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 807
    functionName: io_loop_stop
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 93
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_loop_stop(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 809
    functionDepth: 0
    functionLinenumber: 809
    functionLinenumberEnd: 812
    functionName: io_loop_stop_delayed
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_loop_stop_delayed(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 814
    functionDepth: 0
    functionLinenumber: 814
    functionLinenumberEnd: 817
    functionName: io_loop_set_running
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_loop_set_running(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ioloop
    - max_fds
    argTypes:
    - struct ioloop*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 822
    functionName: io_loop_set_max_fd_count
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_loop_set_max_fd_count(struct ioloop *ioloop, unsigned int max_fds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 824
    functionDepth: 0
    functionLinenumber: 824
    functionLinenumberEnd: 827
    functionName: io_loop_is_running
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool io_loop_is_running(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop.c:831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 829
    functionDepth: 3
    functionLinenumber: 829
    functionLinenumberEnd: 833
    functionName: io_loop_time_refresh
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 18
    functionsReached:
    - i_gettimeofday
    linkageType: ''
    returnType: void
    signature: void io_loop_time_refresh(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/lib/ioloop.c:841,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib/ioloop.c:845,1
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop.c:848,1
    - Dst: priorityq_init
      Src: /src/dovecot/src/lib/ioloop.c:849,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ioloop.c:850,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/ioloop.c:857,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 835
    functionDepth: 3
    functionLinenumber: 835
    functionLinenumberEnd: 859
    functionName: io_loop_create
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 80
    functionsReached:
    - i_gettimeofday
    - i_array_init
    - io_loop_set_current
    - getenv
    - priorityq_init
    - i_new
    linkageType: ''
    returnType: struct ioloop
    signature: struct ioloop *io_loop_create(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:871,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/ioloop.c:872,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ioloop.c:874,1
    - Dst: callback
      Src: /src/dovecot/src/lib/ioloop.c:875,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib/ioloop.c:879,1
    - Dst: io_loop_notify_handler_deinit
      Src: /src/dovecot/src/lib/ioloop.c:882,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ioloop.c:887,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop.c:894,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop.c:896,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ioloop.c:897,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:900,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ioloop.c:902,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ioloop.c:903,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop.c:909,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop.c:911,1
    - Dst: timeout_free
      Src: /src/dovecot/src/lib/ioloop.c:912,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/ioloop.c:915,1
    - Dst: priorityq_pop
      Src: /src/dovecot/src/lib/ioloop.c:917,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ioloop.c:919,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop.c:925,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop.c:927,1
    - Dst: timeout_free
      Src: /src/dovecot/src/lib/ioloop.c:928,1
    - Dst: priorityq_deinit
      Src: /src/dovecot/src/lib/ioloop.c:931,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/ioloop.c:935,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop.c:941,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop.c:943,1
    - Dst: io_wait_timer_remove
      Src: /src/dovecot/src/lib/ioloop.c:944,1
    - Dst: backtrace_get
      Src: /src/dovecot/src/lib/ioloop.c:950,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib/ioloop.c:951,1
    - Dst: io_loop_handler_deinit
      Src: /src/dovecot/src/lib/ioloop.c:955,1
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/lib/ioloop.c:957,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop.c:958,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 1
    argNames:
    - _ioloop
    argTypes:
    - struct ioloop**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 861
    functionDepth: 11
    functionLinenumber: 861
    functionLinenumberEnd: 959
    functionName: io_loop_destroy
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 81
    functionsReached:
    - io_loop_context_unref
    - priorityq_pop
    - io_remove
    - t_strdup_printf
    - callback
    - i_panic
    - backtrace_get
    - array_foreach_elem
    - array_is_created
    - priorityq_deinit
    - io_loop_notify_handler_deinit
    - array_free
    - timeout_free
    - io_loop_set_current
    - i_assert
    - i_free
    - i_warning
    - io_wait_timer_remove
    - io_loop_handler_deinit
    linkageType: ''
    returnType: void
    signature: void io_loop_destroy(struct ioloop **_ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ioloop
    - callback
    argTypes:
    - struct ioloop*
    - io_loop_time_moved_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 965
    functionName: io_loop_set_time_moved_callback
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void io_loop_set_time_moved_callback(struct ioloop *ioloop,\n\t\t\t\t
      \    io_loop_time_moved_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib/ioloop.c:969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 970
    functionName: io_switch_callbacks_free
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void io_switch_callbacks_free(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_free
      Src: /src/dovecot/src/lib/ioloop.c:974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 975
    functionName: io_destroy_callbacks_free
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - array_free
    linkageType: ''
    returnType: void
    signature: void io_destroy_callbacks_free(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/ioloop.c:986,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib/ioloop.c:987,1
    - Dst: callback
      Src: /src/dovecot/src/lib/ioloop.c:988,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 977
    functionDepth: 1
    functionLinenumber: 977
    functionLinenumberEnd: 991
    functionName: io_loop_set_current
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 36
    functionsReached:
    - array_is_created
    - callback
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void io_loop_set_current(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 993
    functionDepth: 0
    functionLinenumber: 993
    functionLinenumberEnd: 1000
    functionName: io_loop_get_root
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct ioloop
    signature: struct ioloop *io_loop_get_root(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/ioloop.c:1004,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ioloop.c:1005,1
    - Dst: lib_atexit_priority
      Src: /src/dovecot/src/lib/ioloop.c:1006,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/ioloop.c:1008,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - callback
    argTypes:
    - io_switch_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1002
    functionDepth: 2
    functionLinenumber: 1002
    functionLinenumberEnd: 1009
    functionName: io_loop_add_switch_callback
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - array_is_created
    - lib_atexit_priority
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void io_loop_add_switch_callback(io_switch_callback_t *callback)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib/ioloop.c:1015,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ioloop.c:1016,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/ioloop.c:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - callback
    argTypes:
    - io_switch_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1018
    functionName: io_loop_remove_switch_callback
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void io_loop_remove_switch_callback(io_switch_callback_t *callback)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/ioloop.c:1022,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ioloop.c:1023,1
    - Dst: lib_atexit_priority
      Src: /src/dovecot/src/lib/ioloop.c:1024,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/ioloop.c:1026,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - callback
    argTypes:
    - io_destroy_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1020
    functionDepth: 2
    functionLinenumber: 1020
    functionLinenumberEnd: 1027
    functionName: io_loop_add_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - array_is_created
    - lib_atexit_priority
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void io_loop_add_destroy_callback(io_destroy_callback_t *callback)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib/ioloop.c:1033,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib/ioloop.c:1034,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/ioloop.c:1035,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - callback
    argTypes:
    - io_destroy_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1029
    functionDepth: 1
    functionLinenumber: 1029
    functionLinenumberEnd: 1036
    functionName: io_loop_remove_destroy_callback
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void io_loop_remove_destroy_callback(io_destroy_callback_t *callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop.c:1042,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ioloop.c:1045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1038
    functionDepth: 1
    functionLinenumber: 1038
    functionLinenumberEnd: 1047
    functionName: io_loop_context_new
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 5
    functionsReached:
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct ioloop_context
    signature: struct ioloop_context *io_loop_context_new(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1054
    functionName: io_loop_context_ref
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void io_loop_context_ref(struct ioloop_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1062,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1067,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/ioloop.c:1069,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/ioloop.c:1070,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct ioloop_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1056
    functionDepth: 1
    functionLinenumber: 1056
    functionLinenumberEnd: 1072
    functionName: io_loop_context_unref
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 7
    functionsReached:
    - i_assert
    - array_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void io_loop_context_unref(struct ioloop_context **_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/ioloop.c:1081,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/ioloop.c:1086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - activate
    - deactivate
    - context
    argTypes:
    - struct ioloop_context*
    - io_callback_t*
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1075
    functionDepth: 1
    functionLinenumber: 1075
    functionLinenumberEnd: 1087
    functionName: io_loop_context_add_callbacks
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 3
    functionsReached:
    - i_zero
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void io_loop_context_add_callbacks(struct ioloop_context *ctx,\n\t\t\t\t
      \  io_callback_t *activate,\n\t\t\t\t   io_callback_t *deactivate, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/ioloop.c:1096,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop.c:1107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - ctx
    - activate
    - deactivate
    - context
    argTypes:
    - struct ioloop_context*
    - io_callback_t*
    - io_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1090
    functionDepth: 2
    functionLinenumber: 1090
    functionLinenumberEnd: 1108
    functionName: io_loop_context_remove_callbacks
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 2
    functionsReached:
    - array_foreach_modifiable
    - i_panic
    linkageType: ''
    returnType: void
    signature: "void io_loop_context_remove_callbacks(struct ioloop_context *ctx,\n\t\t\t\t
      \     io_callback_t *activate,\n\t\t\t\t      io_callback_t *deactivate, void
      *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib/ioloop.c:1116,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/ioloop.c:1121,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/ioloop.c:1122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1110
    functionDepth: 1
    functionLinenumber: 1110
    functionLinenumberEnd: 1125
    functionName: io_loop_context_remove_deleted_callbacks
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    linkageType: ''
    returnType: void
    signature: void io_loop_context_remove_deleted_callbacks(struct ioloop_context
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/ioloop.c:1132,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/ioloop.c:1134,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/ioloop.c:1138,1
    - Dst: event_push_global
      Src: /src/dovecot/src/lib/ioloop.c:1145,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/ioloop.c:1146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1127
    functionDepth: 2
    functionLinenumber: 1127
    functionLinenumberEnd: 1147
    functionName: io_loop_context_push_global_events
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - event_get_global
    - array_get
    - event_push_global
    - array_clear
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void io_loop_context_push_global_events(struct ioloop_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_get_global
      Src: /src/dovecot/src/lib/ioloop.c:1159,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1160,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib/ioloop.c:1161,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ioloop.c:1162,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/ioloop.c:1163,1
    - Dst: event_pop_global
      Src: /src/dovecot/src/lib/ioloop.c:1164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1149
    functionDepth: 2
    functionLinenumber: 1149
    functionLinenumberEnd: 1167
    functionName: io_loop_context_pop_global_events
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - event_get_global
    - array_push_back
    - event_pop_global
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void io_loop_context_pop_global_events(struct ioloop_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1173,1
    - Dst: io_loop_context_push_global_events
      Src: /src/dovecot/src/lib/ioloop.c:1176,1
    - Dst: io_loop_context_ref
      Src: /src/dovecot/src/lib/ioloop.c:1177,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/ioloop.c:1178,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1179,1
    - Dst: struct ioloop_context_callback*::activate
      Src: /src/dovecot/src/lib/ioloop.c:1181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1169
    functionDepth: 3
    functionLinenumber: 1169
    functionLinenumberEnd: 1184
    functionName: io_loop_context_activate
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 4
    functionsReached:
    - io_loop_context_ref
    - io_loop_context_push_global_events
    - struct ioloop_context_callback*::activate
    - array_foreach_modifiable
    - i_assert
    linkageType: ''
    returnType: void
    signature: void io_loop_context_activate(struct ioloop_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1191,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib/ioloop.c:1193,1
    - Dst: struct ioloop_context_callback*::deactivate
      Src: /src/dovecot/src/lib/ioloop.c:1199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1187
    functionDepth: 1
    functionLinenumber: 1187
    functionLinenumberEnd: 1203
    functionName: io_loop_context_deactivate
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 8
    functionsReached:
    - array_foreach_modifiable
    - struct ioloop_context_callback*::deactivate
    - i_assert
    linkageType: ''
    returnType: void
    signature: void io_loop_context_deactivate(struct ioloop_context *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_context_deactivate
      Src: /src/dovecot/src/lib/ioloop.c:1215,1
    - Dst: io_loop_context_unref
      Src: /src/dovecot/src/lib/ioloop.c:1218,1
    - Dst: io_loop_context_activate
      Src: /src/dovecot/src/lib/ioloop.c:1220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ioloop_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1210
    functionDepth: 4
    functionLinenumber: 1210
    functionLinenumberEnd: 1221
    functionName: io_loop_context_switch
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 6
    functionsReached:
    - io_loop_context_unref
    - io_loop_context_activate
    - io_loop_context_deactivate
    linkageType: ''
    returnType: void
    signature: void io_loop_context_switch(struct ioloop_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1223
    functionDepth: 0
    functionLinenumber: 1223
    functionLinenumberEnd: 1226
    functionName: io_loop_get_current_context
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: struct ioloop_context
    signature: struct ioloop_context *io_loop_get_current_context(struct ioloop *ioloop)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1236,1
    - Dst: io_add_file
      Src: /src/dovecot/src/lib/ioloop.c:1242,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib/ioloop.c:1249,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib/ioloop.c:1252,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib/ioloop.c:1253,1
    - Dst: i_stream_set_io
      Src: /src/dovecot/src/lib/ioloop.c:1256,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ioloop
    - _io
    argTypes:
    - struct ioloop*
    - struct io**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1228
    functionDepth: 5
    functionLinenumber: 1228
    functionLinenumberEnd: 1259
    functionName: io_loop_move_io_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 3
    functionsReached:
    - i_stream_set_io
    - io_remove
    - i_stream_ref
    - io_set_pending
    - io_add_file
    - i_assert
    linkageType: ''
    returnType: struct io
    signature: struct io *io_loop_move_io_to(struct ioloop *ioloop, struct io **_io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_io_to
      Src: /src/dovecot/src/lib/ioloop.c:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _io
    argTypes:
    - struct io**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1261
    functionDepth: 6
    functionLinenumber: 1261
    functionLinenumberEnd: 1264
    functionName: io_loop_move_io
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 10
    functionsReached:
    - io_loop_move_io_to
    linkageType: ''
    returnType: struct io
    signature: struct io *io_loop_move_io(struct io **_io)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_copy
      Src: /src/dovecot/src/lib/ioloop.c:1274,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib/ioloop.c:1275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ioloop
    - _timeout
    argTypes:
    - struct ioloop*
    - struct timeout**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1266
    functionDepth: 6
    functionLinenumber: 1266
    functionLinenumberEnd: 1277
    functionName: io_loop_move_timeout_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 5
    functionsReached:
    - timeout_copy
    - timeout_remove
    linkageType: ''
    returnType: struct timeout
    signature: "struct timeout *io_loop_move_timeout_to(struct ioloop *ioloop,\n\t\t\t\t\tstruct
      timeout **_timeout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib/ioloop.c:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _timeout
    argTypes:
    - struct timeout**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1279
    functionDepth: 7
    functionLinenumber: 1279
    functionLinenumberEnd: 1282
    functionName: io_loop_move_timeout
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 8
    functionsReached:
    - io_loop_move_timeout_to
    linkageType: ''
    returnType: struct timeout
    signature: struct timeout *io_loop_move_timeout(struct timeout **_timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1284
    functionDepth: 0
    functionLinenumber: 1284
    functionLinenumberEnd: 1287
    functionName: io_loop_have_ios
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool io_loop_have_ios(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_get_wait_time
      Src: /src/dovecot/src/lib/ioloop.c:1293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1289
    functionDepth: 5
    functionLinenumber: 1289
    functionLinenumberEnd: 1294
    functionName: io_loop_have_immediate_timeouts
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 3
    functionsReached:
    - io_loop_get_wait_time
    linkageType: ''
    returnType: bool
    signature: bool io_loop_have_immediate_timeouts(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib/ioloop.c:1299,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/ioloop.c:1300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1296
    functionDepth: 2
    functionLinenumber: 1296
    functionLinenumberEnd: 1301
    functionName: io_loop_is_empty
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 2
    functionsReached:
    - array_count
    - priorityq_count
    linkageType: ''
    returnType: bool
    signature: bool io_loop_is_empty(struct ioloop *ioloop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1303
    functionDepth: 0
    functionLinenumber: 1303
    functionLinenumberEnd: 1306
    functionName: io_loop_get_wait_usecs
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t io_loop_get_wait_usecs(struct ioloop *ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop.c:1313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ioloop
    - fd
    argTypes:
    - struct ioloop*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1308
    functionDepth: 1
    functionLinenumber: 1308
    functionLinenumberEnd: 1320
    functionName: io_loop_find_fd_conditions
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: enum io_condition
    signature: enum io_condition io_loop_find_fd_conditions(struct ioloop *ioloop,
      int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop.c:1329,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/ioloop.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ioloop
    - source_filename
    - source_linenum
    argTypes:
    - struct ioloop*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1335
    functionName: io_wait_timer_add_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct io_wait_timer
    signature: "struct io_wait_timer *\nio_wait_timer_add_to(struct ioloop *ioloop,
      const char *source_filename,\n\t\t     unsigned int source_linenum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_wait_timer_add_to
      Src: /src/dovecot/src/lib/ioloop.c:1341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - source_filename
    - source_linenum
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1338
    functionDepth: 0
    functionLinenumber: 1338
    functionLinenumberEnd: 1343
    functionName: io_wait_timer_add
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_wait_timer_add_to
    linkageType: ''
    returnType: struct io_wait_timer
    signature: 'struct io_wait_timer *

      io_wait_timer_add(const char *source_filename, unsigned int source_linenum)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/ioloop.c:1351,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib/ioloop.c:1352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - _timer
    - ioloop
    argTypes:
    - struct io_wait_timer**
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1345
    functionDepth: 1
    functionLinenumber: 1345
    functionLinenumberEnd: 1355
    functionName: io_wait_timer_move_to
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - DLLIST_REMOVE
    linkageType: ''
    returnType: struct io_wait_timer
    signature: "struct io_wait_timer *io_wait_timer_move_to(struct io_wait_timer **_timer,\n\t\t\t\t\t
      \   struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_wait_timer_move_to
      Src: /src/dovecot/src/lib/ioloop.c:1359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _timer
    argTypes:
    - struct io_wait_timer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1357
    functionDepth: 2
    functionLinenumber: 1357
    functionLinenumberEnd: 1360
    functionName: io_wait_timer_move
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached:
    - io_wait_timer_move_to
    linkageType: ''
    returnType: struct io_wait_timer
    signature: struct io_wait_timer *io_wait_timer_move(struct io_wait_timer **_timer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib/ioloop.c:1367,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop.c:1368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _timer
    argTypes:
    - struct io_wait_timer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1362
    functionDepth: 1
    functionLinenumber: 1362
    functionLinenumberEnd: 1369
    functionName: io_wait_timer_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached:
    - i_free
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void io_wait_timer_remove(struct io_wait_timer **_timer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timer
    argTypes:
    - struct io_wait_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1371
    functionDepth: 0
    functionLinenumber: 1371
    functionLinenumberEnd: 1374
    functionName: io_wait_timer_get_usecs
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t io_wait_timer_get_usecs(struct io_wait_timer *timer)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1376
    functionDepth: 0
    functionLinenumber: 1376
    functionLinenumberEnd: 1383
    functionName: io_loop_get_active_global_root
    functionSourceFile: /src/dovecot/src/lib/ioloop.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *io_loop_get_active_global_root(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: MY_EV_SET
    functionSourceFile: /src/dovecot/src/lib/ioloop-kqueue.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MY_EV_SET(a, b, c, d, e, f, g)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: MY_EV_SET
    functionSourceFile: /src/dovecot/src/lib/ioloop-kqueue.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MY_EV_SET(a, b, c, d, e, f, g)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:42,1
    - Dst: kqueue
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:43,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:45,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:46,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ioloop
    - initial_fd_count
    argTypes:
    - struct ioloop*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: io_loop_handler_init
    functionSourceFile: /src/dovecot/src/lib/ioloop-kqueue.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - fd_close_on_exec
    - i_fatal
    - kqueue
    - i_new
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_init(struct ioloop *ioloop, unsigned int initial_fd_count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:53,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:54,1
    - Dst: array_free
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:55,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: io_loop_handler_deinit
    functionSourceFile: /src/dovecot/src/lib/ioloop-kqueue.c
    functionUses: 1
    functionsReached:
    - i_free
    - close
    - i_error
    - array_free
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_deinit(struct ioloop *ioloop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kqueue
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:65,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:66,1
    - Dst: io_loop_handle_add
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 70
    functionName: io_loop_recreate
    functionSourceFile: /src/dovecot/src/lib/ioloop-kqueue.c
    functionUses: 1
    functionsReached:
    - kqueue
    - io_loop_handle_add
    - array_clear
    linkageType: ''
    returnType: void
    signature: void io_loop_recreate(struct ioloop *ioloop)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MY_EV_SET
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:78,1
    - Dst: kevent
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:79,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:80,1
    - Dst: MY_EV_SET
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:83,1
    - Dst: kevent
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:84,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:85,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:93,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - io
    argTypes:
    - struct io_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 94
    functionName: io_loop_handle_add
    functionSourceFile: /src/dovecot/src/lib/ioloop-kqueue.c
    functionUses: 2
    functionsReached:
    - i_panic
    - array_append_zero
    - kevent
    - MY_EV_SET
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_add(struct io_file *io)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:101,1
    - Dst: MY_EV_SET
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:103,1
    - Dst: kevent
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:104,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:105,1
    - Dst: MY_EV_SET
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:108,1
    - Dst: kevent
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:109,1
    - Dst: i_error
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:110,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:119,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - io
    - closed
    argTypes:
    - struct io_file*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 122
    functionName: io_loop_handle_remove
    functionSourceFile: /src/dovecot/src/lib/ioloop-kqueue.c
    functionUses: 1
    functionsReached:
    - kevent
    - i_error
    - MY_EV_SET
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void io_loop_handle_remove(struct io_file *io, bool closed)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_run_get_wait_time
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:136,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:141,1
    - Dst: kevent
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:144,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:146,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:151,1
    - Dst: i_sleep_intr_msecs
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:152,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:159,1
    - Dst: io_loop_handle_timeouts
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:164,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:170,1
    - Dst: io_loop_call_io
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:175,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:184,1
    - Dst: i_free
      Src: /src/dovecot/src/lib/ioloop-kqueue.c:186,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - ioloop
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 124
    functionDepth: 8
    functionLinenumber: 124
    functionLinenumberEnd: 188
    functionName: io_loop_handler_run_internal
    functionSourceFile: /src/dovecot/src/lib/ioloop-kqueue.c
    functionUses: 1
    functionsReached:
    - i_panic
    - kevent
    - i_free
    - array_idx
    - array_get_modifiable
    - io_loop_call_io
    - io_loop_run_get_wait_time
    - i_assert
    - io_loop_handle_timeouts
    - i_sleep_intr_msecs
    linkageType: ''
    returnType: void
    signature: void io_loop_handler_run_internal(struct ioloop *ioloop)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uintmax
      Src: /src/dovecot/src/lib/str-parse.c:15,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/str-parse.c:16,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/str-parse.c:21,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/str-parse.c:25,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:28,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:29,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:34,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:35,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:37,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:38,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:39,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:40,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/str-parse.c:51,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:58,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:63,1
    - Dst: str_begins_icase_with
      Src: /src/dovecot/src/lib/str-parse.c:68,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/str-parse.c:74,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/str-parse.c:78,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 60
    argCount: 4
    argNames:
    - str
    - interval_r
    - milliseconds
    - error_r
    argTypes:
    - char*
    - unsigned int*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 8
    functionDepth: 11
    functionLinenumber: 8
    functionLinenumberEnd: 84
    functionName: str_parse_get_interval_full
    functionSourceFile: /src/dovecot/src/lib/str-parse.c
    functionUses: 0
    functionsReached:
    - str_parse_uintmax
    - t_strdup_printf
    - i_toupper
    - str_begins_icase_with
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int str_parse_get_interval_full(\n\tconst char *str, unsigned int
      *interval_r, bool milliseconds,\n\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_get_interval_full
      Src: /src/dovecot/src/lib/str-parse.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - secs_r
    - error_r
    argTypes:
    - char*
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 12
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: str_parse_get_interval
    functionSourceFile: /src/dovecot/src/lib/str-parse.c
    functionUses: 6
    functionsReached:
    - str_parse_get_interval_full
    linkageType: ''
    returnType: int
    signature: "int str_parse_get_interval(const char *str, unsigned int *secs_r,\n\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_get_interval_full
      Src: /src/dovecot/src/lib/str-parse.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - msecs_r
    - error_r
    argTypes:
    - char*
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 12
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: str_parse_get_interval_msecs
    functionSourceFile: /src/dovecot/src/lib/str-parse.c
    functionUses: 4
    functionsReached:
    - str_parse_get_interval_full
    linkageType: ''
    returnType: int
    signature: "int str_parse_get_interval_msecs(const char *str, unsigned int *msecs_r,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uintmax
      Src: /src/dovecot/src/lib/str-parse.c:104,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/str-parse.c:105,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/str-parse.c:109,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/str-parse.c:134,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib/str-parse.c:136,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/str-parse.c:140,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib/str-parse.c:144,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 3
    argNames:
    - str
    - bytes_r
    - error_r
    argTypes:
    - char*
    - uoff_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 98
    functionDepth: 8
    functionLinenumber: 98
    functionLinenumberEnd: 149
    functionName: str_parse_get_size
    functionSourceFile: /src/dovecot/src/lib/str-parse.c
    functionUses: 6
    functionsReached:
    - str_parse_uintmax
    - t_strconcat
    - i_toupper
    linkageType: ''
    returnType: int
    signature: "int str_parse_get_size(const char *str, uoff_t *bytes_r,\n\t\t       const
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/str-parse.c:155,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/str-parse.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/str-parse.c:156,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib/str-parse.c:158,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/str-parse.c:161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - value
    - result_r
    - error_r
    argTypes:
    - char*
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 151
    functionDepth: 11
    functionLinenumber: 151
    functionLinenumberEnd: 167
    functionName: str_parse_get_bool
    functionSourceFile: /src/dovecot/src/lib/str-parse.c
    functionUses: 4
    functionsReached:
    - strcmp
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int str_parse_get_bool(const char *value, bool *result_r,\n\t\t       const
      char **error_r)"
  - BBCount: 23
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - digit
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 131
    functionName: _decode_hex_digit
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _decode_hex_digit(const unsigned char digit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_pct_encoded_data
      Src: /src/dovecot/src/lib/uri-util.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - ch_r
    argTypes:
    - struct uri_parser*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 185
    functionName: uri_parse_pct_encoded
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_parse_pct_encoded_data
    linkageType: ''
    returnType: int
    signature: int uri_parse_pct_encoded(struct uri_parser *parser, unsigned char
      *ch_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - parser
    - ch_r
    argTypes:
    - struct uri_parser*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 199
    functionName: uri_parse_unreserved_char
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int uri_parse_unreserved_char(struct uri_parser *parser, unsigned char
      *ch_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_unreserved_char
      Src: /src/dovecot/src/lib/uri-util.c:209,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - parser
    - part
    argTypes:
    - struct uri_parser*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 221
    functionName: uri_parse_unreserved
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - uri_parse_unreserved_char
    linkageType: ''
    returnType: int
    signature: int uri_parse_unreserved(struct uri_parser *parser, string_t *part)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_pct_encoded
      Src: /src/dovecot/src/lib/uri-util.c:231,1
    - Dst: uri_parse_unreserved_char
      Src: /src/dovecot/src/lib/uri-util.c:235,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:241,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - parser
    - part
    argTypes:
    - struct uri_parser*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 246
    functionName: uri_parse_unreserved_pct
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_parse_pct_encoded
    - str_append_c
    - uri_parse_unreserved_char
    linkageType: ''
    returnType: int
    signature: int uri_parse_unreserved_pct(struct uri_parser *parser, string_t *part)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: uri_parser_get_tmpbuf
      Src: /src/dovecot/src/lib/uri-util.c:267,1
    - Dst: uri_parse_pct_encoded_data
      Src: /src/dovecot/src/lib/uri-util.c:271,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:275,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:277,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/uri-util.c:283,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/uri-util.c:283,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - parser
    - data
    - until
    - decoded_r
    argTypes:
    - struct uri_parser*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 248
    functionDepth: 3
    functionLinenumber: 248
    functionLinenumberEnd: 285
    functionName: uri_data_decode
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_parser_get_tmpbuf
    - str_c
    - uri_parse_pct_encoded_data
    - p_strdup
    - str_append_c
    linkageType: ''
    returnType: bool
    signature: "bool uri_data_decode(struct uri_parser *parser, const char *data,\n\t\t
      \    const char *until, const char **decoded_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_isalpha
      Src: /src/dovecot/src/lib/uri-util.c:297,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib/uri-util.c:303,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib/uri-util.c:316,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 18
    argCount: 2
    argNames:
    - parser
    - scheme_r
    argTypes:
    - struct uri_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 287
    functionDepth: 3
    functionLinenumber: 287
    functionLinenumberEnd: 319
    functionName: uri_parse_scheme
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 2
    functionsReached:
    - i_isalnum
    - i_isalpha
    - t_strndup
    linkageType: ''
    returnType: int
    signature: int uri_parse_scheme(struct uri_parser *parser, const char **scheme_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uri_parser_init
      Src: /src/dovecot/src/lib/uri-util.c:325,1
    - Dst: uri_parse_scheme
      Src: /src/dovecot/src/lib/uri-util.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - uri_p
    - scheme_r
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 321
    functionDepth: 4
    functionLinenumber: 321
    functionLinenumberEnd: 330
    functionName: uri_cut_scheme
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_parse_scheme
    - uri_parser_init
    linkageType: ''
    returnType: int
    signature: int uri_cut_scheme(const char **uri_p, const char **scheme_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: uri_parser_get_tmpbuf
      Src: /src/dovecot/src/lib/uri-util.c:451,1
    - Dst: uri_do_parse_reg_name
      Src: /src/dovecot/src/lib/uri-util.c:453,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/uri-util.c:458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - parser
    - reg_name_r
    argTypes:
    - struct uri_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 445
    functionDepth: 3
    functionLinenumber: 445
    functionLinenumberEnd: 460
    functionName: uri_parse_reg_name
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_parser_get_tmpbuf
    - str_c
    - uri_do_parse_reg_name
    linkageType: ''
    returnType: int
    signature: int uri_parse_reg_name(struct uri_parser *parser, const char **reg_name_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: uri_parser_get_tmpbuf
      Src: /src/dovecot/src/lib/uri-util.c:597,1
    - Dst: uri_do_parse_host_name
      Src: /src/dovecot/src/lib/uri-util.c:599,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/uri-util.c:604,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - parser
    - host_name_r
    argTypes:
    - struct uri_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 591
    functionDepth: 3
    functionLinenumber: 591
    functionLinenumberEnd: 606
    functionName: uri_parse_host_name
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_parser_get_tmpbuf
    - str_c
    - uri_do_parse_host_name
    linkageType: ''
    returnType: int
    signature: int uri_parse_host_name(struct uri_parser *parser, const char **host_name_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_do_parse_host
      Src: /src/dovecot/src/lib/uri-util.c:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - host
    argTypes:
    - struct uri_parser*
    - struct uri_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 719
    functionName: uri_parse_host
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_do_parse_host
    linkageType: ''
    returnType: int
    signature: int uri_parse_host(struct uri_parser *parser, struct uri_host *host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_do_parse_authority
      Src: /src/dovecot/src/lib/uri-util.c:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - auth
    argTypes:
    - struct uri_parser*
    - struct uri_authority*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 845
    functionDepth: 0
    functionLinenumber: 845
    functionLinenumberEnd: 848
    functionName: uri_parse_authority
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_do_parse_authority
    linkageType: ''
    returnType: int
    signature: int uri_parse_authority(struct uri_parser *parser, struct uri_authority
      *auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_do_parse_slashslash_authority
      Src: /src/dovecot/src/lib/uri-util.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - auth
    argTypes:
    - struct uri_parser*
    - struct uri_authority*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 850
    functionDepth: 0
    functionLinenumber: 850
    functionLinenumberEnd: 854
    functionName: uri_parse_slashslash_authority
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_do_parse_slashslash_authority
    linkageType: ''
    returnType: int
    signature: "int uri_parse_slashslash_authority(struct uri_parser *parser,\n\t\t\t\t
      \  struct uri_authority *auth)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_do_parse_authority
      Src: /src/dovecot/src/lib/uri-util.c:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - auth
    argTypes:
    - struct uri_parser*
    - struct uri_authority*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 860
    functionName: uri_parse_host_authority
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 2
    functionsReached:
    - uri_do_parse_authority
    linkageType: ''
    returnType: int
    signature: "int uri_parse_host_authority(struct uri_parser *parser,\n\t\t\t     struct
      uri_authority *auth)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_do_parse_slashslash_authority
      Src: /src/dovecot/src/lib/uri-util.c:865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - auth
    argTypes:
    - struct uri_parser*
    - struct uri_authority*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 866
    functionName: uri_parse_slashslash_host_authority
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_do_parse_slashslash_authority
    linkageType: ''
    returnType: int
    signature: "int uri_parse_slashslash_host_authority(struct uri_parser *parser,\n\t\t\t\t\tstruct
      uri_authority *auth)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_pct_encoded
      Src: /src/dovecot/src/lib/uri-util.c:876,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib/uri-util.c:892,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/lib/uri-util.c:894,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/uri-util.c:902,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 22
    argCount: 2
    argNames:
    - parser
    - segment_r
    argTypes:
    - struct uri_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 868
    functionDepth: 2
    functionLinenumber: 868
    functionLinenumberEnd: 904
    functionName: uri_parse_path_segment
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_parse_pct_encoded
    - p_strdup_until
    - uri_char_sanitize
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: int uri_parse_path_segment(struct uri_parser *parser, const char **segment_r)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib/uri-util.c:910,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib/uri-util.c:918,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/uri-util.c:920,1
    - Dst: uri_parse_path_segment
      Src: /src/dovecot/src/lib/uri-util.c:931,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/uri-util.c:947,1
    - Dst: array_count
      Src: /src/dovecot/src/lib/uri-util.c:947,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib/uri-util.c:948,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/uri-util.c:966,1
    - Dst: uri_parse_path_segment
      Src: /src/dovecot/src/lib/uri-util.c:975,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib/uri-util.c:994,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib/uri-util.c:996,1
    - Dst: array_get
      Src: /src/dovecot/src/lib/uri-util.c:997,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib/uri-util.c:1001,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/lib/uri-util.c:1003,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 70
    argCount: 3
    argNames:
    - parser
    - relative_r
    - path_r
    argTypes:
    - struct uri_parser*
    - int*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 906
    functionDepth: 3
    functionLinenumber: 906
    functionLinenumberEnd: 1007
    functionName: uri_parse_path
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - i_zero
    - array_delete
    - p_array_init
    - array_push_back
    - array_get
    - array_count
    - ARRAY_TYPE
    - array_append_zero
    - i_assert
    - uri_parse_path_segment
    - uri_char_sanitize
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int uri_parse_path(struct uri_parser *parser,\n\t\t   int *relative_r,
      const char *const **path_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_pct_encoded
      Src: /src/dovecot/src/lib/uri-util.c:1030,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib/uri-util.c:1045,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/lib/uri-util.c:1047,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/uri-util.c:1052,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 23
    argCount: 2
    argNames:
    - parser
    - query_r
    argTypes:
    - struct uri_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1009
    functionDepth: 2
    functionLinenumber: 1009
    functionLinenumberEnd: 1054
    functionName: uri_parse_query
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 2
    functionsReached:
    - uri_parse_pct_encoded
    - p_strdup_until
    - uri_char_sanitize
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: int uri_parse_query(struct uri_parser *parser, const char **query_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_pct_encoded
      Src: /src/dovecot/src/lib/uri-util.c:1076,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib/uri-util.c:1090,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/lib/uri-util.c:1092,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib/uri-util.c:1097,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 2
    argNames:
    - parser
    - fragment_r
    argTypes:
    - struct uri_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1056
    functionDepth: 2
    functionLinenumber: 1056
    functionLinenumberEnd: 1101
    functionName: uri_parse_fragment
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_parse_pct_encoded
    - p_strdup_until
    - uri_char_sanitize
    - p_strdup_printf
    linkageType: ''
    returnType: int
    signature: int uri_parse_fragment(struct uri_parser *parser, const char **fragment_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/uri-util.c:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - parser
    - pool
    - data
    - size
    argTypes:
    - struct uri_parser*
    - pool_t
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1110
    functionName: uri_parser_init_data
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void uri_parser_init_data(struct uri_parser *parser, pool_t pool,\n\t\t\t
      \ const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_parser_init_data
      Src: /src/dovecot/src/lib/uri-util.c:1114,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/uri-util.c:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - parser
    - pool
    - uri
    argTypes:
    - struct uri_parser*
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1112
    functionDepth: 2
    functionLinenumber: 1112
    functionLinenumberEnd: 1116
    functionName: uri_parser_init
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 3
    functionsReached:
    - strlen
    - uri_parser_init_data
    linkageType: ''
    returnType: void
    signature: void uri_parser_init(struct uri_parser *parser, pool_t pool, const
      char *uri)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib/uri-util.c:1121,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/uri-util.c:1123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - parser
    - size
    argTypes:
    - struct uri_parser*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1118
    functionDepth: 3
    functionLinenumber: 1118
    functionLinenumberEnd: 1125
    functionName: uri_parser_get_tmpbuf
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 3
    functionsReached:
    - str_new
    - str_truncate
    linkageType: ''
    returnType: string_t
    signature: string_t *uri_parser_get_tmpbuf(struct uri_parser *parser, size_t size)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_scheme
      Src: /src/dovecot/src/lib/uri-util.c:1151,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/uri-util.c:1156,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib/uri-util.c:1159,1
    - Dst: uri_parse_slashslash_authority
      Src: /src/dovecot/src/lib/uri-util.c:1165,1
    - Dst: uri_parse_authority
      Src: /src/dovecot/src/lib/uri-util.c:1169,1
    - Dst: uri_parse_path
      Src: /src/dovecot/src/lib/uri-util.c:1175,1
    - Dst: uri_parse_path
      Src: /src/dovecot/src/lib/uri-util.c:1178,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/uri-util.c:1179,1
    - Dst: uri_parse_query
      Src: /src/dovecot/src/lib/uri-util.c:1185,1
    - Dst: uri_parse_fragment
      Src: /src/dovecot/src/lib/uri-util.c:1189,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/uri-util.c:1197,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 39
    argCount: 2
    argNames:
    - parser
    - flags
    argTypes:
    - struct uri_parser*
    - enum uri_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1127
    functionDepth: 4
    functionLinenumber: 1127
    functionLinenumberEnd: 1199
    functionName: uri_parse_absolute_generic
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - strcmp
    - uri_parse_fragment
    - uri_parse_query
    - uri_parse_scheme
    - uri_parse_slashslash_authority
    - uri_parse_path
    - uri_parse_authority
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int uri_parse_absolute_generic(struct uri_parser *parser,\n\t\t\t
      \      enum uri_parse_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/uri-util.c:1212,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/uri-util.c:1213,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib/uri-util.c:1217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - pool
    - dest
    - src
    argTypes:
    - pool_t
    - struct uri_host*
    - struct uri_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1205
    functionDepth: 6
    functionLinenumber: 1205
    functionLinenumberEnd: 1218
    functionName: uri_host_copy
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: "void uri_host_copy(pool_t pool, struct uri_host *dest,\n\t\t   const
      struct uri_host *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/uri-util.c:1230,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/uri-util.c:1231,1
    - Dst: uri_parse_absolute_generic
      Src: /src/dovecot/src/lib/uri-util.c:1235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - data
    - size
    - flags
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - enum uri_parse_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1224
    functionDepth: 5
    functionLinenumber: 1224
    functionLinenumberEnd: 1238
    functionName: uri_check_data
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_datastack_create
    - uri_parse_absolute_generic
    linkageType: ''
    returnType: int
    signature: "int uri_check_data(const unsigned char *data, size_t size,\n\t\t   enum
      uri_parse_flags flags, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_check_data
      Src: /src/dovecot/src/lib/uri-util.c:1242,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/uri-util.c:1242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - uri
    - flags
    - error_r
    argTypes:
    - char*
    - enum uri_parse_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1240
    functionDepth: 6
    functionLinenumber: 1240
    functionLinenumberEnd: 1244
    functionName: uri_check
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 4
    functionsReached:
    - strlen
    - uri_check_data
    linkageType: ''
    returnType: int
    signature: int uri_check(const char *uri, enum uri_parse_flags flags, const char
      **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib/uri-util.c:1260,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/uri-util.c:1262,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/uri-util.c:1263,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib/uri-util.c:1271,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 5
    argNames:
    - out
    - esc_table
    - esc_mask
    - esc_extra
    - data
    argTypes:
    - string_t*
    - unsigned char[]
    - unsigned char
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1250
    functionDepth: 2
    functionLinenumber: 1250
    functionLinenumberEnd: 1272
    functionName: uri_data_encode
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - str_append_data
    linkageType: ''
    returnType: void
    signature: "void uri_data_encode(string_t *out, const unsigned char esc_table[256],\n\t\t
      \    unsigned char esc_mask, const char *esc_extra,\n\t\t     const char *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib/uri-util.c:1276,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - out
    - scheme
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1274
    functionDepth: 2
    functionLinenumber: 1274
    functionLinenumberEnd: 1278
    functionName: uri_append_scheme
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void uri_append_scheme(string_t *out, const char *scheme)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_data_encode
      Src: /src/dovecot/src/lib/uri-util.c:1282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - out
    - esc
    - data
    argTypes:
    - string_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1280
    functionDepth: 3
    functionLinenumber: 1280
    functionLinenumberEnd: 1283
    functionName: uri_append_user_data
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_data_encode
    linkageType: ''
    returnType: void
    signature: void uri_append_user_data(string_t *out, const char *esc, const char
      *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib/uri-util.c:1287,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:1288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - out
    - userinfo
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1285
    functionDepth: 4
    functionLinenumber: 1285
    functionLinenumberEnd: 1289
    functionName: uri_append_userinfo
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - str_append_c
    - uri_append_user_data
    linkageType: ''
    returnType: void
    signature: void uri_append_userinfo(string_t *out, const char *userinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_data_encode
      Src: /src/dovecot/src/lib/uri-util.c:1293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - out
    - name
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1291
    functionDepth: 3
    functionLinenumber: 1291
    functionLinenumberEnd: 1296
    functionName: uri_append_host_name
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_data_encode
    linkageType: ''
    returnType: void
    signature: void uri_append_host_name(string_t *out, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib/uri-util.c:1300,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/uri-util.c:1302,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/uri-util.c:1305,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/uri-util.c:1309,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:1310,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/uri-util.c:1311,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:1312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - out
    - host_ip
    argTypes:
    - string_t*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1298
    functionDepth: 6
    functionLinenumber: 1298
    functionLinenumberEnd: 1313
    functionName: uri_append_host_ip
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_c
    - i_assert
    - net_ip2addr
    linkageType: ''
    returnType: void
    signature: void uri_append_host_ip(string_t *out, const struct ip_addr *host_ip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uri_append_host_ip
      Src: /src/dovecot/src/lib/uri-util.c:1320,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/uri-util.c:1322,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib/uri-util.c:1323,1
    - Dst: uri_append_host_name
      Src: /src/dovecot/src/lib/uri-util.c:1324,1
    - Dst: uri_append_host_ip
      Src: /src/dovecot/src/lib/uri-util.c:1326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - out
    - host
    argTypes:
    - string_t*
    - struct uri_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1315
    functionDepth: 7
    functionLinenumber: 1315
    functionLinenumberEnd: 1328
    functionName: uri_append_host
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_append_host_ip
    - i_assert
    - uri_append_host_name
    - net_addr2ip
    linkageType: ''
    returnType: void
    signature: void uri_append_host(string_t *out, const struct uri_host *host)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/uri-util.c:1333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - out
    - port
    argTypes:
    - string_t*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1330
    functionDepth: 2
    functionLinenumber: 1330
    functionLinenumberEnd: 1334
    functionName: uri_append_port
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - str_printfa
    linkageType: ''
    returnType: void
    signature: void uri_append_port(string_t *out, in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_data_encode
      Src: /src/dovecot/src/lib/uri-util.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - out
    - esc
    - data
    argTypes:
    - string_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1336
    functionDepth: 3
    functionLinenumber: 1336
    functionLinenumberEnd: 1340
    functionName: uri_append_path_segment_data
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_data_encode
    linkageType: ''
    returnType: void
    signature: "void uri_append_path_segment_data(string_t *out, const char *esc,\n\t\t\t\t
      \ const char *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:1344,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/uri-util.c:1346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - out
    - segment
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1342
    functionDepth: 2
    functionLinenumber: 1342
    functionLinenumberEnd: 1347
    functionName: uri_append_path_segment
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_append_path_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void uri_append_path_segment(string_t *out, const char *segment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_data_encode
      Src: /src/dovecot/src/lib/uri-util.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - out
    - esc
    - data
    argTypes:
    - string_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1349
    functionDepth: 3
    functionLinenumber: 1349
    functionLinenumberEnd: 1352
    functionName: uri_append_path_data
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 2
    functionsReached:
    - uri_data_encode
    linkageType: ''
    returnType: void
    signature: void uri_append_path_data(string_t *out, const char *esc, const char
      *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:1356,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib/uri-util.c:1358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - out
    - path
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1354
    functionDepth: 4
    functionLinenumber: 1354
    functionLinenumberEnd: 1359
    functionName: uri_append_path
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_append_path_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void uri_append_path(string_t *out, const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_data_encode
      Src: /src/dovecot/src/lib/uri-util.c:1363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - out
    - esc
    - data
    argTypes:
    - string_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1361
    functionDepth: 3
    functionLinenumber: 1361
    functionLinenumberEnd: 1364
    functionName: uri_append_query_data
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_data_encode
    linkageType: ''
    returnType: void
    signature: void uri_append_query_data(string_t *out, const char *esc, const char
      *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:1368,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib/uri-util.c:1370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - out
    - query
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1366
    functionDepth: 4
    functionLinenumber: 1366
    functionLinenumberEnd: 1371
    functionName: uri_append_query
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - uri_append_query_data
    linkageType: ''
    returnType: void
    signature: void uri_append_query(string_t *out, const char *query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_data_encode
      Src: /src/dovecot/src/lib/uri-util.c:1375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - out
    - esc
    - data
    argTypes:
    - string_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1373
    functionDepth: 3
    functionLinenumber: 1373
    functionLinenumberEnd: 1376
    functionName: uri_append_fragment_data
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_data_encode
    linkageType: ''
    returnType: void
    signature: void uri_append_fragment_data(string_t *out, const char *esc, const
      char *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib/uri-util.c:1380,1
    - Dst: uri_append_fragment_data
      Src: /src/dovecot/src/lib/uri-util.c:1382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - out
    - fragment
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1378
    functionDepth: 4
    functionLinenumber: 1378
    functionLinenumberEnd: 1383
    functionName: uri_append_fragment
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 0
    functionsReached:
    - uri_append_fragment_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void uri_append_fragment(string_t *out, const char *fragment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_data_encode
      Src: /src/dovecot/src/lib/uri-util.c:1387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - out
    - data
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1385
    functionDepth: 3
    functionLinenumber: 1385
    functionLinenumberEnd: 1389
    functionName: uri_append_unreserved
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_data_encode
    linkageType: ''
    returnType: void
    signature: void uri_append_unreserved(string_t *out, const char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_data_encode
      Src: /src/dovecot/src/lib/uri-util.c:1393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - out
    - data
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1391
    functionDepth: 3
    functionLinenumber: 1391
    functionLinenumberEnd: 1395
    functionName: uri_append_unreserved_path
    functionSourceFile: /src/dovecot/src/lib/uri-util.c
    functionUses: 1
    functionsReached:
    - uri_data_encode
    linkageType: ''
    returnType: void
    signature: void uri_append_unreserved_path(string_t *out, const char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-env-util.c:8,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/test-env-util.c:10,1
    - Dst: env_backup_save
      Src: /src/dovecot/src/lib/test-env-util.c:11,1
    - Dst: env_clean
      Src: /src/dovecot/src/lib/test-env-util.c:14,1
    - Dst: env_get_environ_p
      Src: /src/dovecot/src/lib/test-env-util.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:16,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:17,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:17,1
    - Dst: env_put_array
      Src: /src/dovecot/src/lib/test-env-util.c:21,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:22,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:22,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:23,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:23,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:24,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:24,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:25,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:25,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:26,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:26,1
    - Dst: env_put_array
      Src: /src/dovecot/src/lib/test-env-util.c:28,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:29,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:29,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:30,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:30,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:31,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:31,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:32,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:32,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:33,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:33,1
    - Dst: env_clean_except
      Src: /src/dovecot/src/lib/test-env-util.c:37,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:38,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:38,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:39,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:39,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:40,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:41,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:41,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:42,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:43,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:45,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:46,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:47,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/test-env-util.c:50,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:51,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:52,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:52,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/test-env-util.c:53,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:54,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:54,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:55,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:55,1
    - Dst: env_remove
      Src: /src/dovecot/src/lib/test-env-util.c:56,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:57,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:57,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib/test-env-util.c:58,1
    - Dst: env_backup_restore
      Src: /src/dovecot/src/lib/test-env-util.c:61,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:62,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:62,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/test-env-util.c:63,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:64,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:64,1
    - Dst: env_backup_restore
      Src: /src/dovecot/src/lib/test-env-util.c:67,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib/test-env-util.c:68,1
    - Dst: getenv
      Src: /src/dovecot/src/lib/test-env-util.c:68,1
    - Dst: env_backup_free
      Src: /src/dovecot/src/lib/test-env-util.c:69,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-env-util.c:71,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 6
    functionDepth: 4
    functionLinenumber: 6
    functionLinenumberEnd: 72
    functionName: test_env_util
    functionSourceFile: /src/dovecot/src/lib/test-env-util.c
    functionUses: 0
    functionsReached:
    - env_put
    - env_backup_free
    - env_remove
    - env_backup_restore
    - env_clean
    - getenv
    - test_assert_strcmp
    - env_clean_except
    - test_end
    - null_strcmp
    - env_backup_save
    - test_assert
    - env_get_environ_p
    - test_begin
    - env_put_array
    linkageType: ''
    returnType: void
    signature: void test_env_util(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib/test-env-util.c:78,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-env-util.c:80,1
    - Dst: env_put
      Src: /src/dovecot/src/lib/test-env-util.c:81,1
    - Dst: test_expect_fatal_string
      Src: /src/dovecot/src/lib/test-env-util.c:84,1
    - Dst: env_put_array
      Src: /src/dovecot/src/lib/test-env-util.c:86,1
    - Dst: test_end
      Src: /src/dovecot/src/lib/test-env-util.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - stage
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 92
    functionName: fatal_env_util
    functionSourceFile: /src/dovecot/src/lib/test-env-util.c
    functionUses: 0
    functionsReached:
    - env_put
    - test_end
    - test_expect_fatal_string
    - test_begin
    - env_put_array
    linkageType: ''
    returnType: enum fatal_test_state
    signature: enum fatal_test_state fatal_env_util(unsigned int stage)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - tm1
    - tm2
    argTypes:
    - struct tm*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 21
    functionName: tm_cmp
    functionSourceFile: /src/dovecot/src/lib/utc-mktime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tm_cmp(const struct tm *tm1, const struct tm *tm2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: adjust_leap_second
    functionSourceFile: /src/dovecot/src/lib/utc-mktime.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void adjust_leap_second(struct tm *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: adjust_leap_second
      Src: /src/dovecot/src/lib/utc-mktime.c:36,1
    - Dst: timegm
      Src: /src/dovecot/src/lib/utc-mktime.c:40,1
    - Dst: tm_cmp
      Src: /src/dovecot/src/lib/utc-mktime.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: utc_mktime
    functionSourceFile: /src/dovecot/src/lib/utc-mktime.c
    functionUses: 5
    functionsReached:
    - adjust_leap_second
    - tm_cmp
    - timegm
    linkageType: ''
    returnType: time_t
    signature: time_t utc_mktime(const struct tm *tm)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: adjust_leap_second
      Src: /src/dovecot/src/lib/utc-mktime.c:49,1
    - Dst: gmtime
      Src: /src/dovecot/src/lib/utc-mktime.c:64,1
    - Dst: tm_cmp
      Src: /src/dovecot/src/lib/utc-mktime.c:65,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 78
    functionName: utc_mktime
    functionSourceFile: /src/dovecot/src/lib/utc-mktime.c
    functionUses: 5
    functionsReached:
    - adjust_leap_second
    - tm_cmp
    - gmtime
    linkageType: ''
    returnType: time_t
    signature: time_t utc_mktime(const struct tm *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/hash-method.h:37,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib/hash-method.h:39,1
    - Dst: struct hash_method_context*::hash::init
      Src: /src/dovecot/src/lib/hash-method.h:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - meth
    argTypes:
    - struct hash_method_context*
    - struct hash_method*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: hash_method_init
    functionSourceFile: /src/dovecot/src/lib/hash-method.h
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - struct hash_method_context*::hash::init
    linkageType: ''
    returnType: void
    signature: "void hash_method_init(struct hash_method_context *ctx,\n\t\t const
      struct hash_method *meth)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct hash_method_context*::hash::loop
      Src: /src/dovecot/src/lib/hash-method.h:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - data
    - size
    argTypes:
    - struct hash_method_context*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: hash_method_loop
    functionSourceFile: /src/dovecot/src/lib/hash-method.h
    functionUses: 0
    functionsReached:
    - struct hash_method_context*::hash::loop
    linkageType: ''
    returnType: void
    signature: void hash_method_loop(struct hash_method_context *ctx, const void *data,
      size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct hash_method_context*::hash::result
      Src: /src/dovecot/src/lib/hash-method.h:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - digest_r
    argTypes:
    - struct hash_method_context*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: hash_method_result
    functionSourceFile: /src/dovecot/src/lib/hash-method.h
    functionUses: 0
    functionsReached:
    - struct hash_method_context*::hash::result
    linkageType: ''
    returnType: void
    signature: void hash_method_result(struct hash_method_context *ctx, unsigned char
      *digest_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_hash_data
      Src: /src/dovecot/src/lib/hash-method.h:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - meth
    - data
    argTypes:
    - struct hash_method*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 3
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: t_hash_buffer
    functionSourceFile: /src/dovecot/src/lib/hash-method.h
    functionUses: 0
    functionsReached:
    - t_hash_data
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *t_hash_buffer(const struct hash_method *meth,\n\t\t\tconst
      buffer_t *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_hash_data
      Src: /src/dovecot/src/lib/hash-method.h:84,1
    - Dst: strlen
      Src: /src/dovecot/src/lib/hash-method.h:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - meth
    - data
    argTypes:
    - struct hash_method*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: t_hash_str
    functionSourceFile: /src/dovecot/src/lib/hash-method.h
    functionUses: 0
    functionsReached:
    - t_hash_data
    - strlen
    linkageType: ''
    returnType: buffer_t
    signature: "buffer_t *t_hash_str(const struct hash_method *meth,\n\t\t     const
      char *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: SHA3_CONST
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA3_CONST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: SHA3_CONST
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA3_CONST(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: SHA3_ROTL64
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA3_ROTL64(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA3_ROTL64
      Src: /src/dovecot/src/lib/sha3.c:86,1
    - Dst: SHA3_ROTL64
      Src: /src/dovecot/src/lib/sha3.c:96,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint64_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 111
    functionName: ATTR_UNSIGNED_WRAPS::keccakf
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - SHA3_ROTL64
    linkageType: ''
    returnType: void
    signature: 'void ATTR_UNSIGNED_WRAPS

      keccakf(uint64_t s[25])'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/sha3.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: sha3_256_init
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void sha3_256_init(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib/sha3.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: sha3_512_init
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void sha3_512_init(void *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sha3.c:141,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sha3.c:142,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sha3.c:152,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sha3.c:167,1
    - Dst: keccakf
      Src: /src/dovecot/src/lib/sha3.c:173,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sha3.c:180,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sha3.c:195,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib/sha3.c:195,1
    - Dst: keccakf
      Src: /src/dovecot/src/lib/sha3.c:200,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sha3.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib/sha3.c:211,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 3
    argNames:
    - context
    - data
    - len
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 212
    functionName: sha3_loop
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - i_assert
    - keccakf
    - memcmp
    linkageType: ''
    returnType: void
    signature: void sha3_loop(void *context, const void *data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA3_CONST
      Src: /src/dovecot/src/lib/sha3.c:232,1
    - Dst: keccakf
      Src: /src/dovecot/src/lib/sha3.c:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct sha3_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 252
    functionName: sha3_finalize
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - keccakf
    - SHA3_CONST
    linkageType: ''
    returnType: void
    signature: void sha3_finalize(struct sha3_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_finalize
      Src: /src/dovecot/src/lib/sha3.c:258,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/sha3.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - void*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 260
    functionName: sha3_256_result
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - memcpy
    - sha3_finalize
    linkageType: ''
    returnType: void
    signature: "void sha3_256_result(void *context,\n\t\t     unsigned char digest[STATIC_ARRAY
      SHA256_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_finalize
      Src: /src/dovecot/src/lib/sha3.c:267,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib/sha3.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - void*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: sha3_512_result
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - memcpy
    - sha3_finalize
    linkageType: ''
    returnType: void
    signature: "void sha3_512_result(void *context,\n\t\t     unsigned char digest[STATIC_ARRAY
      SHA512_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_256_init
      Src: /src/dovecot/src/lib/sha3.c:276,1
    - Dst: sha3_loop
      Src: /src/dovecot/src/lib/sha3.c:277,1
    - Dst: sha3_256_result
      Src: /src/dovecot/src/lib/sha3.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - data
    - size
    - digest
    argTypes:
    - void*
    - size_t
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 279
    functionName: sha3_256_get_digest
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - sha3_256_init
    - sha3_loop
    - sha3_256_result
    linkageType: ''
    returnType: void
    signature: "void sha3_256_get_digest(const void *data, size_t size,\n\t\t\t unsigned
      char digest[STATIC_ARRAY SHA256_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_512_init
      Src: /src/dovecot/src/lib/sha3.c:285,1
    - Dst: sha3_loop
      Src: /src/dovecot/src/lib/sha3.c:286,1
    - Dst: sha3_512_result
      Src: /src/dovecot/src/lib/sha3.c:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - data
    - size
    - digest
    argTypes:
    - void*
    - size_t
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 288
    functionName: sha3_512_get_digest
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - sha3_512_result
    - sha3_512_init
    - sha3_loop
    linkageType: ''
    returnType: void
    signature: "void sha3_512_get_digest(const void *data, size_t size,\n\t\t\t unsigned
      char digest[STATIC_ARRAY SHA512_RESULTLEN])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_256_init
      Src: /src/dovecot/src/lib/sha3.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: hash_method_init_sha3_256
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - sha3_256_init
    linkageType: ''
    returnType: void
    signature: void hash_method_init_sha3_256(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_loop
      Src: /src/dovecot/src/lib/sha3.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - context
    - data
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: hash_method_loop_sha3
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - sha3_loop
    linkageType: ''
    returnType: void
    signature: void hash_method_loop_sha3(void *context, const void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_256_result
      Src: /src/dovecot/src/lib/sha3.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 300
    functionDepth: 3
    functionLinenumber: 300
    functionLinenumberEnd: 303
    functionName: hash_method_result_sha3_256
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - sha3_256_result
    linkageType: ''
    returnType: void
    signature: void hash_method_result_sha3_256(void *context, unsigned char *result_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_512_init
      Src: /src/dovecot/src/lib/sha3.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: hash_method_init_sha3_512
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - sha3_512_init
    linkageType: ''
    returnType: void
    signature: void hash_method_init_sha3_512(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha3_512_result
      Src: /src/dovecot/src/lib/sha3.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - context
    - result_r
    argTypes:
    - void*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: hash_method_result_sha3_512
    functionSourceFile: /src/dovecot/src/lib/sha3.c
    functionUses: 0
    functionsReached:
    - sha3_512_result
    linkageType: ''
    returnType: void
    signature: void hash_method_result_sha3_512(void *context, unsigned char *result_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 9
    functionName: pool_null_get_name
    functionSourceFile: /src/dovecot/src/lib/mempool-null.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pool_null_get_name(pool_t pool ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-null.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 14
    functionName: pool_null_ref
    functionSourceFile: /src/dovecot/src/lib/mempool-null.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void pool_null_ref(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-null.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 19
    functionName: pool_null_unref
    functionSourceFile: /src/dovecot/src/lib/mempool-null.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void pool_null_unref(pool_t *pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-null.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: pool_null_malloc
    functionSourceFile: /src/dovecot/src/lib/mempool-null.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: void
    signature: void *pool_null_malloc(pool_t pool ATTR_UNUSED, size_t size ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: pool_null_free
    functionSourceFile: /src/dovecot/src/lib/mempool-null.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pool_null_free(pool_t pool ATTR_UNUSED, void *mem ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib/mempool-null.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - pool_t
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: pool_null_realloc
    functionSourceFile: /src/dovecot/src/lib/mempool-null.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: void
    signature: "void *\npool_null_realloc(pool_t pool ATTR_UNUSED, void *mem ATTR_UNUSED,\n\t\t
      \ size_t old_size ATTR_UNUSED, size_t new_size ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib/mempool-null.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: pool_null_clear
    functionSourceFile: /src/dovecot/src/lib/mempool-null.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void pool_null_clear(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: pool_null_get_max_easy_alloc_size
    functionSourceFile: /src/dovecot/src/lib/mempool-null.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t pool_null_get_max_easy_alloc_size(pool_t pool ATTR_UNUSED)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/backtrace-string.c:16,1
    - Dst: unw_getcontext
      Src: /src/dovecot/src/lib/backtrace-string.c:25,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/backtrace-string.c:26,1
    - Dst: unw_init_local
      Src: /src/dovecot/src/lib/backtrace-string.c:29,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/backtrace-string.c:30,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/backtrace-string.c:35,1
    - Dst: unw_get_proc_info
      Src: /src/dovecot/src/lib/backtrace-string.c:36,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/backtrace-string.c:37,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/backtrace-string.c:39,1
    - Dst: unw_get_proc_name
      Src: /src/dovecot/src/lib/backtrace-string.c:40,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/backtrace-string.c:42,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/backtrace-string.c:43,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/backtrace-string.c:44,1
    - Dst: str_append_max
      Src: /src/dovecot/src/lib/backtrace-string.c:47,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/backtrace-string.c:48,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/backtrace-string.c:51,1
    - Dst: unw_step
      Src: /src/dovecot/src/lib/backtrace-string.c:53,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/backtrace-string.c:57,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/backtrace-string.c:59,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/backtrace-string.c:63,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 2
    argNames:
    - str
    - error_r
    argTypes:
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 14
    functionDepth: 11
    functionLinenumber: 14
    functionLinenumberEnd: 67
    functionName: backtrace_append_unwind
    functionSourceFile: /src/dovecot/src/lib/backtrace-string.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_begins_with
    - unw_getcontext
    - str_len
    - unw_init_local
    - t_strdup_printf
    - unw_step
    - unw_get_proc_info
    - str_truncate
    - str_append_max
    - str_append
    - unw_get_proc_name
    linkageType: ''
    returnType: int
    signature: int backtrace_append_unwind(string_t *str, const char **error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/backtrace-string.c:76,1
    - Dst: backtrace
      Src: /src/dovecot/src/lib/backtrace-string.c:81,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib/backtrace-string.c:81,1
    - Dst: backtrace_symbols
      Src: /src/dovecot/src/lib/backtrace-string.c:87,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/backtrace-string.c:93,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/backtrace-string.c:94,1
    - Dst: str_len
      Src: /src/dovecot/src/lib/backtrace-string.c:96,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib/backtrace-string.c:97,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib/backtrace-string.c:102,1
    - Dst: str_append
      Src: /src/dovecot/src/lib/backtrace-string.c:107,1
    - Dst: free
      Src: /src/dovecot/src/lib/backtrace-string.c:110,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - str
    - error_r
    argTypes:
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 112
    functionName: backtrace_append_libc
    functionSourceFile: /src/dovecot/src/lib/backtrace-string.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - strrchr
    - backtrace
    - str_len
    - free
    - str_append
    - N_ELEMENTS
    - backtrace_symbols
    linkageType: ''
    returnType: int
    signature: int backtrace_append_libc(string_t *str, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib/backtrace-string.c:128,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib/backtrace-string.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ptr
    - ATTR_UNUSED
    - context
    argTypes:
    - uintptr_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 132
    functionName: walk_callback
    functionSourceFile: /src/dovecot/src/lib/backtrace-string.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    linkageType: ''
    returnType: int
    signature: "int walk_callback(uintptr_t ptr, int signo ATTR_UNUSED,\n\t\t\t void
      *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getcontext
      Src: /src/dovecot/src/lib/backtrace-string.c:139,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib/backtrace-string.c:140,1
    - Dst: walkcontext
      Src: /src/dovecot/src/lib/backtrace-string.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - str
    - error_r
    argTypes:
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 134
    functionDepth: 11
    functionLinenumber: 134
    functionLinenumberEnd: 148
    functionName: backtrace_append_libc
    functionSourceFile: /src/dovecot/src/lib/backtrace-string.c
    functionUses: 0
    functionsReached:
    - walkcontext
    - getcontext
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: int backtrace_append_libc(string_t *str, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib/backtrace-string.c:161,1
    - Dst: backtrace_append_unwind
      Src: /src/dovecot/src/lib/backtrace-string.c:162,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib/backtrace-string.c:166,1
    - Dst: backtrace_append_libc
      Src: /src/dovecot/src/lib/backtrace-string.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - error_r
    argTypes:
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 158
    functionDepth: 12
    functionLinenumber: 158
    functionLinenumberEnd: 169
    functionName: backtrace_append
    functionSourceFile: /src/dovecot/src/lib/backtrace-string.c
    functionUses: 2
    functionsReached:
    - backtrace_append_unwind
    - backtrace_append_libc
    - str_truncate
    - str_len
    linkageType: ''
    returnType: int
    signature: int backtrace_append(string_t *str, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib/backtrace-string.c:175,1
    - Dst: backtrace_append
      Src: /src/dovecot/src/lib/backtrace-string.c:176,1
    - Dst: str_c
      Src: /src/dovecot/src/lib/backtrace-string.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - backtrace_r
    - error_r
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 171
    functionDepth: 13
    functionLinenumber: 171
    functionLinenumberEnd: 181
    functionName: backtrace_get
    functionSourceFile: /src/dovecot/src/lib/backtrace-string.c
    functionUses: 5
    functionsReached:
    - str_c
    - t_str_new
    - backtrace_append
    linkageType: ''
    returnType: int
    signature: int backtrace_get(const char **backtrace_r, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - d
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: buffer_create_from_data
    functionSourceFile: /src/dovecot/src/lib/buffer.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: buffer_create_from_data(b,d,s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - b
    - ','
    - d
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: buffer_create_from_const_data
    functionSourceFile: /src/dovecot/src/lib/buffer.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: buffer_create_from_const_data(b,d,s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - init_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: t_buffer_create
    functionSourceFile: /src/dovecot/src/lib/buffer.h
    functionUses: 105
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: t_buffer_create(init_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/buffer.h:106,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib/buffer.h:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - pool
    - src
    - extra_space
    argTypes:
    - pool_t
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 5
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: buffer_clone
    functionSourceFile: /src/dovecot/src/lib/buffer.h
    functionUses: 1
    functionsReached:
    - buffer_append_buf
    - buffer_create_dynamic
    linkageType: ''
    returnType: buffer_t
    signature: 'buffer_t *

      buffer_clone(pool_t pool, const buffer_t *src, size_t extra_space)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib/buffer.h:115,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib/buffer.h:115,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib/buffer.h:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - src
    - extra_space
    argTypes:
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 112
    functionDepth: 5
    functionLinenumber: 112
    functionLinenumberEnd: 120
    functionName: t_buffer_clone
    functionSourceFile: /src/dovecot/src/lib/buffer.h
    functionUses: 0
    functionsReached:
    - buffer_append_buf
    - buffer_create_dynamic
    - pool_datastack_create
    linkageType: ''
    returnType: buffer_t
    signature: 'buffer_t *

      t_buffer_clone(const buffer_t *src, size_t extra_space)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib/buffer.h:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: buffer_clear
    functionSourceFile: /src/dovecot/src/lib/buffer.h
    functionUses: 5
    functionsReached:
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: void buffer_clear(buffer_t *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - used_size_r
    argTypes:
    - buffer_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 170
    functionName: buffer_get_data
    functionSourceFile: /src/dovecot/src/lib/buffer.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void buffer_get_data(const buffer_t *buf, size_t *used_size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: buffer_get_used_size
    functionSourceFile: /src/dovecot/src/lib/buffer.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t buffer_get_used_size(const buffer_t *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: MAIL_DELIVER_USER_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_DELIVER_USER_CONTEXT(obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - obj
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: MAIL_DELIVER_STORAGE_CONTEXT
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAIL_DELIVER_STORAGE_CONTEXT(obj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_create_from_msg_temp
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:85,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:93,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:94,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:95,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:97,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:99,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_deliver_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 100
    functionName: mail_deliver_update_event
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - smtp_address_create_from_msg_temp
    - event_add_str
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void mail_deliver_update_event(struct mail_deliver_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:107,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - pool
    - old_str
    - new_str
    argTypes:
    - pool_t
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 109
    functionName: update_str_field
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    linkageType: ''
    returnType: void
    signature: void update_str_field(pool_t pool, const char **old_str, const char
      *new_str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_message_id
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:123,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:124,1
    - Dst: update_str_field
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:125,1
    - Dst: mail_get_first_header_utf8
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:127,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:128,1
    - Dst: update_str_field
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:129,1
    - Dst: mail_deliver_get_message_address
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:131,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:133,1
    - Dst: update_str_field
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:134,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:136,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:137,1
    - Dst: update_str_field
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:138,1
    - Dst: mail_get_physical_size
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:140,1
    - Dst: mail_get_virtual_size
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:142,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - fields
    - pool
    - mail
    argTypes:
    - struct mail_deliver_fields*
    - pool_t
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 111
    functionDepth: 8
    functionLinenumber: 111
    functionLinenumberEnd: 144
    functionName: mail_deliver_fields_update
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - mail_get_message_id
    - mail_get_virtual_size
    - mail_get_physical_size
    - mail_deliver_get_message_address
    - str_sanitize
    - mail_get_first_header_utf8
    - mail_get_special
    - t_strconcat
    - update_str_field
    linkageType: ''
    returnType: void
    signature: "void mail_deliver_fields_update(struct mail_deliver_fields *fields,
      pool_t pool,\n\t\t\t   struct mail *mail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_deliver_fields_update
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:154,1
    - Dst: mail_deliver_update_event
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:159,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:161,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:162,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:172,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:173,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:174,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:175,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:176,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - message
    argTypes:
    - struct mail_deliver_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 146
    functionDepth: 9
    functionLinenumber: 146
    functionLinenumberEnd: 181
    functionName: mail_deliver_ctx_get_log_var_expand_table
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - dec2str
    - timeval_diff_msecs
    - smtp_address_encode
    - io_loop_time_refresh
    - mail_deliver_fields_update
    - mail_deliver_update_event
    - p_memdup
    linkageType: ''
    returnType: struct var_expand_table
    signature: "struct var_expand_table *\nmail_deliver_ctx_get_log_var_expand_table(struct
      mail_deliver_context *ctx,\n\t\t\t\t\t  const char *message)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:192,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:193,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:195,1
    - Dst: mail_deliver_ctx_get_log_var_expand_table
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:197,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:200,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:202,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:207,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:207,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - fmt
    argTypes:
    - struct mail_deliver_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 183
    functionDepth: 11
    functionLinenumber: 183
    functionLinenumberEnd: 209
    functionName: mail_deliver_log
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - e_info
    - mail_deliver_ctx_get_log_var_expand_table
    - va_start
    - e_error
    - t_strdup_vprintf
    - var_expand
    - va_end
    linkageType: ''
    returnType: void
    signature: void mail_deliver_log(struct mail_deliver_context *ctx, const char
      *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:216,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 211
    functionDepth: 3
    functionLinenumber: 211
    functionLinenumberEnd: 220
    functionName: mail_deliver_session_init
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - p_new
    linkageType: ''
    returnType: struct mail_deliver_session
    signature: struct mail_deliver_session *mail_deliver_session_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _session
    argTypes:
    - struct mail_deliver_session**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 228
    functionName: mail_deliver_session_deinit
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 1
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void mail_deliver_session_deinit(struct mail_deliver_session **_session)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: uni_utf8_str_is_valid
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:241,1
    - Dst: mailbox_alloc_for_user
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:251,1
    - Dst: mailbox_open
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:253,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - ctx
    - name
    - box_r
    - error_r
    - error_str_r
    argTypes:
    - struct mail_deliver_save_open_context*
    - char*
    - struct mailbox**
    - enum mail_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 230
    functionDepth: 9
    functionLinenumber: 230
    functionLinenumberEnd: 257
    functionName: mail_deliver_save_open
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - uni_utf8_str_is_valid
    - mailbox_open
    - mailbox_get_last_internal_error
    - mailbox_alloc_for_user
    linkageType: ''
    returnType: int
    signature: "int mail_deliver_save_open(struct mail_deliver_save_open_context *ctx,\n\t\t\t
      \  const char *name, struct mailbox **box_r,\n\t\t\t   enum mail_error *error_r,
      const char **error_str_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_get_metadata
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:265,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:272,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:273,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:274,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:275,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - session
    - box
    argTypes:
    - struct mail_deliver_session*
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 259
    functionDepth: 8
    functionLinenumber: 259
    functionLinenumberEnd: 280
    functionName: mail_deliver_check_duplicate
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - array_push_back
    - array_foreach
    - memcmp
    - array_is_created
    - mailbox_get_metadata
    linkageType: ''
    returnType: bool
    signature: "bool mail_deliver_check_duplicate(struct mail_deliver_session *session,\n\t\t\t\t\t
      struct mailbox *box)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_save_get_transaction
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:286,1
    - Dst: mailbox_transaction_get_mailbox
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:287,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:290,1
    - Dst: mailbox_get_name
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:290,1
    - Dst: mail_deliver_check_duplicate
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:297,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:298,1
    - Dst: mailbox_save_set_guid
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:299,1
    - Dst: guid_128_to_string
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - session
    - save_ctx
    argTypes:
    - struct mail_deliver_session*
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 282
    functionDepth: 9
    functionLinenumber: 282
    functionLinenumberEnd: 301
    functionName: mail_deliver_deduplicate_guid_if_needed
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - strcmp
    - mailbox_get_name
    - mailbox_transaction_get_mailbox
    - guid_128_to_string
    - mailbox_save_set_guid
    - guid_128_generate
    - mail_deliver_check_duplicate
    - mailbox_save_get_transaction
    linkageType: ''
    returnType: void
    signature: "void mail_deliver_deduplicate_guid_if_needed(struct mail_deliver_session
      *session,\n\t\t\t\t\t     struct mail_save_context *save_ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:306,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:312,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:316,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:320,1
    - Dst: smtp_params_mail_copy
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:321,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:323,1
    - Dst: smtp_params_rcpt_copy
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:324,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:327,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:330,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:331,1
    - Dst: mail_deliver_fields_update
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:333,1
    - Dst: mail_deliver_update_event
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:334,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:337,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:338,1
    - Dst: smtp_params_rcpt_add_to_event
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - input
    argTypes:
    - struct mail_deliver_context*
    - struct mail_deliver_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 303
    functionDepth: 9
    functionLinenumber: 303
    functionLinenumberEnd: 341
    functionName: mail_deliver_init
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 2
    functionsReached:
    - i_zero
    - smtp_params_rcpt_copy
    - p_strdup
    - event_create
    - mail_deliver_update_event
    - pool_ref
    - smtp_params_mail_copy
    - smtp_address_clone
    - smtp_address_encode
    - smtp_params_rcpt_add_to_event
    - mail_deliver_fields_update
    - event_add_str
    - event_add_category
    linkageType: ''
    returnType: void
    signature: "void mail_deliver_init(struct mail_deliver_context *ctx,\n\t\t       struct
      mail_deliver_input *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:345,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_deliver_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 347
    functionName: mail_deliver_deinit
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 2
    functionsReached:
    - event_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void mail_deliver_deinit(struct mail_deliver_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mailbox_sync
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:359,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:362,1
    - Dst: mail_alloc
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:363,1
    - Dst: mail_set_uid
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:365,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:366,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - box
    - uid
    - wanted_fields
    - trans_r
    argTypes:
    - struct mailbox*
    - uint32_t
    - enum mail_fetch_field
    - struct mailbox_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 349
    functionDepth: 11
    functionLinenumber: 349
    functionLinenumberEnd: 371
    functionName: mail_deliver_open_mail
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - mail_alloc
    - mailbox_transaction_begin
    - mailbox_transaction_rollback
    - mail_set_uid
    - mailbox_sync
    - mail_free
    linkageType: ''
    returnType: struct mail
    signature: "struct mail *\nmail_deliver_open_mail(struct mailbox *box, uint32_t
      uid,\n\t\t       enum mail_fetch_field wanted_fields,\n\t\t       struct mailbox_transaction_context
      **trans_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:391,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:393,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:397,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:402,1
    - Dst: mail_deliver_save_open
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:403,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:406,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:407,1
    - Dst: mail_deliver_log
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:409,1
    - Dst: mailbox_get_storage
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:413,1
    - Dst: mailbox_transaction_begin
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:418,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:420,1
    - Dst: mailbox_keywords_create_valid
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:421,1
    - Dst: mailbox_save_alloc
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:422,1
    - Dst: mailbox_save_set_from_envelope
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:424,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:425,1
    - Dst: mailbox_save_set_flags
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:427,1
    - Dst: mailbox_header_lookup_init
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:429,1
    - Dst: mailbox_save_get_dest_mail
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:430,1
    - Dst: mail_add_temp_wanted_fields
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:431,1
    - Dst: mailbox_header_lookup_unref
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:432,1
    - Dst: mail_deliver_deduplicate_guid_if_needed
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:433,1
    - Dst: mailbox_save_using_mail
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:435,1
    - Dst: mailbox_keywords_unref
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:438,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:441,1
    - Dst: mailbox_transaction_commit_get_changes
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:443,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:452,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:452,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:454,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:455,1
    - Dst: mail_deliver_open_mail
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:456,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:459,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:460,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:461,1
    - Dst: mailbox_transaction_rollback
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:462,1
    - Dst: mail_deliver_log
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:465,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:466,1
    - Dst: mail_deliver_log
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:468,1
    - Dst: mail_storage_get_last_internal_error
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:469,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:473,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 63
    argCount: 5
    argNames:
    - ctx
    - mailbox
    - flags
    - keywords
    - storage_r
    argTypes:
    - struct mail_deliver_context*
    - char*
    - enum mail_flags
    - char**
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 373
    functionDepth: 12
    functionLinenumber: 373
    functionLinenumberEnd: 475
    functionName: mail_deliver_save
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - mailbox_save_alloc
    - mailbox_save_using_mail
    - mail_deliver_save_open
    - mailbox_transaction_commit_get_changes
    - pool_unref
    - str_sanitize
    - mailbox_header_lookup_init
    - array_count
    - array_front
    - mail_free
    - mail_get_special
    - mailbox_free
    - mailbox_transaction_begin
    - mail_storage_get_last_internal_error
    - mailbox_save_set_from_envelope
    - i_zero
    - mailbox_get_storage
    - mailbox_save_get_dest_mail
    - mailbox_header_lookup_unref
    - mailbox_transaction_rollback
    - mail_add_temp_wanted_fields
    - mailbox_save_set_flags
    - mail_deliver_deduplicate_guid_if_needed
    - mailbox_keywords_create_valid
    - smtp_address_encode
    - i_assert
    - mail_deliver_open_mail
    - strcmp
    - mailbox_keywords_unref
    - str_array_length
    - mail_deliver_log
    linkageType: ''
    returnType: int
    signature: "int mail_deliver_save(struct mail_deliver_context *ctx, const char
      *mailbox,\n\t\t      enum mail_flags flags, const char *const *keywords,\n\t\t
      \     struct mail_storage **storage_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:485,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:488,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:492,1
    - Dst: mailbox_get_last_internal_error
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:494,1
    - Dst: message_address_parse_path
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:498,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:498,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:500,1
    - Dst: smtp_address_create_from_msg
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:501,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:502,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_deliver_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 477
    functionDepth: 7
    functionLinenumber: 477
    functionLinenumberEnd: 506
    functionName: mail_deliver_get_return_address
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - mailbox_get_last_internal_error
    - strlen
    - mail_get_first_header
    - e_warning
    - pool_datastack_create
    - message_address_parse_path
    - smtp_address_create_from_msg
    - smtp_address_isnull
    linkageType: ''
    returnType: struct smtp_address
    signature: 'struct smtp_address *

      mail_deliver_get_return_address(struct mail_deliver_context *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:513,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:514,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_deliver_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 508
    functionDepth: 11
    functionLinenumber: 508
    functionLinenumberEnd: 517
    functionName: mail_deliver_get_new_message_id
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - dec2str
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *mail_deliver_get_new_message_id(struct mail_deliver_context *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - storage
    argTypes:
    - struct mail_deliver_context*
    - struct mail_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 519
    functionDepth: 2
    functionLinenumber: 519
    functionLinenumberEnd: 531
    functionName: mail_deliver_is_tempfailed
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - mail_storage_get_last_error
    linkageType: ''
    returnType: bool
    signature: "bool mail_deliver_is_tempfailed(struct mail_deliver_context *ctx,\n\t\t\t\t
      \      struct mail_storage *storage)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mail_duplicate_db_init
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:543,1
    - Dst: deliver_mail
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:545,1
    - Dst: mail_duplicate_db_deinit
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:546,1
    - Dst: mail_deliver_is_tempfailed
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:559,1
    - Dst: mail_deliver_save
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:567,1
    - Dst: mail_deliver_is_tempfailed
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:569,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:572,1
    - Dst: mail_deliver_save
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:575,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - storage_r
    argTypes:
    - struct mail_deliver_context*
    - struct mail_storage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 533
    functionDepth: 13
    functionLinenumber: 533
    functionLinenumberEnd: 578
    functionName: mail_do_deliver
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - mail_duplicate_db_deinit
    - mail_deliver_save
    - strcasecmp
    - mail_deliver_is_tempfailed
    - deliver_mail
    - mail_duplicate_db_init
    linkageType: ''
    returnType: int
    signature: "int mail_do_deliver(struct mail_deliver_context *ctx,\n\t\tstruct
      mail_storage **storage_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_DELIVER_USER_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:585,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:592,1
    - Dst: mail_deliver_fields_update
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:594,1
    - Dst: mail_deliver_update_event
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:595,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:601,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:603,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:603,1
    - Dst: mail_do_deliver
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:605,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:608,1
    - Dst: mail_storage_get_last_error
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:615,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:623,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:628,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:631,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:631,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:633,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:634,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:634,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - error_code_r
    - error_r
    argTypes:
    - struct mail_deliver_context*
    - enum mail_deliver_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 580
    functionDepth: 14
    functionLinenumber: 580
    functionLinenumberEnd: 642
    functionName: mail_deliver
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 2
    functionsReached:
    - mail_deliver_update_event
    - i_assert
    - mail_storage_get_last_error
    - e_debug
    - e_error
    - struct event_passthrough*::event
    - event_create_passthrough
    - mail_do_deliver
    - mail_deliver_fields_update
    - struct event_passthrough*::add_str
    - MAIL_DELIVER_USER_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int mail_deliver(struct mail_deliver_context *ctx,\n\t\t enum mail_deliver_error
      *error_code_r,\n\t\t const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - new_hook
    argTypes:
    - deliver_mail_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 650
    functionName: mail_deliver_hook_set
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: deliver_mail_func_t
    signature: deliver_mail_func_t *mail_deliver_hook_set(deliver_mail_func_t *new_hook)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_DELIVER_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:655,1
    - Dst: MAIL_DELIVER_USER_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:657,1
    - Dst: MAIL_DELIVER_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:659,1
    - Dst: struct mail_deliver_mailbox*::module_ctx::super::save_finish
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:661,1
    - Dst: mail_deliver_fields_update
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct mail_save_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 652
    functionDepth: 9
    functionLinenumber: 652
    functionLinenumberEnd: 669
    functionName: mail_deliver_save_finish
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - mail_deliver_fields_update
    - struct mail_deliver_mailbox*::module_ctx::super::save_finish
    - MAIL_DELIVER_STORAGE_CONTEXT
    - MAIL_DELIVER_USER_CONTEXT
    linkageType: ''
    returnType: int
    signature: int mail_deliver_save_finish(struct mail_save_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_DELIVER_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:674,1
    - Dst: MAIL_DELIVER_USER_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:676,1
    - Dst: MAIL_DELIVER_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:678,1
    - Dst: struct mail_deliver_mailbox*::module_ctx::super::copy
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:680,1
    - Dst: mail_deliver_fields_update
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - mail
    argTypes:
    - struct mail_save_context*
    - struct mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 671
    functionDepth: 9
    functionLinenumber: 671
    functionLinenumberEnd: 688
    functionName: mail_deliver_copy
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - mail_deliver_fields_update
    - struct mail_deliver_mailbox*::module_ctx::super::copy
    - MAIL_DELIVER_STORAGE_CONTEXT
    - MAIL_DELIVER_USER_CONTEXT
    linkageType: ''
    returnType: int
    signature: int mail_deliver_copy(struct mail_save_context *ctx, struct mail *mail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_DELIVER_USER_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:694,1
    - Dst: mailbox_alloc
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:706,1
    - Dst: mail_deliver_open_mail
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:707,1
    - Dst: mail_get_special
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:709,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:713,1
    - Dst: mail_free
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:714,1
    - Dst: mailbox_transaction_commit
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:715,1
    - Dst: mailbox_free
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:719,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - orig_box
    - uid
    argTypes:
    - struct mailbox*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 690
    functionDepth: 12
    functionLinenumber: 690
    functionLinenumberEnd: 720
    functionName: mail_deliver_fields_update_post_commit
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - mailbox_free
    - mailbox_alloc
    - mailbox_transaction_commit
    - mail_free
    - mail_get_special
    - mail_deliver_open_mail
    - MAIL_DELIVER_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_deliver_fields_update_post_commit(struct mailbox *orig_box,
      uint32_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_DELIVER_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:727,1
    - Dst: MAIL_DELIVER_USER_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:729,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:733,1
    - Dst: struct mail_deliver_mailbox*::module_ctx::super::transaction_begin
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:735,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:736,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - box
    - flags
    - reason
    argTypes:
    - struct mailbox*
    - enum mailbox_transaction_flags
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 722
    functionDepth: 1
    functionLinenumber: 722
    functionLinenumberEnd: 740
    functionName: mail_deliver_transaction_begin
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - p_new
    - MAIL_DELIVER_STORAGE_CONTEXT
    - MODULE_CONTEXT_SET
    - i_assert
    - struct mail_deliver_mailbox*::module_ctx::super::transaction_begin
    - MAIL_DELIVER_USER_CONTEXT
    linkageType: ''
    returnType: struct mailbox_transaction_context
    signature: "struct mailbox_transaction_context *\nmail_deliver_transaction_begin(struct
      mailbox *box,\n\t\t\t       enum mailbox_transaction_flags flags,\n\t\t\t       const
      char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_DELIVER_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:747,1
    - Dst: MAIL_DELIVER_STORAGE_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:748,1
    - Dst: MAIL_DELIVER_USER_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:750,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:752,1
    - Dst: mail_deliver_update_event
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:763,1
    - Dst: struct mail_deliver_mailbox*::module_ctx::super::transaction_commit
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:766,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:769,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:771,1
    - Dst: mail_deliver_fields_update_post_commit
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:773,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - changes_r
    argTypes:
    - struct mailbox_transaction_context*
    - struct mail_transaction_commit_changes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 742
    functionDepth: 13
    functionLinenumber: 742
    functionLinenumberEnd: 776
    functionName: mail_deliver_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - i_assert
    - struct mail_deliver_mailbox*::module_ctx::super::transaction_commit
    - MAIL_DELIVER_STORAGE_CONTEXT
    - mail_deliver_fields_update_post_commit
    - array_count
    - array_front
    - mail_deliver_update_event
    - MAIL_DELIVER_USER_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int mail_deliver_transaction_commit(struct mailbox_transaction_context
      *ctx,\n\t\t\t\tstruct mail_transaction_commit_changes *changes_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:782,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - user
    argTypes:
    - struct mail_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 784
    functionName: mail_deliver_mail_user_created
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    linkageType: ''
    returnType: void
    signature: void mail_deliver_mail_user_created(struct mail_user *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAIL_DELIVER_USER_CONTEXT
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:791,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:798,1
    - Dst: MODULE_CONTEXT_SET
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - box
    argTypes:
    - struct mailbox*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 786
    functionDepth: 1
    functionLinenumber: 786
    functionLinenumberEnd: 807
    functionName: mail_deliver_mailbox_allocated
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 0
    functionsReached:
    - MODULE_CONTEXT_SET
    - p_new
    - MAIL_DELIVER_USER_CONTEXT
    linkageType: ''
    returnType: void
    signature: void mail_deliver_mailbox_allocated(struct mailbox *box)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mail_storage_hooks_add_internal
      Src: /src/dovecot/src/lib-lda/mail-deliver.c:816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 814
    functionDepth: 2
    functionLinenumber: 814
    functionLinenumberEnd: 817
    functionName: mail_deliver_hooks_init
    functionSourceFile: /src/dovecot/src/lib-lda/mail-deliver.c
    functionUses: 1
    functionsReached:
    - mail_storage_hooks_add_internal
    linkageType: ''
    returnType: void
    signature: void mail_deliver_hooks_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-lda/lda-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-lda/lda-settings.c:65,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/lib-lda/lda-settings.c:65,1
    - Dst: var_expand_program_create
      Src: /src/dovecot/src/lib-lda/lda-settings.c:67,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lda/lda-settings.c:68,1
    - Dst: var_expand_program_variables
      Src: /src/dovecot/src/lib-lda/lda-settings.c:71,1
    - Dst: str_array_find
      Src: /src/dovecot/src/lib-lda/lda-settings.c:72,1
    - Dst: var_expand_program_free
      Src: /src/dovecot/src/lib-lda/lda-settings.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - _set
    - pool
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 57
    functionDepth: 11
    functionLinenumber: 57
    functionLinenumberEnd: 76
    functionName: lda_settings_check
    functionSourceFile: /src/dovecot/src/lib-lda/lda-settings.c
    functionUses: 0
    functionsReached:
    - str_array_find
    - p_strdup
    - var_expand_program_create
    - t_strdup_printf
    - my_hostdomain
    - var_expand_program_free
    - var_expand_program_variables
    linkageType: ''
    returnType: bool
    signature: "bool lda_settings_check(void *_set, pool_t pool,\n\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-lda/mail-send.c:32,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:37,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-lda/mail-send.c:38,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-lda/mail-send.c:43,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-lda/mail-send.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mail
    - recipient
    - reason
    argTypes:
    - struct mail*
    - struct smtp_address*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 26
    functionDepth: 5
    functionLinenumber: 26
    functionLinenumberEnd: 46
    functionName: get_var_expand_table
    functionSourceFile: /src/dovecot/src/lib-lda/mail-send.c
    functionUses: 16
    functionsReached:
    - memcpy
    - mail_get_first_header
    - smtp_address_encode
    - str_sanitize
    - t_malloc_no0
    linkageType: ''
    returnType: struct var_expand_table
    signature: "struct var_expand_table *\nget_var_expand_table(struct mail *mail,\n\t\t
      \    const struct smtp_address *recipient,\n\t\t     const char *reason)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-lda/mail-send.c:64,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-lda/mail-send.c:67,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-lda/mail-send.c:68,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-lda/mail-send.c:69,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:71,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:72,1
    - Dst: mail_deliver_get_return_address
      Src: /src/dovecot/src/lib-lda/mail-send.c:76,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-lda/mail-send.c:77,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-lda/mail-send.c:78,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:80,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:81,1
    - Dst: mail_user_get_postmaster_address
      Src: /src/dovecot/src/lib-lda/mail-send.c:85,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lda/mail-send.c:86,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:88,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-lda/mail-send.c:92,1
    - Dst: mail_event
      Src: /src/dovecot/src/lib-lda/mail-send.c:92,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-lda/mail-send.c:93,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:94,1
    - Dst: get_var_expand_table
      Src: /src/dovecot/src/lib-lda/mail-send.c:97,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-lda/mail-send.c:101,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-lda/mail-send.c:102,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-lda/mail-send.c:103,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-lda/mail-send.c:104,1
    - Dst: mail_deliver_get_new_message_id
      Src: /src/dovecot/src/lib-lda/mail-send.c:106,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-lda/mail-send.c:107,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-lda/mail-send.c:109,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:110,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:111,1
    - Dst: message_date_create
      Src: /src/dovecot/src/lib-lda/mail-send.c:111,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:112,1
    - Dst: message_address_write
      Src: /src/dovecot/src/lib-lda/mail-send.c:113,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:114,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:115,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-lda/mail-send.c:115,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:116,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:117,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:122,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-lda/mail-send.c:123,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lda/mail-send.c:125,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:129,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:131,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:132,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:133,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:136,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:137,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:138,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:139,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-lda/mail-send.c:141,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lda/mail-send.c:143,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:147,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:152,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:155,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-lda/mail-send.c:156,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:157,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:158,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-lda/mail-send.c:159,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:160,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:161,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:164,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:167,1
    - Dst: mail_get_first_header
      Src: /src/dovecot/src/lib-lda/mail-send.c:169,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:170,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:171,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-lda/mail-send.c:172,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:175,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:176,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-lda/mail-send.c:179,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:182,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-lda/mail-send.c:183,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-lda/mail-send.c:183,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-lda/mail-send.c:183,1
    - Dst: mail_get_hdr_stream
      Src: /src/dovecot/src/lib-lda/mail-send.c:185,1
    - Dst: i_stream_create_header_filter
      Src: /src/dovecot/src/lib-lda/mail-send.c:194,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-lda/mail-send.c:197,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-lda/mail-send.c:200,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-lda/mail-send.c:201,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-lda/mail-send.c:204,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-lda/mail-send.c:205,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-lda/mail-send.c:206,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-lda/mail-send.c:206,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-lda/mail-send.c:206,1
    - Dst: smtp_submit_run
      Src: /src/dovecot/src/lib-lda/mail-send.c:207,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-lda/mail-send.c:208,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:210,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:211,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-lda/mail-send.c:213,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:215,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-lda/mail-send.c:216,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-lda/mail-send.c:218,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 85
    argCount: 3
    argNames:
    - ctx
    - recipient
    - reason
    argTypes:
    - struct mail_deliver_context*
    - struct smtp_address*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 48
    functionDepth: 12
    functionLinenumber: 48
    functionLinenumberEnd: 220
    functionName: mail_send_rejection
    functionSourceFile: /src/dovecot/src/lib-lda/mail-send.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - message_address_write
    - str_len
    - t_strdup_printf
    - message_date_create
    - str_sanitize
    - smtp_address_isnull
    - t_str_new
    - mail_get_first_header
    - mail_user_get_postmaster_address
    - o_stream_nsend
    - smtp_submit_deinit
    - mail_deliver_get_new_message_id
    - i_zero
    - smtp_submit_run
    - str_data
    - mail_deliver_get_return_address
    - o_stream_nsend_istream
    - strcasecmp
    - i_stream_create_header_filter
    - e_error
    - smtp_address_encode
    - smtp_submit_send
    - N_ELEMENTS
    - e_info
    - e_debug
    - mail_event
    - mail_get_hdr_stream
    - get_var_expand_table
    - str_truncate
    - i_stream_unref
    - str_append
    - smtp_submit_add_rcpt
    - var_expand
    - smtp_submit_init_simple
    linkageType: ''
    returnType: int
    signature: "int mail_send_rejection(struct mail_deliver_context *ctx,\n\t\t\tconst
      struct smtp_address *recipient,\n\t\t\tconst char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/master/service-anvil.c:21,1
    - Dst: io_remove
      Src: /src/dovecot/src/master/service-anvil.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - anvil
    argTypes:
    - struct service_anvil_global*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 5
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: service_list_anvil_discard_input_stop
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - io_remove
    linkageType: ''
    returnType: void
    signature: void service_list_anvil_discard_input_stop(struct service_anvil_global
      *anvil)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dovecot/src/master/service-anvil.c:31,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:33,1
    - Dst: service_list_anvil_discard_input_stop
      Src: /src/dovecot/src/master/service-anvil.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - anvil
    - fd
    argTypes:
    - struct service_anvil_global*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 6
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: anvil_input_fd_discard
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - service_list_anvil_discard_input_stop
    - i_error
    - read
    linkageType: ''
    returnType: void
    signature: void anvil_input_fd_discard(struct service_anvil_global *anvil, int
      fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: anvil_input_fd_discard
      Src: /src/dovecot/src/master/service-anvil.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - anvil
    argTypes:
    - struct service_anvil_global*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 7
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: anvil_input_blocking_discard
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - anvil_input_fd_discard
    linkageType: ''
    returnType: void
    signature: void anvil_input_blocking_discard(struct service_anvil_global *anvil)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: anvil_input_fd_discard
      Src: /src/dovecot/src/master/service-anvil.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - anvil
    argTypes:
    - struct service_anvil_global*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 7
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: anvil_input_nonblocking_discard
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - anvil_input_fd_discard
    linkageType: ''
    returnType: void
    signature: void anvil_input_nonblocking_discard(struct service_anvil_global *anvil)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/master/service-anvil.c:53,1
    - Dst: io_add
      Src: /src/dovecot/src/master/service-anvil.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - anvil
    argTypes:
    - struct service_anvil_global*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: service_list_anvil_discard_input
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - io_add
    linkageType: ''
    returnType: void
    signature: void service_list_anvil_discard_input(struct service_anvil_global *anvil)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/dovecot/src/master/service-anvil.c:63,1
    - Dst: strlen
      Src: /src/dovecot/src/master/service-anvil.c:63,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-anvil.c:65,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-anvil.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-anvil.c:73,1
    - Dst: strlen
      Src: /src/dovecot/src/master/service-anvil.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - error_r
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 59
    functionDepth: 11
    functionLinenumber: 59
    functionLinenumberEnd: 75
    functionName: anvil_send_handshake
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - strlen
    - i_assert
    - t_strdup_printf
    - write
    linkageType: ''
    returnType: int
    signature: int anvil_send_handshake(int fd, const char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-anvil.c:82,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-anvil.c:82,1
    - Dst: write
      Src: /src/dovecot/src/master/service-anvil.c:83,1
    - Dst: strlen
      Src: /src/dovecot/src/master/service-anvil.c:83,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-anvil.c:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - fd
    - process
    argTypes:
    - int
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 77
    functionDepth: 11
    functionLinenumber: 77
    functionLinenumberEnd: 90
    functionName: service_process_write_anvil_kill
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - dec2str
    - strlen
    - t_strdup_printf
    - write
    - e_error
    linkageType: ''
    returnType: int
    signature: int service_process_write_anvil_kill(int fd, struct service_process
      *process)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: service_list_anvil_discard_input
      Src: /src/dovecot/src/master/service-anvil.c:97,1
    - Dst: service_lookup_type
      Src: /src/dovecot/src/master/service-anvil.c:99,1
    - Dst: service_process_create
      Src: /src/dovecot/src/master/service-anvil.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: service_anvil_monitor_start
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - service_list_anvil_discard_input
    - service_lookup_type
    - service_process_create
    linkageType: ''
    returnType: void
    signature: void service_anvil_monitor_start(struct service_list *service_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: service_list_anvil_discard_input_stop
      Src: /src/dovecot/src/master/service-anvil.c:112,1
    - Dst: anvil_send_handshake
      Src: /src/dovecot/src/master/service-anvil.c:114,1
    - Dst: anvil_send_handshake
      Src: /src/dovecot/src/master/service-anvil.c:115,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-anvil.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 104
    functionDepth: 12
    functionLinenumber: 104
    functionLinenumberEnd: 117
    functionName: service_anvil_process_created
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - e_error
    - service_list_anvil_discard_input_stop
    - anvil_send_handshake
    linkageType: ''
    returnType: void
    signature: void service_anvil_process_created(struct service_process *process)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-anvil.c:121,1
    - Dst: service_list_anvil_discard_input
      Src: /src/dovecot/src/master/service-anvil.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 128
    functionName: service_anvil_process_destroyed
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - service_list_anvil_discard_input
    - i_assert
    linkageType: ''
    returnType: void
    signature: void service_anvil_process_destroyed(struct service_process *process)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fd_send
      Src: /src/dovecot/src/master/service-anvil.c:138,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:141,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 144
    functionName: service_anvil_send_log_fd
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - i_error
    - fd_send
    linkageType: ''
    returnType: void
    signature: void service_anvil_send_log_fd(struct service_list *service_list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/master/service-anvil.c:150,1
    - Dst: pipe
      Src: /src/dovecot/src/master/service-anvil.c:151,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/service-anvil.c:152,1
    - Dst: pipe
      Src: /src/dovecot/src/master/service-anvil.c:153,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/service-anvil.c:154,1
    - Dst: pipe
      Src: /src/dovecot/src/master/service-anvil.c:155,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/service-anvil.c:156,1
    - Dst: socketpair
      Src: /src/dovecot/src/master/service-anvil.c:157,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/service-anvil.c:158,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/master/service-anvil.c:159,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/master/service-anvil.c:160,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/master/service-anvil.c:161,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-anvil.c:163,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-anvil.c:164,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-anvil.c:165,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-anvil.c:166,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-anvil.c:167,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-anvil.c:168,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-anvil.c:169,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-anvil.c:170,1
    - Dst: service_process_notify_init
      Src: /src/dovecot/src/master/service-anvil.c:173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 176
    functionName: service_anvil_global_init
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - fd_close_on_exec
    - fd_set_nonblock
    - service_process_notify_init
    - i_fatal
    - i_new
    - socketpair
    - pipe
    linkageType: ''
    returnType: void
    signature: void service_anvil_global_init(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: service_list_anvil_discard_input_stop
      Src: /src/dovecot/src/master/service-anvil.c:182,1
    - Dst: service_process_notify_deinit
      Src: /src/dovecot/src/master/service-anvil.c:183,1
    - Dst: close
      Src: /src/dovecot/src/master/service-anvil.c:184,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:185,1
    - Dst: close
      Src: /src/dovecot/src/master/service-anvil.c:186,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:187,1
    - Dst: close
      Src: /src/dovecot/src/master/service-anvil.c:188,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:189,1
    - Dst: close
      Src: /src/dovecot/src/master/service-anvil.c:190,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:191,1
    - Dst: close
      Src: /src/dovecot/src/master/service-anvil.c:192,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:193,1
    - Dst: close
      Src: /src/dovecot/src/master/service-anvil.c:194,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:195,1
    - Dst: close
      Src: /src/dovecot/src/master/service-anvil.c:196,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:197,1
    - Dst: close
      Src: /src/dovecot/src/master/service-anvil.c:198,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-anvil.c:199,1
    - Dst: i_free
      Src: /src/dovecot/src/master/service-anvil.c:200,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 178
    functionDepth: 6
    functionLinenumber: 178
    functionLinenumberEnd: 203
    functionName: service_anvil_global_deinit
    functionSourceFile: /src/dovecot/src/master/service-anvil.c
    functionUses: 0
    functionsReached:
    - i_error
    - service_process_notify_deinit
    - service_list_anvil_discard_input_stop
    - i_free
    - close
    linkageType: ''
    returnType: void
    signature: void service_anvil_global_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - unset
    - ','
    - message
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: i_sd_notify
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_sd_notify(unset, message)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - unset
    - ','
    - message
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: i_sd_notifyf
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i_sd_notifyf(unset, message, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/master/main.c:83,1
    - Dst: strrchr
      Src: /src/dovecot/src/master/main.c:87,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/main.c:91,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/master/main.c:93,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/main.c:94,1
    - Dst: execv_const
      Src: /src/dovecot/src/master/main.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 74
    functionDepth: 11
    functionLinenumber: 74
    functionLinenumberEnd: 96
    functionName: process_exec
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - strrchr
    - t_strdup_printf
    - t_strsplit
    - t_strconcat
    - execv_const
    linkageType: ''
    returnType: void
    signature: void process_exec(const char *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_getpwnam
      Src: /src/dovecot/src/master/main.c:109,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/main.c:111,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/main.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - user
    - uid_r
    - gid_r
    - error_r
    argTypes:
    - char*
    - uid_t*
    - gid_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 98
    functionDepth: 11
    functionLinenumber: 98
    functionLinenumberEnd: 121
    functionName: get_uidgid
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - i_getpwnam
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int get_uidgid(const char *user, uid_t *uid_r, gid_t *gid_r,\n\t       const
      char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_getgrnam
      Src: /src/dovecot/src/master/main.c:132,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/main.c:134,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/main.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - group
    - gid_r
    - error_r
    argTypes:
    - char*
    - gid_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 123
    functionDepth: 11
    functionLinenumber: 123
    functionLinenumberEnd: 143
    functionName: get_gid
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - i_getgrnam
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: int get_gid(const char *group, gid_t *gid_r, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VA_COPY
      Src: /src/dovecot/src/master/main.c:151,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/master/main.c:156,1
    - Dst: log_error_buffer_add
      Src: /src/dovecot/src/master/main.c:158,1
    - Dst: va_end
      Src: /src/dovecot/src/master/main.c:159,1
    - Dst: orig_error_callback
      Src: /src/dovecot/src/master/main.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - fmt
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 146
    functionDepth: 11
    functionLinenumber: 146
    functionLinenumberEnd: 162
    functionName: master_error_handler
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - VA_COPY
    - log_error_buffer_add
    - t_strdup_vprintf
    - orig_error_callback
    - va_end
    linkageType: ''
    returnType: void
    signature: "void master_error_handler(const struct failure_context *ctx,\n\t\t
      \    const char *fmt, va_list args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_to_pid
      Src: /src/dovecot/src/master/main.c:175,1
    - Dst: i_unreached
      Src: /src/dovecot/src/master/main.c:176,1
    - Dst: getpid
      Src: /src/dovecot/src/master/main.c:177,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/main.c:180,1
    - Dst: open
      Src: /src/dovecot/src/master/main.c:181,1
    - Dst: VA_COPY
      Src: /src/dovecot/src/master/main.c:183,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/master/main.c:184,1
    - Dst: va_end
      Src: /src/dovecot/src/master/main.c:185,1
    - Dst: write_full
      Src: /src/dovecot/src/master/main.c:186,1
    - Dst: strlen
      Src: /src/dovecot/src/master/main.c:186,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/main.c:187,1
    - Dst: orig_fatal_callback
      Src: /src/dovecot/src/master/main.c:191,1
    - Dst: abort
      Src: /src/dovecot/src/master/main.c:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - format
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 165
    functionDepth: 11
    functionLinenumber: 165
    functionLinenumberEnd: 193
    functionName: master_fatal_callback
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - getpid
    - i_unreached
    - str_to_pid
    - write_full
    - VA_COPY
    - open
    - strlen
    - i_close_fd
    - orig_fatal_callback
    - t_strdup_vprintf
    - abort
    - t_strconcat
    - va_end
    linkageType: ''
    returnType: void
    signature: "void master_fatal_callback(const struct failure_context *ctx,\n\t\t
      \     const char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VA_COPY
      Src: /src/dovecot/src/master/main.c:201,1
    - Dst: fprintf
      Src: /src/dovecot/src/master/main.c:202,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/master/main.c:203,1
    - Dst: va_end
      Src: /src/dovecot/src/master/main.c:204,1
    - Dst: orig_fatal_callback
      Src: /src/dovecot/src/master/main.c:205,1
    - Dst: abort
      Src: /src/dovecot/src/master/main.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - fmt
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 196
    functionDepth: 11
    functionLinenumber: 196
    functionLinenumberEnd: 207
    functionName: startup_fatal_handler
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - VA_COPY
    - orig_fatal_callback
    - t_strdup_vprintf
    - fprintf
    - abort
    - va_end
    linkageType: ''
    returnType: void
    signature: "void startup_fatal_handler(const struct failure_context *ctx,\n\t\t
      \     const char *fmt, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VA_COPY
      Src: /src/dovecot/src/master/main.c:215,1
    - Dst: fprintf
      Src: /src/dovecot/src/master/main.c:216,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/master/main.c:217,1
    - Dst: va_end
      Src: /src/dovecot/src/master/main.c:218,1
    - Dst: orig_error_callback
      Src: /src/dovecot/src/master/main.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - fmt
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 210
    functionDepth: 11
    functionLinenumber: 210
    functionLinenumberEnd: 220
    functionName: startup_error_handler
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - VA_COPY
    - t_strdup_vprintf
    - orig_error_callback
    - fprintf
    - va_end
    linkageType: ''
    returnType: void
    signature: "void startup_error_handler(const struct failure_context *ctx,\n\t\t
      \     const char *fmt, va_list args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VA_COPY
      Src: /src/dovecot/src/master/main.c:229,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/master/main.c:232,1
    - Dst: i_array_init
      Src: /src/dovecot/src/master/main.c:233,1
    - Dst: array_append_space
      Src: /src/dovecot/src/master/main.c:235,1
    - Dst: p_strdup_vprintf
      Src: /src/dovecot/src/master/main.c:237,1
    - Dst: va_end
      Src: /src/dovecot/src/master/main.c:238,1
    - Dst: orig_error_callback
      Src: /src/dovecot/src/master/main.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - fmt
    - args
    argTypes:
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 223
    functionDepth: 10
    functionLinenumber: 223
    functionLinenumberEnd: 241
    functionName: startup_early_error_handler
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - array_append_space
    - VA_COPY
    - orig_error_callback
    - p_strdup_vprintf
    - va_end
    linkageType: ''
    returnType: void
    signature: "void startup_early_error_handler(const struct failure_context *ctx,\n\t\t\t
      \   const char *fmt, va_list args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/master/main.c:251,1
    - Dst: array_foreach
      Src: /src/dovecot/src/master/main.c:252,1
    - Dst: i_log_type
      Src: /src/dovecot/src/master/main.c:254,1
    - Dst: array_free
      Src: /src/dovecot/src/master/main.c:256,1
    - Dst: pool_unref
      Src: /src/dovecot/src/master/main.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 258
    functionName: startup_early_errors_flush
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_log_type
    - array_foreach
    - pool_unref
    - array_free
    linkageType: ''
    returnType: void
    signature: void startup_early_errors_flush(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/main.c:267,1
    - Dst: open
      Src: /src/dovecot/src/master/main.c:268,1
    - Dst: read
      Src: /src/dovecot/src/master/main.c:272,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:274,1
    - Dst: fprintf
      Src: /src/dovecot/src/master/main.c:277,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/main.c:281,1
    - Dst: i_unlink
      Src: /src/dovecot/src/master/main.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct master_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 260
    functionDepth: 8
    functionLinenumber: 260
    functionLinenumberEnd: 283
    functionName: fatal_log_check
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - i_error
    - i_close_fd
    - open
    - read
    - i_unlink
    - fprintf
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void fatal_log_check(const struct master_settings *set)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/master/main.c:294,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:298,1
    - Dst: read
      Src: /src/dovecot/src/master/main.c:301,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:304,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:306,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/master/main.c:312,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:313,1
    - Dst: getpid
      Src: /src/dovecot/src/master/main.c:316,1
    - Dst: kill
      Src: /src/dovecot/src/master/main.c:317,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/main.c:320,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - path
    - pid_r
    argTypes:
    - char*
    - pid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 285
    functionDepth: 4
    functionLinenumber: 285
    functionLinenumberEnd: 322
    functionName: pid_file_read
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 2
    functionsReached:
    - getpid
    - i_error
    - str_to_pid
    - i_close_fd
    - i_fatal
    - open
    - read
    - kill
    linkageType: ''
    returnType: bool
    signature: bool pid_file_read(const char *path, pid_t *pid_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pid_file_read
      Src: /src/dovecot/src/master/main.c:328,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:331,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/main.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 324
    functionDepth: 6
    functionLinenumber: 324
    functionLinenumberEnd: 333
    functionName: pid_file_check_running
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - dec2str
    - i_fatal
    - pid_file_read
    linkageType: ''
    returnType: void
    signature: void pid_file_check_running(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/main.c:340,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/main.c:340,1
    - Dst: getpid
      Src: /src/dovecot/src/master/main.c:340,1
    - Dst: open
      Src: /src/dovecot/src/master/main.c:342,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:344,1
    - Dst: write_full
      Src: /src/dovecot/src/master/main.c:345,1
    - Dst: strlen
      Src: /src/dovecot/src/master/main.c:345,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:346,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/main.c:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 335
    functionDepth: 8
    functionLinenumber: 335
    functionLinenumberEnd: 348
    functionName: create_pid_file
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - dec2str
    - getpid
    - write_full
    - strlen
    - i_fatal
    - open
    - i_close_fd
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void create_pid_file(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/main.c:354,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/master/main.c:355,1
    - Dst: symlink
      Src: /src/dovecot/src/master/main.c:357,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct master_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 350
    functionDepth: 8
    functionLinenumber: 350
    functionLinenumberEnd: 361
    functionName: create_config_symlink
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - symlink
    - i_unlink_if_exists
    - t_strconcat
    - i_error
    linkageType: ''
    returnType: void
    signature: void create_config_symlink(const struct master_settings *set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_instance_list_set_name
      Src: /src/dovecot/src/master/main.c:367,1
    - Dst: master_instance_list_update
      Src: /src/dovecot/src/master/main.c:371,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/main.c:374,1
    - Dst: timeout_add
      Src: /src/dovecot/src/master/main.c:375,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/master/main.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct master_instance_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 363
    functionDepth: 6
    functionLinenumber: 363
    functionLinenumberEnd: 377
    functionName: instance_update_now
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - master_instance_list_set_name
    - timeout_add
    - master_instance_list_update
    - i_rand_limit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void instance_update_now(struct master_instance_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/main.c:383,1
    - Dst: master_instance_list_init
      Src: /src/dovecot/src/master/main.c:384,1
    - Dst: instance_update_now
      Src: /src/dovecot/src/master/main.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct master_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 379
    functionDepth: 8
    functionLinenumber: 379
    functionLinenumberEnd: 386
    functionName: instance_update
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - instance_update_now
    - master_instance_list_init
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void instance_update(const struct master_settings *set)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:399,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/main.c:400,1
    - Dst: hostpid_init
      Src: /src/dovecot/src/master/main.c:403,1
    - Dst: service_process_create
      Src: /src/dovecot/src/master/main.c:407,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:408,1
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:410,1
    - Dst: i_zero
      Src: /src/dovecot/src/master/main.c:415,1
    - Dst: services_get_config_socket_path
      Src: /src/dovecot/src/master/main.c:416,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/master/main.c:421,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:423,1
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:424,1
    - Dst: settings_get
      Src: /src/dovecot/src/master/main.c:427,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/master/main.c:427,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/main.c:430,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:431,1
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:432,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/main.c:435,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/main.c:437,1
    - Dst: services_create
      Src: /src/dovecot/src/master/main.c:439,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:441,1
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:442,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/main.c:443,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/main.c:446,1
    - Dst: p_strdup
      Src: /src/dovecot/src/master/main.c:448,1
    - Dst: services_monitor_stop
      Src: /src/dovecot/src/master/main.c:452,1
    - Dst: services_listen_using
      Src: /src/dovecot/src/master/main.c:453,1
    - Dst: services_monitor_start
      Src: /src/dovecot/src/master/main.c:454,1
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:455,1
    - Dst: service_lookup_type
      Src: /src/dovecot/src/master/main.c:460,1
    - Dst: service_process_destroy
      Src: /src/dovecot/src/master/main.c:463,1
    - Dst: service_process_destroy
      Src: /src/dovecot/src/master/main.c:465,1
    - Dst: services_destroy
      Src: /src/dovecot/src/master/main.c:467,1
    - Dst: services_monitor_start
      Src: /src/dovecot/src/master/main.c:470,1
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:471,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 56
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 388
    functionDepth: 6
    functionLinenumber: 388
    functionLinenumberEnd: 472
    functionName: sig_settings_reload
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - master_service_settings_read
    - services_monitor_start
    - services_destroy
    - fd_close_on_exec
    - i_close_fd
    - i_sd_notify
    - master_service_get_event
    - services_get_config_socket_path
    - service_lookup_type
    - hostpid_init
    - service_process_create
    - service_process_destroy
    - i_zero
    - services_monitor_stop
    - services_listen_using
    - i_error
    - i_warning
    - settings_free
    - services_create
    - settings_get
    linkageType: ''
    returnType: void
    signature: "void sig_settings_reload(const siginfo_t *si ATTR_UNUSED,\n\t\t    void
      *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: service_signal
      Src: /src/dovecot/src/master/main.c:478,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/master/main.c:481,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/master/main.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 474
    functionDepth: 2
    functionLinenumber: 474
    functionLinenumberEnd: 483
    functionName: sig_log_reopen
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - master_service_init_log
    - service_signal
    - i_set_fatal_handler
    linkageType: ''
    returnType: void
    signature: void sig_log_reopen(const siginfo_t *si ATTR_UNUSED, void *context
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: services_monitor_reap_children
      Src: /src/dovecot/src/master/main.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 489
    functionName: sig_reap_children
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - services_monitor_reap_children
    linkageType: ''
    returnType: void
    signature: void sig_reap_children(const siginfo_t *si ATTR_UNUSED, void *context
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_warning
      Src: /src/dovecot/src/master/main.c:493,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/main.c:494,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/main.c:495,1
    - Dst: lib_signal_code_to_str
      Src: /src/dovecot/src/master/main.c:496,1
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:500,1
    - Dst: master_service_stop
      Src: /src/dovecot/src/master/main.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - si
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 491
    functionDepth: 12
    functionLinenumber: 491
    functionLinenumberEnd: 502
    functionName: sig_die
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - dec2str
    - master_service_stop
    - lib_signal_code_to_str
    - i_warning
    - i_sd_notify
    linkageType: ''
    returnType: void
    signature: void sig_die(const siginfo_t *si, void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/master/main.c:510,1
    - Dst: master_service_settings_read
      Src: /src/dovecot/src/master/main.c:516,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:518,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/main.c:520,1
    - Dst: settings_get_or_fatal
      Src: /src/dovecot/src/master/main.c:521,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/master/main.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 504
    functionDepth: 6
    functionLinenumber: 504
    functionLinenumberEnd: 523
    functionName: master_settings_read
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - i_zero
    - master_service_settings_read
    - fd_close_on_exec
    - i_fatal
    - master_service_get_event
    - settings_get_or_fatal
    linkageType: ''
    returnType: struct master_settings
    signature: struct master_settings *master_settings_read(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/master/main.c:528,1
    - Dst: str_append
      Src: /src/dovecot/src/master/main.c:532,1
    - Dst: str_append
      Src: /src/dovecot/src/master/main.c:534,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/main.c:536,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/master/main.c:537,1
    - Dst: restrict_get_core_limit
      Src: /src/dovecot/src/master/main.c:540,1
    - Dst: str_append
      Src: /src/dovecot/src/master/main.c:543,1
    - Dst: stat
      Src: /src/dovecot/src/master/main.c:544,1
    - Dst: stat
      Src: /src/dovecot/src/master/main.c:546,1
    - Dst: i_info
      Src: /src/dovecot/src/master/main.c:548,1
    - Dst: str_c
      Src: /src/dovecot/src/master/main.c:548,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - protocols
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 525
    functionDepth: 8
    functionLinenumber: 525
    functionLinenumberEnd: 549
    functionName: main_log_startup
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - t_strarray_join
    - stat
    - str_append
    - i_info
    - restrict_get_core_limit
    linkageType: ''
    returnType: void
    signature: void main_log_startup(const char *const *protocols)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/main.c:564,1
    - Dst: restrict_get_process_limit
      Src: /src/dovecot/src/master/main.c:567,1
    - Dst: restrict_process_count
      Src: /src/dovecot/src/master/main.c:569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 570
    functionName: master_set_process_limit
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - restrict_get_process_limit
    - restrict_process_count
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void master_set_process_limit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_set_process_limit
      Src: /src/dovecot/src/master/main.c:574,1
    - Dst: drop_capabilities
      Src: /src/dovecot/src/master/main.c:575,1
    - Dst: umask
      Src: /src/dovecot/src/master/main.c:578,1
    - Dst: main_log_startup
      Src: /src/dovecot/src/master/main.c:580,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/master/main.c:580,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/master/main.c:582,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/master/main.c:583,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/master/main.c:584,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/master/main.c:585,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/master/main.c:587,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/master/main.c:589,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/master/main.c:591,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/master/main.c:592,1
    - Dst: create_pid_file
      Src: /src/dovecot/src/master/main.c:594,1
    - Dst: create_config_symlink
      Src: /src/dovecot/src/master/main.c:595,1
    - Dst: instance_update
      Src: /src/dovecot/src/master/main.c:596,1
    - Dst: master_clients_init
      Src: /src/dovecot/src/master/main.c:597,1
    - Dst: services_monitor_start
      Src: /src/dovecot/src/master/main.c:599,1
    - Dst: i_sd_notifyf
      Src: /src/dovecot/src/master/main.c:600,1
    - Dst: getpid
      Src: /src/dovecot/src/master/main.c:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct master_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 572
    functionDepth: 9
    functionLinenumber: 572
    functionLinenumberEnd: 603
    functionName: main_init
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 14
    functionsReached:
    - create_pid_file
    - create_config_symlink
    - getpid
    - master_set_process_limit
    - instance_update
    - umask
    - main_log_startup
    - drop_capabilities
    - lib_signals_set_handler
    - lib_signals_init
    - services_monitor_start
    - settings_boollist_get
    - i_sd_notifyf
    - lib_signals_ignore
    - master_clients_init
    linkageType: ''
    returnType: void
    signature: void main_init(const struct master_settings *set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/master/main.c:607,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:608,1
    - Dst: close
      Src: /src/dovecot/src/master/main.c:609,1
    - Dst: i_error
      Src: /src/dovecot/src/master/main.c:610,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 613
    functionName: global_dead_pipe_close
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - close
    - i_error
    linkageType: ''
    returnType: void
    signature: void global_dead_pipe_close(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_clients_deinit
      Src: /src/dovecot/src/master/main.c:617,1
    - Dst: instance_update_now
      Src: /src/dovecot/src/master/main.c:618,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/main.c:619,1
    - Dst: master_instance_list_deinit
      Src: /src/dovecot/src/master/main.c:620,1
    - Dst: global_dead_pipe_close
      Src: /src/dovecot/src/master/main.c:623,1
    - Dst: services_destroy
      Src: /src/dovecot/src/master/main.c:624,1
    - Dst: i_unlink
      Src: /src/dovecot/src/master/main.c:626,1
    - Dst: i_free
      Src: /src/dovecot/src/master/main.c:627,1
    - Dst: service_anvil_global_deinit
      Src: /src/dovecot/src/master/main.c:629,1
    - Dst: service_pids_deinit
      Src: /src/dovecot/src/master/main.c:630,1
    - Dst: i_sd_notify
      Src: /src/dovecot/src/master/main.c:632,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/master/main.c:634,1
    - Dst: log_error_buffer_deinit
      Src: /src/dovecot/src/master/main.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 615
    functionDepth: 7
    functionLinenumber: 615
    functionLinenumberEnd: 636
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 19
    functionsReached:
    - instance_update_now
    - master_instance_list_deinit
    - master_clients_deinit
    - global_dead_pipe_close
    - i_unlink
    - i_sd_notify
    - i_set_error_handler
    - log_error_buffer_deinit
    - service_anvil_global_deinit
    - services_destroy
    - service_pids_deinit
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_config_path
      Src: /src/dovecot/src/master/main.c:642,1
    - Dst: t_abspath
      Src: /src/dovecot/src/master/main.c:647,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:648,1
    - Dst: p_strdup
      Src: /src/dovecot/src/master/main.c:650,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 638
    functionDepth: 9
    functionLinenumber: 638
    functionLinenumberEnd: 651
    functionName: get_full_config_path
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - p_strdup
    - t_abspath
    - master_service_get_config_path
    linkageType: ''
    returnType: char
    signature: char *get_full_config_path(struct service_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/master/main.c:657,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/main.c:662,1
    - Dst: services_throttle_time_sensitives
      Src: /src/dovecot/src/master/main.c:672,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/main.c:673,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - old_time
    - new_time
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 676
    functionName: master_time_moved
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - i_warning
    - timeval_diff_usecs
    - services_throttle_time_sensitives
    linkageType: ''
    returnType: void
    signature: "void master_time_moved(const struct timeval *old_time,\n\t\t  const
      struct timeval *new_time)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/dovecot/src/master/main.c:682,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:684,1
    - Dst: _exit
      Src: /src/dovecot/src/master/main.c:687,1
    - Dst: setsid
      Src: /src/dovecot/src/master/main.c:689,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:690,1
    - Dst: hostpid_init
      Src: /src/dovecot/src/master/main.c:693,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 678
    functionDepth: 3
    functionLinenumber: 678
    functionLinenumberEnd: 694
    functionName: daemonize
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - fork
    - setsid
    - _exit
    - i_fatal
    - hostpid_init
    linkageType: ''
    returnType: void
    signature: void daemonize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/dovecot/src/master/main.c:698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 701
    functionName: print_help
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 1
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void print_help(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/master/main.c:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 791
    functionName: print_build_options
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_build_options(void)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/master/main.c:803,1
    - Dst: getenv
      Src: /src/dovecot/src/master/main.c:804,1
    - Dst: str_to_int
      Src: /src/dovecot/src/master/main.c:807,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:809,1
    - Dst: fd_debug_verify_leaks
      Src: /src/dovecot/src/master/main.c:812,1
    - Dst: fd_debug_verify_leaks
      Src: /src/dovecot/src/master/main.c:813,1
    - Dst: fd_debug_verify_leaks
      Src: /src/dovecot/src/master/main.c:815,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/master/main.c:822,1
    - Dst: master_service_init
      Src: /src/dovecot/src/master/main.c:831,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/master/main.c:837,1
    - Dst: i_get_failure_handlers
      Src: /src/dovecot/src/master/main.c:839,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/master/main.c:841,1
    - Dst: io_loop_set_time_moved_callback
      Src: /src/dovecot/src/master/main.c:843,1
    - Dst: geteuid
      Src: /src/dovecot/src/master/main.c:845,1
    - Dst: getegid
      Src: /src/dovecot/src/master/main.c:846,1
    - Dst: master_getopt
      Src: /src/dovecot/src/master/main.c:848,1
    - Dst: master_service_parse_option
      Src: /src/dovecot/src/master/main.c:864,1
    - Dst: print_help
      Src: /src/dovecot/src/master/main.c:866,1
    - Dst: lib_exit
      Src: /src/dovecot/src/master/main.c:867,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/main.c:872,1
    - Dst: t_new
      Src: /src/dovecot/src/master/main.c:877,1
    - Dst: master_service_get_config_path
      Src: /src/dovecot/src/master/main.c:881,1
    - Dst: execv_const
      Src: /src/dovecot/src/master/main.c:883,1
    - Dst: execv
      Src: /src/dovecot/src/master/main.c:890,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:891,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/main.c:892,1
    - Dst: printf
      Src: /src/dovecot/src/master/main.c:893,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/main.c:895,1
    - Dst: printf
      Src: /src/dovecot/src/master/main.c:896,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/master/main.c:896,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/main.c:898,1
    - Dst: print_build_options
      Src: /src/dovecot/src/master/main.c:899,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/main.c:901,1
    - Dst: fprintf
      Src: /src/dovecot/src/master/main.c:902,1
    - Dst: execv
      Src: /src/dovecot/src/master/main.c:904,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:905,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/main.c:906,1
    - Dst: print_help
      Src: /src/dovecot/src/master/main.c:907,1
    - Dst: print_help
      Src: /src/dovecot/src/master/main.c:910,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:911,1
    - Dst: pipe
      Src: /src/dovecot/src/master/main.c:914,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:915,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/main.c:916,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/main.c:917,1
    - Dst: master_settings_read
      Src: /src/dovecot/src/master/main.c:919,1
    - Dst: t_askpass
      Src: /src/dovecot/src/master/main.c:922,1
    - Dst: i_strconcat
      Src: /src/dovecot/src/master/main.c:926,1
    - Dst: lib_set_clean_exit
      Src: /src/dovecot/src/master/main.c:928,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/master/main.c:929,1
    - Dst: dup2
      Src: /src/dovecot/src/master/main.c:931,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:932,1
    - Dst: i_failure_have_stdout_logs
      Src: /src/dovecot/src/master/main.c:933,1
    - Dst: dup2
      Src: /src/dovecot/src/master/main.c:934,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:935,1
    - Dst: startup_early_errors_flush
      Src: /src/dovecot/src/master/main.c:937,1
    - Dst: i_get_failure_handlers
      Src: /src/dovecot/src/master/main.c:938,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/master/main.c:940,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/master/main.c:941,1
    - Dst: pid_file_check_running
      Src: /src/dovecot/src/master/main.c:943,1
    - Dst: master_settings_do_fixes
      Src: /src/dovecot/src/master/main.c:944,1
    - Dst: fatal_log_check
      Src: /src/dovecot/src/master/main.c:945,1
    - Dst: master_service_get_import_environment_keyvals
      Src: /src/dovecot/src/master/main.c:948,1
    - Dst: master_service_import_environment
      Src: /src/dovecot/src/master/main.c:949,1
    - Dst: master_service_env_clean
      Src: /src/dovecot/src/master/main.c:950,1
    - Dst: service_pids_init
      Src: /src/dovecot/src/master/main.c:954,1
    - Dst: service_anvil_global_init
      Src: /src/dovecot/src/master/main.c:955,1
    - Dst: services_create
      Src: /src/dovecot/src/master/main.c:956,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:957,1
    - Dst: get_full_config_path
      Src: /src/dovecot/src/master/main.c:959,1
    - Dst: services_listen
      Src: /src/dovecot/src/master/main.c:962,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:963,1
    - Dst: chdir
      Src: /src/dovecot/src/master/main.c:965,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/main.c:966,1
    - Dst: log_error_buffer_init
      Src: /src/dovecot/src/master/main.c:968,1
    - Dst: i_set_fatal_handler
      Src: /src/dovecot/src/master/main.c:969,1
    - Dst: i_set_error_handler
      Src: /src/dovecot/src/master/main.c:970,1
    - Dst: daemonize
      Src: /src/dovecot/src/master/main.c:973,1
    - Dst: main_init
      Src: /src/dovecot/src/master/main.c:976,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/main.c:977,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 132
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 793
    functionDepth: 10
    functionLinenumber: 793
    functionLinenumberEnd: 978
    functionName: main
    functionSourceFile: /src/dovecot/src/master/main.c
    functionUses: 17
    functionsReached:
    - master_service_get_import_environment_keyvals
    - t_new
    - dup2
    - i_set_error_handler
    - log_error_buffer_init
    - get_full_config_path
    - lib_set_clean_exit
    - master_service_init
    - execv_const
    - pid_file_check_running
    - main_init
    - fd_close_on_exec
    - services_listen
    - printf
    - i_fatal
    - lib_exit
    - chdir
    - i_strconcat
    - fd_debug_verify_leaks
    - master_getopt
    - daemonize
    - i_unset_failure_prefix
    - pipe
    - startup_early_errors_flush
    - master_settings_read
    - geteuid
    - service_pids_init
    - master_service_env_clean
    - execv
    - print_help
    - fprintf
    - print_build_options
    - i_failure_have_stdout_logs
    - i_assert
    - master_service_init_log
    - strcmp
    - io_loop_set_time_moved_callback
    - str_begins_with
    - master_service_import_environment
    - t_askpass
    - service_anvil_global_init
    - fatal_log_check
    - master_service_get_config_path
    - getenv
    - master_service_parse_option
    - settings_free
    - my_hostdomain
    - services_create
    - getegid
    - i_set_fatal_handler
    - master_settings_do_fixes
    - i_get_failure_handlers
    - str_to_int
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cap_init
      Src: /src/dovecot/src/master/capabilities-posix.c:25,1
    - Dst: cap_clear
      Src: /src/dovecot/src/master/capabilities-posix.c:26,1
    - Dst: cap_set_flag
      Src: /src/dovecot/src/master/capabilities-posix.c:27,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/master/capabilities-posix.c:28,1
    - Dst: cap_set_flag
      Src: /src/dovecot/src/master/capabilities-posix.c:29,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/master/capabilities-posix.c:30,1
    - Dst: cap_set_flag
      Src: /src/dovecot/src/master/capabilities-posix.c:31,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/master/capabilities-posix.c:32,1
    - Dst: cap_set_proc
      Src: /src/dovecot/src/master/capabilities-posix.c:33,1
    - Dst: cap_free
      Src: /src/dovecot/src/master/capabilities-posix.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 35
    functionName: drop_capabilities
    functionSourceFile: /src/dovecot/src/master/capabilities-posix.c
    functionUses: 1
    functionsReached:
    - cap_set_flag
    - cap_clear
    - cap_set_proc
    - cap_init
    - N_ELEMENTS
    - cap_free
    linkageType: ''
    returnType: void
    signature: void drop_capabilities(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/master/service-process.c:43,1
    - Dst: service_listener_listen
      Src: /src/dovecot/src/master/service-process.c:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 53
    functionName: service_reopen_inet_listeners
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - array_get
    - service_listener_listen
    linkageType: ''
    returnType: void
    signature: void service_reopen_inet_listeners(struct service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:61,1
    - Dst: str_truncate
      Src: /src/dovecot/src/master/service-process.c:67,1
    - Dst: var_expand
      Src: /src/dovecot/src/master/service-process.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - l
    - pid
    - path
    - error_r
    argTypes:
    - struct service_listener*
    - pid_t
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 6
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: service_unix_pid_listener_get_path
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - dec2str
    - var_expand
    - str_truncate
    linkageType: ''
    returnType: int
    signature: "int service_unix_pid_listener_get_path(struct service_listener *l,
      pid_t pid,\n\t\t\t\t   string_t *path, const char **error_r)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/master/service-process.c:77,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service-process.c:92,1
    - Dst: t_array_init
      Src: /src/dovecot/src/master/service-process.c:93,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:97,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:103,1
    - Dst: services_log_dup2
      Src: /src/dovecot/src/master/service-process.c:104,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:109,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:113,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:114,1
    - Dst: t_str_new
      Src: /src/dovecot/src/master/service-process.c:122,1
    - Dst: str_truncate
      Src: /src/dovecot/src/master/service-process.c:125,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/master/service-process.c:126,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:130,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:132,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:134,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/master/service-process.c:135,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:143,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/master/service-process.c:144,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:152,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:154,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-process.c:154,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service-process.c:156,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/service-process.c:160,1
    - Dst: t_str_new
      Src: /src/dovecot/src/master/service-process.c:162,1
    - Dst: getpid
      Src: /src/dovecot/src/master/service-process.c:165,1
    - Dst: array_foreach
      Src: /src/dovecot/src/master/service-process.c:167,1
    - Dst: service_unix_pid_listener_get_path
      Src: /src/dovecot/src/master/service-process.c:169,1
    - Dst: service_unix_listener_listen
      Src: /src/dovecot/src/master/service-process.c:171,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service-process.c:172,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/service-process.c:175,1
    - Dst: str_truncate
      Src: /src/dovecot/src/master/service-process.c:179,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/master/service-process.c:180,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:181,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:182,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:184,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-process.c:184,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service-process.c:186,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:192,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:199,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:205,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:209,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:211,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:226,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:228,1
    - Dst: dup2
      Src: /src/dovecot/src/master/service-process.c:229,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/service-process.c:230,1
    - Dst: i_set_failure_internal
      Src: /src/dovecot/src/master/service-process.c:231,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:238,1
    - Dst: lseek
      Src: /src/dovecot/src/master/service-process.c:239,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/service-process.c:240,1
    - Dst: dup2_append
      Src: /src/dovecot/src/master/service-process.c:241,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:242,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:242,1
    - Dst: i_set_failure_file
      Src: /src/dovecot/src/master/service-process.c:248,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-process.c:249,1
    - Dst: closelog
      Src: /src/dovecot/src/master/service-process.c:253,1
    - Dst: dup2_array
      Src: /src/dovecot/src/master/service-process.c:255,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/service-process.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:258,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:259,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:259,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 113
    argCount: 4
    argNames:
    - service
    - accepted_fd
    - accepted_listener
    - accepted_listener_fd_r
    argTypes:
    - struct service*
    - int
    - struct service_listener*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 71
    functionDepth: 11
    functionLinenumber: 71
    functionLinenumberEnd: 260
    functionName: service_dup_fds
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - str_c
    - getpid
    - dup2
    - t_strdup_printf
    - dup2_array
    - str_append_tabescaped
    - t_str_new
    - i_fatal
    - i_set_failure_internal
    - i_set_failure_file
    - array_get
    - services_log_dup2
    - service_unix_pid_listener_get_path
    - closelog
    - i_assert
    - dup2_append
    - env_put
    - dec2str
    - lseek
    - service_unix_listener_listen
    - array_foreach
    - t_array_init
    - str_truncate
    - ARRAY_TYPE
    - str_append
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void service_dup_fds(struct service *service, int accepted_fd,\n\t\tconst
      struct service_listener *accepted_listener,\n\t\tint *accepted_listener_fd_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: restrict_process_size
      Src: /src/dovecot/src/master/service-process.c:270,1
    - Dst: restrict_access_init
      Src: /src/dovecot/src/master/service-process.c:272,1
    - Dst: strlen
      Src: /src/dovecot/src/master/service-process.c:280,1
    - Dst: t_strndup
      Src: /src/dovecot/src/master/service-process.c:282,1
    - Dst: restrict_access_set_env
      Src: /src/dovecot/src/master/service-process.c:286,1
    - Dst: restrict_access
      Src: /src/dovecot/src/master/service-process.c:289,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 262
    functionDepth: 14
    functionLinenumber: 262
    functionLinenumberEnd: 293
    functionName: drop_privileges
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 4
    functionsReached:
    - restrict_access_init
    - restrict_process_size
    - strlen
    - t_strndup
    - restrict_access
    - restrict_access_set_env
    linkageType: ''
    returnType: void
    signature: void drop_privileges(struct service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:299,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:302,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:303,1
    - Dst: services_get_config_socket_path
      Src: /src/dovecot/src/master/service-process.c:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 307
    functionName: service_process_setup_config_environment
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - env_put
    - services_get_config_socket_path
    linkageType: ''
    returnType: void
    signature: void service_process_setup_config_environment(struct service *service)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/master/service-process.c:314,1
    - Dst: master_service_env_clean
      Src: /src/dovecot/src/master/service-process.c:315,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:317,1
    - Dst: service_process_setup_config_environment
      Src: /src/dovecot/src/master/service-process.c:318,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:319,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:320,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:320,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:321,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:321,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:322,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:323,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:324,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:325,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:327,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:328,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:330,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:330,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:331,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:332,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:335,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:337,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:344,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:347,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-process.c:348,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:354,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:358,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:359,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - service
    - uid
    - hostdomain
    argTypes:
    - struct service*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 309
    functionDepth: 11
    functionLinenumber: 309
    functionLinenumberEnd: 360
    functionName: service_process_setup_environment
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - env_put
    - dec2str
    - service_process_setup_config_environment
    - master_service_env_clean
    - t_strdup_printf
    - master_service_get_service_settings
    linkageType: ''
    returnType: void
    signature: "void service_process_setup_environment(struct service *service, unsigned
      int uid,\n\t\t\t\t  const char *hostdomain)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:364,1
    - Dst: kill
      Src: /src/dovecot/src/master/service-process.c:368,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:369,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:370,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-process.c:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 362
    functionDepth: 6
    functionLinenumber: 362
    functionLinenumberEnd: 373
    functionName: service_process_status_timeout
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - e_error
    - kill
    - dec2str
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_process_status_timeout(struct service_process *process)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:386,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/master/service-process.c:399,1
    - Dst: fork
      Src: /src/dovecot/src/master/service-process.c:407,1
    - Dst: restrict_get_process_limit
      Src: /src/dovecot/src/master/service-process.c:418,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-process.c:419,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:423,1
    - Dst: service_process_setup_environment
      Src: /src/dovecot/src/master/service-process.c:429,1
    - Dst: service_reopen_inet_listeners
      Src: /src/dovecot/src/master/service-process.c:430,1
    - Dst: service_dup_fds
      Src: /src/dovecot/src/master/service-process.c:431,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:434,1
    - Dst: env_put
      Src: /src/dovecot/src/master/service-process.c:435,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:436,1
    - Dst: drop_privileges
      Src: /src/dovecot/src/master/service-process.c:438,1
    - Dst: process_exec
      Src: /src/dovecot/src/master/service-process.c:439,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:441,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/master/service-process.c:441,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/master/service-process.c:441,1
    - Dst: i_new
      Src: /src/dovecot/src/master/service-process.c:443,1
    - Dst: timeout_add
      Src: /src/dovecot/src/master/service-process.c:451,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/master/service-process.c:469,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:472,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/master/service-process.c:473,1
    - Dst: service_list_ref
      Src: /src/dovecot/src/master/service-process.c:476,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/master/service-process.c:477,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/master/service-process.c:477,1
    - Dst: service_anvil_process_created
      Src: /src/dovecot/src/master/service-process.c:480,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 66
    argCount: 3
    argNames:
    - service
    - accepted_fd
    - accepted_listener
    argTypes:
    - struct service*
    - int
    - struct service_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 375
    functionDepth: 13
    functionLinenumber: 375
    functionLinenumberEnd: 482
    functionName: service_process_create
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 2
    functionsReached:
    - fork
    - service_process_setup_environment
    - t_strdup_printf
    - service_dup_fds
    - DLLIST_PREPEND
    - POINTER_CAST
    - service_anvil_process_created
    - timeout_add
    - process_exec
    - hash_table_insert
    - restrict_get_process_limit
    - DLLIST2_APPEND
    - drop_privileges
    - e_error
    - hash_table_lookup
    - i_assert
    - env_put
    - dec2str
    - service_list_ref
    - service_reopen_inet_listeners
    - my_hostdomain
    - i_new
    linkageType: ''
    returnType: struct service_process
    signature: "struct service_process *\nservice_process_create(struct service *service,
      int accepted_fd,\n\t\t       const struct service_listener *accepted_listener)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:489,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/service-process.c:491,1
    - Dst: t_str_new
      Src: /src/dovecot/src/master/service-process.c:493,1
    - Dst: array_foreach
      Src: /src/dovecot/src/master/service-process.c:496,1
    - Dst: str_truncate
      Src: /src/dovecot/src/master/service-process.c:497,1
    - Dst: service_unix_pid_listener_get_path
      Src: /src/dovecot/src/master/service-process.c:498,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/master/service-process.c:500,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service-process.c:500,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/master/service-process.c:505,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/master/service-process.c:507,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:509,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:510,1
    - Dst: I_MIN
      Src: /src/dovecot/src/master/service-process.c:513,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/master/service-process.c:516,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/master/service-process.c:516,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:519,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:521,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:523,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:525,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-process.c:527,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-process.c:528,1
    - Dst: service_process_notify_add
      Src: /src/dovecot/src/master/service-process.c:530,1
    - Dst: service_process_unref
      Src: /src/dovecot/src/master/service-process.c:533,1
    - Dst: service_login_notify
      Src: /src/dovecot/src/master/service-process.c:537,1
    - Dst: service_list_unref
      Src: /src/dovecot/src/master/service-process.c:539,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 484
    functionDepth: 7
    functionLinenumber: 484
    functionLinenumberEnd: 540
    functionName: service_process_destroy
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - POINTER_CAST
    - service_login_notify
    - I_MIN
    - hash_table_remove
    - array_foreach
    - service_process_unref
    - DLLIST2_REMOVE
    - i_unlink_if_exists
    - str_truncate
    - service_unix_pid_listener_get_path
    - service_process_notify_add
    - array_is_created
    - i_assert
    - DLLIST_REMOVE
    - service_list_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_process_destroy(struct service_process *process)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 547
    functionName: service_process_ref
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void service_process_ref(struct service_process *process)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:551,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-process.c:556,1
    - Dst: i_free
      Src: /src/dovecot/src/master/service-process.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 558
    functionName: service_process_unref
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void service_process_unref(struct service_process *process)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/master/service-process.c:573,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:574,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:576,1
    - Dst: getenv
      Src: /src/dovecot/src/master/service-process.c:581,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:582,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service-process.c:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - service
    - status
    argTypes:
    - struct service*
    - enum fatal_exit_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 560
    functionDepth: 4
    functionLinenumber: 560
    functionLinenumberEnd: 592
    functionName: get_exit_status_message
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - getenv
    - str_append
    linkageType: ''
    returnType: char
    signature: 'char *

      get_exit_status_message(struct service *service, enum fatal_exit_status status)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/master/service-process.c:596,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:599,1
    - Dst: read
      Src: /src/dovecot/src/master/service-process.c:605,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:607,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/master/service-process.c:615,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service-process.c:618,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - event
    - value_r
    argTypes:
    - struct event*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 620
    functionName: linux_proc_fs_suid_is_dumpable
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - open
    - read
    - e_error
    - str_to_uint
    linkageType: ''
    returnType: bool
    signature: bool linux_proc_fs_suid_is_dumpable(struct event *event, unsigned int
      *value_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/master/service-process.c:624,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:627,1
    - Dst: read
      Src: /src/dovecot/src/master/service-process.c:633,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:635,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service-process.c:640,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 642
    functionName: linux_is_absolute_core_pattern
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_close_fd
    - open
    - read
    linkageType: ''
    returnType: bool
    signature: bool linux_is_absolute_core_pattern(struct event *event)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: WTERMSIG
      Src: /src/dovecot/src/master/service-process.c:649,1
    - Dst: WCOREDUMP
      Src: /src/dovecot/src/master/service-process.c:652,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:653,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:662,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:665,1
    - Dst: linux_proc_fs_suid_is_dumpable
      Src: /src/dovecot/src/master/service-process.c:672,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:673,1
    - Dst: linux_is_absolute_core_pattern
      Src: /src/dovecot/src/master/service-process.c:676,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:677,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-process.c:681,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:687,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:693,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:701,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:707,1
    - Dst: str_append_c
      Src: /src/dovecot/src/master/service-process.c:711,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 43
    argCount: 3
    argNames:
    - service
    - str
    - status
    argTypes:
    - struct service*
    - string_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 644
    functionDepth: 2
    functionLinenumber: 644
    functionLinenumberEnd: 713
    functionName: log_coredump
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - linux_is_absolute_core_pattern
    - WTERMSIG
    - WCOREDUMP
    - str_append
    - linux_proc_fs_suid_is_dumpable
    linkageType: ''
    returnType: void
    signature: void log_coredump(struct service *service, string_t *str, int status)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:724,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:725,1
    - Dst: WIFSIGNALED
      Src: /src/dovecot/src/master/service-process.c:726,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:727,1
    - Dst: WTERMSIG
      Src: /src/dovecot/src/master/service-process.c:727,1
    - Dst: log_coredump
      Src: /src/dovecot/src/master/service-process.c:728,1
    - Dst: WIFEXITED
      Src: /src/dovecot/src/master/service-process.c:731,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:732,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/master/service-process.c:736,1
    - Dst: str_truncate
      Src: /src/dovecot/src/master/service-process.c:738,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:741,1
    - Dst: get_exit_status_message
      Src: /src/dovecot/src/master/service-process.c:743,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service-process.c:745,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - str
    - process
    - status
    - default_fatal_r
    argTypes:
    - string_t*
    - struct service_process*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 715
    functionDepth: 6
    functionLinenumber: 715
    functionLinenumberEnd: 749
    functionName: service_process_get_status_error
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - dec2str
    - WIFEXITED
    - str_printfa
    - WEXITSTATUS
    - get_exit_status_message
    - WIFSIGNALED
    - WTERMSIG
    - log_coredump
    - str_truncate
    linkageType: ''
    returnType: void
    signature: "void service_process_get_status_error(string_t *str, struct service_process
      *process,\n\t\t\t\t int status, bool *default_fatal_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:757,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-process.c:763,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-process.c:765,1
    - Dst: write
      Src: /src/dovecot/src/master/service-process.c:767,1
    - Dst: strlen
      Src: /src/dovecot/src/master/service-process.c:768,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:769,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-process.c:770,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - process
    - default_fatal
    - str
    argTypes:
    - struct service_process*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 751
    functionDepth: 11
    functionLinenumber: 751
    functionLinenumberEnd: 772
    functionName: service_process_log
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - dec2str
    - strlen
    - t_strdup_printf
    - write
    - e_error
    linkageType: ''
    returnType: void
    signature: "void service_process_log(struct service_process *process,\n\t\t\t\tbool
      default_fatal, const char *str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WIFEXITED
      Src: /src/dovecot/src/master/service-process.c:777,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/master/service-process.c:777,1
    - Dst: t_str_new
      Src: /src/dovecot/src/master/service-process.c:782,1
    - Dst: service_process_get_status_error
      Src: /src/dovecot/src/master/service-process.c:785,1
    - Dst: str_len
      Src: /src/dovecot/src/master/service-process.c:787,1
    - Dst: service_process_log
      Src: /src/dovecot/src/master/service-process.c:788,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service-process.c:788,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - process
    - status
    argTypes:
    - struct service_process*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 774
    functionDepth: 12
    functionLinenumber: 774
    functionLinenumberEnd: 789
    functionName: service_process_log_status_error
    functionSourceFile: /src/dovecot/src/master/service-process.c
    functionUses: 0
    functionsReached:
    - WIFEXITED
    - t_str_new
    - WEXITSTATUS
    - str_c
    - str_len
    - service_process_get_status_error
    - service_process_log
    linkageType: ''
    returnType: void
    signature: "void service_process_log_status_error(struct service_process *process,\n\t\t\t\t
      \     int status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/master/master-client.c:23,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/master-client.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - str
    - service
    argTypes:
    - string_t*
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 19
    functionDepth: 3
    functionLinenumber: 19
    functionLinenumberEnd: 36
    functionName: master_client_service_status_output
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - str_append_tabescaped
    - str_printfa
    linkageType: ''
    returnType: void
    signature: "void master_client_service_status_output(string_t *str,\n\t\t\t\t
      \   const struct service *service)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/master/master-client.c:42,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-client.c:44,1
    - Dst: str_truncate
      Src: /src/dovecot/src/master/master-client.c:45,1
    - Dst: master_client_service_status_output
      Src: /src/dovecot/src/master/master-client.c:46,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/master/master-client.c:47,1
    - Dst: str_data
      Src: /src/dovecot/src/master/master-client.c:47,1
    - Dst: str_len
      Src: /src/dovecot/src/master/master-client.c:47,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/master/master-client.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct master_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 38
    functionDepth: 4
    functionLinenumber: 38
    functionLinenumberEnd: 51
    functionName: master_client_service_status
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - master_client_service_status_output
    - str_data
    - array_foreach_elem
    - str_len
    - o_stream_nsend
    - str_truncate
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: int master_client_service_status(struct master_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/master/master-client.c:57,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/master-client.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - str
    - process
    argTypes:
    - string_t*
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: master_client_process_output
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - str_append_tabescaped
    - str_printfa
    linkageType: ''
    returnType: void
    signature: "void master_client_process_output(string_t *str,\n\t\t\t     const
      struct service_process *process)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/master/master-client.c:73,1
    - Dst: master_client_process_output
      Src: /src/dovecot/src/master/master-client.c:74,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/master/master-client.c:75,1
    - Dst: str_data
      Src: /src/dovecot/src/master/master-client.c:76,1
    - Dst: str_len
      Src: /src/dovecot/src/master/master-client.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - client
    - processes
    - str
    argTypes:
    - struct master_client*
    - struct service_process*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 65
    functionDepth: 4
    functionLinenumber: 65
    functionLinenumberEnd: 78
    functionName: master_client_process_status_list
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - o_stream_nsend
    - str_truncate
    - master_client_process_output
    linkageType: ''
    returnType: void
    signature: "void master_client_process_status_list(struct master_client *client,\n\t\t\t\t
      \ struct service_process *processes,\n\t\t\t\t  string_t *str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/master/master-client.c:85,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-client.c:87,1
    - Dst: str_array_find
      Src: /src/dovecot/src/master/master-client.c:88,1
    - Dst: master_client_process_status_list
      Src: /src/dovecot/src/master/master-client.c:90,1
    - Dst: master_client_process_status_list
      Src: /src/dovecot/src/master/master-client.c:92,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/master/master-client.c:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct master_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 80
    functionDepth: 5
    functionLinenumber: 80
    functionLinenumberEnd: 97
    functionName: master_client_process_status
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - array_foreach_elem
    - master_client_process_status_list
    - o_stream_nsend_str
    - str_array_find
    linkageType: ''
    returnType: int
    signature: "int master_client_process_status(struct master_client *client,\n\t\t\t
      \    const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/master/master-client.c:103,1
    - Dst: log_error_buffer_iter_init
      Src: /src/dovecot/src/master/master-client.c:106,1
    - Dst: log_error_buffer_iter_next
      Src: /src/dovecot/src/master/master-client.c:107,1
    - Dst: str_truncate
      Src: /src/dovecot/src/master/master-client.c:108,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/master-client.c:109,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/master/master-client.c:113,1
    - Dst: str_append_c
      Src: /src/dovecot/src/master/master-client.c:114,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/master/master-client.c:115,1
    - Dst: str_append_c
      Src: /src/dovecot/src/master/master-client.c:116,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/master/master-client.c:117,1
    - Dst: str_data
      Src: /src/dovecot/src/master/master-client.c:118,1
    - Dst: str_len
      Src: /src/dovecot/src/master/master-client.c:118,1
    - Dst: log_error_buffer_iter_deinit
      Src: /src/dovecot/src/master/master-client.c:123,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/master/master-client.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct master_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 99
    functionDepth: 4
    functionLinenumber: 99
    functionLinenumberEnd: 126
    functionName: master_client_send_errors
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_append_c
    - log_error_buffer_iter_deinit
    - str_data
    - str_len
    - log_error_buffer_iter_next
    - str_append_tabescaped
    - o_stream_send
    - str_truncate
    - log_error_buffer_iter_init
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: int master_client_send_errors(struct master_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: service_lookup
      Src: /src/dovecot/src/master/master-client.c:135,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-client.c:137,1
    - Dst: service_monitor_stop_close
      Src: /src/dovecot/src/master/master-client.c:139,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/master/master-client.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct master_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 128
    functionDepth: 11
    functionLinenumber: 128
    functionLinenumberEnd: 145
    functionName: master_client_stop
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - t_strdup_printf
    - service_lookup
    - service_monitor_stop_close
    linkageType: ''
    returnType: int
    signature: int master_client_stop(struct master_client *client, const char *const
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/master/master-client.c:154,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-client.c:159,1
    - Dst: master_client_service_status
      Src: /src/dovecot/src/master/master-client.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-client.c:161,1
    - Dst: master_client_process_status
      Src: /src/dovecot/src/master/master-client.c:162,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-client.c:163,1
    - Dst: master_client_send_errors
      Src: /src/dovecot/src/master/master-client.c:164,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-client.c:165,1
    - Dst: master_client_stop
      Src: /src/dovecot/src/master/master-client.c:166,1
    - Dst: e_error
      Src: /src/dovecot/src/master/master-client.c:167,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 147
    functionDepth: 12
    functionLinenumber: 147
    functionLinenumberEnd: 169
    functionName: master_client_input_args
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 1
    functionsReached:
    - strcmp
    - master_client_stop
    - master_client_service_status
    - e_error
    - master_client_send_errors
    - master_client_process_status
    linkageType: ''
    returnType: int
    signature: int master_client_input_args(struct connection *conn, const char *const
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_deinit
      Src: /src/dovecot/src/master/master-client.c:175,1
    - Dst: i_free
      Src: /src/dovecot/src/master/master-client.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 171
    functionDepth: 4
    functionLinenumber: 171
    functionLinenumberEnd: 177
    functionName: master_client_destroy
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - i_free
    - connection_deinit
    linkageType: ''
    returnType: void
    signature: void master_client_destroy(struct connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/master/master-client.c:202,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/master/master-client.c:204,1
    - Dst: e_error
      Src: /src/dovecot/src/master/master-client.c:205,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/master-client.c:208,1
    - Dst: i_new
      Src: /src/dovecot/src/master/master-client.c:209,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/master/master-client.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 197
    functionDepth: 6
    functionLinenumber: 197
    functionLinenumberEnd: 212
    functionName: master_client_connected
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 0
    functionsReached:
    - fd_close_on_exec
    - NET_ACCEPT_ENOCONN
    - connection_init_server
    - e_error
    - i_new
    - net_accept
    linkageType: ''
    returnType: void
    signature: void master_client_connected(struct service_list *service_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/master/master-client.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: master_clients_init
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 2
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: void
    signature: void master_clients_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/master/master-client.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: master_clients_deinit
    functionSourceFile: /src/dovecot/src/master/master-client.c
    functionUses: 1
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void master_clients_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:42,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-monitor.c:43,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:45,1
    - Dst: i_zero
      Src: /src/dovecot/src/master/service-monitor.c:48,1
    - Dst: service_status_more
      Src: /src/dovecot/src/master/service-monitor.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 38
    functionDepth: 6
    functionLinenumber: 38
    functionLinenumberEnd: 51
    functionName: service_process_idle_kill_timeout
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - dec2str
    - i_zero
    - service_status_more
    - e_error
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_process_idle_kill_timeout(struct service_process *process)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:63,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:66,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:81,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:87,1
    - Dst: kill
      Src: /src/dovecot/src/master/service-monitor.c:88,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:89,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-monitor.c:90,1
    - Dst: timeout_add
      Src: /src/dovecot/src/master/service-monitor.c:94,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/master/service-monitor.c:99,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/master/service-monitor.c:101,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 53
    functionDepth: 6
    functionLinenumber: 53
    functionLinenumberEnd: 104
    functionName: service_kill_idle
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - dec2str
    - DLLIST2_APPEND
    - timeout_add
    - e_error
    - DLLIST2_REMOVE
    - kill
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_kill_idle(struct service *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/master/service-monitor.c:113,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/master/service-monitor.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:118,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:119,1
    - Dst: I_MIN
      Src: /src/dovecot/src/master/service-monitor.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:132,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:134,1
    - Dst: service_login_notify
      Src: /src/dovecot/src/master/service-monitor.c:139,1
    - Dst: service_monitor_start_extra_avail
      Src: /src/dovecot/src/master/service-monitor.c:142,1
    - Dst: service_monitor_listen_start
      Src: /src/dovecot/src/master/service-monitor.c:143,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - process
    - status
    argTypes:
    - struct service_process*
    - struct master_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 144
    functionName: service_status_more
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 1
    functionsReached:
    - service_monitor_start_extra_avail
    - service_monitor_listen_start
    - service_login_notify
    - I_MIN
    - DLLIST2_REMOVE
    - DLLIST_PREPEND
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void service_status_more(struct service_process *process,\n\t\t\t\tconst
      struct master_status *status)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/master/service-monitor.c:155,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:157,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/master/service-monitor.c:161,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/master/service-monitor.c:164,1
    - Dst: timeout_add
      Src: /src/dovecot/src/master/service-monitor.c:174,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 177
    functionName: service_check_idle
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - DLLIST2_APPEND
    - timeout_add
    - DLLIST2_REMOVE
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void service_check_idle(struct service_process *process)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:184,1
    - Dst: service_monitor_listen_stop
      Src: /src/dovecot/src/master/service-monitor.c:189,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:190,1
    - Dst: service_login_notify
      Src: /src/dovecot/src/master/service-monitor.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - process
    argTypes:
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 179
    functionDepth: 6
    functionLinenumber: 179
    functionLinenumberEnd: 194
    functionName: service_status_less
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_monitor_listen_stop
    - i_assert
    - service_login_notify
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_status_less(struct service_process *process)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/master/service-monitor.c:202,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/master/service-monitor.c:202,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:218,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-monitor.c:219,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:224,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:227,1
    - Dst: service_status_more
      Src: /src/dovecot/src/master/service-monitor.c:232,1
    - Dst: service_status_less
      Src: /src/dovecot/src/master/service-monitor.c:235,1
    - Dst: service_check_idle
      Src: /src/dovecot/src/master/service-monitor.c:239,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - service
    - status
    argTypes:
    - struct service*
    - struct master_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 196
    functionDepth: 7
    functionLinenumber: 196
    functionLinenumberEnd: 240
    functionName: service_status_input_one
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - dec2str
    - POINTER_CAST
    - service_status_more
    - service_check_idle
    - e_error
    - service_status_less
    - hash_table_lookup
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void service_status_input_one(struct service *service,\n\t\t\t const
      struct master_status *status)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dovecot/src/master/service-monitor.c:248,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:251,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:253,1
    - Dst: service_monitor_stop
      Src: /src/dovecot/src/master/service-monitor.c:256,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:261,1
    - Dst: service_status_input_one
      Src: /src/dovecot/src/master/service-monitor.c:268,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 242
    functionDepth: 8
    functionLinenumber: 242
    functionLinenumberEnd: 272
    functionName: service_status_input
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - e_error
    - service_monitor_stop
    - service_status_input_one
    - read
    linkageType: ''
    returnType: void
    signature: void service_status_input(struct service *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:286,1
    - Dst: e_warning
      Src: /src/dovecot/src/master/service-monitor.c:293,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 297
    functionName: service_log_drop_warning
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - e_warning
    - i_assert
    linkageType: ''
    returnType: void
    signature: void service_log_drop_warning(struct service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:304,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:306,1
    - Dst: service_throttle
      Src: /src/dovecot/src/master/service-monitor.c:310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 317
    functionName: service_monitor_throttle
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - e_error
    - i_assert
    - service_throttle
    linkageType: ''
    returnType: void
    signature: void service_monitor_throttle(struct service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:324,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:327,1
    - Dst: net_accept
      Src: /src/dovecot/src/master/service-monitor.c:328,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/master/service-monitor.c:329,1
    - Dst: service_monitor_listen_start_force
      Src: /src/dovecot/src/master/service-monitor.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 334
    functionName: service_drop_timeout
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - net_disconnect
    - array_foreach_elem
    - service_monitor_listen_start_force
    - net_accept
    - i_assert
    linkageType: ''
    returnType: void
    signature: void service_drop_timeout(struct service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:338,1
    - Dst: service_monitor_listen_stop
      Src: /src/dovecot/src/master/service-monitor.c:340,1
    - Dst: timeout_add
      Src: /src/dovecot/src/master/service-monitor.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 345
    functionName: service_monitor_listen_pending
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_monitor_listen_stop
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: void
    signature: void service_monitor_listen_pending(struct service *service)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: service_log_drop_warning
      Src: /src/dovecot/src/master/service-monitor.c:353,1
    - Dst: service_login_notify
      Src: /src/dovecot/src/master/service-monitor.c:359,1
    - Dst: service_monitor_listen_pending
      Src: /src/dovecot/src/master/service-monitor.c:361,1
    - Dst: service_monitor_listen_pending
      Src: /src/dovecot/src/master/service-monitor.c:365,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/master/service-monitor.c:369,1
    - Dst: net_accept
      Src: /src/dovecot/src/master/service-monitor.c:377,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/master/service-monitor.c:379,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct service_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 347
    functionDepth: 3
    functionLinenumber: 347
    functionLinenumberEnd: 381
    functionName: service_drop_connections
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - net_disconnect
    - service_login_notify
    - timeout_add_short
    - service_monitor_listen_pending
    - net_accept
    - service_log_drop_warning
    linkageType: ''
    returnType: void
    signature: void service_drop_connections(struct service_listener *l)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:388,1
    - Dst: service_drop_connections
      Src: /src/dovecot/src/master/service-monitor.c:393,1
    - Dst: net_accept
      Src: /src/dovecot/src/master/service-monitor.c:403,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/master/service-monitor.c:405,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:406,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-monitor.c:409,1
    - Dst: service_process_create
      Src: /src/dovecot/src/master/service-monitor.c:414,1
    - Dst: service_monitor_throttle
      Src: /src/dovecot/src/master/service-monitor.c:416,1
    - Dst: service_monitor_listen_stop
      Src: /src/dovecot/src/master/service-monitor.c:418,1
    - Dst: net_disconnect
      Src: /src/dovecot/src/master/service-monitor.c:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct service_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 383
    functionDepth: 14
    functionLinenumber: 383
    functionLinenumberEnd: 422
    functionName: service_accept
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 1
    functionsReached:
    - net_disconnect
    - fd_close_on_exec
    - NET_ACCEPT_ENOCONN
    - e_error
    - service_monitor_throttle
    - service_monitor_listen_stop
    - service_drop_connections
    - net_accept
    - service_process_create
    - i_assert
    linkageType: ''
    returnType: void
    signature: void service_accept(struct service_listener *l)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-monitor.c:429,1
    - Dst: service_process_create
      Src: /src/dovecot/src/master/service-monitor.c:438,1
    - Dst: service_monitor_throttle
      Src: /src/dovecot/src/master/service-monitor.c:439,1
    - Dst: service_monitor_listen_stop
      Src: /src/dovecot/src/master/service-monitor.c:445,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - service
    - limit
    argTypes:
    - struct service*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 424
    functionDepth: 14
    functionLinenumber: 424
    functionLinenumberEnd: 448
    functionName: service_monitor_start_count
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_monitor_throttle
    - service_process_create
    - i_assert
    - service_monitor_listen_stop
    linkageType: ''
    returnType: bool
    signature: bool service_monitor_start_count(struct service *service, unsigned
      int limit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: service_monitor_start_count
      Src: /src/dovecot/src/master/service-monitor.c:460,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:468,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 450
    functionDepth: 15
    functionLinenumber: 450
    functionLinenumberEnd: 469
    functionName: service_monitor_prefork_timeout
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_monitor_start_count
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_monitor_prefork_timeout(struct service *service)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: service_monitor_start_count
      Src: /src/dovecot/src/master/service-monitor.c:480,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/master/service-monitor.c:490,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 471
    functionDepth: 15
    functionLinenumber: 471
    functionLinenumberEnd: 492
    functionName: service_monitor_start_extra_avail
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 1
    functionsReached:
    - timeout_add_short
    - service_monitor_start_count
    linkageType: ''
    returnType: void
    signature: void service_monitor_start_extra_avail(struct service *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:500,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:501,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:503,1
    - Dst: io_add
      Src: /src/dovecot/src/master/service-monitor.c:505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 494
    functionDepth: 6
    functionLinenumber: 494
    functionLinenumberEnd: 507
    functionName: service_monitor_listen_start_force
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - io_add
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_monitor_listen_start_force(struct service *service)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: service_monitor_listen_start_force
      Src: /src/dovecot/src/master/service-monitor.c:516,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 509
    functionDepth: 7
    functionLinenumber: 509
    functionLinenumberEnd: 517
    functionName: service_monitor_listen_start
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 1
    functionsReached:
    - service_monitor_listen_start_force
    linkageType: ''
    returnType: void
    signature: void service_monitor_listen_start(struct service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:523,1
    - Dst: io_remove
      Src: /src/dovecot/src/master/service-monitor.c:524,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:527,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 519
    functionDepth: 6
    functionLinenumber: 519
    functionLinenumberEnd: 529
    functionName: service_monitor_listen_stop
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 4
    functionsReached:
    - io_remove
    - timeout_remove
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void service_monitor_listen_stop(struct service *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/master/service-monitor.c:539,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-monitor.c:542,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service-monitor.c:543,1
    - Dst: safe_mkstemp
      Src: /src/dovecot/src/master/service-monitor.c:545,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service-monitor.c:546,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:549,1
    - Dst: unlink
      Src: /src/dovecot/src/master/service-monitor.c:551,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:552,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-monitor.c:554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 531
    functionDepth: 9
    functionLinenumber: 531
    functionLinenumberEnd: 557
    functionName: service_login_create_notify_fd
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - fd_close_on_exec
    - unlink
    - e_error
    - str_append
    - safe_mkstemp
    linkageType: ''
    returnType: int
    signature: int service_login_create_notify_fd(struct service *service)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: services_log_init
      Src: /src/dovecot/src/master/service-monitor.c:570,1
    - Dst: service_anvil_monitor_start
      Src: /src/dovecot/src/master/service-monitor.c:572,1
    - Dst: io_add
      Src: /src/dovecot/src/master/service-monitor.c:577,1
    - Dst: t_array_init
      Src: /src/dovecot/src/master/service-monitor.c:581,1
    - Dst: array_count
      Src: /src/dovecot/src/master/service-monitor.c:581,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:582,1
    - Dst: service_login_create_notify_fd
      Src: /src/dovecot/src/master/service-monitor.c:584,1
    - Dst: pipe
      Src: /src/dovecot/src/master/service-monitor.c:588,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:589,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-monitor.c:592,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-monitor.c:593,1
    - Dst: pipe
      Src: /src/dovecot/src/master/service-monitor.c:597,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:598,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/master/service-monitor.c:602,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-monitor.c:603,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/master/service-monitor.c:604,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-monitor.c:605,1
    - Dst: io_add
      Src: /src/dovecot/src/master/service-monitor.c:609,1
    - Dst: service_monitor_listen_start
      Src: /src/dovecot/src/master/service-monitor.c:612,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/service-monitor.c:613,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:617,1
    - Dst: service_monitor_start_extra_avail
      Src: /src/dovecot/src/master/service-monitor.c:618,1
    - Dst: service_process_create
      Src: /src/dovecot/src/master/service-monitor.c:621,1
    - Dst: service_monitor_listen_stop
      Src: /src/dovecot/src/master/service-monitor.c:622,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:626,1
    - Dst: service_process_create
      Src: /src/dovecot/src/master/service-monitor.c:629,1
    - Dst: service_monitor_listen_stop
      Src: /src/dovecot/src/master/service-monitor.c:630,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 50
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 565
    functionDepth: 16
    functionLinenumber: 565
    functionLinenumberEnd: 633
    functionName: services_monitor_start
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 2
    functionsReached:
    - service_monitor_start_extra_avail
    - service_monitor_listen_start
    - fd_close_on_exec
    - io_add
    - array_foreach_elem
    - service_anvil_monitor_start
    - array_push_back
    - service_login_create_notify_fd
    - e_error
    - service_monitor_listen_stop
    - array_count
    - t_array_init
    - service_process_create
    - net_set_nonblock
    - services_log_init
    - pipe
    linkageType: ''
    returnType: void
    signature: void services_monitor_start(struct service_list *service_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service-monitor.c:638,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service-monitor.c:639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 641
    functionName: service_monitor_close_dead_pipe
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    linkageType: ''
    returnType: void
    signature: void service_monitor_close_dead_pipe(struct service *service)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/master/service-monitor.c:647,1
    - Dst: close
      Src: /src/dovecot/src/master/service-monitor.c:652,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:653,1
    - Dst: service_monitor_close_dead_pipe
      Src: /src/dovecot/src/master/service-monitor.c:659,1
    - Dst: close
      Src: /src/dovecot/src/master/service-monitor.c:661,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:662,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:667,1
    - Dst: service_monitor_listen_stop
      Src: /src/dovecot/src/master/service-monitor.c:668,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:670,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:671,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service-monitor.c:672,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 643
    functionDepth: 7
    functionLinenumber: 643
    functionLinenumberEnd: 673
    functionName: service_monitor_stop
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 1
    functionsReached:
    - io_remove
    - e_error
    - service_monitor_listen_stop
    - close
    - service_monitor_close_dead_pipe
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_monitor_stop(struct service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: service_monitor_stop
      Src: /src/dovecot/src/master/service-monitor.c:679,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:681,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service-monitor.c:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 675
    functionDepth: 8
    functionLinenumber: 675
    functionLinenumberEnd: 683
    functionName: service_monitor_stop_close
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 1
    functionsReached:
    - i_close_fd
    - service_monitor_stop
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void service_monitor_stop_close(struct service *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/master/service-monitor.c:691,1
    - Dst: services_monitor_reap_children
      Src: /src/dovecot/src/master/service-monitor.c:696,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:697,1
    - Dst: service_status_input
      Src: /src/dovecot/src/master/service-monitor.c:699,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/master/service-monitor.c:703,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/master/service-monitor.c:705,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/master/service-monitor.c:707,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 685
    functionDepth: 9
    functionLinenumber: 685
    functionLinenumberEnd: 709
    functionName: services_monitor_wait
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - service_status_input
    - array_foreach_elem
    - i_sleep_msecs
    - io_loop_time_refresh
    - services_monitor_reap_children
    linkageType: ''
    returnType: void
    signature: void services_monitor_wait(struct service_list *service_list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/dovecot/src/master/service-monitor.c:719,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-monitor.c:722,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-monitor.c:723,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - service
    - processes
    argTypes:
    - struct service*
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 711
    functionDepth: 6
    functionLinenumber: 711
    functionLinenumberEnd: 727
    functionName: service_processes_list_close_listeners
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - e_error
    - kill
    - dec2str
    linkageType: ''
    returnType: bool
    signature: "bool service_processes_list_close_listeners(struct service *service,\n\t\t\t\t
      \      struct service_process *processes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: service_processes_list_close_listeners
      Src: /src/dovecot/src/master/service-monitor.c:733,1
    - Dst: service_processes_list_close_listeners
      Src: /src/dovecot/src/master/service-monitor.c:736,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 729
    functionDepth: 7
    functionLinenumber: 729
    functionLinenumberEnd: 740
    functionName: service_processes_close_listeners
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_processes_list_close_listeners
    linkageType: ''
    returnType: bool
    signature: bool service_processes_close_listeners(struct service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:748,1
    - Dst: service_processes_close_listeners
      Src: /src/dovecot/src/master/service-monitor.c:749,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 742
    functionDepth: 8
    functionLinenumber: 742
    functionLinenumberEnd: 762
    functionName: service_list_processes_close_listeners
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_processes_close_listeners
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool service_list_processes_close_listeners(struct service_list *service_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: services_monitor_wait
      Src: /src/dovecot/src/master/service-monitor.c:769,1
    - Dst: service_list_processes_close_listeners
      Src: /src/dovecot/src/master/service-monitor.c:778,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/master/service-monitor.c:781,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 764
    functionDepth: 10
    functionLinenumber: 764
    functionLinenumberEnd: 783
    functionName: services_monitor_wait_and_kill
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_list_processes_close_listeners
    - i_sleep_msecs
    - services_monitor_wait
    linkageType: ''
    returnType: void
    signature: void services_monitor_wait_and_kill(struct service_list *service_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:789,1
    - Dst: service_monitor_close_dead_pipe
      Src: /src/dovecot/src/master/service-monitor.c:790,1
    - Dst: services_monitor_wait_and_kill
      Src: /src/dovecot/src/master/service-monitor.c:793,1
    - Dst: io_remove
      Src: /src/dovecot/src/master/service-monitor.c:795,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-monitor.c:797,1
    - Dst: service_monitor_stop
      Src: /src/dovecot/src/master/service-monitor.c:798,1
    - Dst: services_log_deinit
      Src: /src/dovecot/src/master/service-monitor.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - service_list
    - wait
    argTypes:
    - struct service_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 785
    functionDepth: 11
    functionLinenumber: 785
    functionLinenumberEnd: 801
    functionName: services_monitor_stop
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - io_remove
    - services_log_deinit
    - services_monitor_wait_and_kill
    - service_monitor_stop
    - service_monitor_close_dead_pipe
    linkageType: ''
    returnType: void
    signature: void services_monitor_stop(struct service_list *service_list, bool
      wait)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - service
    - processes
    argTypes:
    - struct service*
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 822
    functionName: service_has_successful_processes_in_list
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool service_has_successful_processes_in_list(struct service *service,\n\t\t\t\t\t
      struct service_process *processes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: service_has_successful_processes_in_list
      Src: /src/dovecot/src/master/service-monitor.c:829,1
    - Dst: service_has_successful_processes_in_list
      Src: /src/dovecot/src/master/service-monitor.c:831,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 833
    functionName: service_has_successful_processes
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_has_successful_processes_in_list
    linkageType: ''
    returnType: bool
    signature: bool service_has_successful_processes(struct service *service)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: service_process_log_status_error
      Src: /src/dovecot/src/master/service-monitor.c:841,1
    - Dst: service_has_successful_processes
      Src: /src/dovecot/src/master/service-monitor.c:843,1
    - Dst: service_process_notify_add
      Src: /src/dovecot/src/master/service-monitor.c:858,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - process
    - status
    argTypes:
    - struct service_process*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 835
    functionDepth: 13
    functionLinenumber: 835
    functionLinenumberEnd: 860
    functionName: service_process_failure
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 0
    functionsReached:
    - service_process_notify_add
    - service_process_log_status_error
    - service_has_successful_processes
    linkageType: ''
    returnType: bool
    signature: bool service_process_failure(struct service_process *process, int status)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/dovecot/src/master/service-monitor.c:870,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/master/service-monitor.c:871,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/master/service-monitor.c:871,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-monitor.c:873,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-monitor.c:874,1
    - Dst: service_process_failure
      Src: /src/dovecot/src/master/service-monitor.c:887,1
    - Dst: service_anvil_process_destroyed
      Src: /src/dovecot/src/master/service-monitor.c:890,1
    - Dst: service_list_ref
      Src: /src/dovecot/src/master/service-monitor.c:895,1
    - Dst: service_process_destroy
      Src: /src/dovecot/src/master/service-monitor.c:896,1
    - Dst: service_monitor_throttle
      Src: /src/dovecot/src/master/service-monitor.c:899,1
    - Dst: service_monitor_start_extra_avail
      Src: /src/dovecot/src/master/service-monitor.c:902,1
    - Dst: service_process_create
      Src: /src/dovecot/src/master/service-monitor.c:910,1
    - Dst: service_monitor_throttle
      Src: /src/dovecot/src/master/service-monitor.c:911,1
    - Dst: service_monitor_listen_start
      Src: /src/dovecot/src/master/service-monitor.c:913,1
    - Dst: service_list_unref
      Src: /src/dovecot/src/master/service-monitor.c:916,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 862
    functionDepth: 16
    functionLinenumber: 862
    functionLinenumberEnd: 918
    functionName: services_monitor_reap_children
    functionSourceFile: /src/dovecot/src/master/service-monitor.c
    functionUses: 2
    functionsReached:
    - dec2str
    - service_monitor_start_extra_avail
    - service_monitor_listen_start
    - POINTER_CAST
    - i_error
    - service_process_failure
    - service_list_ref
    - service_monitor_throttle
    - service_anvil_process_destroyed
    - service_list_unref
    - service_process_create
    - service_process_destroy
    - hash_table_lookup
    - waitpid
    linkageType: ''
    returnType: void
    signature: void services_monitor_reap_children(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/master/service.c:36,1
    - Dst: strrchr
      Src: /src/dovecot/src/master/service.c:41,1
    - Dst: get_uidgid
      Src: /src/dovecot/src/master/service.c:47,1
    - Dst: get_gid
      Src: /src/dovecot/src/master/service.c:49,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - service
    - type
    - set
    - error_r
    argTypes:
    - struct service*
    - enum service_listener_type
    - struct file_listener_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 26
    functionDepth: 12
    functionLinenumber: 26
    functionLinenumberEnd: 60
    functionName: service_create_file_listener
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - p_new
    - strrchr
    - t_strdup_printf
    - get_gid
    - get_uidgid
    linkageType: ''
    returnType: struct service_listener
    signature: "struct service_listener *\nservice_create_file_listener(struct service
      *service,\n\t\t\t     enum service_listener_type type,\n\t\t\t     const struct
      file_listener_settings *set,\n\t\t\t     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/master/service.c:70,1
    - Dst: t_new
      Src: /src/dovecot/src/master/service.c:72,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/service.c:79,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/service.c:79,1
    - Dst: t_new
      Src: /src/dovecot/src/master/service.c:81,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/master/service.c:89,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:91,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/master/service.c:92,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:97,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - address
    - ips_r
    - ips_count_r
    - error_r
    argTypes:
    - char*
    - struct ip_addr**
    - unsigned int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 62
    functionDepth: 11
    functionLinenumber: 62
    functionLinenumberEnd: 104
    functionName: resolve_ip
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_new
    - t_strdup_printf
    - net_gethostbyname
    - net_gethosterror
    linkageType: ''
    returnType: int
    signature: "int resolve_ip(const char *address, const struct ip_addr **ips_r,\n\t
      \  unsigned int *ips_count_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:113,1
    - Dst: p_new
      Src: /src/dovecot/src/master/service.c:115,1
    - Dst: p_strdup
      Src: /src/dovecot/src/master/service.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - service
    - set
    - address
    - ip
    argTypes:
    - struct service*
    - struct inet_listener_settings*
    - char*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 125
    functionName: service_create_one_inet_listener
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    - p_new
    linkageType: ''
    returnType: struct service_listener
    signature: "struct service_listener *\nservice_create_one_inet_listener(struct
      service *service,\n\t\t\t\t const struct inet_listener_settings *set,\n\t\t\t\t
      const char *address, const struct ip_addr *ip)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/master/service.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/service.c:137,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/master/service.c:144,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service.c:151,1
    - Dst: resolve_ip
      Src: /src/dovecot/src/master/service.c:155,1
    - Dst: service_create_one_inet_listener
      Src: /src/dovecot/src/master/service.c:159,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/service.c:161,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - service
    - set
    - error_r
    argTypes:
    - struct service*
    - struct inet_listener_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 127
    functionDepth: 12
    functionLinenumber: 127
    functionLinenumberEnd: 166
    functionName: service_create_inet_listeners
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    - array_push_back
    - array_is_empty
    - resolve_ip
    - ARRAY_TYPE
    - service_create_one_inet_listener
    linkageType: ''
    returnType: int
    signature: "int service_create_inet_listeners(struct service *service,\n\t\t\t
      \     const struct inet_listener_settings *set,\n\t\t\t      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/master/service.c:175,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/master/service.c:176,1
    - Dst: get_gid
      Src: /src/dovecot/src/master/service.c:177,1
    - Dst: str_len
      Src: /src/dovecot/src/master/service.c:180,1
    - Dst: str_append_c
      Src: /src/dovecot/src/master/service.c:181,1
    - Dst: str_append
      Src: /src/dovecot/src/master/service.c:182,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service.c:182,1
    - Dst: p_strdup
      Src: /src/dovecot/src/master/service.c:184,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service.c:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - groups
    - pool
    - gids_r
    - error_r
    argTypes:
    - ARRAY_TYPE*
    - pool_t
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 168
    functionDepth: 12
    functionLinenumber: 168
    functionLinenumberEnd: 186
    functionName: service_get_groups
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - p_strdup
    - str_append_c
    - str_len
    - get_gid
    - settings_boollist_get
    - str_append
    linkageType: ''
    returnType: int
    signature: "int service_get_groups(const ARRAY_TYPE(const_string) *groups, pool_t
      pool,\n\t\t\t      const char **gids_r, const char **error_r)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/master/service.c:200,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:207,1
    - Dst: get_uidgid
      Src: /src/dovecot/src/master/service.c:217,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:220,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/service.c:225,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/service.c:229,1
    - Dst: get_gid
      Src: /src/dovecot/src/master/service.c:236,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:237,1
    - Dst: get_gid
      Src: /src/dovecot/src/master/service.c:243,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:245,1
    - Dst: array_not_empty
      Src: /src/dovecot/src/master/service.c:251,1
    - Dst: service_get_groups
      Src: /src/dovecot/src/master/service.c:252,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:254,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/service.c:277,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service.c:278,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/service.c:283,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service.c:284,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/service.c:289,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service.c:290,1
    - Dst: p_array_init
      Src: /src/dovecot/src/master/service.c:301,1
    - Dst: p_array_init
      Src: /src/dovecot/src/master/service.c:304,1
    - Dst: service_create_file_listener
      Src: /src/dovecot/src/master/service.c:312,1
    - Dst: strstr
      Src: /src/dovecot/src/master/service.c:317,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/service.c:318,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/service.c:321,1
    - Dst: service_create_file_listener
      Src: /src/dovecot/src/master/service.c:330,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/service.c:334,1
    - Dst: service_create_inet_listeners
      Src: /src/dovecot/src/master/service.c:337,1
    - Dst: access
      Src: /src/dovecot/src/master/service.c:343,1
    - Dst: t_strcut
      Src: /src/dovecot/src/master/service.c:343,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:344,1
    - Dst: t_strcut
      Src: /src/dovecot/src/master/service.c:345,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 110
    argCount: 5
    argNames:
    - pool
    - event
    - set
    - service_list
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - struct service_settings*
    - struct service_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 188
    functionDepth: 13
    functionLinenumber: 188
    functionLinenumberEnd: 350
    functionName: service_create_real
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - access
    - p_new
    - p_array_init
    - service_create_file_listener
    - array_push_back
    - array_get
    - t_strdup_printf
    - get_gid
    - array_not_empty
    - get_uidgid
    - t_strcut
    - service_create_inet_listeners
    - array_is_created
    - i_assert
    - t_strconcat
    - strstr
    - service_get_groups
    linkageType: ''
    returnType: struct service
    signature: "struct service *\nservice_create_real(pool_t pool, struct event *event,\n\t\t
      \   const struct service_settings *set,\n\t\t    struct service_list *service_list,
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/master/service.c:356,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/master/service.c:357,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:357,1
    - Dst: service_create_real
      Src: /src/dovecot/src/master/service.c:360,1
    - Dst: event_unref
      Src: /src/dovecot/src/master/service.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - pool
    - set
    - service_list
    - error_r
    argTypes:
    - pool_t
    - struct service_settings*
    - struct service_list*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 352
    functionDepth: 14
    functionLinenumber: 352
    functionLinenumberEnd: 365
    functionName: service_create
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - event_create
    - service_create_real
    - event_unref
    - event_set_append_log_prefix
    - t_strdup_printf
    linkageType: ''
    returnType: struct service
    signature: "struct service *\nservice_create(pool_t pool, const struct service_settings
      *set,\n\t       struct service_list *service_list, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service.c:372,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/service.c:373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - service_list
    - name
    argTypes:
    - struct service_list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 377
    functionName: service_lookup
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 5
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct service
    signature: 'struct service *

      service_lookup(struct service_list *service_list, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service.c:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - service_list
    - type
    argTypes:
    - struct service_list*
    - enum service_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 389
    functionName: service_lookup_type
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 2
    functionsReached:
    - array_foreach_elem
    linkageType: ''
    returnType: struct service
    signature: 'struct service *

      service_lookup_type(struct service_list *service_list, enum service_type type)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/master/service.c:404,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/master/service.c:406,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - master_set
    - set
    argTypes:
    - struct master_settings*
    - struct service_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 408
    functionName: service_want
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_lsearch
    linkageType: ''
    returnType: bool
    signature: "bool service_want(const struct master_settings *master_set,\n\t\t\t
      struct service_settings *set)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/master/service.c:421,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service.c:430,1
    - Dst: p_array_init
      Src: /src/dovecot/src/master/service.c:431,1
    - Dst: service_want
      Src: /src/dovecot/src/master/service.c:434,1
    - Dst: service_create
      Src: /src/dovecot/src/master/service.c:437,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/master/service.c:439,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service.c:441,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/service.c:472,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 5
    argNames:
    - set
    - pool
    - event
    - services_r
    - error_r
    argTypes:
    - struct master_settings*
    - pool_t
    - struct event*
    - struct service_list**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 410
    functionDepth: 15
    functionLinenumber: 410
    functionLinenumberEnd: 473
    functionName: services_create_real
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - T_END_PASS_STR_IF
    - p_new
    - p_array_init
    - array_push_back
    - array_get
    - t_strdup_printf
    - service_create
    - service_want
    linkageType: ''
    returnType: int
    signature: "int services_create_real(const struct master_settings *set, pool_t
      pool,\n\t\t     struct event *event, struct service_list **services_r,\n\t\t
      \    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/master/service.c:492,1
    - Dst: event_create
      Src: /src/dovecot/src/master/service.c:493,1
    - Dst: services_create_real
      Src: /src/dovecot/src/master/service.c:494,1
    - Dst: event_unref
      Src: /src/dovecot/src/master/service.c:495,1
    - Dst: pool_unref
      Src: /src/dovecot/src/master/service.c:496,1
    - Dst: pool_ref
      Src: /src/dovecot/src/master/service.c:499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - set
    - services_r
    - error_r
    argTypes:
    - struct master_settings*
    - struct service_list**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 489
    functionDepth: 16
    functionLinenumber: 489
    functionLinenumberEnd: 501
    functionName: services_create
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - event_create
    - services_create_real
    - event_unref
    - pool_ref
    - pool_unref
    linkageType: ''
    returnType: int
    signature: "int services_create(const struct master_settings *set,\n\t\t    struct
      service_list **services_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:512,1
    - Dst: SERVICE_PROCESS_IS_INITIALIZED
      Src: /src/dovecot/src/master/service.c:514,1
    - Dst: kill
      Src: /src/dovecot/src/master/service.c:521,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service.c:524,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service.c:525,1
    - Dst: e_warning
      Src: /src/dovecot/src/master/service.c:529,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 4
    argNames:
    - service
    - signo
    - processes
    - uninitialized_count
    argTypes:
    - struct service*
    - int
    - struct service_process*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 503
    functionDepth: 6
    functionLinenumber: 503
    functionLinenumberEnd: 534
    functionName: service_signal_processes
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - dec2str
    - SERVICE_PROCESS_IS_INITIALIZED
    - e_error
    - e_warning
    - kill
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int service_signal_processes(struct service *service, int
      signo,\n\t\t\t struct service_process *processes,\n\t\t\t unsigned int *uninitialized_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: service_signal_processes
      Src: /src/dovecot/src/master/service.c:542,1
    - Dst: service_signal_processes
      Src: /src/dovecot/src/master/service.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - service
    - signo
    - uninitialized_count_r
    argTypes:
    - struct service*
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 536
    functionDepth: 7
    functionLinenumber: 536
    functionLinenumberEnd: 549
    functionName: service_signal
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 1
    functionsReached:
    - service_signal_processes
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int service_signal(struct service *service, int signo,\n\t\t\t
      \   unsigned int *uninitialized_count_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service.c:556,1
    - Dst: service_signal
      Src: /src/dovecot/src/master/service.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 551
    functionDepth: 8
    functionLinenumber: 551
    functionLinenumberEnd: 559
    functionName: service_login_notify_send
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - service_signal
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_login_notify_send(struct service *service)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: service_login_notify_send
      Src: /src/dovecot/src/master/service.c:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 561
    functionDepth: 9
    functionLinenumber: 561
    functionLinenumberEnd: 564
    functionName: service_login_notify_timeout
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - service_login_notify_send
    linkageType: ''
    returnType: void
    signature: void service_login_notify_timeout(struct service *service)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/dovecot/src/master/service.c:579,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service.c:580,1
    - Dst: timeout_add
      Src: /src/dovecot/src/master/service.c:590,1
    - Dst: service_login_notify_send
      Src: /src/dovecot/src/master/service.c:593,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - service
    - all_processes_full
    argTypes:
    - struct service*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 566
    functionDepth: 9
    functionLinenumber: 566
    functionLinenumberEnd: 595
    functionName: service_login_notify
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 4
    functionsReached:
    - e_error
    - timeout_add
    - lseek
    - service_login_notify_send
    linkageType: ''
    returnType: void
    signature: void service_login_notify(struct service *service, bool all_processes_full)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service.c:611,1
    - Dst: service_signal
      Src: /src/dovecot/src/master/service.c:615,1
    - Dst: service_signal
      Src: /src/dovecot/src/master/service.c:631,1
    - Dst: t_str_new
      Src: /src/dovecot/src/master/service.c:635,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service.c:636,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/service.c:640,1
    - Dst: e_warning
      Src: /src/dovecot/src/master/service.c:643,1
    - Dst: str_c
      Src: /src/dovecot/src/master/service.c:643,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 597
    functionDepth: 8
    functionLinenumber: 597
    functionLinenumberEnd: 645
    functionName: services_kill_timeout
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - array_foreach_elem
    - e_warning
    - service_signal
    linkageType: ''
    returnType: void
    signature: void services_kill_timeout(struct service_list *service_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/master/service.c:650,1
    - Dst: services_monitor_reap_children
      Src: /src/dovecot/src/master/service.c:653,1
    - Dst: services_monitor_stop
      Src: /src/dovecot/src/master/service.c:655,1
    - Dst: timeout_add
      Src: /src/dovecot/src/master/service.c:659,1
    - Dst: service_list_unref
      Src: /src/dovecot/src/master/service.c:664,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - service_list
    - wait
    argTypes:
    - struct service_list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 647
    functionDepth: 17
    functionLinenumber: 647
    functionLinenumberEnd: 665
    functionName: services_destroy
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 2
    functionsReached:
    - services_monitor_stop
    - timeout_add
    - services_monitor_reap_children
    - master_service_get_service_settings
    - service_list_unref
    linkageType: ''
    returnType: void
    signature: void services_destroy(struct service_list *service_list, bool wait)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 671
    functionName: service_list_ref
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void service_list_ref(struct service_list *service_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:678,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service.c:682,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:683,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:684,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:685,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:686,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:687,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service.c:688,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service.c:689,1
    - Dst: event_unref
      Src: /src/dovecot/src/master/service.c:690,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service.c:692,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service.c:694,1
    - Dst: event_unref
      Src: /src/dovecot/src/master/service.c:695,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/service.c:696,1
    - Dst: pool_unref
      Src: /src/dovecot/src/master/service.c:697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 673
    functionDepth: 6
    functionLinenumber: 673
    functionLinenumberEnd: 698
    functionName: service_list_unref
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 3
    functionsReached:
    - event_unref
    - array_foreach_elem
    - i_close_fd
    - settings_free
    - pool_unref
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_list_unref(struct service_list *service_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/master/service.c:705,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service.c:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 708
    functionName: services_get_config_socket_path
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 2
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *services_get_config_socket_path(struct service_list *service_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/master/service.c:712,1
    - Dst: service_monitor_listen_start
      Src: /src/dovecot/src/master/service.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 710
    functionDepth: 8
    functionLinenumber: 710
    functionLinenumberEnd: 714
    functionName: service_throttle_timeout
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - service_monitor_listen_start
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void service_throttle_timeout(struct service *service)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service.c:721,1
    - Dst: net_accept
      Src: /src/dovecot/src/master/service.c:729,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service.c:731,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 716
    functionDepth: 3
    functionLinenumber: 716
    functionLinenumberEnd: 737
    functionName: service_drop_listener_connections
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 0
    functionsReached:
    - net_accept
    - i_close_fd
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void service_drop_listener_connections(struct service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: service_drop_listener_connections
      Src: /src/dovecot/src/master/service.c:746,1
    - Dst: service_monitor_listen_stop
      Src: /src/dovecot/src/master/service.c:748,1
    - Dst: timeout_add
      Src: /src/dovecot/src/master/service.c:749,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - service
    - msecs
    argTypes:
    - struct service*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 739
    functionDepth: 7
    functionLinenumber: 739
    functionLinenumberEnd: 751
    functionName: service_throttle
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 1
    functionsReached:
    - service_monitor_listen_stop
    - timeout_add
    - service_drop_listener_connections
    linkageType: ''
    returnType: void
    signature: void service_throttle(struct service *service, unsigned int msecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service.c:758,1
    - Dst: service_throttle
      Src: /src/dovecot/src/master/service.c:760,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - list
    - msecs
    argTypes:
    - struct service_list*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 753
    functionDepth: 8
    functionLinenumber: 753
    functionLinenumberEnd: 762
    functionName: services_throttle_time_sensitives
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 1
    functionsReached:
    - service_throttle
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void services_throttle_time_sensitives(struct service_list *list,\n\t\t\t\t
      \      unsigned int msecs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/master/service.c:766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 764
    functionDepth: 0
    functionLinenumber: 764
    functionLinenumberEnd: 767
    functionName: service_pids_init
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 1
    functionsReached:
    - hash_table_create_direct
    linkageType: ''
    returnType: void
    signature: void service_pids_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/master/service.c:776,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/master/service.c:777,1
    - Dst: service_process_destroy
      Src: /src/dovecot/src/master/service.c:778,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/master/service.c:779,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/master/service.c:780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 769
    functionDepth: 8
    functionLinenumber: 769
    functionLinenumberEnd: 781
    functionName: service_pids_deinit
    functionSourceFile: /src/dovecot/src/master/service.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - service_process_destroy
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void service_pids_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-listen.c:24,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-listen.c:25,1
    - Dst: I_MAX
      Src: /src/dovecot/src/master/service-listen.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 33
    functionName: service_get_backlog
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - i_assert
    - I_MAX
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int service_get_backlog(struct service *service)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: chown
      Src: /src/dovecot/src/master/service-listen.c:46,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:47,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - l
    - path
    - error_r
    argTypes:
    - struct service_listener*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 35
    functionDepth: 11
    functionLinenumber: 35
    functionLinenumberEnd: 52
    functionName: service_file_chown
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - chown
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int service_file_chown(const struct service_listener *l, const char
      *path,\n\t\t   const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/dovecot/src/master/service-listen.c:62,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/master/service-listen.c:64,1
    - Dst: service_get_backlog
      Src: /src/dovecot/src/master/service-listen.c:64,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:69,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/master/service-listen.c:77,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service-listen.c:83,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:84,1
    - Dst: unlink
      Src: /src/dovecot/src/master/service-listen.c:90,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:91,1
    - Dst: umask
      Src: /src/dovecot/src/master/service-listen.c:96,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-listen.c:98,1
    - Dst: service_file_chown
      Src: /src/dovecot/src/master/service-listen.c:100,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service-listen.c:101,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/master/service-listen.c:104,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-listen.c:105,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 4
    argNames:
    - l
    - path
    - verify_addrinuse
    - error_r
    argTypes:
    - struct service_listener*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 54
    functionDepth: 12
    functionLinenumber: 54
    functionLinenumberEnd: 109
    functionName: service_unix_listener_listen
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 1
    functionsReached:
    - net_connect_unix
    - net_listen_unix
    - fd_close_on_exec
    - i_close_fd
    - umask
    - unlink
    - t_strdup_printf
    - service_file_chown
    - service_get_backlog
    - net_set_nonblock
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int service_unix_listener_listen(struct service_listener *l, const
      char *path,\n\t\t\t\t bool verify_addrinuse, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/dovecot/src/master/service-listen.c:120,1
    - Dst: mkfifo
      Src: /src/dovecot/src/master/service-listen.c:121,1
    - Dst: umask
      Src: /src/dovecot/src/master/service-listen.c:122,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:127,1
    - Dst: unlink
      Src: /src/dovecot/src/master/service-listen.c:131,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:132,1
    - Dst: service_file_chown
      Src: /src/dovecot/src/master/service-listen.c:137,1
    - Dst: open
      Src: /src/dovecot/src/master/service-listen.c:142,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:144,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-listen.c:148,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - l
    - error_r
    argTypes:
    - struct service_listener*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 111
    functionDepth: 12
    functionLinenumber: 111
    functionLinenumberEnd: 152
    functionName: service_fifo_listener_listen
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - mkfifo
    - fd_close_on_exec
    - umask
    - unlink
    - t_strdup_printf
    - service_file_chown
    - open
    linkageType: ''
    returnType: int
    signature: int service_fifo_listener_listen(struct service_listener *l, const
      char **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sd_listen_fds
      Src: /src/dovecot/src/master/service-listen.c:163,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:165,1
    - Dst: strerror
      Src: /src/dovecot/src/master/service-listen.c:166,1
    - Dst: sd_is_socket_inet
      Src: /src/dovecot/src/master/service-listen.c:173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - ip
    - port
    - fd_r
    - error_r
    argTypes:
    - struct ip_addr*
    - in_port_t
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 155
    functionDepth: 11
    functionLinenumber: 155
    functionLinenumberEnd: 182
    functionName: systemd_listen_fd
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - sd_is_socket_inet
    - sd_listen_fds
    - strerror
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int systemd_listen_fd(const struct ip_addr *ip, in_port_t port, int
      *fd_r,\n\t\t  const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: systemd_listen_fd
      Src: /src/dovecot/src/master/service-listen.c:195,1
    - Dst: net_listen_full
      Src: /src/dovecot/src/master/service-listen.c:203,1
    - Dst: service_get_backlog
      Src: /src/dovecot/src/master/service-listen.c:204,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:206,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/master/service-listen.c:212,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-listen.c:213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - l
    - error_r
    argTypes:
    - struct service_listener*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 185
    functionDepth: 12
    functionLinenumber: 185
    functionLinenumberEnd: 217
    functionName: service_inet_listener_listen
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - fd_close_on_exec
    - systemd_listen_fd
    - t_strdup_printf
    - service_get_backlog
    - net_set_nonblock
    - net_listen_full
    linkageType: ''
    returnType: int
    signature: int service_inet_listener_listen(struct service_listener *l, const
      char **error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: service_unix_listener_listen
      Src: /src/dovecot/src/master/service-listen.c:226,1
    - Dst: service_fifo_listener_listen
      Src: /src/dovecot/src/master/service-listen.c:230,1
    - Dst: service_inet_listener_listen
      Src: /src/dovecot/src/master/service-listen.c:233,1
    - Dst: i_unreached
      Src: /src/dovecot/src/master/service-listen.c:236,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-listen.c:239,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct service_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 219
    functionDepth: 13
    functionLinenumber: 219
    functionLinenumberEnd: 241
    functionName: service_listener_listen
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 1
    functionsReached:
    - i_unreached
    - service_unix_listener_listen
    - e_error
    - service_inet_listener_listen
    - service_fifo_listener_listen
    linkageType: ''
    returnType: int
    signature: int service_listener_listen(struct service_listener *l)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-listen.c:248,1
    - Dst: service_listener_listen
      Src: /src/dovecot/src/master/service-listen.c:252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - service
    argTypes:
    - struct service*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 243
    functionDepth: 14
    functionLinenumber: 243
    functionLinenumberEnd: 257
    functionName: service_listen
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - service_listener_listen
    - array_foreach_elem
    linkageType: ''
    returnType: int
    signature: int service_listen(struct service *service)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/master/service-listen.c:274,1
    - Dst: getsockname
      Src: /src/dovecot/src/master/service-listen.c:277,1
    - Dst: ntohs
      Src: /src/dovecot/src/master/service-listen.c:287,1
    - Dst: ntohs
      Src: /src/dovecot/src/master/service-listen.c:292,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - fd
    - family_r
    - port_r
    argTypes:
    - int
    - sa_family_t*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 296
    functionName: get_socket_info
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - i_zero
    - getsockname
    - ntohs
    linkageType: ''
    returnType: int
    signature: int get_socket_info(int fd, sa_family_t *family_r, in_port_t *port_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sd_listen_fds
      Src: /src/dovecot/src/master/service-listen.c:305,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-listen.c:307,1
    - Dst: sd_is_socket_inet
      Src: /src/dovecot/src/master/service-listen.c:315,1
    - Dst: get_socket_info
      Src: /src/dovecot/src/master/service-listen.c:319,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-listen.c:321,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-listen.c:324,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-listen.c:337,1
    - Dst: shutdown
      Src: /src/dovecot/src/master/service-listen.c:341,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-listen.c:343,1
    - Dst: dup2
      Src: /src/dovecot/src/master/service-listen.c:345,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-listen.c:346,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 34
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 353
    functionName: services_verify_systemd
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - get_socket_info
    - shutdown
    - dup2
    - array_foreach_elem
    - sd_is_socket_inet
    - e_error
    - sd_listen_fds
    linkageType: ''
    returnType: int
    signature: int services_verify_systemd(struct service_list *service_list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-listen.c:364,1
    - Dst: umask
      Src: /src/dovecot/src/master/service-listen.c:365,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/master/service-listen.c:366,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/master/service-listen.c:370,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/master/service-listen.c:371,1
    - Dst: umask
      Src: /src/dovecot/src/master/service-listen.c:373,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-listen.c:376,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-listen.c:380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 356
    functionDepth: 11
    functionLinenumber: 356
    functionLinenumberEnd: 382
    functionName: services_listen_master
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - net_listen_unix
    - fd_close_on_exec
    - umask
    - t_strdup_printf
    - e_error
    - i_unlink_if_exists
    linkageType: ''
    returnType: int
    signature: int services_listen_master(struct service_list *service_list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-listen.c:389,1
    - Dst: service_listen
      Src: /src/dovecot/src/master/service-listen.c:390,1
    - Dst: services_listen_master
      Src: /src/dovecot/src/master/service-listen.c:396,1
    - Dst: services_verify_systemd
      Src: /src/dovecot/src/master/service-listen.c:403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 384
    functionDepth: 15
    functionLinenumber: 384
    functionLinenumberEnd: 406
    functionName: services_listen
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 1
    functionsReached:
    - service_listen
    - services_verify_systemd
    - services_listen_master
    - array_foreach_elem
    linkageType: ''
    returnType: int
    signature: int services_listen(struct service_list *service_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/master/service-listen.c:423,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - l1
    - l2
    argTypes:
    - struct service_listener*
    - struct service_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 431
    functionName: listener_equals
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool listener_equals(const struct service_listener *l1,\n\t\t\t    const
      struct service_listener *l2)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: service_lookup_type
      Src: /src/dovecot/src/master/service-listen.c:447,1
    - Dst: service_lookup_type
      Src: /src/dovecot/src/master/service-listen.c:448,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service-listen.c:450,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service-listen.c:451,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-listen.c:457,1
    - Dst: t_array_init
      Src: /src/dovecot/src/master/service-listen.c:468,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service-listen.c:469,1
    - Dst: array_append_array
      Src: /src/dovecot/src/master/service-listen.c:471,1
    - Dst: t_array_init
      Src: /src/dovecot/src/master/service-listen.c:473,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service-listen.c:474,1
    - Dst: array_append_array
      Src: /src/dovecot/src/master/service-listen.c:476,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service-listen.c:479,1
    - Dst: array_get
      Src: /src/dovecot/src/master/service-listen.c:480,1
    - Dst: listener_equals
      Src: /src/dovecot/src/master/service-listen.c:485,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/master/service-listen.c:499,1
    - Dst: i_unlink
      Src: /src/dovecot/src/master/service-listen.c:503,1
    - Dst: services_listen
      Src: /src/dovecot/src/master/service-listen.c:512,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 57
    argCount: 2
    argNames:
    - new_service_list
    - old_service_list
    argTypes:
    - struct service_list*
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 433
    functionDepth: 16
    functionLinenumber: 433
    functionLinenumberEnd: 513
    functionName: services_listen_using
    functionSourceFile: /src/dovecot/src/master/service-listen.c
    functionUses: 1
    functionsReached:
    - listener_equals
    - services_listen
    - i_close_fd
    - array_get
    - i_unlink
    - e_error
    - service_lookup_type
    - t_array_init
    - array_append_array
    linkageType: ''
    returnType: int
    signature: "int services_listen_using(struct service_list *new_service_list,\n\t\t\t
      \ struct service_list *old_service_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - process
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: SERVICE_PROCESS_IS_INITIALIZED
    functionSourceFile: /src/dovecot/src/master/service-process.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SERVICE_PROCESS_IS_INITIALIZED(process)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: DEF
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: DEF
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: DEF
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: DEF
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: DEF
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:275,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - user
    - default_r
    - set
    argTypes:
    - char**
    - enum service_user_default*
    - struct master_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 284
    functionName: expand_user
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void expand_user(const char **user, enum service_user_default *default_r,\n\t
      \   const struct master_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - group
    - set
    argTypes:
    - char**
    - struct master_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 294
    functionName: expand_group
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void expand_group(const char **group, const struct master_settings
      *set)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: expand_user
      Src: /src/dovecot/src/master/master-settings.c:325,1
    - Dst: expand_group
      Src: /src/dovecot/src/master/master-settings.c:326,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/master/master-settings.c:328,1
    - Dst: strncmp
      Src: /src/dovecot/src/master/master-settings.c:330,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/master-settings.c:333,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/master-settings.c:337,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 319
    functionDepth: 8
    functionLinenumber: 319
    functionLinenumberEnd: 338
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 239
    functionsReached:
    - expand_user
    - array_push_back
    - expand_group
    - i_warning
    - p_strconcat
    - strncmp
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(l, set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:354,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:355,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/master-settings.c:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 352
    functionDepth: 11
    functionLinenumber: 352
    functionLinenumberEnd: 359
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 240
    functionsReached:
    - t_strdup_printf
    - array_push_back
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(l, set)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:367,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:369,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:371,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:373,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:375,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:377,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/master-settings.c:380,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct service_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 362
    functionDepth: 8
    functionLinenumber: 362
    functionLinenumberEnd: 385
    functionName: master_settings_parse_type
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_strconcat
    linkageType: ''
    returnType: bool
    signature: "bool master_settings_parse_type(struct service_settings *set,\n\t\t\t\t
      \      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/master/master-settings.c:394,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct service_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 397
    functionName: service_set_login_dump_core
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: void
    signature: void service_set_login_dump_core(struct service_settings *set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:404,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - set
    - name
    argTypes:
    - struct master_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 409
    functionName: services_have_protocol
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool services_have_protocol(struct master_settings *set, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 420
    functionName: master_default_settings_get_service
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct service_settings
    signature: 'struct service_settings *

      master_default_settings_get_service(const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:428,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:429,1
    - Dst: i_panic
      Src: /src/dovecot/src/master/master-settings.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - set
    - name
    argTypes:
    - struct master_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 423
    functionDepth: 2
    functionLinenumber: 423
    functionLinenumberEnd: 433
    functionName: service_get_client_limit
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 10
    functionsReached:
    - strcmp
    - i_panic
    - array_foreach_elem
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int service_get_client_limit(struct master_settings *set,
      const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/master/master-settings.c:440,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/master/master-settings.c:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - set
    - service
    argTypes:
    - struct master_settings*
    - struct service_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 442
    functionName: service_is_enabled
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_lsearch
    linkageType: ''
    returnType: bool
    signature: "bool service_is_enabled(const struct master_settings *set,\n\t\t\t
      \      struct service_settings *service)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/master/master-settings.c:456,1
    - Dst: event_create
      Src: /src/dovecot/src/master/master-settings.c:459,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/master/master-settings.c:460,1
    - Dst: p_array_init
      Src: /src/dovecot/src/master/master-settings.c:462,1
    - Dst: array_count
      Src: /src/dovecot/src/master/master-settings.c:462,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/master/master-settings.c:464,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:466,1
    - Dst: p_memdup
      Src: /src/dovecot/src/master/master-settings.c:472,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/master/master-settings.c:474,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/master-settings.c:475,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/master-settings.c:476,1
    - Dst: event_unref
      Src: /src/dovecot/src/master/master-settings.c:478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 8
    argNames:
    - pool
    - event
    - set_name
    - service_name
    - info
    - listener_names
    - parsed_listeners
    - error_r
    argTypes:
    - pool_t
    - struct event*
    - char*
    - char*
    - struct setting_parser_info*
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 444
    functionDepth: 11
    functionLinenumber: 444
    functionLinenumberEnd: 480
    functionName: master_service_get_file_listeners
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - event_create
    - pool_add_external_ref
    - event_unref
    - p_array_init
    - array_push_back
    - t_strdup_printf
    - settings_free
    - array_count
    - settings_event_add_list_filter_name
    - settings_get_filter
    - array_is_created
    - p_memdup
    linkageType: ''
    returnType: bool
    signature: "bool master_service_get_file_listeners(pool_t pool, struct event *event,\n\t\t\t\t
      \ const char *set_name, const char *service_name,\n\t\t\t\t  const struct setting_parser_info
      *info,\n\t\t\t\t  const ARRAY_TYPE(const_string) *listener_names,\n\t\t\t\t
      \ ARRAY_TYPE(file_listener_settings) *parsed_listeners,\n\t\t\t\t  const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get_filter
      Src: /src/dovecot/src/master/master-settings.c:464,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:466,1
    - Dst: p_memdup
      Src: /src/dovecot/src/master/master-settings.c:472,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/master/master-settings.c:474,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/master-settings.c:475,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/master-settings.c:476,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 463
    functionDepth: 11
    functionLinenumber: 463
    functionLinenumberEnd: 477
    functionName: array_foreach_elem
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 242
    functionsReached:
    - array_push_back
    - t_strdup_printf
    - settings_free
    - settings_get_filter
    - pool_add_external_ref
    - p_memdup
    linkageType: ''
    returnType: void
    signature: void array_foreach_elem(listener_names, name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/master/master-settings.c:493,1
    - Dst: event_create
      Src: /src/dovecot/src/master/master-settings.c:496,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/master/master-settings.c:497,1
    - Dst: p_array_init
      Src: /src/dovecot/src/master/master-settings.c:499,1
    - Dst: array_count
      Src: /src/dovecot/src/master/master-settings.c:500,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:501,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/master/master-settings.c:502,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:505,1
    - Dst: event_create
      Src: /src/dovecot/src/master/master-settings.c:512,1
    - Dst: settings_event_add_list_filter_name
      Src: /src/dovecot/src/master/master-settings.c:513,1
    - Dst: settings_get
      Src: /src/dovecot/src/master/master-settings.c:515,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:518,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/master-settings.c:522,1
    - Dst: event_unref
      Src: /src/dovecot/src/master/master-settings.c:523,1
    - Dst: event_unref
      Src: /src/dovecot/src/master/master-settings.c:526,1
    - Dst: p_memdup
      Src: /src/dovecot/src/master/master-settings.c:529,1
    - Dst: array_count
      Src: /src/dovecot/src/master/master-settings.c:530,1
    - Dst: p_array_init
      Src: /src/dovecot/src/master/master-settings.c:531,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/master/master-settings.c:533,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:535,1
    - Dst: array_append_space
      Src: /src/dovecot/src/master/master-settings.c:537,1
    - Dst: p_strdup
      Src: /src/dovecot/src/master/master-settings.c:538,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/master-settings.c:540,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/master-settings.c:542,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/master-settings.c:544,1
    - Dst: event_unref
      Src: /src/dovecot/src/master/master-settings.c:546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - service_set
    - service_name
    - pool
    - event
    - error_r
    argTypes:
    - struct service_settings*
    - char*
    - pool_t
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 482
    functionDepth: 11
    functionLinenumber: 482
    functionLinenumberEnd: 548
    functionName: master_service_get_inet_listeners
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - event_create
    - pool_add_external_ref
    - event_unref
    - p_array_init
    - array_append_space
    - array_foreach_elem
    - p_strdup
    - array_push_back
    - t_strdup_printf
    - settings_free
    - array_count
    - settings_event_add_list_filter_name
    - settings_get_filter
    - array_is_created
    - settings_get
    - p_memdup
    linkageType: ''
    returnType: bool
    signature: "bool master_service_get_inet_listeners(struct service_settings *service_set,\n\t\t\t\t
      \ const char *service_name,\n\t\t\t\t  pool_t pool, struct event *event,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/master/master-settings.c:557,1
    - Dst: array_count
      Src: /src/dovecot/src/master/master-settings.c:558,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:559,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/master/master-settings.c:560,1
    - Dst: event_find_field_recursive
      Src: /src/dovecot/src/master/master-settings.c:563,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:566,1
    - Dst: p_memdup
      Src: /src/dovecot/src/master/master-settings.c:571,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/master/master-settings.c:573,1
    - Dst: array_push_back
      Src: /src/dovecot/src/master/master-settings.c:574,1
    - Dst: settings_free
      Src: /src/dovecot/src/master/master-settings.c:575,1
    - Dst: master_service_get_file_listeners
      Src: /src/dovecot/src/master/master-settings.c:577,1
    - Dst: master_service_get_file_listeners
      Src: /src/dovecot/src/master/master-settings.c:584,1
    - Dst: master_service_get_inet_listeners
      Src: /src/dovecot/src/master/master-settings.c:591,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - set
    - pool
    - event
    - error_r
    argTypes:
    - struct master_settings*
    - pool_t
    - struct event*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 550
    functionDepth: 12
    functionLinenumber: 550
    functionLinenumberEnd: 597
    functionName: master_settings_get_services
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - master_service_get_inet_listeners
    - array_foreach_elem
    - array_push_back
    - t_strdup_printf
    - settings_free
    - event_find_field_recursive
    - array_count
    - settings_get_filter
    - master_service_get_file_listeners
    - pool_add_external_ref
    - p_memdup
    linkageType: ''
    returnType: int
    signature: "int master_settings_get_services(struct master_settings *set, pool_t
      pool,\n\t\t\t     struct event *event, const char **error_r)"
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/master/master-settings.c:607,1
    - Dst: t_str_new
      Src: /src/dovecot/src/master/master-settings.c:611,1
    - Dst: t_str_new
      Src: /src/dovecot/src/master/master-settings.c:612,1
    - Dst: strlen
      Src: /src/dovecot/src/master/master-settings.c:624,1
    - Dst: p_strndup
      Src: /src/dovecot/src/master/master-settings.c:627,1
    - Dst: i_getpwnam
      Src: /src/dovecot/src/master/master-settings.c:641,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:642,1
    - Dst: i_getpwnam
      Src: /src/dovecot/src/master/master-settings.c:646,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:647,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/master-settings.c:654,1
    - Dst: array_count
      Src: /src/dovecot/src/master/master-settings.c:655,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/master/master-settings.c:663,1
    - Dst: master_settings_get_services
      Src: /src/dovecot/src/master/master-settings.c:667,1
    - Dst: array_get
      Src: /src/dovecot/src/master/master-settings.c:669,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:674,1
    - Dst: master_settings_parse_type
      Src: /src/dovecot/src/master/master-settings.c:678,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:681,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:682,1
    - Dst: expand_user
      Src: /src/dovecot/src/master/master-settings.c:688,1
    - Dst: expand_groups
      Src: /src/dovecot/src/master/master-settings.c:689,1
    - Dst: service_set_login_dump_core
      Src: /src/dovecot/src/master/master-settings.c:690,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/master-settings.c:693,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:694,1
    - Dst: services_have_protocol
      Src: /src/dovecot/src/master/master-settings.c:695,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:696,1
    - Dst: t_array_init
      Src: /src/dovecot/src/master/master-settings.c:702,1
    - Dst: service_is_enabled
      Src: /src/dovecot/src/master/master-settings.c:708,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/master/master-settings.c:716,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/master/master-settings.c:721,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:726,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:733,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:739,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:745,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:751,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:758,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:765,1
    - Dst: master_default_settings_get_service
      Src: /src/dovecot/src/master/master-settings.c:773,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:776,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:783,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:793,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:794,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/master-settings.c:795,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:801,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:802,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/master-settings.c:804,1
    - Dst: fix_file_listener_paths
      Src: /src/dovecot/src/master/master-settings.c:809,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:811,1
    - Dst: fix_file_listener_paths
      Src: /src/dovecot/src/master/master-settings.c:815,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:817,1
    - Dst: add_inet_listeners
      Src: /src/dovecot/src/master/master-settings.c:821,1
    - Dst: service_get_client_limit
      Src: /src/dovecot/src/master/master-settings.c:824,1
    - Dst: str_delete
      Src: /src/dovecot/src/master/master-settings.c:827,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/master-settings.c:828,1
    - Dst: str_c
      Src: /src/dovecot/src/master/master-settings.c:832,1
    - Dst: service_get_client_limit
      Src: /src/dovecot/src/master/master-settings.c:835,1
    - Dst: str_delete
      Src: /src/dovecot/src/master/master-settings.c:838,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/master-settings.c:839,1
    - Dst: str_c
      Src: /src/dovecot/src/master/master-settings.c:842,1
    - Dst: restrict_get_fd_limit
      Src: /src/dovecot/src/master/master-settings.c:845,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/master-settings.c:847,1
    - Dst: array_sort
      Src: /src/dovecot/src/master/master-settings.c:855,1
    - Dst: array_get
      Src: /src/dovecot/src/master/master-settings.c:856,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:858,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/master-settings.c:859,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 155
    argCount: 4
    argNames:
    - event
    - _set
    - pool
    - error_r
    argTypes:
    - struct event*
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 599
    functionDepth: 13
    functionLinenumber: 599
    functionLinenumberEnd: 865
    functionName: master_settings_ext_check
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - add_inet_listeners
    - strlen
    - t_strdup_printf
    - array_is_empty
    - master_settings_get_services
    - array_count
    - expand_groups
    - service_get_client_limit
    - array_sort
    - t_str_new
    - array_foreach_elem
    - i_getpwnam
    - p_strndup
    - array_get
    - restrict_get_fd_limit
    - fix_file_listener_paths
    - str_delete
    - p_strconcat
    - master_settings_parse_type
    - strcmp
    - expand_user
    - master_default_settings_get_service
    - service_is_enabled
    - i_warning
    - t_array_init
    - ARRAY_TYPE
    - service_set_login_dump_core
    - array_is_created
    - services_have_protocol
    linkageType: ''
    returnType: bool
    signature: "bool master_settings_ext_check(struct event *event, void *_set,\n\t\t\t
      \ pool_t pool, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:878,1
    - Dst: get_uidgid
      Src: /src/dovecot/src/master/master-settings.c:882,1
    - Dst: get_gid
      Src: /src/dovecot/src/master/master-settings.c:884,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - set
    - gid_r
    argTypes:
    - struct master_settings*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 868
    functionDepth: 12
    functionLinenumber: 868
    functionLinenumberEnd: 888
    functionName: login_want_core_dumps
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - get_uidgid
    - get_gid
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool login_want_core_dumps(const struct master_settings *set, gid_t
      *gid_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/master/master-settings.c:898,1
    - Dst: i_error
      Src: /src/dovecot/src/master/master-settings.c:900,1
    - Dst: strlen
      Src: /src/dovecot/src/master/master-settings.c:904,1
    - Dst: t_str_new
      Src: /src/dovecot/src/master/master-settings.c:905,1
    - Dst: readdir
      Src: /src/dovecot/src/master/master-settings.c:906,1
    - Dst: strncmp
      Src: /src/dovecot/src/master/master-settings.c:910,1
    - Dst: str_truncate
      Src: /src/dovecot/src/master/master-settings.c:913,1
    - Dst: str_printfa
      Src: /src/dovecot/src/master/master-settings.c:914,1
    - Dst: lstat
      Src: /src/dovecot/src/master/master-settings.c:915,1
    - Dst: str_c
      Src: /src/dovecot/src/master/master-settings.c:915,1
    - Dst: i_error
      Src: /src/dovecot/src/master/master-settings.c:917,1
    - Dst: str_c
      Src: /src/dovecot/src/master/master-settings.c:917,1
    - Dst: S_ISSOCK
      Src: /src/dovecot/src/master/master-settings.c:920,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/master/master-settings.c:929,1
    - Dst: str_c
      Src: /src/dovecot/src/master/master-settings.c:929,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/master-settings.c:931,1
    - Dst: str_c
      Src: /src/dovecot/src/master/master-settings.c:933,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/master/master-settings.c:937,1
    - Dst: str_c
      Src: /src/dovecot/src/master/master-settings.c:937,1
    - Dst: closedir
      Src: /src/dovecot/src/master/master-settings.c:939,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 2
    argNames:
    - path
    - prefix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 890
    functionDepth: 4
    functionLinenumber: 890
    functionLinenumberEnd: 940
    functionName: unlink_sockets
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - readdir
    - t_str_new
    - str_printfa
    - opendir
    - i_error
    - str_c
    - S_ISSOCK
    - net_connect_unix
    - strlen
    - i_fatal
    - closedir
    - i_unlink_if_exists
    - str_truncate
    - strncmp
    - lstat
    linkageType: ''
    returnType: void
    signature: void unlink_sockets(const char *path, const char *prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: login_want_core_dumps
      Src: /src/dovecot/src/master/master-settings.c:950,1
    - Dst: safe_mkdir
      Src: /src/dovecot/src/master/master-settings.c:951,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/master-settings.c:952,1
    - Dst: unlink_sockets
      Src: /src/dovecot/src/master/master-settings.c:956,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - set
    - login_dir
    argTypes:
    - struct master_settings*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 942
    functionDepth: 13
    functionLinenumber: 942
    functionLinenumberEnd: 957
    functionName: mkdir_login_dir
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - login_want_core_dumps
    - safe_mkdir
    - i_warning
    - unlink_sockets
    linkageType: ''
    returnType: void
    signature: void mkdir_login_dir(const struct master_settings *set, const char
      *login_dir)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_uidgid
      Src: /src/dovecot/src/master/master-settings.c:970,1
    - Dst: get_gid
      Src: /src/dovecot/src/master/master-settings.c:971,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/master-settings.c:972,1
    - Dst: mkdir
      Src: /src/dovecot/src/master/master-settings.c:973,1
    - Dst: chown
      Src: /src/dovecot/src/master/master-settings.c:974,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/master-settings.c:975,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/master-settings.c:977,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - set
    - dir
    - mode
    argTypes:
    - struct file_listener_settings*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 959
    functionDepth: 12
    functionLinenumber: 959
    functionLinenumberEnd: 979
    functionName: mkdir_listener
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - get_gid
    - get_uidgid
    - mkdir
    - chown
    linkageType: ''
    returnType: void
    signature: "void mkdir_listener(const struct file_listener_settings *set,\n\t\t\t
      \  const char *dir, unsigned int mode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - struct file_listener_settings**
    - struct file_listener_settings**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 981
    functionDepth: 0
    functionLinenumber: 981
    functionLinenumberEnd: 986
    functionName: file_listener_settings_cmp_path
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int file_listener_settings_cmp_path(struct file_listener_settings
      *const *f1,\n\t\t\t\tstruct file_listener_settings *const *f2)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/master/master-settings.c:1014,1
    - Dst: t_array_init
      Src: /src/dovecot/src/master/master-settings.c:1022,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/master-settings.c:1023,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:1024,1
    - Dst: service_is_enabled
      Src: /src/dovecot/src/master/master-settings.c:1025,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/master-settings.c:1028,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:1029,1
    - Dst: subdir_add
      Src: /src/dovecot/src/master/master-settings.c:1030,1
    - Dst: array_is_created
      Src: /src/dovecot/src/master/master-settings.c:1032,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/master-settings.c:1033,1
    - Dst: subdir_add
      Src: /src/dovecot/src/master/master-settings.c:1034,1
    - Dst: array_sort
      Src: /src/dovecot/src/master/master-settings.c:1039,1
    - Dst: array_get
      Src: /src/dovecot/src/master/master-settings.c:1040,1
    - Dst: strrchr
      Src: /src/dovecot/src/master/master-settings.c:1043,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/master-settings.c:1044,1
    - Dst: strrchr
      Src: /src/dovecot/src/master/master-settings.c:1055,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/master-settings.c:1056,1
    - Dst: memcmp
      Src: /src/dovecot/src/master/master-settings.c:1059,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:1062,1
    - Dst: strcmp
      Src: /src/dovecot/src/master/master-settings.c:1066,1
    - Dst: mkdir_listener
      Src: /src/dovecot/src/master/master-settings.c:1076,1
    - Dst: t_strndup
      Src: /src/dovecot/src/master/master-settings.c:1076,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct master_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1011
    functionDepth: 13
    functionLinenumber: 1011
    functionLinenumberEnd: 1080
    functionName: mkdir_listener_subdirs
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strrchr
    - array_foreach_elem
    - subdir_add
    - service_is_enabled
    - array_get
    - t_strndup
    - t_array_init
    - ARRAY_TYPE
    - memcmp
    - array_sort
    - array_is_created
    - i_assert
    - t_strconcat
    - mkdir_listener
    linkageType: ''
    returnType: void
    signature: void mkdir_listener_subdirs(const struct master_settings *set)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mkdir_parents
      Src: /src/dovecot/src/master/master-settings.c:1089,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/master-settings.c:1090,1
    - Dst: stat
      Src: /src/dovecot/src/master/master-settings.c:1092,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/master-settings.c:1093,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/master/master-settings.c:1094,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/master-settings.c:1095,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/master-settings.c:1097,1
    - Dst: chmod
      Src: /src/dovecot/src/master/master-settings.c:1099,1
    - Dst: i_error
      Src: /src/dovecot/src/master/master-settings.c:1100,1
    - Dst: mkdir_parents
      Src: /src/dovecot/src/master/master-settings.c:1104,1
    - Dst: i_fatal
      Src: /src/dovecot/src/master/master-settings.c:1105,1
    - Dst: mkdir_login_dir
      Src: /src/dovecot/src/master/master-settings.c:1107,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/master-settings.c:1107,1
    - Dst: mkdir_login_dir
      Src: /src/dovecot/src/master/master-settings.c:1108,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/master-settings.c:1108,1
    - Dst: mkdir_listener_subdirs
      Src: /src/dovecot/src/master/master-settings.c:1109,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/master-settings.c:1111,1
    - Dst: safe_mkdir
      Src: /src/dovecot/src/master/master-settings.c:1112,1
    - Dst: getegid
      Src: /src/dovecot/src/master/master-settings.c:1112,1
    - Dst: i_warning
      Src: /src/dovecot/src/master/master-settings.c:1113,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct master_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1082
    functionDepth: 14
    functionLinenumber: 1082
    functionLinenumberEnd: 1116
    functionName: master_settings_do_fixes
    functionSourceFile: /src/dovecot/src/master/master-settings.c
    functionUses: 1
    functionsReached:
    - t_strconcat
    - i_error
    - i_fatal
    - mkdir_parents
    - i_warning
    - mkdir_login_dir
    - stat
    - S_ISDIR
    - getegid
    - safe_mkdir
    - mkdir_listener_subdirs
    - chmod
    linkageType: ''
    returnType: void
    signature: void master_settings_do_fixes(const struct master_settings *set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 10
    functionName: drop_capabilities
    functionSourceFile: /src/dovecot/src/master/capabilities.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void drop_capabilities(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/master/service-process-notify.c:26,1
    - Dst: i_array_init
      Src: /src/dovecot/src/master/service-process-notify.c:30,1
    - Dst: aqueue_init
      Src: /src/dovecot/src/master/service-process-notify.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - write_callback
    argTypes:
    - int
    - service_process_notify_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 33
    functionName: service_process_notify_init
    functionSourceFile: /src/dovecot/src/master/service-process-notify.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - aqueue_init
    - i_new
    linkageType: ''
    returnType: struct service_process_notify
    signature: "struct service_process_notify *\nservice_process_notify_init(int fd,\n\t\t\t
      \   service_process_notify_callback_t *write_callback)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/master/service-process-notify.c:43,1
    - Dst: aqueue_count
      Src: /src/dovecot/src/master/service-process-notify.c:44,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/master/service-process-notify.c:46,1
    - Dst: service_process_unref
      Src: /src/dovecot/src/master/service-process-notify.c:47,1
    - Dst: aqueue_clear
      Src: /src/dovecot/src/master/service-process-notify.c:49,1
    - Dst: array_clear
      Src: /src/dovecot/src/master/service-process-notify.c:50,1
    - Dst: io_remove
      Src: /src/dovecot/src/master/service-process-notify.c:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - notify
    argTypes:
    - struct service_process_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 35
    functionDepth: 5
    functionLinenumber: 35
    functionLinenumberEnd: 53
    functionName: service_process_notify_reset
    functionSourceFile: /src/dovecot/src/master/service-process-notify.c
    functionUses: 0
    functionsReached:
    - array_front_modifiable
    - aqueue_clear
    - aqueue_count
    - io_remove
    - service_process_unref
    - array_clear
    - aqueue_idx
    linkageType: ''
    returnType: void
    signature: void service_process_notify_reset(struct service_process_notify *notify)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: aqueue_count
      Src: /src/dovecot/src/master/service-process-notify.c:59,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/master/service-process-notify.c:60,1
    - Dst: aqueue_idx
      Src: /src/dovecot/src/master/service-process-notify.c:61,1
    - Dst: struct service_process_notify*::write_callback
      Src: /src/dovecot/src/master/service-process-notify.c:63,1
    - Dst: service_process_notify_reset
      Src: /src/dovecot/src/master/service-process-notify.c:65,1
    - Dst: service_process_unref
      Src: /src/dovecot/src/master/service-process-notify.c:68,1
    - Dst: aqueue_delete_tail
      Src: /src/dovecot/src/master/service-process-notify.c:69,1
    - Dst: io_remove
      Src: /src/dovecot/src/master/service-process-notify.c:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - notify
    argTypes:
    - struct service_process_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 55
    functionDepth: 6
    functionLinenumber: 55
    functionLinenumberEnd: 72
    functionName: notify_flush
    functionSourceFile: /src/dovecot/src/master/service-process-notify.c
    functionUses: 3
    functionsReached:
    - array_front_modifiable
    - aqueue_count
    - io_remove
    - service_process_unref
    - struct service_process_notify*::write_callback
    - aqueue_idx
    - service_process_notify_reset
    - aqueue_delete_tail
    linkageType: ''
    returnType: void
    signature: void notify_flush(struct service_process_notify *notify)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: service_process_notify_reset
      Src: /src/dovecot/src/master/service-process-notify.c:80,1
    - Dst: io_remove
      Src: /src/dovecot/src/master/service-process-notify.c:81,1
    - Dst: aqueue_deinit
      Src: /src/dovecot/src/master/service-process-notify.c:82,1
    - Dst: array_free
      Src: /src/dovecot/src/master/service-process-notify.c:83,1
    - Dst: i_free
      Src: /src/dovecot/src/master/service-process-notify.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _notify
    argTypes:
    - struct service_process_notify**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 6
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: service_process_notify_deinit
    functionSourceFile: /src/dovecot/src/master/service-process-notify.c
    functionUses: 1
    functionsReached:
    - aqueue_deinit
    - io_remove
    - array_free
    - i_free
    - service_process_notify_reset
    linkageType: ''
    returnType: void
    signature: void service_process_notify_deinit(struct service_process_notify **_notify)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct service_process_notify*::write_callback
      Src: /src/dovecot/src/master/service-process-notify.c:90,1
    - Dst: io_add
      Src: /src/dovecot/src/master/service-process-notify.c:95,1
    - Dst: aqueue_append
      Src: /src/dovecot/src/master/service-process-notify.c:98,1
    - Dst: service_process_ref
      Src: /src/dovecot/src/master/service-process-notify.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - notify
    - process
    argTypes:
    - struct service_process_notify*
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 87
    functionDepth: 4
    functionLinenumber: 87
    functionLinenumberEnd: 101
    functionName: service_process_notify_add
    functionSourceFile: /src/dovecot/src/master/service-process-notify.c
    functionUses: 2
    functionsReached:
    - aqueue_append
    - service_process_ref
    - struct service_process_notify*::write_callback
    - io_add
    linkageType: ''
    returnType: void
    signature: "void service_process_notify_add(struct service_process_notify *notify,\n\t\t\t\tstruct
      service_process *process)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-log.c:22,1
    - Dst: pipe
      Src: /src/dovecot/src/master/service-log.c:24,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-log.c:25,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-log.c:28,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/master/service-log.c:29,1
    - Dst: i_zero
      Src: /src/dovecot/src/master/service-log.c:31,1
    - Dst: strlen
      Src: /src/dovecot/src/master/service-log.c:33,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/master/service-log.c:35,1
    - Dst: buffer_append
      Src: /src/dovecot/src/master/service-log.c:36,1
    - Dst: buffer_append
      Src: /src/dovecot/src/master/service-log.c:37,1
    - Dst: strlen
      Src: /src/dovecot/src/master/service-log.c:37,1
    - Dst: write
      Src: /src/dovecot/src/master/service-log.c:39,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-log.c:41,1
    - Dst: i_error
      Src: /src/dovecot/src/master/service-log.c:45,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 3
    argNames:
    - log_prefix
    - log_fd
    - handshake_buf
    argTypes:
    - char*
    - int[]
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 16
    functionDepth: 5
    functionLinenumber: 16
    functionLinenumberEnd: 49
    functionName: service_log_fds_init
    functionSourceFile: /src/dovecot/src/master/service-log.c
    functionUses: 0
    functionsReached:
    - i_zero
    - buffer_append
    - fd_close_on_exec
    - i_error
    - strlen
    - write
    - buffer_set_used_size
    - i_assert
    - pipe
    linkageType: ''
    returnType: int
    signature: "int service_log_fds_init(const char *log_prefix, int log_fd[2],\n\t\t\t\tbuffer_t
      *handshake_buf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/master/service-log.c:61,1
    - Dst: dec2str
      Src: /src/dovecot/src/master/service-log.c:63,1
    - Dst: write
      Src: /src/dovecot/src/master/service-log.c:64,1
    - Dst: strlen
      Src: /src/dovecot/src/master/service-log.c:64,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-log.c:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - fd
    - process
    argTypes:
    - int
    - struct service_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 51
    functionDepth: 11
    functionLinenumber: 51
    functionLinenumberEnd: 71
    functionName: service_process_write_log_bye
    functionSourceFile: /src/dovecot/src/master/service-log.c
    functionUses: 0
    functionsReached:
    - dec2str
    - strlen
    - t_strdup_printf
    - write
    - e_error
    linkageType: ''
    returnType: int
    signature: int service_process_write_log_bye(int fd, struct service_process *process)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/master/service-log.c:81,1
    - Dst: service_log_fds_init
      Src: /src/dovecot/src/master/service-log.c:82,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/master/service-log.c:87,1
    - Dst: i_assert
      Src: /src/dovecot/src/master/service-log.c:89,1
    - Dst: service_process_notify_init
      Src: /src/dovecot/src/master/service-log.c:91,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/master/service-log.c:95,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/master/service-log.c:99,1
    - Dst: service_log_fds_init
      Src: /src/dovecot/src/master/service-log.c:100,1
    - Dst: buffer_free
      Src: /src/dovecot/src/master/service-log.c:108,1
    - Dst: services_log_deinit
      Src: /src/dovecot/src/master/service-log.c:110,1
    - Dst: service_anvil_send_log_fd
      Src: /src/dovecot/src/master/service-log.c:114,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 73
    functionDepth: 8
    functionLinenumber: 73
    functionLinenumberEnd: 116
    functionName: services_log_init
    functionSourceFile: /src/dovecot/src/master/service-log.c
    functionUses: 1
    functionsReached:
    - t_strconcat
    - fd_set_nonblock
    - array_foreach_elem
    - service_process_notify_init
    - buffer_create_dynamic
    - services_log_deinit
    - service_anvil_send_log_fd
    - buffer_free
    - i_assert
    - service_log_fds_init
    linkageType: ''
    returnType: int
    signature: int services_log_init(struct service_list *service_list)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/master/service-log.c:123,1
    - Dst: close
      Src: /src/dovecot/src/master/service-log.c:126,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-log.c:127,1
    - Dst: close
      Src: /src/dovecot/src/master/service-log.c:130,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-log.c:131,1
    - Dst: service_process_notify_deinit
      Src: /src/dovecot/src/master/service-log.c:140,1
    - Dst: close
      Src: /src/dovecot/src/master/service-log.c:142,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-log.c:143,1
    - Dst: close
      Src: /src/dovecot/src/master/service-log.c:145,1
    - Dst: e_error
      Src: /src/dovecot/src/master/service-log.c:146,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - service_list
    argTypes:
    - struct service_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 118
    functionDepth: 7
    functionLinenumber: 118
    functionLinenumberEnd: 151
    functionName: services_log_deinit
    functionSourceFile: /src/dovecot/src/master/service-log.c
    functionUses: 2
    functionsReached:
    - e_error
    - service_process_notify_deinit
    - array_get
    - close
    linkageType: ''
    returnType: void
    signature: void services_log_deinit(struct service_list *service_list)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:54,1
    - Dst: dup2
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:63,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:64,1
    - Dst: dup2
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:65,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:66,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:68,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:69,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:71,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:72,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:78,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:80,1
    - Dst: dup2
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:82,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:83,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:93,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:94,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:104,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:105,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:108,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:110,1
    - Dst: env_clean
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:114,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:115,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:116,1
    - Dst: env_put_array
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:117,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:117,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:122,1
    - Dst: execvp_const
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:123,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 47
    argCount: 7
    argNames:
    - bin_path
    - args
    - envs
    - in_fd
    - out_fd
    - extra_fds
    - event
    argTypes:
    - char*
    - char**
    - ARRAY_TYPE*
    - int
    - int
    - int*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 124
    functionName: exec_child
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - dup2
    - array_append_space
    - array_push_back
    - i_fatal
    - env_clean
    - e_error
    - execvp_const
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - array_is_created
    - i_assert
    - close
    - env_put_array
    linkageType: ''
    returnType: void
    signature: "void exec_child(const char *bin_path, const char *const *args,\n\t
      \  ARRAY_TYPE(const_string) *envs, int in_fd, int out_fd,\n\t   int *extra_fds,
      struct event *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:132,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:134,1
    - Dst: program_client_local_exited
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - status
    - plclient
    argTypes:
    - struct child_wait_status*
    - struct program_client_local*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 143
    functionName: program_client_local_waitchild
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - program_client_local_exited
    linkageType: ''
    returnType: void
    signature: "void program_client_local_waitchild(const struct child_wait_status
      *status,\n\t\t\t       struct program_client_local *plclient)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:157,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:158,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:163,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:164,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:170,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:173,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:175,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:176,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:177,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:179,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:180,1
    - Dst: fork
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:194,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:195,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:198,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:199,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:202,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:203,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:206,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:207,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:210,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:211,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:215,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:216,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:220,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:221,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:230,1
    - Dst: event_disable_callbacks
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:231,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:232,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:232,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:236,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:237,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:239,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:240,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:243,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:244,1
    - Dst: exec_child
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:250,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:252,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:256,1
    - Dst: program_client_set_label
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:258,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:259,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:262,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:263,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:265,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:266,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:269,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:273,1
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:277,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:278,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:282,1
    - Dst: program_client_init_streams
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:286,1
    - Dst: child_wait_new_with_pid
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:289,1
    - Dst: program_client_connected
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:292,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 99
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 145
    functionDepth: 11
    functionLinenumber: 145
    functionLinenumberEnd: 294
    functionName: program_client_local_connect
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - fork
    - t_new
    - t_strdup_printf
    - i_unreached
    - event_set_append_log_prefix
    - program_client_init_streams
    - exec_child
    - pipe
    - program_client_connected
    - event_create
    - array_get_modifiable
    - e_error
    - event_disable_callbacks
    - net_set_nonblock
    - i_assert
    - close
    - program_client_set_label
    - child_wait_new_with_pid
    - e_debug
    - array_is_created
    linkageType: ''
    returnType: int
    signature: int program_client_local_connect(struct program_client *pclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:304,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 310
    functionName: program_client_local_close_output
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - e_error
    - close
    linkageType: ''
    returnType: int
    signature: int program_client_local_close_output(struct program_client *pclient)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:317,1
    - Dst: child_wait_free
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:319,1
    - Dst: WIFEXITED
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:326,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:328,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:331,1
    - Dst: WIFSIGNALED
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:340,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:343,1
    - Dst: WTERMSIG
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:345,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:347,1
    - Dst: WTERMSIG
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:349,1
    - Dst: WIFSTOPPED
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:351,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:353,1
    - Dst: WSTOPSIG
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:355,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:358,1
    - Dst: program_client_disconnected
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:363,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - plclient
    argTypes:
    - struct program_client_local*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 312
    functionDepth: 6
    functionLinenumber: 312
    functionLinenumberEnd: 364
    functionName: program_client_local_exited
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 1
    functionsReached:
    - WIFEXITED
    - WEXITSTATUS
    - e_info
    - WIFSTOPPED
    - WIFSIGNALED
    - WSTOPSIG
    - program_client_disconnected
    - WTERMSIG
    - e_error
    - child_wait_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void program_client_local_exited(struct program_client_local *plclient)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: child_wait_free
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:373,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:379,1
    - Dst: kill
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:382,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:383,1
    - Dst: waitpid
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:385,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:386,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - plclient
    argTypes:
    - struct program_client_local*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 389
    functionName: program_client_local_kill_now
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - e_debug
    - e_error
    - kill
    - child_wait_free
    - waitpid
    linkageType: ''
    returnType: void
    signature: void program_client_local_kill_now(struct program_client_local *plclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:397,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:399,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:406,1
    - Dst: program_client_local_kill_now
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:410,1
    - Dst: program_client_local_exited
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:411,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:415,1
    - Dst: kill
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:424,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:425,1
    - Dst: kill
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:427,1
    - Dst: program_client_local_exited
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:428,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:432,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:434,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - plclient
    argTypes:
    - struct program_client_local*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 391
    functionDepth: 7
    functionLinenumber: 391
    functionLinenumberEnd: 436
    functionName: program_client_local_kill
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - program_client_local_exited
    - e_debug
    - timeout_add_short
    - program_client_local_kill_now
    - e_error
    - kill
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void program_client_local_kill(struct program_client_local *plclient)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: program_client_local_exited
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:448,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:457,1
    - Dst: program_client_local_exited
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:459,1
    - Dst: waitpid
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:464,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:465,1
    - Dst: program_client_local_exited
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:466,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:471,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:474,1
    - Dst: program_client_local_kill
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:477,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:484,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:491,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - pclient
    - force
    argTypes:
    - struct program_client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 438
    functionDepth: 8
    functionLinenumber: 438
    functionLinenumberEnd: 494
    functionName: program_client_local_disconnect
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - program_client_local_exited
    - e_debug
    - timeout_add_short
    - program_client_local_kill
    - waitpid
    linkageType: ''
    returnType: void
    signature: void program_client_local_disconnect(struct program_client *pclient,
      bool force)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:502,1
    - Dst: program_client_local_kill_now
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:504,1
    - Dst: child_wait_deinit
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 496
    functionDepth: 6
    functionLinenumber: 496
    functionLinenumberEnd: 506
    functionName: program_client_local_destroy
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - child_wait_deinit
    - program_client_local_kill_now
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void program_client_local_destroy(struct program_client *pclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:515,1
    - Dst: child_wait_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 508
    functionDepth: 8
    functionLinenumber: 508
    functionLinenumberEnd: 517
    functionName: program_client_local_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - io_loop_move_timeout
    - child_wait_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void program_client_local_switch_ioloop(struct program_client *pclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:528,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:530,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:531,1
    - Dst: program_client_init
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:532,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:538,1
    - Dst: child_wait_init
      Src: /src/dovecot/src/lib-program-client/program-client-local.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 4
    argNames:
    - event
    - bin_path
    - args
    - params
    argTypes:
    - struct event*
    - char*
    - char**
    - struct program_client_parameters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 519
    functionDepth: 8
    functionLinenumber: 519
    functionLinenumberEnd: 544
    functionName: program_client_local_create
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-local.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - child_wait_init
    - program_client_init
    - t_strconcat
    linkageType: ''
    returnType: struct program_client
    signature: "struct program_client *\nprogram_client_local_create(struct event
      *event, const char *bin_path,\n\t\t\t    const char *const *args,\n\t\t\t    const
      struct program_client_parameters *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-program-client/program-client.c:79,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-program-client/program-client.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pclient
    - label
    argTypes:
    - struct program_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 8
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: program_client_set_label
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 1
    functionsReached:
    - event_set_append_log_prefix
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void program_client_set_label(struct program_client *pclient,\n\t\t\t
      \     const char *label)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-program-client/program-client.c:93,1
    - Dst: callback
      Src: /src/dovecot/src/lib-program-client/program-client.c:94,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - pclient
    - result
    - context
    argTypes:
    - struct program_client*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 95
    functionName: program_client_callback
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - callback
    linkageType: ''
    returnType: void
    signature: "void program_client_callback(struct program_client *pclient, int result,\n\t\t\tvoid
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:100,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 104
    functionName: program_client_timeout
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - program_client_fail
    linkageType: ''
    returnType: void
    signature: void program_client_timeout(struct program_client *pclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:109,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 113
    functionName: program_client_connect_timeout
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - program_client_fail
    linkageType: ''
    returnType: void
    signature: void program_client_connect_timeout(struct program_client *pclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:118,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-program-client/program-client.c:121,1
    - Dst: struct program_client*::connect
      Src: /src/dovecot/src/lib-program-client/program-client.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 127
    functionName: program_client_connect
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - e_debug
    - timeout_add
    - struct program_client*::connect
    linkageType: ''
    returnType: int
    signature: int program_client_connect(struct program_client *pclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:134,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:135,1
    - Dst: struct program_client*::close_output
      Src: /src/dovecot/src/lib-program-client/program-client.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 140
    functionName: program_client_close_output
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - struct program_client*::close_output
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: int program_client_close_output(struct program_client *pclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/program-client.c:148,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-program-client/program-client.c:151,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:153,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/program-client.c:154,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/program-client.c:156,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-program-client/program-client.c:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 142
    functionDepth: 5
    functionLinenumber: 142
    functionLinenumberEnd: 160
    functionName: program_client_disconnect_extra_fds
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - io_remove
    - i_close_fd
    - array_clear
    - i_stream_unref
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void program_client_disconnect_extra_fds(struct program_client *pclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:165,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:166,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:167,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:168,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client.c:170,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/program-client.c:171,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:172,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:173,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/program-client.c:177,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/program-client.c:178,1
    - Dst: program_client_disconnect_extra_fds
      Src: /src/dovecot/src/lib-program-client/program-client.c:180,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 162
    functionDepth: 6
    functionLinenumber: 162
    functionLinenumberEnd: 185
    functionName: program_client_do_disconnect
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - iostream_pump_destroy
    - io_remove
    - i_stream_destroy
    - i_close_fd
    - e_debug
    - program_client_disconnect_extra_fds
    - o_stream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void program_client_do_disconnect(struct program_client *pclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: program_client_do_disconnect
      Src: /src/dovecot/src/lib-program-client/program-client.c:189,1
    - Dst: program_client_callback
      Src: /src/dovecot/src/lib-program-client/program-client.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 187
    functionDepth: 7
    functionLinenumber: 187
    functionLinenumberEnd: 201
    functionName: program_client_disconnected
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 1
    functionsReached:
    - program_client_callback
    - program_client_do_disconnect
    linkageType: ''
    returnType: void
    signature: void program_client_disconnected(struct program_client *pclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: program_client_do_disconnect
      Src: /src/dovecot/src/lib-program-client/program-client.c:209,1
    - Dst: struct program_client*::disconnect
      Src: /src/dovecot/src/lib-program-client/program-client.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pclient
    - force
    argTypes:
    - struct program_client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 7
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: program_client_disconnect
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - struct program_client*::disconnect
    - program_client_do_disconnect
    linkageType: ''
    returnType: void
    signature: void program_client_disconnect(struct program_client *pclient, bool
      force)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:219,1
    - Dst: program_client_disconnect
      Src: /src/dovecot/src/lib-program-client/program-client.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pclient
    - error
    argTypes:
    - struct program_client*
    - enum program_client_error
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 213
    functionDepth: 8
    functionLinenumber: 213
    functionLinenumberEnd: 223
    functionName: program_client_fail
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 2
    functionsReached:
    - e_debug
    - program_client_disconnect
    linkageType: ''
    returnType: void
    signature: "void program_client_fail(struct program_client *pclient,\n\t\t\t enum
      program_client_error error)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-program-client/program-client.c:236,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-program-client/program-client.c:241,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/program-client.c:245,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-program-client/program-client.c:246,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-program-client/program-client.c:250,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 257
    functionName: program_client_input_pending
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - i_stream_have_bytes_left
    - o_stream_get_buffer_used_size
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: bool program_client_input_pending(struct program_client *pclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:262,1
    - Dst: program_client_input_pending
      Src: /src/dovecot/src/lib-program-client/program-client.c:265,1
    - Dst: program_client_disconnect
      Src: /src/dovecot/src/lib-program-client/program-client.c:267,1
    - Dst: program_client_close_output
      Src: /src/dovecot/src/lib-program-client/program-client.c:269,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 259
    functionDepth: 9
    functionLinenumber: 259
    functionLinenumberEnd: 273
    functionName: program_client_output_finished
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - program_client_input_pending
    - e_debug
    - program_client_disconnect
    - program_client_fail
    - program_client_close_output
    linkageType: ''
    returnType: void
    signature: void program_client_output_finished(struct program_client *pclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-program-client/program-client.c:282,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:283,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:285,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:286,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:287,1
    - Dst: program_client_output_finished
      Src: /src/dovecot/src/lib-program-client/program-client.c:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 275
    functionDepth: 10
    functionLinenumber: 275
    functionLinenumberEnd: 293
    functionName: program_client_output_finish
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - o_stream_get_error
    - o_stream_finish
    - e_error
    - program_client_fail
    - program_client_output_finished
    linkageType: ''
    returnType: int
    signature: int program_client_output_finish(struct program_client *pclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:302,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:303,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:309,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:311,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:312,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:313,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:316,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:318,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:319,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:320,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:324,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:326,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-program-client/program-client.c:328,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-program-client/program-client.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - status
    - pclient
    argTypes:
    - enum iostream_pump_status
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 295
    functionDepth: 9
    functionLinenumber: 295
    functionLinenumberEnd: 331
    functionName: program_client_output_pump_finished
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - o_stream_get_error
    - iostream_pump_destroy
    - e_debug
    - e_error
    - i_stream_get_error
    - o_stream_set_flush_pending
    - program_client_fail
    - i_stream_get_name
    - o_stream_set_flush_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void program_client_output_pump_finished(enum iostream_pump_status
      status,\n\t\t\t\t    struct program_client *pclient)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:336,1
    - Dst: program_client_input_pending
      Src: /src/dovecot/src/lib-program-client/program-client.c:339,1
    - Dst: program_client_disconnect
      Src: /src/dovecot/src/lib-program-client/program-client.c:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 333
    functionDepth: 8
    functionLinenumber: 333
    functionLinenumberEnd: 344
    functionName: program_client_input_finished
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - e_debug
    - program_client_disconnect
    - program_client_input_pending
    linkageType: ''
    returnType: void
    signature: void program_client_input_finished(struct program_client *pclient)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-program-client/program-client.c:355,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-program-client/program-client.c:356,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:361,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:363,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:364,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:365,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:373,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-program-client/program-client.c:375,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/program-client.c:377,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-program-client/program-client.c:378,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib-program-client/program-client.c:381,1
    - Dst: program_client_input_finished
      Src: /src/dovecot/src/lib-program-client/program-client.c:384,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 346
    functionDepth: 9
    functionLinenumber: 346
    functionLinenumberEnd: 385
    functionName: program_client_input_finish
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - io_remove
    - program_client_input_finished
    - i_stream_ref
    - io_set_pending
    - i_stream_skip
    - e_error
    - i_stream_get_error
    - program_client_fail
    - i_stream_unref
    - i_stream_get_name
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void program_client_input_finish(struct program_client *pclient)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:394,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:395,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:401,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:403,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:404,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:405,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:408,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:410,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/program-client.c:411,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:412,1
    - Dst: iostream_pump_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:416,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:418,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:422,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-program-client/program-client.c:424,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:427,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-program-client/program-client.c:428,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib-program-client/program-client.c:430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - status
    - pclient
    argTypes:
    - enum iostream_pump_status
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 387
    functionDepth: 9
    functionLinenumber: 387
    functionLinenumberEnd: 431
    functionName: program_client_input_pump_finished
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - io_add_istream
    - o_stream_get_error
    - iostream_pump_destroy
    - e_debug
    - i_stream_ref
    - io_set_pending
    - e_error
    - i_stream_get_error
    - program_client_fail
    - i_stream_unref
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void program_client_input_pump_finished(enum iostream_pump_status
      status,\n\t\t\t\t   struct program_client *pclient)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:438,1
    - Dst: struct program_client_extra_fd*::callback
      Src: /src/dovecot/src/lib-program-client/program-client.c:439,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-program-client/program-client.c:441,1
    - Dst: program_client_input_pending
      Src: /src/dovecot/src/lib-program-client/program-client.c:442,1
    - Dst: program_client_disconnect
      Src: /src/dovecot/src/lib-program-client/program-client.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - efd
    argTypes:
    - struct program_client_extra_fd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 433
    functionDepth: 8
    functionLinenumber: 433
    functionLinenumberEnd: 445
    functionName: program_client_extra_fd_input
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - program_client_input_pending
    - program_client_disconnect
    - i_stream_have_bytes_left
    - i_assert
    - struct program_client_extra_fd*::callback
    linkageType: ''
    returnType: void
    signature: void program_client_extra_fd_input(struct program_client_extra_fd *efd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:449,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-program-client/program-client.c:457,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-program-client/program-client.c:460,1
    - Dst: o_stream_create_dot
      Src: /src/dovecot/src/lib-program-client/program-client.c:469,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-program-client/program-client.c:471,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client.c:476,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-program-client/program-client.c:479,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:487,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-program-client/program-client.c:488,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib-program-client/program-client.c:491,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:494,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib-program-client/program-client.c:496,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib-program-client/program-client.c:498,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-program-client/program-client.c:505,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-program-client/program-client.c:507,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:510,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib-program-client/program-client.c:512,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib-program-client/program-client.c:514,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 447
    functionDepth: 6
    functionLinenumber: 447
    functionLinenumberEnd: 516
    functionName: program_client_connected
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 1
    functionsReached:
    - iostream_pump_set_completion_callback
    - iostream_pump_create
    - io_add_istream
    - e_debug
    - timeout_add
    - i_stream_ref
    - o_stream_create_dot
    - io_set_pending
    - o_stream_ref
    - o_stream_set_flush_pending
    - iostream_pump_start
    - i_stream_create_dot
    - o_stream_set_flush_callback
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void program_client_connected(struct program_client *pclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:524,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-program-client/program-client.c:526,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-program-client/program-client.c:533,1
    - Dst: program_client_set_label
      Src: /src/dovecot/src/lib-program-client/program-client.c:536,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:538,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-program-client/program-client.c:539,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - pclient
    - pool
    - event
    - initial_label
    - args
    - params
    argTypes:
    - struct program_client*
    - pool_t
    - struct event*
    - char*
    - char**
    - struct program_client_parameters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 518
    functionDepth: 9
    functionLinenumber: 518
    functionLinenumberEnd: 540
    functionName: program_client_init
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - event_create
    - program_client_set_label
    - p_strarray_dup
    - e_debug
    - t_strarray_join
    linkageType: ''
    returnType: void
    signature: "void program_client_init(struct program_client *pclient, pool_t pool,\n\t\t\t
      struct event *event, const char *initial_label,\n\t\t\t const char *const *args,\n\t\t\t
      const struct program_client_parameters *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:545,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-program-client/program-client.c:547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pclient
    - input
    argTypes:
    - struct program_client*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 542
    functionDepth: 2
    functionLinenumber: 542
    functionLinenumberEnd: 549
    functionName: program_client_set_input
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void program_client_set_input(struct program_client *pclient,\n\t\t\t
      \     struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:554,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-program-client/program-client.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pclient
    - output
    argTypes:
    - struct program_client*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 559
    functionName: program_client_set_output
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - o_stream_ref
    - o_stream_unref
    linkageType: ''
    returnType: void
    signature: "void program_client_set_output(struct program_client *pclient,\n\t\t\t
      \      struct ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:564,1
    - Dst: iostream_temp_create_sized
      Src: /src/dovecot/src/lib-program-client/program-client.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pclient
    - temp_prefix
    argTypes:
    - struct program_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 561
    functionDepth: 4
    functionLinenumber: 561
    functionLinenumberEnd: 569
    functionName: program_client_set_output_seekable
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - iostream_temp_create_sized
    linkageType: ''
    returnType: void
    signature: "void program_client_set_output_seekable(struct program_client *pclient,\n\t\t\t\t\tconst
      char *temp_prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:574,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-program-client/program-client.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 571
    functionDepth: 7
    functionLinenumber: 571
    functionLinenumberEnd: 576
    functionName: program_client_get_output_seekable
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - iostream_temp_finish
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      program_client_get_output_seekable(struct program_client *pclient)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:586,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/program-client.c:588,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-program-client/program-client.c:589,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-program-client/program-client.c:591,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-program-client/program-client.c:600,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - pclient
    - fd
    - callback
    - context
    argTypes:
    - struct program_client*
    - int
    - program_client_fd_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 579
    functionDepth: 1
    functionLinenumber: 579
    functionLinenumberEnd: 607
    functionName: program_client_set_extra_fd
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - array_append_space
    - p_array_init
    - array_get_modifiable
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void program_client_set_extra_fd(struct program_client *pclient, int
      fd,\n\t\t\t\t program_client_fd_callback_t *callback,\n\t\t\t\t void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/program-client.c:614,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-program-client/program-client.c:615,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client.c:617,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-program-client/program-client.c:618,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:620,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-program-client/program-client.c:621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - pclient
    - name
    - value
    argTypes:
    - struct program_client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 609
    functionDepth: 5
    functionLinenumber: 609
    functionLinenumberEnd: 622
    functionName: program_client_set_env
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - array_push_back
    - e_debug
    - str_sanitize
    - array_is_created
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void program_client_set_env(struct program_client *pclient, const
      char *name,\n\t\t\t    const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-program-client/program-client.c:630,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:632,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-program-client/program-client.c:633,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-program-client/program-client.c:639,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:640,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/program-client.c:645,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-program-client/program-client.c:649,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:651,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-program-client/program-client.c:652,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-program-client/program-client.c:654,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client.c:655,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-program-client/program-client.c:657,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 624
    functionDepth: 11
    functionLinenumber: 624
    functionLinenumberEnd: 662
    functionName: program_client_init_streams
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 1
    functionsReached:
    - o_stream_create_fd
    - i_stream_create_fd
    - io_add
    - o_stream_set_name
    - i_stream_set_name
    - array_get_modifiable
    - t_strdup_printf
    - o_stream_set_no_error_handling
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void program_client_init_streams(struct program_client *pclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client.c:670,1
    - Dst: program_client_disconnect
      Src: /src/dovecot/src/lib-program-client/program-client.c:675,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:677,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:679,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:680,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:682,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:683,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:684,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:685,1
    - Dst: struct program_client*::destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:688,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:690,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:692,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - _pclient
    argTypes:
    - struct program_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 664
    functionDepth: 8
    functionLinenumber: 664
    functionLinenumberEnd: 693
    functionName: program_client_destroy
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 2
    functionsReached:
    - event_unref
    - struct program_client*::destroy
    - e_debug
    - program_client_disconnect
    - o_stream_unref
    - pool_unref
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: void program_client_destroy(struct program_client **_pclient)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:698,1
    - Dst: i_stream_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:700,1
    - Dst: o_stream_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:702,1
    - Dst: o_stream_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:704,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-program-client/program-client.c:706,1
    - Dst: iostream_pump_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:708,1
    - Dst: iostream_pump_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:710,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-program-client/program-client.c:712,1
    - Dst: struct program_client*::switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:713,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 695
    functionDepth: 8
    functionLinenumber: 695
    functionLinenumberEnd: 714
    functionName: program_client_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - iostream_pump_switch_ioloop
    - io_loop_move_io
    - i_stream_switch_ioloop
    - io_loop_move_timeout
    - struct program_client*::switch_ioloop
    - o_stream_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void program_client_switch_ioloop(struct program_client *pclient)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-program-client/program-client.c:723,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:724,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-program-client/program-client.c:726,1
    - Dst: program_client_unix_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:727,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-program-client/program-client.c:729,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib-program-client/program-client.c:733,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client.c:735,1
    - Dst: program_client_net_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:740,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client.c:743,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-program-client/program-client.c:745,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 6
    argNames:
    - event
    - uri
    - args
    - params
    - pc_r
    - error_r
    argTypes:
    - struct event*
    - char*
    - char**
    - struct program_client_parameters*
    - struct program_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 716
    functionDepth: 11
    functionLinenumber: 716
    functionLinenumberEnd: 748
    functionName: program_client_create
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - program_client_local_create
    - str_begins
    - t_strdup_printf
    - program_client_net_create
    - net_str2hostport
    - program_client_unix_create
    - t_strcut
    linkageType: ''
    returnType: int
    signature: "int program_client_create(struct event *event, const char *uri,\n\t\t\t
      \ const char *const *args,\n\t\t\t  const struct program_client_parameters *params,\n\t\t\t
      \ struct program_client **pc_r, const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/program-client.c:755,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-program-client/program-client.c:759,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/program-client.c:763,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/program-client.c:766,1
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib-program-client/program-client.c:770,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client.c:772,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-program-client/program-client.c:777,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - _set
    - pool
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 750
    functionDepth: 11
    functionLinenumber: 750
    functionLinenumberEnd: 785
    functionName: program_client_settings_check
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - t_strdup_printf
    - net_str2hostport
    - p_strconcat
    linkageType: ''
    returnType: bool
    signature: bool program_client_settings_check(void *_set, pool_t pool, const char
      **error_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:795,1
    - Dst: settings_get_filter
      Src: /src/dovecot/src/lib-program-client/program-client.c:796,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:799,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-program-client/program-client.c:803,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-program-client/program-client.c:805,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-program-client/program-client.c:806,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-program-client/program-client.c:807,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-program-client/program-client.c:807,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-program-client/program-client.c:808,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-program-client/program-client.c:809,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-program-client/program-client.c:810,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-program-client/program-client.c:811,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/program-client.c:813,1
    - Dst: program_client_unix_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:814,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/program-client.c:816,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:817,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/program-client.c:819,1
    - Dst: program_client_net_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:820,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-program-client/program-client.c:825,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-program-client/program-client.c:828,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-program-client/program-client.c:829,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 5
    argNames:
    - event
    - execute_name
    - params
    - pc_r
    - error_r
    argTypes:
    - struct event*
    - char*
    - struct program_client_parameters*
    - struct program_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 787
    functionDepth: 9
    functionLinenumber: 787
    functionLinenumberEnd: 831
    functionName: program_client_create_filter_auto
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - event_create
    - event_unref
    - program_client_local_create
    - i_unreached
    - str_array_length
    - settings_free
    - program_client_net_create
    - t_array_init
    - settings_get_filter
    - ARRAY_TYPE
    - array_front
    - t_strsplit_spaces
    - array_append_zero
    - program_client_unix_create
    - array_append
    linkageType: ''
    returnType: int
    signature: "int program_client_create_filter_auto(struct event *event, const char
      *execute_name,\n\t\t\t\t  const struct program_client_parameters *params,\n\t\t\t\t
      \ struct program_client **pc_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:839,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-program-client/program-client.c:841,1
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-program-client/program-client.c:844,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-program-client/program-client.c:846,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-program-client/program-client.c:850,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-program-client/program-client.c:850,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-program-client/program-client.c:851,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-program-client/program-client.c:854,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client.c:855,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-program-client/program-client.c:860,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-program-client/program-client.c:863,1
    - Dst: program_client_create_filter_auto
      Src: /src/dovecot/src/lib-program-client/program-client.c:865,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - event
    - params
    - pc_r
    - error_r
    argTypes:
    - struct event*
    - struct program_client_parameters*
    - struct program_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 833
    functionDepth: 11
    functionLinenumber: 833
    functionLinenumberEnd: 869
    functionName: program_client_create_auto
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 2
    functionsReached:
    - i_assert
    - t_strdup_printf
    - settings_free
    - array_is_empty
    - program_client_create_filter_auto
    - array_count
    - array_idx_elem
    - t_strdup
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int program_client_create_auto(struct event *event,\n\t\t\t       const
      struct program_client_parameters *params,\n\t\t\t       struct program_client
      **pc_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-program-client/program-client.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - result
    - context
    argTypes:
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 876
    functionName: program_client_run_callback
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void program_client_run_callback(int result, int *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:882,1
    - Dst: program_client_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:884,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/program-client.c:886,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-program-client/program-client.c:889,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-program-client/program-client.c:892,1
    - Dst: program_client_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:893,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-program-client/program-client.c:894,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:895,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 878
    functionDepth: 12
    functionLinenumber: 878
    functionLinenumberEnd: 901
    functionName: program_client_run
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 2
    functionsReached:
    - io_loop_set_current
    - program_client_run_async
    - io_loop_destroy
    - io_loop_create
    - program_client_switch_ioloop
    - io_loop_run
    linkageType: ''
    returnType: enum program_client_exit_status
    signature: enum program_client_exit_status program_client_run(struct program_client
      *pclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client.c:908,1
    - Dst: program_client_connect
      Src: /src/dovecot/src/lib-program-client/program-client.c:916,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client.c:917,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - pclient
    - callback
    - context
    argTypes:
    - struct program_client*
    - program_client_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 904
    functionDepth: 9
    functionLinenumber: 904
    functionLinenumberEnd: 918
    functionName: program_client_run_async
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 2
    functionsReached:
    - program_client_fail
    - i_assert
    - program_client_connect
    linkageType: ''
    returnType: void
    signature: "void program_client_run_async(struct program_client *pclient,\n\t\t\t
      \     program_client_callback_t *callback,\n\t\t\t      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-program-client/program-client.c:926,1
    - Dst: program_client_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:928,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-program-client/program-client.c:931,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-program-client/program-client.c:934,1
    - Dst: program_client_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client.c:935,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-program-client/program-client.c:936,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-program-client/program-client.c:937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 920
    functionDepth: 12
    functionLinenumber: 920
    functionLinenumberEnd: 938
    functionName: program_client_wait
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.c
    functionUses: 1
    functionsReached:
    - io_loop_set_current
    - io_loop_destroy
    - io_loop_create
    - program_client_switch_ioloop
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void program_client_wait(struct program_client *pclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:40,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:42,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:44,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:45,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:46,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:49,1
    - Dst: program_client_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:49,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:50,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:50,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:52,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:54,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:55,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 32
    functionDepth: 13
    functionLinenumber: 32
    functionLinenumberEnd: 58
    functionName: test_program_success
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-local.c
    functionUses: 0
    functionsReached:
    - str_c
    - program_client_local_create
    - buffer_create_dynamic
    - program_client_run
    - o_stream_unref
    - test_assert_strcmp
    - o_stream_set_no_error_handling
    - program_client_set_output
    - program_client_destroy
    - test_end
    - test_assert
    - buffer_free
    - test_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_success(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:68,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:70,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:72,1
    - Dst: program_client_set_input
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:73,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:75,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:76,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:77,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:80,1
    - Dst: program_client_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:80,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:81,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:81,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:83,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:85,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:86,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:87,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 60
    functionDepth: 13
    functionLinenumber: 60
    functionLinenumberEnd: 90
    functionName: test_program_io_sync
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-local.c
    functionUses: 0
    functionsReached:
    - str_c
    - program_client_local_create
    - buffer_create_dynamic
    - program_client_run
    - o_stream_unref
    - program_client_set_input
    - test_assert_strcmp
    - o_stream_set_no_error_handling
    - program_client_set_output
    - program_client_destroy
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - buffer_free
    - test_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_io_sync(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:95,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - result
    - ret
    argTypes:
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: test_program_io_async_callback
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-local.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_program_io_async_callback(int result, int *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:109,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:112,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:114,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:116,1
    - Dst: program_client_set_input
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:117,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:119,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:120,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:121,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:122,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:124,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:127,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:129,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:129,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:131,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:133,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:134,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:135,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:136,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:137,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:138,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 99
    functionDepth: 12
    functionLinenumber: 99
    functionLinenumberEnd: 141
    functionName: test_program_io_async
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-local.c
    functionUses: 0
    functionsReached:
    - str_c
    - buffer_create_dynamic
    - o_stream_unref
    - program_client_set_input
    - io_loop_destroy
    - program_client_set_output
    - test_ostream_create
    - io_loop_run
    - program_client_local_create
    - test_end
    - test_istream_create
    - buffer_free
    - program_client_destroy
    - io_loop_set_current
    - program_client_run_async
    - test_assert_strcmp
    - io_loop_create
    - o_stream_set_no_error_handling
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_io_async(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:151,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:153,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:155,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:156,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:157,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:158,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:160,1
    - Dst: program_client_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:160,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:161,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:161,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:163,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:165,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:166,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 143
    functionDepth: 13
    functionLinenumber: 143
    functionLinenumberEnd: 169
    functionName: test_program_failure
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-local.c
    functionUses: 0
    functionsReached:
    - str_c
    - program_client_local_create
    - buffer_create_dynamic
    - program_client_run
    - o_stream_unref
    - test_assert_strcmp
    - o_stream_set_no_error_handling
    - program_client_set_output
    - program_client_destroy
    - test_end
    - test_assert
    - buffer_free
    - test_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_failure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:188,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:190,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:193,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:196,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:199,1
    - Dst: i_stream_create_concat
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:202,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:204,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:205,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:206,1
    - Dst: program_client_set_input
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:208,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:210,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:211,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:212,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:214,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:216,1
    - Dst: program_client_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:216,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:218,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:218,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:218,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:220,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:222,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:223,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:224,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 171
    functionDepth: 13
    functionLinenumber: 171
    functionLinenumberEnd: 227
    functionName: test_program_io_big
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-local.c
    functionUses: 0
    functionsReached:
    - program_client_local_create
    - str_len
    - buffer_create_dynamic
    - program_client_run
    - strlen
    - program_client_set_input
    - o_stream_unref
    - o_stream_set_no_error_handling
    - program_client_set_output
    - program_client_destroy
    - test_end
    - test_istream_create
    - test_assert
    - i_stream_unref
    - buffer_free
    - i_stream_create_concat
    - test_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_io_big(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:241,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:245,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:247,1
    - Dst: program_client_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:247,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:249,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 229
    functionDepth: 13
    functionLinenumber: 229
    functionLinenumberEnd: 252
    functionName: test_program_wait_no_io
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-local.c
    functionUses: 0
    functionsReached:
    - program_client_local_create
    - program_client_run
    - test_begin
    - test_end
    - test_assert
    - program_client_destroy
    linkageType: ''
    returnType: void
    signature: void test_program_wait_no_io(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:269,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:275,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:276,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:279,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:282,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:286,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:287,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:288,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:289,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:290,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:292,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-program-client/test-program-client-local.c:293,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 254
    functionDepth: 12
    functionLinenumber: 254
    functionLinenumberEnd: 295
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-local.c
    functionUses: 18
    functionsReached:
    - event_set_forced_debug
    - event_create
    - getopt
    - event_unref
    - lib_init
    - lib_deinit
    - i_fatal
    - test_run
    - io_loop_destroy
    - io_loop_create
    - lib_signals_init
    - lib_signals_deinit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: test_program_io_loop_run
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void test_program_io_loop_run(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: test_program_io_loop_stop
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void test_program_io_loop_stop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:82,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:83,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:83,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:85,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:86,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:87,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:88,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:89,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:90,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:91,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:92,1
    - Dst: test_program_io_loop_stop
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct test_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 77
    functionDepth: 5
    functionLinenumber: 77
    functionLinenumberEnd: 95
    functionName: test_program_client_destroy
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - i_error
    - o_stream_get_error
    - io_remove
    - o_stream_unref
    - i_close_fd
    - o_stream_finish
    - pool_unref
    - test_program_io_loop_stop
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_program_client_destroy(struct test_client **_client)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:100,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:106,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:107,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:114,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:117,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:124,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:125,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:129,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:130,1
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:134,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:138,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:141,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:144,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:145,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:147,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:148,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:153,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:155,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:159,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:163,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct test_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 97
    functionDepth: 7
    functionLinenumber: 97
    functionLinenumberEnd: 168
    functionName: test_program_input_handle
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_panic
    - p_strdup
    - array_push_back
    - o_stream_get_error
    - o_stream_send_istream
    - iostream_temp_finish
    - i_stream_read_eof
    - i_warning
    - test_dir_prepend
    - i_stream_get_error
    - array_append_zero
    - test_assert
    - i_stream_unref
    - i_stream_create_dot
    - strncmp
    - iostream_temp_create_named
    linkageType: ''
    returnType: int
    signature: int test_program_input_handle(struct test_client *client, const char
      *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:172,1
    - Dst: test_program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct test_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 170
    functionDepth: 6
    functionLinenumber: 170
    functionLinenumberEnd: 174
    functionName: test_program_end
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - test_program_client_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_program_end(struct test_client *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:184,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:185,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:185,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:186,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:188,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:190,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:192,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:193,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:196,1
    - Dst: o_stream_create_dot
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:197,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:198,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:199,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:199,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:200,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:201,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:202,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:204,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:207,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:208,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:212,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:212,1
    - Dst: test_program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:215,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:217,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct test_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 176
    functionDepth: 11
    functionLinenumber: 176
    functionLinenumberEnd: 220
    functionName: test_program_run
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_program_client_destroy
    - timeout_add_short
    - array_get
    - o_stream_nsend_istream
    - t_strdup_printf
    - o_stream_create_dot
    - o_stream_finish
    - o_stream_unref
    - test_assert
    - o_stream_flush
    - o_stream_nsend_str
    - array_is_created
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_program_run(struct test_client *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_program_input_handle
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:229,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:233,1
    - Dst: test_program_input_handle
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:238,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:240,1
    - Dst: test_program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:247,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:254,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:256,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:259,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct test_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 222
    functionDepth: 5
    functionLinenumber: 222
    functionLinenumberEnd: 260
    functionName: test_program_input
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - test_program_client_destroy
    - io_remove
    - timeout_add_short
    - i_warning
    - i_stream_read_next_line
    - test_program_input_handle
    linkageType: ''
    returnType: void
    signature: void test_program_input(struct test_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:267,1
    - Dst: net_accept
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:268,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:270,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:272,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:274,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:275,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:278,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:279,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:280,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:281,1
    - Dst: test_program_io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct test_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 262
    functionDepth: 6
    functionLinenumber: 262
    functionLinenumberEnd: 285
    functionName: test_program_connected
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_stream_create_fd
    - o_stream_create_fd
    - p_new
    - p_array_init
    - io_add_istream
    - i_fatal
    - test_program_io_loop_run
    - net_accept
    - net_set_nonblock
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_program_connected(struct test_server *server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:291,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:293,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:294,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:298,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:298,1
    - Dst: net_listen
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:300,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:303,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:305,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 308
    functionName: test_program_setup
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - io_add
    - io_loop_set_current
    - i_fatal
    - io_loop_create
    - test_end
    - test_assert
    - test_begin
    - net_listen
    linkageType: ''
    returnType: void
    signature: void test_program_setup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:312,1
    - Dst: test_program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:315,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:316,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:317,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:318,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 310
    functionDepth: 12
    functionLinenumber: 310
    functionLinenumberEnd: 320
    functionName: test_program_teardown
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - test_program_client_destroy
    - io_remove
    - i_close_fd
    - io_loop_destroy
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_program_io_loop_stop
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - result
    - ret
    argTypes:
    - enum program_client_exit_status
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 327
    functionName: test_program_async_callback
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - test_program_io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_program_async_callback(enum program_client_exit_status result,\n\t\t\t\t\tint
      *ret)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:338,1
    - Dst: program_client_net_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:341,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:344,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:345,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:346,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:348,1
    - Dst: test_program_io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:351,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:353,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:354,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:354,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:356,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:358,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:359,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:361,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 329
    functionDepth: 9
    functionLinenumber: 329
    functionLinenumberEnd: 364
    functionName: test_program_success
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - str_c
    - buffer_create_dynamic
    - program_client_run_async
    - test_program_io_loop_run
    - test_assert_strcmp
    - o_stream_unref
    - program_client_net_create
    - program_client_destroy
    - program_client_set_output
    - test_end
    - test_assert
    - buffer_free
    - i_assert
    - test_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_success(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: program_client_net_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:372,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:375,1
    - Dst: program_client_set_input
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:376,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:378,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:379,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:380,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:382,1
    - Dst: test_program_io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:387,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:388,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:388,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:390,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:392,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:393,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:394,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 366
    functionDepth: 9
    functionLinenumber: 366
    functionLinenumberEnd: 397
    functionName: test_program_io_common
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - str_c
    - buffer_create_dynamic
    - program_client_run_async
    - test_program_io_loop_run
    - program_client_set_input
    - test_assert_strcmp
    - program_client_net_create
    - o_stream_unref
    - program_client_set_output
    - test_istream_create
    - test_assert
    - i_stream_unref
    - buffer_free
    - i_assert
    - test_ostream_create
    - program_client_destroy
    linkageType: ''
    returnType: void
    signature: void test_program_io_common(const char *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:405,1
    - Dst: test_program_io_common
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:407,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:409,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:413,1
    - Dst: test_program_io_common
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:415,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 399
    functionDepth: 3
    functionLinenumber: 399
    functionLinenumberEnd: 418
    functionName: test_program_io
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_program_io_common
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_io(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:429,1
    - Dst: program_client_net_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:432,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:435,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:436,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:437,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:439,1
    - Dst: test_program_io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:442,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:444,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:446,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:448,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:449,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:451,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 420
    functionDepth: 9
    functionLinenumber: 420
    functionLinenumberEnd: 454
    functionName: test_program_failure
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - program_client_run_async
    - test_program_io_loop_run
    - o_stream_unref
    - program_client_net_create
    - program_client_destroy
    - program_client_set_output
    - test_end
    - test_assert
    - buffer_free
    - i_assert
    - test_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_failure(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:465,1
    - Dst: program_client_net_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:468,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:471,1
    - Dst: test_program_io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:474,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:476,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:478,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:480,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 456
    functionDepth: 9
    functionLinenumber: 456
    functionLinenumberEnd: 483
    functionName: test_program_noreply
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - program_client_run_async
    - test_program_io_loop_run
    - program_client_net_create
    - program_client_destroy
    - test_end
    - test_assert
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_noreply(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:495,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:497,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:498,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:499,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:500,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:501,1
    - Dst: program_client_net_create_ips
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:505,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:505,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:509,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:509,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:510,1
    - Dst: test_program_io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:513,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:515,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:517,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:519,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 485
    functionDepth: 9
    functionLinenumber: 485
    functionLinenumberEnd: 520
    functionName: test_program_refused
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - program_client_net_create_ips
    - i_fatal
    - test_expect_errors
    - program_client_run_async
    - test_program_io_loop_run
    - program_client_destroy
    - test_end
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_refused(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:537,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:539,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:540,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:543,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:546,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:550,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:551,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:553,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-program-client/test-program-client-net.c:554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 522
    functionDepth: 7
    functionLinenumber: 522
    functionLinenumberEnd: 556
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-net.c
    functionUses: 18
    functionsReached:
    - event_set_forced_debug
    - event_create
    - getopt
    - event_unref
    - lib_init
    - test_dir_init
    - lib_deinit
    - i_fatal
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:66,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:67,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:67,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:69,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:70,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:71,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:72,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:73,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:74,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct test_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 61
    functionDepth: 5
    functionLinenumber: 61
    functionLinenumberEnd: 77
    functionName: test_program_client_destroy
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 4
    functionsReached:
    - i_error
    - o_stream_get_error
    - io_remove
    - o_stream_unref
    - i_close_fd
    - o_stream_finish
    - pool_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_program_client_destroy(struct test_client **_client)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: test_dir_prepend
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:82,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:89,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:96,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:99,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:106,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:107,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:111,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:112,1
    - Dst: iostream_temp_create_named
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:116,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:119,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:121,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:122,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:124,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:125,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:128,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:131,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:135,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct test_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 79
    functionDepth: 7
    functionLinenumber: 79
    functionLinenumberEnd: 140
    functionName: test_program_input_handle
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 1
    functionsReached:
    - strcmp
    - i_panic
    - p_strdup
    - array_push_back
    - o_stream_get_error
    - o_stream_send_istream
    - iostream_temp_finish
    - i_warning
    - test_dir_prepend
    - i_stream_get_error
    - array_append_zero
    - test_assert
    - strncmp
    - iostream_temp_create_named
    - i_debug
    linkageType: ''
    returnType: int
    signature: int test_program_input_handle(struct test_client *client, const char
      *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:144,1
    - Dst: test_program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct test_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 6
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: test_program_end
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - test_program_client_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_program_end(struct test_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:153,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:155,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:156,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:157,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:159,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:162,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:163,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:164,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:165,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:166,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:168,1
    - Dst: test_program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:169,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct test_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 148
    functionDepth: 11
    functionLinenumber: 148
    functionLinenumberEnd: 174
    functionName: test_program_run
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_program_client_destroy
    - timeout_add_short
    - array_get
    - o_stream_nsend_istream
    - t_strdup_printf
    - test_assert
    - o_stream_nsend_str
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_program_run(struct test_client *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_program_input_handle
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:183,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:187,1
    - Dst: test_program_input_handle
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:192,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:194,1
    - Dst: test_program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:201,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:208,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:210,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:213,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct test_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 176
    functionDepth: 5
    functionLinenumber: 176
    functionLinenumberEnd: 214
    functionName: test_program_input
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - test_program_client_destroy
    - io_remove
    - timeout_add_short
    - i_warning
    - i_stream_read_next_line
    - test_program_input_handle
    linkageType: ''
    returnType: void
    signature: void test_program_input(struct test_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:221,1
    - Dst: net_accept
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:222,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:224,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:226,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:228,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:229,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:232,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:233,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:234,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct test_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 216
    functionDepth: 6
    functionLinenumber: 216
    functionLinenumberEnd: 237
    functionName: test_program_connected
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - i_stream_create_fd
    - o_stream_create_fd
    - p_new
    - p_array_init
    - io_add_istream
    - i_fatal
    - net_accept
    - net_set_nonblock
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_program_connected(struct test_server *server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:241,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:243,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:244,1
    - Dst: net_listen_unix_unlink_stale
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:247,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:249,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:251,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 239
    functionDepth: 4
    functionLinenumber: 239
    functionLinenumberEnd: 254
    functionName: test_program_setup
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - net_listen_unix_unlink_stale
    - io_add
    - io_loop_set_current
    - i_fatal
    - io_loop_create
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_setup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:258,1
    - Dst: test_program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:261,1
    - Dst: program_client_wait
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:264,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:265,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:268,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:269,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:270,1
    - Dst: i_unlink
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:271,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 256
    functionDepth: 13
    functionLinenumber: 256
    functionLinenumberEnd: 273
    functionName: test_program_teardown
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - test_program_client_destroy
    - io_remove
    - test_begin
    - i_close_fd
    - io_loop_destroy
    - i_unlink
    - test_end
    - program_client_wait
    - program_client_destroy
    linkageType: ''
    returnType: void
    signature: void test_program_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - result
    - ret
    argTypes:
    - enum program_client_exit_status
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 280
    functionName: test_program_async_callback
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_program_async_callback(enum program_client_exit_status result,\n\t\t\t\t\tint
      *ret)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:291,1
    - Dst: program_client_unix_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:294,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:296,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:297,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:298,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:299,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:301,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:303,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:305,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:306,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:306,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:308,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:310,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:311,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 282
    functionDepth: 9
    functionLinenumber: 282
    functionLinenumberEnd: 314
    functionName: test_program_success
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - str_c
    - buffer_create_dynamic
    - program_client_run_async
    - o_stream_unref
    - test_assert_strcmp
    - o_stream_set_no_error_handling
    - program_client_set_output
    - program_client_destroy
    - test_end
    - test_assert
    - buffer_free
    - program_client_unix_create
    - test_ostream_create
    - io_loop_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_success(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: program_client_unix_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:322,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:324,1
    - Dst: program_client_set_input
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:325,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:327,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:328,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:329,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:331,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:333,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:335,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:336,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:336,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:337,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:338,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:338,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:340,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:342,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:343,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 316
    functionDepth: 9
    functionLinenumber: 316
    functionLinenumberEnd: 345
    functionName: test_program_io_common
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 1
    functionsReached:
    - str_c
    - i_error
    - o_stream_get_error
    - buffer_create_dynamic
    - program_client_run_async
    - o_stream_unref
    - program_client_set_input
    - test_assert_strcmp
    - o_stream_finish
    - program_client_set_output
    - test_istream_create
    - test_assert
    - i_stream_unref
    - buffer_free
    - program_client_unix_create
    - test_ostream_create
    - io_loop_run
    - program_client_destroy
    linkageType: ''
    returnType: void
    signature: void test_program_io_common(const char *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:353,1
    - Dst: test_program_io_common
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:355,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:357,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:361,1
    - Dst: test_program_io_common
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:363,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 347
    functionDepth: 3
    functionLinenumber: 347
    functionLinenumberEnd: 366
    functionName: test_program_io
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_program_io_common
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_io(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:377,1
    - Dst: program_client_unix_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:380,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:382,1
    - Dst: test_ostream_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:383,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:384,1
    - Dst: program_client_set_output
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:385,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:387,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:389,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:391,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:393,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:395,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:396,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 368
    functionDepth: 9
    functionLinenumber: 368
    functionLinenumberEnd: 399
    functionName: test_program_failure
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - program_client_run_async
    - o_stream_unref
    - o_stream_set_no_error_handling
    - program_client_set_output
    - program_client_destroy
    - test_end
    - test_assert
    - buffer_free
    - program_client_unix_create
    - test_ostream_create
    - io_loop_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_failure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:410,1
    - Dst: program_client_unix_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:413,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:415,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:417,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:419,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:421,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 401
    functionDepth: 9
    functionLinenumber: 401
    functionLinenumberEnd: 424
    functionName: test_program_noreply
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - program_client_run_async
    - program_client_destroy
    - test_end
    - test_assert
    - program_client_unix_create
    - io_loop_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_noreply(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:435,1
    - Dst: program_client_unix_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:438,1
    - Dst: program_client_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:440,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:442,1
    - Dst: test_program_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:443,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 426
    functionDepth: 13
    functionLinenumber: 426
    functionLinenumberEnd: 446
    functionName: test_program_sync
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - program_client_run
    - test_begin
    - test_end
    - test_program_end
    - test_assert
    - program_client_unix_create
    - program_client_destroy
    linkageType: ''
    returnType: void
    signature: void test_program_sync(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:451,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ret
    - ATTR_UNUSED
    argTypes:
    - enum program_client_exit_status
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 453
    functionName: test_program_async_wait_finish
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_program_async_wait_finish(enum program_client_exit_status
      ret,\n\t\t\t\t\t   struct program_client *client ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:461,1
    - Dst: program_client_unix_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:464,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:467,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 472
    functionName: test_program_async_wait
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 0
    functionsReached:
    - test_end
    - program_client_run_async
    - program_client_unix_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_program_async_wait(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:490,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:492,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:493,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:496,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:499,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:503,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:504,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:506,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-program-client/test-program-client-unix.c:507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 474
    functionDepth: 7
    functionLinenumber: 474
    functionLinenumberEnd: 509
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-program-client/test-program-client-unix.c
    functionUses: 18
    functionsReached:
    - event_set_forced_debug
    - event_create
    - getopt
    - event_unref
    - lib_init
    - test_dir_init
    - lib_deinit
    - i_fatal
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - pclient
    - ','
    - fd
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: program_client_set_extra_fd
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: program_client_set_extra_fd(pclient, fd, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - pclient
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: program_client_run_async
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: program_client_run_async(pclient, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: program_client_istream_destroy
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void program_client_istream_destroy(struct iostream_private *stream)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:63,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:66,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:69,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:80,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:86,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:93,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:96,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - scstream
    - pos
    argTypes:
    - struct program_client_istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 102
    functionName: program_client_istream_parse_result
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - e_error
    - e_debug
    linkageType: ''
    returnType: void
    signature: "void program_client_istream_parse_result(struct program_client_istream
      *scstream,\n\t\t\t\t    size_t pos)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:111,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:114,1
    - Dst: program_client_istream_parse_result
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:118,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:129,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:131,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:136,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:140,1
    - Dst: program_client_istream_parse_result
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:150,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:179,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:181,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:190,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 54
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 193
    functionName: program_client_istream_read
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data
    - program_client_istream_parse_result
    - i_stream_skip
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t program_client_istream_read(struct istream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_panic
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 199
    functionName: ATTR_NORETURN::program_client_istream_sync
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - i_panic
    linkageType: ''
    returnType: void
    signature: 'void ATTR_NORETURN

      program_client_istream_sync(struct istream_private *stream ATTR_UNUSED)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_stat
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - exact
    argTypes:
    - struct istream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 218
    functionName: program_client_istream_stat
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - i_stream_stat
    linkageType: ''
    returnType: int
    signature: int program_client_istream_stat(struct istream_private *stream, bool
      exact)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:226,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:240,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:242,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - program_client
    - input
    argTypes:
    - struct program_client*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 220
    functionDepth: 4
    functionLinenumber: 220
    functionLinenumberEnd: 244
    functionName: program_client_istream_create
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_stream_seek
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\nprogram_client_istream_create(struct program_client
      *program_client,\n\t\t\t      struct istream *input)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:277,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:278,1
    - Dst: program_client_init_streams
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:279,1
    - Dst: program_client_istream_create
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:285,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:286,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:289,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:290,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:291,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:293,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:294,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:295,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:296,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:300,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:302,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:305,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:306,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:309,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:311,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:312,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:312,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:313,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:315,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:316,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:317,1
    - Dst: program_client_connected
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:321,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 1
    argNames:
    - prclient
    argTypes:
    - struct program_client_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 270
    functionDepth: 12
    functionLinenumber: 270
    functionLinenumberEnd: 322
    functionName: program_client_remote_connected
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - str_len
    - io_remove
    - str_append_tabescaped
    - program_client_fail
    - o_stream_get_name
    - t_str_new
    - str_append_c
    - array_foreach_elem
    - o_stream_get_error
    - program_client_init_streams
    - program_client_istream_create
    - program_client_connected
    - str_data
    - e_error
    - o_stream_send
    - i_stream_unref
    - str_append
    - array_is_created
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void program_client_remote_connected(struct program_client_remote *prclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: program_client_unix_connect
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prclient
    argTypes:
    - struct program_client_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: program_client_unix_reconnect
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - program_client_unix_connect
    linkageType: ''
    returnType: void
    signature: void program_client_unix_reconnect(struct program_client_remote *prclient)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:338,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:340,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:342,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:345,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:346,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:350,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:354,1
    - Dst: program_client_remote_connected
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 332
    functionDepth: 13
    functionLinenumber: 332
    functionLinenumberEnd: 366
    functionName: program_client_unix_connect
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 1
    functionsReached:
    - net_connect_unix
    - e_debug
    - timeout_add_short
    - program_client_remote_connected
    - e_error
    - eacces_error_get
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int program_client_unix_connect(struct program_client *pclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:373,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:374,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:376,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:382,1
    - Dst: program_client_net_connect_again
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - prclient
    argTypes:
    - struct program_client_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 368
    functionDepth: 6
    functionLinenumber: 368
    functionLinenumberEnd: 385
    functionName: program_client_net_connect_timeout
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - program_client_net_connect_again
    - io_remove
    - i_close_fd
    - e_error
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void program_client_net_connect_timeout(struct program_client_remote
      *prclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:394,1
    - Dst: net_geterror
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:396,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:398,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:402,1
    - Dst: program_client_net_connect_again
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:404,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - prclient
    argTypes:
    - struct program_client_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 390
    functionDepth: 5
    functionLinenumber: 390
    functionLinenumberEnd: 409
    functionName: program_client_net_connected
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - program_client_net_connect_again
    - io_add
    - net_geterror
    - io_remove
    - i_close_fd
    - e_error
    linkageType: ''
    returnType: void
    signature: void program_client_net_connected(struct program_client_remote *prclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:417,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:418,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:420,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:422,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:423,1
    - Dst: program_client_set_label
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:424,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:426,1
    - Dst: net_connect_ip
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:431,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:434,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:435,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:443,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:447,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - prclient
    argTypes:
    - struct program_client_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 411
    functionDepth: 12
    functionLinenumber: 411
    functionLinenumberEnd: 451
    functionName: program_client_net_connect_real
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - program_client_set_label
    - io_add
    - e_debug
    - timeout_add_short
    - timeout_add
    - net_ipport2str
    - e_error
    - net_connect_ip
    - i_assert
    - t_strconcat
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void program_client_net_connect_real(struct program_client_remote *prclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:463,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:466,1
    - Dst: program_client_net_connect_real
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - prclient
    argTypes:
    - struct program_client_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 453
    functionDepth: 13
    functionLinenumber: 453
    functionLinenumberEnd: 474
    functionName: program_client_net_connect_again
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 2
    functionsReached:
    - e_error
    - program_client_fail
    - program_client_net_connect_real
    linkageType: ''
    returnType: void
    signature: void program_client_net_connect_again(struct program_client_remote
      *prclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:483,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:485,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:489,1
    - Dst: program_client_fail
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:497,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:507,1
    - Dst: program_client_net_connect_real
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:509,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - result
    - prclient
    argTypes:
    - struct dns_lookup_result*
    - struct program_client_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 476
    functionDepth: 13
    functionLinenumber: 476
    functionLinenumberEnd: 510
    functionName: program_client_net_connect_resolved
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - e_debug
    - e_error
    - program_client_fail
    - program_client_net_connect_real
    - p_memdup
    linkageType: ''
    returnType: void
    signature: "void program_client_net_connect_resolved(const struct dns_lookup_result
      *result,\n\t\t\t\t    struct program_client_remote *prclient)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:520,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:522,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:528,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:530,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:541,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:544,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:547,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:551,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:554,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:561,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 512
    functionDepth: 4
    functionLinenumber: 512
    functionLinenumberEnd: 564
    functionName: program_client_net_connect_init
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - dns_lookup
    - p_new
    - e_debug
    - timeout_add_short
    - e_error
    - net_gethostbyname
    - net_gethosterror
    - p_memdup
    linkageType: ''
    returnType: int
    signature: int program_client_net_connect_init(struct program_client *pclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: shutdown
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:575,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:577,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:582,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 587
    functionName: program_client_remote_close_output
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - shutdown
    - i_close_fd
    - e_error
    linkageType: ''
    returnType: int
    signature: int program_client_remote_close_output(struct program_client *pclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:596,1
    - Dst: program_client_disconnected
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pclient
    - ATTR_UNUSED
    argTypes:
    - struct program_client*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 589
    functionDepth: 8
    functionLinenumber: 589
    functionLinenumberEnd: 599
    functionName: program_client_remote_disconnect
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - program_client_disconnected
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void program_client_remote_disconnect(struct program_client *pclient,\n\t\t\t\t
      bool force ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:608,1
    - Dst: dns_lookup_switch_ioloop
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:610,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - pclient
    argTypes:
    - struct program_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 601
    functionDepth: 8
    functionLinenumber: 601
    functionLinenumberEnd: 611
    functionName: program_client_remote_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 0
    functionsReached:
    - io_loop_move_timeout
    - dns_lookup_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void program_client_remote_switch_ioloop(struct program_client *pclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:622,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:624,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:625,1
    - Dst: program_client_init
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:626,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - event
    - socket_path
    - args
    - params
    argTypes:
    - struct event*
    - char*
    - char**
    - struct program_client_parameters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 613
    functionDepth: 10
    functionLinenumber: 613
    functionLinenumberEnd: 635
    functionName: program_client_unix_create
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 8
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - program_client_init
    - t_strconcat
    linkageType: ''
    returnType: struct program_client
    signature: "struct program_client *\nprogram_client_unix_create(struct event *event,\n\t\t\t
      \  const char *socket_path, const char *const *args,\n\t\t\t   const struct
      program_client_parameters *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:646,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:648,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:649,1
    - Dst: program_client_init
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:650,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 5
    argNames:
    - event
    - host
    - port
    - args
    - params
    argTypes:
    - struct event*
    - char*
    - in_port_t
    - char**
    - struct program_client_parameters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 637
    functionDepth: 11
    functionLinenumber: 637
    functionLinenumberEnd: 660
    functionName: program_client_net_create
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 6
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - t_strdup_printf
    - program_client_init
    linkageType: ''
    returnType: struct program_client
    signature: "struct program_client *\nprogram_client_net_create(struct event *event,
      const char *host, in_port_t port,\n\t\t\t  const char *const *args,\n\t\t\t
      \ const struct program_client_parameters *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:673,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:675,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:675,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:677,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:678,1
    - Dst: program_client_init
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:679,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:685,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:685,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-program-client/program-client-remote.c:686,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 6
    argNames:
    - event
    - ips
    - ips_count
    - port
    - args
    - params
    argTypes:
    - struct event*
    - struct ip_addr*
    - size_t
    - in_port_t
    - char**
    - struct program_client_parameters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 662
    functionDepth: 12
    functionLinenumber: 662
    functionLinenumberEnd: 692
    functionName: program_client_net_create_ips
    functionSourceFile: /src/dovecot/src/lib-program-client/program-client-remote.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - t_strconcat
    - p_new
    - program_client_init
    - p_memdup
    - net_ip2addr
    - i_assert
    - net_ipport2str
    linkageType: ''
    returnType: struct program_client
    signature: "struct program_client *\nprogram_client_net_create_ips(struct event
      *event,\n\t\t\t      const struct ip_addr *ips, size_t ips_count,\n\t\t\t      in_port_t
      port,\n\t\t\t      const char *const *args,\n\t\t\t      const struct program_client_parameters
      *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: lua_doveadm_client_unref
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c
    functionUses: 0
    functionsReached:
    - doveadm_client_unref
    linkageType: ''
    returnType: void
    signature: void lua_doveadm_client_unref(struct doveadm_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:47,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:48,1
    - Dst: dlua_pcall_yieldable_resume
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct doveadm_server_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: lua_doveadm_client_run_callback
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c
    functionUses: 0
    functionsReached:
    - dlua_pcall_yieldable_resume
    - lua_pushstring
    - lua_pushinteger
    linkageType: ''
    returnType: void
    signature: "void lua_doveadm_client_run_callback(const struct doveadm_server_reply
      *reply,\n\t\t\t\tvoid *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlua_strtable_to_kvarray
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:59,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:59,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:64,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:65,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:65,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:68,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:70,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:71,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:73,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - L
    - idx
    - arr_r
    - error_r
    argTypes:
    - lua_State*
    - int
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 53
    functionDepth: 11
    functionLinenumber: 53
    functionLinenumberEnd: 76
    functionName: lua_doveadm_get_kvarray
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c
    functionUses: 0
    functionsReached:
    - array_push_back
    - str_array_length
    - t_strdup_printf
    - pool_datastack_create
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - i_assert
    - dlua_strtable_to_kvarray
    linkageType: ''
    returnType: int
    signature: "int lua_doveadm_get_kvarray(lua_State *L, int idx, const char *const
      **arr_r,\n\t\t\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlua_table_to_array
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:84,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:84,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:88,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:91,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:92,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:94,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - L
    - idx
    - value_r
    - error_r
    argTypes:
    - lua_State*
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 78
    functionDepth: 4
    functionLinenumber: 78
    functionLinenumberEnd: 98
    functionName: lua_doveadm_get_strescaped_str
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - pool_datastack_create
    - str_append_tabescaped
    - dlua_table_to_array
    linkageType: ''
    returnType: int
    signature: "int lua_doveadm_get_strescaped_str(lua_State *L, int idx, const char
      **value_r,\n\t\t\t       const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:118,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:120,1
    - Dst: xlua_doveadm_client_getptr
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:121,1
    - Dst: luaL_checktype
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:123,1
    - Dst: lua_doveadm_get_strescaped_str
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:124,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:125,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:127,1
    - Dst: luaL_checktype
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:130,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:132,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:133,1
    - Dst: luaL_checkinteger
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:136,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:137,1
    - Dst: lua_getfield
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:139,1
    - Dst: lua_isnil
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:140,1
    - Dst: luaL_checktype
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:141,1
    - Dst: lua_doveadm_get_kvarray
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:142,1
    - Dst: luaL_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:143,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:145,1
    - Dst: doveadm_client_cmd
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:148,1
    - Dst: lua_doveadm_client_async_continue
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:150,1
    - Dst: lua_yieldk
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 112
    functionDepth: 12
    functionLinenumber: 112
    functionLinenumberEnd: 152
    functionName: lua_doveadm_client_cmd
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c
    functionUses: 0
    functionsReached:
    - i_zero
    - lua_doveadm_get_strescaped_str
    - xlua_doveadm_client_getptr
    - lua_isnil
    - luaL_checkinteger
    - lua_pop
    - doveadm_client_cmd
    - lua_yieldk
    - lua_getfield
    - luaL_checktype
    - lua_doveadm_get_kvarray
    - DLUA_REQUIRE_ARGS_IN
    - luaL_error
    - lua_gettop
    - lua_doveadm_client_async_continue
    linkageType: ''
    returnType: int
    signature: int lua_doveadm_client_cmd(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xlua_pushdoveadm_client
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - client
    argTypes:
    - lua_State*
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: dlua_push_doveadm_client
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c
    functionUses: 0
    functionsReached:
    - xlua_pushdoveadm_client
    linkageType: ''
    returnType: void
    signature: void dlua_push_doveadm_client(lua_State *L, struct doveadm_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xlua_doveadm_client_getptr
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: dlua_check_doveadm_client
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c
    functionUses: 0
    functionsReached:
    - xlua_doveadm_client_getptr
    linkageType: ''
    returnType: struct doveadm_client
    signature: struct doveadm_client *dlua_check_doveadm_client(lua_State *L, int
      idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlua_get_dovecot
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:174,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:176,1
    - Dst: dlua_set_members
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:179,1
    - Dst: luaL_newmetatable
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:182,1
    - Dst: lua_pushvalue
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:184,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:185,1
    - Dst: lua_setmetatable
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:187,1
    - Dst: lua_setfield
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:190,1
    - Dst: lua_pop
      Src: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - script
    argTypes:
    - struct dlua_script*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 194
    functionName: dlua_dovecot_doveadm_client_register
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client-lua.c
    functionUses: 1
    functionsReached:
    - lua_setfield
    - lua_pushvalue
    - lua_pop
    - lua_setmetatable
    - dlua_set_members
    - dlua_get_dovecot
    - lua_newtable
    - luaL_newmetatable
    linkageType: ''
    returnType: void
    signature: void dlua_dovecot_doveadm_client_register(struct dlua_script *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:83,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:85,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:86,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:91,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:93,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - src
    - dest_r
    - pool
    argTypes:
    - struct doveadm_client_settings*
    - struct doveadm_client_settings*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 97
    functionName: doveadm_client_settings_dup
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 1
    functionsReached:
    - i_zero
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_settings_dup(const struct doveadm_client_settings
      *src,\n\t\t\t\t struct doveadm_client_settings *dest_r,\n\t\t\t\t pool_t pool)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:101,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:102,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: doveadm_client_set_print_pending
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - array_is_created
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void doveadm_client_set_print_pending(struct doveadm_client *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:111,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:114,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:115,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: print_connection_released
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - array_is_created
    - array_free
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void print_connection_released(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:125,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:126,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:127,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:137,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:138,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:139,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:142,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:143,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:147,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:150,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:151,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:155,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:156,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 158
    functionName: doveadm_client_send_cmd_input_more
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - o_stream_send_istream
    - o_stream_finish
    - e_error
    - i_stream_get_error
    - o_stream_destroy
    - i_stream_unref
    - i_stream_get_name
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: int
    signature: int doveadm_client_send_cmd_input_more(struct doveadm_client *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_dot
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:165,1
    - Dst: doveadm_client_send_cmd_input_more
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:166,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:167,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: doveadm_client_send_cmd_input
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - doveadm_client_send_cmd_input_more
    - timeout_add_short
    - i_assert
    - o_stream_create_dot
    linkageType: ''
    returnType: void
    signature: void doveadm_client_send_cmd_input(struct doveadm_client *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:177,1
    - Dst: doveadm_client_send_cmd_input_more
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:179,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 183
    functionName: doveadm_client_output
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - doveadm_client_destroy
    - doveadm_client_send_cmd_input_more
    linkageType: ''
    returnType: int
    signature: int doveadm_client_output(struct doveadm_client *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:191,1
    - Dst: callback
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct doveadm_client*
    - struct doveadm_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 195
    functionName: doveadm_client_callback
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - callback
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_callback(struct doveadm_client *conn,\n\t\t\tconst
      struct doveadm_server_reply *reply)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_set_print_pending
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:210,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:211,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:223,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:225,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:229,1
    - Dst: print_connection_released
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:231,1
    - Dst: struct doveadm_client*::print_callback
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:236,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - conn
    - data
    - size
    argTypes:
    - struct doveadm_client*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 197
    functionDepth: 5
    functionLinenumber: 197
    functionLinenumberEnd: 241
    functionName: doveadm_client_handle_input
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - print_connection_released
    - doveadm_client_destroy
    - doveadm_client_set_print_pending
    - io_remove
    - i_stream_skip
    - e_error
    - struct doveadm_client*::print_callback
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_handle_input(struct doveadm_client *conn,\n\t\t\t
      \   const unsigned char *data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:257,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:260,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:265,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:266,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:269,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:270,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:273,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:274,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:278,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:278,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:286,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:287,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:288,1
    - Dst: o_stream_nsendv
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:290,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - conn
    - cmdline
    - set
    argTypes:
    - struct doveadm_client*
    - char*
    - struct doveadm_client_cmd_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 249
    functionDepth: 5
    functionLinenumber: 249
    functionLinenumberEnd: 291
    functionName: doveadm_client_send_cmd
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - str_printfa
    - str_c
    - strlen
    - str_tabescape
    - str_append_tabescaped
    - o_stream_nsendv
    - str_append
    - o_stream_nsend_str
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_send_cmd(struct doveadm_client *conn,\n\t\t\tconst
      char *cmdline,\n\t\t\tconst struct doveadm_client_cmd_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:296,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:297,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:300,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:305,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:306,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:307,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:308,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:310,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:311,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:312,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 293
    functionDepth: 6
    functionLinenumber: 293
    functionLinenumberEnd: 317
    functionName: doveadm_client_authenticate
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - e_error
    - base64_encode
    - o_stream_nsend
    - str_append
    linkageType: ''
    returnType: int
    signature: int doveadm_client_authenticate(struct doveadm_client *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:324,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:326,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 329
    functionName: doveadm_client_log_disconnect_error
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - ssl_iostream_get_last_error
    - connection_disconnect_reason
    linkageType: ''
    returnType: void
    signature: void doveadm_client_log_disconnect_error(struct doveadm_client *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:335,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:337,1
    - Dst: doveadm_log_type_from_char
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:341,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:342,1
    - Dst: i_log_type
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:346,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 331
    functionDepth: 5
    functionLinenumber: 331
    functionLinenumberEnd: 348
    functionName: doveadm_client_print_log
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_log_type
    - i_stream_read_next_line
    - e_error
    - doveadm_log_type_from_char
    linkageType: ''
    returnType: void
    signature: void doveadm_client_print_log(struct doveadm_client *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_multiplex
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:353,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:354,1
    - Dst: i_stream_multiplex_add_channel
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:356,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:358,1
    - Dst: i_stream_set_return_partial_line
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:359,1
    - Dst: connection_streams_changed
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 350
    functionDepth: 6
    functionLinenumber: 350
    functionLinenumberEnd: 363
    functionName: doveadm_client_start_multiplex
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - i_stream_create_multiplex
    - i_stream_set_return_partial_line
    - i_stream_unref
    - connection_streams_changed
    - i_stream_multiplex_add_channel
    linkageType: ''
    returnType: void
    signature: void doveadm_client_start_multiplex(struct doveadm_client *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_start_multiplex
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:370,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:374,1
    - Dst: doveadm_client_send_cmd
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:377,1
    - Dst: doveadm_client_send_cmd_input
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 365
    functionDepth: 7
    functionLinenumber: 365
    functionLinenumberEnd: 382
    functionName: doveadm_client_authenticated
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - doveadm_client_send_cmd_input
    - doveadm_client_start_multiplex
    - doveadm_client_send_cmd
    linkageType: ''
    returnType: void
    signature: void doveadm_client_authenticated(struct doveadm_client *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:391,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:397,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:399,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:404,1
    - Dst: doveadm_client_init_ssl
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:405,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:406,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:411,1
    - Dst: doveadm_client_authenticate
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:414,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct doveadm_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 384
    functionDepth: 7
    functionLinenumber: 384
    functionLinenumberEnd: 417
    functionName: doveadm_client_prepare_authentication
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - connection_input_halt
    - e_error
    - doveadm_client_authenticate
    - o_stream_nsend_str
    - doveadm_client_init_ssl
    linkageType: ''
    returnType: int
    signature: "int doveadm_client_prepare_authentication(struct doveadm_client *conn,\n\t\t\t\t
      \     const char *line)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:422,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:425,1
    - Dst: doveadm_client_log_disconnect_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:427,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:428,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:433,1
    - Dst: doveadm_client_log_disconnect_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:436,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:437,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:445,1
    - Dst: version_string_verify_full
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:446,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:449,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:452,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:456,1
    - Dst: doveadm_client_authenticated
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:457,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:458,1
    - Dst: doveadm_client_prepare_authentication
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:459,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:460,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:464,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:467,1
    - Dst: doveadm_client_input_one
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:472,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 419
    functionDepth: 8
    functionLinenumber: 419
    functionLinenumberEnd: 473
    functionName: doveadm_client_input
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - strcmp
    - doveadm_client_authenticated
    - doveadm_client_destroy
    - doveadm_client_log_disconnect_error
    - container_of
    - str_begins_with
    - doveadm_client_input_one
    - i_stream_next_line
    - version_string_verify_full
    - doveadm_client_prepare_authentication
    - e_error
    - i_stream_read
    linkageType: ''
    returnType: void
    signature: void doveadm_client_input(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:478,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:480,1
    - Dst: doveadm_str_to_exit_code
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:486,1
    - Dst: doveadm_client_callback
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct doveadm_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 475
    functionDepth: 7
    functionLinenumber: 475
    functionLinenumberEnd: 495
    functionName: doveadm_client_input_cmd_error
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - strchr
    - doveadm_str_to_exit_code
    - t_strdup_until
    - doveadm_client_callback
    linkageType: ''
    returnType: void
    signature: void doveadm_client_input_cmd_error(struct doveadm_client *conn, const
      char *line)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_print_log
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:506,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:508,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:514,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:516,1
    - Dst: doveadm_client_handle_input
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:519,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:524,1
    - Dst: doveadm_client_callback
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:532,1
    - Dst: doveadm_client_input_cmd_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:534,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:536,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:539,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:544,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:549,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 497
    functionDepth: 8
    functionLinenumber: 497
    functionLinenumberEnd: 550
    functionName: doveadm_client_input_one
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 1
    functionsReached:
    - doveadm_client_destroy
    - doveadm_client_handle_input
    - doveadm_client_callback
    - i_unreached
    - i_stream_next_line
    - i_stream_get_data
    - doveadm_client_print_log
    - e_error
    - doveadm_client_input_cmd_error
    linkageType: ''
    returnType: bool
    signature: bool doveadm_client_input_one(struct doveadm_client *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:566,1
    - Dst: io_stream_autocreate_ssl_client
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:575,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:578,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:582,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:583,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:585,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:588,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct doveadm_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 552
    functionDepth: 11
    functionLinenumber: 552
    functionLinenumberEnd: 590
    functionName: doveadm_client_init_ssl
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 1
    functionsReached:
    - connection_input_resume
    - connection_input_halt
    - t_strdup_printf
    - ssl_iostream_handshake
    - ssl_iostream_get_last_error
    - io_stream_autocreate_ssl_client
    linkageType: ''
    returnType: int
    signature: "int doveadm_client_init_ssl(struct doveadm_client *conn,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:595,1
    - Dst: doveadm_client_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 597
    functionName: doveadm_client_destroy_conn
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - doveadm_client_destroy
    - container_of
    linkageType: ''
    returnType: void
    signature: void doveadm_client_destroy_conn(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:602,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:608,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:611,1
    - Dst: doveadm_client_init_ssl
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:613,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:614,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:616,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:620,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:622,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 599
    functionDepth: 12
    functionLinenumber: 599
    functionLinenumberEnd: 624
    functionName: doveadm_client_connected
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - container_of
    - connection_input_halt
    - timeout_add_short
    - e_error
    - o_stream_nsend_str
    - doveadm_client_init_ssl
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: void
    signature: void doveadm_client_connected(struct connection *_conn, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_init_client_ip
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 651
    functionDepth: 8
    functionLinenumber: 651
    functionLinenumberEnd: 656
    functionName: doveadm_client_connect_init
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - connection_init_client_ip
    linkageType: ''
    returnType: void
    signature: void doveadm_client_connect_init(struct doveadm_client *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:661,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct doveadm_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 658
    functionDepth: 11
    functionLinenumber: 658
    functionLinenumberEnd: 667
    functionName: doveadm_client_connect
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - connection_client_connect
    - t_strdup_printf
    linkageType: ''
    returnType: int
    signature: "int doveadm_client_connect(struct doveadm_client *conn,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:673,1
    - Dst: doveadm_client_callback
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:679,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:680,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct doveadm_client_dns_lookup_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 669
    functionDepth: 6
    functionLinenumber: 669
    functionLinenumberEnd: 682
    functionName: doveadm_client_create_failed
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - event_unref
    - doveadm_client_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void doveadm_client_create_failed(struct doveadm_client_dns_lookup_context
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:692,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:696,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:700,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:701,1
    - Dst: doveadm_client_connect_init
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:705,1
    - Dst: doveadm_client_connect
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:706,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:707,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct dns_lookup_result*
    - struct doveadm_client_dns_lookup_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 684
    functionDepth: 12
    functionLinenumber: 684
    functionLinenumberEnd: 711
    functionName: doveadm_client_dns_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - doveadm_client_connect
    - timeout_add_short
    - doveadm_client_connect_init
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_dns_lookup_callback(const struct dns_lookup_result
      *result,\n\t\t\t\t   struct doveadm_client_dns_lookup_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:717,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:721,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct doveadm_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 713
    functionDepth: 2
    functionLinenumber: 713
    functionLinenumberEnd: 728
    functionName: doveadm_client_dns_lookup
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - dns_lookup
    - t_strdup
    - p_new
    linkageType: ''
    returnType: int
    signature: "int doveadm_client_dns_lookup(struct doveadm_client *conn,\n\t\t\t\t
      \    const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doveadm_client_dns_lookup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:741,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:746,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:748,1
    - Dst: doveadm_client_connect_init
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:751,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:754,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:756,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct doveadm_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 730
    functionDepth: 11
    functionLinenumber: 730
    functionLinenumberEnd: 759
    functionName: doveadm_client_resolve_hostname
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - p_new
    - doveadm_client_dns_lookup
    - t_strdup_printf
    - doveadm_client_connect_init
    - net_gethostbyname
    - net_gethosterror
    linkageType: ''
    returnType: int
    signature: "int doveadm_client_resolve_hostname(struct doveadm_client *conn,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:769,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:770,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:774,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:778,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:779,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:783,1
    - Dst: doveadm_client_settings_dup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:784,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:787,1
    - Dst: connection_init_client_ip
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:790,1
    - Dst: doveadm_client_resolve_hostname
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:793,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:794,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:795,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:796,1
    - Dst: doveadm_client_connect
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:803,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:804,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:805,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 3
    argNames:
    - set
    - conn_r
    - error_r
    argTypes:
    - struct doveadm_client_settings*
    - struct doveadm_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 761
    functionDepth: 12
    functionLinenumber: 761
    functionLinenumberEnd: 813
    functionName: doveadm_client_create
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 4
    functionsReached:
    - pool_alloconly_create
    - connection_list_init
    - event_create
    - p_new
    - connection_init_client_unix
    - event_unref
    - doveadm_client_resolve_hostname
    - doveadm_client_connect
    - t_strdup
    - pool_unref
    - doveadm_client_settings_dup
    - connection_init_client_ip
    - i_assert
    - connection_deinit
    linkageType: ''
    returnType: int
    signature: "int doveadm_client_create(const struct doveadm_client_settings *set,\n\t\t\t
      \ struct doveadm_client **conn_r,\n\t\t\t  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - conn
    - callback
    - context
    argTypes:
    - struct doveadm_client*
    - doveadm_client_print_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 822
    functionName: doveadm_client_set_print
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_set_print(struct doveadm_client *conn,\n\t\t\t
      \     doveadm_client_print_t *callback,\n\t\t\t      void *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:830,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:832,1
    - Dst: doveadm_client_callback
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:837,1
    - Dst: print_connection_released
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:840,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:843,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:844,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:846,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:847,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:848,1
    - Dst: doveadm_client_print_log
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:851,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:852,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:853,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:855,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 824
    functionDepth: 6
    functionLinenumber: 824
    functionLinenumberEnd: 856
    functionName: doveadm_client_destroy_int
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - print_connection_released
    - o_stream_close
    - doveadm_client_callback
    - io_remove
    - ssl_iostream_destroy
    - connection_disconnect_reason
    - doveadm_client_print_log
    - ssl_iostream_get_last_error
    - i_stream_unref
    - connection_deinit
    - o_stream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void doveadm_client_destroy_int(struct doveadm_client *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:865,1
    - Dst: doveadm_client_destroy_int
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:866,1
    - Dst: doveadm_client_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct doveadm_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 858
    functionDepth: 7
    functionLinenumber: 858
    functionLinenumberEnd: 868
    functionName: doveadm_client_destroy
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 5
    functionsReached:
    - doveadm_client_unref
    - doveadm_client_destroy_int
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void doveadm_client_destroy(struct doveadm_client **_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:876,1
    - Dst: doveadm_client_destroy_int
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:880,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:881,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct doveadm_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 870
    functionDepth: 7
    functionLinenumber: 870
    functionLinenumberEnd: 882
    functionName: doveadm_client_unref
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 7
    functionsReached:
    - i_assert
    - doveadm_client_destroy_int
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void doveadm_client_unref(struct doveadm_client **_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_getpeername
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:887,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:888,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - conn
    - ip_r
    - port_r
    argTypes:
    - struct doveadm_client*
    - struct ip_addr*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 884
    functionDepth: 3
    functionLinenumber: 884
    functionLinenumberEnd: 891
    functionName: doveadm_client_get_dest
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 2
    functionsReached:
    - i_zero
    - net_getpeername
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_get_dest(struct doveadm_client *conn,\n\t\t\t
      \    struct ip_addr *ip_r, in_port_t *port_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doveadm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 897
    functionName: doveadm_client_get_settings
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct doveadm_client_settings
    signature: 'struct doveadm_client_settings *

      doveadm_client_get_settings(struct doveadm_client *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:904,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - pool
    - src
    - dest_r
    argTypes:
    - pool_t
    - struct doveadm_client_cmd_settings*
    - struct doveadm_client_cmd_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 908
    functionName: doveadm_client_cmd_settings_dup
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_cmd_settings_dup(pool_t pool,\n\t\t\t\tconst struct
      doveadm_client_cmd_settings *src,\n\t\t\t\tstruct doveadm_client_cmd_settings
      *dest_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:915,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:916,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:920,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:921,1
    - Dst: doveadm_client_cmd_settings_dup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:925,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:927,1
    - Dst: doveadm_client_send_cmd
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:929,1
    - Dst: doveadm_client_send_cmd_input
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:930,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 6
    argNames:
    - conn
    - set
    - line
    - cmd_input
    - callback
    - context
    argTypes:
    - struct doveadm_client*
    - struct doveadm_client_cmd_settings*
    - char*
    - struct istream*
    - doveadm_client_cmd_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 910
    functionDepth: 6
    functionLinenumber: 910
    functionLinenumberEnd: 936
    functionName: doveadm_client_cmd
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 4
    functionsReached:
    - doveadm_client_send_cmd
    - p_strdup
    - i_stream_ref
    - doveadm_client_send_cmd_input
    - i_assert
    - doveadm_client_cmd_settings_dup
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_cmd(struct doveadm_client *conn,\n\t\t\tconst
      struct doveadm_client_cmd_settings *set,\n\t\t\tconst char *line, struct istream
      *cmd_input,\n\t\t\tdoveadm_client_cmd_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:949,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 5
    argNames:
    - conn
    - istream_r
    - log_istream_r
    - ostream_r
    - ssl_iostream_r
    argTypes:
    - struct doveadm_client*
    - struct istream**
    - struct istream**
    - struct ostream**
    - struct ssl_iostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 938
    functionDepth: 5
    functionLinenumber: 938
    functionLinenumberEnd: 958
    functionName: doveadm_client_extract
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 1
    functionsReached:
    - o_stream_unset_flush_callback
    - io_remove
    linkageType: ''
    returnType: void
    signature: "void doveadm_client_extract(struct doveadm_client *conn,\n\t\t\t    struct
      istream **istream_r,\n\t\t\t    struct istream **log_istream_r,\n\t\t\t    struct
      ostream **ostream_r,\n\t\t\t    struct ssl_iostream **ssl_iostream_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 963
    functionName: doveadm_clients_count
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int doveadm_clients_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-doveadm/doveadm-client.c:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 965
    functionDepth: 2
    functionLinenumber: 965
    functionLinenumberEnd: 968
    functionName: doveadm_clients_destroy_all
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.c
    functionUses: 2
    functionsReached:
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void doveadm_clients_destroy_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - conn
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: doveadm_client_set_print
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-client.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: doveadm_client_set_print(conn, callback, context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-doveadm/doveadm-protocol.c:27,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - code
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 33
    functionName: doveadm_exit_code_to_str
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-protocol.c
    functionUses: 1
    functionsReached:
    - N_ELEMENTS
    linkageType: ''
    returnType: char
    signature: char *doveadm_exit_code_to_str(int code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-doveadm/doveadm-protocol.c:37,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-doveadm/doveadm-protocol.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - reason
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 43
    functionName: doveadm_str_to_exit_code
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-protocol.c
    functionUses: 1
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int doveadm_str_to_exit_code(const char *reason)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-doveadm/doveadm-protocol.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 63
    functionName: doveadm_log_type_to_char
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-protocol.c
    functionUses: 1
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char doveadm_log_type_to_char(enum log_type type)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - c
    - type_r
    argTypes:
    - char
    - enum log_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 91
    functionName: doveadm_log_type_from_char
    functionSourceFile: /src/dovecot/src/lib-doveadm/doveadm-protocol.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool doveadm_log_type_from_char(char c, enum log_type *type_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: smtp_client_command_new
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_client_command_new(conn, flags, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - after
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: smtp_client_command_noop_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_command_noop_submit_after(conn, flags, after, \\\n\t\t\t\t\t
      \     callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: smtp_client_command_noop_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_client_command_noop_submit(conn, flags, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - after
    - ','
    - param
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 145
    functionName: smtp_client_command_vrfy_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_command_vrfy_submit_after(conn, flags, after, param, \\\n\t\t\t\t\t
      \     callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - param
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 156
    functionName: smtp_client_command_vrfy_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_client_command_vrfy_submit(conn, flags, param, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - after
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 170
    functionName: smtp_client_command_rset_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_command_rset_submit_after(conn, flags, after, \\\n\t\t\t\t\t
      \     callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: smtp_client_command_rset_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_client_command_rset_submit(conn, flags, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - after
    - ','
    - address
    - ','
    - params
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 198
    functionName: smtp_client_command_mail_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_command_mail_submit_after(conn, flags, after, \\\n\t\t\t\t\t
      \     address, params, \\\n\t\t\t\t\t      callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - address
    - ','
    - params
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: smtp_client_command_mail_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_command_mail_submit(conn, flags, address, params, \\\n\t\t\t\t\tcallback,
      context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - after
    - ','
    - to
    - ','
    - params
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 229
    functionName: smtp_client_command_rcpt_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_command_rcpt_submit_after(conn, flags, after, to, params,
      \\\n\t\t\t\t\t      callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - to
    - ','
    - params
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: smtp_client_command_rcpt_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_command_rcpt_submit(conn, flags, to, params, \\\n\t\t\t\t\tcallback,
      context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - after
    - ','
    - data
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 262
    functionName: smtp_client_command_data_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_command_data_submit_after(conn, flags, after, data, \\\n\t\t\t\t\t
      \     callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - data
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 273
    functionName: smtp_client_command_data_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_client_command_data_submit(conn, flags, data, callback, context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:99,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:116,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:127,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 30
    argCount: 3
    argNames:
    - text
    - enh_code_r
    - pos_r
    argTypes:
    - char*
    - struct smtp_reply_enhanced_code*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 143
    functionName: smtp_reply_parse_enhanced_code
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_isdigit
    linkageType: ''
    returnType: bool
    signature: "bool smtp_reply_parse_enhanced_code(const char *text,\n\t\t\t\t    struct
      smtp_reply_enhanced_code *enh_code_r,\n\t\t\t\t    const char **pos_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:151,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:153,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:154,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - parser
    - format
    argTypes:
    - struct smtp_reply_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: smtp_reply_parser_error
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - va_end
    - i_free
    - i_strdup_vprintf
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_reply_parser_error(struct smtp_reply_parser *parser,\n\t\t\tconst
      char *format, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:163,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:167,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - input
    - max_reply_size
    argTypes:
    - struct istream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 170
    functionName: smtp_reply_parser_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - str_new
    - i_new
    linkageType: ''
    returnType: struct smtp_reply_parser
    signature: 'struct smtp_reply_parser *

      smtp_reply_parser_init(struct istream *input, size_t max_reply_size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_free
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:178,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:179,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:180,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:181,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct smtp_reply_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 183
    functionName: smtp_reply_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - i_free
    - str_free
    - pool_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void smtp_reply_parser_deinit(struct smtp_reply_parser **_parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:188,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - input
    argTypes:
    - struct smtp_reply_parser*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 193
    functionName: smtp_reply_parser_set_stream
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void smtp_reply_parser_set_stream(struct smtp_reply_parser *parser,\n\t\t\t\t
      \ struct istream *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:198,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:199,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:200,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:202,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:203,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_reply_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 195
    functionDepth: 3
    functionLinenumber: 195
    functionLinenumberEnd: 206
    functionName: smtp_reply_parser_restart
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - p_new
    - p_array_init
    - pool_unref
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void smtp_reply_parser_restart(struct smtp_reply_parser *parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:216,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:219,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:222,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:225,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:227,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:231,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - parser
    - code_r
    argTypes:
    - struct smtp_reply_parser*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 233
    functionName: smtp_reply_parse_code
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - i_isdigit
    - str_truncate
    - str_append_data
    linkageType: ''
    returnType: int
    signature: 'int smtp_reply_parse_code

      (struct smtp_reply_parser *parser, unsigned int *code_r)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_textstr
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:241,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:245,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:246,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:251,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_reply_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 255
    functionName: smtp_reply_parse_textstring
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_textstr
    - smtp_reply_parser_error
    - str_append_data
    - str_len
    linkageType: ''
    returnType: int
    signature: int smtp_reply_parse_textstring(struct smtp_reply_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_textstr
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:264,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:268,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:269,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_reply_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 277
    functionName: smtp_reply_parse_ehlo_domain
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_textstr
    - smtp_reply_parser_error
    - str_append_data
    - str_len
    linkageType: ''
    returnType: int
    signature: int smtp_reply_parse_ehlo_domain(struct smtp_reply_parser *parser)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_ehlo_greet
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:290,1
    - Dst: smtp_char_is_textstr
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:293,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:297,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:299,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:305,1
    - Dst: smtp_char_is_ehlo_greet
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:310,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:312,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_reply_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 318
    functionName: smtp_reply_parse_ehlo_greet
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_textstr
    - smtp_char_is_ehlo_greet
    - str_append_c
    - str_len
    - smtp_reply_parser_error
    - str_append_data
    linkageType: ''
    returnType: int
    signature: int smtp_reply_parse_ehlo_greet(struct smtp_reply_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:323,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 320
    functionDepth: 11
    functionLinenumber: 320
    functionLinenumberEnd: 325
    functionName: _chr_sanitize
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *_chr_sanitize(unsigned char c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_enhanced_code
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:339,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:341,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 3
    argNames:
    - text
    - parser
    - pos_r
    argTypes:
    - char*
    - struct smtp_reply_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 365
    functionName: smtp_reply_parser_parse_enhanced_code
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_reply_parse_enhanced_code
    linkageType: ''
    returnType: void
    signature: "void smtp_reply_parser_parse_enhanced_code(const char *text,\n\t\t\t\t
      \     struct smtp_reply_parser *parser,\n\t\t\t\t      const char **pos_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:369,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:371,1
    - Dst: smtp_reply_parser_parse_enhanced_code
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:372,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:375,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:376,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:377,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_reply_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 379
    functionName: smtp_reply_parser_finish_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - array_push_back
    - str_len
    - smtp_reply_parser_parse_enhanced_code
    - str_truncate
    linkageType: ''
    returnType: void
    signature: void smtp_reply_parser_finish_line(struct smtp_reply_parser *parser)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parser_restart
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:400,1
    - Dst: smtp_reply_parse_code
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:405,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:407,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:415,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:447,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:449,1
    - Dst: smtp_reply_parse_ehlo_domain
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:463,1
    - Dst: smtp_reply_parse_textstring
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:471,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:496,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:499,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:501,1
    - Dst: smtp_reply_parser_finish_line
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:506,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:521,1
    - Dst: smtp_reply_parse_ehlo_greet
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:528,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:535,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:539,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 109
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_reply_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 381
    functionDepth: 4
    functionLinenumber: 381
    functionLinenumberEnd: 540
    functionName: smtp_reply_parse_more
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_restart
    - str_append_c
    - i_unreached
    - smtp_reply_parser_error
    - smtp_reply_parse_code
    - _chr_sanitize
    - smtp_reply_parser_finish_line
    - smtp_reply_parse_ehlo_domain
    - smtp_reply_parse_textstring
    - smtp_reply_parse_ehlo_greet
    linkageType: ''
    returnType: int
    signature: int smtp_reply_parse_more(struct smtp_reply_parser *parser)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:547,1
    - Dst: smtp_reply_parse_more
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:552,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:555,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:560,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:562,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:566,1
    - Dst: smtp_reply_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:569,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:571,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_reply_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 542
    functionDepth: 7
    functionLinenumber: 542
    functionLinenumberEnd: 575
    functionName: smtp_reply_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_error
    - i_stream_skip
    - i_stream_get_error
    - smtp_reply_parse_more
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int smtp_reply_parse(struct smtp_reply_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:583,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:589,1
    - Dst: smtp_reply_parse
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:599,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:604,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:604,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:605,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - parser
    - enhanced_codes
    - reply_r
    - error_r
    argTypes:
    - struct smtp_reply_parser*
    - bool
    - struct smtp_reply**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 577
    functionDepth: 8
    functionLinenumber: 577
    functionLinenumberEnd: 612
    functionName: smtp_reply_parse_next
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - i_free_and_null
    - smtp_reply_parse
    - array_count
    - array_front
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int smtp_reply_parse_next(struct smtp_reply_parser *parser,\n\t\t\t
      \ bool enhanced_codes, struct smtp_reply **reply_r,\n\t\t\t  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:619,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:625,1
    - Dst: smtp_reply_parse
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:643,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:648,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:648,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:649,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-reply-parser.c:653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - parser
    - reply_r
    - error_r
    argTypes:
    - struct smtp_reply_parser*
    - struct smtp_reply**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 614
    functionDepth: 8
    functionLinenumber: 614
    functionLinenumberEnd: 656
    functionName: smtp_reply_parse_ehlo
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply-parser.c
    functionUses: 0
    functionsReached:
    - i_free_and_null
    - smtp_reply_parse
    - array_count
    - array_front
    - array_append_zero
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int smtp_reply_parse_ehlo(struct smtp_reply_parser *parser,\n\t\t\t
      \ struct smtp_reply **reply_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_xtext_encode
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.h:27,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.h:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - out
    - data
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: smtp_xtext_encode_cstr
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.h
    functionUses: 0
    functionsReached:
    - strlen
    - smtp_xtext_encode
    linkageType: ''
    returnType: void
    signature: void smtp_xtext_encode_cstr(string_t *out, const char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 21
    functionName: server_cmd_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int server_cmd_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\tstruct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\tstruct smtp_server_recipient *rcpt ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c:32,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c:33,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c:34,1
    - Dst: smtp_server_cmd_data_check_size
      Src: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c:35,1
    - Dst: smtp_server_reply_all
      Src: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c:46,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 23
    functionDepth: 4
    functionLinenumber: 23
    functionLinenumberEnd: 48
    functionName: server_cmd_data_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - smtp_server_reply_all
    - i_stream_skip
    - smtp_server_cmd_data_check_size
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: "int server_cmd_data_continue(void *conn_ctx ATTR_UNUSED,\n\t\t\t struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t struct smtp_server_transaction *trans ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 58
    functionName: server_cmd_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int server_cmd_data_begin(void *conn_ctx ATTR_UNUSED,\n\t\t      struct
      smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t      struct smtp_server_transaction
      *trans ATTR_UNUSED,\n\t\t      struct istream *data_input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: server_connection_free
    functionSourceFile: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void server_connection_free(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop_delayed
      Src: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct fuzzer_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: test_server_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/fuzz-smtp-server.c
    functionUses: 0
    functionsReached:
    - io_loop_stop_delayed
    linkageType: ''
    returnType: void
    signature: void test_server_continue(struct fuzzer_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:15,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:17,1
    - Dst: smtp_params_rcpt_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:18,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:19,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:20,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - prcpt
    argTypes:
    - struct smtp_server_recipient_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 11
    functionDepth: 11
    functionLinenumber: 11
    functionLinenumberEnd: 21
    functionName: smtp_server_recipient_update_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - t_strdup_printf
    - str_sanitize
    - smtp_address_encode
    - smtp_params_rcpt_add_to_event
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void smtp_server_recipient_update_event(struct smtp_server_recipient_private
      *prcpt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:35,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:36,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:39,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:42,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:46,1
    - Dst: smtp_server_recipient_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - prcpt
    argTypes:
    - struct smtp_server_recipient_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 23
    functionDepth: 12
    functionLinenumber: 23
    functionLinenumberEnd: 49
    functionName: smtp_server_recipient_create_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_update_event
    - event_set_append_log_prefix
    - event_create
    - event_drop_parent_log_prefixes
    linkageType: ''
    returnType: void
    signature: void smtp_server_recipient_create_event(struct smtp_server_recipient_private
      *prcpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:59,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:60,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:65,1
    - Dst: smtp_params_rcpt_copy
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:66,1
    - Dst: smtp_server_recipient_create_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - cmd
    - rcpt_to
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_address*
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 51
    functionDepth: 13
    functionLinenumber: 51
    functionLinenumberEnd: 71
    functionName: smtp_server_recipient_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - smtp_params_rcpt_copy
    - pool_alloconly_create
    - p_new
    - smtp_address_clone
    - smtp_server_recipient_create_event
    linkageType: ''
    returnType: struct smtp_server_recipient
    signature: "struct smtp_server_recipient *\nsmtp_server_recipient_create(struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t     const struct smtp_address *rcpt_to,\n\t\t\t
      \    const struct smtp_params_rcpt *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcpt
    argTypes:
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 82
    functionName: smtp_server_recipient_ref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_server_recipient_ref(struct smtp_server_recipient *rcpt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:97,1
    - Dst: smtp_server_recipient_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:102,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:104,1
    - Dst: smtp_server_recipient_create_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:107,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:110,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:112,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:113,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:114,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:116,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:116,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:119,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - _rcpt
    argTypes:
    - struct smtp_server_recipient**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 84
    functionDepth: 13
    functionLinenumber: 84
    functionLinenumberEnd: 122
    functionName: smtp_server_recipient_unref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - event_unref
    - i_unreached
    - e_debug
    - pool_unref
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - event_create_passthrough
    - smtp_server_recipient_create_event
    - smtp_server_recipient_call_hooks
    - i_assert
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_recipient_unref(struct smtp_server_recipient **_rcpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_recipient_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _rcpt
    argTypes:
    - struct smtp_server_recipient**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 14
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: smtp_server_recipient_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_unref
    linkageType: ''
    returnType: void
    signature: void smtp_server_recipient_destroy(struct smtp_server_recipient **_rcpt)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rcpt
    argTypes:
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 135
    functionName: smtp_server_recipient_get_original
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct smtp_address
    signature: 'struct smtp_address *

      smtp_server_recipient_get_original(struct smtp_server_recipient *rcpt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:142,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:143,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:145,1
    - Dst: smtp_server_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:148,1
    - Dst: smtp_server_recipient_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _rcpt
    argTypes:
    - struct smtp_server_recipient**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 152
    functionName: smtp_server_recipient_approved
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - smtp_server_recipient_call_hooks
    - smtp_server_transaction_add_rcpt
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_recipient_approved(struct smtp_server_recipient **_rcpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:157,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:158,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:163,1
    - Dst: smtp_server_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:165,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:167,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rcpt
    - reply
    argTypes:
    - struct smtp_server_recipient*
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 168
    functionName: smtp_server_recipient_denied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_reply_add_to_event
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_denied(struct smtp_server_recipient *rcpt,\n\t\t\t\t
      \ const struct smtp_server_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rcpt
    - cmd
    argTypes:
    - struct smtp_server_recipient*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 174
    functionName: smtp_server_recipient_data_command
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_data_command(struct smtp_server_recipient
      *rcpt,\n\t\t\t\t\tstruct smtp_server_cmd_ctx *cmd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_recipient_get_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:180,1
    - Dst: smtp_server_recipient_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - rcpt
    argTypes:
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 187
    functionName: smtp_server_recipient_data_replied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_call_hooks
    - smtp_server_recipient_get_reply
    linkageType: ''
    returnType: void
    signature: void smtp_server_recipient_data_replied(struct smtp_server_recipient
      *rcpt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:192,1
    - Dst: smtp_server_command_get_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:194,1
    - Dst: smtp_server_command_get_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rcpt
    argTypes:
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: smtp_server_recipient_get_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 1
    functionsReached:
    - HAS_ALL_BITS
    - smtp_server_command_get_reply
    linkageType: ''
    returnType: struct smtp_server_reply
    signature: 'struct smtp_server_reply *

      smtp_server_recipient_get_reply(struct smtp_server_recipient *rcpt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:200,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rcpt
    argTypes:
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 203
    functionName: smtp_server_recipient_is_replied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 1
    functionsReached:
    - smtp_server_command_is_replied
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_recipient_is_replied(struct smtp_server_recipient
      *rcpt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:209,1
    - Dst: smtp_server_command_is_rcpt
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:211,1
    - Dst: smtp_server_reply_indexv
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:212,1
    - Dst: smtp_server_reply_index
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:217,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:218,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - rcpt
    - status
    - enh_code
    - fmt
    - args
    argTypes:
    - struct smtp_server_recipient*
    - unsigned int
    - char*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 205
    functionDepth: 11
    functionLinenumber: 205
    functionLinenumberEnd: 220
    functionName: smtp_server_recipient_replyv
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_is_rcpt
    - smtp_address_encode
    - smtp_server_reply_indexv
    - t_strdup_vprintf
    - smtp_server_reply_index
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_replyv(struct smtp_server_recipient *rcpt,\n\t\t\t\t
      \ unsigned int status, const char *enh_code,\n\t\t\t\t  const char *fmt, va_list
      args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:228,1
    - Dst: smtp_server_recipient_replyv
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:229,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rcpt
    - status
    - enh_code
    - fmt
    argTypes:
    - struct smtp_server_recipient*
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 222
    functionDepth: 12
    functionLinenumber: 222
    functionLinenumberEnd: 231
    functionName: smtp_server_recipient_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 16
    functionsReached:
    - va_end
    - smtp_server_recipient_replyv
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_reply(struct smtp_server_recipient *rcpt,\n\t\t\t\t
      unsigned int status, const char *enh_code,\n\t\t\t\t const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_is_rcpt
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:236,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:237,1
    - Dst: smtp_server_reply_create_forward
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:240,1
    - Dst: smtp_server_reply_replace_path
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:242,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rcpt
    - from
    argTypes:
    - struct smtp_server_recipient*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 244
    functionName: smtp_server_recipient_reply_forward
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 5
    functionsReached:
    - smtp_server_reply_create_forward
    - smtp_server_reply_submit
    - smtp_server_command_is_rcpt
    - smtp_server_reply_replace_path
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_reply_forward(struct smtp_server_recipient
      *rcpt,\n\t\t\t\t\t const struct smtp_reply *from)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:248,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:252,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:254,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:255,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:256,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:258,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - rcpt
    argTypes:
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 259
    functionName: smtp_server_recipient_reset
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - e_debug
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: void smtp_server_recipient_reset(struct smtp_server_recipient *rcpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:264,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:268,1
    - Dst: smtp_server_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:270,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:272,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - rcpt
    - reply
    argTypes:
    - struct smtp_server_recipient*
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 273
    functionName: smtp_server_recipient_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_reply_add_to_event
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_finished(struct smtp_server_recipient *rcpt,\n\t\t\t\t
      \   const struct smtp_server_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:284,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:289,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:294,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - rcpt
    - type
    - func
    - context
    argTypes:
    - struct smtp_server_recipient*
    - enum smtp_server_recipient_hook_type
    - smtp_server_rcpt_func_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 300
    functionName: smtp_server_recipient_add_hook
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 3
    functionsReached:
    - i_assert
    - p_new
    - DLLIST2_APPEND
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_add_hook(struct smtp_server_recipient *rcpt,\n\t\t\t\t
      \   enum smtp_server_recipient_hook_type type,\n\t\t\t\t    smtp_server_rcpt_func_t
      func, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:318,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:326,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - rcpt
    - type
    - func
    argTypes:
    - struct smtp_server_recipient*
    - enum smtp_server_recipient_hook_type
    - smtp_server_rcpt_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 327
    functionName: smtp_server_recipient_remove_hook
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_remove_hook(\n\tstruct smtp_server_recipient
      *rcpt,\n\tenum smtp_server_recipient_hook_type type,\n\tsmtp_server_rcpt_func_t
      *func)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_recipient_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:339,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:346,1
    - Dst: struct smtp_server_recipient_hook*::func
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:348,1
    - Dst: smtp_server_recipient_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-recipient.c:355,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - _rcpt
    - type
    argTypes:
    - struct smtp_server_recipient**
    - enum smtp_server_recipient_hook_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 329
    functionDepth: 14
    functionLinenumber: 329
    functionLinenumberEnd: 361
    functionName: smtp_server_recipient_call_hooks
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-recipient.c
    functionUses: 3
    functionsReached:
    - DLLIST2_REMOVE
    - smtp_server_recipient_unref
    - struct smtp_server_recipient_hook*::func
    - smtp_server_recipient_ref
    linkageType: ''
    returnType: bool
    signature: "bool smtp_server_recipient_call_hooks(\n\tstruct smtp_server_recipient
      **_rcpt,\n\tenum smtp_server_recipient_hook_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 30
    functionName: cmd_xclient_check_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply
    linkageType: ''
    returnType: bool
    signature: bool cmd_xclient_check_state(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:39,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:39,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:40,1
    - Dst: smtp_server_connection_reset_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:46,1
    - Dst: smtp_server_connection_set_proxy_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - cmd
    - proxy_data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 48
    functionName: cmd_xclient_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_is_replied
    - smtp_server_connection_reset_state
    - smtp_server_command_replied_success
    - i_assert
    - smtp_server_connection_set_proxy_data
    linkageType: ''
    returnType: void
    signature: "void cmd_xclient_completed(struct smtp_server_cmd_ctx *cmd,\n\t\t
      \     struct smtp_proxy_data *proxy_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cmd_xclient_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:58,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:60,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cmd
    - proxy_data ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 66
    functionName: cmd_xclient_recheck
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_set_state
    - cmd_xclient_check_state
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: "void cmd_xclient_recheck(struct smtp_server_cmd_ctx *cmd,\n\t\t    struct
      smtp_proxy_data *proxy_data ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:76,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:79,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:80,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:81,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:82,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - conn
    - pool
    - param
    - fields
    argTypes:
    - struct smtp_server_connection*
    - pool_t
    - struct smtp_param*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 84
    functionName: smtp_server_cmd_xclient_extra_field
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - p_array_init
    - str_array_icase_find
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_xclient_extra_field(struct smtp_server_connection
      *conn,\n\t\t\t\t    pool_t pool, const struct smtp_param *param,\n\t\t\t\t    ARRAY_TYPE(smtp_proxy_data_field)
      *fields)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:93,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:102,1
    - Dst: cmd_xclient_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:108,1
    - Dst: smtp_server_connection_is_trusted
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:112,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:113,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:118,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:120,1
    - Dst: smtp_param_parse
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:125,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:125,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:127,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:132,1
    - Dst: smtp_xtext_parse
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:134,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:135,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:141,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:143,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:145,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:147,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:149,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:153,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:155,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:157,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:159,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:161,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:165,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:166,1
    - Dst: smtp_helo_domain_parse
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:168,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:171,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:172,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:173,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:175,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:176,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:177,1
    - Dst: net_str2port
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:179,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:180,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:184,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:185,1
    - Dst: net_str2port
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:187,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:188,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:192,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:193,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:194,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:196,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:198,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:201,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:205,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:206,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:208,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:209,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:210,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:213,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:214,1
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:215,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:216,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:220,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:221,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:222,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:224,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:228,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:229,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:231,1
    - Dst: smtp_server_cmd_xclient_extra_field
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:237,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:242,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:243,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:247,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:249,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:251,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:255,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:259,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_xclient
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:262,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c:264,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 131
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 86
    functionDepth: 8
    functionLinenumber: 86
    functionLinenumberEnd: 265
    functionName: smtp_server_cmd_xclient
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-xclient.c
    functionUses: 0
    functionsReached:
    - smtp_param_parse
    - p_strdup
    - t_str_ucase
    - smtp_server_connection_is_trusted
    - struct smtp_server_callbacks*::conn_cmd_xclient
    - str_begins_icase
    - str_to_uint
    - smtp_server_command_ref
    - connection_is_valid_dns_name
    - net_addr2ip
    - p_new
    - smtp_server_command_input_lock
    - smtp_server_reply
    - smtp_helo_domain_parse
    - net_str2port
    - smtp_server_command_unref
    - smtp_server_connection_set_state
    - array_get
    - strcasecmp
    - pool_datastack_create
    - strcmp
    - smtp_server_command_add_hook
    - smtp_xtext_parse
    - t_strsplit
    - smtp_server_cmd_xclient_extra_field
    - ARRAY_TYPE
    - array_is_created
    - cmd_xclient_check_state
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_xclient(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \    const char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: smtp_server_cmd_data_size_limit_exceeded
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_fail
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_data_size_limit_exceeded(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:39,1
    - Dst: smtp_server_cmd_data_size_limit_exceeded
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 50
    functionName: smtp_server_cmd_data_check_size
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 3
    functionsReached:
    - smtp_server_cmd_data_size_limit_exceeded
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_cmd_data_check_size(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:60,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:68,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:83,1
    - Dst: smtp_server_transaction_has_rcpt
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:97,1
    - Dst: smtp_server_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:104,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:112,1
    - Dst: smtp_server_transaction_has_rcpt
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:121,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:122,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 128
    functionName: smtp_server_connection_data_check_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 1
    functionsReached:
    - smtp_server_command_abort
    - smtp_server_transaction_has_rcpt
    - smtp_server_command_fail
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_connection_data_check_state(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:137,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:141,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:143,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:144,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - cmd
    - data_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 149
    functionName: cmd_data_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_replied_success
    - i_assert
    - i_stream_unref
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void cmd_data_destroy(struct smtp_server_cmd_ctx *cmd,\n\t\t struct
      cmd_data_context *data_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:159,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:162,1
    - Dst: smtp_server_recipient_data_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - cmd
    - ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 164
    functionName: cmd_data_replied_one
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_data_replied
    - array_is_created
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void cmd_data_replied_one(struct smtp_server_cmd_ctx *cmd,\n\t\t     struct
      cmd_data_context *data_cmd ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:173,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:176,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:177,1
    - Dst: smtp_server_command_input_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cmd
    - ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 179
    functionName: cmd_data_replied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_replied_success
    - i_assert
    - smtp_server_command_input_lock
    - smtp_server_command_input_unlock
    linkageType: ''
    returnType: void
    signature: "void cmd_data_replied(struct smtp_server_cmd_ctx *cmd,\n\t\t struct
      cmd_data_context *data_cmd ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:187,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:190,1
    - Dst: smtp_server_transaction_finished
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:191,1
    - Dst: smtp_server_connection_reset_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - cmd
    - data_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 195
    functionName: cmd_data_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_reset_state
    - i_assert
    - smtp_server_transaction_finished
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void cmd_data_completed(struct smtp_server_cmd_ctx *cmd,\n\t\t   struct
      cmd_data_context *data_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:204,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:206,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:209,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:209,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - cmd
    - data_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 213
    functionName: cmd_data_chunk_replied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_is_replied
    - i_assert
    - smtp_server_command_replied_success
    linkageType: ''
    returnType: void
    signature: "void cmd_data_chunk_replied(struct smtp_server_cmd_ctx *cmd,\n\t\t
      \      struct cmd_data_context *data_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - cmd
    - ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 224
    functionName: cmd_data_chunk_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_replied_success
    linkageType: ''
    returnType: void
    signature: "void cmd_data_chunk_completed(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      struct cmd_data_context *data_cmd ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:232,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:233,1
    - Dst: smtp_server_connection_data_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:236,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 241
    functionName: cmd_data_chunk_finish
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_data_check_state
    - smtp_server_reply
    - smtp_server_command_input_lock
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void cmd_data_chunk_finish(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:254,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:255,1
    - Dst: i_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:261,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:262,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 264
    functionName: cmd_data_input_error
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - i_stream_get_disconnect_reason
    - smtp_server_command_fail
    - smtp_server_command_is_replied
    - e_debug
    - smtp_server_connection_close
    linkageType: ''
    returnType: void
    signature: void cmd_data_input_error(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:274,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:276,1
    - Dst: smtp_server_connection_reason_begin
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:279,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_data_continue
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:280,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:282,1
    - Dst: smtp_server_cmd_data_check_size
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:284,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:286,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:287,1
    - Dst: smtp_server_transaction_received
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:288,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:291,1
    - Dst: smtp_server_connection_timeout_stop
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:292,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:294,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:295,1
    - Dst: cmd_data_chunk_finish
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:296,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:297,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:299,1
    - Dst: smtp_server_connection_timeout_stop
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:300,1
    - Dst: smtp_server_connection_timeout_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:302,1
    - Dst: cmd_data_input_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:306,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:310,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:310,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 266
    functionDepth: 5
    functionLinenumber: 266
    functionLinenumberEnd: 314
    functionName: cmd_data_do_handle_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - smtp_server_command_input_lock
    - e_debug
    - smtp_server_command_is_replied
    - smtp_server_connection_reason_begin
    - i_stream_have_bytes_left
    - smtp_server_connection_timeout_stop
    - struct smtp_server_callbacks*::conn_cmd_data_continue
    - cmd_data_input_error
    - event_reason_end
    - smtp_server_cmd_data_check_size
    - smtp_server_connection_timeout_start
    - cmd_data_chunk_finish
    - smtp_server_transaction_received
    - i_assert
    linkageType: ''
    returnType: int
    signature: int cmd_data_do_handle_input(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_cmd_data_check_size
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:322,1
    - Dst: smtp_server_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:325,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:326,1
    - Dst: cmd_data_do_handle_input
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:329,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:331,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 316
    functionDepth: 6
    functionLinenumber: 316
    functionLinenumberEnd: 335
    functionName: cmd_data_handle_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - smtp_server_connection_unref
    - smtp_server_cmd_data_check_size
    - smtp_server_connection_ref
    - smtp_server_command_ref
    - cmd_data_do_handle_input
    linkageType: ''
    returnType: int
    signature: int cmd_data_handle_input(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:339,1
    - Dst: cmd_data_handle_input
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 337
    functionDepth: 7
    functionLinenumber: 337
    functionLinenumberEnd: 341
    functionName: cmd_data_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_timeout_reset
    - cmd_data_handle_input
    linkageType: ''
    returnType: void
    signature: void cmd_data_input(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:354,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:355,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:359,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:362,1
    - Dst: smtp_server_transaction_data_command
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:364,1
    - Dst: smtp_server_connection_data_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:367,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:373,1
    - Dst: smtp_server_command_set_reply_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:375,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:376,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:380,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:384,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:385,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:388,1
    - Dst: i_stream_chain_append_eof
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:389,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:396,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:398,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:399,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:401,1
    - Dst: smtp_server_connection_reason_begin
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:403,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_data_begin
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:404,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:406,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:408,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:408,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:410,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:413,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:417,1
    - Dst: smtp_server_command_input_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:418,1
    - Dst: smtp_server_connection_timeout_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:423,1
    - Dst: smtp_server_command_input_capture
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:424,1
    - Dst: cmd_data_handle_input
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:427,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 2
    argNames:
    - cmd
    - data_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 343
    functionDepth: 7
    functionLinenumber: 343
    functionLinenumberEnd: 429
    functionName: cmd_data_next
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - i_stream_chain_append
    - event_reason_end
    - smtp_server_transaction_data_command
    - array_count
    - smtp_server_command_ref
    - cmd_data_handle_input
    - smtp_server_command_is_replied
    - smtp_server_connection_timeout_start
    - i_stream_chain_append_eof
    - smtp_server_command_unref
    - struct smtp_server_callbacks*::conn_cmd_data_begin
    - smtp_server_connection_set_state
    - i_assert
    - smtp_server_command_input_unlock
    - e_debug
    - smtp_server_connection_reason_begin
    - smtp_server_command_input_capture
    - smtp_server_connection_data_check_state
    - smtp_server_command_set_reply_count
    - HAS_ALL_BITS
    linkageType: ''
    returnType: void
    signature: "void cmd_data_next(struct smtp_server_cmd_ctx *cmd,\n\t      struct
      cmd_data_context *data_cmd)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:438,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:441,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:443,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:448,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:451,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:455,1
    - Dst: cmd_data_next
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:462,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:464,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - cmd
    - data_cmd
    - input
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 431
    functionDepth: 8
    functionLinenumber: 431
    functionLinenumberEnd: 468
    functionName: cmd_data_start_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_add_hook
    - smtp_server_command_input_lock
    - i_stream_ref
    - cmd_data_next
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void cmd_data_start_input(struct smtp_server_cmd_ctx *cmd,\n\t\t     struct
      cmd_data_context *data_cmd, struct istream *input)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:481,1
    - Dst: smtp_server_transaction_data_command
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:485,1
    - Dst: smtp_server_connection_data_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:488,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:493,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:498,1
    - Dst: smtp_server_connection_reply_immediate
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:501,1
    - Dst: smtp_command_parse_data_with_dot
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:504,1
    - Dst: cmd_data_start_input
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:505,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:506,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - cmd
    - data_cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 472
    functionDepth: 9
    functionLinenumber: 472
    functionLinenumberEnd: 507
    functionName: cmd_data_start
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_fail
    - smtp_server_connection_set_state
    - cmd_data_start_input
    - smtp_server_connection_data_check_state
    - smtp_server_transaction_data_command
    - smtp_server_connection_reply_immediate
    - smtp_command_parse_data_with_dot
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void cmd_data_start(struct smtp_server_cmd_ctx *cmd,\n\t       struct
      cmd_data_context *data_cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:518,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:523,1
    - Dst: smtp_server_command_pipeline_block
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:524,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:526,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:532,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:534,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:536,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 542
    functionName: smtp_server_cmd_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - p_new
    - smtp_server_command_add_hook
    - smtp_server_command_input_lock
    - smtp_server_reply
    - smtp_server_command_pipeline_block
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_data(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \ const char *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:552,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:557,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:559,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:565,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:566,1
    - Dst: i_stream_create_chain
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:568,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 546
    functionDepth: 5
    functionLinenumber: 546
    functionLinenumberEnd: 571
    functionName: smtp_server_connection_data_chunk_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 1
    functionsReached:
    - i_assert
    - p_new
    - smtp_server_command_add_hook
    - i_stream_create_chain
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_data_chunk_init(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:584,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:585,1
    - Dst: smtp_server_transaction_data_command
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:588,1
    - Dst: smtp_server_connection_data_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:590,1
    - Dst: smtp_server_cmd_data_size_limit_exceeded
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:597,1
    - Dst: smtp_server_command_remove_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:603,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:606,1
    - Dst: smtp_server_command_pipeline_block
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:609,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:616,1
    - Dst: cmd_data_start_input
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:618,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:619,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - cmd
    - chunk
    - chunk_size
    - chunk_last
    - client_input
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct istream*
    - uoff_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 573
    functionDepth: 9
    functionLinenumber: 573
    functionLinenumberEnd: 621
    functionName: smtp_server_connection_data_chunk_add
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 2
    functionsReached:
    - smtp_server_cmd_data_size_limit_exceeded
    - smtp_server_command_add_hook
    - i_stream_ref
    - smtp_server_command_pipeline_block
    - smtp_server_connection_data_check_state
    - cmd_data_start_input
    - smtp_server_transaction_data_command
    - i_stream_unref
    - smtp_server_command_remove_hook
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int smtp_server_connection_data_chunk_add(struct smtp_server_cmd_ctx
      *cmd,\n\tstruct istream *chunk, uoff_t chunk_size, bool chunk_last,\n\tbool
      client_input)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:636,1
    - Dst: smtp_server_connection_data_chunk_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:641,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:647,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:648,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:649,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:655,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:658,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:659,1
    - Dst: smtp_command_parse_data_with_size
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:670,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:675,1
    - Dst: smtp_server_connection_data_chunk_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:679,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c:681,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 625
    functionDepth: 10
    functionLinenumber: 625
    functionLinenumberEnd: 682
    functionName: smtp_server_cmd_bdat
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-data.c
    functionUses: 0
    functionsReached:
    - smtp_command_parse_data_with_size
    - smtp_server_connection_data_chunk_add
    - smtp_server_reply
    - strcasecmp
    - t_strsplit
    - smtp_server_connection_data_chunk_init
    - str_to_uoff
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_bdat(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \ const char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:81,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:81,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:82,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:83,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:83,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:84,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - test
    - cmd_name
    - cmd_params
    argTypes:
    - struct smtp_command_parse_valid_test*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 76
    functionDepth: 11
    functionLinenumber: 76
    functionLinenumberEnd: 86
    functionName: test_smtp_command_parse_valid_check
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - test_out
    - null_strcmp
    - t_strdup_printf
    - str_sanitize
    linkageType: ''
    returnType: void
    signature: "void test_smtp_command_parse_valid_check(\n\tconst struct smtp_command_parse_valid_test
      *test,\n\tconst char *cmd_name,  const char *cmd_params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:101,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:101,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:107,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:110,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:112,1
    - Dst: smtp_command_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:114,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:118,1
    - Dst: test_smtp_command_parse_valid_check
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:122,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:126,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:127,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:134,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:136,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:139,1
    - Dst: smtp_command_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:140,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:144,1
    - Dst: smtp_command_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:146,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:151,1
    - Dst: test_smtp_command_parse_valid_check
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:155,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:159,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:160,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:162,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 88
    functionDepth: 12
    functionLinenumber: 88
    functionLinenumberEnd: 163
    functionName: test_smtp_command_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - test_istream_set_size
    - smtp_command_parser_deinit
    - test_out_reason
    - smtp_command_parse_next
    - strlen
    - t_strdup_printf
    - test_smtp_command_parse_valid_check
    - test_end
    - test_istream_create_data
    - smtp_command_parser_init
    - i_stream_unref
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_command_parse_valid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:263,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:263,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:267,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:270,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:272,1
    - Dst: smtp_command_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:274,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:277,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:279,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:279,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:280,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:282,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:284,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:285,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:292,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:294,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:297,1
    - Dst: smtp_command_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:298,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:302,1
    - Dst: smtp_command_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:304,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:307,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:310,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:310,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:311,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:313,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:315,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:316,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:318,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 250
    functionDepth: 11
    functionLinenumber: 250
    functionLinenumberEnd: 319
    functionName: test_smtp_command_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - test_istream_set_size
    - i_assert
    - smtp_command_parser_deinit
    - test_out_reason
    - smtp_command_parse_next
    - strlen
    - t_strdup_printf
    - test_out_quiet
    - str_sanitize
    - test_end
    - test_istream_create_data
    - smtp_command_parser_init
    - i_stream_unref
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_command_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:453,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:453,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:454,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - test
    - line
    argTypes:
    - struct smtp_auth_response_parse_valid_test*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 448
    functionDepth: 11
    functionLinenumber: 448
    functionLinenumberEnd: 456
    functionName: test_smtp_auth_response_parse_valid_check
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - test_out
    - null_strcmp
    - t_strdup_printf
    - str_sanitize
    linkageType: ''
    returnType: void
    signature: "void test_smtp_auth_response_parse_valid_check(\n\tconst struct smtp_auth_response_parse_valid_test
      *test,\n\tconst char *line)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:471,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:471,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:477,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:480,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:482,1
    - Dst: smtp_command_parse_auth_response
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:484,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:487,1
    - Dst: test_smtp_auth_response_parse_valid_check
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:491,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:494,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:495,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:502,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:504,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:507,1
    - Dst: smtp_command_parse_auth_response
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:508,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:511,1
    - Dst: smtp_command_parse_auth_response
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:513,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:517,1
    - Dst: test_smtp_auth_response_parse_valid_check
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:521,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:524,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:525,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:527,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 458
    functionDepth: 12
    functionLinenumber: 458
    functionLinenumberEnd: 528
    functionName: test_smtp_auth_response_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - test_istream_set_size
    - smtp_command_parser_deinit
    - test_out_reason
    - strlen
    - t_strdup_printf
    - test_smtp_auth_response_parse_valid_check
    - test_end
    - test_istream_create_data
    - smtp_command_parse_auth_response
    - smtp_command_parser_init
    - i_stream_unref
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_auth_response_parse_valid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:582,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:583,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:587,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:590,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:591,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:592,1
    - Dst: smtp_command_parse_auth_response
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:594,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:597,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:597,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:598,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:601,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:603,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:604,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:611,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:613,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:616,1
    - Dst: smtp_command_parse_auth_response
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:617,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:620,1
    - Dst: smtp_command_parse_auth_response
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:622,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:624,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:627,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:627,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:628,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:631,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:633,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:634,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:636,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 569
    functionDepth: 11
    functionLinenumber: 569
    functionLinenumberEnd: 637
    functionName: test_smtp_auth_response_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - test_istream_set_size
    - smtp_command_parser_deinit
    - i_assert
    - test_out_reason
    - strlen
    - t_strdup_printf
    - test_out_quiet
    - str_sanitize
    - test_end
    - test_istream_create_data
    - smtp_command_parse_auth_response
    - smtp_command_parser_init
    - i_stream_unref
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_auth_response_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 644
    functionDepth: 7
    functionLinenumber: 644
    functionLinenumberEnd: 654
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-command-parser.c
    functionUses: 19
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:19,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:24,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:26,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_quit
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:29,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:30,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:31,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:33,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:37,1
    - Dst: smtp_server_reply_quit
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:39,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c:41,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 42
    functionName: smtp_server_cmd_quit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-quit.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - smtp_server_reply_quit
    - smtp_server_command_is_replied
    - smtp_server_reply
    - smtp_server_connection_input_halt
    - struct smtp_server_callbacks*::conn_cmd_quit
    - i_assert
    - smtp_server_command_ref
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_quit(struct smtp_server_cmd_ctx *cmd,\n    \t\t\t
      \ const char *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:19,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:19,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:20,1
    - Dst: smtp_server_connection_reset_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:29,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:31,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 36
    functionName: cmd_helo_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_is_replied
    - smtp_server_connection_reset_state
    - smtp_server_command_replied_success
    - i_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void cmd_helo_completed(struct smtp_server_cmd_ctx *cmd,\n\t\t   struct
      smtp_server_cmd_helo *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: cmd_helo_next
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    linkageType: ''
    returnType: void
    signature: "void cmd_helo_next(struct smtp_server_cmd_ctx *cmd,\n\t      struct
      smtp_server_cmd_helo *data)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:64,1
    - Dst: smtp_helo_domain_parse
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:67,1
    - Dst: smtp_server_command_pipeline_block
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:69,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:71,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:75,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:76,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:82,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:89,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:92,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:96,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_helo
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:99,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:101,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:102,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:104,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:109,1
    - Dst: smtp_server_cmd_ehlo_reply_default
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:111,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:113,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 3
    argNames:
    - cmd
    - params
    - old_smtp
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 114
    functionName: smtp_server_cmd_helo_run
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - p_strdup
    - p_new
    - smtp_server_command_add_hook
    - smtp_server_connection_set_state
    - smtp_server_command_is_replied
    - smtp_server_reply
    - smtp_helo_domain_parse
    - smtp_server_command_pipeline_block
    - struct smtp_server_callbacks*::conn_cmd_helo
    - null_strcmp
    - smtp_server_cmd_ehlo_reply_default
    - i_assert
    - smtp_server_command_ref
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_helo_run(struct smtp_server_cmd_ctx *cmd, const
      char *params,\n\t\t\t bool old_smtp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_cmd_helo_run
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: smtp_server_cmd_ehlo
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c
    functionUses: 0
    functionsReached:
    - smtp_server_cmd_helo_run
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_ehlo(struct smtp_server_cmd_ctx *cmd, const char
      *params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_cmd_helo_run
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: smtp_server_cmd_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c
    functionUses: 0
    functionsReached:
    - smtp_server_cmd_helo_run
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_helo(struct smtp_server_cmd_ctx *cmd, const char
      *params)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:153,1
    - Dst: smtp_server_reply_create_ehlo
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:161,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:167,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:170,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:171,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:179,1
    - Dst: add
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:181,1
    - Dst: smtp_server_reply_ehlo_add_params
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:184,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 191
    functionName: smtp_server_cmd_ehlo_reply_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add_params
    - smtp_server_reply_create_ehlo
    - array_get
    - strcasecmp
    - add
    - array_is_created
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: struct smtp_server_reply
    signature: 'struct smtp_server_reply *

      smtp_server_cmd_ehlo_reply_create(struct smtp_server_cmd_ctx *cmd)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_cmd_ehlo_reply_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:197,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 199
    functionName: smtp_server_cmd_ehlo_reply_default
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-helo.c
    functionUses: 1
    functionsReached:
    - smtp_server_cmd_ehlo_reply_create
    - smtp_server_reply_submit
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_ehlo_reply_default(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:127,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:128,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:129,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:130,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:132,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:132,1
    - Dst: smtp_reply_parse_ehlo
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:135,1
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:139,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:144,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:151,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:151,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:154,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:154,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:167,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:168,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:172,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:172,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:174,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:180,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:183,1
    - Dst: smtp_reply_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:184,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:187,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:188,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:188,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:190,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:191,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 114
    functionDepth: 11
    functionLinenumber: 114
    functionLinenumberEnd: 192
    functionName: test_smtp_reply_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-reply.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - smtp_reply_parser_deinit
    - test_out_reason
    - smtp_reply_parse_ehlo
    - strlen
    - t_strdup_printf
    - smtp_reply_parser_init
    - test_out
    - test_end
    - i_stream_unref
    - smtp_reply_write
    - i_stream_create_from_data
    - smtp_reply_parse_next
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_reply_parse_valid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:254,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:254,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:255,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:256,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:258,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:258,1
    - Dst: smtp_reply_parse_ehlo
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:261,1
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:263,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:264,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:264,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:265,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:266,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:267,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 240
    functionDepth: 11
    functionLinenumber: 240
    functionLinenumberEnd: 268
    functionName: test_smtp_reply_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-reply.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - test_out_reason
    - smtp_reply_parse_ehlo
    - strlen
    - t_strdup_printf
    - smtp_reply_parser_init
    - str_sanitize
    - test_end
    - i_stream_unref
    - i_stream_create_from_data
    - smtp_reply_parse_next
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_reply_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-reply.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 271
    functionDepth: 7
    functionLinenumber: 271
    functionLinenumberEnd: 279
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-reply.c
    functionUses: 19
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:135,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 140
    functionName: test_client_host_lookup_failed
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_host_lookup_failed(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:148,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:151,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:152,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:153,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 144
    functionDepth: 3
    functionLinenumber: 144
    functionLinenumberEnd: 156
    functionName: test_host_lookup_failed
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_host_lookup_failed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: test_server_connection_refused
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    linkageType: ''
    returnType: void
    signature: void test_server_connection_refused(unsigned int index ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:177,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 182
    functionName: test_client_connection_refused
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_refused(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:190,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:193,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:194,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:195,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 186
    functionDepth: 3
    functionLinenumber: 186
    functionLinenumberEnd: 199
    functionName: test_connection_refused
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:209,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: test_connection_timed_out_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 217
    functionName: test_server_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_timed_out(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:227,1
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:229,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:231,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:233,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 220
    functionDepth: 4
    functionLinenumber: 220
    functionLinenumberEnd: 237
    functionName: test_client_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_smtp_send_simple_port
    - io_loop_time_refresh
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_timed_out(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:245,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:248,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:249,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:250,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 254
    functionName: test_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: test_bad_greeting_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_bad_greeting_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 267
    functionDepth: 3
    functionLinenumber: 267
    functionLinenumberEnd: 271
    functionName: test_bad_greeting_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_bad_greeting_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 278
    functionName: test_server_bad_greeting
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_greeting(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:288,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 293
    functionName: test_client_bad_greeting
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_bad_greeting(const struct smtp_submit_settings *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:301,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:304,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:305,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:306,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 297
    functionDepth: 3
    functionLinenumber: 297
    functionLinenumberEnd: 310
    functionName: test_bad_greeting
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_greeting(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:322,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:325,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:328,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 318
    functionDepth: 5
    functionLinenumber: 318
    functionLinenumberEnd: 331
    functionName: test_denied_helo_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - o_stream_nsend_str
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_denied_helo_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: test_denied_helo_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_helo_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 344
    functionName: test_server_denied_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_denied_helo(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:354,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 359
    functionName: test_client_denied_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_denied_helo(const struct smtp_submit_settings *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:367,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:370,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:371,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:372,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 376
    functionName: test_denied_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_denied_helo(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:388,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:391,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 384
    functionDepth: 5
    functionLinenumber: 384
    functionLinenumberEnd: 395
    functionName: test_disconnect_helo_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_disconnect_helo_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 397
    functionDepth: 3
    functionLinenumber: 397
    functionLinenumberEnd: 401
    functionName: test_disconnect_helo_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_disconnect_helo_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 408
    functionName: test_server_disconnect_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_disconnect_helo(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:418,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 423
    functionName: test_client_disconnect_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_disconnect_helo(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:431,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:434,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:435,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:436,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 427
    functionDepth: 3
    functionLinenumber: 427
    functionLinenumberEnd: 440
    functionName: test_disconnect_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_disconnect_helo(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:463,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:470,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:473,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:479,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:488,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:491,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:494,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 457
    functionDepth: 5
    functionLinenumber: 457
    functionLinenumberEnd: 496
    functionName: test_denied_mail_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_unreached
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_mail_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 498
    functionDepth: 3
    functionLinenumber: 498
    functionLinenumberEnd: 502
    functionName: test_denied_mail_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_mail_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 509
    functionName: test_server_denied_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_denied_mail(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:519,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 524
    functionName: test_client_denied_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_denied_mail(const struct smtp_submit_settings *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:532,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:535,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:536,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:537,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 541
    functionName: test_denied_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_denied_mail(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:565,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:572,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:575,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:581,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:590,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:595,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:598,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:601,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 559
    functionDepth: 5
    functionLinenumber: 559
    functionLinenumberEnd: 603
    functionName: test_denied_rcpt_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_unreached
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_rcpt_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 605
    functionDepth: 3
    functionLinenumber: 605
    functionLinenumberEnd: 610
    functionName: test_denied_rcpt_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_rcpt_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 617
    functionName: test_server_denied_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_denied_rcpt(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:627,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 632
    functionName: test_client_denied_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_denied_rcpt(const struct smtp_submit_settings *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:640,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:643,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:644,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:645,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 636
    functionDepth: 3
    functionLinenumber: 636
    functionLinenumberEnd: 649
    functionName: test_denied_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_denied_rcpt(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:674,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:681,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:684,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:690,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:699,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:704,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:709,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:711,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:714,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 668
    functionDepth: 5
    functionLinenumber: 668
    functionLinenumberEnd: 716
    functionName: test_denied_second_rcpt_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_unreached
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_second_rcpt_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 718
    functionDepth: 3
    functionLinenumber: 718
    functionLinenumberEnd: 723
    functionName: test_denied_second_rcpt_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_second_rcpt_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 725
    functionDepth: 0
    functionLinenumber: 725
    functionLinenumberEnd: 730
    functionName: test_server_denied_second_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_denied_second_rcpt(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - smtp_input_r
    argTypes:
    - struct smtp_submit_input*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 737
    functionName: test_smtp_submit_input_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void test_smtp_submit_input_init(struct smtp_submit_input *smtp_input_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:751,1
    - Dst: test_smtp_submit_input_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:754,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:755,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:760,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:763,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:766,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:767,1
    - Dst: smtp_submit_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:769,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:770,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 739
    functionDepth: 11
    functionLinenumber: 739
    functionLinenumberEnd: 775
    functionName: test_client_denied_second_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - smtp_submit_run
    - t_strdup_printf
    - smtp_submit_deinit
    - test_smtp_submit_input_init
    - o_stream_nsend_str
    - smtp_submit_add_rcpt
    - smtp_submit_send
    - smtp_submit_init_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_denied_second_rcpt(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:783,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:785,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:786,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:787,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 779
    functionDepth: 3
    functionLinenumber: 779
    functionLinenumberEnd: 791
    functionName: test_denied_second_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_denied_second_rcpt(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:816,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:823,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:826,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:832,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:841,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:846,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:851,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:853,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:856,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 810
    functionDepth: 5
    functionLinenumber: 810
    functionLinenumberEnd: 858
    functionName: test_denied_data_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_unreached
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_data_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 860
    functionDepth: 3
    functionLinenumber: 860
    functionLinenumberEnd: 865
    functionName: test_denied_data_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_denied_data_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 872
    functionName: test_server_denied_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_denied_data(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:882,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 876
    functionDepth: 1
    functionLinenumber: 876
    functionLinenumberEnd: 887
    functionName: test_client_denied_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_denied_data(const struct smtp_submit_settings *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:895,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:898,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:899,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:900,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 891
    functionDepth: 3
    functionLinenumber: 891
    functionLinenumberEnd: 904
    functionName: test_denied_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_denied_data(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:930,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:937,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:940,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:946,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:955,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:960,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:965,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:971,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:972,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:975,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:980,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 924
    functionDepth: 5
    functionLinenumber: 924
    functionLinenumberEnd: 982
    functionName: test_data_failure_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - i_unreached
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_failure_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 989
    functionName: test_data_failure_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_failure_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 996
    functionName: test_server_data_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_data_failure(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1006,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1008,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1000
    functionDepth: 1
    functionLinenumber: 1000
    functionLinenumberEnd: 1011
    functionName: test_client_data_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_data_failure(const struct smtp_submit_settings *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1019,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1022,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1023,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1024,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1015
    functionDepth: 3
    functionLinenumber: 1015
    functionLinenumberEnd: 1028
    functionName: test_data_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_data_failure(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1054,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1061,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1064,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1070,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1079,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1084,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1089,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1095,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1098,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1048
    functionDepth: 5
    functionLinenumber: 1048
    functionLinenumberEnd: 1100
    functionName: test_data_disconnect_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_unreached
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_disconnect_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1102
    functionDepth: 3
    functionLinenumber: 1102
    functionLinenumberEnd: 1107
    functionName: test_data_disconnect_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_disconnect_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1114
    functionName: test_server_data_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_data_disconnect(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1124,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1118
    functionDepth: 1
    functionLinenumber: 1118
    functionLinenumberEnd: 1129
    functionName: test_client_data_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_client_smtp_send_simple_port
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_data_disconnect(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1137,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1140,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1141,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1142,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1133
    functionDepth: 3
    functionLinenumber: 1133
    functionLinenumberEnd: 1146
    functionName: test_data_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_data_disconnect(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1172,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1179,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1182,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1188,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1197,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1202,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1207,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1213,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1214,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1217,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1166
    functionDepth: 5
    functionLinenumber: 1166
    functionLinenumberEnd: 1219
    functionName: test_data_timout_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_sleep_intr_secs
    - i_unreached
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_timout_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1221
    functionDepth: 3
    functionLinenumber: 1221
    functionLinenumberEnd: 1226
    functionName: test_data_timout_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_timout_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1228
    functionDepth: 0
    functionLinenumber: 1228
    functionLinenumberEnd: 1233
    functionName: test_server_data_timout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_data_timout(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1244,1
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1246,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1248,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1250,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1237
    functionDepth: 4
    functionLinenumber: 1237
    functionLinenumberEnd: 1254
    functionName: test_client_data_timout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_smtp_send_simple_port
    - io_loop_time_refresh
    - test_out_reason
    linkageType: ''
    returnType: bool
    signature: bool test_client_data_timout(const struct smtp_submit_settings *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1262,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1265,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1266,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1267,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1258
    functionDepth: 3
    functionLinenumber: 1258
    functionLinenumberEnd: 1271
    functionName: test_data_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_data_timeout(void)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1301,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1317,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1321,1
    - Dst: test_tmp_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1323,1
    - Dst: open
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1325,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1327,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1331,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1335,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1343,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1346,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1349,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1352,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1356,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1363,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1366,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1372,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1381,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1386,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1391,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1399,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 65
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1295
    functionDepth: 5
    functionLinenumber: 1295
    functionLinenumberEnd: 1401
    functionName: test_successful_delivery_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - p_new
    - i_error
    - i_unreached
    - o_stream_send_istream
    - open
    - i_fatal
    - i_stream_read_next_line
    - o_stream_create_fd_autoclose
    - server_connection_deinit
    - i_stream_create_dot
    - o_stream_nsend_str
    - test_tmp_dir_get
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void test_successful_delivery_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1403
    functionDepth: 3
    functionLinenumber: 1403
    functionLinenumberEnd: 1407
    functionName: test_successful_delivery_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_successful_delivery_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1414,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1409
    functionDepth: 2
    functionLinenumber: 1409
    functionLinenumberEnd: 1416
    functionName: test_successful_delivery_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_successful_delivery_deinit(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1418
    functionDepth: 0
    functionLinenumber: 1418
    functionLinenumberEnd: 1424
    functionName: test_server_successful_delivery
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_successful_delivery(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_smtp_send_simple_port
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1435,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1437,1
    - Dst: test_message_delivery
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1440,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1441,1
    - Dst: test_tmp_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1428
    functionDepth: 11
    functionLinenumber: 1428
    functionLinenumberEnd: 1446
    functionName: test_client_successful_delivery
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_message_delivery
    - test_client_smtp_send_simple_port
    - test_out_reason
    - t_strdup_printf
    - test_tmp_dir_get
    linkageType: ''
    returnType: bool
    signature: bool test_client_successful_delivery(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1457,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1460,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct smtp_submit_result*
    - struct _parallel_delivery_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1452
    functionDepth: 1
    functionLinenumber: 1452
    functionLinenumberEnd: 1461
    functionName: test_client_parallel_delivery_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_error
    linkageType: ''
    returnType: void
    signature: "void test_client_parallel_delivery_callback(const struct smtp_submit_result
      *result,\n\t\t\t\t       struct _parallel_delivery_client *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1473,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1475,1
    - Dst: test_smtp_submit_input_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1482,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1484,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1485,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1490,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1494,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1495,1
    - Dst: smtp_submit_run_async
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1497,1
    - Dst: test_smtp_submit_input_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1501,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1503,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1504,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1509,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1513,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1514,1
    - Dst: smtp_submit_run_async
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1516,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1519,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1521,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1522,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1523,1
    - Dst: test_message_delivery
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1526,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1527,1
    - Dst: test_tmp_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1528,1
    - Dst: test_message_delivery
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1530,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1531,1
    - Dst: test_tmp_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1532,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1463
    functionDepth: 12
    functionLinenumber: 1463
    functionLinenumberEnd: 1537
    functionName: test_client_parallel_delivery
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_message_delivery
    - io_loop_run
    - smtp_submit_run_async
    - test_tmp_dir_get
    - t_strdup_printf
    - io_loop_destroy
    - io_loop_create
    - i_new
    - smtp_submit_deinit
    - test_smtp_submit_input_init
    - o_stream_nsend_str
    - smtp_submit_add_rcpt
    - i_free
    - smtp_submit_send
    - smtp_submit_init_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_parallel_delivery(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1545,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1547,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1548,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1549,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1552,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1554,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1555,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1556,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1541
    functionDepth: 3
    functionLinenumber: 1541
    functionLinenumberEnd: 1560
    functionName: test_successful_delivery
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_successful_delivery(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_smtp_submit_input_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1584,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1585,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1590,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1593,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1594,1
    - Dst: smtp_submit_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1596,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1597,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1568
    functionDepth: 3
    functionLinenumber: 1568
    functionLinenumberEnd: 1602
    functionName: test_client_failed_sendmail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - smtp_submit_run
    - smtp_submit_deinit
    - test_smtp_submit_input_init
    - o_stream_nsend_str
    - smtp_submit_add_rcpt
    - smtp_submit_send
    - smtp_submit_init_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_failed_sendmail(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1610,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1612,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1613,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1614,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1606
    functionDepth: 3
    functionLinenumber: 1606
    functionLinenumberEnd: 1617
    functionName: test_failed_sendmail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_failed_sendmail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1635,1
    - Dst: test_tmp_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1635,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1637,1
    - Dst: test_smtp_submit_input_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1644,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1645,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1650,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1653,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1654,1
    - Dst: smtp_submit_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1656,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1657,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1659,1
    - Dst: test_message_delivery
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1625
    functionDepth: 11
    functionLinenumber: 1625
    functionLinenumberEnd: 1665
    functionName: test_client_successful_sendmail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_message_delivery
    - test_out_reason
    - smtp_submit_run
    - test_tmp_dir_get
    - t_strdup_printf
    - smtp_submit_deinit
    - test_smtp_submit_input_init
    - o_stream_nsend_str
    - smtp_submit_add_rcpt
    - smtp_submit_send
    - smtp_submit_init_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_successful_sendmail(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1673,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1675,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1676,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1677,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1669
    functionDepth: 3
    functionLinenumber: 1669
    functionLinenumberEnd: 1680
    functionName: test_successful_sendmail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_successful_sendmail(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1697,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct smtp_submit_result*
    - struct _parallel_sendmail_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1692
    functionDepth: 1
    functionLinenumber: 1692
    functionLinenumberEnd: 1701
    functionName: test_client_parallel_sendmail_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_error
    linkageType: ''
    returnType: void
    signature: "void test_client_parallel_sendmail_callback(const struct smtp_submit_result
      *result,\n\t\t\t\t       struct _parallel_sendmail_client *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1715,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1718,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1720,1
    - Dst: test_tmp_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1720,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1721,1
    - Dst: test_tmp_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1721,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1723,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1725,1
    - Dst: test_smtp_submit_input_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1732,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1734,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1739,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1743,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1744,1
    - Dst: smtp_submit_run_async
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1746,1
    - Dst: test_smtp_submit_input_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1750,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1752,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1757,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1761,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1762,1
    - Dst: smtp_submit_run_async
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1764,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1767,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1769,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1770,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1771,1
    - Dst: test_message_delivery
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1774,1
    - Dst: test_message_delivery
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1775,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1777,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - submit_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1703
    functionDepth: 12
    functionLinenumber: 1703
    functionLinenumberEnd: 1780
    functionName: test_client_parallel_sendmail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_message_delivery
    - io_loop_run
    - smtp_submit_add_rcpt
    - smtp_submit_run_async
    - t_strdup_printf
    - io_loop_destroy
    - io_loop_create
    - i_new
    - smtp_submit_deinit
    - test_smtp_submit_input_init
    - o_stream_nsend_str
    - test_tmp_dir_get
    - i_free
    - smtp_submit_send
    - smtp_submit_init_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_parallel_sendmail(const struct smtp_submit_settings
      *submit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1788,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1790,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1791,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1792,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1784
    functionDepth: 3
    functionLinenumber: 1784
    functionLinenumberEnd: 1795
    functionName: test_parallel_sendmail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_parallel_sendmail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - smtp_set
    argTypes:
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1826
    functionDepth: 1
    functionLinenumber: 1826
    functionLinenumberEnd: 1833
    functionName: test_client_defaults
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 17
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void test_client_defaults(struct smtp_submit_settings *smtp_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1835
    functionDepth: 0
    functionLinenumber: 1835
    functionLinenumberEnd: 1837
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1854,1
    - Dst: smtp_submit_init_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1855,1
    - Dst: smtp_submit_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1860,1
    - Dst: smtp_submit_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1864,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1865,1
    - Dst: smtp_submit_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1867,1
    - Dst: smtp_submit_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - smtp_set
    - message
    - host
    - error_r
    argTypes:
    - struct smtp_submit_settings*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1839
    functionDepth: 3
    functionLinenumber: 1839
    functionLinenumberEnd: 1872
    functionName: test_client_smtp_send_simple
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 1
    functionsReached:
    - i_zero
    - smtp_submit_run
    - smtp_submit_deinit
    - o_stream_nsend_str
    - smtp_submit_add_rcpt
    - smtp_submit_send
    - smtp_submit_init_simple
    linkageType: ''
    returnType: int
    signature: "int test_client_smtp_send_simple(const struct smtp_submit_settings
      *smtp_set,\n\t\t\t     const char *message, const char *host,\n\t\t\t     const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1879,1
    - Dst: test_client_smtp_send_simple
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - smtp_set
    - message
    - port
    - error_r
    argTypes:
    - struct smtp_submit_settings*
    - char*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1874
    functionDepth: 11
    functionLinenumber: 1874
    functionLinenumberEnd: 1882
    functionName: test_client_smtp_send_simple_port
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 12
    functionsReached:
    - t_strdup_printf
    - test_client_smtp_send_simple
    linkageType: ''
    returnType: int
    signature: "int test_client_smtp_send_simple_port(const struct smtp_submit_settings
      *smtp_set,\n\t\t\t\t  const char *message, unsigned int port,\n\t\t\t\t  const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_input
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1890
    functionDepth: 0
    functionLinenumber: 1890
    functionLinenumberEnd: 1895
    functionName: server_connection_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - test_server_input
    linkageType: ''
    returnType: void
    signature: void server_connection_input(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1902,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1904,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1905,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1908,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1912,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1897
    functionDepth: 6
    functionLinenumber: 1897
    functionLinenumberEnd: 1913
    functionName: server_connection_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 3
    functionsReached:
    - test_server_init
    - pool_alloconly_create
    - p_new
    - connection_init_server
    - net_set_nonblock
    linkageType: ''
    returnType: void
    signature: void server_connection_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1922,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1924,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1915
    functionDepth: 4
    functionLinenumber: 1915
    functionLinenumberEnd: 1926
    functionName: server_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 31
    functionsReached:
    - connection_deinit
    - test_server_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void server_connection_deinit(struct server_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1928
    functionDepth: 0
    functionLinenumber: 1928
    functionLinenumberEnd: 1934
    functionName: server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void server_connection_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1941,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1943,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1944,1
    - Dst: server_connection_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1948,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1936
    functionDepth: 3
    functionLinenumber: 1936
    functionLinenumberEnd: 1949
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - server_connection_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1969,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1972,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1975,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1978,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1981
      start: 1964
    functionDepth: 5
    functionLinenumber: 1964
    functionLinenumberEnd: 1981
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 27
    functionsReached:
    - connection_list_init
    - io_add
    - io_remove
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_run(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_listen
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1994,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1996,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1998,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:1999,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - bind_port
    argTypes:
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1992
    functionDepth: 6
    functionLinenumber: 1992
    functionLinenumberEnd: 2002
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 4
    functionsReached:
    - i_fatal
    - i_debug
    - net_ip2addr
    - net_listen
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(in_port_t *bind_port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2008,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2008,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2009,1
    - Dst: time
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2009,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2009,1
    - Dst: getpid
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 2004
    functionDepth: 6
    functionLinenumber: 2004
    functionLinenumberEnd: 2010
    functionName: test_tmp_dir_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - dec2str
    - getpid
    - test_dir_get
    - i_strdup_printf
    - time
    linkageType: ''
    returnType: void
    signature: void test_tmp_dir_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mkdir
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2014,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2015,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2019
      start: 2012
    functionDepth: 2
    functionLinenumber: 2012
    functionLinenumberEnd: 2019
    functionName: test_tmp_dir_get
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 5
    functionsReached:
    - i_fatal
    - mkdir
    linkageType: ''
    returnType: char
    signature: char *test_tmp_dir_get(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2025,1
    - Dst: i_warning
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2027,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2031,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2021
    functionDepth: 14
    functionLinenumber: 2021
    functionLinenumberEnd: 2032
    functionName: test_tmp_dir_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_free
    - unlink_directory
    - i_warning
    linkageType: ''
    returnType: void
    signature: void test_tmp_dir_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2041,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2043,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2044,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2047,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2049,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2052,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2052,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2053,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2055,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2058,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2063,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2064,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - message
    - file
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2065
      start: 2034
    functionDepth: 7
    functionLinenumber: 2034
    functionLinenumberEnd: 2065
    functionName: test_message_delivery
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 4
    functionsReached:
    - test_out_reason
    - strlen
    - i_stream_create_file
    - test_has_failed
    - i_stream_skip
    - i_stream_get_error
    - test_assert
    - memcmp
    - i_stream_read_more
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void test_message_delivery(const char *message, const char *file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2071,1
    - Dst: master_service_deinit_forked
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2072,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2074,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2077,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2079,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2080,1
    - Dst: struct test_server_data*::server_test
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2081,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2082,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2085,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2087,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2088,1
    - Dst: test_tmp_dir_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2089,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_server_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 2067
    functionDepth: 15
    functionLinenumber: 2067
    functionLinenumberEnd: 2091
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_close_fd
    - test_tmp_dir_deinit
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - struct test_server_data*::server_test
    - main_deinit
    - i_debug
    - master_service_deinit_forked
    linkageType: ''
    returnType: int
    signature: int test_run_server(struct test_server_data *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2097,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2100,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2103,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2105,1
    - Dst: client_test
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2106,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2107,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2108,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2109,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - submit_set
    - client_test
    argTypes:
    - struct smtp_submit_settings*
    - test_client_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2113
      start: 2093
    functionDepth: 12
    functionLinenumber: 2093
    functionLinenumberEnd: 2113
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 4
    functionsReached:
    - test_client_deinit
    - i_sleep_msecs
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - client_test
    - i_debug
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: "void test_run_client(const struct smtp_submit_settings *submit_set,\n\t\t
      test_client_init_t client_test)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_tmp_dir_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2123,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2128,1
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2130,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2135,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2141,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2142,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2143,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2145,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2150,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2152,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2153,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2154,1
    - Dst: test_tmp_dir_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - submit_set
    - client_test
    - server_test
    - server_tests_count
    argTypes:
    - struct smtp_submit_settings*
    - test_client_init_t
    - test_server_init_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2115
    functionDepth: 15
    functionLinenumber: 2115
    functionLinenumberEnd: 2156
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 46
    functionsReached:
    - i_zero
    - test_subprocess_fork
    - test_tmp_dir_init
    - i_close_fd
    - test_tmp_dir_deinit
    - test_subprocess_kill_all
    - test_subprocess_notify_signal_reset
    - i_new
    - test_open_server_fd
    - test_run_client
    - i_free
    - test_subprocess_notify_signal_wait
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(const struct smtp_submit_settings *submit_set,\n\t\t
      \      test_client_init_t client_test,\n\t\t       test_server_init_t server_test,\n\t\t
      \      unsigned int server_tests_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2165
      start: 2162
    functionDepth: 0
    functionLinenumber: 2162
    functionLinenumberEnd: 2165
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 2167
    functionDepth: 0
    functionLinenumber: 2167
    functionLinenumberEnd: 2170
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2180,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2182,1
    - Dst: master_getopt
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2184,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2190,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2194,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2196,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2197,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2198,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2199,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2202,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2204,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2206,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2208,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-submit.c:2209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2212
      start: 2172
    functionDepth: 7
    functionLinenumber: 2172
    functionLinenumberEnd: 2212
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-submit.c
    functionUses: 19
    functionsReached:
    - i_zero
    - main_init
    - event_set_forced_debug
    - test_dir_init
    - i_fatal
    - test_run
    - main_deinit
    - master_service_deinit
    - master_service_init_finish
    - htonl
    - test_subprocesses_init
    - master_getopt
    - master_service_init
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:22,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 37
    functionName: cmd_auth_check_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply
    linkageType: ''
    returnType: bool
    signature: bool cmd_auth_check_state(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:42,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - cmd
    - username
    - success_msg
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: smtp_server_cmd_auth_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_auth_success(struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t
      \ const char *username, const char *success_msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:55,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:55,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:58,1
    - Dst: smtp_server_command_reply_status_equals
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - cmd
    - ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: cmd_auth_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_is_replied
    - smtp_server_command_reply_status_equals
    - i_assert
    - smtp_server_command_replied_success
    linkageType: ''
    returnType: void
    signature: "void cmd_auth_completed(struct smtp_server_cmd_ctx *cmd,\n\t\t   struct
      smtp_server_cmd_auth *data ATTR_UNUSED)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: smtp_command_parse_auth_response
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:73,1
    - Dst: smtp_command_parser_clear
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:77,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:81,1
    - Dst: i_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:82,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:87,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:90,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:96,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:100,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:104,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:108,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:112,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:114,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:118,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_auth_continue
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:120,1
    - Dst: smtp_command_parser_clear
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:125,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:125,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:126,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:129,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:131,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:134,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 135
    functionName: cmd_auth_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c
    functionUses: 1
    functionsReached:
    - smtp_server_command_unref
    - smtp_command_parser_clear
    - i_assert
    - i_stream_get_disconnect_reason
    - smtp_server_command_input_lock
    - i_unreached
    - e_debug
    - smtp_server_command_is_replied
    - struct smtp_server_callbacks*::conn_cmd_auth_continue
    - smtp_server_reply
    - smtp_server_connection_close
    - smtp_command_parse_auth_response
    - smtp_server_connection_input_halt
    - smtp_server_command_ref
    linkageType: ''
    returnType: void
    signature: void cmd_auth_input(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:143,1
    - Dst: smtp_server_connection_reply_immediate
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:146,1
    - Dst: smtp_server_connection_timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:147,1
    - Dst: smtp_server_command_input_capture
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cmd
    - challenge
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: smtp_server_cmd_auth_send_challenge
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_reply_immediate
    - i_assert
    - smtp_server_command_input_capture
    - smtp_server_connection_timeout_reset
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_auth_send_challenge(struct smtp_server_cmd_ctx
      *cmd,\n\t\t\t\t\t const char *challenge)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cmd_auth_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:165,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:169,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:172,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_auth
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:175,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:176,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:176,1
    - Dst: smtp_server_connection_timeout_stop
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:179,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 183
    functionName: cmd_auth_start
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - cmd_auth_check_state
    - smtp_server_connection_set_state
    - smtp_server_command_is_replied
    - smtp_server_connection_timeout_stop
    - struct smtp_server_callbacks*::conn_cmd_auth
    - i_assert
    - smtp_server_command_ref
    linkageType: ''
    returnType: void
    signature: "void cmd_auth_start(struct smtp_server_cmd_ctx *cmd,\n\t       struct
      smtp_server_cmd_auth *data)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:196,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:210,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:213,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:221,1
    - Dst: cmd_auth_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:233,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:236,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:238,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:239,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:240,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:242,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c:244,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 185
    functionDepth: 5
    functionLinenumber: 185
    functionLinenumberEnd: 246
    functionName: smtp_server_cmd_auth
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-auth.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - cmd_auth_check_state
    - smtp_server_command_input_lock
    - smtp_server_command_add_hook
    - smtp_server_reply
    - t_strsplit
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_auth(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \ const char *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:19,1
    - Dst: smtp_server_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:27,1
    - Dst: struct smtp_server_callbacks*::conn_start_tls
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:28,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:30,1
    - Dst: smtp_server_connection_set_ssl_streams
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:33,1
    - Dst: smtp_server_connection_ssl_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:34,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:35,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:44,1
    - Dst: smtp_server_connection_clear
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:55,1
    - Dst: smtp_server_connection_input_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:56,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 59
    functionName: cmd_starttls_start
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_unref
    - e_debug
    - smtp_server_connection_set_ssl_streams
    - smtp_server_connection_input_unlock
    - struct smtp_server_callbacks*::conn_start_tls
    - smtp_server_connection_close
    - smtp_server_connection_clear
    - smtp_server_connection_ref
    - i_assert
    - smtp_server_connection_ssl_init
    linkageType: ''
    returnType: int
    signature: int cmd_starttls_start(struct smtp_server_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_flush
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:65,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:69,1
    - Dst: cmd_starttls_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:70,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 74
    functionName: cmd_starttls_output
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c
    functionUses: 0
    functionsReached:
    - o_stream_unset_flush_callback
    - cmd_starttls_start
    - smtp_server_connection_flush
    linkageType: ''
    returnType: int
    signature: int cmd_starttls_output(struct smtp_server_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:86,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:88,1
    - Dst: smtp_server_command_reply_status_equals
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:88,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:91,1
    - Dst: smtp_server_connection_flush
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:94,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:98,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:99,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:102,1
    - Dst: cmd_starttls_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - cmd
    - ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 107
    functionName: cmd_starttls_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c
    functionUses: 0
    functionsReached:
    - o_stream_uncork
    - smtp_server_connection_flush
    - smtp_server_command_reply_status_equals
    - smtp_server_command_replied_success
    - o_stream_set_flush_pending
    - o_stream_set_flush_callback
    - i_assert
    - cmd_starttls_start
    linkageType: ''
    returnType: void
    signature: void cmd_starttls_destroy(struct smtp_server_cmd_ctx *cmd, void *context
      ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:121,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:124,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:127,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_starttls
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:129,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:133,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:137,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:137,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:139,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:142,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:143,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:146,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - cmd
    - ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 147
    functionName: cmd_starttls_next
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - smtp_server_command_add_hook
    - smtp_server_connection_set_state
    - struct smtp_server_callbacks*::conn_cmd_starttls
    - smtp_server_command_is_replied
    - smtp_server_reply
    - i_assert
    - smtp_server_command_ref
    linkageType: ''
    returnType: void
    signature: void cmd_starttls_next(struct smtp_server_cmd_ctx *cmd, void *context
      ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:157,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:158,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:162,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:169,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:174,1
    - Dst: smtp_server_connection_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:175,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 179
    functionName: smtp_server_cmd_starttls
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-starttls.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_add_hook
    - smtp_server_command_input_lock
    - smtp_server_reply
    - i_assert
    - smtp_server_connection_input_lock
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_starttls(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \     const char *params)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:36,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:37,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:37,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 17
    functionDepth: 8
    functionLinenumber: 17
    functionLinenumberEnd: 39
    functionName: smtp_client_command_get_name
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - t_str_ucase
    - t_strdup_until
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_client_command_get_name(struct smtp_client_command *cmd)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 9
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: smtp_client_command_get_label
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_get_name
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_client_command_get_label(struct smtp_client_command *cmd)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_get_label
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:56,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:58,1
    - Dst: smtp_client_command_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:59,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:60,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:61,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 54
    functionDepth: 11
    functionLinenumber: 54
    functionLinenumberEnd: 63
    functionName: smtp_client_command_update_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - t_strdup_printf
    - smtp_client_command_get_label
    - smtp_client_command_get_name
    - str_sanitize
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_update_event(struct smtp_client_command *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:74,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:75,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:83,1
    - Dst: smtp_client_command_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - conn
    - flags
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 65
    functionDepth: 12
    functionLinenumber: 65
    functionLinenumberEnd: 86
    functionName: smtp_client_command_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_update_event
    - pool_alloconly_create
    - event_create
    - p_new
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_create(struct smtp_client_connection
      *conn,\n\t\t\t   enum smtp_client_command_flags flags,\n\t\t\t   smtp_client_command_callback_t
      *callback,\n\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:95,1
    - Dst: smtp_client_command_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - conn
    - flags
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 13
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: smtp_client_command_new
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached:
    - i_assert
    - smtp_client_command_create
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_new(struct smtp_client_connection
      *conn,\n\t\t\tenum smtp_client_command_flags flags,\n\t\t\tsmtp_client_command_callback_t
      *callback,\n\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:105,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - after
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 99
    functionDepth: 13
    functionLinenumber: 99
    functionLinenumberEnd: 109
    functionName: smtp_client_command_plug
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_submit_after
    - smtp_client_command_create
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_plug(struct smtp_client_connection
      *conn,\n\t\t\t struct smtp_client_command *after)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: smtp_client_command_ref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_ref(struct smtp_client_command *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:127,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:131,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:134,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:135,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:137,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:138,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_client_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 116
    functionDepth: 4
    functionLinenumber: 116
    functionLinenumberEnd: 142
    functionName: smtp_client_command_unref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - event_unref
    - e_debug
    - pool_unref
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool smtp_client_command_unref(struct smtp_client_command **_cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:153,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - cmd
    - name
    argTypes:
    - struct smtp_client_command*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 161
    functionName: smtp_client_command_name_equals
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - i_memcasecmp
    - strlen
    linkageType: ''
    returnType: bool
    signature: "bool smtp_client_command_name_equals(struct smtp_client_command *cmd,\n\t\t\t\t
      \    const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 168
    functionName: smtp_client_command_lock
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_lock(struct smtp_client_command *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 179
    functionName: smtp_client_command_unlock
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_trigger_output
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_unlock(struct smtp_client_command *cmd)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:189,1
    - Dst: smtp_client_command_drop_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:202,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:208,1
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:212,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:214,1
    - Dst: struct event_passthrough*::set_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:216,1
    - Dst: smtp_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:217,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:220,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:220,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:226,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:231,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:236,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:238,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:249,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:250,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:251,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:253,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:262,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:263,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:264,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:269,1
    - Dst: struct smtp_client_command*::abort_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:273,1
    - Dst: smtp_client_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:280,1
    - Dst: smtp_client_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:284,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 64
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_client_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 181
    functionDepth: 6
    functionLinenumber: 181
    functionLinenumberEnd: 285
    functionName: smtp_client_command_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 7
    functionsReached:
    - smtp_reply_add_to_event
    - smtp_client_command_unref
    - smtp_client_command_drop_callback
    - i_unreached
    - e_debug
    - struct smtp_client_command*::abort_callback
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_init
    - DLLIST2_REMOVE
    - struct event_passthrough*::event
    - event_create_passthrough
    - smtp_client_connection_trigger_output
    - i_assert
    - DLLIST_REMOVE
    - struct event_passthrough*::set_name
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_abort(struct smtp_client_command **_cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 293
    functionName: smtp_client_command_drop_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_drop_callback(struct smtp_client_command *cmd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:313,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:314,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:316,1
    - Dst: smtp_reply_clone
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:318,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:321,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:324,1
    - Dst: smtp_client_command_drop_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:328,1
    - Dst: smtp_client_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:329,1
    - Dst: smtp_client_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:330,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:336,1
    - Dst: struct event_passthrough*::set_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:338,1
    - Dst: smtp_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:339,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:342,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:342,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:342,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:346,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:351,1
    - Dst: smtp_client_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:353,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:354,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - _cmd
    - reply
    argTypes:
    - struct smtp_client_command**
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 295
    functionDepth: 7
    functionLinenumber: 295
    functionLinenumberEnd: 355
    functionName: smtp_client_command_fail_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_reply_clone
    - smtp_reply_add_to_event
    - smtp_client_command_ref
    - smtp_client_command_abort
    - smtp_client_connection_unref
    - smtp_client_command_unref
    - smtp_client_command_drop_callback
    - e_debug
    - timeout_add_short
    - DLLIST_PREPEND
    - event_create_passthrough
    - struct event_passthrough*::event
    - callback
    - smtp_reply_log
    - i_assert
    - smtp_client_connection_ref
    - struct event_passthrough*::set_name
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_fail_reply(struct smtp_client_command **_cmd,\n\t\t\t\t
      \   const struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:363,1
    - Dst: smtp_client_command_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _cmd
    - status
    - error
    argTypes:
    - struct smtp_client_command**
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 357
    functionDepth: 8
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: smtp_client_command_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_client_command_fail_reply
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_fail(struct smtp_client_command **_cmd,\n\t\t\t
      \     unsigned int status, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:375,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:377,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:378,1
    - Dst: smtp_client_command_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_client_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 371
    functionDepth: 8
    functionLinenumber: 371
    functionLinenumberEnd: 380
    functionName: smtp_client_command_fail_delayed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - smtp_client_command_fail_reply
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_fail_delayed(struct smtp_client_command **_cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:392,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:396,1
    - Dst: smtp_client_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:398,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:399,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:402,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:406,1
    - Dst: smtp_client_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - cmds_list
    - cmds_list_count
    argTypes:
    - struct smtp_client_command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 382
    functionDepth: 7
    functionLinenumber: 382
    functionLinenumberEnd: 410
    functionName: smtp_client_commands_list_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - smtp_client_command_ref
    - smtp_client_command_unref
    - array_push_back
    - array_get_modifiable
    - t_array_init
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_commands_list_abort(struct smtp_client_command *cmds_list,\n\t\t\t\t
      \    unsigned int cmds_list_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:423,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:427,1
    - Dst: smtp_client_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:429,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:430,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:433,1
    - Dst: smtp_client_command_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:437,1
    - Dst: smtp_client_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - cmds_list
    - cmds_list_count
    - reply
    argTypes:
    - struct smtp_client_command*
    - unsigned int
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 412
    functionDepth: 8
    functionLinenumber: 412
    functionLinenumberEnd: 441
    functionName: smtp_client_commands_list_fail_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_ref
    - smtp_client_command_unref
    - array_push_back
    - array_get_modifiable
    - smtp_client_command_fail_reply
    - t_array_init
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_commands_list_fail_reply(struct smtp_client_command
      *cmds_list,\n\t\t\t\t\t  unsigned int cmds_list_count,\n\t\t\t\t\t  const struct
      smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:447,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 443
    functionDepth: 7
    functionLinenumber: 443
    functionLinenumberEnd: 458
    functionName: smtp_client_commands_abort_delayed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_commands_abort_delayed(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:464,1
    - Dst: smtp_client_command_fail_delayed
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 460
    functionDepth: 9
    functionLinenumber: 460
    functionLinenumberEnd: 475
    functionName: smtp_client_commands_fail_delayed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_fail_delayed
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_commands_fail_delayed(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cmd
    - context
    argTypes:
    - struct smtp_client_command*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 483
    functionName: smtp_client_command_set_abort_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_set_abort_callback(struct smtp_client_command
      *cmd,\n\t\t\t\t\t    void (*callback)(void *context),\n\t\t\t\t\t    void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cmd
    - context
    argTypes:
    - struct smtp_client_command*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 491
    functionName: smtp_client_command_set_sent_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_set_sent_callback(struct smtp_client_command
      *cmd,\n\t\t\t\t\t   void (*callback)(void *context),\n\t\t\t\t\t   void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:496,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:498,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cmd
    - replies
    argTypes:
    - struct smtp_client_command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 501
    functionName: smtp_client_command_set_replies
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_set_replies(struct smtp_client_command *cmd,\n\t\t\t\t
      \    unsigned int replies)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:507,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:511,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:511,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:512,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:513,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:513,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:514,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:514,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:516,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:516,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:517,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:517,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:517,1
    - Dst: smtp_client_command_name_equals
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:520,1
    - Dst: struct smtp_client_command*::sent_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:524,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 503
    functionDepth: 3
    functionLinenumber: 503
    functionLinenumberEnd: 527
    functionName: smtp_client_command_sent
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - e_debug
    - struct smtp_client_command*::sent_callback
    - smtp_client_command_name_equals
    - struct event_passthrough*::event
    - event_create_passthrough
    - str_truncate
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_sent(struct smtp_client_command *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:535,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:536,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:539,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:540,1
    - Dst: smtp_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:541,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 529
    functionDepth: 3
    functionLinenumber: 529
    functionLinenumberEnd: 548
    functionName: smtp_client_command_finish_dot_stream
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_handle_output_error
    - o_stream_unref
    - i_assert
    - o_stream_finish
    linkageType: ''
    returnType: int
    signature: int smtp_client_command_finish_dot_stream(struct smtp_client_command
      *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:554,1
    - Dst: smtp_client_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 550
    functionDepth: 5
    functionLinenumber: 550
    functionLinenumberEnd: 557
    functionName: smtp_client_command_payload_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - io_remove
    - smtp_client_connection_trigger_output
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_payload_input(struct smtp_client_command *cmd)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:567,1
    - Dst: smtp_client_command_finish_dot_stream
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:570,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:573,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:574,1
    - Dst: o_stream_create_dot
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:579,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:584,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:585,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:586,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:590,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:593,1
    - Dst: smtp_client_command_finish_dot_stream
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:596,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:601,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:602,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:606,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:610,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:611,1
    - Dst: smtp_client_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:617,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:622,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:623,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:625,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:626,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:627,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:632,1
    - Dst: smtp_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:633,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:636,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 559
    functionDepth: 11
    functionLinenumber: 559
    functionLinenumberEnd: 637
    functionName: smtp_client_command_send_stream
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_handle_output_error
    - io_add_istream
    - e_debug
    - io_remove
    - o_stream_send_istream
    - o_stream_unref
    - t_strdup_printf
    - o_stream_create_dot
    - smtp_client_command_fail
    - i_unreached
    - i_stream_get_error
    - smtp_client_connection_fail
    - smtp_client_command_finish_dot_stream
    - i_stream_unref
    - i_stream_get_name
    - i_assert
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: int
    signature: int smtp_client_command_send_stream(struct smtp_client_command *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:650,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:653,1
    - Dst: smtp_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:656,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:659,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:665,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 639
    functionDepth: 2
    functionLinenumber: 639
    functionLinenumberEnd: 667
    functionName: smtp_client_command_send_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_handle_output_error
    - e_debug
    - o_stream_send
    - i_assert
    - CONST_PTR_OFFSET
    linkageType: ''
    returnType: int
    signature: int smtp_client_command_send_line(struct smtp_client_command *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:678,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:685,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:694,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:703,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 710
    functionName: smtp_client_command_pipeline_is_open
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - e_debug
    linkageType: ''
    returnType: bool
    signature: bool smtp_client_command_pipeline_is_open(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:717,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:718,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:720,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 726
    functionName: smtp_cient_command_wait
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    - i_assert
    - DLLIST2_APPEND
    linkageType: ''
    returnType: void
    signature: void smtp_cient_command_wait(struct smtp_client_command *cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:735,1
    - Dst: smtp_client_command_pipeline_is_open
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:741,1
    - Dst: smtp_client_command_send_line
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:747,1
    - Dst: smtp_cient_command_wait
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:751,1
    - Dst: smtp_client_command_send_stream
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:756,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:759,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:761,1
    - Dst: smtp_client_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:763,1
    - Dst: smtp_client_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:770,1
    - Dst: smtp_client_command_sent
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:771,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 728
    functionDepth: 12
    functionLinenumber: 728
    functionLinenumberEnd: 773
    functionName: smtp_client_command_do_send_more
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_cient_command_wait
    - smtp_client_command_ref
    - smtp_client_command_send_line
    - smtp_client_command_unref
    - e_debug
    - smtp_client_command_pipeline_is_open
    - smtp_client_command_send_stream
    - smtp_client_command_sent
    - i_assert
    linkageType: ''
    returnType: int
    signature: int smtp_client_command_do_send_more(struct smtp_client_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_do_send_more
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:779,1
    - Dst: smtp_client_connection_update_cmd_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 775
    functionDepth: 13
    functionLinenumber: 775
    functionLinenumberEnd: 785
    functionName: smtp_client_command_send_more
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_update_cmd_timeout
    - smtp_client_command_do_send_more
    linkageType: ''
    returnType: int
    signature: int smtp_client_command_send_more(struct smtp_client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 793
    functionName: smtp_client_command_disconnected
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_fail
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_disconnected(struct smtp_client_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:804,1
    - Dst: DLLIST2_INSERT_AFTER
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:814,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - cmd
    - flag
    argTypes:
    - struct smtp_client_command*
    - enum smtp_client_command_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 818
    functionName: smtp_client_command_insert_prioritized
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - DLLIST2_INSERT_AFTER
    - DLLIST2_PREPEND
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_insert_prioritized(struct smtp_client_command
      *cmd,\n\t\t\t\t       enum smtp_client_command_flags flag)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:826,1
    - Dst: smtp_client_command_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:828,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:829,1
    - Dst: smtp_client_command_name_equals
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:834,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:840,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:844,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:847,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:847,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:852,1
    - Dst: smtp_client_command_insert_prioritized
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:857,1
    - Dst: smtp_client_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:860,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:861,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:861,1
    - Dst: DLLIST2_PREPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:868,1
    - Dst: DLLIST2_INSERT_AFTER
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:873,1
    - Dst: smtp_client_command_insert_prioritized
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:880,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:884,1
    - Dst: smtp_client_connection_start_cmd_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:890,1
    - Dst: smtp_client_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:893,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:894,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:894,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - cmd
    - after
    argTypes:
    - struct smtp_client_command*
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 820
    functionDepth: 12
    functionLinenumber: 820
    functionLinenumberEnd: 895
    functionName: smtp_client_command_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached:
    - DLLIST2_APPEND
    - e_debug
    - timeout_add_short
    - str_append
    - smtp_client_command_name_equals
    - DLLIST2_INSERT_AFTER
    - struct event_passthrough*::event
    - event_create_passthrough
    - smtp_client_connection_start_cmd_timeout
    - smtp_client_command_update_event
    - smtp_client_connection_trigger_output
    - i_assert
    - smtp_client_command_insert_prioritized
    - DLLIST2_PREPEND
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_submit_after(struct smtp_client_command *cmd,\n\t\t\t\t
      \     struct smtp_client_command *after)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 897
    functionDepth: 13
    functionLinenumber: 897
    functionLinenumberEnd: 900
    functionName: smtp_client_command_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached:
    - smtp_client_command_submit_after
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_submit(struct smtp_client_command *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cmd
    - flags
    argTypes:
    - struct smtp_client_command*
    - enum smtp_client_command_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 906
    functionName: smtp_client_command_set_flags
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_set_flags(struct smtp_client_command *cmd,\n\t\t\t\t
      \  enum smtp_client_command_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:911,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:913,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:915,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cmd
    - cmd_str
    argTypes:
    - struct smtp_client_command*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 908
    functionDepth: 3
    functionLinenumber: 908
    functionLinenumberEnd: 917
    functionName: smtp_client_command_write
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached:
    - str_append
    - strlen
    - i_assert
    - str_new
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_write(struct smtp_client_command *cmd,\n\t\t\t
      \      const char *cmd_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:924,1
    - Dst: smtp_client_command_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:925,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - cmd_fmt
    argTypes:
    - struct smtp_client_command*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 927
    functionName: smtp_client_command_printf
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_vprintf
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_printf(struct smtp_client_command *cmd,\n\t\t\t\tconst
      char *cmd_fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:933,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:934,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - cmd
    - cmd_fmt
    - args
    argTypes:
    - struct smtp_client_command*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 929
    functionDepth: 9
    functionLinenumber: 929
    functionLinenumberEnd: 935
    functionName: smtp_client_command_vprintf
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached:
    - str_new
    - str_vprintfa
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_vprintf(struct smtp_client_command *cmd,\n\t\t\t\t
      const char *cmd_fmt, va_list args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:943,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:945,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:947,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:948,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:949,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:952,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - cmd
    - input
    - dot
    argTypes:
    - struct smtp_client_command*
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 937
    functionDepth: 2
    functionLinenumber: 937
    functionLinenumberEnd: 958
    functionName: smtp_client_command_set_stream
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - e_error
    - i_stream_get_size
    - i_stream_get_error
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_command_set_stream(struct smtp_client_command *cmd,\n\t\t\t\t
      \   struct istream *input, bool dot)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:968,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:972,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:974,1
    - Dst: struct event_passthrough*::set_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:975,1
    - Dst: smtp_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:976,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:979,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:979,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:982,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:986,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:987,1
    - Dst: smtp_client_connection_update_cmd_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:995,1
    - Dst: smtp_client_command_drop_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:996,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1000,1
    - Dst: smtp_client_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1003,1
    - Dst: smtp_client_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1004,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - cmd
    - reply
    argTypes:
    - struct smtp_client_command*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 960
    functionDepth: 5
    functionLinenumber: 960
    functionLinenumberEnd: 1007
    functionName: smtp_client_command_input_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_reply_add_to_event
    - smtp_client_command_unref
    - smtp_client_command_drop_callback
    - e_debug
    - smtp_client_connection_update_cmd_timeout
    - DLLIST2_REMOVE
    - struct event_passthrough*::event
    - event_create_passthrough
    - callback
    - smtp_client_connection_trigger_output
    - smtp_reply_log
    - i_assert
    - struct event_passthrough*::set_name
    - smtp_reply_is_success
    linkageType: ''
    returnType: int
    signature: "int smtp_client_command_input_reply(struct smtp_client_command *cmd,\n\t\t\t\t
      \   const struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1009
    functionDepth: 0
    functionLinenumber: 1009
    functionLinenumberEnd: 1013
    functionName: smtp_client_command_get_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum smtp_client_command_state
    signature: enum smtp_client_command_state smtp_client_command_get_state(struct
      smtp_client_command *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1051,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1052,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - conn
    - flags
    - after
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct smtp_client_command*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1042
    functionDepth: 13
    functionLinenumber: 1042
    functionLinenumberEnd: 1055
    functionName: smtp_client_command_noop_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_submit_after
    - smtp_client_command_new
    - smtp_client_command_write
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_noop_submit_after(struct
      smtp_client_connection *conn,\n\t\t\t\t      enum smtp_client_command_flags
      flags,\n\t\t\t\t      struct smtp_client_command *after,\n\t\t\t\t      smtp_client_command_callback_t
      *callback,\n\t\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_noop_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - conn
    - flags
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1058
    functionDepth: 0
    functionLinenumber: 1058
    functionLinenumberEnd: 1066
    functionName: smtp_client_command_noop_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached:
    - smtp_client_command_noop_submit_after
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_noop_submit(struct
      smtp_client_connection *conn,\n\t\t\t\tenum smtp_client_command_flags flags,\n\t\t\t\tsmtp_client_command_callback_t
      *callback,\n\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1081,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1082,1
    - Dst: smtp_string_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1083,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - conn
    - flags
    - after
    - param
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct smtp_client_command*
    - char*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1071
    functionDepth: 13
    functionLinenumber: 1071
    functionLinenumberEnd: 1086
    functionName: smtp_client_command_vrfy_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_submit_after
    - smtp_string_write
    - smtp_client_command_new
    - smtp_client_command_write
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_vrfy_submit_after(struct
      smtp_client_connection *conn,\n\t\t\t\t      enum smtp_client_command_flags
      flags,\n\t\t\t\t      struct smtp_client_command *after,\n\t\t\t\t      const
      char *param,\n\t\t\t\t      smtp_client_command_callback_t *callback,\n\t\t\t\t
      \     void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_vrfy_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - conn
    - flags
    - param
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - char*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1089
    functionDepth: 0
    functionLinenumber: 1089
    functionLinenumberEnd: 1098
    functionName: smtp_client_command_vrfy_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 1
    functionsReached:
    - smtp_client_command_vrfy_submit_after
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_vrfy_submit(struct
      smtp_client_connection *conn,\n\t\t\t\tenum smtp_client_command_flags flags,\n\t\t\t\tconst
      char *param,\n\t\t\t\tsmtp_client_command_callback_t *callback,\n\t\t\t\tvoid
      *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1112,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1115,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - conn
    - flags
    - after
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct smtp_client_command*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1103
    functionDepth: 13
    functionLinenumber: 1103
    functionLinenumberEnd: 1118
    functionName: smtp_client_command_rset_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_submit_after
    - smtp_client_command_new
    - smtp_client_command_write
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_rset_submit_after(struct
      smtp_client_connection *conn,\n\t\t\t\t      enum smtp_client_command_flags
      flags,\n\t\t\t\t      struct smtp_client_command *after,\n\t\t\t\t      smtp_client_command_callback_t
      *callback,\n\t\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_rset_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - conn
    - flags
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1121
    functionDepth: 0
    functionLinenumber: 1121
    functionLinenumberEnd: 1129
    functionName: smtp_client_command_rset_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 2
    functionsReached:
    - smtp_client_command_rset_submit_after
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_rset_submit(struct
      smtp_client_connection *conn,\n\t\t\t\tenum smtp_client_command_flags flags,\n\t\t\t\tsmtp_client_command_callback_t
      *callback,\n\t\t\t\tvoid *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_send_xclient
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1145,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1148,1
    - Dst: smtp_address_is_broken
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1149,1
    - Dst: smtp_client_command_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1151,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1152,1
    - Dst: smtp_client_command_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1155,1
    - Dst: smtp_address_encode_raw
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1156,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1159,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1162,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1164,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1167,1
    - Dst: smtp_params_mail_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1168,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1170,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1171,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 7
    argNames:
    - conn
    - flags
    - after
    - from
    - params
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct smtp_client_command*
    - struct smtp_address*
    - struct smtp_params_mail*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1134
    functionDepth: 13
    functionLinenumber: 1134
    functionLinenumberEnd: 1175
    functionName: smtp_client_command_mail_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_submit_after
    - str_append_c
    - smtp_client_connection_send_xclient
    - smtp_client_command_new
    - str_len
    - smtp_params_mail_write
    - smtp_address_is_broken
    - smtp_address_encode_raw
    - smtp_address_encode
    - smtp_client_command_printf
    - str_truncate
    - array_front
    - array_is_created
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_mail_submit_after(struct
      smtp_client_connection *conn,\n\t\t\t\t      enum smtp_client_command_flags
      flags,\n\t\t\t\t      struct smtp_client_command *after,\n\t\t\t\t      const
      struct smtp_address *from,\n\t\t\t\t      const struct smtp_params_mail *params,\n\t\t\t\t
      \     smtp_client_command_callback_t *callback,\n\t\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_mail_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - conn
    - flags
    - from
    - params
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct smtp_address*
    - struct smtp_params_mail*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1178
    functionDepth: 0
    functionLinenumber: 1178
    functionLinenumberEnd: 1189
    functionName: smtp_client_command_mail_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_mail_submit_after
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_mail_submit(struct
      smtp_client_connection *conn,\n\t\t\t\tenum smtp_client_command_flags flags,\n\t\t\t\tconst
      struct smtp_address *from,\n\t\t\t\tconst struct smtp_params_mail *params,\n\t\t\t\tsmtp_client_command_callback_t
      *callback,\n\t\t\t\tvoid *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1206,1
    - Dst: smtp_client_command_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1207,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1208,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1210,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1213,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1215,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1218,1
    - Dst: smtp_params_rcpt_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1219,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1221,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1222,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 7
    argNames:
    - conn
    - flags
    - after
    - to
    - params
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct smtp_client_command*
    - struct smtp_address*
    - struct smtp_params_rcpt*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1194
    functionDepth: 13
    functionLinenumber: 1194
    functionLinenumberEnd: 1226
    functionName: smtp_client_command_rcpt_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_submit_after
    - str_append_c
    - smtp_client_command_new
    - str_len
    - smtp_params_rcpt_write
    - smtp_address_encode
    - smtp_client_command_printf
    - str_truncate
    - array_front
    - array_is_created
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_rcpt_submit_after(struct
      smtp_client_connection *conn,\n\t\t\t\t      enum smtp_client_command_flags
      flags,\n\t\t\t\t      struct smtp_client_command *after,\n\t\t\t\t      const
      struct smtp_address *to,\n\t\t\t\t      const struct smtp_params_rcpt *params,\n\t\t\t\t
      \     smtp_client_command_callback_t *callback,\n\t\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_rcpt_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - conn
    - flags
    - from
    - params
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct smtp_address*
    - struct smtp_params_rcpt*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1229
    functionDepth: 0
    functionLinenumber: 1229
    functionLinenumberEnd: 1239
    functionName: smtp_client_command_rcpt_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_rcpt_submit_after
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_rcpt_submit(struct
      smtp_client_connection *conn,\n\t\t\t\tenum smtp_client_command_flags flags,\n\t\t\t\tconst
      struct smtp_address *from,\n\t\t\t\tconst struct smtp_params_rcpt *params,\n\t\t\t\tsmtp_client_command_callback_t
      *callback,\n\t\t\t\tvoid *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_set_abort_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1262,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1258
    functionDepth: 2
    functionLinenumber: 1258
    functionLinenumberEnd: 1267
    functionName: _cmd_data_context_free
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - i_stream_unref
    - smtp_client_command_set_abort_callback
    linkageType: ''
    returnType: void
    signature: void _cmd_data_context_free(struct _cmd_data_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1275,1
    - Dst: smtp_client_command_set_abort_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1277,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _cmd_data_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1269
    functionDepth: 7
    functionLinenumber: 1269
    functionLinenumberEnd: 1280
    functionName: _cmd_data_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - smtp_client_command_abort
    - smtp_client_command_set_abort_callback
    linkageType: ''
    returnType: void
    signature: void _cmd_data_abort(struct _cmd_data_context *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _cmd_data_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1287,1
    - Dst: _cmd_data_context_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1282
    functionDepth: 8
    functionLinenumber: 1282
    functionLinenumberEnd: 1289
    functionName: _cmd_data_abort_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - _cmd_data_context_free
    - _cmd_data_abort
    linkageType: ''
    returnType: void
    signature: void _cmd_data_abort_cb(void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - reply
    argTypes:
    - struct _cmd_data_context*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1291
    functionDepth: 8
    functionLinenumber: 1291
    functionLinenumberEnd: 1301
    functionName: _cmd_data_error
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_fail_reply
    linkageType: ''
    returnType: void
    signature: void _cmd_data_error(struct _cmd_data_context *ctx, const struct smtp_reply
      *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1311,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1316,1
    - Dst: _cmd_data_context_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1319,1
    - Dst: _cmd_data_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1303
    functionDepth: 13
    functionLinenumber: 1303
    functionLinenumberEnd: 1324
    functionName: _cmd_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_submit_after
    - _cmd_data_error
    - array_get
    - _cmd_data_context_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: void _cmd_data_cb(const struct smtp_reply *reply, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1331,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1331,1
    - Dst: _cmd_data_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1335,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1340,1
    - Dst: _cmd_bdat_send_chunks
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1343,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1345,1
    - Dst: _cmd_data_context_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1326
    functionDepth: 9
    functionLinenumber: 1326
    functionLinenumberEnd: 1349
    functionName: _cmd_bdat_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - array_pop_front
    - _cmd_data_error
    - _cmd_bdat_send_chunks
    - _cmd_data_context_free
    - array_count
    - i_assert
    linkageType: ''
    returnType: void
    signature: void _cmd_bdat_cb(const struct smtp_reply *reply, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _cmd_bdat_send_chunks
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1351
    functionDepth: 1
    functionLinenumber: 1351
    functionLinenumberEnd: 1357
    functionName: _cmd_bdat_sent_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - _cmd_bdat_send_chunks
    linkageType: ''
    returnType: void
    signature: void _cmd_bdat_sent_cb(void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1364,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1368,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1370,1
    - Dst: smtp_client_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1371,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1379,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - data_size_r
    argTypes:
    - struct _cmd_data_context*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1359
    functionDepth: 9
    functionLinenumber: 1359
    functionLinenumberEnd: 1381
    functionName: _cmd_bdat_read_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - smtp_client_command_fail
    - e_error
    - i_stream_get_error
    - i_stream_read
    linkageType: ''
    returnType: int
    signature: int _cmd_bdat_read_data(struct _cmd_data_context *ctx, size_t *data_size_r)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_get_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1394,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1401,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1404,1
    - Dst: smtp_client_command_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1408,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1419,1
    - Dst: _cmd_bdat_read_data
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1422,1
    - Dst: i_stream_create_range
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1433,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1437,1
    - Dst: smtp_client_command_set_abort_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1438,1
    - Dst: smtp_client_command_set_stream
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1440,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1441,1
    - Dst: smtp_client_command_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1442,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1444,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1445,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1450,1
    - Dst: smtp_client_command_lock
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1457,1
    - Dst: smtp_client_command_set_sent_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1470,1
    - Dst: i_stream_create_range
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1477,1
    - Dst: smtp_client_command_set_stream
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1481,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1482,1
    - Dst: smtp_client_command_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1483,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1484,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1486,1
    - Dst: _cmd_data_context_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1488,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 2
    argNames:
    - ctx
    - after
    argTypes:
    - struct _cmd_data_context*
    - struct smtp_client_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1383
    functionDepth: 13
    functionLinenumber: 1383
    functionLinenumberEnd: 1490
    functionName: _cmd_bdat_send_chunks
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 2
    functionsReached:
    - smtp_client_command_submit_after
    - smtp_client_command_lock
    - smtp_client_command_get_state
    - smtp_client_command_new
    - smtp_client_command_set_stream
    - _cmd_bdat_read_data
    - array_push_back
    - array_get
    - smtp_client_command_set_sent_callback
    - i_stream_get_max_buffer_size
    - _cmd_data_context_free
    - i_stream_create_range
    - array_count
    - smtp_client_command_printf
    - i_stream_unref
    - i_assert
    - smtp_client_command_unlock
    - smtp_client_command_set_abort_callback
    linkageType: ''
    returnType: void
    signature: "void _cmd_bdat_send_chunks(struct _cmd_data_context *ctx,\n\t\t      struct
      smtp_client_command *after)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1509,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1516,1
    - Dst: smtp_client_command_set_abort_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1522,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1525,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1529,1
    - Dst: smtp_client_command_set_stream
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1534,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1537,1
    - Dst: smtp_client_command_set_abort_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1538,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1540,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1541,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1542,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1545,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1551,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1553,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1562,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1564,1
    - Dst: _cmd_bdat_send_chunks
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 6
    argNames:
    - conn
    - flags
    - after
    - data
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct smtp_client_command*
    - struct istream*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1493
    functionDepth: 14
    functionLinenumber: 1493
    functionLinenumberEnd: 1576
    functionName: smtp_client_command_data_submit_after
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_write
    - smtp_client_command_submit_after
    - p_new
    - p_array_init
    - smtp_client_command_set_stream
    - smtp_client_command_new
    - array_push_back
    - i_stream_ref
    - i_stream_get_max_buffer_size
    - _cmd_bdat_send_chunks
    - i_stream_get_size
    - i_stream_set_max_buffer_size
    - i_assert
    - smtp_client_command_create
    - smtp_client_command_set_abort_callback
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_data_submit_after(struct
      smtp_client_connection *conn,\n\t\t\t\t      enum smtp_client_command_flags
      flags,\n\t\t\t\t      struct smtp_client_command *after,\n\t\t\t\t      struct
      istream *data,\n\t\t\t\t      smtp_client_command_callback_t *callback,\n\t\t\t\t
      \     void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_data_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-command.c:1586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - conn
    - flags
    - data
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_command_flags
    - struct istream*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1579
    functionDepth: 0
    functionLinenumber: 1579
    functionLinenumberEnd: 1588
    functionName: smtp_client_command_data_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-command.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_data_submit_after
    linkageType: ''
    returnType: struct smtp_client_command
    signature: "struct smtp_client_command *\nsmtp_client_command_data_submit(struct
      smtp_client_connection *conn,\n\t\t\t\tenum smtp_client_command_flags flags,\n\t\t\t\tstruct
      istream *data,\n\t\t\t\tsmtp_client_command_callback_t *callback,\n\t\t\t\tvoid
      *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:60,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:61,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:64,1
    - Dst: smtp_params_mail_copy
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:65,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - trans
    - mail_from
    - mail_params
    argTypes:
    - struct smtp_client_transaction*
    - struct smtp_address*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 72
    functionName: smtp_client_transaction_mail_new
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - DLLIST2_APPEND
    - smtp_params_mail_copy
    - smtp_address_clone
    linkageType: ''
    returnType: struct smtp_client_transaction_mail
    signature: "struct smtp_client_transaction_mail *\nsmtp_client_transaction_mail_new(struct
      smtp_client_transaction *trans,\n\t\t\t\t const struct smtp_address *mail_from,\n\t\t\t\t
      const struct smtp_params_mail *mail_params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:85,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:86,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct smtp_client_transaction_mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 74
    functionDepth: 7
    functionLinenumber: 74
    functionLinenumberEnd: 88
    functionName: smtp_client_transaction_mail_free
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - DLLIST2_REMOVE
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_mail_free(struct smtp_client_transaction_mail
      **_mail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_mail_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:105,1
    - Dst: mail_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _mail
    - reply
    argTypes:
    - struct smtp_client_transaction_mail**
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 90
    functionDepth: 8
    functionLinenumber: 90
    functionLinenumberEnd: 110
    functionName: smtp_client_transaction_mail_replied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - mail_callback
    - smtp_client_transaction_mail_free
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_mail_replied(\n\tstruct smtp_client_transaction_mail
      **_mail,\n\tconst struct smtp_reply *reply)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:123,1
    - Dst: smtp_client_transaction_mail_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - _mail
    argTypes:
    - struct smtp_client_transaction_mail**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 8
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: smtp_client_transaction_mail_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached:
    - i_assert
    - smtp_client_transaction_mail_free
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_mail_abort(\n\tstruct smtp_client_transaction_mail
      **_mail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_mail_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:144,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _mail
    - reply
    argTypes:
    - struct smtp_client_transaction_mail**
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 129
    functionDepth: 8
    functionLinenumber: 129
    functionLinenumberEnd: 148
    functionName: smtp_client_transaction_mail_fail_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_mail_free
    - callback
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_mail_fail_reply(\n\tstruct smtp_client_transaction_mail
      **_mail,\n\tconst struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:158,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:161,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:162,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:163,1
    - Dst: smtp_params_rcpt_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rcpt
    argTypes:
    - struct smtp_client_transaction_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 11
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: smtp_client_transaction_rcpt_update_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - t_strdup_printf
    - str_sanitize
    - smtp_address_encode
    - smtp_params_rcpt_add_to_event
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_update_event(\n\tstruct smtp_client_transaction_rcpt
      *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:175,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:177,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:180,1
    - Dst: smtp_params_rcpt_copy
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:181,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:183,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:190,1
    - Dst: smtp_client_transaction_rcpt_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - trans
    - pool
    - rcpt_to
    - rcpt_params
    argTypes:
    - struct smtp_client_transaction*
    - pool_t
    - struct smtp_address*
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 167
    functionDepth: 12
    functionLinenumber: 167
    functionLinenumberEnd: 196
    functionName: smtp_client_transaction_rcpt_new
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_params_rcpt_copy
    - event_create
    - p_new
    - DLLIST2_APPEND
    - pool_ref
    - smtp_client_transaction_rcpt_update_event
    - smtp_address_clone
    linkageType: ''
    returnType: struct smtp_client_transaction_rcpt
    signature: "struct smtp_client_transaction_rcpt *\nsmtp_client_transaction_rcpt_new(struct
      smtp_client_transaction *trans,\n\t\t\t\t pool_t pool,\n\t\t\t\t const struct
      smtp_address *rcpt_to,\n\t\t\t\t const struct smtp_params_rcpt *rcpt_params)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:210,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:216,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:220,1
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:230,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:232,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:235,1
    - Dst: smtp_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:237,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:238,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:238,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:241,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:244,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:245,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - _rcpt
    argTypes:
    - struct smtp_client_transaction_rcpt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 198
    functionDepth: 7
    functionLinenumber: 198
    functionLinenumberEnd: 247
    functionName: smtp_client_transaction_rcpt_free
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - smtp_reply_add_to_event
    - event_unref
    - e_debug
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_init
    - pool_unref
    - DLLIST2_REMOVE
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_free(\n\tstruct smtp_client_transaction_rcpt
      **_rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_rcpt_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - _rcpt
    argTypes:
    - struct smtp_client_transaction_rcpt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 249
    functionDepth: 8
    functionLinenumber: 249
    functionLinenumberEnd: 260
    functionName: smtp_client_transaction_rcpt_discard
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_rcpt_free
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_discard(\n\tstruct smtp_client_transaction_rcpt
      **_rcpt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:268,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:274,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:281,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:289,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:291,1
    - Dst: smtp_params_rcpt_copy
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:292,1
    - Dst: event_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:298,1
    - Dst: smtp_client_transaction_rcpt_discard
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:301,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - _rcpt
    argTypes:
    - struct smtp_client_transaction_rcpt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 262
    functionDepth: 9
    functionLinenumber: 262
    functionLinenumberEnd: 311
    functionName: smtp_client_transaction_rcpt_approved
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_params_rcpt_copy
    - p_new
    - DLLIST2_APPEND
    - event_ref
    - DLLIST2_REMOVE
    - smtp_address_clone
    - i_assert
    - smtp_client_transaction_rcpt_discard
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_approved(\n\tstruct smtp_client_transaction_rcpt
      **_rcpt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:321,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:329,1
    - Dst: smtp_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:331,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:332,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:332,1
    - Dst: smtp_client_transaction_rcpt_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - _rcpt
    - reply
    argTypes:
    - struct smtp_client_transaction_rcpt**
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 313
    functionDepth: 8
    functionLinenumber: 313
    functionLinenumberEnd: 336
    functionName: smtp_client_transaction_rcpt_denied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_reply_add_to_event
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - smtp_client_transaction_rcpt_free
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_denied(\n\tstruct smtp_client_transaction_rcpt
      **_rcpt,\n\tconst struct smtp_reply *reply)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:349,1
    - Dst: smtp_client_transaction_rcpt_approved
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:360,1
    - Dst: smtp_client_transaction_rcpt_denied
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:362,1
    - Dst: rcpt_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:366,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - _rcpt
    - reply
    argTypes:
    - struct smtp_client_transaction_rcpt**
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 338
    functionDepth: 10
    functionLinenumber: 338
    functionLinenumberEnd: 367
    functionName: smtp_client_transaction_rcpt_replied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_rcpt_approved
    - rcpt_callback
    - smtp_client_transaction_rcpt_denied
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_replied(\n\tstruct smtp_client_transaction_rcpt
      **_rcpt,\n\tconst struct smtp_reply *reply)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:380,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:382,1
    - Dst: smtp_client_transaction_rcpt_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - _rcpt
    argTypes:
    - struct smtp_client_transaction_rcpt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 369
    functionDepth: 8
    functionLinenumber: 369
    functionLinenumberEnd: 386
    functionName: smtp_client_transaction_rcpt_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached:
    - i_assert
    - smtp_client_transaction_rcpt_free
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_abort(\n\tstruct smtp_client_transaction_rcpt
      **_rcpt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:420,1
    - Dst: smtp_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:422,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:423,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:423,1
    - Dst: smtp_client_transaction_rcpt_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:425,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:428,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - _rcpt
    - reply
    argTypes:
    - struct smtp_client_transaction_rcpt**
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 388
    functionDepth: 8
    functionLinenumber: 388
    functionLinenumberEnd: 429
    functionName: smtp_client_transaction_rcpt_fail_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_reply_add_to_event
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - smtp_client_transaction_rcpt_free
    - callback
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_fail_reply(\n\tstruct smtp_client_transaction_rcpt
      **_rcpt,\n\tconst struct smtp_reply *reply)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:437,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:440,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:446,1
    - Dst: smtp_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:448,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:449,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:449,1
    - Dst: struct smtp_client_transaction_rcpt*::data_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - rcpt
    - reply
    argTypes:
    - struct smtp_client_transaction_rcpt*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 454
    functionName: smtp_client_transaction_rcpt_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_reply_add_to_event
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct smtp_client_transaction_rcpt*::data_callback
    - i_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_finished(struct smtp_client_transaction_rcpt
      *rcpt,\n\t\t\t\t      const struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rcpt
    - callback
    - context
    argTypes:
    - struct smtp_client_transaction_rcpt*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 465
    functionName: smtp_client_transaction_rcpt_set_data_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_set_data_callback(\n\tstruct smtp_client_transaction_rcpt
      *rcpt,\n\tsmtp_client_command_callback_t *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 471
    functionDepth: 4
    functionLinenumber: 471
    functionLinenumberEnd: 475
    functionName: smtp_client_transaction_update_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_update_event(struct smtp_client_transaction
      *trans)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:485,1
    - Dst: smtp_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:493,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - trans
    - reply
    argTypes:
    - struct smtp_client_transaction*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 497
    functionName: smtp_client_transaction_result_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_reply_add_to_event
    - event_create_passthrough
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: struct event_passthrough
    signature: "struct event_passthrough *\nsmtp_client_transaction_result_event(struct
      smtp_client_transaction *trans,\n\t\t\t\t     const struct smtp_reply *reply)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:512,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:513,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:520,1
    - Dst: smtp_client_transaction_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:521,1
    - Dst: smtp_client_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:524,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - conn
    - flags
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_transaction_flags
    - smtp_client_transaction_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 500
    functionDepth: 5
    functionLinenumber: 500
    functionLinenumberEnd: 529
    functionName: smtp_client_transaction_create_empty
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - e_debug
    - smtp_client_transaction_update_event
    - smtp_client_connection_ref
    linkageType: ''
    returnType: struct smtp_client_transaction
    signature: "struct smtp_client_transaction *\nsmtp_client_transaction_create_empty(\n\tstruct
      smtp_client_connection *conn,\n\tenum smtp_client_transaction_flags flags,\n\tsmtp_client_transaction_callback_t
      *callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_create_empty
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:542,1
    - Dst: smtp_client_transaction_mail_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - conn
    - mail_from
    - mail_params
    - flags
    - callback
    - context
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_address*
    - struct smtp_params_mail*
    - enum smtp_client_transaction_flags
    - smtp_client_transaction_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 532
    functionDepth: 4
    functionLinenumber: 532
    functionLinenumberEnd: 546
    functionName: smtp_client_transaction_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 3
    functionsReached:
    - smtp_client_transaction_mail_new
    - smtp_client_transaction_create_empty
    linkageType: ''
    returnType: struct smtp_client_transaction
    signature: "struct smtp_client_transaction *\nsmtp_client_transaction_create(struct
      smtp_client_connection *conn,\n\t\t\t       const struct smtp_address *mail_from,\n\t\t\t
      \      const struct smtp_params_mail *mail_params,\n\t\t\t       enum smtp_client_transaction_flags
      flags,\n\t\t\t       smtp_client_transaction_callback_t *callback,\n\t\t\t       void
      *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:557,1
    - Dst: smtp_client_transaction_result_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:560,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:561,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:561,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:563,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:566,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:569,1
    - Dst: struct smtp_client_transaction*::callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:570,1
    - Dst: smtp_client_connection_abort_transaction
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:573,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:575,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - trans
    - final_reply
    argTypes:
    - struct smtp_client_transaction*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 548
    functionDepth: 6
    functionLinenumber: 548
    functionLinenumberEnd: 576
    functionName: smtp_client_transaction_finish
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_abort_transaction
    - e_debug
    - smtp_client_transaction_unref
    - struct smtp_client_transaction*::callback
    - smtp_client_transaction_result_event
    - struct event_passthrough*::event
    - io_loop_time_refresh
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_finish(struct smtp_client_transaction
      *trans,\n\t\t\t       const struct smtp_reply *final_reply)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:583,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:587,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:590,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:591,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:592,1
    - Dst: smtp_client_transaction_mail_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:600,1
    - Dst: smtp_client_transaction_rcpt_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:606,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:608,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:609,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:610,1
    - Dst: smtp_client_connection_abort_transaction
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:612,1
    - Dst: smtp_client_transaction_result_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:619,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:621,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:621,1
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:625,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:628,1
    - Dst: smtp_client_transaction_result_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:630,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:632,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:632,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:636,1
    - Dst: struct smtp_client_transaction*::callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:637,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:639,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 578
    functionDepth: 8
    functionLinenumber: 578
    functionLinenumberEnd: 641
    functionName: smtp_client_transaction_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - i_assert
    - smtp_client_transaction_mail_free
    - e_debug
    - smtp_client_transaction_unref
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_init
    - struct smtp_client_transaction*::callback
    - smtp_client_transaction_result_event
    - smtp_client_transaction_rcpt_free
    - struct event_passthrough*::event
    - i_stream_unref
    - smtp_client_connection_abort_transaction
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_abort(struct smtp_client_transaction *trans)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 646
    functionName: smtp_client_transaction_ref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_ref(struct smtp_client_transaction *trans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:659,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:663,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:665,1
    - Dst: smtp_client_transaction_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:666,1
    - Dst: smtp_client_transaction_rcpt_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:671,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:674,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:675,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:676,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:678,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - _trans
    argTypes:
    - struct smtp_client_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 648
    functionDepth: 9
    functionLinenumber: 648
    functionLinenumberEnd: 679
    functionName: smtp_client_transaction_unref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 2
    functionsReached:
    - event_unref
    - smtp_client_connection_unref
    - e_debug
    - smtp_client_transaction_abort
    - pool_unref
    - smtp_client_transaction_rcpt_free
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_unref(struct smtp_client_transaction **_trans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:692,1
    - Dst: smtp_client_transaction_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:693,1
    - Dst: smtp_client_command_drop_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:699,1
    - Dst: smtp_client_command_drop_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:702,1
    - Dst: smtp_client_command_drop_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:704,1
    - Dst: smtp_client_command_drop_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:705,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:706,1
    - Dst: smtp_client_transaction_rcpt_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:712,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:719,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:722,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - _trans
    argTypes:
    - struct smtp_client_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 681
    functionDepth: 10
    functionLinenumber: 681
    functionLinenumberEnd: 723
    functionName: smtp_client_transaction_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 3
    functionsReached:
    - smtp_client_command_abort
    - smtp_client_transaction_unref
    - smtp_client_transaction_abort
    - smtp_client_transaction_ref
    - smtp_client_transaction_rcpt_free
    - smtp_client_command_drop_callback
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_destroy(struct smtp_client_transaction
      **_trans)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:732,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:735,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:736,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:741,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:741,1
    - Dst: smtp_client_transaction_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:744,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:748,1
    - Dst: smtp_client_transaction_mail_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:754,1
    - Dst: smtp_client_command_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:766,1
    - Dst: smtp_client_transaction_rcpt_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:768,1
    - Dst: smtp_client_command_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:781,1
    - Dst: smtp_client_command_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:785,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:787,1
    - Dst: smtp_client_transaction_rcpt_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:794,1
    - Dst: struct smtp_client_transaction*::data_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:798,1
    - Dst: smtp_reply_clone
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:804,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:805,1
    - Dst: smtp_client_transaction_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:813,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:817,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 2
    argNames:
    - trans
    - reply
    argTypes:
    - struct smtp_client_transaction*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 725
    functionDepth: 10
    functionLinenumber: 725
    functionLinenumberEnd: 818
    functionName: smtp_client_transaction_fail_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_reply_clone
    - smtp_client_command_abort
    - e_debug
    - smtp_client_transaction_unref
    - smtp_client_command_fail_reply
    - smtp_client_transaction_abort
    - smtp_client_transaction_ref
    - smtp_client_transaction_mail_fail_reply
    - smtp_client_transaction_rcpt_fail_reply
    - struct smtp_client_transaction*::data_callback
    - smtp_reply_log
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_fail_reply(struct smtp_client_transaction
      *trans,\n\t\t\t\t\tconst struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:825,1
    - Dst: smtp_client_transaction_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - trans
    - status
    - error
    argTypes:
    - struct smtp_client_transaction*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 820
    functionDepth: 11
    functionLinenumber: 820
    functionLinenumberEnd: 827
    functionName: smtp_client_transaction_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_fail_reply
    - smtp_reply_init
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_fail(struct smtp_client_transaction *trans,\n\t\t\t\t
      \ unsigned int status, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:832,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:833,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:834,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:835,1
    - Dst: smtp_client_transaction_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - trans
    - event
    argTypes:
    - struct smtp_client_transaction*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 829
    functionDepth: 5
    functionLinenumber: 829
    functionLinenumberEnd: 837
    functionName: smtp_client_transaction_set_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_create
    - event_unref
    - smtp_client_transaction_update_event
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_set_event(struct smtp_client_transaction
      *trans,\n\t\t\t\t       struct event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:844,1
    - Dst: smtp_client_transaction_get_state_destription
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:847,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:848,1
    - Dst: smtp_client_transaction_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 839
    functionDepth: 11
    functionLinenumber: 839
    functionLinenumberEnd: 851
    functionName: smtp_client_transaction_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - SMTP_REPLY_ENH_CODE
    - smtp_client_transaction_fail_reply
    - smtp_client_transaction_get_state_destription
    - smtp_reply_printf
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_timeout(struct smtp_client_transaction
      *trans)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:856,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:862,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:863,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - trans
    - timeout_msecs
    argTypes:
    - struct smtp_client_transaction*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 853
    functionDepth: 6
    functionLinenumber: 853
    functionLinenumberEnd: 867
    functionName: smtp_client_transaction_set_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached:
    - timeout_add
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_set_timeout(struct smtp_client_transaction
      *trans,\n\t\t\t\t\t unsigned int timeout_msecs)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:874,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:876,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:876,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:878,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:879,1
    - Dst: smtp_client_transaction_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:883,1
    - Dst: smtp_client_command_plug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:896,1
    - Dst: smtp_client_transaction_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:909,1
    - Dst: smtp_client_transaction_mail_replied
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:911,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:914,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:922,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:923,1
    - Dst: smtp_params_mail_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:924,1
    - Dst: smtp_client_transaction_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:930,1
    - Dst: smtp_reply_clone
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:933,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 2
    argNames:
    - reply
    - trans
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 869
    functionDepth: 14
    functionLinenumber: 869
    functionLinenumberEnd: 936
    functionName: smtp_client_transaction_mail_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_reply_clone
    - smtp_client_transaction_fail_reply
    - smtp_params_mail_add_to_event
    - e_debug
    - smtp_client_transaction_fail
    - smtp_client_transaction_unref
    - smtp_client_transaction_ref
    - smtp_address_encode
    - event_add_str
    - smtp_client_command_plug
    - smtp_client_transaction_mail_replied
    - smtp_reply_log
    - i_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_mail_cb(const struct smtp_reply *reply,\n\t\t\t\tstruct
      smtp_client_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:948,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:950,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:951,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:953,1
    - Dst: smtp_client_transaction_mail_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:955,1
    - Dst: smtp_client_transaction_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - trans
    - mail_from
    - mail_params
    - mail_callback
    - context
    argTypes:
    - struct smtp_client_transaction*
    - struct smtp_address*
    - struct smtp_params_mail*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 939
    functionDepth: 4
    functionLinenumber: 939
    functionLinenumberEnd: 962
    functionName: smtp_client_transaction_add_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached:
    - e_debug
    - smtp_client_transaction_submit
    - i_assert
    - smtp_client_transaction_mail_new
    linkageType: ''
    returnType: struct smtp_client_transaction_mail
    signature: "struct smtp_client_transaction_mail *\nsmtp_client_transaction_add_mail(struct
      smtp_client_transaction *trans,\n\t\t\t\t const struct smtp_address *mail_from,\n\t\t\t\t
      const struct smtp_params_mail *mail_params,\n\t\t\t\t smtp_client_command_callback_t
      *mail_callback,\n\t\t\t\t void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:970,1
    - Dst: smtp_client_transaction_submit_more
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:974,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 975
    functionName: smtp_client_transaction_connection_ready
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_client_transaction_submit_more
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_connection_ready(struct smtp_client_transaction
      *trans)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:985,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:986,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:988,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:989,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:990,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:991,1
    - Dst: smtp_address_encode_raw
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:992,1
    - Dst: smtp_params_mail_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:993,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:997,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:999,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:999,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1001,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1004,1
    - Dst: smtp_client_connection_add_transaction
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1011,1
    - Dst: smtp_client_transaction_submit_more
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1018,1
    - Dst: smtp_client_command_plug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1021,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - trans
    - mail_callback
    - context
    argTypes:
    - struct smtp_client_transaction*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 978
    functionDepth: 14
    functionLinenumber: 978
    functionLinenumberEnd: 1023
    functionName: smtp_client_transaction_start
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 3
    functionsReached:
    - smtp_params_mail_add_to_event
    - smtp_client_transaction_submit_more
    - e_debug
    - smtp_address_encode_raw
    - smtp_address_encode
    - struct event_passthrough*::event
    - event_create_passthrough
    - io_loop_time_refresh
    - smtp_client_command_plug
    - event_add_str
    - i_assert
    - smtp_client_connection_add_transaction
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_start(\n\tstruct smtp_client_transaction
      *trans,\n\tsmtp_client_command_callback_t *mail_callback, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1032,1
    - Dst: smtp_client_transaction_mail_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1034,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - trans
    - mail_from
    - mail_params
    - mail_callback
    - context
    argTypes:
    - struct smtp_client_transaction*
    - struct smtp_address*
    - struct smtp_params_mail*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1026
    functionDepth: 4
    functionLinenumber: 1026
    functionLinenumberEnd: 1037
    functionName: smtp_client_transaction_start_empty
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached:
    - smtp_client_transaction_start
    - i_assert
    - smtp_client_transaction_mail_new
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_start_empty(\n\tstruct smtp_client_transaction
      *trans,\n\tconst struct smtp_address *mail_from,\n\tconst struct smtp_params_mail
      *mail_params,\n\tsmtp_client_command_callback_t *mail_callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1045,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1047,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1047,1
    - Dst: smtp_client_command_plug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1053,1
    - Dst: smtp_client_transaction_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1061,1
    - Dst: smtp_client_transaction_rcpt_replied
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1063,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1066,1
    - Dst: smtp_client_transaction_try_complete
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1071,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - reply
    - rcpt
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_transaction_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1039
    functionDepth: 14
    functionLinenumber: 1039
    functionLinenumberEnd: 1072
    functionName: smtp_client_transaction_rcpt_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_try_complete
    - e_debug
    - smtp_client_transaction_unref
    - smtp_client_transaction_rcpt_replied
    - smtp_client_transaction_ref
    - smtp_client_command_plug
    - smtp_reply_log
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rcpt_cb(const struct smtp_reply *reply,\n\t\t\t\tstruct
      smtp_client_transaction_rcpt *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1086,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1088,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1089,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1091,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1097,1
    - Dst: smtp_client_transaction_rcpt_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1098,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1100,1
    - Dst: smtp_client_transaction_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 6
    argNames:
    - trans
    - rcpt_to
    - rcpt_params
    - rcpt_callback
    - data_callback
    - context
    argTypes:
    - struct smtp_client_transaction*
    - struct smtp_address*
    - struct smtp_params_rcpt*
    - smtp_client_command_callback_t*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1075
    functionDepth: 13
    functionLinenumber: 1075
    functionLinenumberEnd: 1111
    functionName: smtp_client_transaction_add_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - e_debug
    - smtp_client_transaction_submit
    - smtp_client_transaction_rcpt_new
    - pool_unref
    - i_assert
    linkageType: ''
    returnType: struct smtp_client_transaction_rcpt
    signature: "struct smtp_client_transaction_rcpt *\nsmtp_client_transaction_add_rcpt(struct
      smtp_client_transaction *trans,\n\t\t\t\t const struct smtp_address *rcpt_to,\n\t\t\t\t
      const struct smtp_params_rcpt *rcpt_params,\n\t\t\t\t smtp_client_command_callback_t
      *rcpt_callback,\n\t\t\t\t smtp_client_command_callback_t *data_callback,\n\t\t\t\t
      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1123,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1126,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1128,1
    - Dst: smtp_client_transaction_rcpt_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1134,1
    - Dst: smtp_client_transaction_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - trans
    - pool
    - rcpt_to
    - rcpt_params
    - rcpt_callback
    - context
    argTypes:
    - struct smtp_client_transaction*
    - pool_t
    - struct smtp_address*
    - struct smtp_params_rcpt*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1114
    functionDepth: 13
    functionLinenumber: 1114
    functionLinenumberEnd: 1143
    functionName: smtp_client_transaction_add_pool_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 2
    functionsReached:
    - e_debug
    - smtp_client_transaction_submit
    - i_assert
    - smtp_client_transaction_rcpt_new
    linkageType: ''
    returnType: struct smtp_client_transaction_rcpt
    signature: "struct smtp_client_transaction_rcpt *\nsmtp_client_transaction_add_pool_rcpt(\n\tstruct
      smtp_client_transaction *trans, pool_t pool,\n\tconst struct smtp_address *rcpt_to,\n\tconst
      struct smtp_params_rcpt *rcpt_params,\n\tsmtp_client_command_callback_t *rcpt_callback,
      void *context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1152,1
    - Dst: smtp_client_transaction_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1154,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1157,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1159,1
    - Dst: smtp_client_command_set_replies
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1165,1
    - Dst: smtp_client_transaction_rcpt_finished
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1172,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1173,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1179,1
    - Dst: smtp_reply_clone
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1180,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1182,1
    - Dst: struct smtp_client_transaction*::data_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1189,1
    - Dst: smtp_client_transaction_finish
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1193,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1197,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 2
    argNames:
    - reply
    - trans
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1145
    functionDepth: 10
    functionLinenumber: 1145
    functionLinenumberEnd: 1198
    functionName: smtp_client_transaction_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_reply_clone
    - smtp_client_transaction_unref
    - smtp_client_transaction_ref
    - smtp_reply_is_success
    - smtp_client_command_set_replies
    - i_stream_unref
    - smtp_client_transaction_finish
    - struct smtp_client_transaction*::data_callback
    - HAS_ALL_BITS
    - i_assert
    - event_add_int
    - smtp_client_transaction_rcpt_finished
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_data_cb(const struct smtp_reply *reply,\n\t\t\t\tstruct
      smtp_client_transaction *trans)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1205,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1206,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1208,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1210,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1212,1
    - Dst: smtp_client_transaction_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1216,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1218,1
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1222,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1223,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1225,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1227,1
    - Dst: smtp_client_command_data_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1229,1
    - Dst: smtp_client_command_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1235,1
    - Dst: smtp_client_transaction_try_complete
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1237,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1240,1
    - Dst: smtp_client_transaction_finish
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1200
    functionDepth: 11
    functionLinenumber: 1200
    functionLinenumberEnd: 1245
    functionName: smtp_client_transaction_send_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_client_command_abort
    - smtp_client_transaction_fail_reply
    - smtp_client_transaction_try_complete
    - e_debug
    - SMTP_REPLY_ENH_CODE
    - smtp_reply_init
    - smtp_client_command_data_submit_after
    - i_assert
    - smtp_client_transaction_finish
    - smtp_client_command_unlock
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_send_data(struct smtp_client_transaction
      *trans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1252,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1253,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1254,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1257,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1259,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1263,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1264,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1270,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1271,1
    - Dst: smtp_client_transaction_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - trans
    - data_input
    - data_callback
    - data_context
    argTypes:
    - struct smtp_client_transaction*
    - struct istream*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1248
    functionDepth: 6
    functionLinenumber: 1248
    functionLinenumberEnd: 1277
    functionName: smtp_client_transaction_send
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 2
    functionsReached:
    - i_stream_create_crlf
    - e_debug
    - smtp_client_transaction_submit
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_send(\n\tstruct smtp_client_transaction
      *trans, struct istream *data_input,\n\tsmtp_client_command_callback_t *data_callback,
      void *data_context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1283,1
    - Dst: struct smtp_client_transaction*::reset_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1288,1
    - Dst: smtp_client_transaction_finish
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1292,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - trans
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1279
    functionDepth: 10
    functionLinenumber: 1279
    functionLinenumberEnd: 1295
    functionName: smtp_client_transaction_rset_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_ref
    - smtp_client_transaction_unref
    - struct smtp_client_transaction*::reset_callback
    - smtp_client_transaction_finish
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_rset_cb(const struct smtp_reply *reply,\n\t\t\t\tstruct
      smtp_client_transaction *trans)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1302,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1304,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1306,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1308,1
    - Dst: smtp_client_transaction_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1312,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1314,1
    - Dst: smtp_client_command_rset_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1316,1
    - Dst: smtp_client_command_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1321,1
    - Dst: smtp_client_transaction_try_complete
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1323,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1326,1
    - Dst: smtp_client_transaction_finish
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1297
    functionDepth: 11
    functionLinenumber: 1297
    functionLinenumberEnd: 1331
    functionName: smtp_client_transaction_send_reset
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_client_command_abort
    - smtp_client_command_rset_submit_after
    - smtp_client_transaction_fail_reply
    - smtp_client_transaction_try_complete
    - e_debug
    - i_assert
    - smtp_client_transaction_finish
    - smtp_client_command_unlock
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_send_reset(struct smtp_client_transaction
      *trans)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1338,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1339,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1340,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1342,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1350,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1351,1
    - Dst: smtp_client_transaction_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - trans
    - reset_callback
    - reset_context
    argTypes:
    - struct smtp_client_transaction*
    - smtp_client_command_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1357
    functionName: smtp_client_transaction_reset
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached:
    - e_debug
    - smtp_client_transaction_submit
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_reset(\n\tstruct smtp_client_transaction
      *trans,\n\tsmtp_client_command_callback_t *reset_callback, void *reset_context)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1362,1
    - Dst: smtp_client_transaction_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1369,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1373,1
    - Dst: smtp_client_transaction_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1380,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1381,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1383,1
    - Dst: smtp_client_command_plug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1391,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1398,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1400,1
    - Dst: smtp_client_command_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1404,1
    - Dst: smtp_client_command_mail_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1412,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1422,1
    - Dst: smtp_client_command_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1425,1
    - Dst: smtp_client_command_rcpt_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1433,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1442,1
    - Dst: smtp_client_command_lock
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1444,1
    - Dst: smtp_client_transaction_send_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1448,1
    - Dst: smtp_client_transaction_send_data
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1450,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 54
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1359
    functionDepth: 14
    functionLinenumber: 1359
    functionLinenumberEnd: 1452
    functionName: smtp_client_transaction_do_submit_more
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - smtp_client_transaction_start
    - smtp_client_transaction_fail_reply
    - smtp_client_command_lock
    - e_debug
    - smtp_client_transaction_unref
    - smtp_client_command_mail_submit_after
    - smtp_client_transaction_ref
    - smtp_client_command_rcpt_submit_after
    - smtp_client_transaction_send_reset
    - smtp_client_command_plug
    - smtp_client_transaction_send_data
    - i_assert
    - smtp_client_command_unlock
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_do_submit_more(struct smtp_client_transaction
      *trans)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1457,1
    - Dst: smtp_client_transaction_do_submit_more
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1459,1
    - Dst: smtp_client_transaction_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1454
    functionDepth: 15
    functionLinenumber: 1454
    functionLinenumberEnd: 1462
    functionName: smtp_client_transaction_submit_more
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 2
    functionsReached:
    - smtp_client_transaction_ref
    - smtp_client_transaction_do_submit_more
    - smtp_client_transaction_unref
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_submit_more(struct smtp_client_transaction
      *trans)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_submit_more
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1482,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1492,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - trans
    - start
    argTypes:
    - struct smtp_client_transaction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1464
    functionDepth: 16
    functionLinenumber: 1464
    functionLinenumberEnd: 1494
    functionName: smtp_client_transaction_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 5
    functionsReached:
    - timeout_add_short
    - smtp_client_transaction_submit_more
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_submit(struct smtp_client_transaction
      *trans,\n\t\t\t       bool start)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1499,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1503,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1512,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1518,1
    - Dst: smtp_client_transaction_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1534,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1541,1
    - Dst: smtp_client_command_set_replies
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1543,1
    - Dst: smtp_client_connection_next_transaction
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1550,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1496
    functionDepth: 9
    functionLinenumber: 1496
    functionLinenumberEnd: 1551
    functionName: smtp_client_transaction_try_complete
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 3
    functionsReached:
    - e_debug
    - smtp_client_transaction_abort
    - smtp_client_connection_next_transaction
    - smtp_client_command_set_replies
    - HAS_ALL_BITS
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_client_transaction_try_complete(struct smtp_client_transaction
      *trans)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - trans
    - immediate
    argTypes:
    - struct smtp_client_transaction*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1553
    functionDepth: 0
    functionLinenumber: 1553
    functionLinenumberEnd: 1557
    functionName: smtp_client_transaction_set_immediate
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_set_immediate(\n\tstruct smtp_client_transaction
      *trans, bool immediate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1563,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1565,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1566,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1568,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1569,1
    - Dst: smtp_client_transaction_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1571,1
    - Dst: smtp_client_transaction_connection_ready
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1575,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - trans
    - reply
    argTypes:
    - struct smtp_client_transaction*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1559
    functionDepth: 11
    functionLinenumber: 1559
    functionLinenumberEnd: 1576
    functionName: smtp_client_transaction_connection_result
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_fail_reply
    - smtp_client_transaction_connection_ready
    - e_debug
    - smtp_reply_log
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_connection_result(\n\tstruct smtp_client_transaction
      *trans,\n\tconst struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1581,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1578
    functionDepth: 1
    functionLinenumber: 1578
    functionLinenumberEnd: 1583
    functionName: smtp_client_transaction_connection_destroyed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - i_assert
    - smtp_client_connection_unref
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_connection_destroyed(\n\tstruct smtp_client_transaction
      *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1585
    functionDepth: 0
    functionLinenumber: 1585
    functionLinenumberEnd: 1589
    functionName: smtp_client_transaction_get_times
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct smtp_client_transaction_times
    signature: 'struct smtp_client_transaction_times *

      smtp_client_transaction_get_times(struct smtp_client_transaction *trans)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1591
    functionDepth: 0
    functionLinenumber: 1591
    functionLinenumberEnd: 1595
    functionName: smtp_client_transaction_get_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum smtp_client_transaction_state
    signature: enum smtp_client_transaction_state smtp_client_transaction_get_state(struct
      smtp_client_transaction *trans)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1597
    functionDepth: 1
    functionLinenumber: 1597
    functionLinenumberEnd: 1603
    functionName: smtp_client_transaction_get_state_name
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_client_transaction_get_state_name(struct smtp_client_transaction *trans)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1615,1
    - Dst: smtp_client_connection_get_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1616,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1643,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1605
    functionDepth: 1
    functionLinenumber: 1605
    functionLinenumberEnd: 1644
    functionName: smtp_client_transaction_get_state_destription
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 1
    functionsReached:
    - smtp_client_connection_get_state
    - i_assert
    - i_unreached
    linkageType: ''
    returnType: char
    signature: "char *\nsmtp_client_transaction_get_state_destription(\n\tstruct smtp_client_transaction
      *trans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1650,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-transaction.c:1652,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1646
    functionDepth: 8
    functionLinenumber: 1646
    functionLinenumberEnd: 1653
    functionName: smtp_client_transaction_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.c
    functionUses: 0
    functionsReached:
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: "void smtp_client_transaction_switch_ioloop(\n\tstruct smtp_client_transaction
      *trans)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:29,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:29,1
    - Dst: smtp_parser_parse_string
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:31,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - string
    - value_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 40
    functionName: smtp_string_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 0
    functionsReached:
    - smtp_parser_init
    - smtp_parser_parse_string
    - pool_datastack_create
    linkageType: ''
    returnType: int
    signature: "int smtp_string_parse(const char *string, const char **value_r,\n\t\t
      \     const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:46,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:51,1
    - Dst: smtp_char_is_atext
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:54,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:59,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:62,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:66,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:67,1
    - Dst: smtp_char_is_qpair
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:67,1
    - Dst: smtp_char_is_qtext
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:69,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:70,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:71,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:77,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - out
    - value
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 78
    functionName: smtp_string_write
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 1
    functionsReached:
    - i_assert
    - str_append_c
    - str_len
    - smtp_char_is_atext
    - strlen
    - smtp_char_is_qtext
    - str_insert
    - smtp_char_is_qpair
    - str_append_data
    linkageType: ''
    returnType: void
    signature: void smtp_string_write(string_t *out, const char *value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:92,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:92,1
    - Dst: smtp_parser_parse_xtext
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:94,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:102,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:102,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:102,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - out
    - xtext
    - allow_nul
    - error_r
    argTypes:
    - string_t*
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 107
    functionName: smtp_xtext_decode
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - smtp_parser_init
    - strlen
    - pool_datastack_create
    - smtp_parser_parse_xtext
    linkageType: ''
    returnType: int
    signature: "int smtp_xtext_decode(string_t *out, const char *xtext, bool allow_nul,\n\t\t
      \     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:123,1
    - Dst: smtp_xtext_decode
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:124,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - xtext
    - value_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 130
    functionName: smtp_xtext_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - smtp_xtext_decode
    linkageType: ''
    returnType: int
    signature: "int smtp_xtext_parse(const char *xtext, const char **value_r,\n\t\t
      \    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_xtext
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:140,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:143,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:147,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - out
    - data
    - size
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 150
    functionName: smtp_xtext_encode
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 1
    functionsReached:
    - smtp_char_is_xtext
    - str_printfa
    - str_append_data
    linkageType: ''
    returnType: void
    signature: void smtp_xtext_encode(string_t *out, const unsigned char *data, size_t
      size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:162,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:162,1
    - Dst: smtp_parser_parse_domain
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:164,1
    - Dst: smtp_parser_parse_address_literal
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:167,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - helo
    - allow_literal
    - domain_r
    argTypes:
    - char*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 175
    functionName: smtp_helo_domain_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 2
    functionsReached:
    - smtp_parser_init
    - smtp_parser_parse_address_literal
    - pool_datastack_create
    - smtp_parser_parse_domain
    linkageType: ''
    returnType: int
    signature: "int smtp_helo_domain_parse(const char *helo, bool allow_literal,\n\t\t\t
      \  const char **domain_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - keyword
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 190
    functionName: smtp_ehlo_keyword_is_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 1
    functionsReached:
    - i_isalnum
    linkageType: ''
    returnType: bool
    signature: bool smtp_ehlo_keyword_is_valid(const char *keyword)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_ehlo_param
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - param
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 201
    functionName: smtp_ehlo_param_is_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_ehlo_param
    linkageType: ''
    returnType: bool
    signature: bool smtp_ehlo_param_is_valid(const char *param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_ehlo_param_is_valid
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - params
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 215
    functionName: smtp_ehlo_params_are_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 0
    functionsReached:
    - smtp_ehlo_param_is_valid
    linkageType: ''
    returnType: bool
    signature: bool smtp_ehlo_params_are_valid(const char *const *params)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_ehlo_param
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:231,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - params
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 235
    functionName: smtp_ehlo_params_str_is_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 1
    functionsReached:
    - smtp_char_is_ehlo_param
    linkageType: ''
    returnType: bool
    signature: bool smtp_ehlo_params_str_is_valid(const char *params)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:242,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:255,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:262,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:265,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:268,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:278,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:287,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:289,1
    - Dst: smtp_char_is_ehlo_param
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:291,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:299,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:300,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:301,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 3
    argNames:
    - parser
    - key_r
    - params_r
    argTypes:
    - struct smtp_parser*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 304
    functionName: smtp_parse_ehlo_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 0
    functionsReached:
    - p_strdup_until
    - p_new
    - p_array_init
    - array_push_back
    - i_isalnum
    - ARRAY_TYPE
    - array_front
    - smtp_char_is_ehlo_param
    - array_append_zero
    linkageType: ''
    returnType: int
    signature: "int smtp_parse_ehlo_line(struct smtp_parser *parser, const char **key_r,\n\t\t
      \    const char *const **params_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:320,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:320,1
    - Dst: smtp_parse_ehlo_line
      Src: /src/dovecot/src/lib-smtp/smtp-syntax.c:322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - ehlo_line
    - key_r
    - params_r
    - error_r
    argTypes:
    - char*
    - char**
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 306
    functionDepth: 3
    functionLinenumber: 306
    functionLinenumberEnd: 327
    functionName: smtp_ehlo_line_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-syntax.c
    functionUses: 0
    functionsReached:
    - smtp_parser_init
    - smtp_parse_ehlo_line
    - pool_datastack_create
    linkageType: ''
    returnType: int
    signature: "int smtp_ehlo_line_parse(const char *ehlo_line, const char **key_r,\n\t\t\t
      const char *const **params_r, const char **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:84,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:87,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:97,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:101,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:106,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:107,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:108,1
    - Dst: t_abspath_to
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:111,1
    - Dst: stat
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:112,1
    - Dst: S_ISREG
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:113,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:115,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:116,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:117,1
    - Dst: test_files_read_dir
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:118,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:124,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:128,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:129,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 32
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 79
    functionDepth: 9
    functionLinenumber: 79
    functionLinenumberEnd: 131
    functionName: test_files_read_dir
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 1
    functionsReached:
    - readdir
    - p_strdup
    - opendir
    - i_error
    - array_push_back
    - str_ends_with
    - i_fatal
    - closedir
    - array_count
    - stat
    - S_ISDIR
    - t_abspath_to
    - test_files_read_dir
    - S_ISREG
    linkageType: ''
    returnType: void
    signature: void test_files_read_dir(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:136,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:138,1
    - Dst: test_files_read_dir
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 142
    functionName: test_files_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - test_files_read_dir
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void test_files_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: test_files_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void test_files_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:154,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:157,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:161,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:167,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 149
    functionDepth: 6
    functionLinenumber: 149
    functionLinenumberEnd: 170
    functionName: test_file_open
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_stream_set_name
    - i_fatal
    - open
    - i_stream_create_fd_autoclose
    - i_debug
    linkageType: ''
    returnType: struct istream
    signature: struct istream *test_file_open(const char *path)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:223,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:228,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:230,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:236,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:240,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:241,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:247,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:252,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:254,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:256,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:261,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:269,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:271,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:273,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:275,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:276,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:278,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:284,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:290,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:292,1
    - Dst: smtp_server_reply_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:295,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 1
    argNames:
    - ctrans
    argTypes:
    - struct client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 214
    functionDepth: 7
    functionLinenumber: 214
    functionLinenumberEnd: 297
    functionName: client_transaction_read_more
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_all
    - i_stream_have_bytes_left
    - i_fatal
    - i_stream_skip
    - i_stream_get_error
    - memcmp
    - i_stream_unref
    - i_stream_read
    - i_debug
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int client_transaction_read_more(struct client_transaction *ctrans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:306,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:309,1
    - Dst: test_file_open
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:313,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:315,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:317,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:319,1
    - Dst: i_stream_create_base64_encoder
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:321,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:322,1
    - Dst: client_transaction_read_more
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ctrans
    - path
    - data_input
    argTypes:
    - struct client_transaction*
    - char*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 299
    functionDepth: 8
    functionLinenumber: 299
    functionLinenumberEnd: 325
    functionName: client_transaction_handle_payload
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - client_transaction_read_more
    - p_strdup
    - test_file_open
    - i_stream_ref
    - i_fatal
    - i_stream_create_base64_encoder
    - i_stream_unref
    - i_assert
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void client_transaction_handle_payload(struct client_transaction *ctrans,\n\t\t\t\t
      \ const char *path, struct istream *data_input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - client
    - data_cmd
    - trans
    argTypes:
    - struct client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 343
    functionName: client_transaction_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct client_transaction
    signature: "struct client_transaction *\nclient_transaction_init(struct client
      *client,\n\t\t\tstruct smtp_server_cmd_ctx *data_cmd,\n\t\t\tstruct smtp_server_transaction
      *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:351,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctrans
    argTypes:
    - struct client_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 353
    functionName: client_transaction_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void client_transaction_deinit(struct client_transaction **_ctrans)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_transaction_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 355
    functionDepth: 3
    functionLinenumber: 355
    functionLinenumberEnd: 362
    functionName: test_server_conn_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - client_transaction_deinit
    linkageType: ''
    returnType: void
    signature: "void test_server_conn_trans_free(void *context ATTR_UNUSED,\n\t\t\t
      \   struct smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:370,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 375
    functionName: test_server_conn_cmd_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_conn_cmd_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_recipient
      *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:386,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:389,1
    - Dst: client_transaction_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:391,1
    - Dst: client_transaction_handle_payload
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - conn_ctx
    - cmd
    - trans
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 377
    functionDepth: 9
    functionLinenumber: 377
    functionLinenumberEnd: 395
    functionName: test_server_conn_cmd_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - client_transaction_init
    - i_assert
    - i_debug
    - client_transaction_handle_payload
    linkageType: ''
    returnType: int
    signature: "int test_server_conn_cmd_data_begin(void *conn_ctx, struct smtp_server_cmd_ctx
      *cmd,\n\t\t\t\tstruct smtp_server_transaction *trans,\n\t\t\t\tstruct istream
      *data_input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:406,1
    - Dst: client_transaction_read_more
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - trans
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 397
    functionDepth: 8
    functionLinenumber: 397
    functionLinenumberEnd: 411
    functionName: test_server_conn_cmd_data_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - client_transaction_read_more
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_conn_cmd_data_continue(void *conn_ctx ATTR_UNUSED,\n\t\t\t\t
      \  struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t   struct smtp_server_transaction
      *trans)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_create_ehlo
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:422,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:424,1
    - Dst: smtp_server_reply_ehlo_add_8bitmime
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:428,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:431,1
    - Dst: sasl_server_instance_mech_iter_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:434,1
    - Dst: sasl_server_mech_iter_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:435,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:436,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:437,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:438,1
    - Dst: sasl_server_mech_iter_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:440,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:442,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:443,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:444,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - data
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 415
    functionDepth: 4
    functionLinenumber: 415
    functionLinenumberEnd: 446
    functionName: test_server_conn_cmd_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - sasl_server_mech_iter_next
    - str_c
    - t_str_new
    - smtp_server_reply_submit
    - str_append_c
    - smtp_server_reply_create_ehlo
    - str_len
    - smtp_server_reply_ehlo_add_8bitmime
    - sasl_server_mech_iter_free
    - smtp_server_reply_ehlo_add_param
    - sasl_server_instance_mech_iter_new
    - str_append
    linkageType: ''
    returnType: int
    signature: "int test_server_conn_cmd_helo(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd,\n\t\t\t  struct smtp_server_cmd_helo *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:464,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:466,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rctx
    - authid_type
    - authid
    argTypes:
    - struct sasl_server_req_ctx*
    - enum sasl_server_authid_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 458
    functionDepth: 2
    functionLinenumber: 458
    functionLinenumberEnd: 470
    functionName: test_server_sasl_set_authid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    - test_assert
    linkageType: ''
    returnType: bool
    signature: "bool test_server_sasl_set_authid(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \   enum sasl_server_authid_type authid_type,\n\t\t\t    const char *authid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:477,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rctx
    - authzid
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 472
    functionDepth: 2
    functionLinenumber: 472
    functionLinenumberEnd: 481
    functionName: test_server_sasl_set_authzid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    linkageType: ''
    returnType: bool
    signature: "bool test_server_sasl_set_authzid(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \    const char *authzid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:488,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rctx
    - realm
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 483
    functionDepth: 2
    functionLinenumber: 483
    functionLinenumberEnd: 491
    functionName: test_server_sasl_set_realm
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    linkageType: ''
    returnType: void
    signature: "void test_server_sasl_set_realm(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \  const char *realm)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:498,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:500,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:503,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:505,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:510,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:512,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:517,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:519,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:522,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:529,1
    - Dst: password_generate
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:532,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:536,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:538,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:543,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 493
    functionDepth: 8
    functionLinenumber: 493
    functionLinenumberEnd: 544
    functionName: test_server_sasl_passdb_result
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - password_generate
    - callback
    - t_strconcat
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_sasl_passdb_result(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:552,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:554,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:558,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rctx
    - password
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 561
    functionName: test_server_sasl_verify_plain
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - i_assert
    - container_of
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void test_server_sasl_verify_plain(struct sasl_server_req_ctx *rctx,\n\t\t\t
      \     const char *password,\n\t\t\t      sasl_server_passdb_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:569,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:571,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:575,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rctx
    - scheme
    - callback
    argTypes:
    - struct sasl_server_req_ctx*
    - char*
    - sasl_server_passdb_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 563
    functionDepth: 2
    functionLinenumber: 563
    functionLinenumberEnd: 578
    functionName: test_server_sasl_lookup_credentials
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - i_assert
    - container_of
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void test_server_sasl_lookup_credentials(struct sasl_server_req_ctx
      *rctx,\n\t\t\t\t    const char *scheme,\n\t\t\t\t    sasl_server_passdb_callback_t
      *callback)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:585,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:590,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:594,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:598,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:606,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:608,1
    - Dst: smtp_server_cmd_auth_send_challenge
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:609,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:609,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - rctx
    - output
    argTypes:
    - struct sasl_server_req_ctx*
    - struct sasl_server_output*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 580
    functionDepth: 3
    functionLinenumber: 580
    functionLinenumberEnd: 610
    functionName: test_server_sasl_output
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - str_c
    - container_of
    - smtp_server_reply
    - t_base64_encode
    - i_assert
    - smtp_server_cmd_auth_send_challenge
    linkageType: ''
    returnType: void
    signature: "void test_server_sasl_output(struct sasl_server_req_ctx *rctx,\n\t\t\tconst
      struct sasl_server_output *output)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sasl_server_mech_find
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:619,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:621,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:625,1
    - Dst: sasl_server_request_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:627,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:636,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:640,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:641,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:641,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:642,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:643,1
    - Dst: sasl_server_request_initial
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:651,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - data
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 612
    functionDepth: 5
    functionLinenumber: 612
    functionLinenumberEnd: 654
    functionName: test_server_conn_cmd_auth
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - MAX_BASE64_DECODED_SIZE
    - base64_decode
    - strlen
    - sasl_server_request_initial
    - smtp_server_reply
    - t_buffer_create
    - sasl_server_mech_find
    - sasl_server_request_create
    linkageType: ''
    returnType: int
    signature: "int test_server_conn_cmd_auth(void *conn_ctx, struct smtp_server_cmd_ctx
      *cmd,\n\t\t\t  struct smtp_server_cmd_auth *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:663,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:664,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:664,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:665,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:666,1
    - Dst: sasl_server_request_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:668,1
    - Dst: sasl_server_request_input
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:672,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - response
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 656
    functionDepth: 5
    functionLinenumber: 656
    functionLinenumberEnd: 675
    functionName: test_server_conn_cmd_auth_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - MAX_BASE64_DECODED_SIZE
    - base64_decode
    - strlen
    - smtp_server_reply
    - t_buffer_create
    - sasl_server_request_destroy
    - sasl_server_request_input
    linkageType: ''
    returnType: int
    signature: "int test_server_conn_cmd_auth_continue(void *conn_ctx,\n\t\t\t\t   struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t\t   const char *response)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:701,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:703,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:704,1
    - Dst: smtp_server_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:707,1
    - Dst: smtp_server_connection_start
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:711,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 696
    functionDepth: 4
    functionLinenumber: 696
    functionLinenumberEnd: 713
    functionName: client_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 29
    functionsReached:
    - pool_alloconly_create
    - p_new
    - smtp_server_connection_start
    - smtp_server_connection_create
    - DLLIST_PREPEND
    - net_set_nonblock
    linkageType: ''
    returnType: void
    signature: void client_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:721,1
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:724,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:727,1
    - Dst: sasl_server_request_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:728,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 715
    functionDepth: 6
    functionLinenumber: 715
    functionLinenumberEnd: 730
    functionName: client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 31
    functionsReached:
    - pool_unref
    - smtp_server_connection_terminate
    - sasl_server_request_destroy
    - DLLIST_REMOVE
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_deinit(struct client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 738
    functionName: test_server_connection_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - client_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_connection_free(void *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:746,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:751,1
    - Dst: client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:754,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 740
    functionDepth: 3
    functionLinenumber: 740
    functionLinenumberEnd: 756
    functionName: client_accept
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - client_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void client_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:776,1
    - Dst: sasl_server_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:779,1
    - Dst: sasl_server_instance_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:781,1
    - Dst: sasl_server_mech_register_plain
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:783,1
    - Dst: sasl_server_mech_register_login
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:784,1
    - Dst: sasl_server_mech_register_scram_sha256
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:785,1
    - Dst: smtp_server_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 771
    functionDepth: 5
    functionLinenumber: 771
    functionLinenumberEnd: 789
    functionName: test_server_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 4
    functionsReached:
    - sasl_server_mech_register_plain
    - sasl_server_instance_create
    - io_add
    - sasl_server_mech_register_login
    - sasl_server_mech_register_scram_sha256
    - smtp_server_init
    - sasl_server_init
    linkageType: ''
    returnType: void
    signature: void test_server_init(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:794,1
    - Dst: smtp_server_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:797,1
    - Dst: sasl_server_instance_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:798,1
    - Dst: sasl_server_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 791
    functionDepth: 5
    functionLinenumber: 791
    functionLinenumberEnd: 800
    functionName: test_server_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 4
    functionsReached:
    - io_remove
    - sasl_server_deinit
    - smtp_server_deinit
    - sasl_server_instance_unref
    linkageType: ''
    returnType: void
    signature: void test_server_deinit(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:838,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:856,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:858,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:863,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:865,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 828
    functionDepth: 6
    functionLinenumber: 828
    functionLinenumberEnd: 868
    functionName: test_client_connection_get
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_assert
    - net_ip2addr
    - smtp_client_connection_create
    linkageType: ''
    returnType: struct test_client_connection
    signature: struct test_client_connection *test_client_connection_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:874,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 878
    functionName: test_client_transaction_new
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct test_client_transaction
    signature: struct test_client_transaction *test_client_transaction_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:883,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:884,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:885,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:887,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - tctrans
    argTypes:
    - struct test_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 880
    functionDepth: 11
    functionLinenumber: 880
    functionLinenumberEnd: 889
    functionName: test_client_transaction_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - io_remove
    - smtp_client_transaction_destroy
    - i_stream_unref
    - DLLIST_REMOVE
    - i_free
    linkageType: ''
    returnType: void
    signature: void test_client_transaction_destroy(struct test_client_transaction
      *tctrans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:899,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:903,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:904,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:905,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:906,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - files_idx
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 893
    functionDepth: 1
    functionLinenumber: 893
    functionLinenumberEnd: 911
    functionName: test_client_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - timeout_add_short
    - i_assert
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_client_finished(unsigned int files_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:917,1
    - Dst: test_client_finished
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:918,1
    - Dst: test_client_transaction_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tctrans
    argTypes:
    - struct test_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 913
    functionDepth: 12
    functionLinenumber: 913
    functionLinenumberEnd: 920
    functionName: test_client_transaction_finish
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - test_client_finished
    - io_loop_is_running
    - test_client_transaction_destroy
    linkageType: ''
    returnType: void
    signature: void test_client_transaction_finish(struct test_client_transaction
      *tctrans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:931,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:933,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:934,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:935,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:937,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:940,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:942,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - reply
    - tctrans
    argTypes:
    - struct smtp_reply*
    - struct test_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 922
    functionDepth: 7
    functionLinenumber: 922
    functionLinenumberEnd: 944
    functionName: test_client_transaction_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - i_fatal
    - timeout_reset
    - smtp_reply_log
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_transaction_rcpt(const struct smtp_reply *reply,\n\t\t\t
      \    struct test_client_transaction *tctrans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:955,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:957,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:958,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:959,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:961,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:964,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:966,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - tctrans
    argTypes:
    - struct smtp_reply*
    - struct test_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 946
    functionDepth: 7
    functionLinenumber: 946
    functionLinenumberEnd: 968
    functionName: test_client_transaction_rcpt_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - i_fatal
    - timeout_reset
    - smtp_reply_log
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_transaction_rcpt_data(const struct smtp_reply *reply
      ATTR_UNUSED,\n\t\t\t\t  struct test_client_transaction *tctrans)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:979,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:982,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:987,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:988,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:989,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:991,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:994,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1000,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1002,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - tctrans
    argTypes:
    - struct smtp_reply*
    - struct test_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 970
    functionDepth: 7
    functionLinenumber: 970
    functionLinenumberEnd: 1004
    functionName: test_client_transaction_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - i_fatal
    - timeout_reset
    - smtp_reply_log
    - i_assert
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_client_transaction_data(const struct smtp_reply *reply,\n\t\t\t
      \    struct test_client_transaction *tctrans)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1014,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1016,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1018,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1020,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1022,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1023,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1025,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1036,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1044,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1051,1
    - Dst: test_file_open
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1061,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1065,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1070,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1077,1
    - Dst: test_client_transaction_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1082,1
    - Dst: test_client_connection_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1084,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1086,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1089,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1098,1
    - Dst: smtp_address_create_temp
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1100,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1101,1
    - Dst: i_stream_create_base64_encoder
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1108,1
    - Dst: i_stream_create_base64_encoder
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1112,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1114,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1115,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1121,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1122,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1123,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1128,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1132,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1133,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 67
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1006
    functionDepth: 11
    functionLinenumber: 1006
    functionLinenumberEnd: 1135
    functionName: test_client_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_stream_create_crlf
    - smtp_client_transaction_create
    - timeout_add_short
    - t_strdup_printf
    - test_client_transaction_new
    - i_stream_get_size
    - smtp_client_transaction_add_rcpt
    - test_client_connection_get
    - timeout_reset
    - smtp_address_create_temp
    - i_zero
    - test_file_open
    - array_get_modifiable
    - io_loop_stop
    - i_assert
    - smtp_client_transaction_send
    - i_stream_create_base64_encoder
    - i_stream_unref
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_continue(void *dummy ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1141,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1137
    functionDepth: 6
    functionLinenumber: 1137
    functionLinenumberEnd: 1143
    functionName: test_client_progress_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_progress_timeout(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1152,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1158,1
    - Dst: test_client_continue
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - protocol
    - client_set
    argTypes:
    - enum smtp_protocol
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1145
    functionDepth: 12
    functionLinenumber: 1145
    functionLinenumberEnd: 1163
    functionName: test_client
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - smtp_client_init
    - test_client_continue
    linkageType: ''
    returnType: void
    signature: "void test_client(enum smtp_protocol protocol,\n\t    const struct
      smtp_client_settings *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1165
    functionDepth: 1
    functionLinenumber: 1165
    functionLinenumberEnd: 1168
    functionName: test_client_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 1
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void test_client_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1172,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1173,1
    - Dst: smtp_client_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1174,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1170
    functionDepth: 6
    functionLinenumber: 1170
    functionLinenumberEnd: 1177
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 4
    functionsReached:
    - i_zero
    - smtp_client_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1191,1
    - Dst: net_listen
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1192,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1194,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1195,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1188
    functionDepth: 6
    functionLinenumber: 1188
    functionLinenumberEnd: 1198
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 5
    functionsReached:
    - i_close_fd
    - i_fatal
    - net_ip2addr
    - net_set_nonblock
    - net_listen
    linkageType: ''
    returnType: void
    signature: void test_open_server_fd(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1205,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1208,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1210,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1211,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1212,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1213,1
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1214,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1215,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1218,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1220,1
    - Dst: test_files_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1221,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1222,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_server_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1200
    functionDepth: 12
    functionLinenumber: 1200
    functionLinenumberEnd: 1229
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - test_server_init
    - settings_simple_deinit
    - i_close_fd
    - test_server_deinit
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - test_files_deinit
    - main_deinit
    - i_debug
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: int test_run_server(struct test_server_data *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1239,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1242,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1244,1
    - Dst: test_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1245,1
    - Dst: client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1246,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1247,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1248,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1249,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - protocol
    - client_set
    argTypes:
    - enum smtp_protocol
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1231
    functionDepth: 12
    functionLinenumber: 1231
    functionLinenumberEnd: 1253
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 5
    functionsReached:
    - test_client_deinit
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - i_debug
    - client_init
    - io_loop_run
    - test_client_init
    linkageType: ''
    returnType: void
    signature: "void test_run_client(\n\tenum smtp_protocol protocol, struct smtp_client_settings
      *client_set,\n\tvoid (*client_init)(enum smtp_protocol protocol,\n\t\t\t    const
      struct smtp_client_settings *client_set))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_file_get_value
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1275,1
    - Dst: settings_file_get_value
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1278,1
    - Dst: settings_file_get_value
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1281,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1286,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1289,1
    - Dst: test_files_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1293,1
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1296,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1297,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1298,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1299,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1300,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1303,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1305,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1307,1
    - Dst: test_files_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1308,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 3
    argNames:
    - protocol
    - client_set
    - server_set
    argTypes:
    - enum smtp_protocol
    - struct smtp_client_settings*
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1255
    functionDepth: 4
    functionLinenumber: 1255
    functionLinenumberEnd: 1316
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 46
    functionsReached:
    - i_zero
    - test_subprocess_fork
    - settings_simple_deinit
    - settings_file_get_value
    - i_close_fd
    - test_subprocess_kill_all
    - test_files_init
    - test_files_deinit
    - settings_simple_init
    - test_subprocess_notify_signal_reset
    - test_open_server_fd
    - test_run_client
    - test_subprocess_notify_signal_wait
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(\n\tenum smtp_protocol protocol,\n\tstruct
      smtp_client_settings *client_set,\n\tstruct smtp_server_settings *server_set,\n\tvoid
      (*client_init)(enum smtp_protocol protocol,\n\t\t\t    const struct smtp_client_settings
      *client_set))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1330,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1331,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1334,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1345,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1347,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1366,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1369,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1374,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1377,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1384,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1387,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1394,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1397,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1404,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1407,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1415,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1418,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 67
    argCount: 2
    argNames:
    - protocol
    - capabilities
    argTypes:
    - enum smtp_protocol
    - enum smtp_capability
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1318
    functionDepth: 2
    functionLinenumber: 1318
    functionLinenumberEnd: 1422
    functionName: test_run_scenarios
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_out_reason
    - ssl_iostream_test_settings_server
    - test_run_client_server
    - ssl_iostream_test_settings_client
    - test_dir_get
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: "void test_run_scenarios(\n\tenum smtp_protocol protocol,\n\tenum smtp_capability
      capabilities,\n\tvoid (*client_init)(enum smtp_protocol protocol,\n\t\t\t    const
      struct smtp_client_settings *client_set))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1426,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1427,1
    - Dst: test_run_scenarios
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1428,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1424
    functionDepth: 3
    functionLinenumber: 1424
    functionLinenumberEnd: 1431
    functionName: test_smtp_normal
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_run_scenarios
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_normal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1435,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1436,1
    - Dst: test_run_scenarios
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1437,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1433
    functionDepth: 3
    functionLinenumber: 1433
    functionLinenumberEnd: 1441
    functionName: test_smtp_chunking
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_run_scenarios
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_chunking(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1445,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1446,1
    - Dst: test_run_scenarios
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1447,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1443
    functionDepth: 3
    functionLinenumber: 1443
    functionLinenumberEnd: 1450
    functionName: test_lmtp_normal
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_run_scenarios
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lmtp_normal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1454,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1455,1
    - Dst: test_run_scenarios
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1456,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1452
    functionDepth: 3
    functionLinenumber: 1452
    functionLinenumberEnd: 1460
    functionName: test_lmtp_chunking
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_run_scenarios
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_lmtp_chunking(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1465,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1466,1
    - Dst: test_run_scenarios
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1470,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1473,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1475,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1476,1
    - Dst: test_run_scenarios
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1480,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1483,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1485,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1486,1
    - Dst: test_run_scenarios
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1490,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1463
    functionDepth: 3
    functionLinenumber: 1463
    functionLinenumberEnd: 1494
    functionName: test_smtp_authentication
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_run_scenarios
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_authentication(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_openssl_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1511,1
    - Dst: password_schemes_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1512,1
    - Dst: dsasl_clients_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1509
    functionDepth: 4
    functionLinenumber: 1509
    functionLinenumberEnd: 1514
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 16
    functionsReached:
    - password_schemes_init
    - ssl_iostream_openssl_init
    - dsasl_clients_init
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_clients_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1518,1
    - Dst: password_schemes_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1519,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1520,1
    - Dst: ssl_iostream_openssl_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1516
    functionDepth: 3
    functionLinenumber: 1516
    functionLinenumberEnd: 1522
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 22
    functionsReached:
    - password_schemes_deinit
    - dsasl_clients_deinit
    - ssl_iostream_context_cache_free
    - ssl_iostream_openssl_deinit
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1529,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1530,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1532,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1541,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1545,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1546,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1547,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1548,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1551,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1553,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1555,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1557,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-payload.c:1558,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1524
    functionDepth: 7
    functionLinenumber: 1524
    functionLinenumberEnd: 1561
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-payload.c
    functionUses: 20
    functionsReached:
    - i_zero
    - main_init
    - event_set_forced_debug
    - getopt
    - lib_init
    - test_dir_init
    - lib_deinit
    - i_fatal
    - test_run
    - htonl
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_string_parse
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:20,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:22,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:28,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:30,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_noop
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:33,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:35,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:36,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:38,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:42,1
    - Dst: smtp_server_cmd_noop_reply_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:43,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:44,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 10
    functionDepth: 3
    functionLinenumber: 10
    functionLinenumberEnd: 45
    functionName: smtp_server_cmd_noop
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - smtp_server_command_input_lock
    - smtp_server_command_is_replied
    - smtp_server_reply
    - struct smtp_server_callbacks*::conn_cmd_noop
    - i_assert
    - smtp_server_command_ref
    - smtp_server_cmd_noop_reply_success
    - smtp_string_parse
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_noop(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \ const char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:49,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: smtp_server_cmd_noop_reply_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-noop.c
    functionUses: 2
    functionsReached:
    - i_assert
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_noop_reply_success(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_recipient_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 15
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: cmd_rcpt_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c
    functionUses: 0
    functionsReached:
    - smtp_server_recipient_destroy
    linkageType: ''
    returnType: void
    signature: "void cmd_rcpt_destroy(struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t
      struct smtp_server_cmd_rcpt *data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:33,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:34,1
    - Dst: smtp_server_command_reply_is_forwarded
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:35,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:40,1
    - Dst: smtp_server_transaction_rcpt_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:45,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:47,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 2
    argNames:
    - cmd
    - next_to_reply
    argTypes:
    - struct smtp_server_cmd_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 53
    functionName: cmd_rcpt_check_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_reply_is_forwarded
    - smtp_server_command_is_replied
    - smtp_server_reply
    - smtp_server_command_replied_success
    - smtp_server_transaction_rcpt_count
    linkageType: ''
    returnType: bool
    signature: bool cmd_rcpt_check_state(struct smtp_server_cmd_ctx *cmd, bool next_to_reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:63,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:66,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:66,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:67,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:68,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:70,1
    - Dst: smtp_server_recipient_denied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:73,1
    - Dst: smtp_server_command_get_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:74,1
    - Dst: smtp_server_recipient_approved
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 81
    functionName: cmd_rcpt_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_is_replied
    - smtp_server_command_replied_success
    - smtp_server_command_get_reply
    - smtp_server_recipient_denied
    - smtp_server_recipient_approved
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void cmd_rcpt_completed(struct smtp_server_cmd_ctx *cmd,\n\t\t   struct
      smtp_server_cmd_rcpt *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cmd_rcpt_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:93,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:97,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 99
    functionName: cmd_rcpt_recheck
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_set_state
    - smtp_address_encode
    - cmd_rcpt_check_state
    linkageType: ''
    returnType: void
    signature: "void cmd_rcpt_recheck(struct smtp_server_cmd_ctx *cmd,\n\t\t struct
      smtp_server_cmd_rcpt *data ATTR_UNUSED)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: cmd_rcpt_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:126,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:130,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:131,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:142,1
    - Dst: smtp_address_parse_path_full
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:150,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:150,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:153,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:160,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:165,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:166,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:175,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:176,1
    - Dst: smtp_params_rcpt_parse
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:177,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:177,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:182,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:186,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:190,1
    - Dst: smtp_server_recipient_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:195,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:197,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:201,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:203,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:205,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:210,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:211,1
    - Dst: smtp_server_connection_reason_begin
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:214,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_rcpt
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:215,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:218,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:218,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:220,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:223,1
    - Dst: smtp_server_cmd_rcpt_reply_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:225,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:227,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 72
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 101
    functionDepth: 14
    functionLinenumber: 101
    functionLinenumberEnd: 228
    functionName: smtp_server_cmd_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c
    functionUses: 0
    functionsReached:
    - smtp_params_rcpt_parse
    - event_reason_end
    - str_begins_icase
    - array_front
    - smtp_server_command_ref
    - p_new
    - i_unreached
    - smtp_server_command_is_replied
    - smtp_server_reply
    - smtp_server_command_unref
    - strcasecmp
    - smtp_server_recipient_create
    - pool_datastack_create
    - struct smtp_server_callbacks*::conn_cmd_rcpt
    - i_assert
    - cmd_rcpt_check_state
    - smtp_server_command_add_hook
    - smtp_server_connection_reason_begin
    - smtp_address_parse_path_full
    - smtp_server_cmd_rcpt_reply_success
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_rcpt(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \ const char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: smtp_server_command_is_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_is_rcpt(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:239,1
    - Dst: smtp_server_command_is_rcpt
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:239,1
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 13
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: smtp_server_cmd_rcpt_reply_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rcpt.c
    functionUses: 2
    functionsReached:
    - smtp_server_recipient_reply
    - i_assert
    - smtp_server_command_is_rcpt
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_rcpt_reply_success(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:149,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:152,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:152,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:154,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:157,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:157,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:160,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:160,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_address*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 144
    functionDepth: 11
    functionLinenumber: 144
    functionLinenumberEnd: 164
    functionName: test_smtp_mailbox_equal
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - test_out
    - null_strcmp
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void test_smtp_mailbox_equal(const struct smtp_address *test,\n\t\t\tconst
      struct smtp_address *parsed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_parse_mailbox
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:177,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:177,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:181,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:181,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:182,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:182,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:185,1
    - Dst: test_smtp_mailbox_equal
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:186,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:188,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:191,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:191,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:192,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 166
    functionDepth: 12
    functionLinenumber: 166
    functionLinenumberEnd: 195
    functionName: test_smtp_mailbox_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out_reason
    - smtp_address_parse_mailbox
    - t_strdup_printf
    - test_has_failed
    - test_end
    - test_out
    - pool_datastack_create
    - smtp_address_encode
    - test_smtp_mailbox_equal
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_mailbox_parse_valid(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:425,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:425,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:426,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:427,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:428,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:430,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:430,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:432,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:434,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:437,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:440,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:440,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:442,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:445,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:445,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:448,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:448,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:451,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:451,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:453,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_address*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 421
    functionDepth: 11
    functionLinenumber: 421
    functionLinenumberEnd: 455
    functionName: test_smtp_path_equal
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - test_out_quiet
    - test_out
    - null_strcmp
    - smtp_address_isnull
    linkageType: ''
    returnType: void
    signature: "void test_smtp_path_equal(const struct smtp_address *test,\n\t\t     const
      struct smtp_address *parsed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:469,1
    - Dst: smtp_address_parse_path
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:471,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:471,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:475,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:475,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:476,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:476,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:479,1
    - Dst: test_smtp_path_equal
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:480,1
    - Dst: smtp_address_encode_path
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:482,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:485,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:485,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:486,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:488,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 457
    functionDepth: 12
    functionLinenumber: 457
    functionLinenumberEnd: 489
    functionName: test_smtp_path_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out_reason
    - t_strdup_printf
    - test_smtp_path_equal
    - test_has_failed
    - test_end
    - test_out
    - pool_datastack_create
    - smtp_address_parse_path
    - smtp_address_encode_path
    - HAS_ALL_BITS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_path_parse_valid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_parse_username
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:614,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:614,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:618,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:618,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:619,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:619,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:622,1
    - Dst: test_smtp_path_equal
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:623,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:625,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:628,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:628,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:629,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 603
    functionDepth: 12
    functionLinenumber: 603
    functionLinenumberEnd: 632
    functionName: test_smtp_username_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out_reason
    - smtp_address_parse_username
    - t_strdup_printf
    - test_smtp_path_equal
    - test_has_failed
    - test_end
    - test_out
    - pool_datastack_create
    - smtp_address_encode
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_username_parse_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_parse_mailbox
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:778,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:778,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:782,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:782,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:783,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:783,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:785,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 767
    functionDepth: 11
    functionLinenumber: 767
    functionLinenumberEnd: 786
    functionName: test_smtp_mailbox_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - smtp_address_parse_mailbox
    - t_strdup_printf
    - test_end
    - pool_datastack_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_mailbox_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_parse_path
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1073,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1073,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1077,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1077,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1078,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1078,1
    - Dst: smtp_address_is_broken
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1079,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1081,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1062
    functionDepth: 11
    functionLinenumber: 1062
    functionLinenumberEnd: 1082
    functionName: test_smtp_path_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - smtp_address_is_broken
    - t_strdup_printf
    - test_end
    - pool_datastack_create
    - smtp_address_parse_path
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_path_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_parse_username
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1118,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1118,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1122,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1122,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1123,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1123,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1107
    functionDepth: 11
    functionLinenumber: 1107
    functionLinenumberEnd: 1126
    functionName: test_smtp_username_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - smtp_address_parse_username
    - t_strdup_printf
    - test_end
    - pool_datastack_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_username_parse_invalid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1174,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1182,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1182,1
    - Dst: smtp_address_parse_path
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1185,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1186,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1190,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1192,1
    - Dst: smtp_address_detail_parse_temp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1196,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1196,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1197,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1198,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1169
    functionDepth: 11
    functionLinenumber: 1169
    functionLinenumberEnd: 1202
    functionName: test_smtp_address_detail_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out_reason
    - smtp_address_detail_parse_temp
    - t_strdup_printf
    - test_has_failed
    - test_end
    - pool_datastack_create
    - smtp_address_parse_path
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_address_detail_parse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_parse_any
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1379,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1381,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1381,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1382,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1382,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1383,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1386,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1387,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1369
    functionDepth: 11
    functionLinenumber: 1369
    functionLinenumberEnd: 1388
    functionName: test_smtp_parse_any_address
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 0
    functionsReached:
    - smtp_address_parse_any
    - t_strdup_printf
    - test_out_quiet
    - str_sanitize
    - test_end
    - null_strcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_parse_any_address(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-address.c:1408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1395
    functionDepth: 7
    functionLinenumber: 1395
    functionLinenumberEnd: 1409
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-address.c
    functionUses: 20
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:66,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:69,1
    - Dst: i_strdup_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:70,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - parser
    - code
    - format
    argTypes:
    - struct smtp_command_parser*
    - enum smtp_command_parse_error
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 72
    functionName: smtp_command_parser_error
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - va_end
    - i_free
    - i_strdup_vprintf
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_command_parser_error(struct smtp_command_parser *parser,\n\t\t\t
      \ enum smtp_command_parse_error code,\n\t\t\t  const char *format, ...)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:80,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - input
    - limits
    argTypes:
    - struct istream*
    - struct smtp_command_limits*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 100
    functionName: smtp_command_parser_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 4
    functionsReached:
    - i_stream_ref
    - i_new
    linkageType: ''
    returnType: struct smtp_command_parser
    signature: "struct smtp_command_parser *\nsmtp_command_parser_init(struct istream
      *input,\n\t\t\t const struct smtp_command_limits *limits)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:106,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:108,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: smtp_command_parser_clear
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 1
    functionsReached:
    - strlen
    - buffer_clear_safe
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void smtp_command_parser_clear(struct smtp_command_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_command_parser_clear
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:119,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:121,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:122,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:123,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:124,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:125,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:126,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct smtp_command_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 129
    functionName: smtp_command_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 4
    functionsReached:
    - smtp_command_parser_clear
    - i_free
    - buffer_free
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void smtp_command_parser_deinit(struct smtp_command_parser **_parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_command_parser_clear
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:133,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:135,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:136,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:137,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 3
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: smtp_command_parser_restart
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_command_parser_clear
    - i_free
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void smtp_command_parser_restart(struct smtp_command_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:145,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - input
    argTypes:
    - struct smtp_command_parser*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: smtp_command_parser_set_stream
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void smtp_command_parser_set_stream(struct smtp_command_parser *parser,\n\t\t\t\t
      \   struct istream *input)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:155,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 11
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: _chr_sanitize
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *_chr_sanitize(unsigned char c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:170,1
    - Dst: i_isalpha
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:171,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:174,1
    - Dst: i_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 186
    functionName: smtp_command_parse_identifier
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - smtp_command_parser_error
    - i_isalpha
    - i_assert
    - i_strdup_until
    linkageType: ''
    returnType: int
    signature: int smtp_command_parse_identifier(struct smtp_command_parser *parser)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:198,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:200,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:219,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:225,1
    - Dst: smtp_char_is_textstr
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:230,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:235,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:246,1
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:247,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:256,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:257,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:259,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:264,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:287,1
    - Dst: i_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:297,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:300,1
    - Dst: buffer_nul_terminate
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:302,1
    - Dst: buffer_free_without_data
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:304,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 67
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 188
    functionDepth: 5
    functionLinenumber: 188
    functionLinenumberEnd: 309
    functionName: smtp_command_parse_parameters
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_textstr
    - buffer_append
    - buffer_nul_terminate
    - uni_utf8_get_char_n
    - I_MIN
    - smtp_command_parser_error
    - i_stream_get_max_buffer_size
    - I_MAX
    - buffer_create_dynamic
    - i_strdup_until
    - buffer_free_without_data
    - i_assert
    - uni_utf8_char_bytes
    linkageType: ''
    returnType: int
    signature: int smtp_command_parse_parameters(struct smtp_command_parser *parser)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: smtp_command_parser_restart
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:326,1
    - Dst: smtp_command_parse_identifier
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:341,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:358,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:361,1
    - Dst: smtp_command_parse_parameters
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:371,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:382,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:385,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:397,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:403,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:420,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:424,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 77
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 311
    functionDepth: 6
    functionLinenumber: 311
    functionLinenumberEnd: 425
    functionName: smtp_command_parse_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - smtp_command_parser_restart
    - smtp_command_parser_error
    - _chr_sanitize
    - smtp_command_parse_identifier
    - smtp_command_parse_parameters
    linkageType: ''
    returnType: int
    signature: int smtp_command_parse_line(struct smtp_command_parser *parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:433,1
    - Dst: smtp_command_parse_line
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:438,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:439,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:442,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:444,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:447,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:452,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:456,1
    - Dst: i_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:458,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 427
    functionDepth: 7
    functionLinenumber: 427
    functionLinenumberEnd: 462
    functionName: smtp_command_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - i_stream_get_disconnect_reason
    - smtp_command_parser_error
    - i_stream_skip
    - i_assert
    - i_stream_read_data
    - smtp_command_parse_line
    linkageType: ''
    returnType: int
    signature: int smtp_command_parse(struct smtp_command_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 464
    functionDepth: 2
    functionLinenumber: 464
    functionLinenumberEnd: 469
    functionName: smtp_command_parser_pending_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_have_bytes_left
    linkageType: ''
    returnType: bool
    signature: bool smtp_command_parser_pending_data(struct smtp_command_parser *parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:483,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:487,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:488,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:494,1
    - Dst: smtp_command_parser_error
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:499,1
    - Dst: i_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:501,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:505,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 471
    functionDepth: 5
    functionLinenumber: 471
    functionLinenumberEnd: 507
    functionName: smtp_command_parse_finish_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_get_disconnect_reason
    - smtp_command_parser_error
    - i_stream_skip
    - i_stream_unref
    - i_stream_read_data
    linkageType: ''
    returnType: int
    signature: int smtp_command_parse_finish_data(struct smtp_command_parser *parser)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:517,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:527,1
    - Dst: smtp_command_parse_finish_data
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:531,1
    - Dst: smtp_command_parse
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:543,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:553,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 6
    argNames:
    - parser
    - only_finish_previous
    - cmd_name_r
    - cmd_params_r
    - error_code_r
    - error_r
    argTypes:
    - struct smtp_command_parser*
    - bool
    - char**
    - char**
    - enum smtp_command_parse_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 509
    functionDepth: 8
    functionLinenumber: 509
    functionLinenumberEnd: 558
    functionName: smtp_command_parse_next
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 2
    functionsReached:
    - i_free_and_null
    - i_assert
    - smtp_command_parse_finish_data
    - smtp_command_parse
    linkageType: ''
    returnType: int
    signature: "int smtp_command_parse_next(struct smtp_command_parser *parser,\n\t\t\t
      \   bool only_finish_previous,\n\t\t\t    const char **cmd_name_r, const char
      **cmd_params_r,\n\t\t\t    enum smtp_command_parse_error *error_code_r,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:564,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:567,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:574,1
    - Dst: i_stream_create_min_sized
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:575,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:576,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - parser
    - size
    argTypes:
    - struct smtp_command_parser*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 560
    functionDepth: 7
    functionLinenumber: 560
    functionLinenumberEnd: 580
    functionName: smtp_command_parse_data_with_size
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 1
    functionsReached:
    - i_stream_create_limit
    - i_stream_ref
    - i_stream_create_error_str
    - i_stream_unref
    - i_stream_create_min_sized
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\nsmtp_command_parse_data_with_size(struct smtp_command_parser
      *parser,\n\t\t\t\t  uoff_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:586,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:588,1
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:591,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:593,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:596,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_command_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 582
    functionDepth: 11
    functionLinenumber: 582
    functionLinenumberEnd: 602
    functionName: smtp_command_parse_data_with_dot
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 1
    functionsReached:
    - i_stream_create_failure_at
    - t_strdup_printf
    - i_stream_ref
    - i_stream_unref
    - i_stream_create_dot
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      smtp_command_parse_data_with_dot(struct smtp_command_parser *parser)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:610,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:618,1
    - Dst: smtp_command_parse_finish_data
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:622,1
    - Dst: smtp_command_parse
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:631,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-command-parser.c:641,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - parser
    - line_r
    - error_code_r
    - error_r
    argTypes:
    - struct smtp_command_parser*
    - char**
    - enum smtp_command_parse_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 604
    functionDepth: 8
    functionLinenumber: 604
    functionLinenumberEnd: 645
    functionName: smtp_command_parse_auth_response
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command-parser.c
    functionUses: 3
    functionsReached:
    - i_free_and_null
    - i_assert
    - smtp_command_parse_finish_data
    - smtp_command_parse
    linkageType: ''
    returnType: int
    signature: "int smtp_command_parse_auth_response(\n\tstruct smtp_command_parser
      *parser, const char **line_r,\n\tenum smtp_command_parse_error *error_code_r,
      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:32,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:33,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:37,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:42,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:46,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:50,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:54,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:55,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:59,1
    - Dst: smtp_proxy_data_merge
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:80,1
    - Dst: smtp_client_connection_list_init
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:82,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:86,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:87,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 27
    functionDepth: 5
    functionLinenumber: 27
    functionLinenumberEnd: 91
    functionName: smtp_client_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client.c
    functionUses: 3
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_strdup_empty
    - p_new
    - pool_ref
    - smtp_proxy_data_merge
    - p_strarray_dup
    - event_create
    - event_set_forced_debug
    - smtp_client_connection_list_init
    - event_add_category
    linkageType: ''
    returnType: struct smtp_client
    signature: struct smtp_client *smtp_client_init(const struct smtp_client_settings
      *set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:97,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:99,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:101,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:102,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct smtp_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 93
    functionDepth: 4
    functionLinenumber: 93
    functionLinenumberEnd: 105
    functionName: smtp_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client.c
    functionUses: 2
    functionsReached:
    - event_unref
    - ssl_iostream_context_unref
    - settings_free
    - pool_unref
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void smtp_client_deinit(struct smtp_client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_switch_ioloop
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct smtp_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 118
    functionName: smtp_client_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void smtp_client_switch_ioloop(struct smtp_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_client_context_cache_get
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:129,1
    - Dst: ssl_client_settings_get
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:134,1
    - Dst: ssl_client_settings_to_iostream_set
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:136,1
    - Dst: ssl_iostream_client_context_cache_get
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:138,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:140,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-client.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct smtp_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 120
    functionDepth: 4
    functionLinenumber: 120
    functionLinenumberEnd: 143
    functionName: smtp_client_init_ssl_ctx
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_client_context_cache_get
    - ssl_client_settings_to_iostream_set
    - ssl_client_settings_get
    - settings_free
    linkageType: ''
    returnType: int
    signature: int smtp_client_init_ssl_ctx(struct smtp_client *client, const char
      **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_atext
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:68,1
    - Dst: smtp_char_is_atext
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:73,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:77,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - parser
    - value_r
    argTypes:
    - struct smtp_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 79
    functionName: smtp_parser_parse_dot_string
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_atext
    - t_strndup
    linkageType: ''
    returnType: int
    signature: int smtp_parser_parse_dot_string(struct smtp_parser *parser, const
      char **value_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_parse_quoted_string
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:86,1
    - Dst: smtp_parser_parse_dot_string
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - parser
    - localpart_r
    argTypes:
    - struct smtp_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 90
    functionName: smtp_parse_localpart
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - smtp_parser_parse_quoted_string
    - smtp_parser_parse_dot_string
    linkageType: ''
    returnType: int
    signature: int smtp_parse_localpart(struct smtp_parser *parser, const char **localpart_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:104,1
    - Dst: smtp_address_parse_any
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - aparser
    - flags
    argTypes:
    - struct smtp_address_parser*
    - enum smtp_address_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 118
    functionName: smtp_address_parser_find_end
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - HAS_ALL_BITS
    - i_assert
    - smtp_address_parse_any
    linkageType: ''
    returnType: int
    signature: "int smtp_address_parser_find_end(struct smtp_address_parser *aparser,\n\t\t\t
      \    enum smtp_address_parse_flags flags)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parse_localpart
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:136,1
    - Dst: smtp_address_parser_find_end
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:140,1
    - Dst: smtp_char_is_qtext
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:151,1
    - Dst: smtp_char_is_qpair
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:152,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:160,1
    - Dst: smtp_parser_parse_domain
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:180,1
    - Dst: smtp_parser_parse_address_literal
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:181,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 44
    argCount: 2
    argNames:
    - aparser
    - flags
    argTypes:
    - struct smtp_address_parser*
    - enum smtp_address_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 120
    functionDepth: 5
    functionLinenumber: 120
    functionLinenumberEnd: 193
    functionName: smtp_parse_mailbox
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - p_strdup_until
    - smtp_char_is_qpair
    - smtp_parse_localpart
    - smtp_address_parser_find_end
    - smtp_parser_parse_domain
    - smtp_char_is_qtext
    - smtp_parser_parse_address_literal
    linkageType: ''
    returnType: int
    signature: "int smtp_parse_mailbox(struct smtp_address_parser *aparser,\n\t\t
      \  enum smtp_address_parse_flags flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_parse_domain
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:209,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 235
    functionName: smtp_parse_source_route
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - smtp_parser_parse_domain
    linkageType: ''
    returnType: int
    signature: int smtp_parse_source_route(struct smtp_parser *parser)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parse_source_route
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:256,1
    - Dst: smtp_parse_mailbox
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:260,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 2
    argNames:
    - aparser
    - flags
    argTypes:
    - struct smtp_address_parser*
    - enum smtp_address_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 237
    functionDepth: 6
    functionLinenumber: 237
    functionLinenumberEnd: 292
    functionName: smtp_parse_path
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - smtp_parse_mailbox
    - smtp_parse_source_route
    linkageType: ''
    returnType: int
    signature: "int smtp_parse_path(struct smtp_address_parser *aparser,\n\t\tenum
      smtp_address_parse_flags flags)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:318,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:322,1
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:323,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:323,1
    - Dst: smtp_parse_mailbox
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:327,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:341,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 5
    argNames:
    - pool
    - mailbox
    - flags
    - address_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - enum smtp_address_parse_flags
    - struct smtp_address**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 294
    functionDepth: 6
    functionLinenumber: 294
    functionLinenumberEnd: 343
    functionName: smtp_address_parse_mailbox
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 3
    functionsReached:
    - i_zero
    - p_new
    - smtp_parser_init
    - smtp_parse_mailbox
    - smtp_address_clone
    - pool_datastack_create
    linkageType: ''
    returnType: int
    signature: "int smtp_address_parse_mailbox(pool_t pool, const char *mailbox,\n\t\t\t
      \      enum smtp_address_parse_flags flags,\n\t\t\t       struct smtp_address
      **address_r,\n\t\t\t       const char **error_r)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:407,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:413,1
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:414,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:414,1
    - Dst: smtp_parse_path
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:418,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:427,1
    - Dst: smtp_address_parse_path_broken
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:445,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:451,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:455,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:458,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:464,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 61
    argCount: 6
    argNames:
    - pool
    - path
    - flags
    - address_r
    - error_r
    - endp_r
    argTypes:
    - pool_t
    - char*
    - enum smtp_address_parse_flags
    - struct smtp_address**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 384
    functionDepth: 7
    functionLinenumber: 384
    functionLinenumberEnd: 466
    functionName: smtp_address_parse_path_full
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 1
    functionsReached:
    - i_zero
    - p_new
    - smtp_parser_init
    - smtp_parse_path
    - smtp_address_parse_path_broken
    - smtp_address_clone
    - pool_datastack_create
    - HAS_NO_BITS
    - t_strdup_until
    - HAS_ALL_BITS
    linkageType: ''
    returnType: int
    signature: "int smtp_address_parse_path_full(pool_t pool, const char *path,\n\t\t\t\t
      enum smtp_address_parse_flags flags,\n\t\t\t\t struct smtp_address **address_r,\n\t\t\t\t
      const char **error_r, const char **endp_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_parse_path_full
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - pool
    - path
    - flags
    - address_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - enum smtp_address_parse_flags
    - struct smtp_address**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 468
    functionDepth: 8
    functionLinenumber: 468
    functionLinenumberEnd: 475
    functionName: smtp_address_parse_path
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 5
    functionsReached:
    - smtp_address_parse_path_full
    linkageType: ''
    returnType: int
    signature: "int smtp_address_parse_path(pool_t pool, const char *path,\n\t\t\t
      \   enum smtp_address_parse_flags flags,\n\t\t\t    struct smtp_address **address_r,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:499,1
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:500,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:500,1
    - Dst: smtp_parse_mailbox
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:504,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:518,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 4
    argNames:
    - pool
    - username
    - address_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - struct smtp_address**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 477
    functionDepth: 6
    functionLinenumber: 477
    functionLinenumberEnd: 520
    functionName: smtp_address_parse_username
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 5
    functionsReached:
    - i_zero
    - smtp_parser_init
    - smtp_parse_mailbox
    - smtp_address_clone
    - pool_datastack_create
    linkageType: ''
    returnType: int
    signature: "int smtp_address_parse_username(pool_t pool, const char *username,\n\t\t\t\tstruct
      smtp_address **address_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:531,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:531,1
    - Dst: strcspn
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:539,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:545,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:551,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:553,1
    - Dst: smtp_address_init
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:559,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:561,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:564,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:564,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 6
    argNames:
    - pool
    - delimiters
    - address
    - username_r
    - delim_r
    - detail_r
    argTypes:
    - pool_t
    - char*
    - struct smtp_address*
    - char**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 522
    functionDepth: 8
    functionLinenumber: 522
    functionLinenumberEnd: 567
    functionName: smtp_address_detail_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_strdup_until
    - p_strdup
    - smtp_address_init
    - strcspn
    - smtp_address_encode
    - p_strconcat
    - i_assert
    - smtp_address_isnull
    linkageType: ''
    returnType: void
    signature: "void smtp_address_detail_parse(pool_t pool, const char *delimiters,\n\t\t\t
      \      struct smtp_address *address,\n\t\t\t       const char **username_r,
      char *delim_r,\n\t\t\t       const char **detail_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_detail_parse
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:574,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - delimiters
    - address
    - username_r
    - delim_r
    - detail_r
    argTypes:
    - char*
    - struct smtp_address*
    - char**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 569
    functionDepth: 9
    functionLinenumber: 569
    functionLinenumberEnd: 576
    functionName: smtp_address_detail_parse_temp
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 3
    functionsReached:
    - pool_datastack_create
    - smtp_address_detail_parse
    linkageType: ''
    returnType: void
    signature: "void smtp_address_detail_parse_temp(const char *delimiters,\n\t\t\t\t
      \   struct smtp_address *address,\n\t\t\t\t    const char **username_r, char
      *delim_r,\n\t\t\t\t    const char **detail_r)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:589,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:618,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:627,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:643,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 61
    argCount: 3
    argNames:
    - in
    - address_r
    - endp_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 578
    functionDepth: 7
    functionLinenumber: 578
    functionLinenumberEnd: 647
    functionName: smtp_address_parse_any
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 2
    functionsReached:
    - strlen
    - t_strdup_until
    linkageType: ''
    returnType: int
    signature: "int smtp_address_parse_any(const char *in, const char **address_r,\n\t\t\t
      \  const char **endp_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:711,1
    - Dst: smtp_address_write
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:712,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - out
    - address
    argTypes:
    - string_t*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 714
    functionName: smtp_address_write_path
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - smtp_address_write
    linkageType: ''
    returnType: void
    signature: void smtp_address_write_path(string_t *out, const struct smtp_address
      *address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:718,1
    - Dst: smtp_address_write
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:719,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - address
    argTypes:
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 716
    functionDepth: 4
    functionLinenumber: 716
    functionLinenumberEnd: 721
    functionName: smtp_address_encode
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 26
    functionsReached:
    - str_c
    - t_str_new
    - smtp_address_write
    linkageType: ''
    returnType: char
    signature: char *smtp_address_encode(const struct smtp_address *address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:725,1
    - Dst: smtp_address_write_path
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:726,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - address
    argTypes:
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 723
    functionDepth: 4
    functionLinenumber: 723
    functionLinenumberEnd: 728
    functionName: smtp_address_encode_path
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 2
    functionsReached:
    - smtp_address_write_path
    - str_c
    - t_str_new
    linkageType: ''
    returnType: char
    signature: char *smtp_address_encode_path(const struct smtp_address *address)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:735,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - address
    argTypes:
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 730
    functionDepth: 5
    functionLinenumber: 730
    functionLinenumberEnd: 736
    functionName: smtp_address_encode_raw
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 2
    functionsReached:
    - smtp_address_encode
    linkageType: ''
    returnType: char
    signature: char *smtp_address_encode_raw(const struct smtp_address *address)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:741,1
    - Dst: smtp_address_encode_path
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:743,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - address
    argTypes:
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 738
    functionDepth: 8
    functionLinenumber: 738
    functionLinenumberEnd: 744
    functionName: smtp_address_encode_raw_path
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - smtp_address_encode_path
    linkageType: ''
    returnType: char
    signature: char *smtp_address_encode_raw_path(const struct smtp_address *address)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:753,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - address
    - localpart
    - domain
    argTypes:
    - struct smtp_address*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 760
    functionName: smtp_address_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 1
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void smtp_address_init(struct smtp_address *address,\n\t\t       const
      char *localpart, const char *domain)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:767,1
    - Dst: smtp_char_is_qpair
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:775,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - address
    - msg_addr
    argTypes:
    - struct smtp_address*
    - struct message_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 762
    functionDepth: 1
    functionLinenumber: 762
    functionLinenumberEnd: 783
    functionName: smtp_address_init_from_msg
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_char_is_qpair
    linkageType: ''
    returnType: int
    signature: "int smtp_address_init_from_msg(struct smtp_address *address,\n\t\t\t
      \      const struct message_address *msg_addr)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:798,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:799,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:800,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:803,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:804,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:807,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:808,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:811,1
    - Dst: data::data
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:812,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:814,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:815,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:818,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:819,1
    - Dst: PTR_OFFSET
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:822,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:823,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - pool
    - src
    argTypes:
    - pool_t
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 785
    functionDepth: 3
    functionLinenumber: 785
    functionLinenumberEnd: 830
    functionName: smtp_address_clone
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 9
    functionsReached:
    - memcpy
    - PTR_OFFSET
    - strlen
    - MALLOC_ADD
    - data::data
    - smtp_address_isnull
    - p_malloc
    linkageType: ''
    returnType: struct smtp_address
    signature: 'struct smtp_address *

      smtp_address_clone(pool_t pool, const struct smtp_address *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_init
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:837,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - pool
    - localpart
    - domain
    argTypes:
    - pool_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 832
    functionDepth: 4
    functionLinenumber: 832
    functionLinenumberEnd: 839
    functionName: smtp_address_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - smtp_address_init
    - smtp_address_clone
    linkageType: ''
    returnType: struct smtp_address
    signature: 'struct smtp_address *

      smtp_address_create(pool_t pool, const char *localpart, const char *domain)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_init_from_msg
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:848,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - pool
    - msg_addr
    - address_r
    argTypes:
    - pool_t
    - struct message_address*
    - struct smtp_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 842
    functionDepth: 4
    functionLinenumber: 842
    functionLinenumberEnd: 854
    functionName: smtp_address_create_from_msg
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 1
    functionsReached:
    - smtp_address_init_from_msg
    - smtp_address_clone
    linkageType: ''
    returnType: int
    signature: "int smtp_address_create_from_msg(pool_t pool,\n\t\t\t\t const struct
      message_address *msg_addr,\n\t\t\t\t struct smtp_address **address_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_new::t_new
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:863,1
    - Dst: t_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:864,1
    - Dst: t_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:865,1
    - Dst: t_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:866,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 856
    functionDepth: 3
    functionLinenumber: 856
    functionLinenumberEnd: 868
    functionName: smtp_address_clone_temp
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - t_strdup_empty
    - t_new::t_new
    linkageType: ''
    returnType: struct smtp_address
    signature: struct smtp_address *smtp_address_clone_temp(const struct smtp_address
      *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_init
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:875,1
    - Dst: smtp_address_clone_temp
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - localpart
    - domain
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 870
    functionDepth: 4
    functionLinenumber: 870
    functionLinenumberEnd: 877
    functionName: smtp_address_create_temp
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 1
    functionsReached:
    - smtp_address_init
    - smtp_address_clone_temp
    linkageType: ''
    returnType: struct smtp_address
    signature: 'struct smtp_address *

      smtp_address_create_temp(const char *localpart, const char *domain)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_init_from_msg
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:884,1
    - Dst: smtp_address_clone_temp
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:888,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - msg_addr
    - address_r
    argTypes:
    - struct message_address*
    - struct smtp_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 879
    functionDepth: 4
    functionLinenumber: 879
    functionLinenumberEnd: 890
    functionName: smtp_address_create_from_msg_temp
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 1
    functionsReached:
    - smtp_address_init_from_msg
    - smtp_address_clone_temp
    linkageType: ''
    returnType: int
    signature: "int smtp_address_create_from_msg_temp(const struct message_address
      *msg_addr,\n\t\t\t\t       struct smtp_address **address_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:899,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:899,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:901,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:902,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - pool
    - address
    - detail
    - delim_c
    argTypes:
    - pool_t
    - struct smtp_address*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 892
    functionDepth: 8
    functionLinenumber: 892
    functionLinenumberEnd: 907
    functionName: smtp_address_add_detail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - p_strdup_empty
    - p_new
    - p_strconcat
    - i_assert
    - smtp_address_isnull
    linkageType: ''
    returnType: struct smtp_address
    signature: "struct smtp_address *\nsmtp_address_add_detail(pool_t pool, const
      struct smtp_address *address,\n\t\t\tconst char *detail, char delim_c)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:916,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:916,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:918,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:919,1
    - Dst: t_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - address
    - detail
    - delim_c
    argTypes:
    - struct smtp_address*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 909
    functionDepth: 8
    functionLinenumber: 909
    functionLinenumberEnd: 924
    functionName: smtp_address_add_detail_temp
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 1
    functionsReached:
    - t_new
    - t_strdup_empty
    - i_assert
    - t_strconcat
    - smtp_address_isnull
    linkageType: ''
    returnType: struct smtp_address
    signature: "struct smtp_address *\nsmtp_address_add_detail_temp(const struct smtp_address
      *address,\n\t\t\t     const char *detail, char delim_c)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:932,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:933,1
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:938,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - address1
    - address2
    argTypes:
    - struct smtp_address*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 941
    functionName: smtp_address_cmp
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - null_strcmp
    - smtp_address_isnull
    - null_strcasecmp
    linkageType: ''
    returnType: int
    signature: "int smtp_address_cmp(const struct smtp_address *address1,\n\t\t     const
      struct smtp_address *address2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:949,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:950,1
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:955,1
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-address.c:957,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - address1
    - address2
    argTypes:
    - struct smtp_address*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 958
    functionName: smtp_address_cmp_icase
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.c
    functionUses: 0
    functionsReached:
    - smtp_address_isnull
    - null_strcasecmp
    linkageType: ''
    returnType: int
    signature: "int smtp_address_cmp_icase(const struct smtp_address *address1,\n\t\t\t
      \ const struct smtp_address *address2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:18,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:19,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:20,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:21,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:22,1
    - Dst: smtp_address_encode_raw
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:23,1
    - Dst: smtp_params_mail_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:24,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:25,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 13
    functionDepth: 11
    functionLinenumber: 13
    functionLinenumberEnd: 27
    functionName: smtp_server_transaction_update_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_params_mail_add_to_event
    - event_set_append_log_prefix
    - smtp_address_encode_raw
    - t_strdup_printf
    - smtp_address_encode
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void smtp_server_transaction_update_event(struct smtp_server_transaction
      *trans)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:37,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:38,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:46,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:51,1
    - Dst: smtp_params_mail_copy
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:52,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:56,1
    - Dst: smtp_server_transaction_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:61,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:64,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:67,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:67,1
    - Dst: struct smtp_server_connection*::callbacks::conn_trans_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - conn
    - mail_data
    argTypes:
    - struct smtp_server_connection*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 29
    functionDepth: 12
    functionLinenumber: 29
    functionLinenumberEnd: 74
    functionName: smtp_server_transaction_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - struct smtp_server_connection*::callbacks::conn_trans_start
    - e_debug
    - smtp_params_mail_copy
    - smtp_address_clone
    - struct event_passthrough*::event
    - event_create_passthrough
    - smtp_server_transaction_update_event
    - p_strdup_printf
    linkageType: ''
    returnType: struct smtp_server_transaction
    signature: "struct smtp_server_transaction *\nsmtp_server_transaction_create(struct
      smtp_server_connection *conn,\n\t\t\t       const struct smtp_server_cmd_mail
      *mail_data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct smtp_server_connection*::callbacks::conn_trans_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:88,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:91,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:92,1
    - Dst: smtp_server_recipient_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:99,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:103,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:110,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:111,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:112,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:114,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:114,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:117,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - _trans
    argTypes:
    - struct smtp_server_transaction**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 76
    functionDepth: 15
    functionLinenumber: 76
    functionLinenumberEnd: 119
    functionName: smtp_server_transaction_free
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 0
    functionsReached:
    - struct smtp_server_connection*::callbacks::conn_trans_free
    - smtp_server_recipient_destroy
    - event_unref
    - array_get_modifiable
    - e_debug
    - pool_unref
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - event_create_passthrough
    - array_is_created
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: void smtp_server_transaction_free(struct smtp_server_transaction **_trans)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:128,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:128,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:129,1
    - Dst: smtp_address_equals
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:132,1
    - Dst: smtp_params_rcpt_equal
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - trans
    - rcpt
    argTypes:
    - struct smtp_server_transaction*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 137
    functionName: smtp_server_transaction_find_rcpt_duplicate
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 1
    functionsReached:
    - smtp_address_equals
    - array_foreach_elem
    - smtp_params_rcpt_equal
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: struct smtp_server_recipient
    signature: "struct smtp_server_recipient *\nsmtp_server_transaction_find_rcpt_duplicate(\n\tstruct
      smtp_server_transaction *trans,\n\tstruct smtp_server_recipient *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:142,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:143,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:146,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - trans
    - rcpt
    argTypes:
    - struct smtp_server_transaction*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 149
    functionName: smtp_server_transaction_add_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - array_count
    - p_array_init
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void smtp_server_transaction_add_rcpt(struct smtp_server_transaction
      *trans,\n\t\t\t\t      struct smtp_server_recipient *rcpt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:153,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: smtp_server_transaction_has_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_transaction_has_rcpt(struct smtp_server_transaction
      *trans)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:160,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: smtp_server_transaction_rcpt_count
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int smtp_server_transaction_rcpt_count(struct smtp_server_transaction
      *trans)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:172,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:174,1
    - Dst: smtp_server_recipient_data_command
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - trans
    - cmd
    argTypes:
    - struct smtp_server_transaction*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 176
    functionName: smtp_server_transaction_data_command
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 3
    functionsReached:
    - array_is_created
    - smtp_server_recipient_data_command
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void smtp_server_transaction_data_command(struct smtp_server_transaction
      *trans,\n\t\t\t\t\t  struct smtp_server_cmd_ctx *cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - trans
    - data_size
    argTypes:
    - struct smtp_server_transaction*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 4
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: smtp_server_transaction_received
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 1
    functionsReached:
    - event_add_int
    linkageType: ''
    returnType: void
    signature: "void smtp_server_transaction_received(struct smtp_server_transaction
      *trans,\n\t\t\t\t      uoff_t data_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:191,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:195,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:196,1
    - Dst: smtp_server_recipient_reset
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:203,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:206,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:214,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - trans
    argTypes:
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 215
    functionName: smtp_server_transaction_reset
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_get
    - smtp_server_recipient_reset
    - struct event_passthrough*::event
    - event_create_passthrough
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_server_transaction_reset(struct smtp_server_transaction *trans)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:226,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:227,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:231,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:232,1
    - Dst: smtp_server_command_get_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:243,1
    - Dst: smtp_server_command_get_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:245,1
    - Dst: smtp_server_recipient_finished
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:246,1
    - Dst: smtp_server_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:248,1
    - Dst: smtp_server_command_get_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:259,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:263,1
    - Dst: smtp_server_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:270,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:272,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - trans
    - cmd
    argTypes:
    - struct smtp_server_transaction*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 273
    functionName: smtp_server_transaction_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 1
    functionsReached:
    - smtp_server_recipient_finished
    - e_debug
    - array_get
    - smtp_server_reply_add_to_event
    - smtp_server_command_get_reply
    - event_create_passthrough
    - struct event_passthrough*::event
    - smtp_server_reply_is_success
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_transaction_finished(struct smtp_server_transaction
      *trans,\n\t\t\t\t      struct smtp_server_cmd_ctx *cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:284,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:285,1
    - Dst: smtp_server_reply_index
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:287,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - trans
    - data_cmd
    - status
    - enh_code
    - fmt
    - args
    argTypes:
    - struct smtp_server_transaction*
    - struct smtp_server_cmd_ctx*
    - unsigned int
    - char*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 275
    functionDepth: 11
    functionLinenumber: 275
    functionLinenumberEnd: 291
    functionName: smtp_server_transaction_fail_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - array_get
    - t_strdup_vprintf
    - smtp_server_reply_index
    linkageType: ''
    returnType: void
    signature: "void smtp_server_transaction_fail_data(struct smtp_server_transaction
      *trans,\n\tstruct smtp_server_cmd_ctx *data_cmd,\n\tunsigned int status, const
      char *enh_code,\n\tconst char *fmt, va_list args)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:301,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:303,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:309,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:312,1
    - Dst: smtp_server_recipient_get_original
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:313,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:319,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:321,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:323,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:326,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:328,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:329,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:330,1
    - Dst: smtp_server_connection_get_security_string
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:333,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:335,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:336,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:337,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:340,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:341,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:342,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:343,1
    - Dst: smtp_server_connection_get_protocol_name
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:343,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:345,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:346,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:348,1
    - Dst: smtp_address_write
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:349,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:350,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:353,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:354,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:355,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:357,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:359,1
    - Dst: message_date_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:359,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-smtp/smtp-server-transaction.c:360,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 3
    argNames:
    - str
    - trans
    - rcpt_to_address
    argTypes:
    - string_t*
    - struct smtp_server_transaction*
    - enum smtp_server_trace_rcpt_to_address
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 293
    functionDepth: 6
    functionLinenumber: 293
    functionLinenumberEnd: 361
    functionName: smtp_server_transaction_write_trace_record
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-transaction.c
    functionUses: 2
    functionsReached:
    - str_printfa
    - smtp_server_recipient_get_original
    - smtp_server_connection_get_protocol_name
    - smtp_address_write
    - message_date_create
    - smtp_server_connection_get_security_string
    - smtp_address_encode
    - array_count
    - net_ip2addr
    - array_front
    - str_append
    linkageType: ''
    returnType: void
    signature: "void smtp_server_transaction_write_trace_record(\n\tstring_t *str,
      struct smtp_server_transaction *trans,\n\tenum smtp_server_trace_rcpt_to_address
      rcpt_to_address)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_pending_command_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-private.h:277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 278
    functionName: smtp_server_command_is_complete
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-private.h
    functionUses: 0
    functionsReached:
    - smtp_server_connection_pending_command_data
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_is_complete(struct smtp_server_command *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - conn
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 314
    functionName: smtp_server_connection_input_capture
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_server_connection_input_capture(conn, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - params
    argTypes:
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 228
    functionName: smtp_params_rcpt_has_orcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_params_rcpt_has_orcpt(const struct smtp_params_rcpt *params)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: SMTP_REPLY_ENH_CODE
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SMTP_REPLY_ENH_CODE(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: smtp_reply_has_enhanced_code
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_reply_has_enhanced_code(const struct smtp_reply *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: smtp_reply_is_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_reply_is_success(const struct smtp_reply *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: smtp_reply_is_remote
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_reply_is_remote(const struct smtp_reply *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: smtp_reply_is_temp_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_reply_is_temp_fail(const struct smtp_reply *reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - reply
    - status
    - enhanced_code
    argTypes:
    - struct smtp_reply*
    - unsigned int
    - struct smtp_reply_enhanced_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 59
    functionName: smtp_reply_code_equals
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_reply_code_equals(const struct smtp_reply *reply, unsigned
      int status,\n\t\t       const struct smtp_reply_enhanced_code enhanced_code)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:228,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:228,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:232,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:232,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:234,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:239,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:239,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:243,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:243,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_mail*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 222
    functionDepth: 11
    functionLinenumber: 222
    functionLinenumberEnd: 248
    functionName: test_smtp_mail_params_auth
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void test_smtp_mail_params_auth(const struct smtp_params_mail *test,\n\t\t\t
      \  const struct smtp_params_mail *parsed)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:273,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:276,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:276,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:280,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_mail*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 250
    functionDepth: 11
    functionLinenumber: 250
    functionLinenumberEnd: 281
    functionName: test_smtp_mail_params_body
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out
    - t_strdup_printf
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void test_smtp_mail_params_body(const struct smtp_params_mail *test,\n\t\t\t
      \  const struct smtp_params_mail *parsed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:288,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:288,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:292,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:292,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_mail*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 283
    functionDepth: 11
    functionLinenumber: 283
    functionLinenumberEnd: 296
    functionName: test_smtp_mail_params_envid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void test_smtp_mail_params_envid(const struct smtp_params_mail *test,\n\t\t\t
      \   const struct smtp_params_mail *parsed)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:315,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:318,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:318,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_mail*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 298
    functionDepth: 11
    functionLinenumber: 298
    functionLinenumberEnd: 320
    functionName: test_smtp_mail_params_ret
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - test_out
    - t_strdup_printf
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void test_smtp_mail_params_ret(const struct smtp_params_mail *test,\n\t\t\t
      \ const struct smtp_params_mail *parsed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:326,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_mail*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 322
    functionDepth: 11
    functionLinenumber: 322
    functionLinenumberEnd: 328
    functionName: test_smtp_mail_params_size
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - test_out
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void test_smtp_mail_params_size(const struct smtp_params_mail *test,\n\t\t\t
      \  const struct smtp_params_mail *parsed)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:337,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:338,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:339,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:339,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:340,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:341,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:342,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:343,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:347,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:348,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:349,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:353,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:354,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:355,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:355,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:356,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:357,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:361,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:362,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:363,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:365,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:365,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:367,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:370,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 18
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_mail*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 330
    functionDepth: 11
    functionLinenumber: 330
    functionLinenumberEnd: 372
    functionName: test_smtp_mail_params_extensions
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_idx
    - t_strdup_printf
    - test_out
    - array_count
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void test_smtp_mail_params_extensions(const struct smtp_params_mail
      *test,\n\t\t\t\t const struct smtp_params_mail *parsed)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_mail_parse
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:386,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:386,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:390,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:390,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:391,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:391,1
    - Dst: test_smtp_mail_params_auth
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:399,1
    - Dst: test_smtp_mail_params_body
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:403,1
    - Dst: test_smtp_mail_params_envid
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:406,1
    - Dst: test_smtp_mail_params_ret
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:409,1
    - Dst: test_smtp_mail_params_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:412,1
    - Dst: test_smtp_mail_params_extensions
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:415,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:417,1
    - Dst: smtp_params_mail_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:418,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:422,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:422,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:423,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:424,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:424,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:426,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 374
    functionDepth: 12
    functionLinenumber: 374
    functionLinenumberEnd: 427
    functionName: test_smtp_mail_params_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_smtp_mail_params_body
    - test_out_reason
    - smtp_params_mail_write
    - test_smtp_mail_params_extensions
    - t_strdup_printf
    - smtp_params_mail_parse
    - test_out
    - pool_datastack_create
    - test_end
    - test_smtp_mail_params_size
    - test_smtp_mail_params_auth
    - test_smtp_mail_params_ret
    - test_smtp_mail_params_envid
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_mail_params_parse_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_mail_parse
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:508,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:508,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:513,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:513,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:514,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:514,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 496
    functionDepth: 11
    functionLinenumber: 496
    functionLinenumberEnd: 517
    functionName: test_smtp_mail_params_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - t_strdup_printf
    - smtp_params_mail_parse
    - test_end
    - pool_datastack_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_mail_params_parse_invalid(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:656,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:663,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:663,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:668,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:668,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:670,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:675,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:675,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:680,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:680,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:682,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_rcpt*
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 651
    functionDepth: 11
    functionLinenumber: 651
    functionLinenumberEnd: 685
    functionName: test_smtp_rcpt_params_orcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void test_smtp_rcpt_params_orcpt(const struct smtp_params_rcpt *test,\n\t\t\t
      \   const struct smtp_params_rcpt *parsed)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:694,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:696,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:698,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:699,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:700,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:701,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:704,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:706,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:707,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:708,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:711,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:712,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:713,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:717,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:717,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:717,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_rcpt*
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 688
    functionDepth: 11
    functionLinenumber: 688
    functionLinenumberEnd: 719
    functionName: test_smtp_rcpt_params_notify
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - t_strdup_printf
    - test_out
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void test_smtp_rcpt_params_notify(const struct smtp_params_rcpt *test,\n\t\t\t
      \    const struct smtp_params_rcpt *parsed)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:728,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:729,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:730,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:730,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:731,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:732,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:733,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:734,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:738,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:739,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:740,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:744,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:745,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:746,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:746,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:747,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:748,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:752,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:753,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:754,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:756,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:756,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:758,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:761,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 18
    argCount: 2
    argNames:
    - test
    - parsed
    argTypes:
    - struct smtp_params_rcpt*
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 721
    functionDepth: 11
    functionLinenumber: 721
    functionLinenumberEnd: 763
    functionName: test_smtp_rcpt_params_extensions
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - array_idx
    - t_strdup_printf
    - test_out
    - array_count
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void test_smtp_rcpt_params_extensions(const struct smtp_params_rcpt
      *test,\n\t\t\t\t const struct smtp_params_rcpt *parsed)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_rcpt_parse
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:777,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:777,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:782,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:782,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:783,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:783,1
    - Dst: test_smtp_rcpt_params_orcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:791,1
    - Dst: test_smtp_rcpt_params_notify
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:794,1
    - Dst: test_smtp_rcpt_params_extensions
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:797,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:799,1
    - Dst: smtp_params_rcpt_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:800,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:804,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:804,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:805,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:806,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:806,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:808,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 765
    functionDepth: 12
    functionLinenumber: 765
    functionLinenumberEnd: 809
    functionName: test_smtp_rcpt_params_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_out_reason
    - test_smtp_rcpt_params_notify
    - smtp_params_rcpt_write
    - t_strdup_printf
    - test_smtp_rcpt_params_orcpt
    - smtp_params_rcpt_parse
    - test_smtp_rcpt_params_extensions
    - test_out
    - pool_datastack_create
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_rcpt_params_parse_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_rcpt_parse
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:872,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:872,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:877,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:877,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:878,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:878,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:880,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 860
    functionDepth: 11
    functionLinenumber: 860
    functionLinenumberEnd: 881
    functionName: test_smtp_rcpt_params_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - t_strdup_printf
    - smtp_params_rcpt_parse
    - test_end
    - pool_datastack_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_rcpt_params_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-params.c:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 884
    functionDepth: 7
    functionLinenumber: 884
    functionLinenumberEnd: 894
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-params.c
    functionUses: 22
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_string_parse
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:63,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:65,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:65,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:66,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:66,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:68,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:70,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:74,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:74,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:75,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:77,1
    - Dst: smtp_string_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:78,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:81,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:81,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:82,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:83,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:83,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:85,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 53
    functionDepth: 11
    functionLinenumber: 53
    functionLinenumberEnd: 86
    functionName: test_smtp_string_parse_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-syntax.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - smtp_string_parse
    - test_out_reason
    - smtp_string_write
    - t_strdup_printf
    - test_has_failed
    - test_end
    - test_out
    - null_strcmp
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_string_parse_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_string_parse
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:129,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:131,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:131,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:132,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:132,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 119
    functionDepth: 11
    functionLinenumber: 119
    functionLinenumberEnd: 135
    functionName: test_smtp_string_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-syntax.c
    functionUses: 0
    functionsReached:
    - smtp_string_parse
    - test_out_reason
    - t_strdup_printf
    - test_end
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_smtp_string_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-syntax.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 7
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-syntax.c
    functionUses: 22
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - limits
    - new_limits
    argTypes:
    - struct smtp_command_limits*
    - struct smtp_command_limits*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: smtp_command_limits_merge
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_command_limits_merge(struct smtp_command_limits *limits,\n\t\t\t
      \ const struct smtp_command_limits *new_limits)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-common.h:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - proto
    argTypes:
    - enum smtp_protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 33
    functionName: smtp_protocol_name
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-common.h
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_protocol_name(enum smtp_protocol proto)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:69,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:70,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:75,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:77,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:79,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:81,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:83,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:84,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - input
    - set
    argTypes:
    - struct smtp_submit_input*
    - struct smtp_submit_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 62
    functionDepth: 5
    functionLinenumber: 62
    functionLinenumberEnd: 88
    functionName: smtp_submit_session_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - pool_alloconly_create
    - event_create
    - p_strdup_empty
    - p_new
    - event_add_category
    linkageType: ''
    returnType: struct smtp_submit_session
    signature: "struct smtp_submit_session *\nsmtp_submit_session_init(const struct
      smtp_submit_input *input,\n\t\t\t const struct smtp_submit_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:96,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _session
    argTypes:
    - struct smtp_submit_session**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 98
    functionName: smtp_submit_session_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - event_unref
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void smtp_submit_session_deinit(struct smtp_submit_session **_session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:107,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:108,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:112,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:113,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:115,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:116,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - session
    - mail_from
    argTypes:
    - struct smtp_submit_session*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 100
    functionDepth: 5
    functionLinenumber: 100
    functionLinenumberEnd: 120
    functionName: smtp_submit_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - p_array_init
    - smtp_address_clone
    - smtp_address_encode
    - event_add_str
    linkageType: ''
    returnType: struct smtp_submit
    signature: "struct smtp_submit *\nsmtp_submit_init(struct smtp_submit_session
      *session,\n\t\t const struct smtp_address *mail_from)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_submit_session_init
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:130,1
    - Dst: smtp_submit_init
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - input
    - set
    - mail_from
    argTypes:
    - struct smtp_submit_input*
    - struct smtp_submit_settings*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 122
    functionDepth: 6
    functionLinenumber: 122
    functionLinenumberEnd: 134
    functionName: smtp_submit_init_simple
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 7
    functionsReached:
    - smtp_submit_init
    - smtp_submit_session_init
    linkageType: ''
    returnType: struct smtp_submit
    signature: "struct smtp_submit *\nsmtp_submit_init_simple(const struct smtp_submit_input
      *input,\n\t\t\tconst struct smtp_submit_settings *set,\n\t\t\tconst struct smtp_address
      *mail_from)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:143,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:145,1
    - Dst: program_client_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:148,1
    - Dst: smtp_client_transaction_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:150,1
    - Dst: smtp_client_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:152,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:154,1
    - Dst: smtp_submit_session_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:157,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:158,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - _subm
    argTypes:
    - struct smtp_submit**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 136
    functionDepth: 11
    functionLinenumber: 136
    functionLinenumberEnd: 160
    functionName: smtp_submit_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 7
    functionsReached:
    - smtp_submit_session_deinit
    - event_unref
    - smtp_client_deinit
    - pool_unref
    - smtp_client_transaction_destroy
    - timeout_remove
    - o_stream_destroy
    - program_client_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void smtp_submit_deinit(struct smtp_submit **_subm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:168,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:168,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:170,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - subm
    - rcpt_to
    argTypes:
    - struct smtp_submit*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 162
    functionDepth: 4
    functionLinenumber: 162
    functionLinenumberEnd: 172
    functionName: smtp_submit_add_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 7
    functionsReached:
    - smtp_address_clone
    - i_assert
    - smtp_address_isnull
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void smtp_submit_add_rcpt(struct smtp_submit *subm,\n\t\t\t  const
      struct smtp_address *rcpt_to)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:176,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:177,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:177,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:179,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:179,1
    - Dst: iostream_temp_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:181,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:182,1
    - Dst: master_service_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:183,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - subm
    argTypes:
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 174
    functionDepth: 8
    functionLinenumber: 174
    functionLinenumberEnd: 186
    functionName: smtp_submit_send
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 7
    functionsReached:
    - master_service_get_name
    - o_stream_set_no_error_handling
    - array_count
    - iostream_temp_create
    - i_assert
    - t_strconcat
    - event_add_int
    linkageType: ''
    returnType: struct ostream
    signature: struct ostream *smtp_submit_send(struct smtp_submit *subm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:195,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:198,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:201,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:201,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:203,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:204,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:204,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:207,1
    - Dst: callback
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - subm
    - status
    - error
    argTypes:
    - struct smtp_submit*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 188
    functionDepth: 6
    functionLinenumber: 188
    functionLinenumberEnd: 214
    functionName: smtp_submit_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_zero
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - callback
    - struct event_passthrough*::add_str
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_submit_callback(struct smtp_submit *subm, int status,\n\t\t
      \    const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_submit_callback
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - subm
    argTypes:
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 7
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: smtp_submit_delayed_error_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - smtp_submit_callback
    linkageType: ''
    returnType: void
    signature: void smtp_submit_delayed_error_callback(struct smtp_submit *subm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:227,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - subm
    - error
    argTypes:
    - struct smtp_submit*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 230
    functionName: smtp_submit_delayed_error
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void smtp_submit_delayed_error(struct smtp_submit *subm,\n\t\t\t  const
      char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:237,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - subm
    - status
    - error
    argTypes:
    - struct smtp_submit*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 245
    functionName: smtp_submit_error
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_assert
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void smtp_submit_error(struct smtp_submit *subm,\n\t\t  int status,
      const char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - subm
    argTypes:
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 253
    functionName: smtp_submit_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void smtp_submit_success(struct smtp_submit *subm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:258,1
    - Dst: smtp_submit_callback
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - subm
    argTypes:
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 255
    functionDepth: 7
    functionLinenumber: 255
    functionLinenumberEnd: 261
    functionName: smtp_submit_send_host_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_assert
    - smtp_submit_callback
    linkageType: ''
    returnType: void
    signature: void smtp_submit_send_host_finished(struct smtp_submit *subm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_is_temp_fail
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:266,1
    - Dst: smtp_reply_is_remote
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 268
    functionName: reply_is_temp_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 1
    functionsReached:
    - smtp_reply_is_remote
    - smtp_reply_is_temp_fail
    linkageType: ''
    returnType: bool
    signature: bool reply_is_temp_fail(const struct smtp_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:274,1
    - Dst: smtp_submit_error
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:275,1
    - Dst: reply_is_temp_fail
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:276,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:277,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - subm
    argTypes:
    - struct smtp_reply*
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 11
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: rcpt_to_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - reply_is_temp_fail
    - t_strdup_printf
    - smtp_submit_error
    - smtp_reply_log
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void rcpt_to_callback(const struct smtp_reply *reply,\n\t\t struct
      smtp_submit *subm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:286,1
    - Dst: smtp_submit_error
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:287,1
    - Dst: reply_is_temp_fail
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:288,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:289,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:290,1
    - Dst: smtp_submit_success
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - reply
    - subm
    argTypes:
    - struct smtp_reply*
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 282
    functionDepth: 11
    functionLinenumber: 282
    functionLinenumberEnd: 295
    functionName: data_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 5
    functionsReached:
    - reply_is_temp_fail
    - smtp_submit_success
    - t_strdup_printf
    - smtp_submit_error
    - smtp_reply_log
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void data_callback(const struct smtp_reply *reply,\n\t      struct
      smtp_submit *subm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 302
    functionName: data_dummy_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void data_dummy_callback(const struct smtp_reply *reply ATTR_UNUSED,\n\t\t
      \   struct smtp_submit *subm ATTR_UNUSED)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: net_str2hostport
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:317,1
    - Dst: smtp_submit_delayed_error
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:319,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:319,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:324,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:333,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:334,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:336,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:340,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:341,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:344,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:346,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:348,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:349,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:356,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:358,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 1
    argNames:
    - subm
    argTypes:
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 304
    functionDepth: 11
    functionLinenumber: 304
    functionLinenumberEnd: 359
    functionName: smtp_submit_send_host
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_client_connection_unref
    - smtp_client_connection_create
    - smtp_client_transaction_send
    - smtp_submit_delayed_error
    - smtp_client_transaction_create
    - array_foreach_elem
    - t_strdup_printf
    - strcasecmp
    - net_str2hostport
    - smtp_client_transaction_add_rcpt
    - i_stream_unref
    - smtp_client_init
    linkageType: ''
    returnType: void
    signature: void smtp_submit_send_host(struct smtp_submit *subm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_submit_callback
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:366,1
    - Dst: smtp_submit_callback
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:371,1
    - Dst: smtp_submit_callback
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:376,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - status
    - subm
    argTypes:
    - enum program_client_exit_status
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 361
    functionDepth: 7
    functionLinenumber: 361
    functionLinenumberEnd: 377
    functionName: smtp_submit_sendmail_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - smtp_submit_callback
    linkageType: ''
    returnType: void
    signature: "void smtp_submit_sendmail_callback(enum program_client_exit_status
      status,\n\t\t\t      struct smtp_submit *subm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:384,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:390,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:391,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:392,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:395,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:397,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:398,1
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:399,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:400,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:401,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:403,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:404,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:405,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:406,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:408,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:410,1
    - Dst: program_client_local_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:414,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:415,1
    - Dst: program_client_set_input
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:417,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:418,1
    - Dst: program_client_run_async
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 1
    argNames:
    - subm
    argTypes:
    - struct smtp_submit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 379
    functionDepth: 9
    functionLinenumber: 379
    functionLinenumberEnd: 423
    functionName: smtp_submit_send_sendmail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_zero
    - program_client_local_create
    - array_push_back
    - array_foreach_elem
    - program_client_run_async
    - program_client_set_input
    - t_strsplit
    - smtp_address_encode
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    - i_assert
    - smtp_address_isnull
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void smtp_submit_send_sendmail(struct smtp_submit *subm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:434,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - result
    - rctx
    argTypes:
    - struct smtp_submit_result*
    - struct smtp_submit_run_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 437
    functionName: smtp_submit_run_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void smtp_submit_run_callback(const struct smtp_submit_result *result,\n\t\t\t
      struct smtp_submit_run_context *rctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:445,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:446,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:448,1
    - Dst: smtp_submit_run_async
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:449,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:452,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:453,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:455,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:460,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - subm
    - error_r
    argTypes:
    - struct smtp_submit*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 439
    functionDepth: 12
    functionLinenumber: 439
    functionLinenumberEnd: 465
    functionName: smtp_submit_run
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 5
    functionsReached:
    - i_zero
    - smtp_submit_run_async
    - io_loop_destroy
    - io_loop_create
    - io_loop_is_running
    - io_loop_set_running
    - t_strdup
    - i_free
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: "int smtp_submit_run(struct smtp_submit *subm,\n\t\t    const char
      **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:478,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:481,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:482,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:485,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:487,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:487,1
    - Dst: smtp_submit_send_host
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:490,1
    - Dst: smtp_submit_send_sendmail
      Src: /src/dovecot/src/lib-smtp/smtp-submit.c:492,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - subm
    - callback
    - context
    argTypes:
    - struct smtp_submit*
    - smtp_submit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 468
    functionDepth: 12
    functionLinenumber: 468
    functionLinenumberEnd: 494
    functionName: smtp_submit_run_async
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.c
    functionUses: 3
    functionsReached:
    - iostream_temp_finish
    - e_debug
    - i_stream_get_size
    - struct event_passthrough*::event
    - event_create_passthrough
    - smtp_submit_send_host
    - event_add_int
    - smtp_submit_send_sendmail
    linkageType: ''
    returnType: void
    signature: "void smtp_submit_run_async(struct smtp_submit *subm,\n\t\t\t   smtp_submit_callback_t
      *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:19,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:20,1
    - Dst: smtp_server_command_reply_is_forwarded
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:21,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:25,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 29
    functionName: cmd_mail_check_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_is_replied
    - smtp_server_reply
    - smtp_server_command_replied_success
    - smtp_server_command_reply_is_forwarded
    linkageType: ''
    returnType: bool
    signature: bool cmd_mail_check_state(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:38,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:41,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:41,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:42,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:43,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:45,1
    - Dst: smtp_server_transaction_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 31
    functionDepth: 13
    functionLinenumber: 31
    functionLinenumberEnd: 52
    functionName: cmd_mail_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_is_replied
    - i_assert
    - smtp_server_command_replied_success
    - smtp_server_transaction_create
    linkageType: ''
    returnType: void
    signature: "void cmd_mail_completed(struct smtp_server_cmd_ctx *cmd,\n\t\t   struct
      smtp_server_cmd_mail *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cmd_mail_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:63,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:67,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - data
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 69
    functionName: cmd_mail_recheck
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_set_state
    - smtp_address_encode
    - cmd_mail_check_state
    linkageType: ''
    returnType: void
    signature: "void cmd_mail_recheck(struct smtp_server_cmd_ctx *cmd,\n\t\t struct
      smtp_server_cmd_mail *data)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: cmd_mail_check_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:92,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:96,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:97,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:107,1
    - Dst: smtp_address_parse_path_full
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:123,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:123,1
    - Dst: smtp_address_is_broken
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:126,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:127,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:134,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:140,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:141,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:145,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:151,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:152,1
    - Dst: smtp_params_mail_parse
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:153,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:158,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:161,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:164,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:171,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:176,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:179,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:181,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:184,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:185,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:188,1
    - Dst: smtp_server_connection_reason_begin
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:192,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_mail
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:193,1
    - Dst: event_reason_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:194,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:196,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:197,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:199,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:203,1
    - Dst: smtp_server_cmd_mail_reply_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:205,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:207,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 79
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 71
    functionDepth: 8
    functionLinenumber: 71
    functionLinenumberEnd: 208
    functionName: smtp_server_cmd_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c
    functionUses: 0
    functionsReached:
    - smtp_server_cmd_mail_reply_success
    - smtp_address_is_broken
    - event_reason_end
    - str_begins_icase
    - array_front
    - smtp_server_command_ref
    - struct smtp_server_callbacks*::conn_cmd_mail
    - p_new
    - i_unreached
    - smtp_server_command_is_replied
    - smtp_server_reply
    - cmd_mail_check_state
    - smtp_params_mail_parse
    - smtp_server_command_unref
    - smtp_server_connection_set_state
    - smtp_address_clone
    - pool_datastack_create
    - smtp_address_encode
    - i_assert
    - smtp_server_command_add_hook
    - e_debug
    - smtp_server_connection_reason_begin
    - smtp_address_parse_path_full
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_mail(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \ const char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:212,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 215
    functionName: smtp_server_cmd_mail_reply_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-mail.c
    functionUses: 1
    functionsReached:
    - i_assert
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_mail_reply_success(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - parser
    - pool
    - data
    argTypes:
    - struct smtp_parser*
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 165
    functionName: smtp_parser_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 7
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: "void smtp_parser_init(struct smtp_parser *parser,\n\tpool_t pool,
      const char *data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:184,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:197,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - parser
    - out
    argTypes:
    - struct smtp_parser*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 199
    functionName: smtp_parser_parse_ldh_str
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 0
    functionsReached:
    - i_isalnum
    - str_append_data
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_ldh_str(struct smtp_parser *parser,\n\tstring_t
      *out)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:218,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:223,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:231,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:237,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:242,1
    - Dst: EXPERIMENTAL_MAIL_UTF8
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:243,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:250,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:259,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:264,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 33
    argCount: 2
    argNames:
    - parser
    - value_r
    argTypes:
    - struct smtp_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 266
    functionName: smtp_parser_parse_domain
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 3
    functionsReached:
    - str_c
    - t_str_new
    - EXPERIMENTAL_MAIL_UTF8
    - str_append_c
    - i_isalnum
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_domain(struct smtp_parser *parser,\n\tconst
      char **value_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:294,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - parser
    - literal
    - octet_r
    argTypes:
    - struct smtp_parser*
    - string_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 297
    functionName: smtp_parser_parse_snum
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 0
    functionsReached:
    - str_append_data
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_snum(struct smtp_parser *parser, string_t *literal,\n\t\t
      \      uint8_t *octet_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_parse_snum
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:309,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:318,1
    - Dst: smtp_parser_parse_snum
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:321,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:327,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - parser
    - literal
    - ip4_r
    argTypes:
    - struct smtp_parser*
    - string_t*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 329
    functionName: smtp_parser_parse_ipv4_address
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - smtp_parser_parse_snum
    - htonl
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_ipv4_address(struct smtp_parser *parser,\n\t\t\t
      \      string_t *literal, struct in_addr *ip4_r)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:361,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:362,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:365,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:368,1
    - Dst: smtp_parser_parse_ipv4_address
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:369,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:388,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:389,1
    - Dst: smtp_parser_parse_ldh_str
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:391,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:396,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:396,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:399,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:401,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:406,1
    - Dst: smtp_char_is_dcontent
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:411,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:419,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:423,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:423,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:444,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:445,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 72
    argCount: 3
    argNames:
    - parser
    - value_r
    - ip_r
    argTypes:
    - struct smtp_parser*
    - char**
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 331
    functionDepth: 11
    functionLinenumber: 331
    functionLinenumberEnd: 448
    functionName: smtp_parser_parse_address_literal
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 2
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - net_addr2ip
    - str_append_c
    - smtp_char_is_dcontent
    - t_strdup_printf
    - strcasecmp
    - t_strndup
    - smtp_parser_parse_ldh_str
    - smtp_parser_parse_ipv4_address
    - str_append_data
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_address_literal(struct smtp_parser *parser,\n\tconst
      char **value_r, struct ip_addr *ip_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:474,1
    - Dst: smtp_char_is_qtext
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:480,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:486,1
    - Dst: smtp_char_is_qpair
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:494,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:501,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:516,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 2
    argNames:
    - parser
    - value_r
    argTypes:
    - struct smtp_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 450
    functionDepth: 4
    functionLinenumber: 450
    functionLinenumberEnd: 518
    functionName: smtp_parser_parse_quoted_string
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - smtp_char_is_qpair
    - str_append_c
    - smtp_char_is_qtext
    - str_append_data
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_quoted_string(struct smtp_parser *parser,\n\tconst
      char **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_atext
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:525,1
    - Dst: smtp_char_is_atext
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:529,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct smtp_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 532
    functionName: smtp_parser_skip_atom
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_atext
    linkageType: ''
    returnType: int
    signature: int smtp_parser_skip_atom(struct smtp_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_skip_atom
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:540,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - value_r
    argTypes:
    - struct smtp_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 534
    functionDepth: 3
    functionLinenumber: 534
    functionLinenumberEnd: 546
    functionName: smtp_parser_parse_atom
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 0
    functionsReached:
    - t_strndup
    - smtp_parser_skip_atom
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_atom(struct smtp_parser *parser,\n\tconst char
      **value_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_parse_quoted_string
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:555,1
    - Dst: smtp_parser_parse_atom
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - parser
    - value_r
    argTypes:
    - struct smtp_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 548
    functionDepth: 5
    functionLinenumber: 548
    functionLinenumberEnd: 558
    functionName: smtp_parser_parse_string
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 1
    functionsReached:
    - smtp_parser_parse_atom
    - smtp_parser_parse_quoted_string
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_string(struct smtp_parser *parser,\n\tconst
      char **value_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 2
    argNames:
    - digit
    - hexvalue
    argTypes:
    - unsigned char
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 578
    functionName: smtp_parse_xtext_hexdigit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool smtp_parse_xtext_hexdigit(const unsigned char digit,\n\tunsigned
      char *hexvalue)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_xtext
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:592,1
    - Dst: smtp_char_is_xtext
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:599,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:603,1
    - Dst: smtp_parse_xtext_hexdigit
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:610,1
    - Dst: smtp_parse_xtext_hexdigit
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:612,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-parser.c:615,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 2
    argNames:
    - parser
    - out
    argTypes:
    - struct smtp_parser*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 580
    functionDepth: 2
    functionLinenumber: 580
    functionLinenumberEnd: 625
    functionName: smtp_parser_parse_xtext
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.c
    functionUses: 1
    functionsReached:
    - smtp_char_is_xtext
    - str_append_data
    - str_append_c
    - smtp_parse_xtext_hexdigit
    linkageType: ''
    returnType: int
    signature: "int smtp_parser_parse_xtext(struct smtp_parser *parser,\n\tstring_t
      *out)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:15,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:15,1
    - Dst: smtp_server_command_replied_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:16,1
    - Dst: smtp_server_transaction_reset
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:23,1
    - Dst: smtp_server_connection_reset_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cmd
    - ATTR_UNUSED
    argTypes:
    - struct smtp_server_cmd_ctx*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 9
    functionDepth: 3
    functionLinenumber: 9
    functionLinenumberEnd: 25
    functionName: cmd_rset_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c
    functionUses: 0
    functionsReached:
    - smtp_server_transaction_reset
    - smtp_server_command_is_replied
    - smtp_server_connection_reset_state
    - smtp_server_command_replied_success
    - i_assert
    linkageType: ''
    returnType: void
    signature: void cmd_rset_completed(struct smtp_server_cmd_ctx *cmd, void *context
      ATTR_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:37,1
    - Dst: smtp_server_command_pipeline_block
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:42,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:43,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:46,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_rset
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:49,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:50,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:51,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:53,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:58,1
    - Dst: smtp_server_cmd_rset_reply_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:60,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 63
    functionName: smtp_server_cmd_rset
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - smtp_server_command_add_hook
    - struct smtp_server_callbacks*::conn_cmd_rset
    - smtp_server_command_is_replied
    - smtp_server_reply
    - smtp_server_command_pipeline_block
    - i_assert
    - smtp_server_command_ref
    - smtp_server_cmd_rset_reply_success
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_rset(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \ const char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:67,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: smtp_server_cmd_rset_reply_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-rset.c
    functionUses: 1
    functionsReached:
    - i_assert
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_rset_reply_success(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:36,1
    - Dst: i_isalnum
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:43,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:45,1
    - Dst: smtp_char_is_esmtp_value
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:59,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:66,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 2
    argNames:
    - parser
    - param_r
    argTypes:
    - struct smtp_parser*
    - struct smtp_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 22
    functionDepth: 3
    functionLinenumber: 22
    functionLinenumberEnd: 68
    functionName: smtp_param_do_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - i_isalnum
    - smtp_char_is_esmtp_value
    - t_strndup
    linkageType: ''
    returnType: int
    signature: int smtp_param_do_parse(struct smtp_parser *parser, struct smtp_param
      *param_r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:75,1
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:83,1
    - Dst: smtp_param_do_parse
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:85,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - pool
    - text
    - param_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - struct smtp_param*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 91
    functionName: smtp_param_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 1
    functionsReached:
    - i_zero
    - smtp_parser_init
    - smtp_param_do_parse
    linkageType: ''
    returnType: int
    signature: "int smtp_param_parse(pool_t pool, const char *text,\n\t\t     struct
      smtp_param *param_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:100,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:103,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:103,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:107,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:108,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 111
    functionName: smtp_params_copy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_array_init
    - array_push_back
    - array_count
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void smtp_params_copy(pool_t pool, ARRAY_TYPE(smtp_param) *dst,\n\t\t
      \     const ARRAY_TYPE(smtp_param) *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:107,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:108,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 132
    functionsReached:
    - p_strdup
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void array_foreach(src, param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:146,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:149,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 153
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 132
    functionsReached:
    - array_delete
    - strcasecmp
    - array_foreach_idx
    linkageType: ''
    returnType: void
    signature: void array_foreach(params, param)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_char_is_esmtp_value
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 166
    functionName: smtp_param_value_valid
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_esmtp_value
    linkageType: ''
    returnType: bool
    signature: bool smtp_param_value_valid(const char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:170,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:170,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:172,1
    - Dst: smtp_param_value_valid
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:172,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:173,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - out
    - param
    argTypes:
    - string_t*
    - struct smtp_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 168
    functionDepth: 8
    functionLinenumber: 168
    functionLinenumberEnd: 176
    functionName: smtp_param_write
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - t_str_ucase
    - str_append_c
    - smtp_param_value_valid
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_param_write(string_t *out, const struct smtp_param *param)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:190,1
    - Dst: smtp_param_write
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:191,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 9
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 132
    functionsReached:
    - str_array_icase_find
    - str_append_c
    - smtp_param_write
    linkageType: ''
    returnType: void
    signature: void array_foreach(params, param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:204,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - params
    - keyword
    argTypes:
    - ARRAY_TYPE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 212
    functionName: smtp_params_get_param
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - strcasecmp
    linkageType: ''
    returnType: struct smtp_param
    signature: "struct smtp_param *\nsmtp_params_get_param(const ARRAY_TYPE(smtp_param)
      *params,\n\t\t      const char *keyword)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 210
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 132
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: void array_foreach(params, param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_get_param
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:220,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:224,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:224,1
    - Dst: smtp_xtext_decode
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - params
    - keyword
    - value_r
    - allow_nul
    - error_r
    argTypes:
    - ARRAY_TYPE*
    - char*
    - string_t**
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 214
    functionDepth: 4
    functionLinenumber: 214
    functionLinenumberEnd: 228
    functionName: smtp_params_decode_param
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - strlen
    - smtp_params_get_param
    - smtp_xtext_decode
    linkageType: ''
    returnType: int
    signature: "int smtp_params_decode_param(const ARRAY_TYPE(smtp_param) *params,\n\t\t\t
      \    const char *keyword, string_t **value_r,\n\t\t\t     bool allow_nul, const
      char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:235,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:235,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:236,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:237,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:239,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:239,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:242,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:242,1
    - Dst: smtp_params_get_param
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:246,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:249,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - params1
    - params2
    argTypes:
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 253
    functionName: smtp_params_equal
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    - smtp_params_get_param
    - null_strcmp
    linkageType: ''
    returnType: bool
    signature: "bool smtp_params_equal(const ARRAY_TYPE(smtp_param) *params1,\n\t\t
      \      const ARRAY_TYPE(smtp_param) *params2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_get_param
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:246,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 251
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 132
    functionsReached:
    - null_strcmp
    - smtp_params_get_param
    linkageType: ''
    returnType: void
    signature: void array_foreach(params1, param1)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_xtext_parse
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:295,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:296,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:301,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:302,1
    - Dst: smtp_address_parse_mailbox
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:303,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:307,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - pmparser
    - xtext
    argTypes:
    - struct smtp_params_mail_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 270
    functionDepth: 11
    functionLinenumber: 270
    functionLinenumberEnd: 316
    functionName: smtp_params_mail_parse_auth
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_new
    - smtp_address_parse_mailbox
    - t_strdup_printf
    - smtp_xtext_parse
    linkageType: ''
    returnType: int
    signature: "int smtp_params_mail_parse_auth(struct smtp_params_mail_parser *pmparser,\n\t\t\t
      \   const char *xtext)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:340,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:343,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:347,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:352,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:356,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:358,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - pmparser
    - value
    - extensions
    argTypes:
    - struct smtp_params_mail_parser*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 318
    functionDepth: 8
    functionLinenumber: 318
    functionLinenumberEnd: 365
    functionName: smtp_params_mail_parse_body
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - p_strdup
    - t_str_ucase
    - str_array_icase_find
    linkageType: ''
    returnType: int
    signature: "int smtp_params_mail_parse_body(struct smtp_params_mail_parser *pmparser,\n\t\t\t
      \   const char *value, const char *const *extensions)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_xtext_parse
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:390,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:391,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:404,1
    - Dst: smtp_char_is_textstr
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:405,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:414,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - pmparser
    - xtext
    argTypes:
    - struct smtp_params_mail_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 367
    functionDepth: 11
    functionLinenumber: 367
    functionLinenumberEnd: 416
    functionName: smtp_params_mail_parse_envid
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_textstr
    - p_strdup
    - strlen
    - t_strdup_printf
    - smtp_xtext_parse
    linkageType: ''
    returnType: int
    signature: "int smtp_params_mail_parse_envid(struct smtp_params_mail_parser *pmparser,\n\t\t\t
      \    const char *xtext)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:439,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:441,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:444,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - pmparser
    - value
    argTypes:
    - struct smtp_params_mail_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 418
    functionDepth: 8
    functionLinenumber: 418
    functionLinenumberEnd: 452
    functionName: smtp_params_mail_parse_ret
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_ucase
    linkageType: ''
    returnType: int
    signature: "int smtp_params_mail_parse_ret(struct smtp_params_mail_parser *pmparser,\n\t\t\t
      \  const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - pmparser
    - value
    argTypes:
    - struct smtp_params_mail_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 454
    functionDepth: 4
    functionLinenumber: 454
    functionLinenumberEnd: 482
    functionName: smtp_params_mail_parse_size
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - str_to_uoff
    linkageType: ''
    returnType: int
    signature: "int smtp_params_mail_parse_size(struct smtp_params_mail_parser *pmparser,\n\t\t\t
      \   const char *value)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:498,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:500,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:505,1
    - Dst: smtp_param_parse
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:507,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:507,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:509,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:516,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:518,1
    - Dst: smtp_params_mail_parse_auth
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:519,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:524,1
    - Dst: smtp_params_mail_parse_body
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:525,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:531,1
    - Dst: smtp_params_mail_parse_envid
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:532,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:538,1
    - Dst: smtp_params_mail_parse_ret
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:539,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:545,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:556,1
    - Dst: smtp_params_mail_parse_size
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:557,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:563,1
    - Dst: smtp_params_mail_add_extra
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:566,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 66
    argCount: 8
    argNames:
    - pool
    - args
    - caps
    - extensions
    - body_extensions
    - params_r
    - error_code_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - enum smtp_capability
    - char**
    - char**
    - struct smtp_params_mail*
    - enum smtp_param_parse_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 484
    functionDepth: 12
    functionLinenumber: 484
    functionLinenumberEnd: 585
    functionName: smtp_params_mail_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 3
    functionsReached:
    - i_zero
    - smtp_param_parse
    - strcmp
    - t_str_ucase
    - smtp_params_mail_parse_auth
    - smtp_params_mail_parse_size
    - smtp_params_mail_parse_ret
    - smtp_params_mail_add_extra
    - smtp_params_mail_parse_body
    - t_strdup_printf
    - t_strsplit
    - pool_datastack_create
    - smtp_params_mail_parse_envid
    - str_array_icase_find
    linkageType: ''
    returnType: int
    signature: "int smtp_params_mail_parse(pool_t pool, const char *args,\n\t\t\t
      \  enum smtp_capability caps,\n\t\t\t   const char *const *extensions,\n\t\t\t
      \  const char *const *body_extensions,\n\t\t\t   struct smtp_params_mail *params_r,\n\t\t\t
      \  enum smtp_param_parse_error *error_code_r,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:592,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:597,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:599,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:600,1
    - Dst: smtp_params_copy
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - struct smtp_params_mail*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 589
    functionDepth: 4
    functionLinenumber: 589
    functionLinenumberEnd: 606
    functionName: smtp_params_mail_copy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 3
    functionsReached:
    - i_zero
    - smtp_address_clone
    - p_strdup
    - smtp_params_copy
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_copy(pool_t pool, struct smtp_params_mail *dst,\n\t\t\t
      \  const struct smtp_params_mail *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_add_one
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - params
    - pool
    - keyword
    - value
    argTypes:
    - struct smtp_params_mail*
    - pool_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 612
    functionName: smtp_params_mail_add_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 1
    functionsReached:
    - smtp_params_add_one
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_add_extra(struct smtp_params_mail *params, pool_t
      pool,\n\t\t\t\tconst char *keyword, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_add_encoded
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - params
    - pool
    - keyword
    - value
    - value_len
    argTypes:
    - struct smtp_params_mail*
    - pool_t
    - char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 621
    functionName: smtp_params_mail_encode_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_params_add_encoded
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_encode_extra(struct smtp_params_mail *params,
      pool_t pool,\n\t\t\t\t   const char *keyword,\n\t\t\t\t   const unsigned char
      *value,\n\t\t\t\t   size_t value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_drop_one
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - params
    - keyword
    - value_r
    argTypes:
    - struct smtp_params_mail*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 627
    functionName: smtp_params_mail_drop_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_params_drop_one
    linkageType: ''
    returnType: bool
    signature: "bool smtp_params_mail_drop_extra(struct smtp_params_mail *params,\n\t\t\t\t
      const char *keyword, const char **value_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:643,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:646,1
    - Dst: smtp_address_write
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:648,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:649,1
    - Dst: smtp_xtext_encode
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:650,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:650,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:650,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - buffer
    - caps
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 631
    functionDepth: 4
    functionLinenumber: 631
    functionLinenumberEnd: 652
    functionName: smtp_params_mail_write_auth
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - str_data
    - smtp_xtext_encode
    - str_len
    - smtp_address_write
    - str_append
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_write_auth(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t    const struct smtp_params_mail *params)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:664,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:668,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:669,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:673,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:675,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:678,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:679,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:680,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:683,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - buffer
    - caps
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 654
    functionDepth: 2
    functionLinenumber: 654
    functionLinenumberEnd: 685
    functionName: smtp_params_mail_write_body
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - str_append
    - i_assert
    - str_append_c
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_write_body(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t    const struct smtp_params_mail *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:700,1
    - Dst: smtp_xtext_encode
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:701,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:701,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:702,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - buffer
    - caps
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 687
    functionDepth: 3
    functionLinenumber: 687
    functionLinenumberEnd: 703
    functionName: smtp_params_mail_write_envid
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - str_append
    - strlen
    - str_append_c
    - smtp_xtext_encode
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_write_envid(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t     const struct smtp_params_mail *params)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:716,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:719,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:722,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - buffer
    - caps
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 705
    functionDepth: 2
    functionLinenumber: 705
    functionLinenumberEnd: 724
    functionName: smtp_params_mail_write_ret
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - str_append
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_write_ret(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t   const struct smtp_params_mail *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:738,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - buffer
    - caps
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 726
    functionDepth: 2
    functionLinenumber: 726
    functionLinenumberEnd: 739
    functionName: smtp_params_mail_write_size
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - str_printfa
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_write_size(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t    const struct smtp_params_mail *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - params
    argTypes:
    - string_t*
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 742
    functionDepth: 2
    functionLinenumber: 742
    functionLinenumberEnd: 749
    functionName: smtp_params_mail_write_smtputf8
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - str_append
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_write_smtputf8(string_t *buffer,\n\t\t\t\tconst
      struct smtp_params_mail *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:756,1
    - Dst: smtp_params_mail_write_auth
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:758,1
    - Dst: smtp_params_mail_write_body
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:759,1
    - Dst: smtp_params_mail_write_envid
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:760,1
    - Dst: smtp_params_mail_write_ret
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:761,1
    - Dst: smtp_params_mail_write_size
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:762,1
    - Dst: smtp_params_mail_write_smtputf8
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:764,1
    - Dst: smtp_params_write
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:767,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:769,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:770,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:770,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - buffer
    - caps
    - extra_params
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - char**
    - struct smtp_params_mail*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 752
    functionDepth: 5
    functionLinenumber: 752
    functionLinenumberEnd: 771
    functionName: smtp_params_mail_write
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 2
    functionsReached:
    - smtp_params_mail_write_auth
    - smtp_params_write
    - smtp_params_mail_write_body
    - str_len
    - smtp_params_mail_write_size
    - smtp_params_mail_write_envid
    - smtp_params_mail_write_smtputf8
    - str_truncate
    - smtp_params_mail_write_ret
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_write(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t    const char *const *extra_params,\n\t\t\t    const struct smtp_params_mail
      *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_get_param
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - params
    - keyword
    argTypes:
    - struct smtp_params_mail*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 780
    functionName: smtp_params_mail_get_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_params_get_param
    linkageType: ''
    returnType: struct smtp_param
    signature: "struct smtp_param *\nsmtp_params_mail_get_extra(const struct smtp_params_mail
      *params,\n\t\t\t   const char *keyword)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_decode_param
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - params
    - keyword
    - value_r
    - allow_nul
    - error_r
    argTypes:
    - struct smtp_params_mail*
    - char*
    - string_t**
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 782
    functionDepth: 5
    functionLinenumber: 782
    functionLinenumberEnd: 788
    functionName: smtp_params_mail_decode_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_params_decode_param
    linkageType: ''
    returnType: int
    signature: "int smtp_params_mail_decode_extra(const struct smtp_params_mail *params,\n\t\t\t\t
      \ const char *keyword, string_t **value_r,\n\t\t\t\t  bool allow_nul, const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:800,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:801,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_mail*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 792
    functionDepth: 5
    functionLinenumber: 792
    functionLinenumberEnd: 802
    functionName: smtp_params_mail_add_auth_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_add_auth_to_event(const struct smtp_params_mail
      *params,\n\t\t\t\t   struct event *event)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:813,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:816,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:819,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:822,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:825,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_mail*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 804
    functionDepth: 4
    functionLinenumber: 804
    functionLinenumberEnd: 827
    functionName: smtp_params_mail_add_body_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - event_add_str
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_add_body_to_event(const struct smtp_params_mail
      *params,\n\t\t\t\t   struct event *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:837,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_mail*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 829
    functionDepth: 4
    functionLinenumber: 829
    functionLinenumberEnd: 838
    functionName: smtp_params_mail_add_envid_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - event_add_str
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_add_envid_to_event(const struct smtp_params_mail
      *params,\n\t\t\t\t    struct event *event)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:849,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:852,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:855,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_mail*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 840
    functionDepth: 4
    functionLinenumber: 840
    functionLinenumberEnd: 857
    functionName: smtp_params_mail_add_ret_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - event_add_str
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_add_ret_to_event(const struct smtp_params_mail
      *params,\n\t\t\t\t  struct event *event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_mail*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 859
    functionDepth: 4
    functionLinenumber: 859
    functionLinenumberEnd: 868
    functionName: smtp_params_mail_add_size_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - event_add_int
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_add_size_to_event(const struct smtp_params_mail
      *params,\n\t\t\t\t   struct event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_mail_add_auth_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:873,1
    - Dst: smtp_params_mail_add_body_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:874,1
    - Dst: smtp_params_mail_add_envid_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:875,1
    - Dst: smtp_params_mail_add_ret_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:876,1
    - Dst: smtp_params_mail_add_size_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_mail*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 870
    functionDepth: 6
    functionLinenumber: 870
    functionLinenumberEnd: 878
    functionName: smtp_params_mail_add_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 3
    functionsReached:
    - smtp_params_mail_add_body_to_event
    - smtp_params_mail_add_auth_to_event
    - smtp_params_mail_add_ret_to_event
    - smtp_params_mail_add_envid_to_event
    - smtp_params_mail_add_size_to_event
    linkageType: ''
    returnType: void
    signature: "void smtp_params_mail_add_to_event(const struct smtp_params_mail *params,\n\t\t\t\t
      \  struct event *event)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:927,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:931,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:936,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:941,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:946,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 2
    argNames:
    - prparser
    - value
    argTypes:
    - struct smtp_params_rcpt_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 896
    functionDepth: 5
    functionLinenumber: 896
    functionLinenumberEnd: 966
    functionName: smtp_params_rcpt_parse_notify
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - t_strsplit
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int smtp_params_rcpt_parse_notify(struct smtp_params_rcpt_parser *prparser,\n\t\t\t
      \     const char *value)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: message_address_parse
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:976,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:976,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:978,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:982,1
    - Dst: smtp_address_create_from_msg
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:989,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 4
    argNames:
    - prparser
    - addr_str
    - pool
    - addr_r
    argTypes:
    - struct smtp_params_rcpt_parser*
    - char*
    - pool_t
    - struct smtp_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 968
    functionDepth: 5
    functionLinenumber: 968
    functionLinenumberEnd: 993
    functionName: smtp_params_rcpt_parse_orcpt_rfc822
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - strlen
    - message_address_parse
    - pool_datastack_create
    - HAS_NO_BITS
    - smtp_address_create_from_msg
    linkageType: ''
    returnType: int
    signature: "int smtp_params_rcpt_parse_orcpt_rfc822(struct smtp_params_rcpt_parser
      *prparser,\n\t\t\t\t    const char *addr_str, pool_t pool,\n\t\t\t\t    const
      struct smtp_address **addr_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smtp_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1029,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1029,1
    - Dst: smtp_parser_parse_atom
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1030,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1036,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1040,1
    - Dst: smtp_parser_parse_xtext
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1041,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1044,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1070,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1071,1
    - Dst: smtp_char_is_textstr
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1072,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1082,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1082,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1084,1
    - Dst: smtp_params_rcpt_parse_orcpt_rfc822
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1085,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 2
    argNames:
    - prparser
    - value
    argTypes:
    - struct smtp_params_rcpt_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 995
    functionDepth: 11
    functionLinenumber: 995
    functionLinenumberEnd: 1096
    functionName: smtp_params_rcpt_parse_orcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_char_is_textstr
    - smtp_parser_parse_atom
    - t_str_new
    - p_strdup
    - str_c
    - str_data
    - str_len
    - smtp_parser_init
    - smtp_params_rcpt_parse_orcpt_rfc822
    - t_strdup_printf
    - strcasecmp
    - pool_datastack_create
    - smtp_parser_parse_xtext
    linkageType: ''
    returnType: int
    signature: "int smtp_params_rcpt_parse_orcpt(struct smtp_params_rcpt_parser *prparser,\n\t\t\t
      \    const char *value)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1112,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1114,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1120,1
    - Dst: smtp_param_parse
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1122,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1122,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1124,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1131,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1133,1
    - Dst: smtp_params_rcpt_parse_notify
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1134,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1141,1
    - Dst: smtp_params_rcpt_parse_orcpt
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1142,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1148,1
    - Dst: smtp_params_rcpt_add_extra
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1151,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 8
    argNames:
    - pool
    - args
    - flags
    - caps
    - extensions
    - params_r
    - error_code_r
    - error_r
    argTypes:
    - pool_t
    - char*
    - enum smtp_param_rcpt_parse_flags
    - enum smtp_capability
    - char**
    - struct smtp_params_rcpt*
    - enum smtp_param_parse_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1098
    functionDepth: 12
    functionLinenumber: 1098
    functionLinenumberEnd: 1170
    functionName: smtp_params_rcpt_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 3
    functionsReached:
    - i_zero
    - smtp_param_parse
    - strcmp
    - t_str_ucase
    - smtp_params_rcpt_parse_orcpt
    - smtp_params_rcpt_parse_notify
    - t_strdup_printf
    - t_strsplit
    - pool_datastack_create
    - str_array_icase_find
    - smtp_params_rcpt_add_extra
    linkageType: ''
    returnType: int
    signature: "int smtp_params_rcpt_parse(pool_t pool, const char *args,\n\t\t\t
      \  enum smtp_param_rcpt_parse_flags flags,\n\t\t\t   enum smtp_capability caps,\n\t\t\t
      \  const char *const *extensions,\n\t\t\t   struct smtp_params_rcpt *params_r,\n\t\t\t
      \  enum smtp_param_parse_error *error_code_r,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1177,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1183,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1184,1
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1185,1
    - Dst: smtp_params_copy
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - struct smtp_params_rcpt*
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1174
    functionDepth: 4
    functionLinenumber: 1174
    functionLinenumberEnd: 1188
    functionName: smtp_params_rcpt_copy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 5
    functionsReached:
    - i_zero
    - smtp_address_clone
    - p_strdup
    - smtp_params_copy
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_copy(pool_t pool, struct smtp_params_rcpt *dst,\n\t\t\t
      \  const struct smtp_params_rcpt *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_add_one
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - params
    - pool
    - keyword
    - value
    argTypes:
    - struct smtp_params_rcpt*
    - pool_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1190
    functionDepth: 0
    functionLinenumber: 1190
    functionLinenumberEnd: 1194
    functionName: smtp_params_rcpt_add_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 1
    functionsReached:
    - smtp_params_add_one
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_add_extra(struct smtp_params_rcpt *params, pool_t
      pool,\n\t\t\t\tconst char *keyword, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_add_encoded
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - params
    - pool
    - keyword
    - value
    - value_len
    argTypes:
    - struct smtp_params_rcpt*
    - pool_t
    - char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1203
    functionName: smtp_params_rcpt_encode_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 1
    functionsReached:
    - smtp_params_add_encoded
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_encode_extra(struct smtp_params_rcpt *params,
      pool_t pool,\n\t\t\t\t   const char *keyword,\n\t\t\t\t   const unsigned char
      *value,\n\t\t\t\t   size_t value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_drop_one
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - params
    - keyword
    - value_r
    argTypes:
    - struct smtp_params_rcpt*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1205
    functionDepth: 0
    functionLinenumber: 1205
    functionLinenumberEnd: 1209
    functionName: smtp_params_rcpt_drop_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 1
    functionsReached:
    - smtp_params_drop_one
    linkageType: ''
    returnType: bool
    signature: "bool smtp_params_rcpt_drop_extra(struct smtp_params_rcpt *params,\n\t\t\t\t
      const char *keyword, const char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_clone
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1215,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1216,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - params
    - pool
    - rcpt
    argTypes:
    - struct smtp_params_rcpt*
    - pool_t
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1211
    functionDepth: 5
    functionLinenumber: 1211
    functionLinenumberEnd: 1217
    functionName: smtp_params_rcpt_set_orcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 1
    functionsReached:
    - smtp_address_encode
    - smtp_address_clone
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_set_orcpt(struct smtp_params_rcpt *params, pool_t
      pool,\n\t\t\t\tstruct smtp_address *rcpt)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1236,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1238,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1239,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1243,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1248,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1249,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1254,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1255,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1258,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - buffer
    - caps
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1221
    functionDepth: 2
    functionLinenumber: 1221
    functionLinenumberEnd: 1259
    functionName: smtp_params_rcpt_write_notify
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - str_append
    - i_assert
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_write_notify(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t      const struct smtp_params_rcpt *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_rcpt_has_orcpt
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1265,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1273,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1274,1
    - Dst: smtp_xtext_encode_cstr
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1275,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1276,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1278,1
    - Dst: smtp_xtext_encode_cstr
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1279,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1281,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - buffer
    - caps
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1261
    functionDepth: 5
    functionLinenumber: 1261
    functionLinenumberEnd: 1282
    functionName: smtp_params_rcpt_write_orcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_xtext_encode_cstr
    - str_printfa
    - str_append_c
    - smtp_params_rcpt_has_orcpt
    - strcasecmp
    - smtp_address_encode
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_write_orcpt(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t     const struct smtp_params_rcpt *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1288,1
    - Dst: smtp_params_rcpt_write_notify
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1290,1
    - Dst: smtp_params_rcpt_write_orcpt
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1291,1
    - Dst: smtp_params_write
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1293,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1295,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1296,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - buffer
    - caps
    - extra_params
    - params
    argTypes:
    - string_t*
    - enum smtp_capability
    - char**
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1284
    functionDepth: 6
    functionLinenumber: 1284
    functionLinenumberEnd: 1297
    functionName: smtp_params_rcpt_write
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 2
    functionsReached:
    - smtp_params_write
    - str_len
    - smtp_params_rcpt_write_orcpt
    - str_truncate
    - smtp_params_rcpt_write_notify
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_write(string_t *buffer, enum smtp_capability
      caps,\n\t\t\t    const char *const *extra_params,\n\t\t\t    const struct smtp_params_rcpt
      *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_get_param
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - params
    - keyword
    argTypes:
    - struct smtp_params_rcpt*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1301
    functionDepth: 2
    functionLinenumber: 1301
    functionLinenumberEnd: 1306
    functionName: smtp_params_rcpt_get_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_params_get_param
    linkageType: ''
    returnType: struct smtp_param
    signature: "struct smtp_param *\nsmtp_params_rcpt_get_extra(const struct smtp_params_rcpt
      *params,\n\t\t\t   const char *keyword)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_decode_param
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - params
    - keyword
    - value_r
    - allow_nul
    - error_r
    argTypes:
    - struct smtp_params_rcpt*
    - char*
    - string_t**
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1308
    functionDepth: 5
    functionLinenumber: 1308
    functionLinenumberEnd: 1314
    functionName: smtp_params_rcpt_decode_extra
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 1
    functionsReached:
    - smtp_params_decode_param
    linkageType: ''
    returnType: int
    signature: "int smtp_params_rcpt_decode_extra(const struct smtp_params_rcpt *params,\n\t\t\t\t
      \ const char *keyword, string_t **value_r,\n\t\t\t\t  bool allow_nul, const
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1327,1
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1330,1
    - Dst: smtp_address_equals
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1331,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1335,1
    - Dst: smtp_params_equal
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1341,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - params1
    - params2
    argTypes:
    - struct smtp_params_rcpt*
    - struct smtp_params_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1316
    functionDepth: 3
    functionLinenumber: 1316
    functionLinenumberEnd: 1343
    functionName: smtp_params_rcpt_equal
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 1
    functionsReached:
    - smtp_address_equals
    - smtp_params_equal
    - null_strcmp
    - null_strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool smtp_params_rcpt_equal(const struct smtp_params_rcpt *params1,\n\t\t\t
      \   const struct smtp_params_rcpt *params2)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1355,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1357,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1359,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1361,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1363,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1364,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1365,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1368,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1369,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1370,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1372,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1372,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_rcpt*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1347
    functionDepth: 4
    functionLinenumber: 1347
    functionLinenumberEnd: 1374
    functionName: smtp_params_rcpt_add_notify_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - str_len
    - str_append
    - event_add_str
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_add_notify_to_event(const struct smtp_params_rcpt
      *params,\n\t\t\t\t     struct event *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1384,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1386,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1387,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1388,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1390,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_rcpt*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1376
    functionDepth: 5
    functionLinenumber: 1376
    functionLinenumberEnd: 1394
    functionName: smtp_params_rcpt_add_orcpt_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - event_add_str
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_add_orcpt_to_event(const struct smtp_params_rcpt
      *params,\n\t\t\t\t    struct event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_params_rcpt_add_notify_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1399,1
    - Dst: smtp_params_rcpt_add_orcpt_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-params.c:1400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - params
    - event
    argTypes:
    - struct smtp_params_rcpt*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1396
    functionDepth: 6
    functionLinenumber: 1396
    functionLinenumberEnd: 1401
    functionName: smtp_params_rcpt_add_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-params.c
    functionUses: 3
    functionsReached:
    - smtp_params_rcpt_add_notify_to_event
    - smtp_params_rcpt_add_orcpt_to_event
    linkageType: ''
    returnType: void
    signature: "void smtp_params_rcpt_add_to_event(const struct smtp_params_rcpt *params,\n\t\t\t\t
      \  struct event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-submit-settings.c:59,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/lib-smtp/smtp-submit-settings.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - _set
    - pool
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 61
    functionName: smtp_submit_settings_check
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit-settings.c
    functionUses: 0
    functionsReached:
    - my_hostdomain
    - p_strdup
    linkageType: ''
    returnType: bool
    signature: "bool smtp_submit_settings_check(void *_set, pool_t pool,\n\tconst
      char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:20,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - server
    - name
    - func
    - flags
    argTypes:
    - struct smtp_server*
    - char*
    - smtp_server_cmd_start_func_t*
    - enum smtp_server_command_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 27
    functionName: smtp_server_command_register
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 1
    functionsReached:
    - i_zero
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_register(struct smtp_server *server, const
      char *name,\n\t\t\t\t  smtp_server_cmd_start_func_t *func,\n\t\t\t\t  enum smtp_server_command_flags
      flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:36,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:38,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - server
    - name
    argTypes:
    - struct smtp_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 45
    functionName: ATTR_NOWARN_UNUSED_RESULT::smtp_server_command_do_unregister
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_get
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool ATTR_NOWARN_UNUSED_RESULT\nsmtp_server_command_do_unregister(struct
      smtp_server *server,\n\t\t\t\t  const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_do_unregister
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:50,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - server
    - name
    argTypes:
    - struct smtp_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: smtp_server_command_unregister
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - i_panic
    - smtp_server_command_do_unregister
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_unregister(struct smtp_server *server,\n\t\t\t\t
      \   const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_do_unregister
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:59,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - server
    - name
    - func
    - flags
    argTypes:
    - struct smtp_server*
    - char*
    - smtp_server_cmd_start_func_t*
    - enum smtp_server_command_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: smtp_server_command_override
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_do_unregister
    - smtp_server_command_register
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_override(struct smtp_server *server, const
      char *name,\n\t\t\t\t  smtp_server_cmd_start_func_t *func,\n\t\t\t\t  enum smtp_server_command_flags
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - struct smtp_server_command_reg*
    - struct smtp_server_command_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: smtp_server_command_cmp
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int smtp_server_command_cmp(const struct smtp_server_command_reg *c1,\n\t\t\tconst
      struct smtp_server_command_reg *c2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - cmd
    argTypes:
    - char*
    - struct smtp_server_command_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: smtp_server_command_bsearch
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int smtp_server_command_bsearch(const char *name,\n\t\t\t    const
      struct smtp_server_command_reg *cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_sort
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:81,1
    - Dst: array_bsearch
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - server
    - name
    argTypes:
    - struct smtp_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 87
    functionName: smtp_server_command_find
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - array_sort
    - array_bsearch
    linkageType: ''
    returnType: struct smtp_server_command_reg
    signature: 'struct smtp_server_command_reg *

      smtp_server_command_find(struct smtp_server *server, const char *name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:91,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:95,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:99,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:104,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:111,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:114,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:117,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:119,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:120,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:121,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:122,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:125,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:126,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:129,1
    - Dst: smtp_server_command_register
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct smtp_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 136
    functionName: smtp_server_commands_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - smtp_server_command_register
    linkageType: ''
    returnType: void
    signature: void smtp_server_commands_init(struct smtp_server *server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_ucase
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:147,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:150,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:152,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:153,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:154,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 142
    functionDepth: 11
    functionLinenumber: 142
    functionLinenumberEnd: 156
    functionName: smtp_server_command_update_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - event_add_str
    - t_str_ucase
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_update_event(struct smtp_server_command *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:164,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:165,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:168,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 179
    functionName: smtp_server_command_alloc
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - DLLIST2_APPEND
    linkageType: ''
    returnType: struct smtp_server_command
    signature: 'struct smtp_server_command *

      smtp_server_command_alloc(struct smtp_server_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_alloc
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:186,1
    - Dst: smtp_server_command_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:187,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 181
    functionDepth: 12
    functionLinenumber: 181
    functionLinenumberEnd: 192
    functionName: smtp_server_command_new_invalid
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_command_alloc
    - smtp_server_command_update_event
    linkageType: ''
    returnType: struct smtp_server_command
    signature: 'struct smtp_server_command *

      smtp_server_command_new_invalid(struct smtp_server_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_alloc
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:201,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:202,1
    - Dst: smtp_server_command_find
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:203,1
    - Dst: smtp_server_command_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:205,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - name
    argTypes:
    - struct smtp_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 194
    functionDepth: 12
    functionLinenumber: 194
    functionLinenumberEnd: 210
    functionName: smtp_server_command_new
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - smtp_server_command_find
    - e_debug
    - smtp_server_command_update_event
    - smtp_server_command_alloc
    linkageType: ''
    returnType: struct smtp_server_command
    signature: "struct smtp_server_command *\nsmtp_server_command_new(struct smtp_server_connection
      *conn,\n\t\t\tconst char *name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:217,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:218,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:221,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:223,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:223,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:234,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:253,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:267,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:273,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:274,1
    - Dst: struct smtp_server_command*::reg::func
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:275,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:278,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_command*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 212
    functionDepth: 4
    functionLinenumber: 212
    functionLinenumberEnd: 281
    functionName: smtp_server_command_execute
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - smtp_server_command_fail
    - e_debug
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct smtp_server_command*::reg::func
    - event_add_str
    - i_assert
    - smtp_server_command_ref
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_execute(struct smtp_server_command *cmd,\n\t\t\t\t
      const char *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 288
    functionName: smtp_server_command_ref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_ref(struct smtp_server_command *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:300,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:306,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:309,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:311,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:312,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:313,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:314,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:314,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:317,1
    - Dst: smtp_server_command_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:323,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:325,1
    - Dst: smtp_server_command_pipeline_unblock
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:327,1
    - Dst: smtp_server_reply_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:329,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:330,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_server_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 333
    functionName: smtp_server_command_unref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 13
    functionsReached:
    - event_unref
    - i_unreached
    - e_debug
    - smtp_server_command_call_hooks
    - smtp_server_command_pipeline_unblock
    - smtp_server_reply_free
    - DLLIST2_REMOVE
    - pool_unref
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_unref(struct smtp_server_command **_cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:343,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:346,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:348,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:349,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:350,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:351,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:351,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:354,1
    - Dst: smtp_server_reply_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:358,1
    - Dst: smtp_server_command_pipeline_unblock
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:360,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_server_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 335
    functionDepth: 5
    functionLinenumber: 335
    functionLinenumberEnd: 362
    functionName: smtp_server_command_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 1
    functionsReached:
    - smtp_server_command_unref
    - e_debug
    - smtp_server_reply_free
    - smtp_server_command_pipeline_unblock
    - DLLIST2_REMOVE
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_abort(struct smtp_server_command **_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:372,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:377,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:382,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - cmd
    - type
    - func
    - context
    argTypes:
    - struct smtp_server_command*
    - enum smtp_server_command_hook_type
    - smtp_server_cmd_func_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 388
    functionName: smtp_server_command_add_hook
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 21
    functionsReached:
    - i_assert
    - p_new
    - DLLIST2_APPEND
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_add_hook(struct smtp_server_command *cmd,\n\t\t\t\t
      \ enum smtp_server_command_hook_type type,\n\t\t\t\t  smtp_server_cmd_func_t
      func,\n\t\t\t\t  void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:403,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:411,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - cmd
    - type
    - func
    argTypes:
    - struct smtp_server_command*
    - enum smtp_server_command_hook_type
    - smtp_server_cmd_func_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 412
    functionName: smtp_server_command_remove_hook
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 1
    functionsReached:
    - DLLIST2_REMOVE
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_remove_hook(struct smtp_server_command *cmd,\n\t\t\t\t
      \    enum smtp_server_command_hook_type type,\n\t\t\t\t     smtp_server_cmd_func_t
      *func)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:424,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:433,1
    - Dst: struct smtp_server_command_hook*::func
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:436,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:443,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - _cmd
    - type
    - remove
    argTypes:
    - struct smtp_server_command**
    - enum smtp_server_command_hook_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 414
    functionDepth: 5
    functionLinenumber: 414
    functionLinenumberEnd: 449
    functionName: smtp_server_command_call_hooks
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 1
    functionsReached:
    - DLLIST2_REMOVE
    - smtp_server_command_ref
    - smtp_server_command_unref
    - struct smtp_server_command_hook*::func
    linkageType: ''
    returnType: bool
    signature: "bool smtp_server_command_call_hooks(struct smtp_server_command **_cmd,\n\t\t\t\t
      \   enum smtp_server_command_hook_type type,\n\t\t\t\t    bool remove)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cmd
    - type
    argTypes:
    - struct smtp_server_command*
    - enum smtp_server_command_hook_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 467
    functionName: smtp_server_command_remove_hooks
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - DLLIST2_REMOVE
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_remove_hooks(struct smtp_server_command *cmd,\n\t\t\t\t
      \     enum smtp_server_command_hook_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:472,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:473,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - count
    argTypes:
    - struct smtp_server_command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 475
    functionName: smtp_server_command_set_reply_count
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_set_reply_count(struct smtp_server_command
      *cmd,\n\tunsigned int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 482
    functionName: smtp_server_command_get_reply_count
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int smtp_server_command_get_reply_count(struct smtp_server_command
      *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:488,1
    - Dst: smtp_server_command_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:490,1
    - Dst: smtp_server_command_remove_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_server_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 484
    functionDepth: 6
    functionLinenumber: 484
    functionLinenumberEnd: 496
    functionName: smtp_server_command_next_to_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_command_remove_hooks
    - smtp_server_command_call_hooks
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_next_to_reply(struct smtp_server_command **_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:501,1
    - Dst: smtp_server_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 503
    functionName: smtp_server_command_ready_to_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_connection_trigger_output
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_ready_to_reply(struct smtp_server_command
      *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:511,1
    - Dst: smtp_server_command_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:513,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:517,1
    - Dst: smtp_server_command_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:519,1
    - Dst: smtp_server_command_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_server_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 505
    functionDepth: 6
    functionLinenumber: 505
    functionLinenumberEnd: 523
    functionName: smtp_server_command_replied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_command_call_hooks
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_replied(struct smtp_server_command **_cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:532,1
    - Dst: smtp_server_command_pipeline_unblock
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:535,1
    - Dst: smtp_server_command_call_hooks
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_server_command**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 525
    functionDepth: 6
    functionLinenumber: 525
    functionLinenumberEnd: 539
    functionName: smtp_server_command_completed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_command_call_hooks
    - smtp_server_command_pipeline_unblock
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_completed(struct smtp_server_command **_cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:546,1
    - Dst: smtp_server_command_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:548,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:549,1
    - Dst: smtp_server_command_input_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:552,1
    - Dst: smtp_server_command_is_complete
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:558,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:559,1
    - Dst: smtp_server_command_ready_to_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:563,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:569,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:572,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 541
    functionDepth: 7
    functionLinenumber: 541
    functionLinenumberEnd: 573
    functionName: smtp_server_command_handle_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_unref
    - i_unreached
    - e_debug
    - smtp_server_command_is_complete
    - smtp_server_command_ready_to_reply
    - smtp_server_command_replied
    - smtp_server_connection_ref
    - smtp_server_command_input_unlock
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_handle_reply(struct smtp_server_command *cmd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:581,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:581,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:586,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:591,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:601,1
    - Dst: smtp_server_command_handle_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:609,1
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:613,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 575
    functionDepth: 8
    functionLinenumber: 575
    functionLinenumberEnd: 617
    functionName: smtp_server_command_submit_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - array_idx
    - smtp_server_connection_terminate
    - array_is_created
    - i_assert
    - smtp_server_command_handle_reply
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_submit_reply(struct smtp_server_command *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:623,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:628,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 634
    functionName: smtp_server_command_is_replied
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 22
    functionsReached:
    - array_is_created
    - array_idx
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_is_replied(struct smtp_server_command *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:640,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:645,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 653
    functionName: smtp_server_command_reply_is_forwarded
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - array_idx
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_reply_is_forwarded(struct smtp_server_command
      *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:661,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:663,1
    - Dst: array_idx_get_space
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:666,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cmd
    - idx
    argTypes:
    - struct smtp_server_command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 670
    functionName: smtp_server_command_get_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 3
    functionsReached:
    - array_is_created
    - i_assert
    - array_idx_get_space
    linkageType: ''
    returnType: struct smtp_server_reply
    signature: "struct smtp_server_reply *\nsmtp_server_command_get_reply(struct smtp_server_command
      *cmd,\n\t\t\t      unsigned int idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:677,1
    - Dst: smtp_server_command_get_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:678,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - status
    argTypes:
    - struct smtp_server_command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 672
    functionDepth: 2
    functionLinenumber: 672
    functionLinenumberEnd: 681
    functionName: smtp_server_command_reply_status_equals
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 2
    functionsReached:
    - smtp_server_command_get_reply
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool smtp_server_command_reply_status_equals(struct smtp_server_command
      *cmd,\n\t\t\t\t\t     unsigned int status)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:688,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:693,1
    - Dst: smtp_server_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 701
    functionName: smtp_server_command_replied_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 13
    functionsReached:
    - array_is_created
    - smtp_server_reply_is_success
    - array_idx
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_replied_success(struct smtp_server_command
      *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:709,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:716,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:719,1
    - Dst: smtp_server_reply_send
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:723,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:729,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 703
    functionDepth: 5
    functionLinenumber: 703
    functionLinenumberEnd: 732
    functionName: smtp_server_command_send_more_replies
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - array_idx_modifiable
    - smtp_server_reply_send
    - i_assert
    - smtp_server_command_ref
    linkageType: ''
    returnType: int
    signature: int smtp_server_command_send_more_replies(struct smtp_server_command
      *cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_next_to_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:738,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:743,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:744,1
    - Dst: smtp_server_command_completed
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:746,1
    - Dst: smtp_server_command_send_more_replies
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:750,1
    - Dst: smtp_server_command_finished
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:758,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 734
    functionDepth: 7
    functionLinenumber: 734
    functionLinenumberEnd: 760
    functionName: smtp_server_command_send_replies
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_next_to_reply
    - smtp_server_command_send_more_replies
    - smtp_server_command_finished
    - array_is_created
    - i_assert
    - smtp_server_command_completed
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_command_send_replies(struct smtp_server_command *cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:767,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:770,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:775,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:775,1
    - Dst: array_front_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:776,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:777,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:780,1
    - Dst: smtp_server_reply_add_to_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:782,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:783,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:783,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:786,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:788,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:788,1
    - Dst: smtp_server_reply_get_one_line
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:790,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:792,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:794,1
    - Dst: smtp_server_command_input_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:798,1
    - Dst: smtp_server_command_pipeline_unblock
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:800,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:802,1
    - Dst: smtp_server_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:803,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 762
    functionDepth: 11
    functionLinenumber: 762
    functionLinenumberEnd: 804
    functionName: smtp_server_command_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 1
    functionsReached:
    - array_front_modifiable
    - smtp_server_reply_get_one_line
    - smtp_server_command_unref
    - e_debug
    - t_strdup_printf
    - smtp_server_command_pipeline_unblock
    - DLLIST2_REMOVE
    - smtp_server_reply_add_to_event
    - smtp_server_connection_close
    - struct event_passthrough*::event
    - event_create_passthrough
    - smtp_server_connection_trigger_output
    - array_is_created
    - i_assert
    - smtp_server_command_input_unlock
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_finished(struct smtp_server_command *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:813,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:815,1
    - Dst: smtp_server_reply_indexv
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:817,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:822,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:824,1
    - Dst: VA_COPY
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:831,1
    - Dst: smtp_server_reply_indexv
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:832,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:834,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:837,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - cmd
    - status
    - enh_code
    - fmt
    argTypes:
    - struct smtp_server_command*
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 838
    functionName: smtp_server_command_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 6
    functionsReached:
    - array_idx
    - va_start
    - VA_COPY
    - smtp_server_reply_indexv
    - array_is_created
    - i_assert
    - va_end
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_fail(struct smtp_server_command *cmd,\n\t\t\t
      \     unsigned int status, const char *enh_code,\n\t\t\t      const char *fmt,
      ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 847
    functionName: smtp_server_command_input_lock
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 11
    functionsReached:
    - smtp_server_connection_input_halt
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_input_lock(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:857,1
    - Dst: smtp_server_connection_input_resume
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:859,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 860
    functionName: smtp_server_command_input_unlock
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 4
    functionsReached:
    - smtp_server_connection_input_resume
    - smtp_server_connection_input_halt
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_input_unlock(struct smtp_server_cmd_ctx *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_input_capture
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - cmd
    - callback
    argTypes:
    - struct smtp_server_cmd_ctx*
    - smtp_server_cmd_input_callback_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 872
    functionName: smtp_server_command_input_capture
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 2
    functionsReached:
    - smtp_server_connection_input_capture
    linkageType: ''
    returnType: void
    signature: "void smtp_server_command_input_capture(\n\tstruct smtp_server_cmd_ctx
      *cmd,\n\tsmtp_server_cmd_input_callback_t *callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:879,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 883
    functionName: smtp_server_command_pipeline_block
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 5
    functionsReached:
    - e_debug
    - smtp_server_connection_input_halt
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_pipeline_block(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:893,1
    - Dst: smtp_server_connection_input_resume
      Src: /src/dovecot/src/lib-smtp/smtp-server-command.c:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 897
    functionName: smtp_server_command_pipeline_unblock
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-command.c
    functionUses: 4
    functionsReached:
    - e_debug
    - smtp_server_connection_input_resume
    linkageType: ''
    returnType: void
    signature: void smtp_server_command_pipeline_unblock(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_new
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:12,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - reply
    - status
    - text
    argTypes:
    - struct smtp_reply*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 20
    functionName: smtp_reply_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 5
    functionsReached:
    - i_zero
    - t_new
    linkageType: ''
    returnType: void
    signature: "void smtp_reply_init(struct smtp_reply *reply, unsigned int status,\n\tconst
      char *text)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:27,1
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:28,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:28,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - reply
    - status
    - format
    argTypes:
    - struct smtp_reply*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 22
    functionDepth: 11
    functionLinenumber: 22
    functionLinenumberEnd: 30
    functionName: smtp_reply_printf
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 2
    functionsReached:
    - t_strdup_vprintf
    - va_end
    - smtp_reply_init
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_reply_printf(struct smtp_reply *reply, unsigned int status,\n\tconst
      char *format, ...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 32
    functionDepth: 11
    functionLinenumber: 32
    functionLinenumberEnd: 42
    functionName: smtp_reply_get_enh_code
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_reply_get_enh_code(const struct smtp_reply *reply)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:51,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:54,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 62
    functionName: smtp_reply_get_text_lines_omit_prefix
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_new
    - str_array_length
    linkageType: ''
    returnType: char
    signature: 'char *const *

      smtp_reply_get_text_lines_omit_prefix(const struct smtp_reply *reply)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:70,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:71,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:73,1
    - Dst: smtp_reply_get_enh_code
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:74,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:77,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:79,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:80,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:82,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:88,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:90,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:92,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:94,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:95,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:97,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:98,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - out
    - reply
    argTypes:
    - string_t*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 64
    functionDepth: 12
    functionLinenumber: 64
    functionLinenumberEnd: 101
    functionName: smtp_reply_write
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 1
    functionsReached:
    - str_append_c
    - t_strdup_printf
    - str_append
    - smtp_reply_get_enh_code
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_reply_write(string_t *out, const struct smtp_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:110,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:111,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - out
    - reply
    argTypes:
    - string_t*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: smtp_reply_write_message_one_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_append_c
    - str_len
    linkageType: ''
    returnType: void
    signature: void smtp_reply_write_message_one_line(string_t *out, const struct
      smtp_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_get_enh_code
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:121,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:122,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:124,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:126,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:127,1
    - Dst: smtp_reply_write_message_one_line
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - out
    - reply
    argTypes:
    - string_t*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 117
    functionDepth: 12
    functionLinenumber: 117
    functionLinenumberEnd: 131
    functionName: smtp_reply_write_one_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - smtp_reply_write_message_one_line
    - str_append
    - smtp_reply_get_enh_code
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_reply_write_one_line(string_t *out, const struct smtp_reply
      *reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:135,1
    - Dst: smtp_reply_is_remote
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:137,1
    - Dst: smtp_reply_get_enh_code
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:138,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:140,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:142,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:143,1
    - Dst: smtp_reply_write_message_one_line
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:147,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 133
    functionDepth: 12
    functionLinenumber: 133
    functionLinenumberEnd: 149
    functionName: smtp_reply_log
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 17
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - smtp_reply_write_message_one_line
    - smtp_reply_is_remote
    - str_append
    - smtp_reply_get_enh_code
    linkageType: ''
    returnType: char
    signature: char *smtp_reply_log(const struct smtp_reply *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:153,1
    - Dst: smtp_reply_write_message_one_line
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:155,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 4
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: smtp_reply_get_message
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 0
    functionsReached:
    - smtp_reply_write_message_one_line
    - str_c
    - t_str_new
    linkageType: ''
    returnType: char
    signature: char *smtp_reply_get_message(const struct smtp_reply *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - struct smtp_reply*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 164
    functionName: smtp_reply_copy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 0
    functionsReached:
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void smtp_reply_copy(pool_t pool, struct smtp_reply *dst,\n\tconst
      struct smtp_reply *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:171,1
    - Dst: smtp_reply_copy
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - src
    argTypes:
    - pool_t
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 175
    functionName: smtp_reply_clone
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 4
    functionsReached:
    - p_new
    - smtp_reply_copy
    linkageType: ''
    returnType: struct smtp_reply
    signature: "struct smtp_reply *smtp_reply_clone(pool_t pool,\n\tconst struct smtp_reply
      *src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_get_enh_code
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:180,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:182,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:183,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:184,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:185,1
    - Dst: smtp_reply_get_message
      Src: /src/dovecot/src/lib-smtp/smtp-reply.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - reply
    - e
    argTypes:
    - struct smtp_reply*
    - struct event_passthrough*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 177
    functionDepth: 12
    functionLinenumber: 177
    functionLinenumberEnd: 186
    functionName: smtp_reply_add_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-reply.c
    functionUses: 8
    functionsReached:
    - struct event_passthrough*::add_int
    - smtp_reply_get_enh_code
    - struct event_passthrough*::add_str
    - smtp_reply_get_message
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void smtp_reply_add_to_event(const struct smtp_reply *reply,\n\t\t\t
      \    struct event_passthrough *e)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - conn
    - ','
    - flags
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: smtp_client_transaction_create_empty
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_client_transaction_create_empty(conn, flags, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - conn
    - ','
    - mail_from
    - ','
    - mail_params
    - ','
    - flags
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: smtp_client_transaction_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_transaction_create(conn, \\\n\t\tmail_from, mail_params,
      flags, callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - trans
    - ','
    - mail_callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: smtp_client_transaction_start
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_client_transaction_start(trans, mail_callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - trans
    - ','
    - mail_from
    - ','
    - mail_params
    - ','
    - mail_callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 113
    functionName: smtp_client_transaction_start_empty
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_transaction_start_empty(trans, mail_from, mail_params,
      \\\n\t\t\t\t\t    mail_callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - trans
    - ','
    - mail_from
    - ','
    - mail_params
    - ','
    - mail_callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 136
    functionName: smtp_client_transaction_add_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_transaction_add_mail(trans, \\\n\t\tmail_from, mail_params,
      mail_callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - trans
    - ','
    - rcpt_to
    - ','
    - rcpt_params
    - ','
    - rcpt_callback
    - ','
    - data_callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 167
    functionName: smtp_client_transaction_add_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_transaction_add_rcpt(trans, \\\n\t\trcpt_to, rcpt_params,
      rcpt_callback, data_callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - trans
    - ','
    - pool
    - ','
    - rcpt_to
    - ','
    - rcpt_params
    - ','
    - rcpt_callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 188
    functionName: smtp_client_transaction_add_pool_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_transaction_add_pool_rcpt(trans, pool, \\\n\t\trcpt_to,
      rcpt_params, rcpt_callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - trans
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: smtp_client_transaction_rcpt_set_data_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_transaction_rcpt_set_data_callback(trans, \\\n\t\t\t\t\t\t
      \      callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - trans
    - ','
    - data_input
    - ','
    - data_callback
    - ','
    - data_context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 223
    functionName: smtp_client_transaction_send
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "smtp_client_transaction_send(trans, \\\n\t\tdata_input, data_callback,
      data_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - trans
    - ','
    - reset_callback
    - ','
    - reset_context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 237
    functionName: smtp_client_transaction_reset
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-transaction.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_client_transaction_reset(trans, reset_callback, reset_context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_string_parse
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:20,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:22,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:26,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:30,1
    - Dst: struct smtp_server_callbacks*::conn_cmd_vrfy
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:33,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:35,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:36,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:38,1
    - Dst: smtp_server_command_is_replied
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:63,1
    - Dst: smtp_server_cmd_vrfy_reply_default
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:64,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:65,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 10
    functionDepth: 5
    functionLinenumber: 10
    functionLinenumberEnd: 66
    functionName: smtp_server_cmd_vrfy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - smtp_server_command_is_replied
    - smtp_server_cmd_vrfy_reply_default
    - smtp_server_reply
    - struct smtp_server_callbacks*::conn_cmd_vrfy
    - i_assert
    - smtp_server_command_ref
    - smtp_string_parse
    linkageType: ''
    returnType: void
    signature: "void smtp_server_cmd_vrfy(struct smtp_server_cmd_ctx *cmd,\n\t\t\t
      \ const char *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:70,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: smtp_server_cmd_vrfy_reply_default
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-cmd-vrfy.c
    functionUses: 2
    functionsReached:
    - i_assert
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: void smtp_server_cmd_vrfy_reply_default(struct smtp_server_cmd_ctx
      *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: test_slow_server_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - sleep
    linkageType: ''
    returnType: void
    signature: void test_slow_server_input(struct client_connection *conn ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:117,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 114
    functionDepth: 3
    functionLinenumber: 114
    functionLinenumberEnd: 121
    functionName: test_slow_server_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_slow_server_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: test_client_slow_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_slow_server(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:142,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:143,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:144,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ctx
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct _slow_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 6
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: test_server_slow_server_destroyed
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void test_server_slow_server_destroyed(struct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\t\t\t  struct _slow_server *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_create_ehlo
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:153,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:154,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _slow_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 158
    functionName: test_server_slow_server_delayed
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    - smtp_server_reply_submit
    - smtp_server_reply_create_ehlo
    linkageType: ''
    returnType: void
    signature: void test_server_slow_server_delayed(struct _slow_server *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:168,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:170,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:173,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 180
    functionName: test_server_slow_server_cmd_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_add_hook
    - timeout_add
    - i_debug
    - i_new
    linkageType: ''
    returnType: int
    signature: "int test_server_slow_server_cmd_helo(void *conn_ctx ATTR_UNUSED,\n\t\t\t\t
      struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t struct smtp_server_cmd_helo *data
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 187
    functionName: test_server_slow_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_slow_server(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:195,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:198,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:199,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 203
    functionName: test_slow_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_slow_server(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: test_slow_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_slow_client_input(struct client_connection *conn ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:219,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 216
    functionDepth: 3
    functionLinenumber: 216
    functionLinenumberEnd: 222
    functionName: test_slow_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_slow_client_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 229
    functionName: test_client_slow_client
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_slow_client(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:242,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:244,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:245,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _slow_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 240
    functionDepth: 6
    functionLinenumber: 240
    functionLinenumberEnd: 247
    functionName: test_server_slow_client_disconnect_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_slow_client_disconnect_timeout(struct _slow_client
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:256,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:258,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:259,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn_ctx
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 249
    functionDepth: 6
    functionLinenumber: 249
    functionLinenumberEnd: 261
    functionName: test_server_slow_client_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_slow_client_disconnect(void *conn_ctx, const char
      *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:267,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ctx
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct _slow_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 6
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: test_server_slow_client_cmd_destroyed
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void test_server_slow_client_cmd_destroyed(\n\tstruct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED, struct _slow_client *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:276,1
    - Dst: smtp_server_reply_create_ehlo
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:278,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:279,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:281,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _slow_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 271
    functionDepth: 6
    functionLinenumber: 271
    functionLinenumberEnd: 286
    functionName: test_server_slow_client_delayed
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    - smtp_server_reply_submit
    - smtp_server_reply_create_ehlo
    - timeout_add
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_slow_client_delayed(struct _slow_client *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:297,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:299,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:304,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 313
    functionName: test_server_slow_client_cmd_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_add_hook
    - timeout_add_short
    - i_debug
    - i_new
    linkageType: ''
    returnType: int
    signature: "int test_server_slow_client_cmd_helo(void *conn_ctx,\n\t\t\t\t struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t\t struct smtp_server_cmd_helo *data ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 321
    functionName: test_server_slow_client
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_slow_client(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:329,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:332,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:333,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 337
    functionName: test_slow_client
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_slow_client(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 354
    functionName: test_hanging_command_payload_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_hanging_command_payload_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 360
    functionName: test_client_hanging_command_payload
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_hanging_command_payload(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:378,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:379,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 381
    functionName: test_server_hanging_command_payload_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_server_hanging_command_payload_trans_free(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:389,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 383
    functionDepth: 5
    functionLinenumber: 383
    functionLinenumberEnd: 394
    functionName: test_server_hanging_command_payload_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_hanging_command_payload_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:404,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - trans
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 411
    functionName: test_server_hanging_command_payload_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - i_new
    linkageType: ''
    returnType: int
    signature: "int test_server_hanging_command_payload_data_begin(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans, struct istream *data_input)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:426,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:428,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:430,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:435,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:436,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:440,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:442,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:445,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - trans
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 413
    functionDepth: 5
    functionLinenumber: 413
    functionLinenumberEnd: 447
    functionName: test_server_hanging_command_payload_data_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_error
    - smtp_server_reply
    - i_stream_skip
    - i_debug
    - i_stream_get_error
    - i_stream_unref
    - i_assert
    - i_stream_read_data
    linkageType: ''
    returnType: int
    signature: "int test_server_hanging_command_payload_data_continue(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_cmd_ctx *cmd,\n\tstruct smtp_server_transaction
      *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 463
    functionName: test_server_hanging_command_payload
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: "void test_server_hanging_command_payload(\n\tconst struct smtp_server_settings
      *server_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:471,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:474,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:475,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 467
    functionDepth: 3
    functionLinenumber: 467
    functionLinenumberEnd: 479
    functionName: test_hanging_command_payload
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hanging_command_payload(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 487
    functionDepth: 3
    functionLinenumber: 487
    functionLinenumberEnd: 491
    functionName: test_bad_command_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_bad_command_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 497
    functionName: test_client_bad_command
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_command(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:513,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 515
    functionName: test_server_bad_command_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_server_bad_command_disconnect(void *context ATTR_UNUSED,\n\t\t\t\t
      \  const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 524
    functionName: test_server_bad_command_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_command_helo(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \    struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t     struct smtp_server_cmd_helo
      *data ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 532
    functionName: test_server_bad_command_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_command_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \    struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t     struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 542
    functionName: test_server_bad_command_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_command_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd,\n\tstruct smtp_server_transaction *trans ATTR_UNUSED,\n\tstruct
      istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 557
    functionName: test_server_bad_command
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_command(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:565,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:568,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:569,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 573
    functionName: test_bad_command
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_command(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:595,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:598,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:598,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:603,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:608,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:611,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:613,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:614,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:617,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:621,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 587
    functionDepth: 13
    functionLinenumber: 587
    functionLinenumberEnd: 622
    functionName: test_many_bad_commands_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_many_bad_commands_client_input(struct client_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:629,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:630,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:635,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:639,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:644,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 624
    functionDepth: 4
    functionLinenumber: 624
    functionLinenumberEnd: 646
    functionName: test_many_bad_commands_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_many_bad_commands_client_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:653,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 648
    functionDepth: 4
    functionLinenumber: 648
    functionLinenumberEnd: 655
    functionName: test_many_bad_commands_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_many_bad_commands_client_deinit(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 663
    functionName: test_client_many_bad_commands
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_many_bad_commands(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:674,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:676,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:676,1
    - Dst: POINTER_CAST_TO
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:679,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:680,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 681
    functionName: test_server_many_bad_commands_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST_TO
    - io_loop_stop
    - POINTER_CAST
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_server_many_bad_commands_disconnect(void *context ATTR_UNUSED,\n\t\t\t\t\t
      const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 690
    functionName: test_server_many_bad_commands_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_many_bad_commands_helo(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_cmd_helo
      *data ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 699
    functionName: test_server_many_bad_commands_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_many_bad_commands_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:707,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 709
    functionName: test_server_many_bad_commands_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_many_bad_commands_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 724
    functionName: test_server_many_bad_commands
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: 'void test_server_many_bad_commands

      (const struct smtp_server_settings *server_set)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:732,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:736,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:737,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 728
    functionDepth: 3
    functionLinenumber: 728
    functionLinenumberEnd: 741
    functionName: test_many_bad_commands
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_many_bad_commands(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 749
    functionDepth: 3
    functionLinenumber: 749
    functionLinenumberEnd: 754
    functionName: test_long_command_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_long_command_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 760
    functionName: test_client_long_command
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_long_command(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:776,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 778
    functionName: test_server_long_command_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_server_long_command_disconnect(void *context ATTR_UNUSED,\n\t\t\t\t
      \   const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 787
    functionName: test_server_long_command_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_long_command_helo(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \     struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t      struct smtp_server_cmd_helo
      *data ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 795
    functionName: test_server_long_command_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_long_command_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \     struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t      struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 805
    functionName: test_server_long_command_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply
    linkageType: ''
    returnType: int
    signature: "int test_server_long_command_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd,\n\tstruct smtp_server_transaction *trans ATTR_UNUSED,\n\tstruct
      istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 820
    functionName: test_server_long_command
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_long_command(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:828,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:832,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:833,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 824
    functionDepth: 3
    functionLinenumber: 824
    functionLinenumberEnd: 837
    functionName: test_long_command
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_long_command(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:890,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:893,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:893,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:897,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:900,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:903,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:908,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:911,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:914,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:916,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:917,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:920,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:924,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:925,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:928,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:929,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:932,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:933,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:936,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:937,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:940,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:941,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:943,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:944,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:947,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:951,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 60
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 883
    functionDepth: 13
    functionLinenumber: 883
    functionLinenumberEnd: 952
    functionName: test_long_auth_line_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_long_auth_line_client_input(struct client_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:959,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:960,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:963,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:968,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:969,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:973,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 954
    functionDepth: 4
    functionLinenumber: 954
    functionLinenumberEnd: 986
    functionName: test_long_auth_line_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_long_auth_line_client_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:992,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 988
    functionDepth: 4
    functionLinenumber: 988
    functionLinenumberEnd: 994
    functionName: test_long_auth_line_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_long_auth_line_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 996
    functionDepth: 0
    functionLinenumber: 996
    functionLinenumberEnd: 1002
    functionName: test_client_long_auth_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_long_auth_line(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1015,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1016
    functionName: test_server_long_auth_line_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_server_long_auth_line_disconnect(void *context ATTR_UNUSED,\n\t\t\t\t
      \   const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1018
    functionDepth: 0
    functionLinenumber: 1018
    functionLinenumberEnd: 1024
    functionName: test_server_long_auth_line_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_long_auth_line_helo(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \     struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t      struct smtp_server_cmd_helo
      *data ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_cmd_auth_send_challenge
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1026
    functionDepth: 2
    functionLinenumber: 1026
    functionLinenumberEnd: 1033
    functionName: test_server_long_auth_line_auth
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_cmd_auth_send_challenge
    linkageType: ''
    returnType: int
    signature: "int test_server_long_auth_line_auth(void *conn_ctx ATTR_UNUSED,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd,\n\t\t\t\tstruct smtp_server_cmd_auth *data ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1040,1
    - Dst: smtp_server_cmd_auth_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1041,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1043,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - response
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1035
    functionDepth: 3
    functionLinenumber: 1035
    functionLinenumberEnd: 1047
    functionName: test_server_long_auth_line_auth_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - strcmp
    - smtp_server_reply
    - smtp_server_cmd_auth_success
    linkageType: ''
    returnType: int
    signature: "int test_server_long_auth_line_auth_continue(void *conn_ctx ATTR_UNUSED,\n\t\t\t\t\t
      struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t\t const char *response)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1057
    functionName: test_server_long_auth_line_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_long_auth_line_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \     struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t      struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1068,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1070,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - trans
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1059
    functionDepth: 1
    functionLinenumber: 1059
    functionLinenumberEnd: 1075
    functionName: test_server_long_auth_line_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - p_new
    linkageType: ''
    returnType: int
    signature: "int test_server_long_auth_line_data_begin(void *conn_ctx ATTR_UNUSED,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t\tstruct smtp_server_transaction
      *trans,\n\t\t\t\tstruct istream *data_input)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1088,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1090,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1091,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1092,1
    - Dst: smtp_server_cmd_data_check_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1093,1
    - Dst: smtp_server_reply_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1104,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - trans
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1077
    functionDepth: 4
    functionLinenumber: 1077
    functionLinenumberEnd: 1106
    functionName: test_server_long_auth_line_data_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_all
    - i_stream_get_data
    - i_stream_skip
    - smtp_server_cmd_data_check_size
    - i_stream_read
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_long_auth_line_data_continue(void *conn_ctx ATTR_UNUSED,\n\t\t\t\t
      \  struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t   struct smtp_server_transaction
      *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1127
    functionName: test_server_long_auth_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_long_auth_line(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1129
    functionDepth: 0
    functionLinenumber: 1129
    functionLinenumberEnd: 1151
    functionName: test_server_long_auth_line_small_buf
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: "void test_server_long_auth_line_small_buf(\n\tconst struct smtp_server_settings
      *server_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1159,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1163,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1164,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1155
    functionDepth: 3
    functionLinenumber: 1155
    functionLinenumberEnd: 1168
    functionName: test_long_auth_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_long_auth_line(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1174,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1178,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1179,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1170
    functionDepth: 3
    functionLinenumber: 1170
    functionLinenumberEnd: 1183
    functionName: test_long_auth_line_small_buf
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_long_auth_line_small_buf(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1192
    functionDepth: 3
    functionLinenumber: 1192
    functionLinenumberEnd: 1208
    functionName: test_big_data_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_big_data_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1210
    functionDepth: 0
    functionLinenumber: 1210
    functionLinenumberEnd: 1214
    functionName: test_client_big_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_big_data(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1229,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1223
    functionDepth: 1
    functionLinenumber: 1223
    functionLinenumberEnd: 1231
    functionName: test_server_big_data_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_server_big_data_trans_free(void *conn_ctx  ATTR_UNUSED,\n\t\t\t\tstruct
      smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1239,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1233
    functionDepth: 5
    functionLinenumber: 1233
    functionLinenumberEnd: 1243
    functionName: test_server_big_data_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_big_data_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_recipient
      *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1254,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - trans
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1261
    functionName: test_server_big_data_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - i_new
    linkageType: ''
    returnType: int
    signature: "int test_server_big_data_data_begin(void *conn_ctx ATTR_UNUSED,\n\t\t\t\tstruct
      smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t\tstruct smtp_server_transaction
      *trans,\n\t\t\t\tstruct istream *data_input)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1276,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1279,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1287,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1294,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1302,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - trans
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1263
    functionDepth: 5
    functionLinenumber: 1263
    functionLinenumberEnd: 1304
    functionName: test_server_big_data_data_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply
    - i_stream_skip
    - i_debug
    - test_assert
    - i_stream_read_data
    linkageType: ''
    returnType: int
    signature: "int test_server_big_data_data_continue(void *conn_ctx ATTR_UNUSED,\n\t\t\t\t
      \  struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t   struct smtp_server_transaction
      *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1306
    functionDepth: 0
    functionLinenumber: 1306
    functionLinenumberEnd: 1318
    functionName: test_server_big_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_big_data(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1326,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1330,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1331,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1322
    functionDepth: 3
    functionLinenumber: 1322
    functionLinenumberEnd: 1335
    functionName: test_big_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_big_data(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1360,1
    - Dst: smtp_reply_parse_ehlo
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1363,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1370,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1370,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1374,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1379,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1382,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1385,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1388,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1390,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1391,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1394,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1398,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1350
    functionDepth: 13
    functionLinenumber: 1350
    functionLinenumberEnd: 1399
    functionName: test_bad_helo_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - smtp_reply_parse_ehlo
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_bad_helo_client_input(struct client_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1405,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1406,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1411,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1414,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1417,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1420,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1423,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1401
    functionDepth: 4
    functionLinenumber: 1401
    functionLinenumberEnd: 1425
    functionName: test_bad_helo_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_bad_helo_client_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1431,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1427
    functionDepth: 4
    functionLinenumber: 1427
    functionLinenumberEnd: 1433
    functionName: test_bad_helo_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_bad_helo_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1435
    functionDepth: 0
    functionLinenumber: 1435
    functionLinenumberEnd: 1441
    functionName: test_client_bad_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_helo(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1452
    functionDepth: 1
    functionLinenumber: 1452
    functionLinenumberEnd: 1457
    functionName: test_server_bad_helo_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_bad_helo_disconnect(void *context ATTR_UNUSED, const
      char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1459
    functionDepth: 0
    functionLinenumber: 1459
    functionLinenumberEnd: 1465
    functionName: test_server_bad_helo_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_helo_helo(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_cmd_helo
      *data ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1467
    functionDepth: 0
    functionLinenumber: 1467
    functionLinenumberEnd: 1473
    functionName: test_server_bad_helo_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_helo_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1475
    functionDepth: 1
    functionLinenumber: 1475
    functionLinenumberEnd: 1483
    functionName: test_server_bad_helo_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_helo_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd,\n\tstruct smtp_server_transaction *trans ATTR_UNUSED,\n\tstruct
      istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1485
    functionDepth: 0
    functionLinenumber: 1485
    functionLinenumberEnd: 1497
    functionName: test_server_bad_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_helo(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1505,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1508,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1509,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1501
    functionDepth: 3
    functionLinenumber: 1501
    functionLinenumberEnd: 1513
    functionName: test_bad_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_helo(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1535,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1538,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1538,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1542,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1547,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1550,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1553,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1556,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1557,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1560,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1564,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1528
    functionDepth: 13
    functionLinenumber: 1528
    functionLinenumberEnd: 1565
    functionName: test_bad_mail_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_bad_mail_client_input(struct client_connection *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1571,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1572,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1577,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1582,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1587,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1592,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1597,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1602,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1607,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1612,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1617,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1622,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1567
    functionDepth: 4
    functionLinenumber: 1567
    functionLinenumberEnd: 1624
    functionName: test_bad_mail_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_bad_mail_client_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1630,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1626
    functionDepth: 4
    functionLinenumber: 1626
    functionLinenumberEnd: 1632
    functionName: test_bad_mail_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_bad_mail_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1634
    functionDepth: 0
    functionLinenumber: 1634
    functionLinenumberEnd: 1640
    functionName: test_client_bad_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_mail(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1644
    functionDepth: 1
    functionLinenumber: 1644
    functionLinenumberEnd: 1649
    functionName: test_server_bad_mail_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_bad_mail_disconnect(void *context ATTR_UNUSED, const
      char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1658
      start: 1651
    functionDepth: 1
    functionLinenumber: 1651
    functionLinenumberEnd: 1658
    functionName: test_server_bad_mail_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_mail_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1660
    functionDepth: 1
    functionLinenumber: 1660
    functionLinenumberEnd: 1668
    functionName: test_server_bad_mail_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_mail_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1670
    functionDepth: 0
    functionLinenumber: 1670
    functionLinenumberEnd: 1680
    functionName: test_server_bad_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_mail(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1688,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1691,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1692,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1695,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1696
      start: 1684
    functionDepth: 3
    functionLinenumber: 1684
    functionLinenumberEnd: 1696
    functionName: test_bad_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_mail(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1719,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1722,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1722,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1726,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1729,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1734,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1737,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1740,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1743,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1744,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1747,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1751,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1711
    functionDepth: 13
    functionLinenumber: 1711
    functionLinenumberEnd: 1752
    functionName: test_bad_rcpt_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_bad_rcpt_client_input(struct client_connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1758,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1759,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1764,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1770,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1776,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1782,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1788,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1794,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1800,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1806,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1754
    functionDepth: 4
    functionLinenumber: 1754
    functionLinenumberEnd: 1808
    functionName: test_bad_rcpt_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_bad_rcpt_client_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1814,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1810
    functionDepth: 4
    functionLinenumber: 1810
    functionLinenumberEnd: 1816
    functionName: test_bad_rcpt_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_bad_rcpt_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1818
    functionDepth: 0
    functionLinenumber: 1818
    functionLinenumberEnd: 1824
    functionName: test_client_bad_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_rcpt(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1828
    functionDepth: 1
    functionLinenumber: 1828
    functionLinenumberEnd: 1833
    functionName: test_server_bad_rcpt_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_bad_rcpt_disconnect(void *context ATTR_UNUSED, const
      char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1835
    functionDepth: 0
    functionLinenumber: 1835
    functionLinenumberEnd: 1841
    functionName: test_server_bad_rcpt_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_rcpt_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1843
    functionDepth: 1
    functionLinenumber: 1843
    functionLinenumberEnd: 1851
    functionName: test_server_bad_rcpt_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_rcpt_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1863
      start: 1853
    functionDepth: 0
    functionLinenumber: 1853
    functionLinenumberEnd: 1863
    functionName: test_server_bad_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_rcpt(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1871,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1874,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1875,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1867
    functionDepth: 3
    functionLinenumber: 1867
    functionLinenumberEnd: 1879
    functionName: test_bad_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_rcpt(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1902,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1905,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1905,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1909,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1914,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1917,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1917,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1920,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1923,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1924,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1927,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1931,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1932
      start: 1894
    functionDepth: 13
    functionLinenumber: 1894
    functionLinenumberEnd: 1932
    functionName: test_bad_vrfy_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_unreached
    - io_loop_stop
    - connection_disconnect
    - smtp_reply_log
    - i_assert
    - i_debug
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: void test_bad_vrfy_client_input(struct client_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1939,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1940,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1945,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1949,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1953,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1957,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1961,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1934
    functionDepth: 4
    functionLinenumber: 1934
    functionLinenumberEnd: 1963
    functionName: test_bad_vrfy_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_bad_vrfy_client_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1970,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1972
      start: 1965
    functionDepth: 4
    functionLinenumber: 1965
    functionLinenumberEnd: 1972
    functionName: test_bad_vrfy_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_bad_vrfy_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1974
    functionDepth: 0
    functionLinenumber: 1974
    functionLinenumberEnd: 1980
    functionName: test_client_bad_vrfy
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_vrfy(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1988,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1984
    functionDepth: 1
    functionLinenumber: 1984
    functionLinenumberEnd: 1989
    functionName: test_server_bad_vrfy_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_bad_vrfy_disconnect(void *context ATTR_UNUSED, const
      char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:1996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1991
    functionDepth: 1
    functionLinenumber: 1991
    functionLinenumberEnd: 1998
    functionName: test_server_bad_vrfy_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_vrfy_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2008
      start: 2000
    functionDepth: 1
    functionLinenumber: 2000
    functionLinenumberEnd: 2008
    functionName: test_server_bad_vrfy_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_vrfy_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2018
      start: 2010
    functionDepth: 0
    functionLinenumber: 2010
    functionLinenumberEnd: 2018
    functionName: test_server_bad_vrfy
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_vrfy(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2026,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2029,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2030,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2022
    functionDepth: 3
    functionLinenumber: 2022
    functionLinenumberEnd: 2034
    functionName: test_bad_vrfy
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_vrfy(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2057,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2060,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2060,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2064,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2069,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2072,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2072,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2075,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2078,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2079,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2082,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2086,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2049
    functionDepth: 13
    functionLinenumber: 2049
    functionLinenumberEnd: 2087
    functionName: test_bad_noop_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_unreached
    - io_loop_stop
    - connection_disconnect
    - smtp_reply_log
    - i_assert
    - i_debug
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: void test_bad_noop_client_input(struct client_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2094,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2095,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2100,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2104,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2108,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2112,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2116,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2118
      start: 2089
    functionDepth: 4
    functionLinenumber: 2089
    functionLinenumberEnd: 2118
    functionName: test_bad_noop_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_bad_noop_client_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2125,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2127
      start: 2120
    functionDepth: 4
    functionLinenumber: 2120
    functionLinenumberEnd: 2127
    functionName: test_bad_noop_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_bad_noop_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2129
    functionDepth: 0
    functionLinenumber: 2129
    functionLinenumberEnd: 2135
    functionName: test_client_bad_noop
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_noop(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2139
    functionDepth: 1
    functionLinenumber: 2139
    functionLinenumberEnd: 2144
    functionName: test_server_bad_noop_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_bad_noop_disconnect(void *context ATTR_UNUSED, const
      char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2153
      start: 2146
    functionDepth: 1
    functionLinenumber: 2146
    functionLinenumberEnd: 2153
    functionName: test_server_bad_noop_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_noop_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \ struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2155
    functionDepth: 1
    functionLinenumber: 2155
    functionLinenumberEnd: 2163
    functionName: test_server_bad_noop_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_noop_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2173
      start: 2165
    functionDepth: 0
    functionLinenumber: 2165
    functionLinenumberEnd: 2173
    functionName: test_server_bad_noop
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_noop(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2181,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2184,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2185,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2177
    functionDepth: 3
    functionLinenumber: 2177
    functionLinenumberEnd: 2189
    functionName: test_bad_noop
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_noop(void)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2211,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2214,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2223,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2227,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2230,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2233,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2234,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2237,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2241,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2242
      start: 2204
    functionDepth: 13
    functionLinenumber: 2204
    functionLinenumberEnd: 2242
    functionName: test_mail_workarounds_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_mail_workarounds_client_input(struct client_connection *conn)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2249,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2250,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2255,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2260,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2265,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2270,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2275,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2280,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2285,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2290,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2295,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2300,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2305,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2310,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2312
      start: 2244
    functionDepth: 4
    functionLinenumber: 2244
    functionLinenumberEnd: 2312
    functionName: test_mail_workarounds_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_mail_workarounds_client_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2319,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2321
      start: 2314
    functionDepth: 4
    functionLinenumber: 2314
    functionLinenumberEnd: 2321
    functionName: test_mail_workarounds_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_mail_workarounds_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2329
      start: 2323
    functionDepth: 0
    functionLinenumber: 2323
    functionLinenumberEnd: 2329
    functionName: test_client_mail_workarounds
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_mail_workarounds(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2339
      start: 2333
    functionDepth: 1
    functionLinenumber: 2333
    functionLinenumberEnd: 2339
    functionName: test_server_mail_workarounds_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_server_mail_workarounds_disconnect(void *context ATTR_UNUSED,\n\t\t\t\t\tconst
      char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2348
      start: 2341
    functionDepth: 1
    functionLinenumber: 2341
    functionLinenumberEnd: 2348
    functionName: test_server_mail_workarounds_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_mail_workarounds_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2350
    functionDepth: 1
    functionLinenumber: 2350
    functionLinenumberEnd: 2358
    functionName: test_server_mail_workarounds_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_mail_workarounds_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2371
      start: 2360
    functionDepth: 0
    functionLinenumber: 2360
    functionLinenumberEnd: 2371
    functionName: test_server_mail_workarounds
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_mail_workarounds(const struct smtp_server_settings
      *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2379,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2385,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2386,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2390
      start: 2375
    functionDepth: 3
    functionLinenumber: 2375
    functionLinenumberEnd: 2390
    functionName: test_mail_workarounds
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_workarounds(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2412,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2415,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2415,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2419,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2422,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2427,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2430,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2433,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2436,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2437,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2440,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2444,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2405
    functionDepth: 13
    functionLinenumber: 2405
    functionLinenumberEnd: 2445
    functionName: test_rcpt_workarounds_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_rcpt_workarounds_client_input(struct client_connection *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2452,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2453,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2458,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2464,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2470,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2476,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2482,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2488,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2494,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2500,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2506,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2512,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2514
      start: 2447
    functionDepth: 4
    functionLinenumber: 2447
    functionLinenumberEnd: 2514
    functionName: test_rcpt_workarounds_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_rcpt_workarounds_client_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2520,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2522
      start: 2516
    functionDepth: 4
    functionLinenumber: 2516
    functionLinenumberEnd: 2522
    functionName: test_rcpt_workarounds_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_rcpt_workarounds_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2530
      start: 2524
    functionDepth: 0
    functionLinenumber: 2524
    functionLinenumberEnd: 2530
    functionName: test_client_rcpt_workarounds
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_rcpt_workarounds(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2540
      start: 2534
    functionDepth: 1
    functionLinenumber: 2534
    functionLinenumberEnd: 2540
    functionName: test_server_rcpt_workarounds_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_server_rcpt_workarounds_disconnect(void *context ATTR_UNUSED,\n\t\t\t\t\tconst
      char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2548
      start: 2542
    functionDepth: 0
    functionLinenumber: 2542
    functionLinenumberEnd: 2548
    functionName: test_server_rcpt_workarounds_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_rcpt_workarounds_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2558
      start: 2550
    functionDepth: 1
    functionLinenumber: 2550
    functionLinenumberEnd: 2558
    functionName: test_server_rcpt_workarounds_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_rcpt_workarounds_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2571
      start: 2560
    functionDepth: 0
    functionLinenumber: 2560
    functionLinenumberEnd: 2571
    functionName: test_server_rcpt_workarounds
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_rcpt_workarounds(const struct smtp_server_settings
      *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2579,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2585,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2586,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2590
      start: 2575
    functionDepth: 3
    functionLinenumber: 2575
    functionLinenumberEnd: 2590
    functionName: test_rcpt_workarounds
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_rcpt_workarounds(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2598
    functionDepth: 3
    functionLinenumber: 2598
    functionLinenumberEnd: 2623
    functionName: test_too_many_recipients_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_too_many_recipients_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2625
    functionDepth: 0
    functionLinenumber: 2625
    functionLinenumberEnd: 2629
    functionName: test_client_too_many_recipients
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_too_many_recipients(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2639
      start: 2633
    functionDepth: 1
    functionLinenumber: 2633
    functionLinenumberEnd: 2639
    functionName: test_server_too_many_recipients_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_server_too_many_recipients_trans_free(\n\tvoid *conn_ctx
      ATTR_UNUSED,\n\tstruct smtp_server_transaction *trans ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2647,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2651
      start: 2641
    functionDepth: 5
    functionLinenumber: 2641
    functionLinenumberEnd: 2651
    functionName: test_server_too_many_recipients_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_too_many_recipients_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2659,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2659,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - cmd
    - trans
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2653
    functionDepth: 1
    functionLinenumber: 2653
    functionLinenumberEnd: 2663
    functionName: test_server_too_many_recipients_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - array_count
    - smtp_server_reply
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_too_many_recipients_data_begin(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_cmd_ctx *cmd,\n\tstruct smtp_server_transaction
      *trans,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2675
      start: 2665
    functionDepth: 0
    functionLinenumber: 2665
    functionLinenumberEnd: 2675
    functionName: test_server_too_many_recipients
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_too_many_recipients(const struct smtp_server_settings
      *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2683,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2687,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2688,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2692
      start: 2679
    functionDepth: 3
    functionLinenumber: 2679
    functionLinenumberEnd: 2692
    functionName: test_too_many_recipients
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_too_many_recipients(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2700
    functionDepth: 3
    functionLinenumber: 2700
    functionLinenumberEnd: 2707
    functionName: test_data_no_mail_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_no_mail_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2713
      start: 2709
    functionDepth: 0
    functionLinenumber: 2709
    functionLinenumberEnd: 2713
    functionName: test_client_data_no_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_data_no_mail(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2725
      start: 2717
    functionDepth: 1
    functionLinenumber: 2717
    functionLinenumberEnd: 2725
    functionName: test_server_data_no_mail_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_data_no_mail_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \     struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t      struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2734,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2736
      start: 2727
    functionDepth: 1
    functionLinenumber: 2727
    functionLinenumberEnd: 2736
    functionName: test_server_data_no_mail_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_data_no_mail_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2738
    functionDepth: 1
    functionLinenumber: 2738
    functionLinenumberEnd: 2744
    functionName: test_server_data_no_mail_rset
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: int
    signature: "int test_server_data_no_mail_rset(void *conn_ctx ATTR_UNUSED,\n\t\t\t
      \     struct smtp_server_cmd_ctx *cmd ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2756
      start: 2746
    functionDepth: 0
    functionLinenumber: 2746
    functionLinenumberEnd: 2756
    functionName: test_server_data_no_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_data_no_mail(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2764,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2770,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2771,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2775
      start: 2760
    functionDepth: 3
    functionLinenumber: 2760
    functionLinenumberEnd: 2775
    functionName: test_data_no_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_data_no_mail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2791
      start: 2783
    functionDepth: 3
    functionLinenumber: 2783
    functionLinenumberEnd: 2791
    functionName: test_data_no_rcpt_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_no_rcpt_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2797
      start: 2793
    functionDepth: 0
    functionLinenumber: 2793
    functionLinenumberEnd: 2797
    functionName: test_client_data_no_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_data_no_rcpt(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2801
    functionDepth: 1
    functionLinenumber: 2801
    functionLinenumberEnd: 2807
    functionName: test_server_data_no_rcpt_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_server_data_no_rcpt_trans_free(\n\tvoid *conn_ctx  ATTR_UNUSED,\n\tstruct
      smtp_server_transaction *trans ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2817
      start: 2809
    functionDepth: 1
    functionLinenumber: 2809
    functionLinenumberEnd: 2817
    functionName: test_server_data_no_rcpt_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_data_no_rcpt_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2828
      start: 2819
    functionDepth: 1
    functionLinenumber: 2819
    functionLinenumberEnd: 2828
    functionName: test_server_data_no_rcpt_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_data_no_rcpt_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2840
      start: 2830
    functionDepth: 0
    functionLinenumber: 2830
    functionLinenumberEnd: 2840
    functionName: test_server_data_no_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_data_no_rcpt(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2848,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2854,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2855,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2859
      start: 2844
    functionDepth: 3
    functionLinenumber: 2844
    functionLinenumberEnd: 2859
    functionName: test_data_no_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_data_no_rcpt(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2878
      start: 2867
    functionDepth: 3
    functionLinenumber: 2867
    functionLinenumberEnd: 2878
    functionName: test_bad_pipelined_data_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_bad_pipelined_data_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2884
      start: 2880
    functionDepth: 0
    functionLinenumber: 2880
    functionLinenumberEnd: 2884
    functionName: test_client_bad_pipelined_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_pipelined_data(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2894
      start: 2888
    functionDepth: 1
    functionLinenumber: 2888
    functionLinenumberEnd: 2894
    functionName: test_server_bad_pipelined_data_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_server_bad_pipelined_data_trans_free(\n\tvoid *conn_ctx
      \ ATTR_UNUSED,\n\tstruct smtp_server_transaction *trans ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2904
      start: 2896
    functionDepth: 1
    functionLinenumber: 2896
    functionLinenumberEnd: 2904
    functionName: test_server_bad_pipelined_data_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_pipelined_data_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2915
      start: 2906
    functionDepth: 1
    functionLinenumber: 2906
    functionLinenumberEnd: 2915
    functionName: test_server_bad_pipelined_data_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_pipelined_data_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2927
      start: 2917
    functionDepth: 0
    functionLinenumber: 2917
    functionLinenumberEnd: 2927
    functionName: test_server_bad_pipelined_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_pipelined_data(const struct smtp_server_settings
      *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2935,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2942,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2943,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2947
      start: 2931
    functionDepth: 3
    functionLinenumber: 2931
    functionLinenumberEnd: 2947
    functionName: test_bad_pipelined_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_pipelined_data(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2963
      start: 2955
    functionDepth: 3
    functionLinenumber: 2955
    functionLinenumberEnd: 2963
    functionName: test_bad_pipelined_data2_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_bad_pipelined_data2_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2969
      start: 2965
    functionDepth: 0
    functionLinenumber: 2965
    functionLinenumberEnd: 2969
    functionName: test_client_bad_pipelined_data2
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_pipelined_data2(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2984,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2986
      start: 2978
    functionDepth: 1
    functionLinenumber: 2978
    functionLinenumberEnd: 2986
    functionName: test_server_bad_pipelined_data2_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_server_bad_pipelined_data2_trans_free(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2994,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:2995,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2998
      start: 2988
    functionDepth: 5
    functionLinenumber: 2988
    functionLinenumberEnd: 2998
    functionName: test_server_bad_pipelined_data2_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_pipelined_data2_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3008,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - trans
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3015
      start: 3000
    functionDepth: 1
    functionLinenumber: 3000
    functionLinenumberEnd: 3015
    functionName: test_server_bad_pipelined_data2_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - i_new
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_pipelined_data2_data_begin(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans, struct istream *data_input)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3026,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3027,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3028,1
    - Dst: smtp_server_reply_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3038,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3040
      start: 3017
    functionDepth: 4
    functionLinenumber: 3017
    functionLinenumberEnd: 3040
    functionName: test_server_bad_pipelined_data2_data_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_all
    - i_stream_read
    - i_stream_get_data_size
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_pipelined_data2_data_continue(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_cmd_ctx *cmd,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3054
      start: 3042
    functionDepth: 0
    functionLinenumber: 3042
    functionLinenumberEnd: 3054
    functionName: test_server_bad_pipelined_data2
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_pipelined_data2(const struct smtp_server_settings
      *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3062,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3069,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3070,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3074
      start: 3058
    functionDepth: 3
    functionLinenumber: 3058
    functionLinenumberEnd: 3074
    functionName: test_bad_pipelined_data2
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_pipelined_data2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3091
      start: 3082
    functionDepth: 3
    functionLinenumber: 3082
    functionLinenumberEnd: 3091
    functionName: test_data_binarymime_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_data_binarymime_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3097
      start: 3093
    functionDepth: 0
    functionLinenumber: 3093
    functionLinenumberEnd: 3097
    functionName: test_client_data_binarymime
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_data_binarymime(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3107
      start: 3101
    functionDepth: 1
    functionLinenumber: 3101
    functionLinenumberEnd: 3107
    functionName: test_server_data_binarymime_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_server_data_binarymime_trans_free(\n\tvoid *conn_ctx  ATTR_UNUSED,\n\tstruct
      smtp_server_transaction *trans ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3115,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3119
      start: 3109
    functionDepth: 5
    functionLinenumber: 3109
    functionLinenumberEnd: 3119
    functionName: test_server_data_binarymime_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_data_binarymime_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3130
      start: 3121
    functionDepth: 1
    functionLinenumber: 3121
    functionLinenumberEnd: 3130
    functionName: test_server_data_binarymime_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_data_binarymime_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3142
      start: 3132
    functionDepth: 0
    functionLinenumber: 3132
    functionLinenumberEnd: 3142
    functionName: test_server_data_binarymime
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_data_binarymime(const struct smtp_server_settings
      *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3150,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3156,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3157,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3161
      start: 3146
    functionDepth: 3
    functionLinenumber: 3146
    functionLinenumberEnd: 3161
    functionName: test_data_binarymime
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_data_binarymime(void)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3184,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3187,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3187,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3191,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3197,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3200,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3203,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3204,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3207,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3208,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3211,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3215,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 45
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3216
      start: 3176
    functionDepth: 13
    functionLinenumber: 3176
    functionLinenumberEnd: 3216
    functionName: test_mail_broken_path_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parse_next
    - i_info
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_mail_broken_path_client_input(struct client_connection *conn)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3223,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3224,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3229,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3234,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3239,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3244,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3249,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3254,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3259,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3264,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3269,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3274,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3279,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3284,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3289,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3294,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3299,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3304,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3309,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3314,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3319,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 62
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3321
      start: 3218
    functionDepth: 4
    functionLinenumber: 3218
    functionLinenumberEnd: 3321
    functionName: test_mail_broken_path_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void test_mail_broken_path_client_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3327,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3329
      start: 3323
    functionDepth: 4
    functionLinenumber: 3323
    functionLinenumberEnd: 3329
    functionName: test_mail_broken_path_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_mail_broken_path_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3337
      start: 3331
    functionDepth: 0
    functionLinenumber: 3331
    functionLinenumberEnd: 3337
    functionName: test_client_mail_broken_path
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_mail_broken_path(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3347
      start: 3341
    functionDepth: 1
    functionLinenumber: 3341
    functionLinenumberEnd: 3347
    functionName: test_server_mail_broken_path_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_server_mail_broken_path_disconnect(void *context ATTR_UNUSED,\n\t\t\t\t\tconst
      char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3356
      start: 3349
    functionDepth: 1
    functionLinenumber: 3349
    functionLinenumberEnd: 3356
    functionName: test_server_mail_broken_path_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_mail_broken_path_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3366
      start: 3358
    functionDepth: 1
    functionLinenumber: 3358
    functionLinenumberEnd: 3366
    functionName: test_server_mail_broken_path_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    linkageType: ''
    returnType: int
    signature: "int test_server_mail_broken_path_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED,\n\tstruct istream *data_input ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3379
      start: 3368
    functionDepth: 0
    functionLinenumber: 3368
    functionLinenumberEnd: 3379
    functionName: test_server_mail_broken_path
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_mail_broken_path(const struct smtp_server_settings
      *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3387,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3391,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3392,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3396
      start: 3383
    functionDepth: 3
    functionLinenumber: 3383
    functionLinenumberEnd: 3396
    functionName: test_mail_broken_path
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_mail_broken_path(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3415
      start: 3404
    functionDepth: 3
    functionLinenumber: 3404
    functionLinenumberEnd: 3415
    functionName: test_bad_pipelined_mail_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_bad_pipelined_mail_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3421
      start: 3417
    functionDepth: 0
    functionLinenumber: 3417
    functionLinenumberEnd: 3421
    functionName: test_client_bad_pipelined_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_bad_pipelined_mail(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3436,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - trans
    argTypes:
    - void*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3438
      start: 3430
    functionDepth: 1
    functionLinenumber: 3430
    functionLinenumberEnd: 3438
    functionName: test_server_bad_pipelined_mail_trans_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_server_bad_pipelined_mail_trans_free(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3446,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - rcpt
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3450
      start: 3440
    functionDepth: 5
    functionLinenumber: 3440
    functionLinenumberEnd: 3450
    functionName: test_server_bad_pipelined_mail_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_address_encode
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_pipelined_mail_rcpt(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_recipient
      *rcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3460,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - trans
    - data_input
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3467
      start: 3452
    functionDepth: 1
    functionLinenumber: 3452
    functionLinenumberEnd: 3467
    functionName: test_server_bad_pipelined_mail_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - i_new
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_pipelined_mail_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\tstruct smtp_server_transaction
      *trans, struct istream *data_input)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3478,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3479,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3480,1
    - Dst: smtp_server_reply_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3490,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3492
      start: 3469
    functionDepth: 4
    functionLinenumber: 3469
    functionLinenumberEnd: 3492
    functionName: test_server_bad_pipelined_mail_data_continue
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_all
    - i_stream_read
    - i_stream_get_data_size
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int test_server_bad_pipelined_mail_data_continue(\n\tvoid *conn_ctx
      ATTR_UNUSED, struct smtp_server_cmd_ctx *cmd,\n\tstruct smtp_server_transaction
      *trans ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3506
      start: 3494
    functionDepth: 0
    functionLinenumber: 3494
    functionLinenumberEnd: 3506
    functionName: test_server_bad_pipelined_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_pipelined_mail(const struct smtp_server_settings
      *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3514,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3521,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3522,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3526
      start: 3510
    functionDepth: 3
    functionLinenumber: 3510
    functionLinenumberEnd: 3526
    functionName: test_bad_pipelined_mail
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_pipelined_mail(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_parse_ehlo
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3550,1
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3553,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3560,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3560,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3564,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3565,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3565,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3569,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3571,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3573,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3574,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3577,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3581,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3582
      start: 3541
    functionDepth: 13
    functionLinenumber: 3541
    functionLinenumberEnd: 3582
    functionName: test_tls_sni_client_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - smtp_reply_parse_next
    - smtp_reply_parse_ehlo
    - i_unreached
    - io_loop_stop
    - smtp_reply_log
    - i_assert
    - i_debug
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void test_tls_sni_client_input(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3588,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3589,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3593
      start: 3584
    functionDepth: 4
    functionLinenumber: 3584
    functionLinenumberEnd: 3593
    functionName: test_tls_sni_client_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_tls_sni_client_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3599,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3601
      start: 3595
    functionDepth: 4
    functionLinenumber: 3595
    functionLinenumberEnd: 3601
    functionName: test_tls_sni_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_deinit
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_tls_sni_client_deinit(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3609
      start: 3603
    functionDepth: 0
    functionLinenumber: 3603
    functionLinenumberEnd: 3609
    functionName: test_client_tls_sni
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_tls_sni(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3618
      start: 3613
    functionDepth: 1
    functionLinenumber: 3613
    functionLinenumberEnd: 3618
    functionName: test_server_tls_sni_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_tls_sni_disconnect(void *context ATTR_UNUSED, const
      char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3626
      start: 3620
    functionDepth: 0
    functionLinenumber: 3620
    functionLinenumberEnd: 3626
    functionName: test_server_tls_sni_helo
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_tls_sni_helo(void *conn_ctx ATTR_UNUSED,\n\t\t\t  struct
      smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_cmd_helo *data
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_recipient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3634
      start: 3628
    functionDepth: 0
    functionLinenumber: 3628
    functionLinenumberEnd: 3634
    functionName: test_server_tls_sni_rcpt
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_server_tls_sni_rcpt(void *conn_ctx ATTR_UNUSED,\n\t\t\t  struct
      smtp_server_cmd_ctx *cmd ATTR_UNUSED,\n\t\t\t  struct smtp_server_recipient
      *rcpt ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - cmd
    - ATTR_UNUSED
    - data_input ATTR_UNUSED
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_transaction*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3644
      start: 3636
    functionDepth: 1
    functionLinenumber: 3636
    functionLinenumberEnd: 3644
    functionName: test_server_tls_sni_data_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply
    linkageType: ''
    returnType: int
    signature: "int test_server_tls_sni_data_begin(\n\tvoid *conn_ctx ATTR_UNUSED,
      struct smtp_server_cmd_ctx *cmd,\n\tstruct smtp_server_transaction *trans ATTR_UNUSED,\n\tstruct
      istream *data_input ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3653,1
    - Dst: smtp_server_connection_start
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3655,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - conn_ctx
    - name
    - ATTR_UNUSED
    argTypes:
    - void*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3658
      start: 3646
    functionDepth: 1
    functionLinenumber: 3646
    functionLinenumberEnd: 3658
    functionName: test_server_tls_sni_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - smtp_server_connection_start
    linkageType: ''
    returnType: int
    signature: "int test_server_tls_sni_callback(void *conn_ctx, const char *name,\n\t\t\t
      \    const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3675
      start: 3660
    functionDepth: 0
    functionLinenumber: 3660
    functionLinenumberEnd: 3675
    functionName: test_server_tls_sni
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_tls_sni(const struct smtp_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults_ssl
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3686,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3689,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3690,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3694
      start: 3679
    functionDepth: 3
    functionLinenumber: 3679
    functionLinenumberEnd: 3694
    functionName: test_tls_sni
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_server_defaults_ssl
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_tls_sni(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3744,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3746,1
    - Dst: ssl_iostream_context_init_client
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3750,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3752,1
    - Dst: io_stream_create_ssl_client
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3756,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3760,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3763,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3764,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3765,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3769,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3771
      start: 3736
    functionDepth: 3
    functionLinenumber: 3736
    functionLinenumberEnd: 3771
    functionName: client_connection_init_ssl
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - connection_input_halt
    - i_error
    - ssl_iostream_handshake
    - ssl_iostream_get_last_error
    - ssl_iostream_test_settings_client
    - io_stream_create_ssl_client
    - ssl_iostream_context_init_client
    linkageType: ''
    returnType: int
    signature: int client_connection_init_ssl(struct client_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_input
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3779
      start: 3773
    functionDepth: 0
    functionLinenumber: 3773
    functionLinenumberEnd: 3779
    functionName: client_connection_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_input
    linkageType: ''
    returnType: void
    signature: void client_connection_input(struct connection *_conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3786,1
    - Dst: client_connection_init_ssl
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3789,1
    - Dst: client_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3790,1
    - Dst: test_client_connected
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3794,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3796
      start: 3781
    functionDepth: 4
    functionLinenumber: 3781
    functionLinenumberEnd: 3796
    functionName: client_connection_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - client_connection_deinit
    - i_debug
    - client_connection_init_ssl
    - test_client_connected
    linkageType: ''
    returnType: void
    signature: void client_connection_connected(struct connection *_conn, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3803,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3804,1
    - Dst: connection_init_client_ip
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3807,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3809,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ip
    - port
    argTypes:
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3811
      start: 3798
    functionDepth: 8
    functionLinenumber: 3798
    functionLinenumberEnd: 3811
    functionName: client_connection_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 3
    functionsReached:
    - event_set_forced_debug
    - pool_alloconly_create
    - connection_client_connect
    - p_new
    - connection_init_client_ip
    linkageType: ''
    returnType: void
    signature: void client_connection_init(const struct ip_addr *ip, in_port_t port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3820,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3822,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3823,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3824,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3825
      start: 3813
    functionDepth: 4
    functionLinenumber: 3813
    functionLinenumberEnd: 3825
    functionName: client_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 2
    functionsReached:
    - pool_unref
    - connection_deinit
    - ssl_iostream_destroy
    - test_client_deinit
    linkageType: ''
    returnType: void
    signature: void client_connection_deinit(struct client_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3832
      start: 3827
    functionDepth: 0
    functionLinenumber: 3827
    functionLinenumberEnd: 3832
    functionName: client_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 4
    functionsReached:
    - client_connection_deinit
    linkageType: ''
    returnType: void
    signature: void client_connection_destroy(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3853,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3855,1
    - Dst: client_connection_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3858,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3860,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3863,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3865,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3868
      start: 3848
    functionDepth: 5
    functionLinenumber: 3848
    functionLinenumberEnd: 3868
    functionName: test_client_run
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 25
    functionsReached:
    - connection_list_init
    - ssl_iostream_context_unref
    - io_remove
    - client_connection_init
    - i_debug
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_client_run(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - smtp_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3882
      start: 3874
    functionDepth: 1
    functionLinenumber: 3874
    functionLinenumberEnd: 3882
    functionName: test_server_defaults
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 24
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void test_server_defaults(struct smtp_server_settings *smtp_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3889,1
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - smtp_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3893
      start: 3884
    functionDepth: 2
    functionLinenumber: 3884
    functionLinenumberEnd: 3893
    functionName: test_server_defaults_ssl
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 1
    functionsReached:
    - test_server_defaults
    - ssl_iostream_test_settings_server
    linkageType: ''
    returnType: void
    signature: void test_server_defaults_ssl(struct smtp_server_settings *smtp_set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3902,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3905,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3906,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3907
      start: 3897
    functionDepth: 1
    functionLinenumber: 3897
    functionLinenumberEnd: 3907
    functionName: server_connection_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - i_debug
    linkageType: ''
    returnType: void
    signature: void server_connection_free(void *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3916,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3918,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3919,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3924,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3926,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3928,1
    - Dst: smtp_server_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3933,1
    - Dst: i_stream_create_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3941,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3942,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3943,1
    - Dst: smtp_server_connection_create_from_streams
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3945,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3949,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3950,1
    - Dst: smtp_server_connection_start
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3954,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3955
      start: 3909
    functionDepth: 6
    functionLinenumber: 3909
    functionLinenumberEnd: 3955
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - i_stream_create_fd
    - smtp_server_connection_create
    - smtp_server_connection_start
    - o_stream_unref
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - o_stream_set_no_error_handling
    - smtp_server_connection_create_from_streams
    - i_new
    - net_accept
    - net_set_nonblock
    - i_debug
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3962
      start: 3959
    functionDepth: 2
    functionLinenumber: 3959
    functionLinenumberEnd: 3962
    functionName: test_server_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void test_server_timeout(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3968,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3972,1
    - Dst: smtp_server_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3974,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3976,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3979,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3982,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3983,1
    - Dst: smtp_server_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:3985,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - smtp_set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3986
      start: 3964
    functionDepth: 6
    functionLinenumber: 3964
    functionLinenumberEnd: 3986
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 52
    functionsReached:
    - io_add
    - io_remove
    - timeout_add
    - smtp_server_deinit
    - smtp_server_init
    - i_debug
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_run(const struct smtp_server_settings *smtp_set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_listen
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4000,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4002,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4004,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4008
      start: 3998
    functionDepth: 6
    functionLinenumber: 3998
    functionLinenumberEnd: 4008
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 6
    functionsReached:
    - i_fatal
    - i_debug
    - net_ip2addr
    - net_listen
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4012,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4015,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4019,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4022,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4025,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4027,1
    - Dst: struct test_client_data*::client_test
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4028,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4029,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4032,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4034,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4039,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4041
      start: 4010
    functionDepth: 12
    functionLinenumber: 4010
    functionLinenumberEnd: 4041
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 6
    functionsReached:
    - settings_simple_deinit
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - test_subprocess_notify_signal_reset
    - struct test_client_data*::client_test
    - main_deinit
    - i_debug
    - test_subprocess_notify_signal_wait
    linkageType: ''
    returnType: int
    signature: int test_run_client(struct test_client_data *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4048,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4051,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4053,1
    - Dst: test_subprocess_notify_signal_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4058,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4059,1
    - Dst: server_test
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4060,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4061,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - server_set
    - server_test
    - client_tests_count
    argTypes:
    - struct smtp_server_settings*
    - test_server_init_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4065
      start: 4043
    functionDepth: 12
    functionLinenumber: 4043
    functionLinenumberEnd: 4065
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 0
    functionsReached:
    - i_zero
    - server_test
    - test_subprocess_notify_signal_all
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_run_server(const struct smtp_server_settings *server_set,\n\t\ttest_server_init_t
      server_test,\n\t\tunsigned int client_tests_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_file_get_value
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4083,1
    - Dst: settings_file_get_value
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4087,1
    - Dst: settings_file_get_value
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4091,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4096,1
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4099,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4104,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4110,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4111,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4112,1
    - Dst: test_run_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4117,1
    - Dst: test_subprocess_wait_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4120,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4121,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4122,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4123,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4128,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 5
    argNames:
    - server_set
    - server_test
    - client_test
    - client_tests_count
    - wait_for_clients
    argTypes:
    - struct smtp_server_settings*
    - test_server_init_t
    - test_client_init_t
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4136
      start: 4067
    functionDepth: 4
    functionLinenumber: 4067
    functionLinenumberEnd: 4136
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 72
    functionsReached:
    - i_zero
    - test_subprocess_fork
    - ssl_iostream_context_cache_free
    - settings_simple_deinit
    - settings_file_get_value
    - i_close_fd
    - test_subprocess_kill_all
    - test_subprocess_wait_all
    - test_run_server
    - test_subprocess_notify_signal_reset
    - settings_simple_init
    - test_open_server_fd
    - test_subprocess_notify_signal_wait
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(struct smtp_server_settings *server_set,\n\t\t
      \      test_server_init_t server_test,\n\t\t       test_client_init_t client_test,\n\t\t
      \      unsigned int client_tests_count, bool wait_for_clients)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_openssl_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4145
      start: 4142
    functionDepth: 2
    functionLinenumber: 4142
    functionLinenumberEnd: 4145
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 17
    functionsReached:
    - ssl_iostream_openssl_init
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4149,1
    - Dst: ssl_iostream_openssl_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4151
      start: 4147
    functionDepth: 3
    functionLinenumber: 4147
    functionLinenumberEnd: 4151
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 24
    functionsReached:
    - ssl_iostream_openssl_deinit
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4158,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4159,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4161,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4167,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4171,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4172,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4173,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4176,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4178,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4180,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4182,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c:4183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4186
      start: 4153
    functionDepth: 7
    functionLinenumber: 4153
    functionLinenumberEnd: 4186
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-server-errors.c
    functionUses: 23
    functionsReached:
    - i_zero
    - main_init
    - event_set_forced_debug
    - getopt
    - lib_init
    - lib_deinit
    - i_fatal
    - test_run
    - htonl
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 43
    functionName: smtp_capability_find_by_name
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-common.c
    functionUses: 2
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: enum smtp_capability
    signature: enum smtp_capability smtp_capability_find_by_name(const char *cap_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:61,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:64,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - struct smtp_proxy_data*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 70
    functionName: smtp_proxy_data_merge_extra_fields
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-common.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    linkageType: ''
    returnType: void
    signature: "void smtp_proxy_data_merge_extra_fields(pool_t pool, struct smtp_proxy_data
      *dst,\n\t\t\t\t   const struct smtp_proxy_data *src)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:88,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:90,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:92,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:94,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:96,1
    - Dst: smtp_proxy_data_merge_extra_fields
      Src: /src/dovecot/src/lib-smtp/smtp-common.c:102,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 28
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - struct smtp_proxy_data*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 103
    functionName: smtp_proxy_data_merge
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-common.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_strdup_empty
    - smtp_proxy_data_merge_extra_fields
    linkageType: ''
    returnType: void
    signature: "void smtp_proxy_data_merge(pool_t pool, struct smtp_proxy_data *dst,\n\t\t\t
      \  const struct smtp_proxy_data *src)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:33,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:34,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:38,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:39,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:43,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:47,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:49,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:49,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:51,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:71,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:75,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:79,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:95,1
    - Dst: smtp_server_event_init
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:96,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:97,1
    - Dst: smtp_server_connection_list_init
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:99,1
    - Dst: smtp_server_commands_init
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:100,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 53
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 28
    functionDepth: 3
    functionLinenumber: 28
    functionLinenumberEnd: 102
    functionName: smtp_server_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server.c
    functionUses: 4
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_strdup_empty
    - p_new
    - pool_ref
    - event_create
    - p_strarray_dup
    - event_set_forced_debug
    - my_hostdomain
    - smtp_server_commands_init
    - smtp_server_event_init
    - smtp_server_connection_list_init
    linkageType: ''
    returnType: struct smtp_server
    signature: struct smtp_server *smtp_server_init(const struct smtp_server_settings
      *set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:106,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:107,1
    - Dst: smtp_protocol_name
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - server
    - event
    argTypes:
    - struct smtp_server*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 5
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: smtp_server_event_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server.c
    functionUses: 1
    functionsReached:
    - event_add_str
    - event_add_category
    - smtp_protocol_name
    linkageType: ''
    returnType: void
    signature: void smtp_server_event_init(struct smtp_server *server, struct event
      *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:115,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:117,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:118,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _server
    argTypes:
    - struct smtp_server**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 111
    functionDepth: 4
    functionLinenumber: 111
    functionLinenumberEnd: 121
    functionName: smtp_server_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server.c
    functionUses: 3
    functionsReached:
    - pool_unref
    - event_unref
    - settings_free
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void smtp_server_deinit(struct smtp_server **_server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_switch_ioloop
      Src: /src/dovecot/src/lib-smtp/smtp-server.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct smtp_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 137
    functionName: smtp_server_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void smtp_server_switch_ioloop(struct smtp_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: smtp_char_is_xtext
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_xtext(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: smtp_char_is_atext
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_atext(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: smtp_char_is_dcontent
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_dcontent(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: smtp_char_is_qtext
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_qtext(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: smtp_char_is_textstr
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_textstr(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: smtp_char_is_esmtp_value
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_esmtp_value(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: smtp_char_is_ehlo_param
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_ehlo_param(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: smtp_char_is_ehlo_greet
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_ehlo_greet(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: smtp_char_is_qpair
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-parser.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_char_is_qpair(unsigned char ch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:23,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:24,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:29,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 17
    functionDepth: 4
    functionLinenumber: 17
    functionLinenumberEnd: 30
    functionName: smtp_server_reply_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - e_debug
    - event_unref
    - str_free
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_destroy(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:34,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 32
    functionDepth: 5
    functionLinenumber: 32
    functionLinenumberEnd: 41
    functionName: smtp_server_reply_clear
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - i_assert
    - smtp_server_reply_destroy
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_clear(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:47,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:48,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:51,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:52,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:57,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 43
    functionDepth: 11
    functionLinenumber: 43
    functionLinenumberEnd: 61
    functionName: smtp_server_reply_update_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - t_strdup_printf
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_update_event(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:69,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:70,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:72,1
    - Dst: smtp_server_reply_clear
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:73,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:75,1
    - Dst: array_idx_clear
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:76,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:77,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - cmd
    - index
    argTypes:
    - struct smtp_server_command*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 63
    functionDepth: 6
    functionLinenumber: 63
    functionLinenumberEnd: 82
    functionName: smtp_server_reply_alloc
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - event_create
    - smtp_server_reply_clear
    - array_idx_modifiable
    - p_array_init
    - array_idx_clear
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: struct smtp_server_reply
    signature: 'struct smtp_server_reply *

      smtp_server_reply_alloc(struct smtp_server_command *cmd, unsigned int index)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:94,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:96,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:100,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:103,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:107,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:109,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:110,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:111,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:113,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:118,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:120,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:121,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:124,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:125,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:128,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:139,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - reply
    - status
    - enh_code
    argTypes:
    - struct smtp_server_reply*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 142
    functionName: smtp_server_reply_update_prefix
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - str_c
    - strchr
    - str_len
    - strlen
    - str_append_data
    - str_append
    - i_assert
    - str_new
    - str_free
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_update_prefix(struct smtp_server_reply *reply,\n\t\t\t\tunsigned
      int status, const char *enh_code)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:165,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:170,1
    - Dst: smtp_server_reply_update_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:173,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:175,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 3
    argNames:
    - reply
    - status
    - enh_code
    argTypes:
    - struct smtp_server_reply*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 144
    functionDepth: 4
    functionLinenumber: 144
    functionLinenumberEnd: 176
    functionName: smtp_server_reply_set_status
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_update_prefix
    - i_assert
    - null_strcmp
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_set_status(struct smtp_server_reply *reply,\n\t\t\t\t
      \ unsigned int status, const char *enh_code)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - enh_code_r
    argTypes:
    - struct smtp_server_reply*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 184
    functionName: smtp_server_reply_get_status
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int smtp_server_reply_get_status(struct smtp_server_reply
      *reply,\n\t\t\t\t\t  const char **enh_code_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:194,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:195,1
    - Dst: smtp_server_reply_alloc
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:197,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:202,1
    - Dst: smtp_server_reply_set_status
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:203,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:204,1
    - Dst: smtp_server_reply_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - cmd
    - index
    - status
    - enh_code
    argTypes:
    - struct smtp_server_command*
    - unsigned int
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 186
    functionDepth: 12
    functionLinenumber: 186
    functionLinenumberEnd: 209
    functionName: smtp_server_reply_create_index
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_alloc
    - p_new
    - smtp_server_reply_set_status
    - smtp_server_reply_update_event
    - i_assert
    - str_new
    linkageType: ''
    returnType: struct smtp_server_reply
    signature: "struct smtp_server_reply *\nsmtp_server_reply_create_index(struct
      smtp_server_command *cmd,\n\t\t\t       unsigned int index, unsigned int status,\n\t\t\t
      \      const char *enh_code)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_create_index
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cmd
    - status
    - enh_code
    argTypes:
    - struct smtp_server_command*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 211
    functionDepth: 13
    functionLinenumber: 211
    functionLinenumberEnd: 216
    functionName: smtp_server_reply_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_create_index
    linkageType: ''
    returnType: struct smtp_server_reply
    signature: "struct smtp_server_reply *\nsmtp_server_reply_create(struct smtp_server_command
      *cmd,\n\t\t\t unsigned int status, const char *enh_code)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_create_index
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:228,1
    - Dst: smtp_reply_get_enh_code
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:229,1
    - Dst: smtp_reply_write
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:230,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:232,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:234,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:238,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:247,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:248,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:251,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - cmd
    - index
    - from
    argTypes:
    - struct smtp_server_command*
    - unsigned int
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 218
    functionDepth: 13
    functionLinenumber: 218
    functionLinenumberEnd: 257
    functionName: smtp_server_reply_create_forward
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 1
    functionsReached:
    - str_append_c
    - str_len
    - smtp_server_reply_create_index
    - smtp_reply_write
    - smtp_reply_get_enh_code
    - i_assert
    - str_c_modifiable
    linkageType: ''
    returnType: struct smtp_server_reply
    signature: "struct smtp_server_reply *\nsmtp_server_reply_create_forward(struct
      smtp_server_command *cmd,\n\t\t\t\t unsigned int index,\n\t\t\t\t const struct
      smtp_reply *from)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:263,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:268,1
    - Dst: smtp_server_reply_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 259
    functionDepth: 5
    functionLinenumber: 259
    functionLinenumberEnd: 271
    functionName: smtp_server_reply_free
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 2
    functionsReached:
    - array_is_created
    - smtp_server_reply_destroy
    - array_idx_modifiable
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_free(struct smtp_server_command *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:278,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:286,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:288,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:289,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:291,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:295,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:297,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:300,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - reply
    - text
    argTypes:
    - struct smtp_server_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 302
    functionName: smtp_server_reply_add_text
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_assert
    - str_len
    - str_append
    - str_append_data
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_add_text(struct smtp_server_reply *reply,\n\t\t\t\tconst
      char *text)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:306,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:307,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:308,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:311,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:313,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:318,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:319,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:328,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:332,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:340,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 304
    functionDepth: 3
    functionLinenumber: 304
    functionLinenumberEnd: 342
    functionName: smtp_server_reply_get_path_len
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - str_c
    - strchr
    - str_len
    - strlen
    - i_assert
    linkageType: ''
    returnType: size_t
    signature: size_t smtp_server_reply_get_path_len(struct smtp_server_reply *reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:347,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:348,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:350,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:351,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:352,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:354,1
    - Dst: smtp_server_reply_get_path_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:355,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:356,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:360,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - reply
    - text_prefix
    argTypes:
    - struct smtp_server_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 344
    functionDepth: 4
    functionLinenumber: 344
    functionLinenumberEnd: 364
    functionName: smtp_server_reply_prepend_text
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - strlen
    - str_insert
    - smtp_server_reply_get_path_len
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_prepend_text(struct smtp_server_reply *reply,\n\t\t\t\t
      \   const char *text_prefix)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:372,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:373,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:374,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:376,1
    - Dst: smtp_server_reply_get_path_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:377,1
    - Dst: smtp_address_encode_path
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:380,1
    - Dst: str_replace
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:381,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:384,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:386,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:389,1
    - Dst: smtp_address_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:390,1
    - Dst: str_insert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:391,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:393,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - reply
    - path
    - add
    argTypes:
    - struct smtp_server_reply*
    - struct smtp_address*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 366
    functionDepth: 11
    functionLinenumber: 366
    functionLinenumberEnd: 395
    functionName: smtp_server_reply_replace_path
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 1
    functionsReached:
    - strlen
    - t_strdup_printf
    - str_insert
    - str_replace
    - smtp_address_encode
    - smtp_address_encode_path
    - smtp_server_reply_get_path_len
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_replace_path(struct smtp_server_reply *reply,\n\t\t\t\t
      \   struct smtp_address *path, bool add)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:399,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:400,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:401,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:401,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:402,1
    - Dst: smtp_server_command_submit_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 397
    functionDepth: 9
    functionLinenumber: 397
    functionLinenumberEnd: 407
    functionName: smtp_server_reply_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 6
    functionsReached:
    - e_debug
    - smtp_server_command_submit_reply
    - i_assert
    - str_len
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_submit(struct smtp_server_reply *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:416,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:417,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:418,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:419,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:419,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:421,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:422,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:423,1
    - Dst: smtp_server_reply_alloc
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:425,1
    - Dst: smtp_server_reply_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:429,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - _cmd
    - index
    - from_index
    argTypes:
    - struct smtp_server_cmd_ctx*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 409
    functionDepth: 12
    functionLinenumber: 409
    functionLinenumberEnd: 432
    functionName: smtp_server_reply_submit_duplicate
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 1
    functionsReached:
    - smtp_server_reply_alloc
    - smtp_server_reply_submit
    - array_idx_modifiable
    - smtp_server_reply_update_event
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_submit_duplicate(struct smtp_server_cmd_ctx
      *_cmd,\n\t\t\t\t\tunsigned int index,\n\t\t\t\t\tunsigned int from_index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_create_index
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:442,1
    - Dst: smtp_server_reply_add_text
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:443,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:443,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - _cmd
    - index
    - status
    - enh_code
    - fmt
    - args
    argTypes:
    - struct smtp_server_cmd_ctx*
    - unsigned int
    - unsigned int
    - char*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 434
    functionDepth: 13
    functionLinenumber: 434
    functionLinenumberEnd: 445
    functionName: smtp_server_reply_indexv
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 2
    functionsReached:
    - smtp_server_reply_add_text
    - t_strdup_vprintf
    - smtp_server_reply_submit
    - smtp_server_reply_create_index
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_indexv(struct smtp_server_cmd_ctx *_cmd,\n\t\t\t
      \     unsigned int index, unsigned int status,\n\t\t\t      const char *enh_code,\n\t\t\t
      \     const char *fmt, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:453,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:455,1
    - Dst: smtp_server_reply_indexv
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:456,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - _cmd
    - status
    - enh_code
    - fmt
    argTypes:
    - struct smtp_server_cmd_ctx*
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 447
    functionDepth: 14
    functionLinenumber: 447
    functionLinenumberEnd: 458
    functionName: smtp_server_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 47
    functionsReached:
    - smtp_server_reply_indexv
    - i_assert
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply(struct smtp_server_cmd_ctx *_cmd, unsigned
      int status,\n\t\t       const char *enh_code, const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:466,1
    - Dst: smtp_server_reply_indexv
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:467,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - _cmd
    - index
    - status
    - enh_code
    - fmt
    argTypes:
    - struct smtp_server_cmd_ctx*
    - unsigned int
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 460
    functionDepth: 14
    functionLinenumber: 460
    functionLinenumberEnd: 469
    functionName: smtp_server_reply_index
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 2
    functionsReached:
    - smtp_server_reply_indexv
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_index(struct smtp_server_cmd_ctx *_cmd,\n\t\t\t
      \    unsigned int index, unsigned int status,\n\t\t\t     const char *enh_code,
      const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:475,1
    - Dst: smtp_server_reply_create_forward
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cmd
    - index
    - from
    argTypes:
    - struct smtp_server_cmd_ctx*
    - unsigned int
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 471
    functionDepth: 14
    functionLinenumber: 471
    functionLinenumberEnd: 477
    functionName: smtp_server_reply_index_forward
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_create_forward
    - smtp_server_reply_submit
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_index_forward(struct smtp_server_cmd_ctx *cmd,\n\t\t\t\t
      \    unsigned int index,\n\t\t\t\t     const struct smtp_reply *from)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:484,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:486,1
    - Dst: smtp_server_reply_create_forward
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _cmd
    - from
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 479
    functionDepth: 14
    functionLinenumber: 479
    functionLinenumberEnd: 488
    functionName: smtp_server_reply_forward
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 6
    functionsReached:
    - smtp_server_reply_create_forward
    - i_assert
    - smtp_server_reply_submit
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_forward(struct smtp_server_cmd_ctx *_cmd,\n\t\t\t
      \      const struct smtp_reply *from)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:501,1
    - Dst: array_idx_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:504,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:508,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:513,1
    - Dst: smtp_server_reply_create_index
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:516,1
    - Dst: smtp_server_reply_add_text
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:517,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:518,1
    - Dst: smtp_server_reply_submit_duplicate
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:522,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - _cmd
    - status
    - enh_code
    - fmt
    - args
    argTypes:
    - struct smtp_server_cmd_ctx*
    - unsigned int
    - char*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 491
    functionDepth: 13
    functionLinenumber: 491
    functionLinenumberEnd: 523
    functionName: smtp_server_reply_allv
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_submit
    - array_idx_modifiable
    - smtp_server_reply_create_index
    - t_strdup_vprintf
    - smtp_server_reply_submit_duplicate
    - smtp_server_reply_add_text
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_allv(struct smtp_server_cmd_ctx *_cmd,\n\t\t
      \      unsigned int status, const char *enh_code,\n\t\t       const char *fmt,
      va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:531,1
    - Dst: smtp_server_reply_allv
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:532,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - _cmd
    - status
    - enh_code
    - fmt
    argTypes:
    - struct smtp_server_cmd_ctx*
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 525
    functionDepth: 14
    functionLinenumber: 525
    functionLinenumberEnd: 534
    functionName: smtp_server_reply_all
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 5
    functionsReached:
    - smtp_server_reply_allv
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_all(struct smtp_server_cmd_ctx *_cmd,\n\t\t\t
      \  unsigned int status, const char *enh_code,\n\t\t\t   const char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:541,1
    - Dst: smtp_server_reply_add_text
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:542,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _cmd
    argTypes:
    - struct smtp_server_cmd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 536
    functionDepth: 14
    functionLinenumber: 536
    functionLinenumberEnd: 544
    functionName: smtp_server_reply_quit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 4
    functionsReached:
    - smtp_server_reply_add_text
    - smtp_server_reply_submit
    - smtp_server_reply_create
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_quit(struct smtp_server_cmd_ctx *_cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:554,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:556,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:556,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:558,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:559,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:560,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:563,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:569,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:570,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:571,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:573,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:582,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - reply
    - str
    - skip_status
    argTypes:
    - struct smtp_server_reply*
    - string_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 546
    functionDepth: 3
    functionLinenumber: 546
    functionLinenumberEnd: 584
    functionName: smtp_server_reply_write_one_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - str_c
    - strchr
    - str_append_c
    - str_len
    - strlen
    - str_append_data
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_write_one_line(const struct smtp_server_reply
      *reply,\n\t\t\t\t string_t *str, bool skip_status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:589,1
    - Dst: smtp_server_reply_write_one_line
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:591,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 586
    functionDepth: 4
    functionLinenumber: 586
    functionLinenumberEnd: 593
    functionName: smtp_server_reply_get_one_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - smtp_server_reply_write_one_line
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_server_reply_get_one_line(const struct smtp_server_reply *reply)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:598,1
    - Dst: smtp_server_reply_write_one_line
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:600,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 595
    functionDepth: 4
    functionLinenumber: 595
    functionLinenumberEnd: 602
    functionName: smtp_server_reply_get_message
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - smtp_server_reply_write_one_line
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_server_reply_get_message(const struct smtp_server_reply *reply)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:613,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:615,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:615,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:618,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:621,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:625,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:625,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:625,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:626,1
    - Dst: o_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:627,1
    - Dst: smtp_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:628,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:632,1
    - Dst: smtp_server_reply_get_one_line
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:633,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 604
    functionDepth: 5
    functionLinenumber: 604
    functionLinenumberEnd: 635
    functionName: smtp_server_reply_send_real
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_get_one_line
    - str_data
    - str_len
    - e_debug
    - smtp_server_connection_handle_output_error
    - o_stream_get_disconnect_reason
    - o_stream_send
    - i_assert
    - str_c_modifiable
    linkageType: ''
    returnType: int
    signature: int smtp_server_reply_send_real(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_send_real
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 637
    functionDepth: 6
    functionLinenumber: 637
    functionLinenumberEnd: 646
    functionName: smtp_server_reply_send
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 1
    functionsReached:
    - smtp_server_reply_send_real
    linkageType: ''
    returnType: int
    signature: int smtp_server_reply_send(struct smtp_server_reply *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 656
    functionName: smtp_server_reply_is_success
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_reply_is_success(const struct smtp_server_reply *reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:661,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:662,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:665,1
    - Dst: smtp_server_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:666,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:667,1
    - Dst: smtp_server_reply_get_message
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:667,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - reply
    - e
    argTypes:
    - struct smtp_server_reply*
    - struct event_passthrough*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 658
    functionDepth: 5
    functionLinenumber: 658
    functionLinenumberEnd: 668
    functionName: smtp_server_reply_add_to_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 4
    functionsReached:
    - struct event_passthrough*::add_int
    - smtp_server_reply_is_success
    - i_assert
    - struct event_passthrough*::add_str
    - smtp_server_reply_get_message
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_add_to_event(const struct smtp_server_reply
      *reply,\n\t\t\t\t    struct event_passthrough *e)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:681,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:683,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:684,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct smtp_server_command*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 674
    functionDepth: 14
    functionLinenumber: 674
    functionLinenumberEnd: 688
    functionName: smtp_server_reply_create_ehlo
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 5
    functionsReached:
    - str_append
    - smtp_server_reply_create
    linkageType: ''
    returnType: struct smtp_server_reply
    signature: 'struct smtp_server_reply *

      smtp_server_reply_create_ehlo(struct smtp_server_command *cmd)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:695,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:696,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:699,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:700,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:701,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - keyword
    argTypes:
    - struct smtp_server_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 690
    functionDepth: 2
    functionLinenumber: 690
    functionLinenumberEnd: 703
    functionName: smtp_server_reply_ehlo_add
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 4
    functionsReached:
    - str_append
    - i_assert
    - str_len
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_ehlo_add(struct smtp_server_reply *reply,\n\t\t\t\tconst
      char *keyword)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:712,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:713,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:716,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:717,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:718,1
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:720,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:721,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:722,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:723,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:725,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - reply
    - keyword
    - param_fmt
    argTypes:
    - struct smtp_server_reply*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 705
    functionDepth: 9
    functionLinenumber: 705
    functionLinenumberEnd: 726
    functionName: smtp_server_reply_ehlo_add_param
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 3
    functionsReached:
    - str_append_c
    - va_start
    - str_len
    - str_vprintfa
    - str_append
    - i_assert
    - va_end
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_ehlo_add_param(struct smtp_server_reply *reply,\n\t\t\t\t
      \     const char *keyword,\n\t\t\t\t      const char *param_fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:734,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:735,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:738,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:739,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:740,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:743,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:744,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - reply
    - keyword
    - params
    argTypes:
    - struct smtp_server_reply*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 728
    functionDepth: 2
    functionLinenumber: 728
    functionLinenumberEnd: 749
    functionName: smtp_server_reply_ehlo_add_params
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 1
    functionsReached:
    - str_append
    - i_assert
    - str_append_c
    - str_len
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_ehlo_add_params(struct smtp_server_reply *reply,\n\t\t\t\t
      \      const char *keyword,\n\t\t\t\t       const char *const *params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:759,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 751
    functionDepth: 3
    functionLinenumber: 751
    functionLinenumberEnd: 760
    functionName: smtp_server_reply_ehlo_add_8bitmime
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 1
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_8bitmime(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:771,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 762
    functionDepth: 3
    functionLinenumber: 762
    functionLinenumberEnd: 772
    functionName: smtp_server_reply_ehlo_add_binarymime
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_binarymime(struct smtp_server_reply
      *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 774
    functionDepth: 3
    functionLinenumber: 774
    functionLinenumberEnd: 783
    functionName: smtp_server_reply_ehlo_add_chunking
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_chunking(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:793,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 785
    functionDepth: 3
    functionLinenumber: 785
    functionLinenumberEnd: 794
    functionName: smtp_server_reply_ehlo_add_dsn
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_dsn(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:805,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 796
    functionDepth: 3
    functionLinenumber: 796
    functionLinenumberEnd: 806
    functionName: smtp_server_reply_ehlo_add_enhancedstatuscodes
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_ehlo_add_enhancedstatuscodes(\n\tstruct smtp_server_reply
      *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 808
    functionDepth: 3
    functionLinenumber: 808
    functionLinenumberEnd: 811
    functionName: smtp_server_reply_ehlo_add_pipelining
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_pipelining(struct smtp_server_reply
      *reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:824,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:827,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 813
    functionDepth: 10
    functionLinenumber: 813
    functionLinenumberEnd: 829
    functionName: smtp_server_reply_ehlo_add_size
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    - smtp_server_reply_ehlo_add_param
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_size(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 832
    functionDepth: 3
    functionLinenumber: 832
    functionLinenumberEnd: 841
    functionName: smtp_server_reply_ehlo_add_smtputf8
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_smtputf8(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 844
    functionDepth: 3
    functionLinenumber: 844
    functionLinenumberEnd: 853
    functionName: smtp_server_reply_ehlo_add_starttls
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_starttls(struct smtp_server_reply *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 855
    functionDepth: 3
    functionLinenumber: 855
    functionLinenumberEnd: 864
    functionName: smtp_server_reply_ehlo_add_vrfy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_ehlo_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_vrfy(struct smtp_server_reply *reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_is_trusted
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:874,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:878,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:883,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:884,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-smtp/smtp-server-reply.c:885,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_server_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 866
    functionDepth: 10
    functionLinenumber: 866
    functionLinenumberEnd: 887
    functionName: smtp_server_reply_ehlo_add_xclient
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-reply.c
    functionUses: 0
    functionsReached:
    - t_strconcat
    - smtp_server_reply_ehlo_add_param
    - smtp_server_connection_is_trusted
    - t_strarray_join
    linkageType: ''
    returnType: void
    signature: void smtp_server_reply_ehlo_add_xclient(struct smtp_server_reply *reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_get_ptr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:128,1
    - Dst: settings_root_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:129,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 131
    functionName: test_root_event_free
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - event_get_ptr
    - event_unref
    - settings_root_deinit
    linkageType: ''
    returnType: void
    signature: void test_root_event_free(struct event *event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:148,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:150,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:154,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _host_lookup_failed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 143
    functionDepth: 13
    functionLinenumber: 143
    functionLinenumberEnd: 157
    functionName: test_client_host_lookup_failed_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_host_lookup_failed_reply(const struct smtp_reply
      *reply,\n\t\t\t\t     struct _host_lookup_failed *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:166,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:168,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:171,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:173,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:176,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:177,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:179,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:180,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:182,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:185,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:186,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:188,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 159
    functionDepth: 14
    functionLinenumber: 159
    functionLinenumberEnd: 192
    functionName: test_client_host_lookup_failed
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_host_lookup_failed(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:200,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:202,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:203,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 196
    functionDepth: 3
    functionLinenumber: 196
    functionLinenumberEnd: 206
    functionName: test_host_lookup_failed
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_host_lookup_failed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 217
    functionName: test_server_connection_refused
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    linkageType: ''
    returnType: void
    signature: void test_server_connection_refused(unsigned int index ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:230,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:230,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:232,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:235,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _connection_refused*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 225
    functionDepth: 13
    functionLinenumber: 225
    functionLinenumberEnd: 238
    functionName: test_client_connection_refused_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_refused_reply(const struct smtp_reply
      *reply,\n\t\t\t\t     struct _connection_refused *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:247,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:249,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:252,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:254,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:256,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:258,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:259,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:261,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:262,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:264,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:266,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:268,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:269,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:271,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 240
    functionDepth: 14
    functionLinenumber: 240
    functionLinenumberEnd: 275
    functionName: test_client_connection_refused
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_refused(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:283,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:285,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:286,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 290
    functionName: test_connection_refused
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_refused(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:303,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:307,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 298
    functionDepth: 5
    functionLinenumber: 298
    functionLinenumberEnd: 312
    functionName: test_connection_lost_prematurely_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_connection_lost_prematurely_input(struct server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 319
    functionName: test_connection_lost_prematurely_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: int test_connection_lost_prematurely_init(struct server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: test_server_connection_lost_prematurely
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_lost_prematurely(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:340,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:340,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:342,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:345,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _connection_lost_prematurely*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 334
    functionDepth: 13
    functionLinenumber: 334
    functionLinenumberEnd: 348
    functionName: test_client_connection_lost_prematurely_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_prematurely_reply(\n\tconst struct
      smtp_reply *reply,\n\tstruct _connection_lost_prematurely *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:358,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:361,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:363,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:365,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:367,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:368,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:370,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:371,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:373,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:375,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:377,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:378,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:380,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 350
    functionDepth: 14
    functionLinenumber: 350
    functionLinenumberEnd: 384
    functionName: test_client_connection_lost_prematurely
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: "bool test_client_connection_lost_prematurely(\n\tconst struct smtp_client_settings
      *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:392,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:394,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:395,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 388
    functionDepth: 3
    functionLinenumber: 388
    functionLinenumberEnd: 400
    functionName: test_connection_lost_prematurely
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_lost_prematurely(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 411
    functionName: test_server_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    linkageType: ''
    returnType: void
    signature: void test_server_connection_timed_out(unsigned int index ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:424,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:424,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:426,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:429,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _connection_timed_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 419
    functionDepth: 13
    functionLinenumber: 419
    functionLinenumberEnd: 432
    functionName: test_client_connection_timed_out_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_timed_out_reply(const struct smtp_reply
      *reply,\n\t\t\t\t       struct _connection_timed_out *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:441,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:443,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:446,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:448,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:450,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:452,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:453,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:455,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:456,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:458,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:460,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:462,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:463,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:465,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 434
    functionDepth: 14
    functionLinenumber: 434
    functionLinenumberEnd: 469
    functionName: test_client_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_timed_out(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:477,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:480,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:481,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 473
    functionDepth: 3
    functionLinenumber: 473
    functionLinenumberEnd: 485
    functionName: test_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 498
    functionName: test_broken_payload_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_broken_payload_input_line(struct server_connection *conn
      ATTR_UNUSED,\n\t\t\t       const char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 504
    functionName: test_server_broken_payload
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_broken_payload(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 520
    functionName: test_broken_payload_chunking_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: int
    signature: "int test_broken_payload_chunking_input_line(struct server_connection
      *conn,\n\t\t\t\t\tconst char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 526
    functionName: test_server_broken_payload_chunking
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_broken_payload_chunking(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:534,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reply
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 535
    functionName: test_client_broken_payload_rcpt_to_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_broken_payload_rcpt_to_cb(const struct smtp_reply
      *reply,\n\t\t\t\t      void *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:542,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:542,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 537
    functionDepth: 13
    functionLinenumber: 537
    functionLinenumberEnd: 545
    functionName: test_client_broken_payload_rcpt_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_broken_payload_rcpt_data_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\tvoid *context ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:552,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:552,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 547
    functionDepth: 13
    functionLinenumber: 547
    functionLinenumberEnd: 555
    functionName: test_client_broken_payload_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_broken_payload_data_cb(const struct smtp_reply *reply,\n\t\t\t\t
      \  void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: test_client_broken_payload_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void test_client_broken_payload_finished(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:569,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:571,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:572,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:574,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:576,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:578,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:580,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:585,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:587,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:593,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 562
    functionDepth: 6
    functionLinenumber: 562
    functionLinenumberEnd: 598
    functionName: test_client_broken_payload
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_unref
    - smtp_client_connection_create
    - smtp_client_transaction_send
    - smtp_client_transaction_create
    - i_stream_set_name
    - test_expect_errors
    - i_stream_create_error_str
    - net_ip2addr
    - smtp_client_transaction_add_rcpt
    - i_stream_unref
    - smtp_client_init
    linkageType: ''
    returnType: bool
    signature: bool test_client_broken_payload(const struct smtp_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:629,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:631,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:631,1
    - Dst: i_stream_create_failure_at
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:632,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:634,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:635,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:637,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:639,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:641,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:643,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:648,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:650,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:656,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 600
    functionDepth: 6
    functionLinenumber: 600
    functionLinenumberEnd: 661
    functionName: test_client_broken_payload_later
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_unref
    - smtp_client_connection_create
    - smtp_client_transaction_send
    - smtp_client_transaction_create
    - i_stream_set_name
    - strlen
    - test_expect_errors
    - i_stream_create_failure_at
    - net_ip2addr
    - smtp_client_transaction_add_rcpt
    - i_stream_unref
    - i_stream_create_from_data
    - smtp_client_init
    linkageType: ''
    returnType: bool
    signature: bool test_client_broken_payload_later(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:669,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:672,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:673,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:676,1
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:678,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:681,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:682,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:685,1
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:687,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:690,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:691,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 665
    functionDepth: 3
    functionLinenumber: 665
    functionLinenumberEnd: 695
    functionName: test_broken_payload
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_broken_payload(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:711,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:712,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:719,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:720,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:727,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:728,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:733,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:734,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:739,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:740,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:747,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:748,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 756
    functionName: test_connection_lost_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_connection_lost_input_line(struct server_connection *conn,\n\t\t\t\tconst
      char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:763,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 766
    functionName: test_connection_lost_input_data
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_connection_lost_input_data(struct server_connection *conn,\n\t\t\t\tconst
      unsigned char *data ATTR_UNUSED,\n\t\t\t\tsize_t size ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 778
    functionName: test_server_connection_lost
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_lost(unsigned int index)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:810,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:811,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:816,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:820,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:824,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:829,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:829,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:831,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:836,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:841,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:841,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - reply
    - prcpt
    argTypes:
    - struct smtp_reply*
    - struct _connection_lost_peer_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 803
    functionDepth: 13
    functionLinenumber: 803
    functionLinenumberEnd: 843
    functionName: test_client_connection_lost_rcpt_to_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_rcpt_to_cb(const struct smtp_reply
      *reply,\n\t\t\t\t       struct _connection_lost_peer_rcpt *prcpt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:848,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _connection_lost_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 845
    functionDepth: 11
    functionLinenumber: 845
    functionLinenumberEnd: 850
    functionName: test_client_connection_lost_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_connection_lost_deinit(struct _connection_lost_peer
      *pctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:860,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:861,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:866,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:869,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:872,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:875,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:876,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:880,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:883,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:887,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:890,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - reply
    - prcpt
    argTypes:
    - struct smtp_reply*
    - struct _connection_lost_peer_rcpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 852
    functionDepth: 13
    functionLinenumber: 852
    functionLinenumberEnd: 895
    functionName: test_client_connection_lost_rcpt_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_rcpt_data_cb(\n\tconst struct smtp_reply
      *reply,\n\tstruct _connection_lost_peer_rcpt *prcpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:902,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:903,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:906,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _connection_lost_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 897
    functionDepth: 13
    functionLinenumber: 897
    functionLinenumberEnd: 907
    functionName: test_client_connection_lost_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_data_cb(const struct smtp_reply *reply,\n\t\t\t\t
      \   struct _connection_lost_peer *pctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:915,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:917,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:919,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:920,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:922,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _connection_lost_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 909
    functionDepth: 6
    functionLinenumber: 909
    functionLinenumberEnd: 923
    functionName: test_client_connection_lost_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_connection_lost_finished(struct _connection_lost_peer
      *pctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:942,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:951,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:951,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:952,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:960,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:961,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:963,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:968,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:970,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:976,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:983,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:985,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - index
    argTypes:
    - struct _connection_lost*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 925
    functionDepth: 6
    functionLinenumber: 925
    functionLinenumberEnd: 986
    functionName: test_client_connection_lost_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_unref
    - smtp_client_connection_create
    - smtp_client_transaction_send
    - smtp_client_transaction_create
    - i_stream_set_name
    - strlen
    - net_ip2addr
    - i_new
    - smtp_client_transaction_add_rcpt
    - i_stream_unref
    - i_stream_create_from_data
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_submit(struct _connection_lost *ctx,\n\t\t\t\t
      \  unsigned int index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:994,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:997,1
    - Dst: test_client_connection_lost_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1000,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 988
    functionDepth: 7
    functionLinenumber: 988
    functionLinenumberEnd: 1003
    functionName: test_client_connection_lost
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_init
    - test_client_connection_lost_submit
    - i_new
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_lost(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1011,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1013,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1014,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1007
    functionDepth: 3
    functionLinenumber: 1007
    functionLinenumberEnd: 1018
    functionName: test_connection_lost
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_lost(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1030,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1032,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1034,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1035,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1026
    functionDepth: 3
    functionLinenumber: 1026
    functionLinenumberEnd: 1039
    functionName: test_unexpected_reply_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: int test_unexpected_reply_init(struct server_connection *conn)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1048,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1053,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1056,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1057,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1063,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1065,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1068,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1069,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1075,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1077,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1080,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1081,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1084,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1090,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1093,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1096,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1097,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1041
    functionDepth: 3
    functionLinenumber: 1041
    functionLinenumberEnd: 1105
    functionName: test_unexpected_reply_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - str_begins_with
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_unexpected_reply_input_line(struct server_connection *conn,\n\t\t\t\t
      const char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1107
    functionDepth: 0
    functionLinenumber: 1107
    functionLinenumberEnd: 1112
    functionName: test_server_unexpected_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_unexpected_reply(unsigned int index)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1145,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1146,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1151,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1151,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1154,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1135
    functionDepth: 13
    functionLinenumber: 1135
    functionLinenumberEnd: 1157
    functionName: test_client_unexpected_reply_login_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_unexpected_reply_login_cb(const struct smtp_reply
      *reply,\n\t\t\t\t      void *context)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1164,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1165,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1172,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _unexpected_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1159
    functionDepth: 13
    functionLinenumber: 1159
    functionLinenumberEnd: 1178
    functionName: test_client_unexpected_reply_mail_from_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_unexpected_reply_mail_from_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\t  struct _unexpected_reply_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1185,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1186,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1193,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1193,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1196,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _unexpected_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1180
    functionDepth: 13
    functionLinenumber: 1180
    functionLinenumberEnd: 1199
    functionName: test_client_unexpected_reply_rcpt_to_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_unexpected_reply_rcpt_to_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\tstruct _unexpected_reply_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1206,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1207,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1214,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1214,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1217,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1220,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _unexpected_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1201
    functionDepth: 13
    functionLinenumber: 1201
    functionLinenumberEnd: 1222
    functionName: test_client_unexpected_reply_rcpt_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - test_assert
    - smtp_reply_log
    - i_debug
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_unexpected_reply_rcpt_data_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\t  struct _unexpected_reply_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1229,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1230,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1237,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1237,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _unexpected_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1224
    functionDepth: 13
    functionLinenumber: 1224
    functionLinenumberEnd: 1243
    functionName: test_client_unexpected_reply_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_unexpected_reply_data_cb(const struct smtp_reply
      *reply,\n\t\t\t\t     struct _unexpected_reply_peer *pctx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1251,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1253,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1254,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1259,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1265,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1266,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1267,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1268,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1273,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1274,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _unexpected_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1245
    functionDepth: 6
    functionLinenumber: 1245
    functionLinenumberEnd: 1275
    functionName: test_client_unexpected_reply_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_unexpected_reply_finished(struct _unexpected_reply_peer
      *pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1289,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1291,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1291,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1292,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1294,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _unexpected_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1277
    functionDepth: 6
    functionLinenumber: 1277
    functionLinenumberEnd: 1297
    functionName: test_client_unexpected_reply_submit2
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_send
    - i_stream_set_name
    - strlen
    - i_stream_unref
    - i_stream_create_from_data
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_unexpected_reply_submit2(struct _unexpected_reply_peer
      *pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1302,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1304,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _unexpected_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1299
    functionDepth: 6
    functionLinenumber: 1299
    functionLinenumberEnd: 1313
    functionName: test_client_unexpected_reply_submit1
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - smtp_client_transaction_add_rcpt
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_unexpected_reply_submit1(struct _unexpected_reply_peer
      *pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1321,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1325,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1327,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1329,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1334,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1337,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1339,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - index
    argTypes:
    - struct _unexpected_reply*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1315
    functionDepth: 6
    functionLinenumber: 1315
    functionLinenumberEnd: 1343
    functionName: test_client_unexpected_reply_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_start
    - smtp_client_connection_unref
    - smtp_client_connection_create
    - smtp_client_transaction_create
    - timeout_add_short
    - net_ip2addr
    - i_new
    - smtp_client_connection_connect
    linkageType: ''
    returnType: void
    signature: "void test_client_unexpected_reply_submit(struct _unexpected_reply
      *ctx,\n\t\t\t\t    unsigned int index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1351,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1354,1
    - Dst: test_client_unexpected_reply_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1345
    functionDepth: 7
    functionLinenumber: 1345
    functionLinenumberEnd: 1360
    functionName: test_client_unexpected_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_init
    - test_client_unexpected_reply_submit
    - i_new
    linkageType: ''
    returnType: bool
    signature: bool test_client_unexpected_reply(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1368,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1370,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1371,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1364
    functionDepth: 3
    functionLinenumber: 1364
    functionLinenumberEnd: 1375
    functionName: test_unexpected_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unexpected_reply(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1389,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1383
    functionDepth: 3
    functionLinenumber: 1383
    functionLinenumberEnd: 1393
    functionName: test_partial_reply_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_partial_reply_input_line(struct server_connection *conn,\n\t\t\t
      \     const char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1395
    functionDepth: 0
    functionLinenumber: 1395
    functionLinenumberEnd: 1399
    functionName: test_server_partial_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_partial_reply(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1412,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1412,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1414,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1417,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _partial_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1407
    functionDepth: 13
    functionLinenumber: 1407
    functionLinenumberEnd: 1420
    functionName: test_client_partial_reply_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_partial_reply_reply(const struct smtp_reply *reply,\n\t\t\t\tstruct
      _partial_reply *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1429,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1432,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1434,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1436,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1438,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1439,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1441,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1442,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1444,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1446,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1448,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1449,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1451,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1422
    functionDepth: 14
    functionLinenumber: 1422
    functionLinenumberEnd: 1455
    functionName: test_client_partial_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_partial_reply(const struct smtp_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1463,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1465,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1466,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1459
    functionDepth: 3
    functionLinenumber: 1459
    functionLinenumberEnd: 1470
    functionName: test_partial_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_partial_reply(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1482,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1489,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1478
    functionDepth: 3
    functionLinenumber: 1478
    functionLinenumberEnd: 1494
    functionName: test_premature_reply_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: int test_premature_reply_init(struct server_connection *conn)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1501,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1505,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1507,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1523,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1526,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1527,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1533,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1537,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1538,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1541,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1547,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1551,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1552,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1496
    functionDepth: 3
    functionLinenumber: 1496
    functionLinenumberEnd: 1560
    functionName: test_premature_reply_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - i_sleep_intr_secs
    - server_connection_deinit
    - o_stream_nsend_str
    - i_debug
    linkageType: ''
    returnType: int
    signature: "int test_premature_reply_input_line(struct server_connection *conn,\n\t\t\t\tconst
      char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1562
    functionDepth: 0
    functionLinenumber: 1562
    functionLinenumberEnd: 1567
    functionName: test_server_premature_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_premature_reply(unsigned int index)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1600,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1601,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1606,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1606,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1609,1
    - Dst: smtp_client_transaction_abort
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1613,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1590
    functionDepth: 13
    functionLinenumber: 1590
    functionLinenumberEnd: 1616
    functionName: test_client_premature_reply_login_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_abort
    - test_assert
    - smtp_reply_log
    - i_debug
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_premature_reply_login_cb(const struct smtp_reply
      *reply,\n\t\t\t\t     void *context)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1623,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1624,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1631,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1631,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1634,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _premature_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1618
    functionDepth: 13
    functionLinenumber: 1618
    functionLinenumberEnd: 1638
    functionName: test_client_premature_reply_mail_from_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_premature_reply_mail_from_cb(const struct smtp_reply
      *reply,\n\t\t\t\t         struct _premature_reply_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1645,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1646,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1653,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1653,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1656,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _premature_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1640
    functionDepth: 13
    functionLinenumber: 1640
    functionLinenumberEnd: 1660
    functionName: test_client_premature_reply_rcpt_to_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_premature_reply_rcpt_to_cb(const struct smtp_reply
      *reply,\n\t\t\t\t       struct _premature_reply_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1667,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1668,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1675,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1675,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1678,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1682,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _premature_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1662
    functionDepth: 13
    functionLinenumber: 1662
    functionLinenumberEnd: 1684
    functionName: test_client_premature_reply_rcpt_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - test_assert
    - smtp_reply_log
    - i_debug
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_premature_reply_rcpt_data_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\t struct _premature_reply_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1691,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1692,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1699,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1699,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1702,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _premature_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1686
    functionDepth: 13
    functionLinenumber: 1686
    functionLinenumberEnd: 1706
    functionName: test_client_premature_reply_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_premature_reply_data_cb(const struct smtp_reply *reply,\n\t\t\t\t
      \   struct _premature_reply_peer *pctx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1714,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1716,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1717,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1722,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1723,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1724,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1725,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1728,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1729,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1730,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1731,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1734,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1735,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1736,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1737,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1741,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1742,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _premature_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1708
    functionDepth: 6
    functionLinenumber: 1708
    functionLinenumberEnd: 1743
    functionName: test_client_premature_reply_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_premature_reply_finished(struct _premature_reply_peer
      *pctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1757,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1760,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1762,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1762,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1763,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1765,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1767,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _premature_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1745
    functionDepth: 6
    functionLinenumber: 1745
    functionLinenumberEnd: 1768
    functionName: test_client_premature_reply_submit3
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_send
    - i_stream_set_name
    - strlen
    - i_stream_unref
    - i_stream_create_from_data
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_premature_reply_submit3(struct _premature_reply_peer
      *pctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1773,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1776,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1778,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1785,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _premature_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1770
    functionDepth: 6
    functionLinenumber: 1770
    functionLinenumberEnd: 1787
    functionName: test_client_premature_reply_submit2
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_add_rcpt
    - timeout_add_short
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_premature_reply_submit2(struct _premature_reply_peer
      *pctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1792,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1795,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1797,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _premature_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1789
    functionDepth: 6
    functionLinenumber: 1789
    functionLinenumberEnd: 1802
    functionName: test_client_premature_reply_submit1
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - smtp_client_transaction_start
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_premature_reply_submit1(struct _premature_reply_peer
      *pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1811,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1815,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1817,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1819,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1824,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1826,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - index
    argTypes:
    - struct _premature_reply*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1804
    functionDepth: 6
    functionLinenumber: 1804
    functionLinenumberEnd: 1830
    functionName: test_client_premature_reply_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_unref
    - smtp_client_connection_create
    - smtp_client_transaction_create
    - timeout_add_short
    - net_ip2addr
    - i_new
    - smtp_client_connection_connect
    linkageType: ''
    returnType: void
    signature: "void test_client_premature_reply_submit(struct _premature_reply *ctx,\n\t\t\t\t
      \  unsigned int index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1838,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1840,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1843,1
    - Dst: test_client_premature_reply_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1846,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1849
      start: 1832
    functionDepth: 7
    functionLinenumber: 1832
    functionLinenumberEnd: 1849
    functionName: test_client_premature_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_client_premature_reply_submit
    - smtp_client_init
    - test_expect_errors
    - i_new
    linkageType: ''
    returnType: bool
    signature: bool test_client_premature_reply(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1857,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1859,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1860,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1853
    functionDepth: 3
    functionLinenumber: 1853
    functionLinenumberEnd: 1864
    functionName: test_premature_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_premature_reply(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1877,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1881,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1893,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1894,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1900,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1902,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1904,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1911,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1915,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1919,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1925,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1872
    functionDepth: 3
    functionLinenumber: 1872
    functionLinenumberEnd: 1931
    functionName: test_early_data_reply_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - o_stream_nsend_str
    - i_debug
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int test_early_data_reply_input_line(struct server_connection *conn,\n\t\t\t\t
      const char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1933
    functionDepth: 0
    functionLinenumber: 1933
    functionLinenumberEnd: 1937
    functionName: test_server_early_data_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_early_data_reply(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1968,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1969,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1972,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1972,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1961
    functionDepth: 13
    functionLinenumber: 1961
    functionLinenumberEnd: 1973
    functionName: test_client_early_data_reply_login_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_early_data_reply_login_cb(const struct smtp_reply
      *reply,\n\t\t\t\t      void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1980,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1981,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1984,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1984,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _early_data_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1975
    functionDepth: 13
    functionLinenumber: 1975
    functionLinenumberEnd: 1985
    functionName: test_client_early_data_reply_mail_from_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_early_data_reply_mail_from_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\t  struct _early_data_reply_peer *pctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1992,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1993,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1996,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1996,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:1998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _early_data_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2000
      start: 1987
    functionDepth: 13
    functionLinenumber: 1987
    functionLinenumberEnd: 2000
    functionName: test_client_early_data_reply_rcpt_to_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - test_assert
    - smtp_reply_log
    - i_debug
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_early_data_reply_rcpt_to_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\tstruct _early_data_reply_peer *pctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2007,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2008,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2013,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2017,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2020,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2020,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _early_data_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2023
      start: 2002
    functionDepth: 13
    functionLinenumber: 2002
    functionLinenumberEnd: 2023
    functionName: test_client_early_data_reply_rcpt_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_early_data_reply_rcpt_data_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\t  struct _early_data_reply_peer *pctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2030,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2031,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2038,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2042,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2045,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2045,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _early_data_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2025
    functionDepth: 13
    functionLinenumber: 2025
    functionLinenumberEnd: 2048
    functionName: test_client_early_data_reply_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_early_data_reply_data_cb(const struct smtp_reply
      *reply,\n\t\t\t\t     struct _early_data_reply_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2057,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2058,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2063,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2068,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2068,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2073,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2074,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2077,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2080,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2082,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2083,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2084,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2086,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2088,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2089,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _early_data_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2090
      start: 2050
    functionDepth: 13
    functionLinenumber: 2050
    functionLinenumberEnd: 2090
    functionName: test_client_early_data_reply_noop_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_unref
    - i_error
    - o_stream_get_error
    - o_stream_finish
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - timeout_remove
    - i_free
    - o_stream_destroy
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_early_data_reply_noop_cb(const struct smtp_reply
      *reply,\n\t\t\t\t     struct _early_data_reply_peer *pctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2096,1
    - Dst: smtp_client_command_noop_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _early_data_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 2092
    functionDepth: 1
    functionLinenumber: 2092
    functionLinenumberEnd: 2103
    functionName: test_client_early_data_reply_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_noop_submit
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_client_early_data_reply_finished(struct _early_data_reply_peer
      *pctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2109,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2111,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2113,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2114,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2115,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _early_data_reply_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2118
      start: 2105
    functionDepth: 6
    functionLinenumber: 2105
    functionLinenumberEnd: 2118
    functionName: test_client_early_data_reply_submit1
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_error
    - o_stream_get_error
    - o_stream_finish
    - i_debug
    - o_stream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_early_data_reply_submit1(struct _early_data_reply_peer
      *pctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2135,1
    - Dst: pipe
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2139,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2140,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2142,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2143,1
    - Dst: i_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2145,1
    - Dst: o_stream_create_fd_autoclose
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2146,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2148,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2150,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2152,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2155,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2160,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2166,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2169,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2171,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2173,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - index
    argTypes:
    - struct _early_data_reply*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2120
    functionDepth: 6
    functionLinenumber: 2120
    functionLinenumberEnd: 2174
    functionName: test_client_early_data_reply_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_start
    - smtp_client_connection_create
    - smtp_client_transaction_send
    - fd_set_nonblock
    - smtp_client_transaction_create
    - strlen
    - i_fatal
    - o_stream_create_fd_autoclose
    - o_stream_nsend
    - net_ip2addr
    - i_new
    - smtp_client_transaction_add_rcpt
    - i_stream_create_fd_autoclose
    - i_stream_unref
    - smtp_client_connection_connect
    - pipe
    linkageType: ''
    returnType: void
    signature: "void test_client_early_data_reply_submit(struct _early_data_reply
      *ctx,\n\t\t\t\t    unsigned int index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2182,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2184,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2187,1
    - Dst: test_client_early_data_reply_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2193
      start: 2176
    functionDepth: 7
    functionLinenumber: 2176
    functionLinenumberEnd: 2193
    functionName: test_client_early_data_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_init
    - test_expect_errors
    - i_new
    - test_client_early_data_reply_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_early_data_reply(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2201,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2203,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2204,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2197
    functionDepth: 3
    functionLinenumber: 2197
    functionLinenumberEnd: 2208
    functionName: test_early_data_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_early_data_reply(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2222,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2226
      start: 2216
    functionDepth: 3
    functionLinenumber: 2216
    functionLinenumberEnd: 2226
    functionName: test_bad_reply_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_bad_reply_input_line(struct server_connection *conn,\n\t\t\t
      \ const char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2228
    functionDepth: 0
    functionLinenumber: 2228
    functionLinenumberEnd: 2232
    functionName: test_server_bad_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_reply(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2245,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2245,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2247,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2250,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _bad_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2253
      start: 2240
    functionDepth: 13
    functionLinenumber: 2240
    functionLinenumberEnd: 2253
    functionName: test_client_bad_reply_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_bad_reply_reply(const struct smtp_reply *reply,\n\tstruct
      _bad_reply *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2263,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2265,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2268,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2270,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2272,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2274,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2275,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2277,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2278,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2280,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2282,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2284,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2285,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2287,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2291
      start: 2255
    functionDepth: 14
    functionLinenumber: 2255
    functionLinenumberEnd: 2291
    functionName: test_client_bad_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: "bool test_client_bad_reply(\n\tconst struct smtp_client_settings *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2299,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2301,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2302,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2306
      start: 2295
    functionDepth: 3
    functionLinenumber: 2295
    functionLinenumberEnd: 2306
    functionName: test_bad_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_reply(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2318,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2322,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2326,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2330,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2332
      start: 2314
    functionDepth: 3
    functionLinenumber: 2314
    functionLinenumberEnd: 2332
    functionName: test_bad_greeting_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: int test_bad_greeting_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2338
      start: 2334
    functionDepth: 0
    functionLinenumber: 2334
    functionLinenumberEnd: 2338
    functionName: test_server_bad_greeting
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_greeting(unsigned int index)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2356,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2356,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2360,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2364,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2367,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2373,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2374,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _bad_greeting_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2351
    functionDepth: 13
    functionLinenumber: 2351
    functionLinenumberEnd: 2377
    functionName: test_client_bad_greeting_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_bad_greeting_reply(const struct smtp_reply *reply,\n\t\t\t
      \      struct _bad_greeting_peer *pctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2386,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2390,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2392,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2394,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2395,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2397,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - index
    argTypes:
    - struct _bad_greeting*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2379
    functionDepth: 14
    functionLinenumber: 2379
    functionLinenumberEnd: 2399
    functionName: test_client_bad_greeting_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: void
    signature: void test_client_bad_greeting_submit(struct _bad_greeting *ctx, unsigned
      int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2406,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2408,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2411,1
    - Dst: test_client_bad_greeting_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2413,1
    - Dst: test_client_bad_greeting_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2414,1
    - Dst: test_client_bad_greeting_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2417
      start: 2401
    functionDepth: 15
    functionLinenumber: 2401
    functionLinenumberEnd: 2417
    functionName: test_client_bad_greeting
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_client_bad_greeting_submit
    - smtp_client_init
    - test_expect_errors
    - i_new
    linkageType: ''
    returnType: bool
    signature: bool test_client_bad_greeting(const struct smtp_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2425,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2427,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2428,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2421
    functionDepth: 3
    functionLinenumber: 2421
    functionLinenumberEnd: 2432
    functionName: test_bad_greeting
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_greeting(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2446,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2449
      start: 2440
    functionDepth: 1
    functionLinenumber: 2440
    functionLinenumberEnd: 2449
    functionName: test_command_timed_out_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_command_timed_out_input_line(struct server_connection *conn,\n\t\t\t\t
      \ const char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2455
      start: 2451
    functionDepth: 0
    functionLinenumber: 2451
    functionLinenumberEnd: 2455
    functionName: test_server_command_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_command_timed_out(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2468,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2468,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2470,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2473,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _command_timed_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2476
      start: 2463
    functionDepth: 13
    functionLinenumber: 2463
    functionLinenumberEnd: 2476
    functionName: test_client_command_timed_out_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_command_timed_out_reply(const struct smtp_reply *reply,\n\t\t\t\t
      \   struct _command_timed_out *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2485,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2487,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2490,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2492,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2494,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2496,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2497,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2499,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2503
      start: 2478
    functionDepth: 14
    functionLinenumber: 2478
    functionLinenumberEnd: 2503
    functionName: test_client_command_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_command_timed_out(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2511,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2514,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2515,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2519
      start: 2507
    functionDepth: 3
    functionLinenumber: 2507
    functionLinenumberEnd: 2519
    functionName: test_command_timed_out
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_command_timed_out(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2534,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2535,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2538
      start: 2527
    functionDepth: 3
    functionLinenumber: 2527
    functionLinenumberEnd: 2538
    functionName: test_command_aborted_early_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_command_aborted_early_input_line(struct server_connection
      *conn,\n\t\t\t\t      const char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2544
      start: 2540
    functionDepth: 0
    functionLinenumber: 2540
    functionLinenumberEnd: 2544
    functionName: test_server_command_aborted_early
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_command_aborted_early(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2559,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2559,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - struct _command_aborted_early*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2563
      start: 2553
    functionDepth: 13
    functionLinenumber: 2553
    functionLinenumberEnd: 2563
    functionName: test_client_command_aborted_early_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_command_aborted_early_reply(\n\tconst struct smtp_reply
      *reply,\n\tstruct _command_aborted_early *ctx ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2568,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2572,1
    - Dst: smtp_client_command_abort
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2575,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2579,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2583,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2586,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _command_aborted_early*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2589
      start: 2565
    functionDepth: 7
    functionLinenumber: 2565
    functionLinenumberEnd: 2589
    functionName: test_client_command_aborted_early_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_command_abort
    - timeout_add_short
    - i_debug
    - io_loop_stop
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_command_aborted_early_timeout(struct _command_aborted_early
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2597,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2599,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2601,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2602,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2604,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2605,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2607,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2608,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2614
      start: 2591
    functionDepth: 14
    functionLinenumber: 2591
    functionLinenumberEnd: 2614
    functionName: test_client_command_aborted_early
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - timeout_add_short
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_command_aborted_early(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2622,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2624,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2625,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2618
    functionDepth: 3
    functionLinenumber: 2618
    functionLinenumberEnd: 2629
    functionName: test_command_aborted_early
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_command_aborted_early(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2644,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2645,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2637
    functionDepth: 3
    functionLinenumber: 2637
    functionLinenumberEnd: 2648
    functionName: test_client_deinit_early_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_client_deinit_early_input_line(struct server_connection *conn,\n\t\t\t\t
      \   const char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2650
    functionDepth: 0
    functionLinenumber: 2650
    functionLinenumberEnd: 2654
    functionName: test_server_client_deinit_early
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_client_deinit_early(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2669,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2669,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2672,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reply
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - struct _client_deinit_early*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2673
      start: 2663
    functionDepth: 13
    functionLinenumber: 2663
    functionLinenumberEnd: 2673
    functionName: test_client_client_deinit_early_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_client_deinit_early_reply(\n\tconst struct smtp_reply
      *reply,\n\tstruct _client_deinit_early *ctx ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2678,1
    - Dst: smtp_client_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2681,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2684,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _client_deinit_early*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2675
    functionDepth: 6
    functionLinenumber: 2675
    functionLinenumberEnd: 2686
    functionName: test_client_client_deinit_early_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - smtp_client_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_client_deinit_early_timeout(struct _client_deinit_early
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2694,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2696,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2698,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2700,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2702,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2703,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2705,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2706,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2712
      start: 2688
    functionDepth: 14
    functionLinenumber: 2688
    functionLinenumberEnd: 2712
    functionName: test_client_client_deinit_early
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - timeout_add_short
    - smtp_client_command_submit
    - net_ip2addr
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_client_deinit_early(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2720,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2723,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2724,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2716
    functionDepth: 3
    functionLinenumber: 2716
    functionLinenumberEnd: 2728
    functionName: test_client_deinit_early
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_client_deinit_early(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2745,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2745,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2747,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2751,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2752,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _dns_service_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2754
      start: 2740
    functionDepth: 13
    functionLinenumber: 2740
    functionLinenumberEnd: 2754
    functionName: test_client_dns_service_failure_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_dns_service_failure_reply(const struct smtp_reply
      *reply,\n\t\t\t\t      struct _dns_service_failure *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2763,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2765,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2768,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2770,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2773,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2774,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2776,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2777,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2779,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2782,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2783,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2785,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2789
      start: 2756
    functionDepth: 14
    functionLinenumber: 2756
    functionLinenumberEnd: 2789
    functionName: test_client_dns_service_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_dns_service_failure(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2800,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2802,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2803,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2806
      start: 2793
    functionDepth: 3
    functionLinenumber: 2793
    functionLinenumberEnd: 2806
    functionName: test_dns_service_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_service_failure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2817,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2819,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2820,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2821,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2823
      start: 2814
    functionDepth: 5
    functionLinenumber: 2814
    functionLinenumberEnd: 2823
    functionName: test_dns_timeout_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - io_remove
    - i_close_fd
    - io_loop_stop
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_dns_timeout_input(struct server_connection *conn ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2829
      start: 2825
    functionDepth: 0
    functionLinenumber: 2825
    functionLinenumberEnd: 2829
    functionName: test_dns_dns_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_dns_timeout(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2842,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2842,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2844,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2848,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2849,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _dns_timeout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2851
      start: 2837
    functionDepth: 13
    functionLinenumber: 2837
    functionLinenumberEnd: 2851
    functionName: test_client_dns_timeout_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_dns_timeout_reply(const struct smtp_reply *reply,\n\t\t\t
      \     struct _dns_timeout *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2860,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2862,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2865,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2867,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2870,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2871,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2873,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2874,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2876,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2879,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2880,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2882,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2886
      start: 2853
    functionDepth: 14
    functionLinenumber: 2853
    functionLinenumberEnd: 2886
    functionName: test_client_dns_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_dns_timeout(const struct smtp_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2897,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2899,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2900,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2904
      start: 2890
    functionDepth: 3
    functionLinenumber: 2890
    functionLinenumberEnd: 2904
    functionName: test_dns_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2915,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2917,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2919
      start: 2912
    functionDepth: 11
    functionLinenumber: 2912
    functionLinenumberEnd: 2919
    functionName: test_dns_lookup_failure_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - t_strdup_printf
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_failure_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2925
      start: 2921
    functionDepth: 0
    functionLinenumber: 2921
    functionLinenumberEnd: 2925
    functionName: test_dns_dns_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_dns_lookup_failure(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2938,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2938,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2940,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2944,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2945,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _dns_lookup_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2947
      start: 2933
    functionDepth: 13
    functionLinenumber: 2933
    functionLinenumberEnd: 2947
    functionName: test_client_dns_lookup_failure_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_dns_lookup_failure_reply(const struct smtp_reply
      *reply,\n\t\t\t\t     struct _dns_lookup_failure *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2956,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2958,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2961,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2963,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2966,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2967,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2969,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2970,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2972,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2975,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2976,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2978,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2982
      start: 2949
    functionDepth: 14
    functionLinenumber: 2949
    functionLinenumberEnd: 2982
    functionName: test_client_dns_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool test_client_dns_lookup_failure(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2990,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2992,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2993,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:2996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2997
      start: 2986
    functionDepth: 3
    functionLinenumber: 2986
    functionLinenumberEnd: 2997
    functionName: test_dns_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_failure(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3012,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3026,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3030,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3031,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3034,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3035,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3039,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3040,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3048,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3049,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - conn
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3060
      start: 3005
    functionDepth: 3
    functionLinenumber: 3005
    functionLinenumberEnd: 3060
    functionName: test_authentication_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - str_begins_with
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: int
    signature: "int test_authentication_input_line(struct server_connection *conn,\n\t\t\t
      \      const char *line ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3066
      start: 3062
    functionDepth: 0
    functionLinenumber: 3062
    functionLinenumberEnd: 3066
    functionName: test_server_authentication
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_authentication(unsigned int index)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3090,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3091,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3096,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3100,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - context
    argTypes:
    - struct smtp_reply*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3106
      start: 3082
    functionDepth: 13
    functionLinenumber: 3082
    functionLinenumberEnd: 3106
    functionName: test_client_authentication_login_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_authentication_login_cb(const struct smtp_reply *reply,\n\t\t\t\t\t
      \  void *context)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3114,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3115,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3120,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3124,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _authentication_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3130
      start: 3108
    functionDepth: 13
    functionLinenumber: 3108
    functionLinenumberEnd: 3130
    functionName: test_client_authentication_mail_from_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_authentication_mail_from_cb(\n\tconst struct smtp_reply
      *reply,\n\tstruct _authentication_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3138,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3139,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3144,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3148,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _authentication_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3154
      start: 3132
    functionDepth: 13
    functionLinenumber: 3132
    functionLinenumberEnd: 3154
    functionName: test_client_authentication_rcpt_to_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_authentication_rcpt_to_cb(\n\tconst struct smtp_reply
      *reply,\n\tstruct _authentication_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3162,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3170,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _authentication_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3176
      start: 3156
    functionDepth: 13
    functionLinenumber: 3156
    functionLinenumberEnd: 3176
    functionName: test_client_authentication_rcpt_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_authentication_rcpt_data_cb(\n\tconst struct smtp_reply
      *reply,\n\tstruct _authentication_peer *pctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3184,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3185,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3190,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3194,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _authentication_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3200
      start: 3178
    functionDepth: 13
    functionLinenumber: 3178
    functionLinenumberEnd: 3200
    functionName: test_client_authentication_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_authentication_data_cb(\n\tconst struct smtp_reply
      *reply,\n\tstruct _authentication_peer *pctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3209,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3211,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3212,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _authentication_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3217
      start: 3202
    functionDepth: 1
    functionLinenumber: 3202
    functionLinenumberEnd: 3217
    functionName: test_client_authentication_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_client_authentication_finished(\n\tstruct _authentication_peer
      *pctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3233,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3237,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3296,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3298,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3300,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3305,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3308,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3311,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3313,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3320,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3320,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3321,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3323,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3326,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - index
    argTypes:
    - struct _authentication*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3327
      start: 3219
    functionDepth: 6
    functionLinenumber: 3219
    functionLinenumberEnd: 3327
    functionName: test_client_authentication_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_client_transaction_start
    - smtp_client_connection_unref
    - smtp_client_connection_create
    - smtp_client_transaction_send
    - smtp_client_transaction_create
    - i_stream_set_name
    - strlen
    - net_ip2addr
    - i_new
    - smtp_client_transaction_add_rcpt
    - i_stream_unref
    - i_stream_create_from_data
    - smtp_client_connection_connect
    linkageType: ''
    returnType: void
    signature: "void test_client_authentication_submit(struct _authentication *ctx,\n\t\t\t\t
      \ unsigned int index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3335,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3337,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3340,1
    - Dst: test_client_authentication_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3346
      start: 3329
    functionDepth: 7
    functionLinenumber: 3329
    functionLinenumberEnd: 3346
    functionName: test_client_authentication
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_init
    - test_expect_errors
    - i_new
    - test_client_authentication_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_authentication(const struct smtp_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3354,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3356,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3357,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3361
      start: 3350
    functionDepth: 3
    functionLinenumber: 3350
    functionLinenumberEnd: 3361
    functionName: test_authentication
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_authentication(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3378,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3381,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3383,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3390,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3396
      start: 3369
    functionDepth: 2
    functionLinenumber: 3369
    functionLinenumberEnd: 3396
    functionName: test_transaction_timeout_input_line
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - i_sleep_intr_secs
    linkageType: ''
    returnType: int
    signature: "int test_transaction_timeout_input_line(struct server_connection *conn,\n\t\t\t\t
      \   const char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3400,1
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3403
      start: 3398
    functionDepth: 2
    functionLinenumber: 3398
    functionLinenumberEnd: 3403
    functionName: test_server_transaction_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    - test_expect_errors
    linkageType: ''
    returnType: void
    signature: void test_server_transaction_timeout(unsigned int index)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3432,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3433,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3440,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3443,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3443,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _transaction_timeout_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3446
      start: 3426
    functionDepth: 13
    functionLinenumber: 3426
    functionLinenumberEnd: 3446
    functionName: test_client_transaction_timeout_mail_from_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_transaction_timeout_mail_from_cb(\n\tconst struct
      smtp_reply *reply,\n\tstruct _transaction_timeout_peer *pctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3453,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3454,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3461,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3464,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3464,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _transaction_timeout_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3467
      start: 3448
    functionDepth: 13
    functionLinenumber: 3448
    functionLinenumberEnd: 3467
    functionName: test_client_transaction_timeout_rcpt_to_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_transaction_timeout_rcpt_to_cb(\n\tconst struct smtp_reply
      *reply, struct _transaction_timeout_peer *pctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3474,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3475,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3482,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3484,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3487,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3487,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _transaction_timeout_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3490
      start: 3469
    functionDepth: 13
    functionLinenumber: 3469
    functionLinenumberEnd: 3490
    functionName: test_client_transaction_timeout_rcpt_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - test_assert
    - smtp_reply_log
    - i_debug
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_transaction_timeout_rcpt_data_cb(\n\tconst struct
      smtp_reply *reply, struct _transaction_timeout_peer *pctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3497,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3498,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3505,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3508,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3508,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - reply
    - pctx
    argTypes:
    - struct smtp_reply*
    - struct _transaction_timeout_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3511
      start: 3492
    functionDepth: 13
    functionLinenumber: 3492
    functionLinenumberEnd: 3511
    functionName: test_client_transaction_timeout_data_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_reply_log
    - i_debug
    - test_assert
    - smtp_reply_is_success
    linkageType: ''
    returnType: void
    signature: "void test_client_transaction_timeout_data_cb(const struct smtp_reply
      *reply,\n\t\t\t\t\tstruct _transaction_timeout_peer *pctx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3519,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3521,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3522,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3527,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3528,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3529,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3530,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3533,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3534,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3535,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3536,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3541,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3542,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _transaction_timeout_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3543
      start: 3513
    functionDepth: 6
    functionLinenumber: 3513
    functionLinenumberEnd: 3543
    functionName: test_client_transaction_timeout_finished
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_transaction_timeout_finished(struct _transaction_timeout_peer
      *pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3557,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3559,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3559,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3560,1
    - Dst: smtp_client_transaction_send
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3562,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _transaction_timeout_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3565
      start: 3545
    functionDepth: 6
    functionLinenumber: 3545
    functionLinenumberEnd: 3565
    functionName: test_client_transaction_timeout_submit2
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_send
    - i_stream_set_name
    - strlen
    - i_stream_unref
    - i_stream_create_from_data
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_transaction_timeout_submit2(struct _transaction_timeout_peer
      *pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3570,1
    - Dst: smtp_client_transaction_add_rcpt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3572,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct _transaction_timeout_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3581
      start: 3567
    functionDepth: 6
    functionLinenumber: 3567
    functionLinenumberEnd: 3581
    functionName: test_client_transaction_timeout_submit1
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - smtp_client_transaction_add_rcpt
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_transaction_timeout_submit1(struct _transaction_timeout_peer
      *pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3589,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3593,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3595,1
    - Dst: smtp_client_transaction_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3597,1
    - Dst: smtp_client_transaction_set_timeout
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3602,1
    - Dst: smtp_client_transaction_start
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3603,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3606,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - index
    argTypes:
    - struct _transaction_timeout*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3610
      start: 3583
    functionDepth: 7
    functionLinenumber: 3583
    functionLinenumberEnd: 3610
    functionName: test_client_transaction_timeout_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_start
    - smtp_client_connection_unref
    - smtp_client_connection_create
    - smtp_client_transaction_create
    - timeout_add_short
    - net_ip2addr
    - i_new
    - smtp_client_transaction_set_timeout
    linkageType: ''
    returnType: void
    signature: "void test_client_transaction_timeout_submit(struct _transaction_timeout
      *ctx,\n\t\t\t\t       unsigned int index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3618,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3621,1
    - Dst: test_client_transaction_timeout_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3627
      start: 3612
    functionDepth: 8
    functionLinenumber: 3612
    functionLinenumberEnd: 3627
    functionName: test_client_transaction_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_init
    - i_new
    - test_client_transaction_timeout_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_transaction_timeout(const struct smtp_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3635,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3637,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3638,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3642
      start: 3631
    functionDepth: 3
    functionLinenumber: 3631
    functionLinenumberEnd: 3642
    functionName: test_transaction_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_transaction_timeout(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3656,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3660,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3662,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3664,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3665,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3666,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3668
      start: 3649
    functionDepth: 11
    functionLinenumber: 3649
    functionLinenumberEnd: 3668
    functionName: test_dns_invalid_ssl_certificate_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - i_stream_read_next_line
    - net_ip2addr
    - o_stream_nsend_str
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_dns_invalid_ssl_certificate_input(struct server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3674
      start: 3670
    functionDepth: 0
    functionLinenumber: 3670
    functionLinenumberEnd: 3674
    functionName: test_dns_invalid_ssl_certificate
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_invalid_ssl_certificate(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3683,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3687,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3690,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3691
      start: 3678
    functionDepth: 5
    functionLinenumber: 3678
    functionLinenumberEnd: 3691
    functionName: test_invalid_ssl_certificate_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_invalid_ssl_certificate_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3696,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3700
      start: 3693
    functionDepth: 3
    functionLinenumber: 3693
    functionLinenumberEnd: 3700
    functionName: test_invalid_ssl_certificate_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - sleep
    linkageType: ''
    returnType: int
    signature: int test_invalid_ssl_certificate_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3707,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3708
      start: 3702
    functionDepth: 0
    functionLinenumber: 3702
    functionLinenumberEnd: 3708
    functionName: test_server_invalid_ssl_certificate
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_invalid_ssl_certificate(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3721,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3721,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3723,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3726,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3727,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - reply
    - ctx
    argTypes:
    - struct smtp_reply*
    - struct _invalid_ssl_certificate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3729
      start: 3716
    functionDepth: 13
    functionLinenumber: 3716
    functionLinenumberEnd: 3729
    functionName: test_client_invalid_ssl_certificate_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - io_loop_stop
    - test_assert
    - smtp_reply_log
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_client_invalid_ssl_certificate_reply(const struct smtp_reply
      *reply,\n\t\t\t\t\t  struct _invalid_ssl_certificate *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3739,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3741,1
    - Dst: smtp_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3744,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3746,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3749,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3750,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3752,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3753,1
    - Dst: smtp_client_connection_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3755,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3758,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3759,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3761,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3765
      start: 3731
    functionDepth: 14
    functionLinenumber: 3731
    functionLinenumberEnd: 3765
    functionName: test_client_invalid_ssl_certificate
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_create
    - smtp_client_command_new
    - test_expect_errors
    - smtp_client_command_submit
    - i_new
    - smtp_client_init
    - smtp_client_connection_connect
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: "bool test_client_invalid_ssl_certificate(\n\tconst struct smtp_client_settings
      *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3775,1
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3777,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3780,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3781,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3785,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3787
      start: 3769
    functionDepth: 3
    functionLinenumber: 3769
    functionLinenumberEnd: 3787
    functionName: test_invalid_ssl_certificate
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_begin
    - test_end
    - test_client_defaults
    - ssl_iostream_test_settings_client
    - test_run_client_server
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: void test_invalid_ssl_certificate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3826,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3830,1
    - Dst: settings_root_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3831,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3836,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3839,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3843,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - smtp_set
    - test_set
    argTypes:
    - struct smtp_client_settings*
    - struct test_smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3845
      start: 3822
    functionDepth: 3
    functionLinenumber: 3822
    functionLinenumberEnd: 3845
    functionName: test_client_defaults
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 38
    functionsReached:
    - i_zero
    - event_create
    - event_set_ptr
    - settings_root_init
    - settings_root_override
    linkageType: ''
    returnType: void
    signature: "void test_client_defaults(struct smtp_client_settings *smtp_set,\n\t\t\t\t
      struct test_smtp_client_settings *test_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3850,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3851,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3853
      start: 3847
    functionDepth: 6
    functionLinenumber: 3847
    functionLinenumberEnd: 3853
    functionName: test_client_progress_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_progress_timeout(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3859,1
    - Dst: client_test
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3860,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client_test
    - client_set
    argTypes:
    - test_client_init_t
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3867
      start: 3855
    functionDepth: 1
    functionLinenumber: 3855
    functionLinenumberEnd: 3867
    functionName: test_client_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 2
    functionsReached:
    - client_test
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool test_client_init(test_client_init_t client_test,\n\t\t const
      struct smtp_client_settings *client_set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3871,1
    - Dst: smtp_client_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3874,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3875
      start: 3869
    functionDepth: 6
    functionLinenumber: 3869
    functionLinenumberEnd: 3875
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 6
    functionsReached:
    - smtp_client_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3881,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3882,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - client_test
    - client_set
    argTypes:
    - test_client_init_t
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3884
      start: 3877
    functionDepth: 2
    functionLinenumber: 3877
    functionLinenumberEnd: 3884
    functionName: test_client_run
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 25
    functionsReached:
    - io_loop_run
    - test_client_init
    - test_client_deinit
    linkageType: ''
    returnType: void
    signature: "void test_client_run(test_client_init_t client_test,\n\t\tconst struct
      smtp_client_settings *client_set)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3900,1
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3902,1
    - Dst: ssl_iostream_context_init_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3905,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3907,1
    - Dst: io_stream_create_ssl_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3911,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3914,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3917,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3918,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3919,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3923,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3925
      start: 3892
    functionDepth: 3
    functionLinenumber: 3892
    functionLinenumberEnd: 3925
    functionName: server_connection_init_ssl
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 1
    functionsReached:
    - io_stream_create_ssl_server
    - connection_input_resume
    - connection_input_halt
    - i_error
    - ssl_iostream_handshake
    - ssl_iostream_test_settings_server
    - ssl_iostream_get_last_error
    - ssl_iostream_context_init_server
    linkageType: ''
    returnType: int
    signature: int server_connection_init_ssl(struct server_connection *conn)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: test_server_input
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3935,1
    - Dst: i_stream_create_dot
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3946,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3950,1
    - Dst: test_server_input_data
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3953,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3957,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3964,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3965,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3967,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3977,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3986,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3990,1
    - Dst: test_server_input_line
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:3995,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4003,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4011,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4012,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4017,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4018,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4026,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4031,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4033,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4040,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4048,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 79
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4050
      start: 3927
    functionDepth: 7
    functionLinenumber: 3927
    functionLinenumberEnd: 4050
    functionName: server_connection_input
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_input_data
    - test_server_input
    - test_server_input_line
    - str_begins_with
    - i_unreached
    - i_stream_skip
    - i_debug
    - i_stream_get_error
    - i_stream_read_next_line
    - server_connection_deinit
    - i_stream_create_dot
    - o_stream_nsend_str
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void server_connection_input(struct connection *_conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4057,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4059,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4060,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4063,1
    - Dst: server_connection_init_ssl
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4066,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4067,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4072,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4077,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4081
      start: 4052
    functionDepth: 6
    functionLinenumber: 4052
    functionLinenumberEnd: 4081
    functionName: server_connection_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 4
    functionsReached:
    - test_server_init
    - pool_alloconly_create
    - p_new
    - connection_init_server
    - server_connection_init_ssl
    - server_connection_deinit
    - o_stream_nsend_str
    - net_set_nonblock
    linkageType: ''
    returnType: void
    signature: void server_connection_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4090,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4092,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4094,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4095,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4096,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4097
      start: 4083
    functionDepth: 4
    functionLinenumber: 4083
    functionLinenumberEnd: 4097
    functionName: server_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 51
    functionsReached:
    - test_server_deinit
    - pool_unref
    - ssl_iostream_destroy
    - i_stream_unref
    - connection_deinit
    linkageType: ''
    returnType: void
    signature: void server_connection_deinit(struct server_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4105
      start: 4099
    functionDepth: 0
    functionLinenumber: 4099
    functionLinenumberEnd: 4105
    functionName: server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void server_connection_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4112,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4114,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4115,1
    - Dst: server_connection_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4120
      start: 4107
    functionDepth: 3
    functionLinenumber: 4107
    functionLinenumberEnd: 4120
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - server_connection_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4140,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4142,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4145,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4148,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4150,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4153,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4155
      start: 4135
    functionDepth: 5
    functionLinenumber: 4135
    functionLinenumberEnd: 4155
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 71
    functionsReached:
    - connection_list_init
    - ssl_iostream_context_cache_free
    - io_add
    - ssl_iostream_context_unref
    - io_remove
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_run(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_listen
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4170,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4172,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4174,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - bind_port
    argTypes:
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4178
      start: 4168
    functionDepth: 6
    functionLinenumber: 4168
    functionLinenumberEnd: 4178
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 7
    functionsReached:
    - i_fatal
    - i_debug
    - net_ip2addr
    - net_listen
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(in_port_t *bind_port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4182,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4185,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4189,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4190,1
    - Dst: struct test_server_data*::server_test
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4191,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4192,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4195,1
    - Dst: test_root_event_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4197,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4198,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4199,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_server_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4202
      start: 4180
    functionDepth: 12
    functionLinenumber: 4180
    functionLinenumberEnd: 4202
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 1
    functionsReached:
    - i_close_fd
    - main_deinit
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - struct test_server_data*::server_test
    - i_free
    - i_debug
    - test_root_event_free
    linkageType: ''
    returnType: int
    signature: int test_run_server(struct test_server_data *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4206,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4209,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4211,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4212,1
    - Dst: struct test_server_data*::dns_test
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4213,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4214,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4217,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4219,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4220,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4221,1
    - Dst: test_root_event_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_server_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4224
      start: 4204
    functionDepth: 12
    functionLinenumber: 4204
    functionLinenumberEnd: 4224
    functionName: test_run_dns
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_close_fd
    - main_deinit
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - struct test_server_data*::dns_test
    - i_debug
    - test_root_event_free
    linkageType: ''
    returnType: int
    signature: int test_run_dns(struct test_server_data *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4230,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4233,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4235,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4237,1
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4238,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4239,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - client_set
    - client_test
    argTypes:
    - struct smtp_client_settings*
    - test_client_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4243
      start: 4226
    functionDepth: 12
    functionLinenumber: 4226
    functionLinenumberEnd: 4243
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 6
    functionsReached:
    - test_client_run
    - i_sleep_msecs
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_run_client(const struct smtp_client_settings *client_set,\n\t\ttest_client_init_t
      client_test)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4258,1
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4260,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4265,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4272,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4273,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4274,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4276,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4287,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4288,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4290,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4295,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4296,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4297,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4299,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4303,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4305,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4306,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4307,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4309,1
    - Dst: test_root_event_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4310,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 5
    argNames:
    - client_set
    - client_test
    - server_test
    - server_tests_count
    - dns_test
    argTypes:
    - struct smtp_client_settings*
    - test_client_init_t
    - test_server_init_t
    - unsigned int
    - test_dns_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4311
      start: 4245
    functionDepth: 5
    functionLinenumber: 4245
    functionLinenumberEnd: 4311
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 93
    functionsReached:
    - i_zero
    - test_subprocess_fork
    - net_listen_unix
    - test_root_event_free
    - i_close_fd
    - i_fatal
    - test_subprocess_kill_all
    - test_subprocess_notify_signal_reset
    - i_unlink_if_exists
    - i_new
    - test_open_server_fd
    - test_run_client
    - i_free
    - test_subprocess_notify_signal_wait
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(const struct smtp_client_settings *client_set,\n\t\t
      \      test_client_init_t client_test,\n\t\t       test_server_init_t server_test,\n\t\t
      \      unsigned int server_tests_count,\n\t\t       test_dns_init_t dns_test)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_openssl_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4320
      start: 4317
    functionDepth: 2
    functionLinenumber: 4317
    functionLinenumberEnd: 4320
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 18
    functionsReached:
    - ssl_iostream_openssl_init
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4324,1
    - Dst: ssl_iostream_openssl_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4326
      start: 4322
    functionDepth: 3
    functionLinenumber: 4322
    functionLinenumberEnd: 4326
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 27
    functionsReached:
    - ssl_iostream_openssl_deinit
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4333,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4334,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4336,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4342,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4346,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4347,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4348,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4351,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4353,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4355,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4357,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c:4358,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4361
      start: 4328
    functionDepth: 7
    functionLinenumber: 4328
    functionLinenumberEnd: 4361
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-smtp/test-smtp-client-errors.c
    functionUses: 24
    functionsReached:
    - i_zero
    - main_init
    - event_set_forced_debug
    - getopt
    - lib_init
    - lib_deinit
    - i_fatal
    - test_run
    - htonl
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: smtp_client_connection_get_capabilities
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: enum smtp_capability
    signature: enum smtp_capability smtp_client_connection_get_capabilities(struct
      smtp_client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: smtp_client_connection_get_size_capability
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uoff_t
    signature: "uoff_t smtp_client_connection_get_size_capability(\n\tstruct smtp_client_connection
      *conn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:73,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:75,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - cap_name
    argTypes:
    - struct smtp_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 80
    functionName: smtp_client_connection_find_extra_capability
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - strcasecmp
    - array_foreach
    linkageType: ''
    returnType: struct smtp_client_capability_extra
    signature: "struct smtp_client_capability_extra *\nsmtp_client_connection_find_extra_capability(\n\tstruct
      smtp_client_connection *conn, const char *cap_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:86,1
    - Dst: smtp_client_connection_find_extra_capability
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:86,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:89,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:90,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:93,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:98,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:102,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - conn
    - cap
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_client_capability_extra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 106
    functionName: smtp_client_connection_accept_extra_capability
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - p_array_init
    - p_strarray_dup
    - array_push_back
    - smtp_client_connection_find_extra_capability
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_accept_extra_capability(\n\tstruct smtp_client_connection
      *conn,\n\tconst struct smtp_client_capability_extra *cap)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:114,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:117,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - name
    argTypes:
    - struct smtp_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 123
    functionName: smtp_client_connection_get_extra_capability
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - strcasecmp
    - array_foreach
    linkageType: ''
    returnType: struct smtp_capability_extra
    signature: "struct smtp_capability_extra *\nsmtp_client_connection_get_extra_capability(struct
      smtp_client_connection *conn,\n\t\t\t\t\t    const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_commands_list_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:132,1
    - Dst: smtp_client_commands_list_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:134,1
    - Dst: smtp_client_commands_abort_delayed
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 129
    functionDepth: 8
    functionLinenumber: 129
    functionLinenumberEnd: 137
    functionName: smtp_client_connection_commands_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_commands_abort_delayed
    - smtp_client_commands_list_abort
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_commands_abort(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_commands_list_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:143,1
    - Dst: smtp_client_commands_list_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:145,1
    - Dst: smtp_client_commands_fail_delayed
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 139
    functionDepth: 10
    functionLinenumber: 139
    functionLinenumberEnd: 148
    functionName: smtp_client_connection_commands_fail_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_commands_fail_delayed
    - smtp_client_commands_list_fail_reply
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_commands_fail_reply(struct smtp_client_connection
      *conn,\n\t\t\t\t\t   const struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:156,1
    - Dst: smtp_client_connection_commands_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - status
    - error
    argTypes:
    - struct smtp_client_connection*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 150
    functionDepth: 11
    functionLinenumber: 150
    functionLinenumberEnd: 160
    functionName: smtp_client_connection_commands_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_reply_init
    - smtp_client_connection_commands_fail_reply
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_commands_fail(struct smtp_client_connection
      *conn,\n\t\t\t\t     unsigned int status, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 9
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: smtp_client_connection_transactions_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_abort
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_transactions_abort(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_connection_result
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 175
    functionDepth: 12
    functionLinenumber: 175
    functionLinenumberEnd: 187
    functionName: smtp_client_connection_transactions_fail_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_connection_result
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_transactions_fail_reply(\n\tstruct smtp_client_connection
      *conn, const struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:195,1
    - Dst: smtp_client_connection_transactions_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - status
    - error
    argTypes:
    - struct smtp_client_connection*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 189
    functionDepth: 13
    functionLinenumber: 189
    functionLinenumberEnd: 199
    functionName: smtp_client_connection_transactions_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_transactions_fail_reply
    - smtp_reply_init
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_transactions_fail(struct smtp_client_connection
      *conn,\n\t\t\t\t\t unsigned int status, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_transaction_connection_destroyed
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 212
    functionName: smtp_client_connection_transactions_drop
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_transaction_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_transactions_drop(struct smtp_client_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_clone
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:223,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:226,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:227,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:230,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:230,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:231,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:232,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:233,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:234,1
    - Dst: struct smtp_client_login_callback*::callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:238,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:240,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 214
    functionDepth: 4
    functionLinenumber: 214
    functionLinenumberEnd: 241
    functionName: smtp_client_connection_login_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_reply_clone
    - array_copy
    - array_foreach
    - struct smtp_client_login_callback*::callback
    - array_count
    - t_array_init
    - array_clear
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_login_callback(struct smtp_client_connection
      *conn,\n\t\t\t\t      const struct smtp_reply *reply)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:249,1
    - Dst: smtp_client_connection_login_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - status
    - error
    argTypes:
    - struct smtp_client_connection*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 243
    functionDepth: 5
    functionLinenumber: 243
    functionLinenumberEnd: 253
    functionName: smtp_client_connection_login_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_login_callback
    - smtp_reply_init
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_login_fail(struct smtp_client_connection
      *conn,\n\t\t\t\t  unsigned int status, const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - state
    argTypes:
    - struct smtp_client_connection*
    - enum smtp_client_connection_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: smtp_client_connection_set_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_set_state(struct smtp_client_connection
      *conn,\n\t\t\t\t enum smtp_client_connection_state state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 267
    functionName: smtp_client_connection_cork
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - o_stream_cork
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_cork(struct smtp_client_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:273,1
    - Dst: smtp_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:274,1
    - Dst: smtp_client_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 279
    functionName: smtp_client_connection_uncork
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - smtp_client_connection_handle_output_error
    - o_stream_uncork_flush
    - smtp_client_connection_trigger_output
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_uncork(struct smtp_client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 285
    functionName: smtp_client_connection_get_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: enum smtp_client_connection_state
    signature: enum smtp_client_connection_state smtp_client_connection_get_state(struct
      smtp_client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - ip_r
    argTypes:
    - struct smtp_client_connection*
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 291
    functionName: smtp_client_connection_get_remote_ip
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_get_remote_ip(\n\tstruct smtp_client_connection
      *conn, struct ip_addr *ip_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:296,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:298,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 302
    functionName: smtp_client_command_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_fail
    - smtp_client_connection_ref
    - smtp_client_connection_unref
    linkageType: ''
    returnType: void
    signature: void smtp_client_command_timeout(struct smtp_client_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:315,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:320,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:324,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:326,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 304
    functionDepth: 6
    functionLinenumber: 304
    functionLinenumberEnd: 329
    functionName: smtp_client_connection_start_cmd_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - e_debug
    - timeout_add
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_start_cmd_timeout(\n\tstruct smtp_client_connection
      *conn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:342,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:348,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:351,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:353,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:354,1
    - Dst: smtp_client_connection_start_cmd_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:356,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 331
    functionDepth: 7
    functionLinenumber: 331
    functionLinenumberEnd: 358
    functionName: smtp_client_connection_update_cmd_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 2
    functionsReached:
    - e_debug
    - timeout_reset
    - smtp_client_connection_start_cmd_timeout
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_update_cmd_timeout(\n\tstruct smtp_client_connection
      *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:364,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:364,1
    - Dst: smtp_client_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:366,1
    - Dst: smtp_client_connection_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:369,1
    - Dst: smtp_client_connection_login_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:370,1
    - Dst: smtp_client_connection_transactions_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:372,1
    - Dst: smtp_client_connection_commands_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:373,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 360
    functionDepth: 13
    functionLinenumber: 360
    functionLinenumberEnd: 377
    functionName: smtp_client_connection_fail_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_unref
    - smtp_client_connection_login_callback
    - e_debug
    - smtp_client_connection_transactions_fail_reply
    - smtp_client_connection_commands_fail_reply
    - smtp_reply_log
    - smtp_client_connection_disconnect
    - smtp_client_connection_ref
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_fail_reply(struct smtp_client_connection
      *conn,\n\t\t\t\t  const struct smtp_reply *reply)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:387,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:389,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:390,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:396,1
    - Dst: smtp_client_connection_last_ip
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:399,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:400,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:405,1
    - Dst: smtp_client_connection_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:410,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - conn
    - status
    - error
    - user_error
    argTypes:
    - struct smtp_client_connection*
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 379
    functionDepth: 14
    functionLinenumber: 379
    functionLinenumberEnd: 411
    functionName: smtp_client_connection_fail
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 3
    functionsReached:
    - i_zero
    - smtp_client_connection_last_ip
    - timeout_add_short
    - e_error
    - smtp_client_connection_fail_reply
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_fail(struct smtp_client_connection *conn,\n\t\t\t\t
      unsigned int status, const char *error,\n\t\t\t\t const char *user_error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn
    - status
    - error
    argTypes:
    - struct smtp_client_connection*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 413
    functionDepth: 15
    functionLinenumber: 413
    functionLinenumberEnd: 418
    functionName: smtp_client_connection_fail_equal
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_fail
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_fail_equal(struct smtp_client_connection
      *conn,\n\t\t\t\t  unsigned int status, const char *error)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:425,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:430,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:437,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:440,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:443,1
    - Dst: ssl_iostream_get_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:447,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:452,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:453,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:460,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - conn
    - error
    - user_error
    argTypes:
    - struct smtp_client_connection*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 420
    functionDepth: 15
    functionLinenumber: 420
    functionLinenumberEnd: 463
    functionName: smtp_client_connection_lost
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - smtp_client_connection_fail
    - ssl_iostream_get_last_error
    - ssl_iostream_get_state
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_lost(struct smtp_client_connection *conn,\n\t\t\t
      \   const char *error, const char *user_error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_lost
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:472,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:474,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:475,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:476,1
    - Dst: smtp_client_connection_lost
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 465
    functionDepth: 16
    functionLinenumber: 465
    functionLinenumberEnd: 483
    functionName: smtp_client_connection_handle_output_error
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 4
    functionsReached:
    - o_stream_get_error
    - o_stream_get_name
    - smtp_client_connection_lost
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_handle_output_error(\n\tstruct smtp_client_connection
      *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:489,1
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:491,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:495,1
    - Dst: smtp_client_connection_login_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:497,1
    - Dst: smtp_client_connection_update_cmd_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:499,1
    - Dst: smtp_client_connection_start_transaction
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 485
    functionDepth: 8
    functionLinenumber: 485
    functionLinenumberEnd: 502
    functionName: stmp_client_connection_ready
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_client_connection_update_cmd_timeout
    - smtp_client_connection_set_state
    - smtp_client_connection_start_transaction
    - smtp_client_connection_login_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void stmp_client_connection_ready(struct smtp_client_connection *conn,\n\t\t\t
      \    const struct smtp_reply *reply)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:508,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:509,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:511,1
    - Dst: smtp_client_connection_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:514,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:521,1
    - Dst: smtp_client_connection_handshake
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:523,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - reply
    - conn
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 504
    functionDepth: 14
    functionLinenumber: 504
    functionLinenumberEnd: 524
    functionName: smtp_client_connection_xclient_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_handshake
    - e_debug
    - timeout_reset
    - smtp_reply_log
    - smtp_client_connection_fail_reply
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_xclient_cb(const struct smtp_reply *reply,\n\t\t\t\t
      \ struct smtp_client_connection *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:533,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:538,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:540,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - cmdstr
    argTypes:
    - struct smtp_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 526
    functionDepth: 14
    functionLinenumber: 526
    functionLinenumberEnd: 544
    functionName: smtp_client_connection_xclient_submit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_client_command_submit
    - smtp_client_command_new
    - smtp_client_command_write
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_xclient_submit(struct smtp_client_connection
      *conn,\n\t\t\t\t      const char *cmdstr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:551,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:554,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:556,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:557,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:558,1
    - Dst: smtp_xtext_encode_cstr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:559,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:562,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:566,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:566,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:569,1
    - Dst: smtp_client_connection_xclient_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:572,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:572,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:575,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - conn
    - str
    - offset
    - field
    - value
    argTypes:
    - struct smtp_client_connection*
    - string_t*
    - size_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 546
    functionDepth: 15
    functionLinenumber: 546
    functionLinenumberEnd: 577
    functionName: smtp_client_connection_xclient_add
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_xtext_encode_cstr
    - str_c
    - str_append_c
    - str_len
    - smtp_client_connection_xclient_submit
    - str_truncate
    - str_append
    - t_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_xclient_add(struct smtp_client_connection
      *conn,\n\t\t\t\t   string_t *str, size_t offset,\n\t\t\t\t   const char *field,
      const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:586,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:587,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:588,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - conn
    - str
    - offset
    - field
    - format
    argTypes:
    - struct smtp_client_connection*
    - string_t*
    - size_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 580
    functionDepth: 16
    functionLinenumber: 580
    functionLinenumberEnd: 590
    functionName: smtp_client_connection_xclient_addf
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - t_strdup_vprintf
    - smtp_client_connection_xclient_add
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_xclient_addf(struct smtp_client_connection
      *conn,\n\t\t\t\t    string_t *str, size_t offset,\n\t\t\t\t    const char *field,
      const char *format, ...)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:607,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:619,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:620,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:621,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:625,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:626,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:631,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:634,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:638,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:642,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:652,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:653,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:659,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:660,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:666,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:667,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:673,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:675,1
    - Dst: connection_is_valid_dns_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:675,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:676,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:682,1
    - Dst: smtp_client_connection_xclient_addf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:683,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:690,1
    - Dst: smtp_client_connection_xclient_addf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:691,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:698,1
    - Dst: smtp_client_connection_xclient_addf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:699,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:706,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:707,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:716,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:717,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:723,1
    - Dst: smtp_client_connection_xclient_addf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:724,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:731,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:732,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:741,1
    - Dst: smtp_client_connection_xclient_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:742,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:747,1
    - Dst: smtp_client_connection_xclient_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:748,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:748,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 67
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 592
    functionDepth: 17
    functionLinenumber: 592
    functionLinenumberEnd: 751
    functionName: smtp_client_connection_send_xclient
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - smtp_client_connection_xclient_addf
    - t_strconcat
    - str_len
    - smtp_client_connection_xclient_submit
    - str_array_icase_find
    - net_ip2addr
    - str_append
    - i_assert
    - smtp_client_connection_xclient_add
    - connection_is_valid_dns_name
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_send_xclient(struct smtp_client_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:760,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 763
    functionName: smtp_client_connection_clear_password
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - strlen
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_clear_password(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:768,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 765
    functionDepth: 2
    functionLinenumber: 765
    functionLinenumberEnd: 770
    functionName: smtp_client_connection_auth_deinit
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - i_free
    - dsasl_client_free
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_auth_deinit(struct smtp_client_connection
      *conn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:780,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:788,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:791,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:792,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:800,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:803,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:804,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:806,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:809,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:812,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:813,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:819,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:820,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:820,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:821,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:822,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:823,1
    - Dst: dsasl_client_input
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:827,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:830,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:832,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:834,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:837,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:838,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:839,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:841,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:844,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:844,1
    - Dst: smtp_client_command_submit_after
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:845,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:850,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:857,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:858,1
    - Dst: smtp_client_connection_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:859,1
    - Dst: smtp_client_connection_clear_password
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:863,1
    - Dst: smtp_client_connection_auth_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:864,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:866,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:869,1
    - Dst: smtp_client_connection_handshake
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:871,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 2
    argNames:
    - reply
    - conn
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 772
    functionDepth: 15
    functionLinenumber: 772
    functionLinenumberEnd: 872
    functionName: smtp_client_connection_auth_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - smtp_client_connection_handshake
    - strlen
    - buffer_create_dynamic
    - t_strdup_printf
    - dsasl_client_input
    - MAX_BASE64_ENCODED_SIZE
    - smtp_client_command_submit_after
    - t_str_new
    - smtp_client_command_new
    - smtp_client_connection_clear_password
    - timeout_reset
    - smtp_client_connection_auth_deinit
    - smtp_client_command_write
    - MAX_BASE64_DECODED_SIZE
    - base64_encode
    - e_error
    - pool_datastack_create
    - smtp_reply_log
    - i_assert
    - i_free
    - smtp_client_connection_fail_reply
    - base64_decode
    - e_debug
    - smtp_client_connection_fail
    - dsasl_client_output
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_auth_cb(const struct smtp_reply *reply,\n\t\t\t
      \      struct smtp_client_connection *conn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:883,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:885,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:886,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:901,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:903,1
    - Dst: dsasl_client_mech_find
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:905,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:909,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:915,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - conn
    - mech_r
    - error_r
    argTypes:
    - struct smtp_client_connection*
    - struct dsasl_client_mech**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 874
    functionDepth: 11
    functionLinenumber: 874
    functionLinenumberEnd: 919
    functionName: smtp_client_connection_get_sasl_mech
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - dsasl_client_mech_find
    - t_strdup_printf
    - t_strsplit_spaces
    - str_array_icase_find
    - dsasl_client_mech_get_name
    linkageType: ''
    returnType: int
    signature: "int smtp_client_connection_get_sasl_mech(struct smtp_client_connection
      *conn,\n\t\t\t\t     const struct dsasl_client_mech **mech_r,\n\t\t\t\t     const
      char **error_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_send_xclient
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:935,1
    - Dst: smtp_client_connection_send_xclient
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:939,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:946,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:953,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:956,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:958,1
    - Dst: smtp_client_connection_get_sasl_mech
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:961,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:963,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:964,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:970,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:983,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:985,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:987,1
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:989,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:990,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:996,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:997,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:998,1
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1014,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1016,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1017,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1019,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1019,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1021,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1021,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1023,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1025,1
    - Dst: smtp_client_command_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1028,1
    - Dst: smtp_client_command_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1030,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1033,1
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1036,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 921
    functionDepth: 18
    functionLinenumber: 921
    functionLinenumberEnd: 1039
    functionName: smtp_client_connection_authenticate
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_len
    - strlen
    - t_strdup_printf
    - i_strdup
    - MAX_BASE64_ENCODED_SIZE
    - t_str_new
    - smtp_client_command_new
    - smtp_client_command_printf
    - i_zero
    - smtp_client_connection_send_xclient
    - smtp_client_command_submit
    - base64_encode
    - i_assert
    - e_debug
    - smtp_client_connection_set_state
    - smtp_client_connection_fail
    - dsasl_client_new
    - smtp_client_connection_get_sasl_mech
    - dsasl_client_mech_get_name
    - dsasl_client_output
    linkageType: ''
    returnType: bool
    signature: bool smtp_client_connection_authenticate(struct smtp_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1047,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1048,1
    - Dst: smtp_client_connection_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1051,1
    - Dst: smtp_client_connection_ssl_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1055,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1056,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1061,1
    - Dst: smtp_client_connection_handshake
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1062,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - reply
    - conn
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1041
    functionDepth: 15
    functionLinenumber: 1041
    functionLinenumberEnd: 1064
    functionName: smtp_client_connection_starttls_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_handshake
    - e_debug
    - timeout_reset
    - smtp_client_connection_fail
    - smtp_client_connection_ssl_init
    - smtp_reply_log
    - smtp_client_connection_fail_reply
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_starttls_cb(const struct smtp_reply *reply,\n\t\t\t\t
      \  struct smtp_client_connection *conn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1073,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1081,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1083,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1086,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1087,1
    - Dst: smtp_client_connection_authenticate
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1091,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1066
    functionDepth: 19
    functionLinenumber: 1066
    functionLinenumberEnd: 1092
    functionName: smtp_client_connection_starttls
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_authenticate
    - smtp_client_command_new
    - e_debug
    - smtp_client_command_submit
    - smtp_client_connection_fail
    - smtp_client_command_write
    linkageType: ''
    returnType: bool
    signature: bool smtp_client_connection_starttls(struct smtp_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1104,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1105,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1110,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1110,1
    - Dst: array_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1111,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1112,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1113,1
    - Dst: array_lsearch
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1119,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1122,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1126,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - conn
    - arr
    - extensions
    argTypes:
    - struct smtp_client_connection*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1127
    functionName: smtp_client_connection_record_param_extensions
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - array_lsearch
    - array_push_back
    - array_back
    - array_count
    - array_pop_back
    - array_append_zero
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_record_param_extensions(\n\tstruct smtp_client_connection
      *conn, ARRAY_TYPE(const_string) *arr,\n\tconst char *const *extensions)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_find_extra_capability
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1138,1
    - Dst: smtp_client_connection_get_extra_capability
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1142,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1145,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1146,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1148,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1149,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1150,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1152,1
    - Dst: smtp_client_connection_record_param_extensions
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1154,1
    - Dst: smtp_client_connection_record_param_extensions
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - conn
    - cap_name
    - params
    argTypes:
    - struct smtp_client_connection*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1129
    functionDepth: 2
    functionLinenumber: 1129
    functionLinenumberEnd: 1160
    functionName: smtp_client_connection_record_extra_capability
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - p_array_init
    - smtp_client_connection_record_param_extensions
    - p_strarray_dup
    - array_push_back
    - smtp_client_connection_find_extra_capability
    - array_is_created
    - smtp_client_connection_get_extra_capability
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_record_extra_capability(\n\tstruct smtp_client_connection
      *conn, const char *cap_name,\n\tconst char *const *params)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1168,1
    - Dst: smtp_client_connection_handshake
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1180,1
    - Dst: smtp_client_connection_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1184,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1189,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1190,1
    - Dst: smtp_client_connection_fail_equal
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1195,1
    - Dst: smtp_ehlo_line_parse
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1210,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1212,1
    - Dst: smtp_capability_find_by_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1219,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1223,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1228,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1229,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1237,1
    - Dst: smtp_client_connection_record_extra_capability
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1240,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1251,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1254,1
    - Dst: smtp_client_connection_starttls
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1255,1
    - Dst: stmp_client_connection_ready
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1256,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 57
    argCount: 2
    argNames:
    - reply
    - conn
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1162
    functionDepth: 20
    functionLinenumber: 1162
    functionLinenumberEnd: 1258
    functionName: smtp_client_connection_handshake_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - smtp_client_connection_handshake
    - smtp_client_connection_record_extra_capability
    - smtp_capability_find_by_name
    - e_debug
    - p_strarray_dup
    - timeout_reset
    - e_warning
    - smtp_client_connection_starttls
    - smtp_client_connection_fail_equal
    - smtp_ehlo_line_parse
    - str_to_uoff
    - stmp_client_connection_ready
    - smtp_client_connection_fail_reply
    - p_clear
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_handshake_cb(const struct smtp_reply *reply,\n\t\t\t\t
      \   struct smtp_client_connection *conn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1278,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1281,1
    - Dst: smtp_client_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1283,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1285,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1286,1
    - Dst: smtp_client_command_write
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1287,1
    - Dst: smtp_client_command_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1288,1
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1260
    functionDepth: 14
    functionLinenumber: 1260
    functionLinenumberEnd: 1291
    functionName: smtp_client_connection_handshake
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 4
    functionsReached:
    - smtp_client_command_new
    - i_unreached
    - e_debug
    - smtp_client_command_submit
    - smtp_client_connection_set_state
    - smtp_client_command_write
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_handshake(struct smtp_client_connection
      *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1301,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1302,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1304,1
    - Dst: smtp_client_connection_fail_equal
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1305,1
    - Dst: smtp_client_connection_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1310,1
    - Dst: smtp_client_connection_handshake
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1314,1
    - Dst: smtp_client_connection_fail_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1319,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1325,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1327,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1328,1
    - Dst: smtp_reply_is_success
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1336,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1337,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1338,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1340,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1342,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1344,1
    - Dst: smtp_client_command_input_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1351,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - conn
    - reply
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1293
    functionDepth: 16
    functionLinenumber: 1293
    functionLinenumberEnd: 1357
    functionName: smtp_client_connection_input_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_handshake
    - e_debug
    - t_strdup_printf
    - smtp_client_connection_fail
    - smtp_client_connection_fail_equal
    - smtp_reply_log
    - smtp_client_connection_fail_reply
    - smtp_client_command_input_reply
    - smtp_reply_is_success
    linkageType: ''
    returnType: int
    signature: "int smtp_client_connection_input_reply(struct smtp_client_connection
      *conn,\n\t\t\t\t   const struct smtp_reply *reply)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1370,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1372,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1374,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1379,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1380,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1383,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1384,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1385,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1391,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1393,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1398,1
    - Dst: smtp_client_connection_established
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1403,1
    - Dst: smtp_client_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1406,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1407,1
    - Dst: smtp_reply_parse_ehlo
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1411,1
    - Dst: smtp_reply_parse_next
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1415,1
    - Dst: smtp_client_connection_input_reply
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1422,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1426,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1427,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 41
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1359
    functionDepth: 17
    functionLinenumber: 1359
    functionLinenumberEnd: 1430
    functionName: smtp_client_connection_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_established
    - smtp_client_connection_unref
    - smtp_reply_parse_next
    - smtp_reply_parse_ehlo
    - o_stream_uncork
    - timeout_reset
    - t_strdup_printf
    - o_stream_cork
    - i_stream_get_error
    - ssl_iostream_is_handshaked
    - i_stream_read
    - smtp_client_connection_fail
    - smtp_client_connection_input_reply
    - i_stream_get_name
    - i_assert
    - smtp_client_connection_ref
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_input(struct connection *_conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1476,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1478,1
    - Dst: smtp_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1481,1
    - Dst: smtp_client_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1485,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1486,1
    - Dst: smtp_client_command_send_more
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1487,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1490,1
    - Dst: smtp_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1491,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1493,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1471
    functionDepth: 17
    functionLinenumber: 1471
    functionLinenumberEnd: 1495
    functionName: smtp_client_connection_output
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_handle_output_error
    - smtp_client_command_send_more
    - o_stream_uncork_flush
    - smtp_client_connection_unref
    - timeout_reset
    - o_stream_cork
    - o_stream_flush
    - smtp_client_connection_ref
    linkageType: ''
    returnType: int
    signature: int smtp_client_connection_output(struct smtp_client_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1497
    functionDepth: 2
    functionLinenumber: 1497
    functionLinenumberEnd: 1501
    functionName: smtp_client_connection_trigger_output
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 6
    functionsReached:
    - o_stream_set_flush_pending
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_trigger_output(struct smtp_client_connection
      *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1513,1
    - Dst: smtp_client_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1514,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1517,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1520,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1527,1
    - Dst: smtp_client_connection_lost
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1533,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1535,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1536,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1537,1
    - Dst: smtp_client_connection_lost
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1541,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1503
    functionDepth: 16
    functionLinenumber: 1503
    functionLinenumberEnd: 1546
    functionName: smtp_client_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_client_connection_close
    - t_strdup_printf
    - i_stream_get_error
    - smtp_client_connection_fail
    - i_stream_get_name
    - smtp_client_connection_lost
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_destroy(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1551,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1555,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1548
    functionDepth: 7
    functionLinenumber: 1548
    functionLinenumberEnd: 1560
    functionName: smtp_client_connection_established
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - timeout_reset
    - o_stream_set_flush_callback
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_established(struct smtp_client_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_check_cert_validity
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1568,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1571,1
    - Dst: ssl_iostream_get_allow_invalid_cert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1572,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - error_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1562
    functionDepth: 2
    functionLinenumber: 1562
    functionLinenumberEnd: 1582
    functionName: smtp_client_connection_ssl_handshaked
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - ssl_iostream_check_cert_validity
    - ssl_iostream_get_allow_invalid_cert
    linkageType: ''
    returnType: enum ssl_iostream_state
    signature: enum ssl_iostream_state smtp_client_connection_ssl_handshaked(const
      char **error_r, void *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1590,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1591,1
    - Dst: smtp_reply_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1596,1
    - Dst: smtp_reply_parser_set_stream
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1599,1
    - Dst: connection_streams_changed
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1603,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1584
    functionDepth: 8
    functionLinenumber: 1584
    functionLinenumberEnd: 1604
    functionName: smtp_client_connection_streams_changed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_reply_parser_init
    - stat
    - iostream_rawlog_create
    - connection_streams_changed
    - smtp_reply_parser_set_stream
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_streams_changed(struct smtp_client_connection
      *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_init_ssl_ctx
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1617,1
    - Dst: ssl_iostream_context_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1620,1
    - Dst: ssl_iostream_client_context_cache_get
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1629,1
    - Dst: smtp_protocol_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1632,1
    - Dst: ssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1637,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct smtp_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1606
    functionDepth: 5
    functionLinenumber: 1606
    functionLinenumberEnd: 1639
    functionName: smtp_client_connection_init_ssl_ctx
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - ssl_iostream_context_ref
    - smtp_client_init_ssl_ctx
    - smtp_protocol_name
    - ssl_iostream_client_context_cache_get
    - ssl_iostream_context_set_application_protocols
    linkageType: ''
    returnType: int
    signature: "int smtp_client_connection_init_ssl_ctx(struct smtp_client_connection
      *conn,\n\t\t\t\t    const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_init_ssl_ctx
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1647,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1648,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1653,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1657,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1658,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1659,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1660,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1668,1
    - Dst: io_stream_create_ssl_client
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1669,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1673,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1678,1
    - Dst: smtp_client_connection_streams_changed
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1679,1
    - Dst: ssl_iostream_set_handshake_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1681,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1684,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1685,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1687,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1691,1
    - Dst: smtp_client_connection_established
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1693,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1697,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct smtp_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1641
    functionDepth: 11
    functionLinenumber: 1641
    functionLinenumberEnd: 1701
    functionName: smtp_client_connection_ssl_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - connection_input_resume
    - smtp_client_connection_established
    - connection_input_halt
    - e_debug
    - ssl_iostream_set_handshake_callback
    - i_stream_ref
    - t_strdup_printf
    - smtp_client_connection_init_ssl_ctx
    - smtp_client_connection_streams_changed
    - ssl_iostream_handshake
    - o_stream_ref
    - ssl_iostream_get_last_error
    - ssl_iostream_is_handshaked
    - io_stream_create_ssl_client
    - o_stream_set_flush_callback
    - o_stream_destroy
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int smtp_client_connection_ssl_init(struct smtp_client_connection
      *conn,\n\t\t\t\tconst char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1712,1
    - Dst: net_getsockname
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1722,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1723,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1724,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1725,1
    - Dst: net_set_tcp_nodelay
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1728,1
    - Dst: net_set_send_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1730,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1732,1
    - Dst: net_set_recv_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1737,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1739,1
    - Dst: smtp_client_connection_streams_changed
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1746,1
    - Dst: smtp_client_connection_ssl_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1749,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1750,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1752,1
    - Dst: smtp_client_connection_established
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1757,1
    - Dst: smtp_client_connection_input
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1758,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1703
    functionDepth: 18
    functionLinenumber: 1703
    functionLinenumberEnd: 1760
    functionName: smtp_client_connection_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_established
    - net_getsockname
    - net_set_send_buffer_size
    - e_debug
    - net_set_tcp_nodelay
    - t_strdup_printf
    - e_error
    - smtp_client_connection_fail
    - net_ip2addr
    - smtp_client_connection_ssl_init
    - net_set_recv_buffer_size
    - i_assert
    - smtp_client_connection_input
    - smtp_client_connection_streams_changed
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_connected(struct connection *_conn, bool
      success)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1767,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1769,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1775,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1777,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1783,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1785,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1791,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1793
      start: 1762
    functionDepth: 15
    functionLinenumber: 1762
    functionLinenumberEnd: 1793
    functionName: smtp_client_connection_connect_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - smtp_client_connection_fail
    - t_strdup_printf
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_connect_timeout(struct smtp_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1804,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1805,1
    - Dst: connection_client_connect_async
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1807,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1808,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1815,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1817,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1795
    functionDepth: 8
    functionLinenumber: 1795
    functionLinenumberEnd: 1820
    functionName: smtp_client_connection_do_connect
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - e_debug
    - timeout_add
    - connection_client_connect_async
    - i_assert
    - p_clear
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_do_connect(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1822
    functionDepth: 1
    functionLinenumber: 1822
    functionLinenumberEnd: 1826
    functionName: smtp_client_connection_last_ip
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool smtp_client_connection_last_ip(struct smtp_client_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1833,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1839,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1840,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1840,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1842,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1843,1
    - Dst: connection_init_client_ip_from
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1846,1
    - Dst: smtp_client_connection_do_connect
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1828
    functionDepth: 9
    functionLinenumber: 1828
    functionLinenumberEnd: 1851
    functionName: smtp_client_connection_connect_next_ip
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - connection_init_client_ip_from
    - e_debug
    - smtp_client_connection_do_connect
    - net_ip2addr
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_connect_next_ip(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1856,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1858,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1860,1
    - Dst: smtp_client_connection_do_connect
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1853
    functionDepth: 9
    functionLinenumber: 1853
    functionLinenumberEnd: 1864
    functionName: smtp_client_connection_connect_unix
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_client_connection_do_connect
    - connection_init_client_unix
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_connect_unix(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1870,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1872,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1873,1
    - Dst: smtp_client_connection_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1866
    functionDepth: 15
    functionLinenumber: 1866
    functionLinenumberEnd: 1877
    functionName: smtp_client_connection_delayed_host_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_client_connection_fail
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_delayed_host_lookup_failure(\n\tstruct
      smtp_client_connection *conn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1889,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1891,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1892,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1898,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1901,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1903,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1904,1
    - Dst: smtp_client_connection_connect_next_ip
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1907,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - result
    - conn
    argTypes:
    - struct dns_lookup_result*
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1879
    functionDepth: 10
    functionLinenumber: 1879
    functionLinenumberEnd: 1908
    functionName: smtp_client_connection_dns_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - memcpy
    - e_debug
    - timeout_add_short
    - e_error
    - i_new
    - smtp_client_connection_connect_next_ip
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_dns_callback(const struct dns_lookup_result
      *result,\n\t\t\t\t    struct smtp_client_connection *conn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1916,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1919,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1920,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1926,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1932
      start: 1910
    functionDepth: 0
    functionLinenumber: 1910
    functionLinenumberEnd: 1932
    functionName: smtp_client_connection_lookup_ip
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - dns_lookup
    - dns_client_lookup
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_lookup_ip(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1937,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1939,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1941,1
    - Dst: smtp_client_connection_login_callback
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1934
    functionDepth: 6
    functionLinenumber: 1934
    functionLinenumberEnd: 1945
    functionName: smtp_client_connection_already_connected
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - smtp_client_connection_login_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_already_connected(struct smtp_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1950,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1951,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1961,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1963,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1968,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1969,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1971
      start: 1947
    functionDepth: 1
    functionLinenumber: 1947
    functionLinenumberEnd: 1971
    functionName: smtp_client_connection_connect_more
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_is_created
    - array_count
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_connect_more(struct smtp_client_connection
      *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1983,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1984,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1986,1
    - Dst: smtp_client_connection_connect_more
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1993,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:1999,1
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2010,1
    - Dst: smtp_client_connection_lookup_ip
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2014,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2019,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2020,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2024,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2025,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - conn
    - login_callback
    - login_context
    argTypes:
    - struct smtp_client_connection*
    - smtp_client_command_callback_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1973
    functionDepth: 6
    functionLinenumber: 1973
    functionLinenumberEnd: 2028
    functionName: smtp_client_connection_connect
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 22
    functionsReached:
    - i_array_init
    - array_append_space
    - smtp_client_connection_lookup_ip
    - e_debug
    - timeout_add
    - smtp_client_connection_connect_more
    - smtp_client_connection_set_state
    - array_is_created
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_connect(\n\tstruct smtp_client_connection
      *conn,\n\tsmtp_client_command_callback_t login_callback, void *login_context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2044
    functionDepth: 2
    functionLinenumber: 2044
    functionLinenumberEnd: 2048
    functionName: smtp_client_connection_list_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: struct connection_list
    signature: struct connection_list *smtp_client_connection_list_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2055,1
    - Dst: smtp_client_connection_clear_password
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2057,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2062,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2063,1
    - Dst: dns_lookup_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2067,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2068,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2069,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2070,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2071,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2072,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2074,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2075,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2077,1
    - Dst: smtp_client_connection_auth_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2078,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2080,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2082,1
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2084,1
    - Dst: smtp_client_connection_login_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2088,1
    - Dst: smtp_client_connection_transactions_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2091,1
    - Dst: smtp_client_connection_commands_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2094,1
    - Dst: smtp_client_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2098,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2099
      start: 2050
    functionDepth: 14
    functionLinenumber: 2050
    functionLinenumberEnd: 2099
    functionName: smtp_client_connection_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - smtp_client_command_unref
    - o_stream_uncork
    - e_debug
    - io_remove
    - ssl_iostream_context_unref
    - smtp_client_connection_clear_password
    - dns_lookup_abort
    - settings_free
    - ssl_iostream_destroy
    - smtp_client_connection_set_state
    - smtp_client_connection_transactions_fail
    - connection_disconnect
    - smtp_client_connection_commands_fail
    - smtp_client_connection_auth_deinit
    - o_stream_nsend_str
    - smtp_client_connection_login_fail
    - o_stream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_disconnect(struct smtp_client_connection
      *conn)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2110,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2111,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2124,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2130,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2135,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2140,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2146,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2150,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2153,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2161,1
    - Dst: smtp_proxy_data_merge
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2194,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2209,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2210,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2213,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2220,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2224,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2226,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2230,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2232,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2233,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2235,1
    - Dst: smtp_protocol_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2236,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2237,1
    - Dst: smtp_protocol_name
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2238,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2239,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2240,1
    - Dst: connection_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2243,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2245,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 91
    argCount: 4
    argNames:
    - client
    - name
    - protocol
    - set
    argTypes:
    - struct smtp_client*
    - char*
    - enum smtp_protocol
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2101
    functionDepth: 11
    functionLinenumber: 2101
    functionLinenumberEnd: 2248
    functionName: smtp_client_connection_do_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - event_unref
    - p_array_init
    - t_strdup_printf
    - smtp_protocol_name
    - connection_init
    - smtp_proxy_data_merge
    - p_new
    - p_strarray_dup
    - event_set_append_log_prefix
    - event_add_str
    - event_set_forced_debug
    - event_create
    - p_strdup_empty
    - pool_ref
    - i_assert
    - pool_alloconly_create
    - array_push_back
    - str_array_length
    - event_add_category
    linkageType: ''
    returnType: struct smtp_client_connection
    signature: "struct smtp_client_connection *\nsmtp_client_connection_do_create(struct
      smtp_client *client, const char *name,\n\t\t\t\t enum smtp_protocol protocol,\n\t\t\t\t
      const struct smtp_client_settings *set)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2263,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2270,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2271,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2272,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2273,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2278,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2281,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2284,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2286,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2288,1
    - Dst: smtp_client_connection_do_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2290,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2291,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2296,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2301,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2305,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2307,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 7
    argNames:
    - client
    - protocol
    - ip
    - port
    - hostname
    - ssl_mode
    - set
    argTypes:
    - struct smtp_client*
    - enum smtp_protocol
    - struct ip_addr*
    - in_port_t
    - char*
    - enum smtp_client_connection_ssl_mode
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2310
      start: 2250
    functionDepth: 12
    functionLinenumber: 2250
    functionLinenumberEnd: 2310
    functionName: smtp_client_connection_create_ip
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 2
    functionsReached:
    - i_zero
    - p_strdup
    - net_addr2ip
    - i_unreached
    - e_debug
    - t_strdup_printf
    - net_ip2addr
    - smtp_client_connection_do_create
    - i_new
    - event_add_str
    - i_assert
    - net_ip_compare
    linkageType: ''
    returnType: struct smtp_client_connection
    signature: "struct smtp_client_connection *\nsmtp_client_connection_create_ip(struct
      smtp_client *client,\n\t\t\t\t enum smtp_protocol protocol,\n\t\t\t\t const
      struct ip_addr *ip, in_port_t port,\n\t\t\t\t const char *hostname,\n\t\t\t\t
      enum smtp_client_connection_ssl_mode ssl_mode,\n\t\t\t\t const struct smtp_client_settings
      *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_create_ip
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - client
    - protocol
    - host
    - port
    - ssl_mode
    - set
    argTypes:
    - struct smtp_client*
    - enum smtp_protocol
    - char*
    - in_port_t
    - enum smtp_client_connection_ssl_mode
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2322
      start: 2312
    functionDepth: 13
    functionLinenumber: 2312
    functionLinenumberEnd: 2322
    functionName: smtp_client_connection_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 26
    functionsReached:
    - smtp_client_connection_create_ip
    linkageType: ''
    returnType: struct smtp_client_connection
    signature: "struct smtp_client_connection *\nsmtp_client_connection_create(struct
      smtp_client *client,\n\t\t\t      enum smtp_protocol protocol,\n\t\t\t      const
      char *host, in_port_t port,\n\t\t\t      enum smtp_client_connection_ssl_mode
      ssl_mode,\n\t\t\t      const struct smtp_client_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2331,1
    - Dst: smtp_client_connection_do_create
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2333,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2334,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - client
    - protocol
    - path
    - set
    argTypes:
    - struct smtp_client*
    - enum smtp_protocol
    - char*
    - struct smtp_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2339
      start: 2324
    functionDepth: 12
    functionLinenumber: 2324
    functionLinenumberEnd: 2339
    functionName: smtp_client_connection_create_unix
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - e_debug
    - p_strdup
    - t_strconcat
    - smtp_client_connection_do_create
    linkageType: ''
    returnType: struct smtp_client_connection
    signature: "struct smtp_client_connection *\nsmtp_client_connection_create_unix(struct
      smtp_client *client,\n\t\t\t\t   enum smtp_protocol protocol,\n\t\t\t\t   const
      char *path,\n\t\t\t\t   const struct smtp_client_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2341
    functionDepth: 1
    functionLinenumber: 2341
    functionLinenumberEnd: 2345
    functionName: smtp_client_connection_ref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 6
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_ref(struct smtp_client_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2353,1
    - Dst: smtp_client_connection_clear_password
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2361,1
    - Dst: smtp_client_connection_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2362,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2365,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2366,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2368,1
    - Dst: smtp_reply_parser_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2371,1
    - Dst: smtp_client_connection_login_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2373,1
    - Dst: smtp_client_connection_transactions_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2376,1
    - Dst: smtp_client_connection_commands_fail
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2379,1
    - Dst: smtp_client_connection_transactions_drop
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2382,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2384,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2386,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2387,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2388,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2389,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct smtp_client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2347
    functionDepth: 15
    functionLinenumber: 2347
    functionLinenumberEnd: 2391
    functionName: smtp_client_connection_unref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 16
    functionsReached:
    - connection_deinit
    - i_assert
    - smtp_reply_parser_deinit
    - i_free
    - e_debug
    - smtp_client_connection_clear_password
    - pool_unref
    - smtp_client_connection_transactions_fail
    - smtp_client_connection_commands_fail
    - array_free
    - smtp_client_connection_transactions_drop
    - smtp_client_connection_disconnect
    - smtp_client_connection_login_fail
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_unref(struct smtp_client_connection **_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_transactions_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2403,1
    - Dst: smtp_client_connection_commands_abort
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2404,1
    - Dst: smtp_client_connection_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2405,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2408,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2409,1
    - Dst: smtp_client_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct smtp_client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2412
      start: 2393
    functionDepth: 16
    functionLinenumber: 2393
    functionLinenumberEnd: 2412
    functionName: smtp_client_connection_close
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 3
    functionsReached:
    - smtp_client_connection_commands_abort
    - smtp_client_connection_unref
    - smtp_client_connection_transactions_abort
    - smtp_client_connection_disconnect
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_close(struct smtp_client_connection **_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_proxy_data_merge
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - proxy_data
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2422
      start: 2414
    functionDepth: 4
    functionLinenumber: 2414
    functionLinenumberEnd: 2422
    functionName: smtp_client_connection_update_proxy_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 2
    functionsReached:
    - smtp_proxy_data_merge
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_update_proxy_data(\n\tstruct smtp_client_connection
      *conn,\n\tconst struct smtp_proxy_data *proxy_data)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2429,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2431,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2433,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2435,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2437,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2438,1
    - Dst: smtp_client_transaction_switch_ioloop
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2442,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2424
    functionDepth: 9
    functionLinenumber: 2424
    functionLinenumberEnd: 2445
    functionName: smtp_client_connection_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - io_loop_move_io
    - connection_switch_ioloop
    - io_loop_move_timeout
    - smtp_client_transaction_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_switch_ioloop(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct smtp_reply*
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2453
      start: 2447
    functionDepth: 0
    functionLinenumber: 2447
    functionLinenumberEnd: 2453
    functionName: smtp_client_connection_rset_dummy_cb
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_rset_dummy_cb(\n\tconst struct smtp_reply
      *reply ATTR_UNUSED,\n\tstruct smtp_client_connection *conn ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2458,1
    - Dst: smtp_client_command_rset_submit
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2465
      start: 2455
    functionDepth: 0
    functionLinenumber: 2455
    functionLinenumberEnd: 2465
    functionName: smtp_client_connection_reset
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_client_command_rset_submit
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_reset(struct smtp_client_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2472,1
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2477,1
    - Dst: smtp_client_connection_reset
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2483,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2485,1
    - Dst: smtp_reply_init
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2487,1
    - Dst: smtp_client_transaction_connection_result
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2488,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2490
      start: 2467
    functionDepth: 12
    functionLinenumber: 2467
    functionLinenumberEnd: 2490
    functionName: smtp_client_connection_do_start_transaction
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_client_transaction_connection_result
    - smtp_reply_init
    - smtp_client_connection_set_state
    - smtp_client_connection_reset
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_do_start_transaction(struct smtp_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2502,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2506
      start: 2492
    functionDepth: 1
    functionLinenumber: 2492
    functionLinenumberEnd: 2506
    functionName: smtp_client_connection_start_transaction
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - smtp_client_connection_set_state
    - timeout_add_short
    linkageType: ''
    returnType: void
    signature: void smtp_client_connection_start_transaction(struct smtp_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2512,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2514,1
    - Dst: smtp_client_connection_connect
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2517,1
    - Dst: smtp_client_connection_start_transaction
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - conn
    - trans
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2519
      start: 2508
    functionDepth: 7
    functionLinenumber: 2508
    functionLinenumberEnd: 2519
    functionName: smtp_client_connection_add_transaction
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - e_debug
    - DLLIST2_APPEND
    - smtp_client_connection_connect
    - smtp_client_connection_start_transaction
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_add_transaction(\n\tstruct smtp_client_connection
      *conn,\n\tstruct smtp_client_transaction *trans)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2527,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2529,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2534,1
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2542,1
    - Dst: smtp_client_connection_start_transaction
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2544,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - conn
    - trans
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2545
      start: 2521
    functionDepth: 2
    functionLinenumber: 2521
    functionLinenumberEnd: 2545
    functionName: smtp_client_connection_abort_transaction
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 2
    functionsReached:
    - e_debug
    - DLLIST2_REMOVE
    - smtp_client_connection_set_state
    - smtp_client_connection_start_transaction
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_abort_transaction(\n\tstruct smtp_client_connection
      *conn,\n\tstruct smtp_client_transaction *trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2551,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2553,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2555,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2558,1
    - Dst: smtp_client_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2562,1
    - Dst: smtp_client_connection_start_transaction
      Src: /src/dovecot/src/lib-smtp/smtp-client-connection.c:2564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - trans
    argTypes:
    - struct smtp_client_connection*
    - struct smtp_client_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2547
    functionDepth: 2
    functionLinenumber: 2547
    functionLinenumberEnd: 2565
    functionName: smtp_client_connection_next_transaction
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-client-connection.c
    functionUses: 1
    functionsReached:
    - e_debug
    - DLLIST2_REMOVE
    - smtp_client_connection_set_state
    - smtp_client_connection_start_transaction
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_client_connection_next_transaction(\n\tstruct smtp_client_connection
      *conn,\n\tstruct smtp_client_transaction *trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_cmp
      Src: /src/dovecot/src/lib-smtp/smtp-address.h:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - address1
    - address2
    argTypes:
    - struct smtp_address*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: smtp_address_equals
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.h
    functionUses: 3
    functionsReached:
    - smtp_address_cmp
    linkageType: ''
    returnType: void
    signature: "void smtp_address_equals(const struct smtp_address *address1,\n\t\t
      \   const struct smtp_address *address2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_cmp_icase
      Src: /src/dovecot/src/lib-smtp/smtp-address.h:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - address1
    - address2
    argTypes:
    - struct smtp_address*
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: smtp_address_equals_icase
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.h
    functionUses: 0
    functionsReached:
    - smtp_address_cmp_icase
    linkageType: ''
    returnType: void
    signature: "void smtp_address_equals_icase(const struct smtp_address *address1,\n\t\t\t
      \ const struct smtp_address *address2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - address
    argTypes:
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: smtp_address_isnull
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE smtp_address_isnull(const struct smtp_address *address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_address_isnull
      Src: /src/dovecot/src/lib-smtp/smtp-address.h:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - address
    argTypes:
    - struct smtp_address*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 212
    functionName: smtp_address_is_broken
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-address.h
    functionUses: 4
    functionsReached:
    - smtp_address_isnull
    linkageType: ''
    returnType: ATTR_PURE
    signature: ATTR_PURE smtp_address_is_broken(const struct smtp_address *address)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - subm
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: smtp_submit_run_async
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-submit.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_submit_run_async(subm, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _rcpt
    - ','
    - _type
    - ','
    - _func
    - ','
    - _context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: smtp_server_recipient_add_hook
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_server_recipient_add_hook(_rcpt, _type, _func, _context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _rcpt
    - ','
    - _type
    - ','
    - _func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 130
    functionName: smtp_server_recipient_remove_hook
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_server_recipient_remove_hook(_rcpt, _type, _func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _cmd
    - ','
    - _type
    - ','
    - _func
    - ','
    - _context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 600
    functionName: smtp_server_command_add_hook
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_server_command_add_hook(_cmd, _type, _func, _context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _cmd
    - ','
    - _type
    - ','
    - _func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 606
    functionName: smtp_server_command_remove_hook
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: smtp_server_command_remove_hook(_cmd, _type, _func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_update_counters
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 56
    functionName: smtp_server_connection_update_stats
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - connection_update_counters
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_update_stats(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_update_stats
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: smtp_server_connection_get_stats
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 3
    functionsReached:
    - smtp_server_connection_update_stats
    linkageType: ''
    returnType: struct smtp_server_stats
    signature: 'struct smtp_server_stats *

      smtp_server_connection_get_stats(struct smtp_server_connection *conn)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:72,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:79,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 92
    functionName: smtp_server_connection_check_pipeline
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_connection_check_pipeline(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: smtp_server_connection_input_halt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 5
    functionsReached:
    - connection_input_halt
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_input_halt(struct smtp_server_connection
      *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_check_pipeline
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:108,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:109,1
    - Dst: smtp_server_connection_pending_command_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:111,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:124,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:128,1
    - Dst: io_set_pending
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:129,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 131
    functionName: smtp_server_connection_input_resume
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - connection_input_resume
    - smtp_server_connection_pending_command_data
    - i_stream_have_bytes_left
    - io_set_pending
    - smtp_server_connection_check_pipeline
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_input_resume(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: smtp_server_connection_input_lock
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - smtp_server_connection_input_halt
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_input_lock(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_input_resume
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 139
    functionDepth: 4
    functionLinenumber: 139
    functionLinenumberEnd: 143
    functionName: smtp_server_connection_input_unlock
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - smtp_server_connection_input_resume
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_input_unlock(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:150,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:151,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:152,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - conn
    - callback
    - context
    argTypes:
    - struct smtp_server_connection*
    - smtp_server_input_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 154
    functionName: smtp_server_connection_input_capture
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - i_stream_set_input_pending
    - i_assert
    - connection_input_halt
    - io_add_istream
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_input_capture(\n\tstruct smtp_server_connection
      *conn,\n\tsmtp_server_input_callback_t *callback, void *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:166,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:170,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 156
    functionDepth: 8
    functionLinenumber: 156
    functionLinenumberEnd: 173
    functionName: smtp_server_connection_update_rawlog
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - stat
    - iostream_rawlog_create
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_update_rawlog(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_update_rawlog
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:178,1
    - Dst: smtp_command_parser_set_stream
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:179,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:181,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 175
    functionDepth: 9
    functionLinenumber: 175
    functionLinenumberEnd: 184
    functionName: smtp_server_connection_streams_changed
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_update_rawlog
    - o_stream_set_flush_callback
    - o_stream_set_flush_pending
    - smtp_command_parser_set_stream
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_streams_changed(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:193,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:196,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:199,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:200,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:202,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:203,1
    - Dst: smtp_server_connection_streams_changed
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - conn
    - input
    - output
    argTypes:
    - struct smtp_server_connection*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 186
    functionDepth: 10
    functionLinenumber: 186
    functionLinenumberEnd: 206
    functionName: smtp_server_connection_set_streams
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - i_stream_ref
    - o_stream_ref
    - o_stream_set_no_error_handling
    - smtp_server_connection_streams_changed
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_set_streams(struct smtp_server_connection
      *conn,\n\t\t\t\t\tstruct istream *input,\n\t\t\t\t\tstruct ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:213,1
    - Dst: smtp_server_connection_set_streams
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - input
    - output
    argTypes:
    - struct smtp_server_connection*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 208
    functionDepth: 11
    functionLinenumber: 208
    functionLinenumberEnd: 216
    functionName: smtp_server_connection_set_ssl_streams
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - smtp_server_connection_set_streams
    - ENUM_NEGATE
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_set_ssl_streams(struct smtp_server_connection
      *conn,\n\t\t\t\t\t    struct istream *input,\n\t\t\t\t\t    struct ostream *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 223
    functionName: smtp_server_connection_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_terminate
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_idle_timeout(struct smtp_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:228,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 225
    functionDepth: 6
    functionLinenumber: 225
    functionLinenumberEnd: 232
    functionName: smtp_server_connection_timeout_stop
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - e_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_timeout_stop(struct smtp_server_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:241,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:243,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 247
    functionName: smtp_server_connection_timeout_start
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - e_debug
    - timeout_add
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_timeout_start(struct smtp_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 249
    functionDepth: 7
    functionLinenumber: 249
    functionLinenumberEnd: 253
    functionName: smtp_server_connection_timeout_reset
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - timeout_reset
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_timeout_reset(struct smtp_server_connection
      *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_timeout_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:261,1
    - Dst: smtp_server_connection_timeout_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:267,1
    - Dst: smtp_server_connection_timeout_stop
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:274,1
    - Dst: smtp_server_connection_timeout_stop
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:278,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:282,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 255
    functionDepth: 7
    functionLinenumber: 255
    functionLinenumberEnd: 284
    functionName: smtp_server_connection_timeout_update
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_timeout_start
    - smtp_server_connection_timeout_stop
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_timeout_update(struct smtp_server_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_update_rawlog
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:293,1
    - Dst: smtp_command_parser_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:295,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:297,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:300,1
    - Dst: smtp_server_connection_send_line
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:307,1
    - Dst: smtp_server_connection_send_line
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:310,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 286
    functionDepth: 9
    functionLinenumber: 286
    functionLinenumberEnd: 316
    functionName: smtp_server_connection_ready
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_send_line
    - o_stream_uncork
    - o_stream_cork
    - smtp_command_parser_init
    - smtp_server_connection_update_rawlog
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_ready(struct smtp_server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:323,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 325
    functionName: smtp_server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_disconnect
    - smtp_server_connection_unref
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_command_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:336,1
    - Dst: smtp_server_command_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:338,1
    - Dst: smtp_server_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:340,1
    - Dst: smtp_server_command_execute
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:341,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:342,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:345,1
    - Dst: smtp_server_command_next_to_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:350,1
    - Dst: smtp_server_connection_timeout_update
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:352,1
    - Dst: smtp_server_command_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:355,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - conn
    - cmd_name
    - cmd_params
    argTypes:
    - struct smtp_server_connection*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 327
    functionDepth: 13
    functionLinenumber: 327
    functionLinenumberEnd: 356
    functionName: smtp_server_connection_handle_command
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_command_unref
    - smtp_server_connection_unref
    - smtp_server_command_new
    - smtp_server_command_execute
    - smtp_server_command_next_to_reply
    - smtp_server_connection_timeout_update
    - smtp_server_connection_ref
    - smtp_server_command_ref
    linkageType: ''
    returnType: bool
    signature: "bool smtp_server_connection_handle_command(struct smtp_server_connection
      *conn,\n\t\t\t\t      const char *cmd_name,\n\t\t\t\t      const char *cmd_params)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:367,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:368,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:369,1
    - Dst: ssl_server_settings_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:370,1
    - Dst: struct smtp_server_connection*::callbacks::conn_tls_sni_callback
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:376,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:378,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:379,1
    - Dst: ssl_server_settings_to_iostream_set
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:383,1
    - Dst: ssl_iostream_server_context_cache_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:387,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:389,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:390,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:393,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:394,1
    - Dst: smtp_protocol_name
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:396,1
    - Dst: ssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:401,1
    - Dst: ssl_iostream_change_context
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:403,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:404,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - name
    - error_r
    - context
    argTypes:
    - char*
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 358
    functionDepth: 4
    functionLinenumber: 358
    functionLinenumberEnd: 406
    functionName: smtp_server_connection_sni_callback
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - struct smtp_server_connection*::callbacks::conn_tls_sni_callback
    - ssl_server_settings_to_iostream_set
    - ssl_server_settings_get
    - ssl_iostream_context_unref
    - ssl_iostream_server_context_cache_get
    - settings_free
    - i_strdup
    - ssl_iostream_change_context
    - smtp_protocol_name
    - event_add_str
    - i_free
    - ssl_iostream_context_set_application_protocols
    linkageType: ''
    returnType: int
    signature: "int smtp_server_connection_sni_callback(const char *name, const char
      **error_r,\n\t\t\t\t    void *context)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:414,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:418,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:419,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:420,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:421,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:426,1
    - Dst: io_stream_autocreate_ssl_server
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:431,1
    - Dst: ssl_iostream_server_context_cache_get
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:434,1
    - Dst: io_stream_create_ssl_server
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:438,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:441,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:444,1
    - Dst: ssl_iostream_set_sni_callback
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:449,1
    - Dst: smtp_server_connection_input_resume
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:451,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:453,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:454,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:455,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:460,1
    - Dst: smtp_server_connection_streams_changed
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:463,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:465,1
    - Dst: smtp_server_connection_ready
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:466,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 408
    functionDepth: 10
    functionLinenumber: 408
    functionLinenumberEnd: 469
    functionName: smtp_server_connection_ssl_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - i_stream_ref
    - smtp_server_connection_input_resume
    - ssl_iostream_context_unref
    - smtp_server_connection_streams_changed
    - i_stream_destroy
    - io_stream_create_ssl_server
    - io_stream_autocreate_ssl_server
    - smtp_server_connection_ready
    - ssl_iostream_server_context_cache_get
    - ssl_iostream_handshake
    - e_error
    - ssl_iostream_get_last_error
    - ssl_iostream_set_sni_callback
    - o_stream_destroy
    - ENUM_NEGATE
    - e_debug
    - o_stream_ref
    - ssl_iostream_is_handshaked
    - smtp_server_connection_input_halt
    linkageType: ''
    returnType: int
    signature: int smtp_server_connection_ssl_init(struct smtp_server_connection *conn)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:489,1
    - Dst: smtp_command_parse_next
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:494,1
    - Dst: smtp_server_command_ready_to_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:501,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:506,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:511,1
    - Dst: smtp_server_connection_handle_command
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:517,1
    - Dst: smtp_server_connection_check_pipeline
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:532,1
    - Dst: smtp_command_parser_pending_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:535,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:536,1
    - Dst: i_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:550,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:551,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:559,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:564,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:572,1
    - Dst: smtp_server_command_new_invalid
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:580,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:581,1
    - Dst: smtp_server_command_new_invalid
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:586,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:587,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:596,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:600,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:603,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:610,1
    - Dst: smtp_command_parser_pending_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:615,1
    - Dst: smtp_server_command_ready_to_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:618,1
    - Dst: smtp_command_parser_pending_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:622,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:623,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 84
    argCount: 2
    argNames:
    - conn
    - pipeline_blocked
    argTypes:
    - struct smtp_server_connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 471
    functionDepth: 14
    functionLinenumber: 471
    functionLinenumberEnd: 627
    functionName: smtp_server_connection_handle_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_command_parser_pending_data
    - i_stream_get_disconnect_reason
    - smtp_command_parse_next
    - smtp_server_command_new_invalid
    - e_debug
    - smtp_server_command_fail
    - i_unreached
    - smtp_server_command_ready_to_reply
    - smtp_server_connection_close
    - smtp_server_connection_check_pipeline
    - smtp_server_connection_input_halt
    - smtp_server_connection_timeout_reset
    - smtp_server_connection_handle_command
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_handle_input(struct smtp_server_connection
      *conn,\n\t\t\t\t    bool pipeline_blocked)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:635,1
    - Dst: smtp_server_connection_timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:640,1
    - Dst: smtp_server_connection_ssl_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:643,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:644,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:649,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:654,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:656,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:658,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:665,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:666,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:670,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:672,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:673,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:674,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:677,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:679,1
    - Dst: smtp_server_connection_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:683,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:690,1
    - Dst: smtp_server_connection_ready
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:691,1
    - Dst: smtp_server_connection_check_pipeline
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:694,1
    - Dst: smtp_server_connection_pending_command_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:701,1
    - Dst: smtp_server_connection_input_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:702,1
    - Dst: smtp_server_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:708,1
    - Dst: struct smtp_server_connection*::callbacks::conn_cmd_input_pre
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:712,1
    - Dst: smtp_server_connection_handle_input
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:713,1
    - Dst: struct smtp_server_connection*::callbacks::conn_cmd_input_post
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:716,1
    - Dst: smtp_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:722,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:723,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 52
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 629
    functionDepth: 15
    functionLinenumber: 629
    functionLinenumberEnd: 724
    functionName: smtp_server_connection_input
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_unref
    - t_strdup_printf
    - smtp_server_connection_handle_output_error
    - smtp_server_connection_check_pipeline
    - struct smtp_server_connection*::callbacks::conn_cmd_input_pre
    - smtp_server_connection_ref
    - smtp_server_connection_input_lock
    - i_stream_get_error
    - struct smtp_server_connection*::callbacks::conn_cmd_input_post
    - i_stream_get_name
    - smtp_server_connection_ready
    - e_error
    - i_stream_read
    - i_assert
    - smtp_server_connection_pending_command_data
    - smtp_server_connection_handle_input
    - smtp_server_connection_close
    - ssl_iostream_is_handshaked
    - smtp_server_connection_timeout_reset
    - smtp_server_connection_input_halt
    - smtp_server_connection_ssl_init
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_input(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_command_parser_pending_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:731,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 726
    functionDepth: 3
    functionLinenumber: 726
    functionLinenumberEnd: 732
    functionName: smtp_server_connection_pending_command_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 3
    functionsReached:
    - smtp_command_parser_pending_data
    linkageType: ''
    returnType: bool
    signature: "bool smtp_server_connection_pending_command_data(\n\tstruct smtp_server_connection
      *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:741,1
    - Dst: o_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 738
    functionDepth: 2
    functionLinenumber: 738
    functionLinenumberEnd: 743
    functionName: smtp_server_connection_handle_output_error
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - smtp_server_connection_close
    - o_stream_get_disconnect_reason
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_handle_output_error(\n\tstruct smtp_server_connection
      *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:753,1
    - Dst: smtp_server_command_send_replies
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 745
    functionDepth: 8
    functionLinenumber: 745
    functionLinenumberEnd: 758
    functionName: smtp_server_connection_next_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_command_send_replies
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_connection_next_reply(struct smtp_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:764,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 765
    functionName: smtp_server_connection_cork
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_cork
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_cork(struct smtp_server_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:771,1
    - Dst: smtp_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:772,1
    - Dst: smtp_server_connection_trigger_output
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:775,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 767
    functionDepth: 3
    functionLinenumber: 767
    functionLinenumberEnd: 777
    functionName: smtp_server_connection_uncork
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_handle_output_error
    - o_stream_uncork_flush
    - smtp_server_connection_trigger_output
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_uncork(struct smtp_server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_next_reply
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:784,1
    - Dst: smtp_server_connection_timeout_update
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:786,1
    - Dst: smtp_server_connection_input_resume
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 779
    functionDepth: 9
    functionLinenumber: 779
    functionLinenumberEnd: 790
    functionName: smtp_server_connection_send_replies
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_next_reply
    - smtp_server_connection_input_resume
    - smtp_server_connection_timeout_update
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_send_replies(struct smtp_server_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:797,1
    - Dst: smtp_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 792
    functionDepth: 3
    functionLinenumber: 792
    functionLinenumberEnd: 803
    functionName: smtp_server_connection_flush
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - o_stream_flush
    - smtp_server_connection_handle_output_error
    linkageType: ''
    returnType: int
    signature: int smtp_server_connection_flush(struct smtp_server_connection *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:809,1
    - Dst: smtp_server_connection_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:811,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:812,1
    - Dst: smtp_server_connection_flush
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:813,1
    - Dst: smtp_server_connection_timeout_reset
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:815,1
    - Dst: smtp_server_connection_send_replies
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:816,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:819,1
    - Dst: smtp_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:821,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:824,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 805
    functionDepth: 10
    functionLinenumber: 805
    functionLinenumberEnd: 826
    functionName: smtp_server_connection_output
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_unref
    - e_debug
    - o_stream_cork
    - smtp_server_connection_flush
    - smtp_server_connection_handle_output_error
    - smtp_server_connection_timeout_reset
    - smtp_server_connection_send_replies
    - smtp_server_connection_ref
    - o_stream_uncork_flush
    linkageType: ''
    returnType: int
    signature: int smtp_server_connection_output(struct smtp_server_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:831,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 828
    functionDepth: 2
    functionLinenumber: 828
    functionLinenumberEnd: 834
    functionName: smtp_server_connection_trigger_output
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 3
    functionsReached:
    - e_debug
    - o_stream_set_flush_pending
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_trigger_output(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 852
    functionDepth: 2
    functionLinenumber: 852
    functionLinenumberEnd: 856
    functionName: smtp_server_connection_list_init
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: struct connection_list
    signature: struct connection_list *smtp_server_connection_list_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:865,1
    - Dst: smtp_server_event_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:866,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:868,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:869,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:869,1
    - Dst: smtp_protocol_name
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:870,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:871,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - server
    - set
    argTypes:
    - struct smtp_server*
    - struct smtp_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 858
    functionDepth: 11
    functionLinenumber: 858
    functionLinenumberEnd: 874
    functionName: smtp_server_connection_event_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_create
    - event_set_append_log_prefix
    - t_strdup_printf
    - smtp_protocol_name
    - smtp_server_event_init
    linkageType: ''
    returnType: struct event
    signature: "struct event *\nsmtp_server_connection_event_create(struct smtp_server
      *server,\n\t\t\t\t    const struct smtp_server_settings *set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:879,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 876
    functionDepth: 4
    functionLinenumber: 876
    functionLinenumberEnd: 881
    functionName: smtp_server_connection_update_event
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_update_event(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:889,1
    - Dst: guid_128_generate
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:890,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:891,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:894,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:894,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:894,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:895,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:895,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:897,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 883
    functionDepth: 6
    functionLinenumber: 883
    functionLinenumberEnd: 898
    functionName: smtp_server_connection_init_session
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_len
    - guid_128_generate
    - base64_encode
    - i_strdup
    - str_truncate
    - i_assert
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_init_session(struct smtp_server_connection
      *conn)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:910,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:911,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:923,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:927,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:931,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:935,1
    - Dst: smtp_command_limits_merge
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:954,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:977,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:981,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:985,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1015,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1016,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1018,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1019,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1021,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1026,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1027,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1029,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1030,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1032,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1035,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1037,1
    - Dst: net_set_tcp_nodelay
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1038,1
    - Dst: net_set_send_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1042,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1044,1
    - Dst: net_set_recv_buffer_size
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1049,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1051,1
    - Dst: smtp_server_connection_init_session
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1056,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 97
    argCount: 6
    argNames:
    - server
    - set
    - fd_in
    - fd_out
    - callbacks
    - context
    argTypes:
    - struct smtp_server*
    - struct smtp_server_settings*
    - int
    - int
    - struct smtp_server_callbacks*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 901
    functionDepth: 7
    functionLinenumber: 901
    functionLinenumberEnd: 1059
    functionName: smtp_server_connection_alloc
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - pool_ref
    - p_array_init
    - p_strarray_dup
    - array_push_back
    - net_set_tcp_nodelay
    - net_set_send_buffer_size
    - str_array_length
    - net_set_recv_buffer_size
    - smtp_server_connection_init_session
    - e_error
    - array_append_zero
    - net_set_nonblock
    - smtp_command_limits_merge
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_alloc(struct smtp_server *server,\n\t\t\t
      \    const struct smtp_server_settings *set,\n\t\t\t     int fd_in, int fd_out,\n\t\t\t
      \    const struct smtp_server_callbacks *callbacks,\n\t\t\t     void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_halt
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1067,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1069,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1070
    functionName: smtp_server_connection_created
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_server_connection_halt
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_created(struct smtp_server_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_alloc
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1083,1
    - Dst: smtp_server_connection_event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1085,1
    - Dst: connection_init_server_ip
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1087,1
    - Dst: smtp_server_connection_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1093,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1094,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1098,1
    - Dst: smtp_server_connection_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 11
    argNames:
    - server
    - fd_in
    - fd_out
    - local_ip
    - local_port
    - remote_ip
    - remote_port
    - ssl_start
    - set
    - callbacks
    - context
    argTypes:
    - struct smtp_server*
    - int
    - int
    - struct ip_addr*
    - in_port_t
    - struct ip_addr*
    - in_port_t
    - bool
    - struct smtp_server_settings*
    - struct smtp_server_callbacks*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1072
    functionDepth: 12
    functionLinenumber: 1072
    functionLinenumberEnd: 1103
    functionName: smtp_server_connection_create
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 4
    functionsReached:
    - event_unref
    - ENUM_NEGATE
    - smtp_server_connection_event_create
    - smtp_server_connection_created
    - smtp_server_connection_update_event
    - connection_init_server_ip
    - smtp_server_connection_alloc
    linkageType: ''
    returnType: struct smtp_server_connection
    signature: "struct smtp_server_connection *\nsmtp_server_connection_create(\n\tstruct
      smtp_server *server, int fd_in, int fd_out,\n\tconst struct ip_addr *local_ip,
      in_port_t local_port,\n\tconst struct ip_addr *remote_ip, in_port_t remote_port,\n\tbool
      ssl_start, const struct smtp_server_settings *set,\n\tconst struct smtp_server_callbacks
      *callbacks, void *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1118,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1120,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1121,1
    - Dst: smtp_server_connection_alloc
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1123,1
    - Dst: smtp_server_connection_event_create
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1132,1
    - Dst: connection_init_from_streams
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1134,1
    - Dst: smtp_server_connection_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1138,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1139,1
    - Dst: smtp_server_connection_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1141,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 10
    argNames:
    - server
    - input
    - output
    - local_ip
    - local_port
    - remote_ip
    - remote_port
    - set
    - callbacks
    - context
    argTypes:
    - struct smtp_server*
    - struct istream*
    - struct ostream*
    - struct ip_addr*
    - in_port_t
    - struct ip_addr*
    - in_port_t
    - struct smtp_server_settings*
    - struct smtp_server_callbacks*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1105
    functionDepth: 12
    functionLinenumber: 1105
    functionLinenumberEnd: 1144
    functionName: smtp_server_connection_create_from_streams
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - connection_init_from_streams
    - event_unref
    - i_stream_get_fd
    - smtp_server_connection_event_create
    - o_stream_get_fd
    - smtp_server_connection_created
    - smtp_server_connection_update_event
    - i_assert
    - smtp_server_connection_alloc
    linkageType: ''
    returnType: struct smtp_server_connection
    signature: "struct smtp_server_connection *\nsmtp_server_connection_create_from_streams(\n\tstruct
      smtp_server *server,\n\tstruct istream *input, struct ostream *output,\n\tconst
      struct ip_addr *local_ip, in_port_t local_port,\n\tconst struct ip_addr *remote_ip,
      in_port_t remote_port,\n\tconst struct smtp_server_settings *set,\n\tconst struct
      smtp_server_callbacks *callbacks, void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1146
    functionDepth: 0
    functionLinenumber: 1146
    functionLinenumberEnd: 1149
    functionName: smtp_server_connection_ref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_ref(struct smtp_server_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1158,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1159,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1161,1
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1151
    functionDepth: 11
    functionLinenumber: 1151
    functionLinenumberEnd: 1168
    functionName: smtp_server_connection_get_disconnect_reason
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - io_stream_get_disconnect_reason
    - ssl_iostream_get_last_error
    - ssl_iostream_is_handshaked
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\nsmtp_server_connection_get_disconnect_reason(\n\tstruct smtp_server_connection
      *conn)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_get_disconnect_reason
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1181,1
    - Dst: t_str_oneline
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1183,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1188,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1192,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1196,1
    - Dst: smtp_server_connection_update_stats
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1199,1
    - Dst: smtp_server_connection_reset_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1202,1
    - Dst: smtp_server_command_abort
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1208,1
    - Dst: smtp_server_connection_timeout_stop
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1212,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1214,1
    - Dst: smtp_command_parser_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1216,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1217,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1218,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1223,1
    - Dst: struct smtp_server_connection*::callbacks::conn_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1224,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1228,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1231,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1232,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1233,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct smtp_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1170
    functionDepth: 12
    functionLinenumber: 1170
    functionLinenumberEnd: 1235
    functionName: smtp_server_connection_disconnect
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - t_str_oneline
    - o_stream_uncork
    - e_debug
    - smtp_server_connection_reset_state
    - io_remove
    - smtp_server_connection_timeout_stop
    - t_strdup_printf
    - settings_free
    - ssl_iostream_destroy
    - o_stream_unref
    - struct smtp_server_connection*::callbacks::conn_disconnect
    - smtp_server_command_abort
    - i_stream_unref
    - smtp_server_connection_update_stats
    - smtp_command_parser_deinit
    - smtp_server_connection_get_disconnect_reason
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_disconnect(struct smtp_server_connection
      *conn,\n\t\t\t\t  const char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1243,1
    - Dst: smtp_server_connection_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1247,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1249,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1251,1
    - Dst: struct smtp_server_connection*::callbacks::conn_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1254,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1256,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1257,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1258,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1259,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1260,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1261,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1262,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct smtp_server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1237
    functionDepth: 13
    functionLinenumber: 1237
    functionLinenumberEnd: 1265
    functionName: smtp_server_connection_unref
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 7
    functionsReached:
    - event_unref
    - i_free
    - e_debug
    - pool_unref
    - smtp_server_connection_disconnect
    - struct smtp_server_connection*::callbacks::conn_free
    - i_assert
    - connection_deinit
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_connection_unref(struct smtp_server_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1272,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1277,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1278,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1280,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1280,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1282,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1283,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1283,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - conn
    - fmt
    argTypes:
    - struct smtp_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1267
    functionDepth: 9
    functionLinenumber: 1267
    functionLinenumberEnd: 1284
    functionName: smtp_server_connection_send_line
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_data
    - va_start
    - e_debug
    - str_len
    - str_vprintfa
    - o_stream_nsend
    - str_append
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_send_line(struct smtp_server_connection
      *conn,\n\t\t\t\t      const char *fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1295,1
    - Dst: smtp_reply_parse_enhanced_code
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1299,1
    - Dst: SMTP_REPLY_ENH_CODE
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1301,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1306,1
    - Dst: smtp_reply_log
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1306,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1308,1
    - Dst: smtp_reply_write
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1309,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1310,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1310,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - conn
    - status
    - enh_code
    - text_lines
    argTypes:
    - struct smtp_server_connection*
    - unsigned int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1288
    functionDepth: 13
    functionLinenumber: 1288
    functionLinenumberEnd: 1311
    functionName: smtp_server_connection_reply_lines
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_str_new
    - str_data
    - str_len
    - e_debug
    - SMTP_REPLY_ENH_CODE
    - o_stream_nsend
    - smtp_reply_parse_enhanced_code
    - smtp_reply_write
    - smtp_reply_log
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_reply_lines(struct smtp_server_connection
      *conn,\n\t\t\t\t        unsigned int status,\n\t\t\t\t\tconst char *enh_code,\n\t\t\t\t\tconst
      char *const *text_lines)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1320,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1324,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1325,1
    - Dst: str_vprintfa
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1326,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1328,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1328,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1330,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1331,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1331,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - status
    - fmt
    argTypes:
    - struct smtp_server_connection*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1314
    functionDepth: 9
    functionLinenumber: 1314
    functionLinenumberEnd: 1332
    functionName: smtp_server_connection_reply_immediate
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_data
    - va_start
    - e_debug
    - str_len
    - str_vprintfa
    - o_stream_nsend
    - str_append
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_reply_immediate(\n\tstruct smtp_server_connection
      *conn,\n\tunsigned int status, const char *fmt, ...)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1347,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1349,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1350,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1351,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1353,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1354,1
    - Dst: i_stream_add_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1362,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1363,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 6
    argNames:
    - conn
    - username
    - helo
    - pdata
    - pdata_len
    - ssl_secured
    argTypes:
    - struct smtp_server_connection*
    - char*
    - char*
    - unsigned char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1342
    functionDepth: 6
    functionLinenumber: 1342
    functionLinenumberEnd: 1365
    functionName: smtp_server_connection_login
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - i_panic
    - ENUM_NEGATE
    - i_strdup
    - i_stream_add_data
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_login(struct smtp_server_connection *conn,\n\t\t\t\t
      \ const char *username, const char *helo,\n\t\t\t\t  const unsigned char *pdata,\n\t\t\t\t
      \ unsigned int pdata_len, bool ssl_secured)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1369,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1372,1
    - Dst: smtp_server_connection_ready
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1375,1
    - Dst: smtp_server_connection_input_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1367
    functionDepth: 10
    functionLinenumber: 1367
    functionLinenumberEnd: 1378
    functionName: smtp_server_connection_start_pending
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - e_debug
    - smtp_server_connection_ready
    - i_assert
    - smtp_server_connection_input_unlock
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_start_pending(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_start_pending
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1382,1
    - Dst: smtp_server_connection_resume
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1380
    functionDepth: 11
    functionLinenumber: 1380
    functionLinenumberEnd: 1384
    functionName: smtp_server_connection_start
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 5
    functionsReached:
    - smtp_server_connection_resume
    - smtp_server_connection_start_pending
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_start(struct smtp_server_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1397,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1401,1
    - Dst: smtp_server_connection_reply_lines
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1402,1
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1404,1
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - _conn
    - status
    - enh_code
    - reason
    argTypes:
    - struct smtp_server_connection**
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1386
    functionDepth: 14
    functionLinenumber: 1386
    functionLinenumberEnd: 1409
    functionName: smtp_server_connection_abort
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - t_strsplit_spaces
    - smtp_server_connection_reply_lines
    - i_assert
    - smtp_server_connection_terminate
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_abort(struct smtp_server_connection **_conn,\n\t\t\t\t
      \ unsigned int status, const char *enh_code,\n\t\t\t\t  const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_timeout_stop
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1414,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1417,1
    - Dst: smtp_server_connection_input_lock
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1420,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1411
    functionDepth: 7
    functionLinenumber: 1411
    functionLinenumberEnd: 1421
    functionName: smtp_server_connection_halt
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - ssl_iostream_is_handshaked
    - smtp_server_connection_timeout_stop
    - smtp_server_connection_input_lock
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_halt(struct smtp_server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_input_unlock
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1425,1
    - Dst: smtp_server_connection_timeout_update
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1423
    functionDepth: 8
    functionLinenumber: 1423
    functionLinenumberEnd: 1428
    functionName: smtp_server_connection_resume
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - smtp_server_connection_input_unlock
    - smtp_server_connection_timeout_update
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_resume(struct smtp_server_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_disconnect
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1441,1
    - Dst: smtp_server_connection_unref
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - _conn
    - reason
    argTypes:
    - struct smtp_server_connection**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1430
    functionDepth: 14
    functionLinenumber: 1430
    functionLinenumberEnd: 1443
    functionName: smtp_server_connection_close
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 7
    functionsReached:
    - smtp_server_connection_disconnect
    - smtp_server_connection_unref
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_close(struct smtp_server_connection **_conn,\n\t\t\t\t
      \ const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_terminate_full
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _conn
    - enh_code
    - reason
    argTypes:
    - struct smtp_server_connection**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1445
    functionDepth: 1
    functionLinenumber: 1445
    functionLinenumberEnd: 1449
    functionName: smtp_server_connection_terminate
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 5
    functionsReached:
    - smtp_server_connection_terminate_full
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_terminate(struct smtp_server_connection
      **_conn,\n\t\t\t\t      const char *enh_code, const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1463,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1467,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1468,1
    - Dst: smtp_server_connection_reply_lines
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1471,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - _conn
    - enh_code
    - reply_reason
    - log_reason
    argTypes:
    - struct smtp_server_connection**
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1475
      start: 1451
    functionDepth: 15
    functionLinenumber: 1451
    functionLinenumberEnd: 1475
    functionName: smtp_server_connection_terminate_full
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - smtp_server_connection_close
    - t_strsplit_spaces
    - smtp_server_connection_reply_lines
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_terminate_full(\n\tstruct smtp_server_connection
      **_conn, const char *enh_code,\n\tconst char *reply_reason, const char *log_reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1478
    functionDepth: 0
    functionLinenumber: 1478
    functionLinenumberEnd: 1482
    functionName: smtp_server_connection_get_helo_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct smtp_server_helo_data
    signature: 'struct smtp_server_helo_data *

      smtp_server_connection_get_helo_data(struct smtp_server_connection *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - args_r
    argTypes:
    - struct smtp_server_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1484
    functionDepth: 0
    functionLinenumber: 1484
    functionLinenumberEnd: 1491
    functionName: smtp_server_connection_get_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum smtp_server_state
    signature: "enum smtp_server_state smtp_server_connection_get_state(struct smtp_server_connection
      *conn,\n\t\t\t\t const char **args_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1503,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1504,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1505,1
    - Dst: struct smtp_server_connection*::callbacks::conn_state_changed
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1511,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - conn
    - state
    - args
    argTypes:
    - struct smtp_server_connection*
    - enum smtp_server_state
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1493
    functionDepth: 2
    functionLinenumber: 1493
    functionLinenumberEnd: 1512
    functionName: smtp_server_connection_set_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 10
    functionsReached:
    - i_strdup
    - struct smtp_server_connection*::callbacks::conn_state_changed
    - i_free
    - null_strcmp
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_set_state(struct smtp_server_connection
      *conn,\n\t\t\t\t      enum smtp_server_state state,\n\t\t\t\t      const char
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_security_string
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1514
    functionDepth: 1
    functionLinenumber: 1514
    functionLinenumberEnd: 1520
    functionName: smtp_server_connection_get_security_string
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - ssl_iostream_get_security_string
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_server_connection_get_security_string(struct smtp_server_connection *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1524,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1526,1
    - Dst: smtp_server_transaction_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1529,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1536,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1537,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1541,1
    - Dst: smtp_server_connection_set_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1522
    functionDepth: 16
    functionLinenumber: 1522
    functionLinenumberEnd: 1543
    functionName: smtp_server_connection_reset_state
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 5
    functionsReached:
    - i_zero
    - e_debug
    - smtp_server_connection_set_state
    - smtp_server_transaction_free
    - i_free
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_reset_state(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1547,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1549,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1550,1
    - Dst: smtp_server_connection_reset_state
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1545
    functionDepth: 17
    functionLinenumber: 1545
    functionLinenumberEnd: 1552
    functionName: smtp_server_connection_clear
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - e_debug
    - i_free
    - smtp_server_connection_reset_state
    - i_zero
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_clear(struct smtp_server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - capabilities
    argTypes:
    - struct smtp_server_connection*
    - enum smtp_capability
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1554
    functionDepth: 0
    functionLinenumber: 1554
    functionLinenumberEnd: 1558
    functionName: smtp_server_connection_set_capabilities
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_set_capabilities(\n\tstruct smtp_server_connection
      *conn, enum smtp_capability capabilities)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - greeting
    argTypes:
    - struct smtp_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1560
    functionDepth: 2
    functionLinenumber: 1560
    functionLinenumberEnd: 1564
    functionName: smtp_server_connection_set_greeting
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_set_greeting(struct smtp_server_connection
      *conn,\n\t\t\t\t\t const char *greeting)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1576,1
    - Dst: smtp_ehlo_keyword_is_valid
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1576,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1577,1
    - Dst: smtp_ehlo_params_are_valid
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1577,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1580,1
    - Dst: smtp_capability_find_by_name
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1580,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1583,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1584,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1587,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1588,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1589,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1592,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1595,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1601,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1602,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1604,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1606,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - cap
    argTypes:
    - struct smtp_server_connection*
    - struct smtp_capability_extra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1566
    functionDepth: 3
    functionLinenumber: 1566
    functionLinenumberEnd: 1607
    functionName: smtp_server_connection_add_extra_capability
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_assert
    - p_strdup
    - p_array_init
    - p_strarray_dup
    - strcasecmp
    - array_foreach
    - array_count
    - array_insert
    - array_foreach_idx
    - smtp_ehlo_params_are_valid
    - array_is_created
    - smtp_ehlo_keyword_is_valid
    - smtp_capability_find_by_name
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_add_extra_capability(\n\tstruct smtp_server_connection
      *conn,\n\tconst struct smtp_capability_extra *cap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1609
    functionDepth: 0
    functionLinenumber: 1609
    functionLinenumberEnd: 1612
    functionName: smtp_server_connection_get_context
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *smtp_server_connection_get_context(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1614
    functionDepth: 0
    functionLinenumber: 1614
    functionLinenumberEnd: 1617
    functionName: smtp_server_connection_is_ssl_secured
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_connection_is_ssl_secured(struct smtp_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct smtp_server_connection*::callbacks::conn_is_trusted
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1623,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1619
    functionDepth: 0
    functionLinenumber: 1619
    functionLinenumberEnd: 1624
    functionName: smtp_server_connection_is_trusted
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 4
    functionsReached:
    - struct smtp_server_connection*::callbacks::conn_is_trusted
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_connection_is_trusted(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1626
    functionDepth: 0
    functionLinenumber: 1626
    functionLinenumberEnd: 1629
    functionName: smtp_server_connection_is_started
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smtp_server_connection_is_started(struct smtp_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1631
    functionDepth: 0
    functionLinenumber: 1631
    functionLinenumberEnd: 1635
    functionName: smtp_server_connection_get_protocol
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum smtp_protocol
    signature: enum smtp_protocol smtp_server_connection_get_protocol(struct smtp_server_connection
      *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1640,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1645,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1647,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1650,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1653,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1656,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1658,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1659,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1637
    functionDepth: 4
    functionLinenumber: 1637
    functionLinenumberEnd: 1660
    functionName: smtp_server_connection_get_protocol_name
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - i_unreached
    - str_append
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_server_connection_get_protocol_name(struct smtp_server_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1662
    functionDepth: 0
    functionLinenumber: 1662
    functionLinenumberEnd: 1666
    functionName: smtp_server_connection_get_transaction
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct smtp_server_transaction
    signature: 'struct smtp_server_transaction *

      smtp_server_connection_get_transaction(struct smtp_server_connection *conn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1674
      start: 1668
    functionDepth: 0
    functionLinenumber: 1668
    functionLinenumberEnd: 1674
    functionName: smtp_server_connection_get_transaction_id
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_server_connection_get_transaction_id(struct smtp_server_connection *conn)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1679,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - conn
    - proxy_data
    argTypes:
    - struct smtp_server_connection*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1676
    functionDepth: 1
    functionLinenumber: 1676
    functionLinenumberEnd: 1704
    functionName: smtp_server_connection_get_proxy_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 4
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_get_proxy_data(struct smtp_server_connection
      *conn,\n\t\t\t\t\t   struct smtp_proxy_data *proxy_data)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1715,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1716,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1720,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1721,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1725,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1726,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1731,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1732,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1734,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1735,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1738,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1739,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1742,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1743,1
    - Dst: connection_update_properties
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1750,1
    - Dst: smtp_server_connection_update_event
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1751,1
    - Dst: smtp_server_connection_get_proxy_data
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1757,1
    - Dst: struct smtp_server_connection*::callbacks::conn_proxy_data_updated
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1759,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 2
    argNames:
    - conn
    - proxy_data
    argTypes:
    - struct smtp_server_connection*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1706
    functionDepth: 5
    functionLinenumber: 1706
    functionLinenumberEnd: 1762
    functionName: smtp_server_connection_set_proxy_data
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 2
    functionsReached:
    - strcmp
    - struct smtp_server_connection*::callbacks::conn_proxy_data_updated
    - e_debug
    - connection_update_properties
    - i_strdup
    - smtp_server_connection_update_event
    - smtp_server_connection_get_proxy_data
    - i_free
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_set_proxy_data(\n\tstruct smtp_server_connection
      *conn,\n\tconst struct smtp_proxy_data *proxy_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1767,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1769,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1770,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1771,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1773,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1775,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1776,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1779,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - param
    argTypes:
    - struct smtp_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1764
    functionDepth: 2
    functionLinenumber: 1764
    functionLinenumberEnd: 1780
    functionName: smtp_server_connection_register_mail_param
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - p_strdup
    - p_array_init
    - array_push_back
    - array_count
    - array_append_zero
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_register_mail_param(\n\tstruct smtp_server_connection
      *conn, const char *param)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1785,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1787,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1788,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1789,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1791,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1793,1
    - Dst: array_idx_set
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1794,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1797,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - param
    argTypes:
    - struct smtp_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1782
    functionDepth: 2
    functionLinenumber: 1782
    functionLinenumberEnd: 1798
    functionName: smtp_server_connection_register_rcpt_param
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 0
    functionsReached:
    - array_idx_set
    - p_strdup
    - p_array_init
    - array_push_back
    - array_count
    - array_append_zero
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void smtp_server_connection_register_rcpt_param(\n\tstruct smtp_server_connection
      *conn, const char *param)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1803,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1804,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1800
    functionDepth: 8
    functionLinenumber: 1800
    functionLinenumberEnd: 1805
    functionName: smtp_server_connection_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - connection_switch_ioloop
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: void smtp_server_connection_switch_ioloop(struct smtp_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_reason_code
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1814,1
    - Dst: event_reason_begin
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1815,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - name
    argTypes:
    - struct smtp_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1807
    functionDepth: 2
    functionLinenumber: 1807
    functionLinenumberEnd: 1816
    functionName: smtp_server_connection_reason_begin
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 4
    functionsReached:
    - event_reason_begin
    - event_reason_code
    linkageType: ''
    returnType: struct event_reason
    signature: "struct event_reason *\nsmtp_server_connection_reason_begin(struct
      smtp_server_connection *conn,\n\t\t\t\t    const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_get_server_name
      Src: /src/dovecot/src/lib-smtp/smtp-server-connection.c:1823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct smtp_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1818
    functionDepth: 1
    functionLinenumber: 1818
    functionLinenumberEnd: 1824
    functionName: smtp_server_connection_get_server_name
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-server-connection.c
    functionUses: 1
    functionsReached:
    - ssl_iostream_get_server_name
    linkageType: ''
    returnType: char
    signature: 'char *

      smtp_server_connection_get_server_name(struct smtp_server_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:14,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - code
    - enh_code
    argTypes:
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 15
    functionName: smtp_reply_code_is_proxy_redirect
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-dovecot.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool smtp_reply_code_is_proxy_redirect(unsigned int code, const char
      *enh_code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_code_equals
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reply
    argTypes:
    - struct smtp_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 21
    functionName: smtp_reply_is_proxy_redirect
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-dovecot.c
    functionUses: 1
    functionsReached:
    - smtp_reply_code_equals
    linkageType: ''
    returnType: bool
    signature: bool smtp_reply_is_proxy_redirect(const struct smtp_reply *reply)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:31,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:36,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:49,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:50,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:52,1
    - Dst: uri_parse_host_authority
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:55,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:56,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:62,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:64,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 6
    argNames:
    - resp
    - destuser_r
    - host_r
    - ip_r
    - port_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    - struct ip_addr*
    - in_port_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 23
    functionDepth: 11
    functionLinenumber: 23
    functionLinenumberEnd: 73
    functionName: smtp_proxy_redirect_parse
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-dovecot.c
    functionUses: 1
    functionsReached:
    - i_zero
    - strchr
    - uri_parse_host_authority
    - uri_data_decode
    - strlen
    - t_strdup_printf
    - pool_datastack_create
    - uri_char_sanitize
    linkageType: ''
    returnType: int
    signature: "int smtp_proxy_redirect_parse(const char *resp, const char **destuser_r,\n\t\t\t
      \     const char **host_r, struct ip_addr *ip_r,\n\t\t\t      in_port_t *port_r,
      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:79,1
    - Dst: uri_append_userinfo
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:86,1
    - Dst: uri_append_host
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:87,1
    - Dst: uri_append_port
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:89,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - predir
    - default_port
    argTypes:
    - struct smtp_proxy_redirect*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 75
    functionDepth: 8
    functionLinenumber: 75
    functionLinenumberEnd: 92
    functionName: smtp_create_redirect_reply
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-dovecot.c
    functionUses: 0
    functionsReached:
    - uri_append_userinfo
    - t_str_new
    - str_c
    - uri_append_host
    - uri_append_port
    linkageType: ''
    returnType: char
    signature: "char *\nsmtp_create_redirect_reply(const struct smtp_proxy_redirect
      *predir,\n\t\t\t   in_port_t default_port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:98,1
    - Dst: smtp_create_redirect_reply
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cmd
    - default_port
    - predir
    argTypes:
    - struct smtp_server_cmd_ctx*
    - in_port_t
    - struct smtp_proxy_redirect*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 15
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: smtp_server_reply_redirect
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-dovecot.c
    functionUses: 0
    functionsReached:
    - smtp_create_redirect_reply
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: "void smtp_server_reply_redirect(struct smtp_server_cmd_ctx *cmd,\n\t\t\t\tin_port_t
      default_port,\n\t\t\t\tconst struct smtp_proxy_redirect *predir)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_recipient_reply
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:108,1
    - Dst: smtp_create_redirect_reply
      Src: /src/dovecot/src/lib-smtp/smtp-dovecot.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rcpt
    - default_port
    - predir
    argTypes:
    - struct smtp_server_recipient*
    - in_port_t
    - struct smtp_proxy_redirect*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 104
    functionDepth: 13
    functionLinenumber: 104
    functionLinenumberEnd: 112
    functionName: smtp_server_recipient_reply_redirect
    functionSourceFile: /src/dovecot/src/lib-smtp/smtp-dovecot.c
    functionUses: 2
    functionsReached:
    - smtp_create_redirect_reply
    - smtp_server_recipient_reply
    linkageType: ''
    returnType: void
    signature: "void smtp_server_recipient_reply_redirect(\n\tstruct smtp_server_recipient
      *rcpt, in_port_t default_port,\n\tconst struct smtp_proxy_redirect *predir)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/submission-login/client.c:30,1
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/submission-login/client.c:40,1
    - Dst: strcmp
      Src: /src/dovecot/src/submission-login/client.c:42,1
    - Dst: smtp_capability_find_by_name
      Src: /src/dovecot/src/submission-login/client.c:44,1
    - Dst: e_warning
      Src: /src/dovecot/src/submission-login/client.c:47,1
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/submission-login/client.c:58,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - subm_client
    argTypes:
    - struct submission_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 62
    functionName: client_parse_backend_capabilities
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 1
    functionsReached:
    - strcmp
    - array_is_empty
    - settings_boollist_get
    - e_warning
    - HAS_ALL_BITS
    - smtp_capability_find_by_name
    linkageType: ''
    returnType: void
    signature: void client_parse_backend_capabilities(struct submission_client *subm_client
      )
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_init_ssl
      Src: /src/dovecot/src/submission-login/client.c:71,1
    - Dst: client_notify_disconnect
      Src: /src/dovecot/src/submission-login/client.c:72,1
    - Dst: client_destroy
      Src: /src/dovecot/src/submission-login/client.c:75,1
    - Dst: login_refresh_proctitle
      Src: /src/dovecot/src/submission-login/client.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - conn_ctx
    - input
    - output
    argTypes:
    - void*
    - struct istream**
    - struct ostream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 84
    functionName: submission_login_start_tls
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - login_refresh_proctitle
    - client_notify_disconnect
    - client_init_ssl
    linkageType: ''
    returnType: int
    signature: "int submission_login_start_tls(void *conn_ctx,\n\tstruct istream **input,
      struct ostream **output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/client.c:91,1
    - Dst: smtp_server_connection_set_greeting
      Src: /src/dovecot/src/submission-login/client.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - ATTR_UNUSED
    argTypes:
    - struct client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 86
    functionDepth: 3
    functionLinenumber: 86
    functionLinenumberEnd: 95
    functionName: submission_client_reload_config
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - container_of
    - smtp_server_connection_set_greeting
    linkageType: ''
    returnType: int
    signature: "int submission_client_reload_config(struct client *client,\n\t\t\t\tconst
      char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/submission-login/client.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: submission_client_alloc
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct client
    signature: struct client *submission_client_alloc(pool_t pool)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/client.c:110,1
    - Dst: settings_get
      Src: /src/dovecot/src/submission-login/client.c:114,1
    - Dst: e_error
      Src: /src/dovecot/src/submission-login/client.c:116,1
    - Dst: client_parse_backend_capabilities
      Src: /src/dovecot/src/submission-login/client.c:120,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission-login/client.c:122,1
    - Dst: client_is_tls_enabled
      Src: /src/dovecot/src/submission-login/client.c:130,1
    - Dst: strcmp
      Src: /src/dovecot/src/submission-login/client.c:135,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/submission-login/client.c:139,1
    - Dst: smtp_server_connection_create_from_streams
      Src: /src/dovecot/src/submission-login/client.c:142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 105
    functionDepth: 13
    functionLinenumber: 105
    functionLinenumberEnd: 148
    functionName: submission_client_create
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strcmp
    - container_of
    - e_error
    - smtp_server_connection_create_from_streams
    - event_want_debug
    - client_is_tls_enabled
    - client_parse_backend_capabilities
    - settings_get
    linkageType: ''
    returnType: int
    signature: int submission_client_create(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/client.c:153,1
    - Dst: smtp_server_connection_close
      Src: /src/dovecot/src/submission-login/client.c:156,1
    - Dst: settings_free
      Src: /src/dovecot/src/submission-login/client.c:157,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/submission-login/client.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 150
    functionDepth: 15
    functionLinenumber: 150
    functionLinenumberEnd: 159
    functionName: submission_client_destroy
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - smtp_server_connection_close
    - container_of
    - i_free_and_null
    - settings_free
    linkageType: ''
    returnType: void
    signature: void submission_client_destroy(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/client.c:164,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client.c:166,1
    - Dst: smtp_server_connection_is_started
      Src: /src/dovecot/src/submission-login/client.c:168,1
    - Dst: smtp_server_connection_start
      Src: /src/dovecot/src/submission-login/client.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 161
    functionDepth: 12
    functionLinenumber: 161
    functionLinenumberEnd: 170
    functionName: submission_client_notify_auth_ready
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - smtp_server_connection_is_started
    - smtp_server_connection_start
    linkageType: ''
    returnType: void
    signature: void submission_client_notify_auth_ready(struct client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/client.c:175,1
    - Dst: cmd_auth_begin
      Src: /src/dovecot/src/submission-login/client.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 179
    functionName: submission_client_notify_auth_connected
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - cmd_auth_begin
    - container_of
    linkageType: ''
    returnType: void
    signature: void submission_client_notify_auth_connected(struct client *client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/client.c:187,1
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/submission-login/client.c:195,1
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/submission-login/client.c:198,1
    - Dst: smtp_server_connection_terminate
      Src: /src/dovecot/src/submission-login/client.c:202,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - _client
    - reason
    - text
    argTypes:
    - struct client*
    - enum client_disconnect_reason
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 206
    functionName: submission_client_notify_disconnect
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - container_of
    - smtp_server_connection_terminate
    linkageType: ''
    returnType: void
    signature: "void submission_client_notify_disconnect(struct client *_client,\n\t\t\t\t
      \   enum client_disconnect_reason reason,\n\t\t\t\t    const char *text)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/submission-login/client.c:229,1
    - Dst: p_strdup
      Src: /src/dovecot/src/submission-login/client.c:233,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/submission-login/client.c:238,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/submission-login/client.c:246,1
    - Dst: client_forward_decode_base64
      Src: /src/dovecot/src/submission-login/client.c:247,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client.c:248,1
    - Dst: client_addresses_changed
      Src: /src/dovecot/src/submission-login/client.c:255,1
    - Dst: client_notify_disconnect
      Src: /src/dovecot/src/submission-login/client.c:256,1
    - Dst: client_disconnect
      Src: /src/dovecot/src/submission-login/client.c:259,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 3
    argNames:
    - context
    - cmd
    - data
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_proxy_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 208
    functionDepth: 15
    functionLinenumber: 208
    functionLinenumberEnd: 261
    functionName: client_connection_cmd_xclient
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - str_begins_with
    - client_addresses_changed
    - smtp_server_reply
    - strcasecmp
    - client_disconnect
    - client_forward_decode_base64
    - client_notify_disconnect
    linkageType: ''
    returnType: void
    signature: "void client_connection_cmd_xclient(void *context,\n\t\t\t      struct
      smtp_server_cmd_ctx *cmd,\n\t\t\t      struct smtp_proxy_data *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_disconnect
      Src: /src/dovecot/src/submission-login/client.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - context
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 270
    functionName: client_connection_disconnect
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 9
    functionsReached:
    - client_disconnect
    linkageType: ''
    returnType: void
    signature: void client_connection_disconnect(void *context, const char *reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/submission-login/client.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 280
    functionName: client_connection_free
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void client_connection_free(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: client_connection_is_trusted
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool client_connection_is_trusted(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: submission_login_die
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void submission_login_die(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 297
    functionName: submission_login_preinit
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void submission_login_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: master_service_set_die_callback
      Src: /src/dovecot/src/submission-login/client.c:304,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission-login/client.c:307,1
    - Dst: smtp_server_init
      Src: /src/dovecot/src/submission-login/client.c:315,1
    - Dst: smtp_server_command_override
      Src: /src/dovecot/src/submission-login/client.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 299
    functionDepth: 4
    functionLinenumber: 299
    functionLinenumberEnd: 318
    functionName: submission_login_init
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - master_service_set_die_callback
    - smtp_server_init
    - smtp_server_command_override
    - i_zero
    linkageType: ''
    returnType: void
    signature: void submission_login_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clients_destroy_all
      Src: /src/dovecot/src/submission-login/client.c:322,1
    - Dst: smtp_server_deinit
      Src: /src/dovecot/src/submission-login/client.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 320
    functionDepth: 5
    functionLinenumber: 320
    functionLinenumberEnd: 325
    functionName: submission_login_deinit
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 0
    functionsReached:
    - smtp_server_deinit
    - clients_destroy_all
    linkageType: ''
    returnType: void
    signature: void submission_login_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_binary_run
      Src: /src/dovecot/src/submission-login/client.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 382
    functionDepth: 7
    functionLinenumber: 382
    functionLinenumberEnd: 385
    functionName: main
    functionSourceFile: /src/dovecot/src/submission-login/client.c
    functionUses: 24
    functionsReached:
    - login_binary_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: DEF
    functionSourceFile: /src/dovecot/src/submission-login/submission-login-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: settings_boollist_get
      Src: /src/dovecot/src/submission-login/submission-login-settings.c:129,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/submission-login/submission-login-settings.c:133,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-login-settings.c:139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct submission_login_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 121
    functionDepth: 11
    functionLinenumber: 121
    functionLinenumberEnd: 147
    functionName: submission_login_settings_parse_workarounds
    functionSourceFile: /src/dovecot/src/submission-login/submission-login-settings.c
    functionUses: 0
    functionsReached:
    - settings_boollist_get
    - t_strdup_printf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int submission_login_settings_parse_workarounds(\n\tstruct submission_login_settings
      *set, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: submission_login_settings_parse_workarounds
      Src: /src/dovecot/src/submission-login/submission-login-settings.c:161,1
    - Dst: p_strdup
      Src: /src/dovecot/src/submission-login/submission-login-settings.c:166,1
    - Dst: my_hostdomain
      Src: /src/dovecot/src/submission-login/submission-login-settings.c:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 149
    functionDepth: 12
    functionLinenumber: 149
    functionLinenumberEnd: 169
    functionName: submission_login_settings_check
    functionSourceFile: /src/dovecot/src/submission-login/submission-login-settings.c
    functionUses: 0
    functionsReached:
    - submission_login_settings_parse_workarounds
    - my_hostdomain
    - p_strdup
    linkageType: ''
    returnType: bool
    signature: "bool submission_login_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_proxy_finish_destroy_client
      Src: /src/dovecot/src/submission-login/submission-proxy.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - subm_client
    argTypes:
    - struct smtp_server_cmd_ctx*
    - struct submission_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 26
    functionDepth: 5
    functionLinenumber: 26
    functionLinenumberEnd: 32
    functionName: submission_proxy_success_reply_sent
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - client_proxy_finish_destroy_client
    linkageType: ''
    returnType: void
    signature: "void submission_proxy_success_reply_sent(\n\tstruct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\tstruct submission_client *subm_client)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_get_ssl_flags
      Src: /src/dovecot/src/submission-login/submission-proxy.c:39,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:44,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:46,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/submission-login/submission-proxy.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - client
    - output
    argTypes:
    - struct submission_client*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 54
    functionName: proxy_send_starttls
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - login_proxy_failed
    - login_proxy_get_event
    - login_proxy_get_ssl_flags
    linkageType: ''
    returnType: int
    signature: int proxy_send_starttls(struct submission_client *client, struct ostream
      *output)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/submission-login/submission-proxy.c:65,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/submission-login/submission-proxy.c:67,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:68,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission-login/submission-proxy.c:69,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/submission-login/submission-proxy.c:70,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:73,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/submission-login/submission-proxy.c:76,1
    - Dst: str_data
      Src: /src/dovecot/src/submission-login/submission-proxy.c:76,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:76,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct submission_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 77
    functionName: proxy_compose_xclient_forward
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - str_begins_icase
    - str_append_tabescaped
    - t_base64_encode
    linkageType: ''
    returnType: buffer_t
    signature: 'buffer_t *

      proxy_compose_xclient_forward(struct submission_client *client)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/submission-login/submission-proxy.c:85,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:86,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission-login/submission-proxy.c:88,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:89,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission-login/submission-proxy.c:90,1
    - Dst: smtp_xtext_encode
      Src: /src/dovecot/src/submission-login/submission-proxy.c:91,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:93,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:95,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/submission-login/submission-proxy.c:96,1
    - Dst: str_data
      Src: /src/dovecot/src/submission-login/submission-proxy.c:96,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/submission-login/submission-proxy.c:97,1
    - Dst: str_delete
      Src: /src/dovecot/src/submission-login/submission-proxy.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - client
    - output
    - buf
    - field
    - value
    - value_size
    argTypes:
    - struct submission_client*
    - struct ostream*
    - string_t*
    - char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 101
    functionName: proxy_send_xclient_more_data
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - str_data
    - smtp_xtext_encode
    - str_len
    - strlen
    - str_delete
    - o_stream_nsend
    - str_append
    linkageType: ''
    returnType: void
    signature: "void proxy_send_xclient_more_data(struct submission_client *client,\n\t\t\t
      \    struct ostream *output, string_t *buf,\n\t\t\t     const char *field, const
      unsigned char *value,\n\t\t\t     size_t value_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: proxy_send_xclient_more_data
      Src: /src/dovecot/src/submission-login/submission-proxy.c:108,1
    - Dst: strlen
      Src: /src/dovecot/src/submission-login/submission-proxy.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - client
    - output
    - buf
    - field
    - value
    argTypes:
    - struct submission_client*
    - struct ostream*
    - string_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 103
    functionDepth: 4
    functionLinenumber: 103
    functionLinenumberEnd: 111
    functionName: proxy_send_xclient_more
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - strlen
    - proxy_send_xclient_more_data
    linkageType: ''
    returnType: void
    signature: "void proxy_send_xclient_more(struct submission_client *client,\n\t\t\tstruct
      ostream *output, string_t *buf,\n\t\t\tconst char *field, const char *value)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_get_proxy_data
      Src: /src/dovecot/src/submission-login/submission-proxy.c:124,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:125,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission-login/submission-proxy.c:129,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:130,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:131,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:133,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:136,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:140,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:156,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:159,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:161,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:164,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:167,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:171,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:172,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:174,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:176,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:177,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:179,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:181,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/submission-login/submission-proxy.c:182,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/submission-login/submission-proxy.c:184,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:185,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:187,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:188,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:190,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:192,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/submission-login/submission-proxy.c:193,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/submission-login/submission-proxy.c:195,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:196,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:198,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:199,1
    - Dst: client_get_session_id
      Src: /src/dovecot/src/submission-login/submission-proxy.c:200,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:202,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:203,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:208,1
    - Dst: proxy_send_xclient_more
      Src: /src/dovecot/src/submission-login/submission-proxy.c:209,1
    - Dst: str_array_icase_find
      Src: /src/dovecot/src/submission-login/submission-proxy.c:212,1
    - Dst: proxy_compose_xclient_forward
      Src: /src/dovecot/src/submission-login/submission-proxy.c:213,1
    - Dst: proxy_send_xclient_more_data
      Src: /src/dovecot/src/submission-login/submission-proxy.c:216,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:221,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/submission-login/submission-proxy.c:222,1
    - Dst: str_data
      Src: /src/dovecot/src/submission-login/submission-proxy.c:222,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:222,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 79
    argCount: 2
    argNames:
    - client
    - output
    argTypes:
    - struct submission_client*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 113
    functionDepth: 11
    functionLinenumber: 113
    functionLinenumberEnd: 226
    functionName: proxy_send_xclient
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - t_strdup_printf
    - client_get_session_id
    - str_array_icase_find
    - net_ip2addr
    - o_stream_nsend
    - smtp_server_connection_get_proxy_data
    - proxy_compose_xclient_forward
    - str_append
    - i_assert
    - t_strconcat
    - proxy_send_xclient_more
    - proxy_send_xclient_more_data
    linkageType: ''
    returnType: int
    signature: int proxy_send_xclient(struct submission_client *client, struct ostream
      *output)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:240,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:241,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission-login/submission-proxy.c:247,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:252,1
    - Dst: i_zero
      Src: /src/dovecot/src/submission-login/submission-proxy.c:253,1
    - Dst: dsasl_client_new
      Src: /src/dovecot/src/submission-login/submission-proxy.c:260,1
    - Dst: dsasl_client_mech_get_name
      Src: /src/dovecot/src/submission-login/submission-proxy.c:261,1
    - Dst: str_printfa
      Src: /src/dovecot/src/submission-login/submission-proxy.c:263,1
    - Dst: dsasl_client_output
      Src: /src/dovecot/src/submission-login/submission-proxy.c:264,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:267,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:270,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:271,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission-login/submission-proxy.c:276,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/submission-login/submission-proxy.c:277,1
    - Dst: base64_encode
      Src: /src/dovecot/src/submission-login/submission-proxy.c:278,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:293,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:294,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:295,1
    - Dst: strlen
      Src: /src/dovecot/src/submission-login/submission-proxy.c:296,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:296,1
    - Dst: i_strdup
      Src: /src/dovecot/src/submission-login/submission-proxy.c:298,1
    - Dst: str_c
      Src: /src/dovecot/src/submission-login/submission-proxy.c:298,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission-login/submission-proxy.c:300,1
    - Dst: str_append_str
      Src: /src/dovecot/src/submission-login/submission-proxy.c:301,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:304,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/submission-login/submission-proxy.c:305,1
    - Dst: str_data
      Src: /src/dovecot/src/submission-login/submission-proxy.c:305,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:305,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 2
    argNames:
    - client
    - output
    argTypes:
    - struct submission_client*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 228
    functionDepth: 11
    functionLinenumber: 228
    functionLinenumberEnd: 309
    functionName: proxy_send_login
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 1
    functionsReached:
    - str_c
    - str_printfa
    - str_len
    - strlen
    - t_strdup_printf
    - i_strdup
    - login_proxy_get_event
    - MAX_BASE64_ENCODED_SIZE
    - t_str_new
    - str_append_c
    - o_stream_nsend
    - i_zero
    - str_data
    - base64_encode
    - i_assert
    - login_proxy_failed
    - dsasl_client_mech_get_name
    - str_append_str
    - dsasl_client_new
    - str_append
    - dsasl_client_output
    linkageType: ''
    returnType: int
    signature: int proxy_send_login(struct submission_client *client, struct ostream
      *output)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: proxy_send_starttls
      Src: /src/dovecot/src/submission-login/submission-proxy.c:320,1
    - Dst: proxy_send_xclient
      Src: /src/dovecot/src/submission-login/submission-proxy.c:327,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/submission-login/submission-proxy.c:332,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/submission-login/submission-proxy.c:333,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:333,1
    - Dst: i_unreached
      Src: /src/dovecot/src/submission-login/submission-proxy.c:342,1
    - Dst: smtp_server_connection_input_lock
      Src: /src/dovecot/src/submission-login/submission-proxy.c:346,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission-login/submission-proxy.c:348,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/submission-proxy.c:353,1
    - Dst: proxy_send_login
      Src: /src/dovecot/src/submission-login/submission-proxy.c:357,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - client
    - output
    argTypes:
    - struct submission_client*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 311
    functionDepth: 15
    functionLinenumber: 311
    functionLinenumberEnd: 358
    functionName: proxy_handle_ehlo_reply
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - proxy_send_login
    - smtp_server_command_add_hook
    - i_unreached
    - i_free_and_null
    - t_strdup_printf
    - smtp_server_reply
    - proxy_send_xclient
    - proxy_send_starttls
    - o_stream_nsend_str
    - smtp_server_connection_input_lock
    linkageType: ''
    returnType: int
    signature: "int proxy_handle_ehlo_reply(struct submission_client *client,\n\t\t\tstruct
      ostream *output)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/submission-proxy.c:366,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:370,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission-login/submission-proxy.c:372,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:373,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:374,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/submission-login/submission-proxy.c:381,1
    - Dst: strlen
      Src: /src/dovecot/src/submission-login/submission-proxy.c:382,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/submission-login/submission-proxy.c:383,1
    - Dst: i_free
      Src: /src/dovecot/src/submission-login/submission-proxy.c:384,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:387,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission-login/submission-proxy.c:389,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:390,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:391,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission-login/submission-proxy.c:396,1
    - Dst: base64_decode
      Src: /src/dovecot/src/submission-login/submission-proxy.c:397,1
    - Dst: strlen
      Src: /src/dovecot/src/submission-login/submission-proxy.c:397,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:398,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:399,1
    - Dst: login_proxy_sasl_step
      Src: /src/dovecot/src/submission-login/submission-proxy.c:405,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:407,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/submission-login/submission-proxy.c:408,1
    - Dst: str_data
      Src: /src/dovecot/src/submission-login/submission-proxy.c:408,1
    - Dst: str_len
      Src: /src/dovecot/src/submission-login/submission-proxy.c:408,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - client
    - output
    - line
    - last_line
    argTypes:
    - struct client*
    - struct ostream*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 360
    functionDepth: 11
    functionLinenumber: 360
    functionLinenumberEnd: 410
    functionName: submission_proxy_continue_sasl_auth
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_failed
    - container_of
    - t_str_new
    - base64_decode
    - str_data
    - str_len
    - login_proxy_sasl_step
    - strlen
    - t_strdup_printf
    - str_sanitize
    - login_proxy_get_event
    - o_stream_nsend
    - str_append
    - o_stream_nsend_str
    - i_free
    linkageType: ''
    returnType: int
    signature: "int submission_proxy_continue_sasl_auth(struct client *client,\n\t\t\t\t
      \   struct ostream *output, const char *line,\n\t\t\t\t    bool last_line)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/submission-login/submission-proxy.c:428,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/submission-login/submission-proxy.c:437,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/submission-login/submission-proxy.c:443,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - text
    - enh_code_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 412
    functionDepth: 7
    functionLinenumber: 412
    functionLinenumberEnd: 446
    functionName: strip_enhanced_code
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - t_strdup_until
    - i_isdigit
    linkageType: ''
    returnType: char
    signature: 'char *

      strip_enhanced_code(const char *text, const char **enh_code_r)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smtp_proxy_redirect_parse
      Src: /src/dovecot/src/submission-login/submission-proxy.c:456,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission-login/submission-proxy.c:460,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:462,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission-login/submission-proxy.c:463,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:465,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/submission-login/submission-proxy.c:465,1
    - Dst: str_printfa
      Src: /src/dovecot/src/submission-login/submission-proxy.c:467,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/submission-login/submission-proxy.c:467,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/submission-proxy.c:469,1
    - Dst: str_printfa
      Src: /src/dovecot/src/submission-login/submission-proxy.c:471,1
    - Dst: str_c
      Src: /src/dovecot/src/submission-login/submission-proxy.c:472,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - resp
    - userhostport_r
    - error_r
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 448
    functionDepth: 12
    functionLinenumber: 448
    functionLinenumberEnd: 474
    functionName: submission_proxy_parse_redirect
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - smtp_proxy_redirect_parse
    - net_ip2addr
    - str_append
    linkageType: ''
    returnType: int
    signature: "int submission_proxy_parse_redirect(const char *resp, const char **userhostport_r,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_reply_code_is_proxy_redirect
      Src: /src/dovecot/src/submission-login/submission-proxy.c:484,1
    - Dst: submission_proxy_parse_redirect
      Src: /src/dovecot/src/submission-login/submission-proxy.c:487,1
    - Dst: e_debug
      Src: /src/dovecot/src/submission-login/submission-proxy.c:488,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:488,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission-login/submission-proxy.c:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - client
    - status
    - enh_code
    - resp
    - failure_type_r
    - text_r
    argTypes:
    - struct client*
    - unsigned int
    - char*
    - char*
    - enum login_proxy_failure_type*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 476
    functionDepth: 13
    functionLinenumber: 476
    functionLinenumberEnd: 499
    functionName: submission_proxy_handle_redirect
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - e_debug
    - smtp_reply_code_is_proxy_redirect
    - submission_proxy_parse_redirect
    - str_sanitize
    - login_proxy_get_event
    linkageType: ''
    returnType: bool
    signature: "bool submission_proxy_handle_redirect(struct client *client, unsigned
      int status,\n\t\t\t\t const char *enh_code, const char *resp,\n\t\t\t\t enum
      login_proxy_failure_type *failure_type_r,\n\t\t\t\t const char **text_r)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:503,1
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/submission-proxy.c:506,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:509,1
    - Dst: str_parse_uint
      Src: /src/dovecot/src/submission-login/submission-proxy.c:518,1
    - Dst: strip_enhanced_code
      Src: /src/dovecot/src/submission-login/submission-proxy.c:526,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:530,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission-login/submission-proxy.c:532,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:534,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:535,1
    - Dst: login_proxy_get_server_ostream
      Src: /src/dovecot/src/submission-login/submission-proxy.c:546,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:551,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission-login/submission-proxy.c:552,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:553,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:554,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/submission-login/submission-proxy.c:562,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:562,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:569,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission-login/submission-proxy.c:571,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:572,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:573,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/submission-login/submission-proxy.c:578,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/submission-login/submission-proxy.c:581,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/submission-login/submission-proxy.c:582,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/submission-login/submission-proxy.c:583,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/submission-login/submission-proxy.c:584,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/submission-login/submission-proxy.c:587,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/submission-login/submission-proxy.c:591,1
    - Dst: proxy_handle_ehlo_reply
      Src: /src/dovecot/src/submission-login/submission-proxy.c:598,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:601,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission-login/submission-proxy.c:603,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:604,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:605,1
    - Dst: login_proxy_starttls
      Src: /src/dovecot/src/submission-login/submission-proxy.c:611,1
    - Dst: login_proxy_get_server_ostream
      Src: /src/dovecot/src/submission-login/submission-proxy.c:614,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/submission-login/submission-proxy.c:617,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/submission-login/submission-proxy.c:619,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:619,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/submission-login/submission-proxy.c:624,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/submission-login/submission-proxy.c:625,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:628,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:629,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:635,1
    - Dst: submission_proxy_continue_sasl_auth
      Src: /src/dovecot/src/submission-login/submission-proxy.c:645,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:651,1
    - Dst: smtp_server_reply_create
      Src: /src/dovecot/src/submission-login/submission-proxy.c:652,1
    - Dst: smtp_server_reply_add_text
      Src: /src/dovecot/src/submission-login/submission-proxy.c:654,1
    - Dst: smtp_server_connection_input_lock
      Src: /src/dovecot/src/submission-login/submission-proxy.c:661,1
    - Dst: smtp_server_command_add_hook
      Src: /src/dovecot/src/submission-login/submission-proxy.c:663,1
    - Dst: login_proxy_input_halt
      Src: /src/dovecot/src/submission-login/submission-proxy.c:667,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/submission-login/submission-proxy.c:671,1
    - Dst: i_unreached
      Src: /src/dovecot/src/submission-login/submission-proxy.c:675,1
    - Dst: submission_proxy_handle_redirect
      Src: /src/dovecot/src/submission-login/submission-proxy.c:697,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:699,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:700,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/submission-login/submission-proxy.c:701,1
    - Dst: login_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:705,1
    - Dst: login_proxy_get_event
      Src: /src/dovecot/src/submission-login/submission-proxy.c:706,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 117
    argCount: 2
    argNames:
    - client
    - line
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 501
    functionDepth: 16
    functionLinenumber: 501
    functionLinenumberEnd: 709
    functionName: submission_proxy_parse_line
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - login_proxy_input_halt
    - t_strdup_printf
    - submission_proxy_continue_sasl_auth
    - str_sanitize
    - str_begins_icase
    - login_proxy_get_event
    - smtp_server_connection_input_lock
    - proxy_handle_ehlo_reply
    - p_strarray_dup
    - i_unreached
    - i_free_and_null
    - str_parse_uint
    - login_proxy_starttls
    - t_strsplit_spaces
    - smtp_server_reply_submit
    - strcasecmp
    - smtp_server_reply_create
    - o_stream_nsend_str
    - i_assert
    - login_proxy_failed
    - container_of
    - smtp_server_command_add_hook
    - strip_enhanced_code
    - submission_proxy_handle_redirect
    - login_proxy_get_server_ostream
    - smtp_server_reply_add_text
    linkageType: ''
    returnType: int
    signature: int submission_proxy_parse_line(struct client *client, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/submission-proxy.c:714,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/submission-login/submission-proxy.c:718,1
    - Dst: i_free
      Src: /src/dovecot/src/submission-login/submission-proxy.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 722
    functionName: submission_proxy_reset
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - i_free_and_null
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void submission_proxy_reset(struct client *client)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:740,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/submission-proxy.c:742,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:745,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:748,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/submission-login/submission-proxy.c:749,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:754,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - subm_client
    - type
    - ATTR_UNUSED
    argTypes:
    - struct submission_client*
    - enum login_proxy_failure_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 724
    functionDepth: 15
    functionLinenumber: 724
    functionLinenumberEnd: 757
    functionName: submission_proxy_send_failure_reply
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - smtp_server_reply_submit
    - i_assert
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: "void submission_proxy_send_failure_reply(struct submission_client
      *subm_client,\n\t\t\t\t    enum login_proxy_failure_type type,\n\t\t\t\t    const
      char *reason ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/submission-proxy.c:764,1
    - Dst: submission_proxy_send_failure_reply
      Src: /src/dovecot/src/submission-login/submission-proxy.c:767,1
    - Dst: client_common_proxy_failed
      Src: /src/dovecot/src/submission-login/submission-proxy.c:768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - client
    - type
    - reason
    - reconnecting
    argTypes:
    - struct client*
    - enum login_proxy_failure_type
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 759
    functionDepth: 16
    functionLinenumber: 759
    functionLinenumberEnd: 769
    functionName: submission_proxy_failed
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - client_common_proxy_failed
    - submission_proxy_send_failure_reply
    - container_of
    linkageType: ''
    returnType: void
    signature: "void submission_proxy_failed(struct client *client,\n\t\t\t     enum
      login_proxy_failure_type type,\n\t\t\t     const char *reason, bool reconnecting)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/submission-proxy.c:774,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/submission-proxy.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 778
    functionName: submission_proxy_get_state
    functionSourceFile: /src/dovecot/src/submission-login/submission-proxy.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    linkageType: ''
    returnType: char
    signature: char *submission_proxy_get_state(struct client *client)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: HAS_ALL_BITS
      Src: /src/dovecot/src/submission-login/client-authenticate.c:29,1
    - Dst: smtp_server_reply_create_ehlo
      Src: /src/dovecot/src/submission-login/client-authenticate.c:33,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:36,1
    - Dst: strcmp
      Src: /src/dovecot/src/submission-login/client-authenticate.c:39,1
    - Dst: t_str_new
      Src: /src/dovecot/src/submission-login/client-authenticate.c:42,1
    - Dst: sasl_server_get_advertised_mechs
      Src: /src/dovecot/src/submission-login/client-authenticate.c:44,1
    - Dst: str_append_c
      Src: /src/dovecot/src/submission-login/client-authenticate.c:48,1
    - Dst: str_append
      Src: /src/dovecot/src/submission-login/client-authenticate.c:49,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/submission-login/client-authenticate.c:51,1
    - Dst: str_c
      Src: /src/dovecot/src/submission-login/client-authenticate.c:52,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:58,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:62,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/submission-login/client-authenticate.c:65,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:69,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:73,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:76,1
    - Dst: smtp_server_reply_ehlo_add_param
      Src: /src/dovecot/src/submission-login/client-authenticate.c:82,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:87,1
    - Dst: client_is_tls_enabled
      Src: /src/dovecot/src/submission-login/client-authenticate.c:90,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:93,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:96,1
    - Dst: smtp_server_reply_ehlo_add
      Src: /src/dovecot/src/submission-login/client-authenticate.c:98,1
    - Dst: smtp_server_reply_ehlo_add_xclient
      Src: /src/dovecot/src/submission-login/client-authenticate.c:99,1
    - Dst: smtp_server_reply_submit
      Src: /src/dovecot/src/submission-login/client-authenticate.c:101,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 44
    argCount: 3
    argNames:
    - subm_client
    - cmd
    - data
    argTypes:
    - struct submission_client*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 21
    functionDepth: 15
    functionLinenumber: 21
    functionLinenumberEnd: 102
    functionName: cmd_helo_reply
    functionSourceFile: /src/dovecot/src/submission-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - strcmp
    - sasl_server_get_advertised_mechs
    - t_str_new
    - smtp_server_reply_ehlo_add
    - str_append_c
    - str_c
    - smtp_server_reply_submit
    - smtp_server_reply_create_ehlo
    - smtp_server_reply_ehlo_add_param
    - smtp_server_reply_ehlo_add_xclient
    - client_is_tls_enabled
    - str_append
    - HAS_ALL_BITS
    linkageType: ''
    returnType: void
    signature: "void cmd_helo_reply(struct submission_client *subm_client,\n\t\t\t
      \  struct smtp_server_cmd_ctx *cmd,\n\t\t\t   struct smtp_server_cmd_helo *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_helo_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - data
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_helo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 16
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: cmd_helo
    functionSourceFile: /src/dovecot/src/submission-login/client-authenticate.c
    functionUses: 4
    functionsReached:
    - cmd_helo_reply
    linkageType: ''
    returnType: int
    signature: "int cmd_helo(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t
      \    struct smtp_server_cmd_helo *data)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/client-authenticate.c:122,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client-authenticate.c:129,1
    - Dst: smtp_server_reply_redirect
      Src: /src/dovecot/src/submission-login/client-authenticate.c:144,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:157,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:166,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:174,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:190,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:203,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:213,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:228,1
    - Dst: smtp_server_reply
      Src: /src/dovecot/src/submission-login/client-authenticate.c:268,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 4
    argNames:
    - client
    - result
    - ATTR_UNUSED
    - text
    argTypes:
    - struct client*
    - enum client_auth_result
    - struct client_auth_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 116
    functionDepth: 16
    functionLinenumber: 116
    functionLinenumberEnd: 271
    functionName: submission_client_auth_result
    functionSourceFile: /src/dovecot/src/submission-login/client-authenticate.c
    functionUses: 0
    functionsReached:
    - i_assert
    - container_of
    - smtp_server_reply_redirect
    - smtp_server_reply
    linkageType: ''
    returnType: void
    signature: "void submission_client_auth_result(struct client *client,\n\tenum
      client_auth_result result,\n\tconst struct client_auth_reply *reply ATTR_UNUSED,\n\tconst
      char *text)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_auth_respond
      Src: /src/dovecot/src/submission-login/client-authenticate.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - conn_ctx
    - ATTR_UNUSED
    - response
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 273
    functionDepth: 5
    functionLinenumber: 273
    functionLinenumberEnd: 282
    functionName: cmd_auth_continue
    functionSourceFile: /src/dovecot/src/submission-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - client_auth_respond
    linkageType: ''
    returnType: int
    signature: "int cmd_auth_continue(void *conn_ctx,\n\t\t      struct smtp_server_cmd_ctx
      *cmd ATTR_UNUSED,\n\t\t      const char *response)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/submission-login/client-authenticate.c:288,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client-authenticate.c:291,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client-authenticate.c:292,1
    - Dst: smtp_server_cmd_auth_send_challenge
      Src: /src/dovecot/src/submission-login/client-authenticate.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - client
    - data
    argTypes:
    - struct client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 295
    functionName: submission_client_auth_send_challenge
    functionSourceFile: /src/dovecot/src/submission-login/client-authenticate.c
    functionUses: 0
    functionsReached:
    - smtp_server_cmd_auth_send_challenge
    - i_assert
    - container_of
    linkageType: ''
    returnType: void
    signature: "void submission_client_auth_send_challenge(struct client *client,\n\t\t\t\t\t
      \  const char *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_auth_begin_implicit
      Src: /src/dovecot/src/submission-login/client-authenticate.c:344,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client-authenticate.c:349,1
    - Dst: client_auth_begin
      Src: /src/dovecot/src/submission-login/client-authenticate.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - subm_client
    argTypes:
    - struct submission_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 334
    functionDepth: 6
    functionLinenumber: 334
    functionLinenumberEnd: 353
    functionName: cmd_auth_begin
    functionSourceFile: /src/dovecot/src/submission-login/client-authenticate.c
    functionUses: 1
    functionsReached:
    - client_auth_begin_implicit
    - i_assert
    - client_auth_begin
    linkageType: ''
    returnType: void
    signature: void cmd_auth_begin(struct submission_client *subm_client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client-authenticate.c:361,1
    - Dst: cmd_auth_set_master_data_prefix
      Src: /src/dovecot/src/submission-login/client-authenticate.c:363,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client-authenticate.c:366,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/submission-login/client-authenticate.c:371,1
    - Dst: cmd_auth_begin
      Src: /src/dovecot/src/submission-login/client-authenticate.c:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - conn_ctx
    - cmd
    - data
    argTypes:
    - void*
    - struct smtp_server_cmd_ctx*
    - struct smtp_server_cmd_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 355
    functionDepth: 7
    functionLinenumber: 355
    functionLinenumberEnd: 378
    functionName: cmd_auth
    functionSourceFile: /src/dovecot/src/submission-login/client-authenticate.c
    functionUses: 2
    functionsReached:
    - cmd_auth_set_master_data_prefix
    - cmd_auth_begin
    - i_assert
    - auth_client_is_connected
    linkageType: ''
    returnType: int
    signature: "int cmd_auth(void *conn_ctx, struct smtp_server_cmd_ctx *cmd,\n\t
      \    struct smtp_server_cmd_auth *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smtp_server_connection_get_context
      Src: /src/dovecot/src/submission-login/client-authenticate.c:384,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/submission-login/client-authenticate.c:389,1
    - Dst: sasl_server_find_available_mech
      Src: /src/dovecot/src/submission-login/client-authenticate.c:391,1
    - Dst: smtp_server_command_fail
      Src: /src/dovecot/src/submission-login/client-authenticate.c:393,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client-authenticate.c:398,1
    - Dst: e_debug
      Src: /src/dovecot/src/submission-login/client-authenticate.c:400,1
    - Dst: smtp_server_command_input_lock
      Src: /src/dovecot/src/submission-login/client-authenticate.c:403,1
    - Dst: cmd_auth_set_master_data_prefix
      Src: /src/dovecot/src/submission-login/client-authenticate.c:405,1
    - Dst: i_assert
      Src: /src/dovecot/src/submission-login/client-authenticate.c:408,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/submission-login/client-authenticate.c:412,1
    - Dst: cmd_auth_begin
      Src: /src/dovecot/src/submission-login/client-authenticate.c:417,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - cmd
    - params
    argTypes:
    - struct smtp_server_cmd_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 380
    functionDepth: 7
    functionLinenumber: 380
    functionLinenumberEnd: 418
    functionName: cmd_mail
    functionSourceFile: /src/dovecot/src/submission-login/client-authenticate.c
    functionUses: 5
    functionsReached:
    - cmd_auth_begin
    - smtp_server_command_input_lock
    - smtp_server_command_fail
    - e_debug
    - cmd_auth_set_master_data_prefix
    - sasl_server_find_available_mech
    - HAS_NO_BITS
    - auth_client_is_connected
    - smtp_server_connection_get_context
    - i_assert
    linkageType: ''
    returnType: void
    signature: void cmd_mail(struct smtp_server_cmd_ctx *cmd, const char *params)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/util/rawlog.c:48,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/util/rawlog.c:49,1
    - Dst: i_error
      Src: /src/dovecot/src/util/rawlog.c:50,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/util/rawlog.c:51,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/util/rawlog.c:53,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/util/rawlog.c:56,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/util/rawlog.c:57,1
    - Dst: i_error
      Src: /src/dovecot/src/util/rawlog.c:58,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/util/rawlog.c:59,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/util/rawlog.c:61,1
    - Dst: io_remove
      Src: /src/dovecot/src/util/rawlog.c:63,1
    - Dst: io_remove
      Src: /src/dovecot/src/util/rawlog.c:64,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/util/rawlog.c:65,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/util/rawlog.c:67,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/util/rawlog.c:68,1
    - Dst: close
      Src: /src/dovecot/src/util/rawlog.c:70,1
    - Dst: i_error
      Src: /src/dovecot/src/util/rawlog.c:71,1
    - Dst: close
      Src: /src/dovecot/src/util/rawlog.c:72,1
    - Dst: i_error
      Src: /src/dovecot/src/util/rawlog.c:73,1
    - Dst: close
      Src: /src/dovecot/src/util/rawlog.c:74,1
    - Dst: i_error
      Src: /src/dovecot/src/util/rawlog.c:75,1
    - Dst: i_free
      Src: /src/dovecot/src/util/rawlog.c:76,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/util/rawlog.c:78,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct rawlog_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 45
    functionDepth: 6
    functionLinenumber: 45
    functionLinenumberEnd: 79
    functionName: rawlog_proxy_destroy
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - i_error
    - o_stream_uncork
    - o_stream_get_error
    - io_remove
    - o_stream_finish
    - io_loop_stop
    - i_free
    - close
    - o_stream_destroy
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void rawlog_proxy_destroy(struct rawlog_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/util/rawlog.c:86,1
    - Dst: t_str_new
      Src: /src/dovecot/src/util/rawlog.c:89,1
    - Dst: str_append
      Src: /src/dovecot/src/util/rawlog.c:93,1
    - Dst: str_append_c
      Src: /src/dovecot/src/util/rawlog.c:96,1
    - Dst: str_append
      Src: /src/dovecot/src/util/rawlog.c:98,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/util/rawlog.c:101,1
    - Dst: str_data
      Src: /src/dovecot/src/util/rawlog.c:101,1
    - Dst: str_len
      Src: /src/dovecot/src/util/rawlog.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - output
    - prev_lf
    - data
    - size
    argTypes:
    - struct ostream*
    - bool*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 81
    functionDepth: 11
    functionLinenumber: 81
    functionLinenumberEnd: 102
    functionName: write_with_timestamps
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_append_c
    - str_data
    - str_len
    - t_strdup_printf
    - o_stream_nsend
    - str_append
    linkageType: ''
    returnType: void
    signature: "void write_with_timestamps(struct ostream *output, bool *prev_lf,\n\t\t
      \     const unsigned char *data, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/util/rawlog.c:109,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/util/rawlog.c:111,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/util/rawlog.c:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct rawlog_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 105
    functionDepth: 6
    functionLinenumber: 105
    functionLinenumberEnd: 115
    functionName: proxy_flush_timeout
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void proxy_flush_timeout(struct rawlog_proxy *proxy)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/util/rawlog.c:124,1
    - Dst: write_with_timestamps
      Src: /src/dovecot/src/util/rawlog.c:127,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/util/rawlog.c:129,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/util/rawlog.c:132,1
    - Dst: timeout_add
      Src: /src/dovecot/src/util/rawlog.c:135,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 5
    argNames:
    - proxy
    - output
    - prev_lf
    - data
    - size
    argTypes:
    - struct rawlog_proxy*
    - struct ostream*
    - bool*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 117
    functionDepth: 12
    functionLinenumber: 117
    functionLinenumberEnd: 138
    functionName: proxy_write_data
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - o_stream_nsend
    - write_with_timestamps
    - timeout_add
    linkageType: ''
    returnType: void
    signature: "void proxy_write_data(struct rawlog_proxy *proxy, struct ostream *output,\n\t\t\t
      \    bool *prev_lf, const void *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: proxy_write_data
      Src: /src/dovecot/src/util/rawlog.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - proxy
    - data
    - size
    argTypes:
    - struct rawlog_proxy*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 13
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: proxy_write_in
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - proxy_write_data
    linkageType: ''
    returnType: void
    signature: "void proxy_write_in(struct rawlog_proxy *proxy,\n\t\t\t   const void
      *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: proxy_write_data
      Src: /src/dovecot/src/util/rawlog.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - proxy
    - data
    - size
    argTypes:
    - struct rawlog_proxy*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 147
    functionDepth: 13
    functionLinenumber: 147
    functionLinenumberEnd: 152
    functionName: proxy_write_out
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - proxy_write_data
    linkageType: ''
    returnType: void
    signature: "void proxy_write_out(struct rawlog_proxy *proxy,\n\t\t\t    const
      void *data, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/util/rawlog.c:159,1
    - Dst: io_remove
      Src: /src/dovecot/src/util/rawlog.c:163,1
    - Dst: net_receive
      Src: /src/dovecot/src/util/rawlog.c:167,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/util/rawlog.c:169,1
    - Dst: proxy_write_out
      Src: /src/dovecot/src/util/rawlog.c:170,1
    - Dst: rawlog_proxy_destroy
      Src: /src/dovecot/src/util/rawlog.c:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct rawlog_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 14
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: server_input
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 10
    functionsReached:
    - rawlog_proxy_destroy
    - io_remove
    - net_receive
    - o_stream_nsend
    - o_stream_get_buffer_used_size
    - proxy_write_out
    linkageType: ''
    returnType: void
    signature: void server_input(struct rawlog_proxy *proxy)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/util/rawlog.c:180,1
    - Dst: io_remove
      Src: /src/dovecot/src/util/rawlog.c:184,1
    - Dst: net_receive
      Src: /src/dovecot/src/util/rawlog.c:188,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/util/rawlog.c:190,1
    - Dst: proxy_write_in
      Src: /src/dovecot/src/util/rawlog.c:191,1
    - Dst: rawlog_proxy_destroy
      Src: /src/dovecot/src/util/rawlog.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct rawlog_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 175
    functionDepth: 14
    functionLinenumber: 175
    functionLinenumberEnd: 194
    functionName: client_input
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 13
    functionsReached:
    - rawlog_proxy_destroy
    - io_remove
    - net_receive
    - proxy_write_in
    - o_stream_nsend
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: void
    signature: void client_input(struct rawlog_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/util/rawlog.c:198,1
    - Dst: rawlog_proxy_destroy
      Src: /src/dovecot/src/util/rawlog.c:199,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/util/rawlog.c:204,1
    - Dst: io_add
      Src: /src/dovecot/src/util/rawlog.c:208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct rawlog_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 196
    functionDepth: 7
    functionLinenumber: 196
    functionLinenumberEnd: 212
    functionName: server_output
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 2
    functionsReached:
    - o_stream_flush
    - rawlog_proxy_destroy
    - o_stream_get_buffer_used_size
    - io_add
    linkageType: ''
    returnType: int
    signature: int server_output(struct rawlog_proxy *proxy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/util/rawlog.c:216,1
    - Dst: rawlog_proxy_destroy
      Src: /src/dovecot/src/util/rawlog.c:217,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/util/rawlog.c:222,1
    - Dst: io_add
      Src: /src/dovecot/src/util/rawlog.c:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct rawlog_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 214
    functionDepth: 7
    functionLinenumber: 214
    functionLinenumberEnd: 230
    functionName: client_output
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 18
    functionsReached:
    - o_stream_flush
    - rawlog_proxy_destroy
    - o_stream_get_buffer_used_size
    - io_add
    linkageType: ''
    returnType: int
    signature: int client_output(struct rawlog_proxy *proxy)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/util/rawlog.c:239,1
    - Dst: time
      Src: /src/dovecot/src/util/rawlog.c:239,1
    - Dst: t_str_new
      Src: /src/dovecot/src/util/rawlog.c:240,1
    - Dst: str_printfa
      Src: /src/dovecot/src/util/rawlog.c:241,1
    - Dst: str_printfa
      Src: /src/dovecot/src/util/rawlog.c:244,1
    - Dst: str_printfa
      Src: /src/dovecot/src/util/rawlog.c:245,1
    - Dst: dec2str
      Src: /src/dovecot/src/util/rawlog.c:245,1
    - Dst: getpid
      Src: /src/dovecot/src/util/rawlog.c:245,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/util/rawlog.c:248,1
    - Dst: str_c
      Src: /src/dovecot/src/util/rawlog.c:248,1
    - Dst: open
      Src: /src/dovecot/src/util/rawlog.c:249,1
    - Dst: i_error
      Src: /src/dovecot/src/util/rawlog.c:251,1
    - Dst: o_stream_create_fd_file_autoclose
      Src: /src/dovecot/src/util/rawlog.c:254,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/util/rawlog.c:255,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/util/rawlog.c:259,1
    - Dst: str_c
      Src: /src/dovecot/src/util/rawlog.c:259,1
    - Dst: open
      Src: /src/dovecot/src/util/rawlog.c:260,1
    - Dst: i_error
      Src: /src/dovecot/src/util/rawlog.c:262,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/util/rawlog.c:263,1
    - Dst: o_stream_create_fd_file_autoclose
      Src: /src/dovecot/src/util/rawlog.c:266,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/util/rawlog.c:267,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - proxy
    - path
    - ip_addr
    argTypes:
    - struct rawlog_proxy*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 232
    functionDepth: 11
    functionLinenumber: 232
    functionLinenumberEnd: 269
    functionName: proxy_open_logs
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - dec2str
    - str_c
    - t_str_new
    - str_printfa
    - getpid
    - i_error
    - o_stream_create_fd_file_autoclose
    - open
    - t_strdup_printf
    - o_stream_cork
    - time
    - t_strflocaltime
    - o_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void proxy_open_logs(struct rawlog_proxy *proxy, const char *path,\n\t\t\t
      \   const char *ip_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/util/rawlog.c:278,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/util/rawlog.c:280,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/util/rawlog.c:281,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/util/rawlog.c:282,1
    - Dst: io_add
      Src: /src/dovecot/src/util/rawlog.c:283,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/util/rawlog.c:288,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/util/rawlog.c:289,1
    - Dst: io_add
      Src: /src/dovecot/src/util/rawlog.c:290,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/util/rawlog.c:292,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/util/rawlog.c:294,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/util/rawlog.c:295,1
    - Dst: proxy_open_logs
      Src: /src/dovecot/src/util/rawlog.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 6
    argNames:
    - client_in_fd
    - client_out_fd
    - server_fd
    - path
    - ip_addr
    - flags
    argTypes:
    - int
    - int
    - int
    - char*
    - char*
    - enum rawlog_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 271
    functionDepth: 12
    functionLinenumber: 271
    functionLinenumberEnd: 302
    functionName: rawlog_proxy_create
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - o_stream_create_fd
    - io_add
    - fd_set_nonblock
    - o_stream_set_no_error_handling
    - proxy_open_logs
    - i_new
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: struct rawlog_proxy
    signature: "struct rawlog_proxy *\nrawlog_proxy_create(int client_in_fd, int client_out_fd,
      int server_fd,\n\t\t    const char *path, const char *ip_addr,\n\t\t    enum
      rawlog_flags flags)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/util/rawlog.c:311,1
    - Dst: getenv
      Src: /src/dovecot/src/util/rawlog.c:312,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/util/rawlog.c:314,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/util/rawlog.c:319,1
    - Dst: lstat
      Src: /src/dovecot/src/util/rawlog.c:320,1
    - Dst: i_warning
      Src: /src/dovecot/src/util/rawlog.c:322,1
    - Dst: getenv
      Src: /src/dovecot/src/util/rawlog.c:323,1
    - Dst: i_info
      Src: /src/dovecot/src/util/rawlog.c:324,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/util/rawlog.c:327,1
    - Dst: getenv
      Src: /src/dovecot/src/util/rawlog.c:328,1
    - Dst: i_info
      Src: /src/dovecot/src/util/rawlog.c:329,1
    - Dst: strlen
      Src: /src/dovecot/src/util/rawlog.c:335,1
    - Dst: socketpair
      Src: /src/dovecot/src/util/rawlog.c:338,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/rawlog.c:339,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/util/rawlog.c:340,1
    - Dst: fd_set_nonblock
      Src: /src/dovecot/src/util/rawlog.c:341,1
    - Dst: fork
      Src: /src/dovecot/src/util/rawlog.c:343,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/rawlog.c:345,1
    - Dst: dup2
      Src: /src/dovecot/src/util/rawlog.c:349,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/rawlog.c:350,1
    - Dst: dup2
      Src: /src/dovecot/src/util/rawlog.c:351,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/rawlog.c:352,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/util/rawlog.c:353,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/util/rawlog.c:354,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/util/rawlog.c:357,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/util/rawlog.c:359,1
    - Dst: getenv
      Src: /src/dovecot/src/util/rawlog.c:359,1
    - Dst: process_title_set
      Src: /src/dovecot/src/util/rawlog.c:361,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/util/rawlog.c:361,1
    - Dst: getenv
      Src: /src/dovecot/src/util/rawlog.c:361,1
    - Dst: dec2str
      Src: /src/dovecot/src/util/rawlog.c:362,1
    - Dst: getppid
      Src: /src/dovecot/src/util/rawlog.c:362,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/util/rawlog.c:364,1
    - Dst: rawlog_proxy_create
      Src: /src/dovecot/src/util/rawlog.c:365,1
    - Dst: getenv
      Src: /src/dovecot/src/util/rawlog.c:365,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/util/rawlog.c:366,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/util/rawlog.c:367,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/util/rawlog.c:369,1
    - Dst: lib_exit
      Src: /src/dovecot/src/util/rawlog.c:370,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum rawlog_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 304
    functionDepth: 15
    functionLinenumber: 304
    functionLinenumberEnd: 371
    functionName: rawlog_open
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 0
    functionsReached:
    - fork
    - dup2
    - strlen
    - t_strdup_printf
    - io_loop_destroy
    - process_title_set
    - io_loop_run
    - i_close_fd
    - i_fatal
    - lib_exit
    - rawlog_proxy_create
    - S_ISDIR
    - socketpair
    - i_info
    - lstat
    - restrict_access_by_env
    - dec2str
    - t_strconcat
    - lib_deinit
    - fd_set_nonblock
    - i_warning
    - getenv
    - io_loop_create
    - getppid
    linkageType: ''
    returnType: void
    signature: void rawlog_open(enum rawlog_flags flags)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/util/rawlog.c:382,1
    - Dst: master_getopt
      Src: /src/dovecot/src/util/rawlog.c:384,1
    - Dst: strcmp
      Src: /src/dovecot/src/util/rawlog.c:387,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/util/rawlog.c:388,1
    - Dst: strcmp
      Src: /src/dovecot/src/util/rawlog.c:389,1
    - Dst: ENUM_NEGATE
      Src: /src/dovecot/src/util/rawlog.c:390,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/rawlog.c:392,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/rawlog.c:411,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/util/rawlog.c:413,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/util/rawlog.c:414,1
    - Dst: rawlog_open
      Src: /src/dovecot/src/util/rawlog.c:417,1
    - Dst: strrchr
      Src: /src/dovecot/src/util/rawlog.c:420,1
    - Dst: execv
      Src: /src/dovecot/src/util/rawlog.c:422,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/util/rawlog.c:424,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 373
    functionDepth: 16
    functionLinenumber: 373
    functionLinenumberEnd: 427
    functionName: main
    functionSourceFile: /src/dovecot/src/util/rawlog.c
    functionUses: 25
    functionsReached:
    - strcmp
    - strrchr
    - ENUM_NEGATE
    - i_fatal_status
    - i_fatal
    - rawlog_open
    - execv
    - master_service_init_finish
    - master_getopt
    - master_service_init
    - master_service_init_log
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: alarm
      Src: /src/dovecot/src/util/script-login.c:42,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/util/script-login.c:44,1
    - Dst: t_str_new
      Src: /src/dovecot/src/util/script-login.c:45,1
    - Dst: fd_read
      Src: /src/dovecot/src/util/script-login.c:46,1
    - Dst: str_append_data
      Src: /src/dovecot/src/util/script-login.c:48,1
    - Dst: strchr
      Src: /src/dovecot/src/util/script-login.c:50,1
    - Dst: str_c
      Src: /src/dovecot/src/util/script-login.c:50,1
    - Dst: str_truncate
      Src: /src/dovecot/src/util/script-login.c:51,1
    - Dst: str_len
      Src: /src/dovecot/src/util/script-login.c:51,1
    - Dst: read
      Src: /src/dovecot/src/util/script-login.c:55,1
    - Dst: str_c
      Src: /src/dovecot/src/util/script-login.c:58,1
    - Dst: strchr
      Src: /src/dovecot/src/util/script-login.c:59,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/util/script-login.c:61,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/util/script-login.c:67,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:69,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:76,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:78,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:81,1
    - Dst: alarm
      Src: /src/dovecot/src/util/script-login.c:83,1
    - Dst: env_clean
      Src: /src/dovecot/src/util/script-login.c:86,1
    - Dst: t_str_new
      Src: /src/dovecot/src/util/script-login.c:87,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/util/script-login.c:88,1
    - Dst: str_array_length
      Src: /src/dovecot/src/util/script-login.c:90,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:91,1
    - Dst: i_zero
      Src: /src/dovecot/src/util/script-login.c:94,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/util/script-login.c:96,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/util/script-login.c:97,1
    - Dst: env_put
      Src: /src/dovecot/src/util/script-login.c:101,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/util/script-login.c:101,1
    - Dst: env_put
      Src: /src/dovecot/src/util/script-login.c:102,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/util/script-login.c:102,1
    - Dst: env_put
      Src: /src/dovecot/src/util/script-login.c:103,1
    - Dst: strchr
      Src: /src/dovecot/src/util/script-login.c:106,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/util/script-login.c:108,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/util/script-login.c:108,1
    - Dst: env_put
      Src: /src/dovecot/src/util/script-login.c:109,1
    - Dst: str_printfa
      Src: /src/dovecot/src/util/script-login.c:110,1
    - Dst: env_put
      Src: /src/dovecot/src/util/script-login.c:113,1
    - Dst: str_c
      Src: /src/dovecot/src/util/script-login.c:113,1
    - Dst: master_service_init_log_with_prefix
      Src: /src/dovecot/src/util/script-login.c:115,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/util/script-login.c:116,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/util/script-login.c:119,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:120,1
    - Dst: mail_storage_service_init
      Src: /src/dovecot/src/util/script-login.c:121,1
    - Dst: mail_storage_service_lookup
      Src: /src/dovecot/src/util/script-login.c:122,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:123,1
    - Dst: mail_storage_service_restrict_setenv
      Src: /src/dovecot/src/util/script-login.c:124,1
    - Dst: env_remove
      Src: /src/dovecot/src/util/script-login.c:126,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/util/script-login.c:127,1
    - Dst: getenv
      Src: /src/dovecot/src/util/script-login.c:127,1
    - Dst: dup2
      Src: /src/dovecot/src/util/script-login.c:130,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:131,1
    - Dst: dup2
      Src: /src/dovecot/src/util/script-login.c:132,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:133,1
    - Dst: close
      Src: /src/dovecot/src/util/script-login.c:134,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:135,1
    - Dst: dup2
      Src: /src/dovecot/src/util/script-login.c:137,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:138,1
    - Dst: close
      Src: /src/dovecot/src/util/script-login.c:139,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:140,1
    - Dst: master_service_get_socket_count
      Src: /src/dovecot/src/util/script-login.c:144,1
    - Dst: close
      Src: /src/dovecot/src/util/script-login.c:146,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script-login.c:147,1
    - Dst: close
      Src: /src/dovecot/src/util/script-login.c:149,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script-login.c:150,1
    - Dst: execvp_const
      Src: /src/dovecot/src/util/script-login.c:152,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 86
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 27
    functionDepth: 15
    functionLinenumber: 27
    functionLinenumberEnd: 153
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/util/script-login.c
    functionUses: 9
    functionsReached:
    - strchr
    - str_c
    - t_str_ucase
    - str_printfa
    - dup2
    - str_len
    - t_strdup_printf
    - fd_read
    - t_str_new
    - net_addr2ip
    - t_strsplit_tabescaped
    - alarm
    - i_fatal
    - env_clean
    - mail_storage_service_init
    - execvp_const
    - net_ip2addr
    - master_service_settings_read_simple
    - i_zero
    - master_service_init_log_with_prefix
    - env_remove
    - mail_storage_service_lookup
    - net_set_nonblock
    - str_append_data
    - close
    - mail_storage_service_restrict_setenv
    - env_put
    - restrict_access_by_env
    - i_error
    - str_array_length
    - master_service_get_socket_count
    - getenv
    - read
    - str_truncate
    - t_strdup_until
    - version_string_verify
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/util/script-login.c:158,1
    - Dst: getenv
      Src: /src/dovecot/src/util/script-login.c:161,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:163,1
    - Dst: getenv
      Src: /src/dovecot/src/util/script-login.c:165,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:167,1
    - Dst: str_append
      Src: /src/dovecot/src/util/script-login.c:168,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/util/script-login.c:170,1
    - Dst: getenv
      Src: /src/dovecot/src/util/script-login.c:171,1
    - Dst: t_str_ucase
      Src: /src/dovecot/src/util/script-login.c:171,1
    - Dst: str_append_c
      Src: /src/dovecot/src/util/script-login.c:173,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/util/script-login.c:174,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/util/script-login.c:175,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/util/script-login.c:175,1
    - Dst: str_append_c
      Src: /src/dovecot/src/util/script-login.c:179,1
    - Dst: fd_send
      Src: /src/dovecot/src/util/script-login.c:182,1
    - Dst: str_data
      Src: /src/dovecot/src/util/script-login.c:183,1
    - Dst: str_len
      Src: /src/dovecot/src/util/script-login.c:183,1
    - Dst: str_len
      Src: /src/dovecot/src/util/script-login.c:184,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script-login.c:188,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script-login.c:190,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 155
    functionDepth: 8
    functionLinenumber: 155
    functionLinenumberEnd: 194
    functionName: script_execute_finish
    functionSourceFile: /src/dovecot/src/util/script-login.c
    functionUses: 0
    functionsReached:
    - t_str_lcase
    - t_str_new
    - t_str_ucase
    - str_append_c
    - i_error
    - str_data
    - str_len
    - i_fatal
    - getenv
    - t_strsplit_spaces
    - fd_send
    - str_append_tabescaped
    - str_append
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void script_execute_finish(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/dovecot/src/util/script-login.c:202,1
    - Dst: master_service_init
      Src: /src/dovecot/src/util/script-login.c:205,1
    - Dst: master_getopt
      Src: /src/dovecot/src/util/script-login.c:207,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/util/script-login.c:219,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/util/script-login.c:224,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/util/script-login.c:227,1
    - Dst: master_service_set_restart_request_count
      Src: /src/dovecot/src/util/script-login.c:228,1
    - Dst: script_execute_finish
      Src: /src/dovecot/src/util/script-login.c:232,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script-login.c:235,1
    - Dst: i_new
      Src: /src/dovecot/src/util/script-login.c:236,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/util/script-login.c:243,1
    - Dst: master_service_run
      Src: /src/dovecot/src/util/script-login.c:247,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/util/script-login.c:249,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 196
    functionDepth: 15
    functionLinenumber: 196
    functionLinenumberEnd: 251
    functionName: main
    functionSourceFile: /src/dovecot/src/util/script-login.c
    functionUses: 25
    functionsReached:
    - restrict_access_by_env
    - master_service_run
    - i_fatal
    - master_service_deinit
    - getenv
    - master_service_init_finish
    - master_service_set_restart_request_count
    - script_execute_finish
    - master_getopt
    - i_new
    - master_service_init
    - t_strconcat
    - master_service_init_log
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/dovecot/src/util/gdbhelper.c:13,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:18,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:22,1
    - Dst: execvp
      Src: /src/dovecot/src/util/gdbhelper.c:25,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:26,1
    - Dst: pipe
      Src: /src/dovecot/src/util/gdbhelper.c:28,1
    - Dst: pipe
      Src: /src/dovecot/src/util/gdbhelper.c:28,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:29,1
    - Dst: write
      Src: /src/dovecot/src/util/gdbhelper.c:36,1
    - Dst: strlen
      Src: /src/dovecot/src/util/gdbhelper.c:36,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:37,1
    - Dst: dup2
      Src: /src/dovecot/src/util/gdbhelper.c:39,1
    - Dst: dup2
      Src: /src/dovecot/src/util/gdbhelper.c:40,1
    - Dst: dup2
      Src: /src/dovecot/src/util/gdbhelper.c:41,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:42,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/util/gdbhelper.c:44,1
    - Dst: dec2str
      Src: /src/dovecot/src/util/gdbhelper.c:44,1
    - Dst: system
      Src: /src/dovecot/src/util/gdbhelper.c:45,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:46,1
    - Dst: wait
      Src: /src/dovecot/src/util/gdbhelper.c:48,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:49,1
    - Dst: WIFEXITED
      Src: /src/dovecot/src/util/gdbhelper.c:50,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/util/gdbhelper.c:50,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/util/gdbhelper.c:54,1
    - Dst: dec2str
      Src: /src/dovecot/src/util/gdbhelper.c:55,1
    - Dst: time
      Src: /src/dovecot/src/util/gdbhelper.c:55,1
    - Dst: dec2str
      Src: /src/dovecot/src/util/gdbhelper.c:56,1
    - Dst: open
      Src: /src/dovecot/src/util/gdbhelper.c:57,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:59,1
    - Dst: read
      Src: /src/dovecot/src/util/gdbhelper.c:61,1
    - Dst: write
      Src: /src/dovecot/src/util/gdbhelper.c:62,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:63,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/gdbhelper.c:66,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/util/gdbhelper.c:67,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 11
    functionDepth: 11
    functionLinenumber: 11
    functionLinenumberEnd: 71
    functionName: main
    functionSourceFile: /src/dovecot/src/util/gdbhelper.c
    functionUses: 25
    functionsReached:
    - dec2str
    - fork
    - WIFEXITED
    - system
    - dup2
    - WEXITSTATUS
    - execvp
    - wait
    - i_close_fd
    - strlen
    - i_fatal
    - t_strdup_printf
    - open
    - write
    - read
    - time
    - pipe
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: version_string_verify
      Src: /src/dovecot/src/util/script.c:30,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script.c:31,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 34
    functionName: script_verify_version
    functionSourceFile: /src/dovecot/src/util/script.c
    functionUses: 0
    functionsReached:
    - version_string_verify
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void script_verify_version(const char *line)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dup2
      Src: /src/dovecot/src/util/script.c:43,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script.c:44,1
    - Dst: dup2
      Src: /src/dovecot/src/util/script.c:45,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script.c:46,1
    - Dst: master_service_get_socket_count
      Src: /src/dovecot/src/util/script.c:49,1
    - Dst: close
      Src: /src/dovecot/src/util/script.c:51,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script.c:52,1
    - Dst: close
      Src: /src/dovecot/src/util/script.c:54,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script.c:55,1
    - Dst: close
      Src: /src/dovecot/src/util/script.c:56,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script.c:57,1
    - Dst: t_str_tabunescape
      Src: /src/dovecot/src/util/script.c:60,1
    - Dst: array_push_back
      Src: /src/dovecot/src/util/script.c:61,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/util/script.c:63,1
    - Dst: env_clean
      Src: /src/dovecot/src/util/script.c:65,1
    - Dst: env_put_array
      Src: /src/dovecot/src/util/script.c:67,1
    - Dst: array_front
      Src: /src/dovecot/src/util/script.c:69,1
    - Dst: execvp_const
      Src: /src/dovecot/src/util/script.c:70,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - conn
    - args
    - envs
    argTypes:
    - struct master_service_connection*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 37
    functionDepth: 8
    functionLinenumber: 37
    functionLinenumberEnd: 71
    functionName: exec_child
    functionSourceFile: /src/dovecot/src/util/script.c
    functionUses: 1
    functionsReached:
    - t_str_tabunescape
    - dup2
    - i_error
    - array_push_back
    - i_fatal
    - master_service_get_socket_count
    - env_clean
    - execvp_const
    - array_front
    - array_append_zero
    - close
    - env_put_array
    linkageType: ''
    returnType: void
    signature: "void exec_child(struct master_service_connection *conn,\n\tconst char
      *const *args, const char *const *envs)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/util/script.c:188,1
    - Dst: t_array_init
      Src: /src/dovecot/src/util/script.c:194,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/util/script.c:196,1
    - Dst: parse_input
      Src: /src/dovecot/src/util/script.c:198,1
    - Dst: exec_child
      Src: /src/dovecot/src/util/script.c:203,1
    - Dst: array_front
      Src: /src/dovecot/src/util/script.c:203,1
    - Dst: i_unreached
      Src: /src/dovecot/src/util/script.c:204,1
    - Dst: fork
      Src: /src/dovecot/src/util/script.c:207,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script.c:208,1
    - Dst: exec_child
      Src: /src/dovecot/src/util/script.c:215,1
    - Dst: array_front
      Src: /src/dovecot/src/util/script.c:215,1
    - Dst: exec_child
      Src: /src/dovecot/src/util/script.c:217,1
    - Dst: i_unreached
      Src: /src/dovecot/src/util/script.c:218,1
    - Dst: waitpid
      Src: /src/dovecot/src/util/script.c:224,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script.c:225,1
    - Dst: WIFEXITED
      Src: /src/dovecot/src/util/script.c:227,1
    - Dst: WEXITSTATUS
      Src: /src/dovecot/src/util/script.c:228,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script.c:230,1
    - Dst: WIFSIGNALED
      Src: /src/dovecot/src/util/script.c:233,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script.c:234,1
    - Dst: WTERMSIG
      Src: /src/dovecot/src/util/script.c:234,1
    - Dst: WIFSTOPPED
      Src: /src/dovecot/src/util/script.c:236,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script.c:237,1
    - Dst: WSTOPSIG
      Src: /src/dovecot/src/util/script.c:237,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script.c:240,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 186
    functionDepth: 4
    functionLinenumber: 186
    functionLinenumberEnd: 244
    functionName: client_exec_script
    functionSourceFile: /src/dovecot/src/util/script.c
    functionUses: 0
    functionsReached:
    - fork
    - WIFEXITED
    - WEXITSTATUS
    - WIFSTOPPED
    - i_error
    - WIFSIGNALED
    - i_unreached
    - WSTOPSIG
    - WTERMSIG
    - i_fatal
    - parse_input
    - exec_child
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - net_set_nonblock
    - waitpid
    linkageType: ''
    returnType: bool
    signature: bool client_exec_script(struct master_service_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_exec_script
      Src: /src/dovecot/src/util/script.c:251,1
    - Dst: write_full
      Src: /src/dovecot/src/util/script.c:253,1
    - Dst: i_error
      Src: /src/dovecot/src/util/script.c:254,1
    - Dst: client_exec_script
      Src: /src/dovecot/src/util/script.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct master_service_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 246
    functionDepth: 5
    functionLinenumber: 246
    functionLinenumberEnd: 258
    functionName: client_connected
    functionSourceFile: /src/dovecot/src/util/script.c
    functionUses: 9
    functionsReached:
    - write_full
    - client_exec_script
    - i_error
    linkageType: ''
    returnType: void
    signature: void client_connected(struct master_service_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/util/script.c:264,1
    - Dst: master_service_init
      Src: /src/dovecot/src/util/script.c:269,1
    - Dst: t_array_init
      Src: /src/dovecot/src/util/script.c:272,1
    - Dst: master_getopt
      Src: /src/dovecot/src/util/script.c:273,1
    - Dst: t_strsplit_spaces
      Src: /src/dovecot/src/util/script.c:276,1
    - Dst: array_push_back
      Src: /src/dovecot/src/util/script.c:278,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/util/script.c:292,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/util/script.c:293,1
    - Dst: array_front
      Src: /src/dovecot/src/util/script.c:293,1
    - Dst: master_service_init_log
      Src: /src/dovecot/src/util/script.c:295,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/script.c:297,1
    - Dst: restrict_access_by_env
      Src: /src/dovecot/src/util/script.c:298,1
    - Dst: restrict_access_allow_coredumps
      Src: /src/dovecot/src/util/script.c:299,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/util/script.c:301,1
    - Dst: master_service_set_restart_request_count
      Src: /src/dovecot/src/util/script.c:302,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/util/script.c:307,1
    - Dst: i_array_init
      Src: /src/dovecot/src/util/script.c:309,1
    - Dst: array_push_back
      Src: /src/dovecot/src/util/script.c:310,1
    - Dst: array_push_back
      Src: /src/dovecot/src/util/script.c:314,1
    - Dst: master_service_run
      Src: /src/dovecot/src/util/script.c:317,1
    - Dst: array_free
      Src: /src/dovecot/src/util/script.c:318,1
    - Dst: i_free
      Src: /src/dovecot/src/util/script.c:319,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/util/script.c:320,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 260
    functionDepth: 15
    functionLinenumber: 260
    functionLinenumberEnd: 322
    functionName: main
    functionSourceFile: /src/dovecot/src/util/script.c
    functionUses: 25
    functionsReached:
    - i_array_init
    - master_service_run
    - restrict_access_allow_coredumps
    - array_front
    - array_append_zero
    - master_service_init
    - p_strarray_dup
    - i_fatal
    - master_service_init_finish
    - master_getopt
    - t_strsplit_spaces
    - array_free
    - i_free
    - master_service_init_log
    - restrict_access_by_env
    - array_push_back
    - master_service_deinit
    - master_service_set_restart_request_count
    - t_array_init
    - ARRAY_TYPE
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/util/test-fs.c:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 86
    functionName: test_want_async
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - i_rand_limit
    linkageType: ''
    returnType: bool
    signature: bool test_want_async(struct test_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/util/test-fs.c:90,1
    - Dst: timeout_add_short_to
      Src: /src/dovecot/src/util/test-fs.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: test_op_finish
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - timeout_add_short_to
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_op_finish(struct test_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/util/test-fs.c:99,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/util/test-fs.c:100,1
    - Dst: test_op_finish
      Src: /src/dovecot/src/util/test-fs.c:103,1
    - Dst: i_free
      Src: /src/dovecot/src/util/test-fs.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct test_write*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 105
    functionName: test_write_finish
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - i_free
    - DLLIST_REMOVE
    - test_op_finish
    linkageType: ''
    returnType: void
    signature: void test_write_finish(struct test_write *w)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_write_stream_finish_async
      Src: /src/dovecot/src/util/test-fs.c:111,1
    - Dst: i_error
      Src: /src/dovecot/src/util/test-fs.c:113,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/util/test-fs.c:114,1
    - Dst: test_write_finish
      Src: /src/dovecot/src/util/test-fs.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct test_write*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 107
    functionDepth: 4
    functionLinenumber: 107
    functionLinenumberEnd: 118
    functionName: test_write_callback
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - fs_write_stream_finish_async
    - test_write_finish
    - i_error
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void test_write_callback(struct test_write *w)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/util/test-fs.c:127,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/util/test-fs.c:129,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/util/test-fs.c:131,1
    - Dst: guid_generate
      Src: /src/dovecot/src/util/test-fs.c:131,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/util/test-fs.c:132,1
    - Dst: test_want_async
      Src: /src/dovecot/src/util/test-fs.c:133,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/util/test-fs.c:134,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/util/test-fs.c:135,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/util/test-fs.c:135,1
    - Dst: fs_write_stream
      Src: /src/dovecot/src/util/test-fs.c:136,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/util/test-fs.c:137,1
    - Dst: i_unreached
      Src: /src/dovecot/src/util/test-fs.c:142,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/test-fs.c:144,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/util/test-fs.c:145,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/test-fs.c:147,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/util/test-fs.c:148,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/util/test-fs.c:150,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/util/test-fs.c:151,1
    - Dst: fs_write_stream_finish
      Src: /src/dovecot/src/util/test-fs.c:153,1
    - Dst: i_error
      Src: /src/dovecot/src/util/test-fs.c:155,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/util/test-fs.c:156,1
    - Dst: fs_file_set_async_callback
      Src: /src/dovecot/src/util/test-fs.c:159,1
    - Dst: test_write_finish
      Src: /src/dovecot/src/util/test-fs.c:161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 120
    functionDepth: 12
    functionLinenumber: 120
    functionLinenumberEnd: 162
    functionName: test_next_op_write
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_set_async_callback
    - DLLIST_PREPEND
    - i_rand_limit
    - fs_file_last_error
    - fs_write_stream
    - i_unreached
    - o_stream_get_error
    - o_stream_send_istream
    - i_fatal
    - i_stream_get_error
    - test_want_async
    - test_write_finish
    - guid_generate
    - fs_file_init
    - i_error
    - i_stream_create_limit
    - i_stream_create_file
    - i_new
    - i_stream_unref
    - t_strconcat
    - fs_write_stream_finish
    linkageType: ''
    returnType: void
    signature: void test_next_op_write(struct test_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/util/test-fs.c:168,1
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/util/test-fs.c:170,1
    - Dst: i_error
      Src: /src/dovecot/src/util/test-fs.c:171,1
    - Dst: pool_unref
      Src: /src/dovecot/src/util/test-fs.c:172,1
    - Dst: pool_unref
      Src: /src/dovecot/src/util/test-fs.c:174,1
    - Dst: test_op_finish
      Src: /src/dovecot/src/util/test-fs.c:180,1
    - Dst: i_free
      Src: /src/dovecot/src/util/test-fs.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct test_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 182
    functionName: test_iter_finish
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - i_error
    - fs_iter_deinit
    - pool_unref
    - i_free
    - DLLIST_REMOVE
    - test_op_finish
    linkageType: ''
    returnType: void
    signature: void test_iter_finish(struct test_iter *i)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_iter_next
      Src: /src/dovecot/src/util/test-fs.c:188,1
    - Dst: strchr
      Src: /src/dovecot/src/util/test-fs.c:191,1
    - Dst: i_assert
      Src: /src/dovecot/src/util/test-fs.c:192,1
    - Dst: p_strdup
      Src: /src/dovecot/src/util/test-fs.c:195,1
    - Dst: array_push_back
      Src: /src/dovecot/src/util/test-fs.c:196,1
    - Dst: fs_iter_have_more
      Src: /src/dovecot/src/util/test-fs.c:199,1
    - Dst: test_iter_finish
      Src: /src/dovecot/src/util/test-fs.c:200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct test_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 201
    functionName: test_iter_callback
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - test_iter_finish
    - strchr
    - p_strdup
    - fs_iter_next
    - array_push_back
    - fs_iter_have_more
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_iter_callback(struct test_iter *i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/util/test-fs.c:207,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/util/test-fs.c:209,1
    - Dst: p_array_init
      Src: /src/dovecot/src/util/test-fs.c:210,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/util/test-fs.c:211,1
    - Dst: fs_get_properties
      Src: /src/dovecot/src/util/test-fs.c:213,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/util/test-fs.c:215,1
    - Dst: fs_iter_init
      Src: /src/dovecot/src/util/test-fs.c:216,1
    - Dst: test_want_async
      Src: /src/dovecot/src/util/test-fs.c:217,1
    - Dst: fs_iter_set_async_callback
      Src: /src/dovecot/src/util/test-fs.c:219,1
    - Dst: test_iter_callback
      Src: /src/dovecot/src/util/test-fs.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 203
    functionDepth: 4
    functionLinenumber: 203
    functionLinenumberEnd: 221
    functionName: test_next_op_iter
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - test_want_async
    - p_array_init
    - fs_get_properties
    - fs_iter_init
    - DLLIST_PREPEND
    - i_new
    - i_rand_limit
    - fs_iter_set_async_callback
    - test_iter_callback
    linkageType: ''
    returnType: void
    signature: void test_next_op_iter(struct test_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/util/test-fs.c:225,1
    - Dst: io_remove
      Src: /src/dovecot/src/util/test-fs.c:226,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/util/test-fs.c:227,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/util/test-fs.c:228,1
    - Dst: test_op_finish
      Src: /src/dovecot/src/util/test-fs.c:231,1
    - Dst: i_free
      Src: /src/dovecot/src/util/test-fs.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct test_read*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 223
    functionDepth: 5
    functionLinenumber: 223
    functionLinenumberEnd: 233
    functionName: test_read_finish
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - io_remove
    - i_stream_unref
    - i_free
    - DLLIST_REMOVE
    - test_op_finish
    linkageType: ''
    returnType: void
    signature: void test_read_finish(struct test_read *r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/util/test-fs.c:241,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/util/test-fs.c:242,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/util/test-fs.c:245,1
    - Dst: fs_file_set_async_callback
      Src: /src/dovecot/src/util/test-fs.c:246,1
    - Dst: i_assert
      Src: /src/dovecot/src/util/test-fs.c:250,1
    - Dst: i_error
      Src: /src/dovecot/src/util/test-fs.c:253,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/util/test-fs.c:253,1
    - Dst: test_read_finish
      Src: /src/dovecot/src/util/test-fs.c:254,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct test_read*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 235
    functionDepth: 7
    functionLinenumber: 235
    functionLinenumberEnd: 255
    functionName: test_read_callback
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - i_error
    - test_read_finish
    - io_add_istream
    - fs_file_set_async_callback
    - i_stream_skip
    - i_stream_get_error
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void test_read_callback(struct test_read *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/util/test-fs.c:261,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/util/test-fs.c:263,1
    - Dst: array_idx
      Src: /src/dovecot/src/util/test-fs.c:266,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/util/test-fs.c:266,1
    - Dst: array_count
      Src: /src/dovecot/src/util/test-fs.c:266,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/util/test-fs.c:267,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/util/test-fs.c:268,1
    - Dst: test_want_async
      Src: /src/dovecot/src/util/test-fs.c:269,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/util/test-fs.c:270,1
    - Dst: test_read_callback
      Src: /src/dovecot/src/util/test-fs.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 257
    functionDepth: 8
    functionLinenumber: 257
    functionLinenumberEnd: 272
    functionName: test_next_read
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_init
    - test_want_async
    - array_idx
    - test_read_callback
    - array_count
    - DLLIST_PREPEND
    - i_rand_limit
    - i_new
    - fs_read_stream
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void test_next_read(struct test_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/util/test-fs.c:276,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/util/test-fs.c:277,1
    - Dst: test_op_finish
      Src: /src/dovecot/src/util/test-fs.c:280,1
    - Dst: i_free
      Src: /src/dovecot/src/util/test-fs.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct test_delete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 282
    functionName: test_delete_finish
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - i_free
    - DLLIST_REMOVE
    - test_op_finish
    linkageType: ''
    returnType: void
    signature: void test_delete_finish(struct test_delete *d)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_delete
      Src: /src/dovecot/src/util/test-fs.c:286,1
    - Dst: i_error
      Src: /src/dovecot/src/util/test-fs.c:290,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/util/test-fs.c:290,1
    - Dst: test_delete_finish
      Src: /src/dovecot/src/util/test-fs.c:292,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct test_delete*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 293
    functionName: test_delete_callback
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - fs_delete
    - test_delete_finish
    - i_error
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void test_delete_callback(struct test_delete *d)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/util/test-fs.c:299,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/util/test-fs.c:301,1
    - Dst: array_idx
      Src: /src/dovecot/src/util/test-fs.c:304,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/util/test-fs.c:304,1
    - Dst: array_count
      Src: /src/dovecot/src/util/test-fs.c:304,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/util/test-fs.c:305,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/util/test-fs.c:306,1
    - Dst: test_want_async
      Src: /src/dovecot/src/util/test-fs.c:307,1
    - Dst: fs_delete
      Src: /src/dovecot/src/util/test-fs.c:308,1
    - Dst: fs_file_set_async_callback
      Src: /src/dovecot/src/util/test-fs.c:310,1
    - Dst: i_error
      Src: /src/dovecot/src/util/test-fs.c:314,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/util/test-fs.c:314,1
    - Dst: test_delete_finish
      Src: /src/dovecot/src/util/test-fs.c:315,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 295
    functionDepth: 8
    functionLinenumber: 295
    functionLinenumberEnd: 316
    functionName: test_next_delete
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_init
    - test_want_async
    - i_error
    - array_idx
    - fs_delete
    - fs_file_set_async_callback
    - array_count
    - DLLIST_PREPEND
    - i_rand_limit
    - i_new
    - test_delete_finish
    - t_strconcat
    - fs_file_last_error
    linkageType: ''
    returnType: void
    signature: void test_next_delete(struct test_ctx *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_rand_limit
      Src: /src/dovecot/src/util/test-fs.c:320,1
    - Dst: array_is_created
      Src: /src/dovecot/src/util/test-fs.c:322,1
    - Dst: array_count
      Src: /src/dovecot/src/util/test-fs.c:323,1
    - Dst: test_next_op_write
      Src: /src/dovecot/src/util/test-fs.c:326,1
    - Dst: test_next_op_iter
      Src: /src/dovecot/src/util/test-fs.c:330,1
    - Dst: array_is_created
      Src: /src/dovecot/src/util/test-fs.c:333,1
    - Dst: array_count
      Src: /src/dovecot/src/util/test-fs.c:334,1
    - Dst: test_next_read
      Src: /src/dovecot/src/util/test-fs.c:337,1
    - Dst: array_is_created
      Src: /src/dovecot/src/util/test-fs.c:340,1
    - Dst: array_count
      Src: /src/dovecot/src/util/test-fs.c:341,1
    - Dst: test_next_delete
      Src: /src/dovecot/src/util/test-fs.c:344,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 25
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 318
    functionDepth: 13
    functionLinenumber: 318
    functionLinenumberEnd: 347
    functionName: test_next_op
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - test_next_op_write
    - test_next_delete
    - test_next_op_iter
    - array_count
    - i_rand_limit
    - test_next_read
    - array_is_created
    linkageType: ''
    returnType: void
    signature: void test_next_op(struct test_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/util/test-fs.c:351,1
    - Dst: test_next_op
      Src: /src/dovecot/src/util/test-fs.c:354,1
    - Dst: timeout_add
      Src: /src/dovecot/src/util/test-fs.c:356,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/util/test-fs.c:357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 349
    functionDepth: 14
    functionLinenumber: 349
    functionLinenumberEnd: 359
    functionName: test_more
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - test_next_op
    - timeout_add
    - i_rand_limit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_more(struct test_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dovecot/src/util/test-fs.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct test_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 366
    functionName: stats_output
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void stats_output(struct test_ctx *ctx)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/util/test-fs.c:377,1
    - Dst: i_zero
      Src: /src/dovecot/src/util/test-fs.c:381,1
    - Dst: master_service_init
      Src: /src/dovecot/src/util/test-fs.c:383,1
    - Dst: master_getopt
      Src: /src/dovecot/src/util/test-fs.c:387,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/util/test-fs.c:390,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/util/test-fs.c:391,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/util/test-fs.c:397,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/test-fs.c:398,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/util/test-fs.c:401,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/test-fs.c:402,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/util/test-fs.c:411,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/test-fs.c:412,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/test-fs.c:422,1
    - Dst: master_service_settings_read_simple
      Src: /src/dovecot/src/util/test-fs.c:424,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/test-fs.c:425,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/util/test-fs.c:427,1
    - Dst: dict_drivers_register_builtin
      Src: /src/dovecot/src/util/test-fs.c:428,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/util/test-fs.c:430,1
    - Dst: master_service_get_event
      Src: /src/dovecot/src/util/test-fs.c:430,1
    - Dst: i_fatal
      Src: /src/dovecot/src/util/test-fs.c:432,1
    - Dst: test_more
      Src: /src/dovecot/src/util/test-fs.c:436,1
    - Dst: timeout_add
      Src: /src/dovecot/src/util/test-fs.c:438,1
    - Dst: timeout_add
      Src: /src/dovecot/src/util/test-fs.c:439,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/util/test-fs.c:440,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/util/test-fs.c:441,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/util/test-fs.c:442,1
    - Dst: test_write_finish
      Src: /src/dovecot/src/util/test-fs.c:445,1
    - Dst: test_iter_finish
      Src: /src/dovecot/src/util/test-fs.c:447,1
    - Dst: test_read_finish
      Src: /src/dovecot/src/util/test-fs.c:449,1
    - Dst: test_delete_finish
      Src: /src/dovecot/src/util/test-fs.c:451,1
    - Dst: stats_output
      Src: /src/dovecot/src/util/test-fs.c:453,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/util/test-fs.c:454,1
    - Dst: fs_deinit
      Src: /src/dovecot/src/util/test-fs.c:455,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/util/test-fs.c:456,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 67
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 368
    functionDepth: 15
    functionLinenumber: 368
    functionLinenumberEnd: 457
    functionName: main
    functionSourceFile: /src/dovecot/src/util/test-fs.c
    functionUses: 25
    functionsReached:
    - str_to_uint
    - master_service_init
    - io_loop_run
    - test_read_finish
    - fs_deinit
    - timeout_add
    - i_fatal
    - master_service_init_finish
    - master_service_get_event
    - master_getopt
    - master_service_settings_read_simple
    - i_zero
    - event_set_forced_debug
    - test_write_finish
    - test_iter_finish
    - fs_init_auto
    - dict_drivers_register_builtin
    - stats_output
    - test_delete_finish
    - master_service_deinit
    - test_more
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: http_char_is_token
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_char_is_token(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: http_char_is_value
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_char_is_value(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: http_char_is_text
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_char_is_text(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: http_char_is_qdtext
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_char_is_qdtext(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: http_char_is_ctext
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_char_is_ctext(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: http_char_is_token68
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_char_is_token68(unsigned char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-http/http-server-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: DEF_MSECS
    functionSourceFile: /src/dovecot/src/lib-http/http-server-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_MSECS(type, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _set
    - ATTR_UNUSED
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 81
    functionName: http_server_settings_check
    functionSourceFile: /src/dovecot/src/lib-http/http-server-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool http_server_settings_check(void *_set, pool_t pool ATTR_UNUSED,\n\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:35,1
    - Dst: http_client_host_shared_free
      Src: /src/dovecot/src/lib-http/http-client-host.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hshared
    argTypes:
    - struct http_client_host_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: http_client_host_shared_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_host_shared_free
    linkageType: ''
    returnType: void
    signature: void http_client_host_shared_idle_timeout(struct http_client_host_shared
      *hshared)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_is_idle
      Src: /src/dovecot/src/lib-http/http-client-host.c:52,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-host.c:59,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-http/http-client-host.c:66,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:70,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - hshared
    argTypes:
    - struct http_client_host_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 71
    functionName: http_client_host_shared_check_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - timeout_add_to
    - http_client_host_is_idle
    - timeval_diff_msecs
    - e_debug
    linkageType: ''
    returnType: void
    signature: void http_client_host_shared_check_idle(struct http_client_host_shared
      *hshared)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:79,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-host.c:81,1
    - Dst: http_client_host_lookup_failure
      Src: /src/dovecot/src/lib-http/http-client-host.c:86,1
    - Dst: http_client_host_shared_check_idle
      Src: /src/dovecot/src/lib-http/http-client-host.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - hshared
    - error
    argTypes:
    - struct http_client_host_shared*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 73
    functionDepth: 11
    functionLinenumber: 73
    functionLinenumberEnd: 91
    functionName: http_client_host_shared_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_host_shared_check_idle
    - t_strdup_printf
    - http_client_host_lookup_failure
    linkageType: ''
    returnType: void
    signature: "void http_client_host_shared_lookup_failure(struct http_client_host_shared
      *hshared,\n\t\t\t\t       const char *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-host.c:100,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:102,1
    - Dst: i_realloc_type
      Src: /src/dovecot/src/lib-http/http-client-host.c:105,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-http/http-client-host.c:108,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-host.c:111,1
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib-http/http-client-host.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - hshared
    - ips
    - ips_count
    argTypes:
    - struct http_client_host_shared*
    - struct ip_addr*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 113
    functionName: http_client_host_shared_lookup_success
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_realloc_type
    - e_debug
    - timeval_add_msecs
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_host_shared_lookup_success(struct http_client_host_shared
      *hshared,\n\t\t\t\t       const struct ip_addr *ips,\n\t\t\t\t       unsigned
      int ips_count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_shared_lookup_failure
      Src: /src/dovecot/src/lib-http/http-client-host.c:128,1
    - Dst: http_client_host_shared_lookup_success
      Src: /src/dovecot/src/lib-http/http-client-host.c:132,1
    - Dst: http_client_host_lookup_done
      Src: /src/dovecot/src/lib-http/http-client-host.c:138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - result
    - hshared
    argTypes:
    - struct dns_lookup_result*
    - struct http_client_host_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 115
    functionDepth: 12
    functionLinenumber: 115
    functionLinenumberEnd: 141
    functionName: http_client_host_shared_dns_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - http_client_host_shared_lookup_success
    - http_client_host_lookup_done
    - http_client_host_shared_lookup_failure
    linkageType: ''
    returnType: void
    signature: "void http_client_host_shared_dns_callback(const struct dns_lookup_result
      *result,\n\t\t\t\t     struct http_client_host_shared *hshared)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-host.c:149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-host.c:150,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:153,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-http/http-client-host.c:156,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:164,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client-host.c:165,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-http/http-client-host.c:166,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client-host.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 171
    functionName: http_client_host_shared_lookup
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - dns_client_lookup
    - dns_lookup
    - e_debug
    - io_loop_set_current
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_host_shared_lookup(struct http_client_host *host)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:186,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib-http/http-client-host.c:188,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:191,1
    - Dst: http_client_host_shared_lookup
      Src: /src/dovecot/src/lib-http/http-client-host.c:195,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 173
    functionDepth: 3
    functionLinenumber: 173
    functionLinenumberEnd: 199
    functionName: http_client_host_shared_refresh
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_host_shared_lookup
    - timeval_cmp
    linkageType: ''
    returnType: int
    signature: int http_client_host_shared_refresh(struct http_client_host *host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-client-host.c:208,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-client-host.c:210,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client-host.c:211,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-client-host.c:212,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-host.c:213,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-http/http-client-host.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - cctx
    - name
    argTypes:
    - struct http_client_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 201
    functionDepth: 11
    functionLinenumber: 201
    functionLinenumberEnd: 217
    functionName: http_client_host_shared_create
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - event_create
    - event_set_append_log_prefix
    - t_strdup_printf
    - i_strdup
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct http_client_host_shared
    signature: "struct http_client_host_shared *\nhttp_client_host_shared_create(struct
      http_client_context *cctx,\n\t\t\t       const char *name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_shared_create
      Src: /src/dovecot/src/lib-http/http-client-host.c:228,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:234,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-http/http-client-host.c:241,1
    - Dst: http_client_host_shared_create
      Src: /src/dovecot/src/lib-http/http-client-host.c:243,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-http/http-client-host.c:246,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-http/http-client-host.c:249,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-client-host.c:251,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:257,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - cctx
    - host_url
    argTypes:
    - struct http_client_context*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 219
    functionDepth: 12
    functionLinenumber: 219
    functionLinenumberEnd: 261
    functionName: http_client_host_shared_get
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - http_client_host_shared_create
    - e_debug
    - i_new
    - hash_table_insert
    - hash_table_lookup
    linkageType: ''
    returnType: struct http_client_host_shared
    signature: "struct http_client_host_shared *\nhttp_client_host_shared_get(struct
      http_client_context *cctx,\n\t\t\t    const struct http_url *host_url)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:274,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-host.c:276,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-http/http-client-host.c:278,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-http/http-client-host.c:282,1
    - Dst: dns_lookup_abort
      Src: /src/dovecot/src/lib-http/http-client-host.c:285,1
    - Dst: http_client_host_free_shared
      Src: /src/dovecot/src/lib-http/http-client-host.c:290,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client-host.c:293,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-host.c:294,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-host.c:295,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-host.c:296,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - _hshared
    argTypes:
    - struct http_client_host_shared**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 263
    functionDepth: 6
    functionLinenumber: 263
    functionLinenumberEnd: 299
    functionName: http_client_host_shared_free
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 1
    functionsReached:
    - event_unref
    - e_debug
    - hash_table_remove
    - http_client_host_free_shared
    - dns_lookup_abort
    - i_free
    - DLLIST_REMOVE
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_host_shared_free(struct http_client_host_shared **_hshared)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-host.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hshared
    argTypes:
    - struct http_client_host_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 6
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: http_client_host_shared_request_submitted
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_client_host_shared_request_submitted(\n\tstruct http_client_host_shared
      *hshared)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dns_lookup_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client-host.c:315,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/http-client-host.c:317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - hshared
    argTypes:
    - struct http_client_host_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 309
    functionDepth: 8
    functionLinenumber: 309
    functionLinenumberEnd: 318
    functionName: http_client_host_shared_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - io_loop_move_timeout
    - dns_lookup_switch_ioloop
    linkageType: ''
    returnType: void
    signature: "void http_client_host_shared_switch_ioloop(\n\tstruct http_client_host_shared
      *hshared)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_shared_get
      Src: /src/dovecot/src/lib-http/http-client-host.c:331,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-client-host.c:341,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-host.c:344,1
    - Dst: DLLIST_PREPEND_FULL
      Src: /src/dovecot/src/lib-http/http-client-host.c:345,1
    - Dst: DLLIST_PREPEND_FULL
      Src: /src/dovecot/src/lib-http/http-client-host.c:347,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:350,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - client
    - host_url
    argTypes:
    - struct http_client*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 324
    functionDepth: 13
    functionLinenumber: 324
    functionLinenumberEnd: 354
    functionName: http_client_host_get
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - http_client_host_shared_get
    - e_debug
    - DLLIST_PREPEND_FULL
    - i_new
    linkageType: ''
    returnType: struct http_client_host
    signature: "struct http_client_host *\nhttp_client_host_get(struct http_client
      *client,\n\t\t     const struct http_url *host_url)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-host.c:362,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-host.c:366,1
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/lib-http/http-client-host.c:368,1
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/lib-http/http-client-host.c:370,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-host.c:374,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-host.c:374,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-http/http-client-host.c:375,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-host.c:376,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-host.c:377,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-host.c:378,1
    - Dst: http_client_queue_free
      Src: /src/dovecot/src/lib-http/http-client-host.c:379,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-host.c:380,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-host.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - _host
    argTypes:
    - struct http_client_host**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 383
    functionName: http_client_host_free_shared
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - e_debug
    - array_copy
    - DLLIST_REMOVE_FULL
    - array_count
    - http_client_queue_free
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - i_free
    - array_free
    linkageType: ''
    returnType: void
    signature: void http_client_host_free_shared(struct http_client_host **_host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_free_shared
      Src: /src/dovecot/src/lib-http/http-client-host.c:390,1
    - Dst: http_client_host_shared_check_idle
      Src: /src/dovecot/src/lib-http/http-client-host.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _host
    argTypes:
    - struct http_client_host**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 385
    functionDepth: 3
    functionLinenumber: 385
    functionLinenumberEnd: 393
    functionName: http_client_host_free
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - http_client_host_shared_check_idle
    - http_client_host_free_shared
    linkageType: ''
    returnType: void
    signature: void http_client_host_free(struct http_client_host **_host)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-host.c:402,1
    - Dst: http_client_queue_host_lookup_done
      Src: /src/dovecot/src/lib-http/http-client-host.c:403,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-host.c:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 407
    functionName: http_client_host_lookup_done
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 1
    functionsReached:
    - http_client_queue_host_lookup_done
    - io_loop_stop
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void http_client_host_lookup_done(struct http_client_host *host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-host.c:415,1
    - Dst: http_client_queue_host_lookup_failure
      Src: /src/dovecot/src/lib-http/http-client-host.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - host
    - error
    argTypes:
    - struct http_client_host*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 417
    functionName: http_client_host_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 1
    functionsReached:
    - http_client_queue_host_lookup_failure
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: "void http_client_host_lookup_failure(struct http_client_host *host,\n\t\t\t\tconst
      char *error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_get_peer_addr
      Src: /src/dovecot/src/lib-http/http-client-host.c:429,1
    - Dst: http_client_peer_addr_is_https
      Src: /src/dovecot/src/lib-http/http-client-host.c:430,1
    - Dst: http_client_init_ssl_ctx
      Src: /src/dovecot/src/lib-http/http-client-host.c:432,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-host.c:433,1
    - Dst: http_client_queue_get
      Src: /src/dovecot/src/lib-http/http-client-host.c:441,1
    - Dst: http_client_queue_submit_request
      Src: /src/dovecot/src/lib-http/http-client-host.c:442,1
    - Dst: http_client_host_shared_request_submitted
      Src: /src/dovecot/src/lib-http/http-client-host.c:445,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - host
    - req
    argTypes:
    - struct http_client_host*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 419
    functionDepth: 7
    functionLinenumber: 419
    functionLinenumberEnd: 449
    functionName: http_client_host_submit_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - http_client_queue_submit_request
    - http_client_peer_addr_is_https
    - http_client_host_shared_request_submitted
    - http_client_init_ssl_ctx
    - http_client_request_get_peer_addr
    - http_client_request_error
    - http_client_queue_get
    linkageType: ''
    returnType: void
    signature: "void http_client_host_submit_request(struct http_client_host *host,\n\t\t\t\t
      \    struct http_client_request *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-host.c:456,1
    - Dst: http_client_queue_requests_active
      Src: /src/dovecot/src/lib-http/http-client-host.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 460
    functionName: http_client_host_is_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 1
    functionsReached:
    - http_client_queue_requests_active
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool http_client_host_is_idle(struct http_client_host *host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_shared_check_idle
      Src: /src/dovecot/src/lib-http/http-client-host.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 462
    functionDepth: 3
    functionLinenumber: 462
    functionLinenumberEnd: 465
    functionName: http_client_host_check_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - http_client_host_shared_check_idle
    linkageType: ''
    returnType: void
    signature: void http_client_host_check_idle(struct http_client_host *host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_shared_refresh
      Src: /src/dovecot/src/lib-http/http-client-host.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 467
    functionDepth: 4
    functionLinenumber: 467
    functionLinenumberEnd: 470
    functionName: http_client_host_refresh
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - http_client_host_shared_refresh
    linkageType: ''
    returnType: int
    signature: int http_client_host_refresh(struct http_client_host *host)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib-http/http-client-host.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - host
    - ip
    - idx_r
    argTypes:
    - struct http_client_host*
    - struct ip_addr*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 472
    functionDepth: 2
    functionLinenumber: 472
    functionLinenumberEnd: 485
    functionName: http_client_host_get_ip_idx
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - net_ip_compare
    linkageType: ''
    returnType: bool
    signature: "bool http_client_host_get_ip_idx(struct http_client_host *host,\n\t\t\t\t
      const struct ip_addr *ip, unsigned int *idx_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-host.c:491,1
    - Dst: http_client_queue_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client-host.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 493
    functionName: http_client_host_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client-host.c
    functionUses: 0
    functionsReached:
    - http_client_queue_switch_ioloop
    - array_foreach_elem
    linkageType: ''
    returnType: void
    signature: void http_client_host_switch_ioloop(struct http_client_host *host)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-response-parser.c:46,1
    - Dst: http_message_parser_init
      Src: /src/dovecot/src/lib-http/http-response-parser.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - input
    - hdr_limits
    - flags
    argTypes:
    - struct istream*
    - struct http_header_limits*
    - enum http_response_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 50
    functionName: http_response_parser_init
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - http_message_parser_init
    - i_new
    linkageType: ''
    returnType: struct http_response_parser
    signature: "struct http_response_parser *\nhttp_response_parser_init(struct istream
      *input,\n\tconst struct http_header_limits *hdr_limits,\n\tenum http_response_parse_flags
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parser_deinit
      Src: /src/dovecot/src/lib-http/http-response-parser.c:58,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-response-parser.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct http_response_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 60
    functionName: http_response_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - i_free
    - http_message_parser_deinit
    linkageType: ''
    returnType: void
    signature: void http_response_parser_deinit(struct http_response_parser **_parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parser_restart
      Src: /src/dovecot/src/lib-http/http-response-parser.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_response_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: http_response_parser_restart
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - http_message_parser_restart
    linkageType: ''
    returnType: void
    signature: void http_response_parser_restart(struct http_response_parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-http/http-response-parser.c:80,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-http/http-response-parser.c:80,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-http/http-response-parser.c:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_response_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 89
    functionName: http_response_parse_status
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: int http_response_parse_status(struct http_response_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_char_is_text
      Src: /src/dovecot/src/lib-http/http-response-parser.c:99,1
    - Dst: http_message_parser_get_pool
      Src: /src/dovecot/src/lib-http/http-response-parser.c:104,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-http/http-response-parser.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_response_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 109
    functionName: http_response_parse_reason
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup_until
    - http_message_parser_get_pool
    - http_char_is_text
    linkageType: ''
    returnType: int
    signature: int http_response_parse_reason(struct http_response_parser *parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-response-parser.c:113,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-response-parser.c:118,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-response-parser.c:122,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-response-parser.c:125,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-response-parser.c:128,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-response-parser.c:132,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-response-parser.c:134,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-response-parser.c:136,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-response-parser.c:140,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-response-parser.c:141,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 111
    functionDepth: 4
    functionLinenumber: 111
    functionLinenumberEnd: 142
    functionName: _reply_sanitize
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - str_append
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *_reply_sanitize(struct http_message_parser *parser)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parse_version
      Src: /src/dovecot/src/lib-http/http-response-parser.c:162,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-response-parser.c:164,1
    - Dst: _reply_sanitize
      Src: /src/dovecot/src/lib-http/http-response-parser.c:166,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-response-parser.c:175,1
    - Dst: _reply_sanitize
      Src: /src/dovecot/src/lib-http/http-response-parser.c:177,1
    - Dst: http_response_parse_status
      Src: /src/dovecot/src/lib-http/http-response-parser.c:186,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-response-parser.c:197,1
    - Dst: _reply_sanitize
      Src: /src/dovecot/src/lib-http/http-response-parser.c:199,1
    - Dst: http_response_parse_reason
      Src: /src/dovecot/src/lib-http/http-response-parser.c:208,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-response-parser.c:209,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-response-parser.c:225,1
    - Dst: _reply_sanitize
      Src: /src/dovecot/src/lib-http/http-response-parser.c:227,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-response-parser.c:238,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 68
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_response_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 144
    functionDepth: 11
    functionLinenumber: 144
    functionLinenumberEnd: 239
    functionName: http_response_parse
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_unreached
    - t_strdup_printf
    - http_message_parse_version
    - http_response_parse_status
    - _reply_sanitize
    - http_response_parse_reason
    linkageType: ''
    returnType: int
    signature: int http_response_parse(struct http_response_parser *parser)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-http/http-response-parser.c:249,1
    - Dst: http_response_parse
      Src: /src/dovecot/src/lib-http/http-response-parser.c:254,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/http-response-parser.c:257,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-http/http-response-parser.c:260,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-response-parser.c:271,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-response-parser.c:272,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_response_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 241
    functionDepth: 12
    functionLinenumber: 241
    functionLinenumberEnd: 276
    functionName: http_response_parse_status_line
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - t_strdup_printf
    - http_response_parse
    - i_stream_skip
    - i_stream_get_error
    - i_stream_read_bytes
    linkageType: ''
    returnType: int
    signature: int http_response_parse_status_line(struct http_response_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_time
      Src: /src/dovecot/src/lib-http/http-response-parser.c:296,1
    - Dst: http_date_parse
      Src: /src/dovecot/src/lib-http/http-response-parser.c:304,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/http-response-parser.c:305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - hdrval
    - resp_time
    - retry_after_r
    argTypes:
    - char*
    - time_t
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 306
    functionName: http_response_parse_retry_after
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - http_date_parse
    - str_to_time
    - strlen
    linkageType: ''
    returnType: int
    signature: "int http_response_parse_retry_after(const char *hdrval, time_t resp_time,\n\ttime_t
      *retry_after_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_response_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 311
    functionName: http_response_parser_get_last_offset
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t http_response_parser_get_last_offset(struct http_response_parser
      *parser)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-response-parser.c:321,1
    - Dst: http_message_parse_finish_payload
      Src: /src/dovecot/src/lib-http/http-response-parser.c:325,1
    - Dst: http_response_parser_restart
      Src: /src/dovecot/src/lib-http/http-response-parser.c:331,1
    - Dst: http_response_parse_status_line
      Src: /src/dovecot/src/lib-http/http-response-parser.c:341,1
    - Dst: http_message_parse_headers
      Src: /src/dovecot/src/lib-http/http-response-parser.c:346,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-response-parser.c:358,1
    - Dst: http_message_parse_body
      Src: /src/dovecot/src/lib-http/http-response-parser.c:382,1
    - Dst: http_header_field_get
      Src: /src/dovecot/src/lib-http/http-response-parser.c:399,1
    - Dst: http_response_parse_retry_after
      Src: /src/dovecot/src/lib-http/http-response-parser.c:401,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 50
    argCount: 4
    argNames:
    - parser
    - payload_type
    - response
    - error_r
    argTypes:
    - struct http_response_parser*
    - enum http_response_payload_type
    - struct http_response*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 313
    functionDepth: 13
    functionLinenumber: 313
    functionLinenumberEnd: 421
    functionName: http_response_parse_next
    functionSourceFile: /src/dovecot/src/lib-http/http-response-parser.c
    functionUses: 0
    functionsReached:
    - i_zero
    - http_response_parser_restart
    - t_strdup_printf
    - http_message_parse_body
    - http_response_parse_status_line
    - http_message_parse_finish_payload
    - http_message_parse_headers
    - http_header_field_get
    - http_response_parse_retry_after
    linkageType: ''
    returnType: int
    signature: "int http_response_parse_next(struct http_response_parser *parser,\n\t\t\t
      \    enum http_response_payload_type payload_type,\n\t\t\t     struct http_response
      *response, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: http_response_is_success
    functionSourceFile: /src/dovecot/src/lib-http/http-response.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_response_is_success(const struct http_response *resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: http_response_is_internal_error
    functionSourceFile: /src/dovecot/src/lib-http/http-response.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_response_is_internal_error(const struct http_response *resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_header_field_find
      Src: /src/dovecot/src/lib-http/http-response.h:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - resp
    - name
    argTypes:
    - struct http_response*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: http_response_header_find
    functionSourceFile: /src/dovecot/src/lib-http/http-response.h
    functionUses: 0
    functionsReached:
    - http_header_field_find
    linkageType: ''
    returnType: struct http_header_field
    signature: 'struct http_header_field *

      http_response_header_find(const struct http_response *resp, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_header_field_get
      Src: /src/dovecot/src/lib-http/http-response.h:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - resp
    - name
    argTypes:
    - struct http_response*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: http_response_header_get
    functionSourceFile: /src/dovecot/src/lib-http/http-response.h
    functionUses: 0
    functionsReached:
    - http_header_field_get
    linkageType: ''
    returnType: char
    signature: 'char *

      http_response_header_get(const struct http_response *resp, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_header_get_fields
      Src: /src/dovecot/src/lib-http/http-response.h:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: http_response_header_get_fields
    functionSourceFile: /src/dovecot/src/lib-http/http-response.h
    functionUses: 1
    functionsReached:
    - http_header_get_fields
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      http_response_header_get_fields(const struct http_response *resp)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-response.h:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 74
    functionDepth: 11
    functionLinenumber: 74
    functionLinenumberEnd: 80
    functionName: http_response_get_message
    functionSourceFile: /src/dovecot/src/lib-http/http-response.h
    functionUses: 6
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      http_response_get_message(const struct http_response *resp)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-http/http-client-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: DEF_MSECS
    functionSourceFile: /src/dovecot/src/lib-http/http-client-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_MSECS(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: DEF_SECS
    functionSourceFile: /src/dovecot/src/lib-http/http-client-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_SECS(type, name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: http_url_parse
      Src: /src/dovecot/src/lib-http/http-client-settings.c:140,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-settings.c:142,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-settings.c:164,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - _set
    - pool
    - error_r
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 133
    functionDepth: 11
    functionLinenumber: 133
    functionLinenumberEnd: 177
    functionName: http_client_settings_check
    functionSourceFile: /src/dovecot/src/lib-http/http-client-settings.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - t_strdup_printf
    linkageType: ''
    returnType: bool
    signature: bool http_client_settings_check(void *_set, pool_t pool, const char
      **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-date.c:124,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-date.c:124,1
    - Dst: http_date_parse_tm
      Src: /src/dovecot/src/lib-http/test-http-date.c:126,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-date.c:127,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-date.c:128,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-date.c:128,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-date.c:134,1
    - Dst: http_date_create_tm
      Src: /src/dovecot/src/lib-http/test-http-date.c:136,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-date.c:137,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-date.c:137,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-date.c:141,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 110
    functionDepth: 11
    functionLinenumber: 110
    functionLinenumberEnd: 142
    functionName: test_http_date_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-date.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out_reason
    - strlen
    - t_strdup_printf
    - test_end
    - test_out
    - http_date_parse_tm
    - http_date_create_tm
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_date_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-date.c:205,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-date.c:205,1
    - Dst: http_date_parse_tm
      Src: /src/dovecot/src/lib-http/test-http-date.c:207,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-date.c:208,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-date.c:209,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-date.c:209,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-date.c:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 194
    functionDepth: 11
    functionLinenumber: 194
    functionLinenumberEnd: 212
    functionName: test_http_date_invalid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-date.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strdup_printf
    - test_end
    - test_out
    - http_date_parse_tm
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_date_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-date.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 215
    functionDepth: 7
    functionLinenumber: 215
    functionLinenumberEnd: 223
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-date.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:91,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:99,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:99,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:101,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:101,1
    - Dst: http_transfer_chunked_istream_create
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:102,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:103,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:105,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:106,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:107,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:107,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:109,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:110,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:111,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:113,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:113,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:114,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:115,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 84
    functionDepth: 11
    functionLinenumber: 84
    functionLinenumberEnd: 117
    functionName: test_http_transfer_chunked_input_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-transfer.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - o_stream_send_istream
    - buffer_create_dynamic
    - strlen
    - t_strdup_printf
    - buffer_set_used_size
    - o_stream_create_buffer
    - test_out
    - str_sanitize
    - test_end
    - o_stream_destroy
    - i_stream_unref
    - i_stream_create_from_data
    - http_transfer_chunked_istream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_transfer_chunked_input_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:188,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:195,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:195,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:197,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:197,1
    - Dst: http_transfer_chunked_istream_create
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:198,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:199,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:201,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:202,1
    - Dst: o_stream_nsend_istream
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:203,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:204,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:205,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:206,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 181
    functionDepth: 11
    functionLinenumber: 181
    functionLinenumberEnd: 209
    functionName: test_http_transfer_chunked_input_invalid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-transfer.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - strlen
    - t_strdup_printf
    - o_stream_nsend_istream
    - buffer_set_used_size
    - o_stream_create_buffer
    - test_out
    - test_end
    - o_stream_destroy
    - i_stream_unref
    - i_stream_create_from_data
    - http_transfer_chunked_istream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_transfer_chunked_input_invalid(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:256,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:257,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:267,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:267,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:270,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:270,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:273,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:274,1
    - Dst: http_transfer_chunked_ostream_create
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:277,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:281,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:292,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:301,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:305,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:306,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:306,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:307,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:308,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:309,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:312,1
    - Dst: http_transfer_chunked_istream_create
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:314,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:317,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:318,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:319,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:320,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:322,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:323,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:324,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:327,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:328,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:328,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:329,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:330,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:331,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 249
    functionDepth: 11
    functionLinenumber: 249
    functionLinenumberEnd: 332
    functionName: test_http_transfer_chunked_output_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-transfer.c
    functionUses: 0
    functionsReached:
    - str_c
    - buffer_create_dynamic
    - strlen
    - t_strdup_printf
    - buffer_set_used_size
    - str_sanitize
    - test_assert
    - i_stream_create_from_data
    - o_stream_create_buffer
    - o_stream_send_istream
    - i_stream_skip
    - test_end
    - i_stream_read_more
    - http_transfer_chunked_istream_create
    - i_stream_destroy
    - test_out
    - o_stream_destroy
    - strcmp
    - o_stream_finish
    - o_stream_send
    - http_transfer_chunked_ostream_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_transfer_chunked_output_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-transfer.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 338
    functionDepth: 7
    functionLinenumber: 338
    functionLinenumberEnd: 347
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-transfer.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-payload.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 93
    functionName: test_init_defaults
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void test_init_defaults(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dovecot/src/lib-http/test-http-payload.c:108,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:111,1
    - Dst: readdir
      Src: /src/dovecot/src/lib-http/test-http-payload.c:122,1
    - Dst: strcspn
      Src: /src/dovecot/src/lib-http/test-http-payload.c:125,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib-http/test-http-payload.c:128,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib-http/test-http-payload.c:129,1
    - Dst: str_ends_with
      Src: /src/dovecot/src/lib-http/test-http-payload.c:130,1
    - Dst: t_abspath_to
      Src: /src/dovecot/src/lib-http/test-http-payload.c:133,1
    - Dst: stat
      Src: /src/dovecot/src/lib-http/test-http-payload.c:134,1
    - Dst: S_ISREG
      Src: /src/dovecot/src/lib-http/test-http-payload.c:135,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/test-http-payload.c:137,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/test-http-payload.c:138,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-http/test-http-payload.c:139,1
    - Dst: test_files_read_dir
      Src: /src/dovecot/src/lib-http/test-http-payload.c:140,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:146,1
    - Dst: closedir
      Src: /src/dovecot/src/lib-http/test-http-payload.c:150,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:151,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 30
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 103
    functionDepth: 9
    functionLinenumber: 103
    functionLinenumberEnd: 153
    functionName: test_files_read_dir
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 3
    functionsReached:
    - readdir
    - p_strdup
    - opendir
    - array_push_back
    - str_ends_with
    - strcspn
    - i_fatal
    - closedir
    - e_error
    - stat
    - S_ISDIR
    - t_abspath_to
    - test_files_read_dir
    - S_ISREG
    linkageType: ''
    returnType: void
    signature: void test_files_read_dir(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:158,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:160,1
    - Dst: test_files_read_dir
      Src: /src/dovecot/src/lib-http/test-http-payload.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 164
    functionName: test_files_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - test_files_read_dir
    - p_array_init
    linkageType: ''
    returnType: void
    signature: void test_files_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: test_files_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 2
    functionsReached:
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void test_files_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-payload.c:251,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-payload.c:254,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/test-http-payload.c:255,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:260,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - creq
    argTypes:
    - struct client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 262
    functionName: client_handle_success_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - strcmp
    - http_server_request_fail
    - http_server_response_create
    - http_server_request_get
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void client_handle_success_request(struct client_request *creq)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-payload.c:271,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-payload.c:279,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/test-http-payload.c:280,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-http/test-http-payload.c:285,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:287,1
    - Dst: test_file_open
      Src: /src/dovecot/src/lib-http/test-http-payload.c:289,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/test-http-payload.c:291,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:295,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/test-http-payload.c:296,1
    - Dst: http_server_response_get_payload_output
      Src: /src/dovecot/src/lib-http/test-http-payload.c:299,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-payload.c:302,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/test-http-payload.c:305,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-http/test-http-payload.c:308,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:309,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:314,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:315,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:317,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:318,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:320,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:321,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:323,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:324,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:327,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-payload.c:332,1
    - Dst: http_server_response_set_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:334,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:336,1
    - Dst: http_server_response_submit_close
      Src: /src/dovecot/src/lib-http/test-http-payload.c:340,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-http/test-http-payload.c:343,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:345,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 2
    argNames:
    - creq
    - path
    argTypes:
    - struct client_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 266
    functionDepth: 8
    functionLinenumber: 266
    functionLinenumberEnd: 346
    functionName: client_handle_download_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - http_server_request_fail
    - http_server_response_add_header
    - i_stream_seek
    - o_stream_get_name
    - i_unreached
    - o_stream_get_error
    - o_stream_send_istream
    - i_fatal
    - i_stream_get_error
    - http_server_response_get_payload_output
    - http_server_request_get
    - i_stream_get_name
    - test_file_open
    - http_server_response_create
    - http_server_response_submit_close
    - i_assert
    - o_stream_destroy
    - strcmp
    - e_debug
    - o_stream_finish
    - http_server_response_set_payload
    - i_stream_unref
    - t_strconcat
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: "void client_handle_download_request(struct client_request *creq,\n\t\t\t
      \      const char *path)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/test-http-payload.c:357,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:359,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:361,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:362,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:368,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:370,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-payload.c:371,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:375,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:376,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/test-http-payload.c:379,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-payload.c:380,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/test-http-payload.c:381,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:383,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:384,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-http/test-http-payload.c:387,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-http/test-http-payload.c:393,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:394,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:396,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:397,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:399,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:403,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:405,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-payload.c:406,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/test-http-payload.c:409,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:411,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:415,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:417,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:418,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:420,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:422,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:423,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/test-http-payload.c:425,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 1
    argNames:
    - creq
    argTypes:
    - struct client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 350
    functionDepth: 3
    functionLinenumber: 350
    functionLinenumberEnd: 426
    functionName: client_request_echo_send_more
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - i_unreached
    - o_stream_get_error
    - e_debug
    - o_stream_send_istream
    - i_fatal
    - o_stream_finish
    - o_stream_set_max_buffer_size
    - i_stream_get_error
    - o_stream_get_buffer_used_size
    - i_stream_unref
    - o_stream_flush
    - i_stream_get_name
    - i_assert
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: int client_request_echo_send_more(struct client_request *creq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:434,1
    - Dst: http_server_response_get_payload_output
      Src: /src/dovecot/src/lib-http/test-http-payload.c:436,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-http/test-http-payload.c:439,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-http/test-http-payload.c:440,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-http/test-http-payload.c:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - creq
    - resp
    - data
    argTypes:
    - struct client_request*
    - struct http_server_response*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 443
    functionName: client_request_echo_ostream_nonblocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - o_stream_cork
    - http_server_response_get_payload_output
    - o_stream_set_flush_pending
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: void
    signature: "void client_request_echo_ostream_nonblocking(struct client_request
      *creq,\n\t\t\t\t\tstruct http_server_response *resp,\n\t\t\t\t\tstruct istream
      *data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:454,1
    - Dst: http_server_response_send_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:455,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:456,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-payload.c:459,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:461,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:463,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:465,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:466,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-http/test-http-payload.c:467,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:468,1
    - Dst: http_server_response_finish_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:474,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:475,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:479,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - creq
    - resp
    - input
    argTypes:
    - struct client_request*
    - struct http_server_response*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 445
    functionDepth: 7
    functionLinenumber: 445
    functionLinenumberEnd: 480
    functionName: client_request_echo_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - http_server_response_send_payload
    - e_debug
    - i_stream_have_bytes_left
    - i_fatal
    - i_stream_skip
    - i_stream_get_error
    - http_server_response_finish_payload
    - i_stream_get_name
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: "void client_request_echo_blocking(struct client_request *creq,\n\t\t\t
      \    struct http_server_response *resp,\n\t\t\t     struct istream *input)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_get_payload_output
      Src: /src/dovecot/src/lib-http/test-http-payload.c:490,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-http/test-http-payload.c:494,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-payload.c:496,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/test-http-payload.c:499,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-http/test-http-payload.c:502,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:503,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:508,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:509,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:511,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:512,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:514,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:515,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:517,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:518,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:521,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-payload.c:523,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - creq
    - resp
    - input
    argTypes:
    - struct client_request*
    - struct http_server_response*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 482
    functionDepth: 3
    functionLinenumber: 482
    functionLinenumberEnd: 524
    functionName: client_request_echo_ostream_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - i_unreached
    - o_stream_get_error
    - o_stream_send_istream
    - e_debug
    - o_stream_cork
    - i_fatal
    - o_stream_finish
    - i_stream_get_error
    - http_server_response_get_payload_output
    - i_stream_get_name
    - i_assert
    - o_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void client_request_echo_ostream_blocking(struct client_request *creq,\n\t\t\t\t
      \    struct http_server_response *resp,\n\t\t\t\t     struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-http/test-http-payload.c:532,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:534,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:537,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/test-http-payload.c:538,1
    - Dst: client_request_echo_ostream_nonblocking
      Src: /src/dovecot/src/lib-http/test-http-payload.c:541,1
    - Dst: http_server_response_set_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:544,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:545,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-http/test-http-payload.c:547,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - creq
    argTypes:
    - struct client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 526
    functionDepth: 7
    functionLinenumber: 526
    functionLinenumberEnd: 551
    functionName: client_request_finish_payload_in
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - iostream_temp_finish
    - e_debug
    - http_server_response_create
    - http_server_response_add_header
    - http_server_response_set_payload
    - i_stream_seek
    - i_stream_unref
    - client_request_echo_ostream_nonblocking
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void client_request_finish_payload_in(struct client_request *creq)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/test-http-payload.c:557,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-payload.c:558,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/test-http-payload.c:559,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:568,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:572,1
    - Dst: client_request_finish_payload_in
      Src: /src/dovecot/src/lib-http/test-http-payload.c:577,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:578,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - creq
    argTypes:
    - struct client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 553
    functionDepth: 8
    functionLinenumber: 553
    functionLinenumberEnd: 579
    functionName: client_request_read_echo
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - o_stream_send_istream
    - i_fatal
    - client_request_finish_payload_in
    - i_stream_unref
    - o_stream_set_max_buffer_size
    linkageType: ''
    returnType: void
    signature: void client_request_read_echo(struct client_request *creq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_request_read_echo
      Src: /src/dovecot/src/lib-http/test-http-payload.c:583,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:588,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - creq
    argTypes:
    - struct client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 581
    functionDepth: 9
    functionLinenumber: 581
    functionLinenumberEnd: 592
    functionName: client_request_read_echo_more
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - e_debug
    - io_remove
    - client_request_read_echo
    linkageType: ''
    returnType: void
    signature: void client_request_read_echo_more(struct client_request *creq)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-payload.c:599,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/test-http-payload.c:604,1
    - Dst: http_server_request_get_pool
      Src: /src/dovecot/src/lib-http/test-http-payload.c:604,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-payload.c:606,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/test-http-payload.c:607,1
    - Dst: http_request_get_payload_size
      Src: /src/dovecot/src/lib-http/test-http-payload.c:613,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:614,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:616,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/test-http-payload.c:617,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:619,1
    - Dst: iostream_temp_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:623,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-http/test-http-payload.c:624,1
    - Dst: http_server_request_get_payload_input
      Src: /src/dovecot/src/lib-http/test-http-payload.c:630,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:634,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:636,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-payload.c:640,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:642,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:645,1
    - Dst: iostream_temp_finish
      Src: /src/dovecot/src/lib-http/test-http-payload.c:647,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:649,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:653,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/test-http-payload.c:654,1
    - Dst: client_request_echo_ostream_blocking
      Src: /src/dovecot/src/lib-http/test-http-payload.c:658,1
    - Dst: client_request_echo_blocking
      Src: /src/dovecot/src/lib-http/test-http-payload.c:661,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:663,1
    - Dst: http_server_request_get_payload_input
      Src: /src/dovecot/src/lib-http/test-http-payload.c:670,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:674,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:676,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-http/test-http-payload.c:680,1
    - Dst: client_request_read_echo_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:682,1
    - Dst: http_server_request_forward_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:685,1
    - Dst: http_server_request_get_payload_input
      Src: /src/dovecot/src/lib-http/test-http-payload.c:691,1
    - Dst: http_server_request_handle_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:692,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 56
    argCount: 2
    argNames:
    - creq
    - path
    argTypes:
    - struct client_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 594
    functionDepth: 10
    functionLinenumber: 594
    functionLinenumberEnd: 697
    functionName: client_handle_echo_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - http_server_request_fail
    - http_server_response_add_header
    - iostream_temp_create
    - http_server_request_handle_payload
    - http_request_get_payload_size
    - http_server_request_get_payload_input
    - client_request_echo_blocking
    - iostream_temp_finish
    - o_stream_send_istream
    - i_fatal
    - http_server_request_get
    - io_add_istream
    - http_server_request_get_pool
    - http_server_response_create
    - http_server_request_forward_payload
    - client_request_read_echo_more
    - strcmp
    - client_request_echo_ostream_blocking
    - e_debug
    - i_stream_create_limit
    - i_stream_unref
    - t_strconcat
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: "void client_handle_echo_request(struct client_request *creq,\n\t\t\t
      \  const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get_pool
      Src: /src/dovecot/src/lib-http/test-http-payload.c:708,1
    - Dst: http_server_request_ref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:710,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/test-http-payload.c:712,1
    - Dst: http_server_request_set_destroy_callback
      Src: /src/dovecot/src/lib-http/test-http-payload.c:716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - client
    - req
    argTypes:
    - struct client*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 720
    functionName: client_request_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - http_server_request_get_pool
    - p_new
    - http_server_request_ref
    - http_server_request_set_destroy_callback
    linkageType: ''
    returnType: struct client_request
    signature: "struct client_request *\nclient_request_init(struct client *client,\n\t\t
      \   struct http_server_request *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:729,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:730,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:731,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _creq
    argTypes:
    - struct client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 722
    functionDepth: 5
    functionLinenumber: 722
    functionLinenumberEnd: 734
    functionName: client_request_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - io_remove
    - http_server_request_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void client_request_deinit(struct client_request **_creq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_request_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - creq
    argTypes:
    - struct client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 736
    functionDepth: 6
    functionLinenumber: 736
    functionLinenumberEnd: 739
    functionName: http_server_request_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - client_request_deinit
    linkageType: ''
    returnType: void
    signature: void http_server_request_destroyed(struct client_request *creq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-payload.c:745,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:750,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:752,1
    - Dst: client_request_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:755,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-payload.c:757,1
    - Dst: client_handle_success_request
      Src: /src/dovecot/src/lib-http/test-http-payload.c:758,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-http/test-http-payload.c:762,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/test-http-payload.c:763,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-http/test-http-payload.c:766,1
    - Dst: client_handle_download_request
      Src: /src/dovecot/src/lib-http/test-http-payload.c:767,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-http/test-http-payload.c:770,1
    - Dst: client_handle_echo_request
      Src: /src/dovecot/src/lib-http/test-http-payload.c:771,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/test-http-payload.c:775,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - context
    - req
    argTypes:
    - void*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 741
    functionDepth: 11
    functionLinenumber: 741
    functionLinenumberEnd: 777
    functionName: client_handle_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strchr
    - e_debug
    - client_request_init
    - http_server_request_fail
    - client_handle_echo_request
    - strncmp
    - client_handle_download_request
    - http_server_request_get
    - i_assert
    - client_handle_success_request
    linkageType: ''
    returnType: void
    signature: "void client_handle_request(void *context,\n\t\t      struct http_server_request
      *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-http/test-http-payload.c:793,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:795,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/test-http-payload.c:796,1
    - Dst: http_server_connection_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:799,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-http/test-http-payload.c:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 788
    functionDepth: 4
    functionLinenumber: 788
    functionLinenumberEnd: 802
    functionName: client_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 56
    functionsReached:
    - pool_alloconly_create
    - p_new
    - DLLIST_PREPEND
    - net_set_nonblock
    - http_server_connection_create
    linkageType: ''
    returnType: void
    signature: void client_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-http/test-http-payload.c:810,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/test-http-payload.c:813,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 817
    functionName: client_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 39
    functionsReached:
    - DLLIST_REMOVE
    - http_server_connection_close
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void client_deinit(struct client **_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - context
    - ATTR_UNUSED
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 826
    functionName: client_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 4
    functionsReached:
    - client_deinit
    linkageType: ''
    returnType: void
    signature: void client_connection_destroy(void *context, const char *reason ATTR_UNUSED)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-http/test-http-payload.c:834,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:839,1
    - Dst: client_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:842,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 828
    functionDepth: 3
    functionLinenumber: 828
    functionLinenumberEnd: 844
    functionName: client_accept
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - client_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void client_accept(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_final_trickle
      Src: /src/dovecot/src/lib-http/test-http-payload.c:850,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:851,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 853
    functionName: test_http_server_connection_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - o_stream_create_final_trickle
    linkageType: ''
    returnType: void
    signature: void test_http_server_connection_init(struct connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-http/test-http-payload.c:861,1
    - Dst: http_server_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:863,1
    - Dst: http_server_set_ssl_settings
      Src: /src/dovecot/src/lib-http/test-http-payload.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - server_set
    - ssl
    argTypes:
    - struct http_server_settings*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 866
    functionName: test_server_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 6
    functionsReached:
    - http_server_init
    - http_server_set_ssl_settings
    - io_add
    linkageType: ''
    returnType: void
    signature: "void test_server_init(const struct http_server_settings *server_set,\n\t\t\t
      \    const struct ssl_iostream_settings *ssl)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:871,1
    - Dst: http_server_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 868
    functionDepth: 5
    functionLinenumber: 868
    functionLinenumberEnd: 875
    functionName: test_server_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 6
    functionsReached:
    - io_remove
    - http_server_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-payload.c:904,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-http/test-http-payload.c:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 910
    functionName: test_client_request_new
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - i_new
    linkageType: ''
    returnType: struct test_client_request
    signature: 'struct test_client_request *

      test_client_request_new(struct http_client *client)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tcreq
    argTypes:
    - struct test_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 912
    functionDepth: 0
    functionLinenumber: 912
    functionLinenumberEnd: 915
    functionName: test_client_request_ref
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_client_request_ref(struct test_client_request *tcreq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:923,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:927,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:928,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:929,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:930,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-http/test-http-payload.c:932,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-payload.c:933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _tcreq
    argTypes:
    - struct test_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 917
    functionDepth: 5
    functionLinenumber: 917
    functionLinenumberEnd: 934
    functionName: test_client_request_unref
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - i_free
    - io_remove
    - i_stream_unref
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void test_client_request_unref(struct test_client_request **_tcreq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tcreq
    argTypes:
    - struct test_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 936
    functionDepth: 6
    functionLinenumber: 936
    functionLinenumberEnd: 939
    functionName: test_client_request_destroy
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_client_request_unref
    linkageType: ''
    returnType: void
    signature: void test_client_request_destroy(struct test_client_request *tcreq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:945,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/test-http-payload.c:948,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/test-http-payload.c:950,1
    - Dst: io_loop_move_io
      Src: /src/dovecot/src/lib-http/test-http-payload.c:955,1
    - Dst: i_stream_switch_ioloop
      Src: /src/dovecot/src/lib-http/test-http-payload.c:957,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - prev_ioloop ATTR_UNUSED
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 941
    functionDepth: 8
    functionLinenumber: 941
    functionLinenumberEnd: 959
    functionName: test_client_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - e_debug
    - io_loop_move_io
    - i_stream_switch_ioloop
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: void test_client_switch_ioloop(struct ioloop *prev_ioloop ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:965,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-payload.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 961
    functionDepth: 6
    functionLinenumber: 961
    functionLinenumberEnd: 967
    functionName: test_client_progress_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_progress_timeout(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:971,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-http/test-http-payload.c:973,1
    - Dst: io_loop_add_switch_callback
      Src: /src/dovecot/src/lib-http/test-http-payload.c:978,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 969
    functionDepth: 3
    functionLinenumber: 969
    functionLinenumberEnd: 979
    functionName: test_client_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 3
    functionsReached:
    - timeout_add
    - i_assert
    - io_loop_add_switch_callback
    linkageType: ''
    returnType: void
    signature: void test_client_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:986,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-payload.c:987,1
    - Dst: io_loop_remove_switch_callback
      Src: /src/dovecot/src/lib-http/test-http-payload.c:991,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:992,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:993,1
    - Dst: http_client_global_context_free
      Src: /src/dovecot/src/lib-http/test-http-payload.c:995,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 981
    functionDepth: 6
    functionLinenumber: 981
    functionLinenumberEnd: 996
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 7
    functionsReached:
    - http_client_deinit
    - http_client_global_context_free
    - i_free
    - io_loop_remove_switch_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: old_test_http_client_connection_connected
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1004,1
    - Dst: o_stream_create_final_trickle
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1009,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1001
    functionDepth: 2
    functionLinenumber: 1001
    functionLinenumberEnd: 1012
    functionName: test_http_client_connection_connected
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 1
    functionsReached:
    - old_test_http_client_connection_connected
    - o_stream_unref
    - o_stream_create_final_trickle
    linkageType: ''
    returnType: void
    signature: void test_http_client_connection_connected(struct connection *conn,
      bool success)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_client_context_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1022,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1026,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1029,1
    - Dst: http_client_init_shared
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1030,1
    - Dst: http_client_set_ssl_settings
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1031,1
    - Dst: http_client_context_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1041,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - client_set
    - ssl_client_set
    argTypes:
    - struct http_client_settings*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1014
    functionDepth: 1
    functionLinenumber: 1014
    functionLinenumberEnd: 1042
    functionName: test_client_create_clients
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - http_client_context_create
    - http_client_init
    - http_client_init_shared
    - i_new
    - http_client_context_unref
    - http_client_set_ssl_settings
    linkageType: ''
    returnType: void
    signature: "void test_client_create_clients(const struct http_client_settings
      *client_set,\n\t\t\t   const struct ssl_iostream_settings *ssl_client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1054,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1055,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1056,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1057,1
    - Dst: test_client_download_continue
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - tcreq
    argTypes:
    - struct test_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1048
    functionDepth: 1
    functionLinenumber: 1048
    functionLinenumberEnd: 1061
    functionName: test_client_download_finished
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - test_client_download_continue
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_client_download_finished(struct test_client_request *tcreq)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1072,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1075,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1076,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1080,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1084,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1085,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1088,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1092,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1097,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1099,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1101,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1105,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1109,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1111,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1113,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1114,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1115,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1118,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1122,1
    - Dst: test_client_download_finished
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1129,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1132,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1133,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1134,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 1
    argNames:
    - tcreq
    argTypes:
    - struct test_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1063
    functionDepth: 7
    functionLinenumber: 1063
    functionLinenumberEnd: 1136
    functionName: test_client_download_payload_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - e_debug
    - test_client_download_finished
    - i_stream_have_bytes_left
    - i_fatal
    - timeout_reset
    - io_remove
    - i_stream_skip
    - i_stream_get_error
    - memcmp
    - i_stream_unref
    - i_stream_get_name
    - i_stream_read
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void test_client_download_payload_input(struct test_client_request
      *tcreq)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1148,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1152,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1155,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1156,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1158,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1160,1
    - Dst: test_file_open
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1163,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1164,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1167,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1174,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1177,1
    - Dst: test_client_download_finished
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1178,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1183,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1185,1
    - Dst: test_client_download_finished
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1190,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1192,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1197,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1199,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1201,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1204,1
    - Dst: test_client_download_payload_input
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - resp
    - tcreq
    argTypes:
    - struct http_response*
    - struct test_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1138
    functionDepth: 8
    functionLinenumber: 1138
    functionLinenumberEnd: 1207
    functionName: test_client_download_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_file_open
    - io_add_istream
    - e_debug
    - array_get_modifiable
    - i_stream_create_limit
    - timeout_reset
    - i_fatal
    - i_stream_ref
    - i_stream_unref
    - test_client_download_finished
    - test_client_download_payload_input
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_download_response(const struct http_response *resp,\n\t\t\t
      \     struct test_client_request *tcreq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1216,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1217,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1218,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1220,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1224,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1228,1
    - Dst: test_client_request_new
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1239,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1242,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1244,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1245,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1246,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1248,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1249,1
    - Dst: http_client_request_set_destroy_callback
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1250,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1252,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1209
    functionDepth: 8
    functionLinenumber: 1209
    functionLinenumberEnd: 1254
    functionName: test_client_download_continue
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 1
    functionsReached:
    - http_client_request_set_ssl
    - http_client_request_set_destroy_callback
    - test_client_request_new
    - e_debug
    - http_client_request_set_port
    - array_get
    - http_client_request_submit
    - io_loop_stop
    - net_ip2addr
    - http_client_request
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: void test_client_download_continue(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_create_clients
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1260,1
    - Dst: test_client_download_continue
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - client_set
    - ssl_client_set
    argTypes:
    - struct http_client_settings*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1256
    functionDepth: 9
    functionLinenumber: 1256
    functionLinenumberEnd: 1265
    functionName: test_client_download
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_client_download_continue
    - test_client_create_clients
    linkageType: ''
    returnType: void
    signature: "void test_client_download(const struct http_client_settings *client_set,\n\t\t\t\t
      const struct ssl_iostream_settings *ssl_client_set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1277,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1278,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1279,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1280,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1287,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1293,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - tcreq
    argTypes:
    - struct test_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1271
    functionDepth: 1
    functionLinenumber: 1271
    functionLinenumberEnd: 1296
    functionName: test_client_echo_finished
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - timeout_add_short
    - i_assert
    - e_debug
    linkageType: ''
    returnType: void
    signature: void test_client_echo_finished(struct test_client_request *tcreq)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1306,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1309,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1310,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1314,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1318,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1319,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1322,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1326,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1331,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1333,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1335,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1339,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1343,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1345,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1347,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1348,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1349,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1352,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1356,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1362,1
    - Dst: test_client_echo_finished
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1363,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1366,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1367,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 1
    argNames:
    - tcreq
    argTypes:
    - struct test_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1298
    functionDepth: 7
    functionLinenumber: 1298
    functionLinenumberEnd: 1369
    functionName: test_client_echo_payload_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - e_debug
    - io_remove
    - i_stream_have_bytes_left
    - i_fatal
    - timeout_reset
    - i_stream_skip
    - i_stream_get_error
    - memcmp
    - i_stream_unref
    - i_stream_get_name
    - test_client_echo_finished
    - i_stream_read
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void test_client_echo_payload_input(struct test_client_request *tcreq)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1380,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1384,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1386,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1387,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1388,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1390,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1392,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1396,1
    - Dst: test_file_open
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1401,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1403,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1409,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1410,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1416,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1417,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1423,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1425,1
    - Dst: test_client_echo_finished
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1426,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1430,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1433,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1435,1
    - Dst: test_client_echo_payload_input
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1437,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 2
    argNames:
    - resp
    - tcreq
    argTypes:
    - struct http_response*
    - struct test_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1371
    functionDepth: 8
    functionLinenumber: 1371
    functionLinenumberEnd: 1438
    functionName: test_client_echo_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_file_open
    - test_client_echo_payload_input
    - i_stream_create_crlf
    - io_add_istream
    - e_debug
    - array_get_modifiable
    - i_stream_create_limit
    - i_fatal
    - timeout_reset
    - i_stream_ref
    - i_stream_unref
    - test_client_echo_finished
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_echo_response(const struct http_response *resp,\n\t\t\t
      \ struct test_client_request *tcreq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1445,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1447,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1450,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - hreq
    - fstream
    argTypes:
    - struct test_client_request*
    - struct http_client_request*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1440
    functionDepth: 4
    functionLinenumber: 1440
    functionLinenumberEnd: 1452
    functionName: test_client_echo_nonblocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - i_stream_seek
    - http_client_request_set_payload
    - http_client_request_submit
    linkageType: ''
    returnType: void
    signature: "void test_client_echo_nonblocking(struct test_client_request *tcreq
      ATTR_UNUSED,\n\t\t\t     struct http_client_request *hreq,\n\t\t\t     struct
      istream *fstream)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_ref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1463,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1466,1
    - Dst: http_client_request_send_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1467,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1468,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1471,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1473,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1475,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1477,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1478,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1480,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1481,1
    - Dst: http_client_request_finish_payload
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1487,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1488,1
    - Dst: http_client_wait
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1492,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1494,1
    - Dst: test_client_echo_finished
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1497,1
    - Dst: test_client_request_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1498,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - tcreq
    - hreq
    - fstream
    argTypes:
    - struct test_client_request*
    - struct http_client_request*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1454
    functionDepth: 7
    functionLinenumber: 1454
    functionLinenumberEnd: 1499
    functionName: test_client_echo_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_client_echo_finished
    - http_client_request_send_payload
    - e_debug
    - i_stream_have_bytes_left
    - i_fatal
    - http_client_wait
    - test_client_request_unref
    - i_stream_skip
    - i_stream_get_error
    - i_stream_get_name
    - http_client_request_finish_payload
    - i_assert
    - i_stream_read_more
    - test_client_request_ref
    linkageType: ''
    returnType: void
    signature: "void test_client_echo_blocking(struct test_client_request *tcreq,\n\t\t\t
      \ struct http_client_request *hreq,\n\t\t\t  struct istream *fstream)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1511,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1513,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1515,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1516,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1518,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1522,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1527,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1534,1
    - Dst: test_file_open
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1550,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1553,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1558,1
    - Dst: i_stream_create_crlf
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1564,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1565,1
    - Dst: test_client_request_new
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1569,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1572,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1573,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1574,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1576,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1577,1
    - Dst: http_client_request_set_destroy_callback
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1578,1
    - Dst: test_client_echo_nonblocking
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1582,1
    - Dst: test_client_echo_blocking
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1584,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1585,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1595,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1606,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1607,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1610,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1616,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1629,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1636,1
    - Dst: http_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1638,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1640,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1642,1
    - Dst: http_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1644,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1645,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1646,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1651,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1657,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 94
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1501
    functionDepth: 12
    functionLinenumber: 1501
    functionLinenumberEnd: 1661
    functionName: test_client_echo_continue
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_destroy_callback
    - test_client_request_new
    - i_stream_create_crlf
    - test_client_echo_blocking
    - timeout_add_short
    - io_loop_destroy
    - http_client_request
    - io_loop_run
    - http_client_request_set_ssl
    - http_client_switch_ioloop
    - net_ip2addr
    - test_file_open
    - array_get_modifiable
    - io_loop_set_current
    - test_client_echo_nonblocking
    - io_loop_stop
    - i_assert
    - e_debug
    - http_client_request_set_port
    - io_loop_create
    - i_stream_unref
    - t_strconcat
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_echo_continue(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_create_clients
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1667,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1672,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - client_set
    - ssl_client_set
    argTypes:
    - struct http_client_settings*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1674
      start: 1663
    functionDepth: 2
    functionLinenumber: 1663
    functionLinenumberEnd: 1674
    functionName: test_client_echo
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - i_assert
    - test_client_create_clients
    linkageType: ''
    returnType: void
    signature: "void test_client_echo(const struct http_client_settings *client_set,\n\t\t\t
      \    const struct ssl_iostream_settings *ssl_client_set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1687,1
    - Dst: net_listen
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1688,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1690,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1691,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1685
    functionDepth: 6
    functionLinenumber: 1685
    functionLinenumberEnd: 1694
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 8
    functionsReached:
    - i_close_fd
    - i_fatal
    - net_ip2addr
    - net_set_nonblock
    - net_listen
    linkageType: ''
    returnType: void
    signature: void test_open_server_fd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1702,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1704,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1708,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1709,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1710,1
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1711,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1712,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1714,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1716,1
    - Dst: test_files_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1717,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_server_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1696
    functionDepth: 12
    functionLinenumber: 1696
    functionLinenumberEnd: 1720
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 1
    functionsReached:
    - test_server_init
    - e_debug
    - i_close_fd
    - test_server_deinit
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - test_files_deinit
    - main_deinit
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: int test_run_server(struct test_server_data *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1731,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1733,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1737,1
    - Dst: test_client_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1738,1
    - Dst: client_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1739,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1740,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1741,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1742,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - client_set
    - ssl_client_set
    argTypes:
    - struct http_client_settings*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1722
    functionDepth: 12
    functionLinenumber: 1722
    functionLinenumberEnd: 1745
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 7
    functionsReached:
    - test_client_deinit
    - e_debug
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - client_init
    - io_loop_run
    - test_client_init
    linkageType: ''
    returnType: void
    signature: "void test_run_client(\n\tconst struct http_client_settings *client_set,\n\tconst
      struct ssl_iostream_settings *ssl_client_set,\n\tvoid (*client_init)(const struct
      http_client_settings *client_set,\n\t\t\t    const struct ssl_iostream_settings
      *ssl_client_set))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_files_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1760,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1762,1
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1767,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1768,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1769,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1772,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1774,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1775,1
    - Dst: test_files_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - client_set
    - ssl_client_set
    - server_set
    - ssl_server_set
    argTypes:
    - struct http_client_settings*
    - struct ssl_iostream_settings*
    - struct http_server_settings*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1747
    functionDepth: 4
    functionLinenumber: 1747
    functionLinenumberEnd: 1777
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 93
    functionsReached:
    - i_zero
    - test_subprocess_fork
    - i_close_fd
    - test_subprocess_kill_all
    - test_files_init
    - test_files_deinit
    - test_open_server_fd
    - test_run_client
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(\n\tconst struct http_client_settings
      *client_set,\n\tconst struct ssl_iostream_settings *ssl_client_set,\n\tconst
      struct http_server_settings *server_set,\n\tconst struct ssl_iostream_settings
      *ssl_server_set,\n\tvoid (*client_init)(const struct http_client_settings *client_set,\n\t\t\t
      \   const struct ssl_iostream_settings *ssl_client_set))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_settings_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - server_set_r
    argTypes:
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1789
      start: 1779
    functionDepth: 1
    functionLinenumber: 1779
    functionLinenumberEnd: 1789
    functionName: test_init_server_settings
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - http_server_settings_init
    linkageType: ''
    returnType: void
    signature: void test_init_server_settings(struct http_server_settings *server_set_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_settings_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - client_set_r
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1791
    functionDepth: 1
    functionLinenumber: 1791
    functionLinenumberEnd: 1805
    functionName: test_init_client_settings
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - http_client_settings_init
    linkageType: ''
    returnType: void
    signature: void test_init_client_settings(struct http_client_settings *client_set_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1819,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1820,1
    - Dst: test_init_server_settings
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1823,1
    - Dst: test_init_client_settings
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1826,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1830,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1833,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1807
    functionDepth: 2
    functionLinenumber: 1807
    functionLinenumberEnd: 1836
    functionName: test_run_sequential
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - test_init_server_settings
    - ssl_iostream_test_settings_server
    - test_init_client_settings
    - test_run_client_server
    - ssl_iostream_test_settings_client
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: "void test_run_sequential(\n\tvoid (*client_init)(const struct http_client_settings
      *client_set,\n\t\t\t    const struct ssl_iostream_settings *ssl_client_set))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1850,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1851,1
    - Dst: test_init_server_settings
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1854,1
    - Dst: test_init_client_settings
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1858,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1862,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1865,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1838
    functionDepth: 2
    functionLinenumber: 1838
    functionLinenumberEnd: 1868
    functionName: test_run_pipeline
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - test_init_server_settings
    - ssl_iostream_test_settings_server
    - test_init_client_settings
    - test_run_client_server
    - ssl_iostream_test_settings_client
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: "void test_run_pipeline(\n\tvoid (*client_init)(const struct http_client_settings
      *client_set,\n\t\t\t    const struct ssl_iostream_settings *ssl_client_set))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_test_settings_server
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1882,1
    - Dst: ssl_iostream_test_settings_client
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1883,1
    - Dst: test_init_server_settings
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1886,1
    - Dst: test_init_client_settings
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1890,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1894,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1897,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1870
    functionDepth: 2
    functionLinenumber: 1870
    functionLinenumberEnd: 1900
    functionName: test_run_parallel
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - test_init_server_settings
    - ssl_iostream_test_settings_server
    - test_init_client_settings
    - test_run_client_server
    - ssl_iostream_test_settings_client
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: "void test_run_parallel(\n\tvoid (*client_init)(const struct http_client_settings
      *client_set,\n\t\t\t    const struct ssl_iostream_settings *ssl_client_set))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1904,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1905,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1906,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1907,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1908,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1909,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1911,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1912,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1914,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1915,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1916,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1917,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1919,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1920,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1922,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1923,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1924,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1902
    functionDepth: 3
    functionLinenumber: 1902
    functionLinenumberEnd: 1926
    functionName: test_download_server_nonblocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_download_server_nonblocking(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1930,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1931,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1933,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1934,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1935,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1928
    functionDepth: 3
    functionLinenumber: 1928
    functionLinenumberEnd: 1937
    functionName: test_download_server_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_download_server_blocking(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1941,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1943,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1944,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1945,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1946,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1947,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1949,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1951,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1953,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1954,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1955,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1956,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1958,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1960,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1962,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1963,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1964,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1965,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1967,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1969,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1972,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1973,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1974,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1975,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1977,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1979,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1983,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1984,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1985,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1986,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1988,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1990,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1994,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1995,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1996,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1997,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:1999,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2001,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2003,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2004,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2005,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2006,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2008,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2010,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2013,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2014,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2015,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 1939
    functionDepth: 3
    functionLinenumber: 1939
    functionLinenumberEnd: 2017
    functionName: test_echo_server_nonblocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_server_nonblocking(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2021,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2022,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2024,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2025,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2026,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2027,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2029,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2030,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2033,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2034,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2035,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2036,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2038,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2039,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2043,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2044,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2045,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 2019
    functionDepth: 3
    functionLinenumber: 2019
    functionLinenumberEnd: 2047
    functionName: test_echo_server_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_server_blocking(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2051,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2053,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2055,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2056,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2057,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2058,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2060,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2062,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2065,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2066,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2067,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2068,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2070,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2072,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2075,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2076,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2077,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2079
      start: 2049
    functionDepth: 3
    functionLinenumber: 2049
    functionLinenumberEnd: 2079
    functionName: test_echo_server_nonblocking_sync
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_server_nonblocking_sync(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2083,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2084,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2087,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2088,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2089,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2090,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2092,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2094,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2098,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2099,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2100,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2102
      start: 2081
    functionDepth: 3
    functionLinenumber: 2081
    functionLinenumberEnd: 2102
    functionName: test_echo_server_blocking_sync
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_server_blocking_sync(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2106,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2108,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2110,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2111,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2112,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2113,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2114,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2116,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2118,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2119,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2120,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2121,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2123,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2125,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2128,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2129,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2130,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2131,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2132,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2134,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2137,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2138,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2139,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2140,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2142,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2144,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2147,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2148,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2149,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2150,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2151,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2153,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2156,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2157,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2158,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2159,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2161,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2163,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2166,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2167,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2168,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2169,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2170,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2172,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2175,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2176,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2177,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2178,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2180,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2182,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2186,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2187,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2188,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2189,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2190,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2192,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2196,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2197,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2198,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2200
      start: 2104
    functionDepth: 3
    functionLinenumber: 2104
    functionLinenumberEnd: 2200
    functionName: test_echo_server_nonblocking_partial
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_server_nonblocking_partial(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2204,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2205,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2208,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2209,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2210,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2211,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2212,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2213,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2216,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2217,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2218,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2219,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2221,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2223,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2228,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2229,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2230,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2231,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2232,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2234,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2239,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2240,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2241,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2202
    functionDepth: 3
    functionLinenumber: 2202
    functionLinenumberEnd: 2243
    functionName: test_echo_server_blocking_partial
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_server_blocking_partial(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2247,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2248,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2250,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2251,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2252,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2253,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2254,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2255,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2257,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2258,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2259,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2261
      start: 2245
    functionDepth: 3
    functionLinenumber: 2245
    functionLinenumberEnd: 2261
    functionName: test_download_client_partial
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_download_client_partial(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2265,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2266,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2268,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2270
      start: 2263
    functionDepth: 3
    functionLinenumber: 2263
    functionLinenumberEnd: 2270
    functionName: test_download_client_nested_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_parallel
    - test_init_defaults
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_download_client_nested_ioloop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2274,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2276,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2278,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2280,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2282,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2283,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2285,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2287,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2290,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2292,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2294,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2295,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2297,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2299,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2301,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2303,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2305,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2306,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2308,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2310,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2314,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2316,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2318,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2319,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2321,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2323,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2326,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2329,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2332,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2334
      start: 2272
    functionDepth: 3
    functionLinenumber: 2272
    functionLinenumberEnd: 2334
    functionName: test_echo_client_shared
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_client_shared(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2338,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2339,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2341,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2342,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2343,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2344,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2346,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2347,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2350,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2351,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2352,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2353,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2355,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2356,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2360,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2361,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2362,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2363,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2365,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2366,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2370,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2371,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2372,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2373,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2375,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2376,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2380,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2381,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2382,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2336
    functionDepth: 3
    functionLinenumber: 2336
    functionLinenumberEnd: 2384
    functionName: test_echo_ssl
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_ssl(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2388,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2389,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2391,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2392,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2393,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2394,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2396,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2397,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2400,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2402,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2404,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2405,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2407,1
    - Dst: test_init_defaults
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2408,1
    - Dst: test_run_sequential
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2412,1
    - Dst: test_run_pipeline
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2415,1
    - Dst: test_run_parallel
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2418,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2420
      start: 2386
    functionDepth: 3
    functionLinenumber: 2386
    functionLinenumberEnd: 2420
    functionName: test_echo_client_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 0
    functionsReached:
    - test_init_defaults
    - test_end
    - test_run_sequential
    - test_run_parallel
    - test_run_pipeline
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_echo_client_blocking(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_openssl_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2445,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2447,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2448,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2449,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2450,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2452,1
    - Dst: test_dir_get
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2453
      start: 2443
    functionDepth: 4
    functionLinenumber: 2443
    functionLinenumberEnd: 2453
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 19
    functionsReached:
    - event_create
    - event_set_append_log_prefix
    - i_strdup
    - test_dir_get
    - ssl_iostream_openssl_init
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2457,1
    - Dst: ssl_iostream_openssl_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2458,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2459,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2460,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2464
      start: 2455
    functionDepth: 4
    functionLinenumber: 2455
    functionLinenumberEnd: 2464
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 29
    functionsReached:
    - ssl_iostream_openssl_deinit
    - i_free
    - event_unref
    - ssl_iostream_context_cache_free
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2471,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2473,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2482,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2486,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2487,1
    - Dst: test_dir_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2488,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2489,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2490,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2493,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2495,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2497,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2499,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-http/test-http-payload.c:2500,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2502
      start: 2466
    functionDepth: 7
    functionLinenumber: 2466
    functionLinenumberEnd: 2502
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-payload.c
    functionUses: 25
    functionsReached:
    - i_zero
    - event_set_forced_debug
    - main_init
    - getopt
    - lib_init
    - test_dir_init
    - lib_deinit
    - i_fatal
    - test_run
    - htonl
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:853,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:855,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-url.c:855,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:857,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:858,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:860,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:862,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-url.c:862,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:865,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:867,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-url.c:867,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:870,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:872,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-url.c:872,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:877,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:879,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-url.c:879,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:882,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:884,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-url.c:884,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:887,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-url.c:889,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-url.c:889,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 2
    argNames:
    - urlt
    - urlp
    argTypes:
    - struct http_url*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 892
    functionName: test_http_url_equal
    functionSourceFile: /src/dovecot/src/lib-http/test-http-url.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_http_url_equal(struct http_url *urlt, struct http_url *urlp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-url.c:906,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-url.c:906,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/lib-http/test-http-url.c:909,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-http/test-http-url.c:909,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-url.c:913,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-url.c:913,1
    - Dst: test_http_url_equal
      Src: /src/dovecot/src/lib-http/test-http-url.c:916,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-url.c:918,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 894
    functionDepth: 11
    functionLinenumber: 894
    functionLinenumberEnd: 919
    functionName: test_http_url_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-url.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - test_http_url_equal
    - test_out_reason
    - t_strdup_printf
    - test_end
    - pool_datastack_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_url_valid(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-url.c:1011,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-url.c:1011,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/lib-http/test-http-url.c:1013,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-http/test-http-url.c:1014,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-url.c:1016,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-url.c:1016,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-url.c:1019,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 997
    functionDepth: 11
    functionLinenumber: 997
    functionLinenumberEnd: 1020
    functionName: test_http_url_invalid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-url.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - test_out_reason
    - t_strdup_printf
    - test_end
    - pool_datastack_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_url_invalid(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-url.c:1050,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-url.c:1050,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/lib-http/test-http-url.c:1052,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-http/test-http-url.c:1054,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-url.c:1056,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-url.c:1056,1
    - Dst: http_url_create
      Src: /src/dovecot/src/lib-http/test-http-url.c:1059,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-url.c:1060,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-url.c:1060,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-url.c:1061,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-url.c:1064,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1041
    functionDepth: 11
    functionLinenumber: 1041
    functionLinenumberEnd: 1065
    functionName: test_http_url_parse_create
    functionSourceFile: /src/dovecot/src/lib-http/test-http-url.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - strcmp
    - test_out_reason
    - t_strdup_printf
    - test_end
    - test_out
    - pool_datastack_create
    - http_url_create
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_url_parse_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-url.c:1077,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1069
    functionDepth: 7
    functionLinenumber: 1069
    functionLinenumberEnd: 1078
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-url.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: http_date_parse_sp
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int http_date_parse_sp(struct http_date_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-http/http-date.c:108,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-http/http-date.c:115,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - parser
    - digits
    - number_r
    argTypes:
    - struct http_date_parser*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 121
    functionName: http_date_parse_number
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: "int http_date_parse_number(struct http_date_parser *parser,\n\t\t\t
      \ int digits, int *number_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_isalpha
      Src: /src/dovecot/src/lib-http/http-date.c:130,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-date.c:133,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-date.c:134,1
    - Dst: i_isalpha
      Src: /src/dovecot/src/lib-http/http-date.c:138,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-date.c:140,1
    - Dst: i_isalpha
      Src: /src/dovecot/src/lib-http/http-date.c:144,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 3
    argNames:
    - parser
    - maxchars
    - word_r
    argTypes:
    - struct http_date_parser*
    - int
    - string_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 123
    functionDepth: 4
    functionLinenumber: 123
    functionLinenumberEnd: 148
    functionName: http_date_parse_word
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - i_isalpha
    - str_append_c
    linkageType: ''
    returnType: int
    signature: "int http_date_parse_word(struct http_date_parser *parser,\n\t\t\t
      \ int maxchars, string_t **word_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_number
      Src: /src/dovecot/src/lib-http/http-date.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 160
    functionName: http_date_parse_year
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - http_date_parse_number
    linkageType: ''
    returnType: int
    signature: int http_date_parse_year(struct http_date_parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_word
      Src: /src/dovecot/src/lib-http/http-date.c:168,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-date.c:168,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-date.c:172,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-date.c:172,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 162
    functionDepth: 5
    functionLinenumber: 162
    functionLinenumberEnd: 181
    functionName: http_date_parse_month
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - str_len
    - http_date_parse_word
    linkageType: ''
    returnType: int
    signature: int http_date_parse_month(struct http_date_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_number
      Src: /src/dovecot/src/lib-http/http-date.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 190
    functionName: http_date_parse_day
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - http_date_parse_number
    linkageType: ''
    returnType: int
    signature: int http_date_parse_day(struct http_date_parser *parser)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_number
      Src: /src/dovecot/src/lib-http/http-date.c:203,1
    - Dst: http_date_parse_number
      Src: /src/dovecot/src/lib-http/http-date.c:212,1
    - Dst: http_date_parse_number
      Src: /src/dovecot/src/lib-http/http-date.c:221,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 224
    functionName: http_date_parse_time_of_day
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - http_date_parse_number
    linkageType: ''
    returnType: int
    signature: int http_date_parse_time_of_day(struct http_date_parser *parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:235,1
    - Dst: http_date_parse_time_of_day
      Src: /src/dovecot/src/lib-http/http-date.c:237,1
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:241,1
    - Dst: http_date_parse_word
      Src: /src/dovecot/src/lib-http/http-date.c:243,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-date.c:244,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-date.c:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 226
    functionDepth: 5
    functionLinenumber: 226
    functionLinenumberEnd: 247
    functionName: http_date_parse_time_gmt
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - http_date_parse_word
    - http_date_parse_sp
    - http_date_parse_time_of_day
    linkageType: ''
    returnType: int
    signature: int http_date_parse_time_gmt(struct http_date_parser *parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:264,1
    - Dst: http_date_parse_day
      Src: /src/dovecot/src/lib-http/http-date.c:266,1
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:270,1
    - Dst: http_date_parse_month
      Src: /src/dovecot/src/lib-http/http-date.c:272,1
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:276,1
    - Dst: http_date_parse_year
      Src: /src/dovecot/src/lib-http/http-date.c:278,1
    - Dst: http_date_parse_time_gmt
      Src: /src/dovecot/src/lib-http/http-date.c:282,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 249
    functionDepth: 6
    functionLinenumber: 249
    functionLinenumberEnd: 283
    functionName: http_date_parse_format_imf_fixdate
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - http_date_parse_day
    - http_date_parse_month
    - http_date_parse_sp
    - http_date_parse_year
    - http_date_parse_time_gmt
    linkageType: ''
    returnType: int
    signature: int http_date_parse_format_imf_fixdate(struct http_date_parser *parser)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:300,1
    - Dst: http_date_parse_day
      Src: /src/dovecot/src/lib-http/http-date.c:304,1
    - Dst: http_date_parse_month
      Src: /src/dovecot/src/lib-http/http-date.c:313,1
    - Dst: http_date_parse_number
      Src: /src/dovecot/src/lib-http/http-date.c:322,1
    - Dst: http_date_parse_time_gmt
      Src: /src/dovecot/src/lib-http/http-date.c:328,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 285
    functionDepth: 6
    functionLinenumber: 285
    functionLinenumberEnd: 329
    functionName: http_date_parse_format_rfc850
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - http_date_parse_number
    - http_date_parse_day
    - http_date_parse_month
    - http_date_parse_sp
    - http_date_parse_time_gmt
    linkageType: ''
    returnType: int
    signature: int http_date_parse_format_rfc850(struct http_date_parser *parser)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_month
      Src: /src/dovecot/src/lib-http/http-date.c:345,1
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:349,1
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:353,1
    - Dst: http_date_parse_number
      Src: /src/dovecot/src/lib-http/http-date.c:356,1
    - Dst: http_date_parse_number
      Src: /src/dovecot/src/lib-http/http-date.c:359,1
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:364,1
    - Dst: http_date_parse_time_of_day
      Src: /src/dovecot/src/lib-http/http-date.c:366,1
    - Dst: http_date_parse_sp
      Src: /src/dovecot/src/lib-http/http-date.c:370,1
    - Dst: http_date_parse_year
      Src: /src/dovecot/src/lib-http/http-date.c:373,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 331
    functionDepth: 6
    functionLinenumber: 331
    functionLinenumberEnd: 374
    functionName: http_date_parse_format_asctime
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - http_date_parse_number
    - http_date_parse_month
    - http_date_parse_sp
    - http_date_parse_year
    - http_date_parse_time_of_day
    linkageType: ''
    returnType: int
    signature: int http_date_parse_format_asctime(struct http_date_parser *parser)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse_word
      Src: /src/dovecot/src/lib-http/http-date.c:392,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-date.c:395,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-date.c:398,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-date.c:398,1
    - Dst: http_date_parse_format_rfc850
      Src: /src/dovecot/src/lib-http/http-date.c:404,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-date.c:409,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-date.c:409,1
    - Dst: http_date_parse_format_asctime
      Src: /src/dovecot/src/lib-http/http-date.c:420,1
    - Dst: http_date_parse_format_imf_fixdate
      Src: /src/dovecot/src/lib-http/http-date.c:428,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_date_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 376
    functionDepth: 7
    functionLinenumber: 376
    functionLinenumberEnd: 429
    functionName: http_date_parse_format_any
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - str_len
    - http_date_parse_format_asctime
    - http_date_parse_format_imf_fixdate
    - http_date_parse_word
    - http_date_parse_format_rfc850
    linkageType: ''
    returnType: int
    signature: int http_date_parse_format_any(struct http_date_parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-date.c:437,1
    - Dst: http_date_parse_format_any
      Src: /src/dovecot/src/lib-http/http-date.c:441,1
    - Dst: utc_mktime
      Src: /src/dovecot/src/lib-http/http-date.c:448,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - data
    - size
    - timestamp_r
    argTypes:
    - unsigned char*
    - size_t
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 431
    functionDepth: 8
    functionLinenumber: 431
    functionLinenumberEnd: 454
    functionName: http_date_parse
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 1
    functionsReached:
    - i_zero
    - http_date_parse_format_any
    - utc_mktime
    linkageType: ''
    returnType: bool
    signature: "bool http_date_parse(const unsigned char *data, size_t size,\n\t\t\ttime_t
      *timestamp_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse
      Src: /src/dovecot/src/lib-http/http-date.c:462,1
    - Dst: gmtime
      Src: /src/dovecot/src/lib-http/http-date.c:465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - data
    - size
    - tm_r
    argTypes:
    - unsigned char*
    - size_t
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 456
    functionDepth: 9
    functionLinenumber: 456
    functionLinenumberEnd: 468
    functionName: http_date_parse_tm
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 2
    functionsReached:
    - gmtime
    - http_date_parse
    linkageType: ''
    returnType: bool
    signature: "bool http_date_parse_tm(const unsigned char *data, size_t size,\n\t\t\t
      \  struct tm *tm_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-date.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 470
    functionDepth: 11
    functionLinenumber: 470
    functionLinenumberEnd: 478
    functionName: http_date_create_tm
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *http_date_create_tm(struct tm *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gmtime
      Src: /src/dovecot/src/lib-http/http-date.c:483,1
    - Dst: http_date_create_tm
      Src: /src/dovecot/src/lib-http/http-date.c:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 480
    functionDepth: 12
    functionLinenumber: 480
    functionLinenumberEnd: 486
    functionName: http_date_create
    functionSourceFile: /src/dovecot/src/lib-http/http-date.c
    functionUses: 0
    functionsReached:
    - gmtime
    - http_date_create_tm
    linkageType: ''
    returnType: char
    signature: char *http_date_create(time_t timestamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: test_slow_request_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_slow_request_input(struct client_connection *conn ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 98
    functionName: test_slow_request_connected
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_slow_request_connected(struct client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: test_client_slow_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_slow_request(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:117,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:118,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:119,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _slow_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 6
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: test_server_slow_request_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_slow_request_destroyed(struct _slow_request *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:128,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:129,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _slow_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 133
    functionName: test_server_slow_request_delayed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - http_server_response_create
    - http_server_request_unref
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void test_server_slow_request_delayed(struct _slow_request *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:137,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:141,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:146,1
    - Dst: http_server_request_set_destroy_callback
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:149,1
    - Dst: http_server_request_ref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:152,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 155
    functionName: test_server_slow_request_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - http_server_request_set_destroy_callback
    - i_new
    - http_server_request_get
    - i_debug
    - http_server_request_ref
    linkageType: ''
    returnType: void
    signature: void test_server_slow_request_request(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: test_server_slow_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_slow_request(const struct http_server_settings *server_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:170,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:173,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:174,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 177
    functionName: test_slow_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_slow_request(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 194
    functionName: test_hanging_request_payload_connected
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_hanging_request_payload_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 200
    functionName: test_client_hanging_request_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_hanging_request_payload(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:215,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:216,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:217,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _hanging_request_payload*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 211
    functionDepth: 5
    functionLinenumber: 211
    functionLinenumberEnd: 219
    functionName: test_server_hanging_request_payload_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - io_remove
    - io_loop_stop
    - i_free
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_server_hanging_request_payload_destroyed(\n\tstruct _hanging_request_payload
      *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:231,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:233,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:235,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:241,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:242,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:244,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:245,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:246,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:247,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:251,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:253,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:254,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:257,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:258,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _hanging_request_payload*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 221
    functionDepth: 5
    functionLinenumber: 221
    functionLinenumberEnd: 259
    functionName: test_server_hanging_request_payload_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - io_remove
    - http_server_response_create
    - i_stream_skip
    - i_debug
    - i_stream_get_error
    - http_server_request_fail_close
    - i_stream_unref
    - i_assert
    - i_stream_read_data
    - http_server_request_unref
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void test_server_hanging_request_payload_input(struct _hanging_request_payload
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:264,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:268,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:273,1
    - Dst: http_server_request_set_destroy_callback
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:276,1
    - Dst: http_server_request_get_payload_input
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:279,1
    - Dst: http_server_request_ref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:281,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:282,1
    - Dst: test_server_hanging_request_payload_input
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 261
    functionDepth: 6
    functionLinenumber: 261
    functionLinenumberEnd: 286
    functionName: test_server_hanging_request_payload_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - io_add_istream
    - http_server_request_set_destroy_callback
    - test_server_hanging_request_payload_input
    - i_new
    - http_server_request_get
    - i_debug
    - http_server_request_ref
    - http_server_request_get_payload_input
    linkageType: ''
    returnType: void
    signature: void test_server_hanging_request_payload_request(struct http_server_request
      *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 294
    functionName: test_server_hanging_request_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: "void test_server_hanging_request_payload(\n\tconst struct http_server_settings
      *server_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:302,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:305,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:306,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 310
    functionName: test_hanging_request_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hanging_request_payload(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 318
    functionDepth: 3
    functionLinenumber: 318
    functionLinenumberEnd: 327
    functionName: test_hanging_response_payload_connected
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_hanging_response_payload_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 333
    functionName: test_client_hanging_response_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_hanging_response_payload(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:348,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:349,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:350,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _hanging_response_payload*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 344
    functionDepth: 5
    functionLinenumber: 344
    functionLinenumberEnd: 352
    functionName: test_server_hanging_response_payload_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - io_remove
    - io_loop_stop
    - i_free
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_server_hanging_response_payload_destroyed(\n\tstruct _hanging_response_payload
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:358,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:365,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:370,1
    - Dst: http_server_request_set_destroy_callback
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:373,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:376,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:378,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:380,1
    - Dst: http_server_response_set_payload_data
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:385,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:385,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 387
    functionName: test_server_hanging_response_payload_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - http_server_response_create
    - http_server_request_set_destroy_callback
    - http_server_response_set_payload_data
    - i_new
    - str_append
    - http_server_request_get
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_hanging_response_payload_request(struct http_server_request
      *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 397
    functionName: test_server_hanging_response_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: "void test_server_hanging_response_payload(\n\tconst struct http_server_settings
      *server_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:405,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:409,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:410,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 401
    functionDepth: 3
    functionLinenumber: 401
    functionLinenumberEnd: 414
    functionName: test_hanging_response_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hanging_response_payload(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 434
    functionName: test_excessive_payload_length_connected1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_excessive_payload_length_connected1(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 440
    functionName: test_client_excessive_payload_length1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_excessive_payload_length1(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 442
    functionDepth: 3
    functionLinenumber: 442
    functionLinenumberEnd: 462
    functionName: test_excessive_payload_length_connected2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_excessive_payload_length_connected2(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 468
    functionName: test_client_excessive_payload_length2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_excessive_payload_length2(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get_response
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:486,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:487,1
    - Dst: http_server_response_get_status
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:489,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:490,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:493,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:494,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:495,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:496,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _excessive_payload_length*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 478
    functionDepth: 2
    functionLinenumber: 478
    functionLinenumberEnd: 497
    functionName: test_server_excessive_payload_length_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - http_server_response_get_status
    - io_loop_stop
    - test_assert
    - http_server_request_get_response
    - buffer_free
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_server_excessive_payload_length_destroyed(\n\tstruct _excessive_payload_length
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:505,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _excessive_payload_length*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 508
    functionName: test_server_excessive_payload_length_finished
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - http_server_response_create
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: "void test_server_excessive_payload_length_finished(\n\tstruct _excessive_payload_length
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:513,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:517,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:522,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:524,1
    - Dst: http_server_request_set_destroy_callback
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:526,1
    - Dst: http_server_request_buffer_payload
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 531
    functionName: test_server_excessive_payload_length_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - http_server_request_set_destroy_callback
    - i_new
    - http_server_request_buffer_payload
    - http_server_request_get
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_server_excessive_payload_length_request(struct http_server_request
      *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 539
    functionName: test_server_excessive_payload_length
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: "void test_server_excessive_payload_length(\n\tconst struct http_server_settings
      *server_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:547,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:550,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:551,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:554,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:556,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:557,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 543
    functionDepth: 3
    functionLinenumber: 543
    functionLinenumberEnd: 561
    functionName: test_excessive_payload_length
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_excessive_payload_length(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:572,1
    - Dst: i_sleep_intr_msecs
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:578,1
    - Dst: client_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:579,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 569
    functionDepth: 3
    functionLinenumber: 569
    functionLinenumberEnd: 581
    functionName: test_response_ostream_disconnect_connected
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - o_stream_nsend_str
    - client_connection_deinit
    - i_sleep_intr_msecs
    linkageType: ''
    returnType: void
    signature: void test_response_ostream_disconnect_connected(struct client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 587
    functionName: test_client_response_ostream_disconnect
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_client_run
    linkageType: ''
    returnType: void
    signature: void test_client_response_ostream_disconnect(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:604,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:605,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:606,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:607,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _response_ostream_disconnect*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 600
    functionDepth: 5
    functionLinenumber: 600
    functionLinenumberEnd: 609
    functionName: test_server_response_ostream_disconnect_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - io_remove
    - io_loop_stop
    - test_assert
    - i_stream_unref
    - i_free
    linkageType: ''
    returnType: void
    signature: "void test_server_response_ostream_disconnect_destroyed(\n\tstruct
      _response_ostream_disconnect *ctx)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:620,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:625,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:626,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:628,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:632,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:638,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:639,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:640,1
    - Dst: test_server_response_ostream_disconnect_output
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:645,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:647,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:650,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:653,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:656,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:657,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:659,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:663,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:666,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _response_ostream_disconnect*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 611
    functionDepth: 3
    functionLinenumber: 611
    functionLinenumberEnd: 667
    functionName: test_server_response_ostream_disconnect_output
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 1
    functionsReached:
    - i_unreached
    - o_stream_get_error
    - o_stream_send_istream
    - o_stream_finish
    - o_stream_set_max_buffer_size
    - test_assert
    - i_debug
    - o_stream_destroy
    - test_server_response_ostream_disconnect_output
    linkageType: ''
    returnType: int
    signature: "int test_server_response_ostream_disconnect_output(\n\tstruct _response_ostream_disconnect
      *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:672,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:679,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:684,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:687,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:689,1
    - Dst: i_stream_create_copy_from_data
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:692,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:693,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:693,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:694,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:696,1
    - Dst: http_server_response_get_payload_output
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:697,1
    - Dst: o_stream_add_destroy_callback
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:700,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:704,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:707,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 669
    functionDepth: 6
    functionLinenumber: 669
    functionLinenumberEnd: 708
    functionName: test_server_response_ostream_disconnect_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - str_data
    - str_len
    - http_server_response_create
    - o_stream_add_destroy_callback
    - i_stream_create_copy_from_data
    - http_server_response_get_payload_output
    - o_stream_set_flush_pending
    - i_new
    - str_append
    - http_server_request_get
    - o_stream_set_flush_callback
    - i_debug
    - str_free
    - str_new
    linkageType: ''
    returnType: void
    signature: void test_server_response_ostream_disconnect_request(struct http_server_request
      *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - server_set
    argTypes:
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 716
    functionName: test_server_response_ostream_disconnect
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: "void test_server_response_ostream_disconnect(\n\tconst struct http_server_settings
      *server_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_defaults
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:724,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:728,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:729,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 720
    functionDepth: 3
    functionLinenumber: 720
    functionLinenumberEnd: 733
    functionName: test_response_ostream_disconnect
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_defaults
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_response_ostream_disconnect(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_input
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:759,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 760
    functionName: client_connection_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 1
    functionsReached:
    - test_client_input
    linkageType: ''
    returnType: void
    signature: void client_connection_input(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_connected
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:767,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 762
    functionDepth: 0
    functionLinenumber: 762
    functionLinenumberEnd: 768
    functionName: client_connection_connected
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 1
    functionsReached:
    - test_client_connected
    linkageType: ''
    returnType: void
    signature: void client_connection_connected(struct connection *_conn, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:775,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:776,1
    - Dst: connection_init_client_ip
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:779,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ip
    - port
    argTypes:
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 770
    functionDepth: 8
    functionLinenumber: 770
    functionLinenumberEnd: 782
    functionName: client_connection_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 4
    functionsReached:
    - pool_alloconly_create
    - connection_init_client_ip
    - p_new
    - connection_client_connect
    linkageType: ''
    returnType: void
    signature: void client_connection_init(const struct ip_addr *ip, in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:790,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 784
    functionDepth: 4
    functionLinenumber: 784
    functionLinenumberEnd: 792
    functionName: client_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 4
    functionsReached:
    - connection_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void client_connection_deinit(struct client_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 794
    functionDepth: 0
    functionLinenumber: 794
    functionLinenumberEnd: 799
    functionName: client_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 4
    functionsReached:
    - client_connection_deinit
    linkageType: ''
    returnType: void
    signature: void client_connection_destroy(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:820,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:822,1
    - Dst: client_connection_init
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:825,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:827,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:830,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 815
    functionDepth: 5
    functionLinenumber: 815
    functionLinenumberEnd: 833
    functionName: test_client_run
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 32
    functionsReached:
    - connection_list_init
    - io_remove
    - client_connection_init
    - i_debug
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_client_run(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_settings_init
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - http_set
    argTypes:
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 839
    functionDepth: 1
    functionLinenumber: 839
    functionLinenumberEnd: 844
    functionName: test_server_defaults
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 30
    functionsReached:
    - http_server_settings_init
    linkageType: ''
    returnType: void
    signature: void test_server_defaults(struct http_server_settings *http_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_request
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - req
    argTypes:
    - void*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 848
    functionDepth: 0
    functionLinenumber: 848
    functionLinenumberEnd: 853
    functionName: server_handle_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - test_server_request
    linkageType: ''
    returnType: void
    signature: "void server_handle_request(void *context ATTR_UNUSED,\n\t\t      struct
      http_server_request *req)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:864,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:866,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:867,1
    - Dst: http_server_connection_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:871,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 859
    functionDepth: 3
    functionLinenumber: 859
    functionLinenumberEnd: 873
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - http_server_connection_create
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - net_accept
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 877
    functionDepth: 2
    functionLinenumber: 877
    functionLinenumberEnd: 880
    functionName: test_server_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 0
    functionsReached:
    - i_fatal
    linkageType: ''
    returnType: void
    signature: void test_server_timeout(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:885,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:886,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:888,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:891,1
    - Dst: http_server_init
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:893,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:895,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:898,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:899,1
    - Dst: http_server_deinit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:901,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - http_set
    argTypes:
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 882
    functionDepth: 6
    functionLinenumber: 882
    functionLinenumberEnd: 903
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 76
    functionsReached:
    - event_set_forced_debug
    - event_create
    - http_server_deinit
    - event_unref
    - io_add
    - io_remove
    - timeout_add
    - http_server_init
    - io_loop_run
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_server_run(const struct http_server_settings *http_set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_listen
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:916,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:918,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:920,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:921,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 914
    functionDepth: 6
    functionLinenumber: 914
    functionLinenumberEnd: 924
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 9
    functionsReached:
    - i_fatal
    - i_debug
    - net_ip2addr
    - net_listen
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:928,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:930,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:933,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:936,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:938,1
    - Dst: struct test_client_data*::client_test
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:939,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:940,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:943,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:945,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 926
    functionDepth: 12
    functionLinenumber: 926
    functionLinenumberEnd: 947
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 8
    functionsReached:
    - i_close_fd
    - i_sleep_msecs
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - struct test_client_data*::client_test
    - main_deinit
    - i_debug
    linkageType: ''
    returnType: int
    signature: int test_run_client(struct test_client_data *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:953,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:956,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:958,1
    - Dst: server_test
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:959,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:960,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:963,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - server_set
    - server_test
    argTypes:
    - struct http_server_settings*
    - test_server_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 949
    functionDepth: 12
    functionLinenumber: 949
    functionLinenumberEnd: 964
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 1
    functionsReached:
    - server_test
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_run_server(const struct http_server_settings *server_set,\n\t\ttest_server_init_t
      server_test)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:974,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:980,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:985,1
    - Dst: test_run_server
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:990,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:992,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:993,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:994,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - server_set
    - server_test
    - client_test
    - client_tests_count
    argTypes:
    - struct http_server_settings*
    - test_server_init_t
    - test_client_init_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 966
    functionDepth: 4
    functionLinenumber: 966
    functionLinenumberEnd: 995
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 101
    functionsReached:
    - i_zero
    - test_subprocess_fork
    - i_close_fd
    - test_subprocess_kill_all
    - test_run_server
    - test_open_server_fd
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(const struct http_server_settings *server_set,\n\t\t
      \      test_server_init_t server_test,\n\t\t       test_client_init_t client_test,\n\t\t
      \      unsigned int client_tests_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 1001
    functionDepth: 0
    functionLinenumber: 1001
    functionLinenumberEnd: 1004
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1006
    functionDepth: 0
    functionLinenumber: 1006
    functionLinenumberEnd: 1009
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1016,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1017,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1019,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1025,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1029,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1030,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1031,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1034,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1036,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1038,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1040,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-http/test-http-server-errors.c:1041,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1011
    functionDepth: 7
    functionLinenumber: 1011
    functionLinenumberEnd: 1044
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server-errors.c
    functionUses: 25
    functionsReached:
    - i_zero
    - main_init
    - event_set_forced_debug
    - getopt
    - lib_init
    - lib_deinit
    - i_fatal
    - test_run
    - htonl
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-http/http-server.c:32,1
    - Dst: http_server_init
      Src: /src/dovecot/src/lib-http/http-server.c:35,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-server.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - event_parent
    - server_r
    - error_r
    argTypes:
    - struct event*
    - struct http_server**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 38
    functionName: http_server_init_auto
    functionSourceFile: /src/dovecot/src/lib-http/http-server.c
    functionUses: 2
    functionsReached:
    - http_server_init
    - settings_get
    - settings_free
    linkageType: ''
    returnType: int
    signature: "int http_server_init_auto(struct event *event_parent,\n                          struct
      http_server **server_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-server.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - pool
    - set_r
    argTypes:
    - pool_t
    - struct http_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: http_server_settings_init
    functionSourceFile: /src/dovecot/src/lib-http/http-server.c
    functionUses: 2
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: void http_server_settings_init(pool_t pool, struct http_server_settings
      *set_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/http-server.c:56,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-server.c:57,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-server.c:61,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-server.c:63,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-http/http-server.c:64,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-server.c:65,1
    - Dst: http_server_connection_list_init
      Src: /src/dovecot/src/lib-http/http-server.c:67,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-server.c:69,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-server.c:70,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-server.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - set
    - event_parent
    argTypes:
    - struct http_server_settings*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 5
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: http_server_init
    functionSourceFile: /src/dovecot/src/lib-http/http-server.c
    functionUses: 4
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - pool_ref
    - p_array_init
    - event_set_append_log_prefix
    - settings_free
    - http_server_connection_list_init
    - event_add_category
    linkageType: ''
    returnType: struct http_server
    signature: "struct http_server *http_server_init(const struct http_server_settings
      *set,\n\t\t\t\t     struct event *event_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-http/http-server.c:83,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-server.c:85,1
    - Dst: http_server_resource_free
      Src: /src/dovecot/src/lib-http/http-server.c:86,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server.c:87,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-server.c:87,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-server.c:89,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-server.c:90,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-server.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - _server
    argTypes:
    - struct http_server**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 76
    functionDepth: 4
    functionLinenumber: 76
    functionLinenumberEnd: 92
    functionName: http_server_deinit
    functionSourceFile: /src/dovecot/src/lib-http/http-server.c
    functionUses: 4
    functionsReached:
    - event_unref
    - array_foreach_elem
    - settings_free
    - pool_unref
    - http_server_resource_free
    - array_count
    - i_assert
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void http_server_deinit(struct http_server **_server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-server.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct http_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 108
    functionName: http_server_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-server.c
    functionUses: 1
    functionsReached:
    - http_server_connection_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void http_server_switch_ioloop(struct http_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_shut_down
      Src: /src/dovecot/src/lib-http/http-server.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct http_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 125
    functionName: http_server_shut_down
    functionSourceFile: /src/dovecot/src/lib-http/http-server.c
    functionUses: 0
    functionsReached:
    - http_server_connection_shut_down
    linkageType: ''
    returnType: void
    signature: void http_server_shut_down(struct http_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-server.c:130,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-server.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - server
    - ssl
    argTypes:
    - struct http_server*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 133
    functionName: http_server_set_ssl_settings
    functionSourceFile: /src/dovecot/src/lib-http/http-server.c
    functionUses: 1
    functionsReached:
    - pool_ref
    - settings_free
    linkageType: ''
    returnType: void
    signature: "void http_server_set_ssl_settings(struct http_server *server,\n\t\t\t\t
      \ const struct ssl_iostream_settings *ssl)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-header-parser.c:50,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-http/http-header-parser.c:65,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-http/http-header-parser.c:66,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - input
    - limits
    - flags
    argTypes:
    - struct istream*
    - struct http_header_limits*
    - enum http_header_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 69
    functionName: http_header_parser_init
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - str_new
    - i_new
    linkageType: ''
    returnType: struct http_header_parser
    signature: "struct http_header_parser *\nhttp_header_parser_init(struct istream
      *input,\n\tconst struct http_header_limits *limits,\n\tenum http_header_parse_flags
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-http/http-header-parser.c:78,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-http/http-header-parser.c:79,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-header-parser.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct http_header_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: http_header_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - i_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void http_header_parser_deinit(struct http_header_parser **_parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_header_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 89
    functionName: http_header_parser_reset
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_header_parser_reset(struct http_header_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_char_is_token
      Src: /src/dovecot/src/lib-http/http-header-parser.c:98,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-http/http-header-parser.c:101,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-header-parser.c:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_header_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 110
    functionName: http_header_parse_name
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 0
    functionsReached:
    - http_char_is_token
    - str_append_data
    - str_len
    linkageType: ''
    returnType: int
    signature: int http_header_parse_name(struct http_header_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_header_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: http_header_parse_ows
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int http_header_parse_ows(struct http_header_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_char_is_text
      Src: /src/dovecot/src/lib-http/http-header-parser.c:132,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-http/http-header-parser.c:135,1
    - Dst: http_char_is_text
      Src: /src/dovecot/src/lib-http/http-header-parser.c:142,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 15
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_header_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 151
    functionName: http_header_parse_content
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - http_char_is_text
    linkageType: ''
    returnType: int
    signature: int http_header_parse_content(struct http_header_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-header-parser.c:156,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-header-parser.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 153
    functionDepth: 11
    functionLinenumber: 153
    functionLinenumberEnd: 158
    functionName: _chr_sanitize
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 2
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *_chr_sanitize(unsigned char c)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-http/http-header-parser.c:182,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-http/http-header-parser.c:183,1
    - Dst: http_header_parse_name
      Src: /src/dovecot/src/lib-http/http-header-parser.c:200,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-header-parser.c:206,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/http-header-parser.c:208,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-header-parser.c:208,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-header-parser.c:209,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-header-parser.c:213,1
    - Dst: http_header_parse_ows
      Src: /src/dovecot/src/lib-http/http-header-parser.c:224,1
    - Dst: http_header_parse_content
      Src: /src/dovecot/src/lib-http/http-header-parser.c:229,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-header-parser.c:237,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-header-parser.c:239,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/http-header-parser.c:240,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-header-parser.c:240,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-header-parser.c:249,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/http-header-parser.c:251,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-header-parser.c:251,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-header-parser.c:252,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-http/http-header-parser.c:263,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-header-parser.c:272,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-header-parser.c:274,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-header-parser.c:282,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-header-parser.c:286,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 85
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_header_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 160
    functionDepth: 11
    functionLinenumber: 160
    functionLinenumberEnd: 287
    functionName: http_header_parse
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - http_header_parse_content
    - str_len
    - i_unreached
    - t_strdup_printf
    - http_header_parse_name
    - _chr_sanitize
    - buffer_set_used_size
    - str_sanitize
    - str_truncate
    - buffer_append_c
    - http_header_parse_ows
    linkageType: ''
    returnType: int
    signature: int http_header_parse(struct http_header_parser *parser)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/http-header-parser.c:301,1
    - Dst: http_header_parse
      Src: /src/dovecot/src/lib-http/http-header-parser.c:324,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/http-header-parser.c:329,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-http/http-header-parser.c:337,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-header-parser.c:344,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-header-parser.c:356,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-header-parser.c:358,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-header-parser.c:362,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-header-parser.c:363,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 5
    argNames:
    - parser
    - name_r
    - data_r
    - size_r
    - error_r
    argTypes:
    - struct http_header_parser*
    - char**
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 289
    functionDepth: 12
    functionLinenumber: 289
    functionLinenumberEnd: 366
    functionName: http_header_parse_next_field
    functionSourceFile: /src/dovecot/src/lib-http/http-header-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - buffer_get_data
    - t_strdup_printf
    - i_stream_skip
    - i_stream_get_error
    - http_header_parse
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int http_header_parse_next_field(struct http_header_parser *parser,\n\tconst
      char **name_r, const unsigned char **data_r, size_t *size_r,\n\tconst char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:195,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:197,1
    - Dst: http_header_parser_init
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:198,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:201,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:201,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:203,1
    - Dst: http_header_parse_next_field
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:204,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:212,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:219,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:222,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:222,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:223,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:227,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:228,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:229,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:230,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:231,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:235,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:236,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:237,1
    - Dst: http_header_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:238,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 180
    functionDepth: 13
    functionLinenumber: 180
    functionLinenumberEnd: 239
    functionName: test_http_header_parse_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-header-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out_reason
    - http_header_parser_deinit
    - strlen
    - t_strdup_printf
    - t_strndup
    - test_end
    - str_sanitize
    - test_istream_create_data
    - http_header_parse_next_field
    - i_stream_unref
    - http_header_parser_init
    - test_istream_set_size
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_header_parse_valid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:355,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:355,1
    - Dst: http_header_parser_init
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:356,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:359,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:359,1
    - Dst: http_header_parse_next_field
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:361,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:366,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:367,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:368,1
    - Dst: http_header_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:369,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 340
    functionDepth: 13
    functionLinenumber: 340
    functionLinenumberEnd: 370
    functionName: test_http_header_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-header-parser.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - http_header_parser_deinit
    - strlen
    - t_strdup_printf
    - test_end
    - http_header_parse_next_field
    - i_stream_unref
    - http_header_parser_init
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_header_parse_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-header-parser.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 373
    functionDepth: 7
    functionLinenumber: 373
    functionLinenumberEnd: 381
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-header-parser.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:58,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 11
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: _chr_sanitize
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 3
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *_chr_sanitize(unsigned char c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:80,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:84,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:93,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - tcstream
    argTypes:
    - struct http_transfer_chunked_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 102
    functionName: http_transfer_chunked_parse_size
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - _chr_sanitize
    - io_stream_set_error
    linkageType: ''
    returnType: int
    signature: int http_transfer_chunked_parse_size(struct http_transfer_chunked_istream
      *tcstream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_char_is_token
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - tcstream
    argTypes:
    - struct http_transfer_chunked_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 120
    functionName: http_transfer_chunked_skip_token
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - http_char_is_token
    linkageType: ''
    returnType: int
    signature: int http_transfer_chunked_skip_token(struct http_transfer_chunked_istream
      *tcstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_char_is_qdtext
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - tcstream
    argTypes:
    - struct http_transfer_chunked_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 133
    functionName: http_transfer_chunked_skip_qdtext
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - http_char_is_qdtext
    linkageType: ''
    returnType: int
    signature: "int http_transfer_chunked_skip_qdtext(\n\tstruct http_transfer_chunked_istream
      *tcstream)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: http_transfer_chunked_parse_size
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:168,1
    - Dst: http_transfer_chunked_skip_token
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:186,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:189,1
    - Dst: http_transfer_chunked_skip_qdtext
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:226,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:228,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:239,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:242,1
    - Dst: http_char_is_text
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:248,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:249,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:252,1
    - Dst: http_transfer_chunked_skip_token
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:261,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:264,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:282,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:286,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:307,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:310,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:317,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:321,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 129
    argCount: 1
    argNames:
    - tcstream
    argTypes:
    - struct http_transfer_chunked_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 322
    functionName: http_transfer_chunked_parse
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - http_transfer_chunked_skip_qdtext
    - io_stream_set_error
    - http_transfer_chunked_skip_token
    - http_char_is_text
    - i_unreached
    - _chr_sanitize
    - http_transfer_chunked_parse_size
    linkageType: ''
    returnType: int
    signature: int http_transfer_chunked_parse(struct http_transfer_chunked_istream
      *tcstream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:332,1
    - Dst: http_transfer_chunked_parse
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:336,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:341,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:350,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:361,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:367,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - tcstream
    argTypes:
    - struct http_transfer_chunked_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 324
    functionDepth: 7
    functionLinenumber: 324
    functionLinenumberEnd: 377
    functionName: http_transfer_chunked_parse_next
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - i_stream_skip
    - http_transfer_chunked_parse
    - i_assert
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: int http_transfer_chunked_parse_next(struct http_transfer_chunked_istream
      *tcstream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:390,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:397,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:401,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:403,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:405,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:409,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:420,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:421,1
    - Dst: i_stream_try_alloc
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:428,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:433,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:435,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:438,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 1
    argNames:
    - tcstream
    argTypes:
    - struct http_transfer_chunked_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 381
    functionDepth: 5
    functionLinenumber: 381
    functionLinenumberEnd: 445
    functionName: http_transfer_chunked_istream_read_data
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - memcpy
    - io_stream_set_error
    - i_stream_try_alloc
    - i_stream_get_data
    - i_stream_skip
    - i_stream_seek
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http_transfer_chunked_istream_read_data(\n\tstruct http_transfer_chunked_istream
      *tcstream)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_header_parser_init
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:461,1
    - Dst: http_header_parse_next_field
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:465,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:474,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - tcstream
    argTypes:
    - struct http_transfer_chunked_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 447
    functionDepth: 13
    functionLinenumber: 447
    functionLinenumberEnd: 482
    functionName: http_transfer_chunked_parse_trailer
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - http_header_parser_init
    - http_header_parse_next_field
    - io_stream_set_error
    linkageType: ''
    returnType: int
    signature: "int http_transfer_chunked_parse_trailer(\n\tstruct http_transfer_chunked_istream
      *tcstream)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: http_transfer_chunked_istream_read_data
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:497,1
    - Dst: http_transfer_chunked_parse_trailer
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:505,1
    - Dst: http_transfer_chunked_parse_next
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:512,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:518,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 484
    functionDepth: 14
    functionLinenumber: 484
    functionLinenumberEnd: 519
    functionName: http_transfer_chunked_istream_read
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - http_transfer_chunked_parse_next
    - http_transfer_chunked_parse_trailer
    - http_transfer_chunked_istream_read_data
    - i_unreached
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t http_transfer_chunked_istream_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_header_parser_deinit
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:528,1
    - Dst: i_stream_free_buffer
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:531,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 521
    functionDepth: 4
    functionLinenumber: 521
    functionLinenumberEnd: 532
    functionName: http_transfer_chunked_istream_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - http_header_parser_deinit
    - i_stream_free_buffer
    linkageType: ''
    returnType: void
    signature: void http_transfer_chunked_istream_destroy(struct iostream_private
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:539,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:552,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - input
    - max_size
    argTypes:
    - struct istream*
    - uoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 534
    functionDepth: 4
    functionLinenumber: 534
    functionLinenumberEnd: 554
    functionName: http_transfer_chunked_istream_create
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 3
    functionsReached:
    - i_stream_create
    - i_stream_get_fd
    - i_new
    linkageType: ''
    returnType: struct istream
    signature: 'struct istream *

      http_transfer_chunked_istream_create(struct istream *input, uoff_t max_size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - in
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 584
    functionName: _log16
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t _log16(size_t in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _log16
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - avail
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 598
    functionName: _max_chunk_size
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - _log16
    linkageType: ''
    returnType: size_t
    signature: size_t _max_chunk_size(size_t avail)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:610,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:611,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:613,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:617,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:619,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:622,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - tcstream
    argTypes:
    - struct http_transfer_chunked_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 600
    functionDepth: 5
    functionLinenumber: 600
    functionLinenumberEnd: 626
    functionName: http_transfer_chunked_ostream_send_trailer
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - o_stream_get_buffer_avail_size
    - o_stream_send
    - o_stream_copy_error_from_parent
    - i_assert
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: "int http_transfer_chunked_ostream_send_trailer(\n\tstruct http_transfer_chunked_ostream
      *tcstream)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:635,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:639,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 628
    functionDepth: 3
    functionLinenumber: 628
    functionLinenumberEnd: 640
    functionName: http_transfer_chunked_ostream_close
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - i_assert
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: "void http_transfer_chunked_ostream_close(struct iostream_private *stream,\n\t\t\t\t
      \   bool close_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_transfer_chunked_ostream_send_trailer
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:650,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:653,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 642
    functionDepth: 6
    functionLinenumber: 642
    functionLinenumberEnd: 654
    functionName: http_transfer_chunked_ostream_flush
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - http_transfer_chunked_ostream_send_trailer
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: int http_transfer_chunked_ostream_flush(struct ostream_private *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:669,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:672,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:676,1
    - Dst: o_stream_get_buffer_avail_size
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:686,1
    - Dst: _max_chunk_size
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:687,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:704,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:707,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:709,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:710,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:716,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:717,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:718,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:723,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 656
    functionDepth: 11
    functionLinenumber: 656
    functionLinenumberEnd: 728
    functionName: http_transfer_chunked_ostream_sendv
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 0
    functionsReached:
    - memcpy
    - t_new
    - o_stream_get_buffer_avail_size
    - o_stream_sendv
    - strlen
    - t_strdup_printf
    - o_stream_copy_error_from_parent
    - o_stream_flush
    - _max_chunk_size
    - i_assert
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http_transfer_chunked_ostream_sendv(struct ostream_private
      *stream,\n\t\t\t\t    const struct const_iovec *iov,\n\t\t\t\t    unsigned int
      iov_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:736,1
    - Dst: _max_chunk_size
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:745,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:746,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-http/http-transfer-chunked.c:747,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - output
    argTypes:
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 730
    functionDepth: 3
    functionLinenumber: 730
    functionLinenumberEnd: 748
    functionName: http_transfer_chunked_ostream_create
    functionSourceFile: /src/dovecot/src/lib-http/http-transfer-chunked.c
    functionUses: 1
    functionsReached:
    - o_stream_create
    - _max_chunk_size
    - i_new
    - o_stream_get_fd
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      http_transfer_chunked_ostream_create(struct ostream *output)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/test-http-server.c:39,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-http/test-http-server.c:41,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-server.c:42,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _client
    - reason
    argTypes:
    - struct client**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 46
    functionName: client_destroy
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server.c
    functionUses: 99
    functionsReached:
    - DLLIST2_REMOVE
    - io_loop_stop
    - i_free
    - http_server_connection_close
    linkageType: ''
    returnType: void
    signature: void client_destroy(struct client **_client, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/lib-http/test-http-server.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: clients_destroy_all
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server.c
    functionUses: 8
    functionsReached:
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void clients_destroy_all(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_get
      Src: /src/dovecot/src/lib-http/test-http-server.c:67,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-server.c:71,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-server.c:73,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/test-http-server.c:74,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-server.c:75,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-server.c:80,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-server.c:81,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lib-http/test-http-server.c:82,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-server.c:83,1
    - Dst: net_ipport2str
      Src: /src/dovecot/src/lib-http/test-http-server.c:84,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-server.c:85,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-server.c:87,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/test-http-server.c:88,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-server.c:92,1
    - Dst: http_url_create
      Src: /src/dovecot/src/lib-http/test-http-server.c:93,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-server.c:96,1
    - Dst: http_url_create_authority
      Src: /src/dovecot/src/lib-http/test-http-server.c:97,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/test-http-server.c:100,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/test-http-server.c:105,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/test-http-server.c:106,1
    - Dst: http_server_response_set_payload_data
      Src: /src/dovecot/src/lib-http/test-http-server.c:107,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-server.c:108,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-server.c:108,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/test-http-server.c:109,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - context
    - req
    argTypes:
    - void*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 62
    functionDepth: 12
    functionLinenumber: 62
    functionLinenumberEnd: 110
    functionName: client_http_handle_request
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - http_server_response_create
    - http_server_response_set_payload_data
    - http_server_response_add_header
    - http_url_create
    - http_url_create_authority
    - str_append
    - http_server_request_get
    - net_ipport2str
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: "void client_http_handle_request(void *context,\n\tstruct http_server_request
      *req)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_destroy
      Src: /src/dovecot/src/lib-http/test-http-server.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - context
    - reason
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: client_http_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server.c
    functionUses: 0
    functionsReached:
    - client_destroy
    linkageType: ''
    returnType: void
    signature: void client_http_connection_destroy(void *context, const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-server.c:140,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-server.c:143,1
    - Dst: net_getsockname
      Src: /src/dovecot/src/lib-http/test-http-server.c:146,1
    - Dst: http_server_connection_create
      Src: /src/dovecot/src/lib-http/test-http-server.c:147,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-http/test-http-server.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - fd
    - ip
    - port
    argTypes:
    - int
    - struct ip_addr*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 134
    functionDepth: 3
    functionLinenumber: 134
    functionLinenumberEnd: 151
    functionName: client_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server.c
    functionUses: 59
    functionsReached:
    - i_zero
    - net_getsockname
    - DLLIST2_APPEND
    - i_new
    - http_server_connection_create
    linkageType: ''
    returnType: void
    signature: void client_init(int fd, const struct ip_addr *ip, in_port_t port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-http/test-http-server.c:159,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-http/test-http-server.c:161,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server.c:162,1
    - Dst: client_init
      Src: /src/dovecot/src/lib-http/test-http-server.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 167
    functionName: client_accept
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - client_init
    - NET_ACCEPT_ENOCONN
    - net_accept
    linkageType: ''
    returnType: void
    signature: void client_accept(void *context ATTR_UNUSED)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_info
      Src: /src/dovecot/src/lib-http/test-http-server.c:173,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server.c:174,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-http/test-http-server.c:178,1
    - Dst: http_server_shut_down
      Src: /src/dovecot/src/lib-http/test-http-server.c:180,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-server.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 183
    functionName: sig_die
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_info
    - http_server_shut_down
    linkageType: ''
    returnType: void
    signature: void sig_die(const siginfo_t *si ATTR_UNUSED, void *context ATTR_UNUSED)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-http/test-http-server.c:193,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-http/test-http-server.c:195,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server.c:201,1
    - Dst: net_str2port
      Src: /src/dovecot/src/lib-http/test-http-server.c:207,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server.c:208,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-http/test-http-server.c:211,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server.c:212,1
    - Dst: http_server_settings_init
      Src: /src/dovecot/src/lib-http/test-http-server.c:214,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-server.c:218,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/test-http-server.c:219,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-http/test-http-server.c:220,1
    - Dst: http_server_init
      Src: /src/dovecot/src/lib-http/test-http-server.c:221,1
    - Dst: lib_signals_init
      Src: /src/dovecot/src/lib-http/test-http-server.c:223,1
    - Dst: lib_signals_ignore
      Src: /src/dovecot/src/lib-http/test-http-server.c:224,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-http/test-http-server.c:225,1
    - Dst: lib_signals_set_handler
      Src: /src/dovecot/src/lib-http/test-http-server.c:226,1
    - Dst: net_listen
      Src: /src/dovecot/src/lib-http/test-http-server.c:228,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-server.c:230,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-http/test-http-server.c:232,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-server.c:234,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-server.c:236,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-server.c:237,1
    - Dst: clients_destroy_all
      Src: /src/dovecot/src/lib-http/test-http-server.c:239,1
    - Dst: http_server_deinit
      Src: /src/dovecot/src/lib-http/test-http-server.c:241,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/test-http-server.c:242,1
    - Dst: lib_signals_deinit
      Src: /src/dovecot/src/lib-http/test-http-server.c:243,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-server.c:244,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-http/test-http-server.c:245,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 185
    functionDepth: 12
    functionLinenumber: 185
    functionLinenumberEnd: 246
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-server.c
    functionUses: 25
    functionsReached:
    - event_unref
    - lib_init
    - io_remove
    - io_loop_destroy
    - lib_signals_ignore
    - io_loop_run
    - getopt
    - net_addr2ip
    - http_server_deinit
    - i_close_fd
    - i_fatal
    - lib_signals_init
    - clients_destroy_all
    - net_listen
    - http_server_settings_init
    - event_set_forced_debug
    - event_create
    - net_str2port
    - lib_signals_set_handler
    - lib_signals_deinit
    - lib_deinit
    - io_add
    - io_loop_create
    - http_server_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/test-http-client.c:36,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-http/test-http-client.c:37,1
    - Dst: write_full
      Src: /src/dovecot/src/lib-http/test-http-client.c:39,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-http/test-http-client.c:40,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/test-http-client.c:41,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-http/test-http-client.c:45,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-http/test-http-client.c:49,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-client.c:50,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-http/test-http-client.c:52,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-client.c:53,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:54,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client.c:55,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_test_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 29
    functionDepth: 7
    functionLinenumber: 29
    functionLinenumberEnd: 57
    functionName: payload_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client.c
    functionUses: 5
    functionsReached:
    - i_error
    - write_full
    - io_remove
    - i_stream_skip
    - i_stream_get_error
    - i_stream_unref
    - i_info
    - i_free
    - i_stream_read_more
    linkageType: ''
    returnType: void
    signature: void payload_input(struct http_test_request *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client.c:63,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-http/test-http-client.c:66,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client.c:67,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-http/test-http-client.c:72,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client.c:75,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-http/test-http-client.c:79,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/test-http-client.c:80,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-http/test-http-client.c:82,1
    - Dst: payload_input
      Src: /src/dovecot/src/lib-http/test-http-client.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - response
    - req
    argTypes:
    - struct http_response*
    - struct http_test_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 59
    functionDepth: 8
    functionLinenumber: 59
    functionLinenumberEnd: 84
    functionName: got_request_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client.c
    functionUses: 0
    functionsReached:
    - i_error
    - io_add_istream
    - i_stream_ref
    - payload_input
    - io_loop_stop
    - i_info
    - i_free
    linkageType: ''
    returnType: void
    signature: "void got_request_response(const struct http_response *response,\n\t\t
      \    struct http_test_request *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:98,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:99,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:102,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:104,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:105,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:108,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:110,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:111,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:114,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:116,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:117,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:120,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:122,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:123,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:126,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:128,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:129,1
    - Dst: http_client_request_set_urgent
      Src: /src/dovecot/src/lib-http/test-http-client.c:132,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:133,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:135,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:136,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:139,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:141,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:142,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client.c:145,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-client.c:146,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:147,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:148,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client.c:149,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:151,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:153,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:154,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client.c:157,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-client.c:158,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:159,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:160,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client.c:161,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:163,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:165,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:166,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client.c:169,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:170,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:172,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:173,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:176,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:178,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:179,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-client.c:182,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:183,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:185,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:186,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-client.c:189,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:190,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:192,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:193,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-client.c:196,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:197,1
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/lib-http/test-http-client.c:198,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client.c:199,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:201,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:202,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client.c:205,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-client.c:206,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:207,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:208,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-client.c:209,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:210,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:212,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:213,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client.c:216,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-client.c:217,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:218,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:219,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-client.c:220,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:221,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:223,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:224,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client.c:227,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-client.c:228,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:229,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:230,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-client.c:231,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:232,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:234,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:235,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:238,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:240,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:241,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:244,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:246,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:247,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client.c:250,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-client.c:251,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:252,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:253,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:254,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:256,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:257,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client.c:260,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-client.c:261,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:262,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:263,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:264,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:266,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:267,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client.c:270,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-client.c:271,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:272,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:273,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:274,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:276,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:277,1
    - Dst: http_client_request_set_auth_simple
      Src: /src/dovecot/src/lib-http/test-http-client.c:280,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:282,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:284,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:285,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-http/test-http-client.c:288,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:289,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:290,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:291,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:293,1
    - Dst: http_client_request_url_str
      Src: /src/dovecot/src/lib-http/test-http-client.c:294,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 116
    argCount: 1
    argNames:
    - http_client
    argTypes:
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 90
    functionDepth: 6
    functionLinenumber: 90
    functionLinenumberEnd: 298
    functionName: run_tests
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client.c
    functionUses: 1
    functionsReached:
    - http_client_request_set_ssl
    - i_free
    - http_client_request_set_port
    - strlen
    - http_client_request_set_auth_simple
    - http_client_request_set_payload
    - i_stream_create_file
    - i_new
    - http_client_request_add_header
    - i_stream_unref
    - http_client_request
    - http_client_request_url_str
    - http_client_request_set_urgent
    - i_stream_create_from_data
    - http_client_request_submit
    - http_client_request_abort
    linkageType: ''
    returnType: void
    signature: void run_tests(struct http_client *http_client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_url_parse
      Src: /src/dovecot/src/lib-http/test-http-client.c:311,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-http/test-http-client.c:311,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client.c:313,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client.c:315,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client.c:317,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-http/test-http-client.c:319,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client.c:322,1
    - Dst: http_client_request_set_ssl
      Src: /src/dovecot/src/lib-http/test-http-client.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - http_client
    - method
    - url_str
    - http_req_r
    - test_req_r
    argTypes:
    - struct http_client*
    - char*
    - char*
    - struct http_client_request**
    - struct http_test_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 300
    functionDepth: 8
    functionLinenumber: 300
    functionLinenumberEnd: 328
    functionName: test_http_request_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client.c
    functionUses: 0
    functionsReached:
    - http_url_parse
    - http_client_request_set_ssl
    - http_client_request_set_port
    - i_fatal
    - pool_datastack_create
    - i_new
    - http_client_request
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void test_http_request_init(struct http_client *http_client,\n\t\t
      \      const char *method, const char *url_str,\n\t\t       struct http_client_request
      **http_req_r,\n\t\t       struct http_test_request **test_req_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_http_request_init
      Src: /src/dovecot/src/lib-http/test-http-client.c:335,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - http_client
    - url_str
    argTypes:
    - struct http_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 330
    functionDepth: 9
    functionLinenumber: 330
    functionLinenumberEnd: 337
    functionName: run_http_get
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client.c
    functionUses: 0
    functionsReached:
    - http_client_request_submit
    - test_http_request_init
    linkageType: ''
    returnType: void
    signature: void run_http_get(struct http_client *http_client, const char *url_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_http_request_init
      Src: /src/dovecot/src/lib-http/test-http-client.c:346,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-http/test-http-client.c:347,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client.c:348,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:349,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - http_client
    - url_str
    - path
    argTypes:
    - struct http_client*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 339
    functionDepth: 9
    functionLinenumber: 339
    functionLinenumberEnd: 351
    functionName: run_http_post
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client.c
    functionUses: 0
    functionsReached:
    - test_http_request_init
    - i_stream_create_file
    - http_client_request_set_payload
    - i_stream_unref
    - http_client_request_submit
    linkageType: ''
    returnType: void
    signature: "void run_http_post(struct http_client *http_client, const char *url_str,\n\t\t\t
      \ const char *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-http/test-http-client.c:361,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 5
    argNames:
    - event
    - type
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct event*
    - enum event_callback_type
    - struct failure_context*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 363
    functionName: test_event_callback
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client.c
    functionUses: 0
    functionsReached:
    - event_set_ptr
    linkageType: ''
    returnType: bool
    signature: "bool test_event_callback(struct event *event,\n\t\t    enum event_callback_type
      type,\n\t\t    struct failure_context *ctx ATTR_UNUSED,\n\t\t    const char
      *fmt ATTR_UNUSED,\n\t\t    va_list args ATTR_UNUSED)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-http/test-http-client.c:376,1
    - Dst: settings_root_init
      Src: /src/dovecot/src/lib-http/test-http-client.c:377,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client.c:378,1
    - Dst: event_register_callback
      Src: /src/dovecot/src/lib-http/test-http-client.c:379,1
    - Dst: ssl_iostream_openssl_init
      Src: /src/dovecot/src/lib-http/test-http-client.c:381,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-client.c:382,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-http/test-http-client.c:383,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/test-http-client.c:393,1
    - Dst: access
      Src: /src/dovecot/src/lib-http/test-http-client.c:395,1
    - Dst: dns_client_init
      Src: /src/dovecot/src/lib-http/test-http-client.c:396,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client.c:397,1
    - Dst: dns_client_connect
      Src: /src/dovecot/src/lib-http/test-http-client.c:399,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client.c:400,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client.c:403,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-client.c:405,1
    - Dst: stat
      Src: /src/dovecot/src/lib-http/test-http-client.c:408,1
    - Dst: S_ISDIR
      Src: /src/dovecot/src/lib-http/test-http-client.c:408,1
    - Dst: stat
      Src: /src/dovecot/src/lib-http/test-http-client.c:410,1
    - Dst: S_ISREG
      Src: /src/dovecot/src/lib-http/test-http-client.c:410,1
    - Dst: settings_parse_read_file
      Src: /src/dovecot/src/lib-http/test-http-client.c:413,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client.c:417,1
    - Dst: settings_file_get
      Src: /src/dovecot/src/lib-http/test-http-client.c:418,1
    - Dst: http_client_settings_init
      Src: /src/dovecot/src/lib-http/test-http-client.c:422,1
    - Dst: http_client_context_create
      Src: /src/dovecot/src/lib-http/test-http-client.c:431,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-http/test-http-client.c:433,1
    - Dst: http_client_init_shared
      Src: /src/dovecot/src/lib-http/test-http-client.c:434,1
    - Dst: http_client_init_shared
      Src: /src/dovecot/src/lib-http/test-http-client.c:435,1
    - Dst: http_client_init_shared
      Src: /src/dovecot/src/lib-http/test-http-client.c:436,1
    - Dst: http_client_init_shared
      Src: /src/dovecot/src/lib-http/test-http-client.c:437,1
    - Dst: http_client_set_ssl_settings
      Src: /src/dovecot/src/lib-http/test-http-client.c:439,1
    - Dst: http_client_set_ssl_settings
      Src: /src/dovecot/src/lib-http/test-http-client.c:440,1
    - Dst: http_client_set_ssl_settings
      Src: /src/dovecot/src/lib-http/test-http-client.c:441,1
    - Dst: http_client_set_ssl_settings
      Src: /src/dovecot/src/lib-http/test-http-client.c:442,1
    - Dst: http_client_set_dns_client
      Src: /src/dovecot/src/lib-http/test-http-client.c:443,1
    - Dst: http_client_set_dns_client
      Src: /src/dovecot/src/lib-http/test-http-client.c:444,1
    - Dst: http_client_set_dns_client
      Src: /src/dovecot/src/lib-http/test-http-client.c:445,1
    - Dst: http_client_set_dns_client
      Src: /src/dovecot/src/lib-http/test-http-client.c:446,1
    - Dst: run_tests
      Src: /src/dovecot/src/lib-http/test-http-client.c:450,1
    - Dst: run_tests
      Src: /src/dovecot/src/lib-http/test-http-client.c:451,1
    - Dst: run_tests
      Src: /src/dovecot/src/lib-http/test-http-client.c:452,1
    - Dst: run_tests
      Src: /src/dovecot/src/lib-http/test-http-client.c:453,1
    - Dst: run_http_get
      Src: /src/dovecot/src/lib-http/test-http-client.c:456,1
    - Dst: run_http_get
      Src: /src/dovecot/src/lib-http/test-http-client.c:457,1
    - Dst: run_http_get
      Src: /src/dovecot/src/lib-http/test-http-client.c:458,1
    - Dst: run_http_get
      Src: /src/dovecot/src/lib-http/test-http-client.c:459,1
    - Dst: run_http_post
      Src: /src/dovecot/src/lib-http/test-http-client.c:462,1
    - Dst: run_http_post
      Src: /src/dovecot/src/lib-http/test-http-client.c:463,1
    - Dst: run_http_post
      Src: /src/dovecot/src/lib-http/test-http-client.c:464,1
    - Dst: run_http_post
      Src: /src/dovecot/src/lib-http/test-http-client.c:465,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client.c:468,1
    - Dst: http_client_get_pending_request_count
      Src: /src/dovecot/src/lib-http/test-http-client.c:474,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client.c:475,1
    - Dst: http_client_get_pending_request_count
      Src: /src/dovecot/src/lib-http/test-http-client.c:477,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client.c:478,1
    - Dst: http_client_get_pending_request_count
      Src: /src/dovecot/src/lib-http/test-http-client.c:480,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client.c:481,1
    - Dst: http_client_get_pending_request_count
      Src: /src/dovecot/src/lib-http/test-http-client.c:483,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client.c:484,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-client.c:489,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client.c:491,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client.c:492,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client.c:493,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client.c:494,1
    - Dst: settings_root_deinit
      Src: /src/dovecot/src/lib-http/test-http-client.c:495,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:496,1
    - Dst: http_client_context_unref
      Src: /src/dovecot/src/lib-http/test-http-client.c:498,1
    - Dst: dns_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client.c:501,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-client.c:503,1
    - Dst: ssl_iostream_context_cache_free
      Src: /src/dovecot/src/lib-http/test-http-client.c:504,1
    - Dst: ssl_iostream_openssl_deinit
      Src: /src/dovecot/src/lib-http/test-http-client.c:505,1
    - Dst: event_unregister_callback
      Src: /src/dovecot/src/lib-http/test-http-client.c:506,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-http/test-http-client.c:507,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 106
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 365
    functionDepth: 12
    functionLinenumber: 365
    functionLinenumberEnd: 508
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client.c
    functionUses: 25
    functionsReached:
    - http_client_set_dns_client
    - event_unref
    - lib_init
    - dns_client_deinit
    - io_loop_destroy
    - http_client_settings_init
    - settings_root_init
    - stat
    - settings_root_override
    - http_client_context_unref
    - ssl_iostream_openssl_deinit
    - settings_file_get
    - ssl_iostream_openssl_init
    - io_loop_run
    - ssl_iostream_context_cache_free
    - settings_parse_read_file
    - dns_client_connect
    - i_fatal
    - http_client_get_pending_request_count
    - run_http_get
    - dns_client_init
    - S_ISREG
    - i_zero
    - event_set_forced_debug
    - event_create
    - access
    - run_tests
    - settings_root_deinit
    - event_unregister_callback
    - S_ISDIR
    - http_client_deinit
    - lib_deinit
    - event_register_callback
    - io_loop_create
    - http_client_context_create
    - http_client_init_shared
    - run_http_post
    - io_loop_set_running
    - i_debug
    - http_client_set_ssl_settings
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_char_is_token68
      Src: /src/dovecot/src/lib-http/http-auth.c:41,1
    - Dst: http_char_is_token68
      Src: /src/dovecot/src/lib-http/http-auth.c:44,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-http/http-auth.c:51,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - parser
    - token68_r
    argTypes:
    - struct http_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 31
    functionDepth: 3
    functionLinenumber: 31
    functionLinenumberEnd: 53
    functionName: http_parse_token68
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - t_strndup
    - http_char_is_token68
    linkageType: ''
    returnType: int
    signature: int http_parse_token68(struct http_parser *parser, const char **token68_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_parser_skip_token
      Src: /src/dovecot/src/lib-http/http-auth.c:65,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-auth.c:72,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-auth.c:78,1
    - Dst: http_parse_token_or_qstring
      Src: /src/dovecot/src/lib-http/http-auth.c:81,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-http/http-auth.c:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - parser
    - param_r
    - value_r
    argTypes:
    - struct http_parser*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 88
    functionName: http_parse_auth_param
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - http_parser_skip_token
    - http_parse_ows
    - http_parse_token_or_qstring
    - t_strndup
    linkageType: ''
    returnType: int
    signature: "int http_parse_auth_param(struct http_parser *parser,\n\tconst char
      **param_r, const char **value_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-auth.c:99,1
    - Dst: http_parse_auth_param
      Src: /src/dovecot/src/lib-http/http-auth.c:100,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-auth.c:102,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-auth.c:103,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-auth.c:104,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-auth.c:113,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - parser
    - params
    argTypes:
    - struct http_parser*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 124
    functionName: http_parse_auth_params
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - array_push_back
    - http_parse_ows
    - http_parse_auth_param
    - t_array_init
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int http_parse_auth_params(struct http_parser *parser,\n\tARRAY_TYPE(http_auth_param)
      *params)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: http_parser_init
      Src: /src/dovecot/src/lib-http/http-auth.c:132,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-auth.c:146,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-auth.c:152,1
    - Dst: http_parse_token
      Src: /src/dovecot/src/lib-http/http-auth.c:155,1
    - Dst: http_parse_auth_params
      Src: /src/dovecot/src/lib-http/http-auth.c:169,1
    - Dst: http_parse_token68
      Src: /src/dovecot/src/lib-http/http-auth.c:172,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-auth.c:176,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-auth.c:177,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-auth.c:178,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-auth.c:184,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 39
    argCount: 3
    argNames:
    - data
    - size
    - chlngs
    argTypes:
    - unsigned char*
    - size_t
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 126
    functionDepth: 5
    functionLinenumber: 126
    functionLinenumberEnd: 194
    functionName: http_auth_parse_challenges
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - http_parse_auth_params
    - array_push_back
    - http_parser_init
    - http_parse_token68
    - http_parse_ows
    - t_array_init
    - array_is_created
    - http_parse_token
    linkageType: ''
    returnType: int
    signature: "int http_auth_parse_challenges(const unsigned char *data, size_t size,\n\tARRAY_TYPE(http_auth_challenge)
      *chlngs)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: http_parser_init
      Src: /src/dovecot/src/lib-http/http-auth.c:202,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-auth.c:211,1
    - Dst: http_parse_token
      Src: /src/dovecot/src/lib-http/http-auth.c:214,1
    - Dst: http_parse_auth_params
      Src: /src/dovecot/src/lib-http/http-auth.c:225,1
    - Dst: http_parse_token68
      Src: /src/dovecot/src/lib-http/http-auth.c:228,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 3
    argNames:
    - data
    - size
    - crdts
    argTypes:
    - unsigned char*
    - size_t
    - struct http_auth_credentials*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 196
    functionDepth: 5
    functionLinenumber: 196
    functionLinenumberEnd: 235
    functionName: http_auth_parse_credentials
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - http_parse_auth_params
    - http_parser_init
    - http_parse_token68
    - http_parse_token
    linkageType: ''
    returnType: int
    signature: "int http_auth_parse_credentials(const unsigned char *data, size_t
      size,\n\tstruct http_auth_credentials *crdts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-auth.c:248,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-auth.c:249,1
    - Dst: http_char_is_token
      Src: /src/dovecot/src/lib-http/http-auth.c:251,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-auth.c:254,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-http/http-auth.c:258,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-auth.c:259,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-http/http-auth.c:264,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-auth.c:265,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-auth.c:267,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - out
    - param
    argTypes:
    - string_t*
    - struct http_auth_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 269
    functionName: http_auth_create_param
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - str_append
    - http_char_is_token
    - str_append_data
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void http_auth_create_param(string_t *out, const struct http_auth_param
      *param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-auth.c:278,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-auth.c:281,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-auth.c:284,1
    - Dst: http_auth_create_param
      Src: /src/dovecot/src/lib-http/http-auth.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - out
    - params
    argTypes:
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 287
    functionName: http_auth_create_params
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - str_append
    - array_get
    - array_is_created
    - http_auth_create_param
    linkageType: ''
    returnType: void
    signature: "void http_auth_create_params(string_t *out,\n\tconst ARRAY_TYPE(http_auth_param)
      *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-auth.c:294,1
    - Dst: http_char_is_token68
      Src: /src/dovecot/src/lib-http/http-auth.c:294,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-auth.c:296,1
    - Dst: http_char_is_token68
      Src: /src/dovecot/src/lib-http/http-auth.c:296,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-auth.c:298,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - data
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 299
    functionName: http_auth_check_token68
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_char_is_token68
    linkageType: ''
    returnType: void
    signature: void http_auth_check_token68(const char *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-auth.c:309,1
    - Dst: http_auth_check_token68
      Src: /src/dovecot/src/lib-http/http-auth.c:313,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-auth.c:314,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-auth.c:315,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-auth.c:319,1
    - Dst: http_auth_create_params
      Src: /src/dovecot/src/lib-http/http-auth.c:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - out
    - chlng
    argTypes:
    - string_t*
    - struct http_auth_challenge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 301
    functionDepth: 4
    functionLinenumber: 301
    functionLinenumberEnd: 322
    functionName: http_auth_create_challenge
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - str_append
    - http_auth_check_token68
    - http_auth_create_params
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void http_auth_create_challenge(string_t *out,\n\tconst struct http_auth_challenge
      *chlng)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-auth.c:333,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-auth.c:336,1
    - Dst: http_auth_create_challenge
      Src: /src/dovecot/src/lib-http/http-auth.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - out
    - chlngs
    argTypes:
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 324
    functionDepth: 5
    functionLinenumber: 324
    functionLinenumberEnd: 339
    functionName: http_auth_create_challenges
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - str_append
    - array_get
    - http_auth_create_challenge
    linkageType: ''
    returnType: void
    signature: "void http_auth_create_challenges(string_t *out,\n\tconst ARRAY_TYPE(http_auth_challenge)
      *chlngs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-auth.c:352,1
    - Dst: http_auth_check_token68
      Src: /src/dovecot/src/lib-http/http-auth.c:356,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-auth.c:357,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-auth.c:358,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-auth.c:362,1
    - Dst: http_auth_create_params
      Src: /src/dovecot/src/lib-http/http-auth.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - out
    - crdts
    argTypes:
    - string_t*
    - struct http_auth_credentials*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 341
    functionDepth: 4
    functionLinenumber: 341
    functionLinenumberEnd: 365
    functionName: http_auth_create_credentials
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - str_append
    - http_auth_check_token68
    - http_auth_create_params
    - str_append_c
    linkageType: ''
    returnType: void
    signature: "void http_auth_create_credentials(string_t *out,\n\tconst struct http_auth_credentials
      *crdts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-auth.c:378,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-auth.c:381,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-auth.c:385,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:386,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:387,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-auth.c:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - ARRAY_TYPE*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 391
    functionName: http_auth_params_clone
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - p_array_init
    - array_push_back
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void http_auth_params_clone(pool_t pool,\n\tARRAY_TYPE(http_auth_param)
      *dst,\n\tconst ARRAY_TYPE(http_auth_param) *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-auth.c:385,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:386,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:387,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-auth.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 390
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 136
    functionsReached:
    - i_zero
    - p_strdup
    - array_push_back
    linkageType: ''
    returnType: void
    signature: void array_foreach(src, sparam)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:397,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:399,1
    - Dst: http_auth_params_clone
      Src: /src/dovecot/src/lib-http/http-auth.c:401,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - struct http_auth_challenge*
    - struct http_auth_challenge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 393
    functionDepth: 3
    functionLinenumber: 393
    functionLinenumberEnd: 402
    functionName: http_auth_challenge_copy
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - http_auth_params_clone
    linkageType: ''
    returnType: void
    signature: "void http_auth_challenge_copy(pool_t pool,\n\tstruct http_auth_challenge
      *dst,\n\tconst struct http_auth_challenge *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new::p_new
      Src: /src/dovecot/src/lib-http/http-auth.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - src
    argTypes:
    - pool_t
    - struct http_auth_challenge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 414
    functionName: http_auth_challenge_clone
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - p_new::p_new
    linkageType: ''
    returnType: struct http_auth_challenge
    signature: "struct http_auth_challenge *\nhttp_auth_challenge_clone(pool_t pool,\n\tconst
      struct http_auth_challenge *src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:420,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:422,1
    - Dst: http_auth_params_clone
      Src: /src/dovecot/src/lib-http/http-auth.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - pool
    - dst
    - src
    argTypes:
    - pool_t
    - struct http_auth_credentials*
    - struct http_auth_credentials*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 416
    functionDepth: 3
    functionLinenumber: 416
    functionLinenumberEnd: 425
    functionName: http_auth_credentials_copy
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - http_auth_params_clone
    linkageType: ''
    returnType: void
    signature: "void http_auth_credentials_copy(pool_t pool,\n\tstruct http_auth_credentials
      *dst,\n\tconst struct http_auth_credentials *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new::p_new
      Src: /src/dovecot/src/lib-http/http-auth.c:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - src
    argTypes:
    - pool_t
    - struct http_auth_credentials*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 437
    functionName: http_auth_credentials_clone
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - p_new::p_new
    linkageType: ''
    returnType: struct http_auth_credentials
    signature: "struct http_auth_credentials *\nhttp_auth_credentials_clone(pool_t
      pool,\n\tconst struct http_auth_credentials *src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-auth.c:446,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-auth.c:451,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-http/http-auth.c:453,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-auth.c:455,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-auth.c:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - chlng
    - realm
    argTypes:
    - struct http_auth_challenge*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 458
    functionName: http_auth_basic_challenge_init
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - t_strdup
    - t_array_init
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void http_auth_basic_challenge_init(struct http_auth_challenge *chlng,\n\tconst
      char *realm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-auth.c:466,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-auth.c:467,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-http/http-auth.c:467,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-auth.c:469,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-http/http-auth.c:470,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-http/http-auth.c:471,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/http-auth.c:471,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-auth.c:473,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-auth.c:475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - crdts
    - username
    - password
    argTypes:
    - struct http_auth_credentials*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 460
    functionDepth: 8
    functionLinenumber: 460
    functionLinenumberEnd: 476
    functionName: http_auth_basic_credentials_init
    functionSourceFile: /src/dovecot/src/lib-http/http-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strchr
    - t_str_new
    - str_c
    - strlen
    - base64_encode
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void http_auth_basic_credentials_init(struct http_auth_credentials
      *crdts,\n\tconst char *username, const char *password)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - req
    - ','
    - output
    - ','
    - max_size
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 226
    functionName: http_server_request_forward_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "http_server_request_forward_payload(req, output, max_size, \\\n\t\t\t\t\t
      \   callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - req
    - ','
    - buffer
    - ','
    - max_size
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 238
    functionName: http_server_request_buffer_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "http_server_request_buffer_payload(req, buffer, max_size, \\\n\t\t\t\t\t
      \  callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - req
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 250
    functionName: http_server_request_handle_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_server_request_handle_payload(req, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - req
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 308
    functionName: http_server_request_set_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-server.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_server_request_set_destroy_callback(req, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - server
    - ','
    - pool
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 398
    functionName: http_server_resource_create
    functionSourceFile: /src/dovecot/src/lib-http/http-server.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_server_resource_create(server, pool, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - req
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 421
    functionName: http_server_resource_set_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-server.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_server_resource_set_destroy_callback(req, callback, context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:32,1
    - Dst: http_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 34
    functionName: http_server_ostream_output_error
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - http_server_connection_handle_output_error
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_server_ostream_output_error(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:42,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 49
    functionName: http_server_ostream_output_start
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void http_server_ostream_output_start(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:56,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:57,1
    - Dst: wrapper_ostream_output_available
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hsostream
    argTypes:
    - struct http_server_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: http_server_ostream_output_available
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_output_available
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_ostream_output_available(\n\tstruct http_server_ostream
      *hsostream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:68,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: http_server_ostream_output_ready
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool http_server_ostream_output_ready(struct wrapper_ostream *wostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:79,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:80,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:82,1
    - Dst: http_server_response_finish_payload_out
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: http_server_ostream_output_finish
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - http_server_response_finish_payload_out
    linkageType: ''
    returnType: int
    signature: int http_server_ostream_output_finish(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:95,1
    - Dst: http_server_connection_output_halt
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 102
    functionName: http_server_ostream_output_halt
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_server_connection_output_halt
    linkageType: ''
    returnType: void
    signature: void http_server_ostream_output_halt(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:112,1
    - Dst: http_server_connection_output_resume
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 115
    functionName: http_server_ostream_output_resume
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_server_connection_output_resume
    linkageType: ''
    returnType: void
    signature: void http_server_ostream_output_resume(struct wrapper_ostream *wostream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:127,1
    - Dst: http_server_connection_stop_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:130,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - wostream
    - sender_blocking
    argTypes:
    - struct wrapper_ostream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 135
    functionName: http_server_ostream_output_update_timeouts
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_server_connection_start_idle_timeout
    - http_server_connection_stop_idle_timeout
    linkageType: ''
    returnType: void
    signature: "void http_server_ostream_output_update_timeouts(struct wrapper_ostream
      *wostream,\n\t\t\t\t\t   bool sender_blocking)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:143,1
    - Dst: http_server_response_unref
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:146,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:151,1
    - Dst: http_server_response_finish_payload_out
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:152,1
    - Dst: http_server_response_unref
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 155
    functionName: http_server_ostream_close
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_server_response_unref
    - i_assert
    - http_server_response_finish_payload_out
    linkageType: ''
    returnType: void
    signature: void http_server_ostream_close(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:164,1
    - Dst: http_server_response_unref
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:167,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:171,1
    - Dst: http_server_request_abort
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - wostream
    argTypes:
    - struct wrapper_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 177
    functionName: http_server_ostream_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_server_response_unref
    - i_assert
    - http_server_request_abort
    linkageType: ''
    returnType: void
    signature: void http_server_ostream_destroy(struct wrapper_ostream *wostream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:189,1
    - Dst: http_server_connection_ref
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:191,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:199,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:205,1
    - Dst: http_server_connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - wostream
    - ioloop
    argTypes:
    - struct wrapper_ostream*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 179
    functionDepth: 5
    functionLinenumber: 179
    functionLinenumberEnd: 210
    functionName: http_server_ostream_wait_begin
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_server_connection_switch_ioloop_to
    - i_stream_read_eof
    - i_stream_unref
    - http_server_connection_ref
    linkageType: ''
    returnType: struct ioloop
    signature: "struct ioloop *\nhttp_server_ostream_wait_begin(struct wrapper_ostream
      *wostream,\n\t\t\t       struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:220,1
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - wostream
    - prev_ioloop
    argTypes:
    - struct wrapper_ostream*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 222
    functionName: http_server_ostream_wait_end
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - http_server_connection_switch_ioloop_to
    - http_server_connection_unref
    linkageType: ''
    returnType: void
    signature: "void http_server_ostream_wait_end(struct wrapper_ostream *wostream,\n\t\t\t
      \    struct ioloop *prev_ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:229,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:231,1
    - Dst: wrapper_ostream_continue
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - hsostream
    argTypes:
    - struct http_server_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 224
    functionDepth: 6
    functionLinenumber: 224
    functionLinenumberEnd: 235
    functionName: http_server_ostream_continue
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - i_assert
    - wrapper_ostream_continue
    linkageType: ''
    returnType: int
    signature: int http_server_ostream_continue(struct http_server_ostream *hsostream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_get_buffered_size
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hsostream
    - size_r
    argTypes:
    - struct http_server_ostream*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: http_server_ostream_get_size
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_get_buffered_size
    linkageType: ''
    returnType: bool
    signature: "bool http_server_ostream_get_size(struct http_server_ostream *hsostream,\n\t\t\t\t
      \ uoff_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:253,1
    - Dst: http_server_connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - wostream
    - ioloop
    argTypes:
    - struct wrapper_ostream*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 256
    functionName: http_server_ostream_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - http_server_connection_switch_ioloop_to
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_ostream_switch_ioloop_to(struct wrapper_ostream *wostream,\n\t\t\t\t
      \    struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:264,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:266,1
    - Dst: http_server_response_ref
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:269,1
    - Dst: wrapper_ostream_create
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 3
    argNames:
    - resp
    - max_buffer_size
    - blocking
    argTypes:
    - struct http_server_response*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 258
    functionDepth: 4
    functionLinenumber: 258
    functionLinenumberEnd: 293
    functionName: http_server_ostream_create
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_create
    - http_server_response_ref
    - i_assert
    - i_new
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\nhttp_server_ostream_create(struct http_server_response
      *resp,\n\t\t\t   size_t max_buffer_size, bool blocking)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:298,1
    - Dst: wrapper_ostream_output_destroyed
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hsostream
    argTypes:
    - struct http_server_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 301
    functionName: http_server_ostream_response_finished
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - e_debug
    - wrapper_ostream_output_destroyed
    linkageType: ''
    returnType: void
    signature: "void http_server_ostream_response_finished(\n\tstruct http_server_ostream
      *hsostream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:306,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:309,1
    - Dst: wrapper_ostream_output_destroyed
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:313,1
    - Dst: wrapper_ostream_notify_error
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - hsostream
    argTypes:
    - struct http_server_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 315
    functionName: http_server_ostream_response_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - e_debug
    - wrapper_ostream_notify_error
    - i_assert
    - wrapper_ostream_output_destroyed
    linkageType: ''
    returnType: void
    signature: "void http_server_ostream_response_destroyed(\n\tstruct http_server_ostream
      *hsostream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hsostream
    argTypes:
    - struct http_server_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 321
    functionName: http_server_ostream_get_output
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct ostream
    signature: 'struct ostream *

      http_server_ostream_get_output(struct http_server_ostream *hsostream)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wrapper_ostream_set_error
      Src: /src/dovecot/src/lib-http/http-server-ostream.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hsostream
    - stream_errno
    - stream_error
    argTypes:
    - struct http_server_ostream*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 323
    functionDepth: 3
    functionLinenumber: 323
    functionLinenumberEnd: 328
    functionName: http_server_ostream_set_error
    functionSourceFile: /src/dovecot/src/lib-http/http-server-ostream.c
    functionUses: 0
    functionsReached:
    - wrapper_ostream_set_error
    linkageType: ''
    returnType: void
    signature: "void http_server_ostream_set_error(struct http_server_ostream *hsostream,\n\t\t\t\t
      \  int stream_errno, const char *stream_error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-http/http-server-request.c:26,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-http/http-server-request.c:27,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-http/http-server-request.c:27,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-http/http-server-request.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - req
    - format
    argTypes:
    - struct http_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 20
    functionDepth: 11
    functionLinenumber: 20
    functionLinenumberEnd: 29
    functionName: http_server_request_client_error
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - t_strdup_vprintf
    - e_info
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void http_server_request_client_error(struct http_server_request *req,\n\t\t\t\t
      const char *format, ...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-server-request.c:39,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-server-request.c:40,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-server-request.c:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 35
    functionDepth: 11
    functionLinenumber: 35
    functionLinenumberEnd: 45
    functionName: http_server_request_label
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *http_server_request_label(struct http_server_request *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-http/http-server-request.c:50,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-http/http-server-request.c:52,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-http/http-server-request.c:53,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-server-request.c:54,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-server-request.c:55,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/http-server-request.c:56,1
    - Dst: http_server_request_label
      Src: /src/dovecot/src/lib-http/http-server-request.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 47
    functionDepth: 12
    functionLinenumber: 47
    functionLinenumberEnd: 57
    functionName: http_server_request_update_event
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - t_strdup_printf
    - str_sanitize
    - http_server_request_label
    - event_add_str
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void http_server_request_update_event(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/http-server-request.c:66,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-server-request.c:68,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-server-request.c:74,1
    - Dst: http_server_request_update_event
      Src: /src/dovecot/src/lib-http/http-server-request.c:77,1
    - Dst: http_server_connection_add_request
      Src: /src/dovecot/src/lib-http/http-server-request.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 59
    functionDepth: 13
    functionLinenumber: 59
    functionLinenumberEnd: 81
    functionName: http_server_request_new
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - event_create
    - p_new
    - http_server_connection_add_request
    - http_server_request_update_event
    linkageType: ''
    returnType: struct http_server_request
    signature: 'struct http_server_request *

      http_server_request_new(struct http_server_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: http_server_request_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 4
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_server_request_ref(struct http_server_request *req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:94,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:100,1
    - Dst: http_server_connection_remove_request
      Src: /src/dovecot/src/lib-http/http-server-request.c:104,1
    - Dst: struct http_server_request*::destroy_callback
      Src: /src/dovecot/src/lib-http/http-server-request.c:108,1
    - Dst: http_server_response_request_free
      Src: /src/dovecot/src/lib-http/http-server-request.c:113,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:114,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:115,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct http_server_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 117
    functionName: http_server_request_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 4
    functionsReached:
    - struct http_server_request*::destroy_callback
    - event_unref
    - e_debug
    - http_server_response_request_free
    - pool_unref
    - http_server_connection_remove_request
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool http_server_request_unref(struct http_server_request **_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - req
    - close
    argTypes:
    - struct http_server_request*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: http_server_request_connection_close
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_request_connection_close(struct http_server_request
      *req,\n\t\t\t\t\t  bool close)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:131,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-server-request.c:138,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:142,1
    - Dst: http_server_response_request_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:147,1
    - Dst: callback
      Src: /src/dovecot/src/lib-http/http-server-request.c:153,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct http_server_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 126
    functionDepth: 5
    functionLinenumber: 126
    functionLinenumberEnd: 157
    functionName: http_server_request_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - io_loop_stop
    - callback
    - http_server_request_unref
    - http_server_response_request_destroy
    linkageType: ''
    returnType: void
    signature: void http_server_request_destroy(struct http_server_request **_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - req
    - context
    argTypes:
    - struct http_server_request*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 166
    functionName: http_server_request_set_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http_server_request_set_destroy_callback(struct http_server_request
      *req,\n\t\t\t\t\t      void (*callback)(void *),\n\t\t\t\t\t      void *context)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:178,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:180,1
    - Dst: http_server_response_request_abort
      Src: /src/dovecot/src/lib-http/http-server-request.c:183,1
    - Dst: http_server_connection_remove_request
      Src: /src/dovecot/src/lib-http/http-server-request.c:188,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-http/http-server-request.c:200,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/http-server-request.c:201,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/http-server-request.c:202,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:206,1
    - Dst: http_server_request_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:213,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - _req
    - reason
    argTypes:
    - struct http_server_request**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 168
    functionDepth: 6
    functionLinenumber: 168
    functionLinenumberEnd: 214
    functionName: http_server_request_abort
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 1
    functionsReached:
    - http_server_request_destroy
    - e_debug
    - strlen
    - o_stream_nsend
    - http_server_response_request_abort
    - http_server_connection_remove_request
    - o_stream_flush
    - http_server_connection_close
    linkageType: ''
    returnType: void
    signature: "void http_server_request_abort(struct http_server_request **_req,\n\t\t\t
      \      const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_ref
      Src: /src/dovecot/src/lib-http/http-server-request.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: http_server_request_immune_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_request_ref
    linkageType: ''
    returnType: void
    signature: void http_server_request_immune_ref(struct http_server_request *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:226,1
    - Dst: http_server_request_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:230,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct http_server_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 222
    functionDepth: 6
    functionLinenumber: 222
    functionLinenumberEnd: 233
    functionName: http_server_request_immune_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_server_request_destroy
    - http_server_request_unref
    linkageType: ''
    returnType: void
    signature: void http_server_request_immune_unref(struct http_server_request **_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 239
    functionName: http_server_request_get
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: struct http_request
    signature: 'struct http_request *

      http_server_request_get(struct http_server_request *req)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 244
    functionName: http_server_request_get_pool
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: pool_t
    signature: pool_t http_server_request_get_pool(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 250
    functionName: http_server_request_get_response
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct http_server_response
    signature: 'struct http_server_response *

      http_server_request_get_response(struct http_server_request *req)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 256
    functionName: http_server_request_get_server
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct http_server
    signature: 'struct http_server *

      http_server_request_get_server(struct http_server_request *req)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_request_header_get
      Src: /src/dovecot/src/lib-http/http-server-request.c:263,1
    - Dst: http_auth_parse_credentials
      Src: /src/dovecot/src/lib-http/http-server-request.c:267,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/http-server-request.c:268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - req
    - credentials
    argTypes:
    - struct http_server_request*
    - struct http_auth_credentials*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 258
    functionDepth: 6
    functionLinenumber: 258
    functionLinenumberEnd: 272
    functionName: http_server_request_get_auth
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 1
    functionsReached:
    - strlen
    - http_auth_parse_credentials
    - http_request_header_get
    linkageType: ''
    returnType: int
    signature: "int http_server_request_get_auth(struct http_server_request *req,\n\t\t\t\t
      struct http_auth_credentials *credentials)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 278
    functionName: http_server_request_is_finished
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_server_request_is_finished(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_is_new
      Src: /src/dovecot/src/lib-http/http-server-request.c:283,1
    - Dst: http_server_connection_pending_payload
      Src: /src/dovecot/src/lib-http/http-server-request.c:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 285
    functionName: http_server_request_is_complete
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_request_is_new
    - http_server_connection_pending_payload
    linkageType: ''
    returnType: bool
    signature: bool http_server_request_is_complete(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 291
    functionName: http_server_request_halt_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_server_request_halt_payload(struct http_server_request *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:295,1
    - Dst: http_server_connection_output_trigger
      Src: /src/dovecot/src/lib-http/http-server-request.c:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: http_server_request_continue_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_server_connection_output_trigger
    linkageType: ''
    returnType: void
    signature: void http_server_request_continue_payload(struct http_server_request
      *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/http-server-request.c:307,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/http-server-request.c:313,1
    - Dst: struct http_server_connection*::callbacks::handle_connect_request
      Src: /src/dovecot/src/lib-http/http-server-request.c:317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 319
    functionName: http_server_request_connect_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_request_fail
    - struct http_server_connection*::callbacks::handle_connect_request
    linkageType: ''
    returnType: void
    signature: void http_server_request_connect_callback(struct http_server_request
      *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-server-request.c:327,1
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/http-server-request.c:329,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/http-server-request.c:330,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/http-server-request.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 336
    functionName: http_server_request_default_handler
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - http_server_request_fail
    - http_server_response_create
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void http_server_request_default_handler(struct http_server_request
      *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_update_event
      Src: /src/dovecot/src/lib-http/http-server-request.c:340,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-http/http-server-request.c:341,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:343,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-http/http-server-request.c:343,1
    - Dst: http_server_request_label
      Src: /src/dovecot/src/lib-http/http-server-request.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 338
    functionDepth: 13
    functionLinenumber: 338
    functionLinenumberEnd: 348
    functionName: http_server_request_received
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_server_request_update_event
    - struct event_passthrough*::event
    - event_create_passthrough
    - http_server_request_label
    linkageType: ''
    returnType: void
    signature: void http_server_request_received(struct http_server_request *req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-server-request.c:354,1
    - Dst: http_server_request_connect_callback
      Src: /src/dovecot/src/lib-http/http-server-request.c:356,1
    - Dst: http_server_resource_callback
      Src: /src/dovecot/src/lib-http/http-server-request.c:360,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-server-request.c:363,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:364,1
    - Dst: http_server_request_default_handler
      Src: /src/dovecot/src/lib-http/http-server-request.c:367,1
    - Dst: struct http_server_connection*::callbacks::handle_request
      Src: /src/dovecot/src/lib-http/http-server-request.c:370,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 371
    functionName: http_server_request_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    - http_server_request_connect_callback
    - e_debug
    - struct http_server_connection*::callbacks::handle_request
    - array_count
    - http_server_request_default_handler
    - http_server_resource_callback
    linkageType: ''
    returnType: void
    signature: void http_server_request_callback(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:375,1
    - Dst: http_server_connection_output_trigger
      Src: /src/dovecot/src/lib-http/http-server-request.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 379
    functionName: http_server_request_ready_to_respond
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_server_connection_output_trigger
    linkageType: ''
    returnType: void
    signature: void http_server_request_ready_to_respond(struct http_server_request
      *req)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:385,1
    - Dst: http_server_request_ref
      Src: /src/dovecot/src/lib-http/http-server-request.c:388,1
    - Dst: http_server_payload_handler_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:391,1
    - Dst: http_server_request_is_complete
      Src: /src/dovecot/src/lib-http/http-server-request.c:399,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:400,1
    - Dst: http_server_connection_input_resume
      Src: /src/dovecot/src/lib-http/http-server-request.c:402,1
    - Dst: http_server_connection_input_set_pending
      Src: /src/dovecot/src/lib-http/http-server-request.c:403,1
    - Dst: http_server_request_ready_to_respond
      Src: /src/dovecot/src/lib-http/http-server-request.c:406,1
    - Dst: http_server_connection_output_trigger
      Src: /src/dovecot/src/lib-http/http-server-request.c:409,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-server-request.c:414,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:417,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 381
    functionDepth: 5
    functionLinenumber: 381
    functionLinenumberEnd: 418
    functionName: http_server_request_submit_response
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_connection_input_set_pending
    - http_server_request_is_complete
    - http_server_connection_output_trigger
    - i_unreached
    - e_debug
    - http_server_request_ready_to_respond
    - http_server_connection_input_resume
    - http_server_payload_handler_destroy
    - http_server_request_unref
    - i_assert
    - http_server_request_ref
    linkageType: ''
    returnType: void
    signature: void http_server_request_submit_response(struct http_server_request
      *req)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:427,1
    - Dst: http_server_connection_remove_request
      Src: /src/dovecot/src/lib-http/http-server-request.c:430,1
    - Dst: http_server_response_request_finished
      Src: /src/dovecot/src/lib-http/http-server-request.c:434,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-http/http-server-request.c:440,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-request.c:444,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-http/http-server-request.c:444,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:448,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-server-request.c:449,1
    - Dst: http_server_request_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:452,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:455,1
    - Dst: http_server_request_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:457,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:460,1
    - Dst: http_server_request_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:462,1
    - Dst: http_server_request_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:467,1
    - Dst: http_server_connection_tunnel
      Src: /src/dovecot/src/lib-http/http-server-request.c:469,1
    - Dst: http_server_connection_output_trigger
      Src: /src/dovecot/src/lib-http/http-server-request.c:474,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 420
    functionDepth: 11
    functionLinenumber: 420
    functionLinenumberEnd: 475
    functionName: http_server_request_finished
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_request_destroy
    - http_server_connection_output_trigger
    - e_debug
    - http_server_response_request_finished
    - t_strdup_printf
    - struct event_passthrough*::event
    - event_create_passthrough
    - http_server_connection_remove_request
    - http_server_connection_tunnel
    - i_assert
    - http_server_connection_close
    linkageType: ''
    returnType: void
    signature: void http_server_request_finished(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_fail_full
      Src: /src/dovecot/src/lib-http/http-server-request.c:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - req
    - status
    - reason
    argTypes:
    - struct http_server_request*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 522
    functionName: http_server_request_fail
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 13
    functionsReached:
    - http_server_request_fail_full
    linkageType: ''
    returnType: void
    signature: "void http_server_request_fail(struct http_server_request *req,\n\t\t\t
      \     unsigned int status, const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_connection_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:527,1
    - Dst: http_server_request_fail_full
      Src: /src/dovecot/src/lib-http/http-server-request.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - req
    - status
    - reason
    argTypes:
    - struct http_server_request*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 524
    functionDepth: 2
    functionLinenumber: 524
    functionLinenumberEnd: 529
    functionName: http_server_request_fail_close
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 2
    functionsReached:
    - http_server_request_connection_close
    - http_server_request_fail_full
    linkageType: ''
    returnType: void
    signature: "void http_server_request_fail_close(struct http_server_request *req,\n\t\t\t\t
      \   unsigned int status, const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-http/http-server-request.c:537,1
    - Dst: http_server_request_fail_full
      Src: /src/dovecot/src/lib-http/http-server-request.c:538,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-http/http-server-request.c:539,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-http/http-server-request.c:540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - req
    - status
    - reason
    - format
    argTypes:
    - struct http_server_request*
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 531
    functionDepth: 11
    functionLinenumber: 531
    functionLinenumberEnd: 541
    functionName: http_server_request_fail_text
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 10
    functionsReached:
    - t_strdup_vprintf
    - va_end
    - http_server_request_fail_full
    - va_start
    linkageType: ''
    returnType: void
    signature: "void http_server_request_fail_text(struct http_server_request *req,\n\t\t\t\t
      \  unsigned int status, const char *reason,\n\t\t\t\t   const char *format,
      ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_create_fail_response
      Src: /src/dovecot/src/lib-http/http-server-request.c:554,1
    - Dst: http_server_response_add_auth
      Src: /src/dovecot/src/lib-http/http-server-request.c:556,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/http-server-request.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - req
    - reason
    - chlng
    argTypes:
    - struct http_server_request*
    - char*
    - struct http_auth_challenge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 558
    functionName: http_server_request_fail_auth
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_request_create_fail_response
    - http_server_response_add_auth
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: "void http_server_request_fail_auth(struct http_server_request *req,\n\t\t\t\t
      \  const char *reason,\n\t\t\t\t   const struct http_auth_challenge *chlng)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_auth_basic_challenge_init
      Src: /src/dovecot/src/lib-http/http-server-request.c:565,1
    - Dst: http_server_request_fail_auth
      Src: /src/dovecot/src/lib-http/http-server-request.c:566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - req
    - reason
    - realm
    argTypes:
    - struct http_server_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 560
    functionDepth: 3
    functionLinenumber: 560
    functionLinenumberEnd: 567
    functionName: http_server_request_fail_auth_basic
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_request_fail_auth
    - http_auth_basic_challenge_init
    linkageType: ''
    returnType: void
    signature: "void http_server_request_fail_auth_basic(struct http_server_request
      *req,\n\t\t\t\t\t const char *reason, const char *realm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_create_fail_response
      Src: /src/dovecot/src/lib-http/http-server-request.c:577,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/http-server-request.c:579,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/http-server-request.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - req
    - allow
    argTypes:
    - struct http_server_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 581
    functionName: http_server_request_fail_bad_method
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 2
    functionsReached:
    - http_server_request_create_fail_response
    - http_server_response_submit
    - http_server_response_add_header
    linkageType: ''
    returnType: void
    signature: "void http_server_request_fail_bad_method(struct http_server_request
      *req,\n\t\t\t\t\t const char *allow)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:605,1
    - Dst: http_server_connection_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-server-request.c:606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - ioloop
    argTypes:
    - struct istream_private*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 607
    functionName: http_server_istream_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_connection_switch_ioloop
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_istream_switch_ioloop_to(struct istream_private *stream,\n\t\t\t\t
      \    struct ioloop *ioloop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib-http/http-server-request.c:616,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-server-request.c:618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hsristream
    argTypes:
    - struct http_server_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 609
    functionDepth: 3
    functionLinenumber: 609
    functionLinenumberEnd: 620
    functionName: http_server_istream_read_any
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - i_stream_read_copy_from_parent
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: void http_server_istream_read_any(struct http_server_istream *hsristream)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-http/http-server-request.c:639,1
    - Dst: i_stream_read_copy_from_parent
      Src: /src/dovecot/src/lib-http/http-server-request.c:645,1
    - Dst: http_server_connection_ref
      Src: /src/dovecot/src/lib-http/http-server-request.c:650,1
    - Dst: http_server_request_ref
      Src: /src/dovecot/src/lib-http/http-server-request.c:651,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:653,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/http-server-request.c:654,1
    - Dst: http_server_connection_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-server-request.c:655,1
    - Dst: http_server_connection_output_trigger
      Src: /src/dovecot/src/lib-http/http-server-request.c:659,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-http/http-server-request.c:662,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/http-server-request.c:666,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/http-server-request.c:668,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-server-request.c:670,1
    - Dst: http_server_connection_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-server-request.c:671,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-server-request.c:672,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:673,1
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:677,1
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:679,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 622
    functionDepth: 12
    functionLinenumber: 622
    functionLinenumberEnd: 683
    functionName: http_server_istream_read
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - io_loop_run
    - http_server_connection_output_trigger
    - io_add_istream
    - i_stream_read_copy_from_parent
    - http_server_connection_switch_ioloop
    - io_remove
    - io_loop_set_current
    - io_loop_destroy
    - io_loop_create
    - http_server_connection_ref
    - i_stream_seek
    - http_server_connection_unref
    - http_server_request_unref
    - i_assert
    - http_server_request_ref
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t http_server_istream_read(struct istream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-http/http-server-request.c:697,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 685
    functionDepth: 4
    functionLinenumber: 685
    functionLinenumberEnd: 699
    functionName: http_server_istream_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - i_stream_seek
    linkageType: ''
    returnType: void
    signature: void http_server_istream_destroy(struct iostream_private *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:708,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-server-request.c:710,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-http/http-server-request.c:725,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-http/http-server-request.c:726,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - req
    - blocking
    argTypes:
    - struct http_server_request*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 701
    functionDepth: 4
    functionLinenumber: 701
    functionLinenumberEnd: 729
    functionName: http_server_request_get_payload_input
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 2
    functionsReached:
    - i_stream_get_fd
    - i_new
    - i_stream_unref
    - i_stream_create
    - i_assert
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\nhttp_server_request_get_payload_input(struct http_server_request
      *req,\n\t\t\t\t      bool blocking)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:741,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - handler
    - req
    argTypes:
    - struct http_server_payload_handler*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 735
    functionDepth: 1
    functionLinenumber: 735
    functionLinenumberEnd: 747
    functionName: http_server_payload_handler_init
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_payload_handler_init(struct http_server_payload_handler
      *handler,\n\t\t\t\t struct http_server_request *req)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:761,1
    - Dst: struct http_server_payload_handler*::destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:764,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - _handler
    argTypes:
    - struct http_server_payload_handler**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 765
    functionName: http_server_payload_handler_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 1
    functionsReached:
    - struct http_server_payload_handler*::destroy
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_payload_handler_destroy(\n\tstruct http_server_payload_handler
      **_handler)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct http_server_payload_handler*::switch_ioloop
      Src: /src/dovecot/src/lib-http/http-server-request.c:771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - handler
    - ioloop
    argTypes:
    - struct http_server_payload_handler*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 772
    functionName: http_server_payload_handler_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - struct http_server_payload_handler*::switch_ioloop
    linkageType: ''
    returnType: void
    signature: "void http_server_payload_handler_switch_ioloop(\n\tstruct http_server_payload_handler
      *handler, struct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_pump_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - handler
    argTypes:
    - struct http_server_payload_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 785
    functionDepth: 2
    functionLinenumber: 785
    functionLinenumberEnd: 792
    functionName: payload_handler_pump_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - iostream_pump_unref
    linkageType: ''
    returnType: void
    signature: void payload_handler_pump_destroy(struct http_server_payload_handler
      *handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iostream_pump_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-server-request.c:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - handler
    - ioloop
    argTypes:
    - struct http_server_payload_handler*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 794
    functionDepth: 2
    functionLinenumber: 794
    functionLinenumberEnd: 802
    functionName: payload_handler_pump_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - iostream_pump_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: "void payload_handler_pump_switch_ioloop(struct http_server_payload_handler
      *handler,\n\t\t\t\t   struct ioloop *ioloop)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: iostream_pump_get_input
      Src: /src/dovecot/src/lib-http/http-server-request.c:811,1
    - Dst: iostream_pump_get_output
      Src: /src/dovecot/src/lib-http/http-server-request.c:812,1
    - Dst: i_stream_read_eof
      Src: /src/dovecot/src/lib-http/http-server-request.c:816,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:817,1
    - Dst: struct http_server_payload_handler_pump*::callback
      Src: /src/dovecot/src/lib-http/http-server-request.c:823,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:827,1
    - Dst: http_server_request_client_error
      Src: /src/dovecot/src/lib-http/http-server-request.c:833,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-request.c:835,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-server-request.c:835,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:836,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-request.c:840,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-request.c:842,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/http-server-request.c:843,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:845,1
    - Dst: http_server_payload_handler_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:851,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - status
    - phandler
    argTypes:
    - enum iostream_pump_status
    - struct http_server_payload_handler_pump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 804
    functionDepth: 12
    functionLinenumber: 804
    functionLinenumberEnd: 852
    functionName: payload_handler_pump_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - o_stream_get_name
    - iostream_pump_get_output
    - o_stream_get_error
    - i_stream_read_eof
    - http_server_request_client_error
    - i_stream_get_error
    - e_error
    - struct http_server_payload_handler_pump*::callback
    - iostream_pump_get_input
    - http_server_payload_handler_destroy
    - http_server_request_fail_close
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void payload_handler_pump_callback(enum iostream_pump_status status,\n\t\t\t
      \     struct http_server_payload_handler_pump *phandler)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:867,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/http-server-request.c:870,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-http/http-server-request.c:872,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-request.c:875,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-request.c:877,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-server-request.c:878,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:879,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:884,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/http-server-request.c:889,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-server-request.c:892,1
    - Dst: http_server_payload_handler_init
      Src: /src/dovecot/src/lib-http/http-server-request.c:893,1
    - Dst: iostream_pump_create
      Src: /src/dovecot/src/lib-http/http-server-request.c:899,1
    - Dst: iostream_pump_set_completion_callback
      Src: /src/dovecot/src/lib-http/http-server-request.c:900,1
    - Dst: iostream_pump_start
      Src: /src/dovecot/src/lib-http/http-server-request.c:903,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:904,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 4
    argNames:
    - req
    - output
    - max_size
    - context
    argTypes:
    - struct http_server_request*
    - struct ostream*
    - uoff_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 855
    functionDepth: 5
    functionLinenumber: 855
    functionLinenumberEnd: 905
    functionName: http_server_request_forward_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 1
    functionsReached:
    - iostream_pump_set_completion_callback
    - p_new
    - iostream_pump_create
    - i_stream_create_limit
    - i_stream_ref
    - e_error
    - i_stream_get_size
    - i_stream_get_error
    - http_server_payload_handler_init
    - iostream_pump_start
    - http_server_request_fail_close
    - i_stream_get_name
    - i_assert
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void http_server_request_forward_payload(struct http_server_request
      *req,\n\t\t\t\t\t struct ostream *output,\n\t\t\t\t\t uoff_t max_size,\n\t\t\t\t\t
      void (*callback)(void *),\n\t\t\t\t\t void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-http/http-server-request.c:915,1
    - Dst: http_server_request_forward_payload
      Src: /src/dovecot/src/lib-http/http-server-request.c:916,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-request.c:918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - req
    - buffer
    - max_size
    - context
    argTypes:
    - struct http_server_request*
    - buffer_t*
    - uoff_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 908
    functionDepth: 4
    functionLinenumber: 908
    functionLinenumberEnd: 919
    functionName: http_server_request_buffer_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 1
    functionsReached:
    - o_stream_unref
    - http_server_request_forward_payload
    - o_stream_create_buffer
    linkageType: ''
    returnType: void
    signature: "void http_server_request_buffer_payload(struct http_server_request
      *req,\n\t\t\t\t\tbuffer_t *buffer, uoff_t max_size,\n\t\t\t\t\tvoid (*callback)(void
      *),\n\t\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/http-server-request.c:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - handler
    argTypes:
    - struct http_server_payload_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 932
    functionDepth: 5
    functionLinenumber: 932
    functionLinenumberEnd: 939
    functionName: payload_handler_raw_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - io_remove
    linkageType: ''
    returnType: void
    signature: void payload_handler_raw_destroy(struct http_server_payload_handler
      *handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_io_to
      Src: /src/dovecot/src/lib-http/http-server-request.c:948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - handler
    - ioloop
    argTypes:
    - struct http_server_payload_handler*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 941
    functionDepth: 6
    functionLinenumber: 941
    functionLinenumberEnd: 949
    functionName: payload_handler_raw_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - io_loop_move_io_to
    linkageType: ''
    returnType: void
    signature: "void payload_handler_raw_switch_ioloop(struct http_server_payload_handler
      *handler,\n\t\t\t\t  struct ioloop *ioloop)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct http_server_payload_handler_raw*::callback
      Src: /src/dovecot/src/lib-http/http-server-request.c:961,1
    - Dst: http_server_request_client_error
      Src: /src/dovecot/src/lib-http/http-server-request.c:967,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-request.c:969,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-server-request.c:970,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-request.c:971,1
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-http/http-server-request.c:973,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-request.c:974,1
    - Dst: http_server_payload_handler_destroy
      Src: /src/dovecot/src/lib-http/http-server-request.c:981,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - rhandler
    argTypes:
    - struct http_server_payload_handler_raw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 951
    functionDepth: 12
    functionLinenumber: 951
    functionLinenumberEnd: 983
    functionName: payload_handler_raw_input
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - i_stream_have_bytes_left
    - http_server_request_client_error
    - struct http_server_payload_handler_raw*::callback
    - i_stream_get_error
    - http_server_payload_handler_destroy
    - http_server_request_fail_close
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: void payload_handler_raw_input(struct http_server_payload_handler_raw
      *rhandler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-server-request.c:993,1
    - Dst: http_server_payload_handler_init
      Src: /src/dovecot/src/lib-http/http-server-request.c:994,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-http/http-server-request.c:1000,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-http/http-server-request.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - req
    - context
    argTypes:
    - struct http_server_request*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 986
    functionDepth: 3
    functionLinenumber: 986
    functionLinenumberEnd: 1003
    functionName: http_server_request_handle_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 1
    functionsReached:
    - http_server_payload_handler_init
    - i_stream_set_input_pending
    - p_new
    - io_add_istream
    linkageType: ''
    returnType: void
    signature: "void http_server_request_handle_payload(struct http_server_request
      *req,\n\t\t\t\t\tvoid (*callback)(void *context),\n\t\t\t\t\tvoid *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_create
      Src: /src/dovecot/src/lib-http/http-server-request.c:1010,1
    - Dst: http_server_response_add_permanent_header
      Src: /src/dovecot/src/lib-http/http-server-request.c:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - req
    - key
    - value
    argTypes:
    - struct http_server_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1005
    functionDepth: 1
    functionLinenumber: 1005
    functionLinenumberEnd: 1012
    functionName: http_server_request_add_response_header
    functionSourceFile: /src/dovecot/src/lib-http/http-server-request.c
    functionUses: 0
    functionsReached:
    - http_server_response_create
    - http_server_response_add_permanent_header
    linkageType: ''
    returnType: void
    signature: "void http_server_request_add_response_header(struct http_server_request
      *req,\n\t\t\t\t\t     const char *key, const char *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 438
    functionName: http_client_peer_addr_is_https
    functionSourceFile: /src/dovecot/src/lib-http/http-client-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_client_peer_addr_is_https(const struct http_client_peer_addr
      *addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 451
    functionName: http_client_peer_addr_get_https_name
    functionSourceFile: /src/dovecot/src/lib-http/http-client-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      http_client_peer_addr_get_https_name(const struct http_client_peer_addr *addr)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-private.h:462,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/http-client-private.h:463,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-private.h:466,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/http-client-private.h:467,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-private.h:470,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-private.h:474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 453
    functionDepth: 11
    functionLinenumber: 453
    functionLinenumberEnd: 476
    functionName: http_client_peer_addr2str
    functionSourceFile: /src/dovecot/src/lib-http/http-client-private.h
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - net_ip2addr
    - i_unreached
    linkageType: ''
    returnType: char
    signature: 'char *

      http_client_peer_addr2str(const struct http_client_peer_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 486
    functionName: http_client_request_to_proxy
    functionSourceFile: /src/dovecot/src/lib-http/http-client-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_client_request_to_proxy(const struct http_client_request
      *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 681
    functionName: http_client_host_get_ips_count
    functionSourceFile: /src/dovecot/src/lib-http/http-client-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_host_get_ips_count(struct http_client_host
      *host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-private.h:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - host
    - idx
    argTypes:
    - struct http_client_host*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 688
    functionName: http_client_host_get_ip
    functionSourceFile: /src/dovecot/src/lib-http/http-client-private.h
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: struct ip_addr
    signature: 'struct ip_addr *

      http_client_host_get_ip(struct http_client_host *host, unsigned int idx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - host
    argTypes:
    - struct http_client_host*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 694
    functionName: http_client_host_ready
    functionSourceFile: /src/dovecot/src/lib-http/http-client-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_client_host_ready(struct http_client_host *host)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - target_format
    argTypes:
    - enum http_request_target_format
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 286
    functionDepth: 11
    functionLinenumber: 286
    functionLinenumberEnd: 300
    functionName: _request_target_format
    functionSourceFile: /src/dovecot/src/lib-http/test-http-request-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      _request_target_format(enum http_request_target_format target_format)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:307,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:312,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:312,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:316,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:316,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:318,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:321,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:324,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:324,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:328,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:328,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:332,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:332,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:336,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:336,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:338,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - urlt
    - urlp
    argTypes:
    - struct http_url*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 302
    functionDepth: 11
    functionLinenumber: 302
    functionLinenumberEnd: 340
    functionName: test_http_request_url_equal
    functionSourceFile: /src/dovecot/src/lib-http/test-http-request-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void test_http_request_url_equal(const struct http_url *urlt,\n\t\t\t
      \   const struct http_url *urlp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:347,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:347,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:351,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:351,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:353,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:357,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:357,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:361,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:361,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:363,1
    - Dst: test_http_request_url_equal
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:366,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:368,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:368,1
    - Dst: _request_target_format
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:369,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:372,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:372,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:376,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:376,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:379,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:379,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:384,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:384,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:385,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:388,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:388,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:389,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:390,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - test
    - request
    - payload
    argTypes:
    - struct http_request_valid_parse_test*
    - struct http_request
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 342
    functionDepth: 12
    functionLinenumber: 342
    functionLinenumberEnd: 392
    functionName: test_http_request_equal
    functionSourceFile: /src/dovecot/src/lib-http/test-http-request-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_http_request_url_equal
    - t_strdup_printf
    - test_out
    - str_sanitize
    - _request_target_format
    linkageType: ''
    returnType: void
    signature: "void test_http_request_equal(const struct http_request_valid_parse_test
      *test,\n\t\t\tstruct http_request request, const char *payload)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:397,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:412,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:413,1
    - Dst: http_request_parser_init
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:415,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:418,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:418,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:422,1
    - Dst: http_request_parse_next
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:423,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:427,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:428,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:433,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:434,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:435,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:436,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:439,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:440,1
    - Dst: http_request_parse_next
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:444,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:449,1
    - Dst: test_http_request_equal
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:453,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:455,1
    - Dst: http_request_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:456,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 394
    functionDepth: 13
    functionLinenumber: 394
    functionLinenumberEnd: 457
    functionName: test_http_request_parse_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-request-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - buffer_create_dynamic
    - strlen
    - t_strdup_printf
    - buffer_set_used_size
    - http_request_parse_next
    - o_stream_create_buffer
    - o_stream_send_istream
    - test_end
    - test_istream_set_size
    - test_out_reason
    - test_http_request_equal
    - test_out
    - o_stream_destroy
    - http_request_parser_deinit
    - http_request_parser_init
    - test_istream_create_data
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_request_parse_valid(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - error
    argTypes:
    - enum http_request_parse_error
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 572
    functionDepth: 11
    functionLinenumber: 572
    functionLinenumberEnd: 596
    functionName: _request_parse_error
    functionSourceFile: /src/dovecot/src/lib-http/test-http-request-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: 'char *

      _request_parse_error(enum http_request_parse_error error)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:612,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:613,1
    - Dst: http_request_parser_init
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:614,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:616,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:618,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:618,1
    - Dst: http_request_parse_next
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:620,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:623,1
    - Dst: _request_parse_error
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:625,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:626,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:626,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:630,1
    - Dst: http_request_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:631,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 598
    functionDepth: 12
    functionLinenumber: 598
    functionLinenumberEnd: 632
    functionName: test_http_request_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-request-parser.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - http_request_parser_deinit
    - _request_parse_error
    - http_request_parser_init
    - strlen
    - t_strdup_printf
    - test_end
    - test_out
    - i_stream_unref
    - i_stream_create_from_data
    - http_request_parse_next
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_request_parse_invalid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:656,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:657,1
    - Dst: http_request_parser_init
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:659,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:661,1
    - Dst: http_request_parse_next
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:663,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:665,1
    - Dst: http_request_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:666,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:667,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:670,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:671,1
    - Dst: http_request_parser_init
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:673,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:674,1
    - Dst: http_request_parse_next
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:676,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:678,1
    - Dst: http_request_header_get
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:679,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:680,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:682,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:682,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:683,1
    - Dst: http_request_parse_next
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:685,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:687,1
    - Dst: http_request_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:688,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 645
    functionDepth: 11
    functionLinenumber: 645
    functionLinenumberEnd: 690
    functionName: test_http_request_parse_bad
    functionSourceFile: /src/dovecot/src/lib-http/test-http-request-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - http_request_parser_deinit
    - http_request_parser_init
    - t_strdup_printf
    - test_end
    - test_out
    - test_assert
    - i_stream_unref
    - i_stream_create_from_data
    - http_request_parse_next
    - test_begin
    - http_request_header_get
    linkageType: ''
    returnType: void
    signature: void test_http_request_parse_bad(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-request-parser.c:700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 692
    functionDepth: 7
    functionLinenumber: 692
    functionLinenumberEnd: 701
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-request-parser.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-message-parser.c:23,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/http-message-parser.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - parser
    - input
    - hdr_limits
    - max_payload_size
    - flags
    argTypes:
    - struct http_message_parser*
    - struct istream*
    - struct http_header_limits*
    - uoff_t
    - enum http_message_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 17
    functionDepth: 2
    functionLinenumber: 17
    functionLinenumberEnd: 30
    functionName: http_message_parser_init
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_stream_ref
    linkageType: ''
    returnType: void
    signature: "void http_message_parser_init(struct http_message_parser *parser,\n\t\t\t
      \     struct istream *input,\n\t\t\t      const struct http_header_limits *hdr_limits,\n\t\t\t
      \     uoff_t max_payload_size,\n\t\t\t      enum http_message_parse_flags flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_header_parser_deinit
      Src: /src/dovecot/src/lib-http/http-message-parser.c:35,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-message-parser.c:36,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-message-parser.c:37,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-message-parser.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: http_message_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 1
    functionsReached:
    - http_header_parser_deinit
    - pool_unref
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: void http_message_parser_deinit(struct http_message_parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-message-parser.c:44,1
    - Dst: http_header_parser_init
      Src: /src/dovecot/src/lib-http/http-message-parser.c:51,1
    - Dst: http_header_parser_reset
      Src: /src/dovecot/src/lib-http/http-message-parser.c:54,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-message-parser.c:57,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-message-parser.c:58,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-message-parser.c:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - parser
    - pool
    argTypes:
    - struct http_message_parser*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 41
    functionDepth: 4
    functionLinenumber: 41
    functionLinenumberEnd: 64
    functionName: http_message_parser_restart
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 1
    functionsReached:
    - i_zero
    - http_header_parser_reset
    - pool_ref
    - pool_unref
    - http_header_parser_init
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_message_parser_restart(struct http_message_parser *parser,\n\t\t\t\t
      pool_t pool)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/http-message-parser.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: http_message_parser_get_pool
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    linkageType: ''
    returnType: pool_t
    signature: pool_t http_message_parser_get_pool(struct http_message_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:88,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-http/http-message-parser.c:89,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-http/http-message-parser.c:89,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 98
    functionName: http_message_parse_version
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 1
    functionsReached:
    - memcmp
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: int http_message_parse_version(struct http_message_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-message-parser.c:108,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-message-parser.c:110,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-message-parser.c:113,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-message-parser.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 100
    functionDepth: 11
    functionLinenumber: 100
    functionLinenumberEnd: 117
    functionName: http_message_parse_finish_payload_error
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_get_error
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void http_message_parse_finish_payload_error(struct http_message_parser
      *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-http/http-message-parser.c:131,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/http-message-parser.c:132,1
    - Dst: http_message_parse_finish_payload_error
      Src: /src/dovecot/src/lib-http/http-message-parser.c:135,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-http/http-message-parser.c:139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 119
    functionDepth: 12
    functionLinenumber: 119
    functionLinenumberEnd: 141
    functionName: http_message_parse_finish_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 1
    functionsReached:
    - i_stream_destroy
    - i_stream_read_more
    - http_message_parse_finish_payload_error
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: int http_message_parse_finish_payload(struct http_message_parser *parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parser_get_pool
      Src: /src/dovecot/src/lib-http/http-message-parser.c:147,1
    - Dst: http_parser_init
      Src: /src/dovecot/src/lib-http/http-message-parser.c:161,1
    - Dst: http_parse_token_list_next
      Src: /src/dovecot/src/lib-http/http-message-parser.c:163,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:166,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-message-parser.c:168,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-message-parser.c:169,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-http/http-message-parser.c:170,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-message-parser.c:171,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - parser
    - data
    - size
    argTypes:
    - struct http_message_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 181
    functionName: http_message_parse_hdr_connection
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - p_array_init
    - http_parser_init
    - strcasecmp
    - array_is_created
    - http_message_parser_get_pool
    - http_parse_token_list_next
    linkageType: ''
    returnType: int
    signature: "int http_message_parse_hdr_connection(struct http_message_parser *parser,\n\t\t\t\t
      \ const unsigned char *data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-http/http-message-parser.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - parser
    - hdr
    argTypes:
    - struct http_message_parser*
    - struct http_header_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 183
    functionDepth: 4
    functionLinenumber: 183
    functionLinenumberEnd: 206
    functionName: http_message_parse_hdr_content_length
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - str_to_uoff
    linkageType: ''
    returnType: int
    signature: "int http_message_parse_hdr_content_length(struct http_message_parser
      *parser,\n\t\t\t\t      const struct http_header_field *hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_date_parse
      Src: /src/dovecot/src/lib-http/http-message-parser.c:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - parser
    - data
    - size
    argTypes:
    - struct http_message_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 208
    functionDepth: 9
    functionLinenumber: 208
    functionLinenumberEnd: 233
    functionName: http_message_parse_hdr_date
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - http_date_parse
    linkageType: ''
    returnType: int
    signature: "int http_message_parse_hdr_date(struct http_message_parser *parser,\n\t\t\t
      \   const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parser
    - hdr
    argTypes:
    - struct http_message_parser*
    - struct http_header_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 249
    functionName: http_message_parse_hdr_location
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int http_message_parse_hdr_location(struct http_message_parser *parser,\n\t\t\t\tconst
      struct http_header_field *hdr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parser_get_pool
      Src: /src/dovecot/src/lib-http/http-message-parser.c:255,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-message-parser.c:261,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-message-parser.c:262,1
    - Dst: http_parser_init
      Src: /src/dovecot/src/lib-http/http-message-parser.c:278,1
    - Dst: http_parse_token
      Src: /src/dovecot/src/lib-http/http-message-parser.c:281,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-http/http-message-parser.c:285,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-message-parser.c:287,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-message-parser.c:296,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-message-parser.c:301,1
    - Dst: http_parse_token
      Src: /src/dovecot/src/lib-http/http-message-parser.c:304,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-message-parser.c:311,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-message-parser.c:318,1
    - Dst: http_parse_token_or_qstring
      Src: /src/dovecot/src/lib-http/http-message-parser.c:321,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-message-parser.c:327,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-message-parser.c:328,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-http/http-message-parser.c:331,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-message-parser.c:332,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-message-parser.c:333,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-message-parser.c:350,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-message-parser.c:354,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-message-parser.c:358,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 53
    argCount: 3
    argNames:
    - parser
    - data
    - size
    argTypes:
    - struct http_message_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 251
    functionDepth: 4
    functionLinenumber: 251
    functionLinenumberEnd: 364
    functionName: http_message_parse_hdr_transfer_encoding
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - array_append_space
    - p_array_init
    - http_parse_token_or_qstring
    - http_parser_init
    - http_parse_ows
    - array_count
    - array_is_created
    - http_message_parser_get_pool
    - http_parse_token
    linkageType: ''
    returnType: int
    signature: "int http_message_parse_hdr_transfer_encoding(struct http_message_parser
      *parser,\n\t\t\t\t\t const unsigned char *data, size_t size)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parser_get_pool
      Src: /src/dovecot/src/lib-http/http-message-parser.c:374,1
    - Dst: http_header_create
      Src: /src/dovecot/src/lib-http/http-message-parser.c:376,1
    - Dst: http_header_field_add
      Src: /src/dovecot/src/lib-http/http-message-parser.c:377,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:390,1
    - Dst: http_message_parse_hdr_connection
      Src: /src/dovecot/src/lib-http/http-message-parser.c:391,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:395,1
    - Dst: http_message_parse_hdr_content_length
      Src: /src/dovecot/src/lib-http/http-message-parser.c:396,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:401,1
    - Dst: http_message_parse_hdr_date
      Src: /src/dovecot/src/lib-http/http-message-parser.c:402,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:406,1
    - Dst: http_message_parse_hdr_location
      Src: /src/dovecot/src/lib-http/http-message-parser.c:407,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:411,1
    - Dst: http_message_parse_hdr_transfer_encoding
      Src: /src/dovecot/src/lib-http/http-message-parser.c:412,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 4
    argNames:
    - parser
    - name
    - data
    - size
    argTypes:
    - struct http_message_parser*
    - char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 366
    functionDepth: 10
    functionLinenumber: 366
    functionLinenumberEnd: 420
    functionName: http_message_parse_header
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - http_message_parse_hdr_location
    - http_message_parse_hdr_date
    - http_message_parse_hdr_transfer_encoding
    - strcasecmp
    - http_header_field_add
    - http_message_parser_get_pool
    - http_header_create
    - http_message_parse_hdr_connection
    - http_message_parse_hdr_content_length
    linkageType: ''
    returnType: int
    signature: "int http_message_parse_header(struct http_message_parser *parser,\n\t\t\t
      \ const char *name, const unsigned char *data,\n\t\t\t  size_t size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parser_get_pool
      Src: /src/dovecot/src/lib-http/http-message-parser.c:430,1
    - Dst: http_header_create
      Src: /src/dovecot/src/lib-http/http-message-parser.c:432,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-message-parser.c:440,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-message-parser.c:441,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:442,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 422
    functionDepth: 4
    functionLinenumber: 422
    functionLinenumberEnd: 450
    functionName: http_message_parse_eoh
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - strcasecmp
    - array_is_created
    - http_message_parser_get_pool
    - http_header_create
    linkageType: ''
    returnType: int
    signature: int http_message_parse_eoh(struct http_message_parser *parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_header_parse_next_field
      Src: /src/dovecot/src/lib-http/http-message-parser.c:463,1
    - Dst: http_message_parse_eoh
      Src: /src/dovecot/src/lib-http/http-message-parser.c:467,1
    - Dst: http_message_parse_header
      Src: /src/dovecot/src/lib-http/http-message-parser.c:469,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-message-parser.c:482,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 452
    functionDepth: 13
    functionLinenumber: 452
    functionLinenumberEnd: 488
    functionName: http_message_parse_headers
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 1
    functionsReached:
    - http_header_parse_next_field
    - t_strdup_printf
    - http_message_parse_header
    - http_message_parse_eoh
    linkageType: ''
    returnType: int
    signature: int http_message_parse_headers(struct http_message_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-message-parser.c:494,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-message-parser.c:495,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-message-parser.c:497,1
    - Dst: io_stream_get_disconnect_reason
      Src: /src/dovecot/src/lib-http/http-message-parser.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - data
    - input
    argTypes:
    - struct istream_sized_error_data*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 490
    functionDepth: 11
    functionLinenumber: 490
    functionLinenumberEnd: 501
    functionName: http_istream_error_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - io_stream_get_disconnect_reason
    - i_assert
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: "char *\nhttp_istream_error_callback(const struct istream_sized_error_data
      *data,\n\t\t\t    struct istream *input)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-message-parser.c:508,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-message-parser.c:512,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-message-parser.c:513,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-http/http-message-parser.c:515,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-message-parser.c:518,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-message-parser.c:530,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - parser
    - coding
    - seen_chunked
    argTypes:
    - struct http_message_parser*
    - struct http_transfer_coding*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 503
    functionDepth: 11
    functionLinenumber: 503
    functionLinenumberEnd: 535
    functionName: http_message_parse_body_coding
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - strcasecmp
    - array_count
    - array_front
    - array_is_created
    linkageType: ''
    returnType: int
    signature: "int http_message_parse_body_coding(struct http_message_parser *parser,\n\t\t\t
      \      const struct http_transfer_coding *coding,\n\t\t\t       bool *seen_chunked)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-http/http-message-parser.c:544,1
    - Dst: http_message_parse_body_coding
      Src: /src/dovecot/src/lib-http/http-message-parser.c:545,1
    - Dst: http_transfer_chunked_istream_create
      Src: /src/dovecot/src/lib-http/http-message-parser.c:551,1
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/http-message-parser.c:564,1
    - Dst: http_header_field_delete
      Src: /src/dovecot/src/lib-http/http-message-parser.c:592,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - parser
    - request
    argTypes:
    - struct http_message_parser*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 537
    functionDepth: 12
    functionLinenumber: 537
    functionLinenumberEnd: 595
    functionName: http_message_parse_body_encoded
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - http_header_field_delete
    - i_stream_create_limit
    - array_foreach
    - http_message_parse_body_coding
    - http_transfer_chunked_istream_create
    linkageType: ''
    returnType: int
    signature: "int http_message_parse_body_encoded(struct http_message_parser *parser,\n\t\t\t\tbool
      request)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/http-message-parser.c:609,1
    - Dst: i_stream_create_sized_with_callback
      Src: /src/dovecot/src/lib-http/http-message-parser.c:613,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-message-parser.c:616,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 597
    functionDepth: 5
    functionLinenumber: 597
    functionLinenumberEnd: 618
    functionName: http_message_parse_body_sized
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_create_sized_with_callback
    - i_stream_create_limit
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: int http_message_parse_body_sized(struct http_message_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/http-message-parser.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_message_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 620
    functionDepth: 5
    functionLinenumber: 620
    functionLinenumberEnd: 636
    functionName: http_message_parse_body_closed
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_create_limit
    linkageType: ''
    returnType: int
    signature: int http_message_parse_body_closed(struct http_message_parser *parser)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-message-parser.c:640,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-message-parser.c:645,1
    - Dst: http_message_parse_body_encoded
      Src: /src/dovecot/src/lib-http/http-message-parser.c:646,1
    - Dst: http_message_parse_body_sized
      Src: /src/dovecot/src/lib-http/http-message-parser.c:649,1
    - Dst: http_message_parse_body_closed
      Src: /src/dovecot/src/lib-http/http-message-parser.c:652,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - parser
    - request
    argTypes:
    - struct http_message_parser*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 638
    functionDepth: 13
    functionLinenumber: 638
    functionLinenumberEnd: 658
    functionName: http_message_parse_body
    functionSourceFile: /src/dovecot/src/lib-http/http-message-parser.c
    functionUses: 1
    functionsReached:
    - http_message_parse_body_sized
    - http_message_parse_body_encoded
    - http_message_parse_body_closed
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: int
    signature: int http_message_parse_body(struct http_message_parser *parser, bool
      request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-request.c:14,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-request.c:16,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-request.c:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - req
    - option
    argTypes:
    - struct http_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 21
    functionName: http_request_has_connection_option
    functionSourceFile: /src/dovecot/src/lib-http/http-request.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - strcasecmp
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool http_request_has_connection_option(const struct http_request
      *req,\n\tconst char *option)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-http/http-request.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - req
    - size_r
    argTypes:
    - struct http_request*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 32
    functionName: http_request_get_payload_size
    functionSourceFile: /src/dovecot/src/lib-http/http-request.c
    functionUses: 1
    functionsReached:
    - i_stream_get_size
    linkageType: ''
    returnType: int
    signature: "int http_request_get_payload_size(const struct http_request *req,\n\tuoff_t
      *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-client.c:111,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-client.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - pool
    - set_r
    argTypes:
    - pool_t
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 125
    functionName: http_client_settings_init
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 2
    functionsReached:
    - i_zero
    - pool_ref
    linkageType: ''
    returnType: void
    signature: void http_client_settings_init(pool_t pool, struct http_client_settings
      *set_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:137,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:138,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:139,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:140,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:141,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:142,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/http-client.c:144,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-client.c:145,1
    - Dst: http_client_context_ref
      Src: /src/dovecot/src/lib-http/http-client.c:153,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client.c:154,1
    - Dst: http_client_context_create
      Src: /src/dovecot/src/lib-http/http-client.c:156,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client.c:161,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:163,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client.c:164,1
    - Dst: event_drop_parent_log_prefixes
      Src: /src/dovecot/src/lib-http/http-client.c:165,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-http/http-client.c:167,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-client.c:168,1
    - Dst: pool_add_external_ref
      Src: /src/dovecot/src/lib-http/http-client.c:170,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client.c:173,1
    - Dst: http_client_context_add_client
      Src: /src/dovecot/src/lib-http/http-client.c:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 3
    argNames:
    - cctx
    - set
    - event_parent
    argTypes:
    - struct http_client_context*
    - struct http_client_settings*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 127
    functionDepth: 11
    functionLinenumber: 127
    functionLinenumberEnd: 178
    functionName: http_client_init_shared
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 2
    functionsReached:
    - i_array_init
    - pool_alloconly_create
    - event_create
    - event_drop_parent_log_prefixes
    - p_new
    - http_client_context_add_client
    - event_set_append_log_prefix
    - t_strdup_printf
    - event_add_category
    - http_client_context_create
    - http_client_context_ref
    - pool_add_external_ref
    - i_assert
    linkageType: ''
    returnType: struct http_client
    signature: "struct http_client *\nhttp_client_init_shared(struct http_client_context
      *cctx,\n\t\t\tconst struct http_client_settings *set,\n\t\t\tstruct event *event_parent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_init_shared
      Src: /src/dovecot/src/lib-http/http-client.c:183,1
    - Dst: http_client_get_global_context
      Src: /src/dovecot/src/lib-http/http-client.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - set
    - event_parent
    argTypes:
    - struct http_client_settings*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 180
    functionDepth: 12
    functionLinenumber: 180
    functionLinenumberEnd: 185
    functionName: http_client_init
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached:
    - http_client_init_shared
    - http_client_get_global_context
    linkageType: ''
    returnType: struct http_client
    signature: "struct http_client *http_client_init(const struct http_client_settings
      *set,\n\t\t\t\t     struct event *event_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-http/http-client.c:192,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/http-client.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - event_parent
    - client_r
    - error_r
    argTypes:
    - struct event*
    - struct http_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 187
    functionDepth: 13
    functionLinenumber: 187
    functionLinenumberEnd: 197
    functionName: http_client_init_auto
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 5
    functionsReached:
    - http_client_init
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int http_client_init_auto(struct event *event_parent,\n\t\t\t  struct
      http_client **client_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_init_shared
      Src: /src/dovecot/src/lib-http/http-client.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - set
    - event_parent
    argTypes:
    - struct http_client_settings*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 12
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: http_client_init_private
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - http_client_init_shared
    linkageType: ''
    returnType: struct http_client
    signature: "struct http_client *\nhttp_client_init_private(const struct http_client_settings
      *set,\n\t\t\t struct event *event_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-http/http-client.c:212,1
    - Dst: http_client_init_private
      Src: /src/dovecot/src/lib-http/http-client.c:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - event_parent
    - client_r
    - error_r
    argTypes:
    - struct event*
    - struct http_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 206
    functionDepth: 13
    functionLinenumber: 206
    functionLinenumberEnd: 217
    functionName: http_client_init_private_auto
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 2
    functionsReached:
    - http_client_init_private
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int http_client_init_private_auto(struct event *event_parent,\n\t\t\t\t
      \ struct http_client **client_r,\n\t\t\t\t  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_destroy
      Src: /src/dovecot/src/lib-http/http-client.c:232,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:235,1
    - Dst: http_client_peer_close
      Src: /src/dovecot/src/lib-http/http-client.c:240,1
    - Dst: http_client_host_free
      Src: /src/dovecot/src/lib-http/http-client.c:246,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client.c:249,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client.c:250,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-client.c:252,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-client.c:253,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-http/http-client.c:255,1
    - Dst: http_client_context_remove_client
      Src: /src/dovecot/src/lib-http/http-client.c:256,1
    - Dst: http_client_context_unref
      Src: /src/dovecot/src/lib-http/http-client.c:257,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client.c:258,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-client.c:259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct http_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 219
    functionDepth: 6
    functionLinenumber: 219
    functionLinenumberEnd: 260
    functionName: http_client_deinit
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 9
    functionsReached:
    - event_unref
    - http_client_host_free
    - ssl_iostream_context_unref
    - http_client_peer_close
    - settings_free
    - pool_unref
    - http_client_request_destroy
    - http_client_context_remove_client
    - http_client_context_unref
    - i_assert
    - array_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_deinit(struct http_client **_client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:270,1
    - Dst: http_client_host_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:275,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/http-client.c:280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 262
    functionDepth: 8
    functionLinenumber: 262
    functionLinenumberEnd: 282
    functionName: http_client_do_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - http_client_host_switch_ioloop
    - http_client_peer_switch_ioloop
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: void http_client_do_switch_ioloop(struct http_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_do_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:290,1
    - Dst: http_client_context_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 284
    functionDepth: 9
    functionLinenumber: 284
    functionLinenumberEnd: 294
    functionName: http_client_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached:
    - http_client_do_switch_ioloop
    - http_client_context_switch_ioloop
    linkageType: ''
    returnType: struct ioloop
    signature: struct ioloop *http_client_switch_ioloop(struct http_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/http-client.c:304,1
    - Dst: http_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:305,1
    - Dst: dns_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:307,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:310,1
    - Dst: io_loop_have_ios
      Src: /src/dovecot/src/lib-http/http-client.c:310,1
    - Dst: io_loop_have_immediate_timeouts
      Src: /src/dovecot/src/lib-http/http-client.c:311,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client.c:315,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/http-client.c:318,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client.c:322,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client.c:325,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client.c:327,1
    - Dst: http_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:328,1
    - Dst: dns_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:330,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client.c:331,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/http-client.c:332,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 296
    functionDepth: 12
    functionLinenumber: 296
    functionLinenumberEnd: 333
    functionName: http_client_wait
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 6
    functionsReached:
    - http_client_switch_ioloop
    - io_loop_have_immediate_timeouts
    - e_debug
    - io_loop_set_current
    - io_loop_destroy
    - io_loop_create
    - io_loop_have_ios
    - dns_client_switch_ioloop
    - i_assert
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void http_client_wait(struct http_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-client.c:338,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-client.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - client
    - ssl
    argTypes:
    - struct http_client*
    - struct ssl_iostream_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 341
    functionName: http_client_set_ssl_settings
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 2
    functionsReached:
    - pool_ref
    - settings_free
    linkageType: ''
    returnType: void
    signature: "void http_client_set_ssl_settings(struct http_client *client,\n\t\t\t\t
      \ const struct ssl_iostream_settings *ssl)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - dns_client
    argTypes:
    - struct http_client*
    - struct dns_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 347
    functionName: http_client_set_dns_client
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http_client_set_dns_client(struct http_client *client,\n\t\t\t\tstruct
      dns_client *dns_client)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 352
    functionName: http_client_get_pending_request_count
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_get_pending_request_count(struct http_client
      *client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_client_context_cache_get
      Src: /src/dovecot/src/lib-http/http-client.c:368,1
    - Dst: ssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/lib-http/http-client.c:373,1
    - Dst: ssl_client_settings_get
      Src: /src/dovecot/src/lib-http/http-client.c:378,1
    - Dst: ssl_client_settings_to_iostream_set
      Src: /src/dovecot/src/lib-http/http-client.c:380,1
    - Dst: ssl_iostream_client_context_cache_get
      Src: /src/dovecot/src/lib-http/http-client.c:382,1
    - Dst: ssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/lib-http/http-client.c:385,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-client.c:389,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-client.c:390,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct http_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 392
    functionName: http_client_init_ssl_ctx
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached:
    - ssl_client_settings_to_iostream_set
    - settings_free
    - ssl_client_settings_get
    - ssl_iostream_client_context_cache_get
    - ssl_iostream_context_set_application_protocols
    linkageType: ''
    returnType: int
    signature: int http_client_init_ssl_ctx(struct http_client *client, const char
      **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client.c:403,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client.c:405,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:406,1
    - Dst: http_client_request_error_delayed
      Src: /src/dovecot/src/lib-http/http-client.c:407,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 398
    functionDepth: 6
    functionLinenumber: 398
    functionLinenumberEnd: 410
    functionName: http_client_handle_request_errors
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - http_client_request_error_delayed
    - array_clear
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_handle_request_errors(struct http_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_short_to
      Src: /src/dovecot/src/lib-http/http-client.c:417,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client.c:420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - client
    - req
    argTypes:
    - struct http_client*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 421
    functionName: http_client_delay_request_error
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - timeout_add_short_to
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void http_client_delay_request_error(struct http_client *client,\n\t\t\t\t
      \    struct http_client_request *req)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client.c:428,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client.c:430,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - client
    - req
    argTypes:
    - struct http_client*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 432
    functionName: http_client_remove_request_error
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void http_client_remove_request_error(struct http_client *client,\n\t\t\t\t
      \     struct http_client_request *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/http-client.c:443,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-client.c:444,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client.c:449,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-http/http-client.c:450,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-client.c:451,1
    - Dst: http_client_connection_list_init
      Src: /src/dovecot/src/lib-http/http-client.c:453,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-http/http-client.c:455,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-http/http-client.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 438
    functionDepth: 5
    functionLinenumber: 438
    functionLinenumberEnd: 461
    functionName: http_client_context_create
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 3
    functionsReached:
    - pool_alloconly_create
    - event_create
    - http_client_connection_list_init
    - p_new
    - hash_table_create
    - event_set_append_log_prefix
    - event_add_category
    linkageType: ''
    returnType: struct http_client_context
    signature: struct http_client_context *http_client_context_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct http_client_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 466
    functionName: http_client_context_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_client_context_ref(struct http_client_context *cctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:476,1
    - Dst: http_client_host_shared_free
      Src: /src/dovecot/src/lib-http/http-client.c:483,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-http/http-client.c:485,1
    - Dst: http_client_peer_shared_close
      Src: /src/dovecot/src/lib-http/http-client.c:490,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:491,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-http/http-client.c:493,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-http/http-client.c:495,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client.c:497,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-client.c:498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - _cctx
    argTypes:
    - struct http_client_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 468
    functionDepth: 7
    functionLinenumber: 468
    functionLinenumberEnd: 499
    functionName: http_client_context_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 3
    functionsReached:
    - hash_table_destroy
    - event_unref
    - pool_unref
    - http_client_host_shared_free
    - http_client_peer_shared_close
    - i_assert
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void http_client_context_unref(struct http_client_context **_cctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib-http/http-client.c:519,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-http/http-client.c:525,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct http_client_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 526
    functionName: http_client_context_update_settings
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - event_set_forced_debug
    - event_want_debug
    linkageType: ''
    returnType: void
    signature: void http_client_context_update_settings(struct http_client_context
      *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-http/http-client.c:532,1
    - Dst: http_client_context_update_settings
      Src: /src/dovecot/src/lib-http/http-client.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cctx
    - client
    argTypes:
    - struct http_client_context*
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 534
    functionName: http_client_context_add_client
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached:
    - DLLIST_PREPEND
    - http_client_context_update_settings
    linkageType: ''
    returnType: void
    signature: "void http_client_context_add_client(struct http_client_context *cctx,\n\t\t\t
      \      struct http_client *client)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-http/http-client.c:540,1
    - Dst: http_client_context_update_settings
      Src: /src/dovecot/src/lib-http/http-client.c:541,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client.c:548,1
    - Dst: http_client_context_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:549,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client.c:550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - cctx
    - client
    argTypes:
    - struct http_client_context*
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 536
    functionDepth: 3
    functionLinenumber: 536
    functionLinenumberEnd: 552
    functionName: http_client_context_remove_client
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached:
    - io_loop_set_current
    - http_client_context_update_settings
    - DLLIST_REMOVE
    - http_client_context_switch_ioloop
    linkageType: ''
    returnType: void
    signature: "void http_client_context_remove_client(struct http_client_context
      *cctx,\n\t\t\t\t  struct http_client *client)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:561,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client.c:568,1
    - Dst: http_client_host_shared_free
      Src: /src/dovecot/src/lib-http/http-client.c:573,1
    - Dst: http_client_peer_shared_close
      Src: /src/dovecot/src/lib-http/http-client.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct http_client_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 554
    functionDepth: 7
    functionLinenumber: 554
    functionLinenumberEnd: 579
    functionName: http_client_context_close
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - http_client_host_shared_free
    - http_client_connection_close
    - i_assert
    - http_client_peer_shared_close
    linkageType: ''
    returnType: void
    signature: void http_client_context_close(struct http_client_context *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:596,1
    - Dst: http_client_peer_shared_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:602,1
    - Dst: http_client_host_shared_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct http_client_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 581
    functionDepth: 9
    functionLinenumber: 581
    functionLinenumberEnd: 608
    functionName: http_client_context_do_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - http_client_peer_shared_switch_ioloop
    - http_client_host_shared_switch_ioloop
    - http_client_connection_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void http_client_context_do_switch_ioloop(struct http_client_context
      *cctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_context_do_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cctx
    argTypes:
    - struct http_client_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 610
    functionDepth: 10
    functionLinenumber: 610
    functionLinenumberEnd: 615
    functionName: http_client_context_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 2
    functionsReached:
    - http_client_context_do_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void http_client_context_switch_ioloop(struct http_client_context *cctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client.c:623,1
    - Dst: http_client_context_close
      Src: /src/dovecot/src/lib-http/http-client.c:625,1
    - Dst: http_client_context_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client.c:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - prev_ioloop ATTR_UNUSED
    argTypes:
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 617
    functionDepth: 11
    functionLinenumber: 617
    functionLinenumberEnd: 632
    functionName: http_client_global_context_ioloop_switched
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - http_client_context_close
    - http_client_context_switch_ioloop
    linkageType: ''
    returnType: void
    signature: "void http_client_global_context_ioloop_switched(\n\tstruct ioloop
      *prev_ioloop ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_remove_switch_callback
      Src: /src/dovecot/src/lib-http/http-client.c:641,1
    - Dst: http_client_context_unref
      Src: /src/dovecot/src/lib-http/http-client.c:644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 634
    functionDepth: 8
    functionLinenumber: 634
    functionLinenumberEnd: 645
    functionName: http_client_global_context_free
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 3
    functionsReached:
    - http_client_context_unref
    - io_loop_remove_switch_callback
    linkageType: ''
    returnType: void
    signature: void http_client_global_context_free(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_context_create
      Src: /src/dovecot/src/lib-http/http-client.c:652,1
    - Dst: lib_atexit_priority
      Src: /src/dovecot/src/lib-http/http-client.c:654,1
    - Dst: io_loop_add_switch_callback
      Src: /src/dovecot/src/lib-http/http-client.c:656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 647
    functionDepth: 6
    functionLinenumber: 647
    functionLinenumberEnd: 658
    functionName: http_client_get_global_context
    functionSourceFile: /src/dovecot/src/lib-http/http-client.c
    functionUses: 1
    functionsReached:
    - lib_atexit_priority
    - io_loop_add_switch_callback
    - http_client_context_create
    linkageType: ''
    returnType: struct http_client_context
    signature: struct http_client_context *http_client_get_global_context(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/http-request-parser.c:55,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-request-parser.c:56,1
    - Dst: http_url_clone_authority
      Src: /src/dovecot/src/lib-http/http-request-parser.c:61,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-request-parser.c:69,1
    - Dst: http_message_parser_init
      Src: /src/dovecot/src/lib-http/http-request-parser.c:88,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 4
    argNames:
    - input
    - default_base_url
    - limits
    - flags
    argTypes:
    - struct istream*
    - struct http_url*
    - struct http_request_limits*
    - enum http_request_parse_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 91
    functionName: http_request_parser_init
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 3
    functionsReached:
    - i_zero
    - pool_alloconly_create
    - p_new
    - http_message_parser_init
    - http_url_clone_authority
    linkageType: ''
    returnType: struct http_request_parser
    signature: "struct http_request_parser *\nhttp_request_parser_init(struct istream
      *input,\n\t\t\t const struct http_url *default_base_url,\n\t\t\t const struct
      http_request_limits *limits,\n\t\t\t enum http_request_parse_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parser_deinit
      Src: /src/dovecot/src/lib-http/http-request-parser.c:99,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-request-parser.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct http_request_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 5
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: http_request_parser_deinit
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 3
    functionsReached:
    - pool_unref
    - http_message_parser_deinit
    linkageType: ''
    returnType: void
    signature: void http_request_parser_deinit(struct http_request_parser **_parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parser_restart
      Src: /src/dovecot/src/lib-http/http-request-parser.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - parser
    - pool
    argTypes:
    - struct http_request_parser*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 5
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: http_request_parser_restart
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - http_message_parser_restart
    linkageType: ''
    returnType: void
    signature: "void http_request_parser_restart(struct http_request_parser *parser,\n\tpool_t
      pool)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_char_is_token
      Src: /src/dovecot/src/lib-http/http-request-parser.c:119,1
    - Dst: http_message_parser_get_pool
      Src: /src/dovecot/src/lib-http/http-request-parser.c:129,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-http/http-request-parser.c:131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_request_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 134
    functionName: http_request_parse_method
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - http_char_is_token
    - p_strdup_until
    - http_message_parser_get_pool
    linkageType: ''
    returnType: int
    signature: int http_request_parse_method(struct http_request_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_max_buffer_size
      Src: /src/dovecot/src/lib-http/http-request-parser.c:157,1
    - Dst: http_message_parser_get_pool
      Src: /src/dovecot/src/lib-http/http-request-parser.c:164,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-http/http-request-parser.c:165,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_request_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 136
    functionDepth: 4
    functionLinenumber: 136
    functionLinenumberEnd: 168
    functionName: http_request_parse_target
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - p_strdup_until
    - http_message_parser_get_pool
    - i_stream_get_max_buffer_size
    linkageType: ''
    returnType: int
    signature: int http_request_parse_target(struct http_request_parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:173,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 170
    functionDepth: 11
    functionLinenumber: 170
    functionLinenumberEnd: 179
    functionName: _chr_sanitize
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 5
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *_chr_sanitize(unsigned char c)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: http_request_parser_restart
      Src: /src/dovecot/src/lib-http/http-request-parser.c:195,1
    - Dst: http_request_parse_method
      Src: /src/dovecot/src/lib-http/http-request-parser.c:218,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:227,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-request-parser.c:229,1
    - Dst: http_request_parse_target
      Src: /src/dovecot/src/lib-http/http-request-parser.c:238,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:247,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-request-parser.c:249,1
    - Dst: http_message_parse_version
      Src: /src/dovecot/src/lib-http/http-request-parser.c:258,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:279,1
    - Dst: _chr_sanitize
      Src: /src/dovecot/src/lib-http/http-request-parser.c:281,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-request-parser.c:293,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-request-parser.c:297,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 89
    argCount: 2
    argNames:
    - parser
    - pool
    argTypes:
    - struct http_request_parser*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 181
    functionDepth: 11
    functionLinenumber: 181
    functionLinenumberEnd: 298
    functionName: http_request_parse
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - t_strdup_printf
    - http_message_parse_version
    - _chr_sanitize
    - http_request_parse_target
    - http_request_parser_restart
    - http_request_parse_method
    linkageType: ''
    returnType: int
    signature: "int http_request_parse(struct http_request_parser *parser,\n\t\t\t
      \     pool_t pool)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_bytes
      Src: /src/dovecot/src/lib-http/http-request-parser.c:308,1
    - Dst: http_request_parse
      Src: /src/dovecot/src/lib-http/http-request-parser.c:313,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-http/http-request-parser.c:316,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-http/http-request-parser.c:319,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - parser
    - pool
    argTypes:
    - struct http_request_parser*
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 300
    functionDepth: 12
    functionLinenumber: 300
    functionLinenumberEnd: 336
    functionName: http_request_parse_request_line
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - http_request_parse
    - i_stream_get_data_size
    - i_stream_read_bytes
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int http_request_parse_request_line(struct http_request_parser *parser,\n\t\t\t\t\t
      \  pool_t pool)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-request-parser.c:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_request_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 356
    functionName: http_request_parser_message_error
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: enum http_request_parse_error
    signature: enum http_request_parse_error http_request_parser_message_error(struct
      http_request_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_have_bytes_left
      Src: /src/dovecot/src/lib-http/http-request-parser.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_request_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: http_request_parser_pending_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_have_bytes_left
    linkageType: ''
    returnType: bool
    signature: "bool http_request_parser_pending_payload(\n\tstruct http_request_parser
      *parser)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: http_parser_init
      Src: /src/dovecot/src/lib-http/http-request-parser.c:380,1
    - Dst: http_parse_token
      Src: /src/dovecot/src/lib-http/http-request-parser.c:385,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-request-parser.c:387,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:392,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-request-parser.c:398,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-request-parser.c:404,1
    - Dst: http_parse_token_or_qstring
      Src: /src/dovecot/src/lib-http/http-request-parser.c:407,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:414,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-request-parser.c:424,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-request-parser.c:428,1
    - Dst: http_parse_token
      Src: /src/dovecot/src/lib-http/http-request-parser.c:431,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-request-parser.c:437,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-request-parser.c:443,1
    - Dst: http_parse_token_or_qstring
      Src: /src/dovecot/src/lib-http/http-request-parser.c:446,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:453,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-request-parser.c:461,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-request-parser.c:465,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 76
    argCount: 3
    argNames:
    - parser
    - request
    - hdr
    argTypes:
    - struct http_request_parser*
    - struct http_request*
    - struct http_header_field*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 366
    functionDepth: 11
    functionLinenumber: 366
    functionLinenumberEnd: 483
    functionName: http_request_parse_expect_header
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - http_parse_token_or_qstring
    - http_parser_init
    - t_strdup_printf
    - strcasecmp
    - http_parse_ows
    - http_parse_token
    linkageType: ''
    returnType: int
    signature: "int http_request_parse_expect_header(struct http_request_parser *parser,\n\tstruct
      http_request *request, const struct http_header_field *hdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_header_get_fields
      Src: /src/dovecot/src/lib-http/http-request-parser.c:492,1
    - Dst: http_header_field_is
      Src: /src/dovecot/src/lib-http/http-request-parser.c:497,1
    - Dst: http_request_parse_expect_header
      Src: /src/dovecot/src/lib-http/http-request-parser.c:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - parser
    - request
    argTypes:
    - struct http_request_parser*
    - struct http_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 485
    functionDepth: 12
    functionLinenumber: 485
    functionLinenumberEnd: 504
    functionName: http_request_parse_headers
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - http_header_field_is
    - http_header_get_fields
    - http_request_parse_expect_header
    linkageType: ''
    returnType: int
    signature: "int http_request_parse_headers(struct http_request_parser *parser,\n\tstruct
      http_request *request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_header_field_is
      Src: /src/dovecot/src/lib-http/http-request-parser.c:497,1
    - Dst: http_request_parse_expect_header
      Src: /src/dovecot/src/lib-http/http-request-parser.c:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 493
    functionDepth: 12
    functionLinenumber: 493
    functionLinenumberEnd: 502
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 137
    functionsReached:
    - http_header_field_is
    - http_request_parse_expect_header
    linkageType: ''
    returnType: void
    signature: void array_foreach(hdrs, hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_message_parse_finish_payload
      Src: /src/dovecot/src/lib-http/http-request-parser.c:518,1
    - Dst: http_request_parser_message_error
      Src: /src/dovecot/src/lib-http/http-request-parser.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - parser
    - error_code_r
    - error_r
    argTypes:
    - struct http_request_parser*
    - enum http_request_parse_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 506
    functionDepth: 13
    functionLinenumber: 506
    functionLinenumberEnd: 525
    functionName: http_request_parse_finish_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 0
    functionsReached:
    - http_request_parser_message_error
    - http_message_parse_finish_payload
    linkageType: ''
    returnType: int
    signature: "int http_request_parse_finish_payload(\n\tstruct http_request_parser
      *parser,\n\tenum http_request_parse_error *error_code_r,\n\tconst char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: http_request_parse_finish_payload
      Src: /src/dovecot/src/lib-http/http-request-parser.c:536,1
    - Dst: http_request_parse_request_line
      Src: /src/dovecot/src/lib-http/http-request-parser.c:548,1
    - Dst: http_message_parse_headers
      Src: /src/dovecot/src/lib-http/http-request-parser.c:565,1
    - Dst: http_request_parser_message_error
      Src: /src/dovecot/src/lib-http/http-request-parser.c:567,1
    - Dst: http_message_parse_body
      Src: /src/dovecot/src/lib-http/http-request-parser.c:573,1
    - Dst: http_request_parser_message_error
      Src: /src/dovecot/src/lib-http/http-request-parser.c:574,1
    - Dst: http_header_field_find_unique
      Src: /src/dovecot/src/lib-http/http-request-parser.c:590,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-request-parser.c:603,1
    - Dst: http_message_parser_get_pool
      Src: /src/dovecot/src/lib-http/http-request-parser.c:605,1
    - Dst: http_url_request_target_parse
      Src: /src/dovecot/src/lib-http/http-request-parser.c:606,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-request-parser.c:609,1
    - Dst: http_request_parse_headers
      Src: /src/dovecot/src/lib-http/http-request-parser.c:615,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 65
    argCount: 5
    argNames:
    - parser
    - pool
    - request
    - error_code_r
    - error_r
    argTypes:
    - struct http_request_parser*
    - pool_t
    - struct http_request*
    - enum http_request_parse_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 527
    functionDepth: 14
    functionLinenumber: 527
    functionLinenumberEnd: 635
    functionName: http_request_parse_next
    functionSourceFile: /src/dovecot/src/lib-http/http-request-parser.c
    functionUses: 3
    functionsReached:
    - i_zero
    - http_request_parse_headers
    - http_request_parse_finish_payload
    - http_url_request_target_parse
    - t_strdup_printf
    - http_message_parse_body
    - http_request_parser_message_error
    - http_message_parse_headers
    - http_request_parse_request_line
    - http_header_field_find_unique
    - http_message_parser_get_pool
    linkageType: ''
    returnType: int
    signature: "int http_request_parse_next(struct http_request_parser *parser,\n\t\t\t
      \   pool_t pool, struct http_request *request,\n\t\t\t    enum http_request_parse_error
      *error_code_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-header.h:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hfield
    - name
    argTypes:
    - struct http_header_field*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 23
    functionName: http_header_field_is
    functionSourceFile: /src/dovecot/src/lib-http/http-header.h
    functionUses: 3
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: "bool http_header_field_is(const struct http_header_field *hfield,\n\tconst
      char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-queue.c:42,1
    - Dst: http_client_peer_addr_cmp
      Src: /src/dovecot/src/lib-http/http-client-queue.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - host
    - addr
    argTypes:
    - struct http_client_host*
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: http_client_queue_find
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - http_client_peer_addr_cmp
    - array_foreach_elem
    linkageType: ''
    returnType: struct http_client_queue
    signature: "struct http_client_queue *\nhttp_client_queue_find(struct http_client_host
      *host,\n\t\t       const struct http_client_peer_addr *addr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-client-queue.c:57,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:64,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:70,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-client-queue.c:72,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:76,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:81,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-client-queue.c:82,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-queue.c:86,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client-queue.c:89,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-client-queue.c:90,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:91,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/http-client-queue.c:91,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-queue.c:93,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-queue.c:94,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-queue.c:95,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-queue.c:96,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-queue.c:97,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-queue.c:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 2
    argNames:
    - host
    - addr
    argTypes:
    - struct http_client_host*
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 50
    functionDepth: 11
    functionLinenumber: 50
    functionLinenumberEnd: 101
    functionName: http_client_queue_create
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - event_create
    - i_unreached
    - array_push_back
    - event_set_append_log_prefix
    - t_strdup_printf
    - i_strdup
    - str_sanitize
    - i_new
    - i_strdup_printf
    linkageType: ''
    returnType: struct http_client_queue
    signature: "struct http_client_queue *\nhttp_client_queue_create(struct http_client_host
      *host,\n\t\t\t const struct http_client_peer_addr *addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_queue_find
      Src: /src/dovecot/src/lib-http/http-client-queue.c:109,1
    - Dst: http_client_queue_create
      Src: /src/dovecot/src/lib-http/http-client-queue.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - host
    - addr
    argTypes:
    - struct http_client_host*
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 103
    functionDepth: 12
    functionLinenumber: 103
    functionLinenumberEnd: 114
    functionName: http_client_queue_get
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - http_client_queue_create
    - http_client_queue_find
    linkageType: ''
    returnType: struct http_client_queue
    signature: "struct http_client_queue *\nhttp_client_queue_get(struct http_client_host
      *host,\n\t\t      const struct http_client_peer_addr *addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-queue.c:119,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:121,1
    - Dst: http_client_peer_unlink_queue
      Src: /src/dovecot/src/lib-http/http-client-queue.c:131,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-queue.c:133,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:133,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-http/http-client-queue.c:134,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:135,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-queue.c:136,1
    - Dst: http_client_peer_unlink_queue
      Src: /src/dovecot/src/lib-http/http-client-queue.c:137,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-queue.c:138,1
    - Dst: http_client_queue_fail_full
      Src: /src/dovecot/src/lib-http/http-client-queue.c:141,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-queue.c:143,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-queue.c:144,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-queue.c:145,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-queue.c:146,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:149,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:150,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client-queue.c:153,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-queue.c:154,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-queue.c:155,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-queue.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 116
    functionDepth: 6
    functionLinenumber: 116
    functionLinenumberEnd: 157
    functionName: http_client_queue_free
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - http_client_peer_unlink_queue
    - event_unref
    - i_free
    - array_foreach_elem
    - e_debug
    - array_copy
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - http_client_queue_fail_full
    - array_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_queue_free(struct http_client_queue *queue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-queue.c:167,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-queue.c:173,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:173,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-http/http-client-queue.c:174,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:174,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-queue.c:175,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:176,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-queue.c:181,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:186,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:187,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:188,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:189,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - queue
    - status
    - error
    - all
    argTypes:
    - struct http_client_queue*
    - unsigned int
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 191
    functionName: http_client_queue_fail_full
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - array_copy
    - array_count
    - http_client_request_error
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_fail_full(struct http_client_queue *queue,\n\t\t\t
      \   unsigned int status, const char *error, bool all)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_queue_fail_full
      Src: /src/dovecot/src/lib-http/http-client-queue.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - queue
    - status
    - error
    argTypes:
    - struct http_client_queue*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 198
    functionName: http_client_queue_fail
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - http_client_queue_fail_full
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_fail(struct http_client_queue *queue,\n\t\t
      \      unsigned int status, const char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_get_ips_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:209,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:211,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:212,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 226
    functionName: http_client_queue_is_last_connect_ip
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - http_client_host_get_ips_count
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool http_client_queue_is_last_connect_ip(struct http_client_queue
      *queue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:234,1
    - Dst: http_client_host_get_ip_idx
      Src: /src/dovecot/src/lib-http/http-client-queue.c:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 228
    functionDepth: 3
    functionLinenumber: 228
    functionLinenumberEnd: 249
    functionName: http_client_queue_recover_from_lookup
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - http_client_host_get_ip_idx
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_queue_recover_from_lookup(struct http_client_queue
      *queue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_get_ips_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:259,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:261,1
    - Dst: http_client_queue_is_last_connect_ip
      Src: /src/dovecot/src/lib-http/http-client-queue.c:263,1
    - Dst: http_client_peer_addr_get_https_name
      Src: /src/dovecot/src/lib-http/http-client-queue.c:271,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:272,1
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-queue.c:274,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:276,1
    - Dst: http_client_queue_connection_setup
      Src: /src/dovecot/src/lib-http/http-client-queue.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 251
    functionDepth: 12
    functionLinenumber: 251
    functionLinenumberEnd: 283
    functionName: http_client_queue_soft_connect_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - http_client_host_get_ips_count
    - http_client_queue_is_last_connect_ip
    - http_client_queue_connection_setup
    - e_debug
    - t_strdup_printf
    - timeout_remove
    - http_client_peer_addr2str
    - i_assert
    - http_client_peer_addr_get_https_name
    linkageType: ''
    returnType: void
    signature: void http_client_queue_soft_connect_timeout(struct http_client_queue
      *queue)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:293,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:294,1
    - Dst: http_client_host_refresh
      Src: /src/dovecot/src/lib-http/http-client-queue.c:302,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:305,1
    - Dst: http_client_queue_recover_from_lookup
      Src: /src/dovecot/src/lib-http/http-client-queue.c:310,1
    - Dst: http_client_host_get_ip
      Src: /src/dovecot/src/lib-http/http-client-queue.c:316,1
    - Dst: http_client_peer_addr_get_https_name
      Src: /src/dovecot/src/lib-http/http-client-queue.c:319,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:320,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:326,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:326,1
    - Dst: http_client_peer_addr_cmp
      Src: /src/dovecot/src/lib-http/http-client-queue.c:329,1
    - Dst: http_client_peer_is_connected
      Src: /src/dovecot/src/lib-http/http-client-queue.c:332,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:334,1
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-queue.c:337,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-queue.c:341,1
    - Dst: http_client_peer_unlink_queue
      Src: /src/dovecot/src/lib-http/http-client-queue.c:349,1
    - Dst: http_client_peer_get
      Src: /src/dovecot/src/lib-http/http-client-queue.c:356,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:358,1
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-queue.c:360,1
    - Dst: http_client_peer_link_queue
      Src: /src/dovecot/src/lib-http/http-client-queue.c:363,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-queue.c:366,1
    - Dst: http_client_peer_is_connected
      Src: /src/dovecot/src/lib-http/http-client-queue.c:368,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:370,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-queue.c:373,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:379,1
    - Dst: http_client_peer_addr_cmp
      Src: /src/dovecot/src/lib-http/http-client-queue.c:379,1
    - Dst: http_client_peer_unlink_queue
      Src: /src/dovecot/src/lib-http/http-client-queue.c:381,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-queue.c:383,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-queue.c:387,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-queue.c:397,1
    - Dst: http_client_peer_addr_cmp
      Src: /src/dovecot/src/lib-http/http-client-queue.c:398,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:400,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:406,1
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-queue.c:407,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-queue.c:409,1
    - Dst: http_client_queue_is_last_connect_ip
      Src: /src/dovecot/src/lib-http/http-client-queue.c:418,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-http/http-client-queue.c:420,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 71
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 285
    functionDepth: 12
    functionLinenumber: 285
    functionLinenumberEnd: 429
    functionName: http_client_queue_connection_attempt
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - http_client_host_get_ip
    - http_client_peer_unlink_queue
    - http_client_queue_recover_from_lookup
    - t_strdup_printf
    - http_client_peer_trigger_request_handler
    - array_count
    - http_client_host_refresh
    - array_foreach_elem
    - http_client_peer_addr_cmp
    - http_client_peer_addr_get_https_name
    - http_client_queue_is_last_connect_ip
    - array_clear
    - timeout_add_to
    - http_client_peer_addr2str
    - i_assert
    - http_client_peer_get
    - array_push_back
    - e_debug
    - http_client_peer_is_connected
    - http_client_peer_link_queue
    - timeout_remove
    linkageType: ''
    returnType: struct http_client_peer
    signature: 'struct http_client_peer *

      http_client_queue_connection_attempt(struct http_client_queue *queue)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_queue_connection_attempt
      Src: /src/dovecot/src/lib-http/http-client-queue.c:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 431
    functionDepth: 13
    functionLinenumber: 431
    functionLinenumberEnd: 434
    functionName: http_client_queue_connection_setup
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - http_client_queue_connection_attempt
    linkageType: ''
    returnType: void
    signature: void http_client_queue_connection_setup(struct http_client_queue *queue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_queue_requests_pending
      Src: /src/dovecot/src/lib-http/http-client-queue.c:440,1
    - Dst: http_client_queue_recover_from_lookup
      Src: /src/dovecot/src/lib-http/http-client-queue.c:442,1
    - Dst: http_client_queue_connection_setup
      Src: /src/dovecot/src/lib-http/http-client-queue.c:444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 436
    functionDepth: 14
    functionLinenumber: 436
    functionLinenumberEnd: 446
    functionName: http_client_queue_host_lookup_done
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - http_client_queue_recover_from_lookup
    - http_client_queue_connection_setup
    - http_client_queue_requests_pending
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_queue_host_lookup_done(struct http_client_queue
      *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_queue_fail
      Src: /src/dovecot/src/lib-http/http-client-queue.c:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - queue
    - error
    argTypes:
    - struct http_client_queue*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 448
    functionDepth: 4
    functionLinenumber: 448
    functionLinenumberEnd: 453
    functionName: http_client_queue_host_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - http_client_queue_fail
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_host_lookup_failure(\n\tstruct http_client_queue
      *queue, const char *error)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_client_host_ready
      Src: /src/dovecot/src/lib-http/http-client-queue.c:461,1
    - Dst: http_client_host_get_ip_idx
      Src: /src/dovecot/src/lib-http/http-client-queue.c:464,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:475,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:480,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-queue.c:483,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:489,1
    - Dst: http_client_peer_unlink_queue
      Src: /src/dovecot/src/lib-http/http-client-queue.c:497,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-queue.c:500,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:501,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - queue
    - peer
    argTypes:
    - struct http_client_queue*
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 455
    functionDepth: 6
    functionLinenumber: 455
    functionLinenumberEnd: 503
    functionName: http_client_queue_connection_success
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - http_client_peer_unlink_queue
    - array_foreach_elem
    - http_client_host_get_ip_idx
    - array_count
    - array_clear
    - http_client_host_ready
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_connection_success(struct http_client_queue
      *queue,\n\t\t\t\t\t  struct http_client_peer *peer)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_addr_get_https_name
      Src: /src/dovecot/src/lib-http/http-client-queue.c:511,1
    - Dst: http_client_host_get_ips_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:513,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:515,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:516,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:518,1
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-queue.c:521,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:523,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:524,1
    - Dst: http_client_peer_unlink_queue
      Src: /src/dovecot/src/lib-http/http-client-queue.c:526,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:528,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:529,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:534,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-queue.c:539,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-queue.c:540,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:541,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:542,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:543,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:552,1
    - Dst: http_client_queue_fail
      Src: /src/dovecot/src/lib-http/http-client-queue.c:555,1
    - Dst: http_client_queue_is_last_connect_ip
      Src: /src/dovecot/src/lib-http/http-client-queue.c:562,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:563,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:576,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-queue.c:581,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:583,1
    - Dst: http_client_queue_fail
      Src: /src/dovecot/src/lib-http/http-client-queue.c:589,1
    - Dst: http_client_queue_connection_attempt
      Src: /src/dovecot/src/lib-http/http-client-queue.c:599,1
    - Dst: http_client_peer_unlink_queue
      Src: /src/dovecot/src/lib-http/http-client-queue.c:600,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 3
    argNames:
    - queue
    - peer
    - reason
    argTypes:
    - struct http_client_queue*
    - struct http_client_peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 505
    functionDepth: 13
    functionLinenumber: 505
    functionLinenumberEnd: 602
    functionName: http_client_queue_connection_failure
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - http_client_host_get_ips_count
    - array_delete
    - http_client_peer_unlink_queue
    - http_client_queue_fail
    - http_client_queue_is_last_connect_ip
    - timeval_diff_msecs
    - i_unreached
    - e_debug
    - t_strdup_printf
    - array_count
    - timeout_remove
    - http_client_queue_connection_attempt
    - array_lsearch_ptr_idx
    - http_client_peer_addr2str
    - i_assert
    - http_client_peer_addr_get_https_name
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_connection_failure(struct http_client_queue
      *queue,\n\t\t\t\t\t  struct http_client_peer *peer,\n\t\t\t\t\t  const char
      *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-queue.c:614,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-queue.c:615,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:616,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - queue
    - peer
    argTypes:
    - struct http_client_queue*
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 617
    functionName: http_client_queue_peer_disconnected
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_peer_disconnected(struct http_client_queue
      *queue,\n\t\t\t\t\t struct http_client_peer *peer)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:629,1
    - Dst: http_client_request_label
      Src: /src/dovecot/src/lib-http/http-client-queue.c:630,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-queue.c:634,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:636,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-queue.c:638,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:639,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-http/http-client-queue.c:644,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:652,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:654,1
    - Dst: http_client_queue_set_delay_timer
      Src: /src/dovecot/src/lib-http/http-client-queue.c:655,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:660,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-http/http-client-queue.c:666,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:671,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:675,1
    - Dst: http_client_queue_set_request_timer
      Src: /src/dovecot/src/lib-http/http-client-queue.c:677,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:683,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:685,1
    - Dst: http_client_host_check_idle
      Src: /src/dovecot/src/lib-http/http-client-queue.c:686,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 2
    argNames:
    - queue
    - req
    argTypes:
    - struct http_client_queue*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 623
    functionDepth: 6
    functionLinenumber: 623
    functionLinenumberEnd: 688
    functionName: http_client_queue_drop_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - array_delete
    - http_client_queue_set_request_timer
    - e_debug
    - array_get_modifiable
    - array_count
    - http_client_host_check_idle
    - array_lsearch_ptr_idx
    - http_client_queue_set_delay_timer
    - http_client_request_label
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_drop_request(struct http_client_queue *queue,\n\t\t\t\t
      \   struct http_client_request *req)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-queue.c:693,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:699,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/lib-http/http-client-queue.c:700,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:703,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-queue.c:706,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:707,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-queue.c:708,1
    - Dst: timeval_cmp_margin
      Src: /src/dovecot/src/lib-http/http-client-queue.c:711,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-queue.c:716,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-http/http-client-queue.c:723,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-queue.c:724,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-client-queue.c:725,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-queue.c:728,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:729,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-http/http-client-queue.c:733,1
    - Dst: http_client_request_append_stats_text
      Src: /src/dovecot/src/lib-http/http-client-queue.c:734,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:736,1
    - Dst: http_client_request_label
      Src: /src/dovecot/src/lib-http/http-client-queue.c:738,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-client-queue.c:738,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-queue.c:739,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-queue.c:741,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-client-queue.c:743,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 690
    functionDepth: 11
    functionLinenumber: 690
    functionLinenumberEnd: 744
    functionName: http_client_queue_request_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - str_c
    - array_push_back
    - e_debug
    - str_len
    - array_get
    - http_client_request_append_stats_text
    - t_strdup_printf
    - timeval_cmp_margin
    - http_client_request_error
    - t_array_init
    - str_truncate
    - ARRAY_TYPE
    - str_append
    - http_client_request_label
    - i_assert
    - t_strflocaltime
    - str_new
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_queue_request_timeout(struct http_client_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:757,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:758,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:760,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/lib-http/http-client-queue.c:762,1
    - Dst: t_strflocaltime
      Src: /src/dovecot/src/lib-http/http-client-queue.c:764,1
    - Dst: timeout_add_absolute_to
      Src: /src/dovecot/src/lib-http/http-client-queue.c:768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - queue
    - time
    argTypes:
    - struct http_client_queue*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 753
    functionDepth: 7
    functionLinenumber: 753
    functionLinenumberEnd: 771
    functionName: http_client_queue_set_request_timer
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - e_debug
    - timeout_add_absolute_to
    - i_assert
    - t_strflocaltime
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_set_request_timer(struct http_client_queue
      *queue,\n\t\t\t\t    const struct timeval *time)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib-http/http-client-queue.c:783,1
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib-http/http-client-queue.c:794,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - req1
    - req2
    argTypes:
    - struct http_client_request**
    - struct http_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 801
    functionName: http_client_queue_request_timeout_cmp
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - timeval_cmp
    linkageType: ''
    returnType: int
    signature: "int http_client_queue_request_timeout_cmp(struct http_client_request
      *const *req1,\n\t\t\t\t      struct http_client_request *const *req2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-queue.c:807,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-queue.c:820,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-queue.c:821,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-http/http-client-queue.c:829,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:832,1
    - Dst: http_client_queue_connection_setup
      Src: /src/dovecot/src/lib-http/http-client-queue.c:835,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - queue
    - req
    argTypes:
    - struct http_client_queue*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 803
    functionDepth: 14
    functionLinenumber: 803
    functionLinenumberEnd: 836
    functionName: http_client_queue_submit_now
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - http_client_queue_connection_setup
    - array_push_back
    - array_insert
    - ARRAY_TYPE
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_submit_now(struct http_client_queue *queue,\n\t\t\t
      \    struct http_client_request *req)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:848,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-http/http-client-queue.c:849,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-queue.c:852,1
    - Dst: timeval_cmp_margin
      Src: /src/dovecot/src/lib-http/http-client-queue.c:854,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:860,1
    - Dst: http_client_request_label
      Src: /src/dovecot/src/lib-http/http-client-queue.c:861,1
    - Dst: http_client_queue_submit_now
      Src: /src/dovecot/src/lib-http/http-client-queue.c:863,1
    - Dst: http_client_queue_set_delay_timer
      Src: /src/dovecot/src/lib-http/http-client-queue.c:867,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:868,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 842
    functionDepth: 15
    functionLinenumber: 842
    functionLinenumberEnd: 869
    functionName: http_client_queue_delay_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - array_delete
    - e_debug
    - array_get
    - timeval_cmp_margin
    - io_loop_time_refresh
    - http_client_queue_set_delay_timer
    - http_client_request_label
    - http_client_queue_submit_now
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_queue_delay_timeout(struct http_client_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib-http/http-client-queue.c:876,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-queue.c:883,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-http/http-client-queue.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - queue
    - time
    argTypes:
    - struct http_client_queue*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 871
    functionDepth: 6
    functionLinenumber: 871
    functionLinenumberEnd: 887
    functionName: http_client_queue_set_delay_timer
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 2
    functionsReached:
    - timeout_add_to
    - timeval_diff_usecs
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_set_delay_timer(struct http_client_queue *queue,\n\t\t\t\t
      \ struct timeval time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_cmp
      Src: /src/dovecot/src/lib-http/http-client-queue.c:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req1
    - req2
    argTypes:
    - struct http_client_request**
    - struct http_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 889
    functionDepth: 1
    functionLinenumber: 889
    functionLinenumberEnd: 894
    functionName: http_client_queue_delayed_cmp
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - timeval_cmp
    linkageType: ''
    returnType: int
    signature: "int http_client_queue_delayed_cmp(struct http_client_request *const
      *req1,\n\t\t\t      struct http_client_request *const *req2)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: http_client_queue_drop_request
      Src: /src/dovecot/src/lib-http/http-client-queue.c:906,1
    - Dst: timeval_cmp_margin
      Src: /src/dovecot/src/lib-http/http-client-queue.c:911,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:920,1
    - Dst: http_client_request_label
      Src: /src/dovecot/src/lib-http/http-client-queue.c:922,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-queue.c:929,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-http/http-client-queue.c:934,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:937,1
    - Dst: http_client_queue_set_request_timer
      Src: /src/dovecot/src/lib-http/http-client-queue.c:941,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-http/http-client-queue.c:948,1
    - Dst: timeval_cmp_margin
      Src: /src/dovecot/src/lib-http/http-client-queue.c:950,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:952,1
    - Dst: http_client_request_label
      Src: /src/dovecot/src/lib-http/http-client-queue.c:955,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-queue.c:957,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-http/http-client-queue.c:960,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-http/http-client-queue.c:963,1
    - Dst: http_client_queue_set_delay_timer
      Src: /src/dovecot/src/lib-http/http-client-queue.c:967,1
    - Dst: http_client_queue_submit_now
      Src: /src/dovecot/src/lib-http/http-client-queue.c:974,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - queue
    - req
    argTypes:
    - struct http_client_queue*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 900
    functionDepth: 15
    functionLinenumber: 900
    functionLinenumberEnd: 975
    functionName: http_client_queue_submit_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - timeval_diff_msecs
    - http_client_queue_set_request_timer
    - array_push_back
    - e_debug
    - timeval_cmp_margin
    - array_insert
    - io_loop_time_refresh
    - http_client_queue_set_delay_timer
    - http_client_request_label
    - http_client_queue_submit_now
    - array_bsearch_insert_pos
    - http_client_queue_drop_request
    linkageType: ''
    returnType: void
    signature: "void http_client_queue_submit_request(struct http_client_queue *queue,\n\t\t\t\t
      \     struct http_client_request *req)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-queue.c:992,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-queue.c:995,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1001,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1003,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1005,1
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1007,1
    - Dst: http_client_request_label
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1007,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - queue
    - addr
    - no_urgent
    argTypes:
    - struct http_client_queue*
    - struct http_client_peer_addr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 981
    functionDepth: 12
    functionLinenumber: 981
    functionLinenumberEnd: 1011
    functionName: http_client_queue_claim_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 0
    functionsReached:
    - array_delete
    - e_debug
    - array_get
    - http_client_peer_addr2str
    - http_client_request_label
    linkageType: ''
    returnType: struct http_client_request
    signature: "struct http_client_request *\nhttp_client_queue_claim_request(struct
      http_client_queue *queue,\n\t\t\t\tconst struct http_client_peer_addr *addr,\n\t\t\t\tbool
      no_urgent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1017,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1021,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - queue
    - num_urgent_r
    argTypes:
    - struct http_client_queue*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1013
    functionDepth: 1
    functionLinenumber: 1013
    functionLinenumberEnd: 1022
    functionName: http_client_queue_requests_pending
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int http_client_queue_requests_pending(struct http_client_queue
      *queue,\n\t\t\t\t   unsigned int *num_urgent_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1027
    functionName: http_client_queue_requests_active
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_queue_requests_active(struct http_client_queue
      *queue)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1036,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1038,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/http-client-queue.c:1040,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1033
    functionDepth: 8
    functionLinenumber: 1033
    functionLinenumberEnd: 1041
    functionName: http_client_queue_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client-queue.c
    functionUses: 1
    functionsReached:
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: void http_client_queue_switch_ioloop(struct http_client_queue *queue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_scheme
      Src: /src/dovecot/src/lib-http/http-url.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - url_parser
    - scheme_r
    argTypes:
    - struct http_url_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 47
    functionName: http_url_parse_scheme
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - uri_parse_scheme
    linkageType: ''
    returnType: bool
    signature: bool http_url_parse_scheme(struct http_url_parser *url_parser, const
      char **scheme_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_url_parse_authority_form
      Src: /src/dovecot/src/lib-http/http-url.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - url_parser
    argTypes:
    - struct http_url_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 67
    functionName: http_url_parse_unknown_scheme
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - http_url_parse_authority_form
    linkageType: ''
    returnType: bool
    signature: bool http_url_parse_unknown_scheme(struct http_url_parser *url_parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-http/http-url.c:97,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-http/http-url.c:99,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-http/http-url.c:102,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-http/http-url.c:104,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - url_parser
    - auth
    - user_r
    - password_r
    argTypes:
    - struct http_url_parser*
    - struct uri_authority*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 108
    functionName: http_url_parse_userinfo
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - strchr
    - uri_data_decode
    linkageType: ''
    returnType: bool
    signature: "bool http_url_parse_userinfo(struct http_url_parser *url_parser,\n\t\t\tstruct
      uri_authority *auth,\n\t\t\tconst char **user_r, const char **password_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_host_authority
      Src: /src/dovecot/src/lib-http/http-url.c:118,1
    - Dst: http_url_parse_userinfo
      Src: /src/dovecot/src/lib-http/http-url.c:131,1
    - Dst: uri_host_copy
      Src: /src/dovecot/src/lib-http/http-url.c:136,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:138,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:139,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - url_parser
    argTypes:
    - struct http_url_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 110
    functionDepth: 7
    functionLinenumber: 110
    functionLinenumberEnd: 142
    functionName: http_url_parse_authority
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - uri_host_copy
    - p_strdup
    - uri_parse_host_authority
    - http_url_parse_userinfo
    linkageType: ''
    returnType: bool
    signature: bool http_url_parse_authority(struct http_url_parser *url_parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_url_parse_authority
      Src: /src/dovecot/src/lib-http/http-url.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - url_parser
    argTypes:
    - struct http_url_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 144
    functionDepth: 8
    functionLinenumber: 144
    functionLinenumberEnd: 154
    functionName: http_url_parse_authority_form
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 1
    functionsReached:
    - http_url_parse_authority
    linkageType: ''
    returnType: bool
    signature: bool http_url_parse_authority_form(struct http_url_parser *url_parser)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:166,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-http/http-url.c:171,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-url.c:173,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:174,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-url.c:177,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:180,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-url.c:182,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib-http/http-url.c:183,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-url.c:184,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:184,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:187,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:187,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - url_parser
    argTypes:
    - struct http_url_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 156
    functionDepth: 4
    functionLinenumber: 156
    functionLinenumberEnd: 189
    functionName: http_url_parse_path_copy_from_base
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - strcmp
    - uri_append_path_data
    - p_strdup
    - t_str_new
    - uri_data_decode
    - str_c
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_url_parse_path_copy_from_base(struct http_url_parser *url_parser)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_path
      Src: /src/dovecot/src/lib-http/http-url.c:202,1
    - Dst: http_url_parse_path_copy_from_base
      Src: /src/dovecot/src/lib-http/http-url.c:207,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-url.c:212,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-url.c:213,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-url.c:221,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib-http/http-url.c:222,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:223,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/http-url.c:227,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-url.c:230,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-http/http-url.c:249,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-http/http-url.c:250,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:250,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-url.c:252,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-url.c:253,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-http/http-url.c:261,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-url.c:265,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-url.c:266,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-url.c:267,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-url.c:268,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:274,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:274,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-url.c:275,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:275,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:278,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:278,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 52
    argCount: 1
    argNames:
    - url_parser
    argTypes:
    - struct http_url_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 191
    functionDepth: 5
    functionLinenumber: 191
    functionLinenumberEnd: 281
    functionName: http_url_parse_path
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - strcmp
    - uri_append_path_data
    - t_str_new
    - str_c
    - uri_data_decode
    - str_append_c
    - p_strdup
    - strlen
    - str_append_data
    - http_url_parse_path_copy_from_base
    - uri_parse_path
    - str_append
    - i_assert
    linkageType: ''
    returnType: int
    signature: int http_url_parse_path(struct http_url_parser *url_parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_query
      Src: /src/dovecot/src/lib-http/http-url.c:291,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:297,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:299,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - url_parser
    - have_path
    argTypes:
    - struct http_url_parser*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 301
    functionName: http_url_parse_query
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - uri_parse_query
    linkageType: ''
    returnType: bool
    signature: bool http_url_parse_query(struct http_url_parser *url_parser, bool
      have_path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_fragment
      Src: /src/dovecot/src/lib-http/http-url.c:311,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:323,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:325,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - url_parser
    - have_path
    argTypes:
    - struct http_url_parser*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 327
    functionName: http_url_parse_fragment
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - uri_parse_fragment
    linkageType: ''
    returnType: bool
    signature: bool http_url_parse_fragment(struct http_url_parser *url_parser, bool
      have_path)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: http_url_parse_scheme
      Src: /src/dovecot/src/lib-http/http-url.c:389,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-url.c:392,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-url.c:395,1
    - Dst: http_url_parse_unknown_scheme
      Src: /src/dovecot/src/lib-http/http-url.c:396,1
    - Dst: http_url_parse_authority_form
      Src: /src/dovecot/src/lib-http/http-url.c:416,1
    - Dst: http_url_parse_authority
      Src: /src/dovecot/src/lib-http/http-url.c:430,1
    - Dst: uri_host_copy
      Src: /src/dovecot/src/lib-http/http-url.c:440,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-http/http-url.c:443,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-http/http-url.c:444,1
    - Dst: http_url_parse_path
      Src: /src/dovecot/src/lib-http/http-url.c:452,1
    - Dst: http_url_parse_query
      Src: /src/dovecot/src/lib-http/http-url.c:458,1
    - Dst: http_url_parse_fragment
      Src: /src/dovecot/src/lib-http/http-url.c:462,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-url.c:466,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 63
    argCount: 1
    argNames:
    - url_parser
    argTypes:
    - struct http_url_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 329
    functionDepth: 9
    functionLinenumber: 329
    functionLinenumberEnd: 471
    functionName: http_url_do_parse
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - http_url_parse_authority
    - i_assert
    - p_strdup_empty
    - uri_host_copy
    - http_url_parse_fragment
    - strcasecmp
    - http_url_parse_query
    - http_url_parse_unknown_scheme
    - http_url_parse_authority_form
    - http_url_parse_scheme
    - http_url_parse_path
    linkageType: ''
    returnType: bool
    signature: bool http_url_do_parse(struct http_url_parser *url_parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-url.c:484,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-url.c:486,1
    - Dst: uri_parser_init
      Src: /src/dovecot/src/lib-http/http-url.c:487,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-url.c:490,1
    - Dst: http_url_do_parse
      Src: /src/dovecot/src/lib-http/http-url.c:494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 6
    argNames:
    - url
    - base
    - flags
    - pool
    - url_r
    - error_r
    argTypes:
    - char*
    - struct http_url*
    - enum http_url_parse_flags
    - pool_t
    - struct http_url**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 475
    functionDepth: 10
    functionLinenumber: 475
    functionLinenumberEnd: 500
    functionName: http_url_parse
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 11
    functionsReached:
    - i_zero
    - http_url_do_parse
    - p_new
    - uri_parser_init
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int http_url_parse(const char *url, struct http_url *base,\n\t\t   enum
      http_url_parse_flags flags, pool_t pool,\n\t\t   struct http_url **url_r, const
      char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-url.c:514,1
    - Dst: http_url_init_authority_from
      Src: /src/dovecot/src/lib-http/http-url.c:516,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-url.c:520,1
    - Dst: uri_parser_init
      Src: /src/dovecot/src/lib-http/http-url.c:522,1
    - Dst: uri_parse_host_authority
      Src: /src/dovecot/src/lib-http/http-url.c:524,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-url.c:525,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-url.c:531,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/lib-http/http-url.c:534,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-url.c:549,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-url.c:553,1
    - Dst: uri_host_copy
      Src: /src/dovecot/src/lib-http/http-url.c:555,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-url.c:562,1
    - Dst: uri_parser_init
      Src: /src/dovecot/src/lib-http/http-url.c:563,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-url.c:565,1
    - Dst: http_url_do_parse
      Src: /src/dovecot/src/lib-http/http-url.c:571,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 6
    argNames:
    - request_target
    - host_header
    - default_base
    - pool
    - target
    - error_r
    argTypes:
    - char*
    - char*
    - struct http_url*
    - pool_t
    - struct http_request_target*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 502
    functionDepth: 11
    functionLinenumber: 502
    functionLinenumberEnd: 579
    functionName: http_url_request_target_parse
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 1
    functionsReached:
    - i_zero
    - http_url_do_parse
    - uri_parse_host_authority
    - p_new
    - uri_host_copy
    - t_strdup_printf
    - uri_parser_init
    - i_assert
    - uri_char_sanitize
    - http_url_init_authority_from
    linkageType: ''
    returnType: int
    signature: "int http_url_request_target_parse(const char *request_target,\n\t\t\t\t
      \ const char *host_header,\n\t\t\t\t  const struct http_url *default_base,\n\t\t\t\t
      \ pool_t pool,\n\t\t\t\t  struct http_request_target *target,\n\t\t\t\t  const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-url.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct http_url*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 592
    functionName: http_url_init_authority_from
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 2
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void http_url_init_authority_from(struct http_url *dest,\n\t\t\t\t
      \ const struct http_url *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-url.c:597,1
    - Dst: uri_host_copy
      Src: /src/dovecot/src/lib-http/http-url.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - pool
    - dest
    - src
    argTypes:
    - pool_t
    - struct http_url*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 594
    functionDepth: 7
    functionLinenumber: 594
    functionLinenumberEnd: 601
    functionName: http_url_copy_authority
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - i_zero
    - uri_host_copy
    linkageType: ''
    returnType: void
    signature: "void http_url_copy_authority(pool_t pool, struct http_url *dest,\n\t\t\t
      \    const struct http_url *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-url.c:608,1
    - Dst: http_url_copy_authority
      Src: /src/dovecot/src/lib-http/http-url.c:609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - src
    argTypes:
    - pool_t
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 603
    functionDepth: 8
    functionLinenumber: 603
    functionLinenumberEnd: 612
    functionName: http_url_clone_authority
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 1
    functionsReached:
    - p_new
    - http_url_copy_authority
    linkageType: ''
    returnType: struct http_url
    signature: 'struct http_url *

      http_url_clone_authority(pool_t pool, const struct http_url *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_url_copy_authority
      Src: /src/dovecot/src/lib-http/http-url.c:617,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:618,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:619,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:620,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - pool
    - dest
    - src
    argTypes:
    - pool_t
    - struct http_url*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 614
    functionDepth: 8
    functionLinenumber: 614
    functionLinenumberEnd: 622
    functionName: http_url_copy
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - http_url_copy_authority
    linkageType: ''
    returnType: void
    signature: "void http_url_copy(pool_t pool, struct http_url *dest,\n\t\t   const
      struct http_url *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_url_copy
      Src: /src/dovecot/src/lib-http/http-url.c:627,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:628,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-url.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - pool
    - dest
    - src
    argTypes:
    - pool_t
    - struct http_url*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 624
    functionDepth: 9
    functionLinenumber: 624
    functionLinenumberEnd: 630
    functionName: http_url_copy_with_userinfo
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - http_url_copy
    linkageType: ''
    returnType: void
    signature: "void http_url_copy_with_userinfo(pool_t pool, struct http_url *dest,\n\t\t\t\t
      const struct http_url *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-url.c:636,1
    - Dst: http_url_copy
      Src: /src/dovecot/src/lib-http/http-url.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - src
    argTypes:
    - pool_t
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 632
    functionDepth: 9
    functionLinenumber: 632
    functionLinenumberEnd: 640
    functionName: http_url_clone
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - p_new
    - http_url_copy
    linkageType: ''
    returnType: struct http_url
    signature: struct http_url *http_url_clone(pool_t pool, const struct http_url
      *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-url.c:647,1
    - Dst: http_url_copy_with_userinfo
      Src: /src/dovecot/src/lib-http/http-url.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - src
    argTypes:
    - pool_t
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 642
    functionDepth: 10
    functionLinenumber: 642
    functionLinenumberEnd: 651
    functionName: http_url_clone_with_userinfo
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 1
    functionsReached:
    - http_url_copy_with_userinfo
    - p_new
    linkageType: ''
    returnType: struct http_url
    signature: 'struct http_url *

      http_url_clone_with_userinfo(pool_t pool, const struct http_url *src)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uri_append_scheme
      Src: /src/dovecot/src/lib-http/http-url.c:662,1
    - Dst: uri_append_scheme
      Src: /src/dovecot/src/lib-http/http-url.c:664,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-url.c:665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - urlstr
    - url
    argTypes:
    - string_t*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 657
    functionDepth: 3
    functionLinenumber: 657
    functionLinenumberEnd: 666
    functionName: http_url_add_scheme
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - str_append
    - uri_append_scheme
    linkageType: ''
    returnType: void
    signature: void http_url_add_scheme(string_t *urlstr, const struct http_url *url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_append_host
      Src: /src/dovecot/src/lib-http/http-url.c:672,1
    - Dst: uri_append_port
      Src: /src/dovecot/src/lib-http/http-url.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - urlstr
    - url
    argTypes:
    - string_t*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 668
    functionDepth: 8
    functionLinenumber: 668
    functionLinenumberEnd: 675
    functionName: http_url_add_authority
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - uri_append_port
    - uri_append_host
    linkageType: ''
    returnType: void
    signature: void http_url_add_authority(string_t *urlstr, const struct http_url
      *url)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-url.c:684,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-url.c:686,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-url.c:687,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-url.c:689,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib-http/http-url.c:690,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-url.c:695,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-url.c:696,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - urlstr
    - url
    argTypes:
    - string_t*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 677
    functionDepth: 4
    functionLinenumber: 677
    functionLinenumberEnd: 698
    functionName: http_url_add_target
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - str_append
    - uri_append_path_data
    - i_assert
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void http_url_add_target(string_t *urlstr, const struct http_url *url)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-url.c:702,1
    - Dst: http_url_add_scheme
      Src: /src/dovecot/src/lib-http/http-url.c:704,1
    - Dst: http_url_add_authority
      Src: /src/dovecot/src/lib-http/http-url.c:705,1
    - Dst: http_url_add_target
      Src: /src/dovecot/src/lib-http/http-url.c:706,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-url.c:710,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-url.c:711,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:714,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - url
    argTypes:
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 700
    functionDepth: 9
    functionLinenumber: 700
    functionLinenumberEnd: 715
    functionName: http_url_create
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 5
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - http_url_add_scheme
    - http_url_add_authority
    - str_append
    - http_url_add_target
    linkageType: ''
    returnType: char
    signature: char *http_url_create(const struct http_url *url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-url.c:719,1
    - Dst: http_url_add_scheme
      Src: /src/dovecot/src/lib-http/http-url.c:721,1
    - Dst: http_url_add_authority
      Src: /src/dovecot/src/lib-http/http-url.c:722,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - url
    argTypes:
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 717
    functionDepth: 9
    functionLinenumber: 717
    functionLinenumberEnd: 725
    functionName: http_url_create_host
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - http_url_add_authority
    - str_c
    - t_str_new
    - http_url_add_scheme
    linkageType: ''
    returnType: char
    signature: char *http_url_create_host(const struct http_url *url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-url.c:729,1
    - Dst: http_url_add_authority
      Src: /src/dovecot/src/lib-http/http-url.c:731,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - url
    argTypes:
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 727
    functionDepth: 9
    functionLinenumber: 727
    functionLinenumberEnd: 734
    functionName: http_url_create_authority
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 1
    functionsReached:
    - http_url_add_authority
    - str_c
    - t_str_new
    linkageType: ''
    returnType: char
    signature: char *http_url_create_authority(const struct http_url *url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-url.c:738,1
    - Dst: http_url_add_target
      Src: /src/dovecot/src/lib-http/http-url.c:740,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-url.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - url
    argTypes:
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 736
    functionDepth: 5
    functionLinenumber: 736
    functionLinenumberEnd: 743
    functionName: http_url_create_target
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - http_url_add_target
    linkageType: ''
    returnType: char
    signature: char *http_url_create_target(const struct http_url *url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib-http/http-url.c:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - out
    - data
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 745
    functionDepth: 4
    functionLinenumber: 745
    functionLinenumberEnd: 748
    functionName: http_url_escape_path
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 0
    functionsReached:
    - uri_append_query_data
    linkageType: ''
    returnType: void
    signature: void http_url_escape_path(string_t *out, const char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib-http/http-url.c:752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - out
    - data
    argTypes:
    - string_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 750
    functionDepth: 4
    functionLinenumber: 750
    functionLinenumberEnd: 753
    functionName: http_url_escape_param
    functionSourceFile: /src/dovecot/src/lib-http/http-url.c
    functionUses: 7
    functionsReached:
    - uri_append_query_data
    linkageType: ''
    returnType: void
    signature: void http_url_escape_param(string_t *out, const char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dovecot/src/lib-http/http-server-connection.c:45,1
    - Dst: e_info
      Src: /src/dovecot/src/lib-http/http-server-connection.c:46,1
    - Dst: t_strdup_vprintf
      Src: /src/dovecot/src/lib-http/http-server-connection.c:46,1
    - Dst: va_end
      Src: /src/dovecot/src/lib-http/http-server-connection.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - format
    argTypes:
    - struct http_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 11
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: http_server_connection_client_error
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - t_strdup_vprintf
    - e_info
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_client_error(struct http_server_connection
      *conn,\n\t\t\t\t    const char *format, ...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 63
    functionName: http_server_connection_update_stats
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_server_connection_update_stats(struct http_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_update_stats
      Src: /src/dovecot/src/lib-http/http-server-connection.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: http_server_connection_get_stats
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - http_server_connection_update_stats
    linkageType: ''
    returnType: struct http_server_stats
    signature: 'struct http_server_stats *

      http_server_connection_get_stats(struct http_server_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-http/http-server-connection.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: http_server_connection_input_set_pending
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - i_stream_set_input_pending
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_input_set_pending(\n\tstruct http_server_connection
      *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-http/http-server-connection.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: http_server_connection_input_halt
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_halt
    linkageType: ''
    returnType: void
    signature: void http_server_connection_input_halt(struct http_server_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_pending_payload
      Src: /src/dovecot/src/lib-http/http-server-connection.c:99,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-http/http-server-connection.c:103,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 104
    functionName: http_server_connection_input_resume
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - connection_input_resume
    - http_server_connection_pending_payload
    linkageType: ''
    returnType: void
    signature: void http_server_connection_input_resume(struct http_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_client_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:109,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 12
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: http_server_connection_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - http_server_connection_client_error
    - http_server_connection_close
    linkageType: ''
    returnType: void
    signature: void http_server_connection_idle_timeout(struct http_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-http/http-server-connection.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 125
    functionName: http_server_connection_start_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - timeout_add
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_start_idle_timeout(\n\tstruct http_server_connection
      *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-http/http-server-connection.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 127
    functionDepth: 7
    functionLinenumber: 127
    functionLinenumberEnd: 132
    functionName: http_server_connection_reset_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - timeout_reset
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_reset_idle_timeout(\n\tstruct http_server_connection
      *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-server-connection.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 6
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: http_server_connection_stop_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_stop_idle_timeout(\n\tstruct http_server_connection
      *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 149
    functionName: http_server_connection_shut_down
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - http_server_connection_close
    linkageType: ''
    returnType: bool
    signature: bool http_server_connection_shut_down(struct http_server_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-http/http-server-connection.c:158,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/lib-http/http-server-connection.c:159,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-server-connection.c:163,1
    - Dst: http_request_parser_init
      Src: /src/dovecot/src/lib-http/http-server-connection.c:177,1
    - Dst: o_stream_set_finish_via_child
      Src: /src/dovecot/src/lib-http/http-server-connection.c:180,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-http/http-server-connection.c:181,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 151
    functionDepth: 8
    functionLinenumber: 151
    functionLinenumberEnd: 183
    functionName: http_server_connection_ready
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - http_request_parser_init
    - stat
    - iostream_rawlog_create
    - o_stream_set_flush_callback
    - o_stream_set_finish_via_child
    linkageType: ''
    returnType: void
    signature: void http_server_connection_ready(struct http_server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_disconnect
      Src: /src/dovecot/src/lib-http/http-server-connection.c:190,1
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 192
    functionName: http_server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - http_server_connection_unref
    - http_server_connection_disconnect
    linkageType: ''
    returnType: void
    signature: void http_server_connection_destroy(struct connection *_conn)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:199,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:200,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:202,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:204,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-http/http-server-connection.c:208,1
    - Dst: http_server_payload_handler_destroy
      Src: /src/dovecot/src/lib-http/http-server-connection.c:214,1
    - Dst: http_server_connection_client_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:222,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:224,1
    - Dst: http_server_connection_client_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:229,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:231,1
    - Dst: http_server_connection_stop_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:245,1
    - Dst: http_server_request_submit_response
      Src: /src/dovecot/src/lib-http/http-server-connection.c:247,1
    - Dst: http_server_request_is_complete
      Src: /src/dovecot/src/lib-http/http-server-connection.c:255,1
    - Dst: http_server_request_ready_to_respond
      Src: /src/dovecot/src/lib-http/http-server-connection.c:256,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-server-connection.c:264,1
    - Dst: http_server_connection_input_resume
      Src: /src/dovecot/src/lib-http/http-server-connection.c:268,1
    - Dst: http_server_connection_input_set_pending
      Src: /src/dovecot/src/lib-http/http-server-connection.c:269,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 194
    functionDepth: 12
    functionLinenumber: 194
    functionLinenumberEnd: 270
    functionName: http_server_payload_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - http_server_request_submit_response
    - http_server_connection_input_set_pending
    - http_server_request_is_complete
    - i_unreached
    - e_debug
    - http_server_request_ready_to_respond
    - http_server_connection_input_resume
    - http_server_connection_client_error
    - http_server_payload_handler_destroy
    - http_server_request_fail_close
    - net_set_nonblock
    - i_assert
    - http_server_connection_stop_idle_timeout
    linkageType: ''
    returnType: void
    signature: void http_server_payload_destroyed(struct http_server_request *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:280,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:281,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/http-server-connection.c:284,1
    - Dst: i_stream_create_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:295,1
    - Dst: http_server_connection_stop_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:300,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/http-server-connection.c:303,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib-http/http-server-connection.c:305,1
    - Dst: http_server_connection_input_halt
      Src: /src/dovecot/src/lib-http/http-server-connection.c:309,1
    - Dst: http_server_request_callback
      Src: /src/dovecot/src/lib-http/http-server-connection.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - conn
    - req
    argTypes:
    - struct http_server_connection*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 272
    functionDepth: 7
    functionLinenumber: 272
    functionLinenumberEnd: 315
    functionName: http_server_connection_handle_request
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - http_server_request_fail
    - http_server_request_callback
    - i_stream_create_from_data
    - i_stream_add_destroy_callback
    - http_server_connection_input_halt
    - i_stream_create_timeout
    - i_assert
    - http_server_connection_stop_idle_timeout
    linkageType: ''
    returnType: bool
    signature: "bool http_server_connection_handle_request(struct http_server_connection
      *conn,\n\t\t\t\t      struct http_server_request *req)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:369,1
    - Dst: http_server_connection_input_halt
      Src: /src/dovecot/src/lib-http/http-server-connection.c:371,1
    - Dst: io_stream_autocreate_ssl_server
      Src: /src/dovecot/src/lib-http/http-server-connection.c:381,1
    - Dst: ssl_iostream_server_context_cache_get
      Src: /src/dovecot/src/lib-http/http-server-connection.c:386,1
    - Dst: ssl_iostream_context_set_application_protocols
      Src: /src/dovecot/src/lib-http/http-server-connection.c:391,1
    - Dst: io_stream_create_ssl_server
      Src: /src/dovecot/src/lib-http/http-server-connection.c:392,1
    - Dst: ssl_iostream_context_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:397,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:400,1
    - Dst: http_server_connection_input_resume
      Src: /src/dovecot/src/lib-http/http-server-connection.c:405,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-http/http-server-connection.c:407,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:408,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:409,1
    - Dst: http_server_connection_ready
      Src: /src/dovecot/src/lib-http/http-server-connection.c:413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 361
    functionDepth: 9
    functionLinenumber: 361
    functionLinenumberEnd: 415
    functionName: http_server_connection_ssl_init
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - io_stream_create_ssl_server
    - io_stream_autocreate_ssl_server
    - e_debug
    - ssl_iostream_context_unref
    - ssl_iostream_server_context_cache_get
    - http_server_connection_input_resume
    - http_server_connection_input_halt
    - ssl_iostream_handshake
    - e_error
    - ssl_iostream_get_last_error
    - http_server_connection_ready
    - ssl_iostream_context_set_application_protocols
    linkageType: ''
    returnType: int
    signature: int http_server_connection_ssl_init(struct http_server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 423
    functionName: http_server_connection_pipeline_is_full
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_server_connection_pipeline_is_full(struct http_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:429,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:433,1
    - Dst: http_server_connection_input_halt
      Src: /src/dovecot/src/lib-http/http-server-connection.c:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 425
    functionDepth: 3
    functionLinenumber: 425
    functionLinenumberEnd: 439
    functionName: http_server_connection_pipeline_handle_full
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_server_connection_input_halt
    linkageType: ''
    returnType: void
    signature: void http_server_connection_pipeline_handle_full(struct http_server_connection
      *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_client_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:455,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-connection.c:457,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:458,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:459,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:461,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:466,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:471,1
    - Dst: http_server_connection_input_halt
      Src: /src/dovecot/src/lib-http/http-server-connection.c:478,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 441
    functionDepth: 12
    functionLinenumber: 441
    functionLinenumberEnd: 484
    functionName: http_server_connection_check_input
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_server_connection_input_halt
    - i_stream_get_error
    - http_server_connection_client_error
    - i_stream_get_name
    - http_server_connection_close
    linkageType: ''
    returnType: bool
    signature: bool http_server_connection_check_input(struct http_server_connection
      *conn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:498,1
    - Dst: http_request_parse_finish_payload
      Src: /src/dovecot/src/lib-http/http-server-connection.c:500,1
    - Dst: http_server_connection_check_input
      Src: /src/dovecot/src/lib-http/http-server-connection.c:502,1
    - Dst: http_server_connection_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:505,1
    - Dst: http_server_connection_client_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:507,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:513,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:518,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-server-connection.c:522,1
    - Dst: http_server_connection_unref_is_closed
      Src: /src/dovecot/src/lib-http/http-server-connection.c:525,1
    - Dst: http_server_connection_input_halt
      Src: /src/dovecot/src/lib-http/http-server-connection.c:531,1
    - Dst: http_server_request_ready_to_respond
      Src: /src/dovecot/src/lib-http/http-server-connection.c:536,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 486
    functionDepth: 14
    functionLinenumber: 486
    functionLinenumberEnd: 540
    functionName: http_server_connection_finish_request
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - e_debug
    - http_server_connection_check_input
    - http_request_parse_finish_payload
    - http_server_request_ready_to_respond
    - http_server_connection_unref_is_closed
    - http_server_connection_input_halt
    - http_server_connection_client_error
    - http_server_request_fail_close
    - http_server_connection_ref
    linkageType: ''
    returnType: bool
    signature: bool http_server_connection_finish_request(struct http_server_connection
      *conn)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_shut_down
      Src: /src/dovecot/src/lib-http/http-server-connection.c:553,1
    - Dst: http_server_connection_pipeline_handle_full
      Src: /src/dovecot/src/lib-http/http-server-connection.c:554,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:558,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:559,1
    - Dst: http_server_connection_reset_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:561,1
    - Dst: http_server_connection_ssl_init
      Src: /src/dovecot/src/lib-http/http-server-connection.c:564,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:566,1
    - Dst: http_server_connection_finish_request
      Src: /src/dovecot/src/lib-http/http-server-connection.c:573,1
    - Dst: http_server_connection_input_halt
      Src: /src/dovecot/src/lib-http/http-server-connection.c:580,1
    - Dst: http_server_connection_pipeline_handle_full
      Src: /src/dovecot/src/lib-http/http-server-connection.c:590,1
    - Dst: http_server_connection_pipeline_handle_full
      Src: /src/dovecot/src/lib-http/http-server-connection.c:599,1
    - Dst: http_server_request_new
      Src: /src/dovecot/src/lib-http/http-server-connection.c:603,1
    - Dst: http_server_connection_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:609,1
    - Dst: http_request_parse_next
      Src: /src/dovecot/src/lib-http/http-server-connection.c:610,1
    - Dst: http_server_request_received
      Src: /src/dovecot/src/lib-http/http-server-connection.c:614,1
    - Dst: http_server_request_immune_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:616,1
    - Dst: http_server_connection_handle_request
      Src: /src/dovecot/src/lib-http/http-server-connection.c:618,1
    - Dst: http_server_request_immune_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:623,1
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:624,1
    - Dst: http_server_request_immune_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:629,1
    - Dst: http_server_connection_finish_request
      Src: /src/dovecot/src/lib-http/http-server-connection.c:643,1
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:644,1
    - Dst: http_server_connection_pipeline_is_full
      Src: /src/dovecot/src/lib-http/http-server-connection.c:648,1
    - Dst: http_server_connection_pipeline_handle_full
      Src: /src/dovecot/src/lib-http/http-server-connection.c:650,1
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:651,1
    - Dst: http_server_request_new
      Src: /src/dovecot/src/lib-http/http-server-connection.c:656,1
    - Dst: http_server_connection_unref_is_closed
      Src: /src/dovecot/src/lib-http/http-server-connection.c:659,1
    - Dst: http_server_connection_check_input
      Src: /src/dovecot/src/lib-http/http-server-connection.c:664,1
    - Dst: http_server_connection_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:668,1
    - Dst: http_server_connection_client_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:670,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/http-server-connection.c:678,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/http-server-connection.c:685,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:690,1
    - Dst: http_server_request_fail
      Src: /src/dovecot/src/lib-http/http-server-connection.c:694,1
    - Dst: http_server_request_fail_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:699,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-server-connection.c:703,1
    - Dst: http_server_connection_unref_is_closed
      Src: /src/dovecot/src/lib-http/http-server-connection.c:706,1
    - Dst: http_server_connection_input_halt
      Src: /src/dovecot/src/lib-http/http-server-connection.c:713,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 110
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 542
    functionDepth: 15
    functionLinenumber: 542
    functionLinenumberEnd: 716
    functionName: http_server_connection_input
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - http_server_connection_handle_request
    - http_server_request_received
    - http_server_request_fail
    - http_server_request_fail_close
    - http_server_connection_shut_down
    - http_request_parse_next
    - http_server_connection_pipeline_handle_full
    - i_unreached
    - http_server_connection_client_error
    - http_server_connection_ref
    - http_server_request_new
    - http_server_connection_check_input
    - http_server_request_immune_ref
    - http_server_connection_input_halt
    - http_server_connection_unref_is_closed
    - http_server_connection_reset_idle_timeout
    - http_server_connection_ssl_init
    - http_server_connection_finish_request
    - i_assert
    - http_server_request_immune_unref
    - http_server_connection_pipeline_is_full
    - http_server_connection_unref
    - http_server_connection_close
    linkageType: ''
    returnType: void
    signature: void http_server_connection_input(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:729,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-connection.c:730,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:731,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:732,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:735,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:736,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 739
    functionName: http_server_connection_handle_output_error
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - o_stream_get_name
    - o_stream_get_error
    - e_debug
    - e_error
    - http_server_connection_close
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_handle_output_error(\n\tstruct http_server_connection
      *conn)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:764,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:765,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:771,1
    - Dst: http_server_connection_stop_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:773,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:776,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:778,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-http/http-server-connection.c:791,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/http-server-connection.c:792,1
    - Dst: http_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:793,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:797,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:803,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:806,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:807,1
    - Dst: http_server_request_immune_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:809,1
    - Dst: http_server_response_send
      Src: /src/dovecot/src/lib-http/http-server-connection.c:810,1
    - Dst: http_server_request_immune_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:811,1
    - Dst: http_server_connection_reset_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:816,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 752
    functionDepth: 8
    functionLinenumber: 752
    functionLinenumberEnd: 822
    functionName: http_server_connection_next_response
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - http_server_request_immune_unref
    - e_debug
    - strlen
    - http_server_request_immune_ref
    - o_stream_send
    - http_server_connection_start_idle_timeout
    - http_server_response_send
    - http_server_connection_reset_idle_timeout
    - http_server_connection_handle_output_error
    - i_assert
    - http_server_connection_stop_idle_timeout
    linkageType: ''
    returnType: enum _output_result
    signature: enum _output_result http_server_connection_next_response(struct http_server_connection
      *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:829,1
    - Dst: http_server_connection_next_response
      Src: /src/dovecot/src/lib-http/http-server-connection.c:834,1
    - Dst: http_server_connection_unref_is_closed
      Src: /src/dovecot/src/lib-http/http-server-connection.c:836,1
    - Dst: http_server_connection_input_resume
      Src: /src/dovecot/src/lib-http/http-server-connection.c:845,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-server-connection.c:856,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 824
    functionDepth: 9
    functionLinenumber: 824
    functionLinenumberEnd: 857
    functionName: http_server_connection_send_responses
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - http_server_connection_input_resume
    - http_server_connection_unref_is_closed
    - http_server_connection_next_response
    - http_server_connection_ref
    linkageType: ''
    returnType: int
    signature: int http_server_connection_send_responses(struct http_server_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/http-server-connection.c:864,1
    - Dst: http_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:866,1
    - Dst: http_server_connection_reset_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:870,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 859
    functionDepth: 8
    functionLinenumber: 859
    functionLinenumberEnd: 872
    functionName: http_server_connection_flush
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - http_server_connection_handle_output_error
    - http_server_connection_reset_idle_timeout
    linkageType: ''
    returnType: int
    signature: int http_server_connection_flush(struct http_server_connection *conn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_pipeline_is_full
      Src: /src/dovecot/src/lib-http/http-server-connection.c:877,1
    - Dst: http_server_connection_flush
      Src: /src/dovecot/src/lib-http/http-server-connection.c:880,1
    - Dst: http_server_connection_send_responses
      Src: /src/dovecot/src/lib-http/http-server-connection.c:884,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:891,1
    - Dst: http_server_connection_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:893,1
    - Dst: http_server_request_immune_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:895,1
    - Dst: http_server_response_send_more
      Src: /src/dovecot/src/lib-http/http-server-connection.c:896,1
    - Dst: http_server_request_immune_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:897,1
    - Dst: http_server_connection_unref_is_closed
      Src: /src/dovecot/src/lib-http/http-server-connection.c:899,1
    - Dst: http_server_connection_send_responses
      Src: /src/dovecot/src/lib-http/http-server-connection.c:904,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:909,1
    - Dst: http_server_connection_stop_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:911,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:914,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:916,1
    - Dst: http_server_connection_shut_down
      Src: /src/dovecot/src/lib-http/http-server-connection.c:921,1
    - Dst: http_server_connection_pipeline_is_full
      Src: /src/dovecot/src/lib-http/http-server-connection.c:924,1
    - Dst: http_server_connection_input_resume
      Src: /src/dovecot/src/lib-http/http-server-connection.c:925,1
    - Dst: http_server_connection_input_set_pending
      Src: /src/dovecot/src/lib-http/http-server-connection.c:927,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 874
    functionDepth: 10
    functionLinenumber: 874
    functionLinenumberEnd: 931
    functionName: http_server_connection_output
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 0
    functionsReached:
    - http_server_connection_input_set_pending
    - http_server_connection_send_responses
    - i_assert
    - http_server_request_immune_unref
    - e_debug
    - http_server_connection_flush
    - http_server_request_immune_ref
    - http_server_connection_unref_is_closed
    - http_server_connection_input_resume
    - http_server_connection_shut_down
    - http_server_connection_pipeline_is_full
    - http_server_response_send_more
    - http_server_connection_start_idle_timeout
    - http_server_connection_ref
    - http_server_connection_stop_idle_timeout
    linkageType: ''
    returnType: int
    signature: int http_server_connection_output(struct http_server_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-http/http-server-connection.c:937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 933
    functionDepth: 2
    functionLinenumber: 933
    functionLinenumberEnd: 938
    functionName: http_server_connection_output_trigger
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 5
    functionsReached:
    - o_stream_set_flush_pending
    linkageType: ''
    returnType: void
    signature: void http_server_connection_output_trigger(struct http_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/lib-http/http-server-connection.c:947,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 948
    functionName: http_server_connection_output_halt
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - o_stream_unset_flush_callback
    linkageType: ''
    returnType: void
    signature: void http_server_connection_output_halt(struct http_server_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-http/http-server-connection.c:958,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 960
    functionName: http_server_connection_output_resume
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - o_stream_set_flush_callback
    linkageType: ''
    returnType: void
    signature: void http_server_connection_output_resume(struct http_server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_request_parser_pending_payload
      Src: /src/dovecot/src/lib-http/http-server-connection.c:965,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 962
    functionDepth: 3
    functionLinenumber: 962
    functionLinenumberEnd: 966
    functionName: http_server_connection_pending_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 2
    functionsReached:
    - http_request_parser_pending_payload
    linkageType: ''
    returnType: bool
    signature: "bool http_server_connection_pending_payload(\n\tstruct http_server_connection
      *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-http/http-server-connection.c:982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 980
    functionDepth: 2
    functionLinenumber: 980
    functionLinenumberEnd: 984
    functionName: http_server_connection_list_init
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: struct connection_list
    signature: struct connection_list *http_server_connection_list_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:995,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-server-connection.c:997,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1001,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1007,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1009,1
    - Dst: net_set_tcp_nodelay
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1010,1
    - Dst: net_set_send_buffer_size
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1013,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1015,1
    - Dst: net_set_recv_buffer_size
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1020,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1022,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1027,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1029,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1032,1
    - Dst: http_server_connection_ready
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1035,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1036,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1038,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 6
    argNames:
    - server
    - fd_in
    - fd_out
    - ssl
    - callbacks
    - context
    argTypes:
    - struct http_server*
    - int
    - int
    - bool
    - struct http_server_callbacks*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 986
    functionDepth: 9
    functionLinenumber: 986
    functionLinenumberEnd: 1040
    functionName: http_server_connection_create
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 5
    functionsReached:
    - event_create
    - event_unref
    - pool_ref
    - net_set_send_buffer_size
    - e_debug
    - net_set_tcp_nodelay
    - connection_init_server
    - e_error
    - http_server_connection_ready
    - http_server_connection_start_idle_timeout
    - i_new
    - net_set_recv_buffer_size
    - net_set_nonblock
    - i_assert
    linkageType: ''
    returnType: struct http_server_connection
    signature: "struct http_server_connection *\nhttp_server_connection_create(struct
      http_server *server,\n\t\t\t      int fd_in, int fd_out, bool ssl,\n\t\t\t      const
      struct http_server_callbacks *callbacks,\n\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1042
    functionDepth: 1
    functionLinenumber: 1042
    functionLinenumberEnd: 1046
    functionName: http_server_connection_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 6
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_server_connection_ref(struct http_server_connection *conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1059,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1060,1
    - Dst: http_server_connection_update_stats
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1064,1
    - Dst: i_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1068,1
    - Dst: http_server_payload_handler_destroy
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1073,1
    - Dst: http_server_request_abort
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1079,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1083,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1084,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1085,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1087,1
    - Dst: http_request_parser_deinit
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1090,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1091,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct http_server_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1048
    functionDepth: 7
    functionLinenumber: 1048
    functionLinenumberEnd: 1092
    functionName: http_server_connection_disconnect
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - http_request_parser_deinit
    - o_stream_uncork
    - e_debug
    - io_remove
    - i_stream_remove_destroy_callback
    - http_server_connection_update_stats
    - i_strdup
    - http_server_request_abort
    - http_server_payload_handler_destroy
    - connection_disconnect
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_disconnect(struct http_server_connection
      *conn,\n\tconst char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1098,1
    - Dst: http_server_connection_disconnect
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1104,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1106,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1108,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1109,1
    - Dst: struct http_server_connection*::callbacks::connection_destroy
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct http_server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1094
    functionDepth: 8
    functionLinenumber: 1094
    functionLinenumberEnd: 1115
    functionName: http_server_connection_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 4
    functionsReached:
    - struct http_server_connection*::callbacks::connection_destroy
    - e_debug
    - http_server_connection_disconnect
    - ssl_iostream_destroy
    - i_assert
    - connection_deinit
    linkageType: ''
    returnType: bool
    signature: bool http_server_connection_unref(struct http_server_connection **_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1123
    functionDepth: 9
    functionLinenumber: 1123
    functionLinenumberEnd: 1131
    functionName: http_server_connection_unref_is_closed
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 4
    functionsReached:
    - http_server_connection_unref
    linkageType: ''
    returnType: bool
    signature: bool http_server_connection_unref_is_closed(struct http_server_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_disconnect
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1140,1
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - _conn
    - reason
    argTypes:
    - struct http_server_connection**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1133
    functionDepth: 9
    functionLinenumber: 1133
    functionLinenumberEnd: 1142
    functionName: http_server_connection_close
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 10
    functionsReached:
    - http_server_connection_unref
    - http_server_connection_disconnect
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_close(struct http_server_connection **_conn,\n\t\t\t\t
      \ const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_update_stats
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1152,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1154,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1163,1
    - Dst: callback
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - _conn
    - callback
    - context
    argTypes:
    - struct http_server_connection**
    - http_server_tunnel_callback_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1144
    functionDepth: 10
    functionLinenumber: 1144
    functionLinenumberEnd: 1166
    functionName: http_server_connection_tunnel
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 1
    functionsReached:
    - i_zero
    - http_server_connection_close
    - callback
    - http_server_connection_update_stats
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_tunnel(struct http_server_connection **_conn,\n\t\t\t\t
      \  http_server_tunnel_callback_t callback,\n\t\t\t\t   void *context)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1179,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1182,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1186,1
    - Dst: io_loop_move_io_to
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1190,1
    - Dst: http_server_payload_handler_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1193,1
    - Dst: i_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1197,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - conn
    - ioloop
    argTypes:
    - struct http_server_connection*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1168
    functionDepth: 7
    functionLinenumber: 1168
    functionLinenumberEnd: 1201
    functionName: http_server_connection_switch_ioloop_to
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 3
    functionsReached:
    - io_loop_move_io_to
    - io_loop_move_timeout_to
    - http_server_payload_handler_switch_ioloop
    - connection_switch_ioloop_to
    - i_stream_switch_ioloop_to
    linkageType: ''
    returnType: struct ioloop
    signature: "struct ioloop *\nhttp_server_connection_switch_ioloop_to(struct http_server_connection
      *conn,\n\t\t\t\t\tstruct ioloop *ioloop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-server-connection.c:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1203
    functionDepth: 8
    functionLinenumber: 1203
    functionLinenumberEnd: 1207
    functionName: http_server_connection_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-server-connection.c
    functionUses: 3
    functionsReached:
    - http_server_connection_switch_ioloop_to
    linkageType: ''
    returnType: struct ioloop
    signature: 'struct ioloop *

      http_server_connection_switch_ioloop(struct http_server_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-http/http-server-response.c:25,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-server-response.c:26,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-server-response.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 23
    functionDepth: 11
    functionLinenumber: 23
    functionLinenumberEnd: 29
    functionName: http_server_response_update_event
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - t_strdup_printf
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void http_server_response_update_event(struct http_server_response
      *resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:37,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-server-response.c:40,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-server-response.c:48,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-server-response.c:49,1
    - Dst: http_server_response_request_free
      Src: /src/dovecot/src/lib-http/http-server-response.c:51,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-server-response.c:52,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-server-response.c:59,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-http/http-server-response.c:60,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-server-response.c:62,1
    - Dst: http_server_response_update_event
      Src: /src/dovecot/src/lib-http/http-server-response.c:63,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-server-response.c:65,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-server-response.c:67,1
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/http-server-response.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - req
    - status
    - reason
    argTypes:
    - struct http_server_request*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 31
    functionDepth: 12
    functionLinenumber: 31
    functionLinenumberEnd: 73
    functionName: http_server_response_create
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 17
    functionsReached:
    - i_zero
    - p_strdup
    - event_create
    - p_new
    - http_server_response_request_free
    - array_get
    - http_server_response_add_header
    - ARRAY_TYPE
    - http_server_response_update_event
    - array_is_created
    - i_assert
    - str_new
    linkageType: ''
    returnType: struct http_server_response
    signature: "struct http_server_response *\nhttp_server_response_create(struct
      http_server_request *req,\n\t\t\t    unsigned int status, const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:77,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:80,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:82,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:83,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:84,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-http/http-server-response.c:85,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-server-response.c:87,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-server-response.c:90,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-server-response.c:91,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-server-response.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 75
    functionDepth: 4
    functionLinenumber: 75
    functionLinenumberEnd: 94
    functionName: http_server_response_request_free
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 2
    functionsReached:
    - event_unref
    - array_foreach_elem
    - e_debug
    - o_stream_unref
    - array_free
    - i_stream_unref
    - array_is_created
    - i_assert
    - i_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void http_server_response_request_free(struct http_server_response
      *resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:98,1
    - Dst: http_server_ostream_response_destroyed
      Src: /src/dovecot/src/lib-http/http-server-response.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: http_server_response_request_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - e_debug
    - http_server_ostream_response_destroyed
    linkageType: ''
    returnType: void
    signature: void http_server_response_request_destroy(struct http_server_response
      *resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:108,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:110,1
    - Dst: http_server_ostream_set_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - resp
    - reason
    argTypes:
    - struct http_server_response*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 104
    functionDepth: 4
    functionLinenumber: 104
    functionLinenumberEnd: 116
    functionName: http_server_response_request_abort
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - e_debug
    - http_server_ostream_set_error
    linkageType: ''
    returnType: void
    signature: "void http_server_response_request_abort(struct http_server_response
      *resp,\n\t\t\t\t\tconst char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_ref
      Src: /src/dovecot/src/lib-http/http-server-response.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: http_server_response_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - http_server_request_ref
    linkageType: ''
    returnType: void
    signature: void http_server_response_ref(struct http_server_response *resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _resp
    argTypes:
    - struct http_server_response**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 134
    functionName: http_server_response_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 2
    functionsReached:
    - http_server_request_unref
    linkageType: ''
    returnType: bool
    signature: bool http_server_response_unref(struct http_server_response **_resp)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:139,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:140,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-http/http-server-response.c:140,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-http/http-server-response.c:140,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:141,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-http/http-server-response.c:141,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-http/http-server-response.c:141,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-server-response.c:146,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-server-response.c:148,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-server-response.c:152,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-server-response.c:156,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-server-response.c:160,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 3
    argNames:
    - resp
    - key
    - value
    argTypes:
    - struct http_server_response*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 161
    functionName: http_server_response_add_header
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 11
    functionsReached:
    - strchr
    - str_printfa
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: "void http_server_response_add_header(struct http_server_response *resp,\n\t\t\t\t
      \    const char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:167,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-server-response.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - resp
    - status
    - reason
    argTypes:
    - struct http_server_response*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 171
    functionName: http_server_response_update_status
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_response_update_status(struct http_server_response
      *resp,\n\t\t\t\t\tunsigned int status,\n\t\t\t\t\tconst char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - resp
    - date
    argTypes:
    - struct http_server_response*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 179
    functionName: http_server_response_set_date
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_response_set_date(struct http_server_response *resp,\n\t\t\t\t
      \  time_t date)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:187,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:188,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:189,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/http-server-response.c:191,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-http/http-server-response.c:193,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:195,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-response.c:196,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:197,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - resp
    - input
    argTypes:
    - struct http_server_response*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 206
    functionName: http_server_response_set_payload_real
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - e_error
    - i_stream_get_size
    - i_stream_get_error
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_response_set_payload_real(struct http_server_response
      *resp,\n\t\t\t\t      struct istream *input)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/http-server-response.c:211,1
    - Dst: http_server_response_set_payload_real
      Src: /src/dovecot/src/lib-http/http-server-response.c:212,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - resp
    - input
    argTypes:
    - struct http_server_response*
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 208
    functionDepth: 5
    functionLinenumber: 208
    functionLinenumberEnd: 214
    functionName: http_server_response_set_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 3
    functionsReached:
    - http_server_response_set_payload_real
    - i_stream_create_limit
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void http_server_response_set_payload(struct http_server_response
      *resp,\n\t\t\t\t      struct istream *input)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:223,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:224,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:225,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-http/http-server-response.c:230,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-http/http-server-response.c:231,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/http-server-response.c:232,1
    - Dst: http_server_response_set_payload_real
      Src: /src/dovecot/src/lib-http/http-server-response.c:234,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - resp
    - data
    - size
    argTypes:
    - struct http_server_response*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 236
    functionName: http_server_response_set_payload_data
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 3
    functionsReached:
    - memcpy
    - http_server_response_set_payload_real
    - i_stream_create_from_data
    - i_stream_unref
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void http_server_response_set_payload_data(struct http_server_response
      *resp,\n\t\t\t\t\t   const unsigned char *data,\n\t\t\t\t\t   size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:246,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:247,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:248,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:249,1
    - Dst: http_server_ostream_create
      Src: /src/dovecot/src/lib-http/http-server-response.c:251,1
    - Dst: o_stream_set_name
      Src: /src/dovecot/src/lib-http/http-server-response.c:252,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-server-response.c:253,1
    - Dst: http_server_request_label
      Src: /src/dovecot/src/lib-http/http-server-response.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - resp
    - max_buffer_size
    - blocking
    argTypes:
    - struct http_server_response*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 238
    functionDepth: 12
    functionLinenumber: 238
    functionLinenumberEnd: 257
    functionName: http_server_response_get_payload_output
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 5
    functionsReached:
    - o_stream_set_name
    - http_server_ostream_create
    - t_strdup_printf
    - http_server_request_label
    - i_assert
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\nhttp_server_response_get_payload_output(struct http_server_response
      *resp,\n\t\t\t\t\tsize_t max_buffer_size, bool blocking)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-server-response.c:265,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-server-response.c:266,1
    - Dst: array_append_space::array_append_space
      Src: /src/dovecot/src/lib-http/http-server-response.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - resp
    - chlng
    argTypes:
    - struct http_server_response*
    - struct http_auth_challenge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 270
    functionName: http_server_response_add_auth
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - array_is_created
    - array_append_space::array_append_space
    - p_array_init
    linkageType: ''
    returnType: void
    signature: "void http_server_response_add_auth(struct http_server_response *resp,\n\t\t\t\t
      \  const struct http_auth_challenge *chlng)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_auth_basic_challenge_init
      Src: /src/dovecot/src/lib-http/http-server-response.c:277,1
    - Dst: http_server_response_add_auth
      Src: /src/dovecot/src/lib-http/http-server-response.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - resp
    - realm
    argTypes:
    - struct http_server_response*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 279
    functionName: http_server_response_add_auth_basic
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - http_server_response_add_auth
    - http_auth_basic_challenge_init
    linkageType: ''
    returnType: void
    signature: "void http_server_response_add_auth_basic(struct http_server_response
      *resp,\n\t\t\t\t\t const char *realm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:284,1
    - Dst: http_server_request_submit_response
      Src: /src/dovecot/src/lib-http/http-server-response.c:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 281
    functionDepth: 6
    functionLinenumber: 281
    functionLinenumberEnd: 289
    functionName: http_server_response_do_submit
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - http_server_request_submit_response
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_server_response_do_submit(struct http_server_response *resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:293,1
    - Dst: http_server_response_do_submit
      Src: /src/dovecot/src/lib-http/http-server-response.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 291
    functionDepth: 7
    functionLinenumber: 291
    functionLinenumberEnd: 296
    functionName: http_server_response_submit
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 17
    functionsReached:
    - e_debug
    - http_server_response_do_submit
    linkageType: ''
    returnType: void
    signature: void http_server_response_submit(struct http_server_response *resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_connection_close
      Src: /src/dovecot/src/lib-http/http-server-response.c:300,1
    - Dst: http_server_response_submit
      Src: /src/dovecot/src/lib-http/http-server-response.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 8
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: http_server_response_submit_close
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - http_server_request_connection_close
    - http_server_response_submit
    linkageType: ''
    returnType: void
    signature: void http_server_response_submit_close(struct http_server_response
      *resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:308,1
    - Dst: http_server_request_connection_close
      Src: /src/dovecot/src/lib-http/http-server-response.c:312,1
    - Dst: http_server_response_do_submit
      Src: /src/dovecot/src/lib-http/http-server-response.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - resp
    - callback
    - context
    argTypes:
    - struct http_server_response*
    - http_server_tunnel_callback_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 304
    functionDepth: 7
    functionLinenumber: 304
    functionLinenumberEnd: 314
    functionName: http_server_response_submit_tunnel
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_server_request_connection_close
    - http_server_response_do_submit
    linkageType: ''
    returnType: void
    signature: "void http_server_response_submit_tunnel(struct http_server_response
      *resp,\n\t\t\t\t\thttp_server_tunnel_callback_t callback,\n\t\t\t\t\tvoid *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/http-server-response.c:324,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-http/http-server-response.c:326,1
    - Dst: http_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:329,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-response.c:331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 316
    functionDepth: 3
    functionLinenumber: 316
    functionLinenumberEnd: 333
    functionName: http_server_response_flush_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - http_server_connection_handle_output_error
    - http_server_connection_start_idle_timeout
    - o_stream_finish
    linkageType: ''
    returnType: int
    signature: int http_server_response_flush_payload(struct http_server_response
      *resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:337,1
    - Dst: http_server_ostream_response_finished
      Src: /src/dovecot/src/lib-http/http-server-response.c:340,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-http/http-server-response.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 335
    functionDepth: 4
    functionLinenumber: 335
    functionLinenumberEnd: 343
    functionName: http_server_response_request_finished
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - e_debug
    - http_server_ostream_response_finished
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void http_server_response_request_finished(struct http_server_response
      *resp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_flush_payload
      Src: /src/dovecot/src/lib-http/http-server-response.c:357,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:361,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:366,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-http/http-server-response.c:370,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:371,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:377,1
    - Dst: http_server_connection_ref
      Src: /src/dovecot/src/lib-http/http-server-response.c:379,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-http/http-server-response.c:383,1
    - Dst: http_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:384,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-http/http-server-response.c:385,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-response.c:393,1
    - Dst: http_server_request_finished
      Src: /src/dovecot/src/lib-http/http-server-response.c:395,1
    - Dst: http_server_connection_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:396,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 345
    functionDepth: 12
    functionLinenumber: 345
    functionLinenumberEnd: 398
    functionName: http_server_response_finish_payload_out
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 2
    functionsReached:
    - e_debug
    - o_stream_unref
    - http_server_response_flush_payload
    - http_server_request_finished
    - o_stream_get_buffer_used_size
    - http_server_connection_start_idle_timeout
    - http_server_connection_unref
    - http_server_connection_handle_output_error
    - o_stream_set_flush_callback
    - http_server_connection_ref
    - o_stream_uncork_flush
    linkageType: ''
    returnType: int
    signature: int http_server_response_finish_payload_out(struct http_server_response
      *resp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:410,1
    - Dst: http_server_response_ref
      Src: /src/dovecot/src/lib-http/http-server-response.c:413,1
    - Dst: http_server_response_get_payload_output
      Src: /src/dovecot/src/lib-http/http-server-response.c:416,1
    - Dst: http_server_ostream_get_output
      Src: /src/dovecot/src/lib-http/http-server-response.c:419,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-http/http-server-response.c:423,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/http-server-response.c:425,1
    - Dst: http_server_response_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:426,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:429,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-http/http-server-response.c:431,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/http-server-response.c:433,1
    - Dst: http_server_response_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:434,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:437,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:445,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/http-server-response.c:455,1
    - Dst: http_server_response_unref
      Src: /src/dovecot/src/lib-http/http-server-response.c:459,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - _resp
    - data
    - size
    argTypes:
    - struct http_server_response**
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 400
    functionDepth: 13
    functionLinenumber: 400
    functionLinenumberEnd: 464
    functionName: http_server_response_output_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - http_server_response_unref
    - http_server_response_ref
    - e_debug
    - http_server_ostream_get_output
    - o_stream_finish
    - http_server_response_get_payload_output
    - o_stream_send
    - i_assert
    - o_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int http_server_response_output_payload(struct http_server_response
      **_resp,\n\t\t\t\t    const unsigned char *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:474,1
    - Dst: http_server_response_output_payload
      Src: /src/dovecot/src/lib-http/http-server-response.c:476,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:480,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _resp
    - data
    - size
    argTypes:
    - struct http_server_response**
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 466
    functionDepth: 14
    functionLinenumber: 466
    functionLinenumberEnd: 484
    functionName: http_server_response_send_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - http_server_response_output_payload
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int http_server_response_send_payload(struct http_server_response
      **_resp,\n\t\t\t\t      const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_output_payload
      Src: /src/dovecot/src/lib-http/http-server-response.c:492,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _resp
    argTypes:
    - struct http_server_response**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 486
    functionDepth: 14
    functionLinenumber: 486
    functionLinenumberEnd: 495
    functionName: http_server_response_finish_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - http_server_response_output_payload
    - i_assert
    linkageType: ''
    returnType: int
    signature: int http_server_response_finish_payload(struct http_server_response
      **_resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_request_abort
      Src: /src/dovecot/src/lib-http/http-server-response.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _resp
    argTypes:
    - struct http_server_response**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 497
    functionDepth: 7
    functionLinenumber: 497
    functionLinenumberEnd: 505
    functionName: http_server_response_abort_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - http_server_request_abort
    linkageType: ''
    returnType: void
    signature: void http_server_response_abort_payload(struct http_server_response
      **_resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/http-server-response.c:512,1
    - Dst: http_server_connection_output
      Src: /src/dovecot/src/lib-http/http-server-response.c:514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 507
    functionDepth: 11
    functionLinenumber: 507
    functionLinenumberEnd: 515
    functionName: http_server_response_payload_input
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - io_remove
    - http_server_connection_output
    linkageType: ''
    returnType: void
    signature: void http_server_response_payload_input(struct http_server_response
      *resp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:524,1
    - Dst: http_server_response_finish_payload_out
      Src: /src/dovecot/src/lib-http/http-server-response.c:525,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:528,1
    - Dst: http_server_ostream_continue
      Src: /src/dovecot/src/lib-http/http-server-response.c:532,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:535,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/http-server-response.c:536,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/http-server-response.c:539,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/http-server-response.c:540,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/http-server-response.c:541,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:549,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-response.c:551,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-response.c:552,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:557,1
    - Dst: http_server_response_finish_payload_out
      Src: /src/dovecot/src/lib-http/http-server-response.c:558,1
    - Dst: http_server_connection_stop_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-response.c:562,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/lib-http/http-server-response.c:563,1
    - Dst: http_server_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-server-response.c:569,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-http/http-server-response.c:570,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:576,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-server-response.c:577,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:578,1
    - Dst: http_server_connection_close
      Src: /src/dovecot/src/lib-http/http-server-response.c:579,1
    - Dst: http_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:584,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-server-response.c:587,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 517
    functionDepth: 13
    functionLinenumber: 517
    functionLinenumberEnd: 588
    functionName: http_server_response_send_more
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - http_server_ostream_continue
    - io_add_istream
    - e_debug
    - io_remove
    - o_stream_send_istream
    - i_unreached
    - http_server_response_finish_payload_out
    - e_error
    - o_stream_set_flush_pending
    - i_stream_get_error
    - http_server_connection_start_idle_timeout
    - http_server_connection_close
    - http_server_connection_handle_output_error
    - i_stream_get_name
    - i_assert
    - o_stream_set_max_buffer_size
    - http_server_connection_stop_idle_timeout
    linkageType: ''
    returnType: int
    signature: int http_server_response_send_more(struct http_server_response *resp)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-server-response.c:594,1
    - Dst: http_request_method_is
      Src: /src/dovecot/src/lib-http/http-server-response.c:598,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:601,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:605,1
    - Dst: http_server_request_version_equals
      Src: /src/dovecot/src/lib-http/http-server-response.c:609,1
    - Dst: http_server_ostream_get_size
      Src: /src/dovecot/src/lib-http/http-server-response.c:625,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:664,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:666,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:669,1
    - Dst: http_transfer_chunked_ostream_create
      Src: /src/dovecot/src/lib-http/http-server-response.c:672,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:674,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:677,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-http/http-server-response.c:683,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:686,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:688,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-http/http-server-response.c:693,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:695,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:699,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-server-response.c:700,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:701,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:702,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:707,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:708,1
    - Dst: http_date_create
      Src: /src/dovecot/src/lib-http/http-server-response.c:708,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:709,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-server-response.c:711,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:712,1
    - Dst: http_auth_create_challenges
      Src: /src/dovecot/src/lib-http/http-server-response.c:713,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:714,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:718,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-server-response.c:721,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:729,1
    - Dst: http_server_request_version_equals
      Src: /src/dovecot/src/lib-http/http-server-response.c:730,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-server-response.c:731,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/http-server-response.c:735,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-server-response.c:736,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/http-server-response.c:738,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-server-response.c:739,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-http/http-server-response.c:745,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-http/http-server-response.c:747,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-http/http-server-response.c:747,1
    - Dst: http_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:748,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:752,1
    - Dst: http_server_ostream_output_available
      Src: /src/dovecot/src/lib-http/http-server-response.c:755,1
    - Dst: http_server_response_send_more
      Src: /src/dovecot/src/lib-http/http-server-response.c:758,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-response.c:763,1
    - Dst: http_server_ostream_continue
      Src: /src/dovecot/src/lib-http/http-server-response.c:765,1
    - Dst: http_server_response_finish_payload_out
      Src: /src/dovecot/src/lib-http/http-server-response.c:770,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-http/http-server-response.c:776,1
    - Dst: http_server_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-server-response.c:777,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 115
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 590
    functionDepth: 14
    functionLinenumber: 590
    functionLinenumberEnd: 781
    functionName: http_server_response_send_real
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_len
    - o_stream_cork
    - http_date_create
    - http_server_ostream_continue
    - http_server_ostream_get_size
    - t_str_new
    - o_stream_sendv
    - http_server_response_finish_payload_out
    - http_server_response_send_more
    - http_server_connection_handle_output_error
    - str_data
    - http_auth_create_challenges
    - i_assert
    - http_server_ostream_output_available
    - N_ELEMENTS
    - http_server_request_version_equals
    - e_debug
    - http_transfer_chunked_ostream_create
    - o_stream_ref
    - http_request_method_is
    - str_append
    - array_is_created
    - o_stream_uncork_flush
    linkageType: ''
    returnType: int
    signature: int http_server_response_send_real(struct http_server_response *resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_send_real
      Src: /src/dovecot/src/lib-http/http-server-response.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 783
    functionDepth: 15
    functionLinenumber: 783
    functionLinenumberEnd: 789
    functionName: http_server_response_send
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - http_server_response_send_real
    linkageType: ''
    returnType: int
    signature: int http_server_response_send(struct http_server_response *resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - resp
    - status_r
    - reason_r
    argTypes:
    - struct http_server_response*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 793
    functionDepth: 1
    functionLinenumber: 793
    functionLinenumberEnd: 799
    functionName: http_server_response_get_status
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_server_response_get_status(struct http_server_response *resp,\n\t\t\t\t
      \    int *status_r, const char **reason_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-response.c:803,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-server-response.c:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - resp
    argTypes:
    - struct http_server_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 805
    functionName: http_server_response_get_total_size
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - i_assert
    - str_len
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t http_server_response_get_total_size(struct http_server_response
      *resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_server_response_add_header
      Src: /src/dovecot/src/lib-http/http-server-response.c:810,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-server-response.c:812,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-server-response.c:813,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-server-response.c:814,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-server-response.c:815,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-server-response.c:816,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-server-response.c:817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - resp
    - key
    - value
    argTypes:
    - struct http_server_response*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 807
    functionDepth: 3
    functionLinenumber: 807
    functionLinenumberEnd: 818
    functionName: http_server_response_add_permanent_header
    functionSourceFile: /src/dovecot/src/lib-http/http-server-response.c
    functionUses: 1
    functionsReached:
    - i_array_init
    - array_push_back
    - i_strdup
    - http_server_response_add_header
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void http_server_response_add_permanent_header(struct http_server_response
      *resp,\n\t\t\t\t\t       const char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: http_client_connection_get_settings
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct http_client_settings
    signature: 'struct http_client_settings *

      http_client_connection_get_settings(struct http_client_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:41,1
    - Dst: http_client_request_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - req
    argTypes:
    - struct http_client_connection*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: http_client_connection_ref_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_request_ref
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_ref_request(struct http_client_connection
      *conn,\n\t\t\t\t   struct http_client_request *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:52,1
    - Dst: http_client_request_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - _req
    argTypes:
    - struct http_client_connection*
    - struct http_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: http_client_connection_unref_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_request_unref
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool http_client_connection_unref_request(struct http_client_connection
      *conn,\n\t\t\t\t     struct http_client_request **_req)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-connection.c:66,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-connection.c:67,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-connection.c:68,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-connection.c:73,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-connection.c:74,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-connection.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 76
    functionName: http_client_connection_unlist_pending
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: void http_client_connection_unlist_pending(struct http_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_unlist_pending
      Src: /src/dovecot/src/lib-http/http-client-connection.c:85,1
    - Dst: http_client_peer_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-connection.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct http_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 87
    functionName: http_client_connection_failure
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_unlist_pending
    - http_client_peer_connection_failure
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_failure(struct http_client_connection
      *conn,\n\t\t\t       const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: http_client_connection_count_pending
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_connection_count_pending(struct http_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: http_client_connection_is_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_client_connection_is_idle(struct http_client_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-client-connection.c:112,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 114
    functionName: http_client_connection_is_active
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool http_client_connection_is_active(struct http_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-client-connection.c:122,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:125,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-http/http-client-connection.c:127,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:130,1
    - Dst: http_client_request_retry
      Src: /src/dovecot/src/lib-http/http-client-connection.c:134,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-connection.c:136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - conn
    - status
    - error
    argTypes:
    - struct http_client_connection*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 137
    functionName: http_client_connection_retry_requests
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_request_retry
    - http_client_connection_unref_request
    - array_clear
    - array_foreach_modifiable
    - array_is_created
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_retry_requests(struct http_client_connection
      *conn,\n\t\t\t\t      unsigned int status, const char *error)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:146,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-http/http-client-connection.c:148,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:151,1
    - Dst: http_client_request_resubmit
      Src: /src/dovecot/src/lib-http/http-client-connection.c:155,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-connection.c:157,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-connection.c:163,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct http_client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 167
    functionName: http_client_connection_server_close
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_connection_close
    - http_client_connection_unref_request
    - io_loop_stop
    - array_clear
    - http_client_request_resubmit
    - array_foreach_modifiable
    linkageType: ''
    returnType: void
    signature: void http_client_connection_server_close(struct http_client_connection
      **_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:176,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-http/http-client-connection.c:178,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:180,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:182,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:185,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-connection.c:187,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - _conn
    - status
    - error
    argTypes:
    - struct http_client_connection**
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 189
    functionName: http_client_connection_abort_error
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_connection_close
    - http_client_connection_unref_request
    - http_client_request_error
    - array_clear
    - array_foreach_modifiable
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_abort_error(struct http_client_connection
      **_conn,\n\t\t\t\t   unsigned int status, const char *error)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-client-connection.c:196,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-http/http-client-connection.c:197,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:199,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:201,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:204,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-connection.c:208,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:213,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 221
    functionName: http_client_connection_abort_any_requests
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_unref_request
    - http_client_request_error
    - array_clear
    - array_foreach_modifiable
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_connection_abort_any_requests(struct http_client_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-client-connection.c:228,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:230,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-http/http-client-connection.c:231,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-connection.c:233,1
    - Dst: http_client_request_append_stats_text
      Src: /src/dovecot/src/lib-http/http-client-connection.c:234,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-connection.c:236,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-connection.c:238,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-connection.c:242,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-connection.c:244,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-client-connection.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 223
    functionDepth: 4
    functionLinenumber: 223
    functionLinenumberEnd: 247
    functionName: http_client_connection_get_timing_info
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - timeval_diff_msecs
    - http_client_request_append_stats_text
    - array_count
    - array_front
    - str_append
    linkageType: ''
    returnType: char
    signature: 'char *

      http_client_connection_get_timing_info(struct http_client_connection *conn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:255,1
    - Dst: http_client_connection_get_timing_info
      Src: /src/dovecot/src/lib-http/http-client-connection.c:256,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:258,1
    - Dst: http_client_connection_disconnect
      Src: /src/dovecot/src/lib-http/http-client-connection.c:261,1
    - Dst: http_client_connection_retry_requests
      Src: /src/dovecot/src/lib-http/http-client-connection.c:262,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _conn
    - status
    - error
    argTypes:
    - struct http_client_connection**
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 249
    functionDepth: 11
    functionLinenumber: 249
    functionLinenumberEnd: 264
    functionName: http_client_connection_abort_temp_error
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_retry_requests
    - http_client_connection_get_timing_info
    - e_debug
    - http_client_connection_disconnect
    - t_strdup_printf
    - http_client_connection_close
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_abort_temp_error(struct http_client_connection
      **_conn,\n\t\t\t\t\tunsigned int status, const char *error)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:275,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:278,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:280,1
    - Dst: ssl_iostream_get_state
      Src: /src/dovecot/src/lib-http/http-client-connection.c:284,1
    - Dst: http_client_connection_abort_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:290,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-http/http-client-connection.c:300,1
    - Dst: http_client_connection_abort_temp_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:301,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - _conn
    - error
    argTypes:
    - struct http_client_connection**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 266
    functionDepth: 12
    functionLinenumber: 266
    functionLinenumberEnd: 303
    functionName: http_client_connection_lost
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_abort_error
    - i_stream_get_data_size
    - t_strdup_printf
    - ssl_iostream_get_last_error
    - ssl_iostream_get_state
    - http_client_connection_abort_temp_error
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_lost(struct http_client_connection **_conn,\n\t\t\t\t
      const char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-connection.c:312,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:314,1
    - Dst: o_stream_get_name
      Src: /src/dovecot/src/lib-http/http-client-connection.c:315,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:316,1
    - Dst: http_client_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-connection.c:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 305
    functionDepth: 13
    functionLinenumber: 305
    functionLinenumberEnd: 320
    functionName: http_client_connection_handle_output_error
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - o_stream_get_name
    - t_strdup_printf
    - http_client_connection_lost
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_handle_output_error(\n\tstruct http_client_connection
      *conn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_get_settings
      Src: /src/dovecot/src/lib-http/http-client-connection.c:325,1
    - Dst: http_client_connection_count_pending
      Src: /src/dovecot/src/lib-http/http-client-connection.c:338,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-http/http-client-connection.c:347,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:350,1
    - Dst: http_client_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-connection.c:352,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:354,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-client-connection.c:356,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:358,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-http/http-client-connection.c:364,1
    - Dst: i_stream_set_input_pending
      Src: /src/dovecot/src/lib-http/http-client-connection.c:365,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 322
    functionDepth: 13
    functionLinenumber: 322
    functionLinenumberEnd: 368
    functionName: http_client_connection_check_ready
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data_size
    - http_client_connection_lost
    - http_client_connection_count_pending
    - i_stream_set_input_pending
    - t_strdup_printf
    - http_client_connection_get_settings
    - i_stream_get_error
    - i_stream_read
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: int
    signature: int http_client_connection_check_ready(struct http_client_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:379,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-connection.c:380,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-connection.c:381,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-connection.c:382,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-connection.c:384,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-connection.c:385,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:388,1
    - Dst: http_client_peer_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-connection.c:391,1
    - Dst: http_client_peer_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:392,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 393
    functionName: http_client_connection_detach_peer
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_peer_ref
    - array_delete
    - i_unreached
    - e_debug
    - array_lsearch_ptr_idx
    - http_client_peer_connection_lost
    - http_client_peer_unref
    linkageType: ''
    returnType: void
    signature: void http_client_connection_detach_peer(struct http_client_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:398,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:401,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 404
    functionName: http_client_connection_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_connection_close
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_connection_idle_timeout(struct http_client_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_get_settings
      Src: /src/dovecot/src/lib-http/http-client-connection.c:410,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:415,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:420,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:421,1
    - Dst: http_client_peer_shared_max_connections
      Src: /src/dovecot/src/lib-http/http-client-connection.c:422,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:423,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:424,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:425,1
    - Dst: timeout_add_short_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:448,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 452
    functionName: http_client_connection_start_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_get_settings
    - array_count
    - timeout_add_short_to
    - http_client_peer_shared_max_connections
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_connection_start_idle_timeout(struct http_client_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:462,1
    - Dst: http_client_connection_start_idle_timeout
      Src: /src/dovecot/src/lib-http/http-client-connection.c:466,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:468,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:470,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-connection.c:475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - reason
    argTypes:
    - struct http_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 476
    functionName: http_client_connection_start_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_connection_start_idle_timeout
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_start_idle(struct http_client_connection
      *conn,\n\t\t\t\t  const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:485,1
    - Dst: http_client_connection_start_idle
      Src: /src/dovecot/src/lib-http/http-client-connection.c:487,1
    - Dst: http_client_connection_detach_peer
      Src: /src/dovecot/src/lib-http/http-client-connection.c:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 489
    functionName: http_client_connection_lost_peer
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_detach_peer
    - i_assert
    - http_client_connection_start_idle
    - http_client_connection_unref
    linkageType: ''
    returnType: void
    signature: void http_client_connection_lost_peer(struct http_client_connection
      *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:497,1
    - Dst: http_client_connection_is_active
      Src: /src/dovecot/src/lib-http/http-client-connection.c:506,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:509,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-connection.c:512,1
    - Dst: http_client_connection_start_idle
      Src: /src/dovecot/src/lib-http/http-client-connection.c:514,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 491
    functionDepth: 3
    functionLinenumber: 491
    functionLinenumberEnd: 517
    functionName: http_client_connection_check_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - http_client_connection_is_active
    - i_assert
    - http_client_connection_start_idle
    linkageType: ''
    returnType: void
    signature: void http_client_connection_check_idle(struct http_client_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:524,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-connection.c:527,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-connection.c:528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 519
    functionDepth: 6
    functionLinenumber: 519
    functionLinenumberEnd: 529
    functionName: http_client_connection_stop_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_connection_stop_idle(struct http_client_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:534,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:536,1
    - Dst: http_client_connection_stop_idle
      Src: /src/dovecot/src/lib-http/http-client-connection.c:537,1
    - Dst: http_client_connection_detach_peer
      Src: /src/dovecot/src/lib-http/http-client-connection.c:540,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-client-connection.c:542,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:544,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-connection.c:547,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - peer
    argTypes:
    - struct http_client_connection*
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 531
    functionDepth: 7
    functionLinenumber: 531
    functionLinenumberEnd: 549
    functionName: http_client_connection_claim_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - pool_ref
    - array_push_back
    - e_debug
    - settings_free
    - i_assert
    - http_client_connection_stop_idle
    - http_client_connection_detach_peer
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_claim_idle(struct http_client_connection
      *conn,\n\t\t\t\t       struct http_client_peer *peer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_abort_temp_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 551
    functionDepth: 12
    functionLinenumber: 551
    functionLinenumberEnd: 558
    functionName: http_client_connection_request_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_abort_temp_error
    linkageType: ''
    returnType: void
    signature: void http_client_connection_request_timeout(struct http_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:569,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-client-connection.c:569,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:570,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:570,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-http/http-client-connection.c:571,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-http/http-client-connection.c:577,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:579,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 560
    functionDepth: 7
    functionLinenumber: 560
    functionLinenumberEnd: 583
    functionName: http_client_connection_start_request_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - timeout_reset
    - array_count
    - array_front
    - timeout_add_to
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_start_request_timeout(\n\tstruct http_client_connection
      *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-http/http-client-connection.c:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 585
    functionDepth: 7
    functionLinenumber: 585
    functionLinenumberEnd: 590
    functionName: http_client_connection_reset_request_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - timeout_reset
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_reset_request_timeout(\n\tstruct http_client_connection
      *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 592
    functionDepth: 6
    functionLinenumber: 592
    functionLinenumberEnd: 596
    functionName: http_client_connection_stop_request_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_stop_request_timeout(\n\tstruct http_client_connection
      *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:606,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:608,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:611,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-connection.c:615,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:616,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-http/http-client-connection.c:621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 598
    functionDepth: 6
    functionLinenumber: 598
    functionLinenumberEnd: 622
    functionName: http_client_connection_continue_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_get
    - o_stream_set_flush_pending
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_connection_continue_timeout(struct http_client_connection
      *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_check_ready
      Src: /src/dovecot/src/lib-http/http-client-connection.c:633,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:635,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:640,1
    - Dst: http_client_peer_claim_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:642,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:646,1
    - Dst: http_client_connection_stop_idle
      Src: /src/dovecot/src/lib-http/http-client-connection.c:648,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-connection.c:655,1
    - Dst: http_client_connection_ref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:656,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:658,1
    - Dst: http_client_request_label
      Src: /src/dovecot/src/lib-http/http-client-connection.c:659,1
    - Dst: http_client_connection_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:662,1
    - Dst: http_client_request_send
      Src: /src/dovecot/src/lib-http/http-client-connection.c:663,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-http/http-client-connection.c:665,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:666,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:682,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:683,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:684,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:685,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 624
    functionDepth: 14
    functionLinenumber: 624
    functionLinenumberEnd: 691
    functionName: http_client_connection_next_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_check_ready
    - e_debug
    - array_push_back
    - http_client_request_label
    - http_client_connection_ref_request
    - o_stream_set_flush_pending
    - array_count
    - http_client_connection_ref
    - timeout_add_to
    - http_client_request_send
    - http_client_peer_claim_request
    - i_assert
    - http_client_connection_stop_idle
    - http_client_connection_unref
    linkageType: ''
    returnType: int
    signature: int http_client_connection_next_request(struct http_client_connection
      *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-connection.c:703,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:706,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-connection.c:711,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:713,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:718,1
    - Dst: http_client_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-connection.c:719,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:723,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-client-connection.c:723,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:724,1
    - Dst: http_client_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-connection.c:727,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:729,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:735,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 693
    functionDepth: 13
    functionLinenumber: 693
    functionLinenumberEnd: 736
    functionName: http_client_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - http_client_connection_lost
    - e_debug
    - t_strdup_printf
    - http_client_connection_failure
    - i_stream_get_error
    - http_client_connection_close
    - array_count
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_connection_destroy(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:740,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-http/http-client-connection.c:741,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:742,1
    - Dst: http_client_connection_start_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-connection.c:743,1
    - Dst: http_client_connection_stop_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-connection.c:745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 738
    functionDepth: 8
    functionLinenumber: 738
    functionLinenumberEnd: 746
    functionName: http_client_payload_finished
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - http_client_connection_stop_request_timeout
    - array_count
    - http_client_connection_start_request_timeout
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_payload_finished(struct http_client_connection *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_server_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:752,1
    - Dst: http_client_connection_input
      Src: /src/dovecot/src/lib-http/http-client-connection.c:755,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 748
    functionDepth: 3
    functionLinenumber: 748
    functionLinenumberEnd: 756
    functionName: http_client_payload_destroyed_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_server_close
    - http_client_connection_input
    linkageType: ''
    returnType: void
    signature: void http_client_payload_destroyed_timeout(struct http_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:762,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:763,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:764,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:765,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:767,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-connection.c:770,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-http/http-client-connection.c:774,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:776,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:780,1
    - Dst: http_client_request_finish
      Src: /src/dovecot/src/lib-http/http-client-connection.c:783,1
    - Dst: timeout_add_short_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:794,1
    - Dst: http_client_connection_check_ready
      Src: /src/dovecot/src/lib-http/http-client-connection.c:800,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-connection.c:801,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 758
    functionDepth: 14
    functionLinenumber: 758
    functionLinenumberEnd: 802
    functionName: http_client_payload_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - http_client_connection_check_ready
    - e_debug
    - http_client_request_finish
    - http_client_peer_trigger_request_handler
    - http_client_connection_unref_request
    - timeout_add_short_to
    - net_set_nonblock
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_payload_destroyed(struct http_client_request *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:809,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:813,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:822,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-http/http-client-connection.c:823,1
    - Dst: i_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:834,1
    - Dst: http_client_payload_destroyed
      Src: /src/dovecot/src/lib-http/http-client-connection.c:836,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - conn
    - req
    argTypes:
    - struct http_client_connection*
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 804
    functionDepth: 15
    functionLinenumber: 804
    functionLinenumberEnd: 837
    functionName: http_client_connection_request_destroyed
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_payload_destroyed
    - e_debug
    - i_stream_ref
    - i_stream_remove_destroy_callback
    - i_assert
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_request_destroyed(\n\tstruct http_client_connection
      *conn, struct http_client_request *req)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:848,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:849,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:850,1
    - Dst: http_client_connection_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:852,1
    - Dst: http_client_connection_ref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:853,1
    - Dst: i_stream_create_timeout
      Src: /src/dovecot/src/lib-http/http-client-connection.c:861,1
    - Dst: i_stream_add_destroy_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:863,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-http/http-client-connection.c:868,1
    - Dst: http_client_connection_stop_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-connection.c:871,1
    - Dst: http_client_request_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:875,1
    - Dst: http_client_request_finish
      Src: /src/dovecot/src/lib-http/http-client-connection.c:879,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:880,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:881,1
    - Dst: i_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:889,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:892,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-http/http-client-connection.c:893,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:895,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:896,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:908,1
    - Dst: http_client_payload_finished
      Src: /src/dovecot/src/lib-http/http-client-connection.c:912,1
    - Dst: http_client_request_finish
      Src: /src/dovecot/src/lib-http/http-client-connection.c:915,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:916,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:920,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:922,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:924,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 3
    argNames:
    - conn
    - req
    - response
    argTypes:
    - struct http_client_connection*
    - struct http_client_request*
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 839
    functionDepth: 9
    functionLinenumber: 839
    functionLinenumberEnd: 926
    functionName: http_client_connection_return_response
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - connection_input_halt
    - i_stream_add_destroy_callback
    - http_client_request_finish
    - http_client_connection_ref_request
    - i_stream_create_timeout
    - http_client_connection_stop_request_timeout
    - http_client_connection_unref_request
    - i_stream_remove_destroy_callback
    - http_client_connection_ref
    - i_stream_unref
    - http_client_request_callback
    - http_client_payload_finished
    - i_assert
    - http_client_connection_unref
    linkageType: ''
    returnType: bool
    signature: "bool http_client_connection_return_response(struct http_client_connection
      *conn,\n\t\t\t\t       struct http_client_request *req,\n\t\t\t\t       struct
      http_response *response)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_try_retry
      Src: /src/dovecot/src/lib-http/http-client-connection.c:948,1
    - Dst: http_client_request_delay_from_response
      Src: /src/dovecot/src/lib-http/http-client-connection.c:955,1
    - Dst: http_client_request_redirect
      Src: /src/dovecot/src/lib-http/http-client-connection.c:956,1
    - Dst: http_client_request_delay_from_response
      Src: /src/dovecot/src/lib-http/http-client-connection.c:964,1
    - Dst: http_client_request_try_retry
      Src: /src/dovecot/src/lib-http/http-client-connection.c:965,1
    - Dst: http_client_request_try_retry
      Src: /src/dovecot/src/lib-http/http-client-connection.c:970,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 3
    argNames:
    - conn
    - req
    - resp
    argTypes:
    - struct http_client_connection*
    - struct http_client_request*
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 928
    functionDepth: 1
    functionLinenumber: 928
    functionLinenumberEnd: 977
    functionName: http_client_connection_handle_response
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_request_delay_from_response
    - http_client_request_redirect
    - http_client_request_try_retry
    linkageType: ''
    returnType: bool
    signature: "bool http_client_connection_handle_response(struct http_client_connection
      *conn,\n\t\t\t\t       struct http_client_request *req,\n\t\t\t\t       struct
      http_response *resp)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:997,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1001,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1006,1
    - Dst: http_response_parser_get_last_offset
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1012,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1013,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1014,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1018,1
    - Dst: http_client_request_check_response
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1021,1
    - Dst: array_pop_front
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1026,1
    - Dst: http_client_connection_unref_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1029,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1030,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1044,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1048,1
    - Dst: http_client_connection_handle_response
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1053,1
    - Dst: http_client_connection_return_response
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1059,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 3
    argNames:
    - conn
    - req
    - resp
    argTypes:
    - struct http_client_connection*
    - struct http_client_request*
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 984
    functionDepth: 10
    functionLinenumber: 984
    functionLinenumberEnd: 1062
    functionName: http_client_connection_process_response
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - array_pop_front
    - e_debug
    - http_response_parser_get_last_offset
    - http_client_request_check_response
    - http_client_connection_return_response
    - http_client_connection_close
    - http_client_connection_unref_request
    - http_client_request_error
    - http_client_connection_handle_response
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: "int http_client_connection_process_response(struct http_client_connection
      *conn,\n\t\t\t\t\tstruct http_client_request *req,\n\t\t\t\t\tstruct http_response
      *resp)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1078,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1083,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1085,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1087,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1094,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1095,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1099,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1101,1
    - Dst: http_client_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1102,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1103,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1104,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1108,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1110,1
    - Dst: http_client_connection_ready
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1117,1
    - Dst: http_client_payload_finished
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1126,1
    - Dst: http_client_connection_reset_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1131,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1134,1
    - Dst: http_client_request_get_payload_type
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1139,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1143,1
    - Dst: http_client_connection_server_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1150,1
    - Dst: http_response_parse_next
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1154,1
    - Dst: http_client_connection_process_response
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1156,1
    - Dst: http_client_connection_server_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1167,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1172,1
    - Dst: http_client_request_get_payload_type
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1177,1
    - Dst: http_client_connection_stop_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1182,1
    - Dst: http_client_connection_server_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1189,1
    - Dst: http_client_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1198,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1200,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1201,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1203,1
    - Dst: http_client_connection_abort_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1209,1
    - Dst: http_client_connection_check_ready
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1221,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1222,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 80
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1064
    functionDepth: 14
    functionLinenumber: 1064
    functionLinenumberEnd: 1224
    functionName: http_client_connection_input
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 1
    functionsReached:
    - http_client_connection_abort_error
    - http_response_parse_next
    - t_strdup_printf
    - http_client_peer_trigger_request_handler
    - http_client_connection_close
    - http_client_connection_check_ready
    - http_client_connection_process_response
    - http_client_connection_failure
    - i_stream_get_error
    - http_client_connection_server_close
    - i_stream_get_name
    - array_get
    - http_client_connection_ready
    - http_client_connection_stop_request_timeout
    - http_client_connection_reset_request_timeout
    - http_client_request_get_payload_type
    - http_client_payload_finished
    - i_stream_read
    - i_assert
    - http_client_connection_lost
    - e_debug
    - ssl_iostream_is_handshaked
    linkageType: ''
    returnType: void
    signature: void http_client_connection_input(struct connection *_conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1236,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1237,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1245,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1248,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1251,1
    - Dst: http_client_connection_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1260,1
    - Dst: http_client_request_send_more
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1261,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1262,1
    - Dst: http_client_connection_check_ready
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1267,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1268,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1226
    functionDepth: 14
    functionLinenumber: 1226
    functionLinenumberEnd: 1271
    functionName: http_client_connection_continue_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_check_ready
    - e_debug
    - array_get
    - o_stream_unset_flush_callback
    - http_client_connection_close
    - http_client_request_send_more
    - http_client_peer_trigger_request_handler
    - http_client_connection_ref
    - i_assert
    - http_client_connection_unref
    linkageType: ''
    returnType: int
    signature: int http_client_connection_continue_request(struct http_client_connection
      *conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_reset_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1279,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1281,1
    - Dst: http_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1283,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1287,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1290,1
    - Dst: http_client_connection_continue_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1293,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1273
    functionDepth: 15
    functionLinenumber: 1273
    functionLinenumberEnd: 1294
    functionName: http_client_connection_output
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_handle_output_error
    - ssl_iostream_is_handshaked
    - http_client_connection_reset_request_timeout
    - o_stream_flush
    - i_assert
    - http_client_connection_continue_request
    linkageType: ''
    returnType: int
    signature: int http_client_connection_output(struct http_client_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1301,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1304,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1317,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - _conn
    - tunnel
    argTypes:
    - struct http_client_connection**
    - struct http_client_tunnel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1296
    functionDepth: 3
    functionLinenumber: 1296
    functionLinenumberEnd: 1320
    functionName: http_client_connection_start_tunnel
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - i_zero
    - http_client_connection_unref
    - i_assert
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_start_tunnel(struct http_client_connection
      **_conn,\n\t\t\t\t\t struct http_client_tunnel *tunnel)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_get_settings
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1328,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1330,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1331,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1336,1
    - Dst: http_client_connection_unlist_pending
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1340,1
    - Dst: http_client_peer_connection_success
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1341,1
    - Dst: iostream_rawlog_create
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1345,1
    - Dst: http_client_peer_claim_request
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1354,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1361,1
    - Dst: http_client_connection_return_response
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1365,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1370,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1373,1
    - Dst: http_response_parser_init
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1383,1
    - Dst: o_stream_set_finish_via_child
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1385,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1386,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1322
    functionDepth: 10
    functionLinenumber: 1322
    functionLinenumberEnd: 1388
    functionName: http_client_connection_ready
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 1
    functionsReached:
    - i_zero
    - http_response_parser_init
    - o_stream_set_flush_callback
    - e_debug
    - http_client_peer_connection_success
    - http_client_connection_unlist_pending
    - http_client_connection_return_response
    - http_client_connection_get_settings
    - http_client_connection_close
    - iostream_rawlog_create
    - http_client_peer_claim_request
    - i_assert
    - o_stream_set_finish_via_child
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_connection_ready(struct http_client_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssl_iostream_check_cert_validity
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1397,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1400,1
    - Dst: ssl_iostream_get_allow_invalid_cert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1401,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - error_r
    - context
    argTypes:
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1390
    functionDepth: 2
    functionLinenumber: 1390
    functionLinenumberEnd: 1411
    functionName: http_client_connection_ssl_handshaked
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - ssl_iostream_check_cert_validity
    - ssl_iostream_get_allow_invalid_cert
    linkageType: ''
    returnType: enum ssl_iostream_state
    signature: enum ssl_iostream_state http_client_connection_ssl_handshaked(const
      char **error_r, void *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1422,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1424,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1426,1
    - Dst: io_stream_create_ssl_client
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1427,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1431,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1436,1
    - Dst: ssl_iostream_set_handshake_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1437,1
    - Dst: ssl_iostream_handshake
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1440,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1441,1
    - Dst: ssl_iostream_get_last_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1443,1
    - Dst: ssl_iostream_is_handshaked
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1447,1
    - Dst: http_client_connection_ready
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1448,1
    - Dst: o_stream_set_flush_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1452,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - conn
    - error_r
    argTypes:
    - struct http_client_connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1413
    functionDepth: 11
    functionLinenumber: 1413
    functionLinenumberEnd: 1456
    functionName: http_client_connection_ssl_init
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - connection_input_halt
    - e_debug
    - ssl_iostream_set_handshake_callback
    - t_strdup_printf
    - ssl_iostream_handshake
    - http_client_connection_ready
    - ssl_iostream_get_last_error
    - ssl_iostream_is_handshaked
    - io_stream_create_ssl_client
    - o_stream_set_flush_callback
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int http_client_connection_ssl_init(struct http_client_connection
      *conn,\n\t\t\t\tconst char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_get_settings
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1465,1
    - Dst: http_client_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1469,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1470,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1474,1
    - Dst: net_set_tcp_nodelay
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1476,1
    - Dst: net_set_send_buffer_size
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1478,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1480,1
    - Dst: net_set_recv_buffer_size
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1485,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1487,1
    - Dst: http_client_peer_addr_is_https
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1492,1
    - Dst: http_client_connection_ssl_init
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1493,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1494,1
    - Dst: http_client_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1495,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1496,1
    - Dst: http_client_connection_ready
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1500,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - _conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1458
    functionDepth: 12
    functionLinenumber: 1458
    functionLinenumberEnd: 1502
    functionName: http_client_connection_connected
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 1
    functionsReached:
    - http_client_connection_ssl_init
    - http_client_peer_addr_is_https
    - net_set_send_buffer_size
    - e_debug
    - net_set_tcp_nodelay
    - t_strdup_printf
    - http_client_connection_ready
    - http_client_connection_get_settings
    - http_client_connection_failure
    - e_error
    - http_client_connection_close
    - net_set_recv_buffer_size
    linkageType: ''
    returnType: void
    signature: void http_client_connection_connected(struct connection *_conn, bool
      success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1518
    functionDepth: 2
    functionLinenumber: 1518
    functionLinenumberEnd: 1522
    functionName: http_client_connection_list_init
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 1
    functionsReached:
    - connection_list_init
    linkageType: ''
    returnType: struct connection_list
    signature: struct connection_list *http_client_connection_list_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_connection_destroy
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1524
    functionDepth: 14
    functionLinenumber: 1524
    functionLinenumberEnd: 1528
    functionName: http_client_connect_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_connection_destroy
    linkageType: ''
    returnType: void
    signature: void http_client_connect_timeout(struct http_client_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connection_client_connect_async
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1537,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1538,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1545,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - conn
    - timeout_msecs
    argTypes:
    - struct http_client_connection*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1530
    functionDepth: 8
    functionLinenumber: 1530
    functionLinenumberEnd: 1549
    functionName: http_client_connection_connect
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - e_debug
    - connection_client_connect_async
    - timeout_add_to
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_connect(struct http_client_connection
      *conn,\n\t\t\t       unsigned int timeout_msecs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1555,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1558,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1560,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1564,1
    - Dst: http_client_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1565,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1551
    functionDepth: 12
    functionLinenumber: 1551
    functionLinenumberEnd: 1567
    functionName: http_client_connect_tunnel_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - e_debug
    - t_strdup_printf
    - http_client_connection_failure
    - http_client_connection_close
    - http_client_peer_addr2str
    linkageType: ''
    returnType: void
    signature: void http_client_connect_tunnel_timeout(struct http_client_connection
      *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1576,1
    - Dst: http_client_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1582,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1584,1
    - Dst: http_response_get_message
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1585,1
    - Dst: http_client_request_start_tunnel
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1589,1
    - Dst: connection_init_from_streams
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1592,1
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1594,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1595,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - response
    - conn
    argTypes:
    - struct http_response*
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1569
    functionDepth: 12
    functionLinenumber: 1569
    functionLinenumberEnd: 1597
    functionName: http_client_connection_tunnel_response
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_request_start_tunnel
    - connection_init_from_streams
    - o_stream_unref
    - t_strdup_printf
    - http_client_connection_failure
    - connection_switch_ioloop_to
    - http_response_get_message
    - i_stream_unref
    - http_client_peer_addr2str
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_tunnel_response(const struct http_response
      *response,\n\t\t\t\t       struct http_client_connection *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_connect_ip
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1609,1
    - Dst: http_client_request_set_urgent
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1611,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1612,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - conn
    - ip
    - port
    - timeout_msecs
    argTypes:
    - struct http_client_connection*
    - struct ip_addr*
    - in_port_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1621
    functionName: http_client_connection_connect_tunnel
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - http_client_request_connect_ip
    - http_client_request_set_urgent
    - http_client_request_submit
    - timeout_add_to
    linkageType: ''
    returnType: void
    signature: "void http_client_connection_connect_tunnel(struct http_client_connection
      *conn,\n\t\t\t\t      const struct ip_addr *ip, in_port_t port,\n\t\t\t\t      unsigned
      int timeout_msecs)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1661,1
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1666,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1668,1
    - Dst: io_wait_timer_add_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1669,1
    - Dst: connection_init
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1672,1
    - Dst: http_client_peer_shared_label
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1673,1
    - Dst: http_client_connection_connect_tunnel
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1678,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1682,1
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1684,1
    - Dst: http_client_connection_connect
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1685,1
    - Dst: connection_init_client_ip
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1688,1
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1690,1
    - Dst: http_client_connection_connect
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1691,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1694,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1695,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1696,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1697,1
    - Dst: http_client_peer_pool_ref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1699,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1701,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1703,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 57
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1623
    functionDepth: 9
    functionLinenumber: 1623
    functionLinenumberEnd: 1706
    functionName: http_client_connection_create
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - pool_ref
    - connection_init_client_unix
    - array_push_back
    - e_debug
    - http_client_peer_pool_ref
    - http_client_connection_connect
    - connection_switch_ioloop_to
    - array_count
    - i_new
    - io_wait_timer_add_to
    - connection_init
    - connection_init_client_ip
    - http_client_peer_shared_label
    - http_client_connection_connect_tunnel
    linkageType: ''
    returnType: struct http_client_connection
    signature: 'struct http_client_connection *

      http_client_connection_create(struct http_client_peer *peer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1712
    functionName: http_client_connection_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 3
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_connection_ref(struct http_client_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1724,1
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1729,1
    - Dst: i_stream_remove_destroy_callback
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1733,1
    - Dst: http_response_parser_deinit
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1739,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1741,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1743,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1744,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1745,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1746,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1747,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1750,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1751,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1752,1
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1754,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1755,1
    - Dst: http_client_connection_detach_peer
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1757,1
    - Dst: http_client_connection_stop_idle
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1759,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1714
    functionDepth: 7
    functionLinenumber: 1714
    functionLinenumberEnd: 1760
    functionName: http_client_connection_disconnect
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 1
    functionsReached:
    - array_delete
    - i_unreached
    - e_debug
    - http_response_parser_deinit
    - io_remove
    - i_stream_remove_destroy_callback
    - http_client_connection_detach_peer
    - array_lsearch_ptr_idx
    - timeout_remove
    - http_client_connection_stop_idle
    - http_client_request_abort
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void http_client_connection_disconnect(struct http_client_connection
      *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1767,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1774,1
    - Dst: http_client_connection_disconnect
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1776,1
    - Dst: http_client_connection_abort_any_requests
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1777,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1779,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1780,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1781,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1782,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1783,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1784,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1786,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1787,1
    - Dst: ssl_iostream_destroy
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1789,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1790,1
    - Dst: io_wait_timer_remove
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1791,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1792,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1794,1
    - Dst: http_client_peer_pool_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1796,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct http_client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1762
    functionDepth: 8
    functionLinenumber: 1762
    functionLinenumberEnd: 1798
    functionName: http_client_connection_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 5
    functionsReached:
    - connection_deinit
    - i_free
    - http_client_connection_abort_any_requests
    - e_debug
    - http_client_connection_disconnect
    - http_client_peer_pool_unref
    - settings_free
    - ssl_iostream_destroy
    - io_wait_timer_remove
    - array_is_created
    - i_assert
    - array_free
    linkageType: ''
    returnType: bool
    signature: bool http_client_connection_unref(struct http_client_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1804,1
    - Dst: http_client_connection_disconnect
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1806,1
    - Dst: http_client_connection_abort_any_requests
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1807,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct http_client_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1800
    functionDepth: 9
    functionLinenumber: 1800
    functionLinenumberEnd: 1809
    functionName: http_client_connection_close
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 12
    functionsReached:
    - e_debug
    - http_client_connection_disconnect
    - http_client_connection_unref
    - http_client_connection_abort_any_requests
    linkageType: ''
    returnType: void
    signature: void http_client_connection_close(struct http_client_connection **_conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1817,1
    - Dst: io_loop_move_io_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1820,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1824,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1828,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1832,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1836,1
    - Dst: io_loop_move_timeout_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1840,1
    - Dst: i_stream_switch_ioloop_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1843,1
    - Dst: io_wait_timer_move_to
      Src: /src/dovecot/src/lib-http/http-client-connection.c:1845,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct http_client_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1811
    functionDepth: 7
    functionLinenumber: 1811
    functionLinenumberEnd: 1846
    functionName: http_client_connection_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client-connection.c
    functionUses: 1
    functionsReached:
    - io_loop_move_io_to
    - io_loop_move_timeout_to
    - connection_switch_ioloop_to
    - io_wait_timer_move_to
    - i_stream_switch_ioloop_to
    linkageType: ''
    returnType: void
    signature: void http_client_connection_switch_ioloop(struct http_client_connection
      *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_NO_SANITIZE_INTEGER::str_hash
      Src: /src/dovecot/src/lib-http/http-client-peer.c:45,1
    - Dst: net_ip_hash
      Src: /src/dovecot/src/lib-http/http-client-peer.c:50,1
    - Dst: ATTR_NO_SANITIZE_INTEGER::str_hash
      Src: /src/dovecot/src/lib-http/http-client-peer.c:54,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 59
    functionName: ATTR_NO_SANITIZE_INTEGER::http_client_peer_addr_hash
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - net_ip_hash
    - ATTR_NO_SANITIZE_INTEGER::str_hash
    linkageType: ''
    returnType: unsigned int
    signature: 'unsigned int ATTR_NO_SANITIZE_INTEGER

      http_client_peer_addr_hash(const struct http_client_peer_addr *peer)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: net_ip_cmp
      Src: /src/dovecot/src/lib-http/http-client-peer.c:80,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-http/http-client-peer.c:87,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-http/http-client-peer.c:90,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-peer.c:92,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - peer1
    - peer2
    argTypes:
    - struct http_client_peer_addr*
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 93
    functionName: http_client_peer_addr_cmp
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 2
    functionsReached:
    - net_ip_cmp
    - null_strcmp
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int http_client_peer_addr_cmp(const struct http_client_peer_addr *peer1,\n\t\t\t
      \     const struct http_client_peer_addr *peer2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-client-peer.c:106,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client-peer.c:109,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-client-peer.c:110,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-peer.c:112,1
    - Dst: http_client_peer_shared_label
      Src: /src/dovecot/src/lib-http/http-client-peer.c:113,1
    - Dst: http_client_peer_shared_ref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:115,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:117,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:118,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:119,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-http/http-client-peer.c:121,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-client-peer.c:124,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - pshared
    - ssl_ctx
    - rawlog_dir
    argTypes:
    - struct http_client_peer_shared*
    - struct ssl_iostream_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 99
    functionDepth: 11
    functionLinenumber: 99
    functionLinenumberEnd: 129
    functionName: http_client_peer_pool_create
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - event_create
    - e_debug
    - event_set_append_log_prefix
    - t_strdup_printf
    - i_strdup
    - DLLIST_PREPEND
    - i_new
    - http_client_peer_shared_ref
    - http_client_peer_shared_label
    linkageType: ''
    returnType: struct http_client_peer_pool
    signature: "struct http_client_peer_pool *\nhttp_client_peer_pool_create(struct
      http_client_peer_shared *pshared,\n\t\t\t     struct ssl_iostream_context *ssl_ctx,\n\t\t\t
      \    const char *rawlog_dir)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ppool
    argTypes:
    - struct http_client_peer_pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 136
    functionName: http_client_peer_pool_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_client_peer_pool_ref(struct http_client_peer_pool *ppool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-peer.c:142,1
    - Dst: http_client_peer_pool_ref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:144,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:147,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:147,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-http/http-client-peer.c:148,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:149,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:150,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:151,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:152,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:152,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:153,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:153,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:154,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:154,1
    - Dst: http_client_peer_pool_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - _ppool
    argTypes:
    - struct http_client_peer_pool**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 138
    functionDepth: 9
    functionLinenumber: 138
    functionLinenumberEnd: 157
    functionName: http_client_peer_pool_close
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - http_client_peer_pool_unref
    - http_client_peer_pool_ref
    - array_copy
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    - http_client_connection_unref
    linkageType: ''
    returnType: void
    signature: void http_client_peer_pool_close(struct http_client_peer_pool **_ppool)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:169,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:173,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:176,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:176,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:177,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:177,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:178,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:179,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:180,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-http/http-client-peer.c:182,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:184,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:185,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:186,1
    - Dst: http_client_peer_shared_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - _ppool
    argTypes:
    - struct http_client_peer_pool**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 159
    functionDepth: 4
    functionLinenumber: 159
    functionLinenumberEnd: 188
    functionName: http_client_peer_pool_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 2
    functionsReached:
    - event_unref
    - i_free
    - e_debug
    - array_count
    - http_client_peer_shared_unref
    - array_free
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void http_client_peer_pool_unref(struct http_client_peer_pool **_ppool)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:201,1
    - Dst: http_client_peer_addr_is_https
      Src: /src/dovecot/src/lib-http/http-client-peer.c:201,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-http/http-client-peer.c:207,1
    - Dst: http_client_peer_pool_create
      Src: /src/dovecot/src/lib-http/http-client-peer.c:213,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:216,1
    - Dst: http_client_peer_pool_ref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - pshared
    - client
    argTypes:
    - struct http_client_peer_shared*
    - struct http_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 190
    functionDepth: 12
    functionLinenumber: 190
    functionLinenumberEnd: 221
    functionName: http_client_peer_pool_get
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - http_client_peer_addr_is_https
    - e_debug
    - http_client_peer_pool_ref
    - http_client_peer_pool_create
    - null_strcmp
    - i_assert
    linkageType: ''
    returnType: struct http_client_peer_pool
    signature: "struct http_client_peer_pool *\nhttp_client_peer_pool_get(struct http_client_peer_shared
      *pshared,\n\t\t\t  struct http_client *client)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:226,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:228,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:228,1
    - Dst: http_client_peer_shared_connection_success
      Src: /src/dovecot/src/lib-http/http-client-peer.c:230,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:232,1
    - Dst: http_client_peer_connection_succeeded_pool
      Src: /src/dovecot/src/lib-http/http-client-peer.c:246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ppool
    argTypes:
    - struct http_client_peer_pool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 250
    functionName: http_client_peer_pool_connection_success
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_count
    - http_client_peer_connection_succeeded_pool
    - http_client_peer_shared_connection_success
    linkageType: ''
    returnType: void
    signature: void http_client_peer_pool_connection_success(struct http_client_peer_pool
      *ppool)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:256,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:259,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:259,1
    - Dst: http_client_peer_shared_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-peer.c:261,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:263,1
    - Dst: http_client_peer_connection_failed_pool
      Src: /src/dovecot/src/lib-http/http-client-peer.c:278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ppool
    - reason
    argTypes:
    - struct http_client_peer_pool*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 282
    functionName: http_client_peer_pool_connection_failure
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_count
    - http_client_peer_shared_connection_failure
    - http_client_peer_connection_failed_pool
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_pool_connection_failure(struct http_client_peer_pool
      *ppool,\n\t\t\t\t\t const char *reason)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-client-peer.c:294,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:302,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:306,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-client-peer.c:307,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-client-peer.c:311,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client-peer.c:317,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-client-peer.c:318,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-peer.c:320,1
    - Dst: http_client_peer_shared_label
      Src: /src/dovecot/src/lib-http/http-client-peer.c:321,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:323,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-http/http-client-peer.c:326,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - cctx
    - addr
    argTypes:
    - struct http_client_context*
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 288
    functionDepth: 11
    functionLinenumber: 288
    functionLinenumberEnd: 333
    functionName: http_client_peer_shared_create
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - event_create
    - http_client_peer_shared_label
    - e_debug
    - event_set_append_log_prefix
    - t_strdup_printf
    - i_strdup
    - DLLIST_PREPEND
    - i_new
    - hash_table_insert
    - i_assert
    linkageType: ''
    returnType: struct http_client_peer_shared
    signature: "struct http_client_peer_shared *\nhttp_client_peer_shared_create(struct
      http_client_context *cctx,\n\t\t\t       const struct http_client_peer_addr
      *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: http_client_peer_shared_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_client_peer_shared_ref(struct http_client_peer_shared *pshared)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:346,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:350,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:352,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-http/http-client-peer.c:355,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-http/http-client-peer.c:357,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-peer.c:359,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:361,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:362,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:363,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - _pshared
    argTypes:
    - struct http_client_peer_shared**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 340
    functionDepth: 6
    functionLinenumber: 340
    functionLinenumberEnd: 365
    functionName: http_client_peer_shared_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - event_unref
    - i_free
    - e_debug
    - hash_table_remove
    - i_assert
    - DLLIST_REMOVE
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_peer_shared_unref(struct http_client_peer_shared **_pshared)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-http/http-client-peer.c:373,1
    - Dst: http_client_peer_shared_create
      Src: /src/dovecot/src/lib-http/http-client-peer.c:375,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:377,1
    - Dst: http_client_peer_shared_ref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - cctx
    - addr
    argTypes:
    - struct http_client_context*
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 367
    functionDepth: 12
    functionLinenumber: 367
    functionLinenumberEnd: 382
    functionName: http_client_peer_shared_get
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_peer_shared_ref
    - hash_table_lookup
    - http_client_peer_shared_create
    linkageType: ''
    returnType: struct http_client_peer_shared
    signature: "struct http_client_peer_shared *\nhttp_client_peer_shared_get(struct
      http_client_context *cctx,\n\t\t\t    const struct http_client_peer_addr *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_shared_ref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:389,1
    - Dst: http_client_peer_pool_close
      Src: /src/dovecot/src/lib-http/http-client-peer.c:393,1
    - Dst: http_client_peer_shared_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _pshared
    argTypes:
    - struct http_client_peer_shared**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 384
    functionDepth: 10
    functionLinenumber: 384
    functionLinenumberEnd: 397
    functionName: http_client_peer_shared_close
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 2
    functionsReached:
    - http_client_peer_pool_close
    - http_client_peer_shared_ref
    - http_client_peer_shared_unref
    linkageType: ''
    returnType: void
    signature: void http_client_peer_shared_close(struct http_client_peer_shared **_pshared)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_strconcat
      Src: /src/dovecot/src/lib-http/http-client-peer.c:405,1
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-peer.c:406,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-http/http-client-peer.c:410,1
    - Dst: http_client_peer_addr2str
      Src: /src/dovecot/src/lib-http/http-client-peer.c:411,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 399
    functionDepth: 12
    functionLinenumber: 399
    functionLinenumberEnd: 415
    functionName: http_client_peer_shared_label
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 3
    functionsReached:
    - i_strconcat
    - i_strdup
    - http_client_peer_addr2str
    linkageType: ''
    returnType: char
    signature: 'char *

      http_client_peer_shared_label(struct http_client_peer_shared *pshared)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:422,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:424,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-peer.c:426,1
    - Dst: http_client_peer_connect_backoff
      Src: /src/dovecot/src/lib-http/http-client-peer.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 417
    functionDepth: 6
    functionLinenumber: 417
    functionLinenumberEnd: 435
    functionName: http_client_peer_shared_connect_backoff
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - e_debug
    - i_assert
    - http_client_peer_connect_backoff
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_peer_shared_connect_backoff(struct http_client_peer_shared
      *pshared)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-peer.c:446,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:453,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-http/http-client-peer.c:455,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:461,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 467
    functionName: http_client_peer_shared_start_backoff_timer
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - e_debug
    - timeval_diff_msecs
    - timeout_add_to
    linkageType: ''
    returnType: bool
    signature: "bool http_client_peer_shared_start_backoff_timer(\n\tstruct http_client_peer_shared
      *pshared)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 484
    functionName: http_client_peer_shared_increase_backoff_timer
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_shared_increase_backoff_timer(\n\tstruct http_client_peer_shared
      *pshared)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-peer.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 486
    functionDepth: 6
    functionLinenumber: 486
    functionLinenumberEnd: 493
    functionName: http_client_peer_shared_reset_backoff_timer
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_shared_reset_backoff_timer(\n\tstruct http_client_peer_shared
      *pshared)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_shared_reset_backoff_timer
      Src: /src/dovecot/src/lib-http/http-client-peer.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 495
    functionDepth: 7
    functionLinenumber: 495
    functionLinenumberEnd: 501
    functionName: http_client_peer_shared_connection_success
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - http_client_peer_shared_reset_backoff_timer
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_shared_connection_success(\n\tstruct http_client_peer_shared
      *pshared)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:513,1
    - Dst: http_client_peer_shared_increase_backoff_timer
      Src: /src/dovecot/src/lib-http/http-client-peer.c:521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 522
    functionName: http_client_peer_shared_connection_failure
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - http_client_peer_shared_increase_backoff_timer
    - array_count
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_shared_connection_failure(\n\tstruct http_client_peer_shared
      *pshared)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_shared_increase_backoff_timer
      Src: /src/dovecot/src/lib-http/http-client-peer.c:534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pshared
    - premature
    argTypes:
    - struct http_client_peer_shared*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 536
    functionName: http_client_peer_shared_connection_lost
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - http_client_peer_shared_increase_backoff_timer
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_shared_connection_lost(struct http_client_peer_shared
      *pshared,\n\t\t\t\t\tbool premature)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/http-client-peer.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 538
    functionDepth: 8
    functionLinenumber: 538
    functionLinenumberEnd: 545
    functionName: http_client_peer_shared_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_shared_switch_ioloop(\n\tstruct http_client_peer_shared
      *pshared)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pshared
    argTypes:
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 565
    functionName: http_client_peer_shared_max_connections
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_peer_shared_max_connections(struct http_client_peer_shared
      *pshared)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/http-client-peer.c:579,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client-peer.c:584,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-client-peer.c:585,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-peer.c:585,1
    - Dst: http_client_peer_shared_label
      Src: /src/dovecot/src/lib-http/http-client-peer.c:586,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:588,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:589,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:590,1
    - Dst: DLLIST_PREPEND_FULL
      Src: /src/dovecot/src/lib-http/http-client-peer.c:592,1
    - Dst: DLLIST_PREPEND_FULL
      Src: /src/dovecot/src/lib-http/http-client-peer.c:594,1
    - Dst: http_client_peer_shared_ref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:598,1
    - Dst: http_client_peer_pool_get
      Src: /src/dovecot/src/lib-http/http-client-peer.c:599,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:615,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - client
    - pshared
    argTypes:
    - struct http_client*
    - struct http_client_peer_shared*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 573
    functionDepth: 13
    functionLinenumber: 573
    functionLinenumberEnd: 617
    functionName: http_client_peer_create
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - event_create
    - http_client_peer_pool_get
    - e_debug
    - event_set_append_log_prefix
    - DLLIST_PREPEND_FULL
    - t_strdup_printf
    - i_new
    - http_client_peer_shared_ref
    - http_client_peer_shared_label
    linkageType: ''
    returnType: struct http_client_peer
    signature: "struct http_client_peer *\nhttp_client_peer_create(struct http_client
      *client,\n\t\t\tstruct http_client_peer_shared *pshared)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 622
    functionName: http_client_peer_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_client_peer_ref(struct http_client_peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-peer.c:630,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:636,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:639,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:639,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-http/http-client-peer.c:640,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:641,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:642,1
    - Dst: http_client_connection_lost_peer
      Src: /src/dovecot/src/lib-http/http-client-peer.c:643,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:644,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:644,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-peer.c:645,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-peer.c:647,1
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/lib-http/http-client-peer.c:650,1
    - Dst: DLLIST_REMOVE_FULL
      Src: /src/dovecot/src/lib-http/http-client-peer.c:653,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:658,1
    - Dst: http_client_queue_peer_disconnected
      Src: /src/dovecot/src/lib-http/http-client-peer.c:659,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-peer.c:660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 624
    functionDepth: 6
    functionLinenumber: 624
    functionLinenumberEnd: 661
    functionName: http_client_peer_disconnect
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - http_client_connection_lost_peer
    - array_foreach_elem
    - e_debug
    - array_copy
    - DLLIST_REMOVE_FULL
    - array_count
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - i_assert
    - http_client_queue_peer_disconnected
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_peer_disconnect(struct http_client_peer *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:671,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:675,1
    - Dst: http_client_peer_disconnect
      Src: /src/dovecot/src/lib-http/http-client-peer.c:677,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:679,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:679,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:681,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:682,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:683,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:684,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/http-client-peer.c:685,1
    - Dst: http_client_peer_pool_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:707,1
    - Dst: http_client_peer_shared_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:708,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - _peer
    argTypes:
    - struct http_client_peer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 663
    functionDepth: 7
    functionLinenumber: 663
    functionLinenumberEnd: 710
    functionName: http_client_peer_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - http_client_peer_disconnect
    - event_unref
    - i_free
    - http_client_peer_pool_unref
    - e_debug
    - array_count
    - http_client_peer_shared_unref
    - i_assert
    - array_free
    linkageType: ''
    returnType: bool
    signature: bool http_client_peer_unref(struct http_client_peer **_peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:716,1
    - Dst: http_client_peer_disconnect
      Src: /src/dovecot/src/lib-http/http-client-peer.c:718,1
    - Dst: http_client_peer_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _peer
    argTypes:
    - struct http_client_peer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 712
    functionDepth: 8
    functionLinenumber: 712
    functionLinenumberEnd: 721
    functionName: http_client_peer_close
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - e_debug
    - http_client_peer_disconnect
    - http_client_peer_unref
    linkageType: ''
    returnType: void
    signature: void http_client_peer_close(struct http_client_peer **_peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_active_connections
      Src: /src/dovecot/src/lib-http/http-client-peer.c:728,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:731,1
    - Dst: http_client_peer_shared_start_backoff_timer
      Src: /src/dovecot/src/lib-http/http-client-peer.c:740,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:741,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-peer.c:745,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:747,1
    - Dst: http_client_peer_close
      Src: /src/dovecot/src/lib-http/http-client-peer.c:749,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - _peer
    argTypes:
    - struct http_client_peer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 723
    functionDepth: 9
    functionLinenumber: 723
    functionLinenumberEnd: 751
    functionName: http_client_peer_drop
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_peer_close
    - http_client_peer_trigger_request_handler
    - http_client_peer_active_connections
    - http_client_peer_shared_start_backoff_timer
    linkageType: ''
    returnType: void
    signature: void http_client_peer_drop(struct http_client_peer **_peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_shared_get
      Src: /src/dovecot/src/lib-http/http-client-peer.c:760,1
    - Dst: http_client_peer_create
      Src: /src/dovecot/src/lib-http/http-client-peer.c:770,1
    - Dst: http_client_peer_shared_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:772,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - client
    - addr
    argTypes:
    - struct http_client*
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 753
    functionDepth: 14
    functionLinenumber: 753
    functionLinenumberEnd: 774
    functionName: http_client_peer_get
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - http_client_peer_shared_get
    - http_client_peer_shared_unref
    - http_client_peer_create
    linkageType: ''
    returnType: struct http_client_peer
    signature: "struct http_client_peer *\nhttp_client_peer_get(struct http_client
      *client,\n\t\t     const struct http_client_peer_addr *addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-client-peer.c:787,1
    - Dst: http_client_connection_claim_idle
      Src: /src/dovecot/src/lib-http/http-client-peer.c:789,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:792,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:795,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:796,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - peer
    - count
    argTypes:
    - struct http_client_peer*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 776
    functionDepth: 8
    functionLinenumber: 776
    functionLinenumberEnd: 797
    functionName: http_client_peer_do_connect
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - e_debug
    - array_get
    - array_count
    - http_client_connection_claim_idle
    linkageType: ''
    returnType: void
    signature: void http_client_peer_do_connect(struct http_client_peer *peer, unsigned
      int count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:815,1
    - Dst: http_client_peer_close
      Src: /src/dovecot/src/lib-http/http-client-peer.c:816,1
    - Dst: http_client_peer_do_connect
      Src: /src/dovecot/src/lib-http/http-client-peer.c:820,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 813
    functionDepth: 9
    functionLinenumber: 813
    functionLinenumberEnd: 822
    functionName: http_client_peer_connect_backoff
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - http_client_peer_close
    - array_count
    - http_client_peer_do_connect
    linkageType: ''
    returnType: void
    signature: void http_client_peer_connect_backoff(struct http_client_peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_shared_start_backoff_timer
      Src: /src/dovecot/src/lib-http/http-client-peer.c:827,1
    - Dst: http_client_peer_do_connect
      Src: /src/dovecot/src/lib-http/http-client-peer.c:832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - peer
    - count
    argTypes:
    - struct http_client_peer*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 824
    functionDepth: 9
    functionLinenumber: 824
    functionLinenumberEnd: 833
    functionName: http_client_peer_connect
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - http_client_peer_do_connect
    - http_client_peer_shared_start_backoff_timer
    linkageType: ''
    returnType: void
    signature: void http_client_peer_connect(struct http_client_peer *peer, unsigned
      int count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:839,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:842,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 835
    functionDepth: 1
    functionLinenumber: 835
    functionLinenumberEnd: 848
    functionName: http_client_peer_is_connected
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - array_count
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: bool http_client_peer_is_connected(struct http_client_peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-peer.c:854,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:856,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:859,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:859,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-http/http-client-peer.c:860,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:861,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:862,1
    - Dst: http_client_connection_is_active
      Src: /src/dovecot/src/lib-http/http-client-peer.c:863,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-peer.c:864,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:866,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:866,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 850
    functionDepth: 10
    functionLinenumber: 850
    functionLinenumberEnd: 867
    functionName: http_client_peer_cancel
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - e_debug
    - http_client_connection_is_active
    - array_copy
    - http_client_connection_close
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_peer_cancel(struct http_client_peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:876,1
    - Dst: http_client_queue_requests_pending
      Src: /src/dovecot/src/lib-http/http-client-peer.c:877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - peer
    - num_urgent_r
    argTypes:
    - struct http_client_peer*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 869
    functionDepth: 2
    functionLinenumber: 869
    functionLinenumberEnd: 884
    functionName: http_client_peer_requests_pending
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - http_client_queue_requests_pending
    - array_foreach_elem
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int http_client_peer_requests_pending(struct http_client_peer
      *peer,\n\t\t\t\t  unsigned int *num_urgent_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:891,1
    - Dst: http_client_peer_requests_pending
      Src: /src/dovecot/src/lib-http/http-client-peer.c:892,1
    - Dst: http_client_peer_drop
      Src: /src/dovecot/src/lib-http/http-client-peer.c:894,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:899,1
    - Dst: http_client_connection_check_idle
      Src: /src/dovecot/src/lib-http/http-client-peer.c:900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 886
    functionDepth: 10
    functionLinenumber: 886
    functionLinenumberEnd: 901
    functionName: http_client_peer_check_idle
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - http_client_peer_requests_pending
    - array_foreach_elem
    - http_client_connection_check_idle
    - array_count
    - http_client_peer_drop
    linkageType: ''
    returnType: void
    signature: void http_client_peer_check_idle(struct http_client_peer *peer)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:925,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:926,1
    - Dst: http_client_peer_drop
      Src: /src/dovecot/src/lib-http/http-client-peer.c:930,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:933,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:936,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:937,1
    - Dst: http_client_peer_cancel
      Src: /src/dovecot/src/lib-http/http-client-peer.c:939,1
    - Dst: http_client_peer_requests_pending
      Src: /src/dovecot/src/lib-http/http-client-peer.c:944,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:946,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:949,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:950,1
    - Dst: http_client_peer_check_idle
      Src: /src/dovecot/src/lib-http/http-client-peer.c:951,1
    - Dst: http_client_peer_ref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:955,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:957,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:957,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-http/http-client-peer.c:961,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-http/http-client-peer.c:965,1
    - Dst: http_client_connection_check_ready
      Src: /src/dovecot/src/lib-http/http-client-peer.c:969,1
    - Dst: http_client_connection_count_pending
      Src: /src/dovecot/src/lib-http/http-client-peer.c:978,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:979,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:982,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-http/http-client-peer.c:983,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-http/http-client-peer.c:985,1
    - Dst: array_insert_space
      Src: /src/dovecot/src/lib-http/http-client-peer.c:990,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1006,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1011,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1015,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1017,1
    - Dst: http_client_connection_next_request
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1022,1
    - Dst: http_client_peer_requests_pending
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1037,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1039,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1042,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1043,1
    - Dst: http_client_peer_check_idle
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1044,1
    - Dst: http_client_peer_unref
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1050,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1057,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1058,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1100,1
    - Dst: http_client_peer_connect
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1105,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1116,1
    - Dst: array_foreach_modifiable
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1126,1
    - Dst: http_client_connection_next_request
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1136,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1150,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1158,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1161,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 147
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 903
    functionDepth: 15
    functionLinenumber: 903
    functionLinenumberEnd: 1163
    functionName: http_client_peer_handle_requests_real
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - array_count
    - array_foreach_idx
    - array_foreach_modifiable
    - http_client_connection_count_pending
    - http_client_connection_check_ready
    - http_client_peer_cancel
    - array_insert_space
    - http_client_peer_connect
    - array_clear
    - http_client_peer_check_idle
    - i_assert
    - http_client_peer_unref
    - http_client_peer_requests_pending
    - http_client_peer_ref
    - e_debug
    - array_foreach
    - t_array_init
    - http_client_connection_next_request
    - http_client_peer_drop
    linkageType: ''
    returnType: void
    signature: void http_client_peer_handle_requests_real(struct http_client_peer
      *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1167,1
    - Dst: http_client_peer_handle_requests_real
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1165
    functionDepth: 16
    functionLinenumber: 1165
    functionLinenumberEnd: 1171
    functionName: http_client_peer_handle_requests
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - http_client_peer_handle_requests_real
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void http_client_peer_handle_requests(struct http_client_peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add_short_to
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1174
    functionDepth: 0
    functionLinenumber: 1174
    functionLinenumberEnd: 1185
    functionName: http_client_peer_trigger_request_handler
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 5
    functionsReached:
    - timeout_add_short_to
    linkageType: ''
    returnType: void
    signature: void http_client_peer_trigger_request_handler(struct http_client_peer
      *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - peer
    - queue
    argTypes:
    - struct http_client_peer*
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1187
    functionDepth: 1
    functionLinenumber: 1187
    functionLinenumberEnd: 1191
    functionName: http_client_peer_have_queue
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - array_lsearch_ptr
    linkageType: ''
    returnType: bool
    signature: "bool http_client_peer_have_queue(struct http_client_peer *peer,\n\t\t\t\t
      struct http_client_queue *queue)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_have_queue
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1196,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1197,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1199,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - peer
    - queue
    argTypes:
    - struct http_client_peer*
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1193
    functionDepth: 2
    functionLinenumber: 1193
    functionLinenumberEnd: 1202
    functionName: http_client_peer_link_queue
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - e_debug
    - http_client_peer_have_queue
    - array_count
    - array_push_back
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_link_queue(struct http_client_peer *peer,\n\t\t\t\t
      struct http_client_queue *queue)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1209,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1210,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1212,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1214,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1216,1
    - Dst: http_client_peer_check_idle
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - peer
    - queue
    argTypes:
    - struct http_client_peer*
    - struct http_client_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1204
    functionDepth: 11
    functionLinenumber: 1204
    functionLinenumberEnd: 1218
    functionName: http_client_peer_unlink_queue
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 4
    functionsReached:
    - array_delete
    - e_debug
    - array_count
    - array_lsearch_ptr_idx
    - http_client_peer_check_idle
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_unlink_queue(struct http_client_peer *peer,\n\t\t\t\t
      \  struct http_client_queue *queue)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1226,1
    - Dst: http_client_queue_claim_request
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - peer
    - no_urgent
    argTypes:
    - struct http_client_peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1220
    functionDepth: 13
    functionLinenumber: 1220
    functionLinenumberEnd: 1236
    functionName: http_client_peer_claim_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 2
    functionsReached:
    - http_client_queue_claim_request
    - array_foreach_elem
    linkageType: ''
    returnType: struct http_client_request
    signature: 'struct http_client_request *

      http_client_peer_claim_request(struct http_client_peer *peer, bool no_urgent)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1243,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1245,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1245,1
    - Dst: http_client_peer_pool_connection_success
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1247,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1249,1
    - Dst: http_client_queue_connection_success
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1250,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1238
    functionDepth: 7
    functionLinenumber: 1238
    functionLinenumberEnd: 1253
    functionName: http_client_peer_connection_success
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - e_debug
    - http_client_queue_connection_success
    - http_client_peer_pool_connection_success
    - http_client_peer_trigger_request_handler
    - array_count
    linkageType: ''
    returnType: void
    signature: void http_client_peer_connection_success(struct http_client_peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1260,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1262,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1262,1
    - Dst: http_client_peer_pool_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - peer
    - reason
    argTypes:
    - struct http_client_peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1255
    functionDepth: 2
    functionLinenumber: 1255
    functionLinenumberEnd: 1267
    functionName: http_client_peer_connection_failure
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - e_debug
    - http_client_peer_pool_connection_failure
    - array_count
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_connection_failure(struct http_client_peer *peer,\n\t\t\t\t\t
      const char *reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1276,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1280,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1280,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1269
    functionDepth: 1
    functionLinenumber: 1269
    functionLinenumberEnd: 1285
    functionName: http_client_peer_connection_succeeded_pool
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - e_debug
    - http_client_peer_trigger_request_handler
    - array_count
    linkageType: ''
    returnType: void
    signature: void http_client_peer_connection_succeeded_pool(struct http_client_peer
      *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1292,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1294,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1297,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1297,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1303,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1303,1
    - Dst: array_copy
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1304,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1305,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1310,1
    - Dst: http_client_queue_connection_failure
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - peer
    - reason
    argTypes:
    - struct http_client_peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1287
    functionDepth: 14
    functionLinenumber: 1287
    functionLinenumberEnd: 1312
    functionName: http_client_peer_connection_failed_pool
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - array_foreach_elem
    - e_debug
    - array_copy
    - array_count
    - t_array_init
    - ARRAY_TYPE
    - http_client_queue_connection_failure
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_connection_failed_pool(struct http_client_peer
      *peer,\n\t\t\t\t\tconst char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_client_peer_shared_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1326,1
    - Dst: http_client_peer_requests_pending
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1328,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1330,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1336,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1336,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1337,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1341,1
    - Dst: http_client_peer_trigger_request_handler
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - peer
    - premature
    argTypes:
    - struct http_client_peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1314
    functionDepth: 3
    functionLinenumber: 1314
    functionLinenumberEnd: 1349
    functionName: http_client_peer_connection_lost
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - http_client_peer_requests_pending
    - http_client_peer_shared_connection_lost
    - e_debug
    - http_client_peer_trigger_request_handler
    - array_count
    linkageType: ''
    returnType: void
    signature: "void http_client_peer_connection_lost(struct http_client_peer *peer,\n\t\t\t\t
      \     bool premature)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1358,1
    - Dst: http_client_connection_is_active
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1351
    functionDepth: 2
    functionLinenumber: 1351
    functionLinenumberEnd: 1364
    functionName: http_client_peer_active_connections
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - http_client_connection_is_active
    - array_foreach_elem
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_peer_active_connections(struct http_client_peer
      *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1366
    functionDepth: 1
    functionLinenumber: 1366
    functionLinenumberEnd: 1370
    functionName: http_client_peer_pending_connections
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_peer_pending_connections(struct http_client_peer
      *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-http/http-client-peer.c:1376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct http_client_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1372
    functionDepth: 8
    functionLinenumber: 1372
    functionLinenumberEnd: 1378
    functionName: http_client_peer_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/http-client-peer.c
    functionUses: 1
    functionsReached:
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: void http_client_peer_switch_ioloop(struct http_client_peer *peer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:166,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:179,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:182,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:183,1
    - Dst: http_response_parser_init
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:184,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:187,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:187,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:191,1
    - Dst: http_response_parse_next
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:192,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:195,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:196,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:199,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:202,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:203,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:204,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:205,1
    - Dst: o_stream_destroy
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:207,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:208,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:213,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:219,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:219,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:223,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:223,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:224,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:227,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:227,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:228,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:229,1
    - Dst: http_response_parse_next
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:232,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:235,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:237,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:240,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:241,1
    - Dst: http_response_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:242,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 163
    functionDepth: 14
    functionLinenumber: 163
    functionLinenumberEnd: 243
    functionName: test_http_response_parse_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-response-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - http_response_parser_deinit
    - http_response_parse_next
    - buffer_create_dynamic
    - strlen
    - t_strdup_printf
    - buffer_set_used_size
    - str_sanitize
    - test_assert
    - o_stream_create_buffer
    - o_stream_send_istream
    - test_end
    - test_istream_set_size
    - i_zero
    - test_out
    - o_stream_destroy
    - strcmp
    - http_response_parser_init
    - test_istream_create_data
    - i_stream_unref
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_response_parse_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:326,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:326,1
    - Dst: http_response_parser_init
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:327,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:329,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:331,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:331,1
    - Dst: http_response_parse_next
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:333,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:335,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:336,1
    - Dst: http_response_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 312
    functionDepth: 14
    functionLinenumber: 312
    functionLinenumberEnd: 338
    functionName: test_http_response_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-response-parser.c
    functionUses: 0
    functionsReached:
    - http_response_parser_init
    - test_out_reason
    - http_response_parser_deinit
    - http_response_parse_next
    - strlen
    - t_strdup_printf
    - test_end
    - i_stream_unref
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_response_parse_invalid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:361,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:362,1
    - Dst: http_response_parser_init
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:364,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:366,1
    - Dst: http_response_parse_next
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:368,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:370,1
    - Dst: http_response_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:371,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:372,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:375,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:376,1
    - Dst: http_response_parser_init
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:378,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:379,1
    - Dst: http_response_parse_next
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:381,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:383,1
    - Dst: http_response_header_get
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:384,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:385,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:387,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:387,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:388,1
    - Dst: http_response_parse_next
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:390,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:392,1
    - Dst: http_response_parser_deinit
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:393,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 350
    functionDepth: 14
    functionLinenumber: 350
    functionLinenumberEnd: 395
    functionName: test_http_response_parse_bad
    functionSourceFile: /src/dovecot/src/lib-http/test-http-response-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - http_response_parser_init
    - http_response_header_get
    - http_response_parser_deinit
    - http_response_parse_next
    - t_strdup_printf
    - test_end
    - test_out
    - test_assert
    - i_stream_unref
    - i_stream_create_from_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_response_parse_bad(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-response-parser.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 397
    functionDepth: 7
    functionLinenumber: 397
    functionLinenumberEnd: 406
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-response-parser.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:45,1
    - Dst: http_url_create_host
      Src: /src/dovecot/src/lib-http/http-client-request.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 10
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: http_client_request_label
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 6
    functionsReached:
    - http_url_create_host
    - p_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *http_client_request_label(struct http_client_request *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-http/http-client-request.c:54,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-http/http-client-request.c:55,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-http/http-client-request.c:56,1
    - Dst: http_url_get_port
      Src: /src/dovecot/src/lib-http/http-client-request.c:57,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-http/http-client-request.c:59,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-client-request.c:60,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:61,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/http-client-request.c:62,1
    - Dst: http_client_request_label
      Src: /src/dovecot/src/lib-http/http-client-request.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 52
    functionDepth: 11
    functionLinenumber: 52
    functionLinenumberEnd: 63
    functionName: http_client_request_update_event
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_url_get_port
    - event_set_append_log_prefix
    - t_strdup_printf
    - http_client_request_label
    - str_sanitize
    - event_add_str
    - event_add_int
    linkageType: ''
    returnType: void
    signature: void http_client_request_update_event(struct http_client_request *req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:73,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:82,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:84,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-http/http-client-request.c:91,1
    - Dst: struct event_passthrough*::add_ip
      Src: /src/dovecot/src/lib-http/http-client-request.c:94,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-http/http-client-request.c:96,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 101
    functionName: http_client_request_result_event
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - struct event_passthrough*::add_int
    - i_assert
    - event_create_passthrough
    - struct event_passthrough*::add_ip
    linkageType: ''
    returnType: struct event_passthrough
    signature: 'struct event_passthrough *

      http_client_request_result_event(struct http_client_request *req)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/http-client-request.c:111,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-client-request.c:112,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:117,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client-request.c:121,1
    - Dst: event_strlist_copy_recursive
      Src: /src/dovecot/src/lib-http/http-client-request.c:122,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib-http/http-client-request.c:122,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:128,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:129,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:136,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:137,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:144,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 4
    argNames:
    - client
    - method
    - callback
    - context
    argTypes:
    - struct http_client*
    - char*
    - http_client_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 103
    functionDepth: 5
    functionLinenumber: 103
    functionLinenumberEnd: 155
    functionName: http_client_request_new
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - event_create
    - p_new
    - event_get_global
    - strcasecmp
    - event_strlist_copy_recursive
    linkageType: ''
    returnType: struct http_client_request
    signature: "struct http_client_request *\nhttp_client_request_new(struct http_client
      *client, const char *method,\n\t\t\thttp_client_request_callback_t *callback,
      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_new
      Src: /src/dovecot/src/lib-http/http-client-request.c:165,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:166,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:167,1
    - Dst: http_client_request_update_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - client
    - method
    - host
    - target
    - callback
    - context
    argTypes:
    - struct http_client*
    - char*
    - char*
    - char*
    - http_client_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 158
    functionDepth: 12
    functionLinenumber: 158
    functionLinenumberEnd: 170
    functionName: http_client_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 7
    functionsReached:
    - http_client_request_update_event
    - http_client_request_new
    - p_strdup
    linkageType: ''
    returnType: struct http_client_request
    signature: "struct http_client_request *\nhttp_client_request(struct http_client
      *client,\n\t\t    const char *method, const char *host, const char *target,\n\t\t
      \   http_client_request_callback_t *callback, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_new
      Src: /src/dovecot/src/lib-http/http-client-request.c:180,1
    - Dst: http_url_copy_authority
      Src: /src/dovecot/src/lib-http/http-client-request.c:181,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:182,1
    - Dst: http_url_create_target
      Src: /src/dovecot/src/lib-http/http-client-request.c:182,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:185,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:186,1
    - Dst: http_client_request_update_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - client
    - method
    - target_url
    - callback
    - context
    argTypes:
    - struct http_client*
    - char*
    - struct http_url*
    - http_client_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 173
    functionDepth: 12
    functionLinenumber: 173
    functionLinenumberEnd: 190
    functionName: http_client_request_url
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 3
    functionsReached:
    - http_client_request_new
    - p_strdup
    - http_url_copy_authority
    - http_url_create_target
    - http_client_request_update_event
    linkageType: ''
    returnType: struct http_client_request
    signature: "struct http_client_request *\nhttp_client_request_url(struct http_client
      *client,\n\t\t\tconst char *method, const struct http_url *target_url,\n\t\t\thttp_client_request_callback_t
      *callback, void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_new
      Src: /src/dovecot/src/lib-http/http-client-request.c:203,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/lib-http/http-client-request.c:206,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:208,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:210,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:212,1
    - Dst: http_client_request_update_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:213,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:218,1
    - Dst: http_url_create_target
      Src: /src/dovecot/src/lib-http/http-client-request.c:218,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:221,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:222,1
    - Dst: http_client_request_update_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:224,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - client
    - method
    - url_str
    - callback
    - context
    argTypes:
    - struct http_client*
    - char*
    - char*
    - http_client_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 193
    functionDepth: 12
    functionLinenumber: 193
    functionLinenumberEnd: 226
    functionName: http_client_request_url_str
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 3
    functionsReached:
    - http_url_parse
    - http_client_request_new
    - p_strdup
    - http_url_create_target
    - t_strdup_printf
    - http_client_request_error
    - http_client_request_update_event
    - p_strdup_printf
    linkageType: ''
    returnType: struct http_client_request
    signature: "struct http_client_request *\nhttp_client_request_url_str(struct http_client
      *client,\n\t\t\t    const char *method, const char *url_str,\n\t\t\t    http_client_request_callback_t
      *callback,\n\t\t\t    void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_new
      Src: /src/dovecot/src/lib-http/http-client-request.c:237,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:238,1
    - Dst: http_client_request_update_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - client
    - host
    - port
    - callback
    - context
    argTypes:
    - struct http_client*
    - char*
    - in_port_t
    - http_client_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 229
    functionDepth: 12
    functionLinenumber: 229
    functionLinenumberEnd: 244
    functionName: http_client_request_connect
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_client_request_update_event
    - http_client_request_new
    - p_strdup
    linkageType: ''
    returnType: struct http_client_request
    signature: "struct http_client_request *\nhttp_client_request_connect(struct http_client
      *client,\n\t\t\t    const char *host, in_port_t port,\n\t\t\t    http_client_request_callback_t
      *callback,\n\t\t\t    void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:256,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/http-client-request.c:257,1
    - Dst: http_client_request_connect
      Src: /src/dovecot/src/lib-http/http-client-request.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - client
    - ip
    - port
    - callback
    - context
    argTypes:
    - struct http_client*
    - struct ip_addr*
    - in_port_t
    - http_client_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 247
    functionDepth: 6
    functionLinenumber: 247
    functionLinenumberEnd: 263
    functionName: http_client_request_connect_ip
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - i_assert
    - net_ip2addr
    - http_client_request_connect
    linkageType: ''
    returnType: struct http_client_request
    signature: "struct http_client_request *\nhttp_client_request_connect_ip(struct
      http_client *client,\n\t\t\t       const struct ip_addr *ip, in_port_t port,\n\t\t\t
      \      http_client_request_callback_t *callback,\n\t\t\t       void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:268,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-client-request.c:269,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-http/http-client-request.c:270,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:271,1
    - Dst: event_want_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:271,1
    - Dst: event_strlist_copy_recursive
      Src: /src/dovecot/src/lib-http/http-client-request.c:272,1
    - Dst: event_get_global
      Src: /src/dovecot/src/lib-http/http-client-request.c:272,1
    - Dst: http_client_request_update_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - req
    - event
    argTypes:
    - struct http_client_request*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 265
    functionDepth: 12
    functionLinenumber: 265
    functionLinenumberEnd: 275
    functionName: http_client_request_set_event
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 2
    functionsReached:
    - event_set_forced_debug
    - event_create
    - event_get_global
    - event_unref
    - event_want_debug
    - http_client_request_update_event
    - event_add_category
    - event_strlist_copy_recursive
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_event(struct http_client_request *req,\n\t\t\t\t
      \  struct event *event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-http/http-client-request.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 284
    functionName: http_client_request_add
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    linkageType: ''
    returnType: void
    signature: void http_client_request_add(struct http_client_request *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:291,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-http/http-client-request.c:297,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-request.c:303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 304
    functionName: http_client_request_remove
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void http_client_request_remove(struct http_client_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 310
    functionName: http_client_request_ref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_request_ref(struct http_client_request *req)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:320,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:327,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:329,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:334,1
    - Dst: http_client_queue_drop_request
      Src: /src/dovecot/src/lib-http/http-client-request.c:337,1
    - Dst: struct http_client_request*::destroy_callback
      Src: /src/dovecot/src/lib-http/http-client-request.c:340,1
    - Dst: http_client_request_remove
      Src: /src/dovecot/src/lib-http/http-client-request.c:344,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-request.c:348,1
    - Dst: http_client_remove_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:350,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:352,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:353,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-http/http-client-request.c:354,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:355,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:356,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct http_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 312
    functionDepth: 7
    functionLinenumber: 312
    functionLinenumberEnd: 358
    functionName: http_client_request_unref
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 2
    functionsReached:
    - event_unref
    - e_debug
    - o_stream_unref
    - http_client_request_remove
    - http_client_remove_request_error
    - pool_unref
    - struct http_client_request*::destroy_callback
    - io_loop_stop
    - i_stream_unref
    - i_assert
    - str_free
    - http_client_queue_drop_request
    linkageType: ''
    returnType: bool
    signature: bool http_client_request_unref(struct http_client_request **_req)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:368,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:370,1
    - Dst: http_client_queue_drop_request
      Src: /src/dovecot/src/lib-http/http-client-request.c:380,1
    - Dst: http_client_remove_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:383,1
    - Dst: callback
      Src: /src/dovecot/src/lib-http/http-client-request.c:390,1
    - Dst: http_client_connection_request_destroyed
      Src: /src/dovecot/src/lib-http/http-client-request.c:394,1
    - Dst: http_client_request_remove
      Src: /src/dovecot/src/lib-http/http-client-request.c:397,1
    - Dst: http_client_request_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:398,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct http_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 360
    functionDepth: 16
    functionLinenumber: 360
    functionLinenumberEnd: 400
    functionName: http_client_request_destroy
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - e_debug
    - http_client_request_unref
    - http_client_request_remove
    - http_client_remove_request_error
    - callback
    - http_client_connection_request_destroyed
    - http_client_queue_drop_request
    linkageType: ''
    returnType: void
    signature: void http_client_request_destroy(struct http_client_request **_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:405,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-http/http-client-request.c:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - req
    - port
    argTypes:
    - struct http_client_request*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 402
    functionDepth: 4
    functionLinenumber: 402
    functionLinenumberEnd: 409
    functionName: http_client_request_set_port
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 7
    functionsReached:
    - i_assert
    - event_add_int
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_port(struct http_client_request *req,\n\t\t\t\t
      \ in_port_t port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:413,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - req
    - ssl
    argTypes:
    - struct http_client_request*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 416
    functionName: http_client_request_set_ssl
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 7
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_request_set_ssl(struct http_client_request *req, bool
      ssl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 423
    functionName: http_client_request_set_urgent
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 2
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_request_set_urgent(struct http_client_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 429
    functionName: http_client_request_set_preserve_exact_reason
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_preserve_exact_reason(\n\tstruct http_client_request
      *req)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/http-client-request.c:438,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/http-client-request.c:443,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-client-request.c:444,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-http/http-client-request.c:445,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:447,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-client-request.c:450,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 5
    argNames:
    - req
    - key
    - key_pos_r
    - value_pos_r
    - next_pos_r
    argTypes:
    - struct http_client_request*
    - char*
    - size_t*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 431
    functionDepth: 2
    functionLinenumber: 431
    functionLinenumberEnd: 459
    functionName: http_client_request_lookup_header_pos
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - i_memcasecmp
    - str_data
    - str_len
    - strlen
    - memchr
    linkageType: ''
    returnType: bool
    signature: "bool http_client_request_lookup_header_pos(struct http_client_request
      *req,\n\t\t\t\t      const char *key, size_t *key_pos_r,\n\t\t\t\t      size_t
      *value_pos_r, size_t *next_pos_r)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:468,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:473,1
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-http/http-client-request.c:473,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:474,1
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-http/http-client-request.c:474,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:479,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:483,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:485,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:489,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:493,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:497,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:501,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:501,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:504,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:508,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-http/http-client-request.c:513,1
    - Dst: http_client_request_lookup_header_pos
      Src: /src/dovecot/src/lib-http/http-client-request.c:514,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:516,1
    - Dst: str_replace
      Src: /src/dovecot/src/lib-http/http-client-request.c:520,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 54
    argCount: 4
    argNames:
    - req
    - key
    - value
    - replace_existing
    argTypes:
    - struct http_client_request*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 522
    functionName: http_client_request_add_header_full
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_client_request_lookup_header_pos
    - str_printfa
    - strpbrk
    - strcasecmp
    - str_replace
    - i_assert
    - str_new
    linkageType: ''
    returnType: void
    signature: "void http_client_request_add_header_full(struct http_client_request
      *req,\n\t\t\t\t    const char *key, const char *value,\n\t\t\t\t    bool replace_existing)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_add_header_full
      Src: /src/dovecot/src/lib-http/http-client-request.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - req
    - key
    - value
    argTypes:
    - struct http_client_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 524
    functionDepth: 4
    functionLinenumber: 524
    functionLinenumberEnd: 528
    functionName: http_client_request_add_header
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 9
    functionsReached:
    - http_client_request_add_header_full
    linkageType: ''
    returnType: void
    signature: "void http_client_request_add_header(struct http_client_request *req,\n\t\t\t\t
      \   const char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_add_header_full
      Src: /src/dovecot/src/lib-http/http-client-request.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - req
    - key
    - value
    argTypes:
    - struct http_client_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 530
    functionDepth: 4
    functionLinenumber: 530
    functionLinenumberEnd: 534
    functionName: http_client_request_add_missing_header
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_client_request_add_header_full
    linkageType: ''
    returnType: void
    signature: "void http_client_request_add_missing_header(struct http_client_request
      *req,\n\t\t\t\t\t    const char *key, const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:541,1
    - Dst: http_client_request_lookup_header_pos
      Src: /src/dovecot/src/lib-http/http-client-request.c:546,1
    - Dst: str_delete
      Src: /src/dovecot/src/lib-http/http-client-request.c:548,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - req
    - key
    argTypes:
    - struct http_client_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 536
    functionDepth: 3
    functionLinenumber: 536
    functionLinenumberEnd: 549
    functionName: http_client_request_remove_header
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - str_delete
    - http_client_request_lookup_header_pos
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_remove_header(struct http_client_request
      *req,\n\t\t\t\t       const char *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_lookup_header_pos
      Src: /src/dovecot/src/lib-http/http-client-request.c:556,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-http/http-client-request.c:561,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/http-client-request.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - req
    - key
    argTypes:
    - struct http_client_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 551
    functionDepth: 3
    functionLinenumber: 551
    functionLinenumberEnd: 563
    functionName: http_client_request_lookup_header
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_client_request_lookup_header_pos
    - t_strndup
    - str_data
    linkageType: ''
    returnType: char
    signature: "char *http_client_request_lookup_header(struct http_client_request
      *req,\n\t\t\t\t\t      const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-client-request.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 565
    functionDepth: 3
    functionLinenumber: 565
    functionLinenumberEnd: 568
    functionName: http_client_request_retrieve_headers
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - str_c
    linkageType: ''
    returnType: char
    signature: char *http_client_request_retrieve_headers(struct http_client_request
      *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - req
    - date
    argTypes:
    - struct http_client_request*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 575
    functionName: http_client_request_set_date
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_request_set_date(struct http_client_request *req,
      time_t date)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:586,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:587,1
    - Dst: i_stream_ref
      Src: /src/dovecot/src/lib-http/http-client-request.c:589,1
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-http/http-client-request.c:591,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:593,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-client-request.c:594,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:595,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:600,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - req
    - input
    - sync
    argTypes:
    - struct http_client_request*
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 609
    functionName: http_client_request_set_payload_real
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - i_stream_ref
    - e_error
    - i_stream_get_size
    - i_stream_get_error
    - i_stream_get_name
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_payload_real(struct http_client_request
      *req,\n\t\t\t\t     struct istream *input, bool sync)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_limit
      Src: /src/dovecot/src/lib-http/http-client-request.c:614,1
    - Dst: http_client_request_set_payload_real
      Src: /src/dovecot/src/lib-http/http-client-request.c:615,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - req
    - input
    - sync
    argTypes:
    - struct http_client_request*
    - struct istream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 611
    functionDepth: 5
    functionLinenumber: 611
    functionLinenumberEnd: 617
    functionName: http_client_request_set_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 8
    functionsReached:
    - http_client_request_set_payload_real
    - i_stream_create_limit
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_payload(struct http_client_request *req,\n\t\t\t\t
      \    struct istream *input, bool sync)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-http/http-client-request.c:631,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-http/http-client-request.c:632,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/http-client-request.c:633,1
    - Dst: http_client_request_set_payload_real
      Src: /src/dovecot/src/lib-http/http-client-request.c:635,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:636,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - req
    - data
    - size
    argTypes:
    - struct http_client_request*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 619
    functionDepth: 5
    functionLinenumber: 619
    functionLinenumberEnd: 637
    functionName: http_client_request_set_payload_data
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - memcpy
    - http_client_request_set_payload_real
    - i_stream_unref
    - i_stream_create_from_data
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_payload_data(struct http_client_request
      *req,\n\t\t\t\t\t  const unsigned char *data,\n\t\t\t\t\t  size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 642
    functionName: http_client_request_set_payload_empty
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_client_request_set_payload_empty(struct http_client_request
      *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:647,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - req
    - msecs
    argTypes:
    - struct http_client_request*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 652
    functionName: http_client_request_set_timeout_msecs
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_timeout_msecs(struct http_client_request
      *req,\n\t\t\t\t\t   unsigned int msecs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:657,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - req
    - time
    argTypes:
    - struct http_client_request*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 663
    functionName: http_client_request_set_timeout
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_timeout(struct http_client_request *req,\n\t\t\t\t
      \    const struct timeval *time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:668,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - req
    - msecs
    argTypes:
    - struct http_client_request*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 673
    functionName: http_client_request_set_attempt_timeout_msecs
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_attempt_timeout_msecs(\n\tstruct http_client_request
      *req, unsigned int msecs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - req
    - max_attempts
    argTypes:
    - struct http_client_request*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 683
    functionName: http_client_request_set_max_attempts
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_max_attempts(struct http_client_request
      *req,\n\t\t\t\t\t  unsigned int max_attempts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-http/http-client-request.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - headers
    argTypes:
    - struct http_client_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 689
    functionName: http_client_request_set_event_headers
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_event_headers(struct http_client_request
      *req,\n\t\t\t\t\t   const char *const *headers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:695,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - req
    - username
    - password
    argTypes:
    - struct http_client_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 691
    functionDepth: 2
    functionLinenumber: 691
    functionLinenumberEnd: 697
    functionName: http_client_request_set_auth_simple
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 5
    functionsReached:
    - p_strdup
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_auth_simple(struct http_client_request
      *req,\n\t\t\t\t\t const char *username,\n\t\t\t\t\t const char *password)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:702,1
    - Dst: http_url_clone_authority
      Src: /src/dovecot/src/lib-http/http-client-request.c:706,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - req
    - proxy_url
    argTypes:
    - struct http_client_request*
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 699
    functionDepth: 9
    functionLinenumber: 699
    functionLinenumberEnd: 708
    functionName: http_client_request_set_proxy_url
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_url_clone_authority
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_proxy_url(struct http_client_request
      *req,\n\t\t\t\t       const struct http_url *proxy_url)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:713,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - req
    - proxy_socket
    argTypes:
    - struct http_client_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 710
    functionDepth: 2
    functionLinenumber: 710
    functionLinenumberEnd: 719
    functionName: http_client_request_set_proxy_socket
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_proxy_socket(struct http_client_request
      *req,\n\t\t\t\t\t  const char *proxy_socket)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - req
    - time
    argTypes:
    - struct http_client_request*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 726
    functionName: http_client_request_delay_until
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http_client_request_delay_until(struct http_client_request *req,\n\t\t\t\t
      \    time_t time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - req
    - seconds
    argTypes:
    - struct http_client_request*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 732
    functionName: http_client_request_delay
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_client_request_delay(struct http_client_request *req, time_t
      seconds)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - req
    - msecs
    argTypes:
    - struct http_client_request*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 739
    functionName: http_client_request_delay_msecs
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - timeval_add_msecs
    linkageType: ''
    returnType: void
    signature: "void http_client_request_delay_msecs(struct http_client_request *req,\n\t\t\t\t
      \    unsigned int msecs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - req
    - response
    argTypes:
    - struct http_client_request*
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 761
    functionName: http_client_request_delay_from_response
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int http_client_request_delay_from_response(\n\tstruct http_client_request
      *req, const struct http_response *response)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 767
    functionName: http_client_request_get_method
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      http_client_request_get_method(const struct http_client_request *req)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 773
    functionName: http_client_request_get_target
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      http_client_request_get_target(const struct http_client_request *req)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 775
    functionDepth: 0
    functionLinenumber: 775
    functionLinenumberEnd: 779
    functionName: http_client_request_get_origin_url
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct http_url
    signature: 'struct http_url *

      http_client_request_get_origin_url(const struct http_client_request *req)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 785
    functionName: http_client_request_get_state
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum http_request_state
    signature: enum http_request_state http_client_request_get_state(const struct
      http_client_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 791
    functionName: http_client_request_get_attempts
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int http_client_request_get_attempts(const struct http_client_request
      *req)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-client-request.c:800,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:805,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-http/http-client-request.c:806,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:810,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-http/http-client-request.c:812,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:817,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-http/http-client-request.c:819,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:824,1
    - Dst: io_wait_timer_get_usecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:833,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:834,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:839,1
    - Dst: file_lock_wait_get_total_usecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:846,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:847,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - req
    - stats_r
    argTypes:
    - struct http_client_request*
    - struct http_client_request_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 855
    functionName: http_client_request_get_stats
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - i_zero
    - timeval_diff_msecs
    - I_MAX
    - file_lock_wait_get_total_usecs
    - i_assert
    - io_wait_timer_get_usecs
    linkageType: ''
    returnType: void
    signature: "void http_client_request_get_stats(struct http_client_request *req,\n\t\t\t\t
      \  struct http_client_request_stats *stats_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:863,1
    - Dst: http_client_request_get_stats
      Src: /src/dovecot/src/lib-http/http-client-request.c:867,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:869,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:872,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:875,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:877,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:881,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:888,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:892,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:897,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - req
    - str
    argTypes:
    - struct http_client_request*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 857
    functionDepth: 3
    functionLinenumber: 857
    functionLinenumberEnd: 900
    functionName: http_client_request_append_stats_text
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 2
    functionsReached:
    - str_append
    - http_client_request_get_stats
    - str_printfa
    linkageType: ''
    returnType: void
    signature: "void http_client_request_append_stats_text(struct http_client_request
      *req,\n\t\t\t\t\t   string_t *str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:918,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:920,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 923
    functionName: http_client_request_get_payload_type
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum http_response_payload_type
    signature: enum http_response_payload_type http_client_request_get_payload_type(struct
      http_client_request *req)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:939,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:940,1
    - Dst: http_url_create_authority
      Src: /src/dovecot/src/lib-http/http-client-request.c:942,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-http/http-client-request.c:948,1
    - Dst: http_url_create_host
      Src: /src/dovecot/src/lib-http/http-client-request.c:948,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:986,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:989,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:994,1
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:1007,1
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:1011,1
    - Dst: http_client_host_get
      Src: /src/dovecot/src/lib-http/http-client-request.c:1016,1
    - Dst: http_client_host_submit_request
      Src: /src/dovecot/src/lib-http/http-client-request.c:1020,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 57
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 925
    functionDepth: 14
    functionLinenumber: 925
    functionLinenumberEnd: 1021
    functionName: http_client_request_do_submit
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_url_create_host
    - p_strdup
    - http_client_host_get
    - timeval_add_msecs
    - http_url_create_authority
    - http_client_host_submit_request
    - i_assert
    - t_strconcat
    - p_strdup_printf
    linkageType: ''
    returnType: void
    signature: void http_client_request_do_submit(struct http_client_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1025,1
    - Dst: http_client_request_update_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:1029,1
    - Dst: http_client_request_do_submit
      Src: /src/dovecot/src/lib-http/http-client-request.c:1030,1
    - Dst: http_client_request_add
      Src: /src/dovecot/src/lib-http/http-client-request.c:1033,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1023
    functionDepth: 15
    functionLinenumber: 1023
    functionLinenumberEnd: 1037
    functionName: http_client_request_submit
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 13
    functionsReached:
    - http_client_request_add
    - e_debug
    - http_client_request_update_event
    - i_assert
    - http_client_request_do_submit
    linkageType: ''
    returnType: void
    signature: void http_client_request_submit(struct http_client_request *req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-client-request.c:1048,1
    - Dst: http_url_get_port_default
      Src: /src/dovecot/src/lib-http/http-client-request.c:1056,1
    - Dst: http_url_get_port
      Src: /src/dovecot/src/lib-http/http-client-request.c:1064,1
    - Dst: http_url_get_port
      Src: /src/dovecot/src/lib-http/http-client-request.c:1068,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - req
    - addr
    argTypes:
    - struct http_client_request*
    - struct http_client_peer_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1039
    functionDepth: 1
    functionLinenumber: 1039
    functionLinenumberEnd: 1070
    functionName: http_client_request_get_peer_addr
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - i_zero
    - http_url_get_port
    - http_url_get_port_default
    linkageType: ''
    returnType: void
    signature: "void http_client_request_get_peer_addr(const struct http_client_request
      *req,\n\t\t\t\t       struct http_client_peer_addr *addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/http-client-request.c:1078,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-http/http-client-request.c:1080,1
    - Dst: http_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1083,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1072
    functionDepth: 14
    functionLinenumber: 1072
    functionLinenumberEnd: 1085
    functionName: http_client_request_flush_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - o_stream_flush
    - http_client_connection_handle_output_error
    - o_stream_finish
    linkageType: ''
    returnType: int
    signature: int http_client_request_flush_payload(struct http_client_request *req)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1093,1
    - Dst: http_client_request_flush_payload
      Src: /src/dovecot/src/lib-http/http-client-request.c:1098,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1102,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1107,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-http/http-client-request.c:1110,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1111,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1123,1
    - Dst: http_client_connection_start_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-request.c:1127,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1133,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1087
    functionDepth: 15
    functionLinenumber: 1087
    functionLinenumberEnd: 1136
    functionName: http_client_request_finish_payload_out
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_client_request_flush_payload
    - e_debug
    - o_stream_unref
    - o_stream_get_buffer_used_size
    - http_client_connection_start_request_timeout
    - i_assert
    linkageType: ''
    returnType: int
    signature: int http_client_request_finish_payload_out(struct http_client_request
      *req)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1148,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1149,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1151,1
    - Dst: http_client_connection_ref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1154,1
    - Dst: http_client_request_ref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1155,1
    - Dst: http_client_request_finish_payload_out
      Src: /src/dovecot/src/lib-http/http-client-request.c:1161,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/http-client-request.c:1163,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-http/http-client-request.c:1164,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/http-client-request.c:1170,1
    - Dst: http_client_remove_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1183,1
    - Dst: http_client_request_error_delayed
      Src: /src/dovecot/src/lib-http/http-client-request.c:1184,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/http-client-request.c:1190,1
    - Dst: http_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client-request.c:1191,1
    - Dst: dns_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client-request.c:1193,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1197,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-http/http-client-request.c:1200,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/http-client-request.c:1204,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1209,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client-request.c:1217,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client-request.c:1219,1
    - Dst: http_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client-request.c:1220,1
    - Dst: dns_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/http-client-request.c:1222,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/http-client-request.c:1223,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/http-client-request.c:1224,1
    - Dst: http_client_request_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1244,1
    - Dst: http_client_connection_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1248,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 72
    argCount: 3
    argNames:
    - _req
    - data
    - size
    argTypes:
    - struct http_client_request**
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1138
    functionDepth: 16
    functionLinenumber: 1138
    functionLinenumberEnd: 1251
    functionName: http_client_request_continue_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_client_request_ref
    - io_loop_destroy
    - o_stream_set_flush_pending
    - http_client_request_finish_payload_out
    - dns_client_switch_ioloop
    - i_stream_create_from_data
    - http_client_request_submit
    - io_loop_run
    - http_client_switch_ioloop
    - i_stream_set_name
    - http_client_request_unref
    - http_client_remove_request_error
    - http_client_connection_unref
    - http_client_request_error_delayed
    - io_loop_set_current
    - i_assert
    - e_debug
    - io_loop_create
    - http_client_connection_ref
    - i_stream_unref
    linkageType: ''
    returnType: int
    signature: "int http_client_request_continue_payload(struct http_client_request
      **_req,\n\t\t\t\t     const unsigned char *data, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1259,1
    - Dst: http_client_request_continue_payload
      Src: /src/dovecot/src/lib-http/http-client-request.c:1261,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - _req
    - data
    - size
    argTypes:
    - struct http_client_request**
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1253
    functionDepth: 17
    functionLinenumber: 1253
    functionLinenumberEnd: 1275
    functionName: http_client_request_send_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 3
    functionsReached:
    - i_assert
    - http_client_request_continue_payload
    linkageType: ''
    returnType: int
    signature: "int http_client_request_send_payload(struct http_client_request **_req,\n\t\t\t\t
      \    const unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_continue_payload
      Src: /src/dovecot/src/lib-http/http-client-request.c:1283,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct http_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1277
    functionDepth: 17
    functionLinenumber: 1277
    functionLinenumberEnd: 1286
    functionName: http_client_request_finish_payload
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 3
    functionsReached:
    - i_assert
    - http_client_request_continue_payload
    linkageType: ''
    returnType: int
    signature: int http_client_request_finish_payload(struct http_client_request **_req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/http-client-request.c:1292,1
    - Dst: http_client_connection_output
      Src: /src/dovecot/src/lib-http/http-client-request.c:1294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1288
    functionDepth: 16
    functionLinenumber: 1288
    functionLinenumberEnd: 1295
    functionName: http_client_request_payload_input
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - io_remove
    - http_client_connection_output
    linkageType: ''
    returnType: void
    signature: void http_client_request_payload_input(struct http_client_request *req)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_finish_payload_out
      Src: /src/dovecot/src/lib-http/http-client-request.c:1308,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1310,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1311,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/http-client-request.c:1313,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/http-client-request.c:1317,1
    - Dst: o_stream_send_istream
      Src: /src/dovecot/src/lib-http/http-client-request.c:1318,1
    - Dst: o_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/http-client-request.c:1319,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1321,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1322,1
    - Dst: o_stream_get_buffer_used_size
      Src: /src/dovecot/src/lib-http/http-client-request.c:1324,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:1332,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-client-request.c:1335,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1338,1
    - Dst: http_client_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-request.c:1339,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1346,1
    - Dst: http_client_connection_stop_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-request.c:1348,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-request.c:1350,1
    - Dst: http_client_request_finish_payload_out
      Src: /src/dovecot/src/lib-http/http-client-request.c:1354,1
    - Dst: http_client_connection_stop_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-request.c:1359,1
    - Dst: io_add_istream_to
      Src: /src/dovecot/src/lib-http/http-client-request.c:1360,1
    - Dst: http_client_connection_start_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-request.c:1368,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1369,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:1374,1
    - Dst: i_stream_get_name
      Src: /src/dovecot/src/lib-http/http-client-request.c:1375,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1376,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1380,1
    - Dst: http_client_connection_lost
      Src: /src/dovecot/src/lib-http/http-client-request.c:1384,1
    - Dst: http_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1388,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-client-request.c:1391,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 51
    argCount: 2
    argNames:
    - req
    - pipelined
    argTypes:
    - struct http_client_request*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1297
    functionDepth: 16
    functionLinenumber: 1297
    functionLinenumberEnd: 1392
    functionName: http_client_request_send_more
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - io_remove
    - t_strdup_printf
    - http_client_request_finish_payload_out
    - i_unreached
    - o_stream_send_istream
    - http_client_connection_handle_output_error
    - i_stream_get_error
    - http_client_connection_start_request_timeout
    - i_stream_get_name
    - http_client_connection_stop_request_timeout
    - io_loop_stop
    - http_client_request_error
    - io_add_istream_to
    - i_assert
    - o_stream_set_max_buffer_size
    - i_error
    - http_client_connection_lost
    - e_debug
    - o_stream_get_buffer_used_size
    linkageType: ''
    returnType: int
    signature: "int http_client_request_send_more(struct http_client_request *req,\n\t\t\t\t
      \ bool pipelined)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-client-request.c:1399,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1403,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1404,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1407,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1408,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1409,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1410,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1415,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1416,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1417,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1420,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1421,1
    - Dst: http_date_create
      Src: /src/dovecot/src/lib-http/http-client-request.c:1421,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1422,1
    - Dst: http_auth_basic_credentials_init
      Src: /src/dovecot/src/lib-http/http-client-request.c:1428,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1431,1
    - Dst: http_auth_create_credentials
      Src: /src/dovecot/src/lib-http/http-client-request.c:1432,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1433,1
    - Dst: http_client_request_to_proxy
      Src: /src/dovecot/src/lib-http/http-client-request.c:1435,1
    - Dst: http_auth_basic_credentials_init
      Src: /src/dovecot/src/lib-http/http-client-request.c:1440,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1443,1
    - Dst: http_auth_create_credentials
      Src: /src/dovecot/src/lib-http/http-client-request.c:1444,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1445,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:1449,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1453,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1458,1
    - Dst: http_transfer_chunked_ostream_create
      Src: /src/dovecot/src/lib-http/http-client-request.c:1460,1
    - Dst: o_stream_set_finish_also_parent
      Src: /src/dovecot/src/lib-http/http-client-request.c:1461,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:1464,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:1465,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1469,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:1471,1
    - Dst: o_stream_ref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1476,1
    - Dst: http_client_request_to_proxy
      Src: /src/dovecot/src/lib-http/http-client-request.c:1480,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1487,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/http-client-request.c:1491,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-client-request.c:1492,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/http-client-request.c:1495,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-client-request.c:1496,1
    - Dst: file_lock_wait_get_total_usecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:1512,1
    - Dst: io_wait_timer_get_usecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:1515,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-http/http-client-request.c:1518,1
    - Dst: o_stream_sendv
      Src: /src/dovecot/src/lib-http/http-client-request.c:1521,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-http/http-client-request.c:1521,1
    - Dst: http_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1522,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1526,1
    - Dst: http_client_request_send_more
      Src: /src/dovecot/src/lib-http/http-client-request.c:1530,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1534,1
    - Dst: http_client_connection_start_request_timeout
      Src: /src/dovecot/src/lib-http/http-client-request.c:1540,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1544,1
    - Dst: o_stream_uncork_flush
      Src: /src/dovecot/src/lib-http/http-client-request.c:1546,1
    - Dst: http_client_connection_handle_output_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1547,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 106
    argCount: 2
    argNames:
    - req
    - pipelined
    argTypes:
    - struct http_client_request*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1394
    functionDepth: 17
    functionLinenumber: 1394
    functionLinenumberEnd: 1552
    functionName: http_client_request_send_real
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_len
    - o_stream_cork
    - http_date_create
    - t_str_new
    - http_client_request_to_proxy
    - o_stream_sendv
    - http_client_connection_handle_output_error
    - o_stream_set_finish_also_parent
    - http_client_request_send_more
    - http_client_connection_start_request_timeout
    - str_data
    - strcasecmp
    - http_auth_basic_credentials_init
    - i_assert
    - N_ELEMENTS
    - o_stream_uncork_flush
    - e_debug
    - http_transfer_chunked_ostream_create
    - o_stream_ref
    - file_lock_wait_get_total_usecs
    - str_append
    - http_auth_create_credentials
    - io_wait_timer_get_usecs
    linkageType: ''
    returnType: int
    signature: int http_client_request_send_real(struct http_client_request *req,
      bool pipelined)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_send_real
      Src: /src/dovecot/src/lib-http/http-client-request.c:1559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - pipelined
    argTypes:
    - struct http_client_request*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1554
    functionDepth: 18
    functionLinenumber: 1554
    functionLinenumberEnd: 1560
    functionName: http_client_request_send
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - http_client_request_send_real
    linkageType: ''
    returnType: int
    signature: int http_client_request_send(struct http_client_request *req, bool
      pipelined)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-client-request.c:1572,1
    - Dst: http_response_header_get
      Src: /src/dovecot/src/lib-http/http-client-request.c:1576,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/http-client-request.c:1581,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-client-request.c:1581,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-http/http-client-request.c:1582,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-http/http-client-request.c:1583,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/http-client-request.c:1584,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/http-client-request.c:1586,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-client-request.c:1587,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-client-request.c:1588,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - req
    - response
    argTypes:
    - struct http_client_request*
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1565
    functionDepth: 8
    functionLinenumber: 1565
    functionLinenumberEnd: 1589
    functionName: http_client_request_add_event_headers
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - http_response_header_get
    - str_len
    - str_append
    - event_add_str
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: "char *\nhttp_client_request_add_event_headers(struct http_client_request
      *req,\n\t\t\t\t      const struct http_response *response)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1608,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1617,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1621,1
    - Dst: http_client_connection_close
      Src: /src/dovecot/src/lib-http/http-client-request.c:1623,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1627,1
    - Dst: o_stream_set_flush_pending
      Src: /src/dovecot/src/lib-http/http-client-request.c:1629,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1634,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - struct http_client_request*
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1591
    functionDepth: 10
    functionLinenumber: 1591
    functionLinenumberEnd: 1637
    functionName: http_client_request_1xx_response
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - e_debug
    - http_client_connection_close
    - i_assert
    - o_stream_set_flush_pending
    linkageType: ''
    returnType: int
    signature: "int http_client_request_1xx_response(struct http_client_request *req,\n\t\t\t\t
      struct http_response *resp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_1xx_response
      Src: /src/dovecot/src/lib-http/http-client-request.c:1646,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1653,1
    - Dst: o_stream_unset_flush_callback
      Src: /src/dovecot/src/lib-http/http-client-request.c:1657,1
    - Dst: http_client_request_add_event_headers
      Src: /src/dovecot/src/lib-http/http-client-request.c:1662,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1663,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:1666,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:1667,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-client-request.c:1671,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1672,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - req
    - resp
    - early_r
    argTypes:
    - struct http_client_request*
    - struct http_response*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1639
    functionDepth: 11
    functionLinenumber: 1639
    functionLinenumberEnd: 1676
    functionName: http_client_request_check_response
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - timeval_diff_msecs
    - http_client_request_1xx_response
    - e_debug
    - http_client_request_add_event_headers
    - o_stream_unset_flush_callback
    - array_count
    linkageType: ''
    returnType: int
    signature: "int http_client_request_check_response(struct http_client_request
      *req,\n\t\t\t\t       struct http_response *resp,\n\t\t\t\t       bool *early_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1684,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1685,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/http-client-request.c:1697,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:1699,1
    - Dst: callback
      Src: /src/dovecot/src/lib-http/http-client-request.c:1705,1
    - Dst: http_client_request_resubmit
      Src: /src/dovecot/src/lib-http/http-client-request.c:1709,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1714,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - req
    - response
    argTypes:
    - struct http_client_request*
    - struct http_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1678
    functionDepth: 11
    functionLinenumber: 1678
    functionLinenumberEnd: 1718
    functionName: http_client_request_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - timeval_diff_msecs
    - t_strdup_printf
    - http_client_request_resubmit
    - callback
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool http_client_request_callback(struct http_client_request *req,\n\t\t\t\t
      \ struct http_response *response)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: http_response_init
      Src: /src/dovecot/src/lib-http/http-client-request.c:1735,1
    - Dst: callback
      Src: /src/dovecot/src/lib-http/http-client-request.c:1736,1
    - Dst: http_client_request_resubmit
      Src: /src/dovecot/src/lib-http/http-client-request.c:1741,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1747,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1751,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-request.c:1752,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - req
    - status
    - error
    argTypes:
    - struct http_client_request*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1720
    functionDepth: 2
    functionLinenumber: 1720
    functionLinenumberEnd: 1755
    functionName: http_client_request_send_error
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - http_response_init
    - io_loop_stop
    - http_client_request_resubmit
    - callback
    - i_stream_unref
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool http_client_request_send_error(struct http_client_request *req,\n\t\t\t
      \      unsigned int status, const char *error)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1764,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1770,1
    - Dst: http_client_request_send_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1771,1
    - Dst: http_client_queue_drop_request
      Src: /src/dovecot/src/lib-http/http-client-request.c:1773,1
    - Dst: http_client_request_destroy
      Src: /src/dovecot/src/lib-http/http-client-request.c:1775,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct http_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1776
      start: 1757
    functionDepth: 17
    functionLinenumber: 1757
    functionLinenumberEnd: 1776
    functionName: http_client_request_error_delayed
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 2
    functionsReached:
    - http_client_request_destroy
    - i_assert
    - http_client_request_send_error
    - http_client_queue_drop_request
    linkageType: ''
    returnType: void
    signature: void http_client_request_error_delayed(struct http_client_request **_req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1787,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1788,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1793,1
    - Dst: http_client_request_result_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:1793,1
    - Dst: http_client_queue_drop_request
      Src: /src/dovecot/src/lib-http/http-client-request.c:1798,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:1807,1
    - Dst: http_client_delay_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1809,1
    - Dst: http_client_request_send_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1811,1
    - Dst: http_client_request_destroy
      Src: /src/dovecot/src/lib-http/http-client-request.c:1812,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - _req
    - status
    - error
    argTypes:
    - struct http_client_request**
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1778
    functionDepth: 17
    functionLinenumber: 1778
    functionLinenumberEnd: 1814
    functionName: http_client_request_error
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 8
    functionsReached:
    - p_strdup
    - http_client_request_send_error
    - e_debug
    - http_client_delay_request_error
    - http_client_request_destroy
    - http_client_request_result_event
    - i_assert
    - http_client_queue_drop_request
    linkageType: ''
    returnType: void
    signature: "void http_client_request_error(struct http_client_request **_req,\n\t\t\t
      \      unsigned int status, const char *error)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1839,1
    - Dst: http_client_request_result_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:1839,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1846,1
    - Dst: http_client_queue_drop_request
      Src: /src/dovecot/src/lib-http/http-client-request.c:1849,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1851,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1852,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-request.c:1853,1
    - Dst: http_client_request_destroy
      Src: /src/dovecot/src/lib-http/http-client-request.c:1855,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - _req
    argTypes:
    - struct http_client_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1816
    functionDepth: 17
    functionLinenumber: 1816
    functionLinenumberEnd: 1856
    functionName: http_client_request_abort
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 6
    functionsReached:
    - e_debug
    - http_client_request_destroy
    - io_loop_stop
    - i_stream_unref
    - http_client_request_result_event
    - i_assert
    - http_client_queue_drop_request
    linkageType: ''
    returnType: void
    signature: void http_client_request_abort(struct http_client_request **_req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1863,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1865,1
    - Dst: http_client_request_result_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:1865,1
    - Dst: http_client_queue_drop_request
      Src: /src/dovecot/src/lib-http/http-client-request.c:1873,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1875,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1876,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/http-client-request.c:1877,1
    - Dst: http_client_request_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1879,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1880
      start: 1858
    functionDepth: 8
    functionLinenumber: 1858
    functionLinenumberEnd: 1880
    functionName: http_client_request_finish
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 2
    functionsReached:
    - e_debug
    - http_client_request_unref
    - io_loop_stop
    - http_client_request_result_event
    - i_assert
    - http_client_queue_drop_request
    linkageType: ''
    returnType: void
    signature: void http_client_request_finish(struct http_client_request *req)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-http/http-client-request.c:1894,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1898,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - req
    - rewind
    - error_r
    argTypes:
    - struct http_client_request*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1882
    functionDepth: 4
    functionLinenumber: 1882
    functionLinenumberEnd: 1904
    functionName: http_client_request_reset
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 0
    functionsReached:
    - o_stream_unref
    - i_stream_seek
    linkageType: ''
    returnType: int
    signature: "int http_client_request_reset(struct http_client_request *req, bool
      rewind,\n\t\t\t  const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1912,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1913,1
    - Dst: http_url_parse
      Src: /src/dovecot/src/lib-http/http-client-request.c:1918,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-http/http-client-request.c:1919,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1920,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:1922,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1927,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1930,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:1933,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1937,1
    - Dst: http_client_request_reset
      Src: /src/dovecot/src/lib-http/http-client-request.c:1945,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:1946,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:1948,1
    - Dst: http_url_create_target
      Src: /src/dovecot/src/lib-http/http-client-request.c:1952,1
    - Dst: http_url_copy
      Src: /src/dovecot/src/lib-http/http-client-request.c:1954,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:1955,1
    - Dst: http_url_create
      Src: /src/dovecot/src/lib-http/http-client-request.c:1959,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1961,1
    - Dst: http_client_request_result_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:1961,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:1966,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:1975,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-client-request.c:1976,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-client-request.c:1979,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/http-client-request.c:1982,1
    - Dst: http_client_request_do_submit
      Src: /src/dovecot/src/lib-http/http-client-request.c:1989,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - req
    - status
    - location
    argTypes:
    - struct http_client_request*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1906
    functionDepth: 18
    functionLinenumber: 1906
    functionLinenumberEnd: 1990
    functionName: http_client_request_redirect
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - http_url_parse
    - p_strdup
    - e_debug
    - http_url_create_target
    - t_strdup_printf
    - strcasecmp
    - http_client_request_reset
    - pool_datastack_create
    - http_client_request_error
    - http_client_request_do_submit
    - http_url_copy
    - http_url_create
    - http_client_request_result_event
    - i_assert
    - p_strdup_printf
    - i_stream_unref
    linkageType: ''
    returnType: void
    signature: "void http_client_request_redirect(struct http_client_request *req,\n\t\t\t\t
      \ unsigned int status, const char *location)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:1996,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:1998,1
    - Dst: http_client_request_reset
      Src: /src/dovecot/src/lib-http/http-client-request.c:2000,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:2001,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-client-request.c:2003,1
    - Dst: http_client_host_submit_request
      Src: /src/dovecot/src/lib-http/http-client-request.c:2011,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2012
      start: 1992
    functionDepth: 18
    functionLinenumber: 1992
    functionLinenumberEnd: 2012
    functionName: http_client_request_resubmit
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 3
    functionsReached:
    - e_debug
    - t_strdup_printf
    - http_client_request_reset
    - http_client_request_error
    - http_client_host_submit_request
    - i_assert
    linkageType: ''
    returnType: void
    signature: void http_client_request_resubmit(struct http_client_request *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_client_request_try_retry
      Src: /src/dovecot/src/lib-http/http-client-request.c:2018,1
    - Dst: http_client_request_error
      Src: /src/dovecot/src/lib-http/http-client-request.c:2019,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 3
    argNames:
    - req
    - status
    - error
    argTypes:
    - struct http_client_request*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2020
      start: 2014
    functionDepth: 18
    functionLinenumber: 2014
    functionLinenumberEnd: 2020
    functionName: http_client_request_retry
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - http_client_request_error
    - http_client_request_try_retry
    linkageType: ''
    returnType: void
    signature: "void http_client_request_retry(struct http_client_request *req,\n\t\t\t
      \      unsigned int status, const char *error)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-client-request.c:2036,1
    - Dst: http_client_request_result_event
      Src: /src/dovecot/src/lib-http/http-client-request.c:2036,1
    - Dst: http_client_request_resubmit
      Src: /src/dovecot/src/lib-http/http-client-request.c:2041,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_client_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 2022
    functionDepth: 19
    functionLinenumber: 2022
    functionLinenumberEnd: 2043
    functionName: http_client_request_try_retry
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 2
    functionsReached:
    - e_debug
    - http_client_request_result_event
    - http_client_request_resubmit
    linkageType: ''
    returnType: bool
    signature: bool http_client_request_try_retry(struct http_client_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - req
    - context
    argTypes:
    - struct http_client_request*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2046
    functionDepth: 0
    functionLinenumber: 2046
    functionLinenumberEnd: 2052
    functionName: http_client_request_set_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http_client_request_set_destroy_callback(struct http_client_request
      *req,\n\t\t\t\t\t      void (*callback)(void *),\n\t\t\t\t\t      void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-client-request.c:2059,1
    - Dst: http_client_connection_start_tunnel
      Src: /src/dovecot/src/lib-http/http-client-request.c:2061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - req
    - tunnel
    argTypes:
    - struct http_client_request*
    - struct http_client_tunnel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 2054
    functionDepth: 4
    functionLinenumber: 2054
    functionLinenumberEnd: 2062
    functionName: http_client_request_start_tunnel
    functionSourceFile: /src/dovecot/src/lib-http/http-client-request.c
    functionUses: 1
    functionsReached:
    - http_client_connection_start_tunnel
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void http_client_request_start_tunnel(struct http_client_request *req,\n\t\t\t\t
      \     struct http_client_tunnel *tunnel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-response.c:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - resp
    - status
    - reason
    argTypes:
    - struct http_response*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 20
    functionName: http_response_init
    functionSourceFile: /src/dovecot/src/lib-http/http-response.c
    functionUses: 1
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void http_response_init(struct http_response *resp,\n\tunsigned int
      status, const char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/http-response.c:27,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-response.c:29,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-http/http-response.c:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - resp
    - option
    argTypes:
    - struct http_response*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 34
    functionName: http_response_has_connection_option
    functionSourceFile: /src/dovecot/src/lib-http/http-response.c
    functionUses: 0
    functionsReached:
    - array_is_created
    - strcasecmp
    - array_foreach_elem
    linkageType: ''
    returnType: bool
    signature: "bool http_response_has_connection_option(const struct http_response
      *resp,\n\tconst char *option)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_size
      Src: /src/dovecot/src/lib-http/http-response.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - size_r
    argTypes:
    - struct http_response*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 45
    functionName: http_response_get_payload_size
    functionSourceFile: /src/dovecot/src/lib-http/http-response.c
    functionUses: 0
    functionsReached:
    - i_stream_get_size
    linkageType: ''
    returnType: int
    signature: "int http_response_get_payload_size(const struct http_response *resp,\n
      \   uoff_t *size_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/test-http-auth.c:91,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-auth.c:98,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:98,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-auth.c:100,1
    - Dst: http_auth_parse_challenges
      Src: /src/dovecot/src/lib-http/test-http-auth.c:101,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-auth.c:102,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:104,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:104,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-http/test-http-auth.c:112,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-auth.c:117,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:118,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:118,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:119,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-auth.c:120,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:122,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:122,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:123,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:126,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:126,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:127,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-auth.c:128,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-http/test-http-auth.c:132,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:134,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:134,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:135,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:136,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:139,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:139,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:140,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:141,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-auth.c:142,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-auth.c:143,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-auth.c:154,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 85
    functionDepth: 11
    functionLinenumber: 85
    functionLinenumberEnd: 155
    functionName: test_http_auth_challenges_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - http_auth_parse_challenges
    - strcmp
    - strlen
    - t_strdup_printf
    - array_foreach
    - test_end
    - test_out
    - str_sanitize
    - ARRAY_TYPE
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_auth_challenges_valid(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-auth.c:217,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:217,1
    - Dst: http_auth_parse_credentials
      Src: /src/dovecot/src/lib-http/test-http-auth.c:219,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-http/test-http-auth.c:220,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:222,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:222,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-auth.c:227,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:228,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:228,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:229,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-auth.c:230,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:232,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:232,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:233,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:236,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:236,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:237,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-auth.c:238,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-http/test-http-auth.c:242,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-http/test-http-auth.c:243,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:245,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:245,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:246,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:247,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-http/test-http-auth.c:250,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-auth.c:250,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:251,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-auth.c:252,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-auth.c:253,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-auth.c:254,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-auth.c:261,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 204
    functionDepth: 11
    functionLinenumber: 204
    functionLinenumberEnd: 262
    functionName: test_http_auth_credentials_valid
    functionSourceFile: /src/dovecot/src/lib-http/test-http-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    - t_strdup_printf
    - array_foreach
    - test_end
    - test_out
    - str_sanitize
    - http_auth_parse_credentials
    - array_is_created
    - i_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_auth_credentials_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-auth.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 266
    functionDepth: 7
    functionLinenumber: 266
    functionLinenumberEnd: 274
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-auth.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:103,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:106,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - condition
    argTypes:
    - struct http_response*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 109
    functionName: test_client_assert_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - i_error
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_assert_response(const struct http_response *resp,\n\t\t\t
      \   bool condition)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:125,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:129,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _invalid_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 132
    functionName: test_client_invalid_url_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_invalid_url_response(const struct http_response *resp,\n\t\t\t\t
      struct _invalid_url *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:141,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:144,1
    - Dst: http_client_request_url_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:146,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:149,1
    - Dst: http_client_request_set_payload_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:150,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:151,1
    - Dst: http_client_request_url_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:153,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:156,1
    - Dst: http_client_request_set_payload_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:157,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 134
    functionDepth: 16
    functionLinenumber: 134
    functionLinenumberEnd: 161
    functionName: test_client_invalid_url
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_payload_data
    - http_client_init
    - http_client_request_url_str
    - i_new
    - http_client_request_add_header
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_invalid_url(const struct http_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:169,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:171,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:172,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 175
    functionName: test_invalid_url
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_invalid_url(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:191,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:196,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _host_lookup_failed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 199
    functionName: test_client_host_lookup_failed_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_host_lookup_failed_response(const struct http_response
      *resp,\n\t\t\t\t\tstruct _host_lookup_failed *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:207,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:210,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:212,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:216,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:218,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 201
    functionDepth: 16
    functionLinenumber: 201
    functionLinenumberEnd: 225
    functionName: test_client_host_lookup_failed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_init
    - http_client_request
    - http_client_request_submit
    - i_new
    linkageType: ''
    returnType: bool
    signature: bool test_client_host_lookup_failed(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:233,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:235,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:236,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 239
    functionName: test_host_lookup_failed
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_host_lookup_failed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:250,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 253
    functionName: test_server_connection_refused
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - test_subprocess_notify_signal_send_parent
    linkageType: ''
    returnType: void
    signature: void test_server_connection_refused(unsigned int index ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:266,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:267,1
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:269,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:273,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _connection_refused*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 262
    functionDepth: 6
    functionLinenumber: 262
    functionLinenumberEnd: 276
    functionName: test_client_connection_refused_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_client_assert_response
    - test_assert
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_refused_response(const struct http_response
      *resp,\n\t\t\t\t\tstruct _connection_refused *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:282,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _connection_refused*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 278
    functionDepth: 6
    functionLinenumber: 278
    functionLinenumberEnd: 284
    functionName: test_client_connection_refused_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_connection_refused_timeout(struct _connection_refused
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:293,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:296,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:300,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:304,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:306,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:307,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:310,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:311,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:313,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:314,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:317,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 286
    functionDepth: 16
    functionLinenumber: 286
    functionLinenumberEnd: 321
    functionName: test_client_connection_refused
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - timeout_add_short
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    - test_subprocess_notify_signal_wait
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_refused(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:329,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:331,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:332,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:333,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:336,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:340,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:341,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:342,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 346
    functionName: test_connection_refused
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_subprocess_notify_signal_reset
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 358
    functionName: test_server_connection_lost_prematurely_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_connection_lost_prematurely_input(struct server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: test_server_connection_lost_prematurely
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_lost_prematurely(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:378,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:379,1
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:381,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:386,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _connection_lost_prematurely*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 373
    functionDepth: 6
    functionLinenumber: 373
    functionLinenumberEnd: 389
    functionName: test_client_connection_lost_prematurely_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_client_assert_response
    - test_assert
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_prematurely_response(\n\tconst struct
      http_response *resp,\n\tstruct _connection_lost_prematurely *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:396,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _connection_lost_prematurely*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 391
    functionDepth: 6
    functionLinenumber: 391
    functionLinenumberEnd: 398
    functionName: test_client_connection_lost_prematurely_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_prematurely_timeout(\n\tstruct _connection_lost_prematurely
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:407,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:410,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:413,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:415,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:416,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:419,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:420,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:422,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:423,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:426,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 400
    functionDepth: 16
    functionLinenumber: 400
    functionLinenumberEnd: 430
    functionName: test_client_connection_lost_prematurely
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - timeout_add_short
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: "bool test_client_connection_lost_prematurely(\n\tconst struct http_client_settings
      *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:438,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:442,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:443,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 434
    functionDepth: 3
    functionLinenumber: 434
    functionLinenumberEnd: 448
    functionName: test_connection_lost_prematurely
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_lost_prematurely(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:464,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:468,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _connection_timed_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 471
    functionName: test_client_connection_timed_out_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_timed_out_response(const struct http_response
      *resp,\n\t\t\t\t\t  struct _connection_timed_out *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:479,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:482,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:484,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:487,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:489,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 473
    functionDepth: 16
    functionLinenumber: 473
    functionLinenumberEnd: 495
    functionName: test_client_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_init
    - http_client_request
    - http_client_request_submit
    - i_new
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_timed_out(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:503,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:507,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:508,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 511
    functionName: test_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:528,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 521
    functionDepth: 3
    functionLinenumber: 521
    functionLinenumberEnd: 530
    functionName: test_invalid_redirect_input1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_invalid_redirect_input1(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 536
    functionName: test_server_invalid_redirect1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_invalid_redirect1(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:547,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 540
    functionDepth: 3
    functionLinenumber: 540
    functionLinenumberEnd: 549
    functionName: test_invalid_redirect_input2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_invalid_redirect_input2(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 555
    functionName: test_server_invalid_redirect2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_invalid_redirect2(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:563,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:564,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:568,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:569,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:569,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:569,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 559
    functionDepth: 6
    functionLinenumber: 559
    functionLinenumberEnd: 571
    functionName: test_invalid_redirect_input3
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_nsend
    - net_ip2addr
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_invalid_redirect_input3(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 577
    functionName: test_server_invalid_redirect3
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_invalid_redirect3(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:585,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - resp
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 590
    functionName: test_client_invalid_redirect_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_invalid_redirect_response(const struct http_response
      *resp,\n\t\t\t\t      void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:597,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:599,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:600,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:603,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 592
    functionDepth: 16
    functionLinenumber: 592
    functionLinenumberEnd: 607
    functionName: test_client_invalid_redirect
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - net_ip2addr
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_invalid_redirect(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:615,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:617,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:619,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:622,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:624,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:626,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:629,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:631,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:633,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 611
    functionDepth: 3
    functionLinenumber: 611
    functionLinenumberEnd: 637
    functionName: test_invalid_redirect
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_invalid_redirect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:649,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:650,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:654,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:655,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:655,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:655,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 645
    functionDepth: 6
    functionLinenumber: 645
    functionLinenumberEnd: 657
    functionName: test_unseekable_redirect_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_nsend
    - net_ip2addr
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_unseekable_redirect_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 663
    functionName: test_server_unseekable_redirect
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_unseekable_redirect(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:671,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - resp
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 667
    functionDepth: 2
    functionLinenumber: 667
    functionLinenumberEnd: 675
    functionName: test_client_unseekable_redirect_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_unseekable_redirect_response(const struct http_response
      *resp,\n\t\t\t\t\t void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:683,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:685,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:688,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:689,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:692,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:693,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:694,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 677
    functionDepth: 16
    functionLinenumber: 677
    functionLinenumberEnd: 698
    functionName: test_client_unseekable_redirect
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_request_set_payload
    - http_client_init
    - net_ip2addr
    - i_stream_unref
    - http_client_request
    - i_stream_create_from_data
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_unseekable_redirect(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:706,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:709,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:710,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 702
    functionDepth: 3
    functionLinenumber: 702
    functionLinenumberEnd: 714
    functionName: test_unseekable_redirect
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unseekable_redirect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 725
    functionName: test_unseekable_retry_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_unseekable_retry_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 727
    functionDepth: 0
    functionLinenumber: 727
    functionLinenumberEnd: 731
    functionName: test_server_unseekable_retry
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_unseekable_retry(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:739,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - resp
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 743
    functionName: test_client_unseekable_retry_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_unseekable_retry_response(const struct http_response
      *resp,\n\t\t\t\t      void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:751,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:753,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:756,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:757,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:760,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:761,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:762,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 745
    functionDepth: 16
    functionLinenumber: 745
    functionLinenumberEnd: 766
    functionName: test_client_unseekable_retry
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_request_set_payload
    - http_client_init
    - net_ip2addr
    - i_stream_unref
    - http_client_request
    - i_stream_create_from_data
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_unseekable_retry(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:774,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:777,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:778,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 770
    functionDepth: 3
    functionLinenumber: 770
    functionLinenumberEnd: 782
    functionName: test_unseekable_retry
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_unseekable_retry(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:798,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 790
    functionDepth: 3
    functionLinenumber: 790
    functionLinenumberEnd: 800
    functionName: test_broken_payload_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_broken_payload_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 802
    functionDepth: 0
    functionLinenumber: 802
    functionLinenumberEnd: 806
    functionName: test_server_broken_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_broken_payload(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:814,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - resp
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 810
    functionDepth: 2
    functionLinenumber: 810
    functionLinenumberEnd: 818
    functionName: test_client_broken_payload_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_broken_payload_response(const struct http_response
      *resp,\n\t\t\t\t    void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:826,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:828,1
    - Dst: i_stream_create_error_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:830,1
    - Dst: i_stream_set_name
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:831,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:833,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:834,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:837,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:838,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:839,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 820
    functionDepth: 16
    functionLinenumber: 820
    functionLinenumberEnd: 843
    functionName: test_client_broken_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - i_stream_set_name
    - test_expect_errors
    - http_client_request_set_payload
    - http_client_init
    - i_stream_create_error_str
    - net_ip2addr
    - i_stream_unref
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_broken_payload(const struct http_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:851,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:853,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:854,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 847
    functionDepth: 3
    functionLinenumber: 847
    functionLinenumberEnd: 858
    functionName: test_broken_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_broken_payload(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 877
    functionName: test_retry_payload_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: int
    signature: int test_retry_payload_init(struct server_connection *conn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:884,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:894,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:895,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:899,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:903,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:905,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:907,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:908,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:915,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:916,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:917,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:924,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 879
    functionDepth: 5
    functionLinenumber: 879
    functionLinenumberEnd: 925
    functionName: test_retry_payload_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - strcmp
    - i_error
    - i_fatal
    - i_stream_read_next_line
    - i_stream_get_error
    - str_sanitize
    - server_connection_deinit
    - o_stream_nsend_str
    - i_assert
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_retry_payload_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 932
    functionName: test_server_retry_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_retry_payload(unsigned int index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:951,1
    - Dst: http_client_request_try_retry
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:953,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:955,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:958,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:961,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:962,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - resp
    - rctx
    argTypes:
    - struct http_response*
    - struct _retry_payload_request_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 945
    functionDepth: 20
    functionLinenumber: 945
    functionLinenumberEnd: 964
    functionName: test_client_retry_payload_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_try_retry
    - io_loop_stop
    - test_client_assert_response
    - i_free
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_client_retry_payload_response(const struct http_response
      *resp,\n\t\t\t\t   struct _retry_payload_request_ctx *rctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:975,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:978,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:980,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:982,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:985,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:986,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:988,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:989,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:990,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 966
    functionDepth: 16
    functionLinenumber: 966
    functionLinenumberEnd: 994
    functionName: test_client_retry_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_request_set_payload
    - http_client_init
    - net_ip2addr
    - i_new
    - i_stream_unref
    - http_client_request
    - i_stream_create_from_data
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_retry_payload(const struct http_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1002,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1007,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1008,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 998
    functionDepth: 3
    functionLinenumber: 998
    functionLinenumberEnd: 1012
    functionName: test_retry_payload
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_retry_payload(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1025,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1029,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1030,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1032,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1036,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1038,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1040,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1041,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1020
    functionDepth: 4
    functionLinenumber: 1020
    functionLinenumberEnd: 1043
    functionName: test_connection_lost_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - i_stream_get_error
    - i_stream_read
    - server_connection_deinit
    - i_stream_set_max_buffer_size
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_connection_lost_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1049
    functionName: test_server_connection_lost
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_lost(unsigned int index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1068,1
    - Dst: http_client_request_try_retry
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1072,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1074,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1077,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1080,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1081,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - resp
    - rctx
    argTypes:
    - struct http_response*
    - struct _connection_lost_request_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1062
    functionDepth: 20
    functionLinenumber: 1062
    functionLinenumberEnd: 1083
    functionName: test_client_connection_lost_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_try_retry
    - io_loop_stop
    - test_client_assert_response
    - i_free
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_response(const struct http_response
      *resp,\n\t\t\t\t     struct _connection_lost_request_ctx *rctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1097,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1100,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1102,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1104,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1107,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1108,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1111,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1112,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1113,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1115,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1118,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1119,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1122,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1123,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1085
    functionDepth: 16
    functionLinenumber: 1085
    functionLinenumberEnd: 1127
    functionName: test_client_connection_lost
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_request_set_payload
    - http_client_init
    - net_ip2addr
    - i_new
    - i_stream_unref
    - http_client_request
    - i_stream_create_from_data
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_lost(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1135,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1139,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1141,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1144,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1146,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1148,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1151,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1153,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1155,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1158,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1160,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1163,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1131
    functionDepth: 3
    functionLinenumber: 1131
    functionLinenumberEnd: 1167
    functionName: test_connection_lost
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_lost(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1181,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1175
    functionDepth: 3
    functionLinenumber: 1175
    functionLinenumberEnd: 1183
    functionName: test_connection_lost_100_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_connection_lost_100_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1189
    functionName: test_server_connection_lost_100
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_lost_100(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1201,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1206,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _connection_lost_100_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1197
    functionDepth: 2
    functionLinenumber: 1197
    functionLinenumberEnd: 1209
    functionName: test_client_connection_lost_100_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_100_response(const struct http_response
      *resp,\n\t\t\t\t\t struct _connection_lost_100_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1223,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1226,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1228,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1230,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1231,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1234,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1235,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1236,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1238,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1239,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1242,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1243,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1244,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1211
    functionDepth: 16
    functionLinenumber: 1211
    functionLinenumberEnd: 1248
    functionName: test_client_connection_lost_100
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_request_set_payload
    - http_client_init
    - net_ip2addr
    - i_new
    - i_stream_unref
    - http_client_request
    - i_stream_create_from_data
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: "bool test_client_connection_lost_100(\n\tconst struct http_client_settings
      *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1256,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1260,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1262,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1252
    functionDepth: 3
    functionLinenumber: 1252
    functionLinenumberEnd: 1266
    functionName: test_connection_lost_100
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_lost_100(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1282,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1274
    functionDepth: 3
    functionLinenumber: 1274
    functionLinenumberEnd: 1284
    functionName: test_connection_lost_sub_ioloop_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_connection_lost_sub_ioloop_input(struct server_connection
      *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1286
    functionDepth: 0
    functionLinenumber: 1286
    functionLinenumberEnd: 1290
    functionName: test_server_connection_lost_sub_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_lost_sub_ioloop(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1302,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - resp
    - sub_ioloop
    argTypes:
    - struct http_response*
    - struct ioloop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1298
    functionDepth: 2
    functionLinenumber: 1298
    functionLinenumberEnd: 1308
    functionName: test_client_connection_lost_sub_ioloop_response2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_sub_ioloop_response2(\n\tconst struct
      http_response *resp, struct ioloop *sub_ioloop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1321,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1323,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1325,1
    - Dst: http_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1326,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1328,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1329,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1332,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1333,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1335,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1336,1
    - Dst: http_client_switch_ioloop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1337,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1338,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1339,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1342,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1343,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _connection_lost_sub_ioloop_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1310
    functionDepth: 16
    functionLinenumber: 1310
    functionLinenumberEnd: 1345
    functionName: test_client_connection_lost_sub_ioloop_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_switch_ioloop
    - http_client_request_set_port
    - io_loop_set_current
    - http_client_request_submit
    - io_loop_create
    - io_loop_destroy
    - io_loop_stop
    - net_ip2addr
    - test_assert
    - http_client_request
    - i_free
    - i_debug
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: "void test_client_connection_lost_sub_ioloop_response(\n\tconst struct
      http_response *resp,\n\tstruct _connection_lost_sub_ioloop_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1359,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1362,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1364,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1366,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1367,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1370,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1371,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1372,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1374,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1375,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1378,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1379,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1380,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1347
    functionDepth: 16
    functionLinenumber: 1347
    functionLinenumberEnd: 1384
    functionName: test_client_connection_lost_sub_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_request_set_payload
    - http_client_init
    - net_ip2addr
    - i_new
    - i_stream_unref
    - http_client_request
    - i_stream_create_from_data
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: "bool test_client_connection_lost_sub_ioloop(\n\tconst struct http_client_settings
      *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1392,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1396,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1398,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1388
    functionDepth: 3
    functionLinenumber: 1388
    functionLinenumberEnd: 1402
    functionName: test_connection_lost_sub_ioloop
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_lost_sub_ioloop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1421,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1422,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1413
    functionDepth: 3
    functionLinenumber: 1413
    functionLinenumberEnd: 1424
    functionName: test_early_success_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_sleep_msecs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_early_success_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1426
    functionDepth: 0
    functionLinenumber: 1426
    functionLinenumberEnd: 1430
    functionName: test_server_early_success
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_early_success(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1443,1
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1447,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1451,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _early_success_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1438
    functionDepth: 2
    functionLinenumber: 1438
    functionLinenumberEnd: 1454
    functionName: test_client_early_success_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_early_success_response(const struct http_response
      *resp,\n\t\t\t\t   struct _early_success_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1464,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1467,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1469,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1470,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1473,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1479,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1481,1
    - Dst: i_stream_create_chain
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1486,1
    - Dst: i_stream_create_copy_from_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1488,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1488,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1489,1
    - Dst: i_stream_chain_append
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1490,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1491,1
    - Dst: http_client_request_set_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1493,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1456
    functionDepth: 13
    functionLinenumber: 1456
    functionLinenumberEnd: 1495
    functionName: test_client_early_success
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_data
    - str_len
    - http_client_request_set_port
    - str_append
    - i_stream_chain_append
    - http_client_request_set_payload
    - http_client_init
    - i_stream_create_copy_from_data
    - net_ip2addr
    - i_new
    - i_stream_create_chain
    - i_stream_unref
    - http_client_request
    linkageType: ''
    returnType: bool
    signature: bool test_client_early_success(const struct http_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1514,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1517,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1518,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1510
    functionDepth: 3
    functionLinenumber: 1510
    functionLinenumberEnd: 1522
    functionName: test_early_success
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_early_success(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1537,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1531
    functionDepth: 3
    functionLinenumber: 1531
    functionLinenumberEnd: 1539
    functionName: test_bad_response_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_bad_response_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1545
    functionName: test_server_bad_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_response(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1557,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1561,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _bad_response_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1553
    functionDepth: 2
    functionLinenumber: 1553
    functionLinenumberEnd: 1564
    functionName: test_client_bad_response_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_bad_response_response(const struct http_response
      *resp,\n\t\t\t\t  struct _bad_response_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1572,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1575,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1577,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1578,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1581,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1582,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1584,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1585,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1588,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1566
    functionDepth: 16
    functionLinenumber: 1566
    functionLinenumberEnd: 1592
    functionName: test_client_bad_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_bad_response(const struct http_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1600,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1602,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1603,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1596
    functionDepth: 3
    functionLinenumber: 1596
    functionLinenumberEnd: 1607
    functionName: test_bad_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_response(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1615
    functionDepth: 0
    functionLinenumber: 1615
    functionLinenumberEnd: 1619
    functionName: test_request_timed_out_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_request_timed_out_input(struct server_connection *conn ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1625
      start: 1621
    functionDepth: 0
    functionLinenumber: 1621
    functionLinenumberEnd: 1625
    functionName: test_server_request_timed_out
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_request_timed_out(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1637,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1641,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _request_timed_out1_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1633
    functionDepth: 2
    functionLinenumber: 1633
    functionLinenumberEnd: 1644
    functionName: test_client_request_timed_out1_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_request_timed_out1_response(const struct http_response
      *resp,\n\t\t\t\t\tstruct _request_timed_out1_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1652,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1655,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1657,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1658,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1661,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1662,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1664,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1665,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1668,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1672
      start: 1646
    functionDepth: 16
    functionLinenumber: 1646
    functionLinenumberEnd: 1672
    functionName: test_client_request_timed_out1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_timed_out1(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1683,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _request_timed_out2_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1680
    functionDepth: 6
    functionLinenumber: 1680
    functionLinenumberEnd: 1685
    functionName: test_client_request_timed_out2_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_request_timed_out2_timeout(struct _request_timed_out2_ctx
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1691,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1693,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1697,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1699,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1700,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1701,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _request_timed_out2_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1687
    functionDepth: 7
    functionLinenumber: 1687
    functionLinenumberEnd: 1703
    functionName: test_client_request_timed_out2_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_reset
    - io_loop_stop
    - test_assert
    - i_free
    - test_client_assert_response
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void test_client_request_timed_out2_response(const struct http_response
      *resp,\n\t\t\t\t\tstruct _request_timed_out2_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1711,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1716,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1719,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1721,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1722,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1725,1
    - Dst: http_client_request_set_attempt_timeout_msecs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1726,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1727,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1729,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1730,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1733,1
    - Dst: http_client_request_set_attempt_timeout_msecs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1734,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1705
    functionDepth: 16
    functionLinenumber: 1705
    functionLinenumberEnd: 1738
    functionName: test_client_request_timed_out2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - timeout_add
    - http_client_init
    - http_client_request_set_attempt_timeout_msecs
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_timed_out2(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1746,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1748,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1751,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1754,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1756,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1759,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1762,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1764,1
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1765,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1768,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1771,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1773,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1777,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1780,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1782,1
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1783,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1787,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1790,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1792,1
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1793,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1797,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1742
    functionDepth: 3
    functionLinenumber: 1742
    functionLinenumberEnd: 1801
    functionName: test_request_timed_out
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_request_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1817,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1820,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1809
    functionDepth: 3
    functionLinenumber: 1809
    functionLinenumberEnd: 1822
    functionName: test_request_aborted_early_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_request_aborted_early_input(struct server_connection *conn
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1824
    functionDepth: 0
    functionLinenumber: 1824
    functionLinenumberEnd: 1828
    functionName: test_server_request_aborted_early
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_request_aborted_early(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1843,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1846,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - resp
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - struct _request_aborted_early_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1837
    functionDepth: 1
    functionLinenumber: 1837
    functionLinenumberEnd: 1847
    functionName: test_client_request_aborted_early_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_request_aborted_early_response(\n\tconst struct http_response
      *resp,\n\tstruct _request_aborted_early_ctx *ctx ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1853,1
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1857,1
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1858,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1862,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1866,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _request_aborted_early_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1849
    functionDepth: 18
    functionLinenumber: 1849
    functionLinenumberEnd: 1869
    functionName: test_client_request_aborted_early_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - io_loop_stop
    - i_free
    - http_client_request_abort
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void test_client_request_aborted_early_timeout(\n\tstruct _request_aborted_early_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1877,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1879,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1881,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1882,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1885,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1886,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1888,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1889,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1892,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1893,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1898
      start: 1871
    functionDepth: 16
    functionLinenumber: 1871
    functionLinenumberEnd: 1898
    functionName: test_client_request_aborted_early
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - timeout_add_short
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_aborted_early(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1906,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1908,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1909,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1902
    functionDepth: 3
    functionLinenumber: 1902
    functionLinenumberEnd: 1913
    functionName: test_request_aborted_early
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_request_aborted_early(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1929,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1930,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1932
      start: 1921
    functionDepth: 3
    functionLinenumber: 1921
    functionLinenumberEnd: 1932
    functionName: test_request_failed_blocking_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_request_failed_blocking_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1934
    functionDepth: 0
    functionLinenumber: 1934
    functionLinenumberEnd: 1938
    functionName: test_server_request_failed_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_request_failed_blocking(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - resp
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - struct _request_failed_blocking_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1946
    functionDepth: 2
    functionLinenumber: 1946
    functionLinenumberEnd: 1952
    functionName: test_client_request_failed_blocking_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_request_failed_blocking_response(\n\tconst struct
      http_response *resp,\n\tstruct _request_failed_blocking_ctx *ctx ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1964,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1966,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1968,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1970,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1972,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1973,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1976,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1978,1
    - Dst: http_client_request_send_payload
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1978,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1979,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1979,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1980,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1982,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1954
    functionDepth: 18
    functionLinenumber: 1954
    functionLinenumberEnd: 1985
    functionName: test_client_request_failed_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_send_payload
    - str_data
    - http_client_request_set_port
    - str_len
    - i_free
    - http_client_init
    - net_ip2addr
    - http_client_request
    - i_new
    - test_assert
    - str_append
    - i_assert
    - str_new
    - str_free
    linkageType: ''
    returnType: bool
    signature: "bool test_client_request_failed_blocking(\n\tconst struct http_client_settings
      *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1993,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1996,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:1997,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2001
      start: 1989
    functionDepth: 3
    functionLinenumber: 1989
    functionLinenumberEnd: 2001
    functionName: test_request_failed_blocking
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_request_failed_blocking(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2017,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2020,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 2009
    functionDepth: 3
    functionLinenumber: 2009
    functionLinenumberEnd: 2022
    functionName: test_client_deinit_early_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_client_deinit_early_input(struct server_connection *conn
      ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2024
    functionDepth: 0
    functionLinenumber: 2024
    functionLinenumberEnd: 2028
    functionName: test_server_client_deinit_early
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_client_deinit_early(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2042,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2045,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - resp
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - struct _client_deinit_early_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 2036
    functionDepth: 1
    functionLinenumber: 2036
    functionLinenumberEnd: 2046
    functionName: test_client_client_deinit_early_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_client_deinit_early_response(\n\tconst struct http_response
      *resp,\n\tstruct _client_deinit_early_ctx *ctx ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2051,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2054,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2057,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _client_deinit_early_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2048
    functionDepth: 7
    functionLinenumber: 2048
    functionLinenumberEnd: 2059
    functionName: test_client_client_deinit_early_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_deinit
    - io_loop_stop
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_client_deinit_early_timeout(struct _client_deinit_early_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2067,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2069,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2071,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2072,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2075,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2076,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2078,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2079,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2082,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2083,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2085,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2061
    functionDepth: 16
    functionLinenumber: 2061
    functionLinenumberEnd: 2088
    functionName: test_client_client_deinit_early
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - timeout_add_short
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_client_deinit_early(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2096,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2098,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2099,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 2092
    functionDepth: 3
    functionLinenumber: 2092
    functionLinenumberEnd: 2103
    functionName: test_client_deinit_early
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_client_deinit_early(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2115,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2116,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2119,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2119,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2119,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2121
      start: 2111
    functionDepth: 4
    functionLinenumber: 2111
    functionLinenumberEnd: 2121
    functionName: test_retry_with_delay_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_nsend
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_retry_with_delay_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2127
      start: 2123
    functionDepth: 0
    functionLinenumber: 2123
    functionLinenumberEnd: 2127
    functionName: test_server_retry_with_delay
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_retry_with_delay(unsigned int index)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2144,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2148,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2151,1
    - Dst: http_client_request_delay_msecs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2156,1
    - Dst: http_client_request_try_retry
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2158,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2161,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2165,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _client_retry_with_delay_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2137
    functionDepth: 20
    functionLinenumber: 2137
    functionLinenumberEnd: 2167
    functionName: test_client_retry_with_delay_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_delay_msecs
    - timeval_diff_msecs
    - i_fatal
    - http_client_request_try_retry
    - i_debug
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_retry_with_delay_response(\n\tconst struct http_response
      *resp,\n\tstruct _client_retry_with_delay_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2175,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2178,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2180,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2181,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2184,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2169
    functionDepth: 16
    functionLinenumber: 2169
    functionLinenumberEnd: 2188
    functionName: test_client_retry_with_delay
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_retry_with_delay(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2196,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2199,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2200,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2204
      start: 2192
    functionDepth: 3
    functionLinenumber: 2192
    functionLinenumberEnd: 2204
    functionName: test_retry_with_delay
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_retry_with_delay(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2221,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2226,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _dns_service_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2229
      start: 2216
    functionDepth: 2
    functionLinenumber: 2216
    functionLinenumberEnd: 2229
    functionName: test_client_dns_service_failure_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_dns_service_failure_response(\n\tconst struct http_response
      *resp,\n\tstruct _dns_service_failure *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2237,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2240,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2242,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2245,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2246,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2248,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2251,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2255
      start: 2231
    functionDepth: 16
    functionLinenumber: 2231
    functionLinenumberEnd: 2255
    functionName: test_client_dns_service_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_dns_service_failure(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2263,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2264,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2267,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2268,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2272
      start: 2259
    functionDepth: 3
    functionLinenumber: 2259
    functionLinenumberEnd: 2272
    functionName: test_dns_service_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - settings_root_override
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_service_failure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2283,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2285
      start: 2280
    functionDepth: 1
    functionLinenumber: 2280
    functionLinenumberEnd: 2285
    functionName: test_dns_timeout_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_dns_timeout_input(struct server_connection *conn ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2291
      start: 2287
    functionDepth: 0
    functionLinenumber: 2287
    functionLinenumberEnd: 2291
    functionName: test_dns_dns_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_dns_timeout(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2304,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2309,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _dns_timeout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2312
      start: 2299
    functionDepth: 2
    functionLinenumber: 2299
    functionLinenumberEnd: 2312
    functionName: test_client_dns_timeout_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_dns_timeout_response(\n\tconst struct http_response
      *resp,\n\tstruct _dns_timeout *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2320,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2323,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2325,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2328,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2329,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2331,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2334,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2338
      start: 2314
    functionDepth: 16
    functionLinenumber: 2314
    functionLinenumberEnd: 2338
    functionName: test_client_dns_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_dns_timeout(const struct http_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2346,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2349,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2352,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2353,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2357
      start: 2342
    functionDepth: 3
    functionLinenumber: 2342
    functionLinenumberEnd: 2357
    functionName: test_dns_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - settings_root_override
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_timeout(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2370,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2373,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2374,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2365
    functionDepth: 11
    functionLinenumber: 2365
    functionLinenumberEnd: 2376
    functionName: test_dns_lookup_failure_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - t_strdup_printf
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_failure_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2382
      start: 2378
    functionDepth: 0
    functionLinenumber: 2378
    functionLinenumberEnd: 2382
    functionName: test_dns_dns_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_dns_lookup_failure(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2394,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2399,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _dns_lookup_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2390
    functionDepth: 2
    functionLinenumber: 2390
    functionLinenumberEnd: 2402
    functionName: test_client_dns_lookup_failure_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_dns_lookup_failure_response(const struct http_response
      *resp,\n\t\t\t\t\tstruct _dns_lookup_failure *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2410,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2413,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2415,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2418,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2419,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2421,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2424,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2428
      start: 2404
    functionDepth: 16
    functionLinenumber: 2404
    functionLinenumberEnd: 2428
    functionName: test_client_dns_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_dns_lookup_failure(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2436,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2437,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2440,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2441,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2432
    functionDepth: 3
    functionLinenumber: 2432
    functionLinenumberEnd: 2445
    functionName: test_dns_lookup_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - settings_root_override
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_failure(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2461,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2464,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2465,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2468,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2471,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2474,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2476,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2478,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2484
      start: 2453
    functionDepth: 11
    functionLinenumber: 2453
    functionLinenumberEnd: 2484
    functionName: test_dns_lookup_ttl_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_ttl_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2490
      start: 2486
    functionDepth: 0
    functionLinenumber: 2486
    functionLinenumberEnd: 2490
    functionName: test_dns_dns_lookup_ttl
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_dns_lookup_ttl(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2499,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2500,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2504,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2504,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2504,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2506
      start: 2494
    functionDepth: 4
    functionLinenumber: 2494
    functionLinenumberEnd: 2506
    functionName: test_server_dns_lookup_ttl_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_nsend
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_dns_lookup_ttl_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2508
    functionDepth: 0
    functionLinenumber: 2508
    functionLinenumberEnd: 2512
    functionName: test_server_dns_lookup_ttl
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_dns_lookup_ttl(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2526,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2531,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _dns_lookup_ttl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2534
      start: 2522
    functionDepth: 2
    functionLinenumber: 2522
    functionLinenumberEnd: 2534
    functionName: test_client_dns_lookup_ttl_response_stage2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_dns_lookup_ttl_response_stage2(const struct http_response
      *resp,\n\t\t\t\t\t   struct _dns_lookup_ttl *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2540,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2544,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2548,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2549,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2551,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2555,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _dns_lookup_ttl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2557
      start: 2536
    functionDepth: 16
    functionLinenumber: 2536
    functionLinenumberEnd: 2557
    functionName: test_client_dns_lookup_ttl_stage2_start
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request
    - http_client_request_set_port
    - http_client_request_submit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_dns_lookup_ttl_stage2_start(struct _dns_lookup_ttl
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2563,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _dns_lookup_ttl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2559
    functionDepth: 2
    functionLinenumber: 2559
    functionLinenumberEnd: 2569
    functionName: test_client_dns_lookup_ttl_response_stage1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_dns_lookup_ttl_response_stage1(const struct http_response
      *resp,\n\t\t\t\t\t   struct _dns_lookup_ttl *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2577,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2580,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2582,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2586,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2587,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2589,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2593,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2597
      start: 2571
    functionDepth: 16
    functionLinenumber: 2571
    functionLinenumberEnd: 2597
    functionName: test_client_dns_lookup_ttl
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_dns_lookup_ttl(const struct http_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2605,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2607,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2610,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2611,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2616
      start: 2601
    functionDepth: 3
    functionLinenumber: 2601
    functionLinenumberEnd: 2616
    functionName: test_dns_lookup_ttl
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - settings_root_override
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_ttl(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2631,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2633,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2624
    functionDepth: 3
    functionLinenumber: 2624
    functionLinenumberEnd: 2636
    functionName: test_peer_reuse_failure_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - o_stream_nsend_str
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_peer_reuse_failure_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2642
      start: 2638
    functionDepth: 0
    functionLinenumber: 2638
    functionLinenumberEnd: 2642
    functionName: test_server_peer_reuse_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_peer_reuse_failure(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2655,1
    - Dst: http_response_is_internal_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2656,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2658,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _peer_reuse_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2660
      start: 2651
    functionDepth: 2
    functionLinenumber: 2651
    functionLinenumberEnd: 2660
    functionName: test_client_peer_reuse_failure_response2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_response_is_internal_error
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_peer_reuse_failure_response2(const struct http_response
      *resp,\n\t\t\t\t\t struct _peer_reuse_failure *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2667,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2669,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2670,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2673,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _peer_reuse_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2675
      start: 2662
    functionDepth: 16
    functionLinenumber: 2662
    functionLinenumberEnd: 2675
    functionName: test_client_peer_reuse_failure_next
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - net_ip2addr
    - http_client_request
    - http_client_request_submit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_peer_reuse_failure_next(struct _peer_reuse_failure
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2682,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2685,1
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2688,1
    - Dst: http_response_is_internal_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2689,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _peer_reuse_failure*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2677
    functionDepth: 2
    functionLinenumber: 2677
    functionLinenumberEnd: 2693
    functionName: test_client_peer_reuse_failure_response1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_response_is_internal_error
    - timeout_add_short
    - test_client_assert_response
    - test_assert
    linkageType: ''
    returnType: void
    signature: "void test_client_peer_reuse_failure_response1(const struct http_response
      *resp,\n\t\t\t\t\t struct _peer_reuse_failure *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2701,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2704,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2706,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2707,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2709,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2710,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2712,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2713,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2715,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2716,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2718,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2719,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2721,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2725
      start: 2695
    functionDepth: 16
    functionLinenumber: 2695
    functionLinenumberEnd: 2725
    functionName: test_client_peer_reuse_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_peer_reuse_failure(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2733,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2737,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2738,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2742
      start: 2729
    functionDepth: 3
    functionLinenumber: 2729
    functionLinenumberEnd: 2742
    functionName: test_peer_reuse_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_peer_reuse_failure(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2757,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2760,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2761,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2764,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2767,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2770,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2772,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2774,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2780
      start: 2750
    functionDepth: 11
    functionLinenumber: 2750
    functionLinenumberEnd: 2780
    functionName: test_dns_reconnect_failure_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - o_stream_nsend_str
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_dns_reconnect_failure_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2786
      start: 2782
    functionDepth: 0
    functionLinenumber: 2782
    functionLinenumberEnd: 2786
    functionName: test_dns_reconnect_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_reconnect_failure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2798,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2799,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2800,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2801,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2803
      start: 2790
    functionDepth: 5
    functionLinenumber: 2790
    functionLinenumberEnd: 2803
    functionName: test_reconnect_failure_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_remove
    - i_close_fd
    - io_loop_stop
    - server_connection_deinit
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_reconnect_failure_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2809
      start: 2805
    functionDepth: 0
    functionLinenumber: 2805
    functionLinenumberEnd: 2809
    functionName: test_server_reconnect_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_reconnect_failure(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2821,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2824,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _reconnect_failure_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2826
      start: 2817
    functionDepth: 2
    functionLinenumber: 2817
    functionLinenumberEnd: 2826
    functionName: test_client_reconnect_failure_response2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_reconnect_failure_response2(const struct http_response
      *resp,\n\t\t\t\t\tstruct _reconnect_failure_ctx *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2834,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2836,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2838,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2841,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _reconnect_failure_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2843
      start: 2828
    functionDepth: 16
    functionLinenumber: 2828
    functionLinenumberEnd: 2843
    functionName: test_client_reconnect_failure_next
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_request_submit
    - http_client_request
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_reconnect_failure_next(struct _reconnect_failure_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2849,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _reconnect_failure_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2853
      start: 2845
    functionDepth: 2
    functionLinenumber: 2845
    functionLinenumberEnd: 2853
    functionName: test_client_reconnect_failure_response1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - timeout_add_short
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_reconnect_failure_response1(const struct http_response
      *resp,\n\t\t\t\t\tstruct _reconnect_failure_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2861,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2863,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2865,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2868,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2872
      start: 2855
    functionDepth: 16
    functionLinenumber: 2855
    functionLinenumberEnd: 2872
    functionName: test_client_reconnect_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_reconnect_failure(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2880,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2885,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2888,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2889,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2894
      start: 2876
    functionDepth: 3
    functionLinenumber: 2876
    functionLinenumberEnd: 2894
    functionName: test_reconnect_failure
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - settings_root_override
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_reconnect_failure(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2909,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2912,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2913,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2916,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2918,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2919,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2925,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2929
      start: 2902
    functionDepth: 5
    functionLinenumber: 2902
    functionLinenumberEnd: 2929
    functionName: test_multi_ip_attempts_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_stream_read_next_line
    - o_stream_nsend_str
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_multi_ip_attempts_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2935
      start: 2931
    functionDepth: 0
    functionLinenumber: 2931
    functionLinenumberEnd: 2935
    functionName: test_dns_multi_ip_attempts
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_multi_ip_attempts(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2943,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2944,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2948,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2948,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2948,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2950
      start: 2939
    functionDepth: 4
    functionLinenumber: 2939
    functionLinenumberEnd: 2950
    functionName: test_server_multi_ip_attempts_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_nsend
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_multi_ip_attempts_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2956
      start: 2952
    functionDepth: 0
    functionLinenumber: 2952
    functionLinenumberEnd: 2956
    functionName: test_server_multi_ip_attempts
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_multi_ip_attempts(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2968,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2971,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2972,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _multi_ip_attempts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2974
      start: 2964
    functionDepth: 2
    functionLinenumber: 2964
    functionLinenumberEnd: 2974
    functionName: test_client_multi_ip_attempts_response
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_multi_ip_attempts_response(const struct http_response
      *resp,\n\t\t\t\t       struct _multi_ip_attempts *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2982,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2985,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2987,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2990,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2991,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2993,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2996,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:2997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3000
      start: 2976
    functionDepth: 16
    functionLinenumber: 2976
    functionLinenumberEnd: 3000
    functionName: test_client_multi_ip_attempts1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_multi_ip_attempts1(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3008,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3011,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3013,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3016,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3017,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3019,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3022,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3026
      start: 3002
    functionDepth: 16
    functionLinenumber: 3002
    functionLinenumberEnd: 3026
    functionName: test_client_multi_ip_attempts2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - http_client_init
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_multi_ip_attempts2(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3034,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3037,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3041,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3042,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3046,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3048,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3049,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3053,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3057,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3058,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3062,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3063
      start: 3030
    functionDepth: 3
    functionLinenumber: 3030
    functionLinenumberEnd: 3063
    functionName: test_multi_ip_attempts
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - settings_root_override
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_multi_ip_attempts(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3075
    functionDepth: 0
    functionLinenumber: 3075
    functionLinenumberEnd: 3082
    functionName: test_idle_connections_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: int
    signature: int test_idle_connections_init(struct server_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3089,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3097,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3098,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3102,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3106,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3111,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3112,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3116,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3116,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3116,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3117,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3118,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3119,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3121
      start: 3084
    functionDepth: 5
    functionLinenumber: 3084
    functionLinenumberEnd: 3121
    functionName: test_idle_connections_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_get_error
    - i_fatal
    - i_stream_read_next_line
    - i_stream_get_error
    - o_stream_nsend
    - server_connection_deinit
    - o_stream_flush
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_idle_connections_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3128
      start: 3123
    functionDepth: 0
    functionLinenumber: 3123
    functionLinenumberEnd: 3128
    functionName: test_server_idle_connections
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_idle_connections(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3142,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3146,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _idle_connections*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3149
      start: 3138
    functionDepth: 2
    functionLinenumber: 3138
    functionLinenumberEnd: 3149
    functionName: test_client_idle_connections_response_stage2
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_idle_connections_response_stage2(const struct http_response
      *resp,\n\t\t\t\t\t   struct _idle_connections *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3157,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3159,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3164,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3165,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3166,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3168,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct _idle_connections*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3171
      start: 3151
    functionDepth: 16
    functionLinenumber: 3151
    functionLinenumberEnd: 3171
    functionName: test_client_idle_connections_stage2_start
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - t_strdup_printf
    - http_client_request_submit
    - net_ip2addr
    - http_client_request
    - i_debug
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_idle_connections_stage2_start(struct _idle_connections
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3177,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3181,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _idle_connections*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3185
      start: 3173
    functionDepth: 2
    functionLinenumber: 3173
    functionLinenumberEnd: 3185
    functionName: test_client_idle_connections_response_stage1
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_debug
    - timeout_add_short
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_idle_connections_response_stage1(const struct http_response
      *resp,\n\t\t\t\t\t   struct _idle_connections *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3195,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3197,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3201,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3204,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3205,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3206,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3208,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3213
      start: 3187
    functionDepth: 16
    functionLinenumber: 3187
    functionLinenumberEnd: 3213
    functionName: test_client_idle_connections
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_set_port
    - t_strdup_printf
    - http_client_request_submit
    - http_client_init
    - net_ip2addr
    - i_new
    - http_client_request
    - i_debug
    linkageType: ''
    returnType: bool
    signature: bool test_client_idle_connections(const struct http_client_settings
      *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3221,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3224,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3226,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3229,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3231,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3233,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3236,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3238,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3240,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3243,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3245,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3247,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3251
      start: 3217
    functionDepth: 3
    functionLinenumber: 3217
    functionLinenumberEnd: 3251
    functionName: test_idle_connections
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_idle_connections(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3266,1
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3269,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3270,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3273,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3275,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3276,1
    - Dst: i_sleep_msecs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3279,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3280,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3282,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3285
      start: 3259
    functionDepth: 11
    functionLinenumber: 3259
    functionLinenumberEnd: 3285
    functionName: test_dns_idle_hosts_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_sleep_msecs
    - t_strdup_printf
    - i_stream_read_next_line
    - o_stream_nsend_str
    - i_debug
    linkageType: ''
    returnType: void
    signature: void test_dns_idle_hosts_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3291
      start: 3287
    functionDepth: 0
    functionLinenumber: 3287
    functionLinenumberEnd: 3291
    functionName: test_dns_idle_hosts
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_dns_idle_hosts(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3306
      start: 3299
    functionDepth: 0
    functionLinenumber: 3299
    functionLinenumberEnd: 3306
    functionName: test_idle_hosts_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: int
    signature: int test_idle_hosts_init(struct server_connection *conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3313,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3321,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3322,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3326,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3330,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3335,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3336,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3340,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3340,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3340,1
    - Dst: o_stream_flush
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3341,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3342,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3343,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3345
      start: 3308
    functionDepth: 5
    functionLinenumber: 3308
    functionLinenumberEnd: 3345
    functionName: test_idle_hosts_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - str_data
    - str_len
    - o_stream_get_error
    - i_fatal
    - i_stream_read_next_line
    - i_stream_get_error
    - o_stream_nsend
    - server_connection_deinit
    - o_stream_flush
    - i_assert
    linkageType: ''
    returnType: void
    signature: void test_idle_hosts_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3352
      start: 3347
    functionDepth: 0
    functionLinenumber: 3347
    functionLinenumberEnd: 3352
    functionName: test_server_idle_hosts
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_idle_hosts(unsigned int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3366,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3369,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _idle_hosts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3372
      start: 3362
    functionDepth: 2
    functionLinenumber: 3362
    functionLinenumberEnd: 3372
    functionName: test_client_idle_hosts_response_hosta
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - i_free
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_idle_hosts_response_hosta(const struct http_response
      *resp,\n\t\t\t\t      struct _idle_hosts *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_client_assert_response
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3378,1
    - Dst: http_client_request_try_retry
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3381,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - resp
    - ctx
    argTypes:
    - struct http_response*
    - struct _idle_hosts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3388
      start: 3374
    functionDepth: 20
    functionLinenumber: 3374
    functionLinenumberEnd: 3388
    functionName: test_client_idle_hosts_response_hostb
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_try_retry
    - i_debug
    - test_client_assert_response
    linkageType: ''
    returnType: void
    signature: "void test_client_idle_hosts_response_hostb(const struct http_response
      *resp,\n\t\t\t\t      struct _idle_hosts *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3396,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3399,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3401,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3403,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3405,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3406,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3408,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3410,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3412,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3413,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3415,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3417,1
    - Dst: http_client_request_set_port
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3419,1
    - Dst: http_client_request_delay_msecs
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3420,1
    - Dst: http_client_request_submit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - client_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3424
      start: 3390
    functionDepth: 16
    functionLinenumber: 3390
    functionLinenumberEnd: 3424
    functionName: test_client_idle_hosts
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - http_client_request_delay_msecs
    - http_client_request_set_port
    - t_strdup_printf
    - http_client_init
    - i_new
    - http_client_request
    - http_client_request_submit
    linkageType: ''
    returnType: bool
    signature: bool test_client_idle_hosts(const struct http_client_settings *client_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_defaults
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3432,1
    - Dst: settings_root_override
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3437,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3440,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3441,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3446
      start: 3428
    functionDepth: 3
    functionLinenumber: 3428
    functionLinenumberEnd: 3446
    functionName: test_idle_hosts
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_client_defaults
    - test_run_client_server
    - settings_root_override
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_idle_hosts(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_client_settings_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - http_set
    argTypes:
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3501
      start: 3491
    functionDepth: 2
    functionLinenumber: 3491
    functionLinenumberEnd: 3501
    functionName: test_client_defaults
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 67
    functionsReached:
    - http_client_settings_init
    linkageType: ''
    returnType: void
    signature: void test_client_defaults(struct http_client_settings *http_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3506,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3507,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3509
      start: 3503
    functionDepth: 6
    functionLinenumber: 3503
    functionLinenumberEnd: 3509
    functionName: test_client_progress_timeout
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_progress_timeout(void *context ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3515,1
    - Dst: client_test
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3516,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - client_test
    - client_set
    argTypes:
    - test_client_init_t
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3522
      start: 3511
    functionDepth: 1
    functionLinenumber: 3511
    functionLinenumberEnd: 3522
    functionName: test_client_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 4
    functionsReached:
    - client_test
    - timeout_add
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool test_client_init(test_client_init_t client_test,\n\t\t const
      struct http_client_settings *client_set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3526,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3530
      start: 3524
    functionDepth: 7
    functionLinenumber: 3524
    functionLinenumberEnd: 3530
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 8
    functionsReached:
    - http_client_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3536,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3537,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - client_test
    - client_set
    argTypes:
    - test_client_init_t
    - struct http_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3539
      start: 3532
    functionDepth: 2
    functionLinenumber: 3532
    functionLinenumberEnd: 3539
    functionName: test_client_run
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 32
    functionsReached:
    - io_loop_run
    - test_client_init
    - test_client_deinit
    linkageType: ''
    returnType: void
    signature: "void test_client_run(test_client_init_t client_test,\n\t\tconst struct
      http_client_settings *client_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_input
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3552
      start: 3547
    functionDepth: 0
    functionLinenumber: 3547
    functionLinenumberEnd: 3552
    functionName: server_connection_input
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - test_server_input
    linkageType: ''
    returnType: void
    signature: void server_connection_input(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3559,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3561,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3562,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3565,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3572
      start: 3554
    functionDepth: 6
    functionLinenumber: 3554
    functionLinenumberEnd: 3572
    functionName: server_connection_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 5
    functionsReached:
    - test_server_init
    - pool_alloconly_create
    - p_new
    - connection_init_server
    - net_set_nonblock
    linkageType: ''
    returnType: void
    signature: void server_connection_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3581,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3583,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3585
      start: 3574
    functionDepth: 4
    functionLinenumber: 3574
    functionLinenumberEnd: 3585
    functionName: server_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 79
    functionsReached:
    - connection_deinit
    - test_server_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void server_connection_deinit(struct server_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3592
      start: 3587
    functionDepth: 0
    functionLinenumber: 3587
    functionLinenumberEnd: 3592
    functionName: server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void server_connection_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3599,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3601,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3602,1
    - Dst: server_connection_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3607
      start: 3594
    functionDepth: 3
    functionLinenumber: 3594
    functionLinenumberEnd: 3607
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - server_connection_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3627,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3629,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3632,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3635,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3638
      start: 3622
    functionDepth: 5
    functionLinenumber: 3622
    functionLinenumberEnd: 3638
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 106
    functionsReached:
    - connection_list_init
    - io_add
    - io_remove
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_run(unsigned int index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_listen
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3651,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3653,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3655,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3656,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - bind_port
    argTypes:
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3659
      start: 3649
    functionDepth: 6
    functionLinenumber: 3649
    functionLinenumberEnd: 3659
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 10
    functionsReached:
    - i_fatal
    - i_debug
    - net_ip2addr
    - net_listen
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(in_port_t *bind_port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3663,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3666,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3668,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3669,1
    - Dst: struct test_server_data*::server_test
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3670,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3671,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3674,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3676,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3677,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct test_server_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3680
      start: 3661
    functionDepth: 12
    functionLinenumber: 3661
    functionLinenumberEnd: 3680
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 2
    functionsReached:
    - i_close_fd
    - main_deinit
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - struct test_server_data*::server_test
    - i_free
    - i_debug
    linkageType: ''
    returnType: int
    signature: int test_run_server(struct test_server_data *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3684,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3687,1
    - Dst: test_subprocess_notify_signal_send_parent
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3689,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3690,1
    - Dst: dns_test
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3691,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3692,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3695,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3697,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3698,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3699,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - dns_test
    argTypes:
    - test_dns_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3701
      start: 3682
    functionDepth: 12
    functionLinenumber: 3682
    functionLinenumberEnd: 3701
    functionName: test_run_dns
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 0
    functionsReached:
    - dns_test
    - i_close_fd
    - main_deinit
    - io_loop_destroy
    - io_loop_create
    - test_subprocess_notify_signal_send_parent
    - i_set_failure_prefix
    - i_free
    - i_debug
    linkageType: ''
    returnType: int
    signature: int test_run_dns(test_dns_init_t dns_test)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3707,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3710,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3712,1
    - Dst: test_client_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3713,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3714,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - client_set
    - client_test
    argTypes:
    - struct http_client_settings*
    - test_client_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3718
      start: 3703
    functionDepth: 12
    functionLinenumber: 3703
    functionLinenumberEnd: 3718
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 8
    functionsReached:
    - test_client_run
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - i_debug
    linkageType: ''
    returnType: void
    signature: "void test_run_client(const struct http_client_settings *client_set,\n\t\ttest_client_init_t
      client_test)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3736,1
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3738,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3743,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3749,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3750,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3751,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3753,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3760,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3761,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3763,1
    - Dst: test_subprocess_notify_signal_reset
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3768,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3769,1
    - Dst: test_subprocess_notify_signal_wait
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3770,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3772,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3776,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3778,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3779,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3780,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3782,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 5
    argNames:
    - client_set
    - client_test
    - server_test
    - server_tests_count
    - dns_test
    argTypes:
    - struct http_client_settings*
    - test_client_init_t
    - test_server_init_t
    - unsigned int
    - test_dns_init_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3783
      start: 3720
    functionDepth: 4
    functionLinenumber: 3720
    functionLinenumberEnd: 3783
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 130
    functionsReached:
    - i_zero
    - test_subprocess_fork
    - net_listen_unix
    - i_close_fd
    - i_fatal
    - test_subprocess_kill_all
    - test_subprocess_notify_signal_reset
    - i_unlink_if_exists
    - i_new
    - test_open_server_fd
    - test_run_client
    - i_free
    - test_subprocess_notify_signal_wait
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(const struct http_client_settings *client_set,\n\t\t
      \      test_client_init_t client_test,\n\t\t       test_server_init_t server_test,\n\t\t
      \      unsigned int server_tests_count,\n\t\t       test_dns_init_t dns_test)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3792
      start: 3789
    functionDepth: 0
    functionLinenumber: 3789
    functionLinenumberEnd: 3792
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_root_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3798
      start: 3794
    functionDepth: 3
    functionLinenumber: 3794
    functionLinenumberEnd: 3798
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 34
    functionsReached:
    - settings_root_deinit
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3805,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3806,1
    - Dst: http_client_get_global_context
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3807,1
    - Dst: settings_root_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3808,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3809,1
    - Dst: getopt
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3811,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3817,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3821,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3822,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3823,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3826,1
    - Dst: htonl
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3828,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3830,1
    - Dst: event_set_ptr
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3832,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3834,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-errors.c:3835,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3838
      start: 3800
    functionDepth: 7
    functionLinenumber: 3800
    functionLinenumberEnd: 3838
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-errors.c
    functionUses: 25
    functionsReached:
    - i_zero
    - main_init
    - event_set_forced_debug
    - getopt
    - lib_init
    - http_client_get_global_context
    - lib_deinit
    - i_fatal
    - test_run
    - htonl
    - event_set_ptr
    - settings_root_init
    - test_subprocesses_init
    - main_deinit
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-server-resource.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - loc1
    - loc2
    argTypes:
    - struct http_server_location**
    - struct http_server_location**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: http_server_location_cmp
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int http_server_location_cmp(struct http_server_location *const *loc1,\n\t\t\t
      struct http_server_location *const *loc2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-server-resource.c:33,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-http/http-server-resource.c:37,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-http/http-server-resource.c:39,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-server-resource.c:41,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-server-resource.c:42,1
    - Dst: array_insert
      Src: /src/dovecot/src/lib-http/http-server-resource.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - server
    - pool
    - path
    argTypes:
    - struct http_server*
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 45
    functionName: http_server_location_add
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strdup
    - p_new
    - array_idx_elem
    - array_insert
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: struct http_server_location
    signature: "struct http_server_location *\nhttp_server_location_add(struct http_server
      *server, pool_t pool,\n\t\t\t const char *path)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-server-resource.c:59,1
    - Dst: array_bsearch_insert_pos
      Src: /src/dovecot/src/lib-http/http-server-resource.c:63,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-http/http-server-resource.c:66,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-http/http-server-resource.c:74,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-http/http-server-resource.c:76,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - server
    - path
    - loc_r
    - sub_path_r
    argTypes:
    - struct http_server*
    - char*
    - struct http_server_location**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 87
    functionName: http_server_location_find
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_begins
    - array_idx_elem
    - array_bsearch_insert_pos
    linkageType: ''
    returnType: int
    signature: "int http_server_location_find(struct http_server *server, const char
      *path,\n\t\t\t  struct http_server_location **loc_r,\n\t\t\t  const char **sub_path_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_lsearch_ptr_idx
      Src: /src/dovecot/src/lib-http/http-server-resource.c:95,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-http/http-server-resource.c:96,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-server-resource.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - server
    - loc
    argTypes:
    - struct http_server*
    - struct http_server_location*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 98
    functionName: http_server_location_remove
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached:
    - array_delete
    - array_lsearch_ptr_idx
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void http_server_location_remove(struct http_server *server,\n\t\t\t
      \   struct http_server_location *loc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-server-resource.c:109,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-server-resource.c:111,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-http/http-server-resource.c:115,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-http/http-server-resource.c:116,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-http/http-server-resource.c:117,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-http/http-server-resource.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - res
    argTypes:
    - struct http_server_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 104
    functionDepth: 11
    functionLinenumber: 104
    functionLinenumberEnd: 119
    functionName: http_server_resource_update_event
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached:
    - event_set_append_log_prefix
    - array_get
    - t_strdup_printf
    - str_sanitize
    - event_add_str
    linkageType: ''
    returnType: void
    signature: void http_server_resource_update_event(struct http_server_resource
      *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-http/http-server-resource.c:129,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-server-resource.c:131,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-server-resource.c:138,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-http/http-server-resource.c:140,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-http/http-server-resource.c:141,1
    - Dst: http_server_resource_update_event
      Src: /src/dovecot/src/lib-http/http-server-resource.c:142,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-http/http-server-resource.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - server
    - pool
    - callback
    - context
    argTypes:
    - struct http_server*
    - pool_t
    - http_server_resource_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 122
    functionDepth: 12
    functionLinenumber: 122
    functionLinenumberEnd: 147
    functionName: http_server_resource_create
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 1
    functionsReached:
    - event_create
    - http_server_resource_update_event
    - p_new
    - pool_ref
    - p_array_init
    - event_add_category
    - array_append
    linkageType: ''
    returnType: struct http_server_resource
    signature: "struct http_server_resource *\nhttp_server_resource_create(struct
      http_server *server, pool_t pool,\n\t\t\t    http_server_resource_callback_t
      *callback,\n\t\t\t    void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-resource.c:159,1
    - Dst: struct http_server_resource*::destroy_callback
      Src: /src/dovecot/src/lib-http/http-server-resource.c:162,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-http/http-server-resource.c:166,1
    - Dst: http_server_location_remove
      Src: /src/dovecot/src/lib-http/http-server-resource.c:167,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-http/http-server-resource.c:169,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-http/http-server-resource.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - _res
    argTypes:
    - struct http_server_resource**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 149
    functionDepth: 4
    functionLinenumber: 149
    functionLinenumberEnd: 171
    functionName: http_server_resource_free
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 1
    functionsReached:
    - event_unref
    - array_foreach_elem
    - e_debug
    - pool_unref
    - http_server_location_remove
    - struct http_server_resource*::destroy_callback
    linkageType: ''
    returnType: void
    signature: void http_server_resource_free(struct http_server_resource **_res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - struct http_server_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: http_server_resource_get_pool
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pool_t
    signature: pool_t http_server_resource_get_pool(struct http_server_resource *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-http/http-server-resource.c:183,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-resource.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - res
    argTypes:
    - struct http_server_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 187
    functionName: http_server_resource_get_path
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 1
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *http_server_resource_get_path(struct http_server_resource *res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - struct http_server_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: http_server_resource_get_event
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event
    signature: struct event *http_server_resource_get_event(struct http_server_resource
      *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-resource.c:199,1
    - Dst: http_server_location_add
      Src: /src/dovecot/src/lib-http/http-server-resource.c:201,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-resource.c:202,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-http/http-server-resource.c:205,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-http/http-server-resource.c:207,1
    - Dst: http_server_resource_update_event
      Src: /src/dovecot/src/lib-http/http-server-resource.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - res
    - path
    argTypes:
    - struct http_server_resource*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 194
    functionDepth: 12
    functionLinenumber: 194
    functionLinenumberEnd: 209
    functionName: http_server_resource_add_location
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 1
    functionsReached:
    - http_server_resource_update_event
    - array_count
    - http_server_location_add
    - i_assert
    - array_append
    linkageType: ''
    returnType: void
    signature: "void http_server_resource_add_location(struct http_server_resource
      *res,\n\t\t\t\t       const char *path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_server_location_find
      Src: /src/dovecot/src/lib-http/http-server-resource.c:224,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-resource.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - server
    - path
    - res_r
    - sub_path_r
    argTypes:
    - struct http_server*
    - char*
    - struct http_server_resource**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 231
    functionName: http_server_resource_find
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached:
    - http_server_location_find
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int http_server_resource_find(struct http_server *server, const char
      *path,\n\t\t\t      struct http_server_resource **res_r,\n\t\t\t      const
      char **sub_path_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: http_server_resource_find
      Src: /src/dovecot/src/lib-http/http-server-resource.c:252,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-http/http-server-resource.c:256,1
    - Dst: http_server_request_label
      Src: /src/dovecot/src/lib-http/http-server-resource.c:256,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-http/http-server-resource.c:258,1
    - Dst: struct http_server_resource*::callback
      Src: /src/dovecot/src/lib-http/http-server-resource.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 233
    functionDepth: 12
    functionLinenumber: 233
    functionLinenumberEnd: 261
    functionName: http_server_resource_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 1
    functionsReached:
    - http_server_resource_find
    - e_debug
    - struct http_server_resource*::callback
    - http_server_request_label
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool http_server_resource_callback(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - res
    - context
    argTypes:
    - struct http_server_resource*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 270
    functionName: http_server_resource_set_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-server-resource.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http_server_resource_set_destroy_callback(struct http_server_resource
      *res,\n\t\t\t\t\t       void (*callback)(void *),\n\t\t\t\t\t       void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct http_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 12
    functionName: test_http_client_request_callback
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void test_http_client_request_callback(const struct http_response
      *response ATTR_UNUSED,\n\t\t\t\t  void *context ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:20,1
    - Dst: http_client_settings_init
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:21,1
    - Dst: http_client_init
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:22,1
    - Dst: http_client_request
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:23,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:26,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:26,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:29,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:30,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:30,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:31,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:31,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:34,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:35,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:35,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:36,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:36,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:39,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:40,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:40,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:41,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:41,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:44,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:45,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:45,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:46,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:46,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:49,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:50,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:50,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:51,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:51,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:52,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:52,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:55,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:56,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:56,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:57,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:57,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:58,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:58,1
    - Dst: http_client_request_add_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:61,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:62,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:62,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:63,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:63,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:64,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:64,1
    - Dst: http_client_request_remove_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:67,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:68,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:68,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:69,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:69,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:70,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:70,1
    - Dst: http_client_request_remove_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:73,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:74,1
    - Dst: http_client_request_lookup_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:74,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:75,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:75,1
    - Dst: http_client_request_add_missing_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:78,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:79,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:79,1
    - Dst: http_client_request_add_missing_header
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:80,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:81,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:81,1
    - Dst: http_client_request_abort
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:83,1
    - Dst: http_client_deinit
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:84,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 14
    functionDepth: 18
    functionLinenumber: 14
    functionLinenumberEnd: 86
    functionName: test_http_client_request_headers
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-request.c
    functionUses: 0
    functionsReached:
    - http_client_deinit
    - str_c
    - http_client_request_remove_header
    - http_client_request_lookup_header
    - test_assert_strcmp
    - http_client_request_add_missing_header
    - http_client_init
    - test_end
    - http_client_settings_init
    - test_assert
    - http_client_request_add_header
    - http_client_request
    - http_client_request_abort
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_http_client_request_headers(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-http/test-http-client-request.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 7
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-http/test-http-client-request.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-http/http-header.c:18,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-http/http-header.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pool
    - init_count
    argTypes:
    - pool_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 22
    functionName: http_header_create
    functionSourceFile: /src/dovecot/src/lib-http/http-header.c
    functionUses: 2
    functionsReached:
    - p_new
    - p_array_init
    linkageType: ''
    returnType: struct http_header
    signature: 'struct http_header *

      http_header_create(pool_t pool, unsigned int init_count)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_get_pool
      Src: /src/dovecot/src/lib-http/http-header.c:29,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-http/http-header.c:32,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-http/http-header.c:33,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-http/http-header.c:36,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-http/http-header.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - header
    - name
    - data
    - size
    argTypes:
    - struct http_header*
    - char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 24
    functionDepth: 3
    functionLinenumber: 24
    functionLinenumberEnd: 41
    functionName: http_header_field_add
    functionSourceFile: /src/dovecot/src/lib-http/http-header.c
    functionUses: 1
    functionsReached:
    - memcpy
    - p_strdup
    - array_append_space
    - array_get_pool
    - p_malloc
    linkageType: ''
    returnType: struct http_header_field
    signature: "struct http_header_field *\nhttp_header_field_add(struct http_header
      *header,\n\tconst char *name, const unsigned char *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-http/http-header.c:45,1
    - Dst: http_header_field_is
      Src: /src/dovecot/src/lib-http/http-header.c:49,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-header.c:50,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-http/http-header.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - header
    - name
    argTypes:
    - struct http_header*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 53
    functionName: http_header_field_delete
    functionSourceFile: /src/dovecot/src/lib-http/http-header.c
    functionUses: 1
    functionsReached:
    - http_header_field_is
    - array_delete
    - ARRAY_TYPE
    - array_foreach_idx
    linkageType: ''
    returnType: void
    signature: void http_header_field_delete(struct http_header *header, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_header_field_is
      Src: /src/dovecot/src/lib-http/http-header.c:49,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-http/http-header.c:50,1
    - Dst: array_foreach_idx
      Src: /src/dovecot/src/lib-http/http-header.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: array_foreach
    functionSourceFile: /src/dovecot/src/lib-http/http-header.c
    functionUses: 140
    functionsReached:
    - http_header_field_is
    - array_delete
    - array_foreach_idx
    linkageType: ''
    returnType: void
    signature: void array_foreach(hfields, hfield)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - header
    argTypes:
    - struct http_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: http_header_get_fields
    functionSourceFile: /src/dovecot/src/lib-http/http-header.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      http_header_get_fields(const struct http_header *header)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-http/http-header.c:66,1
    - Dst: http_header_field_is
      Src: /src/dovecot/src/lib-http/http-header.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - header
    - name
    argTypes:
    - struct http_header*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 72
    functionName: http_header_field_find
    functionSourceFile: /src/dovecot/src/lib-http/http-header.c
    functionUses: 1
    functionsReached:
    - http_header_field_is
    - array_foreach
    linkageType: ''
    returnType: struct http_header_field
    signature: 'struct http_header_field *

      http_header_field_find(const struct http_header *header, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_header_field_find
      Src: /src/dovecot/src/lib-http/http-header.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - header
    - name
    argTypes:
    - struct http_header*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 80
    functionName: http_header_field_get
    functionSourceFile: /src/dovecot/src/lib-http/http-header.c
    functionUses: 2
    functionsReached:
    - http_header_field_find
    linkageType: ''
    returnType: char
    signature: 'char *

      http_header_field_get(const struct http_header *header, const char *name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-http/http-header.c:87,1
    - Dst: http_header_field_is
      Src: /src/dovecot/src/lib-http/http-header.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - header
    - name
    - hfield_r
    argTypes:
    - struct http_header*
    - char*
    - struct http_header_field**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 97
    functionName: http_header_field_find_unique
    functionSourceFile: /src/dovecot/src/lib-http/http-header.c
    functionUses: 1
    functionsReached:
    - http_header_field_is
    - array_foreach
    linkageType: ''
    returnType: int
    signature: "int http_header_field_find_unique(const struct http_header *header,\n\tconst
      char *name, const struct http_header_field **hfield_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-http/http-request.h:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - req
    - method
    argTypes:
    - struct http_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 59
    functionName: http_request_method_is
    functionSourceFile: /src/dovecot/src/lib-http/http-request.h
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool http_request_method_is(const struct http_request *req, const char
      *method)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_header_field_find
      Src: /src/dovecot/src/lib-http/http-request.h:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - name
    argTypes:
    - struct http_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: http_request_header_find
    functionSourceFile: /src/dovecot/src/lib-http/http-request.h
    functionUses: 0
    functionsReached:
    - http_header_field_find
    linkageType: ''
    returnType: struct http_header_field
    signature: 'struct http_header_field *

      http_request_header_find(const struct http_request *req, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_header_field_get
      Src: /src/dovecot/src/lib-http/http-request.h:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - name
    argTypes:
    - struct http_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: http_request_header_get
    functionSourceFile: /src/dovecot/src/lib-http/http-request.h
    functionUses: 3
    functionsReached:
    - http_header_field_get
    linkageType: ''
    returnType: char
    signature: 'char *

      http_request_header_get(const struct http_request *req, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_header_get_fields
      Src: /src/dovecot/src/lib-http/http-request.h:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: http_request_header_get_fields
    functionSourceFile: /src/dovecot/src/lib-http/http-request.h
    functionUses: 0
    functionsReached:
    - http_header_get_fields
    linkageType: ''
    returnType: ARRAY_TYPE
    signature: 'ARRAY_TYPE *

      http_request_header_get_fields(const struct http_request *req)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-http/http-parser.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - parser
    - data
    - size
    argTypes:
    - struct http_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 81
    functionName: http_parser_init
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.c
    functionUses: 5
    functionsReached:
    - i_zero
    linkageType: ''
    returnType: void
    signature: "void http_parser_init(struct http_parser *parser,\n\t\t\tconst unsigned
      char *data, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: http_parse_ows
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http_parse_ows(struct http_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_char_is_token
      Src: /src/dovecot/src/lib-http/http-parser.c:98,1
    - Dst: http_char_is_token
      Src: /src/dovecot/src/lib-http/http-parser.c:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct http_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 105
    functionName: http_parser_skip_token
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.c
    functionUses: 1
    functionsReached:
    - http_char_is_token
    linkageType: ''
    returnType: int
    signature: int http_parser_skip_token(struct http_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: http_parser_skip_token
      Src: /src/dovecot/src/lib-http/http-parser.c:112,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-http/http-parser.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - parser
    - token_r
    argTypes:
    - struct http_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 116
    functionName: http_parse_token
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.c
    functionUses: 4
    functionsReached:
    - http_parser_skip_token
    - t_strndup
    linkageType: ''
    returnType: int
    signature: int http_parse_token(struct http_parser *parser, const char **token_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_parse_token
      Src: /src/dovecot/src/lib-http/http-parser.c:133,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-parser.c:135,1
    - Dst: http_parse_ows
      Src: /src/dovecot/src/lib-http/http-parser.c:139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - parser
    - token_r
    argTypes:
    - struct http_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 118
    functionDepth: 4
    functionLinenumber: 118
    functionLinenumberEnd: 143
    functionName: http_parse_token_list_next
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.c
    functionUses: 1
    functionsReached:
    - http_parse_ows
    - http_parse_token
    linkageType: ''
    returnType: int
    signature: "int http_parse_token_list_next(struct http_parser *parser,\n\tconst
      char **token_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-http/http-parser.c:163,1
    - Dst: http_char_is_qdtext
      Src: /src/dovecot/src/lib-http/http-parser.c:169,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-http/http-parser.c:175,1
    - Dst: http_char_is_text
      Src: /src/dovecot/src/lib-http/http-parser.c:186,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-http/http-parser.c:188,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-http/http-parser.c:196,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - parser
    - str_r
    argTypes:
    - struct http_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 145
    functionDepth: 4
    functionLinenumber: 145
    functionLinenumberEnd: 198
    functionName: http_parse_quoted_string
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - http_char_is_text
    - http_char_is_qdtext
    - str_append_data
    linkageType: ''
    returnType: int
    signature: int http_parse_quoted_string(struct http_parser *parser, const char
      **str_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: http_parse_quoted_string
      Src: /src/dovecot/src/lib-http/http-parser.c:206,1
    - Dst: http_parse_token
      Src: /src/dovecot/src/lib-http/http-parser.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - word_r
    argTypes:
    - struct http_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 200
    functionDepth: 5
    functionLinenumber: 200
    functionLinenumberEnd: 208
    functionName: http_parse_token_or_qstring
    functionSourceFile: /src/dovecot/src/lib-http/http-parser.c
    functionUses: 3
    functionsReached:
    - http_parse_quoted_string
    - http_parse_token
    linkageType: ''
    returnType: int
    signature: "int http_parse_token_or_qstring(struct http_parser *parser,\n\tconst
      char **word_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: http_server_request_is_new
    functionSourceFile: /src/dovecot/src/lib-http/http-server-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool http_server_request_is_new(struct http_server_request *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - req
    - major
    - minor
    argTypes:
    - struct http_server_request*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 253
    functionName: http_server_request_version_equals
    functionSourceFile: /src/dovecot/src/lib-http/http-server-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool http_server_request_version_equals(struct http_server_request
      *req,\n\t\t\t\t   unsigned int major, unsigned int minor)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-http/http-server-private.h:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - conn
    - sreq
    argTypes:
    - struct http_server_connection*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 299
    functionName: http_server_connection_add_request
    functionSourceFile: /src/dovecot/src/lib-http/http-server-private.h
    functionUses: 1
    functionsReached:
    - DLLIST2_APPEND
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_add_request(struct http_server_connection
      *conn,\n\t\t\t\t   struct http_server_request *sreq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-http/http-server-private.h:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - conn
    - sreq
    argTypes:
    - struct http_server_connection*
    - struct http_server_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 307
    functionName: http_server_connection_remove_request
    functionSourceFile: /src/dovecot/src/lib-http/http-server-private.h
    functionUses: 3
    functionsReached:
    - DLLIST2_REMOVE
    linkageType: ''
    returnType: void
    signature: "void http_server_connection_remove_request(struct http_server_connection
      *conn,\n\t\t\t\t      struct http_server_request *sreq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - url
    - default_port
    argTypes:
    - struct http_url*
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: http_url_get_port_default
    functionSourceFile: /src/dovecot/src/lib-http/http-url.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: in_port_t
    signature: in_port_t http_url_get_port_default(const struct http_url *url, in_port_t
      default_port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: http_url_get_port_default
      Src: /src/dovecot/src/lib-http/http-url.h:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - url
    argTypes:
    - struct http_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: http_url_get_port
    functionSourceFile: /src/dovecot/src/lib-http/http-url.h
    functionUses: 2
    functionsReached:
    - http_url_get_port_default
    linkageType: ''
    returnType: in_port_t
    signature: in_port_t http_url_get_port(const struct http_url *url)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - client
    - ','
    - method
    - ','
    - host
    - ','
    - target
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 246
    functionName: http_client_request
    functionSourceFile: /src/dovecot/src/lib-http/http-client.h
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_client_request(client, method, host, target, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - client
    - ','
    - method
    - ','
    - target_url
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 260
    functionName: http_client_request_url
    functionSourceFile: /src/dovecot/src/lib-http/http-client.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_client_request_url(client, method, target_url, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - client
    - ','
    - method
    - ','
    - url_str
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 272
    functionName: http_client_request_url_str
    functionSourceFile: /src/dovecot/src/lib-http/http-client.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "http_client_request_url_str(client, method, url_str, \\\n\t\t\t\t
      \   callback, context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - client
    - ','
    - host
    - ','
    - port
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 289
    functionName: http_client_request_connect
    functionSourceFile: /src/dovecot/src/lib-http/http-client.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_client_request_connect(client, host, port, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - client
    - ','
    - ip
    - ','
    - port
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 303
    functionName: http_client_request_connect_ip
    functionSourceFile: /src/dovecot/src/lib-http/http-client.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_client_request_connect_ip(client, ip, port, callback, context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - req
    - ','
    - callback
    - ','
    - context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 467
    functionName: http_client_request_set_destroy_callback
    functionSourceFile: /src/dovecot/src/lib-http/http-client.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: http_client_request_set_destroy_callback(req, callback, context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:32,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - client
    - result
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct client*
    - enum client_auth_result
    - struct client_auth_reply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 37
    functionName: imap_urlauth_client_auth_result
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached:
    - client_destroy
    - client_send_raw
    linkageType: ''
    returnType: void
    signature: "void imap_urlauth_client_auth_result(struct client *client,\n\t\t\t\tenum
      client_auth_result result,\n\t\t\t\tconst struct client_auth_reply *reply ATTR_UNUSED,\n\t\t\t\tconst
      char *text ATTR_UNUSED)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:50,1
    - Dst: version_string_verify
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:53,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:55,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:58,1
    - Dst: i_stream_next_line
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:64,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:69,1
    - Dst: str_array_length
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:70,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:71,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:71,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:72,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:74,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:79,1
    - Dst: strcmp
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:79,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:80,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:82,1
    - Dst: net_getunixcred
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:87,1
    - Dst: e_error
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:89,1
    - Dst: client_destroy
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:93,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:98,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:102,1
    - Dst: str_append_c
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:104,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:105,1
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:107,1
    - Dst: base64_encode
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:108,1
    - Dst: str_data
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:108,1
    - Dst: str_len
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:109,1
    - Dst: client_auth_begin_private
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:111,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:112,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 39
    functionDepth: 8
    functionLinenumber: 39
    functionLinenumberEnd: 113
    functionName: imap_urlauth_client_handle_input
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - str_data
    - str_to_pid
    - t_strsplit_tabescaped
    - client_destroy
    - i_stream_next_line
    - str_array_length
    - str_append
    - str_len
    - e_error
    - base64_encode
    - client_auth_begin_private
    - version_string_verify
    - net_getunixcred
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_client_handle_input(struct client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_read
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:118,1
    - Dst: client_ref
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:121,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:122,1
    - Dst: auth_client_is_connected
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:123,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:126,1
    - Dst: imap_urlauth_client_handle_input
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:129,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:131,1
    - Dst: client_unref
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 116
    functionDepth: 9
    functionLinenumber: 116
    functionLinenumberEnd: 133
    functionName: imap_urlauth_client_input
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached:
    - client_read
    - imap_urlauth_client_handle_input
    - o_stream_uncork
    - o_stream_cork
    - client_ref
    - auth_client_is_connected
    - client_unref
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_client_input(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pool
    argTypes:
    - pool_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 141
    functionName: imap_urlauth_client_alloc
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached:
    - p_new
    linkageType: ''
    returnType: struct client
    signature: struct client *imap_urlauth_client_alloc(pool_t pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: imap_urlauth_client_create
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int imap_urlauth_client_create(struct client *client ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:152,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:153,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:154,1
    - Dst: str_printfa
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:155,1
    - Dst: str_append
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:156,1
    - Dst: client_send_raw
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:158,1
    - Dst: str_c
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:158,1
    - Dst: i_assert
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:161,1
    - Dst: io_add_istream
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 148
    functionDepth: 4
    functionLinenumber: 148
    functionLinenumberEnd: 163
    functionName: imap_urlauth_client_notify_auth_ready
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - io_add_istream
    - client_send_raw
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_client_notify_auth_ready(struct client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: imap_urlauth_login_preinit
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_login_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: imap_urlauth_login_init
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_login_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clients_destroy_all
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: imap_urlauth_login_deinit
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 0
    functionsReached:
    - clients_destroy_all
    linkageType: ''
    returnType: void
    signature: void imap_urlauth_login_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_binary_run
      Src: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 7
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: main
    functionSourceFile: /src/dovecot/src/imap-urlauth-login/imap-urlauth-login.c
    functionUses: 25
    functionsReached:
    - login_binary_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:173,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:175,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:178,1
    - Dst: io_wait_timer_get_usecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:181,1
    - Dst: file_lock_wait_get_total_usecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - dict
    - query
    argTypes:
    - struct client_dict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 168
    functionDepth: 4
    functionLinenumber: 168
    functionLinenumberEnd: 184
    functionName: client_dict_cmd_init
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - file_lock_wait_get_total_usecs
    - io_loop_time_refresh
    - i_new
    - io_wait_timer_get_usecs
    linkageType: ''
    returnType: struct client_dict_cmd
    signature: 'struct client_dict_cmd *

      client_dict_cmd_init(struct client_dict *dict, const char *query)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:191,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:198,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:201,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:202,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:203,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_dict_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 186
    functionDepth: 11
    functionLinenumber: 186
    functionLinenumberEnd: 204
    functionName: client_dict_cmd_get_log_query
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_assert
    - t_strdup_printf
    - t_strdup_until
    - t_strcut
    linkageType: ''
    returnType: char
    signature: char *client_dict_cmd_get_log_query(struct client_dict_cmd *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_dict_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 210
    functionName: client_dict_cmd_ref
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void client_dict_cmd_ref(struct client_dict_cmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:214,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:218,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:220,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_dict_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 223
    functionName: client_dict_cmd_unref
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: bool
    signature: bool client_dict_cmd_unref(struct client_dict_cmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:240,1
    - Dst: struct client_dict_cmd*::callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - cmd
    - args
    argTypes:
    - struct client_dict_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 225
    functionDepth: 6
    functionLinenumber: 225
    functionLinenumberEnd: 244
    functionName: dict_cmd_callback_line
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - struct client_dict_cmd*::callback
    - timeout_remove
    linkageType: ''
    returnType: bool
    signature: bool dict_cmd_callback_line(struct client_dict_cmd *cmd, const char
      *const *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:251,1
    - Dst: struct client_dict_cmd*::callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - cmd
    - error
    - disconnected
    argTypes:
    - struct client_dict_cmd*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 246
    functionDepth: 6
    functionLinenumber: 246
    functionLinenumberEnd: 257
    functionName: dict_cmd_callback_error
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - struct client_dict_cmd*::callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void dict_cmd_callback_error(struct client_dict_cmd *cmd, const char
      *error,\n\t\t\tbool disconnected)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_wait_timer_get_usecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:269,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:272,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:274,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:280,1
    - Dst: client_dict_reconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:282,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:282,1
    - Dst: connection_input_timeout_reason
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:285,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:286,1
    - Dst: client_dict_cmd_get_log_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:287,1
    - Dst: dict_wait_warnings
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_dict_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 259
    functionDepth: 12
    functionLinenumber: 259
    functionLinenumberEnd: 289
    functionName: client_dict_input_timeout
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - dict_wait_warnings
    - timeout_add
    - t_strdup_printf
    - array_count
    - client_dict_reconnect
    - client_dict_cmd_get_log_query
    - connection_input_timeout_reason
    - io_wait_timer_get_usecs
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void client_dict_input_timeout(struct client_dict_cmd *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:294,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:297,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dict
    - query
    argTypes:
    - struct client_dict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 302
    functionName: client_dict_cmd_query_send
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - strlen
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: int client_dict_cmd_query_send(struct client_dict *dict, const char
      *query)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:317,1
    - Dst: client_dict_connect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:319,1
    - Dst: client_dict_cmd_query_send
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:323,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:325,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:326,1
    - Dst: client_dict_reconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:331,1
    - Dst: client_dict_cmd_query_send
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:333,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:334,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:335,1
    - Dst: client_dict_cmd_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:343,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:346,1
    - Dst: dict_cmd_callback_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:348,1
    - Dst: client_dict_cmd_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:349,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:354,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:357,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:360,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 3
    argNames:
    - dict
    - _cmd
    - error_r
    argTypes:
    - struct client_dict*
    - struct client_dict_cmd**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 304
    functionDepth: 11
    functionLinenumber: 304
    functionLinenumberEnd: 363
    functionName: client_dict_cmd_send
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - array_push_back
    - o_stream_get_error
    - client_dict_cmd_unref
    - dict_cmd_callback_error
    - timeout_add
    - t_strdup_printf
    - client_dict_reconnect
    - client_dict_connect
    - timeout_remove
    - client_dict_cmd_query_send
    linkageType: ''
    returnType: bool
    signature: "bool client_dict_cmd_send(struct client_dict *dict, struct client_dict_cmd
      **_cmd,\n\t\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:369,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:371,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:374,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - query
    argTypes:
    - struct client_dict_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 365
    functionDepth: 5
    functionLinenumber: 365
    functionLinenumberEnd: 379
    functionName: client_dict_send_transaction_query
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - str_append
    - str_printfa
    - str_tabescape
    - str_len
    linkageType: ''
    returnType: void
    signature: "void client_dict_send_transaction_query(struct client_dict_transaction_context
      *ctx,\n\t\t\t\t   const char *query)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct client_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: client_dict_is_finished
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - array_count
    linkageType: ''
    returnType: bool
    signature: bool client_dict_is_finished(struct client_dict *dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_dict_is_finished
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:388,1
    - Dst: client_dict_disconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:389,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct client_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 386
    functionDepth: 6
    functionLinenumber: 386
    functionLinenumberEnd: 392
    functionName: client_dict_timeout
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_disconnect
    - timeout_remove
    - client_dict_is_finished
    linkageType: ''
    returnType: void
    signature: void client_dict_timeout(struct client_dict *dict)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:398,1
    - Dst: client_dict_is_finished
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:399,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct client_dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 394
    functionDepth: 7
    functionLinenumber: 394
    functionLinenumberEnd: 403
    functionName: client_dict_add_timeout
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - timeout_add
    - timeout_reset
    - client_dict_is_finished
    linkageType: ''
    returnType: void
    signature: void client_dict_add_timeout(struct client_dict *dict)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:412,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:414,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:415,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:419,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:427,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - conn
    - line
    argTypes:
    - struct dict_client_connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 431
    functionName: dict_conn_assign_next_async_id
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_to_uint
    - array_get
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dict_conn_assign_next_async_id(struct dict_client_connection *conn,\n\t\t\t
      \      const char *line)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:440,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:442,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:443,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:448,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - conn
    - async_arg
    - line
    - idx_r
    argTypes:
    - struct dict_client_connection*
    - char*
    - char*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 458
    functionName: dict_conn_find_async_id
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - str_to_uint
    - array_get
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int dict_conn_find_async_id(struct dict_client_connection *conn,\n\t\t\t\t
      \  const char *async_arg,\n\t\t\t\t   const char *line, unsigned int *idx_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dict_conn_assign_next_async_id
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:471,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:473,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:475,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:480,1
    - Dst: dict_conn_find_async_id
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:482,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:488,1
    - Dst: client_dict_cmd_ref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:490,1
    - Dst: timeout_reset
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:492,1
    - Dst: dict_cmd_callback_line
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:493,1
    - Dst: client_dict_cmd_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:494,1
    - Dst: client_dict_cmd_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:502,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:503,1
    - Dst: client_dict_add_timeout
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:505,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 460
    functionDepth: 8
    functionLinenumber: 460
    functionLinenumberEnd: 507
    functionName: dict_conn_input_line
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - dict_cmd_callback_line
    - array_delete
    - t_strsplit_tabescaped
    - client_dict_cmd_unref
    - array_get
    - timeout_reset
    - dict_conn_assign_next_async_id
    - e_error
    - dict_conn_find_async_id
    - client_dict_cmd_ref
    - client_dict_add_timeout
    - i_assert
    linkageType: ''
    returnType: int
    signature: int dict_conn_input_line(struct connection *_conn, const char *line)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:521,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:524,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:527,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:530,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:531,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:536,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:540,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:541,1
    - Dst: client_dict_add_timeout
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:542,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - dict
    - error_r
    argTypes:
    - struct client_dict*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 509
    functionDepth: 11
    functionLinenumber: 509
    functionLinenumberEnd: 544
    functionName: client_dict_connect
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 1
    functionsReached:
    - client_dict_add_timeout
    - connection_client_connect
    - t_strdup_printf
    - str_tabescape
    - i_strdup
    - eacces_error_get
    - o_stream_nsend_str
    - i_free
    linkageType: ''
    returnType: int
    signature: int client_dict_connect(struct client_dict *dict, const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:553,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:553,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:554,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:555,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:557,1
    - Dst: dict_cmd_callback_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:558,1
    - Dst: client_dict_cmd_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - dict
    - reason
    argTypes:
    - struct client_dict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 546
    functionDepth: 7
    functionLinenumber: 546
    functionLinenumberEnd: 561
    functionName: client_dict_abort_commands
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - dict_cmd_callback_error
    - array_count
    - t_array_init
    - array_clear
    - client_dict_cmd_unref
    - array_append_array
    linkageType: ''
    returnType: void
    signature: void client_dict_abort_commands(struct client_dict *dict, const char
      *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_dict_abort_commands
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:565,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:567,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dict
    - reason
    argTypes:
    - struct client_dict*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 563
    functionDepth: 8
    functionLinenumber: 563
    functionLinenumberEnd: 569
    functionName: client_dict_disconnect
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 1
    functionsReached:
    - timeout_remove
    - connection_disconnect
    - client_dict_abort_commands
    linkageType: ''
    returnType: void
    signature: void client_dict_disconnect(struct client_dict *dict, const char *reason)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:579,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:579,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:580,1
    - Dst: array_idx_elem
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:581,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:591,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:593,1
    - Dst: array_delete
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:594,1
    - Dst: client_dict_disconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:597,1
    - Dst: client_dict_connect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:598,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:599,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:601,1
    - Dst: dict_cmd_callback_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:602,1
    - Dst: client_dict_cmd_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:603,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:607,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:609,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:612,1
    - Dst: dict_cmd_callback_error
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:618,1
    - Dst: client_dict_cmd_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:619,1
    - Dst: client_dict_cmd_send
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:620,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 3
    argNames:
    - dict
    - reason
    - error_r
    argTypes:
    - struct client_dict*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 571
    functionDepth: 12
    functionLinenumber: 571
    functionLinenumberEnd: 624
    functionName: client_dict_reconnect
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 2
    functionsReached:
    - array_delete
    - client_dict_cmd_send
    - array_push_back
    - array_foreach_elem
    - dict_cmd_callback_error
    - t_strdup_printf
    - client_dict_disconnect
    - e_warning
    - array_count
    - array_idx_elem
    - t_array_init
    - client_dict_connect
    - client_dict_cmd_unref
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: "int client_dict_reconnect(struct client_dict *dict, const char *reason,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_dict_reconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:632,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:632,1
    - Dst: connection_disconnect_reason
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:635,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 626
    functionDepth: 13
    functionLinenumber: 626
    functionLinenumberEnd: 637
    functionName: dict_conn_destroy
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - array_count
    - client_dict_reconnect
    - t_strdup_printf
    - connection_disconnect_reason
    linkageType: ''
    returnType: void
    signature: void dict_conn_destroy(struct connection *_conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:657,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:662,1
    - Dst: master_service_get_service_settings
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:666,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:673,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:677,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:682,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:689,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:692,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:694,1
    - Dst: io_wait_timer_add
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:695,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 4
    argNames:
    - dict_driver
    - event
    - dict_r
    - error_r
    argTypes:
    - struct dict*
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 651
    functionDepth: 8
    functionLinenumber: 651
    functionLinenumberEnd: 700
    functionName: client_dict_init
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_array_init
    - connection_list_init
    - t_strconcat
    - connection_init_client_unix
    - io_loop_set_current
    - settings_free
    - io_loop_create
    - i_new
    - io_wait_timer_add
    - settings_get
    - master_service_get_service_settings
    linkageType: ''
    returnType: int
    signature: "int client_dict_init(const struct dict *dict_driver, struct event
      *event,\n\t\t struct dict **dict_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_dict_disconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:707,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:708,1
    - Dst: io_wait_timer_remove
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:709,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:711,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:712,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:712,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:714,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:715,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:716,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:718,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:719,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:720,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:721,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 702
    functionDepth: 12
    functionLinenumber: 702
    functionLinenumberEnd: 725
    functionName: client_dict_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_free
    - io_loop_set_current
    - io_loop_destroy
    - settings_free
    - client_dict_disconnect
    - array_count
    - array_free
    - io_wait_timer_remove
    - i_assert
    - connection_deinit
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void client_dict_deinit(struct dict *_dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:731,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:734,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:734,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:736,1
    - Dst: dict_switch_ioloop
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:737,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:738,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:739,1
    - Dst: io_loop_set_current
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:741,1
    - Dst: dict_switch_ioloop
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:744,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:745,1
    - Dst: io_loop_is_empty
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:745,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 727
    functionDepth: 3
    functionLinenumber: 727
    functionLinenumberEnd: 746
    functionName: client_dict_wait
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - io_loop_is_empty
    - dict_switch_ioloop
    - io_loop_set_current
    - array_count
    - i_assert
    - io_loop_run
    linkageType: ''
    returnType: void
    signature: void client_dict_wait(struct dict *_dict)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_wait_timer_get_usecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:753,1
    - Dst: io_wait_timer_move
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:754,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:756,1
    - Dst: array_foreach_elem
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:759,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:762,1
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:766,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:767,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 748
    functionDepth: 8
    functionLinenumber: 748
    functionLinenumberEnd: 768
    functionName: client_dict_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - array_foreach_elem
    - connection_switch_ioloop
    - io_wait_timer_move
    - array_count
    - io_loop_move_timeout
    - io_wait_timer_get_usecs
    linkageType: ''
    returnType: bool
    signature: bool client_dict_switch_ioloop(struct dict *_dict)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_wait_timer_get_usecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:774,1
    - Dst: file_lock_wait_get_total_usecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:777,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - struct client_dict_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 770
    functionDepth: 11
    functionLinenumber: 770
    functionLinenumberEnd: 785
    functionName: dict_wait_warnings
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 1
    functionsReached:
    - t_strdup_printf
    - file_lock_wait_get_total_usecs
    - io_wait_timer_get_usecs
    linkageType: ''
    returnType: char
    signature: char *dict_wait_warnings(const struct client_dict_cmd *cmd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:791,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:795,1
    - Dst: dict_wait_warnings
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:796,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:799,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:801,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:806,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:807,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:811,1
    - Dst: str_to_time
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:812,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:813,1
    - Dst: str_to_time
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:814,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:815,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:820,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:821,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:822,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:828,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:829,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 3
    argNames:
    - cmd
    - msecs
    - extra_args
    argTypes:
    - struct client_dict_cmd*
    - long long
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 787
    functionDepth: 12
    functionLinenumber: 787
    functionLinenumberEnd: 830
    functionName: dict_warnings_sec
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - timeval_diff_msecs
    - str_printfa
    - str_append_c
    - dict_wait_warnings
    - str_array_length
    - str_to_time
    - str_to_uint
    linkageType: ''
    returnType: char
    signature: "char *\ndict_warnings_sec(const struct client_dict_cmd *cmd, long
      long msecs,\n\t\t  const char *const *extra_args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:844,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:855,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:864,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:869,1
    - Dst: client_dict_cmd_get_log_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:871,1
    - Dst: client_dict_disconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:876,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:881,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:884,1
    - Dst: dict_warnings_sec
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:885,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:888,1
    - Dst: dict_warnings_sec
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:889,1
    - Dst: client_dict_cmd_get_log_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:890,1
    - Dst: dict_pre_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:893,1
    - Dst: struct client_dict_cmd*::api_callback::lookup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:894,1
    - Dst: dict_post_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:895,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 6
    argNames:
    - cmd
    - reply
    - value
    - extra_args
    - error
    - disconnected ATTR_UNUSED
    argTypes:
    - struct client_dict_cmd*
    - enum dict_protocol_reply
    - char*
    - char**
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 832
    functionDepth: 13
    functionLinenumber: 832
    functionLinenumberEnd: 896
    functionName: client_dict_lookup_async_callback
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - timeval_diff_msecs
    - t_strsplit_tabescaped
    - dict_pre_api_callback
    - t_strdup_printf
    - client_dict_disconnect
    - e_warning
    - client_dict_cmd_get_log_query
    - struct client_dict_cmd*::api_callback::lookup
    - dict_post_api_callback
    - dict_warnings_sec
    linkageType: ''
    returnType: void
    signature: "void client_dict_lookup_async_callback(struct client_dict_cmd *cmd,\n\t\t\t\t
      \ enum dict_protocol_reply reply,\n\t\t\t\t  const char *value,\n\t\t\t\t  const
      char *const *extra_args,\n\t\t\t\t  const char *error,\n\t\t\t\t  bool disconnected
      ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:907,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:908,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:909,1
    - Dst: client_dict_cmd_init
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:910,1
    - Dst: client_dict_cmd_send
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - _dict
    - set
    - key
    - callback
    - context
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - dict_lookup_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 898
    functionDepth: 12
    functionLinenumber: 898
    functionLinenumberEnd: 917
    functionName: client_dict_lookup_async
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_cmd_send
    - client_dict_cmd_init
    - t_strdup_printf
    - str_tabescape
    linkageType: ''
    returnType: void
    signature: "void client_dict_lookup_async(struct dict *_dict, const struct dict_op_settings
      *set,\n\t\t\t const char *key, dict_lookup_callback_t *callback,\n\t\t\t void
      *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:930,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:935,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - result
    - lookup
    argTypes:
    - struct dict_lookup_result*
    - struct client_dict_sync_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 925
    functionDepth: 2
    functionLinenumber: 925
    functionLinenumberEnd: 937
    functionName: client_dict_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - p_strarray_dup
    linkageType: ''
    returnType: void
    signature: "void client_dict_lookup_callback(const struct dict_lookup_result *result,\n\t\t\t\t\tstruct
      client_dict_sync_lookup *lookup)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:947,1
    - Dst: dict_lookup_async
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:950,1
    - Dst: client_dict_wait
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:952,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:956,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:957,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:960,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:963,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:964,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:967,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 6
    argNames:
    - _dict
    - set
    - pool
    - key
    - values_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 939
    functionDepth: 4
    functionLinenumber: 939
    functionLinenumberEnd: 968
    functionName: client_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - p_strarray_dup
    - i_unreached
    - dict_lookup_async
    - client_dict_wait
    - t_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: int
    signature: "int client_dict_lookup(struct dict *_dict,\n\t\t\t      const struct
      dict_op_settings *set,\n\t\t\t      pool_t pool, const char *key,\n\t\t\t      const
      char *const **values_r,\n\t\t\t      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:972,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:975,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct client_dict_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 977
    functionName: client_dict_iterate_unref
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void client_dict_iterate_unref(struct client_dict_iterate_context *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dict_post_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:989,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:993,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:997,1
    - Dst: dict_warnings_sec
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:998,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:999,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1003,1
    - Dst: dict_warnings_sec
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1004,1
    - Dst: client_dict_cmd_get_log_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1005,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1010,1
    - Dst: dict_pre_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1016,1
    - Dst: struct client_dict_iterate_context*::ctx::async_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1017,1
    - Dst: dict_post_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1018,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - cmd
    - extra_args
    argTypes:
    - struct client_dict_iterate_context*
    - struct client_dict_cmd*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 979
    functionDepth: 13
    functionLinenumber: 979
    functionLinenumberEnd: 1020
    functionName: client_dict_iter_api_callback
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - dict_pre_api_callback
    - e_warning
    - io_loop_stop
    - client_dict_cmd_get_log_query
    - struct client_dict_iterate_context*::ctx::async_callback
    - i_strdup_printf
    - dict_post_api_callback
    - i_free
    - dict_warnings_sec
    linkageType: ''
    returnType: void
    signature: "void client_dict_iter_api_callback(struct client_dict_iterate_context
      *ctx,\n\t\t\t      struct client_dict_cmd *cmd,\n\t\t\t      const char *const
      *extra_args)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1043,1
    - Dst: client_dict_iter_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1045,1
    - Dst: client_dict_iterate_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1046,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1055,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1062,1
    - Dst: client_dict_disconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1065,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1071,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1072,1
    - Dst: client_dict_iter_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1074,1
    - Dst: client_dict_iterate_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1075,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1085,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1086,1
    - Dst: p_strarray_dup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1087,1
    - Dst: client_dict_iter_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1089,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 6
    argNames:
    - cmd
    - reply
    - value
    - extra_args
    - error
    - disconnected ATTR_UNUSED
    argTypes:
    - struct client_dict_cmd*
    - enum dict_protocol_reply
    - char*
    - char**
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1022
    functionDepth: 14
    functionLinenumber: 1022
    functionLinenumberEnd: 1090
    functionName: client_dict_iter_async_callback
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_iter_api_callback
    - p_strdup
    - array_append_space
    - p_strarray_dup
    - t_strdup_printf
    - client_dict_disconnect
    - i_strdup
    - i_assert
    - client_dict_iterate_unref
    linkageType: ''
    returnType: void
    signature: "void client_dict_iter_async_callback(struct client_dict_cmd *cmd,\n\t\t\t\tenum
      dict_protocol_reply reply,\n\t\t\t\tconst char *value,\n\t\t\t\tconst char *const
      *extra_args,\n\t\t\t\tconst char *error,\n\t\t\t\tbool disconnected ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1099,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1101,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1103,1
    - Dst: i_array_init
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - _dict
    - ATTR_UNUSED
    - path
    - flags
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - enum dict_iterate_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1092
    functionDepth: 3
    functionLinenumber: 1092
    functionLinenumberEnd: 1107
    functionName: client_dict_iterate_init
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - pool_alloconly_create
    - i_array_init
    - i_new
    linkageType: ''
    returnType: struct dict_iterate_context
    signature: "struct dict_iterate_context *\nclient_dict_iterate_init(struct dict
      *_dict,\n\t\t\t const struct dict_op_settings *set ATTR_UNUSED,\n\t\t\t const
      char *path, enum dict_iterate_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1115,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1119,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1121,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1122,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1123,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1124,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1125,1
    - Dst: client_dict_cmd_init
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1127,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1127,1
    - Dst: client_dict_cmd_send
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct client_dict_iterate_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1109
    functionDepth: 12
    functionLinenumber: 1109
    functionLinenumberEnd: 1134
    functionName: client_dict_iterate_cmd_send
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - client_dict_cmd_send
    - client_dict_cmd_init
    - str_append_tabescaped
    linkageType: ''
    returnType: void
    signature: void client_dict_iterate_cmd_send(struct client_dict_iterate_context
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1149,1
    - Dst: client_dict_iterate_cmd_send
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1161,1
    - Dst: client_dict_iterate
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1163,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1167,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1168,1
    - Dst: client_dict_wait
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1171,1
    - Dst: client_dict_iterate
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - _ctx
    - key_r
    - values_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1136
    functionDepth: 13
    functionLinenumber: 1136
    functionLinenumberEnd: 1175
    functionName: client_dict_iterate
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 1
    functionsReached:
    - array_get
    - client_dict_iterate_cmd_send
    - client_dict_iterate
    - array_clear
    - client_dict_wait
    - p_clear
    linkageType: ''
    returnType: bool
    signature: "bool client_dict_iterate(struct dict_iterate_context *_ctx,\n\t\t\t\tconst
      char **key_r, const char *const **values_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1185,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1188,1
    - Dst: array_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1189,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1190,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1191,1
    - Dst: client_dict_iterate_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1192,1
    - Dst: client_dict_add_timeout
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - _ctx
    - error_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1177
    functionDepth: 8
    functionLinenumber: 1177
    functionLinenumberEnd: 1196
    functionName: client_dict_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_add_timeout
    - i_free
    - pool_unref
    - t_strdup
    - i_assert
    - array_free
    - client_dict_iterate_unref
    linkageType: ''
    returnType: int
    signature: "int client_dict_iterate_deinit(struct dict_iterate_context *_ctx,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1204,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1207,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1198
    functionDepth: 3
    functionLinenumber: 1198
    functionLinenumberEnd: 1212
    functionName: client_dict_transaction_init
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - DLLIST_PREPEND
    - str_new
    - i_new
    linkageType: ''
    returnType: struct dict_transaction_context
    signature: 'struct dict_transaction_context *

      client_dict_transaction_init(struct dict *_dict)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1220,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1221,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct client_dict_transaction_context**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1214
    functionDepth: 3
    functionLinenumber: 1214
    functionLinenumberEnd: 1223
    functionName: client_dict_transaction_free
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - i_free
    - str_free
    linkageType: ''
    returnType: void
    signature: void client_dict_transaction_free(struct client_dict_transaction_context
      **_ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1237,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1258,1
    - Dst: t_str_tabunescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1259,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1266,1
    - Dst: client_dict_disconnect
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1273,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1277,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1280,1
    - Dst: dict_warnings_sec
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1281,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1284,1
    - Dst: dict_warnings_sec
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1286,1
    - Dst: client_dict_cmd_get_log_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1287,1
    - Dst: client_dict_transaction_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1289,1
    - Dst: dict_pre_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1291,1
    - Dst: struct client_dict_cmd*::api_callback::commit
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1292,1
    - Dst: dict_post_api_callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1293,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 6
    argNames:
    - cmd
    - reply
    - value
    - extra_args
    - error
    - disconnected
    argTypes:
    - struct client_dict_cmd*
    - enum dict_protocol_reply
    - char*
    - char**
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1225
    functionDepth: 13
    functionLinenumber: 1225
    functionLinenumberEnd: 1294
    functionName: client_dict_transaction_commit_callback
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - t_str_tabunescape
    - dict_pre_api_callback
    - dict_post_api_callback
    - t_strdup_printf
    - client_dict_disconnect
    - e_warning
    - client_dict_transaction_free
    - client_dict_cmd_get_log_query
    - struct client_dict_cmd*::api_callback::commit
    - i_assert
    - dict_warnings_sec
    linkageType: ''
    returnType: void
    signature: "void client_dict_transaction_commit_callback(struct client_dict_cmd
      *cmd,\n\t\t\t\t\tenum dict_protocol_reply reply,\n\t\t\t\t\tconst char *value,\n\t\t\t\t\tconst
      char *const *extra_args,\n\t\t\t\t\tconst char *error, bool disconnected)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1308,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1310,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1311,1
    - Dst: client_dict_cmd_init
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1313,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1313,1
    - Dst: client_dict_cmd_send
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1322,1
    - Dst: client_dict_wait
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1324,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1331,1
    - Dst: client_dict_transaction_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1332,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1338,1
    - Dst: client_dict_transaction_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1339,1
    - Dst: client_dict_add_timeout
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1342,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - _ctx
    - async
    - callback
    - context
    argTypes:
    - struct dict_transaction_context*
    - bool
    - dict_transaction_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1297
    functionDepth: 12
    functionLinenumber: 1297
    functionLinenumberEnd: 1343
    functionName: client_dict_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - str_printfa
    - client_dict_cmd_send
    - str_len
    - client_dict_cmd_init
    - client_dict_transaction_free
    - callback
    - client_dict_wait
    - client_dict_add_timeout
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: "void client_dict_transaction_commit(struct dict_transaction_context
      *_ctx,\n\t\t\t       bool async,\n\t\t\t       dict_transaction_commit_callback_t
      *callback,\n\t\t\t       void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1352,1
    - Dst: client_dict_transaction_free
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1353,1
    - Dst: client_dict_add_timeout
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dict_transaction_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1345
    functionDepth: 8
    functionLinenumber: 1345
    functionLinenumberEnd: 1355
    functionName: client_dict_transaction_rollback
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_transaction_free
    - client_dict_add_timeout
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void client_dict_transaction_rollback(struct dict_transaction_context
      *_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1364,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1366,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1367,1
    - Dst: client_dict_send_transaction_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - _ctx
    - key
    - value
    argTypes:
    - struct dict_transaction_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1357
    functionDepth: 11
    functionLinenumber: 1357
    functionLinenumberEnd: 1369
    functionName: client_dict_set
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_send_transaction_query
    - t_strdup_printf
    - str_tabescape
    linkageType: ''
    returnType: void
    signature: "void client_dict_set(struct dict_transaction_context *_ctx,\n\t\t\t
      \   const char *key, const char *value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1378,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1380,1
    - Dst: client_dict_send_transaction_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _ctx
    - key
    argTypes:
    - struct dict_transaction_context*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1371
    functionDepth: 11
    functionLinenumber: 1371
    functionLinenumberEnd: 1382
    functionName: client_dict_unset
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_send_transaction_query
    - t_strdup_printf
    - str_tabescape
    linkageType: ''
    returnType: void
    signature: "void client_dict_unset(struct dict_transaction_context *_ctx,\n\t\t\t
      \     const char *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1394,1
    - Dst: str_tabescape
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1396,1
    - Dst: client_dict_send_transaction_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - _ctx
    - key
    - diff
    argTypes:
    - struct dict_transaction_context*
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1384
    functionDepth: 11
    functionLinenumber: 1384
    functionLinenumberEnd: 1398
    functionName: client_dict_atomic_inc
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_send_transaction_query
    - t_strdup_printf
    - str_tabescape
    linkageType: ''
    returnType: void
    signature: "void client_dict_atomic_inc(struct dict_transaction_context *_ctx,\n\t\t\t\t
      \  const char *key, long long diff)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1407,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1409,1
    - Dst: client_dict_send_transaction_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _ctx
    - ts
    argTypes:
    - struct dict_transaction_context*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1400
    functionDepth: 11
    functionLinenumber: 1400
    functionLinenumberEnd: 1412
    functionName: client_dict_set_timestamp
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - dec2str
    - client_dict_send_transaction_query
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void client_dict_set_timestamp(struct dict_transaction_context *_ctx,\n\t\t\t\t
      \     const struct timespec *ts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1418,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1421,1
    - Dst: client_dict_send_transaction_query
      Src: /src/dovecot/src/lib-dict-extra/dict-client.c:1426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - _ctx
    - hide_log_values
    argTypes:
    - struct dict_transaction_context*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1414
    functionDepth: 11
    functionLinenumber: 1414
    functionLinenumberEnd: 1427
    functionName: client_dict_set_hide_log_values
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-client.c
    functionUses: 0
    functionsReached:
    - client_dict_send_transaction_query
    - container_of
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void client_dict_set_hide_log_values(struct dict_transaction_context
      *_ctx,\n\t\t\t\t\t    bool hide_log_values)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-dict-extra/dict-register.c:12,1
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-dict-extra/dict-register.c:13,1
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-dict-extra/dict-register.c:14,1
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-dict-extra/dict-register.c:15,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 8
    functionDepth: 2
    functionLinenumber: 8
    functionLinenumberEnd: 16
    functionName: dict_drivers_register_builtin
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-register.c
    functionUses: 6
    functionsReached:
    - dict_driver_register
    linkageType: ''
    returnType: void
    signature: void dict_drivers_register_builtin(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dict_driver_unregister
      Src: /src/dovecot/src/lib-dict-extra/dict-register.c:22,1
    - Dst: dict_driver_unregister
      Src: /src/dovecot/src/lib-dict-extra/dict-register.c:23,1
    - Dst: dict_driver_unregister
      Src: /src/dovecot/src/lib-dict-extra/dict-register.c:24,1
    - Dst: dict_driver_unregister
      Src: /src/dovecot/src/lib-dict-extra/dict-register.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 26
    functionName: dict_drivers_unregister_builtin
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-register.c
    functionUses: 4
    functionsReached:
    - dict_driver_unregister
    linkageType: ''
    returnType: void
    signature: void dict_drivers_unregister_builtin(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:35,1
    - Dst: fs_init_auto
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:36,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - dict_driver
    - event
    - dict_r
    - error_r
    argTypes:
    - struct dict*
    - struct event*
    - struct dict**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 27
    functionDepth: 7
    functionLinenumber: 27
    functionLinenumberEnd: 45
    functionName: fs_dict_init
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - i_zero
    - i_new
    - fs_init_auto
    linkageType: ''
    returnType: int
    signature: "int fs_dict_init(const struct dict *dict_driver, struct event *event,\n\t
      \    struct dict **dict_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fs_deinit
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:51,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: fs_dict_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - i_free
    - fs_deinit
    linkageType: ''
    returnType: void
    signature: void fs_dict_deinit(struct dict *_dict)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:62,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:68,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:68,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:69,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:72,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:74,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:79,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - key
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 81
    functionName: fs_dict_escape_key
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - strlen
    - str_append
    - str_append_data
    - strstr
    linkageType: ''
    returnType: char
    signature: char *fs_dict_escape_key(const char *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_dict_escape_key
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:85,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:86,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:88,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:89,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - username
    - key
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 11
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: fs_dict_get_full_key
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - str_begins
    - t_strdup_printf
    - fs_dict_escape_key
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char *fs_dict_get_full_key(const char *username, const char *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fs_dict_get_full_key
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:107,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:108,1
    - Dst: fs_read_stream
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:109,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:110,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:112,1
    - Dst: i_stream_get_data_size
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:112,1
    - Dst: i_stream_read_more
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:113,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:114,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:115,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:117,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:120,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:121,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:128,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:129,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:133,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 6
    argNames:
    - _dict
    - set
    - pool
    - key
    - values_r
    - error_r
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - pool_t
    - char*
    - char***
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 94
    functionDepth: 12
    functionLinenumber: 94
    functionLinenumberEnd: 136
    functionName: fs_dict_lookup
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 2
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - i_assert
    - i_stream_get_data_size
    - p_new
    - str_c
    - str_append_data
    - t_strdup_printf
    - fs_dict_get_full_key
    - i_stream_skip
    - i_stream_get_error
    - i_stream_unref
    - fs_read_stream
    - i_stream_read
    - str_new
    - i_stream_read_more
    linkageType: ''
    returnType: int
    signature: "int fs_dict_lookup(struct dict *_dict, const struct dict_op_settings
      *set,\n\t\t\t  pool_t pool, const char *key,\n\t\t\t  const char *const **values_r,
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:145,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:147,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:149,1
    - Dst: fs_iter_init
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:150,1
    - Dst: fs_dict_get_full_key
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:151,1
    - Dst: i_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - _dict
    - set
    - path
    - flags
    argTypes:
    - struct dict*
    - struct dict_op_settings*
    - char*
    - enum dict_iterate_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 138
    functionDepth: 12
    functionLinenumber: 138
    functionLinenumberEnd: 165
    functionName: fs_dict_iterate_init
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - fs_iter_init
    - fs_dict_get_full_key
    - i_strdup
    - i_new
    - i_strdup_printf
    linkageType: ''
    returnType: struct dict_iterate_context
    signature: "struct dict_iterate_context *\nfs_dict_iterate_init(struct dict *_dict,
      const struct dict_op_settings *set,\n\t\t     const char *path, enum dict_iterate_flags
      flags)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fs_iter_next
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:178,1
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:184,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:187,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:195,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:196,1
    - Dst: fs_dict_lookup
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:204,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:208,1
    - Dst: fs_dict_iterate
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:212,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - ctx
    - key_r
    - values_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 167
    functionDepth: 8
    functionLinenumber: 167
    functionLinenumberEnd: 217
    functionName: fs_dict_iterate
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 1
    functionsReached:
    - fs_iter_next
    - fs_iter_deinit
    - fs_dict_lookup
    - i_strdup
    - p_strconcat
    - fs_dict_iterate
    - p_clear
    linkageType: ''
    returnType: bool
    signature: "bool fs_dict_iterate(struct dict_iterate_context *ctx,\n\t\t\t    const
      char **key_r, const char *const **values_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_iter_deinit
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:227,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:228,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:231,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:233,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:234,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:235,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct dict_iterate_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 238
    functionName: fs_dict_iterate_deinit
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - fs_iter_deinit
    - pool_unref
    - i_strdup
    - t_strdup
    - i_free
    linkageType: ''
    returnType: int
    signature: "int fs_dict_iterate_deinit(struct dict_iterate_context *ctx,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:246,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:247,1
    - Dst: dict_transaction_memory_init
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - _dict
    argTypes:
    - struct dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 3
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: fs_dict_transaction_init
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - dict_transaction_memory_init
    linkageType: ''
    returnType: struct dict_transaction_context
    signature: 'struct dict_transaction_context *

      fs_dict_transaction_init(struct dict *_dict)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:261,1
    - Dst: fs_dict_get_full_key
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:262,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:265,1
    - Dst: fs_write
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:267,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:267,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:268,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:270,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:273,1
    - Dst: fs_file_init
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:276,1
    - Dst: fs_delete
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:277,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:278,1
    - Dst: fs_file_last_error
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:280,1
    - Dst: fs_file_deinit
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:283,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:286,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct dict_transaction_memory_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 252
    functionDepth: 12
    functionLinenumber: 252
    functionLinenumberEnd: 292
    functionName: fs_dict_write_changes
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - fs_file_deinit
    - fs_file_init
    - i_unreached
    - strlen
    - fs_delete
    - t_strdup_printf
    - fs_dict_get_full_key
    - array_foreach
    - fs_write
    - fs_file_last_error
    linkageType: ''
    returnType: int
    signature: "int fs_dict_write_changes(struct dict_transaction_memory_context *ctx,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fs_dict_write_changes
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:305,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:307,1
    - Dst: callback
      Src: /src/dovecot/src/lib-dict-extra/dict-fs.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - _ctx
    - ATTR_UNUSED
    - callback
    - context
    argTypes:
    - struct dict_transaction_context*
    - bool
    - dict_transaction_commit_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 294
    functionDepth: 13
    functionLinenumber: 294
    functionLinenumberEnd: 310
    functionName: fs_dict_transaction_commit
    functionSourceFile: /src/dovecot/src/lib-dict-extra/dict-fs.c
    functionUses: 0
    functionsReached:
    - fs_dict_write_changes
    - pool_unref
    - callback
    linkageType: ''
    returnType: void
    signature: "void fs_dict_transaction_commit(struct dict_transaction_context *_ctx,\n\t\t\t
      \  bool async ATTR_UNUSED,\n\t\t\t   dict_transaction_commit_callback_t *callback,\n\t\t\t
      \  void *context)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_transaction_begin
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:17,1
    - Dst: dict_set
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:18,1
    - Dst: dict_transaction_commit
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:19,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:20,1
    - Dst: dict_lookup
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:21,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:21,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:23,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - dict
    - key
    - value
    argTypes:
    - struct dict*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 10
    functionDepth: 3
    functionLinenumber: 10
    functionLinenumberEnd: 25
    functionName: test_dict_set_get
    functionSourceFile: /src/dovecot/src/lib-dict-extra/test-dict-fs.c
    functionUses: 0
    functionsReached:
    - dict_lookup
    - dict_transaction_commit
    - i_fatal
    - test_assert_strcmp
    - pool_datastack_create
    - dict_set
    - dict_transaction_begin
    linkageType: ''
    returnType: void
    signature: "void test_dict_set_get(struct dict *dict, const char *key,\n\t\t\t
      \    const char *value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:30,1
    - Dst: ENOTFOUND
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:31,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: test_file_exists
    functionSourceFile: /src/dovecot/src/lib-dict-extra/test-dict-fs.c
    functionUses: 0
    functionsReached:
    - ENOTFOUND
    - i_fatal
    - stat
    linkageType: ''
    returnType: bool
    signature: bool test_file_exists(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:39,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:51,1
    - Dst: dict_init_auto
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:52,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:53,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:77,1
    - Dst: test_dict_set_get
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:78,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:79,1
    - Dst: test_file_exists
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:79,1
    - Dst: test_dict_set_get
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:84,1
    - Dst: test_file_exists
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:84,1
    - Dst: test_dict_set_get
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:85,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:86,1
    - Dst: test_file_exists
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:86,1
    - Dst: test_dict_set_get
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:90,1
    - Dst: test_file_exists
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:90,1
    - Dst: test_dict_set_get
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:91,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:92,1
    - Dst: test_file_exists
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:92,1
    - Dst: test_dict_set_get
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:93,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:94,1
    - Dst: test_file_exists
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:94,1
    - Dst: test_dict_set_get
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:95,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:96,1
    - Dst: test_file_exists
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:96,1
    - Dst: dict_deinit
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:97,1
    - Dst: unlink_directory
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:99,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:100,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:101,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 37
    functionDepth: 14
    functionLinenumber: 37
    functionLinenumberEnd: 103
    functionName: test_dict_fs_set_get
    functionSourceFile: /src/dovecot/src/lib-dict-extra/test-dict-fs.c
    functionUses: 0
    functionsReached:
    - test_file_exists
    - settings_simple_deinit
    - test_begin
    - i_fatal
    - test_dict_set_get
    - test_end
    - settings_simple_init
    - unlink_directory
    - test_assert
    - dict_deinit
    - N_ELEMENTS
    - dict_init_auto
    linkageType: ''
    returnType: void
    signature: void test_dict_fs_set_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: settings_info_register
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:112,1
    - Dst: dict_driver_register
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:113,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:114,1
    - Dst: dict_driver_unregister
      Src: /src/dovecot/src/lib-dict-extra/test-dict-fs.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 105
    functionDepth: 7
    functionLinenumber: 105
    functionLinenumberEnd: 117
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-dict-extra/test-dict-fs.c
    functionUses: 25
    functionsReached:
    - dict_driver_unregister
    - settings_info_register
    - test_run
    - dict_driver_register
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:61,1
    - Dst: o_stream_copy_error_from_parent
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:65,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - stream
    - data
    - size
    argTypes:
    - struct encrypt_ostream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 74
    functionName: o_stream_encrypt_send
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - o_stream_send
    - o_stream_copy_error_from_parent
    - io_stream_set_error
    linkageType: ''
    returnType: int
    signature: "int o_stream_encrypt_send(struct encrypt_ostream *stream,\n\t\t      const
      unsigned char *data, size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:82,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:85,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:86,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:90,1
    - Dst: htons
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:92,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:93,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:95,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:96,1
    - Dst: o_stream_encrypt_send
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct encrypt_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 76
    functionDepth: 5
    functionLinenumber: 76
    functionLinenumberEnd: 100
    functionName: o_stream_encrypt_send_header_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - i_assert
    - i_free_and_null
    - t_buffer_create
    - o_stream_encrypt_send
    - htons
    linkageType: ''
    returnType: int
    signature: int o_stream_encrypt_send_header_v1(struct encrypt_ostream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:108,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:111,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:112,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:115,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:116,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:117,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:122,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:125,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:127,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:128,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:129,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:130,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:131,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:132,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:133,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:134,1
    - Dst: o_stream_encrypt_send
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct encrypt_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 102
    functionDepth: 5
    functionLinenumber: 102
    functionLinenumberEnd: 137
    functionName: o_stream_encrypt_send_header_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_append_buf
    - i_free_and_null
    - t_buffer_create
    - o_stream_encrypt_send
    - i_assert
    - cpu32_to_be
    linkageType: ''
    returnType: int
    signature: int o_stream_encrypt_send_header_v2(struct encrypt_ostream *stream)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:155,1
    - Dst: dcrypt_key_id_public_old
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:156,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:157,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:163,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:164,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:165,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:167,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:168,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:169,1
    - Dst: dcrypt_ecdh_derive_secret_peer
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:171,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:173,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:179,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:180,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:181,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:182,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:186,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:188,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:193,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:194,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:195,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:196,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:202,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:205,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:207,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:208,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:210,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:213,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:216,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:217,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:223,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:226,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:227,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:229,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:230,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:235,1
    - Dst: htons
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:239,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:240,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:241,1
    - Dst: htons
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:243,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:244,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:245,1
    - Dst: htons
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:247,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:248,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:249,1
    - Dst: htons
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:251,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:252,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:253,1
    - Dst: buffer_free_without_data
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:256,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 62
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct encrypt_ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 139
    functionDepth: 5
    functionLinenumber: 139
    functionLinenumberEnd: 259
    functionName: o_stream_encrypt_keydata_create_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ecdh_derive_secret_peer
    - dcrypt_ctx_sym_set_iv
    - buffer_create_dynamic
    - buffer_free_without_data
    - buffer_create_from_data
    - htons
    - dcrypt_ctx_sym_init
    - buffer_append
    - random_fill
    - io_stream_set_error
    - dcrypt_ctx_sym_update
    - dcrypt_ctx_sym_final
    - dcrypt_ctx_sym_set_key
    - safe_memset
    - dcrypt_ctx_sym_destroy
    - struct hash_method*::loop
    - dcrypt_key_id_public_old
    - struct hash_method*::result
    - struct hash_method*::init
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_ctx_sym_create
    linkageType: ''
    returnType: int
    signature: int o_stream_encrypt_keydata_create_v1(struct encrypt_ostream *stream)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:272,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:273,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:274,1
    - Dst: dcrypt_key_type_public
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:276,1
    - Dst: dcrypt_rsa_encrypt
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:280,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:283,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:290,1
    - Dst: dcrypt_ecdh_derive_secret_peer
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:293,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:295,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:301,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:303,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:304,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:310,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:311,1
    - Dst: dcrypt_pbkdf2
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:319,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:323,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:324,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:327,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:330,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:334,1
    - Dst: dcrypt_ctx_sym_set_aad
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:337,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:339,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:340,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:341,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:344,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:345,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:347,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:348,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:355,1
    - Dst: dcrypt_ctx_sym_get_tag
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:356,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:357,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:359,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:362,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:369,1
    - Dst: dcrypt_key_id_public
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:371,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:372,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:377,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:378,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:379,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:381,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:382,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:383,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 62
    argCount: 7
    argNames:
    - stream
    - malg
    - calg
    - key
    - key_len
    - pubkey
    - res
    argTypes:
    - struct encrypt_ostream*
    - char*
    - char*
    - unsigned char*
    - size_t
    - struct dcrypt_public_key*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 261
    functionDepth: 5
    functionLinenumber: 261
    functionLinenumberEnd: 386
    functionName: o_stream_encrypt_key_for_pubkey_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ecdh_derive_secret_peer
    - dcrypt_ctx_sym_set_iv
    - dcrypt_key_id_public
    - dcrypt_pbkdf2
    - dcrypt_ctx_sym_init
    - buffer_append
    - io_stream_set_error
    - dcrypt_ctx_sym_set_aad
    - dcrypt_ctx_sym_update
    - dcrypt_ctx_sym_final
    - dcrypt_ctx_sym_get_tag
    - dcrypt_ctx_sym_set_key
    - dcrypt_key_type_public
    - cpu32_to_be
    - dcrypt_ctx_sym_destroy
    - buffer_append_buf
    - dcrypt_ctx_sym_get_iv_length
    - dcrypt_rsa_encrypt
    - i_assert
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_ctx_sym_create
    - dcrypt_ctx_sym_get_key_length
    linkageType: ''
    returnType: int
    signature: "int o_stream_encrypt_key_for_pubkey_v2(struct encrypt_ostream *stream,\n\t\t\t\t
      \  const char *malg, const char *calg,\n\t\t\t\t   const unsigned char *key,
      size_t key_len,\n\t\t\t\t   struct dcrypt_public_key *pubkey,\n\t\t\t\t   buffer_t
      *res)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:392,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:402,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:421,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:422,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:423,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:424,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:424,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:425,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:428,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:431,1
    - Dst: o_stream_encrypt_key_for_pubkey_v2
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:438,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:440,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:447,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:448,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:449,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:452,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:454,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:455,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:456,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:457,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:461,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:462,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:463,1
    - Dst: buffer_free_without_data
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:467,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:470,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:471,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:472,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:473,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:474,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:475,1
    - Dst: dcrypt_ctx_hmac_set_key
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:480,1
    - Dst: dcrypt_ctx_hmac_init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:481,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:482,1
    - Dst: dcrypt_ctx_sym_set_aad
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:485,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:489,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:492,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:493,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 59
    argCount: 3
    argNames:
    - stream
    - malg
    - calg
    argTypes:
    - struct encrypt_ostream*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 388
    functionDepth: 6
    functionLinenumber: 388
    functionLinenumberEnd: 498
    functionName: o_stream_encrypt_keydata_create_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ctx_sym_set_iv
    - buffer_create_dynamic
    - buffer_set_used_size
    - buffer_free_without_data
    - dcrypt_ctx_sym_init
    - buffer_append
    - random_fill
    - io_stream_set_error
    - dcrypt_ctx_sym_set_aad
    - dcrypt_ctx_sym_set_key
    - dcrypt_ctx_hmac_set_key
    - buffer_free
    - cpu32_to_be
    - hash_method_lookup
    - struct hash_method*::loop
    - struct hash_method*::result
    - buffer_append_space_unsafe
    - dcrypt_ctx_sym_get_iv_length
    - i_assert
    - struct hash_method*::init
    - o_stream_encrypt_key_for_pubkey_v2
    - dcrypt_ctx_hmac_init
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_ctx_sym_get_key_length
    linkageType: ''
    returnType: int
    signature: "int o_stream_encrypt_keydata_create_v2(struct encrypt_ostream *stream,\n\t\t\t\t
      \  const char *malg, const char *calg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:509,1
    - Dst: if
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:514,1
    - Dst: o_stream_encrypt_send_header_v1
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:516,1
    - Dst: o_stream_encrypt_send_header_v2
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - iov
    - iov_count
    argTypes:
    - struct ostream_private*
    - struct const_iovec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 500
    functionDepth: 6
    functionLinenumber: 500
    functionLinenumberEnd: 523
    functionName: o_stream_encrypt_sendv
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - o_stream_encrypt_send_header_v2
    - i_assert
    - o_stream_encrypt_send_header_v1
    - if
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t o_stream_encrypt_sendv(struct ostream_private *stream,\n\t\t
      \      const struct const_iovec *iov, unsigned int iov_count)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:591,1
    - Dst: dcrypt_ctx_sym_get_block_size
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:592,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:593,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:595,1
    - Dst: dcrypt_ctx_hmac_update
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:604,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:607,1
    - Dst: o_stream_encrypt_send
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:612,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:618,1
    - Dst: dcrypt_ctx_hmac_final
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:621,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:623,1
    - Dst: dcrypt_ctx_sym_get_tag
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:629,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:630,1
    - Dst: o_stream_encrypt_send
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:633,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 575
    functionDepth: 5
    functionLinenumber: 575
    functionLinenumberEnd: 638
    functionName: o_stream_encrypt_finalize
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ctx_sym_get_block_size
    - io_stream_set_error
    - t_buffer_create
    - o_stream_encrypt_send
    - buffer_clear_safe
    - dcrypt_ctx_sym_final
    - dcrypt_ctx_hmac_final
    - dcrypt_ctx_sym_get_tag
    - dcrypt_ctx_hmac_update
    - i_assert
    linkageType: ''
    returnType: int
    signature: int o_stream_encrypt_finalize(struct ostream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_encrypt_finalize
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:647,1
    - Dst: o_stream_flush_parent
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:651,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct ostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 640
    functionDepth: 6
    functionLinenumber: 640
    functionLinenumberEnd: 652
    functionName: o_stream_encrypt_flush
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - o_stream_encrypt_finalize
    - o_stream_flush_parent
    linkageType: ''
    returnType: int
    signature: int o_stream_encrypt_flush(struct ostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:660,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:663,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 654
    functionDepth: 3
    functionLinenumber: 654
    functionLinenumberEnd: 664
    functionName: o_stream_encrypt_close
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - o_stream_close
    linkageType: ''
    returnType: void
    signature: "void o_stream_encrypt_close(struct iostream_private *stream,\n\t\t
      \      bool close_parent)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:673,1
    - Dst: dcrypt_ctx_hmac_destroy
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:675,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:677,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:679,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:681,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:683,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:684,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 666
    functionDepth: 2
    functionLinenumber: 666
    functionLinenumberEnd: 685
    functionName: o_stream_encrypt_destroy
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ctx_hmac_destroy
    - dcrypt_ctx_sym_destroy
    - o_stream_unref
    - dcrypt_key_unref_public
    - buffer_free
    - i_free
    linkageType: ''
    returnType: void
    signature: void o_stream_encrypt_destroy(struct iostream_private *stream)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:695,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:697,1
    - Dst: o_stream_encrypt_keydata_create_v1
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:705,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:707,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:708,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:711,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:718,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:720,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:727,1
    - Dst: dcrypt_ctx_sym_get_block_size
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:729,1
    - Dst: dcrypt_name2oid
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:730,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:731,1
    - Dst: dcrypt_ctx_hmac_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:740,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:742,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:749,1
    - Dst: dcrypt_name2oid
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:750,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:751,1
    - Dst: o_stream_encrypt_keydata_create_v2
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:757,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 2
    argNames:
    - estream
    - algorithm
    argTypes:
    - struct encrypt_ostream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 687
    functionDepth: 7
    functionLinenumber: 687
    functionLinenumberEnd: 759
    functionName: o_stream_encrypt_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - strrchr
    - io_stream_set_error
    - dcrypt_ctx_sym_get_block_size
    - o_stream_encrypt_keydata_create_v1
    - buffer_create_dynamic
    - dcrypt_ctx_hmac_create
    - dcrypt_ctx_sym_create
    - o_stream_encrypt_keydata_create_v2
    - t_strdup_noconst
    - dcrypt_name2oid
    linkageType: ''
    returnType: int
    signature: int o_stream_encrypt_init(struct encrypt_ostream *estream, const char
      *algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum io_stream_encrypt_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 775
    functionName: o_stream_create_encrypt_common
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - i_new
    linkageType: ''
    returnType: struct encrypt_ostream
    signature: 'struct encrypt_ostream *

      o_stream_create_encrypt_common(enum io_stream_encrypt_flags flags)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_encrypt_common
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:781,1
    - Dst: dcrypt_key_ref_public
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:784,1
    - Dst: o_stream_encrypt_init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - output
    - algorithm
    - box_pub
    - flags
    argTypes:
    - struct ostream*
    - char*
    - struct dcrypt_public_key*
    - enum io_stream_encrypt_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 777
    functionDepth: 8
    functionLinenumber: 777
    functionLinenumberEnd: 789
    functionName: o_stream_create_encrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 2
    functionsReached:
    - o_stream_create_encrypt_common
    - dcrypt_key_ref_public
    - o_stream_encrypt_init
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_encrypt(struct ostream *output,
      const char *algorithm,\n\tstruct dcrypt_public_key *box_pub, enum io_stream_encrypt_flags
      flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_create_encrypt_common
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:806,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:812,1
    - Dst: o_stream_create
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:819,1
    - Dst: o_stream_get_fd
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:820,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c:822,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - output
    - ctx
    argTypes:
    - struct ostream*
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 801
    functionDepth: 3
    functionLinenumber: 801
    functionLinenumberEnd: 829
    functionName: o_stream_create_sym_encrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/ostream-encrypt.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - o_stream_get_fd
    - o_stream_create
    - o_stream_create_encrypt_common
    - dcrypt_ctx_sym_init
    linkageType: ''
    returnType: struct ostream
    signature: "struct ostream *\no_stream_create_sym_encrypt(struct ostream *output,\n\t\t\t
      \   struct dcrypt_context_symmetric *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: HMAC_CTX_free
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HMAC_CTX_free(ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: t_base64url_decode_str
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: t_base64url_decode_str(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - data
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: openssl_get_error_data
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: openssl_get_error_data(data, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - data
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: openssl_get_error_data
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: openssl_get_error_data(data, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: IS_XD_CURVE
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_XD_CURVE(nid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: IS_ED_CURVE
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ED_CURVE(nid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OPENSSL_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:123,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:125,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:126,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buffer
    - len
    argTypes:
    - unsigned char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: OPENSSL_buf2hexstr
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - OPENSSL_malloc
    - binary_to_hex_append
    - buffer_create_from_data
    - str_c_modifiable
    linkageType: ''
    returnType: char
    signature: char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:207,1
    - Dst: ERR_error_string_n
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:209,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - err
    - data
    - flags
    argTypes:
    - unsigned long
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 201
    functionDepth: 11
    functionLinenumber: 201
    functionLinenumberEnd: 215
    functionName: ssl_err2str
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached:
    - ERR_error_string_n
    - t_strdup_printf
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: char *ssl_err2str(unsigned long err, const char *data, int flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: openssl_get_error_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:224,1
    - Dst: ERR_GET_REASON
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:225,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:226,1
    - Dst: ERR_peek_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:227,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:230,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:232,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:233,1
    - Dst: ssl_err2str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:233,1
    - Dst: ssl_err2str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:238,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:242,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:243,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - error_r
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 217
    functionDepth: 4
    functionLinenumber: 217
    functionLinenumberEnd: 247
    functionName: dcrypt_openssl_error
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - ERR_peek_error
    - i_fatal_status
    - openssl_get_error_data
    - ssl_err2str
    - str_append
    - ERR_GET_REASON
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_error(const char **error_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - padding
    - sig
    - error_r
    argTypes:
    - enum dcrypt_padding
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 270
    functionName: dcrypt_openssl_padding_mode
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int dcrypt_openssl_padding_mode(enum dcrypt_padding padding,\n\t\t\t
      \   bool sig, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dovecot_openssl_common_global_set_engine
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct dcrypt_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 281
    functionName: dcrypt_openssl_initialize
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dovecot_openssl_common_global_set_engine
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_initialize(const struct dcrypt_settings *set,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EC_KEY_get0_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:291,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:292,1
    - Dst: EC_POINT_point2hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - key
    argTypes:
    - EC_KEY*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 294
    functionName: ec_key_get_pub_point_hex
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_get0_group
    - EC_POINT_point2hex
    - EC_KEY_get0_public_key
    linkageType: ''
    returnType: char
    signature: char *ec_key_get_pub_point_hex(const EC_KEY *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_cipherbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:305,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:307,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:313,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - algorithm
    - mode
    - ctx_r
    - error_r
    argTypes:
    - char*
    - enum dcrypt_sym_mode
    - struct dcrypt_context_symmetric**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 296
    functionDepth: 11
    functionLinenumber: 296
    functionLinenumberEnd: 321
    functionName: dcrypt_openssl_ctx_sym_create
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - EVP_get_cipherbyname
    - t_strdup_printf
    - p_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_create(const char *algorithm, enum dcrypt_sym_mode
      mode,\n\t\t\t      struct dcrypt_context_symmetric **ctx_r,\n\t\t\t      const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:329,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 332
    functionName: dcrypt_openssl_ctx_sym_destroy
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - pool_unref
    - EVP_CIPHER_CTX_free
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ctx_sym_destroy(struct dcrypt_context_symmetric
      **ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:339,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:340,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:340,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:341,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:341,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - key
    - key_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 343
    functionName: dcrypt_openssl_ctx_sym_set_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_free
    - EVP_CIPHER_key_length
    - I_MIN
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_key(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       const unsigned char *key, size_t key_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:350,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:352,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:353,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:353,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:354,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:354,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - iv
    - iv_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 357
    functionName: dcrypt_openssl_ctx_sym_set_iv
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_free
    - I_MIN
    - EVP_CIPHER_iv_length
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_iv(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t      const unsigned char *iv, size_t iv_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:363,1
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:365,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:367,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:367,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:368,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:368,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:369,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:370,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:370,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:371,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:371,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 359
    functionDepth: 3
    functionLinenumber: 359
    functionLinenumberEnd: 373
    functionName: dcrypt_openssl_ctx_sym_set_key_iv_random
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - random_fill
    - p_free
    - EVP_CIPHER_key_length
    - EVP_CIPHER_iv_length
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ctx_sym_set_key_iv_random(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - padding
    argTypes:
    - struct dcrypt_context_symmetric*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 380
    functionName: dcrypt_openssl_ctx_sym_set_padding
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_padding(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t\t   bool padding)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:389,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 382
    functionDepth: 5
    functionLinenumber: 382
    functionLinenumberEnd: 391
    functionName: dcrypt_openssl_ctx_sym_get_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_key_length
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_get_key(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       buffer_t *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:400,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - iv
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 393
    functionDepth: 5
    functionLinenumber: 393
    functionLinenumberEnd: 402
    functionName: dcrypt_openssl_ctx_sym_get_iv
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - EVP_CIPHER_iv_length
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_get_iv(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t      buffer_t *iv)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:409,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:412,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:412,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:413,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - aad
    - aad_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 404
    functionDepth: 3
    functionLinenumber: 404
    functionLinenumberEnd: 415
    functionName: dcrypt_openssl_ctx_sym_set_aad
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - I_MAX
    - p_free
    - memcpy
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_aad(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       const unsigned char *aad, size_t aad_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - aad
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 417
    functionDepth: 5
    functionLinenumber: 417
    functionLinenumberEnd: 426
    functionName: dcrypt_openssl_ctx_sym_get_aad
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_get_aad(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       buffer_t *aad)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:433,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:436,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - tag
    - tag_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 428
    functionDepth: 3
    functionLinenumber: 428
    functionLinenumberEnd: 439
    functionName: dcrypt_openssl_ctx_sym_set_tag
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_free
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_tag(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       const unsigned char *tag, size_t tag_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - tag
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 441
    functionDepth: 5
    functionLinenumber: 441
    functionLinenumberEnd: 450
    functionName: dcrypt_openssl_ctx_sym_get_tag
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_get_tag(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       buffer_t *tag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 456
    functionName: dcrypt_openssl_ctx_sym_get_key_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_key_length
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_openssl_ctx_sym_get_key_length(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 462
    functionName: dcrypt_openssl_ctx_sym_get_iv_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_iv_length
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_openssl_ctx_sym_get_iv_length(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_block_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 468
    functionName: dcrypt_openssl_ctx_sym_get_block_size
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_block_size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_openssl_ctx_sym_get_block_size(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:477,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:478,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:480,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:481,1
    - Dst: EVP_CipherInit_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:483,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:486,1
    - Dst: EVP_CIPHER_CTX_set_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:488,1
    - Dst: EVP_CipherUpdate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:491,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:495,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 497
    functionName: dcrypt_openssl_ctx_sym_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - EVP_CipherUpdate
    - EVP_CIPHER_CTX_new
    - EVP_CIPHER_CTX_set_padding
    - EVP_CipherInit_ex
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_init(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_block_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:504,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:509,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:522,1
    - Dst: EVP_CipherUpdate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:524,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:526,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - data
    - data_len
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 499
    functionDepth: 5
    functionLinenumber: 499
    functionLinenumberEnd: 529
    functionName: dcrypt_openssl_ctx_sym_update
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - EVP_CipherUpdate
    - EVP_CIPHER_block_size
    - buffer_set_used_size
    - buffer_append_space_unsafe
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_update(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t      const unsigned char *data, size_t data_len,\n\t\t\t      buffer_t
      *result, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_block_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:535,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:541,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:554,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:559,1
    - Dst: EVP_CipherFinal_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:566,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:569,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:573,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:575,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:576,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:585,1
    - Dst: EVP_CIPHER_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:587,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 531
    functionDepth: 5
    functionLinenumber: 531
    functionLinenumberEnd: 591
    functionName: dcrypt_openssl_ctx_sym_final
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - EVP_CIPHER_CTX_free
    - EVP_CIPHER_block_size
    - buffer_set_used_size
    - EVP_CIPHER_CTX_ctrl
    - buffer_append_space_unsafe
    - p_malloc
    - i_assert
    - EVP_CipherFinal_ex
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_final(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t     buffer_t *result, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:602,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:604,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:610,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - algorithm
    - ctx_r
    - error_r
    argTypes:
    - char*
    - struct dcrypt_context_hmac**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 593
    functionDepth: 11
    functionLinenumber: 593
    functionLinenumberEnd: 616
    functionName: dcrypt_openssl_ctx_hmac_create
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_strdup_printf
    - p_new
    - EVP_get_digestbyname
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_hmac_create(const char *algorithm,\n\t\t\t
      \      struct dcrypt_context_hmac **ctx_r,\n\t\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HMAC_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:622,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 625
    functionName: dcrypt_openssl_ctx_hmac_destroy
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - HMAC_CTX_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ctx_hmac_destroy(struct dcrypt_context_hmac **ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:632,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:634,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:635,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - key
    - key_len
    argTypes:
    - struct dcrypt_context_hmac*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 627
    functionDepth: 3
    functionLinenumber: 627
    functionLinenumberEnd: 637
    functionName: dcrypt_openssl_ctx_hmac_set_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - memcpy
    - I_MIN
    - p_free
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_hmac_set_key(struct dcrypt_context_hmac *ctx,\n\t\t\t\tconst
      unsigned char *key, size_t key_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct dcrypt_context_hmac*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 639
    functionDepth: 5
    functionLinenumber: 639
    functionLinenumberEnd: 646
    functionName: dcrypt_openssl_ctx_hmac_get_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_ctx_hmac_get_key(struct dcrypt_context_hmac *ctx,
      buffer_t *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:652,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 648
    functionDepth: 3
    functionLinenumber: 648
    functionLinenumberEnd: 654
    functionName: dcrypt_openssl_ctx_hmac_set_key_random
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - random_fill
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ctx_hmac_set_key_random(struct dcrypt_context_hmac
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 660
    functionName: dcrypt_openssl_ctx_hmac_get_digest_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_MD_size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_openssl_ctx_hmac_get_digest_length(struct dcrypt_context_hmac
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:668,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:669,1
    - Dst: HMAC_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:670,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:672,1
    - Dst: HMAC_Init_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:673,1
    - Dst: HMAC_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:675,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:677,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 680
    functionName: dcrypt_openssl_ctx_hmac_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - HMAC_Init_ex
    - HMAC_CTX_free
    - HMAC_CTX_new
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_hmac_init(struct dcrypt_context_hmac *ctx,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HMAC_Update
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:689,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - data
    - data_len
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 693
    functionName: dcrypt_openssl_ctx_hmac_update
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - HMAC_Update
    - dcrypt_openssl_error
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_hmac_update(struct dcrypt_context_hmac *ctx,\n\t\t\t
      \      const unsigned char *data, size_t data_len,\n\t\t\t       const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HMAC_Final
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:703,1
    - Dst: HMAC_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:704,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:706,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 695
    functionDepth: 5
    functionLinenumber: 695
    functionLinenumberEnd: 710
    functionName: dcrypt_openssl_ctx_hmac_final
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - HMAC_CTX_free
    - dcrypt_openssl_error
    - HMAC_Final
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_hmac_final(struct dcrypt_context_hmac *ctx,
      buffer_t *result,\n\t\t\t      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:717,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:720,1
    - Dst: EVP_PKEY_keygen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:721,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:722,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:728,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - nid
    - key
    - error_r
    argTypes:
    - int
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 730
    functionName: dcrypt_openssl_generate_xd_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_keygen
    - dcrypt_openssl_error
    - EVP_PKEY_CTX_new_id
    - EVP_PKEY_CTX_free
    - EVP_PKEY_keygen_init
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_generate_xd_key(int nid, EVP_PKEY **key,\n\t\t\t\t\t
      \  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:741,1
    - Dst: EVP_PKEY_paramgen_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:743,1
    - Dst: EVP_PKEY_CTX_set_ec_paramgen_curve_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:744,1
    - Dst: EVP_PKEY_paramgen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:745,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:747,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:748,1
    - Dst: EVP_PKEY_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:753,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:755,1
    - Dst: EVP_PKEY_keygen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:756,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:758,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:759,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:760,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:761,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:765,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:766,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:767,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:768,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:768,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - nid
    - key
    - error_r
    argTypes:
    - int
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 733
    functionDepth: 0
    functionLinenumber: 733
    functionLinenumberEnd: 771
    functionName: dcrypt_openssl_generate_ec_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_keygen
    - dcrypt_openssl_error
    - EVP_PKEY_paramgen
    - EVP_PKEY_CTX_new
    - EVP_PKEY_free
    - EVP_PKEY_CTX_new_id
    - EVP_PKEY_get0_EC_KEY
    - EVP_PKEY_CTX_free
    - EVP_PKEY_keygen_init
    - EVP_PKEY_paramgen_init
    - EVP_PKEY_CTX_set_ec_paramgen_curve_nid
    - EC_KEY_set_asn1_flag
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_generate_ec_key(int nid, EVP_PKEY **key, const
      char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:776,1
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:780,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:782,1
    - Dst: EVP_PKEY_CTX_set_rsa_keygen_bits
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:783,1
    - Dst: EVP_PKEY_keygen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:784,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:785,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:789,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - bits
    - key
    - error_r
    argTypes:
    - int
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 791
    functionName: dcrypt_openssl_generate_rsa_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_keygen
    - dcrypt_openssl_error
    - EVP_PKEY_CTX_new_id
    - EVP_PKEY_CTX_set_rsa_keygen_bits
    - EVP_PKEY_CTX_free
    - EVP_PKEY_keygen_init
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_generate_rsa_key(int bits, EVP_PKEY **key, const
      char **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:800,1
    - Dst: EVP_PKEY_derive_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:802,1
    - Dst: EVP_PKEY_derive_set_peer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:803,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:804,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:805,1
    - Dst: EVP_PKEY_derive
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:810,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:811,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:812,1
    - Dst: EVP_PKEY_derive
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:815,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:816,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:817,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:820,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:821,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - priv_key
    - pub_key
    - shared_secret
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 793
    functionDepth: 5
    functionLinenumber: 793
    functionLinenumberEnd: 824
    functionName: dcrypt_openssl_ecdh_derive_secret
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - EVP_PKEY_CTX_new
    - EVP_PKEY_derive_init
    - EVP_PKEY_CTX_free
    - EVP_PKEY_derive
    - EVP_PKEY_derive_set_peer
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ecdh_derive_secret(struct dcrypt_private_key *priv_key,\n\t\t\t\t
      \ struct dcrypt_public_key *pub_key,\n\t\t\t\t  buffer_t *shared_secret,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:832,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:837,1
    - Dst: EVP_PKEY_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:837,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:839,1
    - Dst: EVP_PKEY_new_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:840,1
    - Dst: EVP_PKEY_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:841,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:843,1
    - Dst: dcrypt_openssl_ecdh_derive_secret
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:844,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:846,1
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:850,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:852,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:854,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:854,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:855,1
    - Dst: EC_POINT_oct2point
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:859,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:861,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:862,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:863,1
    - Dst: EC_KEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:865,1
    - Dst: EC_KEY_set_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:870,1
    - Dst: EC_KEY_set_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:871,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:874,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:875,1
    - Dst: EC_KEY_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:878,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:879,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:880,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:883,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:885,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:886,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:888,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:889,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:892,1
    - Dst: dcrypt_openssl_ecdh_derive_secret
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:895,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:897,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 4
    argNames:
    - local_key
    - R
    - S
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - buffer_t*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 899
    functionName: dcrypt_openssl_ecdh_derive_secret_local
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_check_key
    - BN_CTX_new
    - IS_XD_CURVE
    - dcrypt_openssl_ecdh_derive_secret
    - EVP_PKEY_new_raw_public_key
    - dcrypt_openssl_error
    - EVP_PKEY_set1_EC_KEY
    - EC_KEY_new
    - EVP_PKEY_id
    - EC_KEY_get0_group
    - EC_POINT_new
    - i_zero
    - EC_POINT_free
    - EVP_PKEY_free
    - EVP_PKEY_get0_EC_KEY
    - EC_KEY_set_public_key
    - EC_POINT_oct2point
    - i_assert
    - EC_KEY_free
    - BN_CTX_free
    - EC_KEY_set_group
    - EVP_PKEY_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ecdh_derive_secret_local(struct dcrypt_private_key
      *local_key,\n\t\t\t\t\tbuffer_t *R, buffer_t *S,\n\t\t\t\t\tconst char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:906,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:914,1
    - Dst: EVP_PKEY_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:914,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:916,1
    - Dst: dcrypt_openssl_generate_xd_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:917,1
    - Dst: EVP_PKEY_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:917,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:919,1
    - Dst: dcrypt_openssl_ecdh_derive_secret
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:920,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:924,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:925,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:926,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:930,1
    - Dst: EC_GROUP_get_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:936,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:937,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:937,1
    - Dst: dcrypt_openssl_generate_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:938,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:942,1
    - Dst: dcrypt_openssl_ecdh_derive_secret
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:945,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:947,1
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:952,1
    - Dst: EC_KEY_get0_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:953,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:953,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:954,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:954,1
    - Dst: EC_POINT_point2oct
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:955,1
    - Dst: EC_POINT_point2oct
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:958,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:960,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:961,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:962,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - peer_key
    - R
    - S
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - buffer_t*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 901
    functionDepth: 5
    functionLinenumber: 901
    functionLinenumberEnd: 965
    functionName: dcrypt_openssl_ecdh_derive_secret_peer
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - BN_CTX_new
    - IS_XD_CURVE
    - EC_KEY_get0_public_key
    - dcrypt_openssl_ecdh_derive_secret
    - EVP_PKEY_get_raw_public_key
    - buffer_append
    - dcrypt_openssl_error
    - dcrypt_openssl_generate_ec_key
    - EVP_PKEY_id
    - EC_KEY_get0_group
    - EC_GROUP_get_curve_name
    - EVP_PKEY_base_id
    - i_zero
    - EVP_PKEY_free
    - EVP_PKEY_get0_EC_KEY
    - i_assert
    - dcrypt_openssl_generate_xd_key
    - BN_CTX_free
    - EC_POINT_point2oct
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ecdh_derive_secret_peer(struct dcrypt_public_key
      *peer_key,\n\t\t\t\t       buffer_t *R, buffer_t *S,\n\t\t\t\t       const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:975,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:976,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:977,1
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:979,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:981,1
    - Dst: PKCS5_PBKDF2_HMAC
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:986,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:989,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:992,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 9
    argNames:
    - password
    - password_len
    - salt
    - salt_len
    - hash
    - rounds
    - result
    - result_len
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - char*
    - unsigned int
    - buffer_t*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 967
    functionDepth: 11
    functionLinenumber: 967
    functionLinenumberEnd: 994
    functionName: dcrypt_openssl_pbkdf2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - t_strdup_printf
    - EVP_get_digestbyname
    - PKCS5_PBKDF2_HMAC
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_pbkdf2(const unsigned char *password, size_t password_len,\n\t\t
      \     const unsigned char *salt, size_t salt_len,\n\t\t      const char *hash,
      unsigned int rounds,\n\t\t      buffer_t *result, unsigned int result_len,\n\t\t
      \     const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1003,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1004,1
    - Dst: dcrypt_openssl_generate_rsa_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1006,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1007,1
    - Dst: dcrypt_openssl_private_to_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1011,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1015,1
    - Dst: OBJ_sn2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1018,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1020,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1025,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1025,1
    - Dst: dcrypt_openssl_generate_xd_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1026,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1027,1
    - Dst: dcrypt_openssl_generate_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1030,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1032,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1033,1
    - Dst: dcrypt_openssl_private_to_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1037,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 5
    argNames:
    - pair_r
    - kind
    - bits
    - curve
    - error_r
    argTypes:
    - struct dcrypt_keypair*
    - enum dcrypt_key_type
    - unsigned int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 996
    functionDepth: 11
    functionLinenumber: 996
    functionLinenumberEnd: 1043
    functionName: dcrypt_openssl_generate_keypair
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dcrypt_openssl_generate_xd_key
    - dcrypt_openssl_error
    - dcrypt_openssl_generate_ec_key
    - IS_XD_CURVE
    - t_strdup_printf
    - OBJ_sn2nid
    - IS_ED_CURVE
    - i_new
    - dcrypt_openssl_private_to_public_key
    - i_assert
    - dcrypt_openssl_generate_rsa_key
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_generate_keypair(struct dcrypt_keypair *pair_r,\n\t\t\t\tenum
      dcrypt_key_type kind, unsigned int bits,\n\t\t\t\tconst char *curve, const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1050,1
    - Dst: dcrypt_openssl_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1052,1
    - Dst: dcrypt_openssl_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1058,1
    - Dst: dcrypt_openssl_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1060,1
    - Dst: dcrypt_openssl_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1062,1
    - Dst: dcrypt_openssl_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1063,1
    - Dst: dcrypt_openssl_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1065,1
    - Dst: dcrypt_openssl_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1066,1
    - Dst: dcrypt_openssl_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1070,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1072,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1073,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1076,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - data
    - key
    - point_r
    - error_r
    argTypes:
    - buffer_t*
    - buffer_t*
    - BIGNUM**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1045
    functionDepth: 2
    functionLinenumber: 1045
    functionLinenumberEnd: 1078
    functionName: dcrypt_openssl_decrypt_point_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - dcrypt_openssl_ctx_sym_create
    - dcrypt_openssl_ctx_sym_destroy
    - dcrypt_openssl_ctx_sym_update
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_openssl_ctx_sym_set_key
    - BN_bin2bn
    - dcrypt_openssl_ctx_sym_init
    - dcrypt_openssl_ctx_sym_final
    - dcrypt_openssl_ctx_sym_set_iv
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_decrypt_point_v1(buffer_t *data, buffer_t *key,
      BIGNUM **point_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1089,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1090,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1092,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1093,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1095,1
    - Dst: dcrypt_openssl_ecdh_derive_secret_local
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1097,1
    - Dst: SHA256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1103,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1104,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1105,1
    - Dst: dcrypt_openssl_decrypt_point_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1108,1
    - Dst: memset
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1109,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 5
    argNames:
    - dec_key
    - data_hex
    - peer_key_hex
    - point_r
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - char*
    - BIGNUM**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1113
      start: 1080
    functionDepth: 2
    functionLinenumber: 1080
    functionLinenumberEnd: 1113
    functionName: dcrypt_openssl_decrypt_point_ec_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_decrypt_point_v1
    - hex_to_binary
    - t_buffer_create
    - buffer_clear_safe
    - SHA256
    - buffer_create_from_const_data
    - memset
    - dcrypt_openssl_ecdh_derive_secret_local
    - safe_memset
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_decrypt_point_ec_v1(struct dcrypt_private_key
      *dec_key,\n\t\t\t\t   const char *data_hex,\n\t\t\t\t   const char *peer_key_hex,
      BIGNUM **point_r,\n\t\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1123,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1124,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1125,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1126,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1128,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1129,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1130,1
    - Dst: dcrypt_openssl_pbkdf2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1133,1
    - Dst: dcrypt_openssl_decrypt_point_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - data_hex
    - password_hex
    - salt_hex
    - point_r
    - error_r
    argTypes:
    - char*
    - char*
    - char*
    - BIGNUM**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1115
    functionDepth: 2
    functionLinenumber: 1115
    functionLinenumberEnd: 1139
    functionName: dcrypt_openssl_decrypt_point_password_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - hex_to_binary
    - dcrypt_openssl_pbkdf2
    - t_buffer_create
    - dcrypt_openssl_decrypt_point_v1
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_decrypt_point_password_v1(const char *data_hex,\n\t\t\t\t\t
      const char *password_hex,\n\t\t\t\t\t const char *salt_hex, BIGNUM **point_r,\n\t\t\t\t\t
      const char **error_r)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1151,1
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1156,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1163,1
    - Dst: BN_hex2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1164,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1165,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1166,1
    - Dst: dcrypt_openssl_decrypt_point_password_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1176,1
    - Dst: dcrypt_openssl_decrypt_point_ec_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1188,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1197,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1198,1
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1201,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1203,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1204,1
    - Dst: EC_KEY_set_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1206,1
    - Dst: EC_KEY_precompute_mult
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1207,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1208,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1209,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1209,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1211,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1212,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1213,1
    - Dst: EC_POINT_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1216,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1216,1
    - Dst: EC_KEY_set_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1218,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1219,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1220,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1221,1
    - Dst: EC_KEY_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1224,1
    - Dst: ec_key_get_pub_point_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1227,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1229,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1230,1
    - Dst: SHA256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1232,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1232,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1233,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1235,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1236,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1238,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1241,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1243,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1244,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1246,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1247,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1248,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1254,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1256,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 81
    argCount: 6
    argNames:
    - key_r
    - len
    - input
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - int
    - char**
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1141
    functionDepth: 6
    functionLinenumber: 1141
    functionLinenumberEnd: 1257
    functionName: dcrypt_openssl_load_private_key_dovecot_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_check_key
    - BN_CTX_new
    - EC_KEY_set_private_key
    - BN_hex2bn
    - ec_key_get_pub_point_hex
    - strlen
    - dcrypt_openssl_decrypt_point_password_v1
    - EC_KEY_new_by_curve_name
    - dcrypt_openssl_error
    - EVP_PKEY_set1_EC_KEY
    - EC_KEY_get0_group
    - OPENSSL_free
    - binary_to_hex
    - dcrypt_openssl_decrypt_point_ec_v1
    - EC_POINT_new
    - EC_POINT_mul
    - EC_KEY_precompute_mult
    - BN_secure_new
    - EC_POINT_free
    - EC_KEY_set_public_key
    - SHA256
    - EC_KEY_set_asn1_flag
    - EC_KEY_free
    - strcmp
    - BN_CTX_free
    - BN_free
    - EVP_PKEY_new
    - i_new
    - str_to_int
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key_dovecot_v1(struct dcrypt_private_key
      **key_r,\n\t\t\t\t\t   int len, const char **input,\n\t\t\t\t\t   const char
      *password,\n\t\t\t\t\t   struct dcrypt_private_key *dec_key,\n\t\t\t\t\t   const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_openssl_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1271,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1276,1
    - Dst: dcrypt_openssl_pbkdf2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1277,1
    - Dst: dcrypt_openssl_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1279,1
    - Dst: dcrypt_openssl_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1280,1
    - Dst: dcrypt_openssl_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1284,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1288,1
    - Dst: buffer_free_without_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1289,1
    - Dst: dcrypt_openssl_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1292,1
    - Dst: dcrypt_openssl_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1293,1
    - Dst: dcrypt_openssl_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1294,1
    - Dst: dcrypt_openssl_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1295,1
    - Dst: dcrypt_openssl_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1296,1
    - Dst: dcrypt_openssl_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1298,1
    - Dst: dcrypt_openssl_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1299,1
    - Dst: dcrypt_openssl_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1301,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1305,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1309,1
    - Dst: dcrypt_openssl_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1311,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 9
    argNames:
    - cipher
    - mode
    - input
    - secret
    - salt
    - digalgo
    - rounds
    - result_r
    - error_r
    argTypes:
    - char*
    - enum dcrypt_sym_mode
    - buffer_t*
    - buffer_t*
    - buffer_t*
    - char*
    - unsigned int
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1260
    functionDepth: 5
    functionLinenumber: 1260
    functionLinenumberEnd: 1313
    functionName: dcrypt_openssl_cipher_key_dovecot_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_ctx_sym_get_key_length
    - dcrypt_openssl_pbkdf2
    - dcrypt_openssl_ctx_sym_create
    - dcrypt_openssl_ctx_sym_destroy
    - dcrypt_openssl_ctx_sym_update
    - dcrypt_openssl_ctx_sym_get_iv_length
    - buffer_append_buf
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_openssl_ctx_sym_set_key
    - buffer_free_without_data
    - dcrypt_openssl_ctx_sym_init
    - dcrypt_openssl_ctx_sym_final
    - dcrypt_openssl_ctx_sym_set_iv
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_cipher_key_dovecot_v2(const char *cipher,\n\t\t\t\t
      \    enum dcrypt_sym_mode mode,\n\t\t\t\t     buffer_t *input, buffer_t *secret,\n\t\t\t\t
      \    buffer_t *salt, const char *digalgo,\n\t\t\t\t     unsigned int rounds,
      buffer_t *result_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1323,1
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1326,1
    - Dst: OBJ_txt2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1345,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1348,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1352,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1362,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1367,1
    - Dst: dcrypt_openssl_private_to_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1370,1
    - Dst: dcrypt_openssl_public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1371,1
    - Dst: dcrypt_openssl_unref_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1373,1
    - Dst: dcrypt_openssl_unref_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1377,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1379,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1379,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1387,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1387,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1388,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1388,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1389,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1391,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1392,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1393,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1394,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1397,1
    - Dst: dcrypt_openssl_rsa_decrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1398,1
    - Dst: dcrypt_openssl_ecdh_derive_secret_local
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1404,1
    - Dst: dcrypt_openssl_cipher_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1409,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1420,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1426,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1426,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1427,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1427,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1428,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1428,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1429,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1430,1
    - Dst: dcrypt_openssl_cipher_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1435,1
    - Dst: EVP_PKEY_type
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1443,1
    - Dst: RSA_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1444,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1445,1
    - Dst: d2i_RSAPrivateKey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1447,1
    - Dst: RSA_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1448,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1449,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1450,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1451,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1453,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1454,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1456,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1457,1
    - Dst: EVP_PKEY_set1_RSA
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1459,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1460,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1461,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1465,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1465,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1467,1
    - Dst: EVP_PKEY_new_raw_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1469,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1470,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1472,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1473,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1479,1
    - Dst: BN_mpi2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1481,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1482,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1483,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1484,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1486,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1487,1
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1488,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1490,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1491,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1492,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1493,1
    - Dst: EC_KEY_set_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1495,1
    - Dst: EC_KEY_precompute_mult
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1496,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1497,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1498,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1498,1
    - Dst: EC_POINT_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1503,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1503,1
    - Dst: EC_KEY_set_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1505,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1506,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1508,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1509,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1511,1
    - Dst: EC_KEY_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1512,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1513,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1514,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1515,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1519,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1520,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1521,1
    - Dst: dcrypt_openssl_private_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1526,1
    - Dst: dcrypt_openssl_unref_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1527,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1531,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1531,1
    - Dst: dcrypt_openssl_unref_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1533,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 147
    argCount: 6
    argNames:
    - key_r
    - len
    - input
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - int
    - char**
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1315
    functionDepth: 6
    functionLinenumber: 1315
    functionLinenumberEnd: 1539
    functionName: dcrypt_openssl_load_private_key_dovecot_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_check_key
    - BN_CTX_new
    - EC_KEY_set_private_key
    - IS_XD_CURVE
    - hex_to_binary
    - strlen
    - buffer_get_data
    - EC_KEY_new_by_curve_name
    - dcrypt_openssl_private_to_public_key
    - str_to_uint
    - dcrypt_openssl_public_key_id
    - RSA_free
    - dcrypt_openssl_error
    - EVP_PKEY_set1_EC_KEY
    - dcrypt_openssl_cipher_key_dovecot_v2
    - EVP_PKEY_set1_RSA
    - EC_KEY_get0_group
    - d2i_RSAPrivateKey
    - binary_to_hex
    - EVP_PKEY_base_id
    - EC_POINT_new
    - EC_POINT_mul
    - RSA_check_key
    - RSA_new
    - OBJ_txt2nid
    - BN_secure_new
    - EC_KEY_precompute_mult
    - EC_POINT_free
    - EVP_PKEY_free
    - IS_ED_CURVE
    - dcrypt_openssl_rsa_decrypt
    - dcrypt_openssl_unref_public_key
    - EVP_PKEY_new_raw_private_key
    - EC_KEY_set_public_key
    - EVP_PKEY_type
    - dcrypt_openssl_ecdh_derive_secret_local
    - EC_KEY_free
    - strcmp
    - EC_KEY_set_asn1_flag
    - dcrypt_openssl_unref_private_key
    - t_buffer_create
    - buffer_clear_safe
    - BN_CTX_free
    - BN_free
    - EVP_PKEY_new
    - i_new
    - buffer_create_from_const_data
    - BN_mpi2bn
    - dcrypt_openssl_private_key_id
    - str_to_int
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key_dovecot_v2(struct dcrypt_private_key
      **key_r,\n\t\t\t\t\t   int len, const char **input,\n\t\t\t\t\t   const char
      *password,\n\t\t\t\t\t   struct dcrypt_private_key *dec_key,\n\t\t\t\t\t   const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - usage
    argTypes:
    - enum dcrypt_key_usage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1561
    functionDepth: 0
    functionLinenumber: 1561
    functionLinenumberEnd: 1572
    functionName: key_usage_to_jwk_use
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char *key_usage_to_jwk_use(enum dcrypt_key_usage usage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1576,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1578,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - use
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1574
    functionDepth: 0
    functionLinenumber: 1574
    functionLinenumberEnd: 1581
    functionName: jwk_use_to_key_usage
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum dcrypt_key_usage
    signature: enum dcrypt_key_usage jwk_use_to_key_usage(const char *use)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1588,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - curve
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1583
    functionDepth: 0
    functionLinenumber: 1583
    functionLinenumberEnd: 1591
    functionName: jwk_curve_to_nid
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int jwk_curve_to_nid(const char *curve)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - nid
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1593
    functionDepth: 0
    functionLinenumber: 1593
    functionLinenumberEnd: 1600
    functionName: nid_to_jwk_curve
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *nid_to_jwk_curve(int nid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1613,1
    - Dst: EVP_PKEY_new_raw_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1614,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1617,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1620,1
    - Dst: EVP_PKEY_new_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1621,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1624,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 7
    argNames:
    - key_r
    - want_private_key
    - nid
    - x
    - y
    - d
    - error_r
    argTypes:
    - EVP_PKEY**
    - bool
    - int
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1603
    functionDepth: 0
    functionLinenumber: 1603
    functionLinenumberEnd: 1628
    functionName: load_jwk_ed_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_new_raw_private_key
    - dcrypt_openssl_error
    - t_base64url_decode_str
    - EVP_PKEY_new_raw_public_key
    linkageType: ''
    returnType: bool
    signature: "bool load_jwk_ed_key(EVP_PKEY **key_r, bool want_private_key, int
      nid,\n\t\t\t    const char *x, const char *y, const char *d,\n\t\t\t    const
      char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1642,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1643,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1646,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1652,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1653,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1655,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1656,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1657,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1658,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1659,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1660,1
    - Dst: EC_KEY_set_public_key_affine_coordinates
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1663,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1664,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1665,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1668,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1669,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1674,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1675,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1676,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1677,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1678,1
    - Dst: EC_KEY_set_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1680,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1681,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1683,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1684,1
    - Dst: EC_KEY_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1688,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1689,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1690,1
    - Dst: EC_KEY_precompute_mult
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1693,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1694,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1697,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1698,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1699,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 7
    argNames:
    - key_r
    - want_private_key
    - nid
    - x
    - y
    - d
    - error_r
    argTypes:
    - EVP_PKEY**
    - bool
    - int
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1632
    functionDepth: 0
    functionLinenumber: 1632
    functionLinenumberEnd: 1703
    functionName: load_jwk_ec_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_check_key
    - dcrypt_openssl_error
    - EC_KEY_set_private_key
    - EVP_PKEY_set1_EC_KEY
    - EC_KEY_precompute_mult
    - BN_secure_new
    - EC_KEY_new_by_curve_name
    - EC_KEY_set_public_key_affine_coordinates
    - BN_free
    - t_base64url_decode_str
    - EVP_PKEY_new
    - BN_bin2bn
    - BN_new
    - EC_KEY_set_asn1_flag
    - EC_KEY_free
    linkageType: ''
    returnType: bool
    signature: "bool load_jwk_ec_key(EVP_PKEY **key_r, bool want_private_key, int
      nid,\n\t\t\t    const char *x, const char *y, const char *d,\n\t\t\t    const
      char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1711,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1715,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1716,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1721,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1722,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1727,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1728,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1731,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1732,1
    - Dst: jwk_curve_to_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1738,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1740,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1744,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1744,1
    - Dst: load_jwk_ed_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1745,1
    - Dst: load_jwk_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1748,1
    - Dst: load_jwk_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1752,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 6
    argNames:
    - key_r
    - want_private_key
    - root
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - EVP_PKEY**
    - bool
    - struct json_tree_node*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1705
    functionDepth: 11
    functionLinenumber: 1705
    functionLinenumberEnd: 1754
    functionName: load_jwk_curve_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - json_tree_node_get_member
    - load_jwk_ec_key
    - json_tree_node_get_str
    - IS_XD_CURVE
    - t_strdup_printf
    - IS_ED_CURVE
    - load_jwk_ed_key
    - i_assert
    - jwk_curve_to_nid
    linkageType: ''
    returnType: bool
    signature: "bool load_jwk_curve_key(EVP_PKEY **key_r, bool want_private_key,\n\t\t\t
      \      const struct json_tree_node *root,\n\t\t\t       const char *password
      ATTR_UNUSED,\n\t\t\t       struct dcrypt_private_key *dec_key ATTR_UNUSED,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1774,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1776,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1777,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1778,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1779,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1780,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1781,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1782,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1783,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1784,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1785,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1786,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1787,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1788,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1789,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1790,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1791,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1792,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1793,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1794,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1795,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1796,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1797,1
    - Dst: BN_dec2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1799,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1800,1
    - Dst: BN_dec2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1801,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1802,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1802,1
    - Dst: BN_is_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1804,1
    - Dst: BN_is_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1804,1
    - Dst: BN_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1806,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1807,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1812,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1813,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1814,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1814,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1815,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1816,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1817,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1817,1
    - Dst: BN_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1818,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1819,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1820,1
    - Dst: BN_mod_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1821,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1822,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1822,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1823,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1824,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1825,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1828,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1829,1
    - Dst: BN_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1834,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1836,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1836,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1840,1
    - Dst: BN_is_odd
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1843,1
    - Dst: BN_rshift1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1844,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1848,1
    - Dst: BN_add
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1848,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1849,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1851,1
    - Dst: BN_mod_exp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1852,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1854,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1854,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1855,1
    - Dst: BN_mod_exp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1856,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1858,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1858,1
    - Dst: BN_add
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1859,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1859,1
    - Dst: BN_gcd
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1861,1
    - Dst: BN_div
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1862,1
    - Dst: BN_is_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1863,1
    - Dst: BN_lshift1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1871,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1881,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1882,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1883,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1884,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1884,1
    - Dst: BN_mod
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1885,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1886,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1886,1
    - Dst: BN_mod
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1887,1
    - Dst: BN_mod_inverse
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1888,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1889,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1890,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1891,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1892,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1893,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1896,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1897,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1898,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1900,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1901,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1902,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1903,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1904,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1905,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1906,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1907,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1908,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1909,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1910,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1911,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 130
    argCount: 8
    argNames:
    - e
    - n
    - d
    - p_r
    - q_r
    - dmp1_r
    - dmq1_r
    - iqmp_r
    argTypes:
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1759
    functionDepth: 2
    functionLinenumber: 1759
    functionLinenumberEnd: 1913
    functionName: dcrypt_openssl_derive_rsa_param
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - BN_is_zero
    - BN_CTX_new
    - BN_add
    - BN_new
    - BN_mod_exp
    - BN_set_flags
    - BN_rshift1
    - BN_sub
    - i_fatal_status
    - BN_lshift1
    - BN_cmp
    - BN_is_odd
    - BN_secure_new
    - BN_mod_inverse
    - BN_mod
    - BN_dec2bn
    - BN_mul
    - BN_copy
    - BN_gcd
    - BN_CTX_free
    - BN_div
    - BN_free
    - BN_mod_mul
    - BN_value_one
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_derive_rsa_param(BIGNUM *e, BIGNUM *n, BIGNUM
      *d,\n\t\t\t\t\t    BIGNUM *p_r, BIGNUM *q_r,\n\t\t\t\t\t    BIGNUM *dmp1_r,
      BIGNUM *dmq1_r,\n\t\t\t\t\t    BIGNUM *iqmp_r)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1927,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1928,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1933,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1934,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1940,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1941,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1945,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1946,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1947,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1948,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1954,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1955,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1956,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1957,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1958,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1959,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1970,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1971,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1973,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1974,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1975,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1976,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1977,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1978,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1980,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1981,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1982,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1983,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1985,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1986,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1988,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1989,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1990,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1991,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1992,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1993,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1996,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1997,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:1998,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2000,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2001,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2002,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2004,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2005,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2006,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2007,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2008,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2009,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2010,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2011,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2012,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2013,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2020,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2021,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2023,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2024,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2025,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2026,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2028,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2029,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2030,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2031,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2032,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2033,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2035,1
    - Dst: RSA_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2038,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2040,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2041,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2043,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2044,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2045,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2046,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2047,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2048,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2050,1
    - Dst: RSA_set0_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2053,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2054,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2055,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2056,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2058,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2059,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2060,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2061,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2062,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2063,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2065,1
    - Dst: dcrypt_openssl_derive_rsa_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2070,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2073,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2074,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2075,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2076,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2077,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2078,1
    - Dst: RSA_set0_factors
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2080,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2081,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2082,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2083,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2084,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2085,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2086,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2087,1
    - Dst: RSA_set0_crt_params
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2088,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2089,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2090,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2091,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2092,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2093,1
    - Dst: RSA_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2094,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2095,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2096,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2101,1
    - Dst: EVP_PKEY_set1_RSA
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2102,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2103,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 147
    argCount: 6
    argNames:
    - key_r
    - want_private_key
    - root
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - EVP_PKEY**
    - bool
    - struct json_tree_node*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2107
      start: 1916
    functionDepth: 2
    functionLinenumber: 1916
    functionLinenumberEnd: 2107
    functionName: load_jwk_rsa_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - json_tree_node_get_member
    - BN_set_flags
    - dcrypt_openssl_error
    - RSA_set0_key
    - RSA_free
    - RSA_check_key
    - RSA_new
    - RSA_set0_crt_params
    - BN_secure_new
    - dcrypt_openssl_derive_rsa_param
    - BN_free
    - t_base64url_decode_str
    - EVP_PKEY_new
    - EVP_PKEY_set1_RSA
    - BN_bin2bn
    - BN_new
    - json_tree_node_get_str
    - RSA_set0_factors
    linkageType: ''
    returnType: bool
    signature: "bool load_jwk_rsa_key(EVP_PKEY **key_r, bool want_private_key,\n\t\t\t
      \    const struct json_tree_node *root,\n\t\t\t     const char *password ATTR_UNUSED,\n\t\t\t
      \    struct dcrypt_private_key *dec_key ATTR_UNUSED,\n\t\t\t     const char
      **error_r)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: parse_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2123,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2124,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2129,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2132,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2134,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2138,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2143,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2143,1
    - Dst: load_jwk_curve_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2144,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2146,1
    - Dst: load_jwk_rsa_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2147,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2153,1
    - Dst: EVP_PKEY_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2157,1
    - Dst: EVP_PKEY_check
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2158,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2159,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2164,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2165,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2171,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2173,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2177,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2178,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2179,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2182,1
    - Dst: jwk_use_to_key_usage
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2183,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2184,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2188,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 49
    argCount: 5
    argNames:
    - key_r
    - data
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - char*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2191
      start: 2110
    functionDepth: 11
    functionLinenumber: 2110
    functionLinenumberEnd: 2191
    functionName: dcrypt_openssl_load_private_key_jwk
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_tree_node_get_member
    - i_assert
    - dcrypt_openssl_error
    - EVP_PKEY_check
    - EVP_PKEY_CTX_new
    - load_jwk_rsa_key
    - EVP_PKEY_free
    - t_strdup_printf
    - i_strdup_empty
    - parse_jwk_key
    - EVP_PKEY_CTX_free
    - load_jwk_curve_key
    - json_tree_get_root
    - json_tree_unref
    - i_new
    - jwk_use_to_key_usage
    - json_tree_node_get_str
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key_jwk(struct dcrypt_private_key
      **key_r,\n\t\t\t\t    const char *data, const char *password,\n\t\t\t\t    struct
      dcrypt_private_key *dec_key,\n\t\t\t\t    const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: parse_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2204,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2205,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2210,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2213,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2215,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2219,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2224,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2224,1
    - Dst: load_jwk_curve_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2225,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2227,1
    - Dst: load_jwk_rsa_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2228,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2234,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2237,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2239,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2243,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2244,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2245,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2248,1
    - Dst: jwk_use_to_key_usage
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2249,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2250,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 3
    argNames:
    - key_r
    - data
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2193
    functionDepth: 11
    functionLinenumber: 2193
    functionLinenumberEnd: 2257
    functionName: dcrypt_openssl_load_public_key_jwk
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - strcmp
    - json_tree_node_get_member
    - i_assert
    - load_jwk_rsa_key
    - t_strdup_printf
    - i_strdup_empty
    - parse_jwk_key
    - load_jwk_curve_key
    - json_tree_get_root
    - json_tree_unref
    - i_new
    - jwk_use_to_key_usage
    - json_tree_node_get_str
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key_jwk(struct dcrypt_public_key **key_r,\n\t\t\t\t
      \  const char *data, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BN_num_bytes
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2262,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2263,1
    - Dst: BN_bn2bin
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2264,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - bn
    - dest
    argTypes:
    - BIGNUM*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2268
      start: 2260
    functionDepth: 6
    functionLinenumber: 2260
    functionLinenumberEnd: 2268
    functionName: bn2base64url
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - BN_bn2bin
    - BN_num_bytes
    - base64url_encode
    - t_malloc_no0
    linkageType: ''
    returnType: int
    signature: int bn2base64url(const BIGNUM *bn, string_t *dest)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2277,1
    - Dst: key_usage_to_jwk_use
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2279,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2280,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2281,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2282,1
    - Dst: EVP_PKEY_get0_RSA
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2283,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2286,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2287,1
    - Dst: RSA_get0_n
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2288,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2289,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2290,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2291,1
    - Dst: RSA_get0_e
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2292,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2293,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2294,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2297,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2299,1
    - Dst: RSA_get0_d
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2302,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2305,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2308,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2309,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2310,1
    - Dst: RSA_get0_p
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2311,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2312,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2313,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2314,1
    - Dst: RSA_get0_q
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2315,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2316,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2317,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2318,1
    - Dst: RSA_get0_dmp1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2319,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2320,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2321,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2322,1
    - Dst: RSA_get0_dmq1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2323,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2324,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2325,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2326,1
    - Dst: RSA_get0_iqmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2327,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2328,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2329,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2330,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2332,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2333,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2334,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 9
    argNames:
    - pkey
    - is_private_key
    - usage
    - key_id
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - dest
    - error_r
    argTypes:
    - EVP_PKEY*
    - bool
    - enum dcrypt_key_usage
    - char*
    - char*
    - char*
    - struct dcrypt_public_key*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2336
      start: 2270
    functionDepth: 18
    functionLinenumber: 2270
    functionLinenumberEnd: 2336
    functionName: store_jwk_rsa_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - RSA_get0_q
    - json_ostream_nwrite_string
    - EVP_PKEY_get0_RSA
    - RSA_get0_d
    - t_str_new
    - RSA_get0_n
    - RSA_get0_e
    - RSA_get0_dmq1
    - RSA_get0_p
    - json_ostream_destroy
    - bn2base64url
    - json_ostream_nascend_object
    - RSA_get0_dmp1
    - RSA_get0_iqmp
    - i_assert
    - json_ostream_ndescend_object
    - str_append_str
    - json_ostream_create_str
    - str_truncate
    - key_usage_to_jwk_use
    - json_ostream_nfinish_destroy
    - json_ostream_nwrite_string_buffer
    linkageType: ''
    returnType: bool
    signature: "bool store_jwk_rsa_key(EVP_PKEY *pkey, bool is_private_key,\n\t\t\t
      \     enum dcrypt_key_usage usage, const char *key_id,\n\t\t\t      const char
      *cipher ATTR_UNUSED,\n\t\t\t      const char *password ATTR_UNUSED,\n\t\t\t
      \     struct dcrypt_public_key *enc_key ATTR_UNUSED,\n\t\t\t      string_t *dest,
      const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2346,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2351,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2352,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2353,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2354,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2355,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2356,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2357,1
    - Dst: EVP_PKEY_get_raw_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2360,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2361,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2362,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2363,1
    - Dst: EVP_PKEY_get_raw_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2364,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2365,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2366,1
    - Dst: EVP_PKEY_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2370,1
    - Dst: nid_to_jwk_curve
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2371,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2372,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2373,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2374,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2376,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2377,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2378,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2379,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2381,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2382,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2384,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2385,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2386,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2387,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2389,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2391,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2394,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2395,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2397,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2399,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2400,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2401,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 9
    argNames:
    - pkey
    - is_private_key
    - ATTR_UNUSED
    - key_id
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - dest
    - error_r
    argTypes:
    - EVP_PKEY*
    - bool
    - enum dcrypt_key_usage
    - char*
    - char*
    - char*
    - struct dcrypt_public_key*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2403
      start: 2339
    functionDepth: 18
    functionLinenumber: 2339
    functionLinenumberEnd: 2403
    functionName: store_jwk_ed_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - IS_XD_CURVE
    - json_ostream_nwrite_string
    - EVP_PKEY_get_raw_public_key
    - t_str_new
    - dcrypt_openssl_error
    - i_unreached
    - EVP_PKEY_id
    - EVP_PKEY_get_raw_private_key
    - base64url_encode
    - json_ostream_nascend_object
    - IS_ED_CURVE
    - buffer_append_space_unsafe
    - i_assert
    - json_ostream_ndescend_object
    - nid_to_jwk_curve
    - str_append_str
    - json_ostream_create_str
    - t_buffer_create
    - str_truncate
    - json_ostream_nfinish_destroy
    - json_ostream_nwrite_string_buffer
    linkageType: ''
    returnType: bool
    signature: "bool store_jwk_ed_key(EVP_PKEY *pkey, bool is_private_key,\n\t\t\t
      \    enum dcrypt_key_usage usage ATTR_UNUSED,\n\t\t\t     const char *key_id,
      const char *cipher ATTR_UNUSED,\n\t\t\t     const char *password ATTR_UNUSED,\n\t\t\t
      \    struct dcrypt_public_key *enc_key ATTR_UNUSED,\n\t\t\t     string_t *dest,
      const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2416,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2417,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2418,1
    - Dst: EC_GROUP_get_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2420,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2420,1
    - Dst: EC_KEY_get0_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2421,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2424,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2425,1
    - Dst: EC_POINT_get_affine_coordinates_GFp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2426,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2426,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2428,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2429,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2430,1
    - Dst: nid_to_jwk_curve
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2433,1
    - Dst: key_usage_to_jwk_use
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2434,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2435,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2436,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2437,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2439,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2440,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2441,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2442,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2443,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2444,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2445,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2446,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2449,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2451,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2452,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2453,1
    - Dst: EC_KEY_get0_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2456,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2459,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2462,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2463,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2464,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2466,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2467,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2468,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 9
    argNames:
    - pkey
    - is_private_key
    - usage
    - key_id
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - dest
    - error_r
    argTypes:
    - EVP_PKEY*
    - bool
    - enum dcrypt_key_usage
    - char*
    - char*
    - char*
    - struct dcrypt_public_key*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2470
      start: 2408
    functionDepth: 18
    functionLinenumber: 2408
    functionLinenumberEnd: 2470
    functionName: store_jwk_ec_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_get0_public_key
    - json_ostream_nwrite_string
    - BN_new
    - t_str_new
    - dcrypt_openssl_error
    - EC_KEY_get0_group
    - EC_KEY_get0_private_key
    - EC_GROUP_get_curve_name
    - bn2base64url
    - json_ostream_nascend_object
    - EVP_PKEY_get0_EC_KEY
    - i_assert
    - json_ostream_ndescend_object
    - nid_to_jwk_curve
    - str_append_str
    - json_ostream_create_str
    - BN_free
    - str_truncate
    - EC_POINT_get_affine_coordinates_GFp
    - key_usage_to_jwk_use
    - json_ostream_nfinish_destroy
    - json_ostream_nwrite_string_buffer
    linkageType: ''
    returnType: bool
    signature: "bool store_jwk_ec_key(EVP_PKEY *pkey, bool is_private_key,\n\t\t\t
      \    enum dcrypt_key_usage usage,\n\t\t\t     const char *key_id,\n\t\t\t     const
      char *cipher ATTR_UNUSED,\n\t\t\t     const char *password ATTR_UNUSED,\n\t\t\t
      \    struct dcrypt_public_key *enc_key ATTR_UNUSED,\n\t\t\t     string_t *dest,
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2484,1
    - Dst: store_jwk_rsa_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2486,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2490,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2490,1
    - Dst: store_jwk_ed_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2491,1
    - Dst: store_jwk_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2496,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 9
    argNames:
    - pkey
    - is_private_key
    - usage
    - key_id
    - cipher
    - password
    - enc_key
    - dest
    - error_r
    argTypes:
    - EVP_PKEY*
    - bool
    - enum dcrypt_key_usage
    - char*
    - char*
    - char*
    - struct dcrypt_public_key*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2501
      start: 2472
    functionDepth: 0
    functionLinenumber: 2472
    functionLinenumberEnd: 2501
    functionName: store_jwk_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - IS_XD_CURVE
    - store_jwk_ed_key
    - IS_ED_CURVE
    - store_jwk_ec_key
    - store_jwk_rsa_key
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool store_jwk_key(EVP_PKEY *pkey, bool is_private_key,\n\t\t\t  enum
      dcrypt_key_usage usage,\n\t\t\t  const char *key_id,\n\t\t\t  const char *cipher,\n\t\t\t
      \ const char *password,\n\t\t\t  struct dcrypt_public_key *enc_key,\n\t\t\t
      \ string_t *dest, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2510,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2511,1
    - Dst: dcrypt_openssl_load_private_key_dovecot_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2515,1
    - Dst: dcrypt_openssl_load_private_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2518,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - key_r
    - data
    - password
    - key
    - version
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - char*
    - char*
    - struct dcrypt_private_key*
    - enum dcrypt_key_version
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2524
      start: 2503
    functionDepth: 5
    functionLinenumber: 2503
    functionLinenumberEnd: 2524
    functionName: dcrypt_openssl_load_private_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_unreached
    - dcrypt_openssl_load_private_key_dovecot_v2
    - str_array_length
    - t_strsplit
    - dcrypt_openssl_load_private_key_dovecot_v1
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key_dovecot(struct dcrypt_private_key
      **key_r,\n\t\t\t\t\tconst char *data, const char *password,\n\t\t\t\t\tstruct
      dcrypt_private_key *key,\n\t\t\t\t\tenum dcrypt_key_version version,\n\t\t\t\t\tconst
      char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2532,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2537,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2539,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2543,1
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2544,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2546,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2546,1
    - Dst: EC_POINT_hex2point
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2548,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2548,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2550,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2551,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2552,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2553,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2556,1
    - Dst: EC_KEY_set_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2558,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2559,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2561,1
    - Dst: EC_KEY_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2563,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2564,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2565,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2566,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2568,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2570,1
    - Dst: dcrypt_openssl_public_key_id_old
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2572,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2573,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2576,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2576,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2579,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2582,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2588,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 4
    argNames:
    - key_r
    - len
    - input
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2590
      start: 2526
    functionDepth: 6
    functionLinenumber: 2526
    functionLinenumberEnd: 2590
    functionName: dcrypt_openssl_load_public_key_dovecot_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_check_key
    - BN_CTX_new
    - EC_KEY_new_by_curve_name
    - EC_POINT_hex2point
    - dcrypt_openssl_error
    - EVP_PKEY_set1_EC_KEY
    - EC_KEY_get0_group
    - binary_to_hex
    - EC_POINT_new
    - i_zero
    - EC_POINT_free
    - EVP_PKEY_free
    - EC_KEY_set_public_key
    - dcrypt_openssl_public_key_id_old
    - EC_KEY_free
    - EC_KEY_set_asn1_flag
    - strcmp
    - BN_CTX_free
    - t_buffer_create
    - EVP_PKEY_new
    - i_new
    - str_to_int
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key_dovecot_v1(struct dcrypt_public_key
      **key_r,\n\t\t\t\t\t  int len, const char **input,\n\t\t\t\t\t  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2598,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2601,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2602,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2605,1
    - Dst: d2i_PUBKEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2606,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2607,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2608,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2613,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2615,1
    - Dst: dcrypt_openssl_public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2617,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2618,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2621,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2621,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2623,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2627,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - key_r
    - len
    - input
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2631
      start: 2592
    functionDepth: 6
    functionLinenumber: 2592
    functionLinenumberEnd: 2631
    functionName: dcrypt_openssl_load_public_key_dovecot_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_zero
    - d2i_PUBKEY
    - strcmp
    - dcrypt_openssl_error
    - hex_to_binary
    - strlen
    - EVP_PKEY_free
    - t_buffer_create
    - binary_to_hex
    - EVP_PKEY_new
    - i_new
    - buffer_create_from_data
    - dcrypt_openssl_public_key_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key_dovecot_v2(struct dcrypt_public_key
      **key_r,\n\t\t\t\t\t  int len, const char **input,\n\t\t\t\t\t  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2639,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2640,1
    - Dst: dcrypt_openssl_load_public_key_dovecot_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2644,1
    - Dst: dcrypt_openssl_load_public_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2647,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - key_r
    - data
    - version
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - char*
    - enum dcrypt_key_version
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2653
      start: 2633
    functionDepth: 5
    functionLinenumber: 2633
    functionLinenumberEnd: 2653
    functionName: dcrypt_openssl_load_public_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_load_public_key_dovecot_v1
    - i_unreached
    - str_array_length
    - t_strsplit
    - dcrypt_openssl_load_public_key_dovecot_v2
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key_dovecot(struct dcrypt_public_key
      **key_r,\n\t\t\t\t       const char *data,\n\t\t\t\t       enum dcrypt_key_version
      version,\n\t\t\t\t       const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2667,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2668,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2669,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2671,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2672,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2673,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2674,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2676,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2679,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2679,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2684,1
    - Dst: buffer_get_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2686,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2689,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2690,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2691,1
    - Dst: dcrypt_rsa_encrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2692,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2698,1
    - Dst: dcrypt_openssl_ecdh_derive_secret_peer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2700,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2706,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2710,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2714,1
    - Dst: dcrypt_openssl_cipher_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2715,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2719,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2720,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2724,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2727,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2729,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2731,1
    - Dst: dcrypt_openssl_public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2732,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2735,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 7
    argNames:
    - key
    - enctype
    - cipher
    - password
    - enc_key
    - destination
    - error_r
    argTypes:
    - buffer_t*
    - int
    - char*
    - char*
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2739
      start: 2655
    functionDepth: 11
    functionLinenumber: 2655
    functionLinenumberEnd: 2739
    functionName: dcrypt_openssl_encrypt_private_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_ecdh_derive_secret_peer
    - IS_XD_CURVE
    - t_strdup_printf
    - buffer_set_used_size
    - dcrypt_openssl_public_key_id
    - random_fill
    - str_append_c
    - i_unreached
    - dcrypt_openssl_cipher_key_dovecot_v2
    - buffer_get_used_size
    - EVP_PKEY_base_id
    - buffer_append_space_unsafe
    - dcrypt_rsa_encrypt
    - binary_to_hex_append
    - t_str_lcase
    - t_buffer_create
    - buffer_clear_safe
    - buffer_create_from_const_data
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_encrypt_private_key_dovecot(buffer_t *key, int
      enctype,\n\t\t\t\t\t   const char *cipher,\n\t\t\t\t\t   const char *password,\n\t\t\t\t\t
      \  struct dcrypt_public_key *enc_key,\n\t\t\t\t\t   buffer_t *destination,\n\t\t\t\t\t
      \  const char **error_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2749,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2755,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2757,1
    - Dst: EC_GROUP_get_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2757,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2758,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2758,1
    - Dst: EC_KEY_set_conv_form
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2759,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2759,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2763,1
    - Dst: EVP_PKEY_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2763,1
    - Dst: OBJ_obj2txt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2767,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2769,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2775,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2777,1
    - Dst: EVP_PKEY_get0_RSA
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2781,1
    - Dst: i2d_RSAPrivateKey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2782,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2784,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2785,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2787,1
    - Dst: EVP_PKEY_get_raw_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2790,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2791,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2795,1
    - Dst: EC_KEY_get0_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2796,1
    - Dst: BN_bn2mpi
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2798,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2799,1
    - Dst: BN_bn2mpi
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2800,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2803,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2807,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2808,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2809,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2812,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2813,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2817,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2821,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2821,1
    - Dst: dcrypt_openssl_encrypt_private_key_dovecot
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2826,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2829,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2833,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2837,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2838,1
    - Dst: dcrypt_openssl_private_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2839,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2840,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2844,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 59
    argCount: 6
    argNames:
    - key
    - cipher
    - destination
    - password
    - enc_key
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - buffer_t*
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2848
      start: 2741
    functionDepth: 11
    functionLinenumber: 2741
    functionLinenumberEnd: 2848
    functionName: dcrypt_openssl_store_private_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - OBJ_nid2obj
    - IS_XD_CURVE
    - i2d_RSAPrivateKey
    - t_strdup_printf
    - buffer_set_used_size
    - str_begins_icase
    - EVP_PKEY_get0_RSA
    - buffer_append
    - dcrypt_openssl_error
    - str_append_c
    - i_unreached
    - EVP_PKEY_id
    - EVP_PKEY_get_raw_private_key
    - buffer_get_used_size
    - EC_KEY_get0_group
    - OBJ_obj2txt
    - EC_KEY_get0_private_key
    - EC_GROUP_get_curve_name
    - EVP_PKEY_base_id
    - EVP_PKEY_get0_EC_KEY
    - buffer_append_space_unsafe
    - i_assert
    - binary_to_hex_append
    - dcrypt_openssl_encrypt_private_key_dovecot
    - t_buffer_create
    - BN_bn2mpi
    - buffer_clear_safe
    - EC_KEY_set_conv_form
    - str_append
    - dcrypt_openssl_private_key_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_store_private_key_dovecot(struct dcrypt_private_key
      *key,\n\t\t\t\t\t const char *cipher,\n\t\t\t\t\t buffer_t *destination,\n\t\t\t\t\t
      const char *password,\n\t\t\t\t\t struct dcrypt_public_key *enc_key,\n\t\t\t\t\t
      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2857,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2859,1
    - Dst: EC_KEY_set_conv_form
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2860,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2860,1
    - Dst: i2d_PUBKEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2862,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2865,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2868,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2869,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2870,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2871,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2874,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2876,1
    - Dst: dcrypt_openssl_public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2877,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2880,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2884,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2884,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - key
    - destination
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2886
      start: 2850
    functionDepth: 6
    functionLinenumber: 2850
    functionLinenumberEnd: 2886
    functionName: dcrypt_openssl_store_public_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - str_append_c
    - EVP_PKEY_get0_EC_KEY
    - t_buffer_create
    - buffer_get_used_size
    - i2d_PUBKEY
    - buffer_set_used_size
    - binary_to_hex
    - EC_KEY_set_conv_form
    - OPENSSL_free
    - str_append
    - dcrypt_openssl_public_key_id
    - binary_to_hex_append
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_store_public_key_dovecot(struct dcrypt_public_key
      *key,\n\t\t\t\t\tbuffer_t *destination,\n\t\t\t\t\tconst char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2894,1
    - Dst: dcrypt_openssl_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2899,1
    - Dst: dcrypt_openssl_load_private_key_jwk
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2909,1
    - Dst: dcrypt_openssl_load_private_key_dovecot
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2913,1
    - Dst: BIO_new_mem_buf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2918,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2918,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2920,1
    - Dst: PEM_read_bio_PrivateKey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2922,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2924,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2927,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2928,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2931,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2932,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2932,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2936,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 5
    argNames:
    - key_r
    - data
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - char*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2941
      start: 2888
    functionDepth: 1
    functionLinenumber: 2888
    functionLinenumberEnd: 2941
    functionName: dcrypt_openssl_load_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - BIO_new_mem_buf
    - dcrypt_openssl_key_string_get_info
    - dcrypt_openssl_error
    - strlen
    - EVP_PKEY_free
    - EVP_PKEY_get0_EC_KEY
    - EVP_PKEY_new
    - i_new
    - dcrypt_openssl_load_private_key_dovecot
    - PEM_read_bio_PrivateKey
    - EVP_PKEY_base_id
    - dcrypt_openssl_load_private_key_jwk
    - i_assert
    - EC_KEY_set_asn1_flag
    - BIO_vfree
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key(struct dcrypt_private_key **key_r,\n\t\t\t\tconst
      char *data, const char *password,\n\t\t\t\tstruct dcrypt_private_key *dec_key,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2950,1
    - Dst: dcrypt_openssl_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2952,1
    - Dst: dcrypt_openssl_load_public_key_jwk
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2964,1
    - Dst: dcrypt_openssl_load_public_key_dovecot
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2967,1
    - Dst: BIO_new_mem_buf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2971,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2971,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2973,1
    - Dst: PEM_read_bio_PUBKEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2975,1
    - Dst: BIO_reset
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2976,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2977,1
    - Dst: BIO_gets
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2981,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2982,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2983,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2985,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2989,1
    - Dst: BIO_f_base64
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2989,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2991,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2992,1
    - Dst: d2i_EC_PUBKEY_bio
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2994,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2996,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2997,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:2999,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3000,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3004,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3007,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3009,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 3
    argNames:
    - key_r
    - data
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 2943
    functionDepth: 1
    functionLinenumber: 2943
    functionLinenumberEnd: 3014
    functionName: dcrypt_openssl_load_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - PEM_read_bio_PUBKEY
    - strlen
    - BIO_f_base64
    - dcrypt_openssl_key_string_get_info
    - dcrypt_openssl_error
    - BIO_gets
    - EVP_PKEY_set1_EC_KEY
    - i_unreached
    - dcrypt_openssl_load_public_key_jwk
    - BIO_reset
    - i_assert
    - d2i_EC_PUBKEY_bio
    - EC_KEY_set_asn1_flag
    - EC_KEY_free
    - BIO_vfree
    - strcmp
    - BIO_new_mem_buf
    - dcrypt_openssl_load_public_key_dovecot
    - EVP_PKEY_new
    - i_new
    - BIO_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key(struct dcrypt_public_key **key_r,\n\t\t\t
      \      const char *data, const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3024,1
    - Dst: dcrypt_openssl_store_private_key_dovecot
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3029,1
    - Dst: store_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3038,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3044,1
    - Dst: EC_KEY_set_conv_form
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3045,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3045,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3048,1
    - Dst: BIO_s_mem
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3048,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3050,1
    - Dst: EVP_get_cipherbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3054,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3056,1
    - Dst: PEM_write_bio_PrivateKey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3061,1
    - Dst: BIO_flush
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3064,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3068,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3069,1
    - Dst: BIO_get_mem_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3074,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3075,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3076,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 7
    argNames:
    - key
    - format
    - cipher
    - destination
    - password
    - enc_key
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - enum dcrypt_key_format
    - char*
    - buffer_t*
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3079
      start: 3016
    functionDepth: 11
    functionLinenumber: 3016
    functionLinenumberEnd: 3079
    functionName: dcrypt_openssl_store_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - PEM_write_bio_PrivateKey
    - buffer_append
    - dcrypt_openssl_error
    - BIO_get_mem_data
    - BIO_vfree
    - BIO_flush
    - dcrypt_openssl_store_private_key_dovecot
    - store_jwk_key
    - EVP_PKEY_get0_EC_KEY
    - EVP_get_cipherbyname
    - t_strdup_printf
    - BIO_new
    - EC_KEY_set_conv_form
    - i_assert
    - BIO_s_mem
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_store_private_key(struct dcrypt_private_key *key,\n\t\t\t\t
      enum dcrypt_key_format format,\n\t\t\t\t const char *cipher, buffer_t *destination,\n\t\t\t\t
      const char *password,\n\t\t\t\t struct dcrypt_public_key *enc_key,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3088,1
    - Dst: dcrypt_openssl_store_public_key_dovecot
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3091,1
    - Dst: store_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3099,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3105,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3106,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3106,1
    - Dst: EC_KEY_set_conv_form
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3107,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3107,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3110,1
    - Dst: BIO_s_mem
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3110,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3112,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3115,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3115,1
    - Dst: PEM_write_bio_PUBKEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3116,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3117,1
    - Dst: BIO_f_base64
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3117,1
    - Dst: BIO_puts
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3120,1
    - Dst: BIO_push
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3121,1
    - Dst: i2d_EC_PUBKEY_bio
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3122,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3122,1
    - Dst: BIO_flush
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3123,1
    - Dst: BIO_pop
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3125,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3126,1
    - Dst: BIO_puts
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3127,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3132,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3133,1
    - Dst: BIO_get_mem_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3138,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3139,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3140,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 4
    argNames:
    - key
    - format
    - destination
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - enum dcrypt_key_format
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3143
      start: 3081
    functionDepth: 5
    functionLinenumber: 3081
    functionLinenumberEnd: 3143
    functionName: dcrypt_openssl_store_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - IS_XD_CURVE
    - i2d_EC_PUBKEY_bio
    - BIO_f_base64
    - BIO_s_mem
    - buffer_append
    - dcrypt_openssl_error
    - EVP_PKEY_base_id
    - BIO_pop
    - store_jwk_key
    - EVP_PKEY_get0_EC_KEY
    - IS_ED_CURVE
    - dcrypt_openssl_store_public_key_dovecot
    - PEM_write_bio_PUBKEY
    - i_assert
    - BIO_puts
    - BIO_vfree
    - BIO_get_mem_data
    - BIO_flush
    - EC_KEY_set_conv_form
    - BIO_push
    - BIO_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_store_public_key(struct dcrypt_public_key *key,\n\t\t\t\tenum
      dcrypt_key_format format,\n\t\t\t\tbuffer_t *destination, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3149,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3154,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3155,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3156,1
    - Dst: RSAPublicKey_dup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3159,1
    - Dst: EVP_PKEY_get0_RSA
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3159,1
    - Dst: EVP_PKEY_set1_RSA
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3160,1
    - Dst: RSA_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3161,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3163,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3163,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3166,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3167,1
    - Dst: EVP_PKEY_new_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3168,1
    - Dst: EVP_PKEY_get1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3171,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3172,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3173,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3174,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3177,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - priv_key
    - pub_key_r
    argTypes:
    - struct dcrypt_private_key*
    - struct dcrypt_public_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3183
      start: 3145
    functionDepth: 1
    functionLinenumber: 3145
    functionLinenumberEnd: 3183
    functionName: dcrypt_openssl_private_to_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 2
    functionsReached:
    - RSA_free
    - EC_KEY_free
    - EVP_PKEY_set1_EC_KEY
    - i_unreached
    - IS_XD_CURVE
    - EVP_PKEY_free
    - IS_ED_CURVE
    - EVP_PKEY_set1_RSA
    - EVP_PKEY_new
    - EVP_PKEY_new_raw_public_key
    - i_new
    - RSAPublicKey_dup
    - EVP_PKEY_get0_RSA
    - i_assert
    - EC_KEY_set_asn1_flag
    - EVP_PKEY_get_raw_public_key
    - EVP_PKEY_get1_EC_KEY
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_private_to_public_key(struct dcrypt_private_key
      *priv_key,\n\t\t\t\t     struct dcrypt_public_key **pub_key_r)"
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3201,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3204,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3207,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3211,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3213,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3215,1
    - Dst: parse_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3228,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3234,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3235,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3236,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3237,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3240,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3241,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3245,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3246,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3247,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3252,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3256,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3258,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3261,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3265,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3266,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3276,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3280,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3283,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3286,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3290,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3295,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3299,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3302,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3305,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3309,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3321,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3328,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3329,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3333,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3334,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 130
    argCount: 8
    argNames:
    - key_data
    - format_r
    - version_r
    - kind_r
    - encryption_type_r
    - encryption_key_hash_r
    - key_hash_r
    - error_r
    argTypes:
    - char*
    - enum dcrypt_key_format*
    - enum dcrypt_key_version*
    - enum dcrypt_key_kind*
    - enum dcrypt_key_encryption_type*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3337
      start: 3185
    functionDepth: 5
    functionLinenumber: 3185
    functionLinenumberEnd: 3337
    functionName: dcrypt_openssl_key_string_get_info
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 2
    functionsReached:
    - strcmp
    - json_tree_node_get_member
    - str_begins_with
    - json_tree_node_get_str
    - str_begins
    - str_array_length
    - parse_jwk_key
    - t_strsplit
    - i_strdup
    - json_tree_get_root
    - json_tree_unref
    - t_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_string_get_info(\n\tconst char *key_data,
      enum dcrypt_key_format *format_r,\n\tenum dcrypt_key_version *version_r, enum
      dcrypt_key_kind *kind_r,\n\tenum dcrypt_key_encryption_type *encryption_type_r,\n\tconst
      char **encryption_key_hash_r, const char **key_hash_r,\n\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3343
      start: 3339
    functionDepth: 1
    functionLinenumber: 3339
    functionLinenumberEnd: 3343
    functionName: dcrypt_openssl_ref_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ref_public_key(struct dcrypt_public_key *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3349
      start: 3345
    functionDepth: 1
    functionLinenumber: 3345
    functionLinenumberEnd: 3349
    functionName: dcrypt_openssl_ref_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ref_private_key(struct dcrypt_private_key *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3353,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3357,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3360,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3361,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3363
      start: 3351
    functionDepth: 1
    functionLinenumber: 3351
    functionLinenumberEnd: 3363
    functionName: dcrypt_openssl_unref_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached:
    - EVP_PKEY_free
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_unref_public_key(struct dcrypt_public_key **key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3367,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3371,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3374,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3375,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3376,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3377
      start: 3365
    functionDepth: 1
    functionLinenumber: 3365
    functionLinenumberEnd: 3377
    functionName: dcrypt_openssl_unref_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached:
    - EVP_PKEY_free
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_unref_private_key(struct dcrypt_private_key **key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3381,1
    - Dst: dcrypt_openssl_unref_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3382,1
    - Dst: dcrypt_openssl_unref_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - keypair
    argTypes:
    - struct dcrypt_keypair*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3384
      start: 3379
    functionDepth: 1
    functionLinenumber: 3379
    functionLinenumberEnd: 3384
    functionName: dcrypt_openssl_unref_keypair
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_unref_public_key
    - i_assert
    - dcrypt_openssl_unref_private_key
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_unref_keypair(struct dcrypt_keypair *keypair)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3392,1
    - Dst: dcrypt_openssl_padding_mode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3393,1
    - Dst: EVP_PKEY_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3396,1
    - Dst: EVP_PKEY_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3397,1
    - Dst: EVP_PKEY_encrypt_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3401,1
    - Dst: EVP_PKEY_CTX_set_rsa_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3402,1
    - Dst: EVP_PKEY_encrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3403,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3404,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3407,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3411,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 6
    argNames:
    - key
    - data
    - data_len
    - result
    - padding
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - unsigned char*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3414
      start: 3386
    functionDepth: 5
    functionLinenumber: 3386
    functionLinenumberEnd: 3414
    functionName: dcrypt_openssl_rsa_encrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_padding_mode
    - buffer_append
    - dcrypt_openssl_error
    - EVP_PKEY_CTX_new
    - EVP_PKEY_size
    - EVP_PKEY_encrypt_init
    - EVP_PKEY_CTX_set_rsa_padding
    - EVP_PKEY_CTX_free
    - i_assert
    - EVP_PKEY_encrypt
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_rsa_encrypt(struct dcrypt_public_key *key,\n\t\t\t
      \  const unsigned char *data, size_t data_len,\n\t\t\t   buffer_t *result, enum
      dcrypt_padding padding,\n\t\t\t   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3422,1
    - Dst: dcrypt_openssl_padding_mode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3423,1
    - Dst: EVP_PKEY_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3426,1
    - Dst: EVP_PKEY_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3427,1
    - Dst: EVP_PKEY_decrypt_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3431,1
    - Dst: EVP_PKEY_CTX_set_rsa_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3432,1
    - Dst: EVP_PKEY_decrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3433,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3434,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3437,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3441,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 6
    argNames:
    - key
    - data
    - data_len
    - result
    - padding
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - unsigned char*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3444
      start: 3416
    functionDepth: 5
    functionLinenumber: 3416
    functionLinenumberEnd: 3444
    functionName: dcrypt_openssl_rsa_decrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached:
    - dcrypt_openssl_padding_mode
    - EVP_PKEY_decrypt
    - buffer_append
    - dcrypt_openssl_error
    - EVP_PKEY_CTX_new
    - EVP_PKEY_size
    - EVP_PKEY_CTX_set_rsa_padding
    - EVP_PKEY_CTX_free
    - EVP_PKEY_decrypt_init
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_rsa_decrypt(struct dcrypt_private_key *key,\n\t\t\t
      \  const unsigned char *data, size_t data_len,\n\t\t\t   buffer_t *result, enum
      dcrypt_padding padding,\n\t\t\t   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3451,1
    - Dst: d2i_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3452,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3454,1
    - Dst: OBJ_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3458,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3461,1
    - Dst: OBJ_obj2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3461,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3463,1
    - Dst: OBJ_obj2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3463,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - oid
    - oid_len
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3467
      start: 3446
    functionDepth: 1
    functionLinenumber: 3446
    functionLinenumberEnd: 3467
    functionName: dcrypt_openssl_oid2name
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - OBJ_obj2nid
    - ASN1_OBJECT_free
    - d2i_ASN1_OBJECT
    - OBJ_nid2sn
    - OBJ_cmp
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *\ndcrypt_openssl_oid2name(const unsigned char *oid, size_t oid_len,\n\t\t\tconst
      char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3472,1
    - Dst: OBJ_txt2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3473,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3475,1
    - Dst: OBJ_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3477,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3479,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3480,1
    - Dst: OBJ_dup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3481,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3488,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3489,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3490,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3491,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3493,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - name
    - oid
    - error_r
    argTypes:
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3495
      start: 3469
    functionDepth: 5
    functionLinenumber: 3469
    functionLinenumberEnd: 3495
    functionName: dcrypt_openssl_name2oid
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - OBJ_length
    - i2d_ASN1_OBJECT
    - OBJ_dup
    - strcasecmp
    - ASN1_OBJECT_free
    - OBJ_txt2obj
    - buffer_append_space_unsafe
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_name2oid(const char *name, buffer_t *oid, const
      char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3500,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3502,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3505,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3507,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3508
      start: 3497
    functionDepth: 1
    functionLinenumber: 3497
    functionLinenumberEnd: 3508
    functionName: dcrypt_openssl_private_key_type
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - IS_XD_CURVE
    - i_assert
    - i_unreached
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: enum dcrypt_key_type
    signature: enum dcrypt_key_type dcrypt_openssl_private_key_type(struct dcrypt_private_key
      *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3513,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3515,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3518,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3521
      start: 3510
    functionDepth: 1
    functionLinenumber: 3510
    functionLinenumberEnd: 3521
    functionName: dcrypt_openssl_public_key_type
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - IS_XD_CURVE
    - i_assert
    - i_unreached
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: enum dcrypt_key_type
    signature: enum dcrypt_key_type dcrypt_openssl_public_key_type(struct dcrypt_public_key
      *key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3529,1
    - Dst: dcrypt_openssl_public_key_type
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3532,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3537,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3541,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3544,1
    - Dst: OPENSSL_buf2hexstr
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3545,1
    - Dst: ec_key_get_pub_point_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3550,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3550,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3552,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3556,1
    - Dst: SHA256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3558,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3558,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3559,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3560,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - key
    - result
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3562
      start: 3524
    functionDepth: 5
    functionLinenumber: 3524
    functionLinenumberEnd: 3562
    functionName: dcrypt_openssl_public_key_id_old
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - OPENSSL_buf2hexstr
    - i_unreached
    - IS_XD_CURVE
    - ec_key_get_pub_point_hex
    - strlen
    - EVP_PKEY_get0_EC_KEY
    - SHA256
    - OPENSSL_free
    - i_assert
    - EVP_PKEY_get_raw_public_key
    - dcrypt_openssl_public_key_type
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_public_key_id_old(struct dcrypt_public_key *key,\n\t\t\t\t
      buffer_t *result, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3569,1
    - Dst: dcrypt_openssl_private_key_type
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3572,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3577,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3581,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3584,1
    - Dst: OPENSSL_buf2hexstr
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3585,1
    - Dst: ec_key_get_pub_point_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3590,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3590,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3592,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3596,1
    - Dst: SHA256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3598,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3598,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3599,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3600,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - key
    - result
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3602
      start: 3564
    functionDepth: 5
    functionLinenumber: 3564
    functionLinenumberEnd: 3602
    functionName: dcrypt_openssl_private_key_id_old
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - OPENSSL_buf2hexstr
    - dcrypt_openssl_private_key_type
    - IS_XD_CURVE
    - ec_key_get_pub_point_hex
    - i_unreached
    - strlen
    - EVP_PKEY_get0_EC_KEY
    - SHA256
    - OPENSSL_free
    - i_assert
    - EVP_PKEY_get_raw_public_key
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_private_key_id_old(struct dcrypt_private_key *key,\n\t\t\t\t
      \ buffer_t *result, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3611,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3613,1
    - Dst: EC_KEY_set_conv_form
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3614,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3614,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3617,1
    - Dst: BIO_s_mem
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3617,1
    - Dst: i2d_PUBKEY_bio
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3618,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3619,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3620,1
    - Dst: BIO_get_mem_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3622,1
    - Dst: EVP_MD_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3625,1
    - Dst: EVP_DigestInit_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3627,1
    - Dst: EVP_DigestUpdate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3628,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3629,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3630,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3632,1
    - Dst: EVP_MD_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3635,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3636,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 4
    argNames:
    - key
    - md
    - result
    - error_r
    argTypes:
    - EVP_PKEY*
    - EVP_MD*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3639
      start: 3605
    functionDepth: 5
    functionLinenumber: 3605
    functionLinenumberEnd: 3639
    functionName: dcrypt_openssl_public_key_id_evp
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - EVP_PKEY_base_id
    - BIO_vfree
    - BIO_get_mem_data
    - EVP_PKEY_get0_EC_KEY
    - EC_KEY_set_conv_form
    - i2d_PUBKEY_bio
    - EVP_MD_CTX_new
    - EVP_DigestUpdate
    - EVP_MD_CTX_free
    - EVP_MD_size
    - EVP_DigestFinal_ex
    - EVP_DigestInit_ex
    - BIO_s_mem
    - BIO_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_public_key_id_evp(EVP_PKEY *key,\n\t\t\t\t const
      EVP_MD *md, buffer_t *result,\n\t\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3646,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3647,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3651,1
    - Dst: dcrypt_openssl_public_key_id_evp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3655,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - key
    - algorithm
    - result
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3656
      start: 3641
    functionDepth: 11
    functionLinenumber: 3641
    functionLinenumberEnd: 3656
    functionName: dcrypt_openssl_public_key_id
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 4
    functionsReached:
    - i_assert
    - t_strdup_printf
    - EVP_get_digestbyname
    - dcrypt_openssl_public_key_id_evp
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_public_key_id(struct dcrypt_public_key *key,\n\t\t\t
      \    const char *algorithm, buffer_t *result,\n\t\t\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3663,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3664,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3668,1
    - Dst: dcrypt_openssl_public_key_id_evp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - key
    - algorithm
    - result
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3673
      start: 3658
    functionDepth: 11
    functionLinenumber: 3658
    functionLinenumberEnd: 3673
    functionName: dcrypt_openssl_private_key_id
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 2
    functionsReached:
    - i_assert
    - t_strdup_printf
    - EVP_get_digestbyname
    - dcrypt_openssl_public_key_id_evp
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_private_key_id(struct dcrypt_private_key *key,\n\t\t\t
      \     const char *algorithm, buffer_t *result,\n\t\t\t      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3681,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3683,1
    - Dst: EVP_MD_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3684,1
    - Dst: EVP_MD_CTX_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3685,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3686,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3687,1
    - Dst: EVP_DigestInit_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3688,1
    - Dst: EVP_sha256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3688,1
    - Dst: EVP_DigestUpdate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3689,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3690,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3691,1
    - Dst: EVP_MD_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3695,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 5
    argNames:
    - algorithm
    - data
    - data_len
    - digest_r
    - error_r
    argTypes:
    - char*
    - void*
    - size_t
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3697
      start: 3675
    functionDepth: 5
    functionLinenumber: 3675
    functionLinenumberEnd: 3697
    functionName: dcrypt_openssl_digest
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - EVP_DigestFinal_ex
    - EVP_get_digestbyname
    - buffer_append_space_unsafe
    - EVP_MD_CTX_free
    - EVP_DigestUpdate
    - EVP_MD_size
    - EVP_sha256
    - EVP_DigestInit_ex
    - EVP_MD_CTX_create
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_digest(const char *algorithm, const void *data,
      size_t data_len,\n\t\t      buffer_t *digest_r, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3705,1
    - Dst: EC_GROUP_order_bits
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3707,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3707,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3710,1
    - Dst: dcrypt_openssl_digest
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3711,1
    - Dst: ECDSA_do_sign
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3716,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3717,1
    - Dst: ECDSA_SIG_get0
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3723,1
    - Dst: BN_num_bytes
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3725,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3726,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3729,1
    - Dst: BN_bn2bin
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3730,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3731,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3733,1
    - Dst: BN_num_bytes
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3734,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3735,1
    - Dst: BN_bn2bin
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3736,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3737,1
    - Dst: ECDSA_SIG_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3743,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 6
    argNames:
    - key
    - algorithm
    - data
    - data_len
    - signature_r
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - void*
    - size_t
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3746
      start: 3699
    functionDepth: 6
    functionLinenumber: 3699
    functionLinenumberEnd: 3746
    functionName: dcrypt_openssl_sign_ecdsa
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - BN_bn2bin
    - dcrypt_openssl_error
    - ECDSA_do_sign
    - ECDSA_SIG_free
    - EVP_PKEY_get0_EC_KEY
    - t_buffer_create
    - BN_num_bytes
    - EC_KEY_get0_group
    - dcrypt_openssl_digest
    - buffer_append_space_unsafe
    - ECDSA_SIG_get0
    - i_assert
    - EC_GROUP_order_bits
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_sign_ecdsa(struct dcrypt_private_key *key, const
      char *algorithm,\n\t\t\t  const void *data, size_t data_len, buffer_t *signature_r,\n\t\t\t
      \ const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3758,1
    - Dst: dcrypt_openssl_sign_ecdsa
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3762,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3765,1
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3771,1
    - Dst: dcrypt_openssl_padding_mode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3773,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3779,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3784,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3785,1
    - Dst: EVP_MD_CTX_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3789,1
    - Dst: EVP_DigestSignInit
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3793,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3794,1
    - Dst: EVP_PKEY_CTX_set_rsa_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3795,1
    - Dst: EVP_DigestSign
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3796,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3797,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3799,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3802,1
    - Dst: EVP_DigestSign
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3803,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3804,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3806,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3811,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 8
    argNames:
    - key
    - algorithm
    - format
    - data
    - data_len
    - signature_r
    - padding
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - enum dcrypt_signature_format
    - void*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3814
      start: 3748
    functionDepth: 11
    functionLinenumber: 3748
    functionLinenumberEnd: 3814
    functionName: dcrypt_openssl_sign
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_padding_mode
    - dcrypt_openssl_error
    - EVP_DigestSign
    - i_unreached
    - EVP_PKEY_CTX_set_rsa_padding
    - EVP_MD_CTX_destroy
    - t_strdup_printf
    - EVP_get_digestbyname
    - buffer_set_used_size
    - dcrypt_openssl_sign_ecdsa
    - buffer_append_space_unsafe
    - EVP_DigestSignInit
    - EVP_MD_CTX_create
    - i_assert
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_sign(struct dcrypt_private_key *key, const char
      *algorithm,\n\t\t    enum dcrypt_signature_format format,\n\t\t    const void
      *data, size_t data_len, buffer_t *signature_r,\n\t\t    enum dcrypt_padding
      padding, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3828,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3832,1
    - Dst: dcrypt_openssl_digest
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3833,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3836,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3837,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3839,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3840,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3841,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3842,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3845,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3845,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3847,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3848,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3849,1
    - Dst: ECDSA_SIG_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3853,1
    - Dst: ECDSA_SIG_set0
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3854,1
    - Dst: ECDSA_do_verify
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3857,1
    - Dst: ECDSA_SIG_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3858,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3865,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 8
    argNames:
    - key
    - algorithm
    - data
    - data_len
    - signature
    - signature_len
    - valid_r
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char*
    - void*
    - size_t
    - unsigned char*
    - size_t
    - bool*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3868
      start: 3816
    functionDepth: 6
    functionLinenumber: 3816
    functionLinenumberEnd: 3868
    functionName: dcrypt_openssl_verify_ecdsa
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - ECDSA_do_verify
    - ECDSA_SIG_free
    - EVP_PKEY_get0_EC_KEY
    - t_buffer_create
    - ECDSA_SIG_set0
    - BN_free
    - dcrypt_openssl_digest
    - BN_bin2bn
    - BN_new
    - CONST_PTR_OFFSET
    - ECDSA_SIG_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_verify_ecdsa(struct dcrypt_public_key *key, const
      char *algorithm,\n\t\t\t    const void *data, size_t data_len,\n\t\t\t    const
      unsigned char *signature, size_t signature_len,\n\t\t\t    bool *valid_r, const
      char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3882,1
    - Dst: dcrypt_openssl_verify_ecdsa
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3886,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3890,1
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3896,1
    - Dst: dcrypt_openssl_padding_mode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3897,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3903,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3908,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3909,1
    - Dst: EVP_MD_CTX_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3913,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3917,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3918,1
    - Dst: EVP_PKEY_CTX_set_rsa_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3919,1
    - Dst: EVP_DigestVerify
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3920,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3922,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3929,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 10
    argNames:
    - key
    - algorithm
    - format
    - data
    - data_len
    - signature
    - signature_len
    - valid_r
    - padding
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char*
    - enum dcrypt_signature_format
    - void*
    - size_t
    - unsigned char*
    - size_t
    - bool*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3932
      start: 3870
    functionDepth: 11
    functionLinenumber: 3870
    functionLinenumberEnd: 3932
    functionName: dcrypt_openssl_verify
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_padding_mode
    - EVP_DigestVerifyInit
    - dcrypt_openssl_error
    - i_unreached
    - EVP_PKEY_CTX_set_rsa_padding
    - EVP_MD_CTX_destroy
    - t_strdup_printf
    - EVP_get_digestbyname
    - EVP_DigestVerify
    - dcrypt_openssl_verify_ecdsa
    - EVP_MD_CTX_create
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_verify(struct dcrypt_public_key *key, const char
      *algorithm,\n\t\t      enum dcrypt_signature_format format,\n\t\t      const
      void *data, size_t data_len,\n\t\t      const unsigned char *signature, size_t
      signature_len,\n\t\t      bool *valid_r, enum dcrypt_padding padding,\n\t\t
      \     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3941,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3942,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3942,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3944,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3945,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3947,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3950,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3952,1
    - Dst: EC_KEY_set_conv_form
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3953,1
    - Dst: EC_GROUP_get_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3954,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3954,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3955,1
    - Dst: OBJ_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3956,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3961,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3962,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3963,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3965,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3966,1
    - Dst: EC_KEY_get0_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3968,1
    - Dst: BN_num_bytes
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3969,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3970,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3971,1
    - Dst: BN_bn2bin
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3972,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3973,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3982,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 5
    argNames:
    - key
    - pool
    - type_r
    - keys_r
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - pool_t
    - enum dcrypt_key_type*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3984
      start: 3934
    functionDepth: 3
    functionLinenumber: 3934
    functionLinenumberEnd: 3984
    functionName: dcrypt_openssl_key_store_private_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - OBJ_nid2obj
    - dcrypt_openssl_error
    - array_append_space
    - EC_KEY_get0_group
    - EC_KEY_get0_private_key
    - EC_GROUP_get_curve_name
    - array_append_array
    - EVP_PKEY_base_id
    - BN_bn2bin
    - EVP_PKEY_get0_EC_KEY
    - i_assert
    - OBJ_length
    - i2d_ASN1_OBJECT
    - ASN1_OBJECT_free
    - BN_num_bytes
    - t_array_init
    - EC_KEY_set_conv_form
    - ARRAY_TYPE
    - array_is_created
    - p_malloc
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_store_private_raw(struct dcrypt_private_key
      *key,\n\t\t\t\t     pool_t pool,\n\t\t\t\t     enum dcrypt_key_type *type_r,\n\t\t\t\t
      \    ARRAY_TYPE(dcrypt_raw_key) *keys_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3993,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3995,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3996,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:3998,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4001,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4003,1
    - Dst: EC_KEY_set_conv_form
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4004,1
    - Dst: EC_GROUP_get_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4005,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4005,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4006,1
    - Dst: OBJ_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4007,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4012,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4013,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4014,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4016,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4017,1
    - Dst: EC_KEY_get0_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4020,1
    - Dst: EC_POINT_point2oct
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4021,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4021,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4024,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4025,1
    - Dst: EC_POINT_point2oct
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4028,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4028,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4031,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4038,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - key
    - pool
    - type_r
    - keys_r
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - pool_t
    - enum dcrypt_key_type*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4041
      start: 3986
    functionDepth: 3
    functionLinenumber: 3986
    functionLinenumberEnd: 4041
    functionName: dcrypt_openssl_key_store_public_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - OBJ_nid2obj
    - dcrypt_openssl_error
    - array_append_space
    - array_append_array
    - OBJ_length
    - i2d_ASN1_OBJECT
    - EVP_PKEY_get0_EC_KEY
    - p_malloc
    - EC_KEY_get0_public_key
    - ASN1_OBJECT_free
    - t_array_init
    - EC_KEY_set_conv_form
    - ARRAY_TYPE
    - EC_KEY_get0_group
    - EC_GROUP_get_curve_name
    - i_assert
    - EC_POINT_point2oct
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_store_public_raw(struct dcrypt_public_key
      *key,\n\t\t\t\t    pool_t pool,\n\t\t\t\t    enum dcrypt_key_type *type_r,\n\t\t\t\t
      \   ARRAY_TYPE(dcrypt_raw_key) *keys_r,\n\t\t\t\t    const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4050,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4050,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4050,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4058,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4062,1
    - Dst: d2i_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4064,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4066,1
    - Dst: OBJ_obj2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4067,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4068,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4071,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4072,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4073,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4074,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4075,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4079,1
    - Dst: EC_KEY_set_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4080,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4081,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4084,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4085,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4089,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4089,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4091,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4092,1
    - Dst: EC_POINT_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4095,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4095,1
    - Dst: EC_KEY_get0_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4096,1
    - Dst: EC_KEY_set_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4099,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4100,1
    - Dst: EC_KEY_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4103,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4104,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4105,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4107,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4109,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4110,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4111,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4112,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 4
    argNames:
    - key_r
    - type
    - keys
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - enum dcrypt_key_type
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4121
      start: 4043
    functionDepth: 1
    functionLinenumber: 4043
    functionLinenumberEnd: 4121
    functionName: dcrypt_openssl_key_load_private_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_check_key
    - EC_KEY_set_private_key
    - array_idx
    - EC_KEY_new_by_curve_name
    - array_count
    - dcrypt_openssl_error
    - EVP_PKEY_set1_EC_KEY
    - OBJ_obj2nid
    - d2i_ASN1_OBJECT
    - EC_KEY_get0_group
    - EC_KEY_get0_private_key
    - BN_bin2bn
    - EC_POINT_new
    - EC_POINT_mul
    - BN_secure_new
    - EC_POINT_free
    - EC_KEY_set_public_key
    - i_assert
    - EC_KEY_free
    - EC_KEY_set_asn1_flag
    - ASN1_OBJECT_free
    - BN_free
    - EVP_PKEY_new
    - i_new
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_load_private_raw(struct dcrypt_private_key
      **key_r,\n\t\t\t\t    enum dcrypt_key_type type,\n\t\t\t\t    const ARRAY_TYPE(dcrypt_raw_key)
      *keys,\n\t\t\t\t    const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4130,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4130,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4130,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4138,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4142,1
    - Dst: d2i_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4144,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4146,1
    - Dst: OBJ_obj2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4149,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4150,1
    - Dst: EC_GROUP_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4153,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4155,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4160,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4161,1
    - Dst: EC_POINT_oct2point
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4162,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4164,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4165,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4166,1
    - Dst: EC_KEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4169,1
    - Dst: EC_KEY_set_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4170,1
    - Dst: EC_KEY_set_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4172,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4173,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4174,1
    - Dst: EC_KEY_check_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4176,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4177,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4178,1
    - Dst: EC_KEY_precompute_mult
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4181,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4182,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4183,1
    - Dst: EVP_PKEY_set1_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4184,1
    - Dst: EC_KEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4185,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4186,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 4
    argNames:
    - key_r
    - type
    - keys
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - enum dcrypt_key_type
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4195
      start: 4123
    functionDepth: 1
    functionLinenumber: 4123
    functionLinenumberEnd: 4195
    functionName: dcrypt_openssl_key_load_public_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - EC_KEY_check_key
    - array_idx
    - array_count
    - dcrypt_openssl_error
    - EVP_PKEY_set1_EC_KEY
    - EC_KEY_new
    - OBJ_obj2nid
    - d2i_ASN1_OBJECT
    - EC_POINT_new
    - EC_GROUP_new_by_curve_name
    - EC_KEY_precompute_mult
    - EC_POINT_free
    - EC_KEY_set_public_key
    - EC_POINT_oct2point
    - i_assert
    - EC_KEY_free
    - EC_GROUP_free
    - EC_KEY_set_asn1_flag
    - ASN1_OBJECT_free
    - EC_KEY_set_group
    - EVP_PKEY_new
    - i_new
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_load_public_raw(struct dcrypt_public_key **key_r,\n\t\t\t\t
      \  enum dcrypt_key_type type,\n\t\t\t\t   const ARRAY_TYPE(dcrypt_raw_key) *keys,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4204,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4209,1
    - Dst: EC_GROUP_get_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4209,1
    - Dst: EC_KEY_get0_group
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4210,1
    - Dst: EVP_PKEY_get0_EC_KEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4210,1
    - Dst: OBJ_obj2txt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4212,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4213,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4216,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - key
    - curve_r
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4224
      start: 4197
    functionDepth: 3
    functionLinenumber: 4197
    functionLinenumberEnd: 4224
    functionName: dcrypt_openssl_key_get_curve_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - OBJ_nid2obj
    - dcrypt_openssl_error
    - EVP_PKEY_get0_EC_KEY
    - t_strndup
    - ASN1_OBJECT_free
    - EC_KEY_get0_group
    - OBJ_obj2txt
    - EC_GROUP_get_curve_name
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_get_curve_public(struct dcrypt_public_key
      *key,\n\t\t\t\t    const char **curve_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4231
      start: 4226
    functionDepth: 1
    functionLinenumber: 4226
    functionLinenumberEnd: 4231
    functionName: dcrypt_openssl_key_get_id_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      dcrypt_openssl_key_get_id_public(struct dcrypt_public_key *key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4238
      start: 4233
    functionDepth: 1
    functionLinenumber: 4233
    functionLinenumberEnd: 4238
    functionName: dcrypt_openssl_key_get_id_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      dcrypt_openssl_key_get_id_private(struct dcrypt_private_key *key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4243,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4244,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - id
    argTypes:
    - struct dcrypt_public_key*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4246
      start: 4240
    functionDepth: 2
    functionLinenumber: 4240
    functionLinenumberEnd: 4246
    functionName: dcrypt_openssl_key_set_id_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - i_strdup_empty
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_key_set_id_public(struct dcrypt_public_key *key,
      const char *id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4251,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4252,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - id
    argTypes:
    - struct dcrypt_private_key*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4254
      start: 4248
    functionDepth: 2
    functionLinenumber: 4248
    functionLinenumberEnd: 4254
    functionName: dcrypt_openssl_key_set_id_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - i_strdup_empty
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_key_set_id_private(struct dcrypt_private_key *key,
      const char *id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4261
      start: 4256
    functionDepth: 1
    functionLinenumber: 4256
    functionLinenumberEnd: 4261
    functionName: dcrypt_openssl_key_get_usage_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: enum dcrypt_key_usage
    signature: enum dcrypt_key_usage dcrypt_openssl_key_get_usage_public(struct dcrypt_public_key
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4268
      start: 4263
    functionDepth: 1
    functionLinenumber: 4263
    functionLinenumberEnd: 4268
    functionName: dcrypt_openssl_key_get_usage_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: enum dcrypt_key_usage
    signature: enum dcrypt_key_usage dcrypt_openssl_key_get_usage_private(struct dcrypt_private_key
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - usage
    argTypes:
    - struct dcrypt_public_key*
    - enum dcrypt_key_usage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4276
      start: 4270
    functionDepth: 1
    functionLinenumber: 4270
    functionLinenumberEnd: 4276
    functionName: dcrypt_openssl_key_set_usage_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_key_set_usage_public(struct dcrypt_public_key
      *key,\n\t\t\t\t    enum dcrypt_key_usage usage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - usage
    argTypes:
    - struct dcrypt_private_key*
    - enum dcrypt_key_usage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4284
      start: 4278
    functionDepth: 1
    functionLinenumber: 4278
    functionLinenumberEnd: 4284
    functionName: dcrypt_openssl_key_set_usage_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_key_set_usage_private(struct dcrypt_private_key
      *key,\n\t\t\t\t     enum dcrypt_key_usage usage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dovecot_openssl_common_global_ref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4361,1
    - Dst: dcrypt_set_vfs
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4362,1
    - Dst: OBJ_txt2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4366
      start: 4359
    functionDepth: 1
    functionLinenumber: 4359
    functionLinenumberEnd: 4366
    functionName: dcrypt_openssl_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached:
    - dcrypt_set_vfs
    - OBJ_txt2obj
    - dovecot_openssl_common_global_ref
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dovecot_openssl_common_global_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4370,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c:4372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4374
      start: 4368
    functionDepth: 2
    functionLinenumber: 4368
    functionLinenumberEnd: 4374
    functionName: dcrypt_openssl_deinit
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl1.c
    functionUses: 1
    functionsReached:
    - dovecot_openssl_common_global_unref
    - ASN1_OBJECT_free
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:49,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:53,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:54,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:55,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:56,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:58,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:59,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:61,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:64,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:65,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:66,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:67,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:68,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:69,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:71,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:72,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:73,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:74,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:76,1
    - Dst: test_assert_failed
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:78,1
    - Dst: dcrypt_ctx_sym_set_padding
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:83,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:85,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:86,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:88,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:88,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:90,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:90,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:92,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:92,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:94,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:94,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:96,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:98,1
    - Dst: test_assert_failed
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:100,1
    - Dst: dcrypt_ctx_sym_set_padding
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:105,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:107,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:108,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:110,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:110,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:111,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:111,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:113,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:113,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:115,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:115,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:117,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 25
    functionDepth: 3
    functionLinenumber: 25
    functionLinenumberEnd: 121
    functionName: test_cipher_test_vectors
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - test_assert_failed
    - dcrypt_ctx_sym_set_iv
    - dcrypt_ctx_sym_destroy
    - dcrypt_ctx_sym_set_padding
    - test_assert_idx
    - hex_to_binary
    - dcrypt_ctx_sym_update
    - t_buffer_create
    - dcrypt_ctx_sym_init
    - buffer_set_used_size
    - dcrypt_ctx_sym_create
    - dcrypt_ctx_sym_final
    - dcrypt_ctx_sym_set_key
    - test_end
    - buffer_cmp
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_cipher_test_vectors(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:128,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:130,1
    - Dst: test_assert_failed
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:132,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:134,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:140,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:141,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:142,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:143,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:144,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:145,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:146,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:147,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:149,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:150,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:151,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:155,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:159,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:161,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:162,1
    - Dst: dcrypt_ctx_sym_set_aad
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:163,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:164,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:164,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:165,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:165,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:166,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:166,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:167,1
    - Dst: dcrypt_ctx_sym_get_tag
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:167,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:169,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:169,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:170,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:170,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:172,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:174,1
    - Dst: test_assert_failed
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:176,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:180,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:182,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:183,1
    - Dst: dcrypt_ctx_sym_set_aad
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:184,1
    - Dst: dcrypt_ctx_sym_set_tag
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:185,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:186,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:186,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:187,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:187,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:189,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:189,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:191,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:191,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:193,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 197
    functionName: test_cipher_aead_test_vectors
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - test_assert_failed
    - dcrypt_ctx_sym_set_iv
    - dcrypt_ctx_sym_destroy
    - dcrypt_ctx_sym_set_tag
    - hex_to_binary
    - dcrypt_ctx_sym_set_aad
    - dcrypt_ctx_sym_update
    - t_buffer_create
    - dcrypt_ctx_sym_create
    - test_end
    - dcrypt_ctx_sym_final
    - dcrypt_ctx_sym_set_key
    - dcrypt_ctx_sym_get_tag
    - buffer_set_used_size
    - test_assert
    - buffer_cmp
    - dcrypt_ctx_sym_init
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_cipher_aead_test_vectors(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:201,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:205,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:206,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:207,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:208,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:210,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:211,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:213,1
    - Dst: dcrypt_ctx_hmac_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:217,1
    - Dst: test_assert_failed
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:218,1
    - Dst: dcrypt_ctx_hmac_set_key
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:221,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:222,1
    - Dst: dcrypt_ctx_hmac_init
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:222,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:223,1
    - Dst: dcrypt_ctx_hmac_update
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:223,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:225,1
    - Dst: dcrypt_ctx_hmac_final
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:225,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:226,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:226,1
    - Dst: dcrypt_ctx_hmac_destroy
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:227,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 199
    functionDepth: 3
    functionLinenumber: 199
    functionLinenumberEnd: 231
    functionName: test_hmac_test_vectors
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - test_assert_failed
    - dcrypt_ctx_hmac_destroy
    - hex_to_binary
    - dcrypt_ctx_hmac_init
    - t_buffer_create
    - dcrypt_ctx_hmac_create
    - test_end
    - dcrypt_ctx_hmac_final
    - dcrypt_ctx_hmac_set_key
    - test_assert
    - dcrypt_ctx_hmac_update
    - buffer_cmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_hmac_test_vectors(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:235,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:256,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:260,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:261,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:262,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:264,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:265,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:266,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:266,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:269,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:269,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:284,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:288,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:289,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:290,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:291,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:293,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:294,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:295,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:295,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:311,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:314,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:315,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:316,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:317,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:318,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:319,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:320,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:321,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:321,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:331,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:332,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:333,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:335,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:336,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:337,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:339,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:340,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 343
    functionName: test_load_v1_keys
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dcrypt_key_unref_private
    - test_end
    - test_assert
    - dcrypt_key_load_private
    - dcrypt_key_string_get_info
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_load_v1_keys(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:347,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:349,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:354,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:354,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:361,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:364,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:365,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:365,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:367,1
    - Dst: dcrypt_key_id_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:368,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:369,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:369,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:371,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:374,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:377,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:377,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:389,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:392,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:393,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:393,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:395,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:396,1
    - Dst: dcrypt_key_id_public_old
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:396,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:398,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:398,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:401,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:403,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:404,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:406,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 345
    functionDepth: 6
    functionLinenumber: 345
    functionLinenumberEnd: 410
    functionName: test_load_v1_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - strcmp
    - t_buffer_create
    - dcrypt_key_id_public
    - dcrypt_key_store_public
    - buffer_set_used_size
    - dcrypt_key_convert_private_to_public
    - dcrypt_key_id_public_old
    - dcrypt_key_unref_private
    - test_end
    - test_assert
    - dcrypt_key_unref_public
    - dcrypt_key_load_private
    - binary_to_hex
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_load_v1_key(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:414,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:432,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:436,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:437,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:438,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:439,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:440,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:441,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:442,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:443,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:445,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:448,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:449,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:450,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:452,1
    - Dst: dcrypt_key_type_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:452,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:454,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:455,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 412
    functionDepth: 3
    functionLinenumber: 412
    functionLinenumberEnd: 458
    functionName: test_load_v1_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - strcmp
    - dcrypt_key_load_public
    - test_end
    - test_assert
    - dcrypt_key_unref_public
    - dcrypt_key_type_public
    - dcrypt_key_string_get_info
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_load_v1_public_key(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:495,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:497,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:501,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:501,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:503,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:503,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:505,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:505,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:505,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:506,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:508,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:508,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:510,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:510,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:512,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:512,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:512,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:513,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:514,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:516,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:516,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:518,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:518,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:521,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:522,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:525,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:526,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:526,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:528,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:528,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:531,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:532,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:533,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:534,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:542,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:542,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:544,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:544,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:547,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:547,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:548,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:549,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:551,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 460
    functionDepth: 3
    functionLinenumber: 460
    functionLinenumberEnd: 556
    functionName: test_load_v2_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - buffer_free
    - test_assert_idx
    - buffer_create_dynamic
    - dcrypt_key_store_private
    - dcrypt_key_unref_private
    - buffer_set_used_size
    - dcrypt_key_convert_private_to_public
    - test_end
    - dcrypt_key_unref_public
    - dcrypt_key_load_private
    - test_assert_strcmp_idx
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_load_v2_key(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:563,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:579,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:581,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:581,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:582,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:584,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:587,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:587,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:589,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:589,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:590,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:591,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:595,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 558
    functionDepth: 3
    functionLinenumber: 558
    functionLinenumberEnd: 596
    functionName: test_load_v2_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - str_c
    - dcrypt_key_load_public
    - buffer_free
    - test_assert_idx
    - buffer_create_dynamic
    - dcrypt_key_store_public
    - test_end
    - dcrypt_key_unref_public
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_load_v2_public_key(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:600,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:617,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:617,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:620,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:621,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:622,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:624,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:625,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:626,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:627,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:627,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:631,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 598
    functionDepth: 3
    functionLinenumber: 598
    functionLinenumberEnd: 632
    functionName: test_get_info_v2_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_end
    - test_assert
    - dcrypt_key_string_get_info
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_get_info_v2_key(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:636,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:641,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:643,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:644,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:654,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:656,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:658,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:658,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:661,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:662,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:663,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:665,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:666,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:667,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:668,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:671,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:672,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:675,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:677,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:677,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:681,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:682,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:683,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:685,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:687,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:688,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:689,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:691,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:692,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 634
    functionDepth: 3
    functionLinenumber: 634
    functionLinenumberEnd: 695
    functionName: test_gen_and_get_info_rsa_pem
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - str_c
    - dcrypt_key_string_get_info
    - dcrypt_key_store_private
    - dcrypt_keypair_generate
    - dcrypt_key_store_public
    - buffer_set_used_size
    - test_end
    - test_assert
    - buffer_free
    - str_new
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_gen_and_get_info_rsa_pem(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:699,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:720,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:720,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:722,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:722,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 697
    functionDepth: 3
    functionLinenumber: 697
    functionLinenumberEnd: 725
    functionName: test_get_info_rsa_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_assert
    - dcrypt_key_string_get_info
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_get_info_rsa_private_key(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:729,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:769,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:771,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:771,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:774,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:775,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:778,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 727
    functionDepth: 3
    functionLinenumber: 727
    functionLinenumberEnd: 779
    functionName: test_get_info_invalid_keys
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    - test_end
    - test_assert
    - dcrypt_key_string_get_info
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_get_info_invalid_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:783,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:787,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:789,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:790,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:792,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:794,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:796,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:797,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:800,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:809,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:809,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:811,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:812,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:813,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:814,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:815,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:816,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:817,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:819,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:820,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 781
    functionDepth: 4
    functionLinenumber: 781
    functionLinenumberEnd: 823
    functionName: test_get_info_key_encrypted
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - dcrypt_key_store_private
    - dcrypt_keypair_generate
    - buffer_set_used_size
    - test_end
    - test_assert
    - dcrypt_key_string_get_info
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_get_info_key_encrypted(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:827,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:830,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:832,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:834,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:836,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:837,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:839,1
    - Dst: dcrypt_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:848,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:848,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:850,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:851,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:852,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:853,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:854,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:855,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:856,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:858,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 825
    functionDepth: 4
    functionLinenumber: 825
    functionLinenumberEnd: 861
    functionName: test_get_info_pw_encrypted
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - dcrypt_key_store_private
    - dcrypt_keypair_generate
    - test_end
    - test_assert
    - dcrypt_key_string_get_info
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_get_info_pw_encrypted(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:865,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:871,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:873,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:875,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:876,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:878,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:882,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:882,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:883,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:887,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:889,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:891,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:893,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:894,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:897,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:901,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:904,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:906,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:910,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:910,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:911,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:915,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:916,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:917,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:919,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:920,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:921,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:922,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:923,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:924,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 863
    functionDepth: 4
    functionLinenumber: 863
    functionLinenumberEnd: 927
    functionName: test_password_change
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - dcrypt_key_store_private
    - dcrypt_keypair_generate
    - dcrypt_key_unref_private
    - dcrypt_key_convert_private_to_public
    - test_end
    - test_assert
    - dcrypt_key_unref_public
    - dcrypt_key_load_private
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_password_change(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:931,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1236,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1238,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1242,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1245,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1249,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1250,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1251,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1251,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1254,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 929
    functionDepth: 3
    functionLinenumber: 929
    functionLinenumberEnd: 1258
    functionName: test_load_invalid_keys
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dcrypt_key_load_public
    - test_assert_idx
    - strstr
    - test_end
    - dcrypt_key_load_private
    - N_ELEMENTS
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_load_invalid_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1263,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1266,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1267,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1268,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1272,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1273,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1277,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1277,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1280,1
    - Dst: dcrypt_key_store_private_raw
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1280,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1282,1
    - Dst: dcrypt_key_store_public_raw
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1282,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1284,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1287,1
    - Dst: dcrypt_key_load_private_raw
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1287,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1289,1
    - Dst: dcrypt_key_load_public_raw
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1289,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1292,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1305,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1306,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1309,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1310,1
    - Dst: dcrypt_name2oid
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1310,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1311,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1316,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1321,1
    - Dst: dcrypt_key_load_private_raw
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1321,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1325,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1326,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1326,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1328,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1328,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1345,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1349,1
    - Dst: dcrypt_name2oid
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1349,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1350,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1355,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1360,1
    - Dst: dcrypt_key_load_public_raw
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1360,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1362,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1363,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1363,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1365,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1365,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1369,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1372
      start: 1260
    functionDepth: 3
    functionLinenumber: 1260
    functionLinenumberEnd: 1372
    functionName: test_raw_keys
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_array_init
    - dcrypt_key_store_private
    - dcrypt_key_store_public
    - dcrypt_key_load_private_raw
    - test_assert
    - dcrypt_key_load_public_raw
    - array_append_space
    - test_end
    - test_assert_strcmp
    - pool_datastack_create
    - array_clear
    - dcrypt_key_store_private_raw
    - i_assert
    - dcrypt_key_store_public_raw
    - t_buffer_create
    - dcrypt_keypair_generate
    - t_array_init
    - ARRAY_TYPE
    - dcrypt_keypair_unref
    - test_begin
    - dcrypt_name2oid
    linkageType: ''
    returnType: void
    signature: void test_raw_keys(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1382,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1382,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1385,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1404,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1404,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1407,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1408,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1409,1
    - Dst: dcrypt_sign
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1409,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1410,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1412,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1412,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1413,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1416,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1417,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1374
    functionDepth: 3
    functionLinenumber: 1374
    functionLinenumberEnd: 1420
    functionName: test_sign_verify_rsa
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - dcrypt_verify
    - buffer_create_dynamic
    - i_fatal
    - strlen
    - dcrypt_key_unref_private
    - dcrypt_key_convert_private_to_public
    - test_end
    - pool_datastack_create
    - test_assert
    - dcrypt_key_unref_public
    - dcrypt_key_load_private
    - dcrypt_sign
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sign_verify_rsa(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1430,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1430,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1433,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1441,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1441,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1444,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1445,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1446,1
    - Dst: dcrypt_sign
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1446,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1447,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1449,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1449,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1450,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1453,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1454,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1422
    functionDepth: 3
    functionLinenumber: 1422
    functionLinenumberEnd: 1457
    functionName: test_sign_verify_ecdsa
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - dcrypt_verify
    - buffer_create_dynamic
    - i_fatal
    - strlen
    - dcrypt_key_unref_private
    - dcrypt_key_convert_private_to_public
    - test_end
    - pool_datastack_create
    - test_assert
    - dcrypt_key_unref_public
    - dcrypt_key_load_private
    - dcrypt_sign
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sign_verify_ecdsa(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1467,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1467,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1470,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1478,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1478,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1481,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1482,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1483,1
    - Dst: dcrypt_sign
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1483,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1484,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1486,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1486,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1487,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1490,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1491,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1459
    functionDepth: 3
    functionLinenumber: 1459
    functionLinenumberEnd: 1494
    functionName: test_sign_verify_x962
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - dcrypt_verify
    - buffer_create_dynamic
    - i_fatal
    - strlen
    - dcrypt_key_unref_private
    - dcrypt_key_convert_private_to_public
    - test_end
    - pool_datastack_create
    - test_assert
    - dcrypt_key_unref_public
    - dcrypt_key_load_private
    - dcrypt_sign
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_sign_verify_x962(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1498,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1525,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1527,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1527,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1528,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1528,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1530,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1530,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1531,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1535,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1496
    functionDepth: 3
    functionLinenumber: 1496
    functionLinenumberEnd: 1538
    functionName: test_static_verify_ecdsa
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dcrypt_verify
    - dcrypt_key_load_public
    - strlen
    - test_end
    - test_assert
    - dcrypt_key_load_private
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_static_verify_ecdsa(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1545,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1546,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1548,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1548,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1549,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1549,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1552,1
    - Dst: dcrypt_key_get_id_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1552,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1553,1
    - Dst: dcrypt_key_get_usage_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1553,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1556,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1556,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1557,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1558,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1559,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1560,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1560,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1562,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1564,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1565,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1565,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1566,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1566,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - jwk_key_json_in
    - jwk_key_json_out
    - pem_key
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1540
    functionDepth: 3
    functionLinenumber: 1540
    functionLinenumberEnd: 1569
    functionName: test_jwk_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - dcrypt_key_load_public
    - str_append_c
    - dcrypt_key_get_usage_public
    - strlen
    - t_buffer_create
    - test_assert_strcmp
    - dcrypt_key_store_public
    - dcrypt_key_store_private
    - dcrypt_key_get_id_public
    - test_assert
    - str_truncate
    - dcrypt_key_load_private
    - i_assert
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: "void test_jwk_key(const char *jwk_key_json_in, const char *jwk_key_json_out,\n\t\t\t
      const char *pem_key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1726,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1728,1
    - Dst: test_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1729,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1731,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1571
    functionDepth: 4
    functionLinenumber: 1571
    functionLinenumberEnd: 1732
    functionName: test_jwk_keys
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - test_jwk_key
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_jwk_keys(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1740,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1765,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1765,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1767,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1768,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1768,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1769,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1772,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1774,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1734
    functionDepth: 3
    functionLinenumber: 1734
    functionLinenumberEnd: 1775
    functionName: test_static_verify_rsa
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - dcrypt_verify
    - dcrypt_key_load_public
    - strlen
    - i_fatal
    - test_end
    - test_assert
    - dcrypt_key_unref_public
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_static_verify_rsa(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1784,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1803,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1803,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1805,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1806,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1806,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1807,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1810,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1812,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1778
    functionDepth: 3
    functionLinenumber: 1778
    functionLinenumberEnd: 1813
    functionName: test_static_verify_ecdsa_x962
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - dcrypt_verify
    - dcrypt_key_load_public
    - strlen
    - i_fatal
    - test_end
    - test_assert
    - dcrypt_key_unref_public
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_static_verify_ecdsa_x962(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1822,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1822,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1825,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1827,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1829,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1831,1
    - Dst: dcrypt_sign
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1831,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1832,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1834,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1834,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1835,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1838,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1840,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1816
    functionDepth: 3
    functionLinenumber: 1816
    functionLinenumberEnd: 1841
    functionName: test_sign_verify_ed25519
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_panic
    - dcrypt_verify
    - buffer_create_dynamic
    - strlen
    - dcrypt_keypair_generate
    - test_end
    - pool_datastack_create
    - test_assert
    - dcrypt_sign
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_sign_verify_ed25519(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1861,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1863,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1865,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1868,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1868,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1869,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1871,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1873,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1843
    functionDepth: 3
    functionLinenumber: 1843
    functionLinenumberEnd: 1874
    functionName: test_static_verify_ed25519
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_panic
    - dcrypt_verify
    - dcrypt_key_load_public
    - strlen
    - test_end
    - test_assert
    - dcrypt_key_unref_public
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_static_verify_ed25519(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1899,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1901,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1903,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1906,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1906,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1907,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1909,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1911,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1876
    functionDepth: 3
    functionLinenumber: 1876
    functionLinenumberEnd: 1912
    functionName: test_static_verify_ed448
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_panic
    - dcrypt_verify
    - dcrypt_key_load_public
    - strlen
    - test_end
    - test_assert
    - dcrypt_key_unref_public
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_static_verify_ed448(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1920,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1920,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1923,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1925,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1927,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1929,1
    - Dst: dcrypt_sign
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1929,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1930,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1932,1
    - Dst: dcrypt_verify
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1932,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1933,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1936,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1938,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1914
    functionDepth: 3
    functionLinenumber: 1914
    functionLinenumberEnd: 1939
    functionName: test_sign_verify_ed448
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_panic
    - dcrypt_verify
    - buffer_create_dynamic
    - strlen
    - dcrypt_keypair_generate
    - test_end
    - pool_datastack_create
    - test_assert
    - dcrypt_sign
    - test_begin
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_sign_verify_ed448(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1947,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1947,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1948,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1949,1
    - Dst: dcrypt_ecdh_derive_secret_peer
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1949,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1950,1
    - Dst: dcrypt_ecdh_derive_secret_local
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1950,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1951,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1952,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1953,1
    - Dst: buffer_cmp
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1953,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1956,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1957,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1959,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1960,1
    - Dst: dcrypt_key_store_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1961,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1962,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1966,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1966,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1967,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1969,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1969,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1970,1
    - Dst: dcrypt_key_convert_private_to_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1973,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1975,1
    - Dst: dcrypt_key_store_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1976,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1977,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1979,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1980,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - pair
    argTypes:
    - struct dcrypt_keypair*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1941
    functionDepth: 4
    functionLinenumber: 1941
    functionLinenumberEnd: 1982
    functionName: test_xd_keypair
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - str_c
    - dcrypt_ecdh_derive_secret_peer
    - t_str_new
    - dcrypt_key_load_public
    - t_buffer_create
    - dcrypt_key_store_private
    - dcrypt_key_store_public
    - dcrypt_key_convert_private_to_public
    - str_truncate
    - test_assert
    - dcrypt_key_unref_public
    - dcrypt_key_load_private
    - dcrypt_ecdh_derive_secret_local
    - buffer_cmp
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_xd_keypair(struct dcrypt_keypair *pair)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1986,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1990,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1991,1
    - Dst: test_xd_keypair
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1993,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:1995,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1984
    functionDepth: 5
    functionLinenumber: 1984
    functionLinenumberEnd: 1996
    functionName: test_xd25519_keypair
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_panic
    - dcrypt_keypair_generate
    - test_end
    - test_xd_keypair
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_xd25519_keypair(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2000,1
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2004,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2005,1
    - Dst: test_xd_keypair
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2007,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2009,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 1998
    functionDepth: 5
    functionLinenumber: 1998
    functionLinenumberEnd: 2010
    functionName: test_xd448_keypair
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 0
    functionsReached:
    - i_panic
    - dcrypt_keypair_generate
    - test_end
    - test_xd_keypair
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_xd448_keypair(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2020,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2021,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2062,1
    - Dst: dcrypt_deinitialize
      Src: /src/dovecot/src/lib-dcrypt/test-crypto.c:2064,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2013
    functionDepth: 7
    functionLinenumber: 2013
    functionLinenumberEnd: 2067
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-crypto.c
    functionUses: 25
    functionsReached:
    - test_run
    - i_error
    - dcrypt_initialize
    - dcrypt_deinitialize
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:77,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:80,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:82,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:85,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:87,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:88,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:89,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:90,1
    - Dst: i_stream_create_hash
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:91,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:92,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:94,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:94,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:97,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:97,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:99,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:101,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:103,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:105,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:105,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:106,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 74
    functionDepth: 6
    functionLinenumber: 74
    functionLinenumberEnd: 109
    functionName: test_static_v1_input
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - struct hash_method*::init
    - strcmp
    - i_stream_create_hash
    - i_stream_create_file
    - i_stream_skip
    - i_stream_get_error
    - struct hash_method*::result
    - test_end
    - i_stream_create_decrypt
    - test_assert
    - i_stream_unref
    - hash_method_lookup
    - binary_to_hex
    - i_stream_read
    - i_debug
    - test_begin
    - i_stream_create_base64_decoder
    linkageType: ''
    returnType: void
    signature: void test_static_v1_input(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:114,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:117,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:119,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:122,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:124,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:125,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:126,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:127,1
    - Dst: i_stream_create_hash
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:128,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:129,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:131,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:131,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:134,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:134,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:136,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:138,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:142,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:142,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:143,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 111
    functionDepth: 6
    functionLinenumber: 111
    functionLinenumberEnd: 146
    functionName: test_static_v1_input_short
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - struct hash_method*::init
    - strcmp
    - i_stream_create_hash
    - i_stream_create_file
    - i_stream_skip
    - i_stream_get_error
    - struct hash_method*::result
    - test_end
    - i_stream_create_decrypt
    - test_assert
    - i_stream_unref
    - hash_method_lookup
    - binary_to_hex
    - i_stream_read
    - i_debug
    - test_begin
    - i_stream_create_base64_decoder
    linkageType: ''
    returnType: void
    signature: void test_static_v1_input_short(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:150,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:153,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:156,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:159,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:161,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:162,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:163,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:164,1
    - Dst: i_stream_create_hash
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:165,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:166,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:168,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:168,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:171,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:171,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:173,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:175,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:177,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:179,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:179,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:180,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 148
    functionDepth: 6
    functionLinenumber: 148
    functionLinenumberEnd: 209
    functionName: test_static_v2_input
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - struct hash_method*::init
    - strcmp
    - i_stream_create_hash
    - test_begin
    - i_stream_create_file
    - i_stream_skip
    - i_stream_get_error
    - struct hash_method*::result
    - test_end
    - i_stream_create_decrypt
    - test_assert
    - i_stream_unref
    - binary_to_hex
    - i_stream_read
    - i_debug
    - hash_method_lookup
    - i_stream_create_base64_decoder
    linkageType: ''
    returnType: void
    signature: void test_static_v2_input(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:213,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:217,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:219,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:220,1
    - Dst: o_stream_create_encrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:221,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:223,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:226,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:226,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:228,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:229,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:229,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:230,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:232,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:233,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:235,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:236,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:239,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:240,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:241,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:243,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:245,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:247,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:250,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:251,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:255,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:257,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:258,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:259,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:261,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 211
    functionDepth: 9
    functionLinenumber: 211
    functionLinenumberEnd: 262
    functionName: test_write_read_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - o_stream_unref
    - i_debug
    - test_assert
    - o_stream_create_buffer
    - random_fill
    - o_stream_get_error
    - test_istream_set_allow_eof
    - i_stream_skip
    - test_end
    - o_stream_nsend
    - buffer_free
    - test_istream_set_size
    - o_stream_finish
    - o_stream_create_encrypt
    - test_istream_create_data
    - i_stream_create_decrypt
    - memcmp
    - i_stream_unref
    - i_stream_read_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_write_read_v1(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:266,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:270,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:272,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:273,1
    - Dst: o_stream_create_encrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:274,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:276,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:279,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:279,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:281,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:282,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:282,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:283,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:285,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:286,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:288,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:289,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:292,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:293,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:294,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:296,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:298,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:300,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:303,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:304,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:305,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:308,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:310,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:311,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:312,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:314,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 264
    functionDepth: 9
    functionLinenumber: 264
    functionLinenumberEnd: 315
    functionName: test_write_read_v1_short
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - o_stream_unref
    - i_debug
    - test_assert
    - o_stream_create_buffer
    - random_fill
    - o_stream_get_error
    - test_istream_set_allow_eof
    - i_stream_skip
    - test_end
    - o_stream_nsend
    - buffer_free
    - test_istream_set_size
    - o_stream_finish
    - o_stream_create_encrypt
    - test_istream_create_data
    - i_stream_create_decrypt
    - memcmp
    - i_stream_unref
    - i_stream_read_data
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_write_read_v1_short(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:321,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:322,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:323,1
    - Dst: o_stream_create_encrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:324,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:326,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:326,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:328,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:328,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:330,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:331,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:334,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:335,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:338,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:339,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:342,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:343,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:345,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:347,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:350,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:352,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:352,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:353,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:354,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:355,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:356,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 317
    functionDepth: 9
    functionLinenumber: 317
    functionLinenumberEnd: 357
    functionName: test_write_read_v1_empty
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - o_stream_get_error
    - buffer_create_dynamic
    - o_stream_unref
    - test_istream_set_allow_eof
    - o_stream_finish
    - o_stream_create_buffer
    - i_stream_get_error
    - o_stream_create_encrypt
    - test_end
    - test_istream_create_data
    - i_stream_create_decrypt
    - i_stream_read_data
    - test_assert
    - i_stream_unref
    - buffer_free
    - test_istream_set_size
    - i_debug
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_write_read_v1_empty(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:362,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:362,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:367,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:368,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:369,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:373,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:374,1
    - Dst: o_stream_create_encrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:375,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:378,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:379,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:379,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:381,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:381,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:383,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:384,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:386,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:389,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:390,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:390,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:391,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:394,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:395,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:396,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:398,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:400,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:402,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:404,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:405,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:406,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:409,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:411,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:411,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:415,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:416,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:416,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:417,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:417,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:419,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:420,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:420,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:421,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:421,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:423,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:424,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:425,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:426,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 3
    argNames:
    - pair
    - kalg
    - algo
    argTypes:
    - struct dcrypt_keypair*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 359
    functionDepth: 11
    functionLinenumber: 359
    functionLinenumberEnd: 427
    functionName: test_write_read_v2_real
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - i_stream_seek
    - test_assert
    - o_stream_create_buffer
    - random_fill
    - o_stream_get_error
    - test_istream_set_allow_eof
    - i_stream_skip
    - i_stream_get_error
    - test_end
    - o_stream_nsend
    - i_stream_set_max_buffer_size
    - test_istream_set_size
    - buffer_free
    - i_stream_read_data
    - i_stream_read
    - o_stream_finish
    - o_stream_create_encrypt
    - test_istream_create_data
    - i_stream_create_decrypt
    - memcmp
    - i_stream_unref
    - i_debug
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_write_read_v2_real(const struct dcrypt_keypair *pair,\n\t\t\t\t
      \   const char *kalg, const char *algo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:431,1
    - Dst: test_write_read_v2_real
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - kalg
    - pair
    argTypes:
    - char*
    - struct dcrypt_keypair*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 429
    functionDepth: 12
    functionLinenumber: 429
    functionLinenumberEnd: 433
    functionName: test_write_read_v2_algos
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_write_read_v2_real
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_write_read_v2_algos(const char *kalg, const struct dcrypt_keypair
      *pair)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_write_read_v2_algos
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 13
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: test_write_read_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_write_read_v2_algos
    linkageType: ''
    returnType: void
    signature: void test_write_read_v2(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:445,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:448,1
    - Dst: test_write_read_v2_algos
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:450,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 441
    functionDepth: 13
    functionLinenumber: 441
    functionLinenumberEnd: 452
    functionName: test_write_read_v2_x25519
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - i_panic
    - test_write_read_v2_algos
    - dcrypt_keypair_generate
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_write_read_v2_x25519(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_keypair_generate
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:458,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:461,1
    - Dst: test_write_read_v2_algos
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:463,1
    - Dst: dcrypt_keypair_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:464,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 454
    functionDepth: 13
    functionLinenumber: 454
    functionLinenumberEnd: 465
    functionName: test_write_read_v2_x448
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - i_panic
    - test_write_read_v2_algos
    - dcrypt_keypair_generate
    - dcrypt_keypair_unref
    linkageType: ''
    returnType: void
    signature: void test_write_read_v2_x448(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:470,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:470,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:475,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:476,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:477,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:481,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:482,1
    - Dst: o_stream_create_encrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:483,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:485,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:486,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:486,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:488,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:488,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:490,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:491,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:493,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:494,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:497,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:498,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:499,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:501,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:502,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:504,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:507,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:508,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:509,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:512,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:514,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:514,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:516,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:517,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:518,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:520,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - algo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 468
    functionDepth: 11
    functionLinenumber: 468
    functionLinenumberEnd: 521
    functionName: test_write_read_v2_short
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - i_debug
    - test_assert
    - o_stream_create_buffer
    - random_fill
    - o_stream_get_error
    - test_istream_set_allow_eof
    - i_stream_skip
    - i_stream_get_error
    - test_end
    - o_stream_nsend
    - buffer_free
    - test_istream_set_size
    - o_stream_finish
    - o_stream_create_encrypt
    - test_istream_create_data
    - i_stream_create_decrypt
    - memcmp
    - i_stream_unref
    - i_stream_read_data
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_write_read_v2_short(const char *algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:525,1
    - Dst: test_write_read_v2_short
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 523
    functionDepth: 12
    functionLinenumber: 523
    functionLinenumberEnd: 527
    functionName: test_write_read_v2_short_algos
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_write_read_v2_short
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_write_read_v2_short_algos(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:534,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:534,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:535,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:536,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:540,1
    - Dst: o_stream_create_buffer
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:541,1
    - Dst: o_stream_create_encrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:542,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:544,1
    - Dst: o_stream_finish
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:544,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:546,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:546,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:548,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:549,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:552,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:553,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:557,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:558,1
    - Dst: i_stream_read_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:560,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:561,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:563,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:564,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:567,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:569,1
    - Dst: i_stream_get_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:569,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:570,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:571,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:572,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:574,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - algo
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 529
    functionDepth: 11
    functionLinenumber: 529
    functionLinenumberEnd: 575
    functionName: test_write_read_v2_empty
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - buffer_create_dynamic
    - o_stream_unref
    - t_strdup_printf
    - i_debug
    - test_assert
    - o_stream_create_buffer
    - o_stream_get_error
    - test_istream_set_allow_eof
    - i_stream_get_error
    - test_end
    - buffer_free
    - test_istream_set_size
    - o_stream_finish
    - o_stream_create_encrypt
    - test_istream_create_data
    - i_stream_create_decrypt
    - i_stream_unref
    - i_stream_read_data
    - strstr
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_write_read_v2_empty(const char *algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:579,1
    - Dst: test_write_read_v2_empty
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 577
    functionDepth: 12
    functionLinenumber: 577
    functionLinenumberEnd: 581
    functionName: test_write_read_v2_empty_algos
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_write_read_v2_empty
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void test_write_read_v2_empty_algos(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - priv_key_r ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - char*
    - struct dcrypt_private_key**
    - char**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 590
    functionName: no_op_cb
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int no_op_cb(const char *digest ATTR_UNUSED,\n\t struct dcrypt_private_key
      **priv_key_r ATTR_UNUSED,\n\t const char **error_r ATTR_UNUSED,\n\t void *context
      ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:594,1
    - Dst: memset
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:597,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:600,1
    - Dst: i_stream_create_decrypt_callback
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:601,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:603,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:604,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:608,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:609,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:610,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:612,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:613,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:614,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:617,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 592
    functionDepth: 4
    functionLinenumber: 592
    functionLinenumberEnd: 618
    functionName: test_read_0_to_400_byte_garbage
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - test_istream_set_allow_eof
    - test_end
    - i_stream_read
    - test_istream_create_data
    - i_stream_unref
    - memset
    - test_istream_set_size
    - i_stream_create_decrypt_callback
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_read_0_to_400_byte_garbage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:622,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:625,1
    - Dst: i_stream_create_decrypt_callback
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:628,1
    - Dst: test_istream_set_allow_eof
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:629,1
    - Dst: test_istream_set_max_buffer_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:630,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:632,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:632,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:633,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:634,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 620
    functionDepth: 4
    functionLinenumber: 620
    functionLinenumberEnd: 637
    functionName: test_read_large_header
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - test_istream_set_allow_eof
    - test_istream_set_max_buffer_size
    - test_end
    - test_istream_create_data
    - test_assert
    - i_stream_unref
    - i_stream_read
    - i_stream_create_decrypt_callback
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_read_large_header(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:641,1
    - Dst: i_stream_create_file
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:645,1
    - Dst: i_stream_create_base64_decoder
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:647,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:648,1
    - Dst: i_stream_create_decrypt
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:649,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:650,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:654,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:655,1
    - Dst: i_stream_set_max_buffer_size
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:657,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:661,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:662,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:662,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:664,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:665,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:666,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:668,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 639
    functionDepth: 6
    functionLinenumber: 639
    functionLinenumberEnd: 671
    functionName: test_read_increment
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - i_stream_create_file
    - i_stream_skip
    - test_end
    - i_stream_create_decrypt
    - test_assert
    - i_stream_unref
    - i_stream_set_max_buffer_size
    - i_stream_read
    - test_begin
    - i_stream_create_base64_decoder
    linkageType: ''
    returnType: void
    signature: void test_read_increment(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:675,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:678,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:679,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:681,1
    - Dst: i_stream_create_decrypt_callback
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:682,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:684,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:685,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:685,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:686,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:688,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 673
    functionDepth: 4
    functionLinenumber: 673
    functionLinenumberEnd: 691
    functionName: test_read_garbage
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - memcpy
    - random_fill
    - test_end
    - test_istream_create_data
    - test_assert
    - i_stream_unref
    - i_stream_read
    - i_stream_create_decrypt_callback
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_read_garbage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:695,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:696,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:697,1
    - Dst: dcrypt_key_unref_public
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 699
    functionName: test_free_keys
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 0
    functionsReached:
    - dcrypt_key_unref_public
    - dcrypt_key_unref_private
    linkageType: ''
    returnType: void
    signature: void test_free_keys()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:708,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:709,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:714,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:714,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:716,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:716,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:717,1
    - Dst: dcrypt_key_load_private
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:717,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:719,1
    - Dst: dcrypt_key_load_public
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:719,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-dcrypt/test-stream.c:743,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 701
    functionDepth: 7
    functionLinenumber: 701
    functionLinenumberEnd: 744
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-dcrypt/test-stream.c
    functionUses: 25
    functionsReached:
    - dcrypt_key_load_public
    - i_error
    - test_run
    - test_assert
    - dcrypt_key_load_private
    - dcrypt_initialize
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: t_base64url_decode_str
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: t_base64url_decode_str(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - data
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: openssl_get_error_data
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: openssl_get_error_data(data, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - data
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: openssl_get_error_data
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: openssl_get_error_data(data, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: IS_XD_CURVE
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_XD_CURVE(nid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: IS_ED_CURVE
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ED_CURVE(nid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:186,1
    - Dst: ERR_error_string_n
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:188,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - err
    - data
    - flags
    argTypes:
    - unsigned long
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 180
    functionDepth: 11
    functionLinenumber: 180
    functionLinenumberEnd: 194
    functionName: ssl_err2str
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - ERR_error_string_n
    - t_strdup_printf
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: char *ssl_err2str(unsigned long err, const char *data, int flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: openssl_get_error_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:203,1
    - Dst: ERR_GET_REASON
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:204,1
    - Dst: i_fatal_status
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:205,1
    - Dst: ERR_peek_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:206,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:209,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:211,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:212,1
    - Dst: ssl_err2str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:212,1
    - Dst: ssl_err2str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:217,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:221,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:222,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - error_r
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 196
    functionDepth: 4
    functionLinenumber: 196
    functionLinenumberEnd: 226
    functionName: dcrypt_openssl_error
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 48
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - ERR_peek_error
    - i_fatal_status
    - openssl_get_error_data
    - ssl_err2str
    - str_append
    - ERR_GET_REASON
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_error(const char **error_r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - padding
    - sig
    - error_r
    argTypes:
    - enum dcrypt_padding
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 249
    functionName: dcrypt_openssl_padding_mode
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 4
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int dcrypt_openssl_padding_mode(enum dcrypt_padding padding,\n\t\t\t
      \   bool sig, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dovecot_openssl_common_global_set_engine
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - set
    - error_r
    argTypes:
    - struct dcrypt_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 260
    functionName: dcrypt_openssl_initialize
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dovecot_openssl_common_global_set_engine
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_initialize(const struct dcrypt_settings *set,\n\t\t\t\t
      \     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_cipherbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:271,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:273,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:278,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - algorithm
    - mode
    - ctx_r
    - error_r
    argTypes:
    - char*
    - enum dcrypt_sym_mode
    - struct dcrypt_context_symmetric**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 262
    functionDepth: 11
    functionLinenumber: 262
    functionLinenumberEnd: 286
    functionName: dcrypt_openssl_ctx_sym_create
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - pool_alloconly_create
    - EVP_get_cipherbyname
    - t_strdup_printf
    - p_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_create(const char *algorithm, enum dcrypt_sym_mode
      mode,\n\t\t\t      struct dcrypt_context_symmetric **ctx_r,\n\t\t\t      const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:294,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 297
    functionName: dcrypt_openssl_ctx_sym_destroy
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - pool_unref
    - EVP_CIPHER_CTX_free
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ctx_sym_destroy(struct dcrypt_context_symmetric
      **ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:303,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:304,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:304,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:305,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:305,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - key
    - key_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 307
    functionName: dcrypt_openssl_ctx_sym_set_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - memcpy
    - p_free
    - EVP_CIPHER_key_length
    - I_MIN
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_key(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       const unsigned char *key, size_t key_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:313,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:314,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:315,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:315,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:316,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:316,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - iv
    - iv_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 309
    functionDepth: 3
    functionLinenumber: 309
    functionLinenumberEnd: 319
    functionName: dcrypt_openssl_ctx_sym_set_iv
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - memcpy
    - p_free
    - I_MIN
    - EVP_CIPHER_iv_length
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_iv(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t      const unsigned char *iv, size_t iv_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:324,1
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:325,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:326,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:326,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:327,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:327,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:328,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:329,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:329,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:330,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 332
    functionName: dcrypt_openssl_ctx_sym_set_key_iv_random
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - random_fill
    - p_free
    - EVP_CIPHER_key_length
    - EVP_CIPHER_iv_length
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ctx_sym_set_key_iv_random(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - padding
    argTypes:
    - struct dcrypt_context_symmetric*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 339
    functionName: dcrypt_openssl_ctx_sym_set_padding
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_padding(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t\t   bool padding)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:348,1
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 341
    functionDepth: 5
    functionLinenumber: 341
    functionLinenumberEnd: 350
    functionName: dcrypt_openssl_ctx_sym_get_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_key_length
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_get_key(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       buffer_t *key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:359,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - iv
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 352
    functionDepth: 5
    functionLinenumber: 352
    functionLinenumberEnd: 361
    functionName: dcrypt_openssl_ctx_sym_get_iv
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - EVP_CIPHER_iv_length
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_get_iv(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t      buffer_t *iv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:367,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:370,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:370,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - aad
    - aad_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 373
    functionName: dcrypt_openssl_ctx_sym_set_aad
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - I_MAX
    - p_free
    - memcpy
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_aad(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       const unsigned char *aad, size_t aad_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - aad
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 375
    functionDepth: 5
    functionLinenumber: 375
    functionLinenumberEnd: 384
    functionName: dcrypt_openssl_ctx_sym_get_aad
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_get_aad(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       buffer_t *aad)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:390,1
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:391,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:393,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - tag
    - tag_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 386
    functionDepth: 3
    functionLinenumber: 386
    functionLinenumberEnd: 396
    functionName: dcrypt_openssl_ctx_sym_set_tag
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_assert
    - p_free
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_sym_set_tag(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       const unsigned char *tag, size_t tag_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - tag
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 398
    functionDepth: 5
    functionLinenumber: 398
    functionLinenumberEnd: 407
    functionName: dcrypt_openssl_ctx_sym_get_tag
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_get_tag(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t       buffer_t *tag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 413
    functionName: dcrypt_openssl_ctx_sym_get_key_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - EVP_CIPHER_key_length
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_openssl_ctx_sym_get_key_length(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 419
    functionName: dcrypt_openssl_ctx_sym_get_iv_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - EVP_CIPHER_iv_length
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_openssl_ctx_sym_get_iv_length(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_block_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 425
    functionName: dcrypt_openssl_ctx_sym_get_block_size
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_block_size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_openssl_ctx_sym_get_block_size(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:434,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:435,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:437,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:438,1
    - Dst: EVP_CipherInit_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:440,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:443,1
    - Dst: EVP_CIPHER_CTX_set_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:445,1
    - Dst: EVP_CipherUpdate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:448,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:452,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 454
    functionName: dcrypt_openssl_ctx_sym_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - dcrypt_openssl_error
    - EVP_CipherUpdate
    - EVP_CIPHER_CTX_new
    - EVP_CIPHER_CTX_set_padding
    - EVP_CipherInit_ex
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_init(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_block_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:461,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:466,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:479,1
    - Dst: EVP_CipherUpdate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:481,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:482,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - data
    - data_len
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 456
    functionDepth: 5
    functionLinenumber: 456
    functionLinenumberEnd: 485
    functionName: dcrypt_openssl_ctx_sym_update
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - dcrypt_openssl_error
    - EVP_CipherUpdate
    - EVP_CIPHER_block_size
    - buffer_set_used_size
    - buffer_append_space_unsafe
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_update(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t      const unsigned char *data, size_t data_len,\n\t\t\t      buffer_t
      *result, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVP_CIPHER_block_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:491,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:497,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:510,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:515,1
    - Dst: EVP_CipherFinal_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:522,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:525,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:529,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:531,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:532,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:541,1
    - Dst: EVP_CIPHER_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:543,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 487
    functionDepth: 5
    functionLinenumber: 487
    functionLinenumberEnd: 547
    functionName: dcrypt_openssl_ctx_sym_final
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - dcrypt_openssl_error
    - EVP_CIPHER_CTX_free
    - EVP_CIPHER_block_size
    - buffer_set_used_size
    - EVP_CIPHER_CTX_ctrl
    - buffer_append_space_unsafe
    - p_malloc
    - i_assert
    - EVP_CipherFinal_ex
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_sym_final(struct dcrypt_context_symmetric
      *ctx,\n\t\t\t     buffer_t *result, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:556,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:558,1
    - Dst: EVP_MAC_fetch
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:561,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:567,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:568,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - algorithm
    - ctx_r
    - error_r
    argTypes:
    - char*
    - struct dcrypt_context_hmac**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 549
    functionDepth: 11
    functionLinenumber: 549
    functionLinenumberEnd: 574
    functionName: dcrypt_openssl_ctx_hmac_create
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - EVP_MAC_fetch
    - t_strdup_printf
    - EVP_get_digestbyname
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_hmac_create(const char *algorithm,\n\t\t\t
      \      struct dcrypt_context_hmac **ctx_r,\n\t\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MAC_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:580,1
    - Dst: EVP_MAC_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:581,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 584
    functionName: dcrypt_openssl_ctx_hmac_destroy
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - EVP_MAC_free
    - EVP_MAC_CTX_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ctx_hmac_destroy(struct dcrypt_context_hmac **ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:590,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:591,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:592,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - key
    - key_len
    argTypes:
    - struct dcrypt_context_hmac*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 586
    functionDepth: 3
    functionLinenumber: 586
    functionLinenumberEnd: 594
    functionName: dcrypt_openssl_ctx_hmac_set_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - memcpy
    - I_MIN
    - p_free
    - p_malloc
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_ctx_hmac_set_key(struct dcrypt_context_hmac *ctx,\n\t\t\t\tconst
      unsigned char *key, size_t key_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct dcrypt_context_hmac*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 596
    functionDepth: 5
    functionLinenumber: 596
    functionLinenumberEnd: 603
    functionName: dcrypt_openssl_ctx_hmac_get_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - buffer_append
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_ctx_hmac_get_key(struct dcrypt_context_hmac *ctx,
      buffer_t *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:609,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 605
    functionDepth: 3
    functionLinenumber: 605
    functionLinenumberEnd: 611
    functionName: dcrypt_openssl_ctx_hmac_set_key_random
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - random_fill
    - p_malloc
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ctx_hmac_set_key_random(struct dcrypt_context_hmac
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MAC_CTX_get_mac_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 617
    functionName: dcrypt_openssl_ctx_hmac_get_digest_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - EVP_MAC_CTX_get_mac_size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_openssl_ctx_hmac_get_digest_length(struct dcrypt_context_hmac
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:625,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:626,1
    - Dst: EVP_MD_get0_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:627,1
    - Dst: OSSL_PARAM_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:629,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:629,1
    - Dst: EVP_MAC_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:632,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:634,1
    - Dst: EVP_MAC_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:635,1
    - Dst: EVP_MAC_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:637,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:639,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 619
    functionDepth: 1
    functionLinenumber: 619
    functionLinenumberEnd: 642
    functionName: dcrypt_openssl_ctx_hmac_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - EVP_MAC_init
    - dcrypt_openssl_error
    - EVP_MD_get0_name
    - strlen
    - OSSL_PARAM_utf8_string
    - EVP_MAC_CTX_free
    - EVP_MAC_CTX_new
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_hmac_init(struct dcrypt_context_hmac *ctx,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MAC_update
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:651,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - data
    - data_len
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 655
    functionName: dcrypt_openssl_ctx_hmac_update
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - EVP_MAC_update
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_hmac_update(struct dcrypt_context_hmac *ctx,\n\t\t\t
      \      const unsigned char *data, size_t data_len,\n\t\t\t       const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_openssl_ctx_hmac_get_digest_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:663,1
    - Dst: EVP_MAC_final
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:665,1
    - Dst: EVP_MAC_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:666,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:669,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 657
    functionDepth: 5
    functionLinenumber: 657
    functionLinenumberEnd: 673
    functionName: dcrypt_openssl_ctx_hmac_final
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - dcrypt_openssl_ctx_hmac_get_digest_length
    - EVP_MAC_final
    - EVP_MAC_CTX_free
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ctx_hmac_final(struct dcrypt_context_hmac *ctx,
      buffer_t *result,\n\t\t\t      const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:682,1
    - Dst: EVP_PKEY_todata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:687,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:688,1
    - Dst: OSSL_PARAM_locate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:689,1
    - Dst: OSSL_PARAM_set_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:691,1
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:692,1
    - Dst: EVP_PKEY_get_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:692,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:693,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:694,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:695,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:697,1
    - Dst: OSSL_PARAM_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:698,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:700,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:701,1
    - Dst: binary_to_hex_ucase
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:703,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - pkey
    argTypes:
    - EVP_PKEY*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 678
    functionDepth: 6
    functionLinenumber: 678
    functionLinenumberEnd: 704
    functionName: ec_key_get_pub_point_hex
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 3
    functionsReached:
    - EVP_PKEY_get_id
    - EVP_PKEY_fromdata_init
    - OSSL_PARAM_locate
    - i_unreached
    - EVP_PKEY_size
    - OSSL_PARAM_free
    - EVP_PKEY_free
    - EVP_PKEY_CTX_new_id
    - EVP_PKEY_fromdata
    - EVP_PKEY_CTX_free
    - binary_to_hex_ucase
    - EVP_PKEY_get_octet_string_param
    - OSSL_PARAM_set_utf8_string
    - EVP_PKEY_todata
    linkageType: ''
    returnType: char
    signature: char *ec_key_get_pub_point_hex(const EVP_PKEY *pkey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get0_type_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:708,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:709,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:711,1
    - Dst: EVP_PKEY_get_group_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:713,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pkey
    argTypes:
    - EVP_PKEY*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 706
    functionDepth: 5
    functionLinenumber: 706
    functionLinenumberEnd: 717
    functionName: dcrypt_EVP_PKEY_get_group_name
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - strcmp
    - EVP_PKEY_get0_type_name
    - t_malloc0
    - EVP_PKEY_get_group_name
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *dcrypt_EVP_PKEY_get_group_name(const EVP_PKEY *pkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OBJ_txt2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:721,1
    - Dst: dcrypt_EVP_PKEY_get_group_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pkey
    argTypes:
    - EVP_PKEY*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 719
    functionDepth: 6
    functionLinenumber: 719
    functionLinenumberEnd: 722
    functionName: dcrypt_EVP_PKEY_get_nid
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - OBJ_txt2nid
    - dcrypt_EVP_PKEY_get_group_name
    linkageType: ''
    returnType: int
    signature: int dcrypt_EVP_PKEY_get_nid(const EVP_PKEY *pkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_num_bytes
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:726,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:727,1
    - Dst: BN_bn2nativepad
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:728,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:728,1
    - Dst: OSSL_PARAM_construct_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:729,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - bn
    argTypes:
    - char*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 724
    functionDepth: 5
    functionLinenumber: 724
    functionLinenumberEnd: 730
    functionName: dcrypt_construct_param_BN
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - t_buffer_create
    - buffer_get_modifiable_data
    - BN_num_bytes
    - BN_bn2nativepad
    - buffer_append_space_unsafe
    - OSSL_PARAM_construct_BN
    linkageType: ''
    returnType: OSSL_PARAM
    signature: OSSL_PARAM dcrypt_construct_param_BN(const char *key, const BIGNUM
      *bn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:736,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:737,1
    - Dst: EC_POINT_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:738,1
    - Dst: EC_POINT_is_at_infinity
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:739,1
    - Dst: EC_POINT_is_on_curve
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:740,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:745,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:747,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - g
    - priv
    - pub_r
    argTypes:
    - EC_GROUP*
    - BIGNUM*
    - EC_POINT**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 749
    functionName: dcrypt_openssl_ec_get_pubkey_point
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - EC_POINT_mul
    - BN_CTX_new
    - EC_POINT_is_on_curve
    - EC_POINT_free
    - BN_CTX_free
    - EC_POINT_is_at_infinity
    - EC_POINT_new
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_ec_get_pubkey_point(const EC_GROUP *g, const BIGNUM
      *priv, EC_POINT **pub_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:754,1
    - Dst: EC_GROUP_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:756,1
    - Dst: dcrypt_openssl_ec_get_pubkey_point
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:758,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:760,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:764,1
    - Dst: EC_POINT_point2buf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:766,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:767,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:768,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:772,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:773,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:774,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:775,1
    - Dst: dcrypt_construct_param_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:776,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:777,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:780,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:781,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:784,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:785,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:789,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:790,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:793,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:794,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 4
    argNames:
    - nid
    - bn
    - pkey_r
    - error_r
    argTypes:
    - int
    - BIGNUM*
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 751
    functionDepth: 6
    functionLinenumber: 751
    functionLinenumberEnd: 799
    functionName: dcrypt_evp_pkey_from_bn
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - EC_POINT_point2buf
    - dcrypt_openssl_ec_get_pubkey_point
    - dcrypt_construct_param_BN
    - OSSL_PARAM_construct_utf8_string
    - OBJ_nid2sn
    - EVP_PKEY_fromdata_init
    - EVP_PKEY_CTX_new_from_name
    - dcrypt_openssl_error
    - OSSL_PARAM_construct_end
    - EVP_PKEY_CTX_free
    - OPENSSL_free
    - EC_GROUP_new_by_curve_name
    - EC_POINT_free
    - EVP_PKEY_free
    - OSSL_PARAM_construct_octet_string
    - EVP_PKEY_fromdata
    - i_assert
    - EC_GROUP_free
    - EVP_PKEY_new
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_evp_pkey_from_bn(int nid, BIGNUM *bn, EVP_PKEY **pkey_r,
      const char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:804,1
    - Dst: EC_GROUP_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:805,1
    - Dst: EC_POINT_point2buf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:807,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:808,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:812,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:813,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:814,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:815,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:816,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:819,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:820,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:823,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:824,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:827,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:828,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:830,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:831,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - nid
    - point
    - pkey_r
    - error_r
    argTypes:
    - int
    - EC_POINT*
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 801
    functionDepth: 0
    functionLinenumber: 801
    functionLinenumberEnd: 835
    functionName: dcrypt_evp_pkey_from_point
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - EC_GROUP_new_by_curve_name
    - EVP_PKEY_fromdata_init
    - EVP_PKEY_CTX_new_from_name
    - dcrypt_openssl_error
    - OSSL_PARAM_construct_end
    - EC_POINT_point2buf
    - EVP_PKEY_free
    - OSSL_PARAM_construct_octet_string
    - EVP_PKEY_fromdata
    - EVP_PKEY_CTX_free
    - OSSL_PARAM_construct_utf8_string
    - OBJ_nid2sn
    - EVP_PKEY_new
    - OPENSSL_free
    - EC_GROUP_free
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_evp_pkey_from_point(int nid, EC_POINT *point, EVP_PKEY
      **pkey_r, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_Q_keygen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:840,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - curve
    - key_r
    - error_r
    argTypes:
    - char*
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 845
    functionName: dcrypt_openssl_generate_xd_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - dcrypt_openssl_error
    - EVP_PKEY_Q_keygen
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_generate_xd_key(const char *curve, EVP_PKEY **key_r,\n\t\t\t\t\t
      \  const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:855,1
    - Dst: EVP_PKEY_paramgen_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:857,1
    - Dst: EVP_PKEY_CTX_set_ec_paramgen_curve_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:858,1
    - Dst: EVP_PKEY_CTX_set_ec_param_enc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:859,1
    - Dst: EVP_PKEY_paramgen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:860,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:862,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:863,1
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:868,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:870,1
    - Dst: EVP_PKEY_keygen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:871,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:873,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:874,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:875,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:876,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:880,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:881,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:882,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - nid
    - key
    - error_r
    argTypes:
    - int
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 847
    functionDepth: 0
    functionLinenumber: 847
    functionLinenumberEnd: 884
    functionName: dcrypt_openssl_generate_ec_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - EVP_PKEY_CTX_new_from_name
    - EVP_PKEY_CTX_set_ec_param_enc
    - dcrypt_openssl_error
    - EVP_PKEY_keygen
    - EVP_PKEY_paramgen
    - EVP_PKEY_free
    - EVP_PKEY_CTX_free
    - EVP_PKEY_keygen_init
    - EVP_PKEY_CTX_new_from_pkey
    - EVP_PKEY_paramgen_init
    - EVP_PKEY_CTX_set_ec_paramgen_curve_nid
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_generate_ec_key(int nid, EVP_PKEY **key, const
      char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:889,1
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:893,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:895,1
    - Dst: EVP_PKEY_CTX_set_rsa_keygen_bits
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:896,1
    - Dst: EVP_PKEY_keygen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:897,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:898,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - bits
    - key
    - error_r
    argTypes:
    - int
    - EVP_PKEY**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 886
    functionDepth: 1
    functionLinenumber: 886
    functionLinenumberEnd: 904
    functionName: dcrypt_openssl_generate_rsa_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - EVP_PKEY_keygen
    - dcrypt_openssl_error
    - EVP_PKEY_CTX_new_id
    - EVP_PKEY_CTX_set_rsa_keygen_bits
    - EVP_PKEY_CTX_free
    - EVP_PKEY_keygen_init
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_generate_rsa_key(int bits, EVP_PKEY **key, const
      char **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:913,1
    - Dst: EVP_PKEY_derive_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:916,1
    - Dst: EVP_PKEY_derive_set_peer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:917,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:918,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:919,1
    - Dst: EVP_PKEY_derive
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:924,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:925,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:926,1
    - Dst: EVP_PKEY_derive
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:929,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:930,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:931,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:934,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:935,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - priv_key
    - pub_key
    - shared_secret
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 906
    functionDepth: 5
    functionLinenumber: 906
    functionLinenumberEnd: 938
    functionName: dcrypt_openssl_ecdh_derive_secret
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - EVP_PKEY_CTX_new
    - EVP_PKEY_derive_init
    - EVP_PKEY_CTX_free
    - EVP_PKEY_derive
    - EVP_PKEY_derive_set_peer
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ecdh_derive_secret(struct dcrypt_private_key *priv_key,\n\t\t\t\t
      \ struct dcrypt_public_key *pub_key,\n\t\t\t\t  buffer_t *shared_secret,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:946,1
    - Dst: dcrypt_EVP_PKEY_get_group_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:949,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:952,1
    - Dst: EVP_PKEY_get_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:952,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:953,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:955,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:957,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:959,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:961,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:963,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:966,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:968,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:971,1
    - Dst: EVP_PKEY_get0_type_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:972,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:973,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:975,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:976,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:977,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:978,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:979,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:981,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:984,1
    - Dst: dcrypt_openssl_ecdh_derive_secret
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:987,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:989,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - local_key
    - R
    - S
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - buffer_t*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 940
    functionDepth: 6
    functionLinenumber: 940
    functionLinenumberEnd: 991
    functionName: dcrypt_openssl_ecdh_derive_secret_local
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - i_zero
    - EVP_PKEY_get_id
    - EVP_PKEY_CTX_new_from_name
    - EVP_PKEY_fromdata_init
    - OSSL_PARAM_construct_end
    - dcrypt_openssl_error
    - EVP_PKEY_get0_type_name
    - dcrypt_EVP_PKEY_get_group_name
    - IS_XD_CURVE
    - EVP_PKEY_free
    - OSSL_PARAM_construct_octet_string
    - EVP_PKEY_fromdata
    - EVP_PKEY_CTX_free
    - OSSL_PARAM_construct_utf8_string
    - dcrypt_openssl_ecdh_derive_secret
    - EVP_PKEY_new
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ecdh_derive_secret_local(struct dcrypt_private_key
      *local_key,\n\t\t\t\t\tbuffer_t *R, buffer_t *S,\n\t\t\t\t\tconst char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:998,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1005,1
    - Dst: EVP_PKEY_get_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1005,1
    - Dst: EVP_PKEY_Q_keygen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1006,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1007,1
    - Dst: EVP_PKEY_get_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1007,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1008,1
    - Dst: dcrypt_EVP_PKEY_get_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1013,1
    - Dst: dcrypt_openssl_generate_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1014,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1019,1
    - Dst: dcrypt_openssl_ecdh_derive_secret
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1022,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1024,1
    - Dst: EVP_PKEY_get1_encoded_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1030,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1031,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1032,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1033,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - peer_key
    - R
    - S
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - buffer_t*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 993
    functionDepth: 7
    functionLinenumber: 993
    functionLinenumberEnd: 1036
    functionName: dcrypt_openssl_ecdh_derive_secret_peer
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - i_zero
    - EVP_PKEY_get_id
    - buffer_append
    - EVP_PKEY_Q_keygen
    - dcrypt_EVP_PKEY_get_nid
    - dcrypt_openssl_generate_ec_key
    - IS_XD_CURVE
    - EVP_PKEY_free
    - dcrypt_openssl_ecdh_derive_secret
    - EVP_PKEY_get1_encoded_public_key
    - OBJ_nid2sn
    - OPENSSL_free
    - i_assert
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_ecdh_derive_secret_peer(struct dcrypt_public_key
      *peer_key,\n\t\t\t\t       buffer_t *R, buffer_t *S,\n\t\t\t\t       const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1046,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1047,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1048,1
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1050,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1052,1
    - Dst: PKCS5_PBKDF2_HMAC
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1057,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1060,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1063,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 9
    argNames:
    - password
    - password_len
    - salt
    - salt_len
    - hash
    - rounds
    - result
    - result_len
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - char*
    - unsigned int
    - buffer_t*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1038
    functionDepth: 11
    functionLinenumber: 1038
    functionLinenumberEnd: 1065
    functionName: dcrypt_openssl_pbkdf2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - t_strdup_printf
    - EVP_get_digestbyname
    - PKCS5_PBKDF2_HMAC
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_pbkdf2(const unsigned char *password, size_t password_len,\n\t\t
      \     const unsigned char *salt, size_t salt_len,\n\t\t      const char *hash,
      unsigned int rounds,\n\t\t      buffer_t *result, unsigned int result_len,\n\t\t
      \     const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1074,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1075,1
    - Dst: dcrypt_openssl_generate_rsa_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1077,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1078,1
    - Dst: dcrypt_openssl_private_to_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1082,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1086,1
    - Dst: OBJ_sn2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1089,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1091,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1094,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1094,1
    - Dst: dcrypt_openssl_generate_xd_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1095,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1096,1
    - Dst: dcrypt_openssl_generate_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1097,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1099,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1101,1
    - Dst: dcrypt_openssl_private_to_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1105,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 5
    argNames:
    - pair_r
    - kind
    - bits
    - curve
    - error_r
    argTypes:
    - struct dcrypt_keypair*
    - enum dcrypt_key_type
    - unsigned int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1067
    functionDepth: 11
    functionLinenumber: 1067
    functionLinenumberEnd: 1112
    functionName: dcrypt_openssl_generate_keypair
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dcrypt_openssl_generate_xd_key
    - dcrypt_openssl_error
    - dcrypt_openssl_generate_ec_key
    - IS_XD_CURVE
    - t_strdup_printf
    - OBJ_sn2nid
    - IS_ED_CURVE
    - i_new
    - dcrypt_openssl_private_to_public_key
    - i_assert
    - dcrypt_openssl_generate_rsa_key
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_generate_keypair(struct dcrypt_keypair *pair_r,\n\t\t\t\tenum
      dcrypt_key_type kind, unsigned int bits,\n\t\t\t\tconst char *curve, const char
      **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1119,1
    - Dst: dcrypt_openssl_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1121,1
    - Dst: dcrypt_openssl_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1126,1
    - Dst: dcrypt_openssl_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1128,1
    - Dst: dcrypt_openssl_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1130,1
    - Dst: dcrypt_openssl_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1131,1
    - Dst: dcrypt_openssl_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1133,1
    - Dst: dcrypt_openssl_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1134,1
    - Dst: dcrypt_openssl_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1138,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1140,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1141,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1144,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - data
    - key
    - point_r
    - error_r
    argTypes:
    - buffer_t*
    - buffer_t*
    - BIGNUM**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1114
    functionDepth: 2
    functionLinenumber: 1114
    functionLinenumberEnd: 1146
    functionName: dcrypt_openssl_decrypt_point_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - dcrypt_openssl_error
    - dcrypt_openssl_ctx_sym_create
    - dcrypt_openssl_ctx_sym_destroy
    - dcrypt_openssl_ctx_sym_update
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_openssl_ctx_sym_set_key
    - BN_bin2bn
    - dcrypt_openssl_ctx_sym_init
    - dcrypt_openssl_ctx_sym_final
    - dcrypt_openssl_ctx_sym_set_iv
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_decrypt_point_v1(buffer_t *data, buffer_t *key,
      BIGNUM **point_r,\n\t\t\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1157,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1158,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1160,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1161,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1163,1
    - Dst: dcrypt_openssl_ecdh_derive_secret_local
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1165,1
    - Dst: SHA256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1171,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1172,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1173,1
    - Dst: dcrypt_openssl_decrypt_point_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1176,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 5
    argNames:
    - dec_key
    - data_hex
    - peer_key_hex
    - point_r
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - char*
    - BIGNUM**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1148
    functionDepth: 2
    functionLinenumber: 1148
    functionLinenumberEnd: 1180
    functionName: dcrypt_openssl_decrypt_point_ec_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - dcrypt_openssl_decrypt_point_v1
    - hex_to_binary
    - t_buffer_create
    - buffer_clear_safe
    - SHA256
    - buffer_create_from_const_data
    - dcrypt_openssl_ecdh_derive_secret_local
    - safe_memset
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_decrypt_point_ec_v1(struct dcrypt_private_key
      *dec_key,\n\t\t\t\t   const char *data_hex,\n\t\t\t\t   const char *peer_key_hex,
      BIGNUM **point_r,\n\t\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1190,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1191,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1192,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1193,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1195,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1196,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1197,1
    - Dst: dcrypt_openssl_pbkdf2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1200,1
    - Dst: dcrypt_openssl_decrypt_point_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - data_hex
    - password_hex
    - salt_hex
    - point_r
    - error_r
    argTypes:
    - char*
    - char*
    - char*
    - BIGNUM**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1182
    functionDepth: 2
    functionLinenumber: 1182
    functionLinenumberEnd: 1206
    functionName: dcrypt_openssl_decrypt_point_password_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - hex_to_binary
    - dcrypt_openssl_pbkdf2
    - t_buffer_create
    - dcrypt_openssl_decrypt_point_v1
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_decrypt_point_password_v1(const char *data_hex,\n\t\t\t\t\t
      const char *password_hex,\n\t\t\t\t\t const char *salt_hex, BIGNUM **point_r,\n\t\t\t\t\t
      const char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1218,1
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1223,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1230,1
    - Dst: BN_hex2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1231,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1232,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1233,1
    - Dst: dcrypt_openssl_decrypt_point_password_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1243,1
    - Dst: dcrypt_openssl_decrypt_point_ec_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1255,1
    - Dst: dcrypt_evp_pkey_from_bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1265,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1266,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1269,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1270,1
    - Dst: ec_key_get_pub_point_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1272,1
    - Dst: SHA256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1273,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1273,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1274,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1276,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1278,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1281,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 6
    argNames:
    - key_r
    - len
    - input
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - int
    - char**
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1208
    functionDepth: 7
    functionLinenumber: 1208
    functionLinenumberEnd: 1285
    functionName: dcrypt_openssl_load_private_key_dovecot_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - strcmp
    - dcrypt_openssl_error
    - BN_hex2bn
    - BN_secure_new
    - ec_key_get_pub_point_hex
    - strlen
    - EVP_PKEY_free
    - dcrypt_openssl_decrypt_point_password_v1
    - dcrypt_evp_pkey_from_bn
    - dcrypt_openssl_decrypt_point_ec_v1
    - BN_free
    - SHA256
    - i_new
    - binary_to_hex
    - i_assert
    - str_to_int
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key_dovecot_v1(struct dcrypt_private_key
      **key_r,\n\t\t\t\t\t   int len, const char **input,\n\t\t\t\t\t   const char
      *password,\n\t\t\t\t\t   struct dcrypt_private_key *dec_key,\n\t\t\t\t\t   const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_openssl_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1299,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1303,1
    - Dst: dcrypt_openssl_pbkdf2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1304,1
    - Dst: dcrypt_openssl_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1306,1
    - Dst: dcrypt_openssl_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1307,1
    - Dst: dcrypt_openssl_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1311,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1315,1
    - Dst: buffer_free_without_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1316,1
    - Dst: dcrypt_openssl_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1319,1
    - Dst: dcrypt_openssl_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1320,1
    - Dst: dcrypt_openssl_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1321,1
    - Dst: dcrypt_openssl_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1322,1
    - Dst: dcrypt_openssl_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1323,1
    - Dst: dcrypt_openssl_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1325,1
    - Dst: dcrypt_openssl_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1326,1
    - Dst: dcrypt_openssl_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1328,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1332,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1336,1
    - Dst: dcrypt_openssl_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1338,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 9
    argNames:
    - cipher
    - mode
    - input
    - secret
    - salt
    - digalgo
    - rounds
    - result_r
    - error_r
    argTypes:
    - char*
    - enum dcrypt_sym_mode
    - buffer_t*
    - buffer_t*
    - buffer_t*
    - char*
    - unsigned int
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1288
    functionDepth: 5
    functionLinenumber: 1288
    functionLinenumberEnd: 1340
    functionName: dcrypt_openssl_cipher_key_dovecot_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - dcrypt_openssl_ctx_sym_get_key_length
    - dcrypt_openssl_pbkdf2
    - dcrypt_openssl_ctx_sym_create
    - dcrypt_openssl_ctx_sym_destroy
    - dcrypt_openssl_ctx_sym_update
    - dcrypt_openssl_ctx_sym_get_iv_length
    - buffer_append_buf
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_openssl_ctx_sym_set_key
    - buffer_free_without_data
    - dcrypt_openssl_ctx_sym_init
    - dcrypt_openssl_ctx_sym_final
    - dcrypt_openssl_ctx_sym_set_iv
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_cipher_key_dovecot_v2(const char *cipher,\n\t\t\t\t
      \    enum dcrypt_sym_mode mode,\n\t\t\t\t     buffer_t *input, buffer_t *secret,\n\t\t\t\t
      \    buffer_t *salt, const char *digalgo,\n\t\t\t\t     unsigned int rounds,
      buffer_t *result_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1350,1
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1353,1
    - Dst: OBJ_txt2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1372,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1375,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1379,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1390,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1395,1
    - Dst: dcrypt_openssl_private_to_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1398,1
    - Dst: dcrypt_openssl_public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1399,1
    - Dst: dcrypt_openssl_unref_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1401,1
    - Dst: dcrypt_openssl_unref_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1405,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1407,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1407,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1414,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1414,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1415,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1415,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1416,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1418,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1419,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1420,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1421,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1424,1
    - Dst: dcrypt_openssl_rsa_decrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1425,1
    - Dst: dcrypt_openssl_ecdh_derive_secret_local
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1431,1
    - Dst: dcrypt_openssl_cipher_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1436,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1447,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1453,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1453,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1454,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1454,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1455,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1455,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1456,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1457,1
    - Dst: dcrypt_openssl_cipher_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1462,1
    - Dst: EVP_PKEY_type
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1470,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1473,1
    - Dst: d2i_PrivateKey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1474,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1475,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1476,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1478,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1479,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1482,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1482,1
    - Dst: EVP_PKEY_new_raw_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1484,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1487,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1489,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1493,1
    - Dst: BN_mpi2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1494,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1495,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1496,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1497,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1499,1
    - Dst: dcrypt_evp_pkey_from_bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1501,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1502,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1505,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1506,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1507,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1513,1
    - Dst: dcrypt_openssl_private_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1514,1
    - Dst: dcrypt_openssl_unref_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1515,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1519,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1519,1
    - Dst: dcrypt_openssl_unref_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1521,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 122
    argCount: 6
    argNames:
    - key_r
    - len
    - input
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - int
    - char**
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1342
    functionDepth: 7
    functionLinenumber: 1342
    functionLinenumberEnd: 1527
    functionName: dcrypt_openssl_load_private_key_dovecot_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - IS_XD_CURVE
    - hex_to_binary
    - strlen
    - buffer_get_data
    - dcrypt_openssl_private_to_public_key
    - str_to_uint
    - dcrypt_openssl_public_key_id
    - dcrypt_openssl_error
    - dcrypt_openssl_cipher_key_dovecot_v2
    - dcrypt_evp_pkey_from_bn
    - binary_to_hex
    - EVP_PKEY_base_id
    - OBJ_txt2nid
    - BN_secure_new
    - IS_ED_CURVE
    - dcrypt_openssl_rsa_decrypt
    - dcrypt_openssl_unref_public_key
    - EVP_PKEY_new_raw_private_key
    - i_assert
    - EVP_PKEY_type
    - dcrypt_openssl_ecdh_derive_secret_local
    - strcmp
    - dcrypt_openssl_unref_private_key
    - d2i_PrivateKey
    - t_buffer_create
    - buffer_clear_safe
    - BN_free
    - i_new
    - buffer_create_from_const_data
    - str_truncate
    - BN_mpi2bn
    - dcrypt_openssl_private_key_id
    - str_to_int
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key_dovecot_v2(struct dcrypt_private_key
      **key_r,\n\t\t\t\t\t   int len, const char **input,\n\t\t\t\t\t   const char
      *password,\n\t\t\t\t\t   struct dcrypt_private_key *dec_key,\n\t\t\t\t\t   const
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - usage
    argTypes:
    - enum dcrypt_key_usage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1547
    functionDepth: 0
    functionLinenumber: 1547
    functionLinenumberEnd: 1558
    functionName: key_usage_to_jwk_use
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char *key_usage_to_jwk_use(enum dcrypt_key_usage usage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1562,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - use
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1560
    functionDepth: 0
    functionLinenumber: 1560
    functionLinenumberEnd: 1567
    functionName: jwk_use_to_key_usage
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum dcrypt_key_usage
    signature: enum dcrypt_key_usage jwk_use_to_key_usage(const char *use)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - curve
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1569
    functionDepth: 0
    functionLinenumber: 1569
    functionLinenumberEnd: 1577
    functionName: jwk_curve_to_nid
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int jwk_curve_to_nid(const char *curve)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - nid
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1579
    functionDepth: 0
    functionLinenumber: 1579
    functionLinenumberEnd: 1586
    functionName: nid_to_jwk_curve
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *nid_to_jwk_curve(int nid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1593,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1602,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1606,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1610,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1612,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1614,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1619,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1619,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1620,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1621,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1625,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1629,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 6
    argNames:
    - key_r
    - want_private_key
    - nid
    - x
    - d
    - error_r
    argTypes:
    - EVP_PKEY**
    - bool
    - int
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1588
    functionDepth: 0
    functionLinenumber: 1588
    functionLinenumberEnd: 1632
    functionName: load_jwk_ed_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - EVP_PKEY_fromdata_init
    - EVP_PKEY_CTX_new_from_name
    - dcrypt_openssl_error
    - OSSL_PARAM_construct_end
    - OSSL_PARAM_construct_octet_string
    - EVP_PKEY_fromdata
    - EVP_PKEY_CTX_free
    - t_base64url_decode_str
    - OBJ_nid2sn
    linkageType: ''
    returnType: bool
    signature: "bool load_jwk_ed_key(EVP_PKEY **key_r, bool want_private_key, int
      nid,\n\t\t\t    const char *x, const char *d, const char **error_r)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1644,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1645,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1654,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1655,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1656,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1660,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1661,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1662,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1663,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1664,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1665,1
    - Dst: EC_GROUP_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1668,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1669,1
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1670,1
    - Dst: EC_POINT_set_affine_coordinates
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1675,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1678,1
    - Dst: dcrypt_evp_pkey_from_bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1685,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1688,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1689,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1690,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1691,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1692,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1693,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1694,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1695,1
    - Dst: ERR_raise_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1696,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1698,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1699,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1701,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1702,1
    - Dst: dcrypt_evp_pkey_from_point
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1705,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1706,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1709,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1710,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1711,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1712,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1713,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1714,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 7
    argNames:
    - key_r
    - want_private_key
    - nid
    - x
    - y
    - d
    - error_r
    argTypes:
    - EVP_PKEY**
    - bool
    - int
    - char*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1635
    functionDepth: 7
    functionLinenumber: 1635
    functionLinenumberEnd: 1719
    functionName: load_jwk_ec_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - ERR_raise_data
    - BN_CTX_new
    - BN_new
    - EVP_PKEY_get_bn_param
    - dcrypt_openssl_error
    - i_unreached
    - dcrypt_evp_pkey_from_bn
    - dcrypt_evp_pkey_from_point
    - t_base64url_decode_str
    - BN_cmp
    - BN_bin2bn
    - EC_POINT_new
    - EC_GROUP_new_by_curve_name
    - EC_POINT_free
    - EVP_PKEY_free
    - i_assert
    - EC_GROUP_free
    - BN_CTX_free
    - BN_free
    - EC_POINT_set_affine_coordinates
    linkageType: ''
    returnType: bool
    signature: "bool load_jwk_ec_key(EVP_PKEY **key_r, bool want_private_key, int
      nid,\n\t\t\t    const char *x, const char *y, const char *d,\n\t\t\t    const
      char **error_r)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1743,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1746,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1747,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1748,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1749,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1750,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1751,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1752,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1753,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1754,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1755,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1756,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1757,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1758,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1759,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1760,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1761,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1762,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1763,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1764,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1765,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1766,1
    - Dst: BN_dec2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1767,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1768,1
    - Dst: BN_dec2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1769,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1770,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1770,1
    - Dst: BN_is_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1772,1
    - Dst: BN_is_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1772,1
    - Dst: BN_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1774,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1775,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1780,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1781,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1782,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1782,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1783,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1784,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1785,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1785,1
    - Dst: BN_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1786,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1787,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1788,1
    - Dst: BN_mod_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1789,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1790,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1790,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1791,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1792,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1793,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1796,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1797,1
    - Dst: BN_mul
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1802,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1804,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1804,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1808,1
    - Dst: BN_is_odd
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1811,1
    - Dst: BN_rshift1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1812,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1816,1
    - Dst: BN_add
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1816,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1817,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1819,1
    - Dst: BN_mod_exp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1820,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1822,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1822,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1823,1
    - Dst: BN_mod_exp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1824,1
    - Dst: BN_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1826,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1826,1
    - Dst: BN_add
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1827,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1827,1
    - Dst: BN_gcd
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1829,1
    - Dst: BN_div
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1830,1
    - Dst: BN_is_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1831,1
    - Dst: BN_lshift1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1839,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1849,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1850,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1851,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1852,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1852,1
    - Dst: BN_mod
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1853,1
    - Dst: BN_sub
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1854,1
    - Dst: BN_value_one
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1854,1
    - Dst: BN_mod
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1855,1
    - Dst: BN_mod_inverse
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1856,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1857,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1858,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1859,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1860,1
    - Dst: BN_copy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1861,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1864,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1865,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1866,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1868,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1869,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1870,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1871,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1872,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1873,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1874,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1875,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1876,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1877,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1878,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1879,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 129
    argCount: 8
    argNames:
    - e
    - n
    - d
    - p_r
    - q_r
    - dmp1_r
    - dmq1_r
    - iqmp_r
    argTypes:
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1728
    functionDepth: 0
    functionLinenumber: 1728
    functionLinenumberEnd: 1881
    functionName: dcrypt_openssl_derive_rsa_param
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - BN_is_zero
    - BN_CTX_new
    - BN_add
    - BN_new
    - BN_mod_exp
    - BN_set_flags
    - BN_rshift1
    - BN_sub
    - BN_lshift1
    - BN_cmp
    - BN_is_odd
    - BN_secure_new
    - BN_mod_inverse
    - BN_mod
    - BN_dec2bn
    - BN_mul
    - BN_copy
    - BN_gcd
    - BN_CTX_free
    - BN_div
    - BN_free
    - BN_mod_mul
    - BN_value_one
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_derive_rsa_param(BIGNUM *e, BIGNUM *n, BIGNUM
      *d,\n\t\t\t\t\t    BIGNUM *p_r, BIGNUM *q_r,\n\t\t\t\t\t    BIGNUM *dmp1_r,
      BIGNUM *dmq1_r,\n\t\t\t\t\t    BIGNUM *iqmp_r)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1895,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1896,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1901,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1902,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1908,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1909,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1913,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1914,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1915,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1916,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1922,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1923,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1924,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1925,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1926,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1927,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1938,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1939,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1941,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1942,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1943,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1944,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1945,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1946,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1948,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1949,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1950,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1951,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1953,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1954,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1956,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1957,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1958,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1959,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1960,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1961,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1964,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1965,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1966,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1968,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1969,1
    - Dst: t_base64url_decode_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1970,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1972,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1973,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1974,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1975,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1976,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1977,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1978,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1979,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1980,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1981,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1988,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1989,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1990,1
    - Dst: BN_set_flags
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1991,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1993,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1994,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1995,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1996,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1998,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:1999,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2000,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2001,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2002,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2003,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2005,1
    - Dst: dcrypt_openssl_derive_rsa_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2010,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2012,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2013,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2014,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2015,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2016,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2017,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2018,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2019,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2026,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2028,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2029,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2032,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2033,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2034,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2035,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2037,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2039,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2043,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2047,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2048,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2051,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2052,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2055,1
    - Dst: OSSL_PARAM_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2056,1
    - Dst: OSSL_PARAM_BLD_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2057,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2058,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2059,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2062,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2063,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2064,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2065,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2066,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2067,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2071,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2072,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 131
    argCount: 6
    argNames:
    - key_r
    - want_private_key
    - root
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - EVP_PKEY**
    - bool
    - struct json_tree_node*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 1884
    functionDepth: 2
    functionLinenumber: 1884
    functionLinenumberEnd: 2078
    functionName: load_jwk_rsa_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - OSSL_PARAM_BLD_free
    - BN_new
    - json_tree_node_get_str
    - EVP_PKEY_fromdata_init
    - BN_set_flags
    - dcrypt_openssl_error
    - EVP_PKEY_CTX_new_from_name
    - OSSL_PARAM_BLD_new
    - dcrypt_openssl_derive_rsa_param
    - EVP_PKEY_CTX_free
    - t_base64url_decode_str
    - BN_bin2bn
    - json_tree_node_get_member
    - OSSL_PARAM_BLD_push_BN
    - BN_secure_new
    - OSSL_PARAM_free
    - EVP_PKEY_free
    - EVP_PKEY_fromdata
    - OSSL_PARAM_BLD_to_param
    - BN_free
    - EVP_PKEY_new
    linkageType: ''
    returnType: bool
    signature: "bool load_jwk_rsa_key(EVP_PKEY **key_r, bool want_private_key,\n\t\t\t
      \    const struct json_tree_node *root,\n\t\t\t     const char *password ATTR_UNUSED,\n\t\t\t
      \    struct dcrypt_private_key *dec_key ATTR_UNUSED,\n\t\t\t     const char
      **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2087,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2091,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2092,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2097,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2098,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2103,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2104,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2107,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2108,1
    - Dst: jwk_curve_to_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2114,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2116,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2120,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2120,1
    - Dst: load_jwk_ed_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2121,1
    - Dst: load_jwk_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2124,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 6
    argNames:
    - key_r
    - want_private_key
    - root
    - ATTR_UNUSED
    - ATTR_UNUSED
    - error_r
    argTypes:
    - EVP_PKEY**
    - bool
    - struct json_tree_node*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2127
      start: 2081
    functionDepth: 11
    functionLinenumber: 2081
    functionLinenumberEnd: 2127
    functionName: load_jwk_curve_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - json_tree_node_get_member
    - load_jwk_ec_key
    - json_tree_node_get_str
    - IS_XD_CURVE
    - t_strdup_printf
    - IS_ED_CURVE
    - load_jwk_ed_key
    - i_assert
    - jwk_curve_to_nid
    linkageType: ''
    returnType: bool
    signature: "bool load_jwk_curve_key(EVP_PKEY **key_r, bool want_private_key,\n\t\t\t
      \      const struct json_tree_node *root,\n\t\t\t       const char *password
      ATTR_UNUSED,\n\t\t\t       struct dcrypt_private_key *dec_key ATTR_UNUSED,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: parse_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2142,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2143,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2148,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2151,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2153,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2157,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2162,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2162,1
    - Dst: load_jwk_curve_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2163,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2165,1
    - Dst: load_jwk_rsa_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2166,1
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2175,1
    - Dst: EVP_PKEY_pairwise_check
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2176,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2177,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2179,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2180,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2184,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2187,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2189,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2193,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2194,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2195,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2198,1
    - Dst: jwk_use_to_key_usage
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2199,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2200,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2204,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 5
    argNames:
    - key_r
    - data
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - char*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2207
      start: 2129
    functionDepth: 11
    functionLinenumber: 2129
    functionLinenumberEnd: 2207
    functionName: dcrypt_openssl_load_private_key_jwk
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - strcmp
    - json_tree_node_get_member
    - i_assert
    - dcrypt_openssl_error
    - load_jwk_rsa_key
    - EVP_PKEY_free
    - t_strdup_printf
    - i_strdup_empty
    - parse_jwk_key
    - EVP_PKEY_CTX_free
    - load_jwk_curve_key
    - json_tree_get_root
    - json_tree_unref
    - EVP_PKEY_CTX_new_from_pkey
    - i_new
    - jwk_use_to_key_usage
    - json_tree_node_get_str
    - EVP_PKEY_pairwise_check
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key_jwk(struct dcrypt_private_key
      **key_r,\n\t\t\t\t    const char *data, const char *password,\n\t\t\t\t    struct
      dcrypt_private_key *dec_key,\n\t\t\t\t    const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: parse_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2220,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2221,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2226,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2229,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2231,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2235,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2240,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2240,1
    - Dst: load_jwk_curve_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2241,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2243,1
    - Dst: load_jwk_rsa_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2244,1
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2253,1
    - Dst: EVP_PKEY_public_check_quick
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2254,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2255,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2257,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2258,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2262,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2265,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2267,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2271,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2272,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2273,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2276,1
    - Dst: jwk_use_to_key_usage
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2277,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2278,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2282,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 3
    argNames:
    - key_r
    - data
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2285
      start: 2209
    functionDepth: 11
    functionLinenumber: 2209
    functionLinenumberEnd: 2285
    functionName: dcrypt_openssl_load_public_key_jwk
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - strcmp
    - json_tree_node_get_member
    - i_assert
    - dcrypt_openssl_error
    - load_jwk_rsa_key
    - EVP_PKEY_free
    - t_strdup_printf
    - i_strdup_empty
    - parse_jwk_key
    - EVP_PKEY_public_check_quick
    - load_jwk_curve_key
    - EVP_PKEY_CTX_free
    - json_tree_get_root
    - json_tree_unref
    - EVP_PKEY_CTX_new_from_pkey
    - i_new
    - jwk_use_to_key_usage
    - json_tree_node_get_str
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key_jwk(struct dcrypt_public_key **key_r,\n\t\t\t\t
      \  const char *data, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BN_num_bytes
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2290,1
    - Dst: BN_bn2bin
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2292,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - bn
    - dest
    argTypes:
    - BIGNUM*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2288
    functionDepth: 6
    functionLinenumber: 2288
    functionLinenumberEnd: 2296
    functionName: bn2base64url
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - BN_bn2bin
    - BN_num_bytes
    - base64url_encode
    linkageType: ''
    returnType: int
    signature: int bn2base64url(const BIGNUM *bn, string_t *dest)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2305,1
    - Dst: key_usage_to_jwk_use
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2307,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2308,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2309,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2310,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2312,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2313,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2314,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2315,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2316,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2317,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2318,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2319,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2320,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2321,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2322,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2324,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2326,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2328,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2330,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2331,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2332,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2334,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2335,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2336,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2337,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2338,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2339,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2340,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2341,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2342,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2343,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2344,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2345,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2346,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2347,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2348,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2349,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2350,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2351,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2352,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2353,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2354,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2355,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2356,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2360,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2361,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2362,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2363,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 51
    argCount: 9
    argNames:
    - pkey
    - is_private_key
    - usage
    - key_id
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - dest
    - error_r
    argTypes:
    - EVP_PKEY*
    - bool
    - enum dcrypt_key_usage
    - char*
    - char*
    - char*
    - struct dcrypt_public_key*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2365
      start: 2298
    functionDepth: 18
    functionLinenumber: 2298
    functionLinenumberEnd: 2365
    functionName: store_jwk_rsa_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - json_ostream_ndescend_object
    - t_str_new
    - EVP_PKEY_get_bn_param
    - bn2base64url
    - dcrypt_openssl_error
    - json_ostream_nascend_object
    - str_append_str
    - BN_secure_new
    - json_ostream_create_str
    - json_ostream_nwrite_string
    - BN_free
    - str_truncate
    - key_usage_to_jwk_use
    - json_ostream_nfinish_destroy
    - i_assert
    - json_ostream_nwrite_string_buffer
    linkageType: ''
    returnType: bool
    signature: "bool store_jwk_rsa_key(EVP_PKEY *pkey, bool is_private_key,\n\t\t\t
      \     enum dcrypt_key_usage usage, const char *key_id,\n\t\t\t      const char
      *cipher ATTR_UNUSED,\n\t\t\t      const char *password ATTR_UNUSED,\n\t\t\t
      \     struct dcrypt_public_key *enc_key ATTR_UNUSED,\n\t\t\t      string_t *dest,
      const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2374,1
    - Dst: dcrypt_EVP_PKEY_get_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2379,1
    - Dst: nid_to_jwk_curve
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2380,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2382,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2384,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2385,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2386,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2388,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2391,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2393,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2394,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2395,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2397,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2401,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2402,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2403,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2405,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2406,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2407,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2408,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2410,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2412,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2413,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2414,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2415,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2417,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2419,1
    - Dst: json_ostream_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2424,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2427,1
    - Dst: base64url_encode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2428,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2430,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2432,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2433,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2434,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 9
    argNames:
    - pkey
    - is_private_key
    - ATTR_UNUSED
    - key_id
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - dest
    - error_r
    argTypes:
    - EVP_PKEY*
    - bool
    - enum dcrypt_key_usage
    - char*
    - char*
    - char*
    - struct dcrypt_public_key*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2367
    functionDepth: 18
    functionLinenumber: 2367
    functionLinenumberEnd: 2437
    functionName: store_jwk_ed_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - dcrypt_EVP_PKEY_get_nid
    - IS_XD_CURVE
    - json_ostream_nwrite_string
    - t_str_new
    - i_unreached
    - base64url_encode
    - EVP_PKEY_get_octet_string_param
    - json_ostream_destroy
    - json_ostream_nascend_object
    - IS_ED_CURVE
    - buffer_append_space_unsafe
    - i_assert
    - json_ostream_ndescend_object
    - nid_to_jwk_curve
    - str_append_str
    - json_ostream_create_str
    - t_buffer_create
    - str_truncate
    - json_ostream_nfinish_destroy
    - json_ostream_nwrite_string_buffer
    linkageType: ''
    returnType: bool
    signature: "bool store_jwk_ed_key(EVP_PKEY *pkey, bool is_private_key,\n\t\t\t
      \    enum dcrypt_key_usage usage ATTR_UNUSED,\n\t\t\t     const char *key_id,
      const char *cipher ATTR_UNUSED,\n\t\t\t     const char *password ATTR_UNUSED,\n\t\t\t
      \    struct dcrypt_public_key *enc_key ATTR_UNUSED,\n\t\t\t     string_t *dest,
      const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2449,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2452,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2453,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2454,1
    - Dst: dcrypt_EVP_PKEY_get_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2456,1
    - Dst: nid_to_jwk_curve
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2457,1
    - Dst: key_usage_to_jwk_use
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2458,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2459,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2460,1
    - Dst: json_ostream_create_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2461,1
    - Dst: json_ostream_ndescend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2463,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2464,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2465,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2466,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2467,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2468,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2469,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2470,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2473,1
    - Dst: json_ostream_nwrite_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2475,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2476,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2477,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2481,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2484,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2487,1
    - Dst: bn2base64url
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2488,1
    - Dst: json_ostream_nwrite_string_buffer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2489,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2490,1
    - Dst: json_ostream_nascend_object
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2492,1
    - Dst: json_ostream_nfinish_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2493,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2494,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 9
    argNames:
    - pkey
    - is_private_key
    - usage
    - key_id
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - dest
    - error_r
    argTypes:
    - EVP_PKEY*
    - bool
    - enum dcrypt_key_usage
    - char*
    - char*
    - char*
    - struct dcrypt_public_key*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2496
      start: 2441
    functionDepth: 18
    functionLinenumber: 2441
    functionLinenumberEnd: 2496
    functionName: store_jwk_ec_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - EVP_PKEY_get_bn_param
    - t_str_new
    - json_ostream_ndescend_object
    - bn2base64url
    - dcrypt_EVP_PKEY_get_nid
    - json_ostream_nascend_object
    - nid_to_jwk_curve
    - i_unreached
    - str_append_str
    - json_ostream_create_str
    - json_ostream_nwrite_string
    - BN_free
    - str_truncate
    - key_usage_to_jwk_use
    - json_ostream_nfinish_destroy
    - i_assert
    - json_ostream_nwrite_string_buffer
    linkageType: ''
    returnType: bool
    signature: "bool store_jwk_ec_key(EVP_PKEY *pkey, bool is_private_key,\n\t\t\t
      \    enum dcrypt_key_usage usage,\n\t\t\t     const char *key_id,\n\t\t\t     const
      char *cipher ATTR_UNUSED,\n\t\t\t     const char *password ATTR_UNUSED,\n\t\t\t
      \    struct dcrypt_public_key *enc_key ATTR_UNUSED,\n\t\t\t     string_t *dest,
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2510,1
    - Dst: store_jwk_rsa_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2512,1
    - Dst: store_jwk_ec_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2516,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2518,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2518,1
    - Dst: store_jwk_ed_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2519,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 9
    argNames:
    - pkey
    - is_private_key
    - usage
    - key_id
    - cipher
    - password
    - enc_key
    - dest
    - error_r
    argTypes:
    - EVP_PKEY*
    - bool
    - enum dcrypt_key_usage
    - char*
    - char*
    - char*
    - struct dcrypt_public_key*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2525
      start: 2498
    functionDepth: 0
    functionLinenumber: 2498
    functionLinenumberEnd: 2525
    functionName: store_jwk_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - IS_XD_CURVE
    - store_jwk_ed_key
    - IS_ED_CURVE
    - store_jwk_ec_key
    - store_jwk_rsa_key
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool store_jwk_key(EVP_PKEY *pkey, bool is_private_key,\n\t\t\t  enum
      dcrypt_key_usage usage,\n\t\t\t  const char *key_id,\n\t\t\t  const char *cipher,\n\t\t\t
      \ const char *password,\n\t\t\t  struct dcrypt_public_key *enc_key,\n\t\t\t
      \ string_t *dest, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2534,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2535,1
    - Dst: dcrypt_openssl_load_private_key_dovecot_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2539,1
    - Dst: dcrypt_openssl_load_private_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2542,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - key_r
    - data
    - password
    - key
    - version
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - char*
    - char*
    - struct dcrypt_private_key*
    - enum dcrypt_key_version
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2548
      start: 2527
    functionDepth: 5
    functionLinenumber: 2527
    functionLinenumberEnd: 2548
    functionName: dcrypt_openssl_load_private_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - i_unreached
    - dcrypt_openssl_load_private_key_dovecot_v2
    - str_array_length
    - t_strsplit
    - dcrypt_openssl_load_private_key_dovecot_v1
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key_dovecot(struct dcrypt_private_key
      **key_r,\n\t\t\t\t\tconst char *data, const char *password,\n\t\t\t\t\tstruct
      dcrypt_private_key *key,\n\t\t\t\t\tenum dcrypt_key_version version,\n\t\t\t\t\tconst
      char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2556,1
    - Dst: EC_GROUP_new_by_curve_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2561,1
    - Dst: BN_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2562,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2564,1
    - Dst: EC_POINT_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2565,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2567,1
    - Dst: EC_POINT_hex2point
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2569,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2570,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2571,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2572,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2573,1
    - Dst: BN_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2576,1
    - Dst: dcrypt_evp_pkey_from_point
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2579,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2580,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2581,1
    - Dst: EC_POINT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2584,1
    - Dst: EC_GROUP_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2585,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2586,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2588,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2590,1
    - Dst: dcrypt_openssl_public_key_id_old
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2592,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2593,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2597,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2597,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2600,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2603,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 4
    argNames:
    - key_r
    - len
    - input
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2550
    functionDepth: 6
    functionLinenumber: 2550
    functionLinenumberEnd: 2607
    functionName: dcrypt_openssl_load_public_key_dovecot_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - EC_GROUP_new_by_curve_name
    - i_zero
    - strcmp
    - dcrypt_openssl_error
    - BN_CTX_new
    - EC_POINT_free
    - EVP_PKEY_free
    - BN_CTX_free
    - t_buffer_create
    - dcrypt_openssl_public_key_id_old
    - EC_POINT_hex2point
    - dcrypt_evp_pkey_from_point
    - i_new
    - binary_to_hex
    - i_assert
    - EC_GROUP_free
    - str_to_int
    - EC_POINT_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key_dovecot_v1(struct dcrypt_public_key
      **key_r,\n\t\t\t\t\t  int len, const char **input,\n\t\t\t\t\t  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2615,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2617,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2618,1
    - Dst: d2i_PUBKEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2622,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2623,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2624,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2629,1
    - Dst: dcrypt_openssl_public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2633,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2634,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2637,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2637,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2639,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2643,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - key_r
    - len
    - input
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2647
      start: 2609
    functionDepth: 6
    functionLinenumber: 2609
    functionLinenumberEnd: 2647
    functionName: dcrypt_openssl_load_public_key_dovecot_v2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - strcmp
    - d2i_PUBKEY
    - dcrypt_openssl_error
    - hex_to_binary
    - strlen
    - EVP_PKEY_free
    - t_buffer_create
    - binary_to_hex
    - i_new
    - buffer_create_from_data
    - dcrypt_openssl_public_key_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key_dovecot_v2(struct dcrypt_public_key
      **key_r,\n\t\t\t\t\t  int len, const char **input,\n\t\t\t\t\t  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2655,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2656,1
    - Dst: dcrypt_openssl_load_public_key_dovecot_v1
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2660,1
    - Dst: dcrypt_openssl_load_public_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2663,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2666,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - key_r
    - data
    - version
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - char*
    - enum dcrypt_key_version
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2669
      start: 2649
    functionDepth: 5
    functionLinenumber: 2649
    functionLinenumberEnd: 2669
    functionName: dcrypt_openssl_load_public_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - dcrypt_openssl_load_public_key_dovecot_v1
    - i_unreached
    - str_array_length
    - t_strsplit
    - dcrypt_openssl_load_public_key_dovecot_v2
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key_dovecot(struct dcrypt_public_key
      **key_r,\n\t\t\t\t       const char *data,\n\t\t\t\t       enum dcrypt_key_version
      version,\n\t\t\t\t       const char **error_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2683,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2684,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2685,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2687,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2688,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2689,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2690,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2692,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2695,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2695,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2700,1
    - Dst: buffer_get_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2702,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2705,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2706,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2707,1
    - Dst: dcrypt_rsa_encrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2708,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2714,1
    - Dst: dcrypt_openssl_ecdh_derive_secret_peer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2716,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2722,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2726,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2730,1
    - Dst: dcrypt_openssl_cipher_key_dovecot_v2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2731,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2735,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2736,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2740,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2743,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2745,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2747,1
    - Dst: dcrypt_openssl_public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2748,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2751,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 7
    argNames:
    - key
    - enctype
    - cipher
    - password
    - enc_key
    - destination
    - error_r
    argTypes:
    - buffer_t*
    - int
    - char*
    - char*
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2755
      start: 2671
    functionDepth: 11
    functionLinenumber: 2671
    functionLinenumberEnd: 2755
    functionName: dcrypt_openssl_encrypt_private_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - dcrypt_openssl_ecdh_derive_secret_peer
    - IS_XD_CURVE
    - t_strdup_printf
    - buffer_set_used_size
    - dcrypt_openssl_public_key_id
    - random_fill
    - str_append_c
    - i_unreached
    - dcrypt_openssl_cipher_key_dovecot_v2
    - buffer_get_used_size
    - EVP_PKEY_base_id
    - buffer_append_space_unsafe
    - dcrypt_rsa_encrypt
    - binary_to_hex_append
    - t_str_lcase
    - t_buffer_create
    - buffer_clear_safe
    - buffer_create_from_const_data
    - str_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_encrypt_private_key_dovecot(buffer_t *key, int
      enctype,\n\t\t\t\t\t   const char *cipher,\n\t\t\t\t\t   const char *password,\n\t\t\t\t\t
      \  struct dcrypt_public_key *enc_key,\n\t\t\t\t\t   buffer_t *destination,\n\t\t\t\t\t
      \  const char **error_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2765,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2771,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2772,1
    - Dst: dcrypt_EVP_PKEY_get_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2772,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2774,1
    - Dst: EVP_PKEY_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2774,1
    - Dst: OBJ_obj2txt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2778,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2780,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2786,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2789,1
    - Dst: i2d_PrivateKey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2791,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2793,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2794,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2795,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2798,1
    - Dst: BN_bn2mpi
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2803,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2804,1
    - Dst: BN_bn2mpi
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2805,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2806,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2807,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2807,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2808,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2808,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2810,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2811,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2813,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2816,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2820,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2821,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2822,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2825,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2826,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2830,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2834,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2834,1
    - Dst: dcrypt_openssl_encrypt_private_key_dovecot
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2839,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2842,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2846,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2850,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2851,1
    - Dst: dcrypt_openssl_private_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2852,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2853,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2857,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 63
    argCount: 6
    argNames:
    - key
    - cipher
    - destination
    - password
    - enc_key
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - buffer_t*
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2757
    functionDepth: 11
    functionLinenumber: 2757
    functionLinenumberEnd: 2861
    functionName: dcrypt_openssl_store_private_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - OBJ_nid2obj
    - dcrypt_EVP_PKEY_get_nid
    - IS_XD_CURVE
    - i2d_PrivateKey
    - t_strdup_printf
    - buffer_set_used_size
    - str_begins_icase
    - buffer_append
    - EVP_PKEY_get_bn_param
    - dcrypt_openssl_error
    - str_append_c
    - i_unreached
    - EVP_PKEY_id
    - buffer_get_used_size
    - OBJ_obj2txt
    - EVP_PKEY_get_octet_string_param
    - EVP_PKEY_base_id
    - IS_ED_CURVE
    - buffer_append_space_unsafe
    - i_assert
    - binary_to_hex_append
    - dcrypt_openssl_encrypt_private_key_dovecot
    - t_buffer_create
    - BN_bn2mpi
    - buffer_clear_safe
    - BN_free
    - str_append
    - dcrypt_openssl_private_key_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_store_private_key_dovecot(struct dcrypt_private_key
      *key,\n\t\t\t\t\t const char *cipher,\n\t\t\t\t\t buffer_t *destination,\n\t\t\t\t\t
      const char *password,\n\t\t\t\t\t struct dcrypt_public_key *enc_key,\n\t\t\t\t\t
      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2870,1
    - Dst: i2d_PUBKEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2872,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2875,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2878,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2879,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2880,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2881,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2884,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2886,1
    - Dst: dcrypt_openssl_public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2887,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2890,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2894,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2894,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - key
    - destination
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2896
      start: 2863
    functionDepth: 6
    functionLinenumber: 2863
    functionLinenumberEnd: 2896
    functionName: dcrypt_openssl_store_public_key_dovecot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - dcrypt_openssl_error
    - str_append_c
    - t_buffer_create
    - buffer_get_used_size
    - i2d_PUBKEY
    - buffer_set_used_size
    - binary_to_hex
    - OPENSSL_free
    - str_append
    - dcrypt_openssl_public_key_id
    - binary_to_hex_append
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_store_public_key_dovecot(struct dcrypt_public_key
      *key,\n\t\t\t\t\tbuffer_t *destination,\n\t\t\t\t\tconst char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2904,1
    - Dst: dcrypt_openssl_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2909,1
    - Dst: dcrypt_openssl_load_private_key_jwk
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2920,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2922,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - key_r
    - data
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - char*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2924
      start: 2898
    functionDepth: 1
    functionLinenumber: 2898
    functionLinenumberEnd: 2924
    functionName: dcrypt_openssl_load_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - T_END_PASS_STR_IF
    - dcrypt_openssl_key_string_get_info
    - dcrypt_openssl_load_private_key_jwk
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_private_key(struct dcrypt_private_key **key_r,\n\t\t\t\tconst
      char *data, const char *password,\n\t\t\t\tstruct dcrypt_private_key *dec_key,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2960,1
    - Dst: dcrypt_openssl_key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2962,1
    - Dst: dcrypt_openssl_load_public_key_jwk
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2975,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:2976,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - key_r
    - data
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2978
      start: 2953
    functionDepth: 1
    functionLinenumber: 2953
    functionLinenumberEnd: 2978
    functionName: dcrypt_openssl_load_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_key_string_get_info
    - T_END_PASS_STR_IF
    - i_assert
    - dcrypt_openssl_load_public_key_jwk
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_load_public_key(struct dcrypt_public_key **key_r,\n\t\t\t
      \      const char *data, const char **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3017,1
    - Dst: dcrypt_openssl_store_private_key_dovecot
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3021,1
    - Dst: store_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3027,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3033,1
    - Dst: BIO_s_mem
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3033,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3035,1
    - Dst: EVP_get_cipherbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3039,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3041,1
    - Dst: PEM_write_bio_PrivateKey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3046,1
    - Dst: BIO_flush
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3049,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3053,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3054,1
    - Dst: BIO_get_mem_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3059,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3060,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3061,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 7
    argNames:
    - key
    - format
    - cipher
    - destination
    - password
    - enc_key
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - enum dcrypt_key_format
    - char*
    - buffer_t*
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3064
      start: 3009
    functionDepth: 11
    functionLinenumber: 3009
    functionLinenumberEnd: 3064
    functionName: dcrypt_openssl_store_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - PEM_write_bio_PrivateKey
    - buffer_append
    - dcrypt_openssl_error
    - BIO_get_mem_data
    - BIO_vfree
    - BIO_flush
    - dcrypt_openssl_store_private_key_dovecot
    - store_jwk_key
    - EVP_get_cipherbyname
    - t_strdup_printf
    - i_assert
    - BIO_s_mem
    - BIO_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_store_private_key(struct dcrypt_private_key *key,\n\t\t\t\t
      enum dcrypt_key_format format,\n\t\t\t\t const char *cipher, buffer_t *destination,\n\t\t\t\t
      const char *password,\n\t\t\t\t struct dcrypt_public_key *enc_key,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3073,1
    - Dst: dcrypt_openssl_store_public_key_dovecot
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3076,1
    - Dst: store_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3084,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3090,1
    - Dst: BIO_s_mem
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3090,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3092,1
    - Dst: PEM_write_bio_PUBKEY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3094,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3097,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3098,1
    - Dst: BIO_get_mem_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3103,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3104,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3105,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - key
    - format
    - destination
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - enum dcrypt_key_format
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3108
      start: 3066
    functionDepth: 5
    functionLinenumber: 3066
    functionLinenumberEnd: 3108
    functionName: dcrypt_openssl_store_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - BIO_get_mem_data
    - BIO_vfree
    - store_jwk_key
    - dcrypt_openssl_store_public_key_dovecot
    - PEM_write_bio_PUBKEY
    - i_assert
    - BIO_s_mem
    - BIO_new
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_store_public_key(struct dcrypt_public_key *key,\n\t\t\t\tenum
      dcrypt_key_format format,\n\t\t\t\tbuffer_t *destination, const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3114,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3119,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3120,1
    - Dst: EVP_PKEY_todata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3123,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3124,1
    - Dst: OSSL_PARAM_locate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3126,1
    - Dst: OSSL_PARAM_set_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3128,1
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3129,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3130,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3131,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3132,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3134,1
    - Dst: OSSL_PARAM_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3135,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - priv_key
    - pub_key_r
    argTypes:
    - struct dcrypt_private_key*
    - struct dcrypt_public_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3140
      start: 3110
    functionDepth: 1
    functionLinenumber: 3110
    functionLinenumberEnd: 3140
    functionName: dcrypt_openssl_private_to_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 4
    functionsReached:
    - EVP_PKEY_fromdata_init
    - OSSL_PARAM_locate
    - i_unreached
    - OSSL_PARAM_free
    - EVP_PKEY_fromdata
    - EVP_PKEY_CTX_free
    - EVP_PKEY_new
    - i_new
    - EVP_PKEY_CTX_new_from_pkey
    - OSSL_PARAM_set_utf8_string
    - i_assert
    - EVP_PKEY_todata
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_private_to_public_key(struct dcrypt_private_key
      *priv_key,\n\t\t\t\t     struct dcrypt_public_key **pub_key_r)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3158,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3161,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3164,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3168,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3170,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3172,1
    - Dst: parse_jwk_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3185,1
    - Dst: json_tree_get_root
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3191,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3192,1
    - Dst: json_tree_node_get_str
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3193,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3194,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3197,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3198,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3202,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3202,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3203,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3207,1
    - Dst: json_tree_node_get_member
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3208,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3214,1
    - Dst: json_tree_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3218,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3220,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3223,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3227,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3228,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3238,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3242,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3245,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3248,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3252,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3257,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3261,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3264,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3267,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3271,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3283,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3290,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3291,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3295,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3296,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 135
    argCount: 8
    argNames:
    - key_data
    - format_r
    - version_r
    - kind_r
    - encryption_type_r
    - encryption_key_hash_r
    - key_hash_r
    - error_r
    argTypes:
    - char*
    - enum dcrypt_key_format*
    - enum dcrypt_key_version*
    - enum dcrypt_key_kind*
    - enum dcrypt_key_encryption_type*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3299
      start: 3142
    functionDepth: 5
    functionLinenumber: 3142
    functionLinenumberEnd: 3299
    functionName: dcrypt_openssl_key_string_get_info
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 4
    functionsReached:
    - strcmp
    - json_tree_node_get_member
    - str_begins_with
    - json_tree_node_get_str
    - str_begins
    - str_array_length
    - parse_jwk_key
    - t_strsplit
    - i_strdup
    - json_tree_get_root
    - json_tree_unref
    - t_strdup
    - i_assert
    - i_free
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_string_get_info(\n\tconst char *key_data,
      enum dcrypt_key_format *format_r,\n\tenum dcrypt_key_version *version_r, enum
      dcrypt_key_kind *kind_r,\n\tenum dcrypt_key_encryption_type *encryption_type_r,\n\tconst
      char **encryption_key_hash_r, const char **key_hash_r,\n\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3305
      start: 3301
    functionDepth: 1
    functionLinenumber: 3301
    functionLinenumberEnd: 3305
    functionName: dcrypt_openssl_ref_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ref_public_key(struct dcrypt_public_key *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3311
      start: 3307
    functionDepth: 1
    functionLinenumber: 3307
    functionLinenumberEnd: 3311
    functionName: dcrypt_openssl_ref_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_ref_private_key(struct dcrypt_private_key *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3315,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3319,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3322,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3323,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3325
      start: 3313
    functionDepth: 1
    functionLinenumber: 3313
    functionLinenumberEnd: 3325
    functionName: dcrypt_openssl_unref_public_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 3
    functionsReached:
    - EVP_PKEY_free
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_unref_public_key(struct dcrypt_public_key **key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3329,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3333,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3336,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3337,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3339
      start: 3327
    functionDepth: 1
    functionLinenumber: 3327
    functionLinenumberEnd: 3339
    functionName: dcrypt_openssl_unref_private_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 3
    functionsReached:
    - EVP_PKEY_free
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_unref_private_key(struct dcrypt_private_key **key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3343,1
    - Dst: dcrypt_openssl_unref_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3344,1
    - Dst: dcrypt_openssl_unref_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - keypair
    argTypes:
    - struct dcrypt_keypair*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3346
      start: 3341
    functionDepth: 1
    functionLinenumber: 3341
    functionLinenumberEnd: 3346
    functionName: dcrypt_openssl_unref_keypair
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_unref_public_key
    - i_assert
    - dcrypt_openssl_unref_private_key
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_unref_keypair(struct dcrypt_keypair *keypair)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3354,1
    - Dst: dcrypt_openssl_padding_mode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3355,1
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3358,1
    - Dst: EVP_PKEY_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3359,1
    - Dst: EVP_PKEY_encrypt_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3363,1
    - Dst: EVP_PKEY_CTX_set_rsa_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3364,1
    - Dst: EVP_PKEY_encrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3365,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3366,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3369,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3373,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 6
    argNames:
    - key
    - data
    - data_len
    - result
    - padding
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - unsigned char*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3376
      start: 3348
    functionDepth: 5
    functionLinenumber: 3348
    functionLinenumberEnd: 3376
    functionName: dcrypt_openssl_rsa_encrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_padding_mode
    - buffer_append
    - dcrypt_openssl_error
    - EVP_PKEY_size
    - EVP_PKEY_encrypt_init
    - EVP_PKEY_CTX_set_rsa_padding
    - EVP_PKEY_CTX_free
    - EVP_PKEY_CTX_new_from_pkey
    - i_assert
    - EVP_PKEY_encrypt
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_rsa_encrypt(struct dcrypt_public_key *key,\n\t\t\t
      \  const unsigned char *data, size_t data_len,\n\t\t\t   buffer_t *result, enum
      dcrypt_padding padding,\n\t\t\t   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3384,1
    - Dst: dcrypt_openssl_padding_mode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3385,1
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3388,1
    - Dst: EVP_PKEY_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3389,1
    - Dst: EVP_PKEY_decrypt_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3393,1
    - Dst: EVP_PKEY_CTX_set_rsa_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3394,1
    - Dst: EVP_PKEY_decrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3395,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3396,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3399,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3403,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 6
    argNames:
    - key
    - data
    - data_len
    - result
    - padding
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - unsigned char*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3406
      start: 3378
    functionDepth: 5
    functionLinenumber: 3378
    functionLinenumberEnd: 3406
    functionName: dcrypt_openssl_rsa_decrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - dcrypt_openssl_padding_mode
    - EVP_PKEY_decrypt
    - buffer_append
    - dcrypt_openssl_error
    - EVP_PKEY_size
    - EVP_PKEY_CTX_set_rsa_padding
    - EVP_PKEY_CTX_free
    - EVP_PKEY_CTX_new_from_pkey
    - EVP_PKEY_decrypt_init
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_rsa_decrypt(struct dcrypt_private_key *key,\n\t\t\t
      \  const unsigned char *data, size_t data_len,\n\t\t\t   buffer_t *result, enum
      dcrypt_padding padding,\n\t\t\t   const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3413,1
    - Dst: d2i_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3414,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3416,1
    - Dst: OBJ_cmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3420,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3423,1
    - Dst: OBJ_obj2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3423,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3425,1
    - Dst: OBJ_obj2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3425,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - oid
    - oid_len
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3429
      start: 3408
    functionDepth: 1
    functionLinenumber: 3408
    functionLinenumberEnd: 3429
    functionName: dcrypt_openssl_oid2name
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - OBJ_obj2nid
    - ASN1_OBJECT_free
    - d2i_ASN1_OBJECT
    - OBJ_nid2sn
    - OBJ_cmp
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *\ndcrypt_openssl_oid2name(const unsigned char *oid, size_t oid_len,\n\t\t\tconst
      char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3434,1
    - Dst: OBJ_txt2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3435,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3437,1
    - Dst: OBJ_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3439,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3441,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3442,1
    - Dst: OBJ_dup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3443,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3450,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3451,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3452,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3453,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3455,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - name
    - oid
    - error_r
    argTypes:
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3457
      start: 3431
    functionDepth: 5
    functionLinenumber: 3431
    functionLinenumberEnd: 3457
    functionName: dcrypt_openssl_name2oid
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - OBJ_length
    - i2d_ASN1_OBJECT
    - OBJ_dup
    - strcasecmp
    - ASN1_OBJECT_free
    - OBJ_txt2obj
    - buffer_append_space_unsafe
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_openssl_name2oid(const char *name, buffer_t *oid, const
      char **error_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3462,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3464,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3467,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3467,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3469,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3470
      start: 3459
    functionDepth: 1
    functionLinenumber: 3459
    functionLinenumberEnd: 3470
    functionName: dcrypt_openssl_private_key_type
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - i_unreached
    - IS_XD_CURVE
    - IS_ED_CURVE
    - i_assert
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: enum dcrypt_key_type
    signature: enum dcrypt_key_type dcrypt_openssl_private_key_type(struct dcrypt_private_key
      *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3475,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3477,1
    - Dst: IS_XD_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3480,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3480,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3482,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3483
      start: 3472
    functionDepth: 1
    functionLinenumber: 3472
    functionLinenumberEnd: 3483
    functionName: dcrypt_openssl_public_key_type
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - i_unreached
    - IS_XD_CURVE
    - IS_ED_CURVE
    - i_assert
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: enum dcrypt_key_type
    signature: enum dcrypt_key_type dcrypt_openssl_public_key_type(struct dcrypt_public_key
      *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3491,1
    - Dst: dcrypt_openssl_public_key_type
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3494,1
    - Dst: ec_key_get_pub_point_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3499,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3501,1
    - Dst: SHA256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3503,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3503,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - key
    - result
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3506
      start: 3486
    functionDepth: 5
    functionLinenumber: 3486
    functionLinenumberEnd: 3506
    functionName: dcrypt_openssl_public_key_id_old
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - ec_key_get_pub_point_hex
    - strlen
    - SHA256
    - i_assert
    - dcrypt_openssl_public_key_type
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_public_key_id_old(struct dcrypt_public_key *key,\n\t\t\t\t
      buffer_t *result, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3513,1
    - Dst: dcrypt_openssl_private_key_type
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3516,1
    - Dst: ec_key_get_pub_point_hex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3521,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3523,1
    - Dst: SHA256
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3525,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3525,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - key
    - result
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3528
      start: 3508
    functionDepth: 5
    functionLinenumber: 3508
    functionLinenumberEnd: 3528
    functionName: dcrypt_openssl_private_key_id_old
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - dcrypt_openssl_error
    - dcrypt_openssl_private_key_type
    - ec_key_get_pub_point_hex
    - strlen
    - SHA256
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_private_key_id_old(struct dcrypt_private_key *key,\n\t\t\t\t
      \ buffer_t *result, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3537,1
    - Dst: EVP_PKEY_set_utf8_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3538,1
    - Dst: BIO_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3539,1
    - Dst: BIO_s_mem
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3539,1
    - Dst: i2d_PUBKEY_bio
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3540,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3541,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3542,1
    - Dst: BIO_get_mem_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3544,1
    - Dst: EVP_MD_CTX_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3547,1
    - Dst: EVP_DigestInit_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3549,1
    - Dst: EVP_DigestUpdate
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3550,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3551,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3552,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3554,1
    - Dst: EVP_MD_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3557,1
    - Dst: BIO_vfree
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3558,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - key
    - md
    - result
    - error_r
    argTypes:
    - EVP_PKEY*
    - EVP_MD*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3561
      start: 3531
    functionDepth: 5
    functionLinenumber: 3531
    functionLinenumberEnd: 3561
    functionName: dcrypt_openssl_public_key_id_evp
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 2
    functionsReached:
    - buffer_append
    - EVP_PKEY_set_utf8_string_param
    - dcrypt_openssl_error
    - BIO_get_mem_data
    - BIO_vfree
    - BIO_new
    - EVP_MD_CTX_free
    - EVP_MD_CTX_new
    - EVP_DigestUpdate
    - EVP_MD_size
    - EVP_DigestFinal_ex
    - EVP_DigestInit_ex
    - BIO_s_mem
    - i2d_PUBKEY_bio
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_public_key_id_evp(EVP_PKEY *key,\n\t\t\t\t const
      EVP_MD *md, buffer_t *result,\n\t\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3568,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3569,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3573,1
    - Dst: dcrypt_openssl_public_key_id_evp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - key
    - algorithm
    - result
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3578
      start: 3563
    functionDepth: 11
    functionLinenumber: 3563
    functionLinenumberEnd: 3578
    functionName: dcrypt_openssl_public_key_id
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 8
    functionsReached:
    - i_assert
    - t_strdup_printf
    - EVP_get_digestbyname
    - dcrypt_openssl_public_key_id_evp
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_public_key_id(struct dcrypt_public_key *key,\n\t\t\t
      \    const char *algorithm, buffer_t *result,\n\t\t\t     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_digestbyname
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3585,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3586,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3590,1
    - Dst: dcrypt_openssl_public_key_id_evp
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - key
    - algorithm
    - result
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3595
      start: 3580
    functionDepth: 11
    functionLinenumber: 3580
    functionLinenumberEnd: 3595
    functionName: dcrypt_openssl_private_key_id
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 4
    functionsReached:
    - i_assert
    - t_strdup_printf
    - EVP_get_digestbyname
    - dcrypt_openssl_public_key_id_evp
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_private_key_id(struct dcrypt_private_key *key,\n\t\t\t
      \     const char *algorithm, buffer_t *result,\n\t\t\t      const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3601,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3603,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3604,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3612,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3613,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3615,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3616,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3617,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3618,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - signature_r
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3619
      start: 3597
    functionDepth: 5
    functionLinenumber: 3597
    functionLinenumberEnd: 3619
    functionName: dcrypt_x962_remove_der
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_append_buf
    - t_buffer_create
    - buffer_clear_safe
    - buffer_append_c
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dcrypt_x962_remove_der(buffer_t *signature_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3626,1
    - Dst: BN_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3627,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3628,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3629,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3630,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3631,1
    - Dst: sk_ASN1_TYPE_new_null
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3634,1
    - Dst: sk_ASN1_TYPE_reserve
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3635,1
    - Dst: BN_to_ASN1_INTEGER
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3636,1
    - Dst: BN_to_ASN1_INTEGER
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3637,1
    - Dst: ASN1_TYPE_pack_sequence
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3638,1
    - Dst: ASN1_INTEGER_it
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3638,1
    - Dst: sk_ASN1_TYPE_unshift
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3639,1
    - Dst: ASN1_TYPE_pack_sequence
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3640,1
    - Dst: ASN1_INTEGER_it
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3640,1
    - Dst: sk_ASN1_TYPE_unshift
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3641,1
    - Dst: i2d_ASN1_SEQUENCE_ANY
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3643,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3644,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3645,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3646,1
    - Dst: sk_ASN1_TYPE_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3647,1
    - Dst: ASN1_INTEGER_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3648,1
    - Dst: ASN1_INTEGER_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3649,1
    - Dst: ASN1_TYPE_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3650,1
    - Dst: ASN1_TYPE_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3651,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3652,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3653,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - signature_r
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3655
      start: 3621
    functionDepth: 5
    functionLinenumber: 3621
    functionLinenumberEnd: 3655
    functionName: dcrypt_x962_add_der
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - ASN1_TYPE_free
    - buffer_append
    - ASN1_INTEGER_free
    - i2d_ASN1_SEQUENCE_ANY
    - sk_ASN1_TYPE_free
    - sk_ASN1_TYPE_new_null
    - buffer_clear_safe
    - OPENSSL_free
    - BN_free
    - BN_to_ASN1_INTEGER
    - sk_ASN1_TYPE_unshift
    - ASN1_TYPE_pack_sequence
    - BN_bin2bn
    - BN_new
    - ASN1_INTEGER_it
    - sk_ASN1_TYPE_reserve
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_x962_add_der(buffer_t *signature_r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3667,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3673,1
    - Dst: dcrypt_openssl_padding_mode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3678,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3683,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3683,1
    - Dst: EVP_MD_CTX_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3686,1
    - Dst: EVP_DigestSignInit_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3692,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3694,1
    - Dst: EVP_PKEY_CTX_set_rsa_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3695,1
    - Dst: EVP_DigestSign
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3696,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3697,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3699,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3702,1
    - Dst: EVP_DigestSign
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3703,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3704,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3706,1
    - Dst: dcrypt_x962_remove_der
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3710,1
    - Dst: EVP_MD_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3715,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 8
    argNames:
    - key
    - algorithm
    - format
    - data
    - data_len
    - signature_r
    - padding
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - enum dcrypt_signature_format
    - void*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3718
      start: 3657
    functionDepth: 6
    functionLinenumber: 3657
    functionLinenumberEnd: 3718
    functionName: dcrypt_openssl_sign
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_padding_mode
    - dcrypt_openssl_error
    - EVP_DigestSign
    - i_unreached
    - EVP_PKEY_CTX_set_rsa_padding
    - IS_ED_CURVE
    - buffer_set_used_size
    - dcrypt_x962_remove_der
    - buffer_append_space_unsafe
    - EVP_MD_CTX_free
    - EVP_MD_CTX_create
    - i_assert
    - EVP_DigestSignInit_ex
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_sign(struct dcrypt_private_key *key, const char
      *algorithm,\n\t\t    enum dcrypt_signature_format format,\n\t\t    const void
      *data, size_t data_len, buffer_t *signature_r,\n\t\t    enum dcrypt_padding
      padding, const char **error_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3732,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3740,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3741,1
    - Dst: dcrypt_x962_add_der
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3742,1
    - Dst: buffer_free_without_data
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3747,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3750,1
    - Dst: dcrypt_openssl_padding_mode
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3754,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3759,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3759,1
    - Dst: EVP_MD_CTX_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3762,1
    - Dst: IS_ED_CURVE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3766,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3766,1
    - Dst: EVP_DigestVerifyInit_ex
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3771,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3773,1
    - Dst: EVP_PKEY_CTX_set_rsa_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3774,1
    - Dst: EVP_DigestVerify
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3775,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3777,1
    - Dst: EVP_MD_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3784,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 10
    argNames:
    - key
    - algorithm
    - format
    - data
    - data_len
    - signature
    - signature_len
    - valid_r
    - padding
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char*
    - enum dcrypt_signature_format
    - void*
    - size_t
    - unsigned char*
    - size_t
    - bool*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3787
      start: 3720
    functionDepth: 6
    functionLinenumber: 3720
    functionLinenumberEnd: 3787
    functionName: dcrypt_openssl_verify
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_padding_mode
    - buffer_append
    - dcrypt_openssl_error
    - i_unreached
    - EVP_MD_CTX_create
    - EVP_PKEY_CTX_set_rsa_padding
    - t_buffer_create
    - IS_ED_CURVE
    - EVP_DigestVerifyInit_ex
    - EVP_DigestVerify
    - EVP_MD_CTX_free
    - buffer_free_without_data
    - EVP_PKEY_base_id
    - dcrypt_x962_add_der
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_verify(struct dcrypt_public_key *key, const char
      *algorithm,\n\t\t      enum dcrypt_signature_format format,\n\t\t      const
      void *data, size_t data_len,\n\t\t      const unsigned char *signature, size_t
      signature_len,\n\t\t      bool *valid_r, enum dcrypt_padding padding,\n\t\t
      \     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3796,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3797,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3797,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3799,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3800,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3802,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3805,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3812,1
    - Dst: dcrypt_EVP_PKEY_get_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3814,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3815,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3816,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3818,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3820,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3821,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3823,1
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3825,1
    - Dst: BN_num_bytes
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3829,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3831,1
    - Dst: BN_bn2lebinpad
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3832,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3833,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3835,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - key
    - pool
    - type_r
    - keys_r
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - pool_t
    - enum dcrypt_key_type*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3837
      start: 3789
    functionDepth: 7
    functionLinenumber: 3789
    functionLinenumberEnd: 3837
    functionName: dcrypt_openssl_key_store_private_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - OBJ_nid2obj
    - EVP_PKEY_get_bn_param
    - dcrypt_openssl_error
    - array_append_space
    - dcrypt_EVP_PKEY_get_nid
    - i2d_ASN1_OBJECT
    - p_malloc
    - BN_num_bytes
    - BN_free
    - t_array_init
    - ARRAY_TYPE
    - OPENSSL_free
    - BN_bn2lebinpad
    - array_is_created
    - i_assert
    - p_memdup
    - array_append_array
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_store_private_raw(struct dcrypt_private_key
      *key,\n\t\t\t\t     pool_t pool,\n\t\t\t\t     enum dcrypt_key_type *type_r,\n\t\t\t\t
      \    ARRAY_TYPE(dcrypt_raw_key) *keys_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3846,1
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3848,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3849,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3851,1
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3854,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3861,1
    - Dst: dcrypt_EVP_PKEY_get_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3863,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3864,1
    - Dst: i2d_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3865,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3867,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3869,1
    - Dst: OPENSSL_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3870,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3873,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3875,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3876,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3878,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3879,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3880,1
    - Dst: array_append_array
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3881,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 5
    argNames:
    - key
    - pool
    - type_r
    - keys_r
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - pool_t
    - enum dcrypt_key_type*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3884
      start: 3839
    functionDepth: 7
    functionLinenumber: 3839
    functionLinenumberEnd: 3884
    functionName: dcrypt_openssl_key_store_public_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - OBJ_nid2obj
    - dcrypt_openssl_error
    - array_append_space
    - dcrypt_EVP_PKEY_get_nid
    - i2d_ASN1_OBJECT
    - p_malloc
    - t_array_init
    - ARRAY_TYPE
    - OPENSSL_free
    - EVP_PKEY_get_octet_string_param
    - i_assert
    - p_memdup
    - array_append_array
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_store_public_raw(struct dcrypt_public_key
      *key,\n\t\t\t\t    pool_t pool,\n\t\t\t\t    enum dcrypt_key_type *type_r,\n\t\t\t\t
      \   ARRAY_TYPE(dcrypt_raw_key) *keys_r,\n\t\t\t\t    const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3892,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3892,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3892,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3897,1
    - Dst: d2i_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3901,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3902,1
    - Dst: OBJ_obj2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3903,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3904,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3906,1
    - Dst: BN_secure_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3907,1
    - Dst: BN_bin2bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3908,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3909,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3910,1
    - Dst: dcrypt_evp_pkey_from_bn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3914,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3915,1
    - Dst: BN_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3918,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3919,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3920,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - key_r
    - type
    - keys
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - enum dcrypt_key_type
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3929
      start: 3886
    functionDepth: 7
    functionLinenumber: 3886
    functionLinenumberEnd: 3929
    functionName: dcrypt_openssl_key_load_private_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - dcrypt_openssl_error
    - array_idx
    - BN_secure_new
    - OBJ_obj2nid
    - dcrypt_evp_pkey_from_bn
    - ASN1_OBJECT_free
    - d2i_ASN1_OBJECT
    - array_count
    - BN_free
    - i_new
    - array_front
    - BN_bin2bn
    - array_is_created
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_load_private_raw(struct dcrypt_private_key
      **key_r,\n\t\t\t\t    enum dcrypt_key_type type,\n\t\t\t\t    const ARRAY_TYPE(dcrypt_raw_key)
      *keys,\n\t\t\t\t    const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3937,1
    - Dst: array_is_created
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3937,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3937,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3942,1
    - Dst: d2i_ASN1_OBJECT
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3946,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3947,1
    - Dst: OBJ_obj2nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3948,1
    - Dst: OBJ_nid2sn
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3949,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3950,1
    - Dst: array_idx
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3952,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3956,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3957,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3958,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3959,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3960,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3963,1
    - Dst: EVP_PKEY_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3964,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3967,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3968,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3972,1
    - Dst: EVP_PKEY_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3975,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3976,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3979,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 4
    argNames:
    - key_r
    - type
    - keys
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - enum dcrypt_key_type
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3988
      start: 3931
    functionDepth: 1
    functionLinenumber: 3931
    functionLinenumberEnd: 3988
    functionName: dcrypt_openssl_key_load_public_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - array_idx
    - OSSL_PARAM_construct_utf8_string
    - array_count
    - OBJ_nid2sn
    - array_front
    - EVP_PKEY_fromdata_init
    - EVP_PKEY_CTX_new_from_name
    - dcrypt_openssl_error
    - OSSL_PARAM_construct_end
    - OBJ_obj2nid
    - EVP_PKEY_CTX_free
    - d2i_ASN1_OBJECT
    - EVP_PKEY_free
    - OSSL_PARAM_construct_octet_string
    - EVP_PKEY_fromdata
    - i_assert
    - ASN1_OBJECT_free
    - EVP_PKEY_new
    - i_new
    - array_is_created
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_load_public_raw(struct dcrypt_public_key **key_r,\n\t\t\t\t
      \  enum dcrypt_key_type type,\n\t\t\t\t   const ARRAY_TYPE(dcrypt_raw_key) *keys,\n\t\t\t\t
      \  const char **error_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_base_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:3997,1
    - Dst: OBJ_nid2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4002,1
    - Dst: dcrypt_EVP_PKEY_get_nid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4002,1
    - Dst: OBJ_obj2txt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4004,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4005,1
    - Dst: dcrypt_openssl_error
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4008,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4014,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - key
    - curve_r
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4016
      start: 3990
    functionDepth: 7
    functionLinenumber: 3990
    functionLinenumberEnd: 4016
    functionName: dcrypt_openssl_key_get_curve_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - OBJ_nid2obj
    - dcrypt_openssl_error
    - dcrypt_EVP_PKEY_get_nid
    - t_strndup
    - ASN1_OBJECT_free
    - OBJ_obj2txt
    - EVP_PKEY_base_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_openssl_key_get_curve_public(struct dcrypt_public_key
      *key,\n\t\t\t\t    const char **curve_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4023
      start: 4018
    functionDepth: 1
    functionLinenumber: 4018
    functionLinenumberEnd: 4023
    functionName: dcrypt_openssl_key_get_id_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      dcrypt_openssl_key_get_id_public(struct dcrypt_public_key *key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4030
      start: 4025
    functionDepth: 1
    functionLinenumber: 4025
    functionLinenumberEnd: 4030
    functionName: dcrypt_openssl_key_get_id_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: char
    signature: 'char *

      dcrypt_openssl_key_get_id_private(struct dcrypt_private_key *key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4035,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4036,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - id
    argTypes:
    - struct dcrypt_public_key*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4038
      start: 4032
    functionDepth: 2
    functionLinenumber: 4032
    functionLinenumberEnd: 4038
    functionName: dcrypt_openssl_key_set_id_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - i_strdup_empty
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_key_set_id_public(struct dcrypt_public_key *key,
      const char *id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4043,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4044,1
    - Dst: i_strdup_empty
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - id
    argTypes:
    - struct dcrypt_private_key*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4046
      start: 4040
    functionDepth: 2
    functionLinenumber: 4040
    functionLinenumberEnd: 4046
    functionName: dcrypt_openssl_key_set_id_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    - i_free
    - i_strdup_empty
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_key_set_id_private(struct dcrypt_private_key *key,
      const char *id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4053
      start: 4048
    functionDepth: 1
    functionLinenumber: 4048
    functionLinenumberEnd: 4053
    functionName: dcrypt_openssl_key_get_usage_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: enum dcrypt_key_usage
    signature: enum dcrypt_key_usage dcrypt_openssl_key_get_usage_public(struct dcrypt_public_key
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4060
      start: 4055
    functionDepth: 1
    functionLinenumber: 4055
    functionLinenumberEnd: 4060
    functionName: dcrypt_openssl_key_get_usage_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: enum dcrypt_key_usage
    signature: enum dcrypt_key_usage dcrypt_openssl_key_get_usage_private(struct dcrypt_private_key
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - usage
    argTypes:
    - struct dcrypt_public_key*
    - enum dcrypt_key_usage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4068
      start: 4062
    functionDepth: 1
    functionLinenumber: 4062
    functionLinenumberEnd: 4068
    functionName: dcrypt_openssl_key_set_usage_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_key_set_usage_public(struct dcrypt_public_key
      *key,\n\t\t\t\t    enum dcrypt_key_usage usage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4074,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - usage
    argTypes:
    - struct dcrypt_private_key*
    - enum dcrypt_key_usage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4076
      start: 4070
    functionDepth: 1
    functionLinenumber: 4070
    functionLinenumberEnd: 4076
    functionName: dcrypt_openssl_key_set_usage_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 0
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dcrypt_openssl_key_set_usage_private(struct dcrypt_private_key
      *key,\n\t\t\t\t     enum dcrypt_key_usage usage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dovecot_openssl_common_global_ref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4153,1
    - Dst: dcrypt_set_vfs
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4154,1
    - Dst: OBJ_txt2obj
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4158
      start: 4151
    functionDepth: 1
    functionLinenumber: 4151
    functionLinenumberEnd: 4158
    functionName: dcrypt_openssl_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - dcrypt_set_vfs
    - OBJ_txt2obj
    - dovecot_openssl_common_global_ref
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dovecot_openssl_common_global_unref
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4162,1
    - Dst: ASN1_OBJECT_free
      Src: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c:4164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4166
      start: 4160
    functionDepth: 2
    functionLinenumber: 4160
    functionLinenumberEnd: 4166
    functionName: dcrypt_openssl_deinit
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt-openssl3.c
    functionUses: 1
    functionsReached:
    - dovecot_openssl_common_global_unref
    - ASN1_OBJECT_free
    linkageType: ''
    returnType: void
    signature: void dcrypt_openssl_deinit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:64,1
    - Dst: dcrypt_ctx_hmac_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:66,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:68,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - dstream
    argTypes:
    - struct decrypt_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 70
    functionName: i_stream_decrypt_reset
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ctx_hmac_destroy
    - i_free
    - dcrypt_ctx_sym_destroy
    linkageType: ''
    returnType: void
    signature: void i_stream_decrypt_reset(struct decrypt_istream *dstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: i_stream_encrypt_get_format
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum decrypt_istream_format
    signature: enum decrypt_istream_format i_stream_encrypt_get_format(const struct
      istream *input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: i_stream_encrypt_get_flags
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum io_stream_encrypt_flags
    signature: enum io_stream_encrypt_flags i_stream_encrypt_get_flags(const struct
      istream *input)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:98,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:99,1
    - Dst: be16_to_cpu_unaligned
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:103,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:113,1
    - Dst: ntohs
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:114,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:122,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:146,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:159,1
    - Dst: struct decrypt_istream*::key_callback
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:160,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:163,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:169,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:174,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:180,1
    - Dst: dcrypt_key_id_private_old
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:182,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:183,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:187,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:188,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:189,1
    - Dst: dcrypt_ecdh_derive_secret_local
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:196,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:198,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:207,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:208,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:209,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:210,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:217,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:219,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:225,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:227,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:228,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:229,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:230,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:231,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:235,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:238,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:244,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:245,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:246,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:249,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:254,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:255,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:262,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:264,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:271,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:273,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:275,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:277,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:278,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 114
    argCount: 3
    argNames:
    - stream
    - data
    - mlen
    argTypes:
    - struct decrypt_istream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 84
    functionDepth: 6
    functionLinenumber: 84
    functionLinenumberEnd: 288
    functionName: i_stream_decrypt_read_header_v1
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ctx_sym_set_iv
    - ntohs
    - dcrypt_ecdh_derive_secret_local
    - dcrypt_key_id_private_old
    - dcrypt_ctx_sym_init
    - memcpy
    - io_stream_set_error
    - I_MIN
    - dcrypt_ctx_sym_update
    - dcrypt_ctx_sym_final
    - dcrypt_ctx_sym_set_key
    - be16_to_cpu_unaligned
    - binary_to_hex
    - dcrypt_ctx_sym_destroy
    - struct hash_method*::loop
    - struct hash_method*::result
    - struct hash_method*::init
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_ctx_sym_create
    - struct decrypt_istream*::key_callback
    - buffer_create_from_const_data
    - memcmp
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t i_stream_decrypt_read_header_v1(struct decrypt_istream *stream,\n\t\t\t\tconst
      unsigned char *data, size_t mlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: be32_to_cpu_unaligned
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _data
    - end
    - num_r
    argTypes:
    - unsigned char**
    - unsigned char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 300
    functionName: get_msb32
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - be32_to_cpu_unaligned
    linkageType: ''
    returnType: bool
    signature: "bool get_msb32(const unsigned char **_data, const unsigned char *end,\n\t
      \ uint32_t *num_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_oid2name
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:322,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - _data
    - end
    - str_r
    - error_r
    argTypes:
    - unsigned char**
    - unsigned char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 327
    functionName: i_stream_decrypt_der
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_oid2name
    linkageType: ''
    returnType: int
    signature: "int i_stream_decrypt_der(const unsigned char **_data, const unsigned
      char *end,\n\t\t     const char **str_r, const char **error_r)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:349,1
    - Dst: dcrypt_key_id_private
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:350,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:352,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:359,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:373,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:379,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:381,1
    - Dst: struct decrypt_istream*::key_callback
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:383,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:386,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:399,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:400,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:406,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:422,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:429,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:435,1
    - Dst: dcrypt_rsa_decrypt
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:443,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:446,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:452,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:453,1
    - Dst: buffer_create_from_const_data
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:455,1
    - Dst: dcrypt_ecdh_derive_secret_local
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:457,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:459,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:464,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:466,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:467,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:471,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:472,1
    - Dst: dcrypt_pbkdf2
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:478,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:483,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:484,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:486,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:490,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:492,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:493,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:496,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:502,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:503,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:506,1
    - Dst: CONST_PTR_OFFSET
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:511,1
    - Dst: dcrypt_ctx_sym_set_tag
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:512,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:516,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:517,1
    - Dst: dcrypt_ctx_sym_set_aad
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:519,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:520,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:523,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:524,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:526,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:527,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:534,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:540,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:543,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:550,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:550,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:552,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:553,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:560,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:561,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:562,1
    - Dst: cpu32_to_be
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:565,1
    - Dst: struct hash_method*::init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:567,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:568,1
    - Dst: struct hash_method*::loop
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:569,1
    - Dst: struct hash_method*::result
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:570,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:574,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:574,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:575,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:576,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 140
    argCount: 8
    argNames:
    - stream
    - malg
    - calg
    - rounds
    - data
    - end
    - key
    - key_len
    argTypes:
    - struct decrypt_istream*
    - char*
    - char*
    - unsigned int
    - unsigned char*
    - unsigned char*
    - buffer_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 329
    functionDepth: 8
    functionLinenumber: 329
    functionLinenumberEnd: 582
    functionName: i_stream_decrypt_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ctx_sym_set_iv
    - buffer_create_from_data
    - dcrypt_pbkdf2
    - CONST_PTR_OFFSET
    - dcrypt_ecdh_derive_secret_local
    - dcrypt_ctx_sym_init
    - io_stream_set_error
    - dcrypt_rsa_decrypt
    - dcrypt_ctx_sym_set_aad
    - dcrypt_ctx_sym_update
    - I_MIN
    - dcrypt_ctx_sym_final
    - dcrypt_ctx_sym_set_key
    - binary_to_hex
    - hash_method_lookup
    - cpu32_to_be
    - dcrypt_ctx_sym_destroy
    - struct hash_method*::loop
    - struct hash_method*::result
    - dcrypt_ctx_sym_get_iv_length
    - struct hash_method*::init
    - dcrypt_ctx_sym_set_tag
    - dcrypt_key_id_private
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_key_unref_private
    - dcrypt_ctx_sym_create
    - struct decrypt_istream*::key_callback
    - memcmp
    - buffer_create_from_const_data
    - t_str_lcase
    - get_msb32
    - dcrypt_ctx_sym_get_key_length
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t i_stream_decrypt_key(struct decrypt_istream *stream, const
      char *malg,\n\t\t     const char *calg, unsigned int rounds, const unsigned
      char *data,\n\t\t     const unsigned char *end, buffer_t *key, size_t key_len)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_decrypt_der
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:596,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:599,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:601,1
    - Dst: i_stream_decrypt_der
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:609,1
    - Dst: dcrypt_ctx_hmac_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:612,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:613,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:622,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:626,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:642,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:643,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:644,1
    - Dst: i_stream_decrypt_key
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:651,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:659,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:666,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:667,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:668,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:669,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:670,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:671,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:671,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:672,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:672,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:673,1
    - Dst: dcrypt_ctx_hmac_set_key
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:679,1
    - Dst: dcrypt_ctx_hmac_init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:680,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:681,1
    - Dst: dcrypt_ctx_hmac_get_digest_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:686,1
    - Dst: dcrypt_ctx_sym_set_aad
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:690,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:697,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 3
    argNames:
    - stream
    - data
    - size
    argTypes:
    - struct decrypt_istream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 584
    functionDepth: 9
    functionLinenumber: 584
    functionLinenumberEnd: 699
    functionName: i_stream_decrypt_header_contents
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - memcpy
    - dcrypt_ctx_sym_set_iv
    - i_malloc
    - io_stream_set_error
    - dcrypt_ctx_hmac_init
    - dcrypt_ctx_sym_set_aad
    - dcrypt_ctx_hmac_create
    - t_buffer_create
    - buffer_clear_safe
    - dcrypt_ctx_sym_create
    - i_stream_decrypt_key
    - dcrypt_ctx_sym_set_key
    - dcrypt_ctx_hmac_set_key
    - dcrypt_ctx_sym_get_iv_length
    - i_stream_decrypt_der
    - dcrypt_ctx_hmac_get_digest_length
    - get_msb32
    - dcrypt_ctx_sym_get_key_length
    linkageType: ''
    returnType: int
    signature: "int i_stream_decrypt_header_contents(struct decrypt_istream *stream,\n\t\t\t\t
      const unsigned char *data, size_t size)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:711,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:712,1
    - Dst: i_stream_decrypt_read_header_v1
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:725,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:728,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:739,1
    - Dst: get_msb32
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:745,1
    - Dst: i_stream_decrypt_header_contents
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:752,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:755,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:763,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:764,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 3
    argNames:
    - stream
    - data
    - mlen
    argTypes:
    - struct decrypt_istream*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 701
    functionDepth: 10
    functionLinenumber: 701
    functionLinenumberEnd: 769
    functionName: i_stream_decrypt_read_header
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - i_stream_decrypt_read_header_v1
    - memcmp
    - i_stream_decrypt_header_contents
    - get_msb32
    - dcrypt_ctx_sym_init
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t i_stream_decrypt_read_header(struct decrypt_istream *stream,\n\t\t\t
      \    const unsigned char *data, size_t mlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:780,1
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:781,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - dstream
    argTypes:
    - struct decrypt_istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 771
    functionDepth: 5
    functionLinenumber: 771
    functionLinenumberEnd: 786
    functionName: i_stream_decrypt_realloc_buf_if_needed
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - buffer_create_dynamic
    - I_MAX
    linkageType: ''
    returnType: void
    signature: void i_stream_decrypt_realloc_buf_if_needed(struct decrypt_istream
      *dstream)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_decrypt_realloc_buf_if_needed
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:803,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:807,1
    - Dst: buffer_delete
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:808,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:815,1
    - Dst: i_stream_read_memarea
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:850,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:854,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:872,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:880,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:885,1
    - Dst: i_stream_decrypt_read_header
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:894,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:906,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:916,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:925,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:926,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:929,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:936,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:950,1
    - Dst: dcrypt_ctx_hmac_update
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:954,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:956,1
    - Dst: dcrypt_ctx_hmac_get_digest_length
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:967,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:970,1
    - Dst: dcrypt_ctx_hmac_final
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:971,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:972,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:977,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:978,1
    - Dst: dcrypt_ctx_sym_set_tag
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:985,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:991,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:993,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:998,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 134
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct istream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 788
    functionDepth: 11
    functionLinenumber: 788
    functionLinenumberEnd: 1000
    functionName: i_stream_decrypt_read
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - i_stream_decrypt_realloc_buf_if_needed
    - dcrypt_ctx_sym_set_tag
    - io_stream_set_error
    - i_stream_get_data
    - dcrypt_ctx_sym_update
    - buffer_clear_safe
    - i_stream_decrypt_read_header
    - dcrypt_ctx_sym_final
    - i_stream_skip
    - dcrypt_ctx_hmac_final
    - buffer_delete
    - memcmp
    - buffer_create_from_data
    - dcrypt_ctx_hmac_get_digest_length
    - dcrypt_ctx_hmac_update
    - i_assert
    - i_stream_read_memarea
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t i_stream_decrypt_read(struct istream_private *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_decrypt_realloc_buf_if_needed
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1009,1
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1011,1
    - Dst: i_stream_decrypt_reset
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1015,1
    - Dst: i_stream_nonseekable_try_seek
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1016,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1017,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - v_offset
    - ATTR_UNUSED
    argTypes:
    - struct istream_private*
    - uoff_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1002
    functionDepth: 6
    functionLinenumber: 1002
    functionLinenumberEnd: 1018
    functionName: i_stream_decrypt_seek
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - i_stream_decrypt_realloc_buf_if_needed
    - i_stream_nonseekable_try_seek
    - i_stream_decrypt_reset
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void i_stream_decrypt_seek(struct istream_private *stream, uoff_t
      v_offset,\n\t\t      bool mark ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_close
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1027,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - stream
    - close_parent
    argTypes:
    - struct iostream_private*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1020
    functionDepth: 3
    functionLinenumber: 1020
    functionLinenumberEnd: 1028
    functionName: i_stream_decrypt_close
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - i_stream_close
    linkageType: ''
    returnType: void
    signature: "void i_stream_decrypt_close(struct iostream_private *stream,\n\t\t\t\t
      \  bool close_parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1034,1
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1038,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1040,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1043,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _snapshot
    argTypes:
    - struct istream_snapshot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1030
    functionDepth: 2
    functionLinenumber: 1030
    functionLinenumberEnd: 1044
    functionName: i_stream_decrypt_snapshot_free
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - buffer_free
    - container_of
    - i_free
    linkageType: ''
    returnType: void
    signature: void i_stream_decrypt_snapshot_free(struct istream_snapshot *_snapshot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_default_snapshot
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1056,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1060,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - stream
    - prev_snapshot
    argTypes:
    - struct istream_private*
    - struct istream_snapshot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1046
    functionDepth: 3
    functionLinenumber: 1046
    functionLinenumberEnd: 1067
    functionName: i_stream_decrypt_snapshot
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - i_stream_default_snapshot
    - i_new
    linkageType: ''
    returnType: struct istream_snapshot
    signature: "struct istream_snapshot *\ni_stream_decrypt_snapshot(struct istream_private
      *stream,\n\t\t\t  struct istream_snapshot *prev_snapshot)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: buffer_free
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1075,1
    - Dst: i_free_and_null
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1083,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1085,1
    - Dst: dcrypt_ctx_hmac_destroy
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1087,1
    - Dst: dcrypt_key_unref_private
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1089,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1091,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct iostream_private*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1069
    functionDepth: 2
    functionLinenumber: 1069
    functionLinenumberEnd: 1092
    functionName: i_stream_decrypt_destroy
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ctx_hmac_destroy
    - dcrypt_ctx_sym_destroy
    - i_free_and_null
    - dcrypt_key_unref_private
    - i_stream_unref
    - buffer_free
    linkageType: ''
    returnType: void
    signature: void i_stream_decrypt_destroy(struct iostream_private *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1099,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1101,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1114,1
    - Dst: i_stream_create
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1116,1
    - Dst: i_stream_get_fd
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct istream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1094
    functionDepth: 4
    functionLinenumber: 1094
    functionLinenumberEnd: 1119
    functionName: i_stream_create_decrypt_common
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - i_stream_get_fd
    - buffer_create_dynamic
    - i_new
    - i_stream_create
    - i_assert
    linkageType: ''
    returnType: struct decrypt_istream
    signature: 'struct decrypt_istream *

      i_stream_create_decrypt_common(struct istream *input)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_decrypt_common
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1127,1
    - Dst: dcrypt_key_ref_private
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - input
    - priv_key
    argTypes:
    - struct istream*
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1121
    functionDepth: 5
    functionLinenumber: 1121
    functionLinenumberEnd: 1131
    functionName: i_stream_create_decrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 10
    functionsReached:
    - dcrypt_key_ref_private
    - i_stream_create_decrypt_common
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_decrypt(struct istream *input,\n\t\t\tstruct
      dcrypt_private_key *priv_key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_decrypt_common
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1140,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1145,1
    - Dst: io_stream_set_error
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - input
    - ctx
    argTypes:
    - struct istream*
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1133
    functionDepth: 5
    functionLinenumber: 1133
    functionLinenumberEnd: 1157
    functionName: i_stream_create_sym_decrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 0
    functionsReached:
    - io_stream_set_error
    - i_stream_create_decrypt_common
    - dcrypt_ctx_sym_init
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_sym_decrypt(struct istream *input,\n\t\t\t
      \   struct dcrypt_context_symmetric *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1166,1
    - Dst: i_stream_create_decrypt_common
      Src: /src/dovecot/src/lib-dcrypt/istream-decrypt.c:1168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - input
    - callback
    - context
    argTypes:
    - struct istream*
    - i_stream_decrypt_get_key_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1159
    functionDepth: 5
    functionLinenumber: 1159
    functionLinenumberEnd: 1172
    functionName: i_stream_create_decrypt_callback
    functionSourceFile: /src/dovecot/src/lib-dcrypt/istream-decrypt.c
    functionUses: 6
    functionsReached:
    - i_assert
    - i_stream_create_decrypt_common
    linkageType: ''
    returnType: struct istream
    signature: "struct istream *\ni_stream_create_decrypt_callback(struct istream
      *input,\n\t\t\t\t i_stream_decrypt_get_key_callback_t *callback,\n\t\t\t\t void
      *context)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:30,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:34,1
    - Dst: module_dir_try_load_missing
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:37,1
    - Dst: module_dir_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:43,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:44,1
    - Dst: initialize
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:46,1
    - Dst: dcrypt_deinitialize
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:47,1
    - Dst: lib_atexit_priority
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:54,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 3
    argNames:
    - backend
    - set
    - error_r
    argTypes:
    - char*
    - struct dcrypt_settings*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 16
    functionDepth: 8
    functionLinenumber: 16
    functionLinenumberEnd: 56
    functionName: dcrypt_initialize
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 13
    functionsReached:
    - i_zero
    - t_strconcat
    - lib_atexit_priority
    - module_dir_try_load_missing
    - initialize
    - dcrypt_deinitialize
    - i_assert
    - module_dir_init
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_initialize(const char *backend, const struct dcrypt_settings
      *set,\n\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: module_dir_unload
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: dcrypt_deinitialize
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 6
    functionsReached:
    - module_dir_unload
    linkageType: ''
    returnType: void
    signature: void dcrypt_deinitialize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vfs
    argTypes:
    - struct dcrypt_vfs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: dcrypt_set_vfs
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dcrypt_set_vfs(struct dcrypt_vfs *vfs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: dcrypt_is_initialized
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_is_initialized(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:78,1
    - Dst: ctx_sym_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - algorithm
    - mode
    - ctx_r
    - error_r
    argTypes:
    - char*
    - enum dcrypt_sym_mode
    - struct dcrypt_context_symmetric**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 80
    functionName: dcrypt_ctx_sym_create
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 8
    functionsReached:
    - i_assert
    - ctx_sym_create
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ctx_sym_create(const char *algorithm, enum dcrypt_sym_mode
      mode,\n\t\t\t   struct dcrypt_context_symmetric **ctx_r,\n\t\t\t   const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:84,1
    - Dst: ctx_sym_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: dcrypt_ctx_sym_destroy
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 9
    functionsReached:
    - i_assert
    - ctx_sym_destroy
    linkageType: ''
    returnType: void
    signature: void dcrypt_ctx_sym_destroy(struct dcrypt_context_symmetric **ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:91,1
    - Dst: ctx_sym_set_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - key
    - key_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: dcrypt_ctx_sym_set_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 8
    functionsReached:
    - ctx_sym_set_key
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dcrypt_ctx_sym_set_key(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      \   const unsigned char *key, size_t key_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:98,1
    - Dst: ctx_sym_set_iv
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - iv
    - iv_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: dcrypt_ctx_sym_set_iv
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 8
    functionsReached:
    - i_assert
    - ctx_sym_set_iv
    linkageType: ''
    returnType: void
    signature: "void dcrypt_ctx_sym_set_iv(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      \  const unsigned char *iv, size_t iv_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:104,1
    - Dst: ctx_sym_set_key_iv_random
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: dcrypt_ctx_sym_set_key_iv_random
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - ctx_sym_set_key_iv_random
    linkageType: ''
    returnType: void
    signature: void dcrypt_ctx_sym_set_key_iv_random(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:110,1
    - Dst: ctx_sym_get_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: dcrypt_ctx_sym_get_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - ctx_sym_get_key
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_ctx_sym_get_key(struct dcrypt_context_symmetric *ctx, buffer_t
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:115,1
    - Dst: ctx_sym_get_iv
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - iv
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: dcrypt_ctx_sym_get_iv
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - ctx_sym_get_iv
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_ctx_sym_get_iv(struct dcrypt_context_symmetric *ctx, buffer_t
      *iv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:121,1
    - Dst: ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 123
    functionName: dcrypt_ctx_sym_get_key_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 4
    functionsReached:
    - i_assert
    - ctx_sym_get_key_length
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_ctx_sym_get_key_length(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:127,1
    - Dst: ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: dcrypt_ctx_sym_get_iv_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 4
    functionsReached:
    - ctx_sym_get_iv_length
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_ctx_sym_get_iv_length(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:134,1
    - Dst: ctx_sym_set_aad
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - aad
    - aad_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 136
    functionName: dcrypt_ctx_sym_set_aad
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 5
    functionsReached:
    - ctx_sym_set_aad
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dcrypt_ctx_sym_set_aad(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      \   const unsigned char *aad, size_t aad_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:140,1
    - Dst: ctx_sym_get_aad
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - aad
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: dcrypt_ctx_sym_get_aad
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - ctx_sym_get_aad
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_ctx_sym_get_aad(struct dcrypt_context_symmetric *ctx, buffer_t
      *aad)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:147,1
    - Dst: ctx_sym_set_tag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - tag
    - tag_len
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 149
    functionName: dcrypt_ctx_sym_set_tag
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - i_assert
    - ctx_sym_set_tag
    linkageType: ''
    returnType: void
    signature: "void dcrypt_ctx_sym_set_tag(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      \   const unsigned char *tag, size_t tag_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:153,1
    - Dst: ctx_sym_get_tag
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - tag
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: dcrypt_ctx_sym_get_tag
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - i_assert
    - ctx_sym_get_tag
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_ctx_sym_get_tag(struct dcrypt_context_symmetric *ctx, buffer_t
      *tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:159,1
    - Dst: ctx_sym_get_block_size
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_symmetric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: dcrypt_ctx_sym_get_block_size
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 2
    functionsReached:
    - ctx_sym_get_block_size
    - i_assert
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_ctx_sym_get_block_size(struct dcrypt_context_symmetric
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:166,1
    - Dst: ctx_sym_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 168
    functionName: dcrypt_ctx_sym_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 10
    functionsReached:
    - ctx_sym_init
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ctx_sym_init(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:175,1
    - Dst: ctx_sym_update
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - data
    - data_len
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - unsigned char*
    - size_t
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 177
    functionName: dcrypt_ctx_sym_update
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 7
    functionsReached:
    - i_assert
    - ctx_sym_update
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ctx_sym_update(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      \  const unsigned char *data,\n\t\t\t   size_t data_len, buffer_t *result,\n\t\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:182,1
    - Dst: ctx_sym_final
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 184
    functionName: dcrypt_ctx_sym_final
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 8
    functionsReached:
    - i_assert
    - ctx_sym_final
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ctx_sym_final(struct dcrypt_context_symmetric *ctx,\n\t\t\t
      \ buffer_t *result, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:189,1
    - Dst: ctx_sym_set_padding
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - padding
    argTypes:
    - struct dcrypt_context_symmetric*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 191
    functionName: dcrypt_ctx_sym_set_padding
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - i_assert
    - ctx_sym_set_padding
    linkageType: ''
    returnType: void
    signature: "void dcrypt_ctx_sym_set_padding(struct dcrypt_context_symmetric *ctx,\n\t\t\t\tbool
      padding)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:197,1
    - Dst: ctx_hmac_create
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - algorithm
    - ctx_r
    - error_r
    argTypes:
    - char*
    - struct dcrypt_context_hmac**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 199
    functionName: dcrypt_ctx_hmac_create
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - i_assert
    - ctx_hmac_create
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ctx_hmac_create(const char *algorithm,\n\t\t\t    struct
      dcrypt_context_hmac **ctx_r,\n\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:203,1
    - Dst: ctx_hmac_destroy
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 205
    functionName: dcrypt_ctx_hmac_destroy
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 4
    functionsReached:
    - i_assert
    - ctx_hmac_destroy
    linkageType: ''
    returnType: void
    signature: void dcrypt_ctx_hmac_destroy(struct dcrypt_context_hmac **ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:210,1
    - Dst: ctx_hmac_set_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - key
    - key_len
    argTypes:
    - struct dcrypt_context_hmac*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: dcrypt_ctx_hmac_set_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - ctx_hmac_set_key
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dcrypt_ctx_hmac_set_key(struct dcrypt_context_hmac *ctx,\n\t\t\t
      \    const unsigned char *key, size_t key_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:216,1
    - Dst: ctx_hmac_get_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - key
    argTypes:
    - struct dcrypt_context_hmac*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: dcrypt_ctx_hmac_get_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - ctx_hmac_get_key
    - i_assert
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_ctx_hmac_get_key(struct dcrypt_context_hmac *ctx, buffer_t
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:222,1
    - Dst: ctx_hmac_set_key_random
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 224
    functionName: dcrypt_ctx_hmac_set_key_random
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - ctx_hmac_set_key_random
    linkageType: ''
    returnType: void
    signature: void dcrypt_ctx_hmac_set_key_random(struct dcrypt_context_hmac *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:228,1
    - Dst: ctx_hmac_get_digest_length
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dcrypt_context_hmac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 230
    functionName: dcrypt_ctx_hmac_get_digest_length
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 2
    functionsReached:
    - i_assert
    - ctx_hmac_get_digest_length
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dcrypt_ctx_hmac_get_digest_length(struct dcrypt_context_hmac
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:234,1
    - Dst: ctx_hmac_init
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: dcrypt_ctx_hmac_init
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - i_assert
    - ctx_hmac_init
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_ctx_hmac_init(struct dcrypt_context_hmac *ctx, const char
      **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:242,1
    - Dst: ctx_hmac_update
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctx
    - data
    - data_len
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 244
    functionName: dcrypt_ctx_hmac_update
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - i_assert
    - ctx_hmac_update
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ctx_hmac_update(struct dcrypt_context_hmac *ctx,\n\t\t\t
      \   const unsigned char *data, size_t data_len,\n\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:249,1
    - Dst: ctx_hmac_final
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - result
    - error_r
    argTypes:
    - struct dcrypt_context_hmac*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 251
    functionName: dcrypt_ctx_hmac_final
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - i_assert
    - ctx_hmac_final
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ctx_hmac_final(struct dcrypt_context_hmac *ctx, buffer_t
      *result,\n\t\t\t   const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:258,1
    - Dst: ecdh_derive_secret
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - local_key
    - pub_key
    - shared_secret
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 265
    functionName: dcrypt_ecdh_derive_secret
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - ecdh_derive_secret
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ecdh_derive_secret(struct dcrypt_private_key *local_key,\n\t\t\t
      \      struct dcrypt_public_key *pub_key,\n\t\t\t       buffer_t *shared_secret,\n\t\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:271,1
    - Dst: ecdh_derive_secret_local
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - local_key
    - R
    - S
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - buffer_t*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 273
    functionName: dcrypt_ecdh_derive_secret_local
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - ecdh_derive_secret_local
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ecdh_derive_secret_local(struct dcrypt_private_key *local_key,\n\t\t\t\t
      \    buffer_t *R, buffer_t *S,\n\t\t\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:278,1
    - Dst: ecdh_derive_secret_peer
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - peer_key
    - R
    - S
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - buffer_t*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 280
    functionName: dcrypt_ecdh_derive_secret_peer
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - ecdh_derive_secret_peer
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_ecdh_derive_secret_peer(struct dcrypt_public_key *peer_key,\n\t\t\t\t
      \   buffer_t *R, buffer_t *S,\n\t\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:287,1
    - Dst: pbkdf2
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 9
    argNames:
    - password
    - password_len
    - salt
    - salt_len
    - hash
    - rounds
    - result
    - result_len
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - char*
    - unsigned int
    - buffer_t*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 290
    functionName: dcrypt_pbkdf2
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 2
    functionsReached:
    - i_assert
    - pbkdf2
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_pbkdf2(const unsigned char *password, size_t password_len,\n\t\t
      \  const unsigned char *salt, size_t salt_len,\n\t\t   const char *hash, unsigned
      int rounds, buffer_t *result,\n\t\t   unsigned int result_len, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:296,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:297,1
    - Dst: generate_keypair
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - pair_r
    - kind
    - bits
    - curve
    - error_r
    argTypes:
    - struct dcrypt_keypair*
    - enum dcrypt_key_type
    - unsigned int
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 299
    functionName: dcrypt_keypair_generate
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 13
    functionsReached:
    - i_zero
    - i_assert
    - generate_keypair
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_keypair_generate(struct dcrypt_keypair *pair_r,\n\t\t\t
      \    enum dcrypt_key_type kind, unsigned int bits,\n\t\t\t     const char *curve,
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:306,1
    - Dst: load_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - key_r
    - data
    - password
    - dec_key
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - char*
    - char*
    - struct dcrypt_private_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 309
    functionName: dcrypt_key_load_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 20
    functionsReached:
    - load_private_key
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_load_private(struct dcrypt_private_key **key_r,\n\t\t\t
      \    const char *data, const char *password,\n\t\t\t     struct dcrypt_private_key
      *dec_key,\n\t\t\t     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:314,1
    - Dst: load_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - key_r
    - data
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 316
    functionName: dcrypt_key_load_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 16
    functionsReached:
    - load_public_key
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_load_public(struct dcrypt_public_key **key_r,\n\t\t\t
      \   const char *data, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:325,1
    - Dst: store_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 7
    argNames:
    - key
    - format
    - cipher
    - destination
    - password
    - enc_key
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - enum dcrypt_key_format
    - char*
    - buffer_t*
    - char*
    - struct dcrypt_public_key*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 329
    functionName: dcrypt_key_store_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 13
    functionsReached:
    - store_private_key
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_store_private(struct dcrypt_private_key *key,\n\t\t\t
      \     enum dcrypt_key_format format,\n\t\t\t      const char *cipher, buffer_t
      *destination,\n\t\t\t      const char *password,\n\t\t\t      struct dcrypt_public_key
      *enc_key,\n\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:334,1
    - Dst: store_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - key
    - format
    - destination
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - enum dcrypt_key_format
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 336
    functionName: dcrypt_key_store_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 9
    functionsReached:
    - i_assert
    - store_public_key
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_store_public(struct dcrypt_public_key *key,\n\t\t\t
      \    enum dcrypt_key_format format,\n\t\t\t     buffer_t *destination, const
      char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:341,1
    - Dst: private_to_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - priv_key
    - pub_key_r
    argTypes:
    - struct dcrypt_private_key*
    - struct dcrypt_public_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 343
    functionName: dcrypt_key_convert_private_to_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 8
    functionsReached:
    - i_assert
    - private_to_public_key
    linkageType: ''
    returnType: void
    signature: "void dcrypt_key_convert_private_to_public(struct dcrypt_private_key
      *priv_key,\n\t\t\t\t\t  struct dcrypt_public_key **pub_key_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:353,1
    - Dst: key_string_get_info
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 8
    argNames:
    - key_data
    - format_r
    - version_r
    - kind_r
    - encryption_type_r
    - encryption_key_hash_r
    - key_hash_r
    - error_r
    argTypes:
    - char*
    - enum dcrypt_key_format*
    - enum dcrypt_key_version*
    - enum dcrypt_key_kind*
    - enum dcrypt_key_encryption_type*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 358
    functionName: dcrypt_key_string_get_info
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 15
    functionsReached:
    - i_assert
    - key_string_get_info
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_string_get_info(const char *key_data,\n\t\t\t\tenum
      dcrypt_key_format *format_r,\n\t\t\t\tenum dcrypt_key_version *version_r,\n\t\t\t\tenum
      dcrypt_key_kind *kind_r,\n\t\t\t\tenum dcrypt_key_encryption_type *encryption_type_r,\n\t\t\t\tconst
      char **encryption_key_hash_r,\n\t\t\t\tconst char **key_hash_r, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:362,1
    - Dst: private_key_type
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: dcrypt_key_type_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 2
    functionsReached:
    - private_key_type
    - i_assert
    linkageType: ''
    returnType: enum dcrypt_key_type
    signature: enum dcrypt_key_type dcrypt_key_type_private(struct dcrypt_private_key
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:368,1
    - Dst: public_key_type
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 370
    functionName: dcrypt_key_type_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - public_key_type
    - i_assert
    linkageType: ''
    returnType: enum dcrypt_key_type
    signature: enum dcrypt_key_type dcrypt_key_type_public(struct dcrypt_public_key
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:375,1
    - Dst: public_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - key
    - algorithm
    - result
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: dcrypt_key_id_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 8
    functionsReached:
    - i_assert
    - public_key_id
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_id_public(struct dcrypt_public_key *key, const char
      *algorithm,\n\t\t\t  buffer_t *result, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:382,1
    - Dst: public_key_id_old
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - key
    - result
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 384
    functionName: dcrypt_key_id_public_old
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 4
    functionsReached:
    - i_assert
    - public_key_id_old
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_id_public_old(struct dcrypt_public_key *key, buffer_t
      *result,\n\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:390,1
    - Dst: private_key_id
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - key
    - algorithm
    - result
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 392
    functionName: dcrypt_key_id_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 8
    functionsReached:
    - private_key_id
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_id_private(struct dcrypt_private_key *key,\n\t\t\t
      \  const char *algorithm, buffer_t *result,\n\t\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:397,1
    - Dst: private_key_id_old
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - key
    - result
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 399
    functionName: dcrypt_key_id_private_old
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 5
    functionsReached:
    - i_assert
    - private_key_id_old
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_id_private_old(struct dcrypt_private_key *key, buffer_t
      *result,\n\t\t\t       const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:403,1
    - Dst: unref_keypair
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - keypair
    argTypes:
    - struct dcrypt_keypair*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 405
    functionName: dcrypt_keypair_unref
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 20
    functionsReached:
    - unref_keypair
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dcrypt_keypair_unref(struct dcrypt_keypair *keypair)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:409,1
    - Dst: ref_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: dcrypt_key_ref_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 4
    functionsReached:
    - i_assert
    - ref_public_key
    linkageType: ''
    returnType: void
    signature: void dcrypt_key_ref_public(struct dcrypt_public_key *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:415,1
    - Dst: ref_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 417
    functionName: dcrypt_key_ref_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 6
    functionsReached:
    - i_assert
    - ref_private_key
    linkageType: ''
    returnType: void
    signature: void dcrypt_key_ref_private(struct dcrypt_private_key *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:421,1
    - Dst: unref_public_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 423
    functionName: dcrypt_key_unref_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 30
    functionsReached:
    - i_assert
    - unref_public_key
    linkageType: ''
    returnType: void
    signature: void dcrypt_key_unref_public(struct dcrypt_public_key **key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:427,1
    - Dst: unref_private_key
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 429
    functionName: dcrypt_key_unref_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 30
    functionsReached:
    - i_assert
    - unref_private_key
    linkageType: ''
    returnType: void
    signature: void dcrypt_key_unref_private(struct dcrypt_private_key **key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:436,1
    - Dst: rsa_encrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - key
    - data
    - data_len
    - result
    - padding
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - unsigned char*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 439
    functionName: dcrypt_rsa_encrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - i_assert
    - rsa_encrypt
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_rsa_encrypt(struct dcrypt_public_key *key,\n\t\t\tconst
      unsigned char *data, size_t data_len,\n\t\t\tbuffer_t *result, enum dcrypt_padding
      padding,\n\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:446,1
    - Dst: rsa_decrypt
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - key
    - data
    - data_len
    - result
    - padding
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - unsigned char*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 449
    functionName: dcrypt_rsa_decrypt
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - i_assert
    - rsa_decrypt
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_rsa_decrypt(struct dcrypt_private_key *key,\n\t\t\tconst
      unsigned char *data, size_t data_len,\n\t\t\tbuffer_t *result, enum dcrypt_padding
      padding,\n\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:454,1
    - Dst: oid2name
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - oid
    - oid_len
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 456
    functionName: dcrypt_oid2name
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - i_assert
    - oid2name
    linkageType: ''
    returnType: char
    signature: "char *dcrypt_oid2name(const unsigned char *oid, size_t oid_len,\n\t\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:460,1
    - Dst: name2oid
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - name
    - oid
    - error_r
    argTypes:
    - char*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 462
    functionName: dcrypt_name2oid
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 3
    functionsReached:
    - i_assert
    - name2oid
    linkageType: ''
    returnType: bool
    signature: bool dcrypt_name2oid(const char *name, buffer_t *oid, const char **error_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:470,1
    - Dst: key_store_private_raw
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - key
    - pool
    - key_type_r
    - keys_r
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - pool_t
    - enum dcrypt_key_type*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 477
    functionName: dcrypt_key_store_private_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - key_store_private_raw
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_store_private_raw(struct dcrypt_private_key *key,\n\t\t\t\t
      \ pool_t pool,\n\t\t\t\t  enum dcrypt_key_type *key_type_r,\n\t\t\t\t  ARRAY_TYPE(dcrypt_raw_key)
      *keys_r,\n\t\t\t\t  const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:485,1
    - Dst: key_store_public_raw
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - key
    - pool
    - key_type_r
    - keys_r
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - pool_t
    - enum dcrypt_key_type*
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 492
    functionName: dcrypt_key_store_public_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - i_assert
    - key_store_public_raw
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_store_public_raw(struct dcrypt_public_key *key,\n\t\t\t\t
      pool_t pool,\n\t\t\t\t enum dcrypt_key_type *key_type_r,\n\t\t\t\t ARRAY_TYPE(dcrypt_raw_key)
      *keys_r,\n\t\t\t\t const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:499,1
    - Dst: key_load_private_raw
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - key_r
    - key_type
    - keys
    - error_r
    argTypes:
    - struct dcrypt_private_key**
    - enum dcrypt_key_type
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 506
    functionName: dcrypt_key_load_private_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - key_load_private_raw
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_load_private_raw(struct dcrypt_private_key **key_r,\n\t\t\t\t
      enum dcrypt_key_type key_type,\n\t\t\t\t const ARRAY_TYPE(dcrypt_raw_key) *keys,\n\t\t\t\t
      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:513,1
    - Dst: key_load_public_raw
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - key_r
    - key_type
    - keys
    - error_r
    argTypes:
    - struct dcrypt_public_key**
    - enum dcrypt_key_type
    - ARRAY_TYPE*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 520
    functionName: dcrypt_key_load_public_raw
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - i_assert
    - key_load_public_raw
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_load_public_raw(struct dcrypt_public_key **key_r,\n\t\t\t\tenum
      dcrypt_key_type key_type,\n\t\t\t\tconst ARRAY_TYPE(dcrypt_raw_key) *keys,\n\t\t\t\tconst
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:525,1
    - Dst: key_get_curve_public
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - key
    - curve_r
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 531
    functionName: dcrypt_key_get_curve_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - key_get_curve_public
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_key_get_curve_public(struct dcrypt_public_key *key,\n\t\t\t\t
      const char **curve_r, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:535,1
    - Dst: key_get_id_public
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 539
    functionName: dcrypt_key_get_id_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - key_get_id_public
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *dcrypt_key_get_id_public(struct dcrypt_public_key *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:543,1
    - Dst: key_get_id_private
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 547
    functionName: dcrypt_key_get_id_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - key_get_id_private
    - i_assert
    linkageType: ''
    returnType: char
    signature: char *dcrypt_key_get_id_private(struct dcrypt_private_key *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:551,1
    - Dst: key_set_id_public
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - key
    - id
    argTypes:
    - struct dcrypt_public_key*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 555
    functionName: dcrypt_key_set_id_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - key_set_id_public
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dcrypt_key_set_id_public(struct dcrypt_public_key *key, const
      char *id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:559,1
    - Dst: key_set_id_private
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - key
    - id
    argTypes:
    - struct dcrypt_private_key*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 563
    functionName: dcrypt_key_set_id_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - key_set_id_private
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dcrypt_key_set_id_private(struct dcrypt_private_key *key, const
      char *id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:567,1
    - Dst: key_get_usage_public
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_public_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 571
    functionName: dcrypt_key_get_usage_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 1
    functionsReached:
    - i_assert
    - key_get_usage_public
    linkageType: ''
    returnType: enum dcrypt_key_usage
    signature: enum dcrypt_key_usage dcrypt_key_get_usage_public(struct dcrypt_public_key
      *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:575,1
    - Dst: key_get_usage_private
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct dcrypt_private_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 579
    functionName: dcrypt_key_get_usage_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - key_get_usage_private
    linkageType: ''
    returnType: enum dcrypt_key_usage
    signature: enum dcrypt_key_usage dcrypt_key_get_usage_private(struct dcrypt_private_key
      *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:584,1
    - Dst: key_set_usage_public
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - key
    - usage
    argTypes:
    - struct dcrypt_public_key*
    - enum dcrypt_key_usage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 588
    functionName: dcrypt_key_set_usage_public
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - i_assert
    - key_set_usage_public
    linkageType: ''
    returnType: void
    signature: "void dcrypt_key_set_usage_public(struct dcrypt_public_key *key,\n\t\t\t\t
      enum dcrypt_key_usage usage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:593,1
    - Dst: key_set_usage_private
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - key
    - usage
    argTypes:
    - struct dcrypt_private_key*
    - enum dcrypt_key_usage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 597
    functionName: dcrypt_key_set_usage_private
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 0
    functionsReached:
    - key_set_usage_private
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void dcrypt_key_set_usage_private(struct dcrypt_private_key *key,\n\t\t\t\t
      \ enum dcrypt_key_usage usage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:604,1
    - Dst: sign
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 8
    argNames:
    - key
    - algorithm
    - format
    - data
    - data_len
    - signature_r
    - padding
    - error_r
    argTypes:
    - struct dcrypt_private_key*
    - char*
    - enum dcrypt_signature_format
    - void*
    - size_t
    - buffer_t*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 613
    functionName: dcrypt_sign
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 8
    functionsReached:
    - sign
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_sign(struct dcrypt_private_key *key, const char *algorithm,\n\t\t
      enum dcrypt_signature_format format,\n\t\t const void *data, size_t data_len,
      buffer_t *signature_r,\n\t\t enum dcrypt_padding padding, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:622,1
    - Dst: verify
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 10
    argNames:
    - key
    - algorithm
    - format
    - data
    - data_len
    - signature
    - signature_len
    - valid_r
    - padding
    - error_r
    argTypes:
    - struct dcrypt_public_key*
    - char*
    - enum dcrypt_signature_format
    - void*
    - size_t
    - unsigned char*
    - size_t
    - bool*
    - enum dcrypt_padding
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 632
    functionName: dcrypt_verify
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 11
    functionsReached:
    - i_assert
    - verify
    linkageType: ''
    returnType: bool
    signature: "bool dcrypt_verify(struct dcrypt_public_key *key, const char *algorithm,\n\t\t
      \  enum dcrypt_signature_format format,\n\t\t   const void *data, size_t data_len,\n\t\t
      \  const unsigned char *signature, size_t signature_len,\n\t\t   bool *valid_r,
      enum dcrypt_padding padding,\n\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_tree_read_cstr
      Src: /src/dovecot/src/lib-dcrypt/dcrypt.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key_data
    - jtree_r
    - error_r
    argTypes:
    - char*
    - struct json_tree**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 634
    functionDepth: 3
    functionLinenumber: 634
    functionLinenumberEnd: 640
    functionName: parse_jwk_key
    functionSourceFile: /src/dovecot/src/lib-dcrypt/dcrypt.c
    functionUses: 6
    functionsReached:
    - json_tree_read_cstr
    linkageType: ''
    returnType: int
    signature: "int parse_jwk_key(const char *key_data, struct json_tree **jtree_r,\n\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_crypt_init
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: test_var_expand_crypt_init
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - var_expand_crypt_init
    linkageType: ''
    returnType: void
    signature: void test_var_expand_crypt_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:118,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:120,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:122,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:123,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:126,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:129,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:133,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:133,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 135
    functionName: test_var_expand_crypt
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - i_error
    - test_assert_idx
    - test_assert_strcmp_idx
    - i_info
    - var_expand
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_var_expand_crypt(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:142,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:144,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:145,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:153,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:154,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:155,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:158,1
    - Dst: var_expand_table_set_value
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:159,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:159,1
    - Dst: var_expand
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:160,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:163,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:164,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:164,1
    - Dst: var_expand_table_get
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:166,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:167,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:167,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:168,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:168,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 140
    functionDepth: 4
    functionLinenumber: 140
    functionLinenumberEnd: 173
    functionName: test_var_expand_crypt_random
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_assert_cmp_idx
    - t_str_new
    - str_c
    - i_error
    - var_expand_table_get
    - test_end
    - test_assert_strcmp_idx
    - str_truncate
    - var_expand_table_set_value
    - var_expand
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_var_expand_crypt_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_crypt_deinit
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: test_var_expand_crypt_deinit
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - var_expand_crypt_deinit
    linkageType: ''
    returnType: void
    signature: void test_var_expand_crypt_deinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:195,1
    - Dst: i_info
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:196,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:200,1
    - Dst: dcrypt_deinitialize
      Src: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 180
    functionDepth: 9
    functionLinenumber: 180
    functionLinenumberEnd: 205
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/test-var-expand-crypt.c
    functionUses: 25
    functionsReached:
    - i_info
    - test_run
    - dcrypt_initialize
    - dcrypt_deinitialize
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:40,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:43,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:45,1
    - Dst: str_to_intmax
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:46,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:57,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:58,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:60,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:60,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:61,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - parts
    - error_r
    argTypes:
    - struct var_expand_crypt_context*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 32
    functionDepth: 5
    functionLinenumber: 32
    functionLinenumberEnd: 63
    functionName: parse_parameters
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 1
    functionsReached:
    - str_begins
    - hex_to_binary
    - strlen
    - t_buffer_create
    - str_to_intmax
    - t_strsplit
    linkageType: ''
    returnType: int
    signature: "int parse_parameters(struct var_expand_crypt_context *ctx,\n\t\t\t
      \   const char *const *parts, const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_ctx_sym_set_key_iv_random
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:71,1
    - Dst: dcrypt_ctx_sym_get_iv
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:73,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:74,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:75,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:77,1
    - Dst: dcrypt_ctx_sym_set_iv
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:80,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:83,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:84,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:86,1
    - Dst: dcrypt_ctx_sym_set_key
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:89,1
    - Dst: dcrypt_ctx_sym_init
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:92,1
    - Dst: dcrypt_ctx_sym_update
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:93,1
    - Dst: dcrypt_ctx_sym_final
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:95,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 6
    argNames:
    - dctx
    - key
    - iv
    - input
    - output
    - error_r
    argTypes:
    - struct dcrypt_context_symmetric*
    - buffer_t*
    - buffer_t*
    - buffer_t*
    - buffer_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 65
    functionDepth: 11
    functionLinenumber: 65
    functionLinenumberEnd: 98
    functionName: var_expand_crypt
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - dcrypt_ctx_sym_set_iv
    - dcrypt_ctx_sym_set_key_iv_random
    - dcrypt_ctx_sym_get_iv
    - t_strdup_printf
    - dcrypt_ctx_sym_update
    - dcrypt_ctx_sym_final
    - dcrypt_ctx_sym_set_key
    - dcrypt_ctx_sym_get_iv_length
    - dcrypt_ctx_sym_get_key_length
    - dcrypt_ctx_sym_init
    linkageType: ''
    returnType: int
    signature: "int var_expand_crypt(struct dcrypt_context_symmetric *dctx, buffer_t
      *key, buffer_t *iv,\n\t\t const buffer_t *input, buffer_t *output, const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:106,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:108,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:108,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 4
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: make_salt
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - i_rand_limit
    linkageType: ''
    returnType: char
    signature: char *make_salt(size_t len)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_parameter_iter_init
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:125,1
    - Dst: var_expand_parameter_iter_more
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:126,1
    - Dst: var_expand_parameter_iter_next
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:128,1
    - Dst: var_expand_parameter_key
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:130,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:133,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:137,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:138,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:146,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:146,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:147,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:148,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:149,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:157,1
    - Dst: var_expand_parameter_bool_or_var
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:158,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:161,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:162,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:170,1
    - Dst: var_expand_parameter_string_or_var
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:171,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:174,1
    - Dst: var_expand_parameter_number_or_var
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:175,1
    - Dst: ERROR_UNSUPPORTED_KEY
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:184,1
    - Dst: ERROR_IF_NO_TRANSFER_TO
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:192,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:195,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:197,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:197,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:198,1
    - Dst: parse_parameters
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:201,1
    - Dst: make_salt
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:210,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:211,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:214,1
    - Dst: dcrypt_ctx_sym_get_key_length
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:217,1
    - Dst: dcrypt_ctx_sym_get_iv_length
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:218,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:219,1
    - Dst: dcrypt_pbkdf2
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:220,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:220,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:221,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:226,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:227,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:228,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:229,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:231,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:231,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:232,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:236,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 93
    argCount: 4
    argNames:
    - state
    - stmt
    - ctx
    - error_r
    argTypes:
    - struct var_expand_state*
    - struct var_expand_statement*
    - struct var_expand_crypt_context*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 112
    functionDepth: 6
    functionLinenumber: 112
    functionLinenumberEnd: 239
    functionName: var_expand_crypt_settings
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - str_c
    - parse_parameters
    - var_expand_parameter_iter_init
    - hex_to_binary
    - strlen
    - dcrypt_pbkdf2
    - buffer_append
    - make_salt
    - var_expand_parameter_key
    - dcrypt_ctx_sym_destroy
    - ERROR_IF_NO_TRANSFER_TO
    - var_expand_parameter_iter_more
    - dcrypt_ctx_sym_get_iv_length
    - var_expand_parameter_number_or_var
    - i_assert
    - var_expand_parameter_string_or_var
    - var_expand_parameter_iter_next
    - strcmp
    - str_array_length
    - t_buffer_create
    - dcrypt_ctx_sym_create
    - t_strsplit
    - ERROR_UNSUPPORTED_KEY
    - dcrypt_ctx_sym_get_key_length
    - var_expand_parameter_bool_or_var
    linkageType: ''
    returnType: int
    signature: "int var_expand_crypt_settings(struct var_expand_state *state,\n\t\t\t\t
      \    const struct var_expand_statement *stmt,\n\t\t\t\t     struct var_expand_crypt_context
      *ctx,\n\t\t\t\t     const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_crypt_initialize
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:245,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:249,1
    - Dst: var_expand_crypt_settings
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:250,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:254,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:256,1
    - Dst: var_expand_crypt
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:258,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:260,1
    - Dst: var_expand_state_set_transfer_binary
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:264,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:267,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:269,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:272,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:273,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:274,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:275,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 241
    functionDepth: 12
    functionLinenumber: 241
    functionLinenumberEnd: 280
    functionName: var_expand_encrypt
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - i_zero
    - var_expand_crypt
    - str_printfa
    - var_expand_crypt_settings
    - dcrypt_ctx_sym_destroy
    - str_append_c
    - var_expand_crypt_initialize
    - t_buffer_create
    - var_expand_state_set_transfer_binary
    - dcrypt_ctx_sym_create
    - str_truncate
    - binary_to_hex_append
    linkageType: ''
    returnType: int
    signature: "int var_expand_encrypt(const struct var_expand_statement *stmt,\n\t\t
      \  struct var_expand_state *state, const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: var_expand_crypt_initialize
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:287,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:291,1
    - Dst: var_expand_crypt_settings
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:292,1
    - Dst: dcrypt_ctx_sym_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:296,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:298,1
    - Dst: var_expand_crypt
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:299,1
    - Dst: dcrypt_ctx_sym_destroy
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:301,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:304,1
    - Dst: var_expand_state_set_transfer_binary
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:305,1
    - Dst: var_expand_state_set_transfer
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:307,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:307,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - stmt
    - state
    - error_r
    argTypes:
    - struct var_expand_statement*
    - struct var_expand_state*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 282
    functionDepth: 12
    functionLinenumber: 282
    functionLinenumberEnd: 310
    functionName: var_expand_decrypt
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 0
    functionsReached:
    - i_zero
    - var_expand_crypt
    - var_expand_state_set_transfer
    - str_c
    - var_expand_crypt_settings
    - dcrypt_ctx_sym_destroy
    - var_expand_crypt_initialize
    - t_buffer_create
    - memchr
    - var_expand_state_set_transfer_binary
    - dcrypt_ctx_sym_create
    linkageType: ''
    returnType: int
    signature: "int var_expand_decrypt(const struct var_expand_statement *stmt,\n\t\t
      \  struct var_expand_state *state, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dcrypt_initialize
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - error_r
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 9
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: var_expand_crypt_initialize
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 2
    functionsReached:
    - dcrypt_initialize
    linkageType: ''
    returnType: bool
    signature: bool var_expand_crypt_initialize(const char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expansion_filter_crypt_set_functions
      Src: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 325
    functionName: var_expand_crypt_init
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 1
    functionsReached:
    - expansion_filter_crypt_set_functions
    linkageType: ''
    returnType: void
    signature: void var_expand_crypt_init(struct module *module ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 329
    functionName: var_expand_crypt_deinit
    functionSourceFile: /src/dovecot/src/lib-var-expand-crypt/var-expand-crypt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void var_expand_crypt_deinit(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: password_verify
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:31,1
    - Dst: password_schemes_weak_allowed
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:39,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:49,1
    - Dst: mycrypt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:50,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:53,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:57,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 23
    functionDepth: 11
    functionLinenumber: 23
    functionLinenumberEnd: 58
    functionName: crypt_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-crypt.c
    functionUses: 11
    functionsReached:
    - str_equals_timing_almost_safe
    - t_strdup_printf
    - t_strndup
    - password_verify
    - password_schemes_weak_allowed
    - mycrypt
    linkageType: ''
    returnType: int
    signature: "int crypt_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t const unsigned char *raw_password, size_t size,\n\t\t
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: password_generate_salt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:67,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:68,1
    - Dst: mycrypt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:68,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: crypt_generate_des
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-crypt.c
    functionUses: 0
    functionsReached:
    - t_strdup
    - strlen
    - password_generate_salt
    - mycrypt
    linkageType: ''
    returnType: void
    signature: "void crypt_generate_des(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t   const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:89,1
    - Dst: crypt_gensalt_blowfish_rn
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:90,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:93,1
    - Dst: crypt_blowfish_rn
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:95,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:97,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:99,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:100,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - plaintext
    - params
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 101
    functionName: crypt_generate_blowfish
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-crypt.c
    functionUses: 0
    functionsReached:
    - crypt_gensalt_blowfish_rn
    - random_fill
    - crypt_blowfish_rn
    - i_fatal
    - strlen
    - t_strdup
    linkageType: ''
    returnType: void
    signature: "void crypt_generate_blowfish(const char *plaintext, const struct password_generate_params
      *params,\n\t\t\t const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:116,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:126,1
    - Dst: crypt_blowfish_rn
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:127,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:129,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:133,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 103
    functionDepth: 11
    functionLinenumber: 103
    functionLinenumberEnd: 134
    functionName: crypt_verify_blowfish
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-crypt.c
    functionUses: 0
    functionsReached:
    - crypt_blowfish_rn
    - str_equals_timing_almost_safe
    - t_strdup_printf
    - t_strndup
    linkageType: ''
    returnType: int
    signature: "int crypt_verify_blowfish(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t      const unsigned char *raw_password, size_t size,\n\t\t
      \     const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: password_generate_salt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:150,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:152,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:154,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:155,1
    - Dst: mycrypt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:155,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - plaintext
    - params
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 136
    functionDepth: 11
    functionLinenumber: 136
    functionLinenumberEnd: 158
    functionName: crypt_generate_sha256
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-crypt.c
    functionUses: 0
    functionsReached:
    - password_generate_salt
    - strlen
    - t_strdup_printf
    - t_strdup
    - mycrypt
    linkageType: ''
    returnType: void
    signature: "void crypt_generate_sha256(const char *plaintext, const struct password_generate_params
      *params,\n\t\t      const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: password_generate_salt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:174,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:176,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:178,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:179,1
    - Dst: mycrypt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:179,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - plaintext
    - params
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 160
    functionDepth: 11
    functionLinenumber: 160
    functionLinenumberEnd: 182
    functionName: crypt_generate_sha512
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-crypt.c
    functionUses: 0
    functionsReached:
    - password_generate_salt
    - strlen
    - t_strdup_printf
    - t_strdup
    - mycrypt
    linkageType: ''
    returnType: void
    signature: "void crypt_generate_sha512(const char *plaintext, const struct password_generate_params
      *params,\n\t\t      const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:246,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:246,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:246,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:248,1
    - Dst: mycrypt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:249,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:251,1
    - Dst: password_scheme_register
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:252,1
    - Dst: password_scheme_register
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:254,1
    - Dst: password_scheme_register
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 256
    functionName: password_scheme_register_crypt
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-crypt.c
    functionUses: 0
    functionsReached:
    - strcmp
    - password_scheme_register
    - i_assert
    - N_ELEMENTS
    - mycrypt
    linkageType: ''
    returnType: void
    signature: void password_scheme_register_crypt(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: password_schemes_init
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:260,1
    - Dst: password_scheme_register_crypt
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:261,1
    - Dst: password_scheme_register_sodium
      Src: /src/dovecot/src/lib-auth/password-scheme-crypt.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 265
    functionName: password_schemes_register_all
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-crypt.c
    functionUses: 3
    functionsReached:
    - password_schemes_init
    - password_scheme_register_sodium
    - password_scheme_register_crypt
    linkageType: ''
    returnType: void
    signature: void password_schemes_register_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:30,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - client_r
    - pool
    - set
    argTypes:
    - struct auth_scram_client*
    - pool_t
    - struct auth_scram_client_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: auth_scram_client_init
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 1
    functionsReached:
    - i_zero
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_scram_client_init(struct auth_scram_client *client_r, pool_t
      pool,\n\t\t\t    const struct auth_scram_client_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:40,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_scram_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: auth_scram_client_deinit
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 1
    functionsReached:
    - i_assert
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void auth_scram_client_deinit(struct auth_scram_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:52,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_scram_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 62
    functionName: auth_scram_generate_cnonce
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 0
    functionsReached:
    - random_fill
    - p_strdup
    linkageType: ''
    returnType: void
    signature: void auth_scram_generate_cnonce(struct auth_scram_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_generate_cnonce
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:99,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:101,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:114,1
    - Dst: auth_gs2_header_encode
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:115,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:117,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:118,1
    - Dst: auth_gs2_encode_username
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:119,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:120,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:121,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:123,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:126,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_scram_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 64
    functionDepth: 4
    functionLinenumber: 64
    functionLinenumberEnd: 129
    functionName: auth_scram_get_client_first
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 0
    functionsReached:
    - i_zero
    - str_c
    - t_str_new
    - auth_gs2_encode_username
    - p_strndup
    - p_strdup
    - str_len
    - auth_gs2_header_encode
    - str_append
    - auth_scram_generate_cnonce
    linkageType: ''
    returnType: string_t
    signature: string_t *auth_scram_get_client_first(struct auth_scram_client *client)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:148,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:148,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:149,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:175,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:187,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:188,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:189,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:190,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:199,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:209,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:210,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct auth_scram_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 131
    functionDepth: 5
    functionLinenumber: 131
    functionLinenumberEnd: 213
    functionName: auth_scram_parse_server_first
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - str_begins_with
    - MAX_BASE64_DECODED_SIZE
    - base64_decode
    - p_strndup
    - strlen
    - str_array_length
    - buffer_create_dynamic
    - t_strndup
    - t_strsplit
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int auth_scram_parse_server_first(struct auth_scram_client *client,\n\t\t\t
      \     const unsigned char *input, size_t input_len,\n\t\t\t      const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:231,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:232,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:256,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:258,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:260,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:262,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:263,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:264,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:265,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:269,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:270,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:271,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:272,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:273,1
    - Dst: auth_scram_hi
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:277,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:279,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:284,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:285,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:286,1
    - Dst: hash_method_get_digest
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:289,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:296,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:297,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:298,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:299,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:300,1
    - Dst: str_append_str
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:301,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:304,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:305,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:305,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:305,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:306,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:312,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:313,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:314,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:317,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:318,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:319,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:323,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:324,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:325,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:325,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:325,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:326,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:328,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:335,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 50
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_scram_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 215
    functionDepth: 6
    functionLinenumber: 215
    functionLinenumberEnd: 339
    functionName: auth_scram_get_client_final
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 0
    functionsReached:
    - hash_method_get_digest
    - hmac_update
    - str_len
    - strlen
    - buffer_append
    - t_str_new
    - str_append_c
    - hmac_final
    - safe_memset
    - str_data
    - buffer_append_buf
    - base64_encode
    - auth_scram_hi
    - i_assert
    - str_append_str
    - t_buffer_create
    - hmac_init
    - str_append
    - p_malloc
    linkageType: ''
    returnType: string_t
    signature: string_t *auth_scram_get_client_final(struct auth_scram_client *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:358,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:358,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:359,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:371,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:385,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:386,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:387,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:387,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:388,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:389,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:391,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:391,1
    - Dst: str_clear_safe
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:392,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct auth_scram_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 341
    functionDepth: 11
    functionLinenumber: 341
    functionLinenumberEnd: 399
    functionName: auth_scram_parse_server_final
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_clear_safe
    - str_array_length
    - t_strdup_printf
    - t_strndup
    - str_equals_timing_almost_safe
    - t_strsplit
    - base64_encode
    - i_assert
    - MAX_BASE64_ENCODED_SIZE
    - safe_memset
    linkageType: ''
    returnType: int
    signature: "int auth_scram_parse_server_final(struct auth_scram_client *client,\n\t\t\t
      \     const unsigned char *input, size_t input_len,\n\t\t\t      const char
      **error_r)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:411,1
    - Dst: auth_scram_parse_server_first
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:413,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:417,1
    - Dst: auth_scram_parse_server_final
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:419,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:427,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - client
    - input
    - input_len
    - error_r
    argTypes:
    - struct auth_scram_client*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 401
    functionDepth: 12
    functionLinenumber: 401
    functionLinenumberEnd: 432
    functionName: auth_scram_client_input
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 1
    functionsReached:
    - auth_scram_parse_server_first
    - auth_scram_parse_server_final
    - i_unreached
    linkageType: ''
    returnType: int
    signature: "int auth_scram_client_input(struct auth_scram_client *client,\n\t\t\t
      \   const unsigned char *input, size_t input_len,\n\t\t\t    const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct auth_scram_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: auth_scram_client_state_client_first
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_scram_client_state_client_first(struct auth_scram_client
      *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_get_client_first
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:450,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:451,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:452,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:455,1
    - Dst: auth_scram_get_client_final
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:457,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:458,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:459,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:462,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-client.c:468,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - client
    - output_r
    - output_len_r
    argTypes:
    - struct auth_scram_client*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 439
    functionDepth: 7
    functionLinenumber: 439
    functionLinenumberEnd: 471
    functionName: auth_scram_client_output
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-client.c
    functionUses: 1
    functionsReached:
    - str_data
    - i_unreached
    - str_len
    - auth_scram_get_client_first
    - auth_scram_get_client_final
    linkageType: ''
    returnType: void
    signature: "void auth_scram_client_output(struct auth_scram_client *client,\n\t\t\t
      \     const unsigned char **output_r,\n\t\t\t      size_t *output_len_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram.c:16,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram.c:20,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram.c:24,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram.c:25,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct auth_scram_key_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 27
    functionName: auth_scram_key_data_clear
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram.c
    functionUses: 0
    functionsReached:
    - i_assert
    - safe_memset
    linkageType: ''
    returnType: void
    signature: void auth_scram_key_data_clear(struct auth_scram_key_data *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram.c:54,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram.c:55,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram.c:56,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram.c:57,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-auth/auth-scram.c:59,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram.c:63,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram.c:64,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 7
    argNames:
    - hmethod
    - str
    - str_size
    - salt
    - salt_size
    - i
    - result
    argTypes:
    - struct hash_method*
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - unsigned int
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 69
    functionName: auth_scram_hi
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram.c
    functionUses: 1
    functionsReached:
    - memcpy
    - hmac_final
    - hmac_update
    - hmac_init
    linkageType: ''
    returnType: void
    signature: "void auth_scram_hi(const struct hash_method *hmethod,\n\t\t   const
      unsigned char *str, size_t str_size,\n\t\t   const unsigned char *salt, size_t
      salt_size, unsigned int i,\n\t\t   unsigned char *result)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: I_MAX
      Src: /src/dovecot/src/lib-auth/auth-scram.c:86,1
    - Dst: I_MIN
      Src: /src/dovecot/src/lib-auth/auth-scram.c:86,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/auth-scram.c:91,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/auth-scram.c:92,1
    - Dst: t_base64_encode
      Src: /src/dovecot/src/lib-auth/auth-scram.c:92,1
    - Dst: auth_scram_hi
      Src: /src/dovecot/src/lib-auth/auth-scram.c:95,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram.c:96,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram.c:100,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram.c:101,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram.c:102,1
    - Dst: hash_method_get_digest
      Src: /src/dovecot/src/lib-auth/auth-scram.c:105,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram.c:109,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram.c:110,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram.c:111,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram.c:113,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 7
    argNames:
    - hmethod
    - plaintext
    - rounds
    - iter_count_r
    - salt_r
    - stored_key_r
    - server_key_r
    argTypes:
    - struct hash_method*
    - char*
    - unsigned int
    - unsigned int*
    - char**
    - unsigned char[]
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 115
    functionName: auth_scram_generate_key_data
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram.c
    functionUses: 0
    functionsReached:
    - str_c
    - random_fill
    - hash_method_get_digest
    - hmac_update
    - I_MIN
    - strlen
    - hmac_final
    - I_MAX
    - auth_scram_hi
    - hmac_init
    - t_base64_encode
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void auth_scram_generate_key_data(const struct hash_method *hmethod,\n\t\t\t\t
      \ const char *plaintext, unsigned int rounds,\n\t\t\t\t  unsigned int *iter_count_r,\n\t\t\t\t
      \ const char **salt_r,\n\t\t\t\t  unsigned char stored_key_r[],\n\t\t\t\t  unsigned
      char server_key_r[])"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-auth/auth-scram.c:130,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram.c:130,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth/auth-scram.c:132,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-scram.c:133,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth/auth-scram.c:137,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-scram.c:140,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth/auth-scram.c:146,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-auth/auth-scram.c:147,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram.c:147,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-scram.c:149,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-auth/auth-scram.c:153,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-auth/auth-scram.c:155,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-auth/auth-scram.c:156,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram.c:156,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-scram.c:158,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-auth/auth-scram.c:162,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 9
    argNames:
    - hmethod
    - name
    - credentials
    - size
    - iter_count_r
    - salt_r
    - stored_key_r
    - server_key_r
    - error_r
    argTypes:
    - struct hash_method*
    - char*
    - unsigned char*
    - size_t
    - unsigned int*
    - char**
    - unsigned char[]
    - unsigned char[]
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 117
    functionDepth: 11
    functionLinenumber: 117
    functionLinenumberEnd: 164
    functionName: auth_scram_credentials_parse
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram.c
    functionUses: 1
    functionsReached:
    - memcpy
    - base64_decode
    - strlen
    - str_array_length
    - t_strdup_printf
    - t_strndup
    - t_buffer_create
    - buffer_set_used_size
    - t_strsplit
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int auth_scram_credentials_parse(const struct hash_method *hmethod,\n\t\t\t\t
      const char *name,\n\t\t\t\t const unsigned char *credentials, size_t size,\n\t\t\t\t
      unsigned int *iter_count_r,\n\t\t\t\t const char **salt_r,\n\t\t\t\t unsigned
      char stored_key_r[],\n\t\t\t\t unsigned char server_key_r[],\n\t\t\t\t const
      char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:43,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - asserver
    - username
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 50
    functionName: test_auth_set_username
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    linkageType: ''
    returnType: bool
    signature: bool test_auth_set_username(struct auth_scram_server *asserver, const
      char *username)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:57,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - asserver
    - username
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 64
    functionName: test_auth_set_login_username
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - container_of
    linkageType: ''
    returnType: bool
    signature: "bool test_auth_set_login_username(struct auth_scram_server *asserver,\n\t\t\t
      \    const char *username)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:71,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - asserver
    - type
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: test_auth_start_channel_binding
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - container_of
    - test_assert_strcmp
    linkageType: ''
    returnType: void
    signature: "void test_auth_start_channel_binding(struct auth_scram_server *asserver,\n\t\t\t\tconst
      char *type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - asserver
    - data_r
    argTypes:
    - struct auth_scram_server*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 85
    functionName: test_auth_accept_channel_binding
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: int
    signature: "int test_auth_accept_channel_binding(struct auth_scram_server *asserver,\n\t\t\t\t
      buffer_t **data_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:92,1
    - Dst: auth_scram_generate_key_data
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - asserver
    - key_data
    argTypes:
    - struct auth_scram_server*
    - struct auth_scram_key_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 87
    functionDepth: 4
    functionLinenumber: 87
    functionLinenumberEnd: 103
    functionName: test_auth_credentials_lookup
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - auth_scram_generate_key_data
    - container_of
    linkageType: ''
    returnType: int
    signature: "int test_auth_credentials_lookup(struct auth_scram_server *asserver,\n\t\t\t
      \    struct auth_scram_key_data *key_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_client_input
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - bctx
    - input
    - input_len
    - error_r
    argTypes:
    - struct backend_context*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 13
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: test_auth_client_input
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - auth_scram_client_input
    linkageType: ''
    returnType: int
    signature: "int test_auth_client_input(struct backend_context *bctx,\n\t\t       const
      unsigned char *input, size_t input_len,\n\t\t       const char **error_r)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_client_output
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:130,1
    - Dst: auth_scram_client_output
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:177,1
    - Dst: auth_scram_client_output
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:182,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:184,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:184,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:185,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:186,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:187,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:206,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:210,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:214,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:218,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:228,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 90
    argCount: 3
    argNames:
    - bctx
    - output_r
    - output_len_r
    argTypes:
    - struct backend_context*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 122
    functionDepth: 8
    functionLinenumber: 122
    functionLinenumberEnd: 229
    functionName: test_auth_client_output
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_strndup
    - t_strsplit
    - auth_scram_client_output
    - i_assert
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void test_auth_client_output(struct backend_context *bctx,\n\t\t\tconst
      unsigned char **output_r, size_t *output_len_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:244,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:247,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:255,1
    - Dst: buffer_append_space_unsafe
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:257,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:259,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:266,1
    - Dst: auth_scram_client_init
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:279,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:283,1
    - Dst: auth_scram_server_init
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:291,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:293,1
    - Dst: test_auth_client_output
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:300,1
    - Dst: auth_scram_server_input
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:301,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:303,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:303,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:306,1
    - Dst: auth_scram_server_output
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:309,1
    - Dst: test_auth_client_input
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:311,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:312,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:312,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:315,1
    - Dst: auth_scram_server_deinit
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:323,1
    - Dst: auth_scram_client_deinit
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:324,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:326,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 5
    argNames:
    - hmethod
    - authid
    - authzid
    - password
    - cbind_type
    argTypes:
    - struct hash_method*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 235
    functionDepth: 14
    functionLinenumber: 235
    functionLinenumberEnd: 327
    functionName: test_auth_success_one
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_auth_client_output
    - random_fill
    - auth_scram_server_deinit
    - p_new
    - test_out_reason
    - auth_scram_client_init
    - auth_scram_server_output
    - t_buffer_create
    - auth_scram_server_input
    - t_strdup_printf
    - pool_alloconly_create_clean
    - test_has_failed
    - auth_scram_client_deinit
    - pool_unref
    - buffer_append_space_unsafe
    - auth_scram_server_init
    - test_auth_client_input
    linkageType: ''
    returnType: void
    signature: "void test_auth_success_one(const struct hash_method *hmethod, const
      char *authid,\n\t\t      const char *authzid, const char *password,\n\t\t      const
      char *cbind_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:331,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:332,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:333,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:335,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:336,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:338,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:340,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:341,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:342,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:344,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:345,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:347,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:349,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:350,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:351,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:353,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:354,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:356,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:358,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:359,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:360,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:362,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:363,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:365,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:367,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:368,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:370,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:372,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:373,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:375,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:377,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:378,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:380,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:382,1
    - Dst: test_auth_success_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:383,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 329
    functionDepth: 15
    functionLinenumber: 329
    functionLinenumberEnd: 386
    functionName: test_auth_success
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_auth_success_one
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_success(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create_clean
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:418,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:421,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:432,1
    - Dst: auth_scram_client_init
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:438,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:442,1
    - Dst: auth_scram_server_init
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:446,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:448,1
    - Dst: test_auth_client_output
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:455,1
    - Dst: auth_scram_server_input
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:456,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:458,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:459,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:459,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:463,1
    - Dst: auth_scram_server_output
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:466,1
    - Dst: test_auth_client_input
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:468,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:469,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:469,1
    - Dst: test_has_failed
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:472,1
    - Dst: auth_scram_server_deinit
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:480,1
    - Dst: auth_scram_client_deinit
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:481,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:483,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 53
    argCount: 4
    argNames:
    - hmethod
    - cbind_support
    - expect_error
    - test_id
    argTypes:
    - struct hash_method*
    - enum auth_scram_cbind_server_support
    - enum auth_scram_server_error
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 392
    functionDepth: 14
    functionLinenumber: 392
    functionLinenumberEnd: 484
    functionName: test_auth_server_error_one
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - i_zero
    - test_auth_client_output
    - i_assert
    - auth_scram_server_deinit
    - p_new
    - test_out_reason
    - auth_scram_client_init
    - auth_scram_server_output
    - auth_scram_server_input
    - t_strdup_printf
    - pool_unref
    - pool_alloconly_create_clean
    - test_has_failed
    - auth_scram_client_deinit
    - auth_scram_server_init
    - test_auth_client_input
    linkageType: ''
    returnType: void
    signature: "void test_auth_server_error_one(const struct hash_method *hmethod,\n\t\t\t
      \  enum auth_scram_cbind_server_support cbind_support,\n\t\t\t   enum auth_scram_server_error
      expect_error,\n\t\t\t   unsigned int test_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:491,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:492,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:495,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:498,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:499,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:502,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:504,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:505,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:508,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:510,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:511,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:514,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:516,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:517,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:520,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:522,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:523,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:526,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:528,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:529,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:532,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:534,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:535,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:538,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:540,1
    - Dst: test_auth_server_error_one
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:541,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 486
    functionDepth: 15
    functionLinenumber: 486
    functionLinenumberEnd: 545
    functionName: test_auth_server_error
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_auth_server_error_one
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_auth_server_error(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-auth/test-auth-scram.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 547
    functionDepth: 7
    functionLinenumber: 547
    functionLinenumberEnd: 555
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-scram.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: IS_LWS
    functionSourceFile: /src/dovecot/src/lib-auth/auth-digest.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LWS(c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-auth/auth-digest.c:23,1
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-auth/auth-digest.c:38,1
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-auth/auth-digest.c:44,1
    - Dst: IS_LWS
      Src: /src/dovecot/src/lib-auth/auth-digest.c:54,1
    - Dst: str_lcase
      Src: /src/dovecot/src/lib-auth/auth-digest.c:70,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 40
    argCount: 3
    argNames:
    - data
    - key_r
    - value_r
    argTypes:
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 73
    functionName: auth_digest_parse_keyvalue
    functionSourceFile: /src/dovecot/src/lib-auth/auth-digest.c
    functionUses: 3
    functionsReached:
    - IS_LWS
    - str_lcase
    linkageType: ''
    returnType: bool
    signature: "bool auth_digest_parse_keyvalue(char **data, const char **key_r,\n\t\t\t\tconst
      char **value_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_method_init
      Src: /src/dovecot/src/lib-auth/auth-digest.c:88,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:89,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:89,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:90,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:91,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:91,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:92,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:93,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:93,1
    - Dst: hash_method_result
      Src: /src/dovecot/src/lib-auth/auth-digest.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - hmethod
    - username
    - realm
    - password
    - digest_r
    argTypes:
    - struct hash_method*
    - char*
    - char*
    - char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 95
    functionName: auth_digest_get_hash_a1_secret
    functionSourceFile: /src/dovecot/src/lib-auth/auth-digest.c
    functionUses: 1
    functionsReached:
    - hash_method_loop
    - strlen
    - hash_method_result
    - hash_method_init
    linkageType: ''
    returnType: void
    signature: "void auth_digest_get_hash_a1_secret(const struct hash_method *hmethod,\n\t\t\t\t
      \   const char *username, const char *realm,\n\t\t\t\t    const char *password,\n\t\t\t\t
      \   unsigned char *digest_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-auth/auth-digest.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-digest.c:107,1
    - Dst: hash_method_init
      Src: /src/dovecot/src/lib-auth/auth-digest.c:118,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:119,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:120,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:121,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:121,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:122,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:123,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:123,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:125,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:126,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:126,1
    - Dst: hash_method_result
      Src: /src/dovecot/src/lib-auth/auth-digest.c:128,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-auth/auth-digest.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - hmethod
    - hash_a1_secret
    - nonce
    - cnonce
    - authzid
    argTypes:
    - struct hash_method*
    - unsigned char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 97
    functionDepth: 6
    functionLinenumber: 97
    functionLinenumberEnd: 131
    functionName: auth_digest_get_hash_a1
    functionSourceFile: /src/dovecot/src/lib-auth/auth-digest.c
    functionUses: 2
    functionsReached:
    - hash_method_loop
    - hash_method_result
    - strlen
    - hash_method_init
    - binary_to_hex
    - i_assert
    linkageType: ''
    returnType: char
    signature: "char *\nauth_digest_get_hash_a1(const struct hash_method *hmethod,\n\t\t\tconst
      unsigned char *hash_a1_secret,\n\t\t\tconst char *nonce, const char *cnonce,\n\t\t\tconst
      char *authzid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_method_init
      Src: /src/dovecot/src/lib-auth/auth-digest.c:149,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:151,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:151,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:152,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:154,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:154,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:156,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:157,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:158,1
    - Dst: hash_method_result
      Src: /src/dovecot/src/lib-auth/auth-digest.c:160,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-auth/auth-digest.c:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - hmethod
    - req_method
    - req_uri
    - entity_body_hash
    argTypes:
    - struct hash_method*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 133
    functionDepth: 6
    functionLinenumber: 133
    functionLinenumberEnd: 163
    functionName: auth_digest_get_hash_a2
    functionSourceFile: /src/dovecot/src/lib-auth/auth-digest.c
    functionUses: 0
    functionsReached:
    - hash_method_loop
    - hash_method_result
    - strlen
    - hash_method_init
    - binary_to_hex
    linkageType: ''
    returnType: char
    signature: "char *\nauth_digest_get_hash_a2(const struct hash_method *hmethod,\n\t\t\tconst
      char *req_method, const char *req_uri,\n\t\t\tconst char *entity_body_hash)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_method_init
      Src: /src/dovecot/src/lib-auth/auth-digest.c:182,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:183,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:183,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:184,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:185,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:185,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:186,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:188,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:188,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:189,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:190,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:190,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:191,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:192,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:192,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:193,1
    - Dst: hash_method_loop
      Src: /src/dovecot/src/lib-auth/auth-digest.c:195,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-digest.c:195,1
    - Dst: hash_method_result
      Src: /src/dovecot/src/lib-auth/auth-digest.c:196,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-auth/auth-digest.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 7
    argNames:
    - hmethod
    - hash_a1
    - hash_a2
    - qop
    - nonce
    - nc
    - cnonce
    argTypes:
    - struct hash_method*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 165
    functionDepth: 6
    functionLinenumber: 165
    functionLinenumberEnd: 199
    functionName: auth_digest_get_response
    functionSourceFile: /src/dovecot/src/lib-auth/auth-digest.c
    functionUses: 0
    functionsReached:
    - hash_method_loop
    - hash_method_result
    - strlen
    - hash_method_init
    - binary_to_hex
    linkageType: ''
    returnType: char
    signature: "char *\nauth_digest_get_response(const struct hash_method *hmethod,\n\t\t\t
      const char *hash_a1, const char *hash_a2,\n\t\t\t const char *qop, const char
      *nonce, const char *nc,\n\t\t\t const char *cnonce)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_digest_get_hash_a2
      Src: /src/dovecot/src/lib-auth/auth-digest.c:211,1
    - Dst: auth_digest_get_response
      Src: /src/dovecot/src/lib-auth/auth-digest.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 9
    argNames:
    - hmethod
    - hash_a1
    - req_method
    - req_uri
    - qop
    - nonce
    - nc
    - cnonce
    - entity_body_hash
    argTypes:
    - struct hash_method*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 201
    functionDepth: 7
    functionLinenumber: 201
    functionLinenumberEnd: 216
    functionName: auth_digest_get_client_response
    functionSourceFile: /src/dovecot/src/lib-auth/auth-digest.c
    functionUses: 2
    functionsReached:
    - auth_digest_get_response
    - auth_digest_get_hash_a2
    linkageType: ''
    returnType: char
    signature: "char *\nauth_digest_get_client_response(const struct hash_method *hmethod,\n\t\t\t\tconst
      char *hash_a1, const char *req_method,\n\t\t\t\tconst char *req_uri, const char
      *qop,\n\t\t\t\tconst char *nonce, const char *nc,\n\t\t\t\tconst char *cnonce,\n\t\t\t\tconst
      char *entity_body_hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_digest_get_hash_a2
      Src: /src/dovecot/src/lib-auth/auth-digest.c:227,1
    - Dst: auth_digest_get_response
      Src: /src/dovecot/src/lib-auth/auth-digest.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 8
    argNames:
    - hmethod
    - hash_a1
    - req_uri
    - qop
    - nonce
    - nc
    - cnonce
    - entity_body_hash
    argTypes:
    - struct hash_method*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 218
    functionDepth: 7
    functionLinenumber: 218
    functionLinenumberEnd: 232
    functionName: auth_digest_get_server_response
    functionSourceFile: /src/dovecot/src/lib-auth/auth-digest.c
    functionUses: 2
    functionsReached:
    - auth_digest_get_response
    - auth_digest_get_hash_a2
    linkageType: ''
    returnType: char
    signature: "char *\nauth_digest_get_server_response(const struct hash_method *hmethod,\n\t\t\t\tconst
      char *hash_a1, const char *req_uri,\n\t\t\t\tconst char *qop, const char *nonce,\n\t\t\t\tconst
      char *nc,\tconst char *cnonce,\n\t\t\t\tconst char *entity_body_hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypt
      Src: /src/dovecot/src/lib-auth/mycrypt.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - salt
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: mycrypt
    functionSourceFile: /src/dovecot/src/lib-auth/mycrypt.c
    functionUses: 5
    functionsReached:
    - crypt
    linkageType: ''
    returnType: char
    signature: char *mycrypt(const char *key, const char *salt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: auth_gs2_char_is_cb_name
    functionSourceFile: /src/dovecot/src/lib-auth/auth-gs2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_gs2_char_is_cb_name(unsigned char ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:37,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 11
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: _char_sanitize
    functionSourceFile: /src/dovecot/src/lib-auth/auth-gs2.c
    functionUses: 8
    functionsReached:
    - t_strdup_printf
    linkageType: ''
    returnType: char
    signature: char *_char_sanitize(unsigned char c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:57,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:59,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - char*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: auth_gs2_encode_username
    functionSourceFile: /src/dovecot/src/lib-auth/auth-gs2.c
    functionUses: 1
    functionsReached:
    - str_append
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void auth_gs2_encode_username(const char *in, buffer_t *out)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:71,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:85,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:92,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:97,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:101,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - in
    - in_size
    - out_r
    argTypes:
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 65
    functionDepth: 4
    functionLinenumber: 65
    functionLinenumberEnd: 103
    functionName: auth_gs2_decode_username
    functionSourceFile: /src/dovecot/src/lib-auth/auth-gs2.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    linkageType: ''
    returnType: int
    signature: "int auth_gs2_decode_username(const unsigned char *in, size_t in_size,\n\t\t\t
      \    const char **out_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:139,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:144,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:147,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:150,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:151,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:152,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:155,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:159,1
    - Dst: auth_gs2_encode_username
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:160,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:162,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - hdr
    - out
    argTypes:
    - struct auth_gs2_header*
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 163
    functionName: auth_gs2_header_encode
    functionSourceFile: /src/dovecot/src/lib-auth/auth-gs2.c
    functionUses: 2
    functionsReached:
    - str_append
    - auth_gs2_encode_username
    - i_assert
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void auth_gs2_header_encode(const struct auth_gs2_header *hdr, buffer_t
      *out)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:178,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:207,1
    - Dst: _char_sanitize
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:209,1
    - Dst: auth_gs2_char_is_cb_name
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:227,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:233,1
    - Dst: auth_gs2_decode_username
      Src: /src/dovecot/src/lib-auth/auth-gs2.c:257,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 87
    argCount: 6
    argNames:
    - data
    - size
    - expect_nonstd
    - hdr_r
    - hdr_end_r
    - error_r
    argTypes:
    - unsigned char*
    - size_t
    - bool
    - struct auth_gs2_header*
    - unsigned char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 165
    functionDepth: 12
    functionLinenumber: 165
    functionLinenumberEnd: 273
    functionName: auth_gs2_header_decode
    functionSourceFile: /src/dovecot/src/lib-auth/auth-gs2.c
    functionUses: 1
    functionsReached:
    - i_zero
    - t_strdup_printf
    - _char_sanitize
    - t_strdup_until
    - auth_gs2_decode_username
    - auth_gs2_char_is_cb_name
    linkageType: ''
    returnType: int
    signature: "int auth_gs2_header_decode(const unsigned char *data, size_t size,\n\t\t\t
      \  bool expect_nonstd, struct auth_gs2_header *hdr_r,\n\t\t\t   const unsigned
      char **hdr_end_r,\n\t\t\t   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - allow
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: password_schemes_allow_weak
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void password_schemes_allow_weak(bool allow)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: password_schemes_weak_allowed
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool password_schemes_weak_allowed(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: password_scheme_lookup_name
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - hash_table_lookup
    linkageType: ''
    returnType: struct password_scheme
    signature: 'struct password_scheme *

      password_scheme_lookup_name(const char *name)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-auth/password-scheme.c:55,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-auth/password-scheme.c:56,1
    - Dst: password_scheme_lookup_name
      Src: /src/dovecot/src/lib-auth/password-scheme.c:60,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth/password-scheme.c:66,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth/password-scheme.c:67,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth/password-scheme.c:69,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - name
    - encoding_r
    argTypes:
    - char*
    - enum password_encoding*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 48
    functionDepth: 7
    functionLinenumber: 48
    functionLinenumberEnd: 76
    functionName: password_scheme_lookup
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - strchr
    - password_scheme_lookup_name
    - t_strdup_until
    linkageType: ''
    returnType: struct password_scheme
    signature: 'struct password_scheme *

      password_scheme_lookup(const char *name, enum password_encoding *encoding_r)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: password_scheme_lookup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:89,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/password-scheme.c:96,1
    - Dst: struct password_scheme*::password_verify
      Src: /src/dovecot/src/lib-auth/password-scheme.c:103,1
    - Dst: struct password_scheme*::password_generate
      Src: /src/dovecot/src/lib-auth/password-scheme.c:108,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:111,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 6
    argNames:
    - plaintext
    - params
    - scheme
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - char*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 78
    functionDepth: 11
    functionLinenumber: 78
    functionLinenumberEnd: 117
    functionName: password_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 14
    functionsReached:
    - struct password_scheme*::password_verify
    - t_strdup_printf
    - mem_equals_timing_safe
    - struct password_scheme*::password_generate
    - password_scheme_lookup
    linkageType: ''
    returnType: int
    signature: "int password_verify(const char *plaintext,\n\t\t    const struct password_generate_params
      *params,\n\t\t    const char *scheme, const unsigned char *raw_password,\n\t\t
      \   size_t size, const char **error_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-auth/password-scheme.c:126,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-auth/password-scheme.c:128,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-auth/password-scheme.c:131,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-auth/password-scheme.c:133,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-auth/password-scheme.c:141,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-auth/password-scheme.c:145,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - password
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 119
    functionDepth: 7
    functionLinenumber: 119
    functionLinenumberEnd: 148
    functionName: password_get_scheme
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 11
    functionsReached:
    - str_begins
    - strchr
    - t_strdup_until
    linkageType: ''
    returnType: char
    signature: char *password_get_scheme(const char **password)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: password_scheme_lookup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:162,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:168,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-auth/password-scheme.c:170,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth/password-scheme.c:188,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-auth/password-scheme.c:189,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth/password-scheme.c:202,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib-auth/password-scheme.c:202,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-auth/password-scheme.c:203,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/password-scheme.c:214,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 5
    argNames:
    - password
    - scheme
    - raw_password_r
    - size_r
    - error_r
    argTypes:
    - char*
    - char*
    - unsigned char**
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 150
    functionDepth: 11
    functionLinenumber: 150
    functionLinenumberEnd: 220
    functionName: password_decode
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 4
    functionsReached:
    - strchr
    - MAX_BASE64_DECODED_SIZE
    - base64_decode
    - hex_to_binary
    - strlen
    - t_buffer_create
    - t_strdup_printf
    - password_scheme_lookup
    linkageType: ''
    returnType: int
    signature: "int password_decode(const char *password, const char *scheme,\n\t\t
      \   const unsigned char **raw_password_r, size_t *size_r,\n\t\t    const char
      **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: password_scheme_lookup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:229,1
    - Dst: struct password_scheme*::password_generate
      Src: /src/dovecot/src/lib-auth/password-scheme.c:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - plaintext
    - params
    - scheme
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - char*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 222
    functionDepth: 8
    functionLinenumber: 222
    functionLinenumberEnd: 235
    functionName: password_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 6
    functionsReached:
    - password_scheme_lookup
    - struct password_scheme*::password_generate
    linkageType: ''
    returnType: bool
    signature: "bool password_generate(const char *plaintext, const struct password_generate_params
      *params,\n\t\t       const char *scheme,\n\t\t       const unsigned char **raw_password_r,
      size_t *size_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: password_scheme_lookup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:246,1
    - Dst: struct password_scheme*::password_generate
      Src: /src/dovecot/src/lib-auth/password-scheme.c:250,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:253,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/password-scheme.c:256,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-auth/password-scheme.c:256,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth/password-scheme.c:257,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/password-scheme.c:258,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-auth/password-scheme.c:261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - plaintext
    - params
    - scheme
    - password_r
    argTypes:
    - char*
    - struct password_generate_params*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 237
    functionDepth: 9
    functionLinenumber: 237
    functionLinenumberEnd: 265
    functionName: password_generate_encoded
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - t_strndup
    - struct password_scheme*::password_generate
    - base64_encode
    - binary_to_hex
    - MAX_BASE64_ENCODED_SIZE
    - password_scheme_lookup
    linkageType: ''
    returnType: bool
    signature: "bool password_generate_encoded(const char *plaintext, const struct
      password_generate_params *params,\n\t\t\t       const char *scheme, const char
      **password_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:270,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-auth/password-scheme.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 267
    functionDepth: 5
    functionLinenumber: 267
    functionLinenumberEnd: 275
    functionName: password_generate_salt
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 3
    functionsReached:
    - i_rand_limit
    - t_malloc_no0
    linkageType: ''
    returnType: char
    signature: char *password_generate_salt(size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-auth/password-scheme.c:284,1
    - Dst: t_strcut
      Src: /src/dovecot/src/lib-auth/password-scheme.c:285,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth/password-scheme.c:287,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:290,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:291,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - scheme1
    - scheme2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 277
    functionDepth: 8
    functionLinenumber: 277
    functionLinenumberEnd: 296
    functionName: password_scheme_is_alias
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 1
    functionsReached:
    - hash_table_lookup
    - t_strcut
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool password_scheme_is_alias(const char *scheme1, const char *scheme2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:309,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-auth/password-scheme.c:310,1
    - Dst: password_decode
      Src: /src/dovecot/src/lib-auth/password-scheme.c:311,1
    - Dst: password_verify
      Src: /src/dovecot/src/lib-auth/password-scheme.c:316,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-auth/password-scheme.c:322,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - plain_password
    - crypted_password
    - params
    argTypes:
    - char*
    - char*
    - struct password_generate_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 298
    functionDepth: 12
    functionLinenumber: 298
    functionLinenumberEnd: 324
    functionName: password_scheme_detect
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - password_decode
    - password_verify
    linkageType: ''
    returnType: char
    signature: "char *\npassword_scheme_detect(const char *plain_password, const char
      *crypted_password,\n\t\t       const struct password_generate_params *params)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:334,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-auth/password-scheme.c:335,1
    - Dst: password_generate_md5_crypt
      Src: /src/dovecot/src/lib-auth/password-scheme.c:337,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:338,1
    - Dst: password_decode
      Src: /src/dovecot/src/lib-auth/password-scheme.c:339,1
    - Dst: password_verify
      Src: /src/dovecot/src/lib-auth/password-scheme.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - plaintext
    - params
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 326
    functionDepth: 12
    functionLinenumber: 326
    functionLinenumberEnd: 347
    functionName: md5_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - str_begins_with
    - password_generate_md5_crypt
    - str_equals_timing_almost_safe
    - t_strndup
    - password_decode
    - password_verify
    linkageType: ''
    returnType: int
    signature: "int md5_verify(const char *plaintext, const struct password_generate_params
      *params,\n\t   const unsigned char *raw_password, size_t size, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:356,1
    - Dst: password_generate_md5_crypt
      Src: /src/dovecot/src/lib-auth/password-scheme.c:357,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - ATTR_UNUSED
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 359
    functionName: md5_crypt_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - str_equals_timing_almost_safe
    - t_strndup
    - password_generate_md5_crypt
    linkageType: ''
    returnType: int
    signature: "int md5_crypt_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t const unsigned char *raw_password, size_t size,\n\t\t
      const char **error_r ATTR_UNUSED)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: password_generate_salt
      Src: /src/dovecot/src/lib-auth/password-scheme.c:368,1
    - Dst: password_generate_md5_crypt
      Src: /src/dovecot/src/lib-auth/password-scheme.c:370,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 361
    functionDepth: 6
    functionLinenumber: 361
    functionLinenumberEnd: 373
    functionName: md5_crypt_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - password_generate_salt
    - password_generate_md5_crypt
    linkageType: ''
    returnType: void
    signature: "void md5_crypt_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t   const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:381,1
    - Dst: sha1_get_digest
      Src: /src/dovecot/src/lib-auth/password-scheme.c:382,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 375
    functionDepth: 5
    functionLinenumber: 375
    functionLinenumberEnd: 386
    functionName: sha1_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - sha1_get_digest
    - t_malloc_no0
    linkageType: ''
    returnType: void
    signature: "void sha1_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t      const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:394,1
    - Dst: sha256_get_digest
      Src: /src/dovecot/src/lib-auth/password-scheme.c:395,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 388
    functionDepth: 5
    functionLinenumber: 388
    functionLinenumberEnd: 399
    functionName: sha256_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_malloc_no0
    - sha256_get_digest
    linkageType: ''
    returnType: void
    signature: "void sha256_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\tconst unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:407,1
    - Dst: sha512_get_digest
      Src: /src/dovecot/src/lib-auth/password-scheme.c:408,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 401
    functionDepth: 5
    functionLinenumber: 401
    functionLinenumberEnd: 412
    functionName: sha512_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - sha512_get_digest
    - t_malloc_no0
    linkageType: ''
    returnType: void
    signature: "void sha512_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\tconst unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:422,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/password-scheme.c:424,1
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:426,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:427,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:427,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:428,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-auth/password-scheme.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 414
    functionDepth: 5
    functionLinenumber: 414
    functionLinenumberEnd: 433
    functionName: ssha_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - random_fill
    - sha1_result
    - strlen
    - t_malloc_no0
    - sha1_init
    - sha1_loop
    linkageType: ''
    returnType: void
    signature: "void ssha_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t      const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sha1_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:448,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:449,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:449,1
    - Dst: sha1_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:450,1
    - Dst: sha1_result
      Src: /src/dovecot/src/lib-auth/password-scheme.c:451,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 435
    functionDepth: 3
    functionLinenumber: 435
    functionLinenumberEnd: 453
    functionName: ssha_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - sha1_result
    - strlen
    - mem_equals_timing_safe
    - sha1_init
    - sha1_loop
    linkageType: ''
    returnType: int
    signature: "int ssha_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t       const unsigned char *raw_password, size_t size,\n\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:463,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/password-scheme.c:465,1
    - Dst: sha256_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:467,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:468,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:468,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:469,1
    - Dst: sha256_result
      Src: /src/dovecot/src/lib-auth/password-scheme.c:470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 455
    functionDepth: 5
    functionLinenumber: 455
    functionLinenumberEnd: 474
    functionName: ssha256_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - sha256_loop
    - random_fill
    - sha256_result
    - strlen
    - sha256_init
    - t_malloc_no0
    linkageType: ''
    returnType: void
    signature: "void ssha256_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sha256_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:489,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:490,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:490,1
    - Dst: sha256_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:491,1
    - Dst: sha256_result
      Src: /src/dovecot/src/lib-auth/password-scheme.c:493,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 476
    functionDepth: 2
    functionLinenumber: 476
    functionLinenumberEnd: 496
    functionName: ssha256_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - sha256_loop
    - sha256_result
    - strlen
    - mem_equals_timing_safe
    - sha256_init
    linkageType: ''
    returnType: int
    signature: "int ssha256_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t\t  const unsigned char *raw_password, size_t size,\n\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:506,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/password-scheme.c:508,1
    - Dst: sha512_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:510,1
    - Dst: sha512_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:511,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:511,1
    - Dst: sha512_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:512,1
    - Dst: sha512_result
      Src: /src/dovecot/src/lib-auth/password-scheme.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 498
    functionDepth: 5
    functionLinenumber: 498
    functionLinenumberEnd: 517
    functionName: ssha512_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - random_fill
    - strlen
    - sha512_loop
    - t_malloc_no0
    - sha512_result
    - sha512_init
    linkageType: ''
    returnType: void
    signature: "void ssha512_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sha512_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:532,1
    - Dst: sha512_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:533,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:533,1
    - Dst: sha512_loop
      Src: /src/dovecot/src/lib-auth/password-scheme.c:534,1
    - Dst: sha512_result
      Src: /src/dovecot/src/lib-auth/password-scheme.c:536,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 519
    functionDepth: 2
    functionLinenumber: 519
    functionLinenumberEnd: 539
    functionName: ssha512_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - mem_equals_timing_safe
    - sha512_loop
    - sha512_result
    - sha512_init
    linkageType: ''
    returnType: int
    signature: "int ssha512_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t\t  const unsigned char *raw_password, size_t size,\n\t\t\t
      \ const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:549,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/password-scheme.c:551,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:553,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme.c:554,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:554,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme.c:555,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-auth/password-scheme.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 541
    functionDepth: 5
    functionLinenumber: 541
    functionLinenumberEnd: 560
    functionName: smd5_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - random_fill
    - md5_final
    - md5_update
    - strlen
    - md5_init
    - t_malloc_no0
    linkageType: ''
    returnType: void
    signature: "void smd5_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t      const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: md5_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:575,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme.c:576,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:576,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme.c:577,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-auth/password-scheme.c:578,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 580
    functionName: smd5_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - md5_final
    - md5_update
    - strlen
    - mem_equals_timing_safe
    - md5_init
    linkageType: ''
    returnType: int
    signature: "int smd5_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t       const unsigned char *raw_password, size_t size,\n\t\t
      \      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 588
    functionName: plain_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: "void plain_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t       const unsigned char **raw_password_r, size_t
      *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:595,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - ATTR_UNUSED
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 600
    functionName: plain_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - mem_equals_timing_safe
    linkageType: ''
    returnType: int
    signature: "int plain_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t     const unsigned char *raw_password, size_t size,\n\t
      \    const char **error_r ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:622,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:626,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme.c:629,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 630
    functionName: plain_trunc_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - mem_equals_timing_safe
    linkageType: ''
    returnType: int
    signature: "int plain_trunc_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t   const unsigned char *raw_password, size_t size,\n\t\t
      \  const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:639,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/password-scheme.c:640,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:641,1
    - Dst: hmac_md5_get_cram_context
      Src: /src/dovecot/src/lib-auth/password-scheme.c:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 632
    functionDepth: 5
    functionLinenumber: 632
    functionLinenumberEnd: 646
    functionName: cram_md5_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - hmac_md5_get_cram_context
    - t_malloc_no0
    - hmac_init
    linkageType: ''
    returnType: void
    signature: "void cram_md5_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t  const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth/password-scheme.c:657,1
    - Dst: strrchr
      Src: /src/dovecot/src/lib-auth/password-scheme.c:664,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-auth/password-scheme.c:666,1
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:673,1
    - Dst: auth_digest_get_hash_a1_secret
      Src: /src/dovecot/src/lib-auth/password-scheme.c:674,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - plaintext
    - params
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 648
    functionDepth: 7
    functionLinenumber: 648
    functionLinenumberEnd: 679
    functionName: digest_md5_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - auth_digest_get_hash_a1_secret
    - strrchr
    - i_fatal
    - t_strdup_until
    - t_malloc_no0
    linkageType: ''
    returnType: void
    signature: "void digest_md5_generate(const char *plaintext, const struct password_generate_params
      *params,\n\t\t    const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:687,1
    - Dst: md4_get_digest
      Src: /src/dovecot/src/lib-auth/password-scheme.c:688,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 681
    functionDepth: 5
    functionLinenumber: 681
    functionLinenumberEnd: 692
    functionName: plain_md4_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_malloc_no0
    - md4_get_digest
    linkageType: ''
    returnType: void
    signature: "void plain_md4_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t   const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc_no0
      Src: /src/dovecot/src/lib-auth/password-scheme.c:700,1
    - Dst: md5_get_digest
      Src: /src/dovecot/src/lib-auth/password-scheme.c:701,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 694
    functionDepth: 5
    functionLinenumber: 694
    functionLinenumberEnd: 705
    functionName: plain_md5_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - t_malloc_no0
    - md5_get_digest
    linkageType: ''
    returnType: void
    signature: "void plain_md5_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t   const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme.c:713,1
    - Dst: password_generate_otp
      Src: /src/dovecot/src/lib-auth/password-scheme.c:714,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-auth/password-scheme.c:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 707
    functionDepth: 3
    functionLinenumber: 707
    functionLinenumberEnd: 720
    functionName: otp_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    - password_generate_otp
    - t_strndup
    linkageType: ''
    returnType: int
    signature: "int otp_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\t      const unsigned char *raw_password, size_t size,\n\t\t
      \     const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: password_generate_otp
      Src: /src/dovecot/src/lib-auth/password-scheme.c:728,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/password-scheme.c:729,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme.c:731,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 722
    functionDepth: 1
    functionLinenumber: 722
    functionLinenumberEnd: 732
    functionName: otp_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - strlen
    - password_generate_otp
    - i_unreached
    linkageType: ''
    returnType: void
    signature: "void otp_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t     const unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: password_scheme_lookup_name
      Src: /src/dovecot/src/lib-auth/password-scheme.c:914,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-auth/password-scheme.c:915,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-auth/password-scheme.c:918,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - scheme
    argTypes:
    - struct password_scheme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 912
    functionDepth: 2
    functionLinenumber: 912
    functionLinenumberEnd: 919
    functionName: password_scheme_register
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 1
    functionsReached:
    - i_panic
    - hash_table_insert
    - password_scheme_lookup_name
    linkageType: ''
    returnType: void
    signature: void password_scheme_register(const struct password_scheme *scheme)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_try_remove
      Src: /src/dovecot/src/lib-auth/password-scheme.c:923,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-auth/password-scheme.c:924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - scheme
    argTypes:
    - struct password_scheme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 921
    functionDepth: 2
    functionLinenumber: 921
    functionLinenumberEnd: 925
    functionName: password_scheme_unregister
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 0
    functionsReached:
    - i_panic
    - hash_table_try_remove
    linkageType: ''
    returnType: void
    signature: void password_scheme_unregister(const struct password_scheme *scheme)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-auth/password-scheme.c:943,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/password-scheme.c:944,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/password-scheme.c:946,1
    - Dst: password_scheme_register
      Src: /src/dovecot/src/lib-auth/password-scheme.c:947,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 939
    functionDepth: 3
    functionLinenumber: 939
    functionLinenumberEnd: 948
    functionName: password_schemes_init
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 5
    functionsReached:
    - password_scheme_register
    - hash_table_create
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void password_schemes_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-auth/password-scheme.c:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 953
    functionName: password_schemes_deinit
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme.c
    functionUses: 6
    functionsReached:
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void password_schemes_deinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct auth_scram_server*::backend::set_username
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - server
    - username
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 31
    functionName: auth_scram_server_set_username
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - struct auth_scram_server*::backend::set_username
    linkageType: ''
    returnType: bool
    signature: "bool auth_scram_server_set_username(struct auth_scram_server *server,\n\t\t\t
      \      const char *username)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct auth_scram_server*::backend::set_login_username
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - server
    - username
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: auth_scram_server_set_login_username
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - struct auth_scram_server*::backend::set_login_username
    linkageType: ''
    returnType: bool
    signature: "bool auth_scram_server_set_login_username(struct auth_scram_server
      *server,\n\t\t\t\t     const char *username)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:43,1
    - Dst: struct auth_scram_server*::backend::start_channel_binding
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - server
    - type
    argTypes:
    - struct auth_scram_server*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: auth_scram_server_start_channel_binding
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - struct auth_scram_server*::backend::start_channel_binding
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void auth_scram_server_start_channel_binding(struct auth_scram_server
      *server,\n\t\t\t\t\tconst char *type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:51,1
    - Dst: struct auth_scram_server*::backend::accept_channel_binding
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - server
    - data_r
    argTypes:
    - struct auth_scram_server*
    - buffer_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: auth_scram_server_accept_channel_binding
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - i_assert
    - struct auth_scram_server*::backend::accept_channel_binding
    linkageType: ''
    returnType: int
    signature: "int auth_scram_server_accept_channel_binding(struct auth_scram_server
      *server,\n\t\t\t\t\t buffer_t **data_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:62,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:65,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:66,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:68,1
    - Dst: struct auth_scram_server*::backend::credentials_lookup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct auth_scram_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 70
    functionName: auth_scram_server_credentials_lookup
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - i_zero
    - struct auth_scram_server*::backend::credentials_lookup
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: int
    signature: int auth_scram_server_credentials_lookup(struct auth_scram_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_ref
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:76,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:78,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - server_r
    - pool
    - set
    - backend
    argTypes:
    - struct auth_scram_server*
    - pool_t
    - struct auth_scram_server_settings*
    - struct auth_scram_server_backend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 84
    functionName: auth_scram_server_init
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 3
    functionsReached:
    - i_zero
    - i_assert
    - pool_ref
    linkageType: ''
    returnType: void
    signature: "void auth_scram_server_init(struct auth_scram_server *server_r, pool_t
      pool,\n\t\t\t    const struct auth_scram_server_settings *set,\n\t\t\t    const
      struct auth_scram_server_backend *backend)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:88,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:90,1
    - Dst: auth_scram_key_data_clear
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:91,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct auth_scram_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: auth_scram_server_deinit
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 3
    functionsReached:
    - i_assert
    - auth_scram_key_data_clear
    - buffer_clear_safe
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void auth_scram_server_deinit(struct auth_scram_server *server)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: auth_gs2_header_decode
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:129,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:131,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:139,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:140,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:141,1
    - Dst: auth_scram_server_start_channel_binding
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:160,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:208,1
    - Dst: auth_gs2_decode_username
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:211,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:223,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:232,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:233,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 6
    argNames:
    - server
    - data
    - size
    - username_r
    - login_username_r
    - error_r
    argTypes:
    - struct auth_scram_server*
    - unsigned char*
    - size_t
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 95
    functionDepth: 13
    functionLinenumber: 95
    functionLinenumberEnd: 235
    functionName: auth_scram_parse_client_first
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_strndup
    - auth_gs2_header_decode
    - strlen
    - str_array_length
    - t_strdup_printf
    - t_strndup
    - auth_scram_server_start_channel_binding
    - t_strsplit
    - auth_gs2_decode_username
    linkageType: ''
    returnType: int
    signature: "int auth_scram_parse_client_first(struct auth_scram_server *server,\n\t\t\t
      \     const unsigned char *data, size_t size,\n\t\t\t      const char **username_r,\n\t\t\t
      \     const char **login_username_r,\n\t\t\t      const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:260,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:261,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:262,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:263,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:265,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:274,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:276,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:276,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:277,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:278,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:281,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct auth_scram_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 237
    functionDepth: 4
    functionLinenumber: 237
    functionLinenumberEnd: 284
    functionName: auth_scram_get_server_first
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - random_fill
    - p_strndup
    - str_printfa
    - p_strdup
    - strlen
    - i_assert
    linkageType: ''
    returnType: string_t
    signature: 'string_t *

      auth_scram_get_server_first(struct auth_scram_server *server)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:298,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:299,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:308,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:312,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:313,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:313,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:314,1
    - Dst: buffer_clear_safe
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:320,1
    - Dst: hash_method_get_digest
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:323,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:326,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:327,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct auth_scram_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 286
    functionDepth: 8
    functionLinenumber: 286
    functionLinenumberEnd: 331
    functionName: auth_scram_server_verify_credentials
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - hash_method_get_digest
    - hmac_update
    - strlen
    - hmac_final
    - buffer_clear_safe
    - mem_equals_timing_safe
    - hmac_init
    - i_assert
    - t_strconcat
    - safe_memset
    linkageType: ''
    returnType: bool
    signature: bool auth_scram_server_verify_credentials(struct auth_scram_server
      *server)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:353,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:353,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:354,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:371,1
    - Dst: auth_scram_server_accept_channel_binding
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:375,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:381,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:384,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:385,1
    - Dst: buffer_append_buf
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:386,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:390,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:390,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:391,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:392,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:394,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:394,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:404,1
    - Dst: str_equals_timing_almost_safe
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:405,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:413,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:415,1
    - Dst: MAX_BASE64_DECODED_SIZE
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:416,1
    - Dst: base64_decode
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:417,1
    - Dst: str_array_remove
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:431,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:433,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:433,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 4
    argNames:
    - server
    - data
    - size
    - error_r
    argTypes:
    - struct auth_scram_server*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 333
    functionDepth: 8
    functionLinenumber: 333
    functionLinenumberEnd: 436
    functionName: auth_scram_parse_client_final
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - str_c
    - p_strdup
    - strlen
    - buffer_create_dynamic
    - auth_scram_server_accept_channel_binding
    - MAX_BASE64_ENCODED_SIZE
    - buffer_append
    - t_str_new
    - t_strarray_join
    - MAX_BASE64_DECODED_SIZE
    - buffer_append_buf
    - str_equals_timing_almost_safe
    - t_strndup
    - base64_encode
    - str_array_remove
    - base64_decode
    - str_array_length
    - t_buffer_create
    - t_strsplit
    - str_append
    - t_strconcat
    linkageType: ''
    returnType: int
    signature: "int auth_scram_parse_client_final(struct auth_scram_server *server,\n\t\t\t
      \     const unsigned char *data, size_t size,\n\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:455,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:459,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:460,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:460,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:461,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:472,1
    - Dst: MAX_BASE64_ENCODED_SIZE
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:472,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:473,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct auth_scram_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 438
    functionDepth: 8
    functionLinenumber: 438
    functionLinenumberEnd: 477
    functionName: auth_scram_get_server_final
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - hmac_update
    - strlen
    - hmac_final
    - base64_encode
    - hmac_init
    - str_append
    - MAX_BASE64_ENCODED_SIZE
    - t_strconcat
    linkageType: ''
    returnType: string_t
    signature: 'string_t *

      auth_scram_get_server_final(struct auth_scram_server *server)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - size
    - error_r
    argTypes:
    - struct auth_scram_server*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 489
    functionName: auth_scram_parse_client_finish
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int auth_scram_parse_client_finish(struct auth_scram_server *server
      ATTR_UNUSED,\n\t\t\t       const unsigned char *data ATTR_UNUSED,\n\t\t\t       size_t
      size, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct auth_scram_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 494
    functionName: auth_scram_server_acces_granted
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool auth_scram_server_acces_granted(struct auth_scram_server *server)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_parse_client_first
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:509,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:518,1
    - Dst: auth_scram_server_set_username
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:519,1
    - Dst: auth_scram_server_set_login_username
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:525,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - server
    - input
    - input_len
    - error_code_r
    - error_r
    argTypes:
    - struct auth_scram_server*
    - unsigned char*
    - size_t
    - enum auth_scram_server_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 496
    functionDepth: 14
    functionLinenumber: 496
    functionLinenumberEnd: 532
    functionName: auth_scram_server_input_client_first
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - auth_scram_parse_client_first
    - auth_scram_server_set_login_username
    - i_assert
    - auth_scram_server_set_username
    linkageType: ''
    returnType: int
    signature: "int auth_scram_server_input_client_first(struct auth_scram_server
      *server,\n\t\t\t\t     const unsigned char *input,\n\t\t\t\t     size_t input_len,\n\t\t\t\t
      \    enum auth_scram_server_error *error_code_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_parse_client_final
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:544,1
    - Dst: auth_scram_server_verify_credentials
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:551,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - server
    - input
    - input_len
    - error_code_r
    - error_r
    argTypes:
    - struct auth_scram_server*
    - unsigned char*
    - size_t
    - enum auth_scram_server_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 534
    functionDepth: 9
    functionLinenumber: 534
    functionLinenumberEnd: 558
    functionName: auth_scram_server_input_client_final
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 0
    functionsReached:
    - auth_scram_server_verify_credentials
    - auth_scram_parse_client_final
    linkageType: ''
    returnType: int
    signature: "int auth_scram_server_input_client_final(struct auth_scram_server
      *server,\n\t\t\t\t     const unsigned char *input,\n\t\t\t\t     size_t input_len,\n\t\t\t\t
      \    enum auth_scram_server_error *error_code_r,\n\t\t\t\t     const char **error_r)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_server_input_client_first
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:577,1
    - Dst: auth_scram_server_credentials_lookup
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:587,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:600,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:605,1
    - Dst: auth_scram_server_input_client_final
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:608,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:618,1
    - Dst: auth_scram_parse_client_finish
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:621,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:631,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 5
    argNames:
    - server
    - input
    - input_len
    - error_code_r
    - error_r
    argTypes:
    - struct auth_scram_server*
    - unsigned char*
    - size_t
    - enum auth_scram_server_error*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 560
    functionDepth: 15
    functionLinenumber: 560
    functionLinenumberEnd: 635
    functionName: auth_scram_server_input
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 3
    functionsReached:
    - auth_scram_server_credentials_lookup
    - auth_scram_server_input_client_first
    - i_unreached
    - auth_scram_parse_client_finish
    - auth_scram_server_input_client_final
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int auth_scram_server_input(struct auth_scram_server *server,\n\t\t\t
      \   const unsigned char *input, size_t input_len,\n\t\t\t    enum auth_scram_server_error
      *error_code_r,\n\t\t\t    const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:652,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:654,1
    - Dst: auth_scram_get_server_first
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:659,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:660,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:661,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:665,1
    - Dst: auth_scram_get_server_final
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:668,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:669,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:670,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/auth-scram-server.c:677,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 3
    argNames:
    - server
    - output_r
    - output_len_r
    argTypes:
    - struct auth_scram_server*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 637
    functionDepth: 9
    functionLinenumber: 637
    functionLinenumberEnd: 681
    functionName: auth_scram_server_output
    functionSourceFile: /src/dovecot/src/lib-auth/auth-scram-server.c
    functionUses: 4
    functionsReached:
    - auth_scram_get_server_final
    - str_data
    - str_len
    - i_unreached
    - auth_scram_get_server_first
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool auth_scram_server_output(struct auth_scram_server *server,\n\t\t\t
      \     const unsigned char **output_r,\n\t\t\t      size_t *output_len_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: crypto_pwhash_argon2i_str
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:27,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:27,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:28,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:29,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:30,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - plaintext
    - params
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 9
    functionDepth: 2
    functionLinenumber: 9
    functionLinenumberEnd: 31
    functionName: generate_argon2i
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-sodium.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - strlen
    - crypto_pwhash_argon2i_str
    - t_strdup
    linkageType: ''
    returnType: void
    signature: "void generate_argon2i(const char *plaintext, const struct password_generate_params
      *params,\n\t\tconst unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:41,1
    - Dst: crypto_pwhash_argon2id_str
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:57,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:57,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:58,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:59,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:60,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - plaintext
    - params
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 61
    functionName: generate_argon2id
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-sodium.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strlen
    - i_fatal
    - crypto_pwhash_argon2id_str
    - t_strdup
    linkageType: ''
    returnType: void
    signature: "void generate_argon2id(const char *plaintext, const struct password_generate_params
      *params,\n\t\tconst unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:69,1
    - Dst: crypto_pwhash_str_verify
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:70,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - ATTR_UNUSED
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 73
    functionName: verify_argon2
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-sodium.c
    functionUses: 0
    functionsReached:
    - strlen
    - crypto_pwhash_str_verify
    - t_strndup
    linkageType: ''
    returnType: int
    signature: "int verify_argon2(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t      const unsigned char *raw_password, size_t size,\n\t
      \     const char **error_r ATTR_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sodium_init
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:104,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:105,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:106,1
    - Dst: password_scheme_register
      Src: /src/dovecot/src/lib-auth/password-scheme-sodium.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: password_scheme_register_sodium
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-sodium.c
    functionUses: 1
    functionsReached:
    - password_scheme_register
    - sodium_init
    - i_fatal
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void password_scheme_register_sodium(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:20,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:22,1
    - Dst: pkcs5_pbkdf
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:24,1
    - Dst: hash_method_lookup
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:24,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:25,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - plaintext
    - salt
    - rounds
    - key_r
    argTypes:
    - char*
    - char*
    - unsigned int
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 16
    functionDepth: 7
    functionLinenumber: 16
    functionLinenumberEnd: 28
    functionName: pbkdf_run
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c
    functionUses: 0
    functionsReached:
    - strlen
    - pkcs5_pbkdf
    - buffer_create_from_data
    - memset
    - hash_method_lookup
    linkageType: ''
    returnType: void
    signature: "void pbkdf_run(const char *plaintext, const char *salt,\n\t  unsigned
      int rounds, unsigned char key_r[PBKDF2_KEY_SIZE_SHA1])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:35,1
    - Dst: password_generate_salt
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:40,1
    - Dst: pbkdf_run
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:41,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:43,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:44,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:46,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 30
    functionDepth: 8
    functionLinenumber: 30
    functionLinenumberEnd: 48
    functionName: pbkdf2_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c
    functionUses: 0
    functionsReached:
    - pbkdf_run
    - t_str_new
    - str_printfa
    - password_generate_salt
    - str_data
    - str_len
    - binary_to_hex_append
    linkageType: ''
    returnType: void
    signature: "void pbkdf2_generate(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t\tconst unsigned char **raw_password_r, size_t *size_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:61,1
    - Dst: t_strsplit
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:66,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:66,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:68,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:69,1
    - Dst: buffer_create_from_data
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:73,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:74,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:75,1
    - Dst: pbkdf_run
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:80,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c:81,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 50
    functionDepth: 8
    functionLinenumber: 50
    functionLinenumberEnd: 82
    functionName: pbkdf2_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-pbkdf2.c
    functionUses: 0
    functionsReached:
    - pbkdf_run
    - hex_to_binary
    - strlen
    - str_array_length
    - t_strndup
    - mem_equals_timing_safe
    - t_strsplit
    - memcmp
    - buffer_create_from_data
    - str_to_uint
    linkageType: ''
    returnType: int
    signature: "int pbkdf2_verify(const char *plaintext, const struct password_generate_params
      *params ATTR_UNUSED,\n\t      const unsigned char *raw_password, size_t size,\n\t
      \     const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/auth-gssapi.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - oid1
    - oid2
    argTypes:
    - gss_OID_desc*
    - gss_OID_desc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: auth_gssapi_oid_equal
    functionSourceFile: /src/dovecot/src/lib-auth/auth-gssapi.c
    functionUses: 4
    functionsReached:
    - mem_equals_timing_safe
    linkageType: ''
    returnType: bool
    signature: bool auth_gssapi_oid_equal(const gss_OID_desc *oid1, const gss_OID_desc
      *oid2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - str
    - v
    - n
    argTypes:
    - string_t*
    - unsigned long
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: to64
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c
    functionUses: 0
    functionsReached:
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void to64(string_t *str, unsigned long v, int n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:57,1
    - Dst: strncmp
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:63,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:73,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:76,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:79,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:82,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:85,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:86,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:87,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:88,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:89,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:91,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:94,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:99,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:101,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:104,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:105,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:106,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:107,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:109,1
    - Dst: md5_init
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:117,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:119,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:121,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:124,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:127,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:130,1
    - Dst: md5_update
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:132,1
    - Dst: md5_final
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:133,1
    - Dst: to64
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:136,1
    - Dst: to64
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:137,1
    - Dst: to64
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:138,1
    - Dst: to64
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:139,1
    - Dst: to64
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:140,1
    - Dst: to64
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:141,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:144,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c:146,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 2
    argNames:
    - pw
    - salt
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 147
    functionName: password_generate_md5_crypt
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-md5crypt.c
    functionUses: 3
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - md5_final
    - md5_update
    - strlen
    - md5_init
    - str_append
    - strncmp
    - str_append_data
    - to64
    - safe_memset
    linkageType: ''
    returnType: char
    signature: char *password_generate_md5_crypt(const char *pw, const char *salt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:24,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:25,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:26,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - generated
    - detected
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 30
    functionName: schemes_are_known_non_alias
    functionSourceFile: /src/dovecot/src/lib-auth/test-password-scheme.c
    functionUses: 0
    functionsReached:
    - strcmp
    - N_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool schemes_are_known_non_alias(const char *generated, const char
      *detected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:44,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:46,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:46,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:46,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:47,1
    - Dst: password_decode
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:47,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:48,1
    - Dst: password_verify
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:48,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:50,1
    - Dst: password_generate_encoded
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:50,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:51,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:52,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:52,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:52,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:53,1
    - Dst: password_decode
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:53,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:54,1
    - Dst: password_verify
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:54,1
    - Dst: password_scheme_detect
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:56,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:58,1
    - Dst: password_scheme_is_alias
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:59,1
    - Dst: schemes_are_known_non_alias
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:60,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - scheme
    - crypted
    - plaintext
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 32
    functionDepth: 13
    functionLinenumber: 32
    functionLinenumberEnd: 63
    functionName: test_password_scheme
    functionSourceFile: /src/dovecot/src/lib-auth/test-password-scheme.c
    functionUses: 0
    functionsReached:
    - strcmp
    - password_get_scheme
    - password_scheme_is_alias
    - password_scheme_detect
    - t_strdup_printf
    - password_decode
    - test_end
    - test_assert
    - password_verify
    - password_generate_encoded
    - schemes_are_known_non_alias
    - test_begin
    linkageType: ''
    returnType: void
    signature: "void test_password_scheme(const char *scheme, const char *crypted,\n\t\t
      \    const char *plaintext)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:79,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:82,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:82,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:82,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:83,1
    - Dst: password_decode
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:84,1
    - Dst: password_verify
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:84,1
    - Dst: password_get_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:88,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:89,1
    - Dst: password_decode
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:92,1
    - Dst: password_verify
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:92,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 65
    functionDepth: 12
    functionLinenumber: 65
    functionLinenumberEnd: 95
    functionName: test_password_failures
    functionSourceFile: /src/dovecot/src/lib-auth/test-password-scheme.c
    functionUses: 0
    functionsReached:
    - strcmp
    - password_get_scheme
    - password_decode
    - test_end
    - test_assert
    - password_verify
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_password_failures(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:99,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:100,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:101,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:102,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:103,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:104,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:105,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:106,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:107,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:108,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:109,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:110,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:111,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:112,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:113,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:114,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:115,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:119,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:121,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:123,1
    - Dst: test_password_scheme
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 97
    functionDepth: 14
    functionLinenumber: 97
    functionLinenumberEnd: 127
    functionName: test_password_schemes
    functionSourceFile: /src/dovecot/src/lib-auth/test-password-scheme.c
    functionUses: 0
    functionsReached:
    - test_password_scheme
    linkageType: ''
    returnType: void
    signature: void test_password_schemes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: password_schemes_register_all
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:137,1
    - Dst: password_schemes_allow_weak
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:138,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-auth/test-password-scheme.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 130
    functionDepth: 7
    functionLinenumber: 130
    functionLinenumberEnd: 140
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-auth/test-password-scheme.c
    functionUses: 25
    functionsReached:
    - test_run
    - password_schemes_register_all
    - password_schemes_allow_weak
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:235,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:236,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:240,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:245,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:245,1
    - Dst: auth_gs2_header_decode
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:248,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:249,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:252,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:256,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:257,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:258,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:259,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:260,1
    - Dst: auth_gs2_header_encode
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:263,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:265,1
    - Dst: t_strndup
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:265,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:266,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:268,1
    - Dst: buffer_clear
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 229
    functionDepth: 13
    functionLinenumber: 229
    functionLinenumberEnd: 272
    functionName: test_gs2_header_valid
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-gs2.c
    functionUses: 0
    functionsReached:
    - str_c
    - test_out_reason
    - auth_gs2_header_decode
    - buffer_clear
    - strlen
    - t_strdup_printf
    - t_buffer_create
    - test_assert_strcmp
    - t_strndup
    - test_end
    - auth_gs2_header_encode
    - test_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_gs2_header_valid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:461,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:465,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:470,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:470,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:476,1
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:478,1
    - Dst: auth_gs2_header_decode
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:483,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:486,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 456
    functionDepth: 13
    functionLinenumber: 456
    functionLinenumberEnd: 490
    functionName: test_gs2_header_invalid
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-gs2.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - t_strdup_noconst
    - auth_gs2_header_decode
    - strlen
    - t_strdup_printf
    - test_end
    - i_assert
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_gs2_header_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-auth/test-auth-gs2.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 492
    functionDepth: 7
    functionLinenumber: 492
    functionLinenumberEnd: 500
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-auth/test-auth-gs2.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_credentials_parse
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:38,1
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:44,1
    - Dst: t_base64_decode_str
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:44,1
    - Dst: auth_scram_hi
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:47,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:48,1
    - Dst: hmac_init
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:52,1
    - Dst: hmac_update
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:53,1
    - Dst: hmac_final
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:54,1
    - Dst: hash_method_get_digest
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:57,1
    - Dst: mem_equals_timing_safe
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:59,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:62,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:63,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 6
    argNames:
    - hmethod
    - scheme_name
    - plaintext
    - raw_password
    - size
    - error_r
    argTypes:
    - struct hash_method*
    - char*
    - char*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 22
    functionDepth: 12
    functionLinenumber: 22
    functionLinenumberEnd: 67
    functionName: scram_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-scram.c
    functionUses: 0
    functionsReached:
    - hash_method_get_digest
    - hmac_update
    - strlen
    - buffer_get_data
    - auth_scram_credentials_parse
    - hmac_init
    - hmac_final
    - mem_equals_timing_safe
    - auth_scram_hi
    - t_base64_decode_str
    - safe_memset
    linkageType: ''
    returnType: int
    signature: "int scram_verify(const struct hash_method *hmethod, const char *scheme_name,\n\t\t
      const char *plaintext, const unsigned char *raw_password,\n\t\t size_t size,
      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_scram_generate_key_data
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:79,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:83,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:83,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:84,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:85,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:86,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:87,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:88,1
    - Dst: base64_encode
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:89,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:91,1
    - Dst: safe_memset
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:92,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:94,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 5
    argNames:
    - hmethod
    - plaintext
    - rounds
    - raw_password_r
    - size_r
    argTypes:
    - struct hash_method*
    - char*
    - unsigned int
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 69
    functionDepth: 6
    functionLinenumber: 69
    functionLinenumberEnd: 96
    functionName: scram_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-scram.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - str_len
    - strlen
    - base64_encode
    - str_append
    - auth_scram_generate_key_data
    - safe_memset
    linkageType: ''
    returnType: void
    signature: "void scram_generate(const struct hash_method *hmethod, const char
      *plaintext,\n\t\t    unsigned int rounds, const unsigned char **raw_password_r,\n\t\t
      \   size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: scram_verify
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 13
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: scram_sha1_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-scram.c
    functionUses: 0
    functionsReached:
    - scram_verify
    linkageType: ''
    returnType: int
    signature: "int scram_sha1_verify(const char *plaintext,\n\t\t      const struct
      password_generate_params *params ATTR_UNUSED,\n\t\t      const unsigned char
      *raw_password, size_t size,\n\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: scram_generate
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - plaintext
    - params
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 107
    functionDepth: 7
    functionLinenumber: 107
    functionLinenumberEnd: 113
    functionName: scram_sha1_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-scram.c
    functionUses: 0
    functionsReached:
    - scram_generate
    linkageType: ''
    returnType: void
    signature: "void scram_sha1_generate(const char *plaintext,\n\t\t\t const struct
      password_generate_params *params,\n                         const unsigned char
      **raw_password_r, size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: scram_verify
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - plaintext
    - ATTR_UNUSED
    - raw_password
    - size
    - error_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 115
    functionDepth: 13
    functionLinenumber: 115
    functionLinenumberEnd: 122
    functionName: scram_sha256_verify
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-scram.c
    functionUses: 0
    functionsReached:
    - scram_verify
    linkageType: ''
    returnType: int
    signature: "int scram_sha256_verify(const char *plaintext,\n\t\t\tconst struct
      password_generate_params *params ATTR_UNUSED,\n\t\t\tconst unsigned char *raw_password,
      size_t size,\n\t\t\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: scram_generate
      Src: /src/dovecot/src/lib-auth/password-scheme-scram.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - plaintext
    - params
    - raw_password_r
    - size_r
    argTypes:
    - char*
    - struct password_generate_params*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 124
    functionDepth: 7
    functionLinenumber: 124
    functionLinenumberEnd: 130
    functionName: scram_sha256_generate
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-scram.c
    functionUses: 0
    functionsReached:
    - scram_generate
    linkageType: ''
    returnType: void
    signature: "void scram_sha256_generate(const char *plaintext,\n\t\t\t   const
      struct password_generate_params *params,\n\t\t\t   const unsigned char **raw_password_r,
      size_t *size_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: __set_errno
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __set_errno(val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dst
    - ','
    - src
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 383
    functionName: BF_safe_atoi64
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BF_safe_atoi64(dst, src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BF_safe_atoi64
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:392,1
    - Dst: BF_safe_atoi64
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:393,1
    - Dst: BF_safe_atoi64
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:397,1
    - Dst: BF_safe_atoi64
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:401,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - dst
    - src
    - size
    argTypes:
    - BF_word*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 406
    functionName: BF_decode
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached:
    - BF_safe_atoi64
    linkageType: ''
    returnType: int
    signature: int BF_decode(BF_word *dst, const char *src, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - dst
    - src
    - size
    argTypes:
    - char*
    - BF_word*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 438
    functionName: BF_encode
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BF_encode(char *dst, const BF_word *src, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - x
    - count
    argTypes:
    - BF_word*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 453
    functionName: ATTR_UNSIGNED_WRAPS::BF_swap
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void ATTR_UNSIGNED_WRAPS

      BF_swap(BF_word *x, int count)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - L
    - ','
    - R
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 472
    functionName: BF_ROUND
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BF_ROUND(L, R, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 476
    functionName: BF_INDEX
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BF_INDEX(S, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - L
    - ','
    - R
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 493
    functionName: BF_ROUND
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BF_ROUND(L, R, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 537
    functionName: BF_body
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BF_body()
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - key
    - expanded
    - initial
    - flags
    argTypes:
    - char*
    - BF_key
    - BF_key
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 639
    functionName: ATTR_UNSIGNED_WRAPS::BF_set_key
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ATTR_UNSIGNED_WRAPS\nBF_set_key(const char *key, BF_key expanded,
      BF_key initial,\n    unsigned char flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: __set_errno
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:666,1
    - Dst: __set_errno
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:679,1
    - Dst: BF_decode
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:684,1
    - Dst: __set_errno
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:685,1
    - Dst: BF_swap
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:688,1
    - Dst: BF_set_key
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:690,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:693,1
    - Dst: BF_body
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:730,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:763,1
    - Dst: BF_swap
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:769,1
    - Dst: BF_encode
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:770,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 80
    argCount: 5
    argNames:
    - key
    - setting
    - output
    - size
    - min
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    - BF_word
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 774
    functionName: BF_crypt
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached:
    - memcpy
    - BF_encode
    - BF_set_key
    - BF_decode
    - __set_errno
    - BF_swap
    - BF_body
    linkageType: ''
    returnType: char
    signature: "char * ATTR_NO_SANITIZE_UNDEFINED ATTR_NO_SANITIZE_INTEGER\n\tATTR_NO_SANITIZE_IMPLICIT_CONVERSION\nBF_crypt(const
      char *key, const char *setting,\n\tchar *output, size_t size,\n\tBF_word min)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - setting
    - output
    - size
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 789
    functionName: crypt_output_magic
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int crypt_output_magic(const char *setting, char *output, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: crypt_output_magic
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:830,1
    - Dst: BF_crypt
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:831,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:841,1
    - Dst: memset
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:848,1
    - Dst: BF_crypt
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:850,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:853,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:854,1
    - Dst: BF_set_key
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:859,1
    - Dst: BF_set_key
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:860,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:863,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:864,1
    - Dst: __set_errno
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:867,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:871,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - key
    - setting
    - output
    - size
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 811
    functionDepth: 3
    functionLinenumber: 811
    functionLinenumberEnd: 872
    functionName: crypt_blowfish_rn
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 2
    functionsReached:
    - memcpy
    - crypt_output_magic
    - i_unreached
    - memset
    - memcmp
    - BF_set_key
    - __set_errno
    - BF_crypt
    linkageType: ''
    returnType: char
    signature: "char *crypt_blowfish_rn(const char *key, const char *setting,\n\tchar
      *output, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: __set_errno
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:882,1
    - Dst: BF_encode
      Src: /src/dovecot/src/lib-auth/crypt-blowfish.c:896,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 6
    argNames:
    - prefix
    - count
    - input
    - size
    - output
    - output_size
    argTypes:
    - char*
    - unsigned long
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 900
    functionName: crypt_gensalt_blowfish_rn
    functionSourceFile: /src/dovecot/src/lib-auth/crypt-blowfish.c
    functionUses: 1
    functionsReached:
    - BF_encode
    - __set_errno
    linkageType: ''
    returnType: char
    signature: "char *crypt_gensalt_blowfish_rn(const char *prefix, unsigned long
      count,\n\tconst char *input, size_t size, char *output, size_t output_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: otp_parse_dbentry
      Src: /src/dovecot/src/lib-auth/password-scheme-otp.c:21,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-auth/password-scheme-otp.c:28,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-auth/password-scheme-otp.c:29,1
    - Dst: i_strocpy
      Src: /src/dovecot/src/lib-auth/password-scheme-otp.c:30,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-auth/password-scheme-otp.c:31,1
    - Dst: otp_hash
      Src: /src/dovecot/src/lib-auth/password-scheme-otp.c:37,1
    - Dst: otp_print_dbentry
      Src: /src/dovecot/src/lib-auth/password-scheme-otp.c:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - pw
    - state_data
    - algo
    - result_r
    argTypes:
    - char*
    - char*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 15
    functionDepth: 6
    functionLinenumber: 15
    functionLinenumberEnd: 40
    functionName: password_generate_otp
    functionSourceFile: /src/dovecot/src/lib-auth/password-scheme-otp.c
    functionUses: 2
    functionsReached:
    - otp_parse_dbentry
    - random_fill
    - otp_print_dbentry
    - i_unreached
    - otp_hash
    - binary_to_hex
    - i_strocpy
    linkageType: ''
    returnType: int
    signature: "int password_generate_otp(const char *pw, const char *state_data,\n\t\t\t
      \ unsigned int algo, const char **result_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-login/login-server-auth.c:106,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-login/login-server-auth.c:107,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-login/login-server-auth.c:109,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib-login/login-server-auth.c:112,1
    - Dst: i_rand_limit
      Src: /src/dovecot/src/lib-login/login-server-auth.c:113,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-login/login-server-auth.c:115,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-login/login-server-auth.c:118,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-login/login-server-auth.c:119,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-login/login-server-auth.c:120,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-login/login-server-auth.c:123,1
    - Dst: login_server_auth_connect
      Src: /src/dovecot/src/lib-login/login-server-auth.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - auth_socket_path
    - request_auth_token
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 100
    functionDepth: 7
    functionLinenumber: 100
    functionLinenumberEnd: 129
    functionName: login_server_auth_init
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - connection_list_init
    - p_new
    - event_create
    - connection_init_client_unix
    - event_set_append_log_prefix
    - login_server_auth_connect
    - hash_table_create_direct
    - i_rand_limit
    - event_add_category
    linkageType: ''
    returnType: struct login_server_auth
    signature: 'struct login_server_auth *

      login_server_auth_init(const char *auth_socket_path, bool request_auth_token)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-login/login-server-auth.c:135,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server-auth.c:137,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-server-auth.c:138,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server-auth.c:140,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-server-auth.c:141,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server-auth.c:143,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-server-auth.c:144,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-login/login-server-auth.c:148,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-login/login-server-auth.c:150,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:151,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-login/login-server-auth.c:151,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-login/login-server-auth.c:152,1
    - Dst: struct login_server_auth_request*::callback
      Src: /src/dovecot/src/lib-login/login-server-auth.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - auth
    - request
    - log_reason
    - client_reason
    argTypes:
    - struct login_server_auth*
    - struct login_server_auth_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 131
    functionDepth: 4
    functionLinenumber: 131
    functionLinenumberEnd: 155
    functionName: request_failure
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 28
    functionsReached:
    - str_c
    - t_str_new
    - timeval_diff_msecs
    - str_printfa
    - e_error
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct login_server_auth_request*::callback
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void request_failure(struct login_server_auth *auth,\n\t\t\t    struct
      login_server_auth_request *request,\n\t\t\t    const char *log_reason, const
      char *client_reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: request_failure
      Src: /src/dovecot/src/lib-login/login-server-auth.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - auth
    - request
    - reason
    argTypes:
    - struct login_server_auth*
    - struct login_server_auth_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 5
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: request_internal_failure
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 11
    functionsReached:
    - request_failure
    linkageType: ''
    returnType: void
    signature: "void request_internal_failure(struct login_server_auth *auth,\n\t\t\t
      struct login_server_auth_request *request,\n\t\t\t const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_unref
      Src: /src/dovecot/src/lib-login/login-server-auth.c:171,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server-auth.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _request
    argTypes:
    - struct login_server_auth_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 165
    functionDepth: 4
    functionLinenumber: 165
    functionLinenumberEnd: 173
    functionName: request_free
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 18
    functionsReached:
    - i_free
    - event_unref
    linkageType: ''
    returnType: void
    signature: void request_free(struct login_server_auth_request **_request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_server_auth_fail
      Src: /src/dovecot/src/lib-login/login-server-auth.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct login_server_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 206
    functionName: login_server_auth_disconnect
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 1
    functionsReached:
    - login_server_auth_fail
    linkageType: ''
    returnType: void
    signature: void login_server_auth_disconnect(struct login_server_auth *auth)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server-auth.c:215,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-login/login-server-auth.c:219,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-login/login-server-auth.c:220,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-login/login-server-auth.c:221,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-login/login-server-auth.c:222,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-login/login-server-auth.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _auth
    argTypes:
    - struct login_server_auth**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 208
    functionDepth: 4
    functionLinenumber: 208
    functionLinenumberEnd: 224
    functionName: login_server_auth_unref
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - event_unref
    - hash_table_destroy
    - pool_unref
    - i_assert
    - connection_deinit
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void login_server_auth_unref(struct login_server_auth **_auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_server_auth_disconnect
      Src: /src/dovecot/src/lib-login/login-server-auth.c:232,1
    - Dst: login_server_auth_unref
      Src: /src/dovecot/src/lib-login/login-server-auth.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _auth
    argTypes:
    - struct login_server_auth**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 226
    functionDepth: 5
    functionLinenumber: 226
    functionLinenumberEnd: 234
    functionName: login_server_auth_deinit
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 1
    functionsReached:
    - login_server_auth_disconnect
    - login_server_auth_unref
    linkageType: ''
    returnType: void
    signature: void login_server_auth_deinit(struct login_server_auth **_auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - auth
    - msecs
    argTypes:
    - struct login_server_auth*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 240
    functionName: login_server_auth_set_timeout
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_set_timeout(struct login_server_auth *auth,\n\t\t\t\t
      \  unsigned int msecs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-login/login-server-auth.c:245,1
    - Dst: login_server_auth_fail
      Src: /src/dovecot/src/lib-login/login-server-auth.c:249,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:254,1
    - Dst: login_server_auth_fail
      Src: /src/dovecot/src/lib-login/login-server-auth.c:255,1
    - Dst: master_service_stop_new_connections
      Src: /src/dovecot/src/lib-login/login-server-auth.c:261,1
    - Dst: login_server_auth_fail
      Src: /src/dovecot/src/lib-login/login-server-auth.c:262,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 242
    functionDepth: 3
    functionLinenumber: 242
    functionLinenumberEnd: 264
    functionName: login_server_auth_destroy
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - e_error
    - container_of
    - master_service_stop_new_connections
    - login_server_auth_fail
    linkageType: ''
    returnType: void
    signature: void login_server_auth_destroy(struct connection *_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_add_msecs
      Src: /src/dovecot/src/lib-login/login-server-auth.c:272,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-server-auth.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct login_server_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 276
    functionName: auth_get_next_timeout_msecs
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - timeval_add_msecs
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int auth_get_next_timeout_msecs(struct login_server_auth *auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_get_next_timeout_msecs
      Src: /src/dovecot/src/lib-login/login-server-auth.c:284,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-login/login-server-auth.c:288,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-login/login-server-auth.c:290,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-server-auth.c:290,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-server-auth.c:292,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/login-server-auth.c:294,1
    - Dst: request_internal_failure
      Src: /src/dovecot/src/lib-login/login-server-auth.c:297,1
    - Dst: request_free
      Src: /src/dovecot/src/lib-login/login-server-auth.c:298,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-login/login-server-auth.c:300,1
    - Dst: login_server_auth_update_timeout
      Src: /src/dovecot/src/lib-login/login-server-auth.c:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct login_server_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 278
    functionDepth: 11
    functionLinenumber: 278
    functionLinenumberEnd: 302
    functionName: login_server_auth_timeout
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - timeval_diff_msecs
    - POINTER_CAST
    - request_free
    - hash_table_remove
    - auth_get_next_timeout_msecs
    - t_strdup_printf
    - DLLIST2_REMOVE
    - login_server_auth_update_timeout
    - request_internal_failure
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void login_server_auth_timeout(struct login_server_auth *auth)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server-auth.c:306,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-login/login-server-auth.c:309,1
    - Dst: auth_get_next_timeout_msecs
      Src: /src/dovecot/src/lib-login/login-server-auth.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct login_server_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 304
    functionDepth: 3
    functionLinenumber: 304
    functionLinenumberEnd: 312
    functionName: login_server_auth_update_timeout
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 1
    functionsReached:
    - timeout_add
    - i_assert
    - auth_get_next_timeout_msecs
    linkageType: ''
    returnType: void
    signature: void login_server_auth_update_timeout(struct login_server_auth *auth)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-login/login-server-auth.c:318,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-login/login-server-auth.c:322,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/login-server-auth.c:323,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-login/login-server-auth.c:325,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-login/login-server-auth.c:326,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:327,1
    - Dst: connection_verify_version
      Src: /src/dovecot/src/lib-login/login-server-auth.c:333,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/login-server-auth.c:339,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/lib-login/login-server-auth.c:340,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:341,1
    - Dst: login_server_auth_check_spids
      Src: /src/dovecot/src/lib-login/login-server-auth.c:346,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - _conn
    - line
    argTypes:
    - struct connection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 314
    functionDepth: 8
    functionLinenumber: 314
    functionLinenumberEnd: 348
    functionName: login_server_auth_handshake_line
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - login_server_auth_check_spids
    - container_of
    - str_to_pid
    - t_strsplit_tabescaped
    - e_error
    - str_to_uint
    - connection_verify_version
    linkageType: ''
    returnType: int
    signature: int login_server_auth_handshake_line(struct connection *_conn, const
      char *line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-login/login-server-auth.c:358,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-server-auth.c:358,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-login/login-server-auth.c:359,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-login/login-server-auth.c:362,1
    - Dst: login_server_auth_update_timeout
      Src: /src/dovecot/src/lib-login/login-server-auth.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - auth
    - request
    argTypes:
    - struct login_server_auth*
    - struct login_server_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 350
    functionDepth: 6
    functionLinenumber: 350
    functionLinenumberEnd: 365
    functionName: login_server_auth_request_remove
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - hash_table_remove
    - DLLIST2_REMOVE
    - login_server_auth_update_timeout
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_request_remove(struct login_server_auth *auth,\n\t\t\t\t
      struct login_server_auth_request *request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-login/login-server-auth.c:373,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-server-auth.c:373,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:375,1
    - Dst: login_server_auth_request_remove
      Src: /src/dovecot/src/lib-login/login-server-auth.c:379,1
    - Dst: struct login_server_auth_request*::callback
      Src: /src/dovecot/src/lib-login/login-server-auth.c:381,1
    - Dst: request_free
      Src: /src/dovecot/src/lib-login/login-server-auth.c:383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - auth
    - id
    argTypes:
    - struct login_server_auth*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 367
    functionDepth: 7
    functionLinenumber: 367
    functionLinenumberEnd: 387
    functionName: login_server_auth_lookup_request
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - POINTER_CAST
    - request_free
    - e_error
    - login_server_auth_request_remove
    - struct login_server_auth_request*::callback
    - hash_table_lookup
    linkageType: ''
    returnType: struct login_server_auth_request
    signature: "struct login_server_auth_request *\nlogin_server_auth_lookup_request(struct
      login_server_auth *auth,\n\t\t\t\t unsigned int id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: login_server_auth_lookup_request
      Src: /src/dovecot/src/lib-login/login-server-auth.c:396,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-login/login-server-auth.c:399,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-login/login-server-auth.c:402,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-login/login-server-auth.c:403,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-login/login-server-auth.c:403,1
    - Dst: struct login_server_auth_request*::callback
      Src: /src/dovecot/src/lib-login/login-server-auth.c:405,1
    - Dst: request_free
      Src: /src/dovecot/src/lib-login/login-server-auth.c:406,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - auth
    - id
    - args
    argTypes:
    - struct login_server_auth*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 389
    functionDepth: 8
    functionLinenumber: 389
    functionLinenumberEnd: 408
    functionName: login_server_auth_input_user
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - request_free
    - e_debug
    - login_server_auth_lookup_request
    - struct event_passthrough*::event
    - event_create_passthrough
    - struct login_server_auth_request*::callback
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_input_user(struct login_server_auth *auth,
      unsigned int id,\n\t\t\t     const char *const *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: login_server_auth_lookup_request
      Src: /src/dovecot/src/lib-login/login-server-auth.c:418,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/login-server-auth.c:420,1
    - Dst: request_internal_failure
      Src: /src/dovecot/src/lib-login/login-server-auth.c:423,1
    - Dst: request_free
      Src: /src/dovecot/src/lib-login/login-server-auth.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - auth
    - id
    - ATTR_UNUSED
    argTypes:
    - struct login_server_auth*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 410
    functionDepth: 11
    functionLinenumber: 410
    functionLinenumberEnd: 426
    functionName: login_server_auth_input_notfound
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - login_server_auth_lookup_request
    - request_internal_failure
    - t_strdup_printf
    - request_free
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_input_notfound(struct login_server_auth *auth,\n\t\t\t\t
      unsigned int id,\n\t\t\t\t const char *const *args ATTR_UNUSED)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-login/login-server-auth.c:438,1
    - Dst: login_server_auth_lookup_request
      Src: /src/dovecot/src/lib-login/login-server-auth.c:442,1
    - Dst: request_internal_failure
      Src: /src/dovecot/src/lib-login/login-server-auth.c:445,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/login-server-auth.c:448,1
    - Dst: request_failure
      Src: /src/dovecot/src/lib-login/login-server-auth.c:450,1
    - Dst: request_free
      Src: /src/dovecot/src/lib-login/login-server-auth.c:452,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - auth
    - id
    - args
    argTypes:
    - struct login_server_auth*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 428
    functionDepth: 11
    functionLinenumber: 428
    functionLinenumberEnd: 454
    functionName: login_server_auth_input_fail
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - request_free
    - str_begins
    - login_server_auth_lookup_request
    - t_strdup_printf
    - request_failure
    - request_internal_failure
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_input_fail(struct login_server_auth *auth,
      unsigned int id,\n\t\t\t     const char *const *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-login/login-server-auth.c:460,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/login-server-auth.c:463,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:464,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-login/login-server-auth.c:471,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:472,1
    - Dst: t_strarray_join
      Src: /src/dovecot/src/lib-login/login-server-auth.c:473,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/login-server-auth.c:478,1
    - Dst: login_server_auth_input_user
      Src: /src/dovecot/src/lib-login/login-server-auth.c:479,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/login-server-auth.c:480,1
    - Dst: login_server_auth_input_notfound
      Src: /src/dovecot/src/lib-login/login-server-auth.c:481,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/login-server-auth.c:482,1
    - Dst: login_server_auth_input_fail
      Src: /src/dovecot/src/lib-login/login-server-auth.c:483,1
    - Dst: login_server_auth_unref
      Src: /src/dovecot/src/lib-login/login-server-auth.c:484,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - _conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 456
    functionDepth: 12
    functionLinenumber: 456
    functionLinenumberEnd: 487
    functionName: login_server_auth_input_args
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - login_server_auth_input_user
    - login_server_auth_input_notfound
    - container_of
    - t_strarray_join
    - e_error
    - str_to_uint
    - login_server_auth_unref
    - login_server_auth_input_fail
    linkageType: ''
    returnType: int
    signature: int login_server_auth_input_args(struct connection *_conn, const char
      *const *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server-auth.c:492,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-login/login-server-auth.c:494,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:496,1
    - Dst: eacces_error_get
      Src: /src/dovecot/src/lib-login/login-server-auth.c:497,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server-auth.c:500,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-login/login-server-auth.c:505,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/login-server-auth.c:509,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/login-server-auth.c:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct login_server_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 489
    functionDepth: 11
    functionLinenumber: 489
    functionLinenumberEnd: 514
    functionName: login_server_auth_connect
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 1
    functionsReached:
    - connection_client_connect
    - t_strdup_printf
    - e_error
    - io_loop_time_refresh
    - eacces_error_get
    - o_stream_nsend_str
    - i_assert
    linkageType: ''
    returnType: int
    signature: int login_server_auth_connect(struct login_server_auth *auth)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: connection_handshake_received
      Src: /src/dovecot/src/lib-login/login-server-auth.c:521,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-login/login-server-auth.c:523,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - auth
    - req
    argTypes:
    - struct login_server_auth*
    - struct login_server_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 530
    functionName: auth_request_check_spid
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - e_warning
    - connection_handshake_received
    linkageType: ''
    returnType: bool
    signature: "bool auth_request_check_spid(struct login_server_auth *auth,\n\t\t\tstruct
      login_server_auth_request *req)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_check_spid
      Src: /src/dovecot/src/lib-login/login-server-auth.c:538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct login_server_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 541
    functionName: login_server_auth_check_spids
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 1
    functionsReached:
    - auth_request_check_spid
    linkageType: ''
    returnType: void
    signature: void login_server_auth_check_spids(struct login_server_auth *auth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_request_check_spid
      Src: /src/dovecot/src/lib-login/login-server-auth.c:549,1
    - Dst: login_server_auth_request_remove
      Src: /src/dovecot/src/lib-login/login-server-auth.c:550,1
    - Dst: struct login_server_auth_request*::callback
      Src: /src/dovecot/src/lib-login/login-server-auth.c:551,1
    - Dst: request_free
      Src: /src/dovecot/src/lib-login/login-server-auth.c:553,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-login/login-server-auth.c:557,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server-auth.c:558,1
    - Dst: binary_to_hex_append
      Src: /src/dovecot/src/lib-login/login-server-auth.c:560,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server-auth.c:561,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-login/login-server-auth.c:563,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-login/login-server-auth.c:564,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-login/login-server-auth.c:565,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-login/login-server-auth.c:565,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-login/login-server-auth.c:565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - auth
    - req
    argTypes:
    - struct login_server_auth*
    - struct login_server_auth_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 543
    functionDepth: 7
    functionLinenumber: 543
    functionLinenumberEnd: 566
    functionName: login_server_auth_send_request
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - str_printfa
    - request_free
    - str_append_c
    - str_data
    - str_len
    - binary_to_hex_append
    - struct login_server_auth_request*::callback
    - login_server_auth_request_remove
    - o_stream_nsend
    - str_append
    - auth_request_check_spid
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_send_request(struct login_server_auth *auth,\n\t\t\t
      \      struct login_server_auth_request *req)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: login_server_auth_connect
      Src: /src/dovecot/src/lib-login/login-server-auth.c:577,1
    - Dst: master_service_stop_new_connections
      Src: /src/dovecot/src/lib-login/login-server-auth.c:580,1
    - Dst: callback
      Src: /src/dovecot/src/lib-login/login-server-auth.c:581,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-login/login-server-auth.c:591,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-login/login-server-auth.c:592,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-login/login-server-auth.c:598,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server-auth.c:601,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-login/login-server-auth.c:601,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-server-auth.c:601,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-login/login-server-auth.c:602,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-server-auth.c:602,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-login/login-server-auth.c:603,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-login/login-server-auth.c:605,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-login/login-server-auth.c:606,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-login/login-server-auth.c:607,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/login-server-auth.c:608,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-login/login-server-auth.c:612,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-login/login-server-auth.c:614,1
    - Dst: event_add_ip
      Src: /src/dovecot/src/lib-login/login-server-auth.c:618,1
    - Dst: event_add_int
      Src: /src/dovecot/src/lib-login/login-server-auth.c:620,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-login/login-server-auth.c:625,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-login/login-server-auth.c:627,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-login/login-server-auth.c:627,1
    - Dst: login_server_auth_update_timeout
      Src: /src/dovecot/src/lib-login/login-server-auth.c:630,1
    - Dst: login_server_auth_send_request
      Src: /src/dovecot/src/lib-login/login-server-auth.c:632,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 4
    argNames:
    - auth
    - req
    - callback
    - context
    argTypes:
    - struct login_server_auth*
    - struct login_request*
    - login_server_auth_request_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 568
    functionDepth: 12
    functionLinenumber: 568
    functionLinenumberEnd: 633
    functionName: login_server_auth_request
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 1
    functionsReached:
    - master_service_stop_new_connections
    - event_add_ip
    - t_strdup_printf
    - event_create_passthrough
    - callback
    - event_add_int
    - memcpy
    - POINTER_CAST
    - event_set_append_log_prefix
    - io_loop_time_refresh
    - hash_table_insert
    - login_server_auth_connect
    - event_create
    - DLLIST2_APPEND
    - struct event_passthrough*::event
    - login_server_auth_update_timeout
    - i_assert
    - hash_table_lookup
    - e_debug
    - login_server_auth_send_request
    - i_new
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_request(struct login_server_auth *auth,\n\t\t\t
      \      const struct login_request *req,\n\t\t\t       login_server_auth_request_callback_t
      *callback,\n\t\t\t       void *context)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_count
      Src: /src/dovecot/src/lib-login/login-server-auth.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - auth
    argTypes:
    - struct login_server_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 638
    functionName: login_server_auth_request_count
    functionSourceFile: /src/dovecot/src/lib-login/login-server-auth.c
    functionUses: 0
    functionsReached:
    - hash_table_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int login_server_auth_request_count(struct login_server_auth
      *auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:93,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: test_server_connection_refused
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - i_sleep_intr_secs
    linkageType: ''
    returnType: void
    signature: void test_server_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:104,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:105,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:106,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 110
    functionName: test_client_connection_refused
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - strstr
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:116,1
    - Dst: test_expect_error_string_n_times
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:117,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:118,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 114
    functionDepth: 3
    functionLinenumber: 114
    functionLinenumberEnd: 121
    functionName: test_connection_refused
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_expect_error_string_n_times
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_connection_refused(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:131,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: test_connection_timed_out_input
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - i_sleep_intr_secs
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: test_server_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:149,1
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:152,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:153,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:154,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:155,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:157,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 160
    functionName: test_client_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - io_loop_time_refresh
    - test_assert
    - strstr
    linkageType: ''
    returnType: bool
    signature: bool test_client_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:166,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:167,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:168,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 171
    functionName: test_connection_timed_out
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    - test_expect_error_string
    linkageType: ''
    returnType: void
    signature: void test_connection_timed_out(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: test_bad_version_input
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_bad_version_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:186,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: test_bad_version_init
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_bad_version_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: test_server_bad_version
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_bad_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:204,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:205,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:206,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 210
    functionName: test_client_bad_version
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - strstr
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_bad_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:216,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:217,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:218,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 3
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: test_bad_version
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_expect_errors
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_bad_version(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:233,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:236,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 229
    functionDepth: 5
    functionLinenumber: 229
    functionLinenumberEnd: 240
    functionName: test_disconnect_version_input
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:244,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 242
    functionDepth: 3
    functionLinenumber: 242
    functionLinenumberEnd: 246
    functionName: test_disconnect_version_init
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 253
    functionName: test_server_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_disconnect_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:262,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:263,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:264,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 268
    functionName: test_client_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - strstr
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_disconnect_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:274,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:275,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:276,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 279
    functionName: test_disconnect_version
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    - test_expect_error_string
    linkageType: ''
    returnType: void
    signature: void test_disconnect_version(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:291,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:294,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 5
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: test_changed_spid_input
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    - i_stream_read_next_line
    linkageType: ''
    returnType: void
    signature: void test_changed_spid_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:302,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 300
    functionDepth: 3
    functionLinenumber: 300
    functionLinenumberEnd: 304
    functionName: test_changed_spid_init
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_changed_spid_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 311
    functionName: test_server_changed_spid
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_changed_spid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:320,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:321,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:322,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 326
    functionName: test_client_changed_spid
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - strstr
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_changed_spid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:332,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:333,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:334,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 330
    functionDepth: 3
    functionLinenumber: 330
    functionLinenumberEnd: 337
    functionName: test_changed_spid
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_expect_errors
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_changed_spid(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:366,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:369,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:375,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:376,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:377,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:383,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:384,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:385,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:387,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:388,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:389,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:393,1
    - Dst: i_sleep_intr_secs
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:395,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:396,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:399,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:402,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:406,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:407,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:410,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 356
    functionDepth: 11
    functionLinenumber: 356
    functionLinenumberEnd: 412
    functionName: test_request_fail_input
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_error
    - i_sleep_intr_secs
    - str_to_pid
    - t_strsplit_tabescaped
    - i_unreached
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_request_fail_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:418,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:421,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 414
    functionDepth: 3
    functionLinenumber: 414
    functionLinenumberEnd: 423
    functionName: test_request_fail_init
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_request_fail_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 430
    functionName: test_server_request_fail
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_request_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:439,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:440,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:441,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 445
    functionName: test_client_request_fail
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out
    - test_client_request_simple
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:452,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:453,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:454,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 447
    functionDepth: 2
    functionLinenumber: 447
    functionLinenumberEnd: 458
    functionName: test_client_request_notfound
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - strstr
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_notfound(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:465,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:466,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:467,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 471
    functionName: test_client_request_timeout
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - strstr
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:478,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:480,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 484
    functionName: test_client_request_disconnect
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - strstr
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_disconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:491,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:492,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:493,1
    - Dst: strstr
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 497
    functionName: test_client_request_reconnect
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    - strstr
    - test_assert
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_reconnect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:503,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:504,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:505,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:507,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:509,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:510,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:511,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:513,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:515,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:516,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:517,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:519,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:521,1
    - Dst: test_expect_error_string
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:522,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:523,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:525,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:527,1
    - Dst: test_expect_errors
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:528,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:529,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 501
    functionDepth: 3
    functionLinenumber: 501
    functionLinenumberEnd: 532
    functionName: test_request_fail
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_expect_errors
    - test_expect_error_string
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_request_fail(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_read_next_line
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:559,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:562,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:567,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:568,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:569,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:575,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:576,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:577,1
    - Dst: str_to_pid
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:579,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:580,1
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:581,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:584,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:585,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:588,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 549
    functionDepth: 11
    functionLinenumber: 549
    functionLinenumberEnd: 590
    functionName: test_request_login_input
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_begins_with
    - i_error
    - str_to_pid
    - t_strsplit_tabescaped
    - i_unreached
    - t_strdup_printf
    - i_stream_read_next_line
    - server_connection_deinit
    - str_to_uint
    - o_stream_nsend_str
    linkageType: ''
    returnType: void
    signature: void test_request_login_input(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:596,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:599,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 601
    functionName: test_request_login_init
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - o_stream_nsend_str
    - p_new
    linkageType: ''
    returnType: void
    signature: void test_request_login_init(struct server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 608
    functionName: test_server_request_login
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_server_run
    linkageType: ''
    returnType: void
    signature: void test_server_request_login(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_simple
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:617,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 612
    functionDepth: 2
    functionLinenumber: 612
    functionLinenumberEnd: 621
    functionName: test_client_request_login
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_simple
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_login(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_parallel
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:628,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 623
    functionDepth: 2
    functionLinenumber: 623
    functionLinenumberEnd: 632
    functionName: test_client_request_login_parallel
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_out
    - test_client_request_parallel
    linkageType: ''
    returnType: bool
    signature: bool test_client_request_login_parallel(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:638,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:639,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:641,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:643,1
    - Dst: test_run_client_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:644,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 636
    functionDepth: 3
    functionLinenumber: 636
    functionLinenumberEnd: 647
    functionName: test_request_login
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_end
    - test_run_client_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_request_login(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 668
    functionDepth: 0
    functionLinenumber: 668
    functionLinenumberEnd: 670
    functionName: test_client_deinit
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_client_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:688,1
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:693,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - errormsg
    - context
    argTypes:
    - char**
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 681
    functionDepth: 2
    functionLinenumber: 681
    functionLinenumberEnd: 694
    functionName: test_client_request_callback
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - i_strdup
    - io_loop_stop
    linkageType: ''
    returnType: void
    signature: "void test_client_request_callback(const char *const *auth_args ATTR_UNUSED,\n\t\t\t
      \    const char *errormsg, void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:704,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:706,1
    - Dst: login_server_auth_set_timeout
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:709,1
    - Dst: login_server_auth_request
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:713,1
    - Dst: io_loop_is_running
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:718,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:719,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:721,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:722,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - auth
    - ioloop
    - login_req
    - concurrency
    - error_r
    argTypes:
    - struct login_server_auth*
    - struct ioloop*
    - struct login_request*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 696
    functionDepth: 13
    functionLinenumber: 696
    functionLinenumberEnd: 725
    functionName: test_client_request_run
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - i_zero
    - login_server_auth_request
    - login_server_auth_set_timeout
    - io_loop_is_running
    - io_loop_set_running
    - t_strdup
    - i_free
    - io_loop_run
    linkageType: ''
    returnType: int
    signature: "int test_client_request_run(struct login_server_auth *auth, struct
      ioloop *ioloop,\n\t\t\tstruct login_request *login_req,\n\t\t\tunsigned int
      concurrency, const char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:736,1
    - Dst: random_fill
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:741,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:742,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:744,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:748,1
    - Dst: login_server_auth_init
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:750,1
    - Dst: test_client_request_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:751,1
    - Dst: test_client_request_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:754,1
    - Dst: login_server_auth_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:757,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:759,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 4
    argNames:
    - client_pid
    - concurrency
    - retry
    - error_r
    argTypes:
    - pid_t
    - unsigned int
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 727
    functionDepth: 14
    functionLinenumber: 727
    functionLinenumberEnd: 762
    functionName: test_client_request_parallel
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 1
    functionsReached:
    - i_zero
    - random_fill
    - net_addr2ip
    - test_client_request_run
    - io_loop_destroy
    - io_loop_create
    - login_server_auth_deinit
    - login_server_auth_init
    linkageType: ''
    returnType: int
    signature: "int test_client_request_parallel(pid_t client_pid, unsigned int concurrency,\n\t\t\t
      \    bool retry, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_client_request_parallel
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client_pid
    - retry
    - error_r
    argTypes:
    - pid_t
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 764
    functionDepth: 15
    functionLinenumber: 764
    functionLinenumberEnd: 768
    functionName: test_client_request_simple
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 11
    functionsReached:
    - test_client_request_parallel
    linkageType: ''
    returnType: int
    signature: int test_client_request_simple(pid_t client_pid, bool retry, const
      char **error_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_server_input
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 781
    functionName: server_connection_input
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - test_server_input
    linkageType: ''
    returnType: void
    signature: void server_connection_input(struct connection *_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:788,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:790,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:791,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:794,1
    - Dst: test_server_init
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:798,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 783
    functionDepth: 6
    functionLinenumber: 783
    functionLinenumberEnd: 799
    functionName: server_connection_init
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 6
    functionsReached:
    - test_server_init
    - pool_alloconly_create
    - p_new
    - connection_init_server
    - net_set_nonblock
    linkageType: ''
    returnType: void
    signature: void server_connection_init(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_server_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:808,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:810,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:811,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 801
    functionDepth: 4
    functionLinenumber: 801
    functionLinenumberEnd: 812
    functionName: server_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 86
    functionsReached:
    - connection_deinit
    - test_server_deinit
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void server_connection_deinit(struct server_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_connection_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 814
    functionDepth: 0
    functionLinenumber: 814
    functionLinenumberEnd: 820
    functionName: server_connection_destroy
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - server_connection_deinit
    linkageType: ''
    returnType: void
    signature: void server_connection_destroy(struct connection *_conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: net_accept
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:827,1
    - Dst: NET_ACCEPT_ENOCONN
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:829,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:830,1
    - Dst: server_connection_init
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:834,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 822
    functionDepth: 3
    functionLinenumber: 822
    functionLinenumberEnd: 835
    functionName: server_connection_accept
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - i_fatal
    - NET_ACCEPT_ENOCONN
    - server_connection_init
    - net_accept
    linkageType: ''
    returnType: void
    signature: void server_connection_accept(void *context ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_add
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:853,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:856,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:859,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:862,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 850
    functionDepth: 5
    functionLinenumber: 850
    functionLinenumberEnd: 865
    functionName: test_server_run
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 112
    functionsReached:
    - connection_list_init
    - io_add
    - io_remove
    - io_loop_run
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void test_server_run(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:874,1
    - Dst: net_listen_unix
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:875,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:877,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:879,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 871
    functionDepth: 2
    functionLinenumber: 871
    functionLinenumberEnd: 881
    functionName: test_open_server_fd
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 11
    functionsReached:
    - i_debug
    - i_fatal
    - net_listen_unix
    - i_unlink_if_exists
    linkageType: ''
    returnType: int
    signature: int test_open_server_fd(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:885,1
    - Dst: master_service_deinit_forked
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:886,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:888,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:891,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:893,1
    - Dst: server_test
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:894,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:895,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:898,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - server_test
    argTypes:
    - test_server_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 883
    functionDepth: 12
    functionLinenumber: 883
    functionLinenumberEnd: 902
    functionName: test_run_server
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 2
    functionsReached:
    - server_test
    - i_close_fd
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - main_deinit
    - i_debug
    - master_service_deinit_forked
    linkageType: ''
    returnType: int
    signature: int test_run_server(test_server_init_t *server_test)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:906,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:909,1
    - Dst: i_sleep_intr_msecs
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:911,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:913,1
    - Dst: client_test
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:914,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:915,1
    - Dst: test_client_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:916,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:917,1
    - Dst: i_debug
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:920,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - client_test
    argTypes:
    - test_client_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 904
    functionDepth: 12
    functionLinenumber: 904
    functionLinenumberEnd: 921
    functionName: test_run_client
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 9
    functionsReached:
    - test_client_deinit
    - io_loop_destroy
    - io_loop_create
    - i_set_failure_prefix
    - client_test
    - i_debug
    - io_loop_run
    - i_sleep_intr_msecs
    linkageType: ''
    returnType: void
    signature: void test_run_client(test_client_init_t *client_test)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_open_server_fd
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:929,1
    - Dst: test_subprocess_fork
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:930,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:931,1
    - Dst: test_run_client
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:935,1
    - Dst: i_unset_failure_prefix
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:937,1
    - Dst: test_subprocess_kill_all
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - client_test
    - server_test
    argTypes:
    - test_client_init_t*
    - test_server_init_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 923
    functionDepth: 4
    functionLinenumber: 923
    functionLinenumberEnd: 939
    functionName: test_run_client_server
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 137
    functionsReached:
    - test_subprocess_fork
    - i_close_fd
    - test_subprocess_kill_all
    - test_open_server_fd
    - test_run_client
    - i_unset_failure_prefix
    linkageType: ''
    returnType: void
    signature: "void test_run_client_server(test_client_init_t *client_test,\n\t\t
      \      test_server_init_t *server_test)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 945
    functionDepth: 0
    functionLinenumber: 945
    functionLinenumberEnd: 948
    functionName: main_cleanup
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 0
    functionsReached:
    - i_unlink_if_exists
    linkageType: ''
    returnType: void
    signature: void main_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 953
    functionName: main_init
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 958
    functionName: main_deinit
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void main_deinit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: master_service_init
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:969,1
    - Dst: main_init
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:971,1
    - Dst: master_getopt
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:973,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:979,1
    - Dst: master_service_init_finish
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:983,1
    - Dst: test_init
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:985,1
    - Dst: event_set_forced_debug
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:986,1
    - Dst: test_set_cleanup_callback
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:987,1
    - Dst: test_subprocesses_init
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:988,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:990,1
    - Dst: main_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:992,1
    - Dst: master_service_deinit
      Src: /src/dovecot/src/lib-login/test-login-server-auth.c:993,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 960
    functionDepth: 7
    functionLinenumber: 960
    functionLinenumberEnd: 996
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-login/test-login-server-auth.c
    functionUses: 25
    functionsReached:
    - main_init
    - event_set_forced_debug
    - test_set_cleanup_callback
    - i_fatal
    - test_run
    - main_deinit
    - master_service_deinit
    - master_service_init_finish
    - test_subprocesses_init
    - master_getopt
    - master_service_init
    - test_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: login_server_conn_is_closed
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: login_server_conn_is_closed(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - conn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: login_server_conn_has_requests
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: login_server_conn_has_requests(conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: login_server_stop
      Src: /src/dovecot/src/lib-login/login-server.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: login_server_stop_new_connections
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - login_server_stop
    linkageType: ''
    returnType: void
    signature: void login_server_stop_new_connections(void *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: process_title_set
      Src: /src/dovecot/src/lib-login/login-server.c:69,1
    - Dst: process_title_set
      Src: /src/dovecot/src/lib-login/login-server.c:71,1
    - Dst: process_title_set
      Src: /src/dovecot/src/lib-login/login-server.c:73,1
    - Dst: process_title_set
      Src: /src/dovecot/src/lib-login/login-server.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct login_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 60
    functionDepth: 9
    functionLinenumber: 60
    functionLinenumberEnd: 76
    functionName: login_server_proctitle_refresh
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - process_title_set
    linkageType: ''
    returnType: void
    signature: void login_server_proctitle_refresh(struct login_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:84,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-login/login-server.c:87,1
    - Dst: login_server_auth_init
      Src: /src/dovecot/src/lib-login/login-server.c:91,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-login/login-server.c:93,1
    - Dst: master_service_add_stop_new_connections_callback
      Src: /src/dovecot/src/lib-login/login-server.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - service
    - set
    argTypes:
    - struct master_service*
    - struct login_server_settings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 78
    functionDepth: 8
    functionLinenumber: 78
    functionLinenumberEnd: 100
    functionName: login_server_init
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 4
    functionsReached:
    - i_strdup
    - login_server_auth_init
    - master_service_add_stop_new_connections_callback
    - i_new
    - i_assert
    linkageType: ''
    returnType: struct login_server
    signature: "struct login_server *\nlogin_server_init(struct master_service *service,\n\t\t
      \ const struct login_server_settings *set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: master_service_remove_stop_new_connections_callback
      Src: /src/dovecot/src/lib-login/login-server.c:109,1
    - Dst: login_server_auth_deinit
      Src: /src/dovecot/src/lib-login/login-server.c:112,1
    - Dst: login_server_conn_is_closed
      Src: /src/dovecot/src/lib-login/login-server.c:115,1
    - Dst: login_server_conn_close
      Src: /src/dovecot/src/lib-login/login-server.c:116,1
    - Dst: login_server_conn_unref
      Src: /src/dovecot/src/lib-login/login-server.c:117,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:121,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server.c:124,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - _server
    argTypes:
    - struct login_server**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 102
    functionDepth: 6
    functionLinenumber: 102
    functionLinenumberEnd: 126
    functionName: login_server_deinit
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - login_server_conn_is_closed
    - login_server_auth_deinit
    - login_server_conn_close
    - login_server_conn_unref
    - master_service_remove_stop_new_connections_callback
    - i_assert
    - i_free
    linkageType: ''
    returnType: void
    signature: void login_server_deinit(struct login_server **_server)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-login/login-server.c:133,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server.c:134,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-server.c:135,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-login/login-server.c:139,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server.c:141,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server.c:142,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-server.c:143,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server.c:145,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-login/login-server.c:148,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server.c:155,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-server.c:157,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-login/login-server.c:161,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-login/login-server.c:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - conn
    - ATTR_UNUSED
    - message
    argTypes:
    - struct login_server_connection*
    - enum log_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 128
    functionDepth: 6
    functionLinenumber: 128
    functionLinenumberEnd: 163
    functionName: login_server_event_log_callback
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - timeval_diff_msecs
    - str_printfa
    - net_ip2addr
    - str_append
    linkageType: ''
    returnType: char
    signature: "char *\nlogin_server_event_log_callback(struct login_server_connection
      *conn,\n\t\t\t        enum log_type log_type ATTR_UNUSED,\n\t\t\t        const
      char *message)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: fd_read
      Src: /src/dovecot/src/lib-login/login-server.c:176,1
    - Dst: login_server_conn_has_requests
      Src: /src/dovecot/src/lib-login/login-server.c:180,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:181,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:185,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:191,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:198,1
    - Dst: read
      Src: /src/dovecot/src/lib-login/login-server.c:202,1
    - Dst: login_server_conn_has_requests
      Src: /src/dovecot/src/lib-login/login-server.c:206,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:207,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:213,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:216,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:223,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-login/login-server.c:227,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:228,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:232,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-login/login-server.c:233,1
    - Dst: dec2str
      Src: /src/dovecot/src/lib-login/login-server.c:233,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 4
    argNames:
    - conn
    - req_r
    - data
    - client_fd_r
    argTypes:
    - struct login_server_connection*
    - struct login_request*
    - unsigned char[]
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 165
    functionDepth: 6
    functionLinenumber: 165
    functionLinenumberEnd: 237
    functionName: login_server_conn_read_request
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - dec2str
    - read
    - fd_read
    - e_error
    - fstat
    - login_server_conn_has_requests
    linkageType: ''
    returnType: int
    signature: "int login_server_conn_read_request(struct login_server_connection
      *conn,\n\t\t\t       struct login_request *req_r,\n\t\t\t       unsigned char
      data[LOGIN_REQUEST_MAX_DATA_SIZE],\n\t\t\t       int *client_fd_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/login-server.c:245,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-login/login-server.c:248,1
    - Dst: login_server_conn_is_closed
      Src: /src/dovecot/src/lib-login/login-server.c:253,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:254,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-login/login-server.c:257,1
    - Dst: login_server_conn_unref
      Src: /src/dovecot/src/lib-login/login-server.c:258,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server.c:259,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - _request
    argTypes:
    - struct login_server_request**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 261
    functionName: login_server_request_free
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - i_free
    - i_close_fd
    - login_server_conn_is_closed
    - i_set_failure_prefix
    - login_server_conn_unref
    - i_assert
    - DLLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void login_server_request_free(struct login_server_request **_request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct login_server*::callback
      Src: /src/dovecot/src/lib-login/login-server.c:274,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:278,1
    - Dst: login_server_auth_request_count
      Src: /src/dovecot/src/lib-login/login-server.c:278,1
    - Dst: login_server_auth_disconnect
      Src: /src/dovecot/src/lib-login/login-server.c:279,1
    - Dst: login_server_stop
      Src: /src/dovecot/src/lib-login/login-server.c:282,1
    - Dst: login_server_request_free
      Src: /src/dovecot/src/lib-login/login-server.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - request
    - auth_args
    argTypes:
    - struct login_server_request*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 263
    functionDepth: 4
    functionLinenumber: 263
    functionLinenumberEnd: 287
    functionName: login_server_auth_finish
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - struct login_server*::callback
    - login_server_stop
    - login_server_auth_disconnect
    - login_server_request_free
    - login_server_auth_request_count
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_finish(struct login_server_request *request,\n\t\t\t\t
      \    const char *const *auth_args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:292,1
    - Dst: login_server_request_free
      Src: /src/dovecot/src/lib-login/login-server.c:293,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-login/login-server.c:295,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-login/login-server.c:296,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/login-server.c:297,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-login/login-server.c:298,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server.c:299,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server.c:300,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - pl
    argTypes:
    - struct login_server_postlogin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 289
    functionDepth: 6
    functionLinenumber: 289
    functionLinenumberEnd: 302
    functionName: login_server_postlogin_free
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - i_close_fd
    - io_remove
    - login_server_request_free
    - i_assert
    - i_free
    - str_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void login_server_postlogin_free(struct login_server_postlogin *pl)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fd_read
      Src: /src/dovecot/src/lib-login/login-server.c:313,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/login-server.c:316,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-login/login-server.c:319,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-login/login-server.c:322,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-login/login-server.c:323,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-login/login-server.c:325,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:331,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-login/login-server.c:333,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:334,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:337,1
    - Dst: login_server_postlogin_free
      Src: /src/dovecot/src/lib-login/login-server.c:341,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-login/login-server.c:345,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-login/login-server.c:345,1
    - Dst: login_server_auth_finish
      Src: /src/dovecot/src/lib-login/login-server.c:347,1
    - Dst: login_server_postlogin_free
      Src: /src/dovecot/src/lib-login/login-server.c:350,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - pl
    argTypes:
    - struct login_server_postlogin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 304
    functionDepth: 8
    functionLinenumber: 304
    functionLinenumberEnd: 351
    functionName: login_server_postlogin_input
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - login_server_postlogin_free
    - str_c
    - str_len
    - t_strsplit_tabescaped
    - i_close_fd
    - fd_read
    - e_error
    - str_truncate
    - login_server_auth_finish
    - str_append_data
    linkageType: ''
    returnType: void
    signature: void login_server_postlogin_input(struct login_server_postlogin *pl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:355,1
    - Dst: login_server_postlogin_free
      Src: /src/dovecot/src/lib-login/login-server.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pl
    argTypes:
    - struct login_server_postlogin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 353
    functionDepth: 7
    functionLinenumber: 353
    functionLinenumberEnd: 359
    functionName: login_server_postlogin_timeout
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - e_error
    - login_server_postlogin_free
    linkageType: ''
    returnType: void
    signature: void login_server_postlogin_timeout(struct login_server_postlogin *pl)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: process_title_set
      Src: /src/dovecot/src/lib-login/login-server.c:373,1
    - Dst: net_connect_unix_with_retries
      Src: /src/dovecot/src/lib-login/login-server.c:375,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:377,1
    - Dst: DOC_LINK
      Src: /src/dovecot/src/lib-login/login-server.c:379,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-login/login-server.c:383,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-server.c:384,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-login/login-server.c:385,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-login/login-server.c:386,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-login/login-server.c:388,1
    - Dst: str_append_tabescaped
      Src: /src/dovecot/src/lib-login/login-server.c:389,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-login/login-server.c:391,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib-login/login-server.c:392,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-login/login-server.c:392,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-login/login-server.c:392,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-login/login-server.c:393,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:395,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:398,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/login-server.c:401,1
    - Dst: net_set_nonblock
      Src: /src/dovecot/src/lib-login/login-server.c:404,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-login/login-server.c:405,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-login/login-server.c:407,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-login/login-server.c:409,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-login/login-server.c:410,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-login/login-server.c:413,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-login/login-server.c:414,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-login/login-server.c:416,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:418,1
    - Dst: login_server_proctitle_refresh
      Src: /src/dovecot/src/lib-login/login-server.c:421,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 3
    argNames:
    - request
    - auth_args
    - socket_path
    argTypes:
    - struct login_server_request*
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 361
    functionDepth: 10
    functionLinenumber: 361
    functionLinenumberEnd: 423
    functionName: login_server_postlogin
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_len
    - i_strdup
    - str_append_tabescaped
    - process_title_set
    - t_str_new
    - str_append_c
    - i_close_fd
    - timeout_add
    - DOC_LINK
    - net_ip2addr
    - io_loop_time_refresh
    - str_new
    - str_data
    - net_connect_unix_with_retries
    - fd_send
    - e_error
    - net_set_nonblock
    - i_assert
    - login_server_proctitle_refresh
    - io_add
    - i_new
    linkageType: ''
    returnType: int
    signature: "int login_server_postlogin(struct login_server_request *request,\n\t\t\t\t
      \ const char *const *auth_args,\n\t\t\t\t  const char *socket_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_begins
      Src: /src/dovecot/src/lib-login/login-server.c:431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - auth_args
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 435
    functionName: auth_args_find_postlogin_socket
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - str_begins
    linkageType: ''
    returnType: char
    signature: 'char *

      auth_args_find_postlogin_socket(const char *const *auth_args)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:446,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-login/login-server.c:448,1
    - Dst: getpid
      Src: /src/dovecot/src/lib-login/login-server.c:452,1
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-login/login-server.c:453,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-server.c:457,1
    - Dst: struct login_server_connection*::server::failure_callback
      Src: /src/dovecot/src/lib-login/login-server.c:461,1
    - Dst: login_server_request_free
      Src: /src/dovecot/src/lib-login/login-server.c:462,1
    - Dst: i_set_failure_prefix
      Src: /src/dovecot/src/lib-login/login-server.c:465,1
    - Dst: auth_args_find_postlogin_socket
      Src: /src/dovecot/src/lib-login/login-server.c:468,1
    - Dst: login_server_auth_finish
      Src: /src/dovecot/src/lib-login/login-server.c:473,1
    - Dst: login_server_conn_is_closed
      Src: /src/dovecot/src/lib-login/login-server.c:478,1
    - Dst: login_server_conn_close
      Src: /src/dovecot/src/lib-login/login-server.c:479,1
    - Dst: login_server_conn_unref
      Src: /src/dovecot/src/lib-login/login-server.c:480,1
    - Dst: login_server_postlogin
      Src: /src/dovecot/src/lib-login/login-server.c:484,1
    - Dst: login_server_request_free
      Src: /src/dovecot/src/lib-login/login-server.c:486,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - auth_args
    - errormsg
    - context
    argTypes:
    - char**
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 437
    functionDepth: 11
    functionLinenumber: 437
    functionLinenumberEnd: 488
    functionName: login_server_auth_callback
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - i_zero
    - getpid
    - struct login_server_connection*::server::failure_callback
    - i_set_failure_prefix
    - e_error
    - login_server_conn_is_closed
    - login_server_postlogin
    - o_stream_nsend
    - login_server_request_free
    - auth_args_find_postlogin_socket
    - login_server_conn_close
    - login_server_conn_unref
    - login_server_auth_finish
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void login_server_auth_callback(const char *const *auth_args, const
      char *errormsg,\n\t\t\t   void *context)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: login_server_conn_read_request
      Src: /src/dovecot/src/lib-login/login-server.c:500,1
    - Dst: login_server_conn_close
      Src: /src/dovecot/src/lib-login/login-server.c:503,1
    - Dst: login_server_conn_unref
      Src: /src/dovecot/src/lib-login/login-server.c:504,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/login-server.c:506,1
    - Dst: fd_close_on_exec
      Src: /src/dovecot/src/lib-login/login-server.c:509,1
    - Dst: memchr
      Src: /src/dovecot/src/lib-login/login-server.c:512,1
    - Dst: i_strdup_until
      Src: /src/dovecot/src/lib-login/login-server.c:513,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-login/login-server.c:518,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-login/login-server.c:521,1
    - Dst: i_malloc
      Src: /src/dovecot/src/lib-login/login-server.c:524,1
    - Dst: MALLOC_ADD
      Src: /src/dovecot/src/lib-login/login-server.c:524,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-login/login-server.c:532,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-login/login-server.c:535,1
    - Dst: login_server_proctitle_refresh
      Src: /src/dovecot/src/lib-login/login-server.c:536,1
    - Dst: login_server_auth_request
      Src: /src/dovecot/src/lib-login/login-server.c:538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct login_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 490
    functionDepth: 13
    functionLinenumber: 490
    functionLinenumberEnd: 540
    functionName: login_server_conn_input
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 0
    functionsReached:
    - memcpy
    - i_malloc
    - fd_close_on_exec
    - login_server_auth_request
    - i_close_fd
    - login_server_conn_read_request
    - memchr
    - i_strdup_until
    - i_strdup
    - DLLIST_PREPEND
    - io_loop_time_refresh
    - login_server_conn_close
    - login_server_conn_unref
    - MALLOC_ADD
    - login_server_proctitle_refresh
    linkageType: ''
    returnType: void
    signature: void login_server_conn_input(struct login_server_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-login/login-server.c:546,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-login/login-server.c:551,1
    - Dst: o_stream_create_fd
      Src: /src/dovecot/src/lib-login/login-server.c:552,1
    - Dst: o_stream_set_no_error_handling
      Src: /src/dovecot/src/lib-login/login-server.c:553,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-login/login-server.c:555,1
    - Dst: event_set_log_message_callback
      Src: /src/dovecot/src/lib-login/login-server.c:556,1
    - Dst: DLLIST_PREPEND
      Src: /src/dovecot/src/lib-login/login-server.c:558,1
    - Dst: login_server_proctitle_refresh
      Src: /src/dovecot/src/lib-login/login-server.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - server
    - fd
    argTypes:
    - struct login_server*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 542
    functionDepth: 10
    functionLinenumber: 542
    functionLinenumberEnd: 562
    functionName: login_server_add
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 4
    functionsReached:
    - o_stream_create_fd
    - event_create
    - event_set_log_message_callback
    - io_add
    - o_stream_set_no_error_handling
    - DLLIST_PREPEND
    - i_new
    - login_server_proctitle_refresh
    linkageType: ''
    returnType: void
    signature: void login_server_add(struct login_server *server, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: login_server_conn_is_closed
      Src: /src/dovecot/src/lib-login/login-server.c:566,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-login/login-server.c:569,1
    - Dst: o_stream_close
      Src: /src/dovecot/src/lib-login/login-server.c:570,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/login-server.c:571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct login_server_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 564
    functionDepth: 5
    functionLinenumber: 564
    functionLinenumberEnd: 572
    functionName: login_server_conn_close
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 3
    functionsReached:
    - io_remove
    - i_close_fd
    - o_stream_close
    - login_server_conn_is_closed
    linkageType: ''
    returnType: void
    signature: void login_server_conn_close(struct login_server_connection *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:578,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-server.c:584,1
    - Dst: login_server_conn_close
      Src: /src/dovecot/src/lib-login/login-server.c:585,1
    - Dst: o_stream_unref
      Src: /src/dovecot/src/lib-login/login-server.c:586,1
    - Dst: DLLIST_REMOVE
      Src: /src/dovecot/src/lib-login/login-server.c:588,1
    - Dst: login_server_proctitle_refresh
      Src: /src/dovecot/src/lib-login/login-server.c:590,1
    - Dst: master_service_client_connection_destroyed
      Src: /src/dovecot/src/lib-login/login-server.c:591,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-login/login-server.c:593,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-server.c:594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct login_server_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 574
    functionDepth: 10
    functionLinenumber: 574
    functionLinenumberEnd: 595
    functionName: login_server_conn_unref
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 4
    functionsReached:
    - event_unref
    - i_free
    - o_stream_unref
    - login_server_conn_close
    - i_assert
    - DLLIST_REMOVE
    - login_server_proctitle_refresh
    - master_service_client_connection_destroyed
    linkageType: ''
    returnType: void
    signature: void login_server_conn_unref(struct login_server_connection **_conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: login_server_auth_request_count
      Src: /src/dovecot/src/lib-login/login-server.c:600,1
    - Dst: login_server_auth_disconnect
      Src: /src/dovecot/src/lib-login/login-server.c:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct login_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 602
    functionName: login_server_stop
    functionSourceFile: /src/dovecot/src/lib-login/login-server.c
    functionUses: 2
    functionsReached:
    - login_server_auth_disconnect
    - login_server_auth_request_count
    linkageType: ''
    returnType: void
    signature: void login_server_stop(struct login_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-login/login-client.c:59,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-login/login-client.c:60,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-login/login-client.c:63,1
    - Dst: hash_table_create_direct
      Src: /src/dovecot/src/lib-login/login-client.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - service
    - path
    argTypes:
    - struct master_service*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 66
    functionName: login_client_list_init
    functionSourceFile: /src/dovecot/src/lib-login/login-client.c
    functionUses: 1
    functionsReached:
    - pool_alloconly_create
    - p_strdup
    - p_new
    - hash_table_create_direct
    linkageType: ''
    returnType: struct login_client_list
    signature: 'struct login_client_list *

      login_client_list_init(struct master_service *service, const char *path)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-login/login-client.c:76,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-client.c:77,1
    - Dst: struct login_connection*::callback
      Src: /src/dovecot/src/lib-login/login-client.c:80,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-login/login-client.c:82,1
    - Dst: io_remove
      Src: /src/dovecot/src/lib-login/login-client.c:83,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-login/login-client.c:84,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-login/login-client.c:85,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-client.c:86,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-login/login-client.c:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _conn
    argTypes:
    - struct login_connection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 68
    functionDepth: 6
    functionLinenumber: 68
    functionLinenumberEnd: 88
    functionName: login_connection_deinit
    functionSourceFile: /src/dovecot/src/lib-login/login-client.c
    functionUses: 0
    functionsReached:
    - struct login_connection*::callback
    - POINTER_CAST
    - event_unref
    - io_remove
    - i_close_fd
    - hash_table_remove
    - i_free
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void login_connection_deinit(struct login_connection **_conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-login/login-client.c:95,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-login/login-client.c:96,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-login/login-client.c:98,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-login/login-client.c:99,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-login/login-client.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - conn
    - ATTR_UNUSED
    - message
    argTypes:
    - struct login_connection*
    - enum log_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 90
    functionDepth: 6
    functionLinenumber: 90
    functionLinenumberEnd: 102
    functionName: login_connection_event_callback
    functionSourceFile: /src/dovecot/src/lib-login/login-client.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - timeval_diff_msecs
    - str_printfa
    - net_ip2addr
    linkageType: ''
    returnType: char
    signature: "char *\nlogin_connection_event_callback(struct login_connection *conn,\n\t\t\t\tenum
      log_type log_type ATTR_UNUSED,\n\t\t\t\tconst char *message)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_iterate_init
      Src: /src/dovecot/src/lib-login/login-client.c:113,1
    - Dst: hash_table_iterate
      Src: /src/dovecot/src/lib-login/login-client.c:114,1
    - Dst: login_connection_deinit
      Src: /src/dovecot/src/lib-login/login-client.c:116,1
    - Dst: hash_table_iterate_deinit
      Src: /src/dovecot/src/lib-login/login-client.c:118,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-login/login-client.c:119,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-login/login-client.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - _list
    argTypes:
    - struct login_client_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 104
    functionDepth: 7
    functionLinenumber: 104
    functionLinenumberEnd: 121
    functionName: login_client_list_deinit
    functionSourceFile: /src/dovecot/src/lib-login/login-client.c
    functionUses: 1
    functionsReached:
    - hash_table_iterate_deinit
    - hash_table_iterate
    - hash_table_iterate_init
    - pool_unref
    - login_connection_deinit
    - hash_table_destroy
    linkageType: ''
    returnType: void
    signature: void login_client_list_deinit(struct login_client_list **_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dovecot/src/lib-login/login-client.c:128,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-client.c:132,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-client.c:137,1
    - Dst: login_connection_deinit
      Src: /src/dovecot/src/lib-login/login-client.c:139,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-client.c:152,1
    - Dst: struct login_connection*::callback
      Src: /src/dovecot/src/lib-login/login-client.c:156,1
    - Dst: login_connection_deinit
      Src: /src/dovecot/src/lib-login/login-client.c:159,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct login_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 7
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: login_connection_input
    functionSourceFile: /src/dovecot/src/lib-login/login-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - login_connection_deinit
    - read
    - struct login_connection*::callback
    linkageType: ''
    returnType: void
    signature: void login_connection_input(struct login_connection *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-client.c:164,1
    - Dst: login_connection_deinit
      Src: /src/dovecot/src/lib-login/login-client.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct login_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 7
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: login_connection_timeout
    functionSourceFile: /src/dovecot/src/lib-login/login-client.c
    functionUses: 0
    functionsReached:
    - e_error
    - login_connection_deinit
    linkageType: ''
    returnType: void
    signature: void login_connection_timeout(struct login_connection *conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-client.c:179,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-client.c:180,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-login/login-client.c:182,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-login/login-client.c:188,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-login/login-client.c:188,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-login/login-client.c:190,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-login/login-client.c:191,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-login/login-client.c:191,1
    - Dst: event_set_log_message_callback
      Src: /src/dovecot/src/lib-login/login-client.c:192,1
    - Dst: fstat
      Src: /src/dovecot/src/lib-login/login-client.c:203,1
    - Dst: i_fatal
      Src: /src/dovecot/src/lib-login/login-client.c:204,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-login/login-client.c:207,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-login/login-client.c:208,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-login/login-client.c:209,1
    - Dst: net_connect_unix
      Src: /src/dovecot/src/lib-login/login-client.c:211,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-login/login-client.c:219,1
    - Dst: net_connect_unix_with_retries
      Src: /src/dovecot/src/lib-login/login-client.c:221,1
    - Dst: io_loop_time_refresh
      Src: /src/dovecot/src/lib-login/login-client.c:223,1
    - Dst: e_warning
      Src: /src/dovecot/src/lib-login/login-client.c:227,1
    - Dst: timeval_diff_usecs
      Src: /src/dovecot/src/lib-login/login-client.c:230,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-client.c:235,1
    - Dst: DOC_LINK
      Src: /src/dovecot/src/lib-login/login-client.c:237,1
    - Dst: login_connection_deinit
      Src: /src/dovecot/src/lib-login/login-client.c:238,1
    - Dst: fd_send
      Src: /src/dovecot/src/lib-login/login-client.c:242,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-client.c:244,1
    - Dst: e_error
      Src: /src/dovecot/src/lib-login/login-client.c:247,1
    - Dst: login_connection_deinit
      Src: /src/dovecot/src/lib-login/login-client.c:252,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-login/login-client.c:257,1
    - Dst: io_add
      Src: /src/dovecot/src/lib-login/login-client.c:259,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-login/login-client.c:261,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-login/login-client.c:261,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-client.c:261,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-login/login-client.c:262,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-client.c:262,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 59
    argCount: 5
    argNames:
    - list
    - params
    - callback
    - context
    - tag_r
    argTypes:
    - struct login_client_list*
    - struct login_client_request_params*
    - login_client_request_callback_t*
    - void*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 168
    functionDepth: 11
    functionLinenumber: 168
    functionLinenumberEnd: 264
    functionName: login_client_request
    functionSourceFile: /src/dovecot/src/lib-login/login-client.c
    functionUses: 1
    functionsReached:
    - timeval_diff_usecs
    - t_strdup_printf
    - i_strdup
    - fstat
    - buffer_append
    - net_connect_unix
    - POINTER_CAST
    - event_set_append_log_prefix
    - timeout_add
    - i_fatal
    - DOC_LINK
    - e_warning
    - login_connection_deinit
    - io_loop_time_refresh
    - hash_table_insert
    - event_create
    - net_connect_unix_with_retries
    - fd_send
    - e_error
    - i_assert
    - hash_table_lookup
    - event_set_log_message_callback
    - io_add
    - t_buffer_create
    - i_new
    linkageType: ''
    returnType: void
    signature: "void login_client_request(struct login_client_list *list,\n\t\t\t
      \ const struct login_client_request_params *params,\n\t\t\t  login_client_request_callback_t
      *callback,\n\t\t\t  void *context, unsigned int *tag_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-login/login-client.c:271,1
    - Dst: POINTER_CAST
      Src: /src/dovecot/src/lib-login/login-client.c:271,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-login/login-client.c:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - list
    - tag
    argTypes:
    - struct login_client_list*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 276
    functionName: login_client_request_abort
    functionSourceFile: /src/dovecot/src/lib-login/login-client.c
    functionUses: 1
    functionsReached:
    - i_panic
    - hash_table_lookup
    - POINTER_CAST
    linkageType: ''
    returnType: void
    signature: "void login_client_request_abort(struct login_client_list *list,\n\t\t\t\tunsigned
      int tag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ttl_secs
    - ','
    - refresh_callback
    - ','
    - refresh_context
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 22
    functionName: dns_client_cache_init
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dns_client_cache_init(ttl_secs, refresh_callback, refresh_context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:64,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - struct dns_cache_lookup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: dns_cache_lookup_free
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void dns_cache_lookup_free(struct dns_cache_lookup **_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:72,1
    - Dst: dns_cache_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - result
    - ctx
    argTypes:
    - struct dns_lookup_result*
    - struct dns_cache_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 77
    functionName: dns_client_cache_callback
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - e_debug
    - dns_cache_lookup_free
    linkageType: ''
    returnType: void
    signature: "void dns_client_cache_callback(const struct dns_lookup_result *result,\n\t\t\t\t
      \     struct dns_cache_lookup *ctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:87,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:88,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:89,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:90,1
    - Dst: dns_client_lookup_ptr
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:92,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:95,1
    - Dst: dns_cache_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:98,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:101,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:102,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:104,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:107,1
    - Dst: dns_cache_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:110,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - cache_key
    - client
    argTypes:
    - char*
    - struct dns_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 115
    functionName: dns_client_cache_refresh
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - dns_client_lookup
    - dns_client_lookup_ptr
    - i_unreached
    - e_debug
    - i_strdup
    - i_new
    - dns_cache_lookup_free
    linkageType: ''
    returnType: void
    signature: "void dns_client_cache_refresh(const char *cache_key,\n\t\t\t\t     struct
      dns_client *client)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:129,1
    - Dst: dns_client_cache_entry
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:133,1
    - Dst: dns_lookup_save_msecs
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:136,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:139,1
    - Dst: struct event_passthrough*::add_int
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:140,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:141,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:142,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:142,1
    - Dst: struct event_passthrough*::add_str
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:145,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:146,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:146,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:148,1
    - Dst: struct dns_lookup*::callback
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - struct dns_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 152
    functionName: dns_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - e_debug
    - dns_client_cache_entry
    - struct dns_lookup*::callback
    - struct event_passthrough*::add_int
    - struct event_passthrough*::event
    - event_create_passthrough
    - i_assert
    - dns_lookup_save_msecs
    - struct event_passthrough*::add_str
    linkageType: ''
    returnType: void
    signature: void dns_lookup_callback(struct dns_lookup *lookup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:156,1
    - Dst: dns_lookup_callback
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:157,1
    - Dst: dns_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - struct dns_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 154
    functionDepth: 6
    functionLinenumber: 154
    functionLinenumberEnd: 159
    functionName: dns_lookup_callback_cached
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_lookup_free
    - dns_lookup_callback
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dns_lookup_callback_cached(struct dns_lookup *lookup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:166,1
    - Dst: connection_disconnect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:167,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:170,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:179,1
    - Dst: dns_lookup_callback
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:183,1
    - Dst: dns_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - client
    - error
    argTypes:
    - struct dns_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 161
    functionDepth: 6
    functionLinenumber: 161
    functionLinenumberEnd: 187
    functionName: dns_client_disconnect
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - i_zero
    - dns_lookup_free
    - e_debug
    - dns_lookup_callback
    - timeout_remove
    - connection_disconnect
    linkageType: ''
    returnType: void
    signature: void dns_client_disconnect(struct dns_client *client, const char *error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:191,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:193,1
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 189
    functionDepth: 6
    functionLinenumber: 189
    functionLinenumberEnd: 195
    functionName: dns_client_destroy
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - container_of
    - connection_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dns_client_destroy(struct connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str_to_int
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:201,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:209,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:214,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:216,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:217,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - lookup
    - args
    argTypes:
    - struct dns_lookup*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 197
    functionDepth: 4
    functionLinenumber: 197
    functionLinenumberEnd: 223
    functionName: dns_lookup_input_args
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - net_addr2ip
    - array_append_space
    - p_array_init
    - array_get
    - str_to_int
    linkageType: ''
    returnType: int
    signature: int dns_lookup_input_args(struct dns_lookup *lookup, const char *const
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:230,1
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - struct dns_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 235
    functionName: dns_lookup_save_msecs
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 1
    functionsReached:
    - i_gettimeofday
    - timeval_diff_msecs
    linkageType: ''
    returnType: void
    signature: void dns_lookup_save_msecs(struct dns_lookup *lookup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:239,1
    - Dst: dns_client_disconnect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:244,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:244,1
    - Dst: dns_lookup_input_args
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:249,1
    - Dst: dns_client_disconnect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:250,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:250,1
    - Dst: DLLIST2_REMOVE
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:254,1
    - Dst: dns_lookup_callback
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:256,1
    - Dst: dns_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - conn
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 237
    functionDepth: 11
    functionLinenumber: 237
    functionLinenumberEnd: 261
    functionName: dns_client_input_args
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_client_disconnect
    - dns_lookup_free
    - container_of
    - dns_lookup_callback
    - t_strdup_printf
    - dns_lookup_input_args
    - DLLIST2_REMOVE
    linkageType: ''
    returnType: int
    signature: int dns_client_input_args(struct connection *conn, const char *const
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_diff_msecs
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:265,1
    - Dst: dns_client_disconnect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:270,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - struct dns_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 263
    functionDepth: 11
    functionLinenumber: 263
    functionLinenumberEnd: 273
    functionName: dns_lookup_timeout
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_client_disconnect
    - timeval_diff_msecs
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: void dns_lookup_timeout(struct dns_lookup *lookup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:284,1
    - Dst: i_gettimeofday
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:287,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:295,1
    - Dst: event_create
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:297,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:298,1
    - Dst: p_strdup_printf
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:300,1
    - Dst: event_set_append_log_prefix
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:302,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 7
    argNames:
    - pool
    - client
    - ptr_lookup
    - param
    - event
    - callback
    - context
    argTypes:
    - pool_t
    - struct dns_client*
    - bool
    - char*
    - struct event*
    - dns_lookup_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 275
    functionDepth: 8
    functionLinenumber: 275
    functionLinenumberEnd: 305
    functionName: dns_lookup_create
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - i_gettimeofday
    - event_create
    - p_new
    - event_set_append_log_prefix
    - event_add_category
    - t_strconcat
    - p_strdup_printf
    linkageType: ''
    returnType: struct dns_lookup
    signature: "struct dns_lookup *\ndns_lookup_create(pool_t pool,\n\t\t  struct
      dns_client *client,\n\t\t  bool ptr_lookup,\n\t\t  const char *param,\n\t\t
      \ struct event *event,\n\t\t  dns_lookup_callback_t *callback,\n\t\t  void *context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dns_client_init
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:317,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:319,1
    - Dst: dns_lookup_create
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:320,1
    - Dst: dns_lookup_callback
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:326,1
    - Dst: dns_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 7
    argNames:
    - params
    - event_parent
    - cmd_param
    - ptr_lookup
    - callback
    - context
    - client_r
    argTypes:
    - struct dns_client_parameters*
    - struct event*
    - char*
    - bool
    - dns_lookup_callback_t*
    - void*
    - struct dns_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 307
    functionDepth: 9
    functionLinenumber: 307
    functionLinenumberEnd: 330
    functionName: dns_client_init_handle_failure
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - dns_lookup_free
    - dns_lookup_callback
    - dns_lookup_create
    - dns_client_init
    linkageType: ''
    returnType: int
    signature: "int dns_client_init_handle_failure(const struct dns_client_parameters
      *params,\n\t\t\t       struct event *event_parent,\n\t\t\t       const char
      *cmd_param,\n\t\t\t       bool ptr_lookup,\n\t\t\t       dns_lookup_callback_t
      *callback,\n\t\t\t       void *context,\n\t\t\t       struct dns_client **client_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dns_client_init_handle_failure
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:337,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:341,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - host
    - params
    - event_parent
    - callback
    - context
    - lookup_r
    argTypes:
    - char*
    - struct dns_client_parameters*
    - struct event*
    - dns_lookup_callback_t*
    - void*
    - struct dns_lookup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 332
    functionDepth: 10
    functionLinenumber: 332
    functionLinenumberEnd: 347
    functionName: dns_lookup
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 8
    functionsReached:
    - dns_client_init_handle_failure
    - i_assert
    - dns_client_lookup
    linkageType: ''
    returnType: int
    signature: "int dns_lookup(const char *host, const struct dns_client_parameters
      *params,\n\t       struct event *event_parent, dns_lookup_callback_t *callback,\n\t
      \      void *context, struct dns_lookup **lookup_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:357,1
    - Dst: dns_client_init_handle_failure
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:358,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:359,1
    - Dst: dns_client_lookup_ptr
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - ip
    - params
    - event_parent
    - callback
    - context
    - lookup_r
    argTypes:
    - struct ip_addr*
    - struct dns_client_parameters*
    - struct event*
    - dns_lookup_callback_t*
    - void*
    - struct dns_lookup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 349
    functionDepth: 10
    functionLinenumber: 349
    functionLinenumberEnd: 365
    functionName: dns_lookup_ptr
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_client_init_handle_failure
    - i_assert
    - net_ip2addr
    - dns_client_lookup_ptr
    linkageType: ''
    returnType: int
    signature: "int dns_lookup_ptr(const struct ip_addr *ip,\n\t\t   const struct
      dns_client_parameters *params,\n\t\t   struct event *event_parent,\n\t\t   dns_lookup_callback_t
      *callback, void *context,\n\t\t   struct dns_lookup **lookup_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:369,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:372,1
    - Dst: dns_client_disconnect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct dns_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 367
    functionDepth: 7
    functionLinenumber: 367
    functionLinenumberEnd: 374
    functionName: dns_client_idle_timeout
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_client_disconnect
    - o_stream_nsend_str
    - i_assert
    linkageType: ''
    returnType: void
    signature: void dns_client_idle_timeout(struct dns_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:383,1
    - Dst: dns_client_deinit
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:386,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:389,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:394,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:395,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - _lookup
    argTypes:
    - struct dns_lookup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 376
    functionDepth: 6
    functionLinenumber: 376
    functionLinenumberEnd: 396
    functionName: dns_lookup_free
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 4
    functionsReached:
    - event_unref
    - dns_client_deinit
    - pool_unref
    - timeout_add_to
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dns_lookup_free(struct dns_lookup **_lookup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dns_client_deinit
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:408,1
    - Dst: dns_lookup_save_msecs
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:410,1
    - Dst: struct dns_lookup*::callback
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - _lookup
    argTypes:
    - struct dns_lookup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 398
    functionDepth: 4
    functionLinenumber: 398
    functionLinenumberEnd: 416
    functionName: dns_lookup_abort
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 5
    functionsReached:
    - dns_lookup_save_msecs
    - dns_client_deinit
    - struct dns_lookup*::callback
    linkageType: ''
    returnType: void
    signature: void dns_lookup_abort(struct dns_lookup **_lookup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - struct dns_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 418
    functionDepth: 8
    functionLinenumber: 418
    functionLinenumberEnd: 422
    functionName: dns_lookup_switch_ioloop_real
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - io_loop_move_timeout
    linkageType: ''
    returnType: void
    signature: void dns_lookup_switch_ioloop_real(struct dns_lookup *lookup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dns_client_switch_ioloop
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:428,1
    - Dst: dns_lookup_switch_ioloop_real
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - struct dns_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 424
    functionDepth: 9
    functionLinenumber: 424
    functionLinenumberEnd: 431
    functionName: dns_lookup_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 3
    functionsReached:
    - dns_lookup_switch_ioloop_real
    - dns_client_switch_ioloop
    linkageType: ''
    returnType: void
    signature: void dns_lookup_switch_ioloop(struct dns_lookup *lookup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - success
    argTypes:
    - struct connection*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 439
    functionName: dns_client_connected
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: void
    signature: void dns_client_connected(struct connection *conn, bool success)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:464,1
    - Dst: settings_get
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:465,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:468,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:471,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:473,1
    - Dst: connection_init_client_unix
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:475,1
    - Dst: event_add_category
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:476,1
    - Dst: dns_client_cache_init
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:478,1
    - Dst: settings_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:481,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - params
    - event_parent
    - client_r
    - error_r
    argTypes:
    - struct dns_client_parameters*
    - struct event*
    - struct dns_client**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 457
    functionDepth: 7
    functionLinenumber: 457
    functionLinenumberEnd: 484
    functionName: dns_client_init
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 4
    functionsReached:
    - i_assert
    - connection_list_init
    - dns_client_cache_init
    - connection_init_client_unix
    - event_add_category
    - settings_free
    - i_strdup
    - i_new
    - settings_get
    linkageType: ''
    returnType: int
    signature: "int dns_client_init(const struct dns_client_parameters *params,\n\t\t
      \   struct event *event_parent,\n\t\t    struct dns_client **client_r,\n\t\t
      \   const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_client_disconnect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:493,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:496,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:497,1
    - Dst: dns_client_cache_deinit
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:499,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:501,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - _client
    argTypes:
    - struct dns_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 486
    functionDepth: 7
    functionLinenumber: 486
    functionLinenumberEnd: 503
    functionName: dns_client_deinit
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 5
    functionsReached:
    - dns_client_disconnect
    - dns_client_cache_deinit
    - i_assert
    - i_free
    - connection_list_deinit
    linkageType: ''
    returnType: void
    signature: void dns_client_deinit(struct dns_client **_client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: connection_switch_ioloop_to
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:510,1
    - Dst: connection_client_connect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:511,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:513,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - client
    - error_r
    argTypes:
    - struct dns_client*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 505
    functionDepth: 11
    functionLinenumber: 505
    functionLinenumberEnd: 516
    functionName: dns_client_connect
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 1
    functionsReached:
    - connection_switch_ioloop_to
    - t_strdup_printf
    - connection_client_connect
    linkageType: ''
    returnType: int
    signature: int dns_client_connect(struct dns_client *client, const char **error_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dns_client_connect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:525,1
    - Dst: o_stream_send
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:529,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:529,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:530,1
    - Dst: o_stream_get_error
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:532,1
    - Dst: dns_client_disconnect
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:533,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - client
    - cmd
    - error_r
    argTypes:
    - struct dns_client*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 518
    functionDepth: 12
    functionLinenumber: 518
    functionLinenumberEnd: 537
    functionName: dns_client_send_request
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_client_disconnect
    - o_stream_get_error
    - dns_client_connect
    - strlen
    - t_strdup_printf
    - o_stream_send
    linkageType: ''
    returnType: int
    signature: "int dns_client_send_request(struct dns_client *client, const char
      *cmd,\n\t\t\tconst char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:549,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:550,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:552,1
    - Dst: dns_lookup_create
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:553,1
    - Dst: event_create_passthrough
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:556,1
    - Dst: e_debug
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:558,1
    - Dst: struct event_passthrough*::event
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:558,1
    - Dst: dns_client_cache_lookup
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:560,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:563,1
    - Dst: dns_client_send_request
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:568,1
    - Dst: dns_client_send_request
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:571,1
    - Dst: dns_lookup_callback
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:575,1
    - Dst: dns_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:576,1
    - Dst: timeout_add_to
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:582,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:586,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:587,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 8
    argNames:
    - client
    - cmd
    - param
    - ptr_lookup
    - event
    - callback
    - context
    - lookup_r
    argTypes:
    - struct dns_client*
    - char*
    - char*
    - bool
    - struct event*
    - dns_lookup_callback_t*
    - void*
    - struct dns_lookup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 539
    functionDepth: 13
    functionLinenumber: 539
    functionLinenumberEnd: 590
    functionName: dns_client_lookup_common
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - dns_lookup_free
    - DLLIST2_APPEND
    - dns_client_cache_lookup
    - dns_client_send_request
    - e_debug
    - timeout_add_short
    - dns_lookup_callback
    - t_strdup_printf
    - dns_lookup_create
    - struct event_passthrough*::event
    - event_create_passthrough
    - timeout_add_to
    - i_assert
    - timeout_remove
    linkageType: ''
    returnType: int
    signature: "int dns_client_lookup_common(struct dns_client *client,\n\t\t\t const
      char *cmd, const char *param, bool ptr_lookup,\n\t\t\t struct event *event,\n\t\t\t
      dns_lookup_callback_t *callback, void *context,\n\t\t\t struct dns_lookup **lookup_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:600,1
    - Dst: dns_lookup_create
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:601,1
    - Dst: net_gethostbyname
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:608,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:611,1
    - Dst: net_gethosterror
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:612,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:617,1
    - Dst: dns_lookup_callback
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:619,1
    - Dst: dns_lookup_free
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:620,1
    - Dst: dns_client_lookup_common
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:624,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - client
    - host
    - event
    - callback
    - context
    - lookup_r
    argTypes:
    - struct dns_client*
    - char*
    - struct event*
    - dns_lookup_callback_t*
    - void*
    - struct dns_lookup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 592
    functionDepth: 14
    functionLinenumber: 592
    functionLinenumberEnd: 626
    functionName: dns_client_lookup
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 5
    functionsReached:
    - pool_alloconly_create
    - dns_lookup_free
    - dns_lookup_callback
    - dns_client_lookup_common
    - t_strdup_printf
    - dns_lookup_create
    - net_gethostbyname
    - net_gethosterror
    - p_memdup
    linkageType: ''
    returnType: int
    signature: "int dns_client_lookup(struct dns_client *client, const char *host,\n\t\t
      \     struct event *event,\n\t\t      dns_lookup_callback_t *callback, void
      *context,\n\t\t      struct dns_lookup **lookup_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_client_lookup_common
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:637,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - client
    - ip
    - event
    - callback
    - context
    - lookup_r
    argTypes:
    - struct dns_client*
    - struct ip_addr*
    - struct event*
    - dns_lookup_callback_t*
    - void*
    - struct dns_lookup**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 630
    functionDepth: 14
    functionLinenumber: 630
    functionLinenumberEnd: 640
    functionName: dns_client_lookup_ptr
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 2
    functionsReached:
    - dns_client_lookup_common
    - net_ip2addr
    linkageType: ''
    returnType: int
    signature: "int dns_client_lookup_ptr(struct dns_client *client, const struct
      ip_addr *ip,\n\t\t\t  struct event *event,\n\t\t\t  dns_lookup_callback_t *callback,
      void *context,\n\t\t\t  struct dns_lookup **lookup_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_switch_ioloop
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:648,1
    - Dst: io_loop_move_timeout
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:649,1
    - Dst: dns_lookup_switch_ioloop_real
      Src: /src/dovecot/src/lib-dns-client/dns-lookup.c:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct dns_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 644
    functionDepth: 9
    functionLinenumber: 644
    functionLinenumberEnd: 654
    functionName: dns_client_switch_ioloop
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 3
    functionsReached:
    - connection_switch_ioloop
    - io_loop_move_timeout
    - dns_lookup_switch_ioloop_real
    linkageType: ''
    returnType: void
    signature: void dns_client_switch_ioloop(struct dns_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct dns_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 659
    functionName: dns_client_has_pending_queries
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dns_client_has_pending_queries(struct dns_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:53,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:54,1
    - Dst: connection_input_resume
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 6
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: server_handle_timeout
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - connection_input_resume
    - o_stream_nsend_str
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void server_handle_timeout(struct connection *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:63,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:65,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:65,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:69,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:71,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:72,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:73,1
    - Dst: connection_input_halt
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:74,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:76,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:79,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:81,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:86,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:87,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:88,1
    - Dst: o_stream_nsend_str
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:92,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - client
    - args
    argTypes:
    - struct connection*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 94
    functionName: test_dns_client_input_args
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - strcmp
    - connection_input_halt
    - i_unreached
    - str_begins
    - timeout_add_short
    - str_to_uint
    - o_stream_nsend_str
    - i_assert
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int test_dns_client_input_args(struct connection *client, const char
      *const *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connection_deinit
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:98,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: test_dns_client_destroy
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - i_free
    - connection_deinit
    linkageType: ''
    returnType: void
    signature: void test_dns_client_destroy(struct connection *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:120,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:121,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:122,1
    - Dst: connection_init_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct test_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 118
    functionDepth: 6
    functionLinenumber: 118
    functionLinenumberEnd: 124
    functionName: test_dns_client_connected
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - i_assert
    - accept
    - i_new
    - connection_init_server
    linkageType: ''
    returnType: void
    signature: void test_dns_client_connected(struct test_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:128,1
    - Dst: io_loop_create
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:129,1
    - Dst: connection_list_init
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:130,1
    - Dst: unix_socket_create
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:133,1
    - Dst: geteuid
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:133,1
    - Dst: getegid
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:134,1
    - Dst: io_add_to
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - server_r
    argTypes:
    - struct test_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: create_dns_server
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - i_zero
    - connection_list_init
    - geteuid
    - io_add_to
    - unix_socket_create
    - io_loop_create
    - getegid
    linkageType: ''
    returnType: void
    signature: void create_dns_server(struct test_server *server_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: io_remove
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:141,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:142,1
    - Dst: connection_list_deinit
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:143,1
    - Dst: io_loop_destroy
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:144,1
    - Dst: i_close_fd
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:145,1
    - Dst: i_unlink_if_exists
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:146,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct test_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 139
    functionDepth: 12
    functionLinenumber: 139
    functionLinenumberEnd: 148
    functionName: destroy_dns_server
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - i_zero
    - io_remove
    - i_close_fd
    - io_loop_destroy
    - i_unlink_if_exists
    - connection_list_deinit
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void destroy_dns_server(struct test_server *server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:153,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:154,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - result
    - expected
    argTypes:
    - struct dns_lookup_result*
    - struct test_expect_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 158
    functionName: test_callback_name
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - io_loop_stop
    - test_assert_cmp
    - test_assert_strcmp
    linkageType: ''
    returnType: void
    signature: "void test_callback_name(const struct dns_lookup_result *result,\n\t\t\t
      \      struct test_expect_result *expected)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: io_loop_stop
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:163,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:164,1
    - Dst: t_strsplit_tabescaped
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:167,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:168,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:168,1
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:169,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:172,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:172,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:173,1
    - Dst: net_ip_compare
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - result
    - expected
    argTypes:
    - struct dns_lookup_result*
    - struct test_expect_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 160
    functionDepth: 8
    functionLinenumber: 160
    functionLinenumberEnd: 176
    functionName: test_callback_ips
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - t_strsplit_tabescaped
    - str_array_length
    - io_loop_stop
    - test_assert_cmp
    - test_assert
    - i_assert
    - net_ip_compare
    linkageType: ''
    returnType: void
    signature: "void test_callback_ips(const struct dns_lookup_result *result,\n\t\t\t
      \     struct test_expect_result *expected)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:185,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:185,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - result
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 187
    functionName: test_dns_expect_result_ips
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_lookup
    - io_loop_run
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_dns_expect_result_ips(const char *name, const char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:197,1
    - Dst: net_addr2ip
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:197,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:198,1
    - Dst: dns_lookup_ptr
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:198,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - name
    - result
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 189
    functionDepth: 4
    functionLinenumber: 189
    functionLinenumberEnd: 200
    functionName: test_dns_expect_result_name
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - net_addr2ip
    - test_assert
    - i_assert
    - io_loop_run
    - dns_lookup_ptr
    linkageType: ''
    returnType: void
    signature: void test_dns_expect_result_name(const char *name, const char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:204,1
    - Dst: settings_simple_update
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:205,1
    - Dst: create_dns_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:206,1
    - Dst: test_dns_expect_result_ips
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:208,1
    - Dst: test_dns_expect_result_name
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:209,1
    - Dst: test_dns_expect_result_ips
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:210,1
    - Dst: test_dns_expect_result_name
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:211,1
    - Dst: destroy_dns_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:213,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 202
    functionDepth: 13
    functionLinenumber: 202
    functionLinenumberEnd: 215
    functionName: test_dns_lookup
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - settings_simple_update
    - test_dns_expect_result_ips
    - test_end
    - test_dns_expect_result_name
    - destroy_dns_server
    - create_dns_server
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:219,1
    - Dst: create_dns_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:220,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:228,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:228,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:230,1
    - Dst: destroy_dns_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:232,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 217
    functionDepth: 13
    functionLinenumber: 217
    functionLinenumberEnd: 234
    functionName: test_dns_lookup_timeout
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_lookup
    - test_end
    - test_assert
    - destroy_dns_server
    - create_dns_server
    - io_loop_run
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_timeout(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:238,1
    - Dst: create_dns_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:239,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:247,1
    - Dst: dns_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:247,1
    - Dst: timeout_add_short
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:249,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:250,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:251,1
    - Dst: dns_lookup_abort
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:252,1
    - Dst: destroy_dns_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:254,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 236
    functionDepth: 13
    functionLinenumber: 236
    functionLinenumberEnd: 256
    functionName: test_dns_lookup_abort
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - dns_lookup
    - timeout_add_short
    - test_end
    - test_assert
    - dns_lookup_abort
    - destroy_dns_server
    - create_dns_server
    - io_loop_run
    - test_begin
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_abort(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_create
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:263,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:268,1
    - Dst: create_dns_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:269,1
    - Dst: dns_client_init
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:274,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:275,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:282,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:282,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:284,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:285,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:285,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:287,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:288,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:290,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:291,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:292,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:295,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:295,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:297,1
    - Dst: dns_client_has_pending_queries
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:298,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:299,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:300,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:302,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:305,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:306,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:307,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:309,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:309,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:311,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:313,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:318,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:318,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:320,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:321,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:323,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:323,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:325,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:326,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:333,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:333,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:335,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:336,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:336,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:338,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:339,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:341,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:342,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:343,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:346,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:346,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:348,1
    - Dst: dns_client_has_pending_queries
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:349,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:350,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:351,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:353,1
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:355,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:356,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:357,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:362,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:362,1
    - Dst: io_loop_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:364,1
    - Dst: dns_client_has_pending_queries
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:365,1
    - Dst: io_loop_handler_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:366,1
    - Dst: io_loop_set_running
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:367,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:369,1
    - Dst: dns_client_deinit
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:371,1
    - Dst: destroy_dns_server
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:372,1
    - Dst: event_unref
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:373,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 258
    functionDepth: 13
    functionLinenumber: 258
    functionLinenumberEnd: 376
    functionName: test_dns_lookup_cached
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 0
    functionsReached:
    - io_loop_handler_run
    - event_create
    - dns_client_lookup
    - dns_client_has_pending_queries
    - event_unref
    - test_begin
    - timeout_add
    - dns_client_deinit
    - test_end
    - test_assert_cmp
    - io_loop_set_running
    - test_assert
    - destroy_dns_server
    - create_dns_server
    - io_loop_run
    - dns_client_init
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void test_dns_lookup_cached(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_init
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:388,1
    - Dst: settings_simple_init
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:389,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:390,1
    - Dst: settings_simple_deinit
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:391,1
    - Dst: lib_deinit
      Src: /src/dovecot/src/lib-dns-client/test-dns-lookup.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 378
    functionDepth: 7
    functionLinenumber: 378
    functionLinenumberEnd: 394
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-dns-client/test-dns-lookup.c
    functionUses: 25
    functionsReached:
    - settings_simple_deinit
    - lib_deinit
    - lib_init
    - test_run
    - settings_simple_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: DEF
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-settings.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF(type, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: DEF_MSECS
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-settings.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEF_MSECS(type, name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-dns-client/dns-client-settings.c:50,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-dns-client/dns-client-settings.c:53,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-dns-client/dns-client-settings.c:55,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-dns-client/dns-client-settings.c:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - _set
    - pool
    - ATTR_UNUSED
    argTypes:
    - void*
    - pool_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 45
    functionDepth: 8
    functionLinenumber: 45
    functionLinenumberEnd: 60
    functionName: dns_client_settings_check
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-settings.c
    functionUses: 0
    functionsReached:
    - strlen
    - str_begins_with
    - p_strconcat
    - p_strndup
    linkageType: ''
    returnType: bool
    signature: bool dns_client_settings_check(void *_set, pool_t pool, const char
      **error_r ATTR_UNUSED)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - struct dns_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: lua_dns_client_unref
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lua_dns_client_unref(struct dns_client *client ATTR_UNUSED)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - L
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - lua_State*
    - int
    - lua_KContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 38
    functionName: lua_dns_client_async_continue
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lua.c
    functionUses: 0
    functionsReached:
    - lua_isnil
    linkageType: ''
    returnType: int
    signature: "int lua_dns_client_async_continue(lua_State *L, int status ATTR_UNUSED,\n\t\t\t
      \     lua_KContext ctx ATTR_UNUSED)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushnil
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:47,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:48,1
    - Dst: lua_pushinteger
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:49,1
    - Dst: lua_newtable
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:51,1
    - Dst: lua_pushstring
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:53,1
    - Dst: net_ip2addr
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:53,1
    - Dst: lua_seti
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:54,1
    - Dst: dlua_pcall_yieldable_resume
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:59,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - result
    - lua_lookup
    argTypes:
    - struct dns_lookup_result*
    - struct lua_dns_lookup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 40
    functionDepth: 6
    functionLinenumber: 40
    functionLinenumberEnd: 61
    functionName: lua_dns_client_lookup_callback
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - lua_pushnil
    - lua_seti
    - dlua_pcall_yieldable_resume
    - net_ip2addr
    - lua_pushinteger
    - i_free
    - lua_newtable
    linkageType: ''
    returnType: void
    signature: "void lua_dns_client_lookup_callback(const struct dns_lookup_result
      *result,\n\t\t\t       struct lua_dns_lookup *lua_lookup)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLUA_REQUIRE_ARGS_IN
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:84,1
    - Dst: xlua_dns_client_getptr
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:86,1
    - Dst: luaL_checkstring
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:87,1
    - Dst: lua_gettop
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:88,1
    - Dst: dlua_check_event
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:89,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:92,1
    - Dst: dns_client_lookup
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:95,1
    - Dst: lua_dns_client_async_continue
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:103,1
    - Dst: lua_yieldk
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 105
    functionName: lua_dns_client_lookup
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lua.c
    functionUses: 0
    functionsReached:
    - lua_dns_client_async_continue
    - dns_client_lookup
    - dlua_check_event
    - xlua_dns_client_getptr
    - luaL_checkstring
    - lua_yieldk
    - i_new
    - DLUA_REQUIRE_ARGS_IN
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: int lua_dns_client_lookup(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xlua_pushdns_client
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - client
    argTypes:
    - lua_State*
    - struct dns_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: dlua_push_dns_client
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lua.c
    functionUses: 1
    functionsReached:
    - xlua_pushdns_client
    linkageType: ''
    returnType: void
    signature: void dlua_push_dns_client(lua_State *L, struct dns_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xlua_dns_client_getptr
      Src: /src/dovecot/src/lib-dns-client/dns-lua.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: dlua_check_dns_client
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lua.c
    functionUses: 0
    functionsReached:
    - xlua_dns_client_getptr
    linkageType: ''
    returnType: struct dns_client
    signature: struct dns_client *dlua_check_dns_client(lua_State *L, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - host
    - ','
    - params
    - ','
    - event_parent
    - ','
    - callback
    - ','
    - context
    - ','
    - lookup_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: dns_lookup
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dns_lookup(host, params, event_parent, callback, context, lookup_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - host
    - ','
    - params
    - ','
    - event_parent
    - ','
    - callback
    - ','
    - context
    - ','
    - lookup_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 73
    functionName: dns_lookup_ptr
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dns_lookup_ptr(host, params, event_parent, callback, context, lookup_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - client
    - ','
    - host
    - ','
    - event
    - ','
    - callback
    - ','
    - context
    - ','
    - lookup_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: dns_client_lookup
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dns_client_lookup(client, host, event, callback, context, lookup_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - client
    - ','
    - ip
    - ','
    - event
    - ','
    - callback
    - ','
    - context
    - ','
    - lookup_r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: dns_client_lookup_ptr
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-lookup.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dns_client_lookup_ptr(client, ip, event, callback, context, lookup_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: dns_client_cache_entry_cmp
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dns_client_cache_entry_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:45,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:46,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:47,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _entry
    argTypes:
    - struct dns_client_cache_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: dns_client_cache_entry_free
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.c
    functionUses: 0
    functionsReached:
    - i_free
    linkageType: ''
    returnType: void
    signature: void dns_client_cache_entry_free(struct dns_client_cache_entry **_entry)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: timeout_add
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:61,1
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:65,1
    - Dst: priorityq_remove
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:73,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:74,1
    - Dst: dns_client_cache_entry_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:75,1
    - Dst: i_new
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:77,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:79,1
    - Dst: i_strdup
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:80,1
    - Dst: i_memdup
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:83,1
    - Dst: priorityq_add
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:86,1
    - Dst: hash_table_insert
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:87,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - cache
    - cache_key
    - result
    argTypes:
    - struct dns_client_cache*
    - char*
    - struct dns_lookup_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 88
    functionName: dns_client_cache_entry
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.c
    functionUses: 1
    functionsReached:
    - timeout_add
    - hash_table_remove
    - dns_client_cache_entry_free
    - i_memdup
    - i_strdup
    - hash_table_insert
    - i_new
    - priorityq_remove
    - priorityq_add
    - hash_table_lookup
    linkageType: ''
    returnType: void
    signature: "void dns_client_cache_entry(struct dns_client_cache *cache,\n\t\t\t
      \   const char *cache_key,\n\t\t\t    const struct dns_lookup_result *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dns_client_cache*::refresh_callback
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cache
    - entry
    argTypes:
    - struct dns_client_cache*
    - struct dns_client_cache_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 102
    functionName: dns_client_cache_entry_refresh
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.c
    functionUses: 0
    functionsReached:
    - struct dns_client_cache*::refresh_callback
    linkageType: ''
    returnType: void
    signature: "void dns_client_cache_entry_refresh(struct dns_client_cache *cache,\n\t\t\t\t\t
      \  struct dns_client_cache_entry *entry)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hash_table_lookup
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:111,1
    - Dst: priorityq_remove
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:115,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:116,1
    - Dst: dns_client_cache_entry_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:117,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:122,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:123,1
    - Dst: p_memdup
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:127,1
    - Dst: dns_client_cache_entry_refresh
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:132,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - cache
    - cache_key
    - pool
    - result_r
    argTypes:
    - struct dns_client_cache*
    - char*
    - pool_t
    - struct dns_lookup_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 104
    functionDepth: 5
    functionLinenumber: 104
    functionLinenumberEnd: 134
    functionName: dns_client_cache_lookup
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.c
    functionUses: 1
    functionsReached:
    - i_zero
    - p_strdup
    - hash_table_remove
    - dns_client_cache_entry_refresh
    - dns_client_cache_entry_free
    - priorityq_remove
    - hash_table_lookup
    - p_memdup
    linkageType: ''
    returnType: bool
    signature: "bool dns_client_cache_lookup(struct dns_client_cache *cache,\n\t\t\t
      \    const char *cache_key, pool_t pool,\n\t\t\t     struct dns_lookup_result
      *result_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_peek
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:139,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:141,1
    - Dst: priorityq_pop
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:144,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:145,1
    - Dst: dns_client_cache_entry_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:146,1
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:154,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct dns_client_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 136
    functionDepth: 6
    functionLinenumber: 136
    functionLinenumberEnd: 156
    functionName: dns_client_cache_clean
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.c
    functionUses: 0
    functionsReached:
    - priorityq_pop
    - container_of
    - priorityq_peek
    - hash_table_remove
    - dns_client_cache_entry_free
    - priorityq_count
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dns_client_cache_clean(struct dns_client_cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:164,1
    - Dst: hash_table_create
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:168,1
    - Dst: priorityq_init
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ttl_secs
    - refresh_callback
    - refresh_context
    argTypes:
    - unsigned int
    - dns_client_cache_refresh_callback_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 172
    functionName: dns_client_cache_init
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.c
    functionUses: 1
    functionsReached:
    - priorityq_init
    - hash_table_create
    - i_new
    linkageType: ''
    returnType: struct dns_client_cache
    signature: "struct dns_client_cache *\ndns_client_cache_init(unsigned int ttl_secs,\n\t\t
      \     dns_client_cache_refresh_callback_t *refresh_callback,\n\t\t      void
      *refresh_context)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: priorityq_count
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:181,1
    - Dst: priorityq_pop
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:182,1
    - Dst: container_of
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:184,1
    - Dst: hash_table_remove
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:185,1
    - Dst: dns_client_cache_entry_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:186,1
    - Dst: timeout_remove
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:188,1
    - Dst: hash_table_destroy
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:189,1
    - Dst: priorityq_deinit
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:190,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-dns-client/dns-client-cache.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - _cache
    argTypes:
    - struct dns_client_cache**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 174
    functionDepth: 6
    functionLinenumber: 174
    functionLinenumberEnd: 192
    functionName: dns_client_cache_deinit
    functionSourceFile: /src/dovecot/src/lib-dns-client/dns-client-cache.c
    functionUses: 1
    functionsReached:
    - priorityq_pop
    - container_of
    - hash_table_destroy
    - hash_table_remove
    - dns_client_cache_entry_free
    - priorityq_deinit
    - i_free
    - priorityq_count
    - timeout_remove
    linkageType: ''
    returnType: void
    signature: void dns_client_cache_deinit(struct dns_client_cache **_cache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-url.c:139,1
    - Dst: str_to_uint32
      Src: /src/dovecot/src/lib-imap/imap-url.c:140,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-url.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - parser
    - data
    - number_r
    argTypes:
    - struct uri_parser*
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 128
    functionDepth: 11
    functionLinenumber: 128
    functionLinenumberEnd: 149
    functionName: imap_url_parse_number
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 0
    functionsReached:
    - t_strdup_printf
    - str_to_uint32
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: "int imap_url_parse_number(struct uri_parser *parser, const char *data,\n\t\t
      \     uint32_t *number_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-url.c:158,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-imap/imap-url.c:159,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-url.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - parser
    - data
    - number_r
    argTypes:
    - struct uri_parser*
    - char*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 151
    functionDepth: 11
    functionLinenumber: 151
    functionLinenumberEnd: 168
    functionName: imap_url_parse_offset
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 0
    functionsReached:
    - str_to_uoff
    - t_strdup_printf
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: "int imap_url_parse_offset(struct uri_parser *parser, const char *data,\n\t\t
      \     uoff_t *number_r)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_slashslash_host_authority
      Src: /src/dovecot/src/lib-imap/imap-url.c:195,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-url.c:216,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap/imap-url.c:225,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-url.c:226,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-url.c:234,1
    - Dst: uri_char_sanitize
      Src: /src/dovecot/src/lib-imap/imap-url.c:236,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-imap/imap-url.c:245,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-url.c:247,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-imap/imap-url.c:258,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-url.c:260,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 52
    argCount: 1
    argNames:
    - url_parser
    argTypes:
    - struct imap_url_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 170
    functionDepth: 11
    functionLinenumber: 170
    functionLinenumberEnd: 270
    functionName: imap_url_parse_iserver
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - uri_data_decode
    - t_strdup_printf
    - uri_parse_slashslash_host_authority
    - str_begins_icase
    - uri_char_sanitize
    linkageType: ''
    returnType: int
    signature: int imap_url_parse_iserver(struct imap_url_parser *url_parser)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap/imap-url.c:295,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:301,1
    - Dst: iso8601_date_parse
      Src: /src/dovecot/src/lib-imap/imap-url.c:302,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap/imap-url.c:312,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:333,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-url.c:334,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:346,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:350,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-url.c:359,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:361,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-imap/imap-url.c:364,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:368,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-url.c:369,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:376,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-url.c:377,1
    - Dst: p_strconcat
      Src: /src/dovecot/src/lib-imap/imap-url.c:379,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:380,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-url.c:380,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:397,1
    - Dst: p_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:407,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-url.c:413,1
    - Dst: t_buffer_create
      Src: /src/dovecot/src/lib-imap/imap-url.c:418,1
    - Dst: hex_to_binary
      Src: /src/dovecot/src/lib-imap/imap-url.c:419,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 103
    argCount: 2
    argNames:
    - url_parser
    - urlext
    argTypes:
    - struct imap_url_parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 272
    functionDepth: 11
    functionLinenumber: 272
    functionLinenumberEnd: 429
    functionName: imap_url_parse_urlauth
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 0
    functionsReached:
    - strchr
    - p_strdup_until
    - p_strdup
    - uri_data_decode
    - hex_to_binary
    - strlen
    - t_strdup_printf
    - t_buffer_create
    - str_begins_icase
    - iso8601_date_parse
    - t_strdup_until
    - p_strconcat
    linkageType: ''
    returnType: int
    signature: int imap_url_parse_urlauth(struct imap_url_parser *url_parser, const
      char *urlext)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-url.c:479,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-url.c:495,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-url.c:503,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-imap/imap-url.c:504,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-url.c:514,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-imap/imap-url.c:529,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:544,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-url.c:549,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:550,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-imap/imap-url.c:551,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:553,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap/imap-url.c:562,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-url.c:566,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:567,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-imap/imap-url.c:568,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:570,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:574,1
    - Dst: imap_url_parse_number
      Src: /src/dovecot/src/lib-imap/imap-url.c:584,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap/imap-url.c:599,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:601,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:608,1
    - Dst: imap_url_parse_number
      Src: /src/dovecot/src/lib-imap/imap-url.c:615,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap/imap-url.c:629,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-url.c:632,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:639,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-url.c:640,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:641,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-imap/imap-url.c:643,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:645,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:665,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-url.c:666,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:667,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-imap/imap-url.c:668,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:670,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-url.c:675,1
    - Dst: str_begins_icase
      Src: /src/dovecot/src/lib-imap/imap-url.c:683,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:687,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:689,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-url.c:696,1
    - Dst: imap_url_parse_offset
      Src: /src/dovecot/src/lib-imap/imap-url.c:701,1
    - Dst: t_strdup_until
      Src: /src/dovecot/src/lib-imap/imap-url.c:707,1
    - Dst: imap_url_parse_offset
      Src: /src/dovecot/src/lib-imap/imap-url.c:713,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-url.c:721,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-imap/imap-url.c:723,1
    - Dst: imap_url_parse_urlauth
      Src: /src/dovecot/src/lib-imap/imap-url.c:732,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-url.c:736,1
    - Dst: str_sanitize
      Src: /src/dovecot/src/lib-imap/imap-url.c:738,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-url.c:747,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-url.c:748,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:748,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-url.c:752,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:752,1
    CyclomaticComplexity: 100
    EdgeCount: 100
    ICount: 216
    argCount: 4
    argNames:
    - url_parser
    - path
    - relative
    - is_messagelist_r
    argTypes:
    - struct imap_url_parser*
    - char**
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 431
    functionDepth: 12
    functionLinenumber: 431
    functionLinenumberEnd: 758
    functionName: imap_url_parse_path
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 0
    functionsReached:
    - strchr
    - t_str_new
    - imap_url_parse_offset
    - str_append_c
    - uri_data_decode
    - p_strdup
    - str_len
    - str_c
    - strlen
    - t_strdup_printf
    - imap_url_parse_urlauth
    - str_begins_icase
    - str_sanitize
    - t_strdup_until
    - str_append
    - imap_url_parse_number
    - str_append_data
    linkageType: ''
    returnType: int
    signature: "int imap_url_parse_path(struct imap_url_parser *url_parser,\n\t\t
      \   const char *const *path, int relative,\n\t\t    bool *is_messagelist_r)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: uri_parse_scheme
      Src: /src/dovecot/src/lib-imap/imap-url.c:798,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-url.c:801,1
    - Dst: imap_url_parse_iserver
      Src: /src/dovecot/src/lib-imap/imap-url.c:812,1
    - Dst: uri_parse_path
      Src: /src/dovecot/src/lib-imap/imap-url.c:827,1
    - Dst: uri_host_copy
      Src: /src/dovecot/src/lib-imap/imap-url.c:839,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-imap/imap-url.c:841,1
    - Dst: p_strdup_empty
      Src: /src/dovecot/src/lib-imap/imap-url.c:842,1
    - Dst: imap_url_parse_path
      Src: /src/dovecot/src/lib-imap/imap-url.c:850,1
    - Dst: uri_parse_query
      Src: /src/dovecot/src/lib-imap/imap-url.c:856,1
    - Dst: uri_data_decode
      Src: /src/dovecot/src/lib-imap/imap-url.c:870,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-url.c:873,1
    - Dst: uri_parse_fragment
      Src: /src/dovecot/src/lib-imap/imap-url.c:878,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 66
    argCount: 1
    argNames:
    - url_parser
    argTypes:
    - struct imap_url_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 760
    functionDepth: 13
    functionLinenumber: 760
    functionLinenumberEnd: 885
    functionName: imap_url_do_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_strdup_empty
    - uri_data_decode
    - uri_parse_fragment
    - imap_url_parse_path
    - uri_host_copy
    - uri_parse_query
    - strcasecmp
    - uri_parse_scheme
    - imap_url_parse_iserver
    - uri_parse_path
    linkageType: ''
    returnType: bool
    signature: bool imap_url_do_parse(struct imap_url_parser *url_parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-url.c:897,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-url.c:898,1
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap/imap-url.c:900,1
    - Dst: uri_parser_init
      Src: /src/dovecot/src/lib-imap/imap-url.c:901,1
    - Dst: pool_datastack_create
      Src: /src/dovecot/src/lib-imap/imap-url.c:901,1
    - Dst: t_new
      Src: /src/dovecot/src/lib-imap/imap-url.c:904,1
    - Dst: imap_url_do_parse
      Src: /src/dovecot/src/lib-imap/imap-url.c:909,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-url.c:917,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 6
    argNames:
    - url
    - base
    - flags
    - end_r
    - url_r
    - error_r
    argTypes:
    - char*
    - struct imap_url*
    - enum imap_url_parse_flags
    - char**
    - struct imap_url**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 889
    functionDepth: 14
    functionLinenumber: 889
    functionLinenumberEnd: 921
    functionName: imap_url_parse_prefix
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 1
    functionsReached:
    - i_zero
    - t_new
    - uri_parser_init
    - pool_datastack_create
    - i_assert
    - imap_url_do_parse
    linkageType: ''
    returnType: int
    signature: "int imap_url_parse_prefix(const char *url, const struct imap_url *base,\n\t\t\t
      \ enum imap_url_parse_flags flags, const char **end_r,\n\t\t\t  struct imap_url
      **url_r, const char **error_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib-imap/imap-url.c:930,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-url.c:932,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:936,1
    - Dst: uri_append_query_data
      Src: /src/dovecot/src/lib-imap/imap-url.c:937,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-url.c:941,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:943,1
    - Dst: uri_append_path_data
      Src: /src/dovecot/src/lib-imap/imap-url.c:944,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:947,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-url.c:949,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-url.c:952,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:961,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:962,1
    - Dst: iso8601_date_create
      Src: /src/dovecot/src/lib-imap/imap-url.c:962,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:964,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:965,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:967,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib-imap/imap-url.c:968,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - url
    - urlstr
    argTypes:
    - struct imap_url*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 927
    functionDepth: 13
    functionLinenumber: 927
    functionLinenumberEnd: 973
    functionName: imap_url_append_mailbox
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 0
    functionsReached:
    - uri_append_path_data
    - str_printfa
    - str_append_c
    - iso8601_date_create
    - str_append
    - uri_append_query_data
    - uri_append_user_data
    linkageType: ''
    returnType: void
    signature: void imap_url_append_mailbox(const struct imap_url *url, string_t *urlstr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-url.c:977,1
    - Dst: uri_append_scheme
      Src: /src/dovecot/src/lib-imap/imap-url.c:980,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:981,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib-imap/imap-url.c:986,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-url.c:988,1
    - Dst: uri_append_user_data
      Src: /src/dovecot/src/lib-imap/imap-url.c:989,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:991,1
    - Dst: uri_append_host
      Src: /src/dovecot/src/lib-imap/imap-url.c:995,1
    - Dst: uri_append_port
      Src: /src/dovecot/src/lib-imap/imap-url.c:996,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:999,1
    - Dst: imap_url_append_mailbox
      Src: /src/dovecot/src/lib-imap/imap-url.c:1003,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/imap-url.c:1004,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - url
    argTypes:
    - struct imap_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 975
    functionDepth: 14
    functionLinenumber: 975
    functionLinenumberEnd: 1005
    functionName: imap_url_create
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 1
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - uri_append_scheme
    - imap_url_append_mailbox
    - uri_append_host
    - str_append
    - uri_append_user_data
    - uri_append_port
    linkageType: ''
    returnType: char
    signature: char *imap_url_create(const struct imap_url *url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-imap/imap-url.c:1011,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-imap/imap-url.c:1011,1
    - Dst: binary_to_hex
      Src: /src/dovecot/src/lib-imap/imap-url.c:1012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rumpurl
    - mechanism
    - token
    - token_len
    argTypes:
    - char*
    - char*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1007
    functionDepth: 8
    functionLinenumber: 1007
    functionLinenumberEnd: 1013
    functionName: imap_url_add_urlauth
    functionSourceFile: /src/dovecot/src/lib-imap/imap-url.c
    functionUses: 1
    functionsReached:
    - t_str_lcase
    - binary_to_hex
    - t_strconcat
    linkageType: ''
    returnType: char
    signature: "char *\nimap_url_add_urlauth(const char *rumpurl, const char *mechanism,\n\t\t
      \    const unsigned char *token, size_t token_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:33,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:36,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:38,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:39,1
    - Dst: imap_append_string_for_humans
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:40,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:41,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:42,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:42,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:42,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 8
    functionDepth: 4
    functionLinenumber: 8
    functionLinenumberEnd: 45
    functionName: test_imap_append_string_for_humans
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-quote.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - strlen
    - test_end
    - imap_append_string_for_humans
    - str_truncate
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_append_string_for_humans(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:76,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:79,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:81,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:82,1
    - Dst: imap_append_astring
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:83,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:84,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:84,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:84,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 47
    functionDepth: 4
    functionLinenumber: 47
    functionLinenumberEnd: 87
    functionName: test_imap_append_astring
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-quote.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - imap_append_astring
    - test_end
    - str_truncate
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_append_astring(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:103,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:106,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:108,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:109,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:110,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:111,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:111,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:111,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: test_imap_append_nstring
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-quote.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - test_end
    - str_truncate
    - imap_append_nstring
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_append_nstring(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:143,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:145,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:146,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:147,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:149,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:150,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:151,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:151,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:151,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:153,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:154,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:155,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:155,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:155,1
    - Dst: str_free
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 116
    functionDepth: 4
    functionLinenumber: 116
    functionLinenumberEnd: 158
    functionName: test_imap_append_nstring_nolf
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-quote.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - str_truncate
    - imap_append_nstring_nolf
    - str_new
    - N_ELEMENTS
    - test_begin
    - str_free
    linkageType: ''
    returnType: void
    signature: void test_imap_append_nstring_nolf(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:181,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:184,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:186,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:187,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:188,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:189,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:189,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:189,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 162
    functionDepth: 4
    functionLinenumber: 162
    functionLinenumberEnd: 192
    functionName: test_imap_append_string_utf8
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-quote.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - imap_append_string
    - test_assert_idx
    - test_end
    - str_truncate
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_append_string_utf8(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-quote.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 194
    functionDepth: 7
    functionLinenumber: 194
    functionLinenumberEnd: 205
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-quote.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:885,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:885,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:889,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:889,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:891,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:894,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:894,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:898,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:898,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:900,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:903,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:903,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:907,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:907,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:909,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:912,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:915,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:915,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:919,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:922,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:926,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:926,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:930,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:930,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:932,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:934,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:934,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:937,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:937,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:940,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:940,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:944,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:944,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:946,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:948,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:948,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:954,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:954,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:959,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:959,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:962,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:967,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:969,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:969,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:972,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:977,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:978,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:984,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:985,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:988,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:993,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:994,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1000,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1000,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1003,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1008,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1008,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1014,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1014,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1017,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1021,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1021,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1029,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1029,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1041,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1041,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 80
    argCount: 2
    argNames:
    - urlt
    - urlp
    argTypes:
    - struct imap_url*
    - struct imap_url*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 880
    functionDepth: 11
    functionLinenumber: 880
    functionLinenumberEnd: 1047
    functionName: test_imap_url_valid_check
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-url.c
    functionUses: 0
    functionsReached:
    - test_out_quiet
    - strcmp
    - t_strdup_printf
    linkageType: ''
    returnType: void
    signature: "void test_imap_url_valid_check(const struct imap_url *urlt,\n\t\t\t
      \ const struct imap_url *urlp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1064,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1064,1
    - Dst: imap_url_parse_prefix
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1067,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1071,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1071,1
    - Dst: test_imap_url_valid_check
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1074,1
    - Dst: test_out_quiet
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1075,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1075,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1076,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1080,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1049
    functionDepth: 15
    functionLinenumber: 1049
    functionLinenumberEnd: 1081
    functionName: test_imap_url_valid
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-url.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - imap_url_parse_prefix
    - test_imap_url_valid_check
    - t_strdup_printf
    - test_out_quiet
    - test_end
    - null_strcmp
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_url_valid(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1346,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1346,1
    - Dst: imap_url_parse
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1348,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1350,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1351,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1351,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1353,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1332
    functionDepth: 11
    functionLinenumber: 1332
    functionLinenumberEnd: 1354
    functionName: test_imap_url_invalid
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-url.c
    functionUses: 0
    functionsReached:
    - test_out_reason
    - t_strdup_printf
    - test_end
    - test_assert
    - imap_url_parse
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_url_invalid(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1403,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1403,1
    - Dst: imap_url_parse
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1405,1
    - Dst: test_out_reason
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1408,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1408,1
    - Dst: imap_url_create
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1411,1
    - Dst: test_out
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1412,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1412,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1413,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1416,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1394
    functionDepth: 15
    functionLinenumber: 1394
    functionLinenumberEnd: 1417
    functionName: test_imap_url_parse_create
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-url.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_out_reason
    - imap_url_create
    - t_strdup_printf
    - test_end
    - test_out
    - imap_url_parse
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_url_parse_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-url.c:1430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1422
    functionDepth: 7
    functionLinenumber: 1422
    functionLinenumberEnd: 1431
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-url.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:17,1
    - Dst: buffer_get_modifiable_data
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:47,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:48,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 26
    argCount: 1
    argNames:
    - buf
    argTypes:
    - buffer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 49
    functionName: pack_whitespace
    functionSourceFile: /src/dovecot/src/lib-imap/imap-base-subject.c
    functionUses: 0
    functionsReached:
    - buffer_set_used_size
    - buffer_get_modifiable_data
    linkageType: ''
    returnType: void
    signature: void pack_whitespace(buffer_t *buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_get_data
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:58,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:67,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:76,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:77,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - buf
    - start_pos
    - is_reply_or_forward_r
    argTypes:
    - buffer_t*
    - size_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 79
    functionName: remove_subj_trailers
    functionSourceFile: /src/dovecot/src/lib-imap/imap-base-subject.c
    functionUses: 0
    functionsReached:
    - buffer_append_c
    - buffer_get_data
    - memcmp
    - buffer_set_used_size
    linkageType: ''
    returnType: void
    signature: "void remove_subj_trailers(buffer_t *buf, size_t start_pos,\n\t\t\t\t
      bool *is_reply_or_forward_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - datap
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 101
    functionName: remove_blob
    functionSourceFile: /src/dovecot/src/lib-imap/imap-base-subject.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool remove_blob(const char **datap)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: remove_blob
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:128,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:132,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:133,1
    - Dst: str_begins
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:134,1
    - Dst: remove_blob
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:140,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - buf
    - start_pos
    - is_reply_or_forward_r
    argTypes:
    - buffer_t*
    - size_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 150
    functionName: remove_subj_leader
    functionSourceFile: /src/dovecot/src/lib-imap/imap-base-subject.c
    functionUses: 0
    functionsReached:
    - remove_blob
    - str_begins
    linkageType: ''
    returnType: bool
    signature: "bool remove_subj_leader(buffer_t *buf, size_t *start_pos,\n\t\t\t
      \      bool *is_reply_or_forward_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: remove_blob
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - start_pos
    argTypes:
    - buffer_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 165
    functionName: remove_blob_when_nonempty
    functionSourceFile: /src/dovecot/src/lib-imap/imap-base-subject.c
    functionUses: 0
    functionsReached:
    - remove_blob
    linkageType: ''
    returnType: bool
    signature: bool remove_blob_when_nonempty(buffer_t *buf, size_t *start_pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:177,1
    - Dst: buffer_set_used_size
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:185,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - buf
    - start_pos
    - is_reply_or_forward_r
    argTypes:
    - buffer_t*
    - size_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 167
    functionDepth: 5
    functionLinenumber: 167
    functionLinenumberEnd: 190
    functionName: remove_subj_fwd_hdr
    functionSourceFile: /src/dovecot/src/lib-imap/imap-base-subject.c
    functionUses: 0
    functionsReached:
    - buffer_append_c
    - str_begins_with
    - buffer_set_used_size
    linkageType: ''
    returnType: bool
    signature: "bool remove_subj_fwd_hdr(buffer_t *buf, size_t *start_pos,\n\t\t\t\tbool
      *is_reply_or_forward_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:201,1
    - Dst: buffer_create_dynamic
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:202,1
    - Dst: message_header_decode_utf8
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:207,1
    - Dst: buffer_append_c
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:209,1
    - Dst: pack_whitespace
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:211,1
    - Dst: remove_subj_trailers
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:218,1
    - Dst: remove_subj_leader
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:223,1
    - Dst: remove_blob_when_nonempty
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:230,1
    - Dst: remove_subj_fwd_hdr
      Src: /src/dovecot/src/lib-imap/imap-base-subject.c:239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - pool
    - subject
    - is_reply_or_forward_r
    argTypes:
    - pool_t
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 192
    functionDepth: 6
    functionLinenumber: 192
    functionLinenumberEnd: 244
    functionName: imap_get_base_subject_cased
    functionSourceFile: /src/dovecot/src/lib-imap/imap-base-subject.c
    functionUses: 3
    functionsReached:
    - remove_subj_fwd_hdr
    - remove_subj_trailers
    - message_header_decode_utf8
    - strlen
    - buffer_create_dynamic
    - remove_subj_leader
    - remove_blob_when_nonempty
    - pack_whitespace
    - buffer_append_c
    linkageType: ''
    returnType: char
    signature: "char *imap_get_base_subject_cased(pool_t pool, const char *subject,\n\t\t\t\t\tbool
      *is_reply_or_forward_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:133,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:133,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:134,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:135,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:136,1
    - Dst: message_part_envelope_parse_from_header
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:137,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:139,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:141,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - pool
    - message
    argTypes:
    - pool_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 118
    functionDepth: 12
    functionLinenumber: 118
    functionLinenumberEnd: 144
    functionName: msg_parse
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-envelope.c
    functionUses: 0
    functionsReached:
    - strlen
    - message_parser_parse_next_block
    - i_stream_create_from_data
    - message_parser_deinit
    - test_assert
    - i_stream_unref
    - i_assert
    - message_part_envelope_parse_from_header
    - message_parser_init
    linkageType: ''
    returnType: struct message_part_envelope
    signature: 'struct message_part_envelope *

      msg_parse(pool_t pool, const char *message)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:153,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:154,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:156,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:156,1
    - Dst: msg_parse
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:157,1
    - Dst: imap_envelope_write
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:159,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:160,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:160,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:160,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:162,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 146
    functionDepth: 11
    functionLinenumber: 146
    functionLinenumberEnd: 164
    functionName: test_imap_envelope_write
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-envelope.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - t_str_new
    - str_c
    - test_assert_idx
    - t_strdup_printf
    - pool_unref
    - test_end
    - imap_envelope_write
    - msg_parse
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_envelope_write(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:176,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:177,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:179,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:179,1
    - Dst: imap_envelope_parse
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:181,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:182,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:185,1
    - Dst: imap_envelope_write
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:186,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:187,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:187,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:187,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:189,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:192,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 167
    functionDepth: 11
    functionLinenumber: 167
    functionLinenumberEnd: 194
    functionName: test_imap_envelope_parse
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-envelope.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - t_str_new
    - str_c
    - i_error
    - test_assert_idx
    - t_strdup_printf
    - pool_unref
    - test_end
    - str_truncate
    - imap_envelope_parse
    - imap_envelope_write
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_envelope_parse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-envelope.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 7
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-envelope.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 15
    functionName: IS_ASTRING_CHAR
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ASTRING_CHAR(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: IS_ATOM_CHAR
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ATOM_CHAR(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: IS_ATOM_SPECIAL
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ATOM_SPECIAL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: IS_LIST_WILDCARD
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LIST_WILDCARD(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: IS_QUOTED_SPECIAL
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_QUOTED_SPECIAL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: IS_RESP_SPECIAL
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RESP_SPECIAL(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: IMAP_ARG_TYPE_IS_ASTRING
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAP_ARG_TYPE_IS_ASTRING(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: IMAP_ARG_IS_ASTRING
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAP_ARG_IS_ASTRING(arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: IMAP_ARG_IS_NSTRING
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAP_ARG_IS_NSTRING(arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: IMAP_ARG_IS_EOL
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMAP_ARG_IS_EOL(arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IP4
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:19,1
    - Dst: IP4
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:19,1
    - Dst: IP4
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:21,1
    - Dst: IP4
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:21,1
    - Dst: IP4
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:23,1
    - Dst: IP4
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:23,1
    - Dst: IP4
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:25,1
    - Dst: IP4
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:25,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 1
    argNames:
    - ip
    argTypes:
    - struct ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 35
    functionName: imap_remote_ip_is_usable
    functionSourceFile: /src/dovecot/src/lib-imap/imap-keepalive.c
    functionUses: 0
    functionsReached:
    - IP4
    linkageType: ''
    returnType: bool
    signature: bool imap_remote_ip_is_usable(const struct ip_addr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: IP4
    functionSourceFile: /src/dovecot/src/lib-imap/imap-keepalive.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IP4(a,b,c,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_remote_ip_is_usable
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:43,1
    - Dst: net_ip_hash
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:44,1
    - Dst: crc32_str
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:44,1
    - Dst: time
      Src: /src/dovecot/src/lib-imap/imap-keepalive.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - username
    - ip
    - interval_secs
    argTypes:
    - char*
    - struct ip_addr*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 47
    functionName: imap_keepalive_interval_msecs
    functionSourceFile: /src/dovecot/src/lib-imap/imap-keepalive.c
    functionUses: 2
    functionsReached:
    - net_ip_hash
    - crc32_str
    - time
    - imap_remote_ip_is_usable
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int imap_keepalive_interval_msecs(const char *username, const
      struct ip_addr *ip,\n\t\t\t      unsigned int interval_secs)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-util.c:17,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:19,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:21,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:23,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:25,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:27,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:29,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:34,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:35,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-util.c:40,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/imap-util.c:41,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-util.c:41,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - dest
    - flags
    - keywords
    argTypes:
    - string_t*
    - enum mail_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 42
    functionName: imap_write_flags
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 9
    functionsReached:
    - str_append
    - str_append_c
    - str_truncate
    - str_len
    linkageType: ''
    returnType: void
    signature: "void imap_write_flags(string_t *dest, enum mail_flags flags,\n\t\t
      \     const char *const *keywords)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-util.c:46,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-util.c:48,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-util.c:50,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-util.c:52,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-util.c:54,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-util.c:56,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 60
    functionName: imap_parse_system_flag
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 7
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: enum mail_flags
    signature: enum mail_flags imap_parse_system_flag(const char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap/imap-util.c:67,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:70,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-util.c:71,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-util.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - dest
    - array
    argTypes:
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 75
    functionName: imap_write_seq_range
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 18
    functionsReached:
    - array_get
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void imap_write_seq_range(string_t *dest, const ARRAY_TYPE(seq_range)
      *array)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:81,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:84,1
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/lib-imap/imap-util.c:84,1
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/lib-imap/imap-util.c:87,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:88,1
    - Dst: str_append_escaped
      Src: /src/dovecot/src/lib-imap/imap-util.c:89,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-util.c:89,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:90,1
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/lib-imap/imap-util.c:94,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-util.c:95,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-util.c:96,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:97,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:101,1
    - Dst: imap_write_args
      Src: /src/dovecot/src/lib-imap/imap-util.c:102,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/lib-imap/imap-util.c:102,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:103,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-util.c:107,1
    - Dst: imap_arg_as_literal_size
      Src: /src/dovecot/src/lib-imap/imap-util.c:108,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-util.c:111,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - dest
    - arg
    argTypes:
    - string_t*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 113
    functionName: imap_write_arg
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 0
    functionsReached:
    - imap_arg_as_literal_size
    - str_printfa
    - str_append_c
    - i_unreached
    - str_append_escaped
    - strlen
    - imap_write_args
    - imap_arg_as_astring
    - str_append
    - imap_arg_as_list
    linkageType: ''
    returnType: void
    signature: void imap_write_arg(string_t *dest, const struct imap_arg *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/imap-util.c:119,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:123,1
    - Dst: imap_write_arg
      Src: /src/dovecot/src/lib-imap/imap-util.c:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - dest
    - args
    argTypes:
    - string_t*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 115
    functionDepth: 4
    functionLinenumber: 115
    functionLinenumberEnd: 126
    functionName: imap_write_args
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 4
    functionsReached:
    - str_append_c
    - imap_write_arg
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: void
    signature: void imap_write_args(string_t *dest, const struct imap_arg *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 136
    functionName: imap_human_args_fix_control_chars
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_human_args_fix_control_chars(char *str)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/imap-util.c:142,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:146,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:150,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:154,1
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/lib-imap/imap-util.c:154,1
    - Dst: imap_arg_as_astring
      Src: /src/dovecot/src/lib-imap/imap-util.c:158,1
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-imap/imap-util.c:160,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-util.c:161,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-util.c:162,1
    - Dst: str_escape
      Src: /src/dovecot/src/lib-imap/imap-util.c:165,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:167,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-util.c:168,1
    - Dst: uni_utf8_get_valid_data
      Src: /src/dovecot/src/lib-imap/imap-util.c:170,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-util.c:171,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:172,1
    - Dst: imap_human_args_fix_control_chars
      Src: /src/dovecot/src/lib-imap/imap-util.c:174,1
    - Dst: str_c_modifiable
      Src: /src/dovecot/src/lib-imap/imap-util.c:175,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:176,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:180,1
    - Dst: imap_write_args_for_human
      Src: /src/dovecot/src/lib-imap/imap-util.c:181,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/lib-imap/imap-util.c:181,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:182,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-util.c:186,1
    - Dst: imap_arg_as_literal_size
      Src: /src/dovecot/src/lib-imap/imap-util.c:187,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-util.c:190,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - dest
    - args
    argTypes:
    - string_t*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 138
    functionDepth: 6
    functionLinenumber: 138
    functionLinenumberEnd: 193
    functionName: imap_write_args_for_human
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 2
    functionsReached:
    - imap_arg_as_literal_size
    - str_printfa
    - str_append_c
    - imap_human_args_fix_control_chars
    - str_len
    - str_c_modifiable
    - i_unreached
    - strlen
    - strpbrk
    - imap_arg_as_astring
    - str_escape
    - uni_utf8_get_valid_data
    - imap_write_args_for_human
    - str_append
    - imap_arg_as_list
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: void
    signature: void imap_write_args_for_human(string_t *dest, const struct imap_arg
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-util.c:199,1
    - Dst: imap_write_args
      Src: /src/dovecot/src/lib-imap/imap-util.c:200,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 195
    functionDepth: 5
    functionLinenumber: 195
    functionLinenumberEnd: 202
    functionName: imap_args_to_str
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 2
    functionsReached:
    - imap_write_args
    - str_c
    - t_str_new
    linkageType: ''
    returnType: char
    signature: char *imap_args_to_str(const struct imap_arg *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-imap/imap-util.c:209,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-util.c:211,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-imap/imap-util.c:212,1
    - Dst: str_begins_with
      Src: /src/dovecot/src/lib-imap/imap-util.c:213,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-util.c:217,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:218,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:219,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-util.c:221,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-util.c:222,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:223,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-util.c:224,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/imap-util.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - dest
    - capabilities
    argTypes:
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 204
    functionDepth: 4
    functionLinenumber: 204
    functionLinenumberEnd: 226
    functionName: imap_write_capability
    functionSourceFile: /src/dovecot/src/lib-imap/imap-util.c
    functionUses: 2
    functionsReached:
    - str_c
    - t_str_new
    - str_begins_with
    - str_append_c
    - str_len
    - array_is_empty
    - array_front
    - str_append
    linkageType: ''
    returnType: void
    signature: void imap_write_capability(string_t *dest, const ARRAY_TYPE(const_string)
      *capabilities)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_match_init_multiple
      Src: /src/dovecot/src/lib-imap/imap-match.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - pool
    - pattern
    - inboxcase
    - separator
    argTypes:
    - pool_t
    - char*
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: imap_match_init
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 7
    functionsReached:
    - imap_match_init_multiple
    linkageType: ''
    returnType: struct imap_match_glob
    signature: "struct imap_match_glob *\nimap_match_init(pool_t pool, const char
      *pattern,\n\t\tbool inboxcase, char separator)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: t_strdup_noconst
      Src: /src/dovecot/src/lib-imap/imap-match.c:53,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 49
    functionDepth: 7
    functionLinenumber: 49
    functionLinenumberEnd: 76
    functionName: pattern_compress
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 0
    functionsReached:
    - t_strdup_noconst
    linkageType: ''
    returnType: char
    signature: char *pattern_compress(const char *pattern)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-imap/imap-match.c:83,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-match.c:94,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-imap/imap-match.c:94,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 23
    argCount: 2
    argNames:
    - pattern
    - separator
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 110
    functionName: pattern_is_inboxcase
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 0
    functionsReached:
    - strchr
    - i_toupper
    linkageType: ''
    returnType: bool
    signature: bool pattern_is_inboxcase(const char *pattern, char separator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_array_length
      Src: /src/dovecot/src/lib-imap/imap-match.c:121,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/imap-match.c:122,1
    - Dst: pattern_compress
      Src: /src/dovecot/src/lib-imap/imap-match.c:127,1
    - Dst: pattern_is_inboxcase
      Src: /src/dovecot/src/lib-imap/imap-match.c:129,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-match.c:132,1
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-imap/imap-match.c:137,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-match.c:144,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-match.c:145,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-imap/imap-match.c:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - pool
    - patterns
    - inboxcase
    - separator
    argTypes:
    - pool_t
    - char**
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 112
    functionDepth: 8
    functionLinenumber: 112
    functionLinenumberEnd: 155
    functionName: imap_match_init_multiple_real
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_new
    - pattern_is_inboxcase
    - strlen
    - str_array_length
    - pattern_compress
    - i_assert
    - p_malloc
    linkageType: ''
    returnType: struct imap_match_glob
    signature: "struct imap_match_glob *\nimap_match_init_multiple_real(pool_t pool,
      const char *const *patterns,\n\t\t\t      bool inboxcase, char separator)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_match_init_multiple_real
      Src: /src/dovecot/src/lib-imap/imap-match.c:164,1
    - Dst: imap_match_init_multiple_real
      Src: /src/dovecot/src/lib-imap/imap-match.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - pool
    - patterns
    - inboxcase
    - separator
    argTypes:
    - pool_t
    - char**
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 157
    functionDepth: 9
    functionLinenumber: 157
    functionLinenumberEnd: 170
    functionName: imap_match_init_multiple
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 8
    functionsReached:
    - imap_match_init_multiple_real
    linkageType: ''
    returnType: struct imap_match_glob
    signature: "struct imap_match_glob *\nimap_match_init_multiple(pool_t pool, const
      char *const *patterns,\n\t\t\t bool inboxcase, char separator)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_free
      Src: /src/dovecot/src/lib-imap/imap-match.c:178,1
    - Dst: p_free
      Src: /src/dovecot/src/lib-imap/imap-match.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - glob
    argTypes:
    - struct imap_match_glob**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 181
    functionName: imap_match_deinit
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 1
    functionsReached:
    - p_free
    linkageType: ''
    returnType: void
    signature: void imap_match_deinit(struct imap_match_glob **glob)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap/imap-match.c:186,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap/imap-match.c:190,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap/imap-match.c:194,1
    - Dst: array_append_zero
      Src: /src/dovecot/src/lib-imap/imap-match.c:196,1
    - Dst: imap_match_init_multiple_real
      Src: /src/dovecot/src/lib-imap/imap-match.c:197,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-imap/imap-match.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pool
    - glob
    argTypes:
    - pool_t
    - struct imap_match_glob*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 183
    functionDepth: 9
    functionLinenumber: 183
    functionLinenumberEnd: 199
    functionName: imap_match_dup_real
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 0
    functionsReached:
    - imap_match_init_multiple_real
    - array_push_back
    - t_array_init
    - ARRAY_TYPE
    - array_front
    - array_append_zero
    linkageType: ''
    returnType: struct imap_match_glob
    signature: 'struct imap_match_glob *

      imap_match_dup_real(pool_t pool, const struct imap_match_glob *glob)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_match_dup_real
      Src: /src/dovecot/src/lib-imap/imap-match.c:207,1
    - Dst: imap_match_dup_real
      Src: /src/dovecot/src/lib-imap/imap-match.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - pool
    - glob
    argTypes:
    - pool_t
    - struct imap_match_glob*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 10
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: imap_match_dup
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 0
    functionsReached:
    - imap_match_dup_real
    linkageType: ''
    returnType: struct imap_match_glob
    signature: 'struct imap_match_glob *

      imap_match_dup(pool_t pool, const struct imap_match_glob *glob)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/imap-match.c:226,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - glob1
    - glob2
    argTypes:
    - struct imap_match_glob*
    - struct imap_match_glob*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 232
    functionName: imap_match_globs_equal
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool imap_match_globs_equal(const struct imap_match_glob *glob1,\n\t\t\t
      \   const struct imap_match_glob *glob2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: uni_gc_scan_get
      Src: /src/dovecot/src/lib-imap/imap-match.c:241,1
    - Dst: uni_gc_scan_get
      Src: /src/dovecot/src/lib-imap/imap-match.c:242,1
    - Dst: memcmp
      Src: /src/dovecot/src/lib-imap/imap-match.c:246,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-imap/imap-match.c:251,1
    - Dst: i_toupper
      Src: /src/dovecot/src/lib-imap/imap-match.c:251,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - gcsc_data
    - gcsc_pattern
    argTypes:
    - struct imap_match_context*
    - struct uni_gc_scanner*
    - struct uni_gc_scanner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 234
    functionDepth: 5
    functionLinenumber: 234
    functionLinenumberEnd: 252
    functionName: match_gc
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 0
    functionsReached:
    - uni_gc_scan_get
    - i_toupper
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool match_gc(struct imap_match_context *ctx,\n\t struct uni_gc_scanner
      *gcsc_data, struct uni_gc_scanner *gcsc_pattern)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:266,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:267,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:268,1
    - Dst: match_gc
      Src: /src/dovecot/src/lib-imap/imap-match.c:269,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:270,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:272,1
    - Dst: uni_gc_scan_get
      Src: /src/dovecot/src/lib-imap/imap-match.c:282,1
    - Dst: uni_gc_scan_get
      Src: /src/dovecot/src/lib-imap/imap-match.c:283,1
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib-imap/imap-match.c:284,1
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib-imap/imap-match.c:285,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:287,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:289,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:295,1
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib-imap/imap-match.c:296,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:298,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:300,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:301,1
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib-imap/imap-match.c:302,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:307,1
    - Dst: match_gc
      Src: /src/dovecot/src/lib-imap/imap-match.c:308,1
    - Dst: match_sub
      Src: /src/dovecot/src/lib-imap/imap-match.c:309,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:317,1
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib-imap/imap-match.c:320,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:324,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:325,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:326,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:327,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:333,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:334,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:335,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 56
    argCount: 3
    argNames:
    - ctx
    - gcsc_data_p
    - gcsc_pattern_p
    argTypes:
    - struct imap_match_context*
    - struct uni_gc_scanner*
    - struct uni_gc_scanner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 254
    functionDepth: 6
    functionLinenumber: 254
    functionLinenumberEnd: 344
    functionName: match_sub
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 1
    functionsReached:
    - uni_gc_scan_shift
    - uni_gc_scan_at_end
    - uni_gc_scan_get
    - match_gc
    - match_sub
    - uni_gc_scan_ascii_equals
    linkageType: ''
    returnType: enum imap_match_result
    signature: "enum imap_match_result match_sub(struct imap_match_context *ctx,\n\t
      \ struct uni_gc_scanner *gcsc_data_p,\n\t  struct uni_gc_scanner *gcsc_pattern_p)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strncasecmp
      Src: /src/dovecot/src/lib-imap/imap-match.c:353,1
    - Dst: uni_gc_scanner_init
      Src: /src/dovecot/src/lib-imap/imap-match.c:363,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-match.c:363,1
    - Dst: uni_gc_scanner_init
      Src: /src/dovecot/src/lib-imap/imap-match.c:364,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-match.c:364,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:366,1
    - Dst: match_sub
      Src: /src/dovecot/src/lib-imap/imap-match.c:368,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:370,1
    - Dst: uni_gc_scan_ascii_equals
      Src: /src/dovecot/src/lib-imap/imap-match.c:375,1
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib-imap/imap-match.c:376,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:378,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:381,1
    - Dst: match_gc
      Src: /src/dovecot/src/lib-imap/imap-match.c:382,1
    - Dst: match_sub
      Src: /src/dovecot/src/lib-imap/imap-match.c:383,1
    - Dst: uni_gc_scan_shift
      Src: /src/dovecot/src/lib-imap/imap-match.c:388,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:392,1
    - Dst: uni_gc_scan_at_end
      Src: /src/dovecot/src/lib-imap/imap-match.c:393,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - data
    - pattern
    argTypes:
    - struct imap_match_context*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 346
    functionDepth: 7
    functionLinenumber: 346
    functionLinenumberEnd: 395
    functionName: imap_match_pattern
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 0
    functionsReached:
    - strlen
    - uni_gc_scan_shift
    - match_sub
    - uni_gc_scan_at_end
    - match_gc
    - uni_gc_scanner_init
    - strncasecmp
    - uni_gc_scan_ascii_equals
    linkageType: ''
    returnType: enum imap_match_result
    signature: "enum imap_match_result imap_match_pattern(struct imap_match_context
      *ctx,\n\t\t   const char *data, const char *pattern)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_match_pattern
      Src: /src/dovecot/src/lib-imap/imap-match.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - glob
    - data
    argTypes:
    - struct imap_match_glob*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 397
    functionDepth: 8
    functionLinenumber: 397
    functionLinenumberEnd: 417
    functionName: imap_match
    functionSourceFile: /src/dovecot/src/lib-imap/imap-match.c
    functionUses: 18
    functionsReached:
    - imap_match_pattern
    linkageType: ''
    returnType: enum imap_match_result
    signature: enum imap_match_result imap_match(struct imap_match_glob *glob, const
      char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-quote.c:22,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-quote.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dest
    - src
    - flags
    argTypes:
    - string_t*
    - char*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: imap_append_string
    functionSourceFile: /src/dovecot/src/lib-imap/imap-quote.c
    functionUses: 7
    functionsReached:
    - i_assert
    - imap_append_nstring
    linkageType: ''
    returnType: void
    signature: "void imap_append_string(string_t *dest, const char *src,\n\t\t\tenum
      imap_quote_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-quote.c:32,1
    - Dst: IS_ASTRING_CHAR
      Src: /src/dovecot/src/lib-imap/imap-quote.c:35,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-quote.c:36,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-quote.c:41,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-quote.c:42,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-quote.c:44,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - dest
    - src
    - flags
    argTypes:
    - string_t*
    - char*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 45
    functionName: imap_append_astring
    functionSourceFile: /src/dovecot/src/lib-imap/imap-quote.c
    functionUses: 28
    functionsReached:
    - imap_append_string
    - strcasecmp
    - str_append
    - i_assert
    - IS_ASTRING_CHAR
    linkageType: ''
    returnType: void
    signature: "void imap_append_astring(string_t *dest, const char *src,\n\t\t\t
      enum imap_quote_flags flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-quote.c:50,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-quote.c:52,1
    - Dst: buffer_append
      Src: /src/dovecot/src/lib-imap/imap-quote.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dest
    - src
    - pos
    argTypes:
    - string_t*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 5
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: imap_append_literal
    functionSourceFile: /src/dovecot/src/lib-imap/imap-quote.c
    functionUses: 0
    functionsReached:
    - buffer_append
    - strlen
    - str_printfa
    linkageType: ''
    returnType: void
    signature: void imap_append_literal(string_t *dest, const char *src, unsigned
      int pos)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-quote.c:63,1
    - Dst: imap_append_literal
      Src: /src/dovecot/src/lib-imap/imap-quote.c:84,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-imap/imap-quote.c:87,1
    - Dst: imap_append_literal
      Src: /src/dovecot/src/lib-imap/imap-quote.c:89,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib-imap/imap-quote.c:96,1
    - Dst: imap_append_literal
      Src: /src/dovecot/src/lib-imap/imap-quote.c:98,1
    - Dst: imap_append_quoted
      Src: /src/dovecot/src/lib-imap/imap-quote.c:106,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - dest
    - src
    - flags
    argTypes:
    - string_t*
    - char*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 56
    functionDepth: 6
    functionLinenumber: 56
    functionLinenumberEnd: 107
    functionName: imap_append_nstring
    functionSourceFile: /src/dovecot/src/lib-imap/imap-quote.c
    functionUses: 4
    functionsReached:
    - imap_append_literal
    - HAS_NO_BITS
    - uni_utf8_get_char
    - str_append
    - imap_append_quoted
    linkageType: ''
    returnType: void
    signature: "void imap_append_nstring(string_t *dest, const char *src,\n\t\t\t
      enum imap_quote_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-quote.c:115,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-quote.c:116,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:120,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:128,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-quote.c:134,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:134,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 3
    argNames:
    - dest
    - src
    - flags
    argTypes:
    - string_t*
    - char*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 109
    functionDepth: 7
    functionLinenumber: 109
    functionLinenumberEnd: 135
    functionName: remove_newlines_and_append
    functionSourceFile: /src/dovecot/src/lib-imap/imap-quote.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - imap_append_nstring
    linkageType: ''
    returnType: void
    signature: "void remove_newlines_and_append(string_t *dest, const char *src,\n\t\t\t
      \  enum imap_quote_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-imap/imap-quote.c:140,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-quote.c:141,1
    - Dst: buffer_get_pool
      Src: /src/dovecot/src/lib-imap/imap-quote.c:142,1
    - Dst: remove_newlines_and_append
      Src: /src/dovecot/src/lib-imap/imap-quote.c:143,1
    - Dst: remove_newlines_and_append
      Src: /src/dovecot/src/lib-imap/imap-quote.c:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - dest
    - src
    - flags
    argTypes:
    - string_t*
    - char*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 137
    functionDepth: 8
    functionLinenumber: 137
    functionLinenumberEnd: 146
    functionName: imap_append_nstring_nolf
    functionSourceFile: /src/dovecot/src/lib-imap/imap-quote.c
    functionUses: 1
    functionsReached:
    - remove_newlines_and_append
    - strpbrk
    - buffer_get_pool
    - imap_append_nstring
    linkageType: ''
    returnType: void
    signature: "void imap_append_nstring_nolf(string_t *dest, const char *src,\n\t\t\t
      \     enum imap_quote_flags flags)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:152,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:161,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:162,1
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-imap/imap-quote.c:165,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:170,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib-imap/imap-quote.c:175,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-imap/imap-quote.c:178,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:184,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - dest
    - src
    - flags
    argTypes:
    - string_t*
    - char*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 185
    functionName: imap_append_quoted
    functionSourceFile: /src/dovecot/src/lib-imap/imap-quote.c
    functionUses: 6
    functionsReached:
    - str_append_data
    - str_append_c
    - HAS_NO_BITS
    - uni_utf8_get_char
    linkageType: ''
    returnType: void
    signature: "void imap_append_quoted(string_t *dest, const char *src,\n\t\t\tenum
      imap_quote_flags flags)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: HAS_NO_BITS
      Src: /src/dovecot/src/lib-imap/imap-quote.c:220,1
    - Dst: uni_utf8_get_char_n
      Src: /src/dovecot/src/lib-imap/imap-quote.c:227,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:246,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-imap/imap-quote.c:247,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:248,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-quote.c:253,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-quote.c:257,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-quote.c:258,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:264,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:272,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-quote.c:277,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/imap-quote.c:284,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-quote.c:284,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-quote.c:285,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-quote.c:285,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 82
    argCount: 4
    argNames:
    - dest
    - src
    - size
    - flags
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 286
    functionName: imap_append_string_for_humans
    functionSourceFile: /src/dovecot/src/lib-imap/imap-quote.c
    functionUses: 1
    functionsReached:
    - str_printfa
    - i_assert
    - str_append_c
    - str_len
    - uni_utf8_get_char_n
    - HAS_NO_BITS
    - str_truncate
    - str_append
    - str_append_data
    linkageType: ''
    returnType: void
    signature: "void imap_append_string_for_humans(string_t *dest,\n\t\t\t\t   const
      unsigned char *src, size_t size,\n\t\t\t\t   enum imap_quote_flags flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:34,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:36,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:37,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:39,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:41,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:46,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:48,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:50,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:52,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - dest
    - in
    - len
    argTypes:
    - string_t*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 56
    functionName: mbase64_encode
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 0
    functionsReached:
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void mbase64_encode(string_t *dest, const unsigned char *in, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - str
    - escape_char
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 68
    functionName: imap_utf8_first_encode_char
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      imap_utf8_first_encode_char(const char *str, char escape_char)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - str
    - chr_r
    argTypes:
    - char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 90
    functionName: imap_escaped_utf8_hex_to_char
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int imap_escaped_utf8_hex_to_char(const char *str, unsigned char *chr_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imap_utf8_first_encode_char
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:101,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:104,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:109,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:110,1
    - Dst: MALLOC_MULTIPLY
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:110,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:110,1
    - Dst: imap_escaped_utf8_hex_to_char
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:113,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:114,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:119,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:124,1
    - Dst: uni_utf8_get_char
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:131,1
    - Dst: UTF16_SURROGATE_HIGH
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:138,1
    - Dst: UTF16_SURROGATE_LOW
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:141,1
    - Dst: uni_utf8_char_bytes
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:145,1
    - Dst: mbase64_encode
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:147,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - src
    - escape_char
    - dest
    argTypes:
    - char*
    - char
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 92
    functionDepth: 5
    functionLinenumber: 92
    functionLinenumberEnd: 150
    functionName: imap_utf8_to_utf7_int
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 0
    functionsReached:
    - MALLOC_MULTIPLY
    - imap_utf8_first_encode_char
    - str_append_c
    - t_malloc0
    - UTF16_SURROGATE_LOW
    - strlen
    - mbase64_encode
    - UTF16_SURROGATE_HIGH
    - imap_escaped_utf8_hex_to_char
    - uni_utf8_get_char
    - str_append
    - str_append_data
    - uni_utf8_char_bytes
    linkageType: ''
    returnType: int
    signature: int imap_utf8_to_utf7_int(const char *src, char escape_char, string_t
      *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_utf8_to_utf7_int
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 6
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: imap_utf8_to_utf7
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 14
    functionsReached:
    - imap_utf8_to_utf7_int
    linkageType: ''
    returnType: int
    signature: int imap_utf8_to_utf7(const char *src, string_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:159,1
    - Dst: imap_utf8_to_utf7_int
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - src
    - escape_char
    - dest
    argTypes:
    - char*
    - char
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 6
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: imap_escaped_utf8_to_utf7
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 1
    functionsReached:
    - i_assert
    - imap_utf8_to_utf7_int
    linkageType: ''
    returnType: int
    signature: int imap_escaped_utf8_to_utf7(const char *src, char escape_char, string_t
      *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_utf8_first_encode_char
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:169,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:174,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:175,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - src
    - dest_r
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 7
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: t_imap_utf8_to_utf7
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 0
    functionsReached:
    - imap_utf8_first_encode_char
    - t_str_new
    - str_c
    - imap_utf8_to_utf7
    linkageType: ''
    returnType: int
    signature: int t_imap_utf8_to_utf7(const char *src, const char **dest_r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:194,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:203,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:204,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:205,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:227,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 4
    argNames:
    - dest
    - output
    - _pos
    - len
    argTypes:
    - string_t*
    - unsigned char[]
    - unsigned int*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 229
    functionName: utf16buf_to_utf8
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 0
    functionsReached:
    - uni_ucs4_to_utf8_c
    - str_data
    - str_len
    linkageType: ''
    returnType: int
    signature: "int utf16buf_to_utf8(string_t *dest, const unsigned char output[4],\n\t\t\t
      \   unsigned int *_pos, unsigned int len)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: utf16buf_to_utf8
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:247,1
    - Dst: utf16buf_to_utf8
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:262,1
    - Dst: utf16buf_to_utf8
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:277,1
    - Dst: utf16buf_to_utf8
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:284,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 47
    argCount: 2
    argNames:
    - dest
    - _src
    argTypes:
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 297
    functionName: mbase64_decode_to_utf8
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 0
    functionsReached:
    - utf16buf_to_utf8
    linkageType: ''
    returnType: int
    signature: int mbase64_decode_to_utf8(string_t *dest, const char **_src)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:310,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:315,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:320,1
    - Dst: strchr
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:322,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:324,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:329,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:332,1
    - Dst: mbase64_decode_to_utf8
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:333,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:336,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:337,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:341,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 3
    argNames:
    - src
    - escape_chars
    - dest
    argTypes:
    - char*
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 299
    functionDepth: 4
    functionLinenumber: 299
    functionLinenumberEnd: 345
    functionName: imap_utf7_to_utf8_int
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 0
    functionsReached:
    - strchr
    - str_printfa
    - str_append_c
    - str_len
    - mbase64_decode_to_utf8
    - str_truncate
    - str_append
    - str_append_data
    linkageType: ''
    returnType: int
    signature: int imap_utf7_to_utf8_int(const char *src, const char *escape_chars,
      string_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_utf7_to_utf8_int
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 5
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: imap_utf7_to_utf8
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 5
    functionsReached:
    - imap_utf7_to_utf8_int
    linkageType: ''
    returnType: int
    signature: int imap_utf7_to_utf8(const char *src, string_t *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:355,1
    - Dst: imap_utf7_to_utf8_int
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:357,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - src
    - escape_chars
    - dest
    argTypes:
    - char*
    - char*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 352
    functionDepth: 5
    functionLinenumber: 352
    functionLinenumberEnd: 359
    functionName: imap_utf7_to_utf8_escaped
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 1
    functionsReached:
    - i_assert
    - i_unreached
    - imap_utf7_to_utf8_int
    linkageType: ''
    returnType: void
    signature: "void imap_utf7_to_utf8_escaped(const char *src, const char *escape_chars,\n\t\t\t
      \      string_t *dest)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:372,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/lib-imap/imap-utf7.c:373,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 361
    functionDepth: 6
    functionLinenumber: 361
    functionLinenumberEnd: 378
    functionName: imap_utf7_is_valid
    functionSourceFile: /src/dovecot/src/lib-imap/imap-utf7.c
    functionUses: 0
    functionsReached:
    - imap_utf7_to_utf8
    - t_str_new
    linkageType: ''
    returnType: bool
    signature: bool imap_utf7_is_valid(const char *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/fuzz-imap-utf7.c:10,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/fuzz-imap-utf7.c:12,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/lib-imap/fuzz-imap-utf7.c:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 8
    functionDepth: 7
    functionLinenumber: 8
    functionLinenumberEnd: 14
    functionName: FUZZ_BEGIN_STR
    functionSourceFile: /src/dovecot/src/lib-imap/fuzz-imap-utf7.c
    functionUses: 0
    functionsReached:
    - imap_utf7_to_utf8
    - t_str_new
    - imap_utf8_to_utf7
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_STR(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:21,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:21,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:22,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:22,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: parse_timezone
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 1
    functionsReached:
    - i_isdigit
    linkageType: ''
    returnType: int
    signature: int parse_timezone(const char *str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap/imap-date.c:37,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:47,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:48,1
    - Dst: strncasecmp
      Src: /src/dovecot/src/lib-imap/imap-date.c:61,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:71,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:71,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:72,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:72,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 29
    argCount: 2
    argNames:
    - str
    - tm
    argTypes:
    - char*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 80
    functionName: imap_parse_date_internal
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 0
    functionsReached:
    - i_zero
    - strncasecmp
    - i_isdigit
    linkageType: ''
    returnType: char
    signature: char *imap_parse_date_internal(const char *str, struct tm *tm)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gmtime
      Src: /src/dovecot/src/lib-imap/imap-date.c:95,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - tm
    - max_time_r
    argTypes:
    - struct tm*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 112
    functionName: tm_is_too_large
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 0
    functionsReached:
    - gmtime
    linkageType: ''
    returnType: bool
    signature: bool tm_is_too_large(const struct tm *tm, time_t *max_time_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: utc_mktime
      Src: /src/dovecot/src/lib-imap/imap-date.c:116,1
    - Dst: tm_is_too_large
      Src: /src/dovecot/src/lib-imap/imap-date.c:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - tm
    - time_r
    argTypes:
    - struct tm*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 140
    functionName: imap_mktime
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 0
    functionsReached:
    - tm_is_too_large
    - utc_mktime
    linkageType: ''
    returnType: int
    signature: int imap_mktime(struct tm *tm, time_t *time_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_parse_date_internal
      Src: /src/dovecot/src/lib-imap/imap-date.c:146,1
    - Dst: imap_mktime
      Src: /src/dovecot/src/lib-imap/imap-date.c:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - str
    - timestamp_r
    argTypes:
    - char*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 154
    functionName: imap_parse_date
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 3
    functionsReached:
    - imap_mktime
    - imap_parse_date_internal
    linkageType: ''
    returnType: bool
    signature: bool imap_parse_date(const char *str, time_t *timestamp_r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imap_parse_date_internal
      Src: /src/dovecot/src/lib-imap/imap-date.c:162,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:171,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:171,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:177,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:177,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:183,1
    - Dst: i_isdigit
      Src: /src/dovecot/src/lib-imap/imap-date.c:183,1
    - Dst: parse_timezone
      Src: /src/dovecot/src/lib-imap/imap-date.c:189,1
    - Dst: imap_mktime
      Src: /src/dovecot/src/lib-imap/imap-date.c:192,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 3
    argNames:
    - str
    - timestamp_r
    - timezone_offset_r
    argTypes:
    - char*
    - time_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 195
    functionName: imap_parse_datetime
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 3
    functionsReached:
    - parse_timezone
    - imap_parse_date_internal
    - imap_mktime
    - i_isdigit
    linkageType: ''
    returnType: bool
    signature: "bool imap_parse_datetime(const char *str, time_t *timestamp_r,\n\t\t\t
      int *timezone_offset_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dovecot/src/lib-imap/imap-date.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - buf
    - tm
    argTypes:
    - char[]
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 214
    functionName: imap_to_date_tm
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void imap_to_date_tm(char buf[11], const struct tm *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib-imap/imap-date.c:222,1
    - Dst: imap_to_date_tm
      Src: /src/dovecot/src/lib-imap/imap-date.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 2
    argNames:
    - tm
    - timezone_offset
    argTypes:
    - struct tm*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 251
    functionName: imap_to_datetime_tm
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 0
    functionsReached:
    - t_malloc0
    - imap_to_date_tm
    linkageType: ''
    returnType: char
    signature: 'char *

      imap_to_datetime_tm(const struct tm *tm, int timezone_offset)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime
      Src: /src/dovecot/src/lib-imap/imap-date.c:258,1
    - Dst: utc_offset
      Src: /src/dovecot/src/lib-imap/imap-date.c:259,1
    - Dst: imap_to_datetime_tm
      Src: /src/dovecot/src/lib-imap/imap-date.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - timestamp
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 253
    functionDepth: 6
    functionLinenumber: 253
    functionLinenumberEnd: 261
    functionName: imap_to_datetime
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 4
    functionsReached:
    - imap_to_datetime_tm
    - localtime
    - utc_offset
    linkageType: ''
    returnType: char
    signature: char *imap_to_datetime(time_t timestamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gmtime
      Src: /src/dovecot/src/lib-imap/imap-date.c:268,1
    - Dst: imap_to_datetime_tm
      Src: /src/dovecot/src/lib-imap/imap-date.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - timestamp
    - timezone_offset
    argTypes:
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 263
    functionDepth: 6
    functionLinenumber: 263
    functionLinenumberEnd: 270
    functionName: imap_to_datetime_tz
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 0
    functionsReached:
    - gmtime
    - imap_to_datetime_tm
    linkageType: ''
    returnType: char
    signature: char *imap_to_datetime_tz(time_t timestamp, int timezone_offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime
      Src: /src/dovecot/src/lib-imap/imap-date.c:277,1
    - Dst: t_malloc0
      Src: /src/dovecot/src/lib-imap/imap-date.c:279,1
    - Dst: imap_to_date_tm
      Src: /src/dovecot/src/lib-imap/imap-date.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - timestamp
    - str_r
    argTypes:
    - time_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 272
    functionDepth: 5
    functionLinenumber: 272
    functionLinenumberEnd: 283
    functionName: imap_to_date
    functionSourceFile: /src/dovecot/src/lib-imap/imap-date.c
    functionUses: 2
    functionsReached:
    - t_malloc0
    - localtime
    - imap_to_date_tm
    linkageType: ''
    returnType: bool
    signature: bool imap_to_date(time_t timestamp, const char **str_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:14,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dest
    - seq
    argTypes:
    - string_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 11
    functionDepth: 2
    functionLinenumber: 11
    functionLinenumberEnd: 17
    functionName: imap_write_seq_range_star_one
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-seqset.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    linkageType: ''
    returnType: void
    signature: void imap_write_seq_range_star_one(string_t *dest, uint32_t seq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:25,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:28,1
    - Dst: imap_write_seq_range_star_one
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:29,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:31,1
    - Dst: imap_write_seq_range_star_one
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:32,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - dest
    - array
    argTypes:
    - string_t*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 19
    functionDepth: 3
    functionLinenumber: 19
    functionLinenumberEnd: 35
    functionName: imap_write_seq_range_star
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-seqset.c
    functionUses: 0
    functionsReached:
    - array_get
    - str_append_c
    - imap_write_seq_range_star_one
    linkageType: ''
    returnType: void
    signature: void imap_write_seq_range_star(string_t *dest, const ARRAY_TYPE(seq_range)
      *array)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:70,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:72,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:73,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:75,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:76,1
    - Dst: imap_seq_set_parse
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:77,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:78,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:80,1
    - Dst: imap_write_seq_range_star
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:81,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:82,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:82,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 86
    functionName: test_imap_seq_set_parse
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-seqset.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - imap_write_seq_range_star
    - test_assert_idx
    - imap_seq_set_parse
    - test_end
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_seq_set_parse(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:106,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:108,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:109,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:111,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:112,1
    - Dst: imap_seq_set_nostar_parse
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:113,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:114,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:116,1
    - Dst: imap_write_seq_range_star
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:117,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:118,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:118,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 88
    functionDepth: 4
    functionLinenumber: 88
    functionLinenumberEnd: 122
    functionName: test_imap_seq_set_nostar_parse
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-seqset.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - imap_write_seq_range_star
    - test_assert_idx
    - test_end
    - test_assert_strcmp_idx
    - t_array_init
    - array_clear
    - ARRAY_TYPE
    - imap_seq_set_nostar_parse
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_seq_set_nostar_parse(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:147,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:149,1
    - Dst: imap_seq_range_parse
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:150,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:151,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:153,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 158
    functionName: test_imap_seq_range_parse
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-seqset.c
    functionUses: 0
    functionsReached:
    - test_assert_idx
    - imap_seq_range_parse
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_seq_range_parse(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:179,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:181,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:183,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:184,1
    - Dst: array_clear
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:185,1
    - Dst: imap_seq_set_ordered_parse
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:186,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:187,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:189,1
    - Dst: array_foreach
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:191,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:192,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:193,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:193,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 197
    functionName: test_imap_seq_set_ordered_parse
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-seqset.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - test_assert_idx
    - array_foreach
    - test_end
    - t_array_init
    - array_clear
    - str_truncate
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    - imap_seq_set_ordered_parse
    linkageType: ''
    returnType: void
    signature: void test_imap_seq_set_ordered_parse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-seqset.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 199
    functionDepth: 7
    functionLinenumber: 199
    functionLinenumberEnd: 209
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-seqset.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 18
    functionName: IS_ATOM_PARSER_INPUT
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ATOM_PARSER_INPUT(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: is_linebreak
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_linebreak(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_new
      Src: /src/dovecot/src/lib-imap/imap-parser.c:76,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/imap-parser.c:78,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-imap/imap-parser.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - input
    - output
    - max_line_size
    argTypes:
    - struct istream*
    - struct ostream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 70
    functionDepth: 3
    functionLinenumber: 70
    functionLinenumberEnd: 87
    functionName: imap_parser_create
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 9
    functionsReached:
    - pool_alloconly_create
    - i_new
    - p_array_init
    linkageType: ''
    returnType: struct imap_parser
    signature: "struct imap_parser *\nimap_parser_create(struct istream *input, struct
      ostream *output,\n\t\t   size_t max_line_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: imap_parser_ref
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 1
    functionsReached:
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imap_parser_ref(struct imap_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:102,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/imap-parser.c:106,1
    - Dst: i_free
      Src: /src/dovecot/src/lib-imap/imap-parser.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - _parser
    argTypes:
    - struct imap_parser**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 108
    functionName: imap_parser_unref
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 11
    functionsReached:
    - i_assert
    - i_free
    - pool_unref
    linkageType: ''
    returnType: void
    signature: void imap_parser_unref(struct imap_parser **_parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: imap_parser_enable_literal_minus
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void imap_parser_enable_literal_minus(struct imap_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_clear
      Src: /src/dovecot/src/lib-imap/imap-parser.c:117,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-imap/imap-parser.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 139
    functionName: imap_parser_reset
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 8
    functionsReached:
    - p_array_init
    - p_clear
    linkageType: ''
    returnType: void
    signature: void imap_parser_reset(struct imap_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - parser
    - input
    - output
    argTypes:
    - struct imap_parser*
    - struct istream*
    - struct ostream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: imap_parser_set_streams
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void imap_parser_set_streams(struct imap_parser *parser, struct istream
      *input,\n\t\t\t     struct ostream *output)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - parser
    - error_r
    argTypes:
    - struct imap_parser*
    - enum imap_parser_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: imap_parser_get_error
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *imap_parser_get_error(struct imap_parser *parser,\n\tenum imap_parser_error
      *error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - parser
    - data
    - data_size
    argTypes:
    - struct imap_parser*
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 175
    functionName: imap_parser_skip_to_next
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: "bool imap_parser_skip_to_next(struct imap_parser *parser,\n\t\t\t\t
      \    const unsigned char **data,\n\t\t\t\t     size_t *data_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap/imap-parser.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 184
    functionName: imap_arg_create
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - array_append_space
    linkageType: ''
    returnType: struct imap_arg
    signature: struct imap_arg *imap_arg_create(struct imap_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_create
      Src: /src/dovecot/src/lib-imap/imap-parser.c:188,1
    - Dst: p_array_init
      Src: /src/dovecot/src/lib-imap/imap-parser.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 195
    functionName: imap_parser_open_list
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - p_array_init
    - imap_arg_create
    linkageType: ''
    returnType: void
    signature: void imap_parser_open_list(struct imap_parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_create
      Src: /src/dovecot/src/lib-imap/imap-parser.c:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 225
    functionName: imap_parser_close_list
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - imap_arg_create
    linkageType: ''
    returnType: bool
    signature: bool imap_parser_close_list(struct imap_parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p_malloc
      Src: /src/dovecot/src/lib-imap/imap-parser.c:233,1
    - Dst: memcpy
      Src: /src/dovecot/src/lib-imap/imap-parser.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - parser
    - data
    - len
    argTypes:
    - struct imap_parser*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 236
    functionName: imap_parser_strdup
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - memcpy
    - p_malloc
    linkageType: ''
    returnType: char
    signature: "char *\nimap_parser_strdup(struct imap_parser *parser,\n\t\t   const
      void *data, size_t len)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_create
      Src: /src/dovecot/src/lib-imap/imap-parser.c:244,1
    - Dst: i_memcasecmp
      Src: /src/dovecot/src/lib-imap/imap-parser.c:249,1
    - Dst: imap_parser_strdup
      Src: /src/dovecot/src/lib-imap/imap-parser.c:258,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:263,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-imap/imap-parser.c:266,1
    - Dst: str_unescape
      Src: /src/dovecot/src/lib-imap/imap-parser.c:271,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-parser.c:273,1
    - Dst: imap_parser_strdup
      Src: /src/dovecot/src/lib-imap/imap-parser.c:291,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-parser.c:296,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 3
    argNames:
    - parser
    - data
    - size
    argTypes:
    - struct imap_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 300
    functionName: imap_parser_save_arg
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - i_memcasecmp
    - p_strndup
    - imap_parser_strdup
    - i_unreached
    - str_unescape
    - strlen
    - imap_arg_create
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void imap_parser_save_arg(struct imap_parser *parser,\n\t\t\t\t const
      unsigned char *data, size_t size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_ATOM_PARSER_INPUT
      Src: /src/dovecot/src/lib-imap/imap-parser.c:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - parser
    - chr
    argTypes:
    - struct imap_parser*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 318
    functionName: is_valid_atom_char
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - IS_ATOM_PARSER_INPUT
    linkageType: ''
    returnType: bool
    signature: bool is_valid_atom_char(struct imap_parser *parser, unsigned char chr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_linebreak
      Src: /src/dovecot/src/lib-imap/imap-parser.c:327,1
    - Dst: imap_parser_save_arg
      Src: /src/dovecot/src/lib-imap/imap-parser.c:328,1
    - Dst: imap_parser_save_arg
      Src: /src/dovecot/src/lib-imap/imap-parser.c:333,1
    - Dst: is_valid_atom_char
      Src: /src/dovecot/src/lib-imap/imap-parser.c:342,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - parser
    - data
    - data_size
    argTypes:
    - struct imap_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 320
    functionDepth: 5
    functionLinenumber: 320
    functionLinenumberEnd: 348
    functionName: imap_parser_read_atom
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - is_linebreak
    - imap_parser_save_arg
    - is_valid_atom_char
    linkageType: ''
    returnType: bool
    signature: "bool imap_parser_read_atom(struct imap_parser *parser,\n\t\t\t\t  const
      unsigned char *data, size_t data_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_save_arg
      Src: /src/dovecot/src/lib-imap/imap-parser.c:358,1
    - Dst: is_linebreak
      Src: /src/dovecot/src/lib-imap/imap-parser.c:388,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - parser
    - data
    - data_size
    argTypes:
    - struct imap_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 350
    functionDepth: 5
    functionLinenumber: 350
    functionLinenumberEnd: 398
    functionName: imap_parser_read_string
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - is_linebreak
    - imap_parser_save_arg
    linkageType: ''
    returnType: bool
    signature: "bool imap_parser_read_string(struct imap_parser *parser,\n\t\t\t\t
      \   const unsigned char *data, size_t data_size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: o_stream_nsend
      Src: /src/dovecot/src/lib-imap/imap-parser.c:420,1
    - Dst: o_stream_is_corked
      Src: /src/dovecot/src/lib-imap/imap-parser.c:421,1
    - Dst: o_stream_uncork
      Src: /src/dovecot/src/lib-imap/imap-parser.c:424,1
    - Dst: o_stream_cork
      Src: /src/dovecot/src/lib-imap/imap-parser.c:425,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 400
    functionDepth: 2
    functionLinenumber: 400
    functionLinenumberEnd: 435
    functionName: imap_parser_literal_end
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - o_stream_is_corked
    - o_stream_nsend
    - o_stream_cork
    - o_stream_uncork
    linkageType: ''
    returnType: bool
    signature: bool imap_parser_literal_end(struct imap_parser *parser)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:447,1
    - Dst: imap_parser_literal_end
      Src: /src/dovecot/src/lib-imap/imap-parser.c:448,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - parser
    - data
    - data_size
    argTypes:
    - struct imap_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 482
    functionName: imap_parser_read_literal
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - imap_parser_literal_end
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: "bool imap_parser_read_literal(struct imap_parser *parser,\n\t\t\t\t
      \    const unsigned char *data,\n\t\t\t\t     size_t data_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:496,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:510,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:514,1
    - Dst: imap_parser_save_arg
      Src: /src/dovecot/src/lib-imap/imap-parser.c:523,1
    - Dst: imap_parser_save_arg
      Src: /src/dovecot/src/lib-imap/imap-parser.c:531,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - parser
    - data
    - data_size
    argTypes:
    - struct imap_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 484
    functionDepth: 5
    functionLinenumber: 484
    functionLinenumberEnd: 534
    functionName: imap_parser_read_literal_data
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - i_assert
    - imap_parser_save_arg
    - i_stream_skip
    linkageType: ''
    returnType: bool
    signature: "bool imap_parser_read_literal_data(struct imap_parser *parser,\n\t\t\t\t\t
      \ const unsigned char *data,\n\t\t\t\t\t  size_t data_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap/imap-parser.c:541,1
    - Dst: array_front
      Src: /src/dovecot/src/lib-imap/imap-parser.c:544,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-parser.c:548,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-parser.c:549,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-parser.c:550,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-parser.c:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 552
    functionName: imap_parser_is_next_resp_text
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - array_count
    - strcasecmp
    - array_front
    linkageType: ''
    returnType: bool
    signature: bool imap_parser_is_next_resp_text(struct imap_parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_back
      Src: /src/dovecot/src/lib-imap/imap-parser.c:562,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-parser.c:566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 568
    functionName: imap_parser_is_next_text
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - strlen
    - array_back
    linkageType: ''
    returnType: bool
    signature: bool imap_parser_is_next_text(struct imap_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_linebreak
      Src: /src/dovecot/src/lib-imap/imap-parser.c:577,1
    - Dst: imap_parser_save_arg
      Src: /src/dovecot/src/lib-imap/imap-parser.c:578,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - parser
    - data
    - data_size
    argTypes:
    - struct imap_parser*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 570
    functionDepth: 5
    functionLinenumber: 570
    functionLinenumberEnd: 584
    functionName: imap_parser_read_text
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - is_linebreak
    - imap_parser_save_arg
    linkageType: ''
    returnType: bool
    signature: "bool imap_parser_read_text(struct imap_parser *parser,\n\t\t\t\t  const
      unsigned char *data, size_t data_size)"
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap/imap-parser.c:593,1
    - Dst: imap_parser_skip_to_next
      Src: /src/dovecot/src/lib-imap/imap-parser.c:599,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:601,1
    - Dst: imap_parser_is_next_text
      Src: /src/dovecot/src/lib-imap/imap-parser.c:604,1
    - Dst: imap_parser_open_list
      Src: /src/dovecot/src/lib-imap/imap-parser.c:662,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:664,1
    - Dst: imap_parser_close_list
      Src: /src/dovecot/src/lib-imap/imap-parser.c:669,1
    - Dst: is_valid_atom_char
      Src: /src/dovecot/src/lib-imap/imap-parser.c:679,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:688,1
    - Dst: imap_parser_read_atom
      Src: /src/dovecot/src/lib-imap/imap-parser.c:692,1
    - Dst: imap_parser_is_next_resp_text
      Src: /src/dovecot/src/lib-imap/imap-parser.c:697,1
    - Dst: imap_parser_read_string
      Src: /src/dovecot/src/lib-imap/imap-parser.c:706,1
    - Dst: imap_parser_read_literal
      Src: /src/dovecot/src/lib-imap/imap-parser.c:721,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap/imap-parser.c:726,1
    - Dst: imap_parser_read_literal_data
      Src: /src/dovecot/src/lib-imap/imap-parser.c:731,1
    - Dst: imap_parser_read_text
      Src: /src/dovecot/src/lib-imap/imap-parser.c:735,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-parser.c:739,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:742,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 124
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 588
    functionDepth: 6
    functionLinenumber: 588
    functionLinenumberEnd: 744
    functionName: imap_parser_read_arg
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - imap_parser_is_next_resp_text
    - imap_parser_read_literal_data
    - is_valid_atom_char
    - i_unreached
    - imap_parser_read_text
    - i_stream_get_data
    - imap_parser_close_list
    - imap_parser_open_list
    - imap_parser_skip_to_next
    - i_stream_skip
    - imap_parser_read_string
    - imap_parser_read_literal
    - imap_parser_read_atom
    - i_assert
    - imap_parser_is_next_text
    linkageType: ''
    returnType: bool
    signature: bool imap_parser_read_arg(struct imap_parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:750,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap/imap-parser.c:752,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-imap/imap-parser.c:754,1
    - Dst: list_add_ghost_eol
      Src: /src/dovecot/src/lib-imap/imap-parser.c:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list_arg
    argTypes:
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 758
    functionName: list_add_ghost_eol
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 1
    functionsReached:
    - array_pop_back
    - i_assert
    - array_append_space
    - list_add_ghost_eol
    linkageType: ''
    returnType: void
    signature: void list_add_ghost_eol(struct imap_arg *list_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - parser
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 765
    functionName: IS_UNFINISHED
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_UNFINISHED(parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap/imap-parser.c:770,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:773,1
    - Dst: list_add_ghost_eol
      Src: /src/dovecot/src/lib-imap/imap-parser.c:786,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap/imap-parser.c:789,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap/imap-parser.c:793,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - parser
    - count
    - args_r
    argTypes:
    - struct imap_parser*
    - unsigned int
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 766
    functionDepth: 3
    functionLinenumber: 766
    functionLinenumberEnd: 795
    functionName: finish_line
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 3
    functionsReached:
    - array_append_space
    - array_get
    - i_stream_skip
    - array_count
    - list_add_ghost_eol
    linkageType: ''
    returnType: int
    signature: "int finish_line(struct imap_parser *parser, unsigned int count,\n\t\t
      \      const struct imap_arg **args_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-imap/imap-parser.c:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 801
    functionName: imap_parser_delete_extra_eol
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - array_pop_back
    linkageType: ''
    returnType: void
    signature: void imap_parser_delete_extra_eol(struct imap_parser *parser)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_delete_extra_eol
      Src: /src/dovecot/src/lib-imap/imap-parser.c:811,1
    - Dst: IS_UNFINISHED
      Src: /src/dovecot/src/lib-imap/imap-parser.c:815,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap/imap-parser.c:816,1
    - Dst: imap_parser_read_arg
      Src: /src/dovecot/src/lib-imap/imap-parser.c:817,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:830,1
    - Dst: IS_UNFINISHED
      Src: /src/dovecot/src/lib-imap/imap-parser.c:834,1
    - Dst: array_count
      Src: /src/dovecot/src/lib-imap/imap-parser.c:835,1
    - Dst: finish_line
      Src: /src/dovecot/src/lib-imap/imap-parser.c:838,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 4
    argNames:
    - parser
    - count
    - flags
    - args_r
    argTypes:
    - struct imap_parser*
    - unsigned int
    - enum imap_parser_flags
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 803
    functionDepth: 7
    functionLinenumber: 803
    functionLinenumberEnd: 844
    functionName: imap_parser_read_args
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 9
    functionsReached:
    - imap_parser_read_arg
    - i_stream_skip
    - imap_parser_delete_extra_eol
    - array_count
    - IS_UNFINISHED
    - finish_line
    linkageType: ''
    returnType: int
    signature: "int imap_parser_read_args(struct imap_parser *parser, unsigned int
      count,\n\t\t\t  enum imap_parser_flags flags,\n\t\t\t  const struct imap_arg
      **args_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap/imap-parser.c:850,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-imap/imap-parser.c:855,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:856,1
    - Dst: array_get_modifiable
      Src: /src/dovecot/src/lib-imap/imap-parser.c:866,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - parser
    - list_r
    argTypes:
    - struct imap_parser*
    - ARRAY_TYPE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 846
    functionDepth: 1
    functionLinenumber: 846
    functionLinenumberEnd: 873
    functionName: imap_parser_get_last_literal_size
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - array_get_modifiable
    - i_assert
    - ARRAY_TYPE
    linkageType: ''
    returnType: struct imap_arg
    signature: "struct imap_arg *\nimap_parser_get_last_literal_size(struct imap_parser
      *parser,\n\t\t\t\t  ARRAY_TYPE(imap_arg_list) **list_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap/imap-parser.c:877,1
    - Dst: imap_parser_get_last_literal_size
      Src: /src/dovecot/src/lib-imap/imap-parser.c:880,1
    - Dst: imap_arg_get_literal_size
      Src: /src/dovecot/src/lib-imap/imap-parser.c:884,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - size_r
    argTypes:
    - struct imap_parser*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 875
    functionDepth: 2
    functionLinenumber: 875
    functionLinenumberEnd: 885
    functionName: imap_parser_get_literal_size
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 1
    functionsReached:
    - imap_parser_get_last_literal_size
    - imap_arg_get_literal_size
    - ARRAY_TYPE
    linkageType: ''
    returnType: bool
    signature: bool imap_parser_get_literal_size(struct imap_parser *parser, uoff_t
      *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap/imap-parser.c:889,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:892,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:893,1
    - Dst: imap_parser_get_last_literal_size
      Src: /src/dovecot/src/lib-imap/imap-parser.c:895,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:896,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-parser.c:899,1
    - Dst: imap_parser_delete_extra_eol
      Src: /src/dovecot/src/lib-imap/imap-parser.c:902,1
    - Dst: array_pop_back
      Src: /src/dovecot/src/lib-imap/imap-parser.c:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 887
    functionDepth: 2
    functionLinenumber: 887
    functionLinenumberEnd: 907
    functionName: imap_parser_read_last_literal
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 2
    functionsReached:
    - imap_parser_get_last_literal_size
    - imap_parser_delete_extra_eol
    - array_pop_back
    - ARRAY_TYPE
    - i_assert
    linkageType: ''
    returnType: void
    signature: void imap_parser_read_last_literal(struct imap_parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap/imap-parser.c:917,1
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap/imap-parser.c:923,1
    - Dst: imap_parser_save_arg
      Src: /src/dovecot/src/lib-imap/imap-parser.c:924,1
    - Dst: finish_line
      Src: /src/dovecot/src/lib-imap/imap-parser.c:927,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - parser
    - count
    - flags
    - args_r
    argTypes:
    - struct imap_parser*
    - unsigned int
    - enum imap_parser_flags
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 909
    functionDepth: 8
    functionLinenumber: 909
    functionLinenumberEnd: 928
    functionName: imap_parser_finish_line
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 2
    functionsReached:
    - finish_line
    - imap_parser_read_args
    - i_stream_get_data
    - imap_parser_save_arg
    linkageType: ''
    returnType: int
    signature: "int imap_parser_finish_line(struct imap_parser *parser, unsigned int
      count,\n\t\t\t    enum imap_parser_flags flags,\n\t\t\t    const struct imap_arg
      **args_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap/imap-parser.c:935,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:945,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-imap/imap-parser.c:946,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct imap_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 930
    functionDepth: 3
    functionLinenumber: 930
    functionLinenumberEnd: 950
    functionName: imap_parser_read_word
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 1
    functionsReached:
    - i_stream_get_data
    - p_strndup
    - i_stream_skip
    linkageType: ''
    returnType: char
    signature: char *imap_parser_read_word(struct imap_parser *parser)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_get_data
      Src: /src/dovecot/src/lib-imap/imap-parser.c:959,1
    - Dst: i_stream_skip
      Src: /src/dovecot/src/lib-imap/imap-parser.c:978,1
    - Dst: p_strndup
      Src: /src/dovecot/src/lib-imap/imap-parser.c:979,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - parser
    - parsing_tag
    - atom_r
    argTypes:
    - struct imap_parser*
    - bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 952
    functionDepth: 3
    functionLinenumber: 952
    functionLinenumberEnd: 1009
    functionName: imap_parser_read_next_atom
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - i_stream_get_data
    - p_strndup
    - i_stream_skip
    linkageType: ''
    returnType: int
    signature: "int imap_parser_read_next_atom(struct imap_parser *parser, bool parsing_tag,\n\t\t\t
      \  const char **atom_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_read_next_atom
      Src: /src/dovecot/src/lib-imap/imap-parser.c:1013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - tag_r
    argTypes:
    - struct imap_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 1011
    functionDepth: 4
    functionLinenumber: 1011
    functionLinenumberEnd: 1014
    functionName: imap_parser_read_tag
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 2
    functionsReached:
    - imap_parser_read_next_atom
    linkageType: ''
    returnType: int
    signature: int imap_parser_read_tag(struct imap_parser *parser, const char **tag_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_read_next_atom
      Src: /src/dovecot/src/lib-imap/imap-parser.c:1019,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - name_r
    argTypes:
    - struct imap_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1016
    functionDepth: 4
    functionLinenumber: 1016
    functionLinenumberEnd: 1020
    functionName: imap_parser_read_command_name
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 2
    functionsReached:
    - imap_parser_read_next_atom
    linkageType: ''
    returnType: int
    signature: "int imap_parser_read_command_name(struct imap_parser *parser,\n\t\t\t\t
      \ const char **name_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_parser_read_next_atom
      Src: /src/dovecot/src/lib-imap/imap-parser.c:1025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - parser
    - tag_r
    argTypes:
    - struct imap_parser*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1022
    functionDepth: 4
    functionLinenumber: 1022
    functionLinenumberEnd: 1026
    functionName: imap_parser_client_read_tag
    functionSourceFile: /src/dovecot/src/lib-imap/imap-parser.c
    functionUses: 0
    functionsReached:
    - imap_parser_read_next_atom
    linkageType: ''
    returnType: int
    signature: "int imap_parser_client_read_tag(struct imap_parser *parser,\n\t\t\t\tconst
      char **tag_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - arg
    - str_r
    argTypes:
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 13
    functionName: imap_arg_get_atom
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 44
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_arg_get_atom(const struct imap_arg *arg, const char **str_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - arg
    - str_r
    argTypes:
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 22
    functionName: imap_arg_get_quoted
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_arg_get_quoted(const struct imap_arg *arg, const char **str_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - arg
    - str_r
    argTypes:
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 31
    functionName: imap_arg_get_string
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_arg_get_string(const struct imap_arg *arg, const char **str_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_ASTRING
      Src: /src/dovecot/src/lib-imap/imap-arg.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - arg
    - str_r
    argTypes:
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: imap_arg_get_astring
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 38
    functionsReached:
    - IMAP_ARG_IS_ASTRING
    linkageType: ''
    returnType: bool
    signature: bool imap_arg_get_astring(const struct imap_arg *arg, const char **str_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-arg.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - arg
    - str_r
    argTypes:
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: imap_arg_get_nstring
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 7
    functionsReached:
    - imap_arg_get_string
    linkageType: ''
    returnType: bool
    signature: bool imap_arg_get_nstring(const struct imap_arg *arg, const char **str_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - arg
    - size_r
    argTypes:
    - struct imap_arg*
    - uoff_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 61
    functionName: imap_arg_get_literal_size
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool imap_arg_get_literal_size(const struct imap_arg *arg, uoff_t *size_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-imap/imap-arg.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - list_r
    argTypes:
    - struct imap_arg*
    - struct imap_arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 69
    functionName: imap_arg_get_list
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 34
    functionsReached:
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: "bool imap_arg_get_list(const struct imap_arg *arg,\n\t\t       const
      struct imap_arg **list_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap/imap-arg.c:80,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-arg.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - arg
    - list_r
    - list_count_r
    argTypes:
    - struct imap_arg*
    - struct imap_arg**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 91
    functionName: imap_arg_get_list_full
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 11
    functionsReached:
    - array_get
    - i_assert
    linkageType: ''
    returnType: bool
    signature: "bool imap_arg_get_list_full(const struct imap_arg *arg,\n\t\t\t    const
      struct imap_arg **list_r,\n\t\t\t    unsigned int *list_count_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_astring
      Src: /src/dovecot/src/lib-imap/imap-arg.c:97,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-arg.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 100
    functionName: imap_arg_as_astring
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 5
    functionsReached:
    - i_unreached
    - imap_arg_get_astring
    linkageType: ''
    returnType: char
    signature: char *imap_arg_as_astring(const struct imap_arg *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-arg.c:106,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-arg.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 109
    functionName: imap_arg_as_nstring
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 1
    functionsReached:
    - imap_arg_get_nstring
    - i_unreached
    linkageType: ''
    returnType: char
    signature: char *imap_arg_as_nstring(const struct imap_arg *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_literal_size
      Src: /src/dovecot/src/lib-imap/imap-arg.c:115,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-arg.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: imap_arg_as_literal_size
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 3
    functionsReached:
    - imap_arg_get_literal_size
    - i_unreached
    linkageType: ''
    returnType: uoff_t
    signature: uoff_t imap_arg_as_literal_size(const struct imap_arg *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-arg.c:125,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-arg.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: imap_arg_as_list
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 4
    functionsReached:
    - imap_arg_get_list
    - i_unreached
    linkageType: ''
    returnType: struct imap_arg
    signature: 'struct imap_arg *

      imap_arg_as_list(const struct imap_arg *arg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap/imap-arg.c:134,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-arg.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - arg
    - str
    argTypes:
    - struct imap_arg*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: imap_arg_atom_equals
    functionSourceFile: /src/dovecot/src/lib-imap/imap-arg.c
    functionUses: 15
    functionsReached:
    - imap_arg_get_atom
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool imap_arg_atom_equals(const struct imap_arg *arg, const char *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:41,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:44,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:48,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:49,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:52,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:54,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:56,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:57,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:58,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:62,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:63,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:66,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 5
    argNames:
    - params
    - params_count
    - str
    - default_charset
    - qflags
    argTypes:
    - struct message_part_param*
    - unsigned int
    - string_t*
    - bool
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 67
    functionName: params_write
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 2
    functionsReached:
    - str_append_c
    - imap_append_string
    - strcasecmp
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void params_write(const struct message_part_param *params, unsigned
      int params_count,\n\t     string_t *str, bool default_charset, enum imap_quote_flags
      qflags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:76,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:77,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - part
    - dest
    - extended
    - qflags
    - error_r
    argTypes:
    - struct message_part*
    - string_t*
    - bool
    - enum imap_quote_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 83
    functionName: part_write_bodystructure_siblings
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - imap_bodystructure_write
    linkageType: ''
    returnType: int
    signature: "int part_write_bodystructure_siblings(const struct message_part *part,\n\t\t\t\t
      \ string_t *dest, bool extended,\n\t\t\t\t  enum imap_quote_flags qflags,\n\t\t\t\t
      \ const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:89,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:91,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:93,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:94,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:96,1
    - Dst: params_write
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:97,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:101,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:104,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:106,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:110,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:111,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:112,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:115,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:116,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:119,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:122,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 3
    argNames:
    - data
    - str
    - qflags
    argTypes:
    - struct message_part_data*
    - string_t*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 85
    functionDepth: 9
    functionLinenumber: 85
    functionLinenumberEnd: 124
    functionName: part_write_bodystructure_common
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - imap_append_string
    - params_write
    - imap_append_nstring_nolf
    - str_append
    - i_assert
    linkageType: ''
    returnType: void
    signature: "void part_write_bodystructure_common(const struct message_part_data
      *data,\n\t\t\t\tstring_t *str, enum imap_quote_flags qflags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:133,1
    - Dst: part_write_bodystructure_siblings
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:136,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:145,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:147,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:150,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:151,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:158,1
    - Dst: params_write
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:159,1
    - Dst: part_write_bodystructure_common
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:162,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - part
    - str
    - extended
    - qflags
    - error_r
    argTypes:
    - struct message_part*
    - string_t*
    - bool
    - enum imap_quote_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 126
    functionDepth: 10
    functionLinenumber: 126
    functionLinenumberEnd: 164
    functionName: part_write_body_multipart
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - imap_append_string
    - part_write_bodystructure_siblings
    - params_write
    - part_write_bodystructure_common
    - str_append
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int part_write_body_multipart(const struct message_part *part,\n\t\t\t\t
      \    string_t *str, bool extended,\n\t\t\t\t     enum imap_quote_flags qflags,\n\t\t\t\t
      \    const char **error_r)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:170,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:171,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:174,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:175,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:180,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - part
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 195
    functionName: part_is_truncated
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - i_assert
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool part_is_truncated(const struct message_part *part)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:205,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:208,1
    - Dst: part_is_truncated
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:210,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:216,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:222,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:224,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:225,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:226,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:227,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:237,1
    - Dst: params_write
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:238,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:241,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:242,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:243,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:244,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:245,1
    - Dst: imap_append_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:247,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:249,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:250,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:254,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:259,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:260,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:264,1
    - Dst: imap_envelope_write
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:265,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:266,1
    - Dst: part_write_bodystructure_siblings
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:268,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:272,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:282,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:283,1
    - Dst: part_write_bodystructure_common
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:284,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 5
    argNames:
    - part
    - str
    - extended
    - qflags
    - error_r
    argTypes:
    - struct message_part*
    - string_t*
    - bool
    - enum imap_quote_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 197
    functionDepth: 10
    functionLinenumber: 197
    functionLinenumberEnd: 286
    functionName: part_write_body
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - imap_append_string
    - part_write_bodystructure_siblings
    - imap_envelope_write
    - params_write
    - strcasecmp
    - imap_append_nstring_nolf
    - part_write_bodystructure_common
    - str_append
    - i_assert
    - part_is_truncated
    linkageType: ''
    returnType: int
    signature: "int part_write_body(const struct message_part *part, string_t *str,\n\t\tbool
      extended, enum imap_quote_flags qflags,\n\t\tconst char **error_r)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: part_write_body_multipart
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:294,1
    - Dst: part_write_body
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - part
    - dest
    - extended
    - qflags
    - error_r
    argTypes:
    - struct message_part*
    - string_t*
    - bool
    - enum imap_quote_flags
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 288
    functionDepth: 11
    functionLinenumber: 288
    functionLinenumberEnd: 299
    functionName: imap_bodystructure_write
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 4
    functionsReached:
    - part_write_body_multipart
    - part_write_body
    linkageType: ''
    returnType: int
    signature: "int imap_bodystructure_write(const struct message_part *part,\n\t\t\t
      \    string_t *dest, bool extended,\n\t\t\t     enum imap_quote_flags qflags,\n\t\t\t
      \    const char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:317,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:318,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:319,1
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:321,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:326,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:328,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:330,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - arg
    - pool
    - list_r
    argTypes:
    - struct imap_arg*
    - pool_t
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 335
    functionName: imap_bodystructure_strlist_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - imap_arg_get_string
    - imap_arg_get_nstring
    - imap_arg_get_list_full
    linkageType: ''
    returnType: int
    signature: "int imap_bodystructure_strlist_parse(const struct imap_arg *arg,\n\tpool_t
      pool, const char *const **list_r)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:350,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:358,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:362,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:364,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:366,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:367,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - arg
    - pool
    - params_r
    - count_r
    argTypes:
    - struct imap_arg*
    - pool_t
    - struct message_part_param**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 372
    functionName: imap_bodystructure_params_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - imap_arg_get_string
    - imap_arg_get_list_full
    linkageType: ''
    returnType: int
    signature: "int imap_bodystructure_params_parse(const struct imap_arg *arg,\n\tpool_t
      pool, const struct message_part_param **params_r,\n\tunsigned int *count_r)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:386,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:390,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:395,1
    - Dst: imap_bodystructure_params_parse
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:396,1
    - Dst: imap_bodystructure_strlist_parse
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:406,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:413,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:418,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 4
    argNames:
    - part
    - pool
    - args
    - error_r
    argTypes:
    - struct message_part*
    - pool_t
    - struct imap_arg*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 374
    functionDepth: 3
    functionLinenumber: 374
    functionLinenumberEnd: 420
    functionName: imap_bodystructure_parse_args_common
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - imap_arg_get_list
    - imap_bodystructure_params_parse
    - imap_arg_get_string
    - imap_arg_get_nstring
    - imap_bodystructure_strlist_parse
    linkageType: ''
    returnType: int
    signature: "int imap_bodystructure_parse_args_common(struct message_part *part,\n\t\t\t\t
      \    pool_t pool, const struct imap_arg *args,\n\t\t\t\t     const char **error_r)"
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:446,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:449,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:477,1
    - Dst: imap_bodystructure_parse_args_int
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:478,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:496,1
    - Dst: imap_bodystructure_parse_args_int
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:497,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:520,1
    - Dst: imap_bodystructure_parse_args_int
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:521,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:537,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:541,1
    - Dst: imap_bodystructure_params_parse
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:544,1
    - Dst: imap_bodystructure_parse_args_common
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:550,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:555,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:556,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:560,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:561,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:564,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:565,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:566,1
    - Dst: imap_bodystructure_params_parse
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:594,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:602,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:606,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:610,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:614,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:615,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:617,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:618,1
    - Dst: str_to_uoff
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:619,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:635,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:636,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:640,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:646,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:650,1
    - Dst: imap_bodystructure_parse_args_int
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:654,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:658,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:663,1
    - Dst: imap_envelope_parse_args
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:667,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:669,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:674,1
    - Dst: str_to_uint
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:675,1
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:681,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:696,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:700,1
    - Dst: imap_bodystructure_parse_args_common
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:701,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 194
    argCount: 5
    argNames:
    - nesting
    - args
    - pool
    - _part
    - error_r
    argTypes:
    - unsigned int
    - struct imap_arg*
    - pool_t
    - struct message_part**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 422
    functionDepth: 11
    functionLinenumber: 422
    functionLinenumberEnd: 703
    functionName: imap_bodystructure_parse_args_int
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - imap_arg_get_list
    - p_new
    - imap_bodystructure_params_parse
    - t_strdup_printf
    - imap_arg_get_string
    - strcasecmp
    - imap_arg_get_nstring
    - imap_envelope_parse_args
    - str_to_uoff
    - imap_bodystructure_parse_args_common
    - imap_bodystructure_parse_args_int
    - imap_arg_get_atom
    - str_to_uint
    - i_assert
    - imap_arg_as_list
    linkageType: ''
    returnType: int
    signature: "int imap_bodystructure_parse_args_int(\n\tunsigned int nesting, const
      struct imap_arg *args, pool_t pool,\n\tstruct message_part **_part, const char
      **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_bodystructure_parse_args_int
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - args
    - pool
    - _part
    - error_r
    argTypes:
    - struct imap_arg*
    - pool_t
    - struct message_part**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 705
    functionDepth: 12
    functionLinenumber: 705
    functionLinenumberEnd: 711
    functionName: imap_bodystructure_parse_args
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 1
    functionsReached:
    - imap_bodystructure_parse_args_int
    linkageType: ''
    returnType: int
    signature: "int imap_bodystructure_parse_args(const struct imap_arg *args, pool_t
      pool,\n\t\t\t      struct message_part **_part,\n\t\t\t      const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_bodystructure_reset_data
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - parts
    argTypes:
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 719
    functionName: imap_bodystructure_reset_data
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 1
    functionsReached:
    - imap_bodystructure_reset_data
    linkageType: ''
    returnType: void
    signature: void imap_bodystructure_reset_data(struct message_part *parts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:730,1
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:732,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:732,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:733,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:735,1
    - Dst: imap_parser_finish_line
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:736,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:739,1
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:740,1
    - Dst: imap_bodystructure_parse_args
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:746,1
    - Dst: T_END_PASS_STR_IF
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:748,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - bodystructure
    - pool
    - parts
    - error_r
    argTypes:
    - char*
    - pool_t
    - struct message_part**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 721
    functionDepth: 13
    functionLinenumber: 721
    functionLinenumberEnd: 749
    functionName: imap_bodystructure_parse_full
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 2
    functionsReached:
    - imap_parser_get_error
    - T_END_PASS_STR_IF
    - imap_parser_finish_line
    - imap_bodystructure_parse_args
    - strlen
    - i_stream_create_from_data
    - t_strdup_printf
    - imap_parser_create
    - i_stream_read
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int imap_bodystructure_parse_full(const char *bodystructure,\n\tpool_t
      pool, struct message_part **parts,\n\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: i_assert
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:767,1
    - Dst: imap_bodystructure_parse_full
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - bodystructure
    - pool
    - parts
    - error_r
    argTypes:
    - char*
    - pool_t
    - struct message_part*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 763
    functionDepth: 14
    functionLinenumber: 763
    functionLinenumberEnd: 771
    functionName: imap_bodystructure_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 1
    functionsReached:
    - imap_bodystructure_parse_full
    - i_assert
    linkageType: ''
    returnType: int
    signature: "int imap_bodystructure_parse(const char *bodystructure,\n\tpool_t
      pool, struct message_part *parts,\n\tconst char **error_r)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:781,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:786,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:789,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:792,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:793,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:796,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:796,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:797,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:801,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - str
    - arg
    argTypes:
    - string_t*
    - struct imap_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 777
    functionDepth: 2
    functionLinenumber: 777
    functionLinenumberEnd: 805
    functionName: str_append_nstring
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - str_printfa
    - str_append_c
    - i_unreached
    - strlen
    - imap_arg_get_nstring
    - str_append
    linkageType: ''
    returnType: bool
    signature: bool str_append_nstring(string_t *str, const struct imap_arg *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:814,1
    - Dst: str_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:817,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:818,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:820,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:823,1
    - Dst: imap_write_envelope_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:824,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:825,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:831,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:832,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - args
    - str
    - toplevel
    argTypes:
    - struct imap_arg*
    - string_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 807
    functionDepth: 3
    functionLinenumber: 807
    functionLinenumberEnd: 834
    functionName: imap_write_envelope_list
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 1
    functionsReached:
    - imap_arg_get_list
    - str_append_c
    - i_unreached
    - imap_write_envelope_list
    - str_append_nstring
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: void
    signature: "void imap_write_envelope_list(const struct imap_arg *args, string_t
      *str,\n\tbool toplevel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imap_write_envelope_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - args
    - str
    argTypes:
    - struct imap_arg*
    - string_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 836
    functionDepth: 4
    functionLinenumber: 836
    functionLinenumberEnd: 840
    functionName: imap_write_envelope
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - imap_write_envelope_list
    linkageType: ''
    returnType: void
    signature: void imap_write_envelope(const struct imap_arg *args, string_t *str)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:853,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:854,1
    - Dst: imap_parse_bodystructure_args
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:855,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:857,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:865,1
    - Dst: str_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:866,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:874,1
    - Dst: imap_arg_get_string
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:875,1
    - Dst: str_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:880,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:881,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:882,1
    - Dst: str_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:883,1
    - Dst: i_unreached
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:884,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:886,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:887,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:888,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:893,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:894,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:895,1
    - Dst: str_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:896,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:900,1
    - Dst: str_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:901,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:907,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:909,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:911,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:913,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:922,1
    - Dst: str_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:924,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:929,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:933,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:938,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:943,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:944,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:947,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:949,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:953,1
    - Dst: imap_write_envelope
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:954,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:955,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:957,1
    - Dst: imap_parse_bodystructure_args
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:961,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:964,1
    - Dst: imap_arg_get_atom
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:965,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:969,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 101
    argCount: 3
    argNames:
    - args
    - str
    - error_r
    argTypes:
    - struct imap_arg*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 842
    functionDepth: 5
    functionLinenumber: 842
    functionLinenumberEnd: 972
    functionName: imap_parse_bodystructure_args
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 1
    functionsReached:
    - imap_arg_get_atom
    - str_printfa
    - imap_arg_get_list
    - str_append_c
    - i_unreached
    - imap_arg_get_string
    - strcasecmp
    - imap_parse_bodystructure_args
    - str_append_nstring
    - imap_write_envelope
    - str_append
    - imap_arg_as_list
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: int
    signature: "int imap_parse_bodystructure_args(const struct imap_arg *args,\n\t\t\t\t\t
      string_t *str, const char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:982,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:982,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:983,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:985,1
    - Dst: imap_parser_finish_line
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:986,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:989,1
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:990,1
    - Dst: imap_parse_bodystructure_args
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:995,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:998,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap/imap-bodystructure.c:999,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - bodystructure
    - dest
    - error_r
    argTypes:
    - char*
    - string_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 974
    functionDepth: 11
    functionLinenumber: 974
    functionLinenumberEnd: 1001
    functionName: imap_body_parse_from_bodystructure
    functionSourceFile: /src/dovecot/src/lib-imap/imap-bodystructure.c
    functionUses: 1
    functionsReached:
    - imap_parser_get_error
    - imap_parser_finish_line
    - imap_parser_unref
    - strlen
    - t_strdup_printf
    - imap_parse_bodystructure_args
    - imap_parser_create
    - i_stream_read
    - i_stream_create_from_data
    - i_stream_destroy
    linkageType: ''
    returnType: int
    signature: "int imap_body_parse_from_bodystructure(const char *bodystructure,\n\t\t\t\t
      \      string_t *dest, const char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:43,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:44,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:45,1
    - Dst: imap_parse_date
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:45,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:46,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:48,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:49,1
    - Dst: imap_parse_date
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:49,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 51
    functionName: test_imap_date
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-date.c
    functionUses: 0
    functionsReached:
    - test_assert_cmp_idx
    - imap_parse_date
    - test_assert_idx
    - test_end
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_date(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:90,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:91,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:92,1
    - Dst: imap_parse_datetime
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:92,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:93,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:94,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:96,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:97,1
    - Dst: imap_parse_datetime
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:97,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 99
    functionName: test_imap_datetime
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-date.c
    functionUses: 0
    functionsReached:
    - test_assert_cmp_idx
    - test_assert_idx
    - test_end
    - imap_parse_datetime
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_datetime(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: env_put
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:108,1
    - Dst: tzset
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:109,1
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-date.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 101
    functionDepth: 7
    functionLinenumber: 101
    functionLinenumberEnd: 111
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-date.c
    functionUses: 25
    functionsReached:
    - env_put
    - tzset
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:12,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:13,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:13,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:14,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:14,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:15,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:15,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:16,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:16,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:17,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:17,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:18,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:18,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:19,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:19,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:20,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:20,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:21,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:21,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:22,1
    - Dst: imap_parse_system_flag
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:22,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 10
    functionDepth: 3
    functionLinenumber: 10
    functionLinenumberEnd: 24
    functionName: test_imap_parse_system_flag
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-util.c
    functionUses: 0
    functionsReached:
    - imap_parse_system_flag
    - test_end
    - test_begin
    - test_assert
    linkageType: ''
    returnType: void
    signature: void test_imap_parse_system_flag(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:28,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:31,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:32,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:35,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:38,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:39,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:42,1
    - Dst: array_append_space
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:45,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:60,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:62,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:63,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:64,1
    - Dst: imap_write_arg
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:65,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:66,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:66,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:66,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 26
    functionDepth: 4
    functionLinenumber: 26
    functionLinenumberEnd: 69
    functionName: test_imap_write_arg
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-util.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - array_append_space
    - imap_write_arg
    - test_assert_idx
    - test_end
    - t_array_init
    - str_truncate
    - ARRAY_TYPE
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_write_arg(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ARRAY_TYPE
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:73,1
    - Dst: t_array_init
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:74,1
    - Dst: array_append
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:78,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:78,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:79,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:81,1
    - Dst: imap_write_capability
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:82,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:83,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:83,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 71
    functionDepth: 5
    functionLinenumber: 71
    functionLinenumberEnd: 85
    functionName: test_imap_write_capabilities
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-util.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - test_assert_strcmp
    - test_end
    - array_append
    - t_array_init
    - ARRAY_TYPE
    - imap_write_capability
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_write_capabilities(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-util.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 7
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-util.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:28,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:29,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:31,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:32,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:33,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:35,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:36,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:38,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:38,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:38,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:41,1
    - Dst: imap_utf7_to_utf8_escaped
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:42,1
    - Dst: imap_escaped_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:43,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:43,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:44,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:44,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:44,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:47,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:48,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:49,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:51,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:51,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:51,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:52,1
    - Dst: imap_utf7_is_valid
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:52,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:56,1
    - Dst: imap_utf7_to_utf8_escaped
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:57,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:58,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:58,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:60,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:61,1
    - Dst: imap_escaped_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:61,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:62,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:62,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:64,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 9
    functionDepth: 7
    functionLinenumber: 9
    functionLinenumberEnd: 65
    functionName: test_imap_utf7_by_example
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-utf7.c
    functionUses: 0
    functionsReached:
    - imap_escaped_utf8_to_utf7
    - str_c
    - t_str_new
    - strcmp
    - imap_utf7_to_utf8_escaped
    - test_assert_idx
    - test_assert_strcmp
    - imap_utf8_to_utf7
    - test_end
    - imap_utf7_to_utf8
    - null_strcmp
    - str_truncate
    - test_assert
    - imap_utf7_is_valid
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_utf7_by_example(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:74,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:75,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:77,1
    - Dst: for
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:79,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:80,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:81,1
    - Dst: if
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:83,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:84,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:86,1
    - Dst: uni_ucs4_to_utf8_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:87,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:90,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:90,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:91,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:93,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:93,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:94,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:94,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:94,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:95,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:95,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:95,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 67
    functionDepth: 7
    functionLinenumber: 67
    functionLinenumberEnd: 99
    functionName: test_imap_utf7_ucs4_cases
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-utf7.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - test_assert_idx
    - uni_ucs4_to_utf8_c
    - if
    - imap_utf8_to_utf7
    - test_end
    - imap_utf7_to_utf8
    - str_truncate
    - t_strdup
    - for
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_utf7_ucs4_cases(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:108,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:109,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:110,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:120,1
    - Dst: imap_utf7_is_valid
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:120,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:123,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:124,1
    - Dst: imap_utf7_to_utf8_escaped
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:125,1
    - Dst: imap_escaped_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:126,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:126,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:127,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:127,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:127,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:140,1
    - Dst: imap_utf7_is_valid
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:140,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:143,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:144,1
    - Dst: imap_utf7_to_utf8_escaped
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:145,1
    - Dst: imap_escaped_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:146,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:146,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:147,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:147,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:147,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 103
    functionDepth: 7
    functionLinenumber: 103
    functionLinenumberEnd: 150
    functionName: test_imap_utf7_non_utf16
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-utf7.c
    functionUses: 0
    functionsReached:
    - imap_escaped_utf8_to_utf7
    - str_c
    - t_str_new
    - strcmp
    - imap_utf7_to_utf8_escaped
    - test_assert_idx
    - test_end
    - str_truncate
    - imap_utf7_is_valid
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_utf7_non_utf16(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:158,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:160,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:166,1
    - Dst: imap_utf7_is_valid
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:166,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:167,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:168,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:168,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 152
    functionDepth: 7
    functionLinenumber: 152
    functionLinenumberEnd: 171
    functionName: test_imap_utf7_bad_ascii
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-utf7.c
    functionUses: 0
    functionsReached:
    - t_str_new
    - test_assert_idx
    - test_end
    - imap_utf7_to_utf8
    - str_truncate
    - imap_utf7_is_valid
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_utf7_bad_ascii(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:179,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:181,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:190,1
    - Dst: imap_utf7_is_valid
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:190,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:191,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:192,1
    - Dst: imap_utf7_to_utf8
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:192,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:199,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:200,1
    - Dst: imap_utf8_to_utf7
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:200,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:201,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:201,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:201,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:203,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 173
    functionDepth: 7
    functionLinenumber: 173
    functionLinenumberEnd: 204
    functionName: test_imap_utf7_unnecessary
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-utf7.c
    functionUses: 0
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - test_assert_idx
    - imap_utf8_to_utf7
    - test_end
    - imap_utf7_to_utf8
    - str_truncate
    - imap_utf7_is_valid
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_utf7_unnecessary(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-utf7.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 206
    functionDepth: 7
    functionLinenumber: 206
    functionLinenumberEnd: 217
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-utf7.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:63,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:66,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:67,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:68,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:70,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:70,1
    - Dst: imap_match_dup
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:72,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:73,1
    - Dst: imap_match_globs_equal
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:73,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:77,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:77,1
    - Dst: imap_match_deinit
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:78,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:82,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:83,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:85,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:85,1
    - Dst: imap_match_dup
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:87,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:88,1
    - Dst: imap_match_globs_equal
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:88,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:89,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:92,1
    - Dst: imap_match
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:92,1
    - Dst: imap_match_deinit
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:93,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:95,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 13
    functionDepth: 11
    functionLinenumber: 13
    functionLinenumberEnd: 97
    functionName: test_imap_match
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-match.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - imap_match_deinit
    - imap_match_init
    - imap_match
    - pool_unref
    - test_end
    - imap_match_globs_equal
    - p_clear
    - test_assert
    - imap_match_dup
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_match(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:104,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:105,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:107,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:108,1
    - Dst: imap_match_globs_equal
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:108,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:109,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:110,1
    - Dst: imap_match_globs_equal
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:110,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:111,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:112,1
    - Dst: imap_match_globs_equal
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:112,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:113,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:114,1
    - Dst: imap_match_globs_equal
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:114,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:115,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:117,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:118,1
    - Dst: imap_match_globs_equal
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:118,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:119,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:120,1
    - Dst: imap_match_globs_equal
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:120,1
    - Dst: imap_match_init
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:121,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:123,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 125
    functionName: test_imap_match_globs_equal
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-match.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - imap_match_init
    - pool_unref
    - test_end
    - imap_match_globs_equal
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_match_globs_equal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-match.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 127
    functionDepth: 7
    functionLinenumber: 127
    functionLinenumberEnd: 135
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-match.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_is_empty
      Src: /src/dovecot/src/lib-imap/imap-id.c:19,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/imap-id.c:22,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-id.c:23,1
    - Dst: array_get
      Src: /src/dovecot/src/lib-imap/imap-id.c:25,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-id.c:28,1
    - Dst: imap_append_quoted
      Src: /src/dovecot/src/lib-imap/imap-id.c:29,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-id.c:30,1
    - Dst: strcasecmp
      Src: /src/dovecot/src/lib-imap/imap-id.c:33,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/imap-id.c:34,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-id.c:37,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-id.c:39,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/imap-id.c:40,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - args
    - qflags
    argTypes:
    - ARRAY_TYPE*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 15
    functionDepth: 7
    functionLinenumber: 15
    functionLinenumberEnd: 41
    functionName: imap_id_reply_generate
    functionSourceFile: /src/dovecot/src/lib-imap/imap-id.c
    functionUses: 2
    functionsReached:
    - strcmp
    - str_c
    - t_str_new
    - str_append_c
    - array_get
    - strcasecmp
    - array_is_empty
    - imap_append_nstring
    - imap_append_quoted
    linkageType: ''
    returnType: char
    signature: "char *\nimap_id_reply_generate(const ARRAY_TYPE(const_string) *args,\n\t\t
      \      enum imap_quote_flags qflags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/imap-id.c:47,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-id.c:48,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-id.c:49,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-id.c:50,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-id.c:51,1
    - Dst: t_str_lcase
      Src: /src/dovecot/src/lib-imap/imap-id.c:53,1
    - Dst: strspn
      Src: /src/dovecot/src/lib-imap/imap-id.c:56,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-id.c:56,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-imap/imap-id.c:57,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-imap/imap-id.c:58,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-id.c:60,1
    - Dst: t_strconcat
      Src: /src/dovecot/src/lib-imap/imap-id.c:62,1
    - Dst: event_add_str
      Src: /src/dovecot/src/lib-imap/imap-id.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - log_entry
    - key
    - value
    argTypes:
    - struct imap_id_log_entry*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 43
    functionDepth: 11
    functionLinenumber: 43
    functionLinenumberEnd: 65
    functionName: imap_id_add_log_entry
    functionSourceFile: /src/dovecot/src/lib-imap/imap-id.c
    functionUses: 2
    functionsReached:
    - t_str_lcase
    - str_append_c
    - str_len
    - strspn
    - strlen
    - t_strdup_printf
    - str_append
    - event_add_str
    - t_strconcat
    linkageType: ''
    returnType: void
    signature: "void imap_id_add_log_entry(struct imap_id_log_entry *log_entry, const
      char *key,\n\t\t      const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:399,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:399,1
    - Dst: message_parser_init
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:400,1
    - Dst: message_parser_parse_next_block
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:401,1
    - Dst: message_part_data_parse_from_header
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:403,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:407,1
    - Dst: message_parser_deinit
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:409,1
    - Dst: i_stream_unref
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - pool
    - message
    - max_nested_mime_parts
    - max_total_mime_parts
    - parse_bodystructure
    argTypes:
    - pool_t
    - char*
    - unsigned int
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 382
    functionDepth: 5
    functionLinenumber: 382
    functionLinenumberEnd: 412
    functionName: msg_parse
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 1
    functionsReached:
    - message_part_data_parse_from_header
    - strlen
    - message_parser_parse_next_block
    - test_assert
    - i_stream_unref
    - i_stream_create_from_data
    - message_parser_deinit
    - message_parser_init
    linkageType: ''
    returnType: struct message_part
    signature: "struct message_part *\nmsg_parse(pool_t pool, const char *message,
      unsigned int max_nested_mime_parts,\n\t  unsigned int max_total_mime_parts,
      bool parse_bodystructure)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:422,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:423,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:425,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:425,1
    - Dst: msg_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:426,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:428,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:428,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:429,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:429,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:429,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:431,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:432,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:432,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:433,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:433,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:433,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:435,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 414
    functionDepth: 12
    functionLinenumber: 414
    functionLinenumberEnd: 437
    functionName: test_imap_bodystructure_write
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - t_str_new
    - str_c
    - imap_bodystructure_write
    - t_strdup_printf
    - pool_unref
    - test_end
    - str_truncate
    - test_assert
    - msg_parse
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_bodystructure_write(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:464,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:465,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:467,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:467,1
    - Dst: msg_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:468,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:470,1
    - Dst: imap_body_parse_from_bodystructure
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:470,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:472,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:472,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:472,1
    - Dst: imap_bodystructure_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:474,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:476,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:479,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:480,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:480,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:481,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:481,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:481,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:483,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:486,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 455
    functionDepth: 15
    functionLinenumber: 455
    functionLinenumberEnd: 488
    functionName: test_imap_bodystructure_parse
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - t_str_new
    - str_c
    - imap_bodystructure_parse
    - imap_bodystructure_write
    - i_error
    - imap_body_parse_from_bodystructure
    - t_strdup_printf
    - pool_unref
    - test_end
    - str_truncate
    - test_assert
    - msg_parse
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_bodystructure_parse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:548,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:549,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:552,1
    - Dst: msg_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:554,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:555,1
    - Dst: imap_bodystructure_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:555,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:557,1
    - Dst: test_assert_strcmp_idx
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:558,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 491
    functionDepth: 15
    functionLinenumber: 491
    functionLinenumberEnd: 560
    functionName: test_imap_bodystructure_parse_invalid
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - imap_bodystructure_parse
    - test_assert_idx
    - pool_unref
    - test_assert
    - msg_parse
    - test_assert_strcmp_idx
    - N_ELEMENTS
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_bodystructure_parse_invalid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:573,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:574,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:576,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:576,1
    - Dst: imap_bodystructure_parse_full
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:578,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:580,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:583,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:584,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:584,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:585,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:585,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:585,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:587,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:590,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 564
    functionDepth: 14
    functionLinenumber: 564
    functionLinenumberEnd: 592
    functionName: test_imap_bodystructure_parse_full
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - t_str_new
    - str_c
    - imap_bodystructure_write
    - i_error
    - imap_bodystructure_parse_full
    - t_strdup_printf
    - pool_unref
    - test_end
    - str_truncate
    - test_assert
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_bodystructure_parse_full(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:604,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:605,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:607,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:607,1
    - Dst: msg_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:608,1
    - Dst: imap_bodystructure_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:610,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:612,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:615,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:616,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:616,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:617,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:617,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:617,1
    - Dst: i_error
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:619,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:622,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:623,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 595
    functionDepth: 15
    functionLinenumber: 595
    functionLinenumberEnd: 624
    functionName: test_imap_bodystructure_normalize
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - strcmp
    - pool_alloconly_create
    - t_str_new
    - str_c
    - imap_bodystructure_parse
    - imap_bodystructure_write
    - i_error
    - t_strdup_printf
    - pool_unref
    - test_end
    - str_truncate
    - test_assert
    - msg_parse
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_bodystructure_normalize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:688,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:689,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:690,1
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:692,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:694,1
    - Dst: p_clear
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:695,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:696,1
    - Dst: str_truncate
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:697,1
    - Dst: msg_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:699,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:705,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:705,1
    - Dst: message_part_serialize
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:706,1
    - Dst: message_part_deserialize
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:710,1
    - Dst: str_data
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:710,1
    - Dst: str_len
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:711,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:712,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:713,1
    - Dst: imap_bodystructure_parse
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:713,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:713,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:715,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:715,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:718,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 684
    functionDepth: 15
    functionLinenumber: 684
    functionLinenumberEnd: 720
    functionName: test_imap_bodystructure_truncation
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - t_str_new
    - str_c
    - imap_bodystructure_write
    - str_data
    - str_len
    - imap_bodystructure_parse
    - test_begin
    - message_part_serialize
    - test_assert_strcmp
    - pool_unref
    - test_end
    - str_truncate
    - test_assert
    - msg_parse
    - message_part_deserialize
    - N_ELEMENTS
    - p_clear
    linkageType: ''
    returnType: void
    signature: void test_imap_bodystructure_truncation(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:724,1
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:727,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:730,1
    - Dst: memset
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:731,1
    - Dst: memset
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:732,1
    - Dst: imap_bodystructure_parse_full
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:737,1
    - Dst: test_assert_cmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:740,1
    - Dst: test_assert_strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:741,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:743,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 722
    functionDepth: 14
    functionLinenumber: 722
    functionLinenumberEnd: 745
    functionName: test_imap_bodystructure_nesting
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - pool_alloconly_create
    - p_new
    - imap_bodystructure_parse_full
    - test_assert_strcmp
    - pool_unref
    - test_end
    - test_assert_cmp
    - memset
    - test_begin
    linkageType: ''
    returnType: void
    signature: void test_imap_bodystructure_nesting(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-bodystructure.c:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 747
    functionDepth: 7
    functionLinenumber: 747
    functionLinenumberEnd: 760
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-bodystructure.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:23,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:27,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:29,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:31,1
    - Dst: imap_append_string_for_humans
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:33,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:34,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:37,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:38,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:39,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:40,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:41,1
    - Dst: imap_append_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:42,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:43,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - str
    - addr
    - qflags
    argTypes:
    - string_t*
    - struct message_address*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 18
    functionDepth: 7
    functionLinenumber: 18
    functionLinenumberEnd: 48
    functionName: imap_write_address
    functionSourceFile: /src/dovecot/src/lib-imap/imap-envelope.c
    functionUses: 0
    functionsReached:
    - str_append_c
    - strlen
    - imap_append_string_for_humans
    - imap_append_nstring
    - str_append
    linkageType: ''
    returnType: void
    signature: "void imap_write_address(string_t *str, struct message_address *addr,\n\t\t
      \  enum imap_quote_flags qflags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:58,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:62,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:63,1
    - Dst: str_append
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:65,1
    - Dst: imap_append_string_for_humans
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:67,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:69,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:72,1
    - Dst: imap_write_address
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:73,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:74,1
    - Dst: imap_write_address
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:75,1
    - Dst: NVL
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:75,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:76,1
    - Dst: imap_write_address
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:77,1
    - Dst: NVL
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:77,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:78,1
    - Dst: imap_write_address
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:79,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:80,1
    - Dst: imap_write_address
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:81,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:82,1
    - Dst: imap_write_address
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:83,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:85,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:86,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:87,1
    - Dst: imap_append_nstring_nolf
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - data
    - str
    - qflags
    argTypes:
    - struct message_part_envelope*
    - string_t*
    - enum imap_quote_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 50
    functionDepth: 9
    functionLinenumber: 50
    functionLinenumberEnd: 89
    functionName: imap_envelope_write
    functionSourceFile: /src/dovecot/src/lib-imap/imap-envelope.c
    functionUses: 4
    functionsReached:
    - str_append_c
    - imap_write_address
    - strlen
    - imap_append_string_for_humans
    - imap_append_nstring_nolf
    - NVL
    - str_append
    linkageType: ''
    returnType: void
    signature: "void imap_envelope_write(struct message_part_envelope *data, string_t
      *str,\n\t\t\t enum imap_quote_flags qflags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - nullstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: NVL
    functionSourceFile: /src/dovecot/src/lib-imap/imap-envelope.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NVL(str, nullstr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: imap_arg_get_list_full
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:104,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:111,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:113,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:115,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:117,1
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:120,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:121,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:122,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:123,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:124,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - arg
    - pool
    - addr_r
    argTypes:
    - struct imap_arg*
    - pool_t
    - struct message_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 128
    functionName: imap_envelope_parse_address
    functionSourceFile: /src/dovecot/src/lib-imap/imap-envelope.c
    functionUses: 0
    functionsReached:
    - p_strdup
    - p_new
    - imap_arg_get_nstring
    - imap_arg_get_list_full
    linkageType: ''
    returnType: bool
    signature: "bool imap_envelope_parse_address(const struct imap_arg *arg,\n\tpool_t
      pool, struct message_address **addr_r)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: i_zero
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:137,1
    - Dst: imap_arg_get_list
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:141,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:145,1
    - Dst: imap_envelope_parse_address
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:146,1
    - Dst: DLLIST2_APPEND
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - arg
    - pool
    - addrs_r
    argTypes:
    - struct imap_arg*
    - pool_t
    - struct message_address_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 152
    functionName: imap_envelope_parse_addresses
    functionSourceFile: /src/dovecot/src/lib-imap/imap-envelope.c
    functionUses: 0
    functionsReached:
    - i_zero
    - imap_arg_get_list
    - DLLIST2_APPEND
    - imap_envelope_parse_address
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: bool
    signature: "bool imap_envelope_parse_addresses(const struct imap_arg *arg,\n\tpool_t
      pool, struct message_address_list *addrs_r)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: p_new
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:160,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:162,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:166,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:168,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:172,1
    - Dst: imap_envelope_parse_addresses
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:174,1
    - Dst: imap_envelope_parse_addresses
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:178,1
    - Dst: imap_envelope_parse_addresses
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:182,1
    - Dst: imap_envelope_parse_addresses
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:186,1
    - Dst: imap_envelope_parse_addresses
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:190,1
    - Dst: imap_envelope_parse_addresses
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:194,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:199,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:203,1
    - Dst: imap_arg_get_nstring
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:205,1
    - Dst: p_strdup
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:209,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 4
    argNames:
    - args
    - pool
    - envlp_r
    - error_r
    argTypes:
    - struct imap_arg*
    - pool_t
    - struct message_part_envelope**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 154
    functionDepth: 4
    functionLinenumber: 154
    functionLinenumberEnd: 213
    functionName: imap_envelope_parse_args
    functionSourceFile: /src/dovecot/src/lib-imap/imap-envelope.c
    functionUses: 1
    functionsReached:
    - p_strdup
    - imap_envelope_parse_addresses
    - p_new
    - imap_arg_get_nstring
    linkageType: ''
    returnType: bool
    signature: "bool imap_envelope_parse_args(const struct imap_arg *args,\n\tpool_t
      pool, struct message_part_envelope **envlp_r,\n\tconst char **error_r)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i_stream_create_from_data
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:225,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:225,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:226,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:228,1
    - Dst: imap_parser_finish_line
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:229,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:232,1
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:233,1
    - Dst: imap_envelope_parse_args
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:239,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:242,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap/imap-envelope.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - envelope
    - pool
    - envlp_r
    - error_r
    argTypes:
    - char*
    - pool_t
    - struct message_part_envelope**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 215
    functionDepth: 11
    functionLinenumber: 215
    functionLinenumberEnd: 245
    functionName: imap_envelope_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-envelope.c
    functionUses: 1
    functionsReached:
    - imap_parser_get_error
    - imap_parser_finish_line
    - imap_parser_unref
    - strlen
    - t_strdup_printf
    - imap_envelope_parse_args
    - imap_parser_create
    - i_stream_read
    - i_stream_create_from_data
    - i_stream_destroy
    linkageType: ''
    returnType: bool
    signature: "bool imap_envelope_parse(const char *envelope,\n\tpool_t pool, struct
      message_part_envelope **envlp_r,\n\tconst char **error_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:17,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:18,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:19,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:23,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:24,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:25,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:25,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:27,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:28,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:29,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:29,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:30,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:31,1
    - Dst: imap_parser_reset
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:34,1
    - Dst: i_stream_seek
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:35,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:36,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:37,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:38,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:38,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:39,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:40,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:41,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:41,1
    - Dst: test_istream_set_size
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:42,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:43,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:44,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:44,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:45,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:45,1
    - Dst: imap_parser_get_error
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:45,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:49,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:50,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 8
    functionDepth: 8
    functionLinenumber: 8
    functionLinenumberEnd: 52
    functionName: test_imap_parser_crlf
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - test_istream_set_size
    - imap_parser_get_error
    - imap_parser_unref
    - imap_parser_reset
    - imap_parser_read_args
    - test_end
    - imap_parser_create
    - test_istream_create
    - i_stream_seek
    - test_assert
    - i_stream_read
    - test_begin
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_imap_parser_crlf(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:61,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:62,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:63,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:65,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:66,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:66,1
    - Dst: imap_arg_as_list
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:69,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:70,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:70,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:73,1
    - Dst: imap_arg_atom_equals
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:73,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:74,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:75,1
    - Dst: IMAP_ARG_IS_EOL
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:75,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:77,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:78,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 54
    functionDepth: 8
    functionLinenumber: 54
    functionLinenumberEnd: 80
    functionName: test_imap_parser_partial_list
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-parser.c
    functionUses: 0
    functionsReached:
    - imap_parser_unref
    - i_stream_destroy
    - imap_parser_read_args
    - test_end
    - imap_parser_create
    - test_istream_create
    - test_assert
    - i_stream_read
    - imap_arg_atom_equals
    - imap_arg_as_list
    - test_begin
    - IMAP_ARG_IS_EOL
    linkageType: ''
    returnType: void
    signature: void test_imap_parser_partial_list(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:126,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:127,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:129,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:130,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:130,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:131,1
    - Dst: imap_parser_read_tag
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:132,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:133,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:134,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:134,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:135,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:136,1
    - Dst: test_istream_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:140,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:141,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:141,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:142,1
    - Dst: imap_parser_read_command_name
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:143,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:144,1
    - Dst: test_assert_idx
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:145,1
    - Dst: strcmp
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:145,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:146,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:147,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 82
    functionDepth: 5
    functionLinenumber: 82
    functionLinenumberEnd: 151
    functionName: test_imap_parser_read_tag_cmd
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-parser.c
    functionUses: 0
    functionsReached:
    - strcmp
    - imap_parser_read_command_name
    - test_assert_idx
    - imap_parser_unref
    - test_end
    - imap_parser_create
    - test_istream_create
    - test_assert
    - imap_parser_read_tag
    - i_stream_read
    - N_ELEMENTS
    - test_begin
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_imap_parser_read_tag_cmd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - str
    - ','
    - lit
    - ','
    - flags
    - ','
    - ret
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: TEST_CASE
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-parser.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_CASE(str, lit, flags, ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_begin
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:158,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:167,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:168,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:169,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:170,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:171,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:172,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:173,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:174,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:175,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:176,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:177,1
    - Dst: TEST_CASE
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:178,1
    - Dst: N_ELEMENTS
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:181,1
    - Dst: test_istream_create_data
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:183,1
    - Dst: test_assert
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:184,1
    - Dst: i_stream_read
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:184,1
    - Dst: imap_parser_create
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:186,1
    - Dst: imap_parser_read_args
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:188,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:191,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:191,1
    - Dst: test_failed
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:193,1
    - Dst: t_strdup_printf
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:193,1
    - Dst: test_assert_cmp_idx
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:195,1
    - Dst: imap_parser_unref
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:197,1
    - Dst: i_stream_destroy
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:198,1
    - Dst: test_end
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 156
    functionDepth: 11
    functionLinenumber: 156
    functionLinenumberEnd: 201
    functionName: test_imap_parser_read_literal
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-parser.c
    functionUses: 0
    functionsReached:
    - test_assert_cmp_idx
    - imap_parser_unref
    - TEST_CASE
    - imap_parser_read_args
    - t_strdup_printf
    - test_end
    - imap_parser_create
    - test_istream_create_data
    - test_failed
    - test_assert
    - i_stream_read
    - N_ELEMENTS
    - test_begin
    - i_stream_destroy
    linkageType: ''
    returnType: void
    signature: void test_imap_parser_read_literal(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_run
      Src: /src/dovecot/src/lib-imap/test-imap-parser.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 203
    functionDepth: 7
    functionLinenumber: 203
    functionLinenumberEnd: 213
    functionName: main
    functionSourceFile: /src/dovecot/src/lib-imap/test-imap-parser.c
    functionUses: 25
    functionsReached:
    - test_run
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:15,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:15,1
    - Dst: i_isprint
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:17,1
    - Dst: str_printfa
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:18,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:20,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:22,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 13
    functionDepth: 4
    functionLinenumber: 13
    functionLinenumberEnd: 23
    functionName: str_sanitize_binary
    functionSourceFile: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_printfa
    - str_append_c
    - strlen
    - i_isprint
    linkageType: ''
    returnType: char
    signature: char *str_sanitize_binary(const char *input)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:33,1
    - Dst: t_str_new
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:37,1
    - Dst: strlen
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:37,1
    - Dst: str_append_data
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:38,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:56,1
    - Dst: str_append_c
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:61,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:64,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - src
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 28
    functionDepth: 4
    functionLinenumber: 28
    functionLinenumberEnd: 65
    functionName: suppress_crlfs
    functionSourceFile: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - str_c
    - t_str_new
    - str_append_c
    - strlen
    - strpbrk
    - str_append_data
    linkageType: ''
    returnType: char
    signature: char * suppress_crlfs(const char *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: suppress_crlfs
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:69,1
    - Dst: suppress_crlfs
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:70,1
    - Dst: null_strcmp
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 5
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: compare_field
    functionSourceFile: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - suppress_crlfs
    - null_strcmp
    linkageType: ''
    returnType: int
    signature: int compare_field(const char *s1, const char *s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: suppress_crlfs
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:76,1
    - Dst: suppress_crlfs
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:77,1
    - Dst: null_strcasecmp
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: compare_ignorecase
    functionSourceFile: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - suppress_crlfs
    - null_strcasecmp
    linkageType: ''
    returnType: int
    signature: int compare_ignorecase(const char *s1, const char *s2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: compare_ignorecase
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:101,1
    - Dst: compare_ignorecase
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:102,1
    - Dst: compare_ignorecase
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:103,1
    - Dst: compare_ignorecase
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:104,1
    - Dst: compare_ignorecase
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:107,1
    - Dst: compare_field
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:108,1
    - Dst: compare_field
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:109,1
    - Dst: compare_ignorecase
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:110,1
    - Dst: compare_field
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:111,1
    - Dst: compare_field
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - struct message_part*
    - struct message_part*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 84
    functionDepth: 6
    functionLinenumber: 84
    functionLinenumberEnd: 116
    functionName: message_part_check_strings
    functionSourceFile: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - compare_field
    - compare_ignorecase
    linkageType: ''
    returnType: bool
    signature: "bool message_part_check_strings(const struct message_part *p1,\n\t\t\t\t
      \      const struct message_part *p2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pool_alloconly_create
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:121,1
    - Dst: str_new
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:122,1
    - Dst: imap_bodystructure_parse_full
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:130,1
    - Dst: imap_bodystructure_write
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:132,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:134,1
    - Dst: t_strdup
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:135,1
    - Dst: str_c
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:135,1
    - Dst: imap_bodystructure_parse_full
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:145,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:147,1
    - Dst: str_sanitize_binary
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:148,1
    - Dst: str_sanitize_binary
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:149,1
    - Dst: message_part_is_equal_ex
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:151,1
    - Dst: i_panic
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:153,1
    - Dst: str_sanitize_binary
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:154,1
    - Dst: str_sanitize_binary
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:155,1
    - Dst: pool_unref
      Src: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - bodystruct_orig
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 118
    functionDepth: 14
    functionLinenumber: 118
    functionLinenumberEnd: 158
    functionName: FUZZ_BEGIN_STR
    functionSourceFile: /src/dovecot/src/lib-imap/fuzz-imap-bodystructure.c
    functionUses: 0
    functionsReached:
    - i_panic
    - pool_alloconly_create
    - str_c
    - str_sanitize_binary
    - imap_bodystructure_write
    - imap_bodystructure_parse_full
    - pool_unref
    - message_part_is_equal_ex
    - t_strdup
    - str_new
    linkageType: ''
    returnType: void
    signature: void FUZZ_BEGIN_STR(const char *bodystruct_orig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_parse_uint32
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:11,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - str
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 22
    functionName: get_next_number
    functionSourceFile: /src/dovecot/src/lib-imap/imap-seqset.c
    functionUses: 0
    functionsReached:
    - str_parse_uint32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_next_number(const char **str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_next_number
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:34,1
    - Dst: get_next_number
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:49,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - str
    - seq1_r
    - seq2_r
    argTypes:
    - char**
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 64
    functionName: get_next_seq_range
    functionSourceFile: /src/dovecot/src/lib-imap/imap-seqset.c
    functionUses: 0
    functionsReached:
    - get_next_number
    linkageType: ''
    returnType: int
    signature: int get_next_seq_range(const char **str, uint32_t *seq1_r, uint32_t
      *seq2_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_next_seq_range
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:71,1
    - Dst: seq_range_array_add_range
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - str
    - dest
    argTypes:
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 79
    functionName: imap_seq_set_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-seqset.c
    functionUses: 6
    functionsReached:
    - seq_range_array_add_range
    - get_next_seq_range
    linkageType: ''
    returnType: int
    signature: int imap_seq_set_parse(const char *str, ARRAY_TYPE(seq_range) *dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imap_seq_set_parse
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:83,1
    - Dst: seq_range_exists
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - dest
    argTypes:
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 3
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: imap_seq_set_nostar_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-seqset.c
    functionUses: 6
    functionsReached:
    - imap_seq_set_parse
    - seq_range_exists
    linkageType: ''
    returnType: int
    signature: int imap_seq_set_nostar_parse(const char *str, ARRAY_TYPE(seq_range)
      *dest)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_next_number
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:98,1
    - Dst: get_next_number
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:105,1
    - Dst: array_push_back
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:113,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - str
    - dest
    argTypes:
    - char*
    - ARRAY_TYPE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 122
    functionName: imap_seq_set_ordered_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-seqset.c
    functionUses: 2
    functionsReached:
    - get_next_number
    - array_push_back
    linkageType: ''
    returnType: int
    signature: int imap_seq_set_ordered_parse(const char *str, ARRAY_TYPE(uint32_t)
      *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_next_seq_range
      Src: /src/dovecot/src/lib-imap/imap-seqset.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - str
    - seq1_r
    - seq2_r
    argTypes:
    - char*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: imap_seq_range_parse
    functionSourceFile: /src/dovecot/src/lib-imap/imap-seqset.c
    functionUses: 1
    functionsReached:
    - get_next_seq_range
    linkageType: ''
    returnType: int
    signature: int imap_seq_range_parse(const char *str, uint32_t *seq1_r, uint32_t
      *seq2_r)
Fuzzer filename: empty-file.cpp
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- iostream-ssl-test.h
- textcat.h
- push-notification-event-mailboxdelete.h
- passdb-cache.h
- path-util.h
- mailbox-list-subscriptions.h
- mail-user.h
- http-common.h
- dict-sql-settings.h
- safe-mkstemp.h
- mdbox-settings.h
- unicode-data.h
- iostream-pump.h
- grp.h
- json-generator.h
- imap-urlauth-backend.h
- unicode/uchar.h
- push-notification-settings.h
- doveadm-client.h
- istream-private.h
- doveadm-protocol.h
- unlink-old-files.h
- service.h
- push-notification-event-flagsclear.h
- dsync-mailbox-tree-private.h
- index/dbox-common/dbox-file.h
- iostream-private.h
- otp-parse.h
- fsync-mode.h
- dsync-mailbox-export.h
- rquota.h
- lz4.h
- lang-tokenizer-private.h
- pop3c-sync.h
- guid.h
- message-decoder.h
- mail-storage-lua-private.h
- auth-scram.h
- imap-hibernate-client.h
- http-response-parser.h
- dict-init-cache.h
- submission-recipient.h
- imap-id.h
- libstemmer.h
- push-notification-event-mailboxsubscribe.h
- dbox-storage.h
- buffer.h
- math.h
- unicode/uclean.h
- libunwind.h
- cassandra.h
- mail-duplicate.h
- program-client.h
- lib-event.h
- config-filter.h
- netinet/in.h
- dlua-compat.h
- acl-settings.h
- imap-urlauth.h
- sasl-common.h
- push-notification-events-rfc5423.h
- dsync-brain-private.h
- cstdio
- event-filter.h
- hash-method.h
- dlfcn.h
- process-title.h
- quota.h
- auth-request-handler-private.h
- mycrypt.h
- istream-callback.h
- sys/types.h
- doveadm-print-private.h
- imap-stats.h
- mail-index-transaction-private.h
- mail-deliver.h
- mail-storage.h
- dns-util.h
- backtrace-string.h
- mntent.h
- sasl-oauth2.h
- sasl-server-protected.h
- push-notification-event-mailboxcreate.h
- dict-connection.h
- ostream-unix.h
- sys/vmount.h
- userdb-blocking.h
- istream-nonuls.h
- sasl.h
- sasl-server-mech-scram.h
- login-settings.h
- http-auth.h
- mail-storage-settings.h
- sys/inotify.h
- imap-utf7.h
- master-service-private.h
- capabilities.h
- config-parser.h
- json-text.h
- sasl-server-gssapi.h
- acl-api.h
- nfs-workarounds.h
- anvil-client.h
- mmap-util.h
- master-admin-client.h
- security/pam_appl.h
- config-dump-full.h
- fts-api.h
- db-lua.h
- sysexits.h
- imap-login-client.h
- auth-request-handler.h
- punycode.h
- mailbox-list-delete.h
- openssl/rand.h
- ostream-file-private.h
- service-anvil.h
- imap-feature.h
- client-common.h
- mail-transaction-log.h
- language.h
- mail-compress-plugin.h
- pop3-capability.h
- stats-service.h
- dsasl-client.h
- doveadm-mailbox-list-iter.h
- gssapi/gssapi_krb5.h
- mountpoint.h
- settings-history-core.h
- iostream-lz4.h
- imap-msgpart.h
- imap-search.h
- dict-settings.h
- config-parser-private.h
- acl-rights.h
- ioloop.h
- imap-urlauth-worker-settings.h
- push-notification-plugin.h
- array-decl.h
- read-full.h
- message-id.h
- lang-settings.h
- str-parse.h
- sleep.h
- pcre2.h
- mbox-file.h
- auth-sasl-oauth2.h
- doveadm-cmd-parse.h
- sendfile-util.h
- password-scheme-private.h
- submission-backend-relay.h
- maildir-mail.h
- ostream-final-trickle.h
- mail-search.h
- push-notification-event-messagetrash.h
- openssl/param_build.h
- auth-master-connection.h
- test-subprocess.h
- sys/time.h
- ldap-settings-parse.h
- mail-index-alloc-cache.h
- unicode/ucasemap.h
- mailbox-log.h
- imapc-storage.h
- message-part.h
- pop3c-settings.h
- http-request.h
- openssl/params.h
- eacces-error.h
- gssapi_krb5.h
- iostream-zstd-private.h
- fdatasync-path.h
- imap-client.h
- smtp-address.h
- crypt-settings.h
- gssapi/gssapi.h
- index/raw/raw-storage.h
- common.h
- fts-flatcurve-settings.h
- dsasl-client-mech-ntlm-dummy.h
- index-search-private.h
- auth-master-private.h
- lmtp-settings.h
- lualib.h
- auth-worker-server.h
- sys/event.h
- mail-transaction-log-view-private.h
- iconv.h
- ostream-multiplex.h
- indexer-client.h
- http-header.h
- mailbox-list-private.h
- fts-backend-flatcurve.h
- lang-user.h
- sys/mount.h
- malloc.h
- login-proxy-state.h
- istream-seekable.h
- maildir-settings.h
- doveadm-settings.h
- iostream-rawlog.h
- test-common.h
- mail-storage-private.h
- imap-urlauth-worker-client.h
- stats-event-category.h
- auth-digest.h
- auth-cache.h
- sys/cpuset.h
- dsync-mailbox-tree.h
- json-parser.h
- login-common.h
- mailbox-list-maildir.h
- execinfo.h
- service-log.h
- smtp-common.h
- failures.h
- systemd/sd-daemon.h
- memarea.h
- fuzzer.h
- uri-util.h
- ldap-private.h
- test-lib.h
- unlink-directory.h
- mail-index-modseq.h
- sys/file.h
- master-instance.h
- unicode/ustring.h
- istream-fs-file.h
- libexttextcat/textcat.h
- auth-penalty.h
- data-stack.h
- master-client.h
- seq-range-array.h
- fts-storage.h
- xfs/xqm.h
- time-util.h
- json-syntax.h
- indexer.h
- dsync-mailbox-state.h
- lang-tokenizer-generic-private.h
- quota-plugin.h
- smtp-reply.h
- maildir-sync.h
- lmtp-proxy.h
- imap-settings.h
- service-monitor.h
- userdb.h
- smtp-client-connection.h
- lib-signals.h
- dict-sql.h
- fs-api-private.h
- passdb.h
- test-mail-storage-common.h
- istream-attachment-connector.h
- ldap-connection-pool.h
- auth-sasl-common.h
- index-search-result.h
- auth-sasl.h
- master-service.h
- imap-search-args.h
- submission-client.h
- submission-backend.h
- sys/epoll.h
- mail-crypt-common.h
- login-interface.h
- ctype.h
- last-login-plugin.h
- imap-proxy.h
- env-util.h
- mail-storage-hooks.h
- unistd.h
- doveadm-dsync.h
- ldap-client.h
- sys/mntent.h
- sys/random.h
- net.h
- home-expand.h
- virtual-storage.h
- sdbox-storage.h
- arpa/inet.h
- sys/param.h
- byteorder.h
- fts-build.h
- algorithm
- imap-parser.h
- login-proxy.h
- lmtp-common.h
- http-client-private.h
- file-set-size.h
- unichar.h
- dbox-attachment.h
- stats-client.h
- test-mail-cache.h
- smtp-command-parser.h
- strings.h
- fcntl.h
- master-interface.h
- imap-url.h
- setjmp.h
- openssl/core.h
- iostream-openssl.h
- auth-common.h
- mail-autoexpunge.h
- http-server-private.h
- fts-build-mail.h
- openssl/sha.h
- push-notification-event-mailboxrename.h
- cpu-count.h
- dbox-file.h
- message-part-data.h
- settings.h
- dsync-transaction-log-scan.h
- linux/dqblk_xfs.h
- child-wait.h
- fts-user.h
- charset-alias-plugin.h
- mail-crypt-global-key.h
- sha1.h
- master-service-ssl.h
- imap-storage-callbacks.h
- connect-limit.h
- str.h
- dregex.h
- zlib.h
- imap-urlauth-client.h
- sasl/sasl.h
- mail-search-parser-private.h
- quota-clone-settings.h
- ostream-zlib.h
- istream-chain.h
- dcrypt.h
- restrict-access.h
- otp-hash.h
- ldap-settings.h
- qp-decoder.h
- auth-client-private.h
- pop3-protocol.h
- push-notification-event-messageread.h
- crypt.h
- pam/pam_appl.h
- auth-settings.h
- termios.h
- stdint.h
- smtp-reply-parser.h
- admin-client.h
- dict-private.h
- ostream-cmp.h
- http-request-parser.h
- http-message-parser.h
- stats-service-private.h
- fts-api-private.h
- test-dir.h
- imapc-settings.h
- istream-multiplex.h
- message-header-decode.h
- imap-master-client.h
- istream-concat.h
- settings-parser.h
- lmtp-local.h
- syslog-util.h
- submission-common.h
- sdbox-settings.h
- fts-search-args.h
- smtp-command.h
- sys/prctl.h
- oauth2-private.h
- auth-policy.h
- dsync-mailbox.h
- lmtp-commands.h
- wildcard-match.h
- old-set-parser.h
- push-notification-event-messagenew.h
- array.h
- linux/falloc.h
- imap-seqset.h
- dsync-mail.h
- getopt.h
- smtp-client.h
- json-tree.h
- auth-fields.h
- hex-binary.h
- db-ldap.h
- poll.h
- doveadm.h
- sys/mman.h
- smtp-submit.h
- openssl/dh.h
- istream-crlf.h
- imap-common.h
- imap-resp-code.h
- dsasl-client-private.h
- fts-parser.h
- hmac-cram-md5.h
- priorityq.h
- smtp-parser.h
- qp-encoder.h
- mdbox-storage-rebuild.h
- message-snippet.h
- mail-search-mime-register.h
- limits.h
- dict-commands.h
- imap-date.h
- time.h
- imap-login-settings.h
- openssl/objects.h
- mailbox-watch.h
- service-settings.h
- lib-event-private.h
- imapc-msgmap.h
- safe-mkdir.h
- lda-settings.h
- submission-commands.h
- bsearch-insert-pos.h
- sys/wait.h
- dsync-serializer.h
- sys/quota.h
- signal.h
- connection.h
- mail-search-parser.h
- rfc822-parser.h
- client.h
- doveadm-mail-iter.h
- dcrypt-private.h
- dlua-script-private.h
- mail-crypt-key.h
- ssl-settings.h
- doveadm-cmd.h
- dlua-script.h
- iostream-temp.h
- safe-memset.h
- dns-lua.h
- imapc-sync.h
- main.h
- istream.h
- dsync-mailbox-import.h
- db-ldap-settings.h
- acl-cache.h
- bits.h
- quota-settings.h
- openssl/provider.h
- sha-common.h
- solr-connection.h
- sodium.h
- bsd_auth.h
- event-log.h
- dict-ldap-settings.h
- sys/statvfs.h
- message-size.h
- sysinfo-get.h
- http-url.h
- ostream-failure-at.h
- compat.h
- virtual-settings.h
- pwd.h
- push-notification-event-flagsset.h
- db-oauth2.h
- imap-fetch.h
- message-date.h
- solr-response.h
- penalty.h
- istream-zlib.h
- message-binary-part.h
- utc-mktime.h
- unicode/utrans.h
- sql-api.h
- openssl/engine.h
- pop3-proxy.h
- mbox-md5.h
- istream-rawlog.h
- stats-settings.h
- cpu-limit.h
- netinet/tcp.h
- doveadm-client-lua.h
- pop3-settings.h
- imap-msgpart-url.h
- stats-common.h
- http-server.h
- imap-login-commands.h
- index/shared/shared-storage.h
- smtp-client-private.h
- mail-lua-plugin.h
- sdbox-sync.h
- mdbox-file.h
- worker-connection.h
- sys/capability.h
- config.h
- oauth2.h
- hmac.h
- dsync/dsync-ibc.h
- doveadm-mail.h
- asm/unistd.h
- push-notification-event-messageexpunge.h
- dict-lua.h
- fts-flatcurve-plugin.h
- virtual-plugin.h
- acl-plugin.h
- imap-list.h
- sys/stat.h
- message-address.h
- imapc-search.h
- otp-dictionary.h
- sys/ucred.h
- istream-decrypt.h
- acl-lookup-dict.h
- dict-transaction-memory.h
- auth-scram-client.h
- auth-gs2.h
- client-connection.h
- http-header-parser.h
- doveadm-dict.h
- mail-search-register.h
- crypt-blowfish.h
- istream-header-filter.h
- module-dir.h
- dict-sql-private.h
- malloc_np.h
- service-process-notify.h
- istream-mail.h
- ostream-dot.h
- subscription-file.h
- utime.h
- quota-clone-plugin.h
- istream-raw-mbox.h
- openssl/bio.h
- openssl/hmac.h
- fail-mail-storage.h
- openssl/crypto.h
- maildir-storage.h
- submission-settings.h
- imap-base-subject.h
- doveadm-print.h
- unix-socket-create.h
- fd-util.h
- ipwd.h
- client-connection-private.h
- md4.h
- lang-filter.h
- istream-dot.h
- istream-qp.h
- dict-client.h
- mailbox-uidvalidity.h
- mdbox-map-private.h
- dcrypt-iostream.h
- jfs/quota.h
- iso8601-date.h
- shared-storage.h
- log-throttle.h
- stdarg.h
- istream-sized.h
- quoted-printable.h
- imap-status.h
- mail-namespace.h
- imap-acl-plugin.h
- sys/uio.h
- mail-storage-service.h
- istream-failure-at.h
- var-expand-parser-private.h
- auth-worker-connection.h
- openssl/err.h
- ostream-rawlog.h
- dirent.h
- db-sql.h
- imapc-connection.h
- config-connection.h
- push-notification-event-messageappend.h
- unicode-break.h
- sched.h
- service-listen.h
- passdb-blocking.h
- doveadm-fs.h
- mdbox-map.h
- ldap.h
- randgen.h
- settings-history.h
- mailbox-attribute-internal.h
- mailbox-list-iter-private.h
- test-auth.h
- doveadm-dump-flatcurve.h
- ldap-sasl.h
- sqlite3.h
- imap-progress.h
- client-writer.h
- strescape.h
- mailbox-list-index.h
- libpq-fe.h
- string.h
- index-attachment.h
- mailbox-list-notify-tree.h
- imap-metadata.h
- pop3c-storage.h
- imap-state.h
- http-client.h
- stats-metrics.h
- istream-try.h
- openssl/evp.h
- mbox-lock.h
- hook-build.h
- lang-indexer-status.h
- openssl/x509.h
- stdio.h
- sys/ioctl.h
- login-server-auth.h
- cdb.h
- fts-solr-settings.h
- imap-master-connection.h
- sys/mnttab.h
- ostream-encrypt.h
- notify-plugin-private.h
- client-reader.h
- printf-format-fix.h
- login_cap.h
- zstd.h
- gssapi.h
- smtp-dovecot.h
- xapian.h
- auth-client-interface.h
- smtp-syntax.h
- fs-wrapper.h
- test-private.h
- all-settings.h
- acl-api-private.h
- sys/resource.h
- smtp-client-transaction.h
- ostream-private.h
- ioloop-private.h
- imapc-list.h
- aqueue.h
- mdbox-sync.h
- fts-indexer.h
- version.h
- strnum.h
- log-connection.h
- mailbox-list-index-storage.h
- mailbox-list.h
- mailbox-attribute.h
- password-scheme.h
- imap-bodystructure.h
- istream-file-private.h
- ucontext.h
- smtp-params.h
- index-rebuild.h
- raw-sync.h
- sys/un.h
- client-authenticate.h
- dns-client-cache.h
- imap-urlauth-fetch.h
- fs-sis-common.h
- istream-base64.h
- fts-settings.h
- bsd/stdlib.h
- bzlib.h
- pthread.h
- imap-commands-util.h
- json-istream.h
- sha2.h
- openssl/bn.h
- imap-sync.h
- mailbox-attribute-private.h
- mail-cache-private.h
- doveadm-who.h
- stats-dist.h
- ucred.h
- sasl-server-oauth2.h
- lazy-expunge-plugin.h
- index-sync-changes.h
- mail-cache.h
- service-process.h
- push-notification-events.h
- base32.h
- rfc2231-parser.h
- str-table.h
- imap-quote.h
- test-lib.inc
- mail-index-util.h
- imem.h
- fs-api.h
- notify-plugin.h
- mkdir-parents.h
- default-settings-import.h
- mailbox-list-fs.h
- smtp-submit-settings.h
- expansion.h
- execv-const.h
- dns-lookup.h
- istream-binary-converter.h
- push-notification-drivers.h
- json-ostream.h
- iostream-ssl-private.h
- mailbox-list-index-sync.h
- doveadm-dump.h
- krb5.h
- iostream-multiplex-private.h
- doc.h
- socks.h
- sha3.h
- sys/mkdev.h
- zstd_errors.h
- quota-fs.h
- inttypes.h
- istream-fs-stats.h
- lang-filter-private.h
- doveadm-connection.h
- base64.h
- netdb.h
- dict-lua-private.h
- master-settings.h
- auth-proxy.h
- macros.h
- push-notification-txn-msg.h
- restrict-process-size.h
- dbox-mail.h
- charset-utf8-private.h
- master-service-settings.h
- smtp-server.h
- quota-private.h
- mailbox-list-notify.h
- smtp-server-private.h
- dlua-wrapper.h
- push-notification-event-mailboxunsubscribe.h
- db-ldap-sasl.h
- file-lock.h
- str-find.h
- openssl/ssl.h
- mail-send.h
- lauxlib.h
- mail-index-strmap.h
- login-client.h
- file-create-locked.h
- doveadm-util.h
- istream-timeout.h
- virtual-transaction.h
- bsd/unistd.h
- message-search.h
- fts-solr-plugin.h
- imap-urlauth-settings.h
- auth-gssapi.h
- openssl/x509v3.h
- mail-transaction-log-private.h
- process-stat.h
- mail-index-sync-private.h
- sys/signal.h
- pop3-common.h
- pop3-client.h
- sys/sendfile.h
- hash2.h
- dict.h
- client-http.h
- dsync-ibc-private.h
- pop3c-client.h
- lmtp-recipient.h
- index-thread-private.h
- ioloop-notify-fd.h
- hex-dec.h
- submission-login-settings.h
- ufs/ufs/quota.h
- otp.h
- mailbox-guid-cache.h
- imap-urlauth-common.h
- mail-log-plugin.h
- quota-status-settings.h
- dsync/dsync-brain.h
- fs-test.h
- imap-urlauth-worker-common.h
- sys/sysmacros.h
- failures-private.h
- mail-html2text.h
- iostream-rawlog-private.h
- numpack.h
- acl-storage.h
- mail-crypt-plugin.h
- anvil-connection.h
- imapc-client-private.h
- mailbox-tree.h
- dbox-save.h
- ostream-hash.h
- event-filter-private.h
- test-mail-index.h
- sys/fs/ufs_quota.h
- mail-search-mime.h
- syslog.h
- str-sanitize.h
- message-header-encode.h
- istream-hash.h
- hash-decl.h
- http-transfer.h
- string
- message-parser.h
- strfuncs.h
- sys/fs/quota_common.h
- auth-request-var-expand.h
- dovecot-version.h
- mail-search-build.h
- module-context.h
- message-header-hash.h
- push-notification-triggers.h
- auth-request.h
- askpass.h
- imap-util.h
- index-mailbox-size.h
- event-exporter.h
- mail-index.h
- mbox-settings.h
- admin-client-pool.h
- sort.h
- index-sort-private.h
- hash-format.h
- fts-search-serialize.h
- mail-thread.h
- llist.h
- raw-storage.h
- http-date.h
- lib.h
- write-full.h
- auth-master.h
- utc-offset.h
- pop3-migration-plugin.h
- auth-token.h
- istream-attachment-extractor.h
- json-types.h
- auth-client-connection.h
- lang-icu.h
- auth.h
- imap-quota-plugin.h
- stdbool.h
- istream-tee.h
- index-mail.h
- mailbox-search-result-private.h
- seq-set-builder.h
- unicode-data-tables.h
- iostream-proxy.h
- ostream-wrapper.h
- sys/apparmor.h
- sql-api-private.h
- imap-expunge.h
- ostream.h
- imapc-client.h
- doveadm-fts.h
- imap-arg.h
- sys/utsname.h
- indexer-queue.h
- mysql.h
- mbox-from.h
- auth-client.h
- message-part-serialize.h
- dsync-brain.h
- charset-utf8.h
- message-header-parser.h
- mailbox-list-iter.h
- imap-keepalive.h
- mbox-sync-private.h
- imapc-attribute.h
- mail-search-mime-build.h
- errno.h
- acl-shared-storage.h
- compression.h
- driver-test.h
- lua.h
- submission-proxy.h
- config-request.h
- dsync-deserializer.h
- mail-storage-lua.h
- hostpid.h
- index-sort.h
- openssl/pem.h
- lang-library.h
- fts-backend-flatcurve-xapian.h
- imap-commands.h
- crt_externs.h
- fdpass.h
- malloc-overflow.h
- ldap-utils.h
- push-notification-event-message-common.h
- var-expand.h
- lang-common.h
- lang-tokenizer-common.h
- sys/poll.h
- imapc-mail.h
- auth-sasl-gssapi.h
- primes.h
- expat.h
- ostream-null.h
- stdlib.h
- imap-envelope.h
- var-expand-parser.h
- mail-index-private.h
- hash.h
- fts-plugin.h
- index-storage.h
- openssl/core_names.h
- mail-error.h
- login-server.h
- openssl/rsa.h
- errmsg.h
- sstream
- index-pop3-uidl.h
- crc32.h
- /usr/include/quota.h
- dsync-ibc.h
- gssapi/gssapi_ext.h
- lmtp-client.h
- mail-copy.h
- sasl-server.h
- push-notification-txn-mbox.h
- message-parser-private.h
- maildir-filename.h
- openssl/ec.h
- maildir-filename-flags.h
- test-stats-common.h
- auth-scram-server.h
- mail-index-view-private.h
- istream-unix.h
- index-sync-private.h
- mbox-storage.h
- file-copy.h
- json-tree-io.h
- imap-urlauth-connection.h
- mdbox-storage.h
- unicode-transform.h
- sys/select.h
- mail-lua-settings.h
- ioloop-iolist.h
- master-connection.h
- sdbox-file.h
- md5.h
- ostream-metawrap.h
- sasl-server-private.h
- iostream.h
- log-error-buffer.h
- maildir-uidlist.h
- http-response.h
- sys/socket.h
- file-dotlock.h
- imap-notify.h
- mail-types.h
- http-parser.h
- db-passwd-file.h
- istream-metawrap.h
- var-expand-private.h
- program-client-private.h
- trash-plugin.h
- imap-match.h
- mempool.h
- acl-backend-vfile.h
- imap-sync-private.h
- mailbox-recent-flags.h
- iostream-ssl.h
- imap-urlauth-private.h
- file-cache.h
- glob.h
- gssapi-dummy.h
- dovecot-openssl-common.h
- maildir-keywords.h
- pop3-commands.h
- stddef.h
- test-auth-master.h
- smtp-client-command.h
- otp-parity.h
- dup2-array.h
- pkcs5.h
- valgrind/valgrind.h
- lang-tokenizer.h
report: name
sources:
- function_names: []
  source_file: /src/dovecot/coccinelle/macros.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: 'TRUE'
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/coccinelle/macros.h
      type_or_value: '1'
    - item_type: preproc_def
      name: 'FALSE'
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/coccinelle/macros.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names:
  - penalty_init
  - penalty_rec_free
  - penalty_deinit
  - penalty_set_expire_secs
  - penalty_bump_checksum
  - penalty_add_checksum
  - penalty_get
  - penalty_timeout
  - penalty_inc
  - penalty_has_checksum
  - penalty_dump
  source_file: /src/dovecot/src/anvil/penalty.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PENALTY_DEFAULT_EXPIRE_SECS
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/anvil/penalty.c
      type_or_value: (60*60)
    - item_type: preproc_def
      name: CHECKSUM_VALUE_COUNT
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/anvil/penalty.c
      type_or_value: '2'
    - item_type: preproc_def
      name: CHECKSUM_VALUE_PTR_COUNT
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/anvil/penalty.c
      type_or_value: '10'
    - item_type: preproc_def
      name: LAST_UPDATE_BITS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/anvil/penalty.c
      type_or_value: '15'
    structs:
    - fields:
      - name: '*prev'
        type: struct penalty_rec
      - name: '*ident'
        type: char
      - name: last_penalty
        type: unsigned int
      - name: penalty
        type: unsigned int
      - name: last_update
        type: unsigned int
      - name: checksum_is_pointer
        type: bool
      - name: checksum
        type: "union {\n\t\tunsigned int value[CHECKSUM_VALUE_COUNT];\n\t\tunsigned
          int *value_ptr;\n\t}"
      item_type: struct
      name: penalty_rec
      pos:
        line_end: 39
        line_start: 23
        source_file: /src/dovecot/src/anvil/penalty.c
    - fields:
      - name: '*oldest'
        type: struct penalty_rec
      - name: expire_secs
        type: unsigned int
      - name: '*to'
        type: struct timeout
      item_type: struct
      name: penalty
      pos:
        line_end: 48
        line_start: 41
        source_file: /src/dovecot/src/anvil/penalty.c
    typedefs: []
    union: []
- function_names:
  - test_session_dump
  - test_connect_limit
  - test_session_disconnect
  - test_session_disconnect_pid
  - test_session_find
  - test_sessions_compare
  - test_connect_limit_random
  - main
  source_file: /src/dovecot/src/anvil/test-connect-limit.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SESSION1_HEX
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/anvil/test-connect-limit.c
      type_or_value: '"100000000000000000000000000000f1"'
    - item_type: preproc_def
      name: SESSION2_HEX
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/anvil/test-connect-limit.c
      type_or_value: '"200000000000000000000000000000f2"'
    - item_type: preproc_def
      name: SESSION3_HEX
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/anvil/test-connect-limit.c
      type_or_value: '"300000000000000000000000000000f3"'
    - item_type: preproc_def
      name: TEST_SESSION1_STR
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/dovecot/src/anvil/test-connect-limit.c
      type_or_value: '"501\tuser1\tservice1\t1.2.3.4\t"SESSION1_HEX"\t\taltvalueA\taltvalueB\n"'
    - item_type: preproc_def
      name: TEST_SESSION2_STR
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/dovecot/src/anvil/test-connect-limit.c
      type_or_value: '"501\tuser1\tservice1\t1.2.3.4\t"SESSION2_HEX"\t\taltvalueA\taltvalueC\taltvalueA\n"'
    - item_type: preproc_def
      name: TEST_SESSION3_STR
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/dovecot/src/anvil/test-connect-limit.c
      type_or_value: '"600\tuser2\tservice2\t4.3.2.1\t"SESSION3_HEX"\t1.0.0.2\taltvalueA\taltvalueC\t\taltvalueD\n"'
    structs:
    - fields:
      - name: '*prev'
        type: struct test_session
      - name: pid
        type: pid_t
      - name: key
        type: struct connect_limit_key
      - name: guid
        type: guid_128_t
      - name: dest_ip
        type: struct ip_addr
      - name: '*alt_usernames[3*2 + 1]'
        type: char
      - name: found
        type: bool
      item_type: struct
      name: test_session
      pos:
        line_end: 232
        line_start: 223
        source_file: /src/dovecot/src/anvil/test-connect-limit.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/anvil/penalty.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PENALTY_MAX_VALUE
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/anvil/penalty.h
      type_or_value: ((1 << 16)-1)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/anvil/anvil-connection.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: "anvil_connection_cmd_callback_t(const char *reply, const char *error,\n\t\t\t\tvoid
        *context)"
      pos:
        line_end: 6
        line_start: 4
        source_file: /src/dovecot/src/anvil/anvil-connection.h
      type: void
    union: []
- function_names:
  - test_penalty_checksum
  - main
  source_file: /src/dovecot/src/anvil/test-penalty.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - anvil_refresh_proctitle
  - anvil_refresh_proctitle_delayed
  - admin_cmd_send
  - client_connected
  - log_fdpass_input
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/anvil/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ANVIL_CLIENT_POOL_MAX_CONNECTIONS
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/anvil/main.c
      type_or_value: '100'
    - item_type: preproc_def
      name: ANVIL_PROCTITLE_REFRESH_INTERVAL_MSECS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/anvil/main.c
      type_or_value: '1000'
    structs: []
    typedefs: []
    union: []
- function_names:
  - SESSION_TRACK_USERIP
  - userip_hash
  - userip_cmp
  - connect_limit_init
  - connect_limit_destroy_all_processes
  - connect_limit_deinit
  - connect_limit_lookup
  - process_lookup
  - session_link_process
  - session_unlink_process
  - alt_username_field_find
  - alt_username_field_ref
  - alt_username_field_unref
  - alt_username_value_link
  - session_set_alt_usernames
  - session_unset_alt_usernames
  - connect_limit_connect
  - userip_free
  - userip_hash_unref
  - session_free
  - connect_limit_disconnect
  - connect_limit_process_free
  - connect_limit_disconnect_pid
  - connect_limit_dump
  - connect_limit_iter_result_cmp
  - connect_limit_iter_init_common
  - connect_limit_iter_begin
  - connect_limit_iter_begin_alt_username
  - connect_limit_iter_next
  - connect_limit_iter_deinit
  source_file: /src/dovecot/src/anvil/connect-limit.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pid
        type: pid_t
      - name: kick_type
        type: enum kick_type
      - name: '*sessions'
        type: struct session
      item_type: struct
      name: process
      pos:
        line_end: 17
        line_start: 13
        source_file: /src/dovecot/src/anvil/connect-limit.c
    - fields:
      - name: '*username'
        type: char
      - name: '*protocol'
        type: char
      - name: ip
        type: struct ip_addr
      item_type: struct
      name: userip
      pos:
        line_end: 24
        line_start: 19
        source_file: /src/dovecot/src/anvil/connect-limit.c
    - fields:
      - name: '*prev'
        type: struct session_alt_username
      - name: '*alt_username'
        type: char
      - name: '*session'
        type: struct session
      item_type: struct
      name: session_alt_username
      pos:
        line_end: 34
        line_start: 26
        source_file: /src/dovecot/src/anvil/connect-limit.c
    - fields:
      - name: '*process_prev'
        type: struct session
      - name: '*user_prev'
        type: struct session
      - name: '*userip'
        type: struct userip
      - name: '*process'
        type: struct process
      - name: '*service'
        type: char
      - name: conn_guid
        type: guid_128_t
      - name: dest_ip
        type: struct ip_addr
      - name: alt_usernames_count
        type: unsigned int
      - name: '*alt_usernames'
        type: struct session_alt_username
      item_type: struct
      name: session
      pos:
        line_end: 56
        line_start: 38
        source_file: /src/dovecot/src/anvil/connect-limit.c
    - fields:
      - name: '*name'
        type: char
      - name: refcount
        type: unsigned int
      item_type: struct
      name: alt_username_field
      pos:
        line_end: 61
        line_start: 58
        source_file: /src/dovecot/src/anvil/connect-limit.c
    - fields:
      - name: '*strings'
        type: struct str_table
      - name: '*alt_username_hashes'
        type: HASH_TABLE_TYPE
      item_type: struct
      name: connect_limit
      pos:
        line_end: 89
        line_start: 69
        source_file: /src/dovecot/src/anvil/connect-limit.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*limit'
        type: struct connect_limit
      - name: idx
        type: unsigned int
      item_type: struct
      name: connect_limit_iter
      pos:
        line_end: 96
        line_start: 91
        source_file: /src/dovecot/src/anvil/connect-limit.c
    typedefs: []
    union: []
- function_names:
  - anvil_connection_unref
  - anvil_connection_key_hash
  - anvil_connection_key_cmp
  - connect_limit_key_parse
  - str_to_kick_type
  - anvil_connection_cmd_reply
  - anvil_cmd_input
  - kick_user_finished
  - kick_more
  - kick_user_callback
  - kick_user_with_signal
  - kick_user_iter_more
  - kick_user_iter
  - kick_user
  - kick_alt_user
  - anvil_connection_request
  - anvil_connection_handshake
  - anvil_connection_input_line
  - anvil_connection_create
  - anvil_connection_destroy
  - anvil_connection_find
  - anvil_connection_send_cmd
  - anvil_get_global_counts
  - anvil_connections_init
  - anvil_connections_deinit
  source_file: /src/dovecot/src/anvil/anvil-connection.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_INBUF_SIZE
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/anvil/anvil-connection.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: ANVIL_CLIENT_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/anvil/anvil-connection.c
      type_or_value: '2'
    - item_type: preproc_def
      name: ANVIL_CLIENT_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/anvil/anvil-connection.c
      type_or_value: '0'
    - item_type: preproc_def
      name: ANVIL_CMD_CHANNEL_ID
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/anvil/anvil-connection.c
      type_or_value: '1'
    structs:
    - fields:
      - name: '*service'
        type: char
      - name: pid
        type: pid_t
      item_type: struct
      name: anvil_connection_key
      pos:
        line_end: 34
        line_start: 31
        source_file: /src/dovecot/src/anvil/anvil-connection.c
    - fields:
      - name: '*cmdline'
        type: char
      - name: '*callback'
        type: anvil_connection_cmd_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: anvil_connection_command
      pos:
        line_end: 40
        line_start: 36
        source_file: /src/dovecot/src/anvil/anvil-connection.c
    - fields:
      - name: conn
        type: struct connection
      - name: refcount
        type: int
      - name: '*cmd_input'
        type: struct istream
      - name: '*cmd_output'
        type: struct ostream
      - name: '*cmd_io'
        type: struct io
      - name: '*service'
        type: char
      - name: master
        type: bool
      - name: fifo
        type: bool
      - name: added_to_hash
        type: bool
      item_type: struct
      name: anvil_connection
      pos:
        line_end: 56
        line_start: 42
        source_file: /src/dovecot/src/anvil/anvil-connection.c
    - fields:
      - name: '*kick'
        type: struct anvil_cmd_kick
      - name: '*username'
        type: char
      - name: '*service'
        type: char
      - name: pid
        type: pid_t
      - name: kick_type
        type: enum kick_type
      - name: '*client'
        type: struct admin_client
      item_type: struct
      name: anvil_cmd_kick_target
      pos:
        line_end: 67
        line_start: 58
        source_file: /src/dovecot/src/anvil/anvil-connection.c
    - fields:
      - name: '*prev'
        type: struct anvil_cmd_kick
      - name: '*conn'
        type: struct anvil_connection
      - name: '*iter'
        type: struct connect_limit_iter
      - name: add_conn_guid
        type: bool
      - name: prev_pid
        type: pid_t
      - name: cmd_refcount
        type: int
      - name: kick_count
        type: unsigned int
      item_type: struct
      name: anvil_cmd_kick
      pos:
        line_end: 78
        line_start: 69
        source_file: /src/dovecot/src/anvil/anvil-connection.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/anvil/admin-client-pool.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - admin_client_send_cmd
  source_file: /src/dovecot/src/anvil/admin-client.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: admin_client_callback_t(const char *reply, const char *error, void *context)
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/anvil/admin-client.h
      type: void
    union: []
- function_names:
  - admin_cmd_send
  source_file: /src/dovecot/src/anvil/common.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: admin_cmd_callback_t(const char *reply, const char *error, void *context)
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/anvil/common.h
      type: void
    union: []
- function_names:
  - admin_client_init
  - admin_client_ref
  - admin_client_reply
  - admin_client_fail_commands
  - admin_client_destroy
  - admin_client_unref
  - admin_client_connected
  - admin_client_send_cmd
  - admin_client_input_line
  - admin_clients_init
  - admin_clients_deinit
  source_file: /src/dovecot/src/anvil/admin-client.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*cmdline'
        type: char
      - name: '*callback'
        type: admin_client_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: admin_client_command
      pos:
        line_end: 12
        line_start: 8
        source_file: /src/dovecot/src/anvil/admin-client.c
    - fields:
      - name: conn
        type: struct connection
      - name: refcount
        type: int
      - name: '*to_failed'
        type: struct timeout
      item_type: struct
      name: admin_client
      pos:
        line_end: 19
        line_start: 14
        source_file: /src/dovecot/src/anvil/admin-client.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/anvil/connect-limit.h
  types:
    enum:
    - enumerators:
      - name: KICK_TYPE_NONE
      - name: KICK_TYPE_SIGNAL_WITH_SOCKET
      - name: KICK_TYPE_ADMIN_SOCKET
      - name: KICK_TYPE_SIGNAL
      item_type: enum
      name: kick_type
      pos:
        line_end: 18
        line_start: 6
        source_file: /src/dovecot/src/anvil/connect-limit.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*username'
        type: char
      - name: '*service'
        type: char
      - name: ip
        type: struct ip_addr
      item_type: struct
      name: connect_limit_key
      pos:
        line_end: 31
        line_start: 20
        source_file: /src/dovecot/src/anvil/connect-limit.h
    - fields:
      - name: kick_type
        type: enum kick_type
      - name: pid
        type: pid_t
      - name: '*service'
        type: char
      - name: '*username'
        type: char
      - name: conn_guid
        type: guid_128_t
      item_type: struct
      name: connect_limit_iter_result
      pos:
        line_end: 39
        line_start: 33
        source_file: /src/dovecot/src/anvil/connect-limit.h
    typedefs: []
    union: []
- function_names:
  - admin_client_pool_init
  - admin_client_pool_deinit
  - admin_client_pool_cleanup
  - admin_client_pool_get
  - admin_client_pool_cmd_callback
  - admin_client_pool_send_cmd
  source_file: /src/dovecot/src/anvil/admin-client-pool.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*client'
        type: struct admin_client_ref
      - name: '*callback'
        type: admin_client_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: admin_client_cmd_context
      pos:
        line_end: 10
        line_start: 6
        source_file: /src/dovecot/src/anvil/admin-client-pool.c
    - fields:
      - name: refcount
        type: int
      - name: pid
        type: pid_t
      - name: '*client'
        type: struct admin_client
      - name: '*pool'
        type: struct admin_client_pool
      item_type: struct
      name: admin_client_ref
      pos:
        line_end: 17
        line_start: 12
        source_file: /src/dovecot/src/anvil/admin-client-pool.c
    - fields:
      - name: '*base_dir'
        type: char
      - name: max_connections
        type: unsigned int
      - name: idle_connection_count
        type: unsigned int
      item_type: struct
      name: admin_client_pool
      pos:
        line_end: 24
        line_start: 19
        source_file: /src/dovecot/src/anvil/admin-client-pool.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/anvil/anvil-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_feature_lookup
  - imap_feature_idx
  - imap_feature_register
  - imap_features_init
  - imap_features_deinit
  source_file: /src/dovecot/src/imap/imap-feature.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_fetch_handler_cmp
  - imap_fetch_handlers_register
  - imap_fetch_handler_unregister
  - imap_fetch_handler_bsearch
  - imap_fetch_handler_lookup
  - imap_fetch_init_handler
  - imap_fetch_init_nofail_handler
  - imap_fetch_att_list_parse
  - imap_fetch_alloc
  - imap_fetch_add_handler
  - expunges_drop_known
  - get_expunges_fallback
  - imap_fetch_send_vanished
  - imap_fetch_init
  - imap_fetch_begin
  - imap_fetch_flush_buffer
  - imap_fetch_send_nil_reply
  - imap_fetch_fix_empty_reply
  - imap_fetch_cur_failed
  - imap_fetch_more_int
  - imap_fetch_more
  - imap_fetch_more_no_lock_update
  - imap_fetch_end
  - imap_fetch_free
  - fetch_body
  - fetch_body_init
  - fetch_bodystructure
  - fetch_bodystructure_init
  - fetch_envelope
  - fetch_envelope_init
  - fetch_flags
  - imap_fetch_flags_init
  - fetch_internaldate
  - fetch_internaldate_init
  - fetch_modseq
  - imap_fetch_modseq_init
  - fetch_uid
  - imap_fetch_uid_init
  - imap_fetch_savedate
  - imap_fetch_savedate_init
  - fetch_guid
  - fetch_guid_init
  - fetch_x_mailbox
  - fetch_x_mailbox_init
  - fetch_x_real_uid
  - fetch_x_real_uid_init
  - fetch_x_savedate
  - fetch_x_savedate_init
  - imap_fetch_handlers_init
  - imap_fetch_handlers_deinit
  source_file: /src/dovecot/src/imap/imap-fetch.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BODY_NIL_REPLY
      pos:
        line_end: 21
        line_start: 19
        source_file: /src/dovecot/src/imap/imap-fetch.c
      type_or_value: '"\"text\" \"plain\" NIL NIL NIL \"7bit\" 0 0"'
    - item_type: preproc_def
      name: ENVELOPE_NIL_REPLY
      pos:
        line_end: 23
        line_start: 21
        source_file: /src/dovecot/src/imap/imap-fetch.c
      type_or_value: '"(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL)"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_sort_program
  - cmd_sort
  source_file: /src/dovecot/src/imap/cmd-sort.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: enum mail_sort_type
      - name: '*name'
        type: char
      item_type: struct
      name: sort_name
      pos:
        line_end: 11
        line_start: 8
        source_file: /src/dovecot/src/imap/cmd-sort.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-progress.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_status
  source_file: /src/dovecot/src/imap/cmd-status.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_close
  source_file: /src/dovecot/src/imap/cmd-close.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-master-client.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-state.h
  types:
    enum:
    - enumerators:
      - name: IMAP_STATE_OK
      - name: IMAP_STATE_CORRUPTED
      - name: IMAP_STATE_INCONSISTENT
      - name: IMAP_STATE_ERROR
      item_type: enum
      name: imap_state_result
      pos:
        line_end: 9
        line_start: 4
        source_file: /src/dovecot/src/imap/imap-state.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_status_items_is_empty
  source_file: /src/dovecot/src/imap/imap-status.h
  types:
    enum:
    - enumerators:
      - name: IMAP_STATUS_ITEM_MESSAGES
        value: BIT(0)
      - name: IMAP_STATUS_ITEM_UNSEEN
        value: BIT(4)
      - name: IMAP_STATUS_ITEM_UIDNEXT
        value: BIT(2)
      - name: IMAP_STATUS_ITEM_RECENT
        value: BIT(1)
      - name: IMAP_STATUS_ITEM_UIDVALIDITY
        value: BIT(3)
      - name: IMAP_STATUS_ITEM_HIGHESTMODSEQ
        value: BIT(5)
      - name: IMAP_STATUS_ITEM_SIZE
        value: BIT(6)
      - name: IMAP_STATUS_ITEM_DELETED
        value: BIT(7)
      - name: IMAP_STATUS_ITEM_X_SIZE
        value: BIT(16)
      - name: IMAP_STATUS_ITEM_X_GUID
        value: BIT(17)
      item_type: enum
      name: imap_status_item_flags
      pos:
        line_end: 15
        line_start: 3
        source_file: /src/dovecot/src/imap/imap-status.h
    preproc_defs: []
    structs:
    - fields:
      - name: flags
        type: enum imap_status_item_flags
      item_type: struct
      name: imap_status_items
      pos:
        line_end: 19
        line_start: 17
        source_file: /src/dovecot/src/imap/imap-status.h
    - fields:
      - name: status
        type: struct mailbox_status
      - name: metadata
        type: struct mailbox_metadata
      - name: error
        type: enum mail_error
      - name: '*errstr'
        type: char
      item_type: struct
      name: imap_status_result
      pos:
        line_end: 26
        line_start: 21
        source_file: /src/dovecot/src/imap/imap-status.h
    typedefs: []
    union: []
- function_names:
  - imap_master_client_destroy
  - imap_master_client_parse_input
  - imap_master_client_verify
  - imap_master_client_input_args
  - imap_master_client_input_line
  - imap_master_client_idle_timeout
  - imap_master_client_create
  - imap_master_clients_refresh_proctitle
  - imap_master_clients_init
  - imap_master_clients_deinit
  source_file: /src/dovecot/src/imap/imap-master-client.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: imap_client_created
        type: bool
      item_type: struct
      name: imap_master_client
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/dovecot/src/imap/imap-master-client.c
    - fields:
      - name: '*client_input'
        type: buffer_t
      - name: '*client_output'
        type: buffer_t
      - name: '*state'
        type: buffer_t
      - name: '*tag'
        type: char
      - name: hibernation_start_time
        type: struct timeval
      - name: peer_dev
        type: dev_t
      - name: peer_ino
        type: ino_t
      - name: state_import_bad_idle_done
        type: bool
      - name: state_import_idle_continue
        type: bool
      item_type: struct
      name: imap_master_input
      pos:
        line_end: 47
        line_start: 29
        source_file: /src/dovecot/src/imap/imap-master-client.c
    typedefs: []
    union: []
- function_names:
  - cmd_capability
  source_file: /src/dovecot/src/imap/cmd-capability.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_lsub
  source_file: /src/dovecot/src/imap/cmd-lsub.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_refresh_proctitle
  - imap_refresh_proctitle_delayed
  - client_create_from_input
  - imap_hibernate_server
  - mailbox_notify_callback
  - test_imap_client_hibernate
  - main
  source_file: /src/dovecot/src/imap/test-imap-client-hibernate.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEMP_DIRNAME
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/imap/test-imap-client-hibernate.c
      type_or_value: '".test-ich"'
    - item_type: preproc_def
      name: SERVER_KILL_TIMEOUT_SECS
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/imap/test-imap-client-hibernate.c
      type_or_value: '10'
    - item_type: preproc_def
      name: EVILSTR
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/imap/test-imap-client-hibernate.c
      type_or_value: '"\t\r\n\001"'
    structs:
    - fields:
      - name: '*client'
        type: struct client
      - name: fd_listen
        type: int
      - name: has_mailbox
        type: bool
      - name: '*reply'
        type: char
      item_type: struct
      name: test_imap_client_hibernate
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/dovecot/src/imap/test-imap-client-hibernate.c
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: test_service_settings
      pos:
        line_end: 270
        line_start: 267
        source_file: /src/dovecot/src/imap/test-imap-client-hibernate.c
    typedefs: []
    union: []
- function_names:
  - imap_list_return_flag_register
  - imap_list_return_flag_unregister
  - imap_list_return_flag_parse
  - imap_list_return_flag_send
  - imap_mailbox_flags2str
  - imap_list_init
  - imap_list_deinit
  source_file: /src/dovecot/src/imap/imap-list.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLIENT_IDLE_TIMEOUT_MSECS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/imap/imap-common.h
      type_or_value: (60*30*1000)
    - item_type: preproc_def
      name: CLIENT_OUTPUT_TIMEOUT_MSECS
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/imap/imap-common.h
      type_or_value: (5*60*1000)
    - item_type: preproc_def
      name: CLIENT_OUTPUT_OPTIMAL_SIZE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/imap/imap-common.h
      type_or_value: '2048'
    - item_type: preproc_def
      name: CLIENT_MAX_BAD_COMMANDS
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/imap/imap-common.h
      type_or_value: '20'
    structs: []
    typedefs:
    - item_type: typedef
      name: imap_client_created_func_t(struct client **client)
      pos:
        line_end: 21
        line_start: 21
        source_file: /src/dovecot/src/imap/imap-common.h
      type: void
    union: []
- function_names:
  - cmd_unsubscribe
  source_file: /src/dovecot/src/imap/cmd-unsubscribe.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-client.h
  types:
    enum:
    - enumerators:
      - name: CLIENT_CREATE_FLAG_UNHIBERNATED
        value: BIT(0)
      - name: CLIENT_CREATE_FLAG_MULTIPLEX_OUTPUT
        value: BIT(1)
      item_type: enum
      name: client_create_flags
      pos:
        line_end: 24
        line_start: 21
        source_file: /src/dovecot/src/imap/imap-client.h
    - enumerators:
      - name: CLIENT_COMMAND_STATE_WAIT_INPUT
      - name: CLIENT_COMMAND_STATE_WAIT_SYNC
      - name: CLIENT_COMMAND_STATE_WAIT_UNAMBIGUITY
      - name: CLIENT_COMMAND_STATE_WAIT_EXTERNAL
      - name: CLIENT_COMMAND_STATE_WAIT_OUTPUT
      - name: CLIENT_COMMAND_STATE_DONE
      item_type: enum
      name: client_command_state
      pos:
        line_end: 58
        line_start: 45
        source_file: /src/dovecot/src/imap/imap-client.h
    preproc_defs:
    - item_type: preproc_def
      name: CLIENT_COMMAND_QUEUE_MAX_SIZE
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/imap/imap-client.h
      type_or_value: '4'
    - item_type: preproc_def
      name: CLIENT_MAX_SEARCH_UPDATES
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/imap/imap-client.h
      type_or_value: '10'
    structs:
    - fields:
      - name: '*names'
        type: ARRAY_TYPE
      - name: announce_count
        type: unsigned int
      item_type: struct
      name: mailbox_keywords
      pos:
        line_end: 34
        line_start: 26
        source_file: /src/dovecot/src/imap/imap-client.h
    - fields:
      - name: '*tag'
        type: char
      - name: '*result'
        type: struct mail_search_result
      - name: return_uids
        type: bool
      - name: fetch_pool
        type: pool_t
      - name: '*fetch_ctx'
        type: struct imap_fetch_context
      item_type: struct
      name: imap_search_update
      pos:
        line_end: 43
        line_start: 36
        source_file: /src/dovecot/src/imap/imap-client.h
    - fields:
      - name: start_time
        type: struct timeval
      - name: last_run_timeval
        type: struct timeval
      - name: start_ioloop_wait_usecs
        type: uint64_t
      - name: running_usecs
        type: uint64_t
      - name: lock_wait_usecs
        type: uint64_t
      - name: bytes_in
        type: uint64_t
      item_type: struct
      name: client_command_stats
      pos:
        line_end: 75
        line_start: 60
        source_file: /src/dovecot/src/imap/imap-client.h
    - fields:
      - name: timeval
        type: struct timeval
      - name: lock_wait_usecs
        type: uint64_t
      - name: bytes_in
        type: uint64_t
      item_type: struct
      name: client_command_stats_start
      pos:
        line_end: 81
        line_start: 77
        source_file: /src/dovecot/src/imap/imap-client.h
    - fields:
      - name: '*prev'
        type: struct client_command_context
      - name: '*client'
        type: struct client
      - name: '*event'
        type: struct event
      - name: '*global_event'
        type: struct event
      - name: pool
        type: pool_t
      - name: '*tag'
        type: char
      - name: '*name'
        type: char
      - name: '*args'
        type: char
      - name: '*human_args'
        type: char
      - name: cmd_flags
        type: enum command_flags
      - name: '*tagline_reply'
        type: char
      - name: '*func'
        type: command_func_t
      - name: '*context'
        type: void
      - name: '*parser'
        type: struct imap_parser
      - name: state
        type: enum client_command_state
      - name: stats
        type: struct client_command_stats
      - name: stats_start
        type: struct client_command_stats_start
      - name: '*sync'
        type: struct imap_client_sync_context
      - name: uid
        type: bool
      - name: cancel
        type: bool
      - name: param_error
        type: bool
      - name: search_save_result
        type: bool
      - name: search_save_result_used
        type: bool
      - name: temp_executed
        type: bool
      - name: tagline_sent
        type: bool
      - name: executing
        type: bool
      - name: internal
        type: bool
      - name: utf8
        type: bool
      item_type: struct
      name: client_command_context
      pos:
        line_end: 130
        line_start: 83
        source_file: /src/dovecot/src/imap/imap-client.h
    - fields:
      - name: (*init)(struct client *client)
        type: void
      - name: (*destroy)(struct client *client, const char *reason)
        type: void
      - name: "(*send_tagline)(struct client_command_context *cmd,\n\t\t\t     const
          char *data)"
        type: void
      - name: (*sync_notify_more)(struct imap_sync_context *ctx)
        type: int
      - name: "(*state_export)(struct client *client, bool internal,\n\t\t\t    buffer_t
          *dest, const char **error_r)"
        type: int
      - name: "(*state_import)(struct client *client,\n\t\t\t\t\t       bool internal,\n\t\t\t\t\t
          \      const unsigned char *data,\n\t\t\t\t\t       size_t size,\n\t\t\t\t\t
          \      size_t *skip_r,\n\t\t\t\t\t       const char **error_r)"
        type: enum imap_state_result
      item_type: struct
      name: imap_client_vfuncs
      pos:
        line_end: 163
        line_start: 132
        source_file: /src/dovecot/src/imap/imap-client.h
    - fields:
      - name: '*prev'
        type: struct client
      - name: v
        type: struct imap_client_vfuncs
      - name: '*event'
        type: struct event
      - name: '*const *userdb_fields'
        type: char
      - name: fd_in
        type: int
      - name: '*io'
        type: struct io
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      - name: '*multiplex_output'
        type: struct ostream
      - name: '*to_idle'
        type: struct timeout
      - name: anvil_conn_guid
        type: guid_128_t
      - name: pool
        type: pool_t
      - name: '*set'
        type: struct imap_settings
      - name: '*smtp_set'
        type: struct smtp_submit_settings
      - name: '*capability_string'
        type: string_t
      - name: '*init_error'
        type: char
      - name: '*disconnect_reason'
        type: char
      - name: '*user'
        type: struct mail_user
      - name: '*mailbox'
        type: struct mailbox
      - name: keywords
        type: struct mailbox_keywords
      - name: sync_counter
        type: unsigned int
      - name: messages_count
        type: uint32_t
      - name: prev_output_size
        type: uoff_t
      - name: enabled_features
        type: ARRAY
      - name: last_input
        type: time_t
      - name: bad_counter
        type: unsigned int
      - name: '*free_parser'
        type: struct imap_parser
      - name: command_pool
        type: pool_t
      - name: '*command_queue'
        type: struct client_command_context
      - name: command_queue_size
        type: unsigned int
      - name: '*last_cmd_name'
        type: char
      - name: last_cmd_stats
        type: struct client_command_stats
      - name: sync_last_full_modseq
        type: uint64_t
      - name: highest_fetch_modseq
        type: uint64_t
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: logout_stats
        type: struct imap_logout_stats
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: '*notify_ctx'
        type: struct imap_notify_context
      - name: notify_uidnext
        type: uint32_t
      - name: '*compress_handler'
        type: struct compression_handler
      - name: '*input_lock'
        type: struct client_command_context
      - name: '*output_cmd_lock'
        type: struct client_command_context
      - name: '*mailbox_change_lock'
        type: struct client_command_context
      - name: '*urlauth_ctx'
        type: struct imap_urlauth_context
      - name: sync_seen_deletes
        type: bool
      - name: logged_out
        type: bool
      - name: disconnected
        type: bool
      - name: hibernated
        type: bool
      - name: unhibernated
        type: bool
      - name: destroyed
        type: bool
      - name: handling_input
        type: bool
      - name: syncing
        type: bool
      - name: id_logged
        type: bool
      - name: mailbox_examined
        type: bool
      - name: anvil_sent
        type: bool
      - name: tls_compression
        type: bool
      - name: input_skip_line
        type: bool
      - name: modseqs_sent_since_sync
        type: bool
      - name: notify_immediate_expunges
        type: bool
      - name: notify_count_changes
        type: bool
      - name: notify_flag_changes
        type: bool
      - name: nonpermanent_modseqs
        type: bool
      - name: state_import_bad_idle_done
        type: bool
      - name: state_import_idle_continue
        type: bool
      item_type: struct
      name: client
      pos:
        line_end: 260
        line_start: 165
        source_file: /src/dovecot/src/imap/imap-client.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: imap_module_register
      pos:
        line_end: 264
        line_start: 262
        source_file: /src/dovecot/src/imap/imap-client.h
    typedefs: []
    union:
    - fields:
      - name: super
        type: struct imap_client_vfuncs
      - name: '*reg'
        type: struct imap_module_register
      item_type: union
      name: imap_module_context
      pos:
        line_end: 269
        line_start: 266
        source_file: /src/dovecot/src/imap/imap-client.h
- function_names:
  - cmd_noop
  source_file: /src/dovecot/src/imap/cmd-noop.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_search_update_cancel
  - cmd_cancelupdate
  source_file: /src/dovecot/src/imap/cmd-cancelupdate.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_enable
  source_file: /src/dovecot/src/imap/cmd-enable.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_notify_list
  - imap_notify_status
  - imap_notify_next
  - imap_notify_match_event
  - imap_notify_match_mailbox
  - imap_notify_match
  - imap_client_notify_ns
  - imap_client_notify_selected
  - imap_client_notify_more
  - imap_client_notify_newmails
  - imap_client_notify_finished
  - notify_callback
  - imap_events_to_notify
  - imap_notify_callback
  - imap_notify_watch_selected_mailbox
  - imap_notify_watch_timeout
  - imap_client_notify_command_freed
  - imap_client_notify_command_allocated
  - imap_notify_begin
  - imap_notify_deinit
  - imap_notify_flush
  source_file: /src/dovecot/src/imap/imap-notify.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_NOTIFY_WATCH_ADD_DELAY_MSECS
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/imap/imap-notify.c
      type_or_value: '1000'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-list.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*mutf7_name'
        type: char
      - name: mbox_flags
        type: enum mailbox_info_flags
      - name: list_flags
        type: enum mailbox_list_iter_flags
      - name: '*ns'
        type: struct mail_namespace
      item_type: struct
      name: imap_list_return_flag_params
      pos:
        line_end: 12
        line_start: 5
        source_file: /src/dovecot/src/imap/imap-list.h
    - fields:
      - name: '*identifier'
        type: char
      - name: "(*parse)(struct client_command_context *cmd,\n\t\t     const struct
          imap_arg *args, void **context_r)"
        type: int
      - name: "(*send)(struct client_command_context *cmd, void *context,\n\t\t     const
          struct imap_list_return_flag_params *params)"
        type: void
      item_type: struct
      name: imap_list_return_flag
      pos:
        line_end: 21
        line_start: 14
        source_file: /src/dovecot/src/imap/imap-list.h
    typedefs: []
    union: []
- function_names:
  - IS_STANDALONE
  - imap_client_created_hook_set
  - imap_refresh_proctitle_callback
  - imap_refresh_proctitle_delayed
  - imap_refresh_proctitle
  - client_kill_idle
  - imap_die
  - client_parse_imap_login_request
  - client_send_login_reply
  - client_add_input_finalize
  - client_create_from_input
  - main_stdio_run
  - login_request_finished
  - login_request_failed
  - master_admin_cmd_kick_user
  - client_connected
  - main
  source_file: /src/dovecot/src/imap/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_DIE_IDLE_SECS
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dovecot/src/imap/main.c
      type_or_value: '10'
    - item_type: preproc_def
      name: IMAP_PROCTITLE_PREFERRED_LEN
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/dovecot/src/imap/main.c
      type_or_value: '80'
    - item_type: preproc_def
      name: MSG_BYE_INTERNAL_ERROR
      pos:
        line_end: 344
        line_start: 343
        source_file: /src/dovecot/src/imap/main.c
      type_or_value: '"* BYE "MAIL_ERRSTR_CRITICAL_MSG"\r\n"'
    structs:
    - fields:
      - name: '*tag'
        type: char
      - name: '*input'
        type: unsigned char
      - name: input_size
        type: size_t
      - name: send_untagged_capability
        type: bool
      item_type: struct
      name: imap_login_request
      pos:
        line_end: 165
        line_start: 159
        source_file: /src/dovecot/src/imap/main.c
    typedefs: []
    union: []
- function_names:
  - cmd_logout
  source_file: /src/dovecot/src/imap/cmd-logout.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - namespace_order_cmp
  - list_namespaces
  - cmd_namespace
  source_file: /src/dovecot/src/imap/cmd-namespace.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: secondary_order
        type: int
      - name: '*ns'
        type: struct mail_namespace
      item_type: struct
      name: namespace_order
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/imap/cmd-namespace.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-expunge.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_search
  source_file: /src/dovecot/src/imap/cmd-search.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-sync-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: counter
        type: unsigned int
      - name: flags
        type: enum mailbox_sync_flags
      - name: imap_flags
        type: enum imap_sync_flags
      - name: '*tagline'
        type: char
      item_type: struct
      name: imap_client_sync_context
      pos:
        line_end: 12
        line_start: 5
        source_file: /src/dovecot/src/imap/imap-sync-private.h
    - fields:
      - name: '*client'
        type: struct client
      - name: '*box'
        type: struct mailbox
      - name: imap_flags
        type: enum imap_sync_flags
      - name: '*t'
        type: struct mailbox_transaction_context
      - name: '*sync_ctx'
        type: struct mailbox_sync_context
      - name: '*mail'
        type: struct mail
      - name: status
        type: struct mailbox_status
      - name: sync_status
        type: struct mailbox_sync_status
      - name: sync_rec
        type: struct mailbox_sync_rec
      - name: (keywords)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: seq
        type: uint32_t
      - name: search_adds
        type: ARRAY_TYPE
      - name: search_update_idx
        type: unsigned int
      - name: messages_count
        type: unsigned int
      - name: failed
        type: bool
      - name: finished
        type: bool
      - name: no_newmail
        type: bool
      - name: have_new_mails
        type: bool
      - name: search_update_notifying
        type: bool
      - name: utf8
        type: bool
      item_type: struct
      name: imap_sync_context
      pos:
        line_end: 45
        line_start: 14
        source_file: /src/dovecot/src/imap/imap-sync-private.h
    typedefs: []
    union: []
- function_names:
  - client_idle_timeout
  - client_init_urlauth
  - imap_unset_capability
  - client_create
  - client_create_finish_io
  - client_create_finish
  - client_add_istream_prefix
  - client_default_init
  - client_command_cancel
  - client_stats
  - client_destroy
  - client_command_stats_append
  - client_get_last_command_status
  - client_get_commands_status
  - client_log_disconnect
  - client_default_destroy
  - client_destroy_timeout
  - client_disconnect
  - client_disconnect_with_error
  - client_add_capability
  - client_send_line
  - client_send_line_next
  - client_cmd_append_timing_stats
  - client_send_tagline
  - client_default_send_tagline
  - client_default_sync_notify_more
  - client_send_command_error
  - client_send_internal_error
  - client_read_args
  - client_read_string_args
  - client_args_finished
  - client_command_find_with_flags
  - client_command_is_ambiguous
  - client_command_alloc
  - client_command_init_finished
  - client_command_new
  - client_add_missing_io
  - client_command_free
  - client_check_command_hangs
  - client_remove_pending_unambiguity
  - client_continue_pending_input
  - client_skip_line
  - client_idle_output_timeout
  - client_handle_unfinished_cmd
  - client_command_failed_early
  - client_command_input
  - client_handle_next_command
  - client_handle_input
  - client_input
  - client_output_cmd
  - client_output_commands
  - client_output
  - client_handle_search_save_ambiguity
  - client_enable
  - client_has_enabled
  - imap_client_enable_condstore
  - imap_client_enable_qresync
  - imap_client_enable_utf8accept
  - imap_client_enable_imap4rev2
  - client_enabled_mailbox_features
  - client_enabled_features
  - client_search_update_lookup
  - client_search_updates_free
  - clients_init
  - client_kick
  - clients_destroy_all
  source_file: /src/dovecot/src/imap/imap-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_CLIENT_DISCONNECT_LOG_STATS_CMD_MIN_RUNNING_MSECS
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/imap/imap-client.c
      type_or_value: '1000'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-settings.h
  types:
    enum:
    - enumerators:
      - name: WORKAROUND_DELAY_NEWMAIL
        value: '0x01'
      - name: WORKAROUND_TB_EXTRA_MAILBOX_SEP
        value: '0x08'
      - name: WORKAROUND_TB_LSUB_FLAGS
        value: '0x10'
      item_type: enum
      name: imap_client_workarounds
      pos:
        line_end: 12
        line_start: 8
        source_file: /src/dovecot/src/imap/imap-settings.h
    - enumerators:
      - name: IMAP_CLIENT_FETCH_FAILURE_DISCONNECT_IMMEDIATELY
      - name: IMAP_CLIENT_FETCH_FAILURE_DISCONNECT_AFTER
      - name: IMAP_CLIENT_FETCH_FAILURE_NO_AFTER
      item_type: enum
      name: imap_client_fetch_failure
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/dovecot/src/imap/imap-settings.h
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: verbose_proctitle
        type: bool
      - name: mailbox_list_index
        type: bool
      - name: '*rawlog_dir'
        type: char
      - name: imap_max_line_length
        type: uoff_t
      - name: imap_idle_notify_interval
        type: unsigned int
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*imap_logout_format'
        type: char
      - name: '*imap_fetch_failure'
        type: char
      - name: imap_metadata
        type: bool
      - name: imap_literal_minus
        type: bool
      - name: imap_compress_on_proxy
        type: bool
      - name: imap4rev2_enable
        type: bool
      - name: mail_utf8_extensions
        type: bool
      - name: imap_hibernate_timeout
        type: unsigned int
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*imap_urlauth_host'
        type: char
      - name: imap_urlauth_port
        type: in_port_t
      - name: parsed_workarounds
        type: enum imap_client_workarounds
      - name: parsed_fetch_failure
        type: enum imap_client_fetch_failure
      item_type: struct
      name: imap_settings
      pos:
        line_end: 48
        line_start: 21
        source_file: /src/dovecot/src/imap/imap-settings.h
    typedefs: []
    union: []
- function_names:
  - cmd_examine
  source_file: /src/dovecot/src/imap/cmd-examine.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-search-args.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - notify_status
  - notify_ok
  - notify_no
  - notify_bad
  - find_cmd_tag
  - imap_notify_progress
  - notify_progress
  - notify_mailbox_implicit_rename_line
  - notify_mailbox_implicit_rename
  source_file: /src/dovecot/src/imap/imap-storage-callbacks.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fetch_read_error
  - get_body_name
  - get_prefix
  - fetch_stream_continue
  - get_body_human_name
  - fetch_state_update_stats
  - fetch_body_msgpart
  - fetch_binary_size
  - read_uoff_t
  - body_header_fields_parse
  - body_parse_partial
  - imap_fetch_body_section_init
  - imap_fetch_binary_init
  - fetch_rfc822_size
  - fetch_and_free_msgpart
  - fetch_rfc822
  - fetch_rfc822_header
  - fetch_rfc822_text
  - imap_fetch_rfc822_init
  - fetch_snippet
  - fetch_preview_init
  - imap_fetch_preview_init
  - imap_fetch_snippet_init
  source_file: /src/dovecot/src/imap/imap-fetch-body.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*section'
        type: char
      - name: '*msgpart'
        type: struct imap_msgpart
      - name: partial
        type: bool
      - name: binary
        type: bool
      - name: binary_size
        type: bool
      item_type: struct
      name: imap_fetch_body_data
      pos:
        line_end: 26
        line_start: 19
        source_file: /src/dovecot/src/imap/imap-fetch-body.c
    - fields:
      - name: lazy
        type: bool
      - name: old_standard
        type: bool
      - name: preview_cmd
        type: bool
      item_type: struct
      name: imap_fetch_preview_data
      pos:
        line_end: 37
        line_start: 28
        source_file: /src/dovecot/src/imap/imap-fetch-body.c
    typedefs: []
    union: []
- function_names:
  - cmd_rename
  source_file: /src/dovecot/src/imap/cmd-rename.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_skip_line
  - client_update_imap_parser_streams
  - cmd_compress
  source_file: /src/dovecot/src/imap/cmd-compress.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_create
  source_file: /src/dovecot/src/imap/cmd-create.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_status_parse_items
  - imap_status_get_result
  - imap_status_get
  - imap_status_send
  source_file: /src/dovecot/src/imap/imap-status.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_partial_range_parse
  - search_parse_fetch_att
  - search_parse_return_options
  - imap_search_args_check
  - imap_search_result_save
  - imap_search_send_result_standard
  - imap_search_send_partial
  - imap_search_send_relevancy
  - imap_search_send_result
  - search_update_mail
  - search_add_result_id
  - cmd_search_more
  - cmd_search_more_callback
  - cmd_search_parse_return_if_found
  - imap_search_start
  - imap_search_deinit
  - imap_search_context_free
  - imap_search_update_free
  source_file: /src/dovecot/src/imap/imap-search.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - idle_finish
  - idle_client_handle_input
  - idle_client_input_more
  - idle_client_input
  - keepalive_timeout
  - idle_sync_now
  - idle_callback
  - idle_add_keepalive_timeout
  - idle_hibernate_timeout
  - idle_add_hibernate_timeout
  - cmd_idle_continue
  - cmd_idle
  source_file: /src/dovecot/src/imap/cmd-idle.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*client'
        type: struct client
      - name: '*cmd'
        type: struct client_command_context
      - name: '*sync_ctx'
        type: struct imap_sync_context
      - name: '*keepalive_to'
        type: struct timeout
      - name: manual_cork
        type: bool
      - name: sync_pending
        type: bool
      item_type: struct
      name: cmd_idle_context
      pos:
        line_end: 20
        line_start: 11
        source_file: /src/dovecot/src/imap/cmd-idle.c
    typedefs: []
    union: []
- function_names:
  - cmd_getmetadata_parse_options
  - imap_metadata_parse_entry_names
  - metadata_add_entry
  - cmd_getmetadata_send_nil_reply
  - cmd_getmetadata_handle_error_str
  - cmd_getmetadata_handle_error
  - cmd_getmetadata_send_entry
  - cmd_getmetadata_stream_continue
  - cmd_getmetadata_send_entry_tree
  - cmd_getmetadata_iter_deinit
  - cmd_getmetadata_deinit
  - cmd_getmetadata_continue
  - cmd_getmetadata_start
  - cmd_getmetadata_server
  - cmd_getmetadata_try_mailbox
  - cmd_getmetadata_mailbox
  - cmd_getmetadata_mailbox_iter_next
  - cmd_getmetadata
  source_file: /src/dovecot/src/imap/cmd-getmetadata.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*cmd'
        type: struct client_command_context
      - name: '*box'
        type: struct mailbox
      - name: '*trans'
        type: struct imap_metadata_transaction
      - name: '*list_iter'
        type: struct mailbox_list_iterate_context
      - name: (const_string)
        type: ARRAY_TYPE
      - name: maxsize
        type: uint32_t
      - name: largest_seen_size
        type: uoff_t
      - name: depth
        type: unsigned int
      - name: '*cur_stream'
        type: struct istream
      - name: '*iter'
        type: struct imap_metadata_iter
      - name: '*iter_entry_prefix'
        type: string_t
      - name: '*delayed_errors'
        type: string_t
      - name: '*last_error_str'
        type: string_t
      - name: last_error
        type: enum mail_error
      - name: entry_idx
        type: unsigned int
      - name: first_entry_sent
        type: bool
      - name: iterating_boxes
        type: bool
      item_type: struct
      name: imap_getmetadata_context
      pos:
        line_end: 37
        line_start: 13
        source_file: /src/dovecot/src/imap/cmd-getmetadata.c
    typedefs: []
    union: []
- function_names:
  - cmd_notify_parse_event
  - cmd_notify_parse_fetch
  - cmd_notify_parse_event_list
  - cmd_notify_set_selected
  - imap_notify_namespace_get
  - imap_notify_mailboxes_get
  - cmd_notify_add_mailbox
  - cmd_notify_add_personal
  - imap_notify_refresh_subscriptions
  - cmd_notify_add_subscribed
  - cmd_notify_add_mailbox_namespaces
  - cmd_notify_add_mailboxes
  - cmd_notify_set
  - imap_notify_box_list_noperm
  - imap_notify_box_send_status
  - imap_notify_ns_want_status
  - imap_notify_ns_send_status
  - cmd_notify_send_status
  - cmd_notify
  source_file: /src/dovecot/src/imap/cmd-notify.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_NOTIFY_MAX_NAMES_PER_NS
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/imap/cmd-notify.c
      type_or_value: '100'
    - item_type: preproc_def
      name: EV_NEW_OR_EXPUNGE
      pos:
        line_end: 60
        line_start: 58
        source_file: /src/dovecot/src/imap/cmd-notify.c
      type_or_value: (IMAP_NOTIFY_EVENT_MESSAGE_NEW | IMAP_NOTIFY_EVENT_MESSAGE_EXPUNGE)
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_modify_type
  - store_parse_modifiers
  - store_parse_args
  - cmd_store
  source_file: /src/dovecot/src/imap/cmd-store.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*cmd'
        type: struct client_command_context
      - name: max_modseq
        type: uint64_t
      - name: flags
        type: enum mail_flags
      - name: '*keywords'
        type: struct mail_keywords
      - name: modify_type
        type: enum modify_type
      - name: silent
        type: bool
      item_type: struct
      name: imap_store_context
      pos:
        line_end: 19
        line_start: 10
        source_file: /src/dovecot/src/imap/cmd-store.c
    typedefs: []
    union: []
- function_names:
  - mailbox_flags2str
  - mailbox_childinfo2str
  - parse_select_flags
  - parse_return_flags
  - ns_prefix_mutf7
  - list_reply_append_ns_sep_param
  - list_send_status
  - list_has_options
  - list_send_options
  - cmd_list_continue
  - list_get_ref_patterns
  - cmd_list_init
  - cmd_list_ref_root
  - cmd_list_full
  - cmd_list
  source_file: /src/dovecot/src/imap/cmd-list.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*flag'
        type: struct imap_list_return_flag
      - name: '*context'
        type: void
      item_type: struct
      name: cmd_list_return_flag
      pos:
        line_end: 17
        line_start: 13
        source_file: /src/dovecot/src/imap/cmd-list.c
    - fields:
      - name: '*cmd'
        type: struct client_command_context
      - name: '*user'
        type: struct mail_user
      - name: list_flags
        type: enum mailbox_list_iter_flags
      - name: status_items
        type: struct imap_status_items
      - name: '*list_iter'
        type: struct mailbox_list_iterate_context
      - name: lsub
        type: bool
      - name: lsub_no_unsubscribed
        type: bool
      - name: used_listext
        type: bool
      - name: used_status
        type: bool
      item_type: struct
      name: cmd_list_context
      pos:
        line_end: 33
        line_start: 19
        source_file: /src/dovecot/src/imap/cmd-list.c
    typedefs: []
    union: []
- function_names:
  - imap_fetch_add_handler
  source_file: /src/dovecot/src/imap/imap-fetch.h
  types:
    enum:
    - enumerators:
      - name: IMAP_FETCH_HANDLER_FLAG_BUFFERED
        value: '0x01'
      - name: IMAP_FETCH_HANDLER_FLAG_WANT_DEINIT
        value: '0x02'
      item_type: enum
      name: imap_fetch_handler_flags
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/imap/imap-fetch.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*fetch_ctx'
        type: struct imap_fetch_context
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*args'
        type: struct imap_arg
      - name: '*error'
        type: char
      item_type: struct
      name: imap_fetch_init_context
      pos:
        line_end: 23
        line_start: 15
        source_file: /src/dovecot/src/imap/imap-fetch.h
    - fields:
      - name: '*name'
        type: char
      - name: (*init)(struct imap_fetch_init_context *ctx)
        type: bool
      item_type: struct
      name: imap_fetch_handler
      pos:
        line_end: 30
        line_start: 25
        source_file: /src/dovecot/src/imap/imap-fetch.h
    - fields:
      - name: '*handler'
        type: imap_fetch_handler_t
      - name: '*context'
        type: void
      - name: '*name'
        type: char
      - name: '*nil_reply'
        type: char
      - name: buffered
        type: bool
      - name: want_deinit
        type: bool
      item_type: struct
      name: imap_fetch_context_handler
      pos:
        line_end: 41
        line_start: 32
        source_file: /src/dovecot/src/imap/imap-fetch.h
    - fields:
      - name: '*qresync_sample_seqset'
        type: ARRAY_TYPE
      - name: '*qresync_sample_uidset'
        type: ARRAY_TYPE
      item_type: struct
      name: imap_fetch_qresync_args
      pos:
        line_end: 46
        line_start: 43
        source_file: /src/dovecot/src/imap/imap-fetch.h
    - fields:
      - name: '*trans'
        type: struct mailbox_transaction_context
      - name: '*search_ctx'
        type: struct mail_search_context
      - name: '*cur_mail'
        type: struct mail
      - name: cur_handler
        type: unsigned int
      - name: '*cur_human_name'
        type: char
      - name: cur_size
        type: uoff_t
      - name: cur_size_field
        type: enum mail_fetch_field
      - name: '*cur_str'
        type: string_t
      - name: cur_str_prefix_size
        type: size_t
      - name: '*cur_input'
        type: struct istream
      - name: skip_cr
        type: bool
      - name: (*cont_handler)(struct imap_fetch_context *ctx)
        type: int
      - name: '*cur_stats_sizep'
        type: uint64_t
      - name: fetching
        type: bool
      - name: seen_flags_changed
        type: bool
      - name: cur_first
        type: bool
      - name: line_partial
        type: bool
      - name: skipped_expunged_msgs
        type: bool
      - name: failed
        type: bool
      item_type: struct
      name: imap_fetch_state
      pos:
        line_end: 75
        line_start: 48
        source_file: /src/dovecot/src/imap/imap-fetch.h
    - fields:
      - name: '*client'
        type: struct client
      - name: ctx_pool
        type: pool_t
      - name: '*reason'
        type: char
      - name: fetch_data
        type: enum mail_fetch_field
      - name: (const_string)
        type: ARRAY_TYPE
      - name: buffered_handlers_count
        type: unsigned int
      - name: (keywords)
        type: ARRAY_TYPE
      - name: state
        type: struct imap_fetch_state
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: fetched_mails_count
        type: unsigned int
      - name: error
        type: enum mail_error
      - name: '*errstr'
        type: char
      - name: initialized
        type: bool
      - name: failures
        type: bool
      - name: flags_have_handler
        type: bool
      - name: flags_update_seen
        type: bool
      - name: flags_show_only_seen_changes
        type: bool
      - name: fetch_header_fields
        type: bool
      - name: utf8
        type: bool
      item_type: struct
      name: imap_fetch_context
      pos:
        line_end: 105
        line_start: 77
        source_file: /src/dovecot/src/imap/imap-fetch.h
    typedefs:
    - item_type: typedef
      name: "imap_fetch_handler_t(struct imap_fetch_context *ctx,\n\t\t\t\t struct
        mail *mail, void *context)"
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/imap/imap-fetch.h
      type: int
    union: []
- function_names:
  - cmd_unselect
  source_file: /src/dovecot/src/imap/cmd-unselect.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_setmetadata_deinit
  - cmd_setmetadata_parse_entryvalue
  - cmd_setmetadata_entry_read_stream
  - cmd_setmetadata_entry
  - cmd_setmetadata_continue
  - cmd_setmetadata_start
  - cmd_setmetadata_server
  - cmd_setmetadata_mailbox
  - cmd_setmetadata
  source_file: /src/dovecot/src/imap/cmd-setmetadata.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: METADATA_MAX_INMEM_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/imap/cmd-setmetadata.c
      type_or_value: (1024*128)
    structs:
    - fields:
      - name: '*cmd'
        type: struct client_command_context
      - name: '*parser'
        type: struct imap_parser
      - name: '*box'
        type: struct mailbox
      - name: '*trans'
        type: struct imap_metadata_transaction
      - name: '*entry_name'
        type: char
      - name: entry_value_len
        type: uoff_t
      - name: '*input'
        type: struct istream
      - name: failed
        type: bool
      - name: cmd_error_sent
        type: bool
      - name: storage_failure
        type: bool
      item_type: struct
      name: imap_setmetadata_context
      pos:
        line_end: 26
        line_start: 13
        source_file: /src/dovecot/src/imap/cmd-setmetadata.c
    typedefs: []
    union: []
- function_names:
  - cmd_expunge_finish
  - cmd_uid_expunge
  - cmd_expunge
  source_file: /src/dovecot/src/imap/cmd-expunge.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_disconnect_reason
  - client_input_append
  - cmd_append_finish
  - cmd_append_send_literal_continue
  - cmd_append_catenate_mpurl
  - cmd_append_catenate_url
  - cmd_append_catenate_text
  - cmd_append_catenate_arg_text
  - cmd_append_catenate
  - cmd_append_finish_catenate
  - catenate_args_can_stop
  - cmd_append_handle_parse_error
  - cmd_append_finish_list
  - cmd_append_continue_catenate
  - cmd_append_start_catenate
  - cmd_append_start_utf8
  - cmd_append_handle_args
  - cmd_append_finish_parsing
  - cmd_append_args_can_stop
  - cmd_append_parse_new_msg
  - cmd_append_continue_message
  - cmd_append_full
  - cmd_append
  - cmd_replace
  source_file: /src/dovecot/src/imap/cmd-append.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INTERNALDATE_MAX_FUTURE_SECS
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/imap/cmd-append.c
      type_or_value: (2*3600)
    structs:
    - fields:
      - name: '*client'
        type: struct client
      - name: '*cmd'
        type: struct client_command_context
      - name: '*box'
        type: struct mailbox
      - name: '*t'
        type: struct mailbox_transaction_context
      - name: started
        type: time_t
      - name: '*rep_trans'
        type: struct mailbox_transaction_context
      - name: '*rep_mail'
        type: struct mail
      - name: '*catchain'
        type: struct istream_chain
      - name: cat_msg_size
        type: uoff_t
      - name: '*input'
        type: struct istream
      - name: '*litinput'
        type: struct istream
      - name: literal_size
        type: uoff_t
      - name: '*save_parser'
        type: struct imap_parser
      - name: '*save_ctx'
        type: struct mail_save_context
      - name: count
        type: unsigned int
      - name: replace
        type: bool
      - name: message_input
        type: bool
      - name: binary_input
        type: bool
      - name: utf8_input
        type: bool
      - name: catenate
        type: bool
      - name: cmd_args_set
        type: bool
      - name: failed
        type: bool
      - name: utf8_accept
        type: bool
      item_type: struct
      name: cmd_append_context
      pos:
        line_end: 56
        line_start: 27
        source_file: /src/dovecot/src/imap/cmd-append.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-commands-util.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*str'
        type: string_t
      - name: first_uid
        type: uint32_t
      item_type: struct
      name: msgset_generator_context
      pos:
        line_end: 6
        line_start: 3
        source_file: /src/dovecot/src/imap/imap-commands-util.h
    typedefs: []
    union: []
- function_names:
  - cmd_urlfetch_finish
  - cmd_urlfetch_cancel
  - cmd_urlfetch_transfer_literal
  - cmd_urlfetch_continue
  - cmd_urlfetch_url_success
  - cmd_urlfetch_url_callback
  - cmd_urlfetch_parse_arg
  - cmd_urlfetch
  source_file: /src/dovecot/src/imap/cmd-urlfetch.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ufetch'
        type: struct imap_urlauth_fetch
      - name: '*input'
        type: struct istream
      - name: failed
        type: bool
      - name: finished
        type: bool
      - name: extended
        type: bool
      - name: in_io_handler
        type: bool
      item_type: struct
      name: cmd_urlfetch_context
      pos:
        line_end: 25
        line_start: 17
        source_file: /src/dovecot/src/imap/cmd-urlfetch.c
    - fields:
      - name: '*url'
        type: char
      - name: flags
        type: enum imap_urlauth_fetch_flags
      item_type: struct
      name: cmd_urlfetch_url
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/dovecot/src/imap/cmd-urlfetch.c
    typedefs: []
    union: []
- function_names:
  - command_register
  - command_unregister
  - command_register_array
  - command_unregister_array
  - command_hook_register
  - command_hook_unregister
  - command_stats_start
  - command_stats_flush
  - command_exec
  - command_cmp
  - command_bsearch
  - command_find
  - commands_init
  - commands_deinit
  source_file: /src/dovecot/src/imap/imap-commands.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP4REV1_COMMANDS_COUNT
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dovecot/src/imap/imap-commands.c
      type_or_value: N_ELEMENTS(imap4rev1_commands)
    - item_type: preproc_def
      name: IMAP_EXT_COMMANDS_COUNT
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/dovecot/src/imap/imap-commands.c
      type_or_value: N_ELEMENTS(imap_ext_commands)
    structs:
    - fields:
      - name: '*pre'
        type: command_hook_callback_t
      - name: '*post'
        type: command_hook_callback_t
      item_type: struct
      name: command_hook
      pos:
        line_end: 15
        line_start: 12
        source_file: /src/dovecot/src/imap/imap-commands.c
    typedefs: []
    union: []
- function_names:
  - imap_expunge_get_seqset
  - imap_expunge
  source_file: /src/dovecot/src/imap/imap-expunge.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_check
  source_file: /src/dovecot/src/imap/cmd-check.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_find_namespace_full
  - client_find_namespace
  - client_verify_open_mailbox
  - imap_client_close_mailbox
  - client_open_save_dest_box
  - imap_client_command_get_reason
  - imap_get_error_string
  - client_send_error
  - client_send_list_error
  - client_disconnect_if_inconsistent
  - client_send_box_error
  - client_send_storage_error
  - client_send_untagged_storage_error
  - client_parse_mail_flags
  - client_send_mailbox_flags
  - client_update_mailbox_flags
  - client_get_keyword_names
  - array_foreach_elem
  - msgset_generator_init
  - msgset_generator_next
  - msgset_generator_finish
  source_file: /src/dovecot/src/imap/imap-commands-util.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_progress_line
  source_file: /src/dovecot/src/imap/imap-progress.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - select_qresync_get_uids
  - select_parse_qresync_known_set
  - select_parse_qresync
  - select_parse_options
  - select_context_free
  - cmd_select_finish
  - cmd_select_continue
  - select_qresync
  - select_open
  - close_selected_mailbox
  - cmd_select_full
  - cmd_select
  source_file: /src/dovecot/src/imap/cmd-select.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*cmd'
        type: struct client_command_context
      - name: '*ns'
        type: struct mail_namespace
      - name: '*box'
        type: struct mailbox
      - name: '*fetch_ctx'
        type: struct imap_fetch_context
      - name: qresync_uid_validity
        type: uint32_t
      - name: qresync_modseq
        type: uint64_t
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (uint32_t)
        type: ARRAY_TYPE
      - name: (uint32_t)
        type: ARRAY_TYPE
      - name: condstore
        type: bool
      item_type: struct
      name: imap_select_context
      pos:
        line_end: 27
        line_start: 13
        source_file: /src/dovecot/src/imap/cmd-select.c
    typedefs: []
    union: []
- function_names:
  - imap_fetch_cmd_init_handler
  - fetch_parse_args
  - fetch_parse_modifier
  - fetch_parse_modifiers
  - cmd_fetch_finished
  - imap_fetch_is_failed_retry
  - imap_fetch_add_failed_uids
  - cmd_fetch_finish
  - cmd_fetch_continue
  - cmd_fetch_set_reason_codes
  - cmd_fetch
  source_file: /src/dovecot/src/imap/cmd-fetch.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_hibernate_handshake
  - imap_hibernate_write_cmd
  - imap_hibernate_process_send_cmd
  - imap_hibernate_process_read
  - imap_hibernate_process_send
  - imap_client_hibernate
  source_file: /src/dovecot/src/imap/imap-client-hibernate.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_HIBERNATE_SOCKET_NAME
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/imap/imap-client-hibernate.c
      type_or_value: '"imap-hibernate"'
    - item_type: preproc_def
      name: IMAP_HIBERNATE_SEND_TIMEOUT_SECS
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/imap/imap-client-hibernate.c
      type_or_value: '10'
    - item_type: preproc_def
      name: IMAP_HIBERNATE_HANDSHAKE
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/imap/imap-client-hibernate.c
      type_or_value: '"VERSION\timap-hibernate\t1\t0\n"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - imap_settings_parse_workarounds
  - imap_settings_verify
  source_file: /src/dovecot/src/imap/imap-settings.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: num
        type: enum imap_client_workarounds
      item_type: struct
      name: imap_client_workaround_list
      pos:
        line_end: 203
        line_start: 200
        source_file: /src/dovecot/src/imap/imap-settings.c
    typedefs: []
    union: []
- function_names:
  - search_args_have_searchres
  - imap_search_saved_uidset_clear
  - imap_search_args_build
  - imap_search_get_msgset_arg
  - imap_search_get_uidset_arg
  - imap_search_get_seqset
  - imap_search_anyset_to_uidset
  - imap_search_get_searchres
  - imap_search_get_anyset
  - imap_search_add_changed_since
  source_file: /src/dovecot/src/imap/imap-search-args.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*box'
        type: struct mailbox
      - name: '*error'
        type: char
      item_type: struct
      name: search_build_data
      pos:
        line_end: 15
        line_start: 11
        source_file: /src/dovecot/src/imap/imap-search-args.c
    typedefs: []
    union: []
- function_names:
  - export_seq_range
  - import_seq_range
  - imap_state_export_internal
  - imap_state_import
  - imap_state_import_internal
  - imap_state_import_external
  - imap_state_export_mailbox_mails
  - mailbox_status_keywords_crc32
  - imap_state_export_mailbox
  - imap_state_export_base
  - import_string
  - import_send_expunges
  - import_send_flag_changes
  - import_state_mailbox_struct
  - import_state_mailbox_open
  - import_state_mailbox
  - import_state_compress
  - import_state_enabled_feature
  - import_state_searchres
  - import_state_id_logged
  - import_state_tls_compression
  - imap_state_import_idle_cmd_tag
  - imap_state_try_import_public
  - imap_state_try_import_internal
  - imap_state_import_base
  source_file: /src/dovecot/src/imap/imap-state.c
  types:
    enum:
    - enumerators:
      - name: IMAP_STATE_TYPE_MAILBOX
        value: '''B'''
      - name: IMAP_STATE_TYPE_COMPRESS
        value: '''C'''
      - name: IMAP_STATE_TYPE_SEARCHRES
        value: '''1'''
      - name: IMAP_STATE_TYPE_ENABLED_FEATURE
        value: '''F'''
      item_type: enum
      name: imap_state_type_public
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/dovecot/src/imap/imap-state.c
    - enumerators:
      - name: IMAP_STATE_TYPE_ID_LOGGED
        value: '''I'''
      - name: IMAP_STATE_TYPE_TLS_COMPRESSION
        value: '''C'''
      item_type: enum
      name: imap_state_type_internal
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/dovecot/src/imap/imap-state.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*vname'
        type: char
      - name: mailbox_guid
        type: guid_128_t
      - name: examined
        type: bool
      - name: keywords_count
        type: uint32_t
      - name: uidvalidity
        type: uint32_t
      - name: highest_modseq
        type: uint64_t
      - name: (seq_range)
        type: ARRAY_TYPE
      item_type: struct
      name: mailbox_import_state
      pos:
        line_end: 40
        line_start: 32
        source_file: /src/dovecot/src/imap/imap-state.c
    - fields:
      - name: type
        type: enum imap_state_type_public
      - name: "(*import)(struct client *client, const unsigned char *data,\n\t\t\t
          \ size_t size, const char **error_r)"
        type: ssize_t
      item_type: struct
      name: "imap_states_public[] = {\n\t{ IMAP_STATE_TYPE_MAILBOX, import_state_mailbox
        },\n\t{ IMAP_STATE_TYPE_COMPRESS, import_state_compress },\n\t{ IMAP_STATE_TYPE_ENABLED_FEATURE,
        import_state_enabled_feature },\n\t{ IMAP_STATE_TYPE_SEARCHRES, import_state_searchres
        }\n}"
      pos:
        line_end: 837
        line_start: 833
        source_file: /src/dovecot/src/imap/imap-state.c
    - fields:
      - name: type
        type: enum imap_state_type_internal
      - name: "(*import)(struct client *client, const unsigned char *data,\n\t\t\t
          \ size_t size, const char **error_r)"
        type: ssize_t
      item_type: struct
      name: "imap_states_internal[] = {\n\t{ IMAP_STATE_TYPE_ID_LOGGED, import_state_id_logged
        },\n\t{ IMAP_STATE_TYPE_TLS_COMPRESSION, import_state_tls_compression }\n}"
      pos:
        line_end: 848
        line_start: 844
        source_file: /src/dovecot/src/imap/imap-state.c
    typedefs: []
    union: []
- function_names:
  - uids_to_seqs
  - array_foreach
  - search_update_fetch_more
  - imap_sync_send_fetch_to_search_update
  - imap_sync_send_search_update
  - imap_sync_send_search_updates
  - imap_sync_init
  - imap_sync_send_highestmodseq
  - imap_sync_finish
  - imap_sync_notify_more
  - imap_sync_deinit
  - imap_sync_add_modseq
  - imap_sync_send_flags
  - imap_sync_send_modseq
  - imap_sync_vanished
  - imap_sync_send_expunges
  - imap_sync_more
  - imap_sync_is_allowed
  - cmd_finish_sync
  - cmd_sync_continue
  - get_common_sync_flags
  - cmd_sync_client
  - cmd_sync
  - cmd_sync_drop_fast
  - cmd_sync_delayed_real
  - cmd_sync_delayed
  source_file: /src/dovecot/src/imap/imap-sync.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-sync.h
  types:
    enum:
    - enumerators:
      - name: IMAP_SYNC_FLAG_SEND_UID
        value: '0x01'
      - name: IMAP_SYNC_FLAG_SAFE
        value: '0x02'
      item_type: enum
      name: imap_sync_flags
      pos:
        line_end: 6
        line_start: 3
        source_file: /src/dovecot/src/imap/imap-sync.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_send_sendalive_if_needed
  - copy_update_trashed
  - client_is_disconnected
  - fetch_and_copy
  - cmd_move_send_untagged
  - cmd_copy_full
  - cmd_copy
  - cmd_move
  source_file: /src/dovecot/src/imap/cmd-copy.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: COPY_CHECK_INTERVAL
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/imap/cmd-copy.c
      type_or_value: '100'
    - item_type: preproc_def
      name: MOVE_COMMIT_INTERVAL
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/imap/cmd-copy.c
      type_or_value: '1000'
    structs:
    - fields:
      - name: '*cmd'
        type: struct client_command_context
      - name: '*srcbox'
        type: struct mailbox
      - name: '*destbox'
        type: struct mailbox
      - name: move
        type: bool
      - name: copy_count
        type: unsigned int
      - name: copy_goal
        type: unsigned int
      - name: copy_start
        type: struct timeval
      - name: uid_validity
        type: uint32_t
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: hide_saved_uids
        type: bool
      - name: '*error_string'
        type: char
      - name: mail_error
        type: enum mail_error
      item_type: struct
      name: cmd_copy_context
      pos:
        line_end: 37
        line_start: 20
        source_file: /src/dovecot/src/imap/cmd-copy.c
    typedefs: []
    union: []
- function_names:
  - cmd_delete
  source_file: /src/dovecot/src/imap/cmd-delete.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-commands.h
  types:
    enum:
    - enumerators:
      - name: COMMAND_FLAG_USES_SEQS
        value: '0x01'
      - name: COMMAND_FLAG_BREAKS_SEQS
        value: '0x02'
      - name: COMMAND_FLAG_REQUIRES_SYNC
        value: '0x08'
      - name: COMMAND_FLAG_USES_MAILBOX
        value: "COMMAND_FLAG_BREAKS_MAILBOX |\n\t\t\t\t\t  COMMAND_FLAG_USES_SEQS"
      - name: COMMAND_FLAG_BREAKS_MAILBOX
        value: 0x04 | COMMAND_FLAG_BREAKS_SEQS
      item_type: enum
      name: command_flags
      pos:
        line_end: 28
        line_start: 14
        source_file: /src/dovecot/src/imap/imap-commands.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*func'
        type: command_func_t
      - name: flags
        type: enum command_flags
      item_type: struct
      name: command
      pos:
        line_end: 35
        line_start: 30
        source_file: /src/dovecot/src/imap/imap-commands.h
    typedefs:
    - item_type: typedef
      name: command_func_t(struct client_command_context *cmd)
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/dovecot/src/imap/imap-commands.h
      type: bool
    - item_type: typedef
      name: command_hook_callback_t(struct client_command_context *ctx)
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/dovecot/src/imap/imap-commands.h
      type: void
    union: []
- function_names:
  - subscribe_is_valid_name
  - str_ends_with_char
  - cmd_subscribe_full
  - cmd_subscribe
  source_file: /src/dovecot/src/imap/cmd-subscribe.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-feature.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*feature'
        type: char
      - name: mailbox_features
        type: enum mailbox_feature
      - name: '*callback'
        type: imap_client_enable_callback_t
      - name: enabled
        type: bool
      item_type: struct
      name: imap_feature
      pos:
        line_end: 11
        line_start: 6
        source_file: /src/dovecot/src/imap/imap-feature.h
    typedefs:
    - item_type: typedef
      name: imap_client_enable_callback_t(struct client *)
      pos:
        line_end: 4
        line_start: 4
        source_file: /src/dovecot/src/imap/imap-feature.h
      type: bool
    union: []
- function_names:
  - test_imap_storage_callback_line
  - main
  source_file: /src/dovecot/src/imap/test-imap-progress.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: non_0
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/imap/test-imap-progress.c
      type_or_value: '1'
    - item_type: preproc_def
      name: t_non_0
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/imap/test-imap-progress.c
      type_or_value: '{ .tv_sec = non_0 }'
    - item_type: preproc_def
      name: t_zero
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/imap/test-imap-progress.c
      type_or_value: '{ .tv_sec = 0 }'
    - item_type: preproc_def
      name: t_10sec
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/imap/test-imap-progress.c
      type_or_value: '{ .tv_sec = 10 }'
    - item_type: preproc_def
      name: t_42sec
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/imap/test-imap-progress.c
      type_or_value: '{ .tv_sec = 42 }'
    structs:
    - fields:
      - name: dtl
        type: struct mail_storage_progress_details
      - name: '*tag'
        type: char
      - name: '*expect'
        type: char
      item_type: struct
      name: test_vector
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/dovecot/src/imap/test-imap-progress.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-search.h
  types:
    enum:
    - enumerators:
      - name: SEARCH_RETURN_ESEARCH
        value: '0x0001'
      - name: SEARCH_RETURN_MIN
        value: '0x0002'
      - name: SEARCH_RETURN_ALL
        value: '0x0008'
      - name: SEARCH_RETURN_COUNT
        value: '0x0010'
      - name: SEARCH_RETURN_MAX
        value: '0x0004'
      - name: SEARCH_RETURN_MODSEQ
        value: '0x0020'
      - name: SEARCH_RETURN_SAVE
        value: '0x0040'
      - name: SEARCH_RETURN_UPDATE
        value: '0x0080'
      - name: SEARCH_RETURN_PARTIAL
        value: '0x0100'
      - name: SEARCH_RETURN_RELEVANCY
        value: "0x0200\n/* Options that don't return any seq/uid results, and also
          don't affect\n   SEARCHRES $ when combined with MIN/MAX. */\n#define SEARCH_RETURN_NORESULTS
          \\\n\t(SEARCH_RETURN_ESEARCH | SEARCH_RETURN_MODSEQ | SEARCH_RETURN_SAVE
          | \\\n\t SEARCH_RETURN_UPDATE | SEARCH_RETURN_RELEVANCY)"
      item_type: enum
      name: search_return_options
      pos:
        line_end: 21
        line_start: 5
        source_file: /src/dovecot/src/imap/imap-search.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*cmd'
        type: struct client_command_context
      - name: '*box'
        type: struct mailbox
      - name: '*trans'
        type: struct mailbox_transaction_context
      - name: '*search_ctx'
        type: struct mail_search_context
      - name: fetch_pool
        type: pool_t
      - name: '*fetch_ctx'
        type: struct imap_fetch_context
      - name: '*sargs'
        type: struct mail_search_args
      - name: return_options
        type: enum search_return_options
      - name: partial1
        type: uint32_t
      - name: '*to'
        type: struct timeout
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: result_count
        type: unsigned int
      - name: min_id
        type: uint32_t
      - name: relevancy_scores
        type: ARRAY
      - name: min_relevancy
        type: float
      - name: highest_seen_modseq
        type: uint64_t
      - name: have_seqsets
        type: bool
      - name: have_modseqs
        type: bool
      - name: sorting
        type: bool
      item_type: struct
      name: imap_search_context
      pos:
        line_end: 49
        line_start: 23
        source_file: /src/dovecot/src/imap/imap-search.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-storage-callbacks.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap/imap-notify.h
  types:
    enum:
    - enumerators:
      - name: IMAP_NOTIFY_TYPE_SUBSCRIBED
      - name: IMAP_NOTIFY_TYPE_SUBTREE
      - name: IMAP_NOTIFY_TYPE_MAILBOX
      item_type: enum
      name: imap_notify_type
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/imap/imap-notify.h
    - enumerators:
      - name: IMAP_NOTIFY_EVENT_MESSAGE_NEW
        value: '0x01'
      - name: IMAP_NOTIFY_EVENT_MAILBOX_NAME
        value: '0x10'
      - name: IMAP_NOTIFY_EVENT_FLAG_CHANGE
        value: '0x04'
      - name: IMAP_NOTIFY_EVENT_ANNOTATION_CHANGE
        value: '0x08'
      - name: IMAP_NOTIFY_EVENT_MESSAGE_EXPUNGE
        value: '0x02'
      - name: IMAP_NOTIFY_EVENT_SUBSCRIPTION_CHANGE
        value: '0x20'
      - name: IMAP_NOTIFY_EVENT_MAILBOX_METADATA_CHANGE
        value: '0x40'
      - name: IMAP_NOTIFY_EVENT_SERVER_METADATA_CHANGE
        value: '0x80'
      - name: IMAP_NOTIFY_EVENT_COUNT
        value: '8'
      item_type: enum
      name: imap_notify_event
      pos:
        line_end: 20
        line_start: 9
        source_file: /src/dovecot/src/imap/imap-notify.h
    preproc_defs:
    - item_type: preproc_def
      name: UNSUPPORTED_EVENTS
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/dovecot/src/imap/imap-notify.h
      type_or_value: "(IMAP_NOTIFY_EVENT_ANNOTATION_CHANGE | \\\n\t IMAP_NOTIFY_EVENT_MAILBOX_METADATA_CHANGE
        | \\\n\t IMAP_NOTIFY_EVENT_SERVER_METADATA_CHANGE)"
    structs:
    - fields:
      - name: events
        type: enum imap_notify_event
      - name: type
        type: enum imap_notify_type
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: imap_notify_mailboxes
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/dovecot/src/imap/imap-notify.h
    - fields:
      - name: '*ctx'
        type: struct imap_notify_context
      - name: '*ns'
        type: struct mail_namespace
      - name: '*notify'
        type: struct mailbox_list_notify
      item_type: struct
      name: imap_notify_namespace
      pos:
        line_end: 38
        line_start: 32
        source_file: /src/dovecot/src/imap/imap-notify.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*client'
        type: struct client
      - name: '*error'
        type: char
      - name: selected_events
        type: enum imap_notify_event
      - name: global_used_events
        type: enum imap_notify_event
      - name: global_max_mailbox_names
        type: unsigned int
      - name: '*fetch_ctx'
        type: struct imap_fetch_context
      - name: '*to_watch'
        type: struct timeout
      - name: have_subscriptions
        type: bool
      - name: selected_set
        type: bool
      - name: selected_immediate_expunges
        type: bool
      - name: send_immediate_status
        type: bool
      - name: watching_mailbox
        type: bool
      - name: notifying
        type: bool
      - name: utf8
        type: bool
      item_type: struct
      name: imap_notify_context
      pos:
        line_end: 60
        line_start: 40
        source_file: /src/dovecot/src/imap/imap-notify.h
    typedefs: []
    union: []
- function_names:
  - cmd_genurlauth
  source_file: /src/dovecot/src/imap/cmd-genurlauth.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_resetkey_all
  - cmd_resetkey_mailbox
  - cmd_resetkey
  source_file: /src/dovecot/src/imap/cmd-resetkey.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_thread_write
  - imap_thread_write_reply
  - imap_thread
  - orderedsubject_thread_cmp
  - imap_orderedsubject_thread_write
  - imap_thread_orderedsubject
  - cmd_thread
  source_file: /src/dovecot/src/imap/cmd-thread.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: timestamp
        type: time_t
      - name: (uint32_t)
        type: ARRAY_TYPE
      item_type: struct
      name: orderedsubject_thread
      pos:
        line_end: 106
        line_start: 103
        source_file: /src/dovecot/src/imap/cmd-thread.c
    typedefs: []
    union: []
- function_names:
  - cmd_id_log_params
  - cmd_id
  source_file: /src/dovecot/src/imap/cmd-id.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - stats_event_category_register
  - stats_event_categories_init
  - stats_event_categories_deinit
  source_file: /src/dovecot/src/stats/stats-event-category.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - append_str_max_len
  - append_strlist
  - append_int
  - append_time
  - append_ip
  - append_field_value
  - json_export_name
  - json_export_hostname
  - json_export_timestamps
  - json_export_categories
  - json_export_fields
  - event_export_fmt_json
  source_file: /src/dovecot/src/stats/event-exporter-fmt-json.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/test-stats-common.h
  types:
    enum:
    - enumerators:
      - name: STATS_DIST_COUNT
      - name: STATS_DIST_SUM
      item_type: enum
      name: stats_dist_field
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/dovecot/src/stats/test-stats-common.h
    preproc_defs:
    - item_type: preproc_def
      name: TEST_STATS_COMMON
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/stats/test-stats-common.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_stats_callback
  - test_stats_metrics
  - test_stats_metrics_filter
  - test_stats_metrics_group_by_check_one
  - test_stats_metrics_group_by_discrete_real
  - test_stats_metrics_group_by_discrete
  - test_stats_metrics_group_by_quantized_real
  - test_stats_metrics_group_by_quantized
  - main
  source_file: /src/dovecot/src/stats/test-stats-metrics.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DISCRETE_TEST_VAL_COUNT
      pos:
        line_end: 133
        line_start: 132
        source_file: /src/dovecot/src/stats/test-stats-metrics.c
      type_or_value: '3'
    - item_type: preproc_def
      name: QUANTIZED_TEST_VAL_COUNT
      pos:
        line_end: 264
        line_start: 263
        source_file: /src/dovecot/src/stats/test-stats-metrics.c
      type_or_value: '30'
    structs:
    - fields:
      - name: '*const *settings_blob'
        type: char
      - name: num_values
        type: unsigned int
      - name: '*values_first[DISCRETE_TEST_VAL_COUNT]'
        type: char
      - name: '*values_second[DISCRETE_TEST_VAL_COUNT]'
        type: char
      item_type: struct
      name: discrete_test
      pos:
        line_end: 138
        line_start: 133
        source_file: /src/dovecot/src/stats/test-stats-metrics.c
    - fields:
      - name: '*const *settings_blob'
        type: char
      - name: num_inputs
        type: unsigned int
      - name: input_vals[QUANTIZED_TEST_VAL_COUNT]
        type: intmax_t
      - name: num_sub_metrics
        type: unsigned int
      - name: num_ranges
        type: unsigned int
      - name: ranges[QUANTIZED_TEST_VAL_COUNT]
        type: "struct {\n\t\tstruct stats_metric_settings_bucket_range range;\n\t\tintmax_t
          count;\n\t}"
      item_type: struct
      name: quantized_test
      pos:
        line_end: 276
        line_start: 264
        source_file: /src/dovecot/src/stats/test-stats-metrics.c
    typedefs: []
    union: []
- function_names:
  - read_settings
  - test_stats_init
  - test_stats_deinit
  - test_event_send
  - get_stats_dist_field
  source_file: /src/dovecot/src/stats/test-stats-common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/client-writer.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_connected
  - stats_die
  - main_preinit
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/stats/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/stats-service.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - event_export_helper_fmt_unix_time
  - event_export_helper_fmt_rfc3339_time
  - event_export_helper_fmt_categories
  source_file: /src/dovecot/src/stats/event-exporter-fmt.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - event_exporter_transport_find
  - event_exporters_reopen
  - event_exporters_deinit
  - event_exporter_init
  source_file: /src/dovecot/src/stats/event-exporter.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/stats-settings.h
  types:
    enum:
    - enumerators:
      - name: EVENT_EXPORTER_TIME_FMT_NATIVE
        value: '0'
      - name: EVENT_EXPORTER_TIME_FMT_UNIX
      - name: EVENT_EXPORTER_TIME_FMT_RFC3339
      item_type: enum
      name: event_exporter_time_fmt
      pos:
        line_end: 61
        line_start: 57
        source_file: /src/dovecot/src/stats/stats-settings.h
    - enumerators:
      - name: STATS_METRIC_GROUPBY_DISCRETE
        value: '0'
      - name: STATS_METRIC_GROUPBY_QUANTIZED
      item_type: enum
      name: stats_metric_group_by_func
      pos:
        line_end: 102
        line_start: 99
        source_file: /src/dovecot/src/stats/stats-settings.h
    preproc_defs:
    - item_type: preproc_def
      name: STATS_METRIC_SETTINGS_DEFAULT_EXPORTER_INCLUDE
      pos:
        line_end: 5
        line_start: 3
        source_file: /src/dovecot/src/stats/stats-settings.h
      type_or_value: '"name hostname timestamps categories fields"'
    - item_type: preproc_def
      name: STATS_SERVER_FILTER
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/stats/stats-settings.h
      type_or_value: '"stats_server"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*driver'
        type: char
      - name: '*format'
        type: char
      - name: '*time_format'
        type: char
      - name: parsed_time_format
        type: enum event_exporter_time_fmt
      item_type: struct
      name: stats_exporter_settings
      pos:
        line_end: 74
        line_start: 64
        source_file: /src/dovecot/src/stats/stats-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*field'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: stats_metric_group_by_settings
      pos:
        line_end: 80
        line_start: 76
        source_file: /src/dovecot/src/stats/stats-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*method'
        type: char
      - name: '*discrete_modifier'
        type: char
      - name: exponential_min_magnitude
        type: unsigned int
      - name: exponential_max_magnitude
        type: unsigned int
      - name: exponential_base
        type: unsigned int
      - name: linear_min
        type: uintmax_t
      - name: linear_max
        type: uintmax_t
      - name: linear_step
        type: uintmax_t
      item_type: struct
      name: stats_metric_group_by_method_settings
      pos:
        line_end: 96
        line_start: 82
        source_file: /src/dovecot/src/stats/stats-settings.h
    - fields:
      - name: min
        type: intmax_t
      - name: max
        type: intmax_t
      item_type: struct
      name: stats_metric_settings_bucket_range
      pos:
        line_end: 113
        line_start: 110
        source_file: /src/dovecot/src/stats/stats-settings.h
    - fields:
      - name: '*field'
        type: char
      - name: func
        type: enum stats_metric_group_by_func
      - name: '*discrete_modifier'
        type: char
      - name: num_ranges
        type: unsigned int
      - name: '*ranges'
        type: struct stats_metric_settings_bucket_range
      item_type: struct
      name: stats_metric_settings_group_by
      pos:
        line_end: 121
        line_start: 115
        source_file: /src/dovecot/src/stats/stats-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*description'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*filter'
        type: char
      - name: '*parsed_filter'
        type: struct event_filter
      - name: '*exporter'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: stats_metric_settings
      pos:
        line_end: 140
        line_start: 126
        source_file: /src/dovecot/src/stats/stats-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: stats_settings
      pos:
        line_end: 147
        line_start: 142
        source_file: /src/dovecot/src/stats/stats-settings.h
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - DEF
  - DEF
  - DEF
  - stats_exporter_settings_check
  - metrics_group_by_exponential_init
  - metrics_group_by_linear_init
  - parse_metric_group_by_common
  - parse_metric_group_by_exp
  - parse_metric_group_by_lin
  - parse_metric_group_by_mod
  - parse_legacy_metric_group_by
  - stats_metric_settings_check
  - stats_settings_ext_check
  source_file: /src/dovecot/src/stats/stats-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - stats_http_server_handle_request
  - client_http_create
  - stats_http_client_destroy
  - stats_http_server_connection_destroy
  - stats_http_resource_callback
  - stats_http_resource_add
  - stats_http_resource_root_make_response
  - stats_http_resource_root_request
  - client_http_init
  - client_http_deinit
  source_file: /src/dovecot/src/stats/client-http.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*http_conn'
        type: struct http_server_connection
      item_type: struct
      name: stats_http_client
      pos:
        line_end: 20
        line_start: 18
        source_file: /src/dovecot/src/stats/client-http.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*title'
        type: char
      - name: '*resource'
        type: struct http_server_resource
      - name: '*callback'
        type: stats_http_resource_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: stats_http_resource
      pos:
        line_end: 29
        line_start: 22
        source_file: /src/dovecot/src/stats/client-http.c
    typedefs: []
    union: []
- function_names:
  - test_reader_server_destroy
  - test_stats_callback
  - test_reader_server_input_args
  - test_dump_metrics
  - test_client_reader
  - test_reader_server_input_args_group_by
  - test_dump_metrics_group_by
  - test_client_reader_group_by
  - main
  source_file: /src/dovecot/src/stats/test-client-reader.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: row_count
        type: unsigned int
      item_type: struct
      name: test_connection
      pos:
        line_end: 14
        line_start: 10
        source_file: /src/dovecot/src/stats/test-client-reader.c
    typedefs: []
    union: []
- function_names:
  - stats_exporters_add_set
  - stats_exporters_add_filter
  - stats_metric_alloc
  - stats_metrics_exporter_find
  - stats_metrics_add_set
  - stats_metrics_group_by_exponential_check
  - stats_metrics_group_by_linear_check
  - stats_metrics_get_group_by_method
  - stats_metrics_get_group_by
  - stats_metrics_add_filter
  - stats_metrics_find
  - stats_metrics_check_for_exporter
  - stats_metrics_add_dynamic
  - stats_metrics_remove_dynamic
  - stats_metrics_add_from_settings
  - stats_metrics_init
  - stats_metric_free
  - stats_metrics_deinit
  - stats_metric_reset
  - stats_metrics_reset
  - stats_metrics_get_event_filter
  - stats_metric_find_sub_metric
  - stats_metric_sub_metric_alloc
  - label_by_mod_str
  - stats_metric_group_by_discrete
  - stats_metric_group_by_quantized
  - stats_metric_group_by_quantized_label
  - stats_metric_group_by_get_value
  - stats_metric_group_by_get_label
  - stats_metric_group_by_value_label
  - stats_metric_get_sub_metric
  - stats_metric_group_by_field
  - stats_event_get_strlist
  - stats_metric_group_by
  - stats_metric_event_field
  - stats_metric_event
  - stats_export_event
  - stats_metrics_event
  - stats_metrics_iterate_init
  - stats_metrics_iterate
  - stats_metrics_iterate_deinit
  source_file: /src/dovecot/src/stats/stats-metrics.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: STATS_SUB_METRIC_MAX_LENGTH
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/stats/stats-metrics.c
      type_or_value: '256'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*event'
        type: struct event
      - name: '*filter'
        type: struct event_filter
      item_type: struct
      name: stats_metrics
      pos:
        line_end: 25
        line_start: 19
        source_file: /src/dovecot/src/stats/stats-metrics.c
    - fields:
      - name: '*metrics'
        type: struct stats_metrics
      - name: idx
        type: unsigned int
      item_type: struct
      name: stats_metrics_iter
      pos:
        line_end: 977
        line_start: 974
        source_file: /src/dovecot/src/stats/stats-metrics.c
    typedefs: []
    union: []
- function_names:
  - test_writer_server_destroy
  - test_writer_server_input_args
  - test_write_one
  - test_stats_callback
  - test_client_writer
  - main
  source_file: /src/dovecot/src/stats/test-client-writer.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/client-reader.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - event_exporter_http_post_init
  - event_exporter_http_post_deinit
  - response_fxn
  - event_exporter_http_post_send
  source_file: /src/dovecot/src/stats/event-exporter-transport-http-post.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: exporter
        type: struct event_exporter
      - name: '*set'
        type: struct event_exporter_http_post_settings
      - name: '*client'
        type: struct http_client
      item_type: struct
      name: http_post_event_exporter
      pos:
        line_end: 17
        line_start: 13
        source_file: /src/dovecot/src/stats/event-exporter-transport-http-post.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*event_exporter_http_post_url'
        type: char
      item_type: struct
      name: event_exporter_http_post_settings
      pos:
        line_end: 23
        line_start: 19
        source_file: /src/dovecot/src/stats/event-exporter-transport-http-post.c
    typedefs: []
    union: []
- function_names:
  - stats_services_init
  - stats_services_deinit
  source_file: /src/dovecot/src/stats/stats-service.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/stats-metrics.h
  types:
    enum:
    - enumerators:
      - name: EVENT_EXPORTER_INCL_NONE
        value: '0'
      - name: EVENT_EXPORTER_INCL_CATEGORIES
        value: '0x08'
      - name: EVENT_EXPORTER_INCL_HOSTNAME
        value: '0x02'
      - name: EVENT_EXPORTER_INCL_TIMESTAMPS
        value: '0x04'
      - name: EVENT_EXPORTER_INCL_NAME
        value: '0x01'
      - name: EVENT_EXPORTER_INCL_FIELDS
        value: '0x10'
      item_type: enum
      name: event_exporter_includes
      pos:
        line_end: 43
        line_start: 36
        source_file: /src/dovecot/src/stats/stats-metrics.h
    - enumerators:
      - name: METRIC_VALUE_TYPE_STR
      - name: METRIC_VALUE_TYPE_INT
      - name: METRIC_VALUE_TYPE_IP
      - name: METRIC_VALUE_TYPE_BUCKET_INDEX
      item_type: enum
      name: metric_value_type
      pos:
        line_end: 56
        line_start: 51
        source_file: /src/dovecot/src/stats/stats-metrics.h
    preproc_defs:
    - item_type: preproc_def
      name: STATS_EVENT_FIELD_NAME_DURATION
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/stats/stats-metrics.h
      type_or_value: '"duration"'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: time_format
        type: enum event_exporter_time_fmt
      - name: format_max_field_len
        type: size_t
      - name: (*format)(const struct metric *, struct event *, buffer_t *)
        type: void
      - name: '*format_mime_type'
        type: char
      - name: '*transport'
        type: struct event_exporter_transport
      item_type: struct
      name: event_exporter
      pos:
        line_end: 31
        line_start: 11
        source_file: /src/dovecot/src/stats/stats-metrics.h
    - fields:
      - name: '*exporter'
        type: struct event_exporter
      - name: include
        type: "enum event_exporter_includes {\n\t\tEVENT_EXPORTER_INCL_NONE       =
          0,\n\t\tEVENT_EXPORTER_INCL_NAME       = 0x01,\n\t\tEVENT_EXPORTER_INCL_HOSTNAME
          \  = 0x02,\n\t\tEVENT_EXPORTER_INCL_TIMESTAMPS = 0x04,\n\t\tEVENT_EXPORTER_INCL_CATEGORIES
          = 0x08,\n\t\tEVENT_EXPORTER_INCL_FIELDS     = 0x10,\n\t}"
      item_type: struct
      name: metric_export_info
      pos:
        line_end: 44
        line_start: 33
        source_file: /src/dovecot/src/stats/stats-metrics.h
    - fields:
      - name: '*field_key'
        type: char
      - name: '*stats'
        type: struct stats_dist
      item_type: struct
      name: metric_field
      pos:
        line_end: 49
        line_start: 46
        source_file: /src/dovecot/src/stats/stats-metrics.h
    - fields:
      - name: type
        type: enum metric_value_type
      - name: hash[SHA1_RESULTLEN]
        type: unsigned char
      - name: intmax
        type: intmax_t
      - name: ip
        type: struct ip_addr
      item_type: struct
      name: metric_value
      pos:
        line_end: 63
        line_start: 58
        source_file: /src/dovecot/src/stats/stats-metrics.h
    - fields:
      - name: '*set'
        type: struct stats_metric_settings
      - name: '*name'
        type: char
      - name: '*sub_name'
        type: char
      - name: sub_name_used_size
        type: size_t
      - name: '*duration_stats'
        type: struct stats_dist
      - name: fields_count
        type: unsigned int
      - name: '*fields'
        type: struct metric_field
      - name: group_by_count
        type: unsigned int
      - name: '*group_by'
        type: struct stats_metric_settings_group_by
      - name: group_value
        type: struct metric_value
      - name: export_info
        type: struct metric_export_info
      item_type: struct
      name: metric
      pos:
        line_end: 98
        line_start: 65
        source_file: /src/dovecot/src/stats/stats-metrics.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/event-exporter.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: "(*init)(pool_t pool, struct event *event,\n\t\t    struct event_exporter
          **exporter_r, const char **error_r)"
        type: int
      - name: (*deinit)(struct event_exporter *exporter)
        type: void
      - name: (*send)(struct event_exporter *exporter, const buffer_t *buf)
        type: void
      - name: (*reopen)(struct event_exporter *exporter)
        type: void
      item_type: struct
      name: event_exporter_transport
      pos:
        line_end: 16
        line_start: 5
        source_file: /src/dovecot/src/stats/event-exporter.h
    typedefs: []
    union: []
- function_names:
  - event_export_fmt_none
  source_file: /src/dovecot/src/stats/event-exporter-fmt-none.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF_MSECS
  - exporter_file_close
  - event_exporter_file_deinit
  - event_exporter_file_init_common
  - event_exporter_file_init
  - event_exporter_unix_init
  - exporter_file_open_error
  - exporter_file_open_unix
  - exporter_file_open_plain
  - exporter_file_open
  - event_exporter_file_write
  - event_exporter_file_send
  - event_exporter_file_reopen
  source_file: /src/dovecot/src/stats/event-exporter-transport-file.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EXPORTER_LAST_ERROR_DELAY
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/stats/event-exporter-transport-file.c
      type_or_value: '60'
    structs:
    - fields:
      - name: exporter
        type: struct event_exporter
      - name: '*fname'
        type: char
      - name: '*output'
        type: struct ostream
      - name: fd
        type: int
      - name: last_error
        type: time_t
      - name: connect_timeout_msecs
        type: unsigned int
      - name: unix_socket
        type: bool
      item_type: struct
      name: file_event_exporter
      pos:
        line_end: 26
        line_start: 17
        source_file: /src/dovecot/src/stats/event-exporter-transport-file.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*event_exporter_file_path'
        type: char
      - name: '*event_exporter_unix_path'
        type: char
      - name: event_exporter_unix_connect_timeout_msecs
        type: unsigned int
      item_type: struct
      name: event_exporter_file_settings
      pos:
        line_end: 36
        line_start: 30
        source_file: /src/dovecot/src/stats/event-exporter-transport-file.c
    typedefs: []
    union: []
- function_names:
  - event_exporter_drop_send
  source_file: /src/dovecot/src/stats/event-exporter-transport-drop.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/stats-event-category.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - event_exporter_log_init
  - event_exporter_log_send
  source_file: /src/dovecot/src/stats/event-exporter-transport-log.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOG_EXPORTER_LONG_FIELD_TRUNCATE_LEN
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/stats/event-exporter-transport-log.c
      type_or_value: '1000'
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_reader_create
  - reader_client_destroy
  - reader_client_dump_stats
  - reader_client_dump_metric
  - reader_client_append_sub_name
  - reader_client_dump_sub_metrics
  - reader_client_input_dump
  - reader_client_input_dump_reset
  - reader_client_input_metrics_add
  - reader_client_input_metrics_remove
  - reader_client_input_args
  - client_readers_init
  - client_readers_deinit
  source_file: /src/dovecot/src/stats/client-reader.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: conn
        type: struct connection
      item_type: struct
      name: reader_client
      pos:
        line_end: 21
        line_start: 19
        source_file: /src/dovecot/src/stats/client-reader.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/stats-service-private.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_writer_send_handshake
  - stats_event_hash
  - stats_event_cmp
  - client_writer_create
  - writer_client_destroy
  - writer_client_find_event
  - writer_client_run_event
  - writer_client_input_event
  - writer_client_input_event_begin
  - writer_client_input_event_update
  - writer_client_input_event_end
  - writer_client_input_category
  - writer_client_input_args
  - client_writer_update_connections_internal
  - client_writer_update_connections
  - client_writers_init
  - client_writers_deinit
  source_file: /src/dovecot/src/stats/client-writer.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: STATS_UPDATE_CLIENTS_DELAY_MSECS
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/stats/client-writer.c
      type_or_value: '1000'
    structs:
    - fields:
      - name: '*prev'
        type: struct stats_event
      - name: id
        type: uint64_t
      - name: '*event'
        type: struct event
      item_type: struct
      name: stats_event
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/dovecot/src/stats/client-writer.c
    - fields:
      - name: conn
        type: struct connection
      - name: '*events'
        type: struct stats_event
      item_type: struct
      name: writer_client
      pos:
        line_end: 32
        line_start: 27
        source_file: /src/dovecot/src/stats/client-writer.c
    typedefs: []
    union: []
- function_names:
  - append_strlist
  - array_foreach_elem
  - append_int
  - append_time
  - append_ip
  - append_field_str
  - append_field_value
  - tabtext_export_name
  - tabtext_export_hostname
  - tabtext_export_timestamps
  - append_category
  - tabtext_export_categories
  - tabtext_export_fields
  - event_export_fmt_tabescaped_text
  source_file: /src/dovecot/src/stats/event-exporter-fmt-tab-text.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - openmetrics_check_name
  - openmetrics_export_dovecot
  - openmetrics_export_eof
  - openmetrics_export_metric_value
  - openmetrics_find_histogram_bucket
  - openmetrics_export_histogram_bucket
  - openmetrics_export_histogram
  - openmetrics_export_metric_header
  - openmetrics_export_submetric
  - openmetrics_export_sub_metric_get
  - openmetrics_export_sub_metric_get_next
  - openmetrics_export_sub_metric_down
  - openmetrics_export_sub_metric_up_next
  - openmetrics_export_sub_metric_current
  - openmetrics_export_sub_metrics
  - openmetrics_export_metric_body
  - openmetrics_send_buffer
  - openmetrics_export_has_histogram
  - openmetrics_export_next
  - openmetrics_export_continue
  - openmetrics_handle_write_error
  - openmetrics_request_deinit
  - openmetrics_export
  - openmetrics_request_destroy
  - stats_service_openmetrics_request
  - stats_service_openmetrics_init
  source_file: /src/dovecot/src/stats/stats-service-openmetrics.c
  types:
    enum:
    - enumerators:
      - name: OPENMETRICS_METRIC_TYPE_COUNT
      - name: OPENMETRICS_METRIC_TYPE_HISTOGRAM
      - name: OPENMETRICS_METRIC_TYPE_FIELD
      - name: OPENMETRICS_METRIC_TYPE_DURATION
      item_type: enum
      name: openmetrics_metric_type
      pos:
        line_end: 32
        line_start: 27
        source_file: /src/dovecot/src/stats/stats-service-openmetrics.c
    - enumerators:
      - name: OPENMETRICS_REQUEST_STATE_INIT
        value: '0'
      - name: OPENMETRICS_REQUEST_STATE_METRIC_HEADER
      - name: OPENMETRICS_REQUEST_STATE_METRIC
      - name: OPENMETRICS_REQUEST_STATE_SUB_METRICS
      - name: OPENMETRICS_REQUEST_STATE_METRIC_BODY
      - name: OPENMETRICS_REQUEST_STATE_FINISHED
      item_type: enum
      name: openmetrics_request_state
      pos:
        line_end: 41
        line_start: 34
        source_file: /src/dovecot/src/stats/stats-service-openmetrics.c
    preproc_defs:
    - item_type: preproc_def
      name: OPENMETRICS_CONTENT_VERSION
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/stats/stats-service-openmetrics.c
      type_or_value: '"0.0.1"'
    - item_type: preproc_def
      name: OPENMETRICS_BUILD_INFO
      pos:
        line_end: 22
        line_start: 19
        source_file: /src/dovecot/src/stats/stats-service-openmetrics.c
      type_or_value: "\"version=\\\"\"DOVECOT_VERSION\"\\\",\" \\\n\t\"revision=\\\"\"DOVECOT_REVISION\"\\\"\""
    - item_type: preproc_def
      name: OPENMETRICS_BUILD_INFO
      pos:
        line_end: 25
        line_start: 23
        source_file: /src/dovecot/src/stats/stats-service-openmetrics.c
      type_or_value: '"version=\""DOVECOT_VERSION"\""'
    structs:
    - fields:
      - name: labels_pos
        type: size_t
      - name: '*metric'
        type: struct metric
      - name: sub_index
        type: unsigned int
      item_type: struct
      name: openmetrics_request_sub_metric
      pos:
        line_end: 47
        line_start: 43
        source_file: /src/dovecot/src/stats/stats-service-openmetrics.c
    - fields:
      - name: '*output'
        type: struct ostream
      - name: state
        type: enum openmetrics_request_state
      - name: '*stats_iter'
        type: struct stats_metrics_iter
      - name: '*metric'
        type: struct metric
      - name: metric_type
        type: enum openmetrics_metric_type
      - name: '*labels'
        type: string_t
      - name: labels_pos
        type: size_t
      - name: field_pos
        type: unsigned int
      - name: has_submetric
        type: bool
      item_type: struct
      name: openmetrics_request
      pos:
        line_end: 62
        line_start: 49
        source_file: /src/dovecot/src/stats/stats-service-openmetrics.c
    typedefs: []
    union: []
- function_names:
  - stats_http_resource_add
  source_file: /src/dovecot/src/stats/client-http.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: "(stats_http_resource_callback_t)(void *context,\n\t\t\t\t struct http_server_request
        *req,\n\t\t\t\t const char *sub_path)"
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/dovecot/src/stats/client-http.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/stats/stats-common.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_tree_read_data
  - json_tree_read_buffer
  - json_tree_read_cstr
  - json_tree_write_buffer
  - json_tree_to_text
  - json_tree_to_text_line
  source_file: /src/dovecot/src/lib-json/json-tree-io.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_type_get_name
  - json_content_type_get_name
  - json_node_get_label
  source_file: /src/dovecot/src/lib-json/json-types.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_unichar_is_uchar
  - json_unichar_is_control
  - json_unichar_is_ws
  - json_unichar_is_digit
  source_file: /src/dovecot/src/lib-json/json-syntax.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_ostream_write_string_buffer
  - json_ostream_nwrite_string_buffer
  source_file: /src/dovecot/src/lib-json/json-ostream.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_json_ostream_write
  - test_json_ostream_nwrite
  - test_json_ostream_write_tree
  - test_json_ostream_nwrite_tree
  - test_json_ostream_nwrite_space
  - main
  source_file: /src/dovecot/src/lib-json/test-json-ostream.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-json/json-text.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_copy_value
  - test_parse_list_open
  - test_parse_list_close
  - test_parse_value
  - test_write
  - test_io_processor_init
  - test_io_processor_deinit
  - test_json_io
  - test_json_async_io_input_callback
  - test_json_async_io_flush_callback
  - test_json_async_io_pump_in_callback
  - test_json_async_io_pump_out_callback
  - test_json_async_io_run
  - test_json_io_async
  - test_json_stream_io
  - test_json_stream_io_input_callback
  - test_json_stream_io_flush_callback
  - test_json_stream_io_pump_in_callback
  - test_json_stream_io_pump_out_callback
  - test_sio_processor_init
  - test_sio_processor_deinit
  - test_json_stream_io_async_run
  - test_json_stream_io_async
  - test_json_text_io
  - test_json_file_io_run
  - test_json_file_compare
  - test_json_file_io
  - main
  source_file: /src/dovecot/src/lib-json/test-json-io.c
  types:
    enum:
    - enumerators:
      - name: TEST_STATE_NONE
        value: '0'
      - name: TEST_STATE_VALUE
      - name: TEST_STATE_OBJECT_OPEN
      - name: TEST_STATE_ARRAY_OPEN
      - name: TEST_STATE_OBJECT_MEMBER
      - name: TEST_STATE_OBJECT_CLOSE
      - name: TEST_STATE_ARRAY_CLOSE
      item_type: enum
      name: test_io_state
      pos:
        line_end: 676
        line_start: 668
        source_file: /src/dovecot/src/lib-json/test-json-io.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: limits
        type: struct json_limits
      - name: flags
        type: enum json_parser_flags
      item_type: struct
      name: json_io_test
      pos:
        line_end: 31
        line_start: 26
        source_file: /src/dovecot/src/lib-json/test-json-io.c
    - fields:
      - name: '*tctx'
        type: struct test_io_context
      - name: '*name'
        type: char
      - name: '*membuf'
        type: string_t
      - name: '*output'
        type: struct ostream
      - name: '*input'
        type: struct istream
      - name: '*io'
        type: struct io
      - name: state
        type: enum test_io_state
      - name: type
        type: enum json_type
      - name: value
        type: struct json_value
      - name: data
        type: struct json_data
      - name: '*generator'
        type: struct json_generator
      - name: '*parser'
        type: struct json_parser
      - name: pos
        type: unsigned int
      item_type: struct
      name: test_io_processor
      pos:
        line_end: 697
        line_start: 678
        source_file: /src/dovecot/src/lib-json/test-json-io.c
    - fields:
      - name: '*test'
        type: struct json_io_test
      - name: scenario
        type: unsigned int
      - name: '*pump_in'
        type: struct iostream_pump
      item_type: struct
      name: test_io_context
      pos:
        line_end: 704
        line_start: 699
        source_file: /src/dovecot/src/lib-json/test-json-io.c
    - fields:
      - name: '*tctx'
        type: struct test_sio_context
      - name: '*name'
        type: char
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      - name: '*io'
        type: struct io
      - name: jnode
        type: struct json_node
      - name: '*jinput'
        type: struct json_istream
      - name: '*joutput'
        type: struct json_ostream
      - name: input_finished
        type: bool
      item_type: struct
      name: test_sio_processor
      pos:
        line_end: 1290
        line_start: 1276
        source_file: /src/dovecot/src/lib-json/test-json-io.c
    - fields:
      - name: '*test'
        type: struct json_io_test
      - name: scenario
        type: unsigned int
      - name: '*pump_in'
        type: struct iostream_pump
      item_type: struct
      name: test_sio_context
      pos:
        line_end: 1297
        line_start: 1292
        source_file: /src/dovecot/src/lib-json/test-json-io.c
    typedefs: []
    union: []
- function_names:
  - test_json_generate_buffer
  - test_json_generate_stream
  - test_json_generate_formatted
  - test_json_append_escaped
  - test_json_append_escaped_data
  - main
  source_file: /src/dovecot/src/lib-json/test-json-generator.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FUZZ_BEGIN_DATA
  source_file: /src/dovecot/src/lib-json/fuzz-json-istream.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_parser_is_busy
  - json_parser_init
  - json_parser_deinit
  - json_parser_error
  - json_parser_interrupt
  - json_parser_callback_init
  - json_parser_callback_deinit
  - json_parser_callback_parse_list_open
  - json_parser_callback_parse_list_close
  - json_parser_callback_parse_object_member
  - json_parser_callback_parse_value
  - json_parser_number_range_error
  - str_float_to_intmax
  - json_parser_callback_number_value
  - json_parser_callback_string_value
  - json_parser_callback_string_stream
  - json_parser_callback_true_value
  - json_parser_callback_false_value
  - json_parser_callback_null_value
  - json_parser_have_data
  - json_parser_set_data
  - json_parser_read
  - json_parser_curchar_str
  - json_parser_readchar
  - json_parser_curchar
  - json_parser_shift
  - json_parser_available_size
  - json_parser_shifted_size
  - json_parser_parsed_size
  - json_parser_call
  - json_parser_run
  - json_parser_reset_buffer
  - json_parser_append_buffer
  - json_parser_skip_ws
  - json_parser_do_parse_literal
  - json_parser_parse_literal
  - json_parser_do_parse_number
  - json_parser_parse_number
  - json_parser_finish_bad_unicode_escape
  - json_parser_parse_unicode_escape
  - json_parser_parse_unicode_escape_close
  - json_parser_do_parse_string
  - json_parser_do_parse_string_value
  - json_parser_parse_string_value
  - json_parser_do_parse_object_member
  - json_parser_parse_object_member
  - json_parser_do_parse_value
  - json_parser_parse_value
  - json_parser_parse_text
  - json_parser_continue
  - json_parse_more
  - json_parser_get_location
  - json_string_istream_read
  - json_string_istream_set_max_buffer_size
  - json_string_istream_close
  - json_string_stream_create
  - json_parser_enable_string_stream
  - json_parser_disable_string_stream
  source_file: /src/dovecot/src/lib-json/json-parser.c
  types:
    enum:
    - enumerators:
      - name: JSON_PARSE_INTERRUPTED
        value: '-7'
      - name: JSON_PARSE_NO_DATA
        value: '-4'
      - name: JSON_PARSE_OVERFLOW
        value: '-5'
      - name: JSON_PARSE_BOUNDARY
        value: '-6'
      - name: JSON_PARSE_CALL_STACK_OVERFLOW
        value: '-3'
      - name: JSON_PARSE_UNEXPECTED_EOF
        value: '-2'
      - name: JSON_PARSE_ERROR
        value: '-1'
      - name: JSON_PARSE_OK
        value: '0'
      item_type: enum
      name: json_parse_result
      pos:
        line_end: 121
        line_start: 103
        source_file: /src/dovecot/src/lib-json/json-parser.c
    preproc_defs:
    - item_type: preproc_def
      name: JSON_PARSER_MAX_CALL_STACK_DEPTH
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/dovecot/src/lib-json/json-parser.c
      type_or_value: '32'
    structs:
    - fields:
      - name: state
        type: unsigned int
      - name: '*context'
        type: void
      - name: '*param'
        type: void
      - name: count
        type: unsigned int
      item_type: struct
      name: json_parser_state
      pos:
        line_end: 132
        line_start: 127
        source_file: /src/dovecot/src/lib-json/json-parser.c
    - fields:
      - name: func
        type: json_parser_func_t
      - name: state
        type: struct json_parser_state
      - name: result
        type: int
      - name: backtracked
        type: bool
      - name: finished
        type: bool
      item_type: struct
      name: json_parser_level
      pos:
        line_end: 141
        line_start: 134
        source_file: /src/dovecot/src/lib-json/json-parser.c
    - fields:
      - name: flags
        type: enum json_parser_flags
      - name: limits
        type: struct json_limits
      - name: '*callbacks'
        type: struct json_parser_callbacks
      - name: '*context'
        type: void
      - name: level_stack_pos
        type: unsigned int
      - name: call_stack_depth
        type: unsigned int
      - name: '*input'
        type: struct istream
      - name: input_offset
        type: uoff_t
      - name: '*begin'
        type: unsigned char
      - name: current_char
        type: unichar_t
      - name: current_char_len
        type: int
      - name: loc
        type: "struct {\n\t\tuoff_t line_number, value_line_number;\n\t\tuoff_t column;\n\t}"
      - name: '*buffer'
        type: string_t
      - name: '*object_member'
        type: string_t
      - name: content_data
        type: struct json_data
      - name: '*str_stream'
        type: struct json_string_istream
      - name: str_stream_threshold
        type: size_t
      - name: str_stream_max_buffer_size
        type: size_t
      - name: '*error'
        type: char
      - name: parsed_nul_char
        type: bool
      - name: parsed_control_char
        type: bool
      - name: parsed_float
        type: bool
      - name: streaming_string
        type: bool
      - name: callback_interrupted
        type: bool
      - name: callback_running
        type: bool
      - name: finished_level
        type: bool
      - name: end_of_input
        type: bool
      - name: started
        type: bool
      - name: have_object_member
        type: bool
      item_type: struct
      name: json_parser
      pos:
        line_end: 189
        line_start: 143
        source_file: /src/dovecot/src/lib-json/json-parser.c
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*parser'
        type: struct json_parser
      - name: buffer_overflowed
        type: bool
      - name: ended
        type: bool
      item_type: struct
      name: json_string_istream
      pos:
        line_end: 2295
        line_start: 2288
        source_file: /src/dovecot/src/lib-json/json-parser.c
    typedefs:
    - item_type: typedef
      name: "(*json_parser_func_t)(struct json_parser *parser,\n\t\t      struct json_parser_state
        *state)"
      pos:
        line_end: 125
        line_start: 123
        source_file: /src/dovecot/src/lib-json/json-parser.c
      type: int
    union: []
- function_names:
  - test_stream_value
  - test_json_tree_walker
  - main
  source_file: /src/dovecot/src/lib-json/test-json-tree.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-json/json-syntax.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_generator_new
  - json_generator_init
  - json_generator_init_str
  - json_generator_deinit
  - json_generator_set_format
  - json_generator_bytes_available
  - json_generator_make_space
  - json_generator_write
  - json_generator_write_all
  - json_generator_write_buffered
  - json_generator_flush_buffer
  - json_generator_flush_format
  - json_generator_write_newline
  - json_generator_write_space
  - json_generator_finish_format
  - json_generator_flush
  - json_generator_value_begin
  - json_generator_value_begin_flushed
  - json_generator_value_end
  - json_generate_number
  - json_generate_number_raw
  - json_generate_string_open
  - json_generate_string_write_data
  - json_generate_string_more
  - json_generate_string_close
  - json_generate_string_write_close
  - json_generate_string_data
  - json_generate_string
  - json_generator_flush_string_input
  - json_generate_string_stream
  - json_generate_literal
  - json_generate_null
  - json_generate_false
  - json_generate_true
  - json_generator_level_open
  - json_generator_level_close
  - json_generate_array_open
  - json_generate_array_close
  - json_generate_object_open
  - json_generate_object_member
  - json_generate_object_close
  - json_generate_text_open
  - json_generate_text_write_data
  - json_generate_text_more
  - json_generate_text_close
  - json_generate_text_data
  - json_generate_text
  - json_generator_flush_text_input
  - json_generate_text_stream
  - json_generate_space_open
  - json_generate_space_close
  - json_generate_value
  - json_string_ostream_finish
  - json_string_ostream_cork
  - json_string_ostream_close
  - json_string_ostream_send
  - json_string_ostream_send_buffer
  - json_string_ostream_sendv
  - json_string_ostream_flush
  - json_string_ostream_destroy
  - json_string_ostream_get_buffer_used_size
  - json_string_ostream_get_buffer_avail_size
  - json_string_ostream_set_max_buffer_size
  - json_generate_string_open_stream
  - json_append_escaped_char
  - json_append_escaped_ucs4
  - json_append_escaped
  - json_append_escaped_data
  source_file: /src/dovecot/src/lib-json/json-generator.c
  types:
    enum:
    - enumerators:
      - name: JSON_GENERATOR_STATE_VALUE
        value: '0'
      - name: JSON_GENERATOR_STATE_VALUE_NEXT
      - name: JSON_GENERATOR_STATE_VALUE_END
      - name: JSON_GENERATOR_STATE_OBJECT_VALUE
      - name: JSON_GENERATOR_STATE_OBJECT_MEMBER
      - name: JSON_GENERATOR_STATE_STRING
      - name: JSON_GENERATOR_STATE_TEXT
      - name: JSON_GENERATOR_STATE_SPACE
      - name: JSON_GENERATOR_STATE_END
      item_type: enum
      name: json_generator_state
      pos:
        line_end: 28
        line_start: 18
        source_file: /src/dovecot/src/lib-json/json-generator.c
    - enumerators:
      - name: JSON_FORMAT_STATE_NONE
        value: '0'
      - name: JSON_FORMAT_STATE_CR
      - name: JSON_FORMAT_STATE_SPACE
      - name: JSON_FORMAT_STATE_INDENT
      - name: JSON_FORMAT_STATE_LF
      - name: JSON_FORMAT_STATE_DONE
      item_type: enum
      name: json_format_state
      pos:
        line_end: 37
        line_start: 30
        source_file: /src/dovecot/src/lib-json/json-generator.c
    preproc_defs:
    - item_type: preproc_def
      name: JSON_STRING_OSTREAM_DEFAULT_BUFFER_SIZE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-json/json-generator.c
      type_or_value: '256'
    structs:
    - fields:
      - name: object
        type: bool
      item_type: struct
      name: json_generator_level
      pos:
        line_end: 41
        line_start: 39
        source_file: /src/dovecot/src/lib-json/json-generator.c
    - fields:
      - name: '*output'
        type: struct ostream
      - name: flags
        type: enum json_generator_flags
      - name: '*buf'
        type: string_t
      - name: buf_pos
        type: size_t
      - name: state
        type: enum json_generator_state
      - name: write_state
        type: enum json_generator_state
      - name: level_stack_pos
        type: unsigned int
      - name: level_stack_written
        type: unsigned int
      - name: format
        type: struct json_format
      - name: '*format_indent'
        type: char
      - name: format_state
        type: enum json_format_state
      - name: indent_pos
        type: unsigned int
      - name: '*str_stream'
        type: struct json_string_ostream
      - name: '*value_input'
        type: struct istream
      - name: object_level_written
        type: bool
      - name: object_level
        type: bool
      - name: string_empty
        type: bool
      - name: string_stream
        type: bool
      - name: string_stream_written
        type: bool
      - name: text_stream
        type: bool
      - name: streaming
        type: bool
      - name: format_finish
        type: bool
      item_type: struct
      name: json_generator
      pos:
        line_end: 91
        line_start: 43
        source_file: /src/dovecot/src/lib-json/json-generator.c
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: '*buf'
        type: buffer_t
      - name: '*generator'
        type: struct json_generator
      item_type: struct
      name: json_string_ostream
      pos:
        line_end: 1338
        line_start: 1332
        source_file: /src/dovecot/src/lib-json/json-generator.c
    typedefs: []
    union: []
- function_names:
  - json_tree_create_pool
  - json_tree_create
  - json_tree_ref
  - json_tree_unref
  - json_tree_is_object
  - json_tree_is_array
  - json_tree_is_string
  - json_tree_is_number
  - json_tree_is_true
  - json_tree_is_false
  - json_tree_is_boolean
  - json_tree_is_null
  - json_tree_node_create_list
  - json_tree_get_root
  - json_tree_get_root_const
  - json_tree_node_create
  - json_tree_node_add
  - json_tree_node_add_object
  - json_tree_node_add_array
  - json_tree_node_add_value
  - json_tree_node_add_string
  - json_tree_node_add_data
  - json_tree_node_add_string_stream
  - json_tree_node_add_number_int
  - json_tree_node_add_number_str
  - json_tree_node_add_false
  - json_tree_node_add_true
  - json_tree_node_add_boolean
  - json_tree_node_add_null
  - json_tree_node_add_text
  - json_tree_node_add_text_data
  - json_tree_node_add_subtree
  - json_tree_node_get_type
  - json_tree_node_get_name
  - json_tree_node_get_tree
  - json_tree_node_get_tree_const
  - json_tree_node_is_root
  - json_tree_node_is_object
  - json_tree_node_is_array
  - json_tree_node_is_string
  - json_tree_node_is_number
  - json_tree_node_is_true
  - json_tree_node_is_false
  - json_tree_node_is_boolean
  - json_tree_node_is_null
  - json_tree_node_get
  - json_tree_node_get_next
  - json_tree_node_get_parent
  - json_tree_node_get_child
  - json_tree_node_get_child_count
  - json_tree_node_get_member
  - json_tree_node_get_child_with
  - json_tree_walker_create_from_node
  - json_tree_walker_create
  - json_tree_walker_free
  - json_tree_walk_next
  - json_tree_walk
  source_file: /src/dovecot/src/lib-json/json-tree.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*head'
        type: struct json_tree_node
      - name: count
        type: unsigned int
      item_type: struct
      name: json_tree_node_list
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/lib-json/json-tree.c
    - fields:
      - name: '*tree'
        type: struct json_tree
      - name: '*parent'
        type: struct json_tree_node
      - name: node
        type: struct json_node
      item_type: struct
      name: json_tree_node
      pos:
        line_end: 19
        line_start: 14
        source_file: /src/dovecot/src/lib-json/json-tree.c
    - fields:
      - name: node
        type: struct json_tree_node
      - name: pool
        type: pool_t
      - name: refcount
        type: int
      - name: (json_tree)
        type: ARRAY_TYPE
      item_type: struct
      name: json_tree
      pos:
        line_end: 29
        line_start: 21
        source_file: /src/dovecot/src/lib-json/json-tree.c
    - fields:
      - name: '*root'
        type: struct json_tree_node
      - name: (json_tree_node_const)
        type: ARRAY_TYPE
      - name: node_level
        type: unsigned int
      - name: node_is_end
        type: bool
      item_type: struct
      name: json_tree_walker
      pos:
        line_end: 621
        line_start: 615
        source_file: /src/dovecot/src/lib-json/json-tree.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-json/json-tree-io.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_tree_node_get_str
  - json_tree_node_get_data
  - json_tree_node_as_str
  - json_tree_node_get_intmax
  - json_tree_node_get_int
  - json_tree_node_get_long
  - json_tree_node_get_llong
  - json_tree_node_get_int32
  - json_tree_node_get_int64
  - json_tree_node_get_uintmax
  - json_tree_node_get_uint
  - json_tree_node_get_ulong
  - json_tree_node_get_ullong
  - json_tree_node_get_uint32
  - json_tree_node_get_uint64
  - json_tree_create_object
  - json_tree_create_array
  source_file: /src/dovecot/src/lib-json/json-tree.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_json_parse_valid
  - test_json_parse_invalid
  - test_parse_stream_parse_value
  - test_json_parse_stream
  - test_parse_stream_parse_error_value
  - test_json_parse_stream_error
  - main
  source_file: /src/dovecot/src/lib-json/test-json-parser.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: limits
        type: struct json_limits
      - name: flags
        type: enum json_parser_flags
      item_type: struct
      name: json_valid_parse_test
      pos:
        line_end: 23
        line_start: 19
        source_file: /src/dovecot/src/lib-json/test-json-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: input_len
        type: size_t
      - name: limits
        type: struct json_limits
      - name: flags
        type: enum json_parser_flags
      - name: base64
        type: bool
      item_type: struct
      name: json_invalid_parse_test
      pos:
        line_end: 852
        line_start: 846
        source_file: /src/dovecot/src/lib-json/test-json-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: limits
        type: struct json_limits
      - name: flags
        type: enum json_parser_flags
      item_type: struct
      name: json_stream_parse_test
      pos:
        line_end: 2400
        line_start: 2396
        source_file: /src/dovecot/src/lib-json/test-json-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: limits
        type: struct json_limits
      - name: flags
        type: enum json_parser_flags
      - name: stream_errno
        type: int
      item_type: struct
      name: json_stream_parse_error_test
      pos:
        line_end: 2634
        line_start: 2629
        source_file: /src/dovecot/src/lib-json/test-json-parser.c
    typedefs: []
    union: []
- function_names:
  - json_istream_create
  - json_istream_ref
  - json_istream_unref
  - json_istream_destroy
  - json_istream_close
  - json_istream_is_closed
  - json_istream_get_node_level
  - json_istream_is_at_end
  - json_istream_failed
  - json_istream_set_error
  - json_istream_get_error
  - json_istream_finish
  - json_istream_get_location
  - json_istream_parse_skip
  - json_istream_parse_list_open
  - json_istream_parse_list_close
  - json_istream_parse_object_member
  - json_istream_parse_value
  - json_istream_dereference_value
  - json_istream_read
  - json_istream_read_next
  - json_istream_next_node
  - json_istream_skip
  - json_istream_ignore
  - json_istream_read_object_member
  - json_istream_descend
  - json_istream_ascend_common
  - json_istream_ascend
  - json_istream_ascend_to
  - json_istream_walk
  - json_istream_drop_seekable_stream
  - json_istream_drop_value_stream
  - json_istream_consumed_value_stream
  - json_istream_consume_value_stream
  - json_istream_handle_stream
  - json_istream_read_stream
  - json_istream_read_next_stream
  - json_istream_walk_stream
  - json_istream_read_tree_common
  - json_istream_read_tree
  - json_istream_read_into_tree_node
  - json_istream_read_into_tree
  source_file: /src/dovecot/src/lib-json/json-istream.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: refcount
        type: int
      - name: '*input'
        type: struct istream
      - name: type
        type: enum json_istream_type
      - name: '*parser'
        type: struct json_parser
      - name: node
        type: struct json_node
      - name: node_level
        type: unsigned int
      - name: read_node_level
        type: unsigned int
      - name: skip_nodes
        type: unsigned int
      - name: '*value_stream'
        type: struct istream
      - name: '*tree'
        type: struct json_tree
      - name: '*tree_node'
        type: struct json_tree_node
      - name: tree_node_level
        type: unsigned int
      - name: '*error'
        type: char
      - name: opened
        type: bool
      - name: closed
        type: bool
      - name: node_parsed
        type: bool
      - name: member_parsed
        type: bool
      - name: read_member
        type: bool
      - name: end_of_list
        type: bool
      - name: end_of_input
        type: bool
      - name: skip_to_end
        type: bool
      - name: deref_value
        type: bool
      item_type: struct
      name: json_istream
      pos:
        line_end: 37
        line_start: 8
        source_file: /src/dovecot/src/lib-json/json-istream.c
    typedefs: []
    union: []
- function_names:
  - json_text_format_data
  - json_text_format_buffer
  - json_text_format_cstr
  source_file: /src/dovecot/src/lib-json/json-text.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - json_value_get_uintmax
  - json_value_get_intmax
  - JSON_VALUE_GET_U__TEMPLATE
  - JSON_VALUE_GET_S__TEMPLATE
  - json_value_get_str
  - json_value_as_str
  - json_value_get_data
  - json_value_get_stream
  - json_node_is_none
  - json_node_is_object
  - json_node_is_array
  - json_node_is_object_end
  - json_node_is_array_end
  - json_node_is_end
  - json_node_is_string
  - json_node_get_str
  - json_node_as_str
  - json_node_get_data
  - json_node_get_stream
  - json_node_is_number
  - json_node_get_intmax
  - json_node_get_int
  - json_node_get_long
  - json_node_get_llong
  - json_node_get_int32
  - json_node_get_int64
  - json_node_get_uintmax
  - json_node_get_uint
  - json_node_get_ulong
  - json_node_get_ullong
  - json_node_get_uint32
  - json_node_get_uint64
  - json_node_is_true
  - json_node_is_false
  - json_node_is_boolean
  - json_node_get_boolean
  - json_node_is_null
  - json_node_is_singular
  source_file: /src/dovecot/src/lib-json/json-types.h
  types:
    enum:
    - enumerators:
      - name: JSON_TYPE_NONE
        value: '0'
      - name: JSON_TYPE_OBJECT
      - name: JSON_TYPE_NUMBER
      - name: JSON_TYPE_STRING
      - name: JSON_TYPE_ARRAY
      - name: JSON_TYPE_TRUE
      - name: JSON_TYPE_FALSE
      - name: JSON_TYPE_NULL
      - name: JSON_TYPE_TEXT
      item_type: enum
      name: json_type
      pos:
        line_end: 37
        line_start: 18
        source_file: /src/dovecot/src/lib-json/json-types.h
    - enumerators:
      - name: JSON_CONTENT_TYPE_NONE
        value: '0'
      - name: JSON_CONTENT_TYPE_DATA
      - name: JSON_CONTENT_TYPE_STRING
      - name: JSON_CONTENT_TYPE_LIST
      - name: JSON_CONTENT_TYPE_STREAM
      - name: JSON_CONTENT_TYPE_INTEGER
      - name: JSON_CONTENT_TYPE_TREE
      item_type: enum
      name: json_content_type
      pos:
        line_end: 55
        line_start: 40
        source_file: /src/dovecot/src/lib-json/json-types.h
    preproc_defs:
    - item_type: preproc_def
      name: JSON_DEFAULT_MAX_NAME_SIZE
      pos:
        line_end: 547
        line_start: 546
        source_file: /src/dovecot/src/lib-json/json-types.h
      type_or_value: '1024'
    - item_type: preproc_def
      name: JSON_DEFAULT_MAX_STRING_SIZE
      pos:
        line_end: 548
        line_start: 547
        source_file: /src/dovecot/src/lib-json/json-types.h
      type_or_value: 32*1024
    - item_type: preproc_def
      name: JSON_DEFAULT_MAX_NESTING
      pos:
        line_end: 549
        line_start: 548
        source_file: /src/dovecot/src/lib-json/json-types.h
      type_or_value: '32'
    - item_type: preproc_def
      name: JSON_DEFAULT_MAX_LIST_ITEMS
      pos:
        line_end: 550
        line_start: 549
        source_file: /src/dovecot/src/lib-json/json-types.h
      type_or_value: '1024'
    structs:
    - fields:
      - name: '*data'
        type: unsigned char
      - name: size
        type: size_t
      - name: contains_nul
        type: bool
      - name: contains_control
        type: bool
      item_type: struct
      name: json_data
      pos:
        line_end: 66
        line_start: 57
        source_file: /src/dovecot/src/lib-json/json-types.h
    - fields:
      - name: content_type
        type: enum json_content_type
      - name: content
        type: "union {\n\t\t/* JSON_CONTENT_TYPE_LIST */\n\t\tstruct json_tree_node_list
          *list; /* only used by trees */\n\t\t/* JSON_CONTENT_TYPE_STRING */\n\t\tconst
          char *str;\n\t\t/* JSON_CONTENT_TYPE_DATA */\n\t\tstruct json_data *data;\n\t\t/*
          JSON_CONTENT_TYPE_STREAM */\n\t\tstruct istream *stream;\n\t\t/* JSON_CONTENT_TYPE_INTEGER
          */\n\t\tintmax_t intnum;\n\t\t/* JSON_CONTENT_TYPE_TREE */\n\t\tstruct json_tree
          *tree;\n\t}"
      item_type: struct
      name: json_value
      pos:
        line_end: 84
        line_start: 68
        source_file: /src/dovecot/src/lib-json/json-types.h
    - fields:
      - name: '*name'
        type: char
      - name: type
        type: enum json_type
      - name: value
        type: struct json_value
      item_type: struct
      name: json_node
      pos:
        line_end: 216
        line_start: 209
        source_file: /src/dovecot/src/lib-json/json-types.h
    - fields:
      - name: max_name_size
        type: size_t
      - name: max_string_size
        type: size_t
      - name: max_nesting
        type: unsigned int
      - name: max_list_items
        type: unsigned int
      item_type: struct
      name: json_limits
      pos:
        line_end: 560
        line_start: 551
        source_file: /src/dovecot/src/lib-json/json-types.h
    - fields:
      - name: indent_chars
        type: unsigned int
      - name: indent_tab
        type: bool
      - name: whitespace
        type: bool
      - name: new_line
        type: bool
      - name: crlf
        type: bool
      item_type: struct
      name: json_format
      pos:
        line_end: 578
        line_start: 566
        source_file: /src/dovecot/src/lib-json/json-types.h
    typedefs: []
    union: []
- function_names:
  - json_ostream_create
  - json_ostream_create_str
  - json_ostream_ref
  - json_ostream_unref
  - json_ostream_destroy
  - json_ostream_get_write_node_level
  - json_ostream_set_error
  - json_ostream_get_error
  - json_ostream_close
  - json_ostream_is_closed
  - json_ostream_set_format
  - json_ostream_cork
  - json_ostream_uncork
  - json_ostream_is_corked
  - json_ostream_nfinish
  - json_ostream_nfinish_destroy
  - json_ostream_ignore_last_errors
  - json_ostream_set_no_error_handling
  - json_ostream_persist_value
  - json_ostream_do_write_more
  - json_ostream_write_more
  - json_ostream_flush
  - json_ostream_nflush
  - json_ostream_write_init
  - json_ostream_write_space_init
  - json_ostream_nwrite_pre
  - json_ostream_nwrite_post
  - json_ostream_write_object_member
  - json_ostream_nwrite_object_member
  - json_ostream_do_write_value
  - json_ostream_write_value
  - json_ostream_nwrite_value
  - json_ostream_write_number
  - json_ostream_nwrite_number
  - json_ostream_write_number_raw
  - json_ostream_nwrite_number_raw
  - json_ostream_write_string_data
  - json_ostream_nwrite_string_data
  - json_ostream_write_string
  - json_ostream_nwrite_string
  - json_ostream_nwritef_string
  - json_ostream_write_string_stream
  - json_ostream_nwrite_string_stream
  - json_ostream_open_string
  - json_ostream_nopen_string
  - json_ostream_close_string
  - json_ostream_nclose_string
  - json_ostream_write_null
  - json_ostream_nwrite_null
  - json_ostream_write_false
  - json_ostream_nwrite_false
  - json_ostream_write_true
  - json_ostream_nwrite_true
  - json_ostream_write_bool
  - json_ostream_nwrite_bool
  - json_ostream_descend_object
  - json_ostream_ndescend_object
  - json_ostream_ascend_object
  - json_ostream_nascend_object
  - json_ostream_descend_array
  - json_ostream_ndescend_array
  - json_ostream_ascend_array
  - json_ostream_nascend_array
  - json_ostream_write_text_data
  - json_ostream_nwrite_text_data
  - json_ostream_write_text
  - json_ostream_nwrite_text
  - json_ostream_write_text_stream
  - json_ostream_nwrite_text_stream
  - json_ostream_write_tree_more
  - json_ostream_write_tree_init
  - json_ostream_write_tree
  - json_ostream_nwrite_tree
  - json_ostream_write_node_more
  - json_ostream_do_write_node
  - json_ostream_write_node
  - json_ostream_nwrite_node
  - json_ostream_open_string_stream
  - json_ostream_nopen_string_stream
  - json_ostream_open_space
  - json_ostream_nopen_space
  - json_ostream_close_space
  source_file: /src/dovecot/src/lib-json/json-ostream.c
  types:
    enum:
    - enumerators:
      - name: JSON_OSTREAM_NODE_STATE_NONE
        value: '0'
      - name: JSON_OSTREAM_NODE_STATE_OBJECT_CLOSE
      - name: JSON_OSTREAM_NODE_STATE_ARRAY_CLOSE
      - name: JSON_OSTREAM_NODE_STATE_VALUE
      item_type: enum
      name: json_ostream_node_state
      pos:
        line_end: 15
        line_start: 10
        source_file: /src/dovecot/src/lib-json/json-ostream.c
    preproc_defs: []
    structs:
    - fields:
      - name: refcount
        type: int
      - name: '*output'
        type: struct ostream
      - name: '*generator'
        type: struct json_generator
      - name: node
        type: struct json_node
      - name: node_state
        type: enum json_ostream_node_state
      - name: write_node_level
        type: unsigned int
      - name: '*tree_walker'
        type: struct json_tree_walker
      - name: '*tree'
        type: struct json_tree
      - name: tree_node
        type: struct json_node
      - name: node_data
        type: struct json_data
      - name: '*buffer'
        type: string_t
      - name: '*error'
        type: char
      - name: member_name_written
        type: bool
      - name: value_opened
        type: bool
      - name: value_persists
        type: bool
      - name: string_opened
        type: bool
      - name: space_opening
        type: bool
      - name: space_opened
        type: bool
      - name: last_errors_not_checked
        type: bool
      - name: error_handling_disabled
        type: bool
      - name: nfailed
        type: bool
      - name: closed
        type: bool
      item_type: struct
      name: json_ostream
      pos:
        line_end: 46
        line_start: 17
        source_file: /src/dovecot/src/lib-json/json-ostream.c
    typedefs: []
    union: []
- function_names:
  - json_format_file_io_run
  - json_format_file_io
  - main
  source_file: /src/dovecot/src/lib-json/json-format.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_json_tree_io
  - test_json_tree_stream_io
  - test_json_tree_file
  - main
  source_file: /src/dovecot/src/lib-json/test-json-tree-io.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: limits
        type: struct json_limits
      - name: flags
        type: enum json_parser_flags
      item_type: struct
      name: json_io_test
      pos:
        line_end: 21
        line_start: 16
        source_file: /src/dovecot/src/lib-json/test-json-tree-io.c
    typedefs: []
    union: []
- function_names:
  - json_istream_create_array
  - json_istream_create_object
  source_file: /src/dovecot/src/lib-json/json-istream.h
  types:
    enum:
    - enumerators:
      - name: JSON_ISTREAM_TYPE_NORMAL
        value: '0'
      - name: JSON_ISTREAM_TYPE_OBJECT
      - name: JSON_ISTREAM_TYPE_ARRAY
      item_type: enum
      name: json_istream_type
      pos:
        line_end: 20
        line_start: 10
        source_file: /src/dovecot/src/lib-json/json-istream.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-json/json-generator.h
  types:
    enum:
    - enumerators:
      - name: JSON_GENERATOR_FLAG_HIDE_ROOT
        value: BIT(0)
      item_type: enum
      name: json_generator_flags
      pos:
        line_end: 15
        line_start: 9
        source_file: /src/dovecot/src/lib-json/json-generator.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-json/json-parser.h
  types:
    enum:
    - enumerators:
      - name: JSON_PARSER_FLAG_STRICT
        value: BIT(0)
      - name: JSON_PARSER_FLAG_ALLOW_BOM
        value: BIT(4)
      - name: JSON_PARSER_FLAG_STRINGS_ALLOW_NUL
        value: BIT(1)
      - name: JSON_PARSER_FLAG_STRINGS_AS_DATA
        value: BIT(2)
      - name: JSON_PARSER_FLAG_NUMBERS_AS_STRING
        value: BIT(3)
      item_type: enum
      name: json_parser_flags
      pos:
        line_end: 28
        line_start: 14
        source_file: /src/dovecot/src/lib-json/json-parser.h
    preproc_defs: []
    structs:
    - fields:
      - name: "(*parse_list_open)(void *context, void *parent_context,\n\t\t\t\tconst
          char *name, bool object,\n\t\t\t\tvoid **list_context_r)"
        type: void
      - name: "(*parse_list_close)(void *context, void *parent_context,\n\t\t\t\t
          bool object)"
        type: void
      - name: "(*parse_object_member)(void *context, void *parent_context,\n\t\t\t\t
          \   const char *name)"
        type: void
      - name: "(*parse_value)(void *context, void *parent_context,\n\t\t\t    const
          char *name, enum json_type type,\n\t\t\t    const struct json_value *value)"
        type: void
      item_type: struct
      name: json_parser_callbacks
      pos:
        line_end: 64
        line_start: 30
        source_file: /src/dovecot/src/lib-json/json-parser.h
    - fields:
      - name: offset
        type: uoff_t
      - name: line
        type: uoff_t
      - name: value_line
        type: uoff_t
      - name: column
        type: uoff_t
      item_type: struct
      name: json_parser_location
      pos:
        line_end: 76
        line_start: 66
        source_file: /src/dovecot/src/lib-json/json-parser.h
    typedefs: []
    union: []
- function_names:
  - test_json_read_success_text
  - test_json_read_failure_text
  - test_json_read_success
  - test_json_read_failure
  - test_json_istream_read_number
  - test_json_istream_read_string
  - test_json_istream_read_buffer
  - test_json_istream_read_trickle
  - test_json_istream_finish
  - test_json_istream_read_tree
  - test_json_istream_read_into_tree
  - test_json_istream_read_stream
  - stream_read_value
  - test_json_istream_tokens
  - test_json_istream_tokens_buffer
  - test_json_istream_tokens_trickle
  - test_json_istream_skip_array
  - test_json_istream_skip_object_fields
  - test_json_istream_error
  - main
  source_file: /src/dovecot/src/lib-json/test-json-istream.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*text'
        type: char
      - name: number
        type: intmax_t
      item_type: struct
      name: "number_tests[] = {\n\t\t{\n\t\t\t.text = \"1234\",\n\t\t\t.number = 1234,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"1234e3\",\n\t\t\t.number = 1234000,\n\t\t},\n\t\t{\n\t\t\t.text = \"1234e-3\",\n\t\t\t.number
        = 1,\n\t\t},\n\t\t{\n\t\t\t.text = \"1234e003\",\n\t\t\t.number = 1234000,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"1234e-003\",\n\t\t\t.number = 1,\n\t\t},\n\t\t{\n\t\t\t.text = \"123.4\",\n\t\t\t.number
        = 123,\n\t\t},\n\t\t{\n\t\t\t.text = \"12.34\",\n\t\t\t.number = 12,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"1.234\",\n\t\t\t.number = 1,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.1234\",\n\t\t\t.number
        = 0,\n\t\t},\n\t\t{\n\t\t\t.text = \"987.6e01\",\n\t\t\t.number = 9876,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"98.76e02\",\n\t\t\t.number = 9876,\n\t\t},\n\t\t{\n\t\t\t.text = \"9.876e03\",\n\t\t\t.number
        = 9876,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.9876e04\",\n\t\t\t.number = 9876,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"0.9876e03\",\n\t\t\t.number = 987,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.9876e02\",\n\t\t\t.number
        = 98,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.9876e01\",\n\t\t\t.number = 9,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"\",\n\t\t\t.number = INTMAX_MAX,\n\t\t},\n\t\t{\n\t\t\t.text = \"\",\n\t\t\t.number
        = INTMAX_MIN,\n\t\t},\n\t\t{\n\t\t\t.text = \"e00\",\n\t\t\t.number = INTMAX_MAX,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"e00\",\n\t\t\t.number = INTMAX_MIN,\n\t\t},\n\t\t{\n\t\t\t.text = \"00e-02\",\n\t\t\t.number
        = INTMAX_MAX,\n\t\t},\n\t\t{\n\t\t\t.text = \"00e-02\",\n\t\t\t.number = INTMAX_MIN,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"0000000000e-10\",\n\t\t\t.number = INTMAX_MAX,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"0000000000e-10\",\n\t\t\t.number = INTMAX_MIN,\n\t\t},\n\t\t{\n\t\t\t.text
        = \".999999999\",\n\t\t\t.number = INTMAX_MAX,\n\t\t},\n\t\t{\n\t\t\t.text
        = \".999999999\",\n\t\t\t.number = INTMAX_MIN,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"123e-10000000\",\n\t\t\t.number = 0,\n\t\t},\n\t\t{\n\t\t\t.text = \"2342e-2\",\n\t\t\t.number
        = 23,\n\t\t},\n\t\t{\n\t\t\t.text = \"23423232e-6\",\n\t\t\t.number = 23,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"234232327654e-10\",\n\t\t\t.number = 23,\n\t\t},\n\t\t{\n\t\t\t.text =
        \"2342323276546785432098e-20\",\n\t\t\t.number = 23,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"23423232765467854320984567894323e-30\",\n\t\t\t.number = 23,\n\t\t},\n\t\t{\n\t\t\t.text
        = \"23423232765467854320984567894323\"\n\t\t\t        \"000000000000000000000000000000e-60\",\n\t\t\t.number
        = 23,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.23423232765467854320984567894323e2\",\n\t\t\t.number
        = 23,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.0000234232327654678543209845678943e6\",\n\t\t\t.number
        = 23,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.0000000023234232327654678543209845e10\",\n\t\t\t.number
        = 23,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.0000000000000000002323423232765467e20\",\n\t\t\t.number
        = 23,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.0000000000000000000000000000232342e30\",\n\t\t\t.number
        = 23,\n\t\t},\n\t\t{\n\t\t\t.text = \"0.000000000000000000000000000000\"\n\t\t\t
        \       \"000000000000000000000000000023e60\",\n\t\t\t.number = 23,\n\t\t},\n\t}"
      pos:
        line_end: 60
        line_start: 57
        source_file: /src/dovecot/src/lib-json/test-json-istream.c
    - fields:
      - name: '*text'
        type: char
      - name: '*string'
        type: char
      - name: '*data'
        type: unsigned char
      - name: size
        type: size_t
      item_type: struct
      name: "string_tests[] = {\n\t\t{\n\t\t\t.text = \"\\\"bla\\\"\",\n\t\t\t.string
        = \"bla\",\n\t\t},\n\t\t{\n\t\t\t.text = \"\\\"\\\\\\\"\\\\\\\\\\\\/\\\\r\\\\n\\\\t\\\"\",\n\t\t\t.string
        = \"\\\"\\\\/\\r\\n\\t\",\n\t\t},\n\t\t{\n\t\t\t.text = \"\\\"\\\\b\\\\f\\\"\",\n\t\t\t.string
        = \"\\x08\\x0c\",\n\t\t},\n\t\t{\n\t\t\t.text = \"\\\"\\0\\\"\",\n\t\t},\n\t\t{\n\t\t\t.text
        = \"\\\"\\\\\\0\\\"\",\n\t\t},\n\t\t{\n\t\t\t.text = \"\\\"\\\\u0000\\\"\",\n\t\t\t.data
        = data1,\n\t\t\t.size = sizeof(data1),\n\t\t},\n\t\t{\n\t\t\t.text = \"\\\"aaa\\\\u0000bbb\\\"\",\n\t\t\t.data
        = data2,\n\t\t\t.size = sizeof(data2),\n\t\t},\n\t\t{\n\t\t\t.text = \"\\\"\\\\uD83D\\\\uDD4A\\\"\",\n\t\t\t.string
        = \"\\xF0\\x9F\\x95\\x8A\",\n\t\t},\n\t\t{\n\t\t\t.text = \"\\\"fly \\\\uD83D\\\\uDD4A
        fly\\\"\",\n\t\t\t.string = \"fly \\xF0\\x9F\\x95\\x8A fly\",\n\t\t},\n\t\t{\n\t\t\t.text
        = \"\\\"\\\\uD83D\\\\uDD4A\\\\uD83D\\\\uDD4A\\\"\",\n\t\t\t.string = \"\\xF0\\x9F\\x95\\x8A\\xF0\\x9F\\x95\\x8A\",\n\t\t},\n\t\t{\n\t\t\t.text
        = \"\\\"\\\\uD83D\\\\uDD4A\\\\uD83D\\\\uDD4A\\\"\",\n\t\t\t.string = \"\\xF0\\x9F\\x95\\x8A\\xF0\\x9F\\x95\\x8A\",\n\t\t},\n\t}"
      pos:
        line_end: 307
        line_start: 302
        source_file: /src/dovecot/src/lib-json/test-json-istream.c
    typedefs: []
    union: []
- function_names:
  - log_refresh_proctitle
  - log_client_get
  - log_client_free
  - log_parse_option
  - client_log_ctx
  - client_log_fatal
  - log_parse_master_line
  - log_partial_line_free
  - log_it
  - log_connection_handshake
  - log_connection_input
  - T_BEGIN
  - log_connection_create
  - log_connection_destroy
  - log_connections_init
  - log_connections_deinit
  source_file: /src/dovecot/src/log/log-connection.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_MSECS_PER_CONNECTION
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/log/log-connection.c
      type_or_value: '100'
    - item_type: preproc_def
      name: LOG_WARN_PENDING_COUNT
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/log/log-connection.c
      type_or_value: (1000 / MAX_MSECS_PER_CONNECTION)
    - item_type: preproc_def
      name: LOG_WARN_PENDING_INTERVAL
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/log/log-connection.c
      type_or_value: (60 * LOG_WARN_PENDING_COUNT)
    structs:
    - fields:
      - name: ip
        type: struct ip_addr
      - name: '*prefix'
        type: char
      - name: fatal_logged
        type: bool
      item_type: struct
      name: log_client
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/dovecot/src/log/log-connection.c
    - fields:
      - name: continues
        type: bool
      - name: log_type
        type: enum log_type
      - name: pid
        type: pid_t
      - name: '*log_prefix'
        type: char
      item_type: struct
      name: log_line_metadata
      pos:
        line_end: 37
        line_start: 32
        source_file: /src/dovecot/src/log/log-connection.c
    - fields:
      - name: '*prev'
        type: struct log_connection
      - name: '*event'
        type: struct event
      - name: '*errorbuf'
        type: struct log_error_buffer
      - name: fd
        type: int
      - name: listen_fd
        type: int
      - name: '*io'
        type: struct io
      - name: '*input'
        type: struct istream
      - name: partial_line
        type: struct log_line_metadata
      - name: '*default_prefix'
        type: char
      - name: pending_count
        type: unsigned int
      - name: master
        type: bool
      - name: handshaked
        type: bool
      item_type: struct
      name: log_connection
      pos:
        line_end: 58
        line_start: 39
        source_file: /src/dovecot/src/log/log-connection.c
    typedefs: []
    union: []
- function_names:
  - doveadm_connection_send_errors
  - doveadm_output
  - doveadm_connection_create
  - doveadm_connection_destroy
  source_file: /src/dovecot/src/log/doveadm-connection.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*errorbuf'
        type: struct log_error_buffer
      - name: fd
        type: int
      - name: '*output'
        type: struct ostream
      item_type: struct
      name: doveadm_connection
      pos:
        line_end: 17
        line_start: 12
        source_file: /src/dovecot/src/log/doveadm-connection.c
    typedefs: []
    union: []
- function_names:
  - sig_reopen_logs
  - main_init
  - main_deinit
  - client_connected
  - main
  source_file: /src/dovecot/src/log/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/log/log-connection.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/log/doveadm-connection.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/log/log-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - seekable_fd_callback
  - create_raw_stream
  - lda_raw_mail_open
  - lda_set_rcpt_to
  - lda_do_deliver
  - lda_deliver
  - failure_exit_callback
  - print_help
  - main
  source_file: /src/dovecot/src/lda/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_MAX_MEMORY_BUFFER
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dovecot/src/lda/main.c
      type_or_value: (1024*128)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-hibernate/imap-hibernate-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-hibernate/imap-client.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*username'
        type: char
      - name: '*session_id'
        type: char
      - name: local_ip
        type: struct ip_addr
      - name: local_port
        type: in_port_t
      - name: session_created
        type: time_t
      - name: uid
        type: uid_t
      - name: gid
        type: gid_t
      - name: peer_dev
        type: dev_t
      - name: peer_ino
        type: ino_t
      - name: '*tag'
        type: char
      - name: '*state'
        type: unsigned char
      - name: state_size
        type: size_t
      - name: logout_stats
        type: struct imap_logout_stats
      - name: anvil_conn_guid
        type: guid_128_t
      - name: imap_idle_notify_interval
        type: unsigned int
      - name: idle_cmd
        type: bool
      - name: have_notify_fd
        type: bool
      - name: anvil_sent
        type: bool
      - name: multiplex_ostream
        type: bool
      item_type: struct
      name: imap_client_state
      pos:
        line_end: 33
        line_start: 6
        source_file: /src/dovecot/src/imap-hibernate/imap-client.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-hibernate/imap-hibernate-client.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_connected
  - main
  source_file: /src/dovecot/src/imap-hibernate/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_master_connection_timeout
  - imap_master_connection_init
  - imap_master_read_callback
  - imap_master_connection_deinit
  - imap_master_connection_free
  - imap_master_client_destroy
  - imap_master_client_input_line
  - imap_master_connections_init
  - imap_master_connections_deinit
  source_file: /src/dovecot/src/imap-hibernate/imap-master-connection.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_MASTER_CONNECTION_TIMEOUT_MSECS
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/imap-hibernate/imap-master-connection.c
      type_or_value: '30000'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*to'
        type: struct timeout
      - name: '*send_callback'
        type: imap_master_connection_send_callback_t
      - name: '*read_callback'
        type: imap_master_connection_read_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: imap_master_connection
      pos:
        line_end: 16
        line_start: 9
        source_file: /src/dovecot/src/imap-hibernate/imap-master-connection.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-hibernate/imap-master-connection.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: imap_master_connection_send_callback_t(void *context, struct ostream *output)
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/imap-hibernate/imap-master-connection.h
      type: int
    - item_type: typedef
      name: imap_master_connection_read_callback_t(void *context, const char *reply)
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/imap-hibernate/imap-master-connection.h
      type: void
    union: []
- function_names:
  - imap_client_disconnected
  - imap_client_unhibernate_failed
  - imap_client_parse_userdb_fields
  - imap_client_move_back_send_callback
  - imap_client_move_back_read_callback
  - imap_move_has_reached_timeout
  - imap_client_try_move_back
  - imap_client_move_back
  - imap_client_input_parse
  - imap_client_input_idle_cmd
  - imap_client_input_nonidle
  - imap_client_input_notify
  - keepalive_timeout
  - imap_client_add_idle_keepalive_timeout
  - imap_client_get_var_expand_table
  - imap_client_var_expand_func_userdb
  - imap_client_io_activate_user
  - imap_client_io_deactivate_user
  - userdb_fields_get_alt_usernames
  - imap_client_create
  - imap_client_stop_notify_listening
  - imap_client_stop
  - imap_client_destroy
  - imap_client_add_notify_fd
  - imap_client_create_finish
  - client_unhibernate_cmp
  - imap_clients_unhibernate
  - imap_client_kick
  - imap_clients_kick
  - imap_clients_init
  - imap_clients_deinit
  source_file: /src/dovecot/src/imap-hibernate/imap-client.c
  types:
    enum:
    - enumerators:
      - name: IMAP_CLIENT_INPUT_STATE_UNKNOWN
      - name: IMAP_CLIENT_INPUT_STATE_DONEIDLE
      - name: IMAP_CLIENT_INPUT_STATE_BAD
      - name: IMAP_CLIENT_INPUT_STATE_DONE_LF
      - name: IMAP_CLIENT_INPUT_STATE_DONE_CRLF
      item_type: enum
      name: imap_client_input_state
      pos:
        line_end: 52
        line_start: 46
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_MASTER_SOCKET_NAME
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
      type_or_value: '"imap-master"'
    - item_type: preproc_def
      name: IMAP_MAX_INBUF
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
      type_or_value: '12 + 1 + 128 '
    - item_type: preproc_def
      name: IMAP_MAX_OUTBUF
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: IMAP_CLIENT_MOVE_BACK_WITH_INPUT_TIMEOUT_SECS
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
      type_or_value: '10'
    - item_type: preproc_def
      name: IMAP_CLIENT_MOVE_BACK_WITHOUT_INPUT_TIMEOUT_SECS
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
      type_or_value: (60*5)
    - item_type: preproc_def
      name: IMAP_UNHIBERNATE_RETRY_MSECS
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
      type_or_value: '100'
    - item_type: preproc_def
      name: IMAP_CLIENT_BUFFER_FULL_ERROR
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
      type_or_value: '"Client output buffer is full"'
    - item_type: preproc_def
      name: IMAP_CLIENT_UNHIBERNATE_ERROR
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
      type_or_value: '"Failed to unhibernate client"'
    structs:
    - fields:
      - name: fd
        type: int
      - name: '*io'
        type: struct io
      item_type: struct
      name: imap_client_notify
      pos:
        line_end: 57
        line_start: 54
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
    - fields:
      - name: item
        type: struct priorityq_item
      - name: '*prev'
        type: struct imap_client
      - name: pool
        type: pool_t
      - name: '*event'
        type: struct event
      - name: state
        type: struct imap_client_state
      - name: move_back_start
        type: time_t
      - name: '*to_move_back'
        type: struct timeout
      - name: fd
        type: int
      - name: '*io'
        type: struct io
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      - name: '*to_keepalive'
        type: struct timeout
      - name: '*master_conn'
        type: struct imap_master_connection
      - name: '*ioloop_ctx'
        type: struct ioloop_context
      - name: '*log_prefix'
        type: char
      - name: next_read_threshold
        type: unsigned int
      - name: bad_done
        type: bool
      - name: unhibernate_queued
        type: bool
      - name: input_pending
        type: bool
      - name: shutdown_fd_on_destroy
        type: bool
      item_type: struct
      name: imap_client
      pos:
        line_end: 84
        line_start: 59
        source_file: /src/dovecot/src/imap-hibernate/imap-client.c
    typedefs: []
    union: []
- function_names:
  - imap_hibernate_client_destroy
  - imap_hibernate_client_parse_input
  - imap_hibernate_client_input_args
  - imap_hibernate_client_input_line
  - imap_hibernate_client_create
  - imap_hibernate_clients_init
  - imap_hibernate_clients_deinit
  source_file: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*imap_client'
        type: struct imap_client
      - name: imap_client_created
        type: bool
      - name: finished
        type: bool
      - name: debug
        type: bool
      item_type: struct
      name: imap_hibernate_client
      pos:
        line_end: 24
        line_start: 18
        source_file: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    - fields:
      - name: '*client_input'
        type: buffer_t
      - name: '*state'
        type: buffer_t
      item_type: struct
      name: imap_hibernate_input
      pos:
        line_end: 31
        line_start: 26
        source_file: /src/dovecot/src/imap-hibernate/imap-hibernate-client.c
    typedefs: []
    union: []
- function_names:
  - oauth2_passwd_grant_start
  - oauth2_token_validation_start
  - oauth2_introspection_start
  - oauth2_refresh_start
  - oauth2_client_secret_start
  source_file: /src/dovecot/src/lib-oauth2/oauth2.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*value'
        type: char
      item_type: struct
      name: oauth2_field
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/lib-oauth2/oauth2.h
    - fields:
      - name: '*client'
        type: struct http_client
      - name: '*tokeninfo_url'
        type: char
      - name: '*grant_url'
        type: char
      - name: '*introspection_url'
        type: char
      - name: '*refresh_url'
        type: char
      - name: '*client_id'
        type: char
      - name: '*client_secret'
        type: char
      - name: '*scope'
        type: char
      - name: '*key_dict'
        type: struct dict
      - name: '*key_cache'
        type: struct oauth2_validation_key_cache
      - name: '*const *issuers'
        type: char
      - name: token_expire_grace_secs
        type: unsigned int
      - name: introspection_mode
        type: "enum {\n\t\tINTROSPECTION_MODE_GET_AUTH,\n\t\tINTROSPECTION_MODE_GET,\n\t\tINTROSPECTION_MODE_POST,\n\t\tINTROSPECTION_MODE_LOCAL,\n\t}"
      - name: send_auth_headers
        type: bool
      - name: use_grant_password
        type: bool
      item_type: struct
      name: oauth2_settings
      pos:
        line_end: 54
        line_start: 16
        source_file: /src/dovecot/src/lib-oauth2/oauth2.h
    - fields:
      - name: '*fields'
        type: ARRAY_TYPE
      - name: '*error'
        type: char
      - name: expires_at
        type: time_t
      - name: valid
        type: bool
      item_type: struct
      name: oauth2_request_result
      pos:
        line_end: 66
        line_start: 57
        source_file: /src/dovecot/src/lib-oauth2/oauth2.h
    - fields:
      - name: '*token'
        type: char
      - name: '*protocol'
        type: char
      - name: local_ip
        type: struct ip_addr
      - name: local_port
        type: in_port_t
      item_type: struct
      name: oauth2_request_input
      pos:
        line_end: 73
        line_start: 68
        source_file: /src/dovecot/src/lib-oauth2/oauth2.h
    typedefs:
    - item_type: typedef
      name: oauth2_request_callback_t(struct oauth2_request_result*, void*)
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/dovecot/src/lib-oauth2/oauth2.h
      type: void
    union: []
- function_names:
  - test_oauth_json_valid_parsed
  - test_oauth2_json_valid
  - test_oauth_json_has_error
  - test_oauth2_json_error
  - main
  source_file: /src/dovecot/src/lib-oauth2/test-oauth2-json.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-oauth2/oauth2-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*set'
        type: struct oauth2_settings
      - name: '*req'
        type: struct http_client_request
      - name: '*json_istream'
        type: struct json_istream
      - name: '*is'
        type: struct istream
      - name: '*io'
        type: struct io
      - name: '*delayed_error'
        type: char
      - name: '*to_delayed_error'
        type: struct timeout
      - name: '*username'
        type: char
      - name: '*key_file_template'
        type: char
      - name: (*json_parsed_cb)(struct oauth2_request *, const char *error)
        type: void
      - name: (oauth2_field)
        type: ARRAY_TYPE
      - name: '*req_callback'
        type: oauth2_request_callback_t
      - name: '*req_context'
        type: void
      - name: response_status
        type: unsigned int
      item_type: struct
      name: oauth2_request
      pos:
        line_end: 29
        line_start: 6
        source_file: /src/dovecot/src/lib-oauth2/oauth2-private.h
    typedefs: []
    union: []
- function_names:
  - oauth2_request_free
  - oauth2_request_callback
  - oauth2_request_field_parse
  - oauth2_request_continue
  - request_field_cmp
  - oauth2_request_parse_json
  - oauth2_request_response
  - oauth2_request_fail
  - oauth2_request_set_headers
  - oauth2_request_start
  - oauth2_refresh_start
  - oauth2_introspection_start
  - oauth2_token_validation_start
  - oauth2_passwd_grant_start
  - oauth2_client_secret_start
  - oauth2_request_abort
  source_file: /src/dovecot/src/lib-oauth2/oauth2-request.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - oauth2_json_tree_build
  - oauth2_valid_token
  source_file: /src/dovecot/src/lib-oauth2/oauth2.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_field_node
  - get_field
  - get_field_multiple
  - get_time_field
  - escape_identifier
  - oauth2_lookup_hmac_key
  - oauth2_validate_hmac
  - oauth2_lookup_pubkey
  - oauth2_validate_rsa_ecdsa
  - oauth2_validate_signature
  - array_foreach_modifiable
  - oauth2_jwt_header_process
  - check_scope
  - oauth2_jwt_body_process
  - oauth2_try_parse_jwt
  source_file: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*prefix'
        type: char
      - name: '*root'
        type: struct json_tree_node
      - name: array
        type: bool
      item_type: struct
      name: jwt_node
      pos:
        line_end: 363
        line_start: 359
        source_file: /src/dovecot/src/lib-oauth2/oauth2-jwt.c
    typedefs: []
    union: []
- function_names:
  - base64url_encode_str
  - parse_jwt_token
  - test_jwt_token
  - create_jwt_token_kid
  - create_jwt_token
  - append_key_value
  - create_jwt_token_fields
  - create_jwt_token_fields_kid
  - array_foreach
  - save_key
  - save_key_to
  - save_key_azp_to
  - sign_jwt_token_hs256
  - sign_jwt_token_hs384
  - sign_jwt_token_hs512
  - test_jwt_hs_token
  - test_jwt_token_escape
  - test_jwt_broken_token
  - test_jwt_bad_valid_token
  - test_jwt_valid_token
  - test_jwt_dates
  - test_jwt_key_files
  - test_jwt_kid_escape
  - test_jwt_nested_fields
  - test_jwt_rs_token
  - test_jwt_ps_token
  - test_jwt_ec_token
  - test_do_init
  - test_do_deinit
  - main
  source_file: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*azp'
        type: char
      - name: '*alg'
        type: char
      - name: '*kid'
        type: char
      - name: '*esc_azp'
        type: char
      - name: '*esc_kid'
        type: char
      item_type: struct
      name: test_case
      pos:
        line_end: 322
        line_start: 316
        source_file: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    - fields:
      - name: '*token'
        type: char
      - name: is_jwt
        type: bool
      item_type: struct
      name: test_cases
      pos:
        line_end: 378
        line_start: 375
        source_file: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    - fields:
      - name: exp
        type: time_t
      - name: iat
        type: time_t
      - name: nbf
        type: time_t
      - name: '*key_values[20]'
        type: char
      - name: '*error'
        type: char
      item_type: struct
      name: test_cases
      pos:
        line_end: 464
        line_start: 458
        source_file: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    - fields:
      - name: exp
        type: time_t
      - name: iat
        type: time_t
      - name: nbf
        type: time_t
      - name: '*key_values[20]'
        type: char
      item_type: struct
      name: test_cases
      pos:
        line_end: 569
        line_start: 564
        source_file: /src/dovecot/src/lib-oauth2/test-oauth2-jwt.c
    typedefs: []
    union: []
- function_names:
  - oauth2_validation_key_cache_init
  - oauth2_validation_key_cache_deinit
  - oauth2_validation_key_cache_lookup_pubkey
  - oauth2_validation_key_cache_lookup_hmac_key
  - oauth2_validation_key_cache_insert_pubkey
  - oauth2_validation_key_cache_insert_hmac_key
  - oauth2_validation_key_cache_evict
  source_file: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*key_id'
        type: char
      - name: '*pubkey'
        type: struct dcrypt_public_key
      - name: '*hmac_key'
        type: buffer_t
      - name: '*prev'
        type: struct oauth2_key_cache_entry
      item_type: struct
      name: oauth2_key_cache_entry
      pos:
        line_end: 16
        line_start: 11
        source_file: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    - fields:
      - name: pool
        type: pool_t
      - name: (oauth2_key_cache)
        type: HASH_TABLE_TYPE
      - name: '*list_start'
        type: struct oauth2_key_cache_entry
      item_type: struct
      name: oauth2_validation_key_cache
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/dovecot/src/lib-oauth2/oauth2-key-cache.c
    typedefs: []
    union: []
- function_names:
  - indexer_client_request_queue
  - indexer_client_request_optimize
  - indexer_client_request_remove
  - indexer_client_request_list_write
  - indexer_client_request_list
  - indexer_client_request
  - indexer_client_input_args
  - indexer_client_status_callback
  - indexer_client_create
  - indexer_client_destroy
  - indexer_client_ref
  - indexer_client_unref
  - indexer_clients_get_count
  - indexer_clients_destroy_all
  source_file: /src/dovecot/src/indexer/indexer-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_INBUF_SIZE
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/indexer/indexer-client.c
      type_or_value: (1024*64)
    - item_type: preproc_def
      name: INDEXER_CLIENT_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/indexer/indexer-client.c
      type_or_value: '1'
    - item_type: preproc_def
      name: INDEXER_CLIENT_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/indexer/indexer-client.c
      type_or_value: '0'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: refcount
        type: int
      - name: '*queue'
        type: struct indexer_queue
      item_type: struct
      name: indexer_client
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/dovecot/src/indexer/indexer-client.c
    - fields:
      - name: '*client'
        type: struct indexer_client
      - name: tag
        type: unsigned int
      item_type: struct
      name: indexer_client_request
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/dovecot/src/indexer/indexer-client.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/indexer/indexer-client.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/indexer/indexer-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_connected
  - drop_privileges
  - main
  source_file: /src/dovecot/src/indexer/indexer-worker.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - indexer_request_hash
  - indexer_request_cmp
  - indexer_queue_init
  - indexer_queue_deinit
  - indexer_queue_set_listen_callback
  - indexer_queue_lookup
  - request_add_context
  - indexer_queue_append_request
  - indexer_queue_append_finish
  - indexer_queue_append
  - indexer_queue_append_optimize
  - indexer_queue_request_peek
  - indexer_queue_request_remove
  - indexer_queue_request_status_int
  - indexer_queue_request_status
  - indexer_queue_move_head_to_tail
  - indexer_queue_request_work
  - indexer_queue_request_finish
  - indexer_queue_request_cancel
  - indexer_queue_cancel
  - indexer_queue_cancel_all
  - indexer_queue_is_empty
  - indexer_queue_count
  - indexer_queue_iter_init
  - indexer_queue_iter_next
  - indexer_queue_iter_deinit
  source_file: /src/dovecot/src/indexer/indexer-queue.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*callback'
        type: indexer_queue_callback_t
      - name: (*listen_callback)(struct indexer_queue *)
        type: void
      - name: '*head'
        type: struct indexer_request
      item_type: struct
      name: indexer_queue
      pos:
        line_end: 18
        line_start: 9
        source_file: /src/dovecot/src/indexer/indexer-queue.c
    - fields:
      - name: '*queue'
        type: struct indexer_queue
      - name: '*hash_iter'
        type: struct hash_iterate_context
      - name: '*next'
        type: struct indexer_request
      - name: only_working
        type: bool
      item_type: struct
      name: indexer_queue_iter
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/dovecot/src/indexer/indexer-queue.c
    typedefs: []
    union: []
- function_names:
  - indexer_refresh_proctitle
  - idle_die
  - client_connected
  - worker_send_request
  - queue_try_send_more
  - queue_listen_callback
  - worker_status_callback
  - worker_avail_callback
  - main
  source_file: /src/dovecot/src/indexer/indexer.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - worker_connection_call_callback
  - worker_connection_destroy
  - worker_connection_handshake_args
  - worker_connection_input_args
  - worker_connection_send_request
  - worker_connections_init
  - worker_connections_deinit
  - worker_connection_try_create
  - worker_connections_get_count
  - worker_connections_find_user
  source_file: /src/dovecot/src/indexer/worker-connection.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INDEXER_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/indexer/worker-connection.c
      type_or_value: '1'
    - item_type: preproc_def
      name: INDEXER_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/indexer/worker-connection.c
      type_or_value: '0'
    - item_type: preproc_def
      name: INDEXER_MASTER_NAME
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/indexer/worker-connection.c
      type_or_value: '"indexer-master-worker"'
    - item_type: preproc_def
      name: INDEXER_WORKER_NAME
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/indexer/worker-connection.c
      type_or_value: '"indexer-worker-master"'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*callback'
        type: indexer_status_callback_t
      - name: '*avail_callback'
        type: worker_available_callback_t
      - name: pid
        type: pid_t
      - name: '*request_username'
        type: char
      - name: '*request'
        type: struct indexer_request
      item_type: struct
      name: worker_connection
      pos:
        line_end: 33
        line_start: 24
        source_file: /src/dovecot/src/indexer/worker-connection.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/indexer/indexer.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: "indexer_status_callback_t(const struct indexer_status *status,\n                          struct
        indexer_request *request)"
      pos:
        line_end: 9
        line_start: 7
        source_file: /src/dovecot/src/indexer/indexer.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/indexer/worker-connection.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: worker_available_callback_t(void)
      pos:
        line_end: 8
        line_start: 8
        source_file: /src/dovecot/src/indexer/worker-connection.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/indexer/worker-pool.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - indexer_worker_refresh_proctitle
  - get_attempt_error
  - index_mailbox_precache_real
  - index_mailbox_precache_virtual
  - index_mailbox_precache
  - index_mailbox
  - master_connection_cmd_index
  - master_connection_input_args
  - master_connection_destroy
  - master_connection_handshake_args
  - master_connection_create
  - master_connections_destroy
  source_file: /src/dovecot/src/indexer/master-connection.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INDEXER_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/indexer/master-connection.c
      type_or_value: '1'
    - item_type: preproc_def
      name: INDEXER_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/indexer/master-connection.c
      type_or_value: '0'
    - item_type: preproc_def
      name: INDEXER_MASTER_NAME
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/indexer/master-connection.c
      type_or_value: '"indexer-master-worker"'
    - item_type: preproc_def
      name: INDEXER_WORKER_NAME
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/indexer/master-connection.c
      type_or_value: '"indexer-worker-master"'
    - item_type: preproc_def
      name: FINISHED_EVENT_NAME
      pos:
        line_end: 178
        line_start: 177
        source_file: /src/dovecot/src/indexer/master-connection.c
      type_or_value: '"indexer_worker_indexing_finished"'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*storage_service'
        type: struct mail_storage_service_ctx
      - name: version_received
        type: bool
      item_type: struct
      name: master_connection
      pos:
        line_end: 36
        line_start: 31
        source_file: /src/dovecot/src/indexer/master-connection.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/indexer/indexer-worker-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - indexer_refresh_proctitle
  - indexer_queue_status_callback
  - test_indexer_queue
  - test_indexer_queue_repeated_prepend
  - test_indexer_queue_reindex
  - test_indexer_queue_cancel
  - test_indexer_queue_iter
  - main
  source_file: /src/dovecot/src/indexer/test-indexer-queue.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*username'
        type: char
      - name: '*mailbox'
        type: char
      item_type: struct
      name: "expected[] = {\n\t\t{ \"user2\", \"mailbox2\" },\n\t\t{ \"user2\", \"mailbox3\"
        },\n\t\t{ \"user1\", \"mailbox4\" },\n\t\t{ \"user1\", \"mailbox1\" },\n\t}"
      pos:
        line_end: 36
        line_start: 33
        source_file: /src/dovecot/src/indexer/test-indexer-queue.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/indexer/master-connection.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/indexer/indexer-queue.h
  types:
    enum:
    - enumerators:
      - name: INDEXER_REQUEST_TYPE_INDEX
      - name: INDEXER_REQUEST_TYPE_OPTIMIZE
      item_type: enum
      name: indexer_request_type
      pos:
        line_end: 13
        line_start: 8
        source_file: /src/dovecot/src/indexer/indexer-queue.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*prev'
        type: struct indexer_request
      - name: '*user_prev'
        type: struct indexer_request
      - name: '*username'
        type: char
      - name: '*mailbox'
        type: char
      - name: '*session_id'
        type: char
      - name: max_recent_msgs
        type: unsigned int
      - name: type
        type: enum indexer_request_type
      - name: working
        type: bool
      - name: reindex_head
        type: bool
      - name: reindex_tail
        type: bool
      - name: working_context_idx
        type: unsigned int
      item_type: struct
      name: indexer_request
      pos:
        line_end: 41
        line_start: 15
        source_file: /src/dovecot/src/indexer/indexer-queue.h
    typedefs:
    - item_type: typedef
      name: indexer_queue_callback_t(const struct indexer_status *status, void *context)
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/indexer/indexer-queue.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-login/client-authenticate.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_skip_line
  - client_handle_parser_error
  - is_login_cmd_disabled
  - get_capability
  - cmd_capability
  - cmd_starttls
  - imap_client_notify_starttls
  - cmd_noop
  - cmd_logout
  - cmd_enable
  - client_command_execute
  - client_invalid_command
  - client_parse_command
  - client_handle_input
  - imap_client_input_next_cmd
  - imap_client_input
  - imap_client_alloc
  - imap_client_create
  - imap_client_destroy
  - imap_client_reload_config
  - imap_client_notify_auth_ready
  - imap_client_starttls
  - client_send_reply_raw
  - client_send_reply_code
  - client_send_reply
  - imap_client_notify_status
  - imap_client_notify_disconnect
  - imap_login_preinit
  - imap_login_init
  - imap_login_deinit
  - main
  source_file: /src/dovecot/src/imap-login/imap-login-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLIENT_MAX_BAD_COMMANDS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/imap-login/imap-login-client.c
      type_or_value: '3'
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_id_x_originating_ip
  - cmd_id_x_originating_port
  - cmd_id_x_connected_ip
  - cmd_id_x_connected_port
  - cmd_id_x_proxy_ttl
  - cmd_id_x_session_id
  - cmd_id_x_client_transport
  - cmd_id_x_forward_
  - cmd_id_x_multiplex
  - cmd_id_x_connected_name
  - imap_id_param_handler_find
  - cmd_id_handle_keyvalue
  - cmd_id_handle_args
  - cmd_id_copy_params
  - cmd_id_finish
  - cmd_id_free
  - cmd_id
  source_file: /src/dovecot/src/imap-login/imap-login-cmd-id.c
  types:
    enum:
    - enumerators:
      - name: IMAP_ID_PARAM_FLAG_KEY_IS_PREFIX
        value: BIT(0)
      - name: IMAP_ID_PARAM_FLAG_RELOAD_SETTINGS
        value: BIT(1)
      item_type: enum
      name: imap_id_param_flag
      pos:
        line_end: 34
        line_start: 31
        source_file: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      item_type: struct
      name: imap_id_params_forward
      pos:
        line_end: 15
        line_start: 12
        source_file: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    - fields:
      - name: pool
        type: pool_t
      - name: local_ip
        type: struct ip_addr
      - name: ip
        type: struct ip_addr
      - name: local_port
        type: in_port_t
      - name: proxy_ttl
        type: unsigned int
      - name: '*session_id'
        type: char
      - name: '*local_name'
        type: char
      - name: end_client_tls_secured_set
        type: bool
      - name: end_client_tls_secured
        type: bool
      - name: multiplex
        type: bool
      item_type: struct
      name: imap_id_params
      pos:
        line_end: 29
        line_start: 17
        source_file: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    - fields:
      - name: '*key'
        type: char
      - name: flags
        type: enum imap_id_param_flag
      - name: "(*callback)(struct imap_id_params *params,\n\t\t\t const char *key,
          const char *value)"
        type: bool
      item_type: struct
      name: imap_id_param_handler
      pos:
        line_end: 42
        line_start: 36
        source_file: /src/dovecot/src/imap-login/imap-login-cmd-id.c
    typedefs: []
    union: []
- function_names:
  - proxy_write_id
  - proxy_write_starttls
  - proxy_write_login
  - proxy_input_banner
  - client_send_login_reply
  - auth_resp_code_is_tempfail
  - auth_resp_code_is_serverbug
  - auth_resp_code_is_limit
  - auth_resp_code_parse_referral
  - imap_proxy_parse_line
  - imap_proxy_reset
  - imap_proxy_send_failure_reply
  - proxy_side_cmd_compress
  - imap_proxy_side_channel_input
  - imap_proxy_failed
  - imap_proxy_get_state
  source_file: /src/dovecot/src/imap-login/imap-proxy.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: STR_NO_IMAP_RESP_CODE_AUTHFAILED
      pos:
        line_end: 424
        line_start: 423
        source_file: /src/dovecot/src/imap-login/imap-proxy.c
      type_or_value: '"NO ["IMAP_RESP_CODE_AUTHFAILED"]"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-login/imap-proxy.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_login_command_lookup
  - imap_login_commands_register
  - imap_login_command_unregister
  - imap_login_commands_unregister
  - imap_login_commands_init
  - imap_login_commands_deinit
  source_file: /src/dovecot/src/imap-login/imap-login-commands.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-login/imap-login-client.h
  types:
    enum:
    - enumerators:
      - name: IMAP_CLIENT_ID_STATE_LIST
        value: '0'
      - name: IMAP_CLIENT_ID_STATE_KEY
      - name: IMAP_CLIENT_ID_STATE_VALUE
      item_type: enum
      name: imap_client_id_state
      pos:
        line_end: 17
        line_start: 13
        source_file: /src/dovecot/src/imap-login/imap-login-client.h
    - enumerators:
      - name: IMAP_PROXY_SENT_STATE_ID
        value: '0x01'
      - name: IMAP_PROXY_SENT_STATE_AUTH_CONTINUE
        value: '0x10'
      - name: IMAP_PROXY_SENT_STATE_CAPABILITY
        value: '0x04'
      - name: IMAP_PROXY_SENT_STATE_AUTHENTICATE
        value: '0x08'
      - name: IMAP_PROXY_SENT_STATE_STARTTLS
        value: '0x02'
      - name: IMAP_PROXY_SENT_STATE_LOGIN
        value: '0x20'
      - name: IMAP_PROXY_SENT_STATE_COUNT
        value: '6'
      item_type: enum
      name: imap_proxy_sent_state
      pos:
        line_end: 29
        line_start: 20
        source_file: /src/dovecot/src/imap-login/imap-login-client.h
    - enumerators:
      - name: IMAP_PROXY_RCVD_STATE_NONE
      - name: IMAP_PROXY_RCVD_STATE_STARTTLS
      - name: IMAP_PROXY_RCVD_STATE_CAPABILITY
      - name: IMAP_PROXY_RCVD_STATE_BANNER
      - name: IMAP_PROXY_RCVD_STATE_ID
      - name: IMAP_PROXY_RCVD_STATE_AUTH_CONTINUE
      - name: IMAP_PROXY_RCVD_STATE_LOGIN
      - name: IMAP_PROXY_RCVD_STATE_COUNT
      item_type: enum
      name: imap_proxy_rcvd_state
      pos:
        line_end: 41
        line_start: 31
        source_file: /src/dovecot/src/imap-login/imap-login-client.h
    - enumerators:
      - name: IMAP_CMD_REPLY_OK
      - name: IMAP_CMD_REPLY_BAD
      - name: IMAP_CMD_REPLY_BYE
      - name: IMAP_CMD_REPLY_NO
      item_type: enum
      name: imap_cmd_reply
      pos:
        line_end: 94
        line_start: 89
        source_file: /src/dovecot/src/imap-login/imap-login-client.h
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_TAG_MAX_LEN
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/imap-login/imap-login-client.h
      type_or_value: (LOGIN_MAX_MASTER_PREFIX_LEN-2)
    - item_type: preproc_def
      name: IMAP_LOGIN_MAX_LINE_LENGTH
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/imap-login/imap-login-client.h
      type_or_value: '8192'
    structs:
    - fields:
      - name: '*parser'
        type: struct imap_parser
      - name: state
        type: enum imap_client_id_state
      - name: key[IMAP_ID_KEY_MAX_LEN+1]
        type: char
      - name: '*params_event'
        type: struct event
      - name: '*params'
        type: struct imap_id_params
      - name: '*log_reply'
        type: string_t
      - name: seen_internal_keys
        type: bool
      - name: seen_external_keys
        type: bool
      - name: reload_settings
        type: bool
      item_type: struct
      name: imap_client_cmd_id
      pos:
        line_end: 60
        line_start: 43
        source_file: /src/dovecot/src/imap-login/imap-login-client.h
    - fields:
      - name: common
        type: struct client
      - name: '*set'
        type: struct imap_login_settings
      - name: '*set_instance'
        type: struct settings_instance
      - name: '*parser'
        type: struct imap_parser
      - name: '*proxy_backend_capability'
        type: char
      - name: '*cmd_tag'
        type: char
      - name: '*cmd_id'
        type: struct imap_client_cmd_id
      - name: proxy_sent_state
        type: enum imap_proxy_sent_state
      - name: proxy_rcvd_state
        type: enum imap_proxy_rcvd_state
      - name: cmd_finished
        type: bool
      - name: proxy_sasl_ir
        type: bool
      - name: proxy_logindisabled
        type: bool
      - name: proxy_seen_banner
        type: bool
      - name: skip_line
        type: bool
      - name: id_logged
        type: bool
      - name: proxy_capability_request_sent
        type: bool
      - name: client_ignores_capability_resp_code
        type: bool
      - name: auth_mech_name_parsed
        type: bool
      item_type: struct
      name: imap_client
      pos:
        line_end: 85
        line_start: 62
        source_file: /src/dovecot/src/imap-login/imap-login-client.h
    typedefs: []
    union: []
- function_names:
  - client_authenticate_get_capabilities
  - imap_client_auth_result
  - imap_client_auth_begin
  - cmd_authenticate
  - cmd_login
  source_file: /src/dovecot/src/imap-login/client-authenticate.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-login/imap-login-commands.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*func'
        type: imap_login_command_t
      item_type: struct
      name: imap_login_command
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/imap-login/imap-login-commands.h
    typedefs:
    - item_type: typedef
      name: "imap_login_command_t(struct imap_client *client,\n\t\t\t\t const struct
        imap_arg *args)"
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/imap-login/imap-login-commands.h
      type: int
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/imap-login/imap-login-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-login/imap-login-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: imap_literal_minus
        type: bool
      - name: imap_id_retain
        type: bool
      - name: imap4rev2_enable
        type: bool
      item_type: struct
      name: imap_login_settings
      pos:
        line_end: 10
        line_start: 3
        source_file: /src/dovecot/src/imap-login/imap-login-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/dns/dns-client-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dns_client_input_args
  - dns_client_destroy
  - client_connected
  - main
  source_file: /src/dovecot/src/dns/dns-client.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_msgpart_url_create
  - imap_msgpart_url_parse
  - imap_msgpart_url_get_mailbox
  - imap_msgpart_url_open_mailbox
  - imap_msgpart_url_open_mail
  - imap_msgpart_url_get_part
  - imap_msgpart_url_set_decode_to_binary
  - imap_msgpart_url_read_part
  - imap_msgpart_url_verify
  - imap_msgpart_url_get_bodypartstructure
  - imap_msgpart_url_free
  source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*mailbox'
        type: char
      - name: uidvalidity
        type: uint32_t
      - name: uid
        type: uint32_t
      - name: '*section'
        type: char
      - name: partial_offset
        type: uoff_t
      - name: '*part'
        type: struct imap_msgpart
      - name: '*user'
        type: struct mail_user
      - name: '*selected_box'
        type: struct mailbox
      - name: '*box'
        type: struct mailbox
      - name: '*trans'
        type: struct mailbox_transaction_context
      - name: '*mail'
        type: struct mail
      - name: result
        type: struct imap_msgpart_open_result
      - name: decode_cte_to_binary
        type: bool
      item_type: struct
      name: imap_msgpart_url
      pos:
        line_end: 30
        line_start: 12
        source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.c
    typedefs: []
    union: []
- function_names:
  - imap_metadata_verify_entry_name
  - imap_metadata_transaction_set_error
  - imap_metadata_entry2key
  - imap_metadata_get_mailbox_transaction
  - imap_metadata_set
  - imap_metadata_unset
  - imap_metadata_get
  - imap_metadata_get_stream
  - imap_metadata_iter_init
  - imap_metadata_iter_next
  - imap_metadata_iter_deinit
  - imap_metadata_transaction_begin
  - imap_metadata_transaction_begin_server
  - imap_metadata_transaction_validated_only
  - imap_metadata_transaction_finish
  - imap_metadata_transaction_commit
  - imap_metadata_transaction_rollback
  - imap_metadata_transaction_get_last_error
  source_file: /src/dovecot/src/lib-imap-storage/imap-metadata.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: '*trans'
        type: struct mailbox_transaction_context
      - name: error
        type: enum mail_error
      - name: '*error_string'
        type: char
      - name: server
        type: bool
      - name: validated_only
        type: bool
      item_type: struct
      name: imap_metadata_transaction
      pos:
        line_end: 16
        line_start: 7
        source_file: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    - fields:
      - name: '*iter'
        type: struct mailbox_attribute_iter
      item_type: struct
      name: imap_metadata_iter
      pos:
        line_end: 183
        line_start: 181
        source_file: /src/dovecot/src/lib-imap-storage/imap-metadata.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: struct istream
      - name: size
        type: uoff_t
      - name: size_field
        type: enum mail_fetch_field
      - name: binary_decoded_input_has_nuls
        type: bool
      item_type: struct
      name: imap_msgpart_open_result
      pos:
        line_end: 17
        line_start: 7
        source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-storage/imap-metadata.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_METADATA_PRIVATE_PREFIX
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-imap-storage/imap-metadata.h
      type_or_value: '"/private"'
    - item_type: preproc_def
      name: IMAP_METADATA_SHARED_PREFIX
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/lib-imap-storage/imap-metadata.h
      type_or_value: '"/shared"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_msgpart_type
  - imap_msgpart_full
  - imap_msgpart_header
  - imap_msgpart_body
  - imap_msgpart_find
  - imap_msgpart_get_header_fields
  - imap_msgpart_parse_header_fields
  - imap_msgpart_parse
  - imap_msgpart_free
  - imap_msgpart_contains_body
  - imap_msgpart_set_decode_to_binary
  - imap_msgpart_set_partial
  - imap_msgpart_get_partial_offset
  - imap_msgpart_get_partial_size
  - imap_msgpart_get_fetch_data
  - imap_msgpart_get_wanted_headers
  - imap_msgpart_get_partial_header
  - imap_msgpart_crlf_seek
  - imap_msgpart_get_partial
  - imap_msgpart_find_part
  - imap_msgpart_open_normal
  - imap_msgpart_open
  - imap_msgpart_size
  - imap_msgpart_parse_bodystructure
  - imap_msgpart_vsizes_to_binary
  - imap_msgpart_bodypartstructure
  - imap_msgpart_close_mailbox
  source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
  types:
    enum:
    - enumerators:
      - name: FETCH_FULL
      - name: FETCH_HEADER_FIELDS
      - name: FETCH_MIME_BODY
      - name: FETCH_MIME
      - name: FETCH_HEADER
      - name: FETCH_HEADER_FIELDS_NOT
      - name: FETCH_BODY
      item_type: enum
      name: fetch_type
      pos:
        line_end: 29
        line_start: 21
        source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*section_number'
        type: char
      - name: fetch_type
        type: enum fetch_type
      - name: wanted_fields
        type: enum mail_fetch_field
      - name: '*header_ctx'
        type: struct mailbox_header_lookup_ctx
      - name: '*const *headers'
        type: char
      - name: partial_offset
        type: uoff_t
      - name: decode_cte_to_binary
        type: bool
      item_type: struct
      name: imap_msgpart
      pos:
        line_end: 48
        line_start: 31
        source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    - fields:
      - name: physical_pos
        type: uoff_t
      - name: mime_hdr_size
        type: struct message_size
      - name: mime_body_size
        type: struct message_size
      item_type: struct
      name: imap_msgpart_open_ctx
      pos:
        line_end: 55
        line_start: 50
        source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-storage/imap-msgpart-url.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dns_tolower
  source_file: /src/dovecot/src/lib-dns/dns-util.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNS_UTIL_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-dns/dns-util.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - strchr_ba
  - dns_ncompare
  - dns_compare
  - dns_compare_labels
  - dns_match_wildcard
  source_file: /src/dovecot/src/lib-dns/dns-util.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_dns_compare
  - test_dns_match
  - arr_dns_compare
  - test_dns_sort
  - main
  source_file: /src/dovecot/src/lib-dns/test-dns-util.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*a'
        type: char
      - name: '*b'
        type: char
      - name: res
        type: int
      item_type: struct
      name: "tests[] =\n\t{\n\t\t{ NULL, NULL, 0 },\n\t\t{ NULL, \"\", 1 },\n\t\t{
        \"\", NULL, -1 },\n\t\t{ \"\", \"\", 0 },\n\t\t{ \"a\", \"a\", 0 },\n\t\t{
        \"a\", \"b\", -1 },\n\t\t{ \"b\", \"a\", 1 },\n\t\t{ \"A\", \"A\", 0 },\n\t\t{
        \"A\", \"B\", -1 },\n\t\t{ \"B\", \"A\", 1 },\n\t\t{ \"A\", \"a\", 0 },\n\t\t{
        \"a\", \"B\", -1 },\n\t\t{ \"B\", \"a\", 1 },\n\t\t{ \"test.invalid\", \"TeSt.InVaLid\",
        0 },\n\t\t{ \"alphabet.com\", \"alpha.com\", 52 },\n\t\t{ \"com.alphabet\",
        \"com.alpha\", 98 },\n\t\t{ \"com.com\", \"com.comcom\", -99 },\n\t}"
      pos:
        line_end: 13
        line_start: 9
        source_file: /src/dovecot/src/lib-dns/test-dns-util.c
    - fields:
      - name: '*name'
        type: char
      - name: '*mask'
        type: char
      - name: res
        type: int
      item_type: struct
      name: "tests[] =\n\t{\n\t\t{ \"\", \"\", 0 },\n\t\t{ \"\", \"*\", 0 },\n\t\t{
        \"*\", \"\", -1 },\n\t\t{ \"TeSt.InVaLid\", \"test.invalid\", 0 },\n\t\t{
        \"contoso.com\", \"test.invalid\", -1 },\n\t\t{ \"test.invalid\", \"test.unvalid\",
        -1 },\n\t\t{ \"name.test.invalid\", \"*.test.invalid\", 0 },\n\t\t{ \"real.name.test.invalid\",
        \"*.test.invalid\", -1 },\n\t\t{ \"real.name.test.invalid\", \"*.*.test.invalid\",
        0 },\n\t\t{ \"name.test.invalid\", \"*name*.test.invalid\", -1 },\n\t\t{ \"name.invalid\",
        \"name.*\", -1 },\n\t}"
      pos:
        line_end: 50
        line_start: 46
        source_file: /src/dovecot/src/lib-dns/test-dns-util.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lmtp/lmtp-settings.h
  types:
    enum:
    - enumerators:
      - name: LMTP_HDR_DELIVERY_ADDRESS_NONE
      - name: LMTP_HDR_DELIVERY_ADDRESS_FINAL
      - name: LMTP_HDR_DELIVERY_ADDRESS_ORIGINAL
      item_type: enum
      name: lmtp_hdr_delivery_address
      pos:
        line_end: 12
        line_start: 8
        source_file: /src/dovecot/src/lmtp/lmtp-settings.h
    - enumerators:
      - name: LMTP_WORKAROUND_WHITESPACE_BEFORE_PATH
        value: BIT(0)
      - name: LMTP_WORKAROUND_MAILBOX_FOR_PATH
        value: BIT(1)
      item_type: enum
      name: lmtp_client_workarounds
      pos:
        line_end: 17
        line_start: 14
        source_file: /src/dovecot/src/lmtp/lmtp-settings.h
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: mail_max_lock_timeout
        type: unsigned int
      item_type: struct
      name: lmtp_pre_mail_settings
      pos:
        line_end: 23
        line_start: 20
        source_file: /src/dovecot/src/lmtp/lmtp-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: lmtp_proxy
        type: bool
      - name: lmtp_save_to_detail_mailbox
        type: bool
      - name: lmtp_rcpt_check_quota
        type: bool
      - name: lmtp_add_received_header
        type: bool
      - name: lmtp_verbose_replies
        type: bool
      - name: mail_utf8_extensions
        type: bool
      - name: lmtp_user_concurrency_limit
        type: unsigned int
      - name: '*lmtp_hdr_delivery_address'
        type: char
      - name: '*lmtp_rawlog_dir'
        type: char
      - name: '*lmtp_proxy_rawlog_dir'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*login_greeting'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*mail_plugin_dir'
        type: char
      - name: parsed_lmtp_hdr_delivery_address
        type: enum lmtp_hdr_delivery_address
      - name: parsed_workarounds
        type: enum lmtp_client_workarounds
      item_type: struct
      name: lmtp_settings
      pos:
        line_end: 49
        line_start: 25
        source_file: /src/dovecot/src/lmtp/lmtp-settings.h
    typedefs: []
    union: []
- function_names:
  - lmtp_local_init
  - lmtp_local_deinit
  - lmtp_local_rcpt_anvil_disconnect
  - lmtp_local_rcpt_destroy
  - lmtp_local_rcpt_reply_overquota
  - lmtp_local_rcpt_fail_all
  - lmtp_local_rcpt_check_quota
  - lmtp_local_rcpt_approved
  - lmtp_local_rcpt_anvil_finish
  - lmtp_local_rcpt_anvil_cb
  - lmtp_local_rcpt
  - lmtp_local_add_headers
  - lmtp_local_deliver
  - lmtp_local_default_do_deliver
  - lmtp_local_default_deliver
  - lmtp_local_deliver_to_rcpts
  - lmtp_local_open_raw_mail
  - lmtp_local_data
  source_file: /src/dovecot/src/lmtp/lmtp-local.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*rcpt'
        type: struct lmtp_recipient
      - name: '*service_user'
        type: struct mail_storage_service_user
      - name: '*anvil_query'
        type: struct anvil_query
      - name: anvil_conn_guid
        type: guid_128_t
      - name: '*duplicate'
        type: struct lmtp_local_recipient
      - name: '*lda_set'
        type: struct lda_settings
      - name: anvil_connect_sent
        type: bool
      item_type: struct
      name: lmtp_local_recipient
      pos:
        line_end: 38
        line_start: 27
        source_file: /src/dovecot/src/lmtp/lmtp-local.c
    - fields:
      - name: '*client'
        type: struct client
      - name: '*raw_mail'
        type: struct mail
      - name: '*rcpt_user'
        type: struct mail_user
      - name: stats
        type: struct smtp_server_stats
      item_type: struct
      name: lmtp_local
      pos:
        line_end: 49
        line_start: 40
        source_file: /src/dovecot/src/lmtp/lmtp-local.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lmtp/lmtp-commands.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lmtp/lmtp-proxy.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LMTP_PROXY_DEFAULT_TTL
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.h
      type_or_value: '5'
    - item_type: preproc_def
      name: LMTP_PROXY_DEFAULT_PORT
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.h
      type_or_value: '24'
    - item_type: preproc_def
      name: CLIENT_TRANSPORT_TLS
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.h
      type_or_value: '"TLS"'
    - item_type: preproc_def
      name: CLIENT_TRANSPORT_INSECURE
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.h
      type_or_value: '"insecure"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - IS_STANDALONE
  - lmtp_client_created_hook_set
  - lmtp_anvil_init
  - client_connected
  - drop_privileges
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/lmtp/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNS_CLIENT_SOCKET_PATH
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lmtp/main.c
      type_or_value: '"dns-client"'
    - item_type: preproc_def
      name: LMTP_MASTER_FIRST_LISTEN_FD
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lmtp/main.c
      type_or_value: '3'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lmtp/lmtp-local.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lmtp_recipient_create
  - lmtp_recipient_find_duplicate
  source_file: /src/dovecot/src/lmtp/lmtp-recipient.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lmtp/lmtp-recipient.h
  types:
    enum:
    - enumerators:
      - name: LMTP_RECIPIENT_TYPE_LOCAL
      - name: LMTP_RECIPIENT_TYPE_PROXY
      item_type: enum
      name: lmtp_recipient_type
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lmtp/lmtp-recipient.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*client'
        type: struct client
      - name: '*rcpt'
        type: struct smtp_server_recipient
      - name: '*username'
        type: char
      - name: delim
        type: char
      - name: type
        type: enum lmtp_recipient_type
      - name: '*backend_context'
        type: void
      - name: '*session_id'
        type: char
      - name: '*const *forward_fields'
        type: char
      item_type: struct
      name: lmtp_recipient
      pos:
        line_end: 30
        line_start: 15
        source_file: /src/dovecot/src/lmtp/lmtp-recipient.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: lmtp_recipient_module_register
      pos:
        line_end: 34
        line_start: 32
        source_file: /src/dovecot/src/lmtp/lmtp-recipient.h
    typedefs: []
    union:
    - fields:
      - name: '*reg'
        type: struct lmtp_recipient_module_register
      item_type: union
      name: lmtp_recipient_module_context
      pos:
        line_end: 38
        line_start: 36
        source_file: /src/dovecot/src/lmtp/lmtp-recipient.h
- function_names: []
  source_file: /src/dovecot/src/lmtp/lmtp-client.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*src_mail'
        type: struct mail
      - name: '*session_id'
        type: char
      - name: delivery_time_started
        type: struct timeval
      - name: '*rcpt_user'
        type: struct mail_user
      - name: '*rcpt_default_mailbox'
        type: char
      - name: '*mail_set'
        type: struct mail_storage_settings
      - name: '*smtp_set'
        type: struct smtp_submit_settings
      - name: '*session'
        type: struct mail_deliver_session
      item_type: struct
      name: lmtp_local_deliver_context
      pos:
        line_end: 25
        line_start: 13
        source_file: /src/dovecot/src/lmtp/lmtp-client.h
    - fields:
      - name: state
        type: enum smtp_server_state
      - name: '*args'
        type: char
      - name: session_id_seq
        type: unsigned int
      - name: '*data_input'
        type: struct istream
      - name: data_size
        type: uoff_t
      - name: data_end_timeval
        type: struct timeval
      - name: '*mail_data_output'
        type: struct ostream
      - name: '*added_headers_local'
        type: char
      - name: '*added_headers_proxy'
        type: char
      item_type: struct
      name: client_state
      pos:
        line_end: 41
        line_start: 27
        source_file: /src/dovecot/src/lmtp/lmtp-client.h
    - fields:
      - name: (*destroy)(struct client *client)
        type: void
      - name: "(*trans_start)(struct client *client,\n\t\t\t    struct smtp_server_transaction
          *trans)"
        type: void
      - name: "(*trans_free)(struct client *client,\n\t\t\t   struct smtp_server_transaction
          *trans)"
        type: void
      - name: "(*cmd_mail)(struct client *client, struct smtp_server_cmd_ctx *cmd,\n\t\t\tstruct
          smtp_server_cmd_mail *data)"
        type: int
      - name: "(*cmd_rcpt)(struct client *client, struct smtp_server_cmd_ctx *cmd,\n\t\t\tstruct
          lmtp_recipient *lrcpt)"
        type: int
      - name: "(*cmd_data)(struct client *client,\n\t\t\tstruct smtp_server_cmd_ctx
          *cmd,\n\t\t\tstruct smtp_server_transaction *trans,\n\t\t\tstruct istream
          *data_input, uoff_t data_size)"
        type: int
      - name: "(*local_deliver)(struct client *client,\n\t\t\t     struct lmtp_recipient
          *lrcpt,\n\t\t\t     struct smtp_server_cmd_ctx *cmd,\n\t\t\t     struct
          smtp_server_transaction *trans,\n\t\t\t     struct lmtp_local_deliver_context
          *lldctx)"
        type: int
      item_type: struct
      name: lmtp_client_vfuncs
      pos:
        line_end: 65
        line_start: 43
        source_file: /src/dovecot/src/lmtp/lmtp-client.h
    - fields:
      - name: '*prev'
        type: struct client
      - name: refcount
        type: int
      - name: pool
        type: pool_t
      - name: v
        type: struct lmtp_client_vfuncs
      - name: '*event'
        type: struct event
      - name: '*set_instance'
        type: struct settings_instance
      - name: '*lda_set'
        type: struct lda_settings
      - name: '*lmtp_set'
        type: struct lmtp_settings
      - name: '*conn'
        type: struct smtp_server_connection
      - name: remote_ip
        type: struct ip_addr
      - name: remote_port
        type: in_port_t
      - name: '*local_name'
        type: char
      - name: '*raw_mail_user'
        type: struct mail_user
      - name: '*my_domain'
        type: char
      - name: state_pool
        type: pool_t
      - name: state
        type: struct client_state
      - name: '*dot_input'
        type: struct istream
      - name: '*local'
        type: struct lmtp_local
      - name: '*proxy'
        type: struct lmtp_proxy
      - name: disconnected
        type: bool
      - name: destroyed
        type: bool
      - name: end_client_tls_secured
        type: bool
      - name: end_client_tls_secured_set
        type: bool
      item_type: struct
      name: client
      pos:
        line_end: 101
        line_start: 67
        source_file: /src/dovecot/src/lmtp/lmtp-client.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: lmtp_module_register
      pos:
        line_end: 105
        line_start: 103
        source_file: /src/dovecot/src/lmtp/lmtp-client.h
    typedefs: []
    union:
    - fields:
      - name: super
        type: struct lmtp_client_vfuncs
      - name: '*reg'
        type: struct lmtp_module_register
      item_type: union
      name: lmtp_module_context
      pos:
        line_end: 110
        line_start: 107
        source_file: /src/dovecot/src/lmtp/lmtp-client.h
- function_names: []
  source_file: /src/dovecot/src/lmtp/lmtp-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LMTP_RCPT_FORWARD_CAPABILITY
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lmtp/lmtp-common.h
      type_or_value: '"XRCPTFORWARD"'
    - item_type: preproc_def
      name: LMTP_RCPT_FORWARD_PARAMETER
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lmtp/lmtp-common.h
      type_or_value: '"XRCPTFORWARD"'
    structs: []
    typedefs:
    - item_type: typedef
      name: lmtp_client_created_func_t(struct client **client)
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/dovecot/src/lmtp/lmtp-common.h
      type: void
    union: []
- function_names:
  - lmtp_proxy_init
  - lmtp_proxy_connection_deinit
  - lmtp_proxy_deinit
  - lmtp_proxy_mail_cb
  - lmtp_proxy_connection_finish
  - lmtp_proxy_connection_has_rcpt_forward
  - lmtp_proxy_get_connection
  - lmtp_proxy_handle_connection_error
  - lmtp_proxy_handle_reply
  - lmtp_proxy_rcpt_destroy
  - lmtp_proxy_rcpt_parse_fields
  - lmtp_proxy_rcpt_get_redirect_path
  - lmtp_proxy_rcpt_have_connected
  - lmtp_proxy_is_ourself
  - lmtp_proxy_rcpt_get_connection
  - lmtp_proxy_rcpt_parse_redirect
  - lmtp_proxy_rcpt_redirect_finish
  - lmtp_proxy_rcpt_init_auth_user_info
  - lmtp_proxy_rcpt_redirect_relookup
  - lmtp_proxy_rcpt_redirect
  - lmtp_proxy_rcpt_approved
  - lmtp_proxy_rcpt_cb
  - lmtp_proxy_rcpt_login_cb
  - lmtp_proxy_rcpt_handle_not_proxied
  - lmtp_proxy_rcpt
  - lmtp_proxy_data_cb
  - lmtp_proxy_data_dummy_cb
  - lmtp_proxy_data
  source_file: /src/dovecot/src/lmtp/lmtp-proxy.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LMTP_MAX_REPLY_SIZE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.c
      type_or_value: '4096'
    - item_type: preproc_def
      name: LMTP_PROXY_DEFAULT_TIMEOUT_MSECS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.c
      type_or_value: (1000*125)
    structs:
    - fields:
      - name: ip
        type: struct ip_addr
      - name: port
        type: in_port_t
      item_type: struct
      name: lmtp_proxy_redirect
      pos:
        line_end: 32
        line_start: 29
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.c
    - fields:
      - name: set
        type: struct auth_proxy_settings
      - name: protocol
        type: enum smtp_protocol
      - name: params
        type: struct smtp_params_rcpt
      item_type: struct
      name: lmtp_proxy_rcpt_settings
      pos:
        line_end: 38
        line_start: 34
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.c
    - fields:
      - name: '*rcpt'
        type: struct lmtp_recipient
      - name: '*conn'
        type: struct lmtp_proxy_connection
      - name: '*address'
        type: struct smtp_address
      - name: '*auth_forward_fields'
        type: unsigned char
      - name: auth_forward_fields_size
        type: size_t
      - name: proxy_ttl
        type: unsigned int
      - name: rcpt_to_failed
        type: bool
      - name: data_reply_received
        type: bool
      - name: nologin
        type: bool
      - name: proxy_redirect_reauth
        type: bool
      item_type: struct
      name: lmtp_proxy_recipient
      pos:
        line_end: 56
        line_start: 40
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.c
    - fields:
      - name: '*proxy'
        type: struct lmtp_proxy
      - name: set
        type: struct lmtp_proxy_rcpt_settings
      - name: '*host'
        type: char
      - name: '*lmtp_conn'
        type: struct smtp_client_connection
      - name: '*lmtp_trans'
        type: struct smtp_client_transaction
      - name: '*data_input'
        type: struct istream
      - name: '*to'
        type: struct timeout
      - name: finished
        type: bool
      - name: failed
        type: bool
      item_type: struct
      name: lmtp_proxy_connection
      pos:
        line_end: 70
        line_start: 58
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.c
    - fields:
      - name: '*client'
        type: struct client
      - name: '*trans'
        type: struct smtp_server_transaction
      - name: '*lmtp_client'
        type: struct smtp_client
      - name: next_data_reply_idx
        type: unsigned int
      - name: '*data_input'
        type: struct istream
      - name: max_timeout_msecs
        type: unsigned int
      - name: initial_ttl
        type: unsigned int
      - name: proxy_session_seq
        type: unsigned int
      - name: finished
        type: bool
      item_type: struct
      name: lmtp_proxy
      pos:
        line_end: 90
        line_start: 72
        source_file: /src/dovecot/src/lmtp/lmtp-proxy.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - lmtp_settings_parse_workarounds
  - lmtp_settings_check
  source_file: /src/dovecot/src/lmtp/lmtp-settings.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: num
        type: enum lmtp_client_workarounds
      item_type: struct
      name: lmtp_client_workaround_list
      pos:
        line_end: 147
        line_start: 144
        source_file: /src/dovecot/src/lmtp/lmtp-settings.c
    typedefs: []
    union: []
- function_names:
  - client_remote_id
  - refresh_proctitle
  - client_load_modules
  - client_read_settings
  - client_create
  - client_state_reset
  - client_ref
  - client_unref
  - client_destroy
  - client_default_destroy
  - client_connection_trans_start
  - client_default_trans_start
  - client_connection_trans_free
  - client_default_trans_free
  - client_connection_state_changed
  - client_update_data_state
  - client_connection_proxy_data_updated
  - client_connection_tls_sni_callback
  - client_connection_disconnect
  - client_connection_free
  - client_connection_is_trusted
  - clients_destroy
  source_file: /src/dovecot/src/lmtp/lmtp-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLIENT_IDLE_TIMEOUT_MSECS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/lmtp/lmtp-client.c
      type_or_value: (1000*60*5)
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_mail
  - client_default_cmd_mail
  - cmd_rcpt_handle_forward_fields
  - cmd_rcpt
  - client_default_cmd_rcpt
  - cmd_data_create_added_headers
  - cmd_data_finish
  - cmd_data_continue
  - cmd_data_begin
  - client_default_cmd_data
  source_file: /src/dovecot/src/lmtp/lmtp-commands.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - pgsql_notice_processor
  - driver_pgsql_set_state
  - driver_pgsql_next_callback
  - driver_pgsql_stop_io
  - driver_pgsql_close
  - last_error
  - connect_callback
  - driver_pgsql_connect_timeout
  - driver_pgsql_connect
  - driver_pgsql_disconnect
  - driver_pgsql_free
  - driver_pgsql_get_flags
  - driver_pgsql_db_cache_find
  - driver_pgsql_init_from_set
  - driver_pgsql_init_v
  - driver_pgsql_deinit_v
  - driver_pgsql_set_idle
  - consume_results
  - driver_pgsql_result_free
  - result_finish
  - get_result
  - flush_callback
  - query_timeout
  - do_query
  - driver_pgsql_escape_string
  - exec_callback
  - driver_pgsql_exec
  - driver_pgsql_query
  - pgsql_query_s_callback
  - driver_pgsql_sync_init
  - driver_pgsql_sync_deinit
  - driver_pgsql_sync_query
  - driver_pgsql_query_s
  - driver_pgsql_result_next_row
  - driver_pgsql_result_fetch_fields
  - driver_pgsql_result_get_fields_count
  - driver_pgsql_result_get_field_name
  - driver_pgsql_result_find_field
  - driver_pgsql_result_get_field_value
  - driver_pgsql_result_get_field_value_binary
  - driver_pgsql_result_find_field_value
  - driver_pgsql_result_get_values
  - driver_pgsql_result_get_error
  - driver_pgsql_transaction_begin
  - driver_pgsql_transaction_free
  - transaction_commit_callback
  - transaction_send_next
  - transaction_commit_error_callback
  - transaction_begin_callback
  - transaction_update_callback
  - transaction_trans_query_callback
  - driver_pgsql_transaction_commit
  - commit_multi_fail
  - driver_pgsql_transaction_commit_multi
  - driver_pgsql_try_commit_s
  - driver_pgsql_transaction_commit_s
  - driver_pgsql_transaction_rollback
  - driver_pgsql_update
  - driver_pgsql_escape_blob
  - driver_pgsql_have_work
  - driver_pgsql_wait
  - driver_pgsql_init
  - driver_pgsql_deinit
  source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PGSQL_DNS_WARN_MSECS
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
      type_or_value: '500'
    - item_type: preproc_def
      name: PGSQL_SQLPOOL_SET_NAME
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
      type_or_value: '"pgsql"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: connection_limit
        type: unsigned int
      - name: '*host'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: pgsql_settings
      pos:
        line_end: 29
        line_start: 21
        source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
    - fields:
      - name: api
        type: struct sql_db
      - name: '*set'
        type: struct pgsql_settings
      - name: '*pg'
        type: PGconn
      - name: '*io'
        type: struct io
      - name: '*to_connect'
        type: struct timeout
      - name: io_dir
        type: enum io_condition
      - name: '*pending_results'
        type: struct pgsql_result
      - name: '*cur_result'
        type: struct pgsql_result
      - name: '*ioloop'
        type: struct ioloop
      - name: '*sync_result'
        type: struct sql_result
      - name: (*next_callback)(void *)
        type: bool
      - name: '*next_context'
        type: void
      - name: '*error'
        type: char
      - name: '*connect_state'
        type: char
      - name: fatal_error
        type: bool
      item_type: struct
      name: pgsql_db
      pos:
        line_end: 89
        line_start: 67
        source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
    - fields:
      - name: '*value'
        type: unsigned char
      - name: size
        type: size_t
      item_type: struct
      name: pgsql_binary_value
      pos:
        line_end: 94
        line_start: 91
        source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
    - fields:
      - name: api
        type: struct sql_result
      - name: '*prev'
        type: struct pgsql_result
      - name: '*pgres'
        type: PGresult
      - name: '*to'
        type: struct timeout
      - name: rownum
        type: unsigned int
      - name: fields_count
        type: unsigned int
      - name: '**fields'
        type: char
      - name: '**values'
        type: char
      - name: '*query'
        type: char
      - name: '*callback'
        type: sql_query_callback_t
      - name: '*context'
        type: void
      - name: timeout
        type: bool
      item_type: struct
      name: pgsql_result
      pos:
        line_end: 116
        line_start: 96
        source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
    - fields:
      - name: ctx
        type: struct sql_transaction_context
      - name: refcount
        type: int
      - name: '*callback'
        type: sql_commit_callback_t
      - name: '*context'
        type: void
      - name: query_pool
        type: pool_t
      - name: '*error'
        type: char
      - name: failed
        type: bool
      item_type: struct
      name: pgsql_transaction_context
      pos:
        line_end: 129
        line_start: 118
        source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
    - fields:
      - name: '*db'
        type: struct sql_db
      - name: '*set'
        type: struct pgsql_settings
      item_type: struct
      name: pgsql_db_cache
      pos:
        line_end: 136
        line_start: 131
        source_file: /src/dovecot/src/lib-sql/driver-pgsql.c
    typedefs: []
    union: []
- function_names:
  - sql_driver_test_register
  - sql_driver_test_unregister
  - driver_test_init
  - driver_test_mysql_init
  - driver_test_cassandra_init
  - driver_test_sqlite_init
  - driver_test_deinit
  - driver_test_connect
  - driver_test_disconnect
  - driver_test_mysql_escape_string
  - driver_test_escape_string
  - driver_test_exec
  - driver_test_query
  - driver_test_query_s
  - driver_test_transaction_begin
  - driver_test_transaction_commit
  - driver_test_transaction_commit_s
  - driver_test_transaction_rollback
  - driver_test_update
  - driver_test_mysql_escape_blob
  - driver_test_escape_blob
  - driver_test_result_free
  - driver_test_result_next_row
  - driver_test_result_get_fields_count
  - driver_test_result_get_field_name
  - driver_test_result_find_field
  - driver_test_result_get_field_value
  - driver_test_result_get_field_value_binary
  - driver_test_result_find_field_value
  - driver_test_result_get_values
  - driver_test_result_get_error
  - sql_driver_test_add_expected_result
  - sql_driver_test_clear_expected_results
  source_file: /src/dovecot/src/lib-sql/driver-test.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: api
        type: struct sql_db
      - name: pool
        type: pool_t
      - name: '*error'
        type: char
      - name: failed
        type: bool
      item_type: struct
      name: test_sql_db
      pos:
        line_end: 18
        line_start: 11
        source_file: /src/dovecot/src/lib-sql/driver-test.c
    - fields:
      - name: api
        type: struct sql_result
      - name: '*result'
        type: struct test_driver_result
      - name: '*error'
        type: char
      item_type: struct
      name: test_sql_result
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/dovecot/src/lib-sql/driver-test.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-sql/driver-test.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DRIVER_TEST_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-sql/driver-test.h
      type_or_value: '1'
    structs:
    - fields:
      - name: rows
        type: size_t
      - name: '*const *col_names'
        type: char
      - name: '***row_data'
        type: char
      item_type: struct
      name: test_driver_result_set
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/lib-sql/driver-test.h
    - fields:
      - name: nqueries
        type: size_t
      - name: cur
        type: size_t
      - name: affected_rows
        type: unsigned int
      - name: '*const *queries'
        type: char
      - name: '*result'
        type: struct test_driver_result_set
      item_type: struct
      name: test_driver_result
      pos:
        line_end: 18
        line_start: 9
        source_file: /src/dovecot/src/lib-sql/driver-test.h
    typedefs: []
    union: []
- function_names:
  - DEF
  - sql_drivers_init_without_drivers
  - sql_drivers_deinit_without_drivers
  - sql_drivers_init
  - sql_drivers_deinit
  - sql_driver_lookup
  - sql_driver_register
  - sql_driver_unregister
  - sql_init_auto
  - sql_init_common
  - sql_ref
  - default_sql_prepared_statement_deinit
  - sql_prepared_statements_free
  - sql_unref
  - sql_get_flags
  - sql_connect
  - sql_call_delayed_callbacks
  - sql_disconnect
  - sql_escape_string
  - sql_escape_blob
  - sql_exec
  - sql_query_delayed_callback
  - sql_query
  - sql_query_s
  - default_sql_prepared_statement_init
  - default_sql_statement_init_prepared
  - sql_statement_get_log_query
  - sql_statement_get_query
  - default_sql_statement_query
  - default_sql_statement_query_s
  - default_sql_update_stmt
  - sql_prepared_statement_init
  - sql_prepared_statement_unref
  - sql_statement_init_fields
  - sql_statement_init
  - sql_statement_init_prepared
  - sql_statement_abort
  - sql_statement_set_timestamp
  - sql_statement_set_no_log_expanded_values
  - sql_statement_bind_str
  - sql_statement_bind_binary
  - sql_statement_bind_int64
  - sql_statement_bind_double
  - sql_statement_bind_uuid
  - sql_statement_query
  - sql_statement_query_s
  - sql_result_ref
  - sql_result_unref
  - sql_field_def_find
  - sql_result_build_map
  - sql_result_setup_fetch
  - sql_result_fetch
  - sql_result_next_row
  - sql_result_more
  - sql_result_more_sync_callback
  - sql_result_more_s
  - sql_result_get_fields_count
  - sql_result_get_field_name
  - sql_result_find_field
  - sql_result_get_field_value
  - sql_result_get_field_value_binary
  - sql_result_find_field_value
  - sql_result_get_values
  - sql_result_get_error
  - sql_result_get_error_type
  - sql_result_not_connected_free
  - sql_result_not_connected_next_row
  - sql_result_not_connected_get_error
  - sql_transaction_begin
  - sql_transaction_set_non_atomic
  - sql_commit_delayed_callback
  - sql_transaction_commit
  - sql_transaction_commit_s
  - sql_transaction_rollback
  - sql_update
  - sql_update_stmt
  - sql_update_get_rows
  - sql_update_stmt_get_rows
  - sql_db_set_state
  - sql_transaction_add_query
  - sql_connection_log_finished
  - sql_query_finished_event
  - sql_transaction_finished_event
  - sql_wait
  source_file: /src/dovecot/src/lib-sql/sql-api.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*prev'
        type: struct sql_query_result_delayed
      - name: '*db'
        type: struct sql_db
      - name: '*to'
        type: struct timeout
      - name: '*result'
        type: struct sql_result
      - name: '*callback'
        type: sql_query_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: sql_query_result_delayed
      pos:
        line_end: 24
        line_start: 15
        source_file: /src/dovecot/src/lib-sql/sql-api.c
    - fields:
      - name: '*prev'
        type: struct sql_commit_result_delayed
      - name: '*db'
        type: struct sql_db
      - name: '*to'
        type: struct timeout
      - name: '*error'
        type: char
      - name: '*callback'
        type: sql_commit_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: sql_commit_result_delayed
      pos:
        line_end: 35
        line_start: 26
        source_file: /src/dovecot/src/lib-sql/sql-api.c
    typedefs: []
    union: []
- function_names:
  - IS_CONNECTED
  - DEF
  - DEF_SECS
  - DEF_MSECS
  - log_one_line
  - driver_cassandra_log_handler
  - driver_cassandra_init_log
  - consistency_parse
  - log_level_parse
  - cassandra_settings_check
  - driver_cassandra_set_state
  - driver_cassandra_close
  - driver_cassandra_log_error
  - cassandra_callback_detach
  - cassandra_callback_run
  - driver_cassandra_input_id
  - driver_cassandra_input
  - driver_cassandra_set_callback
  - connect_callback
  - driver_cassandra_table_prefix
  - driver_cassandra_connect
  - driver_cassandra_disconnect
  - driver_cassandra_escape_string
  - driver_cassandra_get_metrics_json
  - ADD_UINT64
  - ADD_DOUBLE
  - driver_cassandra_metrics_write
  - driver_cassandra_free
  - driver_cassandra_init_ssl
  - driver_cassandra_db_cache_find
  - driver_cassandra_init_from_set
  - driver_cassandra_init_v
  - driver_cassandra_deinit_v
  - driver_cassandra_result_unlink
  - driver_cassandra_log_result
  - driver_cassandra_result_free
  - result_finish
  - query_resend_with_fallback
  - counters_inc_error
  - query_error_want_fallback
  - driver_cassandra_error_is_uncertain
  - get_consistency_error
  - query_callback
  - driver_cassandra_init_statement
  - driver_cassandra_result_send_query
  - driver_cassandra_want_fallback_query
  - cassandra_result_connect_and_send_query
  - driver_cassandra_send_queries
  - exec_callback
  - driver_cassandra_result_init
  - driver_cassandra_query_full
  - driver_cassandra_exec
  - driver_cassandra_query
  - cassandra_query_s_callback
  - driver_cassandra_sync_init
  - driver_cassandra_sync_deinit
  - driver_cassandra_sync_query
  - driver_cassandra_query_s
  - driver_cassandra_get_value
  - driver_cassandra_result_next_page
  - driver_cassandra_result_next_row
  - driver_cassandra_result_more
  - driver_cassandra_result_get_fields_count
  - driver_cassandra_result_get_field_name
  - driver_cassandra_result_find_field
  - driver_cassandra_result_get_field_value
  - driver_cassandra_result_get_field_value_binary
  - driver_cassandra_result_find_field_value
  - driver_cassandra_result_get_values
  - driver_cassandra_result_get_error
  - driver_cassandra_transaction_begin
  - cassandra_prepared_statement_remove_pending
  - cassandra_sql_statement_free
  - driver_cassandra_transaction_unref
  - transaction_set_failed
  - transaction_commit_callback
  - cassandra_statement_send_query
  - cassandra_transaction_finish
  - driver_cassandra_transaction_commit
  - driver_cassandra_try_commit_s
  - driver_cassandra_transaction_commit_s
  - driver_cassandra_transaction_rollback
  - driver_cassandra_update_query_type
  - driver_cassandra_update
  - driver_cassandra_escape_blob
  - driver_cassandra_bind_int
  - prepare_finish_arg
  - prepare_finish_statement
  - prepare_finish_pending_statements
  - prepare_callback
  - prepare_start
  - driver_cassandra_prepare_pending
  - driver_cassandra_prepared_statement_init
  - driver_cassandra_prepared_statement_deinit
  - driver_cassandra_statement_init
  - driver_cassandra_statement_init_prepared
  - driver_cassandra_statement_abort
  - driver_cassandra_statement_set_timestamp
  - driver_cassandra_add_pending_arg
  - driver_cassandra_statement_bind_str
  - driver_cassandra_statement_bind_binary
  - driver_cassandra_statement_bind_int64
  - driver_cassandra_statement_bind_double
  - driver_cassandra_statement_bind_uuid
  - driver_cassandra_statement_query
  - driver_cassandra_statement_query_s
  - driver_cassandra_update_stmt
  - driver_cassandra_have_work
  - driver_cassandra_wait
  - driver_cassandra_init
  - driver_cassandra_deinit
  source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
  types:
    enum:
    - enumerators:
      - name: CASSANDRA_COUNTER_TYPE_QUERY_SENT
      - name: CASSANDRA_COUNTER_TYPE_QUERY_RECV_ERR_NO_HOSTS
      - name: CASSANDRA_COUNTER_TYPE_QUERY_RECV_ERR_QUEUE_FULL
      - name: CASSANDRA_COUNTER_TYPE_QUERY_RECV_ERR_CLIENT_TIMEOUT
      - name: CASSANDRA_COUNTER_TYPE_QUERY_RECV_OK
      - name: CASSANDRA_COUNTER_TYPE_QUERY_RECV_ERR_SERVER_TIMEOUT
      - name: CASSANDRA_COUNTER_TYPE_QUERY_RECV_ERR_SERVER_UNAVAILABLE
      - name: CASSANDRA_COUNTER_TYPE_QUERY_RECV_ERR_OTHER
      - name: CASSANDRA_COUNTER_TYPE_QUERY_SLOW
      - name: CASSANDRA_COUNTER_COUNT
      item_type: enum
      name: cassandra_counter_type
      pos:
        line_end: 51
        line_start: 39
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - enumerators:
      - name: CASSANDRA_QUERY_TYPE_READ
      - name: CASSANDRA_QUERY_TYPE_WRITE
      - name: CASSANDRA_QUERY_TYPE_DELETE
      - name: CASSANDRA_QUERY_TYPE_READ_MORE
      - name: CASSANDRA_QUERY_TYPE_COUNT
      item_type: enum
      name: cassandra_query_type
      pos:
        line_end: 72
        line_start: 65
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - enumerators:
      - name: CASSANDRA_RESULT_TYPE_QUERY
      - name: CASSANDRA_RESULT_TYPE_COUNT
      - name: CASSANDRA_RESULT_TYPE_BATCH
      - name: CASSANDRA_RESULT_TYPE_PREPARED
      item_type: enum
      name: cassandra_result_type
      pos:
        line_end: 86
        line_start: 80
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - enumerators:
      - name: CASSANDRA_SQL_ARG_TYPE_STR
      - name: CASSANDRA_SQL_ARG_TYPE_UUID
      - name: CASSANDRA_SQL_ARG_TYPE_INT64
      - name: CASSANDRA_SQL_ARG_TYPE_DOUBLE
      - name: CASSANDRA_SQL_ARG_TYPE_BINARY
      item_type: enum
      name: cassandra_sql_arg_type
      pos:
        line_end: 342
        line_start: 336
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    preproc_defs:
    - item_type: preproc_def
      name: CASSANDRA_FALLBACK_WARN_INTERVAL_SECS
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
      type_or_value: '60'
    - item_type: preproc_def
      name: CASSANDRA_FALLBACK_FIRST_RETRY_MSECS
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
      type_or_value: '50'
    - item_type: preproc_def
      name: CASSANDRA_FALLBACK_MAX_RETRY_MSECS
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
      type_or_value: (1000*60)
    - item_type: preproc_def
      name: CASS_QUERY_DEFAULT_WARN_TIMEOUT_MSECS
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
      type_or_value: (5*1000)
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: port
        type: in_port_t
      - name: '*keyspace'
        type: char
      - name: '*user'
        type: char
      - name: '*password'
        type: char
      - name: '*metrics_path'
        type: char
      - name: '*log_level'
        type: char
      - name: debug_queries
        type: bool
      - name: log_retries
        type: bool
      - name: latency_aware_routing
        type: bool
      - name: '*read_consistency'
        type: char
      - name: '*write_consistency'
        type: char
      - name: '*delete_consistency'
        type: char
      - name: '*read_fallback_consistency'
        type: char
      - name: '*write_fallback_consistency'
        type: char
      - name: '*delete_fallback_consistency'
        type: char
      - name: connect_timeout_msecs
        type: unsigned int
      - name: request_timeout_msecs
        type: unsigned int
      - name: warn_timeout_msecs
        type: unsigned int
      - name: protocol_version
        type: unsigned int
      - name: io_thread_count
        type: unsigned int
      - name: heartbeat_interval_secs
        type: unsigned int
      - name: idle_timeout_secs
        type: unsigned int
      - name: execution_retry_interval_msecs
        type: unsigned int
      - name: execution_retry_times
        type: unsigned int
      - name: page_size
        type: unsigned int
      - name: '*ssl'
        type: char
      - name: parsed_log_level
        type: CassLogLevel
      - name: parsed_read_consistency
        type: CassConsistency
      - name: parsed_write_consistency
        type: CassConsistency
      - name: parsed_delete_consistency
        type: CassConsistency
      - name: parsed_read_fallback_consistency
        type: CassConsistency
      - name: parsed_write_fallback_consistency
        type: CassConsistency
      - name: parsed_delete_fallback_consistency
        type: CassConsistency
      - name: parsed_use_ssl
        type: bool
      - name: parsed_ssl_verify_flags
        type: CassSslVerifyFlags
      item_type: struct
      name: cassandra_settings
      pos:
        line_end: 144
        line_start: 98
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: id
        type: unsigned int
      - name: '*to'
        type: struct timeout
      - name: '*future'
        type: CassFuture
      - name: '*db'
        type: struct cassandra_db
      - name: '*callback'
        type: driver_cassandra_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: cassandra_callback
      pos:
        line_end: 251
        line_start: 244
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: api
        type: struct sql_db
      - name: '*set'
        type: struct cassandra_settings
      - name: '*ssl_set'
        type: struct ssl_settings
      - name: '*table_prefix'
        type: char
      - name: '*cluster'
        type: CassCluster
      - name: '*session'
        type: CassSession
      - name: '*timestamp_gen'
        type: CassTimestampGen
      - name: '*ssl'
        type: CassSsl
      - name: '*default_policy'
        type: CassRetryPolicy
      - name: fd_pipe[2]
        type: int
      - name: '*io_pipe'
        type: struct io
      - name: callback_ids
        type: unsigned int
      - name: '*to_metrics'
        type: struct timeout
      - name: counters[CASSANDRA_COUNTER_COUNT]
        type: uint64_t
      - name: primary_query_last_sent[CASSANDRA_QUERY_TYPE_COUNT]
        type: struct timeval
      - name: last_fallback_warning[CASSANDRA_QUERY_TYPE_COUNT]
        type: time_t
      - name: fallback_failures[CASSANDRA_QUERY_TYPE_COUNT]
        type: unsigned int
      - name: '*ioloop'
        type: struct ioloop
      - name: '*sync_result'
        type: struct sql_result
      - name: '*error'
        type: char
      item_type: struct
      name: cassandra_db
      pos:
        line_end: 286
        line_start: 253
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: api
        type: struct sql_result
      - name: type
        type: enum cassandra_result_type
      - name: '*batch'
        type: CassBatch
      - name: '*statement'
        type: CassStatement
      - name: '*result'
        type: CassResult
      - name: '*iterator'
        type: CassIterator
      - name: '*log_query'
        type: char
      - name: '*error'
        type: char
      - name: consistency
        type: CassConsistency
      - name: error_result_consistency
        type: CassConsistency
      - name: query_type
        type: enum cassandra_query_type
      - name: page0_start_time
        type: struct timeval
      - name: row_count
        type: unsigned int
      - name: timestamp
        type: cass_int64_t
      - name: row_pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: field_sizes
        type: ARRAY
      - name: '*callback'
        type: sql_query_callback_t
      - name: '*context'
        type: void
      - name: query_sent
        type: bool
      - name: finished
        type: bool
      - name: paging_continues
        type: bool
      item_type: struct
      name: cassandra_result
      pos:
        line_end: 317
        line_start: 288
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: ctx
        type: struct sql_transaction_context
      - name: refcount
        type: int
      - name: '*callback'
        type: sql_commit_callback_t
      - name: '*context'
        type: void
      - name: query_type
        type: enum cassandra_query_type
      - name: '*error'
        type: char
      - name: begin_succeeded
        type: bool
      - name: begin_failed
        type: bool
      - name: failed
        type: bool
      - name: query_type_set
        type: bool
      item_type: struct
      name: cassandra_transaction_context
      pos:
        line_end: 334
        line_start: 319
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: column_idx
        type: unsigned int
      - name: type
        type: enum cassandra_sql_arg_type
      - name: '*value_str'
        type: char
      - name: '*value_binary'
        type: unsigned char
      - name: value_binary_size
        type: size_t
      - name: value_int64
        type: int64_t
      - name: value_double
        type: double
      - name: value_uuid
        type: CassUuid
      item_type: struct
      name: cassandra_sql_arg
      pos:
        line_end: 354
        line_start: 344
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: stmt
        type: struct sql_statement
      - name: '*prep'
        type: struct cassandra_sql_prepared_statement
      - name: '*cass_stmt'
        type: CassStatement
      - name: timestamp
        type: cass_int64_t
      - name: '*result'
        type: struct cassandra_result
      - name: '*pending_transaction'
        type: struct cassandra_transaction_context
      item_type: struct
      name: cassandra_sql_statement
      pos:
        line_end: 367
        line_start: 356
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: prep_stmt
        type: struct sql_prepared_statement
      - name: '*prepared'
        type: CassPrepared
      - name: (cassandra_sql_statement)
        type: ARRAY_TYPE
      - name: '*error'
        type: char
      - name: pending
        type: bool
      item_type: struct
      name: cassandra_sql_prepared_statement
      pos:
        line_end: 382
        line_start: 370
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: consistency
        type: CassConsistency
      - name: '*name'
        type: char
      item_type: struct
      name: "cass_consistency_names[] = {\n\t{ CASS_CONSISTENCY_ANY, \"any\" },\n\t{
        CASS_CONSISTENCY_ONE, \"one\" },\n\t{ CASS_CONSISTENCY_TWO, \"two\" },\n\t{
        CASS_CONSISTENCY_THREE, \"three\" },\n\t{ CASS_CONSISTENCY_QUORUM, \"quorum\"
        },\n\t{ CASS_CONSISTENCY_ALL, \"all\" },\n\t{ CASS_CONSISTENCY_LOCAL_QUORUM,
        \"local-quorum\" },\n\t{ CASS_CONSISTENCY_EACH_QUORUM, \"each-quorum\" },\n\t{
        CASS_CONSISTENCY_SERIAL, \"serial\" },\n\t{ CASS_CONSISTENCY_LOCAL_SERIAL,
        \"local-serial\" },\n\t{ CASS_CONSISTENCY_LOCAL_ONE, \"local-one\" }\n}"
      pos:
        line_end: 391
        line_start: 388
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: log_level
        type: CassLogLevel
      - name: '*name'
        type: char
      item_type: struct
      name: "cass_log_level_names[] = {\n\t{ CASS_LOG_CRITICAL, \"critical\" },\n\t{
        CASS_LOG_ERROR, \"error\" },\n\t{ CASS_LOG_WARN, \"warn\" },\n\t{ CASS_LOG_INFO,
        \"info\" },\n\t{ CASS_LOG_DEBUG, \"debug\" },\n\t{ CASS_LOG_TRACE, \"trace\"
        }\n}"
      pos:
        line_end: 408
        line_start: 405
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    - fields:
      - name: '*set_name'
        type: char
      - name: '*set_value'
        type: char
      - name: '*empty_default'
        type: CassConsistency
      - name: '*output'
        type: CassConsistency
      item_type: struct
      name: "consistencies[] = {\n\t\t{ \"read_consistency\", set->read_consistency,
        NULL,\n\t\t  &set->parsed_read_consistency },\n\t\t{ \"write_consistency\",
        set->write_consistency, NULL,\n\t\t  &set->parsed_write_consistency },\n\t\t{
        \"delete_consistency\", set->delete_consistency, NULL,\n\t\t  &set->parsed_delete_consistency
        },\n\t\t/* Parse fallback consistencies after the ones above, so\n\t\t   empty_default
        can access already checked consistency\n\t\t   values. */\n\t\t{ \"read_fallback_consistency\",
        set->read_fallback_consistency,\n\t\t  &set->parsed_read_consistency,\n\t\t
        \ &set->parsed_read_fallback_consistency },\n\t\t{ \"write_fallback_consistency\",
        set->write_fallback_consistency,\n\t\t  &set->parsed_write_consistency,\n\t\t
        \ &set->parsed_write_fallback_consistency },\n\t\t{ \"delete_fallback_consistency\",
        set->delete_fallback_consistency,\n\t\t  &set->parsed_delete_consistency,\n\t\t
        \ &set->parsed_delete_fallback_consistency },\n\t}"
      pos:
        line_end: 543
        line_start: 538
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
    typedefs:
    - item_type: typedef
      name: driver_cassandra_callback_t(CassFuture *future, void *context)
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/dovecot/src/lib-sql/driver-cassandra.c
      type: void
    union: []
- function_names:
  - SQL_DB_IS_READY
  - sql_db_table_prefix
  source_file: /src/dovecot/src/lib-sql/sql-api-private.h
  types:
    enum:
    - enumerators:
      - name: SQL_DB_STATE_DISCONNECTED
      - name: SQL_DB_STATE_BUSY
      - name: SQL_DB_STATE_CONNECTING
      - name: SQL_DB_STATE_IDLE
      item_type: enum
      name: sql_db_state
      pos:
        line_end: 15
        line_start: 6
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    preproc_defs:
    - item_type: preproc_def
      name: SQL_CONNECT_MIN_DELAY
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '1'
    - item_type: preproc_def
      name: SQL_CONNECT_MAX_DELAY
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: (60*30)
    - item_type: preproc_def
      name: SQL_CONNECT_RESET_DELAY
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '15'
    - item_type: preproc_def
      name: SQL_CONNECT_TIMEOUT_SECS
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '5'
    - item_type: preproc_def
      name: SQL_QUERY_TIMEOUT_SECS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '60'
    - item_type: preproc_def
      name: SQL_DEFAULT_CONNECTION_LIMIT
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '5'
    - item_type: preproc_def
      name: SQL_ERRSTR_NOT_CONNECTED
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '"Not connected to database"'
    - item_type: preproc_def
      name: SQL_SLOW_QUERY_MSEC
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '1000'
    - item_type: preproc_def
      name: SQL_QUERY_FINISHED
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '"sql_query_finished"'
    - item_type: preproc_def
      name: SQL_CONNECTION_FINISHED
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '"sql_connection_finished"'
    - item_type: preproc_def
      name: SQL_TRANSACTION_FINISHED
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '"sql_transaction_finished"'
    - item_type: preproc_def
      name: SQL_QUERY_FINISHED_FMT
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '"Finished query ''%s'' in %u msecs"'
    - item_type: preproc_def
      name: SQLPOOL_EVENT_PTR
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
      type_or_value: '"sqlpool_event"'
    structs:
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: sql_db_module_register
      pos:
        line_end: 54
        line_start: 52
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: '*next'
        type: struct sql_transaction_query
      - name: '*trans'
        type: struct sql_transaction_context
      - name: '*query'
        type: char
      - name: '*affected_rows'
        type: unsigned int
      item_type: struct
      name: sql_transaction_query
      pos:
        line_end: 70
        line_start: 64
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: "(*init)(struct event *event, struct sql_db **db_r,\n\t\t    const char
          **error_r)"
        type: int
      - name: (*deinit)(struct sql_db *db)
        type: void
      - name: (*unref)(struct sql_db *db)
        type: void
      - name: (*wait) (struct sql_db *db)
        type: void
      - name: (*get_flags)(struct sql_db *db)
        type: enum sql_db_flags
      - name: (*connect)(struct sql_db *db)
        type: int
      - name: (*disconnect)(struct sql_db *db)
        type: void
      - name: '*(*escape_string)(struct sql_db *db, const char *string)'
        type: char
      - name: (*exec)(struct sql_db *db, const char *query)
        type: void
      - name: "(*query)(struct sql_db *db, const char *query,\n\t\t      sql_query_callback_t
          *callback, void *context)"
        type: void
      - name: '*(*query_s)(struct sql_db *db, const char *query)'
        type: struct sql_result
      - name: '*(*transaction_begin)(struct sql_db *db)'
        type: struct sql_transaction_context
      - name: "(*transaction_commit)(struct sql_transaction_context *ctx,\n\t\t\t\t
          \  sql_commit_callback_t *callback,\n\t\t\t\t   void *context)"
        type: void
      - name: "(*transaction_commit_s)(struct sql_transaction_context *ctx,\n\t\t\t\t
          \   const char **error_r)"
        type: int
      - name: (*transaction_rollback)(struct sql_transaction_context *ctx)
        type: void
      - name: "(*update)(struct sql_transaction_context *ctx, const char *query,\n\t\t
          \      unsigned int *affected_rows)"
        type: void
      - name: "*(*escape_blob)(struct sql_db *db,\n\t\t\t\t   const unsigned char
          *data, size_t size)"
        type: char
      - name: "*\n\t\t(*prepared_statement_init)(struct sql_db *db,\n\t\t\t\t\t   const
          char *query_template)"
        type: struct sql_prepared_statement
      - name: (*prepared_statement_deinit)(struct sql_prepared_statement *prep_stmt)
        type: void
      - name: "*\n\t\t(*statement_init)(struct sql_db *db, const char *query_template)"
        type: struct sql_statement
      - name: "*\n\t\t(*statement_init_prepared)(struct sql_prepared_statement *prep_stmt)"
        type: struct sql_statement
      - name: (*statement_abort)(struct sql_statement *stmt)
        type: void
      - name: "(*statement_set_timestamp)(struct sql_statement *stmt,\n\t\t\t\t\tconst
          struct timespec *ts)"
        type: void
      - name: "(*statement_bind_str)(struct sql_statement *stmt,\n\t\t\t\t   unsigned
          int column_idx, const char *value)"
        type: void
      - name: "(*statement_bind_binary)(struct sql_statement *stmt,\n\t\t\t\t      unsigned
          int column_idx, const void *value,\n\t\t\t\t      size_t value_size)"
        type: void
      - name: "(*statement_bind_int64)(struct sql_statement *stmt,\n\t\t\t\t     unsigned
          int column_idx, int64_t value)"
        type: void
      - name: "(*statement_bind_double)(struct sql_statement *stmt,\n\t\t\t\t      unsigned
          int column_idx, double value)"
        type: void
      - name: "(*statement_bind_uuid)(struct sql_statement *stmt,\n\t\t\t\t    unsigned
          int column_idx, const guid_128_t uuid)"
        type: void
      - name: "(*statement_query)(struct sql_statement *stmt,\n\t\t\t\tsql_query_callback_t
          *callback, void *context)"
        type: void
      - name: '*(*statement_query_s)(struct sql_statement *stmt)'
        type: struct sql_result
      - name: "(*update_stmt)(struct sql_transaction_context *ctx,\n\t\t\t    struct
          sql_statement *stmt,\n\t\t\t    unsigned int *affected_rows)"
        type: void
      - name: '*(*table_prefix)(struct sql_db *db)'
        type: char
      item_type: struct
      name: sql_db_vfuncs
      pos:
        line_end: 142
        line_start: 72
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: '*name'
        type: char
      - name: flags
        type: enum sql_db_flags
      - name: refcount
        type: int
      - name: v
        type: struct sql_db_vfuncs
      - name: "(*state_change_callback)(struct sql_db *db,\n\t\t\t\t      enum sql_db_state
          prev_state,\n\t\t\t\t      void *context)"
        type: void
      - name: '*state_change_context'
        type: void
      - name: '*event'
        type: struct event
      - name: '*query_delayed_list'
        type: struct sql_query_result_delayed
      - name: '*commit_delayed_list'
        type: struct sql_commit_result_delayed
      - name: state
        type: enum sql_db_state
      - name: last_connect_try
        type: time_t
      - name: connect_delay
        type: unsigned int
      - name: connect_failure_count
        type: unsigned int
      - name: '*to_reconnect'
        type: struct timeout
      - name: '*last_connect_error'
        type: char
      - name: succeeded_queries
        type: uint64_t
      - name: failed_queries
        type: uint64_t
      - name: slow_queries
        type: uint64_t
      - name: no_reconnect
        type: bool
      item_type: struct
      name: sql_db
      pos:
        line_end: 179
        line_start: 144
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: (*free)(struct sql_result *result)
        type: void
      - name: (*next_row)(struct sql_result *result)
        type: int
      - name: (*get_fields_count)(struct sql_result *result)
        type: unsigned int
      - name: "*(*get_field_name)(struct sql_result *result,\n\t\t\t\t      unsigned
          int idx)"
        type: char
      - name: (*find_field)(struct sql_result *result, const char *field_name)
        type: int
      - name: "*(*get_field_value)(struct sql_result *result,\n\t\t\t\t       unsigned
          int idx)"
        type: char
      - name: "*\n\t\t(*get_field_value_binary)(struct sql_result *result,\n\t\t\t\t\t
          \ unsigned int idx,\n\t\t\t\t\t  size_t *size_r)"
        type: unsigned char
      - name: "*(*find_field_value)(struct sql_result *result,\n\t\t\t\t\tconst char
          *field_name)"
        type: char
      - name: '*const *(*get_values)(struct sql_result *result)'
        type: char
      - name: '*(*get_error)(struct sql_result *result)'
        type: char
      - name: "(*more)(struct sql_result **result, bool async,\n\t\t     sql_query_callback_t
          *callback, void *context)"
        type: void
      item_type: struct
      name: sql_result_vfuncs
      pos:
        line_end: 203
        line_start: 181
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: '*db'
        type: struct sql_db
      - name: refcount
        type: int
      - name: '*query_template'
        type: char
      item_type: struct
      name: sql_prepared_statement
      pos:
        line_end: 209
        line_start: 205
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: '*db'
        type: struct sql_db
      - name: pool
        type: pool_t
      - name: '*query_template'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: no_log_expanded_values
        type: bool
      item_type: struct
      name: sql_statement
      pos:
        line_end: 221
        line_start: 211
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: type
        type: enum sql_field_type
      - name: offset
        type: size_t
      item_type: struct
      name: sql_field_map
      pos:
        line_end: 226
        line_start: 223
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: v
        type: struct sql_result_vfuncs
      - name: refcount
        type: int
      - name: '*db'
        type: struct sql_db
      - name: '*fields'
        type: struct sql_field_def
      - name: map_size
        type: unsigned int
      - name: '*map'
        type: struct sql_field_map
      - name: '*fetch_dest'
        type: void
      - name: '*event'
        type: struct event
      - name: fetch_dest_size
        type: size_t
      - name: error_type
        type: enum sql_result_error_type
      - name: failed
        type: bool
      - name: failed_try_retry
        type: bool
      - name: callback
        type: bool
      item_type: struct
      name: sql_result
      pos:
        line_end: 245
        line_start: 228
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    - fields:
      - name: '*db'
        type: struct sql_db
      - name: '*event'
        type: struct event
      - name: '*head'
        type: struct sql_transaction_query
      - name: non_atomic
        type: bool
      item_type: struct
      name: sql_transaction_context
      pos:
        line_end: 255
        line_start: 247
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
    typedefs: []
    union:
    - fields:
      - name: '*reg'
        type: struct sql_db_module_register
      item_type: union
      name: sql_db_module_context
      pos:
        line_end: 58
        line_start: 56
        source_file: /src/dovecot/src/lib-sql/sql-api-private.h
- function_names:
  - setup_database
  - test_sql_sqlite
  - main
  source_file: /src/dovecot/src/lib-sql/test-sql-sqlite.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - driver_sqlite_settings_check
  - driver_sqlite_finalize_handle
  - driver_sqlite_finalize_prepared_statements
  - driver_sqlite_reopen_prepared_statements
  - driver_sqlite_disconnect
  - driver_sqlite_get_eacces_error
  - driver_sqlite_connect_error
  - driver_sqlite_set_pragma_synchronous
  - driver_sqlite_connect
  - driver_sqlite_db_cache_find
  - driver_sqlite_init_from_set
  - driver_sqlite_init_v
  - driver_sqlite_deinit_v
  - driver_sqlite_escape_string
  - driver_sqlite_readonly_error
  - driver_sqlite_result_str
  - driver_sqlite_result_log
  - driver_sqlite_statement_init_prepared
  - driver_sqlite_release_prepared_statement
  - driver_sqlite_statement_init
  - driver_sqlite_statement_abort
  - driver_sqlite_exec_query
  - driver_sqlite_exec
  - driver_sqlite_statement_result_prepare
  - driver_sqlite_query_s
  - driver_sqlite_result_free
  - driver_sqlite_result_next_row
  - driver_sqlite_result_get_fields_count
  - driver_sqlite_result_get_field_name
  - driver_sqlite_result_find_field
  - driver_sqlite_result_get_field_value
  - driver_sqlite_result_get_field_value_binary
  - driver_sqlite_result_find_field_value
  - driver_sqlite_result_get_values
  - driver_sqlite_result_get_error
  - driver_sqlite_transaction_exec
  - driver_sqlite_transaction_begin
  - driver_sqlite_transaction_rollback
  - driver_sqlite_transaction_commit_s
  - driver_sqlite_update
  - driver_sqlite_escape_blob
  - driver_sqlite_statement_query_s
  - driver_sqlite_prepared_statement_reopen
  - driver_sqlite_prepared_statement_init
  - driver_sqlite_prepared_statement_deinit
  - driver_sqlite_bind_error
  - driver_sqlite_statement_bind_str
  - driver_sqlite_statement_bind_binary
  - driver_sqlite_statement_bind_int64
  - driver_sqlite_statement_bind_double
  - driver_sqlite_statement_bind_uuid
  - driver_sqlite_update_stmt
  - driver_sqlite_result_error_next_row
  - driver_sqlite_init
  - driver_sqlite_deinit
  source_file: /src/dovecot/src/lib-sql/driver-sqlite.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: api
        type: struct sql_db
      - name: '*sqlite'
        type: sqlite3
      - name: '*set'
        type: struct sqlite_settings
      - name: connect_rc
        type: int
      - name: connect_errno
        type: int
      - name: connected
        type: bool
      item_type: struct
      name: sqlite_db
      pos:
        line_end: 33
        line_start: 25
        source_file: /src/dovecot/src/lib-sql/driver-sqlite.c
    - fields:
      - name: api
        type: struct sql_prepared_statement
      - name: '*handle'
        type: sqlite3_stmt
      - name: '*error'
        type: char
      - name: locked
        type: bool
      item_type: struct
      name: sqlite_prepared_statement
      pos:
        line_end: 41
        line_start: 35
        source_file: /src/dovecot/src/lib-sql/driver-sqlite.c
    - fields:
      - name: api
        type: struct sql_statement
      - name: '*prep_stmt'
        type: struct sqlite_prepared_statement
      - name: '*handle'
        type: sqlite3_stmt
      - name: '*error'
        type: char
      - name: rc
        type: int
      item_type: struct
      name: sqlite_statement
      pos:
        line_end: 49
        line_start: 43
        source_file: /src/dovecot/src/lib-sql/driver-sqlite.c
    - fields:
      - name: api
        type: struct sql_result
      - name: '*stmt'
        type: struct sqlite_statement
      - name: cols
        type: unsigned int
      - name: rc
        type: int
      - name: '*error'
        type: char
      - name: '**row'
        type: char
      item_type: struct
      name: sqlite_result
      pos:
        line_end: 58
        line_start: 51
        source_file: /src/dovecot/src/lib-sql/driver-sqlite.c
    - fields:
      - name: ctx
        type: struct sql_transaction_context
      - name: rc
        type: int
      - name: '*error'
        type: char
      item_type: struct
      name: sqlite_transaction_context
      pos:
        line_end: 64
        line_start: 60
        source_file: /src/dovecot/src/lib-sql/driver-sqlite.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*path'
        type: char
      - name: '*journal_mode'
        type: char
      - name: '*synchronous'
        type: char
      - name: readonly
        type: bool
      - name: parsed_journal_use_wal
        type: bool
      item_type: struct
      name: sqlite_settings
      pos:
        line_end: 77
        line_start: 67
        source_file: /src/dovecot/src/lib-sql/driver-sqlite.c
    typedefs: []
    union: []
- function_names:
  - SQL_DEF_STRUCT
  - SQL_DEF_STRUCT_STR
  - SQL_DEF_STRUCT_UINT
  - SQL_DEF_STRUCT_ULLONG
  - SQL_DEF_STRUCT_BOOL
  - sql_query
  - sql_statement_query
  - sql_result_more
  - sql_transaction_commit
  source_file: /src/dovecot/src/lib-sql/sql-api.h
  types:
    enum:
    - enumerators:
      - name: SQL_DB_FLAG_BLOCKING
        value: '0x01'
      - name: SQL_DB_FLAG_POOLED
        value: '0x02'
      - name: SQL_DB_FLAG_PREP_STATEMENTS
        value: '0x04'
      - name: SQL_DB_FLAG_ON_DUPLICATE_KEY
        value: '0x08'
      - name: SQL_DB_FLAG_ON_CONFLICT_DO
        value: '0x10'
      item_type: enum
      name: sql_db_flags
      pos:
        line_end: 23
        line_start: 10
        source_file: /src/dovecot/src/lib-sql/sql-api.h
    - enumerators:
      - name: SQL_TYPE_STR
      - name: SQL_TYPE_UUID
      - name: SQL_TYPE_BOOL
      - name: SQL_TYPE_ULLONG
      - name: SQL_TYPE_UINT
      item_type: enum
      name: sql_field_type
      pos:
        line_end: 31
        line_start: 25
        source_file: /src/dovecot/src/lib-sql/sql-api.h
    - enumerators:
      - name: SQL_RESULT_ERROR_TYPE_UNKNOWN
        value: '0'
      - name: SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN
      item_type: enum
      name: sql_result_error_type
      pos:
        line_end: 44
        line_start: 39
        source_file: /src/dovecot/src/lib-sql/sql-api.h
    - enumerators:
      - name: SQL_RESULT_NEXT_OK
        value: '1'
      - name: SQL_RESULT_NEXT_LAST
        value: '0'
      - name: SQL_RESULT_NEXT_ERROR
        value: '-1'
      - name: SQL_RESULT_NEXT_MORE
        value: '-99'
      item_type: enum
      name: sql_result_next
      pos:
        line_end: 55
        line_start: 46
        source_file: /src/dovecot/src/lib-sql/sql-api.h
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: enum sql_field_type
      - name: '*name'
        type: char
      - name: offset
        type: size_t
      item_type: struct
      name: sql_field_def
      pos:
        line_end: 37
        line_start: 33
        source_file: /src/dovecot/src/lib-sql/sql-api.h
    - fields:
      - name: '*error'
        type: char
      - name: error_type
        type: enum sql_result_error_type
      item_type: struct
      name: sql_commit_result
      pos:
        line_end: 77
        line_start: 74
        source_file: /src/dovecot/src/lib-sql/sql-api.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*sql_driver'
        type: char
      item_type: struct
      name: sql_settings
      pos:
        line_end: 82
        line_start: 79
        source_file: /src/dovecot/src/lib-sql/sql-api.h
    typedefs:
    - item_type: typedef
      name: sql_query_callback_t(struct sql_result *result, void *context)
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/dovecot/src/lib-sql/sql-api.h
      type: void
    - item_type: typedef
      name: sql_commit_callback_t(const struct sql_commit_result *result, void *context)
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/dovecot/src/lib-sql/sql-api.h
      type: void
    union: []
- function_names:
  - sqlpool_request_new
  - sqlpool_request_free
  - sqlpool_request_abort
  - driver_sqlpool_new_conn_trans
  - sqlpool_request_handle_transaction
  - sqlpool_request_send_next
  - sqlpool_reconnect
  - sqlpool_find_host_with_least_connections
  - sqlpool_have_successful_connections
  - sqlpool_handle_connect_failed
  - sqlpool_state_changed
  - sqlpool_add_connection
  - sqlpool_add_new_connection
  - sqlpool_find_available_connection
  - driver_sqlpool_get_connection
  - driver_sqlpool_get_sync_connection
  - driver_sqlpool_get_connected_flags
  - driver_sqlpool_get_flags
  - sqlpool_add_all_once
  - driver_sqlpool_init_common
  - array_foreach_elem
  - driver_sqlpool_init
  - driver_sqlpool_abort_requests
  - driver_sqlpool_deinit
  - driver_sqlpool_connect
  - driver_sqlpool_disconnect
  - driver_sqlpool_escape_string
  - driver_sqlpool_timeout
  - driver_sqlpool_prepend_request
  - driver_sqlpool_append_request
  - driver_sqlpool_query_callback
  - driver_sqlpool_query
  - driver_sqlpool_exec
  - driver_sqlpool_query_s
  - driver_sqlpool_transaction_begin
  - driver_sqlpool_transaction_free
  - driver_sqlpool_commit_callback
  - driver_sqlpool_transaction_commit
  - driver_sqlpool_transaction_commit_s
  - driver_sqlpool_transaction_rollback
  - driver_sqlpool_update
  - driver_sqlpool_escape_blob
  - driver_sqlpool_wait
  source_file: /src/dovecot/src/lib-sql/driver-sqlpool.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*hostname'
        type: char
      - name: connection_count
        type: unsigned int
      item_type: struct
      name: sqlpool_host
      pos:
        line_end: 23
        line_start: 19
        source_file: /src/dovecot/src/lib-sql/driver-sqlpool.c
    - fields:
      - name: '*db'
        type: struct sql_db
      - name: host_idx
        type: unsigned int
      item_type: struct
      name: sqlpool_connection
      pos:
        line_end: 28
        line_start: 25
        source_file: /src/dovecot/src/lib-sql/driver-sqlpool.c
    - fields:
      - name: api
        type: struct sql_db
      - name: pool
        type: pool_t
      - name: '*driver'
        type: struct sql_db
      - name: '*filter_name'
        type: char
      - name: connection_limit
        type: unsigned int
      - name: last_query_conn_idx
        type: unsigned int
      - name: '*requests_head'
        type: struct sqlpool_request
      - name: '*request_to'
        type: struct timeout
      item_type: struct
      name: sqlpool_db
      pos:
        line_end: 48
        line_start: 30
        source_file: /src/dovecot/src/lib-sql/driver-sqlpool.c
    - fields:
      - name: '*prev'
        type: struct sqlpool_request
      - name: '*db'
        type: struct sqlpool_db
      - name: created
        type: time_t
      - name: host_idx
        type: unsigned int
      - name: retry_count
        type: unsigned int
      - name: '*event'
        type: struct event
      - name: '*query'
        type: char
      - name: '*callback'
        type: sql_query_callback_t
      - name: '*context'
        type: void
      - name: '*trans'
        type: struct sqlpool_transaction_context
      item_type: struct
      name: sqlpool_request
      pos:
        line_end: 68
        line_start: 50
        source_file: /src/dovecot/src/lib-sql/driver-sqlpool.c
    - fields:
      - name: ctx
        type: struct sql_transaction_context
      - name: '*callback'
        type: sql_commit_callback_t
      - name: '*context'
        type: void
      - name: query_pool
        type: pool_t
      - name: '*commit_request'
        type: struct sqlpool_request
      item_type: struct
      name: sqlpool_transaction_context
      pos:
        line_end: 78
        line_start: 70
        source_file: /src/dovecot/src/lib-sql/driver-sqlpool.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF_SECS
  - driver_mysql_connect
  - driver_mysql_disconnect
  - driver_mysql_db_cache_find
  - driver_mysql_init_from_set
  - driver_mysql_init_v
  - driver_mysql_deinit_v
  - driver_mysql_do_query
  - driver_mysql_escape_string
  - driver_mysql_exec
  - driver_mysql_query_s
  - driver_mysql_result_free
  - driver_mysql_result_next_row
  - driver_mysql_result_fetch_fields
  - driver_mysql_result_get_fields_count
  - driver_mysql_result_get_field_name
  - driver_mysql_result_find_field
  - driver_mysql_result_get_field_value
  - driver_mysql_result_get_field_value_binary
  - driver_mysql_result_find_field_value
  - driver_mysql_result_get_values
  - driver_mysql_result_get_error
  - driver_mysql_transaction_begin
  - transaction_send_query
  - driver_mysql_try_commit_s
  - driver_mysql_transaction_commit_s
  - driver_mysql_transaction_rollback
  - driver_mysql_update
  - driver_mysql_escape_blob
  - driver_mysql_result_error_next_row
  - driver_mysql_init
  - driver_mysql_deinit
  source_file: /src/dovecot/src/lib-sql/driver-mysql.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MYSQL_DEFAULT_READ_TIMEOUT_SECS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/lib-sql/driver-mysql.c
      type_or_value: '30'
    - item_type: preproc_def
      name: MYSQL_DEFAULT_WRITE_TIMEOUT_SECS
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/lib-sql/driver-mysql.c
      type_or_value: '30'
    - item_type: preproc_def
      name: MYSQL_SQLPOOL_SET_NAME
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dovecot/src/lib-sql/driver-mysql.c
      type_or_value: '"mysql"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: connection_limit
        type: unsigned int
      - name: '*host'
        type: char
      - name: port
        type: in_port_t
      - name: '*user'
        type: char
      - name: '*password'
        type: char
      - name: '*dbname'
        type: char
      - name: ssl
        type: bool
      - name: '*option_file'
        type: char
      - name: '*option_group'
        type: char
      - name: client_flags
        type: unsigned int
      - name: connect_timeout_secs
        type: unsigned int
      - name: read_timeout_secs
        type: unsigned int
      - name: write_timeout_secs
        type: unsigned int
      item_type: struct
      name: mysql_settings
      pos:
        line_end: 57
        line_start: 37
        source_file: /src/dovecot/src/lib-sql/driver-mysql.c
    - fields:
      - name: api
        type: struct sql_db
      - name: pool
        type: pool_t
      - name: '*set'
        type: struct mysql_settings
      - name: '*ssl_set'
        type: struct ssl_settings
      - name: last_success
        type: time_t
      - name: '*mysql'
        type: MYSQL
      - name: next_query_connection
        type: unsigned int
      item_type: struct
      name: mysql_db
      pos:
        line_end: 133
        line_start: 122
        source_file: /src/dovecot/src/lib-sql/driver-mysql.c
    - fields:
      - name: api
        type: struct sql_result
      - name: '*result'
        type: MYSQL_RES
      - name: row
        type: MYSQL_ROW
      - name: '*fields'
        type: MYSQL_FIELD
      - name: fields_count
        type: unsigned int
      - name: affected_rows
        type: my_ulonglong
      item_type: struct
      name: mysql_result
      pos:
        line_end: 145
        line_start: 135
        source_file: /src/dovecot/src/lib-sql/driver-mysql.c
    - fields:
      - name: ctx
        type: struct sql_transaction_context
      - name: query_pool
        type: pool_t
      - name: '*error'
        type: char
      - name: failed
        type: bool
      - name: committed
        type: bool
      - name: commit_started
        type: bool
      item_type: struct
      name: mysql_transaction_context
      pos:
        line_end: 156
        line_start: 147
        source_file: /src/dovecot/src/lib-sql/driver-mysql.c
    - fields:
      - name: '*db'
        type: struct sql_db
      - name: '*set'
        type: struct mysql_settings
      - name: '*ssl_set'
        type: struct ssl_settings
      item_type: struct
      name: mysql_db_cache
      pos:
        line_end: 164
        line_start: 158
        source_file: /src/dovecot/src/lib-sql/driver-mysql.c
    typedefs: []
    union: []
- function_names:
  - setup_sql
  - deinit_sql
  - setup_result_1
  - setup_result_2
  - test_result_1
  - test_sql_api
  - test_sql_stmt_api
  - test_sql_stmt_prepared_api
  - main
  source_file: /src/dovecot/src/lib-sql/test-sql.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-charset/charset-utf8.h
  types:
    enum:
    - enumerators:
      - name: CHARSET_RET_OK
        value: '1'
      - name: CHARSET_RET_INCOMPLETE_INPUT
        value: '-1'
      - name: CHARSET_RET_INVALID_INPUT
        value: '-2'
      item_type: enum
      name: charset_result
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/dovecot/src/lib-charset/charset-utf8.h
    preproc_defs:
    - item_type: preproc_def
      name: CHARSET_MAX_PENDING_BUF_SIZE
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-charset/charset-utf8.h
      type_or_value: '10'
    structs: []
    typedefs: []
    union: []
- function_names:
  - iconv_charset_to_utf8_begin
  - iconv_charset_to_utf8_end
  - iconv_charset_to_utf8_reset
  - charset_to_utf8_try
  - iconv_charset_to_utf8
  source_file: /src/dovecot/src/lib-charset/charset-iconv.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: cd
        type: iconv_t
      - name: '*normalizer'
        type: normalizer_func_t
      item_type: struct
      name: charset_translation
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/lib-charset/charset-iconv.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-charset/charset-utf8-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: "(*to_utf8_begin)(const char *charset, normalizer_func_t *normalizer,\n\t\t\t
          \    struct charset_translation **t_r)"
        type: int
      - name: (*to_utf8_end)(struct charset_translation *t)
        type: void
      - name: (*to_utf8_reset)(struct charset_translation *t)
        type: void
      - name: "(*to_utf8)(struct charset_translation *t,\n\t\t\t\t       const unsigned
          char *src,\n\t\t\t\t       size_t *src_size, buffer_t *dest)"
        type: enum charset_result
      item_type: struct
      name: charset_utf8_vfuncs
      pos:
        line_end: 15
        line_start: 6
        source_file: /src/dovecot/src/lib-charset/charset-utf8-private.h
    typedefs: []
    union: []
- function_names:
  - charset_is_utf8
  - charset_to_utf8_str
  - charset_utf8_to_utf8_begin
  - charset_utf8_to_utf8
  - charset_to_utf8_begin
  - charset_to_utf8_end
  - charset_to_utf8_reset
  - charset_to_utf8
  source_file: /src/dovecot/src/lib-charset/charset-utf8.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_charset_is_utf8
  - test_charset_utf8_common
  - test_charset_utf8
  - test_charset_iconv
  - test_charset_iconv_crashes
  - test_charset_iconv_utf7_state
  - convert
  - main
  source_file: /src/dovecot/src/lib-charset/test-charset.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: result
        type: enum charset_result
      item_type: struct
      name: "tests[] = {\n\t\t{ \"p\\xC3\\xA4\\xC3\", \"p\\xC3\\xA4\", CHARSET_RET_INCOMPLETE_INPUT
        },\n\t\t{ \"p\\xC3\\xA4\\xC3\"\"a\", \"p\\xC3\\xA4\"UNICODE_REPLACEMENT_CHAR_UTF8\"a\",
        CHARSET_RET_INVALID_INPUT }\n\t}"
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/dovecot/src/lib-charset/test-charset.c
    - fields:
      - name: '*charset'
        type: char
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: result
        type: enum charset_result
      item_type: struct
      name: "tests[] = {\n\t\t{ \"ISO-8859-1\", \"p\\xE4\\xE4\", \"p\\xC3\\xA4\\xC3\\xA4\",
        CHARSET_RET_OK },\n\t\t{ \"UTF-7\", \"+AOQA5AD2AOQA9gDkAPYA5AD2AOQA9gDkAPYA5AD2AOQA9gDkAPYA5AD2AOQA9gDkAPYA5AD2AOQA9gDkAPYA5AD2AOQA9gDk\",\n\t\t
        \ \"\\xC3\\xA4\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\"\n\t\t
        \ \"\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\"\n\t\t
        \ \"\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\"\n\t\t
        \ \"\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\"\n\t\t
        \ \"\\xC3\\xB6\\xC3\\xA4\\xC3\\xB6\\xC3\\xA4\", CHARSET_RET_OK }\n\t}"
      pos:
        line_end: 70
        line_start: 65
        source_file: /src/dovecot/src/lib-charset/test-charset.c
    - fields:
      - name: '*charset'
        type: char
      - name: '*input'
        type: char
      item_type: struct
      name: "tests[] = {\n\t\t{ \"CP932\", \"\\203\\334\" }\n\t}"
      pos:
        line_end: 118
        line_start: 115
        source_file: /src/dovecot/src/lib-charset/test-charset.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.h
  types:
    enum:
    - enumerators:
      - name: IMAP_URLAUTH_FETCH_FLAG_EXTENDED
        value: '0x01'
      - name: IMAP_URLAUTH_FETCH_FLAG_UTF8
        value: '0x10'
      - name: IMAP_URLAUTH_FETCH_FLAG_BODYPARTSTRUCTURE
        value: '0x08'
      - name: IMAP_URLAUTH_FETCH_FLAG_BINARY
        value: '0x04'
      - name: IMAP_URLAUTH_FETCH_FLAG_BODY
        value: '0x02'
      item_type: enum
      name: imap_urlauth_fetch_flags
      pos:
        line_end: 18
        line_start: 7
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*url'
        type: char
      - name: flags
        type: enum imap_urlauth_fetch_flags
      - name: '*input'
        type: struct istream
      - name: size
        type: uoff_t
      - name: '*bodypartstruct'
        type: char
      - name: '*error'
        type: char
      - name: succeeded
        type: bool
      - name: binary_has_nuls
        type: bool
      item_type: struct
      name: imap_urlauth_fetch_reply
      pos:
        line_end: 32
        line_start: 20
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.h
    typedefs:
    - item_type: typedef
      name: "imap_urlauth_fetch_callback_t(struct imap_urlauth_fetch_reply *reply,\n\t\t\t
        \     bool last, void *context)"
      pos:
        line_end: 41
        line_start: 39
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.h
      type: int
    union: []
- function_names:
  - imap_urlauth_fetch_abort_local
  - imap_urlauth_fetch_abort
  - imap_urlauth_fetch_fail
  - imap_urlauth_fetch_init
  - imap_urlauth_fetch_ref
  - imap_urlauth_fetch_unref
  - imap_urlauth_fetch_deinit
  - imap_urlauth_fetch_error
  - imap_urlauth_fetch_local
  - imap_urlauth_fetch_request_callback
  - imap_urlauth_fetch_url
  - imap_urlauth_fetch_url_parsed
  - imap_urlauth_fetch_do_continue
  - imap_urlauth_fetch_continue
  - imap_urlauth_fetch_is_pending
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*prev'
        type: struct imap_urlauth_fetch_url
      - name: '*url'
        type: char
      - name: flags
        type: enum imap_urlauth_fetch_flags
      item_type: struct
      name: imap_urlauth_fetch_url
      pos:
        line_end: 21
        line_start: 16
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    - fields:
      - name: refcount
        type: unsigned int
      - name: '*uctx'
        type: struct imap_urlauth_context
      - name: '*callback'
        type: imap_urlauth_fetch_callback_t
      - name: '*context'
        type: void
      - name: '*local_urls_head'
        type: struct imap_urlauth_fetch_url
      - name: '*local_url'
        type: struct imap_msgpart_url
      - name: pending_requests
        type: unsigned int
      - name: pending_reply
        type: "struct {\n\t\tchar *url;\n\t\tenum imap_urlauth_fetch_flags flags;\n\n\t\tstruct
          istream *input;\n\t\tuoff_t size;\n\n\t\tchar *bodypartstruct;\n\t\tchar
          *error;\n\n\t\tbool succeeded:1;\n\t\tbool binary_has_nuls:1;\n\t}"
      - name: failed
        type: bool
      - name: waiting_local
        type: bool
      - name: waiting_service
        type: bool
      item_type: struct
      name: imap_urlauth_fetch
      pos:
        line_end: 53
        line_start: 23
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*user'
        type: struct mail_user
      - name: '*conn'
        type: struct imap_urlauth_connection
      - name: '*url_host'
        type: char
      - name: url_port
        type: in_port_t
      - name: '*access_user'
        type: char
      - name: '*access_service'
        type: char
      - name: '**access_applications'
        type: char
      - name: access_anonymous
        type: bool
      item_type: struct
      name: imap_urlauth_context
      pos:
        line_end: 17
        line_start: 5
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-private.h
    typedefs: []
    union: []
- function_names:
  - imap_urlauth_connection_init
  - imap_urlauth_connection_deinit
  - imap_urlauth_stop_response_timeout
  - imap_urlauth_start_response_timeout
  - imap_urlauth_connection_get_target
  - imap_urlauth_target_free
  - imap_urlauth_connection_select_target
  - imap_urlauth_connection_send_request
  - imap_urlauth_request_new
  - imap_urlauth_request_free
  - imap_urlauth_request_drop
  - imap_urlauth_request_abort
  - imap_urlauth_request_fail
  - imap_urlauth_target_abort
  - imap_urlauth_target_fail
  - imap_urlauth_target_abort_by_context
  - imap_urlauth_connection_abort
  - imap_urlauth_request_abort_by_context
  - imap_urlauth_connection_fail
  - imap_urlauth_connection_create_temp_fd
  - imap_urlauth_connection_read_literal_init
  - imap_urlauth_connection_continue
  - imap_urlauth_connection_read_literal_data
  - literal_stream_destroy
  - imap_urlauth_fetch_reply_set_literal_stream
  - imap_urlauth_connection_read_literal
  - imap_urlauth_connection_destroy
  - imap_urlauth_input_pending
  - imap_urlauth_authenticate
  - imap_urlauth_input_next
  - imap_urlauth_connection_input
  - imap_urlauth_connection_connected
  - imap_urlauth_connection_do_connect
  - imap_urlauth_connection_connect
  - imap_urlauth_connection_disconnect
  - imap_urlauth_connection_do_reconnect
  - imap_urlauth_connection_reconnect
  - imap_urlauth_connection_idle_disconnect
  - imap_urlauth_connection_timeout_abort
  - imap_urlauth_connection_is_connected
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
  types:
    enum:
    - enumerators:
      - name: IMAP_URLAUTH_STATE_DISCONNECTED
        value: '0'
      - name: IMAP_URLAUTH_STATE_SELECTING_TARGET
      - name: IMAP_URLAUTH_STATE_AUTHENTICATED
      - name: IMAP_URLAUTH_STATE_AUTHENTICATING
      - name: IMAP_URLAUTH_STATE_CONNECTING
      - name: IMAP_URLAUTH_STATE_UNSELECTING_TARGET
      - name: IMAP_URLAUTH_STATE_READY
      - name: IMAP_URLAUTH_STATE_REQUEST_PENDING
      - name: IMAP_URLAUTH_STATE_REQUEST_WAIT
      item_type: enum
      name: imap_urlauth_state
      pos:
        line_end: 32
        line_start: 22
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_URLAUTH_RECONNECT_MIN_SECS
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
      type_or_value: '2'
    - item_type: preproc_def
      name: IMAP_URLAUTH_RECONNECT_MAX_ATTEMPTS
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
      type_or_value: '3'
    - item_type: preproc_def
      name: IMAP_URLAUTH_RESPONSE_TIMEOUT_MSECS
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
      type_or_value: 2*60*1000
    - item_type: preproc_def
      name: IMAP_URLAUTH_MAX_INLINE_LITERAL_SIZE
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
      type_or_value: (1024*32)
    structs:
    - fields:
      - name: '*target'
        type: struct imap_urlauth_target
      - name: '*prev'
        type: struct imap_urlauth_request
      - name: '*url'
        type: char
      - name: flags
        type: enum imap_urlauth_fetch_flags
      - name: '*bodypartstruct'
        type: char
      - name: '*callback'
        type: imap_urlauth_request_callback_t
      - name: '*context'
        type: void
      - name: binary_has_nuls
        type: bool
      item_type: struct
      name: imap_urlauth_request
      pos:
        line_end: 47
        line_start: 34
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    - fields:
      - name: '*prev'
        type: struct imap_urlauth_target
      - name: '*userid'
        type: char
      - name: '*requests_head'
        type: struct imap_urlauth_request
      item_type: struct
      name: imap_urlauth_target
      pos:
        line_end: 55
        line_start: 49
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    - fields:
      - name: conn
        type: struct connection
      - name: '*event'
        type: struct event
      - name: '*path'
        type: char
      - name: '*user'
        type: struct mail_user
      - name: '*to_reconnect'
        type: struct timeout
      - name: last_reconnect
        type: time_t
      - name: reconnect_attempts
        type: unsigned int
      - name: idle_timeout_msecs
        type: unsigned int
      - name: '*literal_temp_path'
        type: char
      - name: literal_fd
        type: int
      - name: '*literal_buf'
        type: buffer_t
      - name: literal_size
        type: uoff_t
      - name: state
        type: enum imap_urlauth_state
      - name: '*targets_head'
        type: struct imap_urlauth_target
      - name: reading_literal
        type: bool
      item_type: struct
      name: imap_urlauth_connection
      pos:
        line_end: 80
        line_start: 57
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_URLAUTH_KEY_LEN
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.h
      type_or_value: '64'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_URLAUTH_SOCKET_NAME
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.h
      type_or_value: '"imap-urlauth"'
    structs:
    - fields:
      - name: '*url_host'
        type: char
      - name: url_port
        type: in_port_t
      - name: '*socket_path'
        type: char
      - name: '*session_id'
        type: char
      - name: '*access_user'
        type: char
      - name: '*access_service'
        type: char
      - name: '*const *access_applications'
        type: char
      - name: access_anonymous
        type: bool
      item_type: struct
      name: imap_urlauth_config
      pos:
        line_end: 26
        line_start: 11
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.h
    typedefs: []
    union: []
- function_names:
  - imap_urlauth_backend_trans_set_mailbox_key
  - imap_urlauth_backend_trans_get_mailbox_key
  - imap_urlauth_backend_get_mailbox_key
  - imap_urlauth_backend_reset_mailbox_key
  - imap_urlauth_backend_mailbox_reset_key
  - imap_urlauth_backend_reset_all_keys
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_URLAUTH_KEY
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-backend.c
      type_or_value: MAILBOX_ATTRIBUTE_PREFIX_DOVECOT"imap-urlauth"
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_msgpart_url_create
  - imap_msgpart_url_free
  - imap_msgpart_url_verify
  - imap_msgpart_url_get_mailbox
  - imap_msgpart_url_open_mailbox
  - imap_urlauth_backend_get_mailbox_key
  - imap_urlauth_backend_reset_mailbox_key
  - imap_urlauth_backend_reset_all_keys
  - auth_master_user_lookup
  - imap_urlauth_connection_init
  - imap_urlauth_connection_deinit
  - test_imap_urlauth_check
  - test_imap_urlauth_generate
  - test_imap_urlauth_fetch
  - test_imap_urlauth_reset_keys
  - main
  source_file: /src/dovecot/src/lib-imap-urlauth/test-imap-urlauth.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_urlauth_init
  - imap_urlauth_deinit
  - imap_urlauth_internal_generate
  - imap_urlauth_internal_verify
  - access_applications_have_access
  - imap_urlauth_check_access
  - imap_urlauth_check_hostport
  - imap_urlauth_verify_url_userid
  - imap_urlauth_generate
  - imap_urlauth_check
  - imap_urlauth_fetch_parsed
  - imap_urlauth_fetch
  - imap_urlauth_reset_mailbox_key
  - imap_urlauth_reset_all_keys
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_URLAUTH_MECH_INTERNAL_VERSION
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
      type_or_value: '0x01'
    - item_type: preproc_def
      name: IMAP_URLAUTH_NORMAL_TIMEOUT_MSECS
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
      type_or_value: 5*1000
    - item_type: preproc_def
      name: IMAP_URLAUTH_SPECIAL_TIMEOUT_MSECS
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
      type_or_value: 3*60*1000
    - item_type: preproc_def
      name: URL_HOST_ALLOW_ANY
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth.c
      type_or_value: '"*"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_URLAUTH_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.h
      type_or_value: '2'
    - item_type: preproc_def
      name: IMAP_URLAUTH_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.h
      type_or_value: '0'
    structs: []
    typedefs:
    - item_type: typedef
      name: "imap_urlauth_request_callback_t(struct imap_urlauth_fetch_reply *reply,\n\t\t\t\tvoid
        *context)"
      pos:
        line_end: 11
        line_start: 9
        source_file: /src/dovecot/src/lib-imap-urlauth/imap-urlauth-connection.h
      type: int
    union: []
- function_names:
  - mail_transaction_expunge_guid_cmp
  - mail_index_transaction_sort_expunges
  - ext_reset_update_atomic
  - transaction_update_atomic_reset_ids
  - mail_transaction_drop_range
  - mail_index_transaction_finish_flag_updates
  - mail_index_transaction_check_conflicts
  - mail_index_transaction_get_uid
  - mail_index_convert_to_uids
  - get_nonexpunged_uid2
  - mail_index_transaction_seq_range_to_uid
  - keyword_updates_convert_to_uids
  - expunges_convert_to_uids
  - mail_index_transaction_convert_to_uids
  - mail_index_transaction_finish_so_far
  - mail_index_transaction_finish
  source_file: /src/dovecot/src/lib-index/mail-index-transaction-finish.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - modseq_cache_hit
  - modseq_cache_get_offset
  - modseq_cache_get_modseq
  - log_get_synced_record
  - mail_transaction_log_file_get_highest_modseq_at
  - get_modseq_next_offset_at
  - mail_transaction_log_file_get_modseq_next_offset
  source_file: /src/dovecot/src/lib-index/mail-transaction-log-modseq.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_transaction_log_set_head
  - mail_transaction_log_alloc
  - mail_transaction_log_2_unlink_old
  - mail_transaction_log_open
  - mail_transaction_log_create
  - mail_transaction_log_close
  - mail_transaction_log_free
  - mail_transaction_log_move_to_memory
  - mail_transaction_logs_clean
  - mail_transaction_log_want_rotate
  - mail_transaction_log_rotate
  - mail_transaction_log_has_changed
  - mail_transaction_log_refresh
  - mail_transaction_log_get_mailbox_sync_pos
  - mail_transaction_log_set_mailbox_sync_pos
  - mail_transaction_log_find_file
  - mail_transaction_log_lock_head
  - mail_transaction_log_sync_lock
  - mail_transaction_log_sync_unlock
  - mail_transaction_log_get_head
  - mail_transaction_log_get_tail
  - mail_transaction_log_is_head_prev
  - mail_transaction_log_unlink
  - mail_transaction_log_get_dotlock_set
  source_file: /src/dovecot/src/lib-index/mail-transaction-log.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_map_get_ext_idx
  - mail_index_ext_set_reset_id
  - mail_index_transaction_set_log_updates
  - mail_index_update_day_headers
  - mail_index_cancel_flag_updates
  - mail_index_cancel_keyword_updates
  - mail_index_transaction_sort_appends
  - mail_index_map
  - mail_index_update_modseq
  - mail_index_lookup
  - mail_index_transaction_lookup
  - mail_index_modseq_lookup
  - mail_index_modseq_get_highest
  - MAIL_INDEX_TRANSACTION_FINISH
  - test_mail_index_transaction_finish_flag_updates
  - test_mail_index_transaction_finish_check_conflicts
  - test_mail_index_transaction_finish_modseq_updates
  - test_mail_index_transaction_finish_expunges
  - test_state_reset
  - test_mail_index_transaction_finish
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-index-transaction-finish.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAIL_INDEX_TRANSACTION_HAS_CHANGES
  source_file: /src/dovecot/src/lib-index/mail-index-transaction-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      item_type: struct
      name: mail_index_transaction_keyword_update
      pos:
        line_end: 11
        line_start: 8
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-private.h
    - fields:
      - name: alloc_size
        type: size_t
      - name: '*mask'
        type: unsigned char
      - name: '*data'
        type: unsigned char
      item_type: struct
      name: mail_index_transaction_ext_hdr_update
      pos:
        line_end: 18
        line_start: 13
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-private.h
    - fields:
      - name: (*reset)(struct mail_index_transaction *t)
        type: void
      - name: "(*commit)(struct mail_index_transaction *t,\n\t\t      struct mail_index_transaction_commit_result
          *result_r)"
        type: int
      - name: (*rollback)(struct mail_index_transaction *t)
        type: void
      item_type: struct
      name: mail_index_transaction_vfuncs
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-private.h
    - fields:
      - name: uid1
        type: uint32_t
      - name: add_flags
        type: uint16_t
      - name: remove_flags
        type: uint16_t
      item_type: struct
      name: mail_index_flag_update
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-private.h
    - fields:
      - name: '*prev'
        type: struct mail_index_transaction
      - name: refcount
        type: int
      - name: flags
        type: enum mail_index_transaction_flags
      - name: v
        type: struct mail_index_transaction_vfuncs
      - name: '*view'
        type: struct mail_index_view
      - name: '*latest_view'
        type: struct mail_index_view
      - name: first_new_seq
        type: uint32_t
      - name: highest_append_uid
        type: uint32_t
      - name: min_flagupdate_seq
        type: uint32_t
      - name: last_update_idx
        type: size_t
      - name: pre_hdr_change[sizeof(struct mail_index_header)]
        type: unsigned char
      - name: pre_hdr_mask[sizeof(struct mail_index_header)]
        type: unsigned char
      - name: post_hdr_change[sizeof(struct mail_index_header)]
        type: unsigned char
      - name: post_hdr_mask[sizeof(struct mail_index_header)]
        type: unsigned char
      - name: (seq_array_array)
        type: ARRAY_TYPE
      - name: (seq_array_array)
        type: ARRAY_TYPE
      - name: (uint32_t)
        type: ARRAY
      - name: (uint32_t)
        type: ARRAY
      - name: '*attribute_updates'
        type: buffer_t
      - name: '*attribute_updates_suffix'
        type: buffer_t
      - name: min_highest_modseq
        type: uint64_t
      - name: max_modseq
        type: uint64_t
      - name: '*conflict_seqs'
        type: ARRAY_TYPE
      - name: no_appends
        type: bool
      - name: sync_transaction
        type: bool
      - name: appends_nonsorted
        type: bool
      - name: expunges_nonsorted
        type: bool
      - name: drop_unnecessary_flag_updates
        type: bool
      - name: pre_hdr_changed
        type: bool
      - name: post_hdr_changed
        type: bool
      - name: reset
        type: bool
      - name: index_deleted
        type: bool
      - name: index_undeleted
        type: bool
      - name: commit_deleted_index
        type: bool
      - name: tail_offset_changed
        type: bool
      - name: log_updates
        type: bool
      - name: log_ext_updates
        type: bool
      item_type: struct
      name: mail_index_transaction
      pos:
        line_end: 103
        line_start: 38
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-private.h
    typedefs:
    - item_type: typedef
      name: hook_mail_index_transaction_created_t(struct mail_index_transaction *t)
      pos:
        line_end: 110
        line_start: 110
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-private.h
      type: void
    union:
    - fields:
      - name: super
        type: struct mail_index_transaction_vfuncs
      - name: '*reg'
        type: struct mail_index_module_register
      item_type: union
      name: mail_index_transaction_module_context
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-private.h
- function_names:
  - dummy_view_close
  - dummy_view_get_message_count
  - mail_index_dummy_view_open
  source_file: /src/dovecot/src/lib-index/mail-index-dummy-view.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_transaction_log_file_add
  - mail_index_set_error
  - mail_transaction_log_file_set_corrupted
  - mail_transaction_logs_clean
  - mail_transaction_log_find_file
  - mail_transaction_log_file_map
  - mail_transaction_log_file_get_highest_modseq_at
  - mail_transaction_update_modseq
  - view_is_file_refed
  - add_append_record
  - test_mail_transaction_log_view
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-transaction-log-view.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/mail-index-sync-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: uid1
        type: uint32_t
      item_type: struct
      name: uid_range
      pos:
        line_end: 8
        line_start: 6
        source_file: /src/dovecot/src/lib-index/mail-index-sync-private.h
    - fields:
      - name: '*array'
        type: ARRAY_TYPE
      - name: idx
        type: unsigned int
      - name: keyword_idx
        type: unsigned int
      - name: keyword_remove
        type: bool
      item_type: struct
      name: mail_index_sync_list
      pos:
        line_end: 16
        line_start: 11
        source_file: /src/dovecot/src/lib-index/mail-index-sync-private.h
    - fields:
      - name: '*handler'
        type: mail_index_expunge_handler_t
      - name: '*context'
        type: void
      - name: '**sync_context'
        type: void
      - name: record_offset
        type: uint32_t
      item_type: struct
      name: mail_index_expunge_handler
      pos:
        line_end: 23
        line_start: 18
        source_file: /src/dovecot/src/lib-index/mail-index-sync-private.h
    - fields:
      - name: '*view'
        type: struct mail_index_view
      - name: '*modseq_ctx'
        type: struct mail_index_modseq_sync
      - name: cur_ext_map_idx
        type: uint32_t
      - name: cur_ext_record_size
        type: uint32_t
      - name: ext_intro_seq
        type: uint32_t
      - name: ext_intro_offset
        type: uoff_t
      - name: '*unknown_extensions'
        type: buffer_t
      - name: type
        type: enum mail_index_sync_handler_type
      - name: sync_handlers_initialized
        type: bool
      - name: expunge_handlers_set
        type: bool
      - name: expunge_handlers_used
        type: bool
      - name: cur_ext_ignore
        type: bool
      - name: internal_update
        type: bool
      - name: errors
        type: bool
      item_type: struct
      name: mail_index_sync_map_ctx
      pos:
        line_end: 46
        line_start: 25
        source_file: /src/dovecot/src/lib-index/mail-index-sync-private.h
    typedefs: []
    union: []
- function_names:
  - uid_map_cmp
  - mail_index_transaction_sort_appends_keywords
  - mail_index_transaction_sort_appends
  source_file: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: idx
        type: uint32_t
      - name: uid
        type: uint32_t
      item_type: struct
      name: uid_map
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-sort-appends.c
    typedefs: []
    union: []
- function_names:
  - mail_index_fsck_error
  - CHECK
  - array_foreach_elem
  - mail_index_fsck_find_keyword_count
  - keyword_name_is_valid
  - mail_index_fsck_keywords
  - mail_index_fsck_extensions
  - mail_index_fsck_records
  - mail_index_fsck_locked
  - mail_index_reset_fscked
  source_file: /src/dovecot/src/lib-index/mail-index-fsck.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_cache_get_record
  - mail_cache_lookup_cur_offset
  - mail_cache_lookup_offset
  - mail_cache_track_loops
  - mail_cache_lookup_iter_init
  - mail_cache_lookup_iter_transaction
  - mail_cache_lookup_iter_next_record
  - mail_cache_lookup_rec_get_field
  - mail_cache_lookup_iter_next
  - mail_cache_seq
  - mail_cache_field_exists
  - mail_cache_field_exists_any
  - mail_cache_field_get_decision
  - mail_cache_lookup_bitmask
  - mail_cache_lookup_field
  - header_lines_save
  - header_lookup_line_cmp
  - mail_cache_lookup_headers_real
  - mail_cache_lookup_headers
  - mail_cache_get_highest_seq_with_cache
  - mail_cache_get_missing_reason
  source_file: /src/dovecot/src/lib-index/mail-cache-lookup.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CACHE_PREFETCH
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-index/mail-cache-lookup.c
      type_or_value: IO_BLOCK_SIZE
    structs:
    - fields:
      - name: data_size
        type: uint32_t
      - name: '*data'
        type: unsigned char
      item_type: struct
      name: header_lookup_data
      pos:
        line_end: 450
        line_start: 447
        source_file: /src/dovecot/src/lib-index/mail-cache-lookup.c
    - fields:
      - name: line_num
        type: uint32_t
      - name: '*data'
        type: struct header_lookup_data
      item_type: struct
      name: header_lookup_line
      pos:
        line_end: 455
        line_start: 452
        source_file: /src/dovecot/src/lib-index/mail-cache-lookup.c
    - fields:
      - name: '*view'
        type: struct mail_cache_view
      - name: pool
        type: pool_t
      item_type: struct
      name: header_lookup_context
      pos:
        line_end: 461
        line_start: 457
        source_file: /src/dovecot/src/lib-index/mail-cache-lookup.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/mailbox-log.h
  types:
    enum:
    - enumerators:
      - name: MAILBOX_LOG_RECORD_DELETE_MAILBOX
        value: '1'
      - name: MAILBOX_LOG_RECORD_RENAME
      - name: MAILBOX_LOG_RECORD_SUBSCRIBE
      - name: MAILBOX_LOG_RECORD_UNSUBSCRIBE
      - name: MAILBOX_LOG_RECORD_DELETE_DIR
      - name: MAILBOX_LOG_RECORD_CREATE_DIR
      item_type: enum
      name: mailbox_log_record_type
      pos:
        line_end: 12
        line_start: 5
        source_file: /src/dovecot/src/lib-index/mailbox-log.h
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: uint8_t
      - name: padding[3]
        type: uint8_t
      - name: mailbox_guid
        type: guid_128_t
      - name: timestamp[4]
        type: uint8_t
      item_type: struct
      name: mailbox_log_record
      pos:
        line_end: 19
        line_start: 14
        source_file: /src/dovecot/src/lib-index/mailbox-log.h
    typedefs: []
    union: []
- function_names:
  - STRIDX_MUST_RENUMBER
  - mail_index_strmap_init
  - mail_index_strmap_set_syscall_error
  - mail_index_strmap_close
  - mail_index_strmap_deinit
  - mail_index_strmap_hash_key
  - mail_index_strmap_hash_cmp
  - mail_index_strmap_view_open
  - mail_index_strmap_view_close
  - mail_index_strmap_view_get_highest_idx
  - mail_index_strmap_view_reset
  - mail_index_strmap_view_set_corrupted
  - mail_index_strmap_open
  - mail_index_strmap_need_reopen
  - mail_index_strmap_refresh
  - mail_index_strmap_read_packed
  - mail_index_strmap_uid_exists
  - mail_index_strmap_read_rec_first
  - mail_index_strmap_read_rec_next
  - strmap_read_block_init
  - strmap_read_block_next
  - strmap_read_block_deinit
  - strmap_view_sync_handle_conflict
  - strmap_view_sync_block_check_conflicts
  - mail_index_strmap_view_sync_block
  - mail_index_strmap_view_sync_init
  - crc32_str_nonzero
  - mail_index_strmap_view_sync_add
  - mail_index_strmap_view_sync_add_unique
  - mail_index_strmap_zero_terminate
  - mail_index_strmap_view_renumber
  - mail_index_strmap_write_block
  - mail_index_strmap_recreate_write
  - mail_index_strmap_recreate
  - mail_index_strmap_lock
  - mail_index_strmap_unlock
  - strmap_rec_cmp
  - mail_index_strmap_write_append
  - mail_index_strmap_write
  - mail_index_strmap_view_sync_commit
  - mail_index_strmap_view_sync_rollback
  source_file: /src/dovecot/src/lib-index/mail-index-strmap.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: STRMAP_FILE_MAX_STRIDX_MULTIPLIER
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.c
      type_or_value: '2'
    - item_type: preproc_def
      name: MAIL_INDEX_STRMAP_TIMEOUT_SECS
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.c
      type_or_value: '10'
    structs:
    - fields:
      - name: '*index'
        type: struct mail_index
      - name: '*path'
        type: char
      - name: fd
        type: int
      - name: '*input'
        type: struct istream
      - name: '*file_lock'
        type: struct file_lock
      - name: '*dotlock'
        type: struct dotlock
      - name: dotlock_settings
        type: struct dotlock_settings
      item_type: struct
      name: mail_index_strmap
      pos:
        line_end: 26
        line_start: 17
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.c
    - fields:
      - name: '*strmap'
        type: struct mail_index_strmap
      - name: '*view'
        type: struct mail_index_view
      - name: (mail_index_strmap_rec)
        type: ARRAY_TYPE
      - name: (uint32_t)
        type: ARRAY
      - name: '*hash'
        type: struct hash2_table
      - name: '*key_compare'
        type: mail_index_strmap_key_cmp_t
      - name: '*rec_compare'
        type: mail_index_strmap_rec_cmp_t
      - name: '*remap_cb'
        type: mail_index_strmap_remap_t
      - name: '*cb_context'
        type: void
      - name: last_read_block_offset
        type: uoff_t
      - name: last_read_uid
        type: uint32_t
      - name: last_added_uid
        type: uint32_t
      - name: total_ref_count
        type: uint32_t
      - name: last_ref_index
        type: uint32_t
      - name: next_str_idx
        type: uint32_t
      - name: lost_expunged_uid
        type: uint32_t
      - name: desynced
        type: bool
      item_type: struct
      name: mail_index_strmap_view
      pos:
        line_end: 51
        line_start: 28
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.c
    - fields:
      - name: '*view'
        type: struct mail_index_strmap_view
      - name: '*input'
        type: struct istream
      - name: end_offset
        type: uoff_t
      - name: highest_str_idx
        type: uint32_t
      - name: uid_lookup_seq
        type: uint32_t
      - name: lost_expunged_uid
        type: uint32_t
      - name: '*data'
        type: unsigned char
      - name: rec
        type: struct mail_index_strmap_rec
      - name: next_ref_index
        type: uint32_t
      - name: rec_size
        type: unsigned int
      - name: too_large_uids
        type: bool
      item_type: struct
      name: mail_index_strmap_read_context
      pos:
        line_end: 68
        line_start: 53
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.c
    - fields:
      - name: '*view'
        type: struct mail_index_strmap_view
      item_type: struct
      name: mail_index_strmap_view_sync
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.c
    - fields:
      - name: '*str'
        type: char
      - name: crc32
        type: uint32_t
      item_type: struct
      name: mail_index_strmap_hash_key
      pos:
        line_end: 77
        line_start: 74
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.c
    typedefs: []
    union: []
- function_names:
  - test_lookup_seq_range
  - TEST_ATOMIC
  - TEST_ATOMIC_BLOCK
  source_file: /src/dovecot/src/lib-index/test-mail-index-sync-ext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_sync_update_log_offset
  - mail_index_sync_replace_map
  - mail_index_sync_move_to_private_memory
  - mail_index_sync_get_atomic_map
  - mail_index_header_update_counts
  - mail_index_sync_header_update_counts_all
  - mail_index_sync_header_update_counts
  - mail_index_header_update_lowwaters
  - sync_expunge_call_handlers
  - sync_expunge_handlers_init
  - sync_expunge_range
  - sync_append_record
  - sync_update_ignored_change
  - sync_modseq_update
  - sync_append
  - sync_flag_update
  - sync_header_update
  - mail_index_sync_record_real
  - mail_index_sync_record
  - mail_index_sync_map_init
  - mail_index_sync_map_deinit
  - mail_index_sync_update_hdr_dirty_flag
  - mail_index_map_check
  - mail_index_sync_map_want_index_reopen
  - mail_index_sync_map
  source_file: /src/dovecot/src/lib-index/mail-index-sync-update.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_INDEX_SYNC_MIN_READ_INDEX_SIZE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-index/mail-index-sync-update.c
      type_or_value: '2048'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_index_rotate
  - test_mail_index_new_extension_rotate_write
  - test_mail_index_new_extension_sync
  - test_mail_index_new_extension
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-index.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAIL_INDEX_ALLOC_CACHE_CONTEXT
  - mail_index_alloc_cache_add
  - mail_index_alloc_cache_list_unref
  - mail_index_alloc_cache_list_free
  - mail_index_alloc_cache_find_and_expire
  - mail_index_alloc_cache_get
  - mail_index_alloc_cache_find
  - destroy_unrefed
  - index_removal_timeout
  - mail_index_alloc_cache_unref
  - mail_index_alloc_cache_destroy_unrefed
  - mail_index_alloc_cache_index_opened
  - mail_index_alloc_cache_index_closing
  source_file: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INDEX_CACHE_TIMEOUT
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
      type_or_value: '10'
    - item_type: preproc_def
      name: INDEX_CACHE_MAX
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
      type_or_value: '3'
    structs:
    - fields:
      - name: module_ctx
        type: union mail_index_module_context
      - name: '*next'
        type: struct mail_index_alloc_cache_list
      - name: '*index'
        type: struct mail_index
      - name: '*mailbox_path'
        type: char
      - name: refcount
        type: int
      - name: referenced
        type: bool
      - name: index_dir_dev
        type: dev_t
      - name: index_dir_ino
        type: ino_t
      - name: destroy_time
        type: time_t
      item_type: struct
      name: mail_index_alloc_cache_list
      pos:
        line_end: 30
        line_start: 17
        source_file: /src/dovecot/src/lib-index/mail-index-alloc-cache.c
    typedefs: []
    union: []
- function_names:
  - mail_cache_set_syscall_error
  - mail_cache_unlink
  - mail_cache_set_corrupted
  - mail_cache_set_seq_corrupted_reason
  - mail_cache_file_close
  - mail_cache_init_file_cache
  - mail_cache_try_open
  - mail_cache_need_reopen
  - mail_cache_reopen
  - mail_cache_update_need_purge
  - mail_cache_verify_header
  - mail_cache_map_finish
  - mail_cache_map_with_read
  - mail_cache_map_full
  - mail_cache_map
  - mail_cache_map_all
  - mail_cache_open_and_verify
  - mail_cache_open_or_create_path
  - mail_cache_open_or_create
  - mail_cache_free
  - mail_cache_lock_file
  - mail_cache_unlock_file
  - mail_cache_verify_reset_id
  - mail_cache_sync_wait_index
  - mail_cache_sync_reset_id
  - mail_cache_lock
  - mail_cache_flush_and_unlock
  - mail_cache_unlock
  - mail_cache_write
  - mail_cache_append
  - mail_cache_exists
  - mail_cache_view_open
  - mail_cache_view_close
  - mail_cache_view_update_cache_decisions
  - mail_cache_get_first_new_seq
  source_file: /src/dovecot/src/lib-index/mail-cache.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_CACHE_MIN_HEADER_READ_SIZE
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-index/mail-cache.c
      type_or_value: '4096'
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_sync_init_expunge_handlers
  - mail_index_sync_deinit_expunge_handlers
  - mail_index_sync_init_handlers
  - mail_index_sync_deinit_handlers
  - get_ext_header
  - mail_index_ext_align_cmp
  - sync_ext_reorder
  - sync_ext_resize
  - mail_index_sync_ext_unknown_complain
  - mail_index_sync_ext_init_new
  - mail_index_sync_ext_intro
  - mail_index_sync_ext_clear
  - mail_index_sync_ext_reset
  - mail_index_sync_ext_hdr_update
  - mail_index_sync_ext_rec_update
  - mail_index_sync_ext_atomic_inc
  source_file: /src/dovecot/src/lib-index/mail-index-sync-ext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_cache_fields_read_write
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-cache-fields.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_index_map_lookup_seq_range_count
  - test_mail_index_map_lookup_seq_range
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-index-map.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_uint32_to_offset
  - mail_index_offset_to_uint32
  - mail_index_pack_num
  - mail_index_unpack_num
  - mail_index_seq_record_cmp
  - mail_index_seq_array_lookup
  source_file: /src/dovecot/src/lib-index/mail-index-util.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/mail-index-util.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_INDEX_PACK_MAX_SIZE
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-index/mail-index-util.h
      type_or_value: ((sizeof(uint32_t) * 8 + 7) / 7)
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_transaction_log_view_open
  - mail_transaction_log_view_unref_all
  - mail_transaction_log_view_close
  - mail_transaction_log_get_file_seqs
  - view_set_failed_unref
  - mail_transaction_log_view_set
  - mail_transaction_log_view_set_all
  - mail_transaction_log_view_clear
  - mail_transaction_log_view_get_prev_pos
  - mail_transaction_log_view_get_prev_modseq
  - mail_transaction_log_view_get_last
  - mail_transaction_log_view_is_last
  - mail_transaction_log_view_set_corrupted
  - mail_transaction_log_view_is_corrupted
  - log_view_is_uid_range_valid
  - log_view_is_record_valid
  - log_view_get_next
  - mail_transaction_log_view_next
  - mail_transaction_log_view_mark
  - mail_transaction_log_view_rewind
  source_file: /src/dovecot/src/lib-index/mail-transaction-log-view.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_view_open
  source_file: /src/dovecot/src/lib-index/mail-index.h
  types:
    enum:
    - enumerators:
      - name: MAIL_INDEX_OPEN_FLAG_CREATE
        value: '0x01'
      - name: MAIL_INDEX_OPEN_FLAG_DOTLOCK_USE_EXCL
        value: '0x10'
      - name: MAIL_INDEX_OPEN_FLAG_NFS_FLUSH
        value: '0x40'
      - name: MAIL_INDEX_OPEN_FLAG_MMAP_DISABLE
        value: '0x04'
      - name: MAIL_INDEX_OPEN_FLAG_READONLY
        value: '0x80'
      - name: MAIL_INDEX_OPEN_FLAG_KEEP_BACKUPS
        value: '0x100'
      - name: MAIL_INDEX_OPEN_FLAG_NEVER_IN_MEMORY
        value: '0x200'
      - name: MAIL_INDEX_OPEN_FLAG_SAVEONLY
        value: '0x400'
      - name: MAIL_INDEX_OPEN_FLAG_DEBUG
        value: '0x800'
      - name: MAIL_INDEX_OPEN_FLAG_NO_DIRTY
        value: '0x1000'
      item_type: enum
      name: mail_index_open_flags
      pos:
        line_end: 42
        line_start: 18
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_COMPAT_LITTLE_ENDIAN
        value: '0x01'
      item_type: enum
      name: mail_index_header_compat_flags
      pos:
        line_end: 49
        line_start: 44
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_HDR_FLAG_CORRUPTED
        value: '0x0001'
      - name: MAIL_INDEX_HDR_FLAG_HAVE_DIRTY
        value: '0x0002'
      - name: MAIL_INDEX_HDR_FLAG_FSCKD
        value: '0x0004'
      item_type: enum
      name: mail_index_header_flag
      pos:
        line_end: 61
        line_start: 51
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_MAIL_FLAG_UNUSED
        value: '0x20'
      - name: MAIL_INDEX_MAIL_FLAG_DIRTY
        value: '0x80'
      - name: MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ
        value: '0x100'
      - name: MAIL_INDEX_MAIL_FLAG_BACKEND
        value: '0x40'
      item_type: enum
      name: mail_index_mail_flags
      pos:
        line_end: 77
        line_start: 63
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_ERROR_CODE_NONE
      - name: MAIL_INDEX_ERROR_CODE_NO_SPACE
      - name: MAIL_INDEX_ERROR_CODE_NO_ACCESS
      item_type: enum
      name: mail_index_error_code
      pos:
        line_end: 83
        line_start: 79
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_TRANSACTION_FLAG_HIDE
        value: '0x01'
      - name: MAIL_INDEX_TRANSACTION_FLAG_SYNC
        value: '0x10'
      - name: MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL
        value: '0x02'
      - name: MAIL_INDEX_TRANSACTION_FLAG_AVOID_FLAG_UPDATES
        value: '0x04'
      - name: MAIL_INDEX_TRANSACTION_FLAG_FSYNC
        value: '0x08'
      item_type: enum
      name: mail_index_transaction_flags
      pos:
        line_end: 209
        line_start: 193
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_SYNC_TYPE_EXPUNGE
        value: '0x02'
      - name: MAIL_INDEX_SYNC_TYPE_KEYWORD_ADD
        value: '0x08'
      - name: MAIL_INDEX_SYNC_TYPE_KEYWORD_REMOVE
        value: '0x10'
      - name: MAIL_INDEX_SYNC_TYPE_FLAGS
        value: '0x04'
      item_type: enum
      name: mail_index_sync_type
      pos:
        line_end: 216
        line_start: 211
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_FSYNC_MASK_APPENDS
        value: '0x01'
      - name: MAIL_INDEX_FSYNC_MASK_KEYWORDS
        value: '0x08'
      - name: MAIL_INDEX_FSYNC_MASK_EXPUNGES
        value: '0x02'
      - name: MAIL_INDEX_FSYNC_MASK_FLAGS
        value: '0x04'
      item_type: enum
      name: mail_index_fsync_mask
      pos:
        line_end: 223
        line_start: 218
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_SYNC_FLAG_FLUSH_DIRTY
        value: '0x01'
      - name: MAIL_INDEX_SYNC_FLAG_AVOID_FLAG_UPDATES
        value: '0x04'
      - name: MAIL_INDEX_SYNC_FLAG_FSYNC
        value: '0x10'
      - name: MAIL_INDEX_SYNC_FLAG_REQUIRE_CHANGES
        value: '0x08'
      - name: MAIL_INDEX_SYNC_FLAG_DROP_RECENT
        value: '0x02'
      - name: MAIL_INDEX_SYNC_FLAG_DELETING_INDEX
        value: '0x20'
      - name: MAIL_INDEX_SYNC_FLAG_TRY_DELETING_INDEX
        value: '0x40'
      - name: MAIL_INDEX_SYNC_FLAG_UPDATE_TAIL_OFFSET
        value: '0x80'
      item_type: enum
      name: mail_index_sync_flags
      pos:
        line_end: 247
        line_start: 225
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_VIEW_SYNC_FLAG_NOEXPUNGES
        value: '0x01'
      - name: MAIL_INDEX_VIEW_SYNC_FLAG_FIX_INCONSISTENT
        value: '0x02'
      - name: MAIL_INDEX_VIEW_SYNC_FLAG_2ND_INDEX
        value: '0x04'
      item_type: enum
      name: mail_index_view_sync_flags
      pos:
        line_end: 260
        line_start: 249
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_VIEW_SYNC_TYPE_FLAGS
        value: '0x01'
      - name: MAIL_INDEX_VIEW_SYNC_TYPE_MODSEQ
        value: '0x02'
      item_type: enum
      name: mail_index_view_sync_type
      pos:
        line_end: 281
        line_start: 277
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - enumerators:
      - name: MAIL_INDEX_TRANSACTION_CHANGE_APPEND
        value: BIT(0)
      - name: MAIL_INDEX_TRANSACTION_CHANGE_FLAGS
        value: BIT(2)
      - name: MAIL_INDEX_TRANSACTION_CHANGE_EXPUNGE
        value: BIT(1)
      - name: MAIL_INDEX_TRANSACTION_CHANGE_MODSEQ
        value: BIT(4)
      - name: MAIL_INDEX_TRANSACTION_CHANGE_KEYWORDS
        value: BIT(3)
      - name: MAIL_INDEX_TRANSACTION_CHANGE_ATTRIBUTE
        value: BIT(5)
      - name: MAIL_INDEX_TRANSACTION_CHANGE_OTHERS
        value: BIT(30)
      item_type: enum
      name: mail_index_transaction_change
      pos:
        line_end: 300
        line_start: 291
        source_file: /src/dovecot/src/lib-index/mail-index.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_INDEX_MAJOR_VERSION
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-index/mail-index.h
      type_or_value: '7'
    - item_type: preproc_def
      name: MAIL_INDEX_MINOR_VERSION
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-index/mail-index.h
      type_or_value: '3'
    - item_type: preproc_def
      name: MAIL_INDEX_HEADER_MIN_SIZE
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-index/mail-index.h
      type_or_value: '120'
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_LOCK_WARN_SECS
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-index/mail-index.h
      type_or_value: '30'
    - item_type: preproc_def
      name: MAIL_INDEX_FLAGS_MASK
      pos:
        line_end: 87
        line_start: 85
        source_file: /src/dovecot/src/lib-index/mail-index.h
      type_or_value: (MAIL_ANSWERED | MAIL_FLAGGED | MAIL_DELETED | MAIL_SEEN | MAIL_DRAFT)
    - item_type: preproc_def
      name: MAIL_INDEX_RECORD_MIN_SIZE
      pos:
        line_end: 179
        line_start: 178
        source_file: /src/dovecot/src/lib-index/mail-index.h
      type_or_value: (sizeof(uint32_t) + sizeof(uint8_t))
    structs:
    - fields:
      - name: major_version
        type: uint8_t
      - name: minor_version
        type: uint8_t
      - name: base_header_size
        type: uint16_t
      - name: header_size
        type: uint32_t
      - name: record_size
        type: uint32_t
      - name: compat_flags
        type: uint8_t
      - name: unused[3]
        type: uint8_t
      - name: indexid
        type: uint32_t
      - name: flags
        type: uint32_t
      - name: uid_validity
        type: uint32_t
      - name: next_uid
        type: uint32_t
      - name: messages_count
        type: uint32_t
      - name: unused_old_recent_messages_count
        type: uint32_t
      - name: seen_messages_count
        type: uint32_t
      - name: deleted_messages_count
        type: uint32_t
      - name: first_recent_uid
        type: uint32_t
      - name: first_unseen_uid_lowwater
        type: uint32_t
      - name: first_deleted_uid_lowwater
        type: uint32_t
      - name: log_file_seq
        type: uint32_t
      - name: log_file_tail_offset
        type: uint32_t
      - name: log_file_head_offset
        type: uint32_t
      - name: unused_old_sync_size_part1
        type: uint32_t
      - name: log2_rotate_time
        type: uint32_t
      - name: last_temp_file_scan
        type: uint32_t
      - name: day_stamp
        type: uint32_t
      - name: day_first_uid[8]
        type: uint32_t
      item_type: struct
      name: mail_index_header
      pos:
        line_end: 176
        line_start: 88
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: uid
        type: uint32_t
      - name: flags
        type: uint8_t
      item_type: struct
      name: mail_index_record
      pos:
        line_end: 182
        line_start: 179
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: '*index'
        type: struct mail_index
      - name: count
        type: unsigned int
      - name: refcount
        type: int
      - name: idx[FLEXIBLE_ARRAY_MEMBER]
        type: unsigned int
      item_type: struct
      name: mail_keywords
      pos:
        line_end: 191
        line_start: 184
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: uid1
        type: uint32_t
      - name: type
        type: enum mail_index_sync_type
      - name: add_flags
        type: uint8_t
      - name: remove_flags
        type: uint8_t
      - name: keyword_idx
        type: unsigned int
      - name: guid_128
        type: guid_128_t
      item_type: struct
      name: mail_index_sync_rec
      pos:
        line_end: 275
        line_start: 262
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: uid1
        type: uint32_t
      - name: type
        type: enum mail_index_view_sync_type
      - name: hidden
        type: bool
      item_type: struct
      name: mail_index_view_sync_rec
      pos:
        line_end: 289
        line_start: 283
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: log_file_seq
        type: uint32_t
      - name: log_file_offset
        type: uoff_t
      - name: commit_size
        type: uoff_t
      - name: changes_mask
        type: enum mail_index_transaction_change
      - name: ignored_modseq_changes
        type: unsigned int
      item_type: struct
      name: mail_index_transaction_commit_result
      pos:
        line_end: 312
        line_start: 302
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: rewrite_min_log_bytes
        type: uoff_t
      - name: rewrite_max_log_bytes
        type: uoff_t
      item_type: struct
      name: mail_index_base_optimization_settings
      pos:
        line_end: 319
        line_start: 314
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: min_size
        type: uoff_t
      - name: max_size
        type: uoff_t
      - name: min_age_secs
        type: unsigned int
      - name: log2_max_age_secs
        type: unsigned int
      item_type: struct
      name: mail_index_log_optimization_settings
      pos:
        line_end: 331
        line_start: 321
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: unaccessed_field_drop_secs
        type: unsigned int
      - name: record_max_size
        type: unsigned int
      - name: max_header_name_length
        type: unsigned int
      - name: max_headers_count
        type: unsigned int
      - name: max_size
        type: uoff_t
      - name: purge_min_size
        type: uoff_t
      - name: purge_delete_percentage
        type: unsigned int
      - name: purge_continued_percentage
        type: unsigned int
      - name: purge_header_continue_count
        type: unsigned int
      item_type: struct
      name: mail_index_cache_optimization_settings
      pos:
        line_end: 357
        line_start: 333
        source_file: /src/dovecot/src/lib-index/mail-index.h
    - fields:
      - name: index
        type: struct mail_index_base_optimization_settings
      - name: log
        type: struct mail_index_log_optimization_settings
      - name: cache
        type: struct mail_index_cache_optimization_settings
      item_type: struct
      name: mail_index_optimization_settings
      pos:
        line_end: 363
        line_start: 359
        source_file: /src/dovecot/src/lib-index/mail-index.h
    typedefs: []
    union: []
- function_names:
  - mail_index_alloc
  - mail_index_free
  - mail_index_set_cache_dir
  - mail_index_set_fsync_mode
  - mail_index_use_existing_permissions
  - mail_index_set_permissions
  - mail_index_set_lock_method
  - mail_index_set_optimization_settings
  - mail_index_set_ext_init_data
  - mail_index_ext_name_is_valid
  - mail_index_ext_register
  - mail_index_ext_register_resize_defaults
  - mail_index_ext_lookup
  - mail_index_register_expunge_handler
  - mail_index_unregister_expunge_handler
  - mail_index_keyword_lookup
  - mail_index_keyword_lookup_or_create
  - mail_index_get_keywords
  - mail_index_keywords_create
  - mail_index_keywords_create_from_indexes
  - mail_index_keywords_ref
  - mail_index_keywords_unref
  - mail_index_try_open_only
  - mail_index_try_open
  - mail_index_create_tmp_file
  - mail_index_get_cache_path
  - mail_index_open_files
  - mail_index_open_opened
  - mail_index_open
  - mail_index_open_or_create
  - mail_index_close_file
  - mail_index_close_nonopened
  - mail_index_close
  - mail_index_unlink
  - mail_index_reopen_if_changed
  - mail_index_refresh
  - mail_index_get_cache
  - mail_index_set_verror
  - mail_index_set_error
  - mail_index_set_error_code
  - mail_index_set_error_nolog
  - mail_index_is_in_memory
  - mail_index_set_as_in_memory
  - mail_index_move_to_memory
  - mail_index_mark_corrupted
  - mail_index_is_deleted
  - mail_index_get_modification_time
  - mail_index_fchown
  - mail_index_lock_sync
  - mail_index_unlock
  - mail_index_is_locked
  - mail_index_set_syscall_error
  - mail_index_file_set_syscall_error
  - mail_index_get_last_error
  - mail_index_reset_error
  source_file: /src/dovecot/src/lib-index/mail-index.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_view_clone
  - mail_index_view_dup_private
  source_file: /src/dovecot/src/lib-index/mail-index-view-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: log_file_seq
        type: uint32_t
      - name: length
        type: unsigned int
      - name: log_file_offset
        type: uoff_t
      item_type: struct
      name: mail_index_view_log_sync_area
      pos:
        line_end: 9
        line_start: 5
        source_file: /src/dovecot/src/lib-index/mail-index-view-private.h
    - fields:
      - name: (*close)(struct mail_index_view *view)
        type: void
      - name: (*get_messages_count)(struct mail_index_view *view)
        type: uint32_t
      - name: "*\n\t\t(*get_header)(struct mail_index_view *view)"
        type: struct mail_index_header
      - name: "*\n\t\t(*lookup_full)(struct mail_index_view *view, uint32_t seq,\n\t\t\t
          \      struct mail_index_map **map_r, bool *expunged_r)"
        type: struct mail_index_record
      - name: "(*lookup_uid)(struct mail_index_view *view, uint32_t seq,\n\t\t\t   uint32_t
          *uid_r)"
        type: void
      - name: "(*lookup_seq_range)(struct mail_index_view *view,\n\t\t\t\t uint32_t
          first_uid, uint32_t last_uid,\n\t\t\t\t uint32_t *first_seq_r, uint32_t
          *last_seq_r)"
        type: void
      - name: "(*lookup_first)(struct mail_index_view *view,\n\t\t\t     enum mail_flags
          flags, uint8_t flags_mask,\n\t\t\t     uint32_t *seq_r)"
        type: void
      - name: "(*lookup_keywords)(struct mail_index_view *view, uint32_t seq,\n\t\t\t\tARRAY_TYPE(keyword_indexes)
          *keyword_idx)"
        type: void
      - name: "(*lookup_ext_full)(struct mail_index_view *view, uint32_t seq,\n\t\t\t\tuint32_t
          ext_id, struct mail_index_map **map_r,\n\t\t\t\tconst void **data_r, bool
          *expunged_r)"
        type: void
      - name: "(*get_header_ext)(struct mail_index_view *view,\n\t\t\t       struct
          mail_index_map *map, uint32_t ext_id,\n\t\t\t       const void **data_r,
          size_t *data_size_r)"
        type: void
      - name: "(*ext_get_reset_id)(struct mail_index_view *view,\n\t\t\t\t struct
          mail_index_map *map,\n\t\t\t\t uint32_t ext_id, uint32_t *reset_id_r)"
        type: bool
      item_type: struct
      name: mail_index_view_vfuncs
      pos:
        line_end: 39
        line_start: 12
        source_file: /src/dovecot/src/lib-index/mail-index-view-private.h
    - fields:
      - name: '*prev'
        type: struct mail_index_view
      - name: refcount
        type: int
      - name: v
        type: struct mail_index_view_vfuncs
      - name: '*index'
        type: struct mail_index
      - name: '*log_view'
        type: struct mail_transaction_log_view
      - name: '*source_filename'
        type: char
      - name: source_linenum
        type: unsigned int
      - name: indexid
        type: uint32_t
      - name: inconsistency_id
        type: unsigned int
      - name: highest_modseq
        type: uint64_t
      - name: '*map'
        type: struct mail_index_map
      - name: log_file_expunge_seq
        type: uint32_t
      - name: log_file_expunge_offset
        type: uoff_t
      - name: (view_log_sync_area)
        type: ARRAY_TYPE
      - name: '*transactions_list'
        type: struct mail_index_transaction
      - name: inconsistent
        type: bool
      - name: syncing
        type: bool
      item_type: struct
      name: mail_index_view
      pos:
        line_end: 92
        line_start: 45
        source_file: /src/dovecot/src/lib-index/mail-index-view-private.h
    typedefs: []
    union:
    - fields:
      - name: '*reg'
        type: struct mail_index_module_register
      item_type: union
      name: mail_index_view_module_context
      pos:
        line_end: 43
        line_start: 41
        source_file: /src/dovecot/src/lib-index/mail-index-view-private.h
- function_names:
  - MAIL_INDEX_IS_IN_MEMORY
  - MAIL_INDEX_MAP_IS_IN_MEMORY
  - MAIL_INDEX_MAP_IDX
  - MAIL_INDEX_REC_AT_SEQ
  - MAIL_TRANSACTION_FLAG_UPDATE_IS_INTERNAL
  - MAIL_INDEX_HEADER_SIZE_ALIGN
  - MAIL_INDEX_MAP_HDR_OFFSET
  source_file: /src/dovecot/src/lib-index/mail-index-private.h
  types:
    enum:
    - enumerators:
      - name: MAIL_INDEX_SYNC_HANDLER_FILE
        value: '0x01'
      - name: MAIL_INDEX_SYNC_HANDLER_HEAD
        value: '0x02'
      - name: MAIL_INDEX_SYNC_HANDLER_VIEW
        value: '0x04'
      item_type: enum
      name: mail_index_sync_handler_type
      pos:
        line_end: 103
        line_start: 99
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_INDEX_MMAP_MIN_SIZE
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
      type_or_value: (1024*64)
    - item_type: preproc_def
      name: MAIL_INDEX_ESTALE_RETRY_COUNT
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
      type_or_value: NFS_ESTALE_RETRY_COUNT
    - item_type: preproc_def
      name: MAIL_INDEX_EXT_HEADER_MAX_SIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
      type_or_value: (1024*1024*16-1)
    - item_type: preproc_def
      name: MAIL_INDEX_EXT_KEYWORDS
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
      type_or_value: '"keywords"'
    - item_type: preproc_def
      name: MAIL_INDEX_EXT_NAME_MAX_LENGTH
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
      type_or_value: '64'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: index_idx
        type: uint32_t
      - name: reset_id
        type: uint32_t
      - name: ext_offset
        type: uint32_t
      - name: hdr_offset
        type: uint32_t
      - name: hdr_size
        type: uint32_t
      - name: record_offset
        type: uint16_t
      - name: record_size
        type: uint16_t
      - name: record_align
        type: uint16_t
      item_type: struct
      name: mail_index_ext
      pos:
        line_end: 62
        line_start: 52
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: hdr_size
        type: uint32_t
      - name: reset_id
        type: uint32_t
      - name: record_offset
        type: uint16_t
      - name: record_size
        type: uint16_t
      - name: record_align
        type: uint16_t
      - name: name_size
        type: uint16_t
      item_type: struct
      name: mail_index_ext_header
      pos:
        line_end: 86
        line_start: 64
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: keywords_count
        type: uint32_t
      item_type: struct
      name: mail_index_keyword_header
      pos:
        line_end: 92
        line_start: 88
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: unused
        type: uint32_t
      - name: name_offset
        type: uint32_t
      item_type: struct
      name: mail_index_keyword_header_rec
      pos:
        line_end: 97
        line_start: 94
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: '*name'
        type: char
      - name: index_idx
        type: uint32_t
      - name: hdr_size
        type: uint32_t
      - name: record_size
        type: uint16_t
      - name: record_align
        type: uint16_t
      - name: '*expunge_handler'
        type: mail_index_expunge_handler_t
      item_type: struct
      name: mail_index_registered_ext
      pos:
        line_end: 113
        line_start: 105
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: highest_modseq
        type: uint64_t
      - name: log_seq
        type: uint32_t
      - name: log_offset
        type: uint32_t
      item_type: struct
      name: mail_index_modseq_header
      pos:
        line_end: 121
        line_start: 115
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: '*mmap_base'
        type: void
      - name: mmap_size
        type: size_t
      - name: '*buffer'
        type: buffer_t
      - name: '*records'
        type: void
      - name: records_count
        type: unsigned int
      - name: last_appended_uid
        type: uint32_t
      item_type: struct
      name: mail_index_record_map
      pos:
        line_end: 135
        line_start: 123
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: '*index'
        type: struct mail_index
      - name: refcount
        type: int
      - name: hdr
        type: struct mail_index_header
      - name: '*hdr_copy_buf'
        type: buffer_t
      - name: extension_pool
        type: pool_t
      - name: (uint32_t)
        type: ARRAY
      - name: modseq_hdr_snapshot
        type: struct mail_index_modseq_header
      - name: '*rec_map'
        type: struct mail_index_record_map
      item_type: struct
      name: mail_index_map
      pos:
        line_end: 159
        line_start: 139
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: mail_index_module_register
      pos:
        line_end: 163
        line_start: 161
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: '*cache_dir'
        type: char
      - name: fsync_mode
        type: enum fsync_mode
      - name: fsync_mask
        type: enum mail_index_fsync_mask
      - name: mode
        type: mode_t
      - name: gid
        type: gid_t
      - name: '*gid_origin'
        type: char
      - name: lock_method
        type: enum file_lock_method
      - name: max_lock_timeout_secs
        type: unsigned int
      - name: ext_hdr_init_id
        type: uint32_t
      - name: '*ext_hdr_init_data'
        type: void
      item_type: struct
      name: mail_index_settings
      pos:
        line_end: 191
        line_start: 169
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: '*text'
        type: char
      - name: code
        type: enum mail_index_error_code
      item_type: struct
      name: mail_index_error
      pos:
        line_end: 197
        line_start: 193
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    - fields:
      - name: '*dir'
        type: char
      - name: '*prefix'
        type: char
      - name: '*event'
        type: struct event
      - name: flags
        type: enum mail_index_open_flags
      - name: set
        type: struct mail_index_settings
      - name: optimization_set
        type: struct mail_index_optimization_settings
      - name: '*cache'
        type: struct mail_cache
      - name: '*log'
        type: struct mail_transaction_log
      - name: '*filepath'
        type: char
      - name: fd
        type: int
      - name: '*views'
        type: struct mail_index_view
      - name: '*map'
        type: struct mail_index_map
      - name: indexid
        type: uint32_t
      - name: inconsistency_id
        type: unsigned int
      - name: open_count
        type: unsigned int
      - name: main_index_hdr_log_file_seq
        type: uint32_t
      - name: main_index_hdr_log_file_tail_offset
        type: uint32_t
      - name: index_delete_changed_file_seq
        type: uint32_t
      - name: fsck_log_head_file_seq
        type: uint32_t
      - name: fsck_log_head_file_offset
        type: uoff_t
      - name: '*sync_commit_result'
        type: struct mail_index_transaction_commit_result
      - name: hdr_log2_rotate_time_delayed_update
        type: uint32_t
      - name: extension_pool
        type: pool_t
      - name: keywords_pool
        type: pool_t
      - name: (keywords)
        type: ARRAY_TYPE
      - name: keywords_ext_id
        type: uint32_t
      - name: modseq_ext_id
        type: uint32_t
      - name: last_error
        type: struct mail_index_error
      - name: last_mmap_error_time
        type: time_t
      - name: '*need_recreate'
        type: char
      - name: index_delete_requested
        type: bool
      - name: index_deleted
        type: bool
      - name: log_sync_locked
        type: bool
      - name: readonly
        type: bool
      - name: mapping
        type: bool
      - name: syncing
        type: bool
      - name: index_min_write
        type: bool
      - name: initial_create
        type: bool
      - name: initial_mapped
        type: bool
      - name: reopen_main_index
        type: bool
      - name: fscked
        type: bool
      - name: initial_created
        type: bool
      item_type: struct
      name: mail_index
      pos:
        line_end: 319
        line_start: 199
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
    typedefs:
    - item_type: typedef
      name: "mail_index_expunge_handler_t(struct mail_index_sync_map_ctx *ctx,\n\t\t\t\t\t
        const void *data, void **sync_context)"
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
      type: int
    union:
    - fields:
      - name: '*reg'
        type: struct mail_index_module_register
      item_type: union
      name: mail_index_module_context
      pos:
        line_end: 167
        line_start: 165
        source_file: /src/dovecot/src/lib-index/mail-index-private.h
- function_names:
  - MAIL_TRANSACTION_LOG_FILE_IN_MEMORY
  source_file: /src/dovecot/src/lib-index/mail-transaction-log-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_LOCK_TIMEOUT
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-private.h
      type_or_value: (3*60)
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_DOTLOCK_CHANGE_TIMEOUT
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-private.h
      type_or_value: (3*60)
    - item_type: preproc_def
      name: LOG_FILE_MODSEQ_CACHE_SIZE
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-private.h
      type_or_value: '10'
    structs:
    - fields:
      - name: offset
        type: uoff_t
      - name: highest_modseq
        type: uint64_t
      item_type: struct
      name: modseq_cache
      pos:
        line_end: 20
        line_start: 17
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-private.h
    - fields:
      - name: '*log'
        type: struct mail_transaction_log
      - name: '*next'
        type: struct mail_transaction_log_file
      - name: refcount
        type: int
      - name: '*filepath'
        type: char
      - name: fd
        type: int
      - name: st_ino
        type: ino_t
      - name: st_dev
        type: dev_t
      - name: last_mtime
        type: time_t
      - name: last_size
        type: uoff_t
      - name: last_mmap_error_time
        type: time_t
      - name: '*need_rotate'
        type: char
      - name: hdr
        type: struct mail_transaction_log_header
      - name: mmap_buffer
        type: buffer_t
      - name: '*buffer'
        type: buffer_t
      - name: buffer_offset
        type: uoff_t
      - name: '*mmap_base'
        type: void
      - name: mmap_size
        type: size_t
      - name: sync_offset
        type: uoff_t
      - name: sync_highest_modseq
        type: uint64_t
      - name: last_read_hdr_tail_offset
        type: uoff_t
      - name: max_tail_offset
        type: uoff_t
      - name: index_deleted_offset
        type: uoff_t
      - name: modseq_cache[LOG_FILE_MODSEQ_CACHE_SIZE]
        type: struct modseq_cache
      - name: '*file_lock'
        type: struct file_lock
      - name: lock_create_time
        type: time_t
      - name: locked
        type: bool
      - name: locked_sync_offset_updated
        type: bool
      - name: corrupted
        type: bool
      item_type: struct
      name: mail_transaction_log_file
      pos:
        line_end: 104
        line_start: 22
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-private.h
    - fields:
      - name: '*index'
        type: struct mail_index
      - name: '*views'
        type: struct mail_transaction_log_view
      - name: '*filepath'
        type: char
      - name: '*files'
        type: struct mail_transaction_log_file
      - name: '*head'
        type: struct mail_transaction_log_file
      - name: '*open_file'
        type: struct mail_transaction_log_file
      - name: dotlock_refcount
        type: int
      - name: '*dotlock'
        type: struct dotlock
      - name: log_2_unlink_checked
        type: bool
      item_type: struct
      name: mail_transaction_log
      pos:
        line_end: 138
        line_start: 106
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-private.h
    typedefs: []
    union: []
- function_names:
  - update_modseq_test_get_size
  - test_mail_transaction_update_modseq
  - test_mail_index_open
  - test_mail_transaction_log_file_modseq_offsets
  - MODSEQ_MATCH
  - test_mail_transaction_log_file_get_modseq_next_offset_inconsistency
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_LOG_VERSION
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
      type_or_value: MAIL_TRANSACTION_LOG_VERSION_FULL(1, 3)
    - item_type: preproc_def
      name: INITIAL_MODSEQ
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
      type_or_value: '100'
    - item_type: preproc_def
      name: NOUPDATE
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
      type_or_value: (INITIAL_MODSEQ)
    - item_type: preproc_def
      name: UPDATE
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
      type_or_value: (INITIAL_MODSEQ+1)
    structs:
    - fields:
      - name: type
        type: enum mail_transaction_type
      - name: version
        type: unsigned int
      - name: expected_modseq
        type: uint64_t
      - name: count
        type: unsigned int
      - name: v
        type: "union {\n\t\tconst struct mail_transaction_flag_update *flag_update;\n\t\tconst
          struct mail_transaction_modseq_update *modseq_update;\n\t}"
      item_type: struct
      name: update_modseq_test
      pos:
        line_end: 23
        line_start: 12
        source_file: /src/dovecot/src/lib-index/test-mail-transaction-log-file.c
    typedefs: []
    union: []
- function_names:
  - mail_index_lock_fd
  - mail_index_flush_read_cache
  source_file: /src/dovecot/src/lib-index/mail-index-lock.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mailbox_log_alloc
  - mailbox_log_free
  - mailbox_log_close
  - mailbox_log_set_permissions
  - mailbox_log_open
  - mailbox_log_rotate_if_needed
  - mailbox_log_record_set_timestamp
  - mailbox_log_record_get_timestamp
  - mailbox_log_append
  - mailbox_log_iter_open_next
  - mailbox_log_iter_init
  - mailbox_log_iter_next
  - mailbox_log_iter_deinit
  source_file: /src/dovecot/src/lib-index/mailbox-log.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_LOG_REOPEN_SECS
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-index/mailbox-log.c
      type_or_value: (60)
    - item_type: preproc_def
      name: MAILBOX_LOG_ROTATE_SIZE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-index/mailbox-log.c
      type_or_value: (1024*4)
    structs:
    - fields:
      - name: '*filepath'
        type: char
      - name: fd
        type: int
      - name: '*event'
        type: struct event
      - name: open_timestamp
        type: time_t
      - name: mode
        type: mode_t
      - name: gid
        type: gid_t
      - name: '*gid_origin'
        type: char
      item_type: struct
      name: mailbox_log
      pos:
        line_end: 31
        line_start: 22
        source_file: /src/dovecot/src/lib-index/mailbox-log.c
    - fields:
      - name: '*log'
        type: struct mailbox_log
      - name: fd
        type: int
      - name: '*filepath'
        type: char
      - name: buf[128]
        type: struct mailbox_log_record
      - name: idx
        type: unsigned int
      - name: offset
        type: uoff_t
      - name: failed
        type: bool
      item_type: struct
      name: mailbox_log_iter
      pos:
        line_end: 43
        line_start: 33
        source_file: /src/dovecot/src/lib-index/mailbox-log.c
    typedefs: []
    union: []
- function_names:
  - mail_index_file_set_syscall_error
  - mail_transaction_log_lock_head
  - mail_transaction_log_file_unlock
  - mail_transaction_update_modseq
  - mail_index_move_to_memory
  - test_append_expunge
  - test_append_sync_offset
  - test_mail_transaction_log_append
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-transaction-log-append.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_view_has_modseqs
  - mail_index_modseq_init
  - mail_index_modseq_get_head
  - mail_index_modseq_enable
  - mail_index_have_modseq_tracking
  - mail_index_modseq_hdr_snapshot_update
  - mail_index_map_get_modseq_header
  - mail_index_map_modseq_get_highest
  - mail_index_modseq_get_highest
  - mail_index_modseq_lookup
  - mail_index_modseq_set
  - mail_index_modseq_update
  - mail_index_modseq_update_to_highest
  - mail_index_modseq_update_old_rec
  - mail_index_modseq_sync_init
  - mail_index_modseq_sync_begin
  - mail_index_modseq_update_header
  - mail_index_modseq_sync_end
  - mail_index_modseq_hdr_update
  - mail_index_modseq_get_next_log_offset
  source_file: /src/dovecot/src/lib-index/mail-index-modseq.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*sync_map_ctx'
        type: struct mail_index_sync_map_ctx
      - name: '*view'
        type: struct mail_index_view
      - name: '*log_view'
        type: struct mail_transaction_log_view
      item_type: struct
      name: mail_index_modseq_sync
      pos:
        line_end: 13
        line_start: 9
        source_file: /src/dovecot/src/lib-index/mail-index-modseq.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/mail-index-modseq.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_INDEX_MODSEQ_EXT_NAME
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-index/mail-index-modseq.h
      type_or_value: '"modseq"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAIL_CACHE_IS_UNUSABLE
  - MAIL_CACHE_FIELD_LAST_USED
  - MAIL_CACHE_FIELD_SIZE
  - MAIL_CACHE_FIELD_TYPE
  - MAIL_CACHE_FIELD_DECISION
  - MAIL_CACHE_FIELD_NAMES
  source_file: /src/dovecot/src/lib-index/mail-cache-private.h
  types:
    enum:
    - enumerators:
      - name: MAIL_CACHE_PURGE_DROP_DECISION_NONE
      - name: MAIL_CACHE_PURGE_DROP_DECISION_TO_TEMP
      - name: MAIL_CACHE_PURGE_DROP_DECISION_DROP
      item_type: enum
      name: mail_cache_purge_drop_decision
      pos:
        line_end: 410
        line_start: 406
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_CACHE_MAJOR_VERSION
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
      type_or_value: '1'
    - item_type: preproc_def
      name: MAIL_CACHE_MINOR_VERSION
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
      type_or_value: '1'
    - item_type: preproc_def
      name: MAIL_CACHE_LOCK_TIMEOUT
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
      type_or_value: '10'
    - item_type: preproc_def
      name: MAIL_CACHE_LOCK_CHANGE_TIMEOUT
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
      type_or_value: '300'
    - item_type: preproc_def
      name: MAIL_CACHE_MAX_WRITE_BUFFER
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
      type_or_value: (1024*256)
    structs:
    - fields:
      - name: major_version
        type: uint8_t
      - name: compat_sizeof_uoff_t
        type: uint8_t
      - name: minor_version
        type: uint8_t
      - name: unused
        type: uint8_t
      - name: indexid
        type: uint32_t
      - name: file_seq
        type: uint32_t
      - name: continued_record_count
        type: uint32_t
      - name: record_count
        type: uint32_t
      - name: backwards_compat_used_file_size
        type: uint32_t
      - name: deleted_record_count
        type: uint32_t
      - name: field_header_offset
        type: uint32_t
      item_type: struct
      name: mail_cache_header
      pos:
        line_end: 58
        line_start: 18
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: next_offset
        type: uint32_t
      - name: size
        type: uint32_t
      - name: fields_count
        type: uint32_t
      item_type: struct
      name: mail_cache_header_fields
      pos:
        line_end: 86
        line_start: 60
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: prev_offset
        type: uint32_t
      - name: size
        type: uint32_t
      item_type: struct
      name: mail_cache_record
      pos:
        line_end: 104
        line_start: 100
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: field
        type: struct mail_cache_field
      - name: uid_highwater
        type: uint32_t
      - name: used
        type: bool
      - name: decision_dirty
        type: bool
      item_type: struct
      name: mail_cache_field_private
      pos:
        line_end: 121
        line_start: 106
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: '*index'
        type: struct mail_index
      - name: '*event'
        type: struct event
      - name: ext_id
        type: uint32_t
      - name: '*filepath'
        type: char
      - name: fd
        type: int
      - name: dotlock_settings
        type: struct dotlock_settings
      - name: '*file_lock'
        type: struct file_lock
      - name: st_ino
        type: ino_t
      - name: st_dev
        type: dev_t
      - name: last_stat_size
        type: uoff_t
      - name: last_mmap_error_time
        type: time_t
      - name: '*mmap_base'
        type: void
      - name: '*file_cache'
        type: struct file_cache
      - name: read_offset
        type: uoff_t
      - name: '*read_buf'
        type: buffer_t
      - name: mmap_length
        type: size_t
      - name: remap_counter
        type: unsigned int
      - name: '*views'
        type: struct mail_cache_view
      - name: '*hdr'
        type: struct mail_cache_header
      - name: hdr_ro_copy
        type: struct mail_cache_header
      - name: hdr_copy
        type: struct mail_cache_header
      - name: last_field_header_offset
        type: uint32_t
      - name: field_pool
        type: pool_t
      - name: fields_count
        type: unsigned int
      - name: '*fields'
        type: struct mail_cache_field_private
      - name: '*field_file_map'
        type: uint32_t
      - name: '*file_field_map'
        type: unsigned int
      - name: file_fields_count
        type: unsigned int
      - name: need_purge_file_seq
        type: uint32_t
      - name: '*need_purge_reason'
        type: char
      - name: opened
        type: bool
      - name: locked
        type: bool
      - name: last_lock_failed
        type: bool
      - name: hdr_modified
        type: bool
      - name: field_header_write_pending
        type: bool
      - name: purging
        type: bool
      - name: map_with_read
        type: bool
      - name: headers_capped
        type: bool
      item_type: struct
      name: mail_cache
      pos:
        line_end: 223
        line_start: 123
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: min_offset
        type: uoff_t
      - name: size_sum
        type: uoff_t
      item_type: struct
      name: mail_cache_loop_track
      pos:
        line_end: 229
        line_start: 225
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: highest_checked_seq
        type: uint32_t
      - name: highest_seq_with_cache
        type: uint32_t
      - name: reset_id
        type: uint32_t
      - name: log_file_head_seq
        type: uint32_t
      - name: log_file_head_offset
        type: uoff_t
      item_type: struct
      name: mail_cache_missing_reason_cache
      pos:
        line_end: 238
        line_start: 231
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: '*cache'
        type: struct mail_cache
      - name: '*prev'
        type: struct mail_cache_view
      - name: '*view'
        type: struct mail_index_view
      - name: '*transaction'
        type: struct mail_cache_transaction_ctx
      - name: trans_seq1
        type: uint32_t
      - name: loop_track
        type: struct mail_cache_loop_track
      - name: reason_cache
        type: struct mail_cache_missing_reason_cache
      - name: '*cached_exists_buf'
        type: buffer_t
      - name: cached_exists_value
        type: uint8_t
      - name: cached_exists_seq
        type: uint32_t
      - name: no_decision_updates
        type: bool
      item_type: struct
      name: mail_cache_view
      pos:
        line_end: 271
        line_start: 240
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: field_idx
        type: unsigned int
      - name: size
        type: unsigned int
      - name: '*data'
        type: void
      - name: offset
        type: uoff_t
      item_type: struct
      name: mail_cache_iterate_field
      pos:
        line_end: 283
        line_start: 274
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: '*view'
        type: struct mail_cache_view
      - name: remap_counter
        type: unsigned int
      - name: seq
        type: uint32_t
      - name: '*rec'
        type: struct mail_cache_record
      - name: pos
        type: unsigned int
      - name: rec_size
        type: unsigned int
      - name: offset
        type: uint32_t
      - name: trans_next_idx
        type: unsigned int
      - name: stop
        type: bool
      - name: failed
        type: bool
      - name: memory_appends_checked
        type: bool
      - name: disk_appends_checked
        type: bool
      - name: inmemory_field_idx
        type: bool
      item_type: struct
      name: mail_cache_lookup_iterate_ctx
      pos:
        line_end: 328
        line_start: 285
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    - fields:
      - name: '*cache'
        type: struct mail_cache
      - name: max_yes_downgrade_time
        type: time_t
      - name: max_temp_drop_time
        type: time_t
      item_type: struct
      name: mail_cache_purge_drop_ctx
      pos:
        line_end: 405
        line_start: 401
        source_file: /src/dovecot/src/lib-index/mail-cache-private.h
    typedefs: []
    union: []
- function_names:
  - mail_cache_expunge_count
  - mail_cache_handler_init
  - mail_cache_handler_deinit
  - mail_cache_expunge_handler
  source_file: /src/dovecot/src/lib-index/mail-cache-sync-update.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: expunge_count
        type: unsigned int
      item_type: struct
      name: mail_cache_sync_context
      pos:
        line_end: 8
        line_start: 6
        source_file: /src/dovecot/src/lib-index/mail-cache-sync-update.c
    typedefs: []
    union: []
- function_names:
  - CACHE_FIELD_IS_NEWLY_WANTED
  - field_has_fixed_size
  - field_decision_is_valid
  - field_type_verify
  - mail_cache_field_update
  - mail_cache_register_fields
  - mail_cache_register_lookup
  - mail_cache_register_get_field
  - mail_cache_register_get_list
  - mail_cache_header_fields_get_offset
  - mail_cache_header_fields_read
  - copy_to_buf
  - copy_to_buf_byte
  - copy_to_buf_last_used
  - mail_cache_header_fields_update_locked
  - mail_cache_header_fields_update
  - mail_cache_header_fields_get
  - mail_cache_header_fields_get_next_offset
  source_file: /src/dovecot/src/lib-index/mail-cache-fields.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_index_get_dir
  - test_mail_index_open
  - test_mail_index_init
  - test_mail_index_close
  - test_mail_index_delete
  - test_mail_index_deinit
  source_file: /src/dovecot/src/lib-index/test-mail-index.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TESTDIR_NAME
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-index/test-mail-index.h
      type_or_value: '".dovecot.test"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - log_file_set_syscall_error
  - mail_transaction_log_mark_corrupted
  - mail_transaction_log_file_set_corrupted
  - mail_transaction_log_file_alloc
  - mail_transaction_log_file_free
  - mail_transaction_log_file_skip_to_head
  - mail_transaction_log_file_add_to_list
  - mail_transaction_log_init_hdr
  - mail_transaction_log_file_alloc_in_memory
  - mail_transaction_log_file_dotlock
  - mail_transaction_log_file_undotlock
  - mail_transaction_log_file_lock
  - mail_transaction_log_file_unlock
  - mail_transaction_log_file_read_header
  - mail_transaction_log_file_fail_dupe
  - mail_transaction_log_file_read_hdr
  - mail_transaction_log_file_stat
  - mail_transaction_log_file_is_dupe
  - log_write_ext_hdr_init_data
  - mail_transaction_log_file_create2
  - mail_transaction_log_file_create
  - mail_transaction_log_file_open
  - log_file_track_mailbox_sync_offset_hdr
  - flag_updates_have_non_internal
  - mail_transaction_update_modseq
  - log_file_track_sync
  - mail_transaction_log_file_sync
  - mail_transaction_log_file_insert_read
  - mail_transaction_log_file_read_more
  - mail_transaction_log_file_need_nfs_flush
  - mail_transaction_log_file_read
  - log_file_map_check_offsets
  - mail_transaction_log_file_mmap
  - mail_transaction_log_file_munmap
  - mail_transaction_log_file_map_mmap
  - mail_transaction_log_file_map
  - mail_transaction_log_file_move_to_memory
  source_file: /src/dovecot/src/lib-index/mail-transaction-log-file.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOG_PREFETCH
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-file.c
      type_or_value: IO_BLOCK_SIZE
    - item_type: preproc_def
      name: MEMORY_LOG_NAME
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-file.c
      type_or_value: '"(in-memory transaction log file)"'
    - item_type: preproc_def
      name: LOG_NEW_DOTLOCK_SUFFIX
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-file.c
      type_or_value: '".newlock"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - keyword_lookup
  - keywords_get_header_buf
  - keywords_ext_register
  - keywords_header_add
  - keywords_update_records
  - mail_index_sync_keywords
  - mail_index_sync_keywords_reset
  source_file: /src/dovecot/src/lib-index/mail-index-sync-keywords.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/mail-index-alloc-cache.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/mail-cache.h
  types:
    enum:
    - enumerators:
      - name: MAIL_CACHE_DECISION_NO
        value: '0x00'
      - name: MAIL_CACHE_DECISION_YES
        value: '0x02'
      - name: MAIL_CACHE_DECISION_FORCED
        value: '0x80'
      - name: MAIL_CACHE_DECISION_TEMP
        value: '0x01'
      item_type: enum
      name: mail_cache_decision_type
      pos:
        line_end: 21
        line_start: 11
        source_file: /src/dovecot/src/lib-index/mail-cache.h
    - enumerators:
      - name: MAIL_CACHE_FIELD_FIXED_SIZE
      - name: MAIL_CACHE_FIELD_STRING
      - name: MAIL_CACHE_FIELD_VARIABLE_SIZE
      - name: MAIL_CACHE_FIELD_BITMASK
      - name: MAIL_CACHE_FIELD_HEADER
      - name: MAIL_CACHE_FIELD_COUNT
      item_type: enum
      name: mail_cache_field_type
      pos:
        line_end: 45
        line_start: 23
        source_file: /src/dovecot/src/lib-index/mail-cache.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_CACHE_FILE_SUFFIX
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-index/mail-cache.h
      type_or_value: '".cache"'
    - item_type: preproc_def
      name: MAIL_CACHE_TRUNCATE_NAME_FAIL
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/dovecot/src/lib-index/mail-cache.h
      type_or_value: 'NULL'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: idx
        type: unsigned int
      - name: type
        type: enum mail_cache_field_type
      - name: field_size
        type: unsigned int
      - name: decision
        type: enum mail_cache_decision_type
      - name: last_used
        type: time_t
      item_type: struct
      name: mail_cache_field
      pos:
        line_end: 64
        line_start: 47
        source_file: /src/dovecot/src/lib-index/mail-cache.h
    typedefs: []
    union: []
- function_names:
  - view_sync_set_log_view_range
  - view_sync_expunges2seqs
  - view_sync_get_expunges
  - have_existing_expunges
  - have_existing_guid_expunge
  - view_sync_have_expunges
  - uint_cmp
  - view_sync_lost_keywords_equal
  - view_sync_update_keywords
  - view_sync_apply_lost_changes
  - view_sync_get_log_lost_changes
  - mail_index_view_sync_init_fix
  - mail_index_view_sync_begin
  - view_sync_is_hidden
  - mail_index_view_sync_want
  - mail_index_view_sync_get_next_transaction
  - mail_index_view_sync_get_rec
  - mail_index_view_sync_next_lost
  - mail_index_view_sync_next
  - mail_index_view_sync_get_expunges
  - mail_index_view_sync_clean_log_syncs
  - mail_index_view_sync_commit
  - mail_index_view_add_hidden_transaction
  source_file: /src/dovecot/src/lib-index/mail-index-view-sync.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*view'
        type: struct mail_index_view
      - name: flags
        type: enum mail_index_view_sync_flags
      - name: sync_map_ctx
        type: struct mail_index_sync_map_ctx
      - name: '*sync_new_map'
        type: struct mail_index_map
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: finish_min_msg_count
        type: unsigned int
      - name: '*hdr'
        type: struct mail_transaction_header
      - name: '*data'
        type: void
      - name: lost_old_kw
        type: ARRAY_TYPE
      - name: '*lost_kw_buf'
        type: buffer_t
      - name: lost_new_ext_idx
        type: uint32_t
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: lost_flag_idx
        type: unsigned int
      - name: data_offset
        type: size_t
      - name: failed
        type: bool
      - name: sync_map_update
        type: bool
      - name: skipped_expunges
        type: bool
      - name: last_read
        type: bool
      - name: log_was_lost
        type: bool
      - name: hidden
        type: bool
      item_type: struct
      name: mail_index_view_sync_ctx
      pos:
        line_end: 40
        line_start: 11
        source_file: /src/dovecot/src/lib-index/mail-index-view-sync.c
    typedefs: []
    union: []
- function_names:
  - tview_close
  - tview_get_message_count
  - tview_get_header
  - tview_apply_flag_updates
  - tview_lookup_full
  - tview_lookup_uid
  - tview_lookup_seq_range
  - tview_lookup_first
  - tview_lookup_keywords
  - tview_return_updated_ext
  - tview_is_ext_reset
  - tview_lookup_ext_update
  - tview_lookup_ext_full
  - tview_get_header_ext
  - tview_ext_get_reset_id
  - mail_index_transaction_open_updated_view
  source_file: /src/dovecot/src/lib-index/mail-index-transaction-view.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: view
        type: struct mail_index_view
      - name: '*super'
        type: struct mail_index_view_vfuncs
      - name: '*t'
        type: struct mail_index_transaction
      - name: '*lookup_map'
        type: struct mail_index_map
      - name: hdr
        type: struct mail_index_header
      - name: '*lookup_return_data'
        type: buffer_t
      - name: lookup_prev_seq
        type: uint32_t
      - name: record_size
        type: unsigned int
      - name: recs_count
        type: unsigned int
      - name: '*recs'
        type: void
      item_type: struct
      name: mail_index_view_transaction
      pos:
        line_end: 25
        line_start: 10
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-view.c
    typedefs: []
    union: []
- function_names:
  - test_mail_index_modseq_get_next_log_offset
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-index-modseq.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: log_seq
        type: uint32_t
      - name: log_offset
        type: uoff_t
      item_type: struct
      name: "tests[] = {\n\t\t{ 0, 0 },\n\t\t{ 2, 40 },\n\t\t{ 2, 148 },\n\t\t{ 2,
        164 },\n\t\t{ 3, 40 },\n\t\t{ 3, 56 },\n\t\t{ 3, 72 },\n\t\t{ 3, 88 },\n\t}"
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lib-index/test-mail-index-modseq.c
    typedefs: []
    union: []
- function_names:
  - mail_cache_decision_to_string
  - mail_cache_decision_changed_event
  - mail_cache_update_last_used
  - mail_cache_decision_state_update
  - mail_cache_count_alive_headers
  - mail_cache_headers_check_capped
  - mail_cache_decision_rejected_event
  - mail_cache_decision_add
  - mail_cache_decisions_copy
  source_file: /src/dovecot/src/lib-index/mail-cache-decisions.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_get_header
  - mail_index_lookup
  - mail_index_lookup_keywords
  - mail_index_map_get_ext_idx
  - mail_index_view_get_messages_count
  - mail_index_transaction_lookup_latest_keywords
  - mail_index_keywords_create_from_indexes
  - mail_index_keywords_unref
  - mail_index_transaction_new
  - mail_index_transaction_cleanup
  - test_mail_index_append
  - test_mail_index_flag_update_fastpath
  - test_mail_index_flag_update_simple_merges
  - test_mail_index_flag_update_complex_merges
  - flags_array_check
  - test_mail_index_flag_update_random
  - test_mail_index_cancel_flag_updates
  - test_mail_index_flag_update_appends
  - test_flag_update_pos
  - test_mail_index_transaction_get_flag_update_pos
  - test_mail_index_modseq_update
  - test_mail_index_expunge
  - test_mail_index_update_day_first_uid
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: now
        type: uint32_t
      - name: old_day_stamp
        type: uint32_t
      - name: new_day_stamp
        type: uint32_t
      - name: new_day_first_uid[8]
        type: uint32_t
      item_type: struct
      name: "tests[] = {\n\t\t/* 1487116800 = 2017-02-15 00:00:00 UTC */\n\t\t{ 1487116800,
        1487116800, 1487116800, { 8, 7, 6, 5, 4, 3, 2, 1 } },\n\t\t/* still same day
        */\n\t\t{ 1487116800+3600*24-1, 1487116800, 1487116800, { 8, 7, 6, 5, 4, 3,
        2, 1 } },\n\t\t/* one day earlier */\n\t\t{ 1487116800-1, 1487116800, 1487116800,
        { 8, 7, 6, 5, 4, 3, 2, 1 } },\n\t\t/* next day */\n\t\t{ 1487116800+3600*24,
        1487116800, 1487116800+3600*24, { 9, 8, 7, 6, 5, 4, 3, 2 } },\n\t\t{ 1487116800+3600*24*2-1,
        1487116800, 1487116800+3600*24, { 9, 8, 7, 6, 5, 4, 3, 2 } },\n\t\t/* 2 days
        */\n\t\t{ 1487116800+3600*24*2, 1487116800, 1487116800+3600*24*2, { 9, 8,
        8, 7, 6, 5, 4, 3 } },\n\t\t/* 3 days */\n\t\t{ 1487116800+3600*24*3, 1487116800,
        1487116800+3600*24*3, { 9, 8, 8, 8, 7, 6, 5, 4 } },\n\t\t/* 4 days */\n\t\t{
        1487116800+3600*24*4, 1487116800, 1487116800+3600*24*4, { 9, 8, 8, 8, 8, 7,
        6, 5 } },\n\t\t/* 5 days */\n\t\t{ 1487116800+3600*24*5, 1487116800, 1487116800+3600*24*5,
        { 9, 8, 8, 8, 8, 8, 7, 6 } },\n\t\t/* 6 days */\n\t\t{ 1487116800+3600*24*6,
        1487116800, 1487116800+3600*24*6, { 9, 8, 8, 8, 8, 8, 8, 7 } },\n\t\t/* 7
        days */\n\t\t{ 1487116800+3600*24*7, 1487116800, 1487116800+3600*24*7, { 9,
        8, 8, 8, 8, 8, 8, 8 } },\n\t\t/* 8 days */\n\t\t{ 1487116800+3600*24*8, 1487116800,
        1487116800+3600*24*8, { 9, 8, 8, 8, 8, 8, 8, 8 } },\n\t\t/* 366 days */\n\t\t{
        1487116800+3600*24*366, 1487116800, 1487116800+3600*24*366, { 9, 8, 8, 8,
        8, 8, 8, 8 } },\n\t}"
      pos:
        line_end: 598
        line_start: 593
        source_file: /src/dovecot/src/lib-index/test-mail-index-transaction-update.c
    typedefs: []
    union: []
- function_names:
  - test_mail_cache_read_during_purge2
  - test_mail_cache_read_during_purge
  - test_mail_cache_write_during_purge2
  - test_mail_cache_write_during_purge
  - test_mail_cache_purge_while_cache_locked
  - cache_equals
  - test_mail_cache_purge_during_write_n
  - test_mail_cache_write_lost_during_purge
  - test_mail_cache_write_lost_during_purge2
  - test_mail_cache_write_autocommit
  - test_mail_cache_write_autocommit2
  - max_field_size
  - test_mail_cache_delete_too_large_int
  - test_mail_cache_delete_too_large
  - test_mail_cache_delete_too_large2
  - test_mail_cache_purge_too_large_int
  - test_mail_cache_purge_too_large
  - test_mail_cache_purge_too_large2
  - test_mail_cache_unexpectedly_lost_int
  - test_mail_cache_unexpectedly_lost
  - test_mail_cache_unexpectedly_lost2
  - test_mail_cache_resetid_mismatch_int
  - test_mail_cache_resetid_mismatch
  - test_mail_cache_resetid_mismatch2
  - test_mail_cache_purge_field_changes_int
  - test_mail_cache_purge_field_changes
  - test_mail_cache_purge_field_changes2
  - test_mail_cache_purge_field_changes3
  - test_mail_cache_purge_field_changes4
  - test_mail_cache_purge_already_done
  - test_mail_cache_purge_bitmask
  - test_mail_cache_update_need_purge_continued_records_int
  - test_mail_cache_update_need_purge_continued_records
  - test_mail_cache_update_need_purge_continued_records2
  - test_mail_cache_update_need_purge_deleted_records_int
  - test_mail_cache_update_need_purge_deleted_records
  - test_mail_cache_update_need_purge_deleted_records2
  - test_mail_cache_purge_deadlines
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-cache-purge.c
  types:
    enum:
    - enumerators:
      - name: TEST_DROP_NOTHING
      - name: TEST_DROP_YES_TO_TEMP_FIRST
      - name: TEST_DROP_TEMP_TO_NO
      - name: TEST_DROP_YES_TO_TEMP_LAST
      item_type: enum
      name: test_drop
      pos:
        line_end: 642
        line_start: 637
        source_file: /src/dovecot/src/lib-index/test-mail-cache-purge.c
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_create_backup
  - mail_index_recreate
  - mail_index_should_recreate
  - mail_index_write
  source_file: /src/dovecot/src/lib-index/mail-index-write.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/mail-transaction-log-view-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*log'
        type: struct mail_transaction_log
      - name: '*next'
        type: struct mail_transaction_log_view
      - name: min_file_seq
        type: uint32_t
      - name: min_file_offset
        type: uoff_t
      - name: tmp_hdr
        type: struct mail_transaction_header
      - name: '*cur'
        type: struct mail_transaction_log_file
      - name: cur_offset
        type: uoff_t
      - name: prev_modseq
        type: uint64_t
      - name: prev_file_seq
        type: uint32_t
      - name: prev_file_offset
        type: uoff_t
      - name: '*mark_file'
        type: struct mail_transaction_log_file
      - name: mark_offset
        type: uoff_t
      - name: mark_modseq
        type: uint64_t
      - name: broken
        type: bool
      item_type: struct
      name: mail_transaction_log_view
      pos:
        line_end: 30
        line_start: 5
        source_file: /src/dovecot/src/lib-index/mail-transaction-log-view-private.h
    typedefs: []
    union: []
- function_names:
  - mail_index_transaction_lookup
  - mail_index_transaction_reset_v
  - mail_index_transaction_set_log_updates
  - mail_index_update_day_headers
  - mail_index_append
  - mail_index_append_finish_uids
  - mail_index_append_finish_uids_full
  - mail_index_update_modseq
  - mail_index_update_highest_modseq
  - array_foreach_modifiable
  - mail_index_revert_changes_common
  - mail_index_revert_changes
  - mail_index_expunge_last_append
  - mail_index_expunge
  - mail_index_expunge_guid
  - update_minmax_flagupdate_seq
  - mail_index_transaction_get_flag_update_pos
  - mail_index_insert_flag_update
  - mail_index_record_modify_flags
  - mail_index_update_flags_range
  - mail_index_update_flags
  - mail_index_attribute_set_full
  - mail_index_attribute_set
  - mail_index_attribute_unset
  - mail_index_update_header
  - mail_index_ext_rec_updates_resize
  - mail_index_ext_resize
  - mail_index_ext_resize_hdr
  - mail_index_ext_reset
  - mail_index_ext_reset_inc
  - mail_index_transaction_has_ext_updates
  - array_foreach
  - mail_index_transaction_has_ext_changes
  - mail_index_ext_reset_changes
  - mail_index_ext_using_reset_id
  - mail_index_ext_set_reset_id
  - mail_index_update_header_ext
  - mail_index_update_ext
  - mail_index_atomic_inc_ext
  - keyword_update_has_changes
  - keyword_update_remove_existing
  - mail_index_update_keywords
  source_file: /src/dovecot/src/lib-index/mail-index-transaction-update.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_cache_fields
  - test_mail_cache_record_max_size_int
  - test_mail_cache_record_max_size
  - test_mail_cache_record_max_size2
  - test_mail_cache_record_max_size3
  - test_mail_cache_record_max_size4
  - test_mail_cache_add_decisions
  - test_mail_cache_lookup_decisions_int
  - test_mail_cache_lookup_decisions
  - test_mail_cache_lookup_decisions2
  - test_mail_cache_in_memory
  - test_mail_cache_size_corruption
  - test_mail_cache_duplicate_fields
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-cache.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: line1
        type: uint32_t
      - name: end_of_lines
        type: uint32_t
      - name: headers[8]
        type: char
      item_type: struct
      name: test_header_data
      pos:
        line_end: 12
        line_start: 8
        source_file: /src/dovecot/src/lib-index/test-mail-cache.c
    typedefs: []
    union: []
- function_names:
  - mail_index_sync_add_expunge
  - mail_index_sync_add_expunge_guid
  - mail_index_sync_add_flag_update
  - mail_index_sync_add_keyword_update
  - mail_index_sync_add_keyword_reset
  - mail_index_sync_add_transaction
  - mail_index_sync_add_dirty_updates
  - mail_index_sync_read_and_sort
  - mail_index_need_sync
  - mail_index_sync_set_log_view
  - mail_index_sync_begin
  - mail_index_sync_begin_init
  - mail_index_sync_begin_to2
  - mail_index_sync_begin_to
  - mail_index_sync_has_expunges
  - mail_index_sync_view_have_any
  - mail_index_sync_have_any
  - mail_index_sync_have_any_expunges
  - mail_index_sync_get_offsets
  - mail_index_sync_get_expunge
  - mail_index_sync_get_update
  - mail_index_sync_get_keyword_update
  - mail_index_sync_next
  - mail_index_sync_have_more
  - mail_index_sync_set_commit_result
  - mail_index_sync_reset
  - mail_index_sync_no_warning
  - mail_index_sync_set_reason
  - mail_index_sync_end
  - mail_index_sync_update_mailbox_offset
  - mail_index_sync_want_index_write
  - mail_index_sync_commit
  - mail_index_sync_rollback
  - mail_index_sync_flags_apply
  - mail_index_sync_keywords_apply
  - mail_index_sync_set_corrupted
  source_file: /src/dovecot/src/lib-index/mail-index-sync.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*index'
        type: struct mail_index
      - name: '*view'
        type: struct mail_index_view
      - name: '*sync_trans'
        type: struct mail_index_transaction
      - name: '*sync_commit_result'
        type: struct mail_index_transaction_commit_result
      - name: flags
        type: enum mail_index_sync_flags
      - name: '*reason'
        type: char
      - name: '*hdr'
        type: struct mail_transaction_header
      - name: '*data'
        type: void
      - name: next_uid
        type: uint32_t
      - name: no_warning
        type: bool
      - name: seen_external_expunges
        type: bool
      - name: seen_nonexternal_transactions
        type: bool
      - name: fully_synced
        type: bool
      item_type: struct
      name: mail_index_sync_ctx
      pos:
        line_end: 30
        line_start: 12
        source_file: /src/dovecot/src/lib-index/mail-index-sync.c
    typedefs: []
    union: []
- function_names:
  - mail_index_transaction_hook_register
  - mail_index_transaction_hook_unregister
  - mail_index_transaction_get_view
  - mail_index_transaction_is_expunged
  - mail_index_transaction_ref
  - mail_index_transaction_unref
  - mail_index_transaction_get_next_uid
  - mail_index_transaction_lookup_latest_keywords
  - mail_transaction_log_file_refresh
  - mail_index_transaction_commit_real
  - mail_index_transaction_commit_v
  - mail_index_transaction_rollback_v
  - mail_index_transaction_commit
  - mail_index_transaction_commit_full
  - mail_index_transaction_rollback
  - mail_index_transaction_begin
  source_file: /src/dovecot/src/lib-index/mail-index-transaction.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CACHE_TRANS_CONTEXT
  - CACHE_TRANS_CONTEXT_REQUIRE
  - mail_index_transaction_cache_reset
  - mail_index_transaction_cache_commit
  - mail_index_transaction_cache_rollback
  - mail_cache_get_transaction
  - mail_cache_transaction_forget_flushed
  - mail_cache_transaction_reset
  - mail_cache_transaction_rollback
  - mail_cache_transactions_have_changes
  - mail_cache_transaction_purge
  - mail_cache_transaction_lock
  - mail_cache_transaction_lookup_rec
  - mail_cache_transaction_update_index
  - mail_cache_link_records
  - mail_cache_transaction_set_used
  - mail_cache_transaction_update_fields
  - mail_cache_transaction_drop_last_flush
  - mail_cache_transaction_flush
  - mail_cache_transaction_drop_unwanted
  - mail_cache_transaction_update_last_rec_size
  - mail_cache_transaction_update_last_rec
  - mail_cache_transaction_switch_seq
  - mail_cache_transaction_commit
  - mail_cache_header_fields_write
  - mail_cache_header_rewrite_fields
  - mail_cache_transaction_refresh_decisions
  - mail_cache_add
  - mail_cache_field_want_add
  - mail_cache_field_can_add
  - mail_cache_close_mail
  source_file: /src/dovecot/src/lib-index/mail-cache-transaction.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_CACHE_INIT_WRITE_BUFFER
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-index/mail-cache-transaction.c
      type_or_value: (1024*16)
    structs:
    - fields:
      - name: seq
        type: uint32_t
      - name: cache_data_pos
        type: uint32_t
      item_type: struct
      name: mail_cache_transaction_rec
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-index/mail-cache-transaction.c
    - fields:
      - name: module_ctx
        type: union mail_index_transaction_module_context
      - name: super
        type: struct mail_index_transaction_vfuncs
      - name: '*cache'
        type: struct mail_cache
      - name: '*view'
        type: struct mail_cache_view
      - name: '*trans'
        type: struct mail_index_transaction
      - name: cache_file_seq
        type: uint32_t
      - name: first_new_seq
        type: uint32_t
      - name: '*cache_data'
        type: buffer_t
      - name: cache_field_idx_used
        type: ARRAY
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: prev_seq
        type: uint32_t
      - name: last_rec_pos
        type: size_t
      - name: records_written
        type: unsigned int
      - name: tried_purging
        type: bool
      - name: decisions_refreshed
        type: bool
      - name: have_noncommited_mails
        type: bool
      - name: changes
        type: bool
      item_type: struct
      name: mail_cache_transaction_ctx
      pos:
        line_end: 52
        line_start: 28
        source_file: /src/dovecot/src/lib-index/mail-cache-transaction.c
    typedefs: []
    union: []
- function_names:
  - mail_cache_merge_bitmask
  - mail_cache_purge_field
  - get_next_file_seq
  - mail_cache_purge_get_fields
  - mail_cache_purge_check_field
  - mail_cache_copy
  - mail_cache_purge_write
  - mail_cache_purge_has_file_changed
  - mail_cache_purge_locked
  - mail_cache_purge_full
  - mail_cache_purge_with_trans
  - mail_cache_purge
  - mail_cache_need_purge
  - mail_cache_purge_later
  - mail_cache_purge_later_reset
  - mail_cache_purge_drop_init
  - mail_cache_purge_drop_test
  source_file: /src/dovecot/src/lib-index/mail-cache-purge.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*cache'
        type: struct mail_cache
      - name: '*event'
        type: struct event
      - name: drop_ctx
        type: struct mail_cache_purge_drop_ctx
      - name: '*buffer'
        type: buffer_t
      - name: '*field_file_map'
        type: uint32_t
      - name: field_seen_value
        type: uint8_t
      - name: new_msg
        type: bool
      item_type: struct
      name: mail_cache_copy_context
      pos:
        line_end: 26
        line_start: 15
        source_file: /src/dovecot/src/lib-index/mail-cache-purge.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/mail-index-strmap.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_INDEX_STRMAP_VERSION
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.h
      type_or_value: '1'
    structs:
    - fields:
      - name: version
        type: uint8_t
      - name: unused[3]
        type: uint8_t
      - name: uid_validity
        type: uint32_t
      item_type: struct
      name: mail_index_strmap_header
      pos:
        line_end: 14
        line_start: 8
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.h
    - fields:
      - name: uid
        type: uint32_t
      - name: ref_index
        type: uint32_t
      - name: str_idx
        type: uint32_t
      item_type: struct
      name: mail_index_strmap_rec
      pos:
        line_end: 21
        line_start: 16
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.h
    typedefs:
    - item_type: typedef
      name: "mail_index_strmap_key_cmp_t(const char *key,\n\t\t\t    const struct
        mail_index_strmap_rec *rec,\n\t\t\t    void *context)"
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.h
      type: bool
    - item_type: typedef
      name: "mail_index_strmap_rec_cmp_t(const struct mail_index_strmap_rec *rec1,\n\t\t\t
        \   const struct mail_index_strmap_rec *rec2,\n\t\t\t    void *context)"
      pos:
        line_end: 33
        line_start: 30
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.h
      type: int
    - item_type: typedef
      name: "mail_index_strmap_remap_t(const uint32_t *idx_map,\n\t\t\t\t       unsigned
        int old_count,\n\t\t\t\t       unsigned int new_count, void *context)"
      pos:
        line_end: 39
        line_start: 37
        source_file: /src/dovecot/src/lib-index/mail-index-strmap.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-index/test-mail-cache.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*index'
        type: struct mail_index
      - name: '*cache'
        type: struct mail_cache
      - name: '*view'
        type: struct mail_index_view
      - name: cache_field
        type: struct mail_cache_field
      item_type: struct
      name: test_mail_cache_ctx
      pos:
        line_end: 12
        line_start: 6
        source_file: /src/dovecot/src/lib-index/test-mail-cache.h
    typedefs: []
    union: []
- function_names:
  - mail_index_map_parse_extensions
  - mail_index_map_parse_keywords
  - mail_index_hdr_check_indexid
  - mail_index_check_header_compat
  - mail_index_map_clear_recent_flags
  - mail_index_map_check_header
  source_file: /src/dovecot/src/lib-index/mail-index-map-hdr.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_map_init_extbufs
  - mail_index_map_lookup_ext
  - mail_index_map_ext_hdr_offset
  - mail_index_map_register_ext
  - mail_index_map_ext_get_next
  - mail_index_map_ext_hdr_check_record
  - mail_index_map_ext_hdr_check
  - mail_index_header_init
  - mail_index_map_alloc
  - mail_index_record_map_free
  - mail_index_record_map_unlink
  - mail_index_unmap
  - mail_index_map_copy_records
  - mail_index_map_copy_header
  - mail_index_record_map_alloc
  - mail_index_map_clone
  - mail_index_record_map_move_to_private
  - mail_index_map_move_to_memory
  - mail_index_map_get_ext_idx
  - mail_index_bsearch_uid
  - mail_index_map_lookup_seq_range
  source_file: /src/dovecot/src/lib-index/mail-index-map.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EXTENSION_NAME_APPROX_LEN
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-index/mail-index-map.c
      type_or_value: '20'
    - item_type: preproc_def
      name: EXT_GLOBAL_ALLOC_SIZE
      pos:
        line_end: 15
        line_start: 13
        source_file: /src/dovecot/src/lib-index/mail-index-map.c
      type_or_value: ((sizeof(map->extensions) + sizeof(buffer_t)) * 2)
    - item_type: preproc_def
      name: EXT_PER_ALLOC_SIZE
      pos:
        line_end: 18
        line_start: 15
        source_file: /src/dovecot/src/lib-index/mail-index-map.c
      type_or_value: "(EXTENSION_NAME_APPROX_LEN + \\\n\t sizeof(struct mail_index_ext)
        + sizeof(uint32_t))"
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_set_error
  - mail_index_set_syscall_error
  - mail_index_file_set_syscall_error
  - mail_index_create_tmp_file
  - mail_index_move_to_memory
  - mail_transaction_log_rotate
  - test_mail_index_write
  - main
  source_file: /src/dovecot/src/lib-index/test-mail-index-write.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_INDEX_FNAME
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-index/test-mail-index-write.c
      type_or_value: '".test.index.write"'
    - item_type: preproc_def
      name: TEST_INDEXID
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-index/test-mail-index-write.c
      type_or_value: '123456'
    - item_type: preproc_def
      name: LOG_FILE1_HEAD_OFFSET
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-index/test-mail-index-write.c
      type_or_value: '200'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_cache_init
  - test_mail_cache_deinit
  - test_mail_cache_get_purge_count
  - test_mail_cache_index_sync
  - test_mail_cache_view_sync
  - test_mail_cache_purge
  - test_mail_cache_add_mail
  - test_mail_cache_add_field
  - test_mail_cache_update_day_first_uid7
  source_file: /src/dovecot/src/lib-index/test-mail-cache-common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAIL_TRANSACTION_LOG_VERSION_FULL
  - MAIL_TRANSACTION_LOG_VERSION_HAVE
  - MAIL_TRANSACTION_LOG_HDR_VERSION
  - LOG_IS_BEFORE
  source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
  types:
    enum:
    - enumerators:
      - name: MAIL_TRANSACTION_ATTRIBUTE_UPDATE
        value: '0x00100000'
      - name: MAIL_TRANSACTION_EXT_HDR_UPDATE32
        value: '0x00010000'
      - name: MAIL_TRANSACTION_INDEX_UNDELETED
        value: '0x00040000'
      - name: MAIL_TRANSACTION_EXTERNAL
        value: '0x10000000'
      - name: MAIL_TRANSACTION_EXPUNGE
        value: '0x00000001'
      - name: MAIL_TRANSACTION_FLAG_UPDATE
        value: '0x00000004'
      - name: MAIL_TRANSACTION_EXT_INTRO
        value: '0x00000040'
      - name: MAIL_TRANSACTION_EXT_HDR_UPDATE
        value: '0x00000100'
      - name: MAIL_TRANSACTION_KEYWORD_UPDATE
        value: '0x00000400'
      - name: MAIL_TRANSACTION_MODSEQ_UPDATE
        value: '0x00008000'
      - name: MAIL_TRANSACTION_EXT_ATOMIC_INC
        value: '0x00001000'
      - name: MAIL_TRANSACTION_EXPUNGE_PROT
        value: '0x0000cd90'
      - name: MAIL_TRANSACTION_INDEX_DELETED
        value: '0x00020000'
      - name: MAIL_TRANSACTION_TYPE_MASK
        value: '0x0fffffff'
      - name: MAIL_TRANSACTION_BOUNDARY
        value: '0x00080000'
      - name: MAIL_TRANSACTION_HEADER_UPDATE
        value: '0x00000020'
      - name: MAIL_TRANSACTION_APPEND
        value: '0x00000002'
      - name: MAIL_TRANSACTION_EXT_RESET
        value: '0x00000080'
      - name: MAIL_TRANSACTION_EXT_REC_UPDATE
        value: '0x00000200'
      - name: MAIL_TRANSACTION_KEYWORD_RESET
        value: '0x00000800'
      - name: MAIL_TRANSACTION_EXPUNGE_GUID
        value: '0x00002000'
      - name: MAIL_TRANSACTION_SYNC
        value: '0x20000000'
      item_type: enum
      name: mail_transaction_type
      pos:
        line_end: 186
        line_start: 85
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_SUFFIX
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
      type_or_value: '".log"'
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_MAJOR_VERSION
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
      type_or_value: '1'
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_MINOR_VERSION
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
      type_or_value: '3'
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_HEADER_MIN_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
      type_or_value: '24'
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_VERSION_FEATURE_COMPAT_FLAGS
      pos:
        line_end: 29
        line_start: 27
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
      type_or_value: MAIL_TRANSACTION_LOG_VERSION_FULL(1, 2)
    - item_type: preproc_def
      name: MAIL_TRANSACTION_LOG_VERSION_FEATURE_HIDE_INTERNAL_MODSEQS
      pos:
        line_end: 34
        line_start: 32
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
      type_or_value: MAIL_TRANSACTION_LOG_VERSION_FULL(1, 3)
    structs:
    - fields:
      - name: major_version
        type: uint8_t
      - name: minor_version
        type: uint8_t
      - name: hdr_size
        type: uint16_t
      - name: indexid
        type: uint32_t
      - name: file_seq
        type: uint32_t
      - name: prev_file_seq
        type: uint32_t
      - name: prev_file_offset
        type: uint32_t
      - name: create_stamp
        type: uint32_t
      - name: initial_modseq
        type: uint64_t
      - name: compat_flags
        type: uint8_t
      - name: unused[3]
        type: uint8_t
      - name: unused2
        type: uint32_t
      item_type: struct
      name: mail_transaction_log_header
      pos:
        line_end: 83
        line_start: 35
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: size
        type: uint32_t
      - name: type
        type: uint32_t
      item_type: struct
      name: mail_transaction_header
      pos:
        line_end: 195
        line_start: 188
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: uid
        type: uint32_t
      - name: modseq_low32
        type: uint32_t
      - name: modseq_high32
        type: uint32_t
      item_type: struct
      name: mail_transaction_modseq_update
      pos:
        line_end: 204
        line_start: 198
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: uid1
        type: uint32_t
      item_type: struct
      name: mail_transaction_expunge
      pos:
        line_end: 210
        line_start: 207
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: uid
        type: uint32_t
      - name: guid_128
        type: guid_128_t
      item_type: struct
      name: mail_transaction_expunge_guid
      pos:
        line_end: 218
        line_start: 212
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: uid1
        type: uint32_t
      - name: add_flags
        type: uint8_t
      - name: remove_flags
        type: uint8_t
      - name: modseq_inc_flag
        type: uint8_t
      - name: padding
        type: uint8_t
      item_type: struct
      name: mail_transaction_flag_update
      pos:
        line_end: 237
        line_start: 221
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: modify_type
        type: uint8_t
      - name: padding
        type: uint8_t
      - name: name_size
        type: uint16_t
      item_type: struct
      name: mail_transaction_keyword_update
      pos:
        line_end: 250
        line_start: 240
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: uid1
        type: uint32_t
      item_type: struct
      name: mail_transaction_keyword_reset
      pos:
        line_end: 256
        line_start: 253
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: offset
        type: uint16_t
      - name: size
        type: uint16_t
      item_type: struct
      name: mail_transaction_header_update
      pos:
        line_end: 267
        line_start: 259
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: ext_id
        type: uint32_t
      - name: reset_id
        type: uint32_t
      - name: hdr_size
        type: uint32_t
      - name: record_size
        type: uint16_t
      - name: record_align
        type: uint16_t
      - name: flags
        type: uint16_t
      - name: name_size
        type: uint16_t
      item_type: struct
      name: mail_transaction_ext_intro
      pos:
        line_end: 292
        line_start: 277
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: new_reset_id
        type: uint32_t
      - name: preserve_data
        type: uint8_t
      - name: unused_padding[3]
        type: uint8_t
      item_type: struct
      name: mail_transaction_ext_reset
      pos:
        line_end: 302
        line_start: 295
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: offset
        type: uint16_t
      - name: size
        type: uint16_t
      item_type: struct
      name: mail_transaction_ext_hdr_update
      pos:
        line_end: 313
        line_start: 305
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: offset
        type: uint32_t
      - name: size
        type: uint32_t
      item_type: struct
      name: mail_transaction_ext_hdr_update32
      pos:
        line_end: 323
        line_start: 315
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: uid
        type: uint32_t
      item_type: struct
      name: mail_transaction_ext_rec_update
      pos:
        line_end: 331
        line_start: 326
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: uid
        type: uint32_t
      - name: diff
        type: int32_t
      item_type: struct
      name: mail_transaction_ext_atomic_inc
      pos:
        line_end: 338
        line_start: 334
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: size
        type: uint32_t
      item_type: struct
      name: mail_transaction_boundary
      pos:
        line_end: 344
        line_start: 341
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    - fields:
      - name: '*log'
        type: struct mail_transaction_log
      - name: '*output'
        type: buffer_t
      - name: trans_flags
        type: enum mail_transaction_type
      - name: new_highest_modseq
        type: uint64_t
      - name: transaction_count
        type: unsigned int
      - name: index_sync_transaction
        type: bool
      - name: tail_offset_changed
        type: bool
      - name: sync_includes_this
        type: bool
      - name: want_fsync
        type: bool
      item_type: struct
      name: mail_transaction_log_append_ctx
      pos:
        line_end: 371
        line_start: 346
        source_file: /src/dovecot/src/lib-index/mail-transaction-log.h
    typedefs: []
    union: []
- function_names:
  - mail_transaction_log_append_add
  - log_buffer_move_to_memory
  - log_buffer_write
  - log_append_sync_offset_if_needed
  - mail_transaction_log_append_locked
  - mail_transaction_log_append_begin
  - mail_transaction_log_append_commit
  source_file: /src/dovecot/src/lib-index/mail-transaction-log-append.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_view_dup_private
  - mail_index_view_clone
  - mail_index_view_ref
  - view_close
  - mail_index_view_is_inconsistent
  - mail_index_view_get_index
  - mail_index_view_have_transactions
  - mail_index_view_ref_map
  - mail_index_view_unref_maps
  - view_get_messages_count
  - view_get_header
  - view_lookup_full
  - view_lookup_uid
  - view_lookup_seq_range
  - view_lookup_first
  - LOW_UPDATE
  - mail_index_data_lookup_keywords
  - view_lookup_keywords
  - view_map_lookup_ext_full
  - view_lookup_ext_full
  - view_get_header_ext
  - view_ext_get_reset_id
  - mail_index_view_close
  - mail_index_view_get_messages_count
  - mail_index_get_header
  - mail_index_lookup
  - mail_index_lookup_full
  - mail_index_is_expunged
  - mail_index_map_lookup_keywords
  - mail_index_lookup_keywords
  - mail_index_lookup_view_flags
  - mail_index_lookup_uid
  - mail_index_lookup_seq_range
  - mail_index_lookup_seq
  - mail_index_lookup_first
  - mail_index_lookup_ext
  - mail_index_lookup_ext_full
  - mail_index_get_header_ext
  - mail_index_map_get_header_ext
  - mail_index_ext_get_reset_id
  - mail_index_ext_get_size
  - mail_index_view_open_with_map
  - mail_index_view_open
  - mail_index_view_get_ext
  source_file: /src/dovecot/src/lib-index/mail-index-view.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - log_append_buffer
  - log_append_flag_updates
  - log_get_hdr_update_buffer
  - ext_hdr_update_get_size
  - log_append_ext_intro
  - log_append_ext_hdr_update
  - mail_transaction_log_append_ext_intros
  - log_append_ext_recs
  - log_append_keyword_update
  - log_append_keyword_updates
  - mail_index_transaction_export
  source_file: /src/dovecot/src/lib-index/mail-index-transaction-export.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*trans'
        type: struct mail_index_transaction
      - name: '*append_ctx'
        type: struct mail_transaction_log_append_ctx
      item_type: struct
      name: mail_index_export_context
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/lib-index/mail-index-transaction-export.c
    typedefs: []
    union: []
- function_names:
  - mail_index_map_copy_hdr
  - mail_index_mmap
  - mail_index_read_header
  - mail_index_try_read_map
  - mail_index_read_map
  - mail_index_map_latest_file
  - mail_index_map_latest_sync
  - mail_index_map_real
  - mail_index_map
  source_file: /src/dovecot/src/lib-index/mail-index-map-read.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - DEF
  - dict_sql_type_parse
  - pattern_read_name
  - dict_sql_fields_map
  - dict_sql_map_settings_get
  - dict_sql_settings_get_map
  - dict_sql_settings_get
  source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DICT_MAP_FIELD_TYPES_ENUM
      pos:
        line_end: 14
        line_start: 12
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
      type_or_value: '"string:int:uint:double:hexblob:uuid"'
    structs:
    - fields:
      - name: sql_field
        type: struct dict_sql_field
      - name: '*variable'
        type: char
      item_type: struct
      name: dict_sql_map_key_field
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEFN
  - DEFN
  - DEF
  - DEF
  - dict_ldap_map_settings_post_check
  - ldap_parse_attributes
  - dict_ldap_map_settings_postcheck
  - pattern_read_name
  - dict_ldap_settings_parse_pattern
  - chain_ref
  - dict_ldap_settings_parse_maps
  - dict_ldap_settings_get
  source_file: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*pattern'
        type: char
      - name: '*base'
        type: char
      - name: '*scope'
        type: char
      - name: '*const *parsed_attributes'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: parsed_scope
        type: int
      - name: '*parsed_pattern'
        type: char
      item_type: struct
      name: dict_ldap_map_settings
      pos:
        line_end: 20
        line_start: 3
        source_file: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*filter'
        type: char
      item_type: struct
      name: dict_ldap_map_pre_settings
      pos:
        line_end: 25
        line_start: 22
        source_file: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*value'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: dict_ldap_map_post_settings
      pos:
        line_end: 37
        line_start: 27
        source_file: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: dict_ldap_settings
      pos:
        line_end: 45
        line_start: 39
        source_file: /src/dovecot/src/lib-dict-backend/dict-ldap-settings.h
    typedefs: []
    union: []
- function_names:
  - test_setup
  - test_teardown
  - test_set_expected
  - test_lookup_one
  - test_atomic_inc
  - test_set
  - test_unset
  - test_iterate
  - main
  source_file: /src/dovecot/src/lib-dict-backend/test-dict-sql.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-dict-backend/dict-sql-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DICT_SQL_PRIVATE_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-private.h
      type_or_value: '1'
    structs:
    - fields:
      - name: dict
        type: struct dict
      - name: pool
        type: pool_t
      - name: '*db'
        type: struct sql_db
      - name: '*set'
        type: struct dict_sql_map_settings
      item_type: struct
      name: sql_dict
      pos:
        line_end: 9
        line_start: 3
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-private.h
    typedefs: []
    union: []
- function_names:
  - sql_dict_init
  - sql_dict_deinit
  - sql_dict_wait
  - dict_sql_map_match
  - sql_dict_find_map
  - sql_dict_statement_bind
  - sql_dict_statement_init
  - array_foreach
  - sql_dict_value_get
  - sql_dict_field_get_value
  - sql_dict_where_build
  - sql_lookup_get_query
  - sql_dict_result_unescape
  - sql_dict_result_unescape_values
  - sql_dict_result_unescape_field
  - sql_dict_result_next_row
  - sql_dict_lookup
  - sql_dict_lookup_async_callback
  - sql_dict_lookup_async
  - sql_dict_iterate_find_next_map
  - sql_dict_iterate_build_next_query
  - sql_dict_iterate_callback
  - sql_dict_iterate_next_query
  - sql_dict_iterate_init
  - sql_dict_iterate
  - sql_dict_iterate_deinit
  - sql_dict_transaction_init
  - sql_dict_transaction_free
  - sql_dict_transaction_has_nonexistent
  - sql_dict_transaction_commit_callback
  - sql_dict_transaction_commit
  - sql_dict_transaction_rollback
  - sql_dict_transaction_stmt_init
  - sql_dict_set_query
  - sql_dict_update_query
  - sql_dict_prev_set_free
  - sql_dict_prev_set_flush
  - sql_dict_unset
  - sql_dict_next_inc_row
  - sql_dict_prev_inc_free
  - sql_dict_prev_inc_flush
  - sql_dict_maps_are_mergeable
  - sql_dict_set
  - sql_dict_atomic_inc
  - sql_dict_expire_map
  - sql_dict_expire_scan
  - dict_sql_register
  - dict_sql_unregister
  source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
  types:
    enum:
    - enumerators:
      - name: SQL_DICT_RECURSE_NONE
      - name: SQL_DICT_RECURSE_FULL
      - name: SQL_DICT_RECURSE_ONE
      item_type: enum
      name: sql_recurse_type
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    preproc_defs:
    - item_type: preproc_def
      name: DICT_SQL_MAX_UNUSED_CONNECTIONS
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
      type_or_value: '10'
    structs:
    - fields:
      - name: value_type
        type: enum dict_sql_type
      - name: '*value_str'
        type: char
      - name: value_int64
        type: int64_t
      - name: value_double
        type: double
      - name: '*value_binary'
        type: void
      - name: value_binary_size
        type: size_t
      - name: value_uuid
        type: guid_128_t
      item_type: struct
      name: sql_dict_param
      pos:
        line_end: 35
        line_start: 26
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    - fields:
      - name: ctx
        type: struct dict_iterate_context
      - name: pool
        type: pool_t
      - name: flags
        type: enum dict_iterate_flags
      - name: '*path'
        type: char
      - name: '*result'
        type: struct sql_result
      - name: '*key'
        type: string_t
      - name: value_pool
        type: pool_t
      - name: '*map'
        type: struct dict_sql_map
      - name: key_prefix_len
        type: size_t
      - name: sql_fields_start_idx
        type: unsigned int
      - name: destroyed
        type: bool
      - name: synchronous_result
        type: bool
      - name: iter_query_sent
        type: bool
      - name: allow_null_map
        type: bool
      - name: '*error'
        type: char
      item_type: struct
      name: sql_dict_iterate_context
      pos:
        line_end: 56
        line_start: 38
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    - fields:
      - name: '*prev'
        type: struct sql_dict_inc_row
      - name: rows
        type: unsigned int
      item_type: struct
      name: sql_dict_inc_row
      pos:
        line_end: 61
        line_start: 58
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    - fields:
      - name: '*map'
        type: struct dict_sql_map
      - name: '*key'
        type: char
      - name: value
        type: "union {\n\t\tchar *str;\n\t\tlong long diff;\n\t}"
      item_type: struct
      name: sql_dict_prev
      pos:
        line_end: 70
        line_start: 63
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    - fields:
      - name: ctx
        type: struct dict_transaction_context
      - name: '*sql_ctx'
        type: struct sql_transaction_context
      - name: inc_row_pool
        type: pool_t
      - name: '*inc_row'
        type: struct sql_dict_inc_row
      - name: '*async_callback'
        type: dict_transaction_commit_callback_t
      - name: '*async_context'
        type: void
      - name: '*error'
        type: char
      item_type: struct
      name: sql_dict_transaction_context
      pos:
        line_end: 87
        line_start: 72
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    - fields:
      - name: '*map'
        type: struct dict_sql_map
      - name: '*callback'
        type: dict_lookup_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: sql_dict_lookup_context
      pos:
        line_end: 614
        line_start: 610
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    - fields:
      - name: '*map'
        type: struct dict_sql_map
      - name: '*value'
        type: char
      item_type: struct
      name: dict_sql_build_query_field
      pos:
        line_end: 1109
        line_start: 1106
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    - fields:
      - name: '*dict'
        type: struct sql_dict
      - name: '*pattern_values'
        type: ARRAY_TYPE
      - name: add_username
        type: bool
      item_type: struct
      name: dict_sql_build_query
      pos:
        line_end: 1117
        line_start: 1111
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-dict-backend/dict-sql.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.h
  types:
    enum:
    - enumerators:
      - name: DICT_SQL_TYPE_STRING
        value: '0'
      - name: DICT_SQL_TYPE_UINT
      - name: DICT_SQL_TYPE_DOUBLE
      - name: DICT_SQL_TYPE_HEXBLOB
      - name: DICT_SQL_TYPE_INT
      - name: DICT_SQL_TYPE_UUID
      - name: DICT_SQL_TYPE_COUNT
      item_type: enum
      name: dict_sql_type
      pos:
        line_end: 11
        line_start: 3
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: value_type
        type: enum dict_sql_type
      item_type: struct
      name: dict_sql_field
      pos:
        line_end: 16
        line_start: 13
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.h
    - fields:
      - name: '*pattern'
        type: char
      - name: '*table'
        type: char
      - name: '*username_field'
        type: char
      - name: '*value_field'
        type: char
      - name: '*value_type'
        type: char
      - name: '*expire_field'
        type: char
      - name: values_count
        type: unsigned int
      - name: '*value_types'
        type: enum dict_sql_type
      item_type: struct
      name: dict_sql_map
      pos:
        line_end: 34
        line_start: 18
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*type'
        type: char
      - name: '*value'
        type: char
      item_type: struct
      name: dict_map_key_field_settings
      pos:
        line_end: 42
        line_start: 36
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*type'
        type: char
      item_type: struct
      name: dict_map_value_field_settings
      pos:
        line_end: 49
        line_start: 44
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*pattern'
        type: char
      - name: '*sql_table'
        type: char
      - name: '*username_field'
        type: char
      - name: '*expire_field'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: dict_map_settings
      pos:
        line_end: 62
        line_start: 51
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.h
    - fields:
      - name: pool
        type: pool_t
      item_type: struct
      name: dict_sql_map_settings
      pos:
        line_end: 67
        line_start: 64
        source_file: /src/dovecot/src/lib-dict-backend/dict-sql-settings.h
    typedefs: []
    union: []
- function_names:
  - dict_ldap_map_match
  - ldap_dict_find_map
  - dict_ldap_connect
  - IS_LDAP_ESCAPED_CHAR
  - ldap_escape
  - ldap_dict_init
  - ldap_dict_deinit
  - ldap_dict_wait
  - ldap_dict_switch_ioloop
  - ldap_dict_lookup_done
  - ldap_dict_lookup_cb_values
  - ldap_dict_lookup_callback
  - ldap_dict_lookup
  - ldap_dict_ldap_expand
  - ldap_dict_pattern_expand
  - ldap_dict_lookup_async
  - dict_ldap_init
  - dict_ldap_deinit
  source_file: /src/dovecot/src/lib-dict-backend/dict-ldap.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*key_lcase'
        type: char
      - name: '*value'
        type: char
      item_type: struct
      name: key_value
      pos:
        line_end: 28
        line_start: 23
        source_file: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    - fields:
      - name: '*dict'
        type: struct ldap_dict
      - name: '*event'
        type: struct event
      - name: '*map'
        type: struct dict_ldap_map_settings
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*username'
        type: char
      - name: private
        type: bool
      - name: pool
        type: pool_t
      - name: txid
        type: unsigned long
      - name: res
        type: struct dict_lookup_result
      - name: '*callback'
        type: dict_lookup_callback_t
      - name: '*callback_ctx'
        type: void
      item_type: struct
      name: dict_ldap_op
      pos:
        line_end: 44
        line_start: 30
        source_file: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    - fields:
      - name: dict
        type: struct dict
      - name: '*set'
        type: struct dict_ldap_settings
      - name: '*uri'
        type: char
      - name: '*base_dn'
        type: char
      - name: scope
        type: enum ldap_scope
      - name: pool
        type: pool_t
      - name: '*event'
        type: struct event
      - name: '*client'
        type: struct ldap_client
      - name: last_txid
        type: unsigned long
      - name: pending
        type: unsigned int
      - name: '*prev'
        type: struct ldap_dict
      item_type: struct
      name: ldap_dict
      pos:
        line_end: 63
        line_start: 46
        source_file: /src/dovecot/src/lib-dict-backend/dict-ldap.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - cdb_dict_init
  - cdb_dict_deinit
  - cdb_dict_lookup
  - cdb_dict_iterate_init
  - cdb_dict_next
  - cdb_dict_iterate
  - cdb_dict_iterate_deinit
  source_file: /src/dovecot/src/lib-dict-backend/dict-cdb.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CDB_WITH_NULL
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-dict-backend/dict-cdb.c
      type_or_value: '1'
    - item_type: preproc_def
      name: CDB_WITHOUT_NULL
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-dict-backend/dict-cdb.c
      type_or_value: '2'
    structs:
    - fields:
      - name: dict
        type: struct dict
      - name: cdb
        type: struct cdb
      - name: '*path'
        type: char
      - name: fd
        type: int
      item_type: struct
      name: cdb_dict
      pos:
        line_end: 23
        line_start: 18
        source_file: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    - fields:
      - name: ctx
        type: struct dict_iterate_context
      - name: flags
        type: enum dict_iterate_flags
      - name: '*buffer'
        type: buffer_t
      - name: '*values[2]'
        type: char
      - name: '*path'
        type: char
      - name: cptr
        type: unsigned int
      - name: '*error'
        type: char
      item_type: struct
      name: cdb_dict_iterate_context
      pos:
        line_end: 34
        line_start: 25
        source_file: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*cdb_path'
        type: char
      item_type: struct
      name: dict_cdb_settings
      pos:
        line_end: 40
        line_start: 36
        source_file: /src/dovecot/src/lib-dict-backend/dict-cdb.c
    typedefs: []
    union: []
- function_names:
  - imapc_msgmap_init
  - imapc_msgmap_deinit
  - imapc_msgmap_count
  - imapc_msgmap_uidnext
  - imapc_msgmap_rseq_to_uid
  - imapc_msgmap_uid_to_rseq
  - imapc_msgmap_append
  - imapc_msgmap_expunge
  - imapc_msgmap_reset
  source_file: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: (uint32_t)
        type: ARRAY_TYPE
      - name: uid_next
        type: uint32_t
      item_type: struct
      name: imapc_msgmap
      pos:
        line_end: 10
        line_start: 7
        source_file: /src/dovecot/src/lib-imap-client/imapc-msgmap.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-client/imapc-msgmap.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-client/imapc-connection.h
  types:
    enum:
    - enumerators:
      - name: IMAPC_CONNECTION_STATE_DISCONNECTED
        value: '0'
      - name: IMAPC_CONNECTION_STATE_DONE
      - name: IMAPC_CONNECTION_STATE_AUTHENTICATING
      - name: IMAPC_CONNECTION_STATE_CONNECTING
      item_type: enum
      name: imapc_connection_state
      pos:
        line_end: 22
        line_start: 13
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.h
    preproc_defs:
    - item_type: preproc_def
      name: IMAPC_THROTTLE_DEFAULT_INIT_MSECS
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.h
      type_or_value: '50'
    - item_type: preproc_def
      name: IMAPC_THROTTLE_DEFAULT_MAX_MSECS
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.h
      type_or_value: (16*1000)
    - item_type: preproc_def
      name: IMAPC_THROTTLE_DEFAULT_SHRINK_MIN_MSECS
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.h
      type_or_value: '500'
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF_MSECS
  - DEF_SECS
  - imapc_capability_lookup
  - imapc_settings_parse_throttle
  - imapc_settings_parse_features
  - imapc_settings_check
  source_file: /src/dovecot/src/lib-imap-client/imapc-settings.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: num
        type: enum imapc_features
      item_type: struct
      name: imapc_feature_list
      pos:
        line_end: 136
        line_start: 133
        source_file: /src/dovecot/src/lib-imap-client/imapc-settings.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
  types:
    enum:
    - enumerators:
      - name: IMAPC_COMMAND_STATE_OK
        value: '0'
      - name: IMAPC_COMMAND_STATE_NO
      - name: IMAPC_COMMAND_STATE_BAD
      - name: IMAPC_COMMAND_STATE_AUTH_FAILED
      - name: IMAPC_COMMAND_STATE_DISCONNECTED
      item_type: enum
      name: imapc_command_state
      pos:
        line_end: 15
        line_start: 7
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
    - enumerators:
      - name: IMAPC_COMMAND_FLAG_SELECT
        value: '0x01'
      - name: IMAPC_COMMAND_FLAG_RETRIABLE
        value: '0x04'
      - name: IMAPC_COMMAND_FLAG_LOGOUT
        value: '0x08'
      - name: IMAPC_COMMAND_FLAG_RECONNECTED
        value: '0x10'
      - name: IMAPC_COMMAND_FLAG_PRELOGIN
        value: '0x02'
      - name: IMAPC_COMMAND_FLAG_UNSELECT
        value: '0x20'
      item_type: enum
      name: imapc_command_flags
      pos:
        line_end: 34
        line_start: 18
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
    - enumerators:
      - name: IMAPC_PARAMETER_CLIENT_DISABLED
        value: BIT(1)
      item_type: enum
      name: imapc_parameter_flags
      pos:
        line_end: 83
        line_start: 81
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
    - enumerators:
      - name: IMAPC_STATE_CHANGE_AUTH_OK
      - name: IMAPC_STATE_CHANGE_AUTH_FAILED
      item_type: enum
      name: imapc_state_change_event
      pos:
        line_end: 101
        line_start: 98
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
    preproc_defs: []
    structs:
    - fields:
      - name: state
        type: enum imapc_command_state
      - name: '*resp_text_key'
        type: char
      - name: '*text_full'
        type: char
      - name: '*text_without_resp'
        type: char
      item_type: struct
      name: imapc_command_reply
      pos:
        line_end: 46
        line_start: 36
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
    - fields:
      - name: fd
        type: int
      - name: '*parent_arg'
        type: struct imap_arg
      - name: list_idx
        type: unsigned int
      item_type: struct
      name: imapc_arg_file
      pos:
        line_end: 56
        line_start: 48
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
    - fields:
      - name: '*name'
        type: char
      - name: num
        type: uint32_t
      - name: '*args'
        type: struct imap_arg
      - name: '*file_args'
        type: struct imapc_arg_file
      - name: file_args_count
        type: unsigned int
      - name: '*resp_text_key'
        type: char
      - name: '*untagged_box_context'
        type: void
      item_type: struct
      name: imapc_untagged_reply
      pos:
        line_end: 79
        line_start: 58
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
    - fields:
      - name: '*session_id_prefix'
        type: char
      - name: '*temp_path_prefix'
        type: char
      - name: '*override_dns_client_socket_path'
        type: char
      - name: '*override_rawlog_dir'
        type: char
      - name: '*override_password'
        type: char
      - name: flags
        type: enum imapc_parameter_flags
      item_type: struct
      name: imapc_parameters
      pos:
        line_end: 96
        line_start: 85
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
    typedefs:
    - item_type: typedef
      name: "imapc_command_callback_t(const struct imapc_command_reply *reply,\n\t\t\t\t
        \     void *context)"
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
      type: void
    - item_type: typedef
      name: "imapc_untagged_callback_t(const struct imapc_untagged_reply *reply,\n\t\t\t\t
        \      void *context)"
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
      type: void
    - item_type: typedef
      name: "imapc_state_change_callback_t(void *context,\n\t\t\t\t\t   enum imapc_state_change_event
        event,\n\t\t\t\t\t   const char *error)"
      pos:
        line_end: 111
        line_start: 109
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.h
      type: void
    union: []
- function_names:
  - test_imapc_cmd_last_reply_pop
  - test_imapc_cmd_last_reply_expect
  - imapc_login_callback
  - imapc_command_callback
  - imapc_reopen_callback
  - test_imapc_server_expect_full
  - test_imapc_server_expect
  - test_server_wait_connection_common
  - test_server_wait_connection
  - test_server_wait_connection_imap4rev2
  - test_server_disconnect
  - test_server_disconnect_and_wait
  - test_open_server_fd
  - test_run_server
  - test_run_client
  - test_run_client_server
  - test_imapc_connect_failed_client
  - test_imapc_connect_failed
  - test_imapc_banner_hangs_client
  - test_imapc_banner_hangs_server
  - test_imapc_banner_hangs
  - test_imapc_login_hangs_client
  - test_imapc_login_hangs_server
  - test_imapc_login_hangs
  - test_imapc_login_fails_client
  - test_imapc_login_fails_server
  - test_imapc_login_fails
  - test_imapc_reconnect_client
  - test_imapc_reconnect_server
  - test_imapc_reconnect
  - test_imapc_reconnect_resend_cmds_client
  - test_imapc_reconnect_resend_cmds_server
  - test_imapc_reconnect_resend_commands
  - test_imapc_reconnect_resend_cmds_failed_client
  - test_imapc_reconnect_resend_cmds_failed_server
  - test_imapc_reconnect_resend_commands_failed
  - test_imapc_reconnect_mailbox_client
  - test_imapc_reconnect_mailbox_server
  - test_imapc_reconnect_mailbox
  - test_imapc_client_get_capabilities_client
  - test_imapc_client_get_capabilities_server
  - test_imapc_client_get_capabilities
  - test_imapc_client_get_capabilities_reconnected_client
  - test_imapc_client_get_capabilities_reconnected_server
  - test_imapc_client_get_capabilities_reconnected
  - test_imapc_client_get_capabilities_disconnected_client
  - test_imapc_client_get_capabilities_disconnected_server
  - test_imapc_client_get_capabilities_disconnected
  - test_imapc_client_get_capabilities_imap4rev2_client
  - test_imapc_client_get_capabilities_imap4rev2_server
  - test_imapc_client_get_capabilities_imap4rev2
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/lib-imap-client/test-imapc-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SERVER_KILL_TIMEOUT_SECS
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-imap-client/test-imapc-client.c
      type_or_value: '20'
    - item_type: preproc_def
      name: IMAPC_COMMAND_STATE_INVALID
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-imap-client/test-imapc-client.c
      type_or_value: (enum imapc_command_state)-1
    structs:
    - fields:
      - name: port
        type: in_port_t
      - name: pid
        type: pid_t
      - name: fd_listen
        type: int
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      item_type: struct
      name: test_server
      pos:
        line_end: 34
        line_start: 27
        source_file: /src/dovecot/src/lib-imap-client/test-imapc-client.c
    typedefs:
    - item_type: typedef
      name: test_server_init_t(void)
      pos:
        line_end: 24
        line_start: 24
        source_file: /src/dovecot/src/lib-imap-client/test-imapc-client.c
      type: void
    - item_type: typedef
      name: test_client_init_t(void)
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/dovecot/src/lib-imap-client/test-imapc-client.c
      type: void
    union: []
- function_names:
  - imapc_auth_ok
  - imapc_auth_failed
  - imapc_connection_init
  - imapc_connection_ref
  - imapc_connection_unref
  - imapc_connection_deinit
  - imapc_connection_ioloop_changed
  - imapc_command_get_readable
  - imapc_connection_abort_commands
  - imapc_login_callback
  - imapc_connection_set_state
  - imapc_connection_lfiles_free
  - imapc_connection_literal_reset
  - imapc_connection_disconnect_full
  - imapc_connection_set_no_reconnect
  - imapc_connection_disconnect
  - imapc_connection_set_disconnected
  - imapc_connection_can_reconnect
  - imapc_connection_reconnect
  - imapc_connection_try_reconnect
  - imapc_connection_input_error
  - last_arg_is_fetch_body
  - imapc_connection_read_literal_init
  - imapc_connection_read_literal
  - imapc_connection_read_line_more
  - imapc_connection_read_line
  - imapc_connection_imap4rev2_enable_callback
  - imapc_connection_send_enable_imap4rev2
  - imapc_connection_parse_capability
  - imapc_connection_handle_resp_text_code
  - imapc_connection_handle_resp_text
  - imapc_connection_handle_imap_resp_text
  - need_literal
  - imapc_connection_input_reset
  - imapc_connection_auth_finish
  - imapc_connection_login_cb
  - imapc_connection_proxyauth_login_cb
  - imapc_connection_authenticate_cb
  - imapc_connection_have_auth
  - imapc_connection_get_sasl_mech
  - imapc_connection_channel_bind_callback
  - imapc_connection_authenticate
  - imapc_connection_starttls_cb
  - imapc_connection_id_callback
  - imapc_connection_send_id
  - imapc_connection_starttls
  - imapc_connection_capability_cb
  - imapc_connection_input_banner
  - imapc_connection_input_untagged
  - imapc_connection_input_plus
  - imapc_connection_throttle_shrink_timeout
  - imapc_connection_throttle
  - imapc_command_reply_free
  - imapc_connection_input_tagged
  - imapc_connection_input_one
  - imapc_connection_input
  - imapc_connection_ssl_handshaked
  - imapc_connection_ssl_init
  - imapc_connection_connected
  - imapc_connection_timeout
  - imapc_noop_callback
  - imapc_reidle_callback
  - imapc_connection_reset_idle
  - imapc_connection_connect_next_ip
  - imapc_connection_dns_callback
  - imapc_connection_connect
  - imapc_connection_input_pending
  - imapc_command_begin
  - imapc_command_free
  - imapc_command_get_tag
  - imapc_command_abort
  - imapc_command_timeout
  - parse_sync_literal
  - imapc_command_send_finished
  - imapc_command_get_sending_stream
  - imapc_command_try_send_stream
  - imapc_connection_set_selecting
  - imapc_connection_is_throttled
  - imapc_command_send_more
  - imapc_connection_send_idle_done
  - imapc_connection_cmd_send
  - imapc_connection_output
  - imapc_connection_cmd
  - imapc_command_set_flags
  - imapc_command_set_mailbox
  - imapc_command_connection_is_selected
  - imapc_command_send
  - imapc_command_sendf
  - imapc_command_sendvf
  - imapc_connection_get_state
  - imapc_connection_get_capabilities
  - imapc_cmd_has_imap4rev2
  - imapc_connection_mailbox_closed
  - imapc_connection_get_mailbox
  - imapc_connection_idle_callback
  - imapc_connection_idle
  - imapc_connection_get_event
  - imapc_client_find_command_by_tag
  - imapc_command_get_start_time
  - imapc_connection_get_selected_mailbox_name
  source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
  types:
    enum:
    - enumerators:
      - name: IMAPC_INPUT_STATE_NONE
        value: '0'
      - name: IMAPC_INPUT_STATE_UNTAGGED
      - name: IMAPC_INPUT_STATE_PLUS
      - name: IMAPC_INPUT_STATE_UNTAGGED_NUM
      - name: IMAPC_INPUT_STATE_TAGGED
      item_type: enum
      name: imapc_input_state
      pos:
        line_end: 36
        line_start: 30
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
    preproc_defs:
    - item_type: preproc_def
      name: IMAPC_COMMAND_STATE_AUTHENTICATE_CONTINUE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
      type_or_value: '10000'
    - item_type: preproc_def
      name: IMAPC_MAX_INLINE_LITERAL_SIZE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
      type_or_value: (1024*32)
    - item_type: preproc_def
      name: IMAPC_LOGOUT_TIMEOUT_MSECS
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
      type_or_value: '5000'
    structs:
    - fields:
      - name: pos
        type: unsigned int
      - name: size
        type: uoff_t
      - name: '*input'
        type: struct istream
      item_type: struct
      name: imapc_command_stream
      pos:
        line_end: 42
        line_start: 38
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*data'
        type: buffer_t
      - name: send_pos
        type: unsigned int
      - name: tag
        type: unsigned int
      - name: flags
        type: enum imapc_command_flags
      - name: '*conn'
        type: struct imapc_connection
      - name: '*box'
        type: struct imapc_client_mailbox
      - name: '*callback'
        type: imapc_command_callback_t
      - name: '*context'
        type: void
      - name: start_time
        type: struct timeval
      - name: authenticate
        type: bool
      - name: idle
        type: bool
      - name: wait_for_literal
        type: bool
      - name: sent
        type: bool
      item_type: struct
      name: imapc_command
      pos:
        line_end: 71
        line_start: 44
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
    - fields:
      - name: '*temp_path'
        type: char
      - name: fd
        type: int
      - name: bytes_left
        type: uoff_t
      - name: '*parent_arg'
        type: struct imap_arg
      - name: list_idx
        type: unsigned int
      item_type: struct
      name: imapc_connection_literal
      pos:
        line_end: 81
        line_start: 74
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
    - fields:
      - name: '*client'
        type: struct imapc_client
      - name: '*event'
        type: struct event
      - name: refcount
        type: int
      - name: fd
        type: int
      - name: '*io'
        type: struct io
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      - name: '*parser'
        type: struct imap_parser
      - name: '*to'
        type: struct timeout
      - name: '*to_output'
        type: struct timeout
      - name: '*dns_lookup'
        type: struct dns_lookup
      - name: '*sasl_client'
        type: struct dsasl_client
      - name: '*ssl_iostream'
        type: struct ssl_iostream
      - name: (*input_callback)(struct imapc_connection *conn)
        type: int
      - name: input_state
        type: enum imapc_input_state
      - name: cur_tag
        type: unsigned int
      - name: cur_num
        type: uint32_t
      - name: last_connect
        type: struct timeval
      - name: reconnect_count
        type: unsigned int
      - name: '*selected_box'
        type: struct imapc_client_mailbox
      - name: '*qresync_selecting_box'
        type: struct imapc_client_mailbox
      - name: state
        type: enum imapc_connection_state
      - name: '*disconnect_reason'
        type: char
      - name: capabilities
        type: enum imapc_capability
      - name: '**capabilities_list'
        type: char
      - name: '*login_callback'
        type: imapc_command_callback_t
      - name: '*login_context'
        type: void
      - name: (imapc_command)
        type: ARRAY_TYPE
      - name: (imapc_command)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: reconnect_command_count
        type: unsigned int
      - name: ips_count
        type: unsigned int
      - name: '*ips'
        type: struct ip_addr
      - name: literal
        type: struct imapc_connection_literal
      - name: throttle_msecs
        type: unsigned int
      - name: throttle_shrink_msecs
        type: unsigned int
      - name: last_successful_throttle_msecs
        type: unsigned int
      - name: throttle_pending
        type: bool
      - name: throttle_end_timeval
        type: struct timeval
      - name: '*to_throttle'
        type: struct timeout
      - name: reconnecting
        type: bool
      - name: reconnect_waiting
        type: bool
      - name: reconnect_ok
        type: bool
      - name: idling
        type: bool
      - name: idle_stopping
        type: bool
      - name: idle_plus_waiting
        type: bool
      - name: imap4rev2_enabled
        type: bool
      - name: select_waiting_reply
        type: bool
      - name: '*selected_on_server'
        type: char
      item_type: struct
      name: imapc_connection
      pos:
        line_end: 164
        line_start: 83
        source_file: /src/dovecot/src/lib-imap-client/imapc-connection.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-client/imapc-client-private.h
  types:
    enum:
    - enumerators:
      - name: IMAPC_CLIENT_SSL_MODE_NONE
      - name: IMAPC_CLIENT_SSL_MODE_STARTTLS
      - name: IMAPC_CLIENT_SSL_MODE_IMMEDIATE
      item_type: enum
      name: imapc_client_ssl_mode
      pos:
        line_end: 12
        line_start: 8
        source_file: /src/dovecot/src/lib-imap-client/imapc-client-private.h
    preproc_defs:
    - item_type: preproc_def
      name: IMAPC_CLIENT_IDLE_SEND_DELAY_MSECS
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-imap-client/imapc-client-private.h
      type_or_value: '100'
    structs:
    - fields:
      - name: '*conn'
        type: struct imapc_connection
      - name: '*client'
        type: struct imapc_client
      - name: '*box'
        type: struct imapc_client_mailbox
      item_type: struct
      name: imapc_client_connection
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/dovecot/src/lib-imap-client/imapc-client-private.h
    - fields:
      - name: pool
        type: pool_t
      - name: refcount
        type: int
      - name: '*event'
        type: struct event
      - name: '*set'
        type: struct imapc_settings
      - name: params
        type: struct imapc_parameters
      - name: ssl_mode
        type: enum imapc_client_ssl_mode
      - name: '*untagged_callback'
        type: imapc_untagged_callback_t
      - name: '*untagged_context'
        type: void
      - name: '*state_change_callback'
        type: imapc_state_change_callback_t
      - name: '*state_change_context'
        type: void
      - name: '*login_callback'
        type: imapc_command_callback_t
      - name: '*login_context'
        type: void
      - name: logging_out
        type: bool
      - name: '*ioloop'
        type: struct ioloop
      - name: stop_on_state_finish
        type: bool
      - name: '*imapc_rawlog_dir'
        type: char
      - name: '*password'
        type: char
      item_type: struct
      name: imapc_client
      pos:
        line_end: 46
        line_start: 20
        source_file: /src/dovecot/src/lib-imap-client/imapc-client-private.h
    - fields:
      - name: '*client'
        type: struct imapc_client
      - name: '*conn'
        type: struct imapc_connection
      - name: '*msgmap'
        type: struct imapc_msgmap
      - name: '*to_send_idle'
        type: struct timeout
      - name: (*reopen_callback)(void *context)
        type: void
      - name: '*reopen_context'
        type: void
      - name: '*untagged_box_context'
        type: void
      - name: '*name'
        type: char
      - name: reconnect_ok
        type: bool
      - name: reconnecting
        type: bool
      - name: closing
        type: bool
      item_type: struct
      name: imapc_client_mailbox
      pos:
        line_end: 63
        line_start: 48
        source_file: /src/dovecot/src/lib-imap-client/imapc-client-private.h
    typedefs: []
    union: []
- function_names:
  - default_untagged_callback
  - imapc_client_init
  - imapc_client_ref
  - imapc_client_unref
  - imapc_client_disconnect
  - imapc_client_deinit
  - imapc_client_register_untagged
  - imapc_client_run_pre
  - imapc_client_run_post
  - imapc_client_run
  - imapc_client_stop
  - imapc_client_try_stop
  - imapc_client_is_running
  - imapc_client_login_callback
  - imapc_client_add_connection
  - imapc_client_find_connection
  - imapc_client_cmd
  - imapc_client_is_server_selected
  - imapc_client_get_unboxed_connection
  - imapc_client_login
  - imapc_client_logout_callback
  - imapc_client_logout
  - imapc_client_mailbox_open
  - imapc_client_mailbox_set_reopen_cb
  - imapc_client_mailbox_can_reconnect
  - imapc_client_mailbox_reconnect
  - imapc_client_mailbox_close
  - imapc_client_mailbox_cmd
  - imapc_client_mailbox_get_msgmap
  - imapc_client_mailbox_idle_send
  - imapc_client_mailbox_idle
  - imapc_client_mailbox_is_opened
  - imapc_client_get_any_capabilities
  - imapc_client_get_capabilities
  - imapc_client_create_temp_fd
  - imapc_client_register_state_change_callback
  - imapc_client_set_login_callback
  - imapc_client_is_ssl
  source_file: /src/dovecot/src/lib-imap-client/imapc-client.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*client'
        type: struct imapc_client
      - name: logout_count
        type: unsigned int
      item_type: struct
      name: imapc_logout_ctx
      pos:
        line_end: 292
        line_start: 289
        source_file: /src/dovecot/src/lib-imap-client/imapc-client.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-imap-client/imapc-settings.h
  types:
    enum:
    - enumerators:
      - name: IMAPC_FEATURE_NO_FETCH_SIZE
        value: '0x01'
      - name: IMAPC_FEATURE_GMAIL_MIGRATION
        value: '0x08'
      - name: IMAPC_FEATURE_NO_FETCH_HEADERS
        value: '0x04'
      - name: IMAPC_FEATURE_NO_SEARCH
        value: '0x10'
      - name: IMAPC_FEATURE_GUID_FORCED
        value: '0x02'
      - name: IMAPC_FEATURE_ZIMBRA_WORKAROUNDS
        value: '0x20'
      - name: IMAPC_FEATURE_NO_EXAMINE
        value: '0x40'
      - name: IMAPC_FEATURE_PROXYAUTH
        value: '0x80'
      - name: IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS
        value: '0x100'
      - name: IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS
        value: '0x200'
      - name: IMAPC_FEATURE_NO_MODSEQ
        value: '0x400'
      - name: IMAPC_FEATURE_SEND_ID
        value: '0x2000'
      - name: IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED
        value: '0x4000'
      - name: IMAPC_FEATURE_NO_DELAY_LOGIN
        value: '0x800'
      - name: IMAPC_FEATURE_NO_MSN_UPDATES
        value: '0x8000'
      - name: IMAPC_FEATURE_NO_FETCH_BODYSTRUCTURE
        value: '0x1000'
      - name: IMAPC_FEATURE_NO_ACL
        value: '0x10000'
      item_type: enum
      name: imapc_features
      pos:
        line_end: 27
        line_start: 9
        source_file: /src/dovecot/src/lib-imap-client/imapc-settings.h
    - enumerators:
      - name: IMAPC_CAPABILITY_UIDPLUS
        value: '0x10'
      - name: IMAPC_CAPABILITY_CONDSTORE
        value: '0x100'
      - name: IMAPC_CAPABILITY_WITHIN
        value: '0x1000'
      - name: IMAPC_CAPABILITY_METADATA
        value: '0x10000'
      - name: IMAPC_CAPABILITY_SEARCH_MIMEPART
        value: '0x200000'
      - name: IMAPC_CAPABILITY_LITERALPLUS
        value: '0x02'
      - name: IMAPC_CAPABILITY_AUTH_PLAIN
        value: '0x20'
      - name: IMAPC_CAPABILITY_NAMESPACE
        value: '0x200'
      - name: IMAPC_CAPABILITY_SORT
        value: '0x20000'
      - name: IMAPC_CAPABILITY_QUOTA
        value: '0x2000'
      - name: IMAPC_CAPABILITY_IMAP4REV2
        value: '0x20000000'
      - name: IMAPC_CAPABILITY_QRESYNC
        value: '0x04'
      - name: IMAPC_CAPABILITY_STARTTLS
        value: '0x40'
      - name: IMAPC_CAPABILITY_UNSELECT
        value: '0x400'
      - name: IMAPC_CAPABILITY_ID
        value: '0x4000'
      - name: IMAPC_CAPABILITY_ESORT
        value: '0x40000'
      - name: IMAPC_CAPABILITY_IMAP4REV1
        value: '0x40000000'
      - name: IMAPC_CAPABILITY_SASL_IR
        value: '0x01'
      - name: IMAPC_CAPABILITY_IDLE
        value: '0x08'
      - name: IMAPC_CAPABILITY_X_GM_EXT_1
        value: '0x80'
      - name: IMAPC_CAPABILITY_ESEARCH
        value: '0x800'
      - name: IMAPC_CAPABILITY_SAVEDATE
        value: '0x8000'
      - name: IMAPC_CAPABILITY_SORT_DISPLAY
        value: '0x100000'
      item_type: enum
      name: imapc_capability
      pos:
        line_end: 54
        line_start: 29
        source_file: /src/dovecot/src/lib-imap-client/imapc-settings.h
    preproc_defs:
    - item_type: preproc_def
      name: IMAPC_DEFAULT_MAX_IDLE_TIME
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-imap-client/imapc-settings.h
      type_or_value: (60*29)
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: capability
        type: enum imapc_capability
      item_type: struct
      name: imapc_capability_name
      pos:
        line_end: 59
        line_start: 56
        source_file: /src/dovecot/src/lib-imap-client/imapc-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*imapc_host'
        type: char
      - name: imapc_port
        type: in_port_t
      - name: '*imapc_user'
        type: char
      - name: '*imapc_master_user'
        type: char
      - name: '*imapc_password'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*imapc_ssl'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*imapc_rawlog_dir'
        type: char
      - name: '*imapc_list_prefix'
        type: char
      - name: imapc_cmd_timeout_secs
        type: unsigned int
      - name: imapc_max_idle_time_secs
        type: unsigned int
      - name: imapc_connection_timeout_interval_msecs
        type: unsigned int
      - name: imapc_connection_retry_count
        type: unsigned int
      - name: imapc_connection_retry_interval_msecs
        type: unsigned int
      - name: imapc_max_line_length
        type: uoff_t
      - name: '*pop3_deleted_flag'
        type: char
      - name: parsed_features
        type: enum imapc_features
      - name: parsed_disabled_capabilities
        type: enum imapc_capability
      - name: throttle_init_msecs
        type: unsigned int
      - name: throttle_max_msecs
        type: unsigned int
      - name: throttle_shrink_min_msecs
        type: unsigned int
      item_type: struct
      name: imapc_settings
      pos:
        line_end: 97
        line_start: 67
        source_file: /src/dovecot/src/lib-imap-client/imapc-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/syslog-util.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: facility
        type: int
      item_type: struct
      name: syslog_facility_list
      pos:
        line_end: 6
        line_start: 3
        source_file: /src/dovecot/src/lib-master/syslog-util.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/master-service-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*service'
        type: struct master_service
      - name: '*name'
        type: char
      - name: '*type'
        type: char
      - name: ssl
        type: bool
      - name: haproxy
        type: bool
      - name: closed
        type: bool
      - name: fd
        type: int
      - name: '*io'
        type: struct io
      item_type: struct
      name: master_service_listener
      pos:
        line_end: 23
        line_start: 10
        source_file: /src/dovecot/src/lib-master/master-service-private.h
    - fields:
      - name: '*ioloop'
        type: struct ioloop
      - name: '*event'
        type: struct event
      - name: '*name'
        type: char
      - name: '*configured_name'
        type: char
      - name: '*getopt_str'
        type: char
      - name: '*longopts'
        type: struct option
      - name: flags
        type: enum master_service_flags
      - name: argc
        type: int
      - name: '**argv'
        type: char
      - name: '*version_string'
        type: char
      - name: '*config_path'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*settings_root'
        type: struct settings_root
      - name: syslog_facility
        type: int
      - name: datastack_frame_id
        type: data_stack_frame_t
      - name: accepted_listener_fd
        type: int
      - name: '*listeners'
        type: struct master_service_listener
      - name: socket_count
        type: unsigned int
      - name: '*io_status_write'
        type: struct io
      - name: restart_request_count_left
        type: unsigned int
      - name: total_available_count
        type: unsigned int
      - name: process_limit
        type: unsigned int
      - name: process_min_avail
        type: unsigned int
      - name: idle_kill_interval_secs
        type: unsigned int
      - name: master_status
        type: struct master_status
      - name: last_sent_status_avail_count
        type: unsigned int
      - name: last_sent_status_time
        type: time_t
      - name: '*to_status'
        type: struct timeout
      - name: (*idle_die_callback)(void)
        type: bool
      - name: (*die_callback)(void)
        type: void
      - name: '*killed_callback'
        type: master_service_killed_callback_t
      - name: '*killed_context'
        type: void
      - name: '*to_die'
        type: struct timeout
      - name: '*avail_overflow_callback'
        type: master_service_avail_overflow_callback_t
      - name: '*to_overflow_state'
        type: struct timeout
      - name: (*stop_new_connections_callback)(void *context)
        type: void
      - name: '*stop_new_connections_context'
        type: void
      - name: '*callback'
        type: master_service_connection_callback_t
      - name: '*set'
        type: struct master_service_settings
      - name: '*ssl_ctx'
        type: struct ssl_iostream_context
      - name: ssl_params_last_refresh
        type: time_t
      - name: '*current_user'
        type: char
      - name: '*last_kick_signal_user'
        type: char
      - name: killed_signal_info
        type: siginfo_t
      - name: last_kick_signal_user_accessed
        type: sig_atomic_t
      - name: last_kick_signal_user_matched
        type: sig_atomic_t
      - name: killed_signal
        type: sig_atomic_t
      - name: killed_time
        type: struct timeval
      - name: '*stats_client'
        type: struct stats_client
      - name: '*haproxy_conns'
        type: struct master_service_haproxy_conn
      - name: '*process_shutdown_filter'
        type: struct event_filter
      - name: lib_initialized_externally
        type: bool
      - name: stopping
        type: bool
      - name: keep_environment
        type: bool
      - name: options_parsed
        type: bool
      - name: log_directly
        type: bool
      - name: initial_status_sent
        type: bool
      - name: die_with_master
        type: bool
      - name: call_avail_overflow
        type: bool
      - name: config_path_changed_with_param
        type: bool
      - name: have_admin_sockets
        type: bool
      - name: want_ssl_server
        type: bool
      - name: config_path_from_master
        type: bool
      - name: log_initialized
        type: bool
      - name: init_finished
        type: bool
      - name: killed_signal_logged
        type: bool
      - name: io_status_waiting
        type: bool
      item_type: struct
      name: master_service
      pos:
        line_end: 109
        line_start: 25
        source_file: /src/dovecot/src/lib-master/master-service-private.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/master-admin-client.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: "(*cmd)(struct master_admin_client *client,\n\t\t    const char *cmd,
          const char *const *args)"
        type: bool
      - name: "(*cmd_kick_user)(const char *user,\n\t\t\t\t      const guid_128_t
          conn_guid)"
        type: unsigned int
      item_type: struct
      name: master_admin_client_callback
      pos:
        line_end: 22
        line_start: 8
        source_file: /src/dovecot/src/lib-master/master-admin-client.h
    typedefs: []
    union: []
- function_names:
  - master_service_haproxy_conn_free
  - master_service_haproxy_conn_failure
  - master_service_haproxy_conn_success
  - master_service_haproxy_timeout
  - master_service_haproxy_recv
  - get_ssl_tlv
  - get_tlv
  - master_service_haproxy_parse_ssl_tlv
  - master_service_haproxy_parse_tlv
  - master_service_haproxy_read
  - master_service_haproxy_input
  - master_service_haproxy_conn_is_trusted
  - master_service_haproxy_new
  - master_service_haproxy_abort
  source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
  types:
    enum:
    - enumerators:
      - name: HAPROXY_VERSION_1
      - name: HAPROXY_VERSION_2
      item_type: enum
      name: haproxy_version_t
      pos:
        line_end: 31
        line_start: 28
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
    preproc_defs:
    - item_type: preproc_def
      name: HAPROXY_V1_MAX_HEADER_SIZE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: (108)
    - item_type: preproc_def
      name: PP2_TYPE_ALPN
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x01'
    - item_type: preproc_def
      name: PP2_TYPE_AUTHORITY
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x02'
    - item_type: preproc_def
      name: PP2_TYPE_CRC32C
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x03'
    - item_type: preproc_def
      name: PP2_TYPE_NOOP
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x04'
    - item_type: preproc_def
      name: PP2_TYPE_SSL
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x20'
    - item_type: preproc_def
      name: PP2_SUBTYPE_SSL_VERSION
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x21'
    - item_type: preproc_def
      name: PP2_SUBTYPE_SSL_CN
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x22'
    - item_type: preproc_def
      name: PP2_SUBTYPE_SSL_CIPHER
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x23'
    - item_type: preproc_def
      name: PP2_SUBTYPE_SSL_SIG_ALG
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x24'
    - item_type: preproc_def
      name: PP2_SUBTYPE_SSL_KEY_ALG
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x25'
    - item_type: preproc_def
      name: PP2_TYPE_NETNS
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x30'
    - item_type: preproc_def
      name: PP2_CLIENT_SSL
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x01'
    - item_type: preproc_def
      name: PP2_CLIENT_CERT_CONN
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x02'
    - item_type: preproc_def
      name: PP2_CLIENT_CERT_SESS
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '0x04'
    - item_type: preproc_def
      name: SIZEOF_PP2_TLV
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: (1U+2U)
    - item_type: preproc_def
      name: SIZEOF_PP2_TLV_SSL
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: (1U+4U)
    - item_type: preproc_def
      name: HAPROXY_READ_SIZE
      pos:
        line_end: 296
        line_start: 295
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
      type_or_value: '1500'
    structs:
    - fields:
      - name: sig[12]
        type: uint8_t
      - name: ver_cmd
        type: uint8_t
      - name: fam
        type: uint8_t
      - name: len
        type: uint16_t
      item_type: struct
      name: haproxy_header_v2
      pos:
        line_end: 59
        line_start: 54
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
    - fields:
      - name: addr
        type: "union {\n\t\tstruct {  /* for TCP/UDP over IPv4, len = 12 */\n\t\t\tuint32_t
          src_addr;\n\t\t\tuint32_t dst_addr;\n\t\t\tuint16_t src_port;\n\t\t\tuint16_t
          dst_port;\n\t\t} ip4;\n\t\tstruct {  /* for TCP/UDP over IPv6, len = 36
          */\n\t\t\tuint8_t  src_addr[16];\n\t\t\tuint8_t  dst_addr[16];\n\t\t\tuint16_t
          src_port;\n\t\t\tuint16_t dst_port;\n\t\t} ip6;\n\t\tstruct {  /* for AF_UNIX
          sockets, len = 216 */\n\t\t\tuint8_t src_addr[108];\n\t\t\tuint8_t dst_addr[108];\n\t\t}
          unx;\n\t}"
      item_type: struct
      name: haproxy_data_v2
      pos:
        line_end: 80
        line_start: 61
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
    - fields:
      - name: type
        type: uint8_t
      - name: len
        type: uint16_t
      - name: '*data'
        type: unsigned char
      item_type: struct
      name: haproxy_pp2_tlv
      pos:
        line_end: 87
        line_start: 83
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
    - fields:
      - name: client
        type: uint8_t
      - name: verify
        type: uint32_t
      - name: len
        type: size_t
      - name: '*data'
        type: unsigned char
      item_type: struct
      name: haproxy_pp2_tlv_ssl
      pos:
        line_end: 96
        line_start: 90
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
    - fields:
      - name: conn
        type: struct master_service_connection
      - name: pool
        type: pool_t
      - name: '*event'
        type: struct event
      - name: '*prev'
        type: struct master_service_haproxy_conn
      - name: '*service'
        type: struct master_service
      - name: '*io'
        type: struct io
      - name: '*to'
        type: struct timeout
      item_type: struct
      name: master_service_haproxy_conn
      pos:
        line_end: 110
        line_start: 98
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
    typedefs: []
    union:
    - fields:
      - name: v1_data[HAPROXY_V1_MAX_HEADER_SIZE]
        type: unsigned char
      - name: v2
        type: "struct {\n\t\t\tconst struct haproxy_header_v2 hdr;\n\t\t\tconst struct
          haproxy_data_v2 data;\n\t\t}"
      item_type: union
      name: haproxy_data_union
      pos:
        line_end: 310
        line_start: 304
        source_file: /src/dovecot/src/lib-master/master-service-haproxy.c
- function_names: []
  source_file: /src/dovecot/src/lib-master/master-interface.h
  types:
    enum:
    - enumerators:
      - name: MASTER_LOGIN_STATE_NONFULL
        value: '0'
      - name: MASTER_LOGIN_STATE_FULL
      item_type: enum
      name: master_login_state
      pos:
        line_end: 33
        line_start: 30
        source_file: /src/dovecot/src/lib-master/master-interface.h
    preproc_defs:
    - item_type: preproc_def
      name: MASTER_LOG_MAGIC
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '0x02ff03fe'
    - item_type: preproc_def
      name: MASTER_LOG_PREFIX_NAME
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"MASTER"'
    - item_type: preproc_def
      name: MASTER_IS_PARENT_ENV
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"DOVECOT_CHILD_PROCESS"'
    - item_type: preproc_def
      name: MASTER_UID_ENV
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"GENERATION"'
    - item_type: preproc_def
      name: MASTER_SERVICE_ENV
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"SERVICE_NAME"'
    - item_type: preproc_def
      name: MASTER_CLIENT_LIMIT_ENV
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"CLIENT_LIMIT"'
    - item_type: preproc_def
      name: MASTER_PROCESS_LIMIT_ENV
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"PROCESS_LIMIT"'
    - item_type: preproc_def
      name: MASTER_PROCESS_MIN_AVAIL_ENV
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"PROCESS_MIN_AVAIL"'
    - item_type: preproc_def
      name: MASTER_SERVICE_COUNT_ENV
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"SERVICE_COUNT"'
    - item_type: preproc_def
      name: MASTER_SERVICE_IDLE_KILL_INTERVAL_ENV
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"IDLE_KILL_INTERVAL"'
    - item_type: preproc_def
      name: MASTER_CONFIG_FILE_ENV
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"CONFIG_FILE"'
    - item_type: preproc_def
      name: MASTER_CONFIG_FILE_SOCKET_ENV
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"CONFIG_FILE_SOCKET"'
    - item_type: preproc_def
      name: MASTER_VERBOSE_PROCTITLE_ENV
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"VERBOSE_PROCTITLE"'
    - item_type: preproc_def
      name: MASTER_DOVECOT_VERSION_ENV
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"DOVECOT_VERSION"'
    - item_type: preproc_def
      name: MASTER_SSL_KEY_PASSWORD_ENV
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"SSL_KEY_PASSWORD"'
    - item_type: preproc_def
      name: MASTER_SERVICE_SOCKET_COUNT_ENV
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"SOCKET_COUNT"'
    - item_type: preproc_def
      name: MASTER_SERVICE_LOG_SERVICE_ENV
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"LOG_SERVICE"'
    - item_type: preproc_def
      name: DOVECOT_LOG_STDERR_TIMESTAMP_ENV
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"LOG_STDERR_TIMESTAMP"'
    - item_type: preproc_def
      name: DOVECOT_PRESERVE_ENVS_ENV
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"DOVECOT_PRESERVE_ENVS"'
    - item_type: preproc_def
      name: DOVECOT_LOG_DEBUG_ENV
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"LOG_DEBUG"'
    - item_type: preproc_def
      name: DOVECOT_CONFIG_FD_ENV
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"DOVECOT_CONFIG_FD"'
    - item_type: preproc_def
      name: DOVECOT_STATS_WRITER_SOCKET_PATH
      pos:
        line_end: 114
        line_start: 113
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"STATS_WRITER_SOCKET_PATH"'
    - item_type: preproc_def
      name: DOVECOT_ACCEPTED_CLIENT_LISTENER_FD_ENV
      pos:
        line_end: 120
        line_start: 118
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '"DOVECOT_ACCEPTED_CLIENT_LISTENER_FD"'
    - item_type: preproc_def
      name: MASTER_ANVIL_FD
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '3'
    - item_type: preproc_def
      name: MASTER_ANVIL_LOG_FDPASS_FD
      pos:
        line_end: 125
        line_start: 124
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '4'
    - item_type: preproc_def
      name: MASTER_LOGIN_NOTIFY_FD
      pos:
        line_end: 127
        line_start: 126
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '4'
    - item_type: preproc_def
      name: MASTER_STATUS_FD
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '5'
    - item_type: preproc_def
      name: MASTER_DEAD_FD
      pos:
        line_end: 133
        line_start: 132
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '6'
    - item_type: preproc_def
      name: MASTER_CONFIG_FD
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '7'
    - item_type: preproc_def
      name: MASTER_ACCEPTED_CLIENT_FD
      pos:
        line_end: 138
        line_start: 137
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '8'
    - item_type: preproc_def
      name: MASTER_LISTEN_FD_FIRST
      pos:
        line_end: 145
        line_start: 144
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: '9'
    - item_type: preproc_def
      name: MASTER_LOGIN_TIMEOUT_SECS
      pos:
        line_end: 148
        line_start: 147
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: (3*60)
    - item_type: preproc_def
      name: MASTER_AUTH_SERVER_TIMEOUT_SECS
      pos:
        line_end: 150
        line_start: 149
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: (MASTER_LOGIN_TIMEOUT_SECS - 30)
    - item_type: preproc_def
      name: MASTER_AUTH_LOOKUP_TIMEOUT_SECS
      pos:
        line_end: 153
        line_start: 152
        source_file: /src/dovecot/src/lib-master/master-interface.h
      type_or_value: (MASTER_AUTH_SERVER_TIMEOUT_SECS + 5)
    structs:
    - fields:
      - name: pid
        type: pid_t
      - name: uid
        type: unsigned int
      - name: available_count
        type: unsigned int
      item_type: struct
      name: master_status
      pos:
        line_end: 15
        line_start: 9
        source_file: /src/dovecot/src/lib-master/master-interface.h
    - fields:
      - name: log_magic
        type: unsigned int
      - name: prefix_len
        type: unsigned int
      item_type: struct
      name: log_service_handshake
      pos:
        line_end: 28
        line_start: 18
        source_file: /src/dovecot/src/lib-master/master-interface.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/service-settings.h
  types:
    enum:
    - enumerators:
      - name: SERVICE_USER_DEFAULT_NONE
        value: '0'
      - name: SERVICE_USER_DEFAULT_LOGIN
      - name: SERVICE_USER_DEFAULT_INTERNAL
      item_type: enum
      name: service_user_default
      pos:
        line_end: 10
        line_start: 6
        source_file: /src/dovecot/src/lib-master/service-settings.h
    - enumerators:
      - name: SERVICE_TYPE_UNKNOWN
      - name: SERVICE_TYPE_LOG
      - name: SERVICE_TYPE_CONFIG
      - name: SERVICE_TYPE_ANVIL
      - name: SERVICE_TYPE_LOGIN
      - name: SERVICE_TYPE_STARTUP
      - name: SERVICE_TYPE_WORKER
      item_type: enum
      name: service_type
      pos:
        line_end: 23
        line_start: 12
        source_file: /src/dovecot/src/lib-master/service-settings.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*set'
        type: struct service_settings
      - name: '*defaults'
        type: struct setting_keyvalue
      item_type: struct
      name: config_service
      pos:
        line_end: 28
        line_start: 25
        source_file: /src/dovecot/src/lib-master/service-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*path'
        type: char
      - name: '*type'
        type: char
      - name: mode
        type: unsigned int
      - name: '*user'
        type: char
      - name: '*group'
        type: char
      item_type: struct
      name: file_listener_settings
      pos:
        line_end: 39
        line_start: 32
        source_file: /src/dovecot/src/lib-master/service-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*type'
        type: char
      - name: port
        type: in_port_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: ssl
        type: bool
      - name: reuse_port
        type: bool
      - name: haproxy
        type: bool
      item_type: struct
      name: inet_listener_settings
      pos:
        line_end: 52
        line_start: 42
        source_file: /src/dovecot/src/lib-master/service-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*protocol'
        type: char
      - name: '*type'
        type: char
      - name: '*executable'
        type: char
      - name: '*user'
        type: char
      - name: '*group'
        type: char
      - name: '*privileged_group'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*chroot'
        type: char
      - name: drop_priv_before_exec
        type: bool
      - name: process_min_avail
        type: unsigned int
      - name: process_limit
        type: unsigned int
      - name: client_limit
        type: unsigned int
      - name: restart_request_count
        type: unsigned int
      - name: idle_kill_interval
        type: unsigned int
      - name: vsz_limit
        type: uoff_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: parsed_type
        type: enum service_type
      - name: user_default
        type: enum service_user_default
      - name: login_dump_core
        type: bool
      - name: (file_listener_settings)
        type: ARRAY_TYPE
      - name: (file_listener_settings)
        type: ARRAY_TYPE
      - name: (inet_listener_settings)
        type: ARRAY_TYPE
      - name: process_limit_1
        type: bool
      item_type: struct
      name: service_settings
      pos:
        line_end: 93
        line_start: 55
        source_file: /src/dovecot/src/lib-master/service-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/master-service-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MASTER_SERVICE_BINARY_CONFIG_DEFAULTS
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-master/master-service-settings.h
      type_or_value: '"<default config>"'
    - item_type: preproc_def
      name: VERBOSE_PROCTITLE_DEFAULT
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-master/master-service-settings.h
      type_or_value: 'TRUE'
    - item_type: preproc_def
      name: VERBOSE_PROCTITLE_DEFAULT
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-master/master-service-settings.h
      type_or_value: 'FALSE'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*base_dir'
        type: char
      - name: '*state_dir'
        type: char
      - name: '*instance_name'
        type: char
      - name: '*log_path'
        type: char
      - name: '*info_log_path'
        type: char
      - name: '*debug_log_path'
        type: char
      - name: '*log_timestamp'
        type: char
      - name: '*log_debug'
        type: char
      - name: '*log_core_filter'
        type: char
      - name: '*process_shutdown_filter'
        type: char
      - name: '*syslog_facility'
        type: char
      - name: '*stats_writer_socket_path'
        type: char
      - name: '*auth_master_socket_path'
        type: char
      - name: '*dovecot_storage_version'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: version_ignore
        type: bool
      - name: shutdown_clients
        type: bool
      - name: verbose_proctitle
        type: bool
      - name: '*haproxy_trusted_networks'
        type: char
      - name: haproxy_timeout
        type: unsigned int
      item_type: struct
      name: master_service_settings
      pos:
        line_end: 38
        line_start: 15
        source_file: /src/dovecot/src/lib-master/master-service-settings.h
    - fields:
      - name: '*config_path'
        type: char
      - name: config_fd
        type: int
      - name: preserve_environment
        type: bool
      - name: preserve_user
        type: bool
      - name: preserve_home
        type: bool
      - name: no_service_filter
        type: bool
      - name: check_full_config
        type: bool
      - name: hide_obsolete_warnings
        type: bool
      - name: no_protocol_filter
        type: bool
      - name: no_key_validation
        type: bool
      - name: reload_config
        type: bool
      - name: never_exec
        type: bool
      - name: always_exec
        type: bool
      - name: return_config_fd
        type: bool
      - name: use_sysexits
        type: bool
      - name: '*protocol'
        type: char
      item_type: struct
      name: master_service_settings_input
      pos:
        line_end: 69
        line_start: 40
        source_file: /src/dovecot/src/lib-master/master-service-settings.h
    - fields:
      - name: '*const *specific_protocols'
        type: char
      - name: config_fd
        type: int
      - name: permission_denied
        type: bool
      item_type: struct
      name: master_service_settings_output
      pos:
        line_end: 82
        line_start: 71
        source_file: /src/dovecot/src/lib-master/master-service-settings.h
    typedefs: []
    union: []
- function_names:
  - master_service_ssl_is_enabled
  - master_service_ssl_ctx_init
  - master_service_ssl_ctx_deinit
  source_file: /src/dovecot/src/lib-master/master-service-ssl.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/log-error-buffer.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: enum log_type
      - name: timestamp
        type: struct timeval
      - name: '*prefix'
        type: char
      - name: '*text'
        type: char
      item_type: struct
      name: log_error
      pos:
        line_end: 10
        line_start: 5
        source_file: /src/dovecot/src/lib-master/log-error-buffer.h
    typedefs: []
    union: []
- function_names:
  - master_service_getopt_string
  - block_sigterm
  - log_killed_signal
  - master_service_can_idle_die
  - sig_delayed_die
  - sig_term_buf_get_kick_user
  - sig_service_kick_user_match
  - sig_term_try_kick_user
  - sig_term_try_kick
  - sig_die_delayed
  - sig_standalone_die
  - sig_term
  - sig_close_listeners
  - sig_delayed_state_changed
  - master_service_event_callback
  - master_service_verify_version_string
  - master_service_init_socket_listeners
  - master_service_init
  - master_service_register_long_options
  - master_getopt
  - master_getopt_long
  - master_getopt_str_is_valid
  - master_service_try_init_log
  - master_service_init_log
  - master_service_init_log_with_prefix
  - master_service_init_log_with_pid
  - master_service_init_stats_client
  - master_service_set_die_with_master
  - master_service_set_die_callback
  - master_service_set_idle_die_callback
  - get_instance_config
  - master_service_parse_option
  - master_service_error
  - master_status_error
  - master_status_update_wait
  - master_service_init_finish
  - master_service_import_environment_real
  - master_service_import_environment
  - master_service_env_clean
  - master_service_set_client_limit
  - master_service_get_client_limit
  - master_service_get_process_limit
  - master_service_get_process_min_avail
  - master_service_get_idle_kill_interval_secs
  - master_service_set_restart_request_count
  - master_service_get_restart_request_count
  - master_service_get_socket_count
  - master_service_connection_init_finish
  - master_service_set_avail_overflow_callback
  - master_service_get_config_path
  - master_service_get_version_string
  - master_service_get_name
  - master_service_get_event
  - master_service_get_configured_name
  - master_service_get_settings_root
  - master_service_start_accepted_fd
  - master_service_run
  - master_service_stop
  - master_service_stop_new_connections
  - master_service_add_stop_new_connections_callback
  - master_service_remove_stop_new_connections_callback
  - master_service_is_killed
  - master_service_get_kill_signal
  - master_service_get_kill_time
  - master_service_is_user_kicked
  - master_service_is_master_stopped
  - master_service_anvil_send
  - master_service_anvil_session_to_cmd
  - master_service_anvil_connect
  - master_service_anvil_disconnect
  - master_service_client_connection_created
  - master_service_want_listener
  - master_service_client_connection_handled
  - master_service_client_connection_callback
  - master_service_client_connection_accept
  - master_service_client_connection_destroyed
  - master_service_connection_get_type
  - master_service_set_login_state
  - master_service_get_login_state
  - master_service_refresh_login_state
  - master_service_deinit_real
  - master_service_free
  - master_service_deinit
  - master_service_deinit_forked
  - master_service_overflow
  - master_service_overflow_timeout_msecs
  - master_service_full
  - master_service_accept
  - master_service_listen
  - master_service_io_listeners_add
  - master_service_io_listeners_remove
  - master_service_ssl_io_listeners_remove
  - master_service_io_listeners_close
  - master_status_update_is_important
  - master_status_send
  - master_status_update
  - master_service_set_process_shutdown_filter
  - master_service_unset_process_shutdown_filter
  - master_service_set_current_user
  - master_service_set_last_kick_signal_user
  - master_service_set_killed_callback
  source_file: /src/dovecot/src/lib-master/master-service.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DEFAULT_CONFIG_FILE_PATH
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dovecot/src/lib-master/master-service.c
      type_or_value: SYSCONFDIR"/dovecot.conf"
    - item_type: preproc_def
      name: MASTER_CONFIG_FILE_ENV
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dovecot/src/lib-master/master-service.c
      type_or_value: '"CONFIG_FILE"'
    - item_type: preproc_def
      name: MASTER_DOVECOT_VERSION_ENV
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dovecot/src/lib-master/master-service.c
      type_or_value: '"DOVECOT_VERSION"'
    - item_type: preproc_def
      name: MASTER_SERVICE_STATE_CHECK_MSECS
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dovecot/src/lib-master/master-service.c
      type_or_value: '1000'
    - item_type: preproc_def
      name: MASTER_SERVICE_DIE_TIMEOUT_MSECS
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/dovecot/src/lib-master/master-service.c
      type_or_value: (30*1000)
    structs: []
    typedefs: []
    union: []
- function_names:
  - master_instance_list_init
  - master_instance_list_deinit
  - master_instance_update_config_path
  - master_instance_list_add_line
  - master_instance_list_refresh
  - master_instance_list_write
  - master_instance_write_init
  - master_instance_write_finish
  - master_instance_find
  - master_instance_list_update
  - master_instance_list_set_name
  - master_instance_list_remove
  - master_instance_list_refresh_and_update
  - master_instance_list_find_by_name
  - master_instance_list_iterate_init
  - master_instance_iterate_list_next
  - master_instance_iterate_list_deinit
  source_file: /src/dovecot/src/lib-master/master-instance.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*path'
        type: char
      - name: locked
        type: bool
      - name: config_paths_changed
        type: bool
      item_type: struct
      name: master_instance_list
      pos:
        line_end: 23
        line_start: 15
        source_file: /src/dovecot/src/lib-master/master-instance.c
    - fields:
      - name: '*list'
        type: struct master_instance_list
      - name: idx
        type: unsigned int
      item_type: struct
      name: master_instance_list_iter
      pos:
        line_end: 28
        line_start: 25
        source_file: /src/dovecot/src/lib-master/master-instance.c
    typedefs: []
    union: []
- function_names:
  - syslog_facility_find
  source_file: /src/dovecot/src/lib-master/syslog-util.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_handshake_filter
  - stats_client_handshake
  - stats_client_input_args
  - stats_client_reconnect
  - stats_client_destroy
  - stats_event_write
  - stats_client_send_event
  - stats_client_free_event
  - stats_event_callback
  - stats_category_append
  - stats_category_registered
  - stats_global_init
  - stats_global_deinit
  - stats_client_handshake_timeout
  - stats_client_deinit_timeout
  - stats_client_wait
  - stats_client_send_registered_categories
  - stats_client_connect
  - stats_client_init
  - stats_client_init_unittest
  - stats_client_deinit_callback
  - stats_client_deinit
  source_file: /src/dovecot/src/lib-master/stats-client.c
  types:
    enum:
    - enumerators:
      - name: STATS_CLIENT_HANDSHAKE_WAIT
      - name: STATS_CLIENT_DEINIT_WAIT
      item_type: enum
      name: stats_timeout_type
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/dovecot/src/lib-master/stats-client.c
    preproc_defs:
    - item_type: preproc_def
      name: STATS_CLIENT_HANDSHAKE_TIMEOUT_MSECS
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-master/stats-client.c
      type_or_value: (5*1000)
    - item_type: preproc_def
      name: STATS_CLIENT_DEINIT_TIMEOUT_MSECS
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-master/stats-client.c
      type_or_value: (60*1000)
    - item_type: preproc_def
      name: STATS_CLIENT_RECONNECT_INTERVAL_MSECS
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-master/stats-client.c
      type_or_value: (10*1000)
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*filter'
        type: struct event_filter
      - name: '*ioloop'
        type: struct ioloop
      - name: '*to_reconnect'
        type: struct timeout
      - name: wait_started
        type: struct timeval
      - name: handshaked
        type: bool
      - name: handshake_received_at_least_once
        type: bool
      - name: silent_errors
        type: bool
      item_type: struct
      name: stats_client
      pos:
        line_end: 30
        line_start: 21
        source_file: /src/dovecot/src/lib-master/stats-client.c
    typedefs: []
    union: []
- function_names:
  - DATA
  - NUM64
  - NUM32
  - NUM64
  - NUM32
  - test_input_to_fd
  - test_master_service_settings_read_binary_corruption
  - main
  source_file: /src/dovecot/src/lib-master/test-master-service-settings.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*data'
        type: unsigned char
      - name: size
        type: size_t
      - name: '*error'
        type: char
      item_type: struct
      name: "tests[] = {\n\t{ DATA(\"D\"),\n\t  \"File header doesn't begin with DOVECOT-CONFIG
        line\" },\n\t{ DATA(\"DOVECOT-CONFIG\\t\"),\n\t  \"File header doesn't begin
        with DOVECOT-CONFIG line\" },\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\"),\n\t  \"File
        header doesn't begin with DOVECOT-CONFIG line\" },\n\t{ DATA(\"DOVECOT-CONFIG\\t2.3\\n\"),\n\t
        \ \"Unsupported config file version '2.3'\" },\n\n\t/* full file size = 1,
        but file is still truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\" // 19
        bytes\n\t       NUM64(\"\\x01\")), // full size\n\t  \"Full size mismatch\"
        },\n\n\t/* cache path count is truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t
        \      NUM64(\"\\x03\") // full size\n\t       \"\\x00\\x00\\x00\"), // cache
        path count\n\t  \"Area too small when reading uint of 'config paths count'\"
        },\n\n\t/* all keys size is truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t
        \      NUM64(\"\\x07\") // full size\n\t       NUM32(\"\\x00\") // cache path
        count\n\t       \"\\x00\\x00\\x00\"), // all keys size\n\t  \"Area too small
        when reading uint of 'all keys size'\" },\n\n\t/* all keys hash key prefix
        is truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x0C\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x04\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       \"\\x00\\x00\\x00\"),
        // all keys hash key prefix\n\t  \"Area too small when reading uint of 'all
        keys hash key prefix'\" },\n\n\t  /* event all keys hash nodes count is truncated
        */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x10\") // full
        size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x08\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       \"\\x00\\x00\\x00\"), // all keys hash
        nodes count\n\t  \"Area too small when reading uint of 'all keys hash nodes
        count'\" },\n\n\t/* event filter count is truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t
        \      NUM64(\"\\x18\") // full size\n\t       NUM32(\"\\x00\") // cache path
        count\n\t       NUM32(\"\\x0D\") // all keys size\n\t       \"\\x00\" // 32bit
        padding\n\t       NUM32(\"\\x00\") // all keys hash key prefix\n\t       NUM32(\"\\x00\")
        // all keys hash nodes count\n\t       NUM32(\"\\x00\") // block names count\n\t
        \      \"\\x00\\x00\\x00\"), // event filter count\n\t  \"Area too small when
        reading uint of 'filters count'\" },\n\n\t/* event filter strings are truncated
        */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x19\") // full
        size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")),
        // event filter count\n\t  \"'filter string' points outside area\" },\n\n\t/*
        full file size is 7 bytes, which makes the first block size\n\t   truncated,
        since it needs 8 bytes */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x25\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"),
        // block size\n\t  \"Area too small when reading size of 'block size'\" },\n\t/*
        first block size is 0, which is too small */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t
        \      NUM64(\"\\x26\") // full size\n\t       NUM32(\"\\x00\") // cache path
        count\n\t       NUM32(\"\\x0D\") // all keys size\n\t       \"\\x00\" // 32bit
        padding\n\t       NUM32(\"\\x00\") // all keys hash key prefix\n\t       NUM32(\"\\x00\")
        // all keys hash nodes count\n\t       NUM32(\"\\x00\") // block names count\n\t
        \      NUM32(\"\\x01\") // event filter count\n\t       \"\\x00\" // event
        filter[0]\n\t       NUM32(\"\\x00\") // number of named list filter elements\n\t
        \      NUM64(\"\\x00\")), // block size\n\t  \"'block name' points outside
        area\" },\n\t/* first block size is 1, but full file size is too small */\n\t{
        DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x26\") // full size\n\t
        \      NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\") //
        all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x01\")), // block
        size\n\t  \"'block size' points outside are\" },\n\t/* block name is not NUL-terminated
        */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x28\") // full
        size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x01\") // block
        size\n\t       \"N\"\n\t       \"\\x00\"), // trailing garbage so we can have
        NUL\n\t  \"Settings block doesn't end with NUL at offset\" },\n\n\t/* settings
        count is truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x2B\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x05\") // block
        size\n\t       \"N\\x00\" // block name\n\t       \"\\x00\\x00\\x00\"),\n\t
        \ \"Area too small when reading uint of 'settings count'\" },\n\n\t/* settings
        keys are truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x2C\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x06\") // block
        size\n\t       \"N\\x00\" // block name\n\t       NUM32(\"\\x01\")), // settings
        count\n\t  \"'setting key' points outside area\" },\n\n\t/* filter count is
        truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x31\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x0B\") // block
        size\n\t       \"N\\x00\" // block name\n\t       NUM32(\"\\x01\") // settings
        count\n\t       \"K\\x00\" // setting[0] key\n\t       \"\\x00\\x00\\x00\"),
        // filter count\n\t  \"Area too small when reading uint of 'filter count'\"
        },\n\n\t/* filter settings size is truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t
        \      NUM64(\"\\x39\") // full size\n\t       NUM32(\"\\x00\") // cache path
        count\n\t       NUM32(\"\\x0D\") // all keys size\n\t       \"\\x00\" // 32bit
        padding\n\t       NUM32(\"\\x00\") // all keys hash key prefix\n\t       NUM32(\"\\x00\")
        // all keys hash nodes count\n\t       NUM32(\"\\x00\") // block names count\n\t
        \      NUM32(\"\\x01\") // event filter count\n\t       \"\\x00\" // event
        filter[0]\n\t       NUM32(\"\\x00\") // number of named list filter elements\n\t
        \      NUM64(\"\\x12\") // block size\n\t       \"N\\x00\" // block name\n\t
        \      NUM32(\"\\x01\") // settings count\n\t       \"K\\x00\" // setting[0]
        key\n\t       NUM32(\"\\x01\") // filter count\n\t       \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"),
        // filter settings size\n\t  \"Area too small when reading size of 'filter
        settings size'\" },\n\n\t/* filter settings is truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t
        \      NUM64(\"\\x3A\") // full size\n\t       NUM32(\"\\x00\") // cache path
        count\n\t       NUM32(\"\\x0D\") // all keys size\n\t       \"\\x00\" // 32bit
        padding\n\t       NUM32(\"\\x00\") // all keys hash key prefix\n\t       NUM32(\"\\x00\")
        // all keys hash nodes count\n\t       NUM32(\"\\x00\") // block names count\n\t
        \      NUM32(\"\\x01\") // event filter count\n\t       \"\\x00\" // event
        filter[0]\n\t       NUM32(\"\\x00\") // number of named list filter elements\n\t
        \      NUM64(\"\\x14\") // block size\n\t       \"N\\x00\" // block name\n\t
        \      NUM32(\"\\x01\") // settings count\n\t       \"K\\x00\" // setting[0]
        key\n\t       NUM32(\"\\x01\") // filter count\n\t       NUM64(\"\\x10\")),
        // filter settings size\n\t  \"'filter settings size' points outside area\"
        },\n\t/* filter error is missing */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t
        \      NUM64(\"\\x47\") // full size\n\t       NUM32(\"\\x00\") // cache path
        count\n\t       NUM32(\"\\x0D\") // all keys size\n\t       \"\\x00\" // 32bit
        padding\n\t       NUM32(\"\\x00\") // all keys hash key prefix\n\t       NUM32(\"\\x00\")
        // all keys hash nodes count\n\t       NUM32(\"\\x00\") // block names count\n\t
        \      NUM32(\"\\x01\") // event filter count\n\t       \"\\x00\" // event
        filter[0]\n\t       NUM32(\"\\x00\") // number of named list filter elements\n\t
        \      NUM64(\"\\x21\") // block size\n\t       \"N\\x00\" // block name\n\t
        \      NUM32(\"\\x01\") // settings count\n\t       \"K\\x00\" // setting[0]
        key\n\t       NUM32(\"\\x01\") // filter count\n\t       NUM64(\"\\x00\")
        // filter settings size\n\t       NUM32(\"\\x00\") // event filter index\n\t
        \      NUM64(\"\\x00\") // filter settings offset\n\t       \"\\x00\"), //
        safety NUL\n\t  \"'filter error string' points outside area\" },\n\t/* filter
        error is not NUL-terminated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x55\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x2F\") // block
        size\n\t       \"master_service\\x00\" // block name\n\t       NUM32(\"\\x01\")
        // settings count\n\t       \"K\\x00\" // setting[0] key\n\t       NUM32(\"\\x01\")
        // filter count\n\t       NUM64(\"\\x01\") // filter settings size\n\t       \"E\"
        // filter error string\n\t       NUM32(\"\\x00\") // event filter index\n\t
        \      NUM64(\"\\x00\") // filter settings offset\n\t       \"\\x00\"), //
        safety NUL\n\t  \"'filter error string' points outside area\" },\n\t/* include
        group count is truncated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x58\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x32\") // block
        size\n\t       \"master_service\\x00\" // block name\n\t       NUM32(\"\\x01\")
        // settings count\n\t       \"K\\x00\" // setting[0] key\n\t       NUM32(\"\\x01\")
        // filter count\n\t       NUM64(\"\\x04\") // filter settings size\n\t       \"\\x00\"
        // filter error string\n\t       \"\\x00\\x00\\x00\" // include group count\n\t
        \      NUM32(\"\\x00\") // event filter index\n\t       NUM64(\"\\x00\") //
        filter settings offset\n\t       \"\\x00\"), // safety NUL\n\t  \"Area too
        small when reading uint of 'include group count'\" },\n\t/* include group
        count is too large */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x59\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x33\") // block
        size\n\t       \"master_service\\x00\" // block name\n\t       NUM32(\"\\x01\")
        // settings count\n\t       \"K\\x00\" // setting[0] key\n\t       NUM32(\"\\x01\")
        // filter count\n\t       NUM64(\"\\x05\") // filter settings size\n\t       \"\\x00\"
        // filter error string\n\t       NUM32(\"\\x01\") // include group count\n\t
        \      NUM32(\"\\x00\") // event filter index\n\t       NUM64(\"\\x00\") //
        filter settings offset\n\t       \"\\x00\"), // safety NUL\n\t  \"'group label
        string' points outside area\" },\n\t/* group label not NUL-terminated */\n\t{
        DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x5A\") // full size\n\t
        \      NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\") //
        all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x34\") // block
        size\n\t       \"master_service\\x00\" // block name\n\t       NUM32(\"\\x01\")
        // settings count\n\t       \"K\\x00\" // setting[0] key\n\t       NUM32(\"\\x01\")
        // filter count\n\t       NUM64(\"\\x06\") // filter settings size\n\t       \"\\x00\"
        // filter error string\n\t       NUM32(\"\\x01\") // include group count\n\t
        \      \"G\" // group label\n\t       NUM32(\"\\x00\") // event filter index\n\t
        \      NUM64(\"\\x00\") // filter settings offset\n\t       \"\\x00\"), //
        safety NUL\n\t  \"'group label string' points outside area\" },\n\t/* group
        name not NUL-terminated */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x5C\")
        // full size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x36\") // block
        size\n\t       \"master_service\\x00\" // block name\n\t       NUM32(\"\\x01\")
        // settings count\n\t       \"K\\x00\" // setting[0] key\n\t       NUM32(\"\\x01\")
        // filter count\n\t       NUM64(\"\\x08\") // filter settings size\n\t       \"\\x00\"
        // filter error string\n\t       NUM32(\"\\x01\") // include group count\n\t
        \      \"G\\x00\" // group label\n\t       \"N\" // group name\n\t       NUM32(\"\\x00\")
        // event filter index\n\t       NUM64(\"\\x00\") // filter settings offset\n\t
        \      \"\\x00\"), // safety NUL\n\t  \"'group name string' points outside
        area\" },\n\t/* invalid filter string */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t
        \      NUM64(\"\\x4F\") // full size\n\t       NUM32(\"\\x00\") // cache path
        count\n\t       NUM32(\"\\x0D\") // all keys size\n\t       \"\\x00\" // 32bit
        padding\n\t       NUM32(\"\\x00\") // all keys hash key prefix\n\t       NUM32(\"\\x00\")
        // all keys hash nodes count\n\t       NUM32(\"\\x00\") // block names count\n\t
        \      NUM32(\"\\x01\") // event filter count\n\t       \"F\\x00\" // event
        filter[0]\n\t       NUM32(\"\\x00\") // number of named list filter elements\n\t
        \      NUM64(\"\\x28\") // block size\n\t       \"N\\x00\" // block name\n\t
        \      NUM32(\"\\x01\") // settings count\n\t       \"K\\x00\" // setting[0]
        key\n\t       NUM32(\"\\x01\") // filter count\n\t       NUM64(\"\\x05\")
        // filter settings size\n\t       \"\\x00\" // filter error string\n\t       NUM32(\"\\x00\")
        // include group count\n\t       \"\\x00\\x00\" // 64bit padding\n\t       NUM64(\"\\x00\")
        // filter[0] settings offset\n\t       NUM32(\"\\x00\") // filter[0] event
        filter index\n\t       \"\\x00\"), // safety NUL\n\t  \"Received invalid filter
        'F' at index 0: event filter: syntax error\" },\n\n\t/* Duplicate block name
        */\n\t{ DATA(\"DOVECOT-CONFIG\\t1.0\\n\"\n\t       NUM64(\"\\x5C\") // full
        size\n\t       NUM32(\"\\x00\") // cache path count\n\t       NUM32(\"\\x0D\")
        // all keys size\n\t       \"\\x00\" // 32bit padding\n\t       NUM32(\"\\x00\")
        // all keys hash key prefix\n\t       NUM32(\"\\x00\") // all keys hash nodes
        count\n\t       NUM32(\"\\x00\") // block names count\n\t       NUM32(\"\\x01\")
        // event filter count\n\t       \"\\x00\" // event filter[0]\n\t       NUM32(\"\\x00\")
        // number of named list filter elements\n\t       NUM64(\"\\x2C\") // block
        size\n\t       \"N\\x00\" // block name\n\t       NUM32(\"\\x01\") // settings
        count\n\t       \"K\\x00\" // setting[0] key\n\t       NUM32(\"\\x01\") //
        filter count\n\t       NUM64(\"\\x05\") // filter settings size\n\t       \"\\x00\"
        // filter error string\n\t       NUM32(\"\\x00\") // include group count\n\t
        \      \"\\x00\\x00\\x00\\x00\\x00\\x00\" // 64bit padding\n\t       NUM64(\"\\x00\")
        // filter[0] settings offset\n\t       NUM32(\"\\x00\") // filter[0] event
        filter index\n\t       \"\\x00\" // safety NUL\n\t       NUM64(\"\\x02\")
        // 2nd block size\n\t       \"N\\x00\"), // 2nd block name\n\t  \"Duplicate
        block name 'N'\" },\n}"
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/dovecot/src/lib-master/test-master-service-settings.c
    typedefs: []
    union: []
- function_names:
  - anvil_client_query
  source_file: /src/dovecot/src/lib-master/anvil-client.h
  types:
    enum:
    - enumerators:
      - name: ANVIL_CLIENT_FLAG_HIDE_ENOENT
        value: '0x01'
      item_type: enum
      name: anvil_client_flags
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/dovecot/src/lib-master/anvil-client.h
    preproc_defs:
    - item_type: preproc_def
      name: ANVIL_DEFAULT_LOOKUP_TIMEOUT_MSECS
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-master/anvil-client.h
      type_or_value: (5*1000)
    - item_type: preproc_def
      name: ANVIL_DEFAULT_KICK_TIMEOUT_MSECS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/lib-master/anvil-client.h
      type_or_value: (25*1000)
    structs:
    - fields:
      - name: (*reconnect)(void)
        type: bool
      - name: (*command)(const char *cmd, const char *const *args)
        type: bool
      item_type: struct
      name: anvil_client_callbacks
      pos:
        line_end: 22
        line_start: 11
        source_file: /src/dovecot/src/lib-master/anvil-client.h
    - fields:
      - name: '*error'
        type: char
      - name: '*reply'
        type: char
      item_type: struct
      name: anvil_reply
      pos:
        line_end: 29
        line_start: 24
        source_file: /src/dovecot/src/lib-master/anvil-client.h
    typedefs:
    - item_type: typedef
      name: anvil_callback_t(const struct anvil_reply *reply, void *context)
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/dovecot/src/lib-master/anvil-client.h
      type: void
    union: []
- function_names:
  - master_admin_client_ref
  - master_admin_client_unref
  - cmd_kick_user
  - cmd_kick_user_signal
  - master_admin_client_input_args
  - master_admin_client_send_reply
  - master_admin_client_destroy
  - master_admin_client_initial_read
  - master_admin_client_create
  - master_admin_client_can_accept
  - master_admin_clients_init
  - master_admin_clients_deinit
  source_file: /src/dovecot/src/lib-master/master-admin-client.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: refcount
        type: int
      - name: '*wait_ioloop'
        type: struct ioloop
      - name: reply_pending
        type: bool
      item_type: struct
      name: master_admin_client
      pos:
        line_end: 15
        line_start: 9
        source_file: /src/dovecot/src/lib-master/master-admin-client.c
    typedefs: []
    union: []
- function_names:
  - anvil_client_init
  - anvil_client_deinit
  - anvil_client_cmd_pending_input
  - anvil_client_cmd_input
  - anvil_client_start_multiplex_input
  - anvil_client_start_multiplex_output
  - anvil_client_reconnect
  - anvil_query_free
  - anvil_client_input_line
  - anvil_client_connect
  - anvil_client_cancel_queries
  - anvil_client_destroy
  - anvil_client_connect_failed
  - anvil_client_timeout
  - anvil_client_send
  - anvil_client_query
  - anvil_client_query_abort
  - anvil_client_send_reply
  - anvil_client_cmd
  - anvil_client_is_connected
  source_file: /src/dovecot/src/lib-master/anvil-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ANVIL_CMD_CHANNEL_ID
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-master/anvil-client.c
      type_or_value: '1'
    - item_type: preproc_def
      name: ANVIL_INBUF_SIZE
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/dovecot/src/lib-master/anvil-client.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: ANVIL_RECONNECT_MIN_SECS
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dovecot/src/lib-master/anvil-client.c
      type_or_value: '5'
    structs:
    - fields:
      - name: '*client'
        type: struct anvil_client
      - name: '*to'
        type: struct timeout
      - name: timeout_msecs
        type: unsigned int
      - name: '*callback'
        type: anvil_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: anvil_query
      pos:
        line_end: 26
        line_start: 19
        source_file: /src/dovecot/src/lib-master/anvil-client.c
    - fields:
      - name: conn
        type: struct connection
      - name: '*to_cancel'
        type: struct timeout
      - name: '*last_connect_error'
        type: char
      - name: '*to_reconnect'
        type: struct timeout
      - name: last_reconnect
        type: time_t
      - name: '*queries'
        type: struct aqueue
      - name: '*cmd_input'
        type: struct istream
      - name: '*cmd_output'
        type: struct ostream
      - name: '*cmd_io'
        type: struct io
      - name: callbacks
        type: struct anvil_client_callbacks
      - name: flags
        type: enum anvil_client_flags
      - name: deinitializing
        type: bool
      - name: reply_pending
        type: bool
      item_type: struct
      name: anvil_client
      pos:
        line_end: 47
        line_start: 28
        source_file: /src/dovecot/src/lib-master/anvil-client.c
    typedefs: []
    union: []
- function_names:
  - log_error_buffer_init
  - log_error_buffer_delete_head
  - log_error_buffer_add
  - log_error_buffer_deinit
  - log_error_buffer_iter_init
  - log_error_buffer_iter_next
  - log_error_buffer_iter_deinit
  source_file: /src/dovecot/src/lib-master/log-error-buffer.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOG_ERROR_BUFFER_MAX_LINES
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-master/log-error-buffer.c
      type_or_value: '1000'
    structs:
    - fields:
      - name: '*next'
        type: struct log_error_data
      - name: type
        type: enum log_type
      - name: timestamp
        type: struct timeval
      - name: prefix_text[FLEXIBLE_ARRAY_MEMBER]
        type: unsigned char
      item_type: struct
      name: log_error_data
      pos:
        line_end: 13
        line_start: 7
        source_file: /src/dovecot/src/lib-master/log-error-buffer.c
    - fields:
      - name: '*head'
        type: struct log_error_data
      - name: count
        type: unsigned int
      item_type: struct
      name: log_error_buffer
      pos:
        line_end: 18
        line_start: 15
        source_file: /src/dovecot/src/lib-master/log-error-buffer.c
    - fields:
      - name: '*buf'
        type: struct log_error_buffer
      - name: '*cur'
        type: struct log_error_data
      - name: error
        type: struct log_error
      item_type: struct
      name: log_error_buffer_iter
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/dovecot/src/lib-master/log-error-buffer.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/master-instance.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MASTER_INSTANCE_FNAME
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-master/master-instance.h
      type_or_value: '"instances"'
    structs:
    - fields:
      - name: last_used
        type: time_t
      - name: '*name'
        type: char
      - name: '*base_dir'
        type: char
      - name: '*config_path'
        type: char
      item_type: struct
      name: master_instance
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/lib-master/master-instance.h
    typedefs: []
    union: []
- function_names:
  - master_service_set_killed_callback
  source_file: /src/dovecot/src/lib-master/master-service.h
  types:
    enum:
    - enumerators:
      - name: MASTER_SERVICE_FLAG_STD_CLIENT
        value: '0x01'
      - name: MASTER_SERVICE_FLAG_CONFIG_DEFAULTS
        value: '0x10'
      - name: MASTER_SERVICE_FLAG_CONFIG_BUILTIN
        value: '0x20'
      - name: MASTER_SERVICE_FLAG_DONT_LOG_TO_STDERR
        value: '0x04'
      - name: MASTER_SERVICE_FLAG_STANDALONE
        value: '0x02'
      - name: MASTER_SERVICE_FLAG_TRACK_LOGIN_STATE
        value: '0x40'
      - name: MASTER_SERVICE_FLAG_NO_IDLE_DIE
        value: '0x80'
      - name: MASTER_SERVICE_FLAG_UPDATE_PROCTITLE
        value: '0x100'
      - name: MASTER_SERVICE_FLAG_NO_SSL_INIT
        value: '0x400'
      - name: MASTER_SERVICE_FLAG_NO_INIT_DATASTACK_FRAME
        value: '0x800'
      - name: MASTER_SERVICE_FLAG_DONT_SEND_STATS
        value: '0x1000'
      - name: MASTER_SERVICE_FLAG_HAVE_STARTTLS
        value: '0x2000'
      item_type: enum
      name: master_service_flags
      pos:
        line_end: 44
        line_start: 12
        source_file: /src/dovecot/src/lib-master/master-service.h
    preproc_defs:
    - item_type: preproc_def
      name: MASTER_SERVICE_SHUTTING_DOWN_MSG
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-master/master-service.h
      type_or_value: '"Server shutting down"'
    - item_type: preproc_def
      name: MASTER_SERVICE_USER_KICKED_MSG
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-master/master-service.h
      type_or_value: '"User kicked"'
    structs:
    - fields:
      - name: '*hostname'
        type: char
      - name: '*cert_common_name'
        type: char
      - name: '*alpn'
        type: unsigned char
      - name: alpn_size
        type: unsigned int
      - name: ssl
        type: bool
      - name: ssl_client_cert
        type: bool
      item_type: struct
      name: master_service_connection_haproxy
      pos:
        line_end: 55
        line_start: 46
        source_file: /src/dovecot/src/lib-master/master-service.h
    - fields:
      - name: fd
        type: int
      - name: listen_fd
        type: int
      - name: '*name'
        type: char
      - name: '*type'
        type: char
      - name: remote_ip
        type: struct ip_addr
      - name: remote_port
        type: in_port_t
      - name: real_remote_ip
        type: struct ip_addr
      - name: real_remote_port
        type: in_port_t
      - name: haproxy
        type: struct master_service_connection_haproxy
      - name: haproxied
        type: bool
      - name: fifo
        type: bool
      - name: ssl
        type: bool
      - name: accepted
        type: bool
      item_type: struct
      name: master_service_connection
      pos:
        line_end: 93
        line_start: 57
        source_file: /src/dovecot/src/lib-master/master-service.h
    - fields:
      - name: '*username'
        type: char
      - name: '*const *alt_usernames'
        type: char
      - name: '*service_name'
        type: char
      - name: ip
        type: struct ip_addr
      - name: dest_ip
        type: struct ip_addr
      item_type: struct
      name: master_service_anvil_session
      pos:
        line_end: 103
        line_start: 95
        source_file: /src/dovecot/src/lib-master/master-service.h
    typedefs:
    - item_type: typedef
      name: master_service_connection_callback_t(struct master_service_connection
        *conn)
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/dovecot/src/lib-master/master-service.h
      type: void
    - item_type: typedef
      name: master_service_avail_overflow_callback_t(bool kill, struct timeval *created_r)
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/dovecot/src/lib-master/master-service.h
      type: bool
    - item_type: typedef
      name: master_service_killed_callback_t(void *)
      pos:
        line_end: 117
        line_start: 117
        source_file: /src/dovecot/src/lib-master/master-service.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/stats-client.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TST_BEGIN
  - compare_test_stats_data_line
  - compare_test_stats_data_lines
  - compare_test_stats_to
  - test_fail_callback
  - register_all_categories
  - test_no_merging1
  - test_no_merging2
  - test_no_merging3
  - test_merge_events1
  - test_merge_events2
  - test_skip_parents
  - test_merge_events_skip_parents
  - make_event
  - test_parent_update_post_send
  - test_large_event_id
  - test_global_event
  - run_tests
  - main
  source_file: /src/dovecot/src/lib-master/test-event-stats.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - setting_filter_parse
  - master_service_set_process_shutdown_filter_wrapper
  - storage_version_check
  - master_service_settings_check
  - ATTR_NORETURN::master_service_exec_config
  - config_error_update_path_source
  - config_exec_fallback
  - master_service_binary_config_cache_get
  - master_service_open_config
  - master_service_append_config_overrides
  - master_service_settings_read_int
  - master_service_settings_read
  - master_service_settings_read_simple
  - master_service_get_service_settings
  - master_service_get_import_environment_keyvals
  - master_service_get_binary_config_cache_path
  source_file: /src/dovecot/src/lib-master/master-service-settings.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DOVECOT_CONFIG_BIN_PATH
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/lib-master/master-service-settings.c
      type_or_value: BINDIR"/doveconf"
    - item_type: preproc_def
      name: DOVECOT_CONFIG_BIN_PATH_ENV
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/lib-master/master-service-settings.c
      type_or_value: '"DOVECONF_PATH"'
    - item_type: preproc_def
      name: DOVECOT_CONFIG_SOCKET_PATH
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/lib-master/master-service-settings.c
      type_or_value: PKG_RUNDIR"/config"
    - item_type: preproc_def
      name: CONFIG_READ_TIMEOUT_SECS
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dovecot/src/lib-master/master-service-settings.c
      type_or_value: '10'
    - item_type: preproc_def
      name: CONFIG_HANDSHAKE
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dovecot/src/lib-master/master-service-settings.c
      type_or_value: '"VERSION\tconfig\t3\t0\n"'
    - item_type: preproc_def
      name: STORAGE_MIN_VERSION
      pos:
        line_end: 161
        line_start: 160
        source_file: /src/dovecot/src/lib-master/master-service-settings.c
      type_or_value: '"2.3.0"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-master/master-service-ssl.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_settings_parser
  - test_settings_parse_boollist_string
  - test_settings_section_escape
  - test_settings_hash_equals
  - DEF
  - main
  source_file: /src/dovecot/src/lib-settings/test-settings-parser.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: bool_true
        type: bool
      - name: bool_false
        type: bool
      - name: uintmax_max
        type: uintmax_t
      - name: uint
        type: unsigned int
      - name: uint_oct
        type: unsigned int
      - name: secs
        type: unsigned int
      - name: msecs
        type: unsigned int
      - name: size
        type: uoff_t
      - name: port
        type: in_port_t
      - name: '*str'
        type: char
      - name: '*expand_str'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: test_settings
      pos:
        line_end: 62
        line_start: 49
        source_file: /src/dovecot/src/lib-settings/test-settings-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: '*const *output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t\t{ \"\", (const char *const *) { NULL } },\n\t\t{ \"foo\",
        (const char *const []) { \"foo\", NULL } },\n\t\t{ \"foo bar\", (const char
        *const []) { \"foo\", \"bar\", NULL } },\n\t\t{ \"foo bar,baz\", (const char
        *const []) { \"foo\", \"bar\", \"baz\", NULL } },\n\t\t{ \", foo, ,  b\\\\\\\\sa
        \ \", (const char *const []) { \"foo\", \"b\\\\sa\", NULL } },\n\t\t{ \",
        a\\\\s\\\\e\\\\_\\\\+, \", (const char *const []) { \"a/= ,\", NULL } },\n\n\t\t{
        \"\\\"\\\"\", (const char *const []) { \"\", NULL } },\n\t\t{ \"\\\",.\\\"\",
        (const char *const []) { \",.\", NULL } },\n\t\t{ \"\\\"esc\\\\\\\\\\\\\\\\str\\\"\",
        (const char *const []) { \"esc\\\\str\", NULL } },\n\t\t{ \"\\\"quotes\\\\\\\"str\\\"\",
        (const char *const []) { \"quotes\\\"str\", NULL } },\n\t\t{ \"\\\"val1\\\",
        \\\"val2\\\" \\\"val3\\\"\", (const char *const []) { \"val1\", \"val2\",
        \"val3\", NULL } },\n\t\t{ \"\\\"a\\\\\\\\s\\\\\\\\e\\\\\\\\_\\\\\\\\+\\\"\",
        (const char *const []) { \"a/= ,\", NULL } },\n\t}"
      pos:
        line_end: 155
        line_start: 152
        source_file: /src/dovecot/src/lib-settings/test-settings-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: '*error'
        type: char
      item_type: struct
      name: "error_tests[] = {\n\t\t{ \"\\\"\", \"Missing ending '\\\"'\" },\n\t\t{
        \"\\\"foo\\\\\", \"Value ends with '\\\\'\" },\n\t\t{ \"x\\\"\", \"'\\\"'
        in the middle of a string\" },\n\t\t{ \"\\\"v1\\\"x\", \"Expected ',' or '
        ' after '\\\"'\" },\n\t\t{ \"\\\"v1\\\"\\\"\", \"Expected ',' or ' ' after
        '\\\"'\" },\n\t}"
      pos:
        line_end: 173
        line_start: 170
        source_file: /src/dovecot/src/lib-settings/test-settings-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t\t{ \"\", \"\\\\.\" },\n\t\t{ \"foo\", \"foo\" },\n\t\t{
        \"foo bar\", \"foo\\\\_bar\" },\n\t\t{ \" foo bar \", \"\\\\_foo\\\\_bar\\\\_\"
        },\n\t\t{ \"=/\\\\ ,\", \"\\\\e\\\\s\\\\\\\\\\\\_\\\\+\" },\n\t}"
      pos:
        line_end: 213
        line_start: 210
        source_file: /src/dovecot/src/lib-settings/test-settings-parser.c
    - fields:
      - name: b
        type: bool
      - name: i
        type: unsigned int
      - name: size
        type: uoff_t
      - name: port
        type: in_port_t
      - name: '*str'
        type: char
      - name: '*file'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: test_settings
      pos:
        line_end: 242
        line_start: 234
        source_file: /src/dovecot/src/lib-settings/test-settings-parser.c
    typedefs: []
    union: []
- function_names:
  - settings_get
  - settings_get
  - settings_get_params
  - settings_get_params
  - settings_get_filter
  - settings_get_filter
  - settings_try_get_filter
  - settings_try_get_filter
  - settings_get_filter
  - settings_get_filter
  - settings_get_or_fatal
  - settings_free
  source_file: /src/dovecot/src/lib-settings/settings.h
  types:
    enum:
    - enumerators:
      - name: SETTINGS_OVERRIDE_TYPE_DEFAULT
      - name: SETTINGS_OVERRIDE_TYPE_2ND_CLI_PARAM
      - name: SETTINGS_OVERRIDE_TYPE_USERDB
      - name: SETTINGS_OVERRIDE_TYPE_CLI_PARAM
      - name: SETTINGS_OVERRIDE_TYPE_2ND_DEFAULT
      - name: SETTINGS_OVERRIDE_TYPE_CODE
      - name: SETTINGS_OVERRIDE_TYPE_COUNT
      item_type: enum
      name: settings_override_type
      pos:
        line_end: 32
        line_start: 11
        source_file: /src/dovecot/src/lib-settings/settings.h
    - enumerators:
      - name: SETTINGS_READ_NO_PROTOCOL_FILTER
        value: BIT(0)
      - name: SETTINGS_READ_CHECK_CACHE_TIMESTAMPS
        value: BIT(1)
      item_type: enum
      name: settings_read_flags
      pos:
        line_end: 42
        line_start: 34
        source_file: /src/dovecot/src/lib-settings/settings.h
    - enumerators:
      - name: SETTINGS_GET_FLAG_NO_CHECK
        value: BIT(0)
      - name: SETTINGS_GET_FLAG_NO_EXPAND
        value: BIT(1)
      - name: SETTINGS_GET_FLAG_FAKE_EXPAND
        value: BIT(2)
      - name: SETTINGS_GET_NO_KEY_VALIDATION
        value: BIT(3)
      - name: SETTINGS_GET_FLAG_SORT_FILTER_ARRAYS
        value: BIT(4)
      item_type: enum
      name: settings_get_flags
      pos:
        line_end: 58
        line_start: 44
        source_file: /src/dovecot/src/lib-settings/settings.h
    preproc_defs:
    - item_type: preproc_def
      name: SETTINGS_INCLUDE_GROUP_PREFIX
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '''@'''
    - item_type: preproc_def
      name: SETTINGS_INCLUDE_GROUP_PREFIX_S
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '"@"'
    - item_type: preproc_def
      name: SETTINGS_APPEND_KEY_SUFFIX
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '"+"'
    - item_type: preproc_def
      name: SETTINGS_EVENT_INSTANCE
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '"settings_instance"'
    - item_type: preproc_def
      name: SETTINGS_EVENT_ROOT
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '"settings_root"'
    - item_type: preproc_def
      name: SETTINGS_EVENT_FILTER_NAME
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '"settings_filter_name"'
    - item_type: preproc_def
      name: SETTINGS_EVENT_VAR_EXPAND_PARAMS
      pos:
        line_end: 109
        line_start: 107
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '"settings_var_expand_params"'
    - item_type: preproc_def
      name: SETTINGS_EVENT_VAR_EXPAND_CALLBACK
      pos:
        line_end: 120
        line_start: 118
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '"settings_var_expand_callback"'
    - item_type: preproc_def
      name: SETTINGS_EVENT_VAR_EXPAND_CALLBACK_CONTEXT
      pos:
        line_end: 122
        line_start: 120
        source_file: /src/dovecot/src/lib-settings/settings.h
      type_or_value: '"settings_var_expand_callback_context"'
    structs:
    - fields:
      - name: '*escape_func'
        type: var_expand_escape_func_t
      - name: '*escape_context'
        type: void
      - name: flags
        type: enum settings_get_flags
      item_type: struct
      name: settings_get_params
      pos:
        line_end: 66
        line_start: 60
        source_file: /src/dovecot/src/lib-settings/settings.h
    - fields:
      - name: '*root'
        type: struct settings_root
      - name: '*instance'
        type: struct settings_instance
      - name: '*event'
        type: struct event
      item_type: struct
      name: settings_simple
      pos:
        line_end: 321
        line_start: 317
        source_file: /src/dovecot/src/lib-settings/settings.h
    typedefs:
    - item_type: typedef
      name: settings_var_expand_t(void *context, struct var_expand_params *params_r)
      pos:
        line_end: 124
        line_start: 123
        source_file: /src/dovecot/src/lib-settings/settings.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-settings/settings-history.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: '*old_value'
        type: char
      - name: '*version'
        type: char
      item_type: struct
      name: setting_history_default
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/lib-settings/settings-history.h
    - fields:
      - name: '*old_key'
        type: char
      - name: '*version'
        type: char
      item_type: struct
      name: setting_history_rename
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/lib-settings/settings-history.h
    - fields:
      - name: sort_pending
        type: bool
      item_type: struct
      name: settings_history
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/dovecot/src/lib-settings/settings-history.h
    typedefs: []
    union: []
- function_names:
  - SETTING_DEFINE_STRUCT_TYPE
  - SETTING_DEFINE_STRUCT_BOOL
  - SETTING_DEFINE_STRUCT_UINTMAX
  - SETTING_DEFINE_STRUCT_UINT
  - SETTING_DEFINE_STRUCT_UINT_OCT
  - SETTING_DEFINE_STRUCT_TIME
  - SETTING_DEFINE_STRUCT_TIME_MSECS
  - SETTING_DEFINE_STRUCT_SIZE
  - SETTING_DEFINE_STRUCT_IN_PORT
  - SETTING_DEFINE_STRUCT_STR
  - SETTING_DEFINE_STRUCT_STR_NOVARS
  - SETTING_DEFINE_STRUCT_ENUM
  - SETTING_DEFINE_STRUCT_FILE
  - SETTING_DEFINE_STRUCT_BOOLLIST
  - SETTING_DEFINE_STRUCT_STRLIST
  - SETTING_DEFINE_STRUCT_BOOL_HIDDEN
  - SETTING_DEFINE_STRUCT_UINTMAX_HIDDEN
  - SETTING_DEFINE_STRUCT_UINT_HIDDEN
  - SETTING_DEFINE_STRUCT_UINT_OCT_HIDDEN
  - SETTING_DEFINE_STRUCT_TIME_HIDDEN
  - SETTING_DEFINE_STRUCT_TIME_MSECS_HIDDEN
  - SETTING_DEFINE_STRUCT_SIZE_HIDDEN
  - SETTING_DEFINE_STRUCT_IN_PORT_HIDDEN
  - SETTING_DEFINE_STRUCT_STR_HIDDEN
  - SETTING_DEFINE_STRUCT_STR_NOVARS_HIDDEN
  - SETTING_DEFINE_STRUCT_ENUM_HIDDEN
  - SETTING_DEFINE_STRUCT_FILE_HIDDEN
  - SETTING_DEFINE_STRUCT_BOOLLIST_HIDDEN
  - SETTING_DEFINE_STRUCT_STRLIST_HIDDEN
  - SETTING_DEFINE_STRUCT_STR_NFC
  - SETTING_DEFINE_STRUCT_STR_NFC_NOVARS
  - settings_value_is_unlimited
  source_file: /src/dovecot/src/lib-settings/settings-parser.h
  types:
    enum:
    - enumerators:
      - name: SET_BOOL
      - name: SET_UINTMAX
      - name: SET_UINT_OCT
      - name: SET_UINT
      - name: SET_TIME
      - name: SET_TIME_MSECS
      - name: SET_SIZE
      - name: SET_IN_PORT
      - name: SET_STR
      - name: SET_STR_NOVARS
      - name: SET_ENUM
      - name: SET_FILTER_NAME
      - name: SET_ALIAS
      - name: SET_STRLIST
      - name: SET_FILE
      - name: SET_BOOLLIST
      - name: SET_FILTER_ARRAY
      item_type: enum
      name: setting_type
      pos:
        line_end: 48
        line_start: 30
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    - enumerators:
      - name: SET_FLAG_HIDDEN
        value: BIT(0)
      - name: SET_FLAG_EOL
        value: BIT(1)
      - name: SET_FLAG_UNICODE_NFC
        value: BIT(2)
      item_type: enum
      name: setting_flags
      pos:
        line_end: 55
        line_start: 49
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    - enumerators:
      - name: SETTING_APPLY_FLAG_OVERRIDE
        value: BIT(0)
      - name: SETTING_APPLY_FLAG_NO_EXPAND
        value: BIT(1)
      item_type: enum
      name: setting_apply_flags
      pos:
        line_end: 62
        line_start: 57
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    - enumerators:
      - name: SETTINGS_PARSER_FLAG_IGNORE_UNKNOWN_KEYS
        value: '0x01'
      - name: SETTINGS_PARSER_FLAG_INSERT_FILTERS
        value: '0x04'
      item_type: enum
      name: settings_parser_flags
      pos:
        line_end: 203
        line_start: 198
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    - enumerators:
      - name: SETTINGS_BINARY_OTHER
      - name: SETTINGS_BINARY_DOVECONF
      - name: SETTINGS_BINARY_CONFIG
      item_type: enum
      name: settings_binary
      pos:
        line_end: 209
        line_start: 205
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    preproc_defs:
    - item_type: preproc_def
      name: SETTINGS_SEPARATOR
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '''/'''
    - item_type: preproc_def
      name: SETTINGS_SEPARATOR_S
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '"/"'
    - item_type: preproc_def
      name: SETTINGS_FILTER_ARRAY_SEPARATORS
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '",\t "'
    - item_type: preproc_def
      name: SET_VALUE_UNLIMITED
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '"unlimited"'
    - item_type: preproc_def
      name: SET_UINT_UNLIMITED
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: UINT_MAX
    - item_type: preproc_def
      name: SET_SIZE_UNLIMITED
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: UOFF_T_MAX
    - item_type: preproc_def
      name: SET_VALUE_INFINITE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '"infinite"'
    - item_type: preproc_def
      name: SET_TIME_INFINITE
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: UINT_MAX
    - item_type: preproc_def
      name: SET_TIME_MSECS_INFINITE
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: UINT_MAX
    - item_type: preproc_def
      name: SET_LIST_APPEND
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '"+"'
    - item_type: preproc_def
      name: SET_LIST_REPLACE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '"$"'
    - item_type: preproc_def
      name: SET_LIST_CLEAR
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '"."'
    - item_type: preproc_def
      name: SET_FILE_INLINE_PREFIX
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '"inline:"'
    - item_type: preproc_def
      name: SETTING_DEFINE_LIST_END
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '{ 0, SET_FLAG_EOL, NULL, 0, NULL, NULL, NULL }'
    - item_type: preproc_def
      name: SETTINGS_EVENT_NO_EXPAND
      pos:
        line_end: 222
        line_start: 221
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
      type_or_value: '"settings_event_no_expand"'
    structs:
    - fields:
      - name: '*info'
        type: struct setting_parser_info
      - name: '*field_name'
        type: char
      - name: reverse
        type: bool
      item_type: struct
      name: setting_filter_array_order
      pos:
        line_end: 70
        line_start: 66
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    - fields:
      - name: type
        type: enum setting_type
      - name: flags
        type: enum setting_flags
      - name: '*key'
        type: char
      - name: offset
        type: size_t
      - name: '*filter_array_field_name'
        type: char
      - name: '*filter_array_order'
        type: struct setting_filter_array_order
      - name: '*required_setting'
        type: char
      item_type: struct
      name: setting_define
      pos:
        line_end: 81
        line_start: 72
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    - fields:
      - name: '*path'
        type: char
      - name: '*content'
        type: char
      item_type: struct
      name: settings_file
      pos:
        line_end: 158
        line_start: 152
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    - fields:
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      item_type: struct
      name: setting_keyvalue
      pos:
        line_end: 163
        line_start: 160
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    - fields:
      - name: '*name'
        type: char
      - name: '*plugin_dependency'
        type: char
      - name: '*defines'
        type: struct setting_define
      - name: '*defaults'
        type: void
      - name: '*default_settings'
        type: struct setting_keyvalue
      - name: struct_size
        type: size_t
      - name: pool_offset1
        type: size_t
      - name: "(*setting_apply)(struct event *event, void *set,\n\t\t\t      const
          char *key, const char **value,\n\t\t\t      enum setting_apply_flags flags,
          const char **error_r)"
        type: bool
      - name: (*check_func)(void *set, pool_t pool, const char **error_r)
        type: bool
      - name: (*ext_check_func)(struct event *event, void *set, pool_t pool, const
          char **error_r)
        type: bool
      item_type: struct
      name: setting_parser_info
      pos:
        line_end: 195
        line_start: 165
        source_file: /src/dovecot/src/lib-settings/settings-parser.h
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - test_settings_get_scenario
  - test_settings_get
  - test_var_expand_hierarchy_key1
  - test_var_expand_hierarchy_key2
  - test_var_expand_hierarchy
  - main
  source_file: /src/dovecot/src/lib-settings/test-settings.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: eat
        type: bool
      - name: preference
        type: unsigned int
      item_type: struct
      name: test2_fruit_settings
      pos:
        line_end: 17
        line_start: 11
        source_file: /src/dovecot/src/lib-settings/test-settings.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*title'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: test2_settings
      pos:
        line_end: 24
        line_start: 19
        source_file: /src/dovecot/src/lib-settings/test-settings.c
    typedefs: []
    union: []
- function_names:
  - settings_history_default_cmp
  - settings_history_rename_cmp
  - settings_history_free
  - settings_history_get_unsorted
  - settings_history_get
  - settings_history_register_defaults
  - settings_history_register_renames
  source_file: /src/dovecot/src/lib-settings/settings-history.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - settings_local_name_cmp
  - settings_override_free
  - settings_block_read_uint64
  - settings_block_read_uint32
  - settings_block_read_size
  - settings_block_read_str
  - settings_filter_node_match_service
  - settings_filter_match_service
  - settings_event_filter_node_name_find
  - settings_event_filter_name_find
  - settings_read_config_paths
  - settings_read_all_keys
  - settings_read_filters
  - settings_block_read
  - settings_mmap_parse
  - get_invalid_setting_error
  - settings_var_expand
  - settings_mmap_apply_key
  - settings_mmap_apply_defaults
  - settings_mmap_apply_blob
  - settings_mmap_validate
  - settings_mmap_get_filter_idx
  - settings_mmap_apply_filter
  - settings_group_event_create
  - settings_apply_groups
  - settings_mmap_apply
  - settings_mmap_ref
  - settings_mmap_unref
  - settings_read
  - settings_has_mmap
  - settings_mmap_pool_get_name
  - settings_mmap_pool_ref
  - settings_mmap_pool_unref
  - settings_mmap_pool_malloc
  - settings_mmap_pool_free
  - settings_mmap_pool_realloc
  - settings_mmap_pool_clear
  - settings_mmap_pool_get_max_easy_alloc_size
  - settings_mmap_pool_create
  - settings_var_expand_init_add
  - settings_var_expand_init
  - settings_apply_override_cmp
  - settings_override_cmp_filter_order
  - settings_mmap_registered_lookup_key
  - settings_mmap_lookup_key
  - settings_override_key_part_find
  - settings_key_part_find
  - settings_override_set_blocks
  - setting_override_match_info
  - settings_override_filter_match
  - settings_override_find_filter_check
  - settings_overrides_find_filter
  - settings_override_get_value
  - settings_instance_override_add_default
  - settings_apply_add_override
  - settings_instance_overrides_add_filters
  - settings_instance_override_init
  - settings_apply_ctx_overrides_deinit
  - array_foreach_modifiable
  - settings_instance_override
  - settings_instance_get
  - settings_event_convert_filter_names
  - settings_get_real
  - settings_key_exists
  - settings_filter_array_uint_cmp
  - settings_filter_array_str_cmp
  - settings_sort_filter_array
  - settings_get_full
  - settings_get
  - settings_get_params
  - settings_get_filter
  - settings_try_get_filter
  - settings_get_or_fatal
  - settings_override_fill
  - settings_override
  - settings_root_override
  - settings_override_equals
  - settings_root_override_remove
  - settings_event_get_free_filter_name_key
  - settings_event_add_filter_name
  - settings_event_add_list_filter_name
  - settings_instance_alloc
  - settings_instance_new
  - settings_instance_dup
  - settings_instance_free
  - settings_root_init
  - settings_root_deinit
  - settings_root_find
  - set_registered_infos_free
  - setting_parser_info_cmp
  - settings_info_register
  - settings_instance_find
  - settings_simple_init
  - settings_simple_deinit
  - settings_simple_update
  source_file: /src/dovecot/src/lib-settings/settings.c
  types:
    enum:
    - enumerators:
      - name: SET_SEEN_NO
      - name: SET_SEEN_YES
      - name: SET_SEEN_DEFAULT
      item_type: enum
      name: set_seen_type
      pos:
        line_end: 27
        line_start: 18
        source_file: /src/dovecot/src/lib-settings/settings.c
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: struct pool
      - name: refcount
        type: int
      - name: '*prev'
        type: struct settings_mmap_pool
      - name: '*source_filename'
        type: char
      - name: source_linenum
        type: unsigned int
      - name: parent_pool
        type: pool_t
      - name: '*mmap'
        type: struct settings_mmap
      - name: '*root'
        type: struct settings_root
      item_type: struct
      name: settings_mmap_pool
      pos:
        line_end: 41
        line_start: 29
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*overrides_array'
        type: ARRAY_TYPE
      - name: type
        type: enum settings_override_type
      - name: filter_array_element_count
        type: unsigned int
      - name: filter_element_count
        type: unsigned int
      - name: append
        type: bool
      - name: array_default_added
        type: bool
      - name: '*orig_key'
        type: char
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      - name: '*filter'
        type: struct event_filter
      - name: '*last_filter_key'
        type: char
      - name: '*const *block_names'
        type: char
      item_type: struct
      name: settings_override
      pos:
        line_end: 76
        line_start: 43
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: '*label'
        type: char
      - name: '*name'
        type: char
      item_type: struct
      name: settings_group
      pos:
        line_end: 82
        line_start: 79
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: '*name'
        type: char
      - name: block_end_offset
        type: size_t
      - name: filter_count
        type: uint32_t
      - name: '*filter_offsets'
        type: uint64_t
      - name: '*filter_indexes'
        type: uint32_t
      - name: settings_count
        type: uint32_t
      - name: settings_keys_offset
        type: size_t
      - name: settings_validated
        type: bool
      item_type: struct
      name: settings_mmap_block
      pos:
        line_end: 97
        line_start: 85
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: '*filter'
        type: struct event_filter
      - name: is_group
        type: bool
      - name: named_list_filter_count
        type: uint32_t
      item_type: struct
      name: settings_mmap_event_filter
      pos:
        line_end: 104
        line_start: 99
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: refcount
        type: int
      - name: pool
        type: pool_t
      - name: '*root'
        type: struct settings_root
      - name: '*mmap_base'
        type: void
      - name: mmap_size
        type: size_t
      - name: all_keys_hash_key_prefix
        type: uint32_t
      - name: all_keys_hash_count
        type: uint32_t
      - name: '*all_keys_hash'
        type: uint32_t
      - name: '*all_keys_base'
        type: unsigned char
      - name: block_names_count
        type: uint32_t
      - name: '*block_names_rel_offsets'
        type: uint32_t
      - name: '*event_filters'
        type: struct settings_mmap_event_filter
      - name: event_filters_count
        type: unsigned int
      item_type: struct
      name: settings_mmap
      pos:
        line_end: 126
        line_start: 106
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*protocol_name'
        type: char
      - name: '*mmap'
        type: struct settings_mmap
      - name: (settings_override)
        type: ARRAY_TYPE
      - name: '*settings_pools'
        type: struct settings_mmap_pool
      item_type: struct
      name: settings_root
      pos:
        line_end: 135
        line_start: 128
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*root'
        type: struct settings_root
      - name: '*mmap'
        type: struct settings_mmap
      - name: (settings_override)
        type: ARRAY_TYPE
      item_type: struct
      name: settings_instance
      pos:
        line_end: 142
        line_start: 137
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: '*set'
        type: struct settings_override
      - name: order
        type: unsigned int
      item_type: struct
      name: settings_apply_override
      pos:
        line_end: 147
        line_start: 144
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: '*event'
        type: struct event
      - name: '*root'
        type: struct settings_root
      - name: '*instance'
        type: struct settings_instance
      - name: '*info'
        type: struct setting_parser_info
      - name: flags
        type: enum settings_get_flags
      - name: temp_pool
        type: pool_t
      - name: '*escape_func'
        type: var_expand_escape_func_t
      - name: '*escape_context'
        type: void
      - name: '*filter_key'
        type: char
      - name: '*filter_value'
        type: char
      - name: '*filter_name'
        type: char
      - name: filter_name_required
        type: bool
      - name: seen_filter
        type: bool
      - name: '*parser'
        type: struct setting_parser_context
      - name: '*mpool'
        type: struct settings_mmap_pool
      - name: '*set_struct'
        type: void
      - name: (settings_group)
        type: ARRAY_TYPE
      - name: '*str'
        type: string_t
      - name: var_params
        type: struct var_expand_params
      item_type: struct
      name: settings_apply_ctx
      pos:
        line_end: 175
        line_start: 149
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: '*escape_func'
        type: var_expand_escape_func_t
      - name: '*escape_context'
        type: void
      item_type: struct
      name: settings_var_expand_init_ctx
      pos:
        line_end: 1535
        line_start: 1528
        source_file: /src/dovecot/src/lib-settings/settings.c
    - fields:
      - name: order
        type: "union {\n\t\tunsigned int uint;\n\t\tconst char *str;\n\t}"
      - name: '*value'
        type: char
      item_type: struct
      name: settings_filter_array_item
      pos:
        line_end: 2745
        line_start: 2739
        source_file: /src/dovecot/src/lib-settings/settings.c
    typedefs: []
    union: []
- function_names:
  - setting_parser_copy_defaults
  - settings_parser_init
  - settings_parser_ref
  - settings_parser_unref
  - setting_parser_info_get_define_count
  - setting_parser_info_find_key
  - settings_parser_get_set
  - settings_parser_set_error
  - settings_parser_get_error
  - setting_define_find
  - get_bool
  - get_uintmax
  - get_uint
  - get_octal
  - get_enum
  - get_file
  - get_in_port_zero
  - settings_parse_read_file
  - settings_parse_strlist
  - settings_parse_boollist_string
  - settings_boollist_get
  - settings_file_get
  - settings_file_has_path
  - settings_file_get_value
  - settings_boollist_is_stopped
  - settings_parse_boollist
  - settings_parse
  - CHAR_NEED_ESCAPE
  - settings_section_unescape
  - settings_set_config_binary
  - settings_get_config_binary
  source_file: /src/dovecot/src/lib-settings/settings-parser.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*array'
        type: ARRAY_TYPE
      - name: '*key_suffix'
        type: char
      item_type: struct
      name: boollist_removal
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/dovecot/src/lib-settings/settings-parser.c
    - fields:
      - name: set_pool
        type: pool_t
      - name: refcount
        type: int
      - name: flags
        type: enum settings_parser_flags
      - name: '*info'
        type: struct setting_parser_info
      - name: '*set_struct'
        type: void
      - name: '*error'
        type: char
      item_type: struct
      name: setting_parser_context
      pos:
        line_end: 33
        line_start: 21
        source_file: /src/dovecot/src/lib-settings/settings-parser.c
    typedefs: []
    union: []
- function_names:
  - fs_dict_alloc
  - DEF
  - fs_dict_value_encoding_parse
  - fs_dict_init
  - fs_dict_free
  - fs_dict_get_properties
  - fs_dict_file_alloc
  - fs_dict_file_init
  - fs_dict_file_deinit
  - fs_dict_prefetch
  - fs_dict_lookup
  - fs_dict_read_stream
  - fs_dict_write_stream
  - fs_dict_write_rename_if_needed
  - fs_dict_write_stream_finish
  - fs_dict_stat
  - fs_dict_delete
  - fs_dict_iter_alloc
  - fs_dict_iter_init
  - fs_dict_iter_next
  - fs_dict_iter_deinit
  source_file: /src/dovecot/src/lib-fs/fs-dict.c
  types:
    enum:
    - enumerators:
      - name: FS_DICT_VALUE_ENCODING_RAW
      - name: FS_DICT_VALUE_ENCODING_HEX
      - name: FS_DICT_VALUE_ENCODING_BASE64
      item_type: enum
      name: fs_dict_value_encoding
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/dovecot/src/lib-fs/fs-dict.c
    preproc_defs: []
    structs:
    - fields:
      - name: fs
        type: struct fs
      - name: '*dict'
        type: struct dict
      - name: '*path_prefix'
        type: char
      - name: encoding
        type: enum fs_dict_value_encoding
      item_type: struct
      name: dict_fs
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/dovecot/src/lib-fs/fs-dict.c
    - fields:
      - name: file
        type: struct fs_file
      - name: pool
        type: pool_t
      - name: '*key'
        type: char
      - name: '*write_buffer'
        type: buffer_t
      item_type: struct
      name: dict_fs_file
      pos:
        line_end: 32
        line_start: 27
        source_file: /src/dovecot/src/lib-fs/fs-dict.c
    - fields:
      - name: iter
        type: struct fs_iter
      - name: '*dict_iter'
        type: struct dict_iterate_context
      item_type: struct
      name: dict_fs_iter
      pos:
        line_end: 37
        line_start: 34
        source_file: /src/dovecot/src/lib-fs/fs-dict.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*fs_dict_value_encoding'
        type: char
      item_type: struct
      name: fs_dict_settings
      pos:
        line_end: 51
        line_start: 48
        source_file: /src/dovecot/src/lib-fs/fs-dict.c
    typedefs: []
    union: []
- function_names:
  - fs_sis_path_parse
  - fs_sis_try_unlink_hash_file
  source_file: /src/dovecot/src/lib-fs/fs-sis-common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - o_stream_cmp_close
  - stream_cmp_block
  - o_stream_cmp_sendv
  - o_stream_create_cmp
  - o_stream_cmp_equals
  source_file: /src/dovecot/src/lib-fs/ostream-cmp.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: '*input'
        type: struct istream
      - name: equals
        type: bool
      item_type: struct
      name: cmp_ostream
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/lib-fs/ostream-cmp.c
    typedefs: []
    union: []
- function_names:
  - test_fs_posix
  - main
  source_file: /src/dovecot/src/lib-fs/test-fs-posix.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - i_stream_fs_file_close
  - i_stream_fs_file_read
  - i_stream_create_fs_file
  source_file: /src/dovecot/src/lib-fs/istream-fs-file.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*file'
        type: struct fs_file
      item_type: struct
      name: fs_file_istream
      pos:
        line_end: 10
        line_start: 7
        source_file: /src/dovecot/src/lib-fs/istream-fs-file.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-fs/istream-metawrap.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: metawrap_callback_t(const char *key, const char *value, void *context)
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-fs/istream-metawrap.h
      type: void
    union: []
- function_names:
  - DEF
  - fs_posix_alloc
  - fs_posix_settings_check
  - fs_posix_init_common
  - fs_posix_init
  - fs_posix_free
  - fs_posix_get_properties
  - fs_posix_get_mode
  - fs_posix_mkdir_parents
  - fs_posix_rmdir_parents
  - fs_posix_create
  - fs_posix_open
  - fs_posix_file_alloc
  - fs_posix_file_init
  - fs_posix_file_close
  - fs_posix_file_deinit
  - fs_posix_open_for_read
  - fs_posix_prefetch
  - fs_posix_read
  - fs_posix_read_stream
  - fs_posix_write_rename_if_needed
  - fs_posix_write_finish_link
  - fs_posix_write_finish
  - fs_posix_write
  - fs_posix_write_stream
  - fs_posix_write_stream_finish
  - fs_posix_lock
  - fs_posix_unlock
  - fs_posix_exists
  - fs_posix_stat
  - fs_posix_copy
  - fs_posix_rename
  - fs_posix_delete
  - fs_posix_iter_alloc
  - fs_posix_iter_init
  - fs_posix_iter_want
  - fs_posix_iter_next
  - fs_posix_iter_deinit
  source_file: /src/dovecot/src/lib-fs/fs-posix.c
  types:
    enum:
    - enumerators:
      - name: FS_POSIX_LOCK_METHOD_FLOCK
      - name: FS_POSIX_LOCK_METHOD_DOTLOCK
      item_type: enum
      name: fs_posix_lock_method
      pos:
        line_end: 29
        line_start: 26
        source_file: /src/dovecot/src/lib-fs/fs-posix.c
    preproc_defs:
    - item_type: preproc_def
      name: FS_POSIX_DOTLOCK_STALE_TIMEOUT_SECS
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-fs/fs-posix.c
      type_or_value: (60*10)
    - item_type: preproc_def
      name: MAX_MKDIR_RETRY_COUNT
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/lib-fs/fs-posix.c
      type_or_value: '5'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*fs_posix_lock_method'
        type: char
      - name: '*fs_posix_prefix'
        type: char
      - name: fs_posix_mode
        type: unsigned int
      - name: fs_posix_autodelete_empty_directories
        type: bool
      - name: fs_posix_fsync
        type: bool
      - name: fs_posix_accurate_mtime
        type: bool
      - name: parsed_lock_method
        type: enum fs_posix_lock_method
      item_type: struct
      name: fs_posix_settings
      pos:
        line_end: 41
        line_start: 31
        source_file: /src/dovecot/src/lib-fs/fs-posix.c
    - fields:
      - name: fs
        type: struct fs
      - name: '*temp_file_prefix'
        type: char
      - name: temp_file_prefix_len
        type: size_t
      - name: '*set'
        type: struct fs_posix_settings
      item_type: struct
      name: posix_fs
      pos:
        line_end: 48
        line_start: 43
        source_file: /src/dovecot/src/lib-fs/fs-posix.c
    - fields:
      - name: file
        type: struct fs_file
      - name: '*temp_path'
        type: char
      - name: fd
        type: int
      - name: open_mode
        type: enum fs_open_mode
      - name: open_flags
        type: enum fs_open_flags
      - name: '*write_buf'
        type: buffer_t
      - name: seek_to_beginning
        type: bool
      item_type: struct
      name: posix_fs_file
      pos:
        line_end: 60
        line_start: 50
        source_file: /src/dovecot/src/lib-fs/fs-posix.c
    - fields:
      - name: lock
        type: struct fs_lock
      - name: '*file_lock'
        type: struct file_lock
      - name: '*dotlock'
        type: struct dotlock
      item_type: struct
      name: posix_fs_lock
      pos:
        line_end: 66
        line_start: 62
        source_file: /src/dovecot/src/lib-fs/fs-posix.c
    - fields:
      - name: iter
        type: struct fs_iter
      - name: '*path'
        type: char
      - name: '*dir'
        type: DIR
      - name: err
        type: int
      item_type: struct
      name: posix_fs_iter
      pos:
        line_end: 73
        line_start: 68
        source_file: /src/dovecot/src/lib-fs/fs-posix.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-fs/fs-test.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: fs
        type: struct fs
      - name: properties
        type: enum fs_properties
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: test_fs
      pos:
        line_end: 9
        line_start: 5
        source_file: /src/dovecot/src/lib-fs/fs-test.h
    - fields:
      - name: file
        type: struct fs_file
      - name: mode
        type: enum fs_open_mode
      - name: '*async_callback'
        type: fs_file_async_callback_t
      - name: '*async_context'
        type: void
      - name: '*contents'
        type: buffer_t
      - name: '*input'
        type: struct istream
      - name: '*copy_src'
        type: struct test_fs_file
      - name: prefetched
        type: bool
      - name: locked
        type: bool
      - name: exists
        type: bool
      - name: seekable
        type: bool
      - name: closed
        type: bool
      - name: io_failure
        type: bool
      - name: wait_async
        type: bool
      item_type: struct
      name: test_fs_file
      pos:
        line_end: 29
        line_start: 11
        source_file: /src/dovecot/src/lib-fs/fs-test.h
    - fields:
      - name: iter
        type: struct fs_iter
      - name: '*prefix'
        type: char
      - name: prefix_len
        type: unsigned int
      - name: failed
        type: bool
      item_type: struct
      name: test_fs_iter
      pos:
        line_end: 36
        line_start: 31
        source_file: /src/dovecot/src/lib-fs/fs-test.h
    typedefs: []
    union: []
- function_names:
  - fs_wrapper_get_properties
  - fs_wrapper_file_close
  - fs_wrapper_file_get_path
  - fs_wrapper_set_async_callback
  - fs_wrapper_wait_async
  - fs_wrapper_set_metadata
  - fs_wrapper_get_metadata
  - fs_wrapper_prefetch
  - fs_wrapper_read
  - fs_wrapper_read_stream
  - fs_wrapper_write
  - fs_wrapper_write_stream
  - fs_wrapper_write_stream_finish
  - fs_wrapper_lock
  - fs_wrapper_unlock
  - fs_wrapper_exists
  - fs_wrapper_stat
  - fs_wrapper_get_nlinks
  - fs_wrapper_copy
  - fs_wrapper_rename
  - fs_wrapper_delete
  - fs_wrapper_iter_alloc
  - fs_wrapper_iter_init
  - fs_wrapper_iter_next
  - fs_wrapper_iter_deinit
  source_file: /src/dovecot/src/lib-fs/fs-wrapper.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: iter
        type: struct fs_iter
      - name: '*parent'
        type: struct fs_iter
      item_type: struct
      name: wrapper_fs_iter
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/dovecot/src/lib-fs/fs-wrapper.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-fs/fs-api-private.h
  types:
    enum:
    - enumerators:
      - name: FS_GET_METADATA_FLAG_LOADED_ONLY
        value: BIT(0)
      item_type: enum
      name: fs_get_metadata_flags
      pos:
        line_end: 15
        line_start: 13
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
    preproc_defs:
    - item_type: preproc_def
      name: FS_EVENT_FIELD_FS
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
      type_or_value: '"lib-fs#fs"'
    - item_type: preproc_def
      name: FS_EVENT_FIELD_FILE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
      type_or_value: '"lib-fs#file"'
    - item_type: preproc_def
      name: FS_EVENT_FIELD_ITER
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
      type_or_value: '"lib-fs#iter"'
    structs:
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: fs_api_module_register
      pos:
        line_end: 19
        line_start: 17
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
    - fields:
      - name: '*(*alloc)(void)'
        type: struct fs
      - name: "(*init)(struct fs *fs, const struct fs_parameters *params,\n\t\t    const
          char **error_r)"
        type: int
      - name: (*deinit)(struct fs *fs)
        type: void
      - name: (*free)(struct fs *fs)
        type: void
      - name: (*get_properties)(struct fs *fs)
        type: enum fs_properties
      - name: '*(*file_alloc)(void)'
        type: struct fs_file
      - name: "(*file_init)(struct fs_file *file, const char *path,\n\t\t\t  enum
          fs_open_mode mode, enum fs_open_flags flags)"
        type: void
      - name: (*file_deinit)(struct fs_file *file)
        type: void
      - name: (*file_close)(struct fs_file *file)
        type: void
      - name: '*(*get_path)(struct fs_file *file)'
        type: char
      - name: "(*set_async_callback)(struct fs_file *file,\n\t\t\t\t   fs_file_async_callback_t
          *callback,\n\t\t\t\t   void *context)"
        type: void
      - name: (*wait_async)(struct fs *fs)
        type: void
      - name: "(*set_metadata)(struct fs_file *file, const char *key,\n\t\t\t     const
          char *value)"
        type: void
      - name: "(*get_metadata)(struct fs_file *file,\n\t\t\t    enum fs_get_metadata_flags
          flags,\n\t\t\t    const ARRAY_TYPE(fs_metadata) **metadata_r)"
        type: int
      - name: (*prefetch)(struct fs_file *file, uoff_t length)
        type: bool
      - name: (*read)(struct fs_file *file, void *buf, size_t size)
        type: ssize_t
      - name: "*(*read_stream)(struct fs_file *file,\n\t\t\t\t       size_t max_buffer_size)"
        type: struct istream
      - name: (*write)(struct fs_file *file, const void *data, size_t size)
        type: int
      - name: (*write_stream)(struct fs_file *file)
        type: void
      - name: (*write_stream_finish)(struct fs_file *file, bool success)
        type: int
      - name: "(*lock)(struct fs_file *file, unsigned int secs,\n\t\t    struct fs_lock
          **lock_r)"
        type: int
      - name: (*unlock)(struct fs_lock *lock)
        type: void
      - name: (*exists)(struct fs_file *file)
        type: int
      - name: (*stat)(struct fs_file *file, struct stat *st_r)
        type: int
      - name: (*copy)(struct fs_file *src, struct fs_file *dest)
        type: int
      - name: (*rename)(struct fs_file *src, struct fs_file *dest)
        type: int
      - name: (*delete_file)(struct fs_file *file)
        type: int
      - name: '*(*iter_alloc)(void)'
        type: struct fs_iter
      - name: "(*iter_init)(struct fs_iter *iter, const char *path,\n\t\t\t  enum
          fs_iter_flags flags)"
        type: void
      - name: '*(*iter_next)(struct fs_iter *iter)'
        type: char
      - name: (*iter_deinit)(struct fs_iter *iter)
        type: int
      - name: (*switch_ioloop)(struct fs *fs)
        type: bool
      - name: (*get_nlinks)(struct fs_file *file, nlink_t *nlinks_r)
        type: int
      item_type: struct
      name: fs_vfuncs
      pos:
        line_end: 83
        line_start: 27
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
    - fields:
      - name: '*parent'
        type: struct fs
      - name: '*name'
        type: char
      - name: v
        type: struct fs_vfuncs
      - name: '*temp_path_prefix'
        type: char
      - name: refcount
        type: int
      - name: '*init_fs_list'
        type: ARRAY_TYPE
      - name: init_fs_list_idx
        type: unsigned int
      - name: '*init_fs_last_list_idx'
        type: unsigned int
      - name: '*username'
        type: char
      - name: '*wait_ioloop'
        type: struct ioloop
      - name: files_open_count
        type: unsigned int
      - name: '*files'
        type: struct fs_file
      - name: '*iters'
        type: struct fs_iter
      - name: '*event'
        type: struct event
      - name: enable_timing
        type: bool
      - name: stats
        type: struct fs_stats
      item_type: struct
      name: fs
      pos:
        line_end: 111
        line_start: 85
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
    - fields:
      - name: '*prev'
        type: struct fs_file
      - name: '*parent'
        type: struct fs_file
      - name: '*fs'
        type: struct fs
      - name: '*output'
        type: struct ostream
      - name: '*event'
        type: struct event
      - name: '*path'
        type: char
      - name: '*last_error'
        type: char
      - name: flags
        type: enum fs_open_flags
      - name: '*seekable_input'
        type: struct istream
      - name: '*pending_read_input'
        type: struct istream
      - name: '*write_digest_method'
        type: struct hash_method
      - name: '*write_digest'
        type: void
      - name: metadata_pool
        type: pool_t
      - name: (fs_metadata)
        type: ARRAY_TYPE
      - name: '*copy_src'
        type: struct fs_file
      - name: '*copy_input'
        type: struct istream
      - name: '*copy_output'
        type: struct ostream
      - name: timing_start[FS_OP_COUNT]
        type: struct timeval
      - name: write_pending
        type: bool
      - name: writing_stream
        type: bool
      - name: metadata_changed
        type: bool
      - name: read_or_prefetch_counted
        type: bool
      - name: lookup_metadata_counted
        type: bool
      - name: stat_counted
        type: bool
      - name: copy_counted
        type: bool
      - name: istream_open
        type: bool
      - name: last_error_changed
        type: bool
      item_type: struct
      name: fs_file
      pos:
        line_end: 150
        line_start: 113
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
    - fields:
      - name: '*file'
        type: struct fs_file
      item_type: struct
      name: fs_lock
      pos:
        line_end: 154
        line_start: 152
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
    - fields:
      - name: '*prev'
        type: struct fs_iter
      - name: '*fs'
        type: struct fs
      - name: '*event'
        type: struct event
      - name: '*path'
        type: char
      - name: flags
        type: enum fs_iter_flags
      - name: start_time
        type: struct timeval
      - name: '*last_error'
        type: char
      - name: async_have_more
        type: bool
      - name: '*async_callback'
        type: fs_file_async_callback_t
      - name: '*async_context'
        type: void
      item_type: struct
      name: fs_iter
      pos:
        line_end: 170
        line_start: 156
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
    typedefs: []
    union:
    - fields:
      - name: '*reg'
        type: struct fs_api_module_register
      item_type: union
      name: fs_api_module_context
      pos:
        line_end: 23
        line_start: 21
        source_file: /src/dovecot/src/lib-fs/fs-api-private.h
- function_names: []
  source_file: /src/dovecot/src/lib-fs/fs-sis-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: HASH_DIR_NAME
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-fs/fs-sis-common.h
      type_or_value: '"hashes"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - o_stream_metawrap_call_callback
  - o_stream_metawrap_sendv
  - o_stream_metawrap_send_istream
  - o_stream_create_metawrap
  source_file: /src/dovecot/src/lib-fs/ostream-metawrap.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: (*write_callback)(void *)
        type: void
      - name: '*context'
        type: void
      item_type: struct
      name: metawrap_ostream
      pos:
        line_end: 11
        line_start: 7
        source_file: /src/dovecot/src/lib-fs/ostream-metawrap.c
    typedefs: []
    union: []
- function_names:
  - fs_file_set_async_callback
  - fs_iter_set_async_callback
  source_file: /src/dovecot/src/lib-fs/fs-api.h
  types:
    enum:
    - enumerators:
      - name: FS_PROPERTY_METADATA
        value: '0x01'
      - name: FS_PROPERTY_STAT
        value: '0x10'
      - name: FS_PROPERTY_LOCKS
        value: '0x02'
      - name: FS_PROPERTY_FASTCOPY
        value: '0x04'
      - name: FS_PROPERTY_RENAME
        value: '0x08'
      - name: FS_PROPERTY_ITER
        value: '0x20'
      - name: FS_PROPERTY_RELIABLEITER
        value: '0x40'
      - name: FS_PROPERTY_DIRECTORIES
        value: '0x80'
      - name: FS_PROPERTY_WRITE_HASH_MD5
        value: '0x100'
      - name: FS_PROPERTY_WRITE_HASH_SHA256
        value: '0x200'
      - name: FS_PROPERTY_ASYNC
        value: '0x800'
      - name: FS_PROPERTY_COPY_METADATA
        value: '0x400'
      - name: FS_PROPERTY_FASTCOPY_CHANGED_METADATA
        value: '0x2000'
      - name: FS_PROPERTY_OBJECTIDS
        value: '0x1000'
      item_type: enum
      name: fs_properties
      pos:
        line_end: 52
        line_start: 27
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    - enumerators:
      - name: FS_OPEN_MODE_READONLY
      - name: FS_OPEN_MODE_REPLACE
      - name: FS_OPEN_MODE_CREATE_UNIQUE_128
      - name: FS_OPEN_MODE_CREATE
      - name: FS_OPEN_MODE_APPEND
      item_type: enum
      name: fs_open_mode
      pos:
        line_end: 69
        line_start: 54
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    - enumerators:
      - name: FS_OPEN_FLAG_FSYNC
        value: '0x10'
      - name: FS_OPEN_FLAG_SEEKABLE
        value: '0x40'
      - name: FS_OPEN_FLAG_ASYNC_NOQUEUE
        value: '0x80'
      - name: FS_OPEN_FLAG_ASYNC
        value: '0x20'
      item_type: enum
      name: fs_open_flags
      pos:
        line_end: 89
        line_start: 71
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    - enumerators:
      - name: FS_ITER_FLAG_DIRS
        value: '0x01'
      - name: FS_ITER_FLAG_OBJECTIDS
        value: '0x04'
      - name: FS_ITER_FLAG_NOCACHE
        value: '0x08'
      - name: FS_ITER_FLAG_ASYNC
        value: '0x02'
      item_type: enum
      name: fs_iter_flags
      pos:
        line_end: 106
        line_start: 91
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    - enumerators:
      - name: FS_OP_WAIT
      - name: FS_OP_PREFETCH
      - name: FS_OP_METADATA
      - name: FS_OP_READ
      - name: FS_OP_WRITE
      - name: FS_OP_LOCK
      - name: FS_OP_EXISTS
      - name: FS_OP_STAT
      - name: FS_OP_COPY
      - name: FS_OP_RENAME
      - name: FS_OP_DELETE
      - name: FS_OP_ITER
      - name: FS_OP_COUNT
      item_type: enum
      name: fs_op
      pos:
        line_end: 123
        line_start: 108
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    preproc_defs:
    - item_type: preproc_def
      name: FS_METADATA_INTERNAL_PREFIX
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-fs/fs-api.h
      type_or_value: '":/X-Dovecot-fs-api-"'
    - item_type: preproc_def
      name: FS_METADATA_OBJECTID
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-fs/fs-api.h
      type_or_value: FS_METADATA_INTERNAL_PREFIX"ObjectID"
    - item_type: preproc_def
      name: FS_METADATA_WRITE_FNAME
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-fs/fs-api.h
      type_or_value: FS_METADATA_INTERNAL_PREFIX"WriteFilename"
    - item_type: preproc_def
      name: FS_METADATA_ORIG_PATH
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-fs/fs-api.h
      type_or_value: FS_METADATA_INTERNAL_PREFIX"OrigPath"
    - item_type: preproc_def
      name: FS_METADATA_FILE_SIZE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-fs/fs-api.h
      type_or_value: FS_METADATA_INTERNAL_PREFIX"Size"
    structs:
    - fields:
      - name: '*username'
        type: char
      - name: '*session_id'
        type: char
      - name: '*base_dir'
        type: char
      - name: '*temp_dir'
        type: char
      - name: '*root_path'
        type: char
      - name: '*temp_file_prefix'
        type: char
      - name: '*dns_client'
        type: struct dns_client
      - name: enable_timing
        type: bool
      item_type: struct
      name: fs_parameters
      pos:
        line_end: 150
        line_start: 125
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*fs_name'
        type: char
      - name: '*fs_driver'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: fs_settings
      pos:
        line_end: 157
        line_start: 152
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    - fields:
      - name: prefetch_count
        type: unsigned int
      - name: read_count
        type: unsigned int
      - name: lookup_metadata_count
        type: unsigned int
      - name: stat_count
        type: unsigned int
      - name: write_count
        type: unsigned int
      - name: exists_count
        type: unsigned int
      - name: delete_count
        type: unsigned int
      - name: copy_count
        type: unsigned int
      - name: rename_count
        type: unsigned int
      - name: iter_count
        type: unsigned int
      - name: write_bytes
        type: uint64_t
      - name: '*timings[FS_OP_COUNT]'
        type: struct stats_dist
      item_type: struct
      name: fs_stats
      pos:
        line_end: 198
        line_start: 160
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    - fields:
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      item_type: struct
      name: fs_metadata
      pos:
        line_end: 203
        line_start: 200
        source_file: /src/dovecot/src/lib-fs/fs-api.h
    typedefs:
    - item_type: typedef
      name: fs_file_async_callback_t(void *context)
      pos:
        line_end: 206
        line_start: 206
        source_file: /src/dovecot/src/lib-fs/fs-api.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-fs/istream-fs-stats.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_fs_async_write
  - test_fs_async_copy
  - test_fs_async
  source_file: /src/dovecot/src/lib-fs/fs-test-async.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SISQUEUE_FS
  - SISQUEUE_FILE
  - DEF
  - fs_sis_queue_alloc
  - fs_sis_queue_init
  - fs_sis_queue_free
  - fs_sis_queue_file_alloc
  - fs_sis_queue_file_init
  - fs_sis_queue_file_deinit
  - fs_sis_queue_add
  - fs_sis_queue_write
  - fs_sis_queue_write_stream
  - fs_sis_queue_write_stream_finish
  - fs_sis_queue_delete
  source_file: /src/dovecot/src/lib-fs/fs-sis-queue.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*fs_sis_queue_path'
        type: char
      item_type: struct
      name: fs_sis_queue_settings
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/lib-fs/fs-sis-queue.c
    - fields:
      - name: fs
        type: struct fs
      - name: '*queue_dir'
        type: char
      item_type: struct
      name: sis_queue_fs
      pos:
        line_end: 17
        line_start: 14
        source_file: /src/dovecot/src/lib-fs/fs-sis-queue.c
    - fields:
      - name: file
        type: struct fs_file
      - name: '*fs'
        type: struct sis_queue_fs
      item_type: struct
      name: sis_queue_fs_file
      pos:
        line_end: 22
        line_start: 19
        source_file: /src/dovecot/src/lib-fs/fs-sis-queue.c
    typedefs: []
    union: []
- function_names:
  - METAWRAP_FS
  - METAWRAP_FILE
  - fs_metawrap_alloc
  - fs_metawrap_init
  - fs_metawrap_free
  - fs_metawrap_get_properties
  - fs_metawrap_file_alloc
  - fs_metawrap_file_init
  - fs_metawrap_file_deinit
  - fs_metawrap_file_close
  - fs_metawrap_set_metadata
  - fs_metawrap_get_metadata
  - fs_metawrap_prefetch
  - fs_metawrap_read
  - fs_metawrap_callback
  - fs_metawrap_read_stream
  - fs_metawrap_write
  - fs_metawrap_append_metadata
  - fs_metawrap_write_metadata_to
  - fs_metawrap_write_metadata
  - fs_metawrap_write_stream
  - fs_metawrap_create_updated_istream
  - fs_metawrap_write_stream_finish
  - fs_metawrap_stat
  - fs_metawrap_copy
  source_file: /src/dovecot/src/lib-fs/fs-metawrap.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: fs
        type: struct fs
      - name: wrap_metadata
        type: bool
      item_type: struct
      name: metawrap_fs
      pos:
        line_end: 18
        line_start: 15
        source_file: /src/dovecot/src/lib-fs/fs-metawrap.c
    - fields:
      - name: file
        type: struct fs_file
      - name: '*fs'
        type: struct metawrap_fs
      - name: '*super_read'
        type: struct fs_file
      - name: open_mode
        type: enum fs_open_mode
      - name: '*input'
        type: struct istream
      - name: metadata_read
        type: bool
      - name: '*super_output'
        type: struct ostream
      - name: '*temp_output'
        type: struct ostream
      - name: '*metadata_header'
        type: string_t
      - name: metadata_write_size
        type: uoff_t
      - name: metadata_changed_since_write
        type: bool
      item_type: struct
      name: metawrap_fs_file
      pos:
        line_end: 33
        line_start: 20
        source_file: /src/dovecot/src/lib-fs/fs-metawrap.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-fs/istream-fs-file.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SIS_FS
  - SIS_FILE
  - fs_sis_alloc
  - fs_sis_init
  - fs_sis_free
  - fs_sis_file_alloc
  - fs_sis_file_init
  - fs_sis_file_deinit
  - fs_sis_file_close
  - fs_sis_try_link
  - fs_sis_read_stream
  - fs_sis_write
  - fs_sis_write_stream
  - fs_sis_write_stream_finish
  - fs_sis_delete
  source_file: /src/dovecot/src/lib-fs/fs-sis.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FS_SIS_REQUIRED_PROPS
      pos:
        line_end: 12
        line_start: 10
        source_file: /src/dovecot/src/lib-fs/fs-sis.c
      type_or_value: (FS_PROPERTY_FASTCOPY | FS_PROPERTY_STAT)
    structs:
    - fields:
      - name: fs
        type: struct fs
      item_type: struct
      name: sis_fs
      pos:
        line_end: 15
        line_start: 13
        source_file: /src/dovecot/src/lib-fs/fs-sis.c
    - fields:
      - name: file
        type: struct fs_file
      - name: '*fs'
        type: struct sis_fs
      - name: open_mode
        type: enum fs_open_mode
      - name: '*hash_file'
        type: struct fs_file
      - name: '*hash_input'
        type: struct istream
      - name: '*fs_output'
        type: struct ostream
      - name: '*hash'
        type: char
      - name: opened
        type: bool
      item_type: struct
      name: sis_fs_file
      pos:
        line_end: 28
        line_start: 17
        source_file: /src/dovecot/src/lib-fs/fs-sis.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - fs_class_register
  - fs_class_unregister
  - fs_classes_deinit
  - fs_classes_init
  - fs_class_find
  - fs_class_deinit_modules
  - fs_driver_module_name
  - fs_class_try_load_plugin
  - fs_alloc
  - fs_settings_check
  - fs_init
  - fs_init_auto
  - fs_init_parent
  - fs_deinit
  - fs_ref
  - fs_unref
  - fs_get_parent
  - fs_get_driver
  - fs_get_root_fs
  - fs_get_root_driver
  - fs_file_init
  - fs_file_init_with_event
  - fs_file_deinit
  - fs_file_free
  - fs_file_set_flags
  - fs_file_close
  - fs_get_properties
  - fs_metadata_init
  - fs_metadata_init_or_clear
  - fs_metadata_find_md
  - array_foreach_modifiable
  - fs_default_set_metadata
  - fs_metadata_find
  - fs_set_metadata
  - fs_file_timing_start
  - fs_timing_end
  - fs_file_timing_end
  - fs_get_metadata_full
  - fs_get_metadata
  - fs_lookup_metadata
  - fs_lookup_loaded_metadata
  - fs_file_path
  - fs_file_fs
  - fs_file_event
  - fs_file_get_error_file
  - fs_set_verror
  - fs_file_last_error
  - fs_prefetch
  - fs_read_via_stream
  - fs_read
  - fs_file_istream_destroyed
  - fs_read_stream
  - fs_write_via_stream
  - fs_write
  - fs_write_stream
  - fs_write_stream_finish_int
  - fs_write_stream_finish
  - fs_write_stream_finish_async
  - fs_write_stream_abort
  - fs_write_stream_abort_error
  - fs_write_stream_abort_parent
  - fs_write_set_hash
  - fs_file_set_async_callback
  - fs_wait_async
  - fs_switch_ioloop
  - fs_lock
  - fs_unlock
  - fs_exists
  - fs_stat
  - fs_get_nlinks
  - fs_default_copy
  - fs_copy
  - fs_copy_finish_async
  - fs_rename
  - fs_delete
  - fs_iter_init
  - fs_iter_init_with_event
  - fs_iter_deinit
  - fs_iter_next
  - fs_iter_set_async_callback
  - fs_iter_have_more
  - fs_get_stats
  - fs_set_error
  - fs_set_error_errno
  - fs_file_set_error_async
  - fs_stats_count_ops
  - fs_stats_get_read_usecs
  - fs_stats_get_write_usecs
  - fs_file_init_parent
  - fs_iter_init_parent
  - fs_get_event
  source_file: /src/dovecot/src/lib-fs/fs-api.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - metadata_header_read
  - i_stream_metawrap_read
  - i_stream_metawrap_seek
  - i_stream_metawrap_stat
  - i_stream_create_metawrap
  source_file: /src/dovecot/src/lib-fs/istream-metawrap.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: METAWRAP_MAX_METADATA_LINE_LEN
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-fs/istream-metawrap.c
      type_or_value: '8192'
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*callback'
        type: metawrap_callback_t
      - name: '*context'
        type: void
      - name: start_offset
        type: uoff_t
      - name: in_metadata
        type: bool
      item_type: struct
      name: metawrap_istream
      pos:
        line_end: 15
        line_start: 8
        source_file: /src/dovecot/src/lib-fs/istream-metawrap.c
    typedefs: []
    union: []
- function_names:
  - i_stream_fs_stats_read
  - i_stream_create_fs_stats
  source_file: /src/dovecot/src/lib-fs/istream-fs-stats.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*file'
        type: struct fs_file
      item_type: struct
      name: fs_stats_istream
      pos:
        line_end: 10
        line_start: 7
        source_file: /src/dovecot/src/lib-fs/istream-fs-stats.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-fs/ostream-metawrap.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RANDOMFAIL_FS
  - RANDOMFAIL_FILE
  - RANDOMFAIL_ITER
  - fs_randomfail_alloc
  - fs_op_find
  - fs_randomfail_add_probability
  - fs_randomfail_add_probability_range
  - fs_randomfail_op_add
  - fs_randomfail_init
  - fs_randomfail_free
  - fs_randomfail_get_properties
  - fs_randomfail_file_alloc
  - fs_randomfail_file_init
  - fs_randomfail_file_deinit
  - fs_random_fail
  - fs_file_random_fail_begin
  - fs_file_random_fail_end
  - fs_random_fail_range
  - fs_randomfail_get_metadata
  - fs_randomfail_prefetch
  - fs_randomfail_read
  - fs_randomfail_read_stream
  - fs_randomfail_write
  - fs_randomfail_write_stream
  - fs_randomfail_write_stream_finish
  - fs_randomfail_lock
  - fs_randomfail_unlock
  - fs_randomfail_exists
  - fs_randomfail_stat
  - fs_randomfail_get_nlinks
  - fs_randomfail_copy
  - fs_randomfail_rename
  - fs_randomfail_delete
  - fs_randomfail_iter_alloc
  - fs_randomfail_iter_init
  - fs_randomfail_iter_next
  - fs_randomfail_iter_deinit
  source_file: /src/dovecot/src/lib-fs/fs-randomfail.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RANDOMFAIL_ERROR
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-fs/fs-randomfail.c
      type_or_value: '"Random failure injection"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: fs_randomfail_settings
      pos:
        line_end: 24
        line_start: 21
        source_file: /src/dovecot/src/lib-fs/fs-randomfail.c
    - fields:
      - name: fs
        type: struct fs
      - name: op_probability[FS_OP_COUNT]
        type: unsigned int
      - name: range_start[FS_OP_COUNT]
        type: uoff_t
      item_type: struct
      name: randomfail_fs
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/dovecot/src/lib-fs/fs-randomfail.c
    - fields:
      - name: file
        type: struct fs_file
      - name: '*super_read'
        type: struct fs_file
      - name: '*input'
        type: struct istream
      - name: op_pending[FS_OP_COUNT]
        type: bool
      - name: '*super_output'
        type: struct ostream
      item_type: struct
      name: randomfail_fs_file
      pos:
        line_end: 39
        line_start: 32
        source_file: /src/dovecot/src/lib-fs/fs-randomfail.c
    - fields:
      - name: iter
        type: struct fs_iter
      - name: '*super'
        type: struct fs_iter
      - name: fail_pos
        type: unsigned int
      item_type: struct
      name: randomfail_fs_iter
      pos:
        line_end: 45
        line_start: 41
        source_file: /src/dovecot/src/lib-fs/fs-randomfail.c
    typedefs: []
    union: []
- function_names:
  - test_fs_metawrap_stat
  - test_fs_metawrap_async
  - test_fs_metawrap_write_empty
  - test_fs_metawrap_write_fname_rename
  - main
  source_file: /src/dovecot/src/lib-fs/test-fs-metawrap.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-fs/fs-wrapper.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-fs/ostream-cmp.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fs_test_alloc
  - fs_test_init
  - fs_test_free
  - fs_test_get_properties
  - fs_test_file_alloc
  - fs_test_file_init
  - fs_test_file_deinit
  - fs_test_file_close
  - fs_test_file_get_path
  - fs_test_set_async_callback
  - fs_test_wait_async
  - fs_test_set_metadata
  - fs_test_get_metadata
  - fs_test_prefetch
  - fs_test_stream_destroyed
  - fs_test_read_stream
  - fs_test_write_stream
  - fs_test_write_stream_finish
  - fs_test_lock
  - fs_test_unlock
  - fs_test_exists
  - fs_test_stat
  - fs_test_copy
  - fs_test_rename
  - fs_test_delete
  - fs_test_iter_alloc
  - fs_test_iter_init
  - fs_test_iter_next
  - fs_test_iter_deinit
  - test_fs_get
  - test_fs_file_get
  source_file: /src/dovecot/src/lib-fs/fs-test.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_URLAUTH_SOCKET
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-common.h
      type_or_value: '"imap-urlauth"'
    - item_type: preproc_def
      name: IMAP_URLAUTH_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-common.h
      type_or_value: '1'
    - item_type: preproc_def
      name: IMAP_URLAUTH_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-common.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names:
  - IS_STANDALONE
  - imap_urlauth_worker_refresh_proctitle
  - client_idle_timeout
  - client_create
  - client_create_standalone
  - client_abort
  - client_destroy
  - client_run_url
  - client_send_line
  - client_fetch_urlpart
  - client_fetch_url
  - client_handle_command
  - client_handle_user_command
  - client_handle_input
  - client_input
  - client_output
  - client_ctrl_read_fd
  - client_ctrl_read_fds
  - client_ctrl_handshake
  - client_ctrl_input
  - client_ctrl_connection_destroy
  - client_connection_destroy
  - imap_urlauth_worker_die
  - main_stdio_run
  - client_connected
  - main
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_INBUF_SIZE
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
      type_or_value: '2048'
    - item_type: preproc_def
      name: CLIENT_IDLE_TIMEOUT_MSECS
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
      type_or_value: (10*60*1000)
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: conn_ctrl
        type: struct connection
      - name: '*prev'
        type: struct client
      - name: '*event'
        type: struct event
      - name: '*to_idle'
        type: struct timeout
      - name: '*access_user'
        type: char
      - name: access_apps
        type: ARRAY_TYPE
      - name: '*mail_user'
        type: struct mail_user
      - name: '*urlauth_ctx'
        type: struct imap_urlauth_context
      - name: '*url'
        type: struct imap_msgpart_url
      - name: '*msg_part_input'
        type: struct istream
      - name: msg_part_size
        type: uoff_t
      - name: '*set'
        type: struct imap_urlauth_worker_settings
      - name: '*mail_set'
        type: struct mail_storage_settings
      - name: finished
        type: bool
      - name: waiting_input
        type: bool
      - name: access_received
        type: bool
      - name: access_anonymous
        type: bool
      item_type: struct
      name: client
      pos:
        line_end: 68
        line_start: 40
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_urlauth_worker_client_init
  - imap_urlauth_worker_client_deinit
  - imap_urlauth_worker_client_connected
  - imap_urlauth_worker_client_connect
  - imap_urlauth_worker_client_disconnect
  - imap_urlauth_worker_client_error
  - imap_urlauth_worker_connection_destroy
  - imap_urlauth_worker_connection_input_args
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
  types:
    enum:
    - enumerators:
      - name: IMAP_URLAUTH_WORKER_STATE_INACTIVE
        value: '0'
      - name: IMAP_URLAUTH_WORKER_STATE_CONNECTED
      - name: IMAP_URLAUTH_WORKER_STATE_ACTIVE
      item_type: enum
      name: imap_urlauth_worker_state
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    preproc_defs:
    - item_type: preproc_def
      name: MAX_INBUF_SIZE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
      type_or_value: '2048'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*client'
        type: struct client
      - name: '*event'
        type: struct event
      - name: '*path'
        type: char
      - name: worker_state
        type: enum imap_urlauth_worker_state
      item_type: struct
      name: imap_urlauth_worker_client
      pos:
        line_end: 36
        line_start: 28
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-client.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*base_dir'
        type: char
      - name: mail_debug
        type: bool
      - name: verbose_proctitle
        type: bool
      - name: '*imap_urlauth_logout_format'
        type: char
      - name: '*imap_urlauth_submit_user'
        type: char
      - name: '*imap_urlauth_stream_user'
        type: char
      item_type: struct
      name: imap_urlauth_settings
      pos:
        line_end: 18
        line_start: 5
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-client.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*prev'
        type: struct client
      - name: '*to_destroy'
        type: struct timeout
      - name: '*event'
        type: struct event
      - name: '*username'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*set'
        type: struct imap_urlauth_settings
      - name: '*worker_client'
        type: struct imap_urlauth_worker_client
      - name: disconnected
        type: bool
      item_type: struct
      name: client
      pos:
        line_end: 25
        line_start: 8
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-client.h
    typedefs: []
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - IS_STANDALONE
  - client_create
  - client_send_line
  - client_destroy
  - client_destroy_timeout
  - client_disconnect
  - client_connection_destroy
  - clients_init
  - clients_deinit
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLIENT_IDLE_TIMEOUT_MSECS
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-client.c
      type_or_value: (10*60*1000)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: verbose_proctitle
        type: bool
      - name: '*imap_urlauth_host'
        type: char
      - name: imap_urlauth_port
        type: in_port_t
      item_type: struct
      name: imap_urlauth_worker_settings
      pos:
        line_end: 12
        line_start: 5
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-settings.h
    typedefs: []
    union: []
- function_names:
  - IS_STANDALONE
  - imap_urlauth_refresh_proctitle
  - imap_urlauth_die
  - client_create_from_input
  - main_stdio_run
  - login_request_finished
  - login_request_failed
  - client_connected
  - main
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_URLAUTH_WORKER_SOCKET
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-common.h
      type_or_value: '"imap-urlauth-worker"'
    - item_type: preproc_def
      name: IMAP_URLAUTH_WORKER_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-common.h
      type_or_value: '2'
    - item_type: preproc_def
      name: IMAP_URLAUTH_WORKER_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/imap-urlauth/imap-urlauth-worker-common.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_does_custom_io
  source_file: /src/dovecot/src/login-common/client-common.h
  types:
    enum:
    - enumerators:
      - name: CLIENT_DISCONNECT_TIMEOUT
      - name: CLIENT_DISCONNECT_RESOURCE_CONSTRAINT
      - name: CLIENT_DISCONNECT_SYSTEM_SHUTDOWN
      - name: CLIENT_DISCONNECT_INTERNAL_ERROR
      item_type: enum
      name: client_disconnect_reason
      pos:
        line_end: 53
        line_start: 48
        source_file: /src/dovecot/src/login-common/client-common.h
    - enumerators:
      - name: CLIENT_AUTH_FAIL_CODE_NONE
        value: '0'
      - name: CLIENT_AUTH_FAIL_CODE_PASS_EXPIRED
      - name: CLIENT_AUTH_FAIL_CODE_TEMPFAIL
      - name: CLIENT_AUTH_FAIL_CODE_AUTHZFAILED
      - name: CLIENT_AUTH_FAIL_CODE_USER_DISABLED
      - name: CLIENT_AUTH_FAIL_CODE_INVALID_BASE64
      - name: CLIENT_AUTH_FAIL_CODE_LOGIN_DISABLED
      - name: CLIENT_AUTH_FAIL_CODE_MECH_INVALID
      - name: CLIENT_AUTH_FAIL_CODE_MECH_SSL_REQUIRED
      - name: CLIENT_AUTH_FAIL_CODE_ANONYMOUS_DENIED
      - name: CLIENT_AUTH_FAIL_CODE_COUNT
      item_type: enum
      name: client_auth_fail_code
      pos:
        line_end: 68
        line_start: 55
        source_file: /src/dovecot/src/login-common/client-common.h
    - enumerators:
      - name: CLIENT_AUTH_RESULT_SUCCESS
      - name: CLIENT_AUTH_RESULT_AUTHFAILED
      - name: CLIENT_AUTH_RESULT_REFERRAL_NOLOGIN
      - name: CLIENT_AUTH_RESULT_REFERRAL_SUCCESS
      - name: CLIENT_AUTH_RESULT_ABORTED
      - name: CLIENT_AUTH_RESULT_AUTHFAILED_REASON
      - name: CLIENT_AUTH_RESULT_AUTHZFAILED
      - name: CLIENT_AUTH_RESULT_TEMPFAIL
      - name: CLIENT_AUTH_RESULT_LIMIT_REACHED
      - name: CLIENT_AUTH_RESULT_PASS_EXPIRED
      - name: CLIENT_AUTH_RESULT_INVALID_BASE64
      - name: CLIENT_AUTH_RESULT_MECH_INVALID
      - name: CLIENT_AUTH_RESULT_ANONYMOUS_DENIED
      - name: CLIENT_AUTH_RESULT_MECH_SSL_REQUIRED
      - name: CLIENT_AUTH_RESULT_LOGIN_DISABLED
      - name: CLIENT_AUTH_RESULT_SSL_REQUIRED
      item_type: enum
      name: client_auth_result
      pos:
        line_end: 87
        line_start: 70
        source_file: /src/dovecot/src/login-common/client-common.h
    - enumerators:
      - name: CLIENT_LIST_TYPE_NONE
        value: '0'
      - name: CLIENT_LIST_TYPE_ACTIVE
      - name: CLIENT_LIST_TYPE_DESTROYED
      - name: CLIENT_LIST_TYPE_FD_PROXY
      item_type: enum
      name: client_list_type
      pos:
        line_end: 99
        line_start: 89
        source_file: /src/dovecot/src/login-common/client-common.h
    preproc_defs:
    - item_type: preproc_def
      name: LOGIN_MAX_SESSION_ID_LEN
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '64'
    - item_type: preproc_def
      name: LOGIN_MAX_MASTER_PREFIX_LEN
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '128'
    - item_type: preproc_def
      name: LOGIN_MAX_CLIENT_ID_LEN
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '256'
    - item_type: preproc_def
      name: LOGIN_MAX_INBUF_SIZE
      pos:
        line_end: 23
        line_start: 20
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: "(LOGIN_REQUEST_MAX_DATA_SIZE - LOGIN_MAX_MASTER_PREFIX_LEN -
        \\\n\t LOGIN_MAX_SESSION_ID_LEN)"
    - item_type: preproc_def
      name: LOGIN_MAX_OUTBUF_SIZE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: LOGIN_MAX_AUTH_BUF_SIZE
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '8192'
    - item_type: preproc_def
      name: CLIENT_LOGIN_TIMEOUT_MSECS
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: (MASTER_LOGIN_TIMEOUT_SECS*1000)
    - item_type: preproc_def
      name: AUTH_SERVER_WAITING_MSG
      pos:
        line_end: 36
        line_start: 34
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '"Waiting for authentication process to respond.."'
    - item_type: preproc_def
      name: AUTH_MASTER_WAITING_MSG
      pos:
        line_end: 38
        line_start: 36
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '"Waiting for authentication master process to respond.."'
    - item_type: preproc_def
      name: CLIENT_UNAUTHENTICATED_LOGOUT_MSG
      pos:
        line_end: 42
        line_start: 40
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '"Logged out"'
    - item_type: preproc_def
      name: CLIENT_TRANSPORT_TLS
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '"TLS"'
    - item_type: preproc_def
      name: CLIENT_TRANSPORT_INSECURE
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dovecot/src/login-common/client-common.h
      type_or_value: '"insecure"'
    structs:
    - fields:
      - name: '*reason'
        type: char
      - name: fail_code
        type: enum client_auth_fail_code
      - name: (const_string)
        type: ARRAY_TYPE
      - name: proxy
        type: struct auth_proxy_settings
      - name: proxy_refresh_secs
        type: unsigned int
      - name: proxy_host_immediate_failure_after_secs
        type: unsigned int
      - name: '*final_reply'
        type: char
      - name: '*const *all_fields'
        type: char
      - name: nologin
        type: bool
      - name: proxy_no_multiplex
        type: bool
      item_type: struct
      name: client_auth_reply
      pos:
        line_end: 119
        line_start: 101
        source_file: /src/dovecot/src/login-common/client-common.h
    - fields:
      - name: '*(*alloc)(pool_t pool)'
        type: struct client
      - name: (*create)(struct client *client)
        type: int
      - name: (*destroy)(struct client *client)
        type: void
      - name: (*reload_config)(struct client *client, const char **error_r)
        type: int
      - name: (*notify_auth_ready)(struct client *client)
        type: void
      - name: (*notify_auth_connected)(struct client *client)
        type: void
      - name: "(*notify_disconnect)(struct client *client,\n\t\t\t\t  enum client_disconnect_reason
          reason,\n\t\t\t\t  const char *text)"
        type: void
      - name: "(*notify_status)(struct client *client,\n\t\t\t      bool bad, const
          char *text)"
        type: void
      - name: "(*notify_starttls)(struct client *client,\n\t\t\t\tbool success, const
          char *text)"
        type: void
      - name: (*starttls)(struct client *client)
        type: void
      - name: (*iostream_change_pre)(struct client *client)
        type: void
      - name: (*iostream_change_post)(struct client *client)
        type: void
      - name: (*input)(struct client *client)
        type: void
      - name: "(*sasl_filter_mech)(struct client *client,\n\t\t\t\t struct auth_mech_desc
          *mech)"
        type: bool
      - name: (*sasl_check_login)(struct client *client)
        type: bool
      - name: (*auth_send_challenge)(struct client *client, const char *data)
        type: void
      - name: (*auth_parse_response)(struct client *client)
        type: bool
      - name: "(*auth_result)(struct client *client,\n\t\t\t    enum client_auth_result
          result,\n\t\t\t    const struct client_auth_reply *reply,\n\t\t\t    const
          char *text)"
        type: void
      - name: (*proxy_reset)(struct client *client)
        type: void
      - name: (*proxy_parse_line)(struct client *client, const char *line)
        type: int
      - name: "(*proxy_side_channel_input)(struct client *client,\n\t\t\t\t\tconst
          char *const *args,\n\t\t\t\t\tconst char **error_r)"
        type: int
      - name: "(*proxy_failed)(struct client *client,\n\t\t\t     enum login_proxy_failure_type
          type,\n\t\t\t     const char *reason, bool reconnecting)"
        type: void
      - name: '*(*proxy_get_state)(struct client *client)'
        type: char
      - name: "(*send_raw_data)(struct client *client,\n\t\t\t      const void *data,
          size_t size)"
        type: void
      - name: (*input_next_cmd)(struct client *client)
        type: bool
      - name: (*free)(struct client *client)
        type: void
      item_type: struct
      name: client_vfuncs
      pos:
        line_end: 167
        line_start: 121
        source_file: /src/dovecot/src/login-common/client-common.h
    - fields:
      - name: '*prev'
        type: struct client
      - name: list_type
        type: enum client_list_type
      - name: pool
        type: pool_t
      - name: preproxy_pool
        type: pool_t
      - name: v
        type: struct client_vfuncs
      - name: '*vlast'
        type: struct client_vfuncs
      - name: created
        type: struct timeval
      - name: refcount
        type: int
      - name: '*event'
        type: struct event
      - name: '*event_auth'
        type: struct event
      - name: local_ip
        type: struct ip_addr
      - name: ip
        type: struct ip_addr
      - name: real_remote_ip
        type: struct ip_addr
      - name: local_port
        type: in_port_t
      - name: real_local_port
        type: in_port_t
      - name: '*ssl_iostream'
        type: struct ssl_iostream
      - name: '*set'
        type: struct login_settings
      - name: '*ssl_set'
        type: struct ssl_settings
      - name: '*ssl_server_set'
        type: struct ssl_server_settings
      - name: '*session_id'
        type: char
      - name: '*local_name'
        type: char
      - name: '*client_cert_common_name'
        type: char
      - name: '*client_id'
        type: string_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: fd
        type: int
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      - name: '*pre_rawlog_input'
        type: struct istream
      - name: '*pre_rawlog_output'
        type: struct ostream
      - name: '*multiplex_output'
        type: struct ostream
      - name: '*multiplex_orig_output'
        type: struct ostream
      - name: '*io'
        type: struct io
      - name: '*iostream_fd_proxy'
        type: struct iostream_proxy
      - name: '*to_auth_waiting'
        type: struct timeout
      - name: '*to_notify_auth_ready'
        type: struct timeout
      - name: '*to_disconnect'
        type: struct timeout
      - name: '*master_data_prefix'
        type: unsigned char
      - name: master_data_prefix_len
        type: unsigned int
      - name: '*login_proxy'
        type: struct login_proxy
      - name: '*proxy_user'
        type: char
      - name: '*proxy_mech'
        type: struct dsasl_client_mech
      - name: '*proxy_sasl_client'
        type: struct dsasl_client
      - name: proxy_ttl
        type: unsigned int
      - name: '*auth_mech_name'
        type: char
      - name: auth_flags
        type: enum sasl_server_auth_flags
      - name: '*auth_request'
        type: struct auth_client_request
      - name: '*reauth_request'
        type: struct auth_client_request
      - name: '*auth_response'
        type: string_t
      - name: auth_first_started
        type: struct timeval
      - name: '*const *auth_passdb_args'
        type: char
      - name: '*auth_success_data'
        type: char
      - name: '*anvil_query'
        type: struct anvil_query
      - name: '*anvil_request'
        type: struct anvil_request
      - name: '*auth_conn_cookie'
        type: char
      - name: auth_server_pid
        type: unsigned int
      - name: master_auth_id
        type: unsigned int
      - name: master_tag
        type: unsigned int
      - name: '*sasl_callback'
        type: sasl_server_callback_t
      - name: bad_counter
        type: unsigned int
      - name: auth_attempts
        type: unsigned int
      - name: '*last_proxy_auth_failure_reason'
        type: char
      - name: last_auth_fail
        type: enum client_auth_fail_code
      - name: proxy_last_failure
        type: enum login_proxy_failure_type
      - name: mail_pid
        type: pid_t
      - name: '*virtual_user'
        type: char
      - name: '**alt_usernames'
        type: char
      - name: create_finished
        type: bool
      - name: disconnected
        type: bool
      - name: destroyed
        type: bool
      - name: input_blocked
        type: bool
      - name: login_success
        type: bool
      - name: connection_tls_secured
        type: bool
      - name: connection_used_starttls
        type: bool
      - name: haproxy_terminated_tls
        type: bool
      - name: connection_secured
        type: bool
      - name: end_client_tls_secured
        type: bool
      - name: end_client_tls_secured_set
        type: bool
      - name: connection_trusted
        type: bool
      - name: ssl_servername_settings_read
        type: bool
      - name: banner_sent
        type: bool
      - name: authenticating
        type: bool
      - name: auth_client_continue_pending
        type: bool
      - name: auth_aborted_by_client
        type: bool
      - name: auth_login_limit_reached
        type: bool
      - name: auth_initializing
        type: bool
      - name: auth_process_comm_fail
        type: bool
      - name: auth_anonymous
        type: bool
      - name: auth_nologin_referral
        type: bool
      - name: proxy_failed
        type: bool
      - name: proxy_noauth
        type: bool
      - name: proxy_nopipelining
        type: bool
      - name: proxy_no_multiplex
        type: bool
      - name: proxy_not_trusted
        type: bool
      - name: proxy_redirect_reauth
        type: bool
      - name: notified_auth_ready
        type: bool
      - name: notified_disconnect
        type: bool
      - name: fd_proxying
        type: bool
      - name: shutting_down
        type: bool
      - name: resource_constraint
        type: bool
      - name: defer_auth_ready
        type: bool
      item_type: struct
      name: client
      pos:
        line_end: 329
        line_start: 169
        source_file: /src/dovecot/src/login-common/client-common.h
    - fields:
      - name: (*client_allocated)(struct client *client)
        type: void
      item_type: struct
      name: login_client_hooks
      pos:
        line_end: 338
        line_start: 336
        source_file: /src/dovecot/src/login-common/client-common.h
    typedefs:
    - item_type: typedef
      name: login_client_allocated_func_t(struct client *client)
      pos:
        line_end: 342
        line_start: 342
        source_file: /src/dovecot/src/login-common/client-common.h
      type: void
    union:
    - fields:
      - name: super
        type: struct client_vfuncs
      - name: '*reg'
        type: struct login_module_register
      item_type: union
      name: login_client_module_context
      pos:
        line_end: 334
        line_start: 331
        source_file: /src/dovecot/src/login-common/client-common.h
- function_names: []
  source_file: /src/dovecot/src/login-common/login-proxy.h
  types:
    enum:
    - enumerators:
      - name: LOGIN_PROXY_FAILURE_TYPE_CONNECT
      - name: LOGIN_PROXY_FAILURE_TYPE_INTERNAL
      - name: LOGIN_PROXY_FAILURE_TYPE_REMOTE_CONFIG
      - name: LOGIN_PROXY_FAILURE_TYPE_INTERNAL_CONFIG
      - name: LOGIN_PROXY_FAILURE_TYPE_REMOTE
      - name: LOGIN_PROXY_FAILURE_TYPE_PROTOCOL
      - name: LOGIN_PROXY_FAILURE_TYPE_AUTH_REPLIED
      - name: LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED
      - name: LOGIN_PROXY_FAILURE_TYPE_AUTH_TEMPFAIL
      - name: LOGIN_PROXY_FAILURE_TYPE_AUTH_REDIRECT
      - name: LOGIN_PROXY_FAILURE_TYPE_AUTH_LIMIT_REACHED_REPLIED
      item_type: enum
      name: login_proxy_failure_type
      pos:
        line_end: 49
        line_start: 20
        source_file: /src/dovecot/src/login-common/login-proxy.h
    preproc_defs:
    - item_type: preproc_def
      name: LOGIN_PROXY_TTL
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/login-common/login-proxy.h
      type_or_value: '7'
    - item_type: preproc_def
      name: LOGIN_PROXY_DEFAULT_HOST_IMMEDIATE_FAILURE_AFTER_SECS
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/login-common/login-proxy.h
      type_or_value: '30'
    - item_type: preproc_def
      name: LOGIN_PROXY_FAILURE_MSG
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/login-common/login-proxy.h
      type_or_value: '"Account is temporarily unavailable."'
    structs:
    - fields:
      - name: '*host'
        type: char
      - name: ip
        type: struct ip_addr
      - name: port
        type: in_port_t
      - name: connect_timeout_msecs
        type: unsigned int
      - name: notify_refresh_secs
        type: unsigned int
      - name: host_immediate_failure_after_secs
        type: unsigned int
      - name: ssl_flags
        type: enum auth_proxy_ssl_flags
      - name: '*rawlog_dir'
        type: char
      item_type: struct
      name: login_proxy_settings
      pos:
        line_end: 62
        line_start: 51
        source_file: /src/dovecot/src/login-common/login-proxy.h
    typedefs:
    - item_type: typedef
      name: login_proxy_input_callback_t(struct client *client)
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/dovecot/src/login-common/login-proxy.h
      type: void
    - item_type: typedef
      name: "login_proxy_side_channel_input_callback_t(struct client *client,\n\t\t\t\t\t\t
        \     const char *const *args,\n\t\t\t\t\t\t      const char **error_r)"
      pos:
        line_end: 70
        line_start: 68
        source_file: /src/dovecot/src/login-common/login-proxy.h
      type: int
    - item_type: typedef
      name: "login_proxy_failure_callback_t(struct client *client,\n\t\t\t\t\t    enum
        login_proxy_failure_type type,\n\t\t\t\t\t    const char *reason,\n\t\t\t\t\t
        \   bool reconnecting)"
      pos:
        line_end: 77
        line_start: 74
        source_file: /src/dovecot/src/login-common/login-proxy.h
      type: void
    - item_type: typedef
      name: "login_proxy_redirect_callback_t(struct client *client,\n\t\t\t\t\t     struct
        event *event,\n\t\t\t\t\t     const char *destination)"
      pos:
        line_end: 82
        line_start: 80
        source_file: /src/dovecot/src/login-common/login-proxy.h
      type: void
    union: []
- function_names:
  - sasl_server_filter_mech
  - sasl_server_get_advertised_mechs
  - sasl_server_find_available_mech
  - client_get_auth_flags
  - call_client_callback
  - login_callback
  - master_send_request
  - anvil_lookup_callback
  - anvil_check_too_many_connections
  - sasl_server_check_login
  - args_parse_user
  - sasl_server_channel_binding
  - sasl_server_auth_success_finish
  - authenticate_callback
  - get_cert_username
  - sasl_server_auth_request_info_fill
  - sasl_server_auth_begin
  - sasl_server_auth_cancel
  - sasl_server_auth_continue
  - sasl_server_auth_failed
  - sasl_server_auth_abort
  source_file: /src/dovecot/src/login-common/sasl-server.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ERR_TOO_MANY_USERIP_CONNECTIONS
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/login-common/sasl-server.c
      type_or_value: "\"Maximum number of connections from user+IP exceeded \" \\\n\t\"(mail_max_userip_connections=%u)\""
    structs:
    - fields:
      - name: '*client'
        type: struct client
      - name: auth_pid
        type: unsigned int
      - name: cookie[LOGIN_REQUEST_COOKIE_SIZE]
        type: unsigned char
      item_type: struct
      name: anvil_request
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/dovecot/src/login-common/sasl-server.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/login-common/login-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_MECH_NAME
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/login-common/login-common.h
      type_or_value: '64'
    - item_type: preproc_def
      name: AUTH_FAILED_MSG
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/login-common/login-common.h
      type_or_value: '"Authentication failed."'
    - item_type: preproc_def
      name: AUTH_TEMP_FAILED_MSG
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/login-common/login-common.h
      type_or_value: '"Temporary authentication failure."'
    - item_type: preproc_def
      name: AUTH_CLEARTEXT_DISABLED_MSG
      pos:
        line_end: 14
        line_start: 12
        source_file: /src/dovecot/src/login-common/login-common.h
      type_or_value: '"Cleartext authentication disallowed on non-secure (SSL/TLS)
        connections."'
    - item_type: preproc_def
      name: LOGIN_DEFAULT_SOCKET
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/login-common/login-common.h
      type_or_value: '"login"'
    - item_type: preproc_def
      name: LOGIN_TOKEN_DEFAULT_SOCKET
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/login-common/login-common.h
      type_or_value: '"tokenlogin"'
    structs:
    - fields:
      - name: '*protocol'
        type: char
      - name: '*service_name'
        type: char
      - name: '*process_name'
        type: char
      - name: '*const *application_protocols'
        type: char
      - name: default_port
        type: in_port_t
      - name: default_ssl_port
        type: in_port_t
      - name: '*default_login_socket'
        type: char
      - name: event_category
        type: struct event_category
      - name: '*client_vfuncs'
        type: struct client_vfuncs
      - name: (*preinit)(void)
        type: void
      - name: (*init)(void)
        type: void
      - name: (*deinit)(void)
        type: void
      - name: sasl_support_final_reply
        type: bool
      - name: anonymous_login_acceptable
        type: bool
      item_type: struct
      name: login_binary
      pos:
        line_end: 45
        line_start: 18
        source_file: /src/dovecot/src/login-common/login-common.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: login_module_register
      pos:
        line_end: 49
        line_start: 47
        source_file: /src/dovecot/src/login-common/login-common.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/login-common/login-proxy-state.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ip
        type: struct ip_addr
      - name: port
        type: in_port_t
      - name: disconnect_timestamp
        type: struct timeval
      - name: num_disconnects_since_ts
        type: unsigned int
      - name: num_delayed_client_disconnects
        type: unsigned int
      - name: num_waiting_connections
        type: unsigned int
      - name: num_proxying_connections
        type: unsigned int
      - name: last_failure
        type: struct timeval
      - name: last_success
        type: struct timeval
      item_type: struct
      name: login_proxy_record
      pos:
        line_end: 27
        line_start: 5
        source_file: /src/dovecot/src/login-common/login-proxy-state.h
    typedefs: []
    union: []
- function_names:
  - get_first_client
  - login_refresh_proctitle
  - auth_client_idle_timeout
  - login_client_destroyed
  - login_die
  - client_connected
  - master_admin_cmd_kick_user
  - auth_connect_notify
  - anvil_reconnect_callback
  - anvil_cmd_input_kick_user
  - anvil_cmd_input
  - login_anvil_init
  - parse_login_source_ips
  - login_load_modules
  - login_ssl_init
  - main_preinit
  - main_init
  - main_deinit
  - login_binary_run
  source_file: /src/dovecot/src/login-common/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AUTH_CLIENT_IDLE_TIMEOUT_MSECS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/login-common/main.c
      type_or_value: (1000*60)
    structs: []
    typedefs: []
    union: []
- function_names:
  - proxy_last_io_timeval
  - proxy_last_io
  - login_proxy_free_errstr
  - proxy_client_disconnected_input
  - proxy_prelogin_input
  - proxy_side_channel_input
  - proxy_rawlog_init
  - proxy_rawlog_deinit
  - proxy_plain_connected
  - proxy_fail_connect
  - login_proxy_append_success_log_info
  - proxy_connect_error_append
  - login_proxy_set_destination
  - proxy_reconnect_timeout
  - login_proxy_get_hostport
  - proxy_try_reconnect
  - proxy_is_self
  - login_proxy_redirect_find
  - proxy_connect_failed
  - proxy_wait_connect
  - proxy_connect_timeout
  - login_proxy_connect
  - login_proxy_new
  - login_proxy_disconnect
  - login_proxy_detached_link
  - login_proxy_detached_unlink
  - login_proxy_free_final
  - login_proxy_delay_disconnect
  - login_proxy_free_full
  - login_proxy_free
  - login_proxy_failed
  - login_proxy_sasl_step
  - login_proxy_is_ourself
  - login_proxy_redirect_finish
  - login_proxy_get_redirect_path
  - login_proxy_replace_client_iostream_pre
  - login_proxy_replace_client_iostream_post
  - login_proxy_get_client_istream
  - login_proxy_get_client_ostream
  - login_proxy_get_server_istream
  - login_proxy_get_server_ostream
  - login_proxy_get_event
  - login_proxy_get_source_host
  - login_proxy_get_host
  - login_proxy_get_ip_str
  - login_proxy_get_port
  - login_proxy_get_ssl_flags
  - login_proxy_get_connect_timeout_msecs
  - login_proxy_finished
  - login_proxy_notify
  - client_get_alt_usernames
  - login_proxy_iostream_start
  - login_proxy_detach
  - login_proxy_starttls
  - login_proxy_failed_because_invalid_cert
  - login_proxy_input_halt
  - login_proxy_multiplex_input_start
  - proxy_kill_idle
  - login_proxy_kill_idle
  - login_proxy_kick_user_connection
  - login_proxies_get_detached_count
  - login_proxies_get_first_detached_client
  - login_proxy_init
  - login_proxy_deinit
  source_file: /src/dovecot/src/login-common/login-proxy.c
  types:
    enum:
    - enumerators:
      - name: LOGIN_PROXY_FREE_FLAG_DELAYED
        value: BIT(0)
      item_type: enum
      name: login_proxy_free_flags
      pos:
        line_end: 49
        line_start: 47
        source_file: /src/dovecot/src/login-common/login-proxy.c
    preproc_defs:
    - item_type: preproc_def
      name: MAX_PROXY_INPUT_SIZE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '4096'
    - item_type: preproc_def
      name: PROXY_MAX_OUTBUF_SIZE
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: LOGIN_PROXY_DIE_IDLE_SECS
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '2'
    - item_type: preproc_def
      name: LOGIN_PROXY_KILL_PREFIX
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '"Disconnected by proxy: "'
    - item_type: preproc_def
      name: KILLED_BY_ADMIN_REASON
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '"Kicked by admin"'
    - item_type: preproc_def
      name: KILLED_BY_SHUTDOWN_REASON
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '"Process shutting down"'
    - item_type: preproc_def
      name: LOGIN_PROXY_SIDE_SELF
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '"proxy"'
    - item_type: preproc_def
      name: PROXY_CONNECT_RETRY_MSECS
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '1000'
    - item_type: preproc_def
      name: PROXY_CONNECT_RETRY_MIN_MSECS
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: (PROXY_CONNECT_RETRY_MSECS + 100)
    - item_type: preproc_def
      name: PROXY_DISCONNECT_INTERVAL_MSECS
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '100'
    - item_type: preproc_def
      name: PROXY_REDIRECT_LOOP_MIN_COUNT
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: '2'
    - item_type: preproc_def
      name: LOGIN_PROXY_SIDE_CLIENT
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: IOSTREAM_PROXY_SIDE_LEFT
    - item_type: preproc_def
      name: LOGIN_PROXY_SIDE_SERVER
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dovecot/src/login-common/login-proxy.c
      type_or_value: IOSTREAM_PROXY_SIDE_RIGHT
    structs:
    - fields:
      - name: ip
        type: struct ip_addr
      - name: port
        type: in_port_t
      - name: count
        type: unsigned int
      item_type: struct
      name: login_proxy_redirect
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/dovecot/src/login-common/login-proxy.c
    - fields:
      - name: '*prev'
        type: struct login_proxy
      - name: '*user_prev'
        type: struct login_proxy
      - name: '*client'
        type: struct client
      - name: '*event'
        type: struct event
      - name: server_fd
        type: int
      - name: '*client_wait_io'
        type: struct io
      - name: '*client_input'
        type: struct istream
      - name: '*client_output'
        type: struct ostream
      - name: '*pre_rawlog_input'
        type: struct istream
      - name: '*pre_rawlog_output'
        type: struct ostream
      - name: '*multiplex_input'
        type: struct istream
      - name: '*side_channel_input'
        type: struct istream
      - name: '*iostream_proxy'
        type: struct iostream_proxy
      - name: '*server_ssl_iostream'
        type: struct ssl_iostream
      - name: anvil_conn_guid
        type: guid_128_t
      - name: client_output_orig_offset
        type: uoff_t
      - name: created
        type: struct timeval
      - name: '*to'
        type: struct timeout
      - name: '*state_rec'
        type: struct login_proxy_record
      - name: ip
        type: struct ip_addr
      - name: '*host'
        type: char
      - name: port
        type: in_port_t
      - name: connect_timeout_msecs
        type: unsigned int
      - name: notify_refresh_secs
        type: unsigned int
      - name: host_immediate_failure_after_secs
        type: unsigned int
      - name: reconnect_count
        type: unsigned int
      - name: ssl_flags
        type: enum auth_proxy_ssl_flags
      - name: '*rawlog_dir'
        type: char
      - name: '*input_callback'
        type: login_proxy_input_callback_t
      - name: '*side_callback'
        type: login_proxy_side_channel_input_callback_t
      - name: '*failure_callback'
        type: login_proxy_failure_callback_t
      - name: '*redirect_callback'
        type: login_proxy_redirect_callback_t
      - name: connected
        type: bool
      - name: detached
        type: bool
      - name: destroying
        type: bool
      - name: delayed_disconnect
        type: bool
      - name: disable_reconnect
        type: bool
      - name: anvil_connect_sent
        type: bool
      - name: num_waiting_connections_updated
        type: bool
      item_type: struct
      name: login_proxy
      pos:
        line_end: 105
        line_start: 57
        source_file: /src/dovecot/src/login-common/login-proxy.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - login_settings_check
  source_file: /src/dovecot/src/login-common/login-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - login_client_hooks_add
  - login_client_hooks_remove
  - hook_login_client_allocated
  - client_idle_disconnect_timeout
  - client_rawlog_init
  - client_rawlog_deinit
  - client_open_streams
  - client_log_msg_callback
  - client_is_trusted
  - client_settings_free
  - client_settings_get
  - application_protocol_equals
  - client_alloc
  - initial_client_read
  - client_init
  - login_aborted_event
  - client_disconnect
  - client_destroy
  - client_destroy_iostream_error
  - client_destroy_success
  - client_ref
  - client_unref
  - client_common_default_free
  - client_destroy_oldest
  - clients_destroy_all_reason
  - clients_destroy_all
  - client_addresses_changed
  - client_settings_reload
  - client_sni_callback
  - client_init_ssl
  - client_start_tls
  - client_output_starttls
  - client_cmd_starttls
  - client_multiplex_output_start
  - client_multiplex_output_stop
  - iostream_fd_proxy_finished
  - client_get_plaintext_fd
  - clients_get_count
  - clients_get_fd_proxies_count
  - clients_get_first_fd_proxy
  - client_add_forward_field
  - client_forward_decode_base64
  - client_get_session_id
  - client_get_ssl_client_cert_fp
  - client_ssl_ja3_hash
  - client_var_expand_func_passdb
  - get_var_expand_params
  - client_var_expand_callback
  - client_get_log_str
  - client_is_tls_enabled
  - client_get_extra_disconnect_reason
  - client_notify_disconnect
  - client_notify_auth_ready
  - client_notify_auth_connected
  - client_notify_status
  - client_common_send_raw_data
  - client_send_raw_data
  - client_send_raw
  - client_read
  - client_input
  - client_common_init
  - client_destroy_fd_proxies
  - client_common_deinit
  source_file: /src/dovecot/src/login-common/client-common.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*module'
        type: struct module
      - name: '*hooks'
        type: struct login_client_hooks
      item_type: struct
      name: login_client_module_hooks
      pos:
        line_end: 44
        line_start: 41
        source_file: /src/dovecot/src/login-common/client-common.c
    typedefs: []
    union: []
- function_names:
  - login_proxy_record_hash
  - login_proxy_record_cmp
  - login_proxy_state_init
  - login_proxy_state_close
  - login_proxy_state_deinit
  - login_proxy_state_get
  - login_proxy_state_reopen
  - login_proxy_state_notify_open
  - login_proxy_state_try_notify
  - login_proxy_state_notify
  source_file: /src/dovecot/src/login-common/login-proxy-state.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NOTIFY_RETRY_REOPEN_MSECS
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/login-common/login-proxy-state.c
      type_or_value: (60*1000)
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*event'
        type: struct event
      - name: '*notify_path'
        type: char
      - name: notify_fd
        type: int
      - name: '*to_reopen'
        type: struct timeout
      item_type: struct
      name: login_proxy_state
      pos:
        line_end: 24
        line_start: 14
        source_file: /src/dovecot/src/login-common/login-proxy-state.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/login-common/sasl-server.h
  types:
    enum:
    - enumerators:
      - name: SASL_SERVER_REPLY_SUCCESS
      - name: SASL_SERVER_REPLY_AUTH_ABORTED
      - name: SASL_SERVER_REPLY_AUTH_FAILED
      - name: SASL_SERVER_REPLY_MASTER_FAILED_LIMIT
      - name: SASL_SERVER_REPLY_MASTER_FAILED
      - name: SASL_SERVER_REPLY_CONTINUE
      item_type: enum
      name: sasl_server_reply
      pos:
        line_end: 13
        line_start: 6
        source_file: /src/dovecot/src/login-common/sasl-server.h
    - enumerators:
      - name: SASL_SERVER_AUTH_FLAG_PRIVATE
        value: BIT(0)
      - name: SASL_SERVER_AUTH_FLAG_IMPLICIT
        value: BIT(1)
      item_type: enum
      name: sasl_server_auth_flags
      pos:
        line_end: 21
        line_start: 15
        source_file: /src/dovecot/src/login-common/sasl-server.h
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: "sasl_server_callback_t(struct client *client,\n\t\t\t\t    enum sasl_server_reply
        reply,\n\t\t\t\t    const char *data, const char *const *args)"
      pos:
        line_end: 25
        line_start: 23
        source_file: /src/dovecot/src/login-common/sasl-server.h
      type: void
    union: []
- function_names:
  - client_auth_fail_code_lookup
  - client_auth_failed
  - client_auth_waiting_timeout
  - client_set_auth_waiting
  - client_auth_parse_args
  - proxy_free_password
  - client_proxy_append_conn_info
  - client_proxy_finish_destroy_client
  - client_proxy_get_state
  - client_proxy_log_failure
  - client_proxy_failed
  - proxy_input
  - proxy_reset
  - proxy_redirect_reauth_callback
  - proxy_redirect_reauth
  - proxy_try_redirect
  - proxy_redirect
  - client_common_proxy_failed
  - proxy_check_ip_family
  - proxy_check_start
  - login_source_ip_get
  - proxy_start
  - client_auth_result
  - client_auth_handle_reply
  - client_auth_respond
  - client_auth_abort
  - client_auth_fail
  - client_auth_read_line
  - client_auth_parse_response
  - client_auth_input
  - client_auth_send_challenge
  - client_auth_reply_args
  - sasl_callback
  - client_auth_begin_common
  - client_auth_begin
  - client_auth_begin_private
  - client_auth_begin_implicit
  - client_check_plaintext_auth
  - clients_notify_auth_connected
  source_file: /src/dovecot/src/login-common/client-common-auth.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AUTH_WAITING_TIMEOUT_MSECS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/login-common/client-common-auth.c
      type_or_value: (30*1000)
    - item_type: preproc_def
      name: AUTH_WAITING_WARNING_TIMEOUT_MSECS
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/login-common/client-common-auth.c
      type_or_value: (10*1000)
    - item_type: preproc_def
      name: CLIENT_REFERRAL_NOLOGIN_REASON
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/login-common/client-common-auth.c
      type_or_value: '"Try this server instead."'
    structs:
    - fields:
      - name: '*id'
        type: char
      - name: code
        type: enum client_auth_fail_code
      item_type: struct
      name: client_auth_fail_code_id
      pos:
        line_end: 29
        line_start: 26
        source_file: /src/dovecot/src/login-common/client-common-auth.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/login-common/login-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*login_greeting'
        type: char
      - name: '*login_log_format_elements'
        type: char
      - name: '*login_access_sockets'
        type: char
      - name: '*login_proxy_notify_path'
        type: char
      - name: '*login_plugin_dir'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: login_proxy_timeout
        type: unsigned int
      - name: login_proxy_max_reconnects
        type: unsigned int
      - name: login_proxy_max_disconnect_delay
        type: unsigned int
      - name: '*login_proxy_rawlog_dir'
        type: char
      - name: '*login_socket_path'
        type: char
      - name: '*ssl'
        type: char
      - name: auth_ssl_require_client_cert
        type: bool
      - name: auth_ssl_username_from_cert
        type: bool
      - name: auth_allow_cleartext
        type: bool
      - name: auth_verbose
        type: bool
      - name: auth_debug
        type: bool
      - name: auth_debug_passwords
        type: bool
      - name: verbose_proctitle
        type: bool
      - name: mail_max_userip_connections
        type: unsigned int
      - name: '*const *log_format_elements_split'
        type: char
      item_type: struct
      name: login_settings
      pos:
        line_end: 33
        line_start: 3
        source_file: /src/dovecot/src/login-common/login-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/pop3/pop3-settings.h
  types:
    enum:
    - enumerators:
      - name: WORKAROUND_OUTLOOK_NO_NULS
        value: '0x01'
      - name: WORKAROUND_OE_NS_EOH
        value: '0x02'
      item_type: enum
      name: pop3_client_workarounds
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/dovecot/src/pop3/pop3-settings.h
    - enumerators:
      - name: POP3_DELETE_TYPE_EXPUNGE
        value: '0'
      - name: POP3_DELETE_TYPE_FLAG
      item_type: enum
      name: pop3_delete_type
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/pop3/pop3-settings.h
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: verbose_proctitle
        type: bool
      - name: '*rawlog_dir'
        type: char
      - name: pop3_no_flag_updates
        type: bool
      - name: pop3_enable_last
        type: bool
      - name: pop3_reuse_xuidl
        type: bool
      - name: pop3_save_uidl
        type: bool
      - name: pop3_lock_session
        type: bool
      - name: pop3_fast_size_lookups
        type: bool
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*pop3_logout_format'
        type: char
      - name: '*pop3_uidl_duplicates'
        type: char
      - name: '*pop3_deleted_flag'
        type: char
      - name: '*pop3_delete_type'
        type: char
      - name: parsed_workarounds
        type: enum pop3_client_workarounds
      - name: parsed_delete_type
        type: enum pop3_delete_type
      - name: parsed_want_uidl_change
        type: bool
      item_type: struct
      name: pop3_settings
      pos:
        line_end: 37
        line_start: 16
        source_file: /src/dovecot/src/pop3/pop3-settings.h
    typedefs: []
    union: []
- function_names:
  - IS_STANDALONE
  - pop3_client_created_hook_set
  - pop3_refresh_proctitle
  - pop3_die
  - client_add_input
  - client_create_from_input
  - lock_session
  - init_namespaces
  - client_init_session
  - main_stdio_run
  - login_request_finished
  - login_request_failed
  - master_admin_cmd_kick_user
  - client_connected
  - main
  source_file: /src/dovecot/src/pop3/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MSG_BYE_INTERNAL_ERROR
      pos:
        line_end: 184
        line_start: 183
        source_file: /src/dovecot/src/pop3/main.c
      type_or_value: '"-ERR "MAIL_ERRSTR_CRITICAL_MSG'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/pop3/pop3-commands.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: (*func)(struct pop3_command_context *cctx)
        type: int
      item_type: struct
      name: pop3_command
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/pop3/pop3-commands.h
    - fields:
      - name: '*client'
        type: struct client
      - name: '*command'
        type: struct pop3_command
      - name: '*orig_command'
        type: char
      - name: '*orig_args'
        type: char
      - name: '*args'
        type: char
      - name: '*event'
        type: struct event
      - name: stats
        type: "struct {\n\t\tuint64_t bytes_in;\n\t\tuint64_t bytes_out;\n\t}"
      item_type: struct
      name: pop3_command_context
      pos:
        line_end: 22
        line_start: 10
        source_file: /src/dovecot/src/pop3/pop3-commands.h
    typedefs: []
    union: []
- function_names:
  - MSGS_BITMASK_SIZE
  - POP3_CLIENT_OUTPUT_FULL
  source_file: /src/dovecot/src/pop3/pop3-client.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: POP3_OUTBUF_THROTTLE_SIZE
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/pop3/pop3-client.h
      type_or_value: '4096'
    structs:
    - fields:
      - name: (*destroy)(struct client *client, const char *reason)
        type: void
      item_type: struct
      name: pop3_client_vfuncs
      pos:
        line_end: 25
        line_start: 22
        source_file: /src/dovecot/src/pop3/pop3-client.h
    - fields:
      - name: '*prev'
        type: struct client
      - name: '*event'
        type: struct event
      - name: v
        type: struct pop3_client_vfuncs
      - name: fd_in
        type: int
      - name: '*io'
        type: struct io
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      - name: '*to_idle'
        type: struct timeout
      - name: anvil_conn_guid
        type: guid_128_t
      - name: '*cmd'
        type: command_func_t
      - name: '*cmd_context'
        type: void
      - name: pool
        type: pool_t
      - name: '*user'
        type: struct mail_user
      - name: '*inbox_ns'
        type: struct mail_namespace
      - name: '*mailbox'
        type: struct mailbox
      - name: '*trans'
        type: struct mailbox_transaction_context
      - name: '*deleted_kw'
        type: struct mail_keywords
      - name: '*to_session_dotlock_refresh'
        type: struct timeout
      - name: '*session_dotlock'
        type: struct dotlock
      - name: last_input
        type: time_t
      - name: bad_counter
        type: unsigned int
      - name: highest_expunged_fetch_msgnum
        type: unsigned int
      - name: uid_validity
        type: unsigned int
      - name: messages_count
        type: unsigned int
      - name: deleted_count
        type: unsigned int
      - name: total_size
        type: uoff_t
      - name: deleted_size
        type: uoff_t
      - name: last_seen_pop3_msn
        type: uint32_t
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: highest_seq
        type: uint32_t
      - name: '*msgnum_to_seq_map'
        type: uint32_t
      - name: msgnum_to_seq_map_count
        type: uint32_t
      - name: top_bytes
        type: uoff_t
      - name: retr_bytes
        type: uoff_t
      - name: top_count
        type: unsigned int
      - name: retr_count
        type: unsigned int
      - name: '**message_uidls'
        type: char
      - name: '*message_sizes'
        type: uoff_t
      - name: '*deleted_bitmask'
        type: unsigned char
      - name: '*seen_bitmask'
        type: unsigned char
      - name: '*set'
        type: struct pop3_settings
      - name: '*mail_set'
        type: struct mail_storage_settings
      - name: uidl_pool
        type: pool_t
      - name: uidl_keymask
        type: enum uidl_keys
      - name: destroyed
        type: bool
      - name: disconnected
        type: bool
      - name: deleted
        type: bool
      - name: waiting_input
        type: bool
      - name: anvil_sent
        type: bool
      - name: message_uidls_save
        type: bool
      - name: delete_success
        type: bool
      - name: quit_seen
        type: bool
      item_type: struct
      name: client
      pos:
        line_end: 107
        line_start: 33
        source_file: /src/dovecot/src/pop3/pop3-client.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: pop3_module_register
      pos:
        line_end: 111
        line_start: 109
        source_file: /src/dovecot/src/pop3/pop3-client.h
    typedefs:
    - item_type: typedef
      name: command_func_t(struct client *client)
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/dovecot/src/pop3/pop3-client.h
      type: void
    union:
    - fields:
      - name: super
        type: struct pop3_client_vfuncs
      - name: '*reg'
        type: struct pop3_module_register
      item_type: union
      name: pop3_module_context
      pos:
        line_end: 116
        line_start: 113
        source_file: /src/dovecot/src/pop3/pop3-client.h
- function_names:
  - msgnum_to_seq
  - get_msgnum
  - get_size
  - cmd_capa
  - cmd_dele
  - cmd_list_callback
  - cmd_list
  - cmd_last
  - cmd_noop
  - pop3_search_build_seqset
  - pop3_search_build
  - client_verify_ordering
  - client_expunge
  - client_update_mails
  - cmd_quit
  - fetch_deinit
  - fetch_callback
  - client_reply_msg_expunged
  - fetch
  - cmd_retr
  - cmd_rset
  - cmd_stat
  - cmd_top
  - pop3_get_uid
  - list_uidls_saved_iter
  - list_uids_iter
  - cmd_uidl_callback
  - uidl_rename_duplicate
  - client_uidls_save
  - cmd_uidl_init
  - cmd_uidl
  - pop3_command_find
  - client_command_execute
  source_file: /src/dovecot/src/pop3/pop3-commands.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: msgnum
        type: unsigned int
      item_type: struct
      name: cmd_list_context
      pos:
        line_end: 122
        line_start: 120
        source_file: /src/dovecot/src/pop3/pop3-commands.c
    - fields:
      - name: '*mail'
        type: struct mail
      - name: '*stream'
        type: struct istream
      - name: body_lines
        type: uoff_t
      - name: '*byte_counter'
        type: uoff_t
      - name: byte_counter_offset
        type: uoff_t
      - name: last
        type: unsigned char
      - name: cr_skipped
        type: bool
      item_type: struct
      name: fetch_context
      pos:
        line_end: 350
        line_start: 340
        source_file: /src/dovecot/src/pop3/pop3-commands.c
    - fields:
      - name: '*search_ctx'
        type: struct mail_search_context
      - name: '*mail'
        type: struct mail
      - name: msgnum
        type: uint32_t
      - name: list_all
        type: bool
      item_type: struct
      name: cmd_uidl_context
      pos:
        line_end: 597
        line_start: 592
        source_file: /src/dovecot/src/pop3/pop3-commands.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - pop3_settings_parse_workarounds
  - pop3_settings_verify
  source_file: /src/dovecot/src/pop3/pop3-settings.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: num
        type: enum pop3_client_workarounds
      item_type: struct
      name: pop3_client_workaround_list
      pos:
        line_end: 125
        line_start: 122
        source_file: /src/dovecot/src/pop3/pop3-settings.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/pop3/pop3-common.h
  types:
    enum:
    - enumerators:
      - name: UIDL_UIDVALIDITY
        value: '0x01'
      - name: UIDL_MD5
        value: '0x04'
      - name: UIDL_UID
        value: '0x02'
      - name: UIDL_FILE_NAME
        value: '0x08'
      - name: UIDL_GUID
        value: '0x10'
      item_type: enum
      name: uidl_keys
      pos:
        line_end: 9
        line_start: 3
        source_file: /src/dovecot/src/pop3/pop3-common.h
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: pop3_client_created_func_t(struct client **client)
      pos:
        line_end: 15
        line_start: 15
        source_file: /src/dovecot/src/pop3/pop3-common.h
      type: void
    union: []
- function_names:
  - client_commit_timeout
  - client_idle_timeout
  - pop3_mail_get_size
  - msgnum_to_seq_map_add
  - read_mailbox
  - init_pop3_deleted_flag
  - init_mailbox
  - parse_uidl_keymask
  - pop3_lock_session_refresh
  - pop3_lock_session
  - client_create
  - client_create_finish
  - client_init_mailbox
  - client_build_uidl_change_string
  - client_stats
  - client_destroy
  - client_default_destroy
  - client_destroy_timeout
  - client_disconnect
  - client_send_line
  - client_send_storage_error
  - pop3_cmd_event_finished
  - client_handle_input
  - client_input
  - client_output
  - client_kick
  - clients_destroy_all
  source_file: /src/dovecot/src/pop3/pop3-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: POP3_RFC_MAX_LINE_LEN
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/pop3/pop3-client.c
      type_or_value: '512'
    - item_type: preproc_def
      name: MAX_INBUF_SIZE
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/pop3/pop3-client.c
      type_or_value: (POP3_RFC_MAX_LINE_LEN*4)
    - item_type: preproc_def
      name: CLIENT_MAX_BAD_COMMANDS
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dovecot/src/pop3/pop3-client.c
      type_or_value: '20'
    - item_type: preproc_def
      name: CLIENT_IDLE_TIMEOUT_MSECS
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/pop3/pop3-client.c
      type_or_value: (10*60*1000)
    - item_type: preproc_def
      name: CLIENT_COMMIT_TIMEOUT_MSECS
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dovecot/src/pop3/pop3-client.c
      type_or_value: (10*1000)
    - item_type: preproc_def
      name: POP3_LOCK_FNAME
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dovecot/src/pop3/pop3-client.c
      type_or_value: '"dovecot-pop3-session.lock"'
    - item_type: preproc_def
      name: POP3_SESSION_DOTLOCK_STALE_TIMEOUT_SECS
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dovecot/src/pop3/pop3-client.c
      type_or_value: (60*5)
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_server_connection_refused
  - test_client_connection_refused
  - test_connection_refused
  - test_connection_timed_out_input
  - test_server_connection_timed_out
  - test_client_connection_timed_out
  - test_connection_timed_out
  - test_bad_version_input
  - test_bad_version_init
  - test_server_bad_version
  - test_client_bad_version
  - test_bad_version
  - test_disconnect_version_input
  - test_disconnect_version_init
  - test_server_disconnect_version
  - test_client_disconnect_version
  - test_disconnect_version
  - test_auth_handshake_auth_plain
  - test_auth_handshake_auth_login
  - test_auth_handshake_cont_login
  - test_auth_handshake_auth
  - test_auth_handshake_cont
  - test_auth_handshake_input
  - test_auth_handshake_init
  - test_server_auth_handshake
  - test_client_auth_plain_disconnect
  - test_client_auth_plain_reconnect
  - test_client_auth_plain_failure
  - test_client_auth_plain_success
  - test_client_auth_login_failure1
  - test_client_auth_login_failure2
  - test_client_auth_login_success
  - test_client_auth_plain_parallel_failure
  - test_client_auth_plain_parallel_success
  - test_client_auth_login_parallel_failure1
  - test_client_auth_login_parallel_failure2
  - test_client_auth_login_parallel_success
  - test_auth_handshake
  - test_client_deinit
  - test_client_auth_callback
  - test_client_auth_connected
  - test_client_progress_timeout
  - test_client_auth_run
  - test_client_auth_parallel
  - test_client_auth_simple
  - server_connection_input
  - server_connection_init
  - server_connection_deinit
  - server_connection_destroy
  - server_connection_accept
  - test_server_run
  - test_open_server_fd
  - test_run_server
  - test_run_client
  - test_run_client_server
  - main_cleanup
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
  types:
    enum:
    - enumerators:
      - name: AUTH_HANDSHAKE_STATE_VERSION
        value: '0'
      - name: AUTH_HANDSHAKE_STATE_CMD
      item_type: enum
      name: _auth_handshake_state
      pos:
        line_end: 297
        line_start: 294
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
    preproc_defs:
    - item_type: preproc_def
      name: TEST_SOCKET
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
      type_or_value: '"./auth-client-test"'
    - item_type: preproc_def
      name: CLIENT_PROGRESS_TIMEOUT
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
      type_or_value: '30'
    - item_type: preproc_def
      name: SERVER_KILL_TIMEOUT_SECS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
      type_or_value: '20'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*context'
        type: void
      - name: pool
        type: pool_t
      item_type: struct
      name: server_connection
      pos:
        line_end: 41
        line_start: 35
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
    - fields:
      - name: '*prev'
        type: struct _auth_handshake_request
      - name: id
        type: unsigned int
      - name: '*username'
        type: char
      - name: login_state
        type: unsigned int
      item_type: struct
      name: _auth_handshake_request
      pos:
        line_end: 306
        line_start: 299
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
    - fields:
      - name: state
        type: enum _auth_handshake_state
      - name: '*requests'
        type: struct _auth_handshake_request
      item_type: struct
      name: _auth_handshake_server
      pos:
        line_end: 312
        line_start: 308
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
    - fields:
      - name: '*test'
        type: struct login_test
      - name: state
        type: unsigned int
      item_type: struct
      name: login_request
      pos:
        line_end: 852
        line_start: 848
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
    - fields:
      - name: '*error'
        type: char
      - name: status
        type: int
      - name: '*username'
        type: char
      - name: '*password'
        type: char
      - name: requests_pending
        type: unsigned int
      - name: '*ioloop'
        type: struct ioloop
      item_type: struct
      name: login_test
      pos:
        line_end: 864
        line_start: 854
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
    typedefs:
    - item_type: typedef
      name: test_server_init_t(void)
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
      type: void
    - item_type: typedef
      name: test_client_init_t(void)
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/dovecot/src/lib-auth-client/test-auth-client.c
      type: bool
    union: []
- function_names:
  - maybe_strdup
  - auth_proxy_settings_parse
  - auth_proxy_parse_redirect
  source_file: /src/dovecot/src/lib-auth-client/auth-proxy.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - auth_master_request_invalid
  source_file: /src/dovecot/src/lib-auth-client/auth-master-private.h
  types:
    enum:
    - enumerators:
      - name: AUTH_MASTER_REQUEST_STATE_SUBMITTED
        value: '0'
      - name: AUTH_MASTER_REQUEST_STATE_REPLIED_MORE
      - name: AUTH_MASTER_REQUEST_STATE_SENT
      - name: AUTH_MASTER_REQUEST_STATE_REPLIED
      - name: AUTH_MASTER_REQUEST_STATE_FINISHED
      - name: AUTH_MASTER_REQUEST_STATE_ABORTED
      item_type: enum
      name: auth_master_request_state
      pos:
        line_end: 21
        line_start: 14
        source_file: /src/dovecot/src/lib-auth-client/auth-master-private.h
    preproc_defs:
    - item_type: preproc_def
      name: AUTH_MASTER_IDLE_SECS
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-auth-client/auth-master-private.h
      type_or_value: '60'
    - item_type: preproc_def
      name: MAX_INBUF_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-auth-client/auth-master-private.h
      type_or_value: '8192'
    - item_type: preproc_def
      name: MAX_OUTBUF_SIZE
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-auth-client/auth-master-private.h
      type_or_value: '1024'
    structs:
    - fields:
      - name: '*callback'
        type: auth_master_request_destroy_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: auth_master_request_destroy_callback
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-auth-client/auth-master-private.h
    - fields:
      - name: refcount
        type: int
      - name: pool
        type: pool_t
      - name: '*event'
        type: struct event
      - name: '*conn'
        type: struct auth_master_connection
      - name: '*prev'
        type: struct auth_master_request
      - name: '*cmd'
        type: char
      - name: '*args'
        type: unsigned char
      - name: args_size
        type: size_t
      - name: id
        type: unsigned int
      - name: create_stamp
        type: struct timeval
      - name: state
        type: enum auth_master_request_state
      - name: '*callback'
        type: auth_master_request_callback_t
      - name: '*context'
        type: void
      - name: sent
        type: bool
      - name: invalid
        type: bool
      - name: aborted
        type: bool
      - name: removed
        type: bool
      - name: in_callback
        type: bool
      item_type: struct
      name: auth_master_request
      pos:
        line_end: 55
        line_start: 28
        source_file: /src/dovecot/src/lib-auth-client/auth-master-private.h
    - fields:
      - name: conn
        type: struct connection
      - name: '*clist'
        type: struct connection_list
      - name: refcount
        type: int
      - name: pool
        type: pool_t
      - name: '*auth_socket_path'
        type: char
      - name: flags
        type: enum auth_master_flags
      - name: '*to_connect'
        type: struct timeout
      - name: '*ioloop'
        type: struct ioloop
      - name: id_counter
        type: unsigned int
      - name: '*requests_head'
        type: struct auth_master_request
      - name: '*requests_unsent'
        type: struct auth_master_request
      - name: requests_count
        type: unsigned int
      - name: timeout_msecs
        type: unsigned int
      - name: auth_server_pid
        type: pid_t
      - name: in_timeout
        type: bool
      - name: connected
        type: bool
      - name: sent_handshake
        type: bool
      - name: waiting
        type: bool
      item_type: struct
      name: auth_master_connection
      pos:
        line_end: 83
        line_start: 57
        source_file: /src/dovecot/src/lib-auth-client/auth-master-private.h
    typedefs: []
    union: []
- function_names:
  - auth_master_request_update_event
  - auth_master_request_get_timeout_msecs
  - auth_master_request_remove
  - auth_master_request_ref
  - auth_master_request_unref
  - auth_master_request_set_event
  - auth_master_request_callback
  - auth_master_request_got_reply
  - auth_master_request_abort
  - auth_master_request_fail
  - auth_master_request_abort_invalid
  - auth_master_request_send
  - auth_master_request_new
  - auth_master_request
  - auth_master_request_invalid
  - auth_master_request_stop
  - auth_master_request_wait
  - auth_master_request_count
  - auth_master_request_add_destroy_callback
  - auth_master_request_remove_destroy_callback
  source_file: /src/dovecot/src/lib-auth-client/auth-master-request.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - auth_master_request
  - auth_master_request_add_destroy_callback
  - auth_master_pass_lookup_async
  - auth_master_user_lookup_async
  source_file: /src/dovecot/src/lib-auth-client/auth-master.h
  types:
    enum:
    - enumerators:
      - name: AUTH_MASTER_FLAG_DEBUG
        value: '0x01'
      - name: AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT
        value: '0x02'
      item_type: enum
      name: auth_master_flags
      pos:
        line_end: 15
        line_start: 10
        source_file: /src/dovecot/src/lib-auth-client/auth-master.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*reply'
        type: char
      - name: '*const *args'
        type: char
      - name: '*errormsg'
        type: char
      item_type: struct
      name: auth_master_reply
      pos:
        line_end: 26
        line_start: 21
        source_file: /src/dovecot/src/lib-auth-client/auth-master.h
    - fields:
      - name: '*protocol'
        type: char
      - name: '*session_id'
        type: char
      - name: '*local_name'
        type: char
      - name: local_ip
        type: struct ip_addr
      - name: local_port
        type: in_port_t
      - name: '*const *forward_fields'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: debug
        type: bool
      item_type: struct
      name: auth_user_info
      pos:
        line_end: 104
        line_start: 95
        source_file: /src/dovecot/src/lib-auth-client/auth-master.h
    - fields:
      - name: uid
        type: uid_t
      - name: gid
        type: gid_t
      - name: '*home'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: anonymous
        type: bool
      item_type: struct
      name: auth_user_reply
      pos:
        line_end: 142
        line_start: 136
        source_file: /src/dovecot/src/lib-auth-client/auth-master.h
    typedefs:
    - item_type: typedef
      name: auth_master_request_destroy_callback_t(void *context)
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/lib-auth-client/auth-master.h
      type: void
    - item_type: typedef
      name: "auth_master_request_callback_t(const struct auth_master_reply *reply,\n\t\t\t
        \      void *context)"
      pos:
        line_end: 34
        line_start: 32
        source_file: /src/dovecot/src/lib-auth-client/auth-master.h
      type: int
    - item_type: typedef
      name: "auth_master_pass_lookup_callback_t(void *context, int result,\n\t\t\t\t
        \  const char *const *fields)"
      pos:
        line_end: 112
        line_start: 110
        source_file: /src/dovecot/src/lib-auth-client/auth-master.h
      type: void
    - item_type: typedef
      name: "auth_master_user_lookup_callback_t(void *context, int result,\n\t\t\t\t
        \  const char *username,\n\t\t\t\t   const char *const *fields)"
      pos:
        line_end: 147
        line_start: 144
        source_file: /src/dovecot/src/lib-auth-client/auth-master.h
      type: void
    union: []
- function_names:
  - test_auth_user_info_export
  - test_server_connection_refused
  - test_client_connection_refused
  - test_connection_refused
  - test_connection_timed_out_input
  - test_server_connection_timed_out
  - test_client_connection_timed_out
  - test_connection_timed_out
  - test_bad_version_input
  - test_bad_version_init
  - test_server_bad_version
  - test_client_bad_version
  - test_bad_version
  - test_disconnect_version_input
  - test_disconnect_version_init
  - test_server_disconnect_version
  - test_client_disconnect_version
  - test_disconnect_version
  - test_passdb_fail_input
  - test_passdb_fail_init
  - test_server_passdb_fail
  - test_client_passdb_fail
  - test_client_passdb_notfound
  - test_client_passdb_timeout
  - test_client_passdb_disconnect
  - test_client_passdb_reconnect
  - test_passdb_fail
  - test_userdb_fail_input
  - test_userdb_fail_init
  - test_server_userdb_fail
  - test_client_userdb_fail
  - test_client_userdb_notfound
  - test_client_userdb_timeout
  - test_client_userdb_disconnect
  - test_client_userdb_reconnect
  - test_userdb_fail
  - test_user_list_fail_input
  - test_user_list_fail_init
  - test_server_user_list_fail
  - test_client_user_list_fail
  - test_user_list_fail
  - test_passdb_lookup_input
  - test_passdb_lookup_init
  - test_server_passdb_lookup
  - test_client_passdb_lookup
  - test_passdb_lookup
  - test_userdb_lookup_input
  - test_userdb_lookup_init
  - test_server_userdb_lookup
  - test_client_userdb_lookup
  - test_userdb_lookup
  - test_user_list_input
  - test_user_list_init
  - test_server_user_list
  - test_client_user_list
  - test_user_list
  - test_client_deinit
  - test_client_passdb_lookup_simple
  - test_client_passdb_lookup_callback
  - test_client_passdb_lookup_simple_async
  - test_client_passdb_parallel_callback
  - test_client_passdb_lookup_parallel
  - test_client_userdb_lookup_simple
  - test_client_userdb_lookup_callback
  - test_client_userdb_lookup_simple_async
  - test_client_userdb_parallel_callback
  - test_client_userdb_lookup_parallel
  - test_client_user_list_simple
  - server_connection_input
  - server_connection_init
  - server_connection_deinit
  - server_connection_destroy
  - server_connection_accept
  - test_server_run
  - test_open_server_fd
  - test_run_server
  - test_run_client
  - test_run_client_server
  - main_cleanup
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
  types:
    enum:
    - enumerators:
      - name: PASSDB_FAIL_STATE_VERSION
        value: '0'
      - name: PASSDB_FAIL_STATE_PASS
      item_type: enum
      name: _passdb_fail_state
      pos:
        line_end: 374
        line_start: 371
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - enumerators:
      - name: USERDB_FAIL_STATE_VERSION
        value: '0'
      - name: USERDB_FAIL_STATE_USER
      item_type: enum
      name: _userdb_fail_state
      pos:
        line_end: 593
        line_start: 590
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - enumerators:
      - name: USER_LIST_FAIL_STATE_VERSION
        value: '0'
      - name: USER_LIST_FAIL_STATE_USER
      item_type: enum
      name: _user_list_fail_state
      pos:
        line_end: 811
        line_start: 808
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - enumerators:
      - name: PASSDB_LOOKUP_STATE_VERSION
        value: '0'
      - name: PASSDB_LOOKUP_STATE_PASS
      item_type: enum
      name: _passdb_lookup_state
      pos:
        line_end: 909
        line_start: 906
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - enumerators:
      - name: USERDB_LOOKUP_STATE_VERSION
        value: '0'
      - name: USERDB_LOOKUP_STATE_PASS
      item_type: enum
      name: _userdb_lookup_state
      pos:
        line_end: 1013
        line_start: 1010
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - enumerators:
      - name: USER_LIST_STATE_VERSION
        value: '0'
      - name: USER_LIST_STATE_USER
      item_type: enum
      name: _user_list_state
      pos:
        line_end: 1119
        line_start: 1116
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    preproc_defs:
    - item_type: preproc_def
      name: TEST_SOCKET
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
      type_or_value: '"./auth-master-test"'
    - item_type: preproc_def
      name: SERVER_KILL_TIMEOUT_SECS
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
      type_or_value: '20'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*context'
        type: void
      - name: pool
        type: pool_t
      item_type: struct
      name: server_connection
      pos:
        line_end: 39
        line_start: 33
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: state
        type: enum _passdb_fail_state
      - name: not_found
        type: bool
      item_type: struct
      name: _passdb_fail_server
      pos:
        line_end: 380
        line_start: 376
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: state
        type: enum _userdb_fail_state
      - name: not_found
        type: bool
      item_type: struct
      name: _userdb_fail_server
      pos:
        line_end: 599
        line_start: 595
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: state
        type: enum _user_list_fail_state
      item_type: struct
      name: _user_list_fail_server
      pos:
        line_end: 815
        line_start: 813
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: state
        type: enum _passdb_lookup_state
      item_type: struct
      name: _passdb_lookup_server
      pos:
        line_end: 913
        line_start: 911
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: state
        type: enum _userdb_lookup_state
      item_type: struct
      name: _userdb_lookup_server
      pos:
        line_end: 1017
        line_start: 1015
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: state
        type: enum _user_list_state
      item_type: struct
      name: _user_list_server
      pos:
        line_end: 1123
        line_start: 1121
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*ioloop'
        type: struct ioloop
      - name: '*auth_conn'
        type: struct auth_master_connection
      - name: '*username'
        type: char
      - name: '*info'
        type: struct auth_user_info
      - name: result
        type: int
      - name: '*const *fields'
        type: char
      - name: retry
        type: bool
      - name: retried
        type: bool
      item_type: struct
      name: _passdb_lookup_context
      pos:
        line_end: 1290
        line_start: 1277
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*ioloop'
        type: struct ioloop
      - name: '*auth_conn'
        type: struct auth_master_connection
      - name: '*info'
        type: struct auth_user_info
      - name: pending
        type: unsigned int
      - name: retry
        type: bool
      item_type: struct
      name: _passdb_parallel_context
      pos:
        line_end: 1359
        line_start: 1349
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: '*ctx'
        type: struct _passdb_parallel_context
      - name: '*username'
        type: char
      - name: '*info'
        type: struct auth_user_info
      - name: result
        type: int
      - name: '*const *fields'
        type: char
      - name: retried
        type: bool
      item_type: struct
      name: _passdb_parallel_user_context
      pos:
        line_end: 1371
        line_start: 1361
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*ioloop'
        type: struct ioloop
      - name: '*auth_conn'
        type: struct auth_master_connection
      - name: '*username'
        type: char
      - name: '*info'
        type: struct auth_user_info
      - name: result
        type: int
      - name: '*username_out'
        type: char
      - name: '*const *fields'
        type: char
      - name: retry
        type: bool
      - name: retried
        type: bool
      item_type: struct
      name: _userdb_lookup_context
      pos:
        line_end: 1512
        line_start: 1498
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*ioloop'
        type: struct ioloop
      - name: '*auth_conn'
        type: struct auth_master_connection
      - name: '*info'
        type: struct auth_user_info
      - name: pending
        type: unsigned int
      - name: retry
        type: bool
      item_type: struct
      name: _userdb_parallel_context
      pos:
        line_end: 1583
        line_start: 1573
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    - fields:
      - name: '*ctx'
        type: struct _userdb_parallel_context
      - name: '*username'
        type: char
      - name: '*info'
        type: struct auth_user_info
      - name: result
        type: int
      - name: '*username_out'
        type: char
      - name: '*const *fields'
        type: char
      - name: retried
        type: bool
      item_type: struct
      name: _userdb_parallel_user_context
      pos:
        line_end: 1596
        line_start: 1585
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
    typedefs:
    - item_type: typedef
      name: test_server_init_t(void)
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
      type: void
    - item_type: typedef
      name: test_client_init_t(void)
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/dovecot/src/lib-auth-client/test-auth-master.c
      type: bool
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-auth-client/auth-client.h
  types:
    enum:
    - enumerators:
      - name: AUTH_REQUEST_FLAG_CONN_SECURED
        value: '0x01'
      - name: AUTH_REQUEST_FLAG_VALID_CLIENT_CERT
        value: '0x02'
      - name: AUTH_REQUEST_FLAG_SUPPORT_FINAL_RESP
        value: '0x08'
      - name: AUTH_REQUEST_FLAG_DEBUG
        value: '0x10'
      - name: AUTH_REQUEST_FLAG_NO_PENALTY
        value: '0x04'
      - name: AUTH_REQUEST_FLAG_CONN_SECURED_TLS
        value: '0x20'
      item_type: enum
      name: auth_request_flags
      pos:
        line_end: 25
        line_start: 9
        source_file: /src/dovecot/src/lib-auth-client/auth-client.h
    - enumerators:
      - name: AUTH_REQUEST_STATUS_ABORT
        value: '-3'
      - name: AUTH_REQUEST_STATUS_INTERNAL_FAIL
        value: '-2'
      - name: AUTH_REQUEST_STATUS_FAIL
        value: '-1'
      - name: AUTH_REQUEST_STATUS_CONTINUE
      - name: AUTH_REQUEST_STATUS_OK
      item_type: enum
      name: auth_request_status
      pos:
        line_end: 33
        line_start: 27
        source_file: /src/dovecot/src/lib-auth-client/auth-client.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: flags
        type: enum sasl_mech_security_flags
      item_type: struct
      name: auth_mech_desc
      pos:
        line_end: 38
        line_start: 35
        source_file: /src/dovecot/src/lib-auth-client/auth-client.h
    - fields:
      - name: server_pid
        type: unsigned int
      - name: connect_uid
        type: unsigned int
      item_type: struct
      name: auth_connect_id
      pos:
        line_end: 43
        line_start: 40
        source_file: /src/dovecot/src/lib-auth-client/auth-client.h
    - fields:
      - name: '*mech'
        type: char
      - name: '*protocol'
        type: char
      - name: '*session_id'
        type: char
      - name: '*cert_username'
        type: char
      - name: '*local_name'
        type: char
      - name: '*client_id'
        type: char
      - name: '*const *forward_fields'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: ssl_cipher_bits
        type: unsigned int
      - name: '*ssl_cipher'
        type: char
      - name: '*ssl_pfs'
        type: char
      - name: '*ssl_protocol'
        type: char
      - name: '*ssl_ja3_hash'
        type: char
      - name: '*ssl_client_cert_fp'
        type: char
      - name: '*ssl_client_cert_pubkey_fp'
        type: char
      - name: flags
        type: enum auth_request_flags
      - name: local_ip
        type: struct ip_addr
      - name: local_port
        type: in_port_t
      - name: '*initial_resp_base64'
        type: char
      item_type: struct
      name: auth_request_info
      pos:
        line_end: 69
        line_start: 45
        source_file: /src/dovecot/src/lib-auth-client/auth-client.h
    typedefs:
    - item_type: typedef
      name: "auth_request_callback_t(struct auth_client_request *request,\n\t\t\t\t
        \    enum auth_request_status status,\n\t\t\t\t     const char *data_base64,\n\t\t\t\t
        \    const char *const *args, void *context)"
      pos:
        line_end: 74
        line_start: 71
        source_file: /src/dovecot/src/lib-auth-client/auth-client.h
      type: void
    - item_type: typedef
      name: "auth_channel_binding_callback_t(const char *type, void *context,\n\t\t\t\t\t
        \   const buffer_t **data_r,\n\t\t\t\t\t    const char **error_r)"
      pos:
        line_end: 78
        line_start: 76
        source_file: /src/dovecot/src/lib-auth-client/auth-client.h
      type: int
    - item_type: typedef
      name: "auth_connect_notify_callback_t(struct auth_client *client,\n\t\t\t\t\t
        \   bool connected, void *context)"
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/dovecot/src/lib-auth-client/auth-client.h
      type: void
    union: []
- function_names:
  - auth_client_init
  - auth_client_deinit
  - auth_client_connect
  - auth_client_disconnect
  - auth_client_is_connected
  - auth_client_is_disconnected
  - auth_client_set_connect_timeout
  - auth_client_set_connect_notify
  - auth_client_get_available_mechs
  - auth_client_find_mech
  - auth_client_get_connect_id
  source_file: /src/dovecot/src/lib-auth-client/auth-client.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-auth-client/auth-sasl-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AUTH_SASL_MECH_NAME_APOP
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-auth-client/auth-sasl-common.h
      type_or_value: '"APOP"'
    - item_type: preproc_def
      name: AUTH_SASL_MECH_NAME_DOVECOT_TOKEN
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-auth-client/auth-sasl-common.h
      type_or_value: '"DOVECOT-TOKEN"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-auth-client/auth-proxy.h
  types:
    enum:
    - enumerators:
      - name: AUTH_PROXY_SSL_FLAG_YES
        value: BIT(0)
      - name: AUTH_PROXY_SSL_FLAG_STARTTLS
        value: BIT(1)
      - name: AUTH_PROXY_SSL_FLAG_ANY_CERT
        value: BIT(2)
      item_type: enum
      name: auth_proxy_ssl_flags
      pos:
        line_end: 12
        line_start: 5
        source_file: /src/dovecot/src/lib-auth-client/auth-proxy.h
    preproc_defs: []
    structs:
    - fields:
      - name: proxy
        type: bool
      - name: '*host'
        type: char
      - name: host_ip
        type: struct ip_addr
      - name: port
        type: in_port_t
      - name: ssl_flags
        type: enum auth_proxy_ssl_flags
      - name: source_ip
        type: struct ip_addr
      - name: '*username'
        type: char
      - name: '*master_user'
        type: char
      - name: '*password'
        type: char
      - name: '*sasl_mechanism'
        type: char
      - name: timeout_msecs
        type: unsigned int
      - name: nopipelining
        type: bool
      - name: noauth
        type: bool
      - name: remote_not_trusted
        type: bool
      - name: redirect_reauth
        type: bool
      item_type: struct
      name: auth_proxy_settings
      pos:
        line_end: 52
        line_start: 14
        source_file: /src/dovecot/src/lib-auth-client/auth-proxy.h
    typedefs: []
    union: []
- function_names:
  - auth_client_connection_list_init
  - auth_server_input_mech
  - auth_server_input_spid
  - auth_server_input_cuid
  - auth_server_input_cookie
  - auth_server_input_done
  - auth_client_connection_handshake_line
  - auth_client_connection_handshake_ready
  - auth_server_lookup_request
  - auth_server_input_ok
  - auth_server_input_cont
  - auth_server_input_fail
  - auth_client_connection_handle_line
  - auth_client_connection_input_line
  - auth_client_connection_init
  - auth_client_connection_remove_requests
  - auth_client_connection_disconnect
  - auth_client_connection_destroy
  - auth_server_reconnect_timeout
  - auth_client_connection_reconnect
  - auth_client_connection_deinit
  - auth_client_handshake_timeout
  - auth_client_connection_connected
  - auth_client_connection_connect
  - auth_client_connection_add_request
  - auth_client_connection_remove_request
  source_file: /src/dovecot/src/lib-auth-client/auth-client-connection.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AUTH_SERVER_CONN_MAX_LINE_LENGTH
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-auth-client/auth-client-connection.c
      type_or_value: AUTH_CLIENT_MAX_LINE_LENGTH
    - item_type: preproc_def
      name: AUTH_SERVER_RECONNECT_TIMEOUT_SECS
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-auth-client/auth-client-connection.c
      type_or_value: '5'
    structs: []
    typedefs: []
    union: []
- function_names:
  - auth_master_init
  - auth_master_connection_failure
  - auth_master_connection_abort_requests
  - auth_master_disconnect
  - auth_master_ref
  - auth_master_unref
  - auth_master_deinit
  - auth_master_set_timeout
  - auth_master_get_socket_path
  - auth_master_destroy
  - auth_master_connection_timeout
  - auth_master_connection_update_timeout
  - auth_master_connection_start_timeout
  - auth_master_handshake_line
  - auth_master_handle_input
  - auth_master_input_args
  - auth_master_handle_output_error
  - auth_master_connection_output
  - auth_master_input_line
  - auth_master_connected
  - auth_master_connect_timeout
  - auth_master_delayed_connect_failure
  - auth_master_connect
  - auth_master_handle_requests
  - auth_master_abort_invalid_requests
  - auth_master_handle_invalid_requests
  - auth_master_switch_ioloop_to
  - auth_master_switch_ioloop
  - auth_master_idle_timeout
  - auth_master_check_idle
  - auth_master_stop_idle
  - auth_master_stop
  - auth_master_wait
  - is_valid_string
  - args_hide_passwords
  - auth_user_info_export
  - auth_master_user_event_create
  - parse_reply
  - auth_lookup_reply_callback
  - auth_master_pass_lookup_callback
  - auth_master_pass_lookup
  - auth_master_pass_lookup_destroyed
  - auth_master_pass_lookup_finished
  - auth_master_pass_lookup_async
  - auth_master_user_lookup_callback
  - auth_master_user_lookup
  - auth_master_user_lookup_destroyed
  - auth_master_user_lookup_finished
  - auth_master_user_lookup_async
  - auth_user_fields_parse
  - auth_user_list_reply_callback
  - auth_master_user_list_init
  - auth_master_user_do_list_next
  - auth_master_user_list_next
  - auth_master_user_list_deinit
  - auth_cache_flush_reply_callback
  - auth_master_cache_flush
  source_file: /src/dovecot/src/lib-auth-client/auth-master.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*req'
        type: struct auth_master_request
      - name: '*event'
        type: struct event
      - name: '*user'
        type: char
      - name: '*expected_reply'
        type: char
      - name: "(*finished)(struct auth_master_lookup *lookup,\n\t\t\t int result,
          const char *const *fields)"
        type: void
      item_type: struct
      name: auth_master_lookup
      pos:
        line_end: 675
        line_start: 666
        source_file: /src/dovecot/src/lib-auth-client/auth-master.c
    - fields:
      - name: lookup
        type: struct auth_master_lookup
      - name: '*callback'
        type: auth_master_pass_lookup_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: auth_master_pass_lookup
      pos:
        line_end: 915
        line_start: 910
        source_file: /src/dovecot/src/lib-auth-client/auth-master.c
    - fields:
      - name: pool
        type: pool_t
      - name: result
        type: int
      - name: '*const *fields'
        type: char
      item_type: struct
      name: auth_master_pass_lookup_ctx
      pos:
        line_end: 922
        line_start: 917
        source_file: /src/dovecot/src/lib-auth-client/auth-master.c
    - fields:
      - name: lookup
        type: struct auth_master_lookup
      - name: '*callback'
        type: auth_master_user_lookup_callback_t
      - name: '*context'
        type: void
      item_type: struct
      name: auth_master_user_lookup
      pos:
        line_end: 1066
        line_start: 1061
        source_file: /src/dovecot/src/lib-auth-client/auth-master.c
    - fields:
      - name: pool
        type: pool_t
      - name: result
        type: int
      - name: '*username'
        type: char
      - name: '*const *fields'
        type: char
      item_type: struct
      name: auth_master_user_lookup_ctx
      pos:
        line_end: 1074
        line_start: 1068
        source_file: /src/dovecot/src/lib-auth-client/auth-master.c
    - fields:
      - name: '*conn'
        type: struct auth_master_connection
      - name: '*event'
        type: struct event
      - name: '*req'
        type: struct auth_master_request
      - name: '*username'
        type: string_t
      - name: finished
        type: bool
      - name: failed
        type: bool
      item_type: struct
      name: auth_master_user_list_ctx
      pos:
        line_end: 1267
        line_start: 1260
        source_file: /src/dovecot/src/lib-auth-client/auth-master.c
    - fields:
      - name: '*conn'
        type: struct auth_master_connection
      - name: '*event'
        type: struct event
      - name: count
        type: unsigned int
      - name: failed
        type: bool
      item_type: struct
      name: auth_master_cache_ctx
      pos:
        line_end: 1436
        line_start: 1431
        source_file: /src/dovecot/src/lib-auth-client/auth-master.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-auth-client/auth-client-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AUTH_CONNECT_TIMEOUT_MSECS
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-auth-client/auth-client-private.h
      type_or_value: (30*1000)
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: flags
        type: enum auth_request_flags
      - name: '*event'
        type: struct event
      - name: '*conn'
        type: struct auth_client_connection
      - name: '*to_fail'
        type: struct timeout
      - name: id
        type: unsigned int
      - name: created
        type: time_t
      - name: final_status
        type: enum auth_request_status
      - name: '*const *final_args'
        type: char
      - name: '*cbinding_data'
        type: buffer_t
      - name: '*cbinding_callback'
        type: auth_channel_binding_callback_t
      - name: '*cbinding_context'
        type: void
      - name: '*callback'
        type: auth_request_callback_t
      - name: '*context'
        type: void
      - name: server_finished
        type: bool
      - name: removed
        type: bool
      item_type: struct
      name: auth_client_request
      pos:
        line_end: 31
        line_start: 9
        source_file: /src/dovecot/src/lib-auth-client/auth-client-private.h
    - fields:
      - name: conn
        type: struct connection
      - name: pool
        type: pool_t
      - name: '*client'
        type: struct auth_client
      - name: last_connect
        type: time_t
      - name: '*to'
        type: struct timeout
      - name: server_pid
        type: unsigned int
      - name: connect_uid
        type: unsigned int
      - name: '*cookie'
        type: char
      - name: has_plain_mech
        type: bool
      - name: connected
        type: bool
      item_type: struct
      name: auth_client_connection
      pos:
        line_end: 53
        line_start: 33
        source_file: /src/dovecot/src/lib-auth-client/auth-client-private.h
    - fields:
      - name: '*auth_socket_path'
        type: char
      - name: client_pid
        type: unsigned int
      - name: '*event'
        type: struct event
      - name: '*clist'
        type: struct connection_list
      - name: '*conn'
        type: struct auth_client_connection
      - name: '*connect_notify_callback'
        type: auth_connect_notify_callback_t
      - name: '*connect_notify_context'
        type: void
      - name: request_id_counter
        type: unsigned int
      - name: connect_timeout_msecs
        type: unsigned int
      - name: debug
        type: bool
      item_type: struct
      name: auth_client
      pos:
        line_end: 72
        line_start: 55
        source_file: /src/dovecot/src/lib-auth-client/auth-client-private.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AUTH_CLIENT_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '1'
    - item_type: preproc_def
      name: AUTH_CLIENT_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '3'
    - item_type: preproc_def
      name: AUTH_CLIENT_MAX_LINE_LENGTH
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '16384'
    - item_type: preproc_def
      name: AUTH_CLIENT_FAIL_CODE_AUTHZFAILED
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '"authz_fail"'
    - item_type: preproc_def
      name: AUTH_CLIENT_FAIL_CODE_TEMPFAIL
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '"temp_fail"'
    - item_type: preproc_def
      name: AUTH_CLIENT_FAIL_CODE_USER_DISABLED
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '"user_disabled"'
    - item_type: preproc_def
      name: AUTH_CLIENT_FAIL_CODE_PASS_EXPIRED
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '"pass_expired"'
    - item_type: preproc_def
      name: AUTH_CLIENT_FAIL_CODE_INVALID_BASE64
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '"invalid_base64"'
    - item_type: preproc_def
      name: AUTH_CLIENT_FAIL_CODE_MECH_INVALID
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '"auth_mech_invalid"'
    - item_type: preproc_def
      name: AUTH_CLIENT_FAIL_CODE_MECH_SSL_REQUIRED
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '"auth_mech_ssl_required"'
    - item_type: preproc_def
      name: AUTH_CLIENT_FAIL_CODE_ANONYMOUS_DENIED
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/lib-auth-client/auth-client-interface.h
      type_or_value: '"anonymous_denied"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - auth_server_send_new_request
  - auth_client_request_new
  - auth_client_request_enable_channel_binding
  - call_callback
  - auth_client_request_fail_conn_lost
  - auth_client_request_free
  - auth_client_request_abort
  - auth_client_request_get_id
  - auth_client_request_get_server_pid
  - auth_client_request_get_cookie
  - auth_client_request_is_aborted
  - auth_client_request_get_create_time
  - args_parse_user
  - auth_client_request_final
  - auth_client_request_continue
  - auth_client_request_handle_input
  - auth_client_request_server_input
  - auth_client_send_cancel
  source_file: /src/dovecot/src/lib-auth-client/auth-client-request.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-test/test-private.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_subprocess_signal
  - test_subprocess_free_all
  - ATTR_NORETURN::test_subprocess_child
  - test_subprocess_fork
  - test_subprocess_verify_exit_status
  - test_subprocess_kill_forced
  - test_subprocess_wait_for_children
  - test_subprocess_wait_all
  - test_subprocess_kill_all
  - test_subprocess_kill_all_forced
  - test_subprocess_is_child
  - test_subprocess_cleanup
  - test_subprocess_alarm
  - test_subprocess_notify_signal_send
  - test_subprocess_notify_signal_send_parent
  - test_subprocess_notify_signal_all
  - test_subprocess_notify_signal_reset
  - test_subprocess_notify_signal_wait
  - test_subprocess_notification_signal
  - test_subprocesses_init
  - test_subprocesses_deinit
  source_file: /src/dovecot/src/lib-test/test-subprocess.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pid
        type: pid_t
      item_type: struct
      name: test_subprocess
      pos:
        line_end: 19
        line_start: 17
        source_file: /src/dovecot/src/lib-test/test-subprocess.c
    typedefs: []
    union: []
- function_names:
  - test_dir_init
  - test_dir_cleanup
  - test_dir_deinit
  - test_dir_deinit_forked
  - test_dir_get
  - test_dir_get_prefix
  - test_dir_prepend
  source_file: /src/dovecot/src/lib-test/test-dir.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_failed
  - test_assert
  - test_assert_idx
  - test_assert_strcmp
  - test_assert_memcmp
  - test_assert_strcmp_idx
  - test_assert_memcmp_idx
  - test_assert_cmp_bool
  - test_assert_cmp
  - test_assert_cmp_idx
  - test_assert_ucmp
  - test_assert_ucmp_idx
  - TEST_DECL
  - TEST_NAMELESS
  - TEST_NAMED
  - test_fatal_set_callback
  - FATAL_DECL
  - FATAL_NAMELESS
  - FATAL_NAMED
  source_file: /src/dovecot/src/lib-test/test-common.h
  types:
    enum:
    - enumerators:
      - name: FATAL_TEST_FINISHED
      - name: FATAL_TEST_FAILURE
      - name: FATAL_TEST_ABORT
      item_type: enum
      name: fatal_test_state
      pos:
        line_end: 171
        line_start: 167
        source_file: /src/dovecot/src/lib-test/test-common.h
    preproc_defs:
    - item_type: preproc_def
      name: ON_VALGRIND
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-test/test-common.h
      type_or_value: ((bool) RUNNING_ON_VALGRIND)
    - item_type: preproc_def
      name: ON_VALGRIND
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-test/test-common.h
      type_or_value: 'FALSE'
    - item_type: preproc_def
      name: ATTR_STATIC_CHECKER_NORETURN
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/dovecot/src/lib-test/test-common.h
      type_or_value: ATTR_NORETURN
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: (*func)(void)
        type: void
      item_type: struct
      name: named_test
      pos:
        line_end: 160
        line_start: 157
        source_file: /src/dovecot/src/lib-test/test-common.h
    - fields:
      - name: '*name'
        type: char
      - name: '*func'
        type: test_fatal_func_t
      item_type: struct
      name: named_fatal
      pos:
        line_end: 183
        line_start: 180
        source_file: /src/dovecot/src/lib-test/test-common.h
    typedefs:
    - item_type: typedef
      name: test_fatal_func_t(unsigned int stage)
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/dovecot/src/lib-test/test-common.h
      type: fatal_test_state
    - item_type: typedef
      name: test_fatal_callback_t(void *context)
      pos:
        line_end: 178
        line_start: 178
        source_file: /src/dovecot/src/lib-test/test-common.h
      type: void
    union: []
- function_names:
  - o_stream_test_destroy
  - o_stream_test_flush
  - o_stream_test_sendv
  - test_ostream_send_more
  - test_ostream_set_send_more_timeout
  - o_stream_test_flush_pending
  - o_stream_test_get_buffer_used_size
  - test_ostream_create
  - test_ostream_create_nonblocking
  - test_ostream_find
  - test_ostream_set_max_output_size
  source_file: /src/dovecot/src/lib-test/test-ostream.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: '*internal_buf'
        type: buffer_t
      - name: '*output_buf'
        type: buffer_t
      - name: max_output_size
        type: size_t
      - name: '*to'
        type: struct timeout
      - name: flush_pending
        type: bool
      item_type: struct
      name: test_ostream
      pos:
        line_end: 14
        line_start: 7
        source_file: /src/dovecot/src/lib-test/test-ostream.c
    typedefs: []
    union: []
- function_names:
  - test_buffer_free
  - test_read
  - test_seek
  - test_istream_create_data
  - test_istream_create
  - test_istream_find
  - test_istream_set_allow_eof
  - test_istream_set_max_buffer_size
  - test_istream_set_size
  source_file: /src/dovecot/src/lib-test/test-istream.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*orig_buffer'
        type: void
      - name: skip_diff
        type: unsigned int
      - name: max_pos
        type: size_t
      - name: allow_eof
        type: bool
      item_type: struct
      name: test_istream
      pos:
        line_end: 13
        line_start: 7
        source_file: /src/dovecot/src/lib-test/test-istream.c
    typedefs: []
    union: []
- function_names:
  - fuzzer_init
  - fuzzer_deinit
  - pump_finished
  - fuzzer_io_as_fd
  - fuzzer_t_strndup_replace_zero
  source_file: /src/dovecot/src/lib-test/fuzzer.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_dir_init
  source_file: /src/dovecot/src/lib-test/test-dir.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-test/ostream-final-trickle.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_begin
  - test_has_failed
  - test_assert_failed
  - test_assert_failed_idx
  - test_assert_failed_strcmp_idx
  - print_memcmp_data
  - test_assert_failed_memcmp_idx
  - test_assert_failed_cmp_intmax_idx
  - test_assert_failed_ucmp_intmax_idx
  - test_dump_rand_state
  - test_dump_rand_state
  - test_end
  - test_out
  - test_out_reason
  - test_out_quiet
  - test_out_reason_quiet
  - test_expect_error_string_n_times
  - test_expect_error_string
  - test_expect_errors
  - test_expect_no_more_errors
  - expect_error_check
  - test_error_handler
  - test_expect_fatal_string
  - test_fatal_set_callback
  - test_fatal_handler
  - test_cleanup
  - test_terminate
  - test_atexit
  - test_init_no_event
  - test_init
  - test_init_signals
  - test_deinit
  - test_forked_deinit
  - test_run_funcs
  - test_run_named_funcs
  - run_one_fatal
  - test_run_fatals
  - test_run_named_fatals
  - test_run
  - test_run_named
  - test_run_with_fatals
  - test_run_named_with_fatals
  - test_forked_end
  - ATTR_NORETURN::test_exit
  - test_create_temp_fd
  - test_set_cleanup_callback
  source_file: /src/dovecot/src/lib-test/test-common.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: OUT_NAME_ALIGN
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-test/test-common.c
      type_or_value: '70'
    structs: []
    typedefs: []
    union: []
- function_names:
  - o_stream_final_trickle_close
  - o_stream_final_trickle_flush_buffer
  - o_stream_final_trickle_timeout
  - o_stream_final_trickle_flush
  - o_stream_final_trickle_sendv
  - o_stream_final_trickle_get_buffer_used_size
  - o_stream_final_trickle_switch_ioloop_to
  - o_stream_create_final_trickle
  source_file: /src/dovecot/src/lib-test/ostream-final-trickle.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: '*to'
        type: struct timeout
      - name: buffer_char
        type: unsigned char
      - name: buffer_used
        type: bool
      item_type: struct
      name: final_trickle_ostream
      pos:
        line_end: 12
        line_start: 6
        source_file: /src/dovecot/src/lib-test/ostream-final-trickle.c
    typedefs: []
    union: []
- function_names:
  - test_subprocess_fork
  source_file: /src/dovecot/src/lib-test/test-subprocess.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_SIGNALS_DEFAULT_TIMEOUT_MS
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-test/test-subprocess.h
      type_or_value: '10000'
    structs: []
    typedefs: []
    union: []
- function_names:
  - FUZZ_BEGIN_DATA
  - FUZZ_BEGIN_STR
  source_file: /src/dovecot/src/lib-test/fuzzer.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FUZZ_BEGIN_FD
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/dovecot/src/lib-test/fuzzer.h
      type_or_value: "FUZZ_BEGIN_DATA(const uint8_t *_param_data, size_t _param_size)
        \\\n\tfuzz_ctx.ioloop = io_loop_create(); \\\n\t(void)fuzzer_io_as_fd(&fuzz_ctx,
        _param_data, _param_size);"
    - item_type: preproc_def
      name: FUZZ_END
      pos:
        line_end: 34
        line_start: 32
        source_file: /src/dovecot/src/lib-test/fuzzer.h
      type_or_value: '} T_END; fuzzer_deinit(&fuzz_ctx); return 0; }'
    structs:
    - fields:
      - name: fd
        type: int
      - name: '*pump'
        type: struct iostream_pump
      - name: '*ioloop'
        type: struct ioloop
      - name: lib_initialized
        type: bool
      item_type: struct
      name: fuzzer_context
      pos:
        line_end: 12
        line_start: 6
        source_file: /src/dovecot/src/lib-test/fuzzer.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/config-filter.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*parent'
        type: struct config_filter
      - name: '*protocol'
        type: char
      - name: '*local_name'
        type: char
      - name: '*local_host'
        type: char
      - name: local_net
        type: struct ip_addr
      - name: local_bits
        type: unsigned int
      - name: '*filter_name'
        type: char
      - name: filter_name_array
        type: bool
      - name: default_settings
        type: bool
      item_type: struct
      name: config_filter
      pos:
        line_end: 28
        line_start: 7
        source_file: /src/dovecot/src/config/config-filter.h
    - fields:
      - name: '*label'
        type: char
      - name: '*name'
        type: char
      - name: '*last_path'
        type: char
      - name: last_linenum
        type: unsigned int
      item_type: struct
      name: config_include_group
      pos:
        line_end: 36
        line_start: 30
        source_file: /src/dovecot/src/config/config-filter.h
    - fields:
      - name: create_order
        type: unsigned int
      - name: named_list_filter_count
        type: unsigned int
      - name: named_filter_count
        type: unsigned int
      - name: '*parent'
        type: struct config_filter_parser
      - name: '*children_head'
        type: struct config_filter_parser
      - name: '*reverse_default_sibling'
        type: struct config_filter_parser
      - name: (config_include_group)
        type: ARRAY_TYPE
      - name: filter
        type: struct config_filter
      - name: '*module_parsers'
        type: struct config_module_parser
      - name: filter_required_setting_seen
        type: bool
      - name: dropped
        type: bool
      item_type: struct
      name: config_filter_parser
      pos:
        line_end: 76
        line_start: 41
        source_file: /src/dovecot/src/config/config-filter.h
    typedefs: []
    union: []
- function_names:
  - readfile
  - lsb_distro_get
  - distro_get
  - filesystem_get
  - sysinfo_get
  source_file: /src/dovecot/src/config/sysinfo-get.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - has_config_version
  - obsolete
  - old_settings_handle_rename
  - old_settings_handle
  - old_settings_default
  - old_settings_default_changes_count
  source_file: /src/dovecot/src/config/old-set-parser.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - config_request_get_strings
  - config_string_cmp
  - config_dump_human_include_group
  - config_dump_human_init
  - config_dump_human_deinit
  - value_need_quote
  - find_next_secret
  - hide_url_userpart_from_value
  - key_ends_with
  - hide_secrets_from_value
  - try_strip_prefix
  - config_dump_human_output
  - filter_name_escaped
  - config_dump_named_filters
  - config_dump_filter_begin
  - config_dump_filter_end
  - config_dump_human_filter_path
  - config_dump_human
  - array_foreach_elem
  - hostname_format_write
  - hostname_verify_format
  - check_wrong_config
  - failure_exit_callback
  - main
  source_file: /src/dovecot/src/config/doveconf.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CONFIG_KEY_ESCAPE_CHARS
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dovecot/src/config/doveconf.c
      type_or_value: '" \"\\#="'
    - item_type: preproc_def
      name: LIST_KEY_PREFIX
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dovecot/src/config/doveconf.c
      type_or_value: '"\001"'
    - item_type: preproc_def
      name: BOOLLIST_ELEM_KEY_PREFIX
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dovecot/src/config/doveconf.c
      type_or_value: '"\002"'
    structs:
    - fields:
      - name: prefix_idx
        type: unsigned int
      - name: boollist_one_line
        type: bool
      item_type: struct
      name: prefix_stack
      pos:
        line_end: 35
        line_start: 30
        source_file: /src/dovecot/src/config/doveconf.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*list_prefix'
        type: string_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*export_ctx'
        type: struct config_export_context
      - name: list_prefix_sent
        type: bool
      item_type: struct
      name: config_dump_human_context
      pos:
        line_end: 45
        line_start: 38
        source_file: /src/dovecot/src/config/doveconf.c
    - fields:
      - name: '*prefix'
        type: char
      - name: numcount
        type: unsigned int
      - name: zeropadding
        type: bool
      item_type: struct
      name: hostname_format
      pos:
        line_end: 954
        line_start: 950
        source_file: /src/dovecot/src/config/doveconf.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/default-settings-import.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - config_filter_match_service
  - config_filter_match_rest
  - config_filter_match_no_recurse
  - config_filter_match
  - config_filters_equal_no_recursion
  - config_filters_equal_without_defaults
  - config_filters_equal
  - config_filter_hash_crc
  - config_filter_hash
  - config_filter_is_empty
  - config_filter_is_empty_defaults
  - config_filter_get_path_str
  - config_filter_get_path_prefix
  source_file: /src/dovecot/src/config/config-filter.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - client_connected
  - main
  source_file: /src/dovecot/src/config/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/all-settings.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/config-connection.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - config_export_init
  source_file: /src/dovecot/src/config/config-request.h
  types:
    enum:
    - enumerators:
      - name: CONFIG_DUMP_SCOPE_DEFAULT
      - name: CONFIG_DUMP_SCOPE_SET_AND_DEFAULT_OVERRIDES
      - name: CONFIG_DUMP_SCOPE_SET
      - name: CONFIG_DUMP_SCOPE_ALL_WITHOUT_HIDDEN
      - name: CONFIG_DUMP_SCOPE_ALL_WITH_HIDDEN
      - name: CONFIG_DUMP_SCOPE_SET_AND_DEFAULT_AND_GROUP_OVERRIDES
      - name: CONFIG_DUMP_SCOPE_CHANGED
      item_type: enum
      name: config_dump_scope
      pos:
        line_end: 26
        line_start: 8
        source_file: /src/dovecot/src/config/config-request.h
    - enumerators:
      - name: CONFIG_DUMP_FLAG_WRITE_BINARY_CACHE
        value: '0x01'
      - name: CONFIG_DUMP_FLAG_DEDUPLICATE_KEYS
        value: '0x08'
      item_type: enum
      name: config_dump_flags
      pos:
        line_end: 32
        line_start: 28
        source_file: /src/dovecot/src/config/config-request.h
    - enumerators:
      - name: CONFIG_KEY_NORMAL
      - name: CONFIG_KEY_LIST
      - name: CONFIG_KEY_BOOLLIST_ELEM
      - name: CONFIG_KEY_FILTER_ARRAY
      item_type: enum
      name: config_key_type
      pos:
        line_end: 39
        line_start: 34
        source_file: /src/dovecot/src/config/config-request.h
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: enum config_key_type
      - name: def_type
        type: enum setting_type
      - name: '*key'
        type: char
      - name: key_define_idx
        type: unsigned int
      - name: list_idx
        type: unsigned int
      - name: list_count
        type: unsigned int
      - name: '*value'
        type: char
      - name: value_stop_list
        type: bool
      item_type: struct
      name: config_export_setting
      pos:
        line_end: 50
        line_start: 41
        source_file: /src/dovecot/src/config/config-request.h
    typedefs:
    - item_type: typedef
      name: "config_request_callback_t(const struct config_export_setting *set,\n\t\t\t\t
        \      void *context)"
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dovecot/src/config/config-request.h
      type: void
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/config-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/old-set-parser.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - config_section_is_in_list
  - set_str_expanded
  source_file: /src/dovecot/src/config/config-parser-private.h
  types:
    enum:
    - enumerators:
      - name: CONFIG_LINE_TYPE_SKIP
      - name: CONFIG_LINE_TYPE_KEYVALUE
      - name: CONFIG_LINE_TYPE_ERROR
      - name: CONFIG_LINE_TYPE_KEYFILE
      - name: CONFIG_LINE_TYPE_CONTINUE
      - name: CONFIG_LINE_TYPE_KEYVARIABLE
      - name: CONFIG_LINE_TYPE_SECTION_BEGIN
      - name: CONFIG_LINE_TYPE_SECTION_END
      - name: CONFIG_LINE_TYPE_GROUP_SECTION_BEGIN
      - name: CONFIG_LINE_TYPE_INCLUDE
      - name: CONFIG_LINE_TYPE_INCLUDE_TRY
      item_type: enum
      name: config_line_type
      pos:
        line_end: 30
        line_start: 6
        source_file: /src/dovecot/src/config/config-parser-private.h
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: enum config_line_type
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      - name: key_quoted
        type: bool
      - name: value_quoted
        type: bool
      item_type: struct
      name: config_line
      pos:
        line_end: 39
        line_start: 32
        source_file: /src/dovecot/src/config/config-parser-private.h
    - fields:
      - name: '*prev'
        type: struct config_section_stack
      - name: '*key'
        type: char
      - name: '*filter_parser'
        type: struct config_filter_parser
      - name: '*open_path'
        type: char
      - name: open_linenum
        type: unsigned int
      - name: is_filter
        type: bool
      - name: '*filter_def'
        type: struct setting_define
      item_type: struct
      name: config_section_stack
      pos:
        line_end: 67
        line_start: 47
        source_file: /src/dovecot/src/config/config-parser-private.h
    - fields:
      - name: '*prev'
        type: struct input_stack
      - name: '*input'
        type: struct istream
      - name: '*path'
        type: char
      - name: linenum
        type: unsigned int
      item_type: struct
      name: input_stack
      pos:
        line_end: 75
        line_start: 69
        source_file: /src/dovecot/src/config/config-parser-private.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*path'
        type: char
      - name: flags
        type: enum config_parse_flags
      - name: (config_path)
        type: ARRAY_TYPE
      - name: (config_key)
        type: HASH_TABLE_TYPE
      - name: (include_group)
        type: HASH_TABLE_TYPE
      - name: '*root_module_parsers'
        type: struct config_module_parser
      - name: '*cur_section'
        type: struct config_section_stack
      - name: '*cur_input'
        type: struct input_stack
      - name: change_counter
        type: uint8_t
      - name: create_order_counter
        type: unsigned int
      - name: '*prefixed_value'
        type: string_t
      - name: '*error'
        type: char
      - name: '*dovecot_config_version'
        type: char
      - name: '*const *filter_name_prefixes'
        type: char
      - name: filter_name_prefixes_count
        type: unsigned int
      - name: '*old'
        type: struct old_set_parser
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*filter'
        type: struct config_filter_context
      - name: dump_defaults
        type: bool
      - name: expand_values
        type: bool
      - name: reverse_parsers_set
        type: bool
      item_type: struct
      name: config_parser_context
      pos:
        line_end: 114
        line_start: 80
        source_file: /src/dovecot/src/config/config-parser-private.h
    typedefs: []
    union: []
- function_names:
  - config_export_size
  - config_export_time
  - config_export_time_msecs
  - config_export_type
  - get_default_value
  - settings_check_old_export_array
  - settings_export
  - array_foreach_elem
  - config_export_init
  - config_export_set_module_parsers
  - config_export_get_parser_count
  - config_export_free
  - config_export_all_parsers
  - config_export_parser_get_info
  - config_export_parser
  source_file: /src/dovecot/src/config/config-request.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*value'
        type: string_t
      - name: scope
        type: enum config_dump_scope
      - name: '*dovecot_config_version'
        type: char
      - name: '*path_prefix'
        type: char
      - name: '*callback'
        type: config_request_callback_t
      - name: '*context'
        type: void
      - name: flags
        type: enum config_dump_flags
      - name: '*module_parsers'
        type: struct config_module_parser
      item_type: struct
      name: config_export_context
      pos:
        line_end: 28
        line_start: 15
        source_file: /src/dovecot/src/config/config-request.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/config-dump-full.h
  types:
    enum:
    - enumerators:
      - name: CONFIG_DUMP_FULL_DEST_RUNDIR
      - name: CONFIG_DUMP_FULL_DEST_TEMPDIR
      - name: CONFIG_DUMP_FULL_DEST_STDOUT
      item_type: enum
      name: config_dump_full_dest
      pos:
        line_end: 9
        line_start: 5
        source_file: /src/dovecot/src/config/config-dump-full.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - output_blob_size
  - config_get_cache_dir
  - config_dump_full_write_cache_paths
  - array_foreach
  - config_dump_keys_hash_try
  - config_parser_key_list_count
  - config_dump_keys_hash
  - config_dump_keys_hash_table
  - config_dump_full_write_all_keys
  - config_dump_full_append_filter_query
  - config_dump_full_append_filter
  - config_filter_get_name_list_counts
  - config_dump_full_write_filters
  - config_dump_full_write_keys
  - config_dump_full_stdout_write_filter
  - config_dump_full_stdout_callback
  - config_include_groups_dump
  - config_dump_full_write_filter
  - config_dump_full_callback
  - config_dump_full_handle_error
  - filter_is_group
  - config_dump_full_sections
  - config_dump_full
  source_file: /src/dovecot/src/config/config-dump-full.c
  types:
    enum:
    - enumerators:
      - name: CONFIG_DUMP_TYPE_DEFAULTS
      - name: CONFIG_DUMP_TYPE_GROUPS
      - name: CONFIG_DUMP_TYPE_EXPLICIT
      item_type: enum
      name: config_dump_type
      pos:
        line_end: 139
        line_start: 135
        source_file: /src/dovecot/src/config/config-dump-full.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*config'
        type: struct config_parsed
      - name: '*dovecot_config_version'
        type: char
      - name: '*output'
        type: struct ostream
      - name: dest
        type: enum config_dump_full_dest
      - name: '*const *filters'
        type: struct config_filter_parser
      - name: filter_output_count
        type: uint32_t
      - name: '*filter_indexes_32'
        type: uint32_t
      - name: '*filter_offsets_64'
        type: uint64_t
      item_type: struct
      name: config_dump_full_context
      pos:
        line_end: 152
        line_start: 141
        source_file: /src/dovecot/src/config/config-dump-full.c
    - fields:
      - name: '*output'
        type: struct ostream
      - name: '*delayed_output'
        type: string_t
      - name: '*info'
        type: struct setting_parser_info
      - name: '*include_groups'
        type: ARRAY_TYPE
      - name: '*filter'
        type: struct config_filter
      - name: filter_written
        type: bool
      item_type: struct
      name: dump_context
      pos:
        line_end: 163
        line_start: 154
        source_file: /src/dovecot/src/config/config-dump-full.c
    typedefs: []
    union: []
- function_names:
  - config_module_parser_init
  - config_parser_set_change_counter
  - config_parser_add_seen_file
  - config_parser_add_seen_file_fd
  - config_parser_add_filter_array
  - config_apply_default
  - config_parser_add_service_default_struct
  - SERVICE_SETTING_TYPE_HAS_DEFAULT
  - config_parser_add_service_default_keyvalues
  - config_parser_add_services
  - config_parser_add_info_defaults_arr
  - config_parser_add_info_defaults
  - config_parser_is_in_localremote
  - fix_relative_path
  - config_apply_error
  - config_filters_find_child
  - config_filter_fill_reverse_default_siblings
  - config_parse_fill_reverse_default_siblings
  - config_filter_get_value
  - config_get_value
  - config_filter_parser_find_path_sub
  - config_filter_parser_find_path
  - config_filter_has_include_group
  - setting_value_can_check
  - settings_value_check_vars
  - settings_value_check_common
  - settings_value_check
  - config_is_filter_name
  - config_list_add_defaults
  - config_apply_strlist
  - config_apply_boollist
  - config_apply_filter_array
  - config_apply_file
  - config_apply_exact_line
  - replace_filter_prefix
  - filter_key_skip_group_prefix
  - config_key_can_autoprefix
  - config_set_unknown_key_error
  - config_apply_line_full
  - config_apply_key_value
  - config_module_parsers_init
  - config_add_new_parser
  - config_add_new_section
  - config_filter_parser_find
  - config_filter_parser_find_slow
  - config_parse_net
  - config_filter_parse
  - config_filter_add_new_filter
  - config_fill_set_parser
  - config_filter_parser_check
  - get_str_setting
  - config_all_parsers_check
  - str_append_file
  - settings_add_include
  - settings_include
  - config_str_unescape
  - config_parse_line
  - group_find_name
  - config_module_parsers_merge
  - config_filters_merge_tree
  - config_filters_merge
  - config_parse_merge_filters
  - config_parse_merge_default_filters
  - config_parser_filter_cmp
  - config_expand_value
  - config_module_parser_expand_values
  - config_filter_parser_expand_values
  - config_parse_expand_values
  - config_parse_finish
  - config_write_keyvariable
  - config_write_value
  - config_section_has_non_named_list_filters
  - config_parser_check_warnings
  - config_version_find
  - dovecot_config_version_equals
  - config_parser_get_version
  - config_filter_parser_replace_parent
  - config_parser_include_merge
  - config_parser_include_add_or_update
  - config_parser_apply_line
  - check_defaults_equal
  - config_parser_add_info
  - config_parser_get_filter_name_prefixes
  - config_filters_cmp
  - config_file_get_input_error
  - config_parse_file
  - config_parsed_get_version
  - config_parsed_get_errors
  - config_parsed_get_global_filter_parser
  - config_parsed_get_global_default_filter_parser
  - config_parsed_get_filter_parsers
  - config_parsed_get_all_keys
  - config_parsed_strlist_append
  - config_parsed_get_setting_full
  - config_parsed_get_setting
  - config_parsed_get_setting_change_counter
  - config_parsed_key_lookup
  - config_filter_tree_has_settings
  - config_include_group_filters_have_settings
  - config_parsed_get_includes
  - config_parsed_get_paths
  - config_parsed_free
  - config_service_cmp
  - config_have_info_dependency
  - config_parse_load_module_paths
  - config_parse_load_modules
  - config_parser_deinit
  source_file: /src/dovecot/src/config/config-parser.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: GLOB_BRACE
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dovecot/src/config/config-parser.c
      type_or_value: '0'
    - item_type: preproc_def
      name: DNS_LOOKUP_TIMEOUT_SECS
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dovecot/src/config/config-parser.c
      type_or_value: '30'
    - item_type: preproc_def
      name: DNS_LOOKUP_WARN_SECS
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dovecot/src/config/config-parser.c
      type_or_value: '5'
    structs:
    - fields:
      - name: '*label'
        type: char
      item_type: struct
      name: config_include_group_filters
      pos:
        line_end: 43
        line_start: 40
        source_file: /src/dovecot/src/config/config-parser.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*dovecot_config_version'
        type: char
      - name: '*const *filter_parsers'
        type: struct config_filter_parser
      - name: '*module_parsers'
        type: struct config_module_parser
      - name: (config_path)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (include_group)
        type: HASH_TABLE_TYPE
      - name: (config_key)
        type: HASH_TABLE_TYPE
      item_type: struct
      name: config_parsed
      pos:
        line_end: 54
        line_start: 45
        source_file: /src/dovecot/src/config/config-parser.c
    typedefs: []
    union: []
- function_names:
  - config_connection_next_line
  - config_global_reload
  - config_connection_request
  - config_connection_input
  - config_connection_create
  - config_connection_destroy
  - config_connections_init
  - config_connections_destroy_all
  source_file: /src/dovecot/src/config/config-connection.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_INBUF_SIZE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/config/config-connection.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: CONFIG_CLIENT_PROTOCOL_MAJOR_VERSION
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/config/config-connection.c
      type_or_value: '3'
    - item_type: preproc_def
      name: CONFIG_CLIENT_PROTOCOL_MINOR_VERSION
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/config/config-connection.c
      type_or_value: '0'
    structs:
    - fields:
      - name: '*prev'
        type: struct config_connection
      - name: fd
        type: int
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      - name: '*io'
        type: struct io
      - name: version_received
        type: bool
      - name: handshaked
        type: bool
      item_type: struct
      name: config_connection
      pos:
        line_end: 35
        line_start: 25
        source_file: /src/dovecot/src/config/config-connection.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/sysinfo-get.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/config/config-parser.h
  types:
    enum:
    - enumerators:
      - name: CONFIG_PARSE_FLAG_EXPAND_VALUES
        value: BIT(0)
      - name: CONFIG_PARSE_FLAG_RETURN_BROKEN_CONFIG
        value: BIT(4)
      - name: CONFIG_PARSE_FLAG_DELAY_ERRORS
        value: BIT(3)
      - name: CONFIG_PARSE_FLAG_NO_DEFAULTS
        value: BIT(5)
      - name: CONFIG_PARSE_FLAG_HIDE_OBSOLETE_WARNINGS
        value: BIT(1)
      - name: CONFIG_PARSE_FLAG_EXTERNAL_HOOKS
        value: BIT(6)
      - name: CONFIG_PARSE_FLAG_PREFIXES_IN_FILTERS
        value: BIT(7)
      - name: CONFIG_PARSE_FLAG_MERGE_DEFAULT_FILTERS
        value: BIT(9)
      - name: CONFIG_PARSE_FLAG_IGNORE_UNKNOWN
        value: BIT(10)
      - name: CONFIG_PARSE_FLAG_DEFAULT_VERSION
        value: BIT(11)
      item_type: enum
      name: config_parse_flags
      pos:
        line_end: 45
        line_start: 21
        source_file: /src/dovecot/src/config/config-parser.h
    preproc_defs:
    - item_type: preproc_def
      name: CONFIG_MODULE_DIR
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: MODULEDIR"/settings"
    - item_type: preproc_def
      name: CONFIG_VERSION_GIT
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: '"0.0.0"'
    - item_type: preproc_def
      name: CONFIG_VERSION_MAX
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: '"9999.9999.9999"'
    - item_type: preproc_def
      name: CONFIG_PARSER_CHANGE_GROUP
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: '1'
    - item_type: preproc_def
      name: CONFIG_PARSER_CHANGE_DEFAULTS
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: '2'
    - item_type: preproc_def
      name: CONFIG_PARSER_CHANGE_EXPLICIT
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: '3'
    - item_type: preproc_def
      name: CONFIG_VALUE_PREFIX_EXPANDED_S
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: '"\001"'
    - item_type: preproc_def
      name: CONFIG_VALUE_PREFIX_EXPANDED
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: CONFIG_VALUE_PREFIX_EXPANDED_S[0]
    - item_type: preproc_def
      name: CONFIG_VALUE_PREFIX_SET_UNEXPANDED
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dovecot/src/config/config-parser.h
      type_or_value: '''\002'''
    structs:
    - fields:
      - name: '*info'
        type: struct setting_parser_info
      - name: set_count
        type: unsigned int
      - name: '*settings'
        type: "union config_module_parser_setting {\n\t\tconst char *prefixed_str;\n\t\tstruct
          {\n\t\t\t/* [prefixed_key, prefixed_value, prefixed_key2, ...] */\n\t\t\tARRAY_TYPE(const_string)
          *prefixed_values;\n\t\t\tbool stop_list;\n\t\t} list;\n\t\tARRAY_TYPE(const_string)
          *filter_array;\n\t}"
      - name: '*change_counters'
        type: uint8_t
      - name: '*delayed_error'
        type: char
      item_type: struct
      name: config_module_parser
      pos:
        line_end: 78
        line_start: 56
        source_file: /src/dovecot/src/config/config-parser.h
    - fields:
      - name: '*prev'
        type: struct config_parser_key
      - name: info_idx
        type: unsigned int
      - name: define_idx
        type: unsigned int
      item_type: struct
      name: config_parser_key
      pos:
        line_end: 89
        line_start: 81
        source_file: /src/dovecot/src/config/config-parser.h
    - fields:
      - name: '*path'
        type: char
      - name: st
        type: struct stat
      item_type: struct
      name: config_path
      pos:
        line_end: 95
        line_start: 92
        source_file: /src/dovecot/src/config/config-parser.h
    typedefs: []
    union:
    - fields:
      - name: '*prefixed_str'
        type: char
      - name: list
        type: "struct {\n\t\t\t/* [prefixed_key, prefixed_value, prefixed_key2, ...]
          */\n\t\t\tARRAY_TYPE(const_string) *prefixed_values;\n\t\t\tbool stop_list;\n\t\t}"
      - name: '*filter_array'
        type: ARRAY_TYPE
      item_type: union
      name: config_module_parser_setting
      pos:
        line_end: 69
        line_start: 61
        source_file: /src/dovecot/src/config/config-parser.h
- function_names:
  - write_config_file
  - test_config_parser
  - main
  source_file: /src/dovecot/src/config/test-config-parser.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_CONFIG_FILE
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/config/test-config-parser.c
      type_or_value: '"config"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*key'
        type: char
      - name: '*key2'
        type: char
      - name: '*key3'
        type: char
      - name: '*key4'
        type: char
      - name: '*key5'
        type: char
      - name: '*pop3_deleted_flag'
        type: char
      - name: '*env_key'
        type: char
      - name: '*env_key2'
        type: char
      - name: '*env_key3'
        type: char
      - name: '*env_key4'
        type: char
      - name: '*env_key5'
        type: char
      - name: '*protocols'
        type: char
      - name: '*at_group_name'
        type: char
      item_type: struct
      name: test_settings
      pos:
        line_end: 32
        line_start: 17
        source_file: /src/dovecot/src/config/test-config-parser.c
    typedefs: []
    union: []
- function_names:
  - lang_filters_init
  - lang_filters_deinit
  - lang_filter_register
  - lang_filter_find
  - lang_filter_create
  - lang_filter_ref
  - lang_filter_unref
  - lang_filter
  source_file: /src/dovecot/src/lib-language/lang-filter.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lang_library_init
  - lang_library_deinit
  source_file: /src/dovecot/src/lib-language/lang-library.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lang_filter_stemmer_snowball_destroy
  - lang_filter_stemmer_snowball_create
  - lang_filter_stemmer_snowball_create_stemmer
  - lang_filter_stemmer_snowball_filter
  - lang_filter_stemmer_snowball_create
  - lang_filter_stemmer_snowball_destroy
  - lang_filter_stemmer_snowball_filter
  source_file: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: filter
        type: struct lang_filter
      - name: pool
        type: pool_t
      - name: '*lang'
        type: struct language
      - name: '*stemmer'
        type: struct sb_stemmer
      item_type: struct
      name: lang_filter_stemmer_snowball
      pos:
        line_end: 16
        line_start: 11
        source_file: /src/dovecot/src/lib-language/lang-filter-stemmer-snowball.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-icu.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lang_icu_utf16_to_utf8
  - lang_icu_deinit
  - lang_icu_transliterator_create
  source_file: /src/dovecot/src/lib-language/lang-icu.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LANGUAGE_DATA
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-language/lang-settings.h
      type_or_value: '"data"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*filter_normalizer_icu_id'
        type: char
      - name: '*filter_stopwords_dir'
        type: char
      - name: '*tokenizer_generic_algorithm'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: tokenizer_address_token_maxlen
        type: unsigned int
      - name: tokenizer_generic_token_maxlen
        type: unsigned int
      - name: tokenizer_generic_explicit_prefix
        type: bool
      - name: tokenizer_generic_wb5a
        type: bool
      - name: is_default
        type: bool
      item_type: struct
      name: lang_settings
      pos:
        line_end: 23
        line_start: 10
        source_file: /src/dovecot/src/lib-language/lang-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*textcat_config_path'
        type: char
      - name: (lang_settings)
        type: ARRAY_TYPE
      item_type: struct
      name: langs_settings
      pos:
        line_end: 31
        line_start: 25
        source_file: /src/dovecot/src/lib-language/lang-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-filter-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LANG_FILTER_CLASSES_NR
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-language/lang-filter-private.h
      type_or_value: '6'
    structs:
    - fields:
      - name: "(*create)(const struct lang_settings *set,\n\t\t      struct event
          *event,\n\t              struct lang_filter **filter_r,\n\t              const
          char **error_r)"
        type: int
      - name: "(*filter)(struct lang_filter *filter, const char **token,\n\t\t      const
          char **error_r)"
        type: int
      - name: (*destroy)(struct lang_filter *filter)
        type: void
      item_type: struct
      name: lang_filter_vfuncs
      pos:
        line_end: 25
        line_start: 16
        source_file: /src/dovecot/src/lib-language/lang-filter-private.h
    - fields:
      - name: '*class_name'
        type: char
      - name: v
        type: struct lang_filter_vfuncs
      - name: '*parent'
        type: struct lang_filter
      - name: '*token'
        type: string_t
      - name: refcount
        type: int
      item_type: struct
      name: lang_filter
      pos:
        line_end: 33
        line_start: 27
        source_file: /src/dovecot/src/lib-language/lang-filter-private.h
    typedefs: []
    union: []
- function_names:
  - test_lang_icu_utf8_to_utf16_ascii_resize
  - test_lang_icu_utf8_to_utf16_32bit_resize
  - test_lang_icu_utf16_to_utf8
  - test_lang_icu_utf16_to_utf8_resize
  - get_translit
  - test_lang_icu_translate
  - test_lang_icu_translate_resize
  - main
  source_file: /src/dovecot/src/lib-language/test-lang-icu.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lang_filter_normalizer_icu_destroy
  - lang_filter_normalizer_icu_create
  - lang_filter_normalizer_icu_filter
  - lang_filter_normalizer_icu_create
  - lang_filter_normalizer_icu_filter
  - lang_filter_normalizer_icu_destroy
  source_file: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: filter
        type: struct lang_filter
      - name: pool
        type: pool_t
      - name: '*transliterator_id'
        type: char
      - name: '*transliterator'
        type: UTransliterator
      - name: utf16_token
        type: ARRAY_TYPE
      - name: '*utf8_token'
        type: string_t
      item_type: struct
      name: lang_filter_normalizer_icu
      pos:
        line_end: 21
        line_start: 13
        source_file: /src/dovecot/src/lib-language/lang-filter-normalizer-icu.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic-private.h
  types:
    enum:
    - enumerators:
      - name: LETTER_TYPE_NEWLINE
      - name: LETTER_TYPE_REGIONAL_INDICATOR
      - name: LETTER_TYPE_MIDNUMLET
      - name: LETTER_TYPE_EOT
      - name: LETTER_TYPE_SOT
      - name: LETTER_TYPE_PREFIXSPLAT
      - name: LETTER_TYPE_NONE
        value: '0'
      - name: LETTER_TYPE_EXTEND
      - name: LETTER_TYPE_FORMAT
      - name: LETTER_TYPE_HEBREW_LETTER
      - name: LETTER_TYPE_ALETTER
      - name: LETTER_TYPE_DOUBLE_QUOTE
      - name: LETTER_TYPE_NUMERIC
      - name: LETTER_TYPE_APOSTROPHE
      - name: LETTER_TYPE_OTHER
      - name: LETTER_TYPE_SINGLE_QUOTE
      - name: LETTER_TYPE_MIDLETTER
      - name: LETTER_TYPE_CR
      - name: LETTER_TYPE_LF
      - name: LETTER_TYPE_KATAKANA
      - name: LETTER_TYPE_MIDNUM
      - name: LETTER_TYPE_EXTENDNUMLET
      item_type: enum
      name: letter_type
      pos:
        line_end: 30
        line_start: 7
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic-private.h
    - enumerators:
      - name: BOUNDARY_ALGORITHM_NONE
        value: '0'
      - name: BOUNDARY_ALGORITHM_SIMPLE
      item_type: enum
      name: boundary_algorithm
      pos:
        line_end: 38
        line_start: 32
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic-private.h
    preproc_defs: []
    structs:
    - fields:
      - name: tokenizer
        type: struct lang_tokenizer
      - name: max_length
        type: unsigned int
      - name: prefixsplat
        type: bool
      - name: wb5a
        type: bool
      - name: seen_wb5a
        type: bool
      - name: prev_letter
        type: unichar_t
      - name: letter
        type: unichar_t
      - name: algorithm
        type: enum boundary_algorithm
      - name: prev_type
        type: enum letter_type
      - name: prev_prev_type
        type: enum letter_type
      - name: untruncated_length
        type: size_t
      - name: '*token'
        type: buffer_t
      item_type: struct
      name: generic_lang_tokenizer
      pos:
        line_end: 54
        line_start: 40
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic-private.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-indexer-status.h
  types:
    enum:
    - enumerators:
      - name: INDEXER_STATE_PROCESSING
        value: '0'
      - name: INDEXER_STATE_FAILED
        value: '-1'
      - name: INDEXER_STATE_COMPLETED
        value: '1'
      item_type: enum
      name: indexer_state
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/lib-language/lang-indexer-status.h
    preproc_defs: []
    structs:
    - fields:
      - name: state
        type: enum indexer_state
      - name: progress
        type: unsigned int
      - name: total
        type: unsigned int
      item_type: struct
      name: indexer_status
      pos:
        line_end: 13
        line_start: 9
        source_file: /src/dovecot/src/lib-language/lang-indexer-status.h
    typedefs: []
    union: []
- function_names:
  - init_lang_settings
  - make_settings
  - test_lang_filter_find
  - test_lang_filter_contractions_fail
  - test_lang_filter_contractions_fr
  - test_lang_filter_lowercase
  - test_lang_filter_lowercase_utf8
  - test_lang_filter_stopwords_eng
  - test_lang_filter_stopwords_fin
  - test_lang_filter_stopwords_fra
  - test_lang_filter_stopwords_no
  - test_lang_filter_stopwords_fail_lazy_init
  - test_lang_filter_stopwords_malformed
  - test_lang_filter_stemmer_snowball_stem_english
  - test_lang_filter_stemmer_snowball_stem_french
  - test_lang_filter_stopwords_stemmer_eng
  - test_lang_filter_normalizer_swedish_short
  - test_lang_filter_normalizer_swedish_short_default_id
  - test_lang_filter_normalizer_french
  - test_lang_filter_normalizer_empty
  - test_lang_filter_normalizer_baddata
  - test_lang_filter_normalizer_invalid_id
  - test_lang_filter_normalizer_stopwords_stemmer_eng
  - test_lang_filter_stopwords_normalizer_stemmer_no
  - test_lang_filter_stopwords_normalizer_stemmer_sv
  - test_lang_filter_english_possessive
  - main
  source_file: /src/dovecot/src/lib-language/test-lang-filter.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MALFORMED
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
      type_or_value: '"malformed"'
    - item_type: preproc_def
      name: UNKNOWN
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
      type_or_value: '"bebobidoop"'
    - item_type: preproc_def
      name: LANG_EN
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
      type_or_value: '"en"'
    - item_type: preproc_def
      name: LANG_FI
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
      type_or_value: '"fi"'
    - item_type: preproc_def
      name: LANG_FR
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
      type_or_value: '"fr"'
    - item_type: preproc_def
      name: LANG_NO
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
      type_or_value: '"no"'
    - item_type: preproc_def
      name: LANG_SV
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
      type_or_value: '"sv"'
    - item_type: preproc_def
      name: UDHR_FRA_NAME
      pos:
        line_end: 566
        line_start: 565
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
      type_or_value: '"/udhr_fra.txt"'
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t\t{ \"foo\", \"foo\" },\n\t\t{ \"you're\", \"you're\"
        },\n\t\t{ \"l'homme\", \"homme\" },\n\t\t{ \"l\\xE2\\x80\\x99homme\", \"homme\"
        },\n\t\t{ \"aujourd'hui\", \"aujourd'hui\" },\n\t\t{ \"qu\\xE2\\x80\\x99il\",
        \"il\" },\n\t\t{ \"qu'il\", \"il\" },\n\t\t{ \"du'il\", \"du'il\" },\n\t\t{
        \"que\", \"que\" },\n\t\t{ \"'foobar'\", \"'foobar'\" },\n\t\t{ \"foo'bar\",
        \"foo'bar\" },\n\t\t{ \"a'foo\", \"a'foo\" },\n\t\t{ \"cu'\", \"cu'\" },\n\t\t{
        \"qu\", \"qu\" },\n\t\t{ \"d\", \"d\" },\n\t\t{ \"qu'\", NULL },\n\t\t{ \"j'adore\",
        \"adore\" },\n\t\t{ \"quelqu'un\", \"quelqu'un\" },\n\t\t{ \"l'esprit\", \"esprit\"
        }\n\t}"
      pos:
        line_end: 69
        line_start: 66
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t\t{ \"foo\", \"foo\" },\n\t\t{ \"FOO\", \"foo\" },\n\t\t{
        \"fOo\", \"foo\" }\n\t}"
      pos:
        line_end: 117
        line_start: 114
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t\t{ \"f\\xC3\\x85\\xC3\\x85\", \"f\\xC3\\xA5\\xC3\\xA5\"
        },\n\t\t{ \"F\\xC3\\x85\\xC3\\x85\", \"f\\xC3\\xA5\\xC3\\xA5\" },\n\t\t{ \"F\\xC3\\x85\\xC3\\xA5\",
        \"f\\xC3\\xA5\\xC3\\xA5\" }\n\t}"
      pos:
        line_end: 144
        line_start: 141
        source_file: /src/dovecot/src/lib-language/test-lang-filter.c
    typedefs: []
    union: []
- function_names:
  - lang_filter_lowercase_create
  - lang_filter_lowercase_filter
  source_file: /src/dovecot/src/lib-language/lang-filter-lowercase.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-filter.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/language.h
  types:
    enum:
    - enumerators:
      - name: LANGUAGE_DETECT_RESULT_SHORT
      - name: LANGUAGE_DETECT_RESULT_OK
      - name: LANGUAGE_DETECT_RESULT_ERROR
      - name: LANGUAGE_DETECT_RESULT_UNKNOWN
      item_type: enum
      name: language_detect_result
      pos:
        line_end: 16
        line_start: 7
        source_file: /src/dovecot/src/lib-language/language.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*textcat_config_path'
        type: char
      - name: '*textcat_data_path'
        type: char
      item_type: struct
      name: language_settings
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/dovecot/src/lib-language/language.h
    - fields:
      - name: '*name'
        type: char
      item_type: struct
      name: language
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-language/language.h
    typedefs: []
    union: []
- function_names:
  - get_ending_utf8_char
  - lang_filter_english_possessive_filter
  source_file: /src/dovecot/src/lib-language/lang-filter-english-possessive.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - langs_settings_ext_check
  source_file: /src/dovecot/src/lib-language/lang-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lang_filter_contractions_create
  - lang_filter_contractions_filter
  source_file: /src/dovecot/src/lib-language/lang-filter-contractions.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lang_tokenizer_delete_trailing_partial_char
  - lang_tokenizer_delete_trailing_invalid_char
  source_file: /src/dovecot/src/lib-language/lang-tokenizer-common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - textcat_unref
  - languages_init
  - languages_deinit
  - language_register
  - language_find
  - language_list_init
  - language_list_deinit
  - language_list_find
  - language_list_add
  - language_list_add_names
  - array_foreach_elem
  - language_list_get_all
  - language_list_get_first
  - language_match_lists
  - language_textcat_init
  - language_detect_textcat
  - language_detect
  source_file: /src/dovecot/src/lib-language/language.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEXTCAT_RESULT_UNKNOWN
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-language/language.c
      type_or_value: TEXTCAT_RESULT_UNKOWN
    - item_type: preproc_def
      name: DETECT_STR_MAX_LEN
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-language/language.c
      type_or_value: '200'
    structs:
    - fields:
      - name: refcount
        type: int
      - name: '*handle'
        type: void
      - name: '*config_path'
        type: char
      item_type: struct
      name: textcat
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/dovecot/src/lib-language/language.c
    - fields:
      - name: pool
        type: pool_t
      - name: (language)
        type: ARRAY_TYPE
      - name: '*textcat'
        type: struct textcat
      - name: '*textcat_config'
        type: char
      - name: '*textcat_datadir'
        type: char
      item_type: struct
      name: language_list
      pos:
        line_end: 33
        line_start: 27
        source_file: /src/dovecot/src/lib-language/language.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-tokenizer-private.h
  types:
    enum:
    - enumerators:
      - name: LANG_TOKENIZER_PARENT_STATE_ADD_DATA
        value: '0'
      - name: LANG_TOKENIZER_PARENT_STATE_FINALIZE
      - name: LANG_TOKENIZER_PARENT_STATE_NEXT_OUTPUT
      item_type: enum
      name: lang_tokenizer_parent_state
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-private.h
    preproc_defs:
    - item_type: preproc_def
      name: LANG_TOKENIZER_CLASSES_NR
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-private.h
      type_or_value: '2'
    structs:
    - fields:
      - name: "(*create)(const struct lang_settings *set,\n\t\t      struct event
          *event,\n\t\t      enum lang_tokenizer_flags flags,\n\t\t      struct lang_tokenizer
          **tokenizer_r,\n\t\t      const char **error_r)"
        type: int
      - name: (*destroy)(struct lang_tokenizer *tok)
        type: void
      - name: (*reset)(struct lang_tokenizer *tok)
        type: void
      - name: "(*next)(struct lang_tokenizer *tok, const unsigned char *data,\n\t\t
          \   size_t size, size_t *skip_r, const char **token_r,\n\t\t    const char
          **error_r)"
        type: int
      item_type: struct
      name: lang_tokenizer_vfuncs
      pos:
        line_end: 19
        line_start: 7
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-private.h
    - fields:
      - name: '*name'
        type: char
      - name: '*v'
        type: struct lang_tokenizer_vfuncs
      - name: refcount
        type: int
      - name: '*parent'
        type: struct lang_tokenizer
      - name: '*parent_input'
        type: buffer_t
      - name: parent_state
        type: enum lang_tokenizer_parent_state
      - name: '*prev_data'
        type: unsigned char
      - name: prev_size
        type: size_t
      - name: prev_skip
        type: size_t
      - name: prev_reply_finished
        type: bool
      - name: skip_parents
        type: bool
      - name: stream_to_parents
        type: bool
      - name: finalize_parent_pending
        type: bool
      item_type: struct
      name: lang_tokenizer
      pos:
        line_end: 49
        line_start: 27
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-private.h
    typedefs: []
    union: []
- function_names:
  - IS_NONASCII_APOSTROPHE
  - IS_APOSTROPHE
  - IS_WB5A_APOSTROPHE
  - IS_PREFIX_SPLAT
  - IS_ASCII_VOWEL
  - IS_NONASCII_VOWEL
  source_file: /src/dovecot/src/lib-language/lang-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LANG_PREFIX_SPLAT_CHAR
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-language/lang-common.h
      type_or_value: '0x002A '
    structs: []
    typedefs: []
    union: []
- function_names:
  - parse_algorithm
  - lang_tokenizer_generic_create
  - lang_tokenizer_generic_destroy
  - shift_prev_type
  - add_prev_type
  - add_letter
  - lang_tokenizer_generic_simple_current_token
  - lang_uni_word_break
  - lang_simple_is_word_break
  - lang_tokenizer_generic_reset
  - tok_append_truncated
  - is_base64
  - skip_base64
  - lang_tokenizer_generic_simple_next
  - letter_type
  - letter_panic
  - letter_cr_lf_newline
  - letter_extend_format
  - letter_regional_indicator
  - letter_katakana
  - letter_hebrew
  - letter_aletter
  - letter_single_quote
  - letter_double_quote
  - letter_midnumlet
  - letter_midletter
  - letter_midnum
  - letter_numeric
  - letter_extendnumlet
  - letter_apostrophe
  - letter_prefixsplat
  - letter_other
  - is_nontoken
  - is_one_past_end
  - lang_tokenizer_generic_tr29_current_token
  - wb5a_reinsert
  - uni_found_word_boundary
  - lang_tokenizer_generic_tr29_next
  - lang_tokenizer_generic_next
  source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
  types:
    enum:
    - enumerators:
      - name: LANG_FROM_STOP
        value: '0'
      - name: LANG_TO_STOP
        value: '0'
      - name: STOP
      - name: LANG_FROM_WORD
        value: '2'
      - name: LANG_TO_WORD
        value: '1'
      - name: STOP
      - name: WORD
      - name: WORD
      - name: STOP
      - name: WORD
      - name: WORD
      item_type: enum
      name: lang_break_type
      pos:
        line_end: 180
        line_start: 170
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    preproc_defs:
    - item_type: preproc_def
      name: LANG_SKIP_BASE64_MIN_SEQUENCES
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
      type_or_value: '1'
    - item_type: preproc_def
      name: LANG_SKIP_BASE64_MIN_CHARS
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
      type_or_value: '50'
    - item_type: preproc_def
      name: LANG_WB5A_PREFIX_MAX_LENGTH
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
      type_or_value: '3 '
    - item_type: preproc_def
      name: allowed_base64_trailers
      pos:
        line_end: 240
        line_start: 239
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
      type_or_value: allowed_base64_leaders
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: id
        type: enum boundary_algorithm
      - name: '*v'
        type: struct lang_tokenizer_vfuncs
      item_type: struct
      name: algorithm
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    - fields:
      - name: (*fn)(struct generic_lang_tokenizer *tok)
        type: bool
      item_type: struct
      name: letter_fn
      pos:
        line_end: 717
        line_start: 715
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-generic.c
    typedefs: []
    union: []
- function_names:
  - IS_DTEXT
  - lang_tokenizer_email_address_create
  - lang_tokenizer_email_address_destroy
  - lang_tokenizer_address_current_token
  - lang_tokenizer_address_parent_data
  - skip_nonlocal_part
  - lang_tokenizer_email_address_too_large
  - lang_tokenizer_email_address_parse_local
  - domain_is_empty
  - lang_tokenizer_email_address_parse_domain
  - lang_tokenizer_address_skip
  - lang_tokenizer_address_update_parent
  - lang_tokenizer_email_address_reset
  - lang_tokenizer_email_address_next
  source_file: /src/dovecot/src/lib-language/lang-tokenizer-address.c
  types:
    enum:
    - enumerators:
      - name: EMAIL_ADDRESS_PARSER_STATE_NONE
        value: '0'
      - name: EMAIL_ADDRESS_PARSER_STATE_LOCALPART
      - name: EMAIL_ADDRESS_PARSER_STATE_SKIP
      - name: EMAIL_ADDRESS_PARSER_STATE_DOMAIN
      - name: EMAIL_ADDRESS_PARSER_STATE_COMPLETE
      item_type: enum
      name: email_address_parser_state
      pos:
        line_end: 19
        line_start: 13
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    preproc_defs: []
    structs:
    - fields:
      - name: tokenizer
        type: struct lang_tokenizer
      - name: state
        type: enum email_address_parser_state
      - name: '*last_word'
        type: string_t
      - name: '*parent_data'
        type: string_t
      - name: max_length
        type: unsigned int
      - name: search
        type: bool
      item_type: struct
      name: email_address_lang_tokenizer
      pos:
        line_end: 28
        line_start: 21
        source_file: /src/dovecot/src/lib-language/lang-tokenizer-address.c
    typedefs: []
    union: []
- function_names:
  - lang_tokenizers_init
  - lang_tokenizers_deinit
  - lang_tokenizer_register
  - lang_tokenizer_unregister
  - lang_tokenizer_find
  - lang_tokenizer_name
  - lang_tokenizer_self_reset
  - lang_tokenizer_create
  - lang_tokenizer_ref
  - lang_tokenizer_unref
  - lang_tokenizer_next_self
  - lang_tokenizer_reset
  - lang_tokenizer_next
  - lang_tokenizer_final
  source_file: /src/dovecot/src/lib-language/lang-tokenizer.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - to_array
  - test_language_detect_finnish
  - test_language_detect_english
  - test_language_detect_french
  - test_language_detect_german
  - test_language_detect_swedish
  - test_language_detect_bokmal
  - test_language_detect_nynorsk
  - test_language_detect_finnish_as_english
  - test_language_detect_na
  - test_language_detect_unknown
  - test_language_find_builtin
  - test_language_register
  - main
  source_file: /src/dovecot/src/lib-language/test-language.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - init_lang_settings
  - test_lang_tokenizer_find
  - test_tokenizer_inputoutput
  - test_tokenizer_inputs
  - test_lang_tokenizer_generic_only
  - test_lang_tokenizer_generic_tr29_only
  - test_lang_tokenizer_generic_tr29_wb5a
  - test_lang_tokenizer_address_only
  - test_lang_tokenizer_address_parent
  - test_lang_tokenizer_address_parent_simple
  - test_lang_tokenizer_address_parent_tr29
  - test_lang_tokenizer_address_search
  - test_lang_tokenizer_delete_trailing_partial_char
  - test_lang_tokenizer_address_maxlen
  source_file: /src/dovecot/src/lib-language/test-lang-tokenizer.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_INPUT_ADDRESS
      pos:
        line_end: 44
        line_start: 33
        source_file: /src/dovecot/src/lib-language/test-lang-tokenizer.c
      type_or_value: "\"@invalid invalid@ Abc Dfg <abc.dfg@example.com>, \" \\\n\t\"Bar
        Baz <bar@example.org>\" \\\n\t\"Foo Bar (comment)foo.bar@host.example.org
        \" \\\n\t\"foo, foo@domain \" \\\n\t\"abcdefghijklmnopqrstuvxyz.abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz@1bcdefghijklmnopqrstuvxy1.2bcdefghijklmnopqrstuvxy2.3bcdefghijklmnopqrstuvxy3.4bcdefghijklmnopqrstuvxy4.5bcdefghijklmnopqrstuvxy5.6bcdefghijklmnopqrstuvxy6.7bcdefghijklmnopqrstuvxy7.8bcdefghijklmnopqrstuvxy8.9bcdefghijklmnopqrstuvxy9.0bcdefghijklmnopqrstuvxy0.tld
        \" \\\n\t\"trailing, period@blue.com. \" \\\n\t\"multi-trialing, mul@trail.com.....
        \" \\\n\t\"m@s \" \\\n\t\"hypen@hypen-hypen.com \" \\\n\t\"hypen@hypen-hypen-sick.com.-\""
    structs:
    - fields:
      - name: '*str'
        type: char
      - name: truncated_len
        type: unsigned int
      item_type: struct
      name: "tests[] = {\n\t\t/* non-truncated */\n\t\t{ \"\\x7f\", 1 },\n\t\t{ \"\\xC2\\x80\",
        2 },\n\t\t{ \"\\xE0\\x80\\x80\", 3 },\n\t\t{ \"\\xF0\\x80\\x80\\x80\", 4 },\n\n\t\t/*
        truncated */\n\t\t{ \"\\xF0\\x80\\x80\", 0 },\n\t\t{ \"x\\xF0\\x80\\x80\",
        1 },\n\t}"
      pos:
        line_end: 471
        line_start: 468
        source_file: /src/dovecot/src/lib-language/test-lang-tokenizer.c
    typedefs: []
    union: []
- function_names:
  - lang_filter_stopwords_read_list
  - lang_filter_stopwords_destroy
  - lang_filter_stopwords_create
  - lang_filter_stopwords_filter
  source_file: /src/dovecot/src/lib-language/lang-filter-stopwords.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: STOPWORDS_FILE_FORMAT
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-language/lang-filter-stopwords.c
      type_or_value: '"%s/stopwords_%s.txt"'
    - item_type: preproc_def
      name: STOPWORDS_CUTCHARS
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-language/lang-filter-stopwords.c
      type_or_value: '"|#\t "'
    - item_type: preproc_def
      name: STOPWORDS_DISALLOWED_CHARS
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-language/lang-filter-stopwords.c
      type_or_value: '"/\\<>.,\":()\t\n\r"'
    structs:
    - fields:
      - name: filter
        type: struct lang_filter
      - name: '*lang'
        type: struct language
      - name: pool
        type: pool_t
      - name: '*stopwords_dir'
        type: char
      item_type: struct
      name: lang_filter_stopwords
      pos:
        line_end: 23
        line_start: 17
        source_file: /src/dovecot/src/lib-language/lang-filter-stopwords.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-tokenizer.h
  types:
    enum:
    - enumerators:
      - name: LANG_TOKENIZER_FLAG_SEARCH
        value: '0x01'
      item_type: enum
      name: lang_tokenizer_flags
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/dovecot/src/lib-language/lang-tokenizer.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-tokenizer-common.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-language/lang-library.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - proxy_send_login
  - pop3_proxy_continue_sasl_auth
  - pop3_proxy_parse_referral
  - pop3_proxy_parse_line
  - pop3_proxy_reset
  - pop3_proxy_send_failure_reply
  - pop3_proxy_failed
  - pop3_proxy_get_state
  source_file: /src/dovecot/src/pop3-login/pop3-proxy.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/pop3-login/client-authenticate.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/pop3-login/pop3-login-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_stls
  - cmd_quit
  - cmd_xclient
  - client_command_execute
  - pop3_client_input
  - client_read_cmd_name
  - pop3_client_input_next_cmd
  - pop3_client_alloc
  - pop3_client_create
  - pop3_client_destroy
  - get_apop_challenge
  - pop3_client_notify_auth_ready
  - pop3_client_notify_starttls
  - pop3_client_starttls
  - client_send_reply
  - pop3_client_notify_disconnect
  - pop3_login_die
  - pop3_login_preinit
  - pop3_login_init
  - pop3_login_deinit
  - main
  source_file: /src/dovecot/src/pop3-login/client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLIENT_MAX_BAD_COMMANDS
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/pop3-login/client.c
      type_or_value: '3'
    - item_type: preproc_def
      name: CLIENT_MAX_CMD_LEN
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/pop3-login/client.c
      type_or_value: '8'
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_capa
  - pop3_client_send_referral
  - pop3_client_auth_result
  - cmd_auth
  - cmd_user
  - cmd_pass
  - cmd_apop
  source_file: /src/dovecot/src/pop3-login/client-authenticate.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/pop3-login/client.h
  types:
    enum:
    - enumerators:
      - name: POP3_PROXY_BANNER
        value: '0'
      - name: POP3_PROXY_XCLIENT
      - name: POP3_PROXY_LOGIN1
      - name: POP3_PROXY_LOGIN2
      - name: POP3_PROXY_STARTTLS
      - name: POP3_PROXY_STATE_COUNT
      item_type: enum
      name: pop3_proxy_state
      pos:
        line_end: 15
        line_start: 7
        source_file: /src/dovecot/src/pop3-login/client.h
    - enumerators:
      - name: POP3_CMD_REPLY_OK
      - name: POP3_CMD_REPLY_ERROR
      - name: POP3_CMD_REPLY_AUTH_ERROR
      - name: POP3_CMD_REPLY_TEMPFAIL
      - name: POP3_CMD_REPLY_LIMIT
      item_type: enum
      name: pop3_cmd_reply
      pos:
        line_end: 35
        line_start: 29
        source_file: /src/dovecot/src/pop3-login/client.h
    preproc_defs: []
    structs:
    - fields:
      - name: common
        type: struct client
      - name: '*current_cmd'
        type: char
      - name: '*last_user'
        type: char
      - name: '*apop_challenge'
        type: char
      - name: apop_server_pid
        type: unsigned int
      - name: proxy_state
        type: enum pop3_proxy_state
      - name: proxy_xclient
        type: bool
      - name: auth_mech_name_parsed
        type: bool
      item_type: struct
      name: pop3_client
      pos:
        line_end: 27
        line_start: 17
        source_file: /src/dovecot/src/pop3-login/client.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/pop3-login/pop3-proxy.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_check_http_request
  - dlua_http_request_gc
  - dlua_http_request_add_header
  - dlua_http_request_remove_header
  - dlua_http_request_set_payload
  - dlua_http_request_submit
  - dlua_http_request_set_event
  - dlua_http_request_get_event
  - dlua_push_http_request
  - dlua_check_http_client
  - dlua_http_client_gc
  - dlua_http_resp_gc
  - dlua_check_http_response
  - dlua_http_response_get_status
  - dlua_http_response_get_payload
  - dlua_http_response_get_header
  - dlua_http_response_get_reason
  - dlua_push_http_response
  - dlua_http_response_input_payload
  - dlua_http_response_read_payload
  - dlua_http_request_callback
  - array_foreach
  - dlua_http_request_new
  - dlua_push_http_client
  - parse_client_settings
  - dlua_http_client_new
  - dlua_dovecot_http_register
  source_file: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DLUA_DOVECOT_HTTP
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
      type_or_value: '"http"'
    - item_type: preproc_def
      name: DLUA_HTTP_CLIENT
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
      type_or_value: '"struct http_client"'
    - item_type: preproc_def
      name: DLUA_HTTP_CLIENT_REQUEST
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
      type_or_value: '"struct http_client_request"'
    - item_type: preproc_def
      name: DLUA_HTTP_RESPONSE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
      type_or_value: '"struct dlua_http_response"'
    structs:
    - fields:
      - name: version_major
        type: unsigned char
      - name: version_minor
        type: unsigned char
      - name: status
        type: unsigned int
      - name: '*reason'
        type: char
      - name: '*location'
        type: char
      - name: '*payload'
        type: string_t
      - name: date
        type: time_t
      - name: (http_header_field)
        type: ARRAY_TYPE
      - name: pool
        type: pool_t
      - name: '*error'
        type: char
      - name: '*event'
        type: struct event
      item_type: struct
      name: dlua_http_response
      pos:
        line_end: 34
        line_start: 22
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    - fields:
      - name: '*io'
        type: struct io
      - name: '*payload_istream'
        type: struct istream
      - name: '*payload_str'
        type: string_t
      - name: '*error'
        type: char
      - name: '*event'
        type: struct event
      - name: pool
        type: pool_t
      item_type: struct
      name: dlua_http_response_payload_context
      pos:
        line_end: 43
        line_start: 36
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot-http.c
    typedefs: []
    union: []
- function_names:
  - luaL_setfuncs
  - luaL_setmetatable
  - lua_isinteger
  - lua_seti
  - lua_tointegerx
  - lua_resume_compat
  source_file: /src/dovecot/src/lib-lua/dlua-compat.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-lua/dlua-script.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_SCRIPT_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-lua/dlua-script.h
      type_or_value: '1'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*file'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: dlua_settings
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/lib-lua/dlua-script.h
    typedefs: []
    union: []
- function_names:
  - test_dns_finished
  - test_dns_lua_init
  - test_dns_lua_deinit
  - test_dns_lua_common
  - test_dns_server_close
  - test_dns_server_input_line
  - test_dns_server_input
  - test_dns_server_listen
  - test_dns_lua
  - test_dns_lua_error
  - main
  source_file: /src/dovecot/src/lib-lua/test-dns-lua.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_DNS_SERVER_SOCKET_PATH
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-lua/test-dns-lua.c
      type_or_value: '".test-dns-server"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_get_file_line
  - dlua_check_event_passthrough
  - dlua_push_event_passthrough
  - dlua_event_pt_append_log_prefix
  - dlua_event_pt_replace_log_prefix
  - dlua_event_pt_set_name
  - dlua_event_pt_set_always_log_source
  - dlua_event_pt_add_str
  - dlua_event_pt_add_int
  - dlua_event_pt_add_timeval
  - dlua_event_pt_inc_int
  - dlua_event_pt_log_debug
  - dlua_event_pt_log_info
  - dlua_event_pt_log_warning
  - dlua_event_pt_log_error
  - dlua_event_gc
  - dlua_check_event
  - dlua_push_event
  - dlua_push_timeval
  - dlua_event_append_log_prefix
  - dlua_event_replace_log_prefix
  - dlua_event_set_name
  - dlua_event_set_always_log_source
  - dlua_event_set_forced_debug
  - dlua_event_unset_forced_debug
  - dlua_event_add_str
  - dlua_event_add_int
  - dlua_event_add_timeval
  - dlua_event_inc_int
  - dlua_event_log_debug
  - dlua_event_log_info
  - dlua_event_log_warning
  - dlua_event_log_error
  - dlua_event_passthrough_abort
  - dlua_event_passthrough_event
  - dlua_event_new
  - dlua_event_register
  - dlua_i_debug
  - dlua_i_info
  - dlua_i_warning
  - dlua_i_error
  - dlua_has_flag
  - dlua_set_flag
  - dlua_clear_flag
  - dlua_script_strict_index
  - dlua_script_strict_newindex
  - dlua_restrict_global_variables
  - dlua_gettimeofday
  - dlua_nanoseconds
  - dlua_microseconds
  - net_ip_family
  - dlua_tabescape
  - dlua_tabunescape
  - dlua_split_tabescaped
  - dlua_var_expand
  - dlua_base64_encode
  - dlua_base64_decode
  - dlua_get_dovecot
  - dlua_dovecot_register
  - dlua_event_log
  source_file: /src/dovecot/src/lib-lua/dlua-dovecot.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_SCRIPT_DOVECOT
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot.c
      type_or_value: '"dovecot"'
    - item_type: preproc_def
      name: LUA_SCRIPT_DOVECOT_BASE64
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot.c
      type_or_value: '"base64"'
    - item_type: preproc_def
      name: DLUA_EVENT_PASSTHROUGH
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot.c
      type_or_value: '"struct event_passthrough"'
    - item_type: preproc_def
      name: DLUA_EVENT
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-lua/dlua-dovecot.c
      type_or_value: '"struct event"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_test_assert
  - GENERATE_GETTERS
  - check_table_get_string_ok
  - check_table_get_string_err
  - check_table_missing
  - test_lua
  - test_tls
  - check_tointegerx_compat
  - test_compat_tointegerx_and_isinteger
  - test_lua_base64
  - main
  source_file: /src/dovecot/src/lib-lua/test-lua.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: output
        type: lua_Integer
      - name: isnum
        type: bool
      item_type: struct
      name: "str_tests[] = {\n\t\t{ \"-1\", -1, TRUE },\n\t\t{ \"0\", 0, TRUE },\n\t\t{
        \"1\", 1, TRUE },\n\t\t{ \"-2147483648\", -2147483648, TRUE },\n\t\t{ \"2147483647\",
        2147483647, TRUE },\n\t\t{ \"0x123\", 0x123, TRUE },\n\t\t{ \"0123\", 123,
        TRUE }, /* NB: lua doesn't use leading zero for octal */\n\t\t{ \"0xabcdef\",
        0xabcdef, TRUE },\n\t\t{ \"0xabcdefg\", 0, FALSE },\n\t\t{ \"abc\", 0, FALSE
        },\n\t\t{ \"1.525\", 0, FALSE },\n\t\t{ \"52.51\", 0, FALSE },\n\t}"
      pos:
        line_end: 437
        line_start: 433
        source_file: /src/dovecot/src/lib-lua/test-lua.c
    - fields:
      - name: input
        type: lua_Number
      - name: output
        type: lua_Integer
      - name: isnum
        type: bool
      item_type: struct
      name: "num_tests[] = {\n\t\t{ -1, -1, TRUE },\n\t\t{ 0, 0, TRUE },\n\t\t{ 1,
        1, TRUE },\n\t\t{ INT_MIN, INT_MIN, TRUE },\n\t\t{ INT_MAX, INT_MAX, TRUE
        },\n\t\t{ 1.525, 0, FALSE },\n\t\t{ 52.51, 0, FALSE },\n\t\t{ NAN, 0, FALSE
        },\n\t\t{ +INFINITY, 0, FALSE },\n\t\t{ -INFINITY, 0, FALSE },\n\t}"
      pos:
        line_end: 455
        line_start: 451
        source_file: /src/dovecot/src/lib-lua/test-lua.c
    - fields:
      - name: input
        type: lua_Integer
      - name: output
        type: lua_Integer
      item_type: struct
      name: "int_tests[] = {\n\t\t{ -1, -1 },\n\t\t{ 0, 0 },\n\t\t{ 1, 1 },\n\t\t{
        INT_MIN, INT_MIN },\n\t\t{ INT_MAX, INT_MAX },\n\t}"
      pos:
        line_end: 470
        line_start: 467
        source_file: /src/dovecot/src/lib-lua/test-lua.c
    typedefs: []
    union: []
- function_names:
  - dluaL_error
  source_file: /src/dovecot/src/lib-lua/dlua-error.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lua_isstring
  - lua_isnumber
  - lua_toboolean
  - lua_pushboolean
  - lua_isinteger
  - DLUA_TABLE_STRING
  - DLUA_TABLE_STRING_SELF
  - DLUA_TABLE_INTEGER
  - DLUA_TABLE_ENUM
  - DLUA_TABLE_ENUM_NOPREFIX
  - DLUA_TABLE_DOUBLE
  - DLUA_TABLE_BOOLEAN
  - DLUA_TABLE_NULL
  - DLUA_REQUIRE_ARGS_IN
  - DLUA_REQUIRE_ARGS
  - luaL_error
  - dlua_pcall_yieldable
  source_file: /src/dovecot/src/lib-lua/dlua-script-private.h
  types:
    enum:
    - enumerators:
      - name: DLUA_TABLE_VALUE_STRING
        value: '0'
      - name: DLUA_TABLE_VALUE_DOUBLE
      - name: DLUA_TABLE_VALUE_BOOLEAN
      - name: DLUA_TABLE_VALUE_INTEGER
      - name: DLUA_TABLE_VALUE_NULL
      item_type: enum
      name: dlua_table_value_type
      pos:
        line_end: 70
        line_start: 64
        source_file: /src/dovecot/src/lib-lua/dlua-script-private.h
    preproc_defs:
    - item_type: preproc_def
      name: LUA_SCRIPT_PRIVATE_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-lua/dlua-script-private.h
      type_or_value: '1'
    - item_type: preproc_def
      name: DLUA_TABLE_END
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/lib-lua/dlua-script-private.h
      type_or_value: '{ .name = NULL }'
    structs:
    - fields:
      - name: '*prev'
        type: struct dlua_script
      - name: pool
        type: pool_t
      - name: '*L'
        type: lua_State
      - name: '*event'
        type: struct event
      - name: '*pending_event_passthrough'
        type: struct event_passthrough
      - name: '*filename'
        type: char
      - name: '*in'
        type: struct istream
      - name: last_read
        type: ssize_t
      - name: ref
        type: int
      - name: init
        type: bool
      item_type: struct
      name: dlua_script
      pos:
        line_end: 62
        line_start: 48
        source_file: /src/dovecot/src/lib-lua/dlua-script-private.h
    - fields:
      - name: '*name'
        type: char
      - name: type
        type: enum dlua_table_value_type
      - name: v
        type: "union {\n\t\tconst char *s;\n\t\tptrdiff_t i;\n\t\tdouble d;\n\t\tbool
          b;\n\t}"
      item_type: struct
      name: dlua_table_values
      pos:
        line_end: 81
        line_start: 72
        source_file: /src/dovecot/src/lib-lua/dlua-script-private.h
    typedefs:
    - item_type: typedef
      name: dlua_pcall_yieldable_callback_t(lua_State *L, void *context, int status)
      pos:
        line_end: 83
        line_start: 83
        source_file: /src/dovecot/src/lib-lua/dlua-script-private.h
      type: void
    union: []
- function_names:
  - test_dict_register
  - test_dict_finished
  - test_dict_lua
  - main
  source_file: /src/dovecot/src/lib-lua/test-dict-lua.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_dns_simple_post_input
  - test_dns_simple_post
  - test_server_simple_post_init
  - test_server_simple_post_disconnect
  - test_server_simple_post_input
  - test_server_simple_post_deinit
  - test_server_simple_post
  - test_client_simple_post_run_post
  - test_client_simple_post
  - test_client_second_post
  - test_simple_post
  - test_second_post
  - test_bad_settings
  - test_set_event
  - test_set_no_event
  - test_client_progress_timeout
  - test_client_init
  - test_client_deinit
  - test_client_run
  - server_connection_init_ssl
  - server_connection_input
  - server_connection_init
  - server_connection_deinit
  - server_connection_destroy
  - server_connection_accept
  - test_server_run
  - test_open_server_fd
  - test_run_server
  - test_run_dns
  - test_run_client
  - test_run_client_server
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLIENT_PROGRESS_TIMEOUT
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
      type_or_value: '10'
    - item_type: preproc_def
      name: SERVER_KILL_TIMEOUT_SECS
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
      type_or_value: '20'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*context'
        type: void
      - name: '*ssl_iostream'
        type: struct ssl_iostream
      - name: '*real_input'
        type: struct istream
      - name: '*real_output'
        type: struct ostream
      - name: pool
        type: pool_t
      - name: version_sent
        type: bool
      item_type: struct
      name: server_connection
      pos:
        line_end: 46
        line_start: 36
        source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
    - fields:
      - name: '*to'
        type: struct timeout
      - name: serviced
        type: bool
      - name: eoh
        type: bool
      - name: agent_checked
        type: bool
      - name: post_checked
        type: bool
      item_type: struct
      name: _simple_post_sctx
      pos:
        line_end: 144
        line_start: 138
        source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
    - fields:
      - name: index
        type: unsigned int
      - name: server_test
        type: test_server_init_t
      item_type: struct
      name: test_server_data
      pos:
        line_end: 697
        line_start: 694
        source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
    typedefs:
    - item_type: typedef
      name: (*test_server_init_t)(unsigned int index)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
      type: void
    - item_type: typedef
      name: (*test_client_init_t)(void)
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
      type: bool
    - item_type: typedef
      name: (*test_dns_init_t)(void)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/dovecot/src/lib-lua/test-lua-http-client.c
      type: void
    union: []
- function_names:
  - DLUA_WRAP_C_DATA
  source_file: /src/dovecot/src/lib-lua/dlua-wrapper.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_test_assert
  - test_io_lua
  - main
  source_file: /src/dovecot/src/lib-lua/test-io-lua.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - luaL_newmetatable
  - lua_load
  - luaL_newlibtable
  - luaL_newlib
  - lua_resume
  source_file: /src/dovecot/src/lib-lua/dlua-compat.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_OK
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-lua/dlua-compat.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - dlua_alloc
  - dlua_reader
  - dlua_script_from_state
  - dlua_pcall
  - dlua_call_deinit_function
  - dlua_script_init
  - dlua_atpanic
  - dlua_create_script
  - dlua_run_script
  - dlua_script_create_finish
  - dlua_script_create_string
  - dlua_script_create_file
  - dlua_script_create_stream
  - dlua_script_create_auto
  - dlua_script_destroy
  - dlua_script_ref
  - dlua_script_unref
  - dlua_script_has_function
  - dlua_set_members
  - dlua_dump_stack
  - dlua_register
  source_file: /src/dovecot/src/lib-lua/dlua-script.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_SCRIPT_REGISTRY_KEY
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-lua/dlua-script.c
      type_or_value: '"DLUA_SCRIPT"'
    - item_type: preproc_def
      name: LUA_SCRIPT_INIT_FN
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-lua/dlua-script.c
      type_or_value: '"script_init"'
    - item_type: preproc_def
      name: LUA_SCRIPT_DEINIT_FN
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-lua/dlua-script.c
      type_or_value: '"script_deinit"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_io_close
  - dlua_io_gc
  - dlua_io_tostring
  - dlua_o_write
  - dlua_o_flush
  - dlua_io_setvbuf
  - dlua_read_line
  - dlua_read_bytes
  - dlua_i_read_common
  - dlua_i_read
  - dlua_i_seek
  - dlua_i_readline
  - dlua_i_lines
  - dlua_dovecot_io_register
  - dlua_push_istream
  - dlua_push_ostream
  source_file: /src/dovecot/src/lib-lua/dlua-iostream.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DOVECOT_FILEHANDLE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-lua/dlua-iostream.c
      type_or_value: '"struct dlua_iostream*"'
    - item_type: preproc_def
      name: DLUA_DOVECOT_IO
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-lua/dlua-iostream.c
      type_or_value: '"io"'
    - item_type: preproc_def
      name: MAXARGLINE
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-lua/dlua-iostream.c
      type_or_value: '250'
    structs:
    - fields:
      - name: stream
        type: struct luaL_Stream
      - name: '*is'
        type: struct istream
      - name: '*os'
        type: struct ostream
      - name: input
        type: bool
      item_type: struct
      name: dlua_iostream
      pos:
        line_end: 19
        line_start: 14
        source_file: /src/dovecot/src/lib-lua/dlua-iostream.c
    typedefs: []
    union: []
- function_names:
  - adj
  - dlua_table_get
  - dlua_table_get_by_str
  - dlua_table_get_by_int
  - dlua_table_get_by_thread
  - GET_INTTYPE
  - GET_DATAPTR
  - GET_GENERIC
  - dlua_table_get_luainteger_by_str
  - dlua_table_get_luainteger_by_int
  - dlua_table_get_luainteger_by_thread
  - dlua_strtable_to_kvarray
  - dlua_table_to_array
  source_file: /src/dovecot/src/lib-lua/dlua-table.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_push_vfstring
  - dlua_push_fstring
  source_file: /src/dovecot/src/lib-lua/dlua-pushstring.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - call_resume_callback
  - queue_resume_callback
  - dlua_pcall_yieldable_continue
  - dlua_pcall_yieldable_resume
  - dlua_pcall_yieldable
  source_file: /src/dovecot/src/lib-lua/dlua-resume.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PCALL_RESUME_STATE
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-lua/dlua-resume.c
      type_or_value: '"pcall-resume-state"'
    - item_type: preproc_def
      name: RESUME_TIMEOUT
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-lua/dlua-resume.c
      type_or_value: '"resume-timeout"'
    - item_type: preproc_def
      name: RESUME_NARGS
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-lua/dlua-resume.c
      type_or_value: '"resume-nargs"'
    structs:
    - fields:
      - name: '*callback'
        type: dlua_pcall_yieldable_callback_t
      - name: '*context'
        type: void
      - name: '*to'
        type: struct timeout
      - name: status
        type: int
      item_type: struct
      name: dlua_pcall_resume_state
      pos:
        line_end: 16
        line_start: 11
        source_file: /src/dovecot/src/lib-lua/dlua-resume.c
    typedefs: []
    union: []
- function_names:
  - dlua_init_thread_table
  - warn_about_leaked_threads
  - dlua_free_thread_table
  - dlua_script_new_thread
  - log_tls_leak
  - warn_about_tls_leaks
  - dlua_script_close_thread
  - get_tls_table
  - dlua_tls_set_ptr
  - dlua_tls_get_ptr
  - dlua_tls_set_int
  - dlua_tls_get_int
  - dlua_tls_clear
  source_file: /src/dovecot/src/lib-lua/dlua-thread.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_THREAD_REGISTRY_KEY
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/lib-lua/dlua-thread.c
      type_or_value: '"DLUA_THREADS"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dregex_code_int_malloc
  - dregex_code_int_free
  - dregex_code_guard
  - dregex_code_init
  - dregex_code_create_params
  - dregex_code_create
  - convert_to_sptr
  - handle_error
  - handle_error
  - dregex_code_compile
  - dregex_code_export
  - dregex_code_import
  - extract_matches
  - dregex_code_match_int
  - dregex_code_match_groups
  - dregex_code_match
  - dregex_code_replace_full
  - do
  - dregex_code_replace
  - dregex_code_free
  - dregex_match_groups
  - dregex_match
  - dregex_replace
  source_file: /src/dovecot/src/lib-regex/regex.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PCRE2_CODE_UNIT_WIDTH
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-regex/regex.c
      type_or_value: '32'
    - item_type: preproc_def
      name: DREGEX_MAX_DEPTH
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-regex/regex.c
      type_or_value: '100'
    - item_type: preproc_def
      name: DREGEX_MAX_MATCHES
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-regex/regex.c
      type_or_value: '10000000'
    - item_type: preproc_def
      name: DREGEX_MAX_CAPTURE_GROUPS
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-regex/regex.c
      type_or_value: '100'
    - item_type: preproc_def
      name: DREGEX_MAX_CPU_SECONDS
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-regex/regex.c
      type_or_value: '1'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*cctx'
        type: pcre2_compile_context
      - name: '*gctx'
        type: pcre2_general_context
      - name: '*mctx'
        type: pcre2_match_context
      - name: '*pat'
        type: pcre2_code
      - name: '*climit'
        type: struct cpu_limit
      - name: max_depth
        type: unsigned int
      - name: max_cpu_seconds
        type: unsigned int
      - name: max_capture_groups
        type: unsigned int
      - name: flags
        type: enum dregex_flags
      item_type: struct
      name: dregex_code
      pos:
        line_end: 35
        line_start: 20
        source_file: /src/dovecot/src/lib-regex/regex.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-regex/empty.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - NO_DREGEX_SUPPORT_CODE
  - dregex_match
  - dregex_match_groups
  - dregex_replace
  - dregex_code_create
  - dregex_code_compile
  - dregex_code_import
  - dregex_code_match_groups
  - dregex_code_match
  - dregex_code_replace_full
  - dregex_code_replace
  source_file: /src/dovecot/src/lib-regex/dregex.h
  types:
    enum:
    - enumerators:
      - name: DREGEX_ANCHORED
        value: BIT(0)
      - name: DREGEX_NOSUB
        value: BIT(1)
      - name: DREGEX_ICASE
        value: BIT(2)
      - name: DREGEX_NEWLINE
        value: BIT(3)
      - name: DREGEX_NOTBOL
        value: BIT(4)
      - name: DREGEX_NOTEOL
        value: BIT(5)
      - name: DREGEX_ASCII_ONLY
        value: BIT(6)
      - name: DREGEX_EXTENDED
        value: BIT(7)
      - name: DREGEX_NO_EMPTY_SUB
        value: BIT(8)
      - name: DREGEX_REPLACE_ALL
        value: BIT(9)
      - name: DREGEX_REPLACE_LITERAL
        value: BIT(10)
      item_type: enum
      name: dregex_flags
      pos:
        line_end: 28
        line_start: 3
        source_file: /src/dovecot/src/lib-regex/dregex.h
    preproc_defs:
    - item_type: preproc_def
      name: DREGEX_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-regex/dregex.h
      type_or_value: '1'
    - item_type: preproc_def
      name: NO_DREGEX_SUPPORT
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/dovecot/src/lib-regex/dregex.h
      type_or_value: '"Missing regular expression support"'
    structs:
    - fields:
      - name: max_cpu_seconds
        type: unsigned int
      - name: max_capture_groups
        type: unsigned int
      - name: max_depth
        type: unsigned int
      item_type: struct
      name: dregex_params
      pos:
        line_end: 34
        line_start: 30
        source_file: /src/dovecot/src/lib-regex/dregex.h
    typedefs: []
    union: []
- function_names:
  - run_match_tests
  - MATCH_CASE_FULL
  - MATCH_CASE
  - STR
  - REP
  - REP10
  - test_dregex_match
  - run_replace_tests
  - REP_CASE_FULL
  - REP_CASE
  - test_dregex_replace
  - main
  - main
  source_file: /src/dovecot/src/lib-regex/test-regex.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MATCH_CASE_END
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/dovecot/src/lib-regex/test-regex.c
      type_or_value: '{ .pattern = NULL }'
    - item_type: preproc_def
      name: REP_CASE_END
      pos:
        line_end: 267
        line_start: 266
        source_file: /src/dovecot/src/lib-regex/test-regex.c
      type_or_value: '{ .pattern = NULL }'
    structs:
    - fields:
      - name: '*subject'
        type: char
      - name: '*pattern'
        type: char
      - name: '*replacement'
        type: char
      - name: '*result'
        type: char
      - name: '*error'
        type: char
      - name: flags
        type: enum dregex_flags
      - name: compile_ret
        type: int
      - name: match_ret
        type: int
      item_type: struct
      name: test_case
      pos:
        line_end: 21
        line_start: 12
        source_file: /src/dovecot/src/lib-regex/test-regex.c
    typedefs: []
    union: []
- function_names:
  - i_stream_bzlib_close
  - bzlib_read_error
  - i_stream_bzlib_read
  - i_stream_bzlib_init
  - i_stream_bzlib_reset
  - i_stream_bzlib_seek
  - i_stream_bzlib_sync
  - i_stream_create_bz2
  source_file: /src/dovecot/src/lib-compression/istream-bzlib.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CHUNK_SIZE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-compression/istream-bzlib.c
      type_or_value: (1024*64)
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: zs
        type: bz_stream
      - name: eof_offset
        type: uoff_t
      - name: last_parent_statbuf
        type: struct stat
      - name: hdr_read
        type: bool
      - name: marked
        type: bool
      - name: zs_closed
        type: bool
      item_type: struct
      name: bzlib_istream
      pos:
        line_end: 22
        line_start: 12
        source_file: /src/dovecot/src/lib-compression/istream-bzlib.c
    typedefs: []
    union: []
- function_names:
  - copy_compressed_input_error
  - copy_decompressed_input_error
  - i_stream_decompress_close
  - i_stream_decompress_destroy
  - i_stream_decompress_not_compressed
  - i_stream_decompress_detect
  - i_stream_decompress_read
  - i_stream_decompress_reset
  - i_stream_decompress_seek
  - i_stream_decompress_sync
  - i_stream_decompress_stat
  - i_stream_create_decompress
  source_file: /src/dovecot/src/lib-compression/istream-decompress.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*compressed_input'
        type: struct istream
      - name: '*decompressed_input'
        type: struct istream
      - name: flags
        type: enum istream_decompress_flags
      item_type: struct
      name: decompress_istream
      pos:
        line_end: 11
        line_start: 6
        source_file: /src/dovecot/src/lib-compression/istream-decompress.c
    typedefs: []
    union: []
- function_names:
  - bench_compression_speed
  - print_usage
  - main
  source_file: /src/dovecot/src/lib-compression/bench-compression.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - o_stream_lz4_close
  - o_stream_lz4_send_outbuf
  - o_stream_lz4_compress
  - o_stream_lz4_send_chunk
  - o_stream_lz4_flush
  - o_stream_lz4_get_buffer_used_size
  - o_stream_lz4_get_buffer_avail_size
  - o_stream_lz4_sendv
  - o_stream_create_lz4_auto
  source_file: /src/dovecot/src/lib-compression/ostream-lz4.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CHUNK_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-compression/ostream-lz4.c
      type_or_value: OSTREAM_LZ4_CHUNK_SIZE
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: compressbuf[CHUNK_SIZE]
        type: unsigned char
      - name: compressbuf_offset
        type: unsigned int
      - name: "outbuf[IOSTREAM_LZ4_CHUNK_PREFIX_LEN +\n\t                     LZ4_COMPRESSBOUND(CHUNK_SIZE)]"
        type: unsigned char
      - name: outbuf_offset
        type: unsigned int
      item_type: struct
      name: lz4_ostream
      pos:
        line_end: 23
        line_start: 13
        source_file: /src/dovecot/src/lib-compression/ostream-lz4.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-compression/compression.h
  types:
    enum:
    - enumerators:
      - name: ISTREAM_DECOMPRESS_FLAG_TRY
        value: BIT(0)
      item_type: enum
      name: istream_decompress_flags
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/lib-compression/compression.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*ext'
        type: char
      - name: (*is_compressed)(struct istream *input)
        type: bool
      - name: '*(*create_istream)(struct istream *input)'
        type: struct istream
      - name: '*(*create_ostream_auto)(struct ostream *output, struct event *event)'
        type: struct ostream
      item_type: struct
      name: compression_handler
      pos:
        line_end: 15
        line_start: 9
        source_file: /src/dovecot/src/lib-compression/compression.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-compression/iostream-lz4.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IOSTREAM_LZ4_MAGIC
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-compression/iostream-lz4.h
      type_or_value: '"Dovecot-LZ4\x0d\x2a\x9b\xc5"'
    - item_type: preproc_def
      name: IOSTREAM_LZ4_MAGIC_LEN
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-compression/iostream-lz4.h
      type_or_value: (sizeof(IOSTREAM_LZ4_MAGIC)-1)
    - item_type: preproc_def
      name: OSTREAM_LZ4_CHUNK_SIZE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-compression/iostream-lz4.h
      type_or_value: (1024*64)
    - item_type: preproc_def
      name: ISTREAM_LZ4_CHUNK_SIZE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-compression/iostream-lz4.h
      type_or_value: (1024*1024)
    - item_type: preproc_def
      name: IOSTREAM_LZ4_CHUNK_PREFIX_LEN
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/lib-compression/iostream-lz4.h
      type_or_value: '4 '
    structs:
    - fields:
      - name: magic[IOSTREAM_LZ4_MAGIC_LEN]
        type: unsigned char
      - name: max_uncompressed_chunk_size[4]
        type: unsigned char
      item_type: struct
      name: iostream_lz4_header
      pos:
        line_end: 17
        line_start: 13
        source_file: /src/dovecot/src/lib-compression/iostream-lz4.h
    typedefs: []
    union: []
- function_names:
  - i_stream_lz4_close
  - lz4_read_error
  - i_stream_lz4_read_header
  - i_stream_lz4_read_chunk_header
  - i_stream_lz4_read
  - i_stream_lz4_reset
  - i_stream_lz4_seek
  - i_stream_lz4_sync
  - i_stream_create_lz4
  source_file: /src/dovecot/src/lib-compression/istream-lz4.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: last_parent_statbuf
        type: struct stat
      - name: '*chunk_buf'
        type: buffer_t
      - name: chunk_size
        type: uint32_t
      - name: marked
        type: bool
      - name: header_read
        type: bool
      item_type: struct
      name: lz4_istream
      pos:
        line_end: 22
        line_start: 12
        source_file: /src/dovecot/src/lib-compression/istream-lz4.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - bzlib_settings_check
  - o_stream_bzlib_close
  - o_stream_zlib_send_outbuf
  - o_stream_bzlib_send_chunk
  - o_stream_bzlib_send_flush
  - o_stream_bzlib_flush
  - o_stream_bzlib_get_buffer_used_size
  - o_stream_bzlib_get_buffer_avail_size
  - o_stream_bzlib_sendv
  - o_stream_create_bz2
  - o_stream_create_bz2_auto
  source_file: /src/dovecot/src/lib-compression/ostream-bzlib.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CHUNK_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-compression/ostream-bzlib.c
      type_or_value: (1024*64)
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: zs
        type: bz_stream
      - name: outbuf[CHUNK_SIZE]
        type: char
      - name: outbuf_offset
        type: unsigned int
      - name: flushed
        type: bool
      item_type: struct
      name: bzlib_ostream
      pos:
        line_end: 21
        line_start: 13
        source_file: /src/dovecot/src/lib-compression/ostream-bzlib.c
    - fields:
      - name: pool
        type: pool_t
      - name: compress_bz2_block_size_100k
        type: unsigned int
      item_type: struct
      name: bzlib_settings
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-compression/ostream-bzlib.c
    typedefs: []
    union: []
- function_names:
  - is_compressed_zlib
  - is_compressed_bzlib
  - is_compressed_lz4
  - is_compressed_zstd
  - compression_lookup_handler
  - compression_detect_handler
  - compression_lookup_handler_from_ext
  source_file: /src/dovecot/src/lib-compression/compression.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: i_stream_create_bz2
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-compression/compression.c
      type_or_value: 'NULL'
    - item_type: preproc_def
      name: o_stream_create_bz2_auto
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-compression/compression.c
      type_or_value: 'NULL'
    - item_type: preproc_def
      name: i_stream_create_lz4
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-compression/compression.c
      type_or_value: 'NULL'
    - item_type: preproc_def
      name: o_stream_create_lz4_auto
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-compression/compression.c
      type_or_value: 'NULL'
    - item_type: preproc_def
      name: i_stream_create_zstd
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-compression/compression.c
      type_or_value: 'NULL'
    - item_type: preproc_def
      name: o_stream_create_zstd_auto
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-compression/compression.c
      type_or_value: 'NULL'
    - item_type: preproc_def
      name: ZSTD_MAGICNUMBER
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/dovecot/src/lib-compression/compression.c
      type_or_value: '0xFD2FB528    '
    structs: []
    typedefs: []
    union: []
- function_names:
  - ZSTD_minCLevel
  - DEF
  - zstd_settings_check
  - o_stream_zstd_write_error
  - o_stream_zstd_send_outbuf
  - o_stream_zstd_sendv
  - o_stream_zstd_send_flush
  - o_stream_zstd_flush
  - o_stream_zstd_close
  - o_stream_create_zstd
  - o_stream_create_zstd_auto
  source_file: /src/dovecot/src/lib-compression/ostream-zstd.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: '*cstream'
        type: ZSTD_CStream
      - name: output
        type: ZSTD_outBuffer
      - name: '*outbuf'
        type: unsigned char
      - name: flushed
        type: bool
      - name: closed
        type: bool
      - name: finished
        type: bool
      item_type: struct
      name: zstd_ostream
      pos:
        line_end: 30
        line_start: 19
        source_file: /src/dovecot/src/lib-compression/ostream-zstd.c
    - fields:
      - name: pool
        type: pool_t
      - name: compress_zstd_level
        type: unsigned int
      item_type: struct
      name: zstd_settings
      pos:
        line_end: 35
        line_start: 32
        source_file: /src/dovecot/src/lib-compression/ostream-zstd.c
    typedefs: []
    union: []
- function_names:
  - ZSTD_getErrorCode
  - i_stream_zstd_init
  - i_stream_zstd_deinit
  - i_stream_zstd_close
  - i_stream_zstd_read_error
  - i_stream_zstd_read
  - i_stream_zstd_reset
  - i_stream_zstd_seek
  - i_stream_zstd_sync
  - i_stream_create_zstd
  source_file: /src/dovecot/src/lib-compression/istream-zstd.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*dstream'
        type: ZSTD_DStream
      - name: input
        type: ZSTD_inBuffer
      - name: output
        type: ZSTD_outBuffer
      - name: last_parent_statbuf
        type: struct stat
      - name: input_size
        type: size_t
      - name: '*frame_buffer'
        type: buffer_t
      - name: '*data_buffer'
        type: buffer_t
      - name: hdr_read
        type: bool
      - name: marked
        type: bool
      - name: zs_closed
        type: bool
      - name: remain
        type: bool
      item_type: struct
      name: zstd_istream
      pos:
        line_end: 47
        line_start: 24
        source_file: /src/dovecot/src/lib-compression/istream-zstd.c
    typedefs: []
    union: []
- function_names:
  - test_compression_handler_detect
  - test_compression_handler_short
  - test_compression_handler_empty
  - test_compression_handler_seek
  - test_compression_handler_reset
  - test_compression_handler
  - test_compression_handler_partial_parent_write
  - test_compression_handler_random_io
  - test_compression_handler_large_random_io
  - test_compression_handler_errors
  - test_compression_int
  - test_compression
  - test_istream_decompression_try
  - test_gz
  - test_gz_concat
  - test_gz_no_concat
  - test_gz_header_int
  - test_gz_header
  - test_gz_large_header_int
  - test_gz_large_header
  - test_lz4_small_header
  - test_uncompress_file
  - test_compress_file
  - test_compression_ext
  - test_compression_init
  - test_compression_deinit
  - main
  source_file: /src/dovecot/src/lib-compression/test-compression.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RANDOMNESS_SIZE
      pos:
        line_end: 602
        line_start: 601
        source_file: /src/dovecot/src/lib-compression/test-compression.c
      type_or_value: (1024*1024)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-compression/ostream-zlib.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - i_stream_zlib_close
  - zlib_read_error
  - i_stream_zlib_read_header
  - i_stream_zlib_read_trailer
  - i_stream_zlib_read
  - i_stream_zlib_init
  - i_stream_zlib_reset
  - i_stream_zlib_seek
  - i_stream_zlib_sync
  - i_stream_create_zlib
  - i_stream_create_gz
  - i_stream_create_deflate
  source_file: /src/dovecot/src/lib-compression/istream-zlib.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CHUNK_SIZE
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: (1024*64)
    - item_type: preproc_def
      name: GZ_HEADER_MIN_SIZE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: '10'
    - item_type: preproc_def
      name: GZ_TRAILER_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: '8'
    - item_type: preproc_def
      name: GZ_MAGIC1
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: '0x1f'
    - item_type: preproc_def
      name: GZ_MAGIC2
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: '0x8b'
    - item_type: preproc_def
      name: GZ_FLAG_FHCRC
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: '0x02'
    - item_type: preproc_def
      name: GZ_FLAG_FEXTRA
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: '0x04'
    - item_type: preproc_def
      name: GZ_FLAG_FNAME
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: '0x08'
    - item_type: preproc_def
      name: GZ_FLAG_FCOMMENT
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
      type_or_value: '0x10'
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: zs
        type: z_stream
      - name: eof_offset
        type: uoff_t
      - name: prev_size
        type: size_t
      - name: crc32
        type: uint32_t
      - name: last_parent_statbuf
        type: struct stat
      - name: gz
        type: bool
      - name: marked
        type: bool
      - name: header_read
        type: bool
      - name: trailer_read
        type: bool
      - name: zs_closed
        type: bool
      - name: starting_concated_output
        type: bool
      item_type: struct
      name: zlib_istream
      pos:
        line_end: 35
        line_start: 20
        source_file: /src/dovecot/src/lib-compression/istream-zlib.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-compression/istream-zlib.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - zstd_version_errcode
  - zstd_version_check
  source_file: /src/dovecot/src/lib-compression/iostream-zstd-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IOSTREAM_ZSTD_PRIVATE_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-compression/iostream-zstd-private.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - zlib_settings_check
  - o_stream_zlib_close
  - o_stream_zlib_send_gz_header
  - o_stream_zlib_lsb_uint32
  - o_stream_zlib_send_gz_trailer
  - o_stream_zlib_send_outbuf
  - o_stream_zlib_send_chunk
  - o_stream_zlib_send_flush
  - o_stream_zlib_flush
  - o_stream_zlib_get_buffer_used_size
  - o_stream_zlib_get_buffer_avail_size
  - o_stream_zlib_sendv
  - o_stream_zlib_init_gz_header
  - o_stream_create_zlib
  - o_stream_create_zlib_auto
  - o_stream_create_gz_auto
  - o_stream_create_deflate_auto
  - o_stream_create_deflate
  source_file: /src/dovecot/src/lib-compression/ostream-zlib.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CHUNK_SIZE
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-compression/ostream-zlib.c
      type_or_value: (1024*32)
    - item_type: preproc_def
      name: ZLIB_OS_CODE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-compression/ostream-zlib.c
      type_or_value: '0x03  '
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: zs
        type: z_stream
      - name: gz_header[10]
        type: unsigned char
      - name: outbuf[CHUNK_SIZE]
        type: unsigned char
      - name: outbuf_offset
        type: unsigned int
      - name: header_bytes_left
        type: unsigned int
      - name: crc
        type: uint32_t
      - name: gz
        type: bool
      - name: flushed
        type: bool
      item_type: struct
      name: zlib_ostream
      pos:
        line_end: 25
        line_start: 12
        source_file: /src/dovecot/src/lib-compression/ostream-zlib.c
    - fields:
      - name: pool
        type: pool_t
      - name: compress_gz_level
        type: unsigned int
      - name: compress_deflate_level
        type: unsigned int
      item_type: struct
      name: zlib_settings
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/dovecot/src/lib-compression/ostream-zlib.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-pop3/pop3-capability.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: POP3_CAPABILITY_REPLY
      pos:
        line_end: 10
        line_start: 3
        source_file: /src/dovecot/src/lib-pop3/pop3-capability.h
      type_or_value: "\"CAPA\\r\\n\" \\\n\t\"TOP\\r\\n\" \\\n\t\"UIDL\\r\\n\" \\\n\t\"RESP-CODES\\r\\n\"
        \\\n\t\"PIPELINING\\r\\n\" \\\n\t\"AUTH-RESP-CODE\\r\\n\""
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-pop3/pop3-protocol.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: POP3_DEFAULT_PORT
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-pop3/pop3-protocol.h
      type_or_value: '110'
    - item_type: preproc_def
      name: POP3S_DEFAULT_PORT
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/lib-pop3/pop3-protocol.h
      type_or_value: '995'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/qp-encoder.h
  types:
    enum:
    - enumerators:
      - name: QP_ENCODER_FLAG_HEADER_FORMAT
        value: '0x1'
      - name: QP_ENCODER_FLAG_BINARY_DATA
        value: '0x2'
      item_type: enum
      name: qp_encoder_flag
      pos:
        line_end: 8
        line_start: 3
        source_file: /src/dovecot/src/lib-mail/qp-encoder.h
    preproc_defs:
    - item_type: preproc_def
      name: QP_ENCODER_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-mail/qp-encoder.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - HTML_WHITESPACE
  - mail_html2text_init
  - parse_tag_name
  - html_entity_get_unichar
  - parse_entity
  - mail_html2text_add_space
  - parse_data
  - mail_html2text_more
  - mail_html2text_deinit
  source_file: /src/dovecot/src/lib-mail/mail-html2text.c
  types:
    enum:
    - enumerators:
      - name: HTML_STATE_TEXT
      - name: HTML_STATE_TAG
      - name: HTML_STATE_TAG_DQUOTED_ESCAPE
      - name: HTML_STATE_TAG_DQUOTED
      - name: HTML_STATE_TAG_SQUOTED
      - name: HTML_STATE_TAG_SQUOTED_ESCAPE
      - name: HTML_STATE_COMMENT
      - name: HTML_STATE_COMMENT_END
      - name: HTML_STATE_SCRIPT
      - name: HTML_STATE_STYLE
      - name: HTML_STATE_CDATA
      item_type: enum
      name: html_state
      pos:
        line_end: 36
        line_start: 13
        source_file: /src/dovecot/src/lib-mail/mail-html2text.c
    preproc_defs: []
    structs:
    - fields:
      - name: flags
        type: enum mail_html2text_flags
      - name: state
        type: enum html_state
      - name: '*input'
        type: buffer_t
      - name: quote_level
        type: unsigned int
      - name: add_newline
        type: bool
      item_type: struct
      name: mail_html2text
      pos:
        line_end: 44
        line_start: 38
        source_file: /src/dovecot/src/lib-mail/mail-html2text.c
    - fields:
      - name: '*name'
        type: char
      - name: chr
        type: unichar_t
      item_type: struct
      name: 'html_entities[] = {

        #include "html-entities.h"

        }'
      pos:
        line_end: 49
        line_start: 46
        source_file: /src/dovecot/src/lib-mail/mail-html2text.c
    typedefs: []
    union: []
- function_names:
  - add_address
  - str_append_maybe_escape
  - parse_nonstrict_dot_atom
  - parse_local_part
  - parse_domain
  - parse_domain_list
  - parse_angle_addr
  - parse_name_addr
  - parse_addr_spec
  - add_fixed_address
  - parse_mailbox
  - parse_group
  - parse_address
  - parse_address_list
  - parse_path
  - message_address_parse_real
  - message_address_parse_path_real
  - message_address_parse
  - message_address_parse_full
  - message_address_parse_path
  - message_address_write
  - message_address_to_string
  - message_address_first_to_string
  - message_address_init
  - message_address_init_from_smtp
  - message_header_is_address
  source_file: /src/dovecot/src/lib-mail/message-address.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: parser
        type: struct rfc822_parser_context
      - name: addr
        type: struct message_address
      - name: addr_list
        type: struct message_address_list
      - name: '*str'
        type: string_t
      - name: fill_missing
        type: bool
      item_type: struct
      name: message_address_parser_context
      pos:
        line_end: 20
        line_start: 11
        source_file: /src/dovecot/src/lib-mail/message-address.c
    typedefs: []
    union: []
- function_names:
  - is_hex
  - get_encoding_size_diff
  - decode_test
  - test_istream_qp_decoder
  - main
  source_file: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: stream_errno
        type: int
      - name: eof
        type: int
      item_type: struct
      name: "tests[] = {\n\t{ \"p=C3=A4=C3=A4t=C3=B6s\", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        0 , 0 },\n\t{ \"p=c3=a4=c3=a4t=c3=b6s=  \\n\", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        0, 0 },\n\t{ \"p=c3=a4= \\t \\n=c3=\\r\\n=a4t=  \\r\\n=c3=b6s\", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        0, 1 },\n\t{ \"p=c3=a4= \\t \\n=c3=\\r\\n=a4t=  \\r\\n=c3=b6s\", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        0, 2 },\n\t{ \"p=c3=a4= \\t \\n=c3=\\r\\n=a4t=  \\r\\n=c3=b6s\", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        0, 3 },\n\t{ \"p=c3=a4= \\t \\n=c3=\\r\\n=a4t=  \\r\\n=c3=b6s\", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        0, 4 },\n\t{ \"p=c3=a4= \\t \\n=c3=\\r\\n=a4t=  \\r\\n=c3=b6s\", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        0, 5 },\n\t{ \"p=c3=a4= \\t \\n=c3=\\r\\n=a4t=  \\r\\n=c3=b6s\", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        0, 7 },\n\t{ \"p=c3\", \"p\\xC3\", 0, 2 },\n\t{ \"=0A=0D  \", \"\\n\\r\",
        0, 7 },\n\t{ \"foo_bar\", \"foo_bar\", 0, 0 },\n\t{ \"\\n\\n\", \"\\r\\n\\r\\n\",
        0, 0 },\n\t{ \"\\r\\n\\n\\n\\r\\n\", \"\\r\\n\\r\\n\\r\\n\\r\\n\", 0, 0 },\n\t/*
        Unnecessarily encoded */\n\t{ \"=66=6f=6f=42=61=72\", \"fooBar\", 0, 4 },\n\t/*
        Expected to be encoded but not */\n\t{ \"\\xc3\\x9c\"\"berm=c3=a4\\xc3\\x9figer
        Gebrauch\", \"\\xc3\\x9c\"\"berm\\xc3\\xa4\\xc3\\x9figer Gebrauch\", 0, 9
        },\n\t/* Decode control characters */\n\t{ \"=0C=07\", \"\\x0C\\x07\", 0,
        0 },\n\t/* Data */\n\t{ \"=DE=AD=BE=EF\", \"\\xDE\\xAD\\xBE\\xEF\", 0, 0 },\n\t/*
        Non hex data */\n\t{ \"=FJ=X1\", \"\", EINVAL, 0 },\n\t/* No content allowed
        after Soft Line Break */\n\t{ \"=C3=9C = \",\"\\xc3\\x9c \", EPIPE, 0 },\n\t/*
        Boundary delimiter */\n\t{ \"=C3=9C=\\r\\n-------\",\"\\xc3\\x9c-------\",
        0, 0 },\n\t{ \"=----------- =C3=9C\",\"\", EINVAL, 0 },\n\t{ \"=___________
        =C3=9C\",\"\", EINVAL, 0 },\n\t{ \"___________ =C3=9C\",\"___________ \\xc3\\x9c\",
        0, 0 },\n\t{ \"=2D=2D=2D=2D=2D=2D =C3=9C\",\"------ \\xc3\\x9c\", 0, 0 },\n\t{
        \"=FC=83=BF=BF=BF=BF\", \"\\xFC\\x83\\xBF\\xBF\\xBF\\xBF\", 0, 0 },\n\t{ \"=FE=FE=FF=FF\",
        \"\\xFE\\xFE\\xFF\\xFF\", 0, 0 },\n\t{ \"\\xFF=C3=9C\\xFE\\xFF\"\"foobar\",
        \"\\xFF\\xc3\\x9c\\xFE\\xFF\"\"foobar\", 0, 0 },\n\n\t{ \"p=c3=a4\\rasdf\",
        \"p\\xC3\\xA4\", EINVAL, 0 },\n\t{ \"=___________ \\xc3\\x9c\",\"\", EINVAL,
        0 },\n\t{ \"p=c\", \"p\", EPIPE, 0 },\n\t{ \"p=A\", \"p\", EPIPE, 0 },\n\t{
        \"p=Ax\", \"p\", EINVAL, 0 },\n\t{ \"___________ \\xc3\\x9c=C3=9\",\"___________
        \\xc3\\x9c\\xC3\", EPIPE, 0},\n\t{ \"p=c3=a4=c3=a4t=c3=b6s=  \", \"p\\xC3\\xA4\\xC3\\xA4t\\xC3\\xB6s\",
        EPIPE, 0 },\n\t/* Soft Line Break example from the RFC */\n\t{\n\t\t\"Now's
        the time =\\r\\nfor all folk to come=\\r\\n to the aid of \"\n\t\t\"their
        country.\", \"Now's the time for all folk to come to the\"\n\t\t\" aid of
        their country.\", 0, 41\n\t},\n}"
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/test-istream-qp-decoder.c
    typedefs: []
    union: []
- function_names:
  - message_header_decode_encoded
  - is_only_lwsp
  - message_header_decode
  - decode_utf8_callback
  - message_header_decode_utf8
  source_file: /src/dovecot/src/lib-mail/message-header-decode.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: QCOUNT
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-mail/message-header-decode.c
      type_or_value: '3'
    structs:
    - fields:
      - name: '*dest'
        type: buffer_t
      - name: '*normalizer'
        type: normalizer_func_t
      - name: changed
        type: bool
      item_type: struct
      name: decode_utf8_context
      pos:
        line_end: 144
        line_start: 140
        source_file: /src/dovecot/src/lib-mail/message-header-decode.c
    typedefs: []
    union: []
- function_names:
  - i_stream_dot_read_some
  - flush_pending
  - flush_dot_state
  - i_stream_dot_eof
  - i_stream_dot_return
  - i_stream_dot_read
  - i_stream_create_dot
  source_file: /src/dovecot/src/lib-mail/istream-dot.c
  types:
    enum:
    - enumerators:
      - name: DOT_STATE_SEEN_NONE
        value: '0'
      - name: DOT_STATE_SEEN_CR
        value: '1'
      - name: DOT_STATE_SEEN_CR_LF_DOT_CR
        value: '4'
      - name: DOT_STATE_SEEN_CR_LF_DOT
        value: '3'
      - name: DOT_STATE_SEEN_CR_LF
        value: '2'
      item_type: enum
      name: dot_state
      pos:
        line_end: 12
        line_start: 6
        source_file: /src/dovecot/src/lib-mail/istream-dot.c
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: pending[3]
        type: char
      - name: state
        type: enum dot_state
      - name: state_no_cr
        type: bool
      - name: state_no_lf
        type: bool
      - name: dot_eof
        type: bool
      - name: send_last_lf
        type: bool
      - name: accept_bare_lf
        type: bool
      item_type: struct
      name: dot_istream
      pos:
        line_end: 30
        line_start: 14
        source_file: /src/dovecot/src/lib-mail/istream-dot.c
    typedefs: []
    union: []
- function_names:
  - test_rfc822_parse_comment
  - test_rfc822_parse_comment_nuls
  - test_rfc822_parse_quoted_string
  - test_rfc822_parse_dot_atom
  - test_rfc822_parse_domain_literal
  - test_rfc822_decode_punycode
  - TEST_STRING
  - test_rfc822_parse_content_type
  - test_rfc822_parse_content_param
  - parse_content_type_param
  - TEST_STRING
  - X10
  - test_rfc822_parse_content_type_param
  - main
  source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: ret
        type: int
      item_type: struct
      name: "tests[] = {\n\t\t{ \"(\", \"\", -1 },\n\t\t{ \"(()\", \"\", -1 },\n\n\t\t{
        \"()\", \"\", 0 },\n\t\t{ \"(())\", \"()\", 0 },\n\t\t{ \"(foo ( bar ) baz)\",
        \"foo ( bar ) baz\", 0 },\n\t\t{ \"(foo\\t\\tbar)\", \"foo\\t\\tbar\", 0 },\n\t\t{
        \"(foo\\\\(bar)\", \"foo(bar\", 0 },\n\t\t{ \"(foo\\\\\\\\bar)\", \"foo\\\\bar\",
        0 },\n\t\t{ \"(foo\\\\\\\\\\\\\\\\)\", \"foo\\\\\\\\\", 0 },\n\t\t{ \"(foo\\\\)bar)\",
        \"foo)bar\", 0 },\n\t\t{ \"(foo\\\"flop\\\"\\\"bar)\", \"foo\\\"flop\\\"\\\"bar\",
        0 },\n\n\t\t{ \"(foo\\n bar)\", \"foo bar\", 0 },\n\t\t{ \"(foo\\n\\t\\t bar)\",
        \"foo\\t\\t bar\", 0 },\n\t\t{ \"(foo\\\\\\n bar)\", \"foo\\\\ bar\", 0 },\n\t\t{
        \"(foo\\\\\\r\\n bar)\", \"foo\\\\ bar\", 0 },\n\t}"
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: ret
        type: int
      item_type: struct
      name: "tests[] = {\n\t\t{ \"\\\"\", \"\", -1 },\n\t\t{ \"\\\"\\\"\", \"\", 0
        },\n\t\t{ \"\\\"foo\\\"\", \"foo\", 0 },\n\t\t{ \"\\\"\\\"foo\", \"\", 1 },\n\t\t{
        \"\\\"\\\"\\\"\", \"\", 1 },\n\t\t{ \"\\\"\\\\\\\"\\\"\", \"\\\"\", 0 },\n\t\t{
        \"\\\"\\\\\\\\\\\"\", \"\\\\\", 0 },\n\t\t{ \"\\\"\\\\\\\\foo\\\\\\\\foo\\\\\\\\\\\"\",
        \"\\\\foo\\\\foo\\\\\", 0 },\n\t\t{ \"\\\"foo\\n bar\\\"\", \"foo bar\", 0
        },\n\t\t{ \"\\\"foo\\n\\t\\t bar\\\"\", \"foo\\t\\t bar\", 0 },\n\t\t{ \"\\\"foo\\\\\\n
        bar\\\"\", \"foo\\\\ bar\", 0 },\n\t\t{ \"\\\"foo\\\\\\r\\n bar\\\"\", \"foo\\\\
        bar\", 0 },\n\t}"
      pos:
        line_end: 84
        line_start: 81
        source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: ret
        type: int
      item_type: struct
      name: "tests[] = {\n\t\t{ \"foo\", \"foo\", 0 },\n\t\t{ \"foo.bar\", \"foo.bar\",
        0 },\n\t\t{ \"foo.bar.baz\", \"foo.bar.baz\", 0 },\n\t\t{ \"foo  . \\tbar
        (comments) . (...) baz\\t  \", \"foo.bar.baz\", 0 },\n\n\t\t{ \".\", \"\",
        -1 },\n\t\t{ \"..\", \"\", -1 },\n\t\t{ \".foo\", \"\", -1 },\n\t\t{ \"foo.\",
        \"foo.\", -1 },\n\t\t{ \"foo..bar\", \"foo.\", -1 },\n\t\t{ \"foo. .bar\",
        \"foo.\", -1 },\n\t\t{ \"foo.(middle).bar\", \"foo.\", -1 },\n\t\t{ \"foo.
        \", \"foo.\", -1 },\n\t\t{ \"foo.\\t\", \"foo.\", -1 },\n\t\t{ \"foo.(ending)\",
        \"foo.\", -1 },\n\t}"
      pos:
        line_end: 120
        line_start: 117
        source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    - fields:
      - name: '*input'
        type: char
      - name: ret
        type: int
      item_type: struct
      name: "tests[] = {\n\t\t{ \"@[\", \"\", -1 },\n\t\t{ \"@[foo\", \"\", -1 },\n\t\t{
        \"@[foo[]\", \"\", -1 },\n\t\t{ \"@[foo[]]\", \"\", -1 },\n\t\t{ \"@[]\",
        \"[]\", 0 },\n\t\t{ \"@[foo bar]\", \"[foo bar]\", 0 },\n\t\t{ \"@[foo\\n
        bar]\", \"[foo bar]\", 0 },\n\t\t{ \"@[foo\\n\\t\\t bar]\", \"[foo\\t\\t bar]\",
        0 },\n\t\t{ \"@[foo\\\\\\n bar]\", \"[foo\\\\ bar]\", 0 },\n\t}"
      pos:
        line_end: 173
        line_start: 170
        source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    - fields:
      - name: '*in'
        type: char
      - name: '*out'
        type: char
      item_type: struct
      name: test_case
      pos:
        line_end: 206
        line_start: 203
        source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    - fields:
      - name: '*input'
        type: unsigned char
      - name: input_len
        type: size_t
      - name: ret
        type: int
      - name: '*output'
        type: char
      item_type: struct
      name: "test_cases[] = {\n\t\t{ TEST_STRING(\"\"), -1, \"\" },\n\t\t{ TEST_STRING(\";charset=us-ascii\"),
        -1, \"\" },\n\t\t{ TEST_STRING(\" ;charset=us-ascii\"), -1, \"\" },\n\t\t{
        TEST_STRING(\"/\"), -1, \"\" },\n\t\t{ TEST_STRING(\"/;charset=us-ascii\"),
        -1, \"\" },\n\t\t{ TEST_STRING(\"/ ;charset=us-ascii\"), -1, \"\" },\n\t\t{
        TEST_STRING(\"text/\"), -1, \"\" },\n\t\t{ TEST_STRING(\"text/;charset=us-ascii\"),
        -1, \"\" },\n\t\t{ TEST_STRING(\"text/ ;charset=us-ascii\"), -1, \"\" },\n\t\t{
        TEST_STRING(\"/plain\"), -1, \"\" },\n\t\t{ TEST_STRING(\"/plain;charset=us-ascii\"),
        -1, \"\" },\n\t\t{ TEST_STRING(\"/plain ;charset=us-ascii\"), -1, \"\" },\n\t\t{
        TEST_STRING(\"text/plain\"), 0, \"text/plain\" },\n\t\t{ TEST_STRING(\"text/plain;charset=us-ascii\"),
        1, \"text/plain\" },\n\t\t{ TEST_STRING(\"text/plain ;charset=us-ascii\"),
        1, \"text/plain\" },\n\t\t{ TEST_STRING(\"text/plain/format\"), -1, \"\" },\n\t\t{
        TEST_STRING(\"text/plain/format;charset=us-ascii\"), -1, \"\" },\n\t\t{ TEST_STRING(\"text/plain/format
        ;charset=us-ascii\"), -1, \"\" },\n\t\t{ TEST_STRING(\"\\xe5\\x90\\xab\\xe9\\x87\\x8f/\\xe7\\xa8\\xae\\xe9\\xa1\\x9e\"),\n\t\t
        \ 0, \"\\xe5\\x90\\xab\\xe9\\x87\\x8f/\\xe7\\xa8\\xae\\xe9\\xa1\\x9e\" },\n\t\t{
        TEST_STRING(\"\\xe5\\x90\\xab\\xe9\\x87\\x8f/\\xe7\\xa8\\xae\\xe9\\xa1\\x9e;charset=utf-8\"),\n\t\t
        \ 1, \"\\xe5\\x90\\xab\\xe9\\x87\\x8f/\\xe7\\xa8\\xae\\xe9\\xa1\\x9e\" },\n\t\t{
        TEST_STRING(\"\\xe5\\x90\\xab\\xe9\\x87\\x8f/\\xe7\\xa8\\xae\\xe9\\xa1\\x9e
        ;charset=utf-8\"),\n\t\t  1, \"\\xe5\\x90\\xab\\xe9\\x87\\x8f/\\xe7\\xa8\\xae\\xe9\\xa1\\x9e\"
        },\n\t\t{ TEST_STRING(\"application/ld+json\"), 0, \"application/ld+json\"
        },\n\t\t{ TEST_STRING(\"application/ld+json;charset=us-ascii\"),\n\t\t  1,
        \"application/ld+json\" },\n\t\t{ TEST_STRING(\"application/ld+json ;charset=us-ascii\"),\n\t\t
        \ 1, \"application/ld+json\" },\n\t\t{ TEST_STRING(\"application/x-magic-cap-package-1.0\"),\n\t\t
        \ 0, \"application/x-magic-cap-package-1.0\" },\n\t\t{ TEST_STRING(\"application/x-magic-cap-package-1.0;charset=us-ascii\"),\n\t\t
        \ 1, \"application/x-magic-cap-package-1.0\" },\n\t\t{ TEST_STRING(\"application/x-magic-cap-package-1.0
        ;charset=us-ascii\"),\n\t\t  1, \"application/x-magic-cap-package-1.0\" },\n\t\t{
        TEST_STRING(\"application/pro_eng\"), 0, \"application/pro_eng\" },\n\t\t{
        TEST_STRING(\"application/pro_eng;charset=us-ascii\"),\n\t\t  1, \"application/pro_eng\"
        },\n\t\t{ TEST_STRING(\"application/pro_eng ;charset=us-ascii\"),\n\t\t  1,
        \"application/pro_eng\" },\n\t\t{ TEST_STRING(\"application/wordperfect6.1\"),\n\t\t
        \ 0, \"application/wordperfect6.1\" },\n\t\t{ TEST_STRING(\"application/wordperfect6.1;charset=us-ascii\"),\n\t\t
        \ 1, \"application/wordperfect6.1\" },\n\t\t{ TEST_STRING(\"application/wordperfect6.1
        ;charset=us-ascii\"),\n\t\t  1, \"application/wordperfect6.1\" },\n\t\t{ TEST_STRING(\"application/vnd.openxmlformats-officedocument.wordprocessingml.template\"),\n\t\t
        \ 0, \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\"
        },\n\t\t{ TEST_STRING(\"application/vnd.openxmlformats-officedocument.wordprocessingml.template;charset=us-ascii\"),\n\t\t
        \ 1, \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\"
        },\n\t\t{ TEST_STRING(\"application/vnd.openxmlformats-officedocument.wordprocessingml.template
        ;charset=us-asii\"),\n\t\t  1, \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\"
        },\n\t\t{ TEST_STRING(\"(hello) text (plain) / (world) plain (eod)\"),\n\t\t
        \ 0, \"text/plain\" },\n\t\t{ TEST_STRING(\"(hello) text (plain) / (world)
        plain (eod);charset=us-ascii\"),\n\t\t  1, \"text/plain\" },\n\t\t{ TEST_STRING(\"(hello)
        text (plain) / (world) plain (eod); charset=us-ascii\"),\n\t\t  1, \"text/plain\"
        },\n\t\t{ TEST_STRING(\"message/rfc822\\r\\n\"), 0, \"message/rfc822\" },\n\t\t{
        TEST_STRING(\" \\t\\r message/rfc822 \\t\\r\\n\"),\n\t\t  0, \"message/rfc822\"
        },\n\t\t{ TEST_STRING(\" \\t\\r message/rfc822 \\t ;charset=us-ascii\\r\\n\"),\n\t\t
        \ 1, \"message/rfc822\" },\n\t\t{ TEST_STRING(\" \\t\\r message/rfc822 \\t
        ; charset=us-ascii\\r\\n\"),\n\t\t  1, \"message/rfc822\" },\n\t\t{ TEST_STRING(\"test\\0/ty\\0pe\"),
        -1, \"\" },\n\t}"
      pos:
        line_end: 235
        line_start: 230
        source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    - fields:
      - name: '*key'
        type: char
      item_type: struct
      name: "output[] = {\n\t\t{ \"key1\", \"value1#$!%&'*+-.^_`{|}~\" },\n\t\t{ \"key2\",
        \" \\\"(),/:;<=>?@[\\\\]\" }\n\t}"
      pos:
        line_end: 324
        line_start: 322
        source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    - fields:
      - name: '*key'
        type: char
      item_type: struct
      name: param
      pos:
        line_end: 350
        line_start: 348
        source_file: /src/dovecot/src/lib-mail/test-rfc822-parser.c
    typedefs: []
    union: []
- function_names:
  - message_parse_header_init
  - message_parse_header_set_limit
  - message_parse_header_lower_limit
  - message_parse_header_deinit
  - message_parse_header_next
  - message_parse_header_has_nuls
  - message_parse_header
  - message_header_line_write
  - message_header_strdup
  - message_header_name_is_valid
  source_file: /src/dovecot/src/lib-mail/message-header-parser.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MESSAGE_HEADER_NAME_MAX_LEN
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-mail/message-header-parser.c
      type_or_value: '1000'
    structs:
    - fields:
      - name: line
        type: struct message_header_line
      - name: '*input'
        type: struct istream
      - name: '*hdr_size'
        type: struct message_size
      - name: '*name'
        type: string_t
      - name: '*value_buf'
        type: buffer_t
      - name: header_block_max_size
        type: size_t
      - name: header_block_total_size
        type: size_t
      - name: flags
        type: enum message_header_parser_flags
      - name: skip_line
        type: bool
      - name: has_nuls
        type: bool
      item_type: struct
      name: message_header_parser_ctx
      pos:
        line_end: 29
        line_start: 14
        source_file: /src/dovecot/src/lib-mail/message-header-parser.c
    typedefs: []
    union: []
- function_names:
  - message_binary_part_serialize
  - message_binary_part_deserialize
  source_file: /src/dovecot/src/lib-mail/message-binary-part.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - run_test
  - test_rfc2231_parser_rfc_tests_1
  - test_rfc2231_parser_rfc_tests_2
  - test_rfc2231_spaces
  - test_rfc2231_parser
  - test_rfc2231_parser_redundant_keys
  - test_rfc2231_parser_redundant_single_and_multisegment_keys
  - test_rfc2231_parser_redundant_extended_and_multisegment_keys
  - test_rfc2231_parser_redundant_multisegment_keys
  - test_rfc2231_parser_invalid_sequence
  - test_rfc2231_parser_encodings
  - test_rfc2231_parser_utf8_encoding
  - test_rfc2231_parser_multi_encodings
  - main
  source_file: /src/dovecot/src/lib-mail/test-rfc2231-parser.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - IS_TIME_SEP
  - parse_timezone
  - next_token
  - message_date_parser_tokens
  - message_date_parse
  - message_date_create
  source_file: /src/dovecot/src/lib-mail/message-date.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: parser
        type: struct rfc822_parser_context
      - name: '*str'
        type: string_t
      item_type: struct
      name: message_date_parser_context
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/dovecot/src/lib-mail/message-date.c
    typedefs: []
    union: []
- function_names:
  - qp_encoder_init
  - qp_encoder_deinit
  - qp_encode_or_break
  - qp_encoder_more
  - qp_encoder_finish
  source_file: /src/dovecot/src/lib-mail/qp-encoder.c
  types:
    enum:
    - enumerators:
      - name: QP_ENCODER_LAST_ANY
        value: '0'
      - name: QP_ENCODER_LAST_WHITE_SPACE
      - name: QP_ENCODER_LAST_CR
      item_type: enum
      name: qp_encoder_last_char
      pos:
        line_end: 13
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/qp-encoder.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*linebreak'
        type: char
      - name: '*dest'
        type: string_t
      - name: line_len
        type: size_t
      - name: max_len
        type: size_t
      - name: flags
        type: enum qp_encoder_flag
      - name: last_char
        type: enum qp_encoder_last_char
      - name: add_header_preamble
        type: bool
      item_type: struct
      name: qp_encoder
      pos:
        line_end: 23
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/qp-encoder.c
    typedefs: []
    union: []
- function_names:
  - test_istream_dot_one
  - test_istream_dot_error
  - test_istream_dot
  - test_istream_dot_accept_bare_lf
  - test_istream_dot_strict
  - main
  source_file: /src/dovecot/src/lib-mail/test-istream-dot.c
  types:
    enum:
    - enumerators:
      - name: END_OF_TESTS
      - name: NO_EOT
      - name: STRICT_EOT
      - name: LOOSE_EOT
      item_type: enum
      name: outcome
      pos:
        line_end: 13
        line_start: 8
        source_file: /src/dovecot/src/lib-mail/test-istream-dot.c
    preproc_defs: []
    structs:
    - fields:
      - name: expected_outcome
        type: enum outcome
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: '*parent_input'
        type: char
      item_type: struct
      name: dot_test
      pos:
        line_end: 20
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/test-istream-dot.c
    typedefs: []
    union: []
- function_names:
  - i_stream_qp_encoder_close
  - i_stream_qp_encoder_read
  - i_stream_qp_encoder_seek
  - i_stream_create_qp_encoder
  source_file: /src/dovecot/src/lib-mail/istream-qp-encoder.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*buf'
        type: buffer_t
      - name: '*qp'
        type: struct qp_encoder
      item_type: struct
      name: qp_encoder_istream
      pos:
        line_end: 13
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/istream-qp-encoder.c
    typedefs: []
    union: []
- function_names:
  - message_part_root
  - message_part_find
  - message_part_to_idx
  - message_sub_part_by_idx
  - message_part_by_idx
  - message_part_is_equal_ex
  - message_parts_have_nuls
  - message_part_has_nuls
  source_file: /src/dovecot/src/lib-mail/message-part.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-part-data.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MESSAGE_PART_DEFAULT_CHARSET
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-mail/message-part-data.h
      type_or_value: '"us-ascii"'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*value'
        type: char
      item_type: struct
      name: message_part_param
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/message-part-data.h
    - fields:
      - name: '*date'
        type: char
      - name: from
        type: struct message_address_list
      - name: to
        type: struct message_address_list
      - name: '*in_reply_to'
        type: char
      item_type: struct
      name: message_part_envelope
      pos:
        line_end: 22
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/message-part-data.h
    - fields:
      - name: '*content_type'
        type: char
      - name: '*content_type_params'
        type: struct message_part_param
      - name: content_type_params_count
        type: unsigned int
      - name: '*content_transfer_encoding'
        type: char
      - name: '*content_id'
        type: char
      - name: '*content_description'
        type: char
      - name: '*content_disposition'
        type: char
      - name: '*content_disposition_params'
        type: struct message_part_param
      - name: content_disposition_params_count
        type: unsigned int
      - name: '*content_md5'
        type: char
      - name: '*const *content_language'
        type: char
      - name: '*content_location'
        type: char
      - name: '*envelope'
        type: struct message_part_envelope
      item_type: struct
      name: message_part_data
      pos:
        line_end: 40
        line_start: 24
        source_file: /src/dovecot/src/lib-mail/message-part-data.h
    - fields:
      - name: '*const *content_type_filter'
        type: char
      - name: exclude_inlined
        type: bool
      item_type: struct
      name: message_part_attachment_settings
      pos:
        line_end: 57
        line_start: 42
        source_file: /src/dovecot/src/lib-mail/message-part-data.h
    typedefs: []
    union: []
- function_names:
  - QP_IS_TRAILING_WHITESPACE
  - qp_decoder_init
  - qp_decoder_deinit
  - qp_decoder_more_text
  - qp_decoder_invalid
  - qp_decoder_more
  - qp_decoder_finish
  source_file: /src/dovecot/src/lib-mail/qp-decoder.c
  types:
    enum:
    - enumerators:
      - name: STATE_TEXT
        value: '0'
      - name: STATE_HEX2
      - name: STATE_EQUALS
      - name: STATE_EQUALS_WHITESPACE
      - name: STATE_WHITESPACE
      - name: STATE_CR
      - name: STATE_SOFTCR
      item_type: enum
      name: qp_state
      pos:
        line_end: 23
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/qp-decoder.c
    preproc_defs:
    - item_type: preproc_def
      name: QP_MAX_WHITESPACE_LEN
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/qp-decoder.c
      type_or_value: '76'
    structs:
    - fields:
      - name: '*dest'
        type: buffer_t
      - name: '*whitespace'
        type: buffer_t
      - name: state
        type: enum qp_state
      - name: hexchar
        type: char
      item_type: struct
      name: qp_decoder
      pos:
        line_end: 30
        line_start: 25
        source_file: /src/dovecot/src/lib-mail/qp-decoder.c
    typedefs: []
    union: []
- function_names:
  - test_message_part_idx
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-part.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_MSG_LEN
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/dovecot/src/lib-mail/test-message-part.c
      type_or_value: (sizeof(test_msg)-1)
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_message_id_get_next
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-id.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - istream_attachment_connector_begin
  - istream_attachment_connector_add
  - istream_attachment_connector_free
  - istream_attachment_connector_finish
  - istream_attachment_connector_abort
  source_file: /src/dovecot/src/lib-mail/istream-attachment-connector.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*base_input'
        type: struct istream
      - name: base_input_offset
        type: uoff_t
      - name: encoded_offset
        type: uoff_t
      item_type: struct
      name: istream_attachment_connector
      pos:
        line_end: 17
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/istream-attachment-connector.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/rfc2231-parser.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_html2text_content_type_match
  source_file: /src/dovecot/src/lib-mail/mail-html2text.h
  types:
    enum:
    - enumerators:
      - name: MAIL_HTML2TEXT_FLAG_SKIP_QUOTED
        value: '0x01'
      item_type: enum
      name: mail_html2text_flags
      pos:
        line_end: 5
        line_start: 3
        source_file: /src/dovecot/src/lib-mail/mail-html2text.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/istream-attachment-connector.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-search.h
  types:
    enum:
    - enumerators:
      - name: MESSAGE_SEARCH_FLAG_SKIP_HEADERS
        value: '0x01'
      item_type: enum
      name: message_search_flags
      pos:
        line_end: 10
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/message-search.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-id.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/qp-decoder.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/mail-types.h
  types:
    enum:
    - enumerators:
      - name: MAIL_ANSWERED
        value: '0x01'
      - name: MAIL_FLAGGED
        value: '0x02'
      - name: MAIL_DELETED
        value: '0x04'
      - name: MAIL_DRAFT
        value: '0x10'
      - name: MAIL_SEEN
        value: '0x08'
      - name: MAIL_RECENT
        value: '0x20'
      - name: MAIL_FLAGS_MASK
        value: '0x3f'
      - name: MAIL_FLAGS_NONRECENT
        value: (MAIL_FLAGS_MASK ^ MAIL_RECENT)
      item_type: enum
      name: mail_flags
      pos:
        line_end: 13
        line_start: 3
        source_file: /src/dovecot/src/lib-mail/mail-types.h
    - enumerators:
      - name: MODIFY_ADD
      - name: MODIFY_REPLACE
      - name: MODIFY_REMOVE
      item_type: enum
      name: modify_type
      pos:
        line_end: 19
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/mail-types.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - run_callback
  - test_istream_run_prep
  - test_istream_run_check
  - test_istream_run
  - filter_callback
  - test_istream_filter
  - add_random_text
  - filter2_callback
  - test_istream_filter_large_buffer
  - test_istream_filter_large_buffer2
  - filter3_callback
  - test_istream_callbacks
  - edit_callback
  - test_istream_edit
  - test_istream_end_body_with_lf
  - test_istream_add_missing_eoh
  - test_istream_add_missing_eoh_and_edit
  - test_istream_hide_body
  - strip_eoh_callback
  - test_istream_strip_eoh
  - missing_eoh_callback
  - test_istream_missing_eoh_callback
  - test_istream_empty_missing_eoh_callback
  - main
  source_file: /src/dovecot/src/lib-mail/test-istream-header-filter.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*callback'
        type: header_filter_callback
      - name: callback_call_count
        type: unsigned int
      - name: null_hdr_seen
        type: bool
      - name: eoh_seen
        type: bool
      - name: callback_called
        type: bool
      item_type: struct
      name: run_ctx
      pos:
        line_end: 15
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: extra
        type: unsigned int
      item_type: struct
      name: "tests[] = {\n\t\t{ \"\", \"\\n\", 0 },\n\t\t{ \"From: foo\", \"From:
        foo\\n\\n\", 1 },\n\t\t{ \"From: foo\\n\", \"From: foo\\n\\n\", 1 },\n\t\t{
        \"From: foo\\n\\n\", \"From: foo\\n\\n\", 1 },\n\t\t{ \"From: foo\\n\\nbar\",
        \"From: foo\\n\\nbar\", 0 },\n\t\t{ \"From: foo\\r\\n\", \"From: foo\\r\\n\\r\\n\",
        1 },\n\t\t{ \"From: foo\\r\\n\\r\\n\", \"From: foo\\r\\n\\r\\n\", 0 },\n\t\t{
        \"From: foo\\r\\n\\r\\nbar\", \"From: foo\\r\\n\\r\\nbar\", 0 }\n\t}"
      pos:
        line_end: 526
        line_start: 522
        source_file: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t\t{ \"From: foo\\nTo: bar\\n\",\n\t\t  \"From: foo\\nTo:
        123\\nAdded: header\\n\\n\" },\n\t\t{ \"From: foo\\nTo: bar\\n\\n\",\n\t\t
        \ \"From: foo\\nTo: 123\\nAdded: header\\n\\n\" },\n\t\t{ \"From: foo\\nTo:
        bar\\n\\nbody\\n\",\n\t\t  \"From: foo\\nTo: 123\\nAdded: header\\n\\nbody\\n\"
        },\n\t}"
      pos:
        line_end: 559
        line_start: 556
        source_file: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: extra
        type: int
      item_type: struct
      name: "tests[] = {\n\t\t{ \"From: foo\", \"From: foo\", 0 },\n\t\t{ \"From:
        foo\\n\", \"From: foo\\n\", 0 },\n\t\t{ \"From: foo\\n\\n\", \"From: foo\\n\\n\",
        1 },\n\t\t{ \"From: foo\\n\\nbar\", \"From: foo\\n\\n\", -2 },\n\t\t{ \"From:
        foo\\r\\n\", \"From: foo\\r\\n\", 0 },\n\t\t{ \"From: foo\\r\\n\\r\\n\", \"From:
        foo\\r\\n\\r\\n\", 0 },\n\t\t{ \"From: foo\\r\\n\\r\\nbar\", \"From: foo\\r\\n\\r\\n\",
        -3 }\n\t}"
      pos:
        line_end: 589
        line_start: 585
        source_file: /src/dovecot/src/lib-mail/test-istream-header-filter.c
    typedefs: []
    union: []
- function_names:
  - encode_test
  - test_istream_qp_encoder
  - main
  source_file: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: WHITESPACE10
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c
      type_or_value: '"   \t   \t \t"'
    - item_type: preproc_def
      name: WHITESPACE70
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c
      type_or_value: WHITESPACE10 WHITESPACE10 WHITESPACE10 WHITESPACE10 WHITESPACE10
        WHITESPACE10 WHITESPACE10
    structs:
    - fields:
      - name: '*input'
        type: void
      - name: '*output'
        type: char
      - name: stream_errno
        type: int
      item_type: struct
      name: "tests[] = {\n\t{ \"\", \"\", 0 },\n\t{ \"short test\", \"short test\",
        0 },\n\t{ \"C'est une cha\\xc3\\xaene de test simple\", \"C'est une cha=C3=AEne
        de test simple\", 0 },\n\t{\n\t  \"wrap after 76 characters wrap after 76
        characters wrap after 76 characters wrap after 76 characters\",\n\t  \"wrap
        after 76 characters wrap after 76 characters wrap after 76 character=\\r\\ns
        wrap after 76 characters\",\n\t  0\n\t},\n\t{\n\t  /* the string is split
        up to avoid C compilers thinking \\x99ed as escape */\n\t  \"P\\xc5\\x99\"
        \"edstavitel\\xc3\\xa9 francouzsk\\xc3\\xa9ho lidu, ustanoveni v \"\n\t  \"N\\xc3\\xa1rodn\\xc3\\xadm
        shrom\\xc3\\xa1\\xc5\\xbe\" \"d\\xc4\\x9bn\\xc3\\xad, domn\"\n\t  \"\\xc3\\xadvaj\\xc3\\xad\"
        \"ce se, \\xc5\\xbe\" \"e nev\\xc4\\x9b\" \"domost, zapomenut\\xc3\"\n\t  \"\\xad
        nebo pohrd\\xc3\\xa1n\\xc3\\xad lidsk\\xc3\\xbdmi pr\\xc3\\xa1vy jsou j\"\n\t
        \ \"edin\\xc3\\xbdmi p\\xc5\\x99\\xc3\\xad\\xc4\\x8dinami ve\\xc5\\x99\" \"ejn\\xc3\\xb\"\n\t
        \ \"dch ne\\xc5\\xa1t\\xc4\\x9bst\\xc3\\xad a zkorumpov\\xc3\\xa1n\\xc3\\xad
        vl\"\n\t  \"\\xc3\\xa1\" \"d, rozhodli se vylo\\xc5\\xbeit v slavnostn\\xc3\\xad
        Deklara\"\n\t  \"ci p\\xc5\\x99irozen\\xc3\\xa1, nezciziteln\\xc3\\xa1 a posv\\xc3\\xa1tn\\xc3\"\n\t
        \ \"\\xa1 pr\\xc3\\xa1va \\xc4\\x8dlov\\xc4\\x9bka za t\\xc3\\xadm \\xc3\\xba\\xc4\"\n\t
        \ \"\\x8d\" \"elem, aby tato Deklarace, neust\\xc3\\xa1le jsouc p\\xc5\\x99\"
        \"ed o\"\n\t  \"\\xc4\\x8\" \"dima v\\xc5\\xa1\" \"em \\xc4\\x8dlen\\xc5\\xafm
        lidsk\\xc3\\xa9 spo\"\n\t  \"le\\xc4\\x8dnosti, uv\\xc3\\xa1\" \"d\\xc4\\x9bla
        jim st\\xc3\\xa1le na pam\\xc4\"\n\t  \"\\x9b\\xc5\\xa5 jejich pr\\xc3\\xa1va
        a jejich povinnosti; aby \\xc4\\x8din\"\n\t  \"y z\\xc3\\xa1konod\\xc3\\xa1rn\\xc3\\xa9
        moci a \\xc4\\x8diny v\\xc3\\xbdkonn\"\n\t  \"\\xc3\\xa9 moci mohly b\\xc3\\xbdt
        v ka\\xc5\\xbe\" \"d\\xc3\\xa9 chv\\xc3\\xadli p\"\n\t  \"orovn\\xc3\\xa1v\\xc3\\xa1ny
        s \\xc3\\xba\\xc4\\x8d\" \"elem ka\\xc5\\xbe\" \"d\\xc3\"\n\t  \"\\xa9 politick\\xc3\\xa9
        instituce a byly v d\\xc5\\xafsledku toho chov\"\n\t  \"\\xc3\\xa1ny je\\xc5\\xa1t\\xc4\\x9b
        v\\xc3\\xad\" \"ce v \\xc3\\xba\" \"ct\\xc4\"\n\t  \"\\x9b; aby po\\xc5\\xbe\"
        \"adavky ob\\xc4\\x8d\" \"an\\xc5\\xaf, kdy\\xc5\\xbe s\"\n\t  \"e budou nap\\xc5\\x99\\xc3\\xad\\xc5\\xa1t\\xc4\\x9b
        zakl\\xc3\\xa1\" \"dat na j\"\n\t  \"ednoduch\\xc3\\xb\" \"dch a nepop\\xc3\\xadrateln\\xc3\\xbd\"
        \"ch z\\xc3\\xa1sa\"\n\t  \"d\\xc3\\xa1\" \"ch, sm\\xc4\\x9b\\xc5\\x99ovaly
        v\\xc5\\xb\" \"edy k zachov\\xc3\"\n\t  \"\\xa1n\\xc3\\xad \\xc3\\xbastavy
        a ku blahu v\\xc5\\xa1\" \"ech.\",\n\t  \"P=C5=99edstavitel=C3=A9 francouzsk=C3=A9ho
        lidu, ustanoveni v N=C3=A1rodn=\\r\\n\"\n\t  \"=C3=ADm shrom=C3=A1=C5=BEd=C4=9Bn=C3=AD,
        domn=C3=ADvaj=C3=ADce se, =C5=BE=\\r\\n\"\n\t  \"e nev=C4=9Bdomost, zapomenut=C3=AD
        nebo pohrd=C3=A1n=C3=AD lidsk=C3=BDmi=20=\\r\\n\"\n\t  \"pr=C3=A1vy jsou jedin=C3=BDmi
        p=C5=99=C3=AD=C4=8Dinami ve=C5=99ejn=C3=0Bd=\\r\\n\"\n\t  \"ch ne=C5=A1t=C4=9Bst=C3=AD
        a zkorumpov=C3=A1n=C3=AD vl=C3=A1d, rozhodli=20=\\r\\n\"\n\t  \"se vylo=C5=BEit
        v slavnostn=C3=AD Deklaraci p=C5=99irozen=C3=A1, nezcizit=\\r\\n\"\n\t  \"eln=C3=A1
        a posv=C3=A1tn=C3=A1 pr=C3=A1va =C4=8Dlov=C4=9Bka za t=C3=ADm=20=\\r\\n\"\n\t
        \ \"=C3=BA=C4=8Delem, aby tato Deklarace, neust=C3=A1le jsouc p=C5=99ed o=C4=\\r\\n\"\n\t
        \ \"=08dima v=C5=A1em =C4=8Dlen=C5=AFm lidsk=C3=A9 spole=C4=8Dnosti, uv=C3=A1=\\r\\n\"\n\t
        \ \"d=C4=9Bla jim st=C3=A1le na pam=C4=9B=C5=A5 jejich pr=C3=A1va a jejich
        po=\\r\\n\"\n\t  \"vinnosti; aby =C4=8Diny z=C3=A1konod=C3=A1rn=C3=A9 moci
        a =C4=8Diny v=C3=\\r\\n\"\n\t  \"=BDkonn=C3=A9 moci mohly b=C3=BDt v ka=C5=BEd=C3=A9
        chv=C3=ADli porovn=C3=\\r\\n\"\n\t  \"=A1v=C3=A1ny s =C3=BA=C4=8Delem ka=C5=BEd=C3=A9
        politick=C3=A9 instituce=20=\\r\\n\"\n\t  \"a byly v d=C5=AFsledku toho chov=C3=A1ny
        je=C5=A1t=C4=9B v=C3=ADce v =C3=\\r\\n\"\n\t  \"=BAct=C4=9B; aby po=C5=BEadavky
        ob=C4=8Dan=C5=AF, kdy=C5=BE se budou nap=\\r\\n\"\n\t  \"=C5=99=C3=AD=C5=A1t=C4=9B
        zakl=C3=A1dat na jednoduch=C3=0Bdch a nepop=C3=\\r\\n\"\n\t  \"=ADrateln=C3=BDch
        z=C3=A1sad=C3=A1ch, sm=C4=9B=C5=99ovaly v=C5=0Bedy k za=\\r\\n\"\n\t  \"chov=C3=A1n=C3=AD
        =C3=BAstavy a ku blahu v=C5=A1ech.\",\n\t  0\n\t},\n\t/* Test line breaking
        */\n\t{ WHITESPACE70\"1234567\", WHITESPACE70\"123=\\r\\n4567\", 0 },\n\t{
        WHITESPACE70\"      7\", WHITESPACE70\" =20=\\r\\n    7\", 0 },\n\t{ WHITESPACE70\"\"WHITESPACE10\"1\",
        WHITESPACE70\" =20=\\r\\n \\t   \\t \\t1\", 0 },\n\n}"
      pos:
        line_end: 14
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/test-istream-qp-encoder.c
    typedefs: []
    union: []
- function_names:
  - test_ostream_dot_one
  - test_ostream_dot
  - test_ostream_dot_parent_almost_full
  - main
  source_file: /src/dovecot/src/lib-mail/test-ostream-dot.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      item_type: struct
      name: dot_test
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/test-ostream-dot.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-date.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-binary-part.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*next'
        type: struct message_binary_part
      - name: physical_pos
        type: uoff_t
      - name: binary_hdr_size
        type: uoff_t
      - name: binary_body_size
        type: uoff_t
      - name: binary_body_lines_count
        type: unsigned int
      item_type: struct
      name: message_binary_part
      pos:
        line_end: 17
        line_start: 3
        source_file: /src/dovecot/src/lib-mail/message-binary-part.h
    typedefs: []
    union: []
- function_names:
  - i_stream_create_header_filter
  source_file: /src/dovecot/src/lib-mail/istream-header-filter.h
  types:
    enum:
    - enumerators:
      - name: HEADER_FILTER_INCLUDE
        value: '0x01'
      - name: HEADER_FILTER_ADD_MISSING_EOH
        value: '0x10'
      - name: HEADER_FILTER_EXCLUDE
        value: '0x02'
      - name: HEADER_FILTER_HIDE_BODY
        value: '0x08'
      - name: HEADER_FILTER_NO_CR
        value: '0x04'
      - name: HEADER_FILTER_END_BODY_WITH_LF
        value: '0x20'
      - name: HEADER_FILTER_CRLF_PRESERVE
        value: '0x40'
      item_type: enum
      name: header_filter_flags
      pos:
        line_end: 21
        line_start: 5
        source_file: /src/dovecot/src/lib-mail/istream-header-filter.h
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: "header_filter_callback(struct header_filter_istream *input,\n\t\t\t\t
        \   struct message_header_line *hdr,\n\t\t\t\t    bool *matched, void *context)"
      pos:
        line_end: 27
        line_start: 25
        source_file: /src/dovecot/src/lib-mail/istream-header-filter.h
      type: void
    union: []
- function_names:
  - IS_ATEXT
  - IS_ATEXT_NON_TSPECIAL
  - rfc822_parser_deinit
  source_file: /src/dovecot/src/lib-mail/rfc822-parser.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RFC822_NUL_REPLACEMENT_STR
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-mail/rfc822-parser.h
      type_or_value: UNICODE_REPLACEMENT_CHAR_UTF8
    structs:
    - fields:
      - name: '*data'
        type: unsigned char
      - name: '*last_comment'
        type: string_t
      - name: '*nul_replacement_str'
        type: char
      item_type: struct
      name: rfc822_parser_context
      pos:
        line_end: 14
        line_start: 8
        source_file: /src/dovecot/src/lib-mail/rfc822-parser.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-size.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: physical_size
        type: uoff_t
      - name: virtual_size
        type: uoff_t
      - name: lines
        type: unsigned int
      item_type: struct
      name: message_size
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/lib-mail/message-size.h
    typedefs: []
    union: []
- function_names:
  - decode_hex_digit
  - decode_hex_byte
  - rfc2231_decode_value
  - rfc2231_parameter_cmp
  - result_contains
  - reconstruct_rfc2231_key
  - find_charset
  - value_to_utf8
  - rfc2231_decode_charset_value
  - rfc2231_parse
  source_file: /src/dovecot/src/lib-mail/rfc2231-parser.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: idx
        type: unsigned int
      - name: extended
        type: bool
      item_type: struct
      name: rfc2231_parameter
      pos:
        line_end: 97
        line_start: 93
        source_file: /src/dovecot/src/lib-mail/rfc2231-parser.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-part-serialize.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmp_addr
  - test_parse_address_full
  - test_parse_address
  - test_message_address
  - test_message_address_list
  - test_message_address_nuls
  - test_message_address_nuls_display_name
  - test_message_address_non_strict_dots
  - test_parse_path
  - test_message_address_path
  - test_message_address_path_invalid
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-address.c
  types:
    enum:
    - enumerators:
      - name: TEST_MESSAGE_ADDRESS_FLAG_SKIP_LIST
        value: BIT(0)
      item_type: enum
      name: test_message_address
      pos:
        line_end: 9
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/test-message-address.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*wanted_output'
        type: char
      - name: '*wanted_filled_output'
        type: char
      - name: addr
        type: struct message_address
      - name: filled_addr
        type: struct message_address
      - name: flags
        type: enum test_message_address
      item_type: struct
      name: test
      pos:
        line_end: 54
        line_start: 47
        source_file: /src/dovecot/src/lib-mail/test-message-address.c
    - fields:
      - name: '*input'
        type: char
      - name: '*wanted_output'
        type: char
      - name: addr
        type: struct message_address
      item_type: struct
      name: test
      pos:
        line_end: 456
        line_start: 452
        source_file: /src/dovecot/src/lib-mail/test-message-address.c
    typedefs: []
    union: []
- function_names:
  - message_parse_stream
  - test_parsed_parts
  - test_message_parser_small_blocks
  - test_message_parser_stop_early
  - test_message_parser_get_sizes
  - test_message_parser_assert_sizes
  - test_message_parser_truncated_mime_headers
  - test_message_parser_truncated_mime_headers2
  - test_message_parser_truncated_mime_headers3
  - test_message_parser_empty_multipart
  - test_message_parser_duplicate_mime_boundary
  - test_message_parser_garbage_suffix_mime_boundary
  - test_message_parser_trailing_dashes
  - test_message_parser_continuing_mime_boundary
  - test_message_parser_continuing_truncated_mime_boundary
  - test_message_parser_continuing_mime_boundary_reverse
  - test_message_parser_no_eoh
  - test_message_parser_long_mime_boundary
  - test_message_parser_mime_part_nested_limit
  - test_message_parser_mime_part_nested_limit_rfc822
  - test_message_parser_mime_part_limit
  - test_message_parser_mime_part_limit_rfc822
  - test_message_parser_mime_version
  - test_message_parser_mime_version_missing
  - test_assert_virtual_size
  - test_assert_part
  - test_message_parser_too_many_header_bytes_run
  - test_message_parser_too_many_header_bytes_default
  - test_message_parser_too_many_header_bytes_100
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-parser.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_MSG_LEN
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dovecot/src/lib-mail/test-message-parser.c
      type_or_value: (sizeof(test_msg)-1)
    structs: []
    typedefs: []
    union: []
- function_names:
  - FUZZ_BEGIN_DATA
  source_file: /src/dovecot/src/lib-mail/fuzz-message-decoder.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - message_parser_parse_header
  - message_parser_parse_body
  source_file: /src/dovecot/src/lib-mail/message-parser.h
  types:
    enum:
    - enumerators:
      - name: MESSAGE_PARSER_FLAG_SKIP_BODY_BLOCK
        value: '0x01'
      - name: MESSAGE_PARSER_FLAG_INCLUDE_MULTIPART_BLOCKS
        value: '0x04'
      - name: MESSAGE_PARSER_FLAG_MIME_VERSION_STRICT
        value: '0x02'
      - name: MESSAGE_PARSER_FLAG_INCLUDE_BOUNDARIES
        value: '0x08'
      item_type: enum
      name: message_parser_flags
      pos:
        line_end: 17
        line_start: 6
        source_file: /src/dovecot/src/lib-mail/message-parser.h
    preproc_defs:
    - item_type: preproc_def
      name: MESSAGE_PARSER_DEFAULT_MAX_NESTED_MIME_PARTS
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-mail/message-parser.h
      type_or_value: '100'
    - item_type: preproc_def
      name: MESSAGE_PARSER_DEFAULT_MAX_TOTAL_MIME_PARTS
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-mail/message-parser.h
      type_or_value: '10000'
    - item_type: preproc_def
      name: MESSAGE_PARSER_DEFAULT_ALL_HEADERS_MAX_SIZE
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-mail/message-parser.h
      type_or_value: ((size_t) 50 * 1024*1024)
    structs:
    - fields:
      - name: hdr_flags
        type: enum message_header_parser_flags
      - name: flags
        type: enum message_parser_flags
      - name: max_nested_mime_parts
        type: unsigned int
      - name: max_total_mime_parts
        type: unsigned int
      - name: all_headers_max_size
        type: size_t
      item_type: struct
      name: message_parser_settings
      pos:
        line_end: 38
        line_start: 23
        source_file: /src/dovecot/src/lib-mail/message-parser.h
    - fields:
      - name: '*part'
        type: struct message_part
      - name: '*hdr'
        type: struct message_header_line
      - name: '*data'
        type: unsigned char
      - name: size
        type: size_t
      item_type: struct
      name: message_block
      pos:
        line_end: 55
        line_start: 42
        source_file: /src/dovecot/src/lib-mail/message-parser.h
    typedefs:
    - item_type: typedef
      name: "message_part_header_callback_t(struct message_part *part,\n\t\t\t\t\t
        \   struct message_header_line *hdr,\n\t\t\t\t\t    void *context)"
      pos:
        line_end: 60
        line_start: 58
        source_file: /src/dovecot/src/lib-mail/message-parser.h
      type: void
    union: []
- function_names:
  - test_message_date_parse
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-date.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: time
        type: time_t
      - name: tz_offset
        type: int
      - name: ret
        type: bool
      item_type: struct
      name: test_message_date
      pos:
        line_end: 11
        line_start: 6
        source_file: /src/dovecot/src/lib-mail/test-message-date.c
    typedefs: []
    union: []
- function_names:
  - quoted_printable_q_decode
  source_file: /src/dovecot/src/lib-mail/quoted-printable.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/mbox-from.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_message_header_hash_more
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-header-hash.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: version
        type: unsigned int
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t{ \"???hi???\", 1, \"???hi???\" },\n\n\t{ test_input_with_nuls,
        2, \"?\\t\\n? !?x?yz?-plop?\" },\n\t{ \"?hi?\", 2, \"?hi?\" },\n\t{ \"\\x01hi\\x01\",
        2, \"?hi?\" },\n\t{ \"???hi???\", 2, \"?hi?\" },\n\t{ \"\\x01?hi??\\x01\",
        2, \"?hi?\" },\n\t{ \"?\\t?hi?\\t?\", 2, \"?\\t?hi?\\t?\" },\n\t{ \"\\n\\nhi\\n\\n\",
        2, \"\\n\\nhi\\n\\n\" },\n\t{ \"\", 2, \"\" },\n\t{ \" \", 2, \" \" },\n\t{
        \"   \", 2, \"   \" },\n\t{ \"? ? ? hi \\x01\\x02   \\x03   \", 2, \"? ? ?
        hi ?   ?   \" },\n\n\t{ test_input_with_nuls, 3, \"?\\t\\n?!?x?yz?-plop?\"
        },\n\t{ \"\\n\\nhi\\n\\n\", 3, \"\\n\\nhi\\n\\n\" },\n\t{ \"\", 3, \"\" },\n\t{
        \" \", 3, \"\" },\n\t{ \"   \", 3, \"\" },\n\t{ \" ? \", 3, \"?\" },\n\t{
        \"? ? ? hi \\x01\\x02   \\x03   \", 3, \"???hi??\" },\n\t{ \" \\t \\t\", 3,
        \"\\t\\t\" },\n\n\t{ test_input_with_nuls, 4, \"?\\n?!?x?yz?-plop?\" },\n\t{
        \"\\n\\nhi\\n\\n\", 4, \"\\n\\nhi\\n\\n\" },\n\t{ \"\", 4, \"\" },\n\t{ \"
        \", 4, \"\" },\n\t{ \" \\t \\t\", 4, \"\" },\n\t{ \"foo\\t\\t\", 4, \"foo\"
        },\n}"
      pos:
        line_end: 17
        line_start: 13
        source_file: /src/dovecot/src/lib-mail/test-message-header-hash.c
    typedefs: []
    union: []
- function_names:
  - test_qp_encoder
  - test_qp_encoder_binary
  - test_qp_encoder_header
  - main
  source_file: /src/dovecot/src/lib-mail/test-qp-encoder.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: WHITESPACE10
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-mail/test-qp-encoder.c
      type_or_value: '"   \t   \t \t"'
    - item_type: preproc_def
      name: WHITESPACE70
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-mail/test-qp-encoder.c
      type_or_value: WHITESPACE10 WHITESPACE10 WHITESPACE10 WHITESPACE10 WHITESPACE10
        WHITESPACE10 WHITESPACE10
    structs:
    - fields:
      - name: '*input'
        type: void
      - name: input_len
        type: size_t
      - name: '*output'
        type: char
      - name: max_line_len
        type: size_t
      item_type: struct
      name: test_quoted_printable_encode_data
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/test-qp-encoder.c
    typedefs: []
    union: []
- function_names:
  - part_can_convert
  - stream_finish_convert_decision
  - stream_add_data
  - stream_encode_base64
  - stream_add_hdr
  - i_stream_binary_converter_read
  - i_stream_binary_converter_close
  - i_stream_create_binary_converter
  source_file: /src/dovecot/src/lib-mail/istream-binary-converter.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BASE64_BLOCK_INPUT_SIZE
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/istream-binary-converter.c
      type_or_value: '3'
    - item_type: preproc_def
      name: BASE64_BLOCK_SIZE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/istream-binary-converter.c
      type_or_value: '4'
    - item_type: preproc_def
      name: BASE64_BLOCKS_PER_LINE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-mail/istream-binary-converter.c
      type_or_value: (76/BASE64_BLOCK_SIZE)
    - item_type: preproc_def
      name: MAX_HDR_BUFFER_SIZE
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-mail/istream-binary-converter.c
      type_or_value: (1024*32)
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: pool
        type: pool_t
      - name: '*parser'
        type: struct message_parser_ctx
      - name: '*convert_part'
        type: struct message_part
      - name: base64_delayed[BASE64_BLOCK_INPUT_SIZE-1]
        type: char
      - name: base64_delayed_len
        type: unsigned int
      - name: base64_block_pos
        type: unsigned int
      - name: '*hdr_buf'
        type: buffer_t
      - name: cte_header_len
        type: size_t
      - name: content_type_seen
        type: bool
      item_type: struct
      name: binary_converter_istream
      pos:
        line_end: 27
        line_start: 14
        source_file: /src/dovecot/src/lib-mail/istream-binary-converter.c
    typedefs: []
    union: []
- function_names:
  - message_decoder_init
  - message_decoder_deinit
  - message_decoder_set_return_binary
  - message_decoder_parse_cte
  - parse_content_type
  - message_decode_header
  - translation_buf_decode
  - message_decode_body_init_charset
  - message_decode_body
  - message_decoder_decode_next_block
  - message_decoder_current_content_type
  - message_decoder_decode_reset
  source_file: /src/dovecot/src/lib-mail/message-decoder.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: flags
        type: enum message_decoder_flags
      - name: '*normalizer'
        type: normalizer_func_t
      - name: '*prev_part'
        type: struct message_part
      - name: hdr
        type: struct message_header_line
      - name: '*buf'
        type: buffer_t
      - name: '*charset_trans_charset'
        type: char
      - name: '*charset_trans'
        type: struct charset_translation
      - name: translation_buf[CHARSET_MAX_PENDING_BUF_SIZE]
        type: char
      - name: translation_size
        type: size_t
      - name: '*qp'
        type: struct qp_decoder
      - name: base64_decoder
        type: struct base64_decoder
      - name: '*content_type'
        type: char
      - name: message_cte
        type: enum message_cte
      - name: binary_input
        type: bool
      item_type: struct
      name: message_decoder_context
      pos:
        line_end: 35
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/message-decoder.c
    typedefs: []
    union: []
- function_names:
  - IS_LWSP
  - input_idx_need_encoding
  - message_header_encode_q
  - message_header_encode_b
  - message_header_encode
  - message_header_encode_data
  source_file: /src/dovecot/src/lib-mail/message-header-encode.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MIME_WRAPPER_LEN
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-mail/message-header-encode.c
      type_or_value: (strlen("=?utf-8?q?""?="))
    - item_type: preproc_def
      name: MIME_MAX_LINE_LEN
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/message-header-encode.c
      type_or_value: '76'
    structs: []
    typedefs: []
    union: []
- function_names:
  - FUZZ_BEGIN_DATA
  source_file: /src/dovecot/src/lib-mail/fuzz-qp-decoder.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*part'
        type: struct message_part
      - name: '*content_type'
        type: char
      item_type: struct
      name: istream_attachment_header
      pos:
        line_end: 6
        line_start: 3
        source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.h
    - fields:
      - name: '*hash'
        type: char
      - name: start_offset
        type: uoff_t
      - name: encoded_size
        type: uoff_t
      - name: base64_blocks_per_line
        type: unsigned int
      - name: base64_have_crlf
        type: bool
      - name: '*part'
        type: struct message_part
      item_type: struct
      name: istream_attachment_info
      pos:
        line_end: 19
        line_start: 8
        source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.h
    - fields:
      - name: min_size
        type: uoff_t
      - name: '*hash_format'
        type: struct hash_format
      - name: drain_parent_input
        type: bool
      - name: "(*want_attachment)(const struct istream_attachment_header *hdr,\n\t\t\t\tvoid
          *context)"
        type: bool
      - name: (*open_temp_fd)(void *context)
        type: int
      - name: "(*open_attachment_ostream)(struct istream_attachment_info *info,\n\t\t\t\t
          \      struct ostream **output_r,\n\t\t\t\t       const char **error_r,
          void *context)"
        type: int
      - name: "(*close_attachment_ostream)(struct ostream *output, bool success,\n\t\t\t\t\tconst
          char **error, void *context)"
        type: int
      item_type: struct
      name: istream_attachment_settings
      pos:
        line_end: 49
        line_start: 21
        source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-header-decode.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: "message_header_decode_callback_t(const unsigned char *data,\n\t\t\t\t\t
        \     size_t size, const char *charset,\n\t\t\t\t\t      void *context)"
      pos:
        line_end: 9
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/message-header-decode.h
      type: bool
    union: []
- function_names:
  - get_untokenized_msgid
  - strip_lwsp
  - message_id_get_next
  source_file: /src/dovecot/src/lib-mail/message-id.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_iostream_dot_random_io
  - main
  source_file: /src/dovecot/src/lib-mail/test-iostream-dot.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - boundary_find
  - parse_body_add_block
  - message_parser_read_more
  - message_part_append
  - message_part_finish
  - message_boundary_free
  - boundary_remove_until
  - parse_next_body_multipart_init
  - parse_next_body_message_rfc822_init
  - boundary_line_find
  - parse_next_mime_header_init
  - parse_next_body_skip_boundary_line
  - parse_part_finish
  - parse_next_body_to_boundary
  - parse_next_body_to_eof
  - parse_content_type
  - block_is_at_eoh
  - parse_too_many_nested_mime_parts
  - parse_next_header
  - parse_next_header_init
  - message_parser_init_int
  - message_parser_init
  - message_parser_deinit
  - message_parser_deinit_from_parts
  - message_parser_parse_next_block
  - message_parser_parse_header
  - message_parser_parse_body
  source_file: /src/dovecot/src/lib-mail/message-parser.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MUTEX_FLAGS
      pos:
        line_end: 573
        line_start: 571
        source_file: /src/dovecot/src/lib-mail/message-parser.c
      type_or_value: (MESSAGE_PART_FLAG_MESSAGE_RFC822 | MESSAGE_PART_FLAG_MULTIPART)
    structs: []
    typedefs: []
    union: []
- function_names:
  - message_part_data_is_plain_7bit
  - get_param_value
  - message_part_data_find_attachment_filename
  - message_part_get_attachment_filename
  - message_part_data_get_filename
  - envelope_get_field
  - message_part_envelope_parse_from_header
  - parse_mime_parameters
  - parse_content_type
  - parse_content_transfer_encoding
  - parse_content_disposition
  - parse_content_language
  - parse_content_header
  - message_part_data_parse_from_header
  - message_part_has_content_types
  - message_part_is_attachment
  source_file: /src/dovecot/src/lib-mail/message-part-data.c
  types:
    enum:
    - enumerators:
      - name: ENVELOPE_FIELD_DATE
        value: '0'
      - name: ENVELOPE_FIELD_SUBJECT
      - name: ENVELOPE_FIELD_FROM
      - name: ENVELOPE_FIELD_SENDER
      - name: ENVELOPE_FIELD_REPLY_TO
      - name: ENVELOPE_FIELD_TO
      - name: ENVELOPE_FIELD_CC
      - name: ENVELOPE_FIELD_BCC
      - name: ENVELOPE_FIELD_IN_REPLY_TO
      - name: ENVELOPE_FIELD_MESSAGE_ID
      - name: ENVELOPE_FIELD_UNKNOWN
      item_type: enum
      name: envelope_field
      pos:
        line_end: 177
        line_start: 164
        source_file: /src/dovecot/src/lib-mail/message-part-data.c
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_message_header_parser_one
  - test_message_header_parser
  - hdr_write
  - test_message_header_parser_partial
  - test_message_header_parser_long_lines_str
  - test_message_header_parser_long_lines
  - test_message_header_parser_extra_cr_in_eoh
  - test_message_header_parser_no_eoh
  - test_message_header_parser_nul
  - test_message_header_parser_extra_crlf_in_name
  - assert_parsed_field
  - assert_parse_line
  - test_message_header_truncation_clean_oneline
  - test_message_header_truncation_flag0
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-header-parser.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST1_MSG_BODY_LEN
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-mail/test-message-header-parser.c
      type_or_value: '5'
    - item_type: preproc_def
      name: NAME10
      pos:
        line_end: 249
        line_start: 248
        source_file: /src/dovecot/src/lib-mail/test-message-header-parser.c
      type_or_value: '"1234567890"'
    - item_type: preproc_def
      name: NAME100
      pos:
        line_end: 251
        line_start: 249
        source_file: /src/dovecot/src/lib-mail/test-message-header-parser.c
      type_or_value: "NAME10 NAME10 NAME10 NAME10 NAME10 \\\n\t\tNAME10 NAME10 NAME10
        NAME10 NAME10"
    - item_type: preproc_def
      name: NAME1000
      pos:
        line_end: 253
        line_start: 251
        source_file: /src/dovecot/src/lib-mail/test-message-header-parser.c
      type_or_value: "NAME100 NAME100 NAME100 NAME100 NAME100 \\\n\t\t NAME100 NAME100
        NAME100 NAME100 NAME100"
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_html2text
  - test_mail_html2text_random
  - main
  source_file: /src/dovecot/src/lib-mail/test-mail-html2text.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t{ \"&&aaaaaaaaaa\", \"\" },\n\n\t{ \"a&amp;&lt;&clubs;&gt;b\",\n\t
        \ \"a&<\\xE2\\x99\\xA3>b\" },\n\t{ \"&\", \"\" },\n\t{ \"&amp\", \"\" },\n\n\t{
        \"a<style>stylesheet is ignored</style>b\",\n\t  \"a b\" },\n\t{ \"a<stylea>b</stylea>c\",\n\t
        \ \"a b c\" },\n\t{ \"a<!--x <p foo=\\\"bar\\\">commented tags ignored also</p>
        y-->b\",\n\t  \"ab\" },\n\t{ \"a<script>javascript <p>foo</p> ignored</script>b\",\n\t
        \ \"a b\" },\n\t{ \"a<scripta>b</scripta>c\",\n\t  \"a b c\" },\n\t{ \"a<blockquote><blockquote>second
        level</blockquote>ignored</blockquote>b\",\n\t  \"a b\" },\n\t{ \"a<![CDATA[<style>]]
        >b</style>]]>c\",\n\t  \"a<style>]] >b</style>c\" },\n\n\t{ \"a<foo\", \"a\"
        },\n\t{ \"a<blockquote\", \"a\" },\n\t{ \"a<blockquote>foo</blockquote\",
        \"a \" },\n\t{ \"a<\", \"a\" },\n\t{ \"a<![CDATA[b\", \"ab\" },\n\t{ \"a<![CDATA[b]]\",
        \"ab\" },\n\t{ \"a&#228;\", \"a\\xC3\\xA4\" },\n\t{ \"a&#xe4;\", \"a\\xC3\\xA4\"
        },\n\t{ \"&#8364;\", \"\\xE2\\x82\\xAC\" },\n\t{ \"&#deee;\", \"\" }, // invalid
        codepoint\n}"
      pos:
        line_end: 11
        line_start: 8
        source_file: /src/dovecot/src/lib-mail/test-mail-html2text.c
    typedefs: []
    union: []
- function_names:
  - test_open_temp_fd_callback
  - test_open_attachment_ostream
  - test_open_attachment_ostream_error
  - test_close_attachment_ostream
  - test_close_attachment_ostream_error
  - test_build_original_istream
  - get_istream_attachment_settings
  - test_input_stream
  - test_istream_attachment
  - test_istream_attachment_extractor_one
  - test_istream_attachment_extractor
  - test_istream_attachment_extractor_error
  - test_istream_attachment_connector
  - test_input_file
  - main
  source_file: /src/dovecot/src/lib-mail/test-istream-attachment.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BINARY_TEXT_LONG
      pos:
        line_end: 20
        line_start: 17
        source_file: /src/dovecot/src/lib-mail/test-istream-attachment.c
      type_or_value: '"we have\ra lot \nof \0binary stuff in here\n" \

        "b adjig sadjg jasidgjiaehga3wht8a3w8ghxjc dsgad hasdghsd gasd ds" \

        "jdsoga sjdga0w3tjhawjgsertniq3n5oqerjqw2r89q23h awhrqh835r8a"'
    - item_type: preproc_def
      name: BINARY_TEXT_LONG_BASE64
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/dovecot/src/lib-mail/test-istream-attachment.c
      type_or_value: '"d2UgaGF2ZQ1hIGxvdCAKb2YgAGJpbmFyeSBzdHVmZiBpbiBoZXJlCmIgYWRqaWcgc2FkamcgamFz\r\n"
        \

        "aWRnamlhZWhnYTN3aHQ4YTN3OGdoeGpjIGRzZ2FkIGhhc2RnaHNkIGdhc2QgZHNqZHNvZ2Egc2pk\r\n"
        \

        "Z2EwdzN0amhhd2pnc2VydG5pcTNuNW9xZXJqcXcycjg5cTIzaCBhd2hycWg4MzVyOGE="'
    - item_type: preproc_def
      name: BINARY_TEXT_SHORT
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-mail/test-istream-attachment.c
      type_or_value: '"eh"'
    - item_type: preproc_def
      name: BINARY_TEXT_SHORT_BASE64
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-mail/test-istream-attachment.c
      type_or_value: '"ZWg="'
    structs:
    - fields:
      - name: buffer_offset
        type: size_t
      - name: start_offset
        type: uoff_t
      - name: encoded_size
        type: uoff_t
      - name: base64_blocks_per_line
        type: unsigned int
      item_type: struct
      name: attachment
      pos:
        line_end: 119
        line_start: 114
        source_file: /src/dovecot/src/lib-mail/test-istream-attachment.c
    typedefs: []
    union: []
- function_names:
  - rfc822_parser_init
  - rfc822_skip_comment
  - rfc822_skip_lwsp
  - rfc822_parse_atom
  - rfc822_parse_dot_atom
  - rfc822_parse_mime_token
  - rfc822_parse_quoted_string
  - rfc822_parse_atom_or_dot
  - rfc822_parse_phrase
  - rfc822_parse_domain_literal
  - rfc822_decode_punycode
  - rfc822_parse_domain
  - rfc822_parse_content_type
  - rfc822_parse_content_param
  source_file: /src/dovecot/src/lib-mail/rfc822-parser.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/istream-dot.h
  types:
    enum:
    - enumerators:
      - name: ISTREAM_DOT_NO_TRIM
        value: '0x00'
      - name: ISTREAM_DOT_TRIM_TRAIL
        value: '0x01'
      - name: ISTREAM_DOT_LOOSE_EOT
        value: '0x02'
      - name: ISTREAM_DOT_STRICT_EOT
        value: '0x00'
      item_type: enum
      name: istream_dot_flags
      pos:
        line_end: 13
        line_start: 3
        source_file: /src/dovecot/src/lib-mail/istream-dot.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - i_stream_qp_decoder_close
  - i_stream_qp_decoder_read
  - i_stream_qp_decoder_seek
  - i_stream_create_qp_decoder
  source_file: /src/dovecot/src/lib-mail/istream-qp-decoder.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*buf'
        type: buffer_t
      - name: '*qp'
        type: struct qp_decoder
      item_type: struct
      name: qp_decoder_istream
      pos:
        line_end: 13
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/istream-qp-decoder.c
    typedefs: []
    union: []
- function_names:
  - message_parse_stream
  - test_message_part_attachment
  - test_message_inline_with_cd_filename_star
  - test_message_inline_with_cd_filename
  - test_message_inline_with_ct_name_star
  - test_message_inline_with_ct_name
  - test_message_inline_without_filename
  - test_message_attachment_without_filename
  - test_message_attachment_with_cd_filename_star
  - test_message_attachment_with_cd_filename
  - test_message_without_attachment
  - test_message_attachment_with_ct_name
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-part-data.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_message_snippet
  - test_message_snippet_nuls
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-snippet.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: max_snippet_chars
        type: unsigned int
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t{ \"Content-Type: text/plain\\n\"\n\t  \"\\n\"\n\t  \"1234567890
        234567890\",\n\t  12,\n\t  \"1234567890 2\" },\n\t{ \"Content-Type: text/plain\\n\"\n\t
        \ \"\\n\"\n\t  \"line1\\n>quote2\\nline2\\n\",\n\t  100,\n\t  \"line1 line2\"
        },\n\t{ \"Content-Type: text/plain\\n\"\n\t  \"\\n\"\n\t  \"line1\\n>quote2\\n>
        quote3\\n > line4\\n\\n  \\t\\t  \\nline5\\n  \\t \",\n\t  100,\n\t  \"line1
        > line4 line5\" },\n\t{ \"Content-Type: text/plain; charset=utf-8\\n\"\n\t
        \ \"\\n\"\n\t  \"hyv\\xC3\\xA4\\xC3\\xA4 p\\xC3\\xA4iv\\xC3\\xA4\\xC3\\xA4\",\n\t
        \ 11,\n\t  \"hyv\\xC3\\xA4\\xC3\\xA4 p\\xC3\\xA4iv\\xC3\\xA4\" },\n\t{ \"Content-Type:
        text/plain; charset=utf-8\\n\"\n\t  \"Content-Transfer-Encoding: quoted-printable\\n\"\n\t
        \ \"\\n\"\n\t  \"hyv=C3=A4=C3=A4 p=C3=A4iv=C3=A4=C3=A4\",\n\t  11,\n\t  \"hyv\\xC3\\xA4\\xC3\\xA4
        p\\xC3\\xA4iv\\xC3\\xA4\" },\n\n\t{ \"Content-Transfer-Encoding: quoted-printable\\n\"\n\t
        \ \"Content-Type: text/html;\\n\"\n\t  \"      charset=utf-8\\n\"\n\t  \"\\n\"\n\t
        \ \"<html><head><meta http-equiv=3D\\\"Content-Type\\\" content=3D\\\"text/html
        =\\n\"\n\t  \"charset=3Dutf-8\\\"></head><body style=3D\\\"word-wrap: break-word;
        =\\n\"\n\t  \"-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;\\\"
        =\\n\"\n\t  \"class=3D\\\"\\\">Hi,<div class=3D\\\"\\\"><br class=3D\\\"\\\"></div><div
        class=3D\\\"\\\">How =\\n\"\n\t  \"is it going? <blockquote>quoted text is
        ignored</blockquote>\\n\"\n\t  \"&gt; -foo\\n\"\n\t  \"</div><br =class=3D\\\"\\\"></body></html>=\\n\",\n\t
        \ 100,\n\t  \"Hi, How is it going?\" },\n\n\t{ \"Content-Transfer-Encoding:
        quoted-printable\\n\"\n\t  \"Content-Type: application/xhtml+xml;\\n\"\n\t
        \ \"      charset=utf-8\\n\"\n\t  \"\\n\"\n\t  \"<html><head><meta http-equiv=3D\\\"Content-Type\\\"
        content=3D\\\"text/html =\\n\"\n\t  \"charset=3Dutf-8\\\"></head><body style=3D\\\"word-wrap:
        break-word; =\\n\"\n\t  \"-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;\\\"
        =\\n\"\n\t  \"class=3D\\\"\\\">Hi,<div class=3D\\\"\\\"><br class=3D\\\"\\\"></div><div
        class=3D\\\"\\\">How =\\n\"\n\t  \"is it going? <blockquote>quoted text is
        ignored</blockquote>\\n\"\n\t  \"&gt; -foo\\n\"\n\t  \"</div><br =class=3D\\\"\\\"></body></html>=\\n\",\n\t
        \ 100,\n\t  \"Hi, How is it going?\" },\n\t{ \"Content-Type: text/plain\\n\"\n\t
        \ \"\\n\"\n\t  \">quote1\\n>quote2\\n\",\n\t  100,\n\t  \">quote1 quote2\"
        },\n\t{ \"Content-Type: text/plain\\n\"\n\t  \"\\n\"\n\t  \">quote1\\n>quote2\\nbottom\\nposter\\n\",\n\t
        \ 100,\n\t  \"bottom poster\" },\n\t{ \"Content-Type: text/plain\\n\"\n\t
        \ \"\\n\"\n\t  \"top\\nposter\\n>quote1\\n>quote2\\n\",\n\t  100,\n\t  \"top
        poster\" },\n\t{ \"Content-Type: text/plain\\n\"\n\t  \"\\n\"\n\t  \">quoted
        long text\",\n\t  7,\n\t  \">quoted\" },\n\t{ \"Content-Type: text/plain\\n\"\n\t
        \ \"\\n\"\n\t  \">quoted long text\",\n\t  8,\n\t  \">quoted\" },\n\t{ \"Content-Type:
        text/plain\\n\"\n\t  \"\\n\"\n\t  \"whitespace and more\",\n\t  10,\n\t  \"whitespace\"
        },\n\t{ \"Content-Type: text/plain\\n\"\n\t  \"\\n\"\n\t  \"whitespace and
        more\",\n\t  11,\n\t  \"whitespace\" },\n\t{ \"Content-Type: text/plain; charset=utf-8\\n\"\n\t
        \ \"\\n\"\n\t  \"Invalid utf8 \\x80\\xff\\n\",\n\t  100,\n\t  \"Invalid utf8
        \"UNICODE_REPLACEMENT_CHAR_UTF8 },\n\t{ \"Content-Type: text/plain; charset=utf-8\\n\"\n\t
        \ \"\\n\"\n\t  \"Incomplete utf8 \\xC3\",\n\t  100,\n\t  \"Incomplete utf8\"
        },\n\t{ \"Content-Transfer-Encoding: quoted-printable\\n\"\n\t  \"Content-Type:
        text/html;\\n\"\n\t  \"      charset=utf-8\\n\"\n\t  \"\\n\"\n\t  \"<html><head><meta
        http-equiv=3D\\\"Content-Type\\\" content=3D\\\"text/html =\\n\"\n\t  \"charset=3Dutf-8\\\"></head><body
        style=3D\\\"word-wrap: break-word; =\\n\"\n\t  \"-webkit-nbsp-mode: space;
        -webkit-line-break: after-white-space;\\\" =\\n\"\n\t  \"class=3D\\\"\\\"><div><blockquote>quoted
        text is included</blockquote>\\n\"\n\t  \"</div><br =class=3D\\\"\\\"></body></html>=\\n\",\n\t
        \ 100,\n\t  \">quoted text is included\" },\n\t{ \"Content-Type: text/plain;
        charset=utf-8\\n\"\n\t \"\\n\"\n\t \"I think\\n\",\n\t 100,\n\t \"I think\"\n\t},\n\t{
        \"Content-Type: text/plain; charset=utf-8\\n\"\n\t \"\\n\"\n\t \"  Lorem Ipsum\\n\",\n\t
        100,\n\t \"Lorem Ipsum\"\n\t},\n\t{ \"Content-Type: text/plain; charset=utf-8\\n\"\n\t
        \"\\n\"\n\t \" I think\\n\",\n\t 100,\n\t \"I think\"\n\t},\n\t{ \"Content-Type:
        text/plain; charset=utf-8\\n\"\n\t \"\\n\"\n\t \"   A cat\\n\",\n\t 100,\n\t
        \"A cat\"\n\t},\n\t{ \"Content-Type: text/plain; charset=utf-8\\n\"\n\t \"\\n\"\n\t
        \" \\n\",\n\t 100,\n\t \"\"\n\t},\n\t{ \"MIME-Version: 1.0\\n\"\n\t \"Content-Type:
        multipart/mixed; boundary=a\\n\"\n\t \"\\n--a\\n\"\n\t \"Content-Transfer-Encoding:
        7bit\\n\"\n\t \"Content-Type: text/html; charset=utf-8\\n\\n\"\n\t \"<html><head></head><body><p>part
        one</p></body></head>\\n\"\n\t \"\\n--a\\n\"\n\t \"Content-Transfer-Encoding:
        7bit\\n\"\n\t \"Content-Type: text/html; charset=utf-8\\n\\n\"\n\t \"<html><head></head><body><p>part
        two</p></body></head>\\n\"\n\t \"\\n--a--\\n\",\n\t 100,\n\t \"part one\"\n\t},\n\t{
        \"MIME-Version: 1.0\\n\"\n\t \"Content-Type: multipart/alternative; boundary=a\\n\"\n\t
        \"\\n--a\\n\"\n\t \"Content-Transfer-Encoding: 7bit\\n\"\n\t \"Content-Type:
        text/html; charset=utf-8\\n\\n\"\n\t \"<html><head></head><body><p>part one</p></body></head>\\n\"\n\t
        \"\\n--a\\n\"\n\t \"Content-Transfer-Encoding: 7bit\\n\"\n\t \"Content-Type:
        text/plain; charset=utf-8\\n\\n\"\n\t \"part two\\n\"\n\t \"\\n--a--\\n\",\n\t
        100,\n\t \"part one\"\n\t},\n\t{ \"MIME-Version: 1.0\\n\"\n\t  \"Content-Type:
        multipart/mixed; boundary=a\\n\"\n\t  \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding:
        7bit\\n\"\n\t  \"Content-Type: text/html; charset=utf-8\\n\\n\"\n\t  \"<html><head></head><body><div><p></p><!--
        comment --></body></head>\\n\"\n\t  \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding:
        7bit\\n\"\n\t  \"Content-Type: text/html; charset=utf-8\\n\\n\"\n\t  \"<html><head></head><body><p>part
        two</p></body></head>\\n\"\n\t  \"\\n--a--\\n\",\n\t  100,\n\t  \"part two\"\n\t},\n\t{
        \"MIME-Version: 1.0\\n\"\n\t  \"Content-Type: multipart/alternative; boundary=a\\n\"\n\t
        \ \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding: 7bit\\n\"\n\t \"Content-Type:
        text/plain; charset=utf-8\\n\\n\"\n\t  \"> original text\\n\"\n\t  \"\\n--a\\n\"\n\t
        \ \"Content-Transfer-Encoding: 7bit\\n\"\n\t  \"Content-Type: text/plain;
        charset=utf-8\\n\\n\"\n\t  \"part two\\n\"\n\t  \"\\n--a--\\n\",\n\t  100,\n\t
        \ \">original text\"\n\t},\n\t{ \"MIME-Version: 1.0\\n\"\n\t  \"Content-Type:
        multipart/alternative; boundary=a\\n\"\n\t  \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding:
        7bit\\n\"\n\t  \"Content-Type: text/plain; charset=utf-8\\n\\n\"\n\t  \"top
        poster\\n\"\n\t  \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding: 7bit\\n\"\n\t
        \ \"Content-Type: text/plain; charset=utf-8\\n\\n\"\n\t  \"> original text\\n\"\n\t
        \ \"\\n--a--\\n\",\n\t  100,\n\t  \"top poster\"\n\t},\n\t{ \"MIME-Version:
        1.0\\n\"\n\t  \"Content-Type: multipart/mixed; boundary=a\\n\"\n\t  \"\\n--a\\n\"\n\t
        \ \"Content-Transfer-Encoding: 7bit\\n\"\n\t  \"Content-Type: text/html; charset=utf-8\\n\\n\"\n\t
        \ \"<html><head></head><body><div><p></p><!-- comment --></body></head>\\n\"\n\t
        \ \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding: 7bit\\n\"\n\t  \"Content-Type:
        text/html; charset=utf-8\\n\\n\"\n\t  \"<html><head></head><body><blockquote><!--
        another --></blockquote>\\n\"\n\t \"</body></head>\\n\"\n\t  \"\\n--a--\\n\",\n\t
        \ 100,\n\t  \"\"\n\t},\n\t{ \"MIME-Version: 1.0\\n\"\n\t  \"Content-Type:
        multipart/mixed; boundary=a\\n\"\n\t  \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding:
        7bit\\n\"\n\t  \"Content-Type: text/html; charset=utf-8\\n\\n\"\n\t  \"\\n--a\\n\"\n\t
        \ \"Content-Transfer-Encoding: 7bit\\n\"\n\t  \"Content-Type: text/html; charset=utf-8\\n\\n\"\n\t
        \ \"</body></head>\\n\"\n\t  \"\\n--a--\\n\",\n\t  100,\n\t  \"\"\n\t},\n\t{
        \"MIME-Version: 1.0\\n\"\n\t  \"Content-Type: multipart/mixed; boundary=a\\n\"\n\t
        \ \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding: base64\\n\"\n\t  \"Content-Type:
        application/octet-stream\\n\\n\"\n\t  \"U2hvdWxkIG5vdCBiZSBpbiBzbmlwcGV0\\n\"\n\t
        \ \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding: 7bit\\n\"\n\t  \"Content-Type:
        text/html; charset=utf-8\\n\\n\"\n\t  \"<html><head></head><body><p>Should
        be in snippet</p></body></html>\\n\"\n\t  \"\\n--a--\\n\",\n\t  100,\n\t  \"Should
        be in snippet\"\n\t},\n\t{ \"MIME-Version: 1.0\\n\"\n\t  \"Content-Type: multipart/mixed;
        boundary=a\\n\"\n\t  \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding: base64\\n\"\n\t
        \ \"Content-Type: application/octet-stream\\n\\n\"\n\t  \"U2hvdWxkIG5vdCBiZSBpbiBzbmlwcGV0\\n\"\n\t
        \ \"\\n--a\\n\"\n\t  \"Content-Transfer-Encoding: base64\\n\"\n\t  \"Content-Type:
        TeXT/html; charset=utf-8\\n\\n\"\n\t  \"PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjxwPlNob3VsZCBiZSBpbiBzbmlwcGV0PC9wPjwvYm9k\\n\"\n\t
        \ \"eT48L2h0bWw+\\n\"\n\t  \"\\n--a--\\n\",\n\t  100,\n\t  \"Should be in
        snippet\"\n\t},\n}"
      pos:
        line_end: 13
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/test-message-snippet.c
    typedefs: []
    union: []
- function_names:
  - test_quoted_printable_q_decode
  - main
  source_file: /src/dovecot/src/lib-mail/test-quoted-printable.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_qp_decoder
  - main
  source_file: /src/dovecot/src/lib-mail/test-qp-decoder.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: WHITESPACE10
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-mail/test-qp-decoder.c
      type_or_value: '"   \t   \t \t"'
    - item_type: preproc_def
      name: WHITESPACE70
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-mail/test-qp-decoder.c
      type_or_value: WHITESPACE10 WHITESPACE10 WHITESPACE10 WHITESPACE10 WHITESPACE10
        WHITESPACE10 WHITESPACE10
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      - name: error_pos
        type: size_t
      - name: ret
        type: int
      item_type: struct
      name: test_quoted_printable_decode_data
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/test-qp-decoder.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/quoted-printable.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - preparsed_parse_eof
  - preparsed_skip_to_next
  - preparsed_parse_body_finish
  - preparsed_parse_prologue_finish
  - preparsed_parse_body_more
  - preparsed_parse_prologue_more
  - preparsed_parse_epilogue_more
  - preparsed_parse_epilogue_boundary
  - preparsed_parse_body_init
  - preparsed_parse_epilogue_init
  - preparsed_parse_finish_header
  - preparsed_parse_next_header
  - preparsed_parse_next_header_init
  - message_parser_init_from_parts
  source_file: /src/dovecot/src/lib-mail/message-parser-from-parts.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-address.h
  types:
    enum:
    - enumerators:
      - name: MESSAGE_ADDRESS_PARSE_FLAG_FILL_MISSING
        value: BIT(0)
      - name: MESSAGE_ADDRESS_PARSE_FLAG_STRICT_DOTS
        value: BIT(1)
      item_type: enum
      name: message_address_parse_flags
      pos:
        line_end: 14
        line_start: 5
        source_file: /src/dovecot/src/lib-mail/message-address.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*prev'
        type: struct message_address
      - name: '*name'
        type: char
      - name: '*route'
        type: char
      - name: '*mailbox'
        type: char
      - name: '*domain'
        type: char
      - name: invalid_syntax
        type: bool
      item_type: struct
      name: message_address
      pos:
        line_end: 31
        line_start: 19
        source_file: /src/dovecot/src/lib-mail/message-address.h
    - fields:
      - name: '*head'
        type: struct message_address
      item_type: struct
      name: message_address_list
      pos:
        line_end: 35
        line_start: 33
        source_file: /src/dovecot/src/lib-mail/message-address.h
    typedefs: []
    union: []
- function_names:
  - test_message_decoder
  - test_message_decoder_multipart
  - test_message_decoder_current_content_type
  - test_message_decoder_content_transfer_encoding
  - test_message_decoder_invalid_content_transfer_encoding
  - X10
  - TEST_CASE
  - test_message_decoder_charset
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-decoder.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: hdr
        type: struct message_header_line
      - name: cte
        type: enum message_cte
      item_type: struct
      name: "test_case[] = {\n\t\tTEST_CASE(\"(binary comment) base64\", MESSAGE_CTE_BASE64),\n\t\tTEST_CASE(\"(\\\"binary\\\"
        ( (comment) test) ) base64\", MESSAGE_CTE_BASE64),\n\t\tTEST_CASE(\"base64
        binary\", MESSAGE_CTE_UNKNOWN),\n\t\tTEST_CASE(\"base64\\0binary\", MESSAGE_CTE_UNKNOWN),\n\t\tTEST_CASE(\"\\0binary\",
        MESSAGE_CTE_UNKNOWN),\n\t\tTEST_CASE(\"( \" X10(X10(X10(X10(\"a\")))) \" )
        base64\", MESSAGE_CTE_BASE64),\n\t\tTEST_CASE(\"( \" X10(X10(X10(X10(\"a\"))))
        \" ) base64 ( \" X10(X10(X10(X10(\"a\")))) \")\", MESSAGE_CTE_BASE64),\n\t\tTEST_CASE(\"(
        base64\", MESSAGE_CTE_UNKNOWN),\n\t\tTEST_CASE(\"base64 (\", MESSAGE_CTE_BASE64),\n\t\tTEST_CASE(X10(X10(X10(X10(\"
        \")))) \" base64\", MESSAGE_CTE_BASE64),\n\t\tTEST_CASE(\"base64 ; logging-type=\\\"foobar\\\"\",
        MESSAGE_CTE_BASE64),\n\t}"
      pos:
        line_end: 402
        line_start: 399
        source_file: /src/dovecot/src/lib-mail/test-message-decoder.c
    typedefs: []
    union: []
- function_names:
  - test_message_header_decode
  - test_message_header_decode_read_overflow
  - check_encoded
  - check_encode_decode_result
  - test_message_header_decode_encode_random
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-header-decode.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-part.h
  types:
    enum:
    - enumerators:
      - name: MESSAGE_PART_FLAG_MULTIPART
        value: '0x01'
      - name: MESSAGE_PART_FLAG_MULTIPART_DIGEST
        value: '0x02'
      - name: MESSAGE_PART_FLAG_TEXT
        value: '0x08'
      - name: MESSAGE_PART_FLAG_UNUSED
        value: '0x10'
      - name: MESSAGE_PART_FLAG_MESSAGE_RFC822
        value: '0x04'
      - name: MESSAGE_PART_FLAG_HAS_NULS
        value: '0x20'
      - name: MESSAGE_PART_FLAG_IS_MIME
        value: '0x40'
      - name: MESSAGE_PART_FLAG_OVERFLOW
        value: '0x80'
      item_type: enum
      name: message_part_flags
      pos:
        line_end: 28
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/message-part.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*parent'
        type: struct message_part
      - name: '*next'
        type: struct message_part
      - name: '*children'
        type: struct message_part
      - name: physical_pos
        type: uoff_t
      - name: header_size
        type: struct message_size
      - name: body_size
        type: struct message_size
      - name: '*data'
        type: struct message_part_data
      - name: children_count
        type: unsigned int
      - name: flags
        type: enum message_part_flags
      - name: '*context'
        type: void
      item_type: struct
      name: message_part
      pos:
        line_end: 45
        line_start: 30
        source_file: /src/dovecot/src/lib-mail/message-part.h
    typedefs:
    - item_type: typedef
      name: "message_part_comparator_t(\n\tconst struct message_part *p1, const struct
        message_part *p2)"
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/dovecot/src/lib-mail/message-part.h
      type: bool
    union: []
- function_names:
  - FUZZ_BEGIN_DATA
  source_file: /src/dovecot/src/lib-mail/fuzz-message-parser.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - o_stream_dot_finish
  - o_stream_dot_flush
  - o_stream_dot_close
  - o_stream_dot_sendv
  - o_stream_create_dot
  source_file: /src/dovecot/src/lib-mail/ostream-dot.c
  types:
    enum:
    - enumerators:
      - name: STREAM_STATE_INIT
        value: '0'
      - name: STREAM_STATE_CRLF
      - name: STREAM_STATE_CR
      - name: STREAM_STATE_NONE
      - name: STREAM_STATE_DONE
      item_type: enum
      name: dot_ostream_state
      pos:
        line_end: 13
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/ostream-dot.c
    preproc_defs: []
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: state
        type: enum dot_ostream_state
      - name: force_extra_crlf
        type: bool
      item_type: struct
      name: dot_ostream
      pos:
        line_end: 20
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/ostream-dot.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/istream-qp.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ISTREAM_QP_ENCODER_MAX_LINE_LENGTH
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-mail/istream-qp.h
      type_or_value: '75'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_istream_binary_converter_test
  - test_istream_binary_converter_mime
  - test_istream_binary_converter_root
  - test_istream_binary_converter_root_nonbinary
  - test_input_file
  - main
  source_file: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BINARY_TEXT_LONG
      pos:
        line_end: 17
        line_start: 14
        source_file: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
      type_or_value: '"we have\ra lot \nof \0binary stuff in here\n" \

        "b adjig sadjg jasidgjiaehga3wht8a3w8ghxjc dsgad hasdghsd gasd ds" \

        "jdsoga sjdga0w3tjhawjgsertniq3n5oqerjqw2r89q23h awhrqh835r8a"'
    - item_type: preproc_def
      name: BINARY_TEXT_LONG_BASE64
      pos:
        line_end: 21
        line_start: 17
        source_file: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
      type_or_value: '"d2UgaGF2ZQ1hIGxvdCAKb2YgAGJpbmFyeSBzdHVmZiBpbiBoZXJlCmIgYWRqaWcgc2FkamcgamFz\r\n"
        \

        "aWRnamlhZWhnYTN3aHQ4YTN3OGdoeGpjIGRzZ2FkIGhhc2RnaHNkIGdhc2QgZHNqZHNvZ2Egc2pk\r\n"
        \

        "Z2EwdzN0amhhd2pnc2VydG5pcTNuNW9xZXJqcXcycjg5cTIzaCBhd2hycWg4MzVyOGE="'
    - item_type: preproc_def
      name: BINARY_TEXT_SHORT
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
      type_or_value: '"eh"'
    - item_type: preproc_def
      name: BINARY_TEXT_SHORT_BASE64
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-mail/test-istream-binary-converter.c
      type_or_value: '"ZWg="'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-decoder.h
  types:
    enum:
    - enumerators:
      - name: MESSAGE_CTE_UNKNOWN
        value: '0'
      - name: MESSAGE_CTE_BASE64
      - name: MESSAGE_CTE_78BIT
      - name: MESSAGE_CTE_BINARY
      - name: MESSAGE_CTE_QP
      item_type: enum
      name: message_cte
      pos:
        line_end: 13
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/message-decoder.h
    - enumerators:
      - name: MESSAGE_DECODER_FLAG_RETURN_BINARY
        value: '0x02'
      item_type: enum
      name: message_decoder_flags
      pos:
        line_end: 18
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/message-decoder.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/html-entities.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - message_parse_stream
  - test_parsed_parts
  - TEST_CASE_DATA
  - test_message_serialize_deserialize
  - TEST_CASE
  - test_message_deserialize_errors
  - test_message_deserialize_fatals
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-part-serialize.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: input
        type: "struct test_case_data {\n\t\tconst unsigned char *value;\n\t\tsize_t
          value_len;\n\t}"
      - name: expect_ret
        type: int
      item_type: struct
      name: test_case
      pos:
        line_end: 57
        line_start: 51
        source_file: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    - fields:
      - name: '*value'
        type: unsigned char
      - name: value_len
        type: size_t
      item_type: struct
      name: test_case_data
      pos:
        line_end: 55
        line_start: 52
        source_file: /src/dovecot/src/lib-mail/test-message-part-serialize.c
    typedefs: []
    union: []
- function_names:
  - mbox_parse_month
  - mbox_parse_year
  - mbox_from_parse
  - mbox_from_create
  source_file: /src/dovecot/src/lib-mail/mbox-from.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TEST_CASE_DATA
  - compare_search_result
  - test_message_search
  - test_message_search_more_get_decoded
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-search.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_CASE_DATA_EMPTY
      pos:
        line_end: 19
        line_start: 17
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
      type_or_value: '{ .value = NULL, .value_len = 0 }'
    - item_type: preproc_def
      name: TEST_CASE_PLAIN_PREAMBLE
      pos:
        line_end: 22
        line_start: 19
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
      type_or_value: '"Content-Type: text/plain\n" \

        "Content-Transfer-Encoding: binary\n"'
    - item_type: preproc_def
      name: SIGNED_MIME_CORPUS
      pos:
        line_end: 83
        line_start: 60
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
      type_or_value: '"Subject: Hide and seek\n" \

        "MIME-Version: 1.0\n" \

        "Content-Type: multipart/mixed; boundary=1\n" \

        "\n--1\n" \

        "Content-Type: multipart/signed; protocol=\"signature/plain\"; migalc=\"pen+paper\";
        boundary=2\n" \

        "X-Signature-Type: penmanship\n" \

        "\n--2\n" \

        "Content-Type: multipart/alternative; boundary=3\n" \

        "\n--3\n" \

        "Content-Type: text/html; charset=us-ascii\n\n" \

        "<html><head><title>Search me</title></head><body><p>Don''t find me here</p></body></html>\n"
        \

        "\n--3\n" \

        TEST_CASE_PLAIN_PREAMBLE \

        "\n" \

        "Search me, and Find me here" \

        "\n--3--\n" \

        "\n--2\n" \

        "Content-Type: signature/plain; charset=us-ascii\n" \

        "\n" \

        "Signed by undersigned" \

        "\n--2--\n" \

        "\n--1--"'
    - item_type: preproc_def
      name: PARTIAL_MESSAGE_CORPUS
      pos:
        line_end: 92
        line_start: 84
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
      type_or_value: '"X-Weird-Header-1: Bar\n" \

        "X-Weird-Header-2: Hello\n" \

        "Message-ID: <c6cceebc-1dcf-11eb-be8c-f7ca132cbfea@example.org>\n" \

        "Content-Type: text/plain; charset=\"us-ascii\"\n" \

        "Content-Transfer-Encoding: base64\n" \

        "\n" \

        "dGhpcyBpcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgbWVzc2FnZQo="'
    - item_type: preproc_def
      name: PARTIAL_MIME_CORPUS
      pos:
        line_end: 106
        line_start: 93
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
      type_or_value: '"Subject: In parts\n" \

        "MIME-Version: 1.0\n" \

        "Content-Type: multipart/mixed; boundary=1\n" \

        "\n--1\n" \

        TEST_CASE_PLAIN_PREAMBLE \

        "\n" \

        "Hi, this is the fancy thing I was talking about!" \

        "\n--1\n" \

        "Content-Type: Message/Partial; number=1; total=5; id=\"heks68ewe@example.org\"\n"
        \

        "\n" \

        PARTIAL_MESSAGE_CORPUS \

        "\n--1--\n"'
    - item_type: preproc_def
      name: UT8_CORPUS_CONTENT
      pos:
        line_end: 109
        line_start: 107
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
      type_or_value: '"\xe4\xba\xba\xe6\xa8\xa9\xe3\x81\xae\xe7\x84\xa1\xe8\xa6\x96\xe5\x8f\x8a"'
    - item_type: preproc_def
      name: UTF8_CORPUS
      pos:
        line_end: 123
        line_start: 110
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
      type_or_value: "\"Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv?=\\n\" \\\n\"MIME-Version:
        1.0\\n\" \\\n\"Content-Type: multipart/mixed; boundary=1;\\n\" \\\n\"  comment=\\\"\\xe3\\x81\\x93\\xe3\\x82\\x8c\\xe3\\x81\\xaf\\xe5\\xa2\\x83\\xe7\\x95\\x8c\\xe3\"
        \\\n\t    \"\\x81\\xae\\xe3\\x81\\x82\\xe3\\x82\\x8b\\xe3\\x83\\xa1\\xe3\\x83\\x83\\xe3\\x82\"
        \\\n\t    \"\\xbb\\xe3\\x83\\xbc\\xe3\\x82\\xb8\\xe3\\x81\\xa7\\xe3\\x81\\x99\\\"\\n\"
        \\\n\"\\n--1\\n\" \\\nTEST_CASE_PLAIN_PREAMBLE \\\n\"Content-Language: ja\\n\"
        \\\n\"\\n\" \\\nUT8_CORPUS_CONTENT \\\n\"\\n--1--\""
    - item_type: preproc_def
      name: MULTIPART_DIGEST_CORPUS
      pos:
        line_end: 152
        line_start: 124
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
      type_or_value: '"From: Moderator-Address <moderator>\n" \

        "Content-Type: multipart/digest; boundary=1;\n" \

        "\n\n--1\n" \

        "From: someone-else <someone@else>\n" \

        "Subject: my opinion\n" \

        "\n" \

        "This is my opinion" \

        "\n--1\n\n" \

        "From: another one <another@one>\n" \

        "Subject: i disagree\n" \

        "\n" \

        "Not agreeing one bit!" \

        "\n--1\n\n" \

        "From: attachment <attachment@user>\n" \

        "Subject: funny hat\n" \

        "Content-Type: multipart/mixed; boundary=2\n" \

        "\n--2\n" \

        TEST_CASE_PLAIN_PREAMBLE \

        "\n" \

        "Lovely attachment for you" \

        "\n--2\n" \

        "Content-Type: application/octet-stream; disposition=attachment; name=\"test.txt\"\n"
        \

        "Content-Transfer-Encoding: binary\n" \

        "\n" \

        "Foobar" \

        "\n--2--" \

        "\n--1--"'
    structs:
    - fields:
      - name: '*value'
        type: unsigned char
      - name: value_len
        type: size_t
      item_type: struct
      name: test_case_data
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
    - fields:
      - name: input
        type: struct test_case_data
      - name: '*search'
        type: char
      - name: output
        type: struct test_case_data
      - name: expect_found
        type: bool
      - name: expect_body
        type: bool
      - name: expect_header
        type: bool
      - name: '*hdr_name'
        type: char
      item_type: struct
      name: test_case
      pos:
        line_end: 31
        line_start: 23
        source_file: /src/dovecot/src/lib-mail/test-message-search.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-header-hash.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MESSAGE_HEADER_HASH_MAX_VERSION
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-mail/message-header-hash.h
      type_or_value: '4'
    structs:
    - fields:
      - name: prev_was_questionmark
        type: bool
      item_type: struct
      name: message_header_hash_context
      pos:
        line_end: 9
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/message-header-hash.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/istream-binary-converter.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/ostream-dot.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - snippet_add_content
  - snippet_generate
  - snippet_copy
  - message_snippet_generate
  source_file: /src/dovecot/src/lib-mail/message-snippet.c
  types:
    enum:
    - enumerators:
      - name: SNIPPET_STATE_NEWLINE
        value: '0'
      - name: SNIPPET_STATE_NORMAL
      - name: SNIPPET_STATE_QUOTED
      item_type: enum
      name: snippet_state
      pos:
        line_end: 20
        line_start: 13
        source_file: /src/dovecot/src/lib-mail/message-snippet.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*snippet'
        type: string_t
      - name: chars_left
        type: unsigned int
      item_type: struct
      name: snippet_data
      pos:
        line_end: 25
        line_start: 22
        source_file: /src/dovecot/src/lib-mail/message-snippet.c
    - fields:
      - name: snippet
        type: struct snippet_data
      - name: quoted_snippet
        type: struct snippet_data
      - name: state
        type: enum snippet_state
      - name: add_whitespace
        type: bool
      - name: '*html2text'
        type: struct mail_html2text
      - name: '*plain_output'
        type: buffer_t
      item_type: struct
      name: snippet_context
      pos:
        line_end: 34
        line_start: 27
        source_file: /src/dovecot/src/lib-mail/message-snippet.c
    typedefs: []
    union: []
- function_names:
  - ref_buffer_unref
  - i_stream_header_filter_destroy
  - read_mixed
  - cmp_uint
  - match_line_changed
  - add_eol
  - hdr_stream_update_pos
  - hdr_buf_realloc_if_needed
  - read_header
  - handle_end_body_with_lf
  - i_stream_header_filter_read
  - i_stream_header_filter_seek_to_header
  - skip_header
  - stream_reset_to
  - i_stream_header_filter_seek
  - ATTR_NORETURN::i_stream_header_filter_sync
  - i_stream_header_filter_stat
  - i_stream_header_filter_snapshot_free
  - i_stream_header_filter_snapshot
  - i_stream_create_header_filter
  - i_stream_header_filter_add
  source_file: /src/dovecot/src/lib-mail/istream-header-filter.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: refcount
        type: int
      - name: '*buf'
        type: buffer_t
      item_type: struct
      name: ref_buffer
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/istream-header-filter.c
    - fields:
      - name: snapshot
        type: struct istream_snapshot
      - name: '*mstream'
        type: struct header_filter_istream
      - name: '*hdr_buf'
        type: struct ref_buffer
      item_type: struct
      name: header_filter_istream_snapshot
      pos:
        line_end: 19
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/istream-header-filter.c
    - fields:
      - name: istream
        type: struct istream_private
      - name: pool
        type: pool_t
      - name: '*hdr_ctx'
        type: struct message_header_parser_ctx
      - name: '**headers'
        type: char
      - name: headers_count
        type: unsigned int
      - name: '*callback'
        type: header_filter_callback
      - name: '*context'
        type: void
      - name: '*hdr_buf'
        type: struct ref_buffer
      - name: snapshot_pending_refcount
        type: int
      - name: header_size
        type: struct message_size
      - name: skip_count
        type: uoff_t
      - name: last_lf_offset
        type: uoff_t
      - name: cur_line
        type: unsigned int
      - name: header_read
        type: bool
      - name: seen_eoh
        type: bool
      - name: header_parsed
        type: bool
      - name: headers_edited
        type: bool
      - name: exclude
        type: bool
      - name: crlf
        type: bool
      - name: crlf_preserve
        type: bool
      - name: hide_body
        type: bool
      - name: add_missing_eoh
        type: bool
      - name: end_body_with_lf
        type: bool
      - name: last_lf_added
        type: bool
      - name: last_orig_crlf
        type: bool
      - name: last_added_newline
        type: bool
      - name: eoh_not_matched
        type: bool
      - name: callbacks_called
        type: bool
      - name: prev_matched
        type: bool
      item_type: struct
      name: header_filter_istream
      pos:
        line_end: 58
        line_start: 21
        source_file: /src/dovecot/src/lib-mail/istream-header-filter.c
    typedefs: []
    union: []
- function_names:
  - verify_q
  - test_message_header_encode_q
  - verify_b
  - test_message_header_encode_b
  - test_message_header_encode
  - test_message_header_encode_data
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-header-encode.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-header-encode.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-parser-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOUNDARY_STRING_MAX_LEN
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-mail/message-parser-private.h
      type_or_value: (70 + 10)
    - item_type: preproc_def
      name: BOUNDARY_END_MAX_LEN
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-mail/message-parser-private.h
      type_or_value: (BOUNDARY_STRING_MAX_LEN + 2 + 2)
    structs:
    - fields:
      - name: '*next'
        type: struct message_boundary
      - name: '*part'
        type: struct message_part
      - name: '*boundary'
        type: char
      - name: len
        type: size_t
      - name: epilogue_found
        type: bool
      item_type: struct
      name: message_boundary
      pos:
        line_end: 18
        line_start: 10
        source_file: /src/dovecot/src/lib-mail/message-parser-private.h
    - fields:
      - name: part_pool
        type: pool_t
      - name: '*input'
        type: struct istream
      - name: '*parts'
        type: struct message_part
      - name: '*broken_reason'
        type: char
      - name: nested_parts_count
        type: unsigned int
      - name: total_parts_count
        type: unsigned int
      - name: hdr_flags
        type: enum message_header_parser_flags
      - name: flags
        type: enum message_parser_flags
      - name: max_nested_mime_parts
        type: unsigned int
      - name: max_total_mime_parts
        type: unsigned int
      - name: all_headers_max_size
        type: size_t
      - name: all_headers_total_size
        type: size_t
      - name: '*last_boundary'
        type: char
      - name: '*boundaries'
        type: struct message_boundary
      - name: '**next_part'
        type: struct message_part
      - name: skip
        type: size_t
      - name: last_chr
        type: unsigned char
      - name: want_count
        type: unsigned int
      - name: '*hdr_parser_ctx'
        type: struct message_header_parser_ctx
      - name: prev_hdr_newline_size
        type: unsigned int
      - name: "(*parse_next_block)(struct message_parser_ctx *ctx,\n\t\t\t\tstruct
          message_block *block_r)"
        type: int
      - name: part_seen_content_type
        type: bool
      - name: multipart
        type: bool
      - name: preparsed
        type: bool
      - name: eof
        type: bool
      item_type: struct
      name: message_parser_ctx
      pos:
        line_end: 55
        line_start: 20
        source_file: /src/dovecot/src/lib-mail/message-parser-private.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-mail/message-snippet.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - stream_add_data
  - parse_content_type
  - parse_content_disposition
  - astream_parse_header
  - astream_want_attachment
  - astream_base64_decode_lf
  - astream_try_base64_decode_char
  - astream_try_base64_decode
  - astream_open_output
  - astream_add_body
  - astream_decode_base64
  - astream_part_finish
  - astream_part_reset
  - astream_end_of_part
  - astream_read_next
  - i_stream_attachment_extractor_read
  - i_stream_attachment_extractor_close
  - i_stream_create_attachment_extractor
  - i_stream_attachment_extractor_can_retry
  source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
  types:
    enum:
    - enumerators:
      - name: MAIL_ATTACHMENT_STATE_NO
      - name: MAIL_ATTACHMENT_STATE_MAYBE
      - name: MAIL_ATTACHMENT_STATE_YES
      item_type: enum
      name: mail_attachment_state
      pos:
        line_end: 19
        line_start: 15
        source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    - enumerators:
      - name: BASE64_STATE_0
        value: '0'
      - name: BASE64_STATE_CR
      - name: BASE64_STATE_1
      - name: BASE64_STATE_2
      - name: BASE64_STATE_3
      - name: BASE64_STATE_EOB
      - name: BASE64_STATE_EOM
      item_type: enum
      name: base64_state
      pos:
        line_end: 29
        line_start: 21
        source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    preproc_defs:
    - item_type: preproc_def
      name: BASE64_ATTACHMENT_MAX_EXTRA_BYTES
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
      type_or_value: '1024'
    structs:
    - fields:
      - name: '*content_type'
        type: char
      - name: state
        type: enum mail_attachment_state
      - name: start_offset
        type: uoff_t
      - name: base64_state
        type: enum base64_state
      - name: base64_line_blocks
        type: unsigned int
      - name: base64_bytes
        type: uoff_t
      - name: base64_have_crlf
        type: bool
      - name: base64_failed
        type: bool
      - name: temp_fd
        type: int
      - name: '*temp_output'
        type: struct ostream
      - name: '*part_buf'
        type: buffer_t
      item_type: struct
      name: attachment_istream_part
      pos:
        line_end: 47
        line_start: 31
        source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    - fields:
      - name: istream
        type: struct istream_private
      - name: pool
        type: pool_t
      - name: set
        type: struct istream_attachment_settings
      - name: '*context'
        type: void
      - name: '*parser'
        type: struct message_parser_ctx
      - name: '*cur_part'
        type: struct message_part
      - name: part
        type: struct attachment_istream_part
      - name: retry_read
        type: bool
      item_type: struct
      name: attachment_istream
      pos:
        line_end: 61
        line_start: 49
        source_file: /src/dovecot/src/lib-mail/istream-attachment-extractor.c
    typedefs: []
    union: []
- function_names:
  - message_header_hash_more
  source_file: /src/dovecot/src/lib-mail/message-header-hash.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FUZZ_BEGIN_DATA
  source_file: /src/dovecot/src/lib-mail/fuzz-message-date.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mbox_from_parse
  - test_mbox_from_create
  - main
  source_file: /src/dovecot/src/lib-mail/test-mbox-from.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: time
        type: time_t
      - name: tz_offset
        type: int
      - name: '*sender'
        type: char
      - name: ret
        type: int
      item_type: struct
      name: test_mbox_from_parse_output
      pos:
        line_end: 14
        line_start: 9
        source_file: /src/dovecot/src/lib-mail/test-mbox-from.c
    typedefs: []
    union: []
- function_names:
  - IS_LWSP
  - message_parse_header
  source_file: /src/dovecot/src/lib-mail/message-header-parser.h
  types:
    enum:
    - enumerators:
      - name: MESSAGE_HEADER_PARSER_FLAG_SKIP_INITIAL_LWSP
        value: '0x01'
      - name: MESSAGE_HEADER_PARSER_FLAG_CLEAN_ONELINE
        value: '0x04'
      - name: MESSAGE_HEADER_PARSER_FLAG_DROP_CR
        value: '0x02'
      item_type: enum
      name: message_header_parser_flags
      pos:
        line_end: 19
        line_start: 12
        source_file: /src/dovecot/src/lib-mail/message-header-parser.h
    preproc_defs:
    - item_type: preproc_def
      name: MESSAGE_HEADER_BLOCK_DEFAULT_MAX_SIZE
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/lib-mail/message-header-parser.h
      type_or_value: ((size_t) 10 * 1024*1024)
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: name_len
        type: size_t
      - name: '*value'
        type: unsigned char
      - name: value_len
        type: size_t
      - name: '*full_value'
        type: unsigned char
      - name: full_value_len
        type: size_t
      - name: '*middle'
        type: unsigned char
      - name: middle_len
        type: size_t
      - name: name_offset
        type: uoff_t
      - name: continues
        type: bool
      - name: continued
        type: bool
      - name: eoh
        type: bool
      - name: no_newline
        type: bool
      - name: crlf_newline
        type: bool
      - name: use_full_value
        type: bool
      item_type: struct
      name: message_header_line
      pos:
        line_end: 42
        line_start: 21
        source_file: /src/dovecot/src/lib-mail/message-header-parser.h
    typedefs:
    - item_type: typedef
      name: "message_header_callback_t(struct message_header_line *hdr,\n\t\t\t\t
        \      void *context)"
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dovecot/src/lib-mail/message-header-parser.h
      type: void
    union: []
- function_names:
  - message_get_header_size
  - message_get_body_size
  - message_size_add
  - message_skip_virtual
  source_file: /src/dovecot/src/lib-mail/message-size.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - message_search_init
  - message_search_deinit
  - parse_content_type
  - handle_header
  - search_header
  - message_search_more_decoded2
  - message_search_more
  - message_search_more_get_decoded
  - message_search_more_decoded
  - message_search_reset
  - message_search_msg
  source_file: /src/dovecot/src/lib-mail/message-search.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: flags
        type: enum message_search_flags
      - name: '*normalizer'
        type: normalizer_func_t
      - name: '*str_find_ctx'
        type: struct str_find_context
      - name: '*prev_part'
        type: struct message_part
      - name: '*decoder'
        type: struct message_decoder_context
      - name: content_type_text
        type: bool
      item_type: struct
      name: message_search_context
      pos:
        line_end: 21
        line_start: 12
        source_file: /src/dovecot/src/lib-mail/message-search.c
    typedefs: []
    union: []
- function_names:
  - part_serialize
  - message_part_serialize
  - read_next
  - message_part_deserialize_part
  - message_part_deserialize
  source_file: /src/dovecot/src/lib-mail/message-part-serialize.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*data'
        type: unsigned char
      - name: pos
        type: uoff_t
      - name: '*error'
        type: char
      item_type: struct
      name: deserialize_context
      pos:
        line_end: 36
        line_start: 30
        source_file: /src/dovecot/src/lib-mail/message-part-serialize.c
    typedefs: []
    union: []
- function_names:
  - test_message_size
  - test_message_skip_virtual
  - main
  source_file: /src/dovecot/src/lib-mail/test-message-size.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*test_name'
        type: char
      - name: '*message'
        type: char
      - name: has_nuls
        type: bool
      - name: body_newlines
        type: unsigned int
      - name: header_newlines
        type: unsigned int
      - name: message_len
        type: unsigned int
      - name: header_len
        type: unsigned int
      item_type: struct
      name: test_case
      pos:
        line_end: 80
        line_start: 72
        source_file: /src/dovecot/src/lib-mail/test-message-size.c
    - fields:
      - name: '*input'
        type: char
      - name: virtual_skip
        type: uoff_t
      - name: '*output'
        type: char
      - name: last_virtual_cr
        type: bool
      item_type: struct
      name: "tests[] = {\n\t\t{ \"\\r\\nfoo\", 1, \"\\nfoo\", FALSE },\n\t\t{ \"\\r\\nfoo\",
        2, \"foo\", FALSE },\n\t\t{ \"foo\\r\\nbar\", 3, \"\\r\\nbar\", FALSE },\n\t\t{
        \"foo\\r\\nbar\", 4, \"\\nbar\", FALSE },\n\t\t{ \"foo\\r\\nbar\", 5, \"bar\",
        FALSE },\n\t\t{ \"foo\\r\\n\", 5, \"\", FALSE },\n\t\t{ \"foo\\r\\nbar\\r\\nbaz\",
        8, \"\\r\\nbaz\", FALSE },\n\t\t{ \"foo\\r\\nbar\\r\\nbaz\", 9, \"\\nbaz\",
        FALSE },\n\t\t{ \"foo\\r\\nbar\\r\\nbaz\", 10, \"baz\", FALSE },\n\n\t\t{
        \"\\nfoo\", 1, \"\\nfoo\", TRUE },\n\t\t{ \"\\nfoo\", 2, \"foo\", FALSE },\n\t\t{
        \"foo\\nbar\", 3, \"\\nbar\", FALSE },\n\t\t{ \"foo\\nbar\", 4, \"\\nbar\",
        TRUE },\n\t\t{ \"foo\\nbar\", 5, \"bar\", FALSE },\n\t\t{ \"foo\\n\", 5, \"\",
        FALSE },\n\t\t{ \"foo\\nbar\\nbaz\", 8, \"\\nbaz\", FALSE },\n\t\t{ \"foo\\nbar\\nbaz\",
        9, \"\\nbaz\", TRUE },\n\t\t{ \"foo\\nbar\\nbaz\", 10, \"baz\", FALSE },\n\t}"
      pos:
        line_end: 159
        line_start: 153
        source_file: /src/dovecot/src/lib-mail/test-message-size.c
    typedefs: []
    union: []
- function_names:
  - ssl_iostream_context_cache_hash
  - ssl_iostream_context_cache_cmp
  - ssl_iostream_context_cache_get
  - ssl_iostream_client_context_cache_get
  - ssl_iostream_server_context_cache_get
  - ssl_iostream_context_cache_free
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: server
        type: bool
      - name: '*set'
        type: struct ssl_iostream_settings
      item_type: struct
      name: ssl_iostream_context_cache
      pos:
        line_end: 10
        line_start: 7
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-context-cache.c
    typedefs: []
    union: []
- function_names:
  - i_stream_ssl_close
  - i_stream_ssl_destroy
  - i_stream_ssl_read
  - openssl_i_stream_create_ssl
  source_file: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*ssl_io'
        type: struct ssl_iostream
      - name: seen_eof
        type: bool
      item_type: struct
      name: ssl_istream
      pos:
        line_end: 10
        line_start: 6
        source_file: /src/dovecot/src/lib-ssl-iostream/istream-openssl.c
    typedefs: []
    union: []
- function_names:
  - ssl_tmp_dh_callback
  - pem_password_callback
  - openssl_iostream_load_key
  - openssl_iostream_load_dh
  - ssl_iostream_ctx_use_key
  - ssl_iostream_ctx_use_dh
  - ssl_ctx_use_certificate_chain
  - load_ca
  - load_ca_locations
  - ssl_iostream_ctx_verify_remote_cert
  - ssl_servername_process
  - ssl_servername_callback
  - ssl_ja3_is_ext_greased
  - ssl_ja3_nid_to_cid
  - extract_server_name
  - ssl_clienthello_callback
  - ssl_iostream_context_load_ca
  - ssl_iostream_context_set
  - ssl_proxy_ctx_set_crypto_params
  - openssl_iostream_context_set_application_protocols
  - ssl_iostream_context_init_common
  - openssl_iostream_context_init_client
  - openssl_iostream_context_init_server
  - openssl_iostream_context_ref
  - openssl_iostream_context_unref
  - openssl_iostream_global_deinit
  - openssl_iostream_global_init
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ALPN_MAX_PROTOCOLS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
      type_or_value: '10'
    structs:
    - fields:
      - name: '*password'
        type: char
      - name: '*error'
        type: char
      item_type: struct
      name: ssl_iostream_password_context
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-context.c
    typedefs: []
    union: []
- function_names:
  - send_output
  - flush_output
  - handshake_input_callback
  - bufsize_flush_callback
  - bufsize_finish_callback
  - bufsize_input_callback
  - bufsize_discard_callback
  - small_packets_flush_callback
  - small_packets_input_callback
  - create_test_endpoint
  - destroy_test_endpoint
  - test_iostream_ssl_handshake_real
  - test_iostream_ssl_handshake
  - test_iostream_ssl_get_buffer_avail_size
  - test_iostream_ssl_small_packets
  - main
  source_file: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_SENT_BYTES
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
      type_or_value: '10000'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: fd
        type: int
      - name: '*hostname'
        type: char
      - name: '*set'
        type: struct ssl_iostream_settings
      - name: '*ctx'
        type: struct ssl_iostream_context
      - name: '*iostream'
        type: struct ssl_iostream
      - name: '*input'
        type: struct istream
      - name: '*output'
        type: struct ostream
      - name: '*io'
        type: struct io
      - name: '*last_write'
        type: buffer_t
      - name: sent
        type: ssize_t
      - name: client
        type: bool
      - name: failed
        type: bool
      - name: '*other'
        type: struct test_endpoint
      - name: finished
        type: bool
      item_type: struct
      name: test_endpoint
      pos:
        line_end: 33
        line_start: 15
        source_file: /src/dovecot/src/lib-ssl-iostream/test-iostream-ssl.c
    typedefs: []
    union: []
- function_names:
  - ssl_iostream_test_settings_server
  - ssl_iostream_test_settings_client
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-test.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - openssl_get_error_data
  - openssl_get_error_data
  - openssl_min_protocol_to_options
  - openssl_cert_match_name
  - ssl_err2str
  - openssl_iostream_error
  - openssl_iostream_key_load_error
  - is_pem_key
  - openssl_iostream_use_certificate_error
  - openssl_iostream_clear_errors
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SSL_TXT_ANY
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
      type_or_value: '"ANY"'
    - item_type: preproc_def
      name: TLS_ANY_VERSION
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
      type_or_value: TLS1_VERSION
    - item_type: preproc_def
      name: TLS_MAX_VERSION
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
      type_or_value: '0'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: version
        type: int
      - name: opt
        type: long
      item_type: struct
      name: "protocol_versions[] = {\n\t{ SSL_TXT_ANY,\t   TLS_ANY_VERSION, SSL_OP_NO_SSLv3
        },\n\t{ SSL_TXT_TLSV1,   TLS1_VERSION,    SSL_OP_NO_SSLv3 },\n\t{ SSL_TXT_TLSV1_1,
        TLS1_1_VERSION,  SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 },\n\t{ SSL_TXT_TLSV1_2,
        TLS1_2_VERSION,  SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 |\n\t\t\t\t\t    SSL_OP_NO_TLSv1_1
        },\n#if defined(TLS1_3_VERSION)\n\t{ \"TLSv1.3\",\t   TLS1_3_VERSION,  SSL_OP_NO_SSLv3
        \  | SSL_OP_NO_TLSv1 |\n\t\t\t\t\t    SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2
        },\n#endif\n\t/* Use latest protocol version. If this is used on some\n\t
        \  ancient system which does not support ssl_min_protocol,\n\t   ensure only
        TLSv1.2 is supported. */\n\t{ \"LATEST\",\t   TLS_MAX_VERSION, SSL_OP_NO_SSLv3
        | SSL_OP_NO_TLSv1 |\n\t\t\t\t\t    SSL_OP_NO_TLSv1_1 },\n}"
      pos:
        line_end: 37
        line_start: 33
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl-common.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - ssl_settings_check
  - ssl_server_settings_check
  - ssl_client_settings_get
  - ssl_server_settings_get
  - ssl_common_settings_to_iostream_set
  - ssl_client_settings_to_iostream_set
  - ssl_server_settings_to_iostream_set
  source_file: /src/dovecot/src/lib-ssl-iostream/ssl-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-ssl-iostream/ssl-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*ssl_client_ca_file'
        type: char
      - name: '*ssl_client_ca_dir'
        type: char
      - name: '*ssl_client_cert_file'
        type: char
      - name: '*ssl_client_key_file'
        type: char
      - name: '*ssl_client_key_password'
        type: char
      - name: '*ssl_cipher_list'
        type: char
      - name: '*ssl_cipher_suites'
        type: char
      - name: '*ssl_curve_list'
        type: char
      - name: '*ssl_min_protocol'
        type: char
      - name: '*ssl_crypto_device'
        type: char
      - name: '*ssl_options'
        type: char
      - name: '*ssl_peer_certificate_fingerprint_hash'
        type: char
      - name: ssl_client_require_valid_cert
        type: bool
      - name: parsed_opts
        type: "struct {\n\t\tbool compression;\n\t\tbool tickets;\n\t}"
      item_type: struct
      name: ssl_settings
      pos:
        line_end: 29
        line_start: 5
        source_file: /src/dovecot/src/lib-ssl-iostream/ssl-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*ssl'
        type: char
      - name: '*ssl_server_ca_file'
        type: char
      - name: '*ssl_server_cert_file'
        type: char
      - name: '*ssl_server_alt_cert_file'
        type: char
      - name: '*ssl_server_key_file'
        type: char
      - name: '*ssl_server_alt_key_file'
        type: char
      - name: '*ssl_server_key_password'
        type: char
      - name: '*ssl_server_dh_file'
        type: char
      - name: '*ssl_server_cert_username_field'
        type: char
      - name: '*ssl_server_prefer_ciphers'
        type: char
      - name: '*ssl_server_request_client_cert'
        type: char
      - name: ssl_server_require_crl
        type: bool
      - name: parsed_opts
        type: "struct {\n\t\tbool request_client_cert;\n\t\tbool verify_client_cert;\n\t}"
      item_type: struct
      name: ssl_server_settings
      pos:
        line_end: 53
        line_start: 31
        source_file: /src/dovecot/src/lib-ssl-iostream/ssl-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-test.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dovecot_openssl_malloc
  - dovecot_openssl_realloc
  - dovecot_openssl_free
  - dovecot_openssl_common_global_ref
  - dovecot_openssl_common_global_unref
  - dovecot_openssl_common_global_set_engine
  source_file: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ASN1_STRING_get0_data
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.h
  types:
    enum:
    - enumerators:
      - name: OPENSSL_IOSTREAM_SYNC_TYPE_NONE
      - name: OPENSSL_IOSTREAM_SYNC_TYPE_HANDSHAKE
      - name: OPENSSL_IOSTREAM_SYNC_TYPE_WRITE
      - name: OPENSSL_IOSTREAM_SYNC_TYPE_CONTINUE_READ
      item_type: enum
      name: openssl_iostream_sync_type
      pos:
        line_end: 15
        line_start: 10
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.h
    preproc_defs:
    - item_type: preproc_def
      name: OPENSSL_ALL_PROTOCOL_OPTIONS
      pos:
        line_end: 110
        line_start: 108
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.h
      type_or_value: (SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1)
    structs:
    - fields:
      - name: refcount
        type: int
      - name: '*ssl_ctx'
        type: SSL_CTX
      - name: pool
        type: pool_t
      - name: '*protos'
        type: "struct ssl_alpn_protocol {\n\t\tconst unsigned char *proto;\n\t\tsize_t
          proto_len;\n\t}"
      - name: '*pcert_fp_algo'
        type: EVP_MD
      - name: username_nid
        type: int
      - name: client_ctx
        type: bool
      - name: verify_remote_cert
        type: bool
      - name: allow_invalid_cert
        type: bool
      item_type: struct
      name: ssl_iostream_context
      pos:
        line_end: 36
        line_start: 17
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.h
    - fields:
      - name: '*proto'
        type: unsigned char
      - name: proto_len
        type: size_t
      item_type: struct
      name: ssl_alpn_protocol
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.h
    - fields:
      - name: refcount
        type: int
      - name: '*ctx'
        type: struct ssl_iostream_context
      - name: '*ssl'
        type: SSL
      - name: '*bio_ext'
        type: BIO
      - name: state
        type: enum ssl_iostream_state
      - name: '*plain_input'
        type: struct istream
      - name: '*plain_output'
        type: struct ostream
      - name: '*ssl_input'
        type: struct istream
      - name: '*ssl_output'
        type: struct ostream
      - name: '*event'
        type: struct event
      - name: '*connected_host'
        type: char
      - name: '*sni_host'
        type: char
      - name: '*last_error'
        type: char
      - name: '*plain_stream_errstr'
        type: char
      - name: '*ja3_str'
        type: char
      - name: '*cert_fp'
        type: char
      - name: '*pubkey_fp'
        type: char
      - name: plain_stream_errno
        type: int
      - name: '*handshake_callback'
        type: ssl_iostream_handshake_callback_t
      - name: '*handshake_context'
        type: void
      - name: '*sni_callback'
        type: ssl_iostream_sni_callback_t
      - name: '*sni_context'
        type: void
      - name: do_shutdown
        type: bool
      - name: allow_invalid_cert
        type: bool
      - name: handshaked
        type: bool
      - name: handshake_failed
        type: bool
      - name: cert_received
        type: bool
      - name: cert_broken
        type: bool
      - name: want_read
        type: bool
      - name: last_error_is_fallback
        type: bool
      - name: ostream_flush_waiting_input
        type: bool
      - name: closed
        type: bool
      - name: destroyed
        type: bool
      item_type: struct
      name: ssl_iostream
      pos:
        line_end: 82
        line_start: 38
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: "(*global_init)(const struct ssl_iostream_settings *set,\n\t\t\t   const
          char **error_r)"
        type: int
      - name: "(*context_init_client)(const struct ssl_iostream_settings *set,\n\t\t\t\t
          \  struct ssl_iostream_context **ctx_r,\n\t\t\t\t   const char **error_r)"
        type: int
      - name: "(*context_init_server)(const struct ssl_iostream_settings *set,\n\t\t\t\t
          \  struct ssl_iostream_context **ctx_r,\n\t\t\t\t   const char **error_r)"
        type: int
      - name: (*context_ref)(struct ssl_iostream_context *ctx)
        type: void
      - name: (*context_unref)(struct ssl_iostream_context *ctx)
        type: void
      - name: "(*create)(struct ssl_iostream_context *ctx,\n\t\t      struct event
          *event_parent,\n\t\t      const char *host,\n\t\t      bool client,\n\t\t
          \     enum ssl_iostream_flags flags,\n\t\t      struct istream **input,
          struct ostream **output,\n\t\t      struct ssl_iostream **iostream_r, const
          char **error_r)"
        type: int
      - name: (*unref)(struct ssl_iostream *ssl_io)
        type: void
      - name: (*destroy)(struct ssl_iostream *ssl_io)
        type: void
      - name: (*handshake)(struct ssl_iostream *ssl_io)
        type: int
      - name: "(*set_handshake_callback)(struct ssl_iostream *ssl_io,\n\t\t\t\t       ssl_iostream_handshake_callback_t
          *callback,\n\t\t\t\t       void *context)"
        type: void
      - name: "(*set_sni_callback)(struct ssl_iostream *ssl_io,\n\t\t\t\t ssl_iostream_sni_callback_t
          *callback,\n\t\t\t\t void *context)"
        type: void
      - name: "(*change_context)(struct ssl_iostream *ssl_io,\n\t\t\t       struct
          ssl_iostream_context *ctx)"
        type: void
      - name: (*set_log_prefix)(struct ssl_iostream *ssl_io, const char *prefix)
        type: void
      - name: (*get_state)(const struct ssl_iostream *ssl_io)
        type: enum ssl_iostream_state
      - name: (*has_handshake_failed)(const struct ssl_iostream *ssl_io)
        type: bool
      - name: (*get_cert_validity)(const struct ssl_iostream *ssl_io)
        type: enum ssl_iostream_cert_validity
      - name: "(*cert_match_name)(struct ssl_iostream *ssl_io, const char *name,\n\t\t\t\tconst
          char **reason_r)"
        type: bool
      - name: (*get_allow_invalid_cert)(struct ssl_iostream *ssl_io)
        type: bool
      - name: '*(*get_peer_username)(struct ssl_iostream *ssl_io)'
        type: char
      - name: '*(*get_server_name)(struct ssl_iostream *ssl_io)'
        type: char
      - name: '*(*get_compression)(struct ssl_iostream *ssl_io)'
        type: char
      - name: '*(*get_security_string)(struct ssl_iostream *ssl_io)'
        type: char
      - name: '*(*get_last_error)(struct ssl_iostream *ssl_io)'
        type: char
      - name: '*(*get_cipher)(struct ssl_iostream *ssl_io, unsigned int *bits_r)'
        type: char
      - name: '*(*get_pfs)(struct ssl_iostream *ssl_io)'
        type: char
      - name: '*(*get_protocol_name)(struct ssl_iostream *ssl_io)'
        type: char
      - name: (*get_protocol_version)(struct ssl_iostream *ssl_io)
        type: enum ssl_iostream_protocol_version
      - name: '*(*get_ja3)(struct ssl_iostream *ssl_io)'
        type: char
      - name: '*(*get_application_protocol)(struct ssl_iostream *ssl_io)'
        type: char
      - name: "(*set_application_protocols)(struct ssl_iostream_context *ctx,\n\t\t\t\t\t
          \ const char *const *names)"
        type: void
      - name: "(*get_channel_binding)(struct ssl_iostream *ssl_io,\n\t\t\t\t   const
          char *type, const buffer_t **data_r,\n\t\t\t\t   const char **error_r)"
        type: int
      - name: "(*get_peer_cert_fingerprint)(struct ssl_iostream *ssl_io,\n\t\t\t\t\t
          const char **cert_fp_r,\n\t\t\t\t\t const char **pubkey_fp_r,\n\t\t\t\t\t
          const char **error_r)"
        type: int
      item_type: struct
      name: iostream_ssl_vfuncs
      pos:
        line_end: 69
        line_start: 5
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl-private.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-ssl-iostream/dovecot-openssl-common.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - openssl_iostream_set_error_full
  - openssl_iostream_set_error
  - openssl_info_callback
  - openssl_iostream_verify_client_cert
  - openssl_iostream_set
  - openssl_iostream_create
  - openssl_iostream_free
  - openssl_iostream_unref
  - openssl_iostream_shutdown
  - openssl_iostream_destroy
  - openssl_iostream_bio_output_real
  - openssl_iostream_bio_output
  - openssl_iostream_read_more
  - openssl_iostream_bio_input
  - openssl_iostream_bio_sync
  - openssl_iostream_closed
  - openssl_iostream_handle_error
  - openssl_iostream_cert_match_name
  - openssl_iostream_handshake
  - openssl_iostream_set_handshake_callback
  - openssl_iostream_set_sni_callback
  - openssl_iostream_change_context
  - openssl_iostream_set_log_prefix
  - openssl_iostream_get_state
  - openssl_iostream_get_cert_validity
  - openssl_iostream_get_allow_invalid_cert
  - openssl_iostream_get_peer_username
  - openssl_iostream_get_server_name
  - openssl_iostream_get_compression
  - openssl_iostream_get_security_string
  - openssl_iostream_get_last_error
  - openssl_iostream_get_cipher
  - openssl_iostream_get_pfs
  - openssl_iostream_get_protocol_name
  - openssl_iostream_get_protocol_version
  - openssl_iostream_get_ja3
  - openssl_iostream_get_application_protocol
  - openssl_iostream_get_cb_tls_exporter
  - openssl_iostream_get_cb_tls_unique
  - openssl_iostream_get_channel_binding
  - openssl_iostream_get_peer_cert_fingerprint
  - ssl_iostream_openssl_init
  - ssl_iostream_openssl_deinit
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-openssl.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - o_stream_ssl_close
  - o_stream_ssl_destroy
  - get_buffer_avail_size
  - o_stream_ssl_buffer
  - o_stream_ssl_flush_buffer
  - o_stream_ssl_flush
  - o_stream_ssl_sendv
  - o_stream_ssl_switch_ioloop_to
  - o_stream_ssl_get_buffer_used_size
  - o_stream_ssl_get_buffer_avail_size
  - o_stream_ssl_flush_pending
  - o_stream_ssl_set_max_buffer_size
  - openssl_o_stream_create_ssl
  source_file: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ostream
        type: struct ostream_private
      - name: '*ssl_io'
        type: struct ssl_iostream
      - name: '*buffer'
        type: buffer_t
      - name: shutdown
        type: bool
      item_type: struct
      name: ssl_ostream
      pos:
        line_end: 14
        line_start: 8
        source_file: /src/dovecot/src/lib-ssl-iostream/ostream-openssl.c
    typedefs: []
    union: []
- function_names:
  - ssl_module_unload
  - iostream_ssl_module_init
  - ssl_module_load
  - io_stream_ssl_global_init
  - ssl_iostream_context_init_client
  - ssl_iostream_context_init_server
  - ssl_iostream_context_ref
  - ssl_iostream_context_unref
  - io_stream_create_ssl_client
  - io_stream_create_ssl_server
  - io_stream_autocreate_ssl_client
  - io_stream_autocreate_ssl_server
  - ssl_iostream_unref
  - ssl_iostream_destroy
  - ssl_iostream_set_log_prefix
  - ssl_iostream_handshake
  - ssl_iostream_set_handshake_callback
  - ssl_iostream_set_sni_callback
  - ssl_iostream_change_context
  - ssl_iostream_get_state
  - ssl_iostream_is_handshaked
  - ssl_iostream_has_valid_cert
  - ssl_iostream_has_cert
  - ssl_iostream_cert_match_name
  - ssl_iostream_check_cert_validity
  - ssl_iostream_get_allow_invalid_cert
  - ssl_iostream_get_peer_username
  - ssl_iostream_get_server_name
  - ssl_iostream_get_compression
  - ssl_iostream_get_security_string
  - ssl_iostream_get_last_error
  - quick_strcmp
  - ssl_iostream_settings_equals
  - ssl_iostream_get_cipher
  - ssl_iostream_get_pfs
  - ssl_iostream_get_protocol_name
  - ssl_iostream_get_protocol_version
  - ssl_iostream_get_ja3
  - ssl_iostream_get_application_protocol
  - ssl_iostream_context_set_application_protocols
  - ssl_iostream_get_channel_binding
  - ssl_iostream_get_peer_cert_fingerprint
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
  types:
    enum:
    - enumerators:
      - name: SSL_IOSTREAM_PROTOCOL_VERSION_UNKNOWN
        value: '0'
      - name: SSL_IOSTREAM_PROTOCOL_VERSION_TLS1_1
      - name: SSL_IOSTREAM_PROTOCOL_VERSION_TLS1_2
      - name: SSL_IOSTREAM_PROTOCOL_VERSION_SSL3
      - name: SSL_IOSTREAM_PROTOCOL_VERSION_TLS1
      - name: SSL_IOSTREAM_PROTOCOL_VERSION_TLS1_3
      - name: SSL_IOSTREAM_PROTOCOL_VERSION_NEW
      item_type: enum
      name: ssl_iostream_protocol_version
      pos:
        line_end: 27
        line_start: 12
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
    - enumerators:
      - name: SSL_IOSTREAM_FLAG_ALLOW_INVALID_CERT
        value: BIT(0)
      - name: SSL_IOSTREAM_FLAG_DISABLE_CA_FILES
        value: BIT(1)
      item_type: enum
      name: ssl_iostream_flags
      pos:
        line_end: 38
        line_start: 29
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
    - enumerators:
      - name: SSL_IOSTREAM_CERT_VALIDITY_OK
      - name: SSL_IOSTREAM_CERT_VALIDITY_NO_CERT
      - name: SSL_IOSTREAM_CERT_VALIDITY_INVALID
      - name: SSL_IOSTREAM_CERT_VALIDITY_NAME_MISMATCH
      item_type: enum
      name: ssl_iostream_cert_validity
      pos:
        line_end: 49
        line_start: 40
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
    - enumerators:
      - name: SSL_IOSTREAM_STATE_OK
      - name: SSL_IOSTREAM_STATE_HANDSHAKE_FAILURE
      - name: SSL_IOSTREAM_STATE_INVALID_CERT
      - name: SSL_IOSTREAM_STATE_NAME_MISMATCH
      - name: SSL_IOSTREAM_STATE_HANDSHAKING
      item_type: enum
      name: ssl_iostream_state
      pos:
        line_end: 62
        line_start: 51
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
    preproc_defs:
    - item_type: preproc_def
      name: SSL_CHANNEL_BIND_TYPE_TLS_UNIQUE
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
      type_or_value: '"tls-unique"'
    - item_type: preproc_def
      name: SSL_CHANNEL_BIND_TYPE_TLS_EXPORTER
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
      type_or_value: '"tls-exporter"'
    structs:
    - fields:
      - name: cert
        type: struct settings_file
      - name: key
        type: struct settings_file
      - name: '*key_password'
        type: char
      item_type: struct
      name: ssl_iostream_cert
      pos:
        line_end: 68
        line_start: 64
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*min_protocol'
        type: char
      - name: '*cipher_list'
        type: char
      - name: '*ciphersuites'
        type: char
      - name: '*curve_list'
        type: char
      - name: ca
        type: struct settings_file
      - name: '*ca_dir'
        type: char
      - name: cert
        type: struct ssl_iostream_cert
      - name: alt_cert
        type: struct ssl_iostream_cert
      - name: dh
        type: struct settings_file
      - name: '*cert_username_field'
        type: char
      - name: '*cert_hash_algo'
        type: char
      - name: '*crypto_device'
        type: char
      - name: '*const *application_protocols'
        type: char
      - name: skip_crl_check
        type: bool
      - name: verify_remote_cert
        type: bool
      - name: allow_invalid_cert
        type: bool
      - name: prefer_server_ciphers
        type: bool
      - name: compression
        type: bool
      - name: tickets
        type: bool
      item_type: struct
      name: ssl_iostream_settings
      pos:
        line_end: 110
        line_start: 70
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
    - fields:
      - name: '*event_parent'
        type: struct event
      - name: '*host'
        type: char
      - name: flags
        type: enum ssl_iostream_flags
      - name: '*const *application_protocols'
        type: char
      item_type: struct
      name: ssl_iostream_client_autocreate_parameters
      pos:
        line_end: 149
        line_start: 144
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
    - fields:
      - name: '*event_parent'
        type: struct event
      - name: '*const *application_protocols'
        type: char
      item_type: struct
      name: ssl_iostream_server_autocreate_parameters
      pos:
        line_end: 154
        line_start: 151
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
    typedefs:
    - item_type: typedef
      name: ssl_iostream_handshake_callback_t(const char **error_r, void *context)
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
      type: ssl_iostream_state
    - item_type: typedef
      name: "ssl_iostream_sni_callback_t(const char *name, const char **error_r,\n\t\t\t\t\tvoid
        *context)"
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/dovecot/src/lib-ssl-iostream/iostream-ssl.h
      type: int
    union: []
- function_names: []
  source_file: /src/dovecot/src/dict/main.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/dict/dict-connection.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: id
        type: unsigned int
      - name: '*conn'
        type: struct dict_connection
      - name: '*ctx'
        type: struct dict_transaction_context
      item_type: struct
      name: dict_connection_transaction
      pos:
        line_end: 10
        line_start: 6
        source_file: /src/dovecot/src/dict/dict-connection.h
    - fields:
      - name: conn
        type: struct connection
      - name: '*prev'
        type: struct dict_connection
      - name: '*server'
        type: struct dict_server
      - name: refcount
        type: int
      - name: '*name'
        type: char
      - name: '*dict'
        type: struct dict
      - name: '*to_unref'
        type: struct timeout
      - name: async_id_counter
        type: unsigned int
      - name: iter_flush_pending
        type: bool
      - name: destroyed
        type: bool
      item_type: struct
      name: dict_connection
      pos:
        line_end: 31
        line_start: 12
        source_file: /src/dovecot/src/dict/dict-connection.h
    typedefs: []
    union: []
- function_names:
  - add_stats_string
  - dict_proctitle_update
  - dict_proctitle_update_later
  - dict_die
  - client_connected
  - main_preinit
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/dict/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/dict/dict-commands.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*lookups'
        type: struct stats_dist
      - name: '*iterations'
        type: struct stats_dist
      - name: '*commits'
        type: struct stats_dist
      item_type: struct
      name: dict_command_stats
      pos:
        line_end: 9
        line_start: 5
        source_file: /src/dovecot/src/dict/dict-commands.h
    typedefs: []
    union: []
- function_names:
  - dict_expire_run
  - dict_expire_timeout
  - client_connected
  - dict_expire_init
  - main_preinit
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/dict/dict-expire.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DICT_EXPIRE_RUN_INTERVAL_MSECS
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/dict/dict-expire.c
      type_or_value: (30*1000)
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*dict'
        type: struct dict
      item_type: struct
      name: expire_dict
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/dovecot/src/dict/dict-expire.c
    typedefs: []
    union: []
- function_names:
  - dict_init_cache_add
  - dict_init_cache_list_free
  - dict_init_cache_find
  - dict_init_cache_get
  - destroy_unrefed
  - dict_removal_timeout
  - dict_init_cache_unref
  - dict_init_cache_wait_all
  - dict_init_cache_destroy_all
  source_file: /src/dovecot/src/dict/dict-init-cache.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DICT_CACHE_TIMEOUT_SECS
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/dict/dict-init-cache.c
      type_or_value: '30'
    - item_type: preproc_def
      name: DICT_CACHE_MAX_COUNT
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/dict/dict-init-cache.c
      type_or_value: '10'
    structs:
    - fields:
      - name: '*prev'
        type: struct dict_init_cache_list
      - name: '*dict'
        type: struct dict
      - name: '*dict_name'
        type: char
      - name: refcount
        type: int
      - name: destroy_time
        type: time_t
      item_type: struct
      name: dict_init_cache_list
      pos:
        line_end: 22
        line_start: 14
        source_file: /src/dovecot/src/dict/dict-init-cache.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/dict/dict-init-cache.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dict_connection_cmd_free
  - dict_connection_cmd_remove
  - dict_connection_cmd_try_flush
  - dict_connection_cmd_async
  - cmd_stats_update
  - dict_cmd_reply_handle_stats
  - cmd_lookup_write_reply
  - cmd_lookup_callback
  - cmd_lookup
  - dict_connection_flush_if_full
  - cmd_iterate_flush_finish
  - cmd_iterate_flush
  - cmd_iterate_callback
  - cmd_iterate
  - dict_connection_transaction_lookup
  - dict_connection_transaction_array_remove
  - cmd_begin
  - dict_connection_transaction_lookup_parse
  - cmd_commit_finish
  - cmd_commit_callback
  - cmd_commit
  - cmd_rollback
  - cmd_set
  - cmd_unset
  - cmd_atomic_inc
  - cmd_timestamp
  - cmd_hide_log_values
  - dict_command_find
  - dict_command_input
  - dict_connection_cmds_try_output_more
  - dict_connection_cmds_output_more
  - dict_commands_init
  - dict_commands_deinit
  source_file: /src/dovecot/src/dict/dict-commands.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DICT_OUTPUT_OPTIMAL_SIZE
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/dict/dict-commands.c
      type_or_value: '1024'
    structs:
    - fields:
      - name: cmd
        type: enum dict_protocol_cmd
      - name: (*func)(struct dict_connection_cmd *cmd, const char *const *args)
        type: int
      item_type: struct
      name: dict_cmd_func
      pos:
        line_end: 22
        line_start: 19
        source_file: /src/dovecot/src/dict/dict-commands.c
    - fields:
      - name: '*cmd'
        type: struct dict_cmd_func
      - name: '*conn'
        type: struct dict_connection
      - name: start_timeval
        type: struct timeval
      - name: '*event'
        type: struct event
      - name: '*reply'
        type: char
      - name: '*iter'
        type: struct dict_iterate_context
      - name: iter_flags
        type: enum dict_iterate_flags
      - name: async_reply_id
        type: unsigned int
      - name: trans_id
        type: unsigned int
      - name: rows
        type: unsigned int
      - name: uncork_pending
        type: bool
      item_type: struct
      name: dict_connection_cmd
      pos:
        line_end: 39
        line_start: 24
        source_file: /src/dovecot/src/dict/dict-commands.c
    typedefs: []
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/dict/dict-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dict_connection_handshake_args
  - dict_connection_handshake_line
  - dict_connection_dict_init_name
  - dict_connection_dict_init
  - dict_connection_output
  - dict_connection_create
  - dict_connection_ref
  - dict_connection_unref
  - dict_connection_input_line
  - dict_connection_unref_safe_callback
  - dict_connection_unref_safe
  - dict_connection_destroy
  - dict_connections_current_count
  - dict_connections_destroy_all
  - dict_connections_init
  source_file: /src/dovecot/src/dict/dict-connection.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DICT_CONN_MAX_PENDING_COMMANDS
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/dict/dict-connection.c
      type_or_value: '1000'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/dict/dict-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*base_dir'
        type: char
      - name: verbose_proctitle
        type: bool
      item_type: struct
      name: dict_server_settings
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/dict/dict-settings.h
    typedefs: []
    union: []
- function_names:
  - NOTIFY_STATUS_USER_CONTEXT
  - DEF
  - notify_status_mailbox_enabled
  - notify_update_callback
  - notify_update_mailbox_status
  - notify_remove_mailbox_status
  - notify_status_mail_transaction_begin
  - notify_status_mail_transaction_commit
  - notify_status_mail_transaction_rollback
  - notify_status_mailbox_create
  - notify_status_mailbox_delete_commit
  - notify_status_mailbox_rename
  - notify_status_mail_save
  - notify_status_mail_copy
  - notify_status_mail_expunge
  - notify_status_mail_update_flags
  - notify_status_mail_user_deinit
  - notify_status_mail_user_created
  - notify_status_mail_namespaces_created
  - notify_status_plugin_init
  - notify_status_plugin_deinit
  source_file: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NOTIFY_STATUS_SETTING_VALUE_TEMPLATE_DEFAULT
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
      type_or_value: '"{\"messages\":%{messages},\"unseen\":%{unseen}}"'
    - item_type: preproc_def
      name: NOTIFY_STATUS_KEY
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
      type_or_value: '"priv/status/%s"'
    - item_type: preproc_def
      name: MAILBOX_STATUS_NOTIFY
      pos:
        line_end: 124
        line_start: 119
        source_file: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
      type_or_value: "(STATUS_MESSAGES|STATUS_UNSEEN|\\\n\t\t\t       STATUS_RECENT|STATUS_UIDNEXT|\\\n\t\t\t
        \      STATUS_UIDVALIDITY|\\\n\t\t\t       STATUS_HIGHESTMODSEQ|STATUS_FIRST_RECENT_UID|\\\n\t\t\t
        \      STATUS_HIGHESTPVTMODSEQ)"
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: mailbox_notify_status
        type: bool
      - name: '*notify_status_value'
        type: char
      item_type: struct
      name: notify_status_plugin_settings
      pos:
        line_end: 37
        line_start: 32
        source_file: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: changed
        type: bool
      item_type: struct
      name: notify_status_mail_txn
      pos:
        line_end: 70
        line_start: 67
        source_file: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*dict'
        type: struct dict
      - name: '*set'
        type: struct notify_status_plugin_settings
      - name: '*context'
        type: struct notify_context
      item_type: struct
      name: notify_status_user
      pos:
        line_end: 78
        line_start: 72
        source_file: /src/dovecot/src/plugins/notify-status/notify-status-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/quota/quota.h
  types:
    enum:
    - enumerators:
      - name: QUOTA_RECALCULATE_DONT
        value: '0'
      - name: QUOTA_RECALCULATE_FORCED
      - name: QUOTA_RECALCULATE_MISSING_FREES
      item_type: enum
      name: quota_recalculate
      pos:
        line_end: 37
        line_start: 28
        source_file: /src/dovecot/src/plugins/quota/quota.h
    - enumerators:
      - name: QUOTA_ALLOC_RESULT_OK
      - name: QUOTA_ALLOC_RESULT_OVER_QUOTA_LIMIT
      - name: QUOTA_ALLOC_RESULT_TEMPFAIL
      - name: QUOTA_ALLOC_RESULT_OVER_MAXSIZE
      - name: QUOTA_ALLOC_RESULT_OVER_QUOTA
      - name: QUOTA_ALLOC_RESULT_OVER_QUOTA_MAILBOX_LIMIT
      - name: QUOTA_ALLOC_RESULT_BACKGROUND_CALC
      item_type: enum
      name: quota_alloc_result
      pos:
        line_end: 50
        line_start: 39
        source_file: /src/dovecot/src/plugins/quota/quota.h
    - enumerators:
      - name: QUOTA_GET_RESULT_BACKGROUND_CALC
      - name: QUOTA_GET_RESULT_LIMITED
      - name: QUOTA_GET_RESULT_UNKNOWN_RESOURCE
      - name: QUOTA_GET_RESULT_UNLIMITED
      - name: QUOTA_GET_RESULT_INTERNAL_ERROR
      item_type: enum
      name: quota_get_result
      pos:
        line_end: 65
        line_start: 53
        source_file: /src/dovecot/src/plugins/quota/quota.h
    preproc_defs:
    - item_type: preproc_def
      name: QUOTA_NAME_STORAGE_KILOBYTES
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/plugins/quota/quota.h
      type_or_value: '"STORAGE"'
    - item_type: preproc_def
      name: QUOTA_NAME_STORAGE_BYTES
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/quota/quota.h
      type_or_value: '"STORAGE_BYTES"'
    - item_type: preproc_def
      name: QUOTA_NAME_MESSAGES
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/plugins/quota/quota.h
      type_or_value: '"MESSAGE"'
    structs:
    - fields:
      - name: '*param_name'
        type: char
      - name: (* param_handler)(struct quota_root *_root, const char *param_value)
        type: void
      item_type: struct
      name: quota_param_parser
      pos:
        line_end: 22
        line_start: 19
        source_file: /src/dovecot/src/plugins/quota/quota.h
    - fields:
      - name: '*root'
        type: struct quota_root
      - name: resource
        type: "struct {\n\t\tuoff_t count;\n\t\tuoff_t bytes;\n\t}"
      item_type: struct
      name: quota_overrun
      pos:
        line_end: 74
        line_start: 67
        source_file: /src/dovecot/src/plugins/quota/quota.h
    typedefs: []
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/plugins/quota/quota-status-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - quota_plugin_init
  - quota_plugin_deinit
  source_file: /src/dovecot/src/plugins/quota/quota-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/quota/quota-fs.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mount_type_is_nfs
  - DEF
  - fs_quota_alloc
  - fs_quota_init
  - fs_quota_mountpoint_free
  - fs_quota_deinit
  - fs_quota_mountpoint_get
  - fs_quota_mount_init
  - fs_quota_namespace_added
  - fs_quota_root_get_resources
  - fs_quota_root_disable
  - rquota_get_result
  - do_rquota_user
  - do_rquota_group
  - fs_quota_get_linux
  - fs_quota_get_bsdaix
  - fs_quota_get_netbsd
  - fs_quota_get_hpux
  - fs_quota_get_solaris
  - fs_quota_get_resources
  - fs_quota_match_box
  - fs_quota_get_resource
  - fs_quota_update
  source_file: /src/dovecot/src/plugins/quota/quota-fs.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RQUOTA_GETQUOTA_TIMEOUT_SECS
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dovecot/src/plugins/quota/quota-fs.c
      type_or_value: '10'
    - item_type: preproc_def
      name: DEV_BSIZE
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dovecot/src/plugins/quota/quota-fs.c
      type_or_value: 'DQBSIZE '
    - item_type: preproc_def
      name: DEV_BSIZE
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dovecot/src/plugins/quota/quota-fs.c
      type_or_value: '512'
    - item_type: preproc_def
      name: dqb_curblocks
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dovecot/src/plugins/quota/quota-fs.c
      type_or_value: dqb_curspace
    - item_type: preproc_def
      name: _LINUX_QUOTA_VERSION
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/dovecot/src/plugins/quota/quota-fs.c
      type_or_value: '2'
    structs:
    - fields:
      - name: refcount
        type: int
      - name: '*prev'
        type: struct fs_quota_mountpoint
      - name: '*mount_path'
        type: char
      - name: '*device_path'
        type: char
      - name: '*type'
        type: char
      - name: block_size
        type: unsigned int
      - name: initialized
        type: bool
      item_type: struct
      name: fs_quota_mountpoint
      pos:
        line_end: 81
        line_start: 66
        source_file: /src/dovecot/src/plugins/quota/quota-fs.c
    - fields:
      - name: root
        type: struct quota_root
      - name: '*set'
        type: struct quota_fs_settings
      - name: uid
        type: uid_t
      - name: gid
        type: gid_t
      - name: '*mount'
        type: struct fs_quota_mountpoint
      - name: user_disabled
        type: bool
      - name: group_disabled
        type: bool
      item_type: struct
      name: fs_quota_root
      pos:
        line_end: 96
        line_start: 83
        source_file: /src/dovecot/src/plugins/quota/quota-fs.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*quota_fs_mount_path'
        type: char
      - name: '*quota_fs_type'
        type: char
      - name: quota_fs_message_limit
        type: bool
      item_type: struct
      name: quota_fs_settings
      pos:
        line_end: 104
        line_start: 98
        source_file: /src/dovecot/src/plugins/quota/quota-fs.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - imapc_quota_alloc
  - imapc_quota_init
  - imapc_quota_deinit
  - imapc_quota_root_refresh_find
  - imapc_quota_refresh_root_get
  - imapc_untagged_quotaroot
  - imapc_untagged_quota
  - imapc_quota_client_init
  - imapc_quota_refresh_init
  - imapc_quota_refresh_update
  - imapc_quota_refresh_deinit
  - imapc_quota_refresh_root_order_cmp
  - imapc_quota_refresh_mailbox
  - imapc_quota_refresh_root
  - imapc_quota_refresh
  - imapc_quota_namespace_added
  - imapc_quota_root_get_resources
  - imapc_quota_get_resource
  - imapc_quota_update
  source_file: /src/dovecot/src/plugins/quota/quota-imapc.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: order
        type: unsigned int
      - name: bytes_cur
        type: uint64_t
      - name: bytes_limit
        type: uint64_t
      item_type: struct
      name: imapc_quota_refresh_root
      pos:
        line_end: 18
        line_start: 12
        source_file: /src/dovecot/src/plugins/quota/quota-imapc.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*box_name'
        type: char
      item_type: struct
      name: imapc_quota_refresh
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/dovecot/src/plugins/quota/quota-imapc.c
    - fields:
      - name: root
        type: struct quota_root
      - name: '*set'
        type: struct quota_imapc_settings
      - name: '*imapc_ns'
        type: struct mail_namespace
      - name: '*client'
        type: struct imapc_storage_client
      - name: initialized
        type: bool
      - name: bytes_last
        type: uint64_t
      - name: last_refresh
        type: struct timeval
      - name: refresh
        type: struct imapc_quota_refresh
      item_type: struct
      name: imapc_quota_root
      pos:
        line_end: 38
        line_start: 26
        source_file: /src/dovecot/src/plugins/quota/quota-imapc.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*quota_imapc_mailbox_name'
        type: char
      - name: '*quota_imapc_root_name'
        type: char
      item_type: struct
      name: quota_imapc_settings
      pos:
        line_end: 45
        line_start: 40
        source_file: /src/dovecot/src/plugins/quota/quota-imapc.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/quota/quota-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: QUOTA_WARNING_RESOURCE_STORAGE
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/plugins/quota/quota-settings.h
      type_or_value: '"storage"'
    - item_type: preproc_def
      name: QUOTA_WARNING_RESOURCE_MESSAGE
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/plugins/quota/quota-settings.h
      type_or_value: '"message"'
    - item_type: preproc_def
      name: QUOTA_WARNING_THRESHOLD_OVER
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/plugins/quota/quota-settings.h
      type_or_value: '"over"'
    - item_type: preproc_def
      name: QUOTA_WARNING_THRESHOLD_UNDER
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/plugins/quota/quota-settings.h
      type_or_value: '"under"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: quota_mailbox_count
        type: unsigned int
      - name: quota_mail_size
        type: uoff_t
      - name: quota_mailbox_message_count
        type: unsigned int
      - name: '*quota_exceeded_message'
        type: char
      item_type: struct
      name: quota_settings
      pos:
        line_end: 22
        line_start: 11
        source_file: /src/dovecot/src/plugins/quota/quota-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*quota_name'
        type: char
      - name: '*quota_driver'
        type: char
      - name: quota_ignore
        type: bool
      - name: quota_ignore_unlimited
        type: bool
      - name: quota_enforce
        type: bool
      - name: quota_hidden
        type: bool
      - name: quota_storage_size
        type: uoff_t
      - name: quota_storage_percentage
        type: unsigned int
      - name: quota_storage_extra
        type: uoff_t
      - name: quota_storage_grace
        type: uoff_t
      - name: quota_message_count
        type: unsigned int
      - name: quota_message_percentage
        type: unsigned int
      - name: '*quota_warning_name'
        type: char
      - name: '*quota_warning_resource'
        type: char
      - name: '*quota_warning_threshold'
        type: char
      - name: quota_over_status_lazy_check
        type: bool
      - name: '*quota_over_status_current'
        type: char
      - name: '*quota_over_status_mask'
        type: char
      - name: '*backend'
        type: struct quota_backend
      item_type: struct
      name: quota_root_settings
      pos:
        line_end: 79
        line_start: 24
        source_file: /src/dovecot/src/plugins/quota/quota-settings.h
    typedefs: []
    union: []
- function_names:
  - test_quota_transaction_is_over
  - main
  source_file: /src/dovecot/src/plugins/quota/test-quota-util.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAXU64
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/plugins/quota/test-quota-util.c
      type_or_value: (uint64_t)-1
    - item_type: preproc_def
      name: MAXS64
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/plugins/quota/test-quota-util.c
      type_or_value: 9223372036854775807LL
    structs:
    - fields:
      - name: limit
        type: uint64_t
      - name: transaction_diff
        type: int64_t
      - name: new_size
        type: uint64_t
      - name: is_over
        type: bool
      item_type: struct
      name: test
      pos:
        line_end: 11
        line_start: 6
        source_file: /src/dovecot/src/plugins/quota/test-quota-util.c
    typedefs: []
    union: []
- function_names:
  - QUOTA_CONTEXT
  - QUOTA_CONTEXT_REQUIRE
  - QUOTA_MAIL_CONTEXT
  - QUOTA_LIST_CONTEXT
  - quota_set_storage_error
  - quota_mail_expunge
  - quota_create_box
  - quota_get_status
  - quota_mailbox_transaction_begin
  - quota_mailbox_transaction_commit
  - quota_mailbox_transaction_rollback
  - quota_mail_allocated
  - quota_check
  - quota_copy
  - quota_save_begin
  - quota_save_finish
  - quota_mailbox_sync_cleanup
  - quota_mailbox_sync_commit
  - quota_mailbox_sync_notify
  - quota_mailbox_sync_deinit
  - quota_roots_flush
  - quota_mailbox_close
  - quota_mailbox_free
  - quota_mailbox_allocated
  - quota_mailbox_list_deinit
  - quota_get_mail_user_quota
  - quota_user_deinit
  - quota_user_mail_max_size
  - quota_mail_user_created
  - quota_has_global_private_root
  - quota_mailbox_list_created
  - quota_mail_namespaces_created
  source_file: /src/dovecot/src/plugins/quota/quota-storage.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_list_module_context
      item_type: struct
      name: quota_mailbox_list
      pos:
        line_end: 27
        line_start: 25
        source_file: /src/dovecot/src/plugins/quota/quota-storage.c
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: '*expunge_trans'
        type: struct mailbox_transaction_context
      - name: '*expunge_qt'
        type: struct quota_transaction_context
      - name: (uint32_t)
        type: ARRAY
      - name: expunge_sizes
        type: ARRAY
      - name: prev_idx
        type: unsigned int
      - name: recalculate
        type: bool
      - name: sync_transaction_expunge
        type: bool
      item_type: struct
      name: quota_mailbox
      pos:
        line_end: 40
        line_start: 29
        source_file: /src/dovecot/src/plugins/quota/quota-storage.c
    typedefs: []
    union: []
- function_names:
  - quota_backend_find
  - quota_backend_register
  - quota_backend_unregister
  - quota_backends_register
  - quota_backends_unregister
  - quota_alloc_result_errstr
  - quota_root_deinit
  - quota_root_settings_get
  - quota_root_has_under_warnings
  - quota_root_init
  - quota_init
  - quota_deinit
  - quota_root_get_rule_limits
  - quota_is_duplicate_namespace
  - quota_add_user_namespace
  - quota_remove_user_namespace
  - quota_root_iter_init_user
  - quota_root_iter_init
  - quota_root_is_visible
  - quota_root_iter_next
  - quota_root_iter_deinit
  - quota_root_find
  - quota_root_lookup
  - quota_root_get_name
  - quota_root_get_resources
  - quota_root_is_hidden
  - quota_get_resource
  - quota_transaction_begin
  - quota_transaction_set_limits
  - quota_warning_execute
  - quota_warnings_execute
  - quota_transaction_commit
  - quota_over_status_init_root
  - quota_over_status_check_root
  - quota_over_status_check_startup
  - quota_transaction_rollback
  - quota_alloc_with_size
  - quota_try_alloc
  - quota_test_alloc
  - quota_default_test_alloc
  - quota_alloc
  - quota_free_bytes
  - quota_recalculate
  source_file: /src/dovecot/src/plugins/quota/quota.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: QUOTA_OVER_STATUS_MAX_DELAY_SECS
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/plugins/quota/quota.c
      type_or_value: '10'
    structs:
    - fields:
      - name: '*quota'
        type: struct quota
      - name: '*box'
        type: struct mailbox
      - name: i
        type: unsigned int
      item_type: struct
      name: quota_root_iter
      pos:
        line_end: 31
        line_start: 26
        source_file: /src/dovecot/src/plugins/quota/quota.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/quota/quota-status-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: QUOTA_STATUS_SETTINGS_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/plugins/quota/quota-status-settings.h
      type_or_value: '1'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*recipient_delimiter'
        type: char
      - name: '*quota_status_nouser'
        type: char
      item_type: struct
      name: quota_status_settings
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/plugins/quota/quota-status-settings.h
    typedefs: []
    union: []
- function_names:
  - quota_warning_match
  - QUOTA_EXCEEDED
  - quota_get_mail_size
  - quota_is_over
  - quota_used_apply_expunged
  - quota_transaction_is_over
  - quota_root_is_over
  - quota_transaction_root_expunged
  - quota_transaction_update_expunged
  source_file: /src/dovecot/src/plugins/quota/quota-util.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - quota_count_mailbox
  - quota_mailbox_iter_begin
  - quota_mailbox_iter_deinit
  - quota_mailbox_iter_next
  - quota_count
  - quota_count_cached
  - count_quota_alloc
  - count_quota_init
  - count_quota_deinit
  - count_quota_root_get_resources
  - count_quota_get_resource
  - quota_count_recalculate_box
  - quota_count_recalculate
  - count_quota_update
  source_file: /src/dovecot/src/plugins/quota/quota-count.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: root
        type: struct quota_root
      - name: cache_timeval
        type: struct timeval
      - name: cached_bytes
        type: uint64_t
      item_type: struct
      name: count_quota_root
      pos:
        line_end: 13
        line_start: 8
        source_file: /src/dovecot/src/plugins/quota/quota-count.c
    - fields:
      - name: '*root'
        type: struct quota_root
      - name: '*ns'
        type: struct mail_namespace
      - name: ns_idx
        type: unsigned int
      - name: '*iter'
        type: struct mailbox_list_iterate_context
      - name: info
        type: struct mailbox_info
      - name: '*error'
        type: char
      item_type: struct
      name: quota_mailbox_iter
      pos:
        line_end: 22
        line_start: 15
        source_file: /src/dovecot/src/plugins/quota/quota-count.c
    typedefs: []
    union: []
- function_names:
  - QUOTA_USER_CONTEXT
  - QUOTA_USER_CONTEXT_REQUIRE
  source_file: /src/dovecot/src/plugins/quota/quota-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*quota'
        type: struct quota
      item_type: struct
      name: quota_user
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/dovecot/src/plugins/quota/quota-plugin.h
    typedefs: []
    union: []
- function_names:
  - DEF
  - quota_settings_check
  - DEF
  - quota_root_settings_check
  - quota_get_unlimited_set
  source_file: /src/dovecot/src/plugins/quota/quota-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - client_connected
  - client_reset
  - quota_check
  - client_check_mta_state
  - client_handle_request
  - client_input_line
  - client_destroy
  - main_preinit
  - main_init
  - main_deinit
  - main
  source_file: /src/dovecot/src/plugins/quota/quota-status.c
  types:
    enum:
    - enumerators:
      - name: QUOTA_PROTOCOL_UNKNOWN
        value: '0'
      - name: QUOTA_PROTOCOL_POSTFIX
      item_type: enum
      name: quota_protocol
      pos:
        line_end: 23
        line_start: 20
        source_file: /src/dovecot/src/plugins/quota/quota-status.c
    preproc_defs: []
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*event'
        type: struct event
      - name: '*state'
        type: char
      - name: '*recipient'
        type: char
      - name: size
        type: uoff_t
      - name: warned_bad_state
        type: bool
      item_type: struct
      name: quota_client
      pos:
        line_end: 35
        line_start: 25
        source_file: /src/dovecot/src/plugins/quota/quota-status.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*quota_status_success'
        type: char
      - name: '*quota_status_toolarge'
        type: char
      - name: '*quota_status_overquota'
        type: char
      item_type: struct
      name: quota_status_result_settings
      pos:
        line_end: 43
        line_start: 37
        source_file: /src/dovecot/src/plugins/quota/quota-status.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/quota/quota-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: QUOTA_UNKNOWN_RESOURCE_ERROR_STRING
      pos:
        line_end: 211
        line_start: 210
        source_file: /src/dovecot/src/plugins/quota/quota-private.h
      type_or_value: '"Unknown quota resource"'
    structs:
    - fields:
      - name: '*user'
        type: struct mail_user
      - name: '*event'
        type: struct event
      - name: '*set'
        type: struct quota_settings
      - name: "(*test_alloc)(\n\t\tstruct quota_transaction_context *ctx, uoff_t size,\n\t\tstruct
          mailbox *expunged_box, uoff_t expunged_size,\n\t\tconst struct quota_overrun
          **overruns_r, const char **error_r)"
        type: enum quota_alloc_result
      - name: vsizes
        type: bool
      item_type: struct
      name: quota
      pos:
        line_end: 32
        line_start: 12
        source_file: /src/dovecot/src/plugins/quota/quota-private.h
    - fields:
      - name: '*(*alloc)(void)'
        type: struct quota_root
      - name: (*init)(struct quota_root *root, const char **error_r)
        type: int
      - name: (*deinit)(struct quota_root *root)
        type: void
      - name: "(*namespace_added)(struct quota_root *root,\n\t\t\t\tstruct mail_namespace
          *ns)"
        type: void
      - name: '*const *(*get_resources)(struct quota_root *root)'
        type: char
      - name: "(*get_resource)(struct quota_root *root,\n\t\t\t\t\t      const char
          *name,\n\t\t\t\t\t      uint64_t *value_r,\n\t\t\t\t\t      const char **error_r)"
        type: enum quota_get_result
      - name: "(*update)(struct quota_root *root,\n\t\t      struct quota_transaction_context
          *ctx,\n\t\t      const char **error_r)"
        type: int
      - name: (*match_box)(struct quota_root *root, struct mailbox *box)
        type: bool
      - name: (*flush)(struct quota_root *root)
        type: void
      item_type: struct
      name: quota_backend_vfuncs
      pos:
        line_end: 57
        line_start: 34
        source_file: /src/dovecot/src/plugins/quota/quota-private.h
    - fields:
      - name: '*name'
        type: char
      - name: '*event'
        type: struct event
      - name: use_vsize
        type: bool
      - name: v
        type: struct quota_backend_vfuncs
      item_type: struct
      name: quota_backend
      pos:
        line_end: 65
        line_start: 59
        source_file: /src/dovecot/src/plugins/quota/quota-private.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*set_filter_name'
        type: char
      - name: '*set'
        type: struct quota_root_settings
      - name: '*quota'
        type: struct quota
      - name: backend
        type: struct quota_backend
      - name: bytes_limit
        type: int64_t
      - name: quota_module_contexts
        type: ARRAY
      - name: auto_updating
        type: bool
      - name: recounting
        type: bool
      - name: quota_over_status_checked
        type: bool
      - name: have_under_warnings
        type: bool
      item_type: struct
      name: quota_root
      pos:
        line_end: 98
        line_start: 67
        source_file: /src/dovecot/src/plugins/quota/quota-private.h
    - fields:
      - name: bytes_ceil
        type: uint64_t
      - name: bytes_over
        type: uint64_t
      - name: bytes_expunged
        type: uint64_t
      item_type: struct
      name: quota_transaction_root_context
      pos:
        line_end: 121
        line_start: 100
        source_file: /src/dovecot/src/plugins/quota/quota-private.h
    - fields:
      - name: module_ctx
        type: union mailbox_transaction_module_context
      - name: '*quota'
        type: struct quota
      - name: '*box'
        type: struct mailbox
      - name: '*set'
        type: struct quota_settings
      - name: '*roots'
        type: struct quota_transaction_root_context
      - name: bytes_used
        type: int64_t
      - name: bytes_expunged
        type: uint64_t
      - name: bytes_ceil
        type: uint64_t
      - name: bytes_over
        type: uint64_t
      - name: '*tmp_mail'
        type: struct mail
      - name: recalculate
        type: enum quota_recalculate
      - name: limits_set
        type: bool
      - name: failed
        type: bool
      - name: sync_transaction
        type: bool
      - name: auto_updating
        type: bool
      - name: no_quota_updates
        type: bool
      item_type: struct
      name: quota_transaction_context
      pos:
        line_end: 167
        line_start: 123
        source_file: /src/dovecot/src/plugins/quota/quota-private.h
    typedefs: []
    union: []
- function_names:
  - cmd_quota_get_root
  - cmd_quota_get_run
  - cmd_quota_get_init
  - cmd_quota_get_alloc
  - cmd_quota_recalc_run
  - cmd_quota_recalc_alloc
  - doveadm_quota_plugin_init
  - doveadm_quota_plugin_deinit
  source_file: /src/dovecot/src/plugins/quota/doveadm-quota.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - maildir_sum_dir
  - maildir_list_init
  - maildir_set_next_path
  - maildir_list_next
  - maildir_list_deinit
  - maildirs_check_have_changed
  - maildirsize_write
  - maildirsize_recalculate_init
  - maildirsize_recalculate_namespace
  - maildirsize_rebuild_later
  - maildirsize_recalculate_finish
  - maildirsize_recalculate
  - maildir_parse_limit
  - maildirsize_parse
  - maildirsize_open
  - maildirsize_has_changed
  - maildirsize_read
  - maildirquota_limits_init
  - maildirquota_read_limits
  - maildirquota_refresh
  - maildirsize_update
  - maildir_quota_alloc
  - maildir_quota_init
  - maildir_quota_deinit
  - maildir_quota_namespace_added
  - maildir_quota_root_get_resources
  - maildir_quota_get_resource
  - maildir_quota_update
  source_file: /src/dovecot/src/plugins/quota/quota-maildir.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAILDIRSIZE_FILENAME
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/plugins/quota/quota-maildir.c
      type_or_value: '"maildirsize"'
    - item_type: preproc_def
      name: MAILDIRSIZE_STALE_SECS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/plugins/quota/quota-maildir.c
      type_or_value: (60*15)
    structs:
    - fields:
      - name: root
        type: struct quota_root
      - name: '*maildirsize_ns'
        type: struct mail_namespace
      - name: '*maildirsize_path'
        type: char
      - name: total_bytes
        type: uint64_t
      - name: total_count
        type: uint64_t
      - name: fd
        type: int
      - name: recalc_last_stamp
        type: time_t
      - name: last_size
        type: off_t
      - name: limits_initialized
        type: bool
      item_type: struct
      name: maildir_quota_root
      pos:
        line_end: 37
        line_start: 23
        source_file: /src/dovecot/src/plugins/quota/quota-maildir.c
    - fields:
      - name: '*list'
        type: struct mailbox_list
      - name: '*root'
        type: struct maildir_quota_root
      - name: '*iter'
        type: struct mailbox_list_iterate_context
      - name: '*info'
        type: struct mailbox_info
      - name: '*path'
        type: string_t
      - name: state
        type: int
      item_type: struct
      name: maildir_list_context
      pos:
        line_end: 47
        line_start: 39
        source_file: /src/dovecot/src/plugins/quota/quota-maildir.c
    typedefs: []
    union: []
- function_names:
  - VIRTUAL_LIST_CONTEXT_REQUIRE
  - virtual_get_storage
  - virtual_mailbox_list_created
  source_file: /src/dovecot/src/plugins/virtual/virtual-list.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_list_module_context
      item_type: struct
      name: virtual_mailbox_list
      pos:
        line_end: 12
        line_start: 10
        source_file: /src/dovecot/src/plugins/virtual/virtual-list.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/virtual/virtual-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: virtual_max_open_mailboxes
        type: unsigned int
      item_type: struct
      name: virtual_settings
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/dovecot/src/plugins/virtual/virtual-settings.h
    typedefs: []
    union: []
- function_names:
  - virtual_mail_container_of
  - virtual_mail_alloc
  - virtual_mail_close
  - backend_mail_find
  - backend_mail_get
  - virtual_mail_set_backend_mail
  - virtual_mail_set_unattached_backend_mail
  - virtual_mail_set_seq
  - virtual_mail_set_uid
  - virtual_mail_set_uid_cache_updates
  - virtual_mail_prefetch
  - virtual_mail_precache
  - virtual_mail_add_temp_wanted_fields
  - virtual_mail_get_parts
  - virtual_mail_get_date
  - virtual_mail_get_received_date
  - virtual_mail_get_save_date
  - virtual_mail_get_virtual_mail_size
  - virtual_mail_get_physical_size
  - virtual_mail_get_first_header
  - virtual_mail_get_headers
  - virtual_mail_get_header_stream
  - virtual_mail_get_stream
  - virtual_mail_get_binary_stream
  - virtual_mail_get_special
  - virtual_mail_get_backend_mail
  - virtual_mail_update_pop3_uidl
  - virtual_mail_expunge
  - virtual_mail_set_cache_corrupted
  source_file: /src/dovecot/src/plugins/virtual/virtual-mail.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: imail
        type: struct index_mail
      - name: wanted_fields
        type: enum mail_fetch_field
      - name: '*wanted_headers'
        type: struct mailbox_header_lookup_ctx
      - name: delayed_temp_fields
        type: enum mail_fetch_field
      - name: '*delayed_temp_headers'
        type: struct mailbox_header_lookup_ctx
      - name: '*cur_backend_mail'
        type: struct mail
      - name: cur_vrec
        type: struct virtual_mail_index_record
      - name: cur_lost
        type: bool
      item_type: struct
      name: virtual_mail
      pos:
        line_end: 35
        line_start: 15
        source_file: /src/dovecot/src/plugins/virtual/virtual-mail.c
    typedefs: []
    union: []
- function_names:
  - virtual_plugin_init
  - virtual_plugin_deinit
  source_file: /src/dovecot/src/plugins/virtual/virtual-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - virtual_transaction_get
  - virtual_transaction_begin
  - virtual_transaction_commit
  - virtual_transaction_rollback
  source_file: /src/dovecot/src/plugins/virtual/virtual-transaction.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - VIRTUAL_BACKEND_CONTEXT
  - ns_is_visible
  - get_user_visible_mailbox_name
  - virtual_box_copy_error
  - virtual_storage_alloc
  - virtual_storage_create
  - virtual_backend_box_lookup_name
  - virtual_backend_box_lookup
  - virtual_mailbox_is_in_open_stack
  - virtual_backend_box_open_failed
  - virtual_backend_box_alloc
  - virtual_mailboxes_open
  - virtual_mailbox_alloc
  - virtual_backend_box_sync_mail_unset
  - virtual_backend_box_can_close
  - virtual_backend_box_close_any_except
  - virtual_backend_mailbox_close
  - virtual_backend_mailbox_allocated
  - virtual_backend_mailbox_opened
  - virtual_backend_box_open
  - virtual_backend_box_close
  - virtual_backend_box_accessed
  - virtual_mailbox_close_internal
  - virtual_mailbox_exists
  - virtual_mailbox_open
  - virtual_mailbox_close
  - virtual_mailbox_free
  - virtual_mailbox_create
  - virtual_mailbox_update
  - virtual_storage_set_have_guid_flags
  - virtual_storage_get_status
  - virtual_mailbox_get_metadata
  - virtual_notify_callback
  - virtual_backend_box_changed
  - virtual_notify_start
  - virtual_notify_changes
  - virtual_uidmap_to_uid_array
  - virtual_get_virtual_uids
  - virtual_get_virtual_uid_map
  - virtual_get_virtual_backend_boxes
  - virtual_get_virtual_backend_last_uid
  - virtual_get_virtual_backend_mail_uid
  - virtual_is_inconsistent
  - virtual_list_index_has_changed
  - virtual_list_index_update_sync
  source_file: /src/dovecot/src/plugins/virtual/virtual-storage.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      item_type: struct
      name: virtual_backend_mailbox
      pos:
        line_end: 30
        line_start: 28
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/virtual/virtual-transaction.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: t
        type: struct mailbox_transaction_context
      item_type: struct
      name: virtual_transaction_context
      pos:
        line_end: 9
        line_start: 5
        source_file: /src/dovecot/src/plugins/virtual/virtual-transaction.h
    typedefs: []
    union: []
- function_names:
  - virtual_save_alloc
  - virtual_copy_keywords
  - virtual_save_begin
  - virtual_save_continue
  - virtual_save_finish
  - virtual_save_cancel
  - virtual_save_free
  source_file: /src/dovecot/src/plugins/virtual/virtual-save.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ctx
        type: struct mail_save_context
      - name: '*backend_save_ctx'
        type: struct mail_save_context
      - name: '*backend_box'
        type: struct mailbox
      - name: '*open_errstr'
        type: char
      - name: open_error
        type: enum mail_error
      item_type: struct
      name: virtual_save_context
      pos:
        line_end: 13
        line_start: 7
        source_file: /src/dovecot/src/plugins/virtual/virtual-save.c
    typedefs: []
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/plugins/virtual/virtual-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - virtual_search_args_parse
  - virtual_config_add_rule
  - virtual_config_parse_line
  - virtual_mailbox_get_list_patterns
  - separate_wildcard_mailboxes
  - virtual_config_copy_expanded
  - virtual_ns_match
  - virtual_config_match
  - virtual_config_box_metadata_match
  - virtual_config_metadata_match
  - virtual_config_expand_wildcards
  - virtual_config_search_args_dup
  - virtual_config_read
  - virtual_config_free
  source_file: /src/dovecot/src/plugins/virtual/virtual-config.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*mbox'
        type: struct virtual_mailbox
      - name: '*input'
        type: struct istream
      - name: pool
        type: pool_t
      - name: '*rule'
        type: string_t
      - name: rule_idx
        type: unsigned int
      - name: sep
        type: char
      - name: have_wildcards
        type: bool
      - name: have_mailbox_defines
        type: bool
      item_type: struct
      name: virtual_parse_context
      pos:
        line_end: 34
        line_start: 23
        source_file: /src/dovecot/src/plugins/virtual/virtual-config.c
    typedefs: []
    union: []
- function_names:
  - virtual_sync_set_uidvalidity
  - virtual_sync_external_flags
  - virtual_sync_mail_uid_cmp
  - virtual_backend_box_sync_mail_set
  - bbox_mailbox_id_cmp
  - virtual_sync_get_backend_box
  - virtual_mailbox_ext2_header_read
  - virtual_mailbox_ext_header_read
  - virtual_sync_ext_header_rewrite
  - virtual_sync_ext_header_update
  - virtual_sync_index_rec
  - virtual_sync_index_changes
  - virtual_sync_index_finish
  - virtual_sync_backend_box_init
  - virtual_backend_uidmap_bsearch_cmp
  - virtual_sync_mailbox_box_remove
  - virtual_sync_mailbox_box_add
  - virtual_sync_mailbox_box_update_flags
  - virtual_backend_uidmap_cmp
  - virtual_sync_bbox_uids_sort
  - virtual_sync_backend_boxes_sort_uids
  - virtual_sync_backend_add_vmsgs_results
  - virtual_sync_backend_handle_old_vmsgs
  - virtual_sync_backend_box_continue
  - virtual_sync_drop_existing
  - virtual_sync_drop_nonexistent
  - virtual_sync_mailbox_box_update
  - virtual_sync_find_seqs
  - virtual_sync_expunge_add
  - virtual_sync_backend_box_sync
  - virtual_bbox_mailbox_equals
  - virtual_sync_backend_ext_header
  - virtual_sync_backend_box_deleted
  - virtual_try_open_and_sync_backend_box
  - virtual_sync_backend_box
  - virtual_sync_backend_map_uids
  - virtual_sync_new_backend_boxes
  - virtual_add_record_cmp
  - virtual_sync_backend_sort_new
  - virtual_sync_backend_add_new
  - virtual_sync_apply_existing_appends
  - virtual_sync_apply_existing_expunges
  - virtual_sync_deinit
  - virtual_sync_mail_mailbox_cmp
  - virtual_sync_bboxes_get_mails
  - virtual_sync_backend_boxes
  - virtual_sync_backend_boxes_finish
  - virtual_sync_finish
  - virtual_sync
  - virtual_storage_sync_init
  source_file: /src/dovecot/src/plugins/virtual/virtual-sync.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: rec
        type: struct virtual_mail_index_record
      - name: received_date
        type: time_t
      item_type: struct
      name: virtual_add_record
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/dovecot/src/plugins/virtual/virtual-sync.c
    - fields:
      - name: vseq
        type: uint32_t
      - name: vrec
        type: struct virtual_mail_index_record
      item_type: struct
      name: virtual_sync_mail
      pos:
        line_end: 24
        line_start: 21
        source_file: /src/dovecot/src/plugins/virtual/virtual-sync.c
    - fields:
      - name: '*mbox'
        type: struct virtual_mailbox
      - name: '*index_sync_ctx'
        type: struct mail_index_sync_ctx
      - name: '*index'
        type: struct mail_index
      - name: '*sync_view'
        type: struct mail_index_view
      - name: '*trans'
        type: struct mail_index_transaction
      - name: '*const *kw_all'
        type: char
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: all_mails_idx
        type: uint32_t
      - name: flags
        type: enum mailbox_sync_flags
      - name: uid_validity
        type: uint32_t
      - name: ext_header_changed
        type: bool
      - name: expunge_removed
        type: bool
      - name: index_broken
        type: bool
      item_type: struct
      name: virtual_sync_context
      pos:
        line_end: 50
        line_start: 26
        source_file: /src/dovecot/src/plugins/virtual/virtual-sync.c
    typedefs: []
    union: []
- function_names:
  - VIRTUAL_CONTEXT
  - VIRTUAL_CONTEXT_REQUIRE
  source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VIRTUAL_STORAGE_NAME
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
      type_or_value: '"virtual"'
    - item_type: preproc_def
      name: VIRTUAL_CONFIG_FNAME
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
      type_or_value: '"dovecot-virtual"'
    - item_type: preproc_def
      name: VIRTUAL_MAIL_INDEX_EXT2_HEADER_VERSION
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
      type_or_value: '1'
    structs:
    - fields:
      - name: change_counter
        type: uint32_t
      - name: mailbox_count
        type: uint32_t
      - name: highest_mailbox_id
        type: uint32_t
      - name: search_args_crc32
        type: uint32_t
      item_type: struct
      name: virtual_mail_index_header
      pos:
        line_end: 30
        line_start: 18
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    - fields:
      - name: id
        type: uint32_t
      - name: name_len
        type: uint32_t
      - name: uid_validity
        type: uint32_t
      - name: next_uid
        type: uint32_t
      - name: highest_modseq
        type: uint64_t
      item_type: struct
      name: virtual_mail_index_mailbox_record
      pos:
        line_end: 43
        line_start: 32
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    - fields:
      - name: version
        type: uint8_t
      - name: ext_record_size
        type: uint8_t
      - name: hdr_size
        type: uint16_t
      - name: change_counter
        type: uint32_t
      item_type: struct
      name: virtual_mail_index_ext2_header
      pos:
        line_end: 58
        line_start: 45
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    - fields:
      - name: guid[16]
        type: uint8_t
      item_type: struct
      name: virtual_mail_index_mailbox_ext2_record
      pos:
        line_end: 63
        line_start: 60
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    - fields:
      - name: mailbox_id
        type: uint32_t
      - name: real_uid
        type: uint32_t
      item_type: struct
      name: virtual_mail_index_record
      pos:
        line_end: 68
        line_start: 65
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    - fields:
      - name: storage
        type: struct mail_storage
      - name: (const_string)
        type: ARRAY_TYPE
      - name: max_open_mailboxes
        type: unsigned int
      item_type: struct
      name: virtual_storage
      pos:
        line_end: 78
        line_start: 70
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    - fields:
      - name: real_uid
        type: uint32_t
      - name: virtual_uid
        type: uint32_t
      item_type: struct
      name: virtual_backend_uidmap
      pos:
        line_end: 84
        line_start: 80
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: '*virtual_mbox'
        type: struct virtual_mailbox
      - name: '*prev_open'
        type: struct virtual_backend_box
      - name: mailbox_id
        type: uint32_t
      - name: '*name'
        type: char
      - name: sync_mailbox_idx1
        type: unsigned int
      - name: sync_uid_validity
        type: uint32_t
      - name: sync_next_uid
        type: uint32_t
      - name: sync_highest_modseq
        type: uint64_t
      - name: sync_guid
        type: guid_128_t
      - name: ondisk_highest_modseq
        type: uint64_t
      - name: '*search_args'
        type: struct mail_search_args
      - name: '*search_result'
        type: struct mail_search_result
      - name: '*box'
        type: struct mailbox
      - name: '*sync_mail'
        type: struct mail
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: '*glob'
        type: struct imap_match_glob
      - name: '*ns'
        type: struct mail_namespace
      - name: '*metadata_entry'
        type: char
      - name: '*notify'
        type: struct mailbox_list_notify
      - name: open_tracked
        type: bool
      - name: open_failed
        type: bool
      - name: sync_seen
        type: bool
      - name: wildcard
        type: bool
      - name: clear_recent
        type: bool
      - name: negative_match
        type: bool
      - name: uids_nonsorted
        type: bool
      - name: search_args_initialized
        type: bool
      - name: deleted
        type: bool
      - name: notify_changes_started
        type: bool
      - name: first_sync
        type: bool
      item_type: struct
      name: virtual_backend_box
      pos:
        line_end: 142
        line_start: 86
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    - fields:
      - name: box
        type: struct mailbox
      - name: '*storage'
        type: struct virtual_storage
      - name: virtual_ext_id
        type: uint32_t
      - name: virtual_ext2_id
        type: uint32_t
      - name: virtual_guid_ext_id
        type: uint32_t
      - name: prev_uid_validity
        type: uint32_t
      - name: prev_change_counter
        type: uint32_t
      - name: highest_mailbox_id
        type: uint32_t
      - name: search_args_crc32
        type: uint32_t
      - name: guid
        type: guid_128_t
      - name: '*lookup_prev_bbox'
        type: struct virtual_backend_box
      - name: sync_virtual_next_uid
        type: uint32_t
      - name: (virtual_backend_box)
        type: ARRAY_TYPE
      - name: '*save_bbox'
        type: struct virtual_backend_box
      - name: '*open_backend_boxes_head'
        type: struct virtual_backend_box
      - name: '*open_backend_boxes_tail'
        type: struct virtual_backend_box
      - name: backends_open_count
        type: unsigned int
      - name: (mailbox_virtual_patterns)
        type: ARRAY_TYPE
      - name: (mailbox_virtual_patterns)
        type: ARRAY_TYPE
      - name: uids_mapped
        type: bool
      - name: sync_initialized
        type: bool
      - name: inconsistent
        type: bool
      - name: have_guid_flags_set
        type: bool
      - name: have_guids
        type: bool
      - name: have_save_guids
        type: bool
      - name: ext_header_rewrite
        type: bool
      item_type: struct
      name: virtual_mailbox
      pos:
        line_end: 184
        line_start: 145
        source_file: /src/dovecot/src/plugins/virtual/virtual-storage.h
    typedefs: []
    union: []
- function_names:
  - virtual_search_record_cmp
  - mail_search_get_result
  - virtual_search_get_records
  - virtual_search_init
  - virtual_search_deinit
  - virtual_search_next_nonblock
  - search_args_set_full_match
  - virtual_search_next_update_seq
  source_file: /src/dovecot/src/plugins/virtual/virtual-search.c
  types:
    enum:
    - enumerators:
      - name: VIRTUAL_SEARCH_STATE_BUILD
      - name: VIRTUAL_SEARCH_STATE_RETURN
      - name: VIRTUAL_SEARCH_STATE_SORT_DONE
      - name: VIRTUAL_SEARCH_STATE_SORT
      item_type: enum
      name: virtual_search_state
      pos:
        line_end: 14
        line_start: 9
        source_file: /src/dovecot/src/plugins/virtual/virtual-search.c
    preproc_defs: []
    structs:
    - fields:
      - name: mailbox_id
        type: uint32_t
      - name: real_uid
        type: uint32_t
      - name: virtual_seq
        type: uint32_t
      item_type: struct
      name: virtual_search_record
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/dovecot/src/plugins/virtual/virtual-search.c
    - fields:
      - name: module_ctx
        type: union mail_search_module_context
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: result_iter
        type: struct seq_range_iter
      - name: search_state
        type: enum virtual_search_state
      - name: next_result_n
        type: unsigned int
      - name: next_record_idx
        type: unsigned int
      item_type: struct
      name: virtual_search_context
      pos:
        line_end: 32
        line_start: 22
        source_file: /src/dovecot/src/plugins/virtual/virtual-search.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/virtual/virtual-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CHARSET_ALIAS_USER_CONTEXT
  - DEF
  - charset_alias_get_alias
  - charset_alias_to_utf8_begin
  - charset_alias_to_utf8_end
  - charset_alias_to_utf8_reset
  - charset_alias_to_utf8
  - charset_alias_utf8_vfuncs_set
  - charset_alias_utf8_vfuncs_reset
  - charset_alias_mail_user_deinit
  - charset_alias_mail_user_created
  - charset_alias_plugin_init
  - charset_alias_plugin_deinit
  source_file: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: charset_alias_settings
      pos:
        line_end: 50
        line_start: 46
        source_file: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      item_type: struct
      name: charset_alias_user
      pos:
        line_end: 80
        line_start: 78
        source_file: /src/dovecot/src/plugins/charset-alias/charset-alias-plugin.c
    typedefs: []
    union: []
- function_names:
  - solr_connection_create_http_base_url
  - solr_connection_init
  - solr_connection_deinit
  - solr_connection_payload_input
  - solr_connection_select_response
  - solr_connection_select
  - solr_connection_update_response
  - solr_connection_post_request
  - solr_connection_post_begin
  - solr_connection_post_more
  - solr_connection_post_end
  - solr_connection_post
  source_file: /src/dovecot/src/plugins/fts-solr/solr-connection.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: result_pool
        type: pool_t
      - name: '*event'
        type: struct event
      - name: '*payload'
        type: struct istream
      - name: '*io'
        type: struct io
      - name: request_status
        type: int
      - name: '*parser'
        type: struct solr_response_parser
      - name: '**results'
        type: struct solr_result
      item_type: struct
      name: solr_lookup_context
      pos:
        line_end: 27
        line_start: 17
        source_file: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    - fields:
      - name: '*conn'
        type: struct solr_connection
      - name: '*http_req'
        type: struct http_client_request
      - name: request_status
        type: int
      - name: failed
        type: bool
      item_type: struct
      name: solr_connection_post
      pos:
        line_end: 36
        line_start: 29
        source_file: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    - fields:
      - name: '*event'
        type: struct event
      - name: '*http_host'
        type: char
      - name: http_port
        type: in_port_t
      - name: '*http_base_url'
        type: char
      - name: '*http_failure'
        type: char
      - name: '*http_user'
        type: char
      - name: '*http_password'
        type: char
      - name: debug
        type: bool
      - name: posting
        type: bool
      - name: http_ssl
        type: bool
      item_type: struct
      name: solr_connection
      pos:
        line_end: 50
        line_start: 38
        source_file: /src/dovecot/src/plugins/fts-solr/solr-connection.c
    typedefs: []
    union: []
- function_names:
  - solr_xml_parse
  - attrs_get_name
  - solr_lookup_xml_start
  - solr_result_get
  - solr_lookup_add_doc
  - solr_lookup_xml_end
  - solr_lookup_xml_data
  - solr_response_parser_init
  - solr_response_parser_deinit
  - solr_response_parse
  source_file: /src/dovecot/src/plugins/fts-solr/solr-response.c
  types:
    enum:
    - enumerators:
      - name: SOLR_XML_RESPONSE_STATE_ROOT
      - name: SOLR_XML_RESPONSE_STATE_RESULT
      - name: SOLR_XML_RESPONSE_STATE_CONTENT
      - name: SOLR_XML_RESPONSE_STATE_RESPONSE
      - name: SOLR_XML_RESPONSE_STATE_DOC
      item_type: enum
      name: solr_xml_response_state
      pos:
        line_end: 19
        line_start: 13
        source_file: /src/dovecot/src/plugins/fts-solr/solr-response.c
    - enumerators:
      - name: SOLR_XML_CONTENT_STATE_NONE
        value: '0'
      - name: SOLR_XML_CONTENT_STATE_SCORE
      - name: SOLR_XML_CONTENT_STATE_MAILBOX
      - name: SOLR_XML_CONTENT_STATE_UID
      - name: SOLR_XML_CONTENT_STATE_NAMESPACE
      - name: SOLR_XML_CONTENT_STATE_UIDVALIDITY
      - name: SOLR_XML_CONTENT_STATE_ERROR
      item_type: enum
      name: solr_xml_content_state
      pos:
        line_end: 29
        line_start: 21
        source_file: /src/dovecot/src/plugins/fts-solr/solr-response.c
    preproc_defs:
    - item_type: preproc_def
      name: MAX_VALUE_LEN
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/plugins/fts-solr/solr-response.c
      type_or_value: '2048'
    structs:
    - fields:
      - name: xml_parser
        type: XML_Parser
      - name: '*input'
        type: struct istream
      - name: '*event'
        type: struct event
      - name: state
        type: enum solr_xml_response_state
      - name: content_state
        type: enum solr_xml_content_state
      - name: depth
        type: int
      - name: '*buffer'
        type: string_t
      - name: uid
        type: uint32_t
      - name: score
        type: float
      - name: '*mailbox'
        type: char
      - name: result_pool
        type: pool_t
      - name: xml_failed
        type: bool
      item_type: struct
      name: solr_response_parser
      pos:
        line_end: 51
        line_start: 31
        source_file: /src/dovecot/src/plugins/fts-solr/solr-response.c
    typedefs: []
    union: []
- function_names:
  - test_solr_result
  - test_solr_response_parser
  - test_solr_response_file
  - main
  source_file: /src/dovecot/src/plugins/fts-solr/test-solr-response.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*box_id'
        type: char
      - name: '*scores'
        type: struct fts_score_map
      item_type: struct
      name: solr_response_test_result
      pos:
        line_end: 16
        line_start: 13
        source_file: /src/dovecot/src/plugins/fts-solr/test-solr-response.c
    - fields:
      - name: '*input'
        type: char
      - name: '*results'
        type: struct solr_response_test_result
      item_type: struct
      name: solr_response_test
      pos:
        line_end: 22
        line_start: 18
        source_file: /src/dovecot/src/plugins/fts-solr/test-solr-response.c
    typedefs: []
    union: []
- function_names:
  - DEF
  - fts_solr_settings_get
  source_file: /src/dovecot/src/plugins/fts-solr/fts-solr-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - is_valid_xml_char
  - xml_encode_data_max
  - xml_encode_data
  - xml_encode
  - solr_escape
  - solr_quote_http
  - fts_backend_solr_alloc
  - fts_backend_solr_init
  - fts_backend_solr_deinit
  - get_last_uid_fallback
  - fts_backend_solr_get_last_uid
  - fts_backend_solr_update_init
  - xml_encode_id
  - fts_backend_solr_doc_open
  - fts_solr_field_get
  - fts_backend_solr_doc_close
  - fts_backed_solr_build_flush
  - fts_backend_solr_expunge_flush
  - fts_backend_solr_commit
  - fts_backend_solr_update_deinit
  - fts_backend_solr_update_set_mailbox
  - fts_backend_solr_update_expunge
  - fts_backend_solr_uid_changed
  - fts_backend_solr_update_set_build_key
  - fts_backend_solr_update_unset_build_key
  - fts_backend_solr_update_build_more
  - fts_backend_solr_refresh
  - fts_backend_solr_rescan
  - fts_backend_solr_optimize
  - solr_need_escaping
  - solr_add_str_arg
  - solr_add_definite_query
  - solr_add_definite_query_args
  - solr_add_maybe_query
  - solr_add_maybe_query_args
  - solr_search
  - fts_backend_solr_lookup
  - solr_search_multi
  - fts_backend_solr_lookup_multi
  source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SOLR_CMDBUF_SIZE
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
      type_or_value: (1024*64)
    - item_type: preproc_def
      name: SOLR_CMDBUF_FLUSH_SIZE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
      type_or_value: (SOLR_CMDBUF_SIZE-128)
    - item_type: preproc_def
      name: SOLR_MAX_MULTI_ROWS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
      type_or_value: '100000'
    - item_type: preproc_def
      name: SOLR_HEADER_MAX_SIZE
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
      type_or_value: (1024*1024)
    - item_type: preproc_def
      name: SOLR_HEADER_LINE_MAX_TRUNC_SIZE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: SOLR_QUERY_MAX_MAILBOX_COUNT
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
      type_or_value: '10'
    structs:
    - fields:
      - name: backend
        type: struct fts_backend
      - name: '*event'
        type: struct event
      - name: '*solr_conn'
        type: struct solr_connection
      item_type: struct
      name: solr_fts_backend
      pos:
        line_end: 39
        line_start: 35
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    - fields:
      - name: '*key'
        type: char
      - name: '*value'
        type: string_t
      item_type: struct
      name: solr_fts_field
      pos:
        line_end: 44
        line_start: 41
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    - fields:
      - name: ctx
        type: struct fts_backend_update_context
      - name: '*cur_box'
        type: struct mailbox
      - name: box_guid[MAILBOX_GUID_HEX_LENGTH+1]
        type: char
      - name: '*post'
        type: struct solr_connection_post
      - name: prev_uid
        type: uint32_t
      - name: '*cmd'
        type: string_t
      - name: '*cmd_expunge'
        type: string_t
      - name: last_indexed_uid
        type: uint32_t
      - name: mails_since_flush
        type: unsigned int
      - name: tokenized_input
        type: bool
      - name: last_indexed_uid_set
        type: bool
      - name: body_open
        type: bool
      - name: documents_added
        type: bool
      - name: expunges
        type: bool
      - name: truncate_header
        type: bool
      item_type: struct
      name: solr_fts_backend_update_context
      pos:
        line_end: 67
        line_start: 46
        source_file: /src/dovecot/src/plugins/fts-solr/fts-backend-solr.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts-solr/fts-solr-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FTS_SOLR_FILTER
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/plugins/fts-solr/fts-solr-settings.h
      type_or_value: '"fts_solr"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*url'
        type: char
      - name: batch_size
        type: unsigned int
      - name: soft_commit
        type: bool
      item_type: struct
      name: fts_solr_settings
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/plugins/fts-solr/fts-solr-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts-solr/solr-response.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*box_id'
        type: char
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (fts_score_map)
        type: ARRAY_TYPE
      item_type: struct
      name: solr_result
      pos:
        line_end: 13
        line_start: 8
        source_file: /src/dovecot/src/plugins/fts-solr/solr-response.h
    typedefs: []
    union: []
- function_names:
  - fts_solr_mail_user_deinit
  - fts_solr_mail_user_get
  - fts_solr_mail_user_created
  - fts_solr_plugin_init
  - fts_solr_plugin_deinit
  source_file: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FTS_SOLR_USER_CONTEXT
  - FTS_SOLR_USER_CONTEXT_REQUIRE
  source_file: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*set'
        type: struct fts_solr_settings
      item_type: struct
      name: fts_solr_user
      pos:
        line_end: 16
        line_start: 13
        source_file: /src/dovecot/src/plugins/fts-solr/fts-solr-plugin.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts-solr/solr-connection.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_fts_flatcurve_mailbox_run_box
  - cmd_fts_flatcurve_mailbox_run_do
  - cmd_fts_flatcurve_mailbox_run
  - cmd_fts_flatcurve_mailbox_init
  - cmd_fts_flatcurve_mailbox_deinit
  - cmd_fts_flatcurve_mailbox_alloc
  - cmd_fts_flatcurve_check_alloc
  - cmd_fts_flatcurve_remove_alloc
  - cmd_fts_flatcurve_rotate_alloc
  - cmd_fts_flatcurve_stats_alloc
  - doveadm_fts_flatcurve_plugin_init
  - doveadm_fts_flatcurve_plugin_deinit
  source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
  types:
    enum:
    - enumerators:
      - name: FTS_FLATCURVE_CMD_CHECK
      - name: FTS_FLATCURVE_CMD_REMOVE
      - name: FTS_FLATCURVE_CMD_STATS
      - name: FTS_FLATCURVE_CMD_ROTATE
      item_type: enum
      name: fts_flatcurve_cmd_type
      pos:
        line_end: 28
        line_start: 23
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    preproc_defs:
    - item_type: preproc_def
      name: DOVEADM_FLATCURVE_CMD_NAME_CHECK
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
      type_or_value: '"fts flatcurve check"'
    - item_type: preproc_def
      name: DOVEADM_FLATCURVE_CMD_NAME_REMOVE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
      type_or_value: '"fts flatcurve remove"'
    - item_type: preproc_def
      name: DOVEADM_FLATCURVE_CMD_NAME_ROTATE
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
      type_or_value: '"fts flatcurve rotate"'
    - item_type: preproc_def
      name: DOVEADM_FLATCURVE_CMD_NAME_STATS
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
      type_or_value: '"fts flatcurve stats"'
    structs:
    - fields:
      - name: ctx
        type: struct doveadm_mail_cmd_context
      - name: cmd_type
        type: enum fts_flatcurve_cmd_type
      item_type: struct
      name: fts_flatcurve_mailbox_cmd_context
      pos:
        line_end: 33
        line_start: 30
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-fts-flatcurve.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FTS_FLATCURVE_USER_CONTEXT
  - FTS_FLATCURVE_USER_CONTEXT_REQUIRE
  source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*backend'
        type: struct flatcurve_fts_backend
      - name: '*set'
        type: struct fts_flatcurve_settings
      item_type: struct
      name: fts_flatcurve_user
      pos:
        line_end: 21
        line_start: 17
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FTS_FLATCURVE_FILTER
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-settings.h
      type_or_value: '"fts_flatcurve"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: commit_limit
        type: unsigned int
      - name: min_term_size
        type: unsigned int
      - name: optimize_limit
        type: unsigned int
      - name: rotate_count
        type: unsigned int
      - name: rotate_time
        type: unsigned int
      - name: substring_search
        type: bool
      item_type: struct
      name: fts_flatcurve_settings
      pos:
        line_end: 15
        line_start: 7
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-settings.h
    typedefs: []
    union: []
- function_names:
  - fts_backend_flatcurve_alloc
  - fts_backend_flatcurve_init
  - fts_backend_flatcurve_clear_mailbox_params
  - fts_backend_flatcurve_close_mailbox
  - fts_backend_flatcurve_refresh
  - fts_backend_flatcurve_deinit
  - fts_backend_flatcurve_set_mailbox
  - fts_backend_flatcurve_set_mailbox_params
  - fts_backend_flatcurve_get_last_uid
  - fts_backend_flatcurve_update_init
  - fts_backend_flatcurve_update_deinit
  - fts_backend_flatcurve_update_set_mailbox
  - fts_backend_flatcurve_update_expunge
  - fts_backend_flatcurve_update_set_build_key
  - fts_backend_flatcurve_update_unset_build_key
  - fts_backend_flatcurve_update_build_more
  - fts_backend_flatcurve_seq_range_string
  - fts_backend_flatcurve_create_query
  - fts_backend_flatcurve_rescan_box
  - fts_backend_flatcurve_iterate_ns
  - fts_backend_flatcurve_optimize
  - fts_backend_flatcurve_rescan
  - fts_backend_flatcurve_lookup_multi
  - fts_backend_flatcurve_lookup
  - fts_backend_flatcurve_delete_dir
  source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
  types:
    enum:
    - enumerators:
      - name: FTS_BACKEND_FLATCURVE_ACTION_OPTIMIZE
      - name: FTS_BACKEND_FLATCURVE_ACTION_RESCAN
      item_type: enum
      name: fts_backend_flatcurve_action
      pos:
        line_end: 20
        line_start: 17
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
    preproc_defs:
    - item_type: preproc_def
      name: FTS_FLATCURVE_MAX_TERM_SIZE_MAX
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.c
      type_or_value: '200'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FTS_FLATCURVE_LABEL
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.h
      type_or_value: '"fts-flatcurve"'
    - item_type: preproc_def
      name: FTS_FLATCURVE_DEBUG_PREFIX
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.h
      type_or_value: 'FTS_FLATCURVE_LABEL ": "'
    structs:
    - fields:
      - name: backend
        type: struct fts_backend
      - name: '*boxname'
        type: string_t
      - name: '*event'
        type: struct event
      - name: '*fuser'
        type: struct fts_flatcurve_user
      - name: '*xapian'
        type: struct flatcurve_xapian
      - name: parsed_lock_method
        type: enum file_lock_method
      - name: pool
        type: pool_t
      item_type: struct
      name: flatcurve_fts_backend
      pos:
        line_end: 26
        line_start: 12
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.h
    - fields:
      - name: ctx
        type: struct fts_backend_update_context
      - name: '*backend'
        type: struct flatcurve_fts_backend
      - name: type
        type: enum fts_backend_build_key_type
      - name: '*hdr_name'
        type: string_t
      - name: uid
        type: uint32_t
      - name: start
        type: struct timeval
      - name: indexed_hdr
        type: bool
      - name: skip_uid
        type: bool
      item_type: struct
      name: flatcurve_fts_backend_update_context
      pos:
        line_end: 39
        line_start: 28
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.h
    - fields:
      - name: '*args'
        type: struct mail_search_arg
      - name: flags
        type: enum fts_lookup_flags
      - name: '*qtext'
        type: string_t
      - name: '*backend'
        type: struct flatcurve_fts_backend
      - name: '*xapian'
        type: struct flatcurve_fts_query_xapian
      - name: pool
        type: pool_t
      item_type: struct
      name: flatcurve_fts_query
      pos:
        line_end: 50
        line_start: 41
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.h
    - fields:
      - name: (fts_score_map)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      item_type: struct
      name: flatcurve_fts_result
      pos:
        line_end: 56
        line_start: 52
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve.h
    typedefs: []
    union: []
- function_names:
  - std_move
  - std_move
  - ENUM_EMPTY
  - fts_flatcurve_xapian_init
  - fts_flatcurve_xapian_deinit
  - fts_flatcurve_xapian_create_db_path
  - fts_flatcurve_xapian_delete
  - fts_flatcurve_xapian_db_iter_init
  - fts_flatcurve_xapian_db_iter_next
  - fts_flatcurve_xapian_db_iter_deinit
  - fts_flatcurve_xapian_write_db_get_do
  - fts_flatcurve_xapian_write_db_get
  - fts_flatcurve_xapian_rename_db
  - fts_flatcurve_xapian_need_optimize
  - fts_flatcurve_xapian_optimize_mailbox
  - fts_flatcurve_xapian_db_add
  - fts_flatcurve_xapian_lock
  - fts_flatcurve_xapian_unlock
  - fts_flatcurve_xapian_db_read_add
  - fts_flatcurve_xapian_create_current
  - fts_flatcurve_xapian_db_populate
  - fts_flatcurve_xapian_write_db_current
  - fts_flatcurve_xapian_read_db
  - fts_flatcurve_xapian_mailbox_check
  - fts_flatcurve_xapian_mailbox_rotate
  - fts_flatcurve_xapian_mailbox_stats
  - fts_flatcurve_database_find_dir
  - fts_flatcurve_database_locate_dir
  - fts_flatcurve_database_terms_fetch
  - fts_flatcurve_database_terms
  - fts_flatcurve_xapian_set_mailbox
  - fts_flatcurve_xapian_check_db_version
  - fts_flatcurve_xapian_uid_exists_db
  - fts_flatcurve_xapian_write_db_by_uid
  - fts_flatcurve_xapian_check_commit_limit
  - fts_flatcurve_xapian_clear_document
  - fts_flatcurve_xapian_close_db
  - fts_flatcurve_xapian_close_dbs
  - fts_flatcurve_xapian_refresh
  - fts_flatcurve_xapian_close
  - fts_flatcurve_xapian_get_last_uid_query
  - fts_flatcurve_xapian_get_last_uid
  - fts_flatcurve_xapian_uid_exists
  - fts_flatcurve_xapian_expunge
  - fts_flatcurve_xapian_init_msg
  - fts_flatcurve_xapian_index_header
  - fts_flatcurve_xapian_index_body
  - fts_flatcurve_xapian_delete_index
  - fts_flatcurve_xapian_optimize_rebuild
  - fts_flatcurve_xapian_optimize_box_do
  - fts_flatcurve_xapian_optimize_box
  - fts_flatcurve_build_query_arg_term
  - fts_flatcurve_build_query_arg
  - fts_flatcurve_xapian_build_query_match_all
  - fts_flatcurve_xapian_build_query
  - fts_flatcurve_xapian_query_iter_init
  - fts_flatcurve_xapian_query_iter_next
  - fts_flatcurve_xapian_query_iter_deinit
  - fts_flatcurve_xapian_run_query
  - fts_flatcurve_xapian_destroy_query
  - fts_flatcurve_xapian_library_version
  source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
  types:
    enum:
    - enumerators:
      - name: FLATCURVE_XAPIAN_DB_TYPE_INDEX
      - name: FLATCURVE_XAPIAN_DB_TYPE_UNKNOWN
      - name: FLATCURVE_XAPIAN_DB_TYPE_LOCK
      - name: FLATCURVE_XAPIAN_DB_TYPE_OPTIMIZE
      - name: FLATCURVE_XAPIAN_DB_TYPE_CURRENT
      item_type: enum
      name: flatcurve_xapian_db_type
      pos:
        line_end: 125
        line_start: 119
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - enumerators:
      - name: FLATCURVE_XAPIAN_DB_NOCREATE_CURRENT
        value: BIT(0)
      - name: FLATCURVE_XAPIAN_DB_NOCLOSE_CURRENT
        value: BIT(2)
      - name: FLATCURVE_XAPIAN_DB_IGNORE_EMPTY
        value: BIT(1)
      item_type: enum
      name: flatcurve_xapian_db_opts
      pos:
        line_end: 191
        line_start: 187
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - enumerators:
      - name: FLATCURVE_XAPIAN_WDB_CREATE
        value: BIT(0)
      item_type: enum
      name: flatcurve_xapian_wdb
      pos:
        line_end: 195
        line_start: 193
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - enumerators:
      - name: FLATCURVE_XAPIAN_DB_CLOSE_WDB_COMMIT
        value: BIT(0)
      - name: FLATCURVE_XAPIAN_DB_CLOSE_MBOX
        value: BIT(4)
      - name: FLATCURVE_XAPIAN_DB_CLOSE_WDB
        value: BIT(1)
      - name: FLATCURVE_XAPIAN_DB_CLOSE_DB
        value: BIT(2)
      - name: FLATCURVE_XAPIAN_DB_CLOSE_ROTATE
        value: BIT(3)
      item_type: enum
      name: flatcurve_xapian_db_close
      pos:
        line_end: 203
        line_start: 197
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    preproc_defs:
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_DB_PREFIX
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"index."'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_DB_CURRENT_PREFIX
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"current."'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_DB_OPTIMIZE
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"optimize"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_ALL_HEADERS_PREFIX
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"A"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_BOOLEAN_FIELD_PREFIX
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"B"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_HEADER_PREFIX
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"H"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_ALL_HEADERS_QP
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"allhdrs"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_HEADER_BOOL_QP
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"hdr_bool"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_HEADER_QP
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"hdr_"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_BODY_QP
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"body"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_DB_KEY_PREFIX
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"dovecot."'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_DB_VERSION_KEY
      pos:
        line_end: 100
        line_start: 98
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: FLATCURVE_XAPIAN_DB_KEY_PREFIX FTS_FLATCURVE_LABEL
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_DB_VERSION
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '1'
    - item_type: preproc_def
      name: FLATCURVE_DBW_LOCK_RETRY_SECS
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '1'
    - item_type: preproc_def
      name: FLATCURVE_DBW_LOCK_RETRY_MAX
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '60'
    - item_type: preproc_def
      name: FLATCURVE_MANUAL_OPTIMIZE_COMMIT_LIMIT
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '500'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_LOCK_FNAME
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '"flatcurve-lock"'
    - item_type: preproc_def
      name: FLATCURVE_XAPIAN_LOCK_TIMEOUT_SECS
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
      type_or_value: '5'
    structs:
    - fields:
      - name: '*fname'
        type: char
      - name: '*path'
        type: char
      item_type: struct
      name: flatcurve_xapian_db_path
      pos:
        line_end: 117
        line_start: 114
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - fields:
      - name: '*db'
        type: Xapian::Database
      - name: '*dbw'
        type: Xapian::WritableDatabase
      - name: '*dbpath'
        type: struct flatcurve_xapian_db_path
      - name: changes
        type: unsigned int
      - name: type
        type: enum flatcurve_xapian_db_type
      item_type: struct
      name: flatcurve_xapian_db
      pos:
        line_end: 133
        line_start: 127
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - fields:
      - name: '*dbw_current'
        type: struct flatcurve_xapian_db
      - name: '*db_read'
        type: Xapian::Database
      - name: (xapian_db)
        type: HASH_TABLE_TYPE
      - name: shards
        type: unsigned int
      - name: '*lock'
        type: struct file_lock
      - name: '*lock_path'
        type: char
      - name: pool
        type: pool_t
      - name: '*doc'
        type: Xapian::Document
      - name: doc_uid
        type: uint32_t
      - name: doc_updates
        type: unsigned int
      - name: doc_created
        type: bool
      - name: deinit
        type: bool
      item_type: struct
      name: flatcurve_xapian
      pos:
        line_end: 162
        line_start: 136
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - fields:
      - name: '*query'
        type: Xapian::Query
      item_type: struct
      name: flatcurve_fts_query_xapian_maybe
      pos:
        line_end: 166
        line_start: 164
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - fields:
      - name: '*query'
        type: Xapian::Query
      - name: and_search
        type: bool
      - name: maybe
        type: bool
      - name: start
        type: bool
      item_type: struct
      name: flatcurve_fts_query_xapian
      pos:
        line_end: 175
        line_start: 168
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - fields:
      - name: '*backend'
        type: struct flatcurve_fts_backend
      - name: '*dirp'
        type: DIR
      - name: '*error'
        type: char
      - name: '*path'
        type: struct flatcurve_xapian_db_path
      - name: type
        type: enum flatcurve_xapian_db_type
      item_type: struct
      name: flatcurve_xapian_db_iter
      pos:
        line_end: 185
        line_start: 177
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    - fields:
      - name: '*backend'
        type: struct flatcurve_fts_backend
      - name: '*query'
        type: struct flatcurve_fts_query
      - name: '*result'
        type: struct fts_flatcurve_xapian_query_result
      - name: '*error'
        type: char
      - name: '*db'
        type: Xapian::Database
      - name: '*enquire'
        type: Xapian::Enquire
      - name: mset_iter
        type: Xapian::MSetIterator
      - name: m
        type: Xapian::MSet
      - name: init
        type: bool
      - name: main_query
        type: bool
      item_type: struct
      name: fts_flatcurve_xapian_query_iter
      pos:
        line_end: 217
        line_start: 206
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: score
        type: double
      - name: uid
        type: uint32_t
      - name: maybe
        type: bool
      item_type: struct
      name: fts_flatcurve_xapian_query_result
      pos:
        line_end: 11
        line_start: 6
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.h
    - fields:
      - name: errors
        type: int
      - name: shards
        type: unsigned int
      item_type: struct
      name: fts_flatcurve_xapian_db_check
      pos:
        line_end: 16
        line_start: 13
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.h
    - fields:
      - name: messages
        type: int
      - name: shards
        type: unsigned int
      - name: version
        type: unsigned int
      item_type: struct
      name: fts_flatcurve_xapian_db_stats
      pos:
        line_end: 22
        line_start: 18
        source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-backend-flatcurve-xapian.h
    typedefs: []
    union: []
- function_names:
  - fts_flatcurve_mail_user_deinit
  - fts_flatcurve_mail_user_get
  - fts_flatcurve_mail_user_created
  - fts_flatcurve_plugin_init
  - fts_flatcurve_plugin_deinit
  source_file: /src/dovecot/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_fts_flatcurve_dump_sort
  - cmd_fts_flatcurve_dump_array_push
  - cmd_dump_fts_flatcurve_dump_terms
  - array_foreach_elem
  - cmd_dump_fts_flatcurve_bundle
  - test_dump_fts_flatcurve_bundle
  - doveadm_dump_flatcurve_init
  source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: HEADER_TERMS
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
      type_or_value: 'TRUE'
    - item_type: preproc_def
      name: PAYLOAD_TERMS
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
      type_or_value: '!HEADER_TERMS'
    structs:
    - fields:
      - name: header
        type: bool
      - name: '*term'
        type: char
      - name: count
        type: unsigned int
      item_type: struct
      name: fts_flatcurve_dump_term
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/dovecot/src/plugins/fts-flatcurve/doveadm-dump-flatcurve.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_quota_root_get_name
  - quota_reply_write
  - cmd_getquotaroot
  - parse_quota_root
  - cmd_getquota
  - cmd_setquota
  - imap_quota_client_created
  - imap_quota_plugin_init
  - imap_quota_plugin_deinit
  source_file: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: QUOTA_USER_SEPARATOR
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/plugins/imap-quota/imap-quota-plugin.c
      type_or_value: ''':'''
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/acl/acl-shared-storage.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ACL_LIST_ITERATE_CONTEXT
  - acl_mailbox_list_get_backend
  - acl_mailbox_list_have_right
  - acl_mailbox_try_list_fast
  - acl_mailbox_list_iter_init_shared
  - acl_mailbox_list_iter_init
  - acl_mailbox_list_iter_next_info
  - acl_mailbox_list_iter_get_name
  - iter_is_listing_all_children
  - iter_mailbox_has_visible_children
  - acl_mailbox_list_info_is_visible
  - acl_mailbox_list_iter_check_autocreate_acls
  - acl_mailbox_list_iter_next
  - acl_mailbox_list_iter_deinit
  - acl_mailbox_list_deinit
  - acl_storage_rights_ctx_init
  - acl_list_init_backend
  - acl_mailbox_list_init_shared
  - acl_mailbox_list_init_default
  - acl_mailbox_list_created
  source_file: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PRESERVE_MAILBOX_FLAGS
      pos:
        line_end: 333
        line_start: 332
        source_file: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
      type_or_value: (MAILBOX_SUBSCRIBED | MAILBOX_CHILD_SUBSCRIBED)
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_list_iterate_module_context
      - name: '*lookup_boxes'
        type: struct mailbox_tree_context
      - name: info
        type: struct mailbox_info
      - name: sep
        type: char
      - name: simple_star_glob
        type: bool
      - name: autocreate_acls_checked
        type: bool
      item_type: struct
      name: acl_mailbox_list_iterate_context
      pos:
        line_end: 24
        line_start: 15
        source_file: /src/dovecot/src/plugins/acl/acl-mailbox-list.c
    typedefs: []
    union: []
- function_names:
  - acl_backend_vfile_alloc
  - acl_backend_vfile_init
  - acl_backend_vfile_deinit
  - acl_backend_vfile_get_local_dir
  - acl_backend_vfile_object_init
  - get_parent_mailbox
  - acl_backend_vfile_has_acl
  - acl_backend_vfile_object_init_parent
  - acl_backend_vfile_object_deinit
  - acl_backend_vfile_read
  - acl_backend_vfile_read_with_retry
  - acl_vfile_validity_has_changed
  - acl_backend_vfile_refresh
  - acl_backend_vfile_object_get_mtime
  - acl_backend_vfile_object_refresh_cache
  - acl_backend_vfile_object_last_changed
  source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ACL_ESTALE_RETRY_COUNT
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
      type_or_value: NFS_ESTALE_RETRY_COUNT
    - item_type: preproc_def
      name: ACL_VFILE_DEFAULT_CACHE_SECS
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.c
      type_or_value: '30'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/acl/acl-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ACL_DEFAULT_CACHE_TTL_SECS
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/plugins/acl/acl-settings.h
      type_or_value: '30'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*id'
        type: char
      - name: '*rights'
        type: char
      - name: '*parsed'
        type: struct acl_rights
      item_type: struct
      name: acl_rights_settings
      pos:
        line_end: 11
        line_start: 5
        source_file: /src/dovecot/src/plugins/acl/acl-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*acl_user'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*acl_driver'
        type: char
      - name: acl_cache_ttl
        type: unsigned int
      - name: acl_globals_only
        type: bool
      - name: acl_defaults_from_inbox
        type: bool
      - name: acl_ignore
        type: bool
      - name: acl_dict_index
        type: bool
      item_type: struct
      name: acl_settings
      pos:
        line_end: 26
        line_start: 15
        source_file: /src/dovecot/src/plugins/acl/acl-settings.h
    typedefs: []
    union: []
- function_names:
  - acl_object_init_from_name
  - acl_object_init_from_parent
  - acl_object_deinit
  - acl_object_have_right
  - acl_backend_mask_get_names
  - acl_object_get_my_rights_real
  - acl_object_get_my_rights
  - acl_object_get_default_rights
  - acl_object_last_changed
  - acl_object_update
  - acl_object_list_init
  - acl_object_list_next
  - acl_object_list_deinit
  - acl_default_object_list_init
  - acl_default_object_list_next
  - acl_default_object_list_deinit
  - acl_backend_nonowner_lookups_iter_init
  - acl_backend_nonowner_lookups_iter_next
  - acl_backend_nonowner_lookups_iter_deinit
  - acl_backend_nonowner_lookups_rebuild
  - acl_rights_sort
  - apply_owner_default_rights
  - acl_object_rebuild_cache
  - acl_object_remove_all_access
  source_file: /src/dovecot/src/plugins/acl/acl-api.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SIZEOF_ACL_MASK
  source_file: /src/dovecot/src/plugins/acl/acl-cache.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: size
        type: unsigned int
      - name: mask[1]
        type: unsigned char
      item_type: struct
      name: acl_mask
      pos:
        line_end: 14
        line_start: 6
        source_file: /src/dovecot/src/plugins/acl/acl-cache.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/acl/acl-rights.h
  types:
    enum:
    - enumerators:
      - name: ACL_ID_ANYONE
      - name: ACL_ID_GROUP
      - name: ACL_ID_AUTHENTICATED
      - name: ACL_ID_USER
      - name: ACL_ID_OWNER
      - name: ACL_ID_GROUP_OVERRIDE
      - name: ACL_ID_TYPE_COUNT
      item_type: enum
      name: acl_id_type
      pos:
        line_end: 62
        line_start: 45
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
    - enumerators:
      - name: ACL_MODIFY_MODE_REMOVE
        value: '0'
      - name: ACL_MODIFY_MODE_REPLACE
      - name: ACL_MODIFY_MODE_ADD
      - name: ACL_MODIFY_MODE_CLEAR
      item_type: enum
      name: acl_modify_mode
      pos:
        line_end: 73
        line_start: 64
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_ACL_LOOKUP
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"lookup"'
    - item_type: preproc_def
      name: MAIL_ACL_READ
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"read"'
    - item_type: preproc_def
      name: MAIL_ACL_WRITE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"write"'
    - item_type: preproc_def
      name: MAIL_ACL_WRITE_SEEN
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"write-seen"'
    - item_type: preproc_def
      name: MAIL_ACL_WRITE_DELETED
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"write-deleted"'
    - item_type: preproc_def
      name: MAIL_ACL_INSERT
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"insert"'
    - item_type: preproc_def
      name: MAIL_ACL_POST
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"post"'
    - item_type: preproc_def
      name: MAIL_ACL_EXPUNGE
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"expunge"'
    - item_type: preproc_def
      name: MAIL_ACL_CREATE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"create"'
    - item_type: preproc_def
      name: MAIL_ACL_DELETE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"delete"'
    - item_type: preproc_def
      name: MAIL_ACL_ADMIN
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"admin"'
    - item_type: preproc_def
      name: ACL_ID_NAME_ANYONE
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"anyone"'
    - item_type: preproc_def
      name: ACL_ID_NAME_AUTHENTICATED
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"authenticated"'
    - item_type: preproc_def
      name: ACL_ID_NAME_OWNER
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"owner"'
    - item_type: preproc_def
      name: ACL_ID_NAME_USER_PREFIX
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"user="'
    - item_type: preproc_def
      name: ACL_ID_NAME_GROUP_PREFIX
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"group="'
    - item_type: preproc_def
      name: ACL_ID_NAME_GROUP_OVERRIDE_PREFIX
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
      type_or_value: '"group-override="'
    structs:
    - fields:
      - name: letter
        type: char
      - name: '*name'
        type: char
      item_type: struct
      name: acl_letter_map
      pos:
        line_end: 39
        line_start: 36
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
    - fields:
      - name: id_type
        type: enum acl_id_type
      - name: '*identifier'
        type: char
      - name: '*const *rights'
        type: char
      - name: '*const *neg_rights'
        type: char
      - name: global
        type: bool
      item_type: struct
      name: acl_rights
      pos:
        line_end: 89
        line_start: 75
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
    - fields:
      - name: rights
        type: struct acl_rights
      - name: modify_mode
        type: enum acl_modify_mode
      - name: neg_modify_mode
        type: enum acl_modify_mode
      - name: last_change
        type: time_t
      item_type: struct
      name: acl_rights_update
      pos:
        line_end: 104
        line_start: 94
        source_file: /src/dovecot/src/plugins/acl/acl-rights.h
    typedefs: []
    union: []
- function_names:
  - acl_backend_find
  - acl_backend_init_auto
  - acl_backend_deinit
  - acl_backend_get_acl_username
  - acl_backend_user_is_authenticated
  - acl_backend_user_is_owner
  - acl_backend_user_name_equals
  - acl_backend_user_is_in_group
  - acl_backend_rights_match_me
  - acl_backend_lookup_right
  - acl_backend_get_default_object
  - acl_backend_get_default_rights
  - acl_backend_get_mailbox_acl
  - acl_backend_register
  - acl_backend_unregister
  source_file: /src/dovecot/src/plugins/acl/acl-backend.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*prev'
        type: struct acl_backend_entry
      - name: '*v'
        type: struct acl_backend_vfuncs
      item_type: struct
      name: acl_backend_entry
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/dovecot/src/plugins/acl/acl-backend.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/acl/acl-storage.h
  types:
    enum:
    - enumerators:
      - name: ACL_STORAGE_RIGHT_LOOKUP
      - name: ACL_STORAGE_RIGHT_READ
      - name: ACL_STORAGE_RIGHT_WRITE_DELETED
      - name: ACL_STORAGE_RIGHT_WRITE
      - name: ACL_STORAGE_RIGHT_WRITE_SEEN
      - name: ACL_STORAGE_RIGHT_INSERT
      - name: ACL_STORAGE_RIGHT_POST
      - name: ACL_STORAGE_RIGHT_EXPUNGE
      - name: ACL_STORAGE_RIGHT_CREATE
      - name: ACL_STORAGE_RIGHT_DELETE
      - name: ACL_STORAGE_RIGHT_ADMIN
      - name: ACL_STORAGE_RIGHT_COUNT
      item_type: enum
      name: acl_storage_rights
      pos:
        line_end: 21
        line_start: 7
        source_file: /src/dovecot/src/plugins/acl/acl-storage.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_storage_get_acl_list_path_type
  source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ACL_FILENAME
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
      type_or_value: '"dovecot-acl"'
    - item_type: preproc_def
      name: ACLLIST_FILENAME
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
      type_or_value: '"dovecot-acl-list"'
    - item_type: preproc_def
      name: ACL_VFILE_VALIDITY_MTIME_NOTFOUND
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
      type_or_value: '0'
    - item_type: preproc_def
      name: ACL_VFILE_VALIDITY_MTIME_NOACCESS
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
      type_or_value: '-1'
    structs:
    - fields:
      - name: last_check
        type: time_t
      - name: last_read_time
        type: time_t
      - name: last_mtime
        type: time_t
      - name: last_size
        type: off_t
      item_type: struct
      name: acl_vfile_validity
      pos:
        line_end: 18
        line_start: 12
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
    - fields:
      - name: global_validity
        type: struct acl_vfile_validity
      item_type: struct
      name: acl_backend_vfile_validity
      pos:
        line_end: 22
        line_start: 20
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
    - fields:
      - name: aclobj
        type: struct acl_object
      - name: '*local_path'
        type: char
      - name: failed
        type: bool
      item_type: struct
      name: acl_object_vfile
      pos:
        line_end: 29
        line_start: 24
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
    - fields:
      - name: mtime
        type: time_t
      - name: '*name'
        type: char
      item_type: struct
      name: acl_backend_vfile_acllist
      pos:
        line_end: 34
        line_start: 31
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
    - fields:
      - name: backend
        type: struct acl_backend
      - name: acllist_pool
        type: pool_t
      - name: acllist_last_check
        type: time_t
      - name: acllist_mtime
        type: time_t
      - name: acllist_change_counter
        type: unsigned int
      - name: cache_secs
        type: unsigned int
      - name: rebuilding_acllist
        type: bool
      - name: iterating_acllist
        type: bool
      item_type: struct
      name: acl_backend_vfile
      pos:
        line_end: 49
        line_start: 36
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile.h
    typedefs: []
    union: []
- function_names:
  - acl_cache_init
  - acl_cache_deinit
  - acl_cache_free_object_cache
  - acl_cache_mask_init_real
  - acl_cache_mask_init
  - acl_cache_mask_dup
  - acl_cache_mask_deinit
  - acl_cache_right_lookup
  - acl_cache_flush
  - acl_cache_flush_all
  - acl_cache_update_rights_mask
  - acl_cache_object_get
  - acl_cache_update
  - acl_cache_set_validity
  - acl_cache_get_validity
  - acl_cache_get_names
  - acl_cache_my_current_rights_recalculate
  - acl_cache_get_my_rights
  - acl_cache_mask_isset
  source_file: /src/dovecot/src/plugins/acl/acl-cache.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DEFAULT_ACL_RIGHTS_COUNT
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/acl/acl-cache.c
      type_or_value: '64'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*my_rights'
        type: struct acl_mask
      - name: '*my_current_rights'
        type: struct acl_mask
      item_type: struct
      name: acl_object_cache
      pos:
        line_end: 17
        line_start: 12
        source_file: /src/dovecot/src/plugins/acl/acl-cache.c
    - fields:
      - name: '*backend'
        type: struct acl_backend
      - name: validity_rec_size
        type: size_t
      - name: right_names_pool
        type: pool_t
      item_type: struct
      name: acl_cache
      pos:
        line_end: 34
        line_start: 19
        source_file: /src/dovecot/src/plugins/acl/acl-cache.c
    typedefs: []
    union: []
- function_names:
  - acllist_clear
  - acl_list_get_root_dir
  - acl_list_get_path
  - acl_backend_vfile_acllist_read
  - acl_backend_vfile_acllist_refresh
  - acllist_append
  - acl_backend_vfile_acllist_try_rebuild
  - acl_backend_vfile_acllist_rebuild
  - acl_backend_vfile_acllist_find
  - acl_backend_vfile_acllist_verify
  - acl_backend_vfile_nonowner_iter_init
  - acl_backend_vfile_nonowner_iter_next
  - acl_backend_vfile_nonowner_iter_deinit
  - acl_backend_vfile_nonowner_lookups_rebuild
  source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ctx
        type: struct acl_mailbox_list_context
      - name: idx
        type: unsigned int
      item_type: struct
      name: acl_mailbox_list_context_vfile
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile-acllist.c
    typedefs: []
    union: []
- function_names:
  - ACL_CONTEXT
  - ACL_CONTEXT_REQUIRE
  - ACL_LIST_CONTEXT
  - ACL_LIST_CONTEXT_REQUIRE
  - ACL_USER_CONTEXT
  - ACL_USER_CONTEXT_REQUIRE
  source_file: /src/dovecot/src/plugins/acl/acl-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*acl_lookup_dict'
        type: struct acl_lookup_dict
      item_type: struct
      name: acl_user
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/dovecot/src/plugins/acl/acl-plugin.h
    - fields:
      - name: '*backend'
        type: struct acl_backend
      - name: acl_storage_right_idx[ACL_STORAGE_RIGHT_COUNT]
        type: unsigned int
      item_type: struct
      name: acl_storage_rights_context
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/dovecot/src/plugins/acl/acl-plugin.h
    - fields:
      - name: module_ctx
        type: union mailbox_list_module_context
      - name: rights
        type: struct acl_storage_rights_context
      - name: last_shared_add_check
        type: time_t
      item_type: struct
      name: acl_mailbox_list
      pos:
        line_end: 37
        line_start: 32
        source_file: /src/dovecot/src/plugins/acl/acl-plugin.h
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: '*aclobj'
        type: struct acl_object
      - name: '*set'
        type: struct acl_settings
      - name: skip_acl_checks
        type: bool
      - name: acl_enabled
        type: bool
      - name: no_read_right
        type: bool
      item_type: struct
      name: acl_mailbox
      pos:
        line_end: 46
        line_start: 39
        source_file: /src/dovecot/src/plugins/acl/acl-plugin.h
    typedefs: []
    union: []
- function_names:
  - acl_ns_prefix_exists
  - acl_shared_namespace_add
  - acl_shared_namespaces_add
  source_file: /src/dovecot/src/plugins/acl/acl-shared-storage.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SHARED_NS_RETRY_SECS
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/plugins/acl/acl-shared-storage.c
      type_or_value: (60*60)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/acl/acl-api.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_ATTRIBUTE_PREFIX_ACL
      pos:
        line_end: 15
        line_start: 13
        source_file: /src/dovecot/src/plugins/acl/acl-api.h
      type_or_value: MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT"acl/"
    structs: []
    typedefs: []
    union: []
- function_names:
  - acl_user_deinit
  - acl_mail_user_created
  source_file: /src/dovecot/src/plugins/acl/acl-storage.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - acl_backend_vfile_update_begin
  - vfile_object_modify_right
  - vfile_object_add_right
  - vfile_write_right
  - acl_backend_vfile_update_write
  - acl_backend_vfile_update_cache
  - acl_backend_vfile_object_update
  source_file: /src/dovecot/src/plugins/acl/acl-backend-vfile-update.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - acl_attribute_update_acl
  - acl_attribute_get_acl
  - acl_have_attribute_rights
  - acl_attribute_set
  - acl_attribute_get
  - acl_attribute_iter_init
  - acl_attribute_iter_next_acl
  - acl_attribute_iter_next
  - acl_attribute_iter_deinit
  source_file: /src/dovecot/src/plugins/acl/acl-attributes.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: iter
        type: struct mailbox_attribute_iter
      - name: '*super'
        type: struct mailbox_attribute_iter
      - name: '*acl_iter'
        type: struct acl_object_list_iter
      - name: '*acl_name'
        type: string_t
      - name: failed
        type: bool
      item_type: struct
      name: acl_mailbox_attribute_iter
      pos:
        line_end: 17
        line_start: 9
        source_file: /src/dovecot/src/plugins/acl/acl-attributes.c
    typedefs: []
    union: []
- function_names:
  - acl_lookup_dict_init
  - acl_lookup_dict_deinit
  - acl_lookup_dict_is_enabled
  - acl_lookup_dict_write_rights_id
  - acl_rights_is_same_user
  - acl_lookup_dict_rebuild_add_backend
  - acl_lookup_dict_rebuild_update
  - acl_lookup_dict_rebuild
  - acl_lookup_dict_iterate_read
  - acl_lookup_dict_iterate_visible_init
  - array_foreach_elem
  - acl_lookup_dict_iterate_visible_next
  - acl_lookup_dict_iterate_visible_deinit
  source_file: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DICT_SHARED_BOXES_PATH
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
      type_or_value: '"shared-boxes/"'
    - item_type: preproc_def
      name: DICT_SHARED_USER_BOXES_PATH_REV
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
      type_or_value: '"shared-user-boxes-rev/"'
    structs:
    - fields:
      - name: '*user'
        type: struct mail_user
      - name: '*dict'
        type: struct dict
      - name: '*event'
        type: struct event
      item_type: struct
      name: acl_lookup_dict
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*dict'
        type: struct acl_lookup_dict
      - name: iter_value_pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: iter_idx
        type: unsigned int
      - name: failed
        type: bool
      item_type: struct
      name: acl_lookup_dict_iter
      pos:
        line_end: 36
        line_start: 26
        source_file: /src/dovecot/src/plugins/acl/acl-lookup-dict.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/acl/acl-lookup-dict.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - acl_rights_settings_check
  - acl_settings_check
  source_file: /src/dovecot/src/plugins/acl/acl-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_acl_rights_sort
  - main
  source_file: /src/dovecot/src/plugins/acl/test-acl.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - acl_plugin_init
  - acl_plugin_deinit
  source_file: /src/dovecot/src/plugins/acl/acl-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - acl_rights_write_id
  - acl_rights_get_id
  - is_standard_right
  - acl_rights_update_import
  - acl_rights_export
  - acl_rights_parse_line
  - acl_rights_dup
  - acl_rights_cmp
  - acl_rights_has_nonowner_lookup_changes
  - acl_identifier_parse
  - acl_right_names_alloc
  - acl_right_names_parse
  - acl_right_names_write
  - acl_right_names_merge
  - acl_right_names_modify
  source_file: /src/dovecot/src/plugins/acl/acl-rights.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/acl/acl-api-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*(*alloc)(void)'
        type: struct acl_backend
      - name: (*init)(struct acl_backend *backend, const char **error_r)
        type: int
      - name: (*deinit)(struct acl_backend *backend)
        type: void
      - name: "*\n\t\t(*nonowner_lookups_iter_init)(struct acl_backend *backend)"
        type: struct acl_mailbox_list_context
      - name: "(*nonowner_lookups_iter_next)(struct acl_mailbox_list_context *ctx,\n\t\t\t\t\t
          \ const char **name_r)"
        type: bool
      - name: "(*nonowner_lookups_iter_deinit)\n\t\t(struct acl_mailbox_list_context
          *ctx)"
        type: int
      - name: (*nonowner_lookups_rebuild)(struct acl_backend *backend)
        type: int
      - name: "*(*object_init)(struct acl_backend *backend,\n\t\t\t\t\t  const char
          *name)"
        type: struct acl_object
      - name: "*(*object_init_parent)(struct acl_backend *backend,\n\t\t\t\t\t\t const
          char *child_name)"
        type: struct acl_object
      - name: (*object_deinit)(struct acl_object *aclobj)
        type: void
      - name: (*object_refresh_cache)(struct acl_object *aclobj)
        type: int
      - name: "(*object_update)(struct acl_object *aclobj,\n\t\t\t     const struct
          acl_rights_update *update)"
        type: int
      - name: (*last_changed)(struct acl_object *aclobj, time_t *last_changed_r)
        type: int
      - name: "*\n\t\t(*object_list_init)(struct acl_object *aclobj)"
        type: struct acl_object_list_iter
      - name: "(*object_list_next)(struct acl_object_list_iter *iter,\n\t\t\t\tstruct
          acl_rights *rights_r)"
        type: bool
      - name: (*object_list_deinit)(struct acl_object_list_iter *iter)
        type: int
      item_type: struct
      name: acl_backend_vfuncs
      pos:
        line_end: 36
        line_start: 6
        source_file: /src/dovecot/src/plugins/acl/acl-api-private.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*set'
        type: struct acl_settings
      - name: '*username'
        type: char
      - name: '*event'
        type: struct event
      - name: '*list'
        type: struct mailbox_list
      - name: '*cache'
        type: struct acl_cache
      - name: '*default_aclobj'
        type: struct acl_object
      - name: '*default_aclmask'
        type: struct acl_mask
      - name: '*const *default_rights'
        type: char
      - name: '*v'
        type: struct acl_backend_vfuncs
      - name: owner
        type: bool
      item_type: struct
      name: acl_backend
      pos:
        line_end: 54
        line_start: 38
        source_file: /src/dovecot/src/plugins/acl/acl-api-private.h
    - fields:
      - name: '*backend'
        type: struct acl_backend
      - name: empty
        type: bool
      - name: failed
        type: bool
      - name: '*error'
        type: char
      item_type: struct
      name: acl_mailbox_list_context
      pos:
        line_end: 62
        line_start: 56
        source_file: /src/dovecot/src/plugins/acl/acl-api-private.h
    - fields:
      - name: '*backend'
        type: struct acl_backend
      - name: '*name'
        type: char
      - name: rights_pool
        type: pool_t
      - name: (acl_rights)
        type: ARRAY_TYPE
      item_type: struct
      name: acl_object
      pos:
        line_end: 70
        line_start: 64
        source_file: /src/dovecot/src/plugins/acl/acl-api-private.h
    - fields:
      - name: '*aclobj'
        type: struct acl_object
      - name: pool
        type: pool_t
      - name: '*rights'
        type: struct acl_rights
      - name: idx
        type: unsigned int
      - name: empty
        type: bool
      - name: failed
        type: bool
      - name: '*error'
        type: char
      item_type: struct
      name: acl_object_list_iter
      pos:
        line_end: 82
        line_start: 72
        source_file: /src/dovecot/src/plugins/acl/acl-api-private.h
    typedefs: []
    union: []
- function_names:
  - cmd_acl_mailbox_open
  - cmd_acl_get_right
  - cmd_acl_get_mailbox
  - cmd_acl_get_run
  - cmd_acl_get_init
  - cmd_acl_get_alloc
  - cmd_acl_rights_run
  - cmd_acl_rights_init
  - cmd_acl_rights_alloc
  - cmd_acl_mailbox_update
  - cmd_acl_set_run
  - cmd_acl_set_init
  - cmd_acl_change_alloc
  - cmd_acl_set_alloc
  - cmd_acl_add_alloc
  - cmd_acl_remove_alloc
  - cmd_acl_delete_run
  - cmd_acl_delete_init
  - cmd_acl_delete_alloc
  - cmd_acl_recalc_run
  - cmd_acl_recalc_alloc
  - cmd_acl_debug_mailbox_open
  - cmd_acl_debug_mailbox
  - cmd_acl_debug_run
  - cmd_acl_debug_init
  - cmd_acl_debug_alloc
  - doveadm_acl_plugin_init
  - doveadm_acl_plugin_deinit
  source_file: /src/dovecot/src/plugins/acl/doveadm-acl.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ctx
        type: struct doveadm_mail_cmd_context
      - name: '*mailbox'
        type: char
      - name: '*id'
        type: char
      - name: '*const *rights'
        type: char
      - name: modify_mode
        type: enum acl_modify_mode
      - name: get_match_me
        type: bool
      item_type: struct
      name: doveadm_acl_cmd_context
      pos:
        line_end: 19
        line_start: 12
        source_file: /src/dovecot/src/plugins/acl/doveadm-acl.c
    typedefs: []
    union: []
- function_names:
  - ACL_MAIL_CONTEXT
  - acl_mailbox_get_aclobj
  - acl_mailbox_right_lookup
  - acl_is_readonly
  - acl_mailbox_free
  - acl_mailbox_copy_acls_from_parent
  - acl_mailbox_create
  - acl_mailbox_update
  - acl_mailbox_fail_not_found
  - acl_mailbox_delete
  - acl_mailbox_rename
  - acl_get_write_rights
  - acl_transaction_set_failure
  - acl_mail_update_flags
  - acl_mail_update_keywords
  - acl_mail_expunge
  - acl_mail_allocated
  - acl_save_get_flags
  - acl_save_begin
  - acl_copy_has_rights
  - acl_copy
  - acl_transaction_commit
  - acl_mailbox_exists
  - acl_mailbox_have_extra_attribute_rights
  - acl_mailbox_open_check_acl
  - acl_mailbox_open
  - acl_mailbox_get_status
  - acl_mailbox_allocated
  - acl_mailbox_update_removed_id
  - acl_mailbox_update_acl
  source_file: /src/dovecot/src/plugins/acl/acl-mailbox.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_transaction_module_context
      item_type: struct
      name: acl_transaction_context
      pos:
        line_end: 22
        line_start: 20
        source_file: /src/dovecot/src/plugins/acl/acl-mailbox.c
    typedefs: []
    union: []
- function_names:
  - MAIL_COMPRESS_CONTEXT
  - MAIL_COMPRESS_MAIL_CONTEXT
  - MAIL_COMPRESS_USER_CONTEXT
  - DEF
  - mail_compress_mailbox_is_permail
  - mail_compress_mail_cache_close
  - mail_compress_mail_cache_open
  - mail_compress_istream_opened
  - mail_compress_mail_close
  - mail_compress_mail_allocated
  - mail_compress_mail_save_finish
  - mail_compress_mail_save_compress_begin
  - mail_compress_permail_alloc_init
  - mail_compress_mailbox_open_input
  - mail_compress_mailbox_open
  - mail_compress_mailbox_close
  - mail_compress_mailbox_allocated
  - mail_compress_mail_user_deinit
  - mail_compress_mail_user_created
  - mail_compress_plugin_init
  - mail_compress_plugin_deinit
  source_file: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_INBUF_SIZE
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
      type_or_value: (1024*1024)
    - item_type: preproc_def
      name: MAIL_COMPRESS_MAIL_CACHE_EXPIRE_MSECS
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
      type_or_value: (60*1000)
    structs:
    - fields:
      - name: module_ctx
        type: union mail_module_context
      - name: verifying_save
        type: bool
      item_type: struct
      name: mail_compress_mail
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    - fields:
      - name: '*to'
        type: struct timeout
      - name: '*box'
        type: struct mailbox
      - name: uid
        type: uint32_t
      - name: '*input'
        type: struct istream
      item_type: struct
      name: mail_compress_mail_cache
      pos:
        line_end: 38
        line_start: 32
        source_file: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: cache
        type: struct mail_compress_mail_cache
      - name: '*save_handler'
        type: struct compression_handler
      item_type: struct
      name: mail_compress_user
      pos:
        line_end: 46
        line_start: 40
        source_file: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*mail_compress_write_method'
        type: char
      item_type: struct
      name: mail_compress_settings
      pos:
        line_end: 6
        line_start: 3
        source_file: /src/dovecot/src/plugins/mail-compress/mail-compress-plugin.h
    typedefs: []
    union: []
- function_names:
  - APPARMOR_USER_CONTEXT
  - DEF
  - apparmor_log_current_context
  - apparmor_mail_user_deinit
  - apparmor_mail_user_created
  - apparmor_plugin_init
  - apparmor_plugin_deinit
  source_file: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: token
        type: unsigned long
      item_type: struct
      name: apparmor_mail_user
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: apparmor_settings
      pos:
        line_end: 33
        line_start: 29
        source_file: /src/dovecot/src/plugins/apparmor/apparmor-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_LUA_FILTER
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-settings.h
      type_or_value: '"mail_lua"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      item_type: struct
      name: mail_lua_settings
      pos:
        line_end: 9
        line_start: 7
        source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_LUA_PLUGIN_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAIL_LUA_USER_CONTEXT
  - mail_lua_call_hook
  - mail_lua_user_deinit_pre
  - mail_lua_user_deinit
  - mail_lua_user_created
  - mail_lua_script_cmp
  - mail_lua_scripts_free
  - mail_lua_script_load
  - mail_lua_plugin_get_script
  - mail_lua_script_call
  - array_foreach_elem
  - mail_lua_var_expand_lua_file
  - mail_lua_var_expand_lua_call
  - mail_lua_plugin_init
  - mail_lua_plugin_deinit
  source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_LUA_USER_CREATED_FN
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
      type_or_value: '"mail_user_created"'
    - item_type: preproc_def
      name: MAIL_LUA_USER_DEINIT_FN
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
      type_or_value: '"mail_user_deinit"'
    - item_type: preproc_def
      name: MAIL_LUA_USER_DEINIT_PRE_FN
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
      type_or_value: '"mail_user_deinit_pre"'
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*script'
        type: struct dlua_script
      item_type: struct
      name: mail_lua_user_context
      pos:
        line_end: 25
        line_start: 22
        source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    - fields:
      - name: '*file'
        type: char
      - name: '*script'
        type: struct dlua_script
      item_type: struct
      name: mail_lua_script
      pos:
        line_end: 149
        line_start: 146
        source_file: /src/dovecot/src/plugins/mail-lua/mail-lua-plugin.c
    typedefs: []
    union: []
- function_names:
  - fts_parser_init
  - fts_parser_text_init
  - data_has_nuls
  - replace_nul_bytes
  - fts_parser_more
  - fts_parser_deinit
  - fts_parsers_unload
  source_file: /src/dovecot/src/plugins/fts/fts-parser.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-api-private.h
  types:
    enum:
    - enumerators:
      - name: FTS_BACKEND_FLAG_BINARY_MIME_PARTS
        value: '0x01'
      - name: FTS_BACKEND_FLAG_FUZZY_SEARCH
        value: '0x08'
      - name: FTS_BACKEND_FLAG_NORMALIZE_INPUT
        value: '0x02'
      - name: FTS_BACKEND_FLAG_BUILD_FULL_WORDS
        value: '0x04'
      - name: FTS_BACKEND_FLAG_TOKENIZED_INPUT
        value: '0x10'
      item_type: enum
      name: fts_backend_flags
      pos:
        line_end: 72
        line_start: 57
        source_file: /src/dovecot/src/plugins/fts/fts-api-private.h
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_GUID_HEX_LENGTH
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/plugins/fts/fts-api-private.h
      type_or_value: (GUID_128_SIZE*2)
    structs:
    - fields:
      - name: '*(*alloc)(void)'
        type: struct fts_backend
      - name: (*init)(struct fts_backend *backend, const char **error_r)
        type: int
      - name: (*deinit)(struct fts_backend *backend)
        type: void
      - name: "(*get_last_uid)(struct fts_backend *backend, struct mailbox *box,\n\t\t\t
          \   uint32_t *last_uid_r)"
        type: int
      - name: "(*is_uid_indexed)(struct fts_backend *backend, struct mailbox *box,\n\t\t\t
          \     uint32_t uid, uint32_t *last_indexed_uid_r)"
        type: int
      - name: "*\n\t\t(*update_init)(struct fts_backend *backend)"
        type: struct fts_backend_update_context
      - name: (*update_deinit)(struct fts_backend_update_context *ctx)
        type: int
      - name: "(*update_set_mailbox)(struct fts_backend_update_context *ctx,\n\t\t\t\t
          \  struct mailbox *box)"
        type: void
      - name: "(*update_expunge)(struct fts_backend_update_context *ctx,\n\t\t\t       uint32_t
          uid)"
        type: void
      - name: "(*update_set_build_key)(struct fts_backend_update_context *ctx,\n\t\t\t\t
          \   const struct fts_backend_build_key *key)"
        type: bool
      - name: (*update_unset_build_key)(struct fts_backend_update_context *ctx)
        type: void
      - name: "(*update_build_more)(struct fts_backend_update_context *ctx,\n\t\t\t\t
          const unsigned char *data, size_t size)"
        type: int
      - name: (*refresh)(struct fts_backend *backend)
        type: int
      - name: (*rescan)(struct fts_backend *backend)
        type: int
      - name: (*optimize)(struct fts_backend *backend)
        type: int
      - name: "(*can_lookup)(struct fts_backend *backend,\n\t\t\t   const struct mail_search_arg
          *args)"
        type: bool
      - name: "(*lookup)(struct fts_backend *backend, struct mailbox *box,\n\t\t      struct
          mail_search_arg *args, enum fts_lookup_flags flags,\n\t\t      struct fts_result
          *result)"
        type: int
      - name: "(*lookup_multi)(struct fts_backend *backend,\n\t\t\t    struct mailbox
          *const boxes[],\n\t\t\t    struct mail_search_arg *args,\n\t\t\t    enum
          fts_lookup_flags flags,\n\t\t\t    struct fts_multi_result *result)"
        type: int
      - name: (*lookup_done)(struct fts_backend *backend)
        type: void
      item_type: struct
      name: fts_backend_vfuncs
      pos:
        line_end: 55
        line_start: 11
        source_file: /src/dovecot/src/plugins/fts/fts-api-private.h
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: loaded
        type: bool
      - name: exclude_is_default
        type: bool
      item_type: struct
      name: fts_header_filters
      pos:
        line_end: 80
        line_start: 74
        source_file: /src/dovecot/src/plugins/fts/fts-api-private.h
    - fields:
      - name: '*name'
        type: char
      - name: flags
        type: enum fts_backend_flags
      - name: v
        type: struct fts_backend_vfuncs
      - name: '*event'
        type: struct event
      - name: '*ns'
        type: struct mail_namespace
      - name: header_filters
        type: struct fts_header_filters
      - name: updating
        type: bool
      item_type: struct
      name: fts_backend
      pos:
        line_end: 92
        line_start: 82
        source_file: /src/dovecot/src/plugins/fts/fts-api-private.h
    - fields:
      - name: '*backend'
        type: struct fts_backend
      - name: '*normalizer'
        type: normalizer_func_t
      - name: '*cur_box'
        type: struct mailbox
      - name: build_key_open
        type: bool
      - name: failed
        type: bool
      item_type: struct
      name: fts_backend_update_context
      pos:
        line_end: 102
        line_start: 94
        source_file: /src/dovecot/src/plugins/fts/fts-api-private.h
    - fields:
      - name: last_indexed_uid
        type: uint32_t
      - name: settings_checksum
        type: uint32_t
      - name: unused
        type: uint32_t
      item_type: struct
      name: fts_index_header
      pos:
        line_end: 111
        line_start: 104
        source_file: /src/dovecot/src/plugins/fts/fts-api-private.h
    typedefs: []
    union: []
- function_names:
  - fts_indexer_notify
  - fts_indexer_more_int
  - fts_indexer_more
  - fts_indexer_destroy
  - fts_indexer_deinit
  - fts_indexer_input_args
  - fts_indexer_client_connected
  - fts_indexer_idle_timeout
  - fts_indexer_init
  - fts_indexer_cmd
  source_file: /src/dovecot/src/plugins/fts/fts-indexer.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INDEXER_SOCKET_NAME
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/plugins/fts/fts-indexer.c
      type_or_value: '"indexer"'
    - item_type: preproc_def
      name: INDEXER_WAIT_MSECS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/plugins/fts/fts-indexer.c
      type_or_value: '250'
    - item_type: preproc_def
      name: INDEXER_HANDSHAKE
      pos:
        line_end: 295
        line_start: 294
        source_file: /src/dovecot/src/plugins/fts/fts-indexer.c
      type_or_value: '"VERSION\tindexer-client\t1\t0\n"'
    structs:
    - fields:
      - name: conn
        type: struct connection
      - name: '*box'
        type: struct mailbox
      - name: '*ioloop'
        type: struct ioloop
      - name: search_start_time
        type: struct timeval
      - name: status
        type: struct indexer_status
      - name: '*connection_list'
        type: struct connection_list
      - name: notified
        type: bool
      - name: failed
        type: bool
      - name: started
        type: bool
      - name: completed
        type: bool
      item_type: struct
      name: fts_indexer_context
      pos:
        line_end: 37
        line_start: 23
        source_file: /src/dovecot/src/plugins/fts/fts-indexer.c
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/dovecot/src/plugins/fts/xml2text.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmd_search_box
  - cmd_fts_lookup_run
  - cmd_fts_lookup_init
  - cmd_fts_lookup_alloc
  - cmd_fts_expand_run
  - cmd_fts_expand_init
  - cmd_fts_expand_alloc
  - cmd_fts_tokenize_run
  - cmd_fts_tokenize_init
  - cmd_fts_tokenize_alloc
  - fts_namespace_find
  - cmd_fts_optimize_run
  - cmd_fts_optimize_init
  - cmd_fts_optimize_alloc
  - cmd_fts_rescan_run
  - cmd_fts_rescan_init
  - cmd_fts_rescan_alloc
  - doveadm_fts_plugin_init
  - doveadm_fts_plugin_deinit
  source_file: /src/dovecot/src/plugins/fts/doveadm-fts.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ctx
        type: struct doveadm_mail_cmd_context
      - name: '*language'
        type: char
      - name: '*tokens'
        type: char
      item_type: struct
      name: fts_tokenize_cmd_context
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/dovecot/src/plugins/fts/doveadm-fts.c
    - fields:
      - name: ctx
        type: struct doveadm_mail_cmd_context
      - name: '*namespace'
        type: char
      item_type: struct
      name: fts_namespace_cmd_context
      pos:
        line_end: 31
        line_start: 28
        source_file: /src/dovecot/src/plugins/fts/doveadm-fts.c
    typedefs: []
    union: []
- function_names:
  - IS_WORD_WHITESPACE
  - fts_build_parse_content_type
  - fts_build_parse_content_disposition
  - fts_parse_mail_header
  - fts_build_unstructured_header
  - fts_mail_build_ctx_set_lang
  - fts_build_tokenized_hdr_update_lang
  - fts_build_mail_header
  - fts_build_body_begin
  - fts_build_add_tokens_with_filter
  - fts_detect_language
  - fts_build_tokenized
  - fts_build_full_words
  - fts_build_data
  - fts_build_body_block
  - fts_body_parser_finish
  - parse_header_filter
  - array_foreach_elem
  - load_header_filters
  - header_prefix_cmp
  - is_header_indexable
  - fts_build_mail_real
  - fts_build_mail
  source_file: /src/dovecot/src/plugins/fts/fts-build-mail.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_WORD_SIZE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/plugins/fts/fts-build-mail.c
      type_or_value: '1024'
    structs:
    - fields:
      - name: '*mail'
        type: struct mail
      - name: '*update_ctx'
        type: struct fts_backend_update_context
      - name: '*content_type'
        type: char
      - name: '*body_parser'
        type: struct fts_parser
      - name: '*word_buf'
        type: buffer_t
      - name: '*cur_user_lang'
        type: struct language_user
      item_type: struct
      name: fts_mail_build_context
      pos:
        line_end: 37
        line_start: 28
        source_file: /src/dovecot/src/plugins/fts/fts-build-mail.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-user.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fts_plugin_init
  - fts_plugin_deinit
  source_file: /src/dovecot/src/plugins/fts/fts-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-build-mail.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-parser.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*user'
        type: struct mail_user
      - name: '*content_type'
        type: char
      - name: '*content_type_params'
        type: char
      - name: '*content_disposition'
        type: char
      - name: '*event'
        type: struct event
      item_type: struct
      name: fts_parser_context
      pos:
        line_end: 14
        line_start: 6
        source_file: /src/dovecot/src/plugins/fts/fts-parser.h
    - fields:
      - name: '*(*try_init)(struct fts_parser_context *parser_context)'
        type: struct fts_parser
      - name: (*more)(struct fts_parser *parser, struct message_block *block)
        type: void
      - name: (*deinit)(struct fts_parser *parser, const char **retriable_err_msg_r)
        type: int
      - name: (*unload)(void)
        type: void
      item_type: struct
      name: fts_parser_vfuncs
      pos:
        line_end: 21
        line_start: 16
        source_file: /src/dovecot/src/plugins/fts/fts-parser.h
    - fields:
      - name: v
        type: struct fts_parser_vfuncs
      - name: '*utf8_output'
        type: buffer_t
      - name: may_need_retry
        type: bool
      - name: '*retriable_error_msg'
        type: char
      item_type: struct
      name: fts_parser
      pos:
        line_end: 28
        line_start: 23
        source_file: /src/dovecot/src/plugins/fts/fts-parser.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-search-args.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - HAVE_SUBARGS
  - fts_search_serialize
  - fts_search_deserialize_idx
  - fts_search_deserialize
  - fts_search_deserialize_add_idx
  - fts_search_deserialize_add_matches
  - fts_search_deserialize_add_nonmatches
  source_file: /src/dovecot/src/plugins/fts/fts-search-serialize.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - fts_settings_parse_enum
  - fts_settings_parse_decoder
  - fts_settings_check_decoder
  - fts_settings_check
  source_file: /src/dovecot/src/plugins/fts/fts-settings.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FTS_SEARCH_ADD_MISSING_BODY_SEARCH_ONLY
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/plugins/fts/fts-settings.c
      type_or_value: '"body-search-only"'
    - item_type: preproc_def
      name: FTS_DECODER_KEYWORD_NONE
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dovecot/src/plugins/fts/fts-settings.c
      type_or_value: '""'
    - item_type: preproc_def
      name: FTS_DECODER_KEYWORD_TIKA
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dovecot/src/plugins/fts/fts-settings.c
      type_or_value: '"tika"'
    - item_type: preproc_def
      name: FTS_DECODER_KEYWORD_SCRIPT
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dovecot/src/plugins/fts/fts-settings.c
      type_or_value: '"script"'
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: value
        type: int
      item_type: struct
      name: fts_settings_enum_table
      pos:
        line_end: 96
        line_start: 93
        source_file: /src/dovecot/src/plugins/fts/fts-settings.c
    typedefs: []
    union: []
- function_names:
  - TIKA_USER_CONTEXT
  - tika_get_http_client_url
  - fts_tika_parser_response
  - fts_parser_tika_try_init
  - fts_parser_tika_more
  - fts_parser_tika_deinit
  - fts_parser_tika_unload
  source_file: /src/dovecot/src/plugins/fts/fts-parser-tika.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*http_url'
        type: struct http_url
      item_type: struct
      name: fts_parser_tika_user
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    - fields:
      - name: parser
        type: struct fts_parser
      - name: '*user'
        type: struct mail_user
      - name: '*http_req'
        type: struct http_client_request
      - name: '*ioloop'
        type: struct ioloop
      - name: '*io'
        type: struct io
      - name: '*payload'
        type: struct istream
      - name: failed
        type: bool
      item_type: struct
      name: tika_fts_parser
      pos:
        line_end: 33
        line_start: 23
        source_file: /src/dovecot/src/plugins/fts/fts-parser-tika.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-settings.h
  types:
    enum:
    - enumerators:
      - name: FTS_DECODER_NO
      - name: FTS_DECODER_SCRIPT
      - name: FTS_DECODER_TIKA
      item_type: enum
      name: fts_decoder
      pos:
        line_end: 12
        line_start: 8
        source_file: /src/dovecot/src/plugins/fts/fts-settings.h
    preproc_defs:
    - item_type: preproc_def
      name: FTS_FILTER
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/plugins/fts/fts-settings.h
      type_or_value: '"fts"'
    - item_type: preproc_def
      name: FTS_FILTER_DECODER_TIKA
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/plugins/fts/fts-settings.h
      type_or_value: '"fts_decoder_tika"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*decoder_driver'
        type: char
      - name: '*decoder_script_socket_path'
        type: char
      - name: '*decoder_tika_url'
        type: char
      - name: '*driver'
        type: char
      - name: search
        type: bool
      - name: '*search_add_missing'
        type: char
      - name: search_read_fallback
        type: bool
      - name: autoindex_max_recent_msgs
        type: unsigned int
      - name: search_timeout
        type: unsigned int
      - name: message_max_size
        type: uoff_t
      - name: autoindex
        type: bool
      - name: parsed_decoder_driver
        type: enum fts_decoder
      - name: parsed_search_add_missing_body_only
        type: bool
      item_type: struct
      name: fts_settings
      pos:
        line_end: 34
        line_start: 15
        source_file: /src/dovecot/src/plugins/fts/fts-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-api.h
  types:
    enum:
    - enumerators:
      - name: FTS_LOOKUP_FLAG_AND_ARGS
        value: '0x01'
      item_type: enum
      name: fts_lookup_flags
      pos:
        line_end: 15
        line_start: 12
        source_file: /src/dovecot/src/plugins/fts/fts-api.h
    - enumerators:
      - name: FTS_BACKEND_BUILD_KEY_HDR
      - name: FTS_BACKEND_BUILD_KEY_MIME_HDR
      - name: FTS_BACKEND_BUILD_KEY_BODY_PART_BINARY
      - name: FTS_BACKEND_BUILD_KEY_BODY_PART
      item_type: enum
      name: fts_backend_build_key_type
      pos:
        line_end: 26
        line_start: 17
        source_file: /src/dovecot/src/plugins/fts/fts-api.h
    preproc_defs: []
    structs:
    - fields:
      - name: uid
        type: uint32_t
      - name: type
        type: enum fts_backend_build_key_type
      - name: '*part'
        type: struct message_part
      - name: '*hdr_name'
        type: char
      - name: '*body_content_type'
        type: char
      - name: '*body_content_disposition'
        type: char
      item_type: struct
      name: fts_backend_build_key
      pos:
        line_end: 44
        line_start: 28
        source_file: /src/dovecot/src/plugins/fts/fts-api.h
    - fields:
      - name: uid
        type: uint32_t
      - name: score
        type: float
      item_type: struct
      name: fts_score_map
      pos:
        line_end: 49
        line_start: 46
        source_file: /src/dovecot/src/plugins/fts/fts-api.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*search_state'
        type: struct fts_search_state
      - name: '*box'
        type: struct mailbox
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (fts_score_map)
        type: ARRAY_TYPE
      - name: scores_sorted
        type: bool
      item_type: struct
      name: fts_result
      pos:
        line_end: 79
        line_start: 66
        source_file: /src/dovecot/src/plugins/fts/fts-api.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*search_state'
        type: struct fts_search_state
      - name: '*box_results'
        type: struct fts_result
      item_type: struct
      name: fts_multi_result
      pos:
        line_end: 88
        line_start: 81
        source_file: /src/dovecot/src/plugins/fts/fts-api.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-search-serialize.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FTS_USER_CONTEXT
  - FTS_USER_CONTEXT_REQUIRE
  - fts_user_get_settings
  - fts_mail_user_message_max_size
  - fts_mail_user_init
  - fts_mail_user_deinit
  - fts_mail_user_created
  source_file: /src/dovecot/src/plugins/fts/fts-user.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*set'
        type: struct fts_settings
      item_type: struct
      name: fts_user
      pos:
        line_end: 23
        line_start: 20
        source_file: /src/dovecot/src/plugins/fts/fts-user.c
    typedefs: []
    union: []
- function_names:
  - SCRIPT_USER_CONTEXT
  - script_connect
  - script_contents_read
  - script_support_content
  - get_param_and_free_parser
  - init_content_parser
  - get_cd_filename
  - get_ct_filename
  - fts_parser_script_try_init
  - fts_parser_script_more
  - fts_parser_script_deinit
  source_file: /src/dovecot/src/plugins/fts/fts-parser-script.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SCRIPT_HANDSHAKE
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/plugins/fts/fts-parser-script.c
      type_or_value: '"VERSION\tscript\t4\t0\nalarm=10\nnoreply\n"'
    structs:
    - fields:
      - name: '*content_type'
        type: char
      - name: '*const *extensions'
        type: char
      item_type: struct
      name: content
      pos:
        line_end: 24
        line_start: 21
        source_file: /src/dovecot/src/plugins/fts/fts-parser-script.c
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      item_type: struct
      name: fts_parser_script_user
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/dovecot/src/plugins/fts/fts-parser-script.c
    - fields:
      - name: parser
        type: struct fts_parser
      - name: '*event'
        type: struct event
      - name: fd
        type: int
      - name: '*path'
        type: char
      - name: outbuf[IO_BLOCK_SIZE]
        type: unsigned char
      - name: failed
        type: bool
      - name: shutdown
        type: bool
      item_type: struct
      name: script_fts_parser
      pos:
        line_end: 42
        line_start: 32
        source_file: /src/dovecot/src/plugins/fts/fts-parser-script.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-indexer.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fts_search_arg_create_or
  - array_foreach_elem
  - fts_backend_dovecot_expand_tokens
  - fts_backend_dovecot_tokenize_lang
  - fts_search_arg_expand
  - array_foreach_elem
  - fts_search_args_expand_tree
  - fts_search_args_expand
  source_file: /src/dovecot/src/plugins/fts/fts-search-args.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fts_backend_register
  - fts_backend_unregister
  - fts_backend_class_lookup
  - fts_header_filters_init
  - fts_header_filters_deinit
  - fts_backend_init
  - fts_backend_deinit
  - fts_backend_get_last_uid
  - fts_backend_is_uid_indexed_virtual
  - fts_backend_is_uid_indexed
  - fts_backend_is_updating
  - fts_backend_update_init
  - fts_backend_set_cur_mailbox
  - fts_backend_update_deinit
  - fts_backend_update_set_mailbox
  - fts_backend_update_expunge
  - fts_backend_update_set_build_key
  - fts_backend_update_unset_build_key
  - fts_backend_update_build_more
  - fts_backend_cmp
  - fts_backend_virtual_refresh
  - fts_backend_refresh
  - fts_backend_reset_last_uids
  - fts_backend_rescan
  - fts_backend_optimize
  - fts_backend_default_can_lookup
  - fts_backend_can_lookup
  - fts_score_map_sort
  - fts_backend_lookup
  - fts_backend_lookup_multi
  - fts_backend_lookup_done
  - fts_index_get_ext_id
  - fts_index_get_header
  - fts_index_set_header
  - fts_index_set_last_uid
  - fts_index_have_compatible_settings
  - fts_header_want_indexed
  - fts_header_has_language
  - fts_mailbox_get_guid
  source_file: /src/dovecot/src/plugins/fts/fts-api.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FTS_CONTEXT
  - FTS_CONTEXT_REQUIRE
  - FTS_MAIL_CONTEXT
  - FTS_LIST_CONTEXT
  - FTS_LIST_CONTEXT_REQUIRE
  - fts_mailbox_get_last_indexed_uid
  - fts_mailbox_get_status
  - fts_scores_unref
  - fts_try_build_init
  - fts_want_build_args
  - fts_mailbox_search_init
  - fts_mailbox_build_continue
  - fts_mailbox_search_next_nonblock
  - fts_search_apply_results_level
  - fts_search_virtual_uid_is_indexed
  - fts_search_virtual_uid_set_indexed
  - fts_mailbox_search_is_virtual_seq_indexed
  - fts_mailbox_search_is_seq_indexed
  - fts_mailbox_search_next_update_seq
  - fts_mailbox_search_deinit
  - fts_score_cmp
  - fts_mail_get_special
  - fts_mail_precache_init
  - fts_mail_index
  - fts_mail_precache
  - fts_mail_allocated
  - fts_transaction_begin
  - fts_transaction_end
  - fts_transaction_rollback
  - fts_queue_index
  - fts_transaction_commit
  - fts_mailbox_sync_notify
  - fts_sync_deinit
  - fts_save_finish
  - fts_copy
  - fts_mailbox_virtual_match_mail
  - fts_mailbox_search_next_match_mail
  - fts_mailbox_free
  - fts_mailbox_allocated
  - fts_mailbox_list_deinit
  - fts_init_namespace
  - fts_mail_namespaces_added
  - fts_mailbox_list_created
  - fts_mailbox_backend
  - fts_list_backend
  - fts_mailbox_get_settings
  source_file: /src/dovecot/src/plugins/fts/fts-storage.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INDEXER_SOCKET_NAME
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dovecot/src/plugins/fts/fts-storage.c
      type_or_value: '"indexer"'
    - item_type: preproc_def
      name: INDEXER_HANDSHAKE
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/plugins/fts/fts-storage.c
      type_or_value: '"VERSION\tindexer-client\t1\t0\n"'
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_list_module_context
      - name: '*backend'
        type: struct fts_backend
      - name: '*update_ctx'
        type: struct fts_backend_update_context
      - name: update_ctx_refcount
        type: unsigned int
      - name: failed
        type: bool
      item_type: struct
      name: fts_mailbox_list
      pos:
        line_end: 44
        line_start: 37
        source_file: /src/dovecot/src/plugins/fts/fts-storage.c
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: '*set'
        type: struct fts_settings
      - name: '*sync_update_ctx'
        type: struct fts_backend_update_context
      item_type: struct
      name: fts_mailbox
      pos:
        line_end: 50
        line_start: 46
        source_file: /src/dovecot/src/plugins/fts/fts-storage.c
    - fields:
      - name: module_ctx
        type: union mailbox_transaction_module_context
      - name: '*scores'
        type: struct fts_scores
      - name: highest_virtual_uid
        type: uint32_t
      - name: precache_extra_count
        type: unsigned int
      - name: indexing
        type: bool
      - name: precached
        type: bool
      - name: mails_saved
        type: bool
      - name: '*failure_reason'
        type: char
      item_type: struct
      name: fts_transaction_context
      pos:
        line_end: 63
        line_start: 52
        source_file: /src/dovecot/src/plugins/fts/fts-storage.c
    - fields:
      - name: module_ctx
        type: union mail_module_context
      - name: score[30]
        type: char
      - name: virtual_mail
        type: bool
      item_type: struct
      name: fts_mail
      pos:
        line_end: 70
        line_start: 65
        source_file: /src/dovecot/src/plugins/fts/fts-storage.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/doveadm-fts.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-build-private.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fts_parser_html_try_init
  - fts_parser_html_more
  - fts_parser_html_deinit
  source_file: /src/dovecot/src/plugins/fts/fts-parser-html.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: parser
        type: struct fts_parser
      - name: '*html2text'
        type: struct mail_html2text
      - name: '*output'
        type: buffer_t
      item_type: struct
      name: html_fts_parser
      pos:
        line_end: 12
        line_start: 8
        source_file: /src/dovecot/src/plugins/fts/fts-parser-html.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/fts/fts-storage.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: refcount
        type: int
      - name: (fts_score_map)
        type: ARRAY_TYPE
      item_type: struct
      name: fts_scores
      pos:
        line_end: 10
        line_start: 7
        source_file: /src/dovecot/src/plugins/fts/fts-storage.h
    - fields:
      - name: definite_seqs
        type: ARRAY_TYPE
      - name: '*args_matches'
        type: buffer_t
      - name: (fts_score_map)
        type: ARRAY_TYPE
      item_type: struct
      name: fts_search_level
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/dovecot/src/plugins/fts/fts-storage.h
    - fields:
      - name: module_ctx
        type: union mail_search_module_context
      - name: '*backend'
        type: struct fts_backend
      - name: '*box'
        type: struct mailbox
      - name: '*t'
        type: struct mailbox_transaction_context
      - name: '*args'
        type: struct mail_search_args
      - name: flags
        type: enum fts_lookup_flags
      - name: result_pool
        type: pool_t
      - name: '*orig_matches'
        type: buffer_t
      - name: first_unindexed_seq
        type: uint32_t
      - name: next_unindexed_seq
        type: uint32_t
      - name: (virtual_last_indexed)
        type: HASH_TABLE_TYPE
      - name: '*scores'
        type: struct fts_scores
      - name: '*indexer_ctx'
        type: struct fts_indexer_context
      - name: '*search_state'
        type: struct fts_search_state
      - name: virtual_mailbox
        type: bool
      - name: fts_lookup_success
        type: bool
      - name: indexing_timed_out
        type: bool
      - name: virtual_seen_unindexed_gaps
        type: bool
      - name: mailbox_failed
        type: bool
      item_type: struct
      name: fts_search_context
      pos:
        line_end: 48
        line_start: 20
        source_file: /src/dovecot/src/plugins/fts/fts-storage.h
    typedefs: []
    union: []
- function_names:
  - uid_range_to_seqs
  - fts_search_lookup_level_single
  - level_scores_add_vuids
  - mailbox_cmp_fts_backend
  - multi_add_lookup_result
  - fts_search_lookup_level_multi
  - fts_search_lookup_level
  - fts_search_merge_scores_level
  - fts_search_merge_scores
  - fts_search_get_first_missing_uid
  - fts_search_try_lookup
  - fts_search_lookup
  source_file: /src/dovecot/src/plugins/fts/fts-search.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - COMPRESS_FS
  - COMPRESS_FILE
  - DEF
  - fs_compress_alloc
  - fs_compress_init_
  - fs_compress_free
  - fs_compress_file_alloc
  - fs_compress_file_init
  - fs_compress_file_deinit
  - fs_compress_file_close
  - fs_compress_set_metadata
  - fs_compress_read_stream
  - fs_compress_write_stream
  - fs_compress_write_stream_finish
  - fs_compress_init
  - fs_compress_deinit
  source_file: /src/dovecot/src/plugins/fs-compress/fs-compress.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FS_COMPRESS_ISTREAM_MIN_BUFFER_SIZE
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/plugins/fs-compress/fs-compress.c
      type_or_value: '1024'
    structs:
    - fields:
      - name: fs
        type: struct fs
      - name: '*compress_handler'
        type: struct compression_handler
      - name: try_plain
        type: bool
      item_type: struct
      name: compress_fs
      pos:
        line_end: 19
        line_start: 15
        source_file: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    - fields:
      - name: file
        type: struct fs_file
      - name: '*fs'
        type: struct compress_fs
      - name: '*super_read'
        type: struct fs_file
      - name: open_mode
        type: enum fs_open_mode
      - name: '*input'
        type: struct istream
      - name: '*super_output'
        type: struct ostream
      - name: '*temp_output'
        type: struct ostream
      item_type: struct
      name: compress_fs_file
      pos:
        line_end: 30
        line_start: 21
        source_file: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*fs_compress_write_method'
        type: char
      - name: fs_compress_read_plain_fallback
        type: bool
      item_type: struct
      name: fs_compress_settings
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/dovecot/src/plugins/fs-compress/fs-compress.c
    typedefs: []
    union: []
- function_names:
  - LAST_LOGIN_USER_CONTEXT
  - DEF
  - last_login_dict_deinit
  - last_login_user_deinit
  - last_login_dict_commit
  - last_login_mail_user_created
  - last_login_plugin_init
  - last_login_plugin_deinit
  source_file: /src/dovecot/src/plugins/last-login/last-login-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*dict'
        type: struct dict
      - name: '*to'
        type: struct timeout
      item_type: struct
      name: last_login_user
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*last_login_key'
        type: char
      - name: '*last_login_precision'
        type: char
      item_type: struct
      name: last_login_settings
      pos:
        line_end: 27
        line_start: 22
        source_file: /src/dovecot/src/plugins/last-login/last-login-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/last-login/last-login-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - POP3_MIGRATION_CONTEXT
  - POP3_MIGRATION_CONTEXT_REQUIRE
  - POP3_MIGRATION_MAIL_CONTEXT
  - DEF
  - imap_msg_map_uid_cmp
  - pop3_uidl_map_pop3_seq_cmp
  - pop3_uidl_map_uidl_cmp
  - imap_msg_map_uidl_cmp
  - pop3_uidl_map_hdr_cmp
  - imap_msg_map_hdr_cmp
  - header_name_is_valid
  - header_value_want_skip
  - pop3_header_filter_callback
  - pop3_migration_get_hdr_sha1
  - get_cache_idx
  - get_hdr_sha1
  - get_cached_hdr_sha1
  - pop3_mailbox_alloc
  - pop3_map_read
  - pop3_map_read_cached_hdr_hashes
  - map_remove_found_seqs
  - map_read_hdr_hashes
  - pop3_map_read_hdr_hashes
  - imap_map_read
  - imap_map_read_hdr_hashes
  - pop3_uidl_assign_cached
  - pop3_uidl_assign_by_size
  - pop3_uidl_assign_by_hdr_hash
  - imap_uidls_add_to_cache
  - pop3_migration_uidl_sync
  - pop3_migration_uidl_sync_if_needed
  - pop3_migration_get_special
  - pop3_migration_mail_allocated
  - pop3_migration_mailbox_search_init
  - pop3_migration_mailbox_allocated
  - pop3_migration_mail_storage_destroy
  - pop3_migration_mail_storage_created
  - pop3_migration_plugin_init
  - pop3_migration_plugin_deinit
  source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: hdr_sha1[SHA1_RESULTLEN]
        type: unsigned char
      - name: hdr_sha1_set
        type: bool
      item_type: struct
      name: msg_map_common
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    - fields:
      - name: common
        type: struct msg_map_common
      - name: pop3_seq
        type: uint32_t
      - name: imap_uid
        type: uint32_t
      - name: '*pop3_uidl'
        type: char
      - name: size
        type: uoff_t
      item_type: struct
      name: pop3_uidl_map
      pos:
        line_end: 43
        line_start: 33
        source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    - fields:
      - name: common
        type: struct msg_map_common
      - name: uid
        type: uint32_t
      - name: psize
        type: uoff_t
      - name: '*pop3_uidl'
        type: char
      item_type: struct
      name: imap_msg_map
      pos:
        line_end: 51
        line_start: 45
        source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    - fields:
      - name: module_ctx
        type: union mail_storage_module_context
      - name: '*set'
        type: struct pop3_migration_settings
      - name: pop3_all_hdr_sha1_set
        type: bool
      item_type: struct
      name: pop3_migration_mail_storage
      pos:
        line_end: 60
        line_start: 53
        source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: first_unfound_idx
        type: unsigned int
      - name: cache_field
        type: struct mail_cache_field
      - name: cache_field_registered
        type: bool
      - name: uidl_synced
        type: bool
      - name: uidl_sync_failed
        type: bool
      item_type: struct
      name: pop3_migration_mailbox
      pos:
        line_end: 73
        line_start: 62
        source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*mailbox'
        type: char
      - name: all_mailboxes
        type: bool
      - name: ignore_missing_uidls
        type: bool
      - name: ignore_extra_uidls
        type: bool
      - name: skip_size_check
        type: bool
      - name: skip_uidl_cache
        type: bool
      item_type: struct
      name: pop3_migration_settings
      pos:
        line_end: 84
        line_start: 75
        source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    - fields:
      - name: have_eoh
        type: bool
      - name: stop
        type: bool
      item_type: struct
      name: pop3_hdr_context
      pos:
        line_end: 191
        line_start: 188
        source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/pop3-migration/pop3-migration-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_pop3_migration_get_hdr_sha1
  - main
  source_file: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*sha1'
        type: char
      - name: have_eoh
        type: bool
      item_type: struct
      name: "tests[] = {\n\t\t{ \"\", \"da39a3ee5e6b4b0d3255bfef95601890afd80709\",
        FALSE },\n\t\t{ \"\\n\", \"adc83b19e793491b1c6ea0fd8b46cd9f32e592fc\", TRUE
        },\n\t\t{ \"a: \\r\\n\", \"a3871371f2d468493005286282ae10549dab2c57\", FALSE
        },\n\t\t{ \"a: b\\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\", FALSE
        },\n\t\t{ \"a: b \\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\", FALSE
        },\n\t\t{ \"a: b  \\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        FALSE },\n\t\t{ \"a: b     \\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        FALSE },\n\t\t{ \"a: b\\r\\n\\r\\n\", \"938b96404495cced816e3a4f6031734eab4e71b3\",
        TRUE },\n\t\t{ \"a: b\\r\\n\\r\\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        FALSE },\n\t\t{ \"a: b\\r\\n\\r\\r\\nc: d\\r\\n\\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        TRUE },\n\t\t{ \"a: b\\r\\n \\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        FALSE },\n\t\t{ \"a: b\\r\\n  \\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        FALSE },\n\t\t{ \"a: b\\r\\n\\t\\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        FALSE },\n\t\t{ \"a: b\\t\\t\\t\\t\\r\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        FALSE },\n\t\t{ \"a: b\\nfoo\\n\", \"44ef6a20971148dd54a161f79814e22e2d098ddb\",
        FALSE },\n\n\t\t{ \"a: b\\nc: d\\n\", \"4dbea2c1bdd1323e15931382c1835200d9286230\",
        FALSE },\n\t\t{ \"a:b\\nc:d\\n\", \"4dbea2c1bdd1323e15931382c1835200d9286230\",
        FALSE },\n\t\t{ \"a: b\\nfoo\\nc: d\\n\", \"4dbea2c1bdd1323e15931382c1835200d9286230\",
        FALSE },\n\t}"
      pos:
        line_end: 15
        line_start: 11
        source_file: /src/dovecot/src/plugins/pop3-migration/test-pop3-migration-plugin.c
    typedefs: []
    union: []
- function_names:
  - NOTIFY_CONTEXT
  - NOTIFY_MAIL_CONTEXT
  - notify_mail_expunge
  - notify_mail_update_flags
  - notify_mail_update_keywords
  - notify_mail_allocated
  - notify_copy
  - notify_save_finish
  - notify_transaction_begin
  - notify_transaction_commit
  - notify_transaction_rollback
  - notify_mailbox_create
  - notify_mailbox_update
  - notify_mailbox_delete
  - notify_mailbox_rename
  - notify_mailbox_set_subscribed
  - notify_mailbox_allocated
  - notify_plugin_init_storage
  - notify_plugin_deinit_storage
  source_file: /src/dovecot/src/plugins/notify/notify-storage.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - notify_context_find_mail_txn
  - notify_contexts_mail_transaction_begin
  - notify_contexts_mail_save
  - notify_contexts_mail_copy
  - notify_contexts_mail_expunge
  - notify_contexts_mail_update_flags
  - notify_contexts_mail_update_keywords
  - notify_contexts_mail_transaction_commit
  - notify_contexts_mail_transaction_rollback
  - notify_contexts_mailbox_create
  - notify_contexts_mailbox_update
  - notify_contexts_mailbox_delete_begin
  - notify_contexts_mailbox_delete_commit
  - notify_contexts_mailbox_delete_rollback
  - notify_contexts_mailbox_rename
  - notify_contexts_mailbox_set_subscribed
  - notify_register
  - notify_unregister
  - notify_plugin_init
  - notify_plugin_deinit
  source_file: /src/dovecot/src/plugins/notify/notify-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*prev'
        type: struct notify_mail_txn
      - name: '*parent_mailbox_txn'
        type: struct mailbox_transaction_context
      - name: '*tmp_mail'
        type: struct mail
      - name: '*txn'
        type: void
      item_type: struct
      name: notify_mail_txn
      pos:
        line_end: 13
        line_start: 8
        source_file: /src/dovecot/src/plugins/notify/notify-plugin.c
    - fields:
      - name: '*prev'
        type: struct notify_context
      - name: v
        type: struct notify_vfuncs
      - name: '*mail_txn_list'
        type: struct notify_mail_txn
      - name: '*mailbox_delete_txn'
        type: void
      item_type: struct
      name: notify_context
      pos:
        line_end: 20
        line_start: 15
        source_file: /src/dovecot/src/plugins/notify/notify-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/notify/notify-plugin-private.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/notify/notify-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*(*mail_transaction_begin)(struct mailbox_transaction_context *t)'
        type: void
      - name: (*mail_save)(void *txn, struct mail *mail)
        type: void
      - name: (*mail_copy)(void *txn, struct mail *src, struct mail *dst)
        type: void
      - name: (*mail_expunge)(void *txn, struct mail *mail)
        type: void
      - name: "(*mail_update_flags)(void *txn, struct mail *mail,\n\t\t\t\t  enum
          mail_flags old_flags)"
        type: void
      - name: "(*mail_update_keywords)(void *txn, struct mail *mail,\n\t\t\t\t     const
          char *const *old_keywords)"
        type: void
      - name: "(*mail_transaction_commit)(void *txn,\n\t\t\tstruct mail_transaction_commit_changes
          *changes)"
        type: void
      - name: (*mail_transaction_rollback)(void *txn)
        type: void
      - name: (*mailbox_create)(struct mailbox *box)
        type: void
      - name: (*mailbox_update)(struct mailbox *box)
        type: void
      - name: '*(*mailbox_delete_begin)(struct mailbox *box)'
        type: void
      - name: (*mailbox_delete_commit)(void *txn, struct mailbox *box)
        type: void
      - name: (*mailbox_delete_rollback)(void *txn)
        type: void
      - name: (*mailbox_rename)(struct mailbox *src, struct mailbox *dest)
        type: void
      - name: (*mailbox_set_subscribed)(struct mailbox *box, bool subscribed)
        type: void
      item_type: struct
      name: notify_vfuncs
      pos:
        line_end: 33
        line_start: 14
        source_file: /src/dovecot/src/plugins/notify/notify-plugin.h
    typedefs: []
    union: []
- function_names:
  - IMAP_ACL_CONTEXT
  - IMAP_ACL_CONTEXT_REQUIRE
  - DEF
  - acl_mailbox_open_as_admin
  - acl_letter_map_find
  - imap_acl_write_rights_list
  - imap_acl_write_right
  - acl_rights_is_owner
  - have_positive_owner_rights
  - imap_acl_write_aclobj
  - imapc_acl_get_mailbox_error
  - imapc_acl_myrights_untagged_cb
  - imapc_acl_getacl_untagged_cb
  - imap_acl_cmd_context_alloc
  - imap_acl_cmd_context_init
  - imap_acl_cmd_context_register
  - imap_acl_get_mailbox_name
  - imapc_acl_prepare_cmd
  - imapc_acl_simple_context_init
  - imapc_acl_send_client_reply
  - imap_acl_proxy_cmd
  - imap_acl_send_myrights
  - imap_acl_cmd_getacl
  - imap_acl_find_namespace
  - cmd_getacl
  - imap_acl_cmd_myrights
  - cmd_myrights
  - cmd_listrights
  - imap_acl_letters_parse
  - imap_acl_identifier_parse
  - imap_acl_update_ensure_keep_admins
  - cmd_acl_mailbox_update
  - imap_acl_cmd_setacl
  - cmd_setacl
  - imap_acl_cmd_deleteacl
  - cmd_deleteacl
  - list_return_flag_myrights_send
  - imap_acl_client_created
  - imap_acl_plugin_init
  - imap_acl_plugin_deinit
  source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
  types:
    enum:
    - enumerators:
      - name: IMAP_ACL_CMD_MYRIGHTS
        value: '0'
      - name: IMAP_ACL_CMD_DELETEACL
      - name: IMAP_ACL_CMD_SETACL
      - name: IMAP_ACL_CMD_GETACL
      item_type: enum
      name: imap_acl_cmd
      pos:
        line_end: 91
        line_start: 86
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    preproc_defs:
    - item_type: preproc_def
      name: ERROR_NOT_ADMIN
      pos:
        line_end: 27
        line_start: 25
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
      type_or_value: "\"[\"IMAP_RESP_CODE_NOPERM\"] \" \\\n\t\"You lack administrator
        privileges on this mailbox.\""
    - item_type: preproc_def
      name: IMAP_ACL_ANYONE
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
      type_or_value: '"anyone"'
    - item_type: preproc_def
      name: IMAP_ACL_AUTHENTICATED
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
      type_or_value: '"authenticated"'
    - item_type: preproc_def
      name: IMAP_ACL_OWNER
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
      type_or_value: '"owner"'
    - item_type: preproc_def
      name: IMAP_ACL_GROUP_PREFIX
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
      type_or_value: '"$"'
    - item_type: preproc_def
      name: IMAP_ACL_GROUP_OVERRIDE_PREFIX
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
      type_or_value: '"!$"'
    - item_type: preproc_def
      name: IMAP_ACL_GLOBAL_PREFIX
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
      type_or_value: '"#"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: allow_anyone
        type: bool
      item_type: struct
      name: imap_acl_settings
      pos:
        line_end: 44
        line_start: 41
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    - fields:
      - name: module_ctx
        type: union mail_storage_module_context
      - name: '*iacl_ctx'
        type: struct imapc_acl_context
      item_type: struct
      name: imap_acl_storage
      pos:
        line_end: 76
        line_start: 73
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    - fields:
      - name: '*client'
        type: struct imapc_client
      - name: proxy_cmd
        type: enum imap_acl_cmd
      - name: '*storage'
        type: struct mail_storage
      - name: '*expected_box'
        type: struct imapc_mailbox
      - name: '*reply'
        type: string_t
      item_type: struct
      name: imapc_acl_context
      pos:
        line_end: 103
        line_start: 97
        source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/imap-acl/imap-acl-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TRASH_USER_CONTEXT
  - TRASH_USER_CONTEXT_REQUIRE
  - DEF
  - trash_clean_init
  - trash_clean_root_no_trash
  - trash_clean_root_insufficient
  - trash_clean_mailbox_open
  - trash_clean_mailbox_close
  - trash_clean_mailbox_get_next
  - trash_clean_root_achieved
  - trash_clean_achieved
  - trash_clean_mailbox_expunge
  - trash_clean_do_execute
  - trash_clean_execute
  - trash_clean_deinit
  - trash_try_clean_mails
  - trash_quota_test_alloc
  - trash_mailbox_priority_cmp
  - trash_try_mailbox
  - trash_find_mailboxes
  - trash_mail_user_created
  - trash_mail_namespaces_created
  - trash_plugin_init
  - trash_plugin_deinit
  source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INIT_TRASH_MAILBOX_COUNT
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
      type_or_value: '4'
    - item_type: preproc_def
      name: MAX_RETRY_COUNT
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
      type_or_value: '3'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: priority
        type: unsigned int
      - name: '*ns'
        type: struct mail_namespace
      item_type: struct
      name: trash_mailbox
      pos:
        line_end: 28
        line_start: 23
        source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      item_type: struct
      name: trash_user
      pos:
        line_end: 35
        line_start: 30
        source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
    - fields:
      - name: '*root'
        type: struct quota_root
      - name: '*ctx'
        type: struct quota_transaction_root_context
      - name: trash_count
        type: unsigned int
      - name: count_needed
        type: uoff_t
      - name: bytes_needed
        type: uoff_t
      item_type: struct
      name: trash_clean_root
      pos:
        line_end: 45
        line_start: 37
        source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
    - fields:
      - name: '*trash'
        type: struct trash_mailbox
      - name: '*box'
        type: struct mailbox
      - name: '*trans'
        type: struct mailbox_transaction_context
      - name: '*search_ctx'
        type: struct mail_search_context
      - name: '*mail'
        type: struct mail
      - name: finished
        type: bool
      item_type: struct
      name: trash_clean_mailbox
      pos:
        line_end: 58
        line_start: 47
        source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
    - fields:
      - name: '*ctx'
        type: struct quota_transaction_context
      - name: '*user'
        type: struct trash_user
      - name: '*event'
        type: struct event
      item_type: struct
      name: trash_clean
      pos:
        line_end: 67
        line_start: 60
        source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
    - fields:
      - name: pool
        type: pool_t
      - name: trash_priority
        type: unsigned int
      item_type: struct
      name: trash_settings
      pos:
        line_end: 73
        line_start: 69
        source_file: /src/dovecot/src/plugins/trash/trash-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/trash/trash-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAIL_CRYPT_ACL_LIST_CONTEXT
  - mail_crypt_acl_has_user_read_right
  - mail_crypt_acl_has_nonuser_read_right
  - mail_crypt_acl_unset_private_keys
  - mail_crypt_acl_user_create
  - mail_crypt_acl_update_private_key
  - mail_crypt_acl_object_update
  - mail_crypt_acl_mail_namespace_storage_added
  - mail_crypt_acl_mailbox_list_deinit
  - mail_crypt_acl_mailbox_list_created
  - mail_crypt_acl_plugin_init
  - mail_crypt_acl_plugin_deinit
  source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_list_module_context
      - name: '*acl_vprev'
        type: struct acl_backend_vfuncs
      - name: v
        type: struct acl_backend_vfuncs
      item_type: struct
      name: mail_crypt_acl_mailbox_list
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-acl-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_CRYPT_PW_CIPHER
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: '"aes-256-ctr"'
    - item_type: preproc_def
      name: MAIL_CRYPT_KEY_CIPHER
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: '"ecdh-aes-256-ctr"'
    - item_type: preproc_def
      name: MAIL_CRYPT_KEY_ID_ALGORITHM
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: '"sha256"'
    - item_type: preproc_def
      name: MAIL_CRYPT_KEY_ATTRIBUTE_FORMAT
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: DCRYPT_FORMAT_DOVECOT
    - item_type: preproc_def
      name: MAIL_CRYPT_HASH_BUF_SIZE
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: '128'
    - item_type: preproc_def
      name: MAIL_CRYPT_KEY_BUF_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: '1024'
    - item_type: preproc_def
      name: ACTIVE_KEY_NAME
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: '"active"'
    - item_type: preproc_def
      name: PUBKEYS_PREFIX
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: '"pubkeys/"'
    - item_type: preproc_def
      name: PRIVKEYS_PREFIX
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: '"privkeys/"'
    - item_type: preproc_def
      name: BOX_CRYPT_PREFIX
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT"crypt/"
    - item_type: preproc_def
      name: USER_CRYPT_PREFIX
      pos:
        line_end: 20
        line_start: 17
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-common.h
      type_or_value: "MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER \\\n        MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT\"crypt/\""
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - DEF
  source_file: /src/dovecot/src/plugins/mail-crypt/crypt-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_crypt_load_global_public_key
  - mail_crypt_key_get_ids
  - mail_crypt_load_global_private_key
  - mail_crypt_global_keys_load
  - mail_crypt_global_keys_init
  - mail_crypt_global_keys_free
  - mail_crypt_global_key_find
  source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - p_as_null_terminated_array
  - mcp_user_create
  - mcp_update_shared_key
  - mcp_update_shared_keys
  - mcp_keypair_generate
  - mcp_keypair_generate_run
  - cmd_mcp_keypair_generate_init
  - cmd_mcp_keypair_generate_run
  - mcp_key_list
  - cmd_mcp_key_list_cb
  - cmd_mcp_key_list_init
  - cmd_mcp_key_list_run
  - cmd_mcp_key_export_cb
  - cmd_mcp_key_export_init
  - cmd_mcp_key_export_run
  - cmd_mcp_key_password_init
  - cmd_mcp_key_password_run
  - cmd_mcp_keypair_generate_alloc
  - cmd_mcp_key_list_alloc
  - cmd_mcp_key_export_alloc
  - cmd_mcp_key_password_alloc
  - doveadm_mail_crypt_plugin_init
  - doveadm_mail_crypt_plugin_deinit
  source_file: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DOVEADM_MCP_SUCCESS
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
      type_or_value: '"\xE2\x9C\x93" '
    - item_type: preproc_def
      name: DOVEADM_MCP_FAIL
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
      type_or_value: '"x"'
    - item_type: preproc_def
      name: DOVEADM_MCP_USERKEY
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
      type_or_value: '"<userkey>"'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*id'
        type: char
      - name: '*error'
        type: char
      - name: '*box'
        type: struct mailbox
      - name: success
        type: bool
      - name: active
        type: bool
      item_type: struct
      name: generated_key
      pos:
        line_end: 34
        line_start: 27
        source_file: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    - fields:
      - name: ctx
        type: struct doveadm_mail_cmd_context
      - name: '*mailbox'
        type: char
      - name: '*old_password'
        type: char
      - name: '*new_password'
        type: char
      - name: matched_keys
        type: unsigned int
      - name: userkey_only
        type: bool
      - name: recrypt_box_keys
        type: bool
      - name: force
        type: bool
      - name: ask_old_password
        type: bool
      - name: ask_new_password
        type: bool
      - name: clear_password
        type: bool
      item_type: struct
      name: mcp_cmd_context
      pos:
        line_end: 53
        line_start: 38
        source_file: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    - fields:
      - name: pool
        type: pool_t
      - name: (generated_keys)
        type: ARRAY_TYPE
      item_type: struct
      name: mcp_key_iter_ctx
      pos:
        line_end: 58
        line_start: 55
        source_file: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    - fields:
      - name: '*attr'
        type: char
      - name: '*id'
        type: char
      - name: '*data'
        type: char
      item_type: struct
      name: raw_key
      pos:
        line_end: 756
        line_start: 752
        source_file: /src/dovecot/src/plugins/mail-crypt/doveadm-mail-crypt.c
    typedefs: []
    union: []
- function_names:
  - CRYPT_FS
  - CRYPT_FILE
  - fs_crypt_alloc
  - fs_crypt_init_
  - fs_crypt_free
  - fs_crypt_file_alloc
  - fs_crypt_file_init
  - fs_crypt_file_deinit
  - fs_crypt_file_close
  - fs_crypt_set_metadata
  - fs_crypt_load_keys
  - fs_crypt_istream_get_key
  - fs_crypt_read_stream
  - fs_crypt_write_stream
  - fs_crypt_write_stream_finish
  - fs_crypt_init
  - fs_crypt_deinit
  source_file: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FS_CRYPT_ISTREAM_MIN_BUFFER_SIZE
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
      type_or_value: '1024'
    structs:
    - fields:
      - name: fs
        type: struct fs
      - name: keys
        type: struct mail_crypt_global_keys
      - name: keys_loaded
        type: bool
      - name: '*set'
        type: struct crypt_settings
      item_type: struct
      name: crypt_fs
      pos:
        line_end: 27
        line_start: 21
        source_file: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    - fields:
      - name: file
        type: struct fs_file
      - name: '*fs'
        type: struct crypt_fs
      - name: '*super_read'
        type: struct fs_file
      - name: open_mode
        type: enum fs_open_mode
      - name: '*input'
        type: struct istream
      - name: '*super_output'
        type: struct ostream
      - name: '*temp_output'
        type: struct ostream
      item_type: struct
      name: crypt_fs_file
      pos:
        line_end: 38
        line_start: 29
        source_file: /src/dovecot/src/plugins/mail-crypt/fs-crypt.c
    typedefs: []
    union: []
- function_names:
  - MAIL_CRYPT_MAIL_CONTEXT
  - MAIL_CRYPT_CONTEXT
  - MAIL_CRYPT_USER_CONTEXT
  - MAIL_CRYPT_USER_CONTEXT_REQUIRE
  - mail_crypt_is_stream_encrypted
  - mail_crypt_cache_close
  - mail_crypt_cache_open
  - mail_crypt_istream_get_private_key
  - mail_crypt_istream_opened
  - mail_crypt_close
  - mail_crypt_mail_allocated
  - mail_crypt_mail_save_finish
  - mail_crypt_mail_save_begin
  - mail_crypt_mailbox_copy
  - mail_crypt_mailbox_close
  - mail_crypt_mailbox_allocated
  - mail_crypt_mail_user_deinit
  - mail_crypt_mail_user_created
  - mail_crypt_plugin_init
  - mail_crypt_plugin_deinit
  source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: '*pub_key'
        type: struct dcrypt_public_key
      item_type: struct
      name: mail_crypt_mailbox
      pos:
        line_end: 33
        line_start: 30
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.c
    typedefs: []
    union: []
- function_names:
  - test_setup
  - test_fs_crypt_read_write
  - test_fs_crypt_read_write_0
  - test_fs_crypt_read_write_unencrypted
  - test_teardown
  - test_init_dcrypt
  - main
  source_file: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PRIVATE_KEY_PEM
      pos:
        line_end: 25
        line_start: 18
        source_file: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
      type_or_value: 'SET_FILE_INLINE_PREFIX \

        "-----BEGIN PRIVATE KEY-----\n" \

        "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgYIufJZZe2Y6iFz5x\n" \

        "koIoysb3dZLZWsyekjOc/GjsLd2hRANCAASnIWgQuhE8jqALcmfiunRyEk7vkq/y\n" \

        "a9vYK50b3cFhCsLU4tfVTLkB1Y/6VlZj63QKMzXNvk5G5OD1ofElcpyj\n" \

        "-----END PRIVATE KEY-----"'
    - item_type: preproc_def
      name: PUBLIC_KEY_PEM
      pos:
        line_end: 31
        line_start: 25
        source_file: /src/dovecot/src/plugins/mail-crypt/test-fs-crypt.c
      type_or_value: 'SET_FILE_INLINE_PREFIX \

        "-----BEGIN PUBLIC KEY-----\n" \

        "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpyFoELoRPI6gC3Jn4rp0chJO75Kv\n" \

        "8mvb2CudG93BYQrC1OLX1Uy5AdWP+lZWY+t0CjM1zb5ORuTg9aHxJXKcow==\n" \

        "-----END PUBLIC KEY-----"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*key'
        type: struct dcrypt_private_key
      - name: '*key_id'
        type: char
      item_type: struct
      name: mail_crypt_global_private_key
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.h
    - fields:
      - name: '*public_key'
        type: struct dcrypt_public_key
      item_type: struct
      name: mail_crypt_global_keys
      pos:
        line_end: 14
        line_start: 11
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-global-key.h
    typedefs: []
    union: []
- function_names:
  - test_setup
  - test_try_load_keys
  - test_empty_keyset
  - test_teardown
  - main
  source_file: /src/dovecot/src/plugins/mail-crypt/test-mail-global-key.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_crypt_get_key_cache
  - mail_crypt_put_key_cache
  - mail_crypt_key_cache_destroy
  - mail_crypt_private_key_id_match
  - mail_crypt_public_key_id_match
  - mail_crypt_user_encryption_keys_load
  - mail_crypt_env_get_private_key
  - mail_crypt_get_key_path
  - mail_crypt_decrypt_private_key
  - mail_crypt_get_private_key
  - mail_crypt_user_get_private_key
  - mail_crypt_box_get_private_key
  - mail_crypt_set_private_key
  - mail_crypt_user_set_private_key
  - mail_crypt_box_set_private_key
  - mail_crypt_get_public_key
  - mail_crypt_user_get_public_key
  - mail_crypt_box_get_public_key
  - mail_crypt_set_public_key
  - mail_crypt_user_set_public_key
  - mail_crypt_box_set_public_key
  - mail_crypt_user_set_keys
  - mail_crypt_box_set_keys
  - mail_crypt_box_get_shared_key
  - mail_crypt_box_set_shared_key
  - mail_crypt_box_unset_shared_key
  - mail_crypt_generate_keypair
  - mail_crypt_user_generate_keypair
  - mail_crypt_box_generate_keypair
  - mail_crypt_box_get_pvt_digests
  - mail_crypt_box_get_private_keys
  - mail_crypt_box_share_private_keys
  - array_foreach_elem
  - mail_crypt_user_get_or_gen_public_key
  - mail_crypt_key_register_mailbox_internal_attributes
  source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*next'
        type: struct mail_crypt_key_cache_entry
      - name: '*pubid'
        type: char
      - name: pair
        type: struct dcrypt_keypair
      item_type: struct
      name: mail_crypt_key_cache_entry
      pos:
        line_end: 24
        line_start: 18
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-key.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_CRYPT_MAIL_CACHE_EXPIRE_MSECS
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.h
      type_or_value: (60*1000)
    structs:
    - fields:
      - name: '*to'
        type: struct timeout
      - name: '*box'
        type: struct mailbox
      - name: uid
        type: uint32_t
      - name: '*input'
        type: struct istream
      item_type: struct
      name: mail_crypt_cache
      pos:
        line_end: 12
        line_start: 6
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.h
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*set'
        type: struct crypt_settings
      - name: global_keys
        type: struct mail_crypt_global_keys
      - name: cache
        type: struct mail_crypt_cache
      - name: '*key_cache'
        type: struct mail_crypt_key_cache_entry
      item_type: struct
      name: mail_crypt_user
      pos:
        line_end: 21
        line_start: 14
        source_file: /src/dovecot/src/plugins/mail-crypt/mail-crypt-plugin.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-crypt/crypt-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*crypt_private_key_name'
        type: char
      - name: '*crypt_private_key_file'
        type: char
      - name: '*crypt_private_key_password'
        type: char
      item_type: struct
      name: crypt_private_key_settings
      pos:
        line_end: 9
        line_start: 3
        source_file: /src/dovecot/src/plugins/mail-crypt/crypt-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: fs_crypt_read_plain_fallback
        type: bool
      - name: '*crypt_global_public_key_file'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*crypt_write_algorithm'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*crypt_user_key_password'
        type: char
      - name: '*crypt_user_key_curve'
        type: char
      - name: crypt_user_key_require_encrypted
        type: bool
      item_type: struct
      name: crypt_settings
      pos:
        line_end: 26
        line_start: 11
        source_file: /src/dovecot/src/plugins/mail-crypt/crypt-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: crypt_acl_require_secure_key_sharing
        type: bool
      item_type: struct
      name: crypt_acl_settings
      pos:
        line_end: 31
        line_start: 28
        source_file: /src/dovecot/src/plugins/mail-crypt/crypt-settings.h
    typedefs: []
    union: []
- function_names:
  - mail_crypt_get_mail_crypt_user
  - test_mail_attribute_get
  - test_mail_attribute_set
  - test_generate_user_key
  - test_generate_inbox_key
  - test_cache_reset
  - test_verify_keys
  - test_old_key
  - test_setup
  - test_teardown
  - main
  source_file: /src/dovecot/src/plugins/mail-crypt/test-mail-key.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - QUOTA_CLONE_USER_CONTEXT_REQUIRE
  - QUOTA_CLONE_USER_CONTEXT
  - QUOTA_CLONE_CONTEXT
  - MODULE_CONTEXT_DEFINE_INIT
  - quota_clone_dict_commit
  - quota_clone_flush_real
  - quota_clone_flush
  - quota_mailbox_get_user
  - quota_clone_changed
  - quota_clone_save_finish
  - quota_clone_copy
  - quota_clone_mailbox_sync_notify
  - quota_clone_mailbox_allocated
  - quota_clone_mail_user_deinit_pre
  - quota_clone_mail_user_deinit
  - quota_clone_mail_user_created
  - quota_clone_plugin_init
  - quota_clone_plugin_deinit
  source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: QUOTA_CLONE_FLUSH_DELAY_MSECS
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
      type_or_value: (10*1000)
    - item_type: preproc_def
      name: DICT_QUOTA_CLONE_PATH
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
      type_or_value: DICT_PATH_PRIVATE"quota/"
    - item_type: preproc_def
      name: DICT_QUOTA_CLONE_BYTES_PATH
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
      type_or_value: DICT_QUOTA_CLONE_PATH"storage"
    - item_type: preproc_def
      name: DICT_QUOTA_CLONE_COUNT_PATH
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-plugin.c
      type_or_value: DICT_QUOTA_CLONE_PATH"messages"
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-settings.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: unset
        type: bool
      item_type: struct
      name: quota_clone_settings
      pos:
        line_end: 7
        line_start: 4
        source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-settings.h
    typedefs: []
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/plugins/quota-clone/quota-clone-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*old_mbox'
        type: char
      item_type: struct
      name: push_notification_event_mailboxrename_data
      pos:
        line_end: 7
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.h
    typedefs: []
    union: []
- function_names:
  - push_notification_event_mailboxunsubscribe_debug_mbox
  - push_notification_event_mailboxunsubscribe_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c
      type_or_value: '"MailboxUnsubscribe"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: subscribe
        type: bool
      item_type: struct
      name: push_notification_event_mailboxunsubscribe_data
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxunsubscribe.h
    typedefs: []
    union: []
- function_names:
  - push_notification_event_mailboxsubscribe_debug_mbox
  - push_notification_event_mailboxsubscribe_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.c
      type_or_value: '"MailboxSubscribe"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_event_messageexpunge_debug_msg
  - push_notification_event_messageexpunge_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.c
      type_or_value: '"MessageExpunge"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_event_flagsset_default_config
  - push_notification_event_flagsset_debug_msg
  - push_notification_event_flagsset_get_data
  - push_notification_event_flagsset_flags_event
  - push_notification_event_flagsset_keywords_event
  - push_notification_event_flagsset_free_msg
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.c
      type_or_value: '"FlagsSet"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_txn_msg_create
  - push_notification_txn_msg_end
  - push_notification_txn_msg_get_eventdata
  - push_notification_txn_msg_set_eventdata
  - push_notification_txn_msg_deinit_eventdata
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: subscribe
        type: bool
      item_type: struct
      name: push_notification_event_mailboxsubscribe_data
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxsubscribe.h
    typedefs: []
    union: []
- function_names:
  - push_notification_trigger_mbox_common
  - push_notification_trigger_mbox_create
  - push_notification_trigger_mbox_delete
  - push_notification_trigger_mbox_rename
  - push_notification_trigger_mbox_subscribe
  - push_notification_trigger_msg_common
  - push_notification_trigger_msg_save_new
  - push_notification_trigger_msg_save_append
  - push_notification_trigger_msg_save_expunge
  - push_notification_trigger_msg_flag_change
  - push_notification_trigger_msg_keyword_change
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-triggers.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_driver_lua_init
  - push_notification_driver_lua_init_events
  - array_foreach_elem
  - push_notification_driver_lua_begin_txn
  - push_notification_driver_lua_to_fn
  - dlua_push_flags
  - dlua_push_keywords
  - push_notification_lua_push_flagsclear
  - push_notification_lua_push_flagsset
  - push_notification_lua_push_mailboxrename
  - push_notification_lua_push_string
  - push_notification_lua_push_message_ext
  - push_notification_lua_push_messageappend
  - push_notification_lua_push_messagenew
  - push_notification_driver_lua_push_event
  - push_notification_driver_lua_call
  - push_notification_driver_lua_process_mbox
  - push_notification_driver_lua_process_msg
  - push_notification_driver_lua_end_txn
  - push_notification_driver_lua_deinit
  - push_notification_driver_lua_cleanup
  - push_notification_lua_plugin_init
  - push_notification_lua_plugin_deinit
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DLUA_FN_BEGIN_TXN
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
      type_or_value: '"dovecot_lua_notify_begin_txn"'
    - item_type: preproc_def
      name: DLUA_FN_EVENT_PREFIX
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
      type_or_value: '"dovecot_lua_notify_event"'
    - item_type: preproc_def
      name: DLUA_FN_END_TXN
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
      type_or_value: '"dovecot_lua_notify_end_txn"'
    - item_type: preproc_def
      name: DLUA_CALL_FINISHED
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
      type_or_value: '"push_notification_lua_call_finished"'
    - item_type: preproc_def
      name: DLUA_DEFAULT_EVENTS
      pos:
        line_end: 68
        line_start: 59
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
      type_or_value: "(\\\n\tPUSH_NOTIFICATION_MESSAGE_HDR_FROM | \\\n\tPUSH_NOTIFICATION_MESSAGE_HDR_TO
        | \\\n\tPUSH_NOTIFICATION_MESSAGE_HDR_SUBJECT | \\\n\tPUSH_NOTIFICATION_MESSAGE_HDR_DATE
        | \\\n\tPUSH_NOTIFICATION_MESSAGE_BODY_SNIPPET | \\\n\tPUSH_NOTIFICATION_MESSAGE_FLAGS
        | \\\n\tPUSH_NOTIFICATION_MESSAGE_KEYWORDS | \\\n\tPUSH_NOTIFICATION_MESSAGE_HDR_MESSAGE_ID)"
    structs:
    - fields:
      - name: '*script'
        type: struct dlua_script
      - name: '*event'
        type: struct event
      - name: debug
        type: bool
      - name: config_mn
        type: struct push_notification_event_messagenew_config
      - name: config_ma
        type: struct push_notification_event_messageappend_config
      - name: config_fc
        type: struct push_notification_event_flagsclear_config
      - name: config_fs
        type: struct push_notification_event_flagsset_config
      item_type: struct
      name: dlua_push_notification_context
      pos:
        line_end: 53
        line_start: 44
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    - fields:
      - name: tx_ref
        type: int
      item_type: struct
      name: dlua_push_notification_txn_context
      pos:
        line_end: 57
        line_start: 55
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    - fields:
      - name: '*event_name'
        type: char
      - name: "(*push)(const struct push_notification_txn_event *event,\n\t\t     struct
          dlua_script *script)"
        type: void
      item_type: struct
      name: push_notification_event_to_lua
      pos:
        line_end: 426
        line_start: 422
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-lua.c
    typedefs: []
    union: []
- function_names:
  - push_notification_event_flagsclear_default_config
  - push_notification_event_flagsclear_debug_msg
  - push_notification_event_flagsclear_get_data
  - push_notification_event_flagsclear_flags_event
  - push_notification_event_flagsclear_keywords_event
  - push_notification_event_flagsclear_free_msg
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.c
      type_or_value: '"FlagsClear"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: "(*init)(struct mail_user *user, pool_t pool, const char *name,\n\t\t
          \   void **context, const char **error_r)"
        type: int
      - name: (*begin_txn)(struct push_notification_driver_txn *dtxn)
        type: bool
      - name: "(*process_mbox)(struct push_notification_driver_txn *dtxn,\n\t\t\t
          \    struct push_notification_txn_mbox *mbox)"
        type: void
      - name: "(*process_msg)(struct push_notification_driver_txn *dtxn,\n\t\t\t    struct
          push_notification_txn_msg *msg)"
        type: void
      - name: "(*end_txn)(struct push_notification_driver_txn *dtxn,\n\t\t\tbool success)"
        type: void
      - name: (*deinit)(struct push_notification_driver_user *duser)
        type: void
      - name: (*cleanup)(void)
        type: void
      item_type: struct
      name: push_notification_driver_vfuncs
      pos:
        line_end: 41
        line_start: 18
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
    - fields:
      - name: '*name'
        type: char
      - name: v
        type: struct push_notification_driver_vfuncs
      item_type: struct
      name: push_notification_driver
      pos:
        line_end: 46
        line_start: 43
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
    - fields:
      - name: '*driver'
        type: struct push_notification_driver
      - name: '*context'
        type: void
      item_type: struct
      name: push_notification_driver_user
      pos:
        line_end: 51
        line_start: 48
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
    - fields:
      - name: '*duser'
        type: struct push_notification_driver_user
      - name: '*ptxn'
        type: struct push_notification_txn
      - name: '*context'
        type: void
      item_type: struct
      name: push_notification_driver_txn
      pos:
        line_end: 59
        line_start: 53
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
    - fields: []
      item_type: struct
      name: push_notification_driver_list
      pos:
        line_end: 63
        line_start: 61
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*driverlist'
        type: struct push_notification_driver_list
      item_type: struct
      name: push_notification_user
      pos:
        line_end: 68
        line_start: 65
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
    - fields:
      - name: '*name'
        type: char
      - name: '*context'
        type: void
      item_type: struct
      name: push_notification_trigger_ctx
      pos:
        line_end: 73
        line_start: 70
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*mbox'
        type: struct mailbox
      - name: '*muser'
        type: struct mail_user
      - name: '*puser'
        type: struct push_notification_user
      - name: initialized
        type: bool
      - name: trigger
        type: enum push_notification_event_trigger
      - name: '*trigger_ctx'
        type: struct push_notification_trigger_ctx
      - name: '*event'
        type: struct event
      - name: '*mbox_txn'
        type: struct push_notification_txn_mbox
      - name: (push_notification_msgs)
        type: HASH_TABLE_TYPE
      - name: '*t'
        type: struct mailbox_transaction_context
      item_type: struct
      name: push_notification_txn
      pos:
        line_end: 98
        line_start: 75
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-events-rfc5423.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*(*default_config)(void)'
        type: void
      item_type: struct
      name: push_notification_event_vfuncs_init
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
    - fields:
      - name: (*debug_mbox)(struct push_notification_txn_event *event)
        type: void
      - name: (*free_mbox)(struct push_notification_txn_event *event)
        type: void
      item_type: struct
      name: push_notification_event_vfuncs_mbox
      pos:
        line_end: 27
        line_start: 22
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
    - fields:
      - name: "(*create)(struct push_notification_txn *ptxn,\n\t\t       struct push_notification_event_config
          *ec,\n\t\t       struct push_notification_txn_mbox *mbox)"
        type: void
      - name: "(*delete)(struct push_notification_txn *ptxn,\n\t\t       struct push_notification_event_config
          *ec,\n\t\t       struct push_notification_txn_mbox *mbox)"
        type: void
      - name: "(*rename)(struct push_notification_txn *ptxn,\n\t\t       struct push_notification_event_config
          *ec,\n\t\t       struct push_notification_txn_mbox *mbox,\n\t\t       struct
          mailbox *old)"
        type: void
      - name: "(*subscribe)(struct push_notification_txn *ptxn,\n\t\t\t  struct push_notification_event_config
          *ec,\n\t\t\t  struct push_notification_txn_mbox *mbox)"
        type: void
      - name: "(*unsubscribe)(struct push_notification_txn *ptxn,\n\t\t\t    struct
          push_notification_event_config *ec,\n\t\t\t    struct push_notification_txn_mbox
          *mbox)"
        type: void
      item_type: struct
      name: push_notification_event_vfuncs_mbox_triggers
      pos:
        line_end: 51
        line_start: 29
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
    - fields:
      - name: (*debug_msg)(struct push_notification_txn_event *event)
        type: void
      - name: (*free_msg)(struct push_notification_txn_event *event)
        type: void
      item_type: struct
      name: push_notification_event_vfuncs_msg
      pos:
        line_end: 58
        line_start: 53
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
    - fields:
      - name: "(*save)(struct push_notification_txn *ptxn,\n\t\t     struct push_notification_event_config
          *ec,\n\t\t     struct push_notification_txn_msg *msg,\n\t\t     struct mail
          *mail)"
        type: void
      - name: "(*append)(struct push_notification_txn *ptxn,\n\t\t       struct push_notification_event_config
          *ec,\n\t\t       struct push_notification_txn_msg *msg,\n\t\t       struct
          mail *mail)"
        type: void
      - name: "(*expunge)(struct push_notification_txn *ptxn,\n\t\t\tstruct push_notification_event_config
          *ec,\n\t\t\tstruct push_notification_txn_msg *msg)"
        type: void
      - name: "(*flagchange)(struct push_notification_txn *ptxn,\n\t\t\t   struct
          push_notification_event_config *ec,\n\t\t\t   struct push_notification_txn_msg
          *msg,\n\t\t\t   struct mail *mail, enum mail_flags old_flags)"
        type: void
      - name: "(*keywordchange)(struct push_notification_txn *ptxn,\n\t\t\t      struct
          push_notification_event_config *ec,\n\t\t\t      struct push_notification_txn_msg
          *msg,\n\t\t\t      struct mail *mail,\n\t\t\t      const char *const *old_keywords)"
        type: void
      item_type: struct
      name: push_notification_event_vfuncs_msg_triggers
      pos:
        line_end: 86
        line_start: 60
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
    - fields:
      - name: '*event'
        type: struct push_notification_event
      - name: '*log_event'
        type: struct event
      - name: '*config'
        type: void
      item_type: struct
      name: push_notification_event_config
      pos:
        line_end: 92
        line_start: 88
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
    - fields:
      - name: '*name'
        type: char
      - name: init
        type: struct push_notification_event_vfuncs_init
      - name: mbox
        type: struct push_notification_event_vfuncs_mbox
      - name: mbox_triggers
        type: struct push_notification_event_vfuncs_mbox_triggers
      - name: msg
        type: struct push_notification_event_vfuncs_msg
      - name: msg_triggers
        type: struct push_notification_event_vfuncs_msg_triggers
      item_type: struct
      name: push_notification_event
      pos:
        line_end: 101
        line_start: 94
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
    - fields:
      - name: '*event'
        type: struct push_notification_event_config
      - name: '*data'
        type: void
      item_type: struct
      name: push_notification_txn_event
      pos:
        line_end: 106
        line_start: 103
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-triggers.h
  types:
    enum:
    - enumerators:
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_NONE
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MBOX_SUBSCRIBE
        value: '0x008'
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MBOX_CREATE
        value: '0x001'
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MBOX_RENAME
        value: '0x004'
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MBOX_DELETE
        value: '0x002'
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MSG_SAVE_NEW
        value: '0x010'
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MSG_SAVE_APPEND
        value: '0x020'
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MSG_EXPUNGE
        value: '0x040'
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MSG_FLAGCHANGE
        value: '0x080'
      - name: PUSH_NOTIFICATION_EVENT_TRIGGER_MSG_KEYWORDCHANGE
        value: '0x100'
      item_type: enum
      name: push_notification_event_trigger
      pos:
        line_end: 28
        line_start: 13
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-triggers.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*mailbox'
        type: char
      - name: uid
        type: uint32_t
      - name: uid_validity
        type: uint32_t
      - name: save_idx
        type: unsigned int
      item_type: struct
      name: push_notification_txn_msg
      pos:
        line_end: 19
        line_start: 10
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-txn-msg.h
    typedefs: []
    union: []
- function_names:
  - push_notification_event_messageread_debug_msg
  - push_notification_event_messageread_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.c
      type_or_value: '"MessageRead"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: trash
        type: bool
      item_type: struct
      name: push_notification_event_messagetrash_data
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.h
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - push_notification_settings_check
  - push_notification_ox_settings_check
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-settings.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PUSH_NOTIFICATION_DRIVER_OX_DEFAULT_CACHE_TTL_MSECS
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-settings.c
      type_or_value: (60 * 1000)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: flags
        type: enum push_notification_event_message_flags
      item_type: struct
      name: push_notification_event_messagenew_config
      pos:
        line_end: 9
        line_start: 7
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.h
    - fields:
      - name: '*from'
        type: char
      - name: '*to'
        type: char
      - name: '*subject'
        type: char
      - name: date
        type: time_t
      - name: date_tz
        type: int
      - name: '*snippet'
        type: char
      - name: flags_set
        type: bool
      - name: flags
        type: enum mail_flags
      - name: '*const *keywords'
        type: char
      - name: '*message_id'
        type: char
      - name: ext
        type: struct push_notification_message_ext
      item_type: struct
      name: push_notification_event_messagenew_data
      pos:
        line_end: 32
        line_start: 11
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.h
    typedefs: []
    union: []
- function_names:
  - decode_address_header
  - push_notification_message_fill
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: hide_deleted
        type: bool
      - name: hide_seen
        type: bool
      item_type: struct
      name: push_notification_event_flagsset_config
      pos:
        line_end: 13
        line_start: 7
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.h
    - fields:
      - name: flags_set
        type: enum mail_flags
      - name: (keywords)
        type: ARRAY_TYPE
      item_type: struct
      name: push_notification_event_flagsset_data
      pos:
        line_end: 18
        line_start: 15
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsset.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*mailbox'
        type: char
      item_type: struct
      name: push_notification_txn_mbox
      pos:
        line_end: 11
        line_start: 7
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.h
    typedefs: []
    union: []
- function_names:
  - push_notification_event_unregister
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-events.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_driver_ox_init_global
  - push_notification_driver_ox_init
  - push_notification_driver_ox_get_metadata
  - push_notification_driver_ox_begin_txn
  - push_notification_driver_ox_http_callback
  - str_free_i
  - push_notification_driver_ox_get_mailbox_status
  - push_notification_driver_ox_process_msg
  - push_notification_driver_ox_deinit
  - push_notification_driver_ox_cleanup
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: OX_METADATA_KEY
      pos:
        line_end: 29
        line_start: 26
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
      type_or_value: "MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER \\\n\t\"vendor/vendor.dovecot/http-notify\""
    structs:
    - fields:
      - name: '*http_client'
        type: struct http_client
      - name: refcount
        type: int
      item_type: struct
      name: push_notification_driver_ox_global
      pos:
        line_end: 38
        line_start: 35
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    - fields:
      - name: '*http_url'
        type: struct http_url
      - name: '*event'
        type: struct event
      - name: cached_ox_metadata_lifetime_secs
        type: unsigned int
      - name: use_unsafe_username
        type: bool
      - name: '*cached_ox_metadata'
        type: char
      - name: cached_ox_metadata_timestamp
        type: time_t
      item_type: struct
      name: push_notification_driver_ox_config
      pos:
        line_end: 50
        line_start: 42
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    - fields:
      - name: '*unsafe_user'
        type: char
      item_type: struct
      name: push_notification_driver_ox_txn
      pos:
        line_end: 55
        line_start: 53
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-ox.c
    typedefs: []
    union: []
- function_names:
  - push_notification_event_register_rfc5423_events
  - push_notification_event_unregister_rfc5423_events
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-events-rfc5423.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_event_messagenew_default_config
  - push_notification_event_messagenew_debug_msg
  - push_notification_event_messagenew_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagenew.c
      type_or_value: '"MessageNew"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: store_old
        type: bool
      item_type: struct
      name: push_notification_event_flagsclear_config
      pos:
        line_end: 10
        line_start: 7
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.h
    - fields:
      - name: flags_clear
        type: enum mail_flags
      - name: (keywords)
        type: ARRAY_TYPE
      - name: flags_old
        type: enum mail_flags
      - name: (keywords)
        type: ARRAY_TYPE
      item_type: struct
      name: push_notification_event_flagsclear_data
      pos:
        line_end: 18
        line_start: 12
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-flagsclear.h
    typedefs: []
    union: []
- function_names:
  - push_notification_event_mailboxrename_debug_mbox
  - push_notification_event_mailboxrename_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxrename.c
      type_or_value: '"MailboxRename"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - PUSH_NOTIFICATION_USER_CONTEXT
  - push_notification_get_event_category
  - push_notification_get_event_messagenew
  - push_notification_transaction_init
  - push_notification_transaction_create
  - push_notification_transaction_end
  - push_notification_transaction_commit
  - push_notification_mailbox_create
  - push_notification_mailbox_delete
  - push_notification_mailbox_rename
  - push_notification_mailbox_subscribe
  - push_notification_mail_save
  - push_notification_mail_copy
  - push_notification_mail_expunge
  - push_notification_mail_update_flags
  - push_notification_mail_update_keywords
  - push_notification_transaction_begin
  - push_notification_transaction_rollback
  - push_notification_config_init
  - push_notification_driver_list_init
  - push_notification_user_deinit
  - push_notification_user_created
  - push_notification_plugin_init
  - push_notification_plugin_deinit
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PUSH_NOTIFICATION_EVENT_FINISHED
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-plugin.c
      type_or_value: '"push_notification_finished"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_event_messageappend_default_config
  - push_notification_event_messageappend_debug_msg
  - push_notification_event_messageappend_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.c
      type_or_value: '"MessageAppend"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: flags
        type: enum push_notification_event_message_flags
      item_type: struct
      name: push_notification_event_messageappend_config
      pos:
        line_end: 7
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.h
    - fields:
      - name: '*from'
        type: char
      - name: '*to'
        type: char
      - name: '*subject'
        type: char
      - name: '*snippet'
        type: char
      - name: date
        type: time_t
      - name: date_tz
        type: int
      - name: flags_set
        type: bool
      - name: flags
        type: enum mail_flags
      - name: '*const *keywords'
        type: char
      - name: '*message_id'
        type: char
      - name: ext
        type: struct push_notification_message_ext
      item_type: struct
      name: push_notification_event_messageappend_data
      pos:
        line_end: 26
        line_start: 9
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageappend.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: uid_validity
        type: uint32_t
      item_type: struct
      name: push_notification_event_mailboxcreate_data
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.h
  types:
    enum:
    - enumerators:
      - name: PUSH_NOTIFICATION_MESSAGE_HDR_FROM
        value: '0x01'
      - name: PUSH_NOTIFICATION_MESSAGE_BODY_SNIPPET
        value: '0x10'
      - name: PUSH_NOTIFICATION_MESSAGE_HDR_SUBJECT
        value: '0x04'
      - name: PUSH_NOTIFICATION_MESSAGE_HDR_DATE
        value: '0x08'
      - name: PUSH_NOTIFICATION_MESSAGE_HDR_TO
        value: '0x02'
      - name: PUSH_NOTIFICATION_MESSAGE_FLAGS
        value: '0x20'
      - name: PUSH_NOTIFICATION_MESSAGE_KEYWORDS
        value: '0x40'
      - name: PUSH_NOTIFICATION_MESSAGE_HDR_MESSAGE_ID
        value: '0x80'
      item_type: enum
      name: push_notification_event_message_flags
      pos:
        line_end: 22
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*from_address'
        type: char
      - name: '*to_address'
        type: char
      - name: '*subject_utf8'
        type: char
      item_type: struct
      name: push_notification_message_ext
      pos:
        line_end: 28
        line_start: 24
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-message-common.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: expunge
        type: bool
      item_type: struct
      name: push_notification_event_messageexpunge_data
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageexpunge.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PUSH_NOTIFICATION_SETTINGS_FILTER_NAME
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-settings.h
      type_or_value: '"push_notification"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*path'
        type: char
      item_type: struct
      name: push_notification_lua_settings
      pos:
        line_end: 11
        line_start: 7
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*url'
        type: char
      - name: cache_ttl
        type: unsigned int
      - name: user_from_metadata
        type: bool
      - name: '*parsed_url'
        type: struct http_url
      item_type: struct
      name: push_notification_ox_settings
      pos:
        line_end: 22
        line_start: 13
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*driver'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: push_notification_settings
      pos:
        line_end: 30
        line_start: 24
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-settings.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: read
        type: bool
      item_type: struct
      name: push_notification_event_messageread_data
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messageread.h
    typedefs: []
    union: []
- function_names:
  - push_notification_driver_find
  - push_notification_driver_identify
  - push_notification_driver_init
  - push_notification_driver_cleanup_all
  - push_notification_driver_debug
  - push_notification_driver_register
  - push_notification_driver_unregister
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-drivers.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_txn_mbox_create
  - push_notification_txn_mbox_end
  - push_notification_txn_mbox_get_eventdata
  - push_notification_txn_mbox_set_eventdata
  - push_notification_txn_mbox_deinit_eventdata
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-txn-mbox.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_event_mailboxdelete_debug_mbox
  - push_notification_event_mailboxdelete_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.c
      type_or_value: '"MailboxDelete"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - push_notification_event_messagetrash_debug_msg
  - push_notification_event_messagetrash_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-messagetrash.c
      type_or_value: '"MessageTrash"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: deleted
        type: bool
      item_type: struct
      name: push_notification_event_mailboxdelete_data
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxdelete.h
    typedefs: []
    union: []
- function_names:
  - push_notification_event_mailboxcreate_debug_mbox
  - push_notification_event_mailboxcreate_event
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVENT_NAME
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-event-mailboxcreate.c
      type_or_value: '"MailboxCreate"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - create_dlog_event
  - push_notification_driver_dlog_init
  - push_notification_driver_dlog_begin_txn
  - push_notification_driver_dlog_process_mbox
  - push_notification_driver_dlog_process_msg
  - push_notification_driver_dlog_end_txn
  - push_notification_driver_dlog_deinit
  - push_notification_driver_dlog_cleanup
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DLOG_PREFIX
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
      type_or_value: '"dlog: "'
    structs:
    - fields:
      - name: '*event'
        type: struct event
      item_type: struct
      name: dlog_push_notification_context
      pos:
        line_end: 18
        line_start: 16
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    - fields:
      - name: '*event'
        type: struct event
      item_type: struct
      name: dlog_push_notification_txn_context
      pos:
        line_end: 22
        line_start: 20
        source_file: /src/dovecot/src/plugins/push-notification/push-notification-driver-dlog.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/push-notification/push-notification-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - WELCOME_CONTEXT
  - DEF
  - welcome_client_destroy
  - script_finish
  - script_execute
  - welcome_create_box
  - welcome_mailbox_allocated
  - welcome_plugin_init
  - welcome_plugin_deinit
  source_file: /src/dovecot/src/plugins/welcome/welcome-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: created
        type: bool
      item_type: struct
      name: welcome_mailbox
      pos:
        line_end: 23
        line_start: 20
        source_file: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    - fields:
      - name: '*prev'
        type: struct welcome_client_list
      - name: '*client'
        type: struct program_client
      item_type: struct
      name: welcome_client_list
      pos:
        line_end: 28
        line_start: 25
        source_file: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    - fields:
      - name: pool
        type: pool_t
      - name: welcome_wait
        type: bool
      item_type: struct
      name: welcome_settings
      pos:
        line_end: 33
        line_start: 30
        source_file: /src/dovecot/src/plugins/welcome/welcome-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAIL_LOG_USER_CONTEXT
  - DEF
  - mail_log_field_find
  - mail_log_event_find
  - mail_log_parse_fields
  - array_foreach_elem
  - mail_log_parse_events
  - array_foreach_elem
  - mail_log_settings_check
  - mail_log_user_deinit
  - mail_log_mail_user_created
  - mail_log_append_mailbox_name
  - mail_log_append_mail_header
  - mail_log_append_uid
  - mail_log_update_wanted_fields
  - mail_log_append_mail_message_real
  - mail_log_add_dummy_msg
  - mail_log_append_mail_message
  - mail_log_mail_transaction_begin
  - mail_log_mail_save
  - mail_log_mail_copy
  - mail_log_mail_expunge
  - mail_log_mail_update_flags
  - mail_log_mail_update_keywords
  - mail_log_save
  - mail_log_mail_transaction_commit
  - mail_log_mail_transaction_rollback
  - mail_log_mailbox_create
  - mail_log_mailbox_delete_commit
  - mail_log_mailbox_rename
  - mail_log_plugin_init
  - mail_log_plugin_deinit
  source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
  types:
    enum:
    - enumerators:
      - name: MAIL_LOG_FIELD_UID
        value: '0x01'
      - name: MAIL_LOG_FIELD_BOX
        value: '0x02'
      - name: MAIL_LOG_FIELD_MSGID
        value: '0x04'
      - name: MAIL_LOG_FIELD_VSIZE
        value: '0x10'
      - name: MAIL_LOG_FIELD_PSIZE
        value: '0x08'
      - name: MAIL_LOG_FIELD_FLAGS
        value: '0x20'
      - name: MAIL_LOG_FIELD_FROM
        value: '0x40'
      - name: MAIL_LOG_FIELD_SUBJECT
        value: '0x80'
      item_type: enum
      name: mail_log_field
      pos:
        line_end: 32
        line_start: 23
        source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    - enumerators:
      - name: MAIL_LOG_EVENT_DELETE
        value: '0x01'
      - name: MAIL_LOG_EVENT_SAVE
        value: '0x08'
      - name: MAIL_LOG_EVENT_EXPUNGE
        value: '0x04'
      - name: MAIL_LOG_EVENT_COPY
        value: '0x10'
      - name: MAIL_LOG_EVENT_UNDELETE
        value: '0x02'
      - name: MAIL_LOG_EVENT_MAILBOX_CREATE
        value: '0x20'
      - name: MAIL_LOG_EVENT_MAILBOX_DELETE
        value: '0x40'
      - name: MAIL_LOG_EVENT_MAILBOX_RENAME
        value: '0x80'
      - name: MAIL_LOG_EVENT_FLAG_CHANGE
        value: '0x100'
      item_type: enum
      name: mail_log_event
      pos:
        line_end: 44
        line_start: 34
        source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_NAME_LOG_LEN
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
      type_or_value: '64'
    - item_type: preproc_def
      name: HEADER_LOG_LEN
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
      type_or_value: '80'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: mail_log_cached_only
        type: bool
      - name: parsed_fields
        type: enum mail_log_field
      - name: parsed_events
        type: enum mail_log_event
      item_type: struct
      name: mail_log_settings
      pos:
        line_end: 80
        line_start: 71
        source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*set'
        type: struct mail_log_settings
      item_type: struct
      name: mail_log_user
      pos:
        line_end: 86
        line_start: 83
        source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    - fields:
      - name: '*prev'
        type: struct mail_log_message
      - name: event
        type: enum mail_log_event
      - name: ignore
        type: bool
      - name: '*pretext'
        type: char
      item_type: struct
      name: mail_log_message
      pos:
        line_end: 94
        line_start: 88
        source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*event'
        type: struct event
      - name: '*messages'
        type: struct mail_log_message
      item_type: struct
      name: mail_log_mail_txn_context
      pos:
        line_end: 100
        line_start: 96
        source_file: /src/dovecot/src/plugins/mail-log/mail-log-plugin.c
    typedefs: []
    union: []
- function_names:
  - DEF
  source_file: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-settings.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LAZY_EXPUNGE_CONTEXT
  - LAZY_EXPUNGE_CONTEXT_REQUIRE
  - LAZY_EXPUNGE_MAIL_CONTEXT
  - LAZY_EXPUNGE_MAIL_CONTEXT_REQUIRE
  - mailbox_alloc
  - lazy_expunge_count_in_transaction
  - lazy_expunge_mail_is_last_instance
  - lazy_expunge_set_error
  - lazy_expunge_mail_expunge_move
  - lazy_expunge_mail_expunge
  - lazy_expunge_mailbox_free
  - lazy_expunge_copy
  - lazy_expunge_transaction_begin
  - lazy_expunge_transaction_free
  - lazy_expunge_transaction_commit
  - lazy_expunge_transaction_rollback
  - lazy_expunge_mail_allocated
  - lazy_expunge_mailbox_allocated
  - lazy_expunge_plugin_init
  - lazy_expunge_plugin_deinit
  source_file: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_module_context
      - name: moving
        type: bool
      - name: recursing
        type: bool
      item_type: struct
      name: lazy_expunge_mail
      pos:
        line_end: 22
        line_start: 18
        source_file: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: '*set'
        type: struct lazy_expunge_settings
      item_type: struct
      name: lazy_expunge_mailbox
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    - fields:
      - name: module_ctx
        type: union mailbox_transaction_module_context
      - name: '*dest_box'
        type: struct mailbox
      - name: '*dest_trans'
        type: struct mailbox_transaction_context
      - name: pool
        type: pool_t
      - name: '*delayed_errstr'
        type: char
      - name: '*delayed_internal_errstr'
        type: char
      - name: delayed_error
        type: enum mail_error
      item_type: struct
      name: lazy_expunge_transaction
      pos:
        line_end: 41
        line_start: 29
        source_file: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: lazy_expunge_only_last_instance
        type: bool
      - name: '*lazy_expunge_mailbox'
        type: char
      item_type: struct
      name: lazy_expunge_settings
      pos:
        line_end: 10
        line_start: 5
        source_file: /src/dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.h
    typedefs: []
    union: []
- function_names:
  - var_expand_crypt_unload
  - var_expand_crypt_load
  - expansion_filter_crypt_set_functions
  - expansion_filter_encrypt
  - expansion_filter_decrypt
  source_file: /src/dovecot/src/lib-var-expand/expansion-filter-crypt.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fn_lookup
  - fn_lower
  - fn_upper
  - fn_default
  - fn_literal
  - fn_calculate
  - fn_concat
  - fn_hash_algo
  - fn_hash
  - fn_md5
  - fn_sha1
  - fn_sha256
  - fn_sha384
  - fn_sha512
  - fn_base64
  - fn_unbase64
  - fn_hex
  - fn_unhex
  - fn_hexlify
  - fn_unhexlify
  - fn_reverse
  - fn_truncate
  - fn_substr
  - fn_ldap_dn
  - fix_replacement_pattern
  - fn_regexp
  - fn_number
  - fn_be_number
  - fn_le_number
  - fn_index_common
  - fn_index
  - fn_username
  - fn_domain
  - fn_list
  - fn_fill
  - fn_rfill
  - fn_lfill
  - fn_text
  - var_expand_free_filters
  - var_expand_register_filter
  - var_expand_is_filter
  - var_expand_unregister_filter
  - var_expand_find_filter
  source_file: /src/dovecot/src/lib-var-expand/expansion-filter.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - var_expand_parameter_key
  - var_expand_parameter_idx
  - var_expand_parameter_number_or_var
  - var_expand_parameter_bool_or_var
  - var_expand_parameter_string_or_var
  - var_expand_parameter_any_or_var
  - var_expand_parameter_iter_init
  - var_expand_parameter_iter_more
  - var_expand_parameter_iter_next
  - var_expand_parameter_dump
  - var_expand_parameter_number
  - var_expand_parameter_string
  - var_expand_parameter_from_state
  source_file: /src/dovecot/src/lib-var-expand/expansion-parameter.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ptr'
        type: struct var_expand_parameter
      item_type: struct
      name: var_expand_parameter_iter_context
      pos:
        line_end: 10
        line_start: 8
        source_file: /src/dovecot/src/lib-var-expand/expansion-parameter.c
    typedefs: []
    union: []
- function_names:
  - var_expand_execute_stmt
  source_file: /src/dovecot/src/lib-var-expand/expansion-statement.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FUZZ_BEGIN_STR
  source_file: /src/dovecot/src/lib-var-expand/fuzz-var-expand.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - var_expand_if_str_to_comp
  - fn_if_cmp
  - expansion_filter_if
  - expansion_filter_switch
  source_file: /src/dovecot/src/lib-var-expand/expansion-filter-if.c
  types:
    enum:
    - enumerators:
      - name: OP_UNKNOWN
      - name: OP_NUM_LT
      - name: OP_NUM_GT
      - name: OP_NUM_LE
      - name: OP_NUM_EQ
      - name: OP_NUM_GE
      - name: OP_NUM_NE
      - name: OP_STR_EQ
      - name: OP_STR_LT
      - name: OP_STR_LE
      - name: OP_STR_GE
      - name: OP_STR_GT
      - name: OP_STR_NE
      - name: OP_STR_LIKE
      - name: OP_STR_NOT_LIKE
      - name: OP_STR_NOT_REGEXP
      - name: OP_STR_REGEXP
      - name: OP_COUNT
      item_type: enum
      name: var_expand_if_op
      pos:
        line_end: 30
        line_start: 9
        source_file: /src/dovecot/src/lib-var-expand/expansion-filter-if.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*cond'
        type: struct var_expand_parameter
      - name: '*value'
        type: struct var_expand_parameter
      item_type: struct
      name: switch_cond
      pos:
        line_end: 257
        line_start: 254
        source_file: /src/dovecot/src/lib-var-expand/expansion-filter-if.c
    typedefs: []
    union: []
- function_names:
  - var_expand_process
  - var_expand_system_os
  - var_expand_system
  - var_expand_dovecot
  - var_expand_env
  - var_expand_event
  - var_expand_date
  - var_expand_time
  - var_expand_generate
  - var_expand_provider_is_builtin
  - var_expand_table_key_cmp
  - var_expand_merge_tables
  - var_expand_state_set_transfer_data
  - var_expand_state_set_transfer_binary
  - var_expand_state_set_transfer
  - var_expand_state_unset_transfer
  - call_provider_table
  - call_value_provider
  - lookup_table
  - lookup_tables
  - var_expand_state_lookup_variable
  - var_expand
  - t_var_expand
  source_file: /src/dovecot/src/lib-var-expand/var-expand.c
  types:
    enum:
    - enumerators:
      - name: OS_DEFAULT_TYPE_SYSNAME
      - name: OS_DEFAULT_TYPE_RELEASE
      item_type: enum
      name: os_default_type
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-var-expand/var-expand.c
    preproc_defs:
    - item_type: preproc_def
      name: ENV_CPU_COUNT
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-var-expand/var-expand.c
      type_or_value: '"NCPU"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - run_var_expand_tests
  - test_var_expand_builtin_filters
  - test_var_expand_math
  - test_var_expand_if
  - test_var_expand_switch
  - test_custom_provider
  - test_var_expand_providers
  - test_var_expand_provider_arr
  - test_var_expand_tables_arr
  - test_escape
  - test_var_expand_escape
  - test_value
  - test_value2
  - test_var_expand_value_func
  - test_var_expand_value_func_arr
  - test_var_expand_merge_tables
  - test_var_expand_variables
  - test_filter
  - test_var_expand_parameter_sorted
  - test_var_expand_perc
  - test_var_expand_set_copy
  - test_var_expand_generate
  source_file: /src/dovecot/src/lib-var-expand/test-var-expand.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*in'
        type: char
      - name: '*out'
        type: char
      - name: ret
        type: int
      item_type: struct
      name: var_expand_test
      pos:
        line_end: 23
        line_start: 19
        source_file: /src/dovecot/src/lib-var-expand/test-var-expand.c
    - fields:
      - name: '*prog_in'
        type: char
      - name: '*export'
        type: char
      item_type: struct
      name: test_case
      pos:
        line_end: 1126
        line_start: 1123
        source_file: /src/dovecot/src/lib-var-expand/test-var-expand.c
    - fields:
      - name: '*input'
        type: char
      - name: '*error'
        type: char
      item_type: struct
      name: test_case_err
      pos:
        line_end: 1215
        line_start: 1212
        source_file: /src/dovecot/src/lib-var-expand/test-var-expand.c
    typedefs: []
    union: []
- function_names:
  - var_expand_program_create
  - var_expand_program_dump
  - var_expand_program_execute
  - var_expand_program_variables
  - var_expand_program_free
  - export_number
  - var_expand_program_export_one
  - var_expand_program_export_append
  - var_expand_program_export
  - extract_name
  - extract_value
  - extract_number
  - ADVANCE_INPUT
  - var_expand_program_import_stmt
  - var_expand_program_import_one
  - var_expand_program_import_sized
  - var_expand_program_import
  source_file: /src/dovecot/src/lib-var-expand/expansion-program.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_PROGRAM_SIZE
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-var-expand/expansion-program.c
      type_or_value: '8192'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-var-expand/var-expand-parser-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VAR_EXPAND_PARSER_PRIVATE_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-var-expand/var-expand-parser-private.h
      type_or_value: '1'
    - item_type: preproc_def
      name: VAR_EXPAND_PARSER_STYPE
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-var-expand/var-expand-parser-private.h
      type_or_value: struct var_expand_parser_state
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*input'
        type: char
      - name: left
        type: size_t
      - name: input_pos
        type: size_t
      - name: '*str'
        type: string_t
      - name: '* scanner'
        type: void
      - name: '*plist'
        type: struct var_expand_program
      - name: '*pp'
        type: struct var_expand_program
      - name: '*p'
        type: struct var_expand_program
      - name: failed
        type: bool
      - name: '*error'
        type: char
      - name: '*params'
        type: struct var_expand_parameter
      - name: idx
        type: int
      - name: '*funcname'
        type: char
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      - name: oper
        type: enum var_expand_statement_operator
      - name: number
        type: intmax_t
      - name: (const_string)
        type: ARRAY_TYPE
      item_type: struct
      name: var_expand_parser_state
      pos:
        line_end: 27
        line_start: 4
        source_file: /src/dovecot/src/lib-var-expand/var-expand-parser-private.h
    typedefs: []
    union: []
- function_names:
  - var_expand_table_size
  - var_expand_table_get
  - var_expand_table_set_value
  - var_expand_table_set_value
  - var_expand_table_set_func
  - var_expand_table_set_func
  - var_expand_table_copy
  source_file: /src/dovecot/src/lib-var-expand/var-expand.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VAR_EXPAND_TABLE_END
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-var-expand/var-expand.h
      type_or_value: '{ .key = NULL }'
    - item_type: preproc_def
      name: VAR_EXPAND_CONTEXTS_END
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-var-expand/var-expand.h
      type_or_value: (void*)var_expand_contexts_end
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      - name: '*func'
        type: value_provider_func_t
      item_type: struct
      name: var_expand_table
      pos:
        line_end: 30
        line_start: 23
        source_file: /src/dovecot/src/lib-var-expand/var-expand.h
    - fields:
      - name: '*key'
        type: char
      - name: '*func'
        type: value_provider_func_t
      item_type: struct
      name: var_expand_provider
      pos:
        line_end: 37
        line_start: 32
        source_file: /src/dovecot/src/lib-var-expand/var-expand.h
    - fields:
      - name: '*table'
        type: struct var_expand_table
      - name: '*providers'
        type: struct var_expand_provider
      - name: '*const *tables_arr'
        type: struct var_expand_table
      - name: '*const *providers_arr'
        type: struct var_expand_provider
      - name: '*escape_func'
        type: var_expand_escape_func_t
      - name: '*escape_context'
        type: void
      - name: '*const *contexts'
        type: void
      - name: '*context'
        type: void
      - name: '*event'
        type: struct event
      item_type: struct
      name: var_expand_params
      pos:
        line_end: 68
        line_start: 41
        source_file: /src/dovecot/src/lib-var-expand/var-expand.h
    typedefs:
    - item_type: typedef
      name: "value_provider_func_t(const char *key, const char **value_r,\n\t\t\t\t
        \ void *context, const char **error_r)"
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-var-expand/var-expand.h
      type: int
    - item_type: typedef
      name: '*var_expand_escape_func_t(const char *str, void *context)'
      pos:
        line_end: 15
        line_start: 15
        source_file: /src/dovecot/src/lib-var-expand/var-expand.h
      type: char
    union: []
- function_names:
  - ERROR_UNSUPPORTED_KEY
  - ERROR_IF_NO_TRANSFER_TO
  source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
  types:
    enum:
    - enumerators:
      - name: VAR_EXPAND_STATEMENT_OPER_PLUS
        value: '0'
      - name: VAR_EXPAND_STATEMENT_OPER_MINUS
      - name: VAR_EXPAND_STATEMENT_OPER_SLASH
      - name: VAR_EXPAND_STATEMENT_OPER_MODULO
      - name: VAR_EXPAND_STATEMENT_OPER_STAR
      - name: VAR_EXPAND_STATEMENT_OPER_COUNT
      item_type: enum
      name: var_expand_statement_operator
      pos:
        line_end: 54
        line_start: 47
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
    preproc_defs:
    - item_type: preproc_def
      name: VAR_EXPAND_PRIVATE_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
      type_or_value: '1'
    - item_type: preproc_def
      name: ERROR_TOO_MANY_UNNAMED_PARAMETERS
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
      type_or_value: "STMT_START { \\\n\t*error_r = \"Too many positional parameters\";
        \\\n\treturn -1; \\\n} STMT_END"
    - item_type: preproc_def
      name: ERROR_IF_NO_PARAMETERS
      pos:
        line_end: 23
        line_start: 18
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
      type_or_value: "STMT_START { if (stmt->params == NULL) { \\\n\t*error_r = \"Missing
        parameters\"; \\\n\treturn -1; \\\n} } STMT_END"
    - item_type: preproc_def
      name: ERROR_IF_ANY_PARAMETERS
      pos:
        line_end: 34
        line_start: 25
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
      type_or_value: "STMT_START { if (stmt->params != NULL) { \\\n\tconst char *key
        = var_expand_parameter_key(stmt->params); \\\n\tif (key != NULL) { \\\n\t\tERROR_UNSUPPORTED_KEY(key);
        \\\n\t} else { \\\n\t\tERROR_TOO_MANY_UNNAMED_PARAMETERS; \\\n\t} \\\n} }
        STMT_END"
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*next'
        type: struct var_expand_program
      - name: '*first'
        type: struct var_expand_statement
      - name: '*const *variables'
        type: char
      - name: only_literal
        type: bool
      item_type: struct
      name: var_expand_program
      pos:
        line_end: 62
        line_start: 56
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
    - fields:
      - name: '*params'
        type: struct var_expand_params
      - name: '*result'
        type: string_t
      - name: '*delayed_error'
        type: char
      - name: '*transfer'
        type: string_t
      - name: transfer_set
        type: bool
      - name: transfer_binary
        type: bool
      item_type: struct
      name: var_expand_state
      pos:
        line_end: 75
        line_start: 64
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
    - fields:
      - name: '*next'
        type: struct var_expand_statement
      - name: '*function'
        type: char
      - name: '*params'
        type: struct var_expand_parameter
      item_type: struct
      name: var_expand_statement
      pos:
        line_end: 81
        line_start: 77
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
    typedefs:
    - item_type: typedef
      name: "var_expand_filter_func_t(const struct var_expand_statement *stmt,\n\t\t\t\t
        struct var_expand_state *state, const char **error_r)"
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/dovecot/src/lib-var-expand/var-expand-private.h
      type: int
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-var-expand/expansion.h
  types:
    enum:
    - enumerators:
      - name: VAR_EXPAND_PARAMETER_VALUE_TYPE_STRING
      - name: VAR_EXPAND_PARAMETER_VALUE_TYPE_VARIABLE
      - name: VAR_EXPAND_PARAMETER_VALUE_TYPE_INT
      - name: VAR_EXPAND_PARAMETER_VALUE_TYPE_COUNT
      item_type: enum
      name: var_expand_parameter_value_type
      pos:
        line_end: 8
        line_start: 3
        source_file: /src/dovecot/src/lib-var-expand/expansion.h
    preproc_defs:
    - item_type: preproc_def
      name: EXPANSION_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-var-expand/expansion.h
      type_or_value: '1'
    structs:
    - fields:
      - name: '*next'
        type: struct var_expand_parameter
      - name: '*key'
        type: char
      - name: idx
        type: int
      - name: value_type
        type: enum var_expand_parameter_value_type
      - name: value
        type: union var_expand_parameter_value
      item_type: struct
      name: var_expand_parameter
      pos:
        line_end: 21
        line_start: 15
        source_file: /src/dovecot/src/lib-var-expand/expansion.h
    - fields:
      - name: '*name'
        type: char
      - name: '*const filter'
        type: var_expand_filter_func_t
      item_type: struct
      name: var_expand_filter
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-var-expand/expansion.h
    typedefs: []
    union:
    - fields:
      - name: '*str'
        type: char
      - name: num
        type: intmax_t
      item_type: union
      name: var_expand_parameter_value
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lib-var-expand/expansion.h
- function_names:
  - test_build_search_args
  - test_mail_search_args_imap
  - main
  source_file: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CURRENT_UNIX_TIME
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c
      type_or_value: '1000000'
    structs:
    - fields:
      - name: '*input'
        type: char
      item_type: struct
      name: "tests[] = {\n\t{ \"ALL\", NULL },\n\t{ \"1,5:6,10:15\", NULL },\n\t{
        \"UID 1,5:6,10:15\", NULL },\n\t{ \"ANSWERED FLAGGED DELETED SEEN DRAFT RECENT\",\n\t
        \ \"ANSWERED FLAGGED DELETED SEEN DRAFT RECENT\" },\n\t{ \"KEYWORD foo KEYWORD
        bar\", NULL },\n\t{ \"BEFORE 20-May-2015\", \"BEFORE \\\"20-May-2015\\\"\"
        },\n\t{ \"ON 20-May-2015\", \"ON \\\"20-May-2015\\\"\" },\n\t{ \"SINCE 20-May-2015\",
        \"SINCE \\\"20-May-2015\\\"\" },\n\t{ \"SENTBEFORE 20-May-2015\", \"SENTBEFORE
        \\\"20-May-2015\\\"\" },\n\t{ \"SENTON 20-May-2015\", \"SENTON \\\"20-May-2015\\\"\"
        },\n\t{ \"SENTSINCE 20-May-2015\", \"SENTSINCE \\\"20-May-2015\\\"\" },\n\t{
        \"SAVEDBEFORE 20-May-2015\", \"SAVEDBEFORE \\\"20-May-2015\\\"\" },\n\t{ \"SAVEDON
        20-May-2015\", \"SAVEDON \\\"20-May-2015\\\"\" },\n\t{ \"SAVEDSINCE 20-May-2015\",
        \"SAVEDSINCE \\\"20-May-2015\\\"\" },\n\t{ \"X-SAVEDBEFORE 20-May-2015\",
        \"SAVEDBEFORE \\\"20-May-2015\\\"\" },\n\t{ \"X-SAVEDON 20-May-2015\", \"SAVEDON
        \\\"20-May-2015\\\"\" },\n\t{ \"X-SAVEDSINCE 20-May-2015\", \"SAVEDSINCE \\\"20-May-2015\\\"\"
        },\n\t{ \"OLDER 1\", NULL },\n\t{ \"OLDER 1000\", NULL },\n\t{ \"YOUNGER 1\",
        NULL },\n\t{ \"YOUNGER 1000\", NULL },\n\t{ \"SMALLER 0\", NULL },\n\t{ \"SMALLER
        1\", NULL },\n\t{ \"SMALLER 4294967295\", NULL },\n\t{ \"LARGER 0\", NULL
        },\n\t{ \"LARGER 1\", NULL },\n\t{ \"LARGER 4294967295\", NULL },\n\t{ \"FROM
        foo\", NULL },\n\t{ \"TO foo\", NULL },\n\t{ \"CC foo\", NULL },\n\t{ \"BCC
        foo\", NULL },\n\t{ \"SUBJECT foo\", NULL },\n\t{ \"HEADER subjecT foo\",
        \"SUBJECT foo\" },\n\t{ \"HEADER subjecT2 foo\", \"HEADER SUBJECT2 foo\" },\n\t{
        \"BODY foo\", NULL },\n\t{ \"TEXT foo\", NULL },\n\t{ \"MODSEQ 0\", NULL },\n\t{
        \"MODSEQ 1\", NULL },\n\t{ \"MODSEQ 18446744073709551615\", NULL },\n\t{ \"MODSEQ
        /flags/keyword all 0\", NULL },\n\t{ \"MODSEQ /flags/\\\\Seen all 0\", NULL
        },\n\t{ \"MODSEQ /flags/\\\\Seen priv 0\", NULL },\n\t{ \"MODSEQ /flags/\\\\Seen
        shared 0\", NULL },\n\t{ \"INTHREAD REFERENCES seen\", \"INTHREAD REFERENCES
        (SEEN)\" },\n\t{ \"INTHREAD ORDEREDSUBJECT seen\", \"INTHREAD ORDEREDSUBJECT
        (SEEN)\" },\n\t{ \"INTHREAD REFS seen\", \"INTHREAD REFS (SEEN)\" },\n\t{
        \"INTHREAD REFS ( OR text foo OR keyword bar seen )\",\n\t  \"INTHREAD REFS
        ((OR TEXT foo OR KEYWORD bar SEEN))\" },\n\t{ \"X-GUID foo\", NULL },\n\t{
        \"X-MAILBOX foo\", NULL },\n\t{ \"X-REAL-UID 1,5:6,10:15\", NULL },\n\t/*
        SEARCH=X-MIMEPART */\n\t{ \"MIMEPART CHILD EXISTS\", NULL },\n\t{ \"MIMEPART
        ( CHILD EXISTS )\",\n\t  \"MIMEPART CHILD EXISTS\" },\n\t{ \"MIMEPART ( CHILD
        EXISTS HEADER Comment Hopla )\",\n\t  \"MIMEPART (CHILD EXISTS HEADER COMMENT
        Hopla)\" },\n\t{ \"MIMEPART ( DESCRIPTION Frop ENCODING base64 )\",\n\t  \"MIMEPART
        (DESCRIPTION Frop ENCODING base64)\" },\n\t{ \"MIMEPART ( DISPOSITION TYPE
        attachment \"\n\t    \"DISPOSITION PARAM FILENAME frop.txt )\",\n\t  \"MIMEPART
        (DISPOSITION TYPE attachment \"\n\t    \"DISPOSITION PARAM FILENAME frop.txt)\"
        },\n\t{ \"MIMEPART ( ID <frop.example.com> LANGUAGE en )\",\n\t  \"MIMEPART
        (ID <frop.example.com> LANGUAGE en)\" },\n\t{ \"MIMEPART ( LOCATION http://www.dovecot.org
        )\",\n\t  \"MIMEPART LOCATION http://www.dovecot.org\" },\n\t{ \"MIMEPART
        NOT MD5 373def35afde6378efd6172dfeadfd\", NULL },\n\t{ \"MIMEPART OR PARAM
        charset utf-8 TYPE text\",\n\t  \"MIMEPART OR PARAM CHARSET utf-8 TYPE text\"
        },\n\t{ \"MIMEPART ( OR SIZE LARGER 25 SIZE SMALLER 1023 )\",\n\t  \"MIMEPART
        OR SIZE LARGER 25 SIZE SMALLER 1023\" },\n\t{ \"MIMEPART ( TYPE video SUBTYPE
        mpeg )\",\n\t  \"MIMEPART (TYPE video SUBTYPE mpeg)\" },\n\t{ \"( OR MIMEPART
        ( DEPTH 2 INDEX 1 ) MIMEPART ( DEPTH MAX 4 INDEX 3 ) )\",\n\t  \"(OR MIMEPART
        (DEPTH 2 INDEX 1) MIMEPART (DEPTH MAX 4 INDEX 3))\" },\n\t{ \"MIMEPART FILENAME
        IS frop.txt\", NULL },\n\t{ \"MIMEPART FILENAME BEGINS frop\", NULL },\n\t{
        \"MIMEPART FILENAME ENDS .txt\", NULL },\n\t{ \"MIMEPART FILENAME CONTAINS
        frop\", NULL },\n\t{ \"MIMEPART BODY frop MIMEPART TEXT frop\", NULL },\n\t{
        \"MIMEPART ( CC appie BCC theo FROM leo REPLY-TO henk SENDER arie )\",\n\t
        \ \"MIMEPART (CC appie BCC theo FROM leo REPLY-TO henk SENDER arie)\" },\n\t{
        \"MIMEPART ( MESSAGE-ID <frop4222> IN-REPLY-TO <frop421> )\",\n\t  \"MIMEPART
        (MESSAGE-ID <frop4222> IN-REPLY-TO <frop421>)\" },\n\t{ \"MIMEPART ( SUBJECT
        Frop TO henkie SENTON 20-Feb-2017 )\",\n\t  \"MIMEPART (SUBJECT Frop TO henkie
        SENTON \\\"20-Feb-2017\\\")\" },\n\t{ \"MIMEPART ( OR SENTBEFORE 20-May-2015
        SENTSINCE 20-Feb-2017 )\",\n\t  \"MIMEPART OR SENTBEFORE \\\"20-May-2015\\\"
        SENTSINCE \\\"20-Feb-2017\\\"\" },\n\t{ \"MIMEPART ( ID <frop> PARENT ID <friep>
        )\",\n\t  \"MIMEPART (ID <frop> PARENT (ID <friep>))\" },\n\t{ \"MIMEPART
        ( ID <frop> CHILD ( DESCRIPTION frop ID friep ) )\",\n\t  \"MIMEPART (ID <frop>
        CHILD (DESCRIPTION frop ID friep))\" },\n\t{ \"MIMEPART CHILD EXISTS MIMEPART
        PARENT EXISTS\", NULL },\n}"
      pos:
        line_end: 14
        line_start: 12
        source_file: /src/dovecot/src/lib-storage/test-mail-search-args-imap.c
    typedefs: []
    union: []
- function_names:
  - mailbox_attributes_init
  - mailbox_attributes_deinit
  - mailbox_attribute_internal_cmp
  - mailbox_attribute_register_internal
  - mailbox_attribute_register_internals
  - mailbox_attribute_unregister_internal
  - mailbox_attribute_unregister_internals
  - mailbox_internal_attribute_get_int
  - mailbox_internal_attribute_get
  - mailbox_internal_attributes_get
  - mailbox_attribute_set_common
  - mailbox_attribute_set
  - mailbox_attribute_unset
  - mailbox_attribute_value_to_string
  - mailbox_attribute_get_common
  - mailbox_attribute_get
  - mailbox_attribute_get_stream
  - mailbox_attribute_dict_is_enabled
  - mailbox_attribute_iter_init
  - mailbox_attribute_iter_next
  - mailbox_attribute_iter_deinit
  source_file: /src/dovecot/src/lib-storage/mailbox-attribute.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: iter
        type: struct mailbox_attribute_iter
      - name: pool
        type: pool_t
      - name: (const_string)
        type: ARRAY_TYPE
      - name: extra_attr_idx
        type: unsigned int
      - name: '*real_iter'
        type: struct mailbox_attribute_iter
      - name: iter_failed
        type: bool
      item_type: struct
      name: mailbox_attribute_internal_iter
      pos:
        line_end: 475
        line_start: 466
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.c
    typedefs: []
    union: []
- function_names:
  - T_MAILBOX_LIST_ERR_NOT_FOUND
  - MAILBOX_INFO_FLAGS_FINISHED
  source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_LIST_NAME_MAILDIRPLUSPLUS
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
      type_or_value: '"maildir++"'
    - item_type: preproc_def
      name: MAILBOX_LIST_NAME_IMAPDIR
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
      type_or_value: '"imapdir"'
    - item_type: preproc_def
      name: MAILBOX_LIST_NAME_FS
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
      type_or_value: '"fs"'
    - item_type: preproc_def
      name: MAILBOX_LIST_NAME_INDEX
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
      type_or_value: '"index"'
    - item_type: preproc_def
      name: MAILBOX_LIST_NAME_NONE
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
      type_or_value: '"none"'
    - item_type: preproc_def
      name: MAILBOX_LOG_FILE_NAME
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
      type_or_value: '"dovecot.mailbox.log"'
    structs:
    - fields:
      - name: '*(*alloc)(void)'
        type: struct mailbox_list
      - name: (*init)(struct mailbox_list *list, const char **error_r)
        type: int
      - name: (*deinit)(struct mailbox_list *list)
        type: void
      - name: "(*get_storage)(struct mailbox_list **list, const char **vname,\n\t\t\t
          \  enum mailbox_list_get_storage_flags flags,\n\t\t\t   struct mail_storage
          **storage_r)"
        type: int
      - name: (*get_hierarchy_sep)(struct mailbox_list *list)
        type: char
      - name: "*(*get_vname)(struct mailbox_list *list,\n\t\t\t\t const char *storage_name)"
        type: char
      - name: "*(*get_storage_name)(struct mailbox_list *list,\n\t\t\t\t\tconst char
          *vname)"
        type: char
      - name: "(*get_path)(struct mailbox_list *list, const char *name,\n\t\t\tenum
          mailbox_list_path_type type, const char **path_r)"
        type: int
      - name: '*(*get_temp_prefix)(struct mailbox_list *list, bool global)'
        type: char
      - name: "*(*join_refpattern)(struct mailbox_list *list,\n\t\t\t\t       const
          char *ref, const char *pattern)"
        type: char
      - name: "*\n\t\t(*iter_init)(struct mailbox_list *list,\n\t\t\t     const char
          *const *patterns,\n\t\t\t     enum mailbox_list_iter_flags flags)"
        type: struct mailbox_list_iterate_context
      - name: "*\n\t\t(*iter_next)(struct mailbox_list_iterate_context *ctx)"
        type: struct mailbox_info
      - name: (*iter_deinit)(struct mailbox_list_iterate_context *ctx)
        type: int
      - name: "(*get_mailbox_flags)(struct mailbox_list *list,\n\t\t\t\t const char
          *dir, const char *fname,\n\t\t\t\t enum mailbox_list_file_type type,\n\t\t\t\t
          enum mailbox_info_flags *flags_r)"
        type: int
      - name: (*is_internal_name)(struct mailbox_list *list, const char *name)
        type: bool
      - name: "(*subscriptions_refresh)(struct mailbox_list *src_list,\n\t\t\t\t     struct
          mailbox_list *dest_list)"
        type: int
      - name: "(*set_subscribed)(struct mailbox_list *list,\n\t\t\t      const char
          *name, bool set)"
        type: int
      - name: (*delete_mailbox)(struct mailbox_list *list, const char *name)
        type: int
      - name: (*delete_dir)(struct mailbox_list *list, const char *name)
        type: int
      - name: (*delete_symlink)(struct mailbox_list *list, const char *name)
        type: int
      - name: "(*rename_mailbox)(struct mailbox_list *oldlist, const char *oldname,\n\t\t\t
          \     struct mailbox_list *newlist, const char *newname)"
        type: int
      - name: "(*notify_init)(struct mailbox_list *list,\n\t\t\t   enum mailbox_list_notify_event
          mask,\n\t\t\t   struct mailbox_list_notify **notify_r)"
        type: int
      - name: "(*notify_next)(struct mailbox_list_notify *notify,\n\t\t\t   const
          struct mailbox_list_notify_rec **rec_r)"
        type: int
      - name: (*notify_deinit)(struct mailbox_list_notify *notify)
        type: void
      - name: "(*notify_wait)(struct mailbox_list_notify *notify,\n\t\t\t    void
          (*callback)(void *context), void *context)"
        type: void
      - name: (*notify_flush)(struct mailbox_list_notify *notify)
        type: void
      item_type: struct
      name: mailbox_list_vfuncs
      pos:
        line_end: 93
        line_start: 35
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: mailbox_list_module_register
      pos:
        line_end: 97
        line_start: 95
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
    - fields:
      - name: '*name'
        type: char
      - name: '*event'
        type: struct event
      - name: props
        type: enum mailbox_list_properties
      - name: mailbox_name_max_length
        type: size_t
      - name: v
        type: struct mailbox_list_vfuncs
      - name: pool
        type: pool_t
      - name: '*ns'
        type: struct mail_namespace
      - name: '*mail_set'
        type: struct mail_storage_settings
      - name: '*default_box_set'
        type: struct mailbox_settings
      - name: flags
        type: enum mailbox_list_flags
      - name: root_permissions
        type: struct mailbox_permissions
      - name: '*subscriptions'
        type: struct mailbox_tree_context
      - name: subscriptions_mtime
        type: time_t
      - name: '*changelog'
        type: struct mailbox_log
      - name: changelog_timestamp
        type: time_t
      - name: '*lock'
        type: struct file_lock
      - name: lock_refcount
        type: int
      - name: guid_cache_pool
        type: pool_t
      - name: guid_cache_errors
        type: bool
      - name: '*last_internal_error'
        type: char
      - name: '*error_string'
        type: char
      - name: error
        type: enum mail_error
      - name: temporary_error
        type: bool
      - name: index_root_dir_created
        type: bool
      - name: list_index_root_dir_created
        type: bool
      - name: guid_cache_updated
        type: bool
      - name: disable_rebuild_on_corruption
        type: bool
      - name: guid_cache_invalidated
        type: bool
      - name: last_error_is_internal
        type: bool
      item_type: struct
      name: mailbox_list
      pos:
        line_end: 151
        line_start: 104
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
    - fields:
      - name: '*list'
        type: struct mailbox_list
      - name: pool
        type: pool_t
      - name: flags
        type: enum mailbox_list_iter_flags
      - name: failed
        type: bool
      - name: index_iteration
        type: bool
      - name: iter_from_index_dir
        type: bool
      - name: info
        type: struct mailbox_info
      - name: info_pool
        type: pool_t
      - name: '*glob'
        type: struct imap_match_glob
      - name: '*autocreate_ctx'
        type: struct mailbox_list_autocreate_iterate_context
      - name: specialuse_info
        type: struct mailbox_info
      - name: '*specialuse_info_flags'
        type: char
      - name: '*subscriptions'
        type: struct mailbox_tree_context
      - name: '*subscriptions_iter'
        type: struct mailbox_tree_iterate_context
      - name: subscriptions_info
        type: struct mailbox_info
      - name: subscriptions_children
        type: bool
      item_type: struct
      name: mailbox_list_iterate_context
      pos:
        line_end: 179
        line_start: 157
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
    - fields:
      - name: '*iter_ctx'
        type: struct mailbox_list_iterate_context
      - name: '*tree_ctx'
        type: struct mailbox_tree_context
      - name: '*glob'
        type: struct imap_match_glob
      - name: leaf_flags
        type: enum mailbox_info_flags
      - name: match_parents
        type: bool
      item_type: struct
      name: mailbox_list_iter_update_context
      pos:
        line_end: 189
        line_start: 181
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
    typedefs: []
    union:
    - fields:
      - name: super
        type: struct mailbox_list_vfuncs
      - name: '*reg'
        type: struct mailbox_list_module_register
      item_type: union
      name: mailbox_list_module_context
      pos:
        line_end: 102
        line_start: 99
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
    - fields:
      - name: '*reg'
        type: struct mailbox_list_module_register
      item_type: union
      name: mailbox_list_iterate_module_context
      pos:
        line_end: 155
        line_start: 153
        source_file: /src/dovecot/src/lib-storage/mailbox-list-private.h
- function_names:
  - DLUA_MAILBOX_EQUALS
  source_file: /src/dovecot/src/lib-storage/mail-storage-lua-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_STORAGE_LUA_PRIVATE_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-storage/mail-storage-lua-private.h
      type_or_value: '1'
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      - name: value_len
        type: size_t
      item_type: struct
      name: lua_storage_keyvalue
      pos:
        line_end: 10
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/mail-storage-lua-private.h
    typedefs: []
    union: []
- function_names:
  - imap_search_fallback
  - imap_search_not
  - imap_search_or
  - CALLBACK_STR
  - imap_search_all
  - imap_search_uid
  - CALLBACK_FLAG
  - imap_search_new
  - imap_search_unkeyword
  - arg_new_date
  - CALLBACK_DATE
  - imap_search_savedatesupported
  - arg_new_size
  - imap_search_larger
  - imap_search_smaller
  - arg_new_header
  - CALLBACK_HDR
  - imap_search_header
  - arg_new_body
  - CALLBACK_BODY
  - arg_new_interval
  - imap_search_older
  - imap_search_younger
  - arg_modseq_set_type
  - arg_modseq_set_ext
  - imap_search_modseq
  - imap_search_last_result
  - mail_search_arg_set_fuzzy
  - imap_search_fuzzy
  - imap_search_mimepart
  - imap_search_inthread
  - imap_search_x_mailbox
  - imap_search_x_real_uid
  - mail_search_register_init_imap
  - mail_search_register_init_imap4rev2
  - mail_search_register_init_imap4rev1
  - mail_search_register_get_imap4rev2
  - mail_search_register_get_imap4rev1
  source_file: /src/dovecot/src/lib-storage/mail-search-register-imap.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/fail-mail-storage.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mailbox_get_name_without_prefix
  - mail_storage_init
  - mail_storage_deinit
  - mail_storage_class_register
  - mail_storage_class_unregister
  - mail_storage_find_class
  - mail_storage_autodetect
  - mail_storage_get_class
  - mail_storage_verify_root
  - mail_storage_create_root
  - mail_storage_match_class
  - mail_storage_find
  - mail_storage_create_ns_instance
  - mail_storage_create_list
  - pop3_uidl_format_has_md5
  - mail_storage_create_real
  - mail_storage_create
  - mail_storage_unref
  - mail_storage_obj_ref
  - mail_storage_obj_unref
  - mail_storage_clear_error
  - mail_storage_set_error
  - mail_storage_set_internal_error
  - mail_storage_set_critical_error
  - mail_storage_set_critical
  - mailbox_set_critical
  - mail_set_critical
  - mail_storage_get_last_internal_error
  - mailbox_get_last_internal_error
  - mail_get_last_internal_error
  - mail_storage_copy_error
  - mail_storage_copy_list_error
  - mailbox_set_index_error
  - mail_storage_set_index_error
  - mail_storage_get_settings
  - mail_storage_get_user
  - mail_storage_set_callbacks
  - mail_storage_purge
  - mail_storage_get_last_error
  - mailbox_get_last_error
  - mailbox_get_last_mail_error
  - mail_storage_last_error_push
  - mail_storage_last_error_pop
  - mail_storage_is_mailbox_file
  - mail_storage_set_error_from_errno
  - mailbox_list_get_default_box_settings
  - mailbox_name_try_get_settings
  - mailbox_alloc
  - mailbox_alloc_guid
  - str_contains_special_use
  - namespace_find_special_use
  - namespaces_find_special_use
  - mailbox_alloc_for_user
  - mailbox_is_autocreated
  - mailbox_is_autosubscribed
  - mailbox_autocreate
  - mailbox_autocreate_and_reopen
  - mailbox_vname_normalize_ns_prefix_nfc
  - mailbox_rename_nfc_forced
  - mailbox_nfc_normalize
  - mailbox_name_verify_extra_separators
  - mailbox_verify_name_prefix
  - mailbox_verify_name_int
  - mailbox_verify_name
  - mailbox_verify_existing_name_int
  - mailbox_verify_existing_name
  - mailbox_name_check_forbidden_chars
  - mailbox_skip_create_name_restrictions
  - mailbox_verify_create_name
  - have_listable_namespace_prefix
  - mailbox_exists
  - mailbox_open_full
  - mailbox_try_undelete
  - mailbox_open
  - mailbox_alloc_index_pvt
  - mailbox_open_index_pvt
  - mailbox_open_stream
  - mailbox_enable
  - mailbox_get_enabled_features
  - mail_storage_free_binary_cache
  - mailbox_close
  - mailbox_free
  - mailbox_equals
  - mailbox_is_any_inbox
  - mailbox_has_special_use
  - mailbox_copy_cache_decisions_from_inbox
  - mailbox_create
  - mailbox_update
  - mailbox_mark_index_deleted
  - mailbox_close_reset_path
  - mailbox_delete_real
  - mailbox_delete
  - mailbox_delete_empty
  - mail_storages_rename_compatible
  - nullequals
  - mailbox_lists_rename_compatible
  - mailbox_rename_check_children
  - mailbox_rename_real
  - mailbox_rename
  - mailbox_set_subscribed
  - mailbox_is_subscribed
  - mailbox_get_storage
  - mailbox_get_namespace
  - mailbox_get_settings
  - mailbox_get_name
  - mailbox_get_vname
  - mailbox_is_readonly
  - mailbox_backends_equal
  - mailbox_get_status_set_defaults
  - mailbox_get_status
  - mailbox_get_open_status
  - mailbox_get_metadata
  - mailbox_get_private_flags_mask
  - mailbox_sync_init
  - mailbox_sync_next
  - mailbox_sync_deinit
  - mailbox_sync
  - mailbox_notify_changes
  - mailbox_notify_changes_stop
  - mailbox_search_init
  - mailbox_search_deinit
  - mailbox_search_reset_progress_start
  - mailbox_search_set_progress_hidden
  - mailbox_search_notify
  - mailbox_search_next
  - mailbox_search_next_nonblock
  - mailbox_search_seen_lost_data
  - mailbox_search_mail_detach
  - mailbox_search_result_build
  - mailbox_transaction_begin
  - mailbox_transaction_commit
  - mailbox_transaction_commit_get_changes
  - mailbox_transaction_rollback
  - mailbox_transaction_get_count
  - mailbox_transaction_set_max_modseq
  - mailbox_transaction_get_mailbox
  - mailbox_save_dest_mail_close
  - mailbox_save_alloc
  - mailbox_save_context_deinit
  - mailbox_save_set_flags
  - mailbox_save_copy_flags
  - mailbox_save_set_min_modseq
  - mailbox_save_set_received_date
  - mailbox_save_set_save_date
  - mailbox_save_set_from_envelope
  - mailbox_save_set_uid
  - mailbox_save_set_guid
  - mailbox_save_set_pop3_uidl
  - mailbox_save_set_pop3_order
  - mailbox_save_get_dest_mail
  - mailbox_save_begin
  - mailbox_save_begin_replace
  - mailbox_save_continue
  - mailbox_save_add_pvt_flags
  - mailbox_save_context_reset
  - mailbox_save_finish
  - mailbox_save_cancel
  - mailbox_save_get_transaction
  - mailbox_copy_int
  - mailbox_copy
  - mailbox_move
  - mailbox_save_using_mail
  - mailbox_is_inconsistent
  - mailbox_set_deleted
  - get_path_to
  - mailbox_get_path_to
  - mailbox_get_path
  - mailbox_get_index_path
  - mailbox_get_permissions_if_not_set
  - mailbox_get_permissions
  - mailbox_refresh_permissions
  - mailbox_create_fd
  - mailbox_mkdir
  - mailbox_create_missing_dir
  - mail_storage_get_lock_timeout
  - mail_storage_settings_to_index_flags
  - mailbox_settings_filters_add
  - mail_storage_mailbox_create_event
  - mail_parse_human_timestamp
  - mail_set_mail_cache_corrupted
  - mail_storage_dotlock_create
  - mail_storage_lock_create
  - mailbox_lock_file_create
  - mailbox_sync_notify
  source_file: /src/dovecot/src/lib-storage/mail-storage.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_DELETE_RETRY_SECS
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dovecot/src/lib-storage/mail-storage.c
      type_or_value: '30'
    - item_type: preproc_def
      name: MAILBOX_MAX_HIERARCHY_NAME_LENGTH
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dovecot/src/lib-storage/mail-storage.c
      type_or_value: '255'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/test-mail-storage-common.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*storage_service'
        type: struct mail_storage_service_ctx
      - name: '*user'
        type: struct mail_user
      - name: '*ioloop'
        type: struct ioloop
      - name: '*home_root'
        type: char
      item_type: struct
      name: test_mail_storage_ctx
      pos:
        line_end: 11
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/test-mail-storage-common.h
    - fields:
      - name: '*username'
        type: char
      - name: '*driver'
        type: char
      - name: '*hierarchy_sep'
        type: char
      - name: '*const *extra_input'
        type: char
      item_type: struct
      name: test_mail_storage_settings
      pos:
        line_end: 18
        line_start: 13
        source_file: /src/dovecot/src/lib-storage/test-mail-storage-common.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-search-result-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: flags
        type: enum mailbox_search_result_flags
      - name: '*search_args'
        type: struct mail_search_args
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: removed_uids
        type: ARRAY_TYPE
      - name: args_have_flags
        type: bool
      - name: args_have_keywords
        type: bool
      - name: args_have_modseq
        type: bool
      item_type: struct
      name: mail_search_result
      pos:
        line_end: 19
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/mailbox-search-result-private.h
    typedefs: []
    union: []
- function_names:
  - mailbox_guid_cache_find
  - mailbox_guid_cache_add_mailbox
  - mailbox_guid_cache_refresh
  source_file: /src/dovecot/src/lib-storage/mailbox-guid-cache.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: guid
        type: guid_128_t
      - name: '*vname'
        type: char
      item_type: struct
      name: mailbox_guid_cache_rec
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/dovecot/src/lib-storage/mailbox-guid-cache.c
    typedefs: []
    union: []
- function_names:
  - mailbox_list_notify_wait
  source_file: /src/dovecot/src/lib-storage/mailbox-list-notify.h
  types:
    enum:
    - enumerators:
      - name: MAILBOX_LIST_NOTIFY_CREATE
        value: '0x01'
      - name: MAILBOX_LIST_NOTIFY_DELETE
        value: '0x02'
      - name: MAILBOX_LIST_NOTIFY_SUBSCRIBE
        value: '0x08'
      - name: MAILBOX_LIST_NOTIFY_RENAME
        value: '0x04'
      - name: MAILBOX_LIST_NOTIFY_UNSUBSCRIBE
        value: '0x10'
      - name: MAILBOX_LIST_NOTIFY_UIDVALIDITY
        value: '0x20'
      - name: MAILBOX_LIST_NOTIFY_APPENDS
        value: '0x40'
      - name: MAILBOX_LIST_NOTIFY_EXPUNGES
        value: '0x80'
      - name: MAILBOX_LIST_NOTIFY_SEEN_CHANGES
        value: '0x100'
      - name: MAILBOX_LIST_NOTIFY_MODSEQ_CHANGES
        value: "0x200\n#define MAILBOX_LIST_NOTIFY_STATUS \\\n\t(MAILBOX_LIST_NOTIFY_APPENDS
          | \\\n\t MAILBOX_LIST_NOTIFY_EXPUNGES | \\\n\t MAILBOX_LIST_NOTIFY_SEEN_CHANGES
          | \\\n\t MAILBOX_LIST_NOTIFY_MODSEQ_CHANGES)"
      item_type: enum
      name: mailbox_list_notify_event
      pos:
        line_end: 24
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/mailbox-list-notify.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*list'
        type: struct mailbox_list
      - name: mask
        type: enum mailbox_list_notify_event
      item_type: struct
      name: mailbox_list_notify
      pos:
        line_end: 29
        line_start: 26
        source_file: /src/dovecot/src/lib-storage/mailbox-list-notify.h
    - fields:
      - name: events
        type: enum mailbox_list_notify_event
      - name: '*storage_name'
        type: char
      - name: guid
        type: guid_128_t
      - name: '*old_vname'
        type: char
      item_type: struct
      name: mailbox_list_notify_rec
      pos:
        line_end: 42
        line_start: 31
        source_file: /src/dovecot/src/lib-storage/mailbox-list-notify.h
    typedefs:
    - item_type: typedef
      name: mailbox_list_notify_callback_t(void *)
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/dovecot/src/lib-storage/mailbox-list-notify.h
      type: void
    union: []
- function_names:
  - fail_mailbox_mail_alloc
  - fail_mail_free
  - fail_mail_set_seq
  - fail_mail_set_uid
  - fail_mail_set_uid_cache_updates
  - fail_mail_prefetch
  - fail_mail_precache
  - fail_mail_add_temp_wanted_fields
  - fail_mail_get_flags
  - fail_mail_get_keywords
  - fail_mail_get_modseq
  - fail_mail_get_parts
  - fail_mail_get_date
  - fail_mail_get_received_date
  - fail_mail_get_save_date
  - fail_mail_get_fail_mail_size
  - fail_mail_get_physical_size
  - fail_mail_get_first_header
  - fail_mail_get_headers
  - fail_mail_get_header_stream
  - fail_mail_get_stream
  - fail_mail_get_binary_stream
  - fail_mail_get_special
  - fail_mail_get_backend_mail
  - fail_mail_update_flags
  - fail_mail_update_keywords
  - fail_mail_update_modseq
  - fail_mail_expunge
  - fail_mail_set_cache_corrupted
  source_file: /src/dovecot/src/lib-storage/fail-mail.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_search_parser_deinit
  - mail_search_parse_key
  - mail_search_parse_string
  - mail_search_parse_skip_next
  - mail_search_parser_get_error
  source_file: /src/dovecot/src/lib-storage/mail-search-parser.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_search_subargs_to_imap
  - mail_search_arg_to_imap_date
  - mail_search_arg_to_imap_flags
  - mail_search_arg_to_imap
  - mail_search_args_to_imap
  source_file: /src/dovecot/src/lib-storage/mail-search-args-imap.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAILBOX_LIST_FS_CONTEXT
  - mailbox_lists_init
  - mailbox_lists_deinit
  - mailbox_list_driver_find
  - mailbox_list_register
  - mailbox_list_unregister
  - mailbox_list_find_class
  - mailbox_list_create
  - mailbox_list_get_unexpanded_path
  - need_escape_dirstart
  - mailbox_list_escape_name_params
  - mailbox_list_name_unescape
  - mailbox_list_vname_prepare
  - mailbox_list_default_get_storage_name_part
  - mailbox_list_default_get_storage_name
  - mailbox_list_get_storage_name
  - mailbox_list_unescape_name_params
  - mailbox_list_storage_name_prepare
  - mailbox_list_name_escape
  - mailbox_list_default_get_vname_part
  - mailbox_list_default_get_vname
  - mailbox_list_get_vname
  - mailbox_list_destroy
  - mailbox_list_get_driver_name
  - mailbox_list_get_flags
  - mailbox_list_get_namespace
  - mailbox_list_get_event
  - mailbox_list_get_user
  - mailbox_list_get_storage_driver
  - mailbox_list_default_get_storage
  - mailbox_list_get_storage
  - mailbox_list_get_default_storage
  - mailbox_list_get_hierarchy_sep
  - mailbox_list_get_mail_set
  - mailbox_list_get_permissions_stat
  - mailbox_list_get_permissions_internal
  - mailbox_list_get_permissions
  - mailbox_list_get_root_permissions
  - mailbox_permissions_copy
  - get_expanded_path
  - mailbox_list_try_mkdir_root_parent
  - mailbox_list_try_mkdir_root
  - mailbox_list_mkdir_root
  - mailbox_list_is_valid_fs_name
  - mailbox_list_is_valid_name
  - mailbox_list_get_path
  - mailbox_list_get_root_path
  - mailbox_list_get_root_forced
  - mailbox_list_default_get_root_path
  - mailbox_list_get_temp_prefix
  - mailbox_list_get_global_temp_prefix
  - mailbox_list_join_refpattern
  - mailbox_has_children
  - mailbox_list_mailbox
  - mailbox_list_get_count
  - mailbox_list_init_changelog
  - mailbox_list_mkdir_missing_index_root
  - mailbox_list_mkdir_missing_list_index_root
  - mailbox_list_add_change
  - mailbox_list_set_subscribed
  - mailbox_list_delete_dir
  - mailbox_list_delete_symlink
  - mailbox_name_get_sha128
  - mailbox_list_get_changelog
  - mailbox_list_set_changelog_timestamp
  - mailbox_list_get_file_type
  - mailbox_list_dirent_is_alias_symlink
  - mailbox_list_try_get_absolute_path
  - mailbox_list_get_last_error
  - mailbox_list_get_last_mail_error
  - mailbox_list_get_last_internal_error
  - mailbox_list_clear_error
  - mailbox_list_set_error
  - mailbox_list_set_internal_error
  - mailbox_list_set_critical
  - mailbox_list_set_error_from_errno
  - mailbox_list_last_error_push
  - mailbox_list_last_error_pop
  - mailbox_list_init_fs
  - mailbox_list_fs_get_list
  - mailbox_list_lock
  - mailbox_list_unlock
  source_file: /src/dovecot/src/lib-storage/mailbox-list.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_LIST_LOCK_FNAME
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/lib-storage/mailbox-list.c
      type_or_value: '"mailboxes.lock"'
    - item_type: preproc_def
      name: MAILBOX_LIST_LOCK_SECS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/lib-storage/mailbox-list.c
      type_or_value: '60'
    structs:
    - fields:
      - name: module_ctx
        type: union fs_api_module_context
      - name: '*list'
        type: struct mailbox_list
      item_type: struct
      name: mailbox_list_fs_context
      pos:
        line_end: 38
        line_start: 35
        source_file: /src/dovecot/src/lib-storage/mailbox-list.c
    typedefs: []
    union: []
- function_names:
  - test_init_storage
  - test_deinit_storage
  - test_mail_storage_errors
  - test_mail_storage_last_error_push_pop
  - test_mailbox_verify_name_one
  - test_mailbox_verify_name_continue
  - test_mailbox_verify_name_driver_slash
  - test_mailbox_verify_name_driver_dot
  - test_mailbox_verify_name
  - test_mailbox_list_maildir_continue
  - test_mailbox_list_maildir_init
  - test_mailbox_list_maildir
  - test_mailbox_list_mbox
  - test_mail_parse_human_timestamp
  - test_mail_parse_human_timestamp_time_interval
  - test_mail_parse_human_timestamp_fail
  - main
  source_file: /src/dovecot/src/lib-storage/test-mail-storage.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*str'
        type: char
      - name: timestamp
        type: time_t
      - name: utc
        type: bool
      item_type: struct
      name: test_globals
      pos:
        line_end: 13
        line_start: 9
        source_file: /src/dovecot/src/lib-storage/test-mail-storage.c
    - fields:
      - name: ns_sep
        type: char
      - name: list_sep
        type: char
      - name: '*box'
        type: char
      - name: ret
        type: int
      item_type: struct
      name: mailbox_verify_test_cases
      pos:
        line_end: 257
        line_start: 252
        source_file: /src/dovecot/src/lib-storage/test-mail-storage.c
    - fields:
      - name: '*name'
        type: char
      - name: '*driver'
        type: char
      - name: '*mailbox_list_layout'
        type: char
      item_type: struct
      name: "test_cases[] = {\n\t\t{ \"mbox\", \"mbox\", \"\" },\n\t\t{ \"mbox mailbox_list_layout=fs\",
        \"mbox\", \"fs\" },\n\t\t{ \"mbox mailbox_list_layout=index\", \"mbox\", \"index\"
        },\n\t\t{ \"maildir mailbox_list_layout=index\", \"maildir\", \"index\" },\n\t\t{
        \"sdbox\", \"sdbox\", \"\" },\n\t\t{ \"sdbox mailbox_list_layout=fs\", \"sdbox\",
        \"fs\" },\n\t\t{ \"sdbox mailbox_list_layout=index\", \"sdbox\", \"index\"
        },\n\t\t{ \"mdbox\", \"mdbox\", \"\" },\n\t\t{ \"mdbox mailbox_list_layout=fs\",
        \"mdbox\", \"fs\" },\n\t\t{ \"mdbox mailbox_list_layout=index\", \"mdbox\",
        \"index\" },\n\t}"
      pos:
        line_end: 471
        line_start: 467
        source_file: /src/dovecot/src/lib-storage/test-mail-storage.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-uidvalidity.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-search-parser-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: (*parse_key)(struct mail_search_parser *parser, const char **key_r)
        type: int
      - name: "(*parse_string)(struct mail_search_parser *parser,\n\t\t\t    const
          char **value_r)"
        type: int
      - name: "(*parse_skip_next)(struct mail_search_parser *parser,\n\t\t\t\tconst
          char *str)"
        type: bool
      item_type: struct
      name: mail_search_parser_vfuncs
      pos:
        line_end: 11
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/mail-search-parser-private.h
    - fields:
      - name: v
        type: struct mail_search_parser_vfuncs
      - name: pool
        type: pool_t
      - name: '*cur_key'
        type: char
      - name: '*error'
        type: char
      item_type: struct
      name: mail_search_parser
      pos:
        line_end: 19
        line_start: 13
        source_file: /src/dovecot/src/lib-storage/mail-search-parser-private.h
    typedefs: []
    union: []
- function_names:
  - set_keyvalue
  - validate_chroot
  - user_reply_handle
  - mail_storage_service_add_code_overrides
  - service_auth_userdb_lookup
  - parse_uid
  - parse_gid
  - get_master_user
  - get_var_expand_table
  - mail_storage_service_var_userdb
  - mail_storage_service_get_var_expand_params
  - service_parse_privileges
  - mail_storage_service_seteuid
  - mail_storage_service_seteuid_root
  - mail_storage_service_restore_privileges
  - service_drop_privileges
  - mail_storage_service_init_post
  - mail_storage_service_io_activate_user
  - mail_storage_service_io_deactivate_user
  - mail_storage_service_io_activate_user_cb
  - mail_storage_service_io_deactivate_user_cb
  - mail_storage_service_fields_var_expand
  - mail_storage_service_var_expand_callback
  - mail_storage_service_user_get_log_prefix
  - mail_storage_service_user_get_event
  - mail_storage_service_user_get_username
  - mail_storage_service_init_log
  - mail_storage_service_time_moved
  - mail_storage_service_init
  - mail_storage_service_get_auth_conn
  - mail_storage_service_input_get_flags
  - mail_storage_service_set_auth_conn
  - mail_storage_service_first_init
  - mail_storage_service_load_modules
  - extra_field_key_cmp_p
  - mail_storage_service_generate_session_id
  - mail_storage_service_update_chroot
  - mail_storage_service_lookup_real
  - mail_storage_service_lookup
  - mail_storage_service_next_real
  - mail_storage_service_next
  - mail_storage_service_next_with_session_suffix
  - mail_storage_service_restrict_setenv
  - mail_storage_service_lookup_next
  - mail_storage_service_user_ref
  - mail_storage_service_user_unref
  - mail_storage_service_user_dup
  - mail_storage_service_user_get_userdb_fields
  - mail_storage_service_init_settings
  - mail_storage_service_all_iter_deinit
  - mail_storage_service_all_init_mask
  - mail_storage_service_all_next
  - mail_storage_service_deinit
  - mail_storage_service_user_get_set
  - mail_storage_service_user_get_input
  - mail_storage_service_user_get_settings_instance
  - mail_storage_service_user_get_service_ctx
  - mail_storage_service_user_get_pool
  - mail_storage_service_get_log_prefix
  - mail_storage_service_get_flags
  source_file: /src/dovecot/src/lib-storage/mail-storage-service.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_TIME_BACKWARDS_SLEEP_MSECS
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.c
      type_or_value: (5*1000)
    - item_type: preproc_def
      name: MAX_NOWARN_FORWARD_MSECS
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.c
      type_or_value: (10*1000)
    structs:
    - fields:
      - name: uid
        type: uid_t
      - name: gid
        type: gid_t
      - name: '*uid_source'
        type: char
      item_type: struct
      name: mail_storage_service_privileges
      pos:
        line_end: 42
        line_start: 38
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*service'
        type: struct master_service
      - name: '*default_log_prefix'
        type: char
      - name: '*conn'
        type: struct auth_master_connection
      - name: '*auth_list'
        type: struct auth_master_user_list_ctx
      - name: flags
        type: enum mail_storage_service_flags
      - name: debug
        type: bool
      - name: log_initialized
        type: bool
      item_type: struct
      name: mail_storage_service_ctx
      pos:
        line_end: 55
        line_start: 44
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.c
    - fields:
      - name: '*ctx'
        type: struct mail_storage_service_ctx
      - name: '*input'
        type: struct mail_storage_service_input
      - name: '*user'
        type: struct mail_storage_service_user
      item_type: struct
      name: mail_storage_service_init_var_expand_ctx
      pos:
        line_end: 61
        line_start: 57
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.c
    typedefs: []
    union: []
- function_names:
  - mailbox_tree_init
  - mailbox_tree_init_size
  - mailbox_tree_deinit
  - mailbox_tree_set_separator
  - mailbox_tree_set_parents_nonexistent
  - mailbox_tree_clear
  - mailbox_tree_get_pool
  - mailbox_tree_get_root
  - mailbox_tree_traverse
  - mailbox_tree_get
  - mailbox_tree_lookup
  - mailbox_tree_iterate_init
  - mailbox_tree_iterate_set_next_node
  - mailbox_tree_iterate_next
  - mailbox_tree_iterate_deinit
  - mailbox_tree_dup_branch
  - mailbox_tree_dup
  - mailbox_node_name_cmp
  - mailbox_tree_sort_branch
  - array_foreach_elem
  - mailbox_tree_sort
  source_file: /src/dovecot/src/lib-storage/mailbox-tree.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: separator
        type: char
      - name: parents_nonexistent
        type: bool
      - name: sorted
        type: bool
      - name: node_size
        type: unsigned int
      - name: '*nodes'
        type: struct mailbox_node
      item_type: struct
      name: mailbox_tree_context
      pos:
        line_end: 15
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/mailbox-tree.c
    - fields:
      - name: '*root'
        type: struct mailbox_node
      - name: flags_mask
        type: unsigned int
      - name: separator
        type: char
      - name: '*path_str'
        type: string_t
      - name: parent_pos
        type: size_t
      - name: first_child
        type: bool
      item_type: struct
      name: mailbox_tree_iterate_context
      pos:
        line_end: 28
        line_start: 17
        source_file: /src/dovecot/src/lib-storage/mailbox-tree.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-duplicate.h
  types:
    enum:
    - enumerators:
      - name: MAIL_DUPLICATE_CHECK_RESULT_EXISTS
      - name: MAIL_DUPLICATE_CHECK_RESULT_LOCK_TIMEOUT
      - name: MAIL_DUPLICATE_CHECK_RESULT_NOT_FOUND
      - name: MAIL_DUPLICATE_CHECK_RESULT_TOO_MANY_LOCKS
      - name: MAIL_DUPLICATE_CHECK_RESULT_IO_ERROR
      - name: MAIL_DUPLICATE_CHECK_RESULT_DEADLOCK
      item_type: enum
      name: mail_duplicate_check_result
      pos:
        line_end: 20
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-copy.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_init_list
  - test_deinit_list
  - test_mailbox_list_errors
  - test_mailbox_list_last_error_push_pop
  - test_mailbox_list_get_hierarchy_sep
  - test_maibox_list_name_init
  - test_mailbox_list_get_names
  - main
  source_file: /src/dovecot/src/lib-storage/test-mailbox-list.c
  types:
    enum:
    - enumerators:
      - name: TEST_FLAG_NO_VNAME
        value: BIT(0)
      - name: TEST_FLAG_NO_MUTF7
        value: BIT(2)
      - name: TEST_FLAG_NO_STORAGE_NAME
        value: BIT(1)
      - name: TEST_FLAG_NO_UTF8
        value: BIT(3)
      item_type: enum
      name: test_flags
      pos:
        line_end: 13
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/test-mailbox-list.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*vname'
        type: char
      - name: '*storage_name'
        type: char
      - name: flags
        type: enum test_flags
      - name: '*ns_prefix'
        type: char
      - name: ns_flags
        type: enum namespace_flags
      - name: ns_sep
        type: char
      - name: list_sep
        type: char
      - name: vname_escape_char
        type: char
      - name: storage_name_escape_char
        type: char
      - name: '*maildir_name'
        type: char
      item_type: struct
      name: test_mailbox_list_name
      pos:
        line_end: 26
        line_start: 15
        source_file: /src/dovecot/src/lib-storage/test-mailbox-list.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/lang-user.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*lang'
        type: struct language
      - name: '*filter'
        type: struct lang_filter
      - name: '*index_tokenizer'
        type: struct lang_tokenizer
      item_type: struct
      name: language_user
      pos:
        line_end: 9
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/lang-user.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-search-mime-build.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ctx'
        type: struct mail_search_build_context
      - name: '*mime_part'
        type: struct mail_search_mime_part
      - name: '*parent'
        type: struct mail_search_mime_arg
      item_type: struct
      name: mail_search_mime_build_context
      pos:
        line_end: 15
        line_start: 10
        source_file: /src/dovecot/src/lib-storage/mail-search-mime-build.h
    typedefs: []
    union: []
- function_names:
  - T_MAIL_ERR_MAILBOX_NOT_FOUND
  source_file: /src/dovecot/src/lib-storage/mail-error.h
  types:
    enum:
    - enumerators:
      - name: MAIL_ERROR_NONE
        value: '0'
      - name: MAIL_ERROR_TEMP
      - name: MAIL_ERROR_PARAMS
      - name: MAIL_ERROR_UNAVAILABLE
      - name: MAIL_ERROR_NOTPOSSIBLE
      - name: MAIL_ERROR_PERM
      - name: MAIL_ERROR_NOQUOTA
      - name: MAIL_ERROR_NOTFOUND
      - name: MAIL_ERROR_EXISTS
      - name: MAIL_ERROR_EXPUNGED
      - name: MAIL_ERROR_INVALIDDATA
      - name: MAIL_ERROR_LIMIT
      - name: MAIL_ERROR_LOOKUP_ABORTED
      - name: MAIL_ERROR_INTERRUPTED
      - name: MAIL_ERROR_INUSE
      - name: MAIL_ERROR_TOOBIG
      - name: MAIL_ERROR_CONVERSION
      item_type: enum
      name: mail_error
      pos:
        line_end: 62
        line_start: 22
        source_file: /src/dovecot/src/lib-storage/mail-error.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_ERRSTR_MAILBOX_NOT_FOUND
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/mail-error.h
      type_or_value: '"Mailbox doesn''t exist: %s"'
    - item_type: preproc_def
      name: MAIL_ERRSTR_NO_PERMISSION
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/mail-error.h
      type_or_value: '"Permission denied"'
    - item_type: preproc_def
      name: MAIL_ERRSTR_INTERRUPTED
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/mail-error.h
      type_or_value: '"Operation interrupted"'
    - item_type: preproc_def
      name: MAIL_ERRSTR_NO_QUOTA
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/dovecot/src/lib-storage/mail-error.h
      type_or_value: '"Not enough disk quota"'
    - item_type: preproc_def
      name: MAIL_ERRSTR_LOCK_TIMEOUT
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-storage/mail-error.h
      type_or_value: '"Timeout while waiting for lock"'
    - item_type: preproc_def
      name: MAIL_ERRSTR_CRITICAL_MSG
      pos:
        line_end: 16
        line_start: 14
        source_file: /src/dovecot/src/lib-storage/mail-error.h
      type_or_value: '"Internal error occurred. Refer to server log for more information."'
    - item_type: preproc_def
      name: MAIL_ERRSTR_CRITICAL_MSG_STAMP
      pos:
        line_end: 18
        line_start: 16
        source_file: /src/dovecot/src/lib-storage/mail-error.h
      type_or_value: MAIL_ERRSTR_CRITICAL_MSG " [%Y-%m-%d %H:%M:%S]"
    structs: []
    typedefs: []
    union: []
- function_names:
  - cmdline_search_parse_key
  - cmdline_search_parse_string
  - cmdline_search_parse_skip_next
  - mail_search_parser_init_cmdline
  source_file: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: parser
        type: struct mail_search_parser
      - name: '*const *args'
        type: char
      - name: list_level
        type: unsigned int
      item_type: struct
      name: cmdline_mail_search_parser
      pos:
        line_end: 10
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/mail-search-parser-cmdline.c
    typedefs: []
    union: []
- function_names:
  - mail_search_mime_register_init
  - mail_search_mime_register_deinit
  - mail_search_mime_register_add
  - mail_search_mime_register_arg_cmp
  - mail_search_mime_register_get
  - mail_search_mime_register_find
  - mail_search_mime_not
  - mail_search_mime_or
  - CALLBACK_STR
  - arg_new_date
  - CALLBACK_DATE
  - mail_search_mime_size
  - arg_new_field
  - mail_search_mime_param
  - mail_search_mime_header
  - arg_new_body
  - CALLBACK_BODY
  - mail_search_mime_disposition
  - mail_search_mime_depth
  - mail_search_mime_index
  - mail_search_mime_filename
  - mail_search_mime_parent
  - mail_search_mime_child
  - mail_search_mime_exists
  - mail_search_register_add_default
  source_file: /src/dovecot/src/lib-storage/mail-search-mime-register.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: args_sorted
        type: bool
      item_type: struct
      name: mail_search_mime_register
      pos:
        line_end: 19
        line_start: 15
        source_file: /src/dovecot/src/lib-storage/mail-search-mime-register.c
    typedefs: []
    union: []
- function_names:
  - mailbox_notify_changes
  source_file: /src/dovecot/src/lib-storage/mail-storage.h
  types:
    enum:
    - enumerators:
      - name: MAIL_STORAGE_FLAG_KEEP_HEADER_MD5
        value: '0x01'
      - name: MAIL_STORAGE_FLAG_NO_AUTODETECTION
        value: '0x02'
      - name: MAIL_STORAGE_FLAG_NO_AUTOCREATE
        value: '0x04'
      - name: MAIL_STORAGE_FLAG_NO_AUTOVERIFY
        value: '0x08'
      - name: MAIL_STORAGE_FLAG_SHARED_DYNAMIC
        value: '0x10'
      item_type: enum
      name: mail_storage_flags
      pos:
        line_end: 47
        line_start: 32
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAILBOX_FLAG_READONLY
        value: '0x01'
      - name: MAILBOX_FLAG_NO_INDEX_FILES
        value: '0x10'
      - name: MAILBOX_FLAG_KEEP_LOCKED
        value: '0x20'
      - name: MAILBOX_FLAG_SAVEONLY
        value: '0x02'
      - name: MAILBOX_FLAG_DROP_RECENT
        value: '0x04'
      - name: MAILBOX_FLAG_POP3_SESSION
        value: '0x40'
      - name: MAILBOX_FLAG_POST_SESSION
        value: '0x80'
      - name: MAILBOX_FLAG_IGNORE_ACLS
        value: '0x100'
      - name: MAILBOX_FLAG_OPEN_DELETED
        value: '0x200'
      - name: MAILBOX_FLAG_DELETE_UNSAFE
        value: '0x400'
      - name: MAILBOX_FLAG_AUTO_SUBSCRIBE
        value: '0x2000'
      - name: MAILBOX_FLAG_FSCK
        value: '0x4000'
      - name: MAILBOX_FLAG_SPECIAL_USE
        value: '0x8000'
      - name: MAILBOX_FLAG_ATTRIBUTE_SESSION
        value: '0x10000'
      - name: MAILBOX_FLAG_RAW_NAME
        value: '0x20000'
      - name: MAILBOX_FLAG_AUTO_CREATE
        value: '0x1000'
      item_type: enum
      name: mailbox_flags
      pos:
        line_end: 93
        line_start: 49
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAILBOX_FEATURE_CONDSTORE
        value: '0x01'
      - name: MAILBOX_FEATURE_UTF8ACCEPT
        value: '0x02'
      - name: MAILBOX_FEATURE_IMAP4REV2
        value: '0x04'
      item_type: enum
      name: mailbox_feature
      pos:
        line_end: 100
        line_start: 95
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAILBOX_EXISTENCE_NONE
      - name: MAILBOX_EXISTENCE_SELECT
      - name: MAILBOX_EXISTENCE_NOSELECT
      item_type: enum
      name: mailbox_existence
      pos:
        line_end: 106
        line_start: 102
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: STATUS_MESSAGES
        value: '0x01'
      - name: STATUS_UIDNEXT
        value: '0x04'
      - name: STATUS_UIDVALIDITY
        value: '0x08'
      - name: STATUS_UNSEEN
        value: '0x10'
      - name: STATUS_RECENT
        value: '0x02'
      - name: STATUS_FIRST_UNSEEN_SEQ
        value: '0x20'
      - name: STATUS_KEYWORDS
        value: '0x40'
      - name: STATUS_HIGHESTMODSEQ
        value: '0x80'
      - name: STATUS_PERMANENT_FLAGS
        value: '0x200'
      - name: STATUS_FIRST_RECENT_UID
        value: '0x400'
      - name: STATUS_FTS_LAST_INDEXED_UID
        value: '0x800'
      - name: STATUS_CHECK_OVER_QUOTA
        value: '0x1000'
      - name: STATUS_DELETED
        value: '0x4000'
      - name: STATUS_HIGHESTPVTMODSEQ
        value: '0x2000'
      item_type: enum
      name: mailbox_status_items
      pos:
        line_end: 127
        line_start: 108
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAILBOX_METADATA_GUID
        value: '0x01'
      - name: MAILBOX_METADATA_PRECACHE_FIELDS
        value: '0x08'
      - name: MAILBOX_METADATA_BACKEND_NAMESPACE
        value: '0x10'
      - name: MAILBOX_METADATA_VIRTUAL_SIZE
        value: '0x02'
      - name: MAILBOX_METADATA_CACHE_FIELDS
        value: '0x04'
      - name: MAILBOX_METADATA_PHYSICAL_SIZE
        value: '0x20'
      - name: MAILBOX_METADATA_FIRST_SAVE_DATE
        value: "0x40\n\t/* metadata items that require mailbox to be synced at least
          once. */\n#define MAILBOX_METADATA_SYNC_ITEMS \\\n\t(MAILBOX_METADATA_VIRTUAL_SIZE
          | MAILBOX_METADATA_PHYSICAL_SIZE | \\\n\t MAILBOX_METADATA_FIRST_SAVE_DATE)"
      item_type: enum
      name: mailbox_metadata_items
      pos:
        line_end: 141
        line_start: 129
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAILBOX_SEARCH_RESULT_FLAG_UPDATE
        value: '0x01'
      - name: MAILBOX_SEARCH_RESULT_FLAG_QUEUE_SYNC
        value: '0x02'
      item_type: enum
      name: mailbox_search_result_flags
      pos:
        line_end: 149
        line_start: 143
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAIL_SORT_ARRIVAL
        value: '0x0001'
      - name: MAIL_SORT_SIZE
        value: '0x0010'
      - name: MAIL_SORT_CC
        value: '0x0002'
      - name: MAIL_SORT_DATE
        value: '0x0004'
      - name: MAIL_SORT_FROM
        value: '0x0008'
      - name: MAIL_SORT_SUBJECT
        value: '0x0020'
      - name: MAIL_SORT_TO
        value: '0x0040'
      - name: MAIL_SORT_RELEVANCY
        value: '0x0080'
      - name: MAIL_SORT_DISPLAYFROM
        value: '0x0100'
      - name: MAIL_SORT_DISPLAYTO
        value: '0x0200'
      - name: MAIL_SORT_POP3_ORDER
        value: '0x0400'
      - name: MAIL_SORT_END
        value: '0x0000'
      - name: MAIL_SORT_MASK
        value: '0x0fff'
      - name: MAIL_SORT_FLAG_REVERSE
        value: '0x1000'
      item_type: enum
      name: mail_sort_type
      pos:
        line_end: 170
        line_start: 151
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAIL_FETCH_DATE
        value: '0x00000010'
      - name: MAIL_FETCH_VIRTUAL_SIZE
        value: '0x00000100'
      - name: MAIL_FETCH_IMAP_BODY
        value: '0x00001000'
      - name: MAIL_FETCH_MAILBOX_NAME
        value: '0x00080000'
      - name: MAIL_FETCH_FROM_ENVELOPE
        value: '0x00008000'
      - name: MAIL_FETCH_REFCOUNT
        value: '0x00800000'
      - name: MAIL_FETCH_MESSAGE_PARTS
        value: '0x00000002'
      - name: MAIL_FETCH_RECEIVED_DATE
        value: '0x00000020'
      - name: MAIL_FETCH_NUL_STATE
        value: '0x00000200'
      - name: MAIL_FETCH_HEADER_MD5
        value: '0x00010000'
      - name: MAIL_FETCH_SEARCH_RELEVANCY
        value: '0x00100000'
      - name: MAIL_FETCH_BODY_SNIPPET
        value: '0x01000000'
      - name: MAIL_FETCH_STREAM_HEADER
        value: '0x00000004'
      - name: MAIL_FETCH_SAVE_DATE
        value: '0x00000040'
      - name: MAIL_FETCH_IMAP_BODYSTRUCTURE
        value: '0x00002000'
      - name: MAIL_FETCH_STORAGE_ID
        value: '0x00020000'
      - name: MAIL_FETCH_GUID
        value: '0x00200000'
      - name: MAIL_FETCH_REFCOUNT_ID
        value: '0x02000000'
      - name: MAIL_FETCH_FLAGS
        value: '0x00000001'
      - name: MAIL_FETCH_STREAM_BODY
        value: '0x00000008'
      - name: MAIL_FETCH_PHYSICAL_SIZE
        value: '0x00000080'
      - name: MAIL_FETCH_STREAM_BINARY
        value: '0x00000400'
      - name: MAIL_FETCH_UIDL_BACKEND
        value: '0x00040000'
      - name: MAIL_FETCH_IMAP_ENVELOPE
        value: '0x00004000'
      - name: MAIL_FETCH_POP3_ORDER
        value: '0x00400000'
      item_type: enum
      name: mail_fetch_field
      pos:
        line_end: 205
        line_start: 172
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAILBOX_TRANSACTION_FLAG_HIDE
        value: '0x01'
      - name: MAILBOX_TRANSACTION_FLAG_REFRESH
        value: '0x08'
      - name: MAILBOX_TRANSACTION_FLAG_NO_CACHE_DEC
        value: '0x10'
      - name: MAILBOX_TRANSACTION_FLAG_EXTERNAL
        value: '0x02'
      - name: MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS
        value: '0x04'
      - name: MAILBOX_TRANSACTION_FLAG_SYNC
        value: '0x20'
      - name: MAILBOX_TRANSACTION_FLAG_NO_NOTIFY
        value: '0x40'
      item_type: enum
      name: mailbox_transaction_flags
      pos:
        line_end: 228
        line_start: 207
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAILBOX_SYNC_FLAG_FULL_READ
        value: '0x01'
      - name: MAILBOX_SYNC_FLAG_NO_EXPUNGES
        value: '0x08'
      - name: MAILBOX_SYNC_FLAG_EXPUNGE
        value: '0x80'
      - name: MAILBOX_SYNC_FLAG_FIX_INCONSISTENT
        value: '0x40'
      - name: MAILBOX_SYNC_FLAG_FAST
        value: '0x04'
      - name: MAILBOX_SYNC_FLAG_FORCE_RESYNC
        value: '0x100'
      - name: MAILBOX_SYNC_FLAG_OPTIMIZE
        value: '0x400'
      item_type: enum
      name: mailbox_sync_flags
      pos:
        line_end: 248
        line_start: 230
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAILBOX_SYNC_TYPE_EXPUNGE
        value: '0x01'
      - name: MAILBOX_SYNC_TYPE_FLAGS
        value: '0x02'
      - name: MAILBOX_SYNC_TYPE_MODSEQ
        value: '0x04'
      item_type: enum
      name: mailbox_sync_type
      pos:
        line_end: 254
        line_start: 250
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAIL_LOOKUP_ABORT_NEVER
        value: '0'
      - name: MAIL_LOOKUP_ABORT_READ_MAIL
      - name: MAIL_LOOKUP_ABORT_NOT_IN_CACHE_START_CACHING
      - name: MAIL_LOOKUP_ABORT_NOT_IN_CACHE
      item_type: enum
      name: mail_lookup_abort
      pos:
        line_end: 404
        line_start: 389
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - enumerators:
      - name: MAIL_ACCESS_TYPE_DEFAULT
        value: '0'
      - name: MAIL_ACCESS_TYPE_SEARCH
      - name: MAIL_ACCESS_TYPE_SORT
      item_type: enum
      name: mail_access_type
      pos:
        line_end: 412
        line_start: 406
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_STORAGE_NOTIFY_INTERVAL_SECS
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
      type_or_value: '10'
    - item_type: preproc_def
      name: MAIL_EXPUNGE_BATCH_SIZE
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
      type_or_value: '1000'
    - item_type: preproc_def
      name: MAIL_KEYWORD_HAS_ATTACHMENT
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
      type_or_value: '"$HasAttachment"'
    - item_type: preproc_def
      name: MAIL_KEYWORD_HAS_NO_ATTACHMENT
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
      type_or_value: '"$HasNoAttachment"'
    - item_type: preproc_def
      name: SETTINGS_EVENT_NAMESPACE_NAME
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
      type_or_value: '"namespace"'
    structs:
    - fields:
      - name: messages
        type: uint32_t
      - name: recent
        type: uint32_t
      - name: unseen
        type: uint32_t
      - name: deleted
        type: uint32_t
      - name: uidvalidity
        type: uint32_t
      - name: uidnext
        type: uint32_t
      - name: first_unseen_seq
        type: uint32_t
      - name: first_recent_uid
        type: uint32_t
      - name: fts_last_indexed_uid
        type: uint32_t
      - name: highest_modseq
        type: uint64_t
      - name: highest_pvt_modseq
        type: uint64_t
      - name: '*keywords'
        type: ARRAY_TYPE
      - name: permanent_flags
        type: enum mail_flags
      - name: flags
        type: enum mail_flags
      - name: permanent_keywords
        type: bool
      - name: allow_new_keywords
        type: bool
      - name: nonpermanent_modseqs
        type: bool
      - name: no_modseq_tracking
        type: bool
      - name: have_guids
        type: bool
      - name: have_save_guids
        type: bool
      - name: have_only_guid128
        type: bool
      item_type: struct
      name: mailbox_status
      pos:
        line_end: 306
        line_start: 266
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: '*name'
        type: char
      - name: decision
        type: int
      - name: last_used
        type: time_t
      item_type: struct
      name: mailbox_cache_field
      pos:
        line_end: 313
        line_start: 308
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: guid
        type: guid_128_t
      - name: virtual_size
        type: uint64_t
      - name: physical_size
        type: uint64_t
      - name: first_save_date
        type: time_t
      - name: '*cache_fields'
        type: ARRAY_TYPE
      - name: precache_fields
        type: enum mail_fetch_field
      - name: '*backend_ns_prefix'
        type: char
      - name: backend_ns_type
        type: enum mail_namespace_type
      item_type: struct
      name: mailbox_metadata
      pos:
        line_end: 336
        line_start: 316
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: mailbox_guid
        type: guid_128_t
      - name: uid_validity
        type: uint32_t
      - name: min_next_uid
        type: uint32_t
      - name: min_first_recent_uid
        type: uint32_t
      - name: min_highest_modseq
        type: uint64_t
      - name: min_highest_pvt_modseq
        type: uint64_t
      - name: '*cache_updates'
        type: struct mailbox_cache_field
      item_type: struct
      name: mailbox_update
      pos:
        line_end: 348
        line_start: 338
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: pool
        type: pool_t
      - name: uid_validity
        type: uint32_t
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: ignored_modseq_changes
        type: unsigned int
      - name: changes_mask
        type: enum mail_index_transaction_change
      - name: no_read_perm
        type: bool
      item_type: struct
      name: mail_transaction_commit_changes
      pos:
        line_end: 369
        line_start: 350
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: seq1
        type: uint32_t
      - name: type
        type: enum mailbox_sync_type
      item_type: struct
      name: mailbox_sync_rec
      pos:
        line_end: 374
        line_start: 371
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: sync_delayed_expunges
        type: bool
      item_type: struct
      name: mailbox_sync_status
      pos:
        line_end: 378
        line_start: 375
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: uid
        type: uint32_t
      - name: guid_128
        type: guid_128_t
      item_type: struct
      name: mailbox_expunge_rec
      pos:
        line_end: 386
        line_start: 380
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: size
        type: uoff_t
      - name: lines
        type: unsigned int
      - name: binary
        type: bool
      - name: converted
        type: bool
      item_type: struct
      name: mail_binary_properties
      pos:
        line_end: 420
        line_start: 414
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: '*transaction'
        type: struct mailbox_transaction_context
      - name: seq
        type: uint32_t
      - name: expunged
        type: bool
      - name: saving
        type: bool
      - name: has_nuls
        type: bool
      - name: has_no_nuls
        type: bool
      - name: mail_stream_accessed
        type: bool
      - name: mail_metadata_accessed
        type: bool
      - name: access_type
        type: enum mail_access_type
      - name: lookup_abort
        type: enum mail_lookup_abort
      item_type: struct
      name: mail
      pos:
        line_end: 448
        line_start: 422
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: '*verb'
        type: char
      - name: total
        type: unsigned int
      - name: processed
        type: unsigned int
      - name: now
        type: struct timeval
      - name: start_time
        type: struct timeval
      item_type: struct
      name: mail_storage_progress_details
      pos:
        line_end: 463
        line_start: 450
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: "(*notify_ok)(struct mailbox *mailbox, const char *text,\n\t\t\t  void
          *context)"
        type: void
      - name: "(*notify_no)(struct mailbox *mailbox, const char *text,\n\t\t\t  void
          *context)"
        type: void
      - name: "(*notify_bad)(struct mailbox *mailbox, const char *text,\n\t\t\t   void
          *context)"
        type: void
      - name: "(*notify_progress)(struct mailbox *mailbox,\n\t\t\t\tconst struct mail_storage_progress_details
          *dtl,\n\t\t\t\tvoid *context)"
        type: void
      - name: "(*notify_mailbox_implicit_rename)(struct mailbox *mailbox,\n\t\t\t\t\t
          \      const char *old_vname,\n\t\t\t\t\t       void *context)"
        type: void
      item_type: struct
      name: mail_storage_callbacks
      pos:
        line_end: 484
        line_start: 465
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    - fields:
      - name: '*ns'
        type: struct mail_namespace
      - name: '*pattern'
        type: char
      item_type: struct
      name: mailbox_virtual_pattern
      pos:
        line_end: 489
        line_start: 486
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
    typedefs:
    - item_type: typedef
      name: mailbox_notify_callback_t(struct mailbox *box, void *context)
      pos:
        line_end: 496
        line_start: 496
        source_file: /src/dovecot/src/lib-storage/mail-storage.h
      type: void
    union: []
- function_names:
  - mail_user_get_mail_max_size_base
  - mail_user_deinit_base
  - mail_user_deinit_pre_base
  - mail_user_add_event_fields
  - mail_user_var_expand_callback
  - mail_user_alloc
  - mail_user_init
  - mail_user_ref
  - mail_user_session_finished
  - mail_user_unref
  - mail_user_deinit
  - mail_user_get_mail_max_size
  - mail_user_find
  - mail_user_connection_init_from
  - mail_user_set_vars
  - mail_user_var_expand_func_home
  - mail_user_var_expand_params
  - mail_user_var_expand_func_userdb
  - mail_user_set_home
  - mail_user_add_namespace
  - mail_user_drop_useless_namespaces
  - mail_user_home_expand
  - mail_user_userdb_lookup_home
  - mail_user_get_home
  - mail_user_is_plugin_loaded
  - mail_user_try_home_expand
  - mail_user_set_get_temp_prefix
  - mail_user_get_volatile_dir
  - mail_user_lock_file_create
  - mail_user_get_anvil_session
  - mail_user_get_alt_usernames
  - mail_user_try_load_class_plugin
  - mail_user_get_storage_class
  - mail_user_dup
  - mail_user_init_fs_parameters
  - mail_user_home_mkdir_try_ns
  - mail_user_home_mkdir
  - mail_user_get_dict_op_settings
  source_file: /src/dovecot/src/lib-storage/mail-user.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAILBOX_ATTRIBUTE_KEY_IS_USER_ACCESSIBLE
  source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
  types:
    enum:
    - enumerators:
      - name: MAIL_ATTRIBUTE_TYPE_PRIVATE
      - name: MAIL_ATTRIBUTE_TYPE_SHARED
      item_type: enum
      name: mail_attribute_type
      pos:
        line_end: 184
        line_start: 181
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
    - enumerators:
      - name: MAIL_ATTRIBUTE_VALUE_FLAG_READONLY
        value: '0x01'
      - name: MAIL_ATTRIBUTE_VALUE_FLAG_INT_STREAMS
        value: '0x02'
      item_type: enum
      name: mail_attribute_value_flags
      pos:
        line_end: 193
        line_start: 190
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
    - enumerators:
      - name: MAIL_ATTRIBUTE_INTERNAL_RANK_DEFAULT
        value: '0'
      - name: MAIL_ATTRIBUTE_INTERNAL_RANK_AUTHORITY
      - name: MAIL_ATTRIBUTE_INTERNAL_RANK_OVERRIDE
      item_type: enum
      name: mail_attribute_internal_rank
      pos:
        line_end: 236
        line_start: 214
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
    - enumerators:
      - name: MAIL_ATTRIBUTE_INTERNAL_FLAG_CHILDREN
        value: '0x01'
      - name: MAIL_ATTRIBUTE_INTERNAL_FLAG_VALIDATED
        value: '0x02'
      item_type: enum
      name: mail_attribute_internal_flags
      pos:
        line_end: 245
        line_start: 238
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_ATTRIBUTE_PREFIX_DOVECOT
      pos:
        line_end: 160
        line_start: 159
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
      type_or_value: '"vendor/vendor.dovecot/"'
    - item_type: preproc_def
      name: MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT
      pos:
        line_end: 164
        line_start: 162
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
      type_or_value: MAILBOX_ATTRIBUTE_PREFIX_DOVECOT"pvt/"
    - item_type: preproc_def
      name: MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER
      pos:
        line_end: 172
        line_start: 170
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
      type_or_value: MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT"server/"
    - item_type: preproc_def
      name: MAIL_ATTRIBUTE_TYPE_MASK
      pos:
        line_end: 186
        line_start: 185
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
      type_or_value: '0x0f'
    - item_type: preproc_def
      name: MAIL_ATTRIBUTE_TYPE_FLAG_VALIDATED
      pos:
        line_end: 189
        line_start: 188
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
      type_or_value: '0x80'
    structs:
    - fields:
      - name: '*value'
        type: char
      - name: '*value_stream'
        type: struct istream
      - name: last_change
        type: time_t
      - name: flags
        type: enum mail_attribute_value_flags
      item_type: struct
      name: mail_attribute_value
      pos:
        line_end: 208
        line_start: 195
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
    - fields:
      - name: type
        type: enum mail_attribute_type
      - name: '*key'
        type: char
      - name: rank
        type: enum mail_attribute_internal_rank
      - name: flags
        type: enum mail_attribute_internal_flags
      - name: "(*get)(struct mailbox *box, const char *key,\n\t\t   struct mail_attribute_value
          *value_r)"
        type: int
      - name: "(*set)(struct mailbox_transaction_context *t, const char *key,\n\t\t
          \  const struct mail_attribute_value *value)"
        type: int
      - name: "(*iter)(struct mailbox *box, const char *key_prefix,\n\t\t    pool_t
          pool, ARRAY_TYPE(const_string) *keys)"
        type: int
      item_type: struct
      name: mailbox_attribute_internal
      pos:
        line_end: 268
        line_start: 247
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute.h
    typedefs: []
    union: []
- function_names:
  - mail_duplicate_cmp
  - mail_duplicate_hash
  - duplicate_lock_failed
  - mail_duplicate_is_locked
  - mail_duplicate_lock
  - mail_duplicate_unlock
  - mail_duplicate_read_records
  - mail_duplicate_read_db_from_fd
  - mail_duplicate_read_db_file
  - mail_duplicate_read
  - mail_duplicate_update
  - mail_duplicate_transaction_begin
  - mail_duplicate_transaction_free
  - mail_duplicate_get
  - mail_duplicate_check
  - mail_duplicate_mark
  - mail_duplicate_transaction_commit
  - mail_duplicate_transaction_rollback
  - mail_duplicate_db_init
  - mail_duplicate_db_deinit
  source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
  types:
    enum:
    - enumerators:
      - name: MAIL_DUPLICATE_LOCK_OK
      - name: MAIL_DUPLICATE_LOCK_DEADLOCK
      - name: MAIL_DUPLICATE_LOCK_TOO_MANY
      - name: MAIL_DUPLICATE_LOCK_TIMEOUT
      - name: MAIL_DUPLICATE_LOCK_IO_ERROR
      item_type: enum
      name: mail_duplicate_lock_result
      pos:
        line_end: 38
        line_start: 32
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
    preproc_defs:
    - item_type: preproc_def
      name: COMPRESS_PERCENTAGE
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
      type_or_value: '10'
    - item_type: preproc_def
      name: DUPLICATE_BUFSIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
      type_or_value: '4096'
    - item_type: preproc_def
      name: DUPLICATE_VERSION
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
      type_or_value: '2'
    - item_type: preproc_def
      name: DUPLICATE_LOCK_FNAME_PREFIX
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
      type_or_value: '"duplicate.lock."'
    - item_type: preproc_def
      name: DUPLICATE_LOCK_TIMEOUT_SECS
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
      type_or_value: '65'
    - item_type: preproc_def
      name: DUPLICATE_LOCK_WARN_SECS
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
      type_or_value: '4'
    - item_type: preproc_def
      name: DUPLICATE_LOCK_MAX_LOCKS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
      type_or_value: '100'
    structs:
    - fields:
      - name: fd
        type: int
      - name: '*path'
        type: char
      - name: '*lock'
        type: struct file_lock
      - name: start_time
        type: struct timeval
      item_type: struct
      name: mail_duplicate_lock
      pos:
        line_end: 45
        line_start: 40
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
    - fields:
      - name: '*id'
        type: void
      - name: id_size
        type: unsigned int
      - name: '*user'
        type: char
      - name: time
        type: time_t
      - name: lock
        type: struct mail_duplicate_lock
      - name: marked
        type: bool
      - name: changed
        type: bool
      item_type: struct
      name: mail_duplicate
      pos:
        line_end: 57
        line_start: 47
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
    - fields:
      - name: version
        type: uint32_t
      item_type: struct
      name: mail_duplicate_file_header
      pos:
        line_end: 61
        line_start: 59
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
    - fields:
      - name: stamp
        type: uint32_t
      - name: id_size
        type: uint32_t
      - name: user_size
        type: uint32_t
      item_type: struct
      name: mail_duplicate_record_header
      pos:
        line_end: 67
        line_start: 63
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*db'
        type: struct mail_duplicate_db
      - name: db_ino
        type: ino_t
      - name: '*event'
        type: struct event
      - name: '*path'
        type: char
      - name: id_lock_count
        type: unsigned int
      - name: changed
        type: bool
      item_type: struct
      name: mail_duplicate_transaction
      pos:
        line_end: 80
        line_start: 69
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
    - fields:
      - name: '*user'
        type: struct mail_user
      - name: '*event'
        type: struct event
      - name: '*path'
        type: char
      - name: '*lock_dir'
        type: char
      - name: dotlock_set
        type: struct dotlock_settings
      - name: transaction_count
        type: unsigned int
      item_type: struct
      name: mail_duplicate_db
      pos:
        line_end: 90
        line_start: 82
        source_file: /src/dovecot/src/lib-storage/mail-duplicate.c
    typedefs: []
    union: []
- function_names:
  - mail_user_get_postmaster_address
  - mail_user_get_postmaster_smtp
  source_file: /src/dovecot/src/lib-storage/mail-user.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SETTINGS_EVENT_MAIL_USER
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/mail-user.h
      type_or_value: '"mail_user"'
    structs:
    - fields:
      - name: (*get_mail_max_size)(struct mail_user *user)
        type: uoff_t
      - name: (*deinit)(struct mail_user *user)
        type: void
      - name: (*deinit_pre)(struct mail_user *user)
        type: void
      item_type: struct
      name: mail_user_vfuncs
      pos:
        line_end: 21
        line_start: 17
        source_file: /src/dovecot/src/lib-storage/mail-user.h
    - fields:
      - name: '*local_ip'
        type: struct ip_addr
      - name: local_port
        type: in_port_t
      - name: '*local_name'
        type: char
      - name: end_client_tls_secured
        type: bool
      item_type: struct
      name: mail_user_connection_data
      pos:
        line_end: 29
        line_start: 23
        source_file: /src/dovecot/src/lib-storage/mail-user.h
    - fields:
      - name: pool
        type: pool_t
      - name: v
        type: struct mail_user_vfuncs
      - name: refcount
        type: int
      - name: '*event'
        type: struct event
      - name: '*creator'
        type: struct mail_user
      - name: '*service_user'
        type: struct mail_storage_service_user
      - name: '*username'
        type: char
      - name: '*_home'
        type: char
      - name: uid
        type: uid_t
      - name: gid
        type: gid_t
      - name: '*service'
        type: char
      - name: '*protocol'
        type: char
      - name: '*session_id'
        type: char
      - name: conn
        type: struct mail_user_connection_data
      - name: '*auth_mech'
        type: char
      - name: '*master_user'
        type: char
      - name: '*const *userdb_fields'
        type: char
      - name: '*const *_alt_usernames'
        type: char
      - name: session_create_time
        type: time_t
      - name: '*var_expand_params'
        type: struct var_expand_params
      - name: '*error'
        type: char
      - name: '*set'
        type: struct mail_user_settings
      - name: '*namespaces'
        type: struct mail_namespace
      - name: '*storages'
        type: struct mail_storage
      - name: '*dict_op_set'
        type: struct dict_op_settings
      - name: '*default_normalizer'
        type: normalizer_func_t
      - name: '*_attr_dict'
        type: struct dict
      - name: proc_stat
        type: struct process_stat
      - name: nonexistent
        type: bool
      - name: home_looked_up
        type: bool
      - name: anonymous
        type: bool
      - name: autocreated
        type: bool
      - name: initialized
        type: bool
      - name: namespaces_created
        type: bool
      - name: inbox_open_error_logged
        type: bool
      - name: fuzzy_search
        type: bool
      - name: dsyncing
        type: bool
      - name: attr_dict_failed
        type: bool
      - name: deinitializing
        type: bool
      - name: admin
        type: bool
      - name: stats_enabled
        type: bool
      - name: session_restored
        type: bool
      item_type: struct
      name: mail_user
      pos:
        line_end: 111
        line_start: 31
        source_file: /src/dovecot/src/lib-storage/mail-user.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: mail_user_module_register
      pos:
        line_end: 115
        line_start: 113
        source_file: /src/dovecot/src/lib-storage/mail-user.h
    typedefs: []
    union:
    - fields:
      - name: super
        type: struct mail_user_vfuncs
      - name: '*reg'
        type: struct mail_user_module_register
      item_type: union
      name: mail_user_module_context
      pos:
        line_end: 120
        line_start: 117
        source_file: /src/dovecot/src/lib-storage/mail-user.h
- function_names:
  - ARG_SET_RESULT
  - mail_search_args_foreach
  source_file: /src/dovecot/src/lib-storage/mail-search.h
  types:
    enum:
    - enumerators:
      - name: SEARCH_SEQSET
      - name: SEARCH_KEYWORDS
      - name: SEARCH_SINCE
      - name: SEARCH_MODSEQ
      - name: SEARCH_HEADER_COMPRESS_LWSP
      - name: SEARCH_LARGER
      - name: SEARCH_GUID
      - name: SEARCH_MAILBOX_GUID
      - name: SEARCH_SUB
      - name: SEARCH_UIDSET
      - name: SEARCH_BEFORE
      - name: SEARCH_BODY
      - name: SEARCH_HEADER
      - name: SEARCH_MAILBOX_GLOB
      - name: SEARCH_MIMEPART
      - name: SEARCH_ALL
      - name: SEARCH_FLAGS
      - name: SEARCH_SAVEDATESUPPORTED
      - name: SEARCH_SMALLER
      - name: SEARCH_REAL_UID
      - name: SEARCH_OR
      - name: SEARCH_ON
      - name: SEARCH_HEADER_ADDRESS
      - name: SEARCH_TEXT
      - name: SEARCH_INTHREAD
      - name: SEARCH_MAILBOX
      item_type: enum
      name: mail_search_arg_type
      pos:
        line_end: 50
        line_start: 9
        source_file: /src/dovecot/src/lib-storage/mail-search.h
    - enumerators:
      - name: MAIL_SEARCH_DATE_TYPE_SENT
        value: '1'
      - name: MAIL_SEARCH_DATE_TYPE_RECEIVED
      - name: MAIL_SEARCH_DATE_TYPE_SAVED
      item_type: enum
      name: mail_search_date_type
      pos:
        line_end: 56
        line_start: 52
        source_file: /src/dovecot/src/lib-storage/mail-search.h
    - enumerators:
      - name: MAIL_SEARCH_ARG_FLAG_UTC_TIMES
        value: '0x01'
      item_type: enum
      name: mail_search_arg_flag
      pos:
        line_end: 76
        line_start: 58
        source_file: /src/dovecot/src/lib-storage/mail-search.h
    - enumerators:
      - name: MAIL_SEARCH_MODSEQ_TYPE_ANY
        value: '0'
      - name: MAIL_SEARCH_MODSEQ_TYPE_PRIVATE
      - name: MAIL_SEARCH_MODSEQ_TYPE_SHARED
      item_type: enum
      name: mail_search_modseq_type
      pos:
        line_end: 82
        line_start: 78
        source_file: /src/dovecot/src/lib-storage/mail-search.h
    preproc_defs: []
    structs:
    - fields:
      - name: modseq
        type: uint64_t
      - name: type
        type: enum mail_search_modseq_type
      item_type: struct
      name: mail_search_modseq
      pos:
        line_end: 87
        line_start: 84
        source_file: /src/dovecot/src/lib-storage/mail-search.h
    - fields:
      - name: '*next'
        type: struct mail_search_arg
      - name: type
        type: enum mail_search_arg_type
      - name: value
        type: "struct {\n\t\tstruct mail_search_arg *subargs;\n\t\tARRAY_TYPE(seq_range)
          seqset;\n\t\tconst char *str;\n\t\ttime_t time;\n\t\tuoff_t size;\n\t\tenum
          mail_flags flags;\n\t\tenum mail_search_arg_flag search_flags;\n\t\tenum
          mail_search_date_type date_type;\n\t\tenum mail_thread_type thread_type;\n\t\tstruct
          mail_search_modseq *modseq;\n\t\tstruct mail_search_result *search_result;\n\t\tstruct
          mail_search_mime_part *mime_part;\n\t}"
      - name: initialized
        type: "struct {\n\t\tstruct mail_search_args *search_args;\n\t\t/* Note that
          initialized keywords may be empty if the keyword\n\t\t   wasn't valid in
          this mailbox. */\n\t\tstruct mail_keywords *keywords;\n\t\tstruct imap_match_glob
          *mailbox_glob;\n\t}"
      - name: '*context'
        type: void
      - name: '*hdr_field_name'
        type: char
      - name: match_not
        type: bool
      - name: match_always
        type: bool
      - name: nonmatch_always
        type: bool
      - name: fuzzy
        type: bool
      - name: no_fts
        type: bool
      - name: result
        type: int
      item_type: struct
      name: mail_search_arg
      pos:
        line_end: 127
        line_start: 89
        source_file: /src/dovecot/src/lib-storage/mail-search.h
    - fields:
      - name: refcount
        type: int
      - name: pool
        type: pool_t
      - name: '*box'
        type: struct mailbox
      - name: '*args'
        type: struct mail_search_arg
      - name: simplified
        type: bool
      - name: have_inthreads
        type: bool
      - name: stop_on_nonmatch
        type: bool
      - name: fts_expanded
        type: bool
      item_type: struct
      name: mail_search_args
      pos:
        line_end: 159
        line_start: 129
        source_file: /src/dovecot/src/lib-storage/mail-search.h
    typedefs:
    - item_type: typedef
      name: "mail_search_foreach_callback_t(struct mail_search_arg *arg,\n\t\t\t\t\t
        \   void *context)"
      pos:
        line_end: 168
        line_start: 167
        source_file: /src/dovecot/src/lib-storage/mail-search.h
      type: void
    union: []
- function_names:
  - mailbox_keywords_create_skip
  - mailbox_keywords_unref
  - mailbox_keyword_is_valid
  source_file: /src/dovecot/src/lib-storage/mailbox-keywords.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_register_mail_storage
  source_file: /src/dovecot/src/lib-storage/mail-storage-lua.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_SCRIPT_STORAGE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-storage/mail-storage-lua.c
      type_or_value: '"storage"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_push_mail_user
  - LUA_TABLE_SET_NUMBER
  - LUA_TABLE_SET_BOOL
  - LUA_TABLE_SET_STRING
  - lua_check_storage_mail_user
  - lua_storage_mail_user_tostring
  - lua_storage_cmp
  - lua_storage_mail_user_eq
  - lua_storage_mail_user_lt
  - lua_storage_mail_user_le
  - lua_storage_mail_user_var_expand
  - lua_storage_mail_user_mailbox_alloc
  - lua_storage_mail_user_unref
  - lua_storage_mail_user_metadata_key
  - lua_storage_mail_user_metadata_get
  - lua_storage_mail_user_set_metadata_unset
  - lua_storage_mail_user_metadata_set
  - lua_storage_mail_user_metadata_unset
  - lua_storage_mail_user_metadata_list
  - lua_storage_mail_user_register
  source_file: /src/dovecot/src/lib-storage/mail-user-lua.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_STORAGE_MAIL_USER
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dovecot/src/lib-storage/mail-user-lua.c
      type_or_value: '"struct mail_user"'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-storage-service.h
  types:
    enum:
    - enumerators:
      - name: MAIL_STORAGE_SERVICE_FLAG_ALLOW_ROOT
        value: '0x01'
      - name: MAIL_STORAGE_SERVICE_FLAG_NO_CHDIR
        value: '0x10'
      - name: MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP
        value: '0x02'
      - name: MAIL_STORAGE_SERVICE_FLAG_DEBUG
        value: '0x04'
      - name: MAIL_STORAGE_SERVICE_FLAG_NO_RESTRICT_ACCESS
        value: '0x08'
      - name: MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP
        value: '0x20'
      - name: MAIL_STORAGE_SERVICE_FLAG_ENABLE_CORE_DUMPS
        value: '0x40'
      - name: MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT
        value: '0x80'
      - name: MAIL_STORAGE_SERVICE_FLAG_NO_PLUGINS
        value: '0x100'
      - name: MAIL_STORAGE_SERVICE_FLAG_NO_IDLE_TIMEOUT
        value: '0x200'
      - name: MAIL_STORAGE_SERVICE_FLAG_MINIMAL_USER_INIT
        value: '0x1000'
      - name: MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES
        value: '0x800'
      item_type: enum
      name: mail_storage_service_flags
      pos:
        line_end: 39
        line_start: 13
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*event_parent'
        type: struct event
      - name: '*service'
        type: char
      - name: '*protocol'
        type: char
      - name: '*username'
        type: char
      - name: '*session_id'
        type: char
      - name: '*session_id_prefix'
        type: char
      - name: session_create_time
        type: time_t
      - name: local_ip
        type: struct ip_addr
      - name: local_port
        type: in_port_t
      - name: '*local_name'
        type: char
      - name: '*const *userdb_fields'
        type: char
      - name: '*const *code_override_fields'
        type: char
      - name: '*const *forward_fields'
        type: char
      - name: '*set_instance'
        type: struct settings_instance
      - name: flags_override_add
        type: enum mail_storage_service_flags
      - name: flags_override_remove
        type: enum mail_storage_service_flags
      - name: no_userdb_lookup
        type: bool
      - name: debug
        type: bool
      - name: end_client_tls_secured
        type: bool
      - name: autocreated
        type: bool
      - name: no_free_init_failure
        type: bool
      item_type: struct
      name: mail_storage_service_input
      pos:
        line_end: 88
        line_start: 41
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.h
    - fields:
      - name: pool
        type: pool_t
      - name: refcount
        type: int
      - name: '*service_ctx'
        type: struct mail_storage_service_ctx
      - name: input
        type: struct mail_storage_service_input
      - name: flags
        type: enum mail_storage_service_flags
      - name: '*event'
        type: struct event
      - name: '*ioloop_ctx'
        type: struct ioloop_context
      - name: '*log_prefix'
        type: char
      - name: '*master_user'
        type: char
      - name: '*local_name'
        type: char
      - name: '*system_groups_user'
        type: char
      - name: '*chdir_path'
        type: char
      - name: '*user_set'
        type: struct mail_user_settings
      - name: '*set_instance'
        type: struct settings_instance
      - name: session_id_counter
        type: unsigned int
      - name: anonymous
        type: bool
      - name: admin
        type: bool
      - name: master_service_user_set
        type: bool
      - name: home_from_userdb
        type: bool
      item_type: struct
      name: mail_storage_service_user
      pos:
        line_end: 118
        line_start: 90
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: mail_storage_service_user_module_register
      pos:
        line_end: 122
        line_start: 120
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.h
    typedefs: []
    union:
    - fields:
      - name: '*reg'
        type: struct mail_storage_service_user_module_register
      item_type: union
      name: mail_storage_service_user_module_context
      pos:
        line_end: 126
        line_start: 124
        source_file: /src/dovecot/src/lib-storage/mail-storage-service.h
- function_names:
  - mailbox_list_register_all
  source_file: /src/dovecot/src/lib-storage/mailbox-list-register.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-attribute-internal.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_ATTRIBUTE_COMMENT
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute-internal.h
      type_or_value: '"comment"'
    - item_type: preproc_def
      name: MAILBOX_ATTRIBUTE_SPECIALUSE
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute-internal.h
      type_or_value: '"specialuse"'
    - item_type: preproc_def
      name: MAIL_SERVER_ATTRIBUTE_COMMENT
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute-internal.h
      type_or_value: '"comment"'
    - item_type: preproc_def
      name: MAIL_SERVER_ATTRIBUTE_ADMIN
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute-internal.h
      type_or_value: '"admin"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_save_trans
  - test_mail_save
  - test_mail_remove_keywords
  - test_mail_fetch_get_random_headers
  - test_mail_fetch_field
  - test_mail_fetch_headers
  - test_mail_random_fetch
  - test_mail_random_access
  - test_attachment_flags_during_header_fetch
  - test_bodystructure_reparsing
  - test_bodystructure_corruption_reparsing
  - test_mail_set_critical
  - test_mail_set_critical_different_mailboxes
  - test_mail_get_last_internal_error
  - main
  source_file: /src/dovecot/src/lib-storage/test-mail.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_HDR_FROM
      pos:
        line_end: 356
        line_start: 355
        source_file: /src/dovecot/src/lib-storage/test-mail.c
      type_or_value: '"From: <test1@example.com>\r\n"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - fail_storage_alloc
  - fail_storage_destroy
  - fail_mail_storage_create
  source_file: /src/dovecot/src/lib-storage/fail-mail-storage.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mailbox_autoexpunge_lock
  - mailbox_autoexpunge_batch
  - mailbox_autoexpunge
  - mailbox_autoexpunge_set
  - mailbox_autoexpunge_wildcards
  - mailbox_autoexpunge_name
  - mail_namespace_autoexpunge
  - mail_user_autoexpunge
  source_file: /src/dovecot/src/lib-storage/mail-autoexpunge.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: AUTOEXPUNGE_LOCK_FNAME
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-storage/mail-autoexpunge.c
      type_or_value: '"dovecot.autoexpunge.lock"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_search_simplify_prev_arg_cmp
  - mail_search_simplify_prev_arg_hash
  - mail_search_arg_get_base_mask
  - mail_search_args_simplify_get_prev_argp
  - mail_search_args_merge_mask
  - mail_search_args_merge_flags
  - mail_search_args_merge_keywords
  - mail_search_args_simplify_set
  - mail_search_args_merge_set
  - mail_search_args_merge_time
  - mail_search_args_merge_size
  - mail_search_args_merge_text
  - mail_search_args_have_equal
  - mail_search_args_remove_equal
  - mail_search_args_have_all_equal
  - mail_search_args_simplify_drop_redundant_args_real
  - mail_search_args_simplify_drop_redundant_args
  - mail_search_args_simplify_extract_common
  - mail_search_args_simplify_sub
  - mail_search_args_simplify_merge_flags
  - mail_search_args_unnest_inthreads
  - mail_search_args_simplify
  source_file: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: bin_mask
        type: "struct {\n\t\tenum mail_search_arg_type type;\n\t\tenum mail_search_arg_flag
          search_flags;\n\t\tenum mail_search_date_type date_type;\n\t\tenum mail_flags
          mail_flags;\n\t\tbool match_not;\n\t\tbool fuzzy;\n\t}"
      - name: '*hdr_field_name_mask'
        type: char
      - name: '*str_mask'
        type: char
      - name: '*prev_arg'
        type: struct mail_search_arg
      item_type: struct
      name: mail_search_simplify_prev_arg
      pos:
        line_end: 20
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    - fields:
      - name: pool
        type: pool_t
      - name: parent_and
        type: bool
      - name: removals
        type: bool
      - name: initialized
        type: bool
      item_type: struct
      name: mail_search_simplify_ctx
      pos:
        line_end: 30
        line_start: 22
        source_file: /src/dovecot/src/lib-storage/mail-search-args-simplify.c
    typedefs: []
    union: []
- function_names:
  - mail_storage_register_all
  source_file: /src/dovecot/src/lib-storage/mail-storage-register.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mailbox_uidset_change
  - mailbox_seqset_change
  - mail_search_arg_change_sets
  - mail_search_arg_init
  - mail_search_args_init
  - mail_search_arg_deinit
  - mail_search_arg_one_deinit
  - mail_search_args_deinit
  - mail_search_args_seq2uid_sub
  - mail_search_args_seq2uid
  - mail_search_args_ref
  - mail_search_args_unref
  - mail_search_arg_dup_one
  - mail_search_arg_dup
  - mail_search_args_dup
  - mail_search_args_reset
  - search_arg_foreach
  - mail_search_args_foreach
  - search_arg_analyze
  - mail_search_args_analyze
  - mail_search_args_match_mailbox_arg
  - mail_search_args_match_mailbox
  - mail_search_arg_one_equals
  - mail_search_arg_equals
  - mail_search_arg_equals_p
  - mail_search_args_equal
  - mail_search_args_result_serialize_arg
  - mail_search_args_result_serialize
  - mail_search_args_result_deserialize_arg
  - mail_search_args_result_deserialize
  - mail_search_seqset_next_batch
  - mail_search_seqset_iter_init
  - mail_search_seqset_iter_deinit
  - mail_search_seqset_iter_next
  source_file: /src/dovecot/src/lib-storage/mail-search.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*search_args'
        type: struct mail_search_args
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: batch_size
        type: unsigned int
      item_type: struct
      name: mail_search_seqset_iter
      pos:
        line_end: 818
        line_start: 814
        source_file: /src/dovecot/src/lib-storage/mail-search.c
    typedefs: []
    union: []
- function_names:
  - MAIL_STORAGE_CONTEXT
  - MAIL_STORAGE_CONTEXT_REQUIRE
  - mailbox_name_sanitize
  source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
  types:
    enum:
    - enumerators:
      - name: MAIL_STORAGE_LIST_INDEX_REBUILD_REASON_CORRUPTED
      - name: MAIL_STORAGE_LIST_INDEX_REBUILD_REASON_NO_INBOX
      - name: MAIL_STORAGE_LIST_INDEX_REBUILD_REASON_FORCE_RESYNC
      item_type: enum
      name: mail_storage_list_index_rebuild_reason
      pos:
        line_end: 40
        line_start: 27
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - enumerators:
      - name: MAIL_STORAGE_CLASS_FLAG_MAILBOX_IS_FILE
        value: '0x01'
      - name: MAIL_STORAGE_CLASS_FLAG_OPEN_STREAMS
        value: '0x04'
      - name: MAIL_STORAGE_CLASS_FLAG_NOQUOTA
        value: '0x08'
      - name: MAIL_STORAGE_CLASS_FLAG_NO_ROOT
        value: '0x10'
      - name: MAIL_STORAGE_CLASS_FLAG_UNIQUE_ROOT
        value: '0x02'
      - name: MAIL_STORAGE_CLASS_FLAG_FILE_PER_MSG
        value: '0x20'
      - name: MAIL_STORAGE_CLASS_FLAG_HAVE_MAIL_GUIDS
        value: '0x40'
      - name: MAIL_STORAGE_CLASS_FLAG_HAVE_MAIL_SAVE_GUIDS
        value: '0x80'
      - name: MAIL_STORAGE_CLASS_FLAG_BINARY_DATA
        value: '0x100'
      - name: MAIL_STORAGE_CLASS_FLAG_HAVE_MAIL_GUID128
        value: '0x200'
      - name: MAIL_STORAGE_CLASS_FLAG_SECONDARY_INDEX
        value: '0x800'
      - name: MAIL_STORAGE_CLASS_FLAG_NO_LIST_DELETES
        value: '0x400'
      item_type: enum
      name: mail_storage_class_flags
      pos:
        line_end: 112
        line_start: 83
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_INDEX_PREFIX
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
      type_or_value: '"dovecot.index"'
    - item_type: preproc_def
      name: MAIL_READ_HDR_BLOCK_SIZE
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
      type_or_value: (1024*4)
    - item_type: preproc_def
      name: MAIL_READ_FULL_BLOCK_SIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
      type_or_value: IO_BLOCK_SIZE
    - item_type: preproc_def
      name: MAIL_SHARED_STORAGE_NAME
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
      type_or_value: '"shared"'
    structs:
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: mail_storage_module_register
      pos:
        line_end: 44
        line_start: 42
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: id
        type: unsigned int
      item_type: struct
      name: mail_module_register
      pos:
        line_end: 48
        line_start: 46
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*(*alloc)(void)'
        type: struct mail_storage
      - name: "(*create)(struct mail_storage *storage, struct mail_namespace *ns,\n\t\t
          \     const char **error_r)"
        type: int
      - name: (*destroy)(struct mail_storage *storage)
        type: void
      - name: "(*add_list)(struct mail_storage *storage,\n\t\t\t struct mailbox_list
          *list)"
        type: void
      - name: "(*autodetect)(const struct mail_namespace *ns,\n\t\t\t   const struct
          mail_storage_settings *mail_set,\n\t\t\t   const char **root_path_r, const
          char **inbox_path_r)"
        type: bool
      - name: "*(*mailbox_alloc)(struct mail_storage *storage,\n\t\t\t\t\t struct
          mailbox_list *list,\n\t\t\t\t\t const char *vname,\n\t\t\t\t\t enum mailbox_flags
          flags)"
        type: struct mailbox
      - name: (*purge)(struct mail_storage *storage)
        type: int
      - name: "(*list_index_rebuild)(struct mail_storage *storage,\n\t\t\t\t  enum
          mail_storage_list_index_rebuild_reason reason)"
        type: int
      item_type: struct
      name: mail_storage_vfuncs
      pos:
        line_end: 76
        line_start: 50
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*to'
        type: struct timeout
      - name: '*box'
        type: struct mailbox
      - name: uid
        type: uint32_t
      - name: orig_physical_pos
        type: uoff_t
      - name: include_hdr
        type: bool
      - name: '*input'
        type: struct istream
      - name: size
        type: uoff_t
      item_type: struct
      name: mail_binary_cache
      pos:
        line_end: 123
        line_start: 114
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*error_string'
        type: char
      - name: error
        type: enum mail_error
      - name: '*last_internal_error'
        type: char
      - name: '*last_internal_error_mailbox'
        type: char
      - name: last_internal_error_mail_uid
        type: uint32_t
      - name: last_error_is_internal
        type: bool
      item_type: struct
      name: mail_storage_error
      pos:
        line_end: 135
        line_start: 125
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*name'
        type: char
      - name: class_flags
        type: enum mail_storage_class_flags
      - name: nonbody_access_fields
        type: enum mail_fetch_field
      - name: '*event_category'
        type: struct event_category
      - name: '*set_info'
        type: struct setting_parser_info
      - name: v
        type: struct mail_storage_vfuncs
      - name: pool
        type: pool_t
      - name: '*prev'
        type: struct mail_storage
      - name: refcount
        type: int
      - name: obj_refcount
        type: int
      - name: '*mailboxes'
        type: struct mailbox
      - name: '*unique_root_dir'
        type: char
      - name: '*last_internal_error'
        type: char
      - name: '*last_internal_error_mailbox'
        type: char
      - name: last_internal_error_mail_uid
        type: uint32_t
      - name: '*error_string'
        type: char
      - name: error
        type: enum mail_error
      - name: '*event'
        type: struct event
      - name: '*storage_class'
        type: struct mail_storage
      - name: '*user'
        type: struct mail_user
      - name: '*temp_path_prefix'
        type: char
      - name: '*set'
        type: struct mail_storage_settings
      - name: flags
        type: enum mail_storage_flags
      - name: callbacks
        type: struct mail_storage_callbacks
      - name: '*callback_context'
        type: void
      - name: binary_cache
        type: struct mail_binary_cache
      - name: '*_shared_attr_dict'
        type: struct dict
      - name: '*mailboxes_fs'
        type: struct fs
      - name: '*mailboxes_fs_set_instance'
        type: struct settings_instance
      - name: shared_attr_dict_failed
        type: bool
      - name: last_error_is_internal
        type: bool
      - name: rebuilding_list_index
        type: bool
      - name: rebuild_list_index
        type: bool
      item_type: struct
      name: mail_storage
      pos:
        line_end: 203
        line_start: 137
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*part'
        type: struct message_part
      - name: '*content_type'
        type: char
      item_type: struct
      name: mail_attachment_part
      pos:
        line_end: 208
        line_start: 205
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: "(*get_virtual_uids)(struct mailbox *box,\n\t\t\t\t struct mailbox *backend_mailbox,\n\t\t\t\t
          const ARRAY_TYPE(seq_range) *backend_uids,\n\t\t\t\t ARRAY_TYPE(seq_range)
          *virtual_uids_r)"
        type: void
      - name: "(*get_virtual_uid_map)(struct mailbox *box,\n\t\t\t\t    struct mailbox
          *backend_mailbox,\n\t\t\t\t    const ARRAY_TYPE(seq_range) *backend_uids,\n\t\t\t\t
          \   ARRAY_TYPE(uint32_t) *virtual_uids_r)"
        type: void
      - name: "(*get_virtual_backend_boxes)(struct mailbox *box,\n\t\t\t\t\t  ARRAY_TYPE(mailboxes)
          *mailboxes,\n\t\t\t\t\t  bool only_with_msgs)"
        type: void
      - name: "(*get_virtual_backend_last_uid)(struct mailbox *box,\n\t\t\t\t\t\t
          struct mailbox *bbox)"
        type: uint32_t
      - name: "(*get_virtual_backend_mail_uid)(struct mailbox *box, uint32_t seq,\n\t\t\t\t\t
          \    struct mailbox **backend_box_r,\n\t\t\t\t\t     uint32_t *backend_uid_r)"
        type: void
      item_type: struct
      name: virtual_mailbox_vfuncs
      pos:
        line_end: 231
        line_start: 210
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: (*is_readonly)(struct mailbox *box)
        type: bool
      - name: (*enable)(struct mailbox *box, enum mailbox_feature features)
        type: int
      - name: "(*exists)(struct mailbox *box, bool auto_boxes,\n\t\t      enum mailbox_existence
          *existence_r)"
        type: int
      - name: (*open)(struct mailbox *box)
        type: int
      - name: (*close)(struct mailbox *box)
        type: void
      - name: (*free)(struct mailbox *box)
        type: void
      - name: "(*create_box)(struct mailbox *box,\n\t\t\t  const struct mailbox_update
          *update, bool directory)"
        type: int
      - name: "(*update_box)(struct mailbox *box,\n\t\t\t  const struct mailbox_update
          *update)"
        type: int
      - name: (*delete_box)(struct mailbox *box)
        type: int
      - name: (*rename_box)(struct mailbox *src, struct mailbox *dest)
        type: int
      - name: "(*get_status)(struct mailbox *box, enum mailbox_status_items items,\n\t\t\t
          \ struct mailbox_status *status_r)"
        type: int
      - name: "(*get_metadata)(struct mailbox *box,\n\t\t\t    enum mailbox_metadata_items
          items,\n\t\t\t    struct mailbox_metadata *metadata_r)"
        type: int
      - name: (*set_subscribed)(struct mailbox *box, bool set)
        type: int
      - name: "(*attribute_set)(struct mailbox_transaction_context *t,\n\t\t\t     enum
          mail_attribute_type type_flags,\n\t\t\t     const char *key,\n\t\t\t     const
          struct mail_attribute_value *value)"
        type: int
      - name: "(*attribute_get)(struct mailbox *box,\n\t\t\t     enum mail_attribute_type
          type_flags,\n\t\t\t     const char *key,\n\t\t\t     struct mail_attribute_value
          *value_r)"
        type: int
      - name: "*\n\t\t(*attribute_iter_init)(struct mailbox *box,\n\t\t\t\t       enum
          mail_attribute_type type_flags,\n\t\t\t\t       const char *prefix)"
        type: struct mailbox_attribute_iter
      - name: '*(*attribute_iter_next)(struct mailbox_attribute_iter *iter)'
        type: char
      - name: (*attribute_iter_deinit)(struct mailbox_attribute_iter *iter)
        type: int
      - name: "(*list_index_has_changed)(struct mailbox *box,\n\t\t\t\t      struct
          mail_index_view *list_view,\n\t\t\t\t      uint32_t seq, bool quick,\n\t\t\t\t
          \     const char **reason_r)"
        type: int
      - name: "(*list_index_update_sync)(struct mailbox *box,\n\t\t\t\t       struct
          mail_index_transaction *trans,\n\t\t\t\t       uint32_t seq)"
        type: void
      - name: "*\n\t\t(*sync_init)(struct mailbox *box,\n\t\t\t     enum mailbox_sync_flags
          flags)"
        type: struct mailbox_sync_context
      - name: "(*sync_next)(struct mailbox_sync_context *ctx,\n\t\t\t  struct mailbox_sync_rec
          *sync_rec_r)"
        type: bool
      - name: "(*sync_deinit)(struct mailbox_sync_context *ctx,\n\t\t\t   struct mailbox_sync_status
          *status_r)"
        type: int
      - name: "(*sync_notify)(struct mailbox *box, uint32_t uid,\n\t\t\t    enum mailbox_sync_type
          sync_type)"
        type: void
      - name: (*notify_changes)(struct mailbox *box)
        type: void
      - name: "*\n\t\t(*transaction_begin)(struct mailbox *box,\n\t\t\t\t     enum
          mailbox_transaction_flags flags,\n\t\t\t\t     const char *reason)"
        type: struct mailbox_transaction_context
      - name: "(*transaction_commit)(struct mailbox_transaction_context *t,\n\t\t\t\t
          \ struct mail_transaction_commit_changes *changes_r)"
        type: int
      - name: (*transaction_rollback)(struct mailbox_transaction_context *t)
        type: void
      - name: (*get_private_flags_mask)(struct mailbox *box)
        type: enum mail_flags
      - name: "*\n\t\t(*mail_alloc)(struct mailbox_transaction_context *t,\n\t\t\t
          \     enum mail_fetch_field wanted_fields,\n\t\t\t      struct mailbox_header_lookup_ctx
          *wanted_headers)"
        type: struct mail
      - name: "*\n\t(*search_init)(struct mailbox_transaction_context *t,\n\t\t       struct
          mail_search_args *args,\n\t\t       const enum mail_sort_type *sort_program,\n\t\t
          \      enum mail_fetch_field wanted_fields,\n\t\t       struct mailbox_header_lookup_ctx
          *wanted_headers)"
        type: struct mail_search_context
      - name: (*search_deinit)(struct mail_search_context *ctx)
        type: int
      - name: "(*search_next_nonblock)(struct mail_search_context *ctx,\n\t\t\t\t
          \    struct mail **mail_r, bool *tryagain_r)"
        type: bool
      - name: (*search_next_update_seq)(struct mail_search_context *ctx)
        type: bool
      - name: "(*search_next_match_mail)(struct mail_search_context *ctx,\n\t\t\t\t
          \     struct mail *mail)"
        type: int
      - name: "*\n\t\t(*save_alloc)(struct mailbox_transaction_context *t)"
        type: struct mail_save_context
      - name: (*save_begin)(struct mail_save_context *ctx, struct istream *input)
        type: int
      - name: (*save_continue)(struct mail_save_context *ctx)
        type: int
      - name: (*save_finish)(struct mail_save_context *ctx)
        type: int
      - name: (*save_cancel)(struct mail_save_context *ctx)
        type: void
      - name: (*copy)(struct mail_save_context *ctx, struct mail *mail)
        type: int
      - name: (*transaction_save_commit_pre)(struct mail_save_context *save_ctx)
        type: int
      - name: "(*transaction_save_commit_post)\n\t\t(struct mail_save_context *save_ctx,\n\t\t
          struct mail_index_transaction_commit_result *result_r)"
        type: void
      - name: (*transaction_save_rollback)(struct mail_save_context *save_ctx)
        type: void
      - name: (*is_inconsistent)(struct mailbox *box)
        type: bool
      item_type: struct
      name: mailbox_vfuncs
      pos:
        line_end: 363
        line_start: 233
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: uid
        type: uint32_t
      - name: physical_start
        type: uoff_t
      - name: physical_pos
        type: uoff_t
      item_type: struct
      name: mail_msgpart_partial_cache
      pos:
        line_end: 374
        line_start: 370
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: vsize
        type: uint64_t
      - name: highest_uid
        type: uint32_t
      - name: message_count
        type: uint32_t
      item_type: struct
      name: mailbox_index_vsize
      pos:
        line_end: 380
        line_start: 376
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: max_uid_with_pop3_uidl
        type: uint32_t
      item_type: struct
      name: mailbox_index_pop3_uidl
      pos:
        line_end: 384
        line_start: 382
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: uid
        type: uint32_t
      - name: timestamp
        type: uint32_t
      item_type: struct
      name: mailbox_index_first_saved
      pos:
        line_end: 389
        line_start: 386
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*name'
        type: char
      - name: '*vname'
        type: char
      - name: '*vname_raw'
        type: char
      - name: '*storage'
        type: struct mail_storage
      - name: '*list'
        type: struct mailbox_list
      - name: '*event'
        type: struct event
      - name: v
        type: struct mailbox_vfuncs
      - name: '*virtual_vfuncs'
        type: struct virtual_mailbox_vfuncs
      - name: pool
        type: pool_t
      - name: '*prev'
        type: struct mailbox
      - name: '*index'
        type: struct mail_index
      - name: '*view'
        type: struct mail_index_view
      - name: '*cache'
        type: struct mail_cache
      - name: '*index_pvt'
        type: struct mail_index
      - name: '*view_pvt'
        type: struct mail_index_view
      - name: _perm
        type: struct mailbox_permissions
      - name: '*_path'
        type: char
      - name: '*_index_path'
        type: char
      - name: '*mail_vfuncs'
        type: struct mail_vfuncs
      - name: '*set'
        type: struct mailbox_settings
      - name: open_error
        type: enum mail_error
      - name: '*input'
        type: struct istream
      - name: '*index_prefix'
        type: char
      - name: flags
        type: enum mailbox_flags
      - name: transaction_count
        type: unsigned int
      - name: attribute_iter_count
        type: unsigned int
      - name: enabled_features
        type: enum mailbox_feature
      - name: partial_cache
        type: struct mail_msgpart_partial_cache
      - name: vsize_hdr_ext_id
        type: uint32_t
      - name: pop3_uidl_hdr_ext_id
        type: uint32_t
      - name: box_name_hdr_ext_id
        type: uint32_t
      - name: box_last_rename_stamp_ext_id
        type: uint32_t
      - name: mail_vsize_ext_id
        type: uint32_t
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: recent_flags_prev_uid
        type: uint32_t
      - name: recent_flags_count
        type: uint32_t
      - name: '*tmp_sync_view'
        type: struct mail_index_view
      - name: '*notify_callback'
        type: mailbox_notify_callback_t
      - name: '*notify_context'
        type: void
      - name: '*to_notify'
        type: struct timeout
      - name: '*notify_files'
        type: struct mailbox_notify_file
      - name: generation_sequence
        type: unsigned int
      - name: opened
        type: bool
      - name: mailbox_deleted
        type: bool
      - name: creating
        type: bool
      - name: deleting
        type: bool
      - name: mailbox_undeleting
        type: bool
      - name: delete_sync_check
        type: bool
      - name: deleting_must_be_empty
        type: bool
      - name: delete_skip_empty_check
        type: bool
      - name: marked_deleted
        type: bool
      - name: inbox_user
        type: bool
      - name: inbox_any
        type: bool
      - name: disable_reflink_copy_to
        type: bool
      - name: disallow_new_keywords
        type: bool
      - name: synced
        type: bool
      - name: mail_cache_disabled
        type: bool
      - name: update_first_saved
        type: bool
      - name: skip_create_name_restrictions
        type: bool
      - name: corrupted_mailbox_name
        type: bool
      - name: acl_no_lookup_right
        type: bool
      - name: mailbox_not_original
        type: bool
      - name: mailbox_name_changed_by_nfc
        type: bool
      - name: notifying_nfc_name_change
        type: bool
      item_type: struct
      name: mailbox
      pos:
        line_end: 523
        line_start: 391
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: (*close)(struct mail *mail)
        type: void
      - name: (*free)(struct mail *mail)
        type: void
      - name: (*set_seq)(struct mail *mail, uint32_t seq, bool saving)
        type: void
      - name: (*set_uid)(struct mail *mail, uint32_t uid)
        type: bool
      - name: (*set_uid_cache_updates)(struct mail *mail, bool set)
        type: void
      - name: (*prefetch)(struct mail *mail)
        type: bool
      - name: (*precache)(struct mail *mail)
        type: int
      - name: "(*add_temp_wanted_fields)(struct mail *mail,\n\t\t\t\t       enum mail_fetch_field
          fields,\n\t\t\t\t       struct mailbox_header_lookup_ctx *headers)"
        type: void
      - name: (*get_flags)(struct mail *mail)
        type: enum mail_flags
      - name: '*const *(*get_keywords)(struct mail *mail)'
        type: char
      - name: "*\n\t\t(*get_keyword_indexes)(struct mail *mail)"
        type: ARRAY_TYPE
      - name: (*get_modseq)(struct mail *mail)
        type: uint64_t
      - name: (*get_pvt_modseq)(struct mail *mail)
        type: uint64_t
      - name: "(*get_parts)(struct mail *mail,\n\t\t\t struct message_part **parts_r)"
        type: int
      - name: (*get_date)(struct mail *mail, time_t *date_r, int *timezone_r)
        type: int
      - name: (*get_received_date)(struct mail *mail, time_t *date_r)
        type: int
      - name: (*get_save_date)(struct mail *mail, time_t *date_r)
        type: int
      - name: (*get_virtual_size)(struct mail *mail, uoff_t *size_r)
        type: int
      - name: (*get_physical_size)(struct mail *mail, uoff_t *size_r)
        type: int
      - name: "(*get_first_header)(struct mail *mail, const char *field,\n\t\t\t\tbool
          decode_to_utf8, const char **value_r)"
        type: int
      - name: "(*get_headers)(struct mail *mail, const char *field,\n\t\t\t   bool
          decode_to_utf8, const char *const **value_r)"
        type: int
      - name: "(*get_header_stream)(struct mail *mail,\n\t\t\t\t struct mailbox_header_lookup_ctx
          *headers,\n\t\t\t\t struct istream **stream_r)"
        type: int
      - name: "(*get_stream)(struct mail *mail, bool get_body,\n\t\t\t  struct message_size
          *hdr_size,\n\t\t\t  struct message_size *body_size,\n\t\t\t  struct istream
          **stream_r)"
        type: int
      - name: "(*get_binary_stream)(struct mail *_mail,\n\t\t\t\t const struct message_part
          *part,\n\t\t\t\t bool include_hdr,\n\t\t\t\t struct mail_binary_properties
          *bprops_r,\n\t\t\t\t struct istream **stream_r)"
        type: int
      - name: "(*get_special)(struct mail *mail, enum mail_fetch_field field,\n\t\t\t
          \  const char **value_r)"
        type: int
      - name: (*get_backend_mail)(struct mail *mail, struct mail **real_mail_r)
        type: int
      - name: "(*update_flags)(struct mail *mail, enum modify_type modify_type,\n\t\t\t
          \    enum mail_flags flags)"
        type: void
      - name: "(*update_keywords)(struct mail *mail, enum modify_type modify_type,\n\t\t\t\tstruct
          mail_keywords *keywords)"
        type: void
      - name: (*update_modseq)(struct mail *mail, uint64_t min_modseq)
        type: void
      - name: (*update_pvt_modseq)(struct mail *mail, uint64_t min_pvt_modseq)
        type: void
      - name: (*update_pop3_uidl)(struct mail *mail, const char *uidl)
        type: void
      - name: (*expunge)(struct mail *mail)
        type: void
      - name: "(*set_cache_corrupted)(struct mail *mail,\n\t\t\t\t    enum mail_fetch_field
          field,\n\t\t\t\t    const char *reason)"
        type: void
      - name: (*istream_opened)(struct mail *mail, struct istream **input)
        type: int
      item_type: struct
      name: mail_vfuncs
      pos:
        line_end: 585
        line_start: 525
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: mail
        type: struct mail
      - name: v
        type: struct mail_vfuncs
      - name: '*vmail'
        type: struct mail
      - name: '*_event'
        type: struct event
      - name: seq_pvt
        type: uint32_t
      - name: wanted_fields
        type: enum mail_fetch_field
      - name: '*wanted_headers'
        type: struct mailbox_header_lookup_ctx
      - name: pool
        type: pool_t
      - name: '*get_stream_reason'
        type: char
      - name: autoexpunged
        type: bool
      - name: search_mail
        type: bool
      - name: mail_opened_event_sent
        type: bool
      item_type: struct
      name: mail_private
      pos:
        line_end: 620
        line_start: 592
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*storage'
        type: struct mail_storage
      - name: flags
        type: enum mailbox_list_flags
      - name: failed
        type: bool
      item_type: struct
      name: mailbox_list_context
      pos:
        line_end: 626
        line_start: 622
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: open_lookup_count
        type: unsigned long
      - name: stat_lookup_count
        type: unsigned long
      - name: fstat_lookup_count
        type: unsigned long
      - name: files_read_count
        type: unsigned long
      - name: files_read_bytes
        type: unsigned long long
      - name: cache_hit_count
        type: unsigned long
      item_type: struct
      name: mailbox_transaction_stats
      pos:
        line_end: 642
        line_start: 632
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: mailnum
        type: unsigned int
      - name: flags
        type: enum mail_flags
      item_type: struct
      name: mail_save_private_changes
      pos:
        line_end: 649
        line_start: 644
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: flags
        type: enum mailbox_transaction_flags
      - name: '*reason'
        type: char
      - name: module_ctx
        type: union mail_index_transaction_module_context
      - name: super
        type: struct mail_index_transaction_vfuncs
      - name: mail_ref_count
        type: int
      - name: '*itrans'
        type: struct mail_index_transaction
      - name: '*attr_pvt_trans'
        type: struct dict_transaction_context
      - name: '*view'
        type: struct mail_index_view
      - name: '*itrans_pvt'
        type: struct mail_index_transaction
      - name: '*view_pvt'
        type: struct mail_index_view
      - name: '*cache_view'
        type: struct mail_cache_view
      - name: '*cache_trans'
        type: struct mail_cache_transaction_ctx
      - name: '*changes'
        type: struct mail_transaction_commit_changes
      - name: prev_pop3_uidl_tracking_seq
        type: uint32_t
      - name: highest_pop3_uidl_uid
        type: uint32_t
      - name: '*save_ctx'
        type: struct mail_save_context
      - name: save_count
        type: unsigned int
      - name: stats
        type: struct mailbox_transaction_stats
      - name: stats_track
        type: bool
      item_type: struct
      name: mailbox_transaction_context
      pos:
        line_end: 689
        line_start: 651
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*transaction'
        type: struct mailbox_transaction_context
      - name: '*args'
        type: struct mail_search_args
      - name: '*sort_program'
        type: struct mail_search_sort_program
      - name: wanted_fields
        type: enum mail_fetch_field
      - name: '*wanted_headers'
        type: struct mailbox_header_lookup_ctx
      - name: '*normalizer'
        type: normalizer_func_t
      - name: search_start_time
        type: struct timeval
      - name: search_notify_passes
        type: unsigned int
      - name: '*update_result'
        type: struct mail_search_result
      - name: seq
        type: uint32_t
      - name: progress_cur
        type: uint32_t
      - name: unused_mail_idx
        type: unsigned int
      - name: max_mails
        type: unsigned int
      - name: seen_lost_data
        type: bool
      - name: progress_hidden
        type: bool
      item_type: struct
      name: mail_search_context
      pos:
        line_end: 726
        line_start: 695
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: flags
        type: enum mail_flags
      - name: pvt_flags
        type: enum mail_flags
      - name: '*keywords'
        type: struct mail_keywords
      - name: min_modseq
        type: uint64_t
      - name: received_date
        type: time_t
      - name: received_tz_offset
        type: int
      - name: uid
        type: uint32_t
      - name: '*guid'
        type: char
      - name: pop3_order
        type: uint32_t
      - name: '*output'
        type: struct ostream
      - name: '*attach'
        type: struct mail_save_attachment
      item_type: struct
      name: mail_save_data
      pos:
        line_end: 743
        line_start: 728
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*transaction'
        type: struct mailbox_transaction_context
      - name: '*dest_mail'
        type: struct mail
      - name: '*copy_src_mail'
        type: struct mail
      - name: '*expunged_mail'
        type: struct mail
      - name: data
        type: struct mail_save_data
      - name: "(*part_is_attachment)(struct mail_save_context *ctx,\n\t\t\t\t   const
          struct mail_attachment_part *part)"
        type: bool
      - name: unfinished
        type: bool
      - name: finishing
        type: bool
      - name: copying_via_save
        type: bool
      - name: saving
        type: bool
      - name: moving
        type: bool
      - name: copying_or_moving
        type: bool
      item_type: struct
      name: mail_save_context
      pos:
        line_end: 782
        line_start: 745
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: flags
        type: enum mailbox_sync_flags
      - name: open_failed
        type: bool
      item_type: struct
      name: mailbox_sync_context
      pos:
        line_end: 788
        line_start: 784
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: pool
        type: pool_t
      - name: refcount
        type: int
      - name: count
        type: unsigned int
      - name: '*const *name'
        type: char
      - name: '*idx'
        type: unsigned int
      item_type: struct
      name: mailbox_header_lookup_ctx
      pos:
        line_end: 798
        line_start: 790
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    typedefs: []
    union:
    - fields:
      - name: super
        type: struct mail_storage_vfuncs
      - name: '*reg'
        type: struct mail_storage_module_register
      item_type: union
      name: mail_storage_module_context
      pos:
        line_end: 81
        line_start: 78
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: super
        type: struct mailbox_vfuncs
      - name: '*reg'
        type: struct mail_storage_module_register
      item_type: union
      name: mailbox_module_context
      pos:
        line_end: 368
        line_start: 365
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: super
        type: struct mail_vfuncs
      - name: '*reg'
        type: struct mail_module_register
      item_type: union
      name: mail_module_context
      pos:
        line_end: 590
        line_start: 587
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*reg'
        type: struct mail_storage_module_register
      item_type: union
      name: mailbox_transaction_module_context
      pos:
        line_end: 630
        line_start: 628
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
    - fields:
      - name: '*reg'
        type: struct mail_storage_module_register
      item_type: union
      name: mail_search_module_context
      pos:
        line_end: 693
        line_start: 691
        source_file: /src/dovecot/src/lib-storage/mail-storage-private.h
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-attribute-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*box'
        type: struct mailbox
      item_type: struct
      name: mailbox_attribute_iter
      pos:
        line_end: 5
        line_start: 3
        source_file: /src/dovecot/src/lib-storage/mailbox-attribute-private.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-watch.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_index_view_get_messages_count
  - mail_index_lookup_uid
  - mail_index_lookup_seq_range
  - mail_index_modseq_get_next_log_offset
  - mail_transaction_log_view_open
  - mail_transaction_log_view_set
  - mail_transaction_log_view_close
  - mail_transaction_log_get_tail
  - mail_transaction_log_view_next
  - mail_transaction_log_view_mark
  - mail_transaction_log_view_rewind
  - test_mailbox_get_expunges
  - main
  source_file: /src/dovecot/src/lib-storage/test-mailbox-get.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_push_mailbox
  - lua_check_storage_mailbox
  - lua_storage_mailbox_tostring
  - lua_storage_mailbox_eq
  - lua_storage_mailbox_lt
  - lua_storage_mailbox_le
  - lua_storage_mailbox_unref
  - lua_storage_mailbox_gc
  - lua_storage_mailbox_open
  - lua_storage_mailbox_close
  - lua_storage_mailbox_sync
  - lua_storage_mailbox_status
  - LUA_TABLE_SET_NUMBER
  - LUA_TABLE_SET_BOOL
  - lua_storage_mailbox_metadata_get
  - lua_storage_mailbox_metadata_set
  - lua_storage_mailbox_metadata_unset
  - lua_storage_mailbox_metadata_list
  - lua_storage_mailbox_register
  source_file: /src/dovecot/src/lib-storage/mailbox-lua.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_STORAGE_MAILBOX
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/dovecot/src/lib-storage/mailbox-lua.c
      type_or_value: '"struct mailbox"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_namespace_is_removable
  - mail_namespace_is_inbox_noinferiors
  - mail_namespace_prefix_is_inbox
  source_file: /src/dovecot/src/lib-storage/mail-namespace.h
  types:
    enum:
    - enumerators:
      - name: MAIL_NAMESPACE_TYPE_PRIVATE
        value: '0x01'
      - name: MAIL_NAMESPACE_TYPE_SHARED
        value: '0x02'
      - name: MAIL_NAMESPACE_TYPE_PUBLIC
        value: "0x04\n#define MAIL_NAMESPACE_TYPE_MASK_ALL \\\n\t(MAIL_NAMESPACE_TYPE_PRIVATE
          | MAIL_NAMESPACE_TYPE_SHARED | \\\n\t MAIL_NAMESPACE_TYPE_PUBLIC)"
      item_type: enum
      name: mail_namespace_type
      pos:
        line_end: 14
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/mail-namespace.h
    - enumerators:
      - name: NAMESPACE_FLAG_INBOX_USER
        value: '0x01'
      - name: NAMESPACE_FLAG_HIDDEN
        value: '0x04'
      - name: NAMESPACE_FLAG_LIST_CHILDREN
        value: '0x10'
      - name: NAMESPACE_FLAG_INBOX_ANY
        value: '0x02'
      - name: NAMESPACE_FLAG_LIST_PREFIX
        value: '0x08'
      - name: NAMESPACE_FLAG_SUBSCRIPTIONS
        value: '0x20'
      - name: NAMESPACE_FLAG_AUTOCREATED
        value: '0x1000'
      - name: NAMESPACE_FLAG_USABLE
        value: '0x2000'
      - name: NAMESPACE_FLAG_UNUSABLE
        value: '0x4000'
      - name: NAMESPACE_FLAG_NOQUOTA
        value: '0x8000'
      - name: NAMESPACE_FLAG_NOACL
        value: '0x10000'
      item_type: enum
      name: namespace_flags
      pos:
        line_end: 44
        line_start: 16
        source_file: /src/dovecot/src/lib-storage/mail-namespace.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*next'
        type: struct mail_namespace
      - name: refcount
        type: int
      - name: type
        type: enum mail_namespace_type
      - name: flags
        type: enum namespace_flags
      - name: '*prefix'
        type: char
      - name: prefix_len
        type: size_t
      - name: '*alias_for'
        type: struct mail_namespace
      - name: '*alias_chain_next'
        type: struct mail_namespace
      - name: '*user'
        type: struct mail_user
      - name: '*list'
        type: struct mailbox_list
      - name: '*storage'
        type: struct mail_storage
      - name: '*_set_instance'
        type: struct settings_instance
      - name: '*set'
        type: struct mail_namespace_settings
      - name: destroyed
        type: bool
      item_type: struct
      name: mail_namespace
      pos:
        line_end: 77
        line_start: 46
        source_file: /src/dovecot/src/lib-storage/mail-namespace.h
    typedefs: []
    union: []
- function_names:
  - notify_delay_callback
  - notify_timeout
  - notify_callback
  - mailbox_watch_add
  - mailbox_watch_remove_all
  - notify_extract_callback
  - mailbox_watch_extract_notify_fd
  source_file: /src/dovecot/src/lib-storage/mailbox-watch.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NOTIFY_DELAY_MSECS
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/dovecot/src/lib-storage/mailbox-watch.c
      type_or_value: '500'
    structs:
    - fields:
      - name: '*next'
        type: struct mailbox_notify_file
      - name: '*path'
        type: char
      - name: last_st
        type: struct stat
      - name: '*io_notify'
        type: struct io
      item_type: struct
      name: mailbox_notify_file
      pos:
        line_end: 19
        line_start: 13
        source_file: /src/dovecot/src/lib-storage/mailbox-watch.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-tree.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*parent'
        type: struct mailbox_node
      - name: '*next'
        type: struct mailbox_node
      - name: '*children'
        type: struct mailbox_node
      - name: '*name'
        type: char
      - name: flags
        type: enum mailbox_info_flags
      item_type: struct
      name: mailbox_node
      pos:
        line_end: 12
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/mailbox-tree.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-search-parser.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_SEARCH_PARSER_KEY_LIST
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/dovecot/src/lib-storage/mail-search-parser.h
      type_or_value: '"("'
    structs: []
    typedefs: []
    union: []
- function_names:
  - mailbox_get_seq_range
  - mailbox_get_uid_range
  - mailbox_get_expunges_init
  - mailbox_get_expunged_guids
  - mailbox_get_expunges_full
  - mailbox_get_expunges
  - mailbox_get_expunged_uids
  source_file: /src/dovecot/src/lib-storage/mailbox-get.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dlua_push_mail
  - LUA_TABLE_SET_NUMBER
  - LUA_TABLE_SET_BOOL
  - lua_check_storage_mail
  - lua_storage_mail_tostring
  - lua_storage_mail_eq
  - lua_storage_mail_lt
  - lua_storage_mail_le
  - lua_storage_mail_gc
  - lua_storage_mail_register
  source_file: /src/dovecot/src/lib-storage/mail-lua.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LUA_STORAGE_MAIL
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/dovecot/src/lib-storage/mail-lua.c
      type_or_value: '"struct mail"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - mailbox_list_notify_init
  - mailbox_list_notify_deinit
  - mailbox_list_notify_next
  - mailbox_list_notify_wait
  - mailbox_list_notify_flush
  source_file: /src/dovecot/src/lib-storage/mailbox-list-notify.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_thread_type_parse
  - mail_thread_type_to_str
  source_file: /src/dovecot/src/lib-storage/mail-thread.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: type
        type: enum mail_thread_type
      item_type: struct
      name: "mail_thread_type_strings[] = {\n\t{ \"REFERENCES\", MAIL_THREAD_REFERENCES
        },\n\t{ \"REFS\", MAIL_THREAD_REFS },\n\t{ \"ORDEREDSUBJECT\", MAIL_THREAD_ORDEREDSUBJECT
        }\n}"
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/mail-thread.c
    typedefs: []
    union: []
- function_names:
  - mail_copy_set_failed
  - mail_save_copy_default_metadata
  - mail_storage_try_copy
  - mail_storage_copy
  - mail_storage_copy_can_use_hardlink
  source_file: /src/dovecot/src/lib-storage/mail-copy.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_mail_storage_init
  - test_mail_storage_deinit
  - test_mail_storage_init_user
  - test_mail_storage_deinit_user
  source_file: /src/dovecot/src/lib-storage/test-mail-storage-common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_search_build_new
  - mail_search_build_str
  - mail_search_build_key_int
  - mail_search_build_key
  - mail_search_build_list
  - mail_search_build
  - mail_search_build_init
  - mail_search_build_add
  - mail_search_build_add_all
  - mail_search_build_add_seqset
  - mail_search_build_get_utf8
  source_file: /src/dovecot/src/lib-storage/mail-search-build.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEF
  - DEF
  - DEF
  - DEF
  - DEF
  - DEF
  - mail_storage_event_get_user
  - fix_base_path
  - mail_cache_fields_parse
  - mailbox_list_get_path_setting
  - mail_storage_settings_apply
  - mail_storage_settings_ext_check
  - namespace_parse_mailboxes
  - namespace_settings_ext_check
  - mailbox_special_use_exists
  - mailbox_special_use_check
  - mailbox_settings_check
  - mail_user_settings_apply
  - mail_user_settings_check
  - get_postmaster_address_error
  - mail_user_set_get_postmaster_address
  - mail_user_set_get_postmaster_smtp
  - OFFSET
  - mail_storage_2nd_setting_reset_def
  - mail_storage_2nd_setting_reset_offset
  source_file: /src/dovecot/src/lib-storage/mail-storage-settings.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*set_name'
        type: char
      - name: type
        type: enum mailbox_list_path_type
      item_type: struct
      name: "set_types[] = {\n\t\t{ \"mail_path\", MAILBOX_LIST_PATH_TYPE_DIR },\n\t\t{
        \"mail_index_path\", MAILBOX_LIST_PATH_TYPE_INDEX },\n\t\t{ \"mail_index_private_path\",
        MAILBOX_LIST_PATH_TYPE_INDEX_PRIVATE },\n\t\t{ \"mail_cache_path\", MAILBOX_LIST_PATH_TYPE_INDEX_CACHE
        },\n\t\t{ \"mail_control_path\", MAILBOX_LIST_PATH_TYPE_CONTROL },\n\t\t{
        \"mail_alt_path\", MAILBOX_LIST_PATH_TYPE_ALT_DIR },\n\t}"
      pos:
        line_end: 534
        line_start: 531
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_INDEX_PATH_MEMORY
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
      type_or_value: '"MEMORY"'
    - item_type: preproc_def
      name: MAILBOX_SET_AUTO_NO
      pos:
        line_end: 149
        line_start: 148
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
      type_or_value: '"no"'
    - item_type: preproc_def
      name: MAILBOX_SET_AUTO_CREATE
      pos:
        line_end: 150
        line_start: 149
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
      type_or_value: '"create"'
    - item_type: preproc_def
      name: MAILBOX_SET_AUTO_SUBSCRIBE
      pos:
        line_end: 151
        line_start: 150
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
      type_or_value: '"subscribe"'
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*mail_driver'
        type: char
      item_type: struct
      name: mail_driver_settings
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*mailbox_list_layout'
        type: char
      item_type: struct
      name: mailbox_list_layout_settings
      pos:
        line_end: 26
        line_start: 23
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*mail_driver'
        type: char
      - name: '*mail_ext_attachment_path'
        type: char
      - name: '*mail_ext_attachment_hash'
        type: char
      - name: mail_ext_attachment_min_size
        type: uoff_t
      - name: mail_prefetch_count
        type: unsigned int
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*mail_server_comment'
        type: char
      - name: '*mail_server_admin'
        type: char
      - name: mail_cache_min_mail_count
        type: unsigned int
      - name: mail_cache_unaccessed_field_drop
        type: unsigned int
      - name: mail_cache_record_max_size
        type: uoff_t
      - name: mail_cache_max_header_name_length
        type: unsigned int
      - name: mail_cache_max_headers_count
        type: unsigned int
      - name: mail_cache_max_size
        type: uoff_t
      - name: mail_cache_purge_min_size
        type: uoff_t
      - name: mail_cache_purge_delete_percentage
        type: unsigned int
      - name: mail_cache_purge_continued_percentage
        type: unsigned int
      - name: mail_cache_purge_header_continue_count
        type: unsigned int
      - name: mail_index_rewrite_min_log_bytes
        type: uoff_t
      - name: mail_index_rewrite_max_log_bytes
        type: uoff_t
      - name: mail_index_log_rotate_min_size
        type: uoff_t
      - name: mail_index_log_rotate_max_size
        type: uoff_t
      - name: mail_index_log_rotate_min_age
        type: unsigned int
      - name: mail_index_log2_max_age
        type: unsigned int
      - name: mailbox_idle_check_interval
        type: unsigned int
      - name: mail_max_keyword_length
        type: unsigned int
      - name: mail_max_lock_timeout
        type: unsigned int
      - name: mail_temp_scan_interval
        type: unsigned int
      - name: mail_vsize_bg_after_count
        type: unsigned int
      - name: mail_sort_max_read_count
        type: unsigned int
      - name: mail_save_crlf
        type: bool
      - name: '*mail_fsync'
        type: char
      - name: mmap_disable
        type: bool
      - name: dotlock_use_excl
        type: bool
      - name: mail_nfs_storage
        type: bool
      - name: mail_nfs_index
        type: bool
      - name: mailbox_list_index
        type: bool
      - name: mailbox_list_index_very_dirty_syncs
        type: bool
      - name: mailbox_list_index_include_inbox
        type: bool
      - name: '*mailbox_list_layout'
        type: char
      - name: '*mailbox_list_index_prefix'
        type: char
      - name: mailbox_list_iter_from_index_dir
        type: bool
      - name: mailbox_list_drop_noselect
        type: bool
      - name: mailbox_list_validate_fs_names
        type: bool
      - name: mailbox_list_utf8
        type: bool
      - name: mailbox_list_normalize_names_to_nfc
        type: bool
      - name: '*mailbox_list_visible_escape_char'
        type: char
      - name: '*mailbox_list_storage_escape_char'
        type: char
      - name: '*mailbox_list_lost_mailbox_prefix'
        type: char
      - name: '*mailbox_directory_name'
        type: char
      - name: mailbox_directory_name_legacy
        type: bool
      - name: '*mailbox_root_directory_name'
        type: char
      - name: '*mailbox_subscriptions_filename'
        type: char
      - name: '*mail_path'
        type: char
      - name: '*mail_inbox_path'
        type: char
      - name: '*mail_index_path'
        type: char
      - name: '*mail_index_private_path'
        type: char
      - name: '*mail_cache_path'
        type: char
      - name: '*mail_control_path'
        type: char
      - name: '*mail_volatile_path'
        type: char
      - name: '*mail_alt_path'
        type: char
      - name: mail_alt_check
        type: bool
      - name: mail_full_filesystem_access
        type: bool
      - name: maildir_stat_dirs
        type: bool
      - name: mail_shared_explicit_inbox
        type: bool
      - name: '*lock_method'
        type: char
      - name: '*pop3_uidl_format'
        type: char
      - name: '*recipient_delimiter'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: parsed_lock_method
        type: enum file_lock_method
      - name: parsed_fsync_mode
        type: enum fsync_mode
      - name: '*const *parsed_mail_attachment_content_type_filter'
        type: char
      - name: parsed_mail_attachment_exclude_inlined
        type: bool
      - name: parsed_mail_attachment_detection_add_flags
        type: bool
      - name: parsed_mail_attachment_detection_no_flags_on_fetch
        type: bool
      - name: '*parsed_list_index_fname'
        type: char
      - name: '*parsed_list_index_dir'
        type: char
      - name: '*parsed_mailbox_root_directory_prefix'
        type: char
      - name: '*unexpanded_mailbox_list_path[MAILBOX_LIST_PATH_TYPE_COUNT]'
        type: char
      - name: unexpanded_mailbox_list_override[MAILBOX_LIST_PATH_TYPE_COUNT]
        type: bool
      item_type: struct
      name: mail_storage_settings
      pos:
        line_end: 122
        line_start: 28
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*type'
        type: char
      - name: '*separator'
        type: char
      - name: '*prefix'
        type: char
      - name: '*alias_for'
        type: char
      - name: inbox
        type: bool
      - name: hidden
        type: bool
      - name: '*list'
        type: char
      - name: subscriptions
        type: bool
      - name: ignore_on_failure
        type: bool
      - name: disabled
        type: bool
      - name: order
        type: unsigned int
      - name: (const_string)
        type: ARRAY_TYPE
      - name: parsed_have_special_use_mailboxes
        type: bool
      item_type: struct
      name: mail_namespace_settings
      pos:
        line_end: 145
        line_start: 124
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*name'
        type: char
      - name: '*autocreate'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*comment'
        type: char
      - name: autoexpunge
        type: unsigned int
      - name: autoexpunge_max_mails
        type: unsigned int
      item_type: struct
      name: mailbox_settings
      pos:
        line_end: 160
        line_start: 152
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
    - fields:
      - name: pool
        type: pool_t
      - name: '*base_dir'
        type: char
      - name: '*auth_socket_path'
        type: char
      - name: '*mail_temp_dir'
        type: char
      - name: mail_debug
        type: bool
      - name: '*mail_uid'
        type: char
      - name: '*mail_gid'
        type: char
      - name: '*mail_home'
        type: char
      - name: '*mail_chroot'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*mail_privileged_group'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: first_valid_uid
        type: unsigned int
      - name: first_valid_gid
        type: unsigned int
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*mail_plugin_dir'
        type: char
      - name: '*mail_log_prefix'
        type: char
      - name: (const_string)
        type: ARRAY_TYPE
      - name: '*hostname'
        type: char
      - name: '*postmaster_address'
        type: char
      - name: '*_parsed_postmaster_address'
        type: struct message_address
      - name: '*_parsed_postmaster_address_smtp'
        type: struct smtp_address
      - name: '*unexpanded_mail_log_prefix'
        type: char
      item_type: struct
      name: mail_user_settings
      pos:
        line_end: 194
        line_start: 162
        source_file: /src/dovecot/src/lib-storage/mail-storage-settings.h
    typedefs: []
    union: []
- function_names:
  - mail_search_subargs_to_cmdline
  - mail_search_arg_to_cmdline
  - mail_search_args_to_cmdline
  source_file: /src/dovecot/src/lib-storage/mail-search-args-cmdline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-list.h
  types:
    enum:
    - enumerators:
      - name: MAILBOX_LIST_PROP_NO_MAILDIR_NAME
        value: '0x01'
      - name: MAILBOX_LIST_PROP_NO_NOSELECT
        value: '0x04'
      - name: MAILBOX_LIST_PROP_NO_ALT_DIR
        value: '0x02'
      - name: MAILBOX_LIST_PROP_AUTOCREATE_DIRS
        value: '0x10'
      - name: MAILBOX_LIST_PROP_NO_ROOT
        value: '0x08'
      - name: MAILBOX_LIST_PROP_NO_LIST_INDEX
        value: '0x20'
      - name: MAILBOX_LIST_PROP_NO_INTERNAL_NAMES
        value: '0x40'
      item_type: enum
      name: mailbox_list_properties
      pos:
        line_end: 36
        line_start: 17
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
    - enumerators:
      - name: MAILBOX_LIST_FLAG_MAILBOX_FILES
        value: '0x01'
      - name: MAILBOX_LIST_FLAG_SECONDARY
        value: '0x02'
      - name: MAILBOX_LIST_FLAG_NO_DELETES
        value: '0x08'
      - name: MAILBOX_LIST_FLAG_NO_MAIL_FILES
        value: '0x04'
      item_type: enum
      name: mailbox_list_flags
      pos:
        line_end: 49
        line_start: 38
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
    - enumerators:
      - name: MAILBOX_NOINFERIORS
        value: '0x010'
      - name: MAILBOX_CHILD_SUBSCRIBED
        value: '0x100'
      - name: MAILBOX_SPECIALUSE_IMPORTANT
        value: '0x00800000'
      - name: MAILBOX_SELECT
        value: '0x20000000'
      - name: MAILBOX_SPECIALUSE_ARCHIVE
        value: '0x00020000'
      - name: MAILBOX_SPECIALUSE_SENT
        value: '0x00200000'
      - name: MAILBOX_NOSELECT
        value: '0x001'
      - name: MAILBOX_NOCHILDREN
        value: '0x008'
      - name: MAILBOX_SUBSCRIBED
        value: '0x080'
      - name: MAILBOX_SPECIALUSE_JUNK
        value: '0x00100000'
      - name: MAILBOX_SPECIALUSE_TRASH
        value: '0x00400000'
      - name: MAILBOX_CHILDREN
        value: '0x004'
      - name: MAILBOX_UNMARKED
        value: '0x040'
      - name: MAILBOX_SPECIALUSE_FLAGGED
        value: '0x00080000'
      - name: MAILBOX_SPECIALUSE_ALL
        value: '0x00010000'
      - name: MAILBOX_NONEXISTENT
        value: '0x002'
      - name: MAILBOX_MARKED
        value: '0x020'
      - name: MAILBOX_CHILD_SPECIALUSE
        value: '0x200'
      - name: MAILBOX_SPECIALUSE_DRAFTS
        value: '0x00040000'
      - name: MAILBOX_MATCHED
        value: '0x40000000'
      item_type: enum
      name: mailbox_info_flags
      pos:
        line_end: 78
        line_start: 51
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
    - enumerators:
      - name: MAILBOX_LIST_PATH_TYPE_DIR
      - name: MAILBOX_LIST_PATH_TYPE_ALT_DIR
      - name: MAILBOX_LIST_PATH_TYPE_ALT_MAILBOX
      - name: MAILBOX_LIST_PATH_TYPE_CONTROL
      - name: MAILBOX_LIST_PATH_TYPE_MAILBOX
      - name: MAILBOX_LIST_PATH_TYPE_INDEX
      - name: MAILBOX_LIST_PATH_TYPE_INDEX_PRIVATE
      - name: MAILBOX_LIST_PATH_TYPE_INDEX_CACHE
      - name: MAILBOX_LIST_PATH_TYPE_LIST_INDEX
      - name: MAILBOX_LIST_PATH_TYPE_COUNT
      item_type: enum
      name: mailbox_list_path_type
      pos:
        line_end: 101
        line_start: 80
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
    - enumerators:
      - name: MAILBOX_LIST_FILE_TYPE_UNKNOWN
        value: '0'
      - name: MAILBOX_LIST_FILE_TYPE_SYMLINK
      - name: MAILBOX_LIST_FILE_TYPE_FILE
      - name: MAILBOX_LIST_FILE_TYPE_DIR
      - name: MAILBOX_LIST_FILE_TYPE_OTHER
      item_type: enum
      name: mailbox_list_file_type
      pos:
        line_end: 109
        line_start: 103
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
    - enumerators:
      - name: MAILBOX_LIST_GET_STORAGE_FLAG_SAVEONLY
        value: BIT(0)
      item_type: enum
      name: mailbox_list_get_storage_flags
      pos:
        line_end: 113
        line_start: 111
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_LIST_NAME_MAX_LENGTH
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
      type_or_value: PATH_MAX
    - item_type: preproc_def
      name: MAILBOX_LIST_NAME_MAX_LENGTH
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
      type_or_value: '4096'
    structs:
    - fields:
      - name: file_uid
        type: uid_t
      - name: file_gid
        type: gid_t
      - name: file_create_mode
        type: mode_t
      - name: file_create_gid
        type: gid_t
      - name: '*file_create_gid_origin'
        type: char
      - name: gid_origin_is_mailbox_path
        type: bool
      - name: mail_index_permissions_set
        type: bool
      item_type: struct
      name: mailbox_permissions
      pos:
        line_end: 129
        line_start: 115
        source_file: /src/dovecot/src/lib-storage/mailbox-list.h
    typedefs: []
    union: []
- function_names:
  - mail_storage_hooks_init
  - mail_storage_hooks_deinit
  - mail_storage_hooks_add
  - mail_storage_hooks_add_forced
  - mail_storage_hooks_remove
  - mail_storage_hooks_add_internal
  - mail_storage_hooks_remove_internal
  - mail_storage_module_hooks_cmp
  - mail_user_add_plugin_hooks
  - hook_mail_user_created
  - hook_mail_namespace_storage_added
  - hook_mail_namespaces_created
  - hook_mail_namespaces_added
  - hook_mail_storage_created
  - hook_mailbox_list_created
  - hook_mailbox_allocated
  - hook_mailbox_opened
  - hook_mail_allocated
  source_file: /src/dovecot/src/lib-storage/mail-storage-hooks.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*module'
        type: struct module
      - name: '*hooks'
        type: struct mail_storage_hooks
      - name: forced
        type: bool
      item_type: struct
      name: mail_storage_module_hooks
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/dovecot/src/lib-storage/mail-storage-hooks.c
    typedefs: []
    union: []
- function_names:
  - LANG_USER_CONTEXT
  - LANG_USER_CONTEXT_REQUIRE
  - lang_user_settings_get
  - array_foreach_elem
  - lang_user_init_languages
  - lang_user_create_filters
  - lang_user_create_tokenizer
  - lang_user_language_init_tokenizers
  - lang_user_language_find
  - lang_user_language_create
  - lang_user_languages_fill_all
  - lang_user_init_data_language
  - lang_user_get_language_list
  - lang_user_get_all_languages
  - lang_user_get_data_languages
  - lang_user_get_data_lang
  - lang_user_get_settings
  - lang_user_language_free
  - lang_user_free
  - lang_user_init_libfts
  - lang_user_init
  - lang_user_deinit
  source_file: /src/dovecot/src/lib-storage/lang-user.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: module_ctx
        type: union mail_user_module_context
      - name: '*set'
        type: struct langs_settings
      - name: refcount
        type: int
      - name: '*event'
        type: struct event
      - name: '*lang_list'
        type: struct language_list
      - name: '*data_lang'
        type: struct language_user
      - name: (language_user)
        type: ARRAY_TYPE
      item_type: struct
      name: lang_user
      pos:
        line_end: 27
        line_start: 18
        source_file: /src/dovecot/src/lib-storage/lang-user.c
    typedefs: []
    union: []
- function_names:
  - mail_search_register_init
  - mail_search_register_deinit
  - mail_search_register_add
  - mail_search_register_fallback
  - mail_search_register_arg_cmp
  - mail_search_register_get
  - mail_search_register_find
  - mail_search_register_get_fallback
  source_file: /src/dovecot/src/lib-storage/mail-search-register.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*fallback'
        type: mail_search_register_fallback_t
      - name: args_sorted
        type: bool
      item_type: struct
      name: mail_search_register
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/mail-search-register.c
    typedefs: []
    union: []
- function_names:
  - mailbox_recent_flags_set_uid
  - mailbox_recent_flags_set_uid_forced
  - mailbox_recent_flags_set_seqs
  - mailbox_recent_flags_have_uid
  - mailbox_recent_flags_reset
  - mailbox_recent_flags_count
  - mailbox_recent_flags_expunge_seqs
  - mailbox_recent_flags_expunge_uid
  source_file: /src/dovecot/src/lib-storage/mailbox-recent-flags.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-thread.h
  types:
    enum:
    - enumerators:
      - name: MAIL_THREAD_NONE
      - name: MAIL_THREAD_REFERENCES
      - name: MAIL_THREAD_ORDEREDSUBJECT
      - name: MAIL_THREAD_REFS
      item_type: enum
      name: mail_thread_type
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/mail-thread.h
    preproc_defs: []
    structs:
    - fields:
      - name: idx
        type: uint32_t
      - name: uid
        type: uint32_t
      - name: sort_date
        type: time_t
      item_type: struct
      name: mail_thread_child_node
      pos:
        line_end: 21
        line_start: 14
        source_file: /src/dovecot/src/lib-storage/mail-thread.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-storage-lua.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_STORAGE_LUA_H
      pos:
        line_end: 2
        line_start: 1
        source_file: /src/dovecot/src/lib-storage/mail-storage-lua.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_search_mime_args_foreach
  source_file: /src/dovecot/src/lib-storage/mail-search-mime.h
  types:
    enum:
    - enumerators:
      - name: SEARCH_MIME_SIZE_EQUAL
      - name: SEARCH_MIME_DESCRIPTION
      - name: SEARCH_MIME_ENCODING
      - name: SEARCH_MIME_MD5
      - name: SEARCH_MIME_PARAM
      - name: SEARCH_MIME_BCC
      - name: SEARCH_MIME_REPLY_TO
      - name: SEARCH_MIME_SENTSINCE
      - name: SEARCH_MIME_PARENT
      - name: SEARCH_MIME_FILENAME_IS
      - name: SEARCH_MIME_SUB
      - name: SEARCH_MIME_SIZE_SMALLER
      - name: SEARCH_MIME_DISPOSITION_PARAM
      - name: SEARCH_MIME_LOCATION
      - name: SEARCH_MIME_SUBTYPE
      - name: SEARCH_MIME_BODY
      - name: SEARCH_MIME_MESSAGE_ID
      - name: SEARCH_MIME_SENTON
      - name: SEARCH_MIME_TO
      - name: SEARCH_MIME_DEPTH_EQUAL
      - name: SEARCH_MIME_INDEX
      - name: SEARCH_MIME_SIZE_LARGER
      - name: SEARCH_MIME_DISPOSITION_TYPE
      - name: SEARCH_MIME_LANGUAGE
      - name: SEARCH_MIME_CC
      - name: SEARCH_MIME_IN_REPLY_TO
      - name: SEARCH_MIME_SENTBEFORE
      - name: SEARCH_MIME_SUBJECT
      - name: SEARCH_MIME_CHILD
      - name: SEARCH_MIME_DEPTH_MAX
      - name: SEARCH_MIME_FILENAME_CONTAINS
      - name: SEARCH_MIME_FILENAME_BEGINS
      - name: SEARCH_MIME_FILENAME_ENDS
      - name: SEARCH_MIME_OR
      - name: SEARCH_MIME_ID
      - name: SEARCH_MIME_HEADER
      - name: SEARCH_MIME_TYPE
      - name: SEARCH_MIME_TEXT
      - name: SEARCH_MIME_FROM
      - name: SEARCH_MIME_SENDER
      - name: SEARCH_MIME_DEPTH_MIN
      item_type: enum
      name: mail_search_mime_arg_type
      pos:
        line_end: 63
        line_start: 3
        source_file: /src/dovecot/src/lib-storage/mail-search-mime.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*next'
        type: struct mail_search_mime_arg
      - name: type
        type: enum mail_search_mime_arg_type
      - name: value
        type: "union {\n\t\tstruct mail_search_mime_arg *subargs;\n\t\tconst char
          *str;\n\t\ttime_t time;\n\t\tuoff_t size;\n\t\tunsigned int number;\n\t}"
      - name: '*context'
        type: void
      - name: '*field_name'
        type: char
      - name: match_not
        type: bool
      - name: match_always
        type: bool
      - name: nonmatch_always
        type: bool
      - name: result
        type: int
      item_type: struct
      name: mail_search_mime_arg
      pos:
        line_end: 86
        line_start: 65
        source_file: /src/dovecot/src/lib-storage/mail-search-mime.h
    - fields:
      - name: '*args'
        type: struct mail_search_mime_arg
      - name: simplified
        type: bool
      item_type: struct
      name: mail_search_mime_part
      pos:
        line_end: 92
        line_start: 88
        source_file: /src/dovecot/src/lib-storage/mail-search-mime.h
    typedefs:
    - item_type: typedef
      name: "mail_search_mime_foreach_callback_t(struct mail_search_mime_arg *arg,\n\t\t\t\t
        \   void *context)"
      pos:
        line_end: 96
        line_start: 94
        source_file: /src/dovecot/src/lib-storage/mail-search-mime.h
      type: void
    union: []
- function_names:
  - mail_search_mime_arg_dup_one
  - mail_search_mime_arg_dup
  - mail_search_mime_part_dup
  - mail_search_mime_args_reset
  - search_mime_arg_foreach
  - mail_search_mime_args_foreach
  - mail_search_mime_arg_one_equals
  - mail_search_mime_arg_equals
  - mail_search_mime_parts_equal
  - mail_search_mime_simplify
  - mail_search_mime_subargs_to_imap
  - mail_search_mime_arg_to_imap_date
  - mail_search_mime_arg_to_imap
  - mail_search_mime_part_to_imap
  source_file: /src/dovecot/src/lib-storage/mail-search-mime.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lua_storage_mailbox_attribute_get
  - lua_storage_mailbox_attribute_set
  - lua_storage_mailbox_attribute_list
  source_file: /src/dovecot/src/lib-storage/mailbox-attribute-lua.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_alloc
  - mail_free
  - mail_set_seq
  - mail_set_seq_saving
  - mail_set_uid
  - mail_prefetch
  - mail_add_temp_wanted_fields
  - index_mail_get_age_days
  - mail_event_create
  - mail_event
  - mail_get_flags
  - mail_get_modseq
  - mail_get_pvt_modseq
  - mail_get_keywords
  - mail_get_keyword_indexes
  - mail_get_parts
  - mail_get_date
  - mail_get_received_date
  - mail_get_save_date
  - mail_get_virtual_size
  - mail_get_physical_size
  - mail_get_first_header
  - mail_get_first_header_utf8
  - mail_get_headers
  - mail_get_headers_utf8
  - mail_get_header_stream
  - mail_set_aborted
  - mail_get_stream
  - mail_get_stream_because
  - mail_get_hdr_stream
  - mail_get_hdr_stream_because
  - mail_get_binary_stream
  - mail_get_binary_properties
  - mail_get_special
  - mail_get_backend_mail
  - mail_get_message_id_full
  - mail_get_message_id
  - mail_get_message_id_no_validation
  - mail_update_flags
  - mail_update_keywords
  - mail_update_modseq
  - mail_update_pvt_modseq
  - mail_update_pop3_uidl
  - mail_expunge
  - mail_autoexpunge
  - mail_set_expunged
  - mail_precache
  - mail_set_cache_corrupted
  - mail_generate_guid_128_hash
  - mail_message_has_attachment
  - mail_has_attachment_keywords
  - mail_parse_parts
  - mail_set_attachment_keywords
  - mail_stream_access_start
  - mail_metadata_access_start
  - mail_opened_event
  - mail_metadata_accessed_event
  - mail_expunge_requested_event
  source_file: /src/dovecot/src/lib-storage/mail.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mailbox_search_result_analyze_args
  - mailbox_search_result_alloc
  - mailbox_search_result_free
  - mailbox_search_result_save
  - mailbox_search_result_initial_done
  - mailbox_search_results_initial_done
  - mailbox_search_result_add
  - mailbox_search_result_remove
  - mailbox_search_results_add
  - mailbox_search_results_remove
  - mailbox_search_result_never
  - mailbox_search_results_never
  - mailbox_search_result_get
  - mailbox_search_result_sync
  source_file: /src/dovecot/src/lib-storage/mailbox-search-result.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-recent-flags.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-search-build.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*args'
        type: struct mail_search_args
      - name: '*reg'
        type: struct mail_search_register
      - name: '*parser'
        type: struct mail_search_parser
      - name: '*charset'
        type: char
      - name: '*parent'
        type: struct mail_search_arg
      - name: '*_error'
        type: char
      - name: charset_checked
        type: bool
      - name: unknown_charset
        type: bool
      item_type: struct
      name: mail_search_build_context
      pos:
        line_end: 20
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/mail-search-build.h
    typedefs: []
    union: []
- function_names:
  - test_build_search_args
  - test_search_args_are_initialized
  - test_mail_search_args_simplify
  - test_mail_search_args_simplify_empty_lists
  - main
  source_file: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*input'
        type: char
      - name: '*output'
        type: char
      item_type: struct
      name: "tests[] = {\n\t{ \"ALL\", \"ALL\" },\n\t{ \"NOT ALL\", \"NOT ALL\" },\n\t{
        \"ALL NOT ALL\", \"NOT ALL\" },\n\t{ \"ALL NOT ALL TEXT foo\", \"NOT ALL\"
        },\n\t{ \"OR ALL NOT ALL\", \"ALL\" },\n\t{ \"OR ALL OR NOT ALL TEXT foo\",
        \"ALL\" },\n\t{ \"OR ALL OR TEXT foo TEXT bar\", \"ALL\" },\n\t{ \"OR TEXT
        FOO ( ALL NOT ALL )\", \"TEXT FOO\" },\n\t{ \"TEXT FOO OR ALL NOT ALL\", \"TEXT
        FOO\" },\n\n\t{ \"TEXT foo\", \"TEXT foo\" },\n\t{ \"( TEXT foo )\", \"TEXT
        foo\" },\n\t{ \"( ( TEXT foo ) )\", \"TEXT foo\" },\n\t{ \"( ( TEXT foo )
        ( TEXT bar ) )\", \"TEXT foo TEXT bar\" },\n\n\t{ \"OR ( TEXT foo ) ( TEXT
        bar )\", \"OR TEXT foo TEXT bar\" },\n\t{ \"OR ( TEXT foo ) OR ( TEXT bar
        ) ( TEXT baz )\",\n\t  \"OR TEXT foo OR TEXT bar TEXT baz\" },\n\t{ \"OR (
        ( TEXT foo TEXT foo2 ) ) ( ( TEXT bar ( TEXT baz ) ) )\",\n\t  \"OR (TEXT
        foo TEXT foo2) (TEXT bar TEXT baz)\" },\n\n\t{ \"NOT ( TEXT foo )\", \"NOT
        TEXT foo\" },\n\t{ \"NOT ( NOT ( TEXT foo ) )\", \"TEXT foo\" },\n\t{ \"NOT
        OR ( TEXT foo ) ( TEXT bar )\", \"NOT TEXT foo NOT TEXT bar\" },\n\t{ \"NOT
        ( OR ( TEXT foo ) ( TEXT bar ) )\", \"NOT TEXT foo NOT TEXT bar\" },\n\t{
        \"NOT ( TEXT foo TEXT bar )\", \"OR NOT TEXT foo NOT TEXT bar\" },\n\n\t{
        \"ANSWERED FLAGGED SEEN\", \"(ANSWERED FLAGGED SEEN)\" },\n\t{ \"OR ( ANSWERED
        FLAGGED SEEN ) DRAFT\", \"OR (ANSWERED FLAGGED SEEN) DRAFT\" },\n\t{ \"ANSWERED
        TEXT foo FLAGGED SEEN\", \"(ANSWERED FLAGGED SEEN) TEXT foo\" },\n\t{ \"NOT
        ( ANSWERED FLAGGED SEEN )\", \"NOT (ANSWERED FLAGGED SEEN)\" },\n\t{ \"OR
        NOT ANSWERED OR NOT FLAGGED NOT SEEN\", \"NOT (ANSWERED FLAGGED SEEN)\" },\n\t{
        \"OR NOT ANSWERED OR NOT FLAGGED SEEN\", \"OR NOT (ANSWERED FLAGGED) SEEN\"
        },\n\t{ \"OR NOT ANSWERED OR FLAGGED NOT SEEN\", \"OR NOT (ANSWERED SEEN)
        FLAGGED\" },\n\t{ \"NOT ANSWERED OR FLAGGED NOT SEEN\", \"NOT ANSWERED OR
        FLAGGED NOT SEEN\" },\n\t{ \"NOT ANSWERED OR NOT FLAGGED NOT SEEN\", \"NOT
        ANSWERED NOT (FLAGGED SEEN)\" },\n\t{ \"ANSWERED NOT FLAGGED SEEN NOT DRAFT\",
        \"(ANSWERED SEEN) NOT FLAGGED NOT DRAFT\" },\n\t{ \"OR NOT ANSWERED NOT SEEN\",
        \"NOT (ANSWERED SEEN)\" },\n\t{ \"OR NOT ANSWERED OR NOT SEEN TEXT foo\",
        \"OR NOT (ANSWERED SEEN) TEXT foo\" },\n\n\t{ \"ANSWERED ANSWERED\", \"ANSWERED\"
        },\n\t{ \"ANSWERED NOT ANSWERED\", \"NOT ALL\" },\n\t{ \"ANSWERED ANSWERED
        NOT ANSWERED\", \"NOT ALL\" },\n\t{ \"ANSWERED NOT ANSWERED ANSWERED NOT ANSWERED\",
        \"NOT ALL\" },\n\t{ \"NOT ANSWERED NOT ANSWERED\", \"NOT ANSWERED\" },\n\t{
        \"NOT SEEN NOT ANSWERED NOT ANSWERED\", \"NOT SEEN NOT ANSWERED\" },\n\t{
        \"OR NOT SEEN OR NOT ANSWERED NOT ANSWERED\", \"NOT (ANSWERED SEEN)\" },\n\n\t{
        \"KEYWORD foo\", \"KEYWORD foo\" },\n\t{ \"KEYWORD foo KEYWORD bar\", \"KEYWORD
        foo KEYWORD bar\" },\n\t{ \"NOT KEYWORD foo\", \"NOT KEYWORD foo\" },\n\t{
        \"NOT KEYWORD foo NOT KEYWORD bar\", \"NOT KEYWORD foo NOT KEYWORD bar\" },\n\t{
        \"OR KEYWORD foo KEYWORD bar\", \"OR KEYWORD foo KEYWORD bar\" },\n\t{ \"OR
        NOT KEYWORD foo NOT KEYWORD bar\", \"OR NOT KEYWORD foo NOT KEYWORD bar\"
        },\n\n\t{ \"KEYWORD foo KEYWORD foo\", \"KEYWORD foo\" },\n\t{ \"KEYWORD foo
        NOT KEYWORD foo\", \"NOT ALL\" },\n\t{ \"OR KEYWORD foo NOT KEYWORD foo\",
        \"ALL\" },\n\t{ \"OR KEYWORD foo KEYWORD foo\", \"KEYWORD foo\" },\n\t{ \"NOT
        KEYWORD foo NOT KEYWORD foo\", \"NOT KEYWORD foo\" },\n\n\t{ \"1:* 1:*\",
        \"ALL\" },\n\t{ \"OR 1:5 6:*\", \"ALL\" },\n\n\t{ \"UID 1:* UID 1:*\", \"ALL\"
        },\n\t{ \"OR UID 1:5 UID 6:*\", \"ALL\" },\n\n\t{ \"2:* 2:*\", \"2:4294967295\"
        },\n\t{ \"OR 2:* 2:*\", \"2:4294967295\" },\n\n\t{ \"UID 2:* UID 2:*\", \"UID
        2:4294967295\" },\n\t{ \"OR UID 2:* UID 2:*\", \"UID 2:4294967295\" },\n\n\t{
        \"1:5 6:7\", \"NOT ALL\" },\n\t{ \"1:5 3:7\", \"3:5\" },\n\t{ \"1:5 3:7 4:9\",
        \"4:5\" },\n\t{ \"1:5 OR 3:4 4:6\", \"3:5\" },\n\t{ \"OR 1 2\", \"1:2\" },\n\t{
        \"NOT 1,3:5\", \"2,6:4294967294\" },\n\t{ \"NOT 1:100 NOT 50:200\", \"201:4294967294\"
        },\n\t{ \"OR NOT 1:100 NOT 50:200\", \"1:49,101:4294967294\" },\n\n\t{ \"UID
        1:5 UID 6:7\", \"NOT ALL\" },\n\t{ \"UID 1:5 UID 3:7\", \"UID 3:5\" },\n\t{
        \"OR UID 1 UID 2\", \"UID 1:2\" },\n\t{ \"NOT UID 1,3:5\", \"UID 2,6:4294967294\"
        },\n\n\t{ \"1:5 UID 10:20\", \"1:5 UID 10:20\" },\n\t{ \"1:5 NOT UID 10:20\",
        \"1:5 UID 1:9,21:4294967294\" },\n\n\t{ \"ALL NOT UID 3:*\", \"NOT UID 3:4294967295\"
        },\n\t{ \"NOT 1:10 NOT *\", \"11:4294967294 NOT 4294967295\" },\n\n\t{ \"BEFORE
        03-Aug-2014 BEFORE 01-Aug-2014 BEFORE 02-Aug-2014\", \"BEFORE \\\"01-Aug-2014\\\"\"
        },\n\t{ \"OR BEFORE 01-Aug-2014 BEFORE 02-Aug-2014\", \"BEFORE \\\"02-Aug-2014\\\"\"
        },\n\t{ \"OR BEFORE 01-Aug-2014 OR BEFORE 03-Aug-2014 BEFORE 02-Aug-2014\",
        \"BEFORE \\\"03-Aug-2014\\\"\" },\n\t{ \"BEFORE 03-Aug-2014 NOT BEFORE 01-Aug-2014
        BEFORE 02-Aug-2014\", \"BEFORE \\\"02-Aug-2014\\\" NOT BEFORE \\\"01-Aug-2014\\\"\"
        },\n\t{ \"SENTBEFORE 03-Aug-2014 SENTBEFORE 01-Aug-2014 SENTBEFORE 02-Aug-2014\",
        \"SENTBEFORE \\\"01-Aug-2014\\\"\" },\n\t{ \"SENTBEFORE 03-Aug-2014 BEFORE
        01-Aug-2014 SENTBEFORE 02-Aug-2014\", \"SENTBEFORE \\\"02-Aug-2014\\\" BEFORE
        \\\"01-Aug-2014\\\"\" },\n\n\t{ \"ON 03-Aug-2014 ON 03-Aug-2014\", \"ON \\\"03-Aug-2014\\\"\"
        },\n\t{ \"ON 03-Aug-2014 ON 04-Aug-2014\", \"ON \\\"03-Aug-2014\\\" ON \\\"04-Aug-2014\\\"\"
        }, /* this could be replaced with e.g. NOT ALL */\n\t{ \"OR ON 03-Aug-2014
        ON 04-Aug-2014\", \"OR ON \\\"03-Aug-2014\\\" ON \\\"04-Aug-2014\\\"\" },\n\n\t{
        \"SINCE 03-Aug-2014 SINCE 01-Aug-2014 SINCE 02-Aug-2014\", \"SINCE \\\"03-Aug-2014\\\"\"
        },\n\t{ \"OR SINCE 01-Aug-2014 SINCE 02-Aug-2014\", \"SINCE \\\"01-Aug-2014\\\"\"
        },\n\t{ \"OR SINCE 01-Aug-2014 OR SINCE 03-Aug-2014 SINCE 02-Aug-2014\", \"SINCE
        \\\"01-Aug-2014\\\"\" },\n\t{ \"SINCE 03-Aug-2014 NOT SINCE 01-Aug-2014 SINCE
        02-Aug-2014\", \"SINCE \\\"03-Aug-2014\\\" NOT SINCE \\\"01-Aug-2014\\\"\"
        },\n\t{ \"SENTSINCE 03-Aug-2014 SENTSINCE 01-Aug-2014 SENTSINCE 02-Aug-2014\",
        \"SENTSINCE \\\"03-Aug-2014\\\"\" },\n\t{ \"SENTSINCE 03-Aug-2014 SINCE 01-Aug-2014
        SENTSINCE 02-Aug-2014\", \"SENTSINCE \\\"03-Aug-2014\\\" SINCE \\\"01-Aug-2014\\\"\"
        },\n\n\t{ \"SMALLER 1 SMALLER 2\", \"SMALLER 1\" },\n\t{ \"OR SMALLER 1 SMALLER
        2\", \"SMALLER 2\" },\n\t{ \"OR SMALLER 1 OR SMALLER 3 SMALLER 2\", \"SMALLER
        3\" },\n\t{ \"SMALLER 3 NOT SMALLER 1 SMALLER 2\", \"SMALLER 2 NOT SMALLER
        1\" },\n\t{ \"SMALLER 3 LARGER 5\", \"SMALLER 3 LARGER 5\" }, /* this could
        be replaced with e.g. NOT ALL */\n\t{ \"OR SMALLER 3 LARGER 5\", \"OR SMALLER
        3 LARGER 5\" },\n\n\t{ \"LARGER 3 LARGER 1 LARGER 2\", \"LARGER 3\" },\n\t{
        \"OR LARGER 1 LARGER 2\", \"LARGER 1\" },\n\t{ \"OR LARGER 1 OR LARGER 3 LARGER
        2\", \"LARGER 1\" },\n\t{ \"LARGER 3 NOT LARGER 1 LARGER 2\", \"LARGER 3 NOT
        LARGER 1\" },\n\n\t{ \"SUBJECT foo SUBJECT foo\", \"SUBJECT foo\" },\n\t{
        \"SUBJECT foo NOT SUBJECT foo\", \"NOT ALL\" },\n\t{ \"OR SUBJECT foo NOT
        SUBJECT foo\", \"ALL\" },\n\t{ \"SUBJECT foo SUBJECT foob\", \"SUBJECT foo
        SUBJECT foob\" },\n\t{ \"OR SUBJECT foo SUBJECT foo\", \"SUBJECT foo\" },\n\t{
        \"FROM foo FROM foo\", \"FROM foo\" },\n\t{ \"FROM foo NOT FROM foo\", \"NOT
        ALL\" },\n\t{ \"OR FROM foo NOT FROM foo\", \"ALL\" },\n\t{ \"FROM foo FROM
        bar\", \"FROM foo FROM bar\" },\n\t{ \"FROM foo TO foo\", \"FROM foo TO foo\"
        },\n\n\t{ \"TEXT foo TEXT foo\", \"TEXT foo\" },\n\t{ \"TEXT foo TEXT foob\",
        \"TEXT foo TEXT foob\" },\n\t{ \"OR TEXT foo TEXT foo\", \"TEXT foo\" },\n\t{
        \"OR NOT TEXT foo TEXT foo\", \"ALL\" },\n\t{ \"OR TEXT foo NOT TEXT foo\",
        \"ALL\" },\n\t{ \"TEXT foo NOT TEXT foo\", \"NOT ALL\" },\n\t{ \"NOT TEXT
        foo TEXT foo\", \"NOT ALL\" },\n\t{ \"BODY foo BODY foo\", \"BODY foo\" },\n\t{
        \"BODY foo NOT BODY foo\", \"NOT ALL\" },\n\t{ \"OR BODY foo NOT BODY foo\",
        \"ALL\" },\n\t{ \"OR BODY foo BODY foo\", \"BODY foo\" },\n\t{ \"TEXT foo
        BODY foo\", \"TEXT foo BODY foo\" },\n\t{ \"OR ( TEXT foo OR TEXT foo TEXT
        foo ) ( TEXT foo ( TEXT foo ) )\", \"TEXT foo\" },\n\n\t/* value=\"\" tests
        */\n\t{ \"HEADER foo \", \"HEADER FOO \\\"\\\"\" },\n\t{ \"SUBJECT \", \"SUBJECT
        \\\"\\\"\" },\n\t{ \"BODY \", \"ALL\" },\n\t{ \"TEXT \", \"ALL\" },\n\t{ \"HEADER
        foo .\", \"HEADER FOO .\" },\n\t{ \"SUBJECT .\", \"SUBJECT .\" },\n\t{ \"BODY
        .\", \"BODY .\" },\n\t{ \"TEXT .\", \"TEXT .\" },\n\n\t/* OR: drop redundant
        args */\n\t{ \"OR ( TEXT common1 TEXT unique1 ) TEXT common1\", \"TEXT common1\"
        },\n\t{ \"OR ( TEXT unique1 TEXT common1 ) TEXT common1\", \"TEXT common1\"
        },\n\t{ \"OR TEXT common1 ( TEXT common1 TEXT unique1 )\", \"TEXT common1\"
        },\n\t{ \"OR TEXT common1 ( TEXT unique1 TEXT common1 )\", \"TEXT common1\"
        },\n\t{ \"OR ( TEXT common1 TEXT common2 ) ( TEXT common1 TEXT common2 TEXT
        unique1 )\", \"TEXT common1 TEXT common2\" },\n\t{ \"OR TEXT common1 OR (
        TEXT unique1 TEXT common1 ) ( TEXT unique3 TEXT common1 )\", \"TEXT common1\"
        },\n\n\t/* OR: extract common AND */\n\t{ \"OR ( TEXT common1 TEXT unique1
        ) ( TEXT common1 TEXT unique2 )\", \"OR TEXT unique1 TEXT unique2 TEXT common1\"
        },\n\t{ \"OR ( TEXT unique1 TEXT common1 ) ( TEXT unique2 TEXT common1 )\",
        \"OR TEXT unique1 TEXT unique2 TEXT common1\" },\n\t{ \"OR ( TEXT common1
        TEXT unique1 ) ( TEXT unique2 TEXT common1 )\", \"OR TEXT unique1 TEXT unique2
        TEXT common1\" },\n\t{ \"OR ( TEXT unique1 TEXT common1 ) ( TEXT common1 TEXT
        unique2 )\", \"OR TEXT unique1 TEXT unique2 TEXT common1\" },\n\n\t{ \"OR
        ( TEXT unique1 TEXT common1 ) ( TEXT common1 TEXT unique2 TEXT unique3 )\",
        \"OR TEXT unique1 (TEXT unique2 TEXT unique3) TEXT common1\" },\n\t{ \"OR
        ( TEXT common1 TEXT common2 TEXT unique1 ) ( TEXT common1 TEXT common2 TEXT
        unique2 )\", \"OR TEXT unique1 TEXT unique2 TEXT common2 TEXT common1\" },\n\t{
        \"OR ( TEXT common1 TEXT common2 TEXT unique1 TEXT unique2 ) ( TEXT common1
        TEXT common2 TEXT unique3 TEXT unique4 )\", \"OR (TEXT unique1 TEXT unique2)
        (TEXT unique3 TEXT unique4) TEXT common2 TEXT common1\" },\n\n\t/* non-matching
        cases */\n\t{ \"OR ( TEXT unique1 TEXT unique2 ) TEXT unique3\", \"OR (TEXT
        unique1 TEXT unique2) TEXT unique3\" },\n\t{ \"OR ( TEXT unique1 TEXT unique2
        ) ( TEXT unique3 TEXT unique4 )\", \"OR (TEXT unique1 TEXT unique2) (TEXT
        unique3 TEXT unique4)\" },\n\t{ \"OR ( TEXT common1 TEXT unique1 ) OR ( TEXT
        common1 TEXT unique2 ) TEXT unique3\", \"OR (TEXT common1 TEXT unique1) OR
        (TEXT common1 TEXT unique2) TEXT unique3\" },\n\t{ \"OR ( TEXT common1 TEXT
        unique1 ) OR ( TEXT common1 TEXT common2 ) ( TEXT common2 TEXT unique2 )\",
        \"OR (TEXT common1 TEXT unique1) OR (TEXT common1 TEXT common2) (TEXT common2
        TEXT unique2)\" },\n\n\t/* SUB: drop redundant args */\n\t{ \"( OR TEXT common1
        TEXT unique1 ) TEXT common1\", \"TEXT common1\" },\n\t{ \"( OR TEXT unique1
        TEXT common1 ) TEXT common1\", \"TEXT common1\" },\n\t{ \"TEXT common1 ( OR
        TEXT common1 TEXT unique1 )\", \"TEXT common1\" },\n\t{ \"TEXT common1 ( OR
        TEXT unique1 TEXT common1 )\", \"TEXT common1\" },\n\t{ \"( OR TEXT common1
        TEXT common2 ) ( OR TEXT common1 OR TEXT common2 TEXT unique1 )\", \"OR TEXT
        common1 TEXT common2\" },\n\t{ \"TEXT common1 ( OR TEXT unique1 TEXT common1
        ) ( OR TEXT unique3 TEXT common1 )\", \"TEXT common1\" },\n\t{ \"OR ( TEXT
        common1 ( OR TEXT unique1 TEXT common1 ) ) TEXT unique1\", \"OR TEXT common1
        TEXT unique1\" },\n\n\t/* SUB: extract common OR */\n\t{ \"( OR TEXT common1
        TEXT unique1 ) ( OR TEXT common1 TEXT unique2 )\", \"OR (TEXT unique1 TEXT
        unique2) TEXT common1\" },\n\t{ \"( OR TEXT unique1 TEXT common1 ) ( OR TEXT
        unique2 TEXT common1 )\", \"OR (TEXT unique1 TEXT unique2) TEXT common1\"
        },\n\t{ \"( OR TEXT common1 TEXT unique1 ) ( OR TEXT unique2 TEXT common1
        )\", \"OR (TEXT unique1 TEXT unique2) TEXT common1\" },\n\t{ \"( OR TEXT unique1
        TEXT common1 ) ( OR TEXT common1 TEXT unique2 )\", \"OR (TEXT unique1 TEXT
        unique2) TEXT common1\" },\n\n\t{ \"( OR TEXT unique1 TEXT common1 ) ( OR
        TEXT common1 OR TEXT unique2 TEXT unique3 )\", \"OR (TEXT unique1 OR TEXT
        unique2 TEXT unique3) TEXT common1\" },\n\t{ \"( OR TEXT common1 OR TEXT common2
        TEXT unique1 ) ( OR TEXT common1 OR TEXT common2 TEXT unique2 )\", \"OR (TEXT
        unique1 TEXT unique2) OR TEXT common2 TEXT common1\" },\n\t{ \"( OR TEXT common1
        OR TEXT common2 OR TEXT unique1 TEXT unique2 ) ( OR TEXT common1 OR TEXT common2
        OR TEXT unique3 TEXT unique4 )\", \"OR (OR TEXT unique1 TEXT unique2 OR TEXT
        unique3 TEXT unique4) OR TEXT common2 TEXT common1\" },\n\n\t/* non-matching
        cases */\n\t{ \"( OR TEXT unique1 TEXT unique2 ) TEXT unique3\", \"OR TEXT
        unique1 TEXT unique2 TEXT unique3\" },\n\t{ \"( OR TEXT unique1 TEXT unique2
        ) ( OR TEXT unique3 TEXT unique4 )\", \"OR TEXT unique1 TEXT unique2 OR TEXT
        unique3 TEXT unique4\" },\n\t{ \"( OR TEXT common1 TEXT unique1 ) ( OR TEXT
        common1 TEXT unique2 ) TEXT unique3\", \"OR TEXT common1 TEXT unique1 OR TEXT
        common1 TEXT unique2 TEXT unique3\" },\n\t{ \"( OR TEXT common1 TEXT unique1
        ) ( OR TEXT common1 TEXT common2 ) ( OR TEXT common2 TEXT unique2 )\", \"OR
        TEXT common1 TEXT unique1 OR TEXT common1 TEXT common2 OR TEXT common2 TEXT
        unique2\" },\n\n\t/* extra for simplifications on 2nd and later terms */\n\t{
        \"( OR BODY z BODY x ) BODY x BODY y\",  \"BODY x BODY y\" },\n\t{ \"( OR
        BODY x BODY y ) ( OR BODY x BODY z )\",  \"OR (BODY y BODY z) BODY x\" },\n\t{
        \"( OR BODY z BODY x ) BODY x BODY y\",  \"BODY x BODY y\" },\n\t{ \"( OR
        BODY z NOT BODY x ) BODY x BODY y\",  \"OR BODY z NOT BODY x BODY x BODY y\"
        },\n\n\t{ \"( OR BODY z BODY y ) BODY x BODY y\",  \"BODY x BODY y\" },\n\t{
        \"( OR BODY z BODY y ) ( OR BODY z BODY w ) BODY x BODY y BODY w\",  \"BODY
        x BODY y BODY w\" },\n\n\t{ \"subject y\", \"SUBJECT y\"},\n}"
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/dovecot/src/lib-storage/test-mail-search-args-simplify.c
    typedefs: []
    union: []
- function_names:
  - human_search_or
  - arg_new_human_date
  - CALLBACK_DATE
  - human_search_savedatesupported
  - arg_new_human_size
  - human_search_larger
  - human_search_smaller
  - human_search_guid
  - human_search_mailbox
  - human_search_mailbox_guid
  - human_search_oldestonly
  - mail_search_register_init_human
  - mail_search_register_get_human
  source_file: /src/dovecot/src/lib-storage/mail-search-register-human.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_search_mime_build_new
  - mail_search_mime_build_str
  - mail_search_mime_build_key_int
  - mail_search_mime_build_key
  - mail_search_mime_build_list
  - mail_search_mime_build
  - mail_search_mime_build_add
  source_file: /src/dovecot/src/lib-storage/mail-search-mime-build.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - imap_search_parse_key
  - imap_search_parse_string
  - imap_search_parse_skip_next
  - mail_search_parser_init_imap
  source_file: /src/dovecot/src/lib-storage/mail-search-parser-imap.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*prev'
        type: struct imap_arg_stack
      - name: '*args'
        type: struct imap_arg
      item_type: struct
      name: imap_arg_stack
      pos:
        line_end: 10
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/mail-search-parser-imap.c
    - fields:
      - name: parser
        type: struct mail_search_parser
      - name: root
        type: struct imap_arg_stack
      item_type: struct
      name: imap_mail_search_parser
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/dovecot/src/lib-storage/mail-search-parser-imap.c
    typedefs: []
    union: []
- function_names:
  - mailbox_header_lookup_init_real
  - mailbox_header_lookup_init
  - mailbox_header_lookup_ref
  - mailbox_header_lookup_unref
  - mailbox_header_lookup_merge
  source_file: /src/dovecot/src/lib-storage/mailbox-header.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-list-iter.h
  types:
    enum:
    - enumerators:
      - name: MAILBOX_LIST_ITER_RAW_LIST
        value: '0x000001'
      - name: MAILBOX_LIST_ITER_SELECT_SUBSCRIBED
        value: '0x000100'
      - name: MAILBOX_LIST_ITER_STAR_WITHIN_NS
        value: '0x000010'
      - name: MAILBOX_LIST_ITER_NO_AUTO_BOXES
        value: '0x000004'
      - name: MAILBOX_LIST_ITER_SKIP_ALIASES
        value: '0x000008'
      - name: MAILBOX_LIST_ITER_SELECT_RECURSIVEMATCH
        value: '0x000200'
      - name: MAILBOX_LIST_ITER_SELECT_SPECIALUSE
        value: '0x000400'
      - name: MAILBOX_LIST_ITER_RETURN_NO_FLAGS
        value: '0x001000'
      - name: MAILBOX_LIST_ITER_RETURN_SUBSCRIBED
        value: '0x002000'
      - name: MAILBOX_LIST_ITER_RETURN_CHILDREN
        value: '0x004000'
      - name: MAILBOX_LIST_ITER_FORCE_RESYNC
        value: '0x010000'
      - name: MAILBOX_LIST_ITER_NO_RENAMING
        value: '0x020000'
      - name: MAILBOX_LIST_ITER_RETURN_SPECIALUSE
        value: '0x008000'
      item_type: enum
      name: mailbox_list_iter_flags
      pos:
        line_end: 44
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/mailbox-list-iter.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*vname'
        type: char
      - name: '*special_use'
        type: char
      - name: flags
        type: enum mailbox_info_flags
      - name: '*ns'
        type: struct mail_namespace
      item_type: struct
      name: mailbox_info
      pos:
        line_end: 52
        line_start: 46
        source_file: /src/dovecot/src/lib-storage/mailbox-list-iter.h
    typedefs: []
    union: []
- function_names:
  - mailbox_attribute_specialuse_get
  - mailbox_attribute_comment_get
  - server_attribute_comment_get
  - server_attribute_admin_get
  - mailbox_attributes_internal_init
  source_file: /src/dovecot/src/lib-storage/mailbox-attribute-internal.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-autoexpunge.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mailbox-guid-cache.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-search-mime-register.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: "*\n\t\t(*build)(struct mail_search_mime_build_context *ctx)"
        type: struct mail_search_mime_arg
      item_type: struct
      name: mail_search_mime_register_arg
      pos:
        line_end: 12
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/mail-search-mime-register.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-search-register.h
  types:
    enum:
    - enumerators:
      - name: MAIL_SEARCH_REGISTER_IMAP4REV1
        value: BIT(1)
      item_type: enum
      name: mail_search_register_arg_flags
      pos:
        line_end: 8
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/mail-search-register.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: "*\n\t\t(*build)(struct mail_search_build_context *ctx)"
        type: struct mail_search_arg
      - name: flags
        type: enum mail_search_register_arg_flags
      item_type: struct
      name: mail_search_register_arg
      pos:
        line_end: 17
        line_start: 10
        source_file: /src/dovecot/src/lib-storage/mail-search-register.h
    typedefs:
    - item_type: typedef
      name: "*\nmail_search_register_fallback_t(struct mail_search_build_context *ctx,\n\t\t\t\tconst
        char *key)"
      pos:
        line_end: 21
        line_start: 19
        source_file: /src/dovecot/src/lib-storage/mail-search-register.h
      type: mail_search_arg
    union: []
- function_names:
  - fail_mailbox_is_readonly
  - fail_mailbox_enable
  - fail_mailbox_exists
  - fail_mailbox_open
  - fail_mailbox_close
  - fail_mailbox_free
  - fail_mailbox_create
  - fail_mailbox_update
  - fail_mailbox_delete
  - fail_mailbox_rename
  - fail_mailbox_get_status
  - fail_mailbox_get_metadata
  - fail_mailbox_set_subscribed
  - fail_mailbox_sync_init
  - fail_mailbox_sync_next
  - fail_mailbox_sync_deinit
  - fail_mailbox_notify_changes
  - fail_mailbox_transaction_begin
  - fail_mailbox_transaction_rollback
  - fail_mailbox_transaction_commit
  - fail_mailbox_search_init
  - fail_mailbox_search_deinit
  - fail_mailbox_search_next_nonblock
  - fail_mailbox_search_next_update_seq
  - fail_mailbox_search_next_match_mail
  - fail_mailbox_save_alloc
  - fail_mailbox_save_begin
  - fail_mailbox_save_continue
  - fail_mailbox_save_finish
  - fail_mailbox_save_cancel
  - fail_mailbox_copy
  - fail_mailbox_is_inconsistent
  - fail_mailbox_alloc
  source_file: /src/dovecot/src/lib-storage/fail-mailbox.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_UID_VALIDITY
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/fail-mailbox.c
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_error_from_errno
  - mail_error_eacces_msg
  - mail_error_create_eacces_msg
  source_file: /src/dovecot/src/lib-storage/mail-error.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/mail-storage-hooks.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: (*mail_user_created)(struct mail_user *user)
        type: void
      - name: (*mail_namespace_storage_added)(struct mail_namespace *ns)
        type: void
      - name: (*mail_namespaces_created)(struct mail_namespace *namespaces)
        type: void
      - name: (*mail_namespaces_added)(struct mail_namespace *namespaces)
        type: void
      - name: (*mail_storage_created)(struct mail_storage *storage)
        type: void
      - name: (*mailbox_list_created)(struct mailbox_list *list)
        type: void
      - name: (*mailbox_allocated)(struct mailbox *box)
        type: void
      - name: (*mailbox_opened)(struct mailbox *box)
        type: void
      - name: (*mail_allocated)(struct mail *mail)
        type: void
      item_type: struct
      name: mail_storage_hooks
      pos:
        line_end: 26
        line_start: 11
        source_file: /src/dovecot/src/lib-storage/mail-storage-hooks.h
    typedefs: []
    union: []
- function_names:
  - mail_namespace_add_storage
  - mail_namespace_finish_list_init
  - mail_namespace_free
  - mail_namespace_alloc
  - mail_namespaces_init_add
  - namespace_is_valid_alias_storage
  - namespace_set_alias_for
  - get_listindex_path
  - namespace_has_duplicate_listindex
  - namespaces_check
  - mail_namespaces_init_finish
  - mail_namespaces_init
  - mail_namespaces_init_location_full
  - mail_namespaces_init_default_location
  - mail_namespaces_init_location
  - mail_namespaces_init_empty
  - mail_namespaces_deinit
  - mail_namespaces_set_storage_callbacks
  - mail_namespace_ref
  - mail_namespace_unref
  - mail_namespace_destroy
  - mail_namespace_get_event
  - mail_namespace_get_default_storage
  - mail_namespace_get_sep
  - mail_namespaces_get_root_sep
  - mail_namespace_is_usable_prefix
  - mail_namespace_find_mask
  - mail_namespace_find_shared
  - mail_namespace_find
  - mail_namespace_find_unalias
  - mail_namespace_find_visible
  - mail_namespace_find_subscribable
  - mail_namespace_find_unsubscribable
  - mail_namespace_find_inbox
  - mail_namespace_find_prefix
  - mail_namespace_find_prefix_nosep
  - mail_namespace_find_name
  - mail_namespace_is_shared_user_root
  source_file: /src/dovecot/src/lib-storage/mail-namespace.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mailbox_uidvalidity_next_fallback
  - mailbox_uidvalidity_write
  - mailbox_uidvalidity_rename
  - mailbox_uidvalidity_next_rescan
  - mailbox_uidvalidity_next
  source_file: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RETRY_COUNT
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-storage/mailbox-uidvalidity.c
      type_or_value: '10'
    structs: []
    typedefs: []
    union: []
- function_names:
  - mail_user_find_attribute_namespace
  - index_storage_get_user_dict
  - index_storage_get_dict
  - key_get_prefixed
  - index_storage_attribute_get_dict_trans
  - index_storage_attribute_set
  - index_storage_attribute_get
  - index_storage_attribute_iter_init
  - index_storage_attribute_iter_next
  - index_storage_attribute_iter_deinit
  source_file: /src/dovecot/src/lib-storage/index/index-attribute.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: iter
        type: struct mailbox_attribute_iter
      - name: '*diter'
        type: struct dict_iterate_context
      - name: '*prefix'
        type: char
      - name: prefix_len
        type: size_t
      - name: dict_disabled
        type: bool
      item_type: struct
      name: index_storage_attribute_iter
      pos:
        line_end: 14
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/index/index-attribute.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-sort.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-rebuild.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: '*view'
        type: struct mail_index_view
      - name: '*trans'
        type: struct mail_index_transaction
      - name: cache_ext_id
        type: uint32_t
      - name: cache_reset_id
        type: uint32_t
      - name: '*backup_index'
        type: struct mail_index
      - name: '*backup_view'
        type: struct mail_index_view
      - name: cache_used
        type: bool
      item_type: struct
      name: index_rebuild_context
      pos:
        line_end: 17
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/index/index-rebuild.h
    typedefs:
    - item_type: typedef
      name: index_rebuild_generate_uidvalidity_t(struct mailbox_list *list)
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-storage/index/index-rebuild.h
      type: unsigned int
    union: []
- function_names:
  - i_stream_mail_try_get_cached_size
  - i_stream_mail_get_cached_mail_id
  - i_stream_mail_set_size_corrupted
  - i_stream_mail_read
  - i_stream_create_mail
  source_file: /src/dovecot/src/lib-storage/index/istream-mail.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: istream
        type: struct istream_private
      - name: '*mail'
        type: struct mail
      - name: expected_size
        type: uoff_t
      - name: files_read_increased
        type: bool
      - name: input_has_body
        type: bool
      item_type: struct
      name: mail_istream
      pos:
        line_end: 15
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/index/istream-mail.c
    typedefs: []
    union: []
- function_names:
  - header_line_cmp
  - index_mail_parse_header_deinit
  - index_mail_parse_header_finish
  - get_header_field_idx
  - index_mail_want_parse_headers
  - index_mail_parse_header_register_all_wanted
  - index_mail_parse_header_init
  - index_mail_parse_finish_imap_envelope
  - index_mail_parse_header
  - index_mail_parse_part_header_cb
  - index_mail_parse_header_cb
  - index_mail_cache_parse_init
  - index_mail_init_parser
  - index_mail_parse_headers_internal
  - index_mail_parse_headers
  - imap_envelope_parse_callback
  - index_mail_headers_get_envelope
  - get_header_size
  - index_mail_header_is_parsed
  - skip_header
  - index_mail_get_parsed_header
  - index_mail_get_raw_headers
  - unfold_header
  - str_replace_nuls
  - index_mail_headers_decode
  - index_mail_get_headers
  - index_mail_get_first_header
  - header_cache_callback
  - index_mail_filter_stream_destroy
  - index_mail_get_header_stream
  source_file: /src/dovecot/src/lib-storage/index/index-mail-headers.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - index_mail_global_cache_fields_dup
  - index_mail_cache_lookup_field
  - index_mail_try_set_attachment_keywords
  - index_mail_want_attachment_keywords_on_fetch
  - get_serialized_parts
  - get_unserialized_parts
  - get_cached_parts
  - index_mail_set_message_parts_corrupted
  - index_mail_get_fixed_field
  - index_mail_get_cached_uoff_t
  - index_mail_get_pvt
  - index_mail_get_flags
  - index_mail_get_modseq
  - index_mail_get_pvt_modseq
  - index_mail_get_keywords
  - index_mail_get_keyword_indexes
  - index_mail_get_parts
  - index_mail_get_received_date
  - index_mail_get_save_date
  - index_mail_cache_sent_date
  - index_mail_get_date
  - get_cached_msgpart_sizes
  - index_mail_get_vsize_extension
  - index_mail_try_set_body_size
  - index_mail_get_cached_virtual_size
  - index_mail_get_cached_body_size
  - index_mail_get_virtual_size
  - index_mail_get_physical_size
  - index_mail_cache_add
  - index_mail_cache_add_idx
  - index_mail_cache_pop3_data
  - parse_bodystructure_part_header
  - want_plain_bodystructure_cached
  - index_mail_body_parsed_cache_flags
  - index_mail_body_parsed_cache_message_parts
  - index_mail_write_bodystructure
  - index_mail_body_parsed_cache_bodystructure
  - index_mail_want_cache
  - index_mail_save_finish_make_snippet
  - index_mail_cache_sizes
  - index_mail_cache_dates
  - index_mail_find_first_text_mime_part
  - index_mail_write_body_snippet
  - index_mail_parts_reset
  - index_mail_parse_body_finish
  - index_mail_stream_log_failure
  - index_mail_stream_check_failure
  - index_mail_refresh_expunged
  - index_mail_stream_log_failure_for
  - index_mail_parse_body
  - index_mail_stream_destroy_callback
  - index_mail_set_read_buffer_size
  - index_mail_init_stream
  - index_mail_want_write_snippet
  - index_mail_parse_bodystructure_full
  - index_mail_parse_bodystructure
  - index_mail_get_plain_bodystructure
  - index_mail_fetch_body_snippet
  - index_mail_get_cached_body
  - index_mail_get_cached_bodystructure
  - index_mail_get_special
  - index_mail_get_backend_mail
  - index_mail_alloc
  - index_mail_init
  - index_mail_close_streams_full
  - index_mail_close_streams
  - index_mail_init_data
  - index_mail_reset_data
  - index_mail_close
  - check_envelope
  - index_mail_update_access_parts_pre
  - index_mail_update_access_parts_post
  - index_mail_set_seq
  - index_mail_prefetch
  - index_mail_set_uid
  - index_mail_add_temp_wanted_fields
  - index_mail_set_uid_cache_updates
  - index_mail_free
  - index_mail_cache_parse_continue
  - index_mail_cache_parse_deinit
  - index_mail_update_pvt_flags
  - index_mail_update_flags
  - index_mail_update_keywords
  - index_mail_update_modseq
  - index_mail_update_pvt_modseq
  - index_mail_expunge
  - index_mail_parse
  - index_mail_precache
  - index_mail_reset_vsize_ext
  - index_mail_set_cache_corrupted
  - index_mail_opened
  - index_mail_save_finish
  - index_mail_cache_reason
  source_file: /src/dovecot/src/lib-storage/index/index-mail.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BODY_SNIPPET_ALGO_V1
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dovecot/src/lib-storage/index/index-mail.c
      type_or_value: '"1"'
    - item_type: preproc_def
      name: BODY_SNIPPET_MAX_CHARS
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dovecot/src/lib-storage/index/index-mail.c
      type_or_value: '200'
    structs: []
    typedefs: []
    union: []
- function_names:
  - search_result_range_remove
  - search_result_update_search
  - index_search_result_update_flags
  - index_search_result_update_appends
  - index_search_results_update_expunges
  - array_foreach
  source_file: /src/dovecot/src/lib-storage/index/index-search-result.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - thread_msg_add
  - thread_node_has_ancestor
  - thread_link_reference
  - thread_link_references
  - mail_thread_add
  - mail_thread_unref_link
  - mail_thread_remove
  source_file: /src/dovecot/src/lib-storage/index/index-thread-links.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-sync-changes.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - index_storage_get_status
  - index_storage_count_pvt_unseen
  - index_storage_find_first_pvt_unseen_seq
  - index_storage_get_open_status
  - get_metadata_cache_fields
  - get_metadata_precache_fields
  - index_mailbox_get_first_save_date
  - index_mailbox_get_metadata
  source_file: /src/dovecot/src/lib-storage/index/index-status.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - search_none
  - search_set_failed
  - search_cur_mail_failed
  - search_init_arg
  - search_seqset_arg
  - search_arg_match_keywords
  - index_search_get_pvt
  - search_arg_match_index
  - search_index_arg
  - search_arg_match_mailbox
  - search_mailbox_arg
  - search_arg_match_cached
  - search_cached_arg
  - search_sent
  - msg_search_arg_context
  - compress_lwsp
  - search_context_temp_pool
  - search_header_arg
  - search_header_unmatch
  - search_header
  - search_body
  - search_arg_match_text
  - search_msgset_fix_limits
  - search_msgset_fix
  - search_or_parse_msgset_args
  - search_parse_msgset_args
  - search_limit_lowwater
  - search_limit_by_hdr
  - search_get_seqset
  - search_build_subthread
  - search_build_inthread_result
  - search_build_inthreads
  - wanted_sort_fields_get
  - index_storage_search_init
  - search_arg_deinit
  - index_storage_search_deinit
  - search_get_cost
  - search_match_once
  - search_arg_is_static
  - search_set_static_matches
  - search_has_static_nonmatches
  - search_match_finish
  - search_match_next
  - search_would_block
  - index_storage_search_next_match_mail
  - search_more_with_mail
  - index_search_get_mail
  - search_more_with_prefetching
  - search_finish_prefetch
  - search_more
  - index_storage_search_is_interrupted
  - index_storage_search_next_nonblock
  - index_storage_search_next_update_seq
  source_file: /src/dovecot/src/lib-storage/index/index-search.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SEARCH_COST_DENTRY
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: 3ULL
    - item_type: preproc_def
      name: SEARCH_COST_ATTR
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: 1ULL
    - item_type: preproc_def
      name: SEARCH_COST_FILES_READ
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: 25ULL
    - item_type: preproc_def
      name: SEARCH_COST_KBYTE
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: 15ULL
    - item_type: preproc_def
      name: SEARCH_COST_CACHE
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: 1ULL
    - item_type: preproc_def
      name: SEARCH_MIN_NONBLOCK_USECS
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: '200000'
    - item_type: preproc_def
      name: SEARCH_MAX_NONBLOCK_USECS
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: '250000'
    - item_type: preproc_def
      name: SEARCH_INITIAL_MAX_COST
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: '30000'
    - item_type: preproc_def
      name: SEARCH_RECALC_MIN_USECS
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: '50000'
    - item_type: preproc_def
      name: SEARCH_INTERRUPT_DELAY_MSECS
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
      type_or_value: '2000'
    structs:
    - fields:
      - name: '*index_ctx'
        type: struct index_search_context
      - name: '*imail'
        type: struct index_mail
      - name: '*args'
        type: struct mail_search_arg
      - name: decoded_block
        type: struct message_block
      - name: decoded_block_set
        type: bool
      - name: '*hdr'
        type: struct message_header_line
      - name: parse_headers
        type: bool
      - name: custom_header
        type: bool
      - name: threading
        type: bool
      item_type: struct
      name: search_header_context
      pos:
        line_end: 55
        line_start: 42
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
    - fields:
      - name: '*index_ctx'
        type: struct index_search_context
      - name: '*input'
        type: struct istream
      - name: '*part'
        type: struct message_part
      item_type: struct
      name: search_body_context
      pos:
        line_end: 61
        line_start: 57
        source_file: /src/dovecot/src/lib-storage/index/index-search.c
    typedefs: []
    union: []
- function_names:
  - vsize_header_refresh
  - index_mailbox_vsize_check_rebuild
  - index_mailbox_vsize_update_init
  - vsize_update_lock_full
  - index_mailbox_vsize_update_try_lock
  - index_mailbox_vsize_update_wait_lock
  - index_mailbox_vsize_want_updates
  - index_mailbox_vsize_update_write_to_index
  - index_mailbox_vsize_update_write
  - index_mailbox_vsize_notify_indexer
  - index_mailbox_vsize_update_deinit
  - index_mailbox_vsize_hdr_expunge
  - index_mailbox_vsize_finish_bg
  - index_mailbox_vsize_hdr_add_missing
  - index_mailbox_get_virtual_size
  - index_mailbox_get_physical_size
  - index_mailbox_vsize_update_appends
  source_file: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VSIZE_LOCK_SUFFIX
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
      type_or_value: '"dovecot-vsize.lock"'
    - item_type: preproc_def
      name: VSIZE_UPDATE_MAX_LOCK_SECS
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
      type_or_value: '10'
    - item_type: preproc_def
      name: INDEXER_SOCKET_NAME
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
      type_or_value: '"indexer"'
    - item_type: preproc_def
      name: INDEXER_HANDSHAKE
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
      type_or_value: '"VERSION\tindexer-client\t1\t0\n"'
    structs:
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: '*view'
        type: struct mail_index_view
      - name: vsize_hdr
        type: struct mailbox_index_vsize
      - name: '*lock'
        type: struct file_lock
      - name: lock_failed
        type: bool
      - name: skip_write
        type: bool
      - name: rebuild
        type: bool
      - name: written
        type: bool
      - name: finish_in_background
        type: bool
      item_type: struct
      name: mailbox_vsize_update
      pos:
        line_end: 52
        line_start: 41
        source_file: /src/dovecot/src/lib-storage/index/index-mailbox-size.c
    typedefs: []
    union: []
- function_names:
  - sync_pvt_expunges
  - sync_pvt_copy_self_flags
  - sync_pvt_copy_shared_flags
  - index_mailbox_sync_view_refresh
  - index_mailbox_sync_open
  - index_mailbox_sync_pvt_init
  - index_mailbox_sync_pvt_index
  - mail_save_private_changes_mailnum_cmp
  - index_mailbox_sync_pvt_newmails
  - index_mailbox_sync_pvt_view
  - index_mailbox_sync_pvt_deinit
  source_file: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: '*sync_ctx'
        type: struct mail_index_sync_ctx
      - name: '*view_pvt'
        type: struct mail_index_view
      - name: '*trans_pvt'
        type: struct mail_index_transaction
      - name: '*view_shared'
        type: struct mail_index_view
      - name: flags
        type: enum mail_index_view_sync_flags
      item_type: struct
      name: index_mailbox_sync_pvt_context
      pos:
        line_end: 15
        line_start: 6
        source_file: /src/dovecot/src/lib-storage/index/index-sync-pvt.c
    typedefs: []
    union: []
- function_names:
  - MAIL_THREAD_CONTEXT
  - MAIL_THREAD_CONTEXT_REQUIRE
  - mail_strmap_rec_get_msgid
  - mail_thread_hash_key_cmp
  - mail_thread_hash_rec_cmp
  - mail_thread_strmap_remap
  - thread_get_mail_header
  - mail_thread_map_add_mail
  - mail_thread_index_map_build
  - msgid_map_cmp
  - mail_thread_cache_update_removes
  - mail_thread_cache_update_adds
  - mail_thread_cache_fix_invalid_indexes
  - mail_thread_cache_sync_remove
  - mail_thread_cache_sync_add
  - mail_thread_init
  - mail_thread_clear
  - mail_thread_deinit
  - mail_thread_iterate_init
  - mail_thread_mailbox_close
  - mail_thread_mailbox_free
  - index_thread_mailbox_opened
  source_file: /src/dovecot/src/lib-storage/index/index-thread.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*box'
        type: struct mailbox
      - name: '*t'
        type: struct mailbox_transaction_context
      - name: '*strmap_sync'
        type: struct mail_index_strmap_view_sync
      - name: '*tmp_mail'
        type: struct mail
      - name: '*search_args'
        type: struct mail_search_args
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: failed
        type: bool
      - name: corrupted
        type: bool
      item_type: struct
      name: mail_thread_context
      pos:
        line_end: 32
        line_start: 21
        source_file: /src/dovecot/src/lib-storage/index/index-thread.c
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: next_msgid_idx
        type: unsigned int
      - name: '*cache'
        type: struct mail_thread_cache
      - name: '*strmap'
        type: struct mail_index_strmap
      - name: '*strmap_view'
        type: struct mail_index_strmap_view
      - name: '*msgid_map'
        type: ARRAY_TYPE
      - name: '*msgid_hash'
        type: struct hash2_table
      - name: '*ctx'
        type: struct mail_thread_context
      item_type: struct
      name: mail_thread_mailbox
      pos:
        line_end: 48
        line_start: 34
        source_file: /src/dovecot/src/lib-storage/index/index-thread.c
    typedefs: []
    union: []
- function_names:
  - index_transaction_free
  - index_transaction_index_commit
  - index_transaction_index_rollback
  - index_transaction_flags_get
  - index_transaction_init_pvt
  - index_transaction_init
  - index_transaction_begin
  - index_transaction_commit
  - index_transaction_rollback
  source_file: /src/dovecot/src/lib-storage/index/index-transaction.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-pop3-uidl.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - search_arg_mime_parent_match
  - search_arg_mime_child_match
  - search_arg_mime_substring_match
  - search_arg_mime_envelope_time_match
  - search_arg_mime_envelope_address_match
  - search_arg_mime_filename_match
  - search_arg_mime_filename_deinit
  - search_arg_mime_param_match
  - search_arg_mime_language_match
  - search_mime_arg_match
  - search_mime_arg
  - search_arg_mime_parts_match
  - search_arg_match_mimepart
  - search_mimepart_arg
  - index_search_mime_arg_match
  - search_mime_arg_deinit
  - index_search_mime_arg_deinit
  source_file: /src/dovecot/src/lib-storage/index/index-search-mime.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: index
        type: unsigned int
      item_type: struct
      name: search_mimepart_stack
      pos:
        line_end: 14
        line_start: 12
        source_file: /src/dovecot/src/lib-storage/index/index-search-mime.c
    - fields:
      - name: pool
        type: pool_t
      - name: '*index_ctx'
        type: struct index_search_context
      - name: '*mime_parts'
        type: struct message_part
      - name: '*buf'
        type: string_t
      - name: depth
        type: unsigned int
      item_type: struct
      name: search_mimepart_context
      pos:
        line_end: 27
        line_start: 16
        source_file: /src/dovecot/src/lib-storage/index/index-search-mime.c
    typedefs: []
    union: []
- function_names:
  - INDEX_STORAGE_CONTEXT
  source_file: /src/dovecot/src/lib-storage/index/index-storage.h
  types:
    enum:
    - enumerators:
      - name: MAILBOX_LOCK_NOTIFY_NONE
      - name: MAILBOX_LOCK_NOTIFY_MAILBOX_OVERRIDE
      - name: MAILBOX_LOCK_NOTIFY_MAILBOX_ABORT
      item_type: enum
      name: mailbox_lock_notify_type
      pos:
        line_end: 17
        line_start: 10
        source_file: /src/dovecot/src/lib-storage/index/index-storage.h
    - enumerators:
      - name: INDEX_STORAGE_LIST_CHANGE_ERROR
        value: '-1'
      - name: INDEX_STORAGE_LIST_CHANGE_NORECORD
      - name: INDEX_STORAGE_LIST_CHANGE_INMEMORY
      - name: INDEX_STORAGE_LIST_CHANGE_NOT_IN_FS
      - name: INDEX_STORAGE_LIST_CHANGE_NONE
        value: '0'
      - name: INDEX_STORAGE_LIST_CHANGE_SIZE_CHANGED
      - name: INDEX_STORAGE_LIST_CHANGE_MTIME_CHANGED
      item_type: enum
      name: index_storage_list_change
      pos:
        line_end: 27
        line_start: 19
        source_file: /src/dovecot/src/lib-storage/index/index-storage.h
    preproc_defs:
    - item_type: preproc_def
      name: MAILBOX_FULL_SYNC_INTERVAL
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/dovecot/src/lib-storage/index/index-storage.h
      type_or_value: '5'
    structs:
    - fields:
      - name: module_ctx
        type: union mailbox_module_context
      - name: index_flags
        type: enum mail_index_open_flags
      - name: next_lock_notify
        type: time_t
      - name: last_notify_type
        type: enum mailbox_lock_notify_type
      - name: '*keyword_names'
        type: ARRAY_TYPE
      - name: '*cache_fields'
        type: struct mail_cache_field
      - name: '*vsize_update'
        type: struct mailbox_vsize_update
      - name: recent_flags_prev_first_recent_uid
        type: uint32_t
      - name: recent_flags_last_check_nextuid
        type: uint32_t
      - name: sync_last_check
        type: time_t
      - name: list_index_sync_ext_id
        type: uint32_t
      item_type: struct
      name: index_mailbox_context
      pos:
        line_end: 46
        line_start: 29
        source_file: /src/dovecot/src/lib-storage/index/index-storage.h
    typedefs: []
    union: []
- function_names:
  - search_result_want_flag_updates
  - index_sync_uidify_array
  - array_foreach
  - index_sync_uidify
  - index_sync_search_results_uidify
  - search_result_update
  - index_sync_search_results_update
  - index_sync_search_results_expunge
  source_file: /src/dovecot/src/lib-storage/index/index-sync-search.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - IS_CONVERTED_CTE
  - binary_copy_to
  - binary_cte_filter_callback
  - add_binary_part
  - fd_callback
  - binary_streams_free
  - binary_parts_update
  - binary_parts_cache
  - blocks_get_streams
  - blocks_count_lines
  - index_mail_read_binary_to_cache
  - get_cached_binary_parts
  - msg_part_find
  - index_mail_get_binary_properties
  - index_mail_get_binary_stream
  source_file: /src/dovecot/src/lib-storage/index/index-mail-binary.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_BINARY_CACHE_EXPIRE_MSECS
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-storage/index/index-mail-binary.c
      type_or_value: (60*1000)
    structs:
    - fields:
      - name: '*input'
        type: struct istream
      - name: physical_pos
        type: uoff_t
      - name: body_lines_count
        type: unsigned int
      - name: converted
        type: bool
      item_type: struct
      name: binary_block
      pos:
        line_end: 29
        line_start: 24
        source_file: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    - fields:
      - name: '*mail'
        type: struct mail
      - name: '*input'
        type: struct istream
      - name: has_nuls
        type: bool
      - name: copy_start_offset
        type: uoff_t
      item_type: struct
      name: binary_ctx
      pos:
        line_end: 41
        line_start: 31
        source_file: /src/dovecot/src/lib-storage/index/index-mail-binary.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-search-result.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - HEADER_MATCH_USABLE
  - INDEX_MAIL
  - index_mail_cache_add_if_wanted
  source_file: /src/dovecot/src/lib-storage/index/index-mail.h
  types:
    enum:
    - enumerators:
      - name: MAIL_CACHE_FLAGS
        value: '0'
      - name: MAIL_CACHE_SENT_DATE
      - name: MAIL_CACHE_RECEIVED_DATE
      - name: MAIL_CACHE_VIRTUAL_FULL_SIZE
      - name: MAIL_CACHE_SAVE_DATE
      - name: MAIL_CACHE_PHYSICAL_FULL_SIZE
      - name: MAIL_CACHE_IMAP_BODY
      - name: MAIL_CACHE_IMAP_BODYSTRUCTURE
      - name: MAIL_CACHE_IMAP_ENVELOPE
      - name: MAIL_CACHE_POP3_UIDL
      - name: MAIL_CACHE_BINARY_PARTS
      - name: MAIL_INDEX_CACHE_FIELD_COUNT
      - name: MAIL_CACHE_POP3_ORDER
      - name: MAIL_CACHE_BODY_SNIPPET
      - name: MAIL_CACHE_GUID
      - name: MAIL_CACHE_MESSAGE_PARTS
      item_type: enum
      name: index_cache_field
      pos:
        line_end: 28
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
    - enumerators:
      - name: MAIL_CACHE_FLAG_BINARY_HEADER
        value: '0x0001'
      - name: MAIL_CACHE_FLAG_HAS_NO_NULS
        value: '0x0020'
      - name: MAIL_CACHE_FLAG_HAS_NULS
        value: '0x0004'
      - name: MAIL_CACHE_FLAG_BINARY_BODY
        value: '0x0002'
      - name: MAIL_CACHE_FLAG_HAS_NO_NULS_BROKEN
        value: '0x0008'
      - name: MAIL_CACHE_FLAG_TEXT_PLAIN_7BIT_ASCII
        value: '0x0010'
      item_type: enum
      name: mail_cache_record_flag
      pos:
        line_end: 51
        line_start: 33
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
    - enumerators:
      - name: READ_HDR
        value: '0x01'
      - name: PARSE_BODY
        value: '0x08'
      - name: PARSE_HDR
        value: '0x04'
      - name: READ_BODY
        value: '0x02'
      item_type: enum
      name: index_mail_access_part
      pos:
        line_end: 58
        line_start: 53
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
    preproc_defs:
    - item_type: preproc_def
      name: IMAP_BODY_PLAIN_7BIT_ASCII
      pos:
        line_end: 32
        line_start: 30
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
      type_or_value: '"\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\""'
    - item_type: preproc_def
      name: HEADER_MATCH_FLAG_FOUND
      pos:
        line_end: 150
        line_start: 149
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
      type_or_value: '1'
    - item_type: preproc_def
      name: HEADER_MATCH_SKIP_COUNT
      pos:
        line_end: 151
        line_start: 150
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
      type_or_value: '2'
    structs:
    - fields:
      - name: time
        type: uint32_t
      - name: timezone
        type: int32_t
      item_type: struct
      name: mail_sent_date
      pos:
        line_end: 63
        line_start: 60
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
    - fields:
      - name: field_idx
        type: unsigned int
      - name: start_pos
        type: uint32_t
      - name: line_num
        type: uint32_t
      item_type: struct
      name: index_mail_line
      pos:
        line_end: 69
        line_start: 65
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
    - fields:
      - name: date
        type: time_t
      - name: virtual_size
        type: uoff_t
      - name: sent_date
        type: struct mail_sent_date
      - name: parse_line
        type: struct index_mail_line
      - name: parse_line_num
        type: uint32_t
      - name: '*parts'
        type: struct message_part
      - name: '*bin_parts'
        type: struct message_binary_part
      - name: '*envelope'
        type: char
      - name: '*from_envelope'
        type: char
      - name: '*envelope_data'
        type: struct message_part_envelope
      - name: cache_flags
        type: uint32_t
      - name: modseq
        type: uint64_t
      - name: access_part
        type: enum index_mail_access_part
      - name: '*access_reason_code'
        type: char
      - name: cache_fetch_fields
        type: enum mail_fetch_field
      - name: dont_cache_field_idx
        type: unsigned int
      - name: wanted_fields
        type: enum mail_fetch_field
      - name: '*wanted_headers'
        type: struct mailbox_header_lookup_ctx
      - name: '*search_results'
        type: buffer_t
      - name: '*stream'
        type: struct istream
      - name: '*tee_stream'
        type: struct tee_istream
      - name: hdr_size
        type: struct message_size
      - name: '*parser_input'
        type: struct istream
      - name: '*parser_ctx'
        type: struct message_parser_ctx
      - name: parsing_count
        type: int
      - name: (keywords)
        type: ARRAY_TYPE
      - name: (keyword_indexes)
        type: ARRAY_TYPE
      - name: initialized
        type: bool
      - name: save_sent_date
        type: bool
      - name: sent_date_parsed
        type: bool
      - name: save_envelope
        type: bool
      - name: save_bodystructure_header
        type: bool
      - name: save_bodystructure_body
        type: bool
      - name: save_message_parts
        type: bool
      - name: save_body_snippet
        type: bool
      - name: stream_has_only_header
        type: bool
      - name: parsed_bodystructure
        type: bool
      - name: parsed_bodystructure_header
        type: bool
      - name: hdr_size_set
        type: bool
      - name: body_size_set
        type: bool
      - name: messageparts_saved_to_cache
        type: bool
      - name: header_parsed
        type: bool
      - name: no_caching
        type: bool
      - name: forced_no_caching
        type: bool
      - name: istream_error_logged
        type: bool
      - name: destroying_stream
        type: bool
      - name: initialized_wrapper_stream
        type: bool
      - name: destroy_callback_set
        type: bool
      - name: prefetch_sent
        type: bool
      - name: header_parser_initialized
        type: bool
      - name: attachment_flags_updating
        type: bool
      - name: istream_broken
        type: bool
      - name: inexact_total_sizes
        type: bool
      item_type: struct
      name: index_mail_data
      pos:
        line_end: 136
        line_start: 73
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
    - fields:
      - name: mail
        type: struct mail_private
      - name: data
        type: struct index_mail_data
      - name: '*ibox'
        type: struct index_mailbox_context
      - name: pop3_state
        type: int
      - name: header_seq
        type: uint32_t
      - name: '*header_data'
        type: string_t
      - name: header_match
        type: ARRAY
      - name: header_match_value
        type: uint8_t
      - name: pop3_state_set
        type: bool
      - name: freeing
        type: bool
      item_type: struct
      name: index_mail
      pos:
        line_end: 160
        line_start: 138
        source_file: /src/dovecot/src/lib-storage/index/index-mail.h
    typedefs: []
    union: []
- function_names:
  - index_attachment_want
  - index_attachment_open_temp_fd
  - index_attachment_open_ostream
  - index_attachment_close_ostream
  - index_attachment_save_begin
  - save_check_write_error
  - index_attachment_save_continue
  - index_attachment_save_finish
  - index_attachment_save_free
  - index_attachment_save_get_extrefs
  - index_attachment_delete_real
  - index_attachment_delete
  - index_attachment_append_extrefs
  - array_foreach
  - parse_extref_decode_options
  - index_attachment_parse_extrefs
  - index_attachment_stream_get
  source_file: /src/dovecot/src/lib-storage/index/index-attachment.c
  types:
    enum:
    - enumerators:
      - name: MAIL_ATTACHMENT_DECODE_OPTION_NONE
        value: '''-'''
      - name: MAIL_ATTACHMENT_DECODE_OPTION_CRLF
        value: '''C'''
      - name: MAIL_ATTACHMENT_DECODE_OPTION_BASE64
        value: '''B'''
      item_type: enum
      name: mail_attachment_decode_option
      pos:
        line_end: 23
        line_start: 19
        source_file: /src/dovecot/src/lib-storage/index/index-attachment.c
    preproc_defs: []
    structs:
    - fields:
      - name: pool
        type: pool_t
      - name: '*fs'
        type: struct fs
      - name: '*input'
        type: struct istream
      - name: '*cur_file'
        type: struct fs_file
      - name: (mail_attachment_extref)
        type: ARRAY_TYPE
      item_type: struct
      name: mail_save_attachment
      pos:
        line_end: 32
        line_start: 25
        source_file: /src/dovecot/src/lib-storage/index/index-attachment.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-attachment.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*path'
        type: char
      - name: start_offset
        type: uoff_t
      - name: size
        type: uoff_t
      - name: base64_blocks_per_line
        type: unsigned int
      - name: base64_have_crlf
        type: bool
      item_type: struct
      name: mail_attachment_extref
      pos:
        line_end: 23
        line_start: 9
        source_file: /src/dovecot/src/lib-storage/index/index-attachment.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-sort-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*t'
        type: struct mailbox_transaction_context
      - name: sort_program[MAX_SORT_PROGRAM_SIZE]
        type: enum mail_sort_type
      - name: '*temp_mail'
        type: struct mail
      - name: slow_mails_left
        type: unsigned int
      - name: "(*sort_list_add)(struct mail_search_sort_program *program,\n\t\t\t
          \     struct mail *mail)"
        type: void
      - name: (*sort_list_finish)(struct mail_search_sort_program *program)
        type: void
      - name: '*context'
        type: void
      - name: (uint32_t)
        type: ARRAY_TYPE
      - name: iter_idx
        type: unsigned int
      - name: failed
        type: bool
      item_type: struct
      name: mail_search_sort_program
      pos:
        line_end: 20
        line_start: 5
        source_file: /src/dovecot/src/lib-storage/index/index-sort-private.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-sync-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ctx
        type: struct mailbox_sync_context
      - name: '*sync_ctx'
        type: struct mail_index_view_sync_ctx
      - name: messages_count
        type: uint32_t
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: (seq_range)
        type: ARRAY_TYPE
      - name: '*expunges'
        type: ARRAY_TYPE
      - name: flag_update_idx
        type: unsigned int
      - name: failed
        type: bool
      item_type: struct
      name: index_mailbox_sync_context
      pos:
        line_end: 20
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/index/index-sync-private.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/index-search-private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: mail_ctx
        type: struct mail_search_context
      - name: '*view'
        type: struct mail_index_view
      - name: '*box'
        type: struct mailbox
      - name: pvt_uid
        type: uint32_t
      - name: extra_wanted_fields
        type: enum mail_fetch_field
      - name: '*extra_wanted_headers'
        type: struct mailbox_header_lookup_ctx
      - name: seq1
        type: uint32_t
      - name: '*cur_mail'
        type: struct mail
      - name: '*cur_imail'
        type: struct index_mail
      - name: '*thread_ctx'
        type: struct mail_thread_context
      - name: temp_pool
        type: pool_t
      - name: last_nonblock_timeval
        type: struct timeval
      - name: interrupt_start_time
        type: struct timeval
      - name: cost
        type: unsigned long long
      - name: failed
        type: bool
      - name: sorted
        type: bool
      - name: have_seqsets
        type: bool
      - name: have_index_args
        type: bool
      - name: have_mailbox_args
        type: bool
      - name: have_nonmatch_always
        type: bool
      item_type: struct
      name: index_search_context
      pos:
        line_end: 36
        line_start: 10
        source_file: /src/dovecot/src/lib-storage/index/index-search-private.h
    typedefs: []
    union: []
- function_names:
  - index_sort_list_init_string
  - sort_node_seq_cmp
  - index_sort_generate_seqs
  - index_sort_reget_sort_ids
  - index_sort_node_add
  - index_sort_list_add_string
  - sort_node_zero_string_cmp
  - index_sort_zeroes
  - index_sort_get_expunged_string
  - index_sort_get_string
  - index_sort_bsearch
  - index_sort_merge
  - index_sort_add_ids_range
  - index_sort_add_sort_ids
  - index_sort_write_changed_sort_ids
  - sort_node_cmp
  - index_sort_add_missing
  - index_sort_list_reset_broken
  - index_sort_list_finish_string
  source_file: /src/dovecot/src/lib-storage/index/index-sort-string.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: seq
        type: uint32_t
      - name: wanted
        type: bool
      - name: no_update
        type: bool
      - name: sort_id_changed
        type: bool
      - name: sort_id
        type: uint32_t
      item_type: struct
      name: mail_sort_node
      pos:
        line_end: 23
        line_start: 17
        source_file: /src/dovecot/src/lib-storage/index/index-sort-string.c
    - fields:
      - name: '*program'
        type: struct mail_search_sort_program
      - name: '*primary_sort_name'
        type: char
      - name: (mail_sort_node)
        type: ARRAY_TYPE
      - name: '**sort_strings'
        type: char
      - name: sort_string_pool
        type: pool_t
      - name: first_missing_sort_id_idx
        type: unsigned int
      - name: ext_id
        type: uint32_t
      - name: lowest_nonexpunged_zero
        type: uint32_t
      - name: regetting
        type: bool
      - name: have_all_wanted
        type: bool
      - name: no_writing
        type: bool
      - name: reverse
        type: bool
      - name: seqs_nonsorted
        type: bool
      - name: broken
        type: bool
      - name: failed
        type: bool
      item_type: struct
      name: sort_string_context
      pos:
        line_end: 45
        line_start: 26
        source_file: /src/dovecot/src/lib-storage/index/index-sort-string.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dovecot/src/lib-storage/index/istream-mail.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - add_base_subject
  - mail_thread_child_node_cmp
  - mail_thread_root_node_cmp
  - thread_lookup_existing
  - thread_child_node_fill
  - thread_sort_children
  - gather_base_subjects
  - thread_add_shadow_child
  - mail_thread_root_thread_merge
  - merge_subject_threads
  - sort_root_nodes
  - mail_thread_root_node_idx_cmp
  - sort_root_nodes_ref2
  - mail_thread_create_shadows
  - mail_thread_finish
  - nodes_change_uids_to_seqs
  - mail_thread_iterate_fill_root
  - mail_thread_iterate_children
  - mail_thread_iterate_init_full
  - mail_thread_iterate_next
  - mail_thread_iterate_count
  - mail_thread_iterate_deinit
  source_file: /src/dovecot/src/lib-storage/index/index-thread-finish.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: first_child_idx
        type: uint32_t
      item_type: struct
      name: mail_thread_shadow_node
      pos:
        line_end: 12
        line_start: 10
        source_file: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    - fields:
      - name: node
        type: struct mail_thread_child_node
      - name: root_idx1
        type: unsigned int
      - name: parent_root_idx1
        type: uint32_t
      - name: reply_or_forward
        type: bool
      - name: dummy
        type: bool
      - name: ignore
        type: bool
      item_type: struct
      name: mail_thread_root_node
      pos:
        line_end: 32
        line_start: 14
        source_file: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    - fields:
      - name: refcount
        type: unsigned int
      - name: '*tmp_mail'
        type: struct mail
      - name: '*cache'
        type: struct mail_thread_cache
      - name: next_new_root_idx
        type: unsigned int
      - name: use_sent_date
        type: bool
      - name: return_seqs
        type: bool
      item_type: struct
      name: thread_finish_context
      pos:
        line_end: 46
        line_start: 34
        source_file: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    - fields:
      - name: '*ctx'
        type: struct thread_finish_context
      - name: (mail_thread_child_node)
        type: ARRAY_TYPE
      - name: next_idx
        type: unsigned int
      - name: failed
        type: bool
      item_type: struct
      name: mail_thread_iterate_context
      pos:
        line_end: 54
        line_start: 48
        source_file: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    - fields:
      - name: '*ctx'
        type: struct thread_finish_context
      - name: subject_pool
        type: pool_t
      item_type: struct
      name: subject_gather_context
      pos:
        line_end: 61
        line_start: 56
        source_file: /src/dovecot/src/lib-storage/index/index-thread-finish.c
    typedefs: []
    union: []
- function_names:
  - index_pop3_uidl_set_max_uid
  - index_pop3_uidl_can_exist
  - index_pop3_uidl_update_exists
  - index_pop3_uidl_update_exists_finish
  source_file: /src/dovecot/src/lib-storage/index/index-pop3-uidl.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MAIL_THREAD_NODE_EXISTS
  - crc32_str_nonzero
  source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAIL_THREAD_INDEX_SUFFIX
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: '".thread"'
    - item_type: preproc_def
      name: THREAD_INVALID_MSGID_STR_IDX_SKIP_COUNT
      pos:
        line_end: 15
        line_start: 13
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: (4096 / sizeof(struct mail_thread_node))
    - item_type: preproc_def
      name: HDR_MESSAGE_ID
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: '"message-id"'
    - item_type: preproc_def
      name: HDR_IN_REPLY_TO
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: '"in-reply-to"'
    - item_type: preproc_def
      name: HDR_REFERENCES
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: '"references"'
    - item_type: preproc_def
      name: HDR_SUBJECT
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: '"subject"'
    - item_type: preproc_def
      name: MAIL_THREAD_NODE_REF_MSGID
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: '0'
    - item_type: preproc_def
      name: MAIL_THREAD_NODE_REF_INREPLYTO
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: '1'
    - item_type: preproc_def
      name: MAIL_THREAD_NODE_REF_REFERENCES1
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
      type_or_value: '2'
    structs:
    - fields:
      - name: uid
        type: uint32_t
      - name: parent_idx
        type: uint32_t
      - name: parent_link_refcount
        type: unsigned int
      - name: expunge_rebuilds
        type: bool
      - name: child_unref_rebuilds
        type: bool
      item_type: struct
      name: mail_thread_node
      pos:
        line_end: 41
        line_start: 25
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
    - fields:
      - name: last_uid
        type: uint32_t
      - name: first_invalid_msgid_str_idx
        type: uint32_t
      - name: next_invalid_msgid_str_idx
        type: uint32_t
      - name: '*search_result'
        type: struct mail_search_result
      - name: (mail_thread_node)
        type: ARRAY_TYPE
      item_type: struct
      name: mail_thread_cache
      pos:
        line_end: 58
        line_start: 46
        source_file: /src/dovecot/src/lib-storage/index/index-thread-private.h
    typedefs: []
    union: []
- function_names:
  - index_sync_changes_init
  - index_sync_changes_deinit
  - index_sync_changes_reset
  - index_sync_changes_delete_to
  - index_sync_changes_have_expunges
  - index_sync_changes_read
  - index_sync_changes_have
  - index_sync_changes_get_next_uid
  - index_sync_changes_apply
  source_file: /src/dovecot/src/lib-storage/index/index-sync-changes.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*index_sync_ctx'
        type: struct mail_inde